
Deprecated: strpos(): Passing null to parameter #1 ($haystack) of type string is deprecated in /var/www/2053/m/fr/php/Embeder/Embeder.php on line 419

Deprecated: strpos(): Passing null to parameter #1 ($haystack) of type string is deprecated in /var/www/2053/m/fr/php/Embeder/Embeder.php on line 419

Deprecated: strpos(): Passing null to parameter #1 ($haystack) of type string is deprecated in /var/www/2053/m/fr/php/Embeder/Embeder.php on line 421
{"title":"PHRpdGxlPkFjdXJhIG5ldWZzIDIwMjYgw6AgTW9udHLDqWFsIHwgRGVzamFyZGlucyBBY3VyYTwvdGl0bGU+","metas":"PG1ldGEgaXRlbXByb3A9Im5hbWUiIGNvbnRlbnQ9IiAgIj48bWV0YSBpdGVtcHJvcD0iZGVzY3JpcHRpb24iIGNvbnRlbnQ9IiI+","js_inline":"Ci8qPCFbQ0RBVEFbKi8KLy9kYXRhLXNjb2RlcmVmPSJQQUYtMTg2NDU2MzY4MTE4NTEyMjg1IgooZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7dmFyIFNUT1JBR0VfS0VZPSdvbmVycm9yJyxzdG9yYWdlPVtdLGVycm9yQ29sbGVjdGlvbnM9W10scGl4ZWxBZGRyZXNzPScvZnIvYWpheC9sb2dFcnJvcj93c3dpZHRoPTAnO3ZhciBzdGFydFRpbWU9bmV3IERhdGUoKTtsb2FkU3RvcmVkRXJyb3JzKCk7dmFyIHBpeGVsRnJhZ21lbnQ9dW5kZWZpbmVkO2Z1bmN0aW9uIGdldFBpeGVsRnJhZ21lbnQoKXtpZihwaXhlbEZyYWdtZW50IT09dW5kZWZpbmVkKXJldHVybiBwaXhlbEZyYWdtZW50LmNsb25lTm9kZSh0cnVlKTt2YXIgZnJhZz1kb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7dmFyIGRpdj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtmcmFnLmFwcGVuZENoaWxkKGRpdik7cGl4ZWxGcmFnbWVudD1mcmFnLmNsb25lTm9kZSh0cnVlKTtyZXR1cm4gZnJhZzt9CmZ1bmN0aW9uIGhhc1BpeGVsKGRhdGEpe3JldHVybiEhZG9jdW1lbnQucXVlcnlTZWxlY3RvcignZGl2W2RhdGEtbGluZT0iJytkYXRhLmxpbmUrJyJdW2RhdGEtbXNnPSInK2RhdGEubXNnKyciXScpO30KZnVuY3Rpb24gY3JlYXRlUGl4ZWwoZGF0YSl7aWYoaGFzUGl4ZWwoZGF0YSkpcmV0dXJuIHRydWU7dmFyIGZyYWdtZW50PWdldFBpeGVsRnJhZ21lbnQoKTt2YXIgZGl2PWZyYWdtZW50LnF1ZXJ5U2VsZWN0b3IoJ2RpdicpO3ZhciBpbnRlcm5hbD1pc0ZpbGVJbnRlcm5hbChkYXRhLmZpbGUpPzE6MDt2YXIgb2JqPXttc2c6ZGF0YS5tc2csYWdlbnQ6bmF2aWdhdG9yLnVzZXJBZ2VudCx1cmw6d2luZG93LmxvY2F0aW9uLmhyZWYsaW50ZXJuYWw6aW50ZXJuYWwsdWlkOmdldFVJRCgpLHRvcDooKG5ldyBEYXRlKCkpLmdldFRpbWUoKS1zdGFydFRpbWUuZ2V0VGltZSgpKSxtb3VzZU92ZXI6Z2V0Q3VycmVudE1vdXNlT3ZlckVsZW1lbnQoKX07dmFyIGFkZEVsZW1lbnQ9ZnVuY3Rpb24oKXtkaXYuc2V0QXR0cmlidXRlKCdkYXRhLW1zZycsZGF0YS5tc2cpO2Rpdi5zZXRBdHRyaWJ1dGUoJ2RhdGEtbGluZScsZGF0YS5saW5lKTtkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGZyYWdtZW50KTt9O2FqYXgob2JqLGZ1bmN0aW9uKHhocil7Y29uc29sZS5sb2coIklzc3VlIHNlbmRpbmcgZXJyb3IsIHN0YXR1czogIit4aHIuc3RhdHVzKyIgZXJyb3I6ICIreGhyLnJlc3BvbnNlVGV4dCk7YWRkRWxlbWVudCgpO30sZnVuY3Rpb24oeGhyKXthZGRFbGVtZW50KCk7Y29uc29sZS5sb2coeGhyKTt9KTt9CmZ1bmN0aW9uIGFqYXgoZGF0YSxlcnJvcixzdWNjZXNzKXt2YXIgeGhyPW5ldyBYTUxIdHRwUmVxdWVzdCgpO3hoci5vcGVuKCdQT1NUJyxwaXhlbEFkZHJlc3MsdHJ1ZSk7eGhyLnNldFJlcXVlc3RIZWFkZXIoJ0NvbnRlbnQtVHlwZScsJ2FwcGxpY2F0aW9uL2pzb247Y2hhcnNldD1VVEYtOCcpO3hoci5vbnJlYWR5c3RhdGVjaGFuZ2U9ZnVuY3Rpb24oKXtpZih4aHIucmVhZHlTdGF0ZT09PTQpe2lmKHhoci5zdGF0dXM9PT0yMDApe3N1Y2Nlc3MoeGhyKTt9ZWxzZXtlcnJvcih4aHIpO319fTt4aHIuc2VuZChKU09OLnN0cmluZ2lmeShkYXRhKSk7fQpmdW5jdGlvbiBnZXRDdXJyZW50TW91c2VPdmVyRWxlbWVudCgpe3ZhciBob3Zlcj1kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCc6aG92ZXInKTtpZihob3Zlcj09PXVuZGVmaW5lZHx8aG92ZXIubGVuZ3RoPT09MCl7cmV0dXJuJ25vbmUnO30KaG92ZXI9aG92ZXJbaG92ZXIubGVuZ3RoLTFdLmNsb25lTm9kZSgpO3JldHVybiBob3Zlci5vdXRlckhUTUw7fQpmdW5jdGlvbiBpc0ZpbGVJbnRlcm5hbChmaWxlKXtyZXR1cm4oZmlsZS5pbmRleE9mKHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSk+LTEpO30KZnVuY3Rpb24gZ2V0VUlEKCl7aWYodHlwZW9mIGFjdGl2ZVVzZXJQcm9maWxlTW5nIT09J3VuZGVmaW5lZCcpe3JldHVybiBhY3RpdmVVc2VyUHJvZmlsZU1uZy51aWQ7fQpyZXR1cm4nJzt9CmZ1bmN0aW9uIGxvYWRTdG9yZWRFcnJvcnMoKXtpZih0eXBlb2Ygc2Vzc2lvblN0b3JhZ2UhPT0ndW5kZWZpbmVkJyl7aWYoc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShTVE9SQUdFX0tFWSkpe3N0b3JhZ2U9SlNPTi5wYXJzZShzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKFNUT1JBR0VfS0VZKSk7fX0KcmV0dXJuIHN0b3JhZ2U7fQpmdW5jdGlvbiBoYXNTZXNzaW9uRXJyb3JTaG93bihtc2cpe2xvYWRTdG9yZWRFcnJvcnMoKTtyZXR1cm4gaGFzRXJyb3JTaG93bihtc2cpO30KZnVuY3Rpb24gaGFzRXJyb3JTaG93bihtc2cpe2lmKHN0b3JhZ2U9PT11bmRlZmluZWQpcmV0dXJuIGZhbHNlO2Zvcih2YXIgaT0wO2k8c3RvcmFnZS5sZW5ndGg7aSsrKXtpZihzdG9yYWdlW2ldPT09bXNnKXtyZXR1cm4gdHJ1ZTt9fQpyZXR1cm4gZmFsc2U7fQppZih3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUuaW5kZXhPZignY3VzdG9tLXBhZ2UtcHJldmlldy5odG1sJyk9PT0tMSl7d2luZG93Lm9uZXJyb3I9ZnVuY3Rpb24obXNnLGZpbGUsbGluZSxjb2wsZXJyb3Ipe2NvbnNvbGUubG9nKCdvbmVycm9yIHJhaXNlZCEnKTtpZighaGFzU2Vzc2lvbkVycm9yU2hvd24obXNnKSl7ZXJyb3JDb2xsZWN0aW9ucy5wdXNoKHttc2c6bXNnLGxpbmU6bGluZSxmaWxlOmZpbGV9KTtzdG9yYWdlLnB1c2gobXNnKTtpZihzZXNzaW9uU3RvcmFnZSE9PXVuZGVmaW5lZCl7c2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbShTVE9SQUdFX0tFWSxKU09OLnN0cmluZ2lmeShzdG9yYWdlKSk7fX0KaWYoZG9jdW1lbnRbJ2JvZHknXSE9PW51bGwmJmRvY3VtZW50Wydib2R5J10hPT11bmRlZmluZWQpe2FkZFBpeGVsc1RvRG9tKCk7fQppZignbGl2ZSc9PSdsaXZlJyYmJ1VTJz09J0NBJyl7Z3RhZygnZXZlbnQnLCdleGNlcHRpb24nLHsnc2VuZF90byc6J0ctWjVROFo1QzdLRicsJ2Rlc2NyaXB0aW9uJzptc2csJ2ZhdGFsJzp0cnVlfSk7fX07fQppZigvV2ViS2l0L2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSl7dmFyIF90aW1lcj1zZXRJbnRlcnZhbChmdW5jdGlvbigpe2lmKC9sb2FkZWR8Y29tcGxldGUvLnRlc3QoZG9jdW1lbnQucmVhZHlTdGF0ZSkpe2NsZWFySW50ZXJ2YWwoX3RpbWVyKTtvbmxvYWQoKTt9fSwxMCk7fQovKkBjY19vbiBAKi8KLypAaWYgKEBfd2luMzIpCgkJCQlkb2N1bWVudC53cml0ZSgiPCIrInNjcmlwdCBpZD1fX2llX29ubG9hZCBkZWZlciBzcmM9amF2YXNjcmlwdDp2b2lkKDApPjxcL3NjcmlwdD4iKTsKCQkJCXZhciBzY3JpcHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiX19pZV9vbmxvYWQiKTsKCQkJCXNjcmlwdC5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbigpIHsKCQkJCSAgaWYgKHRoaXMucmVhZHlTdGF0ZSA9PSAiY29tcGxldGUiKSB7CgkJCQkJb25sb2FkKCk7IC8vIGNhbGwgdGhlIG9ubG9hZCBoYW5kbGVyCgkJCQkgIH0KCQkJCX07CgkJCS8qQGVuZCBAKi8KZnVuY3Rpb24gYWRkUGl4ZWxzVG9Eb20oKXtmb3IodmFyIGk9MDtpPGVycm9yQ29sbGVjdGlvbnMubGVuZ3RoO2krKyl7Y29uc29sZS5sb2coJ2NyZWF0ZVBpeGVsJyxlcnJvckNvbGxlY3Rpb25zW2ldKTt9fQpmdW5jdGlvbiBvbmxvYWQoKXthZGRQaXhlbHNUb0RvbSgpO30KZnVuY3Rpb24gX2NyZWF0ZVNjcmlwdCh0ZXh0KXt2YXIgcz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTtzLmFwcGVuZCh0ZXh0KTtyZXR1cm4gczt9CndpbmRvdy5lcnJvclRlc3RzPXtzeW50YXg6ZnVuY3Rpb24oKXt2YXIgc2NyaXB0PV9jcmVhdGVTY3JpcHQoJ30nKTtkb2N1bWVudC5ib2R5LmFwcGVuZChzY3JpcHQpO30sb2ZOdWxsOmZ1bmN0aW9uKCl7dmFyIHRleHQ9J3ZhciBhID0gbnVsbDsgdmFyIGIgPSBhLndoYXQ7Jzt2YXIgc2NyaXB0PV9jcmVhdGVTY3JpcHQodGV4dCk7ZG9jdW1lbnQuYm9keS5hcHBlbmQoc2NyaXB0KTt9LGludmFsaWRBc3NpZ25tZW50OmZ1bmN0aW9uKCl7dmFyIHNjcmlwdD1fY3JlYXRlU2NyaXB0KCcxID0gZnVuYygpOycpO2RvY3VtZW50LmJvZHkuYXBwZW5kKHNjcmlwdCk7fX07d2luZG93LnRyYWNrQ29udmVyc2lvbj1mdW5jdGlvbigpe2lmKHR5cGVvZiBndGFnPT0ndW5kZWZpbmVkJylyZXR1cm4tMTtpZighd2luZG93LmQyY19hd2NJZHx8IXdpbmRvdy5kMmNfYXdjTGFiZWwpcmV0dXJuLTM7aWYoZGVwbG95bWVudFR5cGUudG9Mb3dlckNhc2UoKT09J2xpdmUnJiYnVVMnPT0nQ0EnKXtndGFnKCdldmVudCcsJ2NvbnZlcnNpb24nLHsnc2VuZF90byc6ZDJjX2F3Y0lkKycvJytkMmNfYXdjTGFiZWx9KTt9ZWxzZXtjb25zb2xlLmxvZygiZ3RhZygnZXZlbnQnLCdjb252ZXJzaW9uJywgeyAnc2VuZF90byc6ICIrZDJjX2F3Y0lkKycvJytkMmNfYXdjTGFiZWwrIiB9KTsiKTt9fX0pKCk7Ci8qXV0+Ki8KCi8qPCFbQ0RBVEFbKi8KLy9kYXRhLXNjb2RlcmVmPSJQQUYtMTg2NDU2MzY4MTE4NTEyMjg1IgooZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7dmFyIFNUT1JBR0VfS0VZPSdvbmVycm9yJyxzdG9yYWdlPVtdLGVycm9yQ29sbGVjdGlvbnM9W10scGl4ZWxBZGRyZXNzPScvZnIvYWpheC9sb2dFcnJvcj93c3dpZHRoPTAnO3ZhciBzdGFydFRpbWU9bmV3IERhdGUoKTtsb2FkU3RvcmVkRXJyb3JzKCk7dmFyIHBpeGVsRnJhZ21lbnQ9dW5kZWZpbmVkO2Z1bmN0aW9uIGdldFBpeGVsRnJhZ21lbnQoKXtpZihwaXhlbEZyYWdtZW50IT09dW5kZWZpbmVkKXJldHVybiBwaXhlbEZyYWdtZW50LmNsb25lTm9kZSh0cnVlKTt2YXIgZnJhZz1kb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7dmFyIGRpdj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtmcmFnLmFwcGVuZENoaWxkKGRpdik7cGl4ZWxGcmFnbWVudD1mcmFnLmNsb25lTm9kZSh0cnVlKTtyZXR1cm4gZnJhZzt9CmZ1bmN0aW9uIGhhc1BpeGVsKGRhdGEpe3JldHVybiEhZG9jdW1lbnQucXVlcnlTZWxlY3RvcignZGl2W2RhdGEtbGluZT0iJytkYXRhLmxpbmUrJyJdW2RhdGEtbXNnPSInK2RhdGEubXNnKyciXScpO30KZnVuY3Rpb24gY3JlYXRlUGl4ZWwoZGF0YSl7aWYoaGFzUGl4ZWwoZGF0YSkpcmV0dXJuIHRydWU7dmFyIGZyYWdtZW50PWdldFBpeGVsRnJhZ21lbnQoKTt2YXIgZGl2PWZyYWdtZW50LnF1ZXJ5U2VsZWN0b3IoJ2RpdicpO3ZhciBpbnRlcm5hbD1pc0ZpbGVJbnRlcm5hbChkYXRhLmZpbGUpPzE6MDt2YXIgb2JqPXttc2c6ZGF0YS5tc2csYWdlbnQ6bmF2aWdhdG9yLnVzZXJBZ2VudCx1cmw6d2luZG93LmxvY2F0aW9uLmhyZWYsaW50ZXJuYWw6aW50ZXJuYWwsdWlkOmdldFVJRCgpLHRvcDooKG5ldyBEYXRlKCkpLmdldFRpbWUoKS1zdGFydFRpbWUuZ2V0VGltZSgpKSxtb3VzZU92ZXI6Z2V0Q3VycmVudE1vdXNlT3ZlckVsZW1lbnQoKX07dmFyIGFkZEVsZW1lbnQ9ZnVuY3Rpb24oKXtkaXYuc2V0QXR0cmlidXRlKCdkYXRhLW1zZycsZGF0YS5tc2cpO2Rpdi5zZXRBdHRyaWJ1dGUoJ2RhdGEtbGluZScsZGF0YS5saW5lKTtkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGZyYWdtZW50KTt9O2FqYXgob2JqLGZ1bmN0aW9uKHhocil7Y29uc29sZS5sb2coIklzc3VlIHNlbmRpbmcgZXJyb3IsIHN0YXR1czogIit4aHIuc3RhdHVzKyIgZXJyb3I6ICIreGhyLnJlc3BvbnNlVGV4dCk7YWRkRWxlbWVudCgpO30sZnVuY3Rpb24oeGhyKXthZGRFbGVtZW50KCk7Y29uc29sZS5sb2coeGhyKTt9KTt9CmZ1bmN0aW9uIGFqYXgoZGF0YSxlcnJvcixzdWNjZXNzKXt2YXIgeGhyPW5ldyBYTUxIdHRwUmVxdWVzdCgpO3hoci5vcGVuKCdQT1NUJyxwaXhlbEFkZHJlc3MsdHJ1ZSk7eGhyLnNldFJlcXVlc3RIZWFkZXIoJ0NvbnRlbnQtVHlwZScsJ2FwcGxpY2F0aW9uL2pzb247Y2hhcnNldD1VVEYtOCcpO3hoci5vbnJlYWR5c3RhdGVjaGFuZ2U9ZnVuY3Rpb24oKXtpZih4aHIucmVhZHlTdGF0ZT09PTQpe2lmKHhoci5zdGF0dXM9PT0yMDApe3N1Y2Nlc3MoeGhyKTt9ZWxzZXtlcnJvcih4aHIpO319fTt4aHIuc2VuZChKU09OLnN0cmluZ2lmeShkYXRhKSk7fQpmdW5jdGlvbiBnZXRDdXJyZW50TW91c2VPdmVyRWxlbWVudCgpe3ZhciBob3Zlcj1kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCc6aG92ZXInKTtpZihob3Zlcj09PXVuZGVmaW5lZHx8aG92ZXIubGVuZ3RoPT09MCl7cmV0dXJuJ25vbmUnO30KaG92ZXI9aG92ZXJbaG92ZXIubGVuZ3RoLTFdLmNsb25lTm9kZSgpO3JldHVybiBob3Zlci5vdXRlckhUTUw7fQpmdW5jdGlvbiBpc0ZpbGVJbnRlcm5hbChmaWxlKXtyZXR1cm4oZmlsZS5pbmRleE9mKHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSk+LTEpO30KZnVuY3Rpb24gZ2V0VUlEKCl7aWYodHlwZW9mIGFjdGl2ZVVzZXJQcm9maWxlTW5nIT09J3VuZGVmaW5lZCcpe3JldHVybiBhY3RpdmVVc2VyUHJvZmlsZU1uZy51aWQ7fQpyZXR1cm4nJzt9CmZ1bmN0aW9uIGxvYWRTdG9yZWRFcnJvcnMoKXtpZih0eXBlb2Ygc2Vzc2lvblN0b3JhZ2UhPT0ndW5kZWZpbmVkJyl7aWYoc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShTVE9SQUdFX0tFWSkpe3N0b3JhZ2U9SlNPTi5wYXJzZShzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKFNUT1JBR0VfS0VZKSk7fX0KcmV0dXJuIHN0b3JhZ2U7fQpmdW5jdGlvbiBoYXNTZXNzaW9uRXJyb3JTaG93bihtc2cpe2xvYWRTdG9yZWRFcnJvcnMoKTtyZXR1cm4gaGFzRXJyb3JTaG93bihtc2cpO30KZnVuY3Rpb24gaGFzRXJyb3JTaG93bihtc2cpe2lmKHN0b3JhZ2U9PT11bmRlZmluZWQpcmV0dXJuIGZhbHNlO2Zvcih2YXIgaT0wO2k8c3RvcmFnZS5sZW5ndGg7aSsrKXtpZihzdG9yYWdlW2ldPT09bXNnKXtyZXR1cm4gdHJ1ZTt9fQpyZXR1cm4gZmFsc2U7fQppZih3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUuaW5kZXhPZignY3VzdG9tLXBhZ2UtcHJldmlldy5odG1sJyk9PT0tMSl7d2luZG93Lm9uZXJyb3I9ZnVuY3Rpb24obXNnLGZpbGUsbGluZSxjb2wsZXJyb3Ipe2NvbnNvbGUubG9nKCdvbmVycm9yIHJhaXNlZCEnKTtpZighaGFzU2Vzc2lvbkVycm9yU2hvd24obXNnKSl7ZXJyb3JDb2xsZWN0aW9ucy5wdXNoKHttc2c6bXNnLGxpbmU6bGluZSxmaWxlOmZpbGV9KTtzdG9yYWdlLnB1c2gobXNnKTtpZihzZXNzaW9uU3RvcmFnZSE9PXVuZGVmaW5lZCl7c2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbShTVE9SQUdFX0tFWSxKU09OLnN0cmluZ2lmeShzdG9yYWdlKSk7fX0KaWYoZG9jdW1lbnRbJ2JvZHknXSE9PW51bGwmJmRvY3VtZW50Wydib2R5J10hPT11bmRlZmluZWQpe2FkZFBpeGVsc1RvRG9tKCk7fQppZignbGl2ZSc9PSdsaXZlJyYmJ1VTJz09J0NBJyl7Z3RhZygnZXZlbnQnLCdleGNlcHRpb24nLHsnc2VuZF90byc6J0ctWjVROFo1QzdLRicsJ2Rlc2NyaXB0aW9uJzptc2csJ2ZhdGFsJzp0cnVlfSk7fX07fQppZigvV2ViS2l0L2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSl7dmFyIF90aW1lcj1zZXRJbnRlcnZhbChmdW5jdGlvbigpe2lmKC9sb2FkZWR8Y29tcGxldGUvLnRlc3QoZG9jdW1lbnQucmVhZHlTdGF0ZSkpe2NsZWFySW50ZXJ2YWwoX3RpbWVyKTtvbmxvYWQoKTt9fSwxMCk7fQovKkBjY19vbiBAKi8KLypAaWYgKEBfd2luMzIpCgkJCQlkb2N1bWVudC53cml0ZSgiPCIrInNjcmlwdCBpZD1fX2llX29ubG9hZCBkZWZlciBzcmM9amF2YXNjcmlwdDp2b2lkKDApPjxcL3NjcmlwdD4iKTsKCQkJCXZhciBzY3JpcHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiX19pZV9vbmxvYWQiKTsKCQkJCXNjcmlwdC5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbigpIHsKCQkJCSAgaWYgKHRoaXMucmVhZHlTdGF0ZSA9PSAiY29tcGxldGUiKSB7CgkJCQkJb25sb2FkKCk7IC8vIGNhbGwgdGhlIG9ubG9hZCBoYW5kbGVyCgkJCQkgIH0KCQkJCX07CgkJCS8qQGVuZCBAKi8KZnVuY3Rpb24gYWRkUGl4ZWxzVG9Eb20oKXtmb3IodmFyIGk9MDtpPGVycm9yQ29sbGVjdGlvbnMubGVuZ3RoO2krKyl7Y29uc29sZS5sb2coJ2NyZWF0ZVBpeGVsJyxlcnJvckNvbGxlY3Rpb25zW2ldKTt9fQpmdW5jdGlvbiBvbmxvYWQoKXthZGRQaXhlbHNUb0RvbSgpO30KZnVuY3Rpb24gX2NyZWF0ZVNjcmlwdCh0ZXh0KXt2YXIgcz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTtzLmFwcGVuZCh0ZXh0KTtyZXR1cm4gczt9CndpbmRvdy5lcnJvclRlc3RzPXtzeW50YXg6ZnVuY3Rpb24oKXt2YXIgc2NyaXB0PV9jcmVhdGVTY3JpcHQoJ30nKTtkb2N1bWVudC5ib2R5LmFwcGVuZChzY3JpcHQpO30sb2ZOdWxsOmZ1bmN0aW9uKCl7dmFyIHRleHQ9J3ZhciBhID0gbnVsbDsgdmFyIGIgPSBhLndoYXQ7Jzt2YXIgc2NyaXB0PV9jcmVhdGVTY3JpcHQodGV4dCk7ZG9jdW1lbnQuYm9keS5hcHBlbmQoc2NyaXB0KTt9LGludmFsaWRBc3NpZ25tZW50OmZ1bmN0aW9uKCl7dmFyIHNjcmlwdD1fY3JlYXRlU2NyaXB0KCcxID0gZnVuYygpOycpO2RvY3VtZW50LmJvZHkuYXBwZW5kKHNjcmlwdCk7fX07d2luZG93LnRyYWNrQ29udmVyc2lvbj1mdW5jdGlvbigpe2lmKHR5cGVvZiBndGFnPT0ndW5kZWZpbmVkJylyZXR1cm4tMTtpZighd2luZG93LmQyY19hd2NJZHx8IXdpbmRvdy5kMmNfYXdjTGFiZWwpcmV0dXJuLTM7aWYoZGVwbG95bWVudFR5cGUudG9Mb3dlckNhc2UoKT09J2xpdmUnJiYnVVMnPT0nQ0EnKXtndGFnKCdldmVudCcsJ2NvbnZlcnNpb24nLHsnc2VuZF90byc6ZDJjX2F3Y0lkKycvJytkMmNfYXdjTGFiZWx9KTt9ZWxzZXtjb25zb2xlLmxvZygiZ3RhZygnZXZlbnQnLCdjb252ZXJzaW9uJywgeyAnc2VuZF90byc6ICIrZDJjX2F3Y0lkKycvJytkMmNfYXdjTGFiZWwrIiB9KTsiKTt9fX0pKCk7Ci8qXV0+Ki8KCi8qPCFbQ0RBVEFbKi8KLy9kYXRhLXNjb2RlcmVmPSJaWlotNDE1NTY0OCIKdmFyIGN1cnJlbnRTaXRlSUQ9MjA1Mzt2YXIgZDJjX2dhQWNjb3VudHM9eyJhbGwiOltdLCJpbnRlcm5hbCI6W119O3ZhciBkMmNfYXdjSWQ9Jyc7dmFyIGQyY19hd2NMYWJlbD0nJzt2YXIgbGVnYWN5X2dhPWZhbHNlO3dpbmRvdy5kYXRhTGF5ZXI9d2luZG93LmRhdGFMYXllcnx8W107ZnVuY3Rpb24gZ3RhZygpe2RhdGFMYXllci5wdXNoKGFyZ3VtZW50cyk7fQpndGFnKCdqcycsbmV3IERhdGUoKSk7ZDJjX2dhQWNjb3VudHMuYWxsLnB1c2goJ0ctWjVROFo1QzdLRicpO2QyY19nYUFjY291bnRzLmFsbC5wdXNoKCdHLU5TMFZXMzI3RlAnKTtpZihkMmNfYXdjSWQpe2QyY19nYUFjY291bnRzLmFsbC5wdXNoKGQyY19hd2NJZCk7fQooZDJjX2dhQWNjb3VudHMuYWxsfHxbXSkubWFwKGZ1bmN0aW9uKGlkKXtndGFnKCdjb25maWcnLGlkLHsnc2VuZF9wYWdlX3ZpZXcnOmZhbHNlLCdsaW5rZXInOnsnZG9tYWlucyc6SlNPTi5wYXJzZShhdG9iKCJXMTA9IikpLCdjb29raWVfZG9tYWluJzond3d3LmRlc2phcmRpbnNhY3VyYS5jYSd9fSk7fSk7Ci8qXV0+Ki8KCi8qPCFbQ0RBVEFbKi8KLy9kYXRhLXNjb2RlcmVmPSJGTFQtMTU2NjQ1ODg5OTY0NTM0MTE1Mzg2Igp2YXIgZG9jUmVhZHlBcnI9W107dmFyIHBhZ2U9Ik5FV0NBUlMiO3ZhciBmYkNoYXRSZWY9e307dmFyIGRlcGxveW1lbnRUeXBlPSdsaXZlJzt2YXIgY3VycmVudFNpdGVJRD0yMDUzO3ZhciBjdXJyZW50RGVhbGVySUQ9NTM3NTt2YXIgZ2FUeXBlPSdndGFnJzt2YXIgYWxsQ2FtcGFpZ25zPVtbImRlc2phcmRpbnNhY3VyYS5jYSIsIkNvdXJyaWVscy1yZWxhbmNlIiwiVG91dGVzIiwzMTIyOF0sWyJkZXNqYXJkaW5zYWN1cmEuY2EiLCJDb3VycmllbHMtcmVsYW5jZSIsIk5ldWZzIiwzMTIyOV0sWyJkZXNqYXJkaW5zYWN1cmEuY2EiLCJDb3VycmllbHMtcmVsYW5jZSIsIk9jY2FzaW9uIiwzMTIzMF0sWyJkZXNqYXJkaW5zYWN1cmEuY2EiLCJTRU0iLCJBZ2VuY3kiLDMxMjM1XSxbImRlc2phcmRpbnNhY3VyYS5jYSIsIlRyYWRlciIsIlJldGFyZ2V0aW5nIiwzMTIzOF0sWyJkZXNqYXJkaW5zYWN1cmEuY2EiLCJCaW5nIiwiQkluZyIsMzEyNDFdXQp2YXIgcmV0YXJnZXRpbmdDYW1wYWlnbnM9W10KdmFyIEFJQ3VycmVudENvbmZpZ0lEPTA7dmFyIEFJSURQZXJOZXdDYXJzRnJlbmNoPW5ldyBBcnJheSgpO3ZhciBBSUlEUGVyTmV3Q2Fyc0VuZ2xpc2g9bmV3IEFycmF5KCk7ZnVuY3Rpb24gcGFyc2VRdWVyeShzdHIpe2lmKHN0ci5sZW5ndGg8MSlyZXR1cm57fQp2YXIgdmFycz17fSx2O3ZhciBxcz1zdHIuc3BsaXQoJyYnKTtmb3IodmFyIGk9MDtpPHFzLmxlbmd0aDtpKyspe3Y9ZXhwbG9kZShxc1tpXSwnPScsMSk7dmFyc1t2WzBdXT12WzFdO30KcmV0dXJuIHZhcnM7fQpmdW5jdGlvbiBkZWNvZGVTdHJpbmcoc3RyaW5nLHRpbWVzKXtpZih0aW1lcz09IiJ8fHRpbWVzPT0idW5kZWZpbmVkIil7dGltZXM9MTt9CmZvcihpPTA7aTx0aW1lcztpKyspe3N0cmluZz1kZWNvZGVVUklDb21wb25lbnQoc3RyaW5nKTt9CnJldHVybiBzdHJpbmc7fQpmdW5jdGlvbiBkZWNvZGVIVE1MKGVuY29kZWQpe2lmKHR5cGVvZiBlbmNvZGVkIT09J3N0cmluZycpcmV0dXJuIGVuY29kZWQ7dmFyIGVsPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RleHRhcmVhJyk7ZWwuaW5uZXJIVE1MPWVuY29kZWQ7cmV0dXJuIGVsLnZhbHVlO30KZnVuY3Rpb24gZXhwbG9kZShzdHIsc2VwYXJhdG9yLGxpbWl0KXtzdHI9c3RyLnNwbGl0KHNlcGFyYXRvcik7aWYoc3RyLmxlbmd0aDw9bGltaXQpcmV0dXJuIHN0cjt2YXIgcmV0PXN0ci5zcGxpY2UoMCxsaW1pdCk7cmV0LnB1c2goc3RyLmpvaW4oc2VwYXJhdG9yKSk7cmV0dXJuIHJldDt9CmZ1bmN0aW9uIGdldFVybFZhcnMoKXt2YXIgcXM9KHdpbmRvdy5sb2NhdGlvbi5zZWFyY2gpLnN1YnN0cmluZygxKTtyZXR1cm4gcGFyc2VRdWVyeShxcyk7fQpmdW5jdGlvbiBnZXRDb29raWUoY19uYW1lKXtyZXR1cm4gQ29va2llcy5nZXQoY19uYW1lKTt9CmZ1bmN0aW9uIGdldENvb2tpZShjX25hbWUpe3ZhciBjX3ZhbHVlPWRvY3VtZW50LmNvb2tpZTt2YXIgY19zdGFydD1jX3ZhbHVlLmluZGV4T2YoIiAiK2NfbmFtZSsiPSIpO2lmKGNfc3RhcnQ9PS0xKXtjX3N0YXJ0PWNfdmFsdWUuaW5kZXhPZihjX25hbWUrIj0iKTt9CmlmKGNfc3RhcnQ9PS0xKXtjX3ZhbHVlPW51bGw7fWVsc2V7Y19zdGFydD1jX3ZhbHVlLmluZGV4T2YoIj0iLGNfc3RhcnQpKzE7dmFyIGNfZW5kPWNfdmFsdWUuaW5kZXhPZigiOyIsY19zdGFydCk7aWYoY19lbmQ9PS0xKXtjX2VuZD1jX3ZhbHVlLmxlbmd0aDt9CmNfdmFsdWU9dW5lc2NhcGUoY192YWx1ZS5zdWJzdHJpbmcoY19zdGFydCxjX2VuZCkpO30KcmV0dXJuIGNfdmFsdWU7fQpmdW5jdGlvbiBzZXRDb29raWUoY19uYW1lLHZhbHVlLGV4ZGF5cyl7aXNDb29raWVBbGxvd2VkKGNfbmFtZSxmdW5jdGlvbihhbGxvd2VkKXtpZighYWxsb3dlZCl7cmV0dXJuIENvb2tpZXMuc2V0KGNfbmFtZSx2YWx1ZSxleGRheXMsJy8nKTtsb2dDb29raWUoY19uYW1lLHZhbHVlLGV4ZGF5cyk7cmV0dXJuO30KdmFyIGV4ZGF0ZT1uZXcgRGF0ZSgpO2V4ZGF0ZS5zZXREYXRlKGV4ZGF0ZS5nZXREYXRlKCkrZXhkYXlzKTt2YXIgY192YWx1ZT1lc2NhcGUodmFsdWUpKygoZXhkYXlzPT1udWxsKT8iIjoiOyBleHBpcmVzPSIrZXhkYXRlLnRvVVRDU3RyaW5nKCkpKyI7IHBhdGg9LyI7ZG9jdW1lbnQuY29va2llPWNfbmFtZSsiPSIrY192YWx1ZTt9KTt9CmZ1bmN0aW9uIGxvZ0Nvb2tpZShuYW1lLHZhbHVlLGV4cGlyZXMsdHJpZXMpe2lmKHR5cGVvZiB0cmllcz09PSd1bmRlZmluZWQnKXt0cmllcz01O30KaWYodHlwZW9mIHdpbmRvdy5Db29raWVMb2dnZXI9PT0ndW5kZWZpbmVkJyl7aWYodHJpZXMpe3NldFRpbWVvdXQoZnVuY3Rpb24oKXtsb2dDb29raWUobmFtZSx2YWx1ZSxleHBpcmVzLHRyaWVzLTEpO30sMTAwMCk7fX1lbHNle3dpbmRvdy5Db29raWVMb2dnZXIubG9nKG5hbWUsdmFsdWUsZXhwaXJlcyk7fX0KZnVuY3Rpb24gaXNDb29raWVBbGxvd2VkKG5hbWUsY2FsbGJhY2spe2NhbGxiYWNrKHRydWUpO30KZnVuY3Rpb24gZ2FQYWdlVmlldyhwcCl7KGQyY19nYUFjY291bnRzLmFsbHx8W10pLm1hcChmdW5jdGlvbihpZCl7bGV0IGQ9e3BhZ2VfcGF0aDpwcH07aWYoZGVwbG95bWVudFR5cGUhPSdsaXZlJ3x8J1VTJyE9J0NBJyl7Y29uc29sZS5sb2coJ2d0YWcnLCdjb25maWcnLGlkLGQpCnJldHVybjt9Cmd0YWcoJ2NvbmZpZycsaWQsZCk7fSk7fTtmdW5jdGlvbiBnYTRQYWdlVmlldyhwcCl7aWYoZGVwbG95bWVudFR5cGUhPSdsaXZlJ3x8J1VTJyE9J0NBJyl7cmV0dXJuO30KZ3RhZygnc2V0Jyx7J3BhZ2VfcGF0aCc6cHB9KTtndGFnKCdldmVudCcsJ3BhZ2VfdmlldycseydzZW5kX3RvJzonRy1OUzBWVzMyN0ZQJ30pO30KZnVuY3Rpb24gZ2V0R2FDbGllbnRJZCgpe3JldHVybigoKHR5cGVvZiB3aW5kb3cuZ2E9PT0nb2JqZWN0JyYmd2luZG93LmdhIT09bnVsbCl8fHR5cGVvZiB3aW5kb3cuZ2E9PT0nZnVuY3Rpb24nKSYmdHlwZW9mIGdhWydnZXRBbGwnXT09PSdmdW5jdGlvbicpP2dhLmdldEFsbCgpWzBdLmdldCgnY2xpZW50SWQnKTonJzt9CmZ1bmN0aW9uIGdhVHJhY2soYWEsYyxhLGwsdil7bGV0IGFjPVtdO2NvbnN0IGNzPWRlcGxveW1lbnRUeXBlIT0nbGl2ZSd8fCdVUychPSdDQSc7Y29uc3QgY2g9KG8sZCk9PnR5cGVvZiBvIT09J3VuZGVmaW5lZCc\/bzpkO2FhPWNoKGFhLCcnKTtjPWNoKGMsJycpO2E9Y2goYSwnJyk7bD1jaChsLCcnKTt2PWNoKHYsMSk7aWYoYWE9PSdpbnRlcm5hbCcpe2FjPWQyY19nYUFjY291bnRzLmludGVybmFsO31lbHNlIGlmKGFhLmxlbmd0aCYmL14oYnxjfGQpXC5fdHJhY2tFdmVudC8udGVzdChhYSkmJnR5cGVvZiBkMmNfZ2FBY2NvdW50c1thYVswXV0hPSd1bmRlZmluZWQnKXthYy5wdXNoKGQyY19nYUFjY291bnRzW2FhWzBdXSk7fQppZihhYy5sZW5ndGgpe2FjLm1hcCgoaWQpPT57Y29uc3QgZD17c2VuZF90bzppZCxldmVudF9hY3Rpb246YSxldmVudF9jYXRlZ29yeTpjLGV2ZW50X2xhYmVsOmwsdmFsdWU6dn07aWYoY3Mpe2NvbnNvbGUubG9nKGBHQVRSQUNLLUdUQUctU0VORC1UT1ske2lkfV06YCwnZXZlbnQnLGEsZCk7cmV0dXJuO30KZ3RhZygnZXZlbnQnLGEsZCk7fSk7fWVsc2V7Y29uc3QgZD17ZXZlbnRfYWN0aW9uOmEsZXZlbnRfY2F0ZWdvcnk6YyxldmVudF9sYWJlbDpsLHZhbHVlOnZ9O2lmKGNzKXtjb25zb2xlLmxvZygnR0FUUkFDSy1HVEFHLU5PLVNFTkQtVE86JywnZXZlbnQnLGEsZCk7fWVsc2V7Z3RhZygnZXZlbnQnLGEsZCk7fX19O2Z1bmN0aW9uIG9uQ29uZmlybVN1Ym1pdChldmVudCl7cmV0dXJuIHRydWU7fQpmdW5jdGlvbiBzZXRTZXNzaW9uQ29va2llKGNfbmFtZSx2YWx1ZSl7dmFyIGV4ZGF5cz1udWxsO3ZhciBjX3ZhbHVlPWVzY2FwZSh2YWx1ZSkrIjtleHBpcmVzPTA7cGF0aD0vIjtkb2N1bWVudC5jb29raWU9Y19uYW1lKyI9IitjX3ZhbHVlO2xvZ0Nvb2tpZShjX25hbWUpO30KZnVuY3Rpb24gaW5pdExDSShwYXJhbXMsbil7aWYobj4yMClyZXR1cm4gbjt2YXIgbj0obik\/bjowO2lmKHR5cGVvZiBMQ19BUEk9PSd1bmRlZmluZWQnfHx0eXBlb2YgTENfSW52aXRlPT0ndW5kZWZpbmVkJyl7c2V0VGltZW91dChmdW5jdGlvbigpe2luaXRMQ0kocGFyYW1zLCsrbik7fSw1MDApO3JldHVybjt9CmlmKHR5cGVvZiBMQ19BUEkhPSd1bmRlZmluZWQnJiZ0eXBlb2YgTENfSW52aXRlIT0ndW5kZWZpbmVkJyYmcGFyYW1zKXtyZXR1cm4gTENfQVBJLnNldF9jdXN0b21fdmFyaWFibGVzKHBhcmFtcyk7fX0KZnVuY3Rpb24gc2FuaXRpemVSZWZlcmVyKHJlZmVyZXIpe3JldHVybiByZWZlcmVyLnJlcGxhY2UoL1snImAoKTw+XFtcXXt9fCFdL2csJycpO30KZnVuY3Rpb24gZ2V0UmVmZXJyZXJWYXJGdW5jdGlvbihyZWZlcmVyKXtyZXR1cm4gZnVuY3Rpb24oKXtpZignJz09cmVmZXJlcilyZWZlcmVyPWRvY3VtZW50LnJlZmVycmVyO3JlZmVyZXI9c2FuaXRpemVSZWZlcmVyKHJlZmVyZXIpO3ZhciBxcyxxc2luZGV4PXJlZmVyZXIuaW5kZXhPZignPycpKzE7aWYocXNpbmRleD4wKXt2YXIgcXM9cmVmZXJlci5zbGljZShxc2luZGV4KTtyZXR1cm4gcGFyc2VRdWVyeShxcyk7fQpyZXR1cm57fX19CnZhciBnZXRSZWZlcmVyVmFycz1nZXRSZWZlcnJlclZhckZ1bmN0aW9uKCcnKTt2YXIgdXRtX2xhbmRpbmdfY29va2llPShnZXRDb29raWUoJ3V0bV9sYW5kaW5nJykhPW51bGwmJnR5cGVvZiBnZXRDb29raWUoJ3V0bV9sYW5kaW5nJykhPSd1bmRlZmluZWQnP2dldENvb2tpZSgndXRtX2xhbmRpbmcnKTonJyk7aWYodXRtX2xhbmRpbmdfY29va2llLmxlbmd0aD09MCl7c2V0Q29va2llKCd1dG1fbGFuZGluZycsd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lKTt9CmlmKGRlcGxveW1lbnRUeXBlPT0nbGl2ZScpe3ZhciBnZW5lcmF0ZUdVSUQ9ZnVuY3Rpb24oKXt2YXIgUzQ9ZnVuY3Rpb24oKXtyZXR1cm4gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKjB4MTAwMDApLnRvU3RyaW5nKDE2KTt9O3JldHVybihTNCgpK1M0KCkrIi0iKwpTNCgpKyItIisKUzQoKSsiLSIrClM0KCkrIi0iKwpTNCgpK1M0KCkrUzQoKSk7fQp2YXIgdXJsVmFycz1nZXRVcmxWYXJzKCk7dmFyIHJlZmVyZXJWYXJzPWdldFJlZmVyZXJWYXJzKCk7dmFyIHJlZmVyZXI9Jyc7dmFyIHJhd1JlZmVycmVyPXJlZmVyZXI7cmVmZXJlcj0ocmVmZXJlci5sZW5ndGg8MT8wOnJlZmVyZXIpO2lmKCcnPT1yYXdSZWZlcnJlcilyYXdSZWZlcnJlcj1kb2N1bWVudC5yZWZlcnJlcjt2YXIgaXRlbVR5cGU9J2Nhcic7aXRlbVR5cGU9KGl0ZW1UeXBlLmxlbmd0aDwxPzA6aXRlbVR5cGUpO2lmKGlzTmFOKHJlZmVyZXIpKXtyZWZlcmVyPXJlZmVyZXIucmVwbGFjZSgvXC8vZywifCIpLnJlcGxhY2UoL1w\/L2csIl9fIikucmVwbGFjZSgvXHQvZywnJykucmVwbGFjZSgvXG4vZywnJykucmVwbGFjZSgvXHIvZywnJykucmVwbGFjZUFsbCgnJTBBJywnJykucmVwbGFjZUFsbCgnJTA5JywnJykucmVwbGFjZUFsbCgnJTBCJywnJykucmVwbGFjZUFsbCgnJTAwJywnJykucmVwbGFjZUFsbCgnJTBEJywnJyk7fQp2YXIgbWFrZT0iIjtpZihtYWtlLmxlbmd0aD09MCltYWtlPSIwIjt2YXIgbW9kZWw9IiI7aWYobW9kZWwubGVuZ3RoPT0wKW1vZGVsPSIwIjt2YXIgeWVhcj0iIjtpZih5ZWFyLmxlbmd0aD09MCl5ZWFyPSIwIjt2YXIgaXNtb2JpbGU9IjEiO2lmKGlzbW9iaWxlLmxlbmd0aD09MClpc21vYmlsZT0iMCI7dmFyIG9yaWdTb3VyY2U9IiI7dmFyIG9yaWdDYW1wYWlnbj0iIjt2YXIgb3JpZ0tleXdvcmQ9IiI7aWYodXJsVmFyc1sicmVsYW5jZUlEIl0hPXVuZGVmaW5lZCkKc2V0Q29va2llKCdyZWxhbmNlSUQnLHVybFZhcnNbInJlbGFuY2VJRCJdLDE4MCk7dmFyIHNvdXJjZT0oZ2V0Q29va2llKCd1dG1fc291cmNlJykhPW51bGwmJnR5cGVvZiBnZXRDb29raWUoJ3V0bV9zb3VyY2UnKSE9J3VuZGVmaW5lZCc\/Z2V0Q29va2llKCd1dG1fc291cmNlJyk6JycpO3ZhciBzb3VyY2VDb29raWU9c291cmNlO3ZhciBzb3VyY2VVUkw9IiI7aWYoInV0bV9zb3VyY2UiaW4gdXJsVmFycyl7aWYoc291cmNlLmxlbmd0aD09MClzb3VyY2U9dXJsVmFyc1sndXRtX3NvdXJjZSddO3NvdXJjZVVSTD11cmxWYXJzWyd1dG1fc291cmNlJ107fQp2YXIgY2FtcGFpZ249KGdldENvb2tpZSgndXRtX2NhbXBhaWduJykhPW51bGwmJnR5cGVvZiBnZXRDb29raWUoJ3V0bV9jYW1wYWlnbicpIT0ndW5kZWZpbmVkJz9nZXRDb29raWUoJ3V0bV9jYW1wYWlnbicpOicnKTtpZihjYW1wYWlnbi50b0xvd2VyQ2FzZSgpPT0nZWNvbGUtZXR1ZGlhbnQnKXtjYW1wYWlnbj0nJztzZXRDb29raWUoJ3V0bV9jYW1wYWlnbicsIiIsMSk7fQp2YXIgY2FtcGFpZ25Db29raWU9Y2FtcGFpZ247dmFyIGNhbXBhaWduVVJMPSIiO2lmKCJ1dG1fY2FtcGFpZ24iaW4gdXJsVmFycyl7aWYoY2FtcGFpZ24ubGVuZ3RoPT0wKWNhbXBhaWduPXVybFZhcnNbJ3V0bV9jYW1wYWlnbiddO2NhbXBhaWduVVJMPXVybFZhcnNbJ3V0bV9jYW1wYWlnbiddO30KdmFyIG1lZGl1bT0oZ2V0Q29va2llKCd1dG1fbWVkaXVtJykhPW51bGwmJnR5cGVvZiBnZXRDb29raWUoJ3V0bV9tZWRpdW0nKSE9J3VuZGVmaW5lZCc\/Z2V0Q29va2llKCd1dG1fbWVkaXVtJyk6JycpO3ZhciBtZWRpdW1Db29raWU9bWVkaXVtO3ZhciBtZWRpdW1VUkw9IiI7aWYoInV0bV9tZWRpdW0iaW4gdXJsVmFycyl7aWYobWVkaXVtLmxlbmd0aD09MCltZWRpdW09dXJsVmFyc1sndXRtX21lZGl1bSddO21lZGl1bVVSTD11cmxWYXJzWyd1dG1fbWVkaXVtJ107fQp2YXIgY29va2llSW5DYW1wYWlnbnM9ZmFsc2U7dmFyIHVybEluQ2FtcGFpZ25zPWZhbHNlO3ZhciBoYXNHb29nbGVPcmdhbmljPWZhbHNlO2Zvcih2YXIgaT0wO2k8YWxsQ2FtcGFpZ25zLmxlbmd0aDtpKyspe2lmKGFsbENhbXBhaWduc1tpXVsxXS50b0xvd2VyQ2FzZSgpPT1zb3VyY2VVUkwudG9Mb3dlckNhc2UoKSYmYWxsQ2FtcGFpZ25zW2ldWzJdLnRvTG93ZXJDYXNlKCk9PWNhbXBhaWduVVJMLnRvTG93ZXJDYXNlKCkpdXJsSW5DYW1wYWlnbnM9dHJ1ZTtpZihhbGxDYW1wYWlnbnNbaV1bMV0udG9Mb3dlckNhc2UoKT09c291cmNlQ29va2llLnRvTG93ZXJDYXNlKCkmJmFsbENhbXBhaWduc1tpXVsyXS50b0xvd2VyQ2FzZSgpPT1jYW1wYWlnbkNvb2tpZS50b0xvd2VyQ2FzZSgpKWNvb2tpZUluQ2FtcGFpZ25zPXRydWU7aWYoYWxsQ2FtcGFpZ25zW2ldWzFdLnRvTG93ZXJDYXNlKCk9PSdnb29nbGUnJiZhbGxDYW1wYWlnbnNbaV1bMl0udG9Mb3dlckNhc2UoKT09J29yZ2FuaXF1ZScpaGFzR29vZ2xlT3JnYW5pYz10cnVlO30KaWYoc291cmNlVVJMPT0iIiYmY2FtcGFpZ25VUkw9PSIiJiZzb3VyY2U9PSIiJiZjYW1wYWlnbj09IiImJmhhc0dvb2dsZU9yZ2FuaWMpe3NvdXJjZVVSTD0iR29vZ2xlIjtjYW1wYWlnblVSTD0iT3JnYW5pcXVlIjt1cmxJbkNhbXBhaWducz10cnVlO30KaWYoY29va2llSW5DYW1wYWlnbnM9PWZhbHNlJiZ1cmxJbkNhbXBhaWducz09dHJ1ZSl7c291cmNlPXNvdXJjZVVSTDtjYW1wYWlnbj1jYW1wYWlnblVSTDtzb3VyY2VDb29raWU9c291cmNlVVJMO2NhbXBhaWduQ29va2llPWNhbXBhaWduVVJMO30KaWYoc291cmNlQ29va2llLnRvTG93ZXJDYXNlKCk9PSdzZW0nJiZzb3VyY2VVUkwudG9Mb3dlckNhc2UoKT09J2dvb2dsZScmJnVybEluQ2FtcGFpZ25zKXtzb3VyY2U9c291cmNlVVJMO2NhbXBhaWduPWNhbXBhaWduVVJMO30KdmFyIGN1cnJlbnRTaXRlSUQ9MjA1MztpZigoY3VycmVudFNpdGVJRD09NTkyfHxjdXJyZW50U2l0ZUlEPT00Mzd8fGN1cnJlbnRTaXRlSUQ9PTU3OXx8Y3VycmVudFNpdGVJRD09NTg1KSYmc291cmNlQ29va2llLnRvTG93ZXJDYXNlKCk9PSdzZW0nKXtzb3VyY2VDb29raWU9J0dvb2dsZSc7c291cmNlPSdHb29nbGUnO2NhbXBhaWduQ29va2llPSdOZXVmJztjYW1wYWlnbj0nTmV1Zic7fQppZihjYW1wYWlnbkNvb2tpZS50b0xvd2VyQ2FzZSgpPT0nb3JnYW5pYyd8fGNhbXBhaWduQ29va2llLnRvTG93ZXJDYXNlKCk9PSdvcmdhbmlxdWUnKXtzb3VyY2VDb29raWU9Jyc7Y2FtcGFpZ25Db29raWU9Jyc7bWVkaXVtQ29va2llPScnO30KaWYoc291cmNlLmxlbmd0aD4wJiYoc291cmNlQ29va2llLmxlbmd0aD09MHx8c291cmNlQ29va2llPT1zb3VyY2UpKXNldENvb2tpZSgndXRtX3NvdXJjZScsc291cmNlLDE4MCk7aWYoY2FtcGFpZ24ubGVuZ3RoPjAmJihjYW1wYWlnbkNvb2tpZS5sZW5ndGg9PTB8fGNhbXBhaWduQ29va2llPT1jYW1wYWlnbikpc2V0Q29va2llKCd1dG1fY2FtcGFpZ24nLGNhbXBhaWduLDE4MCk7aWYobWVkaXVtLmxlbmd0aD4wJiYobWVkaXVtQ29va2llLmxlbmd0aD09MHx8bWVkaXVtQ29va2llPT1tZWRpdW0pKXNldENvb2tpZSgndXRtX21lZGl1bScsbWVkaXVtLDE4MCk7dmFyIGtleXdvcmQ9KGdldENvb2tpZSgndXRtX2tleXdvcmQnKSE9bnVsbCYmdHlwZW9mIGdldENvb2tpZSgndXRtX2tleXdvcmQnKSE9J3VuZGVmaW5lZCc\/Z2V0Q29va2llKCd1dG1fa2V5d29yZCcpOicnKTtpZigia3ciaW4gdXJsVmFycyl7a2V5d29yZD1kZWNvZGVTdHJpbmcodXJsVmFyc1sna3cnXSwzKTt9CmlmKGtleXdvcmQubGVuZ3RoPjApc2V0Q29va2llKCd1dG1fa2V5d29yZCcsa2V5d29yZCwxODApO3ZhciBpc1JldGFyZ2V0aW5nPWZhbHNlO2Zvcih2YXIgaT0wO2k8cmV0YXJnZXRpbmdDYW1wYWlnbnMubGVuZ3RoO2krKyl7aWYocmV0YXJnZXRpbmdDYW1wYWlnbnNbaV1bMV0udG9Mb3dlckNhc2UoKT09c291cmNlVVJMLnRvTG93ZXJDYXNlKCkmJnJldGFyZ2V0aW5nQ2FtcGFpZ25zW2ldWzJdLnRvTG93ZXJDYXNlKCk9PWNhbXBhaWduVVJMLnRvTG93ZXJDYXNlKCkpaXNSZXRhcmdldGluZz10cnVlO30KaWYoaXNSZXRhcmdldGluZyl7dmFyIHNvdXJjZVJldGFyZ2V0aW5nPShnZXRDb29raWUoJ3V0bV9zb3VyY2VfcmV0YXJnZXRpbmcnKSE9bnVsbCYmdHlwZW9mIGdldENvb2tpZSgndXRtX3NvdXJjZV9yZXRhcmdldGluZycpIT0ndW5kZWZpbmVkJz9nZXRDb29raWUoJ3V0bV9zb3VyY2VfcmV0YXJnZXRpbmcnKTonJyk7dmFyIGNhbXBhaWduUmV0YXJnZXRpbmc9KGdldENvb2tpZSgndXRtX2NhbXBhaWduX3JldGFyZ2V0aW5nJykhPW51bGwmJnR5cGVvZiBnZXRDb29raWUoJ3V0bV9jYW1wYWlnbl9yZXRhcmdldGluZycpIT0ndW5kZWZpbmVkJz9nZXRDb29raWUoJ3V0bV9jYW1wYWlnbl9yZXRhcmdldGluZycpOicnKTtpZihzb3VyY2UhPXNvdXJjZVVSTHx8Y2FtcGFpZ24hPWNhbXBhaWduVVJMKXtpZihzb3VyY2VVUkwubGVuZ3RoPjAmJnNvdXJjZVJldGFyZ2V0aW5nLmxlbmd0aD09MClzZXRDb29raWUoJ3V0bV9zb3VyY2VfcmV0YXJnZXRpbmcnLHNvdXJjZVVSTCwxODApO2lmKGNhbXBhaWduVVJMLmxlbmd0aD4wJiZjYW1wYWlnblJldGFyZ2V0aW5nLmxlbmd0aD09MClzZXRDb29raWUoJ3V0bV9jYW1wYWlnbl9yZXRhcmdldGluZycsY2FtcGFpZ25VUkwsMTgwKTt9CnNldENvb2tpZSgndXRtX3NvdXJjZScsc291cmNlVVJMLDE4MCk7c2V0Q29va2llKCd1dG1fY2FtcGFpZ24nLGNhbXBhaWduVVJMLDE4MCk7fQp2YXIgc291cmNlUmV0YXJnZXRpbmc9KGdldENvb2tpZSgndXRtX3NvdXJjZV9yZXRhcmdldGluZycpIT1udWxsJiZ0eXBlb2YgZ2V0Q29va2llKCd1dG1fc291cmNlX3JldGFyZ2V0aW5nJykhPSd1bmRlZmluZWQnP2dldENvb2tpZSgndXRtX3NvdXJjZV9yZXRhcmdldGluZycpOicnKTt2YXIgY2FtcGFpZ25SZXRhcmdldGluZz0oZ2V0Q29va2llKCd1dG1fY2FtcGFpZ25fcmV0YXJnZXRpbmcnKSE9bnVsbCYmdHlwZW9mIGdldENvb2tpZSgndXRtX2NhbXBhaWduX3JldGFyZ2V0aW5nJykhPSd1bmRlZmluZWQnP2dldENvb2tpZSgndXRtX2NhbXBhaWduX3JldGFyZ2V0aW5nJyk6JycpO2lmKHNvdXJjZVJldGFyZ2V0aW5nLmxlbmd0aD4wKXNldENvb2tpZSgndXRtX3NvdXJjZV9yZXRhcmdldGluZycsc291cmNlUmV0YXJnZXRpbmcsMTgwKTtpZihjYW1wYWlnblJldGFyZ2V0aW5nLmxlbmd0aD4wKXNldENvb2tpZSgndXRtX2NhbXBhaWduX3JldGFyZ2V0aW5nJyxjYW1wYWlnblJldGFyZ2V0aW5nLDE4MCk7aWYoIXNvdXJjZSl7aWYocmF3UmVmZXJyZXIhPScnKXt2YXIgc2VsZkhvc3Q9KGRvY3VtZW50LmxvY2F0aW9uLmhyZWYpLm1hdGNoKC9eW0Etel0rOlwvXC8oW15cL10rKVwvPy4qLyk7aWYoc2VsZkhvc3Qpe3NlbGZIb3N0PXNlbGZIb3N0WzFdfQp2YXIgaG9zdD0ocmF3UmVmZXJyZXIudG9TdHJpbmcoKSkubWF0Y2goL15bQS16XSs6XC9cLyhbXlwvXSspXC8\/LiovKTtpZihob3N0KXtob3N0PWhvc3RbMV19ZWxzZXtob3N0PXNlbGZIb3N0O30KaWYoaG9zdCE9c2VsZkhvc3Qpe2hvc3Q9aG9zdC5zcGxpdCgnLicpO2lmKGhvc3QubGVuZ3RoPjIpe3NvdXJjZT1ob3N0WzFdO30KaWYoaG9zdC5sZW5ndGg9PTIpe3NvdXJjZT1ob3N0WzBdO30KaWYoc291cmNlKXNldENvb2tpZSgndXRtX3NvdXJjZScsc291cmNlLDE4MCk7aWYoIWNhbXBhaWduKXtjYW1wYWlnbj0nb3JnYW5pYyc7c2V0Q29va2llKCd1dG1fY2FtcGFpZ24nLGNhbXBhaWduLDE4MCk7fX19fQppZihzb3VyY2UubGVuZ3RoPT0wKXNvdXJjZT0iMCI7aWYoY2FtcGFpZ24ubGVuZ3RoPT0wKWNhbXBhaWduPSIwIjtpZihzb3VyY2VSZXRhcmdldGluZy5sZW5ndGg9PTApc291cmNlUmV0YXJnZXRpbmc9IjAiO2lmKGNhbXBhaWduUmV0YXJnZXRpbmcubGVuZ3RoPT0wKWNhbXBhaWduUmV0YXJnZXRpbmc9IjAiO2lmKHVybFZhcnNbIkRpc3BsYXlTb3VyY2UiXSE9dW5kZWZpbmVkKXtpZihnZXRDb29raWUoJ0Rpc3BsYXlTb3VyY2UnKT09bnVsbHx8dHlwZW9mIGdldENvb2tpZSgnRGlzcGxheVNvdXJjZScpPT0ndW5kZWZpbmVkJyl7aWYodXJsVmFyc1sidXRtX2NhbXBhaWduIl0hPXVuZGVmaW5lZCYmKGdldENvb2tpZSgnRGlzcGxheVNvdXJjZVVUTUNhbXBhaWduJyk9PW51bGx8fHR5cGVvZiBnZXRDb29raWUoJ0Rpc3BsYXlTb3VyY2VVVE1DYW1wYWlnbicpPT0ndW5kZWZpbmVkJykpc2V0Q29va2llKCdEaXNwbGF5U291cmNlVVRNQ2FtcGFpZ24nLHVybFZhcnNbInV0bV9jYW1wYWlnbiJdLDE4MCk7aWYodXJsVmFyc1sidXRtX3NvdXJjZSJdIT11bmRlZmluZWQmJihnZXRDb29raWUoJ0Rpc3BsYXlTb3VyY2VVVE1Tb3VyY2UnKT09bnVsbHx8dHlwZW9mIGdldENvb2tpZSgnRGlzcGxheVNvdXJjZVVUTVNvdXJjZScpPT0ndW5kZWZpbmVkJykpc2V0Q29va2llKCdEaXNwbGF5U291cmNlVVRNU291cmNlJyx1cmxWYXJzWyJ1dG1fc291cmNlIl0sMTgwKTt9CnNldENvb2tpZSgnRGlzcGxheVNvdXJjZScsdXJsVmFyc1siRGlzcGxheVNvdXJjZSJdLDE4MCk7fQp2YXIgc2V0R2NsaWRDb29raWU9dHJ1ZTtpZih1cmxWYXJzWyJ1dG1fc291cmNlIl0hPXVuZGVmaW5lZCl7aWYodXJsVmFyc1sidXRtX3NvdXJjZSJdPT0nU0VNJ3x8dXJsVmFyc1sidXRtX3NvdXJjZSJdPT0nVHJhZGVyJ3x8dXJsVmFyc1sidXRtX3NvdXJjZSJdPT0nR29vZ2xlLW5lcmRtYXJrZXRpbmcnKXtzZXRHY2xpZENvb2tpZT1mYWxzZTt9fQppZih1cmxWYXJzWyJnY2xpZCJdIT11bmRlZmluZWQmJnNldEdjbGlkQ29va2llKXtzZXRDb29raWUoJ2djbGlkJyx1cmxWYXJzWyJnY2xpZCJdLDE4MCk7d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLGZ1bmN0aW9uKGV2ZW50KXtpZigndW5kZWZpbmVkJyE9dHlwZW9mIGFjdGl2ZVVzZXJQcm9maWxlTW5nKXtzYXZlR0NMSUQ9ZnVuY3Rpb24oKXtpZigndW5kZWZpbmVkJz09dHlwZW9mIHdpbmRvdy5qUXVlcnkpe3JldHVybjt9CiQucG9zdCgiaHR0cHM6Ly9yZXN0LmQyY21lZGlhLmNhL2djbGlkLnJlc3QuYXBpLnBocCIse3Nlc3Npb25pZDphY3RpdmVVc2VyUHJvZmlsZU1uZy5zZXNzaW9uaWQsZ2NsaWQ6dXJsVmFyc1snZ2NsaWQnXX0pO307dHJ5e2FjdGl2ZVVzZXJQcm9maWxlTW5nLnJlZ2lzdGVyU2Vzc2lvbkNhbGxiYWNrKHNhdmVHQ0xJRCk7fWNhdGNoKGVycm9yKXtjb25zb2xlLmxvZyhlcnJvcik7fX19KTt9CndpbmRvdy5hY3RpdmVQYWdlPXBhZ2U7dmFyIHVpZD0oZ2V0Q29va2llKCd1aWQnKSE9bnVsbCYmdHlwZW9mIGdldENvb2tpZSgndWlkJykhPSd1bmRlZmluZWQnP2dldENvb2tpZSgndWlkJyk6Z2VuZXJhdGVHVUlEKCkpO3NldENvb2tpZSgndWlkJyx1aWQsMTgwKTt2YXIgZGVhbGVyaWQ9NTM3NTt2YXIgc2l0ZWlkPTIwNTM7d2luZG93LmFjdGl2ZVNpdGVJRD1zaXRlaWQ7d2luZG93LmFjdGl2ZURlYWxlcklEPWRlYWxlcmlkO3ZhciBjYXJpZD0nJztpZihjYXJpZC5sZW5ndGg9PTApY2FyaWQ9IjAiO2Z1bmN0aW9uIHRhZ0J1aWxkKGludGVybmFscyl7cmV0dXJuJzwnKyhpbnRlcm5hbHMuam9pbignICcpKSsnIC8+Jzt9CnZhciBjYWNoZUNsZWFyZXI9TWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKjk5OTk5OTkpO3ZhciBhZGRUa0ltZz1mdW5jdGlvbihzcmMpe3N3aXRjaChkb2N1bWVudC5yZWFkeVN0YXRlKXtjYXNlImxvYWRpbmciOmRvY3VtZW50LndyaXRlKHRhZ0J1aWxkKFsnaW1nJywnc3R5bGU9IndpZHRoOjFweDtoZWlnaHQ6MXB4O3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MHB4O3RvcDowcHg7IicsJ3NyYz0iJytzcmMrJyInLCdhbHQ9IiInXSkpO2JyZWFrO2Nhc2UiaW50ZXJhY3RpdmUiOmNhc2UiY29tcGxldGUiOmRlZmF1bHQ6dHJ5e3ZhciBpbWc9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW1nIik7aW1nLnN0eWxlLmNzc1RleHQ9J3dpZHRoOjFweDtoZWlnaHQ6MXB4O3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MHB4O3RvcDowcHg7JztpbWcuc2V0QXR0cmlidXRlKCdzcmMnLHNyYyk7aW1nLnNldEF0dHJpYnV0ZSgnYWx0JywnVHJhY2tpbmcgcGl4ZWwnKTtkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGltZyk7fWNhdGNoKGV4KXtpZihjb25zb2xlJiZjb25zb2xlLmxvZyljb25zb2xlLmxvZygiRXJyb3IgdGt3aWRnZXQ6ICIrZXgubWVzc2FnZSk7fQpicmVhazt9fTtjYW1wYWlnbj1jYW1wYWlnbi5yZXBsYWNlKC9cdC9nLCcnKS5yZXBsYWNlKC9cbi9nLCcnKS5yZXBsYWNlKC9cci9nLCcnKS5yZXBsYWNlKCclMEEnLCcnKS5yZXBsYWNlKCclMDknLCcnKS5yZXBsYWNlKCclMEInLCcnKS5yZXBsYWNlKCclMDAnLCcnKS5yZXBsYWNlKCclMEQnLCcnKTtzb3VyY2U9c291cmNlLnJlcGxhY2UoL1x0L2csJycpLnJlcGxhY2UoL1xuL2csJycpLnJlcGxhY2UoL1xyL2csJycpLnJlcGxhY2UoJyUwQScsJycpLnJlcGxhY2UoJyUwOScsJycpLnJlcGxhY2UoJyUwQicsJycpLnJlcGxhY2UoJyUwMCcsJycpLnJlcGxhY2UoJyUwRCcsJycpO3ZhciB0a3NyYz0nL3Byb3h5X3NhdWIvd2Vic2l0ZUhpdHMvJysKZGVhbGVyaWQrIi8iK3NpdGVpZCsiLyIrY2FyaWQrIi8iK2VzY2FwZSh1aWQpKyIvIitwYWdlKyIvIitlc2NhcGUoc291cmNlKSsiLyIrZXNjYXBlKGNhbXBhaWduKSsiLyIrZXNjYXBlKG1ha2UpKyIvIitlc2NhcGUobW9kZWwpKyIvIit5ZWFyKyIvIisKaXNtb2JpbGUrIi8iK2VuY29kZVVSSUNvbXBvbmVudChyZWZlcmVyKSsiLyIrZXNjYXBlKGl0ZW1UeXBlKSsiLyIrZXNjYXBlKHNvdXJjZVJldGFyZ2V0aW5nKSsiLyIrZXNjYXBlKGNhbXBhaWduUmV0YXJnZXRpbmcpKyIvIitjYWNoZUNsZWFyZXIrJy5naWYnO2lmKHR5cGVvZiBhY3RpdmVVc2VyUHJvZmlsZU1uZz09J3VuZGVmaW5lZCd8fCFhY3RpdmVVc2VyUHJvZmlsZU1uZy5faXNCb3QoKSlhZGRUa0ltZyh0a3NyYyk7dmFyIGtleXdvcmRzPSIiO2lmKCJwImluIHJlZmVyZXJWYXJzJiZyZWZlcmVyLmluZGV4T2YoInlhaG9vIik+LTEpe2tleXdvcmRzPXJlZmVyZXJWYXJzWydwJ107fQppZigicSJpbiByZWZlcmVyVmFycyYmKHJlZmVyZXIuaW5kZXhPZigiZ29vZ2xlIik+LTF8fHJlZmVyZXIuaW5kZXhPZigiYmluZyIpPi0xKSl7a2V5d29yZHM9cmVmZXJlclZhcnNbJ3EnXTt9CnZhciB1TGFuZz0oZ2V0Q29va2llKCdsYW5nJyk9PSdlbicpPydlbic6J2ZyJzt3aW5kb3cuZmJDaGF0UmVmPXtyOidzaXRlJyxjOmNhbXBhaWduLHM6c291cmNlfTt2YXIgY3VzdG9tX3ZhcmlhYmxlcz1be25hbWU6J2xhbmd1YWdlJyx2YWx1ZTp1TGFuZ30se25hbWU6J3V0bV9jYW1wYWlnbicsdmFsdWU6Y2FtcGFpZ259LHtuYW1lOid1dG1fc291cmNlJyx2YWx1ZTpzb3VyY2V9LHtuYW1lOidwYWdlJyx2YWx1ZTpwYWdlfSx7bmFtZTondWlkJyx2YWx1ZTp1aWR9LHtuYW1lOidjYXJpZCcsdmFsdWU6Y2FyaWR9LHtuYW1lOidtYWtlJyx2YWx1ZTptYWtlfSx7bmFtZTonbW9kZWwnLHZhbHVlOm1vZGVsfSx7bmFtZToneWVhcicsdmFsdWU6eWVhcn0se25hbWU6J2lzTW9iaWxlU2l0ZScsdmFsdWU6aXNtb2JpbGV9XTt3aW5kb3cuY1ZhcmlhYmxlcz1jdXN0b21fdmFyaWFibGVzO3dpbmRvdy5yZWxhbmNlSGFuZGxlckZuYz1mdW5jdGlvbigpe3ZhciByZWxhbmNlSUQ9KGdldENvb2tpZSgncmVsYW5jZUlEJykhPW51bGwmJnR5cGVvZiBnZXRDb29raWUoJ3JlbGFuY2VJRCcpIT0ndW5kZWZpbmVkJz9nZXRDb29raWUoJ3JlbGFuY2VJRCcpOjApO2lmKHR5cGVvZiBhY3RpdmVVc2VyUHJvZmlsZU1uZyE9J3VuZGVmaW5lZCcmJnR5cGVvZiBhY3RpdmVVc2VyUHJvZmlsZU1uZy5sb2dQYWdlVmlld0V2ZW50IT0ndW5kZWZpbmVkJyl7YWN0aXZlVXNlclByb2ZpbGVNbmcubG9nUGFnZVZpZXdFdmVudChyZWxhbmNlSUQsJ3JlbGFuY2VJRCcpO2lmKHVybFZhcnNbIkRpc3BsYXlTb3VyY2UiXSE9dW5kZWZpbmVkKXthY3RpdmVVc2VyUHJvZmlsZU1uZy5sb2dQYWdlVmlld0V2ZW50KHVybFZhcnNbIkRpc3BsYXlTb3VyY2UiXSwnZGlzcGxheVNvdXJjZScpO2lmKHVybFZhcnNbInV0bV9jYW1wYWlnbiJdIT11bmRlZmluZWQpYWN0aXZlVXNlclByb2ZpbGVNbmcubG9nUGFnZVZpZXdFdmVudCh1cmxWYXJzWyJ1dG1fY2FtcGFpZ24iXSwndXRtX2NhbXBhaWduJyk7aWYodXJsVmFyc1sidXRtX3NvdXJjZSJdIT11bmRlZmluZWQpYWN0aXZlVXNlclByb2ZpbGVNbmcubG9nUGFnZVZpZXdFdmVudCh1cmxWYXJzWyJ1dG1fc291cmNlIl0sJ3V0bV9zb3VyY2UnKTt9fQplbHNlCnNldFRpbWVvdXQod2luZG93LnJlbGFuY2VIYW5kbGVyRm5jLDEwMDApO307dmFyIGluaXRGPWZ1bmN0aW9uKCl7aW5pdExDSShjdXN0b21fdmFyaWFibGVzKTt3aW5kb3cucmVsYW5jZUhhbmRsZXJGbmMoKTt9O2lmKHdpbmRvdy5hdHRhY2hFdmVudCl3aW5kb3cuYXR0YWNoRXZlbnQoJ29ubG9hZCcsaW5pdEYpO2Vsc2Ugd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLGluaXRGLGZhbHNlKTt2YXIgYWljdXJyZW50cGFnZT0nbmV3Y2Fycy5odG1sJztpZihBSUN1cnJlbnRDb25maWdJRD4wJiZ0eXBlb2YgYWN0aXZlVXNlclByb2ZpbGVNbmchPSd1bmRlZmluZWQnKXthY3RpdmVVc2VyUHJvZmlsZU1uZy5sb2dQYWdlVmlld0V2ZW50KEFJQ3VycmVudENvbmZpZ0lELCdBSUNvbmZpZycpO30KaWYoQUlJRFBlck5ld0NhcnNGcmVuY2gubGVuZ3RoPjAmJmFpY3VycmVudHBhZ2U9PSduZXdjYXJkZXRhaWwuaHRtbCcmJmdldENvb2tpZSgnbGFzdG5ld3ZlaGljbGUnKSE9bnVsbCl7dmFyIGxhc3RuZXd2ZWhpY2xlPWdldENvb2tpZSgnbGFzdG5ld3ZlaGljbGUnKTt2YXIgbGFzdG5ld3ZlaGljbGVzcGxpdD1sYXN0bmV3dmVoaWNsZS5zcGxpdCgnfHx8Jyk7dmFyIGFpbmV3Y2FyaWQ9MDtpZih0eXBlb2YgQUlJRFBlck5ld0NhcnNGcmVuY2hbbGFzdG5ld3ZlaGljbGVzcGxpdFswXStsYXN0bmV3dmVoaWNsZXNwbGl0WzFdK2xhc3RuZXd2ZWhpY2xlc3BsaXRbMl1dIT09J3VuZGVmaW5lZCcpYWluZXdjYXJpZD1BSUlEUGVyTmV3Q2Fyc0ZyZW5jaFtsYXN0bmV3dmVoaWNsZXNwbGl0WzBdK2xhc3RuZXd2ZWhpY2xlc3BsaXRbMV0rbGFzdG5ld3ZlaGljbGVzcGxpdFsyXV07aWYodHlwZW9mIEFJSURQZXJOZXdDYXJzRW5nbGlzaFtsYXN0bmV3dmVoaWNsZXNwbGl0WzBdK2xhc3RuZXd2ZWhpY2xlc3BsaXRbMV0rbGFzdG5ld3ZlaGljbGVzcGxpdFsyXV0hPT0ndW5kZWZpbmVkJylhaW5ld2NhcmlkPUFJSURQZXJOZXdDYXJzRW5nbGlzaFtsYXN0bmV3dmVoaWNsZXNwbGl0WzBdK2xhc3RuZXd2ZWhpY2xlc3BsaXRbMV0rbGFzdG5ld3ZlaGljbGVzcGxpdFsyXV07aWYoYWluZXdjYXJpZD4wJiZ0eXBlb2YgYWN0aXZlVXNlclByb2ZpbGVNbmchPSd1bmRlZmluZWQnKXthY3RpdmVVc2VyUHJvZmlsZU1uZy5sb2dQYWdlVmlld0V2ZW50KGFpbmV3Y2FyaWQsJ0FJQ29uZmlnTmV3Q2FyJyk7fX19CnNldFRpbWVvdXQoZnVuY3Rpb24oKXt2YXIgZm49ZnVuY3Rpb24oKXtpZih0eXBlb2YgalF1ZXJ5IT0ndW5kZWZpbmVkJyl7cmV0dXJuIGpRdWVyeS5yZWFkeSgpO30Kc2V0VGltZW91dChmbiwxMDApO30KZm4oKTt9LDEwMDApOwovKl1dPiovCgooYXN5bmMgKCkgPT4gewoJCgl0cnkgewoJCXZhciBsYW5nID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignYm9keScpLmNsYXNzTmFtZS5tYXRjaCgnRlJFTkNIJykgPyAnZnInIDogJ2VuJzsKCQkKCQl2YXIgdXJsID0gbmV3IFVSTChgL2pzL2pzb24vbWVudVRpdGxlc18ke2xhbmd9Lmpzb25gLCB3aW5kb3cubG9jYXRpb24ub3JpZ2luKS5ocmVmOwoJCXJlc3BvbnNlID0gYXdhaXQgZmV0Y2godXJsKTsKCQl0ZXh0ID0gYXdhaXQgcmVzcG9uc2UudGV4dCgpOwoJCQoJCWlmICh0ZXh0KSB7CgkJCWRhdGEgPSBKU09OLnBhcnNlKHRleHQpOwoJCQl2YXIgbXVsdGkgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdVU0VEJyk7CgkJCQoJCQlpZiAobXVsdGkubGVuZ3RoKSB7CgkJCQlmb3IodmFyIGkgPSAwOyBpIDwgbXVsdGkubGVuZ3RoOyBpKyspIHsKCQkJCQltdWx0aVtpXS5xdWVyeVNlbGVjdG9yKCcuc2hyaW5rLWdyb3cnKS50ZXh0Q29udGVudCA9IGRhdGFbJ1VTRUQnXS50ZXh0OwoJCQkJfQoJCQl9CgkJCWVsc2UgewoJCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI01haW5NZW51X1VTRUQgPiBhJykudGV4dENvbnRlbnQgPSBkYXRhWydVU0VEJ10udGV4dDsKCQkJCXdpbmRvdy5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgncmVzaXplJykpOwoJCQl9CgkJfQoJCQoJfSBjYXRjaCAoZSl7CgkJY29uc29sZS5sb2coZSk7Cgl9CgkKfSkoKTsKCgkvKjwhW0NEQVRBWyovCgl2YXIgcGFyYW1zID0gZ2V0VXJsVmFycygpOwoJLy9zZXQgcGFyYW0gdmFsdWUgaW50byBzZXNzaW9uIHN0b3JhZ2UKCWlmICh0eXBlb2Ygc2Vzc2lvblN0b3JhZ2UgIT09ICd1bmRlZmluZWQnKSB7CgoJCWlmKHBhcmFtcy5oYXNPd25Qcm9wZXJ0eSgnaCcpKXsKCQkJc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSgnaCcscGFyYW1zLmgpOwoJCX0KCgkJaWYocGFyYW1zLmhhc093blByb3BlcnR5KCdtJykpewoJCQlzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKCdtJyxwYXJhbXMubSk7CgkJfQoKCQl2YXIgaCA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ2gnKTsKCQl2YXIgbSA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ20nKTsKCgkJLy9yZWFkIHNlc3Npb24gYW5kIHJlbW92ZSBoZWFkZXIgJiBtZW51IGlmIG9wdGlvbnMgaGF2ZSBiZWVuIHNldAoJCWlmKGggPT09ICdubycpewoJCQkvL3N0dWZmIHRvIHJlbW92ZSB0aGF0IGlzIGNvbnNpZGVyZWQgcGFydCBvZiB0aGUgaGVhZGVyCgkJCXZhciBoZWFkZXJzID0gWwoJCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmhlYWRlci1pbmZvJyksCgkJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuaGVhZGVyLWZvb3RlcicpLAoJCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmxhbmd1YWdlQmFyJyksCgkJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuaGVhZGVyLWxvZ28nKSwKCQkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5tb2JpbGUtaGVhZGVyID4gKjpub3QoLmJ1cmdlci1tZW51LWNvbnRhaW5lciknKQoJCQldOwoKCQkJZm9yKHZhciBlbGVtIG9mIGhlYWRlcnMpewoJCQkJLy9yZW1vdmUgbm9kZSBsaXN0IHF1ZXJpZXMKCQkJCWlmIChOb2RlTGlzdC5wcm90b3R5cGUuaXNQcm90b3R5cGVPZihlbGVtKSkgewoJCQkJCWZvcih2YXIgX2VsZW0gb2YgZWxlbSl7CgkJCQkJCWlmIChfZWxlbSAhPT0gbnVsbCkgewoJCQkJCQkJX2VsZW0ucmVtb3ZlKCk7CgkJCQkJCX0KCQkJCQl9CgkJCQl9CgkJCQllbHNlIGlmIChlbGVtICE9PSBudWxsKXsKCQkJCQllbGVtLnJlbW92ZSgpOwoJCQkJfQoJCQl9CgkJfQoKCQkvL21lbnUKCQlpZihtID09PSAnbm8nKXsKCQkJdmFyIG1lbnVzID0gWwoJCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmhlYWRlci1tZW51JyksCgkJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuYnVyZ2VyLW1lbnUtY29udGFpbmVyJyksCgkJCV07CgkJCWZvcih2YXIgZWxlbSBvZiBtZW51cyl7CgkJCQlpZihlbGVtICE9PSBudWxsKXsKCQkJCQllbGVtLnJlbW92ZSgpOwoJCQkJfQoJCQl9CgkJfQoKCQkvL3NpbmNlIG5vIGhlYWRlciBvciBtZW51LCByZW1vdmUgZXZlcnl0aGluZwoJCWlmIChtID09PSAnbm8nICYmIGggPT09ICdubycpIHsKCQkJdmFyIGhlYWRlciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5tb2JpbGUtaGVhZGVyJyk7CgkJCWlmKGhlYWRlciAhPT0gbnVsbCl7CgkJCQloZWFkZXIucmVtb3ZlKCk7CgkJCX0KCQl9CgoJfQoJLypdXT4qLwo=","js_rl":"CgkJCQl3aW5kb3cuZ1Rlc3RTcGVlZENvbm49RGF0ZS5ub3coKTsKCQkJCXdpbmRvdy5nUmVzb3VyY2VMb2FkZXJBbmRKcXVlcnlJc1JlYWR5PWZhbHNlOwoJCQkJd2luZG93LmdTa2VsZXRvbklzUmVtb3ZlZD1mYWxzZTsKCQkJCXdpbmRvdy5nRGVsYXllZExvYWRTY3JpcHQ9d2luZG93LmdEZWxheWVkTG9hZFNjcmlwdHx8ZnVuY3Rpb24oYSxkKXtzZXRUaW1lb3V0KCgpPT57dmFyIGU9ITA7Y29uc29sZS5sb2coIkdERUxBWUVETE9BRFNDUklQVDoiK2EsZCk7dmFyIG49ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7aWYoIm9iamVjdCI9PXR5cGVvZiBkJiZudWxsIT09ZClmb3IodmFyIG8gaW4gZClkLmhhc093blByb3BlcnR5KG8pJiZudWxsIT09ZFtvXSYmKC0xIT09WyJkZWZlciIsImFzeW5jIl0uaW5kZXhPZihvKSYmKGU9ITEpLG5bb109ZFtvXSk7bi5zcmM9YSxlJiYobi5hc3luYz0hMCksZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChuKX0pfTsKCQkJCgkJCQkvKjwhW0NEQVRBWyovCgkJCQl2YXIgYm94QmxvY2tzID0geyJjYXIiOnsiZmJ4X2Nhcl8xIjp7InZpc2libGUiOnRydWUsImlkIjoxLCJwb3NpdGlvbiI6MSwiZHJpdmV0cmFpbiI6MSwiZnVlbCI6MSwicHJpY2UiOjQ1Mjg4LCJjb25zbyI6Ni4yOTk5OTk5OTk5OTk5OTk4MjIzNjQzMTYwNTk5NzQ5NTM1MzIyMTg5MzMxMDU0Njg3NSwiY2FyQ2F0ZWdvcnkiOiJjYXIiLCJjYXJNYWtlIjoiYWN1cmEiLCJjYXJNb2RlbCI6IkludGVncmEiLCJzcGVjaWFsT3JkZXIiOjB9fSwic3V2Ijp7ImZieF9zdXZfMSI6eyJ2aXNpYmxlIjp0cnVlLCJpZCI6MSwicG9zaXRpb24iOjEsImRyaXZldHJhaW4iOjEsImZ1ZWwiOjEsInByaWNlIjo1MDE5MywiY29uc28iOjcuNzAwMDAwMDAwMDAwMDAwMTc3NjM1NjgzOTQwMDI1MDQ2NDY3NzgxMDY2ODk0NTMxMjUsImNhckNhdGVnb3J5Ijoic3V2IiwiY2FyTWFrZSI6ImFjdXJhIiwiY2FyTW9kZWwiOiJBRFgiLCJzcGVjaWFsT3JkZXIiOjB9LCJmYnhfc3V2XzIiOnsidmlzaWJsZSI6dHJ1ZSwiaWQiOjIsInBvc2l0aW9uIjoyLCJkcml2ZXRyYWluIjoxLCJmdWVsIjoxLCJwcmljZSI6NTg4MTMsImNvbnNvIjo4LjU5OTk5OTk5OTk5OTk5OTY0NDcyODYzMjExOTk0OTkwNzA2NDQzNzg2NjIxMDkzNzUsImNhckNhdGVnb3J5Ijoic3V2IiwiY2FyTWFrZSI6ImFjdXJhIiwiY2FyTW9kZWwiOiJSRFgiLCJzcGVjaWFsT3JkZXIiOjB9LCJmYnhfc3V2XzMiOnsidmlzaWJsZSI6dHJ1ZSwiaWQiOjMsInBvc2l0aW9uIjozLCJkcml2ZXRyYWluIjoxLCJmdWVsIjoxLCJwcmljZSI6NzI1OTMsImNvbnNvIjo5LjQwMDAwMDAwMDAwMDAwMDM1NTI3MTM2Nzg4MDA1MDA5MjkzNTU2MjEzMzc4OTA2MjUsImNhckNhdGVnb3J5Ijoic3V2IiwiY2FyTWFrZSI6ImFjdXJhIiwiY2FyTW9kZWwiOiJNRFgiLCJzcGVjaWFsT3JkZXIiOjB9fX07CgkJCQkvKi0tKi8KCQkJCXZhciBib3hQb3NpdGlvbnMgPSB7ImZieF9jYXJfMSI6MSwiZmJ4X3N1dl8xIjoxLCJmYnhfc3V2XzIiOjIsImZieF9zdXZfMyI6M307CgkJCQkvKiogRmlsdGVyIEpTIGluIG5ld2NhcnMuanMgKiovCgkJCQkvKl1dPiovCgkJCQoKCQkJCXZhciBMZWFkQ29uZmlncyA9ICh0eXBlb2YgTGVhZENvbmZpZ3MgIT0gJ3VuZGVmaW5lZCcpID8gTGVhZENvbmZpZ3MgOiB7fTsKCgkJCQlsZXQgYWN0aXZlTGFuZyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhY3RpdmVzaXRlbGFuZ3VhZ2UnKSA\/IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhY3RpdmVzaXRlbGFuZ3VhZ2UnKS52YWx1ZSA6ICdGUkVOQ0gnOwoKCQkJCUxlYWRDb25maWdzLkRlYWxlckFwcG9pbnRtZW50ID0gewoKCQkJCQl0aXRsZTogKGFjdGl2ZUxhbmcgPT0gJ0VOR0xJU0gnID8gJ1JlcXVlc3QgYW4gYXBwb2ludG1lbnQnIDogJ1ByZW5kcmUgUmVuZGV6LXZvdXMnKSwKCQkJCQljbG9zZU9uU3VibWl0IDogdHJ1ZSwKCQkJCQluYW1lIDogJ0RlYWxlckFwcG9pbnRtZW50JywKCgkJCQkJb25CZWZvcmVPcGVuOiBmdW5jdGlvbihsZWFkQ29uZil7CiAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLnRyaWdnZXIoJ2RlYWxlckFwcG9pbnRtZW50LnN0YXJ0Jyk7CgoJCQkJCQljb25zdCB0aW1lVHh0RWwgPSBsZWFkQ29uZi5sZWFkTm9kZS5xdWVyeVNlbGVjdG9yKCcuc2VsZWN0ZWRUaW1lJyk7CgkJCQkJCWNvbnN0IHRpbWVJbnB1dCA9IGxlYWRDb25mLmxlYWROb2RlLnF1ZXJ5U2VsZWN0b3IoJ1tuYW1lPSJkYXRlIl0nKTsKCQkJCQkJY29uc3QgcGlja2VyID0gbGVhZENvbmYubGVhZE5vZGUucXVlcnlTZWxlY3RvcignLmRhdGVwaWNrZXInKTsKCQkJCQkJY29uc3QgcGhvbmVFbCA9IGxlYWRDb25mLmxlYWROb2RlLnF1ZXJ5U2VsZWN0b3IoJ1tuYW1lPSJwaG9uZW51bSJdJyk7CgkJCQkJCWNvbnN0IGhvdXJzQmxvY2sgPSBsZWFkQ29uZi5sZWFkTm9kZS5xdWVyeVNlbGVjdG9yKCcuaG91cnNMaXN0Jyk7CgkJCQkJCWxldCBkYXlOb2RlcyA9IEFycmF5LmZyb20oaG91cnNCbG9jay5jaGlsZHJlbik7CgkJCQkJCWxldCBkYXRlRm9ybWF0ID0gIGFjdGl2ZUxhbmcgPT0gJ0VOR0xJU0gnID8gJ0YgaiBZLCBIOmknIDogJ2ogRiBZLCBIOmknOwoKCgkJCQkJCWNvbnN0IHNldFNlbGVjdGVkID0gKHNlbGVjdGVkRGF0ZXMsIGRhdGVTdHIsIGluc3RhbmNlKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgY3VycmVudGx5U2VsZWN0ZWREYXRlID0gc2VsZWN0ZWREYXRlc1swXSB8fCBuZXcgRGF0ZSgpOy8vZG9uJ3QgcGxheSB3aXRoIHRoaXMgb3IgbWlnaHQgYWZmZWN0IGRhdGUvdGltZSBzZWxlY3Rpb24KCQkJCQkJCWxldCBkYXlOdW0gPSBjdXJyZW50bHlTZWxlY3RlZERhdGUuZ2V0RGF5KCk7CgoJCQkJCQkJZGF5TnVtID0gZGF5TnVtID09IDAgPyA3IDogZGF5TnVtOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBkYXlNaW5UaW1lID0gZGF5Tm9kZXNbZGF5TnVtIC0gMV0uZGF0YXNldC5taW5ob3VyIHx8ICcwOTowMCc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZGF5TWF4VGltZSA9IGRheU5vZGVzW2RheU51bSAtIDFdLmRhdGFzZXQubWF4aG91ciB8fCAnMTc6MDAnOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vbWluVGltZSBtYW5hZ2VtZW50CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2lmIGRhdGUgaXMgdG9kYXksIG1pblRpbWUgbmVlZHMgdG8gYmUgYSBtaW5pbXVtIG9mIDFob3VyIGxhdGVyIGZyb20gY3VycmVudCB0aW1lCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihzZWxlY3RlZERhdGVzWzBdKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbm93ID0gbmV3IERhdGUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgYWNjZXB0ZWRFeGNlcHRpb24gPSA1Oy8vbWludXRlcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHNlbGVjdGVkRGF0ZXNbMF0udG9EYXRlU3RyaW5nKCkgPT0gbm93LnRvRGF0ZVN0cmluZygpKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG1pbkhvdXIgPSBub3cuZ2V0SG91cnMoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG1pbk1pbnV0ZSA9IG5vdy5nZXRNaW51dGVzKCkgKyA2MDsvL2FkZCAxIGhvdXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYobWluTWludXRlID49IDYwKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbkhvdXIgKz0gTWF0aC5mbG9vcihtaW5NaW51dGUgLyA2MCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5NaW51dGUgPSBtaW5NaW51dGUgJSA2MDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKG1pbk1pbnV0ZSAlIDE1KXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL21ha2UgaXQgc28gdGhhdCBtaW51dGVzIGFyZSBlaXRoZXIgcm91bmRlZCB0byBuZXh0IDE1bWluIGluY3JlbWVudCBvciB0byB0aGUgcHJldmlvdXMgb25lIGlmIHdpdGhpbiBhY2NlcHRlZEV4Y2VwdGlvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKG1pbk1pbnV0ZSAlIDE1IDw9IGFjY2VwdGVkRXhjZXB0aW9uKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluTWludXRlID0gbWluTWludXRlIC0gKG1pbk1pbnV0ZSAlIDE1KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ZWxzZSBpZigobWluTWludXRlICUgMTUgPiBhY2NlcHRlZEV4Y2VwdGlvbikpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5NaW51dGUgPSBtaW5NaW51dGUgKyAoMTUgLSAobWluTWludXRlICUgMTUpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2RvIG5vdGhpbmcsIGFscmVhZHkgYXQgaW5jcmVtZW50CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYobWluSG91ciA+PSAyNCl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL25vIG1vcmUgYXZhaWxhYmxlIHRpbWUgdG9kYXksIHNldCB0byBuZXh0IGRheSBhdCAwOTowMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2Uuc2V0RGF0ZShuZXcgRGF0ZSgpLmZwX2luY3IoMSksIHRydWUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW5zdGFuY2Uuc2V0KCdtaW5UaW1lJywgZGF5TWluVGltZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1lbHNlewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF5TWluVGltZSA9IFN0cmluZyhtaW5Ib3VyKS5wYWRTdGFydCgyLCcwJykgKyAnOicgKyBTdHJpbmcobWluTWludXRlKS5wYWRTdGFydCgyLCcwJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9tYXhUaW1lIG1hbmFnZW1lbnQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxhc3QgYXBwb2ludG1lbnQgdGltZSBtYW5hZ2VtZW50ICgxNW1pbiBiZWZvcmUgY2xvc2luZyB0aW1lKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IFtjbG9zaW5nSG91cnMsIGNsb3NpbmdNaW51dGVzXSA9IGRheU1heFRpbWUuc3BsaXQoJzonKS5tYXAoTnVtYmVyKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBkYXlEYXRlID0gbmV3IERhdGUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRheURhdGUuc2V0SG91cnMoY2xvc2luZ0hvdXJzLCBjbG9zaW5nTWludXRlcywgMCwgMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXlEYXRlLnNldE1pbnV0ZXMoZGF5RGF0ZS5nZXRNaW51dGVzKCkgLSAxNSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2Zvcm1hdCB0aGUgbmV3IHRpbWUgYmFjayBpbnRvICdISDptbScgZm9ybWF0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgYWN0dWFsQ2xvc2luZ0hvdXJzID0gZGF5RGF0ZS5nZXRIb3VycygpLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwgJzAnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBhY3R1YWxDbG9zaW5nTWludXRlcyA9IGRheURhdGUuZ2V0TWludXRlcygpLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwgJzAnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRheU1heFRpbWUgPSBhY3R1YWxDbG9zaW5nSG91cnMgKyAnOicgKyBhY3R1YWxDbG9zaW5nTWludXRlczsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL3NldCBzdGFydC9lbmQgdGltZSBmb3IgdGhhdCBkYXkKCQkJCQkJCWluc3RhbmNlLnNldCgnbWluVGltZScsIGRheU1pblRpbWUpOwoJCQkJCQkJaW5zdGFuY2Uuc2V0KCdtYXhUaW1lJywgZGF5TWF4VGltZSk7CgoJCQkJCQkJLy9TZXQgY3VycmVudCBkYXRlIGluaXRpYWxseQoJCQkJCQkJdGltZVR4dEVsLnRleHRDb250ZW50ID0gIXNlbGVjdGVkRGF0ZXMubGVuZ3RoCgkJCQkJCQkJCQkJCSAgPyBpbnN0YW5jZS5mb3JtYXREYXRlKG5ldyBEYXRlKCkuZnBfaW5jcigxKSwgKGFjdGl2ZUxhbmcgPT0gJ0VOR0xJU0gnID8gJ0YgaiBZLCAxMjowMCcgOiAnaiBGIFksIDEyOjAwJykpCgkJCQkJCQkJCQkJCSAgOiBkYXRlU3RyOwoKCQkJCQkJCS8vZ2V0IHRoZSBkYXRlIGluIGVuZ2xpc2ggYW5kIGZyZW5jaCBmb3IgdGhlIGxvY2FsIHN0b3JhZ2UKCQkJCQkJCXRpbWVUeHRFbC5kYXRhc2V0LmVuID0gaW5zdGFuY2UuZm9ybWF0RGF0ZShuZXcgRGF0ZSgpLmZwX2luY3IoMSksJ0YgaiBZLCAxMjowMCcsIGZsYXRwaWNrci5sMTBucy5lbik7CgkJCQkJCQl0aW1lVHh0RWwuZGF0YXNldC5mciA9IGluc3RhbmNlLmZvcm1hdERhdGUobmV3IERhdGUoKS5mcF9pbmNyKDEpLCdqIEYgWSwgMTI6MDAnLCBmbGF0cGlja3IubDEwbnMuZnIpOwoKCQkJCQkJCXRpbWVJbnB1dC52YWx1ZSA9IHRpbWVUeHRFbC50ZXh0Q29udGVudDsKCgkJCQkJCQlpbnN0YW5jZS5ob3VyRWxlbWVudC5ibHVyKCk7CgkJCQkJCX07CgoJCQkJCQlsZXQgY2xvc2VkRGF5cyA9IFtdOwoJCQkJCQlkYXlOb2Rlcy5mb3JFYWNoKChlLGkpID0+IHsKCQkJCQkJCWlmKChlLmRhdGFzZXQuY2xvc2VkIHx8ICcwJykgPT0gJzEnKSBjbG9zZWREYXlzLnB1c2goaSkKCQkJCQkJfSk7CgoJCQkJCQkvL0FkZCBmcmVuY2ggbG9jYWxpemF0aW9uIHdoZW4gbmVlZGVkCgkJCQkJCWlmKGFjdGl2ZUxhbmcgPT0gJ0ZSRU5DSCcpewoJCQkJCQkJZmxhdHBpY2tyLmxvY2FsaXplKGZsYXRwaWNrci5sMTBucy5mcik7CgkJCQkJCX0KCgoKCQkJCQkJY29uc3QgZnAgPSBmbGF0cGlja3IocGlja2VyLCB7CgkJCQkJCQlpbmxpbmU6dHJ1ZSwKCQkJCQkJCWVuYWJsZVRpbWU6IHRydWUsCgkJCQkJCQltaW5EYXRlOiAndG9kYXknLC8vYmFjayBmcm9tIG5ldyBEYXRlKCkuZnBfaW5jcigxKSBidXQgYWxzbyBhZGRlZCB0aW1lIHZhbGlkYXRpb24gZm9yIG1pblRpbWUKCQkJCQkJCW1pblRpbWU6ICIwOTowMCIsCgkJCQkJCQltYXhUaW1lOiAiMTc6MDAiLAoJCQkJCQkJZGF0ZUZvcm1hdDogZGF0ZUZvcm1hdCwvLyJELCBqIEYgWSwgSDppIiwKCQkJCQkJCW1pbnV0ZUluY3JlbWVudDoxNSwKCQkJCQkJCXRpbWVfMjRocjp0cnVlLAoJCQkJCQkJb25DaGFuZ2U6IHNldFNlbGVjdGVkLAoJCQkJCQkJb25SZWFkeTogc2V0U2VsZWN0ZWQsCgkJCQkJCQlkaXNhYmxlOiBbCgkJCQkJCQkJZnVuY3Rpb24oZGF0ZSl7CgkJCQkJCQkJCWxldCBkYXlOdW0gPSBkYXRlLmdldERheSgpID09IDAgPyA3IDogZGF0ZS5nZXREYXkoKTsKCQkJCQkJCQkJcmV0dXJuIGNsb3NlZERheXMuaW5jbHVkZXMoZGF5TnVtIC0gMSk7CgkJCQkJCQkJfQoJCQkJCQkJXSwKCQkJCQkJCWxvY2FsZTogewoJCQkJCQkJCWZpcnN0RGF5T2ZXZWVrOiAxIC8vIHN0YXJ0IHdlZWsgb24gTW9uZGF5CgkJCQkJCQl9CgoJCQkJCQl9KTsKCgkJCQkJfSwKCgkJCQkJb25CZWZvcmVTdWJtaXQgOiAobGVhZENvbmYpID0+IHsKCQkJCQkJY29uc3QgdGltZVR4dEVsID0gbGVhZENvbmYubGVhZE5vZGUucXVlcnlTZWxlY3RvcignLnNlbGVjdGVkVGltZScpOwoJCQkJCQllbWFpbEhhbmRsZXIuZGVhbGVyQXBwb2ludG1lbnREYXRhID0gewoJCQkJCQkJZGF0ZSA6IHRpbWVUeHRFbC50ZXh0Q29udGVudAoJCQkJCQl9OwoJCQkJCX0sCgoJCQkJCW9uQWZ0ZXJTdWJtaXQgOiAobGVhZENvbmYpID0+IHsKCgkJCQkJCWNvbnN0IHRpbWVUeHRFbCA9IGxlYWRDb25mLmxlYWROb2RlLnF1ZXJ5U2VsZWN0b3IoJy5zZWxlY3RlZFRpbWUnKTsKCgkJCQkJCWNvbnN0IGNiID0gdHJhY2tTdGVwID0+IHsKCQkJCQkJCXRyYWNrU3RlcC5kYXRhc2V0LmNvbXBsX3R4dF9mciA9IHRyYWNrU3RlcC5kYXRhc2V0LmNvbXBsX3R4dF9mci5yZXBsYWNlKCd7JEFQUE9JTlRfREFURX0nLCB0aW1lVHh0RWwuZGF0YXNldC5mcik7CgkJCQkJCQl0cmFja1N0ZXAuZGF0YXNldC5jb21wbF90eHRfZW4gPSB0cmFja1N0ZXAuZGF0YXNldC5jb21wbF90eHRfZW4ucmVwbGFjZSgneyRBUFBPSU5UX0RBVEV9JywgdGltZVR4dEVsLmRhdGFzZXQuZW4pOwoJCQkJCQl9OwoKCQkJCQkJbGV0IGNvbXBsZXRlRXZlbnQgPSBuZXcgQ3VzdG9tRXZlbnQoJ3RyYWNrc3RlcC5jb21wbGV0ZScsewoJCQkJCQkJZGV0YWlsOnsKCQkJCQkJCQlzdGVwSWQgOiAnRGVhbGVyQXBwb2ludG1lbnQnLAoJCQkJCQkJCW9uQ29tcGxldGUgOiBjYgoJCQkJCQkJfQoJCQkJCQl9KTsKCgkJCQkJCWRvY3VtZW50LmRpc3BhdGNoRXZlbnQoY29tcGxldGVFdmVudCk7CgogICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS50cmlnZ2VyKCdkZWFsZXJBcHBvaW50bWVudC5lbmQnKTsKCQkJCQl9CgoJCQkJfQoKCQkJCi8qKiAvbS9qcy9za2VsZXRvbi5iZWZvcmUuanMgKiovCnZhciBfX19kMmNfc2tlbGV0b25iZWZvcmVqc19jX29uPSIyMDI1LTA1LTIzIDE3OjEzOjAzIjsndXNlIHN0cmljdCc7dmFyIF9fX2QyY19za2VsZXRvbmJlZm9yZWpzX2Nfb249IjIwMjQtMDEtMzEgMTQ6Mzc6NTciOyJ1c2Ugc3RyaWN0IjtfX19kMmNfc2tlbGV0b25iZWZvcmVqc19jX29uPSIyMDIzLTA2LTAxIDEyOjMwOjE5IjsidXNlIHN0cmljdCI7bGV0ICRqc2NvbXAkbnVsbGlzaCR0bXAwO3dpbmRvdy5nU3BlZWRDb25uPXBhcnNlSW50KE1hdGguZmxvb3IoKERhdGUubm93KCktKG51bGwhPSgkanNjb21wJG51bGxpc2gkdG1wMD13aW5kb3cuZ1Rlc3RTcGVlZENvbm4pPyRqc2NvbXAkbnVsbGlzaCR0bXAwOjApKS8xRTMpKTtsZXQgJGpzY29tcCRudWxsaXNoJHRtcDE7Y29uc29sZS5sb2coIkdTUEVFRC1CRUZPUkU6IisoRGF0ZS5ub3coKS0obnVsbCE9KCRqc2NvbXAkbnVsbGlzaCR0bXAxPXdpbmRvdy5nVGVzdFNwZWVkQ29ubik\/JGpzY29tcCRudWxsaXNoJHRtcDE6MCkpLzFFMyk7Ci8qKiAvbS9qcy9qcXVlcnkuanMgKiovCnZhciBfX19kMmNfanF1ZXJ5anNfY19vbj0iMjAyNS0wNS0yMyAxNzowNTo0OSI7J3VzZSBzdHJpY3QnO3ZhciBfX19kMmNfanF1ZXJ5anNfY19vbj0iMjAyNC0wMy0yNSAxMjozMTozMyI7InVzZSBzdHJpY3QiOwohZnVuY3Rpb24obixkYSl7Im9iamVjdCI9PXR5cGVvZiBtb2R1bGUmJiJvYmplY3QiPT10eXBlb2YgbW9kdWxlLmV4cG9ydHM\/bW9kdWxlLmV4cG9ydHM9bi5kb2N1bWVudD9kYShuLCEwKTpmdW5jdGlvbih3YSl7aWYoIXdhLmRvY3VtZW50KXRocm93IEVycm9yKCJqUXVlcnkgcmVxdWlyZXMgYSB3aW5kb3cgd2l0aCBhIGRvY3VtZW50Iik7cmV0dXJuIGRhKHdhKX06ZGEobil9KCJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93P3dpbmRvdzp0aGlzLGZ1bmN0aW9uKG4sZGEpe2Z1bmN0aW9uIHdhKGEsYixjKXt2YXIgZSxmLGc9KGM9Y3x8TCkuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7aWYoZy50ZXh0PWEsYilmb3IoZSBpbiBMYykoZj1iW2VdfHxiLmdldEF0dHJpYnV0ZSYmYi5nZXRBdHRyaWJ1dGUoZSkpJiZnLnNldEF0dHJpYnV0ZShlLGYpO2MuaGVhZC5hcHBlbmRDaGlsZChnKS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGcpfWZ1bmN0aW9uIFUoYSl7cmV0dXJuIG51bGw9PWE\/YSsKIiI6Im9iamVjdCI9PXR5cGVvZiBhfHwiZnVuY3Rpb24iPT10eXBlb2YgYT9NYltrYy5jYWxsKGEpXXx8Im9iamVjdCI6dHlwZW9mIGF9ZnVuY3Rpb24gZWIoYSl7dmFyIGI9ISFhJiYibGVuZ3RoImluIGEmJmEubGVuZ3RoLGM9VShhKTtyZXR1cm4hTShhKSYmIWtiKGEpJiYoImFycmF5Ij09PWN8fDA9PT1ifHwibnVtYmVyIj09dHlwZW9mIGImJjA8YiYmYi0xIGluIGEpfWZ1bmN0aW9uIFgoYSxiKXtyZXR1cm4gYS5ub2RlTmFtZSYmYS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09Yi50b0xvd2VyQ2FzZSgpfWZ1bmN0aW9uIGJhKGEsYil7cmV0dXJuIGI\/Ilx4MDAiPT09YT8iXHVmZmZkIjphLnNsaWNlKDAsLTEpKyJcXCIrYS5jaGFyQ29kZUF0KGEubGVuZ3RoLTEpLnRvU3RyaW5nKDE2KSsiICI6IlxcIithfWZ1bmN0aW9uIGphKGEsYixjKXtyZXR1cm4gTShiKT9kLmdyZXAoYSxmdW5jdGlvbihlLGYpe3JldHVybiEhYi5jYWxsKGUsZixlKSE9PWN9KTpiLm5vZGVUeXBlP2QuZ3JlcChhLApmdW5jdGlvbihlKXtyZXR1cm4gZT09PWIhPT1jfSk6InN0cmluZyIhPXR5cGVvZiBiP2QuZ3JlcChhLGZ1bmN0aW9uKGUpe3JldHVybi0xPE5hLmNhbGwoYixlKSE9PWN9KTpkLmZpbHRlcihiLGEsYyl9ZnVuY3Rpb24gbGIoYSxiKXtmb3IoOyhhPWFbYl0pJiYxIT09YS5ub2RlVHlwZTspO3JldHVybiBhfWZ1bmN0aW9uIFlhKGEpe3JldHVybiBhfWZ1bmN0aW9uIFphKGEpe3Rocm93IGE7fWZ1bmN0aW9uIG1iKGEsYixjLGUpe3ZhciBmO3RyeXthJiZNKGY9YS5wcm9taXNlKT9mLmNhbGwoYSkuZG9uZShiKS5mYWlsKGMpOmEmJk0oZj1hLnRoZW4pP2YuY2FsbChhLGIsYyk6Yi5hcHBseSh2b2lkIDAsW2FdLnNsaWNlKGUpKX1jYXRjaChnKXtjLmFwcGx5KHZvaWQgMCxbZ10pfX1mdW5jdGlvbiBPYSgpe0wucmVtb3ZlRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsT2EpO24ucmVtb3ZlRXZlbnRMaXN0ZW5lcigibG9hZCIsT2EpO2QucmVhZHkoKX1mdW5jdGlvbiBOYihhLGIpe3JldHVybiBiLnRvVXBwZXJDYXNlKCl9CmZ1bmN0aW9uIEJhKGEpe3JldHVybiBhLnJlcGxhY2UoTWMsIm1zLSIpLnJlcGxhY2UoTmMsTmIpfWZ1bmN0aW9uIEphKCl7dGhpcy5leHBhbmRvPWQuZXhwYW5kbytKYS51aWQrK31mdW5jdGlvbiBPYihhLGIsYyl7dmFyIGUsZjtpZih2b2lkIDA9PT1jJiYxPT09YS5ub2RlVHlwZSlpZihlPSJkYXRhLSIrYi5yZXBsYWNlKE9jLCItJCYiKS50b0xvd2VyQ2FzZSgpLCJzdHJpbmciPT10eXBlb2YoYz1hLmdldEF0dHJpYnV0ZShlKSkpe3RyeXtjPSJ0cnVlIj09PShmPWMpfHwiZmFsc2UiIT09ZiYmKCJudWxsIj09PWY\/bnVsbDpmPT09K2YrIiI\/K2Y6UGMudGVzdChmKT9KU09OLnBhcnNlKGYpOmYpfWNhdGNoKGcpe314YS5zZXQoYSxiLGMpfWVsc2UgYz12b2lkIDA7cmV0dXJuIGN9ZnVuY3Rpb24gUGIoYSxiLGMsZSl7dmFyIGYsZyxoPTIwLG09ZT9mdW5jdGlvbigpe3JldHVybiBlLmN1cigpfTpmdW5jdGlvbigpe3JldHVybiBkLmNzcyhhLGIsIiIpfSxsPW0oKSx0PWMmJmNbM118fAooZC5jc3NOdW1iZXJbYl0\/IiI6InB4Iiksdz1hLm5vZGVUeXBlJiYoZC5jc3NOdW1iZXJbYl18fCJweCIhPT10JiYrbCkmJnliLmV4ZWMoZC5jc3MoYSxiKSk7aWYodyYmd1szXSE9PXQpe2wvPTI7dD10fHx3WzNdO2Zvcih3PStsfHwxO2gtLTspZC5zdHlsZShhLGIsdyt0KSwwPj0oMS1nKSooMS0oZz1tKCkvbHx8LjUpKSYmKGg9MCksdy89Zzt3Kj0yO2Quc3R5bGUoYSxiLHcrdCk7Yz1jfHxbXX1yZXR1cm4gYyYmKHc9K3d8fCtsfHwwLGY9Y1sxXT93KyhjWzFdKzEpKmNbMl06K2NbMl0sZSYmKGUudW5pdD10LGUuc3RhcnQ9dyxlLmVuZD1mKSksZn1mdW5jdGlvbiAkYShhLGIpe2Zvcih2YXIgYyxlLGYsZyxoLG0sbCx0PVtdLHc9MCxyPWEubGVuZ3RoO3c8cjt3KyspKGU9YVt3XSkuc3R5bGUmJihjPWUuc3R5bGUuZGlzcGxheSxiPygibm9uZSI9PT1jJiYodFt3XT1HLmdldChlLCJkaXNwbGF5Iil8fG51bGwsdFt3XXx8KGUuc3R5bGUuZGlzcGxheT0iIikpLCIiPT09ZS5zdHlsZS5kaXNwbGF5JiYKUWIoZSkmJih0W3ddPShsPWg9Zz12b2lkIDAsaD0oZj1lKS5vd25lckRvY3VtZW50LG09Zi5ub2RlTmFtZSwobD1sY1ttXSl8fChnPWguYm9keS5hcHBlbmRDaGlsZChoLmNyZWF0ZUVsZW1lbnQobSkpLGw9ZC5jc3MoZywiZGlzcGxheSIpLGcucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChnKSwibm9uZSI9PT1sJiYobD0iYmxvY2siKSxsY1ttXT1sKSkpKToibm9uZSIhPT1jJiYodFt3XT0ibm9uZSIsRy5zZXQoZSwiZGlzcGxheSIsYykpKTtmb3Iodz0wO3c8cjt3KyspbnVsbCE9dFt3XSYmKGFbd10uc3R5bGUuZGlzcGxheT10W3ddKTtyZXR1cm4gYX1mdW5jdGlvbiBzYShhLGIpe3ZhciBjO3JldHVybiBjPSJ1bmRlZmluZWQiIT10eXBlb2YgYS5nZXRFbGVtZW50c0J5VGFnTmFtZT9hLmdldEVsZW1lbnRzQnlUYWdOYW1lKGJ8fCIqIik6InVuZGVmaW5lZCIhPXR5cGVvZiBhLnF1ZXJ5U2VsZWN0b3JBbGw\/YS5xdWVyeVNlbGVjdG9yQWxsKGJ8fCIqIik6W10sdm9pZCAwPT09Ynx8YiYmClgoYSxiKT9kLm1lcmdlKFthXSxjKTpjfWZ1bmN0aW9uIG5iKGEsYil7Zm9yKHZhciBjPTAsZT1hLmxlbmd0aDtjPGU7YysrKUcuc2V0KGFbY10sImdsb2JhbEV2YWwiLCFifHxHLmdldChiW2NdLCJnbG9iYWxFdmFsIikpfWZ1bmN0aW9uIFJiKGEsYixjLGUsZil7Zm9yKHZhciBnLGgsbSxsLHQ9Yi5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCksdz1bXSxyPTAsej1hLmxlbmd0aDtyPHo7cisrKWlmKChnPWFbcl0pfHwwPT09ZylpZigib2JqZWN0Ij09PVUoZykpZC5tZXJnZSh3LGcubm9kZVR5cGU\/W2ddOmcpO2Vsc2UgaWYoUWMudGVzdChnKSl7aD1ofHx0LmFwcGVuZENoaWxkKGIuY3JlYXRlRWxlbWVudCgiZGl2IikpO209KG1jLmV4ZWMoZyl8fFsiIiwiIl0pWzFdLnRvTG93ZXJDYXNlKCk7bT1DYVttXXx8Q2EuX2RlZmF1bHQ7aC5pbm5lckhUTUw9bVsxXStkLmh0bWxQcmVmaWx0ZXIoZykrbVsyXTtmb3IobT1tWzBdO20tLTspaD1oLmxhc3RDaGlsZDtkLm1lcmdlKHcsaC5jaGlsZE5vZGVzKTsKKGg9dC5maXJzdENoaWxkKS50ZXh0Q29udGVudD0iIn1lbHNlIHcucHVzaChiLmNyZWF0ZVRleHROb2RlKGcpKTt0LnRleHRDb250ZW50PSIiO2ZvcihyPTA7Zz13W3IrK107KWlmKGUmJi0xPGQuaW5BcnJheShnLGUpKWYmJmYucHVzaChnKTtlbHNlIGlmKGw9b2IoZyksaD1zYSh0LmFwcGVuZENoaWxkKGcpLCJzY3JpcHQiKSxsJiZuYihoKSxjKWZvcihtPTA7Zz1oW20rK107KW5jLnRlc3QoZy50eXBlfHwiIikmJmMucHVzaChnKTtyZXR1cm4gdH1mdW5jdGlvbiBhYigpe3JldHVybiEwfWZ1bmN0aW9uIGJiKCl7cmV0dXJuITF9ZnVuY3Rpb24gZmIoYSxiLGMsZSxmLGcpe3ZhciBoLG07aWYoIm9iamVjdCI9PXR5cGVvZiBiKXtmb3IobSBpbiJzdHJpbmciIT10eXBlb2YgYyYmKGU9ZXx8YyxjPXZvaWQgMCksYilmYihhLG0sYyxlLGJbbV0sZyk7cmV0dXJuIGF9aWYobnVsbD09ZSYmbnVsbD09Zj8oZj1jLGU9Yz12b2lkIDApOm51bGw9PWYmJigic3RyaW5nIj09dHlwZW9mIGM\/KGY9CmUsZT12b2lkIDApOihmPWUsZT1jLGM9dm9pZCAwKSksITE9PT1mKWY9YmI7ZWxzZSBpZighZilyZXR1cm4gYTtyZXR1cm4gMT09PWcmJihoPWYsKGY9ZnVuY3Rpb24obCl7cmV0dXJuIGQoKS5vZmYobCksaC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9KS5ndWlkPWguZ3VpZHx8KGguZ3VpZD1kLmd1aWQrKykpLGEuZWFjaChmdW5jdGlvbigpe2QuZXZlbnQuYWRkKHRoaXMsYixmLGUsYyl9KX1mdW5jdGlvbiBwYihhLGIsYyl7Yz8oRy5zZXQoYSxiLCExKSxkLmV2ZW50LmFkZChhLGIse25hbWVzcGFjZTohMSxoYW5kbGVyOmZ1bmN0aW9uKGUpe3ZhciBmLGc9Ry5nZXQodGhpcyxiKTtpZigxJmUuaXNUcmlnZ2VyJiZ0aGlzW2JdKWlmKGcpKGQuZXZlbnQuc3BlY2lhbFtiXXx8e30pLmRlbGVnYXRlVHlwZSYmZS5zdG9wUHJvcGFnYXRpb24oKTtlbHNle2lmKGc9eWEuY2FsbChhcmd1bWVudHMpLEcuc2V0KHRoaXMsYixnKSx0aGlzW2JdKCksZj1HLmdldCh0aGlzLGIpLEcuc2V0KHRoaXMsYiwKITEpLGchPT1mKXJldHVybiBlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpLGUucHJldmVudERlZmF1bHQoKSxmfWVsc2UgZyYmKEcuc2V0KHRoaXMsYixkLmV2ZW50LnRyaWdnZXIoZ1swXSxnLnNsaWNlKDEpLHRoaXMpKSxlLnN0b3BQcm9wYWdhdGlvbigpLGUuaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQ9YWIpfX0pKTp2b2lkIDA9PT1HLmdldChhLGIpJiZkLmV2ZW50LmFkZChhLGIsYWIpfWZ1bmN0aW9uIFNiKGEsYil7cmV0dXJuIFgoYSwidGFibGUiKSYmWCgxMSE9PWIubm9kZVR5cGU\/YjpiLmZpcnN0Q2hpbGQsInRyIikmJmQoYSkuY2hpbGRyZW4oInRib2R5IilbMF18fGF9ZnVuY3Rpb24gcWIoYSl7cmV0dXJuIGEudHlwZT0obnVsbCE9PWEuZ2V0QXR0cmlidXRlKCJ0eXBlIikpKyIvIithLnR5cGUsYX1mdW5jdGlvbiAkYihhKXtyZXR1cm4idHJ1ZS8iPT09KGEudHlwZXx8IiIpLnNsaWNlKDAsNSk\/YS50eXBlPWEudHlwZS5zbGljZSg1KTphLnJlbW92ZUF0dHJpYnV0ZSgidHlwZSIpLAphfWZ1bmN0aW9uIGdiKGEsYil7dmFyIGMsZSxmLGcsaDtpZigxPT09Yi5ub2RlVHlwZSl7aWYoRy5oYXNEYXRhKGEpJiYoaD1HLmdldChhKS5ldmVudHMpKWZvcihlIGluIEcucmVtb3ZlKGIsImhhbmRsZSBldmVudHMiKSxoKXt2YXIgbT0wO2ZvcihjPWhbZV0ubGVuZ3RoO208YzttKyspZC5ldmVudC5hZGQoYixlLGhbZV1bbV0pfXhhLmhhc0RhdGEoYSkmJihmPXhhLmFjY2VzcyhhKSxnPWQuZXh0ZW5kKHt9LGYpLHhhLnNldChiLGcpKX19ZnVuY3Rpb24gY2IoYSxiLGMsZSl7Yj1vYyhiKTt2YXIgZixnLGgsbT0wLGw9YS5sZW5ndGgsdD1sLTEsdz1iWzBdLHI9TSh3KTtpZihyfHwxPGwmJiJzdHJpbmciPT10eXBlb2YgdyYmIU4uY2hlY2tDbG9uZSYmUmMudGVzdCh3KSlyZXR1cm4gYS5lYWNoKGZ1bmN0aW9uKEQpe3ZhciBGPWEuZXEoRCk7ciYmKGJbMF09dy5jYWxsKHRoaXMsRCxGLmh0bWwoKSkpO2NiKEYsYixjLGUpfSk7aWYobCYmKGc9KGY9UmIoYixhWzBdLm93bmVyRG9jdW1lbnQsCiExLGEsZSkpLmZpcnN0Q2hpbGQsMT09PWYuY2hpbGROb2Rlcy5sZW5ndGgmJihmPWcpLGd8fGUpKXtmb3IoaD0oZz1kLm1hcChzYShmLCJzY3JpcHQiKSxxYikpLmxlbmd0aDttPGw7bSsrKXt2YXIgej1mO20hPT10JiYoej1kLmNsb25lKHosITAsITApLGgmJmQubWVyZ2UoZyxzYSh6LCJzY3JpcHQiKSkpO2MuY2FsbChhW21dLHosbSl9aWYoaClmb3IoZj1nW2cubGVuZ3RoLTFdLm93bmVyRG9jdW1lbnQsZC5tYXAoZywkYiksbT0wO208aDttKyspej1nW21dLG5jLnRlc3Qoei50eXBlfHwiIikmJiFHLmFjY2Vzcyh6LCJnbG9iYWxFdmFsIikmJmQuY29udGFpbnMoZix6KSYmKHouc3JjJiYibW9kdWxlIiE9PSh6LnR5cGV8fCIiKS50b0xvd2VyQ2FzZSgpP2QuX2V2YWxVcmwmJiF6Lm5vTW9kdWxlJiZkLl9ldmFsVXJsKHouc3JjLHtub25jZTp6Lm5vbmNlfHx6LmdldEF0dHJpYnV0ZSgibm9uY2UiKX0sZik6d2Eoei50ZXh0Q29udGVudC5yZXBsYWNlKFNjLCIiKSx6LGYpKX1yZXR1cm4gYX0KZnVuY3Rpb24gVGIoYSxiLGMpe2Zvcih2YXIgZT1iP2QuZmlsdGVyKGIsYSk6YSxmPTA7bnVsbCE9KGI9ZVtmXSk7ZisrKWN8fDEhPT1iLm5vZGVUeXBlfHxkLmNsZWFuRGF0YShzYShiKSksYi5wYXJlbnROb2RlJiYoYyYmb2IoYikmJm5iKHNhKGIsInNjcmlwdCIpKSxiLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoYikpO3JldHVybiBhfWZ1bmN0aW9uIEthKGEsYixjKXt2YXIgZSxmLGcsaCxtPWFjLnRlc3QoYiksbD1hLnN0eWxlO3JldHVybihjPWN8fFViKGEpKSYmKGg9Yy5nZXRQcm9wZXJ0eVZhbHVlKGIpfHxjW2JdLG0mJmgmJihoPWgucmVwbGFjZSh6YiwiJDEiKXx8dm9pZCAwKSwiIiE9PWh8fG9iKGEpfHwoaD1kLnN0eWxlKGEsYikpLCFOLnBpeGVsQm94U3R5bGVzKCkmJmJjLnRlc3QoaCkmJlRjLnRlc3QoYikmJihlPWwud2lkdGgsZj1sLm1pbldpZHRoLGc9bC5tYXhXaWR0aCxsLm1pbldpZHRoPWwubWF4V2lkdGg9bC53aWR0aD1oLGg9Yy53aWR0aCxsLndpZHRoPWUsbC5taW5XaWR0aD0KZixsLm1heFdpZHRoPWcpKSx2b2lkIDAhPT1oP2grIiI6aH1mdW5jdGlvbiBWYihhLGIpe3JldHVybntnZXQ6ZnVuY3Rpb24oKXtpZighYSgpKXJldHVybih0aGlzLmdldD1iKS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7ZGVsZXRlIHRoaXMuZ2V0fX19ZnVuY3Rpb24gQWIoYSl7dmFyIGI7aWYoIShiPWQuY3NzUHJvcHNbYV18fHBjW2FdKSl7aWYoIShhIGluIHFjKSl7YTp7Yj1hO2Zvcih2YXIgYz1iWzBdLnRvVXBwZXJDYXNlKCkrYi5zbGljZSgxKSxlPXJjLmxlbmd0aDtlLS07KWlmKChiPXJjW2VdK2MpaW4gcWMpYnJlYWsgYTtiPXZvaWQgMH1hPXBjW2FdPWJ8fGF9Yj1hfXJldHVybiBifWZ1bmN0aW9uIFdiKGEsYixjKXtyZXR1cm4oYT15Yi5leGVjKGIpKT9NYXRoLm1heCgwLGFbMl0tKGN8fDApKSsoYVszXXx8InB4Iik6Yn1mdW5jdGlvbiByYihhLGIsYyxlLGYsZyl7dmFyIGg9IndpZHRoIj09PWI\/MTowLG09MCxsPTAsdD0wO2lmKGM9PT0oZT8iYm9yZGVyIjoiY29udGVudCIpKXJldHVybiAwOwpmb3IoOzQ+aDtoKz0yKSJtYXJnaW4iPT09YyYmKHQrPWQuY3NzKGEsYytQYVtoXSwhMCxmKSksZT8oImNvbnRlbnQiPT09YyYmKGwtPWQuY3NzKGEsInBhZGRpbmciK1BhW2hdLCEwLGYpKSwibWFyZ2luIiE9PWMmJihsLT1kLmNzcyhhLCJib3JkZXIiK1BhW2hdKyJXaWR0aCIsITAsZikpKToobCs9ZC5jc3MoYSwicGFkZGluZyIrUGFbaF0sITAsZiksInBhZGRpbmciIT09Yz9sKz1kLmNzcyhhLCJib3JkZXIiK1BhW2hdKyJXaWR0aCIsITAsZik6bSs9ZC5jc3MoYSwiYm9yZGVyIitQYVtoXSsiV2lkdGgiLCEwLGYpKTtyZXR1cm4hZSYmMDw9ZyYmKGwrPU1hdGgubWF4KDAsTWF0aC5jZWlsKGFbIm9mZnNldCIrYlswXS50b1VwcGVyQ2FzZSgpK2Iuc2xpY2UoMSldLWctbC1tLS41KSl8fDApLGwrdH1mdW5jdGlvbiBCYihhLGIsYyl7dmFyIGU9VWIoYSksZj0oIU4uYm94U2l6aW5nUmVsaWFibGUoKXx8YykmJiJib3JkZXItYm94Ij09PWQuY3NzKGEsImJveFNpemluZyIsITEsZSksZz0KZixoPUthKGEsYixlKSxtPSJvZmZzZXQiK2JbMF0udG9VcHBlckNhc2UoKStiLnNsaWNlKDEpO2lmKGJjLnRlc3QoaCkpe2lmKCFjKXJldHVybiBoO2g9ImF1dG8ifXJldHVybighTi5ib3hTaXppbmdSZWxpYWJsZSgpJiZmfHwhTi5yZWxpYWJsZVRyRGltZW5zaW9ucygpJiZYKGEsInRyIil8fCJhdXRvIj09PWh8fCFwYXJzZUZsb2F0KGgpJiYiaW5saW5lIj09PWQuY3NzKGEsImRpc3BsYXkiLCExLGUpKSYmYS5nZXRDbGllbnRSZWN0cygpLmxlbmd0aCYmKGY9ImJvcmRlci1ib3giPT09ZC5jc3MoYSwiYm94U2l6aW5nIiwhMSxlKSwoZz1tIGluIGEpJiYoaD1hW21dKSksKGg9cGFyc2VGbG9hdChoKXx8MCkrcmIoYSxiLGN8fChmPyJib3JkZXIiOiJjb250ZW50IiksZyxlLGgpKyJweCJ9ZnVuY3Rpb24gemEoYSxiLGMsZSxmKXtyZXR1cm4gbmV3IHphLnByb3RvdHlwZS5pbml0KGEsYixjLGUsZil9ZnVuY3Rpb24gQ2IoKXtYYiYmKCExPT09TC5oaWRkZW4mJm4ucmVxdWVzdEFuaW1hdGlvbkZyYW1lPwpuLnJlcXVlc3RBbmltYXRpb25GcmFtZShDYik6bi5zZXRUaW1lb3V0KENiLGQuZnguaW50ZXJ2YWwpLGQuZngudGljaygpKX1mdW5jdGlvbiBEYigpe3JldHVybiBuLnNldFRpbWVvdXQoZnVuY3Rpb24oKXtzYj12b2lkIDB9KSxzYj1EYXRlLm5vdygpfWZ1bmN0aW9uIHRiKGEsYil7dmFyIGMsZT0wLGY9e2hlaWdodDphfTtmb3IoYj1iPzE6MDs0PmU7ZSs9Mi1iKWZbIm1hcmdpbiIrKGM9UGFbZV0pXT1mWyJwYWRkaW5nIitjXT1hO3JldHVybiBiJiYoZi5vcGFjaXR5PWYud2lkdGg9YSksZn1mdW5jdGlvbiB1KGEsYixjKXtmb3IodmFyIGUsZj0oeC50d2VlbmVyc1tiXXx8W10pLmNvbmNhdCh4LnR3ZWVuZXJzWyIqIl0pLGc9MCxoPWYubGVuZ3RoO2c8aDtnKyspaWYoZT1mW2ddLmNhbGwoYyxiLGEpKXJldHVybiBlfWZ1bmN0aW9uIHgoYSxiLGMpe3ZhciBlLGY9MCxnPXgucHJlZmlsdGVycy5sZW5ndGgsaD1kLkRlZmVycmVkKCkuYWx3YXlzKGZ1bmN0aW9uKCl7ZGVsZXRlIG0uZWxlbX0pLAptPWZ1bmN0aW9uKCl7aWYoZSlyZXR1cm4hMTt2YXIgdD1zYnx8RGIoKTt0PU1hdGgubWF4KDAsbC5zdGFydFRpbWUrbC5kdXJhdGlvbi10KTtmb3IodmFyIHc9MS0odC9sLmR1cmF0aW9ufHwwKSxyPTAsej1sLnR3ZWVucy5sZW5ndGg7cjx6O3IrKylsLnR3ZWVuc1tyXS5ydW4odyk7cmV0dXJuIGgubm90aWZ5V2l0aChhLFtsLHcsdF0pLDE+dyYmej90Oih6fHxoLm5vdGlmeVdpdGgoYSxbbCwxLDBdKSxoLnJlc29sdmVXaXRoKGEsW2xdKSwhMSl9LGw9aC5wcm9taXNlKHtlbGVtOmEscHJvcHM6ZC5leHRlbmQoe30sYiksb3B0czpkLmV4dGVuZCghMCx7c3BlY2lhbEVhc2luZzp7fSxlYXNpbmc6ZC5lYXNpbmcuX2RlZmF1bHR9LGMpLG9yaWdpbmFsUHJvcGVydGllczpiLG9yaWdpbmFsT3B0aW9uczpjLHN0YXJ0VGltZTpzYnx8RGIoKSxkdXJhdGlvbjpjLmR1cmF0aW9uLHR3ZWVuczpbXSxjcmVhdGVUd2VlbjpmdW5jdGlvbih0LHcpe3Q9ZC5Ud2VlbihhLGwub3B0cyx0LHcsbC5vcHRzLnNwZWNpYWxFYXNpbmdbdF18fApsLm9wdHMuZWFzaW5nKTtyZXR1cm4gbC50d2VlbnMucHVzaCh0KSx0fSxzdG9wOmZ1bmN0aW9uKHQpe3ZhciB3PTAscj10P2wudHdlZW5zLmxlbmd0aDowO2lmKGUpcmV0dXJuIHRoaXM7Zm9yKGU9ITA7dzxyO3crKylsLnR3ZWVuc1t3XS5ydW4oMSk7cmV0dXJuIHQ\/KGgubm90aWZ5V2l0aChhLFtsLDEsMF0pLGgucmVzb2x2ZVdpdGgoYSxbbCx0XSkpOmgucmVqZWN0V2l0aChhLFtsLHRdKSx0aGlzfX0pO2M9bC5wcm9wczshZnVuY3Rpb24odCx3KXt2YXIgcix6LEQsRixPO2ZvcihyIGluIHQpaWYoRD13W3o9QmEocildLEY9dFtyXSxBcnJheS5pc0FycmF5KEYpJiYoRD1GWzFdLEY9dFtyXT1GWzBdKSxyIT09eiYmKHRbel09RixkZWxldGUgdFtyXSksKE89ZC5jc3NIb29rc1t6XSkmJiJleHBhbmQiaW4gTylmb3IociBpbiBGPU8uZXhwYW5kKEYpLGRlbGV0ZSB0W3pdLEYpciBpbiB0fHwodFtyXT1GW3JdLHdbcl09RCk7ZWxzZSB3W3pdPUR9KGMsbC5vcHRzLnNwZWNpYWxFYXNpbmcpOwpmb3IoO2Y8ZztmKyspaWYoYj14LnByZWZpbHRlcnNbZl0uY2FsbChsLGEsYyxsLm9wdHMpKXJldHVybiBNKGIuc3RvcCkmJihkLl9xdWV1ZUhvb2tzKGwuZWxlbSxsLm9wdHMucXVldWUpLnN0b3A9Yi5zdG9wLmJpbmQoYikpLGI7cmV0dXJuIGQubWFwKGMsdSxsKSxNKGwub3B0cy5zdGFydCkmJmwub3B0cy5zdGFydC5jYWxsKGEsbCksbC5wcm9ncmVzcyhsLm9wdHMucHJvZ3Jlc3MpLmRvbmUobC5vcHRzLmRvbmUsbC5vcHRzLmNvbXBsZXRlKS5mYWlsKGwub3B0cy5mYWlsKS5hbHdheXMobC5vcHRzLmFsd2F5cyksZC5meC50aW1lcihkLmV4dGVuZChtLHtlbGVtOmEsYW5pbTpsLHF1ZXVlOmwub3B0cy5xdWV1ZX0pKSxsfWZ1bmN0aW9uIEMoYSl7cmV0dXJuKGEubWF0Y2goTGEpfHxbXSkuam9pbigiICIpfWZ1bmN0aW9uIEgoYSl7cmV0dXJuIGEuZ2V0QXR0cmlidXRlJiZhLmdldEF0dHJpYnV0ZSgiY2xhc3MiKXx8IiJ9ZnVuY3Rpb24gUChhKXtyZXR1cm4gQXJyYXkuaXNBcnJheShhKT8KYToic3RyaW5nIj09dHlwZW9mIGEmJmEubWF0Y2goTGEpfHxbXX1mdW5jdGlvbiBlYShhLGIsYyxlKXt2YXIgZjtpZihBcnJheS5pc0FycmF5KGIpKWQuZWFjaChiLGZ1bmN0aW9uKGcsaCl7Y3x8VWMudGVzdChhKT9lKGEsaCk6ZWEoYSsiWyIrKCJvYmplY3QiPT10eXBlb2YgaCYmbnVsbCE9aD9nOiIiKSsiXSIsaCxjLGUpfSk7ZWxzZSBpZihjfHwib2JqZWN0IiE9PVUoYikpZShhLGIpO2Vsc2UgZm9yKGYgaW4gYillYShhKyJbIitmKyJdIixiW2ZdLGMsZSl9ZnVuY3Rpb24gUWEoYSl7cmV0dXJuIGZ1bmN0aW9uKGIsYyl7InN0cmluZyIhPXR5cGVvZiBiJiYoYz1iLGI9IioiKTt2YXIgZT0wLGY9Yi50b0xvd2VyQ2FzZSgpLm1hdGNoKExhKXx8W107aWYoTShjKSlmb3IoO2I9ZltlKytdOykiKyI9PT1iWzBdPyhiPWIuc2xpY2UoMSl8fCIqIiwoYVtiXT1hW2JdfHxbXSkudW5zaGlmdChjKSk6KGFbYl09YVtiXXx8W10pLnB1c2goYyl9fWZ1bmN0aW9uIEViKGEsYixjLGUpe2Z1bmN0aW9uIGYobSl7dmFyIGw7CnJldHVybiBnW21dPSEwLGQuZWFjaChhW21dfHxbXSxmdW5jdGlvbih0LHcpe3Q9dyhiLGMsZSk7cmV0dXJuInN0cmluZyIhPXR5cGVvZiB0fHxofHxnW3RdP2g\/IShsPXQpOnZvaWQgMDooYi5kYXRhVHlwZXMudW5zaGlmdCh0KSxmKHQpLCExKX0pLGx9dmFyIGc9e30saD1hPT09Y2M7cmV0dXJuIGYoYi5kYXRhVHlwZXNbMF0pfHwhZ1siKiJdJiZmKCIqIil9ZnVuY3Rpb24gaGIoYSxiKXt2YXIgYyxlLGY9ZC5hamF4U2V0dGluZ3MuZmxhdE9wdGlvbnN8fHt9O2ZvcihjIGluIGIpdm9pZCAwIT09YltjXSYmKChmW2NdP2E6ZXx8KGU9e30pKVtjXT1iW2NdKTtyZXR1cm4gZSYmZC5leHRlbmQoITAsYSxlKSxhfXZhciBvYT1bXSxzYz1PYmplY3QuZ2V0UHJvdG90eXBlT2YseWE9b2Euc2xpY2Usb2M9b2EuZmxhdD9mdW5jdGlvbihhKXtyZXR1cm4gb2EuZmxhdC5jYWxsKGEpfTpmdW5jdGlvbihhKXtyZXR1cm4gb2EuY29uY2F0LmFwcGx5KFtdLGEpfSx1Yj1vYS5wdXNoLE5hPW9hLmluZGV4T2YsCk1iPXt9LGtjPU1iLnRvU3RyaW5nLEZiPU1iLmhhc093blByb3BlcnR5LHRjPUZiLnRvU3RyaW5nLFZjPXRjLmNhbGwoT2JqZWN0KSxOPXt9LE09ZnVuY3Rpb24oYSl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGEmJiJudW1iZXIiIT10eXBlb2YgYS5ub2RlVHlwZSYmImZ1bmN0aW9uIiE9dHlwZW9mIGEuaXRlbX0sa2I9ZnVuY3Rpb24oYSl7cmV0dXJuIG51bGwhPWEmJmE9PT1hLndpbmRvd30sTD1uLmRvY3VtZW50LExjPXt0eXBlOiEwLHNyYzohMCxub25jZTohMCxub01vZHVsZTohMH0sV2M9L0hUTUwkL2ksZD1mdW5jdGlvbihhLGIpe3JldHVybiBuZXcgZC5mbi5pbml0KGEsYil9O2QuZm49ZC5wcm90b3R5cGU9e2pxdWVyeToiMy43LjAiLGNvbnN0cnVjdG9yOmQsbGVuZ3RoOjAsdG9BcnJheTpmdW5jdGlvbigpe3JldHVybiB5YS5jYWxsKHRoaXMpfSxnZXQ6ZnVuY3Rpb24oYSl7cmV0dXJuIG51bGw9PWE\/eWEuY2FsbCh0aGlzKTowPmE\/dGhpc1thK3RoaXMubGVuZ3RoXTp0aGlzW2FdfSwKcHVzaFN0YWNrOmZ1bmN0aW9uKGEpe2E9ZC5tZXJnZSh0aGlzLmNvbnN0cnVjdG9yKCksYSk7cmV0dXJuIGEucHJldk9iamVjdD10aGlzLGF9LGVhY2g6ZnVuY3Rpb24oYSl7cmV0dXJuIGQuZWFjaCh0aGlzLGEpfSxtYXA6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKGQubWFwKHRoaXMsZnVuY3Rpb24oYixjKXtyZXR1cm4gYS5jYWxsKGIsYyxiKX0pKX0sc2xpY2U6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soeWEuYXBwbHkodGhpcyxhcmd1bWVudHMpKX0sZmlyc3Q6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lcSgwKX0sbGFzdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVxKC0xKX0sZXZlbjpmdW5jdGlvbigpe3JldHVybiB0aGlzLnB1c2hTdGFjayhkLmdyZXAodGhpcyxmdW5jdGlvbihhLGIpe3JldHVybihiKzEpJTJ9KSl9LG9kZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnB1c2hTdGFjayhkLmdyZXAodGhpcyxmdW5jdGlvbihhLGIpe3JldHVybiBiJQoyfSkpfSxlcTpmdW5jdGlvbihhKXt2YXIgYj10aGlzLmxlbmd0aDthPSthKygwPmE\/YjowKTtyZXR1cm4gdGhpcy5wdXNoU3RhY2soMDw9YSYmYTxiP1t0aGlzW2FdXTpbXSl9LGVuZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnByZXZPYmplY3R8fHRoaXMuY29uc3RydWN0b3IoKX0scHVzaDp1Yixzb3J0Om9hLnNvcnQsc3BsaWNlOm9hLnNwbGljZX07ZC5leHRlbmQ9ZC5mbi5leHRlbmQ9ZnVuY3Rpb24oKXt2YXIgYSxiLGMsZSxmLGc9YXJndW1lbnRzWzBdfHx7fSxoPTEsbT1hcmd1bWVudHMubGVuZ3RoLGw9ITE7ImJvb2xlYW4iPT10eXBlb2YgZyYmKGw9ZyxnPWFyZ3VtZW50c1toXXx8e30saCsrKTsib2JqZWN0Ij09dHlwZW9mIGd8fE0oZyl8fChnPXt9KTtmb3IoaD09PW0mJihnPXRoaXMsaC0tKTtoPG07aCsrKWlmKG51bGwhPShhPWFyZ3VtZW50c1toXSkpZm9yKGIgaW4gYSl7dmFyIHQ9YVtiXTsiX19wcm90b19fIiE9PWImJmchPT10JiYobCYmdCYmKGQuaXNQbGFpbk9iamVjdCh0KXx8CihlPUFycmF5LmlzQXJyYXkodCkpKT8oYz1nW2JdLGY9ZSYmIUFycmF5LmlzQXJyYXkoYyk\/W106ZXx8ZC5pc1BsYWluT2JqZWN0KGMpP2M6e30sZT0hMSxnW2JdPWQuZXh0ZW5kKGwsZix0KSk6dm9pZCAwIT09dCYmKGdbYl09dCkpfXJldHVybiBnfTtkLmV4dGVuZCh7ZXhwYW5kbzoialF1ZXJ5IisoIjMuNy4wIitNYXRoLnJhbmRvbSgpKS5yZXBsYWNlKC9cRC9nLCIiKSxpc1JlYWR5OiEwLGVycm9yOmZ1bmN0aW9uKGEpe3Rocm93IEVycm9yKGEpO30sbm9vcDpmdW5jdGlvbigpe30saXNQbGFpbk9iamVjdDpmdW5jdGlvbihhKXt2YXIgYixjO3JldHVybiEoIWF8fCJbb2JqZWN0IE9iamVjdF0iIT09a2MuY2FsbChhKSkmJighKGI9c2MoYSkpfHwiZnVuY3Rpb24iPT10eXBlb2YoYz1GYi5jYWxsKGIsImNvbnN0cnVjdG9yIikmJmIuY29uc3RydWN0b3IpJiZ0Yy5jYWxsKGMpPT09VmMpfSxpc0VtcHR5T2JqZWN0OmZ1bmN0aW9uKGEpe2Zvcih2YXIgYiBpbiBhKXJldHVybiExO3JldHVybiEwfSwKZ2xvYmFsRXZhbDpmdW5jdGlvbihhLGIsYyl7d2EoYSx7bm9uY2U6YiYmYi5ub25jZX0sYyl9LGVhY2g6ZnVuY3Rpb24oYSxiKXt2YXIgYyxlPTA7aWYoZWIoYSkpZm9yKGM9YS5sZW5ndGg7ZTxjJiYhMSE9PWIuY2FsbChhW2VdLGUsYVtlXSk7ZSsrKTtlbHNlIGZvcihlIGluIGEpaWYoITE9PT1iLmNhbGwoYVtlXSxlLGFbZV0pKWJyZWFrO3JldHVybiBhfSx0ZXh0OmZ1bmN0aW9uKGEpe3ZhciBiLGM9IiIsZT0wO2lmKGI9YS5ub2RlVHlwZSl7aWYoMT09PWJ8fDk9PT1ifHwxMT09PWIpcmV0dXJuIGEudGV4dENvbnRlbnQ7aWYoMz09PWJ8fDQ9PT1iKXJldHVybiBhLm5vZGVWYWx1ZX1lbHNlIGZvcig7Yj1hW2UrK107KWMrPWQudGV4dChiKTtyZXR1cm4gY30sbWFrZUFycmF5OmZ1bmN0aW9uKGEsYil7Yj1ifHxbXTtyZXR1cm4gbnVsbCE9YSYmKGViKE9iamVjdChhKSk\/ZC5tZXJnZShiLCJzdHJpbmciPT10eXBlb2YgYT9bYV06YSk6dWIuY2FsbChiLGEpKSxifSxpbkFycmF5OmZ1bmN0aW9uKGEsCmIsYyl7cmV0dXJuIG51bGw9PWI\/LTE6TmEuY2FsbChiLGEsYyl9LGlzWE1MRG9jOmZ1bmN0aW9uKGEpe3ZhciBiPWEmJihhLm93bmVyRG9jdW1lbnR8fGEpLmRvY3VtZW50RWxlbWVudDtyZXR1cm4hV2MudGVzdChhJiZhLm5hbWVzcGFjZVVSSXx8YiYmYi5ub2RlTmFtZXx8IkhUTUwiKX0sbWVyZ2U6ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9K2IubGVuZ3RoLGU9MCxmPWEubGVuZ3RoO2U8YztlKyspYVtmKytdPWJbZV07cmV0dXJuIGEubGVuZ3RoPWYsYX0sZ3JlcDpmdW5jdGlvbihhLGIsYyl7dmFyIGU9W10sZj0wLGc9YS5sZW5ndGg7Zm9yKGM9IWM7ZjxnO2YrKykhYihhW2ZdLGYpIT09YyYmZS5wdXNoKGFbZl0pO3JldHVybiBlfSxtYXA6ZnVuY3Rpb24oYSxiLGMpe3ZhciBlLGYsZz0wLGg9W107aWYoZWIoYSkpZm9yKGU9YS5sZW5ndGg7ZzxlO2crKyludWxsIT0oZj1iKGFbZ10sZyxjKSkmJmgucHVzaChmKTtlbHNlIGZvcihnIGluIGEpbnVsbCE9KGY9YihhW2ddLGcsYykpJiYKaC5wdXNoKGYpO3JldHVybiBvYyhoKX0sZ3VpZDoxLHN1cHBvcnQ6Tn0pOyJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJihkLmZuW1N5bWJvbC5pdGVyYXRvcl09b2FbU3ltYm9sLml0ZXJhdG9yXSk7ZC5lYWNoKCJCb29sZWFuIE51bWJlciBTdHJpbmcgRnVuY3Rpb24gQXJyYXkgRGF0ZSBSZWdFeHAgT2JqZWN0IEVycm9yIFN5bWJvbCIuc3BsaXQoIiAiKSxmdW5jdGlvbihhLGIpe01iWyJbb2JqZWN0ICIrYisiXSJdPWIudG9Mb3dlckNhc2UoKX0pO3ZhciBYYz1vYS5wb3AsWWM9b2Euc29ydCxaYz1vYS5zcGxpY2UsemI9UmVnRXhwKCJeW1xceDIwXFx0XFxyXFxuXFxmXSt8KCg\/Ol58W15cXFxcXSkoPzpcXFxcLikqKVtcXHgyMFxcdFxcclxcblxcZl0rJCIsImciKTtkLmNvbnRhaW5zPWZ1bmN0aW9uKGEsYil7Yj1iJiZiLnBhcmVudE5vZGU7cmV0dXJuIGE9PT1ifHwhKCFifHwxIT09Yi5ub2RlVHlwZXx8IShhLmNvbnRhaW5zP2EuY29udGFpbnMoYik6YS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiYmCjE2JmEuY29tcGFyZURvY3VtZW50UG9zaXRpb24oYikpKX07dmFyICRjPS8oW1wwLVx4MWZceDdmXXxeLT9cZCl8Xi0kfFteXHg4MC1cdUZGRkZcdy1dL2c7ZC5lc2NhcGVTZWxlY3Rvcj1mdW5jdGlvbihhKXtyZXR1cm4oYSsiIikucmVwbGFjZSgkYyxiYSl9O3ZhciBSYT1MOyFmdW5jdGlvbigpe2Z1bmN0aW9uIGEoayxwLHEsdil7dmFyIHksRSxBLEksQj1wJiZwLm93bmVyRG9jdW1lbnQsSj1wP3Aubm9kZVR5cGU6OTtpZihxPXF8fFtdLCJzdHJpbmciIT10eXBlb2Yga3x8IWt8fDEhPT1KJiY5IT09SiYmMTEhPT1KKXJldHVybiBxO2lmKCF2JiYodChwKSxwPXB8fFosdmEpKXtpZigxMSE9PUomJihJPWFkLmV4ZWMoaykpKWlmKHk9SVsxXSlpZig5PT09Sil7aWYoIShFPXAuZ2V0RWxlbWVudEJ5SWQoeSkpKXJldHVybiBxO2lmKEUuaWQ9PT15KXJldHVybiB0YS5jYWxsKHEsRSkscX1lbHNle2lmKEImJihFPUIuZ2V0RWxlbWVudEJ5SWQoeSkpJiZhLmNvbnRhaW5zKHAsRSkmJkUuaWQ9PT0KeSlyZXR1cm4gdGEuY2FsbChxLEUpLHF9ZWxzZXtpZihJWzJdKXJldHVybiB0YS5hcHBseShxLHAuZ2V0RWxlbWVudHNCeVRhZ05hbWUoaykpLHE7aWYoKHk9SVszXSkmJnAuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSlyZXR1cm4gdGEuYXBwbHkocSxwLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoeSkpLHF9aWYoIShZW2srIiAiXXx8a2EmJmthLnRlc3QoaykpKXtpZih5PWssQj1wLDE9PT1KJiYodmIudGVzdChrKXx8SGEudGVzdChrKSkpeyhCPWRjLnRlc3QoaykmJmwocC5wYXJlbnROb2RlKXx8cCk9PXAmJk4uc2NvcGV8fCgoQT1wLmdldEF0dHJpYnV0ZSgiaWQiKSk\/QT1kLmVzY2FwZVNlbGVjdG9yKEEpOnAuc2V0QXR0cmlidXRlKCJpZCIsQT1XKSk7Zm9yKEo9KHk9cihrKSkubGVuZ3RoO0otLTspeVtKXT0oQT8iIyIrQToiOnNjb3BlIikrIiAiK3ooeVtKXSk7eT15LmpvaW4oIiwiKX10cnl7cmV0dXJuIHRhLmFwcGx5KHEsQi5xdWVyeVNlbGVjdG9yQWxsKHkpKSxxfWNhdGNoKFIpe1koaywKITApfWZpbmFsbHl7QT09PVcmJnAucmVtb3ZlQXR0cmlidXRlKCJpZCIpfX19cmV0dXJuIFNhKGsucmVwbGFjZSh6YiwiJDEiKSxwLHEsdil9ZnVuY3Rpb24gYigpe3ZhciBrPVtdO3JldHVybiBmdW5jdGlvbiB5KHEsdil7cmV0dXJuIGsucHVzaChxKyIgIik+Sy5jYWNoZUxlbmd0aCYmZGVsZXRlIHlbay5zaGlmdCgpXSx5W3ErIiAiXT12fX1mdW5jdGlvbiBjKGspe3JldHVybiBrW1ddPSEwLGt9ZnVuY3Rpb24gZShrKXt2YXIgcD1aLmNyZWF0ZUVsZW1lbnQoImZpZWxkc2V0Iik7dHJ5e3JldHVybiEhayhwKX1jYXRjaChxKXtyZXR1cm4hMX1maW5hbGx5e3AucGFyZW50Tm9kZSYmcC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHApfX1mdW5jdGlvbiBmKGspe3JldHVybiBmdW5jdGlvbihwKXtyZXR1cm4gWChwLCJpbnB1dCIpJiZwLnR5cGU9PT1rfX1mdW5jdGlvbiBnKGspe3JldHVybiBmdW5jdGlvbihwKXtyZXR1cm4oWChwLCJpbnB1dCIpfHxYKHAsImJ1dHRvbiIpKSYmcC50eXBlPT09Cmt9fWZ1bmN0aW9uIGgoayl7cmV0dXJuIGZ1bmN0aW9uKHApe3JldHVybiJmb3JtImluIHA\/cC5wYXJlbnROb2RlJiYhMT09PXAuZGlzYWJsZWQ\/ImxhYmVsImluIHA\/ImxhYmVsImluIHAucGFyZW50Tm9kZT9wLnBhcmVudE5vZGUuZGlzYWJsZWQ9PT1rOnAuZGlzYWJsZWQ9PT1rOnAuaXNEaXNhYmxlZD09PWt8fHAuaXNEaXNhYmxlZCE9PSFrJiZiZChwKT09PWs6cC5kaXNhYmxlZD09PWs6ImxhYmVsImluIHAmJnAuZGlzYWJsZWQ9PT1rfX1mdW5jdGlvbiBtKGspe3JldHVybiBjKGZ1bmN0aW9uKHApe3JldHVybiBwPStwLGMoZnVuY3Rpb24ocSx2KXtmb3IodmFyIHksRT1rKFtdLHEubGVuZ3RoLHApLEE9RS5sZW5ndGg7QS0tOylxW3k9RVtBXV0mJihxW3ldPSEodlt5XT1xW3ldKSl9KX0pfWZ1bmN0aW9uIGwoayl7cmV0dXJuIGsmJiJ1bmRlZmluZWQiIT10eXBlb2Ygay5nZXRFbGVtZW50c0J5VGFnTmFtZSYma31mdW5jdGlvbiB0KGspe3ZhciBwO2s9az9rLm93bmVyRG9jdW1lbnR8fAprOlJhO3JldHVybiBrIT1aJiY5PT09ay5ub2RlVHlwZSYmay5kb2N1bWVudEVsZW1lbnQmJihyYT0oWj1rKS5kb2N1bWVudEVsZW1lbnQsdmE9IWQuaXNYTUxEb2MoWiksTWE9cmEubWF0Y2hlc3x8cmEud2Via2l0TWF0Y2hlc1NlbGVjdG9yfHxyYS5tc01hdGNoZXNTZWxlY3RvcixSYSE9WiYmKHA9Wi5kZWZhdWx0VmlldykmJnAudG9wIT09cCYmcC5hZGRFdmVudExpc3RlbmVyKCJ1bmxvYWQiLGNkKSxOLmdldEJ5SWQ9ZShmdW5jdGlvbihxKXtyZXR1cm4gcmEuYXBwZW5kQ2hpbGQocSkuaWQ9ZC5leHBhbmRvLCFaLmdldEVsZW1lbnRzQnlOYW1lfHwhWi5nZXRFbGVtZW50c0J5TmFtZShkLmV4cGFuZG8pLmxlbmd0aH0pLE4uZGlzY29ubmVjdGVkTWF0Y2g9ZShmdW5jdGlvbihxKXtyZXR1cm4gTWEuY2FsbChxLCIqIil9KSxOLnNjb3BlPWUoZnVuY3Rpb24oKXtyZXR1cm4gWi5xdWVyeVNlbGVjdG9yQWxsKCI6c2NvcGUiKX0pLE4uY3NzSGFzPWUoZnVuY3Rpb24oKXt0cnl7cmV0dXJuIFoucXVlcnlTZWxlY3RvcigiOmhhcygqLDpqcWZha2UpIiksCiExfWNhdGNoKHEpe3JldHVybiEwfX0pLE4uZ2V0QnlJZD8oSy5maWx0ZXIuSUQ9ZnVuY3Rpb24ocSl7dmFyIHY9cS5yZXBsYWNlKFRhLFVhKTtyZXR1cm4gZnVuY3Rpb24oeSl7cmV0dXJuIHkuZ2V0QXR0cmlidXRlKCJpZCIpPT09dn19LEsuZmluZC5JRD1mdW5jdGlvbihxLHYpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2Ygdi5nZXRFbGVtZW50QnlJZCYmdmEpcmV0dXJuKHE9di5nZXRFbGVtZW50QnlJZChxKSk\/W3FdOltdfSk6KEsuZmlsdGVyLklEPWZ1bmN0aW9uKHEpe3ZhciB2PXEucmVwbGFjZShUYSxVYSk7cmV0dXJuIGZ1bmN0aW9uKHkpe3JldHVybih5PSJ1bmRlZmluZWQiIT10eXBlb2YgeS5nZXRBdHRyaWJ1dGVOb2RlJiZ5LmdldEF0dHJpYnV0ZU5vZGUoImlkIikpJiZ5LnZhbHVlPT09dn19LEsuZmluZC5JRD1mdW5jdGlvbihxLHYpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2Ygdi5nZXRFbGVtZW50QnlJZCYmdmEpe3ZhciB5LEU9di5nZXRFbGVtZW50QnlJZChxKTtpZihFKXtpZigoeT0KRS5nZXRBdHRyaWJ1dGVOb2RlKCJpZCIpKSYmeS52YWx1ZT09PXEpcmV0dXJuW0VdO3ZhciBBPXYuZ2V0RWxlbWVudHNCeU5hbWUocSk7Zm9yKHY9MDtFPUFbdisrXTspaWYoKHk9RS5nZXRBdHRyaWJ1dGVOb2RlKCJpZCIpKSYmeS52YWx1ZT09PXEpcmV0dXJuW0VdfXJldHVybltdfX0pLEsuZmluZC5UQUc9ZnVuY3Rpb24ocSx2KXtyZXR1cm4idW5kZWZpbmVkIiE9dHlwZW9mIHYuZ2V0RWxlbWVudHNCeVRhZ05hbWU\/di5nZXRFbGVtZW50c0J5VGFnTmFtZShxKTp2LnF1ZXJ5U2VsZWN0b3JBbGwocSl9LEsuZmluZC5DTEFTUz1mdW5jdGlvbihxLHYpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2Ygdi5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lJiZ2YSlyZXR1cm4gdi5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKHEpfSxrYT1bXSxlKGZ1bmN0aW9uKHEpe3ZhciB2O3JhLmFwcGVuZENoaWxkKHEpLmlubmVySFRNTD0iPGEgaWQ9JyIrVysiJyBocmVmPScnIGRpc2FibGVkPSdkaXNhYmxlZCc+PC9hPjxzZWxlY3QgaWQ9JyIrClcrIi1cclxcJyBkaXNhYmxlZD0nZGlzYWJsZWQnPjxvcHRpb24gc2VsZWN0ZWQ9Jyc+PC9vcHRpb24+PC9zZWxlY3Q+IjtxLnF1ZXJ5U2VsZWN0b3JBbGwoIltzZWxlY3RlZF0iKS5sZW5ndGh8fGthLnB1c2goIlxcW1tcXHgyMFxcdFxcclxcblxcZl0qKD86dmFsdWV8Y2hlY2tlZHxzZWxlY3RlZHxhc3luY3xhdXRvZm9jdXN8YXV0b3BsYXl8Y29udHJvbHN8ZGVmZXJ8ZGlzYWJsZWR8aGlkZGVufGlzbWFwfGxvb3B8bXVsdGlwbGV8b3BlbnxyZWFkb25seXxyZXF1aXJlZHxzY29wZWQpIik7cS5xdWVyeVNlbGVjdG9yQWxsKCJbaWR+PSIrVysiLV0iKS5sZW5ndGh8fGthLnB1c2goIn49Iik7cS5xdWVyeVNlbGVjdG9yQWxsKCJhIyIrVysiKyoiKS5sZW5ndGh8fGthLnB1c2goIi4jLitbK35dIik7cS5xdWVyeVNlbGVjdG9yQWxsKCI6Y2hlY2tlZCIpLmxlbmd0aHx8a2EucHVzaCgiOmNoZWNrZWQiKTsodj1aLmNyZWF0ZUVsZW1lbnQoImlucHV0IikpLnNldEF0dHJpYnV0ZSgidHlwZSIsCiJoaWRkZW4iKTtxLmFwcGVuZENoaWxkKHYpLnNldEF0dHJpYnV0ZSgibmFtZSIsIkQiKTtyYS5hcHBlbmRDaGlsZChxKS5kaXNhYmxlZD0hMDsyIT09cS5xdWVyeVNlbGVjdG9yQWxsKCI6ZGlzYWJsZWQiKS5sZW5ndGgmJmthLnB1c2goIjplbmFibGVkIiwiOmRpc2FibGVkIik7KHY9Wi5jcmVhdGVFbGVtZW50KCJpbnB1dCIpKS5zZXRBdHRyaWJ1dGUoIm5hbWUiLCIiKTtxLmFwcGVuZENoaWxkKHYpO3EucXVlcnlTZWxlY3RvckFsbCgiW25hbWU9JyddIikubGVuZ3RofHxrYS5wdXNoKCJcXFtbXFx4MjBcXHRcXHJcXG5cXGZdKm5hbWVbXFx4MjBcXHRcXHJcXG5cXGZdKj1bXFx4MjBcXHRcXHJcXG5cXGZdKig\/OicnfFwiXCIpIil9KSxOLmNzc0hhc3x8a2EucHVzaCgiOmhhcyIpLGthPWthLmxlbmd0aCYmbmV3IFJlZ0V4cChrYS5qb2luKCJ8IikpLGxhPWZ1bmN0aW9uKHEsdil7aWYocT09PXYpcmV0dXJuIGliPSEwLDA7dmFyIHk9IXEuY29tcGFyZURvY3VtZW50UG9zaXRpb24tIXYuY29tcGFyZURvY3VtZW50UG9zaXRpb247CnJldHVybiB5fHwoMSYoeT0ocS5vd25lckRvY3VtZW50fHxxKT09KHYub3duZXJEb2N1bWVudHx8dik\/cS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbih2KToxKXx8IU4uc29ydERldGFjaGVkJiZ2LmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKHEpPT09eT9xPT09Wnx8cS5vd25lckRvY3VtZW50PT1SYSYmYS5jb250YWlucyhSYSxxKT8tMTp2PT09Wnx8di5vd25lckRvY3VtZW50PT1SYSYmYS5jb250YWlucyhSYSx2KT8xOmhhP05hLmNhbGwoaGEscSktTmEuY2FsbChoYSx2KTowOjQmeT8tMToxKX0pLFp9ZnVuY3Rpb24gdygpe31mdW5jdGlvbiByKGsscCl7dmFyIHEsdix5LEUsQSxJO2lmKEE9VmFbaysiICJdKXJldHVybiBwPzA6QS5zbGljZSgwKTtBPWs7dmFyIEI9W107Zm9yKEk9Sy5wcmVGaWx0ZXI7QTspe2ZvcihFIGluIHEmJiEodj1tYS5leGVjKEEpKXx8KHYmJihBPUEuc2xpY2UodlswXS5sZW5ndGgpfHxBKSxCLnB1c2goeT1bXSkpLHE9ITEsKHY9SGEuZXhlYyhBKSkmJihxPQp2LnNoaWZ0KCkseS5wdXNoKHt2YWx1ZTpxLHR5cGU6dlswXS5yZXBsYWNlKHpiLCIgIil9KSxBPUEuc2xpY2UocS5sZW5ndGgpKSxLLmZpbHRlcikhKHY9WWJbRV0uZXhlYyhBKSl8fElbRV0mJiEodj1JW0VdKHYpKXx8KHE9di5zaGlmdCgpLHkucHVzaCh7dmFsdWU6cSx0eXBlOkUsbWF0Y2hlczp2fSksQT1BLnNsaWNlKHEubGVuZ3RoKSk7aWYoIXEpYnJlYWt9cmV0dXJuIHA\/QS5sZW5ndGg6QT9hLmVycm9yKGspOlZhKGssQikuc2xpY2UoMCl9ZnVuY3Rpb24geihrKXtmb3IodmFyIHA9MCxxPWsubGVuZ3RoLHY9IiI7cDxxO3ArKyl2Kz1rW3BdLnZhbHVlO3JldHVybiB2fWZ1bmN0aW9uIEQoayxwLHEpe3ZhciB2PXAuZGlyLHk9cC5uZXh0LEU9eXx8dixBPXEmJiJwYXJlbnROb2RlIj09PUUsST1EYSsrO3JldHVybiBwLmZpcnN0P2Z1bmN0aW9uKEIsSixSKXtmb3IoO0I9Qlt2XTspaWYoMT09PUIubm9kZVR5cGV8fEEpcmV0dXJuIGsoQixKLFIpO3JldHVybiExfTpmdW5jdGlvbihCLApKLFIpe3ZhciBULFYsaWE9W2ZhLEldO2lmKFIpZm9yKDtCPUJbdl07KXtpZigoMT09PUIubm9kZVR5cGV8fEEpJiZrKEIsSixSKSlyZXR1cm4hMH1lbHNlIGZvcig7Qj1CW3ZdOylpZigxPT09Qi5ub2RlVHlwZXx8QSlpZihWPUJbV118fChCW1ddPXt9KSx5JiZYKEIseSkpQj1CW3ZdfHxCO2Vsc2V7aWYoKFQ9VltFXSkmJlRbMF09PT1mYSYmVFsxXT09PUkpcmV0dXJuIGlhWzJdPVRbMl07aWYoKFZbRV09aWEpWzJdPWsoQixKLFIpKXJldHVybiEwfXJldHVybiExfX1mdW5jdGlvbiBGKGspe3JldHVybiAxPGsubGVuZ3RoP2Z1bmN0aW9uKHAscSx2KXtmb3IodmFyIHk9ay5sZW5ndGg7eS0tOylpZigha1t5XShwLHEsdikpcmV0dXJuITE7cmV0dXJuITB9OmtbMF19ZnVuY3Rpb24gTyhrLHAscSx2LHkpe2Zvcih2YXIgRSxBPVtdLEk9MCxCPWsubGVuZ3RoLEo9bnVsbCE9cDtJPEI7SSsrKShFPWtbSV0pJiYocSYmIXEoRSx2LHkpfHwoQS5wdXNoKEUpLEomJnAucHVzaChJKSkpO3JldHVybiBBfQpmdW5jdGlvbiBhYShrLHAscSx2LHksRSl7cmV0dXJuIHYmJiF2W1ddJiYodj1hYSh2KSkseSYmIXlbV10mJih5PWFhKHksRSkpLGMoZnVuY3Rpb24oQSxJLEIsSil7dmFyIFIsVCxWPVtdLGlhPVtdLHBhPUkubGVuZ3RoLG5hO2lmKCEobmE9QSkpe25hPXB8fCIqIjtmb3IodmFyIEVhPUIubm9kZVR5cGU\/W0JdOkIsY2E9W10sQWE9MCxXYT1FYS5sZW5ndGg7QWE8V2E7QWErKylhKG5hLEVhW0FhXSxjYSk7bmE9Y2F9bmE9IWt8fCFBJiZwP25hOk8obmEsVixrLEIsSik7aWYocT9xKG5hLFQ9eXx8KEE\/azpwYXx8dik\/W106SSxCLEopOlQ9bmEsdil7dmFyIEZhPU8oVCxpYSk7dihGYSxbXSxCLEopO2ZvcihCPUZhLmxlbmd0aDtCLS07KShSPUZhW0JdKSYmKFRbaWFbQl1dPSEobmFbaWFbQl1dPVIpKX1pZihBKXtpZih5fHxrKXtpZih5KXtGYT1bXTtmb3IoQj1ULmxlbmd0aDtCLS07KShSPVRbQl0pJiZGYS5wdXNoKG5hW0JdPVIpO3kobnVsbCxUPVtdLEZhLEopfWZvcihCPVQubGVuZ3RoO0ItLTspKFI9ClRbQl0pJiYtMTwoRmE9eT9OYS5jYWxsKEEsUik6VltCXSkmJihBW0ZhXT0hKElbRmFdPVIpKX19ZWxzZSBUPU8oVD09PUk\/VC5zcGxpY2UocGEsVC5sZW5ndGgpOlQpLHk\/eShudWxsLEksVCxKKTp0YS5hcHBseShJLFQpfSl9ZnVuY3Rpb24gR2Eoayl7Zm9yKHZhciBwLHEsdj1rLmxlbmd0aCx5PUsucmVsYXRpdmVba1swXS50eXBlXSxFPXl8fEsucmVsYXRpdmVbIiAiXSxBPXk\/MTowLEk9RChmdW5jdGlvbihSKXtyZXR1cm4gUj09PXB9LEUsITApLEI9RChmdW5jdGlvbihSKXtyZXR1cm4tMTxOYS5jYWxsKHAsUil9LEUsITApLEo9W2Z1bmN0aW9uKFIsVCxWKXtSPSF5JiYoVnx8VCE9Uyl8fCgocD1UKS5ub2RlVHlwZT9JKFIsVCxWKTpCKFIsVCxWKSk7cmV0dXJuIHA9bnVsbCxSfV07QTx2O0ErKylpZihFPUsucmVsYXRpdmVba1tBXS50eXBlXSlKPVtEKEYoSiksRSldO2Vsc2V7aWYoKEU9Sy5maWx0ZXJba1tBXS50eXBlXS5hcHBseShudWxsLGtbQV0ubWF0Y2hlcykpW1ddKXtmb3IocT0KKytBO3E8diYmIUsucmVsYXRpdmVba1txXS50eXBlXTtxKyspO3JldHVybiBhYSgxPEEmJkYoSiksMTxBJiZ6KGsuc2xpY2UoMCxBLTEpLmNvbmNhdCh7dmFsdWU6IiAiPT09a1tBLTJdLnR5cGU\/IioiOiIifSkpLnJlcGxhY2UoemIsIiQxIiksRSxBPHEmJkdhKGsuc2xpY2UoQSxxKSkscTx2JiZHYShrPWsuc2xpY2UocSkpLHE8diYmeihrKSl9Si5wdXNoKEUpfXJldHVybiBGKEopfWZ1bmN0aW9uIHFhKGsscCl7dmFyIHEsdix5LEUsQT1bXSxJPVtdLEI9dWFbaysiICJdO2lmKCFCKXtwfHwocD1yKGspKTtmb3IocT1wLmxlbmd0aDtxLS07KShCPUdhKHBbcV0pKVtXXT9BLnB1c2goQik6SS5wdXNoKEIpOyhCPXVhKGssKHY9MDxBLmxlbmd0aCx5PTA8SS5sZW5ndGgsRT1mdW5jdGlvbihKLFIsVCxWLGlhKXt2YXIgcGEsbmEsRWE9MCxjYT0iMCIsQWE9SiYmW10sV2E9W10sRmE9Uyx1Yz1KfHx5JiZLLmZpbmQuVEFHKCIqIixpYSksdmM9ZmErPW51bGw9PUZhPzE6TWF0aC5yYW5kb20oKXx8Ci4xLGRkPXVjLmxlbmd0aDtmb3IoaWEmJihTPVI9PVp8fFJ8fGlhKTtjYSE9PWRkJiZudWxsIT0ocGE9dWNbY2FdKTtjYSsrKXtpZih5JiZwYSl7dmFyIGVjPTA7Zm9yKFJ8fHBhLm93bmVyRG9jdW1lbnQ9PVp8fCh0KHBhKSxUPSF2YSk7bmE9SVtlYysrXTspaWYobmEocGEsUnx8WixUKSl7dGEuY2FsbChWLHBhKTticmVha31pYSYmKGZhPXZjKX12JiYoKHBhPSFuYSYmcGEpJiZFYS0tLEomJkFhLnB1c2gocGEpKX1pZihFYSs9Y2EsdiYmY2EhPT1FYSl7Zm9yKGVjPTA7bmE9QVtlYysrXTspbmEoQWEsV2EsUixUKTtpZihKKXtpZigwPEVhKWZvcig7Y2EtLTspQWFbY2FdfHxXYVtjYV18fChXYVtjYV09WGMuY2FsbChWKSk7V2E9TyhXYSl9dGEuYXBwbHkoVixXYSk7aWEmJiFKJiYwPFdhLmxlbmd0aCYmMTxFYStBLmxlbmd0aCYmZC51bmlxdWVTb3J0KFYpfXJldHVybiBpYSYmKGZhPXZjLFM9RmEpLEFhfSx2P2MoRSk6RSkpKS5zZWxlY3Rvcj1rfXJldHVybiBCfWZ1bmN0aW9uIFNhKGssCnAscSx2KXt2YXIgeSxFLEEsSSxCLEo9ImZ1bmN0aW9uIj09dHlwZW9mIGsmJmssUj0hdiYmcihrPUouc2VsZWN0b3J8fGspO2lmKHE9cXx8W10sMT09PVIubGVuZ3RoKXtpZigyPChFPVJbMF09UlswXS5zbGljZSgwKSkubGVuZ3RoJiYiSUQiPT09KEE9RVswXSkudHlwZSYmOT09PXAubm9kZVR5cGUmJnZhJiZLLnJlbGF0aXZlW0VbMV0udHlwZV0pe2lmKCEocD0oSy5maW5kLklEKEEubWF0Y2hlc1swXS5yZXBsYWNlKFRhLFVhKSxwKXx8W10pWzBdKSlyZXR1cm4gcTtKJiYocD1wLnBhcmVudE5vZGUpO2s9ay5zbGljZShFLnNoaWZ0KCkudmFsdWUubGVuZ3RoKX1mb3IoeT1ZYi5uZWVkc0NvbnRleHQudGVzdChrKT8wOkUubGVuZ3RoO3ktLSYmKEE9RVt5XSwhSy5yZWxhdGl2ZVtJPUEudHlwZV0pOylpZigoQj1LLmZpbmRbSV0pJiYodj1CKEEubWF0Y2hlc1swXS5yZXBsYWNlKFRhLFVhKSxkYy50ZXN0KEVbMF0udHlwZSkmJmwocC5wYXJlbnROb2RlKXx8cCkpKXtpZihFLnNwbGljZSh5LAoxKSwhKGs9di5sZW5ndGgmJnooRSkpKXJldHVybiB0YS5hcHBseShxLHYpLHE7YnJlYWt9fXJldHVybihKfHxxYShrLFIpKSh2LHAsIXZhLHEsIXB8fGRjLnRlc3QoaykmJmwocC5wYXJlbnROb2RlKXx8cCkscX12YXIgUSxLLFMsaGEsaWIsWixyYSx2YSxrYSxNYSx0YT11YixXPWQuZXhwYW5kbyxmYT0wLERhPTAsZGI9YigpLFZhPWIoKSx1YT1iKCksWT1iKCksbGE9ZnVuY3Rpb24oayxwKXtyZXR1cm4gaz09PXAmJihpYj0hMCksMH0sSWE9UmVnRXhwKCJbXFx4MjBcXHRcXHJcXG5cXGZdKyIsImciKSxtYT1SZWdFeHAoIl5bXFx4MjBcXHRcXHJcXG5cXGZdKixbXFx4MjBcXHRcXHJcXG5cXGZdKiIpLEhhPVJlZ0V4cCgiXltcXHgyMFxcdFxcclxcblxcZl0qKFs+K35dfFtcXHgyMFxcdFxcclxcblxcZl0pW1xceDIwXFx0XFxyXFxuXFxmXSoiKSx2Yj1SZWdFeHAoIltcXHgyMFxcdFxcclxcblxcZl18PiIpLGZjPVJlZ0V4cCgiOigoPzpcXFxcW1xcZGEtZkEtRl17MSw2fVtcXHgyMFxcdFxcclxcblxcZl0\/fFxcXFxbXlxcclxcblxcZl18W1xcdy1dfFteXHgwMC1cXHg3Zl0pKykoPzpcXCgoKCcoKD86XFxcXC58W15cXFxcJ10pKiknfFwiKCg\/OlxcXFwufFteXFxcXFwiXSkqKVwiKXwoKD86XFxcXC58W15cXFxcKClbXFxdXXxcXFtbXFx4MjBcXHRcXHJcXG5cXGZdKigoPzpcXFxcW1xcZGEtZkEtRl17MSw2fVtcXHgyMFxcdFxcclxcblxcZl0\/fFxcXFxbXlxcclxcblxcZl18W1xcdy1dfFteXHgwMC1cXHg3Zl0pKykoPzpbXFx4MjBcXHRcXHJcXG5cXGZdKihbKl4kfCF+XT89KVtcXHgyMFxcdFxcclxcblxcZl0qKD86JygoPzpcXFxcLnxbXlxcXFwnXSkqKSd8XCIoKD86XFxcXC58W15cXFxcXCJdKSopXCJ8KCg\/OlxcXFxbXFxkYS1mQS1GXXsxLDZ9W1xceDIwXFx0XFxyXFxuXFxmXT98XFxcXFteXFxyXFxuXFxmXXxbXFx3LV18W15ceDAwLVxceDdmXSkrKSl8KVtcXHgyMFxcdFxcclxcblxcZl0qXFxdKSopfC4qKVxcKXwpIiksCmVkPVJlZ0V4cCgiXig\/OlxcXFxbXFxkYS1mQS1GXXsxLDZ9W1xceDIwXFx0XFxyXFxuXFxmXT98XFxcXFteXFxyXFxuXFxmXXxbXFx3LV18W15ceDAwLVxceDdmXSkrJCIpLFliPXtJRDpSZWdFeHAoIl4jKCg\/OlxcXFxbXFxkYS1mQS1GXXsxLDZ9W1xceDIwXFx0XFxyXFxuXFxmXT98XFxcXFteXFxyXFxuXFxmXXxbXFx3LV18W15ceDAwLVxceDdmXSkrKSIpLENMQVNTOlJlZ0V4cCgiXlxcLigoPzpcXFxcW1xcZGEtZkEtRl17MSw2fVtcXHgyMFxcdFxcclxcblxcZl0\/fFxcXFxbXlxcclxcblxcZl18W1xcdy1dfFteXHgwMC1cXHg3Zl0pKykiKSxUQUc6UmVnRXhwKCJeKCg\/OlxcXFxbXFxkYS1mQS1GXXsxLDZ9W1xceDIwXFx0XFxyXFxuXFxmXT98XFxcXFteXFxyXFxuXFxmXXxbXFx3LV18W15ceDAwLVxceDdmXSkrfFsqXSkiKSxBVFRSOlJlZ0V4cCgiXlxcW1tcXHgyMFxcdFxcclxcblxcZl0qKCg\/OlxcXFxbXFxkYS1mQS1GXXsxLDZ9W1xceDIwXFx0XFxyXFxuXFxmXT98XFxcXFteXFxyXFxuXFxmXXxbXFx3LV18W15ceDAwLVxceDdmXSkrKSg\/OltcXHgyMFxcdFxcclxcblxcZl0qKFsqXiR8IX5dPz0pW1xceDIwXFx0XFxyXFxuXFxmXSooPzonKCg\/OlxcXFwufFteXFxcXCddKSopJ3xcIigoPzpcXFxcLnxbXlxcXFxcIl0pKilcInwoKD86XFxcXFtcXGRhLWZBLUZdezEsNn1bXFx4MjBcXHRcXHJcXG5cXGZdP3xcXFxcW15cXHJcXG5cXGZdfFtcXHctXXxbXlx4MDAtXFx4N2ZdKSspKXwpW1xceDIwXFx0XFxyXFxuXFxmXSpcXF0iKSwKUFNFVURPOlJlZ0V4cCgiXjooKD86XFxcXFtcXGRhLWZBLUZdezEsNn1bXFx4MjBcXHRcXHJcXG5cXGZdP3xcXFxcW15cXHJcXG5cXGZdfFtcXHctXXxbXlx4MDAtXFx4N2ZdKSspKD86XFwoKCgnKCg\/OlxcXFwufFteXFxcXCddKSopJ3xcIigoPzpcXFxcLnxbXlxcXFxcIl0pKilcIil8KCg\/OlxcXFwufFteXFxcXCgpW1xcXV18XFxbW1xceDIwXFx0XFxyXFxuXFxmXSooKD86XFxcXFtcXGRhLWZBLUZdezEsNn1bXFx4MjBcXHRcXHJcXG5cXGZdP3xcXFxcW15cXHJcXG5cXGZdfFtcXHctXXxbXlx4MDAtXFx4N2ZdKSspKD86W1xceDIwXFx0XFxyXFxuXFxmXSooWypeJHwhfl0\/PSlbXFx4MjBcXHRcXHJcXG5cXGZdKig\/OicoKD86XFxcXC58W15cXFxcJ10pKiknfFwiKCg\/OlxcXFwufFteXFxcXFwiXSkqKVwifCgoPzpcXFxcW1xcZGEtZkEtRl17MSw2fVtcXHgyMFxcdFxcclxcblxcZl0\/fFxcXFxbXlxcclxcblxcZl18W1xcdy1dfFteXHgwMC1cXHg3Zl0pKykpfClbXFx4MjBcXHRcXHJcXG5cXGZdKlxcXSkqKXwuKilcXCl8KSIpLApDSElMRDpSZWdFeHAoIl46KG9ubHl8Zmlyc3R8bGFzdHxudGh8bnRoLWxhc3QpLShjaGlsZHxvZi10eXBlKSg\/OlxcKFtcXHgyMFxcdFxcclxcblxcZl0qKGV2ZW58b2RkfCgoWystXXwpKFxcZCopbnwpW1xceDIwXFx0XFxyXFxuXFxmXSooPzooWystXXwpW1xceDIwXFx0XFxyXFxuXFxmXSooXFxkKyl8KSlbXFx4MjBcXHRcXHJcXG5cXGZdKlxcKXwpIiwiaSIpLGJvb2w6UmVnRXhwKCJeKD86Y2hlY2tlZHxzZWxlY3RlZHxhc3luY3xhdXRvZm9jdXN8YXV0b3BsYXl8Y29udHJvbHN8ZGVmZXJ8ZGlzYWJsZWR8aGlkZGVufGlzbWFwfGxvb3B8bXVsdGlwbGV8b3BlbnxyZWFkb25seXxyZXF1aXJlZHxzY29wZWQpJCIsImkiKSxuZWVkc0NvbnRleHQ6UmVnRXhwKCJeW1xceDIwXFx0XFxyXFxuXFxmXSpbPit+XXw6KGV2ZW58b2RkfGVxfGd0fGx0fG50aHxmaXJzdHxsYXN0KSg\/OlxcKFtcXHgyMFxcdFxcclxcblxcZl0qKCg\/Oi1cXGQpP1xcZCopW1xceDIwXFx0XFxyXFxuXFxmXSpcXCl8KSg\/PVteLV18JCkiLAoiaSIpfSxmZD0vXig\/OmlucHV0fHNlbGVjdHx0ZXh0YXJlYXxidXR0b24pJC9pLGdkPS9eaFxkJC9pLGFkPS9eKD86IyhbXHctXSspfChcdyspfFwuKFtcdy1dKykpJC8sZGM9L1srfl0vLFRhPVJlZ0V4cCgiXFxcXFtcXGRhLWZBLUZdezEsNn1bXFx4MjBcXHRcXHJcXG5cXGZdP3xcXFxcKFteXFxyXFxuXFxmXSkiLCJnIiksVWE9ZnVuY3Rpb24oayxwKXtrPSIweCIray5zbGljZSgxKS02NTUzNjtyZXR1cm4gcHx8KDA+az9TdHJpbmcuZnJvbUNoYXJDb2RlKGsrNjU1MzYpOlN0cmluZy5mcm9tQ2hhckNvZGUoaz4+MTB8NTUyOTYsMTAyMyZrfDU2MzIwKSl9LGNkPWZ1bmN0aW9uKCl7dCgpfSxiZD1EKGZ1bmN0aW9uKGspe3JldHVybiEwPT09ay5kaXNhYmxlZCYmWChrLCJmaWVsZHNldCIpfSx7ZGlyOiJwYXJlbnROb2RlIixuZXh0OiJsZWdlbmQifSk7dHJ5e3RhLmFwcGx5KG9hPXlhLmNhbGwoUmEuY2hpbGROb2RlcyksUmEuY2hpbGROb2Rlcyksb2FbUmEuY2hpbGROb2Rlcy5sZW5ndGhdLm5vZGVUeXBlfWNhdGNoKGspe3RhPQp7YXBwbHk6ZnVuY3Rpb24ocCxxKXt1Yi5hcHBseShwLHlhLmNhbGwocSkpfSxjYWxsOmZ1bmN0aW9uKHApe3ViLmFwcGx5KHAseWEuY2FsbChhcmd1bWVudHMsMSkpfX19Zm9yKFEgaW4gYS5tYXRjaGVzPWZ1bmN0aW9uKGsscCl7cmV0dXJuIGEoayxudWxsLG51bGwscCl9LGEubWF0Y2hlc1NlbGVjdG9yPWZ1bmN0aW9uKGsscCl7aWYodChrKSwhKCF2YXx8WVtwKyIgIl18fGthJiZrYS50ZXN0KHApKSl0cnl7dmFyIHE9TWEuY2FsbChrLHApO2lmKHF8fE4uZGlzY29ubmVjdGVkTWF0Y2h8fGsuZG9jdW1lbnQmJjExIT09ay5kb2N1bWVudC5ub2RlVHlwZSlyZXR1cm4gcX1jYXRjaCh2KXtZKHAsITApfXJldHVybiAwPGEocCxaLG51bGwsW2tdKS5sZW5ndGh9LGEuY29udGFpbnM9ZnVuY3Rpb24oayxwKXtyZXR1cm4oay5vd25lckRvY3VtZW50fHxrKSE9WiYmdChrKSxkLmNvbnRhaW5zKGsscCl9LGEuYXR0cj1mdW5jdGlvbihrLHApeyhrLm93bmVyRG9jdW1lbnR8fGspIT1aJiZ0KGspOwp2YXIgcT1LLmF0dHJIYW5kbGVbcC50b0xvd2VyQ2FzZSgpXTtxPXEmJkZiLmNhbGwoSy5hdHRySGFuZGxlLHAudG9Mb3dlckNhc2UoKSk\/cShrLHAsIXZhKTp2b2lkIDA7cmV0dXJuIHZvaWQgMCE9PXE\/cTprLmdldEF0dHJpYnV0ZShwKX0sYS5lcnJvcj1mdW5jdGlvbihrKXt0aHJvdyBFcnJvcigiU3ludGF4IGVycm9yLCB1bnJlY29nbml6ZWQgZXhwcmVzc2lvbjogIitrKTt9LGQudW5pcXVlU29ydD1mdW5jdGlvbihrKXt2YXIgcCxxPVtdLHY9MCx5PTA7aWYoaWI9IU4uc29ydFN0YWJsZSxoYT0hTi5zb3J0U3RhYmxlJiZ5YS5jYWxsKGssMCksWWMuY2FsbChrLGxhKSxpYil7Zm9yKDtwPWtbeSsrXTspcD09PWtbeV0mJih2PXEucHVzaCh5KSk7Zm9yKDt2LS07KVpjLmNhbGwoayxxW3ZdLDEpfXJldHVybiBoYT1udWxsLGt9LGQuZm4udW5pcXVlU29ydD1mdW5jdGlvbigpe3JldHVybiB0aGlzLnB1c2hTdGFjayhkLnVuaXF1ZVNvcnQoeWEuYXBwbHkodGhpcykpKX0sKEs9ZC5leHByPQp7Y2FjaGVMZW5ndGg6NTAsY3JlYXRlUHNldWRvOmMsbWF0Y2g6WWIsYXR0ckhhbmRsZTp7fSxmaW5kOnt9LHJlbGF0aXZlOnsiPiI6e2RpcjoicGFyZW50Tm9kZSIsZmlyc3Q6ITB9LCIgIjp7ZGlyOiJwYXJlbnROb2RlIn0sIisiOntkaXI6InByZXZpb3VzU2libGluZyIsZmlyc3Q6ITB9LCJ+Ijp7ZGlyOiJwcmV2aW91c1NpYmxpbmcifX0scHJlRmlsdGVyOntBVFRSOmZ1bmN0aW9uKGspe3JldHVybiBrWzFdPWtbMV0ucmVwbGFjZShUYSxVYSksa1szXT0oa1szXXx8a1s0XXx8a1s1XXx8IiIpLnJlcGxhY2UoVGEsVWEpLCJ+PSI9PT1rWzJdJiYoa1szXT0iICIra1szXSsiICIpLGsuc2xpY2UoMCw0KX0sQ0hJTEQ6ZnVuY3Rpb24oayl7cmV0dXJuIGtbMV09a1sxXS50b0xvd2VyQ2FzZSgpLCJudGgiPT09a1sxXS5zbGljZSgwLDMpPyhrWzNdfHxhLmVycm9yKGtbMF0pLGtbNF09KyhrWzRdP2tbNV0rKGtbNl18fDEpOjIqKCJldmVuIj09PWtbM118fCJvZGQiPT09a1szXSkpLGtbNV09Cisoa1s3XStrWzhdfHwib2RkIj09PWtbM10pKTprWzNdJiZhLmVycm9yKGtbMF0pLGt9LFBTRVVETzpmdW5jdGlvbihrKXt2YXIgcCxxPSFrWzZdJiZrWzJdO3JldHVybiBZYi5DSElMRC50ZXN0KGtbMF0pP251bGw6KGtbM10\/a1syXT1rWzRdfHxrWzVdfHwiIjpxJiZmYy50ZXN0KHEpJiYocD1yKHEsITApKSYmKHA9cS5pbmRleE9mKCIpIixxLmxlbmd0aC1wKS1xLmxlbmd0aCkmJihrWzBdPWtbMF0uc2xpY2UoMCxwKSxrWzJdPXEuc2xpY2UoMCxwKSksay5zbGljZSgwLDMpKX19LGZpbHRlcjp7VEFHOmZ1bmN0aW9uKGspe3ZhciBwPWsucmVwbGFjZShUYSxVYSkudG9Mb3dlckNhc2UoKTtyZXR1cm4iKiI9PT1rP2Z1bmN0aW9uKCl7cmV0dXJuITB9OmZ1bmN0aW9uKHEpe3JldHVybiBYKHEscCl9fSxDTEFTUzpmdW5jdGlvbihrKXt2YXIgcD1kYltrKyIgIl07cmV0dXJuIHB8fChwPW5ldyBSZWdFeHAoIihefFtcXHgyMFxcdFxcclxcblxcZl0pIitrKyIoW1xceDIwXFx0XFxyXFxuXFxmXXwkKSIpLApkYihrLGZ1bmN0aW9uKHEpe3JldHVybiBwLnRlc3QoInN0cmluZyI9PXR5cGVvZiBxLmNsYXNzTmFtZSYmcS5jbGFzc05hbWV8fCJ1bmRlZmluZWQiIT10eXBlb2YgcS5nZXRBdHRyaWJ1dGUmJnEuZ2V0QXR0cmlidXRlKCJjbGFzcyIpfHwiIil9KSl9LEFUVFI6ZnVuY3Rpb24oayxwLHEpe3JldHVybiBmdW5jdGlvbih2KXt2PWEuYXR0cih2LGspO3JldHVybiBudWxsPT12PyIhPSI9PT1wOiFwfHwodis9IiIsIj0iPT09cD92PT09cToiIT0iPT09cD92IT09cToiXj0iPT09cD9xJiYwPT09di5pbmRleE9mKHEpOiIqPSI9PT1wP3EmJi0xPHYuaW5kZXhPZihxKToiJD0iPT09cD9xJiZ2LnNsaWNlKC1xLmxlbmd0aCk9PT1xOiJ+PSI9PT1wPy0xPCgiICIrdi5yZXBsYWNlKElhLCIgIikrIiAiKS5pbmRleE9mKHEpOiJ8PSI9PT1wJiYodj09PXF8fHYuc2xpY2UoMCxxLmxlbmd0aCsxKT09PXErIi0iKSl9fSxDSElMRDpmdW5jdGlvbihrLHAscSx2LHkpe3ZhciBFPSJudGgiIT09ay5zbGljZSgwLAozKSxBPSJsYXN0IiE9PWsuc2xpY2UoLTQpLEk9Im9mLXR5cGUiPT09cDtyZXR1cm4gMT09PXYmJjA9PT15P2Z1bmN0aW9uKEIpe3JldHVybiEhQi5wYXJlbnROb2RlfTpmdW5jdGlvbihCLEosUil7dmFyIFQsVixpYTtKPUUhPT1BPyJuZXh0U2libGluZyI6InByZXZpb3VzU2libGluZyI7dmFyIHBhPUIucGFyZW50Tm9kZSxuYT1JJiZCLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCksRWE9IVImJiFJLGNhPSExO2lmKHBhKXtpZihFKXtmb3IoO0o7KXtmb3IoVj1CO1Y9VltKXTspaWYoST9YKFYsbmEpOjE9PT1WLm5vZGVUeXBlKXJldHVybiExO3ZhciBBYT1KPSJvbmx5Ij09PWsmJiFBYSYmIm5leHRTaWJsaW5nIn1yZXR1cm4hMH1pZihBYT1bQT9wYS5maXJzdENoaWxkOnBhLmxhc3RDaGlsZF0sQSYmRWEpZm9yKGNhPShpYT0oVD0oUj1wYVtXXXx8KHBhW1ddPXt9KSlba118fFtdKVswXT09PWZhJiZUWzFdKSYmVFsyXSxWPWlhJiZwYS5jaGlsZE5vZGVzW2lhXTtWPSsraWEmJlYmJlZbSl18fAooY2E9aWE9MCl8fEFhLnBvcCgpOyl7aWYoMT09PVYubm9kZVR5cGUmJisrY2EmJlY9PT1CKXtSW2tdPVtmYSxpYSxjYV07YnJlYWt9fWVsc2UgaWYoRWEmJihjYT1pYT0oVD0oQltXXXx8KEJbV109e30pKVtrXXx8W10pWzBdPT09ZmEmJlRbMV0pLCExPT09Y2EpZm9yKDsoVj0rK2lhJiZWJiZWW0pdfHwoY2E9aWE9MCl8fEFhLnBvcCgpKSYmKChJPyFYKFYsbmEpOjEhPT1WLm5vZGVUeXBlKXx8ISsrY2F8fChFYSYmKChSPVZbV118fChWW1ddPXt9KSlba109W2ZhLGNhXSksViE9PUIpKTspO3JldHVybihjYS09eSk9PT12fHwwPT1jYSV2JiYwPD1jYS92fX19LFBTRVVETzpmdW5jdGlvbihrLHApe3ZhciBxLHY9Sy5wc2V1ZG9zW2tdfHxLLnNldEZpbHRlcnNbay50b0xvd2VyQ2FzZSgpXXx8YS5lcnJvcigidW5zdXBwb3J0ZWQgcHNldWRvOiAiK2spO3JldHVybiB2W1ddP3YocCk6MTx2Lmxlbmd0aD8ocT1bayxrLCIiLHBdLEsuc2V0RmlsdGVycy5oYXNPd25Qcm9wZXJ0eShrLnRvTG93ZXJDYXNlKCkpPwpjKGZ1bmN0aW9uKHksRSl7Zm9yKHZhciBBLEk9dih5LHApLEI9SS5sZW5ndGg7Qi0tOyl5W0E9TmEuY2FsbCh5LElbQl0pXT0hKEVbQV09SVtCXSl9KTpmdW5jdGlvbih5KXtyZXR1cm4gdih5LDAscSl9KTp2fX0scHNldWRvczp7bm90OmMoZnVuY3Rpb24oayl7dmFyIHA9W10scT1bXSx2PXFhKGsucmVwbGFjZSh6YiwiJDEiKSk7cmV0dXJuIHZbV10\/YyhmdW5jdGlvbih5LEUsQSxJKXt2YXIgQjtBPXYoeSxudWxsLEksW10pO2ZvcihJPXkubGVuZ3RoO0ktLTspKEI9QVtJXSkmJih5W0ldPSEoRVtJXT1CKSl9KTpmdW5jdGlvbih5LEUsQSl7cmV0dXJuIHBbMF09eSx2KHAsbnVsbCxBLHEpLHBbMF09bnVsbCwhcS5wb3AoKX19KSxoYXM6YyhmdW5jdGlvbihrKXtyZXR1cm4gZnVuY3Rpb24ocCl7cmV0dXJuIDA8YShrLHApLmxlbmd0aH19KSxjb250YWluczpjKGZ1bmN0aW9uKGspe3JldHVybiBrPWsucmVwbGFjZShUYSxVYSksZnVuY3Rpb24ocCl7cmV0dXJuLTE8KHAudGV4dENvbnRlbnR8fApkLnRleHQocCkpLmluZGV4T2Yoayl9fSksbGFuZzpjKGZ1bmN0aW9uKGspe3JldHVybiBlZC50ZXN0KGt8fCIiKXx8YS5lcnJvcigidW5zdXBwb3J0ZWQgbGFuZzogIitrKSxrPWsucmVwbGFjZShUYSxVYSkudG9Mb3dlckNhc2UoKSxmdW5jdGlvbihwKXt2YXIgcTtkbyBpZihxPXZhP3AubGFuZzpwLmdldEF0dHJpYnV0ZSgieG1sOmxhbmciKXx8cC5nZXRBdHRyaWJ1dGUoImxhbmciKSlyZXR1cm4ocT1xLnRvTG93ZXJDYXNlKCkpPT09a3x8MD09PXEuaW5kZXhPZihrKyItIik7d2hpbGUoKHA9cC5wYXJlbnROb2RlKSYmMT09PXAubm9kZVR5cGUpO3JldHVybiExfX0pLHRhcmdldDpmdW5jdGlvbihrKXt2YXIgcD1uLmxvY2F0aW9uJiZuLmxvY2F0aW9uLmhhc2g7cmV0dXJuIHAmJnAuc2xpY2UoMSk9PT1rLmlkfSxyb290OmZ1bmN0aW9uKGspe3JldHVybiBrPT09cmF9LGZvY3VzOmZ1bmN0aW9uKGspe2E6e3RyeXt2YXIgcD1aLmFjdGl2ZUVsZW1lbnQ7YnJlYWsgYX1jYXRjaChxKXt9cD0Kdm9pZCAwfXJldHVybiBrPT09cCYmWi5oYXNGb2N1cygpJiYhIShrLnR5cGV8fGsuaHJlZnx8fmsudGFiSW5kZXgpfSxlbmFibGVkOmgoITEpLGRpc2FibGVkOmgoITApLGNoZWNrZWQ6ZnVuY3Rpb24oayl7cmV0dXJuIFgoaywiaW5wdXQiKSYmISFrLmNoZWNrZWR8fFgoaywib3B0aW9uIikmJiEhay5zZWxlY3RlZH0sc2VsZWN0ZWQ6ZnVuY3Rpb24oayl7cmV0dXJuIGsucGFyZW50Tm9kZSYmay5wYXJlbnROb2RlLnNlbGVjdGVkSW5kZXgsITA9PT1rLnNlbGVjdGVkfSxlbXB0eTpmdW5jdGlvbihrKXtmb3Ioaz1rLmZpcnN0Q2hpbGQ7aztrPWsubmV4dFNpYmxpbmcpaWYoNj5rLm5vZGVUeXBlKXJldHVybiExO3JldHVybiEwfSxwYXJlbnQ6ZnVuY3Rpb24oayl7cmV0dXJuIUsucHNldWRvcy5lbXB0eShrKX0saGVhZGVyOmZ1bmN0aW9uKGspe3JldHVybiBnZC50ZXN0KGsubm9kZU5hbWUpfSxpbnB1dDpmdW5jdGlvbihrKXtyZXR1cm4gZmQudGVzdChrLm5vZGVOYW1lKX0sYnV0dG9uOmZ1bmN0aW9uKGspe3JldHVybiBYKGssCiJpbnB1dCIpJiYiYnV0dG9uIj09PWsudHlwZXx8WChrLCJidXR0b24iKX0sdGV4dDpmdW5jdGlvbihrKXt2YXIgcDtyZXR1cm4gWChrLCJpbnB1dCIpJiYidGV4dCI9PT1rLnR5cGUmJihudWxsPT0ocD1rLmdldEF0dHJpYnV0ZSgidHlwZSIpKXx8InRleHQiPT09cC50b0xvd2VyQ2FzZSgpKX0sZmlyc3Q6bShmdW5jdGlvbigpe3JldHVyblswXX0pLGxhc3Q6bShmdW5jdGlvbihrLHApe3JldHVybltwLTFdfSksZXE6bShmdW5jdGlvbihrLHAscSl7cmV0dXJuWzA+cT9xK3A6cV19KSxldmVuOm0oZnVuY3Rpb24oayxwKXtmb3IodmFyIHE9MDtxPHA7cSs9MilrLnB1c2gocSk7cmV0dXJuIGt9KSxvZGQ6bShmdW5jdGlvbihrLHApe2Zvcih2YXIgcT0xO3E8cDtxKz0yKWsucHVzaChxKTtyZXR1cm4ga30pLGx0Om0oZnVuY3Rpb24oayxwLHEpe2ZvcihwPTA+cT9xK3A6cDxxP3A6cTswPD0tLXA7KWsucHVzaChwKTtyZXR1cm4ga30pLGd0Om0oZnVuY3Rpb24oayxwLHEpe2ZvcihxPTA+cT8KcStwOnE7KytxPHA7KWsucHVzaChxKTtyZXR1cm4ga30pfX0pLnBzZXVkb3MubnRoPUsucHNldWRvcy5lcSx7cmFkaW86ITAsY2hlY2tib3g6ITAsZmlsZTohMCxwYXNzd29yZDohMCxpbWFnZTohMH0pSy5wc2V1ZG9zW1FdPWYoUSk7Zm9yKFEgaW57c3VibWl0OiEwLHJlc2V0OiEwfSlLLnBzZXVkb3NbUV09ZyhRKTt3LnByb3RvdHlwZT1LLmZpbHRlcnM9Sy5wc2V1ZG9zO0suc2V0RmlsdGVycz1uZXcgdztOLnNvcnRTdGFibGU9Vy5zcGxpdCgiIikuc29ydChsYSkuam9pbigiIik9PT1XO3QoKTtOLnNvcnREZXRhY2hlZD1lKGZ1bmN0aW9uKGspe3JldHVybiAxJmsuY29tcGFyZURvY3VtZW50UG9zaXRpb24oWi5jcmVhdGVFbGVtZW50KCJmaWVsZHNldCIpKX0pO2QuZmluZD1hO2QuZXhwclsiOiJdPWQuZXhwci5wc2V1ZG9zO2QudW5pcXVlPWQudW5pcXVlU29ydDthLmNvbXBpbGU9cWE7YS5zZWxlY3Q9U2E7YS5zZXREb2N1bWVudD10O2EuZXNjYXBlPWQuZXNjYXBlU2VsZWN0b3I7CmEuZ2V0VGV4dD1kLnRleHQ7YS5pc1hNTD1kLmlzWE1MRG9jO2Euc2VsZWN0b3JzPWQuZXhwcjthLnN1cHBvcnQ9ZC5zdXBwb3J0O2EudW5pcXVlU29ydD1kLnVuaXF1ZVNvcnR9KCk7dmFyIHdiPWZ1bmN0aW9uKGEsYixjKXtmb3IodmFyIGU9W10sZj12b2lkIDAhPT1jOyhhPWFbYl0pJiY5IT09YS5ub2RlVHlwZTspaWYoMT09PWEubm9kZVR5cGUpe2lmKGYmJmQoYSkuaXMoYykpYnJlYWs7ZS5wdXNoKGEpfXJldHVybiBlfSx3Yz1mdW5jdGlvbihhLGIpe2Zvcih2YXIgYz1bXTthO2E9YS5uZXh0U2libGluZykxPT09YS5ub2RlVHlwZSYmYSE9PWImJmMucHVzaChhKTtyZXR1cm4gY30seGM9ZC5leHByLm1hdGNoLm5lZWRzQ29udGV4dCx5Yz0vXjwoW2Etel1bXlwvXDA+Olx4MjBcdFxyXG5cZl0qKVtceDIwXHRcclxuXGZdKlwvPz4oPzo8XC9cMT58KSQvaTtkLmZpbHRlcj1mdW5jdGlvbihhLGIsYyl7dmFyIGU9YlswXTtyZXR1cm4gYyYmKGE9Ijpub3QoIithKyIpIiksMT09PWIubGVuZ3RoJiYKMT09PWUubm9kZVR5cGU\/ZC5maW5kLm1hdGNoZXNTZWxlY3RvcihlLGEpP1tlXTpbXTpkLmZpbmQubWF0Y2hlcyhhLGQuZ3JlcChiLGZ1bmN0aW9uKGYpe3JldHVybiAxPT09Zi5ub2RlVHlwZX0pKX07ZC5mbi5leHRlbmQoe2ZpbmQ6ZnVuY3Rpb24oYSl7dmFyIGIsYz10aGlzLmxlbmd0aCxlPXRoaXM7aWYoInN0cmluZyIhPXR5cGVvZiBhKXJldHVybiB0aGlzLnB1c2hTdGFjayhkKGEpLmZpbHRlcihmdW5jdGlvbigpe2ZvcihiPTA7YjxjO2IrKylpZihkLmNvbnRhaW5zKGVbYl0sdGhpcykpcmV0dXJuITB9KSk7dmFyIGY9dGhpcy5wdXNoU3RhY2soW10pO2ZvcihiPTA7YjxjO2IrKylkLmZpbmQoYSxlW2JdLGYpO3JldHVybiAxPGM\/ZC51bmlxdWVTb3J0KGYpOmZ9LGZpbHRlcjpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soamEodGhpcyxhfHxbXSwhMSkpfSxub3Q6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKGphKHRoaXMsYXx8W10sITApKX0saXM6ZnVuY3Rpb24oYSl7cmV0dXJuISFqYSh0aGlzLAoic3RyaW5nIj09dHlwZW9mIGEmJnhjLnRlc3QoYSk\/ZChhKTphfHxbXSwhMSkubGVuZ3RofX0pO3ZhciBoZD0vXig\/OlxzKig8W1x3XFddKz4pW14+XSp8IyhbXHctXSspKSQvOyhkLmZuLmluaXQ9ZnVuY3Rpb24oYSxiLGMpe3ZhciBlLGY7aWYoIWEpcmV0dXJuIHRoaXM7aWYoYz1jfHxpZCwic3RyaW5nIj09dHlwZW9mIGEpe2lmKCEoZT0iPCI9PT1hWzBdJiYiPiI9PT1hW2EubGVuZ3RoLTFdJiYzPD1hLmxlbmd0aD9bbnVsbCxhLG51bGxdOmhkLmV4ZWMoYSkpfHwhZVsxXSYmYilyZXR1cm4hYnx8Yi5qcXVlcnk\/KGJ8fGMpLmZpbmQoYSk6dGhpcy5jb25zdHJ1Y3RvcihiKS5maW5kKGEpO2lmKGVbMV0pe2lmKGI9YiBpbnN0YW5jZW9mIGQ\/YlswXTpiLGQubWVyZ2UodGhpcyxkLnBhcnNlSFRNTChlWzFdLGImJmIubm9kZVR5cGU\/Yi5vd25lckRvY3VtZW50fHxiOkwsITApKSx5Yy50ZXN0KGVbMV0pJiZkLmlzUGxhaW5PYmplY3QoYikpZm9yKGUgaW4gYilNKHRoaXNbZV0pP3RoaXNbZV0oYltlXSk6CnRoaXMuYXR0cihlLGJbZV0pO3JldHVybiB0aGlzfXJldHVybihmPUwuZ2V0RWxlbWVudEJ5SWQoZVsyXSkpJiYodGhpc1swXT1mLHRoaXMubGVuZ3RoPTEpLHRoaXN9cmV0dXJuIGEubm9kZVR5cGU\/KHRoaXNbMF09YSx0aGlzLmxlbmd0aD0xLHRoaXMpOk0oYSk\/dm9pZCAwIT09Yy5yZWFkeT9jLnJlYWR5KGEpOmEoZCk6ZC5tYWtlQXJyYXkoYSx0aGlzKX0pLnByb3RvdHlwZT1kLmZuO3ZhciBpZD1kKEwpLGpkPS9eKD86cGFyZW50c3xwcmV2KD86VW50aWx8QWxsKSkvLGtkPXtjaGlsZHJlbjohMCxjb250ZW50czohMCxuZXh0OiEwLHByZXY6ITB9O2QuZm4uZXh0ZW5kKHtoYXM6ZnVuY3Rpb24oYSl7dmFyIGI9ZChhLHRoaXMpLGM9Yi5sZW5ndGg7cmV0dXJuIHRoaXMuZmlsdGVyKGZ1bmN0aW9uKCl7Zm9yKHZhciBlPTA7ZTxjO2UrKylpZihkLmNvbnRhaW5zKHRoaXMsYltlXSkpcmV0dXJuITB9KX0sY2xvc2VzdDpmdW5jdGlvbihhLGIpe3ZhciBjLGU9MCxmPXRoaXMubGVuZ3RoLApnPVtdLGg9InN0cmluZyIhPXR5cGVvZiBhJiZkKGEpO2lmKCF4Yy50ZXN0KGEpKWZvcig7ZTxmO2UrKylmb3IoYz10aGlzW2VdO2MmJmMhPT1iO2M9Yy5wYXJlbnROb2RlKWlmKDExPmMubm9kZVR5cGUmJihoPy0xPGguaW5kZXgoYyk6MT09PWMubm9kZVR5cGUmJmQuZmluZC5tYXRjaGVzU2VsZWN0b3IoYyxhKSkpe2cucHVzaChjKTticmVha31yZXR1cm4gdGhpcy5wdXNoU3RhY2soMTxnLmxlbmd0aD9kLnVuaXF1ZVNvcnQoZyk6Zyl9LGluZGV4OmZ1bmN0aW9uKGEpe3JldHVybiBhPyJzdHJpbmciPT10eXBlb2YgYT9OYS5jYWxsKGQoYSksdGhpc1swXSk6TmEuY2FsbCh0aGlzLGEuanF1ZXJ5P2FbMF06YSk6dGhpc1swXSYmdGhpc1swXS5wYXJlbnROb2RlP3RoaXMuZmlyc3QoKS5wcmV2QWxsKCkubGVuZ3RoOi0xfSxhZGQ6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soZC51bmlxdWVTb3J0KGQubWVyZ2UodGhpcy5nZXQoKSxkKGEsYikpKSl9LGFkZEJhY2s6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuYWRkKG51bGw9PQphP3RoaXMucHJldk9iamVjdDp0aGlzLnByZXZPYmplY3QuZmlsdGVyKGEpKX19KTtkLmVhY2goe3BhcmVudDpmdW5jdGlvbihhKXtyZXR1cm4oYT1hLnBhcmVudE5vZGUpJiYxMSE9PWEubm9kZVR5cGU\/YTpudWxsfSxwYXJlbnRzOmZ1bmN0aW9uKGEpe3JldHVybiB3YihhLCJwYXJlbnROb2RlIil9LHBhcmVudHNVbnRpbDpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIHdiKGEsInBhcmVudE5vZGUiLGMpfSxuZXh0OmZ1bmN0aW9uKGEpe3JldHVybiBsYihhLCJuZXh0U2libGluZyIpfSxwcmV2OmZ1bmN0aW9uKGEpe3JldHVybiBsYihhLCJwcmV2aW91c1NpYmxpbmciKX0sbmV4dEFsbDpmdW5jdGlvbihhKXtyZXR1cm4gd2IoYSwibmV4dFNpYmxpbmciKX0scHJldkFsbDpmdW5jdGlvbihhKXtyZXR1cm4gd2IoYSwicHJldmlvdXNTaWJsaW5nIil9LG5leHRVbnRpbDpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIHdiKGEsIm5leHRTaWJsaW5nIixjKX0scHJldlVudGlsOmZ1bmN0aW9uKGEsYiwKYyl7cmV0dXJuIHdiKGEsInByZXZpb3VzU2libGluZyIsYyl9LHNpYmxpbmdzOmZ1bmN0aW9uKGEpe3JldHVybiB3YygoYS5wYXJlbnROb2RlfHx7fSkuZmlyc3RDaGlsZCxhKX0sY2hpbGRyZW46ZnVuY3Rpb24oYSl7cmV0dXJuIHdjKGEuZmlyc3RDaGlsZCl9LGNvbnRlbnRzOmZ1bmN0aW9uKGEpe3JldHVybiBudWxsIT1hLmNvbnRlbnREb2N1bWVudCYmc2MoYS5jb250ZW50RG9jdW1lbnQpP2EuY29udGVudERvY3VtZW50OihYKGEsInRlbXBsYXRlIikmJihhPWEuY29udGVudHx8YSksZC5tZXJnZShbXSxhLmNoaWxkTm9kZXMpKX19LGZ1bmN0aW9uKGEsYil7ZC5mblthXT1mdW5jdGlvbihjLGUpe3ZhciBmPWQubWFwKHRoaXMsYixjKTtyZXR1cm4iVW50aWwiIT09YS5zbGljZSgtNSkmJihlPWMpLGUmJiJzdHJpbmciPT10eXBlb2YgZSYmKGY9ZC5maWx0ZXIoZSxmKSksMTx0aGlzLmxlbmd0aCYmKGtkW2FdfHxkLnVuaXF1ZVNvcnQoZiksamQudGVzdChhKSYmZi5yZXZlcnNlKCkpLAp0aGlzLnB1c2hTdGFjayhmKX19KTt2YXIgTGE9L1teXHgyMFx0XHJcblxmXSsvZztkLkNhbGxiYWNrcz1mdW5jdGlvbihhKXt2YXIgYixjO2E9InN0cmluZyI9PXR5cGVvZiBhPyhiPWEsYz17fSxkLmVhY2goYi5tYXRjaChMYSl8fFtdLGZ1bmN0aW9uKHosRCl7Y1tEXT0hMH0pLGMpOmQuZXh0ZW5kKHt9LGEpO3ZhciBlLGYsZyxoLG09W10sbD1bXSx0PS0xLHc9ZnVuY3Rpb24oKXtoPWh8fGEub25jZTtmb3IoZz1lPSEwO2wubGVuZ3RoO3Q9LTEpZm9yKGY9bC5zaGlmdCgpOysrdDxtLmxlbmd0aDspITE9PT1tW3RdLmFwcGx5KGZbMF0sZlsxXSkmJmEuc3RvcE9uRmFsc2UmJih0PW0ubGVuZ3RoLGY9ITEpO2EubWVtb3J5fHwoZj0hMSk7ZT0hMTtoJiYobT1mP1tdOiIiKX0scj17YWRkOmZ1bmN0aW9uKCl7cmV0dXJuIG0mJihmJiYhZSYmKHQ9bS5sZW5ndGgtMSxsLnB1c2goZikpLGZ1bmN0aW9uIEYoRCl7ZC5lYWNoKEQsZnVuY3Rpb24oTyxhYSl7TShhYSk\/YS51bmlxdWUmJnIuaGFzKGFhKXx8Cm0ucHVzaChhYSk6YWEmJmFhLmxlbmd0aCYmInN0cmluZyIhPT1VKGFhKSYmRihhYSl9KX0oYXJndW1lbnRzKSxmJiYhZSYmdygpKSx0aGlzfSxyZW1vdmU6ZnVuY3Rpb24oKXtyZXR1cm4gZC5lYWNoKGFyZ3VtZW50cyxmdW5jdGlvbih6LEQpe2Zvcih2YXIgRjstMTwoRj1kLmluQXJyYXkoRCxtLEYpKTspbS5zcGxpY2UoRiwxKSxGPD10JiZ0LS19KSx0aGlzfSxoYXM6ZnVuY3Rpb24oeil7cmV0dXJuIHo\/LTE8ZC5pbkFycmF5KHosbSk6MDxtLmxlbmd0aH0sZW1wdHk6ZnVuY3Rpb24oKXtyZXR1cm4gbSYmKG09W10pLHRoaXN9LGRpc2FibGU6ZnVuY3Rpb24oKXtyZXR1cm4gaD1sPVtdLG09Zj0iIix0aGlzfSxkaXNhYmxlZDpmdW5jdGlvbigpe3JldHVybiFtfSxsb2NrOmZ1bmN0aW9uKCl7cmV0dXJuIGg9bD1bXSxmfHxlfHwobT1mPSIiKSx0aGlzfSxsb2NrZWQ6ZnVuY3Rpb24oKXtyZXR1cm4hIWh9LGZpcmVXaXRoOmZ1bmN0aW9uKHosRCl7cmV0dXJuIGh8fChEPVt6LChEPUR8fApbXSkuc2xpY2U\/RC5zbGljZSgpOkRdLGwucHVzaChEKSxlfHx3KCkpLHRoaXN9LGZpcmU6ZnVuY3Rpb24oKXtyZXR1cm4gci5maXJlV2l0aCh0aGlzLGFyZ3VtZW50cyksdGhpc30sZmlyZWQ6ZnVuY3Rpb24oKXtyZXR1cm4hIWd9fTtyZXR1cm4gcn07ZC5leHRlbmQoe0RlZmVycmVkOmZ1bmN0aW9uKGEpe3ZhciBiPVtbIm5vdGlmeSIsInByb2dyZXNzIixkLkNhbGxiYWNrcygibWVtb3J5IiksZC5DYWxsYmFja3MoIm1lbW9yeSIpLDJdLFsicmVzb2x2ZSIsImRvbmUiLGQuQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpLGQuQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpLDAsInJlc29sdmVkIl0sWyJyZWplY3QiLCJmYWlsIixkLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSxkLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSwxLCJyZWplY3RlZCJdXSxjPSJwZW5kaW5nIixlPXtzdGF0ZTpmdW5jdGlvbigpe3JldHVybiBjfSxhbHdheXM6ZnVuY3Rpb24oKXtyZXR1cm4gZi5kb25lKGFyZ3VtZW50cykuZmFpbChhcmd1bWVudHMpLAp0aGlzfSwiY2F0Y2giOmZ1bmN0aW9uKGcpe3JldHVybiBlLnRoZW4obnVsbCxnKX0scGlwZTpmdW5jdGlvbigpe3ZhciBnPWFyZ3VtZW50cztyZXR1cm4gZC5EZWZlcnJlZChmdW5jdGlvbihoKXtkLmVhY2goYixmdW5jdGlvbihtLGwpe3ZhciB0PU0oZ1tsWzRdXSkmJmdbbFs0XV07ZltsWzFdXShmdW5jdGlvbigpe3ZhciB3PXQmJnQuYXBwbHkodGhpcyxhcmd1bWVudHMpO3cmJk0ody5wcm9taXNlKT93LnByb21pc2UoKS5wcm9ncmVzcyhoLm5vdGlmeSkuZG9uZShoLnJlc29sdmUpLmZhaWwoaC5yZWplY3QpOmhbbFswXSsiV2l0aCJdKHRoaXMsdD9bd106YXJndW1lbnRzKX0pfSk7Zz1udWxsfSkucHJvbWlzZSgpfSx0aGVuOmZ1bmN0aW9uKGcsaCxtKXtmdW5jdGlvbiBsKHcscix6LEQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBGPXRoaXMsTz1hcmd1bWVudHMsYWE9ZnVuY3Rpb24oKXt2YXIgcWE7aWYoISh3PHQpKXtpZigocWE9ei5hcHBseShGLE8pKT09PXIucHJvbWlzZSgpKXRocm93IG5ldyBUeXBlRXJyb3IoIlRoZW5hYmxlIHNlbGYtcmVzb2x1dGlvbiIpOwp2YXIgU2E9cWEmJigib2JqZWN0Ij09dHlwZW9mIHFhfHwiZnVuY3Rpb24iPT10eXBlb2YgcWEpJiZxYS50aGVuO00oU2EpP0Q\/U2EuY2FsbChxYSxsKHQscixZYSxEKSxsKHQscixaYSxEKSk6KHQrKyxTYS5jYWxsKHFhLGwodCxyLFlhLEQpLGwodCxyLFphLEQpLGwodCxyLFlhLHIubm90aWZ5V2l0aCkpKTooeiE9PVlhJiYoRj12b2lkIDAsTz1bcWFdKSwoRHx8ci5yZXNvbHZlV2l0aCkoRixPKSl9fSxHYT1EP2FhOmZ1bmN0aW9uKCl7dHJ5e2FhKCl9Y2F0Y2gocWEpe2QuRGVmZXJyZWQuZXhjZXB0aW9uSG9vayYmZC5EZWZlcnJlZC5leGNlcHRpb25Ib29rKHFhLEdhLmVycm9yKSx0PD13KzEmJih6IT09WmEmJihGPXZvaWQgMCxPPVtxYV0pLHIucmVqZWN0V2l0aChGLE8pKX19O3c\/R2EoKTooZC5EZWZlcnJlZC5nZXRFcnJvckhvb2s\/R2EuZXJyb3I9ZC5EZWZlcnJlZC5nZXRFcnJvckhvb2soKTpkLkRlZmVycmVkLmdldFN0YWNrSG9vayYmKEdhLmVycm9yPWQuRGVmZXJyZWQuZ2V0U3RhY2tIb29rKCkpLApuLnNldFRpbWVvdXQoR2EpKX19dmFyIHQ9MDtyZXR1cm4gZC5EZWZlcnJlZChmdW5jdGlvbih3KXtiWzBdWzNdLmFkZChsKDAsdyxNKG0pP206WWEsdy5ub3RpZnlXaXRoKSk7YlsxXVszXS5hZGQobCgwLHcsTShnKT9nOllhKSk7YlsyXVszXS5hZGQobCgwLHcsTShoKT9oOlphKSl9KS5wcm9taXNlKCl9LHByb21pc2U6ZnVuY3Rpb24oZyl7cmV0dXJuIG51bGwhPWc\/ZC5leHRlbmQoZyxlKTplfX0sZj17fTtyZXR1cm4gZC5lYWNoKGIsZnVuY3Rpb24oZyxoKXt2YXIgbT1oWzJdLGw9aFs1XTtlW2hbMV1dPW0uYWRkO2wmJm0uYWRkKGZ1bmN0aW9uKCl7Yz1sfSxiWzMtZ11bMl0uZGlzYWJsZSxiWzMtZ11bM10uZGlzYWJsZSxiWzBdWzJdLmxvY2ssYlswXVszXS5sb2NrKTttLmFkZChoWzNdLmZpcmUpO2ZbaFswXV09ZnVuY3Rpb24oKXtyZXR1cm4gZltoWzBdKyJXaXRoIl0odGhpcz09PWY\/dm9pZCAwOnRoaXMsYXJndW1lbnRzKSx0aGlzfTtmW2hbMF0rIldpdGgiXT1tLmZpcmVXaXRofSksCmUucHJvbWlzZShmKSxhJiZhLmNhbGwoZixmKSxmfSx3aGVuOmZ1bmN0aW9uKGEpe3ZhciBiPWFyZ3VtZW50cy5sZW5ndGgsYz1iLGU9QXJyYXkoYyksZj15YS5jYWxsKGFyZ3VtZW50cyksZz1kLkRlZmVycmVkKCksaD1mdW5jdGlvbihtKXtyZXR1cm4gZnVuY3Rpb24obCl7ZVttXT10aGlzO2ZbbV09MTxhcmd1bWVudHMubGVuZ3RoP3lhLmNhbGwoYXJndW1lbnRzKTpsOy0tYnx8Zy5yZXNvbHZlV2l0aChlLGYpfX07aWYoMT49YiYmKG1iKGEsZy5kb25lKGgoYykpLnJlc29sdmUsZy5yZWplY3QsIWIpLCJwZW5kaW5nIj09PWcuc3RhdGUoKXx8TShmW2NdJiZmW2NdLnRoZW4pKSlyZXR1cm4gZy50aGVuKCk7Zm9yKDtjLS07KW1iKGZbY10saChjKSxnLnJlamVjdCk7cmV0dXJuIGcucHJvbWlzZSgpfX0pO3ZhciBsZD0vXihFdmFsfEludGVybmFsfFJhbmdlfFJlZmVyZW5jZXxTeW50YXh8VHlwZXxVUkkpRXJyb3IkLztkLkRlZmVycmVkLmV4Y2VwdGlvbkhvb2s9ZnVuY3Rpb24oYSxiKXtuLmNvbnNvbGUmJgpuLmNvbnNvbGUud2FybiYmYSYmbGQudGVzdChhLm5hbWUpJiZuLmNvbnNvbGUud2FybigialF1ZXJ5LkRlZmVycmVkIGV4Y2VwdGlvbjogIithLm1lc3NhZ2UsYS5zdGFjayxiKX07ZC5yZWFkeUV4Y2VwdGlvbj1mdW5jdGlvbihhKXtuLnNldFRpbWVvdXQoZnVuY3Rpb24oKXt0aHJvdyBhO30pfTt2YXIgZ2M9ZC5EZWZlcnJlZCgpO2QuZm4ucmVhZHk9ZnVuY3Rpb24oYSl7cmV0dXJuIGdjLnRoZW4oYSlbImNhdGNoIl0oZnVuY3Rpb24oYil7ZC5yZWFkeUV4Y2VwdGlvbihiKX0pLHRoaXN9O2QuZXh0ZW5kKHtpc1JlYWR5OiExLHJlYWR5V2FpdDoxLHJlYWR5OmZ1bmN0aW9uKGEpeyghMD09PWE\/LS1kLnJlYWR5V2FpdDpkLmlzUmVhZHkpfHwoZC5pc1JlYWR5PSEwKSE9PWEmJjA8LS1kLnJlYWR5V2FpdHx8Z2MucmVzb2x2ZVdpdGgoTCxbZF0pfX0pO2QucmVhZHkudGhlbj1nYy50aGVuOyJjb21wbGV0ZSI9PT1MLnJlYWR5U3RhdGV8fCJsb2FkaW5nIiE9PUwucmVhZHlTdGF0ZSYmIUwuZG9jdW1lbnRFbGVtZW50LmRvU2Nyb2xsPwpuLnNldFRpbWVvdXQoZC5yZWFkeSk6KEwuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsT2EpLG4uYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsT2EpKTt2YXIgWGE9ZnVuY3Rpb24oYSxiLGMsZSxmLGcsaCl7dmFyIG09MCxsPWEubGVuZ3RoLHQ9bnVsbD09YztpZigib2JqZWN0Ij09PVUoYykpZm9yKG0gaW4gZj0hMCxjKVhhKGEsYixtLGNbbV0sITAsZyxoKTtlbHNlIGlmKHZvaWQgMCE9PWUmJihmPSEwLE0oZSl8fChoPSEwKSx0JiYoaD8oYi5jYWxsKGEsZSksYj1udWxsKToodD1iLGI9ZnVuY3Rpb24odyxyLHope3JldHVybiB0LmNhbGwoZCh3KSx6KX0pKSxiKSlmb3IoO208bDttKyspYihhW21dLGMsaD9lOmUuY2FsbChhW21dLG0sYihhW21dLGMpKSk7cmV0dXJuIGY\/YTp0P2IuY2FsbChhKTpsP2IoYVswXSxjKTpnfSxNYz0vXi1tcy0vLE5jPS8tKFthLXpdKS9nLEdiPWZ1bmN0aW9uKGEpe3JldHVybiAxPT09YS5ub2RlVHlwZXx8OT09PWEubm9kZVR5cGV8fCErYS5ub2RlVHlwZX07CkphLnVpZD0xO0phLnByb3RvdHlwZT17Y2FjaGU6ZnVuY3Rpb24oYSl7dmFyIGI9YVt0aGlzLmV4cGFuZG9dO3JldHVybiBifHwoYj17fSxHYihhKSYmKGEubm9kZVR5cGU\/YVt0aGlzLmV4cGFuZG9dPWI6T2JqZWN0LmRlZmluZVByb3BlcnR5KGEsdGhpcy5leHBhbmRvLHt2YWx1ZTpiLGNvbmZpZ3VyYWJsZTohMH0pKSksYn0sc2V0OmZ1bmN0aW9uKGEsYixjKXt2YXIgZTthPXRoaXMuY2FjaGUoYSk7aWYoInN0cmluZyI9PXR5cGVvZiBiKWFbQmEoYildPWM7ZWxzZSBmb3IoZSBpbiBiKWFbQmEoZSldPWJbZV07cmV0dXJuIGF9LGdldDpmdW5jdGlvbihhLGIpe3JldHVybiB2b2lkIDA9PT1iP3RoaXMuY2FjaGUoYSk6YVt0aGlzLmV4cGFuZG9dJiZhW3RoaXMuZXhwYW5kb11bQmEoYildfSxhY2Nlc3M6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiB2b2lkIDA9PT1ifHxiJiYic3RyaW5nIj09dHlwZW9mIGImJnZvaWQgMD09PWM\/dGhpcy5nZXQoYSxiKToodGhpcy5zZXQoYSxiLGMpLHZvaWQgMCE9PQpjP2M6Yil9LHJlbW92ZTpmdW5jdGlvbihhLGIpe3ZhciBjPWFbdGhpcy5leHBhbmRvXTtpZih2b2lkIDAhPT1jKXtpZih2b2lkIDAhPT1iKXt2YXIgZT0oYj1BcnJheS5pc0FycmF5KGIpP2IubWFwKEJhKTooYj1CYShiKSlpbiBjP1tiXTpiLm1hdGNoKExhKXx8W10pLmxlbmd0aDtmb3IoO2UtLTspZGVsZXRlIGNbYltlXV19KHZvaWQgMD09PWJ8fGQuaXNFbXB0eU9iamVjdChjKSkmJihhLm5vZGVUeXBlP2FbdGhpcy5leHBhbmRvXT12b2lkIDA6ZGVsZXRlIGFbdGhpcy5leHBhbmRvXSl9fSxoYXNEYXRhOmZ1bmN0aW9uKGEpe2E9YVt0aGlzLmV4cGFuZG9dO3JldHVybiB2b2lkIDAhPT1hJiYhZC5pc0VtcHR5T2JqZWN0KGEpfX07dmFyIEc9bmV3IEphLHhhPW5ldyBKYSxQYz0vXig\/Olx7W1x3XFddKlx9fFxbW1x3XFddKlxdKSQvLE9jPS9bQS1aXS9nO2QuZXh0ZW5kKHtoYXNEYXRhOmZ1bmN0aW9uKGEpe3JldHVybiB4YS5oYXNEYXRhKGEpfHxHLmhhc0RhdGEoYSl9LGRhdGE6ZnVuY3Rpb24oYSwKYixjKXtyZXR1cm4geGEuYWNjZXNzKGEsYixjKX0scmVtb3ZlRGF0YTpmdW5jdGlvbihhLGIpe3hhLnJlbW92ZShhLGIpfSxfZGF0YTpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIEcuYWNjZXNzKGEsYixjKX0sX3JlbW92ZURhdGE6ZnVuY3Rpb24oYSxiKXtHLnJlbW92ZShhLGIpfX0pO2QuZm4uZXh0ZW5kKHtkYXRhOmZ1bmN0aW9uKGEsYil7dmFyIGMsZSxmLGc9dGhpc1swXSxoPWcmJmcuYXR0cmlidXRlcztpZih2b2lkIDA9PT1hKXtpZih0aGlzLmxlbmd0aCYmKGY9eGEuZ2V0KGcpLDE9PT1nLm5vZGVUeXBlJiYhRy5nZXQoZywiaGFzRGF0YUF0dHJzIikpKXtmb3IoYz1oLmxlbmd0aDtjLS07KWhbY10mJjA9PT0oZT1oW2NdLm5hbWUpLmluZGV4T2YoImRhdGEtIikmJihlPUJhKGUuc2xpY2UoNSkpLE9iKGcsZSxmW2VdKSk7Ry5zZXQoZywiaGFzRGF0YUF0dHJzIiwhMCl9cmV0dXJuIGZ9cmV0dXJuIm9iamVjdCI9PXR5cGVvZiBhP3RoaXMuZWFjaChmdW5jdGlvbigpe3hhLnNldCh0aGlzLAphKX0pOlhhKHRoaXMsZnVuY3Rpb24obSl7dmFyIGw7aWYoZyYmdm9pZCAwPT09bSlyZXR1cm4gdm9pZCAwIT09KGw9eGEuZ2V0KGcsYSkpP2w6dm9pZCAwIT09KGw9T2IoZyxhKSk\/bDp2b2lkIDA7dGhpcy5lYWNoKGZ1bmN0aW9uKCl7eGEuc2V0KHRoaXMsYSxtKX0pfSxudWxsLGIsMTxhcmd1bWVudHMubGVuZ3RoLG51bGwsITApfSxyZW1vdmVEYXRhOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt4YS5yZW1vdmUodGhpcyxhKX0pfX0pO2QuZXh0ZW5kKHtxdWV1ZTpmdW5jdGlvbihhLGIsYyl7dmFyIGU7aWYoYSlyZXR1cm4gYj0oYnx8ImZ4IikrInF1ZXVlIixlPUcuZ2V0KGEsYiksYyYmKCFlfHxBcnJheS5pc0FycmF5KGMpP2U9Ry5hY2Nlc3MoYSxiLGQubWFrZUFycmF5KGMpKTplLnB1c2goYykpLGV8fFtdfSxkZXF1ZXVlOmZ1bmN0aW9uKGEsYil7Yj1ifHwiZngiO3ZhciBjPWQucXVldWUoYSxiKSxlPWMubGVuZ3RoLGY9Yy5zaGlmdCgpLGc9ZC5fcXVldWVIb29rcyhhLApiKTsiaW5wcm9ncmVzcyI9PT1mJiYoZj1jLnNoaWZ0KCksZS0tKTtmJiYoImZ4Ij09PWImJmMudW5zaGlmdCgiaW5wcm9ncmVzcyIpLGRlbGV0ZSBnLnN0b3AsZi5jYWxsKGEsZnVuY3Rpb24oKXtkLmRlcXVldWUoYSxiKX0sZykpOyFlJiZnJiZnLmVtcHR5LmZpcmUoKX0sX3F1ZXVlSG9va3M6ZnVuY3Rpb24oYSxiKXt2YXIgYz1iKyJxdWV1ZUhvb2tzIjtyZXR1cm4gRy5nZXQoYSxjKXx8Ry5hY2Nlc3MoYSxjLHtlbXB0eTpkLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKS5hZGQoZnVuY3Rpb24oKXtHLnJlbW92ZShhLFtiKyJxdWV1ZSIsY10pfSl9KX19KTtkLmZuLmV4dGVuZCh7cXVldWU6ZnVuY3Rpb24oYSxiKXt2YXIgYz0yO3JldHVybiJzdHJpbmciIT10eXBlb2YgYSYmKGI9YSxhPSJmeCIsYy0tKSxhcmd1bWVudHMubGVuZ3RoPGM\/ZC5xdWV1ZSh0aGlzWzBdLGEpOnZvaWQgMD09PWI\/dGhpczp0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZT1kLnF1ZXVlKHRoaXMsYSxiKTtkLl9xdWV1ZUhvb2tzKHRoaXMsCmEpOyJmeCI9PT1hJiYiaW5wcm9ncmVzcyIhPT1lWzBdJiZkLmRlcXVldWUodGhpcyxhKX0pfSxkZXF1ZXVlOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtkLmRlcXVldWUodGhpcyxhKX0pfSxjbGVhclF1ZXVlOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnF1ZXVlKGF8fCJmeCIsW10pfSxwcm9taXNlOmZ1bmN0aW9uKGEsYil7dmFyIGMsZT0xLGY9ZC5EZWZlcnJlZCgpLGc9dGhpcyxoPXRoaXMubGVuZ3RoLG09ZnVuY3Rpb24oKXstLWV8fGYucmVzb2x2ZVdpdGgoZyxbZ10pfTsic3RyaW5nIiE9dHlwZW9mIGEmJihiPWEsYT12b2lkIDApO2ZvcihhPWF8fCJmeCI7aC0tOykoYz1HLmdldChnW2hdLGErInF1ZXVlSG9va3MiKSkmJmMuZW1wdHkmJihlKyssYy5lbXB0eS5hZGQobSkpO3JldHVybiBtKCksZi5wcm9taXNlKGIpfX0pO3ZhciB6Yz0vWystXT8oPzpcZCpcLnwpXGQrKD86W2VFXVsrLV0\/XGQrfCkvLnNvdXJjZSx5Yj1uZXcgUmVnRXhwKCJeKD86KFsrLV0pPXwpKCIrCnpjKyIpKFthLXolXSopJCIsImkiKSxQYT1bIlRvcCIsIlJpZ2h0IiwiQm90dG9tIiwiTGVmdCJdLGpiPUwuZG9jdW1lbnRFbGVtZW50LG9iPWZ1bmN0aW9uKGEpe3JldHVybiBkLmNvbnRhaW5zKGEub3duZXJEb2N1bWVudCxhKX0sbWQ9e2NvbXBvc2VkOiEwfTtqYi5nZXRSb290Tm9kZSYmKG9iPWZ1bmN0aW9uKGEpe3JldHVybiBkLmNvbnRhaW5zKGEub3duZXJEb2N1bWVudCxhKXx8YS5nZXRSb290Tm9kZShtZCk9PT1hLm93bmVyRG9jdW1lbnR9KTt2YXIgUWI9ZnVuY3Rpb24oYSxiKXtyZXR1cm4ibm9uZSI9PT0oYT1ifHxhKS5zdHlsZS5kaXNwbGF5fHwiIj09PWEuc3R5bGUuZGlzcGxheSYmb2IoYSkmJiJub25lIj09PWQuY3NzKGEsImRpc3BsYXkiKX0sbGM9e307ZC5mbi5leHRlbmQoe3Nob3c6ZnVuY3Rpb24oKXtyZXR1cm4gJGEodGhpcywhMCl9LGhpZGU6ZnVuY3Rpb24oKXtyZXR1cm4gJGEodGhpcyl9LHRvZ2dsZTpmdW5jdGlvbihhKXtyZXR1cm4iYm9vbGVhbiI9PXR5cGVvZiBhPwphP3RoaXMuc2hvdygpOnRoaXMuaGlkZSgpOnRoaXMuZWFjaChmdW5jdGlvbigpe1FiKHRoaXMpP2QodGhpcykuc2hvdygpOmQodGhpcykuaGlkZSgpfSl9fSk7dmFyIFpiLEhiPS9eKD86Y2hlY2tib3h8cmFkaW8pJC9pLG1jPS88KFthLXpdW15cL1wwPlx4MjBcdFxyXG5cZl0qKS9pLG5jPS9eJHxebW9kdWxlJHxcLyg\/OmphdmF8ZWNtYSlzY3JpcHQvaSx4Yj1MLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKS5hcHBlbmRDaGlsZChMLmNyZWF0ZUVsZW1lbnQoImRpdiIpKTsoWmI9TC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpKS5zZXRBdHRyaWJ1dGUoInR5cGUiLCJyYWRpbyIpO1piLnNldEF0dHJpYnV0ZSgiY2hlY2tlZCIsImNoZWNrZWQiKTtaYi5zZXRBdHRyaWJ1dGUoIm5hbWUiLCJ0Iik7eGIuYXBwZW5kQ2hpbGQoWmIpO04uY2hlY2tDbG9uZT14Yi5jbG9uZU5vZGUoITApLmNsb25lTm9kZSghMCkubGFzdENoaWxkLmNoZWNrZWQ7eGIuaW5uZXJIVE1MPSI8dGV4dGFyZWE+eDwvdGV4dGFyZWE+IjsKTi5ub0Nsb25lQ2hlY2tlZD0hIXhiLmNsb25lTm9kZSghMCkubGFzdENoaWxkLmRlZmF1bHRWYWx1ZTt4Yi5pbm5lckhUTUw9IjxvcHRpb24+PC9vcHRpb24+IjtOLm9wdGlvbj0hIXhiLmxhc3RDaGlsZDt2YXIgQ2E9e3RoZWFkOlsxLCI8dGFibGU+IiwiPC90YWJsZT4iXSxjb2w6WzIsIjx0YWJsZT48Y29sZ3JvdXA+IiwiPC9jb2xncm91cD48L3RhYmxlPiJdLHRyOlsyLCI8dGFibGU+PHRib2R5PiIsIjwvdGJvZHk+PC90YWJsZT4iXSx0ZDpbMywiPHRhYmxlPjx0Ym9keT48dHI+IiwiPC90cj48L3Rib2R5PjwvdGFibGU+Il0sX2RlZmF1bHQ6WzAsIiIsIiJdfTtDYS50Ym9keT1DYS50Zm9vdD1DYS5jb2xncm91cD1DYS5jYXB0aW9uPUNhLnRoZWFkO0NhLnRoPUNhLnRkO04ub3B0aW9ufHwoQ2Eub3B0Z3JvdXA9Q2Eub3B0aW9uPVsxLCI8c2VsZWN0IG11bHRpcGxlPSdtdWx0aXBsZSc+IiwiPC9zZWxlY3Q+Il0pO3ZhciBRYz0vPHwmIz9cdys7LyxBYz0vXihbXi5dKikoPzpcLiguKyl8KS87CmQuZXZlbnQ9e2dsb2JhbDp7fSxhZGQ6ZnVuY3Rpb24oYSxiLGMsZSxmKXt2YXIgZyxoLG0sbCx0LHcscix6LEQ9Ry5nZXQoYSk7aWYoR2IoYSkpZm9yKGMuaGFuZGxlciYmKGM9KGc9YykuaGFuZGxlcixmPWcuc2VsZWN0b3IpLGYmJmQuZmluZC5tYXRjaGVzU2VsZWN0b3IoamIsZiksYy5ndWlkfHwoYy5ndWlkPWQuZ3VpZCsrKSwobD1ELmV2ZW50cyl8fChsPUQuZXZlbnRzPU9iamVjdC5jcmVhdGUobnVsbCkpLChoPUQuaGFuZGxlKXx8KGg9RC5oYW5kbGU9ZnVuY3Rpb24oTyl7cmV0dXJuInVuZGVmaW5lZCIhPXR5cGVvZiBkJiZkLmV2ZW50LnRyaWdnZXJlZCE9PU8udHlwZT9kLmV2ZW50LmRpc3BhdGNoLmFwcGx5KGEsYXJndW1lbnRzKTp2b2lkIDB9KSxEPShiPShifHwiIikubWF0Y2goTGEpfHxbIiJdKS5sZW5ndGg7RC0tOyl7dmFyIEY9ej0obT1BYy5leGVjKGJbRF0pfHxbXSlbMV07bT0obVsyXXx8IiIpLnNwbGl0KCIuIikuc29ydCgpO0YmJih3PWQuZXZlbnQuc3BlY2lhbFtGXXx8Cnt9LEY9KGY\/dy5kZWxlZ2F0ZVR5cGU6dy5iaW5kVHlwZSl8fEYsdz1kLmV2ZW50LnNwZWNpYWxbRl18fHt9LHQ9ZC5leHRlbmQoe3R5cGU6RixvcmlnVHlwZTp6LGRhdGE6ZSxoYW5kbGVyOmMsZ3VpZDpjLmd1aWQsc2VsZWN0b3I6ZixuZWVkc0NvbnRleHQ6ZiYmZC5leHByLm1hdGNoLm5lZWRzQ29udGV4dC50ZXN0KGYpLG5hbWVzcGFjZTptLmpvaW4oIi4iKX0sZyksKHI9bFtGXSl8fCgocj1sW0ZdPVtdKS5kZWxlZ2F0ZUNvdW50PTAsdy5zZXR1cCYmITEhPT13LnNldHVwLmNhbGwoYSxlLG0saCl8fGEuYWRkRXZlbnRMaXN0ZW5lciYmYS5hZGRFdmVudExpc3RlbmVyKEYsaCkpLHcuYWRkJiYody5hZGQuY2FsbChhLHQpLHQuaGFuZGxlci5ndWlkfHwodC5oYW5kbGVyLmd1aWQ9Yy5ndWlkKSksZj9yLnNwbGljZShyLmRlbGVnYXRlQ291bnQrKywwLHQpOnIucHVzaCh0KSxkLmV2ZW50Lmdsb2JhbFtGXT0hMCl9fSxyZW1vdmU6ZnVuY3Rpb24oYSxiLGMsZSxmKXt2YXIgZyxoLG0sbCwKdCx3LHIseixEPUcuaGFzRGF0YShhKSYmRy5nZXQoYSk7aWYoRCYmKGw9RC5ldmVudHMpKXtmb3IodD0oYj0oYnx8IiIpLm1hdGNoKExhKXx8WyIiXSkubGVuZ3RoO3QtLTspaWYodz16PShtPUFjLmV4ZWMoYlt0XSl8fFtdKVsxXSxyPShtWzJdfHwiIikuc3BsaXQoIi4iKS5zb3J0KCksdyl7dmFyIEY9ZC5ldmVudC5zcGVjaWFsW3ddfHx7fSxPPWxbdz0oZT9GLmRlbGVnYXRlVHlwZTpGLmJpbmRUeXBlKXx8d118fFtdO209bVsyXSYmbmV3IFJlZ0V4cCgiKF58XFwuKSIrci5qb2luKCJcXC4oPzouKlxcLnwpIikrIihcXC58JCkiKTtmb3IoaD1nPU8ubGVuZ3RoO2ctLTspe3ZhciBhYT1PW2ddOyFmJiZ6IT09YWEub3JpZ1R5cGV8fGMmJmMuZ3VpZCE9PWFhLmd1aWR8fG0mJiFtLnRlc3QoYWEubmFtZXNwYWNlKXx8ZSYmZSE9PWFhLnNlbGVjdG9yJiYoIioqIiE9PWV8fCFhYS5zZWxlY3Rvcil8fChPLnNwbGljZShnLDEpLGFhLnNlbGVjdG9yJiZPLmRlbGVnYXRlQ291bnQtLSxGLnJlbW92ZSYmCkYucmVtb3ZlLmNhbGwoYSxhYSkpfWgmJiFPLmxlbmd0aCYmKEYudGVhcmRvd24mJiExIT09Ri50ZWFyZG93bi5jYWxsKGEscixELmhhbmRsZSl8fGQucmVtb3ZlRXZlbnQoYSx3LEQuaGFuZGxlKSxkZWxldGUgbFt3XSl9ZWxzZSBmb3IodyBpbiBsKWQuZXZlbnQucmVtb3ZlKGEsdytiW3RdLGMsZSwhMCk7ZC5pc0VtcHR5T2JqZWN0KGwpJiZHLnJlbW92ZShhLCJoYW5kbGUgZXZlbnRzIil9fSxkaXNwYXRjaDpmdW5jdGlvbihhKXt2YXIgYixjLGUsZixnPUFycmF5KGFyZ3VtZW50cy5sZW5ndGgpLGg9ZC5ldmVudC5maXgoYSksbT0oRy5nZXQodGhpcywiZXZlbnRzIil8fE9iamVjdC5jcmVhdGUobnVsbCkpW2gudHlwZV18fFtdLGw9ZC5ldmVudC5zcGVjaWFsW2gudHlwZV18fHt9O2dbMF09aDtmb3IoYj0xO2I8YXJndW1lbnRzLmxlbmd0aDtiKyspZ1tiXT1hcmd1bWVudHNbYl07aWYoaC5kZWxlZ2F0ZVRhcmdldD10aGlzLCFsLnByZURpc3BhdGNofHwhMSE9PWwucHJlRGlzcGF0Y2guY2FsbCh0aGlzLApoKSl7dmFyIHQ9ZC5ldmVudC5oYW5kbGVycy5jYWxsKHRoaXMsaCxtKTtmb3IoYj0wOyhlPXRbYisrXSkmJiFoLmlzUHJvcGFnYXRpb25TdG9wcGVkKCk7KWZvcihoLmN1cnJlbnRUYXJnZXQ9ZS5lbGVtLG09MDsoZj1lLmhhbmRsZXJzW20rK10pJiYhaC5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZCgpOyloLnJuYW1lc3BhY2UmJiExIT09Zi5uYW1lc3BhY2UmJiFoLnJuYW1lc3BhY2UudGVzdChmLm5hbWVzcGFjZSl8fChoLmhhbmRsZU9iaj1mLGguZGF0YT1mLmRhdGEsdm9pZCAwIT09KGM9KChkLmV2ZW50LnNwZWNpYWxbZi5vcmlnVHlwZV18fHt9KS5oYW5kbGV8fGYuaGFuZGxlcikuYXBwbHkoZS5lbGVtLGcpKSYmITE9PT0oaC5yZXN1bHQ9YykmJihoLnByZXZlbnREZWZhdWx0KCksaC5zdG9wUHJvcGFnYXRpb24oKSkpO3JldHVybiBsLnBvc3REaXNwYXRjaCYmbC5wb3N0RGlzcGF0Y2guY2FsbCh0aGlzLGgpLGgucmVzdWx0fX0saGFuZGxlcnM6ZnVuY3Rpb24oYSxiKXt2YXIgYywKZSxmLGc9W10saD1iLmRlbGVnYXRlQ291bnQsbT1hLnRhcmdldDtpZihoJiZtLm5vZGVUeXBlJiYhKCJjbGljayI9PT1hLnR5cGUmJjE8PWEuYnV0dG9uKSlmb3IoO20hPT10aGlzO209bS5wYXJlbnROb2RlfHx0aGlzKWlmKDE9PT1tLm5vZGVUeXBlJiYoImNsaWNrIiE9PWEudHlwZXx8ITAhPT1tLmRpc2FibGVkKSl7dmFyIGw9W10sdD17fTtmb3IoYz0wO2M8aDtjKyspdm9pZCAwPT09dFtmPShlPWJbY10pLnNlbGVjdG9yKyIgIl0mJih0W2ZdPWUubmVlZHNDb250ZXh0Py0xPGQoZix0aGlzKS5pbmRleChtKTpkLmZpbmQoZix0aGlzLG51bGwsW21dKS5sZW5ndGgpLHRbZl0mJmwucHVzaChlKTtsLmxlbmd0aCYmZy5wdXNoKHtlbGVtOm0saGFuZGxlcnM6bH0pfXJldHVybiBtPXRoaXMsaDxiLmxlbmd0aCYmZy5wdXNoKHtlbGVtOm0saGFuZGxlcnM6Yi5zbGljZShoKX0pLGd9LGFkZFByb3A6ZnVuY3Rpb24oYSxiKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZC5FdmVudC5wcm90b3R5cGUsCmEse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLGdldDpNKGIpP2Z1bmN0aW9uKCl7aWYodGhpcy5vcmlnaW5hbEV2ZW50KXJldHVybiBiKHRoaXMub3JpZ2luYWxFdmVudCl9OmZ1bmN0aW9uKCl7aWYodGhpcy5vcmlnaW5hbEV2ZW50KXJldHVybiB0aGlzLm9yaWdpbmFsRXZlbnRbYV19LHNldDpmdW5jdGlvbihjKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcyxhLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpjfSl9fSl9LGZpeDpmdW5jdGlvbihhKXtyZXR1cm4gYVtkLmV4cGFuZG9dP2E6bmV3IGQuRXZlbnQoYSl9LHNwZWNpYWw6e2xvYWQ6e25vQnViYmxlOiEwfSxjbGljazp7c2V0dXA6ZnVuY3Rpb24oYSl7YT10aGlzfHxhO3JldHVybiBIYi50ZXN0KGEudHlwZSkmJmEuY2xpY2smJlgoYSwiaW5wdXQiKSYmcGIoYSwiY2xpY2siLCEwKSwhMX0sdHJpZ2dlcjpmdW5jdGlvbihhKXthPXRoaXN8fGE7cmV0dXJuIEhiLnRlc3QoYS50eXBlKSYmCmEuY2xpY2smJlgoYSwiaW5wdXQiKSYmcGIoYSwiY2xpY2siKSwhMH0sX2RlZmF1bHQ6ZnVuY3Rpb24oYSl7YT1hLnRhcmdldDtyZXR1cm4gSGIudGVzdChhLnR5cGUpJiZhLmNsaWNrJiZYKGEsImlucHV0IikmJkcuZ2V0KGEsImNsaWNrIil8fFgoYSwiYSIpfX0sYmVmb3JldW5sb2FkOntwb3N0RGlzcGF0Y2g6ZnVuY3Rpb24oYSl7dm9pZCAwIT09YS5yZXN1bHQmJmEub3JpZ2luYWxFdmVudCYmKGEub3JpZ2luYWxFdmVudC5yZXR1cm5WYWx1ZT1hLnJlc3VsdCl9fX19O2QucmVtb3ZlRXZlbnQ9ZnVuY3Rpb24oYSxiLGMpe2EucmVtb3ZlRXZlbnRMaXN0ZW5lciYmYS5yZW1vdmVFdmVudExpc3RlbmVyKGIsYyl9O2QuRXZlbnQ9ZnVuY3Rpb24oYSxiKXtpZighKHRoaXMgaW5zdGFuY2VvZiBkLkV2ZW50KSlyZXR1cm4gbmV3IGQuRXZlbnQoYSxiKTthJiZhLnR5cGU\/KHRoaXMub3JpZ2luYWxFdmVudD1hLHRoaXMudHlwZT1hLnR5cGUsdGhpcy5pc0RlZmF1bHRQcmV2ZW50ZWQ9YS5kZWZhdWx0UHJldmVudGVkfHwKdm9pZCAwPT09YS5kZWZhdWx0UHJldmVudGVkJiYhMT09PWEucmV0dXJuVmFsdWU\/YWI6YmIsdGhpcy50YXJnZXQ9YS50YXJnZXQmJjM9PT1hLnRhcmdldC5ub2RlVHlwZT9hLnRhcmdldC5wYXJlbnROb2RlOmEudGFyZ2V0LHRoaXMuY3VycmVudFRhcmdldD1hLmN1cnJlbnRUYXJnZXQsdGhpcy5yZWxhdGVkVGFyZ2V0PWEucmVsYXRlZFRhcmdldCk6dGhpcy50eXBlPWE7YiYmZC5leHRlbmQodGhpcyxiKTt0aGlzLnRpbWVTdGFtcD1hJiZhLnRpbWVTdGFtcHx8RGF0ZS5ub3coKTt0aGlzW2QuZXhwYW5kb109ITB9O2QuRXZlbnQucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpkLkV2ZW50LGlzRGVmYXVsdFByZXZlbnRlZDpiYixpc1Byb3BhZ2F0aW9uU3RvcHBlZDpiYixpc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZDpiYixpc1NpbXVsYXRlZDohMSxwcmV2ZW50RGVmYXVsdDpmdW5jdGlvbigpe3ZhciBhPXRoaXMub3JpZ2luYWxFdmVudDt0aGlzLmlzRGVmYXVsdFByZXZlbnRlZD1hYjsKYSYmIXRoaXMuaXNTaW11bGF0ZWQmJmEucHJldmVudERlZmF1bHQoKX0sc3RvcFByb3BhZ2F0aW9uOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5vcmlnaW5hbEV2ZW50O3RoaXMuaXNQcm9wYWdhdGlvblN0b3BwZWQ9YWI7YSYmIXRoaXMuaXNTaW11bGF0ZWQmJmEuc3RvcFByb3BhZ2F0aW9uKCl9LHN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbjpmdW5jdGlvbigpe3ZhciBhPXRoaXMub3JpZ2luYWxFdmVudDt0aGlzLmlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkPWFiO2EmJiF0aGlzLmlzU2ltdWxhdGVkJiZhLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO3RoaXMuc3RvcFByb3BhZ2F0aW9uKCl9fTtkLmVhY2goe2FsdEtleTohMCxidWJibGVzOiEwLGNhbmNlbGFibGU6ITAsY2hhbmdlZFRvdWNoZXM6ITAsY3RybEtleTohMCxkZXRhaWw6ITAsZXZlbnRQaGFzZTohMCxtZXRhS2V5OiEwLHBhZ2VYOiEwLHBhZ2VZOiEwLHNoaWZ0S2V5OiEwLHZpZXc6ITAsImNoYXIiOiEwLGNvZGU6ITAsCmNoYXJDb2RlOiEwLGtleTohMCxrZXlDb2RlOiEwLGJ1dHRvbjohMCxidXR0b25zOiEwLGNsaWVudFg6ITAsY2xpZW50WTohMCxvZmZzZXRYOiEwLG9mZnNldFk6ITAscG9pbnRlcklkOiEwLHBvaW50ZXJUeXBlOiEwLHNjcmVlblg6ITAsc2NyZWVuWTohMCx0YXJnZXRUb3VjaGVzOiEwLHRvRWxlbWVudDohMCx0b3VjaGVzOiEwLHdoaWNoOiEwfSxkLmV2ZW50LmFkZFByb3ApO2QuZWFjaCh7Zm9jdXM6ImZvY3VzaW4iLGJsdXI6ImZvY3Vzb3V0In0sZnVuY3Rpb24oYSxiKXtmdW5jdGlvbiBjKGUpe2lmKEwuZG9jdW1lbnRNb2RlKXt2YXIgZj1HLmdldCh0aGlzLCJoYW5kbGUiKSxnPWQuZXZlbnQuZml4KGUpO2cudHlwZT0iZm9jdXNpbiI9PT1lLnR5cGU\/ImZvY3VzIjoiYmx1ciI7Zy5pc1NpbXVsYXRlZD0hMDtmKGUpO2cudGFyZ2V0PT09Zy5jdXJyZW50VGFyZ2V0JiZmKGcpfWVsc2UgZC5ldmVudC5zaW11bGF0ZShiLGUudGFyZ2V0LGQuZXZlbnQuZml4KGUpKX1kLmV2ZW50LnNwZWNpYWxbYV09CntzZXR1cDpmdW5jdGlvbigpe3ZhciBlO2lmKHBiKHRoaXMsYSwhMCksIUwuZG9jdW1lbnRNb2RlKXJldHVybiExOyhlPUcuZ2V0KHRoaXMsYikpfHx0aGlzLmFkZEV2ZW50TGlzdGVuZXIoYixjKTtHLnNldCh0aGlzLGIsKGV8fDApKzEpfSx0cmlnZ2VyOmZ1bmN0aW9uKCl7cmV0dXJuIHBiKHRoaXMsYSksITB9LHRlYXJkb3duOmZ1bmN0aW9uKCl7dmFyIGU7aWYoIUwuZG9jdW1lbnRNb2RlKXJldHVybiExOyhlPUcuZ2V0KHRoaXMsYiktMSk\/Ry5zZXQodGhpcyxiLGUpOih0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIoYixjKSxHLnJlbW92ZSh0aGlzLGIpKX0sX2RlZmF1bHQ6ZnVuY3Rpb24oZSl7cmV0dXJuIEcuZ2V0KGUudGFyZ2V0LGEpfSxkZWxlZ2F0ZVR5cGU6Yn07ZC5ldmVudC5zcGVjaWFsW2JdPXtzZXR1cDpmdW5jdGlvbigpe3ZhciBlPXRoaXMub3duZXJEb2N1bWVudHx8dGhpcy5kb2N1bWVudHx8dGhpcyxmPUwuZG9jdW1lbnRNb2RlP3RoaXM6ZSxnPUcuZ2V0KGYsYik7Z3x8CihMLmRvY3VtZW50TW9kZT90aGlzLmFkZEV2ZW50TGlzdGVuZXIoYixjKTplLmFkZEV2ZW50TGlzdGVuZXIoYSxjLCEwKSk7Ry5zZXQoZixiLChnfHwwKSsxKX0sdGVhcmRvd246ZnVuY3Rpb24oKXt2YXIgZT10aGlzLm93bmVyRG9jdW1lbnR8fHRoaXMuZG9jdW1lbnR8fHRoaXMsZj1MLmRvY3VtZW50TW9kZT90aGlzOmUsZz1HLmdldChmLGIpLTE7Zz9HLnNldChmLGIsZyk6KEwuZG9jdW1lbnRNb2RlP3RoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcihiLGMpOmUucmVtb3ZlRXZlbnRMaXN0ZW5lcihhLGMsITApLEcucmVtb3ZlKGYsYikpfX19KTtkLmVhY2goe21vdXNlZW50ZXI6Im1vdXNlb3ZlciIsbW91c2VsZWF2ZToibW91c2VvdXQiLHBvaW50ZXJlbnRlcjoicG9pbnRlcm92ZXIiLHBvaW50ZXJsZWF2ZToicG9pbnRlcm91dCJ9LGZ1bmN0aW9uKGEsYil7ZC5ldmVudC5zcGVjaWFsW2FdPXtkZWxlZ2F0ZVR5cGU6YixiaW5kVHlwZTpiLGhhbmRsZTpmdW5jdGlvbihjKXt2YXIgZSxmPQpjLnJlbGF0ZWRUYXJnZXQsZz1jLmhhbmRsZU9iajtyZXR1cm4gZiYmKGY9PT10aGlzfHxkLmNvbnRhaW5zKHRoaXMsZikpfHwoYy50eXBlPWcub3JpZ1R5cGUsZT1nLmhhbmRsZXIuYXBwbHkodGhpcyxhcmd1bWVudHMpLGMudHlwZT1iKSxlfX19KTtkLmZuLmV4dGVuZCh7b246ZnVuY3Rpb24oYSxiLGMsZSl7cmV0dXJuIGZiKHRoaXMsYSxiLGMsZSl9LG9uZTpmdW5jdGlvbihhLGIsYyxlKXtyZXR1cm4gZmIodGhpcyxhLGIsYyxlLDEpfSxvZmY6ZnVuY3Rpb24oYSxiLGMpe3ZhciBlLGY7aWYoYSYmYS5wcmV2ZW50RGVmYXVsdCYmYS5oYW5kbGVPYmopcmV0dXJuIGU9YS5oYW5kbGVPYmosZChhLmRlbGVnYXRlVGFyZ2V0KS5vZmYoZS5uYW1lc3BhY2U\/ZS5vcmlnVHlwZSsiLiIrZS5uYW1lc3BhY2U6ZS5vcmlnVHlwZSxlLnNlbGVjdG9yLGUuaGFuZGxlciksdGhpcztpZigib2JqZWN0Ij09dHlwZW9mIGEpe2ZvcihmIGluIGEpdGhpcy5vZmYoZixiLGFbZl0pO3JldHVybiB0aGlzfXJldHVybiExIT09CmImJiJmdW5jdGlvbiIhPXR5cGVvZiBifHwoYz1iLGI9dm9pZCAwKSwhMT09PWMmJihjPWJiKSx0aGlzLmVhY2goZnVuY3Rpb24oKXtkLmV2ZW50LnJlbW92ZSh0aGlzLGEsYyxiKX0pfX0pO3ZhciBuZD0vPHNjcmlwdHw8c3R5bGV8PGxpbmsvaSxSYz0vY2hlY2tlZFxzKig\/OltePV18PVxzKi5jaGVja2VkLikvaSxTYz0vXlxzKjwhXFtDREFUQVxbfFxdXF0+XHMqJC9nO2QuZXh0ZW5kKHtodG1sUHJlZmlsdGVyOmZ1bmN0aW9uKGEpe3JldHVybiBhfSxjbG9uZTpmdW5jdGlvbihhLGIsYyl7dmFyIGUsZixnLGg9YS5jbG9uZU5vZGUoITApLG09b2IoYSk7aWYoIShOLm5vQ2xvbmVDaGVja2VkfHwxIT09YS5ub2RlVHlwZSYmMTEhPT1hLm5vZGVUeXBlfHxkLmlzWE1MRG9jKGEpKSl7dmFyIGw9c2EoaCksdD0wO2ZvcihlPShmPXNhKGEpKS5sZW5ndGg7dDxlO3QrKyl7dmFyIHc9Zlt0XSxyPWxbdF07dm9pZCAwOyJpbnB1dCI9PT0oZz1yLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkpJiZIYi50ZXN0KHcudHlwZSk\/CnIuY2hlY2tlZD13LmNoZWNrZWQ6ImlucHV0IiE9PWcmJiJ0ZXh0YXJlYSIhPT1nfHwoci5kZWZhdWx0VmFsdWU9dy5kZWZhdWx0VmFsdWUpfX1pZihiKWlmKGMpZm9yKGY9Znx8c2EoYSksbD1sfHxzYShoKSx0PTAsZT1mLmxlbmd0aDt0PGU7dCsrKWdiKGZbdF0sbFt0XSk7ZWxzZSBnYihhLGgpO3JldHVybiAwPChsPXNhKGgsInNjcmlwdCIpKS5sZW5ndGgmJm5iKGwsIW0mJnNhKGEsInNjcmlwdCIpKSxofSxjbGVhbkRhdGE6ZnVuY3Rpb24oYSl7Zm9yKHZhciBiLGMsZSxmPWQuZXZlbnQuc3BlY2lhbCxnPTA7dm9pZCAwIT09KGM9YVtnXSk7ZysrKWlmKEdiKGMpKXtpZihiPWNbRy5leHBhbmRvXSl7aWYoYi5ldmVudHMpZm9yKGUgaW4gYi5ldmVudHMpZltlXT9kLmV2ZW50LnJlbW92ZShjLGUpOmQucmVtb3ZlRXZlbnQoYyxlLGIuaGFuZGxlKTtjW0cuZXhwYW5kb109dm9pZCAwfWNbeGEuZXhwYW5kb10mJihjW3hhLmV4cGFuZG9dPXZvaWQgMCl9fX0pO2QuZm4uZXh0ZW5kKHtkZXRhY2g6ZnVuY3Rpb24oYSl7cmV0dXJuIFRiKHRoaXMsCmEsITApfSxyZW1vdmU6ZnVuY3Rpb24oYSl7cmV0dXJuIFRiKHRoaXMsYSl9LHRleHQ6ZnVuY3Rpb24oYSl7cmV0dXJuIFhhKHRoaXMsZnVuY3Rpb24oYil7cmV0dXJuIHZvaWQgMD09PWI\/ZC50ZXh0KHRoaXMpOnRoaXMuZW1wdHkoKS5lYWNoKGZ1bmN0aW9uKCl7MSE9PXRoaXMubm9kZVR5cGUmJjExIT09dGhpcy5ub2RlVHlwZSYmOSE9PXRoaXMubm9kZVR5cGV8fCh0aGlzLnRleHRDb250ZW50PWIpfSl9LG51bGwsYSxhcmd1bWVudHMubGVuZ3RoKX0sYXBwZW5kOmZ1bmN0aW9uKCl7cmV0dXJuIGNiKHRoaXMsYXJndW1lbnRzLGZ1bmN0aW9uKGEpezEhPT10aGlzLm5vZGVUeXBlJiYxMSE9PXRoaXMubm9kZVR5cGUmJjkhPT10aGlzLm5vZGVUeXBlfHxTYih0aGlzLGEpLmFwcGVuZENoaWxkKGEpfSl9LHByZXBlbmQ6ZnVuY3Rpb24oKXtyZXR1cm4gY2IodGhpcyxhcmd1bWVudHMsZnVuY3Rpb24oYSl7aWYoMT09PXRoaXMubm9kZVR5cGV8fDExPT09dGhpcy5ub2RlVHlwZXx8OT09PQp0aGlzLm5vZGVUeXBlKXt2YXIgYj1TYih0aGlzLGEpO2IuaW5zZXJ0QmVmb3JlKGEsYi5maXJzdENoaWxkKX19KX0sYmVmb3JlOmZ1bmN0aW9uKCl7cmV0dXJuIGNiKHRoaXMsYXJndW1lbnRzLGZ1bmN0aW9uKGEpe3RoaXMucGFyZW50Tm9kZSYmdGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZShhLHRoaXMpfSl9LGFmdGVyOmZ1bmN0aW9uKCl7cmV0dXJuIGNiKHRoaXMsYXJndW1lbnRzLGZ1bmN0aW9uKGEpe3RoaXMucGFyZW50Tm9kZSYmdGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZShhLHRoaXMubmV4dFNpYmxpbmcpfSl9LGVtcHR5OmZ1bmN0aW9uKCl7Zm9yKHZhciBhLGI9MDtudWxsIT0oYT10aGlzW2JdKTtiKyspMT09PWEubm9kZVR5cGUmJihkLmNsZWFuRGF0YShzYShhLCExKSksYS50ZXh0Q29udGVudD0iIik7cmV0dXJuIHRoaXN9LGNsb25lOmZ1bmN0aW9uKGEsYil7cmV0dXJuIGE9bnVsbCE9YSYmYSxiPW51bGw9PWI\/YTpiLHRoaXMubWFwKGZ1bmN0aW9uKCl7cmV0dXJuIGQuY2xvbmUodGhpcywKYSxiKX0pfSxodG1sOmZ1bmN0aW9uKGEpe3JldHVybiBYYSh0aGlzLGZ1bmN0aW9uKGIpe3ZhciBjPXRoaXNbMF18fHt9LGU9MCxmPXRoaXMubGVuZ3RoO2lmKHZvaWQgMD09PWImJjE9PT1jLm5vZGVUeXBlKXJldHVybiBjLmlubmVySFRNTDtpZigic3RyaW5nIj09dHlwZW9mIGImJiFuZC50ZXN0KGIpJiYhQ2FbKG1jLmV4ZWMoYil8fFsiIiwiIl0pWzFdLnRvTG93ZXJDYXNlKCldKXtiPWQuaHRtbFByZWZpbHRlcihiKTt0cnl7Zm9yKDtlPGY7ZSsrKTE9PT0oYz10aGlzW2VdfHx7fSkubm9kZVR5cGUmJihkLmNsZWFuRGF0YShzYShjLCExKSksYy5pbm5lckhUTUw9Yik7Yz0wfWNhdGNoKGcpe319YyYmdGhpcy5lbXB0eSgpLmFwcGVuZChiKX0sbnVsbCxhLGFyZ3VtZW50cy5sZW5ndGgpfSxyZXBsYWNlV2l0aDpmdW5jdGlvbigpe3ZhciBhPVtdO3JldHVybiBjYih0aGlzLGFyZ3VtZW50cyxmdW5jdGlvbihiKXt2YXIgYz10aGlzLnBhcmVudE5vZGU7MD5kLmluQXJyYXkodGhpcyxhKSYmCihkLmNsZWFuRGF0YShzYSh0aGlzKSksYyYmYy5yZXBsYWNlQ2hpbGQoYix0aGlzKSl9LGEpfX0pO2QuZWFjaCh7YXBwZW5kVG86ImFwcGVuZCIscHJlcGVuZFRvOiJwcmVwZW5kIixpbnNlcnRCZWZvcmU6ImJlZm9yZSIsaW5zZXJ0QWZ0ZXI6ImFmdGVyIixyZXBsYWNlQWxsOiJyZXBsYWNlV2l0aCJ9LGZ1bmN0aW9uKGEsYil7ZC5mblthXT1mdW5jdGlvbihjKXtmb3IodmFyIGU9W10sZj1kKGMpLGc9Zi5sZW5ndGgtMSxoPTA7aDw9ZztoKyspYz1oPT09Zz90aGlzOnRoaXMuY2xvbmUoITApLGQoZltoXSlbYl0oYyksdWIuYXBwbHkoZSxjLmdldCgpKTtyZXR1cm4gdGhpcy5wdXNoU3RhY2soZSl9fSk7dmFyIGJjPW5ldyBSZWdFeHAoIl4oIit6YysiKSg\/IXB4KVthLXolXSskIiwiaSIpLGFjPS9eLS0vLFViPWZ1bmN0aW9uKGEpe3ZhciBiPWEub3duZXJEb2N1bWVudC5kZWZhdWx0VmlldztyZXR1cm4gYiYmYi5vcGVuZXJ8fChiPW4pLGIuZ2V0Q29tcHV0ZWRTdHlsZShhKX0sQmM9ZnVuY3Rpb24oYSwKYixjKXt2YXIgZSxmPXt9O2ZvcihlIGluIGIpZltlXT1hLnN0eWxlW2VdLGEuc3R5bGVbZV09YltlXTtmb3IoZSBpbiBjPWMuY2FsbChhKSxiKWEuc3R5bGVbZV09ZltlXTtyZXR1cm4gY30sVGM9bmV3IFJlZ0V4cChQYS5qb2luKCJ8IiksImkiKTshZnVuY3Rpb24oKXtmdW5jdGlvbiBhKCl7aWYobCl7bS5zdHlsZS5jc3NUZXh0PSJwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0Oi0xMTExMXB4O3dpZHRoOjYwcHg7bWFyZ2luLXRvcDoxcHg7cGFkZGluZzowO2JvcmRlcjowIjtsLnN0eWxlLmNzc1RleHQ9InBvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94O292ZXJmbG93OnNjcm9sbDttYXJnaW46YXV0bztib3JkZXI6MXB4O3BhZGRpbmc6MXB4O3dpZHRoOjYwJTt0b3A6MSUiO2piLmFwcGVuZENoaWxkKG0pLmFwcGVuZENoaWxkKGwpO3ZhciB0PW4uZ2V0Q29tcHV0ZWRTdHlsZShsKTtiPSIxJSIhPT10LnRvcDtoPTEyPT09TWF0aC5yb3VuZChwYXJzZUZsb2F0KHQubWFyZ2luTGVmdCkpOwpsLnN0eWxlLnJpZ2h0PSI2MCUiO2Y9MzY9PT1NYXRoLnJvdW5kKHBhcnNlRmxvYXQodC5yaWdodCkpO2M9MzY9PT1NYXRoLnJvdW5kKHBhcnNlRmxvYXQodC53aWR0aCkpO2wuc3R5bGUucG9zaXRpb249ImFic29sdXRlIjtlPTEyPT09TWF0aC5yb3VuZChwYXJzZUZsb2F0KGwub2Zmc2V0V2lkdGgvMykpO2piLnJlbW92ZUNoaWxkKG0pO2w9bnVsbH19dmFyIGIsYyxlLGYsZyxoLG09TC5jcmVhdGVFbGVtZW50KCJkaXYiKSxsPUwuY3JlYXRlRWxlbWVudCgiZGl2Iik7bC5zdHlsZSYmKGwuc3R5bGUuYmFja2dyb3VuZENsaXA9ImNvbnRlbnQtYm94IixsLmNsb25lTm9kZSghMCkuc3R5bGUuYmFja2dyb3VuZENsaXA9IiIsTi5jbGVhckNsb25lU3R5bGU9ImNvbnRlbnQtYm94Ij09PWwuc3R5bGUuYmFja2dyb3VuZENsaXAsZC5leHRlbmQoTix7Ym94U2l6aW5nUmVsaWFibGU6ZnVuY3Rpb24oKXtyZXR1cm4gYSgpLGN9LHBpeGVsQm94U3R5bGVzOmZ1bmN0aW9uKCl7cmV0dXJuIGEoKSwKZn0scGl4ZWxQb3NpdGlvbjpmdW5jdGlvbigpe3JldHVybiBhKCksYn0scmVsaWFibGVNYXJnaW5MZWZ0OmZ1bmN0aW9uKCl7cmV0dXJuIGEoKSxofSxzY3JvbGxib3hTaXplOmZ1bmN0aW9uKCl7cmV0dXJuIGEoKSxlfSxyZWxpYWJsZVRyRGltZW5zaW9uczpmdW5jdGlvbigpe3ZhciB0LHcscix6O3JldHVybiBudWxsPT1nJiYodD1MLmNyZWF0ZUVsZW1lbnQoInRhYmxlIiksdz1MLmNyZWF0ZUVsZW1lbnQoInRyIikscj1MLmNyZWF0ZUVsZW1lbnQoImRpdiIpLHQuc3R5bGUuY3NzVGV4dD0icG9zaXRpb246YWJzb2x1dGU7bGVmdDotMTExMTFweDtib3JkZXItY29sbGFwc2U6c2VwYXJhdGUiLHcuc3R5bGUuY3NzVGV4dD0iYm9yZGVyOjFweCBzb2xpZCIsdy5zdHlsZS5oZWlnaHQ9IjFweCIsci5zdHlsZS5oZWlnaHQ9IjlweCIsci5zdHlsZS5kaXNwbGF5PSJibG9jayIsamIuYXBwZW5kQ2hpbGQodCkuYXBwZW5kQ2hpbGQodykuYXBwZW5kQ2hpbGQociksej1uLmdldENvbXB1dGVkU3R5bGUodyksCmc9cGFyc2VJbnQoei5oZWlnaHQsMTApK3BhcnNlSW50KHouYm9yZGVyVG9wV2lkdGgsMTApK3BhcnNlSW50KHouYm9yZGVyQm90dG9tV2lkdGgsMTApPT09dy5vZmZzZXRIZWlnaHQsamIucmVtb3ZlQ2hpbGQodCkpLGd9fSkpfSgpO3ZhciByYz1bIldlYmtpdCIsIk1veiIsIm1zIl0scWM9TC5jcmVhdGVFbGVtZW50KCJkaXYiKS5zdHlsZSxwYz17fSxvZD0vXihub25lfHRhYmxlKD8hLWNbZWFdKS4rKS8scGQ9e3Bvc2l0aW9uOiJhYnNvbHV0ZSIsdmlzaWJpbGl0eToiaGlkZGVuIixkaXNwbGF5OiJibG9jayJ9LENjPXtsZXR0ZXJTcGFjaW5nOiIwIixmb250V2VpZ2h0OiI0MDAifTtkLmV4dGVuZCh7Y3NzSG9va3M6e29wYWNpdHk6e2dldDpmdW5jdGlvbihhLGIpe2lmKGIpcmV0dXJuIGE9S2EoYSwib3BhY2l0eSIpLCIiPT09YT8iMSI6YX19fSxjc3NOdW1iZXI6e2FuaW1hdGlvbkl0ZXJhdGlvbkNvdW50OiEwLGFzcGVjdFJhdGlvOiEwLGJvcmRlckltYWdlU2xpY2U6ITAsY29sdW1uQ291bnQ6ITAsCmZsZXhHcm93OiEwLGZsZXhTaHJpbms6ITAsZm9udFdlaWdodDohMCxncmlkQXJlYTohMCxncmlkQ29sdW1uOiEwLGdyaWRDb2x1bW5FbmQ6ITAsZ3JpZENvbHVtblN0YXJ0OiEwLGdyaWRSb3c6ITAsZ3JpZFJvd0VuZDohMCxncmlkUm93U3RhcnQ6ITAsbGluZUhlaWdodDohMCxvcGFjaXR5OiEwLG9yZGVyOiEwLG9ycGhhbnM6ITAsc2NhbGU6ITAsd2lkb3dzOiEwLHpJbmRleDohMCx6b29tOiEwLGZpbGxPcGFjaXR5OiEwLGZsb29kT3BhY2l0eTohMCxzdG9wT3BhY2l0eTohMCxzdHJva2VNaXRlcmxpbWl0OiEwLHN0cm9rZU9wYWNpdHk6ITB9LGNzc1Byb3BzOnt9LHN0eWxlOmZ1bmN0aW9uKGEsYixjLGUpe2lmKGEmJjMhPT1hLm5vZGVUeXBlJiY4IT09YS5ub2RlVHlwZSYmYS5zdHlsZSl7dmFyIGYsZyxoLG09QmEoYiksbD1hYy50ZXN0KGIpLHQ9YS5zdHlsZTtpZihsfHwoYj1BYihtKSksaD1kLmNzc0hvb2tzW2JdfHxkLmNzc0hvb2tzW21dLHZvaWQgMD09PWMpcmV0dXJuIGgmJgoiZ2V0ImluIGgmJnZvaWQgMCE9PShmPWguZ2V0KGEsITEsZSkpP2Y6dFtiXTsic3RyaW5nIj09PShnPXR5cGVvZiBjKSYmKGY9eWIuZXhlYyhjKSkmJmZbMV0mJihjPVBiKGEsYixmKSxnPSJudW1iZXIiKTtudWxsIT1jJiZjPT1jJiYoIm51bWJlciIhPT1nfHxsfHwoYys9ZiYmZlszXXx8KGQuY3NzTnVtYmVyW21dPyIiOiJweCIpKSxOLmNsZWFyQ2xvbmVTdHlsZXx8IiIhPT1jfHwwIT09Yi5pbmRleE9mKCJiYWNrZ3JvdW5kIil8fCh0W2JdPSJpbmhlcml0IiksaCYmInNldCJpbiBoJiZ2b2lkIDA9PT0oYz1oLnNldChhLGMsZSkpfHwobD90LnNldFByb3BlcnR5KGIsYyk6dFtiXT1jKSl9fSxjc3M6ZnVuY3Rpb24oYSxiLGMsZSl7dmFyIGYsZyxoLG09QmEoYik7cmV0dXJuIGFjLnRlc3QoYil8fChiPUFiKG0pKSwoaD1kLmNzc0hvb2tzW2JdfHxkLmNzc0hvb2tzW21dKSYmImdldCJpbiBoJiYoZj1oLmdldChhLCEwLGMpKSx2b2lkIDA9PT1mJiYoZj1LYShhLGIsZSkpLCJub3JtYWwiPT09CmYmJmIgaW4gQ2MmJihmPUNjW2JdKSwiIj09PWN8fGM\/KGc9cGFyc2VGbG9hdChmKSwhMD09PWN8fGlzRmluaXRlKGcpP2d8fDA6Zik6Zn19KTtkLmVhY2goWyJoZWlnaHQiLCJ3aWR0aCJdLGZ1bmN0aW9uKGEsYil7ZC5jc3NIb29rc1tiXT17Z2V0OmZ1bmN0aW9uKGMsZSxmKXtpZihlKXJldHVybiFvZC50ZXN0KGQuY3NzKGMsImRpc3BsYXkiKSl8fGMuZ2V0Q2xpZW50UmVjdHMoKS5sZW5ndGgmJmMuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGg\/QmIoYyxiLGYpOkJjKGMscGQsZnVuY3Rpb24oKXtyZXR1cm4gQmIoYyxiLGYpfSl9LHNldDpmdW5jdGlvbihjLGUsZil7dmFyIGcsaD1VYihjKSxtPSFOLnNjcm9sbGJveFNpemUoKSYmImFic29sdXRlIj09PWgucG9zaXRpb24sbD0obXx8ZikmJiJib3JkZXItYm94Ij09PWQuY3NzKGMsImJveFNpemluZyIsITEsaCk7Zj1mP3JiKGMsYixmLGwsaCk6MDtyZXR1cm4gbCYmbSYmKGYtPU1hdGguY2VpbChjWyJvZmZzZXQiK2JbMF0udG9VcHBlckNhc2UoKSsKYi5zbGljZSgxKV0tcGFyc2VGbG9hdChoW2JdKS1yYihjLGIsImJvcmRlciIsITEsaCktLjUpKSxmJiYoZz15Yi5leGVjKGUpKSYmInB4IiE9PShnWzNdfHwicHgiKSYmKGMuc3R5bGVbYl09ZSxlPWQuY3NzKGMsYikpLFdiKDAsZSxmKX19fSk7ZC5jc3NIb29rcy5tYXJnaW5MZWZ0PVZiKE4ucmVsaWFibGVNYXJnaW5MZWZ0LGZ1bmN0aW9uKGEsYil7aWYoYilyZXR1cm4ocGFyc2VGbG9hdChLYShhLCJtYXJnaW5MZWZ0IikpfHxhLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQtQmMoYSx7bWFyZ2luTGVmdDowfSxmdW5jdGlvbigpe3JldHVybiBhLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnR9KSkrInB4In0pO2QuZWFjaCh7bWFyZ2luOiIiLHBhZGRpbmc6IiIsYm9yZGVyOiJXaWR0aCJ9LGZ1bmN0aW9uKGEsYil7ZC5jc3NIb29rc1thK2JdPXtleHBhbmQ6ZnVuY3Rpb24oYyl7dmFyIGU9MCxmPXt9O2ZvcihjPSJzdHJpbmciPT10eXBlb2YgYz9jLnNwbGl0KCIgIik6W2NdOzQ+CmU7ZSsrKWZbYStQYVtlXStiXT1jW2VdfHxjW2UtMl18fGNbMF07cmV0dXJuIGZ9fTsibWFyZ2luIiE9PWEmJihkLmNzc0hvb2tzW2ErYl0uc2V0PVdiKX0pO2QuZm4uZXh0ZW5kKHtjc3M6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gWGEodGhpcyxmdW5jdGlvbihjLGUsZil7dmFyIGcsaD17fSxtPTA7aWYoQXJyYXkuaXNBcnJheShlKSl7Zj1VYihjKTtmb3IoZz1lLmxlbmd0aDttPGc7bSsrKWhbZVttXV09ZC5jc3MoYyxlW21dLCExLGYpO3JldHVybiBofXJldHVybiB2b2lkIDAhPT1mP2Quc3R5bGUoYyxlLGYpOmQuY3NzKGMsZSl9LGEsYiwxPGFyZ3VtZW50cy5sZW5ndGgpfX0pOygoZC5Ud2Vlbj16YSkucHJvdG90eXBlPXtjb25zdHJ1Y3Rvcjp6YSxpbml0OmZ1bmN0aW9uKGEsYixjLGUsZixnKXt0aGlzLmVsZW09YTt0aGlzLnByb3A9Yzt0aGlzLmVhc2luZz1mfHxkLmVhc2luZy5fZGVmYXVsdDt0aGlzLm9wdGlvbnM9Yjt0aGlzLnN0YXJ0PXRoaXMubm93PXRoaXMuY3VyKCk7dGhpcy5lbmQ9CmU7dGhpcy51bml0PWd8fChkLmNzc051bWJlcltjXT8iIjoicHgiKX0sY3VyOmZ1bmN0aW9uKCl7dmFyIGE9emEucHJvcEhvb2tzW3RoaXMucHJvcF07cmV0dXJuIGEmJmEuZ2V0P2EuZ2V0KHRoaXMpOnphLnByb3BIb29rcy5fZGVmYXVsdC5nZXQodGhpcyl9LHJ1bjpmdW5jdGlvbihhKXt2YXIgYixjPXphLnByb3BIb29rc1t0aGlzLnByb3BdO3JldHVybiB0aGlzLm9wdGlvbnMuZHVyYXRpb24\/dGhpcy5wb3M9Yj1kLmVhc2luZ1t0aGlzLmVhc2luZ10oYSx0aGlzLm9wdGlvbnMuZHVyYXRpb24qYSwwLDEsdGhpcy5vcHRpb25zLmR1cmF0aW9uKTp0aGlzLnBvcz1iPWEsdGhpcy5ub3c9KHRoaXMuZW5kLXRoaXMuc3RhcnQpKmIrdGhpcy5zdGFydCx0aGlzLm9wdGlvbnMuc3RlcCYmdGhpcy5vcHRpb25zLnN0ZXAuY2FsbCh0aGlzLmVsZW0sdGhpcy5ub3csdGhpcyksYyYmYy5zZXQ\/Yy5zZXQodGhpcyk6emEucHJvcEhvb2tzLl9kZWZhdWx0LnNldCh0aGlzKSx0aGlzfX0pLmluaXQucHJvdG90eXBlPQp6YS5wcm90b3R5cGU7KHphLnByb3BIb29rcz17X2RlZmF1bHQ6e2dldDpmdW5jdGlvbihhKXt2YXIgYjtyZXR1cm4gMSE9PWEuZWxlbS5ub2RlVHlwZXx8bnVsbCE9YS5lbGVtW2EucHJvcF0mJm51bGw9PWEuZWxlbS5zdHlsZVthLnByb3BdP2EuZWxlbVthLnByb3BdOihiPWQuY3NzKGEuZWxlbSxhLnByb3AsIiIpKSYmImF1dG8iIT09Yj9iOjB9LHNldDpmdW5jdGlvbihhKXtkLmZ4LnN0ZXBbYS5wcm9wXT9kLmZ4LnN0ZXBbYS5wcm9wXShhKToxIT09YS5lbGVtLm5vZGVUeXBlfHwhZC5jc3NIb29rc1thLnByb3BdJiZudWxsPT1hLmVsZW0uc3R5bGVbQWIoYS5wcm9wKV0\/YS5lbGVtW2EucHJvcF09YS5ub3c6ZC5zdHlsZShhLmVsZW0sYS5wcm9wLGEubm93K2EudW5pdCl9fX0pLnNjcm9sbFRvcD16YS5wcm9wSG9va3Muc2Nyb2xsTGVmdD17c2V0OmZ1bmN0aW9uKGEpe2EuZWxlbS5ub2RlVHlwZSYmYS5lbGVtLnBhcmVudE5vZGUmJihhLmVsZW1bYS5wcm9wXT1hLm5vdyl9fTtkLmVhc2luZz0Ke2xpbmVhcjpmdW5jdGlvbihhKXtyZXR1cm4gYX0sc3dpbmc6ZnVuY3Rpb24oYSl7cmV0dXJuLjUtTWF0aC5jb3MoYSpNYXRoLlBJKS8yfSxfZGVmYXVsdDoic3dpbmcifTtkLmZ4PXphLnByb3RvdHlwZS5pbml0O2QuZnguc3RlcD17fTt2YXIgc2IsWGIscWQ9L14oPzp0b2dnbGV8c2hvd3xoaWRlKSQvLHJkPS9xdWV1ZUhvb2tzJC87ZC5BbmltYXRpb249ZC5leHRlbmQoeCx7dHdlZW5lcnM6eyIqIjpbZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzLmNyZWF0ZVR3ZWVuKGEsYik7cmV0dXJuIFBiKGMuZWxlbSxhLHliLmV4ZWMoYiksYyksY31dfSx0d2VlbmVyOmZ1bmN0aW9uKGEsYil7TShhKT8oYj1hLGE9WyIqIl0pOmE9YS5tYXRjaChMYSk7Zm9yKHZhciBjLGU9MCxmPWEubGVuZ3RoO2U8ZjtlKyspYz1hW2VdLHgudHdlZW5lcnNbY109eC50d2VlbmVyc1tjXXx8W10seC50d2VlbmVyc1tjXS51bnNoaWZ0KGIpfSxwcmVmaWx0ZXJzOltmdW5jdGlvbihhLGIsYyl7dmFyIGUsZixnLGgsCm0sbCx0LHc9IndpZHRoImluIGJ8fCJoZWlnaHQiaW4gYixyPXRoaXMsej17fSxEPWEuc3R5bGUsRj1hLm5vZGVUeXBlJiZRYihhKSxPPUcuZ2V0KGEsImZ4c2hvdyIpO2ZvcihlIGluIGMucXVldWV8fChudWxsPT0oaD1kLl9xdWV1ZUhvb2tzKGEsImZ4IikpLnVucXVldWVkJiYoaC51bnF1ZXVlZD0wLG09aC5lbXB0eS5maXJlLGguZW1wdHkuZmlyZT1mdW5jdGlvbigpe2gudW5xdWV1ZWR8fG0oKX0pLGgudW5xdWV1ZWQrKyxyLmFsd2F5cyhmdW5jdGlvbigpe3IuYWx3YXlzKGZ1bmN0aW9uKCl7aC51bnF1ZXVlZC0tO2QucXVldWUoYSwiZngiKS5sZW5ndGh8fGguZW1wdHkuZmlyZSgpfSl9KSksYilpZihmPWJbZV0scWQudGVzdChmKSl7aWYoZGVsZXRlIGJbZV0sZz1nfHwidG9nZ2xlIj09PWYsZj09PShGPyJoaWRlIjoic2hvdyIpKXtpZigic2hvdyIhPT1mfHwhT3x8dm9pZCAwPT09T1tlXSljb250aW51ZTtGPSEwfXpbZV09TyYmT1tlXXx8ZC5zdHlsZShhLGUpfWlmKChiPSFkLmlzRW1wdHlPYmplY3QoYikpfHwKIWQuaXNFbXB0eU9iamVjdCh6KSlmb3IoZSBpbiB3JiYxPT09YS5ub2RlVHlwZSYmKGMub3ZlcmZsb3c9W0Qub3ZlcmZsb3csRC5vdmVyZmxvd1gsRC5vdmVyZmxvd1ldLG51bGw9PShsPU8mJk8uZGlzcGxheSkmJihsPUcuZ2V0KGEsImRpc3BsYXkiKSksIm5vbmUiPT09KHQ9ZC5jc3MoYSwiZGlzcGxheSIpKSYmKGw\/dD1sOigkYShbYV0sITApLGw9YS5zdHlsZS5kaXNwbGF5fHxsLHQ9ZC5jc3MoYSwiZGlzcGxheSIpLCRhKFthXSkpKSwoImlubGluZSI9PT10fHwiaW5saW5lLWJsb2NrIj09PXQmJm51bGwhPWwpJiYibm9uZSI9PT1kLmNzcyhhLCJmbG9hdCIpJiYoYnx8KHIuZG9uZShmdW5jdGlvbigpe0QuZGlzcGxheT1sfSksbnVsbD09bCYmKHQ9RC5kaXNwbGF5LGw9Im5vbmUiPT09dD8iIjp0KSksRC5kaXNwbGF5PSJpbmxpbmUtYmxvY2siKSksYy5vdmVyZmxvdyYmKEQub3ZlcmZsb3c9ImhpZGRlbiIsci5hbHdheXMoZnVuY3Rpb24oKXtELm92ZXJmbG93PWMub3ZlcmZsb3dbMF07CkQub3ZlcmZsb3dYPWMub3ZlcmZsb3dbMV07RC5vdmVyZmxvd1k9Yy5vdmVyZmxvd1syXX0pKSxiPSExLHopYnx8KE8\/ImhpZGRlbiJpbiBPJiYoRj1PLmhpZGRlbik6Tz1HLmFjY2VzcyhhLCJmeHNob3ciLHtkaXNwbGF5Omx9KSxnJiYoTy5oaWRkZW49IUYpLEYmJiRhKFthXSwhMCksci5kb25lKGZ1bmN0aW9uKCl7Zm9yKGUgaW4gRnx8JGEoW2FdKSxHLnJlbW92ZShhLCJmeHNob3ciKSx6KWQuc3R5bGUoYSxlLHpbZV0pfSkpLGI9dShGP09bZV06MCxlLHIpLGUgaW4gT3x8KE9bZV09Yi5zdGFydCxGJiYoYi5lbmQ9Yi5zdGFydCxiLnN0YXJ0PTApKX1dLHByZWZpbHRlcjpmdW5jdGlvbihhLGIpe2I\/eC5wcmVmaWx0ZXJzLnVuc2hpZnQoYSk6eC5wcmVmaWx0ZXJzLnB1c2goYSl9fSk7ZC5zcGVlZD1mdW5jdGlvbihhLGIsYyl7dmFyIGU9YSYmIm9iamVjdCI9PXR5cGVvZiBhP2QuZXh0ZW5kKHt9LGEpOntjb21wbGV0ZTpjfHwhYyYmYnx8TShhKSYmYSxkdXJhdGlvbjphLGVhc2luZzpjJiYKYnx8YiYmIU0oYikmJmJ9O3JldHVybiBkLmZ4Lm9mZj9lLmR1cmF0aW9uPTA6Im51bWJlciIhPXR5cGVvZiBlLmR1cmF0aW9uJiYoZS5kdXJhdGlvbiBpbiBkLmZ4LnNwZWVkcz9lLmR1cmF0aW9uPWQuZnguc3BlZWRzW2UuZHVyYXRpb25dOmUuZHVyYXRpb249ZC5meC5zcGVlZHMuX2RlZmF1bHQpLG51bGwhPWUucXVldWUmJiEwIT09ZS5xdWV1ZXx8KGUucXVldWU9ImZ4IiksZS5vbGQ9ZS5jb21wbGV0ZSxlLmNvbXBsZXRlPWZ1bmN0aW9uKCl7TShlLm9sZCkmJmUub2xkLmNhbGwodGhpcyk7ZS5xdWV1ZSYmZC5kZXF1ZXVlKHRoaXMsZS5xdWV1ZSl9LGV9O2QuZm4uZXh0ZW5kKHtmYWRlVG86ZnVuY3Rpb24oYSxiLGMsZSl7cmV0dXJuIHRoaXMuZmlsdGVyKFFiKS5jc3MoIm9wYWNpdHkiLDApLnNob3coKS5lbmQoKS5hbmltYXRlKHtvcGFjaXR5OmJ9LGEsYyxlKX0sYW5pbWF0ZTpmdW5jdGlvbihhLGIsYyxlKXt2YXIgZj1kLmlzRW1wdHlPYmplY3QoYSksZz1kLnNwZWVkKGIsYyxlKTsKYj1mdW5jdGlvbigpe3ZhciBoPXgodGhpcyxkLmV4dGVuZCh7fSxhKSxnKTsoZnx8Ry5nZXQodGhpcywiZmluaXNoIikpJiZoLnN0b3AoITApfTtyZXR1cm4gYi5maW5pc2g9YixmfHwhMT09PWcucXVldWU\/dGhpcy5lYWNoKGIpOnRoaXMucXVldWUoZy5xdWV1ZSxiKX0sc3RvcDpmdW5jdGlvbihhLGIsYyl7dmFyIGU9ZnVuY3Rpb24oZil7dmFyIGc9Zi5zdG9wO2RlbGV0ZSBmLnN0b3A7ZyhjKX07cmV0dXJuInN0cmluZyIhPXR5cGVvZiBhJiYoYz1iLGI9YSxhPXZvaWQgMCksYiYmdGhpcy5xdWV1ZShhfHwiZngiLFtdKSx0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZj0hMCxnPW51bGwhPWEmJmErInF1ZXVlSG9va3MiLGg9ZC50aW1lcnMsbT1HLmdldCh0aGlzKTtpZihnKW1bZ10mJm1bZ10uc3RvcCYmZShtW2ddKTtlbHNlIGZvcihnIGluIG0pbVtnXSYmbVtnXS5zdG9wJiZyZC50ZXN0KGcpJiZlKG1bZ10pO2ZvcihnPWgubGVuZ3RoO2ctLTspaFtnXS5lbGVtIT09dGhpc3x8bnVsbCE9CmEmJmhbZ10ucXVldWUhPT1hfHwoaFtnXS5hbmltLnN0b3AoYyksZj0hMSxoLnNwbGljZShnLDEpKTshZiYmY3x8ZC5kZXF1ZXVlKHRoaXMsYSl9KX0sZmluaXNoOmZ1bmN0aW9uKGEpe3JldHVybiExIT09YSYmKGE9YXx8ImZ4IiksdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGI9Ry5nZXQodGhpcyksYz1iW2ErInF1ZXVlIl0sZT1iW2ErInF1ZXVlSG9va3MiXSxmPWQudGltZXJzLGc9Yz9jLmxlbmd0aDowO2IuZmluaXNoPSEwO2QucXVldWUodGhpcyxhLFtdKTtlJiZlLnN0b3AmJmUuc3RvcC5jYWxsKHRoaXMsITApO2ZvcihlPWYubGVuZ3RoO2UtLTspZltlXS5lbGVtPT09dGhpcyYmZltlXS5xdWV1ZT09PWEmJihmW2VdLmFuaW0uc3RvcCghMCksZi5zcGxpY2UoZSwxKSk7Zm9yKGU9MDtlPGc7ZSsrKWNbZV0mJmNbZV0uZmluaXNoJiZjW2VdLmZpbmlzaC5jYWxsKHRoaXMpO2RlbGV0ZSBiLmZpbmlzaH0pfX0pO2QuZWFjaChbInRvZ2dsZSIsInNob3ciLCJoaWRlIl0sZnVuY3Rpb24oYSwKYil7dmFyIGM9ZC5mbltiXTtkLmZuW2JdPWZ1bmN0aW9uKGUsZixnKXtyZXR1cm4gbnVsbD09ZXx8ImJvb2xlYW4iPT10eXBlb2YgZT9jLmFwcGx5KHRoaXMsYXJndW1lbnRzKTp0aGlzLmFuaW1hdGUodGIoYiwhMCksZSxmLGcpfX0pO2QuZWFjaCh7c2xpZGVEb3duOnRiKCJzaG93Iiksc2xpZGVVcDp0YigiaGlkZSIpLHNsaWRlVG9nZ2xlOnRiKCJ0b2dnbGUiKSxmYWRlSW46e29wYWNpdHk6InNob3cifSxmYWRlT3V0OntvcGFjaXR5OiJoaWRlIn0sZmFkZVRvZ2dsZTp7b3BhY2l0eToidG9nZ2xlIn19LGZ1bmN0aW9uKGEsYil7ZC5mblthXT1mdW5jdGlvbihjLGUsZil7cmV0dXJuIHRoaXMuYW5pbWF0ZShiLGMsZSxmKX19KTtkLnRpbWVycz1bXTtkLmZ4LnRpY2s9ZnVuY3Rpb24oKXt2YXIgYSxiPTAsYz1kLnRpbWVycztmb3Ioc2I9RGF0ZS5ub3coKTtiPGMubGVuZ3RoO2IrKykoYT1jW2JdKSgpfHxjW2JdIT09YXx8Yy5zcGxpY2UoYi0tLDEpO2MubGVuZ3RofHxkLmZ4LnN0b3AoKTsKc2I9dm9pZCAwfTtkLmZ4LnRpbWVyPWZ1bmN0aW9uKGEpe2QudGltZXJzLnB1c2goYSk7ZC5meC5zdGFydCgpfTtkLmZ4LmludGVydmFsPTEzO2QuZnguc3RhcnQ9ZnVuY3Rpb24oKXtYYnx8KFhiPSEwLENiKCkpfTtkLmZ4LnN0b3A9ZnVuY3Rpb24oKXtYYj1udWxsfTtkLmZ4LnNwZWVkcz17c2xvdzo2MDAsZmFzdDoyMDAsX2RlZmF1bHQ6NDAwfTtkLmZuLmRlbGF5PWZ1bmN0aW9uKGEsYil7cmV0dXJuIGE9ZC5meCYmZC5meC5zcGVlZHNbYV18fGEsYj1ifHwiZngiLHRoaXMucXVldWUoYixmdW5jdGlvbihjLGUpe3ZhciBmPW4uc2V0VGltZW91dChjLGEpO2Uuc3RvcD1mdW5jdGlvbigpe24uY2xlYXJUaW1lb3V0KGYpfX0pfTt2YXIgSWI9TC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpLHNkPUwuY3JlYXRlRWxlbWVudCgic2VsZWN0IikuYXBwZW5kQ2hpbGQoTC5jcmVhdGVFbGVtZW50KCJvcHRpb24iKSk7SWIudHlwZT0iY2hlY2tib3giO04uY2hlY2tPbj0iIiE9PUliLnZhbHVlO04ub3B0U2VsZWN0ZWQ9CnNkLnNlbGVjdGVkOyhJYj1MLmNyZWF0ZUVsZW1lbnQoImlucHV0IikpLnZhbHVlPSJ0IjtJYi50eXBlPSJyYWRpbyI7Ti5yYWRpb1ZhbHVlPSJ0Ij09PUliLnZhbHVlO3ZhciBKYj1kLmV4cHIuYXR0ckhhbmRsZTtkLmZuLmV4dGVuZCh7YXR0cjpmdW5jdGlvbihhLGIpe3JldHVybiBYYSh0aGlzLGQuYXR0cixhLGIsMTxhcmd1bWVudHMubGVuZ3RoKX0scmVtb3ZlQXR0cjpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7ZC5yZW1vdmVBdHRyKHRoaXMsYSl9KX19KTtkLmV4dGVuZCh7YXR0cjpmdW5jdGlvbihhLGIsYyl7dmFyIGUsZixnPWEubm9kZVR5cGU7aWYoMyE9PWcmJjghPT1nJiYyIT09ZylyZXR1cm4idW5kZWZpbmVkIj09dHlwZW9mIGEuZ2V0QXR0cmlidXRlP2QucHJvcChhLGIsYyk6KDE9PT1nJiZkLmlzWE1MRG9jKGEpfHwoZj1kLmF0dHJIb29rc1tiLnRvTG93ZXJDYXNlKCldfHwoZC5leHByLm1hdGNoLmJvb2wudGVzdChiKT90ZDp2b2lkIDApKSwKdm9pZCAwIT09Yz9udWxsPT09Yz92b2lkIGQucmVtb3ZlQXR0cihhLGIpOmYmJiJzZXQiaW4gZiYmdm9pZCAwIT09KGU9Zi5zZXQoYSxjLGIpKT9lOihhLnNldEF0dHJpYnV0ZShiLGMrIiIpLGMpOmYmJiJnZXQiaW4gZiYmbnVsbCE9PShlPWYuZ2V0KGEsYikpP2U6bnVsbD09KGU9ZC5maW5kLmF0dHIoYSxiKSk\/dm9pZCAwOmUpfSxhdHRySG9va3M6e3R5cGU6e3NldDpmdW5jdGlvbihhLGIpe2lmKCFOLnJhZGlvVmFsdWUmJiJyYWRpbyI9PT1iJiZYKGEsImlucHV0Iikpe3ZhciBjPWEudmFsdWU7cmV0dXJuIGEuc2V0QXR0cmlidXRlKCJ0eXBlIixiKSxjJiYoYS52YWx1ZT1jKSxifX19fSxyZW1vdmVBdHRyOmZ1bmN0aW9uKGEsYil7dmFyIGM9MCxlPWImJmIubWF0Y2goTGEpO2lmKGUmJjE9PT1hLm5vZGVUeXBlKWZvcig7Yj1lW2MrK107KWEucmVtb3ZlQXR0cmlidXRlKGIpfX0pO3ZhciB0ZD17c2V0OmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4hMT09PWI\/ZC5yZW1vdmVBdHRyKGEsCmMpOmEuc2V0QXR0cmlidXRlKGMsYyksY319O2QuZWFjaChkLmV4cHIubWF0Y2guYm9vbC5zb3VyY2UubWF0Y2goL1x3Ky9nKSxmdW5jdGlvbihhLGIpe3ZhciBjPUpiW2JdfHxkLmZpbmQuYXR0cjtKYltiXT1mdW5jdGlvbihlLGYsZyl7dmFyIGgsbSxsPWYudG9Mb3dlckNhc2UoKTtyZXR1cm4gZ3x8KG09SmJbbF0sSmJbbF09aCxoPW51bGwhPWMoZSxmLGcpP2w6bnVsbCxKYltsXT1tKSxofX0pO3ZhciB1ZD0vXig\/OmlucHV0fHNlbGVjdHx0ZXh0YXJlYXxidXR0b24pJC9pLHZkPS9eKD86YXxhcmVhKSQvaTtkLmZuLmV4dGVuZCh7cHJvcDpmdW5jdGlvbihhLGIpe3JldHVybiBYYSh0aGlzLGQucHJvcCxhLGIsMTxhcmd1bWVudHMubGVuZ3RoKX0scmVtb3ZlUHJvcDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7ZGVsZXRlIHRoaXNbZC5wcm9wRml4W2FdfHxhXX0pfX0pO2QuZXh0ZW5kKHtwcm9wOmZ1bmN0aW9uKGEsYixjKXt2YXIgZSxmLGc9YS5ub2RlVHlwZTsKaWYoMyE9PWcmJjghPT1nJiYyIT09ZylyZXR1cm4gMT09PWcmJmQuaXNYTUxEb2MoYSl8fChiPWQucHJvcEZpeFtiXXx8YixmPWQucHJvcEhvb2tzW2JdKSx2b2lkIDAhPT1jP2YmJiJzZXQiaW4gZiYmdm9pZCAwIT09KGU9Zi5zZXQoYSxjLGIpKT9lOmFbYl09YzpmJiYiZ2V0ImluIGYmJm51bGwhPT0oZT1mLmdldChhLGIpKT9lOmFbYl19LHByb3BIb29rczp7dGFiSW5kZXg6e2dldDpmdW5jdGlvbihhKXt2YXIgYj1kLmZpbmQuYXR0cihhLCJ0YWJpbmRleCIpO3JldHVybiBiP3BhcnNlSW50KGIsMTApOnVkLnRlc3QoYS5ub2RlTmFtZSl8fHZkLnRlc3QoYS5ub2RlTmFtZSkmJmEuaHJlZj8wOi0xfX19LHByb3BGaXg6eyJmb3IiOiJodG1sRm9yIiwiY2xhc3MiOiJjbGFzc05hbWUifX0pO04ub3B0U2VsZWN0ZWR8fChkLnByb3BIb29rcy5zZWxlY3RlZD17Z2V0OmZ1bmN0aW9uKGEpe2E9YS5wYXJlbnROb2RlO3JldHVybiBhJiZhLnBhcmVudE5vZGUmJmEucGFyZW50Tm9kZS5zZWxlY3RlZEluZGV4LApudWxsfSxzZXQ6ZnVuY3Rpb24oYSl7YT1hLnBhcmVudE5vZGU7YSYmKGEuc2VsZWN0ZWRJbmRleCxhLnBhcmVudE5vZGUmJmEucGFyZW50Tm9kZS5zZWxlY3RlZEluZGV4KX19KTtkLmVhY2goInRhYkluZGV4IHJlYWRPbmx5IG1heExlbmd0aCBjZWxsU3BhY2luZyBjZWxsUGFkZGluZyByb3dTcGFuIGNvbFNwYW4gdXNlTWFwIGZyYW1lQm9yZGVyIGNvbnRlbnRFZGl0YWJsZSIuc3BsaXQoIiAiKSxmdW5jdGlvbigpe2QucHJvcEZpeFt0aGlzLnRvTG93ZXJDYXNlKCldPXRoaXN9KTtkLmZuLmV4dGVuZCh7YWRkQ2xhc3M6ZnVuY3Rpb24oYSl7dmFyIGIsYyxlLGYsZyxoO3JldHVybiBNKGEpP3RoaXMuZWFjaChmdW5jdGlvbihtKXtkKHRoaXMpLmFkZENsYXNzKGEuY2FsbCh0aGlzLG0sSCh0aGlzKSkpfSk6KGI9UChhKSkubGVuZ3RoP3RoaXMuZWFjaChmdW5jdGlvbigpe2lmKGU9SCh0aGlzKSxjPTE9PT10aGlzLm5vZGVUeXBlJiYiICIrQyhlKSsiICIpe2ZvcihnPTA7ZzxiLmxlbmd0aDtnKyspZj0KYltnXSwwPmMuaW5kZXhPZigiICIrZisiICIpJiYoYys9ZisiICIpO2g9QyhjKTtlIT09aCYmdGhpcy5zZXRBdHRyaWJ1dGUoImNsYXNzIixoKX19KTp0aGlzfSxyZW1vdmVDbGFzczpmdW5jdGlvbihhKXt2YXIgYixjLGUsZixnLGg7cmV0dXJuIE0oYSk\/dGhpcy5lYWNoKGZ1bmN0aW9uKG0pe2QodGhpcykucmVtb3ZlQ2xhc3MoYS5jYWxsKHRoaXMsbSxIKHRoaXMpKSl9KTphcmd1bWVudHMubGVuZ3RoPyhiPVAoYSkpLmxlbmd0aD90aGlzLmVhY2goZnVuY3Rpb24oKXtpZihlPUgodGhpcyksYz0xPT09dGhpcy5ub2RlVHlwZSYmIiAiK0MoZSkrIiAiKXtmb3IoZz0wO2c8Yi5sZW5ndGg7ZysrKWZvcihmPWJbZ107LTE8Yy5pbmRleE9mKCIgIitmKyIgIik7KWM9Yy5yZXBsYWNlKCIgIitmKyIgIiwiICIpO2g9QyhjKTtlIT09aCYmdGhpcy5zZXRBdHRyaWJ1dGUoImNsYXNzIixoKX19KTp0aGlzOnRoaXMuYXR0cigiY2xhc3MiLCIiKX0sdG9nZ2xlQ2xhc3M6ZnVuY3Rpb24oYSxiKXt2YXIgYywKZSxmLGcsaD10eXBlb2YgYSxtPSJzdHJpbmciPT09aHx8QXJyYXkuaXNBcnJheShhKTtyZXR1cm4gTShhKT90aGlzLmVhY2goZnVuY3Rpb24obCl7ZCh0aGlzKS50b2dnbGVDbGFzcyhhLmNhbGwodGhpcyxsLEgodGhpcyksYiksYil9KToiYm9vbGVhbiI9PXR5cGVvZiBiJiZtP2I\/dGhpcy5hZGRDbGFzcyhhKTp0aGlzLnJlbW92ZUNsYXNzKGEpOihjPVAoYSksdGhpcy5lYWNoKGZ1bmN0aW9uKCl7aWYobSlmb3IoZz1kKHRoaXMpLGY9MDtmPGMubGVuZ3RoO2YrKyllPWNbZl0sZy5oYXNDbGFzcyhlKT9nLnJlbW92ZUNsYXNzKGUpOmcuYWRkQ2xhc3MoZSk7ZWxzZSB2b2lkIDAhPT1hJiYiYm9vbGVhbiIhPT1ofHwoKGU9SCh0aGlzKSkmJkcuc2V0KHRoaXMsIl9fY2xhc3NOYW1lX18iLGUpLHRoaXMuc2V0QXR0cmlidXRlJiZ0aGlzLnNldEF0dHJpYnV0ZSgiY2xhc3MiLGV8fCExPT09YT8iIjpHLmdldCh0aGlzLCJfX2NsYXNzTmFtZV9fIil8fCIiKSl9KSl9LGhhc0NsYXNzOmZ1bmN0aW9uKGEpe3ZhciBiLApjPTA7Zm9yKGE9IiAiK2ErIiAiO2I9dGhpc1tjKytdOylpZigxPT09Yi5ub2RlVHlwZSYmLTE8KCIgIitDKEgoYikpKyIgIikuaW5kZXhPZihhKSlyZXR1cm4hMDtyZXR1cm4hMX19KTt2YXIgd2Q9L1xyL2c7ZC5mbi5leHRlbmQoe3ZhbDpmdW5jdGlvbihhKXt2YXIgYixjLGUsZj10aGlzWzBdO3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPU0oYSksdGhpcy5lYWNoKGZ1bmN0aW9uKGcpe3ZhciBoOzE9PT10aGlzLm5vZGVUeXBlJiYobnVsbD09KGg9ZT9hLmNhbGwodGhpcyxnLGQodGhpcykudmFsKCkpOmEpP2g9IiI6Im51bWJlciI9PXR5cGVvZiBoP2grPSIiOkFycmF5LmlzQXJyYXkoaCkmJihoPWQubWFwKGgsZnVuY3Rpb24obSl7cmV0dXJuIG51bGw9PW0\/IiI6bSsiIn0pKSwoYj1kLnZhbEhvb2tzW3RoaXMudHlwZV18fGQudmFsSG9va3NbdGhpcy5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpXSkmJiJzZXQiaW4gYiYmdm9pZCAwIT09Yi5zZXQodGhpcyxoLCJ2YWx1ZSIpfHwodGhpcy52YWx1ZT0KaCkpfSkpOmY\/KGI9ZC52YWxIb29rc1tmLnR5cGVdfHxkLnZhbEhvb2tzW2Yubm9kZU5hbWUudG9Mb3dlckNhc2UoKV0pJiYiZ2V0ImluIGImJnZvaWQgMCE9PShjPWIuZ2V0KGYsInZhbHVlIikpP2M6InN0cmluZyI9PXR5cGVvZihjPWYudmFsdWUpP2MucmVwbGFjZSh3ZCwiIik6bnVsbD09Yz8iIjpjOnZvaWQgMH19KTtkLmV4dGVuZCh7dmFsSG9va3M6e29wdGlvbjp7Z2V0OmZ1bmN0aW9uKGEpe3ZhciBiPWQuZmluZC5hdHRyKGEsInZhbHVlIik7cmV0dXJuIG51bGwhPWI\/YjpDKGQudGV4dChhKSl9fSxzZWxlY3Q6e2dldDpmdW5jdGlvbihhKXt2YXIgYixjLGU9YS5vcHRpb25zLGY9YS5zZWxlY3RlZEluZGV4LGc9InNlbGVjdC1vbmUiPT09YS50eXBlLGg9Zz9udWxsOltdLG09Zz9mKzE6ZS5sZW5ndGg7Zm9yKGM9MD5mP206Zz9mOjA7YzxtO2MrKylpZighKCEoYj1lW2NdKS5zZWxlY3RlZCYmYyE9PWZ8fGIuZGlzYWJsZWR8fGIucGFyZW50Tm9kZS5kaXNhYmxlZCYmWChiLnBhcmVudE5vZGUsCiJvcHRncm91cCIpKSl7aWYoYT1kKGIpLnZhbCgpLGcpcmV0dXJuIGE7aC5wdXNoKGEpfXJldHVybiBofSxzZXQ6ZnVuY3Rpb24oYSxiKXt2YXIgYyxlLGY9YS5vcHRpb25zO2I9ZC5tYWtlQXJyYXkoYik7Zm9yKHZhciBnPWYubGVuZ3RoO2ctLTspKChlPWZbZ10pLnNlbGVjdGVkPS0xPGQuaW5BcnJheShkLnZhbEhvb2tzLm9wdGlvbi5nZXQoZSksYikpJiYoYz0hMCk7cmV0dXJuIGN8fChhLnNlbGVjdGVkSW5kZXg9LTEpLGJ9fX19KTtkLmVhY2goWyJyYWRpbyIsImNoZWNrYm94Il0sZnVuY3Rpb24oKXtkLnZhbEhvb2tzW3RoaXNdPXtzZXQ6ZnVuY3Rpb24oYSxiKXtpZihBcnJheS5pc0FycmF5KGIpKXJldHVybiBhLmNoZWNrZWQ9LTE8ZC5pbkFycmF5KGQoYSkudmFsKCksYil9fTtOLmNoZWNrT258fChkLnZhbEhvb2tzW3RoaXNdLmdldD1mdW5jdGlvbihhKXtyZXR1cm4gbnVsbD09PWEuZ2V0QXR0cmlidXRlKCJ2YWx1ZSIpPyJvbiI6YS52YWx1ZX0pfSk7dmFyIEtiPW4ubG9jYXRpb24sCkRjPURhdGUubm93KCksaGM9L1w\/LztkLnBhcnNlWE1MPWZ1bmN0aW9uKGEpe3ZhciBiO2lmKCFhfHwic3RyaW5nIiE9dHlwZW9mIGEpcmV0dXJuIG51bGw7dHJ5e3ZhciBjPShuZXcgbi5ET01QYXJzZXIpLnBhcnNlRnJvbVN0cmluZyhhLCJ0ZXh0L3htbCIpfWNhdGNoKGUpe31yZXR1cm4gYj1jJiZjLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJwYXJzZXJlcnJvciIpWzBdLGMmJiFifHxkLmVycm9yKCJJbnZhbGlkIFhNTDogIisoYj9kLm1hcChiLmNoaWxkTm9kZXMsZnVuY3Rpb24oZSl7cmV0dXJuIGUudGV4dENvbnRlbnR9KS5qb2luKCJcbiIpOmEpKSxjfTt2YXIgRWM9L14oPzpmb2N1c2luZm9jdXN8Zm9jdXNvdXRibHVyKSQvLEZjPWZ1bmN0aW9uKGEpe2Euc3RvcFByb3BhZ2F0aW9uKCl9O2QuZXh0ZW5kKGQuZXZlbnQse3RyaWdnZXI6ZnVuY3Rpb24oYSxiLGMsZSl7dmFyIGYsZyxoLG0sbCx0LHc9W2N8fExdLHI9RmIuY2FsbChhLCJ0eXBlIik\/YS50eXBlOmEsej1GYi5jYWxsKGEsCiJuYW1lc3BhY2UiKT9hLm5hbWVzcGFjZS5zcGxpdCgiLiIpOltdO2lmKGY9dD1nPWM9Y3x8TCwzIT09Yy5ub2RlVHlwZSYmOCE9PWMubm9kZVR5cGUmJiFFYy50ZXN0KHIrZC5ldmVudC50cmlnZ2VyZWQpJiYoLTE8ci5pbmRleE9mKCIuIikmJihyPSh6PXIuc3BsaXQoIi4iKSkuc2hpZnQoKSx6LnNvcnQoKSksaD0wPnIuaW5kZXhPZigiOiIpJiYib24iK3IsKGE9YVtkLmV4cGFuZG9dP2E6bmV3IGQuRXZlbnQociwib2JqZWN0Ij09dHlwZW9mIGEmJmEpKS5pc1RyaWdnZXI9ZT8yOjMsYS5uYW1lc3BhY2U9ei5qb2luKCIuIiksYS5ybmFtZXNwYWNlPWEubmFtZXNwYWNlP25ldyBSZWdFeHAoIihefFxcLikiK3ouam9pbigiXFwuKD86LipcXC58KSIpKyIoXFwufCQpIik6bnVsbCxhLnJlc3VsdD12b2lkIDAsYS50YXJnZXR8fChhLnRhcmdldD1jKSxiPW51bGw9PWI\/W2FdOmQubWFrZUFycmF5KGIsW2FdKSxsPWQuZXZlbnQuc3BlY2lhbFtyXXx8e30sZXx8IWwudHJpZ2dlcnx8ITEhPT0KbC50cmlnZ2VyLmFwcGx5KGMsYikpKXtpZighZSYmIWwubm9CdWJibGUmJiFrYihjKSl7dmFyIEQ9bC5kZWxlZ2F0ZVR5cGV8fHI7Zm9yKEVjLnRlc3QoRCtyKXx8KGY9Zi5wYXJlbnROb2RlKTtmO2Y9Zi5wYXJlbnROb2RlKXcucHVzaChmKSxnPWY7Zz09PShjLm93bmVyRG9jdW1lbnR8fEwpJiZ3LnB1c2goZy5kZWZhdWx0Vmlld3x8Zy5wYXJlbnRXaW5kb3d8fG4pfWZvcih6PTA7KGY9d1t6KytdKSYmIWEuaXNQcm9wYWdhdGlvblN0b3BwZWQoKTspdD1mLGEudHlwZT0xPHo\/RDpsLmJpbmRUeXBlfHxyLChtPShHLmdldChmLCJldmVudHMiKXx8T2JqZWN0LmNyZWF0ZShudWxsKSlbYS50eXBlXSYmRy5nZXQoZiwiaGFuZGxlIikpJiZtLmFwcGx5KGYsYiksKG09aCYmZltoXSkmJm0uYXBwbHkmJkdiKGYpJiYoYS5yZXN1bHQ9bS5hcHBseShmLGIpLCExPT09YS5yZXN1bHQmJmEucHJldmVudERlZmF1bHQoKSk7cmV0dXJuIGEudHlwZT1yLGV8fGEuaXNEZWZhdWx0UHJldmVudGVkKCl8fApsLl9kZWZhdWx0JiYhMSE9PWwuX2RlZmF1bHQuYXBwbHkody5wb3AoKSxiKXx8IUdiKGMpfHxoJiZNKGNbcl0pJiYha2IoYykmJigoZz1jW2hdKSYmKGNbaF09bnVsbCksZC5ldmVudC50cmlnZ2VyZWQ9cixhLmlzUHJvcGFnYXRpb25TdG9wcGVkKCkmJnQuYWRkRXZlbnRMaXN0ZW5lcihyLEZjKSxjW3JdKCksYS5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpJiZ0LnJlbW92ZUV2ZW50TGlzdGVuZXIocixGYyksZC5ldmVudC50cmlnZ2VyZWQ9dm9pZCAwLGcmJihjW2hdPWcpKSxhLnJlc3VsdH19LHNpbXVsYXRlOmZ1bmN0aW9uKGEsYixjKXthPWQuZXh0ZW5kKG5ldyBkLkV2ZW50LGMse3R5cGU6YSxpc1NpbXVsYXRlZDohMH0pO2QuZXZlbnQudHJpZ2dlcihhLG51bGwsYil9fSk7ZC5mbi5leHRlbmQoe3RyaWdnZXI6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7ZC5ldmVudC50cmlnZ2VyKGEsYix0aGlzKX0pfSx0cmlnZ2VySGFuZGxlcjpmdW5jdGlvbihhLGIpe3ZhciBjPQp0aGlzWzBdO2lmKGMpcmV0dXJuIGQuZXZlbnQudHJpZ2dlcihhLGIsYywhMCl9fSk7dmFyIFVjPS9cW1xdJC8sR2M9L1xyP1xuL2cseGQ9L14oPzpzdWJtaXR8YnV0dG9ufGltYWdlfHJlc2V0fGZpbGUpJC9pLHlkPS9eKD86aW5wdXR8c2VsZWN0fHRleHRhcmVhfGtleWdlbikvaTtkLnBhcmFtPWZ1bmN0aW9uKGEsYil7dmFyIGMsZT1bXSxmPWZ1bmN0aW9uKGcsaCl7aD1NKGgpP2goKTpoO2VbZS5sZW5ndGhdPWVuY29kZVVSSUNvbXBvbmVudChnKSsiPSIrZW5jb2RlVVJJQ29tcG9uZW50KG51bGw9PWg\/IiI6aCl9O2lmKG51bGw9PWEpcmV0dXJuIiI7aWYoQXJyYXkuaXNBcnJheShhKXx8YS5qcXVlcnkmJiFkLmlzUGxhaW5PYmplY3QoYSkpZC5lYWNoKGEsZnVuY3Rpb24oKXtmKHRoaXMubmFtZSx0aGlzLnZhbHVlKX0pO2Vsc2UgZm9yKGMgaW4gYSllYShjLGFbY10sYixmKTtyZXR1cm4gZS5qb2luKCImIil9O2QuZm4uZXh0ZW5kKHtzZXJpYWxpemU6ZnVuY3Rpb24oKXtyZXR1cm4gZC5wYXJhbSh0aGlzLnNlcmlhbGl6ZUFycmF5KCkpfSwKc2VyaWFsaXplQXJyYXk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24oKXt2YXIgYT1kLnByb3AodGhpcywiZWxlbWVudHMiKTtyZXR1cm4gYT9kLm1ha2VBcnJheShhKTp0aGlzfSkuZmlsdGVyKGZ1bmN0aW9uKCl7dmFyIGE9dGhpcy50eXBlO3JldHVybiB0aGlzLm5hbWUmJiFkKHRoaXMpLmlzKCI6ZGlzYWJsZWQiKSYmeWQudGVzdCh0aGlzLm5vZGVOYW1lKSYmIXhkLnRlc3QoYSkmJih0aGlzLmNoZWNrZWR8fCFIYi50ZXN0KGEpKX0pLm1hcChmdW5jdGlvbihhLGIpe2E9ZCh0aGlzKS52YWwoKTtyZXR1cm4gbnVsbD09YT9udWxsOkFycmF5LmlzQXJyYXkoYSk\/ZC5tYXAoYSxmdW5jdGlvbihjKXtyZXR1cm57bmFtZTpiLm5hbWUsdmFsdWU6Yy5yZXBsYWNlKEdjLCJcclxuIil9fSk6e25hbWU6Yi5uYW1lLHZhbHVlOmEucmVwbGFjZShHYywiXHJcbiIpfX0pLmdldCgpfX0pO3ZhciB6ZD0vJTIwL2csQWQ9LyMuKiQvLEJkPS8oWz8mXSlfPVteJl0qLyxDZD0vXiguKj8pOlsgXHRdKihbXlxyXG5dKikkL2dtLApEZD0vXig\/OkdFVHxIRUFEKSQvLEVkPS9eXC9cLy8sSGM9e30sY2M9e30sSWM9IiovIi5jb25jYXQoIioiKSxpYz1MLmNyZWF0ZUVsZW1lbnQoImEiKTtpYy5ocmVmPUtiLmhyZWY7ZC5leHRlbmQoe2FjdGl2ZTowLGxhc3RNb2RpZmllZDp7fSxldGFnOnt9LGFqYXhTZXR0aW5nczp7dXJsOktiLmhyZWYsdHlwZToiR0VUIixpc0xvY2FsOi9eKD86YWJvdXR8YXBwfGFwcC1zdG9yYWdlfC4rLWV4dGVuc2lvbnxmaWxlfHJlc3x3aWRnZXQpOiQvLnRlc3QoS2IucHJvdG9jb2wpLGdsb2JhbDohMCxwcm9jZXNzRGF0YTohMCxhc3luYzohMCxjb250ZW50VHlwZToiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkOyBjaGFyc2V0PVVURi04IixhY2NlcHRzOnsiKiI6SWMsdGV4dDoidGV4dC9wbGFpbiIsaHRtbDoidGV4dC9odG1sIix4bWw6ImFwcGxpY2F0aW9uL3htbCwgdGV4dC94bWwiLGpzb246ImFwcGxpY2F0aW9uL2pzb24sIHRleHQvamF2YXNjcmlwdCJ9LGNvbnRlbnRzOnt4bWw6L1xieG1sXGIvLApodG1sOi9cYmh0bWwvLGpzb246L1xianNvblxiL30scmVzcG9uc2VGaWVsZHM6e3htbDoicmVzcG9uc2VYTUwiLHRleHQ6InJlc3BvbnNlVGV4dCIsanNvbjoicmVzcG9uc2VKU09OIn0sY29udmVydGVyczp7IiogdGV4dCI6U3RyaW5nLCJ0ZXh0IGh0bWwiOiEwLCJ0ZXh0IGpzb24iOkpTT04ucGFyc2UsInRleHQgeG1sIjpkLnBhcnNlWE1MfSxmbGF0T3B0aW9uczp7dXJsOiEwLGNvbnRleHQ6ITB9fSxhamF4U2V0dXA6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYj9oYihoYihhLGQuYWpheFNldHRpbmdzKSxiKTpoYihkLmFqYXhTZXR0aW5ncyxhKX0sYWpheFByZWZpbHRlcjpRYShIYyksYWpheFRyYW5zcG9ydDpRYShjYyksYWpheDpmdW5jdGlvbihhLGIpe2Z1bmN0aW9uIGMoUyxoYSxpYixaKXt2YXIgcmEsdmEsa2EsTWEsdGEsVz1oYTtLfHwoSz0hMCxtJiZuLmNsZWFyVGltZW91dChtKSxlPXZvaWQgMCxnPVp8fCIiLFEucmVhZHlTdGF0ZT0wPFM\/NDowLHJhPTIwMDw9UyYmMzAwPlN8fAozMDQ9PT1TLGliJiYoTWE9ZnVuY3Rpb24oZmEsRGEsZGIpe2Zvcih2YXIgVmEsdWEsWSxsYSxJYT1mYS5jb250ZW50cyxtYT1mYS5kYXRhVHlwZXM7IioiPT09bWFbMF07KW1hLnNoaWZ0KCksdm9pZCAwPT09VmEmJihWYT1mYS5taW1lVHlwZXx8RGEuZ2V0UmVzcG9uc2VIZWFkZXIoIkNvbnRlbnQtVHlwZSIpKTtpZihWYSlmb3IodWEgaW4gSWEpaWYoSWFbdWFdJiZJYVt1YV0udGVzdChWYSkpe21hLnVuc2hpZnQodWEpO2JyZWFrfWlmKG1hWzBdaW4gZGIpWT1tYVswXTtlbHNle2Zvcih1YSBpbiBkYil7aWYoIW1hWzBdfHxmYS5jb252ZXJ0ZXJzW3VhKyIgIittYVswXV0pe1k9dWE7YnJlYWt9bGF8fChsYT11YSl9WT1ZfHxsYX1pZihZKXJldHVybiBZIT09bWFbMF0mJm1hLnVuc2hpZnQoWSksZGJbWV19KHIsUSxpYikpLCFyYSYmLTE8ZC5pbkFycmF5KCJzY3JpcHQiLHIuZGF0YVR5cGVzKSYmMD5kLmluQXJyYXkoImpzb24iLHIuZGF0YVR5cGVzKSYmKHIuY29udmVydGVyc1sidGV4dCBzY3JpcHQiXT0KZnVuY3Rpb24oKXt9KSxNYT1mdW5jdGlvbihmYSxEYSxkYixWYSl7dmFyIHVhLFksbGEsSWEsbWEsSGE9e30sdmI9ZmEuZGF0YVR5cGVzLnNsaWNlKCk7aWYodmJbMV0pZm9yKGxhIGluIGZhLmNvbnZlcnRlcnMpSGFbbGEudG9Mb3dlckNhc2UoKV09ZmEuY29udmVydGVyc1tsYV07Zm9yKFk9dmIuc2hpZnQoKTtZOylpZihmYS5yZXNwb25zZUZpZWxkc1tZXSYmKGRiW2ZhLnJlc3BvbnNlRmllbGRzW1ldXT1EYSksIW1hJiZWYSYmZmEuZGF0YUZpbHRlciYmKERhPWZhLmRhdGFGaWx0ZXIoRGEsZmEuZGF0YVR5cGUpKSxtYT1ZLFk9dmIuc2hpZnQoKSlpZigiKiI9PT1ZKVk9bWE7ZWxzZSBpZigiKiIhPT1tYSYmbWEhPT1ZKXtpZighKGxhPUhhW21hKyIgIitZXXx8SGFbIiogIitZXSkpZm9yKHVhIGluIEhhKWlmKChJYT11YS5zcGxpdCgiICIpKVsxXT09PVkmJihsYT1IYVttYSsiICIrSWFbMF1dfHxIYVsiKiAiK0lhWzBdXSkpeyEwPT09bGE\/bGE9SGFbdWFdOiEwIT09SGFbdWFdJiYoWT0KSWFbMF0sdmIudW5zaGlmdChJYVsxXSkpO2JyZWFrfWlmKCEwIT09bGEpaWYobGEmJmZhWyJ0aHJvd3MiXSlEYT1sYShEYSk7ZWxzZSB0cnl7RGE9bGEoRGEpfWNhdGNoKGZjKXtyZXR1cm57c3RhdGU6InBhcnNlcmVycm9yIixlcnJvcjpsYT9mYzoiTm8gY29udmVyc2lvbiBmcm9tICIrbWErIiB0byAiK1l9fX1yZXR1cm57c3RhdGU6InN1Y2Nlc3MiLGRhdGE6RGF9fShyLE1hLFEscmEpLHJhPyhyLmlmTW9kaWZpZWQmJigodGE9US5nZXRSZXNwb25zZUhlYWRlcigiTGFzdC1Nb2RpZmllZCIpKSYmKGQubGFzdE1vZGlmaWVkW2ZdPXRhKSwodGE9US5nZXRSZXNwb25zZUhlYWRlcigiZXRhZyIpKSYmKGQuZXRhZ1tmXT10YSkpLDIwND09PVN8fCJIRUFEIj09PXIudHlwZT9XPSJub2NvbnRlbnQiOjMwND09PVM\/Vz0ibm90bW9kaWZpZWQiOihXPU1hLnN0YXRlLHZhPU1hLmRhdGEscmE9IShrYT1NYS5lcnJvcikpKTooa2E9VywhUyYmV3x8KFc9ImVycm9yIiwwPlMmJihTPTApKSksUS5zdGF0dXM9ClMsUS5zdGF0dXNUZXh0PShoYXx8VykrIiIscmE\/Ri5yZXNvbHZlV2l0aCh6LFt2YSxXLFFdKTpGLnJlamVjdFdpdGgoeixbUSxXLGthXSksUS5zdGF0dXNDb2RlKGFhKSxhYT12b2lkIDAsbCYmRC50cmlnZ2VyKHJhPyJhamF4U3VjY2VzcyI6ImFqYXhFcnJvciIsW1EscixyYT92YTprYV0pLE8uZmlyZVdpdGgoeixbUSxXXSksbCYmKEQudHJpZ2dlcigiYWpheENvbXBsZXRlIixbUSxyXSksLS1kLmFjdGl2ZXx8ZC5ldmVudC50cmlnZ2VyKCJhamF4U3RvcCIpKSl9Im9iamVjdCI9PXR5cGVvZiBhJiYoYj1hLGE9dm9pZCAwKTtiPWJ8fHt9O3ZhciBlLGYsZyxoLG0sbCx0LHcscj1kLmFqYXhTZXR1cCh7fSxiKSx6PXIuY29udGV4dHx8cixEPXIuY29udGV4dCYmKHoubm9kZVR5cGV8fHouanF1ZXJ5KT9kKHopOmQuZXZlbnQsRj1kLkRlZmVycmVkKCksTz1kLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSxhYT1yLnN0YXR1c0NvZGV8fHt9LEdhPXt9LHFhPXt9LFNhPSJjYW5jZWxlZCIsUT0Ke3JlYWR5U3RhdGU6MCxnZXRSZXNwb25zZUhlYWRlcjpmdW5jdGlvbihTKXt2YXIgaGE7aWYoSyl7aWYoIWgpZm9yKGg9e307aGE9Q2QuZXhlYyhnKTspaFtoYVsxXS50b0xvd2VyQ2FzZSgpKyIgIl09KGhbaGFbMV0udG9Mb3dlckNhc2UoKSsiICJdfHxbXSkuY29uY2F0KGhhWzJdKTtoYT1oW1MudG9Mb3dlckNhc2UoKSsiICJdfXJldHVybiBudWxsPT1oYT9udWxsOmhhLmpvaW4oIiwgIil9LGdldEFsbFJlc3BvbnNlSGVhZGVyczpmdW5jdGlvbigpe3JldHVybiBLP2c6bnVsbH0sc2V0UmVxdWVzdEhlYWRlcjpmdW5jdGlvbihTLGhhKXtyZXR1cm4gbnVsbD09SyYmKFM9cWFbUy50b0xvd2VyQ2FzZSgpXT1xYVtTLnRvTG93ZXJDYXNlKCldfHxTLEdhW1NdPWhhKSx0aGlzfSxvdmVycmlkZU1pbWVUeXBlOmZ1bmN0aW9uKFMpe3JldHVybiBudWxsPT1LJiYoci5taW1lVHlwZT1TKSx0aGlzfSxzdGF0dXNDb2RlOmZ1bmN0aW9uKFMpe3ZhciBoYTtpZihTKWlmKEspUS5hbHdheXMoU1tRLnN0YXR1c10pOwplbHNlIGZvcihoYSBpbiBTKWFhW2hhXT1bYWFbaGFdLFNbaGFdXTtyZXR1cm4gdGhpc30sYWJvcnQ6ZnVuY3Rpb24oUyl7Uz1TfHxTYTtyZXR1cm4gZSYmZS5hYm9ydChTKSxjKDAsUyksdGhpc319O2lmKEYucHJvbWlzZShRKSxyLnVybD0oKGF8fHIudXJsfHxLYi5ocmVmKSsiIikucmVwbGFjZShFZCxLYi5wcm90b2NvbCsiLy8iKSxyLnR5cGU9Yi5tZXRob2R8fGIudHlwZXx8ci5tZXRob2R8fHIudHlwZSxyLmRhdGFUeXBlcz0oci5kYXRhVHlwZXx8IioiKS50b0xvd2VyQ2FzZSgpLm1hdGNoKExhKXx8WyIiXSxudWxsPT1yLmNyb3NzRG9tYWluKXthPUwuY3JlYXRlRWxlbWVudCgiYSIpO3RyeXthLmhyZWY9ci51cmwsYS5ocmVmPWEuaHJlZixyLmNyb3NzRG9tYWluPWljLnByb3RvY29sKyIvLyIraWMuaG9zdCE9YS5wcm90b2NvbCsiLy8iK2EuaG9zdH1jYXRjaChTKXtyLmNyb3NzRG9tYWluPSEwfX1pZihyLmRhdGEmJnIucHJvY2Vzc0RhdGEmJiJzdHJpbmciIT10eXBlb2Ygci5kYXRhJiYKKHIuZGF0YT1kLnBhcmFtKHIuZGF0YSxyLnRyYWRpdGlvbmFsKSksRWIoSGMscixiLFEpLEspcmV0dXJuIFE7Zm9yKHQgaW4obD1kLmV2ZW50JiZyLmdsb2JhbCkmJjA9PWQuYWN0aXZlKysmJmQuZXZlbnQudHJpZ2dlcigiYWpheFN0YXJ0Iiksci50eXBlPXIudHlwZS50b1VwcGVyQ2FzZSgpLHIuaGFzQ29udGVudD0hRGQudGVzdChyLnR5cGUpLGY9ci51cmwucmVwbGFjZShBZCwiIiksci5oYXNDb250ZW50P3IuZGF0YSYmci5wcm9jZXNzRGF0YSYmMD09PShyLmNvbnRlbnRUeXBlfHwiIikuaW5kZXhPZigiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIikmJihyLmRhdGE9ci5kYXRhLnJlcGxhY2UoemQsIisiKSk6KHc9ci51cmwuc2xpY2UoZi5sZW5ndGgpLHIuZGF0YSYmKHIucHJvY2Vzc0RhdGF8fCJzdHJpbmciPT10eXBlb2Ygci5kYXRhKSYmKGYrPShoYy50ZXN0KGYpPyImIjoiPyIpK3IuZGF0YSxkZWxldGUgci5kYXRhKSwhMT09PXIuY2FjaGUmJihmPWYucmVwbGFjZShCZCwKIiQxIiksdz0oaGMudGVzdChmKT8iJiI6Ij8iKSsiXz0iK0RjKysgK3cpLHIudXJsPWYrdyksci5pZk1vZGlmaWVkJiYoZC5sYXN0TW9kaWZpZWRbZl0mJlEuc2V0UmVxdWVzdEhlYWRlcigiSWYtTW9kaWZpZWQtU2luY2UiLGQubGFzdE1vZGlmaWVkW2ZdKSxkLmV0YWdbZl0mJlEuc2V0UmVxdWVzdEhlYWRlcigiSWYtTm9uZS1NYXRjaCIsZC5ldGFnW2ZdKSksKHIuZGF0YSYmci5oYXNDb250ZW50JiYhMSE9PXIuY29udGVudFR5cGV8fGIuY29udGVudFR5cGUpJiZRLnNldFJlcXVlc3RIZWFkZXIoIkNvbnRlbnQtVHlwZSIsci5jb250ZW50VHlwZSksUS5zZXRSZXF1ZXN0SGVhZGVyKCJBY2NlcHQiLHIuZGF0YVR5cGVzWzBdJiZyLmFjY2VwdHNbci5kYXRhVHlwZXNbMF1dP3IuYWNjZXB0c1tyLmRhdGFUeXBlc1swXV0rKCIqIiE9PXIuZGF0YVR5cGVzWzBdPyIsICIrSWMrIjsgcT0wLjAxIjoiIik6ci5hY2NlcHRzWyIqIl0pLHIuaGVhZGVycylRLnNldFJlcXVlc3RIZWFkZXIodCxyLmhlYWRlcnNbdF0pOwppZihyLmJlZm9yZVNlbmQmJighMT09PXIuYmVmb3JlU2VuZC5jYWxsKHosUSxyKXx8SykpcmV0dXJuIFEuYWJvcnQoKTtpZihTYT0iYWJvcnQiLE8uYWRkKHIuY29tcGxldGUpLFEuZG9uZShyLnN1Y2Nlc3MpLFEuZmFpbChyLmVycm9yKSxlPUViKGNjLHIsYixRKSl7aWYoUS5yZWFkeVN0YXRlPTEsbCYmRC50cmlnZ2VyKCJhamF4U2VuZCIsW1Escl0pLEspcmV0dXJuIFE7ci5hc3luYyYmMDxyLnRpbWVvdXQmJihtPW4uc2V0VGltZW91dChmdW5jdGlvbigpe1EuYWJvcnQoInRpbWVvdXQiKX0sci50aW1lb3V0KSk7dHJ5e3ZhciBLPSExO2Uuc2VuZChHYSxjKX1jYXRjaChTKXtpZihLKXRocm93IFM7YygtMSxTKX19ZWxzZSBjKC0xLCJObyBUcmFuc3BvcnQiKTtyZXR1cm4gUX0sZ2V0SlNPTjpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIGQuZ2V0KGEsYixjLCJqc29uIil9LGdldFNjcmlwdDpmdW5jdGlvbihhLGIpe3JldHVybiBkLmdldChhLHZvaWQgMCxiLCJzY3JpcHQiKX19KTtkLmVhY2goWyJnZXQiLAoicG9zdCJdLGZ1bmN0aW9uKGEsYil7ZFtiXT1mdW5jdGlvbihjLGUsZixnKXtyZXR1cm4gTShlKSYmKGc9Z3x8ZixmPWUsZT12b2lkIDApLGQuYWpheChkLmV4dGVuZCh7dXJsOmMsdHlwZTpiLGRhdGFUeXBlOmcsZGF0YTplLHN1Y2Nlc3M6Zn0sZC5pc1BsYWluT2JqZWN0KGMpJiZjKSl9fSk7ZC5hamF4UHJlZmlsdGVyKGZ1bmN0aW9uKGEpe2Zvcih2YXIgYiBpbiBhLmhlYWRlcnMpImNvbnRlbnQtdHlwZSI9PT1iLnRvTG93ZXJDYXNlKCkmJihhLmNvbnRlbnRUeXBlPWEuaGVhZGVyc1tiXXx8IiIpfSk7ZC5fZXZhbFVybD1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIGQuYWpheCh7dXJsOmEsdHlwZToiR0VUIixkYXRhVHlwZToic2NyaXB0IixjYWNoZTohMCxhc3luYzohMSxnbG9iYWw6ITEsY29udmVydGVyczp7InRleHQgc2NyaXB0IjpmdW5jdGlvbigpe319LGRhdGFGaWx0ZXI6ZnVuY3Rpb24oZSl7ZC5nbG9iYWxFdmFsKGUsYixjKX19KX07ZC5mbi5leHRlbmQoe3dyYXBBbGw6ZnVuY3Rpb24oYSl7dmFyIGI7CnJldHVybiB0aGlzWzBdJiYoTShhKSYmKGE9YS5jYWxsKHRoaXNbMF0pKSxiPWQoYSx0aGlzWzBdLm93bmVyRG9jdW1lbnQpLmVxKDApLmNsb25lKCEwKSx0aGlzWzBdLnBhcmVudE5vZGUmJmIuaW5zZXJ0QmVmb3JlKHRoaXNbMF0pLGIubWFwKGZ1bmN0aW9uKCl7Zm9yKHZhciBjPXRoaXM7Yy5maXJzdEVsZW1lbnRDaGlsZDspYz1jLmZpcnN0RWxlbWVudENoaWxkO3JldHVybiBjfSkuYXBwZW5kKHRoaXMpKSx0aGlzfSx3cmFwSW5uZXI6ZnVuY3Rpb24oYSl7cmV0dXJuIE0oYSk\/dGhpcy5lYWNoKGZ1bmN0aW9uKGIpe2QodGhpcykud3JhcElubmVyKGEuY2FsbCh0aGlzLGIpKX0pOnRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBiPWQodGhpcyksYz1iLmNvbnRlbnRzKCk7Yy5sZW5ndGg\/Yy53cmFwQWxsKGEpOmIuYXBwZW5kKGEpfSl9LHdyYXA6ZnVuY3Rpb24oYSl7dmFyIGI9TShhKTtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGMpe2QodGhpcykud3JhcEFsbChiP2EuY2FsbCh0aGlzLApjKTphKX0pfSx1bndyYXA6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMucGFyZW50KGEpLm5vdCgiYm9keSIpLmVhY2goZnVuY3Rpb24oKXtkKHRoaXMpLnJlcGxhY2VXaXRoKHRoaXMuY2hpbGROb2Rlcyl9KSx0aGlzfX0pO2QuZXhwci5wc2V1ZG9zLmhpZGRlbj1mdW5jdGlvbihhKXtyZXR1cm4hZC5leHByLnBzZXVkb3MudmlzaWJsZShhKX07ZC5leHByLnBzZXVkb3MudmlzaWJsZT1mdW5jdGlvbihhKXtyZXR1cm4hIShhLm9mZnNldFdpZHRofHxhLm9mZnNldEhlaWdodHx8YS5nZXRDbGllbnRSZWN0cygpLmxlbmd0aCl9O2QuYWpheFNldHRpbmdzLnhocj1mdW5jdGlvbigpe3RyeXtyZXR1cm4gbmV3IG4uWE1MSHR0cFJlcXVlc3R9Y2F0Y2goYSl7fX07dmFyIEZkPXswOjIwMCwxMjIzOjIwNH0sTGI9ZC5hamF4U2V0dGluZ3MueGhyKCk7Ti5jb3JzPSEhTGImJiJ3aXRoQ3JlZGVudGlhbHMiaW4gTGI7Ti5hamF4PUxiPSEhTGI7ZC5hamF4VHJhbnNwb3J0KGZ1bmN0aW9uKGEpe3ZhciBiLApjO2lmKE4uY29yc3x8TGImJiFhLmNyb3NzRG9tYWluKXJldHVybntzZW5kOmZ1bmN0aW9uKGUsZil7dmFyIGcsaD1hLnhocigpO2lmKGgub3BlbihhLnR5cGUsYS51cmwsYS5hc3luYyxhLnVzZXJuYW1lLGEucGFzc3dvcmQpLGEueGhyRmllbGRzKWZvcihnIGluIGEueGhyRmllbGRzKWhbZ109YS54aHJGaWVsZHNbZ107Zm9yKGcgaW4gYS5taW1lVHlwZSYmaC5vdmVycmlkZU1pbWVUeXBlJiZoLm92ZXJyaWRlTWltZVR5cGUoYS5taW1lVHlwZSksYS5jcm9zc0RvbWFpbnx8ZVsiWC1SZXF1ZXN0ZWQtV2l0aCJdfHwoZVsiWC1SZXF1ZXN0ZWQtV2l0aCJdPSJYTUxIdHRwUmVxdWVzdCIpLGUpaC5zZXRSZXF1ZXN0SGVhZGVyKGcsZVtnXSk7Yj1mdW5jdGlvbihtKXtyZXR1cm4gZnVuY3Rpb24oKXtiJiYoYj1jPWgub25sb2FkPWgub25lcnJvcj1oLm9uYWJvcnQ9aC5vbnRpbWVvdXQ9aC5vbnJlYWR5c3RhdGVjaGFuZ2U9bnVsbCwiYWJvcnQiPT09bT9oLmFib3J0KCk6ImVycm9yIj09PW0\/CiJudW1iZXIiIT10eXBlb2YgaC5zdGF0dXM\/ZigwLCJlcnJvciIpOmYoaC5zdGF0dXMsaC5zdGF0dXNUZXh0KTpmKEZkW2guc3RhdHVzXXx8aC5zdGF0dXMsaC5zdGF0dXNUZXh0LCJ0ZXh0IiE9PShoLnJlc3BvbnNlVHlwZXx8InRleHQiKXx8InN0cmluZyIhPXR5cGVvZiBoLnJlc3BvbnNlVGV4dD97YmluYXJ5OmgucmVzcG9uc2V9Ont0ZXh0OmgucmVzcG9uc2VUZXh0fSxoLmdldEFsbFJlc3BvbnNlSGVhZGVycygpKSl9fTtoLm9ubG9hZD1iKCk7Yz1oLm9uZXJyb3I9aC5vbnRpbWVvdXQ9YigiZXJyb3IiKTt2b2lkIDAhPT1oLm9uYWJvcnQ\/aC5vbmFib3J0PWM6aC5vbnJlYWR5c3RhdGVjaGFuZ2U9ZnVuY3Rpb24oKXs0PT09aC5yZWFkeVN0YXRlJiZuLnNldFRpbWVvdXQoZnVuY3Rpb24oKXtiJiZjKCl9KX07Yj1iKCJhYm9ydCIpO3RyeXtoLnNlbmQoYS5oYXNDb250ZW50JiZhLmRhdGF8fG51bGwpfWNhdGNoKG0pe2lmKGIpdGhyb3cgbTt9fSxhYm9ydDpmdW5jdGlvbigpe2ImJgpiKCl9fX0pO2QuYWpheFByZWZpbHRlcihmdW5jdGlvbihhKXthLmNyb3NzRG9tYWluJiYoYS5jb250ZW50cy5zY3JpcHQ9ITEpfSk7ZC5hamF4U2V0dXAoe2FjY2VwdHM6e3NjcmlwdDoidGV4dC9qYXZhc2NyaXB0LCBhcHBsaWNhdGlvbi9qYXZhc2NyaXB0LCBhcHBsaWNhdGlvbi9lY21hc2NyaXB0LCBhcHBsaWNhdGlvbi94LWVjbWFzY3JpcHQifSxjb250ZW50czp7c2NyaXB0Oi9cYig\/OmphdmF8ZWNtYSlzY3JpcHRcYi99LGNvbnZlcnRlcnM6eyJ0ZXh0IHNjcmlwdCI6ZnVuY3Rpb24oYSl7cmV0dXJuIGQuZ2xvYmFsRXZhbChhKSxhfX19KTtkLmFqYXhQcmVmaWx0ZXIoInNjcmlwdCIsZnVuY3Rpb24oYSl7dm9pZCAwPT09YS5jYWNoZSYmKGEuY2FjaGU9ITEpO2EuY3Jvc3NEb21haW4mJihhLnR5cGU9IkdFVCIpfSk7ZC5hamF4VHJhbnNwb3J0KCJzY3JpcHQiLGZ1bmN0aW9uKGEpe3ZhciBiLGM7aWYoYS5jcm9zc0RvbWFpbnx8YS5zY3JpcHRBdHRycylyZXR1cm57c2VuZDpmdW5jdGlvbihlLApmKXtiPWQoIjxzY3JpcHQ+IikuYXR0cihhLnNjcmlwdEF0dHJzfHx7fSkucHJvcCh7Y2hhcnNldDphLnNjcmlwdENoYXJzZXQsc3JjOmEudXJsfSkub24oImxvYWQgZXJyb3IiLGM9ZnVuY3Rpb24oZyl7Yi5yZW1vdmUoKTtjPW51bGw7ZyYmZigiZXJyb3IiPT09Zy50eXBlPzQwNDoyMDAsZy50eXBlKX0pO0wuaGVhZC5hcHBlbmRDaGlsZChiWzBdKX0sYWJvcnQ6ZnVuY3Rpb24oKXtjJiZjKCl9fX0pO3ZhciBKYyxLYz1bXSxqYz0vKD0pXD8oPz0mfCQpfFw\/XD8vO2QuYWpheFNldHVwKHtqc29ucDoiY2FsbGJhY2siLGpzb25wQ2FsbGJhY2s6ZnVuY3Rpb24oKXt2YXIgYT1LYy5wb3AoKXx8ZC5leHBhbmRvKyJfIitEYysrO3JldHVybiB0aGlzW2FdPSEwLGF9fSk7ZC5hamF4UHJlZmlsdGVyKCJqc29uIGpzb25wIixmdW5jdGlvbihhLGIsYyl7dmFyIGUsZixnLGg9ITEhPT1hLmpzb25wJiYoamMudGVzdChhLnVybCk\/InVybCI6InN0cmluZyI9PXR5cGVvZiBhLmRhdGEmJjA9PT0oYS5jb250ZW50VHlwZXx8CiIiKS5pbmRleE9mKCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiKSYmamMudGVzdChhLmRhdGEpJiYiZGF0YSIpO2lmKGh8fCJqc29ucCI9PT1hLmRhdGFUeXBlc1swXSlyZXR1cm4gZT1hLmpzb25wQ2FsbGJhY2s9TShhLmpzb25wQ2FsbGJhY2spP2EuanNvbnBDYWxsYmFjaygpOmEuanNvbnBDYWxsYmFjayxoP2FbaF09YVtoXS5yZXBsYWNlKGpjLCIkMSIrZSk6ITEhPT1hLmpzb25wJiYoYS51cmwrPShoYy50ZXN0KGEudXJsKT8iJiI6Ij8iKSthLmpzb25wKyI9IitlKSxhLmNvbnZlcnRlcnNbInNjcmlwdCBqc29uIl09ZnVuY3Rpb24oKXtyZXR1cm4gZ3x8ZC5lcnJvcihlKyIgd2FzIG5vdCBjYWxsZWQiKSxnWzBdfSxhLmRhdGFUeXBlc1swXT0ianNvbiIsZj1uW2VdLG5bZV09ZnVuY3Rpb24oKXtnPWFyZ3VtZW50c30sYy5hbHdheXMoZnVuY3Rpb24oKXt2b2lkIDA9PT1mP2QobikucmVtb3ZlUHJvcChlKTpuW2VdPWY7YVtlXSYmKGEuanNvbnBDYWxsYmFjaz1iLmpzb25wQ2FsbGJhY2ssCktjLnB1c2goZSkpO2cmJk0oZikmJmYoZ1swXSk7Zz1mPXZvaWQgMH0pLCJzY3JpcHQifSk7Ti5jcmVhdGVIVE1MRG9jdW1lbnQ9KChKYz1MLmltcGxlbWVudGF0aW9uLmNyZWF0ZUhUTUxEb2N1bWVudCgiIikuYm9keSkuaW5uZXJIVE1MPSI8Zm9ybT48L2Zvcm0+PGZvcm0+PC9mb3JtPiIsMj09PUpjLmNoaWxkTm9kZXMubGVuZ3RoKTtkLnBhcnNlSFRNTD1mdW5jdGlvbihhLGIsYyl7cmV0dXJuInN0cmluZyIhPXR5cGVvZiBhP1tdOigiYm9vbGVhbiI9PXR5cGVvZiBiJiYoYz1iLGI9ITEpLGJ8fChOLmNyZWF0ZUhUTUxEb2N1bWVudD8oKGU9KGI9TC5pbXBsZW1lbnRhdGlvbi5jcmVhdGVIVE1MRG9jdW1lbnQoIiIpKS5jcmVhdGVFbGVtZW50KCJiYXNlIikpLmhyZWY9TC5sb2NhdGlvbi5ocmVmLGIuaGVhZC5hcHBlbmRDaGlsZChlKSk6Yj1MKSxnPSFjJiZbXSwoZj15Yy5leGVjKGEpKT9bYi5jcmVhdGVFbGVtZW50KGZbMV0pXTooZj1SYihbYV0sYixnKSxnJiZnLmxlbmd0aCYmZChnKS5yZW1vdmUoKSwKZC5tZXJnZShbXSxmLmNoaWxkTm9kZXMpKSk7dmFyIGUsZixnfTtkLmZuLmxvYWQ9ZnVuY3Rpb24oYSxiLGMpe3ZhciBlLGYsZyxoPXRoaXMsbT1hLmluZGV4T2YoIiAiKTtyZXR1cm4tMTxtJiYoZT1DKGEuc2xpY2UobSkpLGE9YS5zbGljZSgwLG0pKSxNKGIpPyhjPWIsYj12b2lkIDApOmImJiJvYmplY3QiPT10eXBlb2YgYiYmKGY9IlBPU1QiKSwwPGgubGVuZ3RoJiZkLmFqYXgoe3VybDphLHR5cGU6Znx8IkdFVCIsZGF0YVR5cGU6Imh0bWwiLGRhdGE6Yn0pLmRvbmUoZnVuY3Rpb24obCl7Zz1hcmd1bWVudHM7aC5odG1sKGU\/ZCgiPGRpdj4iKS5hcHBlbmQoZC5wYXJzZUhUTUwobCkpLmZpbmQoZSk6bCl9KS5hbHdheXMoYyYmZnVuY3Rpb24obCx0KXtoLmVhY2goZnVuY3Rpb24oKXtjLmFwcGx5KHRoaXMsZ3x8W2wucmVzcG9uc2VUZXh0LHQsbF0pfSl9KSx0aGlzfTtkLmV4cHIucHNldWRvcy5hbmltYXRlZD1mdW5jdGlvbihhKXtyZXR1cm4gZC5ncmVwKGQudGltZXJzLGZ1bmN0aW9uKGIpe3JldHVybiBhPT09CmIuZWxlbX0pLmxlbmd0aH07ZC5vZmZzZXQ9e3NldE9mZnNldDpmdW5jdGlvbihhLGIsYyl7dmFyIGUsZixnLGg9ZC5jc3MoYSwicG9zaXRpb24iKSxtPWQoYSksbD17fTsic3RhdGljIj09PWgmJihhLnN0eWxlLnBvc2l0aW9uPSJyZWxhdGl2ZSIpO3ZhciB0PW0ub2Zmc2V0KCksdz1kLmNzcyhhLCJ0b3AiKSxyPWQuY3NzKGEsImxlZnQiKTsoImFic29sdXRlIj09PWh8fCJmaXhlZCI9PT1oKSYmLTE8KHcrcikuaW5kZXhPZigiYXV0byIpPyhnPShlPW0ucG9zaXRpb24oKSkudG9wLGY9ZS5sZWZ0KTooZz1wYXJzZUZsb2F0KHcpfHwwLGY9cGFyc2VGbG9hdChyKXx8MCk7TShiKSYmKGI9Yi5jYWxsKGEsYyxkLmV4dGVuZCh7fSx0KSkpO251bGwhPWIudG9wJiYobC50b3A9Yi50b3AtdC50b3ArZyk7bnVsbCE9Yi5sZWZ0JiYobC5sZWZ0PWIubGVmdC10LmxlZnQrZik7InVzaW5nImluIGI\/Yi51c2luZy5jYWxsKGEsbCk6bS5jc3MobCl9fTtkLmZuLmV4dGVuZCh7b2Zmc2V0OmZ1bmN0aW9uKGEpe2lmKGFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIHZvaWQgMD09PQphP3RoaXM6dGhpcy5lYWNoKGZ1bmN0aW9uKGYpe2Qub2Zmc2V0LnNldE9mZnNldCh0aGlzLGEsZil9KTt2YXIgYixjLGU9dGhpc1swXTtyZXR1cm4gZT9lLmdldENsaWVudFJlY3RzKCkubGVuZ3RoPyhiPWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksYz1lLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcse3RvcDpiLnRvcCtjLnBhZ2VZT2Zmc2V0LGxlZnQ6Yi5sZWZ0K2MucGFnZVhPZmZzZXR9KTp7dG9wOjAsbGVmdDowfTp2b2lkIDB9LHBvc2l0aW9uOmZ1bmN0aW9uKCl7aWYodGhpc1swXSl7dmFyIGEsYj10aGlzWzBdLGM9e3RvcDowLGxlZnQ6MH07aWYoImZpeGVkIj09PWQuY3NzKGIsInBvc2l0aW9uIikpdmFyIGU9Yi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtlbHNle2U9dGhpcy5vZmZzZXQoKTt2YXIgZj1iLm93bmVyRG9jdW1lbnQ7Zm9yKGE9Yi5vZmZzZXRQYXJlbnR8fGYuZG9jdW1lbnRFbGVtZW50O2EmJihhPT09Zi5ib2R5fHxhPT09Zi5kb2N1bWVudEVsZW1lbnQpJiYKInN0YXRpYyI9PT1kLmNzcyhhLCJwb3NpdGlvbiIpOylhPWEucGFyZW50Tm9kZTthJiZhIT09YiYmMT09PWEubm9kZVR5cGUmJigoYz1kKGEpLm9mZnNldCgpKS50b3ArPWQuY3NzKGEsImJvcmRlclRvcFdpZHRoIiwhMCksYy5sZWZ0Kz1kLmNzcyhhLCJib3JkZXJMZWZ0V2lkdGgiLCEwKSl9cmV0dXJue3RvcDplLnRvcC1jLnRvcC1kLmNzcyhiLCJtYXJnaW5Ub3AiLCEwKSxsZWZ0OmUubGVmdC1jLmxlZnQtZC5jc3MoYiwibWFyZ2luTGVmdCIsITApfX19LG9mZnNldFBhcmVudDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1hcChmdW5jdGlvbigpe2Zvcih2YXIgYT10aGlzLm9mZnNldFBhcmVudDthJiYic3RhdGljIj09PWQuY3NzKGEsInBvc2l0aW9uIik7KWE9YS5vZmZzZXRQYXJlbnQ7cmV0dXJuIGF8fGpifSl9fSk7ZC5lYWNoKHtzY3JvbGxMZWZ0OiJwYWdlWE9mZnNldCIsc2Nyb2xsVG9wOiJwYWdlWU9mZnNldCJ9LGZ1bmN0aW9uKGEsYil7dmFyIGM9InBhZ2VZT2Zmc2V0Ij09PQpiO2QuZm5bYV09ZnVuY3Rpb24oZSl7cmV0dXJuIFhhKHRoaXMsZnVuY3Rpb24oZixnLGgpe3ZhciBtO2lmKGtiKGYpP209Zjo5PT09Zi5ub2RlVHlwZSYmKG09Zi5kZWZhdWx0Vmlldyksdm9pZCAwPT09aClyZXR1cm4gbT9tW2JdOmZbZ107bT9tLnNjcm9sbFRvKGM\/bS5wYWdlWE9mZnNldDpoLGM\/aDptLnBhZ2VZT2Zmc2V0KTpmW2ddPWh9LGEsZSxhcmd1bWVudHMubGVuZ3RoKX19KTtkLmVhY2goWyJ0b3AiLCJsZWZ0Il0sZnVuY3Rpb24oYSxiKXtkLmNzc0hvb2tzW2JdPVZiKE4ucGl4ZWxQb3NpdGlvbixmdW5jdGlvbihjLGUpe2lmKGUpcmV0dXJuIGU9S2EoYyxiKSxiYy50ZXN0KGUpP2QoYykucG9zaXRpb24oKVtiXSsicHgiOmV9KX0pO2QuZWFjaCh7SGVpZ2h0OiJoZWlnaHQiLFdpZHRoOiJ3aWR0aCJ9LGZ1bmN0aW9uKGEsYil7ZC5lYWNoKHtwYWRkaW5nOiJpbm5lciIrYSxjb250ZW50OmIsIiI6Im91dGVyIithfSxmdW5jdGlvbihjLGUpe2QuZm5bZV09ZnVuY3Rpb24oZiwKZyl7dmFyIGg9YXJndW1lbnRzLmxlbmd0aCYmKGN8fCJib29sZWFuIiE9dHlwZW9mIGYpLG09Y3x8KCEwPT09Znx8ITA9PT1nPyJtYXJnaW4iOiJib3JkZXIiKTtyZXR1cm4gWGEodGhpcyxmdW5jdGlvbihsLHQsdyl7dmFyIHI7cmV0dXJuIGtiKGwpPzA9PT1lLmluZGV4T2YoIm91dGVyIik\/bFsiaW5uZXIiK2FdOmwuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50WyJjbGllbnQiK2FdOjk9PT1sLm5vZGVUeXBlPyhyPWwuZG9jdW1lbnRFbGVtZW50LE1hdGgubWF4KGwuYm9keVsic2Nyb2xsIithXSxyWyJzY3JvbGwiK2FdLGwuYm9keVsib2Zmc2V0IithXSxyWyJvZmZzZXQiK2FdLHJbImNsaWVudCIrYV0pKTp2b2lkIDA9PT13P2QuY3NzKGwsdCxtKTpkLnN0eWxlKGwsdCx3LG0pfSxiLGg\/Zjp2b2lkIDAsaCl9fSl9KTtkLmVhY2goImFqYXhTdGFydCBhamF4U3RvcCBhamF4Q29tcGxldGUgYWpheEVycm9yIGFqYXhTdWNjZXNzIGFqYXhTZW5kIi5zcGxpdCgiICIpLGZ1bmN0aW9uKGEsCmIpe2QuZm5bYl09ZnVuY3Rpb24oYyl7cmV0dXJuIHRoaXMub24oYixjKX19KTtkLmZuLmV4dGVuZCh7YmluZDpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIHRoaXMub24oYSxudWxsLGIsYyl9LHVuYmluZDpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLm9mZihhLG51bGwsYil9LGRlbGVnYXRlOmZ1bmN0aW9uKGEsYixjLGUpe3JldHVybiB0aGlzLm9uKGIsYSxjLGUpfSx1bmRlbGVnYXRlOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg\/dGhpcy5vZmYoYSwiKioiKTp0aGlzLm9mZihiLGF8fCIqKiIsYyl9LGhvdmVyOmZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMubW91c2VlbnRlcihhKS5tb3VzZWxlYXZlKGJ8fGEpfX0pO2QuZWFjaCgiYmx1ciBmb2N1cyBmb2N1c2luIGZvY3Vzb3V0IHJlc2l6ZSBzY3JvbGwgY2xpY2sgZGJsY2xpY2sgbW91c2Vkb3duIG1vdXNldXAgbW91c2Vtb3ZlIG1vdXNlb3ZlciBtb3VzZW91dCBtb3VzZWVudGVyIG1vdXNlbGVhdmUgY2hhbmdlIHNlbGVjdCBzdWJtaXQga2V5ZG93biBrZXlwcmVzcyBrZXl1cCBjb250ZXh0bWVudSIuc3BsaXQoIiAiKSwKZnVuY3Rpb24oYSxiKXtkLmZuW2JdPWZ1bmN0aW9uKGMsZSl7cmV0dXJuIDA8YXJndW1lbnRzLmxlbmd0aD90aGlzLm9uKGIsbnVsbCxjLGUpOnRoaXMudHJpZ2dlcihiKX19KTt2YXIgR2Q9L15bXHNcdUZFRkZceEEwXSt8KFteXHNcdUZFRkZceEEwXSlbXHNcdUZFRkZceEEwXSskL2c7ZC5wcm94eT1mdW5jdGlvbihhLGIpe3ZhciBjLGUsZjtpZigic3RyaW5nIj09dHlwZW9mIGImJihjPWFbYl0sYj1hLGE9YyksTShhKSlyZXR1cm4gZT15YS5jYWxsKGFyZ3VtZW50cywyKSwoZj1mdW5jdGlvbigpe3JldHVybiBhLmFwcGx5KGJ8fHRoaXMsZS5jb25jYXQoeWEuY2FsbChhcmd1bWVudHMpKSl9KS5ndWlkPWEuZ3VpZD1hLmd1aWR8fGQuZ3VpZCsrLGZ9O2QuaG9sZFJlYWR5PWZ1bmN0aW9uKGEpe2E\/ZC5yZWFkeVdhaXQrKzpkLnJlYWR5KCEwKX07ZC5pc0FycmF5PUFycmF5LmlzQXJyYXk7ZC5wYXJzZUpTT049SlNPTi5wYXJzZTtkLm5vZGVOYW1lPVg7ZC5pc0Z1bmN0aW9uPU07ZC5pc1dpbmRvdz0Ka2I7ZC5jYW1lbENhc2U9QmE7ZC50eXBlPVU7ZC5ub3c9RGF0ZS5ub3c7ZC5pc051bWVyaWM9ZnVuY3Rpb24oYSl7dmFyIGI9ZC50eXBlKGEpO3JldHVybigibnVtYmVyIj09PWJ8fCJzdHJpbmciPT09YikmJiFpc05hTihhLXBhcnNlRmxvYXQoYSkpfTtkLnRyaW09ZnVuY3Rpb24oYSl7cmV0dXJuIG51bGw9PWE\/IiI6KGErIiIpLnJlcGxhY2UoR2QsIiQxIil9OyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQmJmRlZmluZSgianF1ZXJ5IixbXSxmdW5jdGlvbigpe3JldHVybiBkfSk7dmFyIEhkPW4ualF1ZXJ5LElkPW4uJDtyZXR1cm4gZC5ub0NvbmZsaWN0PWZ1bmN0aW9uKGEpe3JldHVybiBuLiQ9PT1kJiYobi4kPUlkKSxhJiZuLmpRdWVyeT09PWQmJihuLmpRdWVyeT1IZCksZH0sInVuZGVmaW5lZCI9PXR5cGVvZiBkYSYmKG4ualF1ZXJ5PW4uJD1kKSxkfSk7dmFyIG1hdGNoZWQsYnJvd3NlcjsKalF1ZXJ5LnVhTWF0Y2g9ZnVuY3Rpb24obil7bj1uLnRvTG93ZXJDYXNlKCk7bj0vKGNocm9tZSlbIFwvXShbXHcuXSspLy5leGVjKG4pfHwvKHdlYmtpdClbIFwvXShbXHcuXSspLy5leGVjKG4pfHwvKG9wZXJhKSg\/Oi4qdmVyc2lvbnwpWyBcL10oW1x3Ll0rKS8uZXhlYyhuKXx8Lyhtc2llKSAoW1x3Ll0rKS8uZXhlYyhuKXx8MD5uLmluZGV4T2YoImNvbXBhdGlibGUiKSYmLyhtb3ppbGxhKSg\/Oi4qPyBydjooW1x3Ll0rKXwpLy5leGVjKG4pfHxbXTtyZXR1cm57YnJvd3NlcjpuWzFdfHwiIix2ZXJzaW9uOm5bMl18fCIwIn19O21hdGNoZWQ9alF1ZXJ5LnVhTWF0Y2gobmF2aWdhdG9yLnVzZXJBZ2VudCk7YnJvd3Nlcj17fTttYXRjaGVkLmJyb3dzZXImJihicm93c2VyW21hdGNoZWQuYnJvd3Nlcl09ITAsYnJvd3Nlci52ZXJzaW9uPW1hdGNoZWQudmVyc2lvbik7YnJvd3Nlci5jaHJvbWU\/YnJvd3Nlci53ZWJraXQ9ITA6YnJvd3Nlci53ZWJraXQmJihicm93c2VyLnNhZmFyaT0hMCk7CmpRdWVyeS5icm93c2VyPWJyb3dzZXI7CihmdW5jdGlvbihuKXsiZnVuY3Rpb24iPT09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoWyJqcXVlcnkiXSxmdW5jdGlvbihkYSl7cmV0dXJuIG4oZGEsd2luZG93KX0pOiJvYmplY3QiPT09dHlwZW9mIG1vZHVsZSYmbW9kdWxlLmV4cG9ydHM\/bW9kdWxlLmV4cG9ydHM9bihyZXF1aXJlKCJqcXVlcnkiKSx3aW5kb3cpOm4oalF1ZXJ5LHdpbmRvdyl9KShmdW5jdGlvbihuLGRhKXtmdW5jdGlvbiB3YSh1KXthOnt2YXIgeD0vXihcZCspXC4oXGQrKVwuKFxkKykvLEM9eC5leGVjKG4uZm4uanF1ZXJ5KXx8W107eD14LmV4ZWModSl8fFtdO2Zvcih1PTE7Mz49dTt1Kyspe2lmKCtDW3VdPit4W3VdKXtDPTE7YnJlYWsgYX1pZigrQ1t1XTwreFt1XSl7Qz0tMTticmVhayBhfX1DPTB9cmV0dXJuIDA8PUN9ZnVuY3Rpb24gVSh1LHgpe3ZhciBDPWRhLmNvbnNvbGU7IW4ubWlncmF0ZUlzUGF0Y2hFbmFibGVkKHUpfHxuLm1pZ3JhdGVEZWR1cGxpY2F0ZVdhcm5pbmdzJiZtYlt4XXx8CihtYlt4XT0hMCxuLm1pZ3JhdGVXYXJuaW5ncy5wdXNoKHgrIiBbIit1KyJdIiksQyYmQy53YXJuJiYhbi5taWdyYXRlTXV0ZSYmKEMud2FybigiSlFNSUdSQVRFOiAiK3gpLG4ubWlncmF0ZVRyYWNlJiZDLnRyYWNlJiZDLnRyYWNlKCkpKX1mdW5jdGlvbiBlYih1LHgsQyxILFApe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh1LHgse2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe1UoSCxQKTtyZXR1cm4gQ30sc2V0OmZ1bmN0aW9uKGVhKXtVKEgsUCk7Qz1lYX19KX1mdW5jdGlvbiBYKHUseCxDLEgsUCl7dmFyIGVhLFFhPXVbeF07dVt4XT1mdW5jdGlvbigpe1AmJlUoSCxQKTtlYT1uLm1pZ3JhdGVJc1BhdGNoRW5hYmxlZChIKT9DOlFhfHxuLm5vb3A7cmV0dXJuIGVhLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19ZnVuY3Rpb24gYmEodSx4LEMsSCxQKXtpZighUCl0aHJvdyBFcnJvcigiTm8gd2FybmluZyBtZXNzYWdlIHByb3ZpZGVkIik7cmV0dXJuIFgodSwKeCxDLEgsUCl9ZnVuY3Rpb24gamEodSx4LEMsSCl7cmV0dXJuIFgodSx4LEMsSCl9ZnVuY3Rpb24gbGIodSl7cmV0dXJuIHUucmVwbGFjZSgvLShbYS16XSkvZyxmdW5jdGlvbih4LEMpe3JldHVybiBDLnRvVXBwZXJDYXNlKCl9KX1mdW5jdGlvbiBZYSh1KXtyZXR1cm4gcGIudGVzdCh1KSYmU2IudGVzdCh1WzBdLnRvVXBwZXJDYXNlKCkrdS5zbGljZSgxKSl9bi5taWdyYXRlVmVyc2lvbj0iMy40LjEiO3ZhciBaYT1PYmplY3QuY3JlYXRlKG51bGwpO24ubWlncmF0ZURpc2FibGVQYXRjaGVzPWZ1bmN0aW9uKCl7dmFyIHU7Zm9yKHU9MDt1PGFyZ3VtZW50cy5sZW5ndGg7dSsrKVphW2FyZ3VtZW50c1t1XV09ITB9O24ubWlncmF0ZUVuYWJsZVBhdGNoZXM9ZnVuY3Rpb24oKXt2YXIgdTtmb3IodT0wO3U8YXJndW1lbnRzLmxlbmd0aDt1KyspZGVsZXRlIFphW2FyZ3VtZW50c1t1XV19O24ubWlncmF0ZUlzUGF0Y2hFbmFibGVkPWZ1bmN0aW9uKHUpe3JldHVybiFaYVt1XX07ZGEuY29uc29sZSYmCmRhLmNvbnNvbGUubG9nJiYobiYmd2EoIjMuMC4wIikmJiF3YSgiNS4wLjAiKXx8ZGEuY29uc29sZS5sb2coIkpRTUlHUkFURTogalF1ZXJ5IDMueC00LnggUkVRVUlSRUQiKSxuLm1pZ3JhdGVXYXJuaW5ncyYmZGEuY29uc29sZS5sb2coIkpRTUlHUkFURTogTWlncmF0ZSBwbHVnaW4gbG9hZGVkIG11bHRpcGxlIHRpbWVzIiksZGEuY29uc29sZS5sb2coIkpRTUlHUkFURTogTWlncmF0ZSBpcyBpbnN0YWxsZWQiKyhuLm1pZ3JhdGVNdXRlPyIiOiIgd2l0aCBsb2dnaW5nIGFjdGl2ZSIpKyIsIHZlcnNpb24gIituLm1pZ3JhdGVWZXJzaW9uKSk7dmFyIG1iPXt9O24ubWlncmF0ZURlZHVwbGljYXRlV2FybmluZ3M9ITA7bi5taWdyYXRlV2FybmluZ3M9W107dm9pZCAwPT09bi5taWdyYXRlVHJhY2UmJihuLm1pZ3JhdGVUcmFjZT0hMCk7bi5taWdyYXRlUmVzZXQ9ZnVuY3Rpb24oKXttYj17fTtuLm1pZ3JhdGVXYXJuaW5ncy5sZW5ndGg9MH07IkJhY2tDb21wYXQiPT09ZGEuZG9jdW1lbnQuY29tcGF0TW9kZSYmClUoInF1aXJrcyIsImpRdWVyeSBpcyBub3QgY29tcGF0aWJsZSB3aXRoIFF1aXJrcyBNb2RlIik7dmFyIE9hLE5iPXt9LEJhPW4uZm4uaW5pdCxKYT1uLmZpbmQsT2I9L1xbKFxzKlstXHddK1xzKikoW358XiQqXT89KVxzKihbLVx3I10qPyNbLVx3I10qKVxzKlxdLyxQYj0vXFsoXHMqWy1cd10rXHMqKShbfnxeJCpdPz0pXHMqKFstXHcjXSo\/I1stXHcjXSopXHMqXF0vZywkYT0vXltcc1x1RkVGRlx4QTBdK3woW15cc1x1RkVGRlx4QTBdKVtcc1x1RkVGRlx4QTBdKyQvZztqYShuLmZuLCJpbml0IixmdW5jdGlvbih1KXt2YXIgeD1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpO24ubWlncmF0ZUlzUGF0Y2hFbmFibGVkKCJzZWxlY3Rvci1lbXB0eS1pZCIpJiYic3RyaW5nIj09PXR5cGVvZiB1JiYiIyI9PT11JiYoVSgic2VsZWN0b3ItZW1wdHktaWQiLCJqUXVlcnkoICcjJyApIGlzIG5vdCBhIHZhbGlkIHNlbGVjdG9yIikseFswXT1bXSk7cmV0dXJuIEJhLmFwcGx5KHRoaXMsCngpfSwic2VsZWN0b3ItZW1wdHktaWQiKTtuLmZuLmluaXQucHJvdG90eXBlPW4uZm47amEobiwiZmluZCIsZnVuY3Rpb24odSl7dmFyIHg9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKTtpZigic3RyaW5nIj09PXR5cGVvZiB1JiZPYi50ZXN0KHUpKXRyeXtkYS5kb2N1bWVudC5xdWVyeVNlbGVjdG9yKHUpfWNhdGNoKEMpe3U9dS5yZXBsYWNlKFBiLGZ1bmN0aW9uKEgsUCxlYSxRYSl7cmV0dXJuIlsiK1ArZWErJyInK1FhKyciXSd9KTt0cnl7ZGEuZG9jdW1lbnQucXVlcnlTZWxlY3Rvcih1KSxVKCJzZWxlY3Rvci1oYXNoIiwiQXR0cmlidXRlIHNlbGVjdG9yIHdpdGggJyMnIG11c3QgYmUgcXVvdGVkOiAiK3hbMF0pLHhbMF09dX1jYXRjaChIKXtVKCJzZWxlY3Rvci1oYXNoIiwiQXR0cmlidXRlIHNlbGVjdG9yIHdpdGggJyMnIHdhcyBub3QgZml4ZWQ6ICIreFswXSl9fXJldHVybiBKYS5hcHBseSh0aGlzLHgpfSwic2VsZWN0b3ItaGFzaCIpO2ZvcihPYSBpbiBKYSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoSmEsCk9hKSYmKG4uZmluZFtPYV09SmFbT2FdKTtiYShuLmZuLCJzaXplIixmdW5jdGlvbigpe3JldHVybiB0aGlzLmxlbmd0aH0sInNpemUiLCJqUXVlcnkuZm4uc2l6ZSgpIGlzIGRlcHJlY2F0ZWQgYW5kIHJlbW92ZWQ7IHVzZSB0aGUgLmxlbmd0aCBwcm9wZXJ0eSIpO2JhKG4sInBhcnNlSlNPTiIsZnVuY3Rpb24oKXtyZXR1cm4gSlNPTi5wYXJzZS5hcHBseShudWxsLGFyZ3VtZW50cyl9LCJwYXJzZUpTT04iLCJqUXVlcnkucGFyc2VKU09OIGlzIGRlcHJlY2F0ZWQ7IHVzZSBKU09OLnBhcnNlIik7YmEobiwiaG9sZFJlYWR5IixuLmhvbGRSZWFkeSwiaG9sZFJlYWR5IiwialF1ZXJ5LmhvbGRSZWFkeSBpcyBkZXByZWNhdGVkIik7YmEobiwidW5pcXVlIixuLnVuaXF1ZVNvcnQsInVuaXF1ZSIsImpRdWVyeS51bmlxdWUgaXMgZGVwcmVjYXRlZDsgdXNlIGpRdWVyeS51bmlxdWVTb3J0Iik7ZWIobi5leHByLCJmaWx0ZXJzIixuLmV4cHIucHNldWRvcywiZXhwci1wcmUtcHNldWRvcyIsImpRdWVyeS5leHByLmZpbHRlcnMgaXMgZGVwcmVjYXRlZDsgdXNlIGpRdWVyeS5leHByLnBzZXVkb3MiKTsKZWIobi5leHByLCI6IixuLmV4cHIucHNldWRvcywiZXhwci1wcmUtcHNldWRvcyIsImpRdWVyeS5leHByWyc6J10gaXMgZGVwcmVjYXRlZDsgdXNlIGpRdWVyeS5leHByLnBzZXVkb3MiKTt3YSgiMy4xLjEiKSYmYmEobiwidHJpbSIsZnVuY3Rpb24odSl7cmV0dXJuIG51bGw9PXU\/IiI6KHUrIiIpLnJlcGxhY2UoJGEsIiQxIil9LCJ0cmltIiwialF1ZXJ5LnRyaW0gaXMgZGVwcmVjYXRlZDsgdXNlIFN0cmluZy5wcm90b3R5cGUudHJpbSIpO3dhKCIzLjIuMCIpJiYoYmEobiwibm9kZU5hbWUiLGZ1bmN0aW9uKHUseCl7cmV0dXJuIHUubm9kZU5hbWUmJnUubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PXgudG9Mb3dlckNhc2UoKX0sIm5vZGVOYW1lIiwialF1ZXJ5Lm5vZGVOYW1lIGlzIGRlcHJlY2F0ZWQiKSxiYShuLCJpc0FycmF5IixBcnJheS5pc0FycmF5LCJpc0FycmF5IiwialF1ZXJ5LmlzQXJyYXkgaXMgZGVwcmVjYXRlZDsgdXNlIEFycmF5LmlzQXJyYXkiKSk7d2EoIjMuMy4wIikmJgooYmEobiwiaXNOdW1lcmljIixmdW5jdGlvbih1KXt2YXIgeD10eXBlb2YgdTtyZXR1cm4oIm51bWJlciI9PT14fHwic3RyaW5nIj09PXgpJiYhaXNOYU4odS1wYXJzZUZsb2F0KHUpKX0sImlzTnVtZXJpYyIsImpRdWVyeS5pc051bWVyaWMoKSBpcyBkZXByZWNhdGVkIiksbi5lYWNoKCJCb29sZWFuIE51bWJlciBTdHJpbmcgRnVuY3Rpb24gQXJyYXkgRGF0ZSBSZWdFeHAgT2JqZWN0IEVycm9yIFN5bWJvbCIuc3BsaXQoIiAiKSxmdW5jdGlvbih1LHgpe05iWyJbb2JqZWN0ICIreCsiXSJdPXgudG9Mb3dlckNhc2UoKX0pLGJhKG4sInR5cGUiLGZ1bmN0aW9uKHUpe3JldHVybiBudWxsPT11P3UrIiI6Im9iamVjdCI9PT10eXBlb2YgdXx8ImZ1bmN0aW9uIj09PXR5cGVvZiB1P05iW09iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh1KV18fCJvYmplY3QiOnR5cGVvZiB1fSwidHlwZSIsImpRdWVyeS50eXBlIGlzIGRlcHJlY2F0ZWQiKSxiYShuLCJpc0Z1bmN0aW9uIixmdW5jdGlvbih1KXtyZXR1cm4iZnVuY3Rpb24iPT09CnR5cGVvZiB1fSwiaXNGdW5jdGlvbiIsImpRdWVyeS5pc0Z1bmN0aW9uKCkgaXMgZGVwcmVjYXRlZCIpLGJhKG4sImlzV2luZG93IixmdW5jdGlvbih1KXtyZXR1cm4gbnVsbCE9dSYmdT09PXUud2luZG93fSwiaXNXaW5kb3ciLCJqUXVlcnkuaXNXaW5kb3coKSBpcyBkZXByZWNhdGVkIikpO2lmKG4uYWpheCl7dmFyIHNhPW4uYWpheCxuYj0vKD0pXD8oPz0mfCQpfFw\/XD8vO2phKG4sImFqYXgiLGZ1bmN0aW9uKCl7dmFyIHU9c2EuYXBwbHkodGhpcyxhcmd1bWVudHMpO3UucHJvbWlzZSYmKGJhKHUsInN1Y2Nlc3MiLHUuZG9uZSwianFYSFItbWV0aG9kcyIsImpRWEhSLnN1Y2Nlc3MgaXMgZGVwcmVjYXRlZCBhbmQgcmVtb3ZlZCIpLGJhKHUsImVycm9yIix1LmZhaWwsImpxWEhSLW1ldGhvZHMiLCJqUVhIUi5lcnJvciBpcyBkZXByZWNhdGVkIGFuZCByZW1vdmVkIiksYmEodSwiY29tcGxldGUiLHUuYWx3YXlzLCJqcVhIUi1tZXRob2RzIiwialFYSFIuY29tcGxldGUgaXMgZGVwcmVjYXRlZCBhbmQgcmVtb3ZlZCIpKTsKcmV0dXJuIHV9LCJqcVhIUi1tZXRob2RzIik7d2EoIjQuMC4wIil8fG4uYWpheFByZWZpbHRlcigiK2pzb24iLGZ1bmN0aW9uKHUpeyExIT09dS5qc29ucCYmKG5iLnRlc3QodS51cmwpfHwic3RyaW5nIj09PXR5cGVvZiB1LmRhdGEmJjA9PT0odS5jb250ZW50VHlwZXx8IiIpLmluZGV4T2YoImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIpJiZuYi50ZXN0KHUuZGF0YSkpJiZVKCJqc29ucC1wcm9tb3Rpb24iLCJKU09OLXRvLUpTT05QIGF1dG8tcHJvbW90aW9uIGlzIGRlcHJlY2F0ZWQiKX0pfXZhciBSYj1uLmZuLnJlbW92ZUF0dHIsYWI9bi5mbi50b2dnbGVDbGFzcyxiYj0vXFMrL2c7amEobi5mbiwicmVtb3ZlQXR0ciIsZnVuY3Rpb24odSl7dmFyIHg9dGhpcyxDPSExO24uZWFjaCh1Lm1hdGNoKGJiKSxmdW5jdGlvbihILFApe24uZXhwci5tYXRjaC5ib29sLnRlc3QoUCkmJnguZWFjaChmdW5jdGlvbigpe2lmKCExIT09bih0aGlzKS5wcm9wKFApKXJldHVybiBDPQohMCwhMX0pO0MmJihVKCJyZW1vdmVBdHRyLWJvb2wiLCJqUXVlcnkuZm4ucmVtb3ZlQXR0ciBubyBsb25nZXIgc2V0cyBib29sZWFuIHByb3BlcnRpZXM6ICIrUCkseC5wcm9wKFAsITEpKX0pO3JldHVybiBSYi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LCJyZW1vdmVBdHRyLWJvb2wiKTtqYShuLmZuLCJ0b2dnbGVDbGFzcyIsZnVuY3Rpb24odSl7aWYodm9pZCAwIT09dSYmImJvb2xlYW4iIT09dHlwZW9mIHUpcmV0dXJuIGFiLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtVKCJ0b2dnbGVDbGFzcy1ib29sIiwialF1ZXJ5LmZuLnRvZ2dsZUNsYXNzKCBib29sZWFuICkgaXMgZGVwcmVjYXRlZCIpO3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgeD10aGlzLmdldEF0dHJpYnV0ZSYmdGhpcy5nZXRBdHRyaWJ1dGUoImNsYXNzIil8fCIiO3gmJm4uZGF0YSh0aGlzLCJfX2NsYXNzTmFtZV9fIix4KTt0aGlzLnNldEF0dHJpYnV0ZSYmdGhpcy5zZXRBdHRyaWJ1dGUoImNsYXNzIix4fHwKITE9PT11PyIiOm4uZGF0YSh0aGlzLCJfX2NsYXNzTmFtZV9fIil8fCIiKX0pfSwidG9nZ2xlQ2xhc3MtYm9vbCIpO3ZhciBmYj0hMSxwYj0vXlthLXpdLyxTYj0vXig\/OkJvcmRlcig\/OlRvcHxSaWdodHxCb3R0b218TGVmdCk\/KD86V2lkdGh8KXwoPzpNYXJnaW58UGFkZGluZyk\/KD86VG9wfFJpZ2h0fEJvdHRvbXxMZWZ0KT98KD86TWlufE1heCk\/KD86V2lkdGh8SGVpZ2h0KSkkLztuLnN3YXAmJm4uZWFjaChbImhlaWdodCIsIndpZHRoIiwicmVsaWFibGVNYXJnaW5SaWdodCJdLGZ1bmN0aW9uKHUseCl7dmFyIEM9bi5jc3NIb29rc1t4XSYmbi5jc3NIb29rc1t4XS5nZXQ7QyYmKG4uY3NzSG9va3NbeF0uZ2V0PWZ1bmN0aW9uKCl7ZmI9ITA7dmFyIEg9Qy5hcHBseSh0aGlzLGFyZ3VtZW50cyk7ZmI9ITE7cmV0dXJuIEh9KX0pO2phKG4sInN3YXAiLGZ1bmN0aW9uKHUseCxDLEgpe3ZhciBQLGVhPXt9O2ZifHxVKCJzd2FwIiwialF1ZXJ5LnN3YXAoKSBpcyB1bmRvY3VtZW50ZWQgYW5kIGRlcHJlY2F0ZWQiKTsKZm9yKFAgaW4geCllYVtQXT11LnN0eWxlW1BdLHUuc3R5bGVbUF09eFtQXTtDPUMuYXBwbHkodSxIfHxbXSk7Zm9yKFAgaW4geCl1LnN0eWxlW1BdPWVhW1BdO3JldHVybiBDfSwic3dhcCIpO3dhKCIzLjQuMCIpJiYidW5kZWZpbmVkIiE9PXR5cGVvZiBQcm94eSYmKG4uY3NzUHJvcHM9bmV3IFByb3h5KG4uY3NzUHJvcHN8fHt9LHtzZXQ6ZnVuY3Rpb24oKXtVKCJjc3NQcm9wcyIsImpRdWVyeS5jc3NQcm9wcyBpcyBkZXByZWNhdGVkIik7cmV0dXJuIFJlZmxlY3Quc2V0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX19KSk7aWYod2EoIjQuMC4wIikpe3ZhciBxYj17YW5pbWF0aW9uSXRlcmF0aW9uQ291bnQ6ITAsY29sdW1uQ291bnQ6ITAsZmlsbE9wYWNpdHk6ITAsZmxleEdyb3c6ITAsZmxleFNocmluazohMCxmb250V2VpZ2h0OiEwLGdyaWRBcmVhOiEwLGdyaWRDb2x1bW46ITAsZ3JpZENvbHVtbkVuZDohMCxncmlkQ29sdW1uU3RhcnQ6ITAsZ3JpZFJvdzohMCxncmlkUm93RW5kOiEwLApncmlkUm93U3RhcnQ6ITAsbGluZUhlaWdodDohMCxvcGFjaXR5OiEwLG9yZGVyOiEwLG9ycGhhbnM6ITAsd2lkb3dzOiEwLHpJbmRleDohMCx6b29tOiEwfTtuLmNzc051bWJlcj0idW5kZWZpbmVkIiE9PXR5cGVvZiBQcm94eT9uZXcgUHJveHkocWIse2dldDpmdW5jdGlvbigpe1UoImNzcy1udW1iZXIiLCJqUXVlcnkuY3NzTnVtYmVyIGlzIGRlcHJlY2F0ZWQiKTtyZXR1cm4gUmVmbGVjdC5nZXQuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxzZXQ6ZnVuY3Rpb24oKXtVKCJjc3MtbnVtYmVyIiwialF1ZXJ5LmNzc051bWJlciBpcyBkZXByZWNhdGVkIik7cmV0dXJuIFJlZmxlY3Quc2V0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX19KTpxYn1lbHNlIHFiPW4uY3NzTnVtYmVyO3ZhciAkYj1uLmZuLmNzcztqYShuLmZuLCJjc3MiLGZ1bmN0aW9uKHUseCl7dmFyIEM9dGhpcztpZih1JiYib2JqZWN0Ij09PXR5cGVvZiB1JiYhQXJyYXkuaXNBcnJheSh1KSlyZXR1cm4gbi5lYWNoKHUsZnVuY3Rpb24oUCwKZWEpe24uZm4uY3NzLmNhbGwoQyxQLGVhKX0pLHRoaXM7aWYoIm51bWJlciI9PT10eXBlb2YgeCl7dmFyIEg9bGIodSk7WWEoSCl8fHFiW0hdfHxVKCJjc3MtbnVtYmVyIiwnTnVtYmVyLXR5cGVkIHZhbHVlcyBhcmUgZGVwcmVjYXRlZCBmb3IgalF1ZXJ5LmZuLmNzcyggIicrdSsnIiwgdmFsdWUgKScpfXJldHVybiAkYi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LCJjc3MtbnVtYmVyIik7dmFyIGdiPW4uZGF0YTtqYShuLCJkYXRhIixmdW5jdGlvbih1LHgsQyl7dmFyIEg7aWYoeCYmIm9iamVjdCI9PT10eXBlb2YgeCYmMj09PWFyZ3VtZW50cy5sZW5ndGgpe3ZhciBQPW4uaGFzRGF0YSh1KSYmZ2IuY2FsbCh0aGlzLHUpLGVhPXt9O2ZvcihIIGluIHgpSCE9PWxiKEgpPyhVKCJkYXRhLWNhbWVsQ2FzZSIsImpRdWVyeS5kYXRhKCkgYWx3YXlzIHNldHMvZ2V0cyBjYW1lbENhc2VkIG5hbWVzOiAiK0gpLFBbSF09eFtIXSk6ZWFbSF09eFtIXTtnYi5jYWxsKHRoaXMsdSxlYSk7cmV0dXJuIHh9cmV0dXJuIHgmJgoic3RyaW5nIj09PXR5cGVvZiB4JiZ4IT09bGIoeCkmJihQPW4uaGFzRGF0YSh1KSYmZ2IuY2FsbCh0aGlzLHUpKSYmeCBpbiBQPyhVKCJkYXRhLWNhbWVsQ2FzZSIsImpRdWVyeS5kYXRhKCkgYWx3YXlzIHNldHMvZ2V0cyBjYW1lbENhc2VkIG5hbWVzOiAiK3gpLDI8YXJndW1lbnRzLmxlbmd0aCYmKFBbeF09QyksUFt4XSk6Z2IuYXBwbHkodGhpcyxhcmd1bWVudHMpfSwiZGF0YS1jYW1lbENhc2UiKTtpZihuLmZ4KXt2YXIgY2I9bi5Ud2Vlbi5wcm90b3R5cGUucnVuLFRiPWZ1bmN0aW9uKHUpe3JldHVybiB1fTtqYShuLlR3ZWVuLnByb3RvdHlwZSwicnVuIixmdW5jdGlvbigpezE8bi5lYXNpbmdbdGhpcy5lYXNpbmddLmxlbmd0aCYmKFUoImVhc2luZy1vbmUtYXJnIiwiJ2pRdWVyeS5lYXNpbmcuIit0aGlzLmVhc2luZy50b1N0cmluZygpKyInIHNob3VsZCB1c2Ugb25seSBvbmUgYXJndW1lbnQiKSxuLmVhc2luZ1t0aGlzLmVhc2luZ109VGIpO2NiLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sCiJlYXNpbmctb25lLWFyZyIpO3ZhciBLYT1uLmZ4LmludGVydmFsO2RhLnJlcXVlc3RBbmltYXRpb25GcmFtZSYmT2JqZWN0LmRlZmluZVByb3BlcnR5KG4uZngsImludGVydmFsIix7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7ZGEuZG9jdW1lbnQuaGlkZGVufHxVKCJmeC1pbnRlcnZhbCIsImpRdWVyeS5meC5pbnRlcnZhbCBpcyBkZXByZWNhdGVkIik7cmV0dXJuIG4ubWlncmF0ZUlzUGF0Y2hFbmFibGVkKCJmeC1pbnRlcnZhbCIpP3ZvaWQgMD09PUthPzEzOkthOkthfSxzZXQ6ZnVuY3Rpb24odSl7VSgiZngtaW50ZXJ2YWwiLCJqUXVlcnkuZnguaW50ZXJ2YWwgaXMgZGVwcmVjYXRlZCIpO0thPXV9fSl9dmFyIFZiPW4uZm4ubG9hZCxBYj1uLmV2ZW50LmFkZCxXYj1uLmV2ZW50LmZpeDtuLmV2ZW50LnByb3BzPVtdO24uZXZlbnQuZml4SG9va3M9e307ZWIobi5ldmVudC5wcm9wcywiY29uY2F0IixuLmV2ZW50LnByb3BzLmNvbmNhdCwiZXZlbnQtb2xkLXBhdGNoIiwKImpRdWVyeS5ldmVudC5wcm9wcy5jb25jYXQoKSBpcyBkZXByZWNhdGVkIGFuZCByZW1vdmVkIik7amEobi5ldmVudCwiZml4IixmdW5jdGlvbih1KXt2YXIgeD11LnR5cGUsQz10aGlzLmZpeEhvb2tzW3hdLEg9bi5ldmVudC5wcm9wcztpZihILmxlbmd0aClmb3IoVSgiZXZlbnQtb2xkLXBhdGNoIiwialF1ZXJ5LmV2ZW50LnByb3BzIGFyZSBkZXByZWNhdGVkIGFuZCByZW1vdmVkOiAiK0guam9pbigpKTtILmxlbmd0aDspbi5ldmVudC5hZGRQcm9wKEgucG9wKCkpO2lmKEMmJiFDLl9taWdyYXRlZF8mJihDLl9taWdyYXRlZF89ITAsVSgiZXZlbnQtb2xkLXBhdGNoIiwialF1ZXJ5LmV2ZW50LmZpeEhvb2tzIGFyZSBkZXByZWNhdGVkIGFuZCByZW1vdmVkOiAiK3gpLChIPUMucHJvcHMpJiZILmxlbmd0aCkpZm9yKDtILmxlbmd0aDspbi5ldmVudC5hZGRQcm9wKEgucG9wKCkpO3g9V2IuY2FsbCh0aGlzLHUpO3JldHVybiBDJiZDLmZpbHRlcj9DLmZpbHRlcih4LHUpOnh9LCJldmVudC1vbGQtcGF0Y2giKTsKamEobi5ldmVudCwiYWRkIixmdW5jdGlvbih1LHgpe3U9PT1kYSYmImxvYWQiPT09eCYmImNvbXBsZXRlIj09PWRhLmRvY3VtZW50LnJlYWR5U3RhdGUmJlUoImxvYWQtYWZ0ZXItZXZlbnQiLCJqUXVlcnkod2luZG93KS5vbignbG9hZCcuLi4pIGNhbGxlZCBhZnRlciBsb2FkIGV2ZW50IG9jY3VycmVkIik7cmV0dXJuIEFiLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sImxvYWQtYWZ0ZXItZXZlbnQiKTtuLmVhY2goWyJsb2FkIiwidW5sb2FkIiwiZXJyb3IiXSxmdW5jdGlvbih1LHgpe2phKG4uZm4seCxmdW5jdGlvbigpe3ZhciBDPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywwKTtpZigibG9hZCI9PT14JiYic3RyaW5nIj09PXR5cGVvZiBDWzBdKXJldHVybiBWYi5hcHBseSh0aGlzLEMpO1UoInNob3J0aGFuZC1yZW1vdmVkLXYzIiwialF1ZXJ5LmZuLiIreCsiKCkgaXMgZGVwcmVjYXRlZCIpO0Muc3BsaWNlKDAsMCx4KTtpZihhcmd1bWVudHMubGVuZ3RoKXJldHVybiB0aGlzLm9uLmFwcGx5KHRoaXMsCkMpO3RoaXMudHJpZ2dlckhhbmRsZXIuYXBwbHkodGhpcyxDKTtyZXR1cm4gdGhpc30sInNob3J0aGFuZC1yZW1vdmVkLXYzIil9KTtuLmVhY2goImJsdXIgZm9jdXMgZm9jdXNpbiBmb2N1c291dCByZXNpemUgc2Nyb2xsIGNsaWNrIGRibGNsaWNrIG1vdXNlZG93biBtb3VzZXVwIG1vdXNlbW92ZSBtb3VzZW92ZXIgbW91c2VvdXQgbW91c2VlbnRlciBtb3VzZWxlYXZlIGNoYW5nZSBzZWxlY3Qgc3VibWl0IGtleWRvd24ga2V5cHJlc3Mga2V5dXAgY29udGV4dG1lbnUiLnNwbGl0KCIgIiksZnVuY3Rpb24odSx4KXtiYShuLmZuLHgsZnVuY3Rpb24oQyxIKXtyZXR1cm4gMDxhcmd1bWVudHMubGVuZ3RoP3RoaXMub24oeCxudWxsLEMsSCk6dGhpcy50cmlnZ2VyKHgpfSwic2hvcnRoYW5kLWRlcHJlY2F0ZWQtdjMiLCJqUXVlcnkuZm4uIit4KyIoKSBldmVudCBzaG9ydGhhbmQgaXMgZGVwcmVjYXRlZCIpfSk7bihmdW5jdGlvbigpe24oZGEuZG9jdW1lbnQpLnRyaWdnZXJIYW5kbGVyKCJyZWFkeSIpfSk7Cm4uZXZlbnQuc3BlY2lhbC5yZWFkeT17c2V0dXA6ZnVuY3Rpb24oKXt0aGlzPT09ZGEuZG9jdW1lbnQmJlUoInJlYWR5LWV2ZW50IiwiJ3JlYWR5JyBldmVudCBpcyBkZXByZWNhdGVkIil9fTtiYShuLmZuLCJiaW5kIixmdW5jdGlvbih1LHgsQyl7cmV0dXJuIHRoaXMub24odSxudWxsLHgsQyl9LCJwcmUtb24tbWV0aG9kcyIsImpRdWVyeS5mbi5iaW5kKCkgaXMgZGVwcmVjYXRlZCIpO2JhKG4uZm4sInVuYmluZCIsZnVuY3Rpb24odSx4KXtyZXR1cm4gdGhpcy5vZmYodSxudWxsLHgpfSwicHJlLW9uLW1ldGhvZHMiLCJqUXVlcnkuZm4udW5iaW5kKCkgaXMgZGVwcmVjYXRlZCIpO2JhKG4uZm4sImRlbGVnYXRlIixmdW5jdGlvbih1LHgsQyxIKXtyZXR1cm4gdGhpcy5vbih4LHUsQyxIKX0sInByZS1vbi1tZXRob2RzIiwialF1ZXJ5LmZuLmRlbGVnYXRlKCkgaXMgZGVwcmVjYXRlZCIpO2JhKG4uZm4sInVuZGVsZWdhdGUiLGZ1bmN0aW9uKHUseCxDKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg\/CnRoaXMub2ZmKHUsIioqIik6dGhpcy5vZmYoeCx1fHwiKioiLEMpfSwicHJlLW9uLW1ldGhvZHMiLCJqUXVlcnkuZm4udW5kZWxlZ2F0ZSgpIGlzIGRlcHJlY2F0ZWQiKTtiYShuLmZuLCJob3ZlciIsZnVuY3Rpb24odSx4KXtyZXR1cm4gdGhpcy5vbigibW91c2VlbnRlciIsdSkub24oIm1vdXNlbGVhdmUiLHh8fHUpfSwicHJlLW9uLW1ldGhvZHMiLCJqUXVlcnkuZm4uaG92ZXIoKSBpcyBkZXByZWNhdGVkIik7dmFyIHJiPS88KD8hYXJlYXxicnxjb2x8ZW1iZWR8aHJ8aW1nfGlucHV0fGxpbmt8bWV0YXxwYXJhbSkoKFthLXpdW15cL1wwPlx4MjBcdFxyXG5cZl0qKVtePl0qKVwvPi9naSxCYj1mdW5jdGlvbih1KXt2YXIgeD1kYS5kb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5jcmVhdGVIVE1MRG9jdW1lbnQoIiIpO3guYm9keS5pbm5lckhUTUw9dTtyZXR1cm4geC5ib2R5JiZ4LmJvZHkuaW5uZXJIVE1MfTtuLlVOU0FGRV9yZXN0b3JlTGVnYWN5SHRtbFByZWZpbHRlcj1mdW5jdGlvbigpe24ubWlncmF0ZUVuYWJsZVBhdGNoZXMoInNlbGYtY2xvc2VkLXRhZ3MiKX07CmphKG4sImh0bWxQcmVmaWx0ZXIiLGZ1bmN0aW9uKHUpe3ZhciB4PXUucmVwbGFjZShyYiwiPCQxPjwvJDI+Iik7eCE9PXUmJkJiKHUpIT09QmIoeCkmJlUoInNlbGYtY2xvc2VkLXRhZ3MiLCJIVE1MIHRhZ3MgbXVzdCBiZSBwcm9wZXJseSBuZXN0ZWQgYW5kIGNsb3NlZDogIit1KTtyZXR1cm4gdS5yZXBsYWNlKHJiLCI8JDE+PC8kMj4iKX0sInNlbGYtY2xvc2VkLXRhZ3MiKTtuLm1pZ3JhdGVEaXNhYmxlUGF0Y2hlcygic2VsZi1jbG9zZWQtdGFncyIpO3ZhciB6YT1uLmZuLm9mZnNldDtqYShuLmZuLCJvZmZzZXQiLGZ1bmN0aW9uKCl7dmFyIHU9dGhpc1swXTtyZXR1cm4hdXx8dS5ub2RlVHlwZSYmdS5nZXRCb3VuZGluZ0NsaWVudFJlY3Q\/emEuYXBwbHkodGhpcyxhcmd1bWVudHMpOihVKCJvZmZzZXQtdmFsaWQtZWxlbSIsImpRdWVyeS5mbi5vZmZzZXQoKSByZXF1aXJlcyBhIHZhbGlkIERPTSBlbGVtZW50IiksYXJndW1lbnRzLmxlbmd0aD90aGlzOnZvaWQgMCl9LCJvZmZzZXQtdmFsaWQtZWxlbSIpOwppZihuLmFqYXgpe3ZhciBDYj1uLnBhcmFtO2phKG4sInBhcmFtIixmdW5jdGlvbih1LHgpe3ZhciBDPW4uYWpheFNldHRpbmdzJiZuLmFqYXhTZXR0aW5ncy50cmFkaXRpb25hbDt2b2lkIDA9PT14JiZDJiYoVSgicGFyYW0tYWpheC10cmFkaXRpb25hbCIsImpRdWVyeS5wYXJhbSgpIG5vIGxvbmdlciB1c2VzIGpRdWVyeS5hamF4U2V0dGluZ3MudHJhZGl0aW9uYWwiKSx4PUMpO3JldHVybiBDYi5jYWxsKHRoaXMsdSx4KX0sInBhcmFtLWFqYXgtdHJhZGl0aW9uYWwiKX1iYShuLmZuLCJhbmRTZWxmIixuLmZuLmFkZEJhY2ssImFuZFNlbGYiLCJqUXVlcnkuZm4uYW5kU2VsZigpIGlzIGRlcHJlY2F0ZWQgYW5kIHJlbW92ZWQsIHVzZSBqUXVlcnkuZm4uYWRkQmFjaygpIik7aWYobi5EZWZlcnJlZCl7dmFyIERiPW4uRGVmZXJyZWQsdGI9W1sicmVzb2x2ZSIsImRvbmUiLG4uQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpLG4uQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpLCJyZXNvbHZlZCJdLApbInJlamVjdCIsImZhaWwiLG4uQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpLG4uQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpLCJyZWplY3RlZCJdLFsibm90aWZ5IiwicHJvZ3Jlc3MiLG4uQ2FsbGJhY2tzKCJtZW1vcnkiKSxuLkNhbGxiYWNrcygibWVtb3J5IildXTtqYShuLCJEZWZlcnJlZCIsZnVuY3Rpb24odSl7ZnVuY3Rpb24geCgpe3ZhciBQPWFyZ3VtZW50cztyZXR1cm4gbi5EZWZlcnJlZChmdW5jdGlvbihlYSl7bi5lYWNoKHRiLGZ1bmN0aW9uKFFhLEViKXt2YXIgaGI9ImZ1bmN0aW9uIj09PXR5cGVvZiBQW1FhXSYmUFtRYV07Q1tFYlsxXV0oZnVuY3Rpb24oKXt2YXIgb2E9aGImJmhiLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtpZihvYSYmImZ1bmN0aW9uIj09PXR5cGVvZiBvYS5wcm9taXNlKW9hLnByb21pc2UoKS5kb25lKGVhLnJlc29sdmUpLmZhaWwoZWEucmVqZWN0KS5wcm9ncmVzcyhlYS5ub3RpZnkpO2Vsc2UgZWFbRWJbMF0rIldpdGgiXSh0aGlzPT09SD9lYS5wcm9taXNlKCk6CnRoaXMsaGI\/W29hXTphcmd1bWVudHMpfSl9KTtQPW51bGx9KS5wcm9taXNlKCl9dmFyIEM9RGIoKSxIPUMucHJvbWlzZSgpO2JhKEMsInBpcGUiLHgsImRlZmVycmVkLXBpcGUiLCJkZWZlcnJlZC5waXBlKCkgaXMgZGVwcmVjYXRlZCIpO2JhKEgsInBpcGUiLHgsImRlZmVycmVkLXBpcGUiLCJkZWZlcnJlZC5waXBlKCkgaXMgZGVwcmVjYXRlZCIpO3UmJnUuY2FsbChDLEMpO3JldHVybiBDfSwiZGVmZXJyZWQtcGlwZSIpO24uRGVmZXJyZWQuZXhjZXB0aW9uSG9vaz1EYi5leGNlcHRpb25Ib29rfXJldHVybiBufSk7Ci8qKiAvbS9qcy9qcXVlcnkuY29va2llLmpzICoqLwp2YXIgX19fZDJjX2pxdWVyeWNvb2tpZWpzX2Nfb249IjIwMjUtMDUtMjMgMTc6MDk6MjgiOyd1c2Ugc3RyaWN0Jzt2YXIgX19fZDJjX2pxdWVyeWNvb2tpZWpzX2Nfb249IjIwMjQtMDEtMzEgMTQ6MzY6MDkiOyJ1c2Ugc3RyaWN0IjtfX19kMmNfanF1ZXJ5Y29va2llanNfY19vbj0iMjAyMy0wOS0wNiAxNDozMDowNiI7InVzZSBzdHJpY3QiOwooZnVuY3Rpb24oaCxsLHIpe2Z1bmN0aW9uIHQoYil7cmV0dXJuIGJ9ZnVuY3Rpb24gdShiKXt0cnl7cmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChiLnJlcGxhY2UobSwiICIpKX1jYXRjaChjKXt0cnl7cmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudCh1bmVzY2FwZShiKS5yZXBsYWNlKG0sIiAiKSl9Y2F0Y2goYSl7cmV0dXJuIGNvbnNvbGUmJmNvbnNvbGUubG9nJiZjb25zb2xlLmxvZyhhLm1lc3NhZ2UpLGJ9fX1mdW5jdGlvbiBuKGIsYyxhLGUsayxmKXsidW5kZWZpbmVkIj09PXR5cGVvZiBmJiYoZj01KTsidW5kZWZpbmVkIj09PXR5cGVvZiB3aW5kb3cuQ29va2llTG9nZ2VyP2YmJnNldFRpbWVvdXQoZnVuY3Rpb24oKXtuKGIsYyxhLGUsayxmLTEpfSwxRTMpOndpbmRvdy5Db29raWVMb2dnZXIubG9nKGIsYyxhLGUsayl9dmFyIG09L1wrL2csZz1oLmNvb2tpZT1mdW5jdGlvbihiLGMsYSl7aWYoYyE9PXIpcmV0dXJuIENvb2tpZXMuaXNDb29raWVBbGxvd2VkKGIsZnVuY3Rpb24oZCl7ZGVidWcoIkNvb2tpZTogIiwKYixkKTthPWguZXh0ZW5kKHt9LGcuZGVmYXVsdHMsYSk7aWYoIWQpcmV0dXJuIENvb2tpZXMucmVtb3ZlKGIsYS5wYXRoLGEuZG9tYWluKSwhMTtudWxsPT09YyYmKGEuZXhwaXJlcz0tMSk7Im51bWJlciI9PT10eXBlb2YgYS5leHBpcmVzSW5NaW51dGVzJiYoYS5leHBpcmVzPWEuZXhwaXJlc0luTWludXRlcy8xNDQwKTtpZigibnVtYmVyIj09PXR5cGVvZiBhLmV4cGlyZXMpe2Q9YS5leHBpcmVzO3ZhciBwPWEuZXhwaXJlcz1uZXcgRGF0ZTtwLnNldFRpbWUoK3ArODY0RTUqZCl9ZD1uZXcgRGF0ZTtkLnNldEZ1bGxZZWFyKGQuZ2V0RnVsbFllYXIoKSsxKTthLmV4cGlyZXM+ZCYmKGEuZXhwaXJlcz1kKTtjPWcuanNvbj9KU09OLnN0cmluZ2lmeShjKTpTdHJpbmcoYyk7bihiLGMsYS5leHBpcmVzLGEucGF0aCxhLmRvbWFpbik7cmV0dXJuIGwuY29va2llPVtlbmNvZGVVUklDb21wb25lbnQoYiksIj0iLGcucmF3P2M6ZW5jb2RlVVJJQ29tcG9uZW50KGMpLGEuZXhwaXJlcz8iOyBleHBpcmVzPSIrCmEuZXhwaXJlcy50b1VUQ1N0cmluZygpOiIiLGEucGF0aD8iOyBwYXRoPSIrYS5wYXRoOiIiLGEuZG9tYWluPyI7IGRvbWFpbj0iK2EuZG9tYWluOiIiLGEuc2VjdXJlPyI7IHNlY3VyZSI6IiJdLmpvaW4oIiIpfSk7Zm9yKHZhciBlPWcucmF3P3Q6dSxrPWwuY29va2llLnNwbGl0KCI7ICIpLGY9MCx2PWsubGVuZ3RoO2Y8djtmKyspe3ZhciBxPWtbZl0uc3BsaXQoIj0iKTtpZihlKHEuc2hpZnQoKSk9PT1iKXJldHVybiBlPWUocS5qb2luKCI9IikpLGcuanNvbj9KU09OLnBhcnNlKGUpOmV9cmV0dXJuIG51bGx9O2cuZGVmYXVsdHM9e307aC5yZW1vdmVDb29raWU9ZnVuY3Rpb24oYixjKXtyZXR1cm4gbnVsbCE9PWguY29va2llKGIpPyhoLmNvb2tpZShiLG51bGwsYyksITApOiExfX0pKGpRdWVyeSxkb2N1bWVudCk7Ci8qKiAvbS9qcy92YW5pbGxhanMvY29udGVudExvYWRlci5qcyAqKi8KdmFyIF9fX2QyY19jb250ZW50TG9hZGVyanNfY19vbj0iMjAyNi0wNS0wNSAxMzozMDowMyI7J3VzZSBzdHJpY3QnO3ZhciAkanNjb21wPSRqc2NvbXB8fHt9OyRqc2NvbXAuc2NvcGU9e307JGpzY29tcC5BU1NVTUVfRVM1PSExOyRqc2NvbXAuQVNTVU1FX05PX05BVElWRV9NQVA9ITE7JGpzY29tcC5BU1NVTUVfTk9fTkFUSVZFX1NFVD0hMTskanNjb21wLlNJTVBMRV9GUk9VTkRfUE9MWUZJTEw9ITE7JGpzY29tcC5JU09MQVRFX1BPTFlGSUxMUz0hMTskanNjb21wLkZPUkNFX1BPTFlGSUxMX1BST01JU0U9ITE7JGpzY29tcC5GT1JDRV9QT0xZRklMTF9QUk9NSVNFX1dIRU5fTk9fVU5IQU5ETEVEX1JFSkVDVElPTj0hMTskanNjb21wLmRlZmluZVByb3BlcnR5PSRqc2NvbXAuQVNTVU1FX0VTNXx8ImZ1bmN0aW9uIj09dHlwZW9mIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzP09iamVjdC5kZWZpbmVQcm9wZXJ0eTpmdW5jdGlvbihhLGIsYyl7aWYoYT09QXJyYXkucHJvdG90eXBlfHxhPT1PYmplY3QucHJvdG90eXBlKXJldHVybiBhO2FbYl09Yy52YWx1ZTtyZXR1cm4gYX07CiRqc2NvbXAuZ2V0R2xvYmFsPWZ1bmN0aW9uKGEpe2E9WyJvYmplY3QiPT10eXBlb2YgZ2xvYmFsVGhpcyYmZ2xvYmFsVGhpcyxhLCJvYmplY3QiPT10eXBlb2Ygd2luZG93JiZ3aW5kb3csIm9iamVjdCI9PXR5cGVvZiBzZWxmJiZzZWxmLCJvYmplY3QiPT10eXBlb2YgZ2xvYmFsJiZnbG9iYWxdO2Zvcih2YXIgYj0wO2I8YS5sZW5ndGg7KytiKXt2YXIgYz1hW2JdO2lmKGMmJmMuTWF0aD09TWF0aClyZXR1cm4gY310aHJvdyBFcnJvcigiQ2Fubm90IGZpbmQgZ2xvYmFsIG9iamVjdCIpO307JGpzY29tcC5nbG9iYWw9JGpzY29tcC5nZXRHbG9iYWwodGhpcyk7JGpzY29tcC5JU19TWU1CT0xfTkFUSVZFPSJmdW5jdGlvbiI9PT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09PXR5cGVvZiBTeW1ib2woIngiKTskanNjb21wLlRSVVNUX0VTNl9QT0xZRklMTFM9ISRqc2NvbXAuSVNPTEFURV9QT0xZRklMTFN8fCRqc2NvbXAuSVNfU1lNQk9MX05BVElWRTskanNjb21wLnBvbHlmaWxscz17fTsKJGpzY29tcC5wcm9wZXJ0eVRvUG9seWZpbGxTeW1ib2w9e307JGpzY29tcC5QT0xZRklMTF9QUkVGSVg9IiRqc2NwJCI7dmFyICRqc2NvbXAkbG9va3VwUG9seWZpbGxlZFZhbHVlPWZ1bmN0aW9uKGEsYil7dmFyIGM9JGpzY29tcC5wcm9wZXJ0eVRvUG9seWZpbGxTeW1ib2xbYl07aWYobnVsbD09YylyZXR1cm4gYVtiXTtjPWFbY107cmV0dXJuIHZvaWQgMCE9PWM\/YzphW2JdfTskanNjb21wLnBvbHlmaWxsPWZ1bmN0aW9uKGEsYixjLGQpe2ImJigkanNjb21wLklTT0xBVEVfUE9MWUZJTExTPyRqc2NvbXAucG9seWZpbGxJc29sYXRlZChhLGIsYyxkKTokanNjb21wLnBvbHlmaWxsVW5pc29sYXRlZChhLGIsYyxkKSl9OwokanNjb21wLnBvbHlmaWxsVW5pc29sYXRlZD1mdW5jdGlvbihhLGIsYyxkKXtjPSRqc2NvbXAuZ2xvYmFsO2E9YS5zcGxpdCgiLiIpO2ZvcihkPTA7ZDxhLmxlbmd0aC0xO2QrKyl7dmFyIGU9YVtkXTtpZighKGUgaW4gYykpcmV0dXJuO2M9Y1tlXX1hPWFbYS5sZW5ndGgtMV07ZD1jW2FdO2I9YihkKTtiIT1kJiZudWxsIT1iJiYkanNjb21wLmRlZmluZVByb3BlcnR5KGMsYSx7Y29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOmJ9KX07CiRqc2NvbXAucG9seWZpbGxJc29sYXRlZD1mdW5jdGlvbihhLGIsYyxkKXt2YXIgZT1hLnNwbGl0KCIuIik7YT0xPT09ZS5sZW5ndGg7ZD1lWzBdO2Q9IWEmJmQgaW4gJGpzY29tcC5wb2x5ZmlsbHM\/JGpzY29tcC5wb2x5ZmlsbHM6JGpzY29tcC5nbG9iYWw7Zm9yKHZhciBmPTA7ZjxlLmxlbmd0aC0xO2YrKyl7dmFyIGc9ZVtmXTtpZighKGcgaW4gZCkpcmV0dXJuO2Q9ZFtnXX1lPWVbZS5sZW5ndGgtMV07Yz0kanNjb21wLklTX1NZTUJPTF9OQVRJVkUmJiJlczYiPT09Yz9kW2VdOm51bGw7Yj1iKGMpO251bGwhPWImJihhPyRqc2NvbXAuZGVmaW5lUHJvcGVydHkoJGpzY29tcC5wb2x5ZmlsbHMsZSx7Y29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOmJ9KTpiIT09YyYmKHZvaWQgMD09PSRqc2NvbXAucHJvcGVydHlUb1BvbHlmaWxsU3ltYm9sW2VdJiYoYz0xRTkqTWF0aC5yYW5kb20oKT4+PjAsJGpzY29tcC5wcm9wZXJ0eVRvUG9seWZpbGxTeW1ib2xbZV09JGpzY29tcC5JU19TWU1CT0xfTkFUSVZFPwokanNjb21wLmdsb2JhbC5TeW1ib2woZSk6JGpzY29tcC5QT0xZRklMTF9QUkVGSVgrYysiJCIrZSksJGpzY29tcC5kZWZpbmVQcm9wZXJ0eShkLCRqc2NvbXAucHJvcGVydHlUb1BvbHlmaWxsU3ltYm9sW2VdLHtjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6Yn0pKSl9OyRqc2NvbXAudW5kZXJzY29yZVByb3RvQ2FuQmVTZXQ9ZnVuY3Rpb24oKXt2YXIgYT17YTohMH0sYj17fTt0cnl7cmV0dXJuIGIuX19wcm90b19fPWEsYi5hfWNhdGNoKGMpe31yZXR1cm4hMX07CiRqc2NvbXAuc2V0UHJvdG90eXBlT2Y9JGpzY29tcC5UUlVTVF9FUzZfUE9MWUZJTExTJiYiZnVuY3Rpb24iPT10eXBlb2YgT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZjokanNjb21wLnVuZGVyc2NvcmVQcm90b0NhbkJlU2V0KCk\/ZnVuY3Rpb24oYSxiKXthLl9fcHJvdG9fXz1iO2lmKGEuX19wcm90b19fIT09Yil0aHJvdyBuZXcgVHlwZUVycm9yKGErIiBpcyBub3QgZXh0ZW5zaWJsZSIpO3JldHVybiBhfTpudWxsOyRqc2NvbXAuYXJyYXlJdGVyYXRvckltcGw9ZnVuY3Rpb24oYSl7dmFyIGI9MDtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gYjxhLmxlbmd0aD97ZG9uZTohMSx2YWx1ZTphW2IrK119Ontkb25lOiEwfX19OyRqc2NvbXAuYXJyYXlJdGVyYXRvcj1mdW5jdGlvbihhKXtyZXR1cm57bmV4dDokanNjb21wLmFycmF5SXRlcmF0b3JJbXBsKGEpfX07CiRqc2NvbXAubWFrZUl0ZXJhdG9yPWZ1bmN0aW9uKGEpe3ZhciBiPSJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZTeW1ib2wuaXRlcmF0b3ImJmFbU3ltYm9sLml0ZXJhdG9yXTtyZXR1cm4gYj9iLmNhbGwoYSk6JGpzY29tcC5hcnJheUl0ZXJhdG9yKGEpfTskanNjb21wLmdlbmVyYXRvcj17fTskanNjb21wLmdlbmVyYXRvci5lbnN1cmVJdGVyYXRvclJlc3VsdElzT2JqZWN0Xz1mdW5jdGlvbihhKXtpZighKGEgaW5zdGFuY2VvZiBPYmplY3QpKXRocm93IG5ldyBUeXBlRXJyb3IoIkl0ZXJhdG9yIHJlc3VsdCAiK2ErIiBpcyBub3QgYW4gb2JqZWN0Iik7fTsKJGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dD1mdW5jdGlvbigpe3RoaXMuaXNSdW5uaW5nXz0hMTt0aGlzLnlpZWxkQWxsSXRlcmF0b3JfPW51bGw7dGhpcy55aWVsZFJlc3VsdD12b2lkIDA7dGhpcy5uZXh0QWRkcmVzcz0xO3RoaXMuZmluYWxseUFkZHJlc3NfPXRoaXMuY2F0Y2hBZGRyZXNzXz0wO3RoaXMuZmluYWxseUNvbnRleHRzXz10aGlzLmFicnVwdENvbXBsZXRpb25fPW51bGx9OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLnN0YXJ0Xz1mdW5jdGlvbigpe2lmKHRoaXMuaXNSdW5uaW5nXyl0aHJvdyBuZXcgVHlwZUVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBydW5uaW5nIik7dGhpcy5pc1J1bm5pbmdfPSEwfTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5zdG9wXz1mdW5jdGlvbigpe3RoaXMuaXNSdW5uaW5nXz0hMX07CiRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLmp1bXBUb0Vycm9ySGFuZGxlcl89ZnVuY3Rpb24oKXt0aGlzLm5leHRBZGRyZXNzPXRoaXMuY2F0Y2hBZGRyZXNzX3x8dGhpcy5maW5hbGx5QWRkcmVzc199OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLm5leHRfPWZ1bmN0aW9uKGEpe3RoaXMueWllbGRSZXN1bHQ9YX07JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUudGhyb3dfPWZ1bmN0aW9uKGEpe3RoaXMuYWJydXB0Q29tcGxldGlvbl89e2V4Y2VwdGlvbjphLGlzRXhjZXB0aW9uOiEwfTt0aGlzLmp1bXBUb0Vycm9ySGFuZGxlcl8oKX07JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUucmV0dXJuPWZ1bmN0aW9uKGEpe3RoaXMuYWJydXB0Q29tcGxldGlvbl89e3JldHVybjphfTt0aGlzLm5leHRBZGRyZXNzPXRoaXMuZmluYWxseUFkZHJlc3NffTsKJGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUuanVtcFRocm91Z2hGaW5hbGx5QmxvY2tzPWZ1bmN0aW9uKGEpe3RoaXMuYWJydXB0Q29tcGxldGlvbl89e2p1bXBUbzphfTt0aGlzLm5leHRBZGRyZXNzPXRoaXMuZmluYWxseUFkZHJlc3NffTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS55aWVsZD1mdW5jdGlvbihhLGIpe3RoaXMubmV4dEFkZHJlc3M9YjtyZXR1cm57dmFsdWU6YX19OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLnlpZWxkQWxsPWZ1bmN0aW9uKGEsYil7YT0kanNjb21wLm1ha2VJdGVyYXRvcihhKTt2YXIgYz1hLm5leHQoKTskanNjb21wLmdlbmVyYXRvci5lbnN1cmVJdGVyYXRvclJlc3VsdElzT2JqZWN0XyhjKTtpZihjLmRvbmUpdGhpcy55aWVsZFJlc3VsdD1jLnZhbHVlLHRoaXMubmV4dEFkZHJlc3M9YjtlbHNlIHJldHVybiB0aGlzLnlpZWxkQWxsSXRlcmF0b3JfPWEsdGhpcy55aWVsZChjLnZhbHVlLGIpfTsKJGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUuanVtcFRvPWZ1bmN0aW9uKGEpe3RoaXMubmV4dEFkZHJlc3M9YX07JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUuanVtcFRvRW5kPWZ1bmN0aW9uKCl7dGhpcy5uZXh0QWRkcmVzcz0wfTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5zZXRDYXRjaEZpbmFsbHlCbG9ja3M9ZnVuY3Rpb24oYSxiKXt0aGlzLmNhdGNoQWRkcmVzc189YTt2b2lkIDAhPWImJih0aGlzLmZpbmFsbHlBZGRyZXNzXz1iKX07JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUuc2V0RmluYWxseUJsb2NrPWZ1bmN0aW9uKGEpe3RoaXMuY2F0Y2hBZGRyZXNzXz0wO3RoaXMuZmluYWxseUFkZHJlc3NfPWF8fDB9OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLmxlYXZlVHJ5QmxvY2s9ZnVuY3Rpb24oYSxiKXt0aGlzLm5leHRBZGRyZXNzPWE7dGhpcy5jYXRjaEFkZHJlc3NfPWJ8fDB9OwokanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5lbnRlckNhdGNoQmxvY2s9ZnVuY3Rpb24oYSl7dGhpcy5jYXRjaEFkZHJlc3NfPWF8fDA7YT10aGlzLmFicnVwdENvbXBsZXRpb25fLmV4Y2VwdGlvbjt0aGlzLmFicnVwdENvbXBsZXRpb25fPW51bGw7cmV0dXJuIGF9OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLmVudGVyRmluYWxseUJsb2NrPWZ1bmN0aW9uKGEsYixjKXtjP3RoaXMuZmluYWxseUNvbnRleHRzX1tjXT10aGlzLmFicnVwdENvbXBsZXRpb25fOnRoaXMuZmluYWxseUNvbnRleHRzXz1bdGhpcy5hYnJ1cHRDb21wbGV0aW9uX107dGhpcy5jYXRjaEFkZHJlc3NfPWF8fDA7dGhpcy5maW5hbGx5QWRkcmVzc189Ynx8MH07CiRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLmxlYXZlRmluYWxseUJsb2NrPWZ1bmN0aW9uKGEsYil7Yj10aGlzLmZpbmFsbHlDb250ZXh0c18uc3BsaWNlKGJ8fDApWzBdO2lmKGI9dGhpcy5hYnJ1cHRDb21wbGV0aW9uXz10aGlzLmFicnVwdENvbXBsZXRpb25ffHxiKXtpZihiLmlzRXhjZXB0aW9uKXJldHVybiB0aGlzLmp1bXBUb0Vycm9ySGFuZGxlcl8oKTt2b2lkIDAhPWIuanVtcFRvJiZ0aGlzLmZpbmFsbHlBZGRyZXNzXzxiLmp1bXBUbz8odGhpcy5uZXh0QWRkcmVzcz1iLmp1bXBUbyx0aGlzLmFicnVwdENvbXBsZXRpb25fPW51bGwpOnRoaXMubmV4dEFkZHJlc3M9dGhpcy5maW5hbGx5QWRkcmVzc199ZWxzZSB0aGlzLm5leHRBZGRyZXNzPWF9OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLmZvckluPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcgJGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5Qcm9wZXJ0eUl0ZXJhdG9yKGEpfTsKJGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5Qcm9wZXJ0eUl0ZXJhdG9yPWZ1bmN0aW9uKGEpe3RoaXMub2JqZWN0Xz1hO3RoaXMucHJvcGVydGllc189W107Zm9yKHZhciBiIGluIGEpdGhpcy5wcm9wZXJ0aWVzXy5wdXNoKGIpO3RoaXMucHJvcGVydGllc18ucmV2ZXJzZSgpfTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LlByb3BlcnR5SXRlcmF0b3IucHJvdG90eXBlLmdldE5leHQ9ZnVuY3Rpb24oKXtmb3IoOzA8dGhpcy5wcm9wZXJ0aWVzXy5sZW5ndGg7KXt2YXIgYT10aGlzLnByb3BlcnRpZXNfLnBvcCgpO2lmKGEgaW4gdGhpcy5vYmplY3RfKXJldHVybiBhfXJldHVybiBudWxsfTskanNjb21wLmdlbmVyYXRvci5FbmdpbmVfPWZ1bmN0aW9uKGEpe3RoaXMuY29udGV4dF89bmV3ICRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQ7dGhpcy5wcm9ncmFtXz1hfTsKJGpzY29tcC5nZW5lcmF0b3IuRW5naW5lXy5wcm90b3R5cGUubmV4dF89ZnVuY3Rpb24oYSl7dGhpcy5jb250ZXh0Xy5zdGFydF8oKTtpZih0aGlzLmNvbnRleHRfLnlpZWxkQWxsSXRlcmF0b3JfKXJldHVybiB0aGlzLnlpZWxkQWxsU3RlcF8odGhpcy5jb250ZXh0Xy55aWVsZEFsbEl0ZXJhdG9yXy5uZXh0LGEsdGhpcy5jb250ZXh0Xy5uZXh0Xyk7dGhpcy5jb250ZXh0Xy5uZXh0XyhhKTtyZXR1cm4gdGhpcy5uZXh0U3RlcF8oKX07CiRqc2NvbXAuZ2VuZXJhdG9yLkVuZ2luZV8ucHJvdG90eXBlLnJldHVybl89ZnVuY3Rpb24oYSl7dGhpcy5jb250ZXh0Xy5zdGFydF8oKTt2YXIgYj10aGlzLmNvbnRleHRfLnlpZWxkQWxsSXRlcmF0b3JfO2lmKGIpcmV0dXJuIHRoaXMueWllbGRBbGxTdGVwXygicmV0dXJuImluIGI\/YlsicmV0dXJuIl06ZnVuY3Rpb24oYyl7cmV0dXJue3ZhbHVlOmMsZG9uZTohMH19LGEsdGhpcy5jb250ZXh0Xy5yZXR1cm4pO3RoaXMuY29udGV4dF8ucmV0dXJuKGEpO3JldHVybiB0aGlzLm5leHRTdGVwXygpfTsKJGpzY29tcC5nZW5lcmF0b3IuRW5naW5lXy5wcm90b3R5cGUudGhyb3dfPWZ1bmN0aW9uKGEpe3RoaXMuY29udGV4dF8uc3RhcnRfKCk7aWYodGhpcy5jb250ZXh0Xy55aWVsZEFsbEl0ZXJhdG9yXylyZXR1cm4gdGhpcy55aWVsZEFsbFN0ZXBfKHRoaXMuY29udGV4dF8ueWllbGRBbGxJdGVyYXRvcl9bInRocm93Il0sYSx0aGlzLmNvbnRleHRfLm5leHRfKTt0aGlzLmNvbnRleHRfLnRocm93XyhhKTtyZXR1cm4gdGhpcy5uZXh0U3RlcF8oKX07CiRqc2NvbXAuZ2VuZXJhdG9yLkVuZ2luZV8ucHJvdG90eXBlLnlpZWxkQWxsU3RlcF89ZnVuY3Rpb24oYSxiLGMpe3RyeXt2YXIgZD1hLmNhbGwodGhpcy5jb250ZXh0Xy55aWVsZEFsbEl0ZXJhdG9yXyxiKTskanNjb21wLmdlbmVyYXRvci5lbnN1cmVJdGVyYXRvclJlc3VsdElzT2JqZWN0XyhkKTtpZighZC5kb25lKXJldHVybiB0aGlzLmNvbnRleHRfLnN0b3BfKCksZDt2YXIgZT1kLnZhbHVlfWNhdGNoKGYpe3JldHVybiB0aGlzLmNvbnRleHRfLnlpZWxkQWxsSXRlcmF0b3JfPW51bGwsdGhpcy5jb250ZXh0Xy50aHJvd18oZiksdGhpcy5uZXh0U3RlcF8oKX10aGlzLmNvbnRleHRfLnlpZWxkQWxsSXRlcmF0b3JfPW51bGw7Yy5jYWxsKHRoaXMuY29udGV4dF8sZSk7cmV0dXJuIHRoaXMubmV4dFN0ZXBfKCl9OwokanNjb21wLmdlbmVyYXRvci5FbmdpbmVfLnByb3RvdHlwZS5uZXh0U3RlcF89ZnVuY3Rpb24oKXtmb3IoO3RoaXMuY29udGV4dF8ubmV4dEFkZHJlc3M7KXRyeXt2YXIgYT10aGlzLnByb2dyYW1fKHRoaXMuY29udGV4dF8pO2lmKGEpcmV0dXJuIHRoaXMuY29udGV4dF8uc3RvcF8oKSx7dmFsdWU6YS52YWx1ZSxkb25lOiExfX1jYXRjaChiKXt0aGlzLmNvbnRleHRfLnlpZWxkUmVzdWx0PXZvaWQgMCx0aGlzLmNvbnRleHRfLnRocm93XyhiKX10aGlzLmNvbnRleHRfLnN0b3BfKCk7aWYodGhpcy5jb250ZXh0Xy5hYnJ1cHRDb21wbGV0aW9uXyl7YT10aGlzLmNvbnRleHRfLmFicnVwdENvbXBsZXRpb25fO3RoaXMuY29udGV4dF8uYWJydXB0Q29tcGxldGlvbl89bnVsbDtpZihhLmlzRXhjZXB0aW9uKXRocm93IGEuZXhjZXB0aW9uO3JldHVybnt2YWx1ZTphLnJldHVybixkb25lOiEwfX1yZXR1cm57dmFsdWU6dm9pZCAwLGRvbmU6ITB9fTsKJGpzY29tcC5nZW5lcmF0b3IuR2VuZXJhdG9yXz1mdW5jdGlvbihhKXt0aGlzLm5leHQ9ZnVuY3Rpb24oYil7cmV0dXJuIGEubmV4dF8oYil9O3RoaXMudGhyb3c9ZnVuY3Rpb24oYil7cmV0dXJuIGEudGhyb3dfKGIpfTt0aGlzLnJldHVybj1mdW5jdGlvbihiKXtyZXR1cm4gYS5yZXR1cm5fKGIpfTt0aGlzW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc319OyRqc2NvbXAuZ2VuZXJhdG9yLmNyZWF0ZUdlbmVyYXRvcj1mdW5jdGlvbihhLGIpe2I9bmV3ICRqc2NvbXAuZ2VuZXJhdG9yLkdlbmVyYXRvcl8obmV3ICRqc2NvbXAuZ2VuZXJhdG9yLkVuZ2luZV8oYikpOyRqc2NvbXAuc2V0UHJvdG90eXBlT2YmJmEucHJvdG90eXBlJiYkanNjb21wLnNldFByb3RvdHlwZU9mKGIsYS5wcm90b3R5cGUpO3JldHVybiBifTsKJGpzY29tcC5hc3luY0V4ZWN1dGVQcm9taXNlR2VuZXJhdG9yPWZ1bmN0aW9uKGEpe2Z1bmN0aW9uIGIoZCl7cmV0dXJuIGEubmV4dChkKX1mdW5jdGlvbiBjKGQpe3JldHVybiBhLnRocm93KGQpfXJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihkLGUpe2Z1bmN0aW9uIGYoZyl7Zy5kb25lP2QoZy52YWx1ZSk6UHJvbWlzZS5yZXNvbHZlKGcudmFsdWUpLnRoZW4oYixjKS50aGVuKGYsZSl9ZihhLm5leHQoKSl9KX07JGpzY29tcC5hc3luY0V4ZWN1dGVQcm9taXNlR2VuZXJhdG9yRnVuY3Rpb249ZnVuY3Rpb24oYSl7cmV0dXJuICRqc2NvbXAuYXN5bmNFeGVjdXRlUHJvbWlzZUdlbmVyYXRvcihhKCkpfTskanNjb21wLmFzeW5jRXhlY3V0ZVByb21pc2VHZW5lcmF0b3JQcm9ncmFtPWZ1bmN0aW9uKGEpe3JldHVybiAkanNjb21wLmFzeW5jRXhlY3V0ZVByb21pc2VHZW5lcmF0b3IobmV3ICRqc2NvbXAuZ2VuZXJhdG9yLkdlbmVyYXRvcl8obmV3ICRqc2NvbXAuZ2VuZXJhdG9yLkVuZ2luZV8oYSkpKX07CmNvbnN0IGNvbnRlbnRCbG9ja3M9KCk9Pntjb25zdCBhPWI9PiRqc2NvbXAuYXN5bmNFeGVjdXRlUHJvbWlzZUdlbmVyYXRvckZ1bmN0aW9uKGZ1bmN0aW9uKigpe3ZhciBjPWIuZGF0YXNldCxkLGU9bnVsbD09KGQ9Yi5xdWVyeVNlbGVjdG9yKCdpbnB1dFtuYW1lPSJibG9jay1kYXRhIl0nKSk\/dm9pZCAwOmQudmFsdWU7ZD0iRlJFTkNIIj09ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI2FjdGl2ZXNpdGVsYW5ndWFnZSIpLnZhbHVlPyJmciI6ImVuIjtjPU9iamVjdC5hc3NpZ24oe30sYyx7ZGF0YTplfHwie30ifSk7Yz15aWVsZCh5aWVsZCBmZXRjaChgLyR7ZW5jb2RlVVJJQ29tcG9uZW50KGQpfS9hamF4L2dldFNrZWxldG9uQ29udGVudGAse21ldGhvZDoiUE9TVCIsaGVhZGVyczp7QWNjZXB0OiJhcHBsaWNhdGlvbi9qc29uIiwiQ29udGVudC1UeXBlIjoiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkOyIsY2hhcnNldDoiVVRGLTgifSxib2R5Om5ldyBVUkxTZWFyY2hQYXJhbXMoYyl9KSkuanNvbigpOwppZigidW5kZWZpbmVkIiE9dHlwZW9mIGMuc3RhdHVzJiYic3VjY2VzcyI9PWMuc3RhdHVzKWlmKGM9Yy5jb250ZW50LDE+Yy5sZW5ndGgpYi5yZXBsYWNlV2l0aCgiIik7ZWxzZXtjPWRvY3VtZW50LmNyZWF0ZVJhbmdlKCkuY3JlYXRlQ29udGV4dHVhbEZyYWdtZW50KGMpLmNoaWxkcmVuWzBdO3ZhciBmO2U9bnVsbD09KGY9Yi5kYXRhc2V0KT92b2lkIDA6Zi5jYWxsYmFjaztiLnBhcmVudEVsZW1lbnQuZGF0YXNldC5sb2FkZWQ9IjEiO2IucmVwbGFjZVdpdGgoYyk7ZSYmImZ1bmN0aW9uIj09PXR5cGVvZiBoYW5kbGVyc1tlXSYmaGFuZGxlcnNbZV0oYykuaW5pdCgpfX0pO2hhbmRsZXJzPXtwYXltZW50Q2FsY0Jsb2NrOmI9Pntjb25zdCBjPWIuY2xvc2VzdCgiLmRpdkNhclNpbmdsZUlubmVyQm94Iik7cmV0dXJue2luaXQ6KCk9PnskKGIpLmZpbmQoIi5wYXltZW50VG9vbHRpcCIpLmVhY2goZnVuY3Rpb24oKXt0cnl7dmFyIGQ9JCh0aGlzKS5hdHRyKCJkYXRhLXRvb2x0aXAiKTsKJCh0aGlzKS5kYXJrVG9vbHRpcCh7Y29udGVudDpkLGdyYXZpdHk6ImVhc3QiLHRoZW1lOiJsaWdodCIsdHJpZ2dlcjoiY2xpY2siLGFuaW1hdGlvbjoiZmxpcEluIn0pfWNhdGNoKGUpe319KTtiLmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZW50ZXIiLGZ1bmN0aW9uKGQpe2Quc3RvcFByb3BhZ2F0aW9uKCk7aWYoYi5kYXRhc2V0LnRvb2x0aXBDcmVhdGVkKXJldHVybiExO2IuZGF0YXNldC50b29sdGlwQ3JlYXRlZD0iMSI7JChkLmN1cnJlbnRUYXJnZXQucXVlcnlTZWxlY3RvcigiLmNhci1maW5hbmNlLWluZm8iKSkuZGFya1Rvb2x0aXAoe2dyYXZpdHk6Indlc3QiLHRoZW1lOiJsaWdodCIsdHJpZ2dlcjoiaG92ZXIiLGFuaW1hdGlvbjoiZmxpcEluIn0pfSk7Yi5xdWVyeVNlbGVjdG9yKCIuY2FyLWZpbmFuY2UtaW5mbyIpLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIixmdW5jdGlvbihkKXtkLnByZXZlbnREZWZhdWx0KCk7aWYoIWMpcmV0dXJuITE7aWYoIlNVUCI9PWQudGFyZ2V0LnRhZ05hbWUmJgpkLnRhcmdldC5oYXNBdHRyaWJ1dGUoImRhdGEtZGlzY2xhaW1lci1kaXZpZCIpJiZ2b2lkIDAhPWRyRGlzY2xhaW1lckpTKXJldHVybiBkPWQudGFyZ2V0LmdldEF0dHJpYnV0ZSgiZGF0YS1kaXNjbGFpbWVyLWRpdmlkIiksZHJEaXNjbGFpbWVySlMub3BlbkRpc2NsYWltZXJEaXYoZCksITE7ZD1jLnF1ZXJ5U2VsZWN0b3IoIi5kaXZDYXJUaXRsZUNvbnRhaW5lciBhIikuaHJlZjt3aW5kb3cub3BlbihkLCJfc2VsZiIpfSl9fX19O3JldHVybntzZXRCbG9ja09ic2VydmVyOigpPT57Y29uc3QgYj1uZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoZD0+e2QuZm9yRWFjaChlPT57ZS5pc0ludGVyc2VjdGluZyYmKGUudGFyZ2V0LmNsYXNzTGlzdC5hZGQoImFjdGl2ZSIpLGIudW5vYnNlcnZlKGUudGFyZ2V0KSxjb25zb2xlLmxvZygic2tlbGV0b24gb2JzZXJ2ZWQgIitlLnRhcmdldCksYShlLnRhcmdldCkpfSl9LHt0aHJlc2hvbGQ6LjF9KSxjPW5ldyBVUkxTZWFyY2hQYXJhbXMod2luZG93LmxvY2F0aW9uLnNlYXJjaCk7CmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIi5jb250ZW50LXNrZWxldG9uIikuZm9yRWFjaChkPT57Yi5vYnNlcnZlKGQpOyJza2VsZXRvbiI9PT1jLmdldCgiZGVidWciKSYmZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiLmNvbnRlbnQtc2tlbGV0b24iKS5mb3JFYWNoKGU9PmUuY2xhc3NMaXN0LmFkZCgiZGVidWciKSl9KX0saGFuZGxlcnN9fTtkb2NSZWFkeUFyci5wdXNoKCgpPT57ImZ1bmN0aW9uIj09PXR5cGVvZiBjb250ZW50QmxvY2tzJiZjb250ZW50QmxvY2tzKCkuc2V0QmxvY2tPYnNlcnZlcigpfSk7Ci8qKiAvbS9qcy92YW5pbGxhanMvY29va2llcy5qcyAqKi8KdmFyIF9fX2QyY19jb29raWVzanNfY19vbj0iMjAyNi0wMS0xMiAxMDoxMzoyNSI7J3VzZSBzdHJpY3QnOyhmdW5jdGlvbigpe2Z1bmN0aW9uIGwoYSxjLGIsaCxkLGYsZSl7dmFyIGc9IiI7aWYoYil7bGV0IGs9bmV3IERhdGU7ay5zZXRGdWxsWWVhcihrLmdldEZ1bGxZZWFyKCkrMSk7c3dpdGNoKGIuY29uc3RydWN0b3Ipe2Nhc2UgTnVtYmVyOjM2NTxiJiYoYj0zNjUpO2c9bmV3IERhdGU7Zy5zZXREYXRlKGcuZ2V0RGF0ZSgpK2IpO2c9SW5maW5pdHk9PT1iPyI7IGV4cGlyZXM9RnJpLCAzMSBEZWMgOTk5OSAyMzo1OTo1OSBHTVQiOiI7IGV4cGlyZXM9IitnLnRvVVRDU3RyaW5nKCk7YnJlYWs7Y2FzZSBTdHJpbmc6bmV3IERhdGUoYik+ayYmKGI9ay50b1VUQ1N0cmluZygpKTtnPSI7IGV4cGlyZXM9IitiO2JyZWFrO2Nhc2UgRGF0ZTpiPmsmJihiPWspLGc9IjsgZXhwaXJlcz0iK2IudG9VVENTdHJpbmcoKX19InVuZGVmaW5lZCI9PT10eXBlb2YgZiYmKGY9Imh0dHBzOiI9PT13aW5kb3cubG9jYXRpb24ucHJvdG9jb2wpO3JldHVybiBlbmNvZGVVUklDb21wb25lbnQoYSkrCiI9IitlbmNvZGVVUklDb21wb25lbnQoYykrZysoZD8iOyBkb21haW49IitkOiIiKSsoaD8iOyBwYXRoPSIraDoiIikrKGY\/Ijsgc2VjdXJlIjoiIikrKGUmJiJub19yZXN0cmljdGlvbiIhPT1lLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKT8ibGF4Ij09PWUudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpfHwxPT09TWF0aC5jZWlsKGUpfHwhMD09PWU\/Ijsgc2FtZXNpdGU9bGF4Ijoibm9uZSI9PT1lLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKXx8MD5lPyI7IHNhbWVzaXRlPW5vbmUiOiI7IHNhbWVzaXRlPXN0cmljdCI6IiIpfWZ1bmN0aW9uIG0oYSxjKXtpZigidW5kZWZpbmVkIj09PXR5cGVvZiBhfHxudWxsPT09YSlyZXR1cm4tMTtzd2l0Y2goYS5jb25zdHJ1Y3Rvcil7Y2FzZSBOdW1iZXI6aWYoIm51bWJlciI9PT1jKXZhciBiPTg2NDAwKmE7ZWxzZSBiPW5ldyBEYXRlLGIuc2V0RGF0ZShiLmdldERhdGUoKSthKSxiPUluZmluaXR5PT09YT8iRnJpLCAzMSBEZWMgOTk5OSAyMzo1OTo1OSBHTVQiOgpiLnRvVVRDU3RyaW5nKCk7YnJlYWs7Y2FzZSBTdHJpbmc6InN0cmluZyI9PT1jP2I9YTooYj1uZXcgRGF0ZSxiPSgobmV3IERhdGUoYSkpLmdldFRpbWUoKS1iLmdldFRpbWUoKSkvMUUzKTticmVhaztjYXNlIERhdGU6InN0cmluZyI9PT1jP2I9YS50b1VUQ1N0cmluZygpOihiPW5ldyBEYXRlLGI9KGEuZ2V0VGltZSgpLWIuZ2V0VGltZSgpKS8xRTMpfSJudW1iZXIiPT09YyYmKGI9TWF0aC5yb3VuZChiKSk7cmV0dXJuIGJ9dmFyIG49L1tcLVwuXCtcKl0vZyxwPS9eKD86ZXhwaXJlc3xtYXhcLWFnZXxwYXRofGRvbWFpbnxzZWN1cmV8c2FtZXNpdGV8aHR0cG9ubHkpJC9pLHE9InV0bV9jYW1wYWlnbiB1dG1fa2V5d29yZCB1dG1fbGFuZGluZyB1dG1fbGFuZGluZ19mb290ZXIgdXRtX21lZGl1bSB1dG1fc291cmNlIHV0bV9jYW1wYWlnbl9yZXRhcmdldGluZyB1dG1fc291cmNlX3JldGFyZ2V0aW5nIERpc3BsYXlTb3VyY2VVVE1DYW1wYWlnbiBEaXNwbGF5U291cmNlVVRNU291cmNlIi5zcGxpdCgiICIpOwp3aW5kb3cuQ29va2llcz17Z2V0OmZ1bmN0aW9uKGEpe3JldHVybiBhP2RlY29kZVVSSUNvbXBvbmVudChkb2N1bWVudC5jb29raWUucmVwbGFjZShuZXcgUmVnRXhwKCIoPzooPzpefC4qOylcXHMqIitlbmNvZGVVUklDb21wb25lbnQoYSkucmVwbGFjZShuLCJcXCQmIikrIlxccypcXD1cXHMqKFteO10qKS4qJCl8Xi4qJCIpLCIkMSIpKXx8bnVsbDpudWxsfSxzZXQ6ZnVuY3Rpb24oYSxjLGIsaCxkLGYsZSl7cmV0dXJuIWF8fHAudGVzdChhKT8hMTpDb29raWVzLmlzQ29va2llQWxsb3dlZChhLGZ1bmN0aW9uKGcpe2Q9ZD9kOiIiO2Y9bnVsbD09Zj8hMDpmO2U9bnVsbD09ZT8iTm9uZSI6ZTtDb29raWVzLmxvZyhhLGMsYixoLGQpO2lmKCFnKXJldHVybi0xPHEuaW5kZXhPZihhKSYmbnVsbD09Q29va2llcy5nZXQoImQyY19jb29raWVfY29uc2VudCIpJiYoZz1zZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCJkMmNfY29uc2VudF93YWl0IiksZz1udWxsIT1nP0pTT04ucGFyc2UoYXRvYihnKSk6Cnt9LGdbYV09e2tleTphLHZhbHVlOmMsZXhwaXJlczpiLHBhdGg6aCxkb21haW46ZH0sdXRtQ29va2llc1N0b3JhZ2VKU09OPUpTT04uc3RyaW5naWZ5KGcpLHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oImQyY19jb25zZW50X3dhaXQiLGJ0b2EodXRtQ29va2llc1N0b3JhZ2VKU09OKSkpLENvb2tpZXMucmVtb3ZlKGEsaCxkLGYsZSksITE7ZG9jdW1lbnQuY29va2llPWwoYSxjLGIsaCxkLGYsZSk7cmV0dXJuITB9KX0scmVtb3ZlOmZ1bmN0aW9uKGEsYyxiLGgsZCl7aWYoIXRoaXMuaGFzKGEpKXJldHVybiExO2RvY3VtZW50LmNvb2tpZT1sKGEsIiIsIlRodSwgMDEgSmFuIDE5NzAgMDA6MDA6MDAgR01UIixjLGIsaCxkKTtyZXR1cm4hMH0saGFzOmZ1bmN0aW9uKGEpe3JldHVybiFhfHxwLnRlc3QoYSk\/ITE6KG5ldyBSZWdFeHAoIig\/Ol58O1xccyopIitlbmNvZGVVUklDb21wb25lbnQoYSkucmVwbGFjZShuLCJcXCQmIikrIlxccypcXD0iKSkudGVzdChkb2N1bWVudC5jb29raWUpfSwKa2V5czpmdW5jdGlvbigpe2Zvcih2YXIgYT1kb2N1bWVudC5jb29raWUucmVwbGFjZSgvKCg\/Ol58XHMqOylbXj1dKykoPz07fCQpfF5ccyp8XHMqKD86PVteO10qKT8oPzpcMXwkKS9nLCIiKS5zcGxpdCgvXHMqKD86PVteO10qKT87XHMqLyksYz1hLmxlbmd0aCxiPTA7YjxjO2IrKylhW2JdPWRlY29kZVVSSUNvbXBvbmVudChhW2JdKTtyZXR1cm4gYX0sY2xlYXI6ZnVuY3Rpb24oYSxjLGIsaCl7Zm9yKHZhciBkPXRoaXMua2V5cygpLGY9ZC5sZW5ndGgsZT0wO2U8ZjtlKyspdGhpcy5yZW1vdmVJdGVtKGRbZV0sYSxjLGIsaCl9LGxvZzpmdW5jdGlvbihhLGMsYixoLGQsZil7InVuZGVmaW5lZCI9PT10eXBlb2YgZiYmKGY9NSk7InVuZGVmaW5lZCI9PT10eXBlb2Ygd2luZG93LkNvb2tpZUxvZ2dlcj9mJiZzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Q29va2llcy5sb2coYSxjLGIsaCxkLGYtMSl9LDFFMyk6d2luZG93LkNvb2tpZUxvZ2dlci5sb2coYSxjLGIsaCxkKX0saXNDb29raWVBbGxvd2VkOmZ1bmN0aW9uKGEsCmMpe3JldHVybiJ1bmRlZmluZWQiPT09dHlwZW9mIHdpbmRvdy5Db29raWVDb25zZW50fHwidW5kZWZpbmVkIj09PXR5cGVvZiB3aW5kb3cuQ29va2llQ29uc2VudC5pc0Nvb2tpZUFsbG93ZWQ\/YyghMCk6d2luZG93LkNvb2tpZUNvbnNlbnQuaXNDb29raWVBbGxvd2VkKGEsYyl9fTt3aW5kb3cuQ29va2llTG9nZ2VyPXtfc3RhY2s6W10saW5pdDpmdW5jdGlvbigpe2xldCBhPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkZWFsZXJQcm92aW5jZUNvZGUiKTthJiYiUUMiPT1uZXcgU3RyaW5nKGEudmFsdWUpJiYxPT1NYXRoLmZsb29yKDMqTWF0aC5yYW5kb20oKSkmJmZldGNoKCIvcHJveHlfcmQyYy9kMmNhcGkvbG9nL2Nvb2tpZXMvYWN0aXZlIikudGhlbihmdW5jdGlvbihjKXtyZXR1cm4gYy5qc29uKCl9KS50aGVuKGZ1bmN0aW9uKGMpeyJhY3RpdmUiPT09Yy5zdGF0dXMmJkNvb2tpZUxvZ2dlci53YWl0U3RhY2soKX0pfSxsb2c6ZnVuY3Rpb24oYSxjLGIsaCxkKXtpZigibGl2ZSI9PT0Kd2luZG93LmRlcGxveW1lbnRUeXBlLnRvTG93ZXJDYXNlKCkpe2RlYnVnKCJMb2dnaW5nIGNvb2tpZToiLHtuYW1lOmEsdmFsdWU6Y3x8IiIsZHVyYXRpb246bShiLCJudW1iZXIiKSxwYXRoOmgsZG9tYWluOmR9KTt2YXIgZixlLGc9InVuZGVmaW5lZCIhPXR5cGVvZiBjdXJyZW50U2l0ZUlEP2N1cnJlbnRTaXRlSUQ6bnVsbCE9KGU9bnVsbD09KGY9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNpdGVJRCIpKT92b2lkIDA6Zi52YWx1ZSk\/ZToiIjt0aGlzLl9zdGFjay5wdXNoKHtuYW1lOmEsZHVyYXRpb246bShiLCJudW1iZXIiKSxwYXRoOmh8fCIvIixkb21haW46ZHx8d2luZG93LmxvY2F0aW9uLmhvc3RuYW1lLHVyaTp3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUsc2l0ZWlkOmcsdmFsdWU6YnRvYShjKX0pfX0sX3NlbmRTdGFjazpmdW5jdGlvbigpe2lmKDAhPT10aGlzLl9zdGFjay5sZW5ndGgpe3ZhciBhPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb29raWVMb2dUb2tlbiIpPwpkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29va2llTG9nVG9rZW4iKS52YWx1ZTpudWxsO2lmKGEpe3ZhciBjPSJ1bmRlZmluZWQiIT10eXBlb2YgY3VycmVudFNpdGVJRD9jdXJyZW50U2l0ZUlEOmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzaXRlSUQiKT9kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2l0ZUlEIikudmFsdWU6IiI7KG5ldyBXb3JrZXIoIi9qcy92YW5pbGxhanMvY29va2llV29ya2VyLmpzIikpLnBvc3RNZXNzYWdlKHt0b2tlbjphLHNpdGVJRDpjLHN0YWNrOkNvb2tpZUxvZ2dlci5fc3RhY2t9KTtDb29raWVMb2dnZXIuX3N0YWNrPVtdfWVsc2UgZGVidWcoIk5vIGNvb2tpZSBsb2cgdG9rZW4gZm91bmQuIil9fSx3YWl0U3RhY2s6ZnVuY3Rpb24oKXsibGl2ZSI9PT13aW5kb3cuZGVwbG95bWVudFR5cGUudG9Mb3dlckNhc2UoKSYmKHNldFRpbWVvdXQoZnVuY3Rpb24oKXtDb29raWVMb2dnZXIuX3NlbmRTdGFjaygpfSwxRTQpLHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJiZWZvcmV1bmxvYWQiLApmdW5jdGlvbigpe0Nvb2tpZUxvZ2dlci5fc2VuZFN0YWNrKCl9KSl9fTt3aW5kb3cuQ29va2llTG9nZ2VyLmluaXQoKX0pKCk7Ci8qKiAvbS9qcy9qcXVlcnkuYmFzZTY0LmpzICoqLwp2YXIgX19fZDJjX2pxdWVyeWJhc2U2NGpzX2Nfb249IjIwMjUtMDUtMjMgMTc6MDk6MjQiOyd1c2Ugc3RyaWN0Jzt2YXIgX19fZDJjX2pxdWVyeWJhc2U2NGpzX2Nfb249IjIwMjQtMDEtMzEgMTQ6MzU6NDgiOyJ1c2Ugc3RyaWN0IjtfX19kMmNfanF1ZXJ5YmFzZTY0anNfY19vbj0iMjAyMy0wMS0xMiAxMTozNTo1OCI7InVzZSBzdHJpY3QiO19fX2QyY19qcXVlcnliYXNlNjRqc19jX29uPSIyMDIzLTAxLTEyIDEwOjQ1OjM5IjsidXNlIHN0cmljdCI7X19fZDJjX2pxdWVyeWJhc2U2NGpzX2Nfb249IjIwMjEtMTItMTUgMTI6NDM6MzQiOyJ1c2Ugc3RyaWN0IjsKalF1ZXJ5LmJhc2U2ND1mdW5jdGlvbihrKXtmdW5jdGlvbiBlKGEsYyl7YT0iQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLyIuaW5kZXhPZihhLmNoYXJBdChjKSk7aWYoLTE9PT1hKXRocm93IkNhbm5vdCBkZWNvZGUgYmFzZTY0IjtyZXR1cm4gYX1mdW5jdGlvbiBoKGEsYyl7YT1hLmNoYXJDb2RlQXQoYyk7aWYoMjU1PGEpdGhyb3ciSU5WQUxJRF9DSEFSQUNURVJfRVJSOiBET00gRXhjZXB0aW9uIDUiO3JldHVybiBhfXJldHVybntkZWNvZGU6ZnVuY3Rpb24oYSl7dmFyIGM9MCxiLGY9YS5sZW5ndGgsZD1bXTthPVN0cmluZyhhKTtpZigwPT09ZilyZXR1cm4gYTtpZigwIT09ZiU0KXRocm93IkNhbm5vdCBkZWNvZGUgYmFzZTY0IjsiPSI9PT1hLmNoYXJBdChmLTEpJiYoYz0xLCI9Ij09PWEuY2hhckF0KGYtMikmJihjPTIpLGYtPTQpO2ZvcihiPTA7YjxmO2IrPTQpe3ZhciBnPWUoYSxiKTw8MTh8ZShhLGIrMSk8PAoxMnxlKGEsYisyKTw8NnxlKGEsYiszKTtkLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShnPj4xNixnPj44JjI1NSxnJjI1NSkpfXN3aXRjaChjKXtjYXNlIDE6Zz1lKGEsYik8PDE4fGUoYSxiKzEpPDwxMnxlKGEsYisyKTw8NjtkLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShnPj4xNixnPj44JjI1NSkpO2JyZWFrO2Nhc2UgMjpnPWUoYSxiKTw8MTh8ZShhLGIrMSk8PDEyLGQucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKGc+PjE2KSl9cmV0dXJuIGQuam9pbigiIil9LGVuY29kZTpmdW5jdGlvbihhKXtpZigxIT09YXJndW1lbnRzLmxlbmd0aCl0aHJvdyJTeW50YXhFcnJvcjogZXhhY3RseSBvbmUgYXJndW1lbnQgcmVxdWlyZWQiO2E9U3RyaW5nKGEpO3ZhciBjLGI9W10sZj1hLmxlbmd0aC1hLmxlbmd0aCUzO2lmKDA9PT1hLmxlbmd0aClyZXR1cm4gYTtmb3IoYz0wO2M8ZjtjKz0zKXt2YXIgZD1oKGEsYyk8PDE2fGgoYSxjKzEpPDw4fGgoYSxjKzIpO2IucHVzaCgiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLyIuY2hhckF0KGQ+PgoxOCkpO2IucHVzaCgiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLyIuY2hhckF0KGQ+PjEyJjYzKSk7Yi5wdXNoKCJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvIi5jaGFyQXQoZD4+NiY2MykpO2IucHVzaCgiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLyIuY2hhckF0KGQmNjMpKX1zd2l0Y2goYS5sZW5ndGgtZil7Y2FzZSAxOmQ9aChhLGMpPDwxNjtiLnB1c2goIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky8iLmNoYXJBdChkPj4xOCkrIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky8iLmNoYXJBdChkPj4xMiY2MykrIj09Iik7YnJlYWs7Y2FzZSAyOmQ9CmgoYSxjKTw8MTZ8aChhLGMrMSk8PDgsYi5wdXNoKCJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvIi5jaGFyQXQoZD4+MTgpKyJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvIi5jaGFyQXQoZD4+MTImNjMpKyJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvIi5jaGFyQXQoZD4+NiY2MykrIj0iKX1yZXR1cm4gYi5qb2luKCIiKX0sVkVSU0lPTjoiMS4wIn19KGpRdWVyeSk7Ci8qKiAvbS9qcy9qcXVlcnkuZGFya3Rvb2x0aXAuanMgKiovCnZhciBfX19kMmNfanF1ZXJ5ZGFya3Rvb2x0aXBqc19jX29uPSIyMDI1LTA1LTIzIDE3OjA5OjQ4IjsndXNlIHN0cmljdCc7dmFyIF9fX2QyY19qcXVlcnlkYXJrdG9vbHRpcGpzX2Nfb249IjIwMjQtMDMtMjUgMTI6MzM6MDciOyJ1c2Ugc3RyaWN0IjsKKGZ1bmN0aW9uKGIpe2Z1bmN0aW9uIGUoYSxjKXt0aGlzLmJlYXJlcj1hO3RoaXMub3B0aW9ucz1jO3RoaXMuaGlkZUV2ZW50O3RoaXMuaGlkaW5nPSExO3RoaXMubW91c2VPdmVyTW9kZT0iaG92ZXIiPT10aGlzLm9wdGlvbnMudHJpZ2dlcnx8Im1vdXNlb3ZlciI9PXRoaXMub3B0aW9ucy50cmlnZ2VyfHwib25tb3VzZW92ZXIiPT10aGlzLm9wdGlvbnMudHJpZ2dlcn1lLnByb3RvdHlwZT17c2hvdzpmdW5jdGlvbigpe3ZhciBhPXRoaXM7dGhpcy5vcHRpb25zLm1vZGFsJiZ0aGlzLm1vZGFsTGF5ZXIuY3NzKCJkaXNwbGF5IiwiYmxvY2siKTt0aGlzLnRvb2x0aXAuY3NzKCJkaXNwbGF5IiwiYmxvY2siKTthLm1vdXNlT3Zlck1vZGUmJih0aGlzLnRvb2x0aXAub24oIm1vdXNlb3ZlciIsZnVuY3Rpb24oKXtjbGVhclRpbWVvdXQoYS5oaWRlRXZlbnQpO2EuaGlkaW5nPSExfSksdGhpcy50b29sdGlwLm9uKCJtb3VzZW91dCIsZnVuY3Rpb24oKXtjbGVhclRpbWVvdXQoYS5oaWRlRXZlbnQpOwphLmhpZGUoKTthLmhpZGluZz0hMX0pKX0saGlkZTpmdW5jdGlvbigpe3ZhciBhPXRoaXM7YS5oaWRpbmd8fChhLmhpZGluZz0hMCx0aGlzLmhpZGVFdmVudD1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7YS5oaWRpbmc9ITE7YS50b29sdGlwLmhpZGUoKX0pLGEub3B0aW9ucy5tb2RhbCYmKGEuaGlkaW5nPSExLGEubW9kYWxMYXllci5oaWRlKCkpLHRoaXMub3B0aW9ucy5vbkNsb3NlKCkpfSx0b2dnbGU6ZnVuY3Rpb24oKXt0aGlzLnRvb2x0aXAuaXMoIjp2aXNpYmxlIik\/dGhpcy5oaWRlKCk6dGhpcy5zaG93KCl9LGFkZEFuaW1hdGlvbjpmdW5jdGlvbigpe3N3aXRjaCh0aGlzLm9wdGlvbnMuYW5pbWF0aW9uKXtjYXNlICJmYWRlSW4iOnRoaXMudG9vbHRpcC5hZGRDbGFzcygiYW5pbWF0ZWQiKTt0aGlzLnRvb2x0aXAuYWRkQ2xhc3MoImZhZGVJbiIpO2JyZWFrO2Nhc2UgImZsaXBJbiI6dGhpcy50b29sdGlwLmFkZENsYXNzKCJhbmltYXRlZCIpLHRoaXMudG9vbHRpcC5hZGRDbGFzcygiZmxpcEluIil9fSwKc2V0Q29udGVudDpmdW5jdGlvbigpe2IodGhpcy5iZWFyZXIpLmNzcygiY3Vyc29yIiwicG9pbnRlciIpO2lmKHRoaXMub3B0aW9ucy5jb250ZW50KXRoaXMuY29udGVudD10aGlzLm9wdGlvbnMuY29udGVudDtlbHNlIGlmKHRoaXMuYmVhcmVyLmF0dHIoImRhdGEtdG9vbHRpcCIpKXRoaXMuY29udGVudD10aGlzLmJlYXJlci5hdHRyKCJkYXRhLXRvb2x0aXAiKTtlbHNlIHJldHVybjtpZigiIyI9PXRoaXMuY29udGVudC5jaGFyQXQoMCkpe2lmKHRoaXMub3B0aW9ucy5kZWxldGVfY29udGVudCl7dmFyIGE9Yih0aGlzLmNvbnRlbnQpLmh0bWwoKTtiKHRoaXMuY29udGVudCkuaHRtbCgiIik7dGhpcy5jb250ZW50PWE7ZGVsZXRlIGF9ZWxzZSBiKHRoaXMuY29udGVudCkuaGlkZSgpLHRoaXMuY29udGVudD1iKHRoaXMuY29udGVudCkuaHRtbCgpO3RoaXMuY29udGVudFR5cGU9Imh0bWwifWVsc2UgdGhpcy5jb250ZW50VHlwZT0idGV4dCI7YT0iIiE9dGhpcy5iZWFyZXIuYXR0cigiaWQiKSYmCiJ1bmRlZmluZWQiIT10aGlzLmJlYXJlci5hdHRyKCJpZCIpPyJpZD0nZGFya3Rvb2x0aXAtIit0aGlzLmJlYXJlci5hdHRyKCJpZCIpKyInIjoiaWQ9J2Rhcmt0b29sdGlwLSIrKERhdGUubm93KCkrTWF0aC5mbG9vcigxRTQqTWF0aC5yYW5kb20oKSkpKyInIjswPT09YigiSU5TLmRhcmt0b29sdGlwLW1vZGFsLWxheWVyIikubGVuZ3RoJiYodGhpcy5tb2RhbExheWVyPWIoIjxpbnMgY2xhc3M9J2Rhcmt0b29sdGlwLW1vZGFsLWxheWVyJz48L2lucz4iKSk7dGhpcy50b29sdGlwPWIoIjxpbnMgIithKyIgY2xhc3MgPSAnZGFyay10b29sdGlwICIrdGhpcy5vcHRpb25zLnRoZW1lKyIgIit0aGlzLm9wdGlvbnMuc2l6ZSsiICIrdGhpcy5vcHRpb25zLmdyYXZpdHkrIic+PGRpdj4iK3RoaXMuY29udGVudCsiPC9kaXY+PGRpdiBjbGFzcyA9ICd0aXAnPjwvZGl2PjwvaW5zPiIpO3RoaXMudGlwPXRoaXMudG9vbHRpcC5maW5kKCIudGlwIik7YigiYm9keSIpLmFwcGVuZCh0aGlzLm1vZGFsTGF5ZXIpOwpiKCJib2R5IikuYXBwZW5kKHRoaXMudG9vbHRpcCk7Imh0bWwiPT10aGlzLmNvbnRlbnRUeXBlJiZ0aGlzLnRvb2x0aXAuY3NzKCJtYXgtd2lkdGgiLCJub25lIik7dGhpcy50b29sdGlwLmNzcygib3BhY2l0eSIsdGhpcy5vcHRpb25zLm9wYWNpdHkpO3RoaXMuYWRkQW5pbWF0aW9uKCk7dGhpcy5vcHRpb25zLmNvbmZpcm0mJnRoaXMuYWRkQ29uZmlybSgpfSxzZXRQb3NpdGlvbnM6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmJlYXJlci5vZmZzZXQoKS5sZWZ0LGM9dGhpcy5iZWFyZXIub2Zmc2V0KCkudG9wO3N3aXRjaCh0aGlzLm9wdGlvbnMuZ3Jhdml0eSl7Y2FzZSAic291dGgiOmErPXRoaXMuYmVhcmVyLm91dGVyV2lkdGgoKS8yLXRoaXMudG9vbHRpcC5vdXRlcldpZHRoKCkvMjtjKz0tdGhpcy50b29sdGlwLm91dGVySGVpZ2h0KCktdGhpcy50aXAub3V0ZXJIZWlnaHQoKS8yO2JyZWFrO2Nhc2UgIndlc3QiOmErPXRoaXMuYmVhcmVyLm91dGVyV2lkdGgoKSt0aGlzLnRpcC5vdXRlcldpZHRoKCkvCjI7Yys9dGhpcy5iZWFyZXIub3V0ZXJIZWlnaHQoKS8yLXRoaXMudG9vbHRpcC5vdXRlckhlaWdodCgpLzI7YnJlYWs7Y2FzZSAibm9ydGgiOmErPXRoaXMuYmVhcmVyLm91dGVyV2lkdGgoKS8yLXRoaXMudG9vbHRpcC5vdXRlcldpZHRoKCkvMjtjKz10aGlzLmJlYXJlci5vdXRlckhlaWdodCgpK3RoaXMudGlwLm91dGVySGVpZ2h0KCkvMjticmVhaztjYXNlICJlYXN0IjphKz0tdGhpcy50b29sdGlwLm91dGVyV2lkdGgoKS10aGlzLnRpcC5vdXRlcldpZHRoKCkvMixjKz10aGlzLmJlYXJlci5vdXRlckhlaWdodCgpLzItdGhpcy50b29sdGlwLm91dGVySGVpZ2h0KCkvMn10aGlzLm9wdGlvbnMuYXV0b0xlZnQmJnRoaXMudG9vbHRpcC5jc3MoImxlZnQiLGEpO3RoaXMub3B0aW9ucy5hdXRvVG9wJiZ0aGlzLnRvb2x0aXAuY3NzKCJ0b3AiLGMpfSxzZXRFdmVudHM6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLGM9YS5vcHRpb25zLmhvdmVyRGVsYXksZjtpZihhLm1vdXNlT3Zlck1vZGUpdGhpcy5iZWFyZXIub24oIm1vdXNlZW50ZXIiLApmdW5jdGlvbigpe2Y9c2V0VGltZW91dChmdW5jdGlvbigpe2Euc2V0UG9zaXRpb25zKCk7YS5zaG93KCl9LGMpfSkub24oIm1vdXNlbGVhdmUiLGZ1bmN0aW9uKCl7Y2xlYXJUaW1lb3V0KGYpO2EuaGlkZSgpfSk7ZWxzZSBpZigiY2xpY2siPT10aGlzLm9wdGlvbnMudHJpZ2dlcnx8Im9uY2xpayI9PXRoaXMub3B0aW9ucy50cmlnZ2VyKXRoaXMudG9vbHRpcC5vbigiY2xpY2siLGZ1bmN0aW9uKGQpe2Quc3RvcFByb3BhZ2F0aW9uKCl9KSx0aGlzLmJlYXJlci5vbigiY2xpY2siLGZ1bmN0aW9uKGQpe2QucHJldmVudERlZmF1bHQoKTthLnNldFBvc2l0aW9ucygpO2EudG9nZ2xlKCk7ZC5zdG9wUHJvcGFnYXRpb24oKX0pLGIoImh0bWwiKS5vbigiY2xpY2siLGZ1bmN0aW9uKCl7YS5oaWRlKCl9KX0sYWN0aXZhdGU6ZnVuY3Rpb24oKXt0aGlzLnNldENvbnRlbnQoKTt0aGlzLmNvbnRlbnQmJnRoaXMuc2V0RXZlbnRzKCl9LGFkZENvbmZpcm06ZnVuY3Rpb24oKXt0aGlzLnRvb2x0aXAuYXBwZW5kKCI8dWwgY2xhc3MgPSAnY29uZmlybSc+PGxpIGNsYXNzID0gJ2Rhcmt0b29sdGlwLXllcyc+IisKdGhpcy5vcHRpb25zLnllcysiPC9saT48bGkgY2xhc3MgPSAnZGFya3Rvb2x0aXAtbm8nPiIrdGhpcy5vcHRpb25zLm5vKyI8L2xpPjwvdWw+Iik7dGhpcy5zZXRDb25maXJtRXZlbnRzKCl9LHNldENvbmZpcm1FdmVudHM6ZnVuY3Rpb24oKXt2YXIgYT10aGlzO3RoaXMudG9vbHRpcC5maW5kKCJsaS5kYXJrdG9vbHRpcC15ZXMiKS5vbigiY2xpY2siLGZ1bmN0aW9uKGMpe2Eub25ZZXMoKTtjLnN0b3BQcm9wYWdhdGlvbigpfSk7dGhpcy50b29sdGlwLmZpbmQoImxpLmRhcmt0b29sdGlwLW5vIikub24oImNsaWNrIixmdW5jdGlvbihjKXthLm9uTm8oKTtjLnN0b3BQcm9wYWdhdGlvbigpfSl9LGZpbmFsTWVzc2FnZTpmdW5jdGlvbigpe2lmKHRoaXMub3B0aW9ucy5maW5hbE1lc3NhZ2Upe3ZhciBhPXRoaXM7YS50b29sdGlwLmZpbmQoImRpdjpmaXJzdCIpLmh0bWwodGhpcy5vcHRpb25zLmZpbmFsTWVzc2FnZSk7YS50b29sdGlwLmZpbmQoInVsIikucmVtb3ZlKCk7YS5zZXRQb3NpdGlvbnMoKTsKc2V0VGltZW91dChmdW5jdGlvbigpe2EuaGlkZSgpO2Euc2V0Q29udGVudCgpfSxhLm9wdGlvbnMuZmluYWxNZXNzYWdlRHVyYXRpb24pfWVsc2UgdGhpcy5oaWRlKCl9LG9uWWVzOmZ1bmN0aW9uKCl7dGhpcy5vcHRpb25zLm9uWWVzKHRoaXMuYmVhcmVyKTt0aGlzLmZpbmFsTWVzc2FnZSgpfSxvbk5vOmZ1bmN0aW9uKCl7dGhpcy5vcHRpb25zLm9uTm8odGhpcy5iZWFyZXIpO3RoaXMuaGlkZSgpfX07Yi5mbi5kYXJrVG9vbHRpcD1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7YT1iLmV4dGVuZCh7fSxiLmZuLmRhcmtUb29sdGlwLmRlZmF1bHRzLGEpOyhuZXcgZShiKHRoaXMpLGEpKS5hY3RpdmF0ZSgpfSl9O2IuZm4uZGFya1Rvb2x0aXAuZGVmYXVsdHM9e2FuaW1hdGlvbjoibm9uZSIsY29uZmlybTohMSxjb250ZW50OiIiLGZpbmFsTWVzc2FnZToiIixmaW5hbE1lc3NhZ2VEdXJhdGlvbjoxRTMsZ3Jhdml0eToic291dGgiLGhvdmVyRGVsYXk6MCxtb2RhbDohMSwKbm86Ik5vIixvbk5vOmZ1bmN0aW9uKCl7fSxvblllczpmdW5jdGlvbigpe30sb3BhY2l0eTouOSxzaXplOiJtZWRpdW0iLHRoZW1lOiJkYXJrIix0cmlnZ2VyOiJob3ZlciIseWVzOiJZZXMiLGF1dG9Ub3A6ITAsYXV0b0xlZnQ6ITAsb25DbG9zZTpmdW5jdGlvbigpe319fSkoalF1ZXJ5KTsKLyoqIC9tL2pzL2pxdWVyeS52YWxpZGl0eS5taW4uanMgKiovCihmdW5jdGlvbihhKXtmdW5jdGlvbiBiKGIsYyxlKXt2YXIgZj0oYi5yZWR1Y3Rpb258fGIpLmZpbHRlcihhLnZhbGlkaXR5LnNldHRpbmdzLmVsZW1lbnRTdXBwb3J0KSxpPVtdO3JldHVybiAxPmIubGVuZ3RoPyhjb25zb2xlLmxvZygiQ291bGQgbm90IHZhbGlkYXRlIGVsZW1lbnQiLGIpLGIpOihmLmVhY2goZnVuY3Rpb24oKXtjKHRoaXMpP2kucHVzaCh0aGlzKTpkKHRoaXMsZyhlLHtmaWVsZDpoKHRoaXMpfSkpfSksYi5yZWR1Y3Rpb249YShpKSxiKX1mdW5jdGlvbiBjKCl7YS52YWxpZGl0eS5pc1ZhbGlkYXRpbmcoKSYmKGEudmFsaWRpdHkucmVwb3J0LmVycm9ycysrLGEudmFsaWRpdHkucmVwb3J0LnZhbGlkPSExKX1mdW5jdGlvbiBkKGIsZCl7YygpLGEudmFsaWRpdHkub3V0cHV0c1thLnZhbGlkaXR5LnNldHRpbmdzLm91dHB1dE1vZGVdJiZhLnZhbGlkaXR5Lm91dHB1dHNbYS52YWxpZGl0eS5zZXR0aW5ncy5vdXRwdXRNb2RlXS5yYWlzZSYmYS52YWxpZGl0eS5vdXRwdXRzW2EudmFsaWRpdHkuc2V0dGluZ3Mub3V0cHV0TW9kZV0ucmFpc2UoYShiKSxkKX1mdW5jdGlvbiBlKGIsZCl7YygpLGEudmFsaWRpdHkub3V0cHV0c1thLnZhbGlkaXR5LnNldHRpbmdzLm91dHB1dE1vZGVdJiZhLnZhbGlkaXR5Lm91dHB1dHNbYS52YWxpZGl0eS5zZXR0aW5ncy5vdXRwdXRNb2RlXS5yYWlzZUFnZ3JlZ2F0ZSYmYS52YWxpZGl0eS5vdXRwdXRzW2EudmFsaWRpdHkuc2V0dGluZ3Mub3V0cHV0TW9kZV0ucmFpc2VBZ2dyZWdhdGUoYixkKX1mdW5jdGlvbiBmKGEpe3ZhciBiPTA7cmV0dXJuIGEuZWFjaChmdW5jdGlvbigpe3ZhciBhPXBhcnNlRmxvYXQodGhpcy52YWx1ZSk7Yis9aXNOYU4oYSk\/MDphfSksYn1mdW5jdGlvbiBnKGEsYil7Zm9yKHZhciBjIGluIGIpYT1hLnJlcGxhY2UoIiN7IitjKyJ9IixiW2NdKTtyZXR1cm4gaihhKX1mdW5jdGlvbiBoKGIpe3ZhciBjPWEoYiksZD1hLnZhbGlkaXR5LnNldHRpbmdzLmRlZmF1bHRGaWVsZE5hbWU7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBjLmF0dHIoInRpdGxlIikmJmMuYXR0cigidGl0bGUiKS5sZW5ndGgpZD1jLmF0dHIoInRpdGxlIik7ZWxzZSBpZigvXihbQS1aMC05XVthLXpdKikrJC8udGVzdChiLmlkKSlkPWIuaWQucmVwbGFjZSgvKFtBLVowLTldKVthLXpdKi9nLCIgJCYiKTtlbHNlIGlmKC9eW2EtejAtOV9dKiQvLnRlc3QoYi5pZCkpe2Zvcih2YXIgZT1iLmlkLnNwbGl0KCJfIiksZj0wO2Y8ZS5sZW5ndGg7KytmKWVbZl09aihlW2ZdKTtkPWUuam9pbigiICIpfXJldHVybiBkfWZ1bmN0aW9uIGooYSl7cmV0dXJuIGEuc3Vic3RyaW5nP2Euc3Vic3RyaW5nKDAsMSkudG9VcHBlckNhc2UoKSthLnN1YnN0cmluZygxLGEubGVuZ3RoKTphfWEudmFsaWRpdHk9e3NldHRpbmdzOmEuZXh0ZW5kKHtvdXRwdXRNb2RlOiJsYWJlbCIsY3NzQ2xhc3M6ImVycm9yIixzY3JvbGxUbzohMSxtb2RhbEVycm9yc0NsaWNrYWJsZTohMCxkZWZhdWx0RmllbGROYW1lOiJUaGlzIGZpZWxkIixlbGVtZW50U3VwcG9ydDoiOnRleHQsIFt0eXBlPXRlbF0sIFt0eXBlPWVtYWlsXSwgW3R5cGU9ZGF0ZV0sIDpwYXNzd29yZCwgdGV4dGFyZWEsIHNlbGVjdCwgOnJhZGlvLCA6Y2hlY2tib3giLGFyZ1RvU3RyaW5nOmZ1bmN0aW9uKGEpe3JldHVybiBhLmdldERhdGU\/YS5nZXRNb250aCgpKzErIi8iK2EuZ2V0RGF0ZSgpKyIvIithLmdldEZ1bGxZZWFyKCk6YX19LHt9KSxwYXR0ZXJuczp7aW50ZWdlcjovXlxkKyQvLGRhdGU6L14oKDA\/XGQpfCgxWzAxMl0pKVwvKFswMTJdP1xkfDMwfDMxKVwvXGR7MSw0fSQvLGVtYWlsOi9eKCgoW2Etel18XGR8WyEjXCQlJidcKlwrXC1cLz1cP1xeX2B7XHx9fl18W1x1MDBBMC1cdUQ3RkZcdUY5MDAtXHVGRENGXHVGREYwLVx1RkZFRl0pKyhcLihbYS16XXxcZHxbISNcJCUmJ1wqXCtcLVwvPVw\/XF5fYHtcfH1+XXxbXHUwMEEwLVx1RDdGRlx1RjkwMC1cdUZEQ0ZcdUZERjAtXHVGRkVGXSkrKSopfCgoXHgyMikoKCgoXHgyMHxceDA5KSooXHgwZFx4MGEpKT8oXHgyMHxceDA5KSspPygoW1x4MDEtXHgwOFx4MGJceDBjXHgwZS1ceDFmXHg3Zl18XHgyMXxbXHgyMy1ceDViXXxbXHg1ZC1ceDdlXXxbXHUwMEEwLVx1RDdGRlx1RjkwMC1cdUZEQ0ZcdUZERjAtXHVGRkVGXSl8KFxcKFtceDAxLVx4MDlceDBiXHgwY1x4MGQtXHg3Zl18W1x1MDBBMC1cdUQ3RkZcdUY5MDAtXHVGRENGXHVGREYwLVx1RkZFRl0pKSkpKigoKFx4MjB8XHgwOSkqKFx4MGRceDBhKSk\/KFx4MjB8XHgwOSkrKT8oXHgyMikpKUAoKChbYS16XXxcZHxbXHUwMEEwLVx1RDdGRlx1RjkwMC1cdUZEQ0ZcdUZERjAtXHVGRkVGXSl8KChbYS16XXxcZHxbXHUwMEEwLVx1RDdGRlx1RjkwMC1cdUZEQ0ZcdUZERjAtXHVGRkVGXSkoW2Etel18XGR8LXxcLnxffH58W1x1MDBBMC1cdUQ3RkZcdUY5MDAtXHVGRENGXHVGREYwLVx1RkZFRl0pKihbYS16XXxcZHxbXHUwMEEwLVx1RDdGRlx1RjkwMC1cdUZEQ0ZcdUZERjAtXHVGRkVGXSkpKVwuKSsoKFthLXpdfFtcdTAwQTAtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGRUZdKXwoKFthLXpdfFtcdTAwQTAtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGRUZdKShbYS16XXxcZHwtfFwufF98fnxbXHUwMEEwLVx1RDdGRlx1RjkwMC1cdUZEQ0ZcdUZERjAtXHVGRkVGXSkqKFthLXpdfFtcdTAwQTAtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGRUZdKSkpXC4\/JC9pLHVzZDovXlwkPyhcZHsxLDN9LD8oXGR7M30sPykqXGR7M30oXC5cZHswLDJ9KT98XGR7MSwzfShcLlxkezAsMn0pP3xcLlxkezEsMn0\/KSQvLHVybDovXihodHRwcz98ZnRwKTpcL1wvKCgoKFthLXpdfFxkfC18XC58X3x+fFtcdTAwQTAtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGRUZdKXwoJVtcZGEtZl17Mn0pfFshXCQmJ1woXClcKlwrLDs9XXw6KSpAKT8oKChcZHxbMS05XVxkfDFcZFxkfDJbMC00XVxkfDI1WzAtNV0pXC4oXGR8WzEtOV1cZHwxXGRcZHwyWzAtNF1cZHwyNVswLTVdKVwuKFxkfFsxLTldXGR8MVxkXGR8MlswLTRdXGR8MjVbMC01XSlcLihcZHxbMS05XVxkfDFcZFxkfDJbMC00XVxkfDI1WzAtNV0pKXwoKChbYS16XXxcZHxbXHUwMEEwLVx1RDdGRlx1RjkwMC1cdUZEQ0ZcdUZERjAtXHVGRkVGXSl8KChbYS16XXxcZHxbXHUwMEEwLVx1RDdGRlx1RjkwMC1cdUZEQ0ZcdUZERjAtXHVGRkVGXSkoW2Etel18XGR8LXxcLnxffH58W1x1MDBBMC1cdUQ3RkZcdUY5MDAtXHVGRENGXHVGREYwLVx1RkZFRl0pKihbYS16XXxcZHxbXHUwMEEwLVx1RDdGRlx1RjkwMC1cdUZEQ0ZcdUZERjAtXHVGRkVGXSkpKVwuKSsoKFthLXpdfFtcdTAwQTAtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGRUZdKXwoKFthLXpdfFtcdTAwQTAtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGRUZdKShbYS16XXxcZHwtfFwufF98fnxbXHUwMEEwLVx1RDdGRlx1RjkwMC1cdUZEQ0ZcdUZERjAtXHVGRkVGXSkqKFthLXpdfFtcdTAwQTAtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGRUZdKSkpXC4\/KSg6XGQqKT8pKFwvKCgoW2Etel18XGR8LXxcLnxffH58W1x1MDBBMC1cdUQ3RkZcdUY5MDAtXHVGRENGXHVGREYwLVx1RkZFRl0pfCglW1xkYS1mXXsyfSl8WyFcJCYnXChcKVwqXCssOz1dfDp8QCkrKFwvKChbYS16XXxcZHwtfFwufF98fnxbXHUwMEEwLVx1RDdGRlx1RjkwMC1cdUZEQ0ZcdUZERjAtXHVGRkVGXSl8KCVbXGRhLWZdezJ9KXxbIVwkJidcKFwpXCpcKyw7PV18OnxAKSopKik\/KT8oXD8oKChbYS16XXxcZHwtfFwufF98fnxbXHUwMEEwLVx1RDdGRlx1RjkwMC1cdUZEQ0ZcdUZERjAtXHVGRkVGXSl8KCVbXGRhLWZdezJ9KXxbIVwkJidcKFwpXCpcKyw7PV18OnxAKXxbXHVFMDAwLVx1RjhGRl18XC98XD8pKik\/KFwjKCgoW2Etel18XGR8LXxcLnxffH58W1x1MDBBMC1cdUQ3RkZcdUY5MDAtXHVGRENGXHVGREYwLVx1RkZFRl0pfCglW1xkYS1mXXsyfSl8WyFcJCYnXChcKVwqXCssOz1dfDp8QCl8XC98XD8pKik\/JC9pLG51bWJlcjovXlsrLV0\/KFxkKyhcLlxkKik\/fFwuXGQrKShbRWVdXGQrKT8kLyx6aXA6L15cZHs1fSgtXGR7NH0pPyQvLHBob25lOi9eWzItOV1cZHsyfS1cZHszfS1cZHs0fSQvLGd1aWQ6L14oXHs\/KFswLTlhLWZBLUZdKXs4fS0oKFswLTlhLWZBLUZdKXs0fS0pezN9KFswLTlhLWZBLUZdKXsxMn1cfT8pJC8sdGltZTEyOi9eWzAxXT9cZDpbMC01XVxkP1xzP1thQXBQXVwuP1ttTV1cLj8kLyx0aW1lMjQ6L14oMjB8MjF8MjJ8MjN8WzAxXVxkfFxkKSgoWzpdWzAtNV1cZCl7MSwyfSkkLyxub25IdG1sOi9eW148Pl0qJC99LG1lc3NhZ2VzOnthcmVhY29kZToiI3tmaWVsZH0gYWNjZXB0cyBvbmx5IGxvY2FsIGFyZWEgY29kZXMiLHJlcXVpcmU6IiN7ZmllbGR9IGlzIHJlcXVpcmVkLiIsbWF0Y2g6IiN7ZmllbGR9IGlzIGluIGFuIGludmFsaWQgZm9ybWF0LiIsaW50ZWdlcjoiI3tmaWVsZH0gbXVzdCBiZSBhIHBvc2l0aXZlLCB3aG9sZSBudW1iZXIuIixkYXRlOiIje2ZpZWxkfSBtdXN0IGJlIGZvcm1hdHRlZCBhcyBhIGRhdGUuIixlbWFpbDoiI3tmaWVsZH0gbXVzdCBiZSBmb3JtYXR0ZWQgYXMgYW4gZW1haWwuIix1c2Q6IiN7ZmllbGR9IG11c3QgYmUgZm9ybWF0dGVkIGFzIGEgVVMgRG9sbGFyIGFtb3VudC4iLHVybDoiI3tmaWVsZH0gbXVzdCBiZSBmb3JtYXR0ZWQgYXMgYSBVUkwuIixudW1iZXI6IiN7ZmllbGR9IG11c3QgYmUgZm9ybWF0dGVkIGFzIGEgbnVtYmVyLiIsemlwOiIje2ZpZWxkfSBtdXN0IGJlIGZvcm1hdHRlZCBhcyBhIHppcGNvZGUgIyMjIyMgb3IgIyMjIyMtIyMjIy4iLHBob25lOiIje2ZpZWxkfSBtdXN0IGJlIGZvcm1hdHRlZCBhcyBhIHBob25lIG51bWJlciAjIyMtIyMjLSMjIyMuIixndWlkOiIje2ZpZWxkfSBtdXN0IGJlIGZvcm1hdHRlZCBhcyBhIGd1aWQgbGlrZSB7M0YyNTA0RTAtNEY4OS0xMUQzLTlBMEMtMDMwNUU4MkMzMzAxfS4iLHRpbWUyNDoiI3tmaWVsZH0gbXVzdCBiZSBmb3JtYXR0ZWQgYXMgYSAyNCBob3VyIHRpbWU6IDIzOjAwLiIsdGltZTEyOiIje2ZpZWxkfSBtdXN0IGJlIGZvcm1hdHRlZCBhcyBhIDEyIGhvdXIgdGltZTogMTI6MDAgQU0vUE0iLGxlc3NUaGFuOiIje2ZpZWxkfSBtdXN0IGJlIGxlc3MgdGhhbiAje21heH0uIixsZXNzVGhhbk9yRXF1YWxUbzoiI3tmaWVsZH0gbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gI3ttYXh9LiIsZ3JlYXRlclRoYW46IiN7ZmllbGR9IG11c3QgYmUgZ3JlYXRlciB0aGFuICN7bWlufS4iLGdyZWF0ZXJUaGFuT3JFcXVhbFRvOiIje2ZpZWxkfSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAje21pbn0uIixyYW5nZToiI3tmaWVsZH0gbXVzdCBiZSBiZXR3ZWVuICN7bWlufSBhbmQgI3ttYXh9LiIsdG9vTG9uZzoiI3tmaWVsZH0gY2Fubm90IGJlIGxvbmdlciB0aGFuICN7bWF4fSBjaGFyYWN0ZXJzLiIsdG9vU2hvcnQ6IiN7ZmllbGR9IGNhbm5vdCBiZSBzaG9ydGVyIHRoYW4gI3ttaW59IGNoYXJhY3RlcnMuIixub25IdG1sOiIje2ZpZWxkfSBjYW5ub3QgY29udGFpbiBIVE1MIGNoYXJhY3RlcnMuIixhbHBoYWJldDoiI3tmaWVsZH0gY29udGFpbnMgZGlzYWxsb3dlZCBjaGFyYWN0ZXJzLiIsbWluQ2hhckNsYXNzOiIje2ZpZWxkfSBjYW5ub3QgaGF2ZSBtb3JlIHRoYW4gI3ttaW59ICN7Y2hhckNsYXNzfSBjaGFyYWN0ZXJzLiIsbWF4Q2hhckNsYXNzOiIje2ZpZWxkfSBjYW5ub3QgaGF2ZSBsZXNzIHRoYW4gI3ttaW59ICN7Y2hhckNsYXNzfSBjaGFyYWN0ZXJzLiIsZXF1YWw6IlZhbHVlcyBkb24ndCBtYXRjaC4iLGRpc3RpbmN0OiJBIHZhbHVlIHdhcyByZXBlYXRlZC4iLHN1bToiVmFsdWVzIGRvbid0IGFkZCB0byAje3N1bX0uIixzdW1NYXg6IlRoZSBzdW0gb2YgdGhlIHZhbHVlcyBtdXN0IGJlIGxlc3MgdGhhbiAje21heH0uIixzdW1NaW46IlRoZSBzdW0gb2YgdGhlIHZhbHVlcyBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAje21pbn0uIixyYWRpb0NoZWNrZWQ6IlRoZSBzZWxlY3RlZCB2YWx1ZSBpcyBub3QgdmFsaWQuIixnZW5lcmljOiJJbnZhbGlkLiJ9LGNoYXJDbGFzc2VzOnthbHBoYWJldGljYWw6L1x3L2csbnVtZXJpYzovXGQvZyxhbHBoYW51bWVyaWM6L1tBLVphLXowLTldL2csc3ltYm9sOi9bXkEtWmEtejAtOV0vZ30sb3V0cHV0czp7fSxzZXR1cDpmdW5jdGlvbihiKXtyZXR1cm4gdGhpcy5zZXR0aW5ncz1hLmV4dGVuZCh0aGlzLnNldHRpbmdzLGIpLHRoaXN9LHJlcG9ydDpudWxsLGlzVmFsaWRhdGluZzpmdW5jdGlvbigpe3JldHVybiEhdGhpcy5yZXBvcnR9LHN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5vdXRwdXRzW3RoaXMuc2V0dGluZ3Mub3V0cHV0TW9kZV0mJnRoaXMub3V0cHV0c1t0aGlzLnNldHRpbmdzLm91dHB1dE1vZGVdLnN0YXJ0JiZ0aGlzLm91dHB1dHNbdGhpcy5zZXR0aW5ncy5vdXRwdXRNb2RlXS5zdGFydCgpLHRoaXMucmVwb3J0PXtlcnJvcnM6MCx2YWxpZDohMH19LGVuZDpmdW5jdGlvbigpe3ZhciBhPXRoaXMucmVwb3J0fHx7ZXJyb3JzOjAsdmFsaWQ6ITB9O3JldHVybiB0aGlzLnJlcG9ydD1udWxsLHRoaXMub3V0cHV0c1t0aGlzLnNldHRpbmdzLm91dHB1dE1vZGVdJiZ0aGlzLm91dHB1dHNbdGhpcy5zZXR0aW5ncy5vdXRwdXRNb2RlXS5lbmQmJnRoaXMub3V0cHV0c1t0aGlzLnNldHRpbmdzLm91dHB1dE1vZGVdLmVuZChhKSxhfSxjbGVhcjpmdW5jdGlvbigpe3RoaXMuc3RhcnQoKSx0aGlzLmVuZCgpfX0sYS5mbi5leHRlbmQoe3ZhbGlkaXR5OmZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtpZigiZm9ybSI9PXRoaXMudGFnTmFtZS50b0xvd2VyQ2FzZSgpKXt2YXIgYz1udWxsOyJzdHJpbmciPT10eXBlb2YgYj9jPWZ1bmN0aW9uKCl7YShiKS5yZXF1aXJlKCl9OmlzRnVuY3Rpb24oYikmJihjPWIpLGImJmEodGhpcykub24oInN1Ym1pdCIsZnVuY3Rpb24oKXtyZXR1cm4gYS52YWxpZGl0eS5zdGFydCgpLGMoKSxhLnZhbGlkaXR5LmVuZCgpLnZhbGlkfSl9fSl9LHJlcXVpcmU6ZnVuY3Rpb24oYyl7cmV0dXJuIGIodGhpcyxmdW5jdGlvbihiKXt2YXIgYz1hKGIpLnZhbCgpLGQ9dHJpbShjKS5sZW5ndGg7cmV0dXJuIGR9LGN8fGEudmFsaWRpdHkubWVzc2FnZXMucmVxdWlyZSl9LG1hdGNoOmZ1bmN0aW9uKGMsZCl7cmV0dXJuIGR8fChkPWEudmFsaWRpdHkubWVzc2FnZXMubWF0Y2gsInN0cmluZyI9PXR5cGVvZiBjJiZhLnZhbGlkaXR5Lm1lc3NhZ2VzW2NdJiYoZD1hLnZhbGlkaXR5Lm1lc3NhZ2VzW2NdKSksInN0cmluZyI9PXR5cGVvZiBjJiYoYz1hLnZhbGlkaXR5LnBhdHRlcm5zW2NdKSxiKHRoaXMsaXNGdW5jdGlvbihjKT9mdW5jdGlvbihhKXtyZXR1cm4hYS52YWx1ZS5sZW5ndGh8fGMoYS52YWx1ZSl9OmZ1bmN0aW9uKGEpe3JldHVybiBjLmdsb2JhbCYmKGMubGFzdEluZGV4PTApLCFhLnZhbHVlLmxlbmd0aHx8Yy50ZXN0KGEudmFsdWUpfSxkKX0scmFuZ2U6ZnVuY3Rpb24oYyxlLGYpe3JldHVybiBiKHRoaXMsYy5nZXRUaW1lJiZlLmdldFRpbWU\/ZnVuY3Rpb24oYSl7dmFyIGI9bmV3IERhdGUoYS52YWx1ZSk7cmV0dXJuIGI+PW5ldyBEYXRlKGMpJiZiPD1uZXcgRGF0ZShlKX06Yy5zdWJzdHJpbmcmJmUuc3Vic3RyaW5nJiZCaWc\/ZnVuY3Rpb24oYSl7dmFyIGI9bmV3IEJpZyhhLnZhbHVlKTtyZXR1cm4gYi5ncmVhdGVyVGhhbk9yRXF1YWxUbyhuZXcgQmlnKGMpKSYmYi5sZXNzVGhhbk9yRXF1YWxUbyhuZXcgQmlnKGUpKX06ZnVuY3Rpb24oYSl7dmFyIGI9cGFyc2VGbG9hdChhLnZhbHVlKTtyZXR1cm4gYj49YyYmYjw9ZX0sZnx8ZyhhLnZhbGlkaXR5Lm1lc3NhZ2VzLnJhbmdlLHttaW46YS52YWxpZGl0eS5zZXR0aW5ncy5hcmdUb1N0cmluZyhjKSxtYXg6YS52YWxpZGl0eS5zZXR0aW5ncy5hcmdUb1N0cmluZyhlKX0pKX0sZ3JlYXRlclRoYW46ZnVuY3Rpb24oYyxkKXtyZXR1cm4gYih0aGlzLGMuZ2V0VGltZT9mdW5jdGlvbihhKXtyZXR1cm4gbmV3IERhdGUoYS52YWx1ZSk+Y306Yy5zdWJzdHJpbmcmJkJpZz9mdW5jdGlvbihhKXtyZXR1cm4gbmV3IEJpZyhhLnZhbHVlKS5ncmVhdGVyVGhhbihuZXcgQmlnKGMpKX06ZnVuY3Rpb24oYSl7cmV0dXJuIHBhcnNlRmxvYXQoYS52YWx1ZSk+Y30sZHx8ZyhhLnZhbGlkaXR5Lm1lc3NhZ2VzLmdyZWF0ZXJUaGFuLHttaW46YS52YWxpZGl0eS5zZXR0aW5ncy5hcmdUb1N0cmluZyhjKX0pKX0sZ3JlYXRlclRoYW5PckVxdWFsVG86ZnVuY3Rpb24oYyxkKXtyZXR1cm4gYih0aGlzLGMuZ2V0VGltZT9mdW5jdGlvbihhKXtyZXR1cm4gbmV3IERhdGUoYS52YWx1ZSk+PWN9OmMuc3Vic3RyaW5nJiZCaWc\/ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyBCaWcoYS52YWx1ZSkuZ3JlYXRlclRoYW5PckVxdWFsVG8obmV3IEJpZyhjKSl9OmZ1bmN0aW9uKGEpe3JldHVybiBwYXJzZUZsb2F0KGEudmFsdWUpPj1jfSxkfHxnKGEudmFsaWRpdHkubWVzc2FnZXMuZ3JlYXRlclRoYW5PckVxdWFsVG8se21pbjphLnZhbGlkaXR5LnNldHRpbmdzLmFyZ1RvU3RyaW5nKGMpfSkpfSxsZXNzVGhhbjpmdW5jdGlvbihjLGQpe3JldHVybiBiKHRoaXMsYy5nZXRUaW1lP2Z1bmN0aW9uKGEpe3JldHVybiBuZXcgRGF0ZShhLnZhbHVlKTxjfTpjLnN1YnN0cmluZyYmQmlnP2Z1bmN0aW9uKGEpe3JldHVybiBuZXcgQmlnKGEudmFsdWUpLmxlc3NUaGFuKG5ldyBCaWcoYykpfTpmdW5jdGlvbihhKXtyZXR1cm4gcGFyc2VGbG9hdChhLnZhbHVlKTxjfSxkfHxnKGEudmFsaWRpdHkubWVzc2FnZXMubGVzc1RoYW4se21heDphLnZhbGlkaXR5LnNldHRpbmdzLmFyZ1RvU3RyaW5nKGMpfSkpfSxsZXNzVGhhbk9yRXF1YWxUbzpmdW5jdGlvbihjLGQpe3JldHVybiBiKHRoaXMsYy5nZXRUaW1lP2Z1bmN0aW9uKGEpe3JldHVybiBuZXcgRGF0ZShhLnZhbHVlKTw9Y306Yy5zdWJzdHJpbmcmJkJpZz9mdW5jdGlvbihhKXtyZXR1cm4gbmV3IEJpZyhhLnZhbHVlKS5sZXNzVGhhbk9yRXF1YWxUbyhuZXcgQmlnKGMpKX06ZnVuY3Rpb24oYSl7cmV0dXJuIHBhcnNlRmxvYXQoYS52YWx1ZSk8PWN9LGR8fGcoYS52YWxpZGl0eS5tZXNzYWdlcy5sZXNzVGhhbk9yRXF1YWxUbyx7bWF4OmEudmFsaWRpdHkuc2V0dGluZ3MuYXJnVG9TdHJpbmcoYyl9KSl9LG1heExlbmd0aDpmdW5jdGlvbihjLGQpe3JldHVybiBiKHRoaXMsZnVuY3Rpb24oYSl7cmV0dXJuIGEudmFsdWUubGVuZ3RoPD1jfSxkfHxnKGEudmFsaWRpdHkubWVzc2FnZXMudG9vTG9uZyx7bWF4OmN9KSl9LG1pbkxlbmd0aDpmdW5jdGlvbihjLGQpe3JldHVybiBiKHRoaXMsZnVuY3Rpb24oYSl7cmV0dXJuIGEudmFsdWUubGVuZ3RoPj1jfSxkfHxnKGEudmFsaWRpdHkubWVzc2FnZXMudG9vU2hvcnQse21pbjpjfSkpfSxhbHBoYWJldDpmdW5jdGlvbihjLGQpe3ZhciBlPVtdO3JldHVybiBiKHRoaXMsZnVuY3Rpb24oYSl7Zm9yKHZhciBiPTA7YjxhLnZhbHVlLmxlbmd0aDsrK2IpaWYoLTE9PWMuaW5kZXhPZihhLnZhbHVlLmNoYXJBdChiKSkpcmV0dXJuIGUucHVzaChhLnZhbHVlLmNoYXJBdChiKSksITE7cmV0dXJuITB9LGR8fGcoYS52YWxpZGl0eS5tZXNzYWdlcy5hbHBoYWJldCx7Y2hhcnM6ZS5qb2luKCIsICIpfSkpfSxtaW5DaGFyQ2xhc3M6ZnVuY3Rpb24oYyxkLGUpe3JldHVybiJzdHJpbmciPT10eXBlb2YgYyYmKGM9Yy50b0xvd2VyQ2FzZSgpLGEudmFsaWRpdHkuY2hhckNsYXNzZXNbY10mJihjPWEudmFsaWRpdHkuY2hhckNsYXNzZXNbY10pKSxiKHRoaXMsZnVuY3Rpb24oYSl7cmV0dXJuKGEudmFsdWUubWF0Y2goYyl8fFtdKS5sZW5ndGg+PWR9LGV8fGcoYS52YWxpZGl0eS5tZXNzYWdlcy5taW5DaGFyQ2xhc3Mse21pbjpkLGNoYXJDbGFzczpjfSkpfSxtYXhDaGFyQ2xhc3M6ZnVuY3Rpb24oYyxkLGUpe3JldHVybiJzdHJpbmciPT10eXBlb2YgYyYmKGM9Yy50b0xvd2VyQ2FzZSgpLGEudmFsaWRpdHkuY2hhckNsYXNzZXNbY10mJihjPWEudmFsaWRpdHkuY2hhckNsYXNzZXNbY10pKSxiKHRoaXMsZnVuY3Rpb24oYSl7cmV0dXJuKGEudmFsdWUubWF0Y2goYyl8fFtdKS5sZW5ndGg8PWR9LGV8fGcoYS52YWxpZGl0eS5tZXNzYWdlcy5tYXhDaGFyQ2xhc3Mse21heDpkLGNoYXJDbGFzczpjfSkpfSxwYXNzd29yZDpmdW5jdGlvbihiKXtyZXR1cm4gYj1hLmV4dGVuZCh7YWxwaGFiZXQ6bnVsbCxtaW5MZW5ndGg6MCxtYXhMZW5ndGg6MCxtaW5TeW1ib2w6MCxtaW5BbHBoYWJldGljYWw6MCxtaW5OdW1lcmljOjAsbWluQWxwaGFOdW1lcmljOjB9LGIpLGIuYWxwaGFiZXQmJnRoaXMuYWxwaGFiZXQoYi5hbHBoYWJldCksYi5taW5MZW5ndGgmJnRoaXMubWluTGVuZ3RoKGIubWluTGVuZ3RoKSxiLm1heExlbmd0aCYmdGhpcy5tYXhMZW5ndGgoYi5tYXhMZW5ndGgpLGIubWluU3ltYm9sJiZ0aGlzLm1pbkNoYXJDbGFzcygic3ltYm9sIixiLm1pblN5bWJvbCksYi5taW5BbHBoYWJldGljYWwmJnRoaXMubWluQ2hhckNsYXNzKCJhbHBoYWJldGljYWwiLGIubWluQWxwaGFiZXRpY2FsKSxiLm1pbk51bWVyaWMmJnRoaXMubWluQ2hhckNsYXNzKCJudW1lcmljIixiLm1pbk51bWVyaWMpLGIubWluQWxwaGFudW1lcmljJiZ0aGlzLm1pbkNoYXJDbGFzcygiYWxwaGFudW1lcmljIixiLm1pbkFscGhhbnVtZXJpYyksdGhpc30sbm9uSHRtbDpmdW5jdGlvbihjKXtyZXR1cm4gYih0aGlzLGZ1bmN0aW9uKGIpe3JldHVybiBhLnZhbGlkaXR5LnBhdHRlcm5zLm5vbkh0bWwudGVzdChiLnZhbHVlKX0sY3x8YS52YWxpZGl0eS5tZXNzYWdlcy5ub25IdG1sKX0sZXF1YWw6ZnVuY3Rpb24oYixjKXt2YXIgZD0odGhpcy5yZWR1Y3Rpb258fHRoaXMpLmZpbHRlcihhLnZhbGlkaXR5LnNldHRpbmdzLmVsZW1lbnRTdXBwb3J0KSxmPWZ1bmN0aW9uKGEpe3JldHVybiBhfSxnPWEudmFsaWRpdHkubWVzc2FnZXMuZXF1YWw7aWYoZC5sZW5ndGgpe2lzRnVuY3Rpb24oYik\/KGY9Yiwic3RyaW5nIj09dHlwZW9mIGMmJihnPWMpKToic3RyaW5nIj09dHlwZW9mIGImJihnPWIpO3ZhciBoPWEubWFwKGQsZnVuY3Rpb24oYSl7cmV0dXJuIGYoYS52YWx1ZSl9KSxqPWhbMF0saz0hMDtmb3IodmFyIGwgaW4gaCloW2xdIT1qJiYoaz0hMSk7a3x8KGUoZCxnKSx0aGlzLnJlZHVjdGlvbj1hKFtdKSl9cmV0dXJuIHRoaXN9LGRpc3RpbmN0OmZ1bmN0aW9uKGIsYyl7dmFyIGQ9KHRoaXMucmVkdWN0aW9ufHx0aGlzKS5maWx0ZXIoYS52YWxpZGl0eS5zZXR0aW5ncy5lbGVtZW50U3VwcG9ydCksZj1mdW5jdGlvbihhKXtyZXR1cm4gYX0sZz1hLnZhbGlkaXR5Lm1lc3NhZ2VzLmRpc3RpbmN0LGg9W10saT0hMDtpZihkLmxlbmd0aCl7aXNGdW5jdGlvbihiKT8oZj1iLCJzdHJpbmciPT10eXBlb2YgYyYmKGc9YykpOiJzdHJpbmciPT10eXBlb2YgYiYmKGc9Yik7Zm9yKHZhciBqPWEubWFwKGQsZnVuY3Rpb24oYSl7cmV0dXJuIGYoYS52YWx1ZSl9KSxrPTA7azxqLmxlbmd0aDsrK2spaWYoaltrXS5sZW5ndGgpe2Zvcih2YXIgbD0wO2w8aC5sZW5ndGg7KytsKWhbbF09PWpba10mJihpPSExKTtoLnB1c2goaltrXSl9aXx8KGUoZCxnKSx0aGlzLnJlZHVjdGlvbj1hKFtdKSl9cmV0dXJuIHRoaXN9LHN1bTpmdW5jdGlvbihiLGMpe3ZhciBkPSh0aGlzLnJlZHVjdGlvbnx8dGhpcykuZmlsdGVyKGEudmFsaWRpdHkuc2V0dGluZ3MuZWxlbWVudFN1cHBvcnQpO3JldHVybiBkLmxlbmd0aCYmYiE9ZihkKSYmKGUoZCxjfHxnKGEudmFsaWRpdHkubWVzc2FnZXMuc3VtLHtzdW06Yn0pKSx0aGlzLnJlZHVjdGlvbj1hKFtdKSksdGhpc30sc3VtTWF4OmZ1bmN0aW9uKGIsYyl7dmFyIGQ9KHRoaXMucmVkdWN0aW9ufHx0aGlzKS5maWx0ZXIoYS52YWxpZGl0eS5zZXR0aW5ncy5lbGVtZW50U3VwcG9ydCk7cmV0dXJuIGQubGVuZ3RoJiZiPGYoZCkmJihlKGQsY3x8ZyhhLnZhbGlkaXR5Lm1lc3NhZ2VzLnN1bU1heCx7bWF4OmJ9KSksdGhpcy5yZWR1Y3Rpb249YShbXSkpLHRoaXN9LHN1bU1pbjpmdW5jdGlvbihiLGMpe3ZhciBkPSh0aGlzLnJlZHVjdGlvbnx8dGhpcykuZmlsdGVyKGEudmFsaWRpdHkuc2V0dGluZ3MuZWxlbWVudFN1cHBvcnQpO3JldHVybiBkLmxlbmd0aCYmYjxmKGQpJiYoZShkLGN8fGcoYS52YWxpZGl0eS5tZXNzYWdlcy5zdW1NaW4se21pbjpifSkpLHRoaXMucmVkdWN0aW9uPWEoW10pKSx0aGlzfSxyYWRpb0NoZWNrZWQ6ZnVuY3Rpb24oYixjKXt2YXIgZD0odGhpcy5yZWR1Y3Rpb258fHRoaXMpLmZpbHRlcihhLnZhbGlkaXR5LnNldHRpbmdzLmVsZW1lbnRTdXBwb3J0KTtkLmlzKCI6cmFkaW8iKSYmZC5maW5kKCI6Y2hlY2tlZCIpLnZhbCgpIT1iJiZlKGQsY3x8YS52YWxpZGl0eS5tZXNzYWdlcy5yYWRpb0NoZWNrZWQpfSxyYWRpb05vdENoZWNrZWQ6ZnVuY3Rpb24oYixjKXt2YXIgZD0odGhpcy5yZWR1Y3Rpb258fHRoaXMpLmZpbHRlcihhLnZhbGlkaXR5LnNldHRpbmdzLmVsZW1lbnRTdXBwb3J0KTtkLmlzKCI6cmFkaW8iKSYmZC5maWx0ZXIoIjpjaGVja2VkIikudmFsKCk9PWImJmUoZCxjfHxhLnZhbGlkaXR5Lm1lc3NhZ2VzLnJhZGlvQ2hlY2tlZCl9LGNoZWNrYm94Q2hlY2tlZDpmdW5jdGlvbihiKXt2YXIgYz0odGhpcy5yZWR1Y3Rpb258fHRoaXMpLmZpbHRlcihhLnZhbGlkaXR5LnNldHRpbmdzLmVsZW1lbnRTdXBwb3J0KTtjLmlzKCI6Y2hlY2tib3giKSYmIWMuaXMoIjpjaGVja2VkIikmJihlKGMsYnx8YS52YWxpZGl0eS5tZXNzYWdlcy5yYWRpb0NoZWNrZWQpLGMucGFyZW50KCkuYWRkQ2xhc3MoInZhbGlkaXR5LWVycm9uZW91cyIpKX0sYXNzZXJ0OmZ1bmN0aW9uKGMsZCl7dmFyIGY9dGhpcy5yZWR1Y3Rpb258fHRoaXM7aWYoZi5sZW5ndGgpe2lmKGlzRnVuY3Rpb24oYykpcmV0dXJuIGIodGhpcyxjLGR8fGEudmFsaWRpdHkubWVzc2FnZXMuZ2VuZXJpYyk7Y3x8KGUoZixkfHxhLnZhbGlkaXR5Lm1lc3NhZ2VzLmdlbmVyaWMpLHRoaXMucmVkdWN0aW9uPWEoW10pKX1yZXR1cm4gdGhpc319KSxhLmZuLmV4dGVuZCh7dmFsaWRBbGxvck5vbmU6ZnVuY3Rpb24oKXt2YXIgYj0odGhpcy5yZWR1Y3Rpb258fHRoaXMpLmZpbHRlcihhLnZhbGlkaXR5LnNldHRpbmdzLmVsZW1lbnRTdXBwb3J0KSxjPSEwO3JldHVybiBiLmVhY2goZnVuY3Rpb24oKXtpZigiIiE9YSh0aGlzKS52YWwoKSlyZXR1cm4gYi5lYWNoKGZ1bmN0aW9uKCl7IiI9PWEodGhpcykudmFsKCkmJihjPSExLGQodGhpcyxnKCIiLHtmaWVsZDpoKHRoaXMpfSkpKX0pLCExfSksdGhpc30scmVxdWlyZVdpdGhXYXRlcm1hcms6ZnVuY3Rpb24oYyl7cmV0dXJuIGIodGhpcyxmdW5jdGlvbihiKXt2YXIgYz1mdW5jdGlvbihhKXtyZXR1cm4gMDxhLnRyaW0oKS5sZW5ndGh9LGQ9YShiKS5hdHRyKCJhbHQiKSxlPWEoYikudmFsKCkudHJpbSgpO3JldHVybiBkP2QhPWUmJmMoZSk6YyhlKX0sY3x8YS52YWxpZGl0eS5tZXNzYWdlcy5yZXF1aXJlKX0scmVxdWlyZVBvc3RhbENvZGU6ZnVuY3Rpb24oYyl7cmV0dXJuIGIodGhpcyxmdW5jdGlvbihiKXt2YXIgYz1hKGIpLnZhbCgpLnJlcGxhY2UoL1xzL2csIiIpLnJlcGxhY2UoL1teQS16MC05XS9nLCIwIikudG9VcHBlckNhc2UoKTtpZigwPT1jLmxlbmd0aClyZXR1cm4hMDtpZig1PmMubGVuZ3RoKXJldHVybiExO2lmKFppcFJlZ2V4PWEudmFsaWRpdHkucGF0dGVybnMuemlwLG51bGwhPWMubWF0Y2goWmlwUmVnZXgpKXJldHVybiEwO3JldHVybiBDYW5hZGFQb3N0UmVnZXg9L1tBQkNFR0hKS0xNTlBSU1RWV1hZWl1bMC05XVtBQkNFR0hKS0xNTlBSU1RWV1hZWl1bMC05XVtBQkNFR0hKS0xNTlBSU1RWV1hZWl1bMC05XS8sbnVsbCE9Yy5tYXRjaChDYW5hZGFQb3N0UmVnZXgpJiYoYShiKS52YWwoYy5zdWJzdHJpbmcoMCwzKSsiICIrYy5zdWJzdHJpbmcoMyw2KSksITApfSxjfHxhLnZhbGlkaXR5Lm1lc3NhZ2VzLnJlcXVpcmUpfSx2YWxpZEVtYWlsQWRkcmVzczpmdW5jdGlvbihjKXt2YXIgZD10aGlzLGU9WyIuY29tIiwiLmNhIiwiLm5ldCIsIi5iaXoiLCIucXVlYmVjIiwiLmNvIiwiLmluZm8iLCIubW9iaSIsIi5vcmciLCIuaW5jIl07MT09YSgiI0FETUlOX0dFTkVSQUxfQkxPQ0tfRlJfRE9NQUlOX0NIRUNLIikubGVuZ3RoJiYiMSIhPWEoIiNBRE1JTl9HRU5FUkFMX0JMT0NLX0ZSX0RPTUFJTl9DSEVDSyIpLnZhbCgpJiZlLnB1c2goIi5mciIpO3ZhciBmPWIodGhpcyxmdW5jdGlvbihiKXtyZXR1cm4gcnVsZT1hLnZhbGlkaXR5LnBhdHRlcm5zLmVtYWlsLHJ1bGUuZ2xvYmFsJiYocnVsZS5sYXN0SW5kZXg9MCksIWIudmFsdWUubGVuZ3RofHxydWxlLnRlc3QoYi52YWx1ZSl9LCIiKTtyZXR1cm4gZj9iKHRoaXMsZnVuY3Rpb24oYil7dmFyIGM9YShiKS52YWwoKS50b0xvd2VyQ2FzZSgpLGQ9ITE7aWYoIWMubGVuZ3RoKXJldHVybiEwO1N0cmluZy5wcm90b3R5cGUuZW5kc1dpdGh8fChTdHJpbmcucHJvdG90eXBlLmVuZHNXaXRoPWZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMubGVuZ3RoLWEubGVuZ3RoO3JldHVybiAwPD1iJiZ0aGlzLmxhc3RJbmRleE9mKGEpPT09Yn0pO2Zvcih2YXIgZj0wO2Y8ZS5sZW5ndGg7ZisrKWMudG9Mb3dlckNhc2UoKS5lbmRzV2l0aChlW2ZdKSYmKGQ9ITApO2lmKCExPT1kKXJldHVybiExO2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgZW1haWxIYW5kbGVyKXt2YXIgZz0hMDtyZXR1cm4gZW1haWxIYW5kbGVyLnZhbGlkYXRlRW1haWwoYykuZG9uZShmdW5jdGlvbihhKXsiaW52YWxpZCI9PT1hLnN0YXR1cyYmKGc9ITEpfSksZ31yZXR1cm4hMH0sY3x8YS52YWxpZGl0eS5tZXNzYWdlcy5lbWFpbCk6Y3x8YS52YWxpZGl0eS5tZXNzYWdlcy5lbWFpbH0scmFkaW9PcHRpb25DaG9zZW46ZnVuY3Rpb24oYil7dmFyIGM9KHRoaXMucmVkdWN0aW9ufHx0aGlzKS5maWx0ZXIoYS52YWxpZGl0eS5zZXR0aW5ncy5lbGVtZW50U3VwcG9ydCksZD17fTtmb3IodmFyIGYgaW4gYy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGI9YSh0aGlzKS5hdHRyKCJuYW1lIik7InVuZGVmaW5lZCI9PXR5cGVvZiBkW2JdJiYoZFtiXT1bXSksZFtiXS5wdXNoKHRoaXMpfSksZCkwPT1hKGRbZl0pLmZpbHRlcigiOnJhZGlvIikuZmlsdGVyKCI6Y2hlY2tlZCIpLmxlbmd0aCYmZShhKGRbZl0pLGJ8fGEudmFsaWRpdHkubWVzc2FnZXMucmFkaW9DaGVja2VkKX0sb25lT3JNb3JlQ2hlY2tlZDpmdW5jdGlvbihiKXt2YXIgYz0odGhpcy5yZWR1Y3Rpb258fHRoaXMpLmZpbHRlcihhLnZhbGlkaXR5LnNldHRpbmdzLmVsZW1lbnRTdXBwb3J0KTtjLmVhY2goZnVuY3Rpb24oKXt2YXIgZD1jLmZpbHRlcihmdW5jdGlvbigpe3JldHVybiEhYSh0aGlzKS5pcygiW3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQiKX0pLmxlbmd0aDswPT1kJiYoYy5wYXJlbnRzKCJ1bCIpLmZpcnN0KCkuYWRkQ2xhc3MoInZhbGlkaXR5LWVycm9uZW91cyIpLGUoYyxifHxhLnZhbGlkaXR5Lm1lc3NhZ2VzLnJhZGlvQ2hlY2tlZCkpfSl9LHZhbGlkYXRlTW9iaWxlOmZ1bmN0aW9uKGMpe2Zvcih2YXIgZD0odGhpcy5yZWR1Y3Rpb258fHRoaXMpLmZpbHRlcihhLnZhbGlkaXR5LnNldHRpbmdzLmVsZW1lbnRTdXBwb3J0KSxlPSEwLGY9IiIsZz1hKGQpLmxlbmd0aCxoPVs0MzgsNTE0LDI2Myw0NTAsNTc5LDgxOSwyNDksNzA1LDIyNiw1MTksMjg5LDM2NSw5MDUsNDE2LDQzNyw2NDcsMzQzLDYxMyw3MDksODczLDQxOCw1ODEsNTA2LDkwMl0saj0wO2o8PWc7aisrKWlmKGo8ZylmKz1hKGEoZClbal0pLnZhbCgpO2Vsc2V7aWYoZj1mLnJlcGxhY2UoL1teMC05XSsvZ2ksIiIpLDA9PT1mLmxlbmd0aClyZXR1cm4gYihkLCgpPT4hMCxjfHxhLnZhbGlkaXR5Lm1lc3NhZ2VzLnBob25lKTsiMSI9PWZbMF0mJihmPWYuc3Vic3RyaW5nKDEpKTt2YXIgaz1wYXJzZUludChmLnN1YnN0cmluZygwLDMpKTthLmFqYXgoe3VybDoiaHR0cHM6Ly9yZXN0LmQyY21lZGlhLmNhL3NpdGVzL3N2Yy92YWxpZGF0ZVBob25lTnVtYmVyLnBocCIsdHlwZToiR0VUIixhc3luYzohMSx0aW1lb3V0OjJlMyxkYXRhVHlwZToianNvbiIsZGF0YTp7cGhvbmU6Zixtb2JpbGU6MSxhcmVhY29kZToiQ0EifX0pLmRvbmUoZnVuY3Rpb24oZil7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBmLmlzT2spITE9PT1mLnBob25lTnVtYmVySXNWYWxpZCYmKGU9ITEpO2Vsc2UgaWYoInVuZGVmaW5lZCIhPXR5cGVvZiBoLmluZGV4T2YmJi0xPT1oLmluZGV4T2YoaykpcmV0dXJuITE7cmV0dXJuIGIoZCxmdW5jdGlvbigpe3JldHVybiBlfSxjfHxhLnZhbGlkaXR5Lm1lc3NhZ2VzLnBob25lKX0pLmZhaWwoZnVuY3Rpb24oKXtyZXR1cm4idW5kZWZpbmVkIiE9dHlwZW9mIGguaW5kZXhPZiYmLTE9PWguaW5kZXhPZihrKSYmKGU9ITEpLGIoZCxmdW5jdGlvbigpe3JldHVybiBlfSxjfHxhLnZhbGlkaXR5Lm1lc3NhZ2VzLnBob25lKX0pfX0sdmFsaWRhdGVQaG9uZTpmdW5jdGlvbihjKXtmb3IodmFyIGQ9KHRoaXMucmVkdWN0aW9ufHx0aGlzKS5maWx0ZXIoYS52YWxpZGl0eS5zZXR0aW5ncy5lbGVtZW50U3VwcG9ydCksZT0hMCxmPSIiLGc9YShkKS5sZW5ndGgsaD1bNDM4LDUxNCwyNjMsNDUwLDU3OSw4MTksMjQ5LDcwNSwyMjYsNTE5LDI4OSwzNjUsOTA1LDQxNiw0MzcsNjQ3LDM0Myw2MTMsNzA5LDg3Myw0MTgsNTgxLDUwNiw5MDJdLGo9MDtqPD1nO2orKylpZihqPGcpZis9YShhKGQpW2pdKS52YWwoKTtlbHNle2lmKGY9Zi5yZXBsYWNlKC9bXjAtOV0rL2dpLCIiKSwidW5kZWZpbmVkIiE9dHlwZW9mIGVtYWlsSGFuZGxlciYmdGhpcy5oYXNDbGFzcygicmVxdWlyZWQiKSYmKGVtYWlsSGFuZGxlci5waG9uZU1hbmRhdG9yeT0hMCksMD09PWYubGVuZ3RoKXJldHVybiBiKGQsKCk9PiEwLGN8fGEudmFsaWRpdHkubWVzc2FnZXMucGhvbmUpOyIxIj09ZlswXSYmKGY9Zi5zdWJzdHJpbmcoMSkpO3ZhciBrPXBhcnNlSW50KGYuc3Vic3RyaW5nKDAsMykpO2EuYWpheCh7dXJsOiJodHRwczovL3Jlc3QuZDJjbWVkaWEuY2Evc2l0ZXMvc3ZjL3ZhbGlkYXRlUGhvbmVOdW1iZXIucGhwIix0eXBlOiJHRVQiLGFzeW5jOiExLHRpbWVvdXQ6MmUzLGRhdGFUeXBlOiJqc29uIixkYXRhOntwaG9uZTpmLGFyZWFjb2RlOiJDQSJ9fSkuZG9uZShmdW5jdGlvbihmKXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIGYuaXNPaykhMT09PWYucGhvbmVOdW1iZXJJc1ZhbGlkJiYoInVuZGVmaW5lZCIhPXR5cGVvZiBlbWFpbEhhbmRsZXImJmVtYWlsSGFuZGxlci5waG9uZU1hbmRhdG9yeSYmZW1haWxIYW5kbGVyLnBob25lVmFsaWRhdGlvbkF0dGVtcHRzKyssZT0hMSk7ZWxzZSBpZigidW5kZWZpbmVkIiE9dHlwZW9mIGguaW5kZXhPZiYmLTE9PWguaW5kZXhPZihrKSlyZXR1cm4hMTtyZXR1cm4gYihkLGZ1bmN0aW9uKCl7cmV0dXJuIGV9LGN8fGEudmFsaWRpdHkubWVzc2FnZXMucGhvbmUpfSkuZmFpbChmdW5jdGlvbigpe3JldHVybiJ1bmRlZmluZWQiIT10eXBlb2YgaC5pbmRleE9mJiYtMT09aC5pbmRleE9mKGspJiYoInVuZGVmaW5lZCIhPXR5cGVvZiBlbWFpbEhhbmRsZXImJmVtYWlsSGFuZGxlci5waG9uZU1hbmRhdG9yeSYmZW1haWxIYW5kbGVyLnBob25lVmFsaWRhdGlvbkF0dGVtcHRzKyssZT0hMSksYihkLGZ1bmN0aW9uKCl7cmV0dXJuIGV9LGN8fGEudmFsaWRpdHkubWVzc2FnZXMucGhvbmUpfSl9fX0pfSkoalF1ZXJ5KSxmdW5jdGlvbihhKXtmdW5jdGlvbiBiKGEpe3JldHVybiBhLmF0dHIoImlkIikubGVuZ3RoP2EuYXR0cigiaWQiKTphLmF0dHIoIm5hbWUiKX1hLnZhbGlkaXR5Lm91dHB1dHMubGFiZWw9e3N0YXJ0OmZ1bmN0aW9uKCl7YSgibGFiZWwuIithLnZhbGlkaXR5LnNldHRpbmdzLmNzc0NsYXNzKS5yZW1vdmUoKX0sZW5kOmZ1bmN0aW9uKGIpeyFiLnZhbGlkJiZhLnZhbGlkaXR5LnNldHRpbmdzLnNjcm9sbFRvJiYobG9jYXRpb24uaGFzaD1hKCJsYWJlbC4iK2EudmFsaWRpdHkuc2V0dGluZ3MuY3NzQ2xhc3MrIjplcSgwKSIpLmF0dHIoImZvciIpKX0scmFpc2U6ZnVuY3Rpb24oYyxkKXt2YXIgZT0ibGFiZWwuIithLnZhbGlkaXR5LnNldHRpbmdzLmNzc0NsYXNzKyJbZm9yPSciK2IoYykrIiddIjthKGUpLmxlbmd0aD9hKGUpLnRleHQoZCk6YSgiPGxhYmVsLz4iKS5hdHRyKCJmb3IiLGIoYykpLmFkZENsYXNzKGEudmFsaWRpdHkuc2V0dGluZ3MuY3NzQ2xhc3MpLnRleHQoZCkub24oImNsaWNrIixmdW5jdGlvbigpe2MubGVuZ3RoJiZjWzBdLnNlbGVjdCgpfSkuaW5zZXJ0QWZ0ZXIoYyl9LHJhaXNlQWdncmVnYXRlOmZ1bmN0aW9uKGIsYyl7Yi5sZW5ndGgmJnRoaXMucmFpc2UoYShiLmdldChiLmxlbmd0aC0xKSksYyl9fX0oalF1ZXJ5KSxmdW5jdGlvbihhKXthLnZhbGlkaXR5Lm91dHB1dHMubW9kYWw9e3N0YXJ0OmZ1bmN0aW9uKCl7YSgiLnZhbGlkaXR5LW1vZGFsLW1zZyIpLnJlbW92ZSgpfSxlbmQ6ZnVuY3Rpb24oYil7IWIudmFsaWQmJmEudmFsaWRpdHkuc2V0dGluZ3Muc2Nyb2xsVG8mJihsb2NhdGlvbi5oYXNoPWEoIi52YWxpZGl0eS1tb2RhbC1tc2c6ZXEoMCkiKS5hdHRyKCJpZCIpKX0scmFpc2U6ZnVuY3Rpb24oYixjKXtpZihiLmxlbmd0aCl7dmFyIGQ9Yi5vZmZzZXQoKSxlPWIuZ2V0KDApLGY9e2xlZnQ6cGFyc2VJbnQoZC5sZWZ0K2Iud2lkdGgoKSs0LDEwKSsicHgiLHRvcDpwYXJzZUludChkLnRvcC0xMCwxMCkrInB4In07YSgiPGRpdi8+IikuYWRkQ2xhc3MoInZhbGlkaXR5LW1vZGFsLW1zZyIpLmNzcyhmKS50ZXh0KGMpLm9uKCJjbGljayIsYS52YWxpZGl0eS5zZXR0aW5ncy5tb2RhbEVycm9yc0NsaWNrYWJsZT9mdW5jdGlvbigpe2EodGhpcykucmVtb3ZlKCl9Om51bGwpLmFwcGVuZFRvKCJib2R5Iil9fSxyYWlzZUFnZ3JlZ2F0ZTpmdW5jdGlvbihiLGMpe2IubGVuZ3RoJiZ0aGlzLnJhaXNlKGEoYi5nZXQoYi5sZW5ndGgtMSkpLGMpfX19KGpRdWVyeSksZnVuY3Rpb24oYSl7dmFyIGI9W107YS52YWxpZGl0eS5vdXRwdXRzLnN1bW1hcnk9e3N0YXJ0OmZ1bmN0aW9uKCl7YSgiLnZhbGlkaXR5LWVycm9uZW91cyIpLnJlbW92ZUNsYXNzKCJ2YWxpZGl0eS1lcnJvbmVvdXMiKSxiPVtdfSxlbmQ6ZnVuY3Rpb24oKXtpZihhKCIudmFsaWRpdHktc3VtbWFyeS1jb250YWluZXIiKS5oaWRlKCkuZmluZCgidWwiKS5odG1sKCIiKSxiLmxlbmd0aCl7Zm9yKHZhciBjPTA7YzxiLmxlbmd0aDsrK2MpYSgiPGxpLz4iKS50ZXh0KGJbY10pLmFwcGVuZFRvKCIudmFsaWRpdHktc3VtbWFyeS1jb250YWluZXIgdWwiKTthKCIudmFsaWRpdHktc3VtbWFyeS1jb250YWluZXIiKS5zaG93KCksYS52YWxpZGl0eS5zZXR0aW5ncy5zY3JvbGxUbyYmKGxvY2F0aW9uLmhhc2g9YSgiLnZhbGlkaXR5LWVycm9uZW91czplcSgwKSIpLmF0dHIoImlkIikpfX0scmFpc2U6ZnVuY3Rpb24oYSxjKXtiLnB1c2goYyk7dmFyIGQ9YS5jbG9zZXN0KCJmb3JtIikuaGFzQ2xhc3MoImpxdHJhbnNmb3JtZG9uZSIpO2EucGFyZW50KCkuaXMoImRpdiIpJiZkPyhhLnBhcmVudCgpLmFkZENsYXNzKCJ2YWxpZGl0eS1lcnJvbmVvdXMiKSxhLnBhcmVudCgpLnBhcmVudCgpLmFkZENsYXNzKCJ2YWxpZGl0eS1lcnJvbmVvdXMiKSk6YS5hZGRDbGFzcygidmFsaWRpdHktZXJyb25lb3VzIil9LHJhaXNlQWdncmVnYXRlOmZ1bmN0aW9uKGEsYil7dGhpcy5yYWlzZShhLGIpfSxjb250YWluZXI6ZnVuY3Rpb24oKXtkb2N1bWVudC53cml0ZSgiPGRpdiBjbGFzcz1cInZhbGlkaXR5LXN1bW1hcnktY29udGFpbmVyXCI+VGhlIGZvcm0gZGlkbid0IHN1Ym1pdCBmb3IgdGhlIGZvbGxvd2luZyByZWFzb24ocyk6PHVsPjwvdWw+PC9kaXY+Iil9fX0oalF1ZXJ5KSxmdW5jdGlvbigpe3ZhciBhPWZ1bmN0aW9uKCl7JCh0aGlzKS5yZW1vdmVDbGFzcygidmFsaWRpdHktZXJyb25lb3VzIil9OyQudmFsaWRpdHkub3V0cHV0cy5xdWlja21haWw9e3N0YXJ0OmZ1bmN0aW9uKCl7fSxlbmQ6ZnVuY3Rpb24oKXt9LHJhaXNlOmZ1bmN0aW9uKGEpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgYS5XYXRlcm1hcmsmJiJ1bmRlZmluZWQiIT1hLmF0dHIoImFsdCIpKXthLldhdGVybWFyayhhLmF0dHIoImFsdCIpLCIjRkZCQUJBIik7dmFyIGI9ZnVuY3Rpb24oKXthLldhdGVybWFyayhhLmF0dHIoImFsdCIpKX19ZWxzZXthLmNzcygiYmFja2dyb3VuZC1jb2xvciIsIiNmZjdlNzkiKTt2YXIgYj1mdW5jdGlvbigpe3RtcD10bXA\/dG1wOiJ0cmFuc3BhcmVudCIsYS5jc3MoImJhY2tncm91bmQtY29sb3IiLHRtcCl9fSQoZG9jdW1lbnQpLm9uKCJtb3VzZWRvd24iLGIpfSxjb250YWluZXI6ZnVuY3Rpb24oKXt9fSwkLnZhbGlkaXR5Lm91dHB1dHMucG9wdXA9e3N0YXJ0OmZ1bmN0aW9uKCl7JChkb2N1bWVudCkub2ZmKCJ0b3VjaHN0YXJ0IG1vdXNlZG93biIsIi52YWxpZGl0eS1lcnJvbmVvdXMiLGEpfSxlbmQ6ZnVuY3Rpb24oYil7cmV0dXJuIGIudmFsaWR8fCQoZG9jdW1lbnQpLm9uKCJ0b3VjaHN0YXJ0IG1vdXNlZG93biIsIi52YWxpZGl0eS1lcnJvbmVvdXMiLGEpLGJ9LHJhaXNlOmZ1bmN0aW9uKGEpe3ZhciBiPWEuY2xvc2VzdCgiZm9ybSIpLmhhc0NsYXNzKCJqcXRyYW5zZm9ybWRvbmUiKTthLnBhcmVudCgpLmlzKCJkaXYiKSYmYj8oYS5wYXJlbnQoKS5hZGRDbGFzcygidmFsaWRpdHktZXJyb25lb3VzIiksYS5wYXJlbnQoKS5wYXJlbnQoKS5hZGRDbGFzcygidmFsaWRpdHktZXJyb25lb3VzIikpOmEuYWRkQ2xhc3MoInZhbGlkaXR5LWVycm9uZW91cyIpfSxyYWlzZUFnZ3JlZ2F0ZTpmdW5jdGlvbihhKXtjb25zb2xlLmxvZyhhKSxhLmlzKCI6cmFkaW8iKSYmYS5pcygiLmpxVHJhbnNmb3JtSGlkZGVuIikmJmEucGFyZW50KCkucGFyZW50KCkuYWRkQ2xhc3MoInZhbGlkaXR5LWVycm9uZW91cyIpfX19KCksZnVuY3Rpb24oYSl7YS52YWxpZGl0eS5vdXRwdXRzLmNzc09ubHk9e3N0YXJ0OmZ1bmN0aW9uKCl7YShhLnZhbGlkaXR5LnNldHRpbmdzLmNzc0NsYXNzKS5yZW1vdmVDbGFzcyhhLnZhbGlkaXR5LnNldHRpbmdzLmNzc0NsYXNzKX0sZW5kOmZ1bmN0aW9uKGIpeyFiLnZhbGlkJiZhLnZhbGlkaXR5LnNldHRpbmdzLnNjcm9sbFRvJiYobG9jYXRpb24uaGFzaD1hKGEudmFsaWRpdHkuc2V0dGluZ3MuY3NzQ2xhc3MrIjplcSgwKSIpLmF0dHIoImlkIikpfSxyYWlzZTpmdW5jdGlvbihiKXthKGIpLmFkZENsYXNzKGEudmFsaWRpdHkuc2V0dGluZ3MuY3NzQ2xhc3MpfSxyYWlzZUFnZ3JlZ2F0ZTpmdW5jdGlvbihiLGMpe2IubGVuZ3RoJiZ0aGlzLnJhaXNlKGEoYi5nZXQoYi5sZW5ndGgtMSkpLGMpfX19KGpRdWVyeSk7Ci8qKiAvbS9qcy9tYWluLmpzICoqLwp2YXIgX19fZDJjX21haW5qc19jX29uPSIyMDI2LTA3LTExIDA1OjMwOjEyIjsndXNlIHN0cmljdCc7dmFyIF9fX2QyY19tYWluanNfY19vbj0iMjAyNi0wNy0xMSAwNDozMDoxMiI7InVzZSBzdHJpY3QiO19fX2QyY19tYWluanNfY19vbj0iMjAyNi0wNy0xMSAwMzozMDoxMiI7InVzZSBzdHJpY3QiO19fX2QyY19tYWluanNfY19vbj0iMjAyNi0wNy0xMSAwMjozMDoxMiI7InVzZSBzdHJpY3QiO19fX2QyY19tYWluanNfY19vbj0iMjAyNi0wNy0xMSAwMTozMDoxMiI7InVzZSBzdHJpY3QiO19fX2QyY19tYWluanNfY19vbj0iMjAyNi0wNy0xMSAwMDozMDoxMiI7InVzZSBzdHJpY3QiO19fX2QyY19tYWluanNfY19vbj0iMjAyNi0wNy0xMCAyMzozMDoxMyI7InVzZSBzdHJpY3QiO19fX2QyY19tYWluanNfY19vbj0iMjAyNi0wNy0xMCAyMjozMDoxMiI7InVzZSBzdHJpY3QiO19fX2QyY19tYWluanNfY19vbj0iMjAyNi0wNy0xMCAyMTozMDoxMiI7InVzZSBzdHJpY3QiO19fX2QyY19tYWluanNfY19vbj0iMjAyNi0wNy0xMCAyMDozMDoxMiI7InVzZSBzdHJpY3QiOwpfX19kMmNfbWFpbmpzX2Nfb249IjIwMjYtMDctMTAgMTk6MzA6MTMiOyJ1c2Ugc3RyaWN0IjtfX19kMmNfbWFpbmpzX2Nfb249IjIwMjYtMDctMTAgMTg6MzA6MTMiOyJ1c2Ugc3RyaWN0IjtfX19kMmNfbWFpbmpzX2Nfb249IjIwMjYtMDctMTAgMTc6MzA6MTYiOyJ1c2Ugc3RyaWN0IjtfX19kMmNfbWFpbmpzX2Nfb249IjIwMjYtMDctMTAgMTY6MzA6MTUiOyJ1c2Ugc3RyaWN0IjtfX19kMmNfbWFpbmpzX2Nfb249IjIwMjYtMDctMTAgMTU6MzA6MTYiOyJ1c2Ugc3RyaWN0IjtfX19kMmNfbWFpbmpzX2Nfb249IjIwMjYtMDctMTAgMTQ6MzA6MTYiOyJ1c2Ugc3RyaWN0IjtfX19kMmNfbWFpbmpzX2Nfb249IjIwMjYtMDctMTAgMTM6MzA6MTYiOyJ1c2Ugc3RyaWN0IjtfX19kMmNfbWFpbmpzX2Nfb249IjIwMjYtMDctMTAgMTI6MzA6MTciOyJ1c2Ugc3RyaWN0IjtfX19kMmNfbWFpbmpzX2Nfb249IjIwMjYtMDctMTAgMTE6MzA6MTYiOyJ1c2Ugc3RyaWN0IjsKX19fZDJjX21haW5qc19jX29uPSIyMDI2LTA3LTEwIDEwOjMwOjE2IjsidXNlIHN0cmljdCI7X19fZDJjX21haW5qc19jX29uPSIyMDI2LTA3LTEwIDA5OjMwOjE2IjsidXNlIHN0cmljdCI7X19fZDJjX21haW5qc19jX29uPSIyMDI2LTA3LTEwIDA4OjMwOjE1IjsidXNlIHN0cmljdCI7X19fZDJjX21haW5qc19jX29uPSIyMDI2LTA3LTEwIDA3OjMwOjEzIjsidXNlIHN0cmljdCI7X19fZDJjX21haW5qc19jX29uPSIyMDI2LTA3LTEwIDA2OjMwOjEyIjsidXNlIHN0cmljdCI7X19fZDJjX21haW5qc19jX29uPSIyMDI2LTA3LTEwIDA1OjMwOjEzIjsidXNlIHN0cmljdCI7X19fZDJjX21haW5qc19jX29uPSIyMDI2LTA3LTEwIDA0OjMwOjEyIjsidXNlIHN0cmljdCI7X19fZDJjX21haW5qc19jX29uPSIyMDI2LTA3LTEwIDAzOjMwOjEzIjsidXNlIHN0cmljdCI7X19fZDJjX21haW5qc19jX29uPSIyMDI2LTA3LTEwIDAyOjMwOjEzIjsidXNlIHN0cmljdCI7Cl9fX2QyY19tYWluanNfY19vbj0iMjAyNi0wNy0xMCAwMTozMDoxMiI7InVzZSBzdHJpY3QiO19fX2QyY19tYWluanNfY19vbj0iMjAyNi0wNy0xMCAwMDozMDoxMiI7InVzZSBzdHJpY3QiO19fX2QyY19tYWluanNfY19vbj0iMjAyNi0wNy0wOSAyMzozMDoxMyI7InVzZSBzdHJpY3QiO19fX2QyY19tYWluanNfY19vbj0iMjAyNi0wNy0wOSAyMjozMDoxMyI7InVzZSBzdHJpY3QiO19fX2QyY19tYWluanNfY19vbj0iMjAyNi0wNy0wOSAyMTozMDoxMiI7InVzZSBzdHJpY3QiO19fX2QyY19tYWluanNfY19vbj0iMjAyNi0wNy0wOSAyMDozMDoxMyI7InVzZSBzdHJpY3QiO19fX2QyY19tYWluanNfY19vbj0iMjAyNi0wNy0wOSAxOTozMDoxMiI7InVzZSBzdHJpY3QiO19fX2QyY19tYWluanNfY19vbj0iMjAyNi0wNy0wOSAxODozMDoxMyI7InVzZSBzdHJpY3QiO19fX2QyY19tYWluanNfY19vbj0iMjAyNi0wNy0wOSAxNzozMDoxNSI7InVzZSBzdHJpY3QiOwpfX19kMmNfbWFpbmpzX2Nfb249IjIwMjYtMDctMDkgMTY6MzA6MTYiOyJ1c2Ugc3RyaWN0IjtfX19kMmNfbWFpbmpzX2Nfb249IjIwMjYtMDctMDkgMTU6MzA6MTciOyJ1c2Ugc3RyaWN0IjtfX19kMmNfbWFpbmpzX2Nfb249IjIwMjYtMDctMDkgMTQ6MzA6MTYiOyJ1c2Ugc3RyaWN0IjtfX19kMmNfbWFpbmpzX2Nfb249IjIwMjYtMDctMDkgMTM6MzA6MTQiOyJ1c2Ugc3RyaWN0IjtfX19kMmNfbWFpbmpzX2Nfb249IjIwMjYtMDctMDkgMTI6MzA6MTYiOyJ1c2Ugc3RyaWN0IjtfX19kMmNfbWFpbmpzX2Nfb249IjIwMjYtMDctMDkgMTE6MzA6MTgiOyJ1c2Ugc3RyaWN0IjtfX19kMmNfbWFpbmpzX2Nfb249IjIwMjYtMDctMDkgMTA6MzA6MTYiOyJ1c2Ugc3RyaWN0IjtfX19kMmNfbWFpbmpzX2Nfb249IjIwMjYtMDctMDkgMDk6MzA6MTciOyJ1c2Ugc3RyaWN0IjtfX19kMmNfbWFpbmpzX2Nfb249IjIwMjYtMDctMDkgMDg6MzA6MTYiOyJ1c2Ugc3RyaWN0IjsKX19fZDJjX21haW5qc19jX29uPSIyMDI2LTA3LTA5IDA3OjMwOjEzIjsidXNlIHN0cmljdCI7X19fZDJjX21haW5qc19jX29uPSIyMDI2LTA3LTA5IDA2OjMwOjEyIjsidXNlIHN0cmljdCI7X19fZDJjX21haW5qc19jX29uPSIyMDI2LTA3LTA5IDA1OjMwOjEyIjsidXNlIHN0cmljdCI7X19fZDJjX21haW5qc19jX29uPSIyMDI2LTA3LTA5IDA0OjMwOjEzIjsidXNlIHN0cmljdCI7X19fZDJjX21haW5qc19jX29uPSIyMDI2LTA3LTA5IDAzOjMwOjEzIjsidXNlIHN0cmljdCI7X19fZDJjX21haW5qc19jX29uPSIyMDI2LTA3LTA5IDAyOjMwOjEyIjsidXNlIHN0cmljdCI7X19fZDJjX21haW5qc19jX29uPSIyMDI2LTA3LTA5IDAxOjMwOjEzIjsidXNlIHN0cmljdCI7X19fZDJjX21haW5qc19jX29uPSIyMDI2LTA3LTA5IDAwOjMwOjEzIjsidXNlIHN0cmljdCI7X19fZDJjX21haW5qc19jX29uPSIyMDI2LTA3LTA4IDIzOjMwOjEyIjsidXNlIHN0cmljdCI7Cl9fX2QyY19tYWluanNfY19vbj0iMjAyNi0wNy0wOCAyMjozMDoxMiI7InVzZSBzdHJpY3QiO19fX2QyY19tYWluanNfY19vbj0iMjAyNi0wNy0wOCAyMTozMDoxMiI7InVzZSBzdHJpY3QiO19fX2QyY19tYWluanNfY19vbj0iMjAyNi0wNy0wOCAyMDozMDoxMiI7InVzZSBzdHJpY3QiO19fX2QyY19tYWluanNfY19vbj0iMjAyNi0wNy0wOCAxOTozMDoxMyI7InVzZSBzdHJpY3QiO19fX2QyY19tYWluanNfY19vbj0iMjAyNi0wNy0wOCAxODozMDoxMyI7InVzZSBzdHJpY3QiO19fX2QyY19tYWluanNfY19vbj0iMjAyNi0wNy0wOCAxNzozMDoxNSI7InVzZSBzdHJpY3QiO19fX2QyY19tYWluanNfY19vbj0iMjAyNi0wNy0wOCAxNjozMDoxNSI7InVzZSBzdHJpY3QiO19fX2QyY19tYWluanNfY19vbj0iMjAyNi0wNy0wOCAxNTozMDoxOCI7InVzZSBzdHJpY3QiO19fX2QyY19tYWluanNfY19vbj0iMjAyNi0wNy0wOCAxNDozMDoxNiI7InVzZSBzdHJpY3QiOwpfX19kMmNfbWFpbmpzX2Nfb249IjIwMjYtMDctMDggMTM6MzA6MTciOyJ1c2Ugc3RyaWN0IjtfX19kMmNfbWFpbmpzX2Nfb249IjIwMjYtMDctMDggMTI6MzA6MTYiOyJ1c2Ugc3RyaWN0IjtfX19kMmNfbWFpbmpzX2Nfb249IjIwMjYtMDctMDggMTE6MzA6MTciOyJ1c2Ugc3RyaWN0IjtfX19kMmNfbWFpbmpzX2Nfb249IjIwMjYtMDctMDggMTA6MzA6MTciOyJ1c2Ugc3RyaWN0IjtfX19kMmNfbWFpbmpzX2Nfb249IjIwMjYtMDctMDggMDk6MzA6MTciOyJ1c2Ugc3RyaWN0IjtfX19kMmNfbWFpbmpzX2Nfb249IjIwMjYtMDctMDggMDg6MzA6MTUiOyJ1c2Ugc3RyaWN0IjtfX19kMmNfbWFpbmpzX2Nfb249IjIwMjYtMDctMDggMDc6MzA6MTIiOyJ1c2Ugc3RyaWN0IjtfX19kMmNfbWFpbmpzX2Nfb249IjIwMjYtMDctMDggMDY6MzA6MTIiOyJ1c2Ugc3RyaWN0IjtfX19kMmNfbWFpbmpzX2Nfb249IjIwMjYtMDctMDggMDU6MzA6MTMiOyJ1c2Ugc3RyaWN0IjsKX19fZDJjX21haW5qc19jX29uPSIyMDI2LTA3LTA4IDA0OjMwOjEzIjsidXNlIHN0cmljdCI7X19fZDJjX21haW5qc19jX29uPSIyMDI2LTA3LTA4IDAzOjMwOjEzIjsidXNlIHN0cmljdCI7X19fZDJjX21haW5qc19jX29uPSIyMDI2LTA3LTA4IDAyOjMwOjEzIjsidXNlIHN0cmljdCI7X19fZDJjX21haW5qc19jX29uPSIyMDI2LTA3LTA4IDAxOjMwOjEyIjsidXNlIHN0cmljdCI7X19fZDJjX21haW5qc19jX29uPSIyMDI2LTA3LTA4IDAwOjMwOjEzIjsidXNlIHN0cmljdCI7X19fZDJjX21haW5qc19jX29uPSIyMDI2LTA3LTA3IDIzOjMwOjEyIjsidXNlIHN0cmljdCI7X19fZDJjX21haW5qc19jX29uPSIyMDI2LTA3LTA3IDIyOjMwOjEyIjsidXNlIHN0cmljdCI7X19fZDJjX21haW5qc19jX29uPSIyMDI2LTA3LTA3IDIxOjMwOjEyIjsidXNlIHN0cmljdCI7X19fZDJjX21haW5qc19jX29uPSIyMDI2LTA3LTA3IDIwOjMwOjEzIjsidXNlIHN0cmljdCI7Cl9fX2QyY19tYWluanNfY19vbj0iMjAyNi0wNy0wNyAxOTozMDoxMyI7InVzZSBzdHJpY3QiO19fX2QyY19tYWluanNfY19vbj0iMjAyNi0wNy0wNyAxODozMDoxMiI7InVzZSBzdHJpY3QiO19fX2QyY19tYWluanNfY19vbj0iMjAyNi0wNy0wNyAxNzozMDoxNiI7InVzZSBzdHJpY3QiO19fX2QyY19tYWluanNfY19vbj0iMjAyNi0wNy0wNyAxNjozMDoxOCI7InVzZSBzdHJpY3QiO19fX2QyY19tYWluanNfY19vbj0iMjAyNi0wNy0wNyAxNTozMDoxNyI7InVzZSBzdHJpY3QiO19fX2QyY19tYWluanNfY19vbj0iMjAyNi0wNy0wNyAxNDozMDoxNiI7InVzZSBzdHJpY3QiO19fX2QyY19tYWluanNfY19vbj0iMjAyNi0wNy0wNyAxMzozMDoxNSI7InVzZSBzdHJpY3QiO19fX2QyY19tYWluanNfY19vbj0iMjAyNi0wNy0wNyAxMjozMDoxNiI7InVzZSBzdHJpY3QiO3ZhciAkanNjb21wPSRqc2NvbXB8fHt9OyRqc2NvbXAuc2NvcGU9e307JGpzY29tcC5BU1NVTUVfRVM1PSExOwokanNjb21wLkFTU1VNRV9OT19OQVRJVkVfTUFQPSExOyRqc2NvbXAuQVNTVU1FX05PX05BVElWRV9TRVQ9ITE7JGpzY29tcC5TSU1QTEVfRlJPVU5EX1BPTFlGSUxMPSExOyRqc2NvbXAuSVNPTEFURV9QT0xZRklMTFM9ITE7JGpzY29tcC5GT1JDRV9QT0xZRklMTF9QUk9NSVNFPSExOyRqc2NvbXAuRk9SQ0VfUE9MWUZJTExfUFJPTUlTRV9XSEVOX05PX1VOSEFORExFRF9SRUpFQ1RJT049ITE7JGpzY29tcC5kZWZpbmVQcm9wZXJ0eT0kanNjb21wLkFTU1VNRV9FUzV8fCJmdW5jdGlvbiI9PXR5cGVvZiBPYmplY3QuZGVmaW5lUHJvcGVydGllcz9PYmplY3QuZGVmaW5lUHJvcGVydHk6ZnVuY3Rpb24oYSxiLGMpe2lmKGE9PUFycmF5LnByb3RvdHlwZXx8YT09T2JqZWN0LnByb3RvdHlwZSlyZXR1cm4gYTthW2JdPWMudmFsdWU7cmV0dXJuIGF9OwokanNjb21wLmdldEdsb2JhbD1mdW5jdGlvbihhKXthPVsib2JqZWN0Ij09dHlwZW9mIGdsb2JhbFRoaXMmJmdsb2JhbFRoaXMsYSwib2JqZWN0Ij09dHlwZW9mIHdpbmRvdyYmd2luZG93LCJvYmplY3QiPT10eXBlb2Ygc2VsZiYmc2VsZiwib2JqZWN0Ij09dHlwZW9mIGdsb2JhbCYmZ2xvYmFsXTtmb3IodmFyIGI9MDtiPGEubGVuZ3RoOysrYil7dmFyIGM9YVtiXTtpZihjJiZjLk1hdGg9PU1hdGgpcmV0dXJuIGN9dGhyb3cgRXJyb3IoIkNhbm5vdCBmaW5kIGdsb2JhbCBvYmplY3QiKTt9OyRqc2NvbXAuZ2xvYmFsPSRqc2NvbXAuZ2V0R2xvYmFsKHRoaXMpOyRqc2NvbXAuSVNfU1lNQk9MX05BVElWRT0iZnVuY3Rpb24iPT09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PT10eXBlb2YgU3ltYm9sKCJ4Iik7JGpzY29tcC5UUlVTVF9FUzZfUE9MWUZJTExTPSEkanNjb21wLklTT0xBVEVfUE9MWUZJTExTfHwkanNjb21wLklTX1NZTUJPTF9OQVRJVkU7JGpzY29tcC5wb2x5ZmlsbHM9e307CiRqc2NvbXAucHJvcGVydHlUb1BvbHlmaWxsU3ltYm9sPXt9OyRqc2NvbXAuUE9MWUZJTExfUFJFRklYPSIkanNjcCQiO3ZhciAkanNjb21wJGxvb2t1cFBvbHlmaWxsZWRWYWx1ZT1mdW5jdGlvbihhLGIpe3ZhciBjPSRqc2NvbXAucHJvcGVydHlUb1BvbHlmaWxsU3ltYm9sW2JdO2lmKG51bGw9PWMpcmV0dXJuIGFbYl07Yz1hW2NdO3JldHVybiB2b2lkIDAhPT1jP2M6YVtiXX07JGpzY29tcC5wb2x5ZmlsbD1mdW5jdGlvbihhLGIsYyxkKXtiJiYoJGpzY29tcC5JU09MQVRFX1BPTFlGSUxMUz8kanNjb21wLnBvbHlmaWxsSXNvbGF0ZWQoYSxiLGMsZCk6JGpzY29tcC5wb2x5ZmlsbFVuaXNvbGF0ZWQoYSxiLGMsZCkpfTsKJGpzY29tcC5wb2x5ZmlsbFVuaXNvbGF0ZWQ9ZnVuY3Rpb24oYSxiLGMsZCl7Yz0kanNjb21wLmdsb2JhbDthPWEuc3BsaXQoIi4iKTtmb3IoZD0wO2Q8YS5sZW5ndGgtMTtkKyspe3ZhciBlPWFbZF07aWYoIShlIGluIGMpKXJldHVybjtjPWNbZV19YT1hW2EubGVuZ3RoLTFdO2Q9Y1thXTtiPWIoZCk7YiE9ZCYmbnVsbCE9YiYmJGpzY29tcC5kZWZpbmVQcm9wZXJ0eShjLGEse2NvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpifSl9OwokanNjb21wLnBvbHlmaWxsSXNvbGF0ZWQ9ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9YS5zcGxpdCgiLiIpO2E9MT09PWUubGVuZ3RoO2Q9ZVswXTtkPSFhJiZkIGluICRqc2NvbXAucG9seWZpbGxzPyRqc2NvbXAucG9seWZpbGxzOiRqc2NvbXAuZ2xvYmFsO2Zvcih2YXIgaz0wO2s8ZS5sZW5ndGgtMTtrKyspe3ZhciBoPWVba107aWYoIShoIGluIGQpKXJldHVybjtkPWRbaF19ZT1lW2UubGVuZ3RoLTFdO2M9JGpzY29tcC5JU19TWU1CT0xfTkFUSVZFJiYiZXM2Ij09PWM\/ZFtlXTpudWxsO2I9YihjKTtudWxsIT1iJiYoYT8kanNjb21wLmRlZmluZVByb3BlcnR5KCRqc2NvbXAucG9seWZpbGxzLGUse2NvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpifSk6YiE9PWMmJih2b2lkIDA9PT0kanNjb21wLnByb3BlcnR5VG9Qb2x5ZmlsbFN5bWJvbFtlXSYmKGM9MUU5Kk1hdGgucmFuZG9tKCk+Pj4wLCRqc2NvbXAucHJvcGVydHlUb1BvbHlmaWxsU3ltYm9sW2VdPSRqc2NvbXAuSVNfU1lNQk9MX05BVElWRT8KJGpzY29tcC5nbG9iYWwuU3ltYm9sKGUpOiRqc2NvbXAuUE9MWUZJTExfUFJFRklYK2MrIiQiK2UpLCRqc2NvbXAuZGVmaW5lUHJvcGVydHkoZCwkanNjb21wLnByb3BlcnR5VG9Qb2x5ZmlsbFN5bWJvbFtlXSx7Y29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOmJ9KSkpfTskanNjb21wLnVuZGVyc2NvcmVQcm90b0NhbkJlU2V0PWZ1bmN0aW9uKCl7dmFyIGE9e2E6ITB9LGI9e307dHJ5e3JldHVybiBiLl9fcHJvdG9fXz1hLGIuYX1jYXRjaChjKXt9cmV0dXJuITF9OwokanNjb21wLnNldFByb3RvdHlwZU9mPSRqc2NvbXAuVFJVU1RfRVM2X1BPTFlGSUxMUyYmImZ1bmN0aW9uIj09dHlwZW9mIE9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2Y6JGpzY29tcC51bmRlcnNjb3JlUHJvdG9DYW5CZVNldCgpP2Z1bmN0aW9uKGEsYil7YS5fX3Byb3RvX189YjtpZihhLl9fcHJvdG9fXyE9PWIpdGhyb3cgbmV3IFR5cGVFcnJvcihhKyIgaXMgbm90IGV4dGVuc2libGUiKTtyZXR1cm4gYX06bnVsbDskanNjb21wLmFycmF5SXRlcmF0b3JJbXBsPWZ1bmN0aW9uKGEpe3ZhciBiPTA7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGI8YS5sZW5ndGg\/e2RvbmU6ITEsdmFsdWU6YVtiKytdfTp7ZG9uZTohMH19fTskanNjb21wLmFycmF5SXRlcmF0b3I9ZnVuY3Rpb24oYSl7cmV0dXJue25leHQ6JGpzY29tcC5hcnJheUl0ZXJhdG9ySW1wbChhKX19OwokanNjb21wLm1ha2VJdGVyYXRvcj1mdW5jdGlvbihhKXt2YXIgYj0idW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmU3ltYm9sLml0ZXJhdG9yJiZhW1N5bWJvbC5pdGVyYXRvcl07cmV0dXJuIGI\/Yi5jYWxsKGEpOiRqc2NvbXAuYXJyYXlJdGVyYXRvcihhKX07JGpzY29tcC5nZW5lcmF0b3I9e307JGpzY29tcC5nZW5lcmF0b3IuZW5zdXJlSXRlcmF0b3JSZXN1bHRJc09iamVjdF89ZnVuY3Rpb24oYSl7aWYoIShhIGluc3RhbmNlb2YgT2JqZWN0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJJdGVyYXRvciByZXN1bHQgIithKyIgaXMgbm90IGFuIG9iamVjdCIpO307CiRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQ9ZnVuY3Rpb24oKXt0aGlzLmlzUnVubmluZ189ITE7dGhpcy55aWVsZEFsbEl0ZXJhdG9yXz1udWxsO3RoaXMueWllbGRSZXN1bHQ9dm9pZCAwO3RoaXMubmV4dEFkZHJlc3M9MTt0aGlzLmZpbmFsbHlBZGRyZXNzXz10aGlzLmNhdGNoQWRkcmVzc189MDt0aGlzLmZpbmFsbHlDb250ZXh0c189dGhpcy5hYnJ1cHRDb21wbGV0aW9uXz1udWxsfTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5zdGFydF89ZnVuY3Rpb24oKXtpZih0aGlzLmlzUnVubmluZ18pdGhyb3cgbmV3IFR5cGVFcnJvcigiR2VuZXJhdG9yIGlzIGFscmVhZHkgcnVubmluZyIpO3RoaXMuaXNSdW5uaW5nXz0hMH07JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUuc3RvcF89ZnVuY3Rpb24oKXt0aGlzLmlzUnVubmluZ189ITF9OwokanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5qdW1wVG9FcnJvckhhbmRsZXJfPWZ1bmN0aW9uKCl7dGhpcy5uZXh0QWRkcmVzcz10aGlzLmNhdGNoQWRkcmVzc198fHRoaXMuZmluYWxseUFkZHJlc3NffTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5uZXh0Xz1mdW5jdGlvbihhKXt0aGlzLnlpZWxkUmVzdWx0PWF9OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLnRocm93Xz1mdW5jdGlvbihhKXt0aGlzLmFicnVwdENvbXBsZXRpb25fPXtleGNlcHRpb246YSxpc0V4Y2VwdGlvbjohMH07dGhpcy5qdW1wVG9FcnJvckhhbmRsZXJfKCl9OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLnJldHVybj1mdW5jdGlvbihhKXt0aGlzLmFicnVwdENvbXBsZXRpb25fPXtyZXR1cm46YX07dGhpcy5uZXh0QWRkcmVzcz10aGlzLmZpbmFsbHlBZGRyZXNzX307CiRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLmp1bXBUaHJvdWdoRmluYWxseUJsb2Nrcz1mdW5jdGlvbihhKXt0aGlzLmFicnVwdENvbXBsZXRpb25fPXtqdW1wVG86YX07dGhpcy5uZXh0QWRkcmVzcz10aGlzLmZpbmFsbHlBZGRyZXNzX307JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUueWllbGQ9ZnVuY3Rpb24oYSxiKXt0aGlzLm5leHRBZGRyZXNzPWI7cmV0dXJue3ZhbHVlOmF9fTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS55aWVsZEFsbD1mdW5jdGlvbihhLGIpe2E9JGpzY29tcC5tYWtlSXRlcmF0b3IoYSk7dmFyIGM9YS5uZXh0KCk7JGpzY29tcC5nZW5lcmF0b3IuZW5zdXJlSXRlcmF0b3JSZXN1bHRJc09iamVjdF8oYyk7aWYoYy5kb25lKXRoaXMueWllbGRSZXN1bHQ9Yy52YWx1ZSx0aGlzLm5leHRBZGRyZXNzPWI7ZWxzZSByZXR1cm4gdGhpcy55aWVsZEFsbEl0ZXJhdG9yXz1hLHRoaXMueWllbGQoYy52YWx1ZSxiKX07CiRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLmp1bXBUbz1mdW5jdGlvbihhKXt0aGlzLm5leHRBZGRyZXNzPWF9OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLmp1bXBUb0VuZD1mdW5jdGlvbigpe3RoaXMubmV4dEFkZHJlc3M9MH07JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUuc2V0Q2F0Y2hGaW5hbGx5QmxvY2tzPWZ1bmN0aW9uKGEsYil7dGhpcy5jYXRjaEFkZHJlc3NfPWE7dm9pZCAwIT1iJiYodGhpcy5maW5hbGx5QWRkcmVzc189Yil9OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLnNldEZpbmFsbHlCbG9jaz1mdW5jdGlvbihhKXt0aGlzLmNhdGNoQWRkcmVzc189MDt0aGlzLmZpbmFsbHlBZGRyZXNzXz1hfHwwfTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5sZWF2ZVRyeUJsb2NrPWZ1bmN0aW9uKGEsYil7dGhpcy5uZXh0QWRkcmVzcz1hO3RoaXMuY2F0Y2hBZGRyZXNzXz1ifHwwfTsKJGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUuZW50ZXJDYXRjaEJsb2NrPWZ1bmN0aW9uKGEpe3RoaXMuY2F0Y2hBZGRyZXNzXz1hfHwwO2E9dGhpcy5hYnJ1cHRDb21wbGV0aW9uXy5leGNlcHRpb247dGhpcy5hYnJ1cHRDb21wbGV0aW9uXz1udWxsO3JldHVybiBhfTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5lbnRlckZpbmFsbHlCbG9jaz1mdW5jdGlvbihhLGIsYyl7Yz90aGlzLmZpbmFsbHlDb250ZXh0c19bY109dGhpcy5hYnJ1cHRDb21wbGV0aW9uXzp0aGlzLmZpbmFsbHlDb250ZXh0c189W3RoaXMuYWJydXB0Q29tcGxldGlvbl9dO3RoaXMuY2F0Y2hBZGRyZXNzXz1hfHwwO3RoaXMuZmluYWxseUFkZHJlc3NfPWJ8fDB9OwokanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5sZWF2ZUZpbmFsbHlCbG9jaz1mdW5jdGlvbihhLGIpe2I9dGhpcy5maW5hbGx5Q29udGV4dHNfLnNwbGljZShifHwwKVswXTtpZihiPXRoaXMuYWJydXB0Q29tcGxldGlvbl89dGhpcy5hYnJ1cHRDb21wbGV0aW9uX3x8Yil7aWYoYi5pc0V4Y2VwdGlvbilyZXR1cm4gdGhpcy5qdW1wVG9FcnJvckhhbmRsZXJfKCk7dm9pZCAwIT1iLmp1bXBUbyYmdGhpcy5maW5hbGx5QWRkcmVzc188Yi5qdW1wVG8\/KHRoaXMubmV4dEFkZHJlc3M9Yi5qdW1wVG8sdGhpcy5hYnJ1cHRDb21wbGV0aW9uXz1udWxsKTp0aGlzLm5leHRBZGRyZXNzPXRoaXMuZmluYWxseUFkZHJlc3NffWVsc2UgdGhpcy5uZXh0QWRkcmVzcz1hfTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5mb3JJbj1mdW5jdGlvbihhKXtyZXR1cm4gbmV3ICRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQuUHJvcGVydHlJdGVyYXRvcihhKX07CiRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQuUHJvcGVydHlJdGVyYXRvcj1mdW5jdGlvbihhKXt0aGlzLm9iamVjdF89YTt0aGlzLnByb3BlcnRpZXNfPVtdO2Zvcih2YXIgYiBpbiBhKXRoaXMucHJvcGVydGllc18ucHVzaChiKTt0aGlzLnByb3BlcnRpZXNfLnJldmVyc2UoKX07JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5Qcm9wZXJ0eUl0ZXJhdG9yLnByb3RvdHlwZS5nZXROZXh0PWZ1bmN0aW9uKCl7Zm9yKDswPHRoaXMucHJvcGVydGllc18ubGVuZ3RoOyl7dmFyIGE9dGhpcy5wcm9wZXJ0aWVzXy5wb3AoKTtpZihhIGluIHRoaXMub2JqZWN0XylyZXR1cm4gYX1yZXR1cm4gbnVsbH07JGpzY29tcC5nZW5lcmF0b3IuRW5naW5lXz1mdW5jdGlvbihhKXt0aGlzLmNvbnRleHRfPW5ldyAkanNjb21wLmdlbmVyYXRvci5Db250ZXh0O3RoaXMucHJvZ3JhbV89YX07CiRqc2NvbXAuZ2VuZXJhdG9yLkVuZ2luZV8ucHJvdG90eXBlLm5leHRfPWZ1bmN0aW9uKGEpe3RoaXMuY29udGV4dF8uc3RhcnRfKCk7aWYodGhpcy5jb250ZXh0Xy55aWVsZEFsbEl0ZXJhdG9yXylyZXR1cm4gdGhpcy55aWVsZEFsbFN0ZXBfKHRoaXMuY29udGV4dF8ueWllbGRBbGxJdGVyYXRvcl8ubmV4dCxhLHRoaXMuY29udGV4dF8ubmV4dF8pO3RoaXMuY29udGV4dF8ubmV4dF8oYSk7cmV0dXJuIHRoaXMubmV4dFN0ZXBfKCl9OwokanNjb21wLmdlbmVyYXRvci5FbmdpbmVfLnByb3RvdHlwZS5yZXR1cm5fPWZ1bmN0aW9uKGEpe3RoaXMuY29udGV4dF8uc3RhcnRfKCk7dmFyIGI9dGhpcy5jb250ZXh0Xy55aWVsZEFsbEl0ZXJhdG9yXztpZihiKXJldHVybiB0aGlzLnlpZWxkQWxsU3RlcF8oInJldHVybiJpbiBiP2JbInJldHVybiJdOmZ1bmN0aW9uKGMpe3JldHVybnt2YWx1ZTpjLGRvbmU6ITB9fSxhLHRoaXMuY29udGV4dF8ucmV0dXJuKTt0aGlzLmNvbnRleHRfLnJldHVybihhKTtyZXR1cm4gdGhpcy5uZXh0U3RlcF8oKX07CiRqc2NvbXAuZ2VuZXJhdG9yLkVuZ2luZV8ucHJvdG90eXBlLnRocm93Xz1mdW5jdGlvbihhKXt0aGlzLmNvbnRleHRfLnN0YXJ0XygpO2lmKHRoaXMuY29udGV4dF8ueWllbGRBbGxJdGVyYXRvcl8pcmV0dXJuIHRoaXMueWllbGRBbGxTdGVwXyh0aGlzLmNvbnRleHRfLnlpZWxkQWxsSXRlcmF0b3JfWyJ0aHJvdyJdLGEsdGhpcy5jb250ZXh0Xy5uZXh0Xyk7dGhpcy5jb250ZXh0Xy50aHJvd18oYSk7cmV0dXJuIHRoaXMubmV4dFN0ZXBfKCl9OwokanNjb21wLmdlbmVyYXRvci5FbmdpbmVfLnByb3RvdHlwZS55aWVsZEFsbFN0ZXBfPWZ1bmN0aW9uKGEsYixjKXt0cnl7dmFyIGQ9YS5jYWxsKHRoaXMuY29udGV4dF8ueWllbGRBbGxJdGVyYXRvcl8sYik7JGpzY29tcC5nZW5lcmF0b3IuZW5zdXJlSXRlcmF0b3JSZXN1bHRJc09iamVjdF8oZCk7aWYoIWQuZG9uZSlyZXR1cm4gdGhpcy5jb250ZXh0Xy5zdG9wXygpLGQ7dmFyIGU9ZC52YWx1ZX1jYXRjaChrKXtyZXR1cm4gdGhpcy5jb250ZXh0Xy55aWVsZEFsbEl0ZXJhdG9yXz1udWxsLHRoaXMuY29udGV4dF8udGhyb3dfKGspLHRoaXMubmV4dFN0ZXBfKCl9dGhpcy5jb250ZXh0Xy55aWVsZEFsbEl0ZXJhdG9yXz1udWxsO2MuY2FsbCh0aGlzLmNvbnRleHRfLGUpO3JldHVybiB0aGlzLm5leHRTdGVwXygpfTsKJGpzY29tcC5nZW5lcmF0b3IuRW5naW5lXy5wcm90b3R5cGUubmV4dFN0ZXBfPWZ1bmN0aW9uKCl7Zm9yKDt0aGlzLmNvbnRleHRfLm5leHRBZGRyZXNzOyl0cnl7dmFyIGE9dGhpcy5wcm9ncmFtXyh0aGlzLmNvbnRleHRfKTtpZihhKXJldHVybiB0aGlzLmNvbnRleHRfLnN0b3BfKCkse3ZhbHVlOmEudmFsdWUsZG9uZTohMX19Y2F0Y2goYil7dGhpcy5jb250ZXh0Xy55aWVsZFJlc3VsdD12b2lkIDAsdGhpcy5jb250ZXh0Xy50aHJvd18oYil9dGhpcy5jb250ZXh0Xy5zdG9wXygpO2lmKHRoaXMuY29udGV4dF8uYWJydXB0Q29tcGxldGlvbl8pe2E9dGhpcy5jb250ZXh0Xy5hYnJ1cHRDb21wbGV0aW9uXzt0aGlzLmNvbnRleHRfLmFicnVwdENvbXBsZXRpb25fPW51bGw7aWYoYS5pc0V4Y2VwdGlvbil0aHJvdyBhLmV4Y2VwdGlvbjtyZXR1cm57dmFsdWU6YS5yZXR1cm4sZG9uZTohMH19cmV0dXJue3ZhbHVlOnZvaWQgMCxkb25lOiEwfX07CiRqc2NvbXAuZ2VuZXJhdG9yLkdlbmVyYXRvcl89ZnVuY3Rpb24oYSl7dGhpcy5uZXh0PWZ1bmN0aW9uKGIpe3JldHVybiBhLm5leHRfKGIpfTt0aGlzLnRocm93PWZ1bmN0aW9uKGIpe3JldHVybiBhLnRocm93XyhiKX07dGhpcy5yZXR1cm49ZnVuY3Rpb24oYil7cmV0dXJuIGEucmV0dXJuXyhiKX07dGhpc1tTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9fTskanNjb21wLmdlbmVyYXRvci5jcmVhdGVHZW5lcmF0b3I9ZnVuY3Rpb24oYSxiKXtiPW5ldyAkanNjb21wLmdlbmVyYXRvci5HZW5lcmF0b3JfKG5ldyAkanNjb21wLmdlbmVyYXRvci5FbmdpbmVfKGIpKTskanNjb21wLnNldFByb3RvdHlwZU9mJiZhLnByb3RvdHlwZSYmJGpzY29tcC5zZXRQcm90b3R5cGVPZihiLGEucHJvdG90eXBlKTtyZXR1cm4gYn07CiRqc2NvbXAuYXN5bmNFeGVjdXRlUHJvbWlzZUdlbmVyYXRvcj1mdW5jdGlvbihhKXtmdW5jdGlvbiBiKGQpe3JldHVybiBhLm5leHQoZCl9ZnVuY3Rpb24gYyhkKXtyZXR1cm4gYS50aHJvdyhkKX1yZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24oZCxlKXtmdW5jdGlvbiBrKGgpe2guZG9uZT9kKGgudmFsdWUpOlByb21pc2UucmVzb2x2ZShoLnZhbHVlKS50aGVuKGIsYykudGhlbihrLGUpfWsoYS5uZXh0KCkpfSl9OyRqc2NvbXAuYXN5bmNFeGVjdXRlUHJvbWlzZUdlbmVyYXRvckZ1bmN0aW9uPWZ1bmN0aW9uKGEpe3JldHVybiAkanNjb21wLmFzeW5jRXhlY3V0ZVByb21pc2VHZW5lcmF0b3IoYSgpKX07JGpzY29tcC5hc3luY0V4ZWN1dGVQcm9taXNlR2VuZXJhdG9yUHJvZ3JhbT1mdW5jdGlvbihhKXtyZXR1cm4gJGpzY29tcC5hc3luY0V4ZWN1dGVQcm9taXNlR2VuZXJhdG9yKG5ldyAkanNjb21wLmdlbmVyYXRvci5HZW5lcmF0b3JfKG5ldyAkanNjb21wLmdlbmVyYXRvci5FbmdpbmVfKGEpKSl9OwpqUXVlcnkubm9Db25mbGljdD1mdW5jdGlvbigpe3JldHVybiBqUXVlcnl9O2pRdWVyeS5ldmVudC5zcGVjaWFsLnRvdWNoc3RhcnQ9e3NldHVwOmZ1bmN0aW9uKGEsYixjKXtiLmluY2x1ZGVzKCJub1ByZXZlbnREZWZhdWx0Iik\/dGhpcy5hZGRFdmVudExpc3RlbmVyKCJ0b3VjaHN0YXJ0IixjLHtwYXNzaXZlOiExfSk6dGhpcy5hZGRFdmVudExpc3RlbmVyKCJ0b3VjaHN0YXJ0IixjLHtwYXNzaXZlOiEwfSl9fTtqUXVlcnkuZXhwci5wc2V1ZG9zLnJlYWxseVZpc2libGU9ZnVuY3Rpb24oYSl7dHJ5e2lmKGE9PWRvY3VtZW50LmJvZHkpcmV0dXJuITA7dmFyIGI9alF1ZXJ5KGEpO3JldHVybiBiLmlzKCI6dmlzaWJsZSIpJiYiaGlkZGVuIiE9PWIuY3NzKCJ2aXNpYmlsaXR5IikmJjA8Yi5wYXJlbnQoIjpyZWFsbHlWaXNpYmxlIikubGVuZ3RofWNhdGNoKGMpe3JldHVybiBjb25zb2xlLmxvZyhjLm1lc3NhZ2UsYyksITF9fTsKQXJyYXkucHJvdG90eXBlLmZpbmR8fE9iamVjdC5kZWZpbmVQcm9wZXJ0eShBcnJheS5wcm90b3R5cGUsImZpbmQiLHt2YWx1ZTpmdW5jdGlvbihhLGIpe2lmKG51bGw9PXRoaXMpdGhyb3cgVHlwZUVycm9yKCcidGhpcyIgaXMgbnVsbCBvciBub3QgZGVmaW5lZCcpO3ZhciBjPU9iamVjdCh0aGlzKSxkPWMubGVuZ3RoPj4+MDtpZigiZnVuY3Rpb24iIT09dHlwZW9mIGEpdGhyb3cgVHlwZUVycm9yKCJwcmVkaWNhdGUgbXVzdCBiZSBhIGZ1bmN0aW9uIik7Zm9yKHZhciBlPTA7ZTxkOyl7dmFyIGs9Y1tlXTtpZihhLmNhbGwoYixrLGUsYykpcmV0dXJuIGs7ZSsrfX0sY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk7CnZhciBpc0Z1bmN0aW9uPWE9PiJmdW5jdGlvbiI9PT10eXBlb2YgYSx0cmltPWE9PmEucmVwbGFjZSgvXlxzK3xccyskL2csIiIpLGRlYnVnPWZ1bmN0aW9uKCl7aWYoZGVidWdFbmFibGVkKCkpe3ZhciBhPWNvbnNvbGUsYj1hcmd1bWVudHM7ImZ1bmN0aW9uIj09dHlwZW9mIGEubG9nJiZhLmxvZy5hcHBseShhLGIpfX0sZGVidWdFbmFibGVkPWZ1bmN0aW9uKCl7dmFyIGE9ZG9jdW1lbnQubG9jYXRpb24uaG9zdCxiPWRvY3VtZW50LmNvb2tpZS5tYXRjaCgvdGVzdGluZz0oW147XSspL2kpO3JldHVybihiPW51bGw9PWI\/ITE6YlsxXSl8fC9eKGRlYWxlcnxkZW1vKXxkMmNtZWRpYVwuY2EkLy50ZXN0KGEpJiYib2ZmIiE9Yn0sZW5hYmxlRGVidWc9ZnVuY3Rpb24oKXtDb29raWVzLnNldCgidGVzdGluZyIsIm9uIil9LGRpc2FibGVEZWJ1Zz1mdW5jdGlvbigpe0Nvb2tpZXMuc2V0KCJ0ZXN0aW5nIiwib2ZmIil9LEFsZXJ0QmFyPWZ1bmN0aW9uKGEpe3ZhciBiPWEuc2VjdGlvbnMudG9Mb3dlckNhc2UoKSwKYz1hLmN1cnJlbnQudG9Mb3dlckNhc2UoKSxkPSQoIi5oZWFkZXItd3JhcHBlciIpLmxlbmd0aD8kKCIuaGVhZGVyLXdyYXBwZXIiKTokKCIjbWFpbkRpdiIpLGU9JCgiI2FsZXJ0TXNnQ29udGFpbmVyIiksaz0kKCJib2R5IiksaD0kKCIuQWRkZWRUb3BMaW5rRGl2Iiksbj1uZXcgRGF0ZTtuLnNldFRpbWUobi5nZXRUaW1lKCkrMzZFNSk7dmFyIHg9ZnVuY3Rpb24oKXtDb29raWVzLnNldCgiYWxlcnRNZXNzYWdlQ2xvc2VkIiwxLG4sIi8iKTtlLmhpZGUoKTtkLmNzcyh7bWFyZ2luVG9wOjB9KTtrLmNzcygiYmFja2dyb3VuZC1wb3NpdGlvbi15IiwiIik7MDxoLmxlbmd0aCYmaC5jc3MoIm1hcmdpbi10b3AiLCIiKX07LTE8Yi5pbmRleE9mKGMpJiYhQ29va2llcy5nZXQoImFsZXJ0TWVzc2FnZUNsb3NlZCIpJiYoZS5jc3Moe2JhY2tncm91bmRDb2xvcjphLmNvbG9yfSksJCgiLmNsb3NlIixlKS5vbigiY2xpY2siLHgpLGQuY3NzKCJtYXJnaW4tdG9wIixlLmhlaWdodCgpKyJweCIpLAprLmNzcyh7ImJhY2tncm91bmQtcG9zaXRpb24teSI6ZS5oZWlnaHQoKSsicHgifSksMDxoLmxlbmd0aCYmaC5jc3MoIm1hcmdpbi10b3AiLGUuaGVpZ2h0KCkrInB4IiksZS5zaG93KCkpfTtmdW5jdGlvbiBMZWFkR2VuQURGKGEsYixjLGQsZSxrLGgsbil7aWYodHlwZW9mIGNhcnByb29mSGFuZGxlcilyZXR1cm4gY2FycHJvb2ZIYW5kbGVyLmxlYWRHZW4uYXBwbHkoY2FycHJvb2ZIYW5kbGVyLGFyZ3VtZW50cyl9CmZ1bmN0aW9uIHJ1bkltYWdlUG9wdXBGaXJld29ya3MoKXsidW5kZWZpbmVkIiE9dHlwZW9mIEZpcmV3b3JrVGltZXImJihpbWFnZUZpcmV3b3Jrcz0hMCxGaXJld29ya1RpbWVyKCJiZ0ltYWdlIiwiRkZGRkZGIiwyMDAsMjAwKSxGaXJld29ya1RpbWVyKCJiZ0ltYWdlIiwiRkYwMDAwIiwzODAsMjUwLDFFMyksRmlyZXdvcmtUaW1lcigiYmdJbWFnZSIsIjAwZmYxMSIsOTAsMTcwLDJFMyksRmlyZXdvcmtUaW1lcigiYmdJbWFnZSIsIjQ0Y2RmZiIsMzIwLDI1MCwzRTMsMCwuOCksc2V0VGltZW91dChmdW5jdGlvbigpe3J1bkltYWdlUG9wdXBGaXJld29ya3MoKX0sMUU0KSl9CmZ1bmN0aW9uIGhhbmRsZUFjdGlvbkNsaWNrKGEpe2E9YXx8d2luZG93LmV2ZW50O2E9YS5jdXJyZW50VGFyZ2V0fHxhLnNyY0VsZW1lbnQ7dmFyIGI9d2luZG93LmxvY2F0aW9uLmhyZWYuc3Vic3RyaW5nKHdpbmRvdy5sb2NhdGlvbi5ocmVmLmxhc3RJbmRleE9mKCIvIikrMSksYz0idXNlZCIsZD0iIjtpZigtMT09d2luZG93LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiLWlkIikpe2Q9Yi5yZXBsYWNlKCIuaHRtbCIsIiIpLnNwbGl0KCItIik7aWYoMz5kLmxlbmd0aHx8LTE8Yi5pbmRleE9mKCJzZWFyY2giKXx8LTE8Yi5pbmRleE9mKCJmaW5kLSIpfHwtMTxiLmluZGV4T2YoInJlY2hlcmNoZSIpfHwtMTxiLmluZGV4T2YoInByaXgtIil8fC0xPGIuaW5kZXhPZigicHJpY2UtIil8fC0xPGIuaW5kZXhPZigiZXNzYWlzLXJvdXRpZXItIil8fC0xPGIuaW5kZXhPZigidGVzdC1kcml2ZS0iKXx8LTE8Yi5pbmRleE9mKCJ2ZWhpY3VsZS1lY2hhbmdlLSIpfHwtMTxiLmluZGV4T2YoInRyYWRlLWluLSIpfHwKLTE8Yi5pbmRleE9mKCJwbmV1cy1waWVjZXMtIil8fC0xPGIuaW5kZXhPZigiY2FyLXBhcnRzLSIpfHwtMTxiLmluZGV4T2YoInJlbmRlei12b3VzLSIpfHwtMTxiLmluZGV4T2YoIi1hcHBvaW50bWVudCIpfHwtMTxiLmluZGV4T2YoImNyZWRpdCIpfHwtMTxiLmluZGV4T2YoImZpbmFuY2VtZW50Iil8fC0xPGIuaW5kZXhPZigicHJlLWFwcHJvIil8fC0xPGIuaW5kZXhPZigibmV3LXdlc3QiKXx8LTE8Yi5pbmRleE9mKCJjb25maWRlbnRpYWxpdGUiKXx8LTE8Yi5pbmRleE9mKCJwcml2YWN5LXBvbGljeSIpfHwtMTxiLmluZGV4T2YoInRlcm1lcy1ldC1jb25kaXRpb25zIil8fC0xPGIuaW5kZXhPZigidGVybXMtYW5kLWNvbmRpdGlvbnMiKSlkPSIuaHRtbCI7ZWxzZXt2YXIgZT0obmV3IERhdGUpLmdldEZ1bGxZZWFyKCk7InVuZGVmaW5lZCI9PXR5cGVvZiBkWzJdfHxlIT1kWzJdJiZlKzEhPWRbMl18fChjPSJuZXciKTtkPSIvIitifWQ9YS5nZXRBdHRyaWJ1dGUoInRhcmdldFVSSSIpLnJlcGxhY2UoIi5odG1sIiwKZCl9ZWxzZXtzd2l0Y2goYS5nZXRBdHRyaWJ1dGUoImFjdGlvbiIpKXtjYXNlICJUZXN0RHJpdmVBY3Rpb25Cb3giOmQ9JCgiI3Rlc3REcml2ZUZvbGRlciIpLnZhbCgpK2I7YnJlYWs7Y2FzZSAiUHJpY2VBY3Rpb25Cb3giOmQ9JCgiI3ByaWNlUmVxdWVzdEZvbGRlciIpLnZhbCgpK2I7YnJlYWs7Y2FzZSAiRXZhbEFjdGlvbkJveCI6ZD0kKCIjZXZhbENhckZvbGRlciIpLnZhbCgpK2I7YnJlYWs7Y2FzZSAiRmluYW5jZUFjdGlvbkJveCI6ZD0kKCIjRmluYW5jZUZvbGRlciIpLnZhbCgpK2I7YnJlYWs7ZGVmYXVsdDoidW5kZWZpbmVkIiE9dHlwZW9mICQoYSkuYXR0cigiZm9sZGVyIik\/ZD0kKGEpLmF0dHIoImZvbGRlciIpOiJ1bmRlZmluZWQiIT10eXBlb2YgJChhKS5hdHRyKCJ0YXJnZXR1cmkiKSYmKGQ9JChhKS5hdHRyKCJ0YXJnZXR1cmkiKSl9Q29va2llcy5zZXQoImZyb21kZXRhaWxzcGFnZSIsIjEiLG51bGwsIi8iKX1pZigidW5kZWZpbmVkIiE9dHlwZW9mIGQmJm51bGwhPQpkJiYwPGQubGVuZ3RoKXtiPWQyY21lZGlhLmh0bWxGaWxlKCExLCEwKTtlPWIuc3BsaXQoIi0iKTt2YXIgaz0iIixoPSIiLG49IiI7MDxlLmxlbmd0aCYmKGs9ZVswXSk7MTxlLmxlbmd0aCYmKGg9ZVsxXSk7MjxlLmxlbmd0aCYmKG49ZVsyXSk7MDxrLmxlbmd0aCYmMDxoLmxlbmd0aCYmMDxuLmxlbmd0aCYmIWlzTmFOKG4pJiY0PT1uLnRvU3RyaW5nKCkubGVuZ3RoJiYtMTxkLmluZGV4T2YoIi5odG0iKSYmKGU9YS5nZXRBdHRyaWJ1dGUoImZvbGRlciIpLGQ9InVuZGVmaW5lZCIhPXR5cGVvZiBlJiZudWxsIT1lP2U6ZC5zdWJzdHJpbmcoMCxkLmxhc3RJbmRleE9mKCIvIikrMSksZD1kLnJlcGxhY2UoIi5odG1sIiwiLyIpK2IrIi5odG1sIik7JChhKS5oYXNDbGFzcygidHJhZGVpbkxpbmsiKSYmKDA8YS5nZXRBdHRyaWJ1dGUoInRhcmdldFVSSSIpLmluZGV4T2YoInRyYWRlaW52YWx1ZXMiKXx8MDxhLmdldEF0dHJpYnV0ZSgidGFyZ2V0VVJJIikuaW5kZXhPZigiaW5zdGFudG9mZmVyLmFjY3UtdHJhZGUuY29tIikpPwpzaG93VHJhZGVJblBvcHVwKGEuZ2V0QXR0cmlidXRlKCJ0YXJnZXRVUkkiKSk6KCJuZXciPT1jJiYoZD1kLnJlcGxhY2UoIm9jY2FzaW9uIiwibmV1ZiIpLnJlcGxhY2UoInVzZWQiLCJuZXciKSksd2luZG93LmxvY2F0aW9uLmhyZWY9ZCl9fQpmdW5jdGlvbiBvcGVuRmluYW5jZU11bHRpc3RlcEZvcm1PbkN1cnJlbnRQYWdlKGEsYixjLGQsZSxrLGgpe2EucHJldmVudERlZmF1bHQoKTthLnN0b3BQcm9wYWdhdGlvbigpO2I\/JCgiI3BvcHVwbWFrZU11bHRpc3RlcEZvcm0iKS52YWwoYik6Ik5FV0NBUkRFVEFJTFMiPT0kKCJib2R5IikuYXR0cigiaWQiKT8kKCIjcG9wdXBtYWtlTXVsdGlzdGVwRm9ybSIpLnZhbCgkKCIuYnJhbmRlbWFpbCIpLnZhbCgpKToiY2FyZGV0YWlsLmh0bWwiPT0kKCIjUEFHRUlEIikudmFsKCkmJiQoIiNwb3B1cG1ha2VNdWx0aXN0ZXBGb3JtIikudmFsKCQoIiNwaG9uZW1ha2UiKS52YWwoKSk7Yz8kKCIjcG9wdXBtb2RlbE11bHRpc3RlcEZvcm0iKS52YWwoYyk6Ik5FV0NBUkRFVEFJTFMiPT0kKCJib2R5IikuYXR0cigiaWQiKT8kKCIjcG9wdXBtb2RlbE11bHRpc3RlcEZvcm0iKS52YWwoJCgiLm1vZGVsZW1haWwiKS52YWwoKSk6ImNhcmRldGFpbC5odG1sIj09JCgiI1BBR0VJRCIpLnZhbCgpJiYKJCgiI3BvcHVwbW9kZWxNdWx0aXN0ZXBGb3JtIikudmFsKCQoIiNwaG9uZW1vZGVsIikudmFsKCkpO2Q\/JCgiI3BvcHVweWVhck11bHRpc3RlcEZvcm0iKS52YWwoZCk6Ik5FV0NBUkRFVEFJTFMiPT0kKCJib2R5IikuYXR0cigiaWQiKT8kKCIjcG9wdXB5ZWFyTXVsdGlzdGVwRm9ybSIpLnZhbCgkKCIueWVhcmVtYWlsIikudmFsKCkpOiJjYXJkZXRhaWwuaHRtbCI9PSQoIiNQQUdFSUQiKS52YWwoKSYmJCgiI3BvcHVweWVhck11bHRpc3RlcEZvcm0iKS52YWwoJCgiI3Bob25lbXllYXIiKS52YWwoKSk7ZT8kKCIjcG9wdXBzdG9ja251bWJlck11bHRpc3RlcEZvcm0iKS52YWwoZSk6Ik5FV0NBUkRFVEFJTFMiPT0kKCJib2R5IikuYXR0cigiaWQiKT8kKCIjcG9wdXBzdG9ja251bWJlck11bHRpc3RlcEZvcm0iKS52YWwoIiIpOiJjYXJkZXRhaWwuaHRtbCI9PSQoIiNQQUdFSUQiKS52YWwoKSYmJCgiI3BvcHVwc3RvY2tudW1iZXJNdWx0aXN0ZXBGb3JtIikudmFsKCQoIiNwaG9uZXN0b2NrbnVtYmVyIikudmFsKCkpOwprPyQoIiN0b3BjYXJpZE11bHRpc3RlcEZvcm0iKS52YWwoayk6Ik5FV0NBUkRFVEFJTFMiPT0kKCJib2R5IikuYXR0cigiaWQiKSYmJCgiI3RvcGNhcmlkTXVsdGlzdGVwRm9ybSIpLnZhbCgiIik7aCYmKGguc2VuZFRvJiYkKCIjRklOQU5DRV9GT1JNX1NFTkRUT19FTUFJTCIpLnZhbChoLnNlbmRUbyksaC5zZW5kVG9BZGYmJiQoIiNGSU5BTkNFX0ZPUk1fU0VORFRPQURGX0VNQUlMIikudmFsKGguc2VuZFRvQWRmKSxoLmRlYWxlck5hbWUmJiQoIiNGSU5BTkNFX0ZPUk1fREVBTEVSTkFNRSIpLnZhbChoLmRlYWxlck5hbWUpKTthPSJmaW5hbmNlTXVsdGlzdGVwUG9wdXBDb250YWluZXIiOyQoIiNGaW5hbmNlX0Zvcm1UeXBlIikubGVuZ3RoJiYibXVsdGlzdGVwSW5zdGFudCI9PSQoIiNGaW5hbmNlX0Zvcm1UeXBlIikudmFsKCkmJiQoIiNmaW5hbmNlTXVsdGlzdGVwSW5zdGFudFBvcHVwQ29udGFpbmVyIikubGVuZ3RoJiYoYT0iZmluYW5jZU11bHRpc3RlcEluc3RhbnRQb3B1cENvbnRhaW5lciIpOwokKCIjIithKS5wb3B1cGl6ZSgpLnNldFRyaWdnZXIoImNsaWNrIikub3BlbigxKX1mdW5jdGlvbiBvcGVuU2hvd3Jvb21Db250YWN0UG9wdXAoYSxiLGMsZCl7YS5wcmV2ZW50RGVmYXVsdCgpO2Euc3RvcFByb3BhZ2F0aW9uKCk7ZW1haWxIYW5kbGVyLm1ha2U9YjskKCIjbGFzdHZpZXdlZG1ha2UiKS52YWwoYik7ZW1haWxIYW5kbGVyLm1vZGVsPWM7JCgiI2xhc3R2aWV3ZWRtb2RlbCIpLnZhbChjKTtlbWFpbEhhbmRsZXIueWVhcj1kOyQoIiNsYXN0dmlld2VkeWVhciIpLnZhbChkKTskKCIjY29udGFjdHBvcHVwIikucG9wdXBpemUoKS5zZXRUcmlnZ2VyKCJjbGljayIpLm9wZW4oKX12YXIgZDJjbWVkaWE9ZDJjbWVkaWF8fHt9OwpkMmNtZWRpYS5zY3JvbGxUbz1mdW5jdGlvbihhLGIsYyl7InVuZGVmaW5lZCI9PXR5cGVvZiBjJiYoYz0xRTMpOyJ1bmRlZmluZWQiPT10eXBlb2YgYiYmKGI9MCk7JCgiaHRtbCwgYm9keSIpLmFuaW1hdGUoe3Njcm9sbFRvcDokKGEpLm9mZnNldCgpLnRvcC1ifSxjKTtyZXR1cm4hMX07CmQyY21lZGlhLnVybD17X3Nhbml0aXplOiEwLGRlc2FuaXRpemU6ZnVuY3Rpb24oYSl7aWYoInN0cmluZyI9PT10eXBlb2YgYSlyZXR1cm4gYS5yZXBsYWNlKC9fL2csIi0iKTtpZigib2JqZWN0Ij09PXR5cGVvZiBhKXtmb3IodmFyIGIgaW4gYSlhW2JdPXRoaXMuZGVzYW5pdGl6ZShhW2JdKTtyZXR1cm4gYX19LGdlbmVyYXRlOmZ1bmN0aW9uKCl7dmFyIGE9IiI7dGhpcy5fc2FuaXRpemUmJihhcmd1bWVudHM9dGhpcy5zYW5pdGl6ZShhcmd1bWVudHMpKTtmb3IoaT0wO2k8YXJndW1lbnRzLmxlbmd0aC0xO2krKylhKz1hcmd1bWVudHNbaV0rIi0iO3JldHVybiBhK2FyZ3VtZW50c1tpXSsiLmh0bWwifSxwYXJzZTpmdW5jdGlvbigpe3VybD1kZWNvZGVVUklDb21wb25lbnQoZG9jdW1lbnQuVVJMKTtzdHJQYXJhbT11cmwuc3Vic3RyaW5nKHVybC5sYXN0SW5kZXhPZigiLyIpKTtvYmpQYXJhbT17bWFrZTpudWxsLG1vZGVsOm51bGwseWVhcjpudWxsLGlkOm51bGx9O2ZvdW5kPSExOwp2YXIgYTtudWxsIT0oYT1zdHJQYXJhbS5tYXRjaCgvXlwvKDIwWzAtOV17Mn18MTlbMC05XXsyfSktKFteLV0rLVteLVwuXSspKC4qXC5odG1sKS8pKSYmKHN0clBhcmFtPSIvIithWzJdKyItIithWzFdK2FbM10pO2E9c3RyUGFyYW0ubWF0Y2goL1wvKFteL10qKS0oLiopLShcZHs0fSkoLWlkKFxkKikpPy5odG1sLyk7Zm91bmR8fG51bGw9PT1hfHwob2JqUGFyYW0ubWFrZT1hWzFdLG9ialBhcmFtLm1vZGVsPWFbMl0sb2JqUGFyYW0ueWVhcj1hWzNdLG9ialBhcmFtLmlkPWFbNV0sZm91bmQ9ITApO2E9c3RyUGFyYW0ubWF0Y2goL1wvKFteL10qKS0oLiopLShcZHs0fSkoLWNcZCopPy5odG1sLyk7Zm91bmR8fG51bGw9PT1hfHwob2JqUGFyYW0ubWFrZT1hWzFdLG9ialBhcmFtLm1vZGVsPWFbMl0sb2JqUGFyYW0ueWVhcj1hWzNdLGZvdW5kPSEwKTthPXN0clBhcmFtLm1hdGNoKC9cLyhbXi9dKiktKFxkezR9KS5odG1sLyk7Zm91bmR8fG51bGw9PT1hfHwob2JqUGFyYW0ubWFrZT0KYVsxXSxvYmpQYXJhbS55ZWFyPWFbMl0sZm91bmQ9ITApO2E9c3RyUGFyYW0ubWF0Y2goL1wvKFteL10qKS0oW14uXSopLmh0bWwvKTtmb3VuZHx8bnVsbD09PWF8fChvYmpQYXJhbS5tYWtlPWFbMV0sb2JqUGFyYW0ubW9kZWw9YVsyXSxmb3VuZD0hMCk7YT1zdHJQYXJhbS5tYXRjaCgvXC8oW14vXSopLmh0bWwvKTtmb3VuZHx8bnVsbD09PWF8fChvYmpQYXJhbS5tYWtlPWFbMV0sZm91bmQ9ITApO3RoaXMuX3Nhbml0aXplJiYob2JqUGFyYW09dGhpcy5kZXNhbml0aXplKG9ialBhcmFtKSk7cmV0dXJuIG9ialBhcmFtfSxzYW5pdGl6ZTpmdW5jdGlvbihhKXtpZigic3RyaW5nIj09PXR5cGVvZiBhKXJldHVybiBhLnJlcGxhY2UoLy0vZywiXyIpLnJlcGxhY2UoL1snIl0vZywiIik7aWYoIm9iamVjdCI9PT10eXBlb2YgYSl7Zm9yKHZhciBiIGluIGEpYVtiXT10aGlzLnNhbml0aXplKGFbYl0pO3JldHVybiBhfX0sc2FuaXRpemVSZWZlcmVyOmZ1bmN0aW9uKGEpe3JldHVybiBhLnJlcGxhY2UoL1snImAoKTw+XFtcXXt9fCFdL2csCiIiKX19O2QyY21lZGlhLmdldEh0dHBUZXh0PWZ1bmN0aW9uKCl7cmV0dXJuImh0dHBzOiI9PWRvY3VtZW50LmxvY2F0aW9uLnByb3RvY29sJiYkKCIjdG9wZGVwbG95bWVudHR5cGUiKS5sZW5ndGgmJiJsaXZlIj09JCgiI3RvcGRlcGxveW1lbnR0eXBlIikudmFsKCk\/Imh0dHBzIjoiaHR0cCJ9O2QyY21lZGlhLmNhcGl0YWxpc2VGaXJzdExldHRlcj1mdW5jdGlvbihhKXtyZXR1cm4idW5kZWZpbmVkIj09dHlwZW9mIGE\/IiI6YS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSthLnNsaWNlKDEpfTtkMmNtZWRpYS5jYXBpdGFsaXNlRmlyc3RMZXR0ZXJPZkV2ZXJ5V29yZD1mdW5jdGlvbihhKXtyZXR1cm4idW5kZWZpbmVkIj09dHlwZW9mIGE\/IiI6YS5zcGxpdCgiICIpLnJlZHVjZShmdW5jdGlvbihiLGMpe2M9ZDJjbWVkaWEuY2FwaXRhbGlzZUZpcnN0TGV0dGVyKGMpO3JldHVybiBiP2IrIiAiK2M6Y30sIiIpfTsKZDJjbWVkaWEuc2FmZVN0cmluZz1mdW5jdGlvbihhKXt2YXIgYj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtiLnRleHRDb250ZW50PWE7cmV0dXJuIGIuaW5uZXJUZXh0fTsKZDJjbWVkaWEuaHRtbEZpbGU9ZnVuY3Rpb24oYSxiKXt2YXIgYz13aW5kb3cubG9jYXRpb24uc2VhcmNoLmxlbmd0aCYmLTE8d2luZG93LmxvY2F0aW9uLnNlYXJjaC5pbmRleE9mKCJwYXRoPSIpP3dpbmRvdy5sb2NhdGlvbi5zZWFyY2g6d2luZG93LmxvY2F0aW9uLnBhdGhuYW1lO2M9Yy5zdWJzdHJpbmcoYy5sYXN0SW5kZXhPZigiLyIpKzEpO2M9ZDJjbWVkaWEuc2FmZVN0cmluZyhjKTt0cnl7dmFyIGQ9ZGVjb2RlVVJJQ29tcG9uZW50KGMpfWNhdGNoKGspe3ZhciBlPXsiJUMwIjoiJkFncmF2ZTsiLCIlQzEiOiImQWFjdXRlOyIsIiVDMiI6IiZBY2lyYzsiLCIlQzMiOiImQXRpbGRlOyIsIiVDNCI6IiZBdW1sOyIsIiVDNSI6IiZBcmluZzsiLCIlQzYiOiImQUVsaWc7IiwiJUM3IjoiJkNjZWRpbDsiLCIlQzgiOiImRWdyYXZlOyIsIiVDOSI6IiZFYWN1dGU7IiwiJUNBIjoiJkVjaXJjOyIsIiVDQiI6IiZFdW1sOyIsIiVDQyI6IiZJZ3JhdmU7IiwiJUNEIjoiJklhY3V0ZTsiLCIlQ0UiOiImSWNpcmM7IiwKIiVDRiI6IiZJdW1sOyIsIiVEMCI6IiZFVEg7IiwiJUQxIjoiJk50aWxkZTsiLCIlRDIiOiImT2dyYXZlOyIsIiVEMyI6IiZPYWN1dGU7IiwiJUQ0IjoiJk9jaXJjOyIsIiVENSI6IiZPdGlsZGU7IiwiJUQ2IjoiJk91bWw7IiwiJUQ4IjoiJk9zbGFzaDsiLCIlRDkiOiImVWdyYXZlOyIsIiVEQSI6IiZVYWN1dGU7IiwiJURCIjoiJlVjaXJjOyIsIiVEQyI6IiZVdW1sOyIsIiVERCI6IiZZYWN1dGU7IiwiJURFIjoiJlRIT1JOOyIsIiVERiI6IiZzemxpZzsiLCIlRTAiOiImYWdyYXZlOyIsIiVFMSI6IiZhYWN1dGU7IiwiJUUyIjoiJmFjaXJjOyIsIiVFMyI6IiZhdGlsZGU7IiwiJUU0IjoiJmF1bWw7IiwiJUU1IjoiJmFyaW5nOyIsIiVFNiI6IiZhZWxpZzsiLCIlRTciOiImY2NlZGlsOyIsIiVFOCI6IiZlZ3JhdmU7IiwiJUU5IjoiJmVhY3V0ZTsiLCIlRUEiOiImZWNpcmM7IiwiJUVCIjoiJmV1bWw7IiwiJUVDIjoiJmlncmF2ZTsiLCIlRUQiOiImaWFjdXRlOyIsIiVFRSI6IiZpY2lyYzsiLAoiJUVGIjoiJml1bWw7IiwiJUYwIjoiJmV0aDsiLCIlRjEiOiImbnRpbGRlOyIsIiVGMiI6IiZvZ3JhdmU7IiwiJUYzIjoiJm9hY3V0ZTsiLCIlRjQiOiImb2NpcmM7IiwiJUY1IjoiJm90aWxkZTsiLCIlRjYiOiImb3VtbDsiLCIlRjciOiImZGl2aWRlOyIsIiVGOCI6IiZvc2xhc2g7IiwiJUY5IjoiJnVncmF2ZTsiLCIlRkEiOiImdWFjdXRlOyIsIiVGQiI6IiZ1Y2lyYzsiLCIlRkMiOiImdXVtbDsiLCIlRkQiOiImeWFjdXRlOyIsIiVGRSI6IiZ0aG9ybjsiLCIlRkYiOiImeXVtbDsifTtkPWMucmVwbGFjZSgvJVswLTlBLUZdezJ9L2lnLGZ1bmN0aW9uKGgpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgZVtoXSlyZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KGgpO3ZhciBuPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTtuLnRleHRDb250ZW50PWVbaF07cmV0dXJuIG4uaW5uZXJUZXh0fSl9ZD1kLnN1YnN0cmluZygwLGQuaW5kZXhPZigiLmh0bSIpKTthJiYoZD1kLnJlcGxhY2UoLyAvZywKIl8iKS5yZXBsYWNlKC8nL2csIiIpLnJlcGxhY2UoIi5odG1sIiwiIikpO251bGwhPShhPWQubWF0Y2goL14oMTlbMC05XXsyfXwyMFswLTldezJ9KS0oW14tXSstW14tXSspKC4qKSQvKSkmJihkPWFbMl0rIi0iK2FbMV0rYVszXSwiRU5HTElTSCI9PSgiRU5HTElTSCI9PSQoIiNhY3RpdmVzaXRlbGFuZ3VhZ2UiKS52YWwoKT8iRU5HTElTSCI6IkZSRU5DSCIpJiZiJiYoZD1hWzFdKyItIithWzJdK2FbM10pKTtyZXR1cm4gZH07ZDJjbWVkaWEuaXNIb21lcGFnZT1mdW5jdGlvbigpe3ZhciBhPXdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZTtyZXR1cm4iLyI9PWF8fCIvZW5nLyI9PWF8fCIvZnIvIj09YX07ZDJjbWVkaWEucGFnZURlcGFydG1lbnQ9ZnVuY3Rpb24oKXt2YXIgYT0kKCIjZGVmYXVsdERlcGFydG1lbnQiKS52YWwoKTtyZXR1cm4iT1RIRVIiPT1hJiZkMmNtZWRpYS5pc0hvbWVwYWdlKCk\/IkhPTUVQQUdFIjphfTsKdmFyIGpzX2QyY19nZXRfdmFsPWpzX2QyY19nZXRfdmFsfHxmdW5jdGlvbihhKXt0cnl7cmV0dXJuKGVsPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGEpKT9lbC52YWx1ZToiIn1jYXRjaChiKXtyZXR1cm4gY29uc29sZSYmY29uc29sZS5sb2cmJmNvbnNvbGUubG9nKCJTeXN0ZW0gZmFpbGVkIHdoaWxlIHJldHJpZXZpbmcgcmVwbGFjZW1lbnQgdmFsdWU6ICIrYi5tZXNzYWdlLGIpLGF9fTtTdHJpbmcucHJvdG90eXBlLm5vRDJDUmVwbGFjZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLnZhbHVlT2YoKX07CmQyY0JHQ2xpY2s9ZnVuY3Rpb24oYSl7dmFyIGI9dGhpczskLmV4dGVuZChiLGEpO3RoaXMuc2V0PWZ1bmN0aW9uKGMpeyJ1bmRlZmluZWQiPT10eXBlb2YgYyYmKGM9ITEpO3ZhciBkPWIuYmdJbWdVcmwsZT1iLmJnSW1nUGF0aCxrPWIuYmdJbWdGaXhlZCxoPWIuYmdJbWdSZXNwb25zaXZlLG49Yi5tYWtlLHg9ZG9jdW1lbnQubG9jYXRpb24ucGF0aG5hbWUucmVwbGFjZSgvLS9nLCIiKSx2PSQoIiNhY3RpdmVzaXRlbGFuZ3VhZ2UiKS52YWwoKT8kKCIjYWN0aXZlc2l0ZWxhbmd1YWdlIikudmFsKCkudG9Mb3dlckNhc2UoKToiZnJlbmNoIixmPSIiLGc9ITE7MCE9YyYmKG49Yy50b0xvd2VyQ2FzZSgpKTt2YXIgbT1jPSIiO24\/ZS5oYXNPd25Qcm9wZXJ0eShuKT8oYz1lW25dLG09a1tuXStoW25dLGc9ITApOmUuaGFzT3duUHJvcGVydHkoImFsbCIpPyhjPWUuYWxsLG09ay5hbGwraC5hbGwsZz0hMCk6ZS5oYXNPd25Qcm9wZXJ0eSh2KSYmKGM9ZVt2XSxtPWtbdl0raFt2XSk6ZS5oYXNPd25Qcm9wZXJ0eSh2KSYmCjA9PWcmJihjPWVbdl0sbT1rW3ZdK2hbdl0pO2MmJihiLmJnSW1nPWMuc3BsaXQoIi8iKS5wb3AoKSwkKCJib2R5IikuYXR0cigic3R5bGUiLCJiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJyIrYysiJyk7IGJhY2tncm91bmQtcG9zaXRpb246IHRvcCBjZW50ZXI7IGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7IittKSk7Zm9yKHZhciBsIGluIGQpe2lmKC0xIT14LmluZGV4T2YobCx4KSl7Zj1kW2xdO2JyZWFrfWlmKGw9PXYpe2Y9ZFtsXTticmVha319MD09Zi5sZW5ndGgmJihkLmhhc093blByb3BlcnR5KG4pP2Y9ZFtuXTpkLmhhc093blByb3BlcnR5KCJhbGwiKSYmKGY9ZC5hbGwpKTswPGYubGVuZ3RoJiYoZD0kKHdpbmRvdykud2lkdGgoKS8yLSQoIi53cmFwcGVyIikud2lkdGgoKS8yLGU9JCh3aW5kb3cpLndpZHRoKCkvMiskKCIud3JhcHBlciIpLndpZHRoKCkvMiwkKCIjYmdDbGljazEiKS5yZW1vdmUoKSwkKCIjYmdDbGljazIiKS5yZW1vdmUoKSwkKCJib2R5IikuYXBwZW5kKCI8ZGl2IGlkPSdiZ0NsaWNrMScgc3R5bGU9J3otaW5kZXg6MTAwO2N1cnNvcjpwb2ludGVyO3dpZHRoOiIrCmQrInB4O2hlaWdodDoxMDAlO3Bvc2l0aW9uOmZpeGVkO2xlZnQ6MHB4O3RvcDowcHg7Jz48L2Rpdj4iKSwkKCJib2R5IikuYXBwZW5kKCI8ZGl2IGlkPSdiZ0NsaWNrMicgc3R5bGU9J3otaW5kZXg6MTAwO2N1cnNvcjpwb2ludGVyO3dpZHRoOiIrZCsicHg7aGVpZ2h0OjEwMCU7cG9zaXRpb246Zml4ZWQ7bGVmdDoiK2UrInB4O3RvcDowcHg7Jz48L2Rpdj4iKSwkKCIjYmdDbGljazEiKS5vbigiY2xpY2siLGZ1bmN0aW9uKCl7Yi5yZWRpcmVjdChmKX0pLCQoIiNiZ0NsaWNrMiIpLm9uKCJjbGljayIsZnVuY3Rpb24oKXtiLnJlZGlyZWN0KGYpfSkpfTt0aGlzLnJlc2V0PWZ1bmN0aW9uKGMpe2Iuc2V0KCl9O3RoaXMucmVkaXJlY3Q9ZnVuY3Rpb24oYyl7ImxpdmUiPT1iLmRlcGxveW1lbnRUeXBlJiYoZ2FUcmFjaygiX3RyYWNrRXZlbnQiLCJDbGlxdWVzIiwiSW1hZ2UtZGUtZm9uZCIsYi5iZ0ltZywxKSwiZnVuY3Rpb24iPT10eXBlb2YgYi5kMmNFdmVudCYmYi5kMmNFdmVudC5jYWxsKGIsCmIuYmdJbWcpKTt3aW5kb3cub3BlbihjKX07JCh3aW5kb3cpLm9uKCJyZXNpemUiLGIucmVzZXQpO3JldHVybiB0aGlzfTt2YXIgaW5qZWN0R29vZ2xlTWFwc0tleT1mdW5jdGlvbihhKXtsZXQgYj1udWxsO3JldHVybiBmdW5jdGlvbihjKXtpZihiKXJldHVybiBjKGIpO2EuYWpheCgiL2FqYXgvZ2V0R29vZ2xlTWFwc0tleSIpLmRvbmUoZnVuY3Rpb24oZCl7Yj0oZC5rZXk\/ZC5rZXk6IiIpLnJlcGxhY2UoL1teQS16MC05Xy1dL2csIiIpO2MoYil9KX19KGpRdWVyeSk7CmZ1bmN0aW9uIHJoc1Byb21vSW1hZ2UoYSl7dmFyIGI9dGhpcztiLmRhdGE9YTt2YXIgYz1bXSxkPS0xO2E9d2luZG93LmxvY2F0aW9uO2E9ZGVjb2RlVVJJQ29tcG9uZW50KGEucGF0aG5hbWUrYS5zZWFyY2gpLnRvTG93ZXJDYXNlKCk7Zm9yKHNlYXJjaCBpbiBiLmRhdGEpaWYoImRlZmF1bHQiPT1zZWFyY2h8fC0xIT1hLmluZGV4T2YoZGVjb2RlVVJJQ29tcG9uZW50KChzZWFyY2grIiIpLnRvTG93ZXJDYXNlKCkpKSlmb3IoaT0wO2k8Yi5kYXRhW3NlYXJjaF0ubGVuZ3RoO2krKyljLnB1c2goYi5kYXRhW3NlYXJjaF1baV0pO2Iucm90YXRlPWZ1bmN0aW9uKCl7KytkPmMubGVuZ3RoLTEmJihkPTApO3ZhciBlPWNbZF0saz0kKCI8aW1nIC8+IikuYXR0cih7c3JjOmUuaSxzdHlsZToid2lkdGg6MTAwJTsgbWF4LXdpZHRoOjI4MHB4OyBib3JkZXItcmFkaXVzOiA1cHg7IGN1cnNvcjpwb2ludGVyOyIsYWx0OiIifSk7JCgiZGl2I3JpZ2h0UHJvbW9JbWFnZSIpLmh0bWwoayk7bnVsbCE9CmUudSYmMDxlLnUubGVuZ3RoJiYkKCJkaXYjcmlnaHRQcm9tb0ltYWdlIikuYXR0cigib25jbGljayIsIndpbmRvdy5sb2NhdGlvbiA9ICciK2UudSsiJyIpOyQoImRpdiNyaWdodFByb21vSW1hZ2UiKS5zaG93KCk7MSE9Yy5sZW5ndGgmJnNldFRpbWVvdXQoYi5yb3RhdGUsZS5kZWxheSl9OzA8Yy5sZW5ndGgmJmIucm90YXRlKCl9ZnVuY3Rpb24gY2xlYW5UZXh0KGEpe2E9YS5yZXBsYWNlKC9bXHg2MF0vZywiJyIpO2E9YS5yZXBsYWNlKC\/igJkvZywiJyIpO2E9YS5yZXBsYWNlKC9gL2csIiciKTtyZXR1cm4gYS5yZXBsYWNlKC9bXHUyMDE5XeKAmS9nLCInIil9CmZ1bmN0aW9uIGVuY29kZVRleHQoYSl7dmFyIGI9YTt0cnl7Yj0kLmJhc2U2NC5lbmNvZGUoYSl9Y2F0Y2goayl7Y29uc29sZS5sb2coay5tZXNzYWdlLGspO2E9IiI7Zm9yKHZhciBjPTA7YzxiLmxlbmd0aDtjKyspe3ZhciBkPWIuY2hhckF0KGMpLGU9ZC5jaGFyQ29kZUF0KDApO2lmKDQ3PGUmJjU4PmV8fDY0PGUmJjkxPmV8fDk2PGUmJjEyMz5lKWErPWQ7ZWxzZSB0cnl7JC5iYXNlNjQuZW5jb2RlKGQpLGErPWR9Y2F0Y2goaCl7fX1iPSQuYmFzZTY0LmVuY29kZShhKX1yZXR1cm4gYn1mdW5jdGlvbiBjbGVhbkFuZEVuY29kZVRleHQoYSl7dHJ5e3ZhciBiPSIiO2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgYSlyZXR1cm4iIjtiPSJzdHJpbmciIT10eXBlb2YgYT9hLnRvU3RyaW5nKCk6YTtiPWNsZWFuVGV4dChiKTtyZXR1cm4gZW5jb2RlVGV4dChiKX1jYXRjaChjKXtyZXR1cm4gY29uc29sZS5sb2coYy5tZXNzYWdlLGMpLGF9fQpmdW5jdGlvbiBFeFBob25lKGEpe3N3aXRjaChhLnR5cGUpe2Nhc2UgIm1vdXNlZW50ZXIiOiQoIi5leHRlbmRlZFBob25lIikuc2hvdygpO2JyZWFrO2Nhc2UgIm1vdXNlbGVhdmUiOiQoIi5leHRlbmRlZFBob25lIikuaGlkZSgpfX1mdW5jdGlvbiBnZXRSZXNpemVkSW1hZ2VzKCl7ZGVidWdFbmFibGVkKCk7cmV0dXJuITF9ZnVuY3Rpb24gY2hhbmdlSG9tZUFjdGlvbkJhY2tJbWFnZShhLGIpeyQoYSkuY3NzKHtiYWNrZ3JvdW5kOiJ1cmwoIitiKyIpIixiYWNrZ3JvdW5kUmVwZWF0OiJuby1yZXBlYXQiLGJhY2tncm91bmRTaXplOiIyNDBweCAxMjFweCJ9KX12YXIgX19jdXJyZW50VGhyZWFzaG9sZDsKZnVuY3Rpb24gdGhyZWFkaG9sZFNjcm9sbFBlcmNlbnQoKXtfX2N1cnJlbnRUaHJlYXNob2xkfHwoX19jdXJyZW50VGhyZWFzaG9sZD0oJCh3aW5kb3cpLmhlaWdodCgpKyQoZG9jdW1lbnQpLnNjcm9sbFRvcCgpKS8kKGRvY3VtZW50KS5oZWlnaHQoKSxzZXRUaW1lb3V0KCJfX2N1cnJlbnRUaHJlYXNob2xkID0gbnVsbCIsMzMzKSk7cmV0dXJuIF9fY3VycmVudFRocmVhc2hvbGR9CmZ1bmN0aW9uIHRocmVzaG9sZEV4ZWMoYSxiLGMpe3ZhciBkPW51bGw7Yz1jP2M6W107aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGEpe3ZhciBlPU1hdGgucm91bmQoMUU0KmEpLzFFNDsxPGUmJihlLz0xMDApO2E9ZnVuY3Rpb24oKXtyZXR1cm4gZX19dmFyIGs9ZnVuY3Rpb24oKXtpZih0aHJlYWRob2xkU2Nyb2xsUGVyY2VudCgpPmEoKSl7dHJ5e2IuYXBwbHkobnVsbCxjKX1jYXRjaChoKXtjb25zb2xlLmxvZyhoKX1kPWNsZWFySW50ZXJ2YWwoZCl9fTskKGZ1bmN0aW9uKCl7c2V0VGltZW91dChmdW5jdGlvbigpe2Q9c2V0SW50ZXJ2YWwoaywzMzMpfSwyRTMpfSl9CmZ1bmN0aW9uIHNjcm9sbHVwRXhlYyhhKXt2YXIgYj1udWxsLGM9MCxkPWZ1bmN0aW9uKCl7JCh3aW5kb3cpLm9uKCJzY3JvbGwiLGZ1bmN0aW9uKGUpe2U9JCh0aGlzKS5zY3JvbGxUb3AoKTtlPGMmJihhLmNhbGwobnVsbCksYj1jbGVhckludGVydmFsKGIpKTtjPWV9KX07JChmdW5jdGlvbigpe2I9c2V0SW50ZXJ2YWwoZCwzMzMpfSl9ZnVuY3Rpb24gaW5WaWV3RXhlYyhhLGIpe3RocmVzaG9sZEV4ZWMoZnVuY3Rpb24oKXt2YXIgYz0kKGEpO3RyeXtyZXR1cm4hYy5sZW5ndGh8fGMuaXMoIjpoaWRkZW4iKXx8MD09Yy5vZmZzZXQoKS50b3A\/Ljk1OmMub2Zmc2V0KCkudG9wLyQoZG9jdW1lbnQpLmhlaWdodCgpfWNhdGNoKGQpe3JldHVybi45NX19LGIsW2FdKX12YXIgbHRfSUU5PSJmdW5jdGlvbiIhPXR5cGVvZiBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyPyEwOiExLGx0X0lFMTE9MD09IWRvY3VtZW50LmFsbDsKZnVuY3Rpb24gaXNJRSgpe3ZhciBhPWRvY3VtZW50LmRvY3VtZW50TW9kZTt0cnl7ZG9jdW1lbnQuZG9jdW1lbnRNb2RlPSIifWNhdGNoKGMpe312YXIgYj0ibnVtYmVyIj09dHlwZW9mIGRvY3VtZW50LmRvY3VtZW50TW9kZXx8KG5ldyBGdW5jdGlvbigicmV0dXJuLypAY2Nfb24hQCovITEiKSkoKTt0cnl7ZG9jdW1lbnQuZG9jdW1lbnRNb2RlPWF9Y2F0Y2goYyl7fXJldHVybiBifXZhciB0PTA7X19zdGFydD1mdW5jdGlvbigpe3Q9KG5ldyBEYXRlKS5nZXRUaW1lKCl9O19fc3RvcD1mdW5jdGlvbigpe3ZhciBhPShuZXcgRGF0ZSkuZ2V0VGltZSgpO2NvbnNvbGUubG9nKCJ0b29rIiwoYS10KS8xRTMpfTt2YXIgYWxlcnRGYWxsYmFjaz0hMDtpZigidW5kZWZpbmVkIj09PXR5cGVvZiBjb25zb2xlfHwidW5kZWZpbmVkIj09PXR5cGVvZiBjb25zb2xlLmxvZyljb25zb2xlPXt9LGNvbnNvbGUubG9nPWFsZXJ0RmFsbGJhY2s\/ZnVuY3Rpb24oYSl7fTpmdW5jdGlvbigpe307CkFycmF5LnByb3RvdHlwZS5tYXB8fChBcnJheS5wcm90b3R5cGUubWFwPWZ1bmN0aW9uKGEsYil7dmFyIGMsZDtpZihudWxsPT10aGlzKXRocm93IG5ldyBUeXBlRXJyb3IoIiB0aGlzIGlzIG51bGwgb3Igbm90IGRlZmluZWQiKTt2YXIgZT1PYmplY3QodGhpcyksaz1lLmxlbmd0aD4+PjA7aWYoImZ1bmN0aW9uIiE9PXR5cGVvZiBhKXRocm93IG5ldyBUeXBlRXJyb3IoYSsiIGlzIG5vdCBhIGZ1bmN0aW9uIik7MTxhcmd1bWVudHMubGVuZ3RoJiYoYz1iKTt2YXIgaD1BcnJheShrKTtmb3IoZD0wO2Q8azspe2lmKGQgaW4gZSl7dmFyIG49ZVtkXTtuPWEuY2FsbChjLG4sZCxlKTtoW2RdPW59ZCsrfXJldHVybiBofSk7QXJyYXkucHJvdG90eXBlLmluZGV4T2Z8fChBcnJheS5wcm90b3R5cGUuaW5kZXhPZj1mdW5jdGlvbihhLGIpe2I9Ynx8MDtmb3IodmFyIGM9dGhpcy5sZW5ndGg7YjxjO2IrKylpZih0aGlzW2JdPT09YSlyZXR1cm4gYjtyZXR1cm4tMX0pOwpBcnJheS5wcm90b3R5cGUucmVkdWNlfHxPYmplY3QuZGVmaW5lUHJvcGVydHkoQXJyYXkucHJvdG90eXBlLCJyZWR1Y2UiLHt2YWx1ZTpmdW5jdGlvbihhKXtpZihudWxsPT09dGhpcyl0aHJvdyBuZXcgVHlwZUVycm9yKCJBcnJheS5wcm90b3R5cGUucmVkdWNlIGNhbGxlZCBvbiBudWxsIG9yIHVuZGVmaW5lZCIpO2lmKCJmdW5jdGlvbiIhPT10eXBlb2YgYSl0aHJvdyBuZXcgVHlwZUVycm9yKGErIiBpcyBub3QgYSBmdW5jdGlvbiIpO3ZhciBiPU9iamVjdCh0aGlzKSxjPWIubGVuZ3RoPj4+MCxkPTA7aWYoMjw9YXJndW1lbnRzLmxlbmd0aCl2YXIgZT1hcmd1bWVudHNbMV07ZWxzZXtmb3IoO2Q8YyYmIShkIGluIGIpOylkKys7aWYoZD49Yyl0aHJvdyBuZXcgVHlwZUVycm9yKCJSZWR1Y2Ugb2YgZW1wdHkgYXJyYXkgd2l0aCBubyBpbml0aWFsIHZhbHVlIik7ZT1iW2QrK119Zm9yKDtkPGM7KWQgaW4gYiYmKGU9YShlLGJbZF0sZCxiKSksZCsrO3JldHVybiBlfX0pOwpBcnJheS5wcm90b3R5cGUuZm9yRWFjaHx8KEFycmF5LnByb3RvdHlwZS5mb3JFYWNoPWZ1bmN0aW9uKGEpe3ZhciBiLGM7aWYobnVsbD09dGhpcyl0aHJvdyBuZXcgVHlwZUVycm9yKCJ0aGlzIGlzIG51bGwgb3Igbm90IGRlZmluZWQiKTt2YXIgZD1PYmplY3QodGhpcyksZT1kLmxlbmd0aD4+PjA7aWYoImZ1bmN0aW9uIiE9PXR5cGVvZiBhKXRocm93IG5ldyBUeXBlRXJyb3IoYSsiIGlzIG5vdCBhIGZ1bmN0aW9uIik7MTxhcmd1bWVudHMubGVuZ3RoJiYoYj1hcmd1bWVudHNbMV0pO2ZvcihjPTA7YzxlOyljIGluIGQmJmEuY2FsbChiLGRbY10sYyxkKSxjKyt9KTtmdW5jdGlvbiBnZXREYXRhQXR0cmlidXRlcyhhKXtyZXR1cm4gYS5kYXRhc2V0fHxbXS5zbGljZS5jYWxsKGEuYXR0cmlidXRlcykucmVkdWNlKGZ1bmN0aW9uKGIsYyl7cmV0dXJuL15kYXRhLS8udGVzdChjLm5hbWUpJiYoYltjLm5hbWUuc3Vic3RyKDUpXT1jLnZhbHVlKSxifSx7fSl9CmZ1bmN0aW9uIGdldFBhcmFtZXRlckJ5TmFtZShhKXthPWEucmVwbGFjZSgvW1xbXS8sIlxcWyIpLnJlcGxhY2UoL1tcXV0vLCJcXF0iKTthPShuZXcgUmVnRXhwKCJbXFw\/Jl0iK2ErIj0oW14mI10qKSIpKS5leGVjKGxvY2F0aW9uLnNlYXJjaCk7cmV0dXJuIG51bGw9PWE\/IiI6ZGVjb2RlVVJJQ29tcG9uZW50KGFbMV0ucmVwbGFjZSgvXCsvZywiICIpKX0KZnVuY3Rpb24gc2hvd1RyYWRlSW5Qb3B1cChhKXtpZigwPT0kKCIjdHJhZGVpbkxpbmtQb3B1cENvbnRhaW5lciIpLmxlbmd0aCl7dmFyIGI9Ijc1MHB4IixjPSI1NzBweCI7MT09L01vYmkvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkmJihiPSIzMDBweCIsYz0iNjAwcHgiKTskKCJib2R5IikuYXBwZW5kKCc8ZGl2IGlkPSJ0cmFkZWluTGlua1BvcHVwQ29udGFpbmVyIiBzdHlsZT0id2lkdGg6ICcrYisiOyBoZWlnaHQ6ICIrYysnIj48ZGl2IGNsYXNzPSJjbG9zZS1yZXZlYWwtbW9kYWwiPiYjMjE1OzwvZGl2PjxpZnJhbWUgc3JjPSInK2ErJyIgYWxsb3d0cmFuc3BhcmVuY3k9InRydWUiICBjbGFzcz0iLXQwIC1sMCAtdzEwMHAgLWgxMDBwIiBpZD0idHJhZGVpbkxpbmtQb3B1cElmcmFtZSI+PC9pZnJhbWU+PC9kaXY+Jyl9JCgiI3RyYWRlaW5MaW5rUG9wdXBDb250YWluZXIiKS5wb3B1cGl6ZSgpLnNldFRyaWdnZXIoImNsaWNrIikub3BlbigpfQpmdW5jdGlvbiBjdXJyZW50UHJvbW9SZWRpcmVjdCgpe2V2ZW50LnByZXZlbnREZWZhdWx0KCk7c3dpdGNoKCEwKXtjYXNlICJmdW5jdGlvbiI9PXR5cGVvZiBzaG93UG9wdXBXaWRnZXQ6c2hvd1BvcHVwV2lkZ2V0KCk7YnJlYWs7Y2FzZSAidW5kZWZpbmVkIiE9dHlwZW9mICQoIiNWaWV3UHJvbW9BY3Rpb25Cb3hMaW5rIikuYXR0cigiaHJlZiIpOiQoIiNWaWV3UHJvbW9BY3Rpb25Cb3hMaW5rIilbMF0uY2xpY2soKTticmVhaztjYXNlICJ1bmRlZmluZWQiIT10eXBlb2YgJCgiI3Byb21vdGlvblNpZGVWQnV0dG9uIGEiKS5hdHRyKCJocmVmIik6JCgiI3Byb21vdGlvblNpZGVWQnV0dG9uIGEiKVswXS5jbGljaygpO2JyZWFrO2Nhc2UgInVuZGVmaW5lZCIhPXR5cGVvZiAkKCIjVmlld0N1c3RvbVByb21vQWN0aW9uQm94TGluayIpLmF0dHIoImhyZWYiKTokKCIjVmlld0N1c3RvbVByb21vQWN0aW9uQm94TGluayIpWzBdLmNsaWNrKCl9fQpmdW5jdGlvbiBzaG93TmV3UmViYXRlQ29kZVBvcHVwKCl7MCE9JCgiI2Rpc2FibGVQb3B1cHMiKS5sZW5ndGgmJjAhPSQoIiNkaXNhYmxlUG9wdXBzIikudmFsKCl8fCQoIiNJbWFnZVBvcHVwQ29udGFpbmVyX25ld3JlYmF0ZSIpLnBvcHVwaXplKCkuc2V0VHJpZ2dlcigiY2xpY2siKS5vcGVuKCl9ZnVuY3Rpb24gc2hvd05ld0Jlc3RQcmljZVZkcFBvcHVwKCl7MCE9JCgiI2Rpc2FibGVQb3B1cHMiKS5sZW5ndGgmJjAhPSQoIiNkaXNhYmxlUG9wdXBzIikudmFsKCl8fCQoIiNiZXN0UHJpY2VWZHBOZXdQb3B1cENvbnRhaW5lciIpLnBvcHVwaXplKCkuc2V0VHJpZ2dlcigiY2xpY2siKS5vcGVuKCl9CmZ1bmN0aW9uIHByaW50X3Byb21vX3ByZXYoYSl7dmFyIGI9ITEsYz0kKGEpLnBhcmVudHMoIi5wcm9tb3MiKTthPWMuZmluZCgiLnByb21vLXRpdGxlIikuaHRtbCgpO3ZhciBkPWMuZmluZCgiLnByb21vLWRlc2MiKS5odG1sKCk7Yz1jLmZpbmQoIi5wcm9tby1pbWFnZSBpbWciKS5hdHRyKCJkYXRhLXByaW50LXNyYyIpOyQoIiNwcm9tb1RvUHJpbnQiKS5yZW1vdmUoKTskKCIjcHJvbW9Ub1ByaW50V3JhcCIpLnJlbW92ZSgpOyQoImJvZHkiKS5hcHBlbmQoJzxkaXYgY2xhc3M9InRvcHJpbnQiIGlkPSJwcm9tb1RvUHJpbnQiPjxpbWcgYm9yZGVyPSIwIiBzdHlsZT0id2lkdGg6MTAwJTsiIHNyYz0iJytjKyciIGFsdD0iIiBpZD0icHJvbW9JbWciPjxicj48YnI+PGI+JythKyI8L2I+PGJyPiIrZCsiPC9kaXY+Iik7JCgiI3Byb21vSW1nIikub24oImxvYWQiLGZ1bmN0aW9uKCl7Ynx8JCgiI3Byb21vVG9QcmludCIpLnByaW50RWxlbWVudCgpO2I9ITB9KTtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Ynx8CiQoIiNwcm9tb1RvUHJpbnQiKS5wcmludEVsZW1lbnQoKTtiPSEwfSwxRTMpO3JldHVybiExfWZ1bmN0aW9uIGdldE11bHRpcGxlQWRkcmVzc1Bob25lKGEpeyQoIi5tdWx0aUFkZHJlc3NQaG9uZSIpLnNsaWRlVXAoKTthPSQoIi5tdWx0aUFkZHJlc3NQaG9uZSIsJCgkKGEpLnBhcmVudCgpKSk7JChhKS5pcygiOmhpZGRlbiIpPyQoYSkuc2xpZGVEb3duKCk6JChhKS5zbGlkZVVwKCl9CmZ1bmN0aW9uIGFkZEdlbmVyYWxTdHlsZSgpe3ZhciBhPSQoIiNBRE1JTl9HRU5FUkFMX0JHX0NPTE9SIikudmFsKCksYj0kKCIjZGVmYXVsdF9ibGFja190ZXh0IikudmFsKCk7aWYoIiMwMDAwMDAiIT1ifHwiIzAwMCIhPWIpJCgiLlVzZWRWZHAyTW9iaWxlICNicmVhZGNydW1icyIpLmFkZENsYXNzKCJ0ZXh0Q29sb3IiKSwkKCJpLmZhLWZhY2Vib29rLXNxdWFyZSIpLmFkZENsYXNzKCJ0ZXh0Q29sb3IiKSwkKCIudXNlZC1kZXRhaWxzIC5kZWZhdWx0IGRpdjpmaXJzdCIpLmFkZENsYXNzKCJ0ZXh0Q29sb3IiKTsiI2ZmZmZmZiIhPWImJiIjZmZmIiE9Ynx8JCgiLlVzZWRTcnAyTW9iaWxlIC5kZWZhdWx0IC5tYWtlTW9kZWxZZWFyIikuYWRkQ2xhc3MoInRleHRDb2xvclVzZWRTUlBNb2JpbGUiKTsiI2ZmZmZmZiIhPWEmJigkKCIub2xkLWRldGFpbHMtdHIiKS5hZGRDbGFzcygiYmdOb25lIiksJCgiI3NwZWNUaXRsZSIpLmFkZENsYXNzKCJiZ05vbmUiKSwkKCIuVXNlZFZkcDJNb2JpbGUiKS5hZGRDbGFzcygib3RoZXJCRyIpKX0KZnVuY3Rpb24gYXBwZW5kVHJhZGVCb29zdEJhbm5lcigpe31kb2NSZWFkeUFyci5wdXNoKCgpPT57YXBwZW5kVHJhZGVCb29zdEJhbm5lcigpO2FkZEdlbmVyYWxTdHlsZSgpfSk7CmpRdWVyeShmdW5jdGlvbihhKXthKCIjbmF2IikuYWRkQ2xhc3MoIm5hdiIpOyhmdW5jdGlvbigpe0xDX0FQST13aW5kb3cuTENfQVBJfHx7fTtMQ19BUEkub25fdGlja2V0X2NyZWF0ZWQ9ZnVuY3Rpb24obSl7dHJ5eyhmdW5jdGlvbihsKXtudWxsIT1sJiYobD0nPGltZyBzcmM9Imh0dHBzOi8vc3RhdHMuZDJjbWVkaWEuY2Evc2VydmljZS9jb250YWN0LmdpZj90Yz0nKyhtLnRpY2tldF9pZCsiJnU9IitsKSsnIiBzdHlsZT0id2lkdGg6MXB4O2hlaWdodDoxcHg7cmlnaHQ6MTBweDt0b3A6MTBweDtwb3NpdGlvbjphYnNvbHV0ZTsiIC8+JyxhKCJib2R5IikuYXBwZW5kKGwpKX0pKGZ1bmN0aW9uKCl7dmFyIGw9InVuZGVmaW5lZCIhPT10eXBlb2Ygd2luZG93LmFjdGl2ZVByb2ZpbGVJRD93aW5kb3cuYWN0aXZlUHJvZmlsZUlEOm51bGw7cmV0dXJuIG51bGw9PWw\/Q29va2llcy5nZXQoInV1aWQiKTpsfSgpKX1jYXRjaChsKXt9fX0pKCk7aWYoImZ1bmN0aW9uIj09dHlwZW9mIG9uQ29uZmlybVN1Ym1pdClhKCIuY29uZmlybV9odG1sIikub24oInN1Ym1pdCIsCm9uQ29uZmlybVN1Ym1pdCk7dHJ5e2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgYSgiI3NsaWRlci5uaXZvU2xpZGVyIikuYXR0cigiaWQiKSl7dmFyIGI9ITEsYz0hMSxkPSExLGU9ITEsaz0hMSxoPSExLG49MTAwLHg9MTxhKCIjc2xpZGVyLm5pdm9TbGlkZXIgYSIpLmxlbmd0aD8hMDohMTthKCIjYmFubmVyX3NlYXJjaF9iYXJfY29udGFpbmVyIikubGVuZ3RoJiYoaD1rPWU9ZD1jPWI9ITAsbj1hKCIjQkFOTkVSX1NFQVJDSF9CQVJfVklERU9fT1BBQ0lUWSIpLmxlbmd0aD9hKCIjQkFOTkVSX1NFQVJDSF9CQVJfVklERU9fT1BBQ0lUWSIpLnZhbCgpOjEwMCk7ZG9jUmVhZHlBcnIucHVzaCgoKT0+e3NldFRpbWVvdXQoZnVuY3Rpb24oKXthKCIjc2xpZGVyLm5pdm9TbGlkZXIiKS5uaXZvU2xpZGVyKHtlZmZlY3Q6ImZhZGUiLGJlZm9yZUNoYW5nZTpmdW5jdGlvbigpe2EoIiNwYXJhbGxheFdyYXBwZXIiKS5lbmxsYXgoKX0sYWZ0ZXJDaGFuZ2U6ZnVuY3Rpb24oKXthKCIjc2xpZGVyLm5pdm9TbGlkZXIiKS50cmlnZ2VyKCJuaXZvU2xpZGVyQ2hhbmdlZCIpfSwKYWZ0ZXJMb2FkOmZ1bmN0aW9uKCl7YSgiI3NsaWRlci5uaXZvU2xpZGVyIikudHJpZ2dlcigibml2b1NsaWRlckxvYWRlZCIpO2EoIiNwYXJhbGxheFdyYXBwZXIiKS5lbmxsYXgoKTthKCIjYmFubmVyX3NlYXJjaF9iYXJfY29udGFpbmVyIikubGVuZ3RoJiYoYSgiI3NsaWRlci5uaXZvU2xpZGVyIikuZGF0YSgibml2bzp2YXJzIikuc3RvcCxhKCIubml2by1jb250cm9sTmF2IikuaGlkZSgpLGEoIi5uaXZvLWRpcmVjdGlvbk5hdiIpLmhpZGUoKSx0aGlzLnN0YXJ0WW91dHViZSgpKX0sbWFudWFsQWR2YW5jZTpiLHZpZGVvT25Mb29wOmMsaGlkZUNvbnRyb2w6ZCxoaWRlSW5mbzplLGZ1bGxXaWR0aDprLG11dGVWaWRlbzpoLHZpZGVvQnJpZ2h0bmVzczpuLGNvbnRyb2xOYXY6eCxkaXJlY3Rpb25OYXY6eCxzaG93RGlzY2xhaW1lcjohMH0pfSw1RTMpfSl9aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBhKCIuZXh0ZW5kZWRQaG9uZVRyaWdnZXIiKS5hdHRyKCJpZCIpKWEoIi5leHRlbmRlZFBob25lVHJpZ2dlciIpLm9uKCJtb3VzZWVudGVyIiwKRXhQaG9uZSkub24oIm1vdXNlbGVhdmUiLEV4UGhvbmUpO3ZhciB2PWZ1bmN0aW9uKCl7fTthKCIudHJhZGVpbkxpbmsiKS5vbigiY2xpY2siLGZ1bmN0aW9uKCl7aWYoYSh0aGlzKS5hdHRyKCJ0YXJnZXRVUkkiKSYmNjxhKHRoaXMpLmF0dHIoInRhcmdldFVSSSIpLmxlbmd0aClyZXR1cm4gc2hvd1RyYWRlSW5Qb3B1cChhKHRoaXMpLmF0dHIoInRhcmdldFVSSSIpKSwhMX0pO2EoIi51cF9tZW51Iikub25lKCJtb3VzZW92ZXIiLHYpO3NldFRpbWVvdXQodiwxRTQpOyhmdW5jdGlvbigpe2lmKDAhPWEoIiNNYWluTWVudV9ORVciKS5sZW5ndGgpe3ZhciBxPWEoIi5pbWdfbWVudS51cF9tZW51IHVsLm5hdiA+IGxpI01haW5NZW51X05FVyA+IHVsLnN1YiA+IGxpLmZpcnN0SXRlbSIpLHI9ITE7MCE9cS5sZW5ndGgmJihhKCIjTWFpbk1lbnVfTkVXIikuZmluZCgiLnByaWNlIikuY3NzKCJjdXJzb3IiLCJwb2ludGVyIikub24oImNsaWNrIixmdW5jdGlvbigpe3ZhciBwPWEodGhpcykuc2libGluZ3MoKS5maXJzdCgpOwp3aW5kb3cubG9jYXRpb249cC5hdHRyKCJocmVmIil9KSxhKCIjTWFpbk1lbnVfTkVXIikub24oIm1vdXNlZW50ZXIiLGZ1bmN0aW9uKCl7Y2xlYXJUaW1lb3V0KHIpO3EuYWRkQ2xhc3MoImhvdmVyIil9KSxxLnNpYmxpbmdzKCkub24oIm1vdXNlZW50ZXIiLGZ1bmN0aW9uKCl7Y2xlYXJUaW1lb3V0KHIpO3EucmVtb3ZlQ2xhc3MoImhvdmVyIil9KS5vbigibW91c2VsZWF2ZSIsZnVuY3Rpb24oKXtyPXNldFRpbWVvdXQoZnVuY3Rpb24oKXtxLmFkZENsYXNzKCJob3ZlciIpfSwzMDApfSkpfX0pKCk7YSgiaW1nW2Vycm9yaW1nXSIpLm9uKCJlcnJvciIsZnVuY3Rpb24oKXt2YXIgcT1hKHRoaXMpO3EuYXR0cigic3JjIixxLmF0dHIoImVycm9yaW1nIikpfSk7Y29uc3QgbT1hKHdpbmRvdyksbD1hKCIudXBfbWVudSIpO2lmKGwubGVuZ3RoJiYhbC5oYXNDbGFzcygibm9sb2NrIikpe2xldCBxPWwub2Zmc2V0KCkudG9wLHI9ITE7YShkb2N1bWVudCkub24oInNjcm9sbCIsKCk9PntyfHwKKHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCk9Pnt2YXIgcD1tLnNjcm9sbFRvcCgpLHc9bC5oYXNDbGFzcygiZml4ZWQiKTt3JiZwPHE\/bC5yZW1vdmVDbGFzcygiZml4ZWQiKTohdyYmcD5xJiZsLmFkZENsYXNzKCJmaXhlZCIpOyhwPWwuaGFzQ2xhc3MoImZpeGVkIikpJiZhKCIjYWxlcnRNc2dDb250YWluZXIiKS5pcygiOnZpc2libGUiKT9sLmNzcyh7dG9wOmEoIiNhbGVydE1zZ0NvbnRhaW5lciIpLm91dGVySGVpZ2h0KCkrInB4In0pOmwuYXR0cigic3R5bGUiLCIiKTt3PWEoIi5wdWxsb3V0cy5zaWRlX3RvcDp2aXNpYmxlIik7cCYmMDx3Lmxlbmd0aD8ody5maWx0ZXIoIi5wdWxsb3V0LW9wZW5lZCIpLmNzcyh7dG9wOmwuaGVpZ2h0KCkrInB4In0pLHcuZmlsdGVyKCIucHVsbG91dC1jbG9zZWQiKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIHo9YSh0aGlzKSxEPWdldF9wb3coei5hdHRyKCJpZCIpKTshei5kYXRhKCJwb3NZIikmJnouZGF0YSgicG9zWSIsLUQucG9zaXRpb24pOwpEPXouZGF0YSgicG9zWSIpK2wuaGVpZ2h0KCk7ei5jc3Moe3RvcDpEKyJweCJ9KX0pKToody5maWx0ZXIoIi5wdWxsb3V0LW9wZW5lZCIpLmNzcyh7dG9wOjB9KSx3LmZpbHRlcigiLnB1bGxvdXQtY2xvc2VkIikuZGF0YSgicG9zWSIpJiZ3LmZpbHRlcigiLnB1bGxvdXQtY2xvc2VkIikuZWFjaChmdW5jdGlvbigpe2EodGhpcykuY3NzKHt0b3A6YSh0aGlzKS5kYXRhKCJwb3NZIikrInB4In0pfSkpO3I9ITF9KSxyPSEwKX0pfXY9ZnVuY3Rpb24oKXtpZigwPT1hKCIjdHJhZGVpbkJhckZsb2F0IikubGVuZ3RoKXthKCJib2R5IikuYXBwZW5kKCc8ZGl2IGlkPSJ0cmFkZWluQmFyRmxvYXQiIHN0eWxlPSJ0ZXh0LWFsaWduOmNlbnRlcjtwb3NpdGlvbjogZml4ZWQ7d2lkdGg6IDEwMCU7ei1pbmRleDogMTAwO2Rpc3BsYXk6bm9uZTsiPjwvZGl2PicpO2EoIiN0cmFkZUluQmFyIikuY2xvbmUoITAsITApLmFwcGVuZFRvKCIjdHJhZGVpbkJhckZsb2F0IikudHJpZ2dlcigidHJhZGVJbkJhci5jbG9uZWQiKTsKaWYoYSgiI3RyYWRlSW5CYXJTdGlja3lCb3R0b20iKS5sZW5ndGgmJiIxIj09YSgiI3RyYWRlSW5CYXJTdGlja3lCb3R0b20iKS52YWwoKSl7YSgiI3RyYWRlaW5CYXJGbG9hdCIpLmNzcygiYm90dG9tIiwiLTJweCIpO3ZhciBxPWEoIi5jZXJ0aWZpZWQtZm9vdGVyIikuaGVpZ2h0KCkscj1hKCIjdHJhZGVpbkJhckZsb2F0IikuaGVpZ2h0KCk7YSgiLmNlcnRpZmllZC1mb290ZXIiKS5oZWlnaHQocStyKX1lbHNle3E9YSgiI3RyYWRlaW5CYXJGbG9hdCIpO3I9cS5jc3M7dmFyIHA9IjEiPT1hKCIjbWVudUxvY2siKS52YWwoKT80ODowOzA8YSgiI2FsZXJ0TXNnQ29udGFpbmVyIikubGVuZ3RoJiZhKCIjYWxlcnRNc2dDb250YWluZXIiKS5pcygiOnZpc2libGUiKSYmKHArPWEoIiNhbGVydE1zZ0NvbnRhaW5lciIpLm91dGVySGVpZ2h0KCkpO3IuY2FsbChxLCJ0b3AiLHApfWEoIiN0cmFkZWluQmFyRmxvYXQgLi1wYjEwIikuY3NzKHtkaXNwbGF5OiJpbmxpbmUtdGFibGUiLHdpZHRoOmEoIiNtYWluRGl2Iikud2lkdGgoKX0pfXE9CiJuZXdjYXJkZXRhaWwuaHRtbCI9PWEoIiNQQUdFSUQiKS52YWwoKXx8ImNhcmRldGFpbC5odG1sIj09YSgiI1BBR0VJRCIpLnZhbCgpO3I9Im5ld2NhcmRldGFpbC5odG1sIj09YSgiI1BBR0VJRCIpLnZhbCgpPyEwOiExO3A9MDxhKCIubWFpbkRpdkFkanVzdEhlYWRlciIpLmxlbmd0aD8hMDohMTthKCIjdHJhZGVJbkJhciIpLmlzSW5WaWV3cG9ydCgpfHxxP3E\/KHI\/YSgiLm5ld1ZkcEFjdGlvbnMiKS5pc0Fib3ZlVmlld3BvcnQoMjAwKTphKCIudXNlZFZkcEFjdGlvbnMiKS5pc0Fib3ZlVmlld3BvcnQoMjAwKSk\/YSgiI3RyYWRlaW5CYXJGbG9hdCIpLmhpZGUoKTphKCIjdHJhZGVpbkJhckZsb2F0Iikuc2hvdygpOmEoIiN0cmFkZWluQmFyRmxvYXQiKS5oaWRlKCk6KHAmJiFhKCIjdHJhZGVJbkJhciIpLmlzQWJvdmVWaWV3cG9ydCgyMDApfHwhcCkmJmEoIiN0cmFkZWluQmFyRmxvYXQiKS5zaG93KCk7MDxhKCIjYWxlcnRNc2dDb250YWluZXIiKS5sZW5ndGgmJmEoIiNhbGVydE1zZ0NvbnRhaW5lciIpLmlzKCI6aGlkZGVuIikmJgo0OCE9YSgiI3RyYWRlaW5CYXJGbG9hdCIpLmNzcygidG9wIikmJmEoIiN0cmFkZUluQmFyU3RpY2t5Qm90dG9tIikubGVuZ3RoJiYiMSIhPWEoIiN0cmFkZUluQmFyU3RpY2t5Qm90dG9tIikudmFsKCkmJmEoIiN0cmFkZWluQmFyRmxvYXQiKS5jc3MoInRvcCIsNDgpfTtmdW5jdGlvbiB1KHEscil7dmFyIHA9MDtyZXR1cm4gZnVuY3Rpb24oKXtjbGVhclRpbWVvdXQocCk7cD1zZXRUaW1lb3V0KHEscil9fWlmKGEoIiN0cmFkZUluQmFyIikubGVuZ3RoKWEoZG9jdW1lbnQpLm9uKCJzY3JvbGwiLHUodiwxMDApKTt2YXIgZj1hKCJ1bC5uYXYgPiBsaSA+IHVsID4gbGkgPiB1bCIpO2YuZWFjaChmdW5jdGlvbigpe2EodGhpcykucGFyZW50KCkub24oIm1vdXNlZW50ZXIiLGZ1bmN0aW9uKHEpe2EoInVsIix0aGlzKS5zY3JvbGxUb3AoMCl9KX0pO2Yub24oIkRPTU1vdXNlU2Nyb2xsIG1vdXNld2hlZWwiLGZ1bmN0aW9uKHEpe3ZhciByPWEodGhpcykscD10aGlzLnNjcm9sbFRvcCx3PXRoaXMuc2Nyb2xsSGVpZ2h0LAp6PXc+dGhpcy5jbGllbnRIZWlnaHQsRD1yLmhlaWdodCgpLEM9cS5vcmlnaW5hbEV2ZW50O0M9IkRPTU1vdXNlU2Nyb2xsIj09cS50eXBlPy00MCpDLmRldGFpbDpDLndoZWVsRGVsdGE7dmFyIEU9MDxDO2lmKCF6KXJldHVybiEwO3o9ZnVuY3Rpb24oRyl7ci5zY3JvbGxUb3AoRyk7cS5zdG9wUHJvcGFnYXRpb24oKTtxLnByZXZlbnREZWZhdWx0KCk7cS5yZXR1cm5WYWx1ZT0hMTtyZXR1cm4hMH07cmV0dXJuISghRSYmLUM+dy1ELXAmJnoodyl8fEUmJkM+cCYmeigwKSl9KX1jYXRjaChtKXtjb25zb2xlLmxvZygiRXJyb3IiLG0pfWlmKGEoIi51cF9tZW51LmltZ19tZW51IikubGVuZ3RoKXtmPWEoIi5pbWdfc3R5bGVfMSAjTWFpbk1lbnVfTkVXIikuY2hpbGRyZW4oIi5zdWIiKTt2YXIgZz1mLmZpbmQoIi5maXJzdEl0ZW0iKS5maW5kKCIuc3ViIik7Zi5jaGlsZHJlbigibGkiKS5vbih7bW91c2VlbnRlcjpmdW5jdGlvbigpeyFhKHRoaXMpLmlzKCIuaGFzU3ViIikmJmcuaGlkZSgpfSwKbW91c2VsZWF2ZTpmdW5jdGlvbigpeyFhKHRoaXMpLmlzKCIuaGFzU3ViIikmJmcuc2hvdygpfX0pfWEoIi5udW1lcmljIikub24oImtleXByZXNzIixmdW5jdGlvbihtKXtpZig0OD5tLmtleUNvZGV8fDU3PG0ua2V5Q29kZSltLnJldHVyblZhbHVlPSExfSk7aWYoIm9udG91Y2hzdGFydCJpbiB3aW5kb3d8fHdpbmRvdy5Eb2N1bWVudFRvdWNoJiZkb2N1bWVudCBpbnN0YW5jZW9mIERvY3VtZW50VG91Y2gpYSgiLmxlZnRfYm94IGEiKS5vbigidGFwIixmdW5jdGlvbihtKXttPWEodGhpcyk7aWYoInJhZGlvIiE9bS5hdHRyKCJ0eXBlIikmJm0uYXR0cigib25jbGljayIpKXJldHVybiBtLnRyaWdnZXIoImNsaWNrIiksITF9KSxhKCIuaGFzSXRlbXMgPiBhLCAuaGFzU3ViID4gYSIpLm9uKCJjbGljayIsZnVuY3Rpb24obSl7aWYoImNsaWNrIiE9bS50eXBlKXJldHVybiEwO3ZhciBsPWEodGhpcykuZGF0YSgiY2xpY2tDb3VudCIpO2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgbHx8IjAiPT0KbClhKCIubmF2IGxpLmhhc0l0ZW1zIGEsIC5uYXYgbGkuaGFzU3ViIGEiKS5kYXRhKCJjbGlja0NvdW50IiwiMCIpLGEodGhpcykuZGF0YSgiY2xpY2tDb3VudCIsIjEiKSxtLnByZXZlbnREZWZhdWx0KCk7ZWxzZSByZXR1cm4gZG9jdW1lbnQubG9jYXRpb249YSh0aGlzKS5hdHRyKCJocmVmIiksYSh0aGlzKS5kYXRhKCJjbGlja0NvdW50IiwiMCIpLCEwfSk7YSgiZGl2LmdtYXAtcGxhY2Vob2xkZXIiKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIG09YSh0aGlzKSxsPW0uZGF0YSgpO2luamVjdEdvb2dsZU1hcHNLZXkoZnVuY3Rpb24odSl7dT0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9tYXBzL2VtYmVkL3YxL3BsYWNlPyIrWyJxPSIrZW5jb2RlVVJJQ29tcG9uZW50KGwucGxhY2VJZCksInpvb209IitsLnpvb20sImxhbmd1YWdlPSIrbC5sYW5ndWFnZSwicmVnaW9uPUNBIiwia2V5PSIrdV0uam9pbigiJiIpO20uaHRtbCgnPGlmcmFtZSBzcmM9IicrdSsnIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSI0MDAiIGZyYW1lYm9yZGVyPSIwIiBzdHlsZT0iYm9yZGVyOjAiIGFsbG93ZnVsbHNjcmVlbj48L2lmcmFtZT4nKX0pfSk7CnRyeXthKCIuYWRkdHQiKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIG09WyJvbkNsb3NlIiwib25ZZXMiLCJvbk5vIl0sbD1hKHRoaXMpLHU9bC5kYXRhKCkscT17fSxyO2ZvcihyIGluIHUpcVtyXT1mdW5jdGlvbihwLHcpe3JldHVybi0xIT1tLmluZGV4T2YocCk\/ZnVuY3Rpb24oKXtldmFsKHcpfTp3fShyLHVbcl0pO2wuZGFya1Rvb2x0aXAocSl9KX1jYXRjaChtKXtjb25zb2xlLmxvZyhtLm1lc3NhZ2UsbSl9fSk7ZnVuY3Rpb24gY2hpbGRPZihhLGIpe2Zvcig7InVuZGVmaW5lZCIhPT10eXBlb2YgYSYmbnVsbCE9PWEmJihhPWEucGFyZW50Tm9kZSkmJmEhPT1iOyk7cmV0dXJuISFhfXZhciBNZW51SGFuZGxlcjsKKGZ1bmN0aW9uKCl7dmFyIGE7TWVudUhhbmRsZXI9ZnVuY3Rpb24gYygpe2Z1bmN0aW9uIGQoZixnKXtsZXQgbT0oZy5tb2RlbHx8IiIpLnRyaW0oKSxsPShnLnRyaW18fCIiKS50cmltKCk7Zj1mLnJlcGxhY2UoIiMjTUVOVVlFQVIjIyIsZy55ZWFyKTttJiZsJiYobS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGwudG9Mb3dlckNhc2UoKSk\/bD0iIjpsLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMobS50b0xvd2VyQ2FzZSgpKSYmKG09IiIpKTtyZXR1cm4gZi5yZXBsYWNlKCIjI01FTlVNT0RFTCMjIixtKS5yZXBsYWNlKCIjI01FTlVUUklNIyMiLGwpLnJlcGxhY2UoLyArL2csIiAiKX1pZihhKXJldHVybiBhO2E9dGhpczt0aGlzLmdldFNwZWNVcmw9ZnVuY3Rpb24oKXt2YXIgZj0iRU5HTElTSCI9PSQoIiNhY3RpdmVzaXRlbGFuZ3VhZ2UiKS52YWwoKXx8IjAiPT09JCgiI25ld190cmFuc2xhdGVkX3RpdGxlcyIpLnZhbCgpPyJlbiI6ImZyIjsiMCI9PSQoIiNtdWx0aS1sYW5ndWFnZSIpLnZhbCgpJiYKKGY9IkVOR0xJU0giPT0kKCIjYWN0aXZlc2l0ZWxhbmd1YWdlIikudmFsKCk\/ImVuIjoiZnIiKTtyZXR1cm4iL2pzb24vbmV3Y2Fyc2RldGFpbHNfIitmKyIuanNvbiJ9O3RoaXMubWVudT0kKCIubWVudTUsIC5tZW51NiwgLm1lbnU3LCAubWVudTgsIC5tZW51OSwgLm1lbnUxMCIpO3RoaXMuc3BlY3NBamF4PSQuZ2V0KHRoaXMuZ2V0U3BlY1VybCgpKTt0aGlzLmNhcnM9e2RldGFpbHM6e30sZmluZEJ5SWQ6ZnVuY3Rpb24oZil7dmFyIGc9e307JC5lYWNoKHRoaXMuZGV0YWlscy5tYWtlcyxmdW5jdGlvbihtLGwpeyQuZWFjaChsLm1vZGVscyxmdW5jdGlvbih1LHEpezE9PXEuaXNzZXJpZXN8fDE9PXEuaXNDbGFzcz8kLmVhY2gocS5zdHlsZXMsZnVuY3Rpb24ocixwKXtwLmlkPT1mJiYoZz1wKX0pOnEuaWQ9PWYmJihnPXEpfSk7JC5pc0VtcHR5T2JqZWN0KGcpfSk7cmV0dXJuIGd9fTt0aGlzLnNwZWNzQWpheC5kb25lKGZ1bmN0aW9uKGYpe2MoKS5jYXJzLmRldGFpbHM9Zn0pO3RoaXMucG9zaXRpb25zPQpmdW5jdGlvbihmLGcsbSl7cmV0dXJue3RhcmdldDokKGcuY3VycmVudFRhcmdldCksc2Vjb25kTGV2ZWxNZW51Om51bGwsd2luZG93SGVpZ2h0Om51bGwsc2Vjb25kTGV2ZWxNZW51VG9wOm51bGwsc2Vjb25kTGV2ZWxNZW51Qm90dG9tOm51bGwsc3ViTWVudUl0ZW1Ub3A6bnVsbCxzdWJNZW51SXRlbUhlaWdodDpudWxsLHN1Yk1lbnVJdGVtQm90dG9tOm51bGwsYm90dG9tQWxpZ246bnVsbCxzcGVjczpudWxsLHNwZWNzVG9wOm51bGwsc3BlY3NIZWlnaHQ6bnVsbCxzcGVjc0JvdHRvbTpudWxsLGN1c3RvbVNlY29uZExldmVsTWVudTpudWxsLHJvdW5kOmZ1bmN0aW9uKGwpe3JldHVybisoTWF0aC5yb3VuZChsKyJlKzIiKSsiZS0yIil9LHVwZGF0ZTpmdW5jdGlvbigpe3RoaXMuc2Vjb25kTGV2ZWxNZW51PSJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzLmN1c3RvbVNlY29uZExldmVsTWVudT90aGlzLmN1c3RvbVNlY29uZExldmVsTWVudSgpOnRoaXMudGFyZ2V0LmZpbmQoInVsLnN1YjpmaXJzdCIpOwp0cnl7dGhpcy53aW5kb3dIZWlnaHQ9JCh3aW5kb3cpLmhlaWdodCgpLHRoaXMuc2Vjb25kTGV2ZWxNZW51VG9wPXRoaXMuc2Vjb25kTGV2ZWxNZW51LnBvc2l0aW9uKCkudG9wLHRoaXMuc2Vjb25kTGV2ZWxNZW51SGVpZ2h0PXRoaXMuc2Vjb25kTGV2ZWxNZW51Lm91dGVySGVpZ2h0KCksdGhpcy5zZWNvbmRMZXZlbE1lbnVCb3R0b209dGhpcy5yb3VuZCh0aGlzLnNlY29uZExldmVsTWVudVRvcCt0aGlzLnNlY29uZExldmVsTWVudUhlaWdodCl9Y2F0Y2gobCl7fXRyeXt0aGlzLnN1Yk1lbnVJdGVtVG9wPSQoZikucG9zaXRpb24oKS50b3AsdGhpcy5zdWJNZW51SXRlbUhlaWdodD0kKGYpLm91dGVySGVpZ2h0KCksdGhpcy5zdWJNZW51SXRlbUJvdHRvbT10aGlzLnJvdW5kKHRoaXMuc3ViTWVudUl0ZW1IZWlnaHQrdGhpcy5zdWJNZW51SXRlbVRvcCksdGhpcy5ib3R0b21BbGlnbj10aGlzLnJvdW5kKCQoZikucGFyZW50KCJ1bCIpLm91dGVySGVpZ2h0KCkrJChmKS5wYXJlbnQoInVsIikub2Zmc2V0KCkudG9wLQp0aGlzLnNlY29uZExldmVsTWVudUJvdHRvbSl9Y2F0Y2gobCl7fXRyeXt0aGlzLnNwZWNzPW0sdGhpcy5zcGVjc1RvcD10aGlzLnNwZWNzLnBvc2l0aW9uKCkudG9wLHRoaXMuc3BlY3NIZWlnaHQ9dGhpcy5zcGVjcy5vdXRlckhlaWdodCgpLHRoaXMuc3BlY3NCb3R0b209dGhpcy5yb3VuZCh0aGlzLnNwZWNzVG9wK3RoaXMuc3BlY3NIZWlnaHQpfWNhdGNoKGwpe319LGFkanVzdFNlY29uZExldmVsOmZ1bmN0aW9uKCl7aWYoLjY1KnRoaXMud2luZG93SGVpZ2h0PHRoaXMuc2Vjb25kTGV2ZWxNZW51SGVpZ2h0KXtpZih0aGlzLnNlY29uZExldmVsTWVudS5oYXNDbGFzcygibG9jYXRpb24tZGV0YWlscyIpKXJldHVybjt0aGlzLnNlY29uZExldmVsTWVudS5yZW1vdmVBdHRyKCJzdHlsZSIpO3RoaXMuc2Vjb25kTGV2ZWxNZW51LmNzcygiaGVpZ2h0IiwuNjUqdGhpcy53aW5kb3dIZWlnaHQpO3RoaXMuc2Vjb25kTGV2ZWxNZW51LmNzcyh7Im92ZXJmbG93LXkiOiJhdXRvIix3aWR0aDoiNDAwcHgiLApwb3NpdGlvbjoic3RhdGljIixkaXJlY3Rpb246InJ0bCJ9KTt0aGlzLnNlY29uZExldmVsTWVudS5maW5kKCI+IGxpIikuY3NzKHtkaXJlY3Rpb246Imx0ciJ9KTtpZigwPT0kKGYpLmNoaWxkcmVuKCIubWFpbm1lbnUtc3VibWVudSIpLmxlbmd0aCl7dmFyIGw9JCgiPGRpdi8+Iik7bC5hZGRDbGFzcygibWFpbm1lbnUtc3VibWVudSIpO2wuZGV0YWNoKCkuYXBwZW5kKHRoaXMuc2Vjb25kTGV2ZWxNZW51KTt0aGlzLnRhcmdldC5hcHBlbmQobCl9dGhpcy51cGRhdGUoKX1pZih0aGlzLnNlY29uZExldmVsTWVudUJvdHRvbTx0aGlzLnN1Yk1lbnVJdGVtVG9wKSQoZikuYWRkQ2xhc3MoImFsaWduLWxldmVsIiksdGhpcy51cGRhdGUoKSxsPXRoaXMuc2Vjb25kTGV2ZWxNZW51Qm90dG9tPCQoZikucGFyZW50KCJ1bCIpLm91dGVySGVpZ2h0KCk\/JChmKS5vdXRlckhlaWdodCgpKyQoZikucG9zaXRpb24oKS50b3AtdGhpcy5zZWNvbmRMZXZlbE1lbnVIZWlnaHQ6JChmKS5wYXJlbnQoInVsIikub3V0ZXJIZWlnaHQoKSsKJChmKS5wYXJlbnQoInVsIikucG9zaXRpb24oKS50b3AtdGhpcy5zZWNvbmRMZXZlbE1lbnVCb3R0b20sdGhpcy5zZWNvbmRMZXZlbE1lbnUuY3NzKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGVZKCIrbCsicHgpIik7ZWxzZSBpZih0aGlzLnNlY29uZExldmVsTWVudUJvdHRvbT50aGlzLnN1Yk1lbnVJdGVtVG9wJiZ0aGlzLnN1Yk1lbnVJdGVtQm90dG9tPnRoaXMuc2Vjb25kTGV2ZWxNZW51Qm90dG9tKXtsPTA+cGFyc2VJbnQodGhpcy5zZWNvbmRMZXZlbE1lbnUuY3NzKCJsZWZ0IikucmVwbGFjZSgicHgiLCIiKSk\/InJpZ2h0IjoibGVmdCI7dmFyIHU9e3RyYW5zZm9ybToidHJhbnNsYXRlWSgiK01hdGguYWJzKHRoaXMuc2Vjb25kTGV2ZWxNZW51Qm90dG9tLXRoaXMuc3ViTWVudUl0ZW1Cb3R0b20pK3RoaXMuc2Vjb25kTGV2ZWxNZW51VG9wKyJweCkifTsicmlnaHQiIT1sJiYodVtsXT10aGlzLnRhcmdldC5wb3NpdGlvbigpLmxlZnQrdGhpcy50YXJnZXQud2lkdGgoKSk7dGhpcy5zZWNvbmRMZXZlbE1lbnUuY3NzKHUpfWVsc2UgdGhpcy5zZWNvbmRMZXZlbE1lbnVUb3A+CnRoaXMuc3ViTWVudUl0ZW1Ub3AmJnRoaXMuc2Vjb25kTGV2ZWxNZW51LmNzcygidHJhbnNmb3JtIiwidHJhbnNsYXRlWSgiK3RoaXMuc3ViTWVudUl0ZW1Ub3ArInB4KSIpfSxhZGp1c3RIb3Jpem9udGFsOmZ1bmN0aW9uKCl7dGhpcy5zZWNvbmRMZXZlbE1lbnUuaGFzQ2xhc3MoImludmlzaWJsZSIpfHx0aGlzLnNlY29uZExldmVsTWVudS5hZGRDbGFzcygiaW52aXNpYmxlIik7dmFyIGw9dGhpcy5pc0luVmlld3BvcnQodGhpcy5zZWNvbmRMZXZlbE1lbnVbMF0pLHU9MD5wYXJzZUludCh0aGlzLnNlY29uZExldmVsTWVudS5jc3MoImxlZnQiKS5yZXBsYWNlKCJweCIsIiIpKT8icmlnaHQiOiJsZWZ0IjtsfHwibGVmdCIhPT11fHwodGhpcy5zZWNvbmRMZXZlbE1lbnUuaGFzQ2xhc3MoIkwxMDAiKSYmdGhpcy5zZWNvbmRMZXZlbE1lbnUucmVtb3ZlQ2xhc3MoIkwxMDAiKSx0aGlzLnNlY29uZExldmVsTWVudS5hZGRDbGFzcygiUjEwMCIpKTtsPXt9O2xbdV09dGhpcy50YXJnZXQucG9zaXRpb24oKS5sZWZ0Kwp0aGlzLnRhcmdldC53aWR0aCgpO3RoaXMuc2Vjb25kTGV2ZWxNZW51LmNzcyhsKTt0aGlzLnNlY29uZExldmVsTWVudS5yZW1vdmVDbGFzcygiaW52aXNpYmxlIil9LGlzSW5WaWV3cG9ydDpmdW5jdGlvbihsKXtsPWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7cmV0dXJuIDA8PWwudG9wJiYwPD1sLmxlZnQmJmwuYm90dG9tPD0od2luZG93LmlubmVySGVpZ2h0fHxkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0KSYmbC5yaWdodDw9KHdpbmRvdy5pbm5lcldpZHRofHxkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGgpfX19O3RoaXMubWVudS5vbigibW91c2VlbnRlciBtb3VzZWxlYXZlIiwidWwubmF2ID4gbGkiLGZ1bmN0aW9uKGYpe3ZhciBnPWEucG9zaXRpb25zKHRoaXMsZik7Zy51cGRhdGUoKTtnLnNlY29uZExldmVsTWVudUJvdHRvbS0kKHdpbmRvdykuc2Nyb2xsVG9wKCk+Zy53aW5kb3dIZWlnaHQ\/Zy5zZWNvbmRMZXZlbE1lbnUuYWRkQ2xhc3MoInNsaW0tc3VibWVudSIpOgpnLnNlY29uZExldmVsTWVudS5yZW1vdmVDbGFzcygic2xpbS1zdWJtZW51Iik7Im1vdXNlbGVhdmUiIT09Zi50eXBlJiYoZj0kKHRoaXMpLmZpbmQoIj4gdWwiKSxmLmxlbmd0aCYmIWYuZGF0YSgiY2FsY3VsYXRlZCIpJiYoZz0kKHRoaXMpLm91dGVyV2lkdGgoKSxmLm91dGVyV2lkdGgoKTxnJiZmLmNzcygid2lkdGgiLGcrMSksZi5kYXRhKCJjYWxjdWxhdGVkIiwhMCkpKX0pO3RoaXMubWVudS5vbigibW91c2VlbnRlciBtb3VzZWxlYXZlIiwiI01haW5NZW51X05FVyA+IHVsLnN1YiA+IGxpIixmdW5jdGlvbihmKXt2YXIgZz1hLnBvc2l0aW9ucyh0aGlzLGYpOzAhPSQoZi5jdXJyZW50VGFyZ2V0KS5maW5kKCJ1bC5zdWIgPiBsaSIpLmxlbmd0aCYmIm1vdXNlbGVhdmUiIT1mLnR5cGUmJihnLnVwZGF0ZSgpLGcuYWRqdXN0U2Vjb25kTGV2ZWwoKSl9KTt0aGlzLm1lbnUub24oIm1vdXNlZW50ZXIgbW91c2VsZWF2ZSIsIiNNYWluTWVudV9ERUFMRVJTSElQUyA+IHVsLnN1YiBsaS5sb2NhdGlvbi1uYW1lcyIsCmZ1bmN0aW9uKGYpe3ZhciBnPWEucG9zaXRpb25zKHRoaXMsZiksbT0kKGYuY3VycmVudFRhcmdldCkuZmluZCgiLmxvY2F0aW9uLWRldGFpbHMiKTtnLmN1c3RvbVNlY29uZExldmVsTWVudT1mdW5jdGlvbigpe3JldHVybiBtfTswIT0kKGYuY3VycmVudFRhcmdldCkuZmluZCgiLmxvY2F0aW9uLWRldGFpbHMiKS5sZW5ndGgmJiJtb3VzZWxlYXZlIiE9Zi50eXBlJiYoJChmLmN1cnJlbnRUYXJnZXQpLmZpbmQoIi5sb2NhdGlvbi1kZXRhaWxzIikub24oImxhenlsb2FkZWQiLGZ1bmN0aW9uKGwpe2cuY3VzdG9tU2Vjb25kTGV2ZWxNZW51KCkuYXR0cigic3R5bGUiLG51bGwpO2cudXBkYXRlKCk7Zy5hZGp1c3RIb3Jpem9udGFsKCk7Zy5hZGp1c3RTZWNvbmRMZXZlbCgpfSksZy5jdXN0b21TZWNvbmRMZXZlbE1lbnUoKS5hdHRyKCJzdHlsZSIsbnVsbCksZy51cGRhdGUoKSxnLmFkanVzdEhvcml6b250YWwoKSxnLmFkanVzdFNlY29uZExldmVsKCkpfSk7dGhpcy5tZW51Lm9uKCJtb3VzZWVudGVyIG1vdXNlbGVhdmUiLAonI01haW5NZW51X1RBQl9DT01NRVJDSUFMID4gdWwuc3ViID4gW2RhdGEtaWQ9IlNVQl9UQUJfQ09NTUVSQ0lBTF9DT01NRVIiXScsZnVuY3Rpb24oZil7Zj1hLnBvc2l0aW9ucyh0aGlzLGYpO2YudXBkYXRlKCk7Zi5hZGp1c3RTZWNvbmRMZXZlbCgpfSk7aWYoImZvcmRfbGluY29sbl9leHRlcm5hbCI9PSQoIiNERUFMRVJQQVJUUkVESVJFQ1RUWVBFIikudmFsKCkmJjA8JCgiI0RFQUxFUkJSQU5EIikubGVuZ3RoJiYkKCIjREVBTEVSQlJBTkQiKS52YWwoKS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKCJmb3JkIikmJiIiIT0kKCIjREVBTEVSUEFDT0RFIikudmFsKCkpe3ZhciBlPSQoImh0bWwiKS5hdHRyKCJsYW5nIiksaz0kKCIjREVBTEVSUEFDT0RFIikudmFsKCksaD0iZW4iPT1lPyIvcmVxdWVzdHMvY2FyLXBhcnRzLWFuZC1hY2Nlc3Nvcmllcy5odG1sIjoiL2RlbWFuZGVzL2NvbW1hbmRlLXBpZWNlcy1hY2Nlc3NvaXJlcy1hdXRvbW9iaWxlcy5odG1sIixuPSJodHRwczovL2ZvcmRhY2Nlc3MuY29tL0ZvcmQuYXNweD9sb2NhdGlvbj0iKwprO3RoaXMubWVudS5vbigibW91c2VlbnRlciBtb3VzZWxlYXZlIiwiI01haW5NZW51X1NFUlZJQ0UgdWwuc3ViIGxpW2RhdGEtaWQ9J1BJRUNFUyddIixmdW5jdGlvbigpe3ZhciBmPSQodGhpcyk7Zj0kKCI+IGEiLGYpO2YuYXR0cigiaHJlZiIpPT1oJiYoZi5hdHRyKCJocmVmIixuKSxmLmF0dHIoInRhcmdldCIsIl9ibGFuayIpKX0pfXRoaXMubWVudS5vbigibW91c2VlbnRlciBtb3VzZWxlYXZlIiwiI01haW5NZW51X0ZJTkFOQ0UgPiBhIixmdW5jdGlvbigpe3ZhciBmPSQodGhpcyksZz0kKCJodG1sIikuYXR0cigibGFuZyIpLG09JCgiI0RFQUxFUlBBQ09ERSIpLnZhbCgpLGw9JCgiI0RFQUxFUkJSQU5EX1BSSU1BUlkiKS52YWwoKS50b0xvd2VyQ2FzZSgpOyJmb3JkX2xpbmNvbG5fZXh0ZXJuYWwiIT0kKCIjRklOQU5DRUZPUk1UWVBFIikudmFsKCl8fCJmb3JkIiE9bCYmImxpbmNvbG4iIT1sfHwiIj09bXx8KGYuYXR0cigiaHJlZiIsImZvcmQiPT1sPygiZW4iPT1nPyJodHRwczovL3d3dy5mb3JkLmNhL2ZpbmFuY2UvYXBwbHkvMT9Tb3VyY2VPZkRhdGE9Q0FEQ0YmZGVhbGVySWQ9IjoKImh0dHBzOi8vZnIuZm9yZC5jYS9maW5hbmNlL2FwcGx5LzE\/U291cmNlT2ZEYXRhPUNBRENGJmRlYWxlcklkPSIpK206KCJlbiI9PWc\/Imh0dHBzOi8vd3d3LmxpbmNvbG5jYW5hZGEuY29tL2ZpbmFuY2UvYXBwbHkvMT9Tb3VyY2VPZkRhdGE9Q0FEQ0wmZGVhbGVySWQ9IjoiaHR0cHM6Ly9mci5saW5jb2xuY2FuYWRhLmNvbS9maW5hbmNlL2FwcGx5LzE\/U291cmNlT2ZEYXRhPUNBRENMJmRlYWxlcklkPSIpK20pLGYuYXR0cigidGFyZ2V0IiwiX2JsYW5rIikpfSk7c2V0VGltZW91dChmdW5jdGlvbigpe2lmKDA8JCgiI2QyYy1ibnAtbGlua3J1bGVzLXRleHRhcmVhIikubGVuZ3RoJiYiIiE9JCgiI2QyYy1ibnAtbGlua3J1bGVzLXRleHRhcmVhIikudmFsKCkmJiIjI0xJTktSVUxFUyMjIiE9JCgiI2QyYy1ibnAtbGlua3J1bGVzLXRleHRhcmVhIikudmFsKCkpe2lmKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIi5jdGEtdHBsIikubGVuZ3RoJiYidW5kZWZpbmVkIiE9PXR5cGVvZiBuZXdjYXJEZXRhaWxzJiYKInVuZGVmaW5lZCIhPT10eXBlb2YgbmV3Y2FyRGV0YWlscy5hY3RpdmVNb2RlbCl7aWYoITE9PT0oImNvbW1lcmNpYWwiPT1uZXdjYXJEZXRhaWxzLmFjdGl2ZU1vZGVsLnNlY3Rpb24\/ITA6ITEpKXJldHVybjtkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCIuY3RhLXRwbCBhIikuZm9yRWFjaCgoZixnKT0+e2c9Zi5nZXRBdHRyaWJ1dGUoImhyZWYiKTtpZihnLmluY2x1ZGVzKCJzaG9wLmZvcmQuY2EiKSl7bGV0IG09ITE7Zy5pbmNsdWRlcygic3VwZXJkdXR5IikmJihtPWcucmVwbGFjZSgiL3N1cGVyZHV0eS8iLCIvc3VwZXJkdXR5LWNvbW1lcmNpYWwvIikpOyExIT09bSYmZi5zZXRBdHRyaWJ1dGUoImhyZWYiLG0pfX0pfWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIiNjbGFzc2NvbW1lcmNpYWxfY29udGFpbmVyIikubGVuZ3RoJiZkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCIuZGl2Q2FyU2luZ2xlT3V0ZXJCb3ggYSIpLmZvckVhY2goKGYsZyk9PntnPWYuZ2V0QXR0cmlidXRlKCJocmVmIik7CmlmKGcuaW5jbHVkZXMoInNob3AuZm9yZC5jYSIpKXtsZXQgbT0hMTtnLmluY2x1ZGVzKCJzdXBlcmR1dHkiKSYmKG09Zy5yZXBsYWNlKCIvc3VwZXJkdXR5LyIsIi9zdXBlcmR1dHktY29tbWVyY2lhbC8iKSk7ITEhPT1tJiZmLnNldEF0dHJpYnV0ZSgiaHJlZiIsbSl9fSl9fSwyRTMpO3RoaXMubWVudS5vbigibW91c2VlbnRlciBtb3VzZWxlYXZlIiwiI01haW5NZW51X05FVyA+IHVsLnN1YiA+IGxpID4gdWwuc3ViID4gbGkgPiB1bC5zdWIgPiBsaSwgI01haW5NZW51X05FVyA+IHVsLnN1YiA+IGxpID4gLm1haW5tZW51LXN1Ym1lbnUgPiB1bC5zdWIgPiBsaSA+IHVsLnN1YiA+IGxpLCAgI01haW5NZW51X1RBQl9DT01NRVJDSUFMID4gdWwuc3ViID4gbGkgPiB1bC5zdWIgPiBsaSA+IHVsLnN1YiA+IGxpLCAjTWFpbk1lbnVfVEFCX0NPTU1FUkNJQUwgPiB1bC5zdWIgPiBsaSA+IC5tYWlubWVudS1zdWJtZW51ID4gdWwuc3ViID4gbGkgPiB1bC5zdWIgPiBsaSIsZnVuY3Rpb24oZil7aWYoIm1vdXNlbGVhdmUiIT0KZi50eXBlKXt2YXIgZz0kKHRoaXMpLmZpbmQoIi5tZW51LXRlY2gtc3BlY3MiKTswPT1nLmxlbmd0aCYmKGc9JCgiI21lbnUtc3BlY3MtdGVtcGxhdGUiKS5jbG9uZSgpKTt2YXIgbT10aGlzO2lmKDA9PSQobSkuY2hpbGRyZW4oIi5tZW51LXRlY2gtc3BlY3MiKS5sZW5ndGgpe3ZhciBsPSQobSkuZmluZCgiYTpudGgtb2YtdHlwZSgyKSIpLnRleHQoKSx1PSQobSkuZmluZCgiYTpmaXJzdC1jaGlsZCIpLmF0dHIoImhyZWYiKSxxPXUubGFzdEluZGV4T2YoIi8iKSsxO2NhckxpbmtUcmltbWVkPXUuc3Vic3RyaW5nKHEsdS5sZW5ndGgpO3ZhciByPSQoIiN0eHRCdWlsZEFuZFByaWNlRm9sZGVyUGF0aCIpLnZhbCgpK2NhckxpbmtUcmltbWVkOyhmdW5jdGlvbigpe2lmKDA8JCgiI2QyYy1ibnAtbGlua3J1bGVzLXRleHRhcmVhIikubGVuZ3RoJiYiIiE9JCgiI2QyYy1ibnAtbGlua3J1bGVzLXRleHRhcmVhIikudmFsKCkmJiIjI0xJTktSVUxFUyMjIiE9JCgiI2QyYy1ibnAtbGlua3J1bGVzLXRleHRhcmVhIikudmFsKCkpe3ZhciB5PQowPCQobSkuY2xvc2VzdCgibGlbZGF0YS1pZF49J05FV19DT01NRVJDSUFMJ10iKS5sZW5ndGg\/ITA6ITEsQT0kKCIjZDJjLWJucC1saW5rcnVsZXMtdGV4dGFyZWEiKS52YWwoKTtBPUpTT04ucGFyc2UoQSk7dmFyIEk9JCgiaHRtbCIpLmF0dHIoImxhbmciKSxCPXIubWF0Y2goImVuIj09ST8vXC9idWlsZC1hbmQtcHJpY2VcLyhcZHs0fS0oXHcrKS0oXHcrKS4qXC5odG1sKS4qLzovXC9jb25maWd1cmF0aW9uLWV0LXByaXhcLygoXHcrKS0oXHcrKS1cZHs0fSkuKlwuaHRtbC8pLEo9QlswXSxGPUJbMl0udG9Mb3dlckNhc2UoKTtCPUJbM10udG9Mb3dlckNhc2UoKS5yZXBsYWNlQWxsKCJfIiwiICIpO3kmJkIuaW5jbHVkZXMoInN1cGVyIGR1dHkiKSYmKEI9InN1cGVyIGR1dHkgY29tbWVyY2lhbCIpO2lmKCJ1bmRlZmluZWQiIT09dHlwZW9mIEFbRl0mJiJ1bmRlZmluZWQiPT09dHlwZW9mIEFbRl1bQl0pZm9yKHZhciBLIGluIEFbRl0paWYoeT1LLEIuaW5jbHVkZXMoeSkpe0I9eTsKYnJlYWt9InVuZGVmaW5lZCIhPT10eXBlb2YgQVtGXSYmInVuZGVmaW5lZCIhPT10eXBlb2YgQVtGXVtCXSYmKCQoZykuZmluZCgiLm1lbnUtc3BlYy1ibnAiKS5hdHRyKCJ0YXJnZXQiLCJfYmxhbmsiKSxyPXIucmVwbGFjZShKLEFbRl1bQl1bSV0pKX19KSgpOyQoZykuZmluZCgiLm1lbnUtc3BlYy1ibnAiKS5hdHRyKCJocmVmIixyKTskKGcpLmZpbmQoIi5tZW51LXNwZWMtbGluayIpLmF0dHIoImhyZWYiLHUpOyQoZykucmVtb3ZlQXR0cigiaWQiKTskKGcpLmNoaWxkcmVuKCIubWVudS1zcGVjcy10aXRsZSIpLmFwcGVuZChsKTt2YXIgcD17fTskLmlzRW1wdHlPYmplY3QoYygpLmNhcnMuZGV0YWlscyk\/JC53aGVuKGMoKS5zcGVjc0FqYXgpLmRvbmUoZnVuY3Rpb24oeSl7cD1jKCkuY2Fycy5maW5kQnlJZCgkKG0pLmRhdGEoIm1vZGVsaWQiKSl9KTpwPWMoKS5jYXJzLmZpbmRCeUlkKCQobSkuZGF0YSgibW9kZWxpZCIpKTtpZighJC5pc0VtcHR5T2JqZWN0KHApKXt2YXIgdz1hLnNob3VsZFVzZUZyZW5jaE5hbWVzKCk\/CnAubmFtZTpwLm1vZGVsO3AuaGFzT3duUHJvcGVydHkoImJhc2Vfc3R5bGUiKSYmKHA9cC5iYXNlX3N0eWxlLHc9cC5tb2RlbCk7cT0iRlJFTkNIIj09JCgiI3RleHRMYW5ndWFnZSIpLnZhbCgpPyJOL0QiOiJOL0EiO2w9IiI9PXAuZGlzcGxhY2VtZW50P3E6cC5kaXNwbGFjZW1lbnQ7dT0iIj09cC5jaXR5RnVlbD9xOnAuY2l0eUZ1ZWw7cT0iIj09cC5od3lGdWVsP3E6cC5od3lGdWVsO3ZhciB6PXAubXNycEFsbEluLEQ9JChnKS5maW5kKCIubWVudS1zcGVjLWJucCIpLnRleHQoKS50cmltKCk7RD1ELnJlcGxhY2UoIiRNT0RFTCIsdyk7dz1gPHNwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSI+JHt6LnRvTG9jYWxlU3RyaW5nKCl9PC9zcGFuPmA7ej0kKCIjQURNSU5fTkVXX0RPTlRfU0hPV19QUklDRV9NT0RFTFMiKS52YWwoKS5pbmNsdWRlcyhwLm1vZGVsaWQpO2lmKDA8JChtKS5jaGlsZHJlbigiLnByaWNlIikubGVuZ3RoKXskKGcpLmZpbmQoIi5tZW51LXNwZWMtcHJpY2UiKS50ZXh0KCIiKTsKdmFyIEM9JCgnPGRpdiBjbGFzcz0icHJpY2UiLz4nKSxFPSQoJzxzcGFuIGNsYXNzPSJwcmljZV9hbXQiLz4nKSxHPSQoJzxzcGFuIGNsYXNzPSJwcmljZV9zY3JhdGNoZWQiLz4nKSxIPSQoJzxzcGFuIGNsYXNzPSJwcmljZV9wcm9tbyIvPicpOzA8JChtKS5jaGlsZHJlbigiLnByaWNlIikuY2hpbGRyZW4oIi5wcmljZS1zY3JhdGNoIikubGVuZ3RoPyhHLmh0bWwodyksRS5hcHBlbmQoRyksRS5jc3MoeyJ0ZXh0LWRlY29yYXRpb24iOiJsaW5lLXRocm91Z2giLGNvbG9yOiJyZWQifSkpOkUuaHRtbCh3KTtDLmFwcGVuZChFKTswPCQobSkuY2hpbGRyZW4oIi5wcmljZSIpLmNoaWxkcmVuKCIucHJpY2VfcHJvbW8iKS5sZW5ndGgmJihILnRleHQoJChtKS5jaGlsZHJlbigiLnByaWNlIikuY2hpbGRyZW4oIi5wcmljZV9wcm9tbyIpLnRleHQoKSksSC5jc3Moe2NvbG9yOiJyZWQifSksQy5hcHBlbmQoSCkpOyQoZykuZmluZCgiLm1lbnUtc3BlYy1wcmljZSIpLmFwcGVuZChDKX1lbHNlICQoZykuZmluZCgiLm1lbnUtc3BlYy1wcmljZSIpLmh0bWwodyk7CiQoZykuZmluZCgiLm1lbnUtc3BlYy1ocCIpLnRleHQocC5ocEF0UlBNKTskKGcpLmZpbmQoIi5tZW51LXNwZWMtcG93ZXIiKS50ZXh0KGwpOyQoZykuZmluZCgiLm1lbnUtc3BlYy1mdWVsLWNpdHkiKS50ZXh0KHUpOyQoZykuZmluZCgiLm1lbnUtc3BlYy1mdWVsLWhpZ2h3YXkiKS50ZXh0KHEpOyQoZykuZmluZCgiLm1lbnUtc3BlYy1kcml2ZXRyYWluIikudGV4dChwLmRyaXZlVHJhaW4pOyQoZykuZmluZCgiLm1lbnUtc3BlYy1ibnAiKS5jb250ZW50cygpLmZpbHRlcihmdW5jdGlvbigpe3JldHVybiAzPT10aGlzLm5vZGVUeXBlfSkubGFzdCgpLnJlcGxhY2VXaXRoKEQpO3omJigkKGcpLmZpbmQoIi5tZW51LXNwZWMtYm5wIikucmVtb3ZlKCksJChnKS5maW5kKCIubWVudS1zcGVjLXByaWNlIikudGV4dCgkKCIjTkVXX1BSSUNFX1RFWFQiKS52YWwoKSkpO2w9JChnKS5maW5kKCIubWVudS1wcmljZS10ZXh0Iik7dT1sLmF0dHIoImRhdGEtcHJpY2UtdGVtcGxhdGUiKXx8bC50ZXh0KCk7CmwudGV4dChkKHUscCkpOzVFOD5wLmlkJiYkKG0pLmFwcGVuZChnLmZhZGVJbigyMDApKTtsPW5ldyBDdXN0b21FdmVudCgidG9wbmF2LXRlY2gtc3BlYy1sb2FkZWQiLHtkZXRhaWw6e3RlbXBsYXRlOmd9fSk7ZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChsKX19c2V0VGltZW91dChmdW5jdGlvbigpe3ZhciB5PWEucG9zaXRpb25zKG0sZiwkKGcpKTt5LnVwZGF0ZSgpO3ZhciBBPSQobSkucGFyZW50KCJ1bC5zdWIiKS5wYXJlbnQoKS5wYXJlbnQoKTtBLm9mZnNldCgpO0Eub3V0ZXJIZWlnaHQoKTt5LnNwZWNzQm90dG9tPHkuc3ViTWVudUl0ZW1Ub3AmJiQoZykuY3NzKCJ0b3AiLHkuc3ViTWVudUl0ZW1Cb3R0b20teS5zcGVjc0JvdHRvbSk7eS5zdWJNZW51SXRlbVRvcDx5LnNwZWNzQm90dG9tJiZ5LnN1Yk1lbnVJdGVtQm90dG9tPnkuc3BlY3NCb3R0b20mJiQoZykuY3NzKCJ0b3AiLCQoZykucG9zaXRpb24oKS50b3ArKHkuc3ViTWVudUl0ZW1Cb3R0b20teS5zcGVjc0JvdHRvbSkpfSwKMCk7ZGVsZXRlIHB9fSk7JCgnLnVwX21lbnUgW2lkXj0iTWFpbk1lbnVfIl0udG9wOm5vdCguaXNPcGVuKScpLm9uKCJtb3VzZWVudGVyIixmdW5jdGlvbihmKXskKGYuY3VycmVudFRhcmdldCkuaGFzQ2xhc3MoImlzT3BlbiIpfHwkKCcudXBfbWVudSBbaWRePSJNYWluTWVudV8iXS50b3AnKS5yZW1vdmVDbGFzcygiaXNPcGVuIil9KTskKGRvY3VtZW50KS5vbigiY2xpY2siLGZ1bmN0aW9uKGYpe2NoaWxkT2YoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCwkKCIudXBfbWVudSIpWzBdKXx8JCgnLnVwX21lbnUgW2lkXj0iTWFpbk1lbnVfIl0udG9wJykucmVtb3ZlQ2xhc3MoImlzT3BlbiIpfSk7JCgiI01haW5NZW51X0NPTlRBQ1QiKS5vbigibW91c2VlbnRlciBtb3VzZWxlYXZlIixmdW5jdGlvbihmKXt2YXIgZz0kKCIjbWVudS1tYXAtbGluayIpOzA9PWcubGVuZ3RofHwwPGcuZmluZCgiaWZyYW1lIikubGVuZ3RofHxpbmplY3RHb29nbGVNYXBzS2V5KGZ1bmN0aW9uKG0pe209Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vbWFwcy9lbWJlZC92MS9wbGFjZT8iKwpbInE9IitlbmNvZGVVUklDb21wb25lbnQoZy5kYXRhKCJwbGFjZUlkIikpLCJ6b29tPSIrZy5kYXRhKCJ6b29tIiksImxhbmd1YWdlPSIrZy5kYXRhKCJsYW5ndWFnZSIpLCJyZWdpb249Q0EiLCJrZXk9IittXS5qb2luKCImIik7Zy5hcHBlbmQoJzxpZnJhbWUgc3JjPSInK20rJyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iNDAwIiBmcmFtZWJvcmRlcj0iMCIgc3R5bGU9ImJvcmRlcjowIiBhbGxvd2Z1bGxzY3JlZW4+PC9pZnJhbWU+Jyl9KX0pOyQoIiNNYWluTWVudV9GSU5BTkNFLCAjTWFpbk1lbnVfQ09OVEFDVCIpLm9uKCJtb3VzZWVudGVyIG1vdXNlbGVhdmUiLGZ1bmN0aW9uKGYpe3ZhciBnPWYuY3VycmVudFRhcmdldC5pZCxtPSQoIiMiK2cpOzA9PT0kKCIjIitnKyIuaXNPcGVuIikubGVuZ3RoJiYibW91c2VsZWF2ZSIhPT1mLnR5cGUmJm0uYWRkQ2xhc3MoImlzT3BlbiIpO2lmKCJtb3VzZWxlYXZlIj09PWYudHlwZSl7dmFyIGw9JCgiLmNyZWRpdFNjb3JlUG9wdXBGb3JtIilbMF07Cmc9JCgiIyIrZysiID4gYS50b3BfbGluayIpWzBdOyhsJiZmLmZyb21FbGVtZW50PT09bHx8ZyYmZi5mcm9tRWxlbWVudD09PWcpJiZtLnJlbW92ZUNsYXNzKCJpc09wZW4iKTtsPSQoZi50b0VsZW1lbnQpLmhhc0NsYXNzKCJjYWwtd3JhcHBlciIpfHwkKGYudG9FbGVtZW50KS5jaGlsZHJlbigpLmhhc0NsYXNzKCJjYWwtd3JhcHBlciIpfHwkKGYudG9FbGVtZW50KS5oYXNDbGFzcygibmViQ2FsIil8fCQoZi50b0VsZW1lbnQpLmNsb3Nlc3QoIi5uZWJDYWwiKS5sZW5ndGg7Zz0kKGYudG9FbGVtZW50KS5oYXNDbGFzcygicGFjLWNvbnRhaW5lciIpO2lmKCEobnVsbD09PWYudG9FbGVtZW50fHxjaGlsZE9mKGYudG9FbGVtZW50LG1bMF0pfHxjaGlsZE9mKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQsbVswXSl8fGx8fGcpfHxjaGlsZE9mKGYudG9FbGVtZW50LCQoIi51cF9tZW51IilbMF0pJiYhY2hpbGRPZihmLnRvRWxlbWVudCxtWzBdKSkkKCIubmViQ2FsIikuaXMoIjp2aXNpYmxlIikmJgooZj0kKCIuZmluYW5jZS1tZW51LWZyZWVjcmVkaXQgLmNyZWRpdFNjb3JlQmlydGhkYXRlIikuZGF0YSgibmViQ2FsIikpJiZmLmhpZGUoKSxtLnJlbW92ZUNsYXNzKCJpc09wZW4iKX19KTtpZigkKCEwKSl7ZT0kKCIubWVudTUgLm5hdiA+IGxpIik7az1lLmxlbmd0aDt2YXIgeD0kKCIjTWFpbk1lbnVfQ09OVEFDVCIpLHY9LTE7ZS5lYWNoKGZ1bmN0aW9uKGYsZyl7JChnKS5pcyh4KSYmKHY9Zil9KTstMTx2JiYuNTw9di9rJiZ4LmZpbmQoIi5jb250YWN0dXMtZm9ybS5jb250YWN0LXNob3J0IikuY3NzKHtyaWdodDoiaW5oZXJpdCJ9KX10aGlzLnNob3VsZFVzZUZyZW5jaE5hbWVzPWZ1bmN0aW9uKCl7cmV0dXJuIkZSRU5DSCI9PSQoIiNhY3RpdmVzaXRlbGFuZ3VhZ2UiKS52YWwoKSYmIjEiPT09JCgiI25ld190cmFuc2xhdGVkX3RpdGxlcyIpLnZhbCgpfTt0aGlzLnNldE1lbnVFeHByZXNzRm9ybVNlbGVjdGVkT3B0aW9uPWZ1bmN0aW9uKCl7dmFyIGY9d2luZG93LmxvY2F0aW9uLmhyZWYsCmc9L3VzZWR8b2NjYXNpb24vLnRlc3QoZiksbT0vbmV3fG5ldWZzLy50ZXN0KGYpLGw9L2ZpbmFuY2VtZW50fGNyZWRpdC8udGVzdChmKSx1PS9zZXJ2aWNlfGFjY2Vzc29yaWVzfHRpcmV8cG5ldXN8Ym9keXNob3B8Ym9keS1zaG9wfGNhcm9zc2VyaWUvLnRlc3QoZik7Zj0iIjttP2Y9Im5ldyI6Zz9mPSJ1c2VkIjpsP2Y9ImZpbmFuY2UiOnUmJihmPSJzZXJ2aWNlIik7IiIhPWYmJihnPSQoIi5tZW51ICNxdWlja0VtYWlsRGVwYXJ0bWVudCIpLCQoJyBvcHRpb25bdmFsdWU9IicrZisnIl0nLGcpLnByb3AoInNlbGVjdGVkIiwic2VsZWN0ZWQiKSxtPSQoIm9wdGlvbjpzZWxlY3RlZCIsZykuaW5kZXgoKSxnLnByZXYoInVsIikuZmluZCgibGkiKS5lcShtKS5maW5kKCJhIikudHJpZ2dlcigiY2xpY2siKSl9O3NldFRpbWVvdXQoZnVuY3Rpb24oKXthLnNldE1lbnVFeHByZXNzRm9ybVNlbGVjdGVkT3B0aW9uKCl9LDEwKTtjb25zb2xlLmxvZygiTWVudUhhbmRsZXIgaW5pdCAtLSB0ZXN0IHJlbW92ZSBsYXRlciIpOwp0aGlzLnRyYW5zbGF0ZVRpdGxlcz1mdW5jdGlvbigpe3JldHVybiAkanNjb21wLmFzeW5jRXhlY3V0ZVByb21pc2VHZW5lcmF0b3JGdW5jdGlvbihmdW5jdGlvbiooKXt0cnl7dmFyIGY9ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiW2RhdGEtbWVudS10cmFuc2xhdGVdIik7aWYoZil7dmFyIGc9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiYm9keSIpLmNsYXNzTmFtZS5tYXRjaCgiRlJFTkNIIik\/ImZyIjoiZW4iLG09KG5ldyBVUkwoYC9qcy9qc29uL21lbnVUaXRsZXNfJHtnfS5qc29uYCx3aW5kb3cubG9jYXRpb24ub3JpZ2luKSkuaHJlZjtyZXNwb25zZT15aWVsZCBmZXRjaChtKTtpZih0ZXh0PXlpZWxkIHJlc3BvbnNlLnRleHQoKSlpZihkYXRhPUpTT04ucGFyc2UodGV4dCksZiYmMCE9PWRhdGEubGVuZ3RoKWZvcihnPTA7ZzxmLmxlbmd0aDtnKyspe3ZhciBsPWZbZ10uZ2V0QXR0cmlidXRlKCJkYXRhLW1lbnUtdHJhbnNsYXRlIik7ZGF0YVtsXSYmQmFzZTY0LmlzQmFzZTY0KGRhdGFbbF0udGV4dCkmJgooZltnXS50ZXh0Q29udGVudD1CYXNlNjQuZGVjb2RlKGRhdGFbbF0udGV4dCkpfX19Y2F0Y2godSl7Y29uc29sZS5sb2codSl9fSl9O3RoaXMudHJhbnNsYXRlVGl0bGVzKCl9fSkoKTskKGZ1bmN0aW9uKCl7d2luZG93Lm1lbnVIYW5kbGVyPW5ldyBNZW51SGFuZGxlcn0pOwp2YXIgZ2V0QWN0aXZlUGFnZT1mdW5jdGlvbigpe3ZhciBhPSIiOyJ1bmRlZmluZWQiPT09dHlwZW9mIGFjdGl2ZVBhZ2UmJihhY3RpdmVQYWdlPSIiKTtzd2l0Y2goYWN0aXZlUGFnZSl7Y2FzZSAiSE9NRVBBR0UiOmE9IkFjY3VlaWwiO2JyZWFrO2Nhc2UgIkNBUkRFVEFJTFMiOmE9Ik9jY2FzaW9uLVZEUCI7YnJlYWs7Y2FzZSAiVVNFRENBUlMiOmE9Ik9jY2FzaW9uLVNSUCI7YnJlYWs7Y2FzZSAiTkVXQ0FSUyI6YT0iTmV1Zi1TUlAiO2JyZWFrO2Nhc2UgIk5FV0NBUkRFVEFJTFMiOmE9Ik5ldWYtVkRQIn1yZXR1cm4gYX0sc2VuZEdvb2dsZUFuYWx5dGljQmFubmVyQ2xpY2tlZEV2ZW50PWZ1bmN0aW9uKGEsYil7Z2FUcmFjaygiX3RyYWNrRXZlbnQiLCJDbGlxdWVzIEJhbm5pZXJlIixhLGIsMSl9OwokKGRvY3VtZW50KS5vbigiY2xpY2siLCIjaG9tZXBhZ2UtYmFubmVyICNzbGlkZXIgPiBhIixmdW5jdGlvbihhKXtpZihhPWdldEFjdGl2ZVBhZ2UoKSl7dmFyIGI9IiIhPSQodGhpcykuYXR0cigiaHJlZiIpPyQodGhpcykuYXR0cigiaHJlZiIpOiJQb3B1cCI7c2VuZEdvb2dsZUFuYWx5dGljQmFubmVyQ2xpY2tlZEV2ZW50KGEsYil9fSk7JChkb2N1bWVudCkub24oImNsaWNrIiwiI21vYmlsZVNsaWRlciAjbW9iaWxlU2xpZGVyMiA+IGEiLGZ1bmN0aW9uKGEpe2lmKGE9Z2V0QWN0aXZlUGFnZSgpKXt2YXIgYj0iIiE9JCh0aGlzKS5hdHRyKCJocmVmIik\/JCh0aGlzKS5hdHRyKCJocmVmIik6IlBvcHVwIjtzZW5kR29vZ2xlQW5hbHl0aWNCYW5uZXJDbGlja2VkRXZlbnQoYSxiKX19KTsKJChkb2N1bWVudCkub24oImNsaWNrIiwiI3RvcEJhbm5lckltYWdlIixmdW5jdGlvbihhKXsoYT1nZXRBY3RpdmVQYWdlKCkpJiZzZW5kR29vZ2xlQW5hbHl0aWNCYW5uZXJDbGlja2VkRXZlbnQoYSwiUG9wdXAiKX0pO3ZhciBob21lUGFnZUJhbm5lclZpZXc9W107JChkb2N1bWVudCkub24oImNsaWNrIiwiI2hvbWVwYWdlLWJhbm5lciAjc2xpZGVyID4gYSIsZnVuY3Rpb24oYSl7KGE9Z2V0QWN0aXZlUGFnZSgpKSYmIkFjY3VlaWwiPT1hJiYoYT0kKCIjc2xpZGVyIikuZGF0YSgibml2bzp2YXJzIikuY3VycmVudFNsaWRlKzEsZ2FUcmFjaygiYy5fdHJhY2tFdmVudCIsIkhvbWUtcGFnZSBzbGlkZXIiLCJEZXNrdG9wLWNsaWNrIixhLDEpKX0pOwokKGRvY3VtZW50KS5vbigibml2b1NsaWRlckNoYW5nZWQgbml2b1NsaWRlckxvYWRlZCIsIiNob21lcGFnZS1iYW5uZXIgI3NsaWRlciIsZnVuY3Rpb24oYSl7IShhPWdldEFjdGl2ZVBhZ2UoKSl8fCJBY2N1ZWlsIiE9YXx8NTAwPCQoZG9jdW1lbnQpLnNjcm9sbFRvcCgpfHwoYT0kKCIjc2xpZGVyIikuZGF0YSgibml2bzp2YXJzIikuY3VycmVudFNsaWRlKzEsMD4kLmluQXJyYXkoYSxob21lUGFnZUJhbm5lclZpZXcpJiYoaG9tZVBhZ2VCYW5uZXJWaWV3LnB1c2goYSksZ2FUcmFjaygiYy5fdHJhY2tFdmVudCIsIkhvbWUtcGFnZSBzbGlkZXIiLCJEZXNrdG9wLXZpZXciLGEsMSkpKX0pOwokKGRvY3VtZW50KS5vbigiY2xpY2siLCIjbW9iaWxlU2xpZGVyICNtb2JpbGVTbGlkZXIyID4gYSIsZnVuY3Rpb24oYSl7KGE9Z2V0QWN0aXZlUGFnZSgpKSYmIkFjY3VlaWwiPT1hJiYoYT0kKCIjbW9iaWxlU2xpZGVyMiIpLmRhdGEoIm5pdm86dmFycyIpLmN1cnJlbnRTbGlkZSsxLGdhVHJhY2soImMuX3RyYWNrRXZlbnQiLCJIb21lLXBhZ2Ugc2xpZGVyIiwiTW9iaWxlLWNsaWNrIixhLDEpKX0pOwokKGRvY3VtZW50KS5vbigibml2b1NsaWRlckNoYW5nZWQgbml2b1NsaWRlckxvYWRlZCIsIiNtb2JpbGVTbGlkZXIgI21vYmlsZVNsaWRlcjIiLGZ1bmN0aW9uKGEpeyEoYT1nZXRBY3RpdmVQYWdlKCkpfHwiQWNjdWVpbCIhPWF8fDM1MDwkKGRvY3VtZW50KS5zY3JvbGxUb3AoKXx8KGE9JCgiI21vYmlsZVNsaWRlcjIiKS5kYXRhKCJuaXZvOnZhcnMiKS5jdXJyZW50U2xpZGUrMSwwPiQuaW5BcnJheShhLGhvbWVQYWdlQmFubmVyVmlldykmJihob21lUGFnZUJhbm5lclZpZXcucHVzaChhKSxnYVRyYWNrKCJjLl90cmFja0V2ZW50IiwiSG9tZS1wYWdlIHNsaWRlciIsIk1vYmlsZS12aWV3IixhLDEpKSl9KTsKZnVuY3Rpb24gdGhyZXNob2xkUG9wdXAoKXt2YXIgYT1nZXRVcmxWYXJzKCk7aWYobnVsbD09Q29va2llcy5nZXQoInBvcHVwU2hvd24iKXx8InVuZGVmaW5lZCIhPXR5cGVvZiBhLmRlYnVnKXNob3dQb3B1cFdpZGdldCh7ZG9Ob3RSZWRpcmVjdDohMH0pLENvb2tpZXMuc2V0KCJwb3B1cFNob3duIiwiMSIsOTAsIi8iKX1mdW5jdGlvbiBfbG9jYWxTdG9yYWdlU2V0KGEsYixjKXtjPTg2NEU1KihjfHwxKTtiPXt2YWx1ZTpiLGV4cGlyeToobmV3IERhdGUpLmdldFRpbWUoKStjfTtsb2NhbFN0b3JhZ2Uuc2V0SXRlbShhLEpTT04uc3RyaW5naWZ5KGIpKX1mdW5jdGlvbiBfbG9jYWxTdG9yYWdlR2V0KGEpe3ZhciBiPWxvY2FsU3RvcmFnZS5nZXRJdGVtKGEpO2lmKCFiKXJldHVybiBudWxsO2I9SlNPTi5wYXJzZShiKTtyZXR1cm4obmV3IERhdGUpLmdldFRpbWUoKT5iLmV4cGlyeT8obG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oYSksbnVsbCk6Yi52YWx1ZX0KZnVuY3Rpb24gX2xvY2FsU3RvcmFnZVJlbW92ZShhKXtpZighbG9jYWxTdG9yYWdlLmdldEl0ZW0oYSkpcmV0dXJuIG51bGw7bG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oYSk7cmV0dXJuIG51bGx9ZnVuY3Rpb24gZ2VuZXJhdGVVbmlxdWVJZCgpe3JldHVybiJpZC0iK0RhdGUubm93KCkrIi0iK01hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnNsaWNlKDIpfWNvbnN0IGluaXRUb29sdGlwcz0oKT0+e3RyeXtkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCJbZGF0YS1wb3BwZXJdIikuZm9yRWFjaChhPT57VG9vbHRpcChhKS5jcmVhdGUoKX0pfWNhdGNoKGEpe2NvbnNvbGUubG9nKCJUb29sdGlwIG9iamVjdCBub3QgZm91bmQiKX19OwpmdW5jdGlvbiBoYW5kbGVDb29raWVDb250ZW50KCl7ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiW2RhdGEtY29va2llaGlkZV0iKS5mb3JFYWNoKGE9PntsZXQgYj1hLmRhdGFzZXQuY29va2llaGlkZTtiLmxlbmd0aCYmQ29va2llcy5nZXQoYikmJihhLmhpZGRlbj0hMCl9KTtkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCJbZGF0YS1jb29raWVzaG93XSIpLmZvckVhY2goYT0+e2xldCBiPWEuZGF0YXNldC5jb29raWVzaG93O2IubGVuZ3RoJiZDb29raWVzLmdldChiKSYmKGEuaGlkZGVuPSExKX0pfXZhciBzaXRlUGFnZT17fTsKY29uc3QgZG9jUmVhZHk9ZnVuY3Rpb24oKXtfbG9jYWxTdG9yYWdlR2V0KCJkMmMtdWlkIil8fF9sb2NhbFN0b3JhZ2VTZXQoImQyYy11aWQiLGdlbmVyYXRlVW5pcXVlSWQoKSwyKTtpZigiY29tcGxldGUiPT09ZG9jdW1lbnQucmVhZHlTdGF0ZSl7bGV0IGE7Y29uc29sZS5sb2coIkdTUEVFRC1ET0NSRUFEWSBDT01QTEVURToiKyhEYXRlLm5vdygpLShudWxsIT0oYT13aW5kb3cuZ1Rlc3RTcGVlZENvbm4pP2E6MCkpLzFFMyk7ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiLnNrZWxldG9uLXR4dCIpLmZvckVhY2goYj0+e2IuY2xhc3NMaXN0LnRvZ2dsZSgic2tlbGV0b24tdHh0IiwhMSl9KTtkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCIuc2tlbGV0b24tc2xpZGVyIikuZm9yRWFjaChiPT57Yi5jbGFzc0xpc3QudG9nZ2xlKCJza2VsZXRvbi1zbGlkZXIiLCExKX0pO3dpbmRvdy5nU2tlbGV0b25Jc1JlbW92ZWQ9ITA7c2l0ZVBhZ2U9e25hbWU6InVuZGVmaW5lZCIhPXR5cGVvZiBwYWdlPwpwYWdlOiIiLGlzTW9iaWxlOiIxIj09KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJpc21vYmlsZSIpfHwiIikudmFsdWUsbGFuZzooZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImFjdGl2ZXNpdGVsYW5ndWFnZSIpfHwiIikudmFsdWV8fCJGUkVOQ0gifTtoYW5kbGVDb29raWVDb250ZW50KCk7aW5pdFRvb2x0aXBzKCk7ZG9jUmVhZHlBcnIuZm9yRWFjaChiPT5iKCkpO2RvY1JlYWR5QXJyPVtdfWVsc2V7bGV0IGE7aWYoImludGVyYWN0aXZlIj09PWRvY3VtZW50LnJlYWR5U3RhdGUmJndpbmRvdy5nUmVzb3VyY2VMb2FkZXJBbmRKcXVlcnlJc1JlYWR5JiYhMT09PShudWxsIT0oYT13aW5kb3cuZ1NrZWxldG9uSXNSZW1vdmVkKT9hOiExKSl7bGV0IGI7Y29uc29sZS5sb2coIkdTUEVFRC1ET0NSRUFEWSBJTlRFUkFDVElWRToiKyhEYXRlLm5vdygpLShudWxsIT0oYj13aW5kb3cuZ1Rlc3RTcGVlZENvbm4pP2I6MCkpLzFFMyk7ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiLnNrZWxldG9uLXR4dCIpLmZvckVhY2goYz0+CntjLmNsYXNzTGlzdC50b2dnbGUoInNrZWxldG9uLXR4dCIsITEpfSk7ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiLnNrZWxldG9uLXNsaWRlciIpLmZvckVhY2goYz0+e2MuY2xhc3NMaXN0LnRvZ2dsZSgic2tlbGV0b24tc2xpZGVyIiwhMSl9KTt3aW5kb3cuZ1NrZWxldG9uSXNSZW1vdmVkPSEwfXNldFRpbWVvdXQoZG9jUmVhZHksNTApfX07ZG9jUmVhZHkoKTsKJChmdW5jdGlvbigpe3ZhciBhPSEwOyQod2luZG93KS5vbigic2Nyb2xsIixmdW5jdGlvbigpe3ZhciBkPSQoZG9jdW1lbnQpLmhlaWdodCgpLGU9JCh3aW5kb3cpLmhlaWdodCgpKyQod2luZG93KS5zY3JvbGxUb3AoKTsuMDU+KGQtZSkvZCYmYSYmKGE9ITEsInVuZGVmaW5lZCIhPT10eXBlb2YgZ2FUcmFjayYmZ2FUcmFjaygiX3RyYWNrRXZlbnQiLCJCb3R0b20gb2YgcGFnZSByZWFjaGVkIiwkKCdpbnB1dFtuYW1lPSJ0YXJnZXRQYWdlIl0nKS52YWwoKSx3aW5kb3cubG9jYXRpb24uaHJlZiwxKSl9KTskKCIuZW1iZWQtY29udGFpbmVyLXlvdXR1YmUiKS5wYXJlbnQoIi53cmFwcGVyIikucmVtb3ZlQ2xhc3MoIndyYXBwZXIiKTtpZigkKCIjaXNCcmFuZFBhZ2UiKS5sZW5ndGgpe3ZhciBiPWdldFVybFZhcnMoKTtpZihiLmt3JiYtMSE9Yi5rdy50b0xvd2VyQ2FzZSgpLmluZGV4T2YoImNhbmFkYSIpKXt2YXIgYz0kKCIjYWN0aXZlc2l0ZWxhbmd1YWdlIikmJiJFTkdMSVNIIj09CiQoIiNhY3RpdmVzaXRlbGFuZ3VhZ2UiKS52YWwoKT8iZW4iOiJmciI7Yj0iZW4iPT1jPyJIZXJlIHdlIG9mZmVyIHRoZSBiZXN0IHByaWNlcyI6IkljaSBvbiBvZmZyZSBsZXMgbWVpbGxldXJzIHByaXgiO2M9ImVuIj09Yz8ib24gIiskKCIjaXNCcmFuZFBhZ2UiKS52YWwoKSsiJ3MgaW4gQ2FuYWRhIjokKCIjaXNCcmFuZFBhZ2UiKS52YWwoKSsiIGF1IENhbmFkYSI7JCgiI2RlZmF1bHRUb3BCYW5uZXJUaXRsZSIpLnRleHQoYik7JCgiI2RlZmF1bHRUb3BCYW5uZXJUZXh0IikudGV4dChjKX19JCgiI2ZpbmFuY2VNdWx0aXN0ZXBQb3B1cENvbnRhaW5lciIpLmxlbmd0aCYmKGI9Z2V0VXJsVmFycygpLGIuZmluYW5jZXBvcCYmInllcyI9PWIuZmluYW5jZXBvcCYmc2V0VGltZW91dCgoKT0+eyQoIiNmaW5hbmNlTXVsdGlzdGVwUG9wdXBDb250YWluZXIiKS5wb3B1cGl6ZSgpLm9wZW4oKX0sMUUzKSk7MDwkKCIudHJhZGVzaWktcm9vdCIpLnRleHQoKS5sZW5ndGg\/JCgiLnRyYWRlc2lpLXJvb3QiKS5jc3MoInotaW5kZXgiLAoxRTMpOnNldFRpbWVvdXQoZnVuY3Rpb24oKXskKCIudHJhZGVzaWktcm9vdCIpLmNzcygiei1pbmRleCIsMUUzKX0sMUUzKX0pO2Z1bmN0aW9uIGFkZE1heExlbmd0aCgpeyQoIjppbnB1dCIpLmVhY2goZnVuY3Rpb24oKXt2YXIgYT0kKHRoaXMpLmF0dHIoInR5cGUiKSxiPSQodGhpcykuYXR0cigibWF4bGVuZ3RoIik7aWYodm9pZCAwPT1ifHxudWxsPT1ifHwiIj09YikidGV4dCI9PWF8fCJ0ZWwiPT1hfHwiZW1haWwiPT1hfHwidXJsIj09YT8kKHRoaXMpLnByb3AoIm1heGxlbmd0aCIsMjU2KToibnVtYmVyIj09YSYmKCQodGhpcykucHJvcCgib25pbnB1dCIsInRoaXMudmFsdWU9dGhpcy52YWx1ZS5zbGljZSgwLHRoaXMubWF4bGVuZ3RoKSIpLCQodGhpcykucHJvcCgibWF4bGVuZ3RoIiwyNTYpKX0pfWRvY1JlYWR5QXJyLnB1c2goKCk9PnskKCIucmV2ZWFsLW1vZGFsIikub24oInBvcHVwaXplci5vbk9wZW4iLGZ1bmN0aW9uKCl7YWRkTWF4TGVuZ3RoKCl9KTthZGRNYXhMZW5ndGgoKX0pOwooZnVuY3Rpb24oYSl7ZnVuY3Rpb24gYihkLGUpe3RoaXMuZWw9ZDt0aGlzLiRlbD1hKGQpO2lmKHZvaWQgMD09PWV8fCJvYmplY3QiPT09dHlwZW9mIGUpdGhpcy5zZXR0aW5ncz1hLmV4dGVuZChjLGUpO3RoaXMuaW5pdCgpfXZhciBjPXtsYXQ6IiIsbG9uZzoiIixwb3N0YWw6IiIscmF0aW86LjY4ODUsd2lkdGg6ImF1dG8ifTtiLnByb3RvdHlwZT17aW5pdDpmdW5jdGlvbigpe3ZhciBkPXRoaXMuJGVsLmlzKCIubGF6eWxvYWQiKT8iZGF0YS1pbWdzcmMiOiJzcmMiO3RoaXMuJGVsLmF0dHIoZCx0aGlzLmdldFVybCgpKX0saXNWaXNpYmxlOmZ1bmN0aW9uKCl7dmFyIGQ9dGhpcy4kZWwuYXR0cigid2lkdGgiKTtyZXR1cm4hKCIwcHgiPT09dGhpcy4kZWwuYXR0cigiaGVpZ2h0Iil8fCIwcHgiPT09ZCl9LGdldFdpZHRoOmZ1bmN0aW9uKCl7dGhpcy4kZWwuYXR0cigid2lkdGgiKTt2YXIgZD0wOyJhdXRvIj09PXRoaXMuc2V0dGluZ3Mud2lkdGh8fCJhdXRvIj09PXRoaXMuJGVsLmRhdGEoIndpZHRoIik\/CmQ9dGhpcy4kZWwucGFyZW50KCkuY3NzKCJ3aWR0aCIpOmlzTmFOKHBhcnNlSW50KHRoaXMuc2V0dGluZ3Mud2lkdGgpKT92b2lkIDAhPT10aGlzLiRlbC5hdHRyKCJ3aWR0aCIpJiYoZD10aGlzLiRlbC5hdHRyKCJ3aWR0aCIpKTpkPXRoaXMuc2V0dGluZ3Mud2lkdGg7dGhpcy4kZWwuYXR0cigid2lkdGgiLGQpO3JldHVybiBwYXJzZUludChkLnJlcGxhY2UoInB4IiwiIikpfSxnZXRIZWlnaHQ6ZnVuY3Rpb24oKXt2YXIgZD0iYXV0byI9PT10aGlzLnNldHRpbmdzLndpZHRofHwiYXV0byI9PT10aGlzLiRlbC5kYXRhKCJ3aWR0aCIpP01hdGgucm91bmQodGhpcy5nZXRXaWR0aCgpKnRoaXMuc2V0dGluZ3MucmF0aW8pKyJweCI6dGhpcy4kZWwucGFyZW50KCkuY3NzKCJoZWlnaHQiKTt0aGlzLiRlbC5hdHRyKCJoZWlnaHQiLGQpO3JldHVybiBwYXJzZUludChkLnJlcGxhY2UoInB4IiwiIikpfSxnZXRVcmw6ZnVuY3Rpb24oKXt2YXIgZD1nZXREYXRhQXR0cmlidXRlcyh0aGlzLmVsKSwKZT10aGlzLmdldFdpZHRoKCksaz10aGlzLmdldEhlaWdodCgpLGg9ZC5sYXQrIiwiK2QubG9uZyxuPWQuaGFzT3duUHJvcGVydHkoIm1hcmtlckljb24iKT8iaWNvbjoiK2QubWFya2VySWNvbisifCI6IiI7ZD1hLmV4dGVuZCh7c2l6ZTplKyJ4IitrLGNlbnRlcjpoLHpvb206IjEyIixtYXJrZXJzOm4raH0sZCk7cmV0dXJuImh0dHBzOi8vbWFwcy5nb29nbGVhcGlzLmNvbS9tYXBzL2FwaS9zdGF0aWNtYXA\/IithLnBhcmFtKGQpfSxkZXN0cm95OmZ1bmN0aW9uKCl7dGhpcy4kZWwucmVtb3ZlRGF0YSgpfX07YS5mbi5nb29nbGVTdGF0aWNNYXA9ZnVuY3Rpb24oZCl7dmFyIGU9YXJndW1lbnRzO2lmKDE+dGhpcy5sZW5ndGgpcmV0dXJuIHRoaXM7dGhpcy5lYWNoKGZ1bmN0aW9uKCl7aWYoIWEuZGF0YSh0aGlzLCJwbHVnaW5fc3RhdGljTWFwIikpcmV0dXJuIGEuZGF0YSh0aGlzLCJwbHVnaW5fc3RhdGljTWFwIixuZXcgYih0aGlzLGQpKSx0aGlzfSk7aWYoInN0cmluZyI9PT10eXBlb2YgZCYmCiJfIiE9PWRbMF0mJiJpbml0IiE9PWQpezE8dGhpcy5sZW5ndGgmJmNvbnNvbGUubG9nKCJnb29nbGVTdGF0aWNNYXAgd2FybmluZyBjb2RlIDEiKTt2YXIgaz1hLmRhdGEodGhpcy5maXJzdCgpWzBdLCJwbHVnaW5fc3RhdGljTWFwIik7cmV0dXJuIGtbZF0uYXBwbHkoayxBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChlLDEpKX1yZXR1cm4gdGhpc319KShqUXVlcnkpO2Z1bmN0aW9uIHBhcnNlUXVlcnkoYSl7aWYoMT5hLmxlbmd0aClyZXR1cm57fTtmb3IodmFyIGI9e30sYz1hLnNwbGl0KCImIiksZD0wO2Q8Yy5sZW5ndGg7ZCsrKWE9ZXhwbG9kZShjW2RdLCI9IiwxKSxiW2FbMF1dPWFbMV07cmV0dXJuIGJ9ZnVuY3Rpb24gZGVjb2RlU3RyaW5nKGEsYil7aWYoIiI9PWJ8fCJ1bmRlZmluZWQiPT1iKWI9MTtmb3IoaT0wO2k8YjtpKyspYT1kZWNvZGVVUklDb21wb25lbnQoYSk7cmV0dXJuIGF9CmZ1bmN0aW9uIGV4cGxvZGUoYSxiLGMpe2E9YS5zcGxpdChiKTtpZihhLmxlbmd0aDw9YylyZXR1cm4gYTtjPWEuc3BsaWNlKDAsYyk7Yy5wdXNoKGEuam9pbihiKSk7cmV0dXJuIGN9ZnVuY3Rpb24gZ2V0VXJsVmFycygpe3ZhciBhPXdpbmRvdy5sb2NhdGlvbi5zZWFyY2guc3Vic3RyaW5nKDEpO3JldHVybiBwYXJzZVF1ZXJ5KGEpfWZ1bmN0aW9uIGdldENvb2tpZShhKXtyZXR1cm4gQ29va2llcy5nZXQoYSl9ZnVuY3Rpb24gc2V0Q29va2llKGEsYixjKXtDb29raWVzLnNldChhLGIsYywiLyIpfWZ1bmN0aW9uIGdldENvb2tpZUQyYyhhKXtyZXR1cm4gQ29va2llcy5nZXQoYSl9ZnVuY3Rpb24gc2V0Q29va2llRDJjKGEsYixjKXtDb29raWVzLnNldChhLGIsYywiLyIpfWZ1bmN0aW9uIGlzU1NMKCl7cmV0dXJuImh0dHBzOiI9PT13aW5kb3cubG9jYXRpb24ucHJvdG9jb2x9ZnVuY3Rpb24gc2V0U2Vzc2lvbkNvb2tpZShhLGIpe0Nvb2tpZXMuc2V0KGEsYiwwLCIvIil9CmZ1bmN0aW9uIGluaXRMQ0koYSxiKXtpZigyMDxiKXJldHVybiBiO2I9Yj9iOjA7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBMQ19BUEl8fCJ1bmRlZmluZWQiPT10eXBlb2YgTENfSW52aXRlKXNldFRpbWVvdXQoZnVuY3Rpb24oKXtpbml0TENJKGEsKytiKX0sNTAwKTtlbHNlIGlmKCJ1bmRlZmluZWQiIT10eXBlb2YgTENfQVBJJiYidW5kZWZpbmVkIiE9dHlwZW9mIExDX0ludml0ZSYmYSlyZXR1cm4gTENfQVBJLnNldF9jdXN0b21fdmFyaWFibGVzKGEpfWZ1bmN0aW9uIGdldFJlZmVycmVyVmFyRnVuY3Rpb24oYSl7cmV0dXJuIGZ1bmN0aW9uKCl7IiI9PWEmJihhPWRvY3VtZW50LnJlZmVycmVyKTt2YXIgYj1hLmluZGV4T2YoIj8iKSsxO3JldHVybiAwPGI\/KGI9YS5zbGljZShiKSxwYXJzZVF1ZXJ5KGIpKTp7fX19CihmdW5jdGlvbihhKXt2YXIgYj17Y2FsbGJhY2tzOltdLGhhc1NjcmlwdDpmdW5jdGlvbigpe3ZhciBlPWEoJ2hlYWQgc2NyaXB0W3NyYyo9Im1hcHMuanMucGhwIl0nKTtyZXR1cm4gMD09ZS5sZW5ndGg\/ITE6L21hcHNcLmpzLy50ZXN0KGUuYXR0cigic3JjIikpfSxsb2FkOmZ1bmN0aW9uKGUpe2lmKGIuaGFzU2NyaXB0KCkpInVuZGVmaW5lZCI9PT10eXBlb2YgZ29vZ2xlP2IuY2FsbGJhY2tzLnB1c2goZSk6ZSgpO2Vsc2V7Yi5jYWxsYmFja3MucHVzaChlKTt0cnl7dmFyIGs9IkVOR0xJU0giPT1hKCIjYWN0aXZlc2l0ZWxhbmd1YWdlIikudmFsKCk\/ImVuIjoiZnIiOyhmdW5jdGlvbihoLG4seCx2LGYpe2hbZl0mJmhbZl0ubWFwc3x8KGg9bi5jcmVhdGVFbGVtZW50KHgpLG49bi5nZXRFbGVtZW50c0J5VGFnTmFtZSh4KVswXSxoLnNyYz12LGguYXN5bmM9ITEsZG9jdW1lbnQuYm9keS5hZGRFdmVudExpc3RlbmVyKCJnb29nbGVNYXBzTG9hZGVkIixnPT57Zm9yKGc9MDtnPGIuY2FsbGJhY2tzLmxlbmd0aDtnKyspYi5jYWxsYmFja3NbZ10uY2FsbCgpfSksCm4ucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoaCxuKSl9KSh3aW5kb3csZG9jdW1lbnQsInNjcmlwdCIsIi9qcy9tYXBzLmpzLnBocD9sYW5nPSIraywiZ29vZ2xlIil9Y2F0Y2goaCl7Y29uc29sZS5sb2coaCl9fX19LGM9e2F1dG9Db21wbGV0ZTp7Y29tcG9uZW50UmVzdHJpY3Rpb25zOntjb3VudHJ5OiJjYSJ9fSxyYWRpdXM6MUU1fSxkPWZ1bmN0aW9uKGUsayl7dmFyIGg9dGhpcztoLmVsPWU7aC4kZWw9YShlKTtoLnNldHRpbmdzPWEuZXh0ZW5kKGMsayk7aC5hZGRyZXNzPXtjaXR5OiIiLHN0cmVldF9udW1iZXI6IiIsc3RyZWV0OiIiLHN1YmxvY2FsaXR5OiIiLHByb3ZpbmNlOiIiLGNvdW50cnk6IiIscG9zdGFsOiIifTtoLiRlbC5vbmUoImZvY3VzIixmdW5jdGlvbigpe2guaW5pdCgpfSl9O2QucHJvdG90eXBlPXtfY2hlY2tGb3JHb29nbGVNYXBzOmZ1bmN0aW9uKGUpeyJ1bmRlZmluZWQiPT09dHlwZW9mIGdvb2dsZXx8InVuZGVmaW5lZCI9PT10eXBlb2YgZ29vZ2xlLm1hcHM\/CmIubG9hZChlKToiZnVuY3Rpb24iPT09dHlwZW9mIGUmJmUuY2FsbCgpfSxnZXRBZGRyZXNzOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYWRkcmVzc30sX3NldEFkZHJlc3M6ZnVuY3Rpb24oZSl7dmFyIGs9dGhpczthLmVhY2goZSxmdW5jdGlvbihoLG4pe3N3aXRjaCghMCl7Y2FzZSAtMTxhLmluQXJyYXkoInN0cmVldF9udW1iZXIiLG4udHlwZXMpOmsuYWRkcmVzcy5zdHJlZXRfbnVtYmVyPW47YnJlYWs7Y2FzZSAtMTxhLmluQXJyYXkoInJvdXRlIixuLnR5cGVzKTprLmFkZHJlc3Muc3RyZWV0PW47YnJlYWs7Y2FzZSAtMTxhLmluQXJyYXkoInN1YmxvY2FsaXR5IixuLnR5cGVzKTprLmFkZHJlc3Muc3VibG9jYWxpdHk9bjticmVhaztjYXNlIC0xPGEuaW5BcnJheSgibG9jYWxpdHkiLG4udHlwZXMpOmNhc2UgLTE8YS5pbkFycmF5KCJhZG1pbmlzdHJhdGl2ZV9hcmVhX2xldmVsXzMiLG4udHlwZXMpOiIiPT1rLmFkZHJlc3MuY2l0eSYmKGsuYWRkcmVzcy5jaXR5PW4pO2JyZWFrOwpjYXNlIC0xPGEuaW5BcnJheSgiYWRtaW5pc3RyYXRpdmVfYXJlYV9sZXZlbF8xIixuLnR5cGVzKTprLmFkZHJlc3MucHJvdmluY2U9bjticmVhaztjYXNlIC0xPGEuaW5BcnJheSgiY291bnRyeSIsbi50eXBlcyk6ay5hZGRyZXNzLmNvdW50cnk9bjticmVhaztjYXNlIC0xPGEuaW5BcnJheSgicG9zdGFsX2NvZGUiLG4udHlwZXMpOmsuYWRkcmVzcy5wb3N0YWw9bn19KX0sX3NldFNlYXJjaEJvdW5kczpmdW5jdGlvbihlLGssaCl7az1uZXcgZ29vZ2xlLm1hcHMuTGF0TG5nKGssaCk7az1uZXcgZ29vZ2xlLm1hcHMuQ2lyY2xlKHtjZW50ZXI6ayxyYWRpdXM6dGhpcy5zZXR0aW5ncy5yYWRpdXN9KTtlLnNldEJvdW5kcyhrLmdldEJvdW5kcygpKX0saW5pdDpmdW5jdGlvbigpe3ZhciBlPXRoaXM7ZS5fY2hlY2tGb3JHb29nbGVNYXBzKGZ1bmN0aW9uKCl7dmFyIGs9bmV3IGdvb2dsZS5tYXBzLkdlb2NvZGVyLGg9bmV3IGdvb2dsZS5tYXBzLnBsYWNlcy5BdXRvY29tcGxldGUoZS5lbCwKZS5zZXR0aW5ncy5hdXRvQ29tcGxldGUpO2Uuc2V0dGluZ3MuaGFzT3duUHJvcGVydHkoImxhdCIpJiZlLnNldHRpbmdzLmhhc093blByb3BlcnR5KCJsb25nIik\/IiIhPT1lLnNldHRpbmdzLmxhdCYmIiIhPT1lLnNldHRpbmdzLmxvbmcmJmUuX3NldFNlYXJjaEJvdW5kcyhoLGUuc2V0dGluZ3MubGF0LGUuc2V0dGluZ3MubG9uZyk6ZS5zZXR0aW5ncy5oYXNPd25Qcm9wZXJ0eSgiYWRkcmVzcyIpP2Uuc2V0dGluZ3MuYWRkcmVzcyYmay5nZW9jb2RlKHthZGRyZXNzOmUuc2V0dGluZ3MuYWRkcmVzc30sZnVuY3Rpb24obix4KXtlLl9zZXRTZWFyY2hCb3VuZHMoaCxuWzBdLmdlb21ldHJ5LmxvY2F0aW9uLmxhdCgpLG5bMF0uZ2VvbWV0cnkubG9jYXRpb24ubG5nKCkpfSk6InVuZGVmaW5lZCIhPT10eXBlb2YgZm9vdGVyTWFwQWRkcmVzcyYmMDxmb290ZXJNYXBBZGRyZXNzLmxlbmd0aCYmay5nZW9jb2RlKHthZGRyZXNzOmZvb3Rlck1hcEFkZHJlc3NbMF0uYWRkcmVzc30sZnVuY3Rpb24obiwKeCl7ZS5fc2V0U2VhcmNoQm91bmRzKGgsblswXS5nZW9tZXRyeS5sb2NhdGlvbi5sYXQoKSxuWzBdLmdlb21ldHJ5LmxvY2F0aW9uLmxuZygpKX0pO2dvb2dsZS5tYXBzLmV2ZW50LmFkZExpc3RlbmVyKGgsInBsYWNlX2NoYW5nZWQiLGZ1bmN0aW9uKCl7dmFyIG49aC5nZXRQbGFjZSgpO2UuX3NldEFkZHJlc3Mobi5hZGRyZXNzX2NvbXBvbmVudHMpO2UuJGVsLnZhbChuLmZvcm1hdHRlZF9hZGRyZXNzKTtuPW5ldyBFdmVudCgiaW5wdXQiKTtlLmVsLmRpc3BhdGNoRXZlbnQobik7ZS4kZWwudHJpZ2dlcigiZm9jdXMiKX0pfSl9fTthLmZuLmdvb2dsZVBsYWNlcz1mdW5jdGlvbihlKXt2YXIgaz1hcmd1bWVudHM7aWYodm9pZCAwPT09ZXx8Im9iamVjdCI9PT10eXBlb2YgZSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7YS5kYXRhKHRoaXMsInBsdWdpbl9wbGFjZXMiKXx8YS5kYXRhKHRoaXMsInBsdWdpbl9wbGFjZXMiLG5ldyBkKHRoaXMsZSkpfSk7aWYoInN0cmluZyI9PT10eXBlb2YgZSYmCiJfIiE9PWVbMF0mJiJpbml0IiE9PWUpe3ZhciBoPWEuZGF0YSh0aGlzWzBdLCJwbHVnaW5fcGxhY2VzIik7cmV0dXJuIGhbZV0uYXBwbHkoaCxBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChrLDEpKX19fSkoalF1ZXJ5KTsKZnVuY3Rpb24gc2hvd0Jhbm5lclBvcHVwKGEpe3RyeXskKGEpLmhhc0NsYXNzKCJ0cmFkZWluTGluayIpJiYoMDxhLmdldEF0dHJpYnV0ZSgidGFyZ2V0VVJJIikuaW5kZXhPZigidHJhZGVpbnZhbHVlcyIpfHwwPGEuZ2V0QXR0cmlidXRlKCJ0YXJnZXRVUkkiKS5pbmRleE9mKCJpbnN0YW50b2ZmZXIuYWNjdS10cmFkZS5jb20iKSk\/c2hvd1RyYWRlSW5Qb3B1cChhLmdldEF0dHJpYnV0ZSgidGFyZ2V0VVJJIikpOjA8JCgiI2Jhbm5lclBvcHVwQ29udGFpbmVyIikubGVuZ3RoJiYkKCIjYmFubmVyUG9wdXBDb250YWluZXIiKS5wb3B1cGl6ZSgpLnNldFRyaWdnZXIoImNsaWNrIikub3BlbigpfWNhdGNoKGIpe2NvbnNvbGUmJmNvbnNvbGUubG9nJiZjb25zb2xlLmxvZygiVW5hYmxlIHRvIGRpc3BsYXkgdHJhZGVpbnZhbHVlcyBpZnJhbWUuIEVycm9yOiAiK2IubWVzc2FnZSl9fQokKGZ1bmN0aW9uKCl7MDwkKCdpbnB1dFtkYXRhLWdvb2dsZS1wbGFjZXM9InRydWUiXScpLmxlbmd0aCYmJCgnaW5wdXRbZGF0YS1nb29nbGUtcGxhY2VzPSJ0cnVlIl0nKS5nb29nbGVQbGFjZXMoKTsidW5kZWZpbmVkIiE9PXR5cGVvZiAkLmZuLmRhcmtUb29sdGlwJiYoJCgiI3NvY2lhbF9tZWRpYV9pY29uc19kaXYgYSwgLmdSYXRpbmctaWNvbiIpLmRhcmtUb29sdGlwKHtncmF2aXR5OiJub3J0aCIsb3BhY2l0eToxfSksJCgiLnNvY2lhbC1tZWRpYS1pY29ucyBbZGF0YS10b29sdGlwXSIpLmRhcmtUb29sdGlwKHtncmF2aXR5OiJzb3V0aCIsb3BhY2l0eToxfSksJCgiI21pdHN1YmlzaGlDZXJ0aWZpZWRGb290ZXIgYS5zb2NpYWwtbWVkaWFfX2ljb24sICNoeXVuZGFpQ2VydGlmaWVkRm9vdGVyIGEuc29jaWFsLW1lZGlhX19pY29uIikuZGFya1Rvb2x0aXAoe2dyYXZpdHk6InNvdXRoIixvcGFjaXR5OjF9KSk7dmFyIGE9JCgiLmdyYXlib3gudXNlZERldGFpbHNQaG9uZSwgLmdyYXlib3gubmV3RGV0YWlsc1Bob25lIik7CjA9PT1hLmNoaWxkcmVuKCkubGVuZ3RoJiYwPT09YS50ZXh0KCkudHJpbSgpLmxlbmd0aCYmYS5oaWRlKCl9KTskKCIjZmluYW5jZUFsdERpc3BsYXkgLnN0ZXAxIGJpZy50ZXh0IGJpZyIpLmF0dHIoImRhdGEtZGVwYXJ0bWVudCIsIkZpbmFuY2UiKTskKCIuY3JlZGl0X21fY2FsbHVzX3dyYXBwZXIgYSIpLmF0dHIoImRhdGEtZGVwYXJ0bWVudCIsIkZpbmFuY2UiKTsKJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKXskKCIjZGl2Q2VydGlmaWNhdGlvbi1jYXJndXJ1cy13cmFwcGVyIikubGVuZ3RoJiYoZWxlbWVudFRvT2JzZXJ2ZT13aW5kb3cuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRpdkNlcnRpZmljYXRpb24tY2FyZ3VydXMtd3JhcHBlciIpLmNoaWxkcmVuWzBdLG9ic2VydmVyPW5ldyBNdXRhdGlvbk9ic2VydmVyKGZ1bmN0aW9uKGEsYil7Yj0kKCIjZGl2Q2VydGlmaWNhdGlvbi1jYXJndXJ1cy13cmFwcGVyIik7bGV0IGM9JCgic3BhbltkYXRhLWNnLWVycm9yXSIsYik7Y29uc29sZS5sb2coIkQyQ0ciLGIsYyxhKTtjLmxlbmd0aCYmYi5yZW1vdmUoKX0pLG9ic2VydmVyLm9ic2VydmUoZWxlbWVudFRvT2JzZXJ2ZSx7Y2hhcmFjdGVyRGF0YTohMSxjaGlsZExpc3Q6ITAsYXR0cmlidXRlczohMX0pKX0pOyQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCl7LTE8d2luZG93LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL25ldy8iKXx8JCgiI25ldy12ZHAtc3BlYy1icm9jaHVyZSIpLmhpZGUoKX0pOwokKGZ1bmN0aW9uKCl7JCgiI0Zvb3Rlcl9GSU5BTkNFID4gYSwgYSNGaW5hbmNlQWN0aW9uQm94LCBhI0ZpbmFuY2VBY3Rpb25Cb3hMaW5rIikub24oIm1vdXNlZW50ZXIgbW91c2VsZWF2ZSIsZnVuY3Rpb24oKXt2YXIgYT0kKHRoaXMpLGI9JCgiaHRtbCIpLmF0dHIoImxhbmciKTtpZigwPCQoIiNERUFMRVJQQUNPREUiKS5sZW5ndGgpe3ZhciBjPSQoIiNERUFMRVJQQUNPREUiKS52YWwoKSxkPSQoIiNERUFMRVJCUkFORF9QUklNQVJZIikudmFsKCkudG9Mb3dlckNhc2UoKTtpZigiZm9yZF9saW5jb2xuX2V4dGVybmFsIj09JCgiI0ZJTkFOQ0VGT1JNVFlQRSIpLnZhbCgpJiYoImZvcmQiPT1kfHwibGluY29sbiI9PWQpJiYiIiE9Yyl7dmFyIGU9KCJlbiI9PWI\/Imh0dHBzOi8vd3d3LmZvcmQuY2EvZmluYW5jZS9hcHBseS8xP1NvdXJjZU9mRGF0YT1DQURDRiZkZWFsZXJJZD0iOiJodHRwczovL2ZyLmZvcmQuY2EvZmluYW5jZS9hcHBseS8xP1NvdXJjZU9mRGF0YT1DQURDRiZkZWFsZXJJZD0iKSsKYztiPSgiZW4iPT1iPyJodHRwczovL3d3dy5saW5jb2xuY2FuYWRhLmNvbS9maW5hbmNlL2FwcGx5LzE\/U291cmNlT2ZEYXRhPUNBRENMJmRlYWxlcklkPSI6Imh0dHBzOi8vZnIubGluY29sbmNhbmFkYS5jb20vZmluYW5jZS9hcHBseS8xP1NvdXJjZU9mRGF0YT1DQURDTCZkZWFsZXJJZD0iKStjO2Eub2ZmKCJjbGljayIpO2EuYXR0cigiaHJlZiIsImZvcmQiPT1kP2U6Yik7YS5hdHRyKCJ0YXJnZXQiLCJfYmxhbmsiKX19fSl9KTsKJCh3aW5kb3cpLm9uKCJsb2FkIixmdW5jdGlvbigpe3RyeXtpZihnZXRQYXJhbWV0ZXJCeU5hbWUoInByb21vIikpe3ZhciBhPTA8YWN0aXZhdGVkUG9wdXBEaXZJRC5sZW5ndGg\/YWN0aXZhdGVkUG9wdXBEaXZJRDohMTtpZihhJiYwPGEubGVuZ3RoKXt2YXIgYj0kKCIjIithKS5wb3B1cGl6ZSh7cHJpb3JpdHk6MTAwLGVuZFBvcHVwUXVldWU6ITB9KTtwb3B1cFN1cGVydmlzb3IucmVnaXN0ZXIoYil9fSJvYmplY3QiPT10eXBlb2YgcG9wdXBTdXBlcnZpc29yJiZzZXRUaW1lb3V0KHBvcHVwU3VwZXJ2aXNvci5zaG93LDUwMCl9Y2F0Y2goYyl7Y29uc29sZS5sb2coYyl9fSk7CiQoZnVuY3Rpb24oKXskKCIubmF2IGEiKS5vbigiY2xpY2siLGZ1bmN0aW9uKGEpeyJ1bmRlZmluZWQiIT10eXBlb2YgYWN0aXZlVXNlclByb2ZpbGVNbmcmJiJ1bmRlZmluZWQiIT10eXBlb2YgYWN0aXZlVXNlclByb2ZpbGVNbmcubG9nUGFnZVZpZXdFdmVudCYmKChhPSQodGhpcykuYXR0cigiaHJlZiIpKSYmIVJlZ0V4cCgiamF2YXNjcmlwdDoiLCJnaSIpLnRlc3QoYSkmJmFjdGl2ZVVzZXJQcm9maWxlTW5nLmxvZ1BhZ2VWaWV3RXZlbnQoYSwiTUVOVV9jbGlja2VkX1VSTCIpLChhPSIvIj09YT8iSG9tZSI6JCh0aGlzKS50ZXh0KCkpJiZhY3RpdmVVc2VyUHJvZmlsZU1uZy5sb2dQYWdlVmlld0V2ZW50KGEsIk1FTlVfY2xpY2tlZF9JTkZPIikpfSl9KTsKdmFyIEQyQ1V0aWxzPXtMYW5nOntpc0VOOmZ1bmN0aW9uKCl7cmV0dXJuISgiZnVuY3Rpb24iPT09dHlwZW9mICQmJiQoIkJPRFkiKS5oYXNDbGFzcygiRlJFTkNIIikpfSxnZXRTaG9ydExhbmc6ZnVuY3Rpb24oYSl7cmV0dXJuIEQyQ1V0aWxzLkxhbmcuaXNFTigpP2E\/IkVOIjoiZW4iOmE\/IkZSIjoiZnIifX0sRm9ybWF0Ont0b051bWJlcjpmdW5jdGlvbihhKXthPWEudG9TdHJpbmcoKS5zcGxpdCgiLiIpO2Zvcih2YXIgYj0vKFxkKykoXGR7M30pLztiLnRlc3QoYVswXSk7KWFbMF09YVswXS5yZXBsYWNlKGIsIiQxLCQyIik7cmV0dXJuIGFbMF19LHRvUHJpY2U6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYj8oYj1EMkNVdGlscy5MYW5nLmlzRU4oKT8iIjoiICQiLGAke0QyQ1V0aWxzLkxhbmcuaXNFTigpPyIkIjoiIn0ke0QyQ1V0aWxzLkZvcm1hdC50b051bWJlcihhKX0ke2J9YCk6YDxzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiPiR7RDJDVXRpbHMuRm9ybWF0LnRvTnVtYmVyKGEpfTwvc3Bhbj5gfX0sCk51bWJlcjp7cm91bmREb3duOmZ1bmN0aW9uKGEpe3ZhciBiPTI9PT1hcmd1bWVudHMubGVuZ3RoP3BhcnNlSW50KGFyZ3VtZW50c1sxXSk6MTtyZXR1cm4gTWF0aC5mbG9vcihhL2IpKmJ9LHJvdW5kVXA6ZnVuY3Rpb24oYSl7dmFyIGI9Mj09PWFyZ3VtZW50cy5sZW5ndGg\/cGFyc2VJbnQoYXJndW1lbnRzWzFdKToxO3JldHVybiBNYXRoLmNlaWwoYS9iKSpifX0sQXJyYXlzOntmaW5kOmZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hLmxlbmd0aDtpZigwPGQpZm9yKHZhciBlPTA7ZTxkO2UrKylpZihhW2VdW2JdPT1jKXJldHVybiBhW2VdO3JldHVybi0xfX0sU3RyaW5nOntjYXBpdGFsaXplRmlyc3RMZXR0ZXI6ZnVuY3Rpb24oYSl7cmV0dXJuIFN0cmluZyhhKS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKStTdHJpbmcoYSkuc2xpY2UoMSl9fSxNb2JpbGU6e2lzTW9iaWxlOmZ1bmN0aW9uKCl7cmV0dXJuIDA8JCgiI2lzTW9iaWxlIikubGVuZ3RofX19OwpmdW5jdGlvbiBzZXR1cEZpbmFuY2luZ0xpbmsoYSxiKXs0ODU9PSgkKCIjc2l0ZUlEIikudmFsKCl8fCQoIiN0b3BzaXRlaWQiKS52YWwoKSkmJmIuY2xlYXJhbmNlJiYwPGEubGVuZ3RoJiYoYj0kKCIjTWFpbk1lbnVfZjQ4MmJhYWItYWFjNC1lZGE2LTZiNTItMyA+IGEiKSwwPT1iLmxlbmd0aCYmKGI9JCgiLkNMRUFSQU5DRSIpLnBhcmVudCgpLmZpbmQoIi5zdWJtZW51SXRlbTpmaXJzdC1jaGlsZCIpKSwwPGIubGVuZ3RoJiYoYj1iLmF0dHIoImhyZWYiKSwiIiE9PWImJmEuYXR0cigiaHJlZiIsYikpKX12YXIgb3BlbldpbmRvd3M9W10sd2luZG93T3Blbk9HPXdpbmRvdy5vcGVuOwp3aW5kb3cub3Blbj1mdW5jdGlvbigpe3ZhciBhPXdpbmRvd09wZW5PRy5hcHBseSh0aGlzLGFyZ3VtZW50cyksYj17d2luZG93OmEsYXJnczphcmd1bWVudHN9O29wZW5XaW5kb3dzLnB1c2goYik7InVuZGVmaW5lZCIhPT10eXBlb2YgalF1ZXJ5JiZqUXVlcnkoZG9jdW1lbnQpLnRyaWdnZXIoIndpbmRvdy5vcGVuIixiKTtyZXR1cm4gYX07CiQoZnVuY3Rpb24oKXskKGRvY3VtZW50KS5vbigid2luZG93Lm9wZW4iLGZ1bmN0aW9uKGEsYil7YT1iLmFyZ3M7Zm9yKHZhciBjPSExLGQ9MDtkPGEubGVuZ3RoO2QrKylpZigtMTxhW2RdLmluZGV4T2YoImNhcmZheCIpfHxhW2RdLmluZGV4T2YoImNhcnByb29mIikpe2M9ITA7YnJlYWt9aWYoYyl7YT13aW5kb3cuc2NyZWVuLmF2YWlsSGVpZ2h0fHx3aW5kb3cuaW5uZXJIZWlnaHR8fGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHR8fGRvY3VtZW50LmJvZHkuY2xpZW50SGVpZ2h0O3RyeXtiLndpbmRvdy5yZXNpemVUbyhiLndpbmRvdy5vdXRlcldpZHRoLE1hdGgucm91bmQoLjk1KmEpKX1jYXRjaChlKXt9fX0pfSk7CiQoZnVuY3Rpb24oKXt2YXIgYT0kKCIudXBfbWVudSIpLGI9JCgiLnByb21vdGlvblNpZGVWQnV0dG9uIiksYz0kKCcjc2xpZGVpdCA+IGxhYmVsW2Zvcj0ib3Blbi1pdGVtIl06bm90KC50ZXh0LXVzLWJ0biknKTtpZihhLmxlbmd0aCYmYi5sZW5ndGgpe3ZhciBkPSExLGU9ZnVuY3Rpb24oKXt2YXIgaz0kKHdpbmRvdykuc2Nyb2xsVG9wKCksaD0kKHdpbmRvdykuaGVpZ2h0KCk7az1hLm9mZnNldCgpLnRvcCthLm91dGVySGVpZ2h0KCkrMTAwLWs7aD1NYXRoLm1heChoLzIsayk7Yi5wYXJlbnQoKS5oYXNDbGFzcygic3BlY2lhbFNjaGVkdWxlQ29udGVudCIpfHwic3BlY2lhbFNjaGVkdWxlQ29udGVudCI9PWIucGFyZW50KCkuYXR0cigiaWQiKXx8Yi5jc3Moe3Bvc2l0aW9uOiJmaXhlZCIsdG9wOmgrInB4Iix0cmFuc2Zvcm06InRyYW5zbGF0ZVkoLTUwJSkiLHRyYW5zaXRpb246Im5vbmUifSk7Yy5sZW5ndGgmJihoPWJbMF0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuYm90dG9tLApjLmNzcyh7cG9zaXRpb246ImZpeGVkIix0b3A6aCs1KyJweCJ9KSk7ZD0hMX07JCh3aW5kb3cpLm9uKCJzY3JvbGwgcmVzaXplIixmdW5jdGlvbigpe2R8fCh3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGUpLGQ9ITApfSk7c2V0VGltZW91dChlLDEwMCl9fSk7ZnVuY3Rpb24gcmVwbGFjZVVzZWRWZWhpY2xlTW9kZWxEaXNwbGF5KGEpe2lmKCJzdHJpbmciPT09dHlwZW9mIGF8fGEgaW5zdGFuY2VvZiBTdHJpbmcpImZ1bmN0aW9uIj09PXR5cGVvZiAkJiYkKCJCT0RZIikuaGFzQ2xhc3MoIkZSRU5DSCIpfHwtMSE9PWEuaW5kZXhPZigiSHlicmlkZSIpJiYoYT1hLnJlcGxhY2UoIkh5YnJpZGUiLCJIeWJyaWQiKSk7cmV0dXJuIGF9CiQoZnVuY3Rpb24oKXtpZigkKCIucGF5cGFsX2J1dHRvbl9odG1sIikubGVuZ3RoKXt2YXIgYT0kKCJCT0RZIikuaGFzQ2xhc3MoIkZSRU5DSCIpPyJmciI6ImVuIixiPSQoIkJPRFkiKS5oYXNDbGFzcygiRlJFTkNIIik\/IlLDqXNlcnZlei1sZSBhdmVjIFBheVBhbCAhIjoiUmVzZXJ2ZSBpdCAgd2l0aCBQYXlQYWwgISI7JCgiLnBheXBhbF9idXR0b25faHRtbCIpLmZpbmQoJ2lucHV0W3R5cGU9ImltYWdlIl1bbmFtZT0ic3VibWl0Il0nKS5hdHRyKCJzcmMiLCIvaW1hZ2VzL2NvbnRpbnVlX3dpdGhfcGF5cGFsXyIrYSsiLnBuZyIpOyQoIi5wYXlwYWxfYnV0dG9uX2h0bWwiKS5maW5kKCJmb3JtIikuYXR0cigidGFyZ2V0IiwicGF5cGFsSWZyYW1lIik7JCgiLnBheXBhbF9idXR0b25faHRtbCIpLmZpbmQoInRhYmxlIHRyOmZpcnN0IHRkIikuY29udGVudHMoKS5maWx0ZXIoZnVuY3Rpb24oKXtyZXR1cm4gMz09dGhpcy5ub2RlVHlwZX0pLmZpcnN0KCkucmVwbGFjZVdpdGgoYik7JCgiLnBheXBhbF9idXR0b25faHRtbCBmb3JtIikuZmluZCgnW25hbWU9Iml0ZW1fbmFtZSJdJykucmVtb3ZlKCk7CiQoIi5wYXlwYWxfYnV0dG9uX2h0bWwgZm9ybSIpLmZpbmQoJ1tuYW1lPSJpdGVtX251bWJlciJdJykucmVtb3ZlKCk7YT0nPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iaXRlbV9uYW1lIiB2YWx1ZT0iJyskKCIjcGhvbmVtYWtlIikudmFsKCkrIiAiKyQoIiNwaG9uZW1vZGVsIikudmFsKCkrIiAiKyQoIiNwaG9uZW15ZWFyIikudmFsKCkrIiBTdG9jaygjIiskKCIjcGhvbmVzdG9ja251bWJlciIpLnZhbCgpKycpIj4nOyQoIi5wYXlwYWxfYnV0dG9uX2h0bWwgZm9ybSIpLmFwcGVuZChhKTskKCIucGF5cGFsX2J1dHRvbl9odG1sIikuZmluZCgnaW5wdXRbdHlwZT0iaW1hZ2UiXVtuYW1lPSJzdWJtaXQiXScpLm9uKCJjbGljayIsZnVuY3Rpb24oKXtnYVRyYWNrKCJjLl90cmFja0V2ZW50IiwiQ2xpcXVlcyBQYXlQYWwiLCJPY2Nhc2lvbiIsJCgiI2hpZGRlbkRlYWxlck5hbWUiKS52YWwoKSsiLSIrJCgiI3Bob25lbWFrZSIpLnZhbCgpKyItIiskKCIjcGhvbmVtb2RlbCIpLnZhbCgpKwoiLSIrJCgiI3Bob25lbXllYXIiKS52YWwoKSsiLSIrJCgiI3Bob25lc3RvY2tudW1iZXIiKS52YWwoKSwxKX0pOyQoIiNwYXlwYWxQb3B1cCIpLmRldGFjaCgpLmFwcGVuZFRvKCJib2R5Iik7JCgnLnBheXBhbF9idXR0b25faHRtbCBpbnB1dFtuYW1lPSJzdWJtaXQiXScpLm9uKCJjbGljayIsZnVuY3Rpb24oKXskKCIjcGF5cGFsUG9wdXAiKS5wb3B1cGl6ZSgpLnNldFRyaWdnZXIoImNsaWNrIikub3BlbigpfSk7JCgiLnBheXBhbF9idXR0b25faHRtbCIpLnNob3coKX0kKCIjdGVzdERyaXZlVHlwZSIpLmxlbmd0aCYmKCJWaXJ0dWFsIj09JCgiI3Rlc3REcml2ZVR5cGUiKS52YWwoKXx8IlZpcnR1ZWwiPT0kKCIjdGVzdERyaXZlVHlwZSIpLnZhbCgpKSYmJCgiLnByZWZlcmVkVmlydHVhbFRvb2wiKS5zaG93KCl9KTsKZnVuY3Rpb24gcHJpY2VSZXF1ZXN0Q29tbWVudFRleHQoKXt2YXIgYT0kKCIjYWN0aXZlc2l0ZWxhbmd1YWdlIiksYj0kKCIjaXNtb2JpbGUiKSxjPSQoIiNxdWVzdGlvbnNDb21tZW50cyIpO2E9IkVOR0xJU0giPT1hLnZhbCgpPyJIaSwgSSdkIGxpa2UgdG8gZ2V0IHlvdXIgYmVzdCBwcmljZSBvbiBhIDAgICI6IkJvbmpvdXIsIGonYWltZXJhaXMgYXZvaXIgdm90cmUgbWVpbGxldXJzIHByaXggcG91ciB1biAgIDAiOzA8Yi5sZW5ndGgmJiIxIj09Yi52YWwoKSYmMDxjLmxlbmd0aCYmYy52YWwoKT09YSYmYy52YWwoIiIpfSQoZnVuY3Rpb24oKXtwcmljZVJlcXVlc3RDb21tZW50VGV4dCgpfSk7CiQoZnVuY3Rpb24oKXt2YXIgYT0kKCIjZm9vdGVyIC5pY29uLXRleHQgc3BhbltpdGVtcHJvcD0ndGVsZXBob25lJ10gYS5waG9uZS1saW5rIiksYj0kKCIjZm9vdGVyIC5pY29uLXRleHQgLmZhLXBob25lIik7MDxhLmxlbmd0aCYmMDxiLmxlbmd0aCYmIiI9PWEuaHRtbCgpLnRyaW0oKSYmYi5oaWRlKCl9KTsKZnVuY3Rpb24gcGFnZVZpZXdDb3VudEdvb2dsZUV2ZW50KCl7dmFyIGE9d2luZG93LmxvY2F0aW9uLnBhdGhuYW1lLGI9MCxjPXNlc3Npb25TdG9yYWdlLmdldEl0ZW0oImQyY19WRFBNViIpO251bGwhPWM\/KGM9SlNPTi5wYXJzZShjKSxiPW51bGwhPWNbYV0\/Y1thXTowLGNbYV09cGFyc2VJbnQoYikrMSk6KGM9e30sY1thXT0xKTthPSIxIj09JCgiI25ld1NlY3Rpb25PdmVycmlkZSIpLnZhbCgpPyJORVciOiQoIiNkZWZhdWx0RGVwYXJ0bWVudCIpLnZhbCgpOzA9PWI\/Z2FUcmFjaygiYy5fdHJhY2tFdmVudCIsIlZEUCBtdWx0aXBsZSB2aWV3cyIsYSwiMXgiLDEpOjE9PWI\/Z2FUcmFjaygiYy5fdHJhY2tFdmVudCIsIlZEUCBtdWx0aXBsZSB2aWV3cyIsYSwiMngiLDEpOmdhVHJhY2soImMuX3RyYWNrRXZlbnQiLCJWRFAgbXVsdGlwbGUgdmlld3MiLGEsIjN4KyIsMSk7c2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSgiZDJjX1ZEUE1WIixKU09OLnN0cmluZ2lmeShjKSl9CiQuZm4uaXNJblZpZXdwb3J0PWZ1bmN0aW9uKCl7dmFyIGE9JCh0aGlzKS5vZmZzZXQoKS50b3AsYj1hKyQodGhpcykub3V0ZXJIZWlnaHQoKSxjPSQod2luZG93KS5zY3JvbGxUb3AoKSxkPWMrJCh3aW5kb3cpLmhlaWdodCgpO3JldHVybiBiPmMmJmE8ZH07JC5mbi5pc0Fib3ZlVmlld3BvcnQ9ZnVuY3Rpb24oYSl7YT1hfHwwO3ZhciBiPSQodGhpcykub2Zmc2V0KCkudG9wKyQodGhpcykub3V0ZXJIZWlnaHQoKSxjPSQod2luZG93KS5zY3JvbGxUb3AoKTtyZXR1cm4gYj5jK2F9O2Z1bmN0aW9uIHNldFBvcHVwT3Blbk9uQ2xpY2soKXskKCJbZGF0YS1wb3B1cGlkXSIpLmVhY2goZnVuY3Rpb24oKXt2YXIgYT0kKHRoaXMpLmF0dHIoImRhdGEtcG9wdXBpZCIpOyQodGhpcykub24oImNsaWNrIHRhcCIsZnVuY3Rpb24oYil7Yi5wcmV2ZW50RGVmYXVsdCgpOyQoIiMiK2EpLnBvcHVwaXplKCkuc2V0VHJpZ2dlcigiY2xpY2siKS5vcGVuKCl9KX0pfQpmdW5jdGlvbiBhZGREZWFsZXJJbnNpZGVTY3JpcHQoKXtpZigkKCIuZGVhbGVyLWluc2lkZS1jdGEtYWN0aW9uLWJveCIpLmxlbmd0aCl7dmFyIGE9JCgiLmRlYWxlci1pbnNpZGUtY3RhLWFjdGlvbi1ib3giKS5hdHRyKCJkYXRhLWlkRGVhbGVyIiksYj0kKCIuZGVhbGVyLWluc2lkZS1jdGEtYWN0aW9uLWJveCIpLmF0dHIoImRhdGEtbGFuZyIpLGM9JCgiLmRlYWxlci1pbnNpZGUtY3RhLWFjdGlvbi1ib3giKS5hdHRyKCJkYXRhLWJ1dHRvbi10eXBlIiksZD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKTtkLnNldEF0dHJpYnV0ZSgidHlwZSIsInRleHQvamF2YXNjcmlwdCIpO2Quc2V0QXR0cmlidXRlKCJzcmMiLCJodHRwczovL2RlYWxlcmluc2lkZWFwcC5jb20vd2lkZ2V0cy9kZWFsZXJfaW5zaWRlX2NhbGwuanM\/ZGVhbGVySWQ9IithKyImbGFuZz0iK2IrIiZidXR0b25UeXBlPSIrYyk7ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImhlYWQiKVswXS5hcHBlbmRDaGlsZChkKX19CiQoZnVuY3Rpb24oKXtzZXRQb3B1cE9wZW5PbkNsaWNrKCk7YWRkRGVhbGVySW5zaWRlU2NyaXB0KCl9KTtmdW5jdGlvbiBtb3RvaW5zaWdodFNob3BHb29nbGVPcHRpbWl6ZSgpeyQoIiNqcy1tb3RvaW5zaWdodFNob3BQb3B1cENvbnRhaW5lci1pbnB1dCIpLmxlbmd0aCYmJCgiLmpzLW1vdG9pbnNpZ2h0U2hvcFBvcHVwQ29udGFpbmVyIikubGVuZ3RoJiYkKCIuanMtbW90b2luc2lnaHRTaG9wUG9wdXBDb250YWluZXIiKS5hdHRyKCJkYXRhLW1vdG9pbnNpZ2h0c2hvcGlmcmFtZXVybCIsJCgiI2pzLW1vdG9pbnNpZ2h0U2hvcFBvcHVwQ29udGFpbmVyLWlucHV0IikudmFsKCkpfWZ1bmN0aW9uIGh0bWxUb05vZGUoYSl7dmFyIGI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Yi5pbm5lckhUTUw9YS50cmltKCk7cmV0dXJuIGIuZmlyc3RFbGVtZW50Q2hpbGR9CmZ1bmN0aW9uIGh0bWxUb0RvY3VtZW50RnJhZyhhKXtyZXR1cm4gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKS5jcmVhdGVDb250ZXh0dWFsRnJhZ21lbnQoYSl9ZnVuY3Rpb24gaHRtbFRvRWxlbWVudHMoYSl7dmFyIGI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGVtcGxhdGUiKTtiLmlubmVySFRNTD1hO3JldHVybiBiLmNvbnRlbnQuY2hpbGROb2Rlc30KY29uc3Qgdmlld1BvcnRPYnNlcnZlcj1mdW5jdGlvbihhKXtsZXQgYj0hMSxjPSExLGQ9NTA7Y29uc3QgZT1rPT57az1rWzBdO2xldCBoPS4wMT49ay5pbnRlcnNlY3Rpb25SYXRpbyYmay5ib3VuZGluZ0NsaWVudFJlY3QudG9wPGQ7Yy5jbGFzc0xpc3QudG9nZ2xlKCJ0b3AtZml4ZWQiLGgpO2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIi5zbXNDdGFCdG4iKS5mb3JFYWNoKG49Pm4uaGlkZGVuPSFoKTtudWxsIT09ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRvYXN0LWNvbnRhaW5lciIpJiYoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRvYXN0LWNvbnRhaW5lciIpLmhpZGRlbj0haCl9O3JldHVybntvYnNlcnZlOigpPT57aWYoYSl7ZCs9YS5vZmZzZXRIZWlnaHQrMTY7dmFyIGs9YS5jbG9zZXN0KCIub2JzZXJ2ZWQtd3JhcHBlciIpfHwhMTtpZighayl7bGV0IGg9aHRtbFRvTm9kZSgnPGRpdiBjbGFzcz0iZml4ZWQtd3JhcHBlciI+PC9kaXY+Jyk7az1odG1sVG9Ob2RlKCc8ZGl2IGNsYXNzPSJvYnNlcnZlZC13cmFwcGVyIj48L2Rpdj4nKTsKYS5hZnRlcihrKTtrLmFwcGVuZENoaWxkKGgpO2guYXBwZW5kQ2hpbGQoYSk7ay5zdHlsZS5oZWlnaHQ9YCR7aC5vZmZzZXRIZWlnaHR9cHhgfWI9aztjPWIucXVlcnlTZWxlY3RvcigiLmZpeGVkLXdyYXBwZXIiKTsobmV3IEludGVyc2VjdGlvbk9ic2VydmVyKGUse3Jvb3RNYXJnaW46YC0ke2R9cHggMHB4IDBweCAwcHhgLHRocmVzaG9sZDpbMCwuMDFdfSkpLm9ic2VydmUoYil9fX19OwpmdW5jdGlvbiBkMmNGb290ZXJEZWxldGVBbGxDb29raWVzKGEpe2xvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCJkMmZhdkRhdGEiKTtsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgiZm9ybUZpbGxEYXRhIik7bG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oImZpbmFuY2VfbXVsdGlzdGVwX2Zvcm1fdXNlcklkIik7bG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oImZpbmFuY2VfbXVsdGlzdGVwLmxpbmVhcl9zdGVwIik7dmFyIGI9d2luZG93LmxvY2F0aW9uLmhvc3RuYW1lLGM9YjtiPWIucmVwbGFjZSgid3d3LiIsIiIpO3ZhciBkPWI9Yi5yZXBsYWNlKCJtLiIsIiIpO2IuaW5jbHVkZXMoImQyY21lZGlhLmNhIikmJihiPSJkMmNtZWRpYS5jYSIpO2Zvcih2YXIgZT1kb2N1bWVudC5jb29raWUuc3BsaXQoIjsiKSxrPTA7azxlLmxlbmd0aDtrKyspe3ZhciBoPWVba10sbj1oLmluZGV4T2YoIj0iKTtoPS0xPG4\/aC5zdWJzdHIoMCxuKTpoOyJkMmNfY29va2llX2NvbnNlbnQiIT1oLnRyaW0oKSYmIk9wdGFub25BbGVydEJveENsb3NlZCIhPQpoLnRyaW0oKSYmIk9wdGFub25Db25zZW50IiE9aC50cmltKCkmJihoPWgudHJpbSgpLGRvY3VtZW50LmNvb2tpZT1oKyI9O1BhdGg9Lztkb21haW49LiIrYisiO2V4cGlyZXM9VGh1LCAwMSBKYW4gMTk3MCAwMDowMDowMCBHTVQiLGRvY3VtZW50LmNvb2tpZT1oKyI9O1BhdGg9Lztkb21haW49IitiKyI7ZXhwaXJlcz1UaHUsIDAxIEphbiAxOTcwIDAwOjAwOjAwIEdNVCIsZG9jdW1lbnQuY29va2llPWgrIj07UGF0aD0vO2RvbWFpbj0iK2MrIjtleHBpcmVzPVRodSwgMDEgSmFuIDE5NzAgMDA6MDA6MDAgR01UIixkb2N1bWVudC5jb29raWU9aCsiPTtQYXRoPS87ZG9tYWluPS4iK2QrIjtleHBpcmVzPVRodSwgMDEgSmFuIDE5NzAgMDA6MDA6MDAgR01UIixkb2N1bWVudC5jb29raWU9aCsiPTtQYXRoPS87ZG9tYWluPSIrZCsiO2V4cGlyZXM9VGh1LCAwMSBKYW4gMTk3MCAwMDowMDowMCBHTVQiLGRvY3VtZW50LmNvb2tpZT1oKyI9O1BhdGg9Lztkb21haW49LmQyY21lZGlhLmNhO2V4cGlyZXM9VGh1LCAwMSBKYW4gMTk3MCAwMDowMDowMCBHTVQiLApkb2N1bWVudC5jb29raWU9aCsiPTtQYXRoPS87ZG9tYWluPWQyY21lZGlhLmNhO2V4cGlyZXM9VGh1LCAwMSBKYW4gMTk3MCAwMDowMDowMCBHTVQiLGRvY3VtZW50LmNvb2tpZT1oKyI9O2V4cGlyZXM9VGh1LCAwMSBKYW4gMTk3MCAwMDowMDowMCBHTVQiLGRvY3VtZW50LmNvb2tpZT1oKyI9O1BhdGg9LztleHBpcmVzPVRodSwgMDEgSmFuIDE5NzAgMDA6MDA6MDAgR01UIixjb25zb2xlLmxvZygiRDJEQyIsaCxiKSxrPT1wYXJzZUZsb2F0KGUubGVuZ3RoKS0xJiYoInVuZGVmaW5lZCI9PT10eXBlb2YgYSYmJCgiI2QyY0Zvb3RlckNvb2tpZURlbGV0ZSIpLnBvcHVwaXplKCkuc2V0VHJpZ2dlcigiY2xpY2siKS5vcGVuKCksc2V0VGltZW91dChkMmNGb290ZXJEZWxldGVBbGxDb29raWVzUmVmcmVzaCwyRTMpKSl9cmV0dXJuITB9CmZ1bmN0aW9uIGQyY0Zvb3RlckRlbGV0ZUFsbENvb2tpZXNSZWZyZXNoKCl7d2luZG93LnRvcD09PXdpbmRvdy5zZWxmJiZsb2NhdGlvbi5yZWxvYWQoKX0Kd2luZG93Lmdvb2dsZVJlY2FwdGNoYT1mdW5jdGlvbigpe3ZhciBhPXtwb2xpY3lTaXRlS2V5OiI2TGN4MjhRc0FBQUFBSHBiVGJ3U05jUWZtaDNqOXBZMHp0RjFvQlVSIixjaGVja2JveFNpdGVLZXk6anNfZDJjX2dldF92YWwoIklTVk0iKT8iNkxkQVpNWXNBQUFBQUROMHJPM3laMzRvc0xCdU01R0pHV1lCX09nOSI6IjZMZUtlY1lzQUFBQUFBMFlhN0hVTWVEMTc3ZDZfUHNiY21qMDlWbkYiLGRlZmF1bHRBY3Rpb246ImxlYWRfc3VibWl0Iixsb2FkZWQ6ITEsY2hlY2tib3hlczp7fSxhY3RpdmVGb3JtSWQ6bnVsbCxpc1JlYWR5OmZ1bmN0aW9uKCl7cmV0dXJuIGEubG9hZGVkJiZ3aW5kb3cuZ3JlY2FwdGNoYSYmd2luZG93LmdyZWNhcHRjaGEuZW50ZXJwcmlzZX0saW5pdDpmdW5jdGlvbigpe2lmKCFhLmxvYWRlZCl0cnl7dmFyIGI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7Yi5zcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vcmVjYXB0Y2hhL2VudGVycHJpc2UuanM\/cmVuZGVyPSIrCmEucG9saWN5U2l0ZUtleTtiLmFzeW5jPSEwO2IuZGVmZXI9ITA7Yi5vbmxvYWQ9ZnVuY3Rpb24oKXthLmxvYWRlZD0hMDtkb2N1bWVudC5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgiZ3JlY2FwdGNoYS5kMmNsb2FkZWQiKSl9O3ZhciBjPWRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJzY3JpcHQiKVswXTtjLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGIsYyl9Y2F0Y2goZCl7Y29uc29sZS5sb2coZCl9fSx1c2VDaGVja2JveDpmdW5jdGlvbihiLGMpe3ZhciBkPXt3aWRnZXRJZDotMSx0b2tlbjoiIixhY3Rpb246Y3x8YS5kZWZhdWx0QWN0aW9ufTthLmNoZWNrYm94ZXNbYl09ZDthLmxvYWRlZHx8YS5pbml0KCk7Yz1mdW5jdGlvbigpe2lmKCEoLTE8ZC53aWRnZXRJZCkpaWYoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYikpdHJ5e2dyZWNhcHRjaGEuZW50ZXJwcmlzZS5yZWFkeShmdW5jdGlvbigpe2Qud2lkZ2V0SWQ9Z3JlY2FwdGNoYS5lbnRlcnByaXNlLnJlbmRlcihiLAp7c2l0ZWtleTphLmNoZWNrYm94U2l0ZUtleSxhY3Rpb246ZC5hY3Rpb24sY2FsbGJhY2s6ZnVuY3Rpb24oZSl7ZC50b2tlbj1lfSwiZXhwaXJlZC1jYWxsYmFjayI6ZnVuY3Rpb24oKXtkLnRva2VuPSIifSwiZXJyb3ItY2FsbGJhY2siOmZ1bmN0aW9uKCl7ZC50b2tlbj0iIn19KX0pfWNhdGNoKGUpe2NvbnNvbGUubG9nKGUpfWVsc2UgY29uc29sZS5sb2coIkdSQyBjaGVja2JveCBjb250YWluZXIgbm90IGZvdW5kOiIsYil9O2EuaXNSZWFkeSgpP2MoKTpkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJncmVjYXB0Y2hhLmQyY2xvYWRlZCIsYyx7b25jZTohMH0pfSxyZXNldENoZWNrYm94OmZ1bmN0aW9uKGIpeyhiP1tiXTpPYmplY3Qua2V5cyhhLmNoZWNrYm94ZXMpKS5mb3JFYWNoKGZ1bmN0aW9uKGMpe2lmKGM9YS5jaGVja2JveGVzW2NdKXtpZigtMTxjLndpZGdldElkJiZhLmlzUmVhZHkoKSl0cnl7Z3JlY2FwdGNoYS5lbnRlcnByaXNlLnJlc2V0KGMud2lkZ2V0SWQpfWNhdGNoKGQpe2NvbnNvbGUubG9nKGQpfWMudG9rZW49CiIifX0pfSxpc0NoZWNrYm94U29sdmVkOmZ1bmN0aW9uKGIpe2I9YS5jaGVja2JveGVzW2JdO3JldHVybiEoIWJ8fCFiLnRva2VuKX0sY3VycmVudENvbnRleHQ6ZnVuY3Rpb24oKXt2YXIgYj1hLmFjdGl2ZUZvcm1JZDtyZXR1cm4oYj1iP2EuY2hlY2tib3hlc1tiXTpudWxsKT97bW9kZToiY2hlY2tib3giLGFjdGlvbjpiLmFjdGlvbix0b2tlbjpiLnRva2VufTp7bW9kZToicG9saWN5IixhY3Rpb246YS5kZWZhdWx0QWN0aW9uLHRva2VuOiIifX0sZ2V0UmVzcG9uc2U6ZnVuY3Rpb24oYil7dmFyIGM9JC5EZWZlcnJlZCgpLGQ9YS5jdXJyZW50Q29udGV4dCgpO2lmKCJjaGVja2JveCI9PT1kLm1vZGUpcmV0dXJuIGMucmVzb2x2ZShkLnRva2VufHwiIikucHJvbWlzZSgpO2lmKCFhLmlzUmVhZHkoKSlyZXR1cm4gYy5yZXNvbHZlKCIiKS5wcm9taXNlKCk7dmFyIGU9Ynx8ZC5hY3Rpb247dHJ5e2dyZWNhcHRjaGEuZW50ZXJwcmlzZS5yZWFkeShmdW5jdGlvbigpe2dyZWNhcHRjaGEuZW50ZXJwcmlzZS5leGVjdXRlKGEucG9saWN5U2l0ZUtleSwKe2FjdGlvbjplfSkudGhlbihmdW5jdGlvbihrKXtjLnJlc29sdmUoayl9KS5jYXRjaChmdW5jdGlvbihrKXtjb25zb2xlLmxvZygiR1JDIEZhaWwiLGspO2MucmVzb2x2ZSgiIil9KX0pfWNhdGNoKGspe2NvbnNvbGUubG9nKGspLGMucmVzb2x2ZSgiIil9cmV0dXJuIGN9fTtyZXR1cm4gYX0oKTt0cnl7ZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoImdvb2dsZVJlY2FwdGNoYS5yZWFkeSIpKX1jYXRjaChhKXt9ZnVuY3Rpb24gZ2V0THV4dXJ5VGF4QW1vdW50KGEpe3ZhciBiPTA7MUU1PGEmJihiPS4xKmEsYT0uMiooYS0xRTUpLGI9YjxhP2I6YSk7cmV0dXJuIE1hdGgucm91bmQoYil9CnZhciB3b3Jkcz1bXSxwYXJ0LHdvcmRJbmRleD0wLG9mZnNldD0wLGxlbj0xLGZvcndhcmRzPSEwLHNraXBfY291bnQ9MCxza2lwX2RlbGF5PTE1LHNwZWVkPTcwLHdvcmRmbGljaz1mdW5jdGlvbihhLGIpe3dvcmRzPWE7bGVuPXdvcmRzLmxlbmd0aDtzZXRJbnRlcnZhbChmdW5jdGlvbigpe2ZvcndhcmRzP29mZnNldD49d29yZHNbd29yZEluZGV4XS5sZW5ndGgmJigrK3NraXBfY291bnQsc2tpcF9jb3VudD09c2tpcF9kZWxheSYmKGZvcndhcmRzPSExLHNraXBfY291bnQ9MCkpOjA9PW9mZnNldCYmKGZvcndhcmRzPSEwLHdvcmRJbmRleCsrLG9mZnNldD0wLHdvcmRJbmRleD49bGVuJiYod29yZEluZGV4PTApKTtwYXJ0PXdvcmRzW3dvcmRJbmRleF0uc3Vic3RyKDAsb2Zmc2V0KTswPT1za2lwX2NvdW50JiYoZm9yd2FyZHM\/b2Zmc2V0Kys6b2Zmc2V0LS0pO2IudGV4dChwYXJ0KX0sc3BlZWQpfTsKZnVuY3Rpb24gaXNJblZpZXdwb3J0KGEsYil7Yj12b2lkIDA9PT1iP3t9OmI7YT1hLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO2xldCBjPWlzTnVtZXJpYyhiLnRvcCk\/Yi50b3A6MDtiPWlzTnVtZXJpYyhiLmxlZnQpP2IubGVmdDowO3JldHVybiBNYXRoLmZsb29yKGEudG9wKT49YyYmTWF0aC5mbG9vcihhLmxlZnQpPj1iJiZNYXRoLmZsb29yKGEuYm90dG9tKTw9KHdpbmRvdy5pbm5lckhlaWdodHx8ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodCkmJk1hdGguZmxvb3IoYS5yaWdodCk8PSh3aW5kb3cuaW5uZXJXaWR0aHx8ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoKX1mdW5jdGlvbiBpc051bWVyaWMoYSl7cmV0dXJuL14tP1xkKyQvZy50ZXN0KGEpfQpkb2NSZWFkeUFyci5wdXNoKCgpPT57ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnW3JvbGU9ImJ1dHRvbiJdJykuZm9yRWFjaChhPT57YS5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIixiPT57Y29uc3QgYz12b2lkIDAhPT1iLmtleT9iLmtleTpiLmtleUNvZGU7aWYoIkVudGVyIj09PWN8fDEzPT09YyliLnByZXZlbnREZWZhdWx0KCksYS5jbGljaygpfSl9KX0pOwooKCk9PntsZXQgYT1kb2N1bWVudC5jb29raWUsYj1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKERvY3VtZW50LnByb3RvdHlwZSwiY29va2llIik7T2JqZWN0LmRlZmluZVByb3BlcnR5KERvY3VtZW50LnByb3RvdHlwZSwiX2Nvb2tpZSIsYik7T2JqZWN0LmRlZmluZVByb3BlcnR5KERvY3VtZW50LnByb3RvdHlwZSwiY29va2llIix7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsZ2V0KCl7cmV0dXJuIHRoaXMuX2Nvb2tpZX0sc2V0KGMpe3ZhciBkPWMudHJpbSgpLnNwbGl0KCI7Iik7bGV0IGU9e307dmFyIGs9MDtmb3IoaCBvZiBkKWQ9aC50cmltKCkuc3BsaXQoIj0iKSwwPT1rPyhlLm5hbWU9ZFswXSxlLnZhbHVlPWRbMV18fDApOiIiIT1kWzBdJiYoZVtkWzBdXT1kWzFdfHwwKSxrKys7az1lLm5hbWU7dmFyIGg9ZS5leHBpcmVzfHwwO2Q9ZS5wYXRofHwiLyI7bGV0IG49ZS5kb21haW58fCIiO2UudmFsdWUmJiIiIT1lLnZhbHVlJiZudWxsIT1lLnZhbHVlJiYKd2luZG93LkNvb2tpZUxvZ2dlci5sb2coayxlLnZhbHVlLGgsZCxuKTtjPXRoaXMuX2Nvb2tpZT1jO2lmKGMhPT1hKXRyeXt0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJjb29raWVjaGFuZ2UiLHtkZXRhaWw6e29sZFZhbHVlOmEsbmV3VmFsdWU6Y319KSl9ZmluYWxseXthPWN9fX0pfSkoKTtkb2NSZWFkeUFyci5wdXNoKCgpPT57dmFyIGE9bnVsbDtpZih3aW5kb3cubG9jYXRpb24uaGFzaCl7dHJ5e2E9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcihkZWNvZGVVUkkod2luZG93LmxvY2F0aW9uLmhhc2gpKX1jYXRjaChiKXtyZXR1cm59YSYmKGE9YS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3Ard2luZG93LnNjcm9sbFksd2luZG93LnNjcm9sbFRvKHt0b3A6YS0yMCxiZWhhdmlvcjoic21vb3RoIn0pKX19KTsKKGZ1bmN0aW9uKCl7ZnVuY3Rpb24gYShjKXtkZWJ1Zyh7Y29sbGVjdDpjfSk7Yz1jLm5ld1VSTD9uZXcgVVJMKGMubmV3VVJMKTp3aW5kb3cubG9jYXRpb247IiIhPT1jLmhhc2gmJmMuaGFzaC5zdWJzdHJpbmcoMSkuc3BsaXQoIiYiKS5tYXAoZnVuY3Rpb24oZCxlLGspe3RyeXt2YXIgW2gsbl09ZC5zcGxpdCgiPSIpO3N3aXRjaChoKXtjYXNlICJ1dG1fZSI6dmFyIHg9YXRvYihuKS5zcGxpdCgiOjoiKSx2PW51bGwhPWdldENvb2tpZSgidXRtX2NhbXBhaWduIikmJiJ1bmRlZmluZWQiIT10eXBlb2YgZ2V0Q29va2llKCJ1dG1fY2FtcGFpZ24iKT9nZXRDb29raWUoInV0bV9jYW1wYWlnbiIpOnhbMl07diYmc2V0Q29va2llKCJ1dG1fY2FtcGFpZ24iLHYsMTgwKTt2YXIgZj1udWxsIT1nZXRDb29raWUoInV0bV9zb3VyY2UiKSYmInVuZGVmaW5lZCIhPXR5cGVvZiBnZXRDb29raWUoInV0bV9zb3VyY2UiKT9nZXRDb29raWUoInV0bV9zb3VyY2UiKTp4WzNdO2YmJnNldENvb2tpZSgidXRtX3NvdXJjZSIsCmYsMTgwKTticmVhaztjYXNlICJ1dG1fZXgiOng9YXRvYihuKTt2YXIgZz1uZXcgVVJMKCJodHRwczovLyIrd2luZG93LmxvY2F0aW9uLmhvc3QreCk7MDxnLnNlYXJjaFBhcmFtcy5zaXplJiZnLnNlYXJjaFBhcmFtcy5mb3JFYWNoKGIpfXJldHVybntrZXk6aCx2YWx1ZTpufX1jYXRjaChtKXtkZWJ1ZyhtKX19KX1mdW5jdGlvbiBiKGMsZCl7dHJ5e3N3aXRjaChkKXtjYXNlICJEaXNwbGF5U291cmNlIjpjYXNlICJnY2xpZCI6ZGVidWcoe2tleTpkLGNvb2tpZTpnZXRDb29raWUoZCksdmFsdWU6Y30pLG51bGwhPWdldENvb2tpZShkKSYmIiIhPWdldENvb2tpZShkKXx8c2V0Q29va2llKGQsYywxODApfX1jYXRjaChlKXtkZWJ1ZyhlKX19d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLGEsITEpO3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJoYXNoY2hhbmdlIixhLCExKX0pKCk7MD49JCgiI3NoYXJlT25GYWNlYm9vayIpLmxlbmd0aCYmJCgiZm9vdGVyIikucHJlcGVuZCgnPGRpdiBpZD0ic2hhcmVPbkZhY2Vib29rIiBkYXRhLWV4cGxhaW49ImhvbmRhL2FjdXJhIGNlcnQgdXNlcyBndG0sIGl0IGhhcyBhIGJpbmQgdGhhdCB0aHJvd3MgYW4gZXJyb3IgaWYgdGhpcyBpZCBkb2VzIG5vdCBleGlzdC4gY29kZSBpcyBmcm9tIGd0bSBzaWRlLiI+PC9kaXY+Jyk7CihmdW5jdGlvbigpe2Z1bmN0aW9uIGEoKXtpZigidW5kZWZpbmVkIiE9PXR5cGVvZiAkLmNvb2tpZSl7bGV0IGM7dmFyIGI9bnVsbCE9KGM9JC5jb29raWUoIlRlcnRpYXJ5U291cmNlIikpP2M6IiI7IiIhPT1iJiYoJCgnKltocmVmKj0iJEZEVGVydGlhcnlTb3VyY2UiXScpLmVhY2goZnVuY3Rpb24oKXskKHRoaXMpLmF0dHIoImhyZWYiLCQodGhpcykuYXR0cigiaHJlZiIpLnJlcGxhY2UoIiRGRFRlcnRpYXJ5U291cmNlIixiKSl9KSwkKCcqW29uY2xpY2sqPSIkRkRUZXJ0aWFyeVNvdXJjZSJdJykuZWFjaChmdW5jdGlvbigpeyQodGhpcykuYXR0cigib25jbGljayIsJCh0aGlzKS5hdHRyKCJvbmNsaWNrIikucmVwbGFjZSgiJEZEVGVydGlhcnlTb3VyY2UiLGIpKX0pLCQoJypbdmFsdWUqPSIkRkRUZXJ0aWFyeVNvdXJjZSJdJykuZWFjaChmdW5jdGlvbigpeyQodGhpcykuYXR0cigidmFsdWUiLCQodGhpcykuYXR0cigidmFsdWUiKS5yZXBsYWNlKCIkRkRUZXJ0aWFyeVNvdXJjZSIsCmIpKX0pKX19YSgpO3NldFRpbWVvdXQoYSwxRTMpO3NldFRpbWVvdXQoYSw1RTMpOzA8PW5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZigiTWFjIikmJigkKCIubGFuZ3VhZ2VCYXIgLmdSYXRpbmctaWNvbiNnUmF0aW5nIC5yYXRpbmciKS5hZGRDbGFzcygibWFyZ2luLWJvdHRvbS0tNHB4IiksJCgiLmxhbmd1YWdlQmFyIC5zZXJ2aWNlLWhlYWRlci1mb3JtIGEuYnRuID4gc3BhbiIpLmFkZENsYXNzKCJtYXJnaW4tYm90dG9tLS00cHgiKSwkKCIubGFuZ3VhZ2VCYXIgLmRlc2t0b3BfbGFuZ19idXR0b25fdGV4dCIpLmFkZENsYXNzKCJtYXJnaW4tYm90dG9tLS00cHgiKSwkKCIubGFuZ3VhZ2VCYXIgLmRlc2t0b3BfbGFuZ19idXR0b25fdGV4dCIpLmNzcygidG9wIiwiNTIlIikpfSkoKTsKZnVuY3Rpb24gYWRkTm9UcmFuc2xhdGVFbWFpbERlZigpe2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1tpZCo9ImVtYWlsQm9keURlZiJdLCBbaWQqPSJlbWFpbFN1YmplY3REZWYiXSwgW2NsYXNzKj0iZW1haWxTdWJqZWN0Il0sIFtjbGFzcyo9ImVtYWlsQm9keSJdLCBbY2xhc3MqPSJsZWFkRW1haWwiXSwgW2NsYXNzKj0iZW1haWwtZGVmaW5pdGlvbiJdJykuZm9yRWFjaChhPT57YS5zZXRBdHRyaWJ1dGUoInRyYW5zbGF0ZSIsIm5vIil9KX1hZGROb1RyYW5zbGF0ZUVtYWlsRGVmKCk7ZnVuY3Rpb24gdndzKCl7ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCItLXZ3cyIsYCR7d2luZG93LmlubmVyV2lkdGgvMTAwLSh3aW5kb3cuaW5uZXJXaWR0aC1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGgpLzEwMC8yfXB4YCl9dndzKCk7bGV0IHJvX3Z3cz1uZXcgUmVzaXplT2JzZXJ2ZXIoKCk9Pnt2d3MoKX0pO3JvX3Z3cy5vYnNlcnZlKGRvY3VtZW50LmJvZHkpOwovKiogL20vanMvbGF6eXNpemVzLm1pbi5qcyAqKi8KLyohIGxhenlzaXplcyAtIHY0LjEuNSAqLwovKiEgbW9kaWZpZWQ6IG9saXZpZXJAZDJjbWVkaWEuY2EgdG8gc3VwcG9ydCBkYXRhLWltZ3NyYyBiZWNhdXNlIG9mIG9uZVRydXN0IGJyZWFrcyBsYXp5bG9hZCBvbiBkYXRhLXNyYyAqLwohZnVuY3Rpb24oYSxiKXt2YXIgYz1iKGEsYS5kb2N1bWVudCk7YS5sYXp5U2l6ZXM9Yywib2JqZWN0Ij09dHlwZW9mIG1vZHVsZSYmbW9kdWxlLmV4cG9ydHMmJihtb2R1bGUuZXhwb3J0cz1jKX0od2luZG93LGZ1bmN0aW9uKGEsYil7InVzZSBzdHJpY3QiO2lmKGIuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSl7dmFyIGMsZCxlPWIuZG9jdW1lbnRFbGVtZW50LGY9YS5EYXRlLGc9YS5IVE1MUGljdHVyZUVsZW1lbnQsaD0iYWRkRXZlbnRMaXN0ZW5lciIsaT0iZ2V0QXR0cmlidXRlIixqPWFbaF0saz1hLnNldFRpbWVvdXQsbD1hLnJlcXVlc3RBbmltYXRpb25GcmFtZXx8ayxtPWEucmVxdWVzdElkbGVDYWxsYmFjayxuPS9ecGljdHVyZSQvaSxvPVsibG9hZCIsImVycm9yIiwibGF6eWluY2x1ZGVkIiwiX2xhenlsb2FkZWQiXSxwPXt9LHE9QXJyYXkucHJvdG90eXBlLmZvckVhY2gscj1mdW5jdGlvbihhLGIpe3JldHVybiBwW2JdfHwocFtiXT1uZXcgUmVnRXhwKCIoXFxzfF4pIitiKyIoXFxzfCQpIikpLHBbYl0udGVzdChhW2ldKCJjbGFzcyIpfHwiIikmJnBbYl19LHM9ZnVuY3Rpb24oYSxiKXtyKGEsYil8fGEuc2V0QXR0cmlidXRlKCJjbGFzcyIsKGFbaV0oImNsYXNzIil8fCIiKS50cmltKCkrIiAiK2IpfSx0PWZ1bmN0aW9uKGEsYil7dmFyIGM7KGM9cihhLGIpKSYmYS5zZXRBdHRyaWJ1dGUoImNsYXNzIiwoYVtpXSgiY2xhc3MiKXx8IiIpLnJlcGxhY2UoYywiICIpKX0sdT1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9Yz9oOiJyZW1vdmVFdmVudExpc3RlbmVyIjtjJiZ1KGEsYiksby5mb3JFYWNoKGZ1bmN0aW9uKGMpe2FbZF0oYyxiKX0pfSx2PWZ1bmN0aW9uKGEsZCxlLGYsZyl7dmFyIGg9Yi5jcmVhdGVFdmVudCgiRXZlbnQiKTtyZXR1cm4gZXx8KGU9e30pLGUuaW5zdGFuY2U9YyxoLmluaXRFdmVudChkLCFmLCFnKSxoLmRldGFpbD1lLGEuZGlzcGF0Y2hFdmVudChoKSxofSx3PWZ1bmN0aW9uKGIsYyl7dmFyIGU7IWcmJihlPWEucGljdHVyZWZpbGx8fGQucGYpPyhjJiZjLnNyYyYmIWJbaV0oInNyY3NldCIpJiZiLnNldEF0dHJpYnV0ZSgic3Jjc2V0IixjLnNyYyksZSh7cmVldmFsdWF0ZTohMCxlbGVtZW50czpbYl19KSk6YyYmYy5zcmMmJihiLnNyYz1jLnNyYyl9LHg9ZnVuY3Rpb24oYSxiKXtyZXR1cm4oZ2V0Q29tcHV0ZWRTdHlsZShhLG51bGwpfHx7fSlbYl19LHk9ZnVuY3Rpb24oYSxiLGMpe2ZvcihjPWN8fGEub2Zmc2V0V2lkdGg7YzxkLm1pblNpemUmJmImJiFhLl9sYXp5c2l6ZXNXaWR0aDspYz1iLm9mZnNldFdpZHRoLGI9Yi5wYXJlbnROb2RlO3JldHVybiBjfSx6PWZ1bmN0aW9uKCl7dmFyIGEsYyxkPVtdLGU9W10sZj1kLGc9ZnVuY3Rpb24oKXt2YXIgYj1mO2ZvcihmPWQubGVuZ3RoP2U6ZCxhPSEwLGM9ITE7Yi5sZW5ndGg7KWIuc2hpZnQoKSgpO2E9ITF9LGg9ZnVuY3Rpb24oZCxlKXthJiYhZT9kLmFwcGx5KHRoaXMsYXJndW1lbnRzKTooZi5wdXNoKGQpLGN8fChjPSEwLChiLmhpZGRlbj9rOmwpKGcpKSl9O3JldHVybiBoLl9sc0ZsdXNoPWcsaH0oKSxBPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGI\/ZnVuY3Rpb24oKXt6KGEpfTpmdW5jdGlvbigpe3ZhciBiPXRoaXMsYz1hcmd1bWVudHM7eihmdW5jdGlvbigpe2EuYXBwbHkoYixjKX0pfX0sQj1mdW5jdGlvbihhKXt2YXIgYixjPTAsZT1kLnRocm90dGxlRGVsYXksZz1kLnJpY1RpbWVvdXQsaD1mdW5jdGlvbigpe2I9ITEsYz1mLm5vdygpLGEoKX0saT1tJiZnPjQ5P2Z1bmN0aW9uKCl7bShoLHt0aW1lb3V0Omd9KSxnIT09ZC5yaWNUaW1lb3V0JiYoZz1kLnJpY1RpbWVvdXQpfTpBKGZ1bmN0aW9uKCl7ayhoKX0sITApO3JldHVybiBmdW5jdGlvbihhKXt2YXIgZDsoYT0hMD09PWEpJiYoZz0zMyksYnx8KGI9ITAsZD1lLShmLm5vdygpLWMpLGQ8MCYmKGQ9MCksYXx8ZDw5P2koKTprKGksZCkpfX0sQz1mdW5jdGlvbihhKXt2YXIgYixjLGQ9OTksZT1mdW5jdGlvbigpe2I9bnVsbCxhKCl9LGc9ZnVuY3Rpb24oKXt2YXIgYT1mLm5vdygpLWM7YTxkP2soZyxkLWEpOihtfHxlKShlKX07cmV0dXJuIGZ1bmN0aW9uKCl7Yz1mLm5vdygpLGJ8fChiPWsoZyxkKSl9fTshZnVuY3Rpb24oKXt2YXIgYixjPXtsYXp5Q2xhc3M6Imxhenlsb2FkIixsb2FkZWRDbGFzczoibGF6eWxvYWRlZCIsbG9hZGluZ0NsYXNzOiJsYXp5bG9hZGluZyIscHJlbG9hZENsYXNzOiJsYXp5cHJlbG9hZCIsZXJyb3JDbGFzczoibGF6eWVycm9yIixhdXRvc2l6ZXNDbGFzczoibGF6eWF1dG9zaXplcyIsc3JjQXR0cjoiZGF0YS1pbWdzcmMiLHNyY3NldEF0dHI6ImRhdGEtc3Jjc2V0IixzaXplc0F0dHI6ImRhdGEtc2l6ZXMiLG1pblNpemU6NDAsY3VzdG9tTWVkaWE6e30saW5pdDohMCxleHBGYWN0b3I6MS41LGhGYWM6LjgsbG9hZE1vZGU6Mixsb2FkSGlkZGVuOiEwLHJpY1RpbWVvdXQ6MCx0aHJvdHRsZURlbGF5OjEyNX07ZD1hLmxhenlTaXplc0NvbmZpZ3x8YS5sYXp5c2l6ZXNDb25maWd8fHt9O2ZvcihiIGluIGMpYiBpbiBkfHwoZFtiXT1jW2JdKTthLmxhenlTaXplc0NvbmZpZz1kLGsoZnVuY3Rpb24oKXtkLmluaXQmJkYoKX0pfSgpO3ZhciBEPWZ1bmN0aW9uKCl7dmFyIGcsbCxtLG8scCx5LEQsRixHLEgsSSxKLEssTCxNPS9eaW1nJC9pLE49L15pZnJhbWUkL2ksTz0ib25zY3JvbGwiaW4gYSYmIS8oZ2xlfGluZylib3QvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCksUD0wLFE9MCxSPTAsUz0tMSxUPWZ1bmN0aW9uKGEpe1ItLSxhJiZhLnRhcmdldCYmdShhLnRhcmdldCxUKSwoIWF8fFI8MHx8IWEudGFyZ2V0KSYmKFI9MCl9LFU9ZnVuY3Rpb24oYSxjKXt2YXIgZCxmPWEsZz0iaGlkZGVuIj09eChiLmJvZHksInZpc2liaWxpdHkiKXx8ImhpZGRlbiIhPXgoYS5wYXJlbnROb2RlLCJ2aXNpYmlsaXR5IikmJiJoaWRkZW4iIT14KGEsInZpc2liaWxpdHkiKTtmb3IoRi09YyxJKz1jLEctPWMsSCs9YztnJiYoZj1mLm9mZnNldFBhcmVudCkmJmYhPWIuYm9keSYmZiE9ZTspKGc9KHgoZiwib3BhY2l0eSIpfHwxKT4wKSYmInZpc2libGUiIT14KGYsIm92ZXJmbG93IikmJihkPWYuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksZz1IPmQubGVmdCYmRzxkLnJpZ2h0JiZJPmQudG9wLTEmJkY8ZC5ib3R0b20rMSk7cmV0dXJuIGd9LFY9ZnVuY3Rpb24oKXt2YXIgYSxmLGgsaixrLG0sbixwLHEscj1jLmVsZW1lbnRzO2lmKChvPWQubG9hZE1vZGUpJiZSPDgmJihhPXIubGVuZ3RoKSl7Zj0wLFMrKyxudWxsPT1LJiYoImV4cGFuZCJpbiBkfHwoZC5leHBhbmQ9ZS5jbGllbnRIZWlnaHQ+NTAwJiZlLmNsaWVudFdpZHRoPjUwMD81MDA6MzcwKSxKPWQuZXhwYW5kLEs9SipkLmV4cEZhY3RvciksUTxLJiZSPDEmJlM+MiYmbz4yJiYhYi5oaWRkZW4\/KFE9SyxTPTApOlE9bz4xJiZTPjEmJlI8Nj9KOlA7Zm9yKDtmPGE7ZisrKWlmKHJbZl0mJiFyW2ZdLl9sYXp5UmFjZSlpZihPKWlmKChwPXJbZl1baV0oImRhdGEtZXhwYW5kIikpJiYobT0xKnApfHwobT1RKSxxIT09bSYmKHk9aW5uZXJXaWR0aCttKkwsRD1pbm5lckhlaWdodCttLG49LTEqbSxxPW0pLGg9cltmXS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSwoST1oLmJvdHRvbSk+PW4mJihGPWgudG9wKTw9RCYmKEg9aC5yaWdodCk+PW4qTCYmKEc9aC5sZWZ0KTw9eSYmKEl8fEh8fEd8fEYpJiYoZC5sb2FkSGlkZGVufHwiaGlkZGVuIiE9eChyW2ZdLCJ2aXNpYmlsaXR5IikpJiYobCYmUjwzJiYhcCYmKG88M3x8Uzw0KXx8VShyW2ZdLG0pKSl7aWYoYmEocltmXSksaz0hMCxSPjkpYnJlYWt9ZWxzZSFrJiZsJiYhaiYmUjw0JiZTPDQmJm8+MiYmKGdbMF18fGQucHJlbG9hZEFmdGVyTG9hZCkmJihnWzBdfHwhcCYmKEl8fEh8fEd8fEZ8fCJhdXRvIiE9cltmXVtpXShkLnNpemVzQXR0cikpKSYmKGo9Z1swXXx8cltmXSk7ZWxzZSBiYShyW2ZdKTtqJiYhayYmYmEoail9fSxXPUIoViksWD1mdW5jdGlvbihhKXtzKGEudGFyZ2V0LGQubG9hZGVkQ2xhc3MpLHQoYS50YXJnZXQsZC5sb2FkaW5nQ2xhc3MpLHUoYS50YXJnZXQsWiksdihhLnRhcmdldCwibGF6eWxvYWRlZCIpfSxZPUEoWCksWj1mdW5jdGlvbihhKXtZKHt0YXJnZXQ6YS50YXJnZXR9KX0sJD1mdW5jdGlvbihhLGIpe3RyeXthLmNvbnRlbnRXaW5kb3cubG9jYXRpb24ucmVwbGFjZShiKX1jYXRjaChjKXthLnNyYz1ifX0sXz1mdW5jdGlvbihhKXt2YXIgYixjPWFbaV0oZC5zcmNzZXRBdHRyKTsoYj1kLmN1c3RvbU1lZGlhW2FbaV0oImRhdGEtbWVkaWEiKXx8YVtpXSgibWVkaWEiKV0pJiZhLnNldEF0dHJpYnV0ZSgibWVkaWEiLGIpLGMmJmEuc2V0QXR0cmlidXRlKCJzcmNzZXQiLGMpfSxhYT1BKGZ1bmN0aW9uKGEsYixjLGUsZil7dmFyIGcsaCxqLGwsbyxwOyhvPXYoYSwibGF6eWJlZm9yZXVudmVpbCIsYikpLmRlZmF1bHRQcmV2ZW50ZWR8fChlJiYoYz9zKGEsZC5hdXRvc2l6ZXNDbGFzcyk6YS5zZXRBdHRyaWJ1dGUoInNpemVzIixlKSksaD1hW2ldKGQuc3Jjc2V0QXR0ciksZz1hW2ldKGQuc3JjQXR0ciksZiYmKGo9YS5wYXJlbnROb2RlLGw9aiYmbi50ZXN0KGoubm9kZU5hbWV8fCIiKSkscD1iLmZpcmVzTG9hZHx8InNyYyJpbiBhJiYoaHx8Z3x8bCksbz17dGFyZ2V0OmF9LHAmJih1KGEsVCwhMCksY2xlYXJUaW1lb3V0KG0pLG09ayhULDI1MDApLHMoYSxkLmxvYWRpbmdDbGFzcyksdShhLFosITApKSxsJiZxLmNhbGwoai5nZXRFbGVtZW50c0J5VGFnTmFtZSgic291cmNlIiksXyksaD9hLnNldEF0dHJpYnV0ZSgic3Jjc2V0IixoKTpnJiYhbCYmKE4udGVzdChhLm5vZGVOYW1lKT8kKGEsZyk6YS5zcmM9ZyksZiYmKGh8fGwpJiZ3KGEse3NyYzpnfSkpLGEuX2xhenlSYWNlJiZkZWxldGUgYS5fbGF6eVJhY2UsdChhLGQubGF6eUNsYXNzKSx6KGZ1bmN0aW9uKCl7KCFwfHxhLmNvbXBsZXRlJiZhLm5hdHVyYWxXaWR0aD4xKSYmKHA\/VChvKTpSLS0sWChvKSl9LCEwKX0pLGJhPWZ1bmN0aW9uKGEpe3ZhciBiLGM9TS50ZXN0KGEubm9kZU5hbWUpLGU9YyYmKGFbaV0oZC5zaXplc0F0dHIpfHxhW2ldKCJzaXplcyIpKSxmPSJhdXRvIj09ZTsoIWYmJmx8fCFjfHwhYVtpXSgic3JjIikmJiFhLnNyY3NldHx8YS5jb21wbGV0ZXx8cihhLGQuZXJyb3JDbGFzcyl8fCFyKGEsZC5sYXp5Q2xhc3MpKSYmKGI9dihhLCJsYXp5dW52ZWlscmVhZCIpLmRldGFpbCxmJiZFLnVwZGF0ZUVsZW0oYSwhMCxhLm9mZnNldFdpZHRoKSxhLl9sYXp5UmFjZT0hMCxSKyssYWEoYSxiLGYsZSxjKSl9LGNhPWZ1bmN0aW9uKCl7aWYoIWwpe2lmKGYubm93KCktcDw5OTkpcmV0dXJuIHZvaWQgayhjYSw5OTkpO3ZhciBhPUMoZnVuY3Rpb24oKXtkLmxvYWRNb2RlPTMsVygpfSk7bD0hMCxkLmxvYWRNb2RlPTMsVygpLGooInNjcm9sbCIsZnVuY3Rpb24oKXszPT1kLmxvYWRNb2RlJiYoZC5sb2FkTW9kZT0yKSxhKCl9LCEwKX19O3JldHVybntfOmZ1bmN0aW9uKCl7cD1mLm5vdygpLGMuZWxlbWVudHM9Yi5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKGQubGF6eUNsYXNzKSxnPWIuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShkLmxhenlDbGFzcysiICIrZC5wcmVsb2FkQ2xhc3MpLEw9ZC5oRmFjLGooInNjcm9sbCIsVywhMCksaigicmVzaXplIixXLCEwKSxhLk11dGF0aW9uT2JzZXJ2ZXI\/bmV3IE11dGF0aW9uT2JzZXJ2ZXIoVykub2JzZXJ2ZShlLHtjaGlsZExpc3Q6ITAsc3VidHJlZTohMCxhdHRyaWJ1dGVzOiEwfSk6KGVbaF0oIkRPTU5vZGVJbnNlcnRlZCIsVywhMCksZVtoXSgiRE9NQXR0ck1vZGlmaWVkIixXLCEwKSxzZXRJbnRlcnZhbChXLDk5OSkpLGooImhhc2hjaGFuZ2UiLFcsITApLFsiZm9jdXMiLCJtb3VzZW92ZXIiLCJjbGljayIsImxvYWQiLCJ0cmFuc2l0aW9uZW5kIiwiYW5pbWF0aW9uZW5kIiwid2Via2l0QW5pbWF0aW9uRW5kIl0uZm9yRWFjaChmdW5jdGlvbihhKXtiW2hdKGEsVywhMCl9KSwvZCR8XmMvLnRlc3QoYi5yZWFkeVN0YXRlKT9jYSgpOihqKCJsb2FkIixjYSksYltoXSgiRE9NQ29udGVudExvYWRlZCIsVyksayhjYSwyZTQpKSxjLmVsZW1lbnRzLmxlbmd0aD8oVigpLHouX2xzRmx1c2goKSk6VygpfSxjaGVja0VsZW1zOlcsdW52ZWlsOmJhfX0oKSxFPWZ1bmN0aW9uKCl7dmFyIGEsYz1BKGZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlLGYsZztpZihhLl9sYXp5c2l6ZXNXaWR0aD1kLGQrPSJweCIsYS5zZXRBdHRyaWJ1dGUoInNpemVzIixkKSxuLnRlc3QoYi5ub2RlTmFtZXx8IiIpKWZvcihlPWIuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInNvdXJjZSIpLGY9MCxnPWUubGVuZ3RoO2Y8ZztmKyspZVtmXS5zZXRBdHRyaWJ1dGUoInNpemVzIixkKTtjLmRldGFpbC5kYXRhQXR0cnx8dyhhLGMuZGV0YWlsKX0pLGU9ZnVuY3Rpb24oYSxiLGQpe3ZhciBlLGY9YS5wYXJlbnROb2RlO2YmJihkPXkoYSxmLGQpLGU9dihhLCJsYXp5YmVmb3Jlc2l6ZXMiLHt3aWR0aDpkLGRhdGFBdHRyOiEhYn0pLGUuZGVmYXVsdFByZXZlbnRlZHx8KGQ9ZS5kZXRhaWwud2lkdGgpJiZkIT09YS5fbGF6eXNpemVzV2lkdGgmJmMoYSxmLGUsZCkpfSxmPWZ1bmN0aW9uKCl7dmFyIGIsYz1hLmxlbmd0aDtpZihjKWZvcihiPTA7YjxjO2IrKyllKGFbYl0pfSxnPUMoZik7cmV0dXJue186ZnVuY3Rpb24oKXthPWIuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShkLmF1dG9zaXplc0NsYXNzKSxqKCJyZXNpemUiLGcpfSxjaGVja0VsZW1zOmcsdXBkYXRlRWxlbTplfX0oKSxGPWZ1bmN0aW9uKCl7Ri5pfHwoRi5pPSEwLEUuXygpLEQuXygpKX07cmV0dXJuIGM9e2NmZzpkLGF1dG9TaXplcjpFLGxvYWRlcjpELGluaXQ6Rix1UDp3LGFDOnMsckM6dCxoQzpyLGZpcmU6dixnVzp5LHJBRjp6fX19KTsKLypFT0YqLzsKLyoqIC9tL2pzL3ZhbmlsbGFqcy9kckRpc2NsYWltZXJKUy5qcyAqKi8KdmFyIF9fX2QyY19kckRpc2NsYWltZXJKU2pzX2Nfb249IjIwMjYtMDUtMDUgMTM6MzA6MDgiOyd1c2Ugc3RyaWN0JztkckRpc2NsYWltZXJKUz17bWFuYWdlRGlzY2xhaW1lckRpdnMoKXtkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsYT0+eyhhPWEudGFyZ2V0LmNsb3Nlc3QoIi5kaXNjbGFpbWVyc1N1cGVyc2NyaXB0cywgLmNsb3NlRFJEaXNjbGFpbWVyRHJhd2VyLCAjZHJDYWxjdWxhdG9yVmlld0Rpc2NsYWltZXJMaW5rIikpJiYoYS5jbGFzc0xpc3QuY29udGFpbnMoImNsb3NlRFJEaXNjbGFpbWVyRHJhd2VyIik\/ZHJEaXNjbGFpbWVySlMuY2xvc2VDdXJyZW50T3BlbmVkRGlzY2xhaW1lckRpdihhLmRhdGFzZXQuZGlzY2xhaW1lckRpdmlkKTphLmNsYXNzTGlzdC5jb250YWlucygiZHJWaWV3RGlzY2xhaW1lckxpbmsiKT9kckRpc2NsYWltZXJKUy5vcGVuRGlzY2xhaW1lckRpdigiZHJDYWxjdWxhdG9yRGlzY2xhaW1lckRyYXdlciIpOmRyRGlzY2xhaW1lckpTLm9wZW5EaXNjbGFpbWVyRGl2KGEuZGF0YXNldC5kaXNjbGFpbWVyRGl2aWQpKX0pfSxvcGVuRGlzY2xhaW1lckRpdjpmdW5jdGlvbihhKXtkckRpc2NsYWltZXJKUy5jbG9zZUFsbE9wZW5EaXNjbGFpbWVyRGl2cygpOwpkckRpc2NsYWltZXJKUy5jbG9zZUZpbmFuY2VEaXNjbGFtZXJEaXYoKTtpZihhPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGEpKWEuY2xhc3NMaXN0LmFkZCgib3BlbiIpLGEuc3R5bGUuZGlzcGxheT0iYmxvY2sifSxjbG9zZUN1cnJlbnRPcGVuZWREaXNjbGFpbWVyRGl2OmZ1bmN0aW9uKGEpe2lmKGE9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgIyR7YX1gKSlhLmNsYXNzTGlzdC5yZW1vdmUoIm9wZW4iKSxhLnN0eWxlLmRpc3BsYXk9Im5vbmUifSxjbG9zZUFsbE9wZW5EaXNjbGFpbWVyRGl2czpmdW5jdGlvbigpe2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoImRpdltkYXRhLWRpc2NsYWltZXItaWRdLm9wZW4iKS5mb3JFYWNoKGE9PntkckRpc2NsYWltZXJKUy5jbG9zZUN1cnJlbnRPcGVuZWREaXNjbGFpbWVyRGl2KGEuaWQpfSl9LGNsb3NlRmluYW5jZURpc2NsYW1lckRpdjpmdW5jdGlvbigpe2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIi5kckRpc2NsYWltZXJEcmF3ZXIub3BlbiIpLmZvckVhY2goYT0+CnthLmNsYXNzTGlzdC5yZW1vdmUoIm9wZW4iKTthLnN0eWxlLmRpc3BsYXk9Im5vbmUifSl9fTtkb2NSZWFkeUFyci5wdXNoKCgpPT57ZHJEaXNjbGFpbWVySlMubWFuYWdlRGlzY2xhaW1lckRpdnMoKX0pOwovKiogL20vanMvanF1ZXJ5LXVpLWZhY3RvcnkvMS4xMy4yL2pxdWVyeS11aS5taW4uanMgKiovCi8qISBqUXVlcnkgVUkgLSB2MS4xMy4yIC0gMjAyNC0wMy0xMgoqIGh0dHA6Ly9qcXVlcnl1aS5jb20KKiBJbmNsdWRlczogd2lkZ2V0LmpzLCBqcXVlcnktcGF0Y2guanMsIGtleWNvZGUuanMsIHVuaXF1ZS1pZC5qcywgd2lkZ2V0cy9hY2NvcmRpb24uanMsIHdpZGdldHMvbW91c2UuanMsIHdpZGdldHMvc2xpZGVyLmpzLCBlZmZlY3QuanMKKiBDb3B5cmlnaHQgalF1ZXJ5IEZvdW5kYXRpb24gYW5kIG90aGVyIGNvbnRyaWJ1dG9yczsgTGljZW5zZWQgTUlUICovCgohZnVuY3Rpb24oZSl7InVzZSBzdHJpY3QiOyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ\/ZGVmaW5lKFsianF1ZXJ5Il0sZSk6ZShqUXVlcnkpfShmdW5jdGlvbih1KXsidXNlIHN0cmljdCI7dS51aT11LnVpfHx7fTt1LnVpLnZlcnNpb249IjEuMTMuMiI7dmFyIG4saT0wLG89QXJyYXkucHJvdG90eXBlLmhhc093blByb3BlcnR5LHI9QXJyYXkucHJvdG90eXBlLnNsaWNlO3UuY2xlYW5EYXRhPShuPXUuY2xlYW5EYXRhLGZ1bmN0aW9uKGUpe2Zvcih2YXIgdCxpLHM9MDtudWxsIT0oaT1lW3NdKTtzKyspKHQ9dS5fZGF0YShpLCJldmVudHMiKSkmJnQucmVtb3ZlJiZ1KGkpLnRyaWdnZXJIYW5kbGVyKCJyZW1vdmUiKTtuKGUpfSksdS53aWRnZXQ9ZnVuY3Rpb24oZSxpLHQpe3ZhciBzLG4sYSxvPXt9LHI9ZS5zcGxpdCgiLiIpWzBdLGg9cisiLSIrKGU9ZS5zcGxpdCgiLiIpWzFdKTtyZXR1cm4gdHx8KHQ9aSxpPXUuV2lkZ2V0KSxBcnJheS5pc0FycmF5KHQpJiYodD11LmV4dGVuZC5hcHBseShudWxsLFt7fV0uY29uY2F0KHQpKSksdS5leHByLnBzZXVkb3NbaC50b0xvd2VyQ2FzZSgpXT1mdW5jdGlvbihlKXtyZXR1cm4hIXUuZGF0YShlLGgpfSx1W3JdPXVbcl18fHt9LHM9dVtyXVtlXSxuPXVbcl1bZV09ZnVuY3Rpb24oZSx0KXtpZighdGhpc3x8IXRoaXMuX2NyZWF0ZVdpZGdldClyZXR1cm4gbmV3IG4oZSx0KTthcmd1bWVudHMubGVuZ3RoJiZ0aGlzLl9jcmVhdGVXaWRnZXQoZSx0KX0sdS5leHRlbmQobixzLHt2ZXJzaW9uOnQudmVyc2lvbixfcHJvdG86dS5leHRlbmQoe30sdCksX2NoaWxkQ29uc3RydWN0b3JzOltdfSksKGE9bmV3IGkpLm9wdGlvbnM9dS53aWRnZXQuZXh0ZW5kKHt9LGEub3B0aW9ucyksdS5lYWNoKHQsZnVuY3Rpb24odCxzKXtmdW5jdGlvbiBuKCl7cmV0dXJuIGkucHJvdG90eXBlW3RdLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBhKGUpe3JldHVybiBpLnByb3RvdHlwZVt0XS5hcHBseSh0aGlzLGUpfW9bdF09ImZ1bmN0aW9uIj09dHlwZW9mIHM\/ZnVuY3Rpb24oKXt2YXIgZSx0PXRoaXMuX3N1cGVyLGk9dGhpcy5fc3VwZXJBcHBseTtyZXR1cm4gdGhpcy5fc3VwZXI9bix0aGlzLl9zdXBlckFwcGx5PWEsZT1zLmFwcGx5KHRoaXMsYXJndW1lbnRzKSx0aGlzLl9zdXBlcj10LHRoaXMuX3N1cGVyQXBwbHk9aSxlfTpzfSksbi5wcm90b3R5cGU9dS53aWRnZXQuZXh0ZW5kKGEse3dpZGdldEV2ZW50UHJlZml4OnMmJmEud2lkZ2V0RXZlbnRQcmVmaXh8fGV9LG8se2NvbnN0cnVjdG9yOm4sbmFtZXNwYWNlOnIsd2lkZ2V0TmFtZTplLHdpZGdldEZ1bGxOYW1lOmh9KSxzPyh1LmVhY2gocy5fY2hpbGRDb25zdHJ1Y3RvcnMsZnVuY3Rpb24oZSx0KXt2YXIgaT10LnByb3RvdHlwZTt1LndpZGdldChpLm5hbWVzcGFjZSsiLiIraS53aWRnZXROYW1lLG4sdC5fcHJvdG8pfSksZGVsZXRlIHMuX2NoaWxkQ29uc3RydWN0b3JzKTppLl9jaGlsZENvbnN0cnVjdG9ycy5wdXNoKG4pLHUud2lkZ2V0LmJyaWRnZShlLG4pLG59LHUud2lkZ2V0LmV4dGVuZD1mdW5jdGlvbihlKXtmb3IodmFyIHQsaSxzPXIuY2FsbChhcmd1bWVudHMsMSksbj0wLGE9cy5sZW5ndGg7bjxhO24rKylmb3IodCBpbiBzW25dKWk9c1tuXVt0XSxvLmNhbGwoc1tuXSx0KSYmdm9pZCAwIT09aSYmKHUuaXNQbGFpbk9iamVjdChpKT9lW3RdPXUuaXNQbGFpbk9iamVjdChlW3RdKT91LndpZGdldC5leHRlbmQoe30sZVt0XSxpKTp1LndpZGdldC5leHRlbmQoe30saSk6ZVt0XT1pKTtyZXR1cm4gZX0sdS53aWRnZXQuYnJpZGdlPWZ1bmN0aW9uKGEsdCl7dmFyIG89dC5wcm90b3R5cGUud2lkZ2V0RnVsbE5hbWV8fGE7dS5mblthXT1mdW5jdGlvbihpKXt2YXIgZT0ic3RyaW5nIj09dHlwZW9mIGkscz1yLmNhbGwoYXJndW1lbnRzLDEpLG49dGhpcztyZXR1cm4gZT90aGlzLmxlbmd0aHx8Imluc3RhbmNlIiE9PWk\/dGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGUsdD11LmRhdGEodGhpcyxvKTtyZXR1cm4iaW5zdGFuY2UiPT09aT8obj10LCExKTp0PyJmdW5jdGlvbiIhPXR5cGVvZiB0W2ldfHwiXyI9PT1pLmNoYXJBdCgwKT91LmVycm9yKCJubyBzdWNoIG1ldGhvZCAnIitpKyInIGZvciAiK2ErIiB3aWRnZXQgaW5zdGFuY2UiKTooZT10W2ldLmFwcGx5KHQscykpIT09dCYmdm9pZCAwIT09ZT8obj1lJiZlLmpxdWVyeT9uLnB1c2hTdGFjayhlLmdldCgpKTplLCExKTp2b2lkIDA6dS5lcnJvcigiY2Fubm90IGNhbGwgbWV0aG9kcyBvbiAiK2ErIiBwcmlvciB0byBpbml0aWFsaXphdGlvbjsgYXR0ZW1wdGVkIHRvIGNhbGwgbWV0aG9kICciK2krIiciKX0pOm49dm9pZCAwOihzLmxlbmd0aCYmKGk9dS53aWRnZXQuZXh0ZW5kLmFwcGx5KG51bGwsW2ldLmNvbmNhdChzKSkpLHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBlPXUuZGF0YSh0aGlzLG8pO2U\/KGUub3B0aW9uKGl8fHt9KSxlLl9pbml0JiZlLl9pbml0KCkpOnUuZGF0YSh0aGlzLG8sbmV3IHQoaSx0aGlzKSl9KSksbn19LHUuV2lkZ2V0PWZ1bmN0aW9uKCl7fSx1LldpZGdldC5fY2hpbGRDb25zdHJ1Y3RvcnM9W10sdS5XaWRnZXQucHJvdG90eXBlPXt3aWRnZXROYW1lOiJ3aWRnZXQiLHdpZGdldEV2ZW50UHJlZml4OiIiLGRlZmF1bHRFbGVtZW50OiI8ZGl2PiIsb3B0aW9uczp7Y2xhc3Nlczp7fSxkaXNhYmxlZDohMSxjcmVhdGU6bnVsbH0sX2NyZWF0ZVdpZGdldDpmdW5jdGlvbihlLHQpe3Q9dSh0fHx0aGlzLmRlZmF1bHRFbGVtZW50fHx0aGlzKVswXSx0aGlzLmVsZW1lbnQ9dSh0KSx0aGlzLnV1aWQ9aSsrLHRoaXMuZXZlbnROYW1lc3BhY2U9Ii4iK3RoaXMud2lkZ2V0TmFtZSt0aGlzLnV1aWQsdGhpcy5iaW5kaW5ncz11KCksdGhpcy5ob3ZlcmFibGU9dSgpLHRoaXMuZm9jdXNhYmxlPXUoKSx0aGlzLmNsYXNzZXNFbGVtZW50TG9va3VwPXt9LHQhPT10aGlzJiYodS5kYXRhKHQsdGhpcy53aWRnZXRGdWxsTmFtZSx0aGlzKSx0aGlzLl9vbighMCx0aGlzLmVsZW1lbnQse3JlbW92ZTpmdW5jdGlvbihlKXtlLnRhcmdldD09PXQmJnRoaXMuZGVzdHJveSgpfX0pLHRoaXMuZG9jdW1lbnQ9dSh0LnN0eWxlP3Qub3duZXJEb2N1bWVudDp0LmRvY3VtZW50fHx0KSx0aGlzLndpbmRvdz11KHRoaXMuZG9jdW1lbnRbMF0uZGVmYXVsdFZpZXd8fHRoaXMuZG9jdW1lbnRbMF0ucGFyZW50V2luZG93KSksdGhpcy5vcHRpb25zPXUud2lkZ2V0LmV4dGVuZCh7fSx0aGlzLm9wdGlvbnMsdGhpcy5fZ2V0Q3JlYXRlT3B0aW9ucygpLGUpLHRoaXMuX2NyZWF0ZSgpLHRoaXMub3B0aW9ucy5kaXNhYmxlZCYmdGhpcy5fc2V0T3B0aW9uRGlzYWJsZWQodGhpcy5vcHRpb25zLmRpc2FibGVkKSx0aGlzLl90cmlnZ2VyKCJjcmVhdGUiLG51bGwsdGhpcy5fZ2V0Q3JlYXRlRXZlbnREYXRhKCkpLHRoaXMuX2luaXQoKX0sX2dldENyZWF0ZU9wdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm57fX0sX2dldENyZWF0ZUV2ZW50RGF0YTp1Lm5vb3AsX2NyZWF0ZTp1Lm5vb3AsX2luaXQ6dS5ub29wLGRlc3Ryb3k6ZnVuY3Rpb24oKXt2YXIgaT10aGlzO3RoaXMuX2Rlc3Ryb3koKSx1LmVhY2godGhpcy5jbGFzc2VzRWxlbWVudExvb2t1cCxmdW5jdGlvbihlLHQpe2kuX3JlbW92ZUNsYXNzKHQsZSl9KSx0aGlzLmVsZW1lbnQub2ZmKHRoaXMuZXZlbnROYW1lc3BhY2UpLnJlbW92ZURhdGEodGhpcy53aWRnZXRGdWxsTmFtZSksdGhpcy53aWRnZXQoKS5vZmYodGhpcy5ldmVudE5hbWVzcGFjZSkucmVtb3ZlQXR0cigiYXJpYS1kaXNhYmxlZCIpLHRoaXMuYmluZGluZ3Mub2ZmKHRoaXMuZXZlbnROYW1lc3BhY2UpfSxfZGVzdHJveTp1Lm5vb3Asd2lkZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWxlbWVudH0sb3B0aW9uOmZ1bmN0aW9uKGUsdCl7dmFyIGkscyxuLGE9ZTtpZigwPT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gdS53aWRnZXQuZXh0ZW5kKHt9LHRoaXMub3B0aW9ucyk7aWYoInN0cmluZyI9PXR5cGVvZiBlKWlmKGE9e30sZT0oaT1lLnNwbGl0KCIuIikpLnNoaWZ0KCksaS5sZW5ndGgpe2ZvcihzPWFbZV09dS53aWRnZXQuZXh0ZW5kKHt9LHRoaXMub3B0aW9uc1tlXSksbj0wO248aS5sZW5ndGgtMTtuKyspc1tpW25dXT1zW2lbbl1dfHx7fSxzPXNbaVtuXV07aWYoZT1pLnBvcCgpLDE9PT1hcmd1bWVudHMubGVuZ3RoKXJldHVybiB2b2lkIDA9PT1zW2VdP251bGw6c1tlXTtzW2VdPXR9ZWxzZXtpZigxPT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gdm9pZCAwPT09dGhpcy5vcHRpb25zW2VdP251bGw6dGhpcy5vcHRpb25zW2VdO2FbZV09dH1yZXR1cm4gdGhpcy5fc2V0T3B0aW9ucyhhKSx0aGlzfSxfc2V0T3B0aW9uczpmdW5jdGlvbihlKXtmb3IodmFyIHQgaW4gZSl0aGlzLl9zZXRPcHRpb24odCxlW3RdKTtyZXR1cm4gdGhpc30sX3NldE9wdGlvbjpmdW5jdGlvbihlLHQpe3JldHVybiJjbGFzc2VzIj09PWUmJnRoaXMuX3NldE9wdGlvbkNsYXNzZXModCksdGhpcy5vcHRpb25zW2VdPXQsImRpc2FibGVkIj09PWUmJnRoaXMuX3NldE9wdGlvbkRpc2FibGVkKHQpLHRoaXN9LF9zZXRPcHRpb25DbGFzc2VzOmZ1bmN0aW9uKGUpe3ZhciB0LGkscztmb3IodCBpbiBlKXM9dGhpcy5jbGFzc2VzRWxlbWVudExvb2t1cFt0XSxlW3RdIT09dGhpcy5vcHRpb25zLmNsYXNzZXNbdF0mJnMmJnMubGVuZ3RoJiYoaT11KHMuZ2V0KCkpLHRoaXMuX3JlbW92ZUNsYXNzKHMsdCksaS5hZGRDbGFzcyh0aGlzLl9jbGFzc2VzKHtlbGVtZW50Omksa2V5czp0LGNsYXNzZXM6ZSxhZGQ6ITB9KSkpfSxfc2V0T3B0aW9uRGlzYWJsZWQ6ZnVuY3Rpb24oZSl7dGhpcy5fdG9nZ2xlQ2xhc3ModGhpcy53aWRnZXQoKSx0aGlzLndpZGdldEZ1bGxOYW1lKyItZGlzYWJsZWQiLG51bGwsISFlKSxlJiYodGhpcy5fcmVtb3ZlQ2xhc3ModGhpcy5ob3ZlcmFibGUsbnVsbCwidWktc3RhdGUtaG92ZXIiKSx0aGlzLl9yZW1vdmVDbGFzcyh0aGlzLmZvY3VzYWJsZSxudWxsLCJ1aS1zdGF0ZS1mb2N1cyIpKX0sZW5hYmxlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3NldE9wdGlvbnMoe2Rpc2FibGVkOiExfSl9LGRpc2FibGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc2V0T3B0aW9ucyh7ZGlzYWJsZWQ6ITB9KX0sX2NsYXNzZXM6ZnVuY3Rpb24obil7dmFyIGE9W10sbz10aGlzO2Z1bmN0aW9uIGUoZSx0KXtmb3IodmFyIGkscz0wO3M8ZS5sZW5ndGg7cysrKWk9by5jbGFzc2VzRWxlbWVudExvb2t1cFtlW3NdXXx8dSgpLGk9bi5hZGQ\/KGZ1bmN0aW9uKCl7dmFyIGk9W107bi5lbGVtZW50LmVhY2goZnVuY3Rpb24oZSx0KXt1Lm1hcChvLmNsYXNzZXNFbGVtZW50TG9va3VwLGZ1bmN0aW9uKGUpe3JldHVybiBlfSkuc29tZShmdW5jdGlvbihlKXtyZXR1cm4gZS5pcyh0KX0pfHxpLnB1c2godCl9KSxvLl9vbih1KGkpLHtyZW1vdmU6Il91bnRyYWNrQ2xhc3Nlc0VsZW1lbnQifSl9KCksdSh1LnVuaXF1ZVNvcnQoaS5nZXQoKS5jb25jYXQobi5lbGVtZW50LmdldCgpKSkpKTp1KGkubm90KG4uZWxlbWVudCkuZ2V0KCkpLG8uY2xhc3Nlc0VsZW1lbnRMb29rdXBbZVtzXV09aSxhLnB1c2goZVtzXSksdCYmbi5jbGFzc2VzW2Vbc11dJiZhLnB1c2gobi5jbGFzc2VzW2Vbc11dKX1yZXR1cm4obj11LmV4dGVuZCh7ZWxlbWVudDp0aGlzLmVsZW1lbnQsY2xhc3Nlczp0aGlzLm9wdGlvbnMuY2xhc3Nlc3x8e319LG4pKS5rZXlzJiZlKG4ua2V5cy5tYXRjaCgvXFMrL2cpfHxbXSwhMCksbi5leHRyYSYmZShuLmV4dHJhLm1hdGNoKC9cUysvZyl8fFtdKSxhLmpvaW4oIiAiKX0sX3VudHJhY2tDbGFzc2VzRWxlbWVudDpmdW5jdGlvbihpKXt2YXIgcz10aGlzO3UuZWFjaChzLmNsYXNzZXNFbGVtZW50TG9va3VwLGZ1bmN0aW9uKGUsdCl7LTEhPT11LmluQXJyYXkoaS50YXJnZXQsdCkmJihzLmNsYXNzZXNFbGVtZW50TG9va3VwW2VdPXUodC5ub3QoaS50YXJnZXQpLmdldCgpKSl9KSx0aGlzLl9vZmYodShpLnRhcmdldCkpfSxfcmVtb3ZlQ2xhc3M6ZnVuY3Rpb24oZSx0LGkpe3JldHVybiB0aGlzLl90b2dnbGVDbGFzcyhlLHQsaSwhMSl9LF9hZGRDbGFzczpmdW5jdGlvbihlLHQsaSl7cmV0dXJuIHRoaXMuX3RvZ2dsZUNsYXNzKGUsdCxpLCEwKX0sX3RvZ2dsZUNsYXNzOmZ1bmN0aW9uKGUsdCxpLHMpe3ZhciBuPSJzdHJpbmciPT10eXBlb2YgZXx8bnVsbD09PWUsaT17ZXh0cmE6bj90Omksa2V5czpuP2U6dCxlbGVtZW50Om4\/dGhpcy5lbGVtZW50OmUsYWRkOnM9ImJvb2xlYW4iPT10eXBlb2Ygcz9zOml9O3JldHVybiBpLmVsZW1lbnQudG9nZ2xlQ2xhc3ModGhpcy5fY2xhc3NlcyhpKSxzKSx0aGlzfSxfb246ZnVuY3Rpb24obixhLGUpe3ZhciBvLHI9dGhpczsiYm9vbGVhbiIhPXR5cGVvZiBuJiYoZT1hLGE9bixuPSExKSxlPyhhPW89dShhKSx0aGlzLmJpbmRpbmdzPXRoaXMuYmluZGluZ3MuYWRkKGEpKTooZT1hLGE9dGhpcy5lbGVtZW50LG89dGhpcy53aWRnZXQoKSksdS5lYWNoKGUsZnVuY3Rpb24oZSx0KXtmdW5jdGlvbiBpKCl7aWYobnx8ITAhPT1yLm9wdGlvbnMuZGlzYWJsZWQmJiF1KHRoaXMpLmhhc0NsYXNzKCJ1aS1zdGF0ZS1kaXNhYmxlZCIpKXJldHVybigic3RyaW5nIj09dHlwZW9mIHQ\/clt0XTp0KS5hcHBseShyLGFyZ3VtZW50cyl9InN0cmluZyIhPXR5cGVvZiB0JiYoaS5ndWlkPXQuZ3VpZD10Lmd1aWR8fGkuZ3VpZHx8dS5ndWlkKyspO3ZhciBzPWUubWF0Y2goL14oW1x3Oi1dKilccyooLiopJC8pLGU9c1sxXStyLmV2ZW50TmFtZXNwYWNlLHM9c1syXTtzP28ub24oZSxzLGkpOmEub24oZSxpKX0pfSxfb2ZmOmZ1bmN0aW9uKGUsdCl7dD0odHx8IiIpLnNwbGl0KCIgIikuam9pbih0aGlzLmV2ZW50TmFtZXNwYWNlKyIgIikrdGhpcy5ldmVudE5hbWVzcGFjZSxlLm9mZih0KSx0aGlzLmJpbmRpbmdzPXUodGhpcy5iaW5kaW5ncy5ub3QoZSkuZ2V0KCkpLHRoaXMuZm9jdXNhYmxlPXUodGhpcy5mb2N1c2FibGUubm90KGUpLmdldCgpKSx0aGlzLmhvdmVyYWJsZT11KHRoaXMuaG92ZXJhYmxlLm5vdChlKS5nZXQoKSl9LF9kZWxheTpmdW5jdGlvbihlLHQpe3ZhciBpPXRoaXM7cmV0dXJuIHNldFRpbWVvdXQoZnVuY3Rpb24oKXtyZXR1cm4oInN0cmluZyI9PXR5cGVvZiBlP2lbZV06ZSkuYXBwbHkoaSxhcmd1bWVudHMpfSx0fHwwKX0sX2hvdmVyYWJsZTpmdW5jdGlvbihlKXt0aGlzLmhvdmVyYWJsZT10aGlzLmhvdmVyYWJsZS5hZGQoZSksdGhpcy5fb24oZSx7bW91c2VlbnRlcjpmdW5jdGlvbihlKXt0aGlzLl9hZGRDbGFzcyh1KGUuY3VycmVudFRhcmdldCksbnVsbCwidWktc3RhdGUtaG92ZXIiKX0sbW91c2VsZWF2ZTpmdW5jdGlvbihlKXt0aGlzLl9yZW1vdmVDbGFzcyh1KGUuY3VycmVudFRhcmdldCksbnVsbCwidWktc3RhdGUtaG92ZXIiKX19KX0sX2ZvY3VzYWJsZTpmdW5jdGlvbihlKXt0aGlzLmZvY3VzYWJsZT10aGlzLmZvY3VzYWJsZS5hZGQoZSksdGhpcy5fb24oZSx7Zm9jdXNpbjpmdW5jdGlvbihlKXt0aGlzLl9hZGRDbGFzcyh1KGUuY3VycmVudFRhcmdldCksbnVsbCwidWktc3RhdGUtZm9jdXMiKX0sZm9jdXNvdXQ6ZnVuY3Rpb24oZSl7dGhpcy5fcmVtb3ZlQ2xhc3ModShlLmN1cnJlbnRUYXJnZXQpLG51bGwsInVpLXN0YXRlLWZvY3VzIil9fSl9LF90cmlnZ2VyOmZ1bmN0aW9uKGUsdCxpKXt2YXIgcyxuLGE9dGhpcy5vcHRpb25zW2VdO2lmKGk9aXx8e30sKHQ9dS5FdmVudCh0KSkudHlwZT0oZT09PXRoaXMud2lkZ2V0RXZlbnRQcmVmaXg\/ZTp0aGlzLndpZGdldEV2ZW50UHJlZml4K2UpLnRvTG93ZXJDYXNlKCksdC50YXJnZXQ9dGhpcy5lbGVtZW50WzBdLG49dC5vcmlnaW5hbEV2ZW50KWZvcihzIGluIG4pcyBpbiB0fHwodFtzXT1uW3NdKTtyZXR1cm4gdGhpcy5lbGVtZW50LnRyaWdnZXIodCxpKSwhKCJmdW5jdGlvbiI9PXR5cGVvZiBhJiYhMT09PWEuYXBwbHkodGhpcy5lbGVtZW50WzBdLFt0XS5jb25jYXQoaSkpfHx0LmlzRGVmYXVsdFByZXZlbnRlZCgpKX19LHUuZWFjaCh7c2hvdzoiZmFkZUluIixoaWRlOiJmYWRlT3V0In0sZnVuY3Rpb24oYSxvKXt1LldpZGdldC5wcm90b3R5cGVbIl8iK2FdPWZ1bmN0aW9uKHQsZSxpKXt2YXIgcyxuPShlPSJzdHJpbmciPT10eXBlb2YgZT97ZWZmZWN0OmV9OmUpPyEwIT09ZSYmIm51bWJlciIhPXR5cGVvZiBlJiZlLmVmZmVjdHx8bzphOyJudW1iZXIiPT10eXBlb2YoZT1lfHx7fSk\/ZT17ZHVyYXRpb246ZX06ITA9PT1lJiYoZT17fSkscz0hdS5pc0VtcHR5T2JqZWN0KGUpLGUuY29tcGxldGU9aSxlLmRlbGF5JiZ0LmRlbGF5KGUuZGVsYXkpLHMmJnUuZWZmZWN0cyYmdS5lZmZlY3RzLmVmZmVjdFtuXT90W2FdKGUpOm4hPT1hJiZ0W25dP3Rbbl0oZS5kdXJhdGlvbixlLmVhc2luZyxpKTp0LnF1ZXVlKGZ1bmN0aW9uKGUpe3UodGhpcylbYV0oKSxpJiZpLmNhbGwodFswXSksZSgpfSl9fSk7dmFyIHQsczt1LndpZGdldDt1LmV4cHIucHNldWRvc3x8KHUuZXhwci5wc2V1ZG9zPXUuZXhwclsiOiJdKSx1LnVuaXF1ZVNvcnR8fCh1LnVuaXF1ZVNvcnQ9dS51bmlxdWUpLHUuZXNjYXBlU2VsZWN0b3J8fCh0PS8oW1wwLVx4MWZceDdmXXxeLT9cZCl8Xi0kfFteXHg4MC1cdUZGRkZcdy1dL2cscz1mdW5jdGlvbihlLHQpe3JldHVybiB0PyJcMCI9PT1lPyLvv70iOmUuc2xpY2UoMCwtMSkrIlxcIitlLmNoYXJDb2RlQXQoZS5sZW5ndGgtMSkudG9TdHJpbmcoMTYpKyIgIjoiXFwiK2V9LHUuZXNjYXBlU2VsZWN0b3I9ZnVuY3Rpb24oZSl7cmV0dXJuKGUrIiIpLnJlcGxhY2UodCxzKX0pLHUuZm4uZXZlbiYmdS5mbi5vZGR8fHUuZm4uZXh0ZW5kKHtldmVuOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBlJTI9PTB9KX0sb2RkOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBlJTI9PTF9KX19KTt1LnVpLmtleUNvZGU9e0JBQ0tTUEFDRTo4LENPTU1BOjE4OCxERUxFVEU6NDYsRE9XTjo0MCxFTkQ6MzUsRU5URVI6MTMsRVNDQVBFOjI3LEhPTUU6MzYsTEVGVDozNyxQQUdFX0RPV046MzQsUEFHRV9VUDozMyxQRVJJT0Q6MTkwLFJJR0hUOjM5LFNQQUNFOjMyLFRBQjo5LFVQOjM4fSx1LmZuLmV4dGVuZCh7dW5pcXVlSWQ6KGU9MCxmdW5jdGlvbigpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt0aGlzLmlkfHwodGhpcy5pZD0idWktaWQtIisgKytlKX0pfSkscmVtb3ZlVW5pcXVlSWQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7L151aS1pZC1cZCskLy50ZXN0KHRoaXMuaWQpJiZ1KHRoaXMpLnJlbW92ZUF0dHIoImlkIil9KX19KSx1LndpZGdldCgidWkuYWNjb3JkaW9uIix7dmVyc2lvbjoiMS4xMy4yIixvcHRpb25zOnthY3RpdmU6MCxhbmltYXRlOnt9LGNsYXNzZXM6eyJ1aS1hY2NvcmRpb24taGVhZGVyIjoidWktY29ybmVyLXRvcCIsInVpLWFjY29yZGlvbi1oZWFkZXItY29sbGFwc2VkIjoidWktY29ybmVyLWFsbCIsInVpLWFjY29yZGlvbi1jb250ZW50IjoidWktY29ybmVyLWJvdHRvbSJ9LGNvbGxhcHNpYmxlOiExLGV2ZW50OiJjbGljayIsaGVhZGVyOmZ1bmN0aW9uKGUpe3JldHVybiBlLmZpbmQoIj4gbGkgPiA6Zmlyc3QtY2hpbGQiKS5hZGQoZS5maW5kKCI+IDpub3QobGkpIikuZXZlbigpKX0saGVpZ2h0U3R5bGU6ImF1dG8iLGljb25zOnthY3RpdmVIZWFkZXI6InVpLWljb24tdHJpYW5nbGUtMS1zIixoZWFkZXI6InVpLWljb24tdHJpYW5nbGUtMS1lIn0sYWN0aXZhdGU6bnVsbCxiZWZvcmVBY3RpdmF0ZTpudWxsfSxoaWRlUHJvcHM6e2JvcmRlclRvcFdpZHRoOiJoaWRlIixib3JkZXJCb3R0b21XaWR0aDoiaGlkZSIscGFkZGluZ1RvcDoiaGlkZSIscGFkZGluZ0JvdHRvbToiaGlkZSIsaGVpZ2h0OiJoaWRlIn0sc2hvd1Byb3BzOntib3JkZXJUb3BXaWR0aDoic2hvdyIsYm9yZGVyQm90dG9tV2lkdGg6InNob3ciLHBhZGRpbmdUb3A6InNob3ciLHBhZGRpbmdCb3R0b206InNob3ciLGhlaWdodDoic2hvdyJ9LF9jcmVhdGU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLm9wdGlvbnM7dGhpcy5wcmV2U2hvdz10aGlzLnByZXZIaWRlPXUoKSx0aGlzLl9hZGRDbGFzcygidWktYWNjb3JkaW9uIiwidWktd2lkZ2V0IHVpLWhlbHBlci1yZXNldCIpLHRoaXMuZWxlbWVudC5hdHRyKCJyb2xlIiwidGFibGlzdCIpLGUuY29sbGFwc2libGV8fCExIT09ZS5hY3RpdmUmJm51bGwhPWUuYWN0aXZlfHwoZS5hY3RpdmU9MCksdGhpcy5fcHJvY2Vzc1BhbmVscygpLGUuYWN0aXZlPDAmJihlLmFjdGl2ZSs9dGhpcy5oZWFkZXJzLmxlbmd0aCksdGhpcy5fcmVmcmVzaCgpfSxfZ2V0Q3JlYXRlRXZlbnREYXRhOmZ1bmN0aW9uKCl7cmV0dXJue2hlYWRlcjp0aGlzLmFjdGl2ZSxwYW5lbDp0aGlzLmFjdGl2ZS5sZW5ndGg\/dGhpcy5hY3RpdmUubmV4dCgpOnUoKX19LF9jcmVhdGVJY29uczpmdW5jdGlvbigpe3ZhciBlLHQ9dGhpcy5vcHRpb25zLmljb25zO3QmJihlPXUoIjxzcGFuPiIpLHRoaXMuX2FkZENsYXNzKGUsInVpLWFjY29yZGlvbi1oZWFkZXItaWNvbiIsInVpLWljb24gIit0LmhlYWRlciksZS5wcmVwZW5kVG8odGhpcy5oZWFkZXJzKSxlPXRoaXMuYWN0aXZlLmNoaWxkcmVuKCIudWktYWNjb3JkaW9uLWhlYWRlci1pY29uIiksdGhpcy5fcmVtb3ZlQ2xhc3MoZSx0LmhlYWRlcikuX2FkZENsYXNzKGUsbnVsbCx0LmFjdGl2ZUhlYWRlcikuX2FkZENsYXNzKHRoaXMuaGVhZGVycywidWktYWNjb3JkaW9uLWljb25zIikpfSxfZGVzdHJveUljb25zOmZ1bmN0aW9uKCl7dGhpcy5fcmVtb3ZlQ2xhc3ModGhpcy5oZWFkZXJzLCJ1aS1hY2NvcmRpb24taWNvbnMiKSx0aGlzLmhlYWRlcnMuY2hpbGRyZW4oIi51aS1hY2NvcmRpb24taGVhZGVyLWljb24iKS5yZW1vdmUoKX0sX2Rlc3Ryb3k6ZnVuY3Rpb24oKXt2YXIgZTt0aGlzLmVsZW1lbnQucmVtb3ZlQXR0cigicm9sZSIpLHRoaXMuaGVhZGVycy5yZW1vdmVBdHRyKCJyb2xlIGFyaWEtZXhwYW5kZWQgYXJpYS1zZWxlY3RlZCBhcmlhLWNvbnRyb2xzIHRhYkluZGV4IikucmVtb3ZlVW5pcXVlSWQoKSx0aGlzLl9kZXN0cm95SWNvbnMoKSxlPXRoaXMuaGVhZGVycy5uZXh0KCkuY3NzKCJkaXNwbGF5IiwiIikucmVtb3ZlQXR0cigicm9sZSBhcmlhLWhpZGRlbiBhcmlhLWxhYmVsbGVkYnkiKS5yZW1vdmVVbmlxdWVJZCgpLCJjb250ZW50IiE9PXRoaXMub3B0aW9ucy5oZWlnaHRTdHlsZSYmZS5jc3MoImhlaWdodCIsIiIpfSxfc2V0T3B0aW9uOmZ1bmN0aW9uKGUsdCl7ImFjdGl2ZSIhPT1lPygiZXZlbnQiPT09ZSYmKHRoaXMub3B0aW9ucy5ldmVudCYmdGhpcy5fb2ZmKHRoaXMuaGVhZGVycyx0aGlzLm9wdGlvbnMuZXZlbnQpLHRoaXMuX3NldHVwRXZlbnRzKHQpKSx0aGlzLl9zdXBlcihlLHQpLCJjb2xsYXBzaWJsZSIhPT1lfHx0fHwhMSE9PXRoaXMub3B0aW9ucy5hY3RpdmV8fHRoaXMuX2FjdGl2YXRlKDApLCJpY29ucyI9PT1lJiYodGhpcy5fZGVzdHJveUljb25zKCksdCYmdGhpcy5fY3JlYXRlSWNvbnMoKSkpOnRoaXMuX2FjdGl2YXRlKHQpfSxfc2V0T3B0aW9uRGlzYWJsZWQ6ZnVuY3Rpb24oZSl7dGhpcy5fc3VwZXIoZSksdGhpcy5lbGVtZW50LmF0dHIoImFyaWEtZGlzYWJsZWQiLGUpLHRoaXMuX3RvZ2dsZUNsYXNzKG51bGwsInVpLXN0YXRlLWRpc2FibGVkIiwhIWUpLHRoaXMuX3RvZ2dsZUNsYXNzKHRoaXMuaGVhZGVycy5hZGQodGhpcy5oZWFkZXJzLm5leHQoKSksbnVsbCwidWktc3RhdGUtZGlzYWJsZWQiLCEhZSl9LF9rZXlkb3duOmZ1bmN0aW9uKGUpe2lmKCFlLmFsdEtleSYmIWUuY3RybEtleSl7dmFyIHQ9dS51aS5rZXlDb2RlLGk9dGhpcy5oZWFkZXJzLmxlbmd0aCxzPXRoaXMuaGVhZGVycy5pbmRleChlLnRhcmdldCksbj0hMTtzd2l0Y2goZS5rZXlDb2RlKXtjYXNlIHQuUklHSFQ6Y2FzZSB0LkRPV046bj10aGlzLmhlYWRlcnNbKHMrMSklaV07YnJlYWs7Y2FzZSB0LkxFRlQ6Y2FzZSB0LlVQOm49dGhpcy5oZWFkZXJzWyhzLTEraSklaV07YnJlYWs7Y2FzZSB0LlNQQUNFOmNhc2UgdC5FTlRFUjp0aGlzLl9ldmVudEhhbmRsZXIoZSk7YnJlYWs7Y2FzZSB0LkhPTUU6bj10aGlzLmhlYWRlcnNbMF07YnJlYWs7Y2FzZSB0LkVORDpuPXRoaXMuaGVhZGVyc1tpLTFdfW4mJih1KGUudGFyZ2V0KS5hdHRyKCJ0YWJJbmRleCIsLTEpLHUobikuYXR0cigidGFiSW5kZXgiLDApLHUobikudHJpZ2dlcigiZm9jdXMiKSxlLnByZXZlbnREZWZhdWx0KCkpfX0sX3BhbmVsS2V5RG93bjpmdW5jdGlvbihlKXtlLmtleUNvZGU9PT11LnVpLmtleUNvZGUuVVAmJmUuY3RybEtleSYmdShlLmN1cnJlbnRUYXJnZXQpLnByZXYoKS50cmlnZ2VyKCJmb2N1cyIpfSxyZWZyZXNoOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5vcHRpb25zO3RoaXMuX3Byb2Nlc3NQYW5lbHMoKSwhMT09PWUuYWN0aXZlJiYhMD09PWUuY29sbGFwc2libGV8fCF0aGlzLmhlYWRlcnMubGVuZ3RoPyhlLmFjdGl2ZT0hMSx0aGlzLmFjdGl2ZT11KCkpOiExPT09ZS5hY3RpdmU\/dGhpcy5fYWN0aXZhdGUoMCk6dGhpcy5hY3RpdmUubGVuZ3RoJiYhdS5jb250YWlucyh0aGlzLmVsZW1lbnRbMF0sdGhpcy5hY3RpdmVbMF0pP3RoaXMuaGVhZGVycy5sZW5ndGg9PT10aGlzLmhlYWRlcnMuZmluZCgiLnVpLXN0YXRlLWRpc2FibGVkIikubGVuZ3RoPyhlLmFjdGl2ZT0hMSx0aGlzLmFjdGl2ZT11KCkpOnRoaXMuX2FjdGl2YXRlKE1hdGgubWF4KDAsZS5hY3RpdmUtMSkpOmUuYWN0aXZlPXRoaXMuaGVhZGVycy5pbmRleCh0aGlzLmFjdGl2ZSksdGhpcy5fZGVzdHJveUljb25zKCksdGhpcy5fcmVmcmVzaCgpfSxfcHJvY2Vzc1BhbmVsczpmdW5jdGlvbigpe3ZhciBlPXRoaXMuaGVhZGVycyx0PXRoaXMucGFuZWxzOyJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzLm9wdGlvbnMuaGVhZGVyP3RoaXMuaGVhZGVycz10aGlzLm9wdGlvbnMuaGVhZGVyKHRoaXMuZWxlbWVudCk6dGhpcy5oZWFkZXJzPXRoaXMuZWxlbWVudC5maW5kKHRoaXMub3B0aW9ucy5oZWFkZXIpLHRoaXMuX2FkZENsYXNzKHRoaXMuaGVhZGVycywidWktYWNjb3JkaW9uLWhlYWRlciB1aS1hY2NvcmRpb24taGVhZGVyLWNvbGxhcHNlZCIsInVpLXN0YXRlLWRlZmF1bHQiKSx0aGlzLnBhbmVscz10aGlzLmhlYWRlcnMubmV4dCgpLmZpbHRlcigiOm5vdCgudWktYWNjb3JkaW9uLWNvbnRlbnQtYWN0aXZlKSIpLmhpZGUoKSx0aGlzLl9hZGRDbGFzcyh0aGlzLnBhbmVscywidWktYWNjb3JkaW9uLWNvbnRlbnQiLCJ1aS1oZWxwZXItcmVzZXQgdWktd2lkZ2V0LWNvbnRlbnQiKSx0JiYodGhpcy5fb2ZmKGUubm90KHRoaXMuaGVhZGVycykpLHRoaXMuX29mZih0Lm5vdCh0aGlzLnBhbmVscykpKX0sX3JlZnJlc2g6ZnVuY3Rpb24oKXt2YXIgaSxlPXRoaXMub3B0aW9ucyx0PWUuaGVpZ2h0U3R5bGUscz10aGlzLmVsZW1lbnQucGFyZW50KCk7dGhpcy5hY3RpdmU9dGhpcy5fZmluZEFjdGl2ZShlLmFjdGl2ZSksdGhpcy5fYWRkQ2xhc3ModGhpcy5hY3RpdmUsInVpLWFjY29yZGlvbi1oZWFkZXItYWN0aXZlIiwidWktc3RhdGUtYWN0aXZlIikuX3JlbW92ZUNsYXNzKHRoaXMuYWN0aXZlLCJ1aS1hY2NvcmRpb24taGVhZGVyLWNvbGxhcHNlZCIpLHRoaXMuX2FkZENsYXNzKHRoaXMuYWN0aXZlLm5leHQoKSwidWktYWNjb3JkaW9uLWNvbnRlbnQtYWN0aXZlIiksdGhpcy5hY3RpdmUubmV4dCgpLnNob3coKSx0aGlzLmhlYWRlcnMuYXR0cigicm9sZSIsInRhYiIpLmVhY2goZnVuY3Rpb24oKXt2YXIgZT11KHRoaXMpLHQ9ZS51bmlxdWVJZCgpLmF0dHIoImlkIiksaT1lLm5leHQoKSxzPWkudW5pcXVlSWQoKS5hdHRyKCJpZCIpO2UuYXR0cigiYXJpYS1jb250cm9scyIscyksaS5hdHRyKCJhcmlhLWxhYmVsbGVkYnkiLHQpfSkubmV4dCgpLmF0dHIoInJvbGUiLCJ0YWJwYW5lbCIpLHRoaXMuaGVhZGVycy5ub3QodGhpcy5hY3RpdmUpLmF0dHIoeyJhcmlhLXNlbGVjdGVkIjoiZmFsc2UiLCJhcmlhLWV4cGFuZGVkIjoiZmFsc2UiLHRhYkluZGV4Oi0xfSkubmV4dCgpLmF0dHIoeyJhcmlhLWhpZGRlbiI6InRydWUifSkuaGlkZSgpLHRoaXMuYWN0aXZlLmxlbmd0aD90aGlzLmFjdGl2ZS5hdHRyKHsiYXJpYS1zZWxlY3RlZCI6InRydWUiLCJhcmlhLWV4cGFuZGVkIjoidHJ1ZSIsdGFiSW5kZXg6MH0pLm5leHQoKS5hdHRyKHsiYXJpYS1oaWRkZW4iOiJmYWxzZSJ9KTp0aGlzLmhlYWRlcnMuZXEoMCkuYXR0cigidGFiSW5kZXgiLDApLHRoaXMuX2NyZWF0ZUljb25zKCksdGhpcy5fc2V0dXBFdmVudHMoZS5ldmVudCksImZpbGwiPT09dD8oaT1zLmhlaWdodCgpLHRoaXMuZWxlbWVudC5zaWJsaW5ncygiOnZpc2libGUiKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIGU9dSh0aGlzKSx0PWUuY3NzKCJwb3NpdGlvbiIpOyJhYnNvbHV0ZSIhPT10JiYiZml4ZWQiIT09dCYmKGktPWUub3V0ZXJIZWlnaHQoITApKX0pLHRoaXMuaGVhZGVycy5lYWNoKGZ1bmN0aW9uKCl7aS09dSh0aGlzKS5vdXRlckhlaWdodCghMCl9KSx0aGlzLmhlYWRlcnMubmV4dCgpLmVhY2goZnVuY3Rpb24oKXt1KHRoaXMpLmhlaWdodChNYXRoLm1heCgwLGktdSh0aGlzKS5pbm5lckhlaWdodCgpK3UodGhpcykuaGVpZ2h0KCkpKX0pLmNzcygib3ZlcmZsb3ciLCJhdXRvIikpOiJhdXRvIj09PXQmJihpPTAsdGhpcy5oZWFkZXJzLm5leHQoKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIGU9dSh0aGlzKS5pcygiOnZpc2libGUiKTtlfHx1KHRoaXMpLnNob3coKSxpPU1hdGgubWF4KGksdSh0aGlzKS5jc3MoImhlaWdodCIsIiIpLmhlaWdodCgpKSxlfHx1KHRoaXMpLmhpZGUoKX0pLmhlaWdodChpKSl9LF9hY3RpdmF0ZTpmdW5jdGlvbihlKXtlPXRoaXMuX2ZpbmRBY3RpdmUoZSlbMF07ZSE9PXRoaXMuYWN0aXZlWzBdJiYoZT1lfHx0aGlzLmFjdGl2ZVswXSx0aGlzLl9ldmVudEhhbmRsZXIoe3RhcmdldDplLGN1cnJlbnRUYXJnZXQ6ZSxwcmV2ZW50RGVmYXVsdDp1Lm5vb3B9KSl9LF9maW5kQWN0aXZlOmZ1bmN0aW9uKGUpe3JldHVybiJudW1iZXIiPT10eXBlb2YgZT90aGlzLmhlYWRlcnMuZXEoZSk6dSgpfSxfc2V0dXBFdmVudHM6ZnVuY3Rpb24oZSl7dmFyIGk9e2tleWRvd246Il9rZXlkb3duIn07ZSYmdS5lYWNoKGUuc3BsaXQoIiAiKSxmdW5jdGlvbihlLHQpe2lbdF09Il9ldmVudEhhbmRsZXIifSksdGhpcy5fb2ZmKHRoaXMuaGVhZGVycy5hZGQodGhpcy5oZWFkZXJzLm5leHQoKSkpLHRoaXMuX29uKHRoaXMuaGVhZGVycyxpKSx0aGlzLl9vbih0aGlzLmhlYWRlcnMubmV4dCgpLHtrZXlkb3duOiJfcGFuZWxLZXlEb3duIn0pLHRoaXMuX2hvdmVyYWJsZSh0aGlzLmhlYWRlcnMpLHRoaXMuX2ZvY3VzYWJsZSh0aGlzLmhlYWRlcnMpfSxfZXZlbnRIYW5kbGVyOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMub3B0aW9ucyxpPXRoaXMuYWN0aXZlLHM9dShlLmN1cnJlbnRUYXJnZXQpLG49c1swXT09PWlbMF0sYT1uJiZ0LmNvbGxhcHNpYmxlLG89YT91KCk6cy5uZXh0KCkscj1pLm5leHQoKSxvPXtvbGRIZWFkZXI6aSxvbGRQYW5lbDpyLG5ld0hlYWRlcjphP3UoKTpzLG5ld1BhbmVsOm99O2UucHJldmVudERlZmF1bHQoKSxuJiYhdC5jb2xsYXBzaWJsZXx8ITE9PT10aGlzLl90cmlnZ2VyKCJiZWZvcmVBY3RpdmF0ZSIsZSxvKXx8KHQuYWN0aXZlPSFhJiZ0aGlzLmhlYWRlcnMuaW5kZXgocyksdGhpcy5hY3RpdmU9bj91KCk6cyx0aGlzLl90b2dnbGUobyksdGhpcy5fcmVtb3ZlQ2xhc3MoaSwidWktYWNjb3JkaW9uLWhlYWRlci1hY3RpdmUiLCJ1aS1zdGF0ZS1hY3RpdmUiKSx0Lmljb25zJiYoaT1pLmNoaWxkcmVuKCIudWktYWNjb3JkaW9uLWhlYWRlci1pY29uIiksdGhpcy5fcmVtb3ZlQ2xhc3MoaSxudWxsLHQuaWNvbnMuYWN0aXZlSGVhZGVyKS5fYWRkQ2xhc3MoaSxudWxsLHQuaWNvbnMuaGVhZGVyKSksbnx8KHRoaXMuX3JlbW92ZUNsYXNzKHMsInVpLWFjY29yZGlvbi1oZWFkZXItY29sbGFwc2VkIikuX2FkZENsYXNzKHMsInVpLWFjY29yZGlvbi1oZWFkZXItYWN0aXZlIiwidWktc3RhdGUtYWN0aXZlIiksdC5pY29ucyYmKG49cy5jaGlsZHJlbigiLnVpLWFjY29yZGlvbi1oZWFkZXItaWNvbiIpLHRoaXMuX3JlbW92ZUNsYXNzKG4sbnVsbCx0Lmljb25zLmhlYWRlcikuX2FkZENsYXNzKG4sbnVsbCx0Lmljb25zLmFjdGl2ZUhlYWRlcikpLHRoaXMuX2FkZENsYXNzKHMubmV4dCgpLCJ1aS1hY2NvcmRpb24tY29udGVudC1hY3RpdmUiKSkpfSxfdG9nZ2xlOmZ1bmN0aW9uKGUpe3ZhciB0PWUubmV3UGFuZWwsaT10aGlzLnByZXZTaG93Lmxlbmd0aD90aGlzLnByZXZTaG93OmUub2xkUGFuZWw7dGhpcy5wcmV2U2hvdy5hZGQodGhpcy5wcmV2SGlkZSkuc3RvcCghMCwhMCksdGhpcy5wcmV2U2hvdz10LHRoaXMucHJldkhpZGU9aSx0aGlzLm9wdGlvbnMuYW5pbWF0ZT90aGlzLl9hbmltYXRlKHQsaSxlKTooaS5oaWRlKCksdC5zaG93KCksdGhpcy5fdG9nZ2xlQ29tcGxldGUoZSkpLGkuYXR0cih7ImFyaWEtaGlkZGVuIjoidHJ1ZSJ9KSxpLnByZXYoKS5hdHRyKHsiYXJpYS1zZWxlY3RlZCI6ImZhbHNlIiwiYXJpYS1leHBhbmRlZCI6ImZhbHNlIn0pLHQubGVuZ3RoJiZpLmxlbmd0aD9pLnByZXYoKS5hdHRyKHt0YWJJbmRleDotMSwiYXJpYS1leHBhbmRlZCI6ImZhbHNlIn0pOnQubGVuZ3RoJiZ0aGlzLmhlYWRlcnMuZmlsdGVyKGZ1bmN0aW9uKCl7cmV0dXJuIDA9PT1wYXJzZUludCh1KHRoaXMpLmF0dHIoInRhYkluZGV4IiksMTApfSkuYXR0cigidGFiSW5kZXgiLC0xKSx0LmF0dHIoImFyaWEtaGlkZGVuIiwiZmFsc2UiKS5wcmV2KCkuYXR0cih7ImFyaWEtc2VsZWN0ZWQiOiJ0cnVlIiwiYXJpYS1leHBhbmRlZCI6InRydWUiLHRhYkluZGV4OjB9KX0sX2FuaW1hdGU6ZnVuY3Rpb24oZSxpLHQpe3ZhciBzLG4sYSxvPXRoaXMscj0wLGg9ZS5jc3MoImJveC1zaXppbmciKSxsPWUubGVuZ3RoJiYoIWkubGVuZ3RofHxlLmluZGV4KCk8aS5pbmRleCgpKSx1PXRoaXMub3B0aW9ucy5hbmltYXRlfHx7fSxjPWwmJnUuZG93bnx8dSxsPWZ1bmN0aW9uKCl7by5fdG9nZ2xlQ29tcGxldGUodCl9O3JldHVybiBuPShuPSJzdHJpbmciPT10eXBlb2YgYz9jOm4pfHxjLmVhc2luZ3x8dS5lYXNpbmcsYT0oYT0ibnVtYmVyIj09dHlwZW9mIGM\/YzphKXx8Yy5kdXJhdGlvbnx8dS5kdXJhdGlvbixpLmxlbmd0aD9lLmxlbmd0aD8ocz1lLnNob3coKS5vdXRlckhlaWdodCgpLGkuYW5pbWF0ZSh0aGlzLmhpZGVQcm9wcyx7ZHVyYXRpb246YSxlYXNpbmc6bixzdGVwOmZ1bmN0aW9uKGUsdCl7dC5ub3c9TWF0aC5yb3VuZChlKX19KSx2b2lkIGUuaGlkZSgpLmFuaW1hdGUodGhpcy5zaG93UHJvcHMse2R1cmF0aW9uOmEsZWFzaW5nOm4sY29tcGxldGU6bCxzdGVwOmZ1bmN0aW9uKGUsdCl7dC5ub3c9TWF0aC5yb3VuZChlKSwiaGVpZ2h0IiE9PXQucHJvcD8iY29udGVudC1ib3giPT09aCYmKHIrPXQubm93KToiY29udGVudCIhPT1vLm9wdGlvbnMuaGVpZ2h0U3R5bGUmJih0Lm5vdz1NYXRoLnJvdW5kKHMtaS5vdXRlckhlaWdodCgpLXIpLHI9MCl9fSkpOmkuYW5pbWF0ZSh0aGlzLmhpZGVQcm9wcyxhLG4sbCk6ZS5hbmltYXRlKHRoaXMuc2hvd1Byb3BzLGEsbixsKX0sX3RvZ2dsZUNvbXBsZXRlOmZ1bmN0aW9uKGUpe3ZhciB0PWUub2xkUGFuZWwsaT10LnByZXYoKTt0aGlzLl9yZW1vdmVDbGFzcyh0LCJ1aS1hY2NvcmRpb24tY29udGVudC1hY3RpdmUiKSx0aGlzLl9yZW1vdmVDbGFzcyhpLCJ1aS1hY2NvcmRpb24taGVhZGVyLWFjdGl2ZSIpLl9hZGRDbGFzcyhpLCJ1aS1hY2NvcmRpb24taGVhZGVyLWNvbGxhcHNlZCIpLHQubGVuZ3RoJiYodC5wYXJlbnQoKVswXS5jbGFzc05hbWU9dC5wYXJlbnQoKVswXS5jbGFzc05hbWUpLHRoaXMuX3RyaWdnZXIoImFjdGl2YXRlIixudWxsLGUpfX0pLHUudWkuaWU9ISEvbXNpZSBbXHcuXSsvLmV4ZWMobmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpKTt2YXIgZSxhPSExO3UoZG9jdW1lbnQpLm9uKCJtb3VzZXVwIixmdW5jdGlvbigpe2E9ITF9KTt1LndpZGdldCgidWkubW91c2UiLHt2ZXJzaW9uOiIxLjEzLjIiLG9wdGlvbnM6e2NhbmNlbDoiaW5wdXQsIHRleHRhcmVhLCBidXR0b24sIHNlbGVjdCwgb3B0aW9uIixkaXN0YW5jZToxLGRlbGF5OjB9LF9tb3VzZUluaXQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3RoaXMuZWxlbWVudC5vbigibW91c2Vkb3duLiIrdGhpcy53aWRnZXROYW1lLGZ1bmN0aW9uKGUpe3JldHVybiB0Ll9tb3VzZURvd24oZSl9KS5vbigiY2xpY2suIit0aGlzLndpZGdldE5hbWUsZnVuY3Rpb24oZSl7aWYoITA9PT11LmRhdGEoZS50YXJnZXQsdC53aWRnZXROYW1lKyIucHJldmVudENsaWNrRXZlbnQiKSlyZXR1cm4gdS5yZW1vdmVEYXRhKGUudGFyZ2V0LHQud2lkZ2V0TmFtZSsiLnByZXZlbnRDbGlja0V2ZW50IiksZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKSwhMX0pLHRoaXMuc3RhcnRlZD0hMX0sX21vdXNlRGVzdHJveTpmdW5jdGlvbigpe3RoaXMuZWxlbWVudC5vZmYoIi4iK3RoaXMud2lkZ2V0TmFtZSksdGhpcy5fbW91c2VNb3ZlRGVsZWdhdGUmJnRoaXMuZG9jdW1lbnQub2ZmKCJtb3VzZW1vdmUuIit0aGlzLndpZGdldE5hbWUsdGhpcy5fbW91c2VNb3ZlRGVsZWdhdGUpLm9mZigibW91c2V1cC4iK3RoaXMud2lkZ2V0TmFtZSx0aGlzLl9tb3VzZVVwRGVsZWdhdGUpfSxfbW91c2VEb3duOmZ1bmN0aW9uKGUpe2lmKCFhKXt0aGlzLl9tb3VzZU1vdmVkPSExLHRoaXMuX21vdXNlU3RhcnRlZCYmdGhpcy5fbW91c2VVcChlKSx0aGlzLl9tb3VzZURvd25FdmVudD1lO3ZhciB0PXRoaXMsaT0xPT09ZS53aGljaCxzPSEoInN0cmluZyIhPXR5cGVvZiB0aGlzLm9wdGlvbnMuY2FuY2VsfHwhZS50YXJnZXQubm9kZU5hbWUpJiZ1KGUudGFyZ2V0KS5jbG9zZXN0KHRoaXMub3B0aW9ucy5jYW5jZWwpLmxlbmd0aDtyZXR1cm4gaSYmIXMmJnRoaXMuX21vdXNlQ2FwdHVyZShlKT8odGhpcy5tb3VzZURlbGF5TWV0PSF0aGlzLm9wdGlvbnMuZGVsYXksdGhpcy5tb3VzZURlbGF5TWV0fHwodGhpcy5fbW91c2VEZWxheVRpbWVyPXNldFRpbWVvdXQoZnVuY3Rpb24oKXt0Lm1vdXNlRGVsYXlNZXQ9ITB9LHRoaXMub3B0aW9ucy5kZWxheSkpLHRoaXMuX21vdXNlRGlzdGFuY2VNZXQoZSkmJnRoaXMuX21vdXNlRGVsYXlNZXQoZSkmJih0aGlzLl9tb3VzZVN0YXJ0ZWQ9ITEhPT10aGlzLl9tb3VzZVN0YXJ0KGUpLCF0aGlzLl9tb3VzZVN0YXJ0ZWQpPyhlLnByZXZlbnREZWZhdWx0KCksITApOighMD09PXUuZGF0YShlLnRhcmdldCx0aGlzLndpZGdldE5hbWUrIi5wcmV2ZW50Q2xpY2tFdmVudCIpJiZ1LnJlbW92ZURhdGEoZS50YXJnZXQsdGhpcy53aWRnZXROYW1lKyIucHJldmVudENsaWNrRXZlbnQiKSx0aGlzLl9tb3VzZU1vdmVEZWxlZ2F0ZT1mdW5jdGlvbihlKXtyZXR1cm4gdC5fbW91c2VNb3ZlKGUpfSx0aGlzLl9tb3VzZVVwRGVsZWdhdGU9ZnVuY3Rpb24oZSl7cmV0dXJuIHQuX21vdXNlVXAoZSl9LHRoaXMuZG9jdW1lbnQub24oIm1vdXNlbW92ZS4iK3RoaXMud2lkZ2V0TmFtZSx0aGlzLl9tb3VzZU1vdmVEZWxlZ2F0ZSkub24oIm1vdXNldXAuIit0aGlzLndpZGdldE5hbWUsdGhpcy5fbW91c2VVcERlbGVnYXRlKSxlLnByZXZlbnREZWZhdWx0KCksYT0hMCkpOiEwfX0sX21vdXNlTW92ZTpmdW5jdGlvbihlKXtpZih0aGlzLl9tb3VzZU1vdmVkKXtpZih1LnVpLmllJiYoIWRvY3VtZW50LmRvY3VtZW50TW9kZXx8ZG9jdW1lbnQuZG9jdW1lbnRNb2RlPDkpJiYhZS5idXR0b24pcmV0dXJuIHRoaXMuX21vdXNlVXAoZSk7aWYoIWUud2hpY2gpaWYoZS5vcmlnaW5hbEV2ZW50LmFsdEtleXx8ZS5vcmlnaW5hbEV2ZW50LmN0cmxLZXl8fGUub3JpZ2luYWxFdmVudC5tZXRhS2V5fHxlLm9yaWdpbmFsRXZlbnQuc2hpZnRLZXkpdGhpcy5pZ25vcmVNaXNzaW5nV2hpY2g9ITA7ZWxzZSBpZighdGhpcy5pZ25vcmVNaXNzaW5nV2hpY2gpcmV0dXJuIHRoaXMuX21vdXNlVXAoZSl9cmV0dXJuKGUud2hpY2h8fGUuYnV0dG9uKSYmKHRoaXMuX21vdXNlTW92ZWQ9ITApLHRoaXMuX21vdXNlU3RhcnRlZD8odGhpcy5fbW91c2VEcmFnKGUpLGUucHJldmVudERlZmF1bHQoKSk6KHRoaXMuX21vdXNlRGlzdGFuY2VNZXQoZSkmJnRoaXMuX21vdXNlRGVsYXlNZXQoZSkmJih0aGlzLl9tb3VzZVN0YXJ0ZWQ9ITEhPT10aGlzLl9tb3VzZVN0YXJ0KHRoaXMuX21vdXNlRG93bkV2ZW50LGUpLHRoaXMuX21vdXNlU3RhcnRlZD90aGlzLl9tb3VzZURyYWcoZSk6dGhpcy5fbW91c2VVcChlKSksIXRoaXMuX21vdXNlU3RhcnRlZCl9LF9tb3VzZVVwOmZ1bmN0aW9uKGUpe3RoaXMuZG9jdW1lbnQub2ZmKCJtb3VzZW1vdmUuIit0aGlzLndpZGdldE5hbWUsdGhpcy5fbW91c2VNb3ZlRGVsZWdhdGUpLm9mZigibW91c2V1cC4iK3RoaXMud2lkZ2V0TmFtZSx0aGlzLl9tb3VzZVVwRGVsZWdhdGUpLHRoaXMuX21vdXNlU3RhcnRlZCYmKHRoaXMuX21vdXNlU3RhcnRlZD0hMSxlLnRhcmdldD09PXRoaXMuX21vdXNlRG93bkV2ZW50LnRhcmdldCYmdS5kYXRhKGUudGFyZ2V0LHRoaXMud2lkZ2V0TmFtZSsiLnByZXZlbnRDbGlja0V2ZW50IiwhMCksdGhpcy5fbW91c2VTdG9wKGUpKSx0aGlzLl9tb3VzZURlbGF5VGltZXImJihjbGVhclRpbWVvdXQodGhpcy5fbW91c2VEZWxheVRpbWVyKSxkZWxldGUgdGhpcy5fbW91c2VEZWxheVRpbWVyKSx0aGlzLmlnbm9yZU1pc3NpbmdXaGljaD0hMSxhPSExLGUucHJldmVudERlZmF1bHQoKX0sX21vdXNlRGlzdGFuY2VNZXQ6ZnVuY3Rpb24oZSl7cmV0dXJuIE1hdGgubWF4KE1hdGguYWJzKHRoaXMuX21vdXNlRG93bkV2ZW50LnBhZ2VYLWUucGFnZVgpLE1hdGguYWJzKHRoaXMuX21vdXNlRG93bkV2ZW50LnBhZ2VZLWUucGFnZVkpKT49dGhpcy5vcHRpb25zLmRpc3RhbmNlfSxfbW91c2VEZWxheU1ldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1vdXNlRGVsYXlNZXR9LF9tb3VzZVN0YXJ0OmZ1bmN0aW9uKCl7fSxfbW91c2VEcmFnOmZ1bmN0aW9uKCl7fSxfbW91c2VTdG9wOmZ1bmN0aW9uKCl7fSxfbW91c2VDYXB0dXJlOmZ1bmN0aW9uKCl7cmV0dXJuITB9fSksdS53aWRnZXQoInVpLnNsaWRlciIsdS51aS5tb3VzZSx7dmVyc2lvbjoiMS4xMy4yIix3aWRnZXRFdmVudFByZWZpeDoic2xpZGUiLG9wdGlvbnM6e2FuaW1hdGU6ITEsY2xhc3Nlczp7InVpLXNsaWRlciI6InVpLWNvcm5lci1hbGwiLCJ1aS1zbGlkZXItaGFuZGxlIjoidWktY29ybmVyLWFsbCIsInVpLXNsaWRlci1yYW5nZSI6InVpLWNvcm5lci1hbGwgdWktd2lkZ2V0LWhlYWRlciJ9LGRpc3RhbmNlOjAsbWF4OjEwMCxtaW46MCxvcmllbnRhdGlvbjoiaG9yaXpvbnRhbCIscmFuZ2U6ITEsc3RlcDoxLHZhbHVlOjAsdmFsdWVzOm51bGwsY2hhbmdlOm51bGwsc2xpZGU6bnVsbCxzdGFydDpudWxsLHN0b3A6bnVsbH0sbnVtUGFnZXM6NSxfY3JlYXRlOmZ1bmN0aW9uKCl7dGhpcy5fa2V5U2xpZGluZz0hMSx0aGlzLl9tb3VzZVNsaWRpbmc9ITEsdGhpcy5fYW5pbWF0ZU9mZj0hMCx0aGlzLl9oYW5kbGVJbmRleD1udWxsLHRoaXMuX2RldGVjdE9yaWVudGF0aW9uKCksdGhpcy5fbW91c2VJbml0KCksdGhpcy5fY2FsY3VsYXRlTmV3TWF4KCksdGhpcy5fYWRkQ2xhc3MoInVpLXNsaWRlciB1aS1zbGlkZXItIit0aGlzLm9yaWVudGF0aW9uLCJ1aS13aWRnZXQgdWktd2lkZ2V0LWNvbnRlbnQiKSx0aGlzLl9yZWZyZXNoKCksdGhpcy5fYW5pbWF0ZU9mZj0hMX0sX3JlZnJlc2g6ZnVuY3Rpb24oKXt0aGlzLl9jcmVhdGVSYW5nZSgpLHRoaXMuX2NyZWF0ZUhhbmRsZXMoKSx0aGlzLl9zZXR1cEV2ZW50cygpLHRoaXMuX3JlZnJlc2hWYWx1ZSgpfSxfY3JlYXRlSGFuZGxlczpmdW5jdGlvbigpe3ZhciBlLHQ9dGhpcy5vcHRpb25zLGk9dGhpcy5lbGVtZW50LmZpbmQoIi51aS1zbGlkZXItaGFuZGxlIikscz1bXSxuPXQudmFsdWVzJiZ0LnZhbHVlcy5sZW5ndGh8fDE7Zm9yKGkubGVuZ3RoPm4mJihpLnNsaWNlKG4pLnJlbW92ZSgpLGk9aS5zbGljZSgwLG4pKSxlPWkubGVuZ3RoO2U8bjtlKyspcy5wdXNoKCI8c3BhbiB0YWJpbmRleD0nMCc+PC9zcGFuPiIpO3RoaXMuaGFuZGxlcz1pLmFkZCh1KHMuam9pbigiIikpLmFwcGVuZFRvKHRoaXMuZWxlbWVudCkpLHRoaXMuX2FkZENsYXNzKHRoaXMuaGFuZGxlcywidWktc2xpZGVyLWhhbmRsZSIsInVpLXN0YXRlLWRlZmF1bHQiKSx0aGlzLmhhbmRsZT10aGlzLmhhbmRsZXMuZXEoMCksdGhpcy5oYW5kbGVzLmVhY2goZnVuY3Rpb24oZSl7dSh0aGlzKS5kYXRhKCJ1aS1zbGlkZXItaGFuZGxlLWluZGV4IixlKS5hdHRyKCJ0YWJJbmRleCIsMCl9KX0sX2NyZWF0ZVJhbmdlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5vcHRpb25zO2UucmFuZ2U\/KCEwPT09ZS5yYW5nZSYmKGUudmFsdWVzP2UudmFsdWVzLmxlbmd0aCYmMiE9PWUudmFsdWVzLmxlbmd0aD9lLnZhbHVlcz1bZS52YWx1ZXNbMF0sZS52YWx1ZXNbMF1dOkFycmF5LmlzQXJyYXkoZS52YWx1ZXMpJiYoZS52YWx1ZXM9ZS52YWx1ZXMuc2xpY2UoMCkpOmUudmFsdWVzPVt0aGlzLl92YWx1ZU1pbigpLHRoaXMuX3ZhbHVlTWluKCldKSx0aGlzLnJhbmdlJiZ0aGlzLnJhbmdlLmxlbmd0aD8odGhpcy5fcmVtb3ZlQ2xhc3ModGhpcy5yYW5nZSwidWktc2xpZGVyLXJhbmdlLW1pbiB1aS1zbGlkZXItcmFuZ2UtbWF4IiksdGhpcy5yYW5nZS5jc3Moe2xlZnQ6IiIsYm90dG9tOiIifSkpOih0aGlzLnJhbmdlPXUoIjxkaXY+IikuYXBwZW5kVG8odGhpcy5lbGVtZW50KSx0aGlzLl9hZGRDbGFzcyh0aGlzLnJhbmdlLCJ1aS1zbGlkZXItcmFuZ2UiKSksIm1pbiIhPT1lLnJhbmdlJiYibWF4IiE9PWUucmFuZ2V8fHRoaXMuX2FkZENsYXNzKHRoaXMucmFuZ2UsInVpLXNsaWRlci1yYW5nZS0iK2UucmFuZ2UpKToodGhpcy5yYW5nZSYmdGhpcy5yYW5nZS5yZW1vdmUoKSx0aGlzLnJhbmdlPW51bGwpfSxfc2V0dXBFdmVudHM6ZnVuY3Rpb24oKXt0aGlzLl9vZmYodGhpcy5oYW5kbGVzKSx0aGlzLl9vbih0aGlzLmhhbmRsZXMsdGhpcy5faGFuZGxlRXZlbnRzKSx0aGlzLl9ob3ZlcmFibGUodGhpcy5oYW5kbGVzKSx0aGlzLl9mb2N1c2FibGUodGhpcy5oYW5kbGVzKX0sX2Rlc3Ryb3k6ZnVuY3Rpb24oKXt0aGlzLmhhbmRsZXMucmVtb3ZlKCksdGhpcy5yYW5nZSYmdGhpcy5yYW5nZS5yZW1vdmUoKSx0aGlzLl9tb3VzZURlc3Ryb3koKX0sX21vdXNlQ2FwdHVyZTpmdW5jdGlvbihlKXt2YXIgaSxzLG4sYSx0LG8scj10aGlzLGg9dGhpcy5vcHRpb25zO3JldHVybiFoLmRpc2FibGVkJiYodGhpcy5lbGVtZW50U2l6ZT17d2lkdGg6dGhpcy5lbGVtZW50Lm91dGVyV2lkdGgoKSxoZWlnaHQ6dGhpcy5lbGVtZW50Lm91dGVySGVpZ2h0KCl9LHRoaXMuZWxlbWVudE9mZnNldD10aGlzLmVsZW1lbnQub2Zmc2V0KCksbz17eDplLnBhZ2VYLHk6ZS5wYWdlWX0saT10aGlzLl9ub3JtVmFsdWVGcm9tTW91c2Uobykscz10aGlzLl92YWx1ZU1heCgpLXRoaXMuX3ZhbHVlTWluKCkrMSx0aGlzLmhhbmRsZXMuZWFjaChmdW5jdGlvbihlKXt2YXIgdD1NYXRoLmFicyhpLXIudmFsdWVzKGUpKTsodDxzfHxzPT09dCYmKGU9PT1yLl9sYXN0Q2hhbmdlZFZhbHVlfHxyLnZhbHVlcyhlKT09PWgubWluKSkmJihzPXQsbj11KHRoaXMpLGE9ZSl9KSwhMSE9PXRoaXMuX3N0YXJ0KGUsYSkmJih0aGlzLl9tb3VzZVNsaWRpbmc9ITAsdGhpcy5faGFuZGxlSW5kZXg9YSx0aGlzLl9hZGRDbGFzcyhuLG51bGwsInVpLXN0YXRlLWFjdGl2ZSIpLG4udHJpZ2dlcigiZm9jdXMiKSx0PW4ub2Zmc2V0KCksbz0hdShlLnRhcmdldCkucGFyZW50cygpLmFkZEJhY2soKS5pcygiLnVpLXNsaWRlci1oYW5kbGUiKSx0aGlzLl9jbGlja09mZnNldD1vP3tsZWZ0OjAsdG9wOjB9OntsZWZ0OmUucGFnZVgtdC5sZWZ0LW4ud2lkdGgoKS8yLHRvcDplLnBhZ2VZLXQudG9wLW4uaGVpZ2h0KCkvMi0ocGFyc2VJbnQobi5jc3MoImJvcmRlclRvcFdpZHRoIiksMTApfHwwKS0ocGFyc2VJbnQobi5jc3MoImJvcmRlckJvdHRvbVdpZHRoIiksMTApfHwwKSsocGFyc2VJbnQobi5jc3MoIm1hcmdpblRvcCIpLDEwKXx8MCl9LHRoaXMuaGFuZGxlcy5oYXNDbGFzcygidWktc3RhdGUtaG92ZXIiKXx8dGhpcy5fc2xpZGUoZSxhLGkpLHRoaXMuX2FuaW1hdGVPZmY9ITApKX0sX21vdXNlU3RhcnQ6ZnVuY3Rpb24oKXtyZXR1cm4hMH0sX21vdXNlRHJhZzpmdW5jdGlvbihlKXt2YXIgdD17eDplLnBhZ2VYLHk6ZS5wYWdlWX0sdD10aGlzLl9ub3JtVmFsdWVGcm9tTW91c2UodCk7cmV0dXJuIHRoaXMuX3NsaWRlKGUsdGhpcy5faGFuZGxlSW5kZXgsdCksITF9LF9tb3VzZVN0b3A6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX3JlbW92ZUNsYXNzKHRoaXMuaGFuZGxlcyxudWxsLCJ1aS1zdGF0ZS1hY3RpdmUiKSx0aGlzLl9tb3VzZVNsaWRpbmc9ITEsdGhpcy5fc3RvcChlLHRoaXMuX2hhbmRsZUluZGV4KSx0aGlzLl9jaGFuZ2UoZSx0aGlzLl9oYW5kbGVJbmRleCksdGhpcy5faGFuZGxlSW5kZXg9bnVsbCx0aGlzLl9jbGlja09mZnNldD1udWxsLHRoaXMuX2FuaW1hdGVPZmY9ITF9LF9kZXRlY3RPcmllbnRhdGlvbjpmdW5jdGlvbigpe3RoaXMub3JpZW50YXRpb249InZlcnRpY2FsIj09PXRoaXMub3B0aW9ucy5vcmllbnRhdGlvbj8idmVydGljYWwiOiJob3Jpem9udGFsIn0sX25vcm1WYWx1ZUZyb21Nb3VzZTpmdW5jdGlvbihlKXt2YXIgdCxlPSJob3Jpem9udGFsIj09PXRoaXMub3JpZW50YXRpb24\/KHQ9dGhpcy5lbGVtZW50U2l6ZS53aWR0aCxlLngtdGhpcy5lbGVtZW50T2Zmc2V0LmxlZnQtKHRoaXMuX2NsaWNrT2Zmc2V0P3RoaXMuX2NsaWNrT2Zmc2V0LmxlZnQ6MCkpOih0PXRoaXMuZWxlbWVudFNpemUuaGVpZ2h0LGUueS10aGlzLmVsZW1lbnRPZmZzZXQudG9wLSh0aGlzLl9jbGlja09mZnNldD90aGlzLl9jbGlja09mZnNldC50b3A6MCkpLGU9ZS90O3JldHVybihlPTE8ZT8xOmUpPDAmJihlPTApLCJ2ZXJ0aWNhbCI9PT10aGlzLm9yaWVudGF0aW9uJiYoZT0xLWUpLHQ9dGhpcy5fdmFsdWVNYXgoKS10aGlzLl92YWx1ZU1pbigpLHQ9dGhpcy5fdmFsdWVNaW4oKStlKnQsdGhpcy5fdHJpbUFsaWduVmFsdWUodCl9LF91aUhhc2g6ZnVuY3Rpb24oZSx0LGkpe3ZhciBzPXtoYW5kbGU6dGhpcy5oYW5kbGVzW2VdLGhhbmRsZUluZGV4OmUsdmFsdWU6dm9pZCAwIT09dD90OnRoaXMudmFsdWUoKX07cmV0dXJuIHRoaXMuX2hhc011bHRpcGxlVmFsdWVzKCkmJihzLnZhbHVlPXZvaWQgMCE9PXQ\/dDp0aGlzLnZhbHVlcyhlKSxzLnZhbHVlcz1pfHx0aGlzLnZhbHVlcygpKSxzfSxfaGFzTXVsdGlwbGVWYWx1ZXM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vcHRpb25zLnZhbHVlcyYmdGhpcy5vcHRpb25zLnZhbHVlcy5sZW5ndGh9LF9zdGFydDpmdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLl90cmlnZ2VyKCJzdGFydCIsZSx0aGlzLl91aUhhc2godCkpfSxfc2xpZGU6ZnVuY3Rpb24oZSx0LGkpe3ZhciBzLG49dGhpcy52YWx1ZSgpLGE9dGhpcy52YWx1ZXMoKTt0aGlzLl9oYXNNdWx0aXBsZVZhbHVlcygpJiYocz10aGlzLnZhbHVlcyh0PzA6MSksbj10aGlzLnZhbHVlcyh0KSwyPT09dGhpcy5vcHRpb25zLnZhbHVlcy5sZW5ndGgmJiEwPT09dGhpcy5vcHRpb25zLnJhbmdlJiYoaT0wPT09dD9NYXRoLm1pbihzLGkpOk1hdGgubWF4KHMsaSkpLGFbdF09aSksaSE9PW4mJiExIT09dGhpcy5fdHJpZ2dlcigic2xpZGUiLGUsdGhpcy5fdWlIYXNoKHQsaSxhKSkmJih0aGlzLl9oYXNNdWx0aXBsZVZhbHVlcygpP3RoaXMudmFsdWVzKHQsaSk6dGhpcy52YWx1ZShpKSl9LF9zdG9wOmZ1bmN0aW9uKGUsdCl7dGhpcy5fdHJpZ2dlcigic3RvcCIsZSx0aGlzLl91aUhhc2godCkpfSxfY2hhbmdlOmZ1bmN0aW9uKGUsdCl7dGhpcy5fa2V5U2xpZGluZ3x8dGhpcy5fbW91c2VTbGlkaW5nfHwodGhpcy5fbGFzdENoYW5nZWRWYWx1ZT10LHRoaXMuX3RyaWdnZXIoImNoYW5nZSIsZSx0aGlzLl91aUhhc2godCkpKX0sdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg\/KHRoaXMub3B0aW9ucy52YWx1ZT10aGlzLl90cmltQWxpZ25WYWx1ZShlKSx0aGlzLl9yZWZyZXNoVmFsdWUoKSx2b2lkIHRoaXMuX2NoYW5nZShudWxsLDApKTp0aGlzLl92YWx1ZSgpfSx2YWx1ZXM6ZnVuY3Rpb24oZSx0KXt2YXIgaSxzLG47aWYoMTxhcmd1bWVudHMubGVuZ3RoKXJldHVybiB0aGlzLm9wdGlvbnMudmFsdWVzW2VdPXRoaXMuX3RyaW1BbGlnblZhbHVlKHQpLHRoaXMuX3JlZnJlc2hWYWx1ZSgpLHZvaWQgdGhpcy5fY2hhbmdlKG51bGwsZSk7aWYoIWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIHRoaXMuX3ZhbHVlcygpO2lmKCFBcnJheS5pc0FycmF5KGUpKXJldHVybiB0aGlzLl9oYXNNdWx0aXBsZVZhbHVlcygpP3RoaXMuX3ZhbHVlcyhlKTp0aGlzLnZhbHVlKCk7Zm9yKGk9dGhpcy5vcHRpb25zLnZhbHVlcyxzPWUsbj0wO248aS5sZW5ndGg7bis9MSlpW25dPXRoaXMuX3RyaW1BbGlnblZhbHVlKHNbbl0pLHRoaXMuX2NoYW5nZShudWxsLG4pO3RoaXMuX3JlZnJlc2hWYWx1ZSgpfSxfc2V0T3B0aW9uOmZ1bmN0aW9uKGUsdCl7dmFyIGkscz0wO3N3aXRjaCgicmFuZ2UiPT09ZSYmITA9PT10aGlzLm9wdGlvbnMucmFuZ2UmJigibWluIj09PXQ\/KHRoaXMub3B0aW9ucy52YWx1ZT10aGlzLl92YWx1ZXMoMCksdGhpcy5vcHRpb25zLnZhbHVlcz1udWxsKToibWF4Ij09PXQmJih0aGlzLm9wdGlvbnMudmFsdWU9dGhpcy5fdmFsdWVzKHRoaXMub3B0aW9ucy52YWx1ZXMubGVuZ3RoLTEpLHRoaXMub3B0aW9ucy52YWx1ZXM9bnVsbCkpLEFycmF5LmlzQXJyYXkodGhpcy5vcHRpb25zLnZhbHVlcykmJihzPXRoaXMub3B0aW9ucy52YWx1ZXMubGVuZ3RoKSx0aGlzLl9zdXBlcihlLHQpLGUpe2Nhc2Uib3JpZW50YXRpb24iOnRoaXMuX2RldGVjdE9yaWVudGF0aW9uKCksdGhpcy5fcmVtb3ZlQ2xhc3MoInVpLXNsaWRlci1ob3Jpem9udGFsIHVpLXNsaWRlci12ZXJ0aWNhbCIpLl9hZGRDbGFzcygidWktc2xpZGVyLSIrdGhpcy5vcmllbnRhdGlvbiksdGhpcy5fcmVmcmVzaFZhbHVlKCksdGhpcy5vcHRpb25zLnJhbmdlJiZ0aGlzLl9yZWZyZXNoUmFuZ2UodCksdGhpcy5oYW5kbGVzLmNzcygiaG9yaXpvbnRhbCI9PT10PyJib3R0b20iOiJsZWZ0IiwiIik7YnJlYWs7Y2FzZSJ2YWx1ZSI6dGhpcy5fYW5pbWF0ZU9mZj0hMCx0aGlzLl9yZWZyZXNoVmFsdWUoKSx0aGlzLl9jaGFuZ2UobnVsbCwwKSx0aGlzLl9hbmltYXRlT2ZmPSExO2JyZWFrO2Nhc2UidmFsdWVzIjpmb3IodGhpcy5fYW5pbWF0ZU9mZj0hMCx0aGlzLl9yZWZyZXNoVmFsdWUoKSxpPXMtMTswPD1pO2ktLSl0aGlzLl9jaGFuZ2UobnVsbCxpKTt0aGlzLl9hbmltYXRlT2ZmPSExO2JyZWFrO2Nhc2Uic3RlcCI6Y2FzZSJtaW4iOmNhc2UibWF4Ijp0aGlzLl9hbmltYXRlT2ZmPSEwLHRoaXMuX2NhbGN1bGF0ZU5ld01heCgpLHRoaXMuX3JlZnJlc2hWYWx1ZSgpLHRoaXMuX2FuaW1hdGVPZmY9ITE7YnJlYWs7Y2FzZSJyYW5nZSI6dGhpcy5fYW5pbWF0ZU9mZj0hMCx0aGlzLl9yZWZyZXNoKCksdGhpcy5fYW5pbWF0ZU9mZj0hMX19LF9zZXRPcHRpb25EaXNhYmxlZDpmdW5jdGlvbihlKXt0aGlzLl9zdXBlcihlKSx0aGlzLl90b2dnbGVDbGFzcyhudWxsLCJ1aS1zdGF0ZS1kaXNhYmxlZCIsISFlKX0sX3ZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5vcHRpb25zLnZhbHVlO3JldHVybiBlPXRoaXMuX3RyaW1BbGlnblZhbHVlKGUpfSxfdmFsdWVzOmZ1bmN0aW9uKGUpe3ZhciB0LGk7aWYoYXJndW1lbnRzLmxlbmd0aClyZXR1cm4gZT10aGlzLm9wdGlvbnMudmFsdWVzW2VdLGU9dGhpcy5fdHJpbUFsaWduVmFsdWUoZSk7aWYodGhpcy5faGFzTXVsdGlwbGVWYWx1ZXMoKSl7Zm9yKHQ9dGhpcy5vcHRpb25zLnZhbHVlcy5zbGljZSgpLGk9MDtpPHQubGVuZ3RoO2krPTEpdFtpXT10aGlzLl90cmltQWxpZ25WYWx1ZSh0W2ldKTtyZXR1cm4gdH1yZXR1cm5bXX0sX3RyaW1BbGlnblZhbHVlOmZ1bmN0aW9uKGUpe2lmKGU8PXRoaXMuX3ZhbHVlTWluKCkpcmV0dXJuIHRoaXMuX3ZhbHVlTWluKCk7aWYoZT49dGhpcy5fdmFsdWVNYXgoKSlyZXR1cm4gdGhpcy5fdmFsdWVNYXgoKTt2YXIgdD0wPHRoaXMub3B0aW9ucy5zdGVwP3RoaXMub3B0aW9ucy5zdGVwOjEsaT0oZS10aGlzLl92YWx1ZU1pbigpKSV0LGU9ZS1pO3JldHVybiAyKk1hdGguYWJzKGkpPj10JiYoZSs9MDxpP3Q6LXQpLHBhcnNlRmxvYXQoZS50b0ZpeGVkKDUpKX0sX2NhbGN1bGF0ZU5ld01heDpmdW5jdGlvbigpe3ZhciBlPXRoaXMub3B0aW9ucy5tYXgsdD10aGlzLl92YWx1ZU1pbigpLGk9dGhpcy5vcHRpb25zLnN0ZXA7KGU9TWF0aC5yb3VuZCgoZS10KS9pKSppK3QpPnRoaXMub3B0aW9ucy5tYXgmJihlLT1pKSx0aGlzLm1heD1wYXJzZUZsb2F0KGUudG9GaXhlZCh0aGlzLl9wcmVjaXNpb24oKSkpfSxfcHJlY2lzaW9uOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5fcHJlY2lzaW9uT2YodGhpcy5vcHRpb25zLnN0ZXApO3JldHVybiBlPW51bGwhPT10aGlzLm9wdGlvbnMubWluP01hdGgubWF4KGUsdGhpcy5fcHJlY2lzaW9uT2YodGhpcy5vcHRpb25zLm1pbikpOmV9LF9wcmVjaXNpb25PZjpmdW5jdGlvbihlKXt2YXIgdD1lLnRvU3RyaW5nKCksZT10LmluZGV4T2YoIi4iKTtyZXR1cm4tMT09PWU\/MDp0Lmxlbmd0aC1lLTF9LF92YWx1ZU1pbjpmdW5jdGlvbigpe3JldHVybiB0aGlzLm9wdGlvbnMubWlufSxfdmFsdWVNYXg6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tYXh9LF9yZWZyZXNoUmFuZ2U6ZnVuY3Rpb24oZSl7InZlcnRpY2FsIj09PWUmJnRoaXMucmFuZ2UuY3NzKHt3aWR0aDoiIixsZWZ0OiIifSksImhvcml6b250YWwiPT09ZSYmdGhpcy5yYW5nZS5jc3Moe2hlaWdodDoiIixib3R0b206IiJ9KX0sX3JlZnJlc2hWYWx1ZTpmdW5jdGlvbigpe3ZhciB0LGksZSxzLG4sYT10aGlzLm9wdGlvbnMucmFuZ2Usbz10aGlzLm9wdGlvbnMscj10aGlzLGg9IXRoaXMuX2FuaW1hdGVPZmYmJm8uYW5pbWF0ZSxsPXt9O3RoaXMuX2hhc011bHRpcGxlVmFsdWVzKCk\/dGhpcy5oYW5kbGVzLmVhY2goZnVuY3Rpb24oZSl7aT0oci52YWx1ZXMoZSktci5fdmFsdWVNaW4oKSkvKHIuX3ZhbHVlTWF4KCktci5fdmFsdWVNaW4oKSkqMTAwLGxbImhvcml6b250YWwiPT09ci5vcmllbnRhdGlvbj8ibGVmdCI6ImJvdHRvbSJdPWkrIiUiLHUodGhpcykuc3RvcCgxLDEpW2g\/ImFuaW1hdGUiOiJjc3MiXShsLG8uYW5pbWF0ZSksITA9PT1yLm9wdGlvbnMucmFuZ2UmJigiaG9yaXpvbnRhbCI9PT1yLm9yaWVudGF0aW9uPygwPT09ZSYmci5yYW5nZS5zdG9wKDEsMSlbaD8iYW5pbWF0ZSI6ImNzcyJdKHtsZWZ0OmkrIiUifSxvLmFuaW1hdGUpLDE9PT1lJiZyLnJhbmdlW2g\/ImFuaW1hdGUiOiJjc3MiXSh7d2lkdGg6aS10KyIlIn0se3F1ZXVlOiExLGR1cmF0aW9uOm8uYW5pbWF0ZX0pKTooMD09PWUmJnIucmFuZ2Uuc3RvcCgxLDEpW2g\/ImFuaW1hdGUiOiJjc3MiXSh7Ym90dG9tOmkrIiUifSxvLmFuaW1hdGUpLDE9PT1lJiZyLnJhbmdlW2g\/ImFuaW1hdGUiOiJjc3MiXSh7aGVpZ2h0OmktdCsiJSJ9LHtxdWV1ZTohMSxkdXJhdGlvbjpvLmFuaW1hdGV9KSkpLHQ9aX0pOihlPXRoaXMudmFsdWUoKSxzPXRoaXMuX3ZhbHVlTWluKCksbj10aGlzLl92YWx1ZU1heCgpLGk9biE9PXM\/KGUtcykvKG4tcykqMTAwOjAsbFsiaG9yaXpvbnRhbCI9PT10aGlzLm9yaWVudGF0aW9uPyJsZWZ0IjoiYm90dG9tIl09aSsiJSIsdGhpcy5oYW5kbGUuc3RvcCgxLDEpW2g\/ImFuaW1hdGUiOiJjc3MiXShsLG8uYW5pbWF0ZSksIm1pbiI9PT1hJiYiaG9yaXpvbnRhbCI9PT10aGlzLm9yaWVudGF0aW9uJiZ0aGlzLnJhbmdlLnN0b3AoMSwxKVtoPyJhbmltYXRlIjoiY3NzIl0oe3dpZHRoOmkrIiUifSxvLmFuaW1hdGUpLCJtYXgiPT09YSYmImhvcml6b250YWwiPT09dGhpcy5vcmllbnRhdGlvbiYmdGhpcy5yYW5nZS5zdG9wKDEsMSlbaD8iYW5pbWF0ZSI6ImNzcyJdKHt3aWR0aDoxMDAtaSsiJSJ9LG8uYW5pbWF0ZSksIm1pbiI9PT1hJiYidmVydGljYWwiPT09dGhpcy5vcmllbnRhdGlvbiYmdGhpcy5yYW5nZS5zdG9wKDEsMSlbaD8iYW5pbWF0ZSI6ImNzcyJdKHtoZWlnaHQ6aSsiJSJ9LG8uYW5pbWF0ZSksIm1heCI9PT1hJiYidmVydGljYWwiPT09dGhpcy5vcmllbnRhdGlvbiYmdGhpcy5yYW5nZS5zdG9wKDEsMSlbaD8iYW5pbWF0ZSI6ImNzcyJdKHtoZWlnaHQ6MTAwLWkrIiUifSxvLmFuaW1hdGUpKX0sX2hhbmRsZUV2ZW50czp7a2V5ZG93bjpmdW5jdGlvbihlKXt2YXIgdCxpLHMsbj11KGUudGFyZ2V0KS5kYXRhKCJ1aS1zbGlkZXItaGFuZGxlLWluZGV4Iik7c3dpdGNoKGUua2V5Q29kZSl7Y2FzZSB1LnVpLmtleUNvZGUuSE9NRTpjYXNlIHUudWkua2V5Q29kZS5FTkQ6Y2FzZSB1LnVpLmtleUNvZGUuUEFHRV9VUDpjYXNlIHUudWkua2V5Q29kZS5QQUdFX0RPV046Y2FzZSB1LnVpLmtleUNvZGUuVVA6Y2FzZSB1LnVpLmtleUNvZGUuUklHSFQ6Y2FzZSB1LnVpLmtleUNvZGUuRE9XTjpjYXNlIHUudWkua2V5Q29kZS5MRUZUOmlmKGUucHJldmVudERlZmF1bHQoKSwhdGhpcy5fa2V5U2xpZGluZyYmKHRoaXMuX2tleVNsaWRpbmc9ITAsdGhpcy5fYWRkQ2xhc3ModShlLnRhcmdldCksbnVsbCwidWktc3RhdGUtYWN0aXZlIiksITE9PT10aGlzLl9zdGFydChlLG4pKSlyZXR1cm59c3dpdGNoKHM9dGhpcy5vcHRpb25zLnN0ZXAsdD1pPXRoaXMuX2hhc011bHRpcGxlVmFsdWVzKCk\/dGhpcy52YWx1ZXMobik6dGhpcy52YWx1ZSgpLGUua2V5Q29kZSl7Y2FzZSB1LnVpLmtleUNvZGUuSE9NRTppPXRoaXMuX3ZhbHVlTWluKCk7YnJlYWs7Y2FzZSB1LnVpLmtleUNvZGUuRU5EOmk9dGhpcy5fdmFsdWVNYXgoKTticmVhaztjYXNlIHUudWkua2V5Q29kZS5QQUdFX1VQOmk9dGhpcy5fdHJpbUFsaWduVmFsdWUodCsodGhpcy5fdmFsdWVNYXgoKS10aGlzLl92YWx1ZU1pbigpKS90aGlzLm51bVBhZ2VzKTticmVhaztjYXNlIHUudWkua2V5Q29kZS5QQUdFX0RPV046aT10aGlzLl90cmltQWxpZ25WYWx1ZSh0LSh0aGlzLl92YWx1ZU1heCgpLXRoaXMuX3ZhbHVlTWluKCkpL3RoaXMubnVtUGFnZXMpO2JyZWFrO2Nhc2UgdS51aS5rZXlDb2RlLlVQOmNhc2UgdS51aS5rZXlDb2RlLlJJR0hUOmlmKHQ9PT10aGlzLl92YWx1ZU1heCgpKXJldHVybjtpPXRoaXMuX3RyaW1BbGlnblZhbHVlKHQrcyk7YnJlYWs7Y2FzZSB1LnVpLmtleUNvZGUuRE9XTjpjYXNlIHUudWkua2V5Q29kZS5MRUZUOmlmKHQ9PT10aGlzLl92YWx1ZU1pbigpKXJldHVybjtpPXRoaXMuX3RyaW1BbGlnblZhbHVlKHQtcyl9dGhpcy5fc2xpZGUoZSxuLGkpfSxrZXl1cDpmdW5jdGlvbihlKXt2YXIgdD11KGUudGFyZ2V0KS5kYXRhKCJ1aS1zbGlkZXItaGFuZGxlLWluZGV4Iik7dGhpcy5fa2V5U2xpZGluZyYmKHRoaXMuX2tleVNsaWRpbmc9ITEsdGhpcy5fc3RvcChlLHQpLHRoaXMuX2NoYW5nZShlLHQpLHRoaXMuX3JlbW92ZUNsYXNzKHUoZS50YXJnZXQpLG51bGwsInVpLXN0YXRlLWFjdGl2ZSIpKX19fSk7dmFyIGg9dSxsPXt9LGM9bC50b1N0cmluZyxkPS9eKFtcLStdKT1ccyooXGQrXC4\/XGQqKS8sZj1be3JlOi9yZ2JhP1woXHMqKFxkezEsM30pXHMqLFxzKihcZHsxLDN9KVxzKixccyooXGR7MSwzfSlccyooPzosXHMqKFxkPyg\/OlwuXGQrKT8pXHMqKT9cKS8scGFyc2U6ZnVuY3Rpb24oZSl7cmV0dXJuW2VbMV0sZVsyXSxlWzNdLGVbNF1dfX0se3JlOi9yZ2JhP1woXHMqKFxkKyg\/OlwuXGQrKT8pXCVccyosXHMqKFxkKyg\/OlwuXGQrKT8pXCVccyosXHMqKFxkKyg\/OlwuXGQrKT8pXCVccyooPzosXHMqKFxkPyg\/OlwuXGQrKT8pXHMqKT9cKS8scGFyc2U6ZnVuY3Rpb24oZSl7cmV0dXJuWzIuNTUqZVsxXSwyLjU1KmVbMl0sMi41NSplWzNdLGVbNF1dfX0se3JlOi8jKFthLWYwLTldezJ9KShbYS1mMC05XXsyfSkoW2EtZjAtOV17Mn0pKFthLWYwLTldezJ9KT8vLHBhcnNlOmZ1bmN0aW9uKGUpe3JldHVybltwYXJzZUludChlWzFdLDE2KSxwYXJzZUludChlWzJdLDE2KSxwYXJzZUludChlWzNdLDE2KSxlWzRdPyhwYXJzZUludChlWzRdLDE2KS8yNTUpLnRvRml4ZWQoMik6MV19fSx7cmU6LyMoW2EtZjAtOV0pKFthLWYwLTldKShbYS1mMC05XSkoW2EtZjAtOV0pPy8scGFyc2U6ZnVuY3Rpb24oZSl7cmV0dXJuW3BhcnNlSW50KGVbMV0rZVsxXSwxNikscGFyc2VJbnQoZVsyXStlWzJdLDE2KSxwYXJzZUludChlWzNdK2VbM10sMTYpLGVbNF0\/KHBhcnNlSW50KGVbNF0rZVs0XSwxNikvMjU1KS50b0ZpeGVkKDIpOjFdfX0se3JlOi9oc2xhP1woXHMqKFxkKyg\/OlwuXGQrKT8pXHMqLFxzKihcZCsoPzpcLlxkKyk\/KVwlXHMqLFxzKihcZCsoPzpcLlxkKyk\/KVwlXHMqKD86LFxzKihcZD8oPzpcLlxkKyk\/KVxzKik\/XCkvLHNwYWNlOiJoc2xhIixwYXJzZTpmdW5jdGlvbihlKXtyZXR1cm5bZVsxXSxlWzJdLzEwMCxlWzNdLzEwMCxlWzRdXX19XSxwPWguQ29sb3I9ZnVuY3Rpb24oZSx0LGkscyl7cmV0dXJuIG5ldyBoLkNvbG9yLmZuLnBhcnNlKGUsdCxpLHMpfSxnPXtyZ2JhOntwcm9wczp7cmVkOntpZHg6MCx0eXBlOiJieXRlIn0sZ3JlZW46e2lkeDoxLHR5cGU6ImJ5dGUifSxibHVlOntpZHg6Mix0eXBlOiJieXRlIn19fSxoc2xhOntwcm9wczp7aHVlOntpZHg6MCx0eXBlOiJkZWdyZWVzIn0sc2F0dXJhdGlvbjp7aWR4OjEsdHlwZToicGVyY2VudCJ9LGxpZ2h0bmVzczp7aWR4OjIsdHlwZToicGVyY2VudCJ9fX19LG09e2J5dGU6e2Zsb29yOiEwLG1heDoyNTV9LHBlcmNlbnQ6e21heDoxfSxkZWdyZWVzOnttb2Q6MzYwLGZsb29yOiEwfX0sdj1wLnN1cHBvcnQ9e30sXz1oKCI8cD4iKVswXSx5PWguZWFjaDtmdW5jdGlvbiBiKGUpe3JldHVybiBudWxsPT1lP2UrIiI6Im9iamVjdCI9PXR5cGVvZiBlP2xbYy5jYWxsKGUpXXx8Im9iamVjdCI6dHlwZW9mIGV9ZnVuY3Rpb24geChlLHQsaSl7dmFyIHM9bVt0LnR5cGVdfHx7fTtyZXR1cm4gbnVsbD09ZT9pfHwhdC5kZWY\/bnVsbDp0LmRlZjooZT1zLmZsb29yP35+ZTpwYXJzZUZsb2F0KGUpLGlzTmFOKGUpP3QuZGVmOnMubW9kPyhlK3MubW9kKSVzLm1vZDpNYXRoLm1pbihzLm1heCxNYXRoLm1heCgwLGUpKSl9ZnVuY3Rpb24gdyhzKXt2YXIgbj1wKCksYT1uLl9yZ2JhPVtdO3JldHVybiBzPXMudG9Mb3dlckNhc2UoKSx5KGYsZnVuY3Rpb24oZSx0KXt2YXIgaT10LnJlLmV4ZWMocyksaT1pJiZ0LnBhcnNlKGkpLHQ9dC5zcGFjZXx8InJnYmEiO2lmKGkpcmV0dXJuIGk9blt0XShpKSxuW2dbdF0uY2FjaGVdPWlbZ1t0XS5jYWNoZV0sYT1uLl9yZ2JhPWkuX3JnYmEsITF9KSxhLmxlbmd0aD8oIjAsMCwwLDAiPT09YS5qb2luKCkmJmguZXh0ZW5kKGEsSC50cmFuc3BhcmVudCksbik6SFtzXX1mdW5jdGlvbiBDKGUsdCxpKXtyZXR1cm4gNiooaT0oaSsxKSUxKTwxP2UrKHQtZSkqaSo2OjIqaTwxP3Q6MyppPDI\/ZSsodC1lKSooMi8zLWkpKjY6ZX1fLnN0eWxlLmNzc1RleHQ9ImJhY2tncm91bmQtY29sb3I6cmdiYSgxLDEsMSwuNSkiLHYucmdiYT0tMTxfLnN0eWxlLmJhY2tncm91bmRDb2xvci5pbmRleE9mKCJyZ2JhIikseShnLGZ1bmN0aW9uKGUsdCl7dC5jYWNoZT0iXyIrZSx0LnByb3BzLmFscGhhPXtpZHg6Myx0eXBlOiJwZXJjZW50IixkZWY6MX19KSxoLmVhY2goIkJvb2xlYW4gTnVtYmVyIFN0cmluZyBGdW5jdGlvbiBBcnJheSBEYXRlIFJlZ0V4cCBPYmplY3QgRXJyb3IgU3ltYm9sIi5zcGxpdCgiICIpLGZ1bmN0aW9uKGUsdCl7bFsiW29iamVjdCAiK3QrIl0iXT10LnRvTG93ZXJDYXNlKCl9KSwocC5mbj1oLmV4dGVuZChwLnByb3RvdHlwZSx7cGFyc2U6ZnVuY3Rpb24obixlLHQsaSl7aWYodm9pZCAwPT09bilyZXR1cm4gdGhpcy5fcmdiYT1bbnVsbCxudWxsLG51bGwsbnVsbF0sdGhpczsobi5qcXVlcnl8fG4ubm9kZVR5cGUpJiYobj1oKG4pLmNzcyhlKSxlPXZvaWQgMCk7dmFyIGE9dGhpcyxzPWIobiksbz10aGlzLl9yZ2JhPVtdO3JldHVybiB2b2lkIDAhPT1lJiYobj1bbixlLHQsaV0scz0iYXJyYXkiKSwic3RyaW5nIj09PXM\/dGhpcy5wYXJzZSh3KG4pfHxILl9kZWZhdWx0KToiYXJyYXkiPT09cz8oeShnLnJnYmEucHJvcHMsZnVuY3Rpb24oZSx0KXtvW3QuaWR4XT14KG5bdC5pZHhdLHQpfSksdGhpcyk6Im9iamVjdCI9PT1zPyh5KGcsbiBpbnN0YW5jZW9mIHA\/ZnVuY3Rpb24oZSx0KXtuW3QuY2FjaGVdJiYoYVt0LmNhY2hlXT1uW3QuY2FjaGVdLnNsaWNlKCkpfTpmdW5jdGlvbihlLGkpe3ZhciBzPWkuY2FjaGU7eShpLnByb3BzLGZ1bmN0aW9uKGUsdCl7aWYoIWFbc10mJmkudG8pe2lmKCJhbHBoYSI9PT1lfHxudWxsPT1uW2VdKXJldHVybjthW3NdPWkudG8oYS5fcmdiYSl9YVtzXVt0LmlkeF09eChuW2VdLHQsITApfSksYVtzXSYmaC5pbkFycmF5KG51bGwsYVtzXS5zbGljZSgwLDMpKTwwJiYobnVsbD09YVtzXVszXSYmKGFbc11bM109MSksaS5mcm9tJiYoYS5fcmdiYT1pLmZyb20oYVtzXSkpKX0pLHRoaXMpOnZvaWQgMH0saXM6ZnVuY3Rpb24oZSl7dmFyIG49cChlKSxhPSEwLG89dGhpcztyZXR1cm4geShnLGZ1bmN0aW9uKGUsdCl7dmFyIGkscz1uW3QuY2FjaGVdO3JldHVybiBzJiYoaT1vW3QuY2FjaGVdfHx0LnRvJiZ0LnRvKG8uX3JnYmEpfHxbXSx5KHQucHJvcHMsZnVuY3Rpb24oZSx0KXtpZihudWxsIT1zW3QuaWR4XSlyZXR1cm4gYT1zW3QuaWR4XT09PWlbdC5pZHhdfSkpLGF9KSxhfSxfc3BhY2U6ZnVuY3Rpb24oKXt2YXIgaT1bXSxzPXRoaXM7cmV0dXJuIHkoZyxmdW5jdGlvbihlLHQpe3NbdC5jYWNoZV0mJmkucHVzaChlKX0pLGkucG9wKCl9LHRyYW5zaXRpb246ZnVuY3Rpb24oZSxvKXt2YXIgdD0obD1wKGUpKS5fc3BhY2UoKSxpPWdbdF0sZT0wPT09dGhpcy5hbHBoYSgpP3AoInRyYW5zcGFyZW50Iik6dGhpcyxyPWVbaS5jYWNoZV18fGkudG8oZS5fcmdiYSksaD1yLnNsaWNlKCksbD1sW2kuY2FjaGVdO3JldHVybiB5KGkucHJvcHMsZnVuY3Rpb24oZSx0KXt2YXIgaT10LmlkeCxzPXJbaV0sbj1sW2ldLGE9bVt0LnR5cGVdfHx7fTtudWxsIT09biYmKG51bGw9PT1zP2hbaV09bjooYS5tb2QmJihuLXM+YS5tb2QvMj9zKz1hLm1vZDpzLW4+YS5tb2QvMiYmKHMtPWEubW9kKSksaFtpXT14KChuLXMpKm8rcyx0KSkpfSksdGhpc1t0XShoKX0sYmxlbmQ6ZnVuY3Rpb24oZSl7aWYoMT09PXRoaXMuX3JnYmFbM10pcmV0dXJuIHRoaXM7dmFyIHQ9dGhpcy5fcmdiYS5zbGljZSgpLGk9dC5wb3AoKSxzPXAoZSkuX3JnYmE7cmV0dXJuIHAoaC5tYXAodCxmdW5jdGlvbihlLHQpe3JldHVybigxLWkpKnNbdF0raSplfSkpfSx0b1JnYmFTdHJpbmc6ZnVuY3Rpb24oKXt2YXIgZT0icmdiYSgiLHQ9aC5tYXAodGhpcy5fcmdiYSxmdW5jdGlvbihlLHQpe3JldHVybiBudWxsIT1lP2U6Mjx0PzE6MH0pO3JldHVybiAxPT09dFszXSYmKHQucG9wKCksZT0icmdiKCIpLGUrdC5qb2luKCkrIikifSx0b0hzbGFTdHJpbmc6ZnVuY3Rpb24oKXt2YXIgZT0iaHNsYSgiLHQ9aC5tYXAodGhpcy5oc2xhKCksZnVuY3Rpb24oZSx0KXtyZXR1cm4gbnVsbD09ZSYmKGU9Mjx0PzE6MCksZT10JiZ0PDM\/TWF0aC5yb3VuZCgxMDAqZSkrIiUiOmV9KTtyZXR1cm4gMT09PXRbM10mJih0LnBvcCgpLGU9ImhzbCgiKSxlK3Quam9pbigpKyIpIn0sdG9IZXhTdHJpbmc6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fcmdiYS5zbGljZSgpLGk9dC5wb3AoKTtyZXR1cm4gZSYmdC5wdXNoKH5+KDI1NSppKSksIiMiK2gubWFwKHQsZnVuY3Rpb24oZSl7cmV0dXJuIDE9PT0oZT0oZXx8MCkudG9TdHJpbmcoMTYpKS5sZW5ndGg\/IjAiK2U6ZX0pLmpvaW4oIiIpfSx0b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiAwPT09dGhpcy5fcmdiYVszXT8idHJhbnNwYXJlbnQiOnRoaXMudG9SZ2JhU3RyaW5nKCl9fSkpLnBhcnNlLnByb3RvdHlwZT1wLmZuLGcuaHNsYS50bz1mdW5jdGlvbihlKXtpZihudWxsPT1lWzBdfHxudWxsPT1lWzFdfHxudWxsPT1lWzJdKXJldHVybltudWxsLG51bGwsbnVsbCxlWzNdXTt2YXIgdD1lWzBdLzI1NSxpPWVbMV0vMjU1LHM9ZVsyXS8yNTUsbj1lWzNdLGE9TWF0aC5tYXgodCxpLHMpLG89TWF0aC5taW4odCxpLHMpLHI9YS1vLGg9YStvLGU9LjUqaCxpPW89PT1hPzA6dD09PWE\/NjAqKGktcykvciszNjA6aT09PWE\/NjAqKHMtdCkvcisxMjA6NjAqKHQtaSkvcisyNDAsaD0wPT1yPzA6ZTw9LjU\/ci9oOnIvKDItaCk7cmV0dXJuW01hdGgucm91bmQoaSklMzYwLGgsZSxudWxsPT1uPzE6bl19LGcuaHNsYS5mcm9tPWZ1bmN0aW9uKGUpe2lmKG51bGw9PWVbMF18fG51bGw9PWVbMV18fG51bGw9PWVbMl0pcmV0dXJuW251bGwsbnVsbCxudWxsLGVbM11dO3ZhciB0PWVbMF0vMzYwLGk9ZVsxXSxzPWVbMl0sZT1lWzNdLGk9czw9LjU\/cyooMStpKTpzK2ktcyppLHM9MipzLWk7cmV0dXJuW01hdGgucm91bmQoMjU1KkMocyxpLHQrMS8zKSksTWF0aC5yb3VuZCgyNTUqQyhzLGksdCkpLE1hdGgucm91bmQoMjU1KkMocyxpLHQtMS8zKSksZV19LHkoZyxmdW5jdGlvbihoLGUpe3ZhciB0PWUucHJvcHMsYT1lLmNhY2hlLG89ZS50byxyPWUuZnJvbTtwLmZuW2hdPWZ1bmN0aW9uKGUpe2lmKG8mJiF0aGlzW2FdJiYodGhpc1thXT1vKHRoaXMuX3JnYmEpKSx2b2lkIDA9PT1lKXJldHVybiB0aGlzW2FdLnNsaWNlKCk7dmFyIGk9YihlKSxzPSJhcnJheSI9PT1pfHwib2JqZWN0Ij09PWk\/ZTphcmd1bWVudHMsbj10aGlzW2FdLnNsaWNlKCk7cmV0dXJuIHkodCxmdW5jdGlvbihlLHQpe2U9c1sib2JqZWN0Ij09PWk\/ZTp0LmlkeF07bnVsbD09ZSYmKGU9blt0LmlkeF0pLG5bdC5pZHhdPXgoZSx0KX0pLHI\/KChlPXAocihuKSkpW2FdPW4sZSk6cChuKX0seSh0LGZ1bmN0aW9uKG8scil7cC5mbltvXXx8KHAuZm5bb109ZnVuY3Rpb24oZSl7dmFyIHQsaT1iKGUpLHM9ImFscGhhIj09PW8\/dGhpcy5faHNsYT8iaHNsYSI6InJnYmEiOmgsbj10aGlzW3NdKCksYT1uW3IuaWR4XTtyZXR1cm4idW5kZWZpbmVkIj09PWk\/YTooImZ1bmN0aW9uIj09PWkmJihpPWIoZT1lLmNhbGwodGhpcyxhKSkpLG51bGw9PWUmJnIuZW1wdHk\/dGhpczooInN0cmluZyI9PT1pJiYodD1kLmV4ZWMoZSkpJiYoZT1hK3BhcnNlRmxvYXQodFsyXSkqKCIrIj09PXRbMV0\/MTotMSkpLG5bci5pZHhdPWUsdGhpc1tzXShuKSkpfSl9KX0pLChwLmhvb2s9ZnVuY3Rpb24oZSl7ZT1lLnNwbGl0KCIgIik7eShlLGZ1bmN0aW9uKGUsYSl7aC5jc3NIb29rc1thXT17c2V0OmZ1bmN0aW9uKGUsdCl7dmFyIGkscyxuPSIiO2lmKCJ0cmFuc3BhcmVudCIhPT10JiYoInN0cmluZyIhPT1iKHQpfHwoaT13KHQpKSkpe2lmKHQ9cChpfHx0KSwhdi5yZ2JhJiYxIT09dC5fcmdiYVszXSl7Zm9yKHM9ImJhY2tncm91bmRDb2xvciI9PT1hP2UucGFyZW50Tm9kZTplOygiIj09PW58fCJ0cmFuc3BhcmVudCI9PT1uKSYmcyYmcy5zdHlsZTspdHJ5e249aC5jc3MocywiYmFja2dyb3VuZENvbG9yIikscz1zLnBhcmVudE5vZGV9Y2F0Y2goZSl7fXQ9dC5ibGVuZChuJiYidHJhbnNwYXJlbnQiIT09bj9uOiJfZGVmYXVsdCIpfXQ9dC50b1JnYmFTdHJpbmcoKX10cnl7ZS5zdHlsZVthXT10fWNhdGNoKGUpe319fSxoLmZ4LnN0ZXBbYV09ZnVuY3Rpb24oZSl7ZS5jb2xvckluaXR8fChlLnN0YXJ0PXAoZS5lbGVtLGEpLGUuZW5kPXAoZS5lbmQpLGUuY29sb3JJbml0PSEwKSxoLmNzc0hvb2tzW2FdLnNldChlLmVsZW0sZS5zdGFydC50cmFuc2l0aW9uKGUuZW5kLGUucG9zKSl9fSl9KSgiYmFja2dyb3VuZENvbG9yIGJvcmRlckJvdHRvbUNvbG9yIGJvcmRlckxlZnRDb2xvciBib3JkZXJSaWdodENvbG9yIGJvcmRlclRvcENvbG9yIGNvbG9yIGNvbHVtblJ1bGVDb2xvciBvdXRsaW5lQ29sb3IgdGV4dERlY29yYXRpb25Db2xvciB0ZXh0RW1waGFzaXNDb2xvciIpLGguY3NzSG9va3MuYm9yZGVyQ29sb3I9e2V4cGFuZDpmdW5jdGlvbihpKXt2YXIgcz17fTtyZXR1cm4geShbIlRvcCIsIlJpZ2h0IiwiQm90dG9tIiwiTGVmdCJdLGZ1bmN0aW9uKGUsdCl7c1siYm9yZGVyIit0KyJDb2xvciJdPWl9KSxzfX07dmFyIE0sayxELEUsUyxPLEksTixBLFAsSD1oLkNvbG9yLm5hbWVzPXthcXVhOiIjMDBmZmZmIixibGFjazoiIzAwMDAwMCIsYmx1ZToiIzAwMDBmZiIsZnVjaHNpYToiI2ZmMDBmZiIsZ3JheToiIzgwODA4MCIsZ3JlZW46IiMwMDgwMDAiLGxpbWU6IiMwMGZmMDAiLG1hcm9vbjoiIzgwMDAwMCIsbmF2eToiIzAwMDA4MCIsb2xpdmU6IiM4MDgwMDAiLHB1cnBsZToiIzgwMDA4MCIscmVkOiIjZmYwMDAwIixzaWx2ZXI6IiNjMGMwYzAiLHRlYWw6IiMwMDgwODAiLHdoaXRlOiIjZmZmZmZmIix5ZWxsb3c6IiNmZmZmMDAiLHRyYW5zcGFyZW50OltudWxsLG51bGwsbnVsbCwwXSxfZGVmYXVsdDoiI2ZmZmZmZiJ9LFQ9InVpLWVmZmVjdHMtIixXPSJ1aS1lZmZlY3RzLXN0eWxlIixWPSJ1aS1lZmZlY3RzLWFuaW1hdGVkIjtmdW5jdGlvbiBGKGUpe3ZhciB0LGkscz1lLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXc\/ZS5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZSxudWxsKTplLmN1cnJlbnRTdHlsZSxuPXt9O2lmKHMmJnMubGVuZ3RoJiZzWzBdJiZzW3NbMF1dKWZvcihpPXMubGVuZ3RoO2ktLTspInN0cmluZyI9PXR5cGVvZiBzW3Q9c1tpXV0mJihuW3QucmVwbGFjZSgvLShbXGRhLXpdKS9naSxmdW5jdGlvbihlLHQpe3JldHVybiB0LnRvVXBwZXJDYXNlKCl9KV09c1t0XSk7ZWxzZSBmb3IodCBpbiBzKSJzdHJpbmciPT10eXBlb2Ygc1t0XSYmKG5bdF09c1t0XSk7cmV0dXJuIG59ZnVuY3Rpb24gcShlLHQsaSxzKXtyZXR1cm4gZT17ZWZmZWN0OmU9dS5pc1BsYWluT2JqZWN0KGUpPyh0PWUpLmVmZmVjdDplfSwiZnVuY3Rpb24iPT10eXBlb2YodD1udWxsPT10P3t9OnQpJiYocz10LGk9bnVsbCx0PXt9KSwibnVtYmVyIiE9dHlwZW9mIHQmJiF1LmZ4LnNwZWVkc1t0XXx8KHM9aSxpPXQsdD17fSksImZ1bmN0aW9uIj09dHlwZW9mIGkmJihzPWksaT1udWxsKSx0JiZ1LmV4dGVuZChlLHQpLGk9aXx8dC5kdXJhdGlvbixlLmR1cmF0aW9uPXUuZngub2ZmPzA6Im51bWJlciI9PXR5cGVvZiBpP2k6aSBpbiB1LmZ4LnNwZWVkcz91LmZ4LnNwZWVkc1tpXTp1LmZ4LnNwZWVkcy5fZGVmYXVsdCxlLmNvbXBsZXRlPXN8fHQuY29tcGxldGUsZX1mdW5jdGlvbiBMKGUpe3JldHVybiFlfHwibnVtYmVyIj09dHlwZW9mIGV8fHUuZnguc3BlZWRzW2VdfHwoInN0cmluZyI9PXR5cGVvZiBlJiYhdS5lZmZlY3RzLmVmZmVjdFtlXXx8KCJmdW5jdGlvbiI9PXR5cGVvZiBlfHwib2JqZWN0Ij09dHlwZW9mIGUmJiFlLmVmZmVjdCkpfWZ1bmN0aW9uIEIoZSx0KXt2YXIgaT10Lm91dGVyV2lkdGgoKSx0PXQub3V0ZXJIZWlnaHQoKSxlPS9ecmVjdFwoKC0\/XGQqXC4\/XGQqcHh8LT9cZCslfGF1dG8pLD9ccyooLT9cZCpcLj9cZCpweHwtP1xkKyV8YXV0byksP1xzKigtP1xkKlwuP1xkKnB4fC0\/XGQrJXxhdXRvKSw\/XHMqKC0\/XGQqXC4\/XGQqcHh8LT9cZCslfGF1dG8pXCkkLy5leGVjKGUpfHxbIiIsMCxpLHQsMF07cmV0dXJue3RvcDpwYXJzZUZsb2F0KGVbMV0pfHwwLHJpZ2h0OiJhdXRvIj09PWVbMl0\/aTpwYXJzZUZsb2F0KGVbMl0pLGJvdHRvbToiYXV0byI9PT1lWzNdP3Q6cGFyc2VGbG9hdChlWzNdKSxsZWZ0OnBhcnNlRmxvYXQoZVs0XSl8fDB9fXUuZWZmZWN0cz17ZWZmZWN0Ont9fSxFPVsiYWRkIiwicmVtb3ZlIiwidG9nZ2xlIl0sUz17Ym9yZGVyOjEsYm9yZGVyQm90dG9tOjEsYm9yZGVyQ29sb3I6MSxib3JkZXJMZWZ0OjEsYm9yZGVyUmlnaHQ6MSxib3JkZXJUb3A6MSxib3JkZXJXaWR0aDoxLG1hcmdpbjoxLHBhZGRpbmc6MX0sdS5lYWNoKFsiYm9yZGVyTGVmdFN0eWxlIiwiYm9yZGVyUmlnaHRTdHlsZSIsImJvcmRlckJvdHRvbVN0eWxlIiwiYm9yZGVyVG9wU3R5bGUiXSxmdW5jdGlvbihlLHQpe3UuZnguc3RlcFt0XT1mdW5jdGlvbihlKXsoIm5vbmUiIT09ZS5lbmQmJiFlLnNldEF0dHJ8fDE9PT1lLnBvcyYmIWUuc2V0QXR0cikmJihoLnN0eWxlKGUuZWxlbSx0LGUuZW5kKSxlLnNldEF0dHI9ITApfX0pLHUuZm4uYWRkQmFja3x8KHUuZm4uYWRkQmFjaz1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5hZGQobnVsbD09ZT90aGlzLnByZXZPYmplY3Q6dGhpcy5wcmV2T2JqZWN0LmZpbHRlcihlKSl9KSx1LmVmZmVjdHMuYW5pbWF0ZUNsYXNzPWZ1bmN0aW9uKG4sZSx0LGkpe3ZhciBhPXUuc3BlZWQoZSx0LGkpO3JldHVybiB0aGlzLnF1ZXVlKGZ1bmN0aW9uKCl7dmFyIGk9dSh0aGlzKSxlPWkuYXR0cigiY2xhc3MiKXx8IiIsdD0odD1hLmNoaWxkcmVuP2kuZmluZCgiKiIpLmFkZEJhY2soKTppKS5tYXAoZnVuY3Rpb24oKXtyZXR1cm57ZWw6dSh0aGlzKSxzdGFydDpGKHRoaXMpfX0pLHM9ZnVuY3Rpb24oKXt1LmVhY2goRSxmdW5jdGlvbihlLHQpe25bdF0mJmlbdCsiQ2xhc3MiXShuW3RdKX0pfTtzKCksdD10Lm1hcChmdW5jdGlvbigpe3JldHVybiB0aGlzLmVuZD1GKHRoaXMuZWxbMF0pLHRoaXMuZGlmZj1mdW5jdGlvbihlLHQpe3ZhciBpLHMsbj17fTtmb3IoaSBpbiB0KXM9dFtpXSxlW2ldIT09cyYmKFNbaV18fCF1LmZ4LnN0ZXBbaV0mJmlzTmFOKHBhcnNlRmxvYXQocykpfHwobltpXT1zKSk7cmV0dXJuIG59KHRoaXMuc3RhcnQsdGhpcy5lbmQpLHRoaXN9KSxpLmF0dHIoImNsYXNzIixlKSx0PXQubWFwKGZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PXUuRGVmZXJyZWQoKSxpPXUuZXh0ZW5kKHt9LGEse3F1ZXVlOiExLGNvbXBsZXRlOmZ1bmN0aW9uKCl7dC5yZXNvbHZlKGUpfX0pO3JldHVybiB0aGlzLmVsLmFuaW1hdGUodGhpcy5kaWZmLGkpLHQucHJvbWlzZSgpfSksdS53aGVuLmFwcGx5KHUsdC5nZXQoKSkuZG9uZShmdW5jdGlvbigpe3MoKSx1LmVhY2goYXJndW1lbnRzLGZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5lbDt1LmVhY2godGhpcy5kaWZmLGZ1bmN0aW9uKGUpe3QuY3NzKGUsIiIpfSl9KSxhLmNvbXBsZXRlLmNhbGwoaVswXSl9KX0pfSx1LmZuLmV4dGVuZCh7YWRkQ2xhc3M6KEQ9dS5mbi5hZGRDbGFzcyxmdW5jdGlvbihlLHQsaSxzKXtyZXR1cm4gdD91LmVmZmVjdHMuYW5pbWF0ZUNsYXNzLmNhbGwodGhpcyx7YWRkOmV9LHQsaSxzKTpELmFwcGx5KHRoaXMsYXJndW1lbnRzKX0pLHJlbW92ZUNsYXNzOihrPXUuZm4ucmVtb3ZlQ2xhc3MsZnVuY3Rpb24oZSx0LGkscyl7cmV0dXJuIDE8YXJndW1lbnRzLmxlbmd0aD91LmVmZmVjdHMuYW5pbWF0ZUNsYXNzLmNhbGwodGhpcyx7cmVtb3ZlOmV9LHQsaSxzKTprLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0pLHRvZ2dsZUNsYXNzOihNPXUuZm4udG9nZ2xlQ2xhc3MsZnVuY3Rpb24oZSx0LGkscyxuKXtyZXR1cm4iYm9vbGVhbiI9PXR5cGVvZiB0fHx2b2lkIDA9PT10P2k\/dS5lZmZlY3RzLmFuaW1hdGVDbGFzcy5jYWxsKHRoaXMsdD97YWRkOmV9OntyZW1vdmU6ZX0saSxzLG4pOk0uYXBwbHkodGhpcyxhcmd1bWVudHMpOnUuZWZmZWN0cy5hbmltYXRlQ2xhc3MuY2FsbCh0aGlzLHt0b2dnbGU6ZX0sdCxpLHMpfSksc3dpdGNoQ2xhc3M6ZnVuY3Rpb24oZSx0LGkscyxuKXtyZXR1cm4gdS5lZmZlY3RzLmFuaW1hdGVDbGFzcy5jYWxsKHRoaXMse2FkZDp0LHJlbW92ZTplfSxpLHMsbil9fSksdS5leHByJiZ1LmV4cHIucHNldWRvcyYmdS5leHByLnBzZXVkb3MuYW5pbWF0ZWQmJih1LmV4cHIucHNldWRvcy5hbmltYXRlZD0oTz11LmV4cHIucHNldWRvcy5hbmltYXRlZCxmdW5jdGlvbihlKXtyZXR1cm4hIXUoZSkuZGF0YShWKXx8TyhlKX0pKSwhMSE9PXUudWlCYWNrQ29tcGF0JiZ1LmV4dGVuZCh1LmVmZmVjdHMse3NhdmU6ZnVuY3Rpb24oZSx0KXtmb3IodmFyIGk9MCxzPXQubGVuZ3RoO2k8cztpKyspbnVsbCE9PXRbaV0mJmUuZGF0YShUK3RbaV0sZVswXS5zdHlsZVt0W2ldXSl9LHJlc3RvcmU6ZnVuY3Rpb24oZSx0KXtmb3IodmFyIGkscz0wLG49dC5sZW5ndGg7czxuO3MrKyludWxsIT09dFtzXSYmKGk9ZS5kYXRhKFQrdFtzXSksZS5jc3ModFtzXSxpKSl9LHNldE1vZGU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdD0idG9nZ2xlIj09PXQ\/ZS5pcygiOmhpZGRlbiIpPyJzaG93IjoiaGlkZSI6dH0sY3JlYXRlV3JhcHBlcjpmdW5jdGlvbihpKXtpZihpLnBhcmVudCgpLmlzKCIudWktZWZmZWN0cy13cmFwcGVyIikpcmV0dXJuIGkucGFyZW50KCk7dmFyIHM9e3dpZHRoOmkub3V0ZXJXaWR0aCghMCksaGVpZ2h0Omkub3V0ZXJIZWlnaHQoITApLGZsb2F0OmkuY3NzKCJmbG9hdCIpfSxlPXUoIjxkaXY+PC9kaXY+IikuYWRkQ2xhc3MoInVpLWVmZmVjdHMtd3JhcHBlciIpLmNzcyh7Zm9udFNpemU6IjEwMCUiLGJhY2tncm91bmQ6InRyYW5zcGFyZW50Iixib3JkZXI6Im5vbmUiLG1hcmdpbjowLHBhZGRpbmc6MH0pLHQ9e3dpZHRoOmkud2lkdGgoKSxoZWlnaHQ6aS5oZWlnaHQoKX0sbj1kb2N1bWVudC5hY3RpdmVFbGVtZW50O3RyeXtuLmlkfWNhdGNoKGUpe249ZG9jdW1lbnQuYm9keX1yZXR1cm4gaS53cmFwKGUpLGlbMF0hPT1uJiYhdS5jb250YWlucyhpWzBdLG4pfHx1KG4pLnRyaWdnZXIoImZvY3VzIiksZT1pLnBhcmVudCgpLCJzdGF0aWMiPT09aS5jc3MoInBvc2l0aW9uIik\/KGUuY3NzKHtwb3NpdGlvbjoicmVsYXRpdmUifSksaS5jc3Moe3Bvc2l0aW9uOiJyZWxhdGl2ZSJ9KSk6KHUuZXh0ZW5kKHMse3Bvc2l0aW9uOmkuY3NzKCJwb3NpdGlvbiIpLHpJbmRleDppLmNzcygiei1pbmRleCIpfSksdS5lYWNoKFsidG9wIiwibGVmdCIsImJvdHRvbSIsInJpZ2h0Il0sZnVuY3Rpb24oZSx0KXtzW3RdPWkuY3NzKHQpLGlzTmFOKHBhcnNlSW50KHNbdF0sMTApKSYmKHNbdF09ImF1dG8iKX0pLGkuY3NzKHtwb3NpdGlvbjoicmVsYXRpdmUiLHRvcDowLGxlZnQ6MCxyaWdodDoiYXV0byIsYm90dG9tOiJhdXRvIn0pKSxpLmNzcyh0KSxlLmNzcyhzKS5zaG93KCl9LHJlbW92ZVdyYXBwZXI6ZnVuY3Rpb24oZSl7dmFyIHQ9ZG9jdW1lbnQuYWN0aXZlRWxlbWVudDtyZXR1cm4gZS5wYXJlbnQoKS5pcygiLnVpLWVmZmVjdHMtd3JhcHBlciIpJiYoZS5wYXJlbnQoKS5yZXBsYWNlV2l0aChlKSxlWzBdIT09dCYmIXUuY29udGFpbnMoZVswXSx0KXx8dSh0KS50cmlnZ2VyKCJmb2N1cyIpKSxlfX0pLHUuZXh0ZW5kKHUuZWZmZWN0cyx7dmVyc2lvbjoiMS4xMy4yIixkZWZpbmU6ZnVuY3Rpb24oZSx0LGkpe3JldHVybiBpfHwoaT10LHQ9ImVmZmVjdCIpLHUuZWZmZWN0cy5lZmZlY3RbZV09aSx1LmVmZmVjdHMuZWZmZWN0W2VdLm1vZGU9dCxpfSxzY2FsZWREaW1lbnNpb25zOmZ1bmN0aW9uKGUsdCxpKXtpZigwPT09dClyZXR1cm57aGVpZ2h0OjAsd2lkdGg6MCxvdXRlckhlaWdodDowLG91dGVyV2lkdGg6MH07dmFyIHM9Imhvcml6b250YWwiIT09aT8odHx8MTAwKS8xMDA6MSx0PSJ2ZXJ0aWNhbCIhPT1pPyh0fHwxMDApLzEwMDoxO3JldHVybntoZWlnaHQ6ZS5oZWlnaHQoKSp0LHdpZHRoOmUud2lkdGgoKSpzLG91dGVySGVpZ2h0OmUub3V0ZXJIZWlnaHQoKSp0LG91dGVyV2lkdGg6ZS5vdXRlcldpZHRoKCkqc319LGNsaXBUb0JveDpmdW5jdGlvbihlKXtyZXR1cm57d2lkdGg6ZS5jbGlwLnJpZ2h0LWUuY2xpcC5sZWZ0LGhlaWdodDplLmNsaXAuYm90dG9tLWUuY2xpcC50b3AsbGVmdDplLmNsaXAubGVmdCx0b3A6ZS5jbGlwLnRvcH19LHVuc2hpZnQ6ZnVuY3Rpb24oZSx0LGkpe3ZhciBzPWUucXVldWUoKTsxPHQmJnMuc3BsaWNlLmFwcGx5KHMsWzEsMF0uY29uY2F0KHMuc3BsaWNlKHQsaSkpKSxlLmRlcXVldWUoKX0sc2F2ZVN0eWxlOmZ1bmN0aW9uKGUpe2UuZGF0YShXLGVbMF0uc3R5bGUuY3NzVGV4dCl9LHJlc3RvcmVTdHlsZTpmdW5jdGlvbihlKXtlWzBdLnN0eWxlLmNzc1RleHQ9ZS5kYXRhKFcpfHwiIixlLnJlbW92ZURhdGEoVyl9LG1vZGU6ZnVuY3Rpb24oZSx0KXtlPWUuaXMoIjpoaWRkZW4iKTtyZXR1cm4idG9nZ2xlIj09PXQmJih0PWU\/InNob3ciOiJoaWRlIiksdD0oZT8iaGlkZSI9PT10OiJzaG93Ij09PXQpPyJub25lIjp0fSxnZXRCYXNlbGluZTpmdW5jdGlvbihlLHQpe3ZhciBpLHM7c3dpdGNoKGVbMF0pe2Nhc2UidG9wIjppPTA7YnJlYWs7Y2FzZSJtaWRkbGUiOmk9LjU7YnJlYWs7Y2FzZSJib3R0b20iOmk9MTticmVhaztkZWZhdWx0Omk9ZVswXS90LmhlaWdodH1zd2l0Y2goZVsxXSl7Y2FzZSJsZWZ0IjpzPTA7YnJlYWs7Y2FzZSJjZW50ZXIiOnM9LjU7YnJlYWs7Y2FzZSJyaWdodCI6cz0xO2JyZWFrO2RlZmF1bHQ6cz1lWzFdL3Qud2lkdGh9cmV0dXJue3g6cyx5Oml9fSxjcmVhdGVQbGFjZWhvbGRlcjpmdW5jdGlvbihlKXt2YXIgdCxpPWUuY3NzKCJwb3NpdGlvbiIpLHM9ZS5wb3NpdGlvbigpO3JldHVybiBlLmNzcyh7bWFyZ2luVG9wOmUuY3NzKCJtYXJnaW5Ub3AiKSxtYXJnaW5Cb3R0b206ZS5jc3MoIm1hcmdpbkJvdHRvbSIpLG1hcmdpbkxlZnQ6ZS5jc3MoIm1hcmdpbkxlZnQiKSxtYXJnaW5SaWdodDplLmNzcygibWFyZ2luUmlnaHQiKX0pLm91dGVyV2lkdGgoZS5vdXRlcldpZHRoKCkpLm91dGVySGVpZ2h0KGUub3V0ZXJIZWlnaHQoKSksL14oc3RhdGljfHJlbGF0aXZlKS8udGVzdChpKSYmKGk9ImFic29sdXRlIix0PXUoIjwiK2VbMF0ubm9kZU5hbWUrIj4iKS5pbnNlcnRBZnRlcihlKS5jc3Moe2Rpc3BsYXk6L14oaW5saW5lfHJ1YnkpLy50ZXN0KGUuY3NzKCJkaXNwbGF5IikpPyJpbmxpbmUtYmxvY2siOiJibG9jayIsdmlzaWJpbGl0eToiaGlkZGVuIixtYXJnaW5Ub3A6ZS5jc3MoIm1hcmdpblRvcCIpLG1hcmdpbkJvdHRvbTplLmNzcygibWFyZ2luQm90dG9tIiksbWFyZ2luTGVmdDplLmNzcygibWFyZ2luTGVmdCIpLG1hcmdpblJpZ2h0OmUuY3NzKCJtYXJnaW5SaWdodCIpLGZsb2F0OmUuY3NzKCJmbG9hdCIpfSkub3V0ZXJXaWR0aChlLm91dGVyV2lkdGgoKSkub3V0ZXJIZWlnaHQoZS5vdXRlckhlaWdodCgpKS5hZGRDbGFzcygidWktZWZmZWN0cy1wbGFjZWhvbGRlciIpLGUuZGF0YShUKyJwbGFjZWhvbGRlciIsdCkpLGUuY3NzKHtwb3NpdGlvbjppLGxlZnQ6cy5sZWZ0LHRvcDpzLnRvcH0pLHR9LHJlbW92ZVBsYWNlaG9sZGVyOmZ1bmN0aW9uKGUpe3ZhciB0PVQrInBsYWNlaG9sZGVyIixpPWUuZGF0YSh0KTtpJiYoaS5yZW1vdmUoKSxlLnJlbW92ZURhdGEodCkpfSxjbGVhblVwOmZ1bmN0aW9uKGUpe3UuZWZmZWN0cy5yZXN0b3JlU3R5bGUoZSksdS5lZmZlY3RzLnJlbW92ZVBsYWNlaG9sZGVyKGUpfSxzZXRUcmFuc2l0aW9uOmZ1bmN0aW9uKHMsZSxuLGEpe3JldHVybiBhPWF8fHt9LHUuZWFjaChlLGZ1bmN0aW9uKGUsdCl7dmFyIGk9cy5jc3NVbml0KHQpOzA8aVswXSYmKGFbdF09aVswXSpuK2lbMV0pfSksYX19KSx1LmZuLmV4dGVuZCh7ZWZmZWN0OmZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlKXt2YXIgdD11KHRoaXMpLGk9dS5lZmZlY3RzLm1vZGUodCxyKXx8YTt0LmRhdGEoViwhMCksaC5wdXNoKGkpLGEmJigic2hvdyI9PT1pfHxpPT09YSYmImhpZGUiPT09aSkmJnQuc2hvdygpLGEmJiJub25lIj09PWl8fHUuZWZmZWN0cy5zYXZlU3R5bGUodCksImZ1bmN0aW9uIj09dHlwZW9mIGUmJmUoKX12YXIgcz1xLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxuPXUuZWZmZWN0cy5lZmZlY3Rbcy5lZmZlY3RdLGE9bi5tb2RlLHQ9cy5xdWV1ZSxpPXR8fCJmeCIsbz1zLmNvbXBsZXRlLHI9cy5tb2RlLGg9W107cmV0dXJuIHUuZngub2ZmfHwhbj9yP3RoaXNbcl0ocy5kdXJhdGlvbixvKTp0aGlzLmVhY2goZnVuY3Rpb24oKXtvJiZvLmNhbGwodGhpcyl9KTohMT09PXQ\/dGhpcy5lYWNoKGUpLmVhY2gobCk6dGhpcy5xdWV1ZShpLGUpLnF1ZXVlKGksbCk7ZnVuY3Rpb24gbChlKXt2YXIgdD11KHRoaXMpO2Z1bmN0aW9uIGkoKXsiZnVuY3Rpb24iPT10eXBlb2YgbyYmby5jYWxsKHRbMF0pLCJmdW5jdGlvbiI9PXR5cGVvZiBlJiZlKCl9cy5tb2RlPWguc2hpZnQoKSwhMT09PXUudWlCYWNrQ29tcGF0fHxhPyJub25lIj09PXMubW9kZT8odFtyXSgpLGkoKSk6bi5jYWxsKHRbMF0scyxmdW5jdGlvbigpe3QucmVtb3ZlRGF0YShWKSx1LmVmZmVjdHMuY2xlYW5VcCh0KSwiaGlkZSI9PT1zLm1vZGUmJnQuaGlkZSgpLGkoKX0pOih0LmlzKCI6aGlkZGVuIik\/ImhpZGUiPT09cjoic2hvdyI9PT1yKT8odFtyXSgpLGkoKSk6bi5jYWxsKHRbMF0scyxpKX19LHNob3c6KEE9dS5mbi5zaG93LGZ1bmN0aW9uKGUpe2lmKEwoZSkpcmV0dXJuIEEuYXBwbHkodGhpcyxhcmd1bWVudHMpO2U9cS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGUubW9kZT0ic2hvdyIsdGhpcy5lZmZlY3QuY2FsbCh0aGlzLGUpfSksaGlkZTooTj11LmZuLmhpZGUsZnVuY3Rpb24oZSl7aWYoTChlKSlyZXR1cm4gTi5hcHBseSh0aGlzLGFyZ3VtZW50cyk7ZT1xLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gZS5tb2RlPSJoaWRlIix0aGlzLmVmZmVjdC5jYWxsKHRoaXMsZSl9KSx0b2dnbGU6KEk9dS5mbi50b2dnbGUsZnVuY3Rpb24oZSl7aWYoTChlKXx8ImJvb2xlYW4iPT10eXBlb2YgZSlyZXR1cm4gSS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7ZT1xLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gZS5tb2RlPSJ0b2dnbGUiLHRoaXMuZWZmZWN0LmNhbGwodGhpcyxlKX0pLGNzc1VuaXQ6ZnVuY3Rpb24oZSl7dmFyIGk9dGhpcy5jc3MoZSkscz1bXTtyZXR1cm4gdS5lYWNoKFsiZW0iLCJweCIsIiUiLCJwdCJdLGZ1bmN0aW9uKGUsdCl7MDxpLmluZGV4T2YodCkmJihzPVtwYXJzZUZsb2F0KGkpLHRdKX0pLHN9LGNzc0NsaXA6ZnVuY3Rpb24oZSl7cmV0dXJuIGU\/dGhpcy5jc3MoImNsaXAiLCJyZWN0KCIrZS50b3ArInB4ICIrZS5yaWdodCsicHggIitlLmJvdHRvbSsicHggIitlLmxlZnQrInB4KSIpOkIodGhpcy5jc3MoImNsaXAiKSx0aGlzKX0sdHJhbnNmZXI6ZnVuY3Rpb24oZSx0KXt2YXIgaT11KHRoaXMpLHM9dShlLnRvKSxuPSJmaXhlZCI9PT1zLmNzcygicG9zaXRpb24iKSxhPXUoImJvZHkiKSxvPW4\/YS5zY3JvbGxUb3AoKTowLHI9bj9hLnNjcm9sbExlZnQoKTowLGE9cy5vZmZzZXQoKSxhPXt0b3A6YS50b3AtbyxsZWZ0OmEubGVmdC1yLGhlaWdodDpzLmlubmVySGVpZ2h0KCksd2lkdGg6cy5pbm5lcldpZHRoKCl9LHM9aS5vZmZzZXQoKSxoPXUoIjxkaXYgY2xhc3M9J3VpLWVmZmVjdHMtdHJhbnNmZXInPjwvZGl2PiIpO2guYXBwZW5kVG8oImJvZHkiKS5hZGRDbGFzcyhlLmNsYXNzTmFtZSkuY3NzKHt0b3A6cy50b3AtbyxsZWZ0OnMubGVmdC1yLGhlaWdodDppLmlubmVySGVpZ2h0KCksd2lkdGg6aS5pbm5lcldpZHRoKCkscG9zaXRpb246bj8iZml4ZWQiOiJhYnNvbHV0ZSJ9KS5hbmltYXRlKGEsZS5kdXJhdGlvbixlLmVhc2luZyxmdW5jdGlvbigpe2gucmVtb3ZlKCksImZ1bmN0aW9uIj09dHlwZW9mIHQmJnQoKX0pfX0pLHUuZnguc3RlcC5jbGlwPWZ1bmN0aW9uKGUpe2UuY2xpcEluaXR8fChlLnN0YXJ0PXUoZS5lbGVtKS5jc3NDbGlwKCksInN0cmluZyI9PXR5cGVvZiBlLmVuZCYmKGUuZW5kPUIoZS5lbmQsZS5lbGVtKSksZS5jbGlwSW5pdD0hMCksdShlLmVsZW0pLmNzc0NsaXAoe3RvcDplLnBvcyooZS5lbmQudG9wLWUuc3RhcnQudG9wKStlLnN0YXJ0LnRvcCxyaWdodDplLnBvcyooZS5lbmQucmlnaHQtZS5zdGFydC5yaWdodCkrZS5zdGFydC5yaWdodCxib3R0b206ZS5wb3MqKGUuZW5kLmJvdHRvbS1lLnN0YXJ0LmJvdHRvbSkrZS5zdGFydC5ib3R0b20sbGVmdDplLnBvcyooZS5lbmQubGVmdC1lLnN0YXJ0LmxlZnQpK2Uuc3RhcnQubGVmdH0pfSxQPXt9LHUuZWFjaChbIlF1YWQiLCJDdWJpYyIsIlF1YXJ0IiwiUXVpbnQiLCJFeHBvIl0sZnVuY3Rpb24odCxlKXtQW2VdPWZ1bmN0aW9uKGUpe3JldHVybiBNYXRoLnBvdyhlLHQrMil9fSksdS5leHRlbmQoUCx7U2luZTpmdW5jdGlvbihlKXtyZXR1cm4gMS1NYXRoLmNvcyhlKk1hdGguUEkvMil9LENpcmM6ZnVuY3Rpb24oZSl7cmV0dXJuIDEtTWF0aC5zcXJ0KDEtZSplKX0sRWxhc3RpYzpmdW5jdGlvbihlKXtyZXR1cm4gMD09PWV8fDE9PT1lP2U6LU1hdGgucG93KDIsOCooZS0xKSkqTWF0aC5zaW4oKDgwKihlLTEpLTcuNSkqTWF0aC5QSS8xNSl9LEJhY2s6ZnVuY3Rpb24oZSl7cmV0dXJuIGUqZSooMyplLTIpfSxCb3VuY2U6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0LGk9NDtlPCgodD1NYXRoLnBvdygyLC0taSkpLTEpLzExOyk7cmV0dXJuIDEvTWF0aC5wb3coNCwzLWkpLTcuNTYyNSpNYXRoLnBvdygoMyp0LTIpLzIyLWUsMil9fSksdS5lYWNoKFAsZnVuY3Rpb24oZSx0KXt1LmVhc2luZ1siZWFzZUluIitlXT10LHUuZWFzaW5nWyJlYXNlT3V0IitlXT1mdW5jdGlvbihlKXtyZXR1cm4gMS10KDEtZSl9LHUuZWFzaW5nWyJlYXNlSW5PdXQiK2VdPWZ1bmN0aW9uKGUpe3JldHVybiBlPC41P3QoMiplKS8yOjEtdCgtMiplKzIpLzJ9fSk7dS5lZmZlY3RzfSk7Ci8qKiAvbS9qcy92YW5pbGxhanMvc3RvcmUuanMgKiovCnZhciBfX19kMmNfc3RvcmVqc19jX29uPSIyMDI2LTAyLTIwIDExOjMwOjEwIjsndXNlIHN0cmljdCc7dmFyICRqc2NvbXA9JGpzY29tcHx8e307JGpzY29tcC5zY29wZT17fTskanNjb21wLkFTU1VNRV9FUzU9ITE7JGpzY29tcC5BU1NVTUVfTk9fTkFUSVZFX01BUD0hMTskanNjb21wLkFTU1VNRV9OT19OQVRJVkVfU0VUPSExOyRqc2NvbXAuU0lNUExFX0ZST1VORF9QT0xZRklMTD0hMTskanNjb21wLklTT0xBVEVfUE9MWUZJTExTPSExOyRqc2NvbXAuRk9SQ0VfUE9MWUZJTExfUFJPTUlTRT0hMTskanNjb21wLkZPUkNFX1BPTFlGSUxMX1BST01JU0VfV0hFTl9OT19VTkhBTkRMRURfUkVKRUNUSU9OPSExOyRqc2NvbXAuZGVmaW5lUHJvcGVydHk9JGpzY29tcC5BU1NVTUVfRVM1fHwiZnVuY3Rpb24iPT10eXBlb2YgT2JqZWN0LmRlZmluZVByb3BlcnRpZXM\/T2JqZWN0LmRlZmluZVByb3BlcnR5OmZ1bmN0aW9uKGEsYixjKXtpZihhPT1BcnJheS5wcm90b3R5cGV8fGE9PU9iamVjdC5wcm90b3R5cGUpcmV0dXJuIGE7YVtiXT1jLnZhbHVlO3JldHVybiBhfTsKJGpzY29tcC5nZXRHbG9iYWw9ZnVuY3Rpb24oYSl7YT1bIm9iamVjdCI9PXR5cGVvZiBnbG9iYWxUaGlzJiZnbG9iYWxUaGlzLGEsIm9iamVjdCI9PXR5cGVvZiB3aW5kb3cmJndpbmRvdywib2JqZWN0Ij09dHlwZW9mIHNlbGYmJnNlbGYsIm9iamVjdCI9PXR5cGVvZiBnbG9iYWwmJmdsb2JhbF07Zm9yKHZhciBiPTA7YjxhLmxlbmd0aDsrK2Ipe3ZhciBjPWFbYl07aWYoYyYmYy5NYXRoPT1NYXRoKXJldHVybiBjfXRocm93IEVycm9yKCJDYW5ub3QgZmluZCBnbG9iYWwgb2JqZWN0Iik7fTskanNjb21wLmdsb2JhbD0kanNjb21wLmdldEdsb2JhbCh0aGlzKTskanNjb21wLklTX1NZTUJPTF9OQVRJVkU9ImZ1bmN0aW9uIj09PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT09dHlwZW9mIFN5bWJvbCgieCIpOyRqc2NvbXAuVFJVU1RfRVM2X1BPTFlGSUxMUz0hJGpzY29tcC5JU09MQVRFX1BPTFlGSUxMU3x8JGpzY29tcC5JU19TWU1CT0xfTkFUSVZFOyRqc2NvbXAucG9seWZpbGxzPXt9OwokanNjb21wLnByb3BlcnR5VG9Qb2x5ZmlsbFN5bWJvbD17fTskanNjb21wLlBPTFlGSUxMX1BSRUZJWD0iJGpzY3AkIjt2YXIgJGpzY29tcCRsb29rdXBQb2x5ZmlsbGVkVmFsdWU9ZnVuY3Rpb24oYSxiKXt2YXIgYz0kanNjb21wLnByb3BlcnR5VG9Qb2x5ZmlsbFN5bWJvbFtiXTtpZihudWxsPT1jKXJldHVybiBhW2JdO2M9YVtjXTtyZXR1cm4gdm9pZCAwIT09Yz9jOmFbYl19OyRqc2NvbXAucG9seWZpbGw9ZnVuY3Rpb24oYSxiLGMsZCl7YiYmKCRqc2NvbXAuSVNPTEFURV9QT0xZRklMTFM\/JGpzY29tcC5wb2x5ZmlsbElzb2xhdGVkKGEsYixjLGQpOiRqc2NvbXAucG9seWZpbGxVbmlzb2xhdGVkKGEsYixjLGQpKX07CiRqc2NvbXAucG9seWZpbGxVbmlzb2xhdGVkPWZ1bmN0aW9uKGEsYixjLGQpe2M9JGpzY29tcC5nbG9iYWw7YT1hLnNwbGl0KCIuIik7Zm9yKGQ9MDtkPGEubGVuZ3RoLTE7ZCsrKXt2YXIgZT1hW2RdO2lmKCEoZSBpbiBjKSlyZXR1cm47Yz1jW2VdfWE9YVthLmxlbmd0aC0xXTtkPWNbYV07Yj1iKGQpO2IhPWQmJm51bGwhPWImJiRqc2NvbXAuZGVmaW5lUHJvcGVydHkoYyxhLHtjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6Yn0pfTsKJGpzY29tcC5wb2x5ZmlsbElzb2xhdGVkPWZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPWEuc3BsaXQoIi4iKTthPTE9PT1lLmxlbmd0aDtkPWVbMF07ZD0hYSYmZCBpbiAkanNjb21wLnBvbHlmaWxscz8kanNjb21wLnBvbHlmaWxsczokanNjb21wLmdsb2JhbDtmb3IodmFyIGY9MDtmPGUubGVuZ3RoLTE7ZisrKXt2YXIgZz1lW2ZdO2lmKCEoZyBpbiBkKSlyZXR1cm47ZD1kW2ddfWU9ZVtlLmxlbmd0aC0xXTtjPSRqc2NvbXAuSVNfU1lNQk9MX05BVElWRSYmImVzNiI9PT1jP2RbZV06bnVsbDtiPWIoYyk7bnVsbCE9YiYmKGE\/JGpzY29tcC5kZWZpbmVQcm9wZXJ0eSgkanNjb21wLnBvbHlmaWxscyxlLHtjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6Yn0pOmIhPT1jJiYodm9pZCAwPT09JGpzY29tcC5wcm9wZXJ0eVRvUG9seWZpbGxTeW1ib2xbZV0mJihjPTFFOSpNYXRoLnJhbmRvbSgpPj4+MCwkanNjb21wLnByb3BlcnR5VG9Qb2x5ZmlsbFN5bWJvbFtlXT0kanNjb21wLklTX1NZTUJPTF9OQVRJVkU\/CiRqc2NvbXAuZ2xvYmFsLlN5bWJvbChlKTokanNjb21wLlBPTFlGSUxMX1BSRUZJWCtjKyIkIitlKSwkanNjb21wLmRlZmluZVByb3BlcnR5KGQsJGpzY29tcC5wcm9wZXJ0eVRvUG9seWZpbGxTeW1ib2xbZV0se2NvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpifSkpKX07JGpzY29tcC51bmRlcnNjb3JlUHJvdG9DYW5CZVNldD1mdW5jdGlvbigpe3ZhciBhPXthOiEwfSxiPXt9O3RyeXtyZXR1cm4gYi5fX3Byb3RvX189YSxiLmF9Y2F0Y2goYyl7fXJldHVybiExfTsKJGpzY29tcC5zZXRQcm90b3R5cGVPZj0kanNjb21wLlRSVVNUX0VTNl9QT0xZRklMTFMmJiJmdW5jdGlvbiI9PXR5cGVvZiBPYmplY3Quc2V0UHJvdG90eXBlT2Y\/T2JqZWN0LnNldFByb3RvdHlwZU9mOiRqc2NvbXAudW5kZXJzY29yZVByb3RvQ2FuQmVTZXQoKT9mdW5jdGlvbihhLGIpe2EuX19wcm90b19fPWI7aWYoYS5fX3Byb3RvX18hPT1iKXRocm93IG5ldyBUeXBlRXJyb3IoYSsiIGlzIG5vdCBleHRlbnNpYmxlIik7cmV0dXJuIGF9Om51bGw7JGpzY29tcC5hcnJheUl0ZXJhdG9ySW1wbD1mdW5jdGlvbihhKXt2YXIgYj0wO3JldHVybiBmdW5jdGlvbigpe3JldHVybiBiPGEubGVuZ3RoP3tkb25lOiExLHZhbHVlOmFbYisrXX06e2RvbmU6ITB9fX07JGpzY29tcC5hcnJheUl0ZXJhdG9yPWZ1bmN0aW9uKGEpe3JldHVybntuZXh0OiRqc2NvbXAuYXJyYXlJdGVyYXRvckltcGwoYSl9fTsKJGpzY29tcC5tYWtlSXRlcmF0b3I9ZnVuY3Rpb24oYSl7dmFyIGI9InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJlN5bWJvbC5pdGVyYXRvciYmYVtTeW1ib2wuaXRlcmF0b3JdO3JldHVybiBiP2IuY2FsbChhKTokanNjb21wLmFycmF5SXRlcmF0b3IoYSl9OyRqc2NvbXAuZ2VuZXJhdG9yPXt9OyRqc2NvbXAuZ2VuZXJhdG9yLmVuc3VyZUl0ZXJhdG9yUmVzdWx0SXNPYmplY3RfPWZ1bmN0aW9uKGEpe2lmKCEoYSBpbnN0YW5jZW9mIE9iamVjdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiSXRlcmF0b3IgcmVzdWx0ICIrYSsiIGlzIG5vdCBhbiBvYmplY3QiKTt9OwokanNjb21wLmdlbmVyYXRvci5Db250ZXh0PWZ1bmN0aW9uKCl7dGhpcy5pc1J1bm5pbmdfPSExO3RoaXMueWllbGRBbGxJdGVyYXRvcl89bnVsbDt0aGlzLnlpZWxkUmVzdWx0PXZvaWQgMDt0aGlzLm5leHRBZGRyZXNzPTE7dGhpcy5maW5hbGx5QWRkcmVzc189dGhpcy5jYXRjaEFkZHJlc3NfPTA7dGhpcy5maW5hbGx5Q29udGV4dHNfPXRoaXMuYWJydXB0Q29tcGxldGlvbl89bnVsbH07JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUuc3RhcnRfPWZ1bmN0aW9uKCl7aWYodGhpcy5pc1J1bm5pbmdfKXRocm93IG5ldyBUeXBlRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IHJ1bm5pbmciKTt0aGlzLmlzUnVubmluZ189ITB9OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLnN0b3BfPWZ1bmN0aW9uKCl7dGhpcy5pc1J1bm5pbmdfPSExfTsKJGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUuanVtcFRvRXJyb3JIYW5kbGVyXz1mdW5jdGlvbigpe3RoaXMubmV4dEFkZHJlc3M9dGhpcy5jYXRjaEFkZHJlc3NffHx0aGlzLmZpbmFsbHlBZGRyZXNzX307JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUubmV4dF89ZnVuY3Rpb24oYSl7dGhpcy55aWVsZFJlc3VsdD1hfTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS50aHJvd189ZnVuY3Rpb24oYSl7dGhpcy5hYnJ1cHRDb21wbGV0aW9uXz17ZXhjZXB0aW9uOmEsaXNFeGNlcHRpb246ITB9O3RoaXMuanVtcFRvRXJyb3JIYW5kbGVyXygpfTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5yZXR1cm49ZnVuY3Rpb24oYSl7dGhpcy5hYnJ1cHRDb21wbGV0aW9uXz17cmV0dXJuOmF9O3RoaXMubmV4dEFkZHJlc3M9dGhpcy5maW5hbGx5QWRkcmVzc199OwokanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5qdW1wVGhyb3VnaEZpbmFsbHlCbG9ja3M9ZnVuY3Rpb24oYSl7dGhpcy5hYnJ1cHRDb21wbGV0aW9uXz17anVtcFRvOmF9O3RoaXMubmV4dEFkZHJlc3M9dGhpcy5maW5hbGx5QWRkcmVzc199OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLnlpZWxkPWZ1bmN0aW9uKGEsYil7dGhpcy5uZXh0QWRkcmVzcz1iO3JldHVybnt2YWx1ZTphfX07JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUueWllbGRBbGw9ZnVuY3Rpb24oYSxiKXthPSRqc2NvbXAubWFrZUl0ZXJhdG9yKGEpO3ZhciBjPWEubmV4dCgpOyRqc2NvbXAuZ2VuZXJhdG9yLmVuc3VyZUl0ZXJhdG9yUmVzdWx0SXNPYmplY3RfKGMpO2lmKGMuZG9uZSl0aGlzLnlpZWxkUmVzdWx0PWMudmFsdWUsdGhpcy5uZXh0QWRkcmVzcz1iO2Vsc2UgcmV0dXJuIHRoaXMueWllbGRBbGxJdGVyYXRvcl89YSx0aGlzLnlpZWxkKGMudmFsdWUsYil9OwokanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5qdW1wVG89ZnVuY3Rpb24oYSl7dGhpcy5uZXh0QWRkcmVzcz1hfTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5qdW1wVG9FbmQ9ZnVuY3Rpb24oKXt0aGlzLm5leHRBZGRyZXNzPTB9OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLnNldENhdGNoRmluYWxseUJsb2Nrcz1mdW5jdGlvbihhLGIpe3RoaXMuY2F0Y2hBZGRyZXNzXz1hO3ZvaWQgMCE9YiYmKHRoaXMuZmluYWxseUFkZHJlc3NfPWIpfTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5zZXRGaW5hbGx5QmxvY2s9ZnVuY3Rpb24oYSl7dGhpcy5jYXRjaEFkZHJlc3NfPTA7dGhpcy5maW5hbGx5QWRkcmVzc189YXx8MH07JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUubGVhdmVUcnlCbG9jaz1mdW5jdGlvbihhLGIpe3RoaXMubmV4dEFkZHJlc3M9YTt0aGlzLmNhdGNoQWRkcmVzc189Ynx8MH07CiRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLmVudGVyQ2F0Y2hCbG9jaz1mdW5jdGlvbihhKXt0aGlzLmNhdGNoQWRkcmVzc189YXx8MDthPXRoaXMuYWJydXB0Q29tcGxldGlvbl8uZXhjZXB0aW9uO3RoaXMuYWJydXB0Q29tcGxldGlvbl89bnVsbDtyZXR1cm4gYX07JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUuZW50ZXJGaW5hbGx5QmxvY2s9ZnVuY3Rpb24oYSxiLGMpe2M\/dGhpcy5maW5hbGx5Q29udGV4dHNfW2NdPXRoaXMuYWJydXB0Q29tcGxldGlvbl86dGhpcy5maW5hbGx5Q29udGV4dHNfPVt0aGlzLmFicnVwdENvbXBsZXRpb25fXTt0aGlzLmNhdGNoQWRkcmVzc189YXx8MDt0aGlzLmZpbmFsbHlBZGRyZXNzXz1ifHwwfTsKJGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUubGVhdmVGaW5hbGx5QmxvY2s9ZnVuY3Rpb24oYSxiKXtiPXRoaXMuZmluYWxseUNvbnRleHRzXy5zcGxpY2UoYnx8MClbMF07aWYoYj10aGlzLmFicnVwdENvbXBsZXRpb25fPXRoaXMuYWJydXB0Q29tcGxldGlvbl98fGIpe2lmKGIuaXNFeGNlcHRpb24pcmV0dXJuIHRoaXMuanVtcFRvRXJyb3JIYW5kbGVyXygpO3ZvaWQgMCE9Yi5qdW1wVG8mJnRoaXMuZmluYWxseUFkZHJlc3NfPGIuanVtcFRvPyh0aGlzLm5leHRBZGRyZXNzPWIuanVtcFRvLHRoaXMuYWJydXB0Q29tcGxldGlvbl89bnVsbCk6dGhpcy5uZXh0QWRkcmVzcz10aGlzLmZpbmFsbHlBZGRyZXNzX31lbHNlIHRoaXMubmV4dEFkZHJlc3M9YX07JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUuZm9ySW49ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyAkanNjb21wLmdlbmVyYXRvci5Db250ZXh0LlByb3BlcnR5SXRlcmF0b3IoYSl9OwokanNjb21wLmdlbmVyYXRvci5Db250ZXh0LlByb3BlcnR5SXRlcmF0b3I9ZnVuY3Rpb24oYSl7dGhpcy5vYmplY3RfPWE7dGhpcy5wcm9wZXJ0aWVzXz1bXTtmb3IodmFyIGIgaW4gYSl0aGlzLnByb3BlcnRpZXNfLnB1c2goYik7dGhpcy5wcm9wZXJ0aWVzXy5yZXZlcnNlKCl9OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQuUHJvcGVydHlJdGVyYXRvci5wcm90b3R5cGUuZ2V0TmV4dD1mdW5jdGlvbigpe2Zvcig7MDx0aGlzLnByb3BlcnRpZXNfLmxlbmd0aDspe3ZhciBhPXRoaXMucHJvcGVydGllc18ucG9wKCk7aWYoYSBpbiB0aGlzLm9iamVjdF8pcmV0dXJuIGF9cmV0dXJuIG51bGx9OyRqc2NvbXAuZ2VuZXJhdG9yLkVuZ2luZV89ZnVuY3Rpb24oYSl7dGhpcy5jb250ZXh0Xz1uZXcgJGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dDt0aGlzLnByb2dyYW1fPWF9OwokanNjb21wLmdlbmVyYXRvci5FbmdpbmVfLnByb3RvdHlwZS5uZXh0Xz1mdW5jdGlvbihhKXt0aGlzLmNvbnRleHRfLnN0YXJ0XygpO2lmKHRoaXMuY29udGV4dF8ueWllbGRBbGxJdGVyYXRvcl8pcmV0dXJuIHRoaXMueWllbGRBbGxTdGVwXyh0aGlzLmNvbnRleHRfLnlpZWxkQWxsSXRlcmF0b3JfLm5leHQsYSx0aGlzLmNvbnRleHRfLm5leHRfKTt0aGlzLmNvbnRleHRfLm5leHRfKGEpO3JldHVybiB0aGlzLm5leHRTdGVwXygpfTsKJGpzY29tcC5nZW5lcmF0b3IuRW5naW5lXy5wcm90b3R5cGUucmV0dXJuXz1mdW5jdGlvbihhKXt0aGlzLmNvbnRleHRfLnN0YXJ0XygpO3ZhciBiPXRoaXMuY29udGV4dF8ueWllbGRBbGxJdGVyYXRvcl87aWYoYilyZXR1cm4gdGhpcy55aWVsZEFsbFN0ZXBfKCJyZXR1cm4iaW4gYj9iWyJyZXR1cm4iXTpmdW5jdGlvbihjKXtyZXR1cm57dmFsdWU6Yyxkb25lOiEwfX0sYSx0aGlzLmNvbnRleHRfLnJldHVybik7dGhpcy5jb250ZXh0Xy5yZXR1cm4oYSk7cmV0dXJuIHRoaXMubmV4dFN0ZXBfKCl9OwokanNjb21wLmdlbmVyYXRvci5FbmdpbmVfLnByb3RvdHlwZS50aHJvd189ZnVuY3Rpb24oYSl7dGhpcy5jb250ZXh0Xy5zdGFydF8oKTtpZih0aGlzLmNvbnRleHRfLnlpZWxkQWxsSXRlcmF0b3JfKXJldHVybiB0aGlzLnlpZWxkQWxsU3RlcF8odGhpcy5jb250ZXh0Xy55aWVsZEFsbEl0ZXJhdG9yX1sidGhyb3ciXSxhLHRoaXMuY29udGV4dF8ubmV4dF8pO3RoaXMuY29udGV4dF8udGhyb3dfKGEpO3JldHVybiB0aGlzLm5leHRTdGVwXygpfTsKJGpzY29tcC5nZW5lcmF0b3IuRW5naW5lXy5wcm90b3R5cGUueWllbGRBbGxTdGVwXz1mdW5jdGlvbihhLGIsYyl7dHJ5e3ZhciBkPWEuY2FsbCh0aGlzLmNvbnRleHRfLnlpZWxkQWxsSXRlcmF0b3JfLGIpOyRqc2NvbXAuZ2VuZXJhdG9yLmVuc3VyZUl0ZXJhdG9yUmVzdWx0SXNPYmplY3RfKGQpO2lmKCFkLmRvbmUpcmV0dXJuIHRoaXMuY29udGV4dF8uc3RvcF8oKSxkO3ZhciBlPWQudmFsdWV9Y2F0Y2goZil7cmV0dXJuIHRoaXMuY29udGV4dF8ueWllbGRBbGxJdGVyYXRvcl89bnVsbCx0aGlzLmNvbnRleHRfLnRocm93XyhmKSx0aGlzLm5leHRTdGVwXygpfXRoaXMuY29udGV4dF8ueWllbGRBbGxJdGVyYXRvcl89bnVsbDtjLmNhbGwodGhpcy5jb250ZXh0XyxlKTtyZXR1cm4gdGhpcy5uZXh0U3RlcF8oKX07CiRqc2NvbXAuZ2VuZXJhdG9yLkVuZ2luZV8ucHJvdG90eXBlLm5leHRTdGVwXz1mdW5jdGlvbigpe2Zvcig7dGhpcy5jb250ZXh0Xy5uZXh0QWRkcmVzczspdHJ5e3ZhciBhPXRoaXMucHJvZ3JhbV8odGhpcy5jb250ZXh0Xyk7aWYoYSlyZXR1cm4gdGhpcy5jb250ZXh0Xy5zdG9wXygpLHt2YWx1ZTphLnZhbHVlLGRvbmU6ITF9fWNhdGNoKGIpe3RoaXMuY29udGV4dF8ueWllbGRSZXN1bHQ9dm9pZCAwLHRoaXMuY29udGV4dF8udGhyb3dfKGIpfXRoaXMuY29udGV4dF8uc3RvcF8oKTtpZih0aGlzLmNvbnRleHRfLmFicnVwdENvbXBsZXRpb25fKXthPXRoaXMuY29udGV4dF8uYWJydXB0Q29tcGxldGlvbl87dGhpcy5jb250ZXh0Xy5hYnJ1cHRDb21wbGV0aW9uXz1udWxsO2lmKGEuaXNFeGNlcHRpb24pdGhyb3cgYS5leGNlcHRpb247cmV0dXJue3ZhbHVlOmEucmV0dXJuLGRvbmU6ITB9fXJldHVybnt2YWx1ZTp2b2lkIDAsZG9uZTohMH19OwokanNjb21wLmdlbmVyYXRvci5HZW5lcmF0b3JfPWZ1bmN0aW9uKGEpe3RoaXMubmV4dD1mdW5jdGlvbihiKXtyZXR1cm4gYS5uZXh0XyhiKX07dGhpcy50aHJvdz1mdW5jdGlvbihiKXtyZXR1cm4gYS50aHJvd18oYil9O3RoaXMucmV0dXJuPWZ1bmN0aW9uKGIpe3JldHVybiBhLnJldHVybl8oYil9O3RoaXNbU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfX07JGpzY29tcC5nZW5lcmF0b3IuY3JlYXRlR2VuZXJhdG9yPWZ1bmN0aW9uKGEsYil7Yj1uZXcgJGpzY29tcC5nZW5lcmF0b3IuR2VuZXJhdG9yXyhuZXcgJGpzY29tcC5nZW5lcmF0b3IuRW5naW5lXyhiKSk7JGpzY29tcC5zZXRQcm90b3R5cGVPZiYmYS5wcm90b3R5cGUmJiRqc2NvbXAuc2V0UHJvdG90eXBlT2YoYixhLnByb3RvdHlwZSk7cmV0dXJuIGJ9OwokanNjb21wLmFzeW5jRXhlY3V0ZVByb21pc2VHZW5lcmF0b3I9ZnVuY3Rpb24oYSl7ZnVuY3Rpb24gYihkKXtyZXR1cm4gYS5uZXh0KGQpfWZ1bmN0aW9uIGMoZCl7cmV0dXJuIGEudGhyb3coZCl9cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKGQsZSl7ZnVuY3Rpb24gZihnKXtnLmRvbmU\/ZChnLnZhbHVlKTpQcm9taXNlLnJlc29sdmUoZy52YWx1ZSkudGhlbihiLGMpLnRoZW4oZixlKX1mKGEubmV4dCgpKX0pfTskanNjb21wLmFzeW5jRXhlY3V0ZVByb21pc2VHZW5lcmF0b3JGdW5jdGlvbj1mdW5jdGlvbihhKXtyZXR1cm4gJGpzY29tcC5hc3luY0V4ZWN1dGVQcm9taXNlR2VuZXJhdG9yKGEoKSl9OyRqc2NvbXAuYXN5bmNFeGVjdXRlUHJvbWlzZUdlbmVyYXRvclByb2dyYW09ZnVuY3Rpb24oYSl7cmV0dXJuICRqc2NvbXAuYXN5bmNFeGVjdXRlUHJvbWlzZUdlbmVyYXRvcihuZXcgJGpzY29tcC5nZW5lcmF0b3IuR2VuZXJhdG9yXyhuZXcgJGpzY29tcC5nZW5lcmF0b3IuRW5naW5lXyhhKSkpfTsKY2xpZW50U3RvcmFnZT17c2V0OmZ1bmN0aW9uKGEsYixjLGQpe2M9dm9pZCAwPT09Yz8xOmM7ZD12b2lkIDA9PT1kPyJsb2NhbCI6ZDtjb25zdCBlPSJzZXNzaW9uIj09PWQ\/d2luZG93LnNlc3Npb25TdG9yYWdlOndpbmRvdy5sb2NhbFN0b3JhZ2U7dHJ5e2I9e3ZhbHVlOmJ9LCJsb2NhbCI9PT1kJiYoYyo9ODY0RTUsYi5leHBpcnk9KG5ldyBEYXRlKS5nZXRUaW1lKCkrYyksZS5zZXRJdGVtKGEsSlNPTi5zdHJpbmdpZnkoYikpfWNhdGNoKGYpe2NvbnNvbGUuZXJyb3IoYEVycm9yIHNhdmluZyB0byAke2R9IHN0b3JhZ2VgLGYpfX0sZ2V0OmZ1bmN0aW9uKGEsYil7Yj12b2lkIDA9PT1iP251bGw6Yjtjb25zdCBjPShkLGUpPT57dHJ5e2NvbnN0IGY9ZC5nZXRJdGVtKGEpO2lmKCFmKXJldHVybiBudWxsO2NvbnN0IGc9SlNPTi5wYXJzZShmKTtpZihlJiZnLmV4cGlyeSYmKG5ldyBEYXRlKS5nZXRUaW1lKCk+Zy5leHBpcnkpcmV0dXJuIGQucmVtb3ZlSXRlbShhKSxudWxsO2xldCBoOwpyZXR1cm4gbnVsbCE9KGg9Zy52YWx1ZSk\/aDpnfWNhdGNoKGYpe3JldHVybiBudWxsfX07cmV0dXJuImxvY2FsIj09PWI\/Yyh3aW5kb3cubG9jYWxTdG9yYWdlLCEwKToic2Vzc2lvbiI9PT1iP2Mod2luZG93LnNlc3Npb25TdG9yYWdlLCExKTpjKHdpbmRvdy5sb2NhbFN0b3JhZ2UsITApfHxjKHdpbmRvdy5zZXNzaW9uU3RvcmFnZSwhMSl9LHJlbW92ZTpmdW5jdGlvbihhLGIpe2I9dm9pZCAwPT09Yj9udWxsOmI7ImxvY2FsIiE9PWImJm51bGwhPT1ifHx3aW5kb3cubG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oYSk7InNlc3Npb24iIT09YiYmbnVsbCE9PWJ8fHdpbmRvdy5zZXNzaW9uU3RvcmFnZS5yZW1vdmVJdGVtKGEpfX07CmNyZWF0ZURhdGFTdG9yZT1hPT57YT1hfHx7fTtpbml0PWM9Pk9iamVjdC5hc3NpZ24oe30sYyk7Y29uc3QgYj1pbml0KGEpO3JldHVybntzZXQ6ZnVuY3Rpb24oYyxkKXtiW2NdPU9iamVjdC5hc3NpZ24oe30sYltjXSxkKTtyZXR1cm4gYltjXX0sZ2V0OmZ1bmN0aW9uKGMsZCl7ZD12b2lkIDA9PT1kP251bGw6ZDtjPWMuc3BsaXQoIi4iKTtsZXQgZT1iO2Zvcihjb25zdCBmIG9mIGMpe2lmKHZvaWQgMD09PWVbZl0pcmV0dXJuIGQ7ZT1lW2ZdfXJldHVybiB2b2lkIDAhPT1lP2U6ZH0sZmV0Y2g6ZnVuY3Rpb24oYyl7cmV0dXJuICRqc2NvbXAuYXN5bmNFeGVjdXRlUHJvbWlzZUdlbmVyYXRvckZ1bmN0aW9uKGZ1bmN0aW9uKigpe3RyeXtjb25zdCBkPXlpZWxkIGZldGNoKGBodHRwczovLyR7Yi5kZWFsZXJJbmZvLmRvbWFpbn0vYWpheENvbnRyb2xsZXIvJHtjfWApO2lmKCFkLm9rKXRocm93IEVycm9yKCJOZXR3b3JrIHJlc3BvbnNlIHdhcyBub3Qgb2siKTtjb25zdCBlPXlpZWxkIGQuanNvbigpOwpiW2NdPWU7cmV0dXJuIGJbY119Y2F0Y2goZCl7dGhyb3cgRXJyb3IoYEZhaWxlZCB0byBmZXRjaCBmcm9tIHNlcnZlcjogJHtkLm1lc3NhZ2V9YCk7fX0pfSxkZWxldGU6ZnVuY3Rpb24oYyl7aWYoIWJbY10pdGhyb3cgRXJyb3IoIklEIG5vdCBmb3VuZCIpO2RlbGV0ZSBiW2NdO3JldHVybiEwfSxnZXRBbGw6ZnVuY3Rpb24oKXtyZXR1cm4gT2JqZWN0LmFzc2lnbih7fSxiKX19fTsKLyoqIC9tL2pzL2VtYWlsSGFuZGxlci5qcyAqKi8KdmFyIF9fX2QyY19lbWFpbEhhbmRsZXJqc19jX29uPSIyMDI2LTA3LTExIDA1OjMwOjIzIjsndXNlIHN0cmljdCc7dmFyICRqc2NvbXA9JGpzY29tcHx8e307JGpzY29tcC5zY29wZT17fTskanNjb21wLkFTU1VNRV9FUzU9ITE7JGpzY29tcC5BU1NVTUVfTk9fTkFUSVZFX01BUD0hMTskanNjb21wLkFTU1VNRV9OT19OQVRJVkVfU0VUPSExOyRqc2NvbXAuU0lNUExFX0ZST1VORF9QT0xZRklMTD0hMTskanNjb21wLklTT0xBVEVfUE9MWUZJTExTPSExOyRqc2NvbXAuRk9SQ0VfUE9MWUZJTExfUFJPTUlTRT0hMTskanNjb21wLkZPUkNFX1BPTFlGSUxMX1BST01JU0VfV0hFTl9OT19VTkhBTkRMRURfUkVKRUNUSU9OPSExOyRqc2NvbXAuZGVmaW5lUHJvcGVydHk9JGpzY29tcC5BU1NVTUVfRVM1fHwiZnVuY3Rpb24iPT10eXBlb2YgT2JqZWN0LmRlZmluZVByb3BlcnRpZXM\/T2JqZWN0LmRlZmluZVByb3BlcnR5OmZ1bmN0aW9uKGUsZyxuKXtpZihlPT1BcnJheS5wcm90b3R5cGV8fGU9PU9iamVjdC5wcm90b3R5cGUpcmV0dXJuIGU7ZVtnXT1uLnZhbHVlO3JldHVybiBlfTsKJGpzY29tcC5nZXRHbG9iYWw9ZnVuY3Rpb24oZSl7ZT1bIm9iamVjdCI9PXR5cGVvZiBnbG9iYWxUaGlzJiZnbG9iYWxUaGlzLGUsIm9iamVjdCI9PXR5cGVvZiB3aW5kb3cmJndpbmRvdywib2JqZWN0Ij09dHlwZW9mIHNlbGYmJnNlbGYsIm9iamVjdCI9PXR5cGVvZiBnbG9iYWwmJmdsb2JhbF07Zm9yKHZhciBnPTA7ZzxlLmxlbmd0aDsrK2cpe3ZhciBuPWVbZ107aWYobiYmbi5NYXRoPT1NYXRoKXJldHVybiBufXRocm93IEVycm9yKCJDYW5ub3QgZmluZCBnbG9iYWwgb2JqZWN0Iik7fTskanNjb21wLmdsb2JhbD0kanNjb21wLmdldEdsb2JhbCh0aGlzKTskanNjb21wLklTX1NZTUJPTF9OQVRJVkU9ImZ1bmN0aW9uIj09PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT09dHlwZW9mIFN5bWJvbCgieCIpOyRqc2NvbXAuVFJVU1RfRVM2X1BPTFlGSUxMUz0hJGpzY29tcC5JU09MQVRFX1BPTFlGSUxMU3x8JGpzY29tcC5JU19TWU1CT0xfTkFUSVZFOyRqc2NvbXAucG9seWZpbGxzPXt9OwokanNjb21wLnByb3BlcnR5VG9Qb2x5ZmlsbFN5bWJvbD17fTskanNjb21wLlBPTFlGSUxMX1BSRUZJWD0iJGpzY3AkIjt2YXIgJGpzY29tcCRsb29rdXBQb2x5ZmlsbGVkVmFsdWU9ZnVuY3Rpb24oZSxnKXt2YXIgbj0kanNjb21wLnByb3BlcnR5VG9Qb2x5ZmlsbFN5bWJvbFtnXTtpZihudWxsPT1uKXJldHVybiBlW2ddO249ZVtuXTtyZXR1cm4gdm9pZCAwIT09bj9uOmVbZ119OyRqc2NvbXAucG9seWZpbGw9ZnVuY3Rpb24oZSxnLG4sYSl7ZyYmKCRqc2NvbXAuSVNPTEFURV9QT0xZRklMTFM\/JGpzY29tcC5wb2x5ZmlsbElzb2xhdGVkKGUsZyxuLGEpOiRqc2NvbXAucG9seWZpbGxVbmlzb2xhdGVkKGUsZyxuLGEpKX07CiRqc2NvbXAucG9seWZpbGxVbmlzb2xhdGVkPWZ1bmN0aW9uKGUsZyxuLGEpe249JGpzY29tcC5nbG9iYWw7ZT1lLnNwbGl0KCIuIik7Zm9yKGE9MDthPGUubGVuZ3RoLTE7YSsrKXt2YXIgYj1lW2FdO2lmKCEoYiBpbiBuKSlyZXR1cm47bj1uW2JdfWU9ZVtlLmxlbmd0aC0xXTthPW5bZV07Zz1nKGEpO2chPWEmJm51bGwhPWcmJiRqc2NvbXAuZGVmaW5lUHJvcGVydHkobixlLHtjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6Z30pfTsKJGpzY29tcC5wb2x5ZmlsbElzb2xhdGVkPWZ1bmN0aW9uKGUsZyxuLGEpe3ZhciBiPWUuc3BsaXQoIi4iKTtlPTE9PT1iLmxlbmd0aDthPWJbMF07YT0hZSYmYSBpbiAkanNjb21wLnBvbHlmaWxscz8kanNjb21wLnBvbHlmaWxsczokanNjb21wLmdsb2JhbDtmb3IodmFyIGM9MDtjPGIubGVuZ3RoLTE7YysrKXt2YXIgZD1iW2NdO2lmKCEoZCBpbiBhKSlyZXR1cm47YT1hW2RdfWI9YltiLmxlbmd0aC0xXTtuPSRqc2NvbXAuSVNfU1lNQk9MX05BVElWRSYmImVzNiI9PT1uP2FbYl06bnVsbDtnPWcobik7bnVsbCE9ZyYmKGU\/JGpzY29tcC5kZWZpbmVQcm9wZXJ0eSgkanNjb21wLnBvbHlmaWxscyxiLHtjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6Z30pOmchPT1uJiYodm9pZCAwPT09JGpzY29tcC5wcm9wZXJ0eVRvUG9seWZpbGxTeW1ib2xbYl0mJihuPTFFOSpNYXRoLnJhbmRvbSgpPj4+MCwkanNjb21wLnByb3BlcnR5VG9Qb2x5ZmlsbFN5bWJvbFtiXT0kanNjb21wLklTX1NZTUJPTF9OQVRJVkU\/CiRqc2NvbXAuZ2xvYmFsLlN5bWJvbChiKTokanNjb21wLlBPTFlGSUxMX1BSRUZJWCtuKyIkIitiKSwkanNjb21wLmRlZmluZVByb3BlcnR5KGEsJGpzY29tcC5wcm9wZXJ0eVRvUG9seWZpbGxTeW1ib2xbYl0se2NvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpnfSkpKX07JGpzY29tcC51bmRlcnNjb3JlUHJvdG9DYW5CZVNldD1mdW5jdGlvbigpe3ZhciBlPXthOiEwfSxnPXt9O3RyeXtyZXR1cm4gZy5fX3Byb3RvX189ZSxnLmF9Y2F0Y2gobil7fXJldHVybiExfTsKJGpzY29tcC5zZXRQcm90b3R5cGVPZj0kanNjb21wLlRSVVNUX0VTNl9QT0xZRklMTFMmJiJmdW5jdGlvbiI9PXR5cGVvZiBPYmplY3Quc2V0UHJvdG90eXBlT2Y\/T2JqZWN0LnNldFByb3RvdHlwZU9mOiRqc2NvbXAudW5kZXJzY29yZVByb3RvQ2FuQmVTZXQoKT9mdW5jdGlvbihlLGcpe2UuX19wcm90b19fPWc7aWYoZS5fX3Byb3RvX18hPT1nKXRocm93IG5ldyBUeXBlRXJyb3IoZSsiIGlzIG5vdCBleHRlbnNpYmxlIik7cmV0dXJuIGV9Om51bGw7JGpzY29tcC5hcnJheUl0ZXJhdG9ySW1wbD1mdW5jdGlvbihlKXt2YXIgZz0wO3JldHVybiBmdW5jdGlvbigpe3JldHVybiBnPGUubGVuZ3RoP3tkb25lOiExLHZhbHVlOmVbZysrXX06e2RvbmU6ITB9fX07JGpzY29tcC5hcnJheUl0ZXJhdG9yPWZ1bmN0aW9uKGUpe3JldHVybntuZXh0OiRqc2NvbXAuYXJyYXlJdGVyYXRvckltcGwoZSl9fTsKJGpzY29tcC5tYWtlSXRlcmF0b3I9ZnVuY3Rpb24oZSl7dmFyIGc9InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJlN5bWJvbC5pdGVyYXRvciYmZVtTeW1ib2wuaXRlcmF0b3JdO3JldHVybiBnP2cuY2FsbChlKTokanNjb21wLmFycmF5SXRlcmF0b3IoZSl9OyRqc2NvbXAuZ2VuZXJhdG9yPXt9OyRqc2NvbXAuZ2VuZXJhdG9yLmVuc3VyZUl0ZXJhdG9yUmVzdWx0SXNPYmplY3RfPWZ1bmN0aW9uKGUpe2lmKCEoZSBpbnN0YW5jZW9mIE9iamVjdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiSXRlcmF0b3IgcmVzdWx0ICIrZSsiIGlzIG5vdCBhbiBvYmplY3QiKTt9OwokanNjb21wLmdlbmVyYXRvci5Db250ZXh0PWZ1bmN0aW9uKCl7dGhpcy5pc1J1bm5pbmdfPSExO3RoaXMueWllbGRBbGxJdGVyYXRvcl89bnVsbDt0aGlzLnlpZWxkUmVzdWx0PXZvaWQgMDt0aGlzLm5leHRBZGRyZXNzPTE7dGhpcy5maW5hbGx5QWRkcmVzc189dGhpcy5jYXRjaEFkZHJlc3NfPTA7dGhpcy5maW5hbGx5Q29udGV4dHNfPXRoaXMuYWJydXB0Q29tcGxldGlvbl89bnVsbH07JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUuc3RhcnRfPWZ1bmN0aW9uKCl7aWYodGhpcy5pc1J1bm5pbmdfKXRocm93IG5ldyBUeXBlRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IHJ1bm5pbmciKTt0aGlzLmlzUnVubmluZ189ITB9OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLnN0b3BfPWZ1bmN0aW9uKCl7dGhpcy5pc1J1bm5pbmdfPSExfTsKJGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUuanVtcFRvRXJyb3JIYW5kbGVyXz1mdW5jdGlvbigpe3RoaXMubmV4dEFkZHJlc3M9dGhpcy5jYXRjaEFkZHJlc3NffHx0aGlzLmZpbmFsbHlBZGRyZXNzX307JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUubmV4dF89ZnVuY3Rpb24oZSl7dGhpcy55aWVsZFJlc3VsdD1lfTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS50aHJvd189ZnVuY3Rpb24oZSl7dGhpcy5hYnJ1cHRDb21wbGV0aW9uXz17ZXhjZXB0aW9uOmUsaXNFeGNlcHRpb246ITB9O3RoaXMuanVtcFRvRXJyb3JIYW5kbGVyXygpfTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5yZXR1cm49ZnVuY3Rpb24oZSl7dGhpcy5hYnJ1cHRDb21wbGV0aW9uXz17cmV0dXJuOmV9O3RoaXMubmV4dEFkZHJlc3M9dGhpcy5maW5hbGx5QWRkcmVzc199OwokanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5qdW1wVGhyb3VnaEZpbmFsbHlCbG9ja3M9ZnVuY3Rpb24oZSl7dGhpcy5hYnJ1cHRDb21wbGV0aW9uXz17anVtcFRvOmV9O3RoaXMubmV4dEFkZHJlc3M9dGhpcy5maW5hbGx5QWRkcmVzc199OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLnlpZWxkPWZ1bmN0aW9uKGUsZyl7dGhpcy5uZXh0QWRkcmVzcz1nO3JldHVybnt2YWx1ZTplfX07JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUueWllbGRBbGw9ZnVuY3Rpb24oZSxnKXtlPSRqc2NvbXAubWFrZUl0ZXJhdG9yKGUpO3ZhciBuPWUubmV4dCgpOyRqc2NvbXAuZ2VuZXJhdG9yLmVuc3VyZUl0ZXJhdG9yUmVzdWx0SXNPYmplY3RfKG4pO2lmKG4uZG9uZSl0aGlzLnlpZWxkUmVzdWx0PW4udmFsdWUsdGhpcy5uZXh0QWRkcmVzcz1nO2Vsc2UgcmV0dXJuIHRoaXMueWllbGRBbGxJdGVyYXRvcl89ZSx0aGlzLnlpZWxkKG4udmFsdWUsZyl9OwokanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5qdW1wVG89ZnVuY3Rpb24oZSl7dGhpcy5uZXh0QWRkcmVzcz1lfTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5qdW1wVG9FbmQ9ZnVuY3Rpb24oKXt0aGlzLm5leHRBZGRyZXNzPTB9OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLnNldENhdGNoRmluYWxseUJsb2Nrcz1mdW5jdGlvbihlLGcpe3RoaXMuY2F0Y2hBZGRyZXNzXz1lO3ZvaWQgMCE9ZyYmKHRoaXMuZmluYWxseUFkZHJlc3NfPWcpfTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5zZXRGaW5hbGx5QmxvY2s9ZnVuY3Rpb24oZSl7dGhpcy5jYXRjaEFkZHJlc3NfPTA7dGhpcy5maW5hbGx5QWRkcmVzc189ZXx8MH07JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUubGVhdmVUcnlCbG9jaz1mdW5jdGlvbihlLGcpe3RoaXMubmV4dEFkZHJlc3M9ZTt0aGlzLmNhdGNoQWRkcmVzc189Z3x8MH07CiRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLmVudGVyQ2F0Y2hCbG9jaz1mdW5jdGlvbihlKXt0aGlzLmNhdGNoQWRkcmVzc189ZXx8MDtlPXRoaXMuYWJydXB0Q29tcGxldGlvbl8uZXhjZXB0aW9uO3RoaXMuYWJydXB0Q29tcGxldGlvbl89bnVsbDtyZXR1cm4gZX07JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUuZW50ZXJGaW5hbGx5QmxvY2s9ZnVuY3Rpb24oZSxnLG4pe24\/dGhpcy5maW5hbGx5Q29udGV4dHNfW25dPXRoaXMuYWJydXB0Q29tcGxldGlvbl86dGhpcy5maW5hbGx5Q29udGV4dHNfPVt0aGlzLmFicnVwdENvbXBsZXRpb25fXTt0aGlzLmNhdGNoQWRkcmVzc189ZXx8MDt0aGlzLmZpbmFsbHlBZGRyZXNzXz1nfHwwfTsKJGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUubGVhdmVGaW5hbGx5QmxvY2s9ZnVuY3Rpb24oZSxnKXtnPXRoaXMuZmluYWxseUNvbnRleHRzXy5zcGxpY2UoZ3x8MClbMF07aWYoZz10aGlzLmFicnVwdENvbXBsZXRpb25fPXRoaXMuYWJydXB0Q29tcGxldGlvbl98fGcpe2lmKGcuaXNFeGNlcHRpb24pcmV0dXJuIHRoaXMuanVtcFRvRXJyb3JIYW5kbGVyXygpO3ZvaWQgMCE9Zy5qdW1wVG8mJnRoaXMuZmluYWxseUFkZHJlc3NfPGcuanVtcFRvPyh0aGlzLm5leHRBZGRyZXNzPWcuanVtcFRvLHRoaXMuYWJydXB0Q29tcGxldGlvbl89bnVsbCk6dGhpcy5uZXh0QWRkcmVzcz10aGlzLmZpbmFsbHlBZGRyZXNzX31lbHNlIHRoaXMubmV4dEFkZHJlc3M9ZX07JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUuZm9ySW49ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyAkanNjb21wLmdlbmVyYXRvci5Db250ZXh0LlByb3BlcnR5SXRlcmF0b3IoZSl9OwokanNjb21wLmdlbmVyYXRvci5Db250ZXh0LlByb3BlcnR5SXRlcmF0b3I9ZnVuY3Rpb24oZSl7dGhpcy5vYmplY3RfPWU7dGhpcy5wcm9wZXJ0aWVzXz1bXTtmb3IodmFyIGcgaW4gZSl0aGlzLnByb3BlcnRpZXNfLnB1c2goZyk7dGhpcy5wcm9wZXJ0aWVzXy5yZXZlcnNlKCl9OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQuUHJvcGVydHlJdGVyYXRvci5wcm90b3R5cGUuZ2V0TmV4dD1mdW5jdGlvbigpe2Zvcig7MDx0aGlzLnByb3BlcnRpZXNfLmxlbmd0aDspe3ZhciBlPXRoaXMucHJvcGVydGllc18ucG9wKCk7aWYoZSBpbiB0aGlzLm9iamVjdF8pcmV0dXJuIGV9cmV0dXJuIG51bGx9OyRqc2NvbXAuZ2VuZXJhdG9yLkVuZ2luZV89ZnVuY3Rpb24oZSl7dGhpcy5jb250ZXh0Xz1uZXcgJGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dDt0aGlzLnByb2dyYW1fPWV9OwokanNjb21wLmdlbmVyYXRvci5FbmdpbmVfLnByb3RvdHlwZS5uZXh0Xz1mdW5jdGlvbihlKXt0aGlzLmNvbnRleHRfLnN0YXJ0XygpO2lmKHRoaXMuY29udGV4dF8ueWllbGRBbGxJdGVyYXRvcl8pcmV0dXJuIHRoaXMueWllbGRBbGxTdGVwXyh0aGlzLmNvbnRleHRfLnlpZWxkQWxsSXRlcmF0b3JfLm5leHQsZSx0aGlzLmNvbnRleHRfLm5leHRfKTt0aGlzLmNvbnRleHRfLm5leHRfKGUpO3JldHVybiB0aGlzLm5leHRTdGVwXygpfTsKJGpzY29tcC5nZW5lcmF0b3IuRW5naW5lXy5wcm90b3R5cGUucmV0dXJuXz1mdW5jdGlvbihlKXt0aGlzLmNvbnRleHRfLnN0YXJ0XygpO3ZhciBnPXRoaXMuY29udGV4dF8ueWllbGRBbGxJdGVyYXRvcl87aWYoZylyZXR1cm4gdGhpcy55aWVsZEFsbFN0ZXBfKCJyZXR1cm4iaW4gZz9nWyJyZXR1cm4iXTpmdW5jdGlvbihuKXtyZXR1cm57dmFsdWU6bixkb25lOiEwfX0sZSx0aGlzLmNvbnRleHRfLnJldHVybik7dGhpcy5jb250ZXh0Xy5yZXR1cm4oZSk7cmV0dXJuIHRoaXMubmV4dFN0ZXBfKCl9OwokanNjb21wLmdlbmVyYXRvci5FbmdpbmVfLnByb3RvdHlwZS50aHJvd189ZnVuY3Rpb24oZSl7dGhpcy5jb250ZXh0Xy5zdGFydF8oKTtpZih0aGlzLmNvbnRleHRfLnlpZWxkQWxsSXRlcmF0b3JfKXJldHVybiB0aGlzLnlpZWxkQWxsU3RlcF8odGhpcy5jb250ZXh0Xy55aWVsZEFsbEl0ZXJhdG9yX1sidGhyb3ciXSxlLHRoaXMuY29udGV4dF8ubmV4dF8pO3RoaXMuY29udGV4dF8udGhyb3dfKGUpO3JldHVybiB0aGlzLm5leHRTdGVwXygpfTsKJGpzY29tcC5nZW5lcmF0b3IuRW5naW5lXy5wcm90b3R5cGUueWllbGRBbGxTdGVwXz1mdW5jdGlvbihlLGcsbil7dHJ5e3ZhciBhPWUuY2FsbCh0aGlzLmNvbnRleHRfLnlpZWxkQWxsSXRlcmF0b3JfLGcpOyRqc2NvbXAuZ2VuZXJhdG9yLmVuc3VyZUl0ZXJhdG9yUmVzdWx0SXNPYmplY3RfKGEpO2lmKCFhLmRvbmUpcmV0dXJuIHRoaXMuY29udGV4dF8uc3RvcF8oKSxhO3ZhciBiPWEudmFsdWV9Y2F0Y2goYyl7cmV0dXJuIHRoaXMuY29udGV4dF8ueWllbGRBbGxJdGVyYXRvcl89bnVsbCx0aGlzLmNvbnRleHRfLnRocm93XyhjKSx0aGlzLm5leHRTdGVwXygpfXRoaXMuY29udGV4dF8ueWllbGRBbGxJdGVyYXRvcl89bnVsbDtuLmNhbGwodGhpcy5jb250ZXh0XyxiKTtyZXR1cm4gdGhpcy5uZXh0U3RlcF8oKX07CiRqc2NvbXAuZ2VuZXJhdG9yLkVuZ2luZV8ucHJvdG90eXBlLm5leHRTdGVwXz1mdW5jdGlvbigpe2Zvcig7dGhpcy5jb250ZXh0Xy5uZXh0QWRkcmVzczspdHJ5e3ZhciBlPXRoaXMucHJvZ3JhbV8odGhpcy5jb250ZXh0Xyk7aWYoZSlyZXR1cm4gdGhpcy5jb250ZXh0Xy5zdG9wXygpLHt2YWx1ZTplLnZhbHVlLGRvbmU6ITF9fWNhdGNoKGcpe3RoaXMuY29udGV4dF8ueWllbGRSZXN1bHQ9dm9pZCAwLHRoaXMuY29udGV4dF8udGhyb3dfKGcpfXRoaXMuY29udGV4dF8uc3RvcF8oKTtpZih0aGlzLmNvbnRleHRfLmFicnVwdENvbXBsZXRpb25fKXtlPXRoaXMuY29udGV4dF8uYWJydXB0Q29tcGxldGlvbl87dGhpcy5jb250ZXh0Xy5hYnJ1cHRDb21wbGV0aW9uXz1udWxsO2lmKGUuaXNFeGNlcHRpb24pdGhyb3cgZS5leGNlcHRpb247cmV0dXJue3ZhbHVlOmUucmV0dXJuLGRvbmU6ITB9fXJldHVybnt2YWx1ZTp2b2lkIDAsZG9uZTohMH19OwokanNjb21wLmdlbmVyYXRvci5HZW5lcmF0b3JfPWZ1bmN0aW9uKGUpe3RoaXMubmV4dD1mdW5jdGlvbihnKXtyZXR1cm4gZS5uZXh0XyhnKX07dGhpcy50aHJvdz1mdW5jdGlvbihnKXtyZXR1cm4gZS50aHJvd18oZyl9O3RoaXMucmV0dXJuPWZ1bmN0aW9uKGcpe3JldHVybiBlLnJldHVybl8oZyl9O3RoaXNbU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfX07JGpzY29tcC5nZW5lcmF0b3IuY3JlYXRlR2VuZXJhdG9yPWZ1bmN0aW9uKGUsZyl7Zz1uZXcgJGpzY29tcC5nZW5lcmF0b3IuR2VuZXJhdG9yXyhuZXcgJGpzY29tcC5nZW5lcmF0b3IuRW5naW5lXyhnKSk7JGpzY29tcC5zZXRQcm90b3R5cGVPZiYmZS5wcm90b3R5cGUmJiRqc2NvbXAuc2V0UHJvdG90eXBlT2YoZyxlLnByb3RvdHlwZSk7cmV0dXJuIGd9OwokanNjb21wLmFzeW5jRXhlY3V0ZVByb21pc2VHZW5lcmF0b3I9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gZyhhKXtyZXR1cm4gZS5uZXh0KGEpfWZ1bmN0aW9uIG4oYSl7cmV0dXJuIGUudGhyb3coYSl9cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKGEsYil7ZnVuY3Rpb24gYyhkKXtkLmRvbmU\/YShkLnZhbHVlKTpQcm9taXNlLnJlc29sdmUoZC52YWx1ZSkudGhlbihnLG4pLnRoZW4oYyxiKX1jKGUubmV4dCgpKX0pfTskanNjb21wLmFzeW5jRXhlY3V0ZVByb21pc2VHZW5lcmF0b3JGdW5jdGlvbj1mdW5jdGlvbihlKXtyZXR1cm4gJGpzY29tcC5hc3luY0V4ZWN1dGVQcm9taXNlR2VuZXJhdG9yKGUoKSl9OyRqc2NvbXAuYXN5bmNFeGVjdXRlUHJvbWlzZUdlbmVyYXRvclByb2dyYW09ZnVuY3Rpb24oZSl7cmV0dXJuICRqc2NvbXAuYXN5bmNFeGVjdXRlUHJvbWlzZUdlbmVyYXRvcihuZXcgJGpzY29tcC5nZW5lcmF0b3IuR2VuZXJhdG9yXyhuZXcgJGpzY29tcC5nZW5lcmF0b3IuRW5naW5lXyhlKSkpfTsKdmFyIGVtYWlsSGFuZGxlcj1mdW5jdGlvbigpe3ZhciBlPTExMTIsZz1mdW5jdGlvbihiKXt0cnl7cmV0dXJuIHdpbmRvdy50b3AubG9jYXRpb25bYl19Y2F0Y2goYyl7cmV0dXJuIHdpbmRvdy5sb2NhdGlvbltiXX19LG49ZnVuY3Rpb24oKXt0aGlzLmFjdGlvbj1mdW5jdGlvbigpe307dGhpcy5uZXh0PW51bGw7dGhpcy5fbmV4dENhbGxlZD0hMX07bi5wcm90b3R5cGU9e2V4ZXV0ZTpmdW5jdGlvbigpeyJmdW5jdGlvbiI9PT10eXBlb2YgdGhpcy5hY3Rpb24mJnRoaXMuYWN0aW9uLmNhbGwodGhpcyl9LGdvdG9OZXh0OmZ1bmN0aW9uKCl7dGhpcy5faGFzTmV4dCgpJiZ0aGlzLm5leHQuZXhldXRlKCk7dGhpcy5fbmV4dENhbGxlZD0hMDtyZXR1cm4gdGhpc30sc2V0TmV4dDpmdW5jdGlvbihiKXt0aGlzLm5leHQ9YjtyZXR1cm4gdGhpc30sc2V0QWN0aW9uOmZ1bmN0aW9uKGIpe3RoaXMuYWN0aW9uPWI7cmV0dXJuIHRoaXN9LF9oYXNOZXh0OmZ1bmN0aW9uKCl7cmV0dXJuIG51bGwhPT0KdGhpcy5uZXh0JiYhdGhpcy5fbmV4dENhbGxlZH19O3ZhciBhPXtzdWJqZWN0OiIiLGJvZHk6IiIsc2VuZFRvOiIiLHNlbmRUb0FERkZvcm1hdDoiIixzZWxlY3RlZFNlbmRUbzoiIixzZWxlY3RlZFNlbmRUb0FERkZvcm1hdDoiIixzZW5kRnJvbToiIix1c2VyRW1haWw6IiIsdHJhZGVpbjoiIixwb3B1cGRpdjoiIix1c2VyRmlyc3ROYW1lOiIiLHVzZXJMYXN0TmFtZToiIix1c2VyUGhvbmU6IiIscGhvbmVNYW5kYXRvcnk6MCxwaG9uZVZhbGlkYXRpb25BdHRlbXB0czoxLHVzZXJQb3N0YWw6IiIsdXNlckFkZHJlc3M6IiIsYmlydGhkYXRlOiIiLHVzZXJBdHRhY2htZW50UGF0aDoiIixtYWlsSUQ6ImdlbmVyaWNNYWlsIixsZWFkSW52b2tlcjoiZ2VuZXJpYyIsbGVhZEludm9rZXJTSUQ6IiIsaXNDVEE6ITEsYnV0dG9uVGV4dDoiIixyZXNldENhbGxiYWNrczpmdW5jdGlvbigpeyQuZXh0ZW5kKGEse2NhbGxiYWNrOm51bGwsb25EdXBsaWNhdGVTZW5kOiExLG9uQWZ0ZXJDb25zZW50OiExLApvbkJlZm9yZVNob3dDb25zZW50OiExfSl9LG1ha2U6IiIsbW9kZWw6IiIsdHJpbToiIix2aW46IiIscHJpY2U6MCx5ZWFyOjAsdmVoaWNsZVR5cGU6IiIsc3RvY2tOdW1iZXI6IiIscHVyY2hhc2VfaW50ZW50OiIiLHB1cmNoYXNlX2ludGVudF9zZWN0aW9uOiIiLGFsbG93X3NoYXJlX3BlcnNvbmFsX2RhdGE6IiIscHJlZmVycmVkX2NvbnRhY3Q6IiIsY2FyaWQ6MCxjb25kaXRpb246IlVzZWQiLGxhbmd1YWdlOiIiLGlzbW9iaWxlc2l0ZToiTk8iLGlzQW1wOiJOTyIscmVmZXJlcjoiIixwb3B1cE9mZmVyVHlwZToiIixwYXJ0aWFsOiExLGZyb21GYWNlYm9vazohMSxza2lwU2VuZGluZzohMSxmcm9tT25Mb2FkOiExLHBvc3RTdWJtaXRDYWxsYmFjazoiIixyZXN1bWVBY3Rpdml0eTohMCxzdWJtaXREYXRhOiIiLHN1Ym1pdFR5cGU6Im5vcm1hbCIsbGFzdENoZWNrc3VtOiIiLGNvbnNlbnREZWFsZXI6ITEsY29uc2VudE9FTTohMSxjb25zZW50VHlwZToiSW1wbGljaXQiLGNvbnNlbnRFeHBpcmF0aW9uOiIiLApjb25zZW50RGF0ZToiIixjb25zZW50RnJlcXVlbmN5Oi0xLGNvbnNlbnREZXRhaWxzRlI6IiIsY29uc2VudERldGFpbHNFTjoiIixkZXRhaWxzRGVmYXVsdHM6IiIsZnJvbUFBOjAsb3duZXJJRDowLGRlcGFydG1lbnQ6IiIsc2tpcEdldERlcDohMSxkZXBhcnRtZW50QnlTdG9jazohMSxhc2tQdXJjaGFzZUludGVudDohMSxsZWFkVGl0bGVVSVRleHQ6IiIsbGVhZFRpdGxlVGV4dDoiIixnZW9sb2Nfc3RhdHVzOiIiLGdlb2xvY19sYXQ6IiIsZ2VvbG9jX2xvbmc6IiIsZ2VvbG9jX2FjY3VyYWN5Oi0xLGdlb2xvY190cmFja19zdHI6IiIsZ2VvbG9jX2VtYWlsX3N0cjoiIix0cmFuc3BvcnRPcHRpb246IiIsY2FyMl9tYWtlOiIiLGNhcjJfbW9kZWw6IiIsY2FyMl90cmltOiIiLGNhcjJfeWVhcjoiIixjYXIyX2NvbG9yOiIiLGNhcjJfb2RvbWV0ZXI6IiIsY2FyMl92aW46IiIsY2FyMl90cmFuc21pc3NvbjoiIixjYXIyX2RyaXZldHJhaW46IiIsY2FyMl9mdWVsdHlwZToiIixjb21tZW50czoiIiwKZ3JlY2FwdGNoYVJlc3BvbnNlVG9rZW46IiIsaWdub3JlQ2FwdGNoYTohMSxjb250YWN0SUQ6MCxjb250YWN0QWRkcmVzczoiIixjb250YWN0Q2l0eToiIixjb250YWN0UHJvdmluY2U6IiIsY29udGFjdFppcDoiIixjb250YWN0TkFTOiIiLGNvbnRhY3RCaXJ0aDoiIixkZWFsZXJOYW1lOiIiLGdldE5ld1NlcXVlbmNlOmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBufSxjcmVhdGVDaGVja3N1bTpmdW5jdGlvbigpe2Zvcih2YXIgYj0iIixjPVsibWFrZSIsIm1vZGVsIiwieWVhciIsIm1haWxJRCJdLGQ9MDtkPGMubGVuZ3RoO2QrKyl7dmFyIGY9Y1tkXSxoPWFbZl0sbT10eXBlb2YgaDtpZigic3RyaW5nIj09bXx8Im51bWJlciI9PW0pYis9ZisiOiIraCsiOyJ9Yz0iMDAwMDAwMDAgNzcwNzMwOTYgRUUwRTYxMkMgOTkwOTUxQkEgMDc2REM0MTkgNzA2QUY0OEYgRTk2M0E1MzUgOUU2NDk1QTMgMEVEQjg4MzIgNzlEQ0I4QTQgRTBENUU5MUUgOTdEMkQ5ODggMDlCNjRDMkIgN0VCMTdDQkQgRTdCODJEMDcgOTBCRjFEOTEgMURCNzEwNjQgNkFCMDIwRjIgRjNCOTcxNDggODRCRTQxREUgMUFEQUQ0N0QgNkREREU0RUIgRjRENEI1NTEgODNEMzg1QzcgMTM2Qzk4NTYgNjQ2QkE4QzAgRkQ2MkY5N0EgOEE2NUM5RUMgMTQwMTVDNEYgNjMwNjZDRDkgRkEwRjNENjMgOEQwODBERjUgM0I2RTIwQzggNEM2OTEwNUUgRDU2MDQxRTQgQTI2NzcxNzIgM0MwM0U0RDEgNEIwNEQ0NDcgRDIwRDg1RkQgQTUwQUI1NkIgMzVCNUE4RkEgNDJCMjk4NkMgREJCQkM5RDYgQUNCQ0Y5NDAgMzJEODZDRTMgNDVERjVDNzUgRENENjBEQ0YgQUJEMTNENTkgMjZEOTMwQUMgNTFERTAwM0EgQzhENzUxODAgQkZEMDYxMTYgMjFCNEY0QjUgNTZCM0M0MjMgQ0ZCQTk1OTkgQjhCREE1MEYgMjgwMkI4OUUgNUYwNTg4MDggQzYwQ0Q5QjIgQjEwQkU5MjQgMkY2RjdDODcgNTg2ODRDMTEgQzE2MTFEQUIgQjY2NjJEM0QgNzZEQzQxOTAgMDFEQjcxMDYgOThEMjIwQkMgRUZENTEwMkEgNzFCMTg1ODkgMDZCNkI1MUYgOUZCRkU0QTUgRThCOEQ0MzMgNzgwN0M5QTIgMEYwMEY5MzQgOTYwOUE4OEUgRTEwRTk4MTggN0Y2QTBEQkIgMDg2RDNEMkQgOTE2NDZDOTcgRTY2MzVDMDEgNkI2QjUxRjQgMUM2QzYxNjIgODU2NTMwRDggRjI2MjAwNEUgNkMwNjk1RUQgMUIwMUE1N0IgODIwOEY0QzEgRjUwRkM0NTcgNjVCMEQ5QzYgMTJCN0U5NTAgOEJCRUI4RUEgRkNCOTg4N0MgNjJERDFEREYgMTVEQTJENDkgOENEMzdDRjMgRkJENDRDNjUgNERCMjYxNTggM0FCNTUxQ0UgQTNCQzAwNzQgRDRCQjMwRTIgNEFERkE1NDEgM0REODk1RDcgQTREMUM0NkQgRDNENkY0RkIgNDM2OUU5NkEgMzQ2RUQ5RkMgQUQ2Nzg4NDYgREE2MEI4RDAgNDQwNDJENzMgMzMwMzFERTUgQUEwQTRDNUYgREQwRDdDQzkgNTAwNTcxM0MgMjcwMjQxQUEgQkUwQjEwMTAgQzkwQzIwODYgNTc2OEI1MjUgMjA2Rjg1QjMgQjk2NkQ0MDkgQ0U2MUU0OUYgNUVERUY5MEUgMjlEOUM5OTggQjBEMDk4MjIgQzdEN0E4QjQgNTlCMzNEMTcgMkVCNDBEODEgQjdCRDVDM0IgQzBCQTZDQUQgRURCODgzMjAgOUFCRkIzQjYgMDNCNkUyMEMgNzRCMUQyOUEgRUFENTQ3MzkgOUREMjc3QUYgMDREQjI2MTUgNzNEQzE2ODMgRTM2MzBCMTIgOTQ2NDNCODQgMEQ2RDZBM0UgN0E2QTVBQTggRTQwRUNGMEIgOTMwOUZGOUQgMEEwMEFFMjcgN0QwNzlFQjEgRjAwRjkzNDQgODcwOEEzRDIgMUUwMUYyNjggNjkwNkMyRkUgRjc2MjU3NUQgODA2NTY3Q0IgMTk2QzM2NzEgNkU2QjA2RTcgRkVENDFCNzYgODlEMzJCRTAgMTBEQTdBNUEgNjdERDRBQ0MgRjlCOURGNkYgOEVCRUVGRjkgMTdCN0JFNDMgNjBCMDhFRDUgRDZENkEzRTggQTFEMTkzN0UgMzhEOEMyQzQgNEZERkYyNTIgRDFCQjY3RjEgQTZCQzU3NjcgM0ZCNTA2REQgNDhCMjM2NEIgRDgwRDJCREEgQUYwQTFCNEMgMzYwMzRBRjYgNDEwNDdBNjAgREY2MEVGQzMgQTg2N0RGNTUgMzE2RThFRUYgNDY2OUJFNzkgQ0I2MUIzOEMgQkM2NjgzMUEgMjU2RkQyQTAgNTI2OEUyMzYgQ0MwQzc3OTUgQkIwQjQ3MDMgMjIwMjE2QjkgNTUwNTI2MkYgQzVCQTNCQkUgQjJCRDBCMjggMkJCNDVBOTIgNUNCMzZBMDQgQzJEN0ZGQTcgQjVEMENGMzEgMkNEOTlFOEIgNUJERUFFMUQgOUI2NEMyQjAgRUM2M0YyMjYgNzU2QUEzOUMgMDI2RDkzMEEgOUMwOTA2QTkgRUIwRTM2M0YgNzIwNzY3ODUgMDUwMDU3MTMgOTVCRjRBODIgRTJCODdBMTQgN0JCMTJCQUUgMENCNjFCMzggOTJEMjhFOUIgRTVENUJFMEQgN0NEQ0VGQjcgMEJEQkRGMjEgODZEM0QyRDQgRjFENEUyNDIgNjhEREIzRjggMUZEQTgzNkUgODFCRTE2Q0QgRjZCOTI2NUIgNkZCMDc3RTEgMThCNzQ3NzcgODgwODVBRTYgRkYwRjZBNzAgNjYwNjNCQ0EgMTEwMTBCNUMgOEY2NTlFRkYgRjg2MkFFNjkgNjE2QkZGRDMgMTY2Q0NGNDUgQTAwQUUyNzggRDcwREQyRUUgNEUwNDgzNTQgMzkwM0IzQzIgQTc2NzI2NjEgRDA2MDE2RjcgNDk2OTQ3NEQgM0U2RTc3REIgQUVEMTZBNEEgRDlENjVBREMgNDBERjBCNjYgMzdEODNCRjAgQTlCQ0FFNTMgREVCQjlFQzUgNDdCMkNGN0YgMzBCNUZGRTkgQkRCREYyMUMgQ0FCQUMyOEEgNTNCMzkzMzAgMjRCNEEzQTYgQkFEMDM2MDUgQ0RENzA2OTMgNTRERTU3MjkgMjNEOTY3QkYgQjM2NjdBMkUgQzQ2MTRBQjggNUQ2ODFCMDIgMkE2RjJCOTQgQjQwQkJFMzcgQzMwQzhFQTEgNUEwNURGMUIgMkQwMkVGOEQiLnNwbGl0KCIgIikubWFwKGZ1bmN0aW9uKGspe3JldHVybiBwYXJzZUludChrLAoxNil9KTt2YXIgcj1yXi0xO2Q9MDtmb3IoZj1iLmxlbmd0aDtkPGY7ZCsrKXI9cj4+PjheY1socl5iLmNoYXJDb2RlQXQoZCkpJjI1NV07cmV0dXJuKHJeLTEpPj4+MH0sc2V0TXVsdGlEZWFsZXJCb2R5OmZ1bmN0aW9uKGIsYyl7dmFyIGQ9JCgiI3Bvc3RMZWFkTGFiZWwiKS52YWwoKTsidW5kZWZpbmVkIiE9PXR5cGVvZiBkPyhkPWQucmVwbGFjZSgieyRNVUxUSURFQUxFUk5BTUV9IixiKS5yZXBsYWNlKCJ7JFBPU1RfTEVBRF9FTUFJTFN9IixjKSxhLmJvZHk9YS5ib2R5LnJlcGxhY2UoInskREVBTEVSX1NFTkRUT30iLGQpLGEuZGVhbGVyTmFtZT1iKTphLmJvZHk9YS5ib2R5LnJlcGxhY2UoLzxiclxzP1wvPntcJERFQUxFUl9TRU5EVE99KGJyXHM\/XC8pPy8sIiIpLnJlcGxhY2UoInskREVBTEVSX1NFTkRUT30iLCIiKX0sc2hvd0NvbnNlbnQ6ZnVuY3Rpb24oYixjKXthLmdldEVtYWlsQ29uc2VudChmdW5jdGlvbihkKXt2YXIgZj1hLmdldE5ld1NlcXVlbmNlKCksaD1hLmdldE5ld1NlcXVlbmNlKCk7CmYuc2V0QWN0aW9uKGZ1bmN0aW9uKCl7YS5kZWFsZXJTZWxlY3RGdW5jKCExLHRoaXMpfSk7aC5zZXRBY3Rpb24oZnVuY3Rpb24oKXt2b2lkIDA9PWImJihiPSExKTt2b2lkIDA9PWMmJihjPSExKTt2YXIgbT0kKCIjYXNQb3BVcCIpLHI9ITE7KGEuYXNrUHVyY2hhc2VJbnRlbnR8fGEuc2hvdWxkRGlzcGxheVB1cmNoYXNlSW50ZW50Q29udGFjdCgpKSYmMDwkKCIjYXNQdXJjaGFzZUludGVudCIpLmxlbmd0aCYmKG09JCgiI2FzUHVyY2hhc2VJbnRlbnQiKSxyPSEwKTtpZigwPG0ubGVuZ3RoKXtnZXRDb29raWUoInZpc2l0b3JfaGFzX2V4cGxpY2l0X2NvbnNlbnQiKTt2YXIgaz1wYXJzZUludChnZXRDb29raWUoInZpc2l0b3JfaGFzX3NlZW5fcG9wdXAiKSwxMCk7aXNOYU4oaykmJihrPTApO2Euc2tpcFNlbmRpbmc9YjthLmZyb21PbkxvYWQ9YztpZihkLmhhc0NvbnNlbnQpe3N3aXRjaChhLnN1Ym1pdFR5cGUpe2Nhc2UgImluc3RhbnRSZWJhdGUiOmNhc2UgInNjcmF0Y2giOnJlYWxTdWJtaXRSZWJhdGVDb3Vwb24oKTsKYnJlYWs7ZGVmYXVsdDoiIiE9YS5wb3N0U3VibWl0Q2FsbGJhY2smJmV2YWwoYS5wb3N0U3VibWl0Q2FsbGJhY2spfWEucmVhZHlUb1NlbmQoKX1lbHNle3N3aXRjaChhLnN1Ym1pdFR5cGUpe2Nhc2UgInNjcmF0Y2giOmNhc2UgImluc3RhbnRSZWJhdGUiOmNsb3NlUG9wdXBXaWRnZXQoKX0iZnVuY3Rpb24iPT10eXBlb2YgYS5vbkJlZm9yZVNob3dDb25zZW50JiZhLm9uQmVmb3JlU2hvd0NvbnNlbnQuY2FsbCgpO2lmKHIpYS5zaG91bGREaXNwbGF5UHVyY2hhc2VJbnRlbnRDb250YWN0KCk\/ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI2FzUHVyY2hhc2VJbnRlbnQgLnN0ZXBDb250YWN0IikuY2xhc3NMaXN0LnJlbW92ZSgiaGlkZGVuIik6ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI2FzUHVyY2hhc2VJbnRlbnQgLnN0ZXBDb250YWN0IikuY2xhc3NMaXN0LmFkZCgiaGlkZGVuIiksJCgiI2VtYWlsQ29uc2VudFN1Ym1pdCIpLm9uKCJjbGljayIsZnVuY3Rpb24oKXt2YXIgdD17fTttLmZpbmQoImZvcm0iKS5zZXJpYWxpemVBcnJheSgpLm1hcChxPT4Ke3RbcS5uYW1lXT1xLnZhbHVlfSk7JCgiI0FMTE9XX1NIQVJFX1BFUlNPTkFMX0lORk8sIC5zdGVwQ29uc2VudCIpLmNzcyh7Ym9yZGVyOiJub25lIn0pOyQoIiNBTExPV19TSEFSRV9QRVJTT05BTF9JTkZPX1RFWFRfRVJST1IiKS5oaWRlKCk7aWYoMT09JCgiI0FMTE9XX1NIQVJFX1BFUlNPTkFMX0lORk8iKS5pcygiOnZpc2libGUiKSYmKCF0LnNoYXJlX3BlcnNvbmFsfHwibm8iPT10LnNoYXJlX3BlcnNvbmFsKSlyZXR1cm4gJCgiI0FMTE9XX1NIQVJFX1BFUlNPTkFMX0lORk8iKS5jc3Moe2JvcmRlcjoiMXB4IHNvbGlkIHJlZCJ9KSwkKCIjQUxMT1dfU0hBUkVfUEVSU09OQUxfSU5GT19URVhUX0VSUk9SIikuc2hvdygpLCExO2lmKCF0Lmhhc093blByb3BlcnR5KCJjb25zZW50IikpcmV0dXJuICQoIi5zdGVwQ29uc2VudCIpLmNzcyh7Ym9yZGVyOiIxcHggc29saWQgcmVkIn0pLCExO3ZhciB1PXtwdXJjaGFzZV9pbnRlbnQ6LTEsc2hhcmVfcGVyc29uYWw6Im5vIixwcmVmZXJyZWRfY29udGFjdDoiIn07CmZvcih2YXIgbCBpbiB1KXUuaGFzT3duUHJvcGVydHkobCkmJih0Lmhhc093blByb3BlcnR5KGwpP3NldENvb2tpZShsLHRbbF0pOnRbbF09dVtsXSk7YS5wdXJjaGFzZV9pbnRlbnQ9dC5wdXJjaGFzZV9pbnRlbnQ7YS5hbGxvd19zaGFyZV9wZXJzb25hbF9kYXRhPXQuc2hhcmVfcGVyc29uYWw7YS5wcmVmZXJyZWRfY29udGFjdD10LnByZWZlcnJlZF9jb250YWN0O3U9Ii0xIiE9dC5jb25zZW50O2w9dC5oYXNPd25Qcm9wZXJ0eSgiY29uc2VudF9vZW0iKSYmIjEiPT10LmNvbnNlbnRfb2VtO2Euc3VibWl0Q29uc2VudCh1LGwsImNvbXBsZXgiKTtyZXR1cm4hMX0pO2Vsc2UgJCgiI2NvbnNlbnRTdWJtaXQiKS5vbigiY2xpY2siLGZ1bmN0aW9uKHQpe3QucHJldmVudERlZmF1bHQoKTt0PSExOyQoIi5kZWFsZXJDb25zZW50IikuY3NzKHtib3JkZXI6Im5vbmUifSk7JCgiLm9lbUNvbnNlbnQiKS5jc3Moe2JvcmRlcjoibm9uZSJ9KTt2YXIgdT17fTttLmZpbmQoImZvcm0iKS5zZXJpYWxpemVBcnJheSgpLm1hcChxPT4Ke3VbcS5uYW1lXT1xLnZhbHVlfSk7dS5oYXNPd25Qcm9wZXJ0eSgiY29uc2VudCIpfHwoJCgiLmRlYWxlckNvbnNlbnQiKS5jc3Moe2JvcmRlcjoiMXB4IHNvbGlkIHJlZCJ9KSx0PSEwKTttLmZpbmQoImZvcm0gLm9lbUNvbnNlbnQiKS5sZW5ndGgmJiF1Lmhhc093blByb3BlcnR5KCJjb25zZW50X29lbSIpJiYkKCIjb2VtQ2VydGlmaWNhdGlvbiIpLnZhbCgpJiYobS5maW5kKCJmb3JtIC5vZW1Db25zZW50IikuY3NzKHtib3JkZXI6IjFweCBzb2xpZCByZWQifSksdD0hMCk7aWYodClyZXR1cm4hMTt0PSItMSIhPXUuY29uc2VudDt2YXIgbD11Lmhhc093blByb3BlcnR5KCJjb25zZW50X29lbSIpJiYiMSI9PXUuY29uc2VudF9vZW07YS5zdWJtaXRDb25zZW50KHQsbCl9KTthLnByZVNlbmRJbXBsaWNpdCgpO20ucmV2ZWFsKHthbmltYXRpb246ImZhZGVBbmRQb3AiLGFuaW1hdGlvbnNwZWVkOjMwMCxjbG9zZW9uYmFja2dyb3VuZGNsaWNrOiExLGRpc21pc3Ntb2RhbGNsYXNzOiJjbG9zZS1yZXZlYWwtbW9kYWwiLApjbG9zZW9uZXNjYXBlOiExfSl9fWVsc2UiIj09YS5jb25zZW50RGV0YWlsc0VOJiZ2b2lkIDAhPWEuZGV0YWlsc0RlZmF1bHRzLkVOR0xJU0gmJnZvaWQgMCE9YS5kZXRhaWxzRGVmYXVsdHMuRlJFTkNIJiYoYS5jb25zZW50RGV0YWlsc0VOPWEuZGV0YWlsc0RlZmF1bHRzLkVOR0xJU0hbMl0sYS5jb25zZW50RGV0YWlsc0ZSPWEuZGV0YWlsc0RlZmF1bHRzLkZSRU5DSFsyXSksYj9yZWFsU2hvd1BvcHVwV2lkZ2V0KGMpOmEucmVhZHlUb1NlbmQoKX0pO2Yuc2V0TmV4dChoKS5leGV1dGUoKX0pfSxoaWRlQ29uc2VudDpmdW5jdGlvbigpe3ZhciBiPSQoIiNhc1BvcFVwOnZpc2libGUiKTskKCIjYXNQdXJjaGFzZUludGVudCIpLmlzKCI6dmlzaWJsZSIpJiYiaGlkZGVuIiE9PSQoIiNhc1B1cmNoYXNlSW50ZW50IikuY3NzKCJ2aXNpYmlsaXR5IikmJihiPSQoIiNhc1B1cmNoYXNlSW50ZW50OnZpc2libGUiKSxjb21wbGV4PSEwKTswPGIubGVuZ3RoJiZiLnRyaWdnZXIoInJldmVhbDpjbG9zZSIpfSwKc2F2ZUNvbnNlbnQ6ZnVuY3Rpb24oYixjLGQsZil7JCgiYm9keSIpLmNzcygib3ZlcmZsb3ciLCJhdXRvIik7YS5oaWRlQ29uc2VudCgpO3ZvaWQgMD09ZCYmKGQ9IiIpO3ZhciBoPWI\/NzMwOjE4MDtjPXtlbWFpbDphLnVzZXJFbWFpbCxmaXJzdDphLnVzZXJGaXJzdE5hbWUsbGFzdDphLnVzZXJMYXN0TmFtZSxwaG9uZTphLnVzZXJQaG9uZSxzaXRlSUQ6JCgiI3NpdGVJRCIpLnZhbCgpLGZyZXF1ZW5jeTpiPzE6LTEsZXhwbGljaXQ6Yj8xOjAsZXhwbGljaXRPRU06Yz8xOjAsaW1nOmQscmVmZXJlcjp2b2lkIDAhPWRvY3VtZW50LnJlZmVycmVyP2RvY3VtZW50LnJlZmVycmVyOiIiLGZyb206IkVIIn07aWYodm9pZCAwIT09YS5wcmVmZXJyZWRfY29udGFjdCYmIiIhPT1hLnByZWZlcnJlZF9jb250YWN0fHx2b2lkIDAhPT1nZXRDb29raWUoInByZWZlcnJlZF9jb250YWN0IikmJiIiIT09Z2V0Q29va2llKCJwcmVmZXJyZWRfY29udGFjdCIpKWQ9YS5wcmVmZXJyZWRfY29udGFjdHx8CmdldENvb2tpZSgicHJlZmVycmVkX2NvbnRhY3QiKSxkPXsiVMOpbMOpcGhvbmUiOiJQSE9ORSIsQ291cnJpZWw6IkVNQUlMIn1bZF18fGQsbnVsbCE9PWQmJihjLmNvbnRhY3RQcmVmZXJlbmNlPWQudG9VcHBlckNhc2UoKSk7c2V0Q29va2llKCJ2aXNpdG9yX2ZyZXF1ZW5jeV9wcmVmZXJlbmNlIiwtMSxoKTtzZXRDb29raWUoInZpc2l0b3JfY29uc2VudF9wcmVmZXJlbmNlIixiPyJFeHBsaWNpdCI6IkltcGxpY2l0IixoKTtzZXRDb29raWUoInZpc2l0b3JfaGFzX2V4cGxpY2l0X2NvbnNlbnQiLGI\/InllcyI6Im5vIixoKTtzZXRDb29raWUoInZpc2l0b3JfZW1haWxfcHJlZmVyZW5jZSIsYy5lbWFpbCw5MCk7JCgiLnVpLWxvYWRlci1iYWNrZ3JvdW5kIikuc2hvdygpO3NldFRpbWVvdXQoZnVuY3Rpb24oKXskKCIudWktbG9hZGVyLWJhY2tncm91bmQiKS5oaWRlKCl9LDVFMyk7JC5hamF4KHt0eXBlOiJQT1NUIix1cmw6Ii9hamF4L3RyYWNrRW1haWxQcmVmZXJlbmNlP3dzd2lkdGg9MCIsCmRhdGFUeXBlOiJqc29uIixkYXRhOmMsY29tcGxldGU6ZnVuY3Rpb24obSl7dHJ5e3ZhciByPUpTT04ucGFyc2UobS5yZXNwb25zZVRleHQpO2EuY29uc2VudERldGFpbHNFTj1idG9hKHIuZGV0YWlsQ29uc2VudC5FTkdMSVNIKTthLmNvbnNlbnREZXRhaWxzRlI9YnRvYShyLmRldGFpbENvbnNlbnQuRlJFTkNIKX1jYXRjaChrKXt9YS5wb3N0U2F2ZUNvbnNlbnQoYixmKX19KX0scG9zdFNhdmVDb25zZW50OmZ1bmN0aW9uKGIsYyl7dm9pZCAwIT1hLmRldGFpbHNEZWZhdWx0cy5FTkdMSVNIJiZ2b2lkIDAhPWEuZGV0YWlsc0RlZmF1bHRzLkZSRU5DSCYmKGI\/KGEuY29uc2VudERldGFpbHNFTj1hLmRldGFpbHNEZWZhdWx0cy5FTkdMSVNIWzFdLGEuY29uc2VudERldGFpbHNGUj1hLmRldGFpbHNEZWZhdWx0cy5GUkVOQ0hbMV0pOihhLmNvbnNlbnREZXRhaWxzRU49YS5kZXRhaWxzRGVmYXVsdHMuRU5HTElTSFsyXSxhLmNvbnNlbnREZXRhaWxzRlI9YS5kZXRhaWxzRGVmYXVsdHMuRlJFTkNIWzJdKSk7CmlmKGMpe2lmKGEuaWdub3JlQ2FwdGNoYT9hLnJlYWR5VG9TZW5kKCk6YS5yZWNhcHRjaGEuZ2V0UmVzcG9uc2UoKS5kb25lKGZ1bmN0aW9uKGQpe2EuZ3JlY2FwdGNoYVJlc3BvbnNlVG9rZW49ZDthLnJlYWR5VG9TZW5kKCl9KSwiZnVuY3Rpb24iPT10eXBlb2YgYS5vbkFmdGVyQ29uc2VudClhLm9uQWZ0ZXJDb25zZW50KGIpfWVsc2UgYS5oaWRlQ29uc2VudCgpfSxzdWJtaXRDb25zZW50OmZ1bmN0aW9uKGIsYyxkKXthLmNvbnNlbnREZWFsZXI9YjthLmNvbnNlbnRPRU09YztpZihkJiYiY29tcGxleCI9PWQpe3ZhciBmPSIiOy0xPT1hLnB1cmNoYXNlX2ludGVudD8oZD0iUGFzIGRlIHJlcG9uc2UiLGY9Ik5PX0FOU1dFUiIpOmQ9YS5wdXJjaGFzZV9pbnRlbnQ7bnVsbCE9ZC5tYXRjaCgvMzAvKT8oZD0iTW9pbnMgZGUgMzAgam91cnMiLGY9IkxUXzMwX0RBWVMiKTpudWxsIT1kLm1hdGNoKC8zLyk\/KGQ9Ik1vaW5zIGRlIDMgbW9pcyIsZj0iTFRfM19NT05USFMiKTpudWxsIT1kLm1hdGNoKC82LykmJgoobnVsbCE9ZC5tYXRjaCgvcGx1c3xvdmVyfG1vcmUvKT8oZD0iUGx1cyBkZSA2IG1vaXMiLGY9IkdUXzZfTU9OVEhTIik6KGQ9Ik1vaW5zIGRlIDYgbW9pcyIsZj0iTFRfNl9NT05USFMiKSk7dmFyIGg9IlJlcG9uc2UgLSAiK2EucHVyY2hhc2VfaW50ZW50X3NlY3Rpb24udG9VcHBlckNhc2UoKTthLmxvZ0V2ZW50KCJJbnRlbnRpb25zIGFjaGF0OiAiK2QsIlBVUkNIQVNFX0lOVEVOVF8iK2YpOyJ1bmRlZmluZWQiIT09dHlwZW9mIGRlYnVnJiZkZWJ1ZyhbImIuX3RyYWNrRXZlbnQiLCJJbnRlbnRpb25zIGFjaGF0IixoLGQsMV0pfXN3aXRjaChhLnN1Ym1pdFR5cGUpe2Nhc2UgInNjcmF0Y2giOmNhc2UgImluc3RhbnRSZWJhdGUiOnJlYWxTdWJtaXRSZWJhdGVDb3Vwb24oKTticmVhaztkZWZhdWx0OiIiIT1hLnBvc3RTdWJtaXRDYWxsYmFjayYmZXZhbChhLnBvc3RTdWJtaXRDYWxsYmFjayl9InNjcmF0Y2giPT1hLnN1Ym1pdFR5cGUmJnNob3dQb3B1cFdpZGdldCgpOyQoIiNsYXN0Q29uc2VudFBvcCIpLnZhbChiPwoiRXhwbGljaXQiOiJJbXBsaWNpdCIpO2Euc2F2ZUNvbnNlbnQoYixjLCIiLCEwKX0scHJlU2VuZENoZWNrczpmdW5jdGlvbihiKXtiP2EucmVhZHlUb1NlbmQoKTphLnNob3dDb25zZW50KCl9LHNlbmRNYWlsOmZ1bmN0aW9uKGIpe3JldHVybiAkanNjb21wLmFzeW5jRXhlY3V0ZVByb21pc2VHZW5lcmF0b3JGdW5jdGlvbihmdW5jdGlvbiooKXthLnN1Ym1pdFR5cGU9Im5vcm1hbCI7Yj0idW5kZWZpbmVkIiE9dHlwZW9mIGI\/YjohMTthLmlnbm9yZUNhcHRjaGF8fChhLmdyZWNhcHRjaGFSZXNwb25zZVRva2VuPXlpZWxkIGEucmVjYXB0Y2hhLmdldFJlc3BvbnNlKCkpO2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgJCgiI29uTGVhZFN1Ym1pdEdlb2xvYyIpLnZhbCgpfHwxIT0kKCIjb25MZWFkU3VibWl0R2VvbG9jIikudmFsKCl8fCJ1bmRlZmluZWQiPT10eXBlb2YgZ2VvTG9jYXRvcnx8YS5za2lwR2VvTG9jKWEucHJlU2VuZENoZWNrcyhiKTtlbHNle3ZhciBjPW5ldyBnZW9Mb2NhdG9yKGZ1bmN0aW9uKGQpe2EuZ2VvbG9jX3N0YXR1cz0KZC5nZW9sb2Nfc3RhdHVzOzE9PWQucmVzdWx0JiYoYS5nZW9sb2NfbGF0PWQubGF0aXR1ZGUsYS5nZW9sb2NfbG9uZz1kLmxvbmdpdHVkZSxhLmdlb2xvY19hY2N1cmFjeT1kLmFjY3VyYWN5LGEuZ2VvbG9jX3RyYWNrX3N0cj1kLmdlb2NvZGVfYWRkcmVzcyxhLmdlb2xvY19lbWFpbF9zdHI9ZC5nZW9jb2RlX2FkZHJlc3Nfc3RyLC0xPT1hLmJvZHkuaW5kZXhPZigiIyNHRU9MT0NBVElPTiMjIikmJihhLmJvZHk9dHJpbShhLmJvZHkpLnJlcGxhY2UoLzxicj4mbmJzcDsvZywiPGJyPiIpKyIjI0dFT0xPQ0FUSU9OIyMiKSwidW5kZWZpbmVkIiE9dHlwZW9mIGFjdGl2ZVVzZXJQcm9maWxlTW5nJiYidW5kZWZpbmVkIiE9dHlwZW9mIGFjdGl2ZVVzZXJQcm9maWxlTW5nLmxvZ1BhZ2VWaWV3RXZlbnQmJmFjdGl2ZVVzZXJQcm9maWxlTW5nLmxvZ1BhZ2VWaWV3RXZlbnQoIlBPU1RBTF9DT0RFIixkLmdlb2NvZGVfYWRkcmVzc19zdHIpKTsidW5kZWZpbmVkIj09dHlwZW9mICQoIiNsZWFkU2VudCIpLnZhbCgpJiYKKGQ9JCgiPGlucHV0PiIpLmF0dHIoe2lkOiJsZWFkU2VudCIsdHlwZToiaGlkZGVuIn0pLnZhbCgxKSwkKCIjZm9vdGVyRGl2IikuYXBwZW5kKGQpLGEucHJlU2VuZENoZWNrcyhiKSl9KTtjLnRyYWNrTG9jYXRpb25HQT0hMDtjLmdldExvY2F0aW9uKCl9fSl9LHNlbmRVc2VyRW1haWw6ZnVuY3Rpb24oYixjKXtzZW5kVG9EYXRhPXt9O3ZhciBkPWI9IiIsZj0iIixoPSIiO2ZvcihpIGluIGMpaWYoInN0cmluZyI9PXR5cGVvZiBpKXN3aXRjaChpLnRvTG93ZXJDYXNlKCkpe2Nhc2UgImVtYWlsdG8iOmQ9Y1tpXTticmVhaztjYXNlICJlbWFpbGlkIjpiPWNbaV07YnJlYWs7Y2FzZSAiZGVhbGVyZW1haWwiOmY9Y1tpXTticmVhaztjYXNlICJkZWFsZXJwaG9uZSI6aD1jW2ldO2JyZWFrO2RlZmF1bHQ6c2VuZFRvRGF0YVtpXT1jW2ldfWM9e3ZhcnM6SlNPTi5zdHJpbmdpZnkoc2VuZFRvRGF0YSksc2l0ZWlkOiQoIiN0b3BzaXRlaWQiKS52YWwoKSxsYW5ndWFnZTokKCIjYWN0aXZlc2l0ZWxhbmd1YWdlIikudmFsKCksCmVtYWlsaWQ6YixlbWFpbHRvOmQsZGVhbGVyRW1haWw6ZixkZWFsZXJQaG9uZTpoLHNvdXJjZVVSSTp3aW5kb3cubG9jYXRpb24uaHJlZn07JC5hamF4KHt0eXBlOiJQT1NUIix1cmw6Ii9hamF4L2FkZE1haWxUb1NlbmQ\/d3N3aWR0aD0wIixkYXRhOmN9KX0sZ2V0U3RvY2tOdW1iZXI6ZnVuY3Rpb24oKXtpZihhLnN0b2NrTnVtYmVyKXJldHVybiBhLnN0b2NrTnVtYmVyO2lmKDA8JCgiI2xhc3R2aWV3ZWRzdG9ja251bWJlciIpLmxlbmd0aCYmMDwkKCIjdGFyZ2V0UGFnZSIpLmxlbmd0aCYmWyJORVdDQVJERVRBSUxTIiwiQ0FSREVUQUlMUyIsIlBST01PIiwiVkVISUNMRUVWQUwiXS5pbmNsdWRlcygkKCIjdGFyZ2V0UGFnZSIpLnZhbCgpKSl7dmFyIGI9JCgiI2xhc3R2aWV3ZWRzdG9ja251bWJlciIpLnZhbCgpO2lmKDI8Yi5sZW5ndGgpe3ZhciBjPWIuaW5kZXhPZigiKFN0b2NrIik7LTE8YyYmKGI9Yi5zdWJzdHIoYys3KSxjPWIuaW5kZXhPZigiKSIpLAotMTxjJiYoYj1iLnN1YnN0cigwLGMpLnRyaW0oKSkpO2IrPSIifWVsc2UgYj0iIn1lbHNlIGI9Z2V0UGFyYW1ldGVyQnlOYW1lKCJzdG9ja25vIil8fCIiO3JldHVybiBiLnRyaW0oKX0sZ2V0VlBEVXJsRnJvbVN0b2NrOmZ1bmN0aW9uKCl7dmFyIGI9IkVOR0xJU0giPT0kKCIjYWN0aXZlc2l0ZWxhbmd1YWdlIikudmFsKCk\/JCgiI2xhc3R2aWV3ZWR5ZWFyIikudmFsKCkrIiAiKyQoIiNsYXN0dmlld2VkbWFrZSIpLnZhbCgpKyIgIiskKCIjbGFzdHZpZXdlZG1vZGVsIikudmFsKCkrIiAiKyQoIiNsYXN0dmlld2Vkc3RvY2tudW1iZXIiKS52YWwoKTokKCIjbGFzdHZpZXdlZG1ha2UiKS52YWwoKSsiICIrJCgiI2xhc3R2aWV3ZWRtb2RlbCIpLnZhbCgpKyIgIiskKCIjbGFzdHZpZXdlZHllYXIiKS52YWwoKSsiICIrJCgiI2xhc3R2aWV3ZWRzdG9ja251bWJlciIpLnZhbCgpO3RyeXt2YXIgYz1hLmdldFN0b2NrTnVtYmVyKCksZD0iIixmPSJFTkdMSVNIIj09JCgiI2FjdGl2ZXNpdGVsYW5ndWFnZSIpLnZhbCgpPwoidXNlZCI6Im9jY2FzaW9uIixoPWcoImhyZWYiKSxtPWcoInByb3RvY29sIikscj1oLnJlcGxhY2UobSsiLy8iLCIiKS5zcGxpdCgiLyIpLGs9clswXSx0PWguaW5kZXhPZigiLWlkIik7aWYoInVuZGVmaW5lZCI9PT10eXBlb2YgcGFnZXx8IkJVSUxEQU5EUFJJQ0UiIT1wYWdlJiYiTkVXQ0FSREVUQUlMUyIhPXBhZ2UpaWYoLTE8dCl7dmFyIHU9cGFyc2VJbnQoaC5zdWJzdHIodCszKS5yZXBsYWNlKCIuaHRtbCIsIiIpLDEwKTtpZighaXNOYU4odSkmJjA8dSl7dmFyIGw9cltyLmxlbmd0aC0xXTstMTxsLmluZGV4T2YodSkmJihkPSc8YSBocmVmPSInK20rIi8vIitrKyIvIitmKyIvIitsKyJcIiB0YXJnZXQ9J19ibGFuayc+IitiKyI8L2E+Iil9fWVsc2UiIiE9PWEudHJpbSYmKGI9IkVOR0xJU0giPT0kKCIjYWN0aXZlc2l0ZWxhbmd1YWdlIikudmFsKCk\/JCgiI2xhc3R2aWV3ZWR5ZWFyIikudmFsKCkrIiAiKyQoIiNsYXN0dmlld2VkbWFrZSIpLnZhbCgpKyIgIiskKCIjbGFzdHZpZXdlZG1vZGVsIikudmFsKCkrCiIgIithLnRyaW06JCgiI2xhc3R2aWV3ZWRtYWtlIikudmFsKCkrIiAiKyQoIiNsYXN0dmlld2VkbW9kZWwiKS52YWwoKSsiICIrYS50cmltKyIgIiskKCIjbGFzdHZpZXdlZHllYXIiKS52YWwoKSk7ZWxzZSIiIT09YS50cmltJiYoYj0iRU5HTElTSCI9PSQoIiNhY3RpdmVzaXRlbGFuZ3VhZ2UiKS52YWwoKT8kKCIjbGFzdHZpZXdlZHllYXIiKS52YWwoKSsiICIrJCgiI2xhc3R2aWV3ZWRtYWtlIikudmFsKCkrIiAiKyQoIiNsYXN0dmlld2VkbW9kZWwiKS52YWwoKSsiICIrYS50cmltOiQoIiNsYXN0dmlld2VkbWFrZSIpLnZhbCgpKyIgIiskKCIjbGFzdHZpZXdlZG1vZGVsIikudmFsKCkrIiAiK2EudHJpbSsiICIrJCgiI2xhc3R2aWV3ZWR5ZWFyIikudmFsKCkpLGQ9JzxhIGhyZWY9IicraCsiXCIgdGFyZ2V0PSdfYmxhbmsnPiIrYisiPC9hPiI7aWYoIiI9PWQmJjI8Yy5sZW5ndGgpe3ZhciBxPSQoIiN0b3BzaXRlaWQiKS52YWwoKSx3PSJFTkdMSVNIIj09JCgiI2FjdGl2ZXNpdGVsYW5ndWFnZSIpLnZhbCgpPwoiZW4iOiJmciI7JC5hamF4KHt0eXBlOiJHRVQiLGFzeW5jOiExLGRhdGFUeXBlOiJqc29uIix1cmw6Ii8iK3crIi9waHAvZ2V0VVJMRnJvbVN0b2NrLnBocD9zaXRlSUQ9IitxKyImc3RvY2s9IitjLHN1Y2Nlc3M6ZnVuY3Rpb24ocCl7Im9iamVjdCI9PXR5cGVvZiBwJiZudWxsIT1wJiZ2b2lkIDAhPXAubWFrZSYmKGQ9JzxhIGhyZWY9IicrbSsiLy8iK2srIi8iK2YrIi8iKyhwLm1ha2UrIi0iK3AubW9kZWwrIi0iK3AueWVhcisiLWlkIitwLmlkKyIuaHRtbFwiIHRhcmdldD0nX2JsYW5rJz4iKStwLmZ1bGwrIjwvYT4iKX19KX0iIiE9ZCYmKGI9ZCl9Y2F0Y2gocCl7Y29uc29sZS5sb2cocCl9cmV0dXJuIGJ9LHNldFNlbmRBbmREZXBhcnRtZW50T3ZlcnJpZGU6ZnVuY3Rpb24oYil7ZnVuY3Rpb24gYyh1LGwpezA8dS5sZW5ndGgmJiIiIT09dS52YWwoKSYmKGIuc2VuZFRvPXUudmFsKCkpOzA8bC5sZW5ndGgmJiIiIT09bC52YWwoKSYmKGIuc2VuZFRvQURGRm9ybWF0PWwudmFsKCkpfQppZigwIT0kKCIjaXNHZW5lcmljU2VhcmNoUGFnZSIpLmxlbmd0aCYmInRydWUiPT09JCgiI2lzR2VuZXJpY1NlYXJjaFBhZ2UiKS52YWwoKSl7c3dpdGNoKGEubWFpbElEKXtjYXNlICJtZW51U2VydmljZSI6Y2FzZSAibWVudUNvbnRhY3RVcyI6Y2FzZSAiaGVhZGVyU2VydmljZSI6cmV0dXJufXZhciBkPSQoIiNDVVNUT01fU0VORF9MRUFEIik7aWYoMCE9PWQubGVuZ3RoJiYwIT09ZC52YWwoKSYmIm51bGwiIT09ZC52YWwoKSl7Yi5kZXBhcnRtZW50PWQudmFsKCkudG9VcHBlckNhc2UoKTt2YXIgZj0kKCIjbmV3RW1haWwiKSxoPSQoIiNuZXdBZGZFbWFpbCIpLG09JCgiI3RleHRTZW5kVG9FbWFpbCIpLHI9JCgiI3RleHRTZW5kVG9FbWFpbEFERiIpLGs9JCgiI2ZpbmFuY2VFbWFpbCIpLHQ9JCgiI2ZpbmFuY2VBZGZFbWFpbCIpO3N3aXRjaChkLnZhbCgpKXtjYXNlICJuZXciOmMoZixoKTticmVhaztjYXNlICJ1c2VkIjpjKG0scik7YnJlYWs7Y2FzZSAiZmluYW5jZSI6YyhrLHQpfX19fSwKZ2V0SnNvbk9iamVjdDpmdW5jdGlvbigpeyIiPT1hLnRyaW0mJiQoIiNwb3B1cHRyaW0iKS5sZW5ndGgmJiJ7JFBPUFVQVFJJTX0iIT0kKCIjcG9wdXB0cmltIikudmFsKCkmJihhLnRyaW09JCgiI3BvcHVwdHJpbSIpLnZhbCgpKTt2YXIgYj17fSxjPWZ1bmN0aW9uKHkpe3RyeXtyZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KChudWxsIT1Db29raWVzLmdldCh5KSYmInVuZGVmaW5lZCIhPXR5cGVvZiBDb29raWVzLmdldCh5KT9lc2NhcGUoQ29va2llcy5nZXQoeSkpOiIiKSsiIi5yZXBsYWNlKC9cKy9nLCIlMjAiKSl9Y2F0Y2goRCl7cmV0dXJuKG51bGwhPUNvb2tpZXMuZ2V0KHkpJiYidW5kZWZpbmVkIiE9dHlwZW9mIENvb2tpZXMuZ2V0KHkpP2VzY2FwZShDb29raWVzLmdldCh5KSk6IiIpKyIiLnJlcGxhY2UoL1wrL2csIiUyMCIpfX0sZD1jKCJyZWxhbmNlSUQiKSxmPWMoInV0bV9zb3VyY2UiKSxoPWMoInV0bV9jYW1wYWlnbiIpLG09YS5kZWNvZGVVUkxSZWN1cnNpdmVseShjKCJ1dG1fa2V5d29yZCIpKSwKcj1jKCJ1dG1fbGFuZGluZ19mb290ZXIiKSxrPWMoInV0bV9zb3VyY2VfcmV0YXJnZXRpbmciKSx0PWMoInV0bV9jYW1wYWlnbl9yZXRhcmdldGluZyIpLHU9IkVOR0xJU0giPT0kKCIjYWN0aXZlc2l0ZWxhbmd1YWdlIikudmFsKCk\/IktleXdvcmQiOiJNb3QtY2wmIzIzMzsiLGw9MDxtLmxlbmd0aD8iWyAiK3UrIjogIittKyJdIjoiIixxPTA8ci5sZW5ndGg\/IltEZXN0aW5hdGlvbjogIitkMmNtZWRpYS5nZXRIdHRwVGV4dCgpKyI6Ly8iK3dpbmRvdy5sb2NhdGlvbi5ob3N0K3IrIl0iOiJbRGVzdGluYXRpb246ICIrZDJjbWVkaWEuZ2V0SHR0cFRleHQoKSsiOi8vIit3aW5kb3cubG9jYXRpb24uaG9zdCtyKyIgLl0iO3U9YygibG9jX2ludGVyZXN0Iik7Yz1jKCJsb2NfcGh5c2ljYWwiKTt2YXIgdz11P2Bsb2NfaW50ZXJlc3Q9JHt1fWA6IiIscD1jP2Bsb2NfcGh5c2ljYWw9JHtjfWA6IiIsdj0kKCJib2R5IikuaGFzQ2xhc3MoIkVOR0xJU0giKT8iT3JnYW5pYyI6Ik9yZ2FuaXF1ZSI7Cmw9MDxmLmxlbmd0aD9gJHtmfSAtICR7aH0gJHtsfSAke3d9ICR7cH1gOnY7cT1kMmNtZWRpYS5jYXBpdGFsaXNlRmlyc3RMZXR0ZXJPZkV2ZXJ5V29yZChsKSsiICIrcTtwPSIiO3c9YS5nZXRTdG9ja051bWJlcigpOyIiIT13JiYocD0iKFN0b2NrOiIrYS5nZXRTdG9ja051bWJlcigpKyIpIik7dj17bmV3OiJFTkdMSVNIIj09c2l0ZVBhZ2UubGFuZz8ibmV3IjoibmV1ZiIsbmV3aW52OiJFTkdMSVNIIj09c2l0ZVBhZ2UubGFuZz8ibmV3IjoibmV1ZiIsdXNlZDoiRU5HTElTSCI9PXNpdGVQYWdlLmxhbmc\/InVzZWQiOiJkJ29jY2FzaW9uIn07YS5ib2R5PWEuYm9keS5yZXBsYWNlKC97XCRVVE1ERVRBSUxTfS9nLHEpO2EuYm9keT1hLmJvZHkucmVwbGFjZSgve1wkVVNFUk5BTUV9L2csYS51c2VyRmlyc3ROYW1lKTthLmJvZHk9YS5ib2R5LnJlcGxhY2UoL3tcJFVTRVJQT1NUQUx9L2csYS51c2VyUG9zdGFsLnRvVXBwZXJDYXNlKCkpO2EuYm9keT1hLmJvZHkucmVwbGFjZSgve1wkVVRNREVUQUlMU30vZywKIiIpO2EuYm9keT1hLmJvZHkucmVwbGFjZSgve1wkRk9PVEVSfS9nLCIiKTthLmJvZHk9YS5ib2R5LnJlcGxhY2UoL3tcJEVNQUlMQlVJTERBTkRQUklDRX0vZyxhLmJhbmRwTGluaygpKTthLmJvZHk9YS5ib2R5LnJlcGxhY2UoL3tcJFNUT0NLTlVNQkVSTEFCRUx9L2cscCk7YS5ib2R5PWEuYm9keS5yZXBsYWNlKC97XCRTVE9DS05VTUJFUn0vZyxwKTthLmJvZHk9YS5ib2R5LnJlcGxhY2UoL3tcJFZFSElDTEVfQ09ORElUSU9OfS9nLHZbYS5jb25kaXRpb24udG9Mb3dlckNhc2UoKV0pO2lmKCIiIT09YS5ib2R5KXt2YXIgQT0kKCdpbnB1dFtkYXRhLWZvcnZhcj0iT1ZFUldSSVRURVJERUFMRVIiXScpLnZhbCgpJiYkKCdpbnB1dFtkYXRhLWZvcnZhcj0iT1ZFUldSSVRURVJERUFMRVIiXScpLmxlbmd0aD8kKCdpbnB1dFtkYXRhLWZvcnZhcj0iT1ZFUldSSVRURVJERUFMRVIiXScpLnZhbCgpOiIiO3A9IiIhPSQoJ2lucHV0W2RhdGEtZm9ydmFyPSJERUFMRVIiXScpLnZhbCgpJiYkKCdpbnB1dFtkYXRhLWZvcnZhcj0iREVBTEVSIl0nKS5sZW5ndGg\/CiQoJ2lucHV0W2RhdGEtZm9ydmFyPSJERUFMRVIiXScpLnZhbCgpOiQoIiNoaWRkZW5EZWFsZXJOYW1lIikudmFsKCk7QT1BIT1wJiYiIiE9QT9BOnA7YS5kZWFsZXJOYW1lPWEuZGVhbGVyTmFtZT9hLmRlYWxlck5hbWU6QX1hLmJvZHk9YS5ib2R5LnJlcGxhY2UoInskREVBTEVSTkFNRX0iLGEuZGVhbGVyTmFtZSk7YS5ib2R5PWEuYm9keS5yZXBsYWNlKCJ7JENVU1RPTVZFSElDTEVJTlRFUkVTVH0iLGEubWFrZSsiICIrYS5tb2RlbCsiICIrYS55ZWFyKTthLmxlYWRSZXF1ZXN0VHlwZSYmKGEuYm9keT1hLmJvZHkucmVwbGFjZUFsbCgieyRSRVFVRVNUfSIsYS5sZWFkUmVxdWVzdFR5cGUpLGEuc3ViamVjdD1hLnN1YmplY3QucmVwbGFjZUFsbCgieyRSRVFVRVNUfSIsYS5sZWFkUmVxdWVzdFR5cGUpLGEubGVhZFJlcXVlc3RUeXBlPSIiKTtib2R5TG93ZXI9YS5ib2R5LnRvTG93ZXJDYXNlKCk7Zm9yKHY9MDstMTxib2R5TG93ZXIuaW5kZXhPZigicmVtb3ZlZW1wdHkiKTspe3A9Ym9keUxvd2VyLmluZGV4T2YoInJlbW92ZWVtcHR5Iik7CmlmKC0xPT1wKWJyZWFrO3JwbEVuZD1ib2R5TG93ZXIuaW5kZXhPZigiPGJyPiIscCk7cnBsU3RhcnQ9Ym9keUxvd2VyLmxhc3RJbmRleE9mKCI8YnI+IixwKTtpZigtMT09cnBsRW5kfHwtMT09cnBsU3RhcnQpYnJlYWs7cnBsU3RyaW5nPWEuYm9keS5zdWJzdHJpbmcocnBsU3RhcnQscnBsRW5kKTthLmJvZHk9YS5ib2R5LnJlcGxhY2UocnBsU3RyaW5nLCIiKTtib2R5TG93ZXI9YS5ib2R5LnRvTG93ZXJDYXNlKCk7disrO2lmKDUwPHYpYnJlYWt9dj1hLmdldFZQRFVybEZyb21TdG9jaygpOzA9PXYudHJpbSgpLmxlbmd0aCYmKHA9JCgnaW5wdXRbbmFtZT0ic2VhcmNoZWR2ZWhpY2xlIl0nKS5maWx0ZXIoIjp2aXNpYmxlOmZpcnN0Iiksdj1wLmxlbmd0aD9wLnZhbCgpOiIiKTthLnBheW1lbnRWZWhpY2xlJiYwPGEucGF5bWVudFZlaGljbGUubGVuZ3RoJiYodj1hLnBheW1lbnRWZWhpY2xlKTsiIj09YS5jYXJpZCYmJCgiI3RvcGNhcmlkIikubGVuZ3RoJiYoYS5jYXJpZD0kKCIjdG9wY2FyaWQiKS52YWwoKSk7CiIiPT1hLnZpbiYmJCgiI3Bob25ldmluIikubGVuZ3RoJiYoYS52aW49JCgiI3Bob25ldmluIikudmFsKCkpO3A9YS5ib2R5LmluZGV4T2YoIjxzcGFuIGlkPSdwaFNFQVJDSFZFSElDTEUnPiIpO2lmKC0xPHApe3ZhciB6PWEuYm9keS5zdWJzdHIocCsyNykuaW5kZXhPZigiPC9zcGFuPiIpOy0xPHomJihhLmJvZHk9YS5ib2R5LnN1YnN0cigwLHApK3YrYS5ib2R5LnN1YnN0cihwK3orMjcrNykpfWEuYm9keT1hLmJvZHkucmVwbGFjZSgvPHNwYW4gaWQ9J3BoU0VBUkNIVkVISUNMRSc+L2csIiIpO2EuYm9keT1hLmJvZHkucmVwbGFjZSgvPFwvc3Bhbj4vZywiIik7YS5ib2R5PWEuYm9keS5yZXBsYWNlKC97XCRTRUFSQ0hFRFZFSElDTEV9L2csdik7aWYoIjEiPT0kKCIjaGFzVkJEQ0VuYWJsZWQiKS52YWwoKSl7cD0iIjt2PTA7ej0iIjtDb29raWVzLmdldCgiRDJDVVVJRCIpO2Zvcih2YXIgeCBpbiBzZXNzaW9uU3RvcmFnZSlpZigwPT14LmluZGV4T2YoIlZEUE1WQk5QLSIpKXt2YXIgQz0Kc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSh4KTtDPj16JiYoej1DLHA9eC5yZXBsYWNlKCJWRFBNVkJOUC0iLCIiKSl9aWYoIiI9PXAmJih6PXNlc3Npb25TdG9yYWdlLmdldEl0ZW0oImQyY19WRFBNViIpLG51bGwhPXopKWZvcih4IGluIHo9SlNPTi5wYXJzZSh6KSx6KUM9elt4XSwyPD1DJiZDPnYmJih2PUMscD14KTsiIiE9cCYmLTE9PWEuYm9keS5pbmRleE9mKCJbVkJEQy1IT1RdIikmJi0xPT1hLmJvZHkuaW5kZXhPZigiW1ZCREMtTVlTXSIpJiYoeD13aW5kb3cubG9jYXRpb24ucHJvdG9jb2wrIi8vIit3aW5kb3cubG9jYXRpb24uaG9zdCtwLGEuYm9keSs9J1tWQkRDLUhPVF0gPGEgaHJlZj0iJyt4KyciPicreCsiPC9hPiIpfXg9JCgiI2N1cnJlbnRTdGF0dXMiKS52YWwoKTt4PSJ1bmRlZmluZWQiPT10eXBlb2YgeD8idXNlZCI6eC50b0xvd2VyQ2FzZSgpO3A9JCgiI3NlbmRFbWFpbFRvQWxsRGVhbGVycyIpO3A9cC5sZW5ndGgmJjE9PXAudmFsKCk7cD0kKCIjaGFzTXVsdGlwbGVEZWFsZXJzIik7CnA9cC5sZW5ndGgmJjE9PXAudmFsKCk7cD0kKCIjdG9wY2FyaWQiKTtwPTA8cC5sZW5ndGg\/JCgiI3RvcGNhcmlkIikudmFsKCk6IiI7cD0idW5kZWZpbmVkIiE9dHlwZW9mICQoIiNicmFuZEVtYWlsQWRmT3ZlcnJpZGUiKS52YWwoKT8kKCIjYnJhbmRFbWFpbEFkZk92ZXJyaWRlIikudmFsKCk6IiI7dj0idW5kZWZpbmVkIiE9dHlwZW9mICQoIiNicmFuZEVtYWlsQWRmT3ZlcnJpZGUiKS52YWwoKT8kKCIjYnJhbmRFbWFpbEFkZk92ZXJyaWRlIikudmFsKCk6IiI7InVuZGVmaW5lZCIhPXR5cGVvZiAkKCIjbmV3U2VjdGlvbk92ZXJyaWRlIikudmFsKCkmJiQoIiNuZXdTZWN0aW9uT3ZlcnJpZGUiKS52YWwoKTsidW5kZWZpbmVkIiE9dHlwZW9mICQoIiNuZXdTZWN0aW9uRW1haWwiKS52YWwoKSYmJCgiI25ld1NlY3Rpb25FbWFpbCIpLnZhbCgpOyJ1bmRlZmluZWQiIT10eXBlb2YgJCgiI25ld1NlY3Rpb25BZGZFbWFpbCIpLnZhbCgpJiYkKCIjbmV3U2VjdGlvbkFkZkVtYWlsIikudmFsKCk7CnN3aXRjaCghMCl7Y2FzZSA1PHAubGVuZ3RoJiYibmV3Ij09eCYmIWEuaGFzU2VsZWN0ZWRNdWx0aUFkZHJlc3M6YS5zZW5kVG89cCxhLnNlbmRUb0FERkZvcm1hdD01PHYubGVuZ3RoP3Y6cH1iLmxhbmd1YWdlPSQoIiNhY3RpdmVzaXRlbGFuZ3VhZ2UiKS52YWwoKTsiZnVuY3Rpb24iPT10eXBlb2YgY2xlYW5BbmRFbmNvZGVUZXh0PyhiLnN1YmplY3Q9Y2xlYW5BbmRFbmNvZGVUZXh0KGEuc3ViamVjdCksYi5ib2R5PWNsZWFuQW5kRW5jb2RlVGV4dChhLmJvZHkpKTooYi5zdWJqZWN0PSQuYmFzZTY0LmVuY29kZShhLnN1YmplY3QpLGIuYm9keT0kLmJhc2U2NC5lbmNvZGUoYS5ib2R5KSk7Y2xlYW5FbWFpbERlbGltaXRlcj1mdW5jdGlvbih5KXt2YXIgRD0iIjsidW5kZWZpbmVkIiE9dHlwZW9mIHkmJm51bGwhPXkmJnkubGVuZ3RoJiYoRD15LnNwbGl0KCI7Iikuam9pbigiLCIpKTtyZXR1cm4gRH07InVzZWRjYXJzLmh0bWwiPT0kKCIjUEFHRUlEIikudmFsKCkmJiJORVciPT1hLmdldERlcCgpJiYKYS5zZW5kVG89PSQoIiNTSVRFVVNFREVNQUlMIikudmFsKCkmJmEuc2VuZFRvQURGRm9ybWF0PT0kKCIjU0lURVVTRURFTUFJTEFERiIpLnZhbCgpJiYoYS5zZW5kVG89JCgiI1NJVEVORVdFTUFJTCIpLnZhbCgpLGEuc2VuZFRvQURGRm9ybWF0PSQoIiNTSVRFTkVXRU1BSUxBREYiKS52YWwoKSk7Yi5zZW5kVG89YS5zZW5kVG87Yi5zZW5kVG9BREZGb3JtYXQ9Y2xlYW5FbWFpbERlbGltaXRlcihhLnNlbmRUb0FERkZvcm1hdCk7Yi5zZWxlY3RlZFNlbmRUbz1hLnNlbGVjdGVkU2VuZFRvO2Iuc2VsZWN0ZWRTZW5kVG9BREZGb3JtYXQ9YS5zZWxlY3RlZFNlbmRUb0FERkZvcm1hdDtiLmVtYWlsTGlzdFN1ZmZpeD0iIjskKCIjc2l0ZWNvbXBpbGVpZCIpLmxlbmd0aCYmKGIuZW1haWxMaXN0U3VmZml4PSQoIiNzaXRlY29tcGlsZWlkIikudmFsKCkpO2IubGVhZEludm9rZXI9YS5sZWFkSW52b2tlcnx8ImdlbmVyaWMiO2IuZGlnaXRhbFJldGFpbFNJRD1hLmRpZ2l0YWxSZXRhaWxTSUR8fAoiIjtiLmNvbnNlbnREZWFsZXI9YS5jb25zZW50RGVhbGVyO2IuY29uc2VudE9FTT1hLmNvbnNlbnRPRU07Yi51c2VyRW1haWw9YS51c2VyRW1haWw7Yi50cmFkZWluPWEudHJhZGVpbjtiLnBvcHVwZGl2PWEucG9wdXBkaXY7Yi51c2VyQXR0YWNobWVudFBhdGg9YS51c2VyQXR0YWNobWVudFBhdGg7Yi51c2VyRmlyc3ROYW1lPWEudXNlckZpcnN0TmFtZTtiLnVzZXJMYXN0TmFtZT1hLnVzZXJMYXN0TmFtZTtiLmxpY2Vuc2VudW09YS5saWNlbnNlbnVtO2IudXNlclBob25lPWEudXNlclBob25lO2IucGhvbmVWYWxpZGF0aW9uQXR0ZW1wdHM9YS5waG9uZVZhbGlkYXRpb25BdHRlbXB0cztiLnBob25lTWFuZGF0b3J5PWEucGhvbmVNYW5kYXRvcnk7Yi51c2VyUG9zdGFsPWEudXNlclBvc3RhbC50b1VwcGVyQ2FzZSgpfHxhLmNvbnRhY3RaaXAudG9VcHBlckNhc2UoKTtiLnVzZXJBZGRyZXNzPWEudXNlckFkZHJlc3N8fGEuY29udGFjdEFkZHJlc3M7Yi5wcm92aW5jZT1hLmNvbnRhY3RQcm92aW5jZTsKYi5iaXJ0aGRhdGU9YS5iaXJ0aGRhdGU7Yi5zZW5kRnJvbT1hLnNlbmRGcm9tO2IubWFpbElEPWEubWFpbElEO2IuaXNDVEE9YS5pc0NUQTtiLmJ1dHRvblRleHQ9YS5idXR0b25UZXh0O2IuZnJvbVVSTD13aW5kb3cubG9jYXRpb24uaHJlZjtiLm1ha2U9YS5tYWtlfHwiIjtiLm1vZGVsPWEubW9kZWx8fCIiO2IudHJpbT1hLnRyaW18fCIiO2IudmluPWEudmlufHwiIjtiLnByaWNlPWEucHJpY2V8fCIiO2IueWVhcj1hLnllYXJ8fCIiO2IudmVoaWNsZVR5cGU9YS52ZWhpY2xlVHlwZXx8IiI7Yi5zdG9ja051bWJlcj13O2IuY2FyaWQ9YS5jYXJpZHx8IiI7Yi5jb25kaXRpb249YS5jb25kaXRpb247Yi5pc21vYmlsZXNpdGU9YS5pc21vYmlsZXNpdGU7Yi5pc0FtcD0iTk8iO2IucmVmZXJlcj0kKCIjdG9wcmVmZXJlciIpLnZhbCgpO2Iuc2l0ZWlkPSQoIiN0b3BzaXRlaWQiKS52YWwoKTtiLmRlYWxlcmlkPWEuZGVhbGVyaWR8fCIiO2Iub2VtQ2VydGlmaWNhdGlvbj0kKCIjb2VtQ2VydGlmaWNhdGlvbiIpLnZhbCgpfHwKbnVsbDtiLnV0bV9zb3VyY2U9ZjtiLnJlbGFuY2VJRD1kO2IudXRtX2NhbXBhaWduPWg7Yi51dG1fa2V5d29yZD1tO2IudXRtX2xhbmRpbmc9cjtiLnV0bV9kZXRhaWxzPWw7Yi51dG1fc291cmNlX3JldGFyZ2V0aW5nPWs7Yi51dG1fY2FtcGFpZ25fcmV0YXJnZXRpbmc9dDtiLmxvY19pbnRlcmVzdD11O2IubG9jX3BoeXNpY2FsPWM7Yi5wb3B1cE9mZmVyVHlwZT1hLnBvcHVwT2ZmZXJUeXBlO2IuZnJvbUZhY2Vib29rPWEuZnJvbUZhY2Vib29rO2IuZGV0YWlsc0ZSPWEuY29uc2VudERldGFpbHNGUjtiLmRldGFpbHNFTj1hLmNvbnNlbnREZXRhaWxzRU47Yi5mcm9tQUE9YS5mcm9tQUE7Yi5vd25lcklEPWEub3duZXJJRDtiLmxlYWRUaXRsZVVJVGV4dD1hLmxlYWRUaXRsZVVJVGV4dDtiLnNtcz1hLnNtcztiLm9uQWZ0ZXJMZWFkQ3JlYXRlZD1hLm9uQWZ0ZXJMZWFkQ3JlYXRlZDtiLnRyYWRlaW5iYXJSZWdpc3RlclBhcnRpYWxJRD1hLnRyYWRlaW5iYXJSZWdpc3RlclBhcnRpYWxJRHx8CiIiOyJ1bmRlZmluZWQiIT09dHlwZW9mIGNsaWVudFN0b3JhZ2UmJigiIiE9YS51c2VyRmlyc3ROYW1lJiZjbGllbnRTdG9yYWdlLnNldCgiZmlyc3RuYW1lIixhLnVzZXJGaXJzdE5hbWUpLCIiIT1hLnVzZXJMYXN0TmFtZSYmY2xpZW50U3RvcmFnZS5zZXQoImxhc3RuYW1lIixhLnVzZXJMYXN0TmFtZSksIiIhPWEudXNlckVtYWlsJiZjbGllbnRTdG9yYWdlLnNldCgiZW1haWwiLGEudXNlckVtYWlsKSwiIiE9YS51c2VyUGhvbmUmJmNsaWVudFN0b3JhZ2Uuc2V0KCJwaG9uZSIsYS51c2VyUGhvbmUpKTtiLmNoYXRib3RCb29zdElkPWdldENvb2tpZUQyYygiZDJjY2hhdGJvdGlkIik7Yi5zdHlsZWlkPSQoIiNzdHlsZUlkSW5Vc2UiKS5sZW5ndGg\/JCgiI3N0eWxlSWRJblVzZSIpLnZhbCgpOiQoIiNhY3RpdmVTdHlsZUlEIikubGVuZ3RoPyQoIiNhY3RpdmVTdHlsZUlEIikudmFsKCk6IiI7InVuZGVmaW5lZCIhPT10eXBlb2Ygd2luZG93LmFkcF9mb3VyZXllc19pZCYmd2luZG93LmFkcF9mb3VyZXllc19pZD8KKGIuVW5pdGVXZWJzaXRlQ3VzdG9tZXJJZD13aW5kb3cuYWRwX2ZvdXJleWVzX2lkLGNvbnNvbGUubG9nKCJEMlVEIC0gZW1haWxIYW5kbGVyIEpTIHBhc3NlZCIsd2luZG93LmFkcF9mb3VyZXllc19pZCkpOmNvbnNvbGUubG9nKCJEMlVEIC0gZW1haWxIYW5kbGVyIEpTIC0gd2luZG93LmFkcF9mb3VyZXllc19pZCBpZiB3YXMgdHJpZ2dlcmVkIix3aW5kb3cuYWRwX2ZvdXJleWVzX2lkKTthLm9uQWZ0ZXJMZWFkQ3JlYXRlZCYmKGIub25BZnRlckxlYWRDcmVhdGVkLmZyb209IiIsYS5zZW5kVG89YS5zZW5kVG98fCIiLGQ9YS5zZW5kVG8uc3BsaXQoIjsiKSxkWzBdLnRyaW0oKS5sZW5ndGg\/Yi5vbkFmdGVyTGVhZENyZWF0ZWQuZnJvbT1kWzBdLnRyaW0oKTooZD1hLnNlbmRUb0FERkZvcm1hdC5zcGxpdCgiLCIpLGRbMF0udHJpbSgpLmxlbmd0aCYmKGIub25BZnRlckxlYWRDcmVhdGVkLmZyb209ZFswXS50cmltKCkpKSk7Yi51c2VyQWdlbnQ9JCgiI3R4dFVzZXJBZ2VudCIpLnZhbCgpOwpiLmdyZWNhcHRjaGFSZXNwb25zZVRva2VuPWEuZ3JlY2FwdGNoYVJlc3BvbnNlVG9rZW47ZD1hLnJlY2FwdGNoYS5jdXJyZW50Q29udGV4dCgpO2IuZ3JlY2FwdGNoYUFjdGlvbj1kLmFjdGlvbjtiLmdyZWNhcHRjaGFNb2RlPWQubW9kZTtiLmNvbnRhY3RJRD1hLmNvbnRhY3RJRDtiLmNvbnRhY3ROQVM9YS5jb250YWN0TkFTO2IuY29udGFjdEJpcnRoPWEuY29udGFjdEJpcnRoO2IuZGVhbGVyTmFtZT1hLmRlYWxlck5hbWU\/YS5kZWFsZXJOYW1lOkE7Yi5hbGxvd19zaGFyZV9wZXJzb25hbF9kYXRhPWEuYWxsb3dfc2hhcmVfcGVyc29uYWxfZGF0YTtiLnByZWZlcnJlZF9jb250YWN0PWEucHJlZmVycmVkX2NvbnRhY3Q7Yi51dG1kZXRhaWxzVG9SZXBsYWNlPXE7IiIhPWEuZ2VvbG9jX3N0YXR1cyYmKGIuZ2VvbG9jX3N0YXR1cz1hLmdlb2xvY19zdGF0dXMsYi5nZW9sb2NfbGF0PWEuZ2VvbG9jX2xhdCxiLmdlb2xvY19sb25nPWEuZ2VvbG9jX2xvbmcsYi5nZW9sb2NfYWNjdXJhY3k9CmEuZ2VvbG9jX2FjY3VyYWN5LCJmdW5jdGlvbiI9PXR5cGVvZiBjbGVhbkFuZEVuY29kZVRleHQ\/KGIuZ2VvbG9jX3RyYWNrX3N0cj1jbGVhbkFuZEVuY29kZVRleHQoYS5nZW9sb2NfdHJhY2tfc3RyKSxiLmdlb2xvY19lbWFpbF9zdHI9Y2xlYW5BbmRFbmNvZGVUZXh0KGEuZ2VvbG9jX2VtYWlsX3N0cikpOihiLmdlb2xvY190cmFja19zdHI9JC5iYXNlNjQuZW5jb2RlKGEuZ2VvbG9jX3RyYWNrX3N0ciksYi5nZW9sb2NfZW1haWxfc3RyPSQuYmFzZTY0LmVuY29kZShhLmdlb2xvY19lbWFpbF9zdHIpKSk7IiIhPWEuY2FyMl9tYWtlJiYoYi5jYXIyX21ha2U9YS5jYXIyX21ha2UsYi5jYXIyX21vZGVsPWEuY2FyMl9tb2RlbCxiLmNhcjJfdHJpbT1hLmNhcjJfdHJpbSxiLmNhcjJfeWVhcj1hLmNhcjJfeWVhcixiLmNhcjJfY29sb3I9YS5jYXIyX2NvbG9yLGIuY2FyMl9vZG9tZXRlcj1hLmNhcjJfb2RvbWV0ZXIsYi5jYXIyX3Zpbj1hLmNhcjJfdmluLGIuY2FyMl90cmFuc21pc3Nvbj0KYS5jYXIyX3RyYW5zbWlzc29uLGIuY2FyMl9kcml2ZXRyYWluPWEuY2FyMl9kcml2ZXRyYWluLGIuY2FyMl9mdWVsdHlwZT1hLmNhcjJfZnVlbHR5cGUpO2Iuc2VydmljZURhdGUxPWEuc2VydmljZURhdGUxfHwiIjtiLnNlcnZpY2VEYXRlMj1hLnNlcnZpY2VEYXRlMnx8IiI7Yi53YWl0aW5nT25TaXRlPWEud2FpdGluZ09uU2l0ZXx8IiI7Yi5jb21tZW50cz1hLmNvbW1lbnRzO2Euc2tpcEdldERlcD9iLmRlcGFydG1lbnQ9YS5kZXBhcnRtZW50OihiLmRlcGFydG1lbnQ9YS5nZXREZXAoKSxhLmRlcGFydG1lbnQ9YS5nZXREZXAoKSk7aWYoIlVTRUQiPT1iLmRlcGFydG1lbnQmJjA9PWEuZGVwYXJ0bWVudEJ5U3RvY2spe3ZhciBCPSQoJ2lucHV0W25hbWU9InNlYXJjaGVkdmVoaWNsZSJdJykuZmlsdGVyKCI6dmlzaWJsZTpmaXJzdCIpLnZhbCgpO2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgQiYmKEI9Qi5zcGxpdCgiKFN0b2NrIiksQlsxXSkpe3ZhciBGPSJVU0VEIjtCPUJbMV0ucmVwbGFjZSgiKSIsCiIiKS5yZXBsYWNlKCI6IiwiIikucmVwbGFjZSgiIyIsIiIpLnRyaW0oKS50b0xvd2VyQ2FzZSgpOyQuYWpheCh7dHlwZToiR0VUIixhc3luYzohMSxkYXRhVHlwZToianNvbiIsdXJsOiIvanMvanNvbi91c2VkQnlQcmljZUFzYy5qc29uIixzdWNjZXNzOmZ1bmN0aW9uKHkpeyQuZWFjaCh5LGZ1bmN0aW9uKEQsRSl7aWYoRS5zbi50b0xvd2VyQ2FzZSgpPT1CKXJldHVybiBGPSIxIj09RS5pc25ld3x8IjEiPT1FLmlzZGVtbz8iTkVXIjoiVVNFRCIsITF9KTthLmRlcGFydG1lbnRCeVN0b2NrPUZ9fSl9fSIiIT09YS5kZXBhcnRtZW50QnlTdG9jayYmITEhPT1hLmRlcGFydG1lbnRCeVN0b2NrJiYoYi5kZXBhcnRtZW50PWEuZGVwYXJ0bWVudEJ5U3RvY2spOyFiLmRlcGFydG1lbnR8fCJuZXciPT1iLmRlcGFydG1lbnQudG9Mb3dlckNhc2UoKSYmInVzZWQiPT1iLmRlcGFydG1lbnQudG9Mb3dlckNhc2UoKT9iLmNvbmRpdGlvbj1iLmRlcGFydG1lbnQmJiJuZXciPT1iLmRlcGFydG1lbnQudG9Mb3dlckNhc2UoKT8KIk5ldyI6IlVzZWQiOmIuY29uZGl0aW9uPSQoIiNjdXJyZW50U3RhdHVzIikubGVuZ3RoPyQoIiNjdXJyZW50U3RhdHVzIikudmFsKCk6InVua25vd24iO2IuZGVwYXJ0bWVudC50b0xvd2VyQ2FzZSgpIT1iLmNvbmRpdGlvbi50b0xvd2VyQ2FzZSgpJiYoYi5jb25kaXRpb249Yi5kZXBhcnRtZW50LnRvTG93ZXJDYXNlKCkpO251bGwhPWEuY3JlZGl0RGF0YSYmKGIuY3JlZGl0RGF0YT1hLmNyZWRpdERhdGEpO251bGwhPWEuZGVhbGVyQXBwb2ludG1lbnREYXRhJiYoYi5kZWFsZXJBcHBvaW50bWVudERhdGE9YS5kZWFsZXJBcHBvaW50bWVudERhdGEpOzA8JCgiI3B1cmNoYXNlX2ludGVudF9hbnN3ZXIiKS5sZW5ndGgmJihiLnB1cmNoYXNlX2ludGVudD1hLnB1cmNoYXNlX2ludGVudCxiLnB1cmNoYXNlX2ludGVudF9hbnN3ZXI9JCgiI3B1cmNoYXNlX2ludGVudF9hbnN3ZXIiKS52YWwoKSxiLnB1cmNoYXNlX2ludGVudF9ub19hbnN3ZXI9JCgiI3B1cmNoYXNlX2ludGVudF9ub19hbnN3ZXIiKS52YWwoKSk7CmIucHVyY2hhc2VfaW50ZW50PWEuYXNrUHVyY2hhc2VJbnRlbnQ\/Yi5wdXJjaGFzZV9pbnRlbnQ\/Yi5wdXJjaGFzZV9pbnRlbnQ6LTE6ITE7JCgiI2N1cnJlbnRJdGVtVHlwZSIpLmxlbmd0aD9iLml0ZW1UeXBlPSQoIiNjdXJyZW50SXRlbVR5cGUiKS52YWwoKTpiLml0ZW1UeXBlPSIiO2EuYm9keSs9Ilx4M2MhLS0gSlMgVW5pcXVlIGlkOiIrTWF0aC5yb3VuZCg1RTMqTWF0aC5yYW5kb20oKSkrIi0tXHgzZSI7cmV0dXJuIGJ9LGdldERlcDpmdW5jdGlvbigpe3ZhciBiPShuZXcgRGF0ZSkuZ2V0RnVsbFllYXIoKSxjPS9cYihuZXd8bmV1ZnxuZXVmc3xjb25maWd1cmF0aW9uLWV0LXByaXh8YnVpbGQtYW5kLXByaWNlfGRlbW9zfGRlbW9uc3RyYXRldXJzfGNsZWFyYW5jZSlcYi8udGVzdCh3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUpLGQ9L1xiKHVzZWR8b2NjYXNpb24pXGIvLnRlc3Qod2luZG93LmxvY2F0aW9uLnBhdGhuYW1lKTtpZigidW5kZWZpbmVkIiE9PXR5cGVvZiB3aW5kb3cuZ1VzZWRTcnBBcHB6JiYKInVuZGVmaW5lZCIhPT10eXBlb2Ygd2luZG93LmdVc2VkU3JwQXBwei5maWx0ZXJJbnRlcmZhY2UmJiJmdW5jdGlvbiI9PT10eXBlb2Ygd2luZG93LmdVc2VkU3JwQXBwei5maWx0ZXJJbnRlcmZhY2UuZ2V0Q3VycmVudEZpbHRlclN0YXRlKXt2YXIgZj13aW5kb3cuZ1VzZWRTcnBBcHB6LmZpbHRlckludGVyZmFjZS5nZXRDdXJyZW50RmlsdGVyU3RhdGUoImNhdGVnb3J5Iik7aWYoITEhPT1mJiZmLmxlbmd0aClpZigxPT09Zi5sZW5ndGgmJjM9PT1mWzBdLnZhbHVlKWM9ITAsZD0hMTtlbHNle3ZhciBoLG09MCxyPTA7Zm9yKGg9MDtoIT09Zi5sZW5ndGg7aCsrKWZbaF0ubnVtPm0mJihtPWZbaF0ubnVtLHI9ZltoXS52YWx1ZSk7MT09PXJ8fDI9PT1yPyhjPSExLGQ9ITApOjM9PT1yJiYoYz0hMCxkPSExKX19Zj0wO2g9JCgnaW5wdXRbbmFtZT0ic2VhcmNoZWR2ZWhpY2xlIl0nKS5maWx0ZXIoIjpyZWFsbHlWaXNpYmxlOmZpcnN0Iik7MDxoLmxlbmd0aCYmKGg9aC52YWwoKS5tYXRjaCgvMTlbMC05XXsyfXwyMFswLTldezJ9L2cpLApudWxsIT1oJiYoZj1wYXJzZUludChoWzBdKSkpO2Z8fChmPWEueWVhcik7c3dpdGNoKGEubWFpbElEKXtjYXNlICJUaXJlc1JlcXVlc3QiOmNhc2UgIlBhcnRzUmVxdWVzdCI6cmV0dXJuIlBBUlRTIjtjYXNlICJTZXJ2aWNlUmVxdWVzdCI6Y2FzZSAiUmVjYWxscyI6Y2FzZSAiQm9keVNob3AiOmNhc2UgIm1lbnVTZXJ2aWNlIjpjYXNlICJoZWFkZXJTZXJ2aWNlIjpjYXNlICJFc3RoZXRpY1JlcXVlc3QiOnJldHVybiJTRVJWSUNFIjtjYXNlICJDcmVkaXRSZXF1ZXN0IjpjYXNlICJDcmVkaXRSZXF1ZXN0TW9iaWxlIjpjYXNlICJEZWFsZXJUcmFjayI6Y2FzZSAiQ3JlZGl0TXVsdGlzdGVwUmVxdWVzdCI6Y2FzZSAiQ3JlZGl0TXVsdGlzdGVwUmVxdWVzdDJuZENoYW5jZSI6Y2FzZSAiQ3JlZGl0TXVsdGlzdGVwUmVxdWVzdEluc3RhbnQiOmNhc2UgIkNyZWRpdFNjb3JlIjpjYXNlICJDcmVkaXRBcHBDYXJkIjpyZXR1cm4iRklOQU5DRSI7Y2FzZSAiSm9iT2ZmZXIiOnJldHVybiJIUiI7CmNhc2UgIm1lbnVDb250YWN0VXMiOmlmKCIiIT09YS5kZXBhcnRtZW50KXJldHVybiBhLmRlcGFydG1lbnQudG9VcHBlckNhc2UoKTtpZigidW5kZWZpbmVkIiE9PXR5cGVvZiBtYWlsUXVpY2tFbWFpbC5kZXBhcnRtZW50JiYiIiE9PW1haWxRdWlja0VtYWlsLmRlcGFydG1lbnQpcmV0dXJuIG1haWxRdWlja0VtYWlsLmRlcGFydG1lbnQudG9VcHBlckNhc2UoKX1pZigwPGYpe2lmKGQmJmY+PWIrMSlyZXR1cm4iTkVXIjtpZighYyYmIWQpe2lmKGY+PWItMSlyZXR1cm4iTkVXIjtpZihmPGItMSlyZXR1cm4iVVNFRCJ9fXJldHVybiJjYXJkZXRhaWwuaHRtbCI9PSQoIiNQQUdFSUQiKS52YWwoKT8kKCIjZGVmYXVsdERlcGFydG1lbnQiKS52YWwoKTpkPyJVU0VEIjpjPyJORVciOiIiIT09YS5kZXBhcnRtZW50P2EuZGVwYXJ0bWVudDoidW5kZWZpbmVkIiE9dHlwZW9mICQoIiNwb3B1cERlcGFydG1lbnQiKS5hdHRyKCJpZCIpJiYkKCIjcG9wdXBEZXBhcnRtZW50IikudmFsKCkubGVuZ3RoPwokKCIjcG9wdXBEZXBhcnRtZW50IikudmFsKCk6InVuZGVmaW5lZCIhPXR5cGVvZiAkKCIjZGVmYXVsdERlcGFydG1lbnQiKS5hdHRyKCJpZCIpJiYkKCIjZGVmYXVsdERlcGFydG1lbnQiKS52YWwoKS5sZW5ndGg\/JCgiI2RlZmF1bHREZXBhcnRtZW50IikudmFsKCk6IlVTRUQifSxkZWFsZXJTZWxlY3RGdW5jOmZ1bmN0aW9uKGIsYyl7Yj12b2lkIDA9PT1iPyExOmI7dmFyIGQ9JCgiI211bHRpLWFkZHJlc3Mtc3VibWlzc2lvbiIpLGY9ZC5maW5kKCJzZWxlY3QiKSxoPWQuZmluZCgiLmRlYWxlci1zZWxlY3Qtd3JhcHBlciIpO2EuaGFzU2VsZWN0ZWRNdWx0aUFkZHJlc3M9ITE7dmFyIG09c2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgiZGVhbGVyU2VsZWN0VmFsdWVzIik7aWYobSlyZXR1cm4gYS5zZXREZWFsZXJTZWxlY3RFbWFpbHMoKSxifHwoYj1KU09OLnBhcnNlKG0pLGEuc2V0TXVsdGlEZWFsZXJCb2R5KGIuZGVhbGVyTmFtZSxhLnNlbmRUbykpLGMuZ290b05leHQoKTtpZigoJCgiI2N1c3RvbUZvcm1fc2VuZHRvIikubGVuZ3RoJiYKIiIhPSQoIiNjdXN0b21Gb3JtX3NlbmR0byIpLnZhbCgpfHwkKCIjY3VzdG9tRm9ybV9zZW5kdG9BREYiKS5sZW5ndGgmJiIiIT0kKCIjY3VzdG9tRm9ybV9zZW5kdG9BREYiKS52YWwoKSkmJjA8PSQoIiNQQUdFSUQiKS52YWwoKS5pbmRleE9mKCJnZW5lcmljXyIpfHwwPT1kLmxlbmd0aClyZXR1cm4gYy5nb3RvTmV4dCgpO2lmKCJKb2JPZmZlciI9PWEubWFpbElEJiYiIiE9JCgiI3RleHRTZW5kVG9FbWFpbERlZmF1bHQiKS52YWwoKSlyZXR1cm4gYS5zZW5kVG89JCgiI3RleHRTZW5kVG9FbWFpbERlZmF1bHQiKS52YWwoKSxhLnNlbGVjdGVkU2VuZFRvPSQoIiN0ZXh0U2VuZFRvRW1haWxEZWZhdWx0IikudmFsKCksYS5zZW5kVG9BREZGb3JtYXQ9JCgiI3RleHRTZW5kVG9FbWFpbERlZmF1bHRBREYiKS52YWwoKSxhLnNlbGVjdGVkU2VuZFRvQURGRm9ybWF0PSQoIiN0ZXh0U2VuZFRvRW1haWxEZWZhdWx0QURGIikudmFsKCksYy5nb3RvTmV4dCgpO2lmKDAhPT1hLnNlbGVjdGVkU2VuZFRvLmxlbmd0aHx8CjAhPT1hLnNlbGVjdGVkU2VuZFRvQURGRm9ybWF0Lmxlbmd0aClyZXR1cm4gMD09PWEuc2VuZFRvLmxlbmd0aCYmKGEuc2VuZFRvPWEuc2VsZWN0ZWRTZW5kVG8pLDA9PT1hLnNlbmRUb0FERkZvcm1hdC5sZW5ndGgmJihhLnNlbmRUb0FERkZvcm1hdD1hLnNlbGVjdGVkU2VuZFRvQURGRm9ybWF0KSxjLmdvdG9OZXh0KCk7Yj0kKCIjUE9TVF9MRUFEX1NFTkRfVE9fREVBTEVSX1RZUEVfU0VMRUNUIikubGVuZ3RoPyQoIiNQT1NUX0xFQURfU0VORF9UT19ERUFMRVJfVFlQRV9TRUxFQ1QiKS52YWwoKToibG9jYXRpb24iO2lmKDA8JCgiI3RhcmdldFBhZ2UiKS5sZW5ndGgmJiJDQVJERVRBSUxTIj09PSQoIiN0YXJnZXRQYWdlIikudmFsKCkmJiJsb2NhdGlvbiI9PT1ifHwoIiIhPT1hLnN0b2NrTnVtYmVyfHxhLmNhcmlkfHxhLmdldFN0b2NrTnVtYmVyKCkpJiYibG9jYXRpb24iPT09YilyZXR1cm4gYy5nb3RvTmV4dCgpOyQoIiNtdWx0aS1kZWFsZXItbWFwIikubGVuZ3RoJiYoR29vZ2xlTWFwc1dyYXBwZXIuc2V0R29vZ2xlTWFwKCksCmI9JCgiI2Zvb3Rlckdvb2dsZU1hcFpvb20iKS52YWwoKSxiPTE8cGFyc2VJbnQoYikmJjE4Pj1wYXJzZUludChiKT9wYXJzZUludChiKTo5LGI9bmV3IEdvb2dsZU1hcHNXcmFwcGVyKHtlbGVtZW50OiJtdWx0aS1kZWFsZXItbWFwIixhZGRyZXNzZXM6InVuZGVmaW5lZCIhPXR5cGVvZiBmb290ZXJNYXBBZGRyZXNzZXM\/Zm9vdGVyTWFwQWRkcmVzc2VzOltdLHpvb206YixvbkFmdGVyTWFya2VyQ3JlYXRlZDpmdW5jdGlvbihrLHQpe3ZhciB1PSQoYC5kZWFsZXItc2VsZWN0LXdyYXBwZXIgYnV0dG9uW2RhdGEtZGVhbGVyaWQ9IiR7ay5kZWFsZXJJZH0iXWApO3Uub24oImNsaWNrIixmdW5jdGlvbigpe2dvb2dsZS5tYXBzLmV2ZW50LnRyaWdnZXIodCwiY2xpY2siKX0pO3QuYWRkTGlzdGVuZXIoImNsaWNrIixmdW5jdGlvbigpeyQoIi5kZWFsZXItc2VsZWN0LXdyYXBwZXIgYnV0dG9uIikucmVtb3ZlQ2xhc3MoImZvY3VzZWQiKTt2YXIgbD0kKCcjbXVsdGktYWRkcmVzcy1zdWJtaXNzaW9uIHNlbGVjdFtuYW1lPSJtdWx0aV9kZWFsZXJfc2VuZFRvIl0nKTsKdS5sZW5ndGgmJih1LmFkZENsYXNzKCJmb2N1c2VkIiksdVswXS5mb2N1cygpLG11bHRpRGVhbGVyU2VsZWN0LnNldFNlbGVjdCh1WzBdLCExKSk7aWYobC5sZW5ndGgpe3ZhciBxPWwuZmluZChgb3B0aW9uW2RhdGEtZGVhbGVyaWQ9IiR7ay5kZWFsZXJJZH0iXWApO3EubGVuZ3RoJiZsLnZhbChxLnZhbCgpKX19KTskKGAjbXVsdGktYWRkcmVzcy1zdWJtaXNzaW9uIG9wdGlvbltkYXRhLWRlYWxlcmlkPSIke2suZGVhbGVySWR9Il1gKS5kYXRhKCJtYXJrZXIiLHQpfSxvbkFmdGVySW5pdDpmdW5jdGlvbigpeyJ1bmRlZmluZWQiIT10eXBlb2YgZm9vdGVyTWFwQWRkcmVzc2VzJiYwIT1mb290ZXJNYXBBZGRyZXNzZXMubGVuZ3RofHwkKCIjbXVsdGktZGVhbGVyLW1hcCIpLmhpZGUoKTskKCcjbXVsdGktYWRkcmVzcy1zdWJtaXNzaW9uIHNlbGVjdFtuYW1lPSJtdWx0aV9kZWFsZXJfc2VuZFRvIl0nKS5vbigiY2hhbmdlIixmdW5jdGlvbigpe3ZhciBrPSQodGhpcykuZmluZCgiOnNlbGVjdGVkIik7CmsubGVuZ3RoJiZnb29nbGUubWFwcy5ldmVudC50cmlnZ2VyKGsuZGF0YSgibWFya2VyIiksImNsaWNrIil9KX19KSwkKCIjbXVsdGktZGVhbGVyLW1hcCIpLnNob3coKSxiLmluaXQoKSk7Zi5vZmYoImZvY3VzIikub24oImZvY3VzIixmdW5jdGlvbigpe2YucmVtb3ZlQ2xhc3MoInZhbGlkaXR5LWVycm9uZW91cyIpfSk7dmFyIHI9ZnVuY3Rpb24oayl7dmFyIHQ9YS5nZXREZXAoKTtpZigiSm9iT2ZmZXIiPT1hLm1haWxJRClzd2l0Y2goJCgiI2pvYm9mZmVyX2RlcGFydG1lbnQiKS52YWwoKSl7Y2FzZSAiU2FsZXNuZXciOnQ9Ik5FVyI7YnJlYWs7Y2FzZSAiU2FsZXN1c2VkIjp0PSJVU0VEIjticmVhaztjYXNlICJTZXJ2aWNlIjp0PSJTRVJWSUNFIjticmVhaztjYXNlICJQYXJ0cyI6dD0iUEFSVFMiO2JyZWFrO2RlZmF1bHQ6dD0iTkVXIn12YXIgdT0iIixsPSIiO3N3aXRjaCh0KXtjYXNlICJVU0VEIjp1PWsuZGF0YSgiZW1haWx1c2VkIik7bD1rLmRhdGEoImVtYWlsYWRmdXNlZCIpOwpicmVhaztjYXNlICJTRVJWSUNFIjp1PWsuZGF0YSgiZW1haWxzZXJ2aWNlIik7bD1rLmRhdGEoImVtYWlsYWRmc2VydmljZSIpO2JyZWFrO2Nhc2UgIlBBUlRTIjp1PWsuZGF0YSgiZW1haWxwYXJ0cyIpfHxrLmRhdGEoImVtYWlsc2VydmljZSIpO2w9ay5kYXRhKCJlbWFpbGFkZnBhcnRzIil8fGsuZGF0YSgiZW1haWxhZGZzZXJ2aWNlIik7YnJlYWs7Y2FzZSAiRklOQU5DRSI6dT1rLmRhdGEoImVtYWlsZmluYW5jZSIpLGw9ay5kYXRhKCJlbWFpbGFkZmZpbmFuY2UiKX1hLnNlbmRUbz11fHxrLmRhdGEoImVtYWlsIil8fGsuZGF0YSgiZW1haWx1c2VkIik7YS5zZWxlY3RlZFNlbmRUbz11fHxrLmRhdGEoImVtYWlsIil8fGsuZGF0YSgiZW1haWx1c2VkIik7YS5zZW5kVG9BREZGb3JtYXQ9bHx8ay5kYXRhKCJlbWFpbGFkZiIpfHxrLmRhdGEoImVtYWlsYWRmdXNlZCIpO2Euc2VsZWN0ZWRTZW5kVG9BREZGb3JtYXQ9bHx8ay5kYXRhKCJlbWFpbGFkZiIpfHxrLmRhdGEoImVtYWlsYWRmdXNlZCIpOwphLmhhc1NlbGVjdGVkTXVsdGlBZGRyZXNzPSEwO2EuZGVhbGVyaWQ9ay5kYXRhKCJkZWFsZXJpZCIpO2Euc2V0TXVsdGlEZWFsZXJCb2R5KGsudGV4dCgpLnRyaW0oKSxhLnNlbmRUbyk7az17c2VuZFRvOmEuc2VuZFRvLHNlbGVjdGVkU2VuZFRvOmEuc2VsZWN0ZWRTZW5kVG8sc2VuZFRvQURGRm9ybWF0OmEuc2VuZFRvQURGRm9ybWF0LHNlbGVjdGVkU2VuZFRvQURGRm9ybWF0OmEuc2VsZWN0ZWRTZW5kVG9BREZGb3JtYXQsZGVhbGVyTmFtZTprLnRleHQoKS50cmltKCksZGVhbGVyaWQ6ay5kYXRhKCJkZWFsZXJpZCIpLG9wdGlvbmlkOmsudmFsKCl9O3Nlc3Npb25TdG9yYWdlLnNldEl0ZW0oImRlYWxlclNlbGVjdFZhbHVlcyIsSlNPTi5zdHJpbmdpZnkoaykpfTskKCIjbXV0bGlBZGRyZXNzU3VibWl0Iikub2ZmKCJjbGljayIpLm9uKCJjbGljayIsZnVuY3Rpb24oKXtpZigiIj09PWYudmFsKCkpZi5hZGRDbGFzcygidmFsaWRpdHktZXJyb25lb3VzIiksaC5hZGRDbGFzcygidmFsaWRpdHktZXJyb25lb3VzIik7CmVsc2V7dmFyIGs9Zi5maW5kKCI6c2VsZWN0ZWQiKTtyKGspOyQoIi5yZXZlYWwtbW9kYWwtYmciKS5jc3MoInotaW5kZXgiLGUpO2QudHJpZ2dlcigicmV2ZWFsOmNsb3NlIik7Yy5nb3RvTmV4dCgpfX0pO2lmKCQoIi5tdWx0aS1hZGRyZXNzLXN1Ym1pc3Npb24tY2xvc2UiKS5sZW5ndGgpJCgiLm11bHRpLWFkZHJlc3Mtc3VibWlzc2lvbi1jbG9zZSIpLm9mZigiY2xpY2siKS5vbigiY2xpY2siLGZ1bmN0aW9uKCl7TGVhZHMmJk9iamVjdC5rZXlzKExlYWRzKS5mb3JFYWNoKGZ1bmN0aW9uKGspeyJ1bmRlZmluZWQiIT09dHlwZW9mIExlYWRzW2tdLmxlYWRJZCYmTGVhZEhhbmRsZXIoKS5nZXRMZWFkKExlYWRzW2tdLmxlYWRJZCkuY2xvc2UoKX0pO3BvcHVwU3VwZXJ2aXNvciYmcG9wdXBTdXBlcnZpc29yLnBvcHVwcyYmcG9wdXBTdXBlcnZpc29yLnBvcHVwcy5mb3JFYWNoKGZ1bmN0aW9uKGspe2smJnR5cGVvZiBrLmlzQWN0aXZlKCkmJmsuY2FuY2VsKCl9KTskKCIucmV2ZWFsLW1vZGFsLWJnIikuY3NzKCJ6LWluZGV4IiwKZSk7ZC50cmlnZ2VyKCJyZXZlYWw6Y2xvc2UiKX0pO2lmKCIiIT09YS5tYWtlJiZtdWx0aURlYWxlclNlbGVjdCYmKGI9bXVsdGlEZWFsZXJTZWxlY3QuZmlsdGVyKGYpLGIuYnlNYWtlKGEubWFrZSksYj1iLmhhc09ubHlPbmUoKSkpcmV0dXJuIHIoYiksYy5nb3RvTmV4dCgpO2gubGVuZ3RoJiYoYj1oLmZpbmQoImJ1dHRvbiIpLnRvQXJyYXkoKSxiLmxlbmd0aCYmKGI9ZnVuY3Rpb24oayl7Zm9yKGxldCB0PWsubGVuZ3RoLTE7MDx0O3QtLSl7Y29uc3QgdT1NYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqKHQrMSkpO1trW3RdLGtbdV1dPVtrW3VdLGtbdF1dfXJldHVybiBrfShiKSxoLmZpbmQoImJ1dHRvbiIpLnJlbW92ZSgpLGguYXBwZW5kKGIpKSk7ZC5yZXZlYWwoe2FuaW1hdGlvbjoiZmFkZUFuZFBvcCIsYW5pbWF0aW9uc3BlZWQ6MzAwLGNsb3Nlb25iYWNrZ3JvdW5kY2xpY2s6ITEsZGlzbWlzc21vZGFsY2xhc3M6ImNsb3NlLXJldmVhbC1tb2RhbDIiLGNsb3Nlb25lc2NhcGU6ITF9KTsKZT0xMTEyPGU\/ZTokKCIucmV2ZWFsLW1vZGFsLWJnIikuY3NzKCJ6LWluZGV4Iik7JCgiLnJldmVhbC1tb2RhbC1iZyIpLmNzcygiei1pbmRleCIscGFyc2VJbnQoZC5jc3MoInotaW5kZXgiKSktMSl9LHNldERlYWxlclNlbGVjdEVtYWlsczpmdW5jdGlvbigpe3ZhciBiPXNlc3Npb25TdG9yYWdlLmdldEl0ZW0oImRlYWxlclNlbGVjdFZhbHVlcyIpO2lmKGImJihiPUpTT04ucGFyc2UoYiksYS5kZWFsZXJpZD1iLmRlYWxlcmlkLGI9JCgnI211bHRpLWFkZHJlc3Mtc3VibWlzc2lvbiBzZWxlY3RbbmFtZT0ibXVsdGlfZGVhbGVyX3NlbmRUbyJdIG9wdGlvblt2YWx1ZT0iJytiLm9wdGlvbmlkKyciXScpKSl7dmFyIGM9YS5nZXREZXAoKTtpZigiSm9iT2ZmZXIiPT1hLm1haWxJRClzd2l0Y2goJCgiI2pvYm9mZmVyX2RlcGFydG1lbnQiKS52YWwoKSl7Y2FzZSAiU2FsZXNuZXciOmM9Ik5FVyI7YnJlYWs7Y2FzZSAiU2FsZXN1c2VkIjpjPSJVU0VEIjticmVhaztjYXNlICJTZXJ2aWNlIjpjPQoiU0VSVklDRSI7YnJlYWs7Y2FzZSAiUGFydHMiOmM9IlBBUlRTIjticmVhaztkZWZhdWx0OmM9Ik5FVyJ9dmFyIGQ9IiIsZj0iIjtzd2l0Y2goYyl7Y2FzZSAiVVNFRCI6ZD1iLmRhdGEoImVtYWlsdXNlZCIpO2Y9Yi5kYXRhKCJlbWFpbGFkZnVzZWQiKTticmVhaztjYXNlICJTRVJWSUNFIjpkPWIuZGF0YSgiZW1haWxzZXJ2aWNlIik7Zj1iLmRhdGEoImVtYWlsYWRmc2VydmljZSIpO2JyZWFrO2Nhc2UgIlBBUlRTIjpkPWIuZGF0YSgiZW1haWxwYXJ0cyIpfHxiLmRhdGEoImVtYWlsc2VydmljZSIpO2Y9Yi5kYXRhKCJlbWFpbGFkZnBhcnRzIil8fGIuZGF0YSgiZW1haWxhZGZzZXJ2aWNlIik7YnJlYWs7Y2FzZSAiRklOQU5DRSI6ZD1iLmRhdGEoImVtYWlsZmluYW5jZSIpLGY9Yi5kYXRhKCJlbWFpbGFkZmZpbmFuY2UiKX1hLnNlbmRUbz1kfHxiLmRhdGEoImVtYWlsIil8fGIuZGF0YSgiZW1haWx1c2VkIik7YS5zZWxlY3RlZFNlbmRUbz1kfHxiLmRhdGEoImVtYWlsIil8fGIuZGF0YSgiZW1haWx1c2VkIik7CmEuc2VuZFRvQURGRm9ybWF0PWZ8fGIuZGF0YSgiZW1haWxhZGYiKXx8Yi5kYXRhKCJlbWFpbGFkZnVzZWQiKTthLnNlbGVjdGVkU2VuZFRvQURGRm9ybWF0PWZ8fGIuZGF0YSgiZW1haWxhZGYiKXx8Yi5kYXRhKCJlbWFpbGFkZnVzZWQiKTthLmhhc1NlbGVjdGVkTXVsdGlBZGRyZXNzPSEwfX0saGFuZGxlU2VuZEZhaWx1cmU6ZnVuY3Rpb24oYixjKXthLmxvZ0Zvcm1SZXF1ZXN0KCJGb3JtU3VibWl0dGVkRW1haWxOb3RTZW50IixhLm1haWxJRCxiKTthLnBhcnRpYWw9ITE7YS5sYXN0Q2hlY2tzdW09ITE7Yj0iIjt0cnl7Yj1qc19kMmNfZ2V0X3ZhbCgiRU1BSUxfRkFJTF9NRVNTQUdFIil9Y2F0Y2goZCl7fWJ8fChiPSJUaGVyZSB3YXMgYSBwcm9ibGVtIHNlbmRpbmcgeW91ciBtZXNzYWdlLiBQbGVhc2UgdHJ5IGFnYWluLiIpO2FsZXJ0KGM\/YisiXG4iK2M6Yik7alF1ZXJ5KCJib2R5IikudHJpZ2dlcigiZW1haWxIYW5kbGVyLmVtYWlsU2VudCIse21haWxJRDphLm1haWxJRCxzdWNjZXNzOiExLAplcnJvcjpjfHwiIn0pO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBhLmNhbGxiYWNrKXRyeXthLmNhbGxiYWNrKCExKX1jYXRjaChkKXt9YS5jYWxsYmFjaz1udWxsfSxyZWFkeVRvU2VuZDpmdW5jdGlvbigpe3ZhciBiPWEuY3JlYXRlQ2hlY2tzdW0oKTtpZihhLmxhc3RDaGVja3N1bT09YikiZnVuY3Rpb24iPT10eXBlb2YgYS5vbkR1cGxpY2F0ZVNlbmQ\/YS5vbkR1cGxpY2F0ZVNlbmQuY2FsbCgpOiJ1bmRlZmluZWQiIT09dHlwZW9mIGRlYnVnJiZkZWJ1ZygiQ1JDIE1hdGNoIixhLmxhc3RDaGVja3N1bSxiKTtlbHNle2EubGFzdENoZWNrc3VtPWI7JCgnaW5wdXRbZGF0YS1mb3J2YXI9Ik9WRVJXUklUVEVSREVBTEVSIl0nKS5sZW5ndGgmJiIiIT0kKCdpbnB1dFtkYXRhLWZvcnZhcj0iT1ZFUldSSVRURVJERUFMRVIiXScpLnZhbCgpJiYkKCdpbnB1dFtkYXRhLWZvcnZhcj0iREVBTEVSIl0nKS5sZW5ndGgmJiQoJ2lucHV0W2RhdGEtZm9ydmFyPSJPVkVSV1JJVFRFUkRFQUxFUiJdJykudmFsKCkhPQokKCdpbnB1dFtkYXRhLWZvcnZhcj0iREVBTEVSIl0nKS52YWwoKSYmKGI9JCgiYm9keSIpLmhhc0NsYXNzKCJGUkVOQ0giKT8iQ29uY2Vzc2lvbiBv77+9IGVzdCBzaXR177+9IGxlIHbvv71oaWN1bGU6ICI6IkRlYWxlciB3aGVyZSB0aGUgdmVoaWNsZSBpcyBsb2NhdGVkOiAiLGIrPSQoJ2lucHV0W2RhdGEtZm9ydmFyPSJPVkVSV1JJVFRFUkRFQUxFUiJdJykudmFsKCksYS5ib2R5PWEuYm9keS5yZXBsYWNlKCJ7JERFQUxFUl9TRU5EVE99IixiKSk7MDwkKCIjaXNtb2JpbGUiKS5sZW5ndGgmJihhLmlzbW9iaWxlc2l0ZT0iWUVTIik7aWYoMD09YS5zdWJqZWN0Lmxlbmd0aHx8MD09YS5ib2R5Lmxlbmd0aClyZXR1cm4hMTthLmluamVjdEN0YUNvbXBsZXRlZERhdGEoKTtqc29uT2JqZWN0PWEuZ2V0SnNvbk9iamVjdCgpO2I9bnVsbDtiPUpTT04uc3RyaW5naWZ5KGpzb25PYmplY3QpO3ZhciBjPWEucG9wdXBPZmZlclR5cGU7Yj17anNvbjpifTtpZihhLnBhcnRpYWwpYi5wYXJ0aWFsPQohMDtlbHNleyJ1bmRlZmluZWQiIT10eXBlb2YgZ3RhZyYmd2luZG93LmQyY19hd2NJZCYmd2luZG93LmQyY19hd2NMYWJlbCYmKCJsaXZlIj09ZGVwbG95bWVudFR5cGUudG9Mb3dlckNhc2UoKT9ndGFnKCJldmVudCIsImNvbnZlcnNpb24iLHtzZW5kX3RvOmQyY19hd2NJZCsiLyIrZDJjX2F3Y0xhYmVsfSk6Y29uc29sZS5sb2coImd0YWcoJ2V2ZW50JywnY29udmVyc2lvbicsIHsgJ3NlbmRfdG8nOiAiK2QyY19hd2NJZCsiLyIrZDJjX2F3Y0xhYmVsKyIgfSk7IikpO3ZhciBkPXttYWlsSUQ6YS5tYWlsSUQsbWFrZTphLm1ha2UsbW9kZWw6YS5tb2RlbCx5ZWFyOmEueWVhcix2aW46YS52aW4sY29uZGl0aW9uOmEuY29uZGl0aW9uLGRlcGFydG1lbnQ6YS5kZXBhcnRtZW50LHRyYWRlaW46YS50cmFkZWluLHBvcHVwT2ZmZXJUeXBlOmEucG9wdXBPZmZlclR5cGUsYm9keVR5cGU6YS52ZWhpY2xlVHlwZSxzYWxlc0RlcHQ6YS5zYWxlc0RlcHQscG9wdXBEaXY6YS5wb3B1cGRpdixpc0NUQTphLmlzQ1RBLApidXR0b25UZXh0OmEuYnV0dG9uVGV4dH07alF1ZXJ5KCJib2R5IikudHJpZ2dlcigiZW1haWxIYW5kbGVyLnN1Ym1pdCIsZCl9JCgiLnVpLWxvYWRlci1iYWNrZ3JvdW5kIikuc2hvdygpO3NldFRpbWVvdXQoZnVuY3Rpb24oKXskKCIudWktbG9hZGVyLWJhY2tncm91bmQiKS5oaWRlKCl9LDVFMyk7JCgnaW5wdXRbbmFtZT0ibGVhZF9kZXBhcnRtZW50Il0nKS52YWwoanNvbk9iamVjdC5kZXBhcnRtZW50KTskKCdpbnB1dFtuYW1lPSJsZWFkVHlwZSJdJykudmFsKGEuc3ViamVjdC5yZXBsYWNlKC9bXG5ccl0vZywiICIpKTsiIiE9YS5sZWFkVGl0bGVUZXh0JiYoJCgnaW5wdXRbbmFtZT0ibGVhZFR5cGUiXScpLnZhbChhLmxlYWRUaXRsZVRleHQucmVwbGFjZSgvW1xuXHJdL2csIiAiKSksYS5sZWFkVGl0bGVUZXh0PSIiKTskKCdpbnB1dFtuYW1lPSJwYWdlSUQiXScpLnZhbCgkKCIjUEFHRUlEIikudmFsKCkpOyQoJ2lucHV0W25hbWU9ImN1cnJlbnRVUkwiXScpLnZhbCh3aW5kb3cubG9jYXRpb24uaHJlZik7CiQoJ2lucHV0W25hbWU9ImlzRnVsbFdpZHRoIl0nKS52YWwoJCgiI2lzRnVsbFdpZHRoUGFnZU5ld1ZEUCIpLnZhbCgpKTskKCdpbnB1dFtuYW1lPSJkZWFsZXJOYW1lIl0nKS52YWwoJCgiI25ld1ZEUERlYWxlck5hbWUiKS52YWwoKSk7JCgnaW5wdXRbbmFtZT0iYnV0dG9uUG9zaXRpb24iXScpLnZhbCgkKCIjbmV3VkRQQnV0dG9uUG9zaXRpb24iKS52YWwoKSk7JCgnaW5wdXRbbmFtZT0iaXNNb2JpbGVOZXdWRFAiXScpLnZhbCgkKCIjaXNtb2JpbGUiKS52YWwoKSk7JCgnaW5wdXRbbmFtZT0iaXNDb25maXJtUG9wdXAiXScpLnZhbCgwKTsiY3JlZGl0U2NvcmVDb25maXJtUG9wdXBDb250YWluZXIiPT1hLnBvcHVwZGl2JiYkKCdpbnB1dFtuYW1lPSJpc0NvbmZpcm1Qb3B1cCJdJykudmFsKDEpOyQoJ2lucHV0W25hbWU9ImNvbmZpcm1fZW1haWwiXScpLnZhbChhLnVzZXJFbWFpbCk7JCgnaW5wdXRbbmFtZT0iY29uZmlybV9maXJzdF9uYW1lIl0nKS52YWwoYS51c2VyRmlyc3ROYW1lKTsKJCgnaW5wdXRbbmFtZT0iY29uZmlybV9sYXN0X25hbWUiXScpLnZhbChhLnVzZXJMYXN0TmFtZSk7JCgnaW5wdXRbbmFtZT0iY29uZmlybV9waG9uZV9udW1iZXIiXScpLnZhbChhLnVzZXJQaG9uZSk7Zm9ybUZpbGwuc2F2ZSh7ZW1haWw6YS51c2VyRW1haWwsZmlyc3ROYW1lOmEudXNlckZpcnN0TmFtZSxsYXN0TmFtZTphLnVzZXJMYXN0TmFtZSxwaG9uZTphLnVzZXJQaG9uZSxwb3N0YWw6YS51c2VyUG9zdGFsfSk7JC5hamF4KHt0eXBlOiJQT1NUIix1cmw6Ii9tYWlsL3NlbmRNYWlsRXgucGhwIixkYXRhOmIsYmVmb3JlU2VuZDpmdW5jdGlvbihmKXtmJiZmLm92ZXJyaWRlTWltZVR5cGUmJmYub3ZlcnJpZGVNaW1lVHlwZSgiYXBwbGljYXRpb24vanNvbjtjaGFyc2V0PVVURi04Iik7dHJ5e2xldCBoPSQoIm1ldGFbbmFtZT0nY3NyZi1kb21haW4tY2hlY2snXSIpO2gubGVuZ3RoJiZmLnNldFJlcXVlc3RIZWFkZXIoImNzcmYtZG9tYWluLWNoZWNrIixoLmF0dHIoImNvbnRlbnQiKSl9Y2F0Y2goaCl7Y29uc29sZS5lcnJvcihmKX19LApzdWNjZXNzOmZ1bmN0aW9uKGYpe2EubG9nRm9ybVJlcXVlc3QoIkZvcm1TdWJtaXR0ZWQiLGEubWFpbElELGMpO2EucGFydGlhbD0hMTthLmxhc3RDaGVja3N1bT0hMTt2YXIgaD17fTt0cnl7aD0ic3RyaW5nIj09dHlwZW9mIGY\/SlNPTi5wYXJzZShmKTpmfWNhdGNoKG0peyJ1bmRlZmluZWQiIT09dHlwZW9mIGRlYnVnJiZkZWJ1ZygiZW1haWxIYW5kbGVyOiBtYWxmb3JtZWQgSlNPTiByZXNwb25zZSIsZixtKTthLmhhbmRsZVNlbmRGYWlsdXJlKGMsbSYmbS5tZXNzYWdlKTtyZXR1cm59YS5fX2xhc3RSZXR1cm49aDtpZigib2JqZWN0Ij09dHlwZW9mIGh8fCJ1bmRlZmluZWQiIT10eXBlb2YgaC5sZWFkaWQpYS5fX2xlYWRpZD1oLmxlYWRpZDsiZnVuY3Rpb24iIT10eXBlb2YgYS5jYWxsYmFjayYmKGEuY2FsbGJhY2s9ZnVuY3Rpb24oKXt9KTtqUXVlcnkoImJvZHkiKS50cmlnZ2VyKCJlbWFpbEhhbmRsZXIuZW1haWxTZW50Iix7bWFpbElEOmEubWFpbElELG1ha2U6YS5tYWtlLG1vZGVsOmEubW9kZWwsCnllYXI6YS55ZWFyLHZpbjphLnZpbixjb25kaXRpb246YS5jb25kaXRpb24sZGVwYXJ0bWVudDphLmRlcGFydG1lbnQsdHJhZGVpbjphLnRyYWRlaW4sc3VjY2VzczoiU1VDQ0VTUyI9PT1oLnN0YXR1cyxkZXRhaWw6e2NvbmZpcm1fZmlyc3RfbmFtZTphLnVzZXJGaXJzdE5hbWUsY29uZmlybV9sYXN0X25hbWU6YS51c2VyTGFzdE5hbWUsY29uZmlybV9lbWFpbDphLnVzZXJFbWFpbCxjb25maXJtX3Bob25lX251bWJlcjphLnVzZXJQaG9uZSx5ZWFyOmEueWVhcixtYWtlOmEubWFrZSxtb2RlbDphLm1vZGVsLGlkOmgubGVhZGlkLHZpbjphLnZpbixjb25kaXRpb246YS5jb25kaXRpb24sdmVyc2lvbjphLnZlcnNpb258fCIiLE5JVjphLnZpbix0cmltOmEudHJpbSxsZWFkVHlwZTphLmxlYWRUeXBlfHwiIixtYWlsSWQ6YS5tYWlsSUR9fSk7IlNVQ0NFU1MiPT1oLnN0YXR1cz8oYS5jYWxsYmFjayghMCksYS5tYWluUHJvbW8mJihmPW5ldyBDdXN0b21FdmVudCgidHJhY2tzdGVwLmNvbXBsZXRlIiwKe2RldGFpbDp7c3RlcElkOiJNYWluUHJvbW9CdG4ifX0pLGRvY3VtZW50LmRpc3BhdGNoRXZlbnQoZikpKTphLmNhbGxiYWNrKCExKTthLmNhbGxiYWNrPW51bGx9LGVycm9yOmZ1bmN0aW9uKGYsaCxtKXtmJiY0MDQ9PT1mLnN0YXR1c3x8YS5oYW5kbGVTZW5kRmFpbHVyZShjLG18fGh8fCIiKX0sc3RhdHVzQ29kZTp7NDA0OmZ1bmN0aW9uKCl7YS5oYW5kbGVTZW5kRmFpbHVyZShjLCI0MDQiKX19fSk7YS5wb3B1cE9mZmVyVHlwZT0iIn19LGluamVjdEN0YUNvbXBsZXRlZERhdGE6ZnVuY3Rpb24oKXtsZXQgYj0iIixjPSIiO3ZhciBkPSIiO3RyeXt2YXIgZj0idW5kZWZpbmVkIiE9PXR5cGVvZiBjbGllbnRTdG9yYWdlP2NsaWVudFN0b3JhZ2UuZ2V0KCJiYW5kcF9jb25maWciLCJsb2NhbCIpOmxvY2FsU3RvcmFnZS5nZXRJdGVtKCJiYW5kcF9jb25maWciKX1jYXRjaChtKXtmPW51bGx9dmFyIGg9InVuZGVmaW5lZCIhPT10eXBlb2YgZiYmbnVsbCE9PWY\/SlNPTi5wYXJzZShkZWNvZGVVUklDb21wb25lbnQoZikpOgpKU09OLnBhcnNlKCJ7fSIpO2Y9KG0scik9PntyPXJ8fCExO2xldCBrPW0ub3B0aW9ucy5yZWR1Y2UoKEEseik9PkErYCR7en08YnI+YCwiIiksdD0iRU5HTElTSCI9PSQoIiNhY3RpdmVzaXRlbGFuZ3VhZ2UiKS52YWwoKT8iVmVoaWNsZSBkZXRhaWxzIjoiVsOpaGljdWxlIGNvbmZpZ3Vyw6kiLHU9IkVOR0xJU0giPT0kKCIjYWN0aXZlc2l0ZWxhbmd1YWdlIikudmFsKCk\/IkZpbmFuY2luZyBkZXRhaWxzIjoiRMOpdGFpbHMgZHUgZmluYW5jZW1lbnQiLGwscSx3O3I9cj8iIjpgCgkJCQkJCTx1PiR7dX06PC91Pjxicj4KCQkJCQkJJHtudWxsPT1tP3ZvaWQgMDpudWxsPT0obD1tLnBheW1lbnQpP3ZvaWQgMDpsLnRvdGFsfTxicj4KCQkJCQkJJHtudWxsPT1tP3ZvaWQgMDpudWxsPT0ocT1tLnBheW1lbnQpP3ZvaWQgMDpxLnJhdGV9PGJyPgoJCQkJCQkke251bGw9PW0\/dm9pZCAwOm51bGw9PSh3PW0ucGF5bWVudCk\/dm9pZCAwOncuYW1vdW50fTxicj48YnI+CgkJCQkJYDtsZXQgcCx2O3JldHVybmAKCQkJCQk8dT4ke3R9OjwvdT48YnI+CgkJCQkJJHtudWxsPT1tP3ZvaWQgMDptLm1vZGVsfTxicj4KCQkJCQlFeHQ6ICR7KG51bGw9PW0\/dm9pZCAwOm51bGw9PShwPW0uY29sb3JzKT92b2lkIDA6cC5leHQpfHwiIn0sIEludDogJHsobnVsbD09bT92b2lkIDA6bnVsbD09KHY9bS5jb2xvcnMpP3ZvaWQgMDp2LmludCl8fCIifTxicj4KCQkJCQkkeyhudWxsPT1tP3ZvaWQgMDptLmRyaXZlVHJhaW4pfHwiIn08YnI+CgkJCQkJJHtrfTxicj4KCQkJCQkke3J9CgkJCQlgfTtoLmJhbmRwJiYoYj1mKGguYmFuZHApLnJlcGxhY2UoLyhcdHxcbikqL2csIiIpKTtpZihDb29raWVzLmdldCgiY3RhX2RhdGFfdmFsaWQiKSl7ZD1KU09OLnBhcnNlKF9sb2NhbFN0b3JhZ2VHZXQoInJldGFpbF90cmFja19kYXRhIil8fCJ7fSIpO2g9ISFkLnBheW1lbnQ7ZC5iYW5kcCYmKGQuYmFuZHAub3B0aW9ucz1kLmJhbmRwLm9wdGlvbnN8fFtdLGI9ZihkLmJhbmRwLGgpKTtpZihoKXtsZXQgbSxyLGs7Yz1gCgkJCQkJCTx1PiR7IkVOR0xJU0giPT0kKCIjYWN0aXZlc2l0ZWxhbmd1YWdlIikudmFsKCk\/IlZlaGljbGUgZGV0YWlscyI6IkTDqXRhaWxzIGR1IGZpbmFuY2VtZW50In06PC91Pjxicj4KCQkJCQkJJHtudWxsPT1kP3ZvaWQgMDpudWxsPT0obT1kLnBheW1lbnQpP3ZvaWQgMDptLmxpc3RQcmljZX08YnI+CgkJCQkJCSR7bnVsbD09ZD92b2lkIDA6bnVsbD09KHI9ZC5wYXltZW50KT92b2lkIDA6ci5yYXRlfTxicj4KCQkJCQkJJHtudWxsPT1kP3ZvaWQgMDpudWxsPT0oaz1kLnBheW1lbnQpP3ZvaWQgMDprLnBheW1lbnR9PGJyPgoJCQkJCWB9ZD0iXG5cdFx0XHRcdFx0PGJyPlxuXHRcdFx0XHRcdDxicj5cblx0XHRcdFx0XHQ8dT48c3Ryb25nPlRyYW5zYWN0aW9uIEJ1aWxkZXI6PC9zdHJvbmc+PC91PlxuXG5cdFx0XHRcdCJ9aWYoYnx8YylhLmJvZHkrPShkK2AKCQkJCQk8YnI+CgkJCQkJPGJyPgoJCQkJCSR7Yn0KCQkJCQkke2N9CgkJCQlgKS5yZXBsYWNlKC9ccj9cbnxcci9nLCIiKX0sZGVjb2RlVVJMUmVjdXJzaXZlbHk6ZnVuY3Rpb24oYil7cmV0dXJuLTEhPWIuaW5kZXhPZigiJSIpP2EuZGVjb2RlVVJMUmVjdXJzaXZlbHkoZGVjb2RlVVJJQ29tcG9uZW50KHVuZXNjYXBlKGIpKSk6Yn0sdmFsaWRhdGVFbWFpbDpmdW5jdGlvbihiKXtyZXR1cm4gJC5hamF4KHt0eXBlOiJHRVQiLHVybDoiL2FqYXgvdmFsaWRhdGVFbWFpbEFjY291bnQ\/d3N3aWR0aD0wJmVtYWlsPSIrYixhc3luYzohMX0pfSxnZXRVVUlEOmZ1bmN0aW9uKCl7cmV0dXJuInVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3cuYWN0aXZlUHJvZmlsZUlEJiZudWxsIT13aW5kb3cuYWN0aXZlUHJvZmlsZUlEP3dpbmRvdy5hY3RpdmVQcm9maWxlSUQ6InVuZGVmaW5lZCIhPXR5cGVvZiBhY3RpdmVVc2VyUHJvZmlsZU1uZyYmbnVsbCE9YWN0aXZlVXNlclByb2ZpbGVNbmcudWlkP2FjdGl2ZVVzZXJQcm9maWxlTW5nLnVpZDoKInVuZGVmaW5lZCIhPXR5cGVvZiBDb29raWVzJiYidW5kZWZpbmVkIiE9Q29va2llcy5nZXQoInV1aWQiKSYmbnVsbCE9Q29va2llcy5nZXQoInV1aWQiKT9Db29raWVzLmdldCgidXVpZCIpOiIifSxzZXRDb250YWN0SW5mbzpmdW5jdGlvbigpe2lmKCJ1bmRlZmluZWQiIT09dHlwZW9mICQuZm4uZ29vZ2xlUGxhY2VzKXt2YXIgYj0kKCdpbnB1dFtkYXRhLWdvb2dsZS1wbGFjZXM9InRydWUiXScpOzAhPWIubGVuZ3RoJiYoYj1iLmdvb2dsZVBsYWNlcygiZ2V0QWRkcmVzcyIpLCIiIT1iLmNpdHkmJiIiPT1hLmNvbnRhY3RDaXR5JiYoYS5jb250YWN0Q2l0eT1iLmNpdHkubG9uZ19uYW1lKSwiIiE9Yi5zdHJlZXQmJiIiIT1iLnN0cmVldF9udW1iZXImJiIiPT1hLmNvbnRhY3RBZGRyZXNzJiYoYS5jb250YWN0QWRkcmVzcz1iLnN0cmVldF9udW1iZXIubG9uZ19uYW1lKyIgIitiLnN0cmVldC5sb25nX25hbWUpLCIiIT1iLnByb3ZpbmNlJiYiIj09YS5jb250YWN0UHJvdmluY2UmJihhLmNvbnRhY3RQcm92aW5jZT0KYi5wcm92aW5jZS5zaG9ydF9uYW1lKSwiIiE9Yi5wb3N0YWwmJiIiPT1hLmNvbnRhY3RaaXAmJihhLmNvbnRhY3RaaXA9Yi5wb3N0YWwubG9uZ19uYW1lKSl9fSxnZXRMb25nRGF0ZVRvU2hvcnRGb3JtYXQ6ZnVuY3Rpb24oYil7aWYoIiI9PWIpcmV0dXJuIGI7Yj1iLnRvTG93ZXJDYXNlKCk7dmFyIGM9e2phbnZpZXI6ImphbnVhcnkiLCJmw6l2cmllciI6ImZlYnJ1YXJ5IixtYXJzOiJtYXJjaCIsYXZyaWw6ImFwcmlsIixtYWk6Im1heSIsanVpbjoianVuZSIsanVpbGxldDoianVseSIsImFvw7t0IjoiYXVndXN0IixzZXB0ZW1icmU6InNlcHRlbWJlciIsb2N0b2JyZToib2N0b2JlciIsbm92ZW1icmU6Im5vdmVtYmVyIiwiZMOpY2VtYnJlIjoiZGVjZW1iZXIifTtiPWIucmVwbGFjZSgvXGJcUytcYi9pZyxmdW5jdGlvbihkKXt2YXIgZj1kLnRvTG93ZXJDYXNlKCk7cmV0dXJuIGNbZl0\/Y1tmXTpkfSk7cmV0dXJuKG5ldyBEYXRlKGIpKS5mb3JtYXQoInl5eXktTU0tZGQiKX0sZ2V0RW1haWxDb25zZW50OmZ1bmN0aW9uKGIpe3ZhciBjPQpuZXcgRGF0ZTthLnNldENvbnRhY3RJbmZvKCk7dmFyIGQ9YS5jb250YWN0QmlydGg\/YS5jb250YWN0QmlydGg6YS5nZXRMb25nRGF0ZVRvU2hvcnRGb3JtYXQoYS5iaXJ0aGRhdGUpOyQoIi51aS1sb2FkZXItYmFja2dyb3VuZCIpLnNob3coKTtnZXREYXRhPXtlbWFpbDphLnVzZXJFbWFpbCxwaG9uZTphLnVzZXJQaG9uZSxuYW1lOmEudXNlckZpcnN0TmFtZSsiICIrYS51c2VyTGFzdE5hbWUsYWRkcjphLmNvbnRhY3RBZGRyZXNzP2EuY29udGFjdEFkZHJlc3M6YS51c2VyQWRkcmVzcyxjaXR5OmEuY29udGFjdENpdHkscHJvdmluY2U6YS5jb250YWN0UHJvdmluY2UsemlwOmEuY29udGFjdFppcD9hLmNvbnRhY3RaaXA6YS51c2VyUG9zdGFsLG5hczphLmNvbnRhY3ROQVMsYmlydGg6ZCxzaXRlSUQ6JCgiI3NpdGVJRCIpLnZhbCgpLFVVSUQ6YS5nZXRVVUlEKCksdHM6Yy5nZXRUaW1lKCksbGFuZzokKCIjYWN0aXZlc2l0ZWxhbmd1YWdlIikudmFsKCksdXBkYXRlSW1wbGljaXQ6ITB9OwokLmFqYXgoe3R5cGU6IkdFVCIsdXJsOiIvYWpheC9nZXRFbWFpbENvbnNlbnRGcm9tQ1JNP3dzd2lkdGg9MCIsZGF0YTpnZXREYXRhLGRhdGFUeXBlOiJqc29uIn0pLmFsd2F5cyhmdW5jdGlvbihmLGgsbSl7Zj1mP2Y6e2hhc0NvbnNlbnQ6ITF9OyQoIi51aS1sb2FkZXItYmFja2dyb3VuZCIpLmhpZGUoKTt0cnl7InVuZGVmaW5lZCI9PXR5cGVvZiBmJiYidW5kZWZpbmVkIiE9PXR5cGVvZiBkZWJ1ZyYmZGVidWcoIioqKiogZXJyb3IgKioqKiIse2Vycm9yOiJObyBEYXRhIix0ZXh0U3RhdHVzOmgscnZhbHVlOmYsdjpnZXREYXRhLHQ6Ii9hamF4L2dldEVtYWlsQ29uc2VudEZyb21DUk0\/d3N3aWR0aD0wIn0pLFtbImNvbnNlbnRUeXBlIiwiY29uc2VudFR5cGUiXSxbImNvbnNlbnRFeHBpcmF0aW9uIiwiZXhwaXJhdGlvbiJdLFsiY29uc2VudERhdGUiLCJkYXRlIl0sWyJjb25zZW50RnJlcXVlbmN5IiwiZnJlcXVlbmN5Il0sClsiY29uc2VudERldGFpbHNGUiIsImRldGFpbHNGUkVOQ0giXSxbImNvbnNlbnREZXRhaWxzRU4iLCJkZXRhaWxzRU5HTElTSCJdLFsiZGV0YWlsc0RlZmF1bHRzIiwiZGV0YWlsc0RlZmF1bHRzIl0sWyJjb250YWN0SUQiLCJ1aWQiXV0ubWFwKGZ1bmN0aW9uKHIpe3ZhciBrPXJbMF07cj1yWzFdO2RlbGV0ZSB2b2lkIDA7YVtrXT12b2lkIDAhPWZbcl0\/ZltyXTphW2tdfSl9Y2F0Y2gocil7InVuZGVmaW5lZCIhPT10eXBlb2YgZGVidWcmJmRlYnVnKCIqKioqIGVycm9yICoqKioiLHtlcnJvcjpyLHRleHRTdGF0dXM6aCxydmFsdWU6Zix2OmdldERhdGEsdDoiL2FqYXgvZ2V0RW1haWxDb25zZW50RnJvbUNSTT93c3dpZHRoPTAifSl9YihmKX0pfSxiYW5kcExpbms6ZnVuY3Rpb24oYil7Yj1mdW5jdGlvbih0KXtyZXR1cm4gdC5yZXBsYWNlKC8tL2csIl8iKS5yZXBsYWNlKC8nL2csIiIpfTtpZigidW5kZWZpbmVkIj09dHlwZW9mIENvb2tpZXMuZ2V0KCJiYW5kcGxpbmsiKXx8Cm51bGw9PUNvb2tpZXMuZ2V0KCJiYW5kcGxpbmsiKXx8InVuZGVmaW5lZCI9PXR5cGVvZiBDb29raWVzLmdldCgic2Vzc2lkIil8fG51bGw9PUNvb2tpZXMuZ2V0KCJzZXNzaWQiKSlyZXR1cm4iIjt2YXIgYz1Db29raWVzLmdldCgiYmFuZHBsaW5rIiksZD1Db29raWVzLmdldCgic2Vzc2lkIik7aWYoMD5jLmluZGV4T2YoInx8fCIpKXJldHVybiIiO3ZhciBmPWMuc3BsaXQoInx8fCIpO2lmKDQ+Zi5sZW5ndGgpcmV0dXJuIiI7Yz0obmV3IFN0cmluZyhmWzBdKSkuc3BsaXQoIi8iKTt2YXIgaD1uZXcgU3RyaW5nKGZbMV0pLG09bmV3IFN0cmluZyhmWzJdKTtmPW5ldyBTdHJpbmcoZlszXSk7dmFyIHI9JCgiI3BvcHVwdHJpbSIpLmxlbmd0aCYmInskUE9QVVBUUklNfSIhPSQoIiNwb3B1cHRyaW0iKS52YWwoKT8kKCIjcG9wdXB0cmltIikudmFsKCk6IiIsaz0iPGEgaHJlZj0nIitkMmNtZWRpYS5nZXRIdHRwVGV4dCgpKyI6Ly8iK3dpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSskKCIjdHh0QnVpbGRBbmRQcmljZUZvbGRlclBhdGgiKS52YWwoKTsKIkVOR0xJU0giPT0kKCIjYWN0aXZlc2l0ZWxhbmd1YWdlIikudmFsKCk\/KHBhcnNlSW50KGNbMl0pLCQoIiNUWFRNT05USCIrcGFyc2VJbnQoY1sxXSkudG9TdHJpbmcoKSkudmFsKCksays9ZisiLSIrYihoKSsiLSIrYihtKSsiLmh0bWw\/c2lkPSIrZCsiJyB0YXJnZXQ9J19ibGFuayc+IitmKyIgIitoKyIgIittKyIgIityKyI8L2E+Iik6KCQoIiNUWFRNT05USCIrcGFyc2VJbnQoY1sxXSkudG9TdHJpbmcoKSkudmFsKCksays9YihoKSsiLSIrYihtKSsiLSIrZisiLmh0bWw\/c2lkPSIrZCsiJyB0YXJnZXQ9J19ibGFuayc+IitoKyIgIittKyIgIityKyIgIitmKyI8L2E+Iik7cmV0dXJuIGt9LGxvZ0Zvcm1SZXF1ZXN0OmZ1bmN0aW9uKGIsYyxkKXt2YXIgZj1NYXRoLmZsb29yKDk5OTk5OTkqTWF0aC5yYW5kb20oKSksaD0kKCIjdG9wc2l0ZWlkIikubGVuZ3RoPyQoIiN0b3BzaXRlaWQiKS52YWwoKToiMCIsbT0kKCIjdG9wY2FyaWQiKS5sZW5ndGgmJjA8JCgiI3RvcGNhcmlkIikudmFsKCkubGVuZ3RoPwokKCIjdG9wY2FyaWQiKS52YWwoKToiMCIscj1Db29raWVzLmdldCgidWlkIik\/Q29va2llcy5nZXQoInVpZCIpOiIwIixrPUNvb2tpZXMuZ2V0KCJ1dG1fc291cmNlIik\/Q29va2llcy5nZXQoInV0bV9zb3VyY2UiKToiMCIsdD1Db29raWVzLmdldCgidXRtX2NhbXBhaWduIik\/Q29va2llcy5nZXQoInV0bV9jYW1wYWlnbiIpOiIwIix1PUNvb2tpZXMuZ2V0KCJ1dG1fc291cmNlX3JldGFyZ2V0aW5nIik\/Q29va2llcy5nZXQoInV0bV9zb3VyY2VfcmV0YXJnZXRpbmciKToiMCIsbD1Db29raWVzLmdldCgidXRtX2NhbXBhaWduX3JldGFyZ2V0aW5nIik\/Q29va2llcy5nZXQoInV0bV9jYW1wYWlnbl9yZXRhcmdldGluZyIpOiIwIixxPSQoIiN0b3Bpc21vYmlsZSIpLmxlbmd0aCYmMT09JCgiI3RvcGlzbW9iaWxlIikudmFsKCk\/IllFUyI6Ik5PIix3PSQoIiNhY3RpdmVzaXRlbGFuZ3VhZ2UiKS5sZW5ndGg\/JCgiI2FjdGl2ZXNpdGVsYW5ndWFnZSIpLnZhbCgpOiJGUkVOQ0giLHA9dm9pZCAwIT09CmEmJnZvaWQgMCE9PWEucGhvbmVNYW5kYXRvcnk\/YS5waG9uZU1hbmRhdG9yeTowOyJ1bmRlZmluZWQiIT10eXBlb2YgZCYmZHx8KGQ9IjAiKTt0PXQucmVwbGFjZSgvXHQvZywiIikucmVwbGFjZSgvXG4vZywiIikucmVwbGFjZSgvXHIvZywiIikucmVwbGFjZUFsbCgiJTBBIiwiIikucmVwbGFjZUFsbCgiJTA5IiwiIikucmVwbGFjZUFsbCgiJTBCIiwiIikucmVwbGFjZUFsbCgiJTAwIiwiIikucmVwbGFjZUFsbCgiJTVDIiwiIikucmVwbGFjZUFsbCgiJTBEIiwiIik7az1rLnJlcGxhY2UoL1x0L2csIiIpLnJlcGxhY2UoL1xuL2csIiIpLnJlcGxhY2UoL1xyL2csIiIpLnJlcGxhY2VBbGwoIiUwQSIsIiIpLnJlcGxhY2VBbGwoIiUwOSIsIiIpLnJlcGxhY2VBbGwoIiUwQiIsIiIpLnJlcGxhY2VBbGwoIiUwMCIsIiIpLnJlcGxhY2VBbGwoIiU1QyIsIiIpLnJlcGxhY2VBbGwoIiUwRCIsIiIpO2I9Ii9wcm94eV9zYXViL2xvZ0Zvcm1SZXF1ZXN0LyIrZW5jb2RlVVJJQ29tcG9uZW50KGgpKwoiLyIrZW5jb2RlVVJJQ29tcG9uZW50KG0pKyIvIitlbmNvZGVVUklDb21wb25lbnQocikrIi8iK2VuY29kZVVSSUNvbXBvbmVudChrKSsiLyIrZW5jb2RlVVJJQ29tcG9uZW50KHQpKyIvIitlbmNvZGVVUklDb21wb25lbnQocSkrIi8iK2VuY29kZVVSSUNvbXBvbmVudCh3KSsiLyIrZW5jb2RlVVJJQ29tcG9uZW50KHUpKyIvIitlbmNvZGVVUklDb21wb25lbnQobCkrIi8iK2VuY29kZVVSSUNvbXBvbmVudChjKSsiLyIrZW5jb2RlVVJJQ29tcG9uZW50KGIpKyIvIitlbmNvZGVVUklDb21wb25lbnQoZCkrIi8iKyEhcCsiLyIrZW5jb2RlVVJJQ29tcG9uZW50KGYpKyIuZ2lmIjskKCJib2R5IikuYXBwZW5kKCI8aW1nIHN0eWxlPSd3aWR0aDoxcHg7aGVpZ2h0OjFweDtwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjBweDt0b3A6MHB4Oycgc3JjPSciK2IrIicgYWx0PScnIC8+Iil9LGdldFVzZWRFbWFpbEZvck11bHRpcGxlRGVhbGVyczpmdW5jdGlvbigpe3ZhciBiPSJmciI7IkVOR0xJU0giPT0KJCgiI2FjdGl2ZXNpdGVsYW5ndWFnZSIpLnZhbCgpJiYoYj0iZW4iKTt1cmk9Ii8iK2IrIi9waHAvZ2V0RGVhbGVyc0VtYWlsVG8ucGhwP21ha2U9IithLm1ha2UrIiZtb2RlbD0iK2EubW9kZWwrIiZ5ZWFyPSIrYS55ZWFyKyImY2I9IitNYXRoLmZsb29yKDk5OTk5OTkqTWF0aC5yYW5kb20oKSk7JC5hamF4KHt1cmw6dXJpLGFzeW5jOiExLHN1Y2Nlc3M6ZnVuY3Rpb24oYyl7Yz1jLnNwbGl0KCJ8fHwiKTsidW5kZWZpbmVkIiE9dHlwZW9mIGNbMF0mJjA8Y1swXS5sZW5ndGgmJihhLnNlbmRUbz1jWzBdKTsidW5kZWZpbmVkIiE9dHlwZW9mIGNbMV0mJjA8Y1sxXS5sZW5ndGgmJihhLnNlbmRUb0FERkZvcm1hdD1jWzFdKX19KX0scHJlU2VuZEltcGxpY2l0OmZ1bmN0aW9uKCl7aWYoYS5wYXJ0aWFsKXJldHVybiExO2pzb25PYmplY3Q9YS5nZXRKc29uT2JqZWN0KCk7dmFyIGI9e2pzb246SlNPTi5zdHJpbmdpZnkoanNvbk9iamVjdCkscGFydGlhbDohMH07JC5hamF4KHt0eXBlOiJQT1NUIiwKdXJsOiIvbWFpbC9zZW5kTWFpbEV4LnBocCIsZGF0YTpiLGJlZm9yZVNlbmQ6ZnVuY3Rpb24oYyl7JCgnaW5wdXRbbmFtZT0ibGVhZF9kZXBhcnRtZW50Il0nKS52YWwoanNvbk9iamVjdC5kZXBhcnRtZW50KTskKCdpbnB1dFtuYW1lPSJsZWFkVHlwZSJdJykudmFsKGEuc3ViamVjdC5yZXBsYWNlKC9bXG5ccl0vZywiICIpKTskKCdpbnB1dFtuYW1lPSJwYWdlSUQiXScpLnZhbCgkKCIjUEFHRUlEIikudmFsKCkpOyQoJ2lucHV0W25hbWU9ImN1cnJlbnRVUkwiXScpLnZhbCh3aW5kb3cubG9jYXRpb24uaHJlZik7JCgnaW5wdXRbbmFtZT0iaXNGdWxsV2lkdGgiXScpLnZhbCgkKCIjaXNGdWxsV2lkdGhQYWdlTmV3VkRQIikudmFsKCkpOyQoJ2lucHV0W25hbWU9ImRlYWxlck5hbWUiXScpLnZhbCgkKCIjbmV3VkRQRGVhbGVyTmFtZSIpLnZhbCgpKTskKCdpbnB1dFtuYW1lPSJidXR0b25Qb3NpdGlvbiJdJykudmFsKCQoIiNuZXdWRFBCdXR0b25Qb3NpdGlvbiIpLnZhbCgpKTskKCdpbnB1dFtuYW1lPSJpc01vYmlsZU5ld1ZEUCJdJykudmFsKCQoIiNpc21vYmlsZSIpLnZhbCgpKTsKYyYmYy5vdmVycmlkZU1pbWVUeXBlJiZjLm92ZXJyaWRlTWltZVR5cGUoImFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD1VVEYtOCIpO3RyeXtsZXQgZD0kKCJtZXRhW25hbWU9J2NzcmYtZG9tYWluLWNoZWNrJ10iKTtkLmxlbmd0aCYmYy5zZXRSZXF1ZXN0SGVhZGVyKCJjc3JmLWRvbWFpbi1jaGVjayIsZC5hdHRyKCJjb250ZW50IikpfWNhdGNoKGQpe2NvbnNvbGUuZXJyb3IoYyl9fSxzdWNjZXNzOmZ1bmN0aW9uKGMpeyJ1bmRlZmluZWQiIT09dHlwZW9mIGRlYnVnJiZkZWJ1ZyhjKX0sZXJyb3I6ZnVuY3Rpb24oYyxkLGYpe2EubG9nRm9ybVJlcXVlc3QoIkZvcm1TdWJtaXR0ZWRFbWFpbE5vdFNlbnQiLGEubWFpbElELGEucG9wdXBPZmZlclR5cGUpOyJ1bmRlZmluZWQiIT09dHlwZW9mIGRlYnVnJiZkZWJ1ZygicHJlU2VuZEltcGxpY2l0IGZhaWxlZCIsZCxmKX19KX0sbG9nRXZlbnQ6ZnVuY3Rpb24oYixjKXtjPWM\/YzphLm1haWxJRDtpZighYnx8IWMpcmV0dXJuInVuZGVmaW5lZCIhPT0KdHlwZW9mIGRlYnVnJiZkZWJ1ZygiIVVOTE9HR0VEIEVWRU5UISIsYixjKSwhMTsidW5kZWZpbmVkIiE9dHlwZW9mIGFjdGl2ZVVzZXJQcm9maWxlTW5nJiYidW5kZWZpbmVkIiE9dHlwZW9mIGFjdGl2ZVVzZXJQcm9maWxlTW5nLmxvZ1BhZ2VWaWV3RXZlbnQ\/YWN0aXZlVXNlclByb2ZpbGVNbmcubG9nUGFnZVZpZXdFdmVudChiLGMpOiJ1bmRlZmluZWQiIT09dHlwZW9mIGRlYnVnJiZkZWJ1ZygiIVVOTE9HR0VEIEVWRU5UISIsYixjKX0sYnVpbGRDUk1LZXk6ZnVuY3Rpb24oKXt2YXIgYj1wYXJzZUludCgkKCIjdG9wc2l0ZWlkIikudmFsKCksMTApLGM9YS5nZXRVVUlEKCksZD1nZXRDb29raWUoImVtYWlsRnJvbUF1dG9BbnN3ZXIiKTtpZighaXNOYU4oYikmJigiIiE9ZHx8IiIhPWMpJiYibnVtYmVyIj09dHlwZW9mIGImJjA8Yil7dmFyIGY9bmV3IERhdGUsaD1mLmdldE1vbnRoKCkrMTtoPSQuYmFzZTY0LmVuY29kZShmLmdldEZ1bGxZZWFyKCkrIi0iKygxMD5oPyIwIitoOmgpKwoiLSIrKDEwPmYuZ2V0RGF0ZSgpPyIwIitmLmdldERhdGUoKTpmLmdldERhdGUoKSkpO2Y9aC5zdWJzdHIoMCw4KTtoPWguc3Vic3RyKDgpO3JldHVybiAkLmJhc2U2NC5lbmNvZGUoZiskLmJhc2U2NC5lbmNvZGUoYisiOyIrYysiOyIrZCkraCl9cmV0dXJuIiJ9LHNldE1ha2VNb2RlbFllYXJGcm9tTGFzdFZpZXdlZDpmdW5jdGlvbigpe3ZhciBiPSQoIiNsYXN0dmlld2VkbWFrZSIpLnZhbCgpLGM9JCgiI2xhc3R2aWV3ZWRtb2RlbCIpLnZhbCgpLGQ9JCgiI2xhc3R2aWV3ZWR5ZWFyIikudmFsKCk7InVuZGVmaW5lZCIhPT10eXBlb2YgYiYmIiI9PT1hLm1ha2UmJihhLm1ha2U9Yik7InVuZGVmaW5lZCIhPT10eXBlb2YgYyYmIiI9PT1hLm1vZGVsJiYoYS5tb2RlbD1jKTsidW5kZWZpbmVkIj09PXR5cGVvZiBkfHwiIiE9PWEueWVhciYmMCE9PWEueWVhcnx8KGEueWVhcj1kKX0sZ2V0IHJlY2FwdGNoYSgpe3JldHVybiB3aW5kb3cuZ29vZ2xlUmVjYXB0Y2hhfSxzYW5pdGl6ZUhUTUw6ZnVuY3Rpb24oYil7cmV0dXJuIGVuY29kZVVSSShiKX0sCnNob3VsZERpc3BsYXlQdXJjaGFzZUludGVudENvbnRhY3Q6KCk9PntpZihudWxsPT09ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI2FzUHVyY2hhc2VJbnRlbnQiKXx8ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI2FzUHVyY2hhc2VJbnRlbnQgLnN0ZXBDb250YWN0IikuY2xhc3NMaXN0LmNvbnRhaW5zKCJoaWRkZW4iKSlyZXR1cm4hMTtsZXQgYj1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjYXNQdXJjaGFzZUludGVudCAuc3RlcENvbnRhY3QiKS5kYXRhc2V0LmRlcGFydG1lbnRzO2I9Yi5zcGxpdCgiOyIpO2lmKC0xPGIuaW5kZXhPZihhLmRlcGFydG1lbnQudG9Mb3dlckNhc2UoKSkpcmV0dXJuITA7dmFyIGM9InVuZGVmaW5lZCIhPXR5cGVvZiBkb2N1bWVudC5sb2NhdGlvbi5wYXRobmFtZT9kb2N1bWVudC5sb2NhdGlvbi5wYXRobmFtZTpkb2N1bWVudC5sb2NhdGlvbi5ocmVmLm1hdGNoKC9bQS16XTpcL1wvW15cL10rXC8oW15cP10rKVw\/Py4qLylbMV07Yz1hLnNhbml0aXplSFRNTChjKTsKbGV0IGQ9T2JqZWN0LnZhbHVlcyhPYmplY3QuZnJvbUVudHJpZXMoT2JqZWN0LmVudHJpZXMoe25ldzpbIm5ldWYiLCJuZXciXSx1c2VkOlsib2NjYXNpb24iLCJ1c2VkIl0sc2VydmljZTpbInNlcnZpY2UiLCJlbnRyZXRpZW4iLCJtYWludGVuYW5jZSIsInJlcGFpciJdLGZpbmFuY2U6WyJmaW5hbmNlbWVudCIsImZpbmFuY2UiLCJjcmVkaXQiLCJsb2FuIl19KS5maWx0ZXIoZj0+e1tmXT1mO3JldHVybi0xPGIuaW5kZXhPZihmKX0pKSkuZmxhdCgpO3JldHVybihuZXcgUmVnRXhwKCIoIitkLmpvaW4oInwiKSsiKSIpKS50ZXN0KGMudG9Mb3dlckNhc2UoKSl9fTtqUXVlcnkoZnVuY3Rpb24oYil7Yj1qc19kMmNfZ2V0X3ZhbCgiSVNWTSIpO3ZhciBjPWpzX2QyY19nZXRfdmFsKCJmZmRMMSIpLGQ9anNfZDJjX2dldF92YWwoIkdSV0wiKS5zcGxpdCgiOyIpO2EuaWdub3JlQ2FwdGNoYT1ifHwtMSE9ZC5pbmRleE9mKGMpO2EuaWdub3JlQ2FwdGNoYXx8KHdpbmRvdy5nb29nbGVSZWNhcHRjaGE\/CmEucmVjYXB0Y2hhLmluaXQoKTpkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJnb29nbGVSZWNhcHRjaGEucmVhZHkiLGZ1bmN0aW9uKCl7YS5yZWNhcHRjaGEuaW5pdCgpfSx7b25jZTohMH0pKX0pO2EucmVzZXRDYWxsYmFja3MoKTthLmFza1B1cmNoYXNlSW50ZW50PWZ1bmN0aW9uKGIpe3ZhciBjPSJ1bmRlaW5mZWQiIT10eXBlb2YgYi5wYXRobmFtZT9iLnBhdGhuYW1lOmIuaHJlZi5tYXRjaCgvW0Etel06XC9cL1teXC9dK1wvKFteXD9dKylcPz8uKi8pWzFdO3ZhciBkPVJlZ0V4cCgiKGRlbW9uc3RyYXRldXJzfGRlbW98bGlxdWlkYXRpb258Y2xlYXJhbmNlfHByb21vdGlvbnN8bmV1ZnxuZXd8b2NjYXNpb258dXNlZHxjcmVkaXR8ZmluYW5jZW1lbnQpIik7Yj17ZGVtb25zdHJhdGV1cnM6ImRlbW8iLGNsZWFyYW5jZToibGlxdWlkYXRpb24iLCJuZXciOiJuZXVmIixwcm9tb3Rpb25zOiJwcm9tbyIsdXNlZDoib2NjYXNpb24iLGNyZWRpdDoiZmluYW5jZW1lbnQifTtyZXR1cm4gZC50ZXN0KGMudG9Mb3dlckNhc2UoKSk\/CihjPWMubWF0Y2goZCksbnVsbCE9YyYmKGEucHVyY2hhc2VfaW50ZW50X3NlY3Rpb249InVuZGVmaW5lZCIhPXR5cGVvZiBiW2NbMV1dP2JbY1sxXV06Y1sxXSksITApOiExfShkb2N1bWVudC5sb2NhdGlvbik7cmV0dXJuIGF9KCksZW1haWxUcmFja2luZz1mdW5jdGlvbigpe3ZhciBlPXticmFuZDoiIixtb2RlbDoiIix5ZWFyOiIiLGlzcHJvbW86ITEsaXNleHByZXNzOiExLGlzaG9tZXBhZ2U6ITEsc2VjdGlvbjoiIix0ZXh0Q2FyU2VjdGlvblR5cGU6IlVTRUQiLGlzTW9iaWxlTmV3VkRQOiExLGlzRnVsbFdpZHRoOiExLGJ1dHRvblBvc2l0aW9uOiIiLGRlYWxlck5hbWU6IiJ9LGc9ZnVuY3Rpb24oYyl7dmFyIGQ9W10sZj1jLmJyYW5kP2MuYnJhbmQ6ZW1haWxIYW5kbGVyLm1ha2UsaD1jLm1vZGVsP2MubW9kZWw6ZW1haWxIYW5kbGVyLm1vZGVsO2M9Yy55ZWFyP2MueWVhcjplbWFpbEhhbmRsZXIueWVhcjtmLmxlbmd0aCYmZC5wdXNoKGYpO2gubGVuZ3RoJiZkLnB1c2goaCk7Yy5sZW5ndGgmJgpkLnB1c2goYyk7cmV0dXJuIGQuam9pbigiLSIpfSxuPWZ1bmN0aW9uKGMpe3ZhciBkPXsiaG9tZXBhZ2UuaHRtbCI6IkhvbWUtUGFnZSIsImNvbnRhY3R1cy5odG1sIjoiQ29udGFjdFVzIiwibmV3Y2FyZGV0YWlsLmh0bWwiOiJOZXctVkRQIiwibmV3Y2Fycy5odG1sIjoiTmV3LVNSUCIsImJ1aWxkYW5kcHJpY2UuaHRtbCI6Ik5ldy1CJlAiLCJyZXN1bWUtYnVpbGRhbmRwcmljZS5odG1sIjoiTmV3LUImUC1SZXN1bWUiLCJjb21wYXJlTmV3VmVoaWNsZXMuaHRtbCI6Ik5ldy1Db21wYXJlIiwidXNlZGNhcnMuaHRtbCI6IlVzZWQtU1JQIiwiY2FyZGV0YWlsLmh0bWwiOiJVc2VkLVZEUCIsImNyZWRpdC5odG1sIjoiRGVtYW5kZXMgLSBGaW5hbmNlbWVudCIsImRlYWxlcnRyYWNrLmh0bWwiOiJEZW1hbmRlcyAtIEZpbmFuY2VtZW50IiwicHJvbW90aW9uLmh0bWwiOiJQcm9tb3Rpb25zIiwicHJvbW90aW9uc2FsZXMuaHRtbCI6IlByb21vdGlvbnMiLCJwcm9tb3Rpb25zZXJ2aWNlLmh0bWwiOiJQcm9tb3Rpb25zIiwKInBhcnRzUmVxdWVzdC5odG1sIjoiRGVtYW5kZXMgLSBQae+\/vWNlcyIsInNlcnZpY2VzLmh0bWwiOiJTZXJ2aWNlIiwic2VydmljZVJlcXVlc3QuaHRtbCI6IkRlbWFuZGVzIC0gUkRWIFNlcnZpY2UiLCJib2R5U2hvcC5odG1sIjoiRGVtYW5kZXMgLSBSRFYgQ2Fyb3NzZXJpZSIsInRpcmVzUmVxdWVzdC5odG1sIjoiRGVtYW5kZXMgLSBQbmV1cyIsIm91cnRlYW0uaHRtbCI6IlRlYW0iLCJ0ZXN0ZHJpdmUuaHRtbCI6IkRlbWFuZGVzIC0gRXNzYWlzLVJvdXRpZXItT2NjYXNpb24iLCJ0ZXN0ZHJpdmVuZXcuaHRtbCI6IkRlbWFuZGVzIC0gRXNzYWlzLVJvdXRpZXItTmV1ZiIsImJyb2NodXJlcy5odG1sIjoiRGVtYW5kZXMgLSBCcm9jaHVyZXMiLCJqb2JvZmZlci5odG1sIjoiRGVtYW5kZXMgLSBFbXBsb2lzIiwibWFrZW9mZmVybmV3Lmh0bWwiOiJEZW1hbmRlcyAtIE9mZnJlIC0gTmV1ZiIsIm1ha2VvZmZlci5odG1sIjoiRGVtYW5kZXMgLSBPZmZyZSAtIE9jY2FzaW9uIiwicHJpY2VyZXF1ZXN0bmV3Lmh0bWwiOiJEZW1hbmRlcyAtIFByaXggLSBOZXVmIiwKInByaWNlcmVxdWVzdC5odG1sIjoiRGVtYW5kZXMgLSBQcml4IC0gT2NjYXNpb24iLCJmaW5kY2FyLmh0bWwiOiJEZW1hbmRlcyAtIFJlY2hlcmNoZSBPY2Nhc2lvbiIsInRyYWRlaW5uZXcuaHRtbCI6IkRlbWFuZGVzIC0gRWNoYW5nZSBOZXVmIiwidHJhZGVpbi5odG1sIjoiRGVtYW5kZXMgLSBFY2hhbmdlIE9jY2FzaW9uIn0sZj0tMSE9KGMuY3VycmVudFVSTHx8IiIpLmluZGV4T2YoInN0ZXA9cmVzdW1lIiksaD0tMSE9KGMuY3VycmVudFVSTHx8IiIpLmluZGV4T2YoInN0ZXA9b3B0aW9ucyIpOyJidWlsZGFuZHByaWNlLmh0bWwiPT1jLnBhZ2VJRCYmKGZ8fGgpJiYoYy5wYWdlSUQ9InJlc3VtZS1idWlsZGFuZHByaWNlLmh0bWwiKTtyZXR1cm4idW5kZWZpbmVkIiE9dHlwZW9mIGRbYy5wYWdlSURdP2RbYy5wYWdlSURdOiJPdGhlciJ9LGE9ZnVuY3Rpb24oYyl7dmFyIGQ9IkRlbWFuZGVzIixmPWMuYnJhbmQ\/Yy5icmFuZDplbWFpbEhhbmRsZXIubWFrZSxoPWMubW9kZWw\/Yy5tb2RlbDoKZW1haWxIYW5kbGVyLm1vZGVsO2MuaXNwcm9tbyYmKGQrPSItUHJvbW90aW9uIik7MDxmLmxlbmd0aCYmMDxoLmxlbmd0aCYmIWMuaXNob21lcGFnZT9kPWMuaXNwcm9tbz9kKygiLSIrZyhjKSk6ZCtbIiIsZixoLGMuc2VjdGlvbl0uam9pbigiLSIpOmMuaXNwcm9tbyYmYy5pc2hvbWVwYWdlJiYoZCs9Ii1JbmRleCIpOyIxIj09Yy5pc2V4cHJlc3MmJihjLnRleHRDYXJTZWN0aW9uVHlwZSYmKGQ9IkRlbWFuZGVzLUV4cHJlc3MiKSxkKz0iLSIrZyhjKSxkKz0iLSIrYy5zZWN0aW9uKTtyZXR1cm4gZH0sYj1mdW5jdGlvbihjKXt2YXIgZD0xMjAwPHdpbmRvdy5zY3JlZW4uYXZhaWxXaWR0aD8iPjEyMDBweCAtICIuaXNGdWxsV2lkdGg6IjwxMjAwcHggLSBOb3JtYWwgVkRQIjtbZCxjLmJ1dHRvblBvc2l0aW9uXS5qb2luKCItIik7Yz1bYy5kZWFsZXJOYW1lLGQsIkxlYWQiXS5qb2luKCItIik7Z2FUcmFjaygiYyIsIk5ldy1WRFAtRGVza3RvcC1MYXlvdXQtQ1IiLGFjdGlvbixjLDEpfTsKdGhpcy50cmFjaz1mdW5jdGlvbihjKXtpZihnZXRDb29raWUoImxlYWRTZW5kIikpcmV0dXJuIGRlYnVnKCJsZWFkIHNlbnQiKTtzZXRDb29raWUoImxlYWRTZW5kIiwhMCwxKTtjPSQuZXh0ZW5kKHt9LGUsYyk7Yy5jdXJyZW50VVJMPWMuY3VycmVudFVSTD9jLmN1cnJlbnRVUkw6d2luZG93LmxvY2F0aW9uLmhyZWY7Yy5pc3Byb21vPSIxIj09Yy5pc3Byb21vO2MuaXNob21lcGFnZT0iMSI9PWMuaXNob21lcGFnZTt2YXIgZD1uKGMpO2dhVHJhY2soIiIsIkNvdXJyaWVscyIsYy5sYWJlbCxhKGMpLDEpO2dhVHJhY2soImMiLCJDb3VycmllbHMtZGVwdCIsYy5kZXBhcnRtZW50LGcoYyksMSk7Z2FUcmFjaygiYyIsIkNvdXJyaWVscy1wYWdlIixkLGMubGVhZFR5cGUsMSk7Yy5pc01vYmlsZU5ld1ZEUCYmIk5ldy1WRFAiPT1kJiZiKGMpO3RyeXtkMmNfZ2FBY2NvdW50cy5hbGwubWFwKGZ1bmN0aW9uKGYpe2d0YWcoImNvbmZpZyIsZix7cGFnZV9wYXRoOiIvY29uZmlybWF0aW9uLmh0bWwifSl9KSwKZ3RhZygiY29uZmlnIiwiRy1aNVE4WjVDN0tGIix7cGFnZV9wYXRoOiIvY29uZmlybWF0aW9uLmh0bWwifSl9Y2F0Y2goZil7ZGVidWcoZil9fTtyZXR1cm4gdGhpc30oKSxnZXRNYWlsU2VudEhhbmRsZXI9ZnVuY3Rpb24oZSl7dmFyIGc9e3RpbWVvdXRDYWxsYmFjazpudWxsLHRpbWVvdXQ6bnVsbH07Zy5pZFRvQWRkPWU\/ZToiIjskKCIjZW1haWxTdWNjZXNzTWVzc2FnZSIpLmZpbmQoIi5kZWZhdWx0U3VjY2VzcyIpLnNob3coKTskKCIjZW1haWxTdWNjZXNzTWVzc2FnZSIpLmZpbmQoIi5zZXJ2aWNlU3VjY2VzcyIpLmhpZGUoKTskKCIjZW1haWxTdWNjZXNzTWVzc2FnZSIrZSkubGVuZ3RofHwoZT0iIixnLmlkVG9BZGQ9IiIsIlNFUlZJQ0UiIT1lbWFpbEhhbmRsZXIuZGVwYXJ0bWVudCYmIlBBUlRTIiE9ZW1haWxIYW5kbGVyLmRlcGFydG1lbnQpfHwoJCgiI2VtYWlsU3VjY2Vzc01lc3NhZ2UiKS5maW5kKCIuZGVmYXVsdFN1Y2Nlc3MiKS5oaWRlKCksJCgiI2VtYWlsU3VjY2Vzc01lc3NhZ2UiKS5maW5kKCIuc2VydmljZVN1Y2Nlc3MiKS5zaG93KCkpOwpnLnNob3dTdWNjZXNzPWZ1bmN0aW9uKCl7Z2V0Q29va2llKCJwcmV2ZW50RHVwbGljYXRlQ3JlZGl0U2NvcmUiKXx8Z2V0Q29va2llKCJjcmVkaXRTY29yZUNvbmZpcm1Qb3B1cFNob3duIil8fGdldENvb2tpZSgiY3JlZGl0U2NvcmVFbWJlZGRlZEZpbGxlZCIpfHwiIiE9ZW1haWxIYW5kbGVyLnVzZXJQaG9uZSYmIiIhPWVtYWlsSGFuZGxlci51c2VyQWRkcmVzcyYmIiIhPWVtYWlsSGFuZGxlci5iaXJ0aGRhdGV8fCJuZXciIT1lbWFpbEhhbmRsZXIuZGVwYXJ0bWVudC50b0xvd2VyQ2FzZSgpJiYidXNlZCIhPWVtYWlsSGFuZGxlci5kZXBhcnRtZW50LnRvTG93ZXJDYXNlKCl8fCEkKCIjY3JlZGl0U2NvcmVDb25maXJtUG9wdXBDb250YWluZXIiKS5sZW5ndGh8fCJUcmFkZUluQmFyUG9wdXBDb250YWluZXIiPT1lbWFpbEhhbmRsZXIucG9wdXBkaXY\/KCQoIiNlbWFpbFN1Y2Nlc3NNZXNzYWdlIitlKS5wYXJlbnQoKS5pcygiYm9keSIpfHwkKCIjZW1haWxTdWNjZXNzTWVzc2FnZSIrCmUpLmFwcGVuZFRvKCJib2R5IiksJCgiI2VtYWlsU3VjY2Vzc01lc3NhZ2UiK2UpLnJldmVhbCh7YW5pbWF0aW9uOiJmYWRlQW5kUG9wIixhbmltYXRpb25zcGVlZDozMDAsY2xvc2VvbmJhY2tncm91bmRjbGljazohMSxkaXNtaXNzbW9kYWxjbGFzczoiY2xvc2UtcmV2ZWFsLW1vZGFsIn0pLCQoIiNlbWFpbFN1Y2Nlc3NNZXNzYWdlIitlKyIgLmNvbmZpcm1fc3VjY2Vzc0NvbnRpbnVlIikub24oImNsaWNrIixnLmNsb3NlU3VjY2VzcykpOiQoIiNjcmVkaXRTY29yZUNvbmZpcm1Qb3B1cENvbnRhaW5lciIpLnBvcHVwaXplKCkuc2V0VHJpZ2dlcigiY2xpY2siKS5vcGVuKDEpOyQoIi51aS1sb2FkZXItYmFja2dyb3VuZCIpLmhpZGUoKTskKCIjZW1haWxtc2dmcm0iK2cuaWRUb0FkZCkudHJpZ2dlcigic3VibWl0Iil9O2cuY2xvc2VTdWNjZXNzPWZ1bmN0aW9uKCl7JCgiI2VtYWlsU3VjY2Vzc01lc3NhZ2UiK2cuaWRUb0FkZCkudHJpZ2dlcigicmV2ZWFsOmNsb3NlIik7bnVsbCE9Zy50aW1lb3V0Q2FsbGJhY2smJgpnLnRpbWVvdXRDYWxsYmFjaygpO3JldHVybiExfTtnLnNob3dGYWlsPWZ1bmN0aW9uKCl7JCgiI2VtYWlsRmFpbE1lc3NhZ2UiK2cuaWRUb0FkZCkucmV2ZWFsKHthbmltYXRpb246ImZhZGVBbmRQb3AiLGFuaW1hdGlvbnNwZWVkOjMwMCxjbG9zZW9uYmFja2dyb3VuZGNsaWNrOiExLGRpc21pc3Ntb2RhbGNsYXNzOiJjbG9zZS1yZXZlYWwtbW9kYWwifSk7JCgiI2VtYWlsRmFpbE1lc3NhZ2UiK2UrIiAuY29uZmlybV9mYWlsQ29udGludWUiKS5vbigiY2xpY2siLGZ1bmN0aW9uKCl7JCgiI2VtYWlsRmFpbE1lc3NhZ2UiK2UpLnRyaWdnZXIoInJldmVhbDpjbG9zZSIpfSk7JCgiLnVpLWxvYWRlci1iYWNrZ3JvdW5kIikuaGlkZSgpfTtyZXR1cm4gZ30sbWFpbFNlbnRIYW5kbGVyPW5ldyBnZXRNYWlsU2VudEhhbmRsZXIoIiIpOwpmdW5jdGlvbiBzdG9yYWdlQXZhaWxhYmxlKGUpe3RyeXt2YXIgZz13aW5kb3dbZV07Zy5zZXRJdGVtKCJfX3N0b3JhZ2VfdGVzdF9fIiwiX19zdG9yYWdlX3Rlc3RfXyIpO2cucmVtb3ZlSXRlbSgiX19zdG9yYWdlX3Rlc3RfXyIpO3JldHVybiEwfWNhdGNoKG4pe3JldHVybiBuIGluc3RhbmNlb2YgRE9NRXhjZXB0aW9uJiYoMjI9PT1uLmNvZGV8fDEwMTQ9PT1uLmNvZGV8fCJRdW90YUV4Y2VlZGVkRXJyb3IiPT09bi5uYW1lfHwiTlNfRVJST1JfRE9NX1FVT1RBX1JFQUNIRUQiPT09bi5uYW1lKSYmZyYmMCE9PWcubGVuZ3RofX0KdmFyIGZvcm1GaWxsPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcyxnPXN0b3JhZ2VBdmFpbGFibGUoImxvY2FsU3RvcmFnZSIpLG49bnVsbCxhPSEwLGI9W10sYz17bmFtZTpbImlucHV0Lm5hbWUiLCdpbnB1dFtuYW1lPSJuYW1lIl0nXSxwb3N0YWw6WyJpbnB1dC5wb3N0YWwiLCdpbnB1dFtuYW1lPSJwb3N0YWwiXSddLGZpcnN0TmFtZTonaW5wdXQuZmlyc3ROYW1lIGlucHV0LmZpcnN0bmFtZSBpbnB1dFtuYW1lPSJmaXJzdG5hbWUiXSBpbnB1dFtuYW1lPSJmaXJzdE5hbWUiXSBpbnB1dCNmaXJzdG5hbWUgaW5wdXQjZmlyc3ROYW1lIGlucHV0I21pbmlfZm5hbWUnLnNwbGl0KCIgIiksbGFzdE5hbWU6J2lucHV0Lmxhc3ROYW1lIGlucHV0Lmxhc3RuYW1lIGlucHV0W25hbWU9Imxhc3RuYW1lIl0gaW5wdXRbbmFtZT0ibGFzdE5hbWUiXSBpbnB1dCNsYXN0bmFtZSBpbnB1dCNsYXN0TmFtZSBpbnB1dCNtaW5pX2xuYW1lJy5zcGxpdCgiICIpLHBob25lOlsiaW5wdXQucGhvbmUiLCdpbnB1dFtuYW1lPSJwaG9uZSJdJywKJ2lucHV0W25hbWU9InBob25lTnVtYmVyIl0nLCJpbnB1dCNtaW5pX3Bob25lIiwnW3R5cGU9InRlbCJdJ10sZW1haWw6WyJpbnB1dC5lbWFpbCIsJ2lucHV0W25hbWU9ImVtYWlsIl0nLCdpbnB1dFtuYW1lPSJlbWFpbEFkZHJlc3MiXScsImlucHV0I21pbmlfZW1haWwiXX0sZD1mdW5jdGlvbihsKXtpZighZylyZXR1cm4hMTt2YXIgcT1sb2NhbFN0b3JhZ2UuZ2V0SXRlbSgiZm9ybUZpbGxEYXRhIik7aWYobnVsbD09PXEpcmV0dXJuITE7JC5hamF4KHt0eXBlOiJQT1NUIix1cmw6Ii9wcm94eV9zZDJjL3NlcnZpY2UvZDJjLmVuY3J5cHRpb24uZ2V0IixkYXRhOntkYXRhOnF9fSkuZG9uZShmdW5jdGlvbih3KXtpZih3JiYiZnVuY3Rpb24iPT09dHlwZW9mIGwpdHJ5e2woSlNPTi5wYXJzZSh3LmRhdGEpKX1jYXRjaChwKXtjb25zb2xlLmxvZyhwKX19KX0sZj1mdW5jdGlvbigpe2E9ITA7bj1udWxsO2IuZm9yRWFjaChmdW5jdGlvbihsKXtsLmZpbGxlZD0hMX0pfSxoPWZ1bmN0aW9uKGwpe3UoInVzZXIubG9hZGVkIiwKZnVuY3Rpb24oKXtpZighbShsKSl7Yi5wdXNoKHtzY29wZTpsLGZpbGxlZDohMH0pO2Zvcih2YXIgcSBpbiBjKW4uaGFzT3duUHJvcGVydHkocSkmJmwuZmluZCgkKGNbcV0uam9pbigiLCIpKSkudmFsKG5bcV0pO2soImZvcm0uZmlsbGVkIil9fSk7bnVsbD09PW4mJmE\/KGE9ITEsZChmdW5jdGlvbihxKXtxLnBvc3RhbD1xLnBvc3RhbC50b1VwcGVyQ2FzZSgpO3EuZmlyc3ROYW1lPXEuZmlyc3ROYW1lLnRyaW0oKTtxLmxhc3ROYW1lPXEubGFzdE5hbWUudHJpbSgpO2VtYWlsSGFuZGxlci51c2VyUG9zdGFsPXEucG9zdGFsO2VtYWlsSGFuZGxlci51c2VyRW1haWw9cS5lbWFpbDtlbWFpbEhhbmRsZXIudXNlckZpcnN0TmFtZT1xLmZpcnN0TmFtZTtlbWFpbEhhbmRsZXIudXNlckxhc3ROYW1lPXEubGFzdE5hbWU7ZW1haWxIYW5kbGVyLnVzZXJQaG9uZT1xLnBob25lO3EubmFtZT0ocS5maXJzdE5hbWUrIiAiK3EubGFzdE5hbWUpLnRyaW0oKTtuPXE7aygidXNlci5sb2FkZWQiKX0pKToKbiYmaygidXNlci5sb2FkZWQiKX0sbT1mdW5jdGlvbihsKXtyZXR1cm4oX3Njb3BlPWIuZmluZChmdW5jdGlvbihxKXtpZihxLnNjb3BlLmlzKGwpKXJldHVybiBxfSkpP19zY29wZS5maWxsZWQ6ITF9LHI9W10saz1mdW5jdGlvbihsKXt2YXIgcT1bXS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKTtpZihyW2xdKXt2YXIgdz1yW2xdLnNsaWNlKCk7dmFyIHA9dy5sZW5ndGg7Zm9yKGk9MDtpPHA7aSsrKXdbaV0uYXBwbHkodGhpcyxxKX19LHQ9ZnVuY3Rpb24obCxxKXtyW2xdfHwocltsXT1bXSk7cltsXS5wdXNoKHEpfSx1PWZ1bmN0aW9uKGwscSl7dChsLGZ1bmN0aW9uIHAoKXtyW2xdLnNwbGljZShyW2xdLmluZGV4T2YocCksMSk7cS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9KX07JChmdW5jdGlvbigpe2cmJigkKGRvY3VtZW50KS5vbigicG9wdXBpemVyLm9uT3BlbiIsZnVuY3Rpb24obCxxKXtsPXEudGFyZ2V0P3EudGFyZ2V0OiQocSk7aChsKX0pLCQoZG9jdW1lbnQpLm9uKCJwb3B1cGl6ZXIub25DbG9zZSIsCmZ1bmN0aW9uKGwscSl7fSksJCgiZm9ybSIpLmVhY2goZnVuY3Rpb24obCxxKXtoKCQocSkpfSkpfSk7cmV0dXJuIGU9e3NhdmU6ZnVuY3Rpb24obCl7aWYoIWcpcmV0dXJuITE7biYmIiI9PT1sLnBvc3RhbCYmKGwucG9zdGFsPW4ucG9zdGFsKTskLmFqYXgoe3R5cGU6IlBPU1QiLHVybDoiL3Byb3h5X3NkMmMvc2VydmljZS9kMmMuZW5jcnlwdGlvbi5zZXQiLGRhdGE6e2RhdGE6SlNPTi5zdHJpbmdpZnkobCl9fSkuZG9uZShmdW5jdGlvbihxKXtxJiYobG9jYWxTdG9yYWdlLnNldEl0ZW0oImZvcm1GaWxsRGF0YSIscS5kYXRhKSxmKCkpfSl9fX0oKTsKLyoqIC9tL2pzL2poYXNodGFibGUuanMgKiovCnZhciBfX19kMmNfamhhc2h0YWJsZWpzX2Nfb249IjIwMjUtMDUtMjMgMTc6MDc6MDciOyd1c2Ugc3RyaWN0Jzt2YXIgX19fZDJjX2poYXNodGFibGVqc19jX29uPSIyMDI0LTAxLTMxIDE0OjM1OjE5IjsidXNlIHN0cmljdCI7X19fZDJjX2poYXNodGFibGVqc19jX29uPSIyMDIzLTAxLTEyIDExOjMzOjQ5IjsidXNlIHN0cmljdCI7X19fZDJjX2poYXNodGFibGVqc19jX29uPSIyMDIzLTAxLTEyIDEwOjQzOjMzIjsidXNlIHN0cmljdCI7X19fZDJjX2poYXNodGFibGVqc19jX29uPSIyMDIxLTEyLTE1IDEyOjQwOjEzIjsidXNlIHN0cmljdCI7CnZhciBIYXNodGFibGU9ZnVuY3Rpb24oKXtmdW5jdGlvbiB1KGEpe2lmKCJzdHJpbmciPT10eXBlb2YgYSlyZXR1cm4gYTtpZigiZnVuY3Rpb24iPT10eXBlb2YgYS5oYXNoQ29kZSlyZXR1cm4gYT1hLmhhc2hDb2RlKCksInN0cmluZyI9PXR5cGVvZiBhP2E6dShhKTtpZigiZnVuY3Rpb24iPT10eXBlb2YgYS50b1N0cmluZylyZXR1cm4gYS50b1N0cmluZygpO3RyeXtyZXR1cm4gU3RyaW5nKGEpfWNhdGNoKGMpe3JldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoYSl9fWZ1bmN0aW9uIEIoYSxjKXtyZXR1cm4gYS5lcXVhbHMoYyl9ZnVuY3Rpb24gQyhhLGMpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBjLmVxdWFscz9jLmVxdWFscyhhKTphPT09Y31mdW5jdGlvbiB2KGEpe3JldHVybiBmdW5jdGlvbihjKXtpZihudWxsPT09Yyl0aHJvdyBFcnJvcigibnVsbCBpcyBub3QgYSB2YWxpZCAiK2EpO2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgYyl0aHJvdyBFcnJvcihhKwoiIG11c3Qgbm90IGJlIHVuZGVmaW5lZCIpO319ZnVuY3Rpb24gcShhLGMsaCxkKXt0aGlzWzBdPWE7dGhpcy5lbnRyaWVzPVtdO3RoaXMuYWRkRW50cnkoYyxoKTtudWxsIT09ZCYmKHRoaXMuZ2V0RXF1YWxpdHlGdW5jdGlvbj1mdW5jdGlvbigpe3JldHVybiBkfSl9ZnVuY3Rpb24gcihhKXtyZXR1cm4gZnVuY3Rpb24oYyl7Zm9yKHZhciBoPXRoaXMuZW50cmllcy5sZW5ndGgsZCxrPXRoaXMuZ2V0RXF1YWxpdHlGdW5jdGlvbihjKTtoLS07KWlmKGQ9dGhpcy5lbnRyaWVzW2hdLGsoYyxkWzBdKSlzd2l0Y2goYSl7Y2FzZSAwOnJldHVybiEwO2Nhc2UgMTpyZXR1cm4gZDtjYXNlIDI6cmV0dXJuW2gsZFsxXV19cmV0dXJuITF9fWZ1bmN0aW9uIHcoYSl7cmV0dXJuIGZ1bmN0aW9uKGMpe2Zvcih2YXIgaD1jLmxlbmd0aCxkPTAsaz10aGlzLmVudHJpZXMubGVuZ3RoO2Q8azsrK2QpY1toK2RdPXRoaXMuZW50cmllc1tkXVthXX19ZnVuY3Rpb24gbShhLGMpe3JldHVybihhPWFbY10pJiYKYSBpbnN0YW5jZW9mIHE\/YTpudWxsfWZ1bmN0aW9uIHgoYSxjKXt2YXIgaD10aGlzLGQ9W10saz17fSxuPSJmdW5jdGlvbiI9PXR5cGVvZiBhP2E6dSxEPSJmdW5jdGlvbiI9PXR5cGVvZiBjP2M6bnVsbDt0aGlzLnB1dD1mdW5jdGlvbihiLGUpe3AoYik7eShlKTt2YXIgZj1uKGIpLGcsbD1udWxsOyhnPW0oayxmKSk\/KGY9Zy5nZXRFbnRyeUZvcktleShiKSk\/KGw9ZlsxXSxmWzFdPWUpOmcuYWRkRW50cnkoYixlKTooZz1uZXcgcShmLGIsZSxEKSxkW2QubGVuZ3RoXT1nLGtbZl09Zyk7cmV0dXJuIGx9O3RoaXMuZ2V0PWZ1bmN0aW9uKGIpe3AoYik7dmFyIGU9bihiKTtpZihlPW0oayxlKSlpZihiPWUuZ2V0RW50cnlGb3JLZXkoYikpcmV0dXJuIGJbMV07cmV0dXJuIG51bGx9O3RoaXMuY29udGFpbnNLZXk9ZnVuY3Rpb24oYil7cChiKTt2YXIgZT1uKGIpO3JldHVybihlPW0oayxlKSk\/ZS5jb250YWluc0tleShiKTohMX07dGhpcy5jb250YWluc1ZhbHVlPWZ1bmN0aW9uKGIpe3koYik7CmZvcih2YXIgZT1kLmxlbmd0aDtlLS07KWlmKGRbZV0uY29udGFpbnNWYWx1ZShiKSlyZXR1cm4hMDtyZXR1cm4hMX07dGhpcy5jbGVhcj1mdW5jdGlvbigpe2QubGVuZ3RoPTA7az17fX07dGhpcy5pc0VtcHR5PWZ1bmN0aW9uKCl7cmV0dXJuIWQubGVuZ3RofTt2YXIgdD1mdW5jdGlvbihiKXtyZXR1cm4gZnVuY3Rpb24oKXtmb3IodmFyIGU9W10sZj1kLmxlbmd0aDtmLS07KWRbZl1bYl0oZSk7cmV0dXJuIGV9fTt0aGlzLmtleXM9dCgia2V5cyIpO3RoaXMudmFsdWVzPXQoInZhbHVlcyIpO3RoaXMuZW50cmllcz10KCJnZXRFbnRyaWVzIik7dGhpcy5yZW1vdmU9ZnVuY3Rpb24oYil7cChiKTt2YXIgZT1uKGIpLGY9bnVsbCxnPW0oayxlKTtpZihnJiYoZj1nLnJlbW92ZUVudHJ5Rm9yS2V5KGIpLG51bGwhPT1mJiYhZy5lbnRyaWVzLmxlbmd0aCkpe2E6e2ZvcihiPWQubGVuZ3RoO2ItLTspaWYoZz1kW2JdLGU9PT1nWzBdKWJyZWFrIGE7Yj1udWxsfXooZCxiKTtkZWxldGUga1tlXX1yZXR1cm4gZn07CnRoaXMuc2l6ZT1mdW5jdGlvbigpe2Zvcih2YXIgYj0wLGU9ZC5sZW5ndGg7ZS0tOyliKz1kW2VdLmVudHJpZXMubGVuZ3RoO3JldHVybiBifTt0aGlzLmVhY2g9ZnVuY3Rpb24oYil7Zm9yKHZhciBlPWguZW50cmllcygpLGY9ZS5sZW5ndGgsZztmLS07KWc9ZVtmXSxiKGdbMF0sZ1sxXSl9O3RoaXMucHV0QWxsPWZ1bmN0aW9uKGIsZSl7Yj1iLmVudHJpZXMoKTtmb3IodmFyIGYsZyxsLEE9Yi5sZW5ndGgsRT0iZnVuY3Rpb24iPT10eXBlb2YgZTtBLS07KWY9YltBXSxnPWZbMF0sZj1mWzFdLEUmJihsPWguZ2V0KGcpKSYmKGY9ZShnLGwsZikpLGgucHV0KGcsZil9O3RoaXMuY2xvbmU9ZnVuY3Rpb24oKXt2YXIgYj1uZXcgeChhLGMpO2IucHV0QWxsKGgpO3JldHVybiBifX12YXIgej0iZnVuY3Rpb24iPT10eXBlb2YgQXJyYXkucHJvdG90eXBlLnNwbGljZT9mdW5jdGlvbihhLGMpe2Euc3BsaWNlKGMsMSl9OmZ1bmN0aW9uKGEsYyl7dmFyIGg7aWYoYz09PWEubGVuZ3RoLTEpYS5sZW5ndGg9CmM7ZWxzZXt2YXIgZD1hLnNsaWNlKGMrMSk7YS5sZW5ndGg9Yzt2YXIgaz0wO2ZvcihoPWQubGVuZ3RoO2s8aDsrK2spYVtjK2tdPWRba119fSxwPXYoImtleSIpLHk9digidmFsdWUiKTtxLnByb3RvdHlwZT17Z2V0RXF1YWxpdHlGdW5jdGlvbjpmdW5jdGlvbihhKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgYS5lcXVhbHM\/QjpDfSxnZXRFbnRyeUZvcktleTpyKDEpLGdldEVudHJ5QW5kSW5kZXhGb3JLZXk6cigyKSxyZW1vdmVFbnRyeUZvcktleTpmdW5jdGlvbihhKXtyZXR1cm4oYT10aGlzLmdldEVudHJ5QW5kSW5kZXhGb3JLZXkoYSkpPyh6KHRoaXMuZW50cmllcyxhWzBdKSxhWzFdKTpudWxsfSxhZGRFbnRyeTpmdW5jdGlvbihhLGMpe3RoaXMuZW50cmllc1t0aGlzLmVudHJpZXMubGVuZ3RoXT1bYSxjXX0sa2V5czp3KDApLHZhbHVlczp3KDEpLGdldEVudHJpZXM6ZnVuY3Rpb24oYSl7Zm9yKHZhciBjPWEubGVuZ3RoLGg9MCxkPXRoaXMuZW50cmllcy5sZW5ndGg7aDxkOysraClhW2MrCmhdPXRoaXMuZW50cmllc1toXS5zbGljZSgwKX0sY29udGFpbnNLZXk6cigwKSxjb250YWluc1ZhbHVlOmZ1bmN0aW9uKGEpe2Zvcih2YXIgYz10aGlzLmVudHJpZXMubGVuZ3RoO2MtLTspaWYoYT09PXRoaXMuZW50cmllc1tjXVsxXSlyZXR1cm4hMDtyZXR1cm4hMX19O3JldHVybiB4fSgpOwovKiogL20vanMvbmV3Y2Fycy5qcyAqKi8KdmFyIF9fX2QyY19uZXdjYXJzanNfY19vbj0iMjAyNi0wNi0xMiAxMjozMDowMyI7J3VzZSBzdHJpY3QnO3ZhciAkanNjb21wPSRqc2NvbXB8fHt9OyRqc2NvbXAuc2NvcGU9e307JGpzY29tcC5BU1NVTUVfRVM1PSExOyRqc2NvbXAuQVNTVU1FX05PX05BVElWRV9NQVA9ITE7JGpzY29tcC5BU1NVTUVfTk9fTkFUSVZFX1NFVD0hMTskanNjb21wLlNJTVBMRV9GUk9VTkRfUE9MWUZJTEw9ITE7JGpzY29tcC5JU09MQVRFX1BPTFlGSUxMUz0hMTskanNjb21wLkZPUkNFX1BPTFlGSUxMX1BST01JU0U9ITE7JGpzY29tcC5GT1JDRV9QT0xZRklMTF9QUk9NSVNFX1dIRU5fTk9fVU5IQU5ETEVEX1JFSkVDVElPTj0hMTskanNjb21wLmRlZmluZVByb3BlcnR5PSRqc2NvbXAuQVNTVU1FX0VTNXx8ImZ1bmN0aW9uIj09dHlwZW9mIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzP09iamVjdC5kZWZpbmVQcm9wZXJ0eTpmdW5jdGlvbihhLGIsZSl7aWYoYT09QXJyYXkucHJvdG90eXBlfHxhPT1PYmplY3QucHJvdG90eXBlKXJldHVybiBhO2FbYl09ZS52YWx1ZTtyZXR1cm4gYX07CiRqc2NvbXAuZ2V0R2xvYmFsPWZ1bmN0aW9uKGEpe2E9WyJvYmplY3QiPT10eXBlb2YgZ2xvYmFsVGhpcyYmZ2xvYmFsVGhpcyxhLCJvYmplY3QiPT10eXBlb2Ygd2luZG93JiZ3aW5kb3csIm9iamVjdCI9PXR5cGVvZiBzZWxmJiZzZWxmLCJvYmplY3QiPT10eXBlb2YgZ2xvYmFsJiZnbG9iYWxdO2Zvcih2YXIgYj0wO2I8YS5sZW5ndGg7KytiKXt2YXIgZT1hW2JdO2lmKGUmJmUuTWF0aD09TWF0aClyZXR1cm4gZX10aHJvdyBFcnJvcigiQ2Fubm90IGZpbmQgZ2xvYmFsIG9iamVjdCIpO307JGpzY29tcC5nbG9iYWw9JGpzY29tcC5nZXRHbG9iYWwodGhpcyk7JGpzY29tcC5JU19TWU1CT0xfTkFUSVZFPSJmdW5jdGlvbiI9PT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09PXR5cGVvZiBTeW1ib2woIngiKTskanNjb21wLlRSVVNUX0VTNl9QT0xZRklMTFM9ISRqc2NvbXAuSVNPTEFURV9QT0xZRklMTFN8fCRqc2NvbXAuSVNfU1lNQk9MX05BVElWRTskanNjb21wLnBvbHlmaWxscz17fTsKJGpzY29tcC5wcm9wZXJ0eVRvUG9seWZpbGxTeW1ib2w9e307JGpzY29tcC5QT0xZRklMTF9QUkVGSVg9IiRqc2NwJCI7dmFyICRqc2NvbXAkbG9va3VwUG9seWZpbGxlZFZhbHVlPWZ1bmN0aW9uKGEsYil7dmFyIGU9JGpzY29tcC5wcm9wZXJ0eVRvUG9seWZpbGxTeW1ib2xbYl07aWYobnVsbD09ZSlyZXR1cm4gYVtiXTtlPWFbZV07cmV0dXJuIHZvaWQgMCE9PWU\/ZTphW2JdfTskanNjb21wLnBvbHlmaWxsPWZ1bmN0aW9uKGEsYixlLGcpe2ImJigkanNjb21wLklTT0xBVEVfUE9MWUZJTExTPyRqc2NvbXAucG9seWZpbGxJc29sYXRlZChhLGIsZSxnKTokanNjb21wLnBvbHlmaWxsVW5pc29sYXRlZChhLGIsZSxnKSl9OwokanNjb21wLnBvbHlmaWxsVW5pc29sYXRlZD1mdW5jdGlvbihhLGIsZSxnKXtlPSRqc2NvbXAuZ2xvYmFsO2E9YS5zcGxpdCgiLiIpO2ZvcihnPTA7ZzxhLmxlbmd0aC0xO2crKyl7dmFyIGg9YVtnXTtpZighKGggaW4gZSkpcmV0dXJuO2U9ZVtoXX1hPWFbYS5sZW5ndGgtMV07Zz1lW2FdO2I9YihnKTtiIT1nJiZudWxsIT1iJiYkanNjb21wLmRlZmluZVByb3BlcnR5KGUsYSx7Y29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOmJ9KX07CiRqc2NvbXAucG9seWZpbGxJc29sYXRlZD1mdW5jdGlvbihhLGIsZSxnKXt2YXIgaD1hLnNwbGl0KCIuIik7YT0xPT09aC5sZW5ndGg7Zz1oWzBdO2c9IWEmJmcgaW4gJGpzY29tcC5wb2x5ZmlsbHM\/JGpzY29tcC5wb2x5ZmlsbHM6JGpzY29tcC5nbG9iYWw7Zm9yKHZhciBuPTA7bjxoLmxlbmd0aC0xO24rKyl7dmFyIHQ9aFtuXTtpZighKHQgaW4gZykpcmV0dXJuO2c9Z1t0XX1oPWhbaC5sZW5ndGgtMV07ZT0kanNjb21wLklTX1NZTUJPTF9OQVRJVkUmJiJlczYiPT09ZT9nW2hdOm51bGw7Yj1iKGUpO251bGwhPWImJihhPyRqc2NvbXAuZGVmaW5lUHJvcGVydHkoJGpzY29tcC5wb2x5ZmlsbHMsaCx7Y29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOmJ9KTpiIT09ZSYmKHZvaWQgMD09PSRqc2NvbXAucHJvcGVydHlUb1BvbHlmaWxsU3ltYm9sW2hdJiYoZT0xRTkqTWF0aC5yYW5kb20oKT4+PjAsJGpzY29tcC5wcm9wZXJ0eVRvUG9seWZpbGxTeW1ib2xbaF09JGpzY29tcC5JU19TWU1CT0xfTkFUSVZFPwokanNjb21wLmdsb2JhbC5TeW1ib2woaCk6JGpzY29tcC5QT0xZRklMTF9QUkVGSVgrZSsiJCIraCksJGpzY29tcC5kZWZpbmVQcm9wZXJ0eShnLCRqc2NvbXAucHJvcGVydHlUb1BvbHlmaWxsU3ltYm9sW2hdLHtjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6Yn0pKSl9OyRqc2NvbXAudW5kZXJzY29yZVByb3RvQ2FuQmVTZXQ9ZnVuY3Rpb24oKXt2YXIgYT17YTohMH0sYj17fTt0cnl7cmV0dXJuIGIuX19wcm90b19fPWEsYi5hfWNhdGNoKGUpe31yZXR1cm4hMX07CiRqc2NvbXAuc2V0UHJvdG90eXBlT2Y9JGpzY29tcC5UUlVTVF9FUzZfUE9MWUZJTExTJiYiZnVuY3Rpb24iPT10eXBlb2YgT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZjokanNjb21wLnVuZGVyc2NvcmVQcm90b0NhbkJlU2V0KCk\/ZnVuY3Rpb24oYSxiKXthLl9fcHJvdG9fXz1iO2lmKGEuX19wcm90b19fIT09Yil0aHJvdyBuZXcgVHlwZUVycm9yKGErIiBpcyBub3QgZXh0ZW5zaWJsZSIpO3JldHVybiBhfTpudWxsOyRqc2NvbXAuYXJyYXlJdGVyYXRvckltcGw9ZnVuY3Rpb24oYSl7dmFyIGI9MDtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gYjxhLmxlbmd0aD97ZG9uZTohMSx2YWx1ZTphW2IrK119Ontkb25lOiEwfX19OyRqc2NvbXAuYXJyYXlJdGVyYXRvcj1mdW5jdGlvbihhKXtyZXR1cm57bmV4dDokanNjb21wLmFycmF5SXRlcmF0b3JJbXBsKGEpfX07CiRqc2NvbXAubWFrZUl0ZXJhdG9yPWZ1bmN0aW9uKGEpe3ZhciBiPSJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZTeW1ib2wuaXRlcmF0b3ImJmFbU3ltYm9sLml0ZXJhdG9yXTtyZXR1cm4gYj9iLmNhbGwoYSk6JGpzY29tcC5hcnJheUl0ZXJhdG9yKGEpfTskanNjb21wLmdlbmVyYXRvcj17fTskanNjb21wLmdlbmVyYXRvci5lbnN1cmVJdGVyYXRvclJlc3VsdElzT2JqZWN0Xz1mdW5jdGlvbihhKXtpZighKGEgaW5zdGFuY2VvZiBPYmplY3QpKXRocm93IG5ldyBUeXBlRXJyb3IoIkl0ZXJhdG9yIHJlc3VsdCAiK2ErIiBpcyBub3QgYW4gb2JqZWN0Iik7fTsKJGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dD1mdW5jdGlvbigpe3RoaXMuaXNSdW5uaW5nXz0hMTt0aGlzLnlpZWxkQWxsSXRlcmF0b3JfPW51bGw7dGhpcy55aWVsZFJlc3VsdD12b2lkIDA7dGhpcy5uZXh0QWRkcmVzcz0xO3RoaXMuZmluYWxseUFkZHJlc3NfPXRoaXMuY2F0Y2hBZGRyZXNzXz0wO3RoaXMuZmluYWxseUNvbnRleHRzXz10aGlzLmFicnVwdENvbXBsZXRpb25fPW51bGx9OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLnN0YXJ0Xz1mdW5jdGlvbigpe2lmKHRoaXMuaXNSdW5uaW5nXyl0aHJvdyBuZXcgVHlwZUVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBydW5uaW5nIik7dGhpcy5pc1J1bm5pbmdfPSEwfTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5zdG9wXz1mdW5jdGlvbigpe3RoaXMuaXNSdW5uaW5nXz0hMX07CiRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLmp1bXBUb0Vycm9ySGFuZGxlcl89ZnVuY3Rpb24oKXt0aGlzLm5leHRBZGRyZXNzPXRoaXMuY2F0Y2hBZGRyZXNzX3x8dGhpcy5maW5hbGx5QWRkcmVzc199OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLm5leHRfPWZ1bmN0aW9uKGEpe3RoaXMueWllbGRSZXN1bHQ9YX07JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUudGhyb3dfPWZ1bmN0aW9uKGEpe3RoaXMuYWJydXB0Q29tcGxldGlvbl89e2V4Y2VwdGlvbjphLGlzRXhjZXB0aW9uOiEwfTt0aGlzLmp1bXBUb0Vycm9ySGFuZGxlcl8oKX07JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUucmV0dXJuPWZ1bmN0aW9uKGEpe3RoaXMuYWJydXB0Q29tcGxldGlvbl89e3JldHVybjphfTt0aGlzLm5leHRBZGRyZXNzPXRoaXMuZmluYWxseUFkZHJlc3NffTsKJGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUuanVtcFRocm91Z2hGaW5hbGx5QmxvY2tzPWZ1bmN0aW9uKGEpe3RoaXMuYWJydXB0Q29tcGxldGlvbl89e2p1bXBUbzphfTt0aGlzLm5leHRBZGRyZXNzPXRoaXMuZmluYWxseUFkZHJlc3NffTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS55aWVsZD1mdW5jdGlvbihhLGIpe3RoaXMubmV4dEFkZHJlc3M9YjtyZXR1cm57dmFsdWU6YX19OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLnlpZWxkQWxsPWZ1bmN0aW9uKGEsYil7YT0kanNjb21wLm1ha2VJdGVyYXRvcihhKTt2YXIgZT1hLm5leHQoKTskanNjb21wLmdlbmVyYXRvci5lbnN1cmVJdGVyYXRvclJlc3VsdElzT2JqZWN0XyhlKTtpZihlLmRvbmUpdGhpcy55aWVsZFJlc3VsdD1lLnZhbHVlLHRoaXMubmV4dEFkZHJlc3M9YjtlbHNlIHJldHVybiB0aGlzLnlpZWxkQWxsSXRlcmF0b3JfPWEsdGhpcy55aWVsZChlLnZhbHVlLGIpfTsKJGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUuanVtcFRvPWZ1bmN0aW9uKGEpe3RoaXMubmV4dEFkZHJlc3M9YX07JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUuanVtcFRvRW5kPWZ1bmN0aW9uKCl7dGhpcy5uZXh0QWRkcmVzcz0wfTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5zZXRDYXRjaEZpbmFsbHlCbG9ja3M9ZnVuY3Rpb24oYSxiKXt0aGlzLmNhdGNoQWRkcmVzc189YTt2b2lkIDAhPWImJih0aGlzLmZpbmFsbHlBZGRyZXNzXz1iKX07JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUuc2V0RmluYWxseUJsb2NrPWZ1bmN0aW9uKGEpe3RoaXMuY2F0Y2hBZGRyZXNzXz0wO3RoaXMuZmluYWxseUFkZHJlc3NfPWF8fDB9OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLmxlYXZlVHJ5QmxvY2s9ZnVuY3Rpb24oYSxiKXt0aGlzLm5leHRBZGRyZXNzPWE7dGhpcy5jYXRjaEFkZHJlc3NfPWJ8fDB9OwokanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5lbnRlckNhdGNoQmxvY2s9ZnVuY3Rpb24oYSl7dGhpcy5jYXRjaEFkZHJlc3NfPWF8fDA7YT10aGlzLmFicnVwdENvbXBsZXRpb25fLmV4Y2VwdGlvbjt0aGlzLmFicnVwdENvbXBsZXRpb25fPW51bGw7cmV0dXJuIGF9OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLmVudGVyRmluYWxseUJsb2NrPWZ1bmN0aW9uKGEsYixlKXtlP3RoaXMuZmluYWxseUNvbnRleHRzX1tlXT10aGlzLmFicnVwdENvbXBsZXRpb25fOnRoaXMuZmluYWxseUNvbnRleHRzXz1bdGhpcy5hYnJ1cHRDb21wbGV0aW9uX107dGhpcy5jYXRjaEFkZHJlc3NfPWF8fDA7dGhpcy5maW5hbGx5QWRkcmVzc189Ynx8MH07CiRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLmxlYXZlRmluYWxseUJsb2NrPWZ1bmN0aW9uKGEsYil7Yj10aGlzLmZpbmFsbHlDb250ZXh0c18uc3BsaWNlKGJ8fDApWzBdO2lmKGI9dGhpcy5hYnJ1cHRDb21wbGV0aW9uXz10aGlzLmFicnVwdENvbXBsZXRpb25ffHxiKXtpZihiLmlzRXhjZXB0aW9uKXJldHVybiB0aGlzLmp1bXBUb0Vycm9ySGFuZGxlcl8oKTt2b2lkIDAhPWIuanVtcFRvJiZ0aGlzLmZpbmFsbHlBZGRyZXNzXzxiLmp1bXBUbz8odGhpcy5uZXh0QWRkcmVzcz1iLmp1bXBUbyx0aGlzLmFicnVwdENvbXBsZXRpb25fPW51bGwpOnRoaXMubmV4dEFkZHJlc3M9dGhpcy5maW5hbGx5QWRkcmVzc199ZWxzZSB0aGlzLm5leHRBZGRyZXNzPWF9OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLmZvckluPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcgJGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5Qcm9wZXJ0eUl0ZXJhdG9yKGEpfTsKJGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5Qcm9wZXJ0eUl0ZXJhdG9yPWZ1bmN0aW9uKGEpe3RoaXMub2JqZWN0Xz1hO3RoaXMucHJvcGVydGllc189W107Zm9yKHZhciBiIGluIGEpdGhpcy5wcm9wZXJ0aWVzXy5wdXNoKGIpO3RoaXMucHJvcGVydGllc18ucmV2ZXJzZSgpfTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LlByb3BlcnR5SXRlcmF0b3IucHJvdG90eXBlLmdldE5leHQ9ZnVuY3Rpb24oKXtmb3IoOzA8dGhpcy5wcm9wZXJ0aWVzXy5sZW5ndGg7KXt2YXIgYT10aGlzLnByb3BlcnRpZXNfLnBvcCgpO2lmKGEgaW4gdGhpcy5vYmplY3RfKXJldHVybiBhfXJldHVybiBudWxsfTskanNjb21wLmdlbmVyYXRvci5FbmdpbmVfPWZ1bmN0aW9uKGEpe3RoaXMuY29udGV4dF89bmV3ICRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQ7dGhpcy5wcm9ncmFtXz1hfTsKJGpzY29tcC5nZW5lcmF0b3IuRW5naW5lXy5wcm90b3R5cGUubmV4dF89ZnVuY3Rpb24oYSl7dGhpcy5jb250ZXh0Xy5zdGFydF8oKTtpZih0aGlzLmNvbnRleHRfLnlpZWxkQWxsSXRlcmF0b3JfKXJldHVybiB0aGlzLnlpZWxkQWxsU3RlcF8odGhpcy5jb250ZXh0Xy55aWVsZEFsbEl0ZXJhdG9yXy5uZXh0LGEsdGhpcy5jb250ZXh0Xy5uZXh0Xyk7dGhpcy5jb250ZXh0Xy5uZXh0XyhhKTtyZXR1cm4gdGhpcy5uZXh0U3RlcF8oKX07CiRqc2NvbXAuZ2VuZXJhdG9yLkVuZ2luZV8ucHJvdG90eXBlLnJldHVybl89ZnVuY3Rpb24oYSl7dGhpcy5jb250ZXh0Xy5zdGFydF8oKTt2YXIgYj10aGlzLmNvbnRleHRfLnlpZWxkQWxsSXRlcmF0b3JfO2lmKGIpcmV0dXJuIHRoaXMueWllbGRBbGxTdGVwXygicmV0dXJuImluIGI\/YlsicmV0dXJuIl06ZnVuY3Rpb24oZSl7cmV0dXJue3ZhbHVlOmUsZG9uZTohMH19LGEsdGhpcy5jb250ZXh0Xy5yZXR1cm4pO3RoaXMuY29udGV4dF8ucmV0dXJuKGEpO3JldHVybiB0aGlzLm5leHRTdGVwXygpfTsKJGpzY29tcC5nZW5lcmF0b3IuRW5naW5lXy5wcm90b3R5cGUudGhyb3dfPWZ1bmN0aW9uKGEpe3RoaXMuY29udGV4dF8uc3RhcnRfKCk7aWYodGhpcy5jb250ZXh0Xy55aWVsZEFsbEl0ZXJhdG9yXylyZXR1cm4gdGhpcy55aWVsZEFsbFN0ZXBfKHRoaXMuY29udGV4dF8ueWllbGRBbGxJdGVyYXRvcl9bInRocm93Il0sYSx0aGlzLmNvbnRleHRfLm5leHRfKTt0aGlzLmNvbnRleHRfLnRocm93XyhhKTtyZXR1cm4gdGhpcy5uZXh0U3RlcF8oKX07CiRqc2NvbXAuZ2VuZXJhdG9yLkVuZ2luZV8ucHJvdG90eXBlLnlpZWxkQWxsU3RlcF89ZnVuY3Rpb24oYSxiLGUpe3RyeXt2YXIgZz1hLmNhbGwodGhpcy5jb250ZXh0Xy55aWVsZEFsbEl0ZXJhdG9yXyxiKTskanNjb21wLmdlbmVyYXRvci5lbnN1cmVJdGVyYXRvclJlc3VsdElzT2JqZWN0XyhnKTtpZighZy5kb25lKXJldHVybiB0aGlzLmNvbnRleHRfLnN0b3BfKCksZzt2YXIgaD1nLnZhbHVlfWNhdGNoKG4pe3JldHVybiB0aGlzLmNvbnRleHRfLnlpZWxkQWxsSXRlcmF0b3JfPW51bGwsdGhpcy5jb250ZXh0Xy50aHJvd18obiksdGhpcy5uZXh0U3RlcF8oKX10aGlzLmNvbnRleHRfLnlpZWxkQWxsSXRlcmF0b3JfPW51bGw7ZS5jYWxsKHRoaXMuY29udGV4dF8saCk7cmV0dXJuIHRoaXMubmV4dFN0ZXBfKCl9OwokanNjb21wLmdlbmVyYXRvci5FbmdpbmVfLnByb3RvdHlwZS5uZXh0U3RlcF89ZnVuY3Rpb24oKXtmb3IoO3RoaXMuY29udGV4dF8ubmV4dEFkZHJlc3M7KXRyeXt2YXIgYT10aGlzLnByb2dyYW1fKHRoaXMuY29udGV4dF8pO2lmKGEpcmV0dXJuIHRoaXMuY29udGV4dF8uc3RvcF8oKSx7dmFsdWU6YS52YWx1ZSxkb25lOiExfX1jYXRjaChiKXt0aGlzLmNvbnRleHRfLnlpZWxkUmVzdWx0PXZvaWQgMCx0aGlzLmNvbnRleHRfLnRocm93XyhiKX10aGlzLmNvbnRleHRfLnN0b3BfKCk7aWYodGhpcy5jb250ZXh0Xy5hYnJ1cHRDb21wbGV0aW9uXyl7YT10aGlzLmNvbnRleHRfLmFicnVwdENvbXBsZXRpb25fO3RoaXMuY29udGV4dF8uYWJydXB0Q29tcGxldGlvbl89bnVsbDtpZihhLmlzRXhjZXB0aW9uKXRocm93IGEuZXhjZXB0aW9uO3JldHVybnt2YWx1ZTphLnJldHVybixkb25lOiEwfX1yZXR1cm57dmFsdWU6dm9pZCAwLGRvbmU6ITB9fTsKJGpzY29tcC5nZW5lcmF0b3IuR2VuZXJhdG9yXz1mdW5jdGlvbihhKXt0aGlzLm5leHQ9ZnVuY3Rpb24oYil7cmV0dXJuIGEubmV4dF8oYil9O3RoaXMudGhyb3c9ZnVuY3Rpb24oYil7cmV0dXJuIGEudGhyb3dfKGIpfTt0aGlzLnJldHVybj1mdW5jdGlvbihiKXtyZXR1cm4gYS5yZXR1cm5fKGIpfTt0aGlzW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc319OyRqc2NvbXAuZ2VuZXJhdG9yLmNyZWF0ZUdlbmVyYXRvcj1mdW5jdGlvbihhLGIpe2I9bmV3ICRqc2NvbXAuZ2VuZXJhdG9yLkdlbmVyYXRvcl8obmV3ICRqc2NvbXAuZ2VuZXJhdG9yLkVuZ2luZV8oYikpOyRqc2NvbXAuc2V0UHJvdG90eXBlT2YmJmEucHJvdG90eXBlJiYkanNjb21wLnNldFByb3RvdHlwZU9mKGIsYS5wcm90b3R5cGUpO3JldHVybiBifTsKJGpzY29tcC5hc3luY0V4ZWN1dGVQcm9taXNlR2VuZXJhdG9yPWZ1bmN0aW9uKGEpe2Z1bmN0aW9uIGIoZyl7cmV0dXJuIGEubmV4dChnKX1mdW5jdGlvbiBlKGcpe3JldHVybiBhLnRocm93KGcpfXJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihnLGgpe2Z1bmN0aW9uIG4odCl7dC5kb25lP2codC52YWx1ZSk6UHJvbWlzZS5yZXNvbHZlKHQudmFsdWUpLnRoZW4oYixlKS50aGVuKG4saCl9bihhLm5leHQoKSl9KX07JGpzY29tcC5hc3luY0V4ZWN1dGVQcm9taXNlR2VuZXJhdG9yRnVuY3Rpb249ZnVuY3Rpb24oYSl7cmV0dXJuICRqc2NvbXAuYXN5bmNFeGVjdXRlUHJvbWlzZUdlbmVyYXRvcihhKCkpfTskanNjb21wLmFzeW5jRXhlY3V0ZVByb21pc2VHZW5lcmF0b3JQcm9ncmFtPWZ1bmN0aW9uKGEpe3JldHVybiAkanNjb21wLmFzeW5jRXhlY3V0ZVByb21pc2VHZW5lcmF0b3IobmV3ICRqc2NvbXAuZ2VuZXJhdG9yLkdlbmVyYXRvcl8obmV3ICRqc2NvbXAuZ2VuZXJhdG9yLkVuZ2luZV8oYSkpKX07CmxldCAkanNjb21wJG9wdGNoYWluJHRtcDE5MzczODk4NTkkMDsKbmV3Q2Fycz17aXNNb2JpbGU6IjEiPT09KG51bGw9PSgkanNjb21wJG9wdGNoYWluJHRtcDE5MzczODk4NTkkMD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaXNNb2JpbGUiKSk\/dm9pZCAwOiRqc2NvbXAkb3B0Y2hhaW4kdG1wMTkzNzM4OTg1OSQwLnZhbHVlKSxjb250YWluZXI6ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm5ld2NhckNvbnRhaW5lciIpLHJlc2l6ZU1haW5XaW5kb3c6ZnVuY3Rpb24oKXtpZighbmV3Q2Fycy5pc01vYmlsZSl7dmFyIGE9JCgiI3JpZ2h0U2lkZSIpLmhlaWdodCgpLTM1LGI9JCgiI25ld2NhckNvbnRhaW5lciIpLmhlaWdodCgpOyFpc05hTihhKSYmIWlzTmFOKGIpJiZhPmImJigkKCIjbmV3Y2FyQ29udGFpbmVyIikuaGVpZ2h0KGEpLCQoIiNmb290ZXJEaXYiKS5jc3MoInBhZGRpbmciLCIwcHgiKSl9fSxzZXRQYXltZW50VG9vbHRpcHM6KCk9PntuZXdDYXJzLmlzTW9iaWxlPyQoIi5kaXZDYXJzQm94V3JhcHBlciIpLmVhY2goZnVuY3Rpb24oKXskKHRoaXMpLmZpbmQoIi5kaXZDYXJTaW5nbGVPdXRlckJveCAuZGl2Q2FyUGF5bWVudENvbnRhaW5lciAucGF5bWVudEluZm9CdWJibGUgLnBheW1lbnRUb29sdGlwIikuZWFjaChmdW5jdGlvbigpe3RyeXt2YXIgYT0kKHRoaXMpLmF0dHIoImRhdGEtdG9vbHRpcCIpOwokKHRoaXMpLmRhcmtUb29sdGlwKHtjb250ZW50OmEsZ3Jhdml0eToiZWFzdCIsdGhlbWU6ImxpZ2h0Iix0cmlnZ2VyOiJjbGljayIsYW5pbWF0aW9uOiJmbGlwSW4ifSl9Y2F0Y2goYil7fX0pfSk6JCgiLmRpdkNhcnNCb3hXcmFwcGVyIikuZWFjaChmdW5jdGlvbigpeyQodGhpcykuZmluZCgiLmRpdkNhclNpbmdsZU91dGVyQm94Iikub24oIm1vdXNlZW50ZXIgbW91c2VsZWF2ZSIsZnVuY3Rpb24oYSl7dHJ5e2lmKCQodGhpcykuZGF0YSgidG9vbHRpcENyZWF0ZWQiKSlyZXR1cm4hMTskKHRoaXMpLmRhdGEoInRvb2x0aXBDcmVhdGVkIiwxKTskKHRoaXMpLmZpbmQoIi5kaXZDYXJQYXltZW50Q29udGFpbmVyVG9vbHRpcCIpLmRhcmtUb29sdGlwKHtncmF2aXR5OiJ3ZXN0Iix0aGVtZToibGlnaHQiLHRyaWdnZXI6ImhvdmVyIixhbmltYXRpb246ImZsaXBJbiJ9KX1jYXRjaChiKXt9fSl9KX0sbmV3Q2Fyc0ZpbHRlcjooKT0+e2Z1bmN0aW9uIGEoKXt2YXIgYz0kKCIuZGl2Q2F0ZWdvcnlCb3hXcmFwcGVyIikubWFwKGZ1bmN0aW9uKGQsCmYpe3JldHVybiBwYXJzZUludCgkKGYpLmF0dHIoIm5iVmlzaWJsZSIpKX0pLmdldCgpLnJlZHVjZShmdW5jdGlvbihkLGYpe3JldHVybiBkK2Z9LDApO3JldHVybntmaWx0ZXJzOntzdGF0dXM6Ik5ldyIsYm9keVN0eWxlOiQoImlucHV0OmNoZWNrZWQuZmlsdGVyQ2hlY2suY2F0ZWdvcnkiKS5tYXAoZnVuY3Rpb24oZCxmKXtyZXR1cm4gJChmKS52YWwoKX0pLmdldCgpLGZ1ZWxUeXBlOiQoImlucHV0OmNoZWNrZWQuZmlsdGVyQ2hlY2suZnVlbHR5cGUiKS5tYXAoZnVuY3Rpb24oZCxmKXtyZXR1cm4gJChmKS5kYXRhKCJlc3NlbmNlIil9KS5nZXQoKSxkcml2ZVRyYWluOiQoImlucHV0OmNoZWNrZWQuZmlsdGVyQ2hlY2suZHJpdmV0cmFpbiIpLm1hcChmdW5jdGlvbihkLGYpe3JldHVybiAkKGYpLmRhdGEoImRyaXZldHJhaW4iKX0pLmdldCgpLG1heFByaWNlOnAubWF4LG1pblByaWNlOnAubWlufSx2ZWhpY2xlQ291bnQ6Y319dmFyIGI9ITE7dHJ5eyJ1bmRlZmluZWQiPT1qUXVlcnkuYnJvd3Nlci5tc2llPwpiPSEwOjk8PXBhcnNlSW50KGpRdWVyeS5icm93c2VyLnZlcnNpb24sMTApJiYoYj0hMCl9Y2F0Y2goYyl7fWlmKCJ1bmRlZmluZWQiPT10eXBlb2YgYm94QmxvY2tzfHwxPmJveEJsb2Nrcy5sZW5ndGgpYj0hMTstMTx3aW5kb3cubG9jYXRpb24uaHJlZi5pbmRleE9mKCJjYW1pb25zLWNvbW1lcmNpYXV4IikmJihiPSExKTtpZihiKXt2YXIgZT1uZXdDYXJzLmdldEZpbHRlcigpO2I9Z2V0VXJsVmFycygpO3ZhciBnPWIuaGFzT3duUHJvcGVydHkoImJvZHkiKSxoPWIuaGFzT3duUHJvcGVydHkoImZ1ZWwiKTtuZXdDYXJzLmNvbnRhaW5lci5xdWVyeVNlbGVjdG9yQWxsKCIuZmlsdGVyQ2hlY2siKS5mb3JFYWNoKGM9PntnJiZjLmNsYXNzTGlzdC5jb250YWlucygiY2F0ZWdvcnkiKXx8aCYmYy5jbGFzc0xpc3QuY29udGFpbnMoImZ1ZWx0eXBlIil8fChjLmNoZWNrZWQ9IWUuaGFzT3duUHJvcGVydHkoYy5pZCl8fCEwPT09ZVtjLmlkXSl9KTskKCIjZmlsdGVyTWFpbkJveCIpLnNob3coKTsKZm9yKHZhciBuIGluIGJveEJsb2Nrcyl7Yj0wO2Zvcih2YXIgdCBpbiBib3hCbG9ja3Nbbl0pYisrOyQoIiNjbGFzcyIrbisiX2NvbnRhaW5lciIpLmF0dHIoIm5iVmlzaWJsZSIsYil9JCgiLmZpbHRlckNoZWNrIikub24oImNsaWNrIixmdW5jdGlvbigpe3ZhciBjPSQodGhpcyk7bmV3Q2Fycy5zZXRGaWx0ZXIoYy5hdHRyKCJpZCIpLGMuaXMoIjpjaGVja2VkIikpO3NldFRpbWVvdXQoeCwxMDApO2lmKGMuaGFzQ2xhc3MoImNhdGVnb3J5Iikpe3ZhciBkPWMudmFsKCk7c2V0VGltZW91dChmdW5jdGlvbigpe0IoZCl9LDEwMCl9fSk7JCgiLnJhZGlvU29ydCIpLm9uKCJjbGljayIsZnVuY3Rpb24oKXtDKCQodGhpcykudmFsKCkpfSk7JCgiLmZpbHRlclNwYW4iKS5vbigiY2xpY2siLGZ1bmN0aW9uKCl7dmFyIGM9JCh0aGlzKTtuZXdDYXJzLnNldEZpbHRlcigiZmlsdGVyU3BhbiIsYy5hdHRyKCJyZWwiKSk7Yz0iIyIrYy5hdHRyKCJyZWwiKTskKGMpLnRyaWdnZXIoImNsaWNrIil9KTsKdmFyIHk9IiIsdz0iIixHPWZ1bmN0aW9uKGMsZCl7cmV0dXJuIGMuY29uc289PWQuY29uc28\/MDpjLmNvbnNvPmQuY29uc28\/MTotMX0sSD1mdW5jdGlvbihjLGQpe3JldHVybiBjLmNvbnNvPT1kLmNvbnNvPzA6Yy5jb25zbz5kLmNvbnNvPy0xOjF9LEk9ZnVuY3Rpb24oYyxkKXtyZXR1cm4gYy5wcmljZT09ZC5wcmljZT8wOmMucHJpY2U+ZC5wcmljZT8xOi0xfSxKPWZ1bmN0aW9uKGMsZCl7cmV0dXJuIGMucHJpY2U9PWQucHJpY2U\/MDpjLnByaWNlPmQucHJpY2U\/LTE6MX0sSz1mdW5jdGlvbihjLGQpe3JldHVybiBjLmNhck1vZGVsPT1kLmNhck1vZGVsP2MueWVhcj5kLnllYXI\/LTE6Yy55ZWFyPGQueWVhcj8xOjA6Yy5jYXJNb2RlbD5kLmNhck1vZGVsPzE6LTF9LEM9ZnVuY3Rpb24oYyxkKXt3PSJ1bmRlZmluZWQiIT09dHlwZW9mIGQ\/ZDp5PT1jPyJBc2MiPT13PyJEZXNjIjoiQXNjIjoiQXNjIjt5PWM7bmV3Q2Fycy5zZXRGaWx0ZXIoInNvcnRCeSIseSk7bmV3Q2Fycy5zZXRGaWx0ZXIoInNvcnREaXIiLAp3KTtmb3IodmFyIGYgaW4gYm94QmxvY2tzKXtjPTE7ZD1bXTtmb3IodmFyIG0gaW4gYm94QmxvY2tzW2ZdKXt2YXIgbD1ib3hCbG9ja3NbZl1bbV07bC52aXNpYmxlJiYoZFtkLmxlbmd0aF09bCl9c3dpdGNoKHkpe2Nhc2UgInByaWNlIjoiQXNjIj09dz9kLnNvcnQoSSk6ZC5zb3J0KEopO2JyZWFrO2Nhc2UgIm1vZGVsIjpkLnNvcnQoSyk7YnJlYWs7Y2FzZSAiY29uc28iOiJBc2MiPT13P2Quc29ydChHKTpkLnNvcnQoSCl9ZC5zb3J0KGZ1bmN0aW9uKGssdSl7cmV0dXJuIGsuc3BlY2lhbE9yZGVyPT11LnNwZWNpYWxPcmRlcj8wOmsuc3BlY2lhbE9yZGVyPnUuc3BlY2lhbE9yZGVyPzE6LTF9KTtmb3IobD0wO2w8ZC5sZW5ndGg7bCsrKWRbbF0udmlzaWJsZSYmKGRbbF0ucG9zaXRpb24hPWwrMSYmKGRbbF0ucG9zaXRpb249bCsxLEEoZiwiZmJ4XyIrZisiXyIrZFtsXS5pZCwibW92ZSIsbCsxKSksYysrKX19LEw9ZnVuY3Rpb24oKXtmb3IodmFyIGMgaW4gYm94QmxvY2tzKXt2YXIgZD0KMSxmO2ZvcihmIGluIGJveEJsb2Nrc1tjXSl7dmFyIG09Ym94QmxvY2tzW2NdW2ZdO20udmlzaWJsZSYmbS5wb3NpdGlvbiE9ZCYmKG0ucG9zaXRpb249ZCxBKGMsZiwibW92ZSIsZCkpO0EoYyxmLG0udmlzaWJsZT8ic2hvdyI6ImhpZGUiKTttLnZpc2libGUmJmQrK30kKCIjY2xhc3MiK2MrIl9jb250YWluZXIiKS5hdHRyKCJuYlZpc2libGUiLGQtMSl9fSxEPWZ1bmN0aW9uKGMsZCl7Zm9yKHZhciBmPTAsbT0xO208ZDttKyspe3ZhciBsPSQoIiMiK2MrbSk7MDxsLmxlbmd0aCYmbC5wcm9wKCJjaGVja2VkIikmJihmKz1NYXRoLnBvdygyLG0tMSkpfXJldHVybiBmfSx4PWZ1bmN0aW9uKCl7dmFyIGM9RCgiZmlsdGVyRXNzZW5jZUNoZWNrIiw2KSxkPUQoImZpbHRlckRyaXZlVHJhaW5DaGVjayIsNCksZj1bXSxtPVtdOyQoIi5maWx0ZXJDaGVjay5jYXRlZ29yeSIpLmVhY2goZnVuY3Rpb24oKXskKHRoaXMpLmlzKCI6Y2hlY2tlZCIpJiZmLnB1c2goJCh0aGlzKS52YWwoKSl9KTt2YXIgbD0KITE7MDwkKCIuZmlsdGVyQ2hlY2suY2FyTWFrZSIpLmxlbmd0aCYmKCQoIi5maWx0ZXJDaGVjay5jYXJNYWtlIikuZWFjaChmdW5jdGlvbigpeyQodGhpcykuaXMoIjpjaGVja2VkIikmJm0ucHVzaCgkKHRoaXMpLnZhbCgpKX0pLGw9ITApO2Zvcih2YXIgayBpbiBib3hCbG9ja3Mpe3ZhciB1PTAscTtmb3IocSBpbiBib3hCbG9ja3Nba10pe3ZhciBNPXBhcnNlSW50KGJveEJsb2Nrc1trXVtxXS5mdWVsLDEwKSx2PSExO3Y9KHY9KHY9KHY9KHY9IShwYXJzZUludChib3hCbG9ja3Nba11bcV0uZHJpdmV0cmFpbiwxMCkmZCkpfHwhKE0mYykpfHwhKCFib3hCbG9ja3Nba11bcV0uY2FyQ2F0ZWdvcnl8fC0xPCQuaW5BcnJheShib3hCbG9ja3Nba11bcV0uY2FyQ2F0ZWdvcnksZikpKXx8ISghMT09PWx8fC0xPCQuaW5BcnJheShib3hCbG9ja3Nba11bcV0uY2FyTWFrZSxtKSYmbCkpfHwhKDA9PWJveEJsb2Nrc1trXVtxXS5wcmljZXx8Ym94QmxvY2tzW2tdW3FdLnByaWNlPD1wLm1heCYmCmJveEJsb2Nrc1trXVtxXS5wcmljZT49cC5taW4pO2JveEJsb2Nrc1trXVtxXS52aXNpYmxlPSF2O2JveEJsb2Nrc1trXVtxXS52aXNpYmxlJiZ1Kyt9JCgiI2NsYXNzIitrKyJfY29udGFpbmVyIikuYXR0cigibmJWaXNpYmxlIix1KTtCKGspfUwoKTsiMSI9PT0kKCJib2R5IikuZGF0YSgiZmlsdGVyczpsb2FkIikmJiQoImJvZHkiKS50cmlnZ2VyKCQuZXh0ZW5kKHt0eXBlOiJmaWx0ZXJzOmNoYW5nZSJ9LGEoKSkpfSxCPWZ1bmN0aW9uKGMpe3ZhciBkPSQoIiNjbGFzcyIrYysiX2NvbnRhaW5lciIpO2lmKDA8ZC5sZW5ndGgpe3ZhciBmPSQoIiNzaG93Q2xhc3NfIitjKTswPT09Zi5sZW5ndGgmJihmPSQoJ2lucHV0W2RhdGEtZXNzZW5jZT0iJytjKyciXScpKTtmPTA9PT1mLmxlbmd0aD8hMDpmLmlzKCI6Y2hlY2tlZCIpOzA8cGFyc2VJbnQoZC5hdHRyKCJuYlZpc2libGUiKSwxMCk\/KGYmJihkLmF0dHIoInN0YXRlIiwib3BlbiIpLGQuZmFkZUluKDYwMCksbmV3Q2Fycy5pc01vYmlsZXx8CihmPU1hdGguY2VpbChwYXJzZUludChkLmF0dHIoIm5iVmlzaWJsZSIpLDEwKS8zKSwkKCIuQ0xBU1NfIitjKS5hbmltYXRlKHtoZWlnaHQ6ci5oZWlnaHQqZisicHgifSw2MDApKSxmPSEwKSxmfHxFKGQpKTpFKGQpfX0sRT1mdW5jdGlvbihjKXtjLmF0dHIoInN0YXRlIiwiY2xvc2UiKTtjLmZhZGVPdXQoNjAwKTtyZXR1cm4hMH0sQT1mdW5jdGlvbihjLGQsZixtLGwpe2lmKCJoaWRlIj09ZikkKCIjIitkKS5hbmltYXRlKHtvcGFjaXR5OjB9LDYwMCxmdW5jdGlvbigpeyQodGhpcykuYXR0cigiaXMtYm94LXZpc2libGUiLDApLmNzcygidmlzaWJpbGl0eSIsImhpZGRlbiIpfSksYm94QmxvY2tzW2NdW2RdLnZpc2libGU9ITEsc2l0ZVBhZ2UuaXNNb2JpbGUmJihuZXdDYXJzLmNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKGAjJHtkfWApLmhpZGRlbj0hMCk7ZWxzZSBpZigic2hvdyI9PWYpJCgiIyIrZCkuY3NzKCJ2aXNpYmlsaXR5IiwidmlzaWJsZSIpLmFuaW1hdGUoe29wYWNpdHk6MX0sCjYwMCxmdW5jdGlvbigpeyQodGhpcykuYXR0cigiaXMtYm94LXZpc2libGUiLDEpfSksYm94QmxvY2tzW2NdW2RdLnZpc2libGU9ITAsc2l0ZVBhZ2UuaXNNb2JpbGUmJihuZXdDYXJzLmNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKGAjJHtkfWApLmhpZGRlbj0hMSk7ZWxzZSBpZighc2l0ZVBhZ2UuaXNNb2JpbGUpe3ZhciBrPSQoIi5kaXZDYXRlZ29yaWVzQm94V3JhcHBlciIpLndpZHRoKCk7Yz1NYXRoLmZsb29yKGsvci53aWR0aCk7Zj1ib3hQb3NpdGlvbnNbZF07az1NYXRoLmZsb29yKGsvYyk7Yz17bGVmdDoiKz0iKygobS0xKSVjKmstKGYtMSklYyprKSsicHgiLHRvcDoiKz0iKyhNYXRoLmZsb29yKChtLTEpL2MpKnIuaGVpZ2h0LU1hdGguZmxvb3IoKGYtMSkvYykqci5oZWlnaHQpKyJweCJ9O3ZvaWQgMD09bD8kKCIjIitkKS5hZGRDbGFzcygiTW92aW5nQm94IikuYW5pbWF0ZShjLDYwMCxmdW5jdGlvbigpeyQodGhpcykucmVtb3ZlQ2xhc3MoIk1vdmluZ0JveCIpfSk6JCgiIyIrCmQpLmFkZENsYXNzKCJNb3ZpbmdCb3giKS5hbmltYXRlKGMsNjAwLGZ1bmN0aW9uKCl7JCh0aGlzKS5yZW1vdmVDbGFzcygiTW92aW5nQm94Iik7ZXZhbChsKX0pO2JveFBvc2l0aW9uc1tkXT1tfX0sRj1mdW5jdGlvbigpe3ZhciBjPXt3aWR0aDowLGhlaWdodDowfTskKCcuZGl2Q2FyU2luZ2xlT3V0ZXJCb3hbaXMtYm94LXZpc2libGU9IjEiXTpmaXJzdCcpLmVhY2goZnVuY3Rpb24oKXtjLndpZHRoPSQodGhpcykub3V0ZXJXaWR0aCghMCk7Yy5oZWlnaHQ9JCh0aGlzKS5vdXRlckhlaWdodCghMCl9KTtyZXR1cm4gY30sej05NjA7JCgiLmRpdkNhclNpbmdsZU91dGVyQm94IikuYXR0cigiaXMtYm94LXZpc2libGUiLDEpO3ZhciByPUYoKTswPCQoIkJPRFkuaXNGdWxsV2lkdGhQYWdlIikubGVuZ3RoJiYwPCQoIkJPRFkuaXNQYWdlRnVsbFdpZHRoRW5hYmxlZCIpLmxlbmd0aCYmKDEzMDA8d2luZG93LmlubmVyV2lkdGgmJih6PTEyMDApLCQod2luZG93KS5vbigicmVzaXplIixmdW5jdGlvbigpe3ZhciBjPQp6O3o9MTMwMDx3aW5kb3cuaW5uZXJXaWR0aD8xMjAwOjk2MDtjIT16JiZzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7TigpfSl9KSk7dmFyIE49ZnVuY3Rpb24oKXt2YXIgYz1yO3I9RigpOyQoIi5kaXZDYXJzQm94V3JhcHBlciIpLmVhY2goZnVuY3Rpb24oKXt2YXIgZD0wOyQodGhpcykuZmluZCgiLmRpdkNhclNpbmdsZU91dGVyQm94IikuZWFjaChmdW5jdGlvbigpe3ZhciBmPXBhcnNlSW50KCQodGhpcykuY3NzKCJ0b3AiKSksbT1wYXJzZUludCgkKHRoaXMpLmNzcygibGVmdCIpKTswPT09ZiYmMD09PW18fCQodGhpcykuY3NzKHt0b3A6ci5oZWlnaHQqKGYvcGFyc2VJbnQoYy5oZWlnaHQpKSsicHgifSkuY3NzKHtsZWZ0OnIud2lkdGgqKG0vcGFyc2VJbnQoYy53aWR0aCkpKyJweCJ9KTsxPT09cGFyc2VJbnQoJCh0aGlzKS5hdHRyKCJpcy1ib3gtdmlzaWJsZSIpKSYmZCsrfSk7ZCYmJCh0aGlzKS5jc3Moe2hlaWdodDpNYXRoLmZsb29yKGQvMykqci5oZWlnaHQrKGQlMz9yLmhlaWdodDoKMCkrInB4In0pfSl9LHA9e21pbjowLG1heDoxRTZ9OyhmdW5jdGlvbigpe3ZhciBjPSQoIiNwcmljZVJhbmdlU2xpZGVyRmlsdGVyQ29udGFpbmVyIik7aWYoMDxjLmxlbmd0aCl7dmFyIGQ9Yy5maW5kKCJkaXYucmFuZ2Utc2xpZGVyIik7aWYoMDxkLmxlbmd0aCl7dmFyIGY9bnVsbCxtPWZ1bmN0aW9uKGwsayl7cD17bWluOkQyQ1V0aWxzLk51bWJlci5yb3VuZERvd24oay52YWx1ZXNbMF0sMUUzKSxtYXg6RDJDVXRpbHMuTnVtYmVyLnJvdW5kVXAoay52YWx1ZXNbMV0sMUUzKX07bnVsbCE9PWwmJm5ld0NhcnMuc2V0RmlsdGVyKCJzZXRTaG93ZWRWYWx1ZXMiLHAubWluKyI6IitwLm1heCk7Yy5maW5kKCJzcGFuLnByaWNlLW1pbiIpLnRleHQocC5taW4udG9Mb2NhbGVTdHJpbmcoKSk7Yy5maW5kKCJzcGFuLnByaWNlLW1heCIpLnRleHQocC5tYXgudG9Mb2NhbGVTdHJpbmcoKSk7Y2xlYXJUaW1lb3V0KGYpO2Y9c2V0VGltZW91dChmdW5jdGlvbigpe3goKX0sNTAwKX07cD17bWluOkQyQ1V0aWxzLk51bWJlci5yb3VuZERvd24oZC5hdHRyKCJhdHRyLXByaWNlLW1pbiIpKSwKbWF4OkQyQ1V0aWxzLk51bWJlci5yb3VuZERvd24oZC5hdHRyKCJhdHRyLXByaWNlLW1heCIpKX07ZC5zbGlkZXIoe3JhbmdlOiEwLG1pbjpwLm1pbixtYXg6cC5tYXgsc2xpZGU6bSxjaGFuZ2U6bSxjcmVhdGU6ZnVuY3Rpb24obCxrKXtsPW5ld0NhcnMuZ2V0RmlsdGVyKCk7az1bcC5taW4scC5tYXhdOyJzdHJpbmciPT09dHlwZW9mIGwuc2V0U2hvd2VkVmFsdWVzJiYoaz1sLnNldFNob3dlZFZhbHVlcy5zcGxpdCgiOiIpKTtkLnNsaWRlcigidmFsdWVzIixrKTttKG51bGwse3ZhbHVlczprfSk7c2V0VGltZW91dChmdW5jdGlvbigpeyQoImJvZHkiKS50cmlnZ2VyKCQuZXh0ZW5kKHt0eXBlOiJmaWx0ZXJzOmxvYWQifSxhKCkpKX0sM0UzKX19KX19fSkoKTtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dmFyIGM9JCgiI3NvcnRCeSIpO3ZhciBkPSQoIiNzb3J0RGlyIiksZj0ibW9kZWwiO3ZhciBtPSJBc2MiO3ZhciBsPXttb2RlbDoicmFkaW9Nb2RsZSIscHJpY2U6InJhZGlvUHJpY2UiLApjb25zbzoicmFkaW9Db25zbyJ9O2MubGVuZ3RoJiZkLmxlbmd0aCYmKGY9Yy52YWwoKSxtPWQudmFsKCkpO2UmJiJ1bmRlZmluZWQiIT09dHlwZW9mIGxbZS5zb3J0QnldPyhjPWUuc29ydEJ5LG09ZS5zb3J0RGlyKTpjPWY7dHJ5e3ZhciBrPSQoIiMiK2xbY10pO2subGVuZ3RoJiZrLnByb3AoImNoZWNrZWQiLCJjaGVja2VkIik7QyhjLG0pfWNhdGNoKHUpe319LDUwMCk7aWYoJCgiI3RvZ2dsZUZpbHRlckJ0biIpLmxlbmd0aCkkKCIjdG9nZ2xlRmlsdGVyQnRuIikub24oImNsaWNrIHRhcCIsZnVuY3Rpb24oKXskKCIjc2lkZVNpZGViYXJGaWx0ZXIiKS5sZW5ndGgmJigkKCIjc2lkZVNpZGViYXJGaWx0ZXIiKS5oYXNDbGFzcygib3BlbiIpPyQoIiNzaWRlU2lkZWJhckZpbHRlciIpLnJlbW92ZUNsYXNzKCJvcGVuIik6JCgiI3NpZGVTaWRlYmFyRmlsdGVyIikuYWRkQ2xhc3MoIm9wZW4iKSl9KTtpZigkKCIjY2xvc2VTaWRlYmFyQnRuIikubGVuZ3RoKSQoIiNjbG9zZVNpZGViYXJCdG4iKS5vbigiY2xpY2sgdGFwIiwKZnVuY3Rpb24oKXskKCIjc2lkZVNpZGViYXJGaWx0ZXIiKS5sZW5ndGgmJiQoIiNzaWRlU2lkZWJhckZpbHRlciIpLmhhc0NsYXNzKCJvcGVuIikmJiQoIiNzaWRlU2lkZWJhckZpbHRlciIpLnJlbW92ZUNsYXNzKCJvcGVuIil9KTskKCIuc2VsZWN0VG9nZ2xlV3JhcHBlckNhck1ha2UiKS5sZW5ndGgmJigkKCIjc2VsZWN0QWxsQnRuQ2FyTWFrZSIpLm9uKCJjbGljayB0YXAiLGZ1bmN0aW9uKCl7JCgiLmZpbHRlckNoZWNrLmNhck1ha2UiKS5wcm9wKCJjaGVja2VkIiwhMCk7c2V0VGltZW91dCh4LDEwMCl9KSwkKCIjdW5zZWxlY3RBbGxCdG5DYXJNYWtlIikub24oImNsaWNrIHRhcCIsZnVuY3Rpb24oKXskKCIuZmlsdGVyQ2hlY2suY2FyTWFrZSIpLnByb3AoImNoZWNrZWQiLCExKTtzZXRUaW1lb3V0KHgsMTAwKX0pKX19LHNldEZpbHRlcjooYSxiKT0+e3ZhciBlPXt9LGc9X2xvY2FsU3RvcmFnZUdldCgibmV3U3ZwRmlsdGVyIik7bnVsbCE9ZyYmIm9iamVjdCIhPXR5cGVvZiBnJiYKKGU9SlNPTi5wYXJzZShnKSk7Zz13aW5kb3cubG9jYXRpb24ucGF0aG5hbWU7dm9pZCAwPT1lW2ddJiYoZVtnXT17fSk7ZVtnXVthXT1iO19sb2NhbFN0b3JhZ2VTZXQoIm5ld1N2cEZpbHRlciIsSlNPTi5zdHJpbmdpZnkoZSkpfSxnZXRGaWx0ZXI6KCk9PntsZXQgYT0hMTt2YXIgYj1fbG9jYWxTdG9yYWdlR2V0KCJuZXdTdnBGaWx0ZXIiKTtsZXQgZT17fTtudWxsIT1iJiYib2JqZWN0IiE9dHlwZW9mIGImJihlPUpTT04ucGFyc2UoYikpO2I9d2luZG93LmxvY2F0aW9uLnBhdGhuYW1lO3ZvaWQgMCE9ZVtiXSYmKGE9ZVtiXSk7cmV0dXJuIGF9LHNldFByaWNlVG9vbFRpcHM6KCk9PntuZXdDYXJzLmlzTW9iaWxlfHxkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCIuY2FyUHJpY2VJbml0aWFsVG9vbFRpcEljb24iKS5mb3JFYWNoKGE9PntsZXQgYj1hLmRhdGFzZXQudG9vbHRpcDskKGEpLmRhcmtUb29sdGlwKHtjb250ZW50OmIsZ3Jhdml0eToid2VzdCIsdGhlbWU6ImxpZ2h0Iix0cmlnZ2VyOiJob3ZlciIsCmFuaW1hdGlvbjoiZmxpcEluIn0pfSl9LHNldEV2ZW50czooKT0+e25ld0NhcnMuaXNNb2JpbGV8fCgkKCJpbWdbZXJyb3JpbWddIikub24oImVycm9yIixmdW5jdGlvbigpe3RoaXMuc3JjPSQodGhpcykuYXR0cigiZXJyb3JpbWciKX0pLCQoImltZ1ttdWx0aWltZz10cnVlXSIpLmVhY2goZnVuY3Rpb24oKXskKHRoaXMpLm9uKCJtb3VzZW92ZXIiLGZ1bmN0aW9uKCl7JCh0aGlzKS5hdHRyKCJzcmMiLCQodGhpcykuYXR0cigiY29sb3JpbWciKSl9KTskKHRoaXMpLm9uKCJtb3VzZW91dCIsZnVuY3Rpb24oKXskKHRoaXMpLmF0dHIoInNyYyIsJCh0aGlzKS5hdHRyKCJibGFja2ltZyIpKX0pfSkpfSxnZXRJbnZlbnRvcnlEYXRhOigpPT57Y29uc3QgYT0oYixlKT0+e2xldCBnPSJGUkVOQ0giPT1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjYWN0aXZlc2l0ZWxhbmd1YWdlIikudmFsdWU\/ImZyIjoiZW4iO2ZldGNoKGAvJHtnfS9hamF4L2dldEludmVudG9yeURhdGFgLHttZXRob2Q6IlBPU1QiLApoZWFkZXJzOntBY2NlcHQ6ImFwcGxpY2F0aW9uL2pzb24iLCJDb250ZW50LVR5cGUiOiJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7IixjaGFyc2V0OiJVVEYtOCJ9LGJvZHk6bmV3IFVSTFNlYXJjaFBhcmFtcyhiKX0pLnRoZW4oaD0+e2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgaCYmITA9PT1oLm9rJiYyMDA9PWguc3RhdHVzKXJldHVybiBoLmpzb24oKX0pLnRoZW4oaD0+e2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgaC5zdGF0dXMmJiJzdWNjZXNzIj09aC5zdGF0dXMpe2xldCBuPWguY291bnQ7aD1oLnVybDtsZXQgdD1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjaW5TdG9ja0xhYmVsIikudmFsdWU7MDxuJiYoZS5wYXJlbnROb2RlLmluc2VydEFkamFjZW50SFRNTCgiYmVmb3JlZW5kIixgPGEgaHJlZj0iJHtofSI+JHtufSAke3R9PC9hPmApLGUucGFyZW50Tm9kZS5oaWRkZW49ITEpfX0pLmNhdGNoKGZ1bmN0aW9uKGgpe30pfTtkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdpbnB1dFtkYXRhLXR5cGU9ImludmRhdGEiXScpLmZvckVhY2goYj0+CnthKHttYWtlOmIuZGF0YXNldC5tYWtlLG1vZGVsOmIuZGF0YXNldC5tb2RlbCx5ZWFyOmIuZGF0YXNldC55ZWFyLHN0eWxlaWRzOmIuZGF0YXNldC5zdHlsZWlkcyxoeWJyaWQ6Yi5kYXRhc2V0Lmh5YnJpZH0sYil9KX0sZ2V0UGF5bWVudERhdGE6KCk9Pntjb25zdCBhPShiLGUsZyk9PiRqc2NvbXAuYXN5bmNFeGVjdXRlUHJvbWlzZUdlbmVyYXRvckZ1bmN0aW9uKGZ1bmN0aW9uKigpe3RyeXtjb25zdCBoPXlpZWxkKHlpZWxkIGZldGNoKGAvJHtlbmNvZGVVUklDb21wb25lbnQoZyl9L2FqYXgvZ2V0U2hvd3Jvb21QYXltZW50SHRtbGAse21ldGhvZDoiUE9TVCIsaGVhZGVyczp7QWNjZXB0OiJhcHBsaWNhdGlvbi9qc29uIiwiQ29udGVudC1UeXBlIjoiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkOyIsY2hhcnNldDoiVVRGLTgifSxib2R5Om5ldyBVUkxTZWFyY2hQYXJhbXMoYil9KSkuanNvbigpO2UucGFyZW50Tm9kZS5xdWVyeVNlbGVjdG9yKCIuc2tlbGV0b24tYmxvY2siKS5oaWRkZW49CiEwO2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgaC5zdGF0dXMmJiJzdWNjZXNzIj09aC5zdGF0dXMpe2xldCBuPWguY29udGVudDswPG4ubGVuZ3RoJiYoZS5wYXJlbnROb2RlLmluc2VydEFkamFjZW50SFRNTCgiYmVmb3JlZW5kIixuKSxlLnBhcmVudE5vZGUuaGlkZGVuPSExKX19Y2F0Y2goaCl7fX0pO2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2lucHV0W2RhdGEtdHlwZT0icGF5bWVudGRhdGEiXScpLmZvckVhY2goYj0+e2xldCBlPSJGUkVOQ0giPT1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjYWN0aXZlc2l0ZWxhbmd1YWdlIikudmFsdWU\/ImZyIjoiZW4iO2Eoe3N0eWxlaWQ6Yi5kYXRhc2V0LnN0eWxlaWQsdGl0bGU6Yi5kYXRhc2V0LnRpdGxlLGhyZWY6Yi5kYXRhc2V0LmhyZWYsbGlua1N0eWxlOmIuZGF0YXNldC5saW5rc3R5bGUsbGlua0NsYXNzOmIuZGF0YXNldC5saW5rY2xhc3MsY29udGFpbmVyQ2xhc3M6Yi5kYXRhc2V0LmNvbnRhaW5lcmNsYXNzLHByb21vVGV4dDpiLmRhdGFzZXQucHJvbW90ZXh0LApsYW5nOmV9LGIsZSl9KX19OyQod2luZG93KS5vbigibG9hZCIsZnVuY3Rpb24oKXtuZXdDYXJzLnJlc2l6ZU1haW5XaW5kb3coKX0pO2RvY1JlYWR5QXJyLnB1c2goKCk9PntuZXdDYXJzLmdldFBheW1lbnREYXRhKCk7bmV3Q2Fycy5zZXRQYXltZW50VG9vbHRpcHMoKTtuZXdDYXJzLnNldEV2ZW50cygpO25ld0NhcnMubmV3Q2Fyc0ZpbHRlcigpO25ld0NhcnMuc2V0UHJpY2VUb29sVGlwcygpO25ld0NhcnMuZ2V0SW52ZW50b3J5RGF0YSgpfSk7Ci8qKiAvbS9qcy9qcXVlcnkudWkudG91Y2gtcHVuY2gubWluLmpzICoqLwovKiEKICogalF1ZXJ5IFVJIFRvdWNoIFB1bmNoIDAuMi4zCiAqCiAqIENvcHlyaWdodCAyMDEx4oCTMjAxNCwgRGF2ZSBGdXJmZXJvCiAqIER1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBvciBHUEwgVmVyc2lvbiAyIGxpY2Vuc2VzLgogKgogKiBEZXBlbmRzOgogKiAganF1ZXJ5LnVpLndpZGdldC5qcwogKiAganF1ZXJ5LnVpLm1vdXNlLmpzCiAqLwohZnVuY3Rpb24oYSl7ZnVuY3Rpb24gZihhLGIpe2lmKCEoYS5vcmlnaW5hbEV2ZW50LnRvdWNoZXMubGVuZ3RoPjEpKXthLnByZXZlbnREZWZhdWx0KCk7dmFyIGM9YS5vcmlnaW5hbEV2ZW50LmNoYW5nZWRUb3VjaGVzWzBdLGQ9ZG9jdW1lbnQuY3JlYXRlRXZlbnQoIk1vdXNlRXZlbnRzIik7ZC5pbml0TW91c2VFdmVudChiLCEwLCEwLHdpbmRvdywxLGMuc2NyZWVuWCxjLnNjcmVlblksYy5jbGllbnRYLGMuY2xpZW50WSwhMSwhMSwhMSwhMSwwLG51bGwpLGEudGFyZ2V0LmRpc3BhdGNoRXZlbnQoZCl9fWlmKGEuc3VwcG9ydC50b3VjaD0ib250b3VjaGVuZCJpbiBkb2N1bWVudCxhLnN1cHBvcnQudG91Y2gpe3ZhciBlLGI9YS51aS5tb3VzZS5wcm90b3R5cGUsYz1iLl9tb3VzZUluaXQsZD1iLl9tb3VzZURlc3Ryb3k7Yi5fdG91Y2hTdGFydD1mdW5jdGlvbihhKXt2YXIgYj10aGlzOyFlJiZiLl9tb3VzZUNhcHR1cmUoYS5vcmlnaW5hbEV2ZW50LmNoYW5nZWRUb3VjaGVzWzBdKSYmKGU9ITAsYi5fdG91Y2hNb3ZlZD0hMSxmKGEsIm1vdXNlb3ZlciIpLGYoYSwibW91c2Vtb3ZlIiksZihhLCJtb3VzZWRvd24iKSl9LGIuX3RvdWNoTW92ZT1mdW5jdGlvbihhKXtlJiYodGhpcy5fdG91Y2hNb3ZlZD0hMCxmKGEsIm1vdXNlbW92ZSIpKX0sYi5fdG91Y2hFbmQ9ZnVuY3Rpb24oYSl7ZSYmKGYoYSwibW91c2V1cCIpLGYoYSwibW91c2VvdXQiKSx0aGlzLl90b3VjaE1vdmVkfHxmKGEsImNsaWNrIiksZT0hMSl9LGIuX21vdXNlSW5pdD1mdW5jdGlvbigpe3ZhciBiPXRoaXM7Yi5lbGVtZW50Lm9uKHt0b3VjaHN0YXJ0OmEucHJveHkoYiwiX3RvdWNoU3RhcnQiKSx0b3VjaG1vdmU6YS5wcm94eShiLCJfdG91Y2hNb3ZlIiksdG91Y2hlbmQ6YS5wcm94eShiLCJfdG91Y2hFbmQiKX0pLGMuY2FsbChiKX0sYi5fbW91c2VEZXN0cm95PWZ1bmN0aW9uKCl7dmFyIGI9dGhpcztiLmVsZW1lbnQub2ZmKHt0b3VjaHN0YXJ0OmEucHJveHkoYiwiX3RvdWNoU3RhcnQiKSx0b3VjaG1vdmU6YS5wcm94eShiLCJfdG91Y2hNb3ZlIiksdG91Y2hlbmQ6YS5wcm94eShiLCJfdG91Y2hFbmQiKX0pLGQuY2FsbChiKX19fShqUXVlcnkpOy8qRU9GKi87Ci8qKiAvbS9qcy9wYXltZW50Q2FsY3VsYXRvci5qcyAqKi8KdmFyIF9fX2QyY19wYXltZW50Q2FsY3VsYXRvcmpzX2Nfb249IjIwMjYtMDctMTEgMDU6MzA6MjUiOyd1c2Ugc3RyaWN0Jzt2YXIgX19fZDJjX3BheW1lbnRDYWxjdWxhdG9yanNfY19vbj0iMjAyNi0wNy0xMSAwNDozMDoyNSI7InVzZSBzdHJpY3QiO19fX2QyY19wYXltZW50Q2FsY3VsYXRvcmpzX2Nfb249IjIwMjYtMDctMTEgMDM6MzA6MjYiOyJ1c2Ugc3RyaWN0IjtfX19kMmNfcGF5bWVudENhbGN1bGF0b3Jqc19jX29uPSIyMDI2LTA3LTExIDAyOjMwOjI1IjsidXNlIHN0cmljdCI7X19fZDJjX3BheW1lbnRDYWxjdWxhdG9yanNfY19vbj0iMjAyNi0wNy0xMSAwMTozMDoyNSI7InVzZSBzdHJpY3QiO19fX2QyY19wYXltZW50Q2FsY3VsYXRvcmpzX2Nfb249IjIwMjYtMDctMTEgMDA6MzA6MjUiOyJ1c2Ugc3RyaWN0IjtfX19kMmNfcGF5bWVudENhbGN1bGF0b3Jqc19jX29uPSIyMDI2LTA3LTEwIDIzOjMwOjI2IjsidXNlIHN0cmljdCI7X19fZDJjX3BheW1lbnRDYWxjdWxhdG9yanNfY19vbj0iMjAyNi0wNy0xMCAyMjozMDoyNCI7InVzZSBzdHJpY3QiOwpfX19kMmNfcGF5bWVudENhbGN1bGF0b3Jqc19jX29uPSIyMDI2LTA3LTEwIDIxOjMwOjI1IjsidXNlIHN0cmljdCI7X19fZDJjX3BheW1lbnRDYWxjdWxhdG9yanNfY19vbj0iMjAyNi0wNy0xMCAyMDozMDoyNSI7InVzZSBzdHJpY3QiO19fX2QyY19wYXltZW50Q2FsY3VsYXRvcmpzX2Nfb249IjIwMjYtMDctMTAgMTk6MzA6MjciOyJ1c2Ugc3RyaWN0IjtfX19kMmNfcGF5bWVudENhbGN1bGF0b3Jqc19jX29uPSIyMDI2LTA3LTEwIDE4OjMwOjI2IjsidXNlIHN0cmljdCI7X19fZDJjX3BheW1lbnRDYWxjdWxhdG9yanNfY19vbj0iMjAyNi0wNy0xMCAxNzozMDozNCI7InVzZSBzdHJpY3QiO19fX2QyY19wYXltZW50Q2FsY3VsYXRvcmpzX2Nfb249IjIwMjYtMDctMTAgMTY6MzA6MzMiOyJ1c2Ugc3RyaWN0IjtfX19kMmNfcGF5bWVudENhbGN1bGF0b3Jqc19jX29uPSIyMDI2LTA3LTEwIDE1OjMwOjM0IjsidXNlIHN0cmljdCI7Cl9fX2QyY19wYXltZW50Q2FsY3VsYXRvcmpzX2Nfb249IjIwMjYtMDctMTAgMTQ6MzA6MzIiOyJ1c2Ugc3RyaWN0IjtfX19kMmNfcGF5bWVudENhbGN1bGF0b3Jqc19jX29uPSIyMDI2LTA3LTEwIDEzOjMwOjMzIjsidXNlIHN0cmljdCI7X19fZDJjX3BheW1lbnRDYWxjdWxhdG9yanNfY19vbj0iMjAyNi0wNy0xMCAxMjozMDozNCI7InVzZSBzdHJpY3QiO19fX2QyY19wYXltZW50Q2FsY3VsYXRvcmpzX2Nfb249IjIwMjYtMDctMTAgMTE6MzA6MzQiOyJ1c2Ugc3RyaWN0IjtfX19kMmNfcGF5bWVudENhbGN1bGF0b3Jqc19jX29uPSIyMDI2LTA3LTEwIDEwOjMwOjM0IjsidXNlIHN0cmljdCI7X19fZDJjX3BheW1lbnRDYWxjdWxhdG9yanNfY19vbj0iMjAyNi0wNy0xMCAwOTozMDozNCI7InVzZSBzdHJpY3QiO19fX2QyY19wYXltZW50Q2FsY3VsYXRvcmpzX2Nfb249IjIwMjYtMDctMTAgMDg6MzA6MzEiOyJ1c2Ugc3RyaWN0IjsKX19fZDJjX3BheW1lbnRDYWxjdWxhdG9yanNfY19vbj0iMjAyNi0wNy0xMCAwNzozMDoyNyI7InVzZSBzdHJpY3QiO19fX2QyY19wYXltZW50Q2FsY3VsYXRvcmpzX2Nfb249IjIwMjYtMDctMTAgMDY6MzA6MjUiOyJ1c2Ugc3RyaWN0IjtfX19kMmNfcGF5bWVudENhbGN1bGF0b3Jqc19jX29uPSIyMDI2LTA3LTEwIDA1OjMwOjI2IjsidXNlIHN0cmljdCI7X19fZDJjX3BheW1lbnRDYWxjdWxhdG9yanNfY19vbj0iMjAyNi0wNy0xMCAwNDozMDoyNSI7InVzZSBzdHJpY3QiO19fX2QyY19wYXltZW50Q2FsY3VsYXRvcmpzX2Nfb249IjIwMjYtMDctMTAgMDM6MzA6MjYiOyJ1c2Ugc3RyaWN0IjtfX19kMmNfcGF5bWVudENhbGN1bGF0b3Jqc19jX29uPSIyMDI2LTA3LTEwIDAyOjMwOjI2IjsidXNlIHN0cmljdCI7X19fZDJjX3BheW1lbnRDYWxjdWxhdG9yanNfY19vbj0iMjAyNi0wNy0xMCAwMTozMDoyNSI7InVzZSBzdHJpY3QiOwpfX19kMmNfcGF5bWVudENhbGN1bGF0b3Jqc19jX29uPSIyMDI2LTA3LTEwIDAwOjMwOjI1IjsidXNlIHN0cmljdCI7X19fZDJjX3BheW1lbnRDYWxjdWxhdG9yanNfY19vbj0iMjAyNi0wNy0wOSAyMzozMDoyNSI7InVzZSBzdHJpY3QiO19fX2QyY19wYXltZW50Q2FsY3VsYXRvcmpzX2Nfb249IjIwMjYtMDctMDkgMjI6MzA6MjUiOyJ1c2Ugc3RyaWN0IjtfX19kMmNfcGF5bWVudENhbGN1bGF0b3Jqc19jX29uPSIyMDI2LTA3LTA5IDIxOjMwOjI2IjsidXNlIHN0cmljdCI7X19fZDJjX3BheW1lbnRDYWxjdWxhdG9yanNfY19vbj0iMjAyNi0wNy0wOSAyMDozMDoyNiI7InVzZSBzdHJpY3QiO19fX2QyY19wYXltZW50Q2FsY3VsYXRvcmpzX2Nfb249IjIwMjYtMDctMDkgMTk6MzA6MjUiOyJ1c2Ugc3RyaWN0IjtfX19kMmNfcGF5bWVudENhbGN1bGF0b3Jqc19jX29uPSIyMDI2LTA3LTA5IDE4OjMwOjI2IjsidXNlIHN0cmljdCI7Cl9fX2QyY19wYXltZW50Q2FsY3VsYXRvcmpzX2Nfb249IjIwMjYtMDctMDkgMTc6MzA6MzMiOyJ1c2Ugc3RyaWN0IjtfX19kMmNfcGF5bWVudENhbGN1bGF0b3Jqc19jX29uPSIyMDI2LTA3LTA5IDE2OjMwOjM0IjsidXNlIHN0cmljdCI7X19fZDJjX3BheW1lbnRDYWxjdWxhdG9yanNfY19vbj0iMjAyNi0wNy0wOSAxNTozMDozNSI7InVzZSBzdHJpY3QiO19fX2QyY19wYXltZW50Q2FsY3VsYXRvcmpzX2Nfb249IjIwMjYtMDctMDkgMTQ6MzA6MzIiOyJ1c2Ugc3RyaWN0IjtfX19kMmNfcGF5bWVudENhbGN1bGF0b3Jqc19jX29uPSIyMDI2LTA3LTA5IDEzOjMwOjMwIjsidXNlIHN0cmljdCI7X19fZDJjX3BheW1lbnRDYWxjdWxhdG9yanNfY19vbj0iMjAyNi0wNy0wOSAxMjozMDozMyI7InVzZSBzdHJpY3QiO19fX2QyY19wYXltZW50Q2FsY3VsYXRvcmpzX2Nfb249IjIwMjYtMDctMDkgMTE6MzA6MzUiOyJ1c2Ugc3RyaWN0IjsKX19fZDJjX3BheW1lbnRDYWxjdWxhdG9yanNfY19vbj0iMjAyNi0wNy0wOSAxMDozMDozNCI7InVzZSBzdHJpY3QiO19fX2QyY19wYXltZW50Q2FsY3VsYXRvcmpzX2Nfb249IjIwMjYtMDctMDkgMDk6MzA6MzMiOyJ1c2Ugc3RyaWN0IjtfX19kMmNfcGF5bWVudENhbGN1bGF0b3Jqc19jX29uPSIyMDI2LTA3LTA5IDA4OjMwOjM0IjsidXNlIHN0cmljdCI7X19fZDJjX3BheW1lbnRDYWxjdWxhdG9yanNfY19vbj0iMjAyNi0wNy0wOSAwNzozMDoyNiI7InVzZSBzdHJpY3QiO19fX2QyY19wYXltZW50Q2FsY3VsYXRvcmpzX2Nfb249IjIwMjYtMDctMDkgMDY6MzA6MjUiOyJ1c2Ugc3RyaWN0IjtfX19kMmNfcGF5bWVudENhbGN1bGF0b3Jqc19jX29uPSIyMDI2LTA3LTA5IDA1OjMwOjI2IjsidXNlIHN0cmljdCI7X19fZDJjX3BheW1lbnRDYWxjdWxhdG9yanNfY19vbj0iMjAyNi0wNy0wOSAwNDozMDoyNiI7InVzZSBzdHJpY3QiOwpfX19kMmNfcGF5bWVudENhbGN1bGF0b3Jqc19jX29uPSIyMDI2LTA3LTA5IDAzOjMwOjI2IjsidXNlIHN0cmljdCI7X19fZDJjX3BheW1lbnRDYWxjdWxhdG9yanNfY19vbj0iMjAyNi0wNy0wOSAwMjozMDoyNSI7InVzZSBzdHJpY3QiO19fX2QyY19wYXltZW50Q2FsY3VsYXRvcmpzX2Nfb249IjIwMjYtMDctMDkgMDE6MzA6MjYiOyJ1c2Ugc3RyaWN0IjtfX19kMmNfcGF5bWVudENhbGN1bGF0b3Jqc19jX29uPSIyMDI2LTA3LTA5IDAwOjMwOjI2IjsidXNlIHN0cmljdCI7X19fZDJjX3BheW1lbnRDYWxjdWxhdG9yanNfY19vbj0iMjAyNi0wNy0wOCAyMzozMDoyNSI7InVzZSBzdHJpY3QiO19fX2QyY19wYXltZW50Q2FsY3VsYXRvcmpzX2Nfb249IjIwMjYtMDctMDggMjI6MzA6MjQiOyJ1c2Ugc3RyaWN0IjtfX19kMmNfcGF5bWVudENhbGN1bGF0b3Jqc19jX29uPSIyMDI2LTA3LTA4IDIxOjMwOjI1IjsidXNlIHN0cmljdCI7Cl9fX2QyY19wYXltZW50Q2FsY3VsYXRvcmpzX2Nfb249IjIwMjYtMDctMDggMjA6MzA6MjUiOyJ1c2Ugc3RyaWN0IjtfX19kMmNfcGF5bWVudENhbGN1bGF0b3Jqc19jX29uPSIyMDI2LTA3LTA4IDE5OjMwOjI2IjsidXNlIHN0cmljdCI7X19fZDJjX3BheW1lbnRDYWxjdWxhdG9yanNfY19vbj0iMjAyNi0wNy0wOCAxODozMDoyNiI7InVzZSBzdHJpY3QiO19fX2QyY19wYXltZW50Q2FsY3VsYXRvcmpzX2Nfb249IjIwMjYtMDctMDggMTc6MzA6MzIiOyJ1c2Ugc3RyaWN0IjtfX19kMmNfcGF5bWVudENhbGN1bGF0b3Jqc19jX29uPSIyMDI2LTA3LTA4IDE2OjMwOjMyIjsidXNlIHN0cmljdCI7X19fZDJjX3BheW1lbnRDYWxjdWxhdG9yanNfY19vbj0iMjAyNi0wNy0wOCAxNTozMDozNCI7InVzZSBzdHJpY3QiO19fX2QyY19wYXltZW50Q2FsY3VsYXRvcmpzX2Nfb249IjIwMjYtMDctMDggMTQ6MzA6MzAiOyJ1c2Ugc3RyaWN0IjsKX19fZDJjX3BheW1lbnRDYWxjdWxhdG9yanNfY19vbj0iMjAyNi0wNy0wOCAxMzozMDozMiI7InVzZSBzdHJpY3QiO19fX2QyY19wYXltZW50Q2FsY3VsYXRvcmpzX2Nfb249IjIwMjYtMDctMDggMTI6MzA6MzMiOyJ1c2Ugc3RyaWN0IjtfX19kMmNfcGF5bWVudENhbGN1bGF0b3Jqc19jX29uPSIyMDI2LTA3LTA4IDExOjMwOjMzIjsidXNlIHN0cmljdCI7X19fZDJjX3BheW1lbnRDYWxjdWxhdG9yanNfY19vbj0iMjAyNi0wNy0wOCAxMDozMDozMyI7InVzZSBzdHJpY3QiO19fX2QyY19wYXltZW50Q2FsY3VsYXRvcmpzX2Nfb249IjIwMjYtMDctMDggMDk6MzA6MzEiOyJ1c2Ugc3RyaWN0IjtfX19kMmNfcGF5bWVudENhbGN1bGF0b3Jqc19jX29uPSIyMDI2LTA3LTA4IDA4OjMwOjI5IjsidXNlIHN0cmljdCI7X19fZDJjX3BheW1lbnRDYWxjdWxhdG9yanNfY19vbj0iMjAyNi0wNy0wOCAwNzozMDoyMyI7InVzZSBzdHJpY3QiOwpfX19kMmNfcGF5bWVudENhbGN1bGF0b3Jqc19jX29uPSIyMDI2LTA3LTA4IDA2OjMwOjIzIjsidXNlIHN0cmljdCI7X19fZDJjX3BheW1lbnRDYWxjdWxhdG9yanNfY19vbj0iMjAyNi0wNy0wOCAwNTozMDoyNCI7InVzZSBzdHJpY3QiO19fX2QyY19wYXltZW50Q2FsY3VsYXRvcmpzX2Nfb249IjIwMjYtMDctMDggMDQ6MzA6MjQiOyJ1c2Ugc3RyaWN0IjtfX19kMmNfcGF5bWVudENhbGN1bGF0b3Jqc19jX29uPSIyMDI2LTA3LTA4IDAzOjMwOjI0IjsidXNlIHN0cmljdCI7X19fZDJjX3BheW1lbnRDYWxjdWxhdG9yanNfY19vbj0iMjAyNi0wNy0wOCAwMjozMDoyMyI7InVzZSBzdHJpY3QiO19fX2QyY19wYXltZW50Q2FsY3VsYXRvcmpzX2Nfb249IjIwMjYtMDctMDggMDE6MzA6MjMiOyJ1c2Ugc3RyaWN0IjtfX19kMmNfcGF5bWVudENhbGN1bGF0b3Jqc19jX29uPSIyMDI2LTA3LTA4IDAwOjMwOjIzIjsidXNlIHN0cmljdCI7Cl9fX2QyY19wYXltZW50Q2FsY3VsYXRvcmpzX2Nfb249IjIwMjYtMDctMDcgMjM6MzA6MjMiOyJ1c2Ugc3RyaWN0IjtfX19kMmNfcGF5bWVudENhbGN1bGF0b3Jqc19jX29uPSIyMDI2LTA3LTA3IDIyOjMwOjIzIjsidXNlIHN0cmljdCI7X19fZDJjX3BheW1lbnRDYWxjdWxhdG9yanNfY19vbj0iMjAyNi0wNy0wNyAyMTozMDoyMyI7InVzZSBzdHJpY3QiO19fX2QyY19wYXltZW50Q2FsY3VsYXRvcmpzX2Nfb249IjIwMjYtMDctMDcgMjA6MzA6MjUiOyJ1c2Ugc3RyaWN0IjtfX19kMmNfcGF5bWVudENhbGN1bGF0b3Jqc19jX29uPSIyMDI2LTA3LTA3IDE5OjMwOjI0IjsidXNlIHN0cmljdCI7X19fZDJjX3BheW1lbnRDYWxjdWxhdG9yanNfY19vbj0iMjAyNi0wNy0wNyAxODozMDoyNCI7InVzZSBzdHJpY3QiO19fX2QyY19wYXltZW50Q2FsY3VsYXRvcmpzX2Nfb249IjIwMjYtMDctMDcgMTc6MzA6MzYiOyJ1c2Ugc3RyaWN0IjsKX19fZDJjX3BheW1lbnRDYWxjdWxhdG9yanNfY19vbj0iMjAyNi0wNy0wNyAxNjozMDozMyI7InVzZSBzdHJpY3QiO19fX2QyY19wYXltZW50Q2FsY3VsYXRvcmpzX2Nfb249IjIwMjYtMDctMDcgMTU6MzA6MzQiOyJ1c2Ugc3RyaWN0IjtfX19kMmNfcGF5bWVudENhbGN1bGF0b3Jqc19jX29uPSIyMDI2LTA3LTA3IDE0OjMwOjMxIjsidXNlIHN0cmljdCI7X19fZDJjX3BheW1lbnRDYWxjdWxhdG9yanNfY19vbj0iMjAyNi0wNy0wNyAxMzozMDoyOSI7InVzZSBzdHJpY3QiO19fX2QyY19wYXltZW50Q2FsY3VsYXRvcmpzX2Nfb249IjIwMjYtMDctMDcgMTI6MzA6MzIiOyJ1c2Ugc3RyaWN0IjtfX19kMmNfcGF5bWVudENhbGN1bGF0b3Jqc19jX29uPSIyMDI2LTA3LTA3IDExOjMwOjMyIjsidXNlIHN0cmljdCI7X19fZDJjX3BheW1lbnRDYWxjdWxhdG9yanNfY19vbj0iMjAyNi0wNy0wNyAxMDozMDoyOCI7InVzZSBzdHJpY3QiOwpmdW5jdGlvbiBwb3B1cENhbGN1bGF0b3JJbml0aWFsaXplZCgpe2Z1bmN0aW9uIGEoKXtiJiZiLmFib3J0KCk7Y2FsY1VwZGF0ZVBheW1lbnRYaHImJihjYWxjVXBkYXRlUGF5bWVudFhoci5hYm9ydCgpLGNhbGNVcGRhdGVQYXltZW50WGhyPW51bGwpO3ZhciBkPSgkKCJib2R5IikuaGFzQ2xhc3MoIkVOR0xJU0giKT8iL2VuIjoiL2ZyIikrIi9hamF4L2dldFBheW1lbnREYXRhRm9yU3R5bGVJRD93c3dpZHRoPTAiLGM9Z2V0UG9wQ29udGFpblNldHRpbmdzKCksZj1nZXRPcHRpb25zQW1vdW50KGMpLHU9Z2V0QWNjZXNzb3JpZXNBbW91bnQoYyk7bGV0IG09Z2V0U2VsZWN0ZWRBY2Nlc3NvcmllcyhjKTt2YXIgbj1nZXRQcm90ZWN0aW9uUGxhbnNBbW91bnQoYykscD1jLmhhc093blByb3BlcnR5KCJub1RyaW1TZWxlY3QiKSYmKCEwPT09Yy5ub1RyaW1TZWxlY3R8fCJ0cnVlIj09PWMubm9UcmltU2VsZWN0KXx8InVzZWRjYXJzLmh0bWwiPT0kKCIjUEFHRUlEIikudmFsKCl8fAoiY2FyZGV0YWlsLmh0bWwiPT0kKCIjUEFHRUlEIikudmFsKCkseD1jLmhhc093blByb3BlcnR5KCJzdG9ja051bWJlciIpP2Muc3RvY2tOdW1iZXI6IiIseT1jLmhhc093blByb3BlcnR5KCJ2aW4iKT9jLnZpbjoiIixyPXBhcnNlSW50KCQoIiNwYXltZW50Q2FsY3VsYXRvckRvd25QYXltZW50IikudmFsKCl8fDApO2lmKHAmJiF4KXt2YXIgdD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicGhvbmVzdG9ja251bWJlciIpO3QmJih4PXQudmFsdWV8fCIiKX1wJiYheSYmKHQ9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInBob25ldmluIikpJiYoeT10LnZhbHVlfHwiIik7cCYmIWMuc3R5bGVpZCYmKHQ9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImFjdGl2ZVN0eWxlSUQiKSkmJihjLnN0eWxlaWQ9dC52YWx1ZXx8Yy5zdHlsZWlkKTtpZigiY2FzaCI9PSQoIiNwYXltZW50Q2FsY3VsYXRvclBheW1lbnRUeXBlIC5hY3RpdmVQYXltZW50VHlwZSIpLmF0dHIoImRhdGEtdHlwZSIpKWVuYWJsZUNhc2hPcHRpb24oKTsKZWxzZXt0PXBhcnNlSW50KCQoIi5wYXltZW50Q2FsY3VsYXRvclRyYWRlSW5WYWx1ZSIpLnZhbCgpfHwwKStyO3ZhciBBPVtdO2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIi5jb25kaXRpb25hbC1yZWJhdGUtY2hlY2tib3giKS5mb3JFYWNoKGZ1bmN0aW9uKHEpe3EuY2hlY2tlZCYmKHE9cS5nZXRBdHRyaWJ1dGUoImRhdGEtY29uZGl0aW9uYWwtcmViYXRlLWlkIikpJiZBLnB1c2gocSl9KTt2YXIgdz1udWxsO0Nvb2tpZXMuZ2V0KCJwYXltZW50Q2FsY3VsYXRvclNlbGVjdGVkT3B0aW9ucyIpJiYodz1Db29raWVzLmdldCgicGF5bWVudENhbGN1bGF0b3JTZWxlY3RlZE9wdGlvbnMiKS5zcGxpdCgiLSIpKTt2YXIgQj0kKCIjcGF5bWVudENhbGN1bGF0b3JLbUFsbG93YW5jZSIpLnZhbCgpOyFCJiZ3JiZ3WzNdJiYoQj13WzNdKTt2YXIgZz0kKCIjcGF5bWVudENhbGN1bGF0b3JQYXltZW50VHlwZSAuYWN0aXZlUGF5bWVudFR5cGUiKS5hdHRyKCJkYXRhLXR5cGUiKTshZyYmdyYmCndbMF0mJihnPXdbMF0pOyEkKCIjcGF5bWVudENhbGN1bGF0b3JJbnRlcnZhbCIpLnZhbCgpJiZ3JiZ3WzJdJiYkKCIjcGF5bWVudENhbGN1bGF0b3JJbnRlcnZhbCIpLnZhbCh3WzJdKTtiPSQuYWpheCh7dXJsOmQsdHlwZToiUE9TVCIsZGF0YVR5cGU6IkpTT04iLGRhdGE6e3N0eWxlaWQ6Yy5zdHlsZWlkLHBheW1lbnRUeXBlOmcsZG93bnBheW1lbnQ6dCxvcHRpb25zQW1vdW50OmYscGF5bWVudEZyZXF1ZW5jeTokKCIjcGF5bWVudENhbGN1bGF0b3JJbnRlcnZhbCIpLnZhbCgpLGttQWxsb3dhbmNlOkIsb3B0aW9uczpmLGlzSW52ZW50b3J5OnAsc246eCx2aW46eSxjb25kaXRpb25hbFJlYmF0ZUlkczpBLmpvaW4oIiwiKSxhY2Nlc3Nvcmllczp1LHNlbGVjdGVkQWNjZXNzb3JpZXM6bSxwcm90ZWN0aW9uUGxhbnM6bn0sc3VjY2VzczpmdW5jdGlvbihxKXtxLmN1cnJlbnRQYXltZW50JiZxLmN1cnJlbnRQYXltZW50Lmxlbmd0aCYmKCQoIiNwYXltZW50Q2FsY3VsYXRvckRvd25QYXltZW50IikudmFsKHIpLApnPSJsZWFzZSI9PT1nPyJsZWFzaW5nIjoiZmluYW5jZSI9PT1nPyJmaW5hbmNpbmciOmcsImNhc2giPT09ZyYmKCQoIiNwYXltZW50Q2FsY3VsYXRvclBheW1lbnRDb250YWluZXIiKS5oaWRlKCksJCgiI3BheW1lbnRDYWxjdWxhdG9yUGF5bWVudENvbnRhaW5lcldpdGhUYXhlcyIpLmhpZGUoKSkscS5jdXJyZW50UGF5bWVudCYmMCE9PXEuY3VycmVudFBheW1lbnQubGVuZ3RofHwiY2FzaCI9PT1nPygkKCIjcGF5bWVudENhbGN1bGF0b3JFcnJvck1lc3NhZ2UiKS5oaWRlKCksJCgiI3BheW1lbnRDYWxjdWxhdG9yRG93blBheW1lbnRFcnJvck1lc3NhZ2UiKS5oaWRlKCksJCgiI3BheW1lbnRDYWxjdWxhdG9yRG93blBheW1lbnRFcnJvck1lc3NhZ2VGaW5hbmNlIikuaGlkZSgpLCQoIiNwYXltZW50Q2FsY3VsYXRvckRvd25QYXltZW50RXJyb3JNZXNzYWdlTGVhc2UiKS5oaWRlKCksJCgiI3BheW1lbnRDYWxjdWxhdG9yT3B0aW9uQ29udGFpbmVyIikuc2hvdygpLCQoIiNwYXltZW50Q2FsY3VsYXRvck5vdGljZUNvbnRhaW5lciIpLnByb3AoImhpZGRlbiIsCiExKSxxLmN1cnJlbnRQYXltZW50JiYwPHEuY3VycmVudFBheW1lbnQubGVuZ3RoJiYoJCgiI3BheW1lbnRDYWxjdWxhdG9ySW50ZXJ2YWwiKS52YWwocS5jdXJyZW50UGF5bWVudFswXS5pbnRlcnZhbCksZz1nfHwoImxlYXNlIj09PXEuY3VycmVudFBheW1lbnRbMF0udHlwZT8ibGVhc2luZyI6ImZpbmFuY2luZyIpKSk6KCQoIiNwYXltZW50Q2FsY3VsYXRvck9wdGlvbkNvbnRhaW5lciIpLmhpZGUoKSwkKCIjcGF5bWVudENhbGN1bGF0b3JQYXltZW50Q29udGFpbmVyIikuaGlkZSgpLCQoIiNwYXltZW50Q2FsY3VsYXRvclBheW1lbnRDb250YWluZXJXaXRoVGF4ZXMiKS5oaWRlKCksJCgiI3BheW1lbnRDYWxjdWxhdG9yTm90aWNlQ29udGFpbmVyIikucHJvcCgiaGlkZGVuIiwhMCksJCgiI3BheW1lbnRDYWxjdWxhdG9yRXJyb3JNZXNzYWdlIikuc2hvdygpKSxzaG93SGlkZVBheW1lbnRTZWN0aW9uKHEsZyksMD49JCgiI3BheW1lbnRDYWxjdWxhdG9yS21BbGxvd2FuY2Ugb3B0aW9uIikubGVuZ3RoJiYKcG9wdWxhdGVMZWFzZUtNQWxsb3dhbmNlRHJvcGRvd24ocSksImxlYXNpbmciPT1nPyQoIi5wYXltZW50Q2FsY3VsYXRvckttQWxsb3dhbmNlQ29udGFpbmVyIikuc2hvdygpOiQoIi5wYXltZW50Q2FsY3VsYXRvckttQWxsb3dhbmNlQ29udGFpbmVyIikuaGlkZSgpLGdldENhc2hQcmljZUJsb2NrKHEpLCJjYXNoIj09PWc\/ZW5hYmxlQ2FzaE9wdGlvbigpOihxLmN1cnJlbnRQYXltZW50JiZxLmN1cnJlbnRQYXltZW50Lmxlbmd0aCYmc2hvd1BheW1lbnRzKHEuY3VycmVudFBheW1lbnQscS5wYXltZW50RmVlcyxxLm1ha2VpZCxxKSxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dmFyIHo9JCgnI3BheW1lbnRDYWxjdWxhdG9yQ29udGFpbmVyIGlucHV0W25hbWU9InNlbGVjdGVkUGF5bWVudCJdOmNoZWNrZWQnKTt6Lmxlbmd0aCYmIk5FV0NBUlMiIT0oJCgiI3RhcmdldFBhZ2UiKS52YWwoKXx8ITEpJiYiVVNFRENBUlMiIT0oJCgiI3RhcmdldFBhZ2UiKS52YWwoKXx8ITEpJiYoej17Y3VycmVudFBheW1lbnQ6ei5hdHRyKCJkYXRhLXJlYWxwYXltZW50IiksCmN1cnJlbnRSYXRlOnouYXR0cigiZGF0YS1yYXRlIikscGF5bWVudFRlcm06ei52YWwoKSxwYXltZW50VHlwZTokKCIjcGF5bWVudENhbGN1bGF0b3JQYXltZW50VHlwZSAuYWN0aXZlUGF5bWVudFR5cGUiKS5hdHRyKCJkYXRhLXR5cGUiKSxwYXltZW50SW50ZXJ2YWw6JCgiI3BheW1lbnRDYWxjdWxhdG9ySW50ZXJ2YWwiKS52YWwoKSxwYXltZW50RG93blBheW1lbnQ6cGFyc2VJbnQoJCgiLnBheW1lbnRDYWxjdWxhdG9yVHJhZGVJblZhbHVlIikudmFsKCl8fDApK3BhcnNlSW50KCQoIiNwYXltZW50Q2FsY3VsYXRvckRvd25QYXltZW50IikudmFsKCl8fDApLHRvdGFsSW50ZXJlc3Q6ei5hdHRyKCJkYXRhLXRvdGFsaW50ZXJlc3QiKSxsdXhlVGF4QW1vdW50OnouYXR0cigiZGF0YS1sdXhlVGF4QW1vdW50IikscmF0ZVR5cGU6ei5hdHRyKCJkYXRhLXJhdGV0eXBlIiksZWZmZWN0aXZlUmF0ZTp6LmF0dHIoImRhdGEtZWZmZWN0aXZlUmF0ZSIpLHRvdGFsQ29zdDp6LmF0dHIoImRhdGEtdG90YWxDb3N0Iil9LApjaGFuZ2VQYWdlUGF5bWVudFZhbHVlKHopKX0sMjUwKSkpfSxlcnJvcjpmdW5jdGlvbihxLHosRCl7Y29uc29sZS5lcnJvcigibG9hZFBheW1lbnRzOjogUGF5bWVudCBjYWxjdWxhdGlvbiBlcnJvcjoiLHosRCl9fSl9fXZhciBiPW51bGw7JCgiI3BheW1lbnRDYWxjdWxhdG9ySW50ZXJ2YWwiKS5vbigiY2hhbmdlIixmdW5jdGlvbigpe2EoKX0pOyQoIiNwYXltZW50Q2FsY3VsYXRvclBheW1lbnRUeXBlIGxpIikub24oImNsaWNrIixmdW5jdGlvbihkKXskKCIjcGF5bWVudENhbGN1bGF0b3JQYXltZW50VHlwZSBsaSIpLnJlbW92ZUNsYXNzKCJhY3RpdmVQYXltZW50VHlwZSIpO3ZhciBjPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNwYXltZW50Q2FsY3VsYXRvckNvbnRhaW5lciAuY2FsYy1wYXltZW50LWNhc2giKTskKHRoaXMpLmFkZENsYXNzKCJhY3RpdmVQYXltZW50VHlwZSIpO3N3aXRjaCghMCl7Y2FzZSAibGVhc2luZyI9PT0kKHRoaXMpLmF0dHIoImRhdGEtdHlwZSIpOmMuaGlkZGVuPQohMDskKCIucGF5bWVudENhbGN1bGF0b3JLbUFsbG93YW5jZUNvbnRhaW5lciIpLnNob3coKTskKCIucGF5bWVudENhbGN1bGF0b3JJbnB1dENvbnRhaW5lciIpLnNob3coKTtzaG93RGlzY2xhaW1lckxpbmsoKTticmVhaztjYXNlICJmaW5hbmNpbmciPT09JCh0aGlzKS5hdHRyKCJkYXRhLXR5cGUiKTpjLmhpZGRlbj0hMDskKCIucGF5bWVudENhbGN1bGF0b3JLbUFsbG93YW5jZUNvbnRhaW5lciIpLmhpZGUoKTskKCIucGF5bWVudENhbGN1bGF0b3JJbnB1dENvbnRhaW5lciIpLnNob3coKTtzaG93RGlzY2xhaW1lckxpbmsoKTticmVhaztjYXNlICJjYXNoIj09PSQodGhpcykuYXR0cigiZGF0YS10eXBlIik6aGlkZURpc2NsYWltZXJMaW5rKCksYy5oaWRkZW49ITEsJCgiLnBheW1lbnRDYWxjdWxhdG9ySW5wdXRDb250YWluZXIiKS5oaWRlKCksJCgiI3BheW1lbnRDYWxjdWxhdG9yUGF5bWVudENvbnRhaW5lciIpLmhpZGUoKSwkKCIjcGF5bWVudENhbGN1bGF0b3JQYXltZW50Q29udGFpbmVyV2l0aFRheGVzIikuaGlkZSgpLApudWxsIT09Q29va2llcy5nZXQoInBheW1lbnRDYWxjdWxhdG9yU2VsZWN0ZWRPcHRpb25zIikmJihjPUNvb2tpZXMuZ2V0KCJwYXltZW50Q2FsY3VsYXRvclNlbGVjdGVkT3B0aW9ucyIpLnNwbGl0KCItIiksY1swXT0iY2FzaCIsQ29va2llcy5zZXQoInBheW1lbnRDYWxjdWxhdG9yU2VsZWN0ZWRPcHRpb25zIixjLmpvaW4oIi0iKSxudWxsLCIvIikpLHdpbmRvdy5wYXltZW50U2VsZWN0Q2hhbmdlZD0hMCwidW5kZWZpbmVkIiE9PXR5cGVvZiBtb2RlbENvbmZpZyYmImZ1bmN0aW9uIj09PXR5cGVvZiBtb2RlbENvbmZpZy5zZXRCTlBWaWV3JiZtb2RlbENvbmZpZy5zZXRCTlBWaWV3KCEwLCJjYXNoIil9bGV0IGY7MSE9KG51bGw9PWQ\/dm9pZCAwOm51bGw9PShmPWQuZGV0YWlsKT92b2lkIDA6Zi5pc0ZpcnN0UnVuKSYmJCgiI3BheW1lbnRDYWxjdWxhdG9yRG93blBheW1lbnQiKS50cmlnZ2VyKCJibHVyIil9KTskKCIjcGF5bWVudENhbGN1bGF0b3JLbUFsbG93YW5jZSIpLm9uKCJjaGFuZ2UiLApmdW5jdGlvbigpe2EoKX0pOyQoIiNwYXltZW50Q2FsY3VsYXRvckRvd25QYXltZW50Iikub24oImJsdXIiLGZ1bmN0aW9uKCl7bGV0IGQ9cGFyc2VJbnQoJCh0aGlzKS52YWwoKS5yZXBsYWNlKC9bXlxkXS9nLCIiKSl8fDA7dmFyIGM9ImxlYXNpbmciPT09JCgiI3BheW1lbnRDYWxjdWxhdG9yUGF5bWVudFR5cGUgLmFjdGl2ZVBheW1lbnRUeXBlIikuYXR0cigiZGF0YS10eXBlIik\/cGFyc2VJbnQoJCgiI21heERvd25QYXltZW50Rm9yVHJpbSIpLnZhbCgpKXx8MDpwYXJzZUludCgkKCIjbWF4RG93blBheW1lbnRGaW5hbmNlRm9yVHJpbSIpLnZhbCgpKXx8MDswPGMmJmQ+YyYmKGQ9Yyk7JCh0aGlzKS52YWwoZCk7YSgpfSk7JCgiLnBheW1lbnRDYWxjdWxhdG9yVHJhZGVJblZhbHVlIikub24oImJsdXIiLGZ1bmN0aW9uKCl7bGV0IGQ9cGFyc2VJbnQoJCh0aGlzKS5hdHRyKCJtYXgiKSl8fDAsYz1wYXJzZUludCgkKHRoaXMpLnZhbCgpKXx8MDtjPWM+ZD9kOmM7JCh0aGlzKS52YWwoYyk7Cl9sb2NhbFN0b3JhZ2VTZXQoInRyYWRlaW5fY3VycmVudF92YWx1ZSIsSlNPTi5zdHJpbmdpZnkoe3ZhbHVlOmN9KSwxKTthKCl9KTskKCIjcGF5bWVudENhbGN1bGF0b3JJbmNsdWRlVGF4Q2hlY2siKS5vbigiY2hhbmdlIixmdW5jdGlvbigpeyQodGhpcykuaXMoIjpjaGVja2VkIik\/KCQoIiNwYXltZW50Q2FsY3VsYXRvclBheW1lbnRDb250YWluZXIiKS5oaWRlKCksJCgiI3BheW1lbnRDYWxjdWxhdG9yUGF5bWVudENvbnRhaW5lcldpdGhUYXhlcyIpLnNob3coKSwkKCIucGF5bWVudENhbGN1bGF0b3JUYXhlSW5jbHVkZWQiKS5zaG93KCksJCgiLnBheW1lbnRDYWxjdWxhdG9yVGF4ZU5vdEluY2x1ZGVkIikuaGlkZSgpKTooJCgiI3BheW1lbnRDYWxjdWxhdG9yUGF5bWVudENvbnRhaW5lcldpdGhUYXhlcyIpLmhpZGUoKSwkKCIjcGF5bWVudENhbGN1bGF0b3JQYXltZW50Q29udGFpbmVyIikuc2hvdygpLCQoIi5wYXltZW50Q2FsY3VsYXRvclRheGVJbmNsdWRlZCIpLmhpZGUoKSwKJCgiLnBheW1lbnRDYWxjdWxhdG9yVGF4ZU5vdEluY2x1ZGVkIikuc2hvdygpKX0pOyQoIiNwYXltZW50Q2FsY3VsYXRvckNhbGxUb0FjdGlvbkNvbnRhaW5lciBhIikub24oImNsaWNrIixmdW5jdGlvbigpe2dldFBvcENvbnRhaW5TZXR0aW5ncygpLmFscmVhZHlJbml0PSEwO3dpbmRvdy5wYXltZW50U2VsZWN0Q2hhbmdlZCYmKHdpbmRvdy50ZW1wUGF5bWVudFNlbGVjdENoYW5nZWQ9ITApO3dpbmRvdy5wYXltZW50U2VsZWN0Q2hhbmdlZD0hMTt2b2lkIDAhPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi52ZWhpY2xlQ29uZmlndXJhdG9yRFIiKSYmInVuZGVmaW5lZCIhPT10eXBlb2YgbW9kZWxDb25maWcmJm1vZGVsQ29uZmlnLmNoYW5nZVBheW1lbnRQbGFuUG9wdXAoKTskKCIjcGF5bWVudENhbGN1bGF0b3JQb3B1cENvbnRhaW5lciIpLnBvcHVwaXplKCkuY2xvc2UoKX0pOyQoIiNwYXltZW50Q2FsY3VsYXRvclBvcHVwQ29udGFpbmVyIC5jbG9zZS1yZXZlYWwtbW9kYWwiKS5vbigiY2xpY2siLApmdW5jdGlvbigpe3ZvaWQgMCE9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiLnZlaGljbGVDb25maWd1cmF0b3JEUiIpJiYidW5kZWZpbmVkIiE9PXR5cGVvZiBtb2RlbENvbmZpZyYmKG1vZGVsQ29uZmlnLmNoYW5nZVBheW1lbnRQbGFuUG9wdXAoKSwkKCIjZHJDYWxjdWxhdG9yRGlzY2xhaW1lckRyYXdlciIpLmxlbmd0aCYmJCgiI2RyQ2FsY3VsYXRvckRpc2NsYWltZXJEcmF3ZXIiKS5pcygiOnZpc2libGUiKSYmKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkckNhbGN1bGF0b3JEaXNjbGFpbWVyRHJhd2VyIikuY2xhc3NMaXN0LnJlbW92ZSgib3BlbiIpLGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkckNhbGN1bGF0b3JEaXNjbGFpbWVyRHJhd2VyIikuc3R5bGUuZGlzcGxheT0ibm9uZSIpKX0pOyQoIiNwYXltZW50Q2FsY3VsYXRvclRyaW1TZWxlY3QiKS5vbigiY2hhbmdlIixmdW5jdGlvbigpe3ZhciBkPWdldFBvcENvbnRhaW5TZXR0aW5ncygpO2Quc3R5bGVpZD0kKHRoaXMpLnZhbCgpOwokKCIjYWN0aXZlU3R5bGVJRCIpLmxlbmd0aCYmJCgiI2FjdGl2ZVN0eWxlSUQiKS52YWwoZC5zdHlsZWlkKTtwYXltZW50Q2FsY3VsYXRvclBvcHVwSW5pdCgpO3VwZGF0ZVVybChkKX0pOyQoImJvZHkiKS5vbigiY2xpY2sgdGFwIiwiI3BheW1lbnRDYWxjdWxhdG9yQ29udGFpbmVyIC5maW5hbmNpbmctb3B0aW9uLnBheW1lbnRDYWxjdWxhdG9yUGF5bWVudFdyYXBwZXIgKiIsZnVuY3Rpb24oKXskKHRoaXMpLmZpbmQoJ2lucHV0W25hbWU9InNlbGVjdGVkUGF5bWVudCJdJykucHJvcCgiY2hlY2tlZCIsImNoZWNrZWQiKS50cmlnZ2VyKCJjaGFuZ2UiKX0pOyQoImJvZHkiKS5vbigiY2hhbmdlIiwnI3BheW1lbnRDYWxjdWxhdG9yQ29udGFpbmVyIGlucHV0W25hbWU9InNlbGVjdGVkUGF5bWVudCJdJyxmdW5jdGlvbigpe3ZhciBkPSQodGhpcykudmFsKCksYz0kKHRoaXMpLmF0dHIoImRhdGEtcmF0ZXR5cGUiKTskKCdpbnB1dFtuYW1lPSJzZWxlY3RlZFBheW1lbnRXaXRoVGF4ZXMiXVt2YWx1ZT0iJysKZCsnIl1bZGF0YS1yYXRldHlwZT0iJytjKyciXScpLnByb3AoImNoZWNrZWQiLCEwKTskKCIjcGF5bWVudENhbGN1bGF0b3JDb250YWluZXIgLmZpbmFuY2luZy1vcHRpb24iKS5yZW1vdmVDbGFzcygic2VsZWN0ZWQiKTskKCdpbnB1dFtuYW1lPSJzZWxlY3RlZFBheW1lbnRXaXRoVGF4ZXMiXVt2YWx1ZT0iJytkKyciXVtkYXRhLXJhdGV0eXBlPSInK2MrJyJdJykuY2xvc2VzdCgiLmZpbmFuY2luZy1vcHRpb24iKS5hZGRDbGFzcygic2VsZWN0ZWQiKTskKHRoaXMpLmNsb3Nlc3QoIi5maW5hbmNpbmctb3B0aW9uIikuYWRkQ2xhc3MoInNlbGVjdGVkIil9KTskKCJib2R5Iikub24oImNoYW5nZSIsJyNwYXltZW50Q2FsY3VsYXRvckNvbnRhaW5lciBpbnB1dFtuYW1lPSJzZWxlY3RlZFBheW1lbnRXaXRoVGF4ZXMiXScsZnVuY3Rpb24oKXt2YXIgZD0kKHRoaXMpLnZhbCgpLGM9JCh0aGlzKS5hdHRyKCJkYXRhLXJhdGV0eXBlIik7JCgnaW5wdXRbbmFtZT0ic2VsZWN0ZWRQYXltZW50Il1bdmFsdWU9IicrCmQrJyJdW2RhdGEtcmF0ZXR5cGU9IicrYysnIl0nKS5wcm9wKCJjaGVja2VkIiwhMCkudHJpZ2dlcigiY2hhbmdlIil9KTt2YXIgZT0hMTskKCJib2R5Iikub24oImNoYW5nZSIsJyNwYXltZW50Q2FsY3VsYXRvckNvbnRhaW5lciBpbnB1dFtuYW1lPSJzZWxlY3RlZFBheW1lbnQiXScsZnVuY3Rpb24oKXt2YXIgZD1nZXRQb3BDb250YWluU2V0dGluZ3MoKSxjPSQoIiNwYXltZW50Q2FsY3VsYXRvclBheW1lbnRUeXBlIC5hY3RpdmVQYXltZW50VHlwZSIpLmF0dHIoImRhdGEtdHlwZSIpLGY9JCh0aGlzKS52YWwoKSx1PSQoIiNwYXltZW50Q2FsY3VsYXRvckludGVydmFsIikudmFsKCksbT0kKCIjcGF5bWVudENhbGN1bGF0b3JLbUFsbG93YW5jZSIpLnZhbCgpLG49JCgiI3BheW1lbnRDYWxjdWxhdG9yRG93blBheW1lbnQiKS52YWwoKT8kKCIjcGF5bWVudENhbGN1bGF0b3JEb3duUGF5bWVudCIpLnZhbCgpOjAscD0kKCIucGF5bWVudENhbGN1bGF0b3JUcmFkZUluVmFsdWUiKS52YWwoKT8KJCgiLnBheW1lbnRDYWxjdWxhdG9yVHJhZGVJblZhbHVlIikudmFsKCk6MDtuPXBhcnNlSW50KG4pK3BhcnNlSW50KHApO249bi50b0ZpeGVkKDApO3A9YysiLSIrZisiLSIrdSsiLSIrbSsiLSIrbjtwIT1Db29raWVzLmdldCgicGF5bWVudENhbGN1bGF0b3JTZWxlY3RlZE9wdGlvbnMiKSYmbnVsbCE9Q29va2llcy5nZXQoInBheW1lbnRDYWxjdWxhdG9yU2VsZWN0ZWRPcHRpb25zIikmJih3aW5kb3cucGF5bWVudFNlbGVjdENoYW5nZWQ9ITAsdm9pZCAwIT1Db29raWVzLmdldCgicGF5bWVudENhbGN1bGF0b3JTZWxlY3RlZE9wdGlvbnMiKS5zcGxpdCgiLSIpWzBdJiYidW5kZWZpbmVkIiE9dHlwZW9mIG1vZGVsQ29uZmlnJiZ2b2lkIDAhPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi52ZWhpY2xlQ29uZmlndXJhdG9yRFIiKSYmKGU9ITAsbW9kZWxDb25maWcuc2V0Qk5QVmlldyhlLGMpKSxudWxsIT1Db29raWVzLmdldCgicGF5bWVudENhbGN1bGF0b3JTZWxlY3RlZE9wdGlvbnMiKSYmCkNvb2tpZXMuc2V0KCJwcmV2aW91c3BheW1lbnRDYWxjdWxhdG9yU2VsZWN0ZWRPcHRpb25zIixDb29raWVzLmdldCgicGF5bWVudENhbGN1bGF0b3JTZWxlY3RlZE9wdGlvbnMiKSxudWxsLCIvIikpO2V8fCJ1bmRlZmluZWQiPT10eXBlb2YgbW9kZWxDb25maWd8fCJ1bmRlZmluZWQiPT09dHlwZW9mIG1vZGVsQ29uZmlnfHx2b2lkIDA9PWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi52ZWhpY2xlQ29uZmlndXJhdG9yRFIiKXx8bW9kZWxDb25maWcuc2hvdWxkUmVsb2FkQk5QVmlld09uUGF5bWVudENoYW5nZShlLGMpO0Nvb2tpZXMuc2V0KCJwYXltZW50Q2FsY3VsYXRvclNlbGVjdGVkT3B0aW9ucyIscCxudWxsLCIvIik7dmFyIHg9JCgiYm9keSIpLmhhc0NsYXNzKCJFTkdMSVNIIik\/Im1vbnRocyI6Im1vaXMiLHk9JCgiYm9keSIpLmhhc0NsYXNzKCJFTkdMSVNIIik\/IiQiK24rIiBkb3duIHBheW1lbnQiOm4rIiAkIGNvbXB0YW50IjtwPSQoImJvZHkiKS5oYXNDbGFzcygiRU5HTElTSCIpPwoicGVyIHdlZWsgZm9yIjoicGFyIHNlbWFpbmUgcG91ciI7c3dpdGNoKHUpe2Nhc2UgIndlZWtseSI6cD0kKCJib2R5IikuaGFzQ2xhc3MoIkVOR0xJU0giKT8icGVyIHdlZWsgZm9yIjoicGFyIHNlbWFpbmUgcG91ciI7YnJlYWs7Y2FzZSAiYml3ZWVrbHkiOnA9JCgiYm9keSIpLmhhc0NsYXNzKCJFTkdMSVNIIik\/InBlciAyIHdlZWtzIGZvciI6InBhciAyIHNlbWFpbmVzIHBvdXIiO2JyZWFrO2Nhc2UgInNlbWltb250aGx5IjpwPSQoImJvZHkiKS5oYXNDbGFzcygiRU5HTElTSCIpPyJ0d2ljZSBhIG1vbnRoIGZvciI6IjIgZm9pcyBwYXIgbW9pcyBwb3VyIjticmVhaztjYXNlICJtb250aGx5IjpwPSQoImJvZHkiKS5oYXNDbGFzcygiRU5HTElTSCIpPyJwZXIgbW9udGggZm9yIjoicGFyIG1vaXMgcG91ciJ9bT0ibGVhc2luZyI9PT1jP20rImttIjoiIjt2YXIgcj0kKCJib2R5IikuaGFzQ2xhc3MoIkVOR0xJU0giKT8ibGVhc2luZyI9PT1jPyJMZWFzaW5nIjoiRmluYW5jaW5nIjoKImxlYXNpbmciPT09Yz8iTG9jYXRpb24iOiJGaW5hbmNlbWVudCI7ZC52ZWhpY2xlSW5mbyYmKGVtYWlsSGFuZGxlci5wYXltZW50VmVoaWNsZT1kLnZlaGljbGVJbmZvLm1ha2UrIiAiKyhkLnZlaGljbGVJbmZvLm1vZGVsfHxkLnZlaGljbGVJbmZvLkNGTW9kZWxOYW1lKSsiICIrZC52ZWhpY2xlSW5mby5DRlN0eWxlTmFtZSxlbWFpbEhhbmRsZXIucGF5bWVudFZlaGljbGU9JCgiYm9keSIpLmhhc0NsYXNzKCJFTkdMSVNIIik\/ZC52ZWhpY2xlSW5mby55ZWFyKyIgIitlbWFpbEhhbmRsZXIucGF5bWVudFZlaGljbGU6ZW1haWxIYW5kbGVyLnBheW1lbnRWZWhpY2xlKyIgIitkLnZlaGljbGVJbmZvLnllYXIsZW1haWxIYW5kbGVyLnBheW1lbnRWZWhpY2xlKz0iKCIrcisiICIrcCsiICIrZisiICIreCsiLiAiK3krIi4gIittKyIpIixlbWFpbEhhbmRsZXIubWFrZT1kLnZlaGljbGVJbmZvLm1ha2UsZW1haWxIYW5kbGVyLm1vZGVsPWQudmVoaWNsZUluZm8ubW9kZWx8fGQudmVoaWNsZUluZm8uQ0ZNb2RlbE5hbWUsCmVtYWlsSGFuZGxlci50cmltPWQudmVoaWNsZUluZm8uQ0ZTdHlsZU5hbWUsZW1haWxIYW5kbGVyLnllYXI9ZC52ZWhpY2xlSW5mby55ZWFyKTtpZigiTkVXQ0FSUyIhPT0oJCgiI3RhcmdldFBhZ2UiKS52YWwoKXx8ITEpJiYiVVNFRENBUlMiIT09KCQoIiN0YXJnZXRQYWdlIikudmFsKCl8fCExKSl7bT0kKHRoaXMpLmF0dHIoImRhdGEtcmVhbHBheW1lbnQiKTtkPSQodGhpcykuYXR0cigiZGF0YS1yYXRlIik7cD0kKHRoaXMpLmF0dHIoImRhdGEtdG90YWxpbnRlcmVzdCIpO3g9JCh0aGlzKS5hdHRyKCJkYXRhLWx1eGVUYXhBbW91bnQiKTt5PSQodGhpcykuYXR0cigiZGF0YS1lZmZlY3RpdmVSYXRlIik7cj0kKHRoaXMpLmF0dHIoImRhdGEtcmF0ZXR5cGUiKTt2YXIgdD0kKHRoaXMpLmF0dHIoImRhdGEtdG90YWxDb3N0Iik7Y2hhbmdlUGFnZVBheW1lbnRWYWx1ZSh7Y3VycmVudFBheW1lbnQ6bSxjdXJyZW50UmF0ZTpkLHBheW1lbnRUZXJtOmYscGF5bWVudFR5cGU6YyxwYXltZW50SW50ZXJ2YWw6dSwKcGF5bWVudERvd25QYXltZW50Om4sdG90YWxJbnRlcmVzdDpwLGx1eGVUYXhBbW91bnQ6eCxyYXRlVHlwZTpyLGVmZmVjdGl2ZVJhdGU6eSx0b3RhbENvc3Q6dH0pfXI9IiIhPSQoIiNkaXNjbGFpbWVyUHJpY2VUZXh0IikudmFsKCk\/JCgiI2Rpc2NsYWltZXJQcmljZVRleHQiKS52YWwoKToiK3R4IjskKCIjZGVhbGVyUHJvdmluY2VDb2RlIikubGVuZ3RoJiYiQUIiPT0kKCIjZGVhbGVyUHJvdmluY2VDb2RlIikudmFsKCkmJihyPSIiIT0kKCIjZGlzY2xhaW1lclByaWNlVGV4dCIpLnZhbCgpPyQoIiNkaXNjbGFpbWVyUHJpY2VUZXh0IikudmFsKCk6IitHU1QiKTtpZigkKCIuYm5wX3BheW1lbnRfY29udGFpbmVyIikubGVuZ3RoKXt4PSQoIiNhY3RpdmVzaXRlbGFuZ3VhZ2UiKS52YWwoKXx8IkZSRU5DSCI7bT0kKHRoaXMpLmF0dHIoImRhdGEtcmVhbHBheW1lbnQiKTtkPSQodGhpcykuYXR0cigiZGF0YS1yYXRlIik7cD0iMSI9PSQoIiNyb3VuZFBheW1lbnQiKS52YWwoKT8wOjI7CnQ9cGFyc2VGbG9hdChtKS50b0ZpeGVkKHApO3Q9dC5yZXBsYWNlKC9cLihbMC05XSopLyxmdW5jdGlvbihBLHcpe3JldHVybic8c3VwIGNsYXNzPSJwZCI+Jyt3KyI8L3N1cD4ifSk7eT0kKHRoaXMpLmF0dHIoImRhdGEtZWZmZWN0aXZlUmF0ZSIpO3A9JCgiI0lOVEVSVkFMX1NIT1JUX1dFRUtMWSIpLnZhbCgpO209NTI7c3dpdGNoKHUpe2Nhc2UgIndlZWtseSI6cD0kKCIjSU5URVJWQUxfU0hPUlRfV0VFS0xZIikudmFsKCk7bT01MjticmVhaztjYXNlICJiaXdlZWtseSI6cD0kKCIjSU5URVJWQUxfU0hPUlRfQklXRUVLTFkiKS52YWwoKTttPTI2O2JyZWFrO2Nhc2UgInNlbWltb250aGx5IjpwPSQoIiNJTlRFUlZBTF9TSE9SVF9TRU1JTU9OVEhMWSIpLnZhbCgpO209MjQ7YnJlYWs7Y2FzZSAibW9udGhseSI6cD0kKCIjSU5URVJWQUxfU0hPUlRfTU9OVEhMWSIpLnZhbCgpLG09MTJ9dT1yKyIvIitwOyIxIj09JCgiI3BheW1lbnRDYWxjdWxhdG9yU3RyaWtlUGF5bWVudCIpLnZhbCgpJiYKImJsdXIiPT09JCgiI3BheW1lbnRDYWxjdWxhdG9yU3RyaWtlUGF5bWVudE9wdGlvbiIpLnZhbCgpJiYodD0nPHNwYW4gY2xhc3M9ImJsdXItcHJpY2UiPicrdCsiPC9zcGFuPiIpO3A9RDJDVXRpbHMuRm9ybWF0LnRvUHJpY2UodCk7bj1EMkNVdGlscy5Gb3JtYXQudG9QcmljZShuKSsoIkVOR0xJU0giPT09eD8iIGRvd24iOiIgY29tcHRhbnQiKTtjPSJmaW5hbmNpbmciPT09Yz8iRU5HTElTSCI9PT14P2YrIiBtb250aHMgZmluLiI6IkZpbi4gIitmKyIgbW9pcyI6IkVOR0xJU0giPT09eD9mKyIgbW9udGhzIGxlYXNlIjoiTG9jLiAiK2YrIiBtb2lzIjtkPXBhcnNlRmxvYXQoZCkudG9GaXhlZCgyKSsiJSI7eD1mb3JtYXRFZmZlY3RpdmVSYXRlVGV4dCh5LGQsIiIsIiIsITEpO3k9YysiIC8gIituKyIgQCAiK2QreCsiOiI7MT09JCgiI2lzRFJTaXRlIikubGVuZ3RoJiYiMSI9PSQoIiNpc0RSU2l0ZSIpLnZhbCgpJiYoZj1wYXJzZUludChwYXJzZUludChmKS8xMiptKSxtPXN0b3JlLmdldCgiaTE4biIpLlBBWU1FTlRTLnRvTG93ZXJDYXNlKCksCiEwPT09c3RvcmUuZ2V0KCJmaWVsZHMuVldfRFJfUFBfRU5BQkxFRCIpJiYobis9JzxhIGhyZWY9ImphdmFzY3JpcHQ6dm9pZCgwKSIgY2xhc3M9ImRpc2NsYWltZXJzU3VwZXJzY3JpcHRzIiAgZGF0YS1kaXNjbGFpbWVyLWRpdmlkPSJkaXNjbGFpbWVycy1zdXBlcnNjcmlwdHMtNy1kaXYiIGRhdGEtZGlzY2xhaW1lci1pZD0iNyI+PHN1cCBkYXRhLWRpc2NsYWltZXItaWQ9IjciPjc8L3N1cD48L2E+JyxwKz0nPGEgaHJlZj0iamF2YXNjcmlwdDp2b2lkKDApIiBjbGFzcz0iZGlzY2xhaW1lcnNTdXBlcnNjcmlwdHMiICBkYXRhLWRpc2NsYWltZXItZGl2aWQ9ImRpc2NsYWltZXJzLXN1cGVyc2NyaXB0cy0zLWRpdiIgZGF0YS1kaXNjbGFpbWVyLWlkPSIzIj48c3VwIGRhdGEtZGlzY2xhaW1lci1pZD0iMyI+Mzwvc3VwPjwvYT4nKSx5PWMrIiAvICIrZisiICIrbSsiIC8gIituKyIgQCAiK2QreCsiOiIpOyQoIi5ibnBfcGF5bWVudF9jb250YWluZXIgLmJwLXBheW1lbnQtZGVzYyIpLmh0bWwoeSk7CiQoIi5ibnBfcGF5bWVudF9jb250YWluZXIgLmJwLXBheW1lbnQtYW1vdW50IikuaHRtbChwKTskKCIuYm5wX3BheW1lbnRfY29udGFpbmVyIC5icC10YXgtdHh0IikudGV4dCh1KTtmPSQodGhpcykuY2xvc2VzdCgiLnBheW1lbnRDYWxjdWxhdG9yUGF5bWVudFdyYXBwZXJDb250YWluZXIiKTsiMSI9PSQoIiNpc21vYmlsZSIpLnZhbCgpJiYoZj0kKHRoaXMpLmNsb3Nlc3QoIi5wYXltZW50Q2FsY3VsYXRvclBheW1lbnRXcmFwcGVyQ29udGFpbmVyIikuZmluZCgiLnBheW1lbnRUb29sdGlwIikpO2Y9Zi5hdHRyKCJkYXRhLXRvb2x0aXAiKTtmPVN0cmluZyhmKS5yZXBsYWNlKC8mL2csIiZhbXA7IikucmVwbGFjZSgvPC9nLCImbHQ7IikucmVwbGFjZSgvPi9nLCImZ3Q7IikucmVwbGFjZSgvIi9nLCImcXVvdDsiKTtjaGFuZ2VCblBUb29sVGlwTWVzc2FnZShmKTsidW5kZWZpbmVkIiE9PXR5cGVvZiBtb2RlbENvbmZpZyYmKG1vZGVsQ29uZmlnLnNhdmVDb25maWcoKSxtb2RlbENvbmZpZy5jYWxjdWxhdGVBY2NQYXltZW50cygpKX19KTsKJCgiYm9keSIpLm9uKCJjaGFuZ2UiLCIuY29uZGl0aW9uYWwtcmViYXRlLWNoZWNrYm94IixmdW5jdGlvbigpe2lmKCQoIiNwYXltZW50Q2FsY3VsYXRvclBvcHVwQ29udGFpbmVyIikuaXMoIjp2aXNpYmxlIil8fCQoIiNwYXltZW50Q2FsY3VsYXRvckNvbnRhaW5lciIpLmlzKCI6dmlzaWJsZSIpKSJjYXNoIj09PSQoIiNwYXltZW50Q2FsY3VsYXRvclBheW1lbnRUeXBlIC5hY3RpdmVQYXltZW50VHlwZSIpLmF0dHIoImRhdGEtdHlwZSIpP2NhbGNVcGRhdGVQYXltZW50SW5mbygpOmEoKX0pfWZ1bmN0aW9uIGVzY2FwZUhUTUwoYSl7cmV0dXJuIFN0cmluZyhhKS5yZXBsYWNlKC8mL2csIiZhbXA7IikucmVwbGFjZSgvPC9nLCImbHQ7IikucmVwbGFjZSgvPi9nLCImZ3Q7IikucmVwbGFjZSgvIi9nLCImcXVvdDsiKS5yZXBsYWNlKC8nL2csIiYjMzk7Iil9CnZhciBjdGFQYXltZW50VGV4dEZyPVtdLGN0YVBheW1lbnRUZXh0RW49W10sY2FsY0N1clBheW1lbnQ9e30sY3RhUGF5bWVudFZhbHVlcz1bXSxjYXNoUHJpY2VGb3JQYWdlPW51bGwsY2FsY1VwZGF0ZVBheW1lbnRYaHI9bnVsbDsKZnVuY3Rpb24gdXBkYXRlVXJsKGEpe3RyeXtpZighYS52ZWhpY2xlSW5mbylyZXR1cm47dmFyIGI9YS52ZWhpY2xlSW5mbyxlPSJ1bmRlZmluZWQiIT10eXBlb2YgbmV3Y2FyRGV0YWlscz9uZXdjYXJEZXRhaWxzLmFjdGl2ZU1vZGVsLnN0eWxlczpiLm1vZGVsSlNPTi5zdHlsZXMsZD13aW5kb3cucGFyZW50LmxvY2F0aW9uLmhyZWYuc3BsaXQoIi8iKS5zbGljZSgwLC0xKS5qb2luKCIvIiksYz1lLmZpbHRlcihmdW5jdGlvbihmKXtyZXR1cm4gZi5pZD09YS5zdHlsZWlkfSkucG9wKCl9Y2F0Y2goZil7Y29uc29sZS5lcnJvcihmKTtyZXR1cm59YyYmKGU9Yy5lbmdsaXNoVHJpbXx8IiIsYj1nZXRDdXJyZW50VmVoaWNsZVBhdGgoYikrIi0iK2UucmVwbGFjZSgvXHN8LS9nLCIgIiksZS5sZW5ndGgmJndpbmRvdy5wYXJlbnQuaGlzdG9yeS5wdXNoU3RhdGUoe30sIiIsZCsiLyIrYisiLmh0bWwiKSl9CmZ1bmN0aW9uIGNoYW5nZUJuUFRvb2xUaXBNZXNzYWdlKGEpe2E9JzxzcGFuIGNsYXNzPSJwYXltZW50VG9vbHRpcCBmYWwgZmEtaW5mby1jaXJjbGUiIGRhdGEtdG9vbHRpcD0iJythKyciPjwvc3Bhbj4nOyQoIi5wYXltZW50SW5mb0J1YmJsZUJuUCIpLmh0bWwoYSk7dHJ5e3ZhciBiPSQoIi5wYXltZW50SW5mb0J1YmJsZUJuUCAucGF5bWVudFRvb2x0aXAiKS5hdHRyKCJkYXRhLXRvb2x0aXAiKTskKCIucGF5bWVudEluZm9CdWJibGVCblAgLnBheW1lbnRUb29sdGlwIikuZGFya1Rvb2x0aXAoe2NvbnRlbnQ6YixncmF2aXR5OiJzb3V0aCIsdGhlbWU6ImxpZ2h0Iix0cmlnZ2VyOiJob3ZlciIsYW5pbWF0aW9uOiJmYWRlSW4ifSl9Y2F0Y2goZSl7fX0KZnVuY3Rpb24gcG9wdXBpemVyT25DbG9zZShhLGIpeyJwYXltZW50Q2FsY3VsYXRvclBvcHVwQ29udGFpbmVyIiE9PWEuY3VycmVudFRhcmdldC5wYXJlbnRFbGVtZW50LmlkJiYod2luZG93LnRlbXBQYXltZW50U2VsZWN0Q2hhbmdlZCYmKHdpbmRvdy50ZW1wUGF5bWVudFNlbGVjdENoYW5nZWQ9ITEsd2luZG93LnBheW1lbnRTZWxlY3RDaGFuZ2VkPSEwKSwkKCIjcGF5bWVudENhbGN1bGF0b3JQb3B1cENvbnRhaW5lciIpLnBvcHVwaXplKCkub3BlbigxKSwkKCIucmV2ZWFsLW1vZGFsIikub2ZmKCJwb3B1cGl6ZXIuY2xvc2UiLHBvcHVwaXplck9uQ2xvc2UpKX0KZnVuY3Rpb24gZ2V0UG9wQ29udGFpblNldHRpbmdzKCl7dmFyIGE9JCgiI3BheW1lbnRDYWxjdWxhdG9yUG9wdXBDb250YWluZXIiKS5kYXRhKCJwb3B1cFNldHRpbmdzIik7YS5ub01vdG9pbnNpZ2h0TGVhc2VQYXltZW50cz0hMTthLm5vTW90b2luc2lnaHRGaW5hbmNlUGF5bWVudHM9ITE7aWYoInVuZGVmaW5lZCI9PT10eXBlb2YgYSlyZXR1cm4hMTsidW5kZWZpbmVkIiE9dHlwZW9mIHNlYXJjaERldGFpbHMmJnNlYXJjaERldGFpbHMudmVoaWNsZT8oYS5wYXltZW50VHlwZT0iMSI9PShzZWFyY2hEZXRhaWxzLnZlaGljbGUubm9Nb3RvaW5zaWdodExlYXNlUGF5bWVudHN8fCExKT8iZmluYW5jZSI6YS5wYXltZW50VHlwZSxhLnBheW1lbnRUeXBlPSIxIj09KHNlYXJjaERldGFpbHMudmVoaWNsZS5ub01vdG9pbnNpZ2h0UGF5bWVudHx8ITEpPyJsZWFzZSI6YS5wYXltZW50VHlwZSxhLm5vTW90b2luc2lnaHRMZWFzZVBheW1lbnRzPSIxIj09KHNlYXJjaERldGFpbHMudmVoaWNsZS5ub01vdG9pbnNpZ2h0TGVhc2VQYXltZW50c3x8CiExKT8hMDohMSxhLm5vTW90b2luc2lnaHRGaW5hbmNlUGF5bWVudHM9IjEiPT0oc2VhcmNoRGV0YWlscy52ZWhpY2xlLm5vTW90b2luc2lnaHRQYXltZW50fHwhMSk\/ITA6ITEpOihhLnBheW1lbnRUeXBlPSIxIj09KGEubm9MZWFzZXx8ITEpPyJmaW5hbmNlIjphLnBheW1lbnRUeXBlLGEucGF5bWVudFR5cGU9IjEiPT0oYS5ub0ZpbmFuY2V8fCExKT8ibGVhc2UiOmEucGF5bWVudFR5cGUsYS5ub01vdG9pbnNpZ2h0TGVhc2VQYXltZW50cz0iMSI9PShhLm5vTGVhc2V8fCExKT8hMDohMSxhLm5vTW90b2luc2lnaHRGaW5hbmNlUGF5bWVudHM9IjEiPT0oYS5ub0ZpbmFuY2V8fCExKT8hMDohMSk7cmV0dXJuIGF9CmZ1bmN0aW9uIGNoYW5nZVBhZ2VQYXltZW50VmFsdWUoYSl7dmFyIGI9YS5jdXJyZW50UGF5bWVudCxlPWEuY3VycmVudFJhdGUsZD1hLnBheW1lbnRUZXJtLGM9YS5wYXltZW50VHlwZSxmPWEucGF5bWVudEludGVydmFsLHU9YS5wYXltZW50RG93blBheW1lbnQsbT1hLnRvdGFsSW50ZXJlc3Qsbj1hLmx1eGVUYXhBbW91bnQscD1hLnJhdGVUeXBlLHg9YS5lZmZlY3RpdmVSYXRlLHk9YS50b3RhbENvc3Qscj0kKCJib2R5IikuaGFzQ2xhc3MoIkVOR0xJU0giKT8iRU5HTElTSCI6IkZSRU5DSCIsdD1nZXRQb3BDb250YWluU2V0dGluZ3MoKSxBPSIxIj09JCgiI3BheW1lbnRDYWxjdWxhdG9yUm91bmRQYXltZW50IikudmFsKCk\/MDoyLHc9Mj09QT9NYXRoLmZsb29yKHBhcnNlRmxvYXQoYikpLnRvRml4ZWQoMCk6cGFyc2VGbG9hdChiKS50b0ZpeGVkKDApO2I9cGFyc2VGbG9hdChiKS50b0ZpeGVkKEEpO0E9Yi5zcGxpdCgiLiIpWzFdfHwiIjtiPWIucmVwbGFjZSgvXC4oWzAtOV0qKS8sCmZ1bmN0aW9uKEMsRil7cmV0dXJuJzxzdXAgY2xhc3M9InBkIj4nK0YrIjwvc3VwPiJ9KTsiMSI9PSQoIiNwYXltZW50Q2FsY3VsYXRvclN0cmlrZVBheW1lbnQiKS52YWwoKSYmImJsdXIiPT09JCgiI3BheW1lbnRDYWxjdWxhdG9yU3RyaWtlUGF5bWVudE9wdGlvbiIpLnZhbCgpJiYoYj0nPHNwYW4gY2xhc3M9ImJsdXItcHJpY2UiPicrYisiPC9zcGFuPiIpO3ZhciBCPUQyQ1V0aWxzLkZvcm1hdC50b1ByaWNlKGIpLGc9YisiJCIscT0iJCIrYix6PSJsZWFzaW5nIj09PWM\/IkxvY2F0aW9uIjoiRmluYW5jZW1lbnQiLEQ9ImxlYXNpbmciPT09Yz8iTGVhc2luZyI6IkZpbmFuY2luZyIsdj1lKyIlIixoPSIiIT0kKCIjZGlzY2xhaW1lclByaWNlVGV4dCIpLnZhbCgpPyQoIiNkaXNjbGFpbWVyUHJpY2VUZXh0IikudmFsKCk6Iit0eCI7JCgiI2RlYWxlclByb3ZpbmNlQ29kZSIpLmxlbmd0aCYmIkFCIj09JCgiI2RlYWxlclByb3ZpbmNlQ29kZSIpLnZhbCgpJiYoaD0iIiE9JCgiI2Rpc2NsYWltZXJQcmljZVRleHQiKS52YWwoKT8KJCgiI2Rpc2NsYWltZXJQcmljZVRleHQiKS52YWwoKToiK0dTVCIpO3ZhciBrPWgrIi9tb2lzIixsPWgrIi9tdGgiO3N3aXRjaChmKXtjYXNlICJ3ZWVrbHkiOms9aCsiL3NlbSI7bD1oKyIvd2VlayI7YnJlYWs7Y2FzZSAiYml3ZWVrbHkiOms9aCsiLzJzZW0iO2w9aCsiLzJ3ZWVrIjticmVhaztjYXNlICJzZW1pbW9udGhseSI6az1oKyIvYmltZW5zdWVsIjtsPWgrIi9zZW1pbW9udGhseSI7YnJlYWs7ZGVmYXVsdDprPWgrIi9tb2lzIixsPWgrIi9tb250aCJ9bGV0IEc9aD0iIjsxPT0kKCIjaXNEUlNpdGUiKS5sZW5ndGgmJiIxIj09JCgiI2lzRFJTaXRlIikudmFsKCkmJiEwPT09c3RvcmUuZ2V0KCJmaWVsZHMuVldfRFJfUFBfRU5BQkxFRCIpJiYoRz0nPHNwYW4+PGEgaHJlZj0iamF2YXNjcmlwdDp2b2lkKDApIiBjbGFzcz0iZGlzY2xhaW1lcnNTdXBlcnNjcmlwdHMiICBkYXRhLWRpc2NsYWltZXItZGl2aWQ9ImRpc2NsYWltZXJzLXN1cGVyc2NyaXB0cy0zLWRpdiIgZGF0YS1kaXNjbGFpbWVyLWlkPSIzIj48c3VwIGRhdGEtZGlzY2xhaW1lci1pZD0iMyI+Mzwvc3VwPjwvYT48L3NwYW4+JywKaD0nPHNwYW4+PGEgaHJlZj0iamF2YXNjcmlwdDp2b2lkKDApIiBjbGFzcz0iZGlzY2xhaW1lcnNTdXBlcnNjcmlwdHMiICBkYXRhLWRpc2NsYWltZXItZGl2aWQ9ImRpc2NsYWltZXJzLXN1cGVyc2NyaXB0cy03LWRpdiIgZGF0YS1kaXNjbGFpbWVyLWlkPSI3Ij48c3VwIGRhdGEtZGlzY2xhaW1lci1pZD0iNyI+Nzwvc3VwPjwvYT48L3NwYW4+Jyk7dmFyIEg9IjEiPT0kKCIjcGF5bWVudENhbGN1bGF0b3JTdHJpa2VQYXltZW50IikudmFsKCk\/InNjcmF0Y2giPT09JCgiI3BheW1lbnRDYWxjdWxhdG9yU3RyaWtlUGF5bWVudE9wdGlvbiIpLnZhbCgpPyJzdHJpa2UtcHJpY2UtYmxhY2siOiIiOiIiLEU9RDJDVXRpbHMuRm9ybWF0LnRvUHJpY2UodSkrIiBjb21wdGFudCIsTD1EMkNVdGlscy5Gb3JtYXQudG9QcmljZSh1KSsiIGRvd24gcGF5bWVudCI7dT16KyIgIitkKyIgbW9pcyI7RD1EKyIgIitkKyIgbW9udGhzIjtCPSc8c3BhbiBjbGFzcz0idHh0LXBheW1lbnQgJytIKyciPicrCkIrIjwvc3Bhbj4gIitHKycgQCA8c3BhbiBjbGFzcz0idHh0LXBheW1lbnQiPicrdisiPC9zcGFuPiIrZm9ybWF0RWZmZWN0aXZlUmF0ZVRleHQoeCxlLCcgY2xhc3M9InR4dC1wYXltZW50IiAnKTtoPSgiRU5HTElTSCI9PT1yP2w6aykrIiAiKygiRU5HTElTSCI9PT1yP0w6RSkraCsoIjEiPT0kKCIjaXNtb2JpbGUiKS52YWwoKT8iIjonIDxzcGFuIHN0eWxlPSJmb250LXdlaWdodDo3MDA7Y29sb3I6IzAwMDsiIGNsYXNzPSJ2ZHBJbmZvVG9vbHRpcCBmYXIgZmEtaW5mby1jaXJjbGUiPjwvc3Bhbj4nKTskKCIucGF5bWVudFdyYXBwZXIgLnBheW1lbnRMaW5lMiwgLnBheW1lbnRXcmFwcGVyTW9iaWxlVkRQIC5wYXltZW50TGluZTEiKS5odG1sKCJFTkdMSVNIIj09PXI\/RDp1KTskKCIucGF5bWVudFdyYXBwZXIgLnBheW1lbnRMaW5lMSwgLnBheW1lbnRXcmFwcGVyTW9iaWxlVkRQIC5wYXltZW50TGluZTIiKS5odG1sKEIpOyQoIi5wYXltZW50V3JhcHBlciAucGF5bWVudExpbmUzLCAucGF5bWVudFdyYXBwZXJNb2JpbGVWRFAgLnBheW1lbnRMaW5lMyIpLmh0bWwoaCk7CkU9Qj0iIjtjYWxjQ3VyUGF5bWVudC5jdXJyZW50UGF5bWVudCYmY2FsY0N1clBheW1lbnQuY3VycmVudFBheW1lbnQubGVuZ3RoJiYoRT1jYWxjQ3VyUGF5bWVudC5jdXJyZW50UGF5bWVudFswXS50b3RhbCxCPWBBZmZpY2jDqSDDoCAke0V9JGAsRT1gTGlzdGVkIGF0ICQke0V9YCk7Y3RhUGF5bWVudFRleHRGcj1bYCR7Z30gJHtrfWAsYCR7dX0gQCAke3Z9YCxgJHtCfWBdO2N0YVBheW1lbnRUZXh0RW49W2Ake3F9ICR7bH1gLGAke0R9IEAgJHt2fWAsYCR7RX1gXTtjdGFQYXltZW50VmFsdWVzPVthLmN1cnJlbnRQYXltZW50LGUsZCxmXTt3aW5kb3cucGFyZW50LkFNUCYmd2luZG93LnBhcmVudC5BTVAuc2V0U3RhdGUoe1NTUl9TVEFURTp7bGVhc2VUZXJtVGV4dDoiRU5HTElTSCI9PT1yP0Q6dSxsZWFzZVBheW1lbnRUeHQ6dyxsZWFzZVBheW1lbnREZWNpbWFsOkEsbGVhc2VSYXRlOnYsbGVhc2VUYXhUZXh0Omh9fSk7Y2FsY0N1clBheW1lbnQuY3VyVGVybT1kO2NhbGNDdXJQYXltZW50LmN1clJhdGU9CmU7Y2FsY0N1clBheW1lbnQuY3VySW50ZXJ2YWw9ZjtjYWxjQ3VyUGF5bWVudC50YXhUZXh0RnI9aztjYWxjQ3VyUGF5bWVudC50YXhUZXh0RW49bDthPSgkKCJib2R5IikuaGFzQ2xhc3MoIkVOR0xJU0giKT8iL2VuIjoiL2ZyIikrIi9hamF4L2dldFBheW1lbnRUb29sdGlwQnlTdHlsZUlEP3dzd2lkdGg9MCI7Yz0ibGVhc2luZyI9PWM\/ImxlYXNlIjoiZmluYW5jZSI7cj1nZXRPcHRpb25zQW1vdW50KHQpO3c9dC5oYXNPd25Qcm9wZXJ0eSgibm9UcmltU2VsZWN0IikmJighMD09PXQubm9UcmltU2VsZWN0fHwidHJ1ZSI9PT10Lm5vVHJpbVNlbGVjdCl8fCJ1c2VkY2Fycy5odG1sIj09PSQoIiNQQUdFSUQiKS52YWwoKXx8ImNhcmRldGFpbC5odG1sIj09PSQoIiNQQUdFSUQiKS52YWwoKTtBPXQuaGFzT3duUHJvcGVydHkoInN0b2NrTnVtYmVyIik\/dC5zdG9ja051bWJlcjoiIjtnPXQuaGFzT3duUHJvcGVydHkoInZpbiIpP3QudmluOiIiO3E9Z2V0QWNjZXNzb3JpZXNBbW91bnQodCk7CnY9Z2V0U2VsZWN0ZWRBY2Nlc3Nvcmllcyh0KTtrPWdldFByb3RlY3Rpb25QbGFuc0Ftb3VudCh0KTtsZXQgTj1bXTtkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCIuY29uZGl0aW9uYWwtcmViYXRlLWNoZWNrYm94IikuZm9yRWFjaChmdW5jdGlvbihDKXtDLmNoZWNrZWQmJihDPUMuZ2V0QXR0cmlidXRlKCJkYXRhLWNvbmRpdGlvbmFsLXJlYmF0ZS1pZCIpKSYmTi5wdXNoKEMpfSk7dyYmIUEmJihsPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwaG9uZXN0b2NrbnVtYmVyIikpJiYoQT1sLnZhbHVlfHwiIik7dyYmIWcmJihsPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwaG9uZXZpbiIpKSYmKGc9bC52YWx1ZXx8IiIpOyQuYWpheCh7dXJsOmEsdHlwZToiUE9TVCIsZGF0YVR5cGU6IkhUTUwiLGRhdGE6e3N0eWxlaWQ6dC5zdHlsZWlkLHR5cGU6YyxwYXltZW50OnBhcnNlRmxvYXQoYiksdGVybTpwYXJzZUludChkKSxyYXRlOnBhcnNlRmxvYXQoZSksaW50ZXJ2YWw6ZixvcHRpb25zOnIsCnRvdGFsSW50ZXJlc3Q6bSxpc0ludmVudG9yeTp3LHNuOkEsdmluOmcsbHV4ZVRheEFtb3VudDpuLHJhdGVfdHlwZTpwLHRvdGFsQ29zdDp5LGNvbmRpdGlvbmFsUmViYXRlSWRzOk4uam9pbigiLCIpLGFjY2Vzc29yaWVzOnEsc2VsZWN0ZWRBY2Nlc3Nvcmllczp2LHByb3RlY3Rpb25QbGFuczprLGVmZmVjdGl2ZVJhdGU6eH0sYmVmb3JlU2VuZDpmdW5jdGlvbihDKXt0cnl7bGV0IEY9JCgibWV0YVtuYW1lPSdjc3JmLWRvbWFpbi1jaGVjayddIik7Ri5sZW5ndGgmJkMuc2V0UmVxdWVzdEhlYWRlcigiY3NyZi1kb21haW4tY2hlY2siLEYuYXR0cigiY29udGVudCIpKX1jYXRjaChGKXtjb25zb2xlLmVycm9yKEMpfX0sc3VjY2VzczpmdW5jdGlvbihDKXskKCIjZGFya3Rvb2x0aXAtcGF5bWVudFdyYXBwZXIsICNkYXJrdG9vbHRpcC12ZHBQYXltZW50VG9vbHRpcCwgI2Rhcmt0b29sdGlwLXZkcEluZm9Ub29sdGlwLCAjZGFya3Rvb2x0aXAtdmRwVXNlZEluZm9Ub29sdGlwIikucmVtb3ZlKCk7CnZhciBGPSQoIi5uZXdWZHBBY3Rpb25zIikuaGFzQ2xhc3MoIndlc3QiKT8id2VzdCI6JCgiLnVzZWRWZHBBY3Rpb25zIikuaGFzQ2xhc3MoIndlc3QiKT8id2VzdCI6ImVhc3QiOyQoIi52ZHBQYXltZW50VG9vbHRpcCwgLnBheW1lbnRXcmFwcGVyIC52ZHBJbmZvVG9vbHRpcCwgLnBheW1lbnRXcmFwcGVyIC52ZHBVc2VkSW5mb1Rvb2x0aXAiKS5kYXJrVG9vbHRpcCh7Y29udGVudDpDLGdyYXZpdHk6Rix0aGVtZToibGlnaHQiLHRyaWdnZXI6ImhvdmVyIixhbmltYXRpb246ImZsaXBJbiJ9KX19KX0KZnVuY3Rpb24gZ2V0Q3VycmVudFZlaGljbGVQYXRoKGEpe3ZhciBiPVtkMmNtZWRpYS51cmwuc2FuaXRpemUoYS5tYWtlKSxkMmNtZWRpYS51cmwuc2FuaXRpemUoYS5tb2RlbCksZDJjbWVkaWEudXJsLnNhbml0aXplKGEueWVhcildLmpvaW4oIi0iKTsiRU5HTElTSCI9PT0oJCgiI2FjdGl2ZXNpdGVsYW5ndWFnZSIpLnZhbCgpfHwiRlJFTkNIIikmJihiPVtkMmNtZWRpYS51cmwuc2FuaXRpemUoYS5tYWtlKSxkMmNtZWRpYS51cmwuc2FuaXRpemUoYS5tb2RlbCksZDJjbWVkaWEudXJsLnNhbml0aXplKGEueWVhcildLmpvaW4oIi0iKSk7cmV0dXJuIGJ9CmZ1bmN0aW9uIHNob3dQYXltZW50cyhhLGIsZSxkKXskKCIjcGF5bWVudENhbGN1bGF0b3JQYXltZW50Q29udGFpbmVyIikuaHRtbCgiIik7JCgiI3BheW1lbnRDYWxjdWxhdG9yUGF5bWVudENvbnRhaW5lcldpdGhUYXhlcyIpLmh0bWwoIiIpO3ZhciBjPSIxIj09JCgiI3BheW1lbnRDYWxjdWxhdG9yUm91bmRQYXltZW50IikudmFsKCk\/MDoyOyIxIj09JCgiI3BheW1lbnRDYWxjdWxhdG9yU3RyaWtlUGF5bWVudCIpLnZhbCgpJiYkKCIjcGF5bWVudENhbGN1bGF0b3JTdHJpa2VQYXltZW50T3B0aW9uIikudmFsKCk7dmFyIGY9W10sdT0kKCIjb2VtQ2VydGlmaWNhdGlvbiIpLnZhbCgpfHwwOyJmaW5hbmNlIj09YVswXS50eXBlJiZhWzBdLmRvd25wYXltZW50PmQubWF4RG93bkZpbmFuY2U\/KCQoIiNwYXltZW50Q2FsY3VsYXRvckRvd25QYXltZW50RXJyb3JNZXNzYWdlIikuc2hvdygpLCQoIiNwYXltZW50Q2FsY3VsYXRvckRvd25QYXltZW50RXJyb3JNZXNzYWdlRmluYW5jZSIpLnNob3coKSwKJCgiI3BheW1lbnRDYWxjdWxhdG9yRG93blBheW1lbnRFcnJvck1lc3NhZ2VMZWFzZSIpLmhpZGUoKSwkKCIjcGF5bWVudENhbGN1bGF0b3JQYXltZW50Q29udGFpbmVyIikuaGlkZSgpLCQoIiNwYXltZW50Q2FsY3VsYXRvclBheW1lbnRDb250YWluZXJXaXRoVGF4ZXMiKS5oaWRlKCksJCgiI3BheW1lbnRDYWxjdWxhdG9yTm90aWNlQ29udGFpbmVyIikucHJvcCgiaGlkZGVuIiwhMCkpOiJsZWFzZSI9PWFbMF0udHlwZSYmYVswXS5kb3ducGF5bWVudD5kLm1heERvd24\/KCQoIiNwYXltZW50Q2FsY3VsYXRvckRvd25QYXltZW50RXJyb3JNZXNzYWdlIikuc2hvdygpLCQoIiNwYXltZW50Q2FsY3VsYXRvckRvd25QYXltZW50RXJyb3JNZXNzYWdlRmluYW5jZSIpLmhpZGUoKSwkKCIjcGF5bWVudENhbGN1bGF0b3JEb3duUGF5bWVudEVycm9yTWVzc2FnZUxlYXNlIikuc2hvdygpLCQoIiNwYXltZW50Q2FsY3VsYXRvclBheW1lbnRDb250YWluZXIiKS5oaWRlKCksJCgiI3BheW1lbnRDYWxjdWxhdG9yUGF5bWVudENvbnRhaW5lcldpdGhUYXhlcyIpLmhpZGUoKSwKJCgiI3BheW1lbnRDYWxjdWxhdG9yTm90aWNlQ29udGFpbmVyIikucHJvcCgiaGlkZGVuIiwhMCkpOigkKCIjcGF5bWVudENhbGN1bGF0b3JEb3duUGF5bWVudEVycm9yTWVzc2FnZSIpLmhpZGUoKSwkKCIjcGF5bWVudENhbGN1bGF0b3JEb3duUGF5bWVudEVycm9yTWVzc2FnZUZpbmFuY2UiKS5oaWRlKCksJCgiI3BheW1lbnRDYWxjdWxhdG9yRG93blBheW1lbnRFcnJvck1lc3NhZ2VMZWFzZSIpLmhpZGUoKSwkKCIjcGF5bWVudENhbGN1bGF0b3JOb3RpY2VDb250YWluZXIiKS5wcm9wKCJoaWRkZW4iLCExKSwkKCIjcGF5bWVudENhbGN1bGF0b3JJbmNsdWRlVGF4Q2hlY2siKS5pcygiOmNoZWNrZWQiKT8oJCgiI3BheW1lbnRDYWxjdWxhdG9yUGF5bWVudENvbnRhaW5lcldpdGhUYXhlcyIpLnNob3coKSwkKCIjcGF5bWVudENhbGN1bGF0b3JQYXltZW50Q29udGFpbmVyIikuaGlkZSgpKTooJCgiI3BheW1lbnRDYWxjdWxhdG9yUGF5bWVudENvbnRhaW5lciIpLnNob3coKSwkKCIjcGF5bWVudENhbGN1bGF0b3JQYXltZW50Q29udGFpbmVyV2l0aFRheGVzIikuaGlkZSgpKSk7CjU8YS5sZW5ndGg\/YS5mb3JFYWNoKGZ1bmN0aW9uKHYpeygwPT12LnRlcm0lMTJ8fDY0PT12LnRlcm18fDQwPT1lJiY1MT09di50ZXJtfHwyMD09ZSYmWzI3LDMwLDM5LDQyXS5pbmNsdWRlcyh2LnRlcm0pfHxbMTYsMjFdLmluY2x1ZGVzKGUpfHw0Mj09di50ZXJtJiYxMDE0PT11fHxbMzAsNDJdLmluY2x1ZGVzKHYudGVybSkmJls0NzE1NjIsNDcxNTYzLDQ3MTU2NF0uaW5jbHVkZXMocGFyc2VJbnQoc2V0dGluZ3Muc3R5bGVpZCkpfHxbMTYsMV0uaW5jbHVkZXMoZSkmJlsyOCw0MF0uaW5jbHVkZXModi50ZXJtKXx8Mjc9PXYudGVybSYmMjc9PWV8fDUyPT12LnRlcm0mJjM5PT1lKSYmZi5wdXNoKHYpfSk6Zj1hOyJkZXNjIj09JCgiI3BheW1lbnRDYWxjdWxhdG9yVGVybU9yZGVyIikudmFsKCkmJihmPWYucmV2ZXJzZSgpKTt2YXIgbT17fSxuPSExO2YuZm9yRWFjaChmdW5jdGlvbih2LGgpe09iamVjdC5oYXNPd24obSx2LnRlcm0pP249ITA6bVt2LnRlcm1dPXt9O21bdi50ZXJtXVt2LnJhdGVfdHlwZV09Cmh9KTt2YXIgcD1bXSx4PSExLHk9ITEscj1wYXJzZUludChzZXR0aW5ncy5kZWZhdWx0VGVybSwxMCl8fDA7Q29va2llcy5nZXQoInBheW1lbnRDYWxjdWxhdG9yU2VsZWN0ZWRPcHRpb25zIik\/KHg9Q29va2llcy5nZXQoInBheW1lbnRDYWxjdWxhdG9yU2VsZWN0ZWRPcHRpb25zIikuc3BsaXQoIi0iKVsxXXx8ITEseT1Db29raWVzLmdldCgicGF5bWVudENhbGN1bGF0b3JTZWxlY3RlZE9wdGlvbnMiKS5zcGxpdCgiLSIpWzBdfHwhMSk6MDxyJiYoeD1yLHI9c2V0dGluZ3MucGF5bWVudFR5cGUseT0ibGVhc2UiPT09cj8ibGVhc2luZyI6ImZpbmFuY2UiPT09cj8iZmluYW5jaW5nIjpyKTthWzBdJiYibGVhc2UiPT1hWzBdLnR5cGUmJiJ1bmRlZmluZWQiIT09dHlwZW9mIGFbMF0ua21fYWxsb3dhbmNlJiYocj0wPGQuY3VycmVudFBheW1lbnRbMF0ua21fYWxsb3dhbmNlP2QuY3VycmVudFBheW1lbnRbMF0ua21fYWxsb3dhbmNlOjJFNCwkKCIjcGF5bWVudENhbGN1bGF0b3JLbUFsbG93YW5jZSIpLnZhbChyKSk7CmxldCB0PWQudG90YWxJbmNlbnRpdmUsQT1uPyQoIiNMT1dFU1RQQVlNRU5UX0xBQkVMIikudmFsKCk6IiIsdz1uPyQoIiNMT1dFU1RSQVRFX0xBQkVMIikudmFsKCk6IiI7dmFyIEI9MDskKCIjcGF5bWVudENhbGN1bGF0b3JOb3RpY2VDb250YWluZXIgLmpzLXRlbXBLbUFsbG93ZWQiKS5yZW1vdmUoKTtsZXQgZz0iIixxPSIiOzE9PSQoIiNpc0RSU2l0ZSIpLmxlbmd0aCYmIjEiPT0kKCIjaXNEUlNpdGUiKS52YWwoKSYmITA9PT1zdG9yZS5nZXQoImZpZWxkcy5WV19EUl9QUF9FTkFCTEVEIikmJihnPSc8c3Bhbj48YSBocmVmPSJqYXZhc2NyaXB0OnZvaWQoMCkiIGNsYXNzPSJkaXNjbGFpbWVyc1N1cGVyc2NyaXB0cyBjYWxjRGlzY2xhaW1lcnNTdXBlcnNjcmlwdHMgIiBkYXRhLWRpc2NsYWltZXItZGl2aWQ9ImNhbGN1bGF0b3ItZGlzY2xhaW1lcnMtc3VwZXJzY3JpcHRzLTMtZGl2IiAgZGF0YS1kaXNjbGFpbWVyLWlkPSIzIj48c3VwPjM8L3N1cD48L2E+PC9zcGFuPicscT0nPHNwYW4+PGEgaHJlZj0iamF2YXNjcmlwdDp2b2lkKDApIiBjbGFzcz0iZGlzY2xhaW1lcnNTdXBlcnNjcmlwdHMgY2FsY0Rpc2NsYWltZXJzU3VwZXJzY3JpcHRzICIgZGF0YS1kaXNjbGFpbWVyLWRpdmlkPSJjYWxjdWxhdG9yLWRpc2NsYWltZXJzLXN1cGVyc2NyaXB0cy0yLWRpdiIgIGRhdGEtZGlzY2xhaW1lci1pZD0iMiI+PHN1cD4yPC9zdXA+PC9hPjwvc3Bhbj4nKTsKJC5lYWNoKGYsZnVuY3Rpb24odixoKXtpZighcC5pbmNsdWRlcyhoLnRlcm0pKXtwLnB1c2goaC50ZXJtKTt2YXIgaz0ic3RhbmRhcmQiPT1oLnJhdGVfdHlwZXx8Mj5PYmplY3Qua2V5cyhtW2gudGVybV0pLmxlbmd0aD9oOmZbbVtoLnRlcm1dLnN0YW5kYXJkXSxsPTI9PU9iamVjdC5rZXlzKG1baC50ZXJtXSkubGVuZ3RoP2ZbbVtoLnRlcm1dLnN1YnZlbnRlZF06ITEsRz0yPT1PYmplY3Qua2V5cyhtW2gudGVybV0pLmxlbmd0aD9tW2gudGVybV0uc3VidmVudGVkOiExLEg9aC50ZXJtLEU9aC5kb3ducGF5bWVudC50b0ZpeGVkKDApLEw9ay5wYXltZW50LnRvRml4ZWQoYyksTj1rLnBheW1lbnQudG9GaXhlZChjKTtMPUwucmVwbGFjZSgvXC4oWzAtOV0qKS8sZnVuY3Rpb24oTyxNKXtyZXR1cm4nPHN1cCBjbGFzcz0icGQiPicrTSsiPC9zdXA+In0pO3ZhciBDPWsucGF5bWVudFdpdGhUYXhlcy50b0ZpeGVkKGMpLEY9ay5wYXltZW50V2l0aFRheGVzLnRvRml4ZWQoYyk7Qz1DLnJlcGxhY2UoL1wuKFswLTldKikvLApmdW5jdGlvbihPLE0pe3JldHVybic8c3VwIGNsYXNzPSJwZCI+JytNKyI8L3N1cD4ifSk7dmFyIFU9ay5yYXRlLGZhPSJwYXltZW50Iit2O3Y9InBheW1lbnQiK3YrIndpdGhUYXhlcyI7SD0kKCJib2R5IikuaGFzQ2xhc3MoIkVOR0xJU0giKT8iPHNwYW4+IitIKyI8L3NwYW4+IG1vbnRoIjoiPHNwYW4+IitIKyI8L3NwYW4+IG1vaXMiO0U9YDxzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiPiR7RX08L3NwYW4+YCsoJCgiYm9keSIpLmhhc0NsYXNzKCJFTkdMSVNIIik\/IiBkb3duIHBheW1lbnQiOiIgY29tcHRhbnQiKTt2YXIgUD0iIiE9JCgiI2Rpc2NsYWltZXJQcmljZVRleHQiKS52YWwoKT8iPGRpdj4iKyQoIiNkaXNjbGFpbWVyUHJpY2VUZXh0IikudmFsKCkrIjwvZGl2PiI6Iit0eCI7JCgiI2RlYWxlclByb3ZpbmNlQ29kZSIpLmxlbmd0aCYmIkFCIj09JCgiI2RlYWxlclByb3ZpbmNlQ29kZSIpLnZhbCgpJiYoUD0iIiE9JCgiI2Rpc2NsYWltZXJQcmljZVRleHQiKS52YWwoKT8KIjxkaXY+IiskKCIjZGlzY2xhaW1lclByaWNlVGV4dCIpLnZhbCgpKyI8L2Rpdj4iOiIrR1NUIik7dmFyIFE9ay5jYWxjdWxhdGVkRWZmZWN0aXZlUmF0ZT9rLmNhbGN1bGF0ZWRFZmZlY3RpdmVSYXRlOjAsVj1mb3JtYXRFZmZlY3RpdmVSYXRlVGV4dChRLGsucmF0ZSwiIiwnY2xhc3M9Ii1mczEwIicpLFc9ay50b3RhbE9ibGlnYXRpb25BbW91bnQ\/ay50b3RhbE9ibGlnYXRpb25BbW91bnQ6MCxYPSdkYXRhLXRvb2x0aXA9Iicray50b29sdGlwKyciJyxZPSdkYXRhLXRvb2x0aXA9Iicray50b29sdGlwV2l0aFRheGVzKyciJyxJLGhhPW51bGwhPShJPWsubTJkX2ZpbmFuY2UpP0k6dDtJPSJzaW5nbGUtY29sdW1uIjtoPXBhcnNlSW50KGgudGVybSk7aD14JiZ4PT1oJiZ5JiZ5PT0kKCIjcGF5bWVudENhbGN1bGF0b3JQYXltZW50VHlwZSAuYWN0aXZlUGF5bWVudFR5cGUiKS5hdHRyKCJkYXRhLXR5cGUiKT8iY2hlY2tlZCI6IiI7dmFyIFI9InNtYWxsLWJveCIsSj0iIixLPSIiO2lmKGwpe0k9CiJsZWZ0LXNlY3Rpb24iO1I9IiI7Sj1sLnBheW1lbnQudG9GaXhlZChjKTtsZXQgTz1sLnBheW1lbnQudG9GaXhlZChjKTtKPUoucmVwbGFjZSgvXC4oWzAtOV0qKS8sZnVuY3Rpb24oaWEsUyl7cmV0dXJuJzxzdXAgY2xhc3M9InBkIj4nK1MrIjwvc3VwPiJ9KTtLPWwucGF5bWVudFdpdGhUYXhlcy50b0ZpeGVkKGMpO2xldCBNPWwucGF5bWVudFdpdGhUYXhlcy50b0ZpeGVkKGMpO0s9Sy5yZXBsYWNlKC9cLihbMC05XSopLyxmdW5jdGlvbihpYSxTKXtyZXR1cm4nPHN1cCBjbGFzcz0icGQiPicrUysiPC9zdXA+In0pO3ZhciBaPWwucmF0ZS50b0ZpeGVkKDIpLGphPSJwYXltZW50IitHO0c9InBheW1lbnQiK0crIndpdGhUYXhlcyI7bGV0IFQ9bC5jYWxjdWxhdGVkRWZmZWN0aXZlUmF0ZT9sLmNhbGN1bGF0ZWRFZmZlY3RpdmVSYXRlOjAsYWE9Zm9ybWF0RWZmZWN0aXZlUmF0ZVRleHQoVCxsLnJhdGUsIiIsJ2NsYXNzPSItZnMxMCInKSxiYT1sLnRvdGFsT2JsaWdhdGlvbkFtb3VudD8KbC50b3RhbE9ibGlnYXRpb25BbW91bnQ6MCxjYT0nZGF0YS10b29sdGlwPSInK2wudG9vbHRpcCsnIicsZGE9J2RhdGEtdG9vbHRpcD0iJytsLnRvb2x0aXBXaXRoVGF4ZXMrJyInLGVhPWwubTJkX2ZpbmFuY2U7Sj0nXHQ8ZGl2IGlkPSInK2phKyciIGNsYXNzPSJyaWdodC1zZWN0aW9uIHBheW1lbnRDYWxjdWxhdG9yUGF5bWVudFdyYXBwZXJDb250YWluZXIiICcrY2ErJz5cdFx0PGRpdiBjbGFzcz0iYWN0dWFsLXBheW1lbnQiPjxzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiPicrSisiPC9zcGFuPiIrZysnIDxpIGNsYXNzPSJmYXMgZmEtaW5mby1jaXJjbGUgaW5mby1pY29uIHBheW1lbnRUb29sdGlwIHJpZ2h0VG9vbHRpcCIgJytjYSsnPjwvaT48L2Rpdj5cdFx0PGRpdiBjbGFzcz0iZGV0YWlsc1RheCI+JytQKyc8L2Rpdj5cdFx0PGRpdiBjbGFzcz0ibG93ZXN0LXJhdGUiPicrWisiJSAiK2FhKyc8L2Rpdj5cdFx0PGRpdiBjbGFzcz0icmFkaW8tY29udGFpbmVyIj5cdFx0XHQ8aW5wdXRcdFx0XHRcdFx0dHlwZT0icmFkaW8iXHRcdFx0XHRcdG5hbWU9InNlbGVjdGVkUGF5bWVudCJcdFx0XHRcdFx0dmFsdWU9IicrCmwudGVybSsnIlx0XHRcdFx0XHRkYXRhLWJhc2VwYXltZW50PSInK2wucGF5bWVudCsnIlx0XHRcdFx0XHRkYXRhLXJlYWxwYXltZW50PSInK2wucGF5bWVudCsnIlx0XHRcdFx0XHRkYXRhLXJhdGV0eXBlPSInK2wucmF0ZV90eXBlKyciXHRcdFx0XHRcdGRhdGEtZGlzcGxheWVkcGF5bWVudD0iJytPKyciXHRcdFx0XHRcdGRhdGEtcmVzaWR1YWw9IicrbC5yZXNpZHVhbCsnIlx0XHRcdFx0XHRkYXRhLXRvdGFsaW50ZXJlc3Q9IicrbC50b3RhbEludGVyZXN0KyciXHRcdFx0XHRcdGRhdGEtbHV4ZVRheEFtb3VudD0iJytsLmx1eGVUYXhBbW91bnQrJyJcdFx0XHRcdFx0ZGF0YS1lZmZlY3RpdmVSYXRlPSInK1QrJyJcdFx0XHRcdFx0ZGF0YS10b3RhbENvc3Q9IicrYmErJyJcdFx0XHRcdFx0ZGF0YS1yYXRlPSInK2wucmF0ZSsnIiAgICAgICAgICAgICAgICAgZGF0YS1yZXNpZHVhbD0iJytsLnJlc2lkdWFsVmFsdWUrJyIgICAgICAgICAgICAgICAgIGRhdGEtdG90YWxpbmNlbnRpdmU9IicrCmVhKyciICAgICAgICAgICAgICAgICBkYXRhLWdzdD0iMCIgICAgICAgICAgICAgICAgIGRhdGEtaHN0PSIwIiAgICAgICAgICAgICAgICAgZGF0YS1wc3Q9IjAiXHRcdFx0XHQ+XHRcdFx0PGxhYmVsPicrdysiPC9sYWJlbD5cdFx0PC9kaXY+XHQ8L2Rpdj4iO0s9J1x0PGRpdiBpZD0iJytHKyciIGNsYXNzPSJyaWdodC1zZWN0aW9uIHBheW1lbnRDYWxjdWxhdG9yUGF5bWVudFdyYXBwZXJDb250YWluZXIiICcrZGErJz5cdFx0PGRpdiBjbGFzcz0iYWN0dWFsLXBheW1lbnQiPjxzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiPicrSysiPC9zcGFuPiIrcSsnIDxpIGNsYXNzPSJmYXMgZmEtaW5mby1jaXJjbGUgaW5mby1pY29uIHBheW1lbnRUb29sdGlwIHJpZ2h0VG9vbHRpcCIgJytkYSsnPjwvaT48L2Rpdj5cdFx0PGRpdiBjbGFzcz0ibG93ZXN0LXJhdGUiPicrWisiJSAiK2FhKyc8L2Rpdj5cdFx0PGRpdiBjbGFzcz0icmFkaW8tY29udGFpbmVyIj5cdFx0XHQ8aW5wdXRcdFx0XHRcdFx0dHlwZT0icmFkaW8iXHRcdFx0XHRcdG5hbWU9InNlbGVjdGVkUGF5bWVudFdpdGhUYXhlcyJcdFx0XHRcdFx0dmFsdWU9IicrCmwudGVybSsnIlx0XHRcdFx0XHRkYXRhLWJhc2VwYXltZW50PSInK2wucGF5bWVudCsnIlx0XHRcdFx0XHRkYXRhLXJlYWxwYXltZW50PSInK2wucGF5bWVudFdpdGhUYXhlcysnIlx0XHRcdFx0XHRkYXRhLXJhdGV0eXBlPSInK2wucmF0ZV90eXBlKyciXHRcdFx0XHRcdGRhdGEtZGlzcGxheWVkcGF5bWVudD0iJytNKyciXHRcdFx0XHRcdGRhdGEtcmVzaWR1YWw9IicrbC5yZXNpZHVhbFdpdGhUYXhlcysnIlx0XHRcdFx0XHRkYXRhLXRvdGFsaW50ZXJlc3Q9IicrbC50b3RhbEludGVyZXN0V2l0aFRheGVzKyciXHRcdFx0XHRcdGRhdGEtbHV4ZVRheEFtb3VudD0iJytsLmx1eGVUYXhBbW91bnQrJyJcdFx0XHRcdFx0ZGF0YS1lZmZlY3RpdmVSYXRlPSInK1QrJyJcdFx0XHRcdFx0ZGF0YS10b3RhbENvc3Q9IicrYmErJyJcdFx0XHRcdFx0ZGF0YS1yYXRlPSInK2wucmF0ZSsnIiAgICAgICAgICAgICAgICAgZGF0YS1yZXNpZHVhbD0iJytsLnJlc2lkdWFsVmFsdWVXaXRoVGF4ZXMrJyIgICAgICAgICAgICAgICAgIGRhdGEtdG90YWxpbmNlbnRpdmU9IicrCmVhKyciICAgICAgICAgICAgICAgICBkYXRhLWdzdD0iJytsLmdzdCsnIiAgICAgICAgICAgICAgICAgZGF0YS1oc3Q9IicrbC5oc3QrJyIgICAgICAgICAgICAgICAgIGRhdGEtcHN0PSInK2wucHN0KyciXHRcdFx0XHQ+XHRcdFx0PGxhYmVsPicrdysiPC9sYWJlbD5cdFx0PC9kaXY+XHQ8L2Rpdj4ifWw9JzxkaXYgY2xhc3M9ImZpbmFuY2luZy1vcHRpb24gcGF5bWVudENhbGN1bGF0b3JQYXltZW50V3JhcHBlciAnK1IrJyI+XHQ8ZGl2IGNsYXNzPSJ0ZXJtIj4nK0grJzwvZGl2Plx0PGRpdiBjbGFzcz0iZG93bi1wYXltZW50Ij4nK0UrJzwvZGl2Plx0PGRpdiBjbGFzcz0ic2VwYXJhdG9yUGF5Ij48L2Rpdj5cdDxkaXYgY2xhc3M9ImNvbnRlbnQtY29udGFpbmVyIj5cdFx0PGRpdiBpZD0iJytmYSsnIiBjbGFzcz0iJytJKycgcGF5bWVudENhbGN1bGF0b3JQYXltZW50V3JhcHBlckNvbnRhaW5lciIgJytYKyc+XHRcdFx0PGRpdiBjbGFzcz0ibG93ZXN0LXBheW1lbnQiPjxzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiPicrCkwrIjwvc3Bhbj4iK2crJyA8aSBjbGFzcz0iZmFzIGZhLWluZm8tY2lyY2xlIGluZm8taWNvbiBwYXltZW50VG9vbHRpcCBsZWZ0VG9vbHRpcCIgJytYKyc+PC9pPjwvZGl2Plx0XHRcdDxkaXYgY2xhc3M9ImRldGFpbHNUYXgiPicrUCsnPC9kaXY+XHRcdFx0PGRpdiBjbGFzcz0iYWN0dWFsLXJhdGUiPicrVSsiJSAiK1YrJzwvZGl2Plx0XHRcdDxkaXYgY2xhc3M9InJhZGlvLWNvbnRhaW5lciI+XHRcdFx0XHQ8aW5wdXQgXHRcdFx0XHRcdHR5cGU9InJhZGlvIlx0XHRcdFx0XHQnK2grJ1x0XHRcdFx0XHRuYW1lPSJzZWxlY3RlZFBheW1lbnQiXHRcdFx0XHRcdHZhbHVlPSInK2sudGVybSsnIlx0XHRcdFx0XHRkYXRhLWJhc2VwYXltZW50PSInK2sucGF5bWVudCsnIlx0XHRcdFx0XHRkYXRhLXJlYWxwYXltZW50PSInK2sucGF5bWVudCsnIlx0XHRcdFx0XHRkYXRhLXJhdGV0eXBlPSInK2sucmF0ZV90eXBlKyciXHRcdFx0XHRcdGRhdGEtZGlzcGxheWVkcGF5bWVudD0iJytOKyciXHRcdFx0XHRcdGRhdGEtcmVzaWR1YWw9IicrCmsucmVzaWR1YWwrJyJcdFx0XHRcdFx0ZGF0YS10b3RhbGludGVyZXN0PSInK2sudG90YWxJbnRlcmVzdCsnIlx0XHRcdFx0XHRkYXRhLWx1eGVUYXhBbW91bnQ9Iicray5sdXhlVGF4QW1vdW50KyciXHRcdFx0XHRcdGRhdGEtZWZmZWN0aXZlUmF0ZT0iJytRKyciXHRcdFx0XHRcdGRhdGEtdG90YWxDb3N0PSInK1crJyJcdFx0XHRcdFx0ZGF0YS1yYXRlPSInK2sucmF0ZSsnIiAgICAgICAgICAgICAgICAgZGF0YS1yZXNpZHVhbD0iJytrLnJlc2lkdWFsVmFsdWUrJyIgICAgICAgICAgICAgICAgIGRhdGEtdG90YWxpbmNlbnRpdmU9IicraGErJyIgICAgICAgICAgICAgICAgIGRhdGEtZ3N0PSIwIiAgICAgICAgICAgICAgICAgZGF0YS1oc3Q9IjAiICAgICAgICAgICAgICAgICBkYXRhLXBzdD0iMCJcdFx0XHRcdD5cdFx0XHRcdDxsYWJlbD4nK0ErIjwvbGFiZWw+XHRcdFx0PC9kaXY+XHRcdDwvZGl2PiIrSisiXHQ8L2Rpdj48L2Rpdj4iO0M9JzxkaXYgY2xhc3M9ImZpbmFuY2luZy1vcHRpb24gcGF5bWVudENhbGN1bGF0b3JQYXltZW50V3JhcHBlciAnKwpSKyciPlx0PGRpdiBjbGFzcz0idGVybSI+JytIKyc8L2Rpdj5cdDxkaXYgY2xhc3M9ImRvd24tcGF5bWVudCI+JytFKyc8L2Rpdj5cdDxkaXYgY2xhc3M9InNlcGFyYXRvclBheSI+PC9kaXY+XHQ8ZGl2IGNsYXNzPSJjb250ZW50LWNvbnRhaW5lciI+XHRcdDxkaXYgaWQ9IicrdisnIiBjbGFzcz0iJytJKycgcGF5bWVudENhbGN1bGF0b3JQYXltZW50V3JhcHBlckNvbnRhaW5lciIgJytZKyc+XHRcdFx0PGRpdiBjbGFzcz0ibG93ZXN0LXBheW1lbnQiPjxzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiPicrQysiPC9zcGFuPiIrcSsnIDxpIGNsYXNzPSJmYXMgZmEtaW5mby1jaXJjbGUgaW5mby1pY29uIHBheW1lbnRUb29sdGlwIGxlZnRUb29sdGlwIiAnK1krJz48L2k+PC9kaXY+XHRcdFx0PGRpdiBjbGFzcz0iYWN0dWFsLXJhdGUiPicrVSsiJSAiK1YrJzwvZGl2Plx0XHRcdDxkaXYgY2xhc3M9InJhZGlvLWNvbnRhaW5lciI+XHRcdFx0XHQ8aW5wdXQgXHRcdFx0XHRcdHR5cGU9InJhZGlvIlx0XHRcdFx0XHQnKwpoKydcdFx0XHRcdFx0bmFtZT0ic2VsZWN0ZWRQYXltZW50V2l0aFRheGVzIlx0XHRcdFx0XHR2YWx1ZT0iJytrLnRlcm0rJyJcdFx0XHRcdFx0ZGF0YS1iYXNlcGF5bWVudD0iJytrLnBheW1lbnQrJyJcdFx0XHRcdFx0ZGF0YS1yZWFscGF5bWVudD0iJytrLnBheW1lbnRXaXRoVGF4ZXMrJyJcdFx0XHRcdFx0ZGF0YS1yYXRldHlwZT0iJytrLnJhdGVfdHlwZSsnIlx0XHRcdFx0XHRkYXRhLWRpc3BsYXllZHBheW1lbnQ9IicrRisnIlx0XHRcdFx0XHRkYXRhLXJlc2lkdWFsPSInK2sucmVzaWR1YWwrJyJcdFx0XHRcdFx0ZGF0YS10b3RhbGludGVyZXN0PSInK2sudG90YWxJbnRlcmVzdCsnIlx0XHRcdFx0XHRkYXRhLWx1eGVUYXhBbW91bnQ9Iicray5sdXhlVGF4QW1vdW50KyciXHRcdFx0XHRcdGRhdGEtZWZmZWN0aXZlUmF0ZT0iJytRKyciXHRcdFx0XHRcdGRhdGEtdG90YWxDb3N0PSInK1crJyJcdFx0XHRcdFx0ZGF0YS1yYXRlPSInK2sucmF0ZSsnIiAgICAgICAgICAgICAgICAgZGF0YS1yZXNpZHVhbD0iJysKay5yZXNpZHVhbFZhbHVlV2l0aFRheGVzKyciICAgICAgICAgICAgICAgICBkYXRhLXRvdGFsaW5jZW50aXZlPSInK3QrJyIgICAgICAgICAgICAgICAgIGRhdGEtZ3N0PSInK2suZ3N0KyciICAgICAgICAgICAgICAgICBkYXRhLWhzdD0iJytrLmhzdCsnIiAgICAgICAgICAgICAgICAgZGF0YS1wc3Q9Iicray5wc3QrJyJcdFx0XHRcdD5cdFx0XHRcdDxsYWJlbD4nK0ErIjwvbGFiZWw+XHRcdFx0PC9kaXY+XHRcdDwvZGl2PiIrSysiXHQ8L2Rpdj48L2Rpdj4iOzA9PWsucGF5bWVudFdpdGhUYXhlcyYmKEM9IiIpOyQoIiNwYXltZW50Q2FsY3VsYXRvclBheW1lbnRDb250YWluZXIiKS5hcHBlbmQobCk7JCgiI3BheW1lbnRDYWxjdWxhdG9yUGF5bWVudENvbnRhaW5lcldpdGhUYXhlcyIpLmFwcGVuZChDKTtCKyt9fSk7cj0kKCcjcGF5bWVudENhbGN1bGF0b3JDb250YWluZXIgaW5wdXRbbmFtZT0ic2VsZWN0ZWRQYXltZW50Il1bY2hlY2tlZF0nKS5sZW5ndGg\/JCgnI3BheW1lbnRDYWxjdWxhdG9yQ29udGFpbmVyIGlucHV0W25hbWU9InNlbGVjdGVkUGF5bWVudCJdW2NoZWNrZWRdJylbMF06CiQoJyNwYXltZW50Q2FsY3VsYXRvckNvbnRhaW5lciBpbnB1dFtuYW1lPSJzZWxlY3RlZFBheW1lbnQiXScpLmxhc3QoKVswXTskKHIpLnByb3AoImNoZWNrZWQiLCJjaGVja2VkIikudHJpZ2dlcigiY2hhbmdlIik7cj1wYXltZW50Q2FsY3VsYXRvckZvcm1hdE51bWJlcihhWzBdLnRvdGFsLnRvRml4ZWQoMCkpOyQoIiNwYXltZW50Q2FsY3VsYXRvck5vdGljZVRvdGFsIikudGV4dChyKTsibGVhc2UiPT1hWzBdLnR5cGU\/KHI9cGF5bWVudENhbGN1bGF0b3JGb3JtYXROdW1iZXIoYVswXS5rbV9hbGxvd2FuY2UudG9GaXhlZCgwKSksJCgiI3BheW1lbnRDYWxjdWxhdG9yTm90aWNlS00iKS50ZXh0KHIpLCQoIi5wYXltZW50Q2FsY3VsYXRvck5vdGljZUNhc2giKS5wcm9wKCJoaWRkZW4iLCEwKSwkKCIjcGF5bWVudENhbGN1bGF0b3JOb3RpY2VMZWFzZSIpLnNob3coKSwkKCIucGF5bWVudENhbGN1bGF0b3JOb3RpY2VGaW5hbmNlIikuaGlkZSgpKTooJCgiI3BheW1lbnRDYWxjdWxhdG9yTm90aWNlTGVhc2UiKS5oaWRlKCksCiQoIi5wYXltZW50Q2FsY3VsYXRvck5vdGljZUNhc2giKS5wcm9wKCJoaWRkZW4iLCEwKSwkKCIucGF5bWVudENhbGN1bGF0b3JOb3RpY2VGaW5hbmNlIikuc2hvdygpKTskKCIucGF5bWVudENhbGN1bGF0b3JDb21tb25Ob3RpY2UiKS5zaG93KCk7JCgiI3BheW1lbnRDYWxjdWxhdG9ySW5jbHVkZVRheENoZWNrIikuaXMoIjpjaGVja2VkIik\/KCQoIi5wYXltZW50Q2FsY3VsYXRvclRheGVJbmNsdWRlZCIpLnNob3coKSwkKCIucGF5bWVudENhbGN1bGF0b3JUYXhlTm90SW5jbHVkZWQiKS5oaWRlKCkpOigkKCIucGF5bWVudENhbGN1bGF0b3JUYXhlSW5jbHVkZWQiKS5oaWRlKCksJCgiLnBheW1lbnRDYWxjdWxhdG9yVGF4ZU5vdEluY2x1ZGVkIikuc2hvdygpKTswPGI\/KGI9cGF5bWVudENhbGN1bGF0b3JGb3JtYXROdW1iZXIoYi50b0ZpeGVkKDApKSwkKCIjcGF5bWVudENhbGN1bGF0b3JOb3RpY2VGZWVzIikudGV4dChiKSwkKCIjcGF5bWVudENhbGN1bGF0b3JOb3RpY2VJbmNsdWRlZEZlZXMiKS5zaG93KCkpOgokKCIjcGF5bWVudENhbGN1bGF0b3JOb3RpY2VJbmNsdWRlZEZlZXMiKS5oaWRlKCk7JCgiI3BheW1lbnRDYWxjdWxhdG9yQ3VzdG9tRmVlcyAjcGF5bWVudENhbGN1bGF0b3JDdXN0b21GZWVzTGlzdCIpLmVtcHR5KCk7bGV0IHo9JCgiPHVsPiIpO2QuY3VzdG9tRmVlcy5sZW5ndGgmJiQuZWFjaChkLmN1c3RvbUZlZXMsZnVuY3Rpb24odixoKXt2PSQoImJvZHkiKS5oYXNDbGFzcygiRU5HTElTSCIpPyhuZXcgVGV4dERlY29kZXIpLmRlY29kZShVaW50OEFycmF5LmZyb20oYXRvYihoLmRlc2NFbiksaz0+ay5jaGFyQ29kZUF0KDApKSk6KG5ldyBUZXh0RGVjb2RlcikuZGVjb2RlKFVpbnQ4QXJyYXkuZnJvbShhdG9iKGguZGVzY0ZyKSxrPT5rLmNoYXJDb2RlQXQoMCkpKTtoPXBheW1lbnRDYWxjdWxhdG9yRm9ybWF0TnVtYmVyKGguYW1vdW50LnRvRml4ZWQoMCkpO2g9RDJDVXRpbHMuRm9ybWF0LnRvUHJpY2UoaCk7aD0kKCI8bGk+IikudGV4dCh2KyIgOiAiKS5hcHBlbmQoaCk7di50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKCJhZG1pbiIpJiYKMT09PSQoIiNpc0RSU2l0ZSIpLmxlbmd0aCYmIjEiPT09JCgiI2lzRFJTaXRlIikudmFsKCkmJiEwPT09c3RvcmUuZ2V0KCJmaWVsZHMuVldfRFJfUFBfRU5BQkxFRCIpJiZoLmFwcGVuZCgkKCI8YT4iLHtocmVmOiJqYXZhc2NyaXB0OnZvaWQoMCkiLCJjbGFzcyI6ImRpc2NsYWltZXJzU3VwZXJzY3JpcHRzIGNhbGNEaXNjbGFpbWVyc1N1cGVyc2NyaXB0cyIsImRhdGEtZGlzY2xhaW1lci1kaXZpZCI6ImNhbGN1bGF0b3ItZGlzY2xhaW1lcnMtc3VwZXJzY3JpcHRzLTQtZGl2IiwiZGF0YS1kaXNjbGFpbWVyLWlkIjoiNCJ9KS5hcHBlbmQoJCgiPHN1cD4iKS50ZXh0KCI0IikpKTt6LmFwcGVuZChoKX0pO251bGwhPT1hWzBdLmx1eHVyeVRheCYmdm9pZCAwIT09YVswXS5sdXh1cnlUYXgmJjA8YVswXS5sdXh1cnlUYXgmJnouYXBwZW5kKGdldEx1eHVyeVRheExhYmVsKGFbMF0pKTt6LmNoaWxkcmVuKCkubGVuZ3RoPygkKCIjcGF5bWVudENhbGN1bGF0b3JDdXN0b21GZWVzICNwYXltZW50Q2FsY3VsYXRvckN1c3RvbUZlZXNMaXN0IikuYXBwZW5kKHopLAokKCIjcGF5bWVudENhbGN1bGF0b3JDdXN0b21GZWVzIikuc2hvdygpKTokKCIjcGF5bWVudENhbGN1bGF0b3JDdXN0b21GZWVzIikuaGlkZSgpO2I9ImxlYXNlIj09YVswXS50eXBlPygkKCIjcGF5bWVudENhbGN1bGF0b3JMZWFzZVRleHQiKS52YWwoKXx8IiIpLnRvTG93ZXJDYXNlKCk6KCQoIiNwYXltZW50Q2FsY3VsYXRvckZpbmFuY2VUZXh0IikudmFsKCl8fCIiKS50b0xvd2VyQ2FzZSgpOyQoIiNwYXltZW50Q2FsY3VsYXRvck5vdGljZVR5cGUiKS50ZXh0KGIpOzA8YVswXS5yZWJhdGU\/KGE9JCgiYm9keSIpLmhhc0NsYXNzKCJFTkdMSVNIIik\/IiQiK2FbMF0ucmViYXRlOmFbMF0ucmViYXRlKyIgJCIsJCgiI3BheW1lbnRDYWxjdWxhdG9yTm90aWNlUmViYXRlIikudGV4dChhKSwkKCIjcGF5bWVudENhbGN1bGF0b3JOb3RpY2VJbmNsdWRlZFJlYmF0ZXMiKS5zaG93KCkpOiQoIiNwYXltZW50Q2FsY3VsYXRvck5vdGljZUluY2x1ZGVkUmViYXRlcyIpLmhpZGUoKTtpZihkLmNvbmRpdGlvbmFsUmViYXRlcyYmCjA8ZC5jb25kaXRpb25hbFJlYmF0ZXMubGVuZ3RoKXt2YXIgRD0iIjtkLmNvbmRpdGlvbmFsUmViYXRlcy5mb3JFYWNoKGZ1bmN0aW9uKHYpe3ZhciBoPXBheW1lbnRDYWxjdWxhdG9yRm9ybWF0TnVtYmVyKHYuYW1vdW50LnRvU3RyaW5nKCkpO0QrPSI8bGk+Iit2Lm5hbWUrIjogLSIrRDJDVXRpbHMuRm9ybWF0LnRvUHJpY2UoaCkrIjwvbGk+In0pO0QmJiQoIiNwYXltZW50Q2FsY3VsYXRvck5vdGljZUluY2x1ZGVkUmViYXRlcyIpLmFmdGVyKCc8ZGl2IGlkPSJwYXltZW50Q2FsY3VsYXRvck5vdGljZUNvbmRpdGlvbmFsUmViYXRlcyIgY2xhc3M9InBheW1lbnRDYWxjdWxhdG9yTm90aWNlU2VjdGlvbiI+PHN0cm9uZz4nKygkKCJib2R5IikuaGFzQ2xhc3MoIkVOR0xJU0giKT8iU2VsZWN0ZWQgQ29uZGl0aW9uYWwgUmViYXRlczoiOiJSYWJhaXMgY29uZGl0aW9ubmVscyBzw6lsZWN0aW9ubsOpOiIpKyI8L3N0cm9uZz48dWw+IitEKyI8L3VsPjwvZGl2PiIpfWVsc2UgJCgiI3BheW1lbnRDYWxjdWxhdG9yTm90aWNlQ29uZGl0aW9uYWxSZWJhdGVzIikucmVtb3ZlKCk7CnNldFBheW1lbnRDYWxjdWxhdG9yUG9wdXBUb29sdGlwKCl9CmZ1bmN0aW9uIHNldFBheW1lbnRDYWxjdWxhdG9yUG9wdXBUb29sdGlwKCl7aWYoIjEiPT0kKCIjaXNtb2JpbGUiKS52YWwoKSkkKCIjcGF5bWVudENhbGN1bGF0b3JDb250YWluZXIgLnBheW1lbnRDYWxjdWxhdG9yUGF5bWVudFdyYXBwZXIgLnBheW1lbnRDYWxjdWxhdG9yUGF5bWVudFdyYXBwZXJDb250YWluZXIgLnBheW1lbnRUb29sdGlwIikuZWFjaChmdW5jdGlvbihiKXt0cnl7dmFyIGU9JCh0aGlzKS5hdHRyKCJkYXRhLXRvb2x0aXAiKSxkPSQodGhpcykuaGFzQ2xhc3MoImxlZnRUb29sdGlwIik\/Indlc3QiOiJlYXN0IjskKHRoaXMpLmRhcmtUb29sdGlwKHtjb250ZW50OmUsZ3Jhdml0eTpkLHRoZW1lOiJsaWdodCIsdHJpZ2dlcjoiY2xpY2siLGFuaW1hdGlvbjoiZmxpcEluIn0pfWNhdGNoKGMpe319KTtlbHNle2Zvcih2YXIgYT0wOzU+YTthKyspJCgiI2Rhcmt0b29sdGlwLXBheW1lbnQiK2EpLmxlbmd0aCYmKCQoIiNkYXJrdG9vbHRpcC1wYXltZW50IithKS5yZW1vdmUoKSwKJCgiI2Rhcmt0b29sdGlwLXBheW1lbnQiK2ErIndpdGhUYXhlcyIpLnJlbW92ZSgpKTskKCIjcGF5bWVudENhbGN1bGF0b3JDb250YWluZXIgLnBheW1lbnRDYWxjdWxhdG9yUGF5bWVudFdyYXBwZXIgLnBheW1lbnRDYWxjdWxhdG9yUGF5bWVudFdyYXBwZXJDb250YWluZXIiKS5lYWNoKGZ1bmN0aW9uKCl7dHJ5e3ZhciBiPSQodGhpcykuYXR0cigiZGF0YS10b29sdGlwIiksZT0kKHRoaXMpLmZpbmQoIi5wYXltZW50VG9vbHRpcCIpLGQ9ImVhc3QiO2UuaGFzQ2xhc3MoImxlZnRUb29sdGlwIik\/ZD0id2VzdCI6ZS5oYXNDbGFzcygicmlnaHRUb29sdGlwIikmJihkPSJlYXN0Iik7JCh0aGlzKS5kYXJrVG9vbHRpcCh7Y29udGVudDpiLGdyYXZpdHk6ZCx0aGVtZToibGlnaHQiLHRyaWdnZXI6ImhvdmVyIn0pfWNhdGNoKGMpe319KX19CmZ1bmN0aW9uIHNldFBheW1lbnRDYWxjdWxhdG9yVmVoaWNsZUluZm8oYSl7dmFyIGI9Z2V0UG9wQ29udGFpblNldHRpbmdzKCk7Yi52ZWhpY2xlSW5mbz1hOyQoIiNwYXltZW50Q2FsY3VsYXRvclZlaGljbGVJbmZvWWVhciIpLnRleHQoYS55ZWFyKTt2YXIgZT1hLkNGTW9kZWxOYW1lfHxhLm1vZGVsLGQ9YS5tYWtlLnRvVXBwZXJDYXNlKCkrIiAiK2UudG9VcHBlckNhc2UoKTsiTUVSQ0VERVMtQkVOWiIhPWEubWFrZS50b1VwcGVyQ2FzZSgpfHwvXGJzcHJpbnRlclxiL2kudGVzdChlKXx8KGQ9YS5tYWtlLnRvVXBwZXJDYXNlKCkpO2lmKCJidWlsZGFuZHByaWNlLmh0bWwiPT0kKCIjUEFHRUlEIikudmFsKCl8fGIuaGFzT3duUHJvcGVydHkoIm5vVHJpbVNlbGVjdCIpJiYoITA9PT1iLm5vVHJpbVNlbGVjdHx8InRydWUiPT09Yi5ub1RyaW1TZWxlY3QpfHwidXNlZGNhcnMuaHRtbCI9PSQoIiNQQUdFSUQiKS52YWwoKXx8ImNhcmRldGFpbC5odG1sIj09JCgiI1BBR0VJRCIpLnZhbCgpKWQrPQoiICIrYS5DRlN0eWxlTmFtZS50b1VwcGVyQ2FzZSgpLCQoIiNwYXltZW50Q2FsY3VsYXRvclRyaW1TZWxlY3QiKS5oaWRlKCk7JCgiI3BheW1lbnRDYWxjdWxhdG9yVmVoaWNsZUluZm9NYWtlTW9kZWxUcmltIikudGV4dChkKTtlPWEubWFrZSsifHx8IitlKyJ8fHwiK2EueWVhcjtiLmhhc093blByb3BlcnR5KCJzdG9ja051bWJlciIpJiYoZSs9Inx8fChTdG9jazoiK2Iuc3RvY2tOdW1iZXIrIikiKTtDb29raWVzLnNldCgibGFzdHZpZXdlZHZlaGljbGUiLGUsbnVsbCwiLyIpO2EuaW1hZ2VzWzBdJiYoZT0oYS5pbWFnZXNbMF0rIiIpLnJlcGxhY2UoL2h0dHAocz8pOlwvXC9tZWRpYS4oY2hyb21lZGF0YXxjYXJib29rKS5jb21cL01lZGlhR2FsbGVyeVwvbWVkaWFcLy8sIi8vY2FyaW1hZ2VzLmQyY21lZGlhLmNhL25ld2NhcnMvY2IlQ0IvJU1BS0UvJU1PREVMLyVZRUFSLyIpLnJlcGxhY2UoIiVDQiIsTWF0aC5yb3VuZCg5OSpNYXRoLnJhbmRvbSgpKSsxRTUpLnJlcGxhY2UoIiVNQUtFIiwKYS5tYWtlLnJlcGxhY2UoIi0iLCJfIikpLnJlcGxhY2UoIiVNT0RFTCIsYS5tb2RlbC5yZXBsYWNlKCItIiwiXyIpKS5yZXBsYWNlKCIlWUVBUiIsYS55ZWFyKSwkKCIjcGF5bWVudENhbGN1bGF0b3JWZWhpY2xlSW1hZ2VEaXYiKS5odG1sKCc8aW1nIGlkPSJwYXltZW50Q2FsY3VsYXRvclZlaGljbGVJbWFnZSIgc3JjPSInK2UucmVwbGFjZSgvJi9nLCImYW1wOyIpLnJlcGxhY2UoLzwvZywiJmx0OyIpLnJlcGxhY2UoLz4vZywiJmd0OyIpLnJlcGxhY2UoLyIvZywiJnF1b3Q7IikucmVwbGFjZSgvJy9nLCImIzAzOTsiKSsnIiBjbGFzcz0icGF5bWVudENhbGN1bGF0b3JWZWhpY2xlSW1hZ2UiPicpKTskKCIjcGF5bWVudENhbGN1bGF0b3JUcmltU2VsZWN0IG9wdGlvbiIpLnJlbW92ZSgpOygidW5kZWZpbmVkIiE9dHlwZW9mIG5ld2NhckRldGFpbHM\/bmV3Y2FyRGV0YWlscy5hbGxTdHlsZXM6YS5tb2RlbEpTT04uc3R5bGVzKS5mb3JFYWNoKGZ1bmN0aW9uKGMpeyQoIiNwYXltZW50Q2FsY3VsYXRvclRyaW1TZWxlY3QiKS5hcHBlbmQobmV3IE9wdGlvbihjLkNGU3R5bGVOYW1lLApjLmlkKSl9KTskKCIjcGF5bWVudENhbGN1bGF0b3JUcmltU2VsZWN0IikudmFsKGIuc3R5bGVpZCk7Y2FsY1VwZGF0ZVBheW1lbnRJbmZvKCl9CmZ1bmN0aW9uIGNhbGNVcGRhdGVTdHlsZUluZm8oYSl7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBuZXdjYXJEZXRhaWxzJiZuZXdjYXJEZXRhaWxzLmFjdGl2ZU1vZGVsKXt2YXIgYj1uZXdjYXJEZXRhaWxzLmFsbFN0eWxlcy5maWx0ZXIoZnVuY3Rpb24oZCl7cmV0dXJuIGQuaWQ9PWF9KVswXTtiPWJ8fG5ld2NhckRldGFpbHMuYWN0aXZlTW9kZWwuc3R5bGVzWzBdO2IubWFrZT1uZXdjYXJEZXRhaWxzLmFjdGl2ZU1vZGVsLm1ha2U7Yi5tb2RlbD1uZXdjYXJEZXRhaWxzLmFjdGl2ZU1vZGVsLm1vZGVsO2IuaW1hZ2VzPW5ld2NhckRldGFpbHMuYWN0aXZlTW9kZWwuaW1hZ2VzO3NldFBheW1lbnRDYWxjdWxhdG9yVmVoaWNsZUluZm8oYil9ZWxzZXtiPXNldHRpbmdzLmhhc093blByb3BlcnR5KCJzdG9ja051bWJlciIpP3NldHRpbmdzLnN0b2NrTnVtYmVyOiIiO3ZhciBlPSgkKCJib2R5IikuaGFzQ2xhc3MoIkVOR0xJU0giKT8iL2VuIjoiL2ZyIikrIi9hamF4L2dldFZlaGljbGVKc29uQnlTdHlsZUlEP3dzd2lkdGg9MCI7CiQuYWpheCh7dXJsOmUsdHlwZToiUE9TVCIsZGF0YVR5cGU6IkpTT04iLGRhdGE6e3N0eWxlaWQ6YSx2ZWhpY2xlaWQ6Yn0sc3VjY2VzczpmdW5jdGlvbihkKXtzZXRQYXltZW50Q2FsY3VsYXRvclZlaGljbGVJbmZvKGQpfX0pfX0KZnVuY3Rpb24gcGF5bWVudENhbGN1bGF0b3JQb3B1cEluaXQoKXt2YXIgYT1nZXRQb3BDb250YWluU2V0dGluZ3MoKTskKCIjcGF5bWVudENhbGN1bGF0b3JQYXltZW50VHlwZSBsaSIpLnJlbW92ZUNsYXNzKCJhY3RpdmVQYXltZW50VHlwZSIpOyQoIiNwYXltZW50Q2FsY3VsYXRvcklzTmV3UG9wdXBFbmFibGVkIikudmFsKCk7IiIhPWEucHJvbW9CdXR0b25UZXh0JiYiMSIhPT1Db29raWVzLmdldCgicG9wdXBGb3JtRmlsbGVkIikmJiQoIiNwYXltZW50Q2FsY3VsYXRvcklzTmV3UG9wdXBFbmFibGVkIikudmFsKCk\/KC0xIT09YS5wcm9tb0J1dHRvblRleHQuaW5kZXhPZigiPGJyIikmJihhLnByb21vQnV0dG9uVGV4dD1hLnByb21vQnV0dG9uVGV4dC5zdWJzdHIoMCxhLnByb21vQnV0dG9uVGV4dC5pbmRleE9mKCI8YnIiKSkpLCQoIiNwYXltZW50Q2FsY3VsYXRvckNhbGxUb0FjdGlvbkNvbnRhaW5lciBhIikuaHRtbChhLnByb21vQnV0dG9uVGV4dCksJCgiI3BheW1lbnRDYWxjdWxhdG9yQ2FsbFRvQWN0aW9uQ29udGFpbmVyIikuc2hvdygpKToKJCgiI3BheW1lbnRDYWxjdWxhdG9yQ2FsbFRvQWN0aW9uQ29udGFpbmVyIikuaGlkZSgpO2xldCBiPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNwYXltZW50Q2FsY3VsYXRvclBheW1lbnRUeXBlIGxpW2RhdGEtdHlwZT0ibGVhc2luZyJdJyksZT1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjcGF5bWVudENhbGN1bGF0b3JQYXltZW50VHlwZSBsaVtkYXRhLXR5cGU9ImZpbmFuY2luZyJdJyksZD1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjcGF5bWVudENhbGN1bGF0b3JQYXltZW50VHlwZSBsaVtkYXRhLXR5cGU9ImNhc2giXScpO2IuaGlkZGVuPSIxIj09KGEubm9Nb3RvaW5zaWdodExlYXNlUGF5bWVudHN8fCExKTtlLmhpZGRlbj0iMSI9PShhLm5vTW90b2luc2lnaHRGaW5hbmNlUGF5bWVudHN8fCExKTtkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjcGF5bWVudENhbGN1bGF0b3JDb250YWluZXIgLmNhbGMtcGF5bWVudC1jYXNoIikuaGlkZGVuPSEwO3NldFRpbWVvdXQoKCk9PntpZihfbG9jYWxTdG9yYWdlR2V0KCJ0cmFkZWluX3N1Ym1pdF9kYXRhIikmJgoiIj09JCgiI3BheW1lbnRUcmFkZUluVmFsdWUiKS52YWwoKSl7dmFyIGM9SlNPTi5wYXJzZShfbG9jYWxTdG9yYWdlR2V0KCJ0cmFkZWluX3N1Ym1pdF9kYXRhIikpOyQoIiNwYXltZW50VHJhZGVJblZhbHVlIikudmFsKGMudmFsdWUpO19sb2NhbFN0b3JhZ2VHZXQoInRyYWRlaW5fY3VycmVudF92YWx1ZSIpJiYoYz1KU09OLnBhcnNlKF9sb2NhbFN0b3JhZ2VHZXQoInRyYWRlaW5fY3VycmVudF92YWx1ZSIpKSwkKCIjcGF5bWVudFRyYWRlSW5WYWx1ZSIpLmF0dHIoImRhdGEtY3VycmVudCIsYy52YWx1ZSkpfWlmKCIiIT0kKCIjcGF5bWVudFRyYWRlSW5WYWx1ZSIpLnZhbCgpJiYwPCQoIiNwYXltZW50VHJhZGVJblZhbHVlIikudmFsKCkpe2M9cGFyc2VJbnQoJCgiI3BheW1lbnRUcmFkZUluVmFsdWUiKS52YWwoKSl8fDA7dmFyIGY9cGFyc2VJbnQoJCgiI3BheW1lbnRUcmFkZUluVmFsdWUiKS5hdHRyKCJkYXRhLWN1cnJlbnQiKSl8fGM7JCgiLnBheW1lbnRDYWxjdWxhdG9yVHJhZGVJblZhbHVlIikudmFsKGYpOwokKCIucGF5bWVudENhbGN1bGF0b3JUcmFkZUluVmFsdWUiKS5hdHRyKCJtYXgiLGMpOyQoIi5wYXltZW50Q2FsY3VsYXRvclRyYWRlSW5CdXR0b24iKS5oaWRlKCk7JCgiLnBheW1lbnRDYWxjdWxhdG9yVHJhZGVJblZhbHVlIikuc2hvdygpfWVsc2UgJCgiLnBheW1lbnRDYWxjdWxhdG9yVHJhZGVJblZhbHVlIikudmFsKCIiKSwkKCIucGF5bWVudENhbGN1bGF0b3JUcmFkZUluQnV0dG9uIikuc2hvdygpLCQoIi5wYXltZW50Q2FsY3VsYXRvclRyYWRlSW5WYWx1ZSIpLmhpZGUoKTskKCIucGF5bWVudENhbGN1bGF0b3JUcmFkZUluVmFsdWUiKS50cmlnZ2VyKCJibHVyIik7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBDdGFUcmFjayYmQ3RhVHJhY2suZ2V0VHJhY2tTdGVwKCJQYXltZW50Q2FsY3VsYXRvckFjdGlvbkJveCIpKXtsZXQgdT1uZXcgQ3VzdG9tRXZlbnQoInRyYWNrc3RlcC5jb21wbGV0ZSIse2RldGFpbDp7c3RlcElkOiJQYXltZW50Q2FsY3VsYXRvckFjdGlvbkJveCIsZm9yY2VVcGRhdGU6ITAsCm9uQ29tcGxldGU6bj0+e24uZGF0YXNldC5jb21wbF90eHRfZnI9bi5kYXRhc2V0LmluaXRfY29tcGxfdHh0X2ZyLnJlcGxhY2UoInskUEFZTUVOVFJBVEV9IixjdGFQYXltZW50VGV4dEZyWzBdKS5yZXBsYWNlKCJ7JFBBWU1FTlRZUEV9IixjdGFQYXltZW50VGV4dEZyWzFdKTtuLmRhdGFzZXQuY29tcGxfdHh0X2VuPW4uZGF0YXNldC5pbml0X2NvbXBsX3R4dF9lbi5yZXBsYWNlKCJ7JFBBWU1FTlRSQVRFfSIsY3RhUGF5bWVudFRleHRFblswXSkucmVwbGFjZSgieyRQQVlNRU5UWVBFfSIsY3RhUGF5bWVudFRleHRFblsxXSk7bj17cGF5bWVudDp7fX07X2xvY2FsU3RvcmFnZUdldCgicmV0YWlsX3RyYWNrX2RhdGEiKSYmKG49SlNPTi5wYXJzZShfbG9jYWxTdG9yYWdlR2V0KCJyZXRhaWxfdHJhY2tfZGF0YSIpKSk7bGV0IHA9IkZSRU5DSCI9PT0kKCIjYWN0aXZlc2l0ZWxhbmd1YWdlIikudmFsKCk\/Y3RhUGF5bWVudFRleHRGcjpjdGFQYXltZW50VGV4dEVuO24ucGF5bWVudD17bGlzdFByaWNlOnBbMl18fAoiIixwYXltZW50OnBbMF18fCIiLHJhdGU6cFsxXXx8IiIscGF5bWVudFZhbHVlOmN0YVBheW1lbnRWYWx1ZXN8fFtdfTtfbG9jYWxTdG9yYWdlU2V0KCJyZXRhaWxfdHJhY2tfZGF0YSIsSlNPTi5zdHJpbmdpZnkobiksMzApO0Nvb2tpZXMuc2V0KCJjdGFfZGF0YV92YWxpZCIsMSwxLCIvIil9fX0pO2M9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI3BheW1lbnRDYWxjdWxhdG9yQ2FsbFRvQWN0aW9uQ29udGFpbmVyIGEiKTtmPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNwYXltZW50Q2FsY3VsYXRvckNhbGxUb0FjdGlvbkNvbmZpcm0iKTtudWxsIT1mJiYoZi5oaWRkZW4mJihmLmhpZGRlbj0hMSksbnVsbCE9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI3BheW1lbnRDYWxjdWxhdG9yQ2FsbFRvQWN0aW9uQ29udGFpbmVyIikmJihkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjcGF5bWVudENhbGN1bGF0b3JDYWxsVG9BY3Rpb25Db250YWluZXIiKS5jbGFzc0xpc3QucmVtb3ZlKCJmbGV4LWNlbnRlciIpLApkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjcGF5bWVudENhbGN1bGF0b3JDYWxsVG9BY3Rpb25Db250YWluZXIiKS5jbGFzc0xpc3QuYWRkKCJmbGV4LWVuZCIsIi1tcjUiKSksYz1mLnF1ZXJ5U2VsZWN0b3IoImEiKSk7Yy5pbm5lclRleHQ9IkVOR0xJU0giPT0kKCIjYWN0aXZlc2l0ZWxhbmd1YWdlIikudmFsKCk\/IkNvbmZpcm0iOiJDb25maXJtZXIiO2MuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLG49PntuLnByZXZlbnREZWZhdWx0KCk7bj0iY2FzaCI9PT0kKCIjcGF5bWVudENhbGN1bGF0b3JQYXltZW50VHlwZSAuYWN0aXZlUGF5bWVudFR5cGUiKS5hdHRyKCJkYXRhLXR5cGUiKTskKCIjcGF5bWVudENhbGN1bGF0b3JQYXltZW50Q29udGFpbmVyIikuaXMoIjpoaWRkZW4iKSYmIW58fGRvY3VtZW50LmRpc3BhdGNoRXZlbnQodSk7JCgiI3BheW1lbnRDYWxjdWxhdG9yUG9wdXBDb250YWluZXIiKS5wb3B1cGl6ZSgpLmNsb3NlKCl9KTtmPW49PntuPSJjYXNoIj09PSQoIiNwYXltZW50Q2FsY3VsYXRvclBheW1lbnRUeXBlIC5hY3RpdmVQYXltZW50VHlwZSIpLmF0dHIoImRhdGEtdHlwZSIpOwokKCIjcGF5bWVudENhbGN1bGF0b3JQYXltZW50Q29udGFpbmVyIikuaXMoIjpoaWRkZW4iKSYmIW58fGRvY3VtZW50LmRpc3BhdGNoRXZlbnQodSl9O2xldCBtPWEucGF5bWVudFR5cGU7Q29va2llcy5nZXQoInBheW1lbnRDYWxjdWxhdG9yU2VsZWN0ZWRPcHRpb25zIikmJihjPUNvb2tpZXMuZ2V0KCJwYXltZW50Q2FsY3VsYXRvclNlbGVjdGVkT3B0aW9ucyIpLnNwbGl0KCItIiksbT0idW5kZWZpbmVkIiE9Y1swXT9jWzBdOm0sbT0ibGVhc2luZyI9PT1tPyJsZWFzZSI6ImZpbmFuY2luZyI9PT1tPyJmaW5hbmNlIjptKTsibGVhc2UiPT1tJiZiP2IuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoImNsaWNrIix7ZGV0YWlsOntpc0ZpcnN0UnVuOiEwfX0pKToiZmluYW5jZSI9PW0mJmU\/ZS5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgiY2xpY2siLHtkZXRhaWw6e2lzRmlyc3RSdW46ITB9fSkpOmQuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoImNsaWNrIiwKe2RldGFpbDp7aXNGaXJzdFJ1bjohMH19KSk7JCgiLnJldmVhbC1tb2RhbCIpLm9mZigicG9wdXBpemVyLmNsb3NlIixmKS5vbigicG9wdXBpemVyLmNsb3NlIixmKTskKCIjcGF5bWVudENhbGN1bGF0b3JDYWxsVG9BY3Rpb25Db250YWluZXIiKS5zaG93KCl9fSwxMDApO2NhbGNVcGRhdGVTdHlsZUluZm8oYS5zdHlsZWlkKX0KZnVuY3Rpb24gY2FsY1VwZGF0ZVBheW1lbnRJbmZvKCl7dmFyIGE9Z2V0UG9wQ29udGFpblNldHRpbmdzKCksYj0oJCgiYm9keSIpLmhhc0NsYXNzKCJFTkdMSVNIIik\/Ii9lbiI6Ii9mciIpKyIvYWpheC9nZXRQYXltZW50RGF0YUZvclN0eWxlSUQ\/d3N3aWR0aD0wIixlPWEucGF5bWVudFR5cGUsZD0wLGM9cGFyc2VJbnQoJCgiLnBheW1lbnRDYWxjdWxhdG9yVHJhZGVJblZhbHVlIikudmFsKCl8fDApLGY9bnVsbCx1PW51bGwsbT1nZXRPcHRpb25zQW1vdW50KGEpLG49Z2V0QWNjZXNzb3JpZXNBbW91bnQoYSkscD1nZXRTZWxlY3RlZEFjY2Vzc29yaWVzKGEpLHg9Z2V0UHJvdGVjdGlvblBsYW5zQW1vdW50KGEpLHk9YS5oYXNPd25Qcm9wZXJ0eSgibm9UcmltU2VsZWN0IikmJighMD09PWEubm9UcmltU2VsZWN0fHwidHJ1ZSI9PT1hLm5vVHJpbVNlbGVjdCl8fCJ1c2VkY2Fycy5odG1sIj09JCgiI1BBR0VJRCIpLnZhbCgpfHwiY2FyZGV0YWlsLmh0bWwiPT0KJCgiI1BBR0VJRCIpLnZhbCgpLHI9ITEsdD1hLmhhc093blByb3BlcnR5KCJzdG9ja051bWJlciIpP2Euc3RvY2tOdW1iZXI6IiIsQT1hLmhhc093blByb3BlcnR5KCJ2aW4iKT9hLnZpbjoiIjtpZih5JiYhdCl7dmFyIHc9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInBob25lc3RvY2tudW1iZXIiKTt3JiYodD13LnZhbHVlfHwiIil9eSYmIUEmJih3PWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwaG9uZXZpbiIpKSYmKEE9dy52YWx1ZXx8IiIpO3kmJiFhLnN0eWxlaWQmJih3PWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJhY3RpdmVTdHlsZUlEIikpJiYoYS5zdHlsZWlkPXcudmFsdWV8fGEuc3R5bGVpZCk7Q29va2llcy5nZXQoInBheW1lbnRDYWxjdWxhdG9yU2VsZWN0ZWRPcHRpb25zIikmJih1PUNvb2tpZXMuZ2V0KCJwYXltZW50Q2FsY3VsYXRvclNlbGVjdGVkT3B0aW9ucyIpLnNwbGl0KCItIiksZT0idW5kZWZpbmVkIiE9dVswXT91WzBdOmUscj11WzFdLGQ9cGFyc2VJbnQodVs0XSktCmMsZD0wPmQ\/MDpkLGY9dVsyXSx1PXVbM10pO2Eubm9Nb3RvaW5zaWdodExlYXNlUGF5bWVudHMmJiJsZWFzZSI9PWUmJihlPSJmaW5hbmNlIixyPSExLGQ9MCx1PWY9bnVsbCk7YS5ub01vdG9pbnNpZ2h0RmluYW5jZVBheW1lbnRzJiZbImZpbmFuY2UiLCJmaW5hbmNpbmciXS5pbmNsdWRlcyhlKSYmKGU9ImxlYXNlIixyPSExLGQ9MCx1PWY9bnVsbCk7bGV0IEI9W107ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiLmNvbmRpdGlvbmFsLXJlYmF0ZS1jaGVja2JveCIpLmZvckVhY2goZnVuY3Rpb24oZyl7Zy5jaGVja2VkJiYoZz1nLmdldEF0dHJpYnV0ZSgiZGF0YS1jb25kaXRpb25hbC1yZWJhdGUtaWQiKSkmJkIucHVzaChnKX0pO2NhbGNVcGRhdGVQYXltZW50WGhyPSQuYWpheCh7dXJsOmIsdHlwZToiUE9TVCIsZGF0YVR5cGU6IkpTT04iLGRhdGE6e3N0eWxlaWQ6YS5zdHlsZWlkLHBheW1lbnRUeXBlOmUsZG93bnBheW1lbnQ6YytkLG9wdGlvbnNBbW91bnQ6bSxwYXltZW50RnJlcXVlbmN5OmYsCmttQWxsb3dhbmNlOnUsaXNJbnZlbnRvcnk6eSxvcHRpb25zOm0sc246dCx2aW46QSxjb25kaXRpb25hbFJlYmF0ZUlkczpCLmpvaW4oIiwiKSxhY2Nlc3NvcmllczpuLHNlbGVjdGVkQWNjZXNzb3JpZXM6cCxwcm90ZWN0aW9uUGxhbnM6eH0sc3VjY2VzczpmdW5jdGlvbihnKXtnLnNlbGVjdGVkVGVybT1yOyQoIiNtYXhEb3duUGF5bWVudEZvclRyaW0iKS52YWwoZy5tYXhEb3duKTskKCIjbWF4RG93blBheW1lbnRGaW5hbmNlRm9yVHJpbSIpLnZhbChnLm1heERvd25GaW5hbmNlKTskKCIjcGF5bWVudENhbGN1bGF0b3JLbUFsbG93YW5jZSBvcHRpb24iKS5yZW1vdmUoKTskKCIjcGF5bWVudENhbGN1bGF0b3JEb3duUGF5bWVudCIpLnZhbChkKTtlPSJsZWFzZSI9PT1lPyJsZWFzaW5nIjoiZmluYW5jZSI9PT1lPyJmaW5hbmNpbmciOmU7ImNhc2giPT09ZSYmKCQoIiNwYXltZW50Q2FsY3VsYXRvclBheW1lbnRDb250YWluZXIiKS5oaWRlKCksJCgiI3BheW1lbnRDYWxjdWxhdG9yUGF5bWVudENvbnRhaW5lcldpdGhUYXhlcyIpLmhpZGUoKSk7CmcuY3VycmVudFBheW1lbnQmJjAhPT1nLmN1cnJlbnRQYXltZW50Lmxlbmd0aHx8ImNhc2giPT09ZT8oJCgiI3BheW1lbnRDYWxjdWxhdG9yRXJyb3JNZXNzYWdlIikuaGlkZSgpLCQoIiNwYXltZW50Q2FsY3VsYXRvckRvd25QYXltZW50RXJyb3JNZXNzYWdlIikuaGlkZSgpLCQoIiNwYXltZW50Q2FsY3VsYXRvckRvd25QYXltZW50RXJyb3JNZXNzYWdlRmluYW5jZSIpLmhpZGUoKSwkKCIjcGF5bWVudENhbGN1bGF0b3JEb3duUGF5bWVudEVycm9yTWVzc2FnZUxlYXNlIikuaGlkZSgpLCQoIiNwYXltZW50Q2FsY3VsYXRvck9wdGlvbkNvbnRhaW5lciIpLnNob3coKSwkKCIjcGF5bWVudENhbGN1bGF0b3JOb3RpY2VDb250YWluZXIiKS5wcm9wKCJoaWRkZW4iLCExKSxnLmN1cnJlbnRQYXltZW50JiYwPGcuY3VycmVudFBheW1lbnQubGVuZ3RoJiYoJCgiI3BheW1lbnRDYWxjdWxhdG9ySW50ZXJ2YWwiKS52YWwoZy5jdXJyZW50UGF5bWVudFswXS5pbnRlcnZhbCksZT1lfHwoImxlYXNlIj09PQpnLmN1cnJlbnRQYXltZW50WzBdLnR5cGU\/ImxlYXNpbmciOiJmaW5hbmNpbmciKSkpOigkKCIjcGF5bWVudENhbGN1bGF0b3JPcHRpb25Db250YWluZXIiKS5oaWRlKCksJCgiI3BheW1lbnRDYWxjdWxhdG9yUGF5bWVudENvbnRhaW5lciIpLmhpZGUoKSwkKCIjcGF5bWVudENhbGN1bGF0b3JQYXltZW50Q29udGFpbmVyV2l0aFRheGVzIikuaGlkZSgpLCQoIiNwYXltZW50Q2FsY3VsYXRvck5vdGljZUNvbnRhaW5lciIpLnByb3AoImhpZGRlbiIsITApLCQoIiNwYXltZW50Q2FsY3VsYXRvckVycm9yTWVzc2FnZSIpLnNob3coKSk7c2hvd0hpZGVQYXltZW50U2VjdGlvbihnLGUpO3BvcHVsYXRlTGVhc2VLTUFsbG93YW5jZURyb3Bkb3duKGcpOyJsZWFzaW5nIj09ZT8kKCIucGF5bWVudENhbGN1bGF0b3JLbUFsbG93YW5jZUNvbnRhaW5lciIpLnNob3coKTokKCIucGF5bWVudENhbGN1bGF0b3JLbUFsbG93YW5jZUNvbnRhaW5lciIpLmhpZGUoKTtnZXRDYXNoUHJpY2VCbG9jayhnKTsKImNhc2giPT09ZT9lbmFibGVDYXNoT3B0aW9uKCk6Zy5jdXJyZW50UGF5bWVudCYmZy5jdXJyZW50UGF5bWVudC5sZW5ndGgmJihjYWxjQ3VyUGF5bWVudD1nLHNob3dQYXltZW50cyhnLmN1cnJlbnRQYXltZW50LGcucGF5bWVudEZlZXMsZy5tYWtlaWQsZykpfSxlcnJvcjpmdW5jdGlvbihnLHEseil7ImFib3J0IiE9PXEmJmNvbnNvbGUuZXJyb3IoImNhbGNVcGRhdGVQYXltZW50SW5mbzo6IFBheW1lbnQgY2FsY3VsYXRpb24gZXJyb3I6IixxLHopfX0pfQpmdW5jdGlvbiBlbmFibGVDYXNoT3B0aW9uKCl7JCgiI3BheW1lbnRDYWxjdWxhdG9yUGF5bWVudFR5cGUgbGkiKS5yZW1vdmVDbGFzcygiYWN0aXZlUGF5bWVudFR5cGUiKTskKCIjcGF5bWVudENhbGN1bGF0b3JQYXltZW50VHlwZSBsaVtkYXRhLXR5cGU9J2Nhc2gnXSIpLmFkZENsYXNzKCJhY3RpdmVQYXltZW50VHlwZSIpOyQoIi5wYXltZW50Q2FsY3VsYXRvcklucHV0Q29udGFpbmVyIikuaGlkZSgpOyQoIiNwYXltZW50Q2FsY3VsYXRvclBheW1lbnRDb250YWluZXIiKS5oaWRlKCk7JCgiI3BheW1lbnRDYWxjdWxhdG9yUGF5bWVudENvbnRhaW5lcldpdGhUYXhlcyIpLmhpZGUoKTskKCIjcGF5bWVudENhbGN1bGF0b3JOb3RpY2VMZWFzZSIpLmhpZGUoKTskKCIucGF5bWVudENhbGN1bGF0b3JOb3RpY2VGaW5hbmNlIikuaGlkZSgpOyQoIiNwYXltZW50Q2FsY3VsYXRvckN1c3RvbUZlZXMiKS5oaWRlKCk7JCgiLnBheW1lbnRDYWxjdWxhdG9yQ29tbW9uTm90aWNlIikuaGlkZSgpOwokKCIjcGF5bWVudENhbGN1bGF0b3JOb3RpY2VJbmNsdWRlZEZlZXMiKS5oaWRlKCk7JCgiLnBheW1lbnRDYWxjdWxhdG9yTm90aWNlQ2FzaCIpLnByb3AoImhpZGRlbiIsITEpOyQoIiNwYXltZW50Q2FsY3VsYXRvckVycm9yTWVzc2FnZSIpLmhpZGUoKTskKCIjcGF5bWVudENhbGN1bGF0b3JEb3duUGF5bWVudEVycm9yTWVzc2FnZSIpLmhpZGUoKTskKCIjcGF5bWVudENhbGN1bGF0b3JEb3duUGF5bWVudEVycm9yTWVzc2FnZUZpbmFuY2UiKS5oaWRlKCk7JCgiI3BheW1lbnRDYWxjdWxhdG9yRG93blBheW1lbnRFcnJvck1lc3NhZ2VMZWFzZSIpLmhpZGUoKTskKCIjcGF5bWVudENhbGN1bGF0b3JPcHRpb25Db250YWluZXIiKS5zaG93KCk7ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI3BheW1lbnRDYWxjdWxhdG9yQ29udGFpbmVyIC5jYWxjLXBheW1lbnQtY2FzaCIpLmhpZGRlbj0hMTskKCIjcGF5bWVudENhbGN1bGF0b3JOb3RpY2VDb250YWluZXIiKS5wcm9wKCJoaWRkZW4iLCExKTsKMT09JCgiI2lzRFJTaXRlIikubGVuZ3RoJiYiMSI9PSQoIiNpc0RSU2l0ZSIpLnZhbCgpJiYoJCgiI2RyQ2FsY3VsYXRvclZpZXdEaXNjbGFpbWVyTGluayIpLmhpZGUoKSxjaGFuZ2VQYWdlQ2FzaFZhbHVlKCkpfQpmdW5jdGlvbiBjaGFuZ2VQYWdlQ2FzaFZhbHVlKCl7aWYobnVsbCE9PWNhc2hQcmljZUZvclBhZ2Upe3ZhciBhPSQoImJvZHkiKS5oYXNDbGFzcygiRU5HTElTSCIpPyJFTkdMSVNIIjoiRlJFTkNIIixiPXBheW1lbnRDYWxjdWxhdG9yRm9ybWF0TnVtYmVyKGNhc2hQcmljZUZvclBhZ2UudG9TdHJpbmcoKSksZT1zdG9yZS5nZXQoImkxOG4iKS5ERUZBVUxUX1BBWU1FTlRfQ0FTSCxkPSc8c3BhbiBjbGFzcz0idHh0LXBheW1lbnQgZm9ybWF0LXByaWNlIj4nK2IrIjwvc3Bhbj4iLGM9c3RvcmUuZ2V0KCJpMThuIikuTEFCRUxfQkVGT1JFX1RBWEVTLnRvTG93ZXJDYXNlKCk7JCgiLnBheW1lbnRXcmFwcGVyIC5wYXltZW50TGluZTIsIC5wYXltZW50V3JhcHBlck1vYmlsZVZEUCAucGF5bWVudExpbmUxIikuaHRtbChlKTskKCIucGF5bWVudFdyYXBwZXIgLnBheW1lbnRMaW5lMSwgLnBheW1lbnRXcmFwcGVyTW9iaWxlVkRQIC5wYXltZW50TGluZTIiKS5odG1sKGQpOyQoIi5wYXltZW50V3JhcHBlciAucGF5bWVudExpbmUzLCAucGF5bWVudFdyYXBwZXJNb2JpbGVWRFAgLnBheW1lbnRMaW5lMyIpLmh0bWwoYyk7CmE9IkVOR0xJU0giPT09YT8iJCIrYjpiKyIgJCI7Y3RhUGF5bWVudFRleHRGcj1bYSwiQ29tcHRhbnQiLCIiXTtjdGFQYXltZW50VGV4dEVuPVthLCJDYXNoIiwiIl07Y3RhUGF5bWVudFZhbHVlcz1bY2FzaFByaWNlRm9yUGFnZSwwLDAsImNhc2giXTskKCIuYm5wX3BheW1lbnRfY29udGFpbmVyIikubGVuZ3RoJiYoJCgiLmJucF9wYXltZW50X2NvbnRhaW5lciIpLmhpZGUoKSwkKCIucGF5bWVudEluZm9CdWJibGVCblAiKS5oaWRlKCkpOyQoIiNkYXJrdG9vbHRpcC1wYXltZW50V3JhcHBlciwgI2Rhcmt0b29sdGlwLXZkcFBheW1lbnRUb29sdGlwLCAjZGFya3Rvb2x0aXAtdmRwSW5mb1Rvb2x0aXAsICNkYXJrdG9vbHRpcC12ZHBVc2VkSW5mb1Rvb2x0aXAiKS5yZW1vdmUoKTskKCIudmRwUGF5bWVudFRvb2x0aXAsIC5wYXltZW50V3JhcHBlciAudmRwSW5mb1Rvb2x0aXAsIC5wYXltZW50V3JhcHBlciAudmRwVXNlZEluZm9Ub29sdGlwIikuZGFya1Rvb2x0aXAoe29wYWNpdHk6MH0pfX0KZnVuY3Rpb24gZ2V0Q2FzaFByaWNlQmxvY2soYSl7dmFyIGI9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI3BheW1lbnRDYWxjdWxhdG9yUG9wdXBDb250YWluZXIiKSxlPWdldFBvcENvbnRhaW5TZXR0aW5ncygpLGQ9ZS5oYXNPd25Qcm9wZXJ0eSgibm9UcmltU2VsZWN0IikmJighMD09PWUubm9UcmltU2VsZWN0fHwidHJ1ZSI9PT1lLm5vVHJpbVNlbGVjdCl8fCJ1c2VkY2Fycy5odG1sIj09JCgiI1BBR0VJRCIpLnZhbCgpfHwiY2FyZGV0YWlsLmh0bWwiPT0kKCIjUEFHRUlEIikudmFsKCksYz0kKCIjYWN0aXZlc2l0ZWxhbmd1YWdlIikudmFsKCl8fCJGUkVOQ0giO2xldCBmPXBhcnNlSW50KGEub3JpZ2luYWxQcmljZXx8ZS52ZWhpY2xlSW5mbyYmZS52ZWhpY2xlSW5mby5tc3JwQWxsSW58fDApO3ZhciB1PXBheW1lbnRDYWxjdWxhdG9yRm9ybWF0TnVtYmVyKGYudG9TdHJpbmcoKSk7bGV0IG09Yi5xdWVyeVNlbGVjdG9yKCIuY2FsYy1wYXltZW50LWNhc2giKTt2YXIgbj0iMSI9PQpiLnF1ZXJ5U2VsZWN0b3IoIiNkaXNwbGF5QnJlYWtkb3duIikudmFsdWUscD0iMSI9PWIucXVlcnlTZWxlY3RvcigiI2hpZGVSZWJhdGVzIikudmFsdWUseD0iMSI9PWIucXVlcnlTZWxlY3RvcigiI3NjcmF0Y2hPcmlnaW5hbFByaWNlIikudmFsdWU7bGV0IHk9IkVOR0xJU0giPT1jPyJTdGFydGluZyBhdCI6IsOAIHBhcnRpciBkZSI7Yj0iRU5HTElTSCI9PWM\/IllvdXIgcHJpY2UiOiJWb3RyZSBwcml4IjtkJiYoeT0kKCIjTkVXSU5WX1BSSUNFX0xBQkVMX09SSUdJTkFMIikudmFsKCksYj0kKCIjTkVXSU5WX1BSSUNFX0xBQkVMX0ZJTkFMIikudmFsKCksZS52ZWhpY2xlSW5mbyYmeS5yZXBsYWNlKCJ7JE1BS0V9IixlLnZlaGljbGVJbmZvLm1ha2UpLnJlcGxhY2UoInskTU9ERUx9IixlLnZlaGljbGVJbmZvLkNGTW9kZWxOYW1lKS5yZXBsYWNlKCJ7JFZFUlNJT059IixlLnZlaGljbGVJbmZvLkNGU3R5bGVOYW1lKS5yZXBsYWNlKCJ7JFlFQVJ9IixlLnZlaGljbGVJbmZvLnllYXIpKTsKbGV0IHI9IkVOR0xJU0giPT1jPyJkZXNjRW4iOiJkZXNjRnIiOyQoIiNwYXltZW50Q2FsY3VsYXRvck5vdGljZVRvdGFsIikuaHRtbChmKTtkPXgmJmEucHJpY2VBbWVuZGVtZW50cyYmMD5hLnByaWNlQW1lbmRlbWVudHMudG90YWw\/InN0cmlrZS1wcmljZSI6IiI7Yz1gCgkJPGRpdiBjbGFzcz0icHJpY2VSb3ciPgoJCQk8c3BhbiBjbGFzcz0icHJpY2VOYW1lIj4ke24mJiFwP2I6eX08L3NwYW4+CgkJCTxzcGFuIGNsYXNzPSJwcmljZS12YWx1ZSAkeyJmb3JtYXQtcHJpY2UifSAke2R9Ij4ke3V9PC9zcGFuPgoJCTwvZGl2PmA7aWYoMD09KGEucHJpY2VBbWVuZGVtZW50c3x8W10pLmxlbmd0aCltLmlubmVySFRNTD1jO2Vsc2V7eD0oYS5wcmljZUFtZW5kZW1lbnRzLmZlZXNMaXN0fHxbXSkucmVkdWNlKChCLGcpPT57aWYoMD09Zy5hbW91bnQpcmV0dXJuIEI7bGV0IHE9IiI7KG5ldyBUZXh0RGVjb2RlcikuZGVjb2RlKFVpbnQ4QXJyYXkuZnJvbShhdG9iKGcuZGVzY0VuKSxEPT5ELmNoYXJDb2RlQXQoMCkpKS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKCJhZG1pbiIpJiYhMD09PXN0b3JlLmdldCgiZmllbGRzLlZXX0RSX1BQX0VOQUJMRUQiKSYmKHE9JzxhIGhyZWY9ImphdmFzY3JpcHQ6dm9pZCgwKSIgY2xhc3M9ImRpc2NsYWltZXJzU3VwZXJzY3JpcHRzIGNhbGNEaXNjbGFpbWVyc1N1cGVyc2NyaXB0cyAiIGRhdGEtZGlzY2xhaW1lci1kaXZpZD0iY2FsY3VsYXRvci1kaXNjbGFpbWVycy1zdXBlcnNjcmlwdHMtNC1kaXYiICBkYXRhLWRpc2NsYWltZXItaWQ9IjQiPjxzdXA+NDwvc3VwPjwvYT4nKTsKbGV0IHo9cGF5bWVudENhbGN1bGF0b3JGb3JtYXROdW1iZXIoZy5hbW91bnQudG9TdHJpbmcoKSk7cmV0dXJuIEIrPWAKCQkJPGRpdiBjbGFzcz0icHJpY2VSb3ciPgoJCQkJPHNwYW4gY2xhc3M9InByaWNlTmFtZSI+JHsobmV3IFRleHREZWNvZGVyKS5kZWNvZGUoVWludDhBcnJheS5mcm9tKGF0b2IoZ1tyXSksRD0+RC5jaGFyQ29kZUF0KDApKSl9PC9zcGFuPgoJCQkJPHNwYW4gY2xhc3M9InByaWNlLXZhbHVlIj48c3BhbiBjbGFzcz0iJHsiZm9ybWF0LXByaWNlIn0iPiR7en08L3NwYW4+JHtxfTwvc3Bhbj4KCQkJPC9kaXY+CgkJYH0sIiIpO3ZhciB0PShhLnByaWNlQW1lbmRlbWVudHMuaW5jZW50aXZlc0xpc3R8fFtdKS5yZWR1Y2UoKEIsZyk9PntpZigwPT1nLmFtb3VudClyZXR1cm4gQjtsZXQgcT1wYXltZW50Q2FsY3VsYXRvckZvcm1hdE51bWJlcihnLmFtb3VudC50b1N0cmluZygpKTtyZXR1cm4gQis9YAoJCQk8ZGl2IGNsYXNzPSJwcmljZVJvdyI+CgkJCQk8c3BhbiBjbGFzcz0icHJpY2VOYW1lIj4keyhuZXcgVGV4dERlY29kZXIpLmRlY29kZShVaW50OEFycmF5LmZyb20oYXRvYihnW3JdKSx6PT56LmNoYXJDb2RlQXQoMCkpKX08L3NwYW4+CgkJCQk8c3BhbiBjbGFzcz0icHJpY2UtdmFsdWUgJHsiZm9ybWF0LXByaWNlIn0iPi0ke3F9PC9zcGFuPgoJCQk8L2Rpdj4KCQlgfSwiIik7dT0oYS5wcmljZUFtZW5kZW1lbnRzLnBvc3RUYXhJbmNlbnRpdmVzTGlzdHx8W10pLnJlZHVjZSgoQixnKT0+e2lmKDA9PWcuYW1vdW50KXJldHVybiBCO2xldCBxPXBheW1lbnRDYWxjdWxhdG9yRm9ybWF0TnVtYmVyKGcuYW1vdW50LnRvU3RyaW5nKCkpO3JldHVybiBCKz1gCgkJCTxkaXYgY2xhc3M9InByaWNlUm93Ij4KCQkJCTxzcGFuIGNsYXNzPSJwcmljZU5hbWUiPiR7KG5ldyBUZXh0RGVjb2RlcikuZGVjb2RlKFVpbnQ4QXJyYXkuZnJvbShhdG9iKGdbcl0pLHo9PnouY2hhckNvZGVBdCgwKSkpfTwvc3Bhbj4KCQkJCTxzcGFuIGNsYXNzPSJwcmljZS12YWx1ZSAkeyJmb3JtYXQtcHJpY2UifSI+LSR7cX08L3NwYW4+CgkJCTwvZGl2PgoJCWB9LCIiKTt2YXIgQT1mLShhLnByaWNlQW1lbmRlbWVudHMudG90YWxGZWV8fDApKyhhLnByaWNlQW1lbmRlbWVudHMudG90YWxSZWJhdGV8fDApLHc9MDwoYS5wcmljZUFtZW5kZW1lbnRzLmNvbmRpdGlvbmFsUmViYXRlc1RvdGFsfHwwKTtlPXcmJmEucHJpY2VBbWVuZGVtZW50cy5maW5hbFByaWNlP2EucHJpY2VBbWVuZGVtZW50cy5maW5hbFByaWNlOmY7WyJORVdDQVJTIiwiTkVXQ0FSREVUQUlMUyJdLmluY2x1ZGVzKHNpdGVQYWdlLm5hbWUpfHwoQT1mLShhLnByaWNlQW1lbmRlbWVudHMudG90YWxGZWV8fDApKyhhLnByaWNlQW1lbmRlbWVudHMudG90YWxSZWJhdGV8fDApLGU9dyYmYS5wcmljZUFtZW5kZW1lbnRzLmZpbmFsUHJpY2U\/YS5wcmljZUFtZW5kZW1lbnRzLmZpbmFsUHJpY2U6Zik7Y2FzaFByaWNlRm9yUGFnZT1lO0E9cGF5bWVudENhbGN1bGF0b3JGb3JtYXROdW1iZXIoQS50b1N0cmluZygpKTtlPXBheW1lbnRDYWxjdWxhdG9yRm9ybWF0TnVtYmVyKGUudG9TdHJpbmcoKSk7CmE9eC5sZW5ndGh8fHQubGVuZ3RoO249biYmIXAmJmE\/YAoJCTxkaXYgY2xhc3M9InByaWNlUm93Ij4KCQkJPHNwYW4gY2xhc3M9InByaWNlTmFtZSI+JHt5fTwvc3Bhbj4KCQkJPHNwYW4gY2xhc3M9InByaWNlLXZhbHVlICR7ImZvcm1hdC1wcmljZSJ9ICR7ZH0iPiR7QX08L3NwYW4+CgkJPC9kaXY+YCt4K3Q6IiI7YSYmKHA9IiIhPW4\/InByaWNlRmluYWwiOiIiLGE9IiIsMT09JCgiI2lzRFJTaXRlIikubGVuZ3RoJiYiMSI9PSQoIiNpc0RSU2l0ZSIpLnZhbCgpJiYhMD09PXN0b3JlLmdldCgiZmllbGRzLlZXX0RSX1BQX0VOQUJMRUQiKSYmKGE9JzxhIGhyZWY9ImphdmFzY3JpcHQ6dm9pZCgwKSIgY2xhc3M9ImRpc2NsYWltZXJzU3VwZXJzY3JpcHRzIGNhbGNEaXNjbGFpbWVyc1N1cGVyc2NyaXB0cyAiICBkYXRhLWRpc2NsYWltZXItZGl2aWQ9ImNhbGN1bGF0b3ItZGlzY2xhaW1lcnMtc3VwZXJzY3JpcHRzLTEtZGl2IiBkYXRhLWRpc2NsYWltZXItaWQ9IjEiPjxzdXA+MTwvc3VwPjwvYT4nKSxjPWAKCQkJPGRpdiBjbGFzcz0icHJpY2VSb3ciPgoJCQkJPHNwYW4gY2xhc3M9InByaWNlTmFtZSI+JHtifTwvc3Bhbj4KCQkJCTxzcGFuIGNsYXNzPSIke3B9Ij48c3BhbiBjbGFzcz0iJHsiZm9ybWF0LXByaWNlIn0iPiR7ZX08L3NwYW4+JHthfTwvc3Bhbj4KCQkJPC9kaXY+YCk7bS5pbm5lckhUTUw9bitjK3V9fQpmdW5jdGlvbiBnZXRPcHRpb25zQW1vdW50KGEpe3ZhciBiPWEucGF5bWVudE9wdGlvbnM\/YS5wYXltZW50T3B0aW9uczowO2EuaGFzT3duUHJvcGVydHkoIm5vVHJpbVNlbGVjdCIpJiYoITA9PT1hLm5vVHJpbVNlbGVjdHx8InRydWUiPT09YS5ub1RyaW1TZWxlY3QpfHwidXNlZGNhcnMuaHRtbCI9PSQoIiNQQUdFSUQiKS52YWwoKXx8JCgiI1BBR0VJRCIpLnZhbCgpO2E9YS5jb25zaWRlckludmVudG9yeT9hLmNvbnNpZGVySW52ZW50b3J5OiIwIjt2YXIgZT0idW5kZWZpbmVkIiE9dHlwZW9mIG1vZGVsQ29uZmlnJiYiZnVuY3Rpb24iPT09dHlwZW9mIG1vZGVsQ29uZmlnLmdldFNlbGVjdGVkU3R5bGU7aWYoZXx8YSYmZSliPW1vZGVsQ29uZmlnLmdldFNlbGVjdGVkU3R5bGUoKS5zZWxlY3RlZE9wdGlvbnNUb3RhbCxhPXBhcnNlSW50KG1vZGVsQ29uZmlnLmdldFNlbGVjdGVkU3R5bGUoKS5kZWZhdWx0T3B0aW9uQW1vdW50KSwwPGEmJihiLT1hLGI9TWF0aC5tYXgoMCxiKSk7cmV0dXJuIGJ8fAowfWZ1bmN0aW9uIGdldEFjY2Vzc29yaWVzQW1vdW50KGEpe3ZhciBiPTA7YS5oYXNPd25Qcm9wZXJ0eSgibm9UcmltU2VsZWN0IikmJighMD09PWEubm9UcmltU2VsZWN0fHwidHJ1ZSI9PT1hLm5vVHJpbVNlbGVjdCl8fCJ1c2VkY2Fycy5odG1sIj09JCgiI1BBR0VJRCIpLnZhbCgpfHwkKCIjUEFHRUlEIikudmFsKCk7YT1hLmNvbnNpZGVySW52ZW50b3J5P2EuY29uc2lkZXJJbnZlbnRvcnk6IjAiO3ZhciBlPSJ1bmRlZmluZWQiIT10eXBlb2YgbW9kZWxDb25maWcmJiJmdW5jdGlvbiI9PT10eXBlb2YgbW9kZWxDb25maWcuZ2V0U2VsZWN0ZWRTdHlsZTsoZXx8YSYmZSkmJnZvaWQgMCE9bW9kZWxDb25maWcuZ2V0U2VsZWN0ZWRTdHlsZSgpLnNlbGVjdGVkQWNjVG90YWwmJihiPW1vZGVsQ29uZmlnLmdldFNlbGVjdGVkU3R5bGUoKS5zZWxlY3RlZEFjY1RvdGFsKTtyZXR1cm4gYnx8MH0KZnVuY3Rpb24gZ2V0U2VsZWN0ZWRBY2Nlc3NvcmllcyhhKXt2YXIgYj0iIjthPWEuY29uc2lkZXJJbnZlbnRvcnk\/YS5jb25zaWRlckludmVudG9yeToiMCI7dmFyIGU9InVuZGVmaW5lZCIhPXR5cGVvZiBtb2RlbENvbmZpZyYmImZ1bmN0aW9uIj09PXR5cGVvZiBtb2RlbENvbmZpZy5nZXRTZWxlY3RlZFN0eWxlOyhlfHxhJiZlKSYmdm9pZCAwIT1tb2RlbENvbmZpZy5nZXRTZWxlY3RlZFN0eWxlKCkuc2VsZWN0ZWRBY2NJZHMmJihiPW1vZGVsQ29uZmlnLmdldFNlbGVjdGVkU3R5bGUoKS5zZWxlY3RlZEFjY0lkcy5qb2luKCIsIikpO3JldHVybiBifHwiIn0KZnVuY3Rpb24gZ2V0UHJvdGVjdGlvblBsYW5zQW1vdW50KGEpe3ZhciBiPTA7YS5oYXNPd25Qcm9wZXJ0eSgibm9UcmltU2VsZWN0IikmJighMD09PWEubm9UcmltU2VsZWN0fHwidHJ1ZSI9PT1hLm5vVHJpbVNlbGVjdCl8fCJ1c2VkY2Fycy5odG1sIj09JCgiI1BBR0VJRCIpLnZhbCgpfHwkKCIjUEFHRUlEIikudmFsKCk7YT1hLmNvbnNpZGVySW52ZW50b3J5P2EuY29uc2lkZXJJbnZlbnRvcnk6IjAiO3ZhciBlPSJ1bmRlZmluZWQiIT10eXBlb2YgbW9kZWxDb25maWcmJiJmdW5jdGlvbiI9PT10eXBlb2YgbW9kZWxDb25maWcuZ2V0U2VsZWN0ZWRTdHlsZTsoZXx8YSYmZSkmJnZvaWQgMCE9bW9kZWxDb25maWcuZ2V0U2VsZWN0ZWRTdHlsZSgpLnNlbGVjdGVkUHJvdGVjdGlvblBsYW5Ub3RhbCYmKGI9bW9kZWxDb25maWcuZ2V0U2VsZWN0ZWRTdHlsZSgpLnNlbGVjdGVkUHJvdGVjdGlvblBsYW5Ub3RhbCk7cmV0dXJuIGJ8fDB9CmZ1bmN0aW9uIHBheW1lbnRDYWxjdWxhdG9yRm9ybWF0TnVtYmVyKGEpe3JldHVybiBhLnJlcGxhY2UoL1xCKD89KFxkezN9KSsoPyFcZCkpL2csIiwiKX1mdW5jdGlvbiBwYXltZW50Q2FsY3VsYXRvckNsaWNrZWRUcmlnZ2VyKGEsYil7JChhKS50cmlnZ2VyKCJwYXltZW50Q2FsY3VsYXRvci5jbGljayIse29yaWdFdmVudDpifSk7YT1uZXcgRXZlbnQoInBheW1lbnRDYWxjdWxhdG9yLmNsaWNrIik7ZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChhKX1mdW5jdGlvbiBwYXltZW50Q2FsY3VsYXRvckNsaWNrZWROZXdWRFBUcmlnZ2VyKGEsYil7dmFyIGU9JCgiI3BvcHVwbWFrZSIpLnZhbCgpLGQ9JCgiI3BvcHVwbW9kZWwiKS52YWwoKSxjPSQoIiNwb3B1cHllYXIiKS52YWwoKTtnYVRyYWNrKCJfdHJhY2tFdmVudCIsIk5ldy1WRFAtT3V0Ym91bmQtY2xpY2tzIiwiQ2FsY3VsYXRyaWNlIixlKyItIitkKyItIitjKTtwYXltZW50Q2FsY3VsYXRvckNsaWNrZWRUcmlnZ2VyKGEsYil9CmZ1bmN0aW9uIGZvcm1hdEVmZmVjdGl2ZVJhdGVUZXh0KGEsYixlLGQsYyl7ZD12b2lkIDA9PT1kPyIiOmQ7Yz12b2lkIDA9PT1jPyEwOmM7Yj1wYXJzZUZsb2F0KGEpLXBhcnNlRmxvYXQoYik7dmFyIGY9c3RvcmUuZ2V0KCJmaWVsZHMiKS5BRE1JTl9TSE9XX0VGRkVDVElWRV9SQVRFX1NFTEVDVDtpZigiZmFsc2UiPT09c3RvcmUuZ2V0KCJmaWVsZHMiKS5BRE1JTl9TSE9XX0VGRkVDVElWRV9SQVRFfHwiZXZlcnl3aGVyZSIhPWYmJjA+PWIpcmV0dXJuIiI7Yj1zdG9yZS5nZXQoImkxOG4iKS5FRkZFQ1RJVkVfUkFURV9MQUJFTDtmPSQoIiNpc21vYmlsZSIpLnZhbCgpPyI8YnIvPiI6IiAiO2I9Yi5yZXBsYWNlKCJ7JFJBVEV9IixgPHNwYW4gJHtlfT4ke2F9JTwvc3Bhbj5gKTtyZXR1cm5gJHtmfSR7Yz9gPGRpdiAke2R9PmA6IiJ9KCAke2J9ICkke2M\/IjwvZGl2PiI6IiJ9YH0KZnVuY3Rpb24gcG9wdWxhdGVMZWFzZUtNQWxsb3dhbmNlRHJvcGRvd24oYSl7dHJ5e2lmKGEubGVhc2UmJjA8YS5sZWFzZS5sZW5ndGgpe3ZhciBiPVtdO2EubGVhc2UuZm9yRWFjaChmdW5jdGlvbihkKXstMT09JC5pbkFycmF5KGQua21fYWxsb3dhbmNlLGIpJiZiLnB1c2goZC5rbV9hbGxvd2FuY2UpfSk7Yi5mb3JFYWNoKGZ1bmN0aW9uKGQpe3ZhciBjPXBheW1lbnRDYWxjdWxhdG9yRm9ybWF0TnVtYmVyKGQudG9GaXhlZCgwKSk7JCgiI3BheW1lbnRDYWxjdWxhdG9yS21BbGxvd2FuY2UiKS5hcHBlbmQobmV3IE9wdGlvbihjKyIga20iLGQpKX0pO3ZhciBlPTJFNDthLmN1cnJlbnRQYXltZW50WzBdJiYidW5kZWZpbmVkIiE9PXR5cGVvZiBhLmN1cnJlbnRQYXltZW50WzBdLmttX2FsbG93YW5jZSYmKGU9MDxhLmN1cnJlbnRQYXltZW50WzBdLmttX2FsbG93YW5jZT9hLmN1cnJlbnRQYXltZW50WzBdLmttX2FsbG93YW5jZToyRTQpOyQoIiNwYXltZW50Q2FsY3VsYXRvckttQWxsb3dhbmNlIikudmFsKGUpfX1jYXRjaChkKXtjb25zb2xlLmVycm9yKCJFcnJvciBwb3B1bGF0aW5nIGxlYXNlIGttIGFsbG93YW5jZSBkcm9wZG93biBpbiB0aGUgZnVuY3Rpb24gcG9wdWxhdGVMZWFzZUtNQWxsb3dhbmNlRHJvcGRvd246ICIsCmQpfX0KZnVuY3Rpb24gc2hvd0hpZGVQYXltZW50U2VjdGlvbihhLGIpeyQoIiNwYXltZW50Q2FsY3VsYXRvclBheW1lbnRUeXBlIGxpIikucmVtb3ZlQ2xhc3MoImFjdGl2ZVBheW1lbnRUeXBlIik7MDwkKCIjcGF5bWVudENhbGN1bGF0b3JQYXltZW50VHlwZSBsaVtkYXRhLXR5cGU9JyIrYisiJ10iKS5sZW5ndGgmJiQoIiNwYXltZW50Q2FsY3VsYXRvclBheW1lbnRUeXBlIGxpW2RhdGEtdHlwZT0nIitiKyInXSIpLmFkZENsYXNzKCJhY3RpdmVQYXltZW50VHlwZSIpOyJjYXNoIiE9PWImJih2b2lkIDAhPWEuZmluYW5jZSYmMD09PWEuZmluYW5jZS5sZW5ndGg\/JCgiI3BheW1lbnRDYWxjdWxhdG9yUGF5bWVudFR5cGVGaW5hbmNlIikuaGlkZSgpOiQoIiNwYXltZW50Q2FsY3VsYXRvclBheW1lbnRUeXBlRmluYW5jZSIpLnNob3coKSx2b2lkIDAhPWEubGVhc2UmJjA9PT1hLmxlYXNlLmxlbmd0aD8kKCIjcGF5bWVudENhbGN1bGF0b3JQYXltZW50VHlwZUxlYXNlIikuaGlkZSgpOiQoIiNwYXltZW50Q2FsY3VsYXRvclBheW1lbnRUeXBlTGVhc2UiKS5zaG93KCkpfQpmdW5jdGlvbiBzaG93RGlzY2xhaW1lckxpbmsoKXsxPT0kKCIjaXNEUlNpdGUiKS5sZW5ndGgmJiIxIj09JCgiI2lzRFJTaXRlIikudmFsKCkmJihkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicGF5bWVudENhbGN1bGF0b3JUZXJtcyIpLnN0eWxlLmRpc3BsYXk9ImJsb2NrIixkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZHJDYWxjdWxhdG9yVmlld0Rpc2NsYWltZXJMaW5rIikmJihkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZHJDYWxjdWxhdG9yVmlld0Rpc2NsYWltZXJMaW5rIikuc3R5bGUuZGlzcGxheT0iYmxvY2siKSl9CmZ1bmN0aW9uIGhpZGVEaXNjbGFpbWVyTGluaygpezE9PSQoIiNpc0RSU2l0ZSIpLmxlbmd0aCYmIjEiPT0kKCIjaXNEUlNpdGUiKS52YWwoKSYmKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwYXltZW50Q2FsY3VsYXRvclRlcm1zIikuc3R5bGUuZGlzcGxheT0ibm9uZSIsZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRyQ2FsY3VsYXRvclZpZXdEaXNjbGFpbWVyTGluayIpJiYoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRyQ2FsY3VsYXRvclZpZXdEaXNjbGFpbWVyTGluayIpLnN0eWxlLmRpc3BsYXk9Im5vbmUiKSl9ZnVuY3Rpb24gZ2V0THV4dXJ5VGF4TGFiZWwoYSl7YT1EMkNVdGlscy5Gb3JtYXQudG9QcmljZShwYXltZW50Q2FsY3VsYXRvckZvcm1hdE51bWJlcihhLmx1eHVyeVRheC50b0ZpeGVkKDApKSk7cmV0dXJuIjxsaT4iK3N0b3JlLmdldCgiaTE4biIpLldFQl9TSVRFX1BSSUNFX0JSRUFLRE9XTl9MVVhVUllfVEFYX0xBQkVMKyIgOiAiK2ErIjwvbGk+In07Ci8qKiAvbS9qcy92YW5pbGxhanMvaW1hc2subWluLmpzICoqLwohZnVuY3Rpb24odCxlKXsib2JqZWN0Ij09dHlwZW9mIGV4cG9ydHMmJiJ1bmRlZmluZWQiIT10eXBlb2YgbW9kdWxlP2UoZXhwb3J0cyk6ImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoWyJleHBvcnRzIl0sZSk6ZSgodD0idW5kZWZpbmVkIiE9dHlwZW9mIGdsb2JhbFRoaXM\/Z2xvYmFsVGhpczp0fHxzZWxmKS5JTWFzaz17fSl9KHRoaXMsKGZ1bmN0aW9uKHQpeyJ1c2Ugc3RyaWN0Ijt2YXIgZT0idW5kZWZpbmVkIiE9dHlwZW9mIGdsb2JhbFRoaXM\/Z2xvYmFsVGhpczoidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6InVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWw\/Z2xvYmFsOiJ1bmRlZmluZWQiIT10eXBlb2Ygc2VsZj9zZWxmOnt9LG49ZnVuY3Rpb24odCl7cmV0dXJuIHQmJnQuTWF0aD09TWF0aCYmdH0saT1uKCJvYmplY3QiPT10eXBlb2YgZ2xvYmFsVGhpcyYmZ2xvYmFsVGhpcyl8fG4oIm9iamVjdCI9PXR5cGVvZiB3aW5kb3cmJndpbmRvdyl8fG4oIm9iamVjdCI9PXR5cGVvZiBzZWxmJiZzZWxmKXx8bigib2JqZWN0Ij09dHlwZW9mIGUmJmUpfHxmdW5jdGlvbigpe3JldHVybiB0aGlzfSgpfHxGdW5jdGlvbigicmV0dXJuIHRoaXMiKSgpLHI9e30sdT1mdW5jdGlvbih0KXt0cnl7cmV0dXJuISF0KCl9Y2F0Y2godCl7cmV0dXJuITB9fSxzPSF1KChmdW5jdGlvbigpe3JldHVybiA3IT1PYmplY3QuZGVmaW5lUHJvcGVydHkoe30sMSx7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDd9fSlbMV19KSksYT0hdSgoZnVuY3Rpb24oKXt2YXIgdD1mdW5jdGlvbigpe30uYmluZCgpO3JldHVybiJmdW5jdGlvbiIhPXR5cGVvZiB0fHx0Lmhhc093blByb3BlcnR5KCJwcm90b3R5cGUiKX0pKSxvPWEsbD1GdW5jdGlvbi5wcm90b3R5cGUuY2FsbCxoPW8\/bC5iaW5kKGwpOmZ1bmN0aW9uKCl7cmV0dXJuIGwuYXBwbHkobCxhcmd1bWVudHMpfSxjPXt9LGY9e30ucHJvcGVydHlJc0VudW1lcmFibGUscD1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLGQ9cCYmIWYuY2FsbCh7MToyfSwxKTtjLmY9ZD9mdW5jdGlvbih0KXt2YXIgZT1wKHRoaXMsdCk7cmV0dXJuISFlJiZlLmVudW1lcmFibGV9OmY7dmFyIHYsZyxrPWZ1bmN0aW9uKHQsZSl7cmV0dXJue2VudW1lcmFibGU6ISgxJnQpLGNvbmZpZ3VyYWJsZTohKDImdCksd3JpdGFibGU6ISg0JnQpLHZhbHVlOmV9fSx5PWEsbT1GdW5jdGlvbi5wcm90b3R5cGUsYj1tLmJpbmQsXz1tLmNhbGwsQT15JiZiLmJpbmQoXyxfKSxDPXk\/ZnVuY3Rpb24odCl7cmV0dXJuIHQmJkEodCl9OmZ1bmN0aW9uKHQpe3JldHVybiB0JiZmdW5jdGlvbigpe3JldHVybiBfLmFwcGx5KHQsYXJndW1lbnRzKX19LEU9QyxGPUUoe30udG9TdHJpbmcpLFM9RSgiIi5zbGljZSksdz1mdW5jdGlvbih0KXtyZXR1cm4gUyhGKHQpLDgsLTEpfSxCPUMsRD11LHg9dyxNPWkuT2JqZWN0LE89QigiIi5zcGxpdCksUD1EKChmdW5jdGlvbigpe3JldHVybiFNKCJ6IikucHJvcGVydHlJc0VudW1lcmFibGUoMCl9KSk\/ZnVuY3Rpb24odCl7cmV0dXJuIlN0cmluZyI9PXgodCk\/Tyh0LCIiKTpNKHQpfTpNLFQ9aS5UeXBlRXJyb3IsST1mdW5jdGlvbih0KXtpZihudWxsPT10KXRocm93IFQoIkNhbid0IGNhbGwgbWV0aG9kIG9uICIrdCk7cmV0dXJuIHR9LGo9UCxSPUksVj1mdW5jdGlvbih0KXtyZXR1cm4gaihSKHQpKX0sTD1mdW5jdGlvbih0KXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdH0sTj1MLFU9ZnVuY3Rpb24odCl7cmV0dXJuIm9iamVjdCI9PXR5cGVvZiB0P251bGwhPT10Ok4odCl9LHo9aSxxPUwsSD1mdW5jdGlvbih0KXtyZXR1cm4gcSh0KT90OnZvaWQgMH0sWT1mdW5jdGlvbih0LGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPDI\/SCh6W3RdKTp6W3RdJiZ6W3RdW2VdfSxaPUMoe30uaXNQcm90b3R5cGVPZiksRz1ZKCJuYXZpZ2F0b3IiLCJ1c2VyQWdlbnQiKXx8IiIsSz1pLCQ9RyxXPUsucHJvY2VzcyxYPUsuRGVubyxKPVcmJlcudmVyc2lvbnN8fFgmJlgudmVyc2lvbixRPUomJkoudjg7USYmKGc9KHY9US5zcGxpdCgiLiIpKVswXT4wJiZ2WzBdPDQ\/MTorKHZbMF0rdlsxXSkpLCFnJiYkJiYoISh2PSQubWF0Y2goL0VkZ2VcLyhcZCspLykpfHx2WzFdPj03NCkmJih2PSQubWF0Y2goL0Nocm9tZVwvKFxkKykvKSkmJihnPSt2WzFdKTt2YXIgdHQ9ZyxldD11LG50PSEhT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyYmIWV0KChmdW5jdGlvbigpe3ZhciB0PVN5bWJvbCgpO3JldHVybiFTdHJpbmcodCl8fCEoT2JqZWN0KHQpaW5zdGFuY2VvZiBTeW1ib2wpfHwhU3ltYm9sLnNoYW0mJnR0JiZ0dDw0MX0pKSxpdD1udCYmIVN5bWJvbC5zaGFtJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcixydD1ZLHV0PUwsc3Q9WixhdD1pdCxvdD1pLk9iamVjdCxsdD1hdD9mdW5jdGlvbih0KXtyZXR1cm4ic3ltYm9sIj09dHlwZW9mIHR9OmZ1bmN0aW9uKHQpe3ZhciBlPXJ0KCJTeW1ib2wiKTtyZXR1cm4gdXQoZSkmJnN0KGUucHJvdG90eXBlLG90KHQpKX0saHQ9aS5TdHJpbmcsY3Q9TCxmdD1mdW5jdGlvbih0KXt0cnl7cmV0dXJuIGh0KHQpfWNhdGNoKHQpe3JldHVybiJPYmplY3QifX0scHQ9aS5UeXBlRXJyb3IsZHQ9ZnVuY3Rpb24odCl7aWYoY3QodCkpcmV0dXJuIHQ7dGhyb3cgcHQoZnQodCkrIiBpcyBub3QgYSBmdW5jdGlvbiIpfSx2dD1oLGd0PUwsa3Q9VSx5dD1pLlR5cGVFcnJvcixtdD17ZXhwb3J0czp7fX0sYnQ9aSxfdD1PYmplY3QuZGVmaW5lUHJvcGVydHksQXQ9ZnVuY3Rpb24odCxlKXt0cnl7X3QoYnQsdCx7dmFsdWU6ZSxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KX1jYXRjaChuKXtidFt0XT1lfXJldHVybiBlfSxDdD1BdCxFdD0iX19jb3JlLWpzX3NoYXJlZF9fIixGdD1pW0V0XXx8Q3QoRXQse30pLFN0PUZ0OyhtdC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIFN0W3RdfHwoU3RbdF09dm9pZCAwIT09ZT9lOnt9KX0pKCJ2ZXJzaW9ucyIsW10pLnB1c2goe3ZlcnNpb246IjMuMjEuMCIsbW9kZToiZ2xvYmFsIixjb3B5cmlnaHQ6IqkgMjAxNC0yMDIyIERlbmlzIFB1c2hrYXJldiAoemxvaXJvY2sucnUpIixsaWNlbnNlOiJodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9ibG9iL3YzLjIxLjAvTElDRU5TRSIsc291cmNlOiJodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcyJ9KTt2YXIgd3Q9SSxCdD1pLk9iamVjdCxEdD1mdW5jdGlvbih0KXtyZXR1cm4gQnQod3QodCkpfSx4dD1EdCxNdD1DKHt9Lmhhc093blByb3BlcnR5KSxPdD1PYmplY3QuaGFzT3dufHxmdW5jdGlvbih0LGUpe3JldHVybiBNdCh4dCh0KSxlKX0sUHQ9QyxUdD0wLEl0PU1hdGgucmFuZG9tKCksanQ9UHQoMS4udG9TdHJpbmcpLFJ0PWZ1bmN0aW9uKHQpe3JldHVybiJTeW1ib2woIisodm9pZCAwPT09dD8iIjp0KSsiKV8iK2p0KCsrVHQrSXQsMzYpfSxWdD1pLEx0PW10LmV4cG9ydHMsTnQ9T3QsVXQ9UnQsenQ9bnQscXQ9aXQsSHQ9THQoIndrcyIpLFl0PVZ0LlN5bWJvbCxadD1ZdCYmWXQuZm9yLEd0PXF0P1l0Oll0JiZZdC53aXRob3V0U2V0dGVyfHxVdCxLdD1mdW5jdGlvbih0KXtpZighTnQoSHQsdCl8fCF6dCYmInN0cmluZyIhPXR5cGVvZiBIdFt0XSl7dmFyIGU9IlN5bWJvbC4iK3Q7enQmJk50KFl0LHQpP0h0W3RdPVl0W3RdOkh0W3RdPXF0JiZadD9adChlKTpHdChlKX1yZXR1cm4gSHRbdF19LCR0PWgsV3Q9VSxYdD1sdCxKdD1mdW5jdGlvbih0LGUpe3ZhciBuPXRbZV07cmV0dXJuIG51bGw9PW4\/dm9pZCAwOmR0KG4pfSxRdD1mdW5jdGlvbih0LGUpe3ZhciBuLGk7aWYoInN0cmluZyI9PT1lJiZndChuPXQudG9TdHJpbmcpJiYha3QoaT12dChuLHQpKSlyZXR1cm4gaTtpZihndChuPXQudmFsdWVPZikmJiFrdChpPXZ0KG4sdCkpKXJldHVybiBpO2lmKCJzdHJpbmciIT09ZSYmZ3Qobj10LnRvU3RyaW5nKSYmIWt0KGk9dnQobix0KSkpcmV0dXJuIGk7dGhyb3cgeXQoIkNhbid0IGNvbnZlcnQgb2JqZWN0IHRvIHByaW1pdGl2ZSB2YWx1ZSIpfSx0ZT1LdCxlZT1pLlR5cGVFcnJvcixuZT10ZSgidG9QcmltaXRpdmUiKSxpZT1mdW5jdGlvbih0LGUpe2lmKCFXdCh0KXx8WHQodCkpcmV0dXJuIHQ7dmFyIG4saT1KdCh0LG5lKTtpZihpKXtpZih2b2lkIDA9PT1lJiYoZT0iZGVmYXVsdCIpLG49JHQoaSx0LGUpLCFXdChuKXx8WHQobikpcmV0dXJuIG47dGhyb3cgZWUoIkNhbid0IGNvbnZlcnQgb2JqZWN0IHRvIHByaW1pdGl2ZSB2YWx1ZSIpfXJldHVybiB2b2lkIDA9PT1lJiYoZT0ibnVtYmVyIiksUXQodCxlKX0scmU9bHQsdWU9ZnVuY3Rpb24odCl7dmFyIGU9aWUodCwic3RyaW5nIik7cmV0dXJuIHJlKGUpP2U6ZSsiIn0sc2U9VSxhZT1pLmRvY3VtZW50LG9lPXNlKGFlKSYmc2UoYWUuY3JlYXRlRWxlbWVudCksbGU9ZnVuY3Rpb24odCl7cmV0dXJuIG9lP2FlLmNyZWF0ZUVsZW1lbnQodCk6e319LGhlPSFzJiYhdSgoZnVuY3Rpb24oKXtyZXR1cm4gNyE9T2JqZWN0LmRlZmluZVByb3BlcnR5KGxlKCJkaXYiKSwiYSIse2dldDpmdW5jdGlvbigpe3JldHVybiA3fX0pLmF9KSksY2U9cyxmZT1oLHBlPWMsZGU9ayx2ZT1WLGdlPXVlLGtlPU90LHllPWhlLG1lPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7ci5mPWNlP21lOmZ1bmN0aW9uKHQsZSl7aWYodD12ZSh0KSxlPWdlKGUpLHllKXRyeXtyZXR1cm4gbWUodCxlKX1jYXRjaCh0KXt9aWYoa2UodCxlKSlyZXR1cm4gZGUoIWZlKHBlLmYsdCxlKSx0W2VdKX07dmFyIGJlPXt9LF9lPXMmJnUoKGZ1bmN0aW9uKCl7cmV0dXJuIDQyIT1PYmplY3QuZGVmaW5lUHJvcGVydHkoKGZ1bmN0aW9uKCl7fSksInByb3RvdHlwZSIse3ZhbHVlOjQyLHdyaXRhYmxlOiExfSkucHJvdG90eXBlfSkpLEFlPWksQ2U9VSxFZT1BZS5TdHJpbmcsRmU9QWUuVHlwZUVycm9yLFNlPWZ1bmN0aW9uKHQpe2lmKENlKHQpKXJldHVybiB0O3Rocm93IEZlKEVlKHQpKyIgaXMgbm90IGFuIG9iamVjdCIpfSx3ZT1zLEJlPWhlLERlPV9lLHhlPVNlLE1lPXVlLE9lPWkuVHlwZUVycm9yLFBlPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSxUZT1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLEllPSJlbnVtZXJhYmxlIixqZT0iY29uZmlndXJhYmxlIixSZT0id3JpdGFibGUiO2JlLmY9d2U\/RGU\/ZnVuY3Rpb24odCxlLG4pe2lmKHhlKHQpLGU9TWUoZSkseGUobiksImZ1bmN0aW9uIj09dHlwZW9mIHQmJiJwcm90b3R5cGUiPT09ZSYmInZhbHVlImluIG4mJlJlIGluIG4mJiFuLndyaXRhYmxlKXt2YXIgaT1UZSh0LGUpO2kmJmkud3JpdGFibGUmJih0W2VdPW4udmFsdWUsbj17Y29uZmlndXJhYmxlOmplIGluIG4\/bi5jb25maWd1cmFibGU6aS5jb25maWd1cmFibGUsZW51bWVyYWJsZTpJZSBpbiBuP24uZW51bWVyYWJsZTppLmVudW1lcmFibGUsd3JpdGFibGU6ITF9KX1yZXR1cm4gUGUodCxlLG4pfTpQZTpmdW5jdGlvbih0LGUsbil7aWYoeGUodCksZT1NZShlKSx4ZShuKSxCZSl0cnl7cmV0dXJuIFBlKHQsZSxuKX1jYXRjaCh0KXt9aWYoImdldCJpbiBufHwic2V0ImluIG4pdGhyb3cgT2UoIkFjY2Vzc29ycyBub3Qgc3VwcG9ydGVkIik7cmV0dXJuInZhbHVlImluIG4mJih0W2VdPW4udmFsdWUpLHR9O3ZhciBWZT1iZSxMZT1rLE5lPXM\/ZnVuY3Rpb24odCxlLG4pe3JldHVybiBWZS5mKHQsZSxMZSgxLG4pKX06ZnVuY3Rpb24odCxlLG4pe3JldHVybiB0W2VdPW4sdH0sVWU9e2V4cG9ydHM6e319LHplPUwscWU9RnQsSGU9QyhGdW5jdGlvbi50b1N0cmluZyk7emUocWUuaW5zcGVjdFNvdXJjZSl8fChxZS5pbnNwZWN0U291cmNlPWZ1bmN0aW9uKHQpe3JldHVybiBIZSh0KX0pO3ZhciBZZSxaZSxHZSxLZT1xZS5pbnNwZWN0U291cmNlLCRlPUwsV2U9S2UsWGU9aS5XZWFrTWFwLEplPSRlKFhlKSYmL25hdGl2ZSBjb2RlLy50ZXN0KFdlKFhlKSksUWU9bXQuZXhwb3J0cyx0bj1SdCxlbj1RZSgia2V5cyIpLG5uPXt9LHJuPUplLHVuPWksc249Qyxhbj1VLG9uPU5lLGxuPU90LGhuPUZ0LGNuPWZ1bmN0aW9uKHQpe3JldHVybiBlblt0XXx8KGVuW3RdPXRuKHQpKX0sZm49bm4scG49Ik9iamVjdCBhbHJlYWR5IGluaXRpYWxpemVkIixkbj11bi5UeXBlRXJyb3Isdm49dW4uV2Vha01hcDtpZihybnx8aG4uc3RhdGUpe3ZhciBnbj1obi5zdGF0ZXx8KGhuLnN0YXRlPW5ldyB2biksa249c24oZ24uZ2V0KSx5bj1zbihnbi5oYXMpLG1uPXNuKGduLnNldCk7WWU9ZnVuY3Rpb24odCxlKXtpZih5bihnbix0KSl0aHJvdyBuZXcgZG4ocG4pO3JldHVybiBlLmZhY2FkZT10LG1uKGduLHQsZSksZX0sWmU9ZnVuY3Rpb24odCl7cmV0dXJuIGtuKGduLHQpfHx7fX0sR2U9ZnVuY3Rpb24odCl7cmV0dXJuIHluKGduLHQpfX1lbHNle3ZhciBibj1jbigic3RhdGUiKTtmbltibl09ITAsWWU9ZnVuY3Rpb24odCxlKXtpZihsbih0LGJuKSl0aHJvdyBuZXcgZG4ocG4pO3JldHVybiBlLmZhY2FkZT10LG9uKHQsYm4sZSksZX0sWmU9ZnVuY3Rpb24odCl7cmV0dXJuIGxuKHQsYm4pP3RbYm5dOnt9fSxHZT1mdW5jdGlvbih0KXtyZXR1cm4gbG4odCxibil9fXZhciBfbj17c2V0OlllLGdldDpaZSxoYXM6R2UsZW5mb3JjZTpmdW5jdGlvbih0KXtyZXR1cm4gR2UodCk\/WmUodCk6WWUodCx7fSl9LGdldHRlckZvcjpmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7dmFyIG47aWYoIWFuKGUpfHwobj1aZShlKSkudHlwZSE9PXQpdGhyb3cgZG4oIkluY29tcGF0aWJsZSByZWNlaXZlciwgIit0KyIgcmVxdWlyZWQiKTtyZXR1cm4gbn19fSxBbj1zLENuPU90LEVuPUZ1bmN0aW9uLnByb3RvdHlwZSxGbj1BbiYmT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcixTbj1DbihFbiwibmFtZSIpLHduPVNuJiYic29tZXRoaW5nIj09PWZ1bmN0aW9uKCl7fS5uYW1lLEJuPVNuJiYoIUFufHxBbiYmRm4oRW4sIm5hbWUiKS5jb25maWd1cmFibGUpLERuPWkseG49TCxNbj1PdCxPbj1OZSxQbj1BdCxUbj1LZSxJbj17RVhJU1RTOlNuLFBST1BFUjp3bixDT05GSUdVUkFCTEU6Qm59LkNPTkZJR1VSQUJMRSxqbj1fbi5nZXQsUm49X24uZW5mb3JjZSxWbj1TdHJpbmcoU3RyaW5nKS5zcGxpdCgiU3RyaW5nIik7KFVlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLG4saSl7dmFyIHIsdT0hIWkmJiEhaS51bnNhZmUscz0hIWkmJiEhaS5lbnVtZXJhYmxlLGE9ISFpJiYhIWkubm9UYXJnZXRHZXQsbz1pJiZ2b2lkIDAhPT1pLm5hbWU\/aS5uYW1lOmU7eG4obikmJigiU3ltYm9sKCI9PT1TdHJpbmcobykuc2xpY2UoMCw3KSYmKG89IlsiK1N0cmluZyhvKS5yZXBsYWNlKC9eU3ltYm9sXCgoW14pXSopXCkvLCIkMSIpKyJdIiksKCFNbihuLCJuYW1lIil8fEluJiZuLm5hbWUhPT1vKSYmT24obiwibmFtZSIsbyksKHI9Um4obikpLnNvdXJjZXx8KHIuc291cmNlPVZuLmpvaW4oInN0cmluZyI9PXR5cGVvZiBvP286IiIpKSksdCE9PURuPyh1PyFhJiZ0W2VdJiYocz0hMCk6ZGVsZXRlIHRbZV0scz90W2VdPW46T24odCxlLG4pKTpzP3RbZV09bjpQbihlLG4pfSkoRnVuY3Rpb24ucHJvdG90eXBlLCJ0b1N0cmluZyIsKGZ1bmN0aW9uKCl7cmV0dXJuIHhuKHRoaXMpJiZqbih0aGlzKS5zb3VyY2V8fFRuKHRoaXMpfSkpO3ZhciBMbj17fSxObj1NYXRoLmNlaWwsVW49TWF0aC5mbG9vcix6bj1mdW5jdGlvbih0KXt2YXIgZT0rdDtyZXR1cm4gZSE9ZXx8MD09PWU\/MDooZT4wP1VuOk5uKShlKX0scW49em4sSG49TWF0aC5tYXgsWW49TWF0aC5taW4sWm49em4sR249TWF0aC5taW4sS249ZnVuY3Rpb24odCl7cmV0dXJuIHQ+MD9Hbihabih0KSw5MDA3MTk5MjU0NzQwOTkxKTowfSwkbj1LbixXbj1WLFhuPWZ1bmN0aW9uKHQsZSl7dmFyIG49cW4odCk7cmV0dXJuIG48MD9IbihuK2UsMCk6WW4obixlKX0sSm49ZnVuY3Rpb24odCl7cmV0dXJuICRuKHQubGVuZ3RoKX0sUW49ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGUsbixpKXt2YXIgcix1PVduKGUpLHM9Sm4odSksYT1YbihpLHMpO2lmKHQmJm4hPW4pe2Zvcig7cz5hOylpZigocj11W2ErK10pIT1yKXJldHVybiEwfWVsc2UgZm9yKDtzPmE7YSsrKWlmKCh0fHxhIGluIHUpJiZ1W2FdPT09bilyZXR1cm4gdHx8YXx8MDtyZXR1cm4hdCYmLTF9fSx0aT17aW5jbHVkZXM6UW4oITApLGluZGV4T2Y6UW4oITEpfSxlaT1PdCxuaT1WLGlpPXRpLmluZGV4T2Yscmk9bm4sdWk9QyhbXS5wdXNoKSxzaT1mdW5jdGlvbih0LGUpe3ZhciBuLGk9bmkodCkscj0wLHU9W107Zm9yKG4gaW4gaSkhZWkocmksbikmJmVpKGksbikmJnVpKHUsbik7Zm9yKDtlLmxlbmd0aD5yOyllaShpLG49ZVtyKytdKSYmKH5paSh1LG4pfHx1aSh1LG4pKTtyZXR1cm4gdX0sYWk9WyJjb25zdHJ1Y3RvciIsImhhc093blByb3BlcnR5IiwiaXNQcm90b3R5cGVPZiIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwidG9Mb2NhbGVTdHJpbmciLCJ0b1N0cmluZyIsInZhbHVlT2YiXSxvaT1zaSxsaT1haS5jb25jYXQoImxlbmd0aCIsInByb3RvdHlwZSIpO0xuLmY9T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXN8fGZ1bmN0aW9uKHQpe3JldHVybiBvaSh0LGxpKX07dmFyIGhpPXt9O2hpLmY9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9sczt2YXIgY2k9WSxmaT1MbixwaT1oaSxkaT1TZSx2aT1DKFtdLmNvbmNhdCksZ2k9Y2koIlJlZmxlY3QiLCJvd25LZXlzIil8fGZ1bmN0aW9uKHQpe3ZhciBlPWZpLmYoZGkodCkpLG49cGkuZjtyZXR1cm4gbj92aShlLG4odCkpOmV9LGtpPU90LHlpPWdpLG1pPXIsYmk9YmUsX2k9dSxBaT1MLENpPS8jfFwucHJvdG90eXBlXC4vLEVpPWZ1bmN0aW9uKHQsZSl7dmFyIG49U2lbRmkodCldO3JldHVybiBuPT1CaXx8biE9d2kmJihBaShlKT9faShlKTohIWUpfSxGaT1FaS5ub3JtYWxpemU9ZnVuY3Rpb24odCl7cmV0dXJuIFN0cmluZyh0KS5yZXBsYWNlKENpLCIuIikudG9Mb3dlckNhc2UoKX0sU2k9RWkuZGF0YT17fSx3aT1FaS5OQVRJVkU9Ik4iLEJpPUVpLlBPTFlGSUxMPSJQIixEaT1FaSx4aT1pLE1pPXIuZixPaT1OZSxQaT1VZS5leHBvcnRzLFRpPUF0LElpPWZ1bmN0aW9uKHQsZSxuKXtmb3IodmFyIGk9eWkoZSkscj1iaS5mLHU9bWkuZixzPTA7czxpLmxlbmd0aDtzKyspe3ZhciBhPWlbc107a2kodCxhKXx8biYma2kobixhKXx8cih0LGEsdShlLGEpKX19LGppPURpLFJpPWZ1bmN0aW9uKHQsZSl7dmFyIG4saSxyLHUscyxhPXQudGFyZ2V0LG89dC5nbG9iYWwsbD10LnN0YXQ7aWYobj1vP3hpOmw\/eGlbYV18fFRpKGEse30pOih4aVthXXx8e30pLnByb3RvdHlwZSlmb3IoaSBpbiBlKXtpZih1PWVbaV0scj10Lm5vVGFyZ2V0R2V0PyhzPU1pKG4saSkpJiZzLnZhbHVlOm5baV0sIWppKG8\/aTphKyhsPyIuIjoiIyIpK2ksdC5mb3JjZWQpJiZ2b2lkIDAhPT1yKXtpZih0eXBlb2YgdT09dHlwZW9mIHIpY29udGludWU7SWkodSxyKX0odC5zaGFtfHxyJiZyLnNoYW0pJiZPaSh1LCJzaGFtIiwhMCksUGkobixpLHUsdCl9fSxWaT1zaSxMaT1haSxOaT1PYmplY3Qua2V5c3x8ZnVuY3Rpb24odCl7cmV0dXJuIFZpKHQsTGkpfSxVaT1zLHppPUMscWk9aCxIaT11LFlpPU5pLFppPWhpLEdpPWMsS2k9RHQsJGk9UCxXaT1PYmplY3QuYXNzaWduLFhpPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSxKaT16aShbXS5jb25jYXQpLFFpPSFXaXx8SGkoKGZ1bmN0aW9uKCl7aWYoVWkmJjEhPT1XaSh7YjoxfSxXaShYaSh7fSwiYSIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7WGkodGhpcywiYiIse3ZhbHVlOjMsZW51bWVyYWJsZTohMX0pfX0pLHtiOjJ9KSkuYilyZXR1cm4hMDt2YXIgdD17fSxlPXt9LG49U3ltYm9sKCksaT0iYWJjZGVmZ2hpamtsbW5vcHFyc3QiO3JldHVybiB0W25dPTcsaS5zcGxpdCgiIikuZm9yRWFjaCgoZnVuY3Rpb24odCl7ZVt0XT10fSkpLDchPVdpKHt9LHQpW25dfHxZaShXaSh7fSxlKSkuam9pbigiIikhPWl9KSk\/ZnVuY3Rpb24odCxlKXtmb3IodmFyIG49S2kodCksaT1hcmd1bWVudHMubGVuZ3RoLHI9MSx1PVppLmYscz1HaS5mO2k+cjspZm9yKHZhciBhLG89JGkoYXJndW1lbnRzW3IrK10pLGw9dT9KaShZaShvKSx1KG8pKTpZaShvKSxoPWwubGVuZ3RoLGM9MDtoPmM7KWE9bFtjKytdLFVpJiYhcWkocyxvLGEpfHwoblthXT1vW2FdKTtyZXR1cm4gbn06V2ksdHI9UWk7Umkoe3RhcmdldDoiT2JqZWN0IixzdGF0OiEwLGZvcmNlZDpPYmplY3QuYXNzaWduIT09dHJ9LHthc3NpZ246dHJ9KTt2YXIgZXI9e307ZXJbS3QoInRvU3RyaW5nVGFnIildPSJ6Ijt2YXIgbnI9aSxpcj0iW29iamVjdCB6XSI9PT1TdHJpbmcoZXIpLHJyPUwsdXI9dyxzcj1LdCgidG9TdHJpbmdUYWciKSxhcj1uci5PYmplY3Qsb3I9IkFyZ3VtZW50cyI9PXVyKGZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50c30oKSksbHI9aXI\/dXI6ZnVuY3Rpb24odCl7dmFyIGUsbixpO3JldHVybiB2b2lkIDA9PT10PyJVbmRlZmluZWQiOm51bGw9PT10PyJOdWxsIjoic3RyaW5nIj09dHlwZW9mKG49ZnVuY3Rpb24odCxlKXt0cnl7cmV0dXJuIHRbZV19Y2F0Y2godCl7fX0oZT1hcih0KSxzcikpP246b3I\/dXIoZSk6Ik9iamVjdCI9PShpPXVyKGUpKSYmcnIoZS5jYWxsZWUpPyJBcmd1bWVudHMiOml9LGhyPWkuU3RyaW5nLGNyPWZ1bmN0aW9uKHQpe2lmKCJTeW1ib2wiPT09bHIodCkpdGhyb3cgVHlwZUVycm9yKCJDYW5ub3QgY29udmVydCBhIFN5bWJvbCB2YWx1ZSB0byBhIHN0cmluZyIpO3JldHVybiBocih0KX0sZnI9em4scHI9Y3IsZHI9SSx2cj1pLlJhbmdlRXJyb3IsZ3I9ZnVuY3Rpb24odCl7dmFyIGU9cHIoZHIodGhpcykpLG49IiIsaT1mcih0KTtpZihpPDB8fGk9PTEvMCl0aHJvdyB2cigiV3JvbmcgbnVtYmVyIG9mIHJlcGV0aXRpb25zIik7Zm9yKDtpPjA7KGk+Pj49MSkmJihlKz1lKSkxJmkmJihuKz1lKTtyZXR1cm4gbn07Umkoe3RhcmdldDoiU3RyaW5nIixwcm90bzohMH0se3JlcGVhdDpncn0pO3ZhciBrcj1DLHlyPUtuLG1yPWNyLGJyPUksX3I9a3IoZ3IpLEFyPWtyKCIiLnNsaWNlKSxDcj1NYXRoLmNlaWwsRXI9ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGUsbixpKXt2YXIgcix1LHM9bXIoYnIoZSkpLGE9eXIobiksbz1zLmxlbmd0aCxsPXZvaWQgMD09PWk\/IiAiOm1yKGkpO3JldHVybiBhPD1vfHwiIj09bD9zOigodT1fcihsLENyKChyPWEtbykvbC5sZW5ndGgpKSkubGVuZ3RoPnImJih1PUFyKHUsMCxyKSksdD9zK3U6dStzKX19LEZyPXtzdGFydDpFcighMSksZW5kOkVyKCEwKX0sU3I9L1ZlcnNpb25cLzEwKD86XC5cZCspezEsMn0oPzogW1x3Li9dKyk\/KD86IE1vYmlsZVwvXHcrKT8gU2FmYXJpXC8vLnRlc3QoRyksd3I9RnIuc3RhcnQ7Umkoe3RhcmdldDoiU3RyaW5nIixwcm90bzohMCxmb3JjZWQ6U3J9LHtwYWRTdGFydDpmdW5jdGlvbih0KXtyZXR1cm4gd3IodGhpcyx0LGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwKX19KTt2YXIgQnI9RnIuZW5kO2Z1bmN0aW9uIERyKHQpe3JldHVybiBEcj0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbih0KXtyZXR1cm4gdHlwZW9mIHR9OmZ1bmN0aW9uKHQpe3JldHVybiB0JiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZ0LmNvbnN0cnVjdG9yPT09U3ltYm9sJiZ0IT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgdH0sRHIodCl9ZnVuY3Rpb24geHIodCxlKXtpZighKHQgaW5zdGFuY2VvZiBlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiBNcih0LGUpe2Zvcih2YXIgbj0wO248ZS5sZW5ndGg7bisrKXt2YXIgaT1lW25dO2kuZW51bWVyYWJsZT1pLmVudW1lcmFibGV8fCExLGkuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBpJiYoaS53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsaS5rZXksaSl9fWZ1bmN0aW9uIE9yKHQsZSxuKXtyZXR1cm4gZSYmTXIodC5wcm90b3R5cGUsZSksbiYmTXIodCxuKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSx0fWZ1bmN0aW9uIFByKHQsZSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGUmJm51bGwhPT1lKXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7dC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShlJiZlLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOnQsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGUmJklyKHQsZSl9ZnVuY3Rpb24gVHIodCl7cmV0dXJuIFRyPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2Y6ZnVuY3Rpb24odCl7cmV0dXJuIHQuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YodCl9LFRyKHQpfWZ1bmN0aW9uIElyKHQsZSl7cmV0dXJuIElyPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5fX3Byb3RvX189ZSx0fSxJcih0LGUpfWZ1bmN0aW9uIGpyKHQsZSl7aWYobnVsbD09dClyZXR1cm57fTt2YXIgbixpLHI9ZnVuY3Rpb24odCxlKXtpZihudWxsPT10KXJldHVybnt9O3ZhciBuLGkscj17fSx1PU9iamVjdC5rZXlzKHQpO2ZvcihpPTA7aTx1Lmxlbmd0aDtpKyspbj11W2ldLGUuaW5kZXhPZihuKT49MHx8KHJbbl09dFtuXSk7cmV0dXJuIHJ9KHQsZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHU9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyh0KTtmb3IoaT0wO2k8dS5sZW5ndGg7aSsrKW49dVtpXSxlLmluZGV4T2Yobik+PTB8fE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbCh0LG4pJiYocltuXT10W25dKX1yZXR1cm4gcn1mdW5jdGlvbiBScih0LGUpe2lmKGUmJigib2JqZWN0Ij09dHlwZW9mIGV8fCJmdW5jdGlvbiI9PXR5cGVvZiBlKSlyZXR1cm4gZTtpZih2b2lkIDAhPT1lKXRocm93IG5ldyBUeXBlRXJyb3IoIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkIik7cmV0dXJuIGZ1bmN0aW9uKHQpe2lmKHZvaWQgMD09PXQpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gdH0odCl9ZnVuY3Rpb24gVnIodCl7dmFyIGU9ZnVuY3Rpb24oKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIFJlZmxlY3R8fCFSZWZsZWN0LmNvbnN0cnVjdClyZXR1cm4hMTtpZihSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLChmdW5jdGlvbigpe30pKSksITB9Y2F0Y2godCl7cmV0dXJuITF9fSgpO3JldHVybiBmdW5jdGlvbigpe3ZhciBuLGk9VHIodCk7aWYoZSl7dmFyIHI9VHIodGhpcykuY29uc3RydWN0b3I7bj1SZWZsZWN0LmNvbnN0cnVjdChpLGFyZ3VtZW50cyxyKX1lbHNlIG49aS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIFJyKHRoaXMsbil9fWZ1bmN0aW9uIExyKHQsZSl7Zm9yKDshT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsZSkmJm51bGwhPT0odD1Ucih0KSk7KTtyZXR1cm4gdH1mdW5jdGlvbiBOcigpe3JldHVybiBOcj0idW5kZWZpbmVkIiE9dHlwZW9mIFJlZmxlY3QmJlJlZmxlY3QuZ2V0P1JlZmxlY3QuZ2V0OmZ1bmN0aW9uKHQsZSxuKXt2YXIgaT1Mcih0LGUpO2lmKGkpe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoaSxlKTtyZXR1cm4gci5nZXQ\/ci5nZXQuY2FsbChhcmd1bWVudHMubGVuZ3RoPDM\/dDpuKTpyLnZhbHVlfX0sTnIuYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIFVyKHQsZSxuLGkpe3JldHVybiBVcj0idW5kZWZpbmVkIiE9dHlwZW9mIFJlZmxlY3QmJlJlZmxlY3Quc2V0P1JlZmxlY3Quc2V0OmZ1bmN0aW9uKHQsZSxuLGkpe3ZhciByLHU9THIodCxlKTtpZih1KXtpZigocj1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHUsZSkpLnNldClyZXR1cm4gci5zZXQuY2FsbChpLG4pLCEwO2lmKCFyLndyaXRhYmxlKXJldHVybiExfWlmKHI9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihpLGUpKXtpZighci53cml0YWJsZSlyZXR1cm4hMTtyLnZhbHVlPW4sT2JqZWN0LmRlZmluZVByb3BlcnR5KGksZSxyKX1lbHNlIWZ1bmN0aW9uKHQsZSxuKXtlIGluIHQ\/T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsZSx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOnRbZV09bn0oaSxlLG4pO3JldHVybiEwfSxVcih0LGUsbixpKX1mdW5jdGlvbiB6cih0LGUsbixpLHIpe2lmKCFVcih0LGUsbixpfHx0KSYmcil0aHJvdyBuZXcgRXJyb3IoImZhaWxlZCB0byBzZXQgcHJvcGVydHkiKTtyZXR1cm4gbn1mdW5jdGlvbiBxcih0LGUpe3JldHVybiBmdW5jdGlvbih0KXtpZihBcnJheS5pc0FycmF5KHQpKXJldHVybiB0fSh0KXx8ZnVuY3Rpb24odCxlKXt2YXIgbj1udWxsPT10P251bGw6InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJnRbU3ltYm9sLml0ZXJhdG9yXXx8dFsiQEBpdGVyYXRvciJdO2lmKG51bGw9PW4pcmV0dXJuO3ZhciBpLHIsdT1bXSxzPSEwLGE9ITE7dHJ5e2ZvcihuPW4uY2FsbCh0KTshKHM9KGk9bi5uZXh0KCkpLmRvbmUpJiYodS5wdXNoKGkudmFsdWUpLCFlfHx1Lmxlbmd0aCE9PWUpO3M9ITApO31jYXRjaCh0KXthPSEwLHI9dH1maW5hbGx5e3RyeXtzfHxudWxsPT1uLnJldHVybnx8bi5yZXR1cm4oKX1maW5hbGx5e2lmKGEpdGhyb3cgcn19cmV0dXJuIHV9KHQsZSl8fGZ1bmN0aW9uKHQsZSl7aWYoIXQpcmV0dXJuO2lmKCJzdHJpbmciPT10eXBlb2YgdClyZXR1cm4gSHIodCxlKTt2YXIgbj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCkuc2xpY2UoOCwtMSk7Ik9iamVjdCI9PT1uJiZ0LmNvbnN0cnVjdG9yJiYobj10LmNvbnN0cnVjdG9yLm5hbWUpO2lmKCJNYXAiPT09bnx8IlNldCI9PT1uKXJldHVybiBBcnJheS5mcm9tKHQpO2lmKCJBcmd1bWVudHMiPT09bnx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QobikpcmV0dXJuIEhyKHQsZSl9KHQsZSl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKX1mdW5jdGlvbiBIcih0LGUpeyhudWxsPT1lfHxlPnQubGVuZ3RoKSYmKGU9dC5sZW5ndGgpO2Zvcih2YXIgbj0wLGk9bmV3IEFycmF5KGUpO248ZTtuKyspaVtuXT10W25dO3JldHVybiBpfVJpKHt0YXJnZXQ6IlN0cmluZyIscHJvdG86ITAsZm9yY2VkOlNyfSx7cGFkRW5kOmZ1bmN0aW9uKHQpe3JldHVybiBCcih0aGlzLHQsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDApfX0pLFJpKHtnbG9iYWw6ITB9LHtnbG9iYWxUaGlzOml9KTt2YXIgWXI9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe3hyKHRoaXMsdCksT2JqZWN0LmFzc2lnbih0aGlzLHtpbnNlcnRlZDoiIixyYXdJbnNlcnRlZDoiIixza2lwOiExLHRhaWxTaGlmdDowfSxlKX1yZXR1cm4gT3IodCxbe2tleToiYWdncmVnYXRlIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5yYXdJbnNlcnRlZCs9dC5yYXdJbnNlcnRlZCx0aGlzLnNraXA9dGhpcy5za2lwfHx0LnNraXAsdGhpcy5pbnNlcnRlZCs9dC5pbnNlcnRlZCx0aGlzLnRhaWxTaGlmdCs9dC50YWlsU2hpZnQsdGhpc319LHtrZXk6Im9mZnNldCIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudGFpbFNoaWZ0K3RoaXMuaW5zZXJ0ZWQubGVuZ3RofX1dKSx0fSgpO2Z1bmN0aW9uIFpyKHQpe3JldHVybiJzdHJpbmciPT10eXBlb2YgdHx8dCBpbnN0YW5jZW9mIFN0cmluZ312YXIgR3I9Ik5PTkUiLEtyPSJMRUZUIiwkcj0iRk9SQ0VfTEVGVCIsV3I9IlJJR0hUIixYcj0iRk9SQ0VfUklHSFQiO2Z1bmN0aW9uIEpyKHQpe3JldHVybiB0LnJlcGxhY2UoLyhbLiorP149IToke30oKXxbXF1cL1xcXSkvZywiXFwkMSIpfWZ1bmN0aW9uIFFyKHQpe3JldHVybiBBcnJheS5pc0FycmF5KHQpP3Q6W3QsbmV3IFlyXX1mdW5jdGlvbiB0dSh0LGUpe2lmKGU9PT10KXJldHVybiEwO3ZhciBuLGk9QXJyYXkuaXNBcnJheShlKSxyPUFycmF5LmlzQXJyYXkodCk7aWYoaSYmcil7aWYoZS5sZW5ndGghPXQubGVuZ3RoKXJldHVybiExO2ZvcihuPTA7bjxlLmxlbmd0aDtuKyspaWYoIXR1KGVbbl0sdFtuXSkpcmV0dXJuITE7cmV0dXJuITB9aWYoaSE9cilyZXR1cm4hMTtpZihlJiZ0JiYib2JqZWN0Ij09PURyKGUpJiYib2JqZWN0Ij09PURyKHQpKXt2YXIgdT1lIGluc3RhbmNlb2YgRGF0ZSxzPXQgaW5zdGFuY2VvZiBEYXRlO2lmKHUmJnMpcmV0dXJuIGUuZ2V0VGltZSgpPT10LmdldFRpbWUoKTtpZih1IT1zKXJldHVybiExO3ZhciBhPWUgaW5zdGFuY2VvZiBSZWdFeHAsbz10IGluc3RhbmNlb2YgUmVnRXhwO2lmKGEmJm8pcmV0dXJuIGUudG9TdHJpbmcoKT09dC50b1N0cmluZygpO2lmKGEhPW8pcmV0dXJuITE7dmFyIGw9T2JqZWN0LmtleXMoZSk7Zm9yKG49MDtuPGwubGVuZ3RoO24rKylpZighT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsbFtuXSkpcmV0dXJuITE7Zm9yKG49MDtuPGwubGVuZ3RoO24rKylpZighdHUodFtsW25dXSxlW2xbbl1dKSlyZXR1cm4hMTtyZXR1cm4hMH1yZXR1cm4hKCFlfHwhdHx8ImZ1bmN0aW9uIiE9dHlwZW9mIGV8fCJmdW5jdGlvbiIhPXR5cGVvZiB0KSYmZS50b1N0cmluZygpPT09dC50b1N0cmluZygpfXZhciBldT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSxuLGkscil7Zm9yKHhyKHRoaXMsdCksdGhpcy52YWx1ZT1lLHRoaXMuY3Vyc29yUG9zPW4sdGhpcy5vbGRWYWx1ZT1pLHRoaXMub2xkU2VsZWN0aW9uPXI7dGhpcy52YWx1ZS5zbGljZSgwLHRoaXMuc3RhcnRDaGFuZ2VQb3MpIT09dGhpcy5vbGRWYWx1ZS5zbGljZSgwLHRoaXMuc3RhcnRDaGFuZ2VQb3MpOyktLXRoaXMub2xkU2VsZWN0aW9uLnN0YXJ0fXJldHVybiBPcih0LFt7a2V5OiJzdGFydENoYW5nZVBvcyIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIE1hdGgubWluKHRoaXMuY3Vyc29yUG9zLHRoaXMub2xkU2VsZWN0aW9uLnN0YXJ0KX19LHtrZXk6Imluc2VydGVkQ291bnQiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmN1cnNvclBvcy10aGlzLnN0YXJ0Q2hhbmdlUG9zfX0se2tleToiaW5zZXJ0ZWQiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnZhbHVlLnN1YnN0cih0aGlzLnN0YXJ0Q2hhbmdlUG9zLHRoaXMuaW5zZXJ0ZWRDb3VudCl9fSx7a2V5OiJyZW1vdmVkQ291bnQiLGdldDpmdW5jdGlvbigpe3JldHVybiBNYXRoLm1heCh0aGlzLm9sZFNlbGVjdGlvbi5lbmQtdGhpcy5zdGFydENoYW5nZVBvc3x8dGhpcy5vbGRWYWx1ZS5sZW5ndGgtdGhpcy52YWx1ZS5sZW5ndGgsMCl9fSx7a2V5OiJyZW1vdmVkIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vbGRWYWx1ZS5zdWJzdHIodGhpcy5zdGFydENoYW5nZVBvcyx0aGlzLnJlbW92ZWRDb3VudCl9fSx7a2V5OiJoZWFkIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy52YWx1ZS5zdWJzdHJpbmcoMCx0aGlzLnN0YXJ0Q2hhbmdlUG9zKX19LHtrZXk6InRhaWwiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnZhbHVlLnN1YnN0cmluZyh0aGlzLnN0YXJ0Q2hhbmdlUG9zK3RoaXMuaW5zZXJ0ZWRDb3VudCl9fSx7a2V5OiJyZW1vdmVEaXJlY3Rpb24iLGdldDpmdW5jdGlvbigpe3JldHVybiF0aGlzLnJlbW92ZWRDb3VudHx8dGhpcy5pbnNlcnRlZENvdW50P0dyOnRoaXMub2xkU2VsZWN0aW9uLmVuZCE9PXRoaXMuY3Vyc29yUG9zJiZ0aGlzLm9sZFNlbGVjdGlvbi5zdGFydCE9PXRoaXMuY3Vyc29yUG9zfHx0aGlzLm9sZFNlbGVjdGlvbi5lbmQhPT10aGlzLm9sZFNlbGVjdGlvbi5zdGFydD9LcjpXcn19XSksdH0oKSxudT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06IiIsbj1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06MCxpPWFyZ3VtZW50cy5sZW5ndGg+Mj9hcmd1bWVudHNbMl06dm9pZCAwO3hyKHRoaXMsdCksdGhpcy52YWx1ZT1lLHRoaXMuZnJvbT1uLHRoaXMuc3RvcD1pfXJldHVybiBPcih0LFt7a2V5OiJ0b1N0cmluZyIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy52YWx1ZX19LHtrZXk6ImV4dGVuZCIsdmFsdWU6ZnVuY3Rpb24odCl7dGhpcy52YWx1ZSs9U3RyaW5nKHQpfX0se2tleToiYXBwZW5kVG8iLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0LmFwcGVuZCh0aGlzLnRvU3RyaW5nKCkse3RhaWw6ITB9KS5hZ2dyZWdhdGUodC5fYXBwZW5kUGxhY2Vob2xkZXIoKSl9fSx7a2V5OiJzdGF0ZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJue3ZhbHVlOnRoaXMudmFsdWUsZnJvbTp0aGlzLmZyb20sc3RvcDp0aGlzLnN0b3B9fSxzZXQ6ZnVuY3Rpb24odCl7T2JqZWN0LmFzc2lnbih0aGlzLHQpfX0se2tleToidW5zaGlmdCIsdmFsdWU6ZnVuY3Rpb24odCl7aWYoIXRoaXMudmFsdWUubGVuZ3RofHxudWxsIT10JiZ0aGlzLmZyb20+PXQpcmV0dXJuIiI7dmFyIGU9dGhpcy52YWx1ZVswXTtyZXR1cm4gdGhpcy52YWx1ZT10aGlzLnZhbHVlLnNsaWNlKDEpLGV9fSx7a2V5OiJzaGlmdCIsdmFsdWU6ZnVuY3Rpb24oKXtpZighdGhpcy52YWx1ZS5sZW5ndGgpcmV0dXJuIiI7dmFyIHQ9dGhpcy52YWx1ZVt0aGlzLnZhbHVlLmxlbmd0aC0xXTtyZXR1cm4gdGhpcy52YWx1ZT10aGlzLnZhbHVlLnNsaWNlKDAsLTEpLHR9fV0pLHR9KCk7ZnVuY3Rpb24gaXUodCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0\/YXJndW1lbnRzWzFdOnt9O3JldHVybiBuZXcgaXUuSW5wdXRNYXNrKHQsZSl9dmFyIHJ1PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXt4cih0aGlzLHQpLHRoaXMuX3ZhbHVlPSIiLHRoaXMuX3VwZGF0ZShPYmplY3QuYXNzaWduKHt9LHQuREVGQVVMVFMsZSkpLHRoaXMuaXNJbml0aWFsaXplZD0hMH1yZXR1cm4gT3IodCxbe2tleToidXBkYXRlT3B0aW9ucyIsdmFsdWU6ZnVuY3Rpb24odCl7T2JqZWN0LmtleXModCkubGVuZ3RoJiZ0aGlzLndpdGhWYWx1ZVJlZnJlc2godGhpcy5fdXBkYXRlLmJpbmQodGhpcyx0KSl9fSx7a2V5OiJfdXBkYXRlIix2YWx1ZTpmdW5jdGlvbih0KXtPYmplY3QuYXNzaWduKHRoaXMsdCl9fSx7a2V5OiJzdGF0ZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJue192YWx1ZTp0aGlzLnZhbHVlfX0sc2V0OmZ1bmN0aW9uKHQpe3RoaXMuX3ZhbHVlPXQuX3ZhbHVlfX0se2tleToicmVzZXQiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5fdmFsdWU9IiJ9fSx7a2V5OiJ2YWx1ZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3ZhbHVlfSxzZXQ6ZnVuY3Rpb24odCl7dGhpcy5yZXNvbHZlKHQpfX0se2tleToicmVzb2x2ZSIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucmVzZXQoKSx0aGlzLmFwcGVuZCh0LHtpbnB1dDohMH0sIiIpLHRoaXMuZG9Db21taXQoKSx0aGlzLnZhbHVlfX0se2tleToidW5tYXNrZWRWYWx1ZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudmFsdWV9LHNldDpmdW5jdGlvbih0KXt0aGlzLnJlc2V0KCksdGhpcy5hcHBlbmQodCx7fSwiIiksdGhpcy5kb0NvbW1pdCgpfX0se2tleToidHlwZWRWYWx1ZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZG9QYXJzZSh0aGlzLnZhbHVlKX0sc2V0OmZ1bmN0aW9uKHQpe3RoaXMudmFsdWU9dGhpcy5kb0Zvcm1hdCh0KX19LHtrZXk6InJhd0lucHV0VmFsdWUiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmV4dHJhY3RJbnB1dCgwLHRoaXMudmFsdWUubGVuZ3RoLHtyYXc6ITB9KX0sc2V0OmZ1bmN0aW9uKHQpe3RoaXMucmVzZXQoKSx0aGlzLmFwcGVuZCh0LHtyYXc6ITB9LCIiKSx0aGlzLmRvQ29tbWl0KCl9fSx7a2V5OiJpc0NvbXBsZXRlIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4hMH19LHtrZXk6ImlzRmlsbGVkIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pc0NvbXBsZXRlfX0se2tleToibmVhcmVzdElucHV0UG9zIix2YWx1ZTpmdW5jdGlvbih0LGUpe3JldHVybiB0fX0se2tleToiZXh0cmFjdElucHV0Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTowLGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0\/YXJndW1lbnRzWzFdOnRoaXMudmFsdWUubGVuZ3RoO3JldHVybiB0aGlzLnZhbHVlLnNsaWNlKHQsZSl9fSx7a2V5OiJleHRyYWN0VGFpbCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06MCxlPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp0aGlzLnZhbHVlLmxlbmd0aDtyZXR1cm4gbmV3IG51KHRoaXMuZXh0cmFjdElucHV0KHQsZSksdCl9fSx7a2V5OiJhcHBlbmRUYWlsIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gWnIodCkmJih0PW5ldyBudShTdHJpbmcodCkpKSx0LmFwcGVuZFRvKHRoaXMpfX0se2tleToiX2FwcGVuZENoYXJSYXciLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0Pyh0aGlzLl92YWx1ZSs9dCxuZXcgWXIoe2luc2VydGVkOnQscmF3SW5zZXJ0ZWQ6dH0pKTpuZXcgWXJ9fSx7a2V5OiJfYXBwZW5kQ2hhciIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGUsbj1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06e30saT1hcmd1bWVudHMubGVuZ3RoPjI\/YXJndW1lbnRzWzJdOnZvaWQgMCxyPXRoaXMuc3RhdGUsdT1Rcih0aGlzLmRvUHJlcGFyZSh0LG4pKSxzPXFyKHUsMik7aWYodD1zWzBdLChlPShlPXNbMV0pLmFnZ3JlZ2F0ZSh0aGlzLl9hcHBlbmRDaGFyUmF3KHQsbikpKS5pbnNlcnRlZCl7dmFyIGEsbz0hMSE9PXRoaXMuZG9WYWxpZGF0ZShuKTtpZihvJiZudWxsIT1pKXt2YXIgbD10aGlzLnN0YXRlOyEwPT09dGhpcy5vdmVyd3JpdGUmJihhPWkuc3RhdGUsaS51bnNoaWZ0KHRoaXMudmFsdWUubGVuZ3RoKSk7dmFyIGg9dGhpcy5hcHBlbmRUYWlsKGkpOyhvPWgucmF3SW5zZXJ0ZWQ9PT1pLnRvU3RyaW5nKCkpJiZoLmluc2VydGVkfHwic2hpZnQiIT09dGhpcy5vdmVyd3JpdGV8fCh0aGlzLnN0YXRlPWwsYT1pLnN0YXRlLGkuc2hpZnQoKSxvPShoPXRoaXMuYXBwZW5kVGFpbChpKSkucmF3SW5zZXJ0ZWQ9PT1pLnRvU3RyaW5nKCkpLG8mJmguaW5zZXJ0ZWQmJih0aGlzLnN0YXRlPWwpfW98fChlPW5ldyBZcix0aGlzLnN0YXRlPXIsaSYmYSYmKGkuc3RhdGU9YSkpfXJldHVybiBlfX0se2tleToiX2FwcGVuZFBsYWNlaG9sZGVyIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBuZXcgWXJ9fSx7a2V5OiJfYXBwZW5kRWFnZXIiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBZcn19LHtrZXk6ImFwcGVuZCIsdmFsdWU6ZnVuY3Rpb24odCxlLG4pe2lmKCFacih0KSl0aHJvdyBuZXcgRXJyb3IoInZhbHVlIHNob3VsZCBiZSBzdHJpbmciKTt2YXIgaT1uZXcgWXIscj1acihuKT9uZXcgbnUoU3RyaW5nKG4pKTpuO2UmJmUudGFpbCYmKGUuX2JlZm9yZVRhaWxTdGF0ZT10aGlzLnN0YXRlKTtmb3IodmFyIHU9MDt1PHQubGVuZ3RoOysrdSlpLmFnZ3JlZ2F0ZSh0aGlzLl9hcHBlbmRDaGFyKHRbdV0sZSxyKSk7cmV0dXJuIG51bGwhPXImJihpLnRhaWxTaGlmdCs9dGhpcy5hcHBlbmRUYWlsKHIpLnRhaWxTaGlmdCksdGhpcy5lYWdlciYmbnVsbCE9ZSYmZS5pbnB1dCYmdCYmaS5hZ2dyZWdhdGUodGhpcy5fYXBwZW5kRWFnZXIoKSksaX19LHtrZXk6InJlbW92ZSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06MCxlPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp0aGlzLnZhbHVlLmxlbmd0aDtyZXR1cm4gdGhpcy5fdmFsdWU9dGhpcy52YWx1ZS5zbGljZSgwLHQpK3RoaXMudmFsdWUuc2xpY2UoZSksbmV3IFlyfX0se2tleToid2l0aFZhbHVlUmVmcmVzaCIsdmFsdWU6ZnVuY3Rpb24odCl7aWYodGhpcy5fcmVmcmVzaGluZ3x8IXRoaXMuaXNJbml0aWFsaXplZClyZXR1cm4gdCgpO3RoaXMuX3JlZnJlc2hpbmc9ITA7dmFyIGU9dGhpcy5yYXdJbnB1dFZhbHVlLG49dGhpcy52YWx1ZSxpPXQoKTtyZXR1cm4gdGhpcy5yYXdJbnB1dFZhbHVlPWUsdGhpcy52YWx1ZSYmdGhpcy52YWx1ZSE9PW4mJjA9PT1uLmluZGV4T2YodGhpcy52YWx1ZSkmJnRoaXMuYXBwZW5kKG4uc2xpY2UodGhpcy52YWx1ZS5sZW5ndGgpLHt9LCIiKSxkZWxldGUgdGhpcy5fcmVmcmVzaGluZyxpfX0se2tleToicnVuSXNvbGF0ZWQiLHZhbHVlOmZ1bmN0aW9uKHQpe2lmKHRoaXMuX2lzb2xhdGVkfHwhdGhpcy5pc0luaXRpYWxpemVkKXJldHVybiB0KHRoaXMpO3RoaXMuX2lzb2xhdGVkPSEwO3ZhciBlPXRoaXMuc3RhdGUsbj10KHRoaXMpO3JldHVybiB0aGlzLnN0YXRlPWUsZGVsZXRlIHRoaXMuX2lzb2xhdGVkLG59fSx7a2V5OiJkb1ByZXBhcmUiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp7fTtyZXR1cm4gdGhpcy5wcmVwYXJlP3RoaXMucHJlcGFyZSh0LHRoaXMsZSk6dH19LHtrZXk6ImRvVmFsaWRhdGUiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybighdGhpcy52YWxpZGF0ZXx8dGhpcy52YWxpZGF0ZSh0aGlzLnZhbHVlLHRoaXMsdCkpJiYoIXRoaXMucGFyZW50fHx0aGlzLnBhcmVudC5kb1ZhbGlkYXRlKHQpKX19LHtrZXk6ImRvQ29tbWl0Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuY29tbWl0JiZ0aGlzLmNvbW1pdCh0aGlzLnZhbHVlLHRoaXMpfX0se2tleToiZG9Gb3JtYXQiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmZvcm1hdD90aGlzLmZvcm1hdCh0LHRoaXMpOnR9fSx7a2V5OiJkb1BhcnNlIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5wYXJzZT90aGlzLnBhcnNlKHQsdGhpcyk6dH19LHtrZXk6InNwbGljZSIsdmFsdWU6ZnVuY3Rpb24odCxlLG4saSl7dmFyIHIsdT10K2Uscz10aGlzLmV4dHJhY3RUYWlsKHUpO3RoaXMuZWFnZXImJihpPWZ1bmN0aW9uKHQpe3N3aXRjaCh0KXtjYXNlIEtyOnJldHVybiAkcjtjYXNlIFdyOnJldHVybiBYcjtkZWZhdWx0OnJldHVybiB0fX0oaSkscj10aGlzLmV4dHJhY3RJbnB1dCgwLHUse3JhdzohMH0pKTt2YXIgYT10aGlzLm5lYXJlc3RJbnB1dFBvcyh0LGU+MSYmMCE9PXQmJiF0aGlzLmVhZ2VyP0dyOmkpLG89bmV3IFlyKHt0YWlsU2hpZnQ6YS10fSkuYWdncmVnYXRlKHRoaXMucmVtb3ZlKGEpKTtpZih0aGlzLmVhZ2VyJiZpIT09R3ImJnI9PT10aGlzLnJhd0lucHV0VmFsdWUpaWYoaT09PSRyKWZvcih2YXIgbDtyPT09dGhpcy5yYXdJbnB1dFZhbHVlJiYobD10aGlzLnZhbHVlLmxlbmd0aCk7KW8uYWdncmVnYXRlKG5ldyBZcih7dGFpbFNoaWZ0Oi0xfSkpLmFnZ3JlZ2F0ZSh0aGlzLnJlbW92ZShsLTEpKTtlbHNlIGk9PT1YciYmcy51bnNoaWZ0KCk7cmV0dXJuIG8uYWdncmVnYXRlKHRoaXMuYXBwZW5kKG4se2lucHV0OiEwfSxzKSl9fSx7a2V5OiJtYXNrRXF1YWxzIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5tYXNrPT09dH19XSksdH0oKTtmdW5jdGlvbiB1dSh0KXtpZihudWxsPT10KXRocm93IG5ldyBFcnJvcigibWFzayBwcm9wZXJ0eSBzaG91bGQgYmUgZGVmaW5lZCIpO3JldHVybiB0IGluc3RhbmNlb2YgUmVnRXhwP2l1Lk1hc2tlZFJlZ0V4cDpacih0KT9pdS5NYXNrZWRQYXR0ZXJuOnQgaW5zdGFuY2VvZiBEYXRlfHx0PT09RGF0ZT9pdS5NYXNrZWREYXRlOnQgaW5zdGFuY2VvZiBOdW1iZXJ8fCJudW1iZXIiPT10eXBlb2YgdHx8dD09PU51bWJlcj9pdS5NYXNrZWROdW1iZXI6QXJyYXkuaXNBcnJheSh0KXx8dD09PUFycmF5P2l1Lk1hc2tlZER5bmFtaWM6aXUuTWFza2VkJiZ0LnByb3RvdHlwZSBpbnN0YW5jZW9mIGl1Lk1hc2tlZD90OnQgaW5zdGFuY2VvZiBpdS5NYXNrZWQ\/dC5jb25zdHJ1Y3Rvcjp0IGluc3RhbmNlb2YgRnVuY3Rpb24\/aXUuTWFza2VkRnVuY3Rpb246KGNvbnNvbGUud2FybigiTWFzayBub3QgZm91bmQgZm9yIG1hc2siLHQpLGl1Lk1hc2tlZCl9ZnVuY3Rpb24gc3UodCl7aWYoaXUuTWFza2VkJiZ0IGluc3RhbmNlb2YgaXUuTWFza2VkKXJldHVybiB0O3ZhciBlPSh0PU9iamVjdC5hc3NpZ24oe30sdCkpLm1hc2s7aWYoaXUuTWFza2VkJiZlIGluc3RhbmNlb2YgaXUuTWFza2VkKXJldHVybiBlO3ZhciBuPXV1KGUpO2lmKCFuKXRocm93IG5ldyBFcnJvcigiTWFza2VkIGNsYXNzIGlzIG5vdCBmb3VuZCBmb3IgcHJvdmlkZWQgbWFzaywgYXBwcm9wcmlhdGUgbW9kdWxlIG5lZWRzIHRvIGJlIGltcG9ydCBtYW51YWxseSBiZWZvcmUgY3JlYXRpbmcgbWFzay4iKTtyZXR1cm4gbmV3IG4odCl9cnUuREVGQVVMVFM9e2Zvcm1hdDpmdW5jdGlvbih0KXtyZXR1cm4gdH0scGFyc2U6ZnVuY3Rpb24odCl7cmV0dXJuIHR9fSxpdS5NYXNrZWQ9cnUsaXUuY3JlYXRlTWFzaz1zdTt2YXIgYXU9WyJtYXNrIl0sb3U9ezA6L1xkLyxhOi9bXHUwMDQxLVx1MDA1QVx1MDA2MS1cdTAwN0FcdTAwQUFcdTAwQjVcdTAwQkFcdTAwQzAtXHUwMEQ2XHUwMEQ4LVx1MDBGNlx1MDBGOC1cdTAyQzFcdTAyQzYtXHUwMkQxXHUwMkUwLVx1MDJFNFx1MDJFQ1x1MDJFRVx1MDM3MC1cdTAzNzRcdTAzNzZcdTAzNzdcdTAzN0EtXHUwMzdEXHUwMzg2XHUwMzg4LVx1MDM4QVx1MDM4Q1x1MDM4RS1cdTAzQTFcdTAzQTMtXHUwM0Y1XHUwM0Y3LVx1MDQ4MVx1MDQ4QS1cdTA1MjdcdTA1MzEtXHUwNTU2XHUwNTU5XHUwNTYxLVx1MDU4N1x1MDVEMC1cdTA1RUFcdTA1RjAtXHUwNUYyXHUwNjIwLVx1MDY0QVx1MDY2RVx1MDY2Rlx1MDY3MS1cdTA2RDNcdTA2RDVcdTA2RTVcdTA2RTZcdTA2RUVcdTA2RUZcdTA2RkEtXHUwNkZDXHUwNkZGXHUwNzEwXHUwNzEyLVx1MDcyRlx1MDc0RC1cdTA3QTVcdTA3QjFcdTA3Q0EtXHUwN0VBXHUwN0Y0XHUwN0Y1XHUwN0ZBXHUwODAwLVx1MDgxNVx1MDgxQVx1MDgyNFx1MDgyOFx1MDg0MC1cdTA4NThcdTA4QTBcdTA4QTItXHUwOEFDXHUwOTA0LVx1MDkzOVx1MDkzRFx1MDk1MFx1MDk1OC1cdTA5NjFcdTA5NzEtXHUwOTc3XHUwOTc5LVx1MDk3Rlx1MDk4NS1cdTA5OENcdTA5OEZcdTA5OTBcdTA5OTMtXHUwOUE4XHUwOUFBLVx1MDlCMFx1MDlCMlx1MDlCNi1cdTA5QjlcdTA5QkRcdTA5Q0VcdTA5RENcdTA5RERcdTA5REYtXHUwOUUxXHUwOUYwXHUwOUYxXHUwQTA1LVx1MEEwQVx1MEEwRlx1MEExMFx1MEExMy1cdTBBMjhcdTBBMkEtXHUwQTMwXHUwQTMyXHUwQTMzXHUwQTM1XHUwQTM2XHUwQTM4XHUwQTM5XHUwQTU5LVx1MEE1Q1x1MEE1RVx1MEE3Mi1cdTBBNzRcdTBBODUtXHUwQThEXHUwQThGLVx1MEE5MVx1MEE5My1cdTBBQThcdTBBQUEtXHUwQUIwXHUwQUIyXHUwQUIzXHUwQUI1LVx1MEFCOVx1MEFCRFx1MEFEMFx1MEFFMFx1MEFFMVx1MEIwNS1cdTBCMENcdTBCMEZcdTBCMTBcdTBCMTMtXHUwQjI4XHUwQjJBLVx1MEIzMFx1MEIzMlx1MEIzM1x1MEIzNS1cdTBCMzlcdTBCM0RcdTBCNUNcdTBCNURcdTBCNUYtXHUwQjYxXHUwQjcxXHUwQjgzXHUwQjg1LVx1MEI4QVx1MEI4RS1cdTBCOTBcdTBCOTItXHUwQjk1XHUwQjk5XHUwQjlBXHUwQjlDXHUwQjlFXHUwQjlGXHUwQkEzXHUwQkE0XHUwQkE4LVx1MEJBQVx1MEJBRS1cdTBCQjlcdTBCRDBcdTBDMDUtXHUwQzBDXHUwQzBFLVx1MEMxMFx1MEMxMi1cdTBDMjhcdTBDMkEtXHUwQzMzXHUwQzM1LVx1MEMzOVx1MEMzRFx1MEM1OFx1MEM1OVx1MEM2MFx1MEM2MVx1MEM4NS1cdTBDOENcdTBDOEUtXHUwQzkwXHUwQzkyLVx1MENBOFx1MENBQS1cdTBDQjNcdTBDQjUtXHUwQ0I5XHUwQ0JEXHUwQ0RFXHUwQ0UwXHUwQ0UxXHUwQ0YxXHUwQ0YyXHUwRDA1LVx1MEQwQ1x1MEQwRS1cdTBEMTBcdTBEMTItXHUwRDNBXHUwRDNEXHUwRDRFXHUwRDYwXHUwRDYxXHUwRDdBLVx1MEQ3Rlx1MEQ4NS1cdTBEOTZcdTBEOUEtXHUwREIxXHUwREIzLVx1MERCQlx1MERCRFx1MERDMC1cdTBEQzZcdTBFMDEtXHUwRTMwXHUwRTMyXHUwRTMzXHUwRTQwLVx1MEU0Nlx1MEU4MVx1MEU4Mlx1MEU4NFx1MEU4N1x1MEU4OFx1MEU4QVx1MEU4RFx1MEU5NC1cdTBFOTdcdTBFOTktXHUwRTlGXHUwRUExLVx1MEVBM1x1MEVBNVx1MEVBN1x1MEVBQVx1MEVBQlx1MEVBRC1cdTBFQjBcdTBFQjJcdTBFQjNcdTBFQkRcdTBFQzAtXHUwRUM0XHUwRUM2XHUwRURDLVx1MEVERlx1MEYwMFx1MEY0MC1cdTBGNDdcdTBGNDktXHUwRjZDXHUwRjg4LVx1MEY4Q1x1MTAwMC1cdTEwMkFcdTEwM0ZcdTEwNTAtXHUxMDU1XHUxMDVBLVx1MTA1RFx1MTA2MVx1MTA2NVx1MTA2Nlx1MTA2RS1cdTEwNzBcdTEwNzUtXHUxMDgxXHUxMDhFXHUxMEEwLVx1MTBDNVx1MTBDN1x1MTBDRFx1MTBEMC1cdTEwRkFcdTEwRkMtXHUxMjQ4XHUxMjRBLVx1MTI0RFx1MTI1MC1cdTEyNTZcdTEyNThcdTEyNUEtXHUxMjVEXHUxMjYwLVx1MTI4OFx1MTI4QS1cdTEyOERcdTEyOTAtXHUxMkIwXHUxMkIyLVx1MTJCNVx1MTJCOC1cdTEyQkVcdTEyQzBcdTEyQzItXHUxMkM1XHUxMkM4LVx1MTJENlx1MTJEOC1cdTEzMTBcdTEzMTItXHUxMzE1XHUxMzE4LVx1MTM1QVx1MTM4MC1cdTEzOEZcdTEzQTAtXHUxM0Y0XHUxNDAxLVx1MTY2Q1x1MTY2Ri1cdTE2N0ZcdTE2ODEtXHUxNjlBXHUxNkEwLVx1MTZFQVx1MTcwMC1cdTE3MENcdTE3MEUtXHUxNzExXHUxNzIwLVx1MTczMVx1MTc0MC1cdTE3NTFcdTE3NjAtXHUxNzZDXHUxNzZFLVx1MTc3MFx1MTc4MC1cdTE3QjNcdTE3RDdcdTE3RENcdTE4MjAtXHUxODc3XHUxODgwLVx1MThBOFx1MThBQVx1MThCMC1cdTE4RjVcdTE5MDAtXHUxOTFDXHUxOTUwLVx1MTk2RFx1MTk3MC1cdTE5NzRcdTE5ODAtXHUxOUFCXHUxOUMxLVx1MTlDN1x1MUEwMC1cdTFBMTZcdTFBMjAtXHUxQTU0XHUxQUE3XHUxQjA1LVx1MUIzM1x1MUI0NS1cdTFCNEJcdTFCODMtXHUxQkEwXHUxQkFFXHUxQkFGXHUxQkJBLVx1MUJFNVx1MUMwMC1cdTFDMjNcdTFDNEQtXHUxQzRGXHUxQzVBLVx1MUM3RFx1MUNFOS1cdTFDRUNcdTFDRUUtXHUxQ0YxXHUxQ0Y1XHUxQ0Y2XHUxRDAwLVx1MURCRlx1MUUwMC1cdTFGMTVcdTFGMTgtXHUxRjFEXHUxRjIwLVx1MUY0NVx1MUY0OC1cdTFGNERcdTFGNTAtXHUxRjU3XHUxRjU5XHUxRjVCXHUxRjVEXHUxRjVGLVx1MUY3RFx1MUY4MC1cdTFGQjRcdTFGQjYtXHUxRkJDXHUxRkJFXHUxRkMyLVx1MUZDNFx1MUZDNi1cdTFGQ0NcdTFGRDAtXHUxRkQzXHUxRkQ2LVx1MUZEQlx1MUZFMC1cdTFGRUNcdTFGRjItXHUxRkY0XHUxRkY2LVx1MUZGQ1x1MjA3MVx1MjA3Rlx1MjA5MC1cdTIwOUNcdTIxMDJcdTIxMDdcdTIxMEEtXHUyMTEzXHUyMTE1XHUyMTE5LVx1MjExRFx1MjEyNFx1MjEyNlx1MjEyOFx1MjEyQS1cdTIxMkRcdTIxMkYtXHUyMTM5XHUyMTNDLVx1MjEzRlx1MjE0NS1cdTIxNDlcdTIxNEVcdTIxODNcdTIxODRcdTJDMDAtXHUyQzJFXHUyQzMwLVx1MkM1RVx1MkM2MC1cdTJDRTRcdTJDRUItXHUyQ0VFXHUyQ0YyXHUyQ0YzXHUyRDAwLVx1MkQyNVx1MkQyN1x1MkQyRFx1MkQzMC1cdTJENjdcdTJENkZcdTJEODAtXHUyRDk2XHUyREEwLVx1MkRBNlx1MkRBOC1cdTJEQUVcdTJEQjAtXHUyREI2XHUyREI4LVx1MkRCRVx1MkRDMC1cdTJEQzZcdTJEQzgtXHUyRENFXHUyREQwLVx1MkRENlx1MkREOC1cdTJEREVcdTJFMkZcdTMwMDVcdTMwMDZcdTMwMzEtXHUzMDM1XHUzMDNCXHUzMDNDXHUzMDQxLVx1MzA5Nlx1MzA5RC1cdTMwOUZcdTMwQTEtXHUzMEZBXHUzMEZDLVx1MzBGRlx1MzEwNS1cdTMxMkRcdTMxMzEtXHUzMThFXHUzMUEwLVx1MzFCQVx1MzFGMC1cdTMxRkZcdTM0MDAtXHU0REI1XHU0RTAwLVx1OUZDQ1x1QTAwMC1cdUE0OENcdUE0RDAtXHVBNEZEXHVBNTAwLVx1QTYwQ1x1QTYxMC1cdUE2MUZcdUE2MkFcdUE2MkJcdUE2NDAtXHVBNjZFXHVBNjdGLVx1QTY5N1x1QTZBMC1cdUE2RTVcdUE3MTctXHVBNzFGXHVBNzIyLVx1QTc4OFx1QTc4Qi1cdUE3OEVcdUE3OTAtXHVBNzkzXHVBN0EwLVx1QTdBQVx1QTdGOC1cdUE4MDFcdUE4MDMtXHVBODA1XHVBODA3LVx1QTgwQVx1QTgwQy1cdUE4MjJcdUE4NDAtXHVBODczXHVBODgyLVx1QThCM1x1QThGMi1cdUE4RjdcdUE4RkJcdUE5MEEtXHVBOTI1XHVBOTMwLVx1QTk0Nlx1QTk2MC1cdUE5N0NcdUE5ODQtXHVBOUIyXHVBOUNGXHVBQTAwLVx1QUEyOFx1QUE0MC1cdUFBNDJcdUFBNDQtXHVBQTRCXHVBQTYwLVx1QUE3Nlx1QUE3QVx1QUE4MC1cdUFBQUZcdUFBQjFcdUFBQjVcdUFBQjZcdUFBQjktXHVBQUJEXHVBQUMwXHVBQUMyXHVBQURCLVx1QUFERFx1QUFFMC1cdUFBRUFcdUFBRjItXHVBQUY0XHVBQjAxLVx1QUIwNlx1QUIwOS1cdUFCMEVcdUFCMTEtXHVBQjE2XHVBQjIwLVx1QUIyNlx1QUIyOC1cdUFCMkVcdUFCQzAtXHVBQkUyXHVBQzAwLVx1RDdBM1x1RDdCMC1cdUQ3QzZcdUQ3Q0ItXHVEN0ZCXHVGOTAwLVx1RkE2RFx1RkE3MC1cdUZBRDlcdUZCMDAtXHVGQjA2XHVGQjEzLVx1RkIxN1x1RkIxRFx1RkIxRi1cdUZCMjhcdUZCMkEtXHVGQjM2XHVGQjM4LVx1RkIzQ1x1RkIzRVx1RkI0MFx1RkI0MVx1RkI0M1x1RkI0NFx1RkI0Ni1cdUZCQjFcdUZCRDMtXHVGRDNEXHVGRDUwLVx1RkQ4Rlx1RkQ5Mi1cdUZEQzdcdUZERjAtXHVGREZCXHVGRTcwLVx1RkU3NFx1RkU3Ni1cdUZFRkNcdUZGMjEtXHVGRjNBXHVGRjQxLVx1RkY1QVx1RkY2Ni1cdUZGQkVcdUZGQzItXHVGRkM3XHVGRkNBLVx1RkZDRlx1RkZEMi1cdUZGRDdcdUZGREEtXHVGRkRDXS8sIioiOi8uL30sbHU9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe3hyKHRoaXMsdCk7dmFyIG49ZS5tYXNrLGk9anIoZSxhdSk7dGhpcy5tYXNrZWQ9c3Uoe21hc2s6bn0pLE9iamVjdC5hc3NpZ24odGhpcyxpKX1yZXR1cm4gT3IodCxbe2tleToicmVzZXQiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5pc0ZpbGxlZD0hMSx0aGlzLm1hc2tlZC5yZXNldCgpfX0se2tleToicmVtb3ZlIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTowLGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0\/YXJndW1lbnRzWzFdOnRoaXMudmFsdWUubGVuZ3RoO3JldHVybiAwPT09dCYmZT49MT8odGhpcy5pc0ZpbGxlZD0hMSx0aGlzLm1hc2tlZC5yZW1vdmUodCxlKSk6bmV3IFlyfX0se2tleToidmFsdWUiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1hc2tlZC52YWx1ZXx8KHRoaXMuaXNGaWxsZWQmJiF0aGlzLmlzT3B0aW9uYWw\/dGhpcy5wbGFjZWhvbGRlckNoYXI6IiIpfX0se2tleToidW5tYXNrZWRWYWx1ZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWFza2VkLnVubWFza2VkVmFsdWV9fSx7a2V5OiJpc0NvbXBsZXRlIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gQm9vbGVhbih0aGlzLm1hc2tlZC52YWx1ZSl8fHRoaXMuaXNPcHRpb25hbH19LHtrZXk6Il9hcHBlbmRDaGFyIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06e307aWYodGhpcy5pc0ZpbGxlZClyZXR1cm4gbmV3IFlyO3ZhciBuPXRoaXMubWFza2VkLnN0YXRlLGk9dGhpcy5tYXNrZWQuX2FwcGVuZENoYXIodCxlKTtyZXR1cm4gaS5pbnNlcnRlZCYmITE9PT10aGlzLmRvVmFsaWRhdGUoZSkmJihpLmluc2VydGVkPWkucmF3SW5zZXJ0ZWQ9IiIsdGhpcy5tYXNrZWQuc3RhdGU9biksaS5pbnNlcnRlZHx8dGhpcy5pc09wdGlvbmFsfHx0aGlzLmxhenl8fGUuaW5wdXR8fChpLmluc2VydGVkPXRoaXMucGxhY2Vob2xkZXJDaGFyKSxpLnNraXA9IWkuaW5zZXJ0ZWQmJiF0aGlzLmlzT3B0aW9uYWwsdGhpcy5pc0ZpbGxlZD1Cb29sZWFuKGkuaW5zZXJ0ZWQpLGl9fSx7a2V5OiJhcHBlbmQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ7cmV0dXJuKHQ9dGhpcy5tYXNrZWQpLmFwcGVuZC5hcHBseSh0LGFyZ3VtZW50cyl9fSx7a2V5OiJfYXBwZW5kUGxhY2Vob2xkZXIiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9bmV3IFlyO3JldHVybiB0aGlzLmlzRmlsbGVkfHx0aGlzLmlzT3B0aW9uYWx8fCh0aGlzLmlzRmlsbGVkPSEwLHQuaW5zZXJ0ZWQ9dGhpcy5wbGFjZWhvbGRlckNoYXIpLHR9fSx7a2V5OiJfYXBwZW5kRWFnZXIiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBZcn19LHtrZXk6ImV4dHJhY3RUYWlsIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0O3JldHVybih0PXRoaXMubWFza2VkKS5leHRyYWN0VGFpbC5hcHBseSh0LGFyZ3VtZW50cyl9fSx7a2V5OiJhcHBlbmRUYWlsIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0O3JldHVybih0PXRoaXMubWFza2VkKS5hcHBlbmRUYWlsLmFwcGx5KHQsYXJndW1lbnRzKX19LHtrZXk6ImV4dHJhY3RJbnB1dCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06MCxlPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp0aGlzLnZhbHVlLmxlbmd0aCxuPWFyZ3VtZW50cy5sZW5ndGg+Mj9hcmd1bWVudHNbMl06dm9pZCAwO3JldHVybiB0aGlzLm1hc2tlZC5leHRyYWN0SW5wdXQodCxlLG4pfX0se2tleToibmVhcmVzdElucHV0UG9zIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06R3Isbj0wLGk9dGhpcy52YWx1ZS5sZW5ndGgscj1NYXRoLm1pbihNYXRoLm1heCh0LG4pLGkpO3N3aXRjaChlKXtjYXNlIEtyOmNhc2UgJHI6cmV0dXJuIHRoaXMuaXNDb21wbGV0ZT9yOm47Y2FzZSBXcjpjYXNlIFhyOnJldHVybiB0aGlzLmlzQ29tcGxldGU\/cjppO2RlZmF1bHQ6cmV0dXJuIHJ9fX0se2tleToiZG9WYWxpZGF0ZSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdCxlO3JldHVybih0PXRoaXMubWFza2VkKS5kb1ZhbGlkYXRlLmFwcGx5KHQsYXJndW1lbnRzKSYmKCF0aGlzLnBhcmVudHx8KGU9dGhpcy5wYXJlbnQpLmRvVmFsaWRhdGUuYXBwbHkoZSxhcmd1bWVudHMpKX19LHtrZXk6ImRvQ29tbWl0Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMubWFza2VkLmRvQ29tbWl0KCl9fSx7a2V5OiJzdGF0ZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJue21hc2tlZDp0aGlzLm1hc2tlZC5zdGF0ZSxpc0ZpbGxlZDp0aGlzLmlzRmlsbGVkfX0sc2V0OmZ1bmN0aW9uKHQpe3RoaXMubWFza2VkLnN0YXRlPXQubWFza2VkLHRoaXMuaXNGaWxsZWQ9dC5pc0ZpbGxlZH19XSksdH0oKSxodT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7eHIodGhpcyx0KSxPYmplY3QuYXNzaWduKHRoaXMsZSksdGhpcy5fdmFsdWU9IiIsdGhpcy5pc0ZpeGVkPSEwfXJldHVybiBPcih0LFt7a2V5OiJ2YWx1ZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3ZhbHVlfX0se2tleToidW5tYXNrZWRWYWx1ZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXNVbm1hc2tpbmc\/dGhpcy52YWx1ZToiIn19LHtrZXk6InJlc2V0Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuX2lzUmF3SW5wdXQ9ITEsdGhpcy5fdmFsdWU9IiJ9fSx7a2V5OiJyZW1vdmUiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0\/YXJndW1lbnRzWzBdOjAsZT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06dGhpcy5fdmFsdWUubGVuZ3RoO3JldHVybiB0aGlzLl92YWx1ZT10aGlzLl92YWx1ZS5zbGljZSgwLHQpK3RoaXMuX3ZhbHVlLnNsaWNlKGUpLHRoaXMuX3ZhbHVlfHwodGhpcy5faXNSYXdJbnB1dD0hMSksbmV3IFlyfX0se2tleToibmVhcmVzdElucHV0UG9zIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06R3Isbj0wLGk9dGhpcy5fdmFsdWUubGVuZ3RoO3N3aXRjaChlKXtjYXNlIEtyOmNhc2UgJHI6cmV0dXJuIG47ZGVmYXVsdDpyZXR1cm4gaX19fSx7a2V5OiJleHRyYWN0SW5wdXQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0\/YXJndW1lbnRzWzBdOjAsZT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06dGhpcy5fdmFsdWUubGVuZ3RoLG49YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0\/YXJndW1lbnRzWzJdOnt9O3JldHVybiBuLnJhdyYmdGhpcy5faXNSYXdJbnB1dCYmdGhpcy5fdmFsdWUuc2xpY2UodCxlKXx8IiJ9fSx7a2V5OiJpc0NvbXBsZXRlIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4hMH19LHtrZXk6ImlzRmlsbGVkIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gQm9vbGVhbih0aGlzLl92YWx1ZSl9fSx7a2V5OiJfYXBwZW5kQ2hhciIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0\/YXJndW1lbnRzWzFdOnt9LG49bmV3IFlyO2lmKHRoaXMuX3ZhbHVlKXJldHVybiBuO3ZhciBpPXRoaXMuY2hhcj09PXQscj1pJiYodGhpcy5pc1VubWFza2luZ3x8ZS5pbnB1dHx8ZS5yYXcpJiYhdGhpcy5lYWdlciYmIWUudGFpbDtyZXR1cm4gciYmKG4ucmF3SW5zZXJ0ZWQ9dGhpcy5jaGFyKSx0aGlzLl92YWx1ZT1uLmluc2VydGVkPXRoaXMuY2hhcix0aGlzLl9pc1Jhd0lucHV0PXImJihlLnJhd3x8ZS5pbnB1dCksbn19LHtrZXk6Il9hcHBlbmRFYWdlciIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYXBwZW5kQ2hhcih0aGlzLmNoYXIpfX0se2tleToiX2FwcGVuZFBsYWNlaG9sZGVyIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PW5ldyBZcjtyZXR1cm4gdGhpcy5fdmFsdWV8fCh0aGlzLl92YWx1ZT10Lmluc2VydGVkPXRoaXMuY2hhciksdH19LHtrZXk6ImV4dHJhY3RUYWlsIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXXx8dGhpcy52YWx1ZS5sZW5ndGgsbmV3IG51KCIiKX19LHtrZXk6ImFwcGVuZFRhaWwiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiBacih0KSYmKHQ9bmV3IG51KFN0cmluZyh0KSkpLHQuYXBwZW5kVG8odGhpcyl9fSx7a2V5OiJhcHBlbmQiLHZhbHVlOmZ1bmN0aW9uKHQsZSxuKXt2YXIgaT10aGlzLl9hcHBlbmRDaGFyKHRbMF0sZSk7cmV0dXJuIG51bGwhPW4mJihpLnRhaWxTaGlmdCs9dGhpcy5hcHBlbmRUYWlsKG4pLnRhaWxTaGlmdCksaX19LHtrZXk6ImRvQ29tbWl0Iix2YWx1ZTpmdW5jdGlvbigpe319LHtrZXk6InN0YXRlIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm57X3ZhbHVlOnRoaXMuX3ZhbHVlLF9pc1Jhd0lucHV0OnRoaXMuX2lzUmF3SW5wdXR9fSxzZXQ6ZnVuY3Rpb24odCl7T2JqZWN0LmFzc2lnbih0aGlzLHQpfX1dKSx0fSgpLGN1PVsiY2h1bmtzIl0sZnU9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0\/YXJndW1lbnRzWzBdOltdLG49YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0\/YXJndW1lbnRzWzFdOjA7eHIodGhpcyx0KSx0aGlzLmNodW5rcz1lLHRoaXMuZnJvbT1ufXJldHVybiBPcih0LFt7a2V5OiJ0b1N0cmluZyIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jaHVua3MubWFwKFN0cmluZykuam9pbigiIil9fSx7a2V5OiJleHRlbmQiLHZhbHVlOmZ1bmN0aW9uKGUpe2lmKFN0cmluZyhlKSl7WnIoZSkmJihlPW5ldyBudShTdHJpbmcoZSkpKTt2YXIgbj10aGlzLmNodW5rc1t0aGlzLmNodW5rcy5sZW5ndGgtMV0saT1uJiYobi5zdG9wPT09ZS5zdG9wfHxudWxsPT1lLnN0b3ApJiZlLmZyb209PT1uLmZyb20rbi50b1N0cmluZygpLmxlbmd0aDtpZihlIGluc3RhbmNlb2YgbnUpaT9uLmV4dGVuZChlLnRvU3RyaW5nKCkpOnRoaXMuY2h1bmtzLnB1c2goZSk7ZWxzZSBpZihlIGluc3RhbmNlb2YgdCl7aWYobnVsbD09ZS5zdG9wKWZvcih2YXIgcjtlLmNodW5rcy5sZW5ndGgmJm51bGw9PWUuY2h1bmtzWzBdLnN0b3A7KShyPWUuY2h1bmtzLnNoaWZ0KCkpLmZyb20rPWUuZnJvbSx0aGlzLmV4dGVuZChyKTtlLnRvU3RyaW5nKCkmJihlLnN0b3A9ZS5ibG9ja0luZGV4LHRoaXMuY2h1bmtzLnB1c2goZSkpfX19fSx7a2V5OiJhcHBlbmRUbyIsdmFsdWU6ZnVuY3Rpb24oZSl7aWYoIShlIGluc3RhbmNlb2YgaXUuTWFza2VkUGF0dGVybikpcmV0dXJuIG5ldyBudSh0aGlzLnRvU3RyaW5nKCkpLmFwcGVuZFRvKGUpO2Zvcih2YXIgbj1uZXcgWXIsaT0wO2k8dGhpcy5jaHVua3MubGVuZ3RoJiYhbi5za2lwOysraSl7dmFyIHI9dGhpcy5jaHVua3NbaV0sdT1lLl9tYXBQb3NUb0Jsb2NrKGUudmFsdWUubGVuZ3RoKSxzPXIuc3RvcCxhPXZvaWQgMDtpZihudWxsIT1zJiYoIXV8fHUuaW5kZXg8PXMpJiYoKHIgaW5zdGFuY2VvZiB0fHxlLl9zdG9wcy5pbmRleE9mKHMpPj0wKSYmbi5hZ2dyZWdhdGUoZS5fYXBwZW5kUGxhY2Vob2xkZXIocykpLGE9ciBpbnN0YW5jZW9mIHQmJmUuX2Jsb2Nrc1tzXSksYSl7dmFyIG89YS5hcHBlbmRUYWlsKHIpO28uc2tpcD0hMSxuLmFnZ3JlZ2F0ZShvKSxlLl92YWx1ZSs9by5pbnNlcnRlZDt2YXIgbD1yLnRvU3RyaW5nKCkuc2xpY2Uoby5yYXdJbnNlcnRlZC5sZW5ndGgpO2wmJm4uYWdncmVnYXRlKGUuYXBwZW5kKGwse3RhaWw6ITB9KSl9ZWxzZSBuLmFnZ3JlZ2F0ZShlLmFwcGVuZChyLnRvU3RyaW5nKCkse3RhaWw6ITB9KSl9cmV0dXJuIG59fSx7a2V5OiJzdGF0ZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJue2NodW5rczp0aGlzLmNodW5rcy5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0LnN0YXRlfSkpLGZyb206dGhpcy5mcm9tLHN0b3A6dGhpcy5zdG9wLGJsb2NrSW5kZXg6dGhpcy5ibG9ja0luZGV4fX0sc2V0OmZ1bmN0aW9uKGUpe3ZhciBuPWUuY2h1bmtzLGk9anIoZSxjdSk7T2JqZWN0LmFzc2lnbih0aGlzLGkpLHRoaXMuY2h1bmtzPW4ubWFwKChmdW5jdGlvbihlKXt2YXIgbj0iY2h1bmtzImluIGU\/bmV3IHQ6bmV3IG51O3JldHVybiBuLnN0YXRlPWUsbn0pKX19LHtrZXk6InVuc2hpZnQiLHZhbHVlOmZ1bmN0aW9uKHQpe2lmKCF0aGlzLmNodW5rcy5sZW5ndGh8fG51bGwhPXQmJnRoaXMuZnJvbT49dClyZXR1cm4iIjtmb3IodmFyIGU9bnVsbCE9dD90LXRoaXMuZnJvbTp0LG49MDtuPHRoaXMuY2h1bmtzLmxlbmd0aDspe3ZhciBpPXRoaXMuY2h1bmtzW25dLHI9aS51bnNoaWZ0KGUpO2lmKGkudG9TdHJpbmcoKSl7aWYoIXIpYnJlYWs7KytufWVsc2UgdGhpcy5jaHVua3Muc3BsaWNlKG4sMSk7aWYocilyZXR1cm4gcn1yZXR1cm4iIn19LHtrZXk6InNoaWZ0Iix2YWx1ZTpmdW5jdGlvbigpe2lmKCF0aGlzLmNodW5rcy5sZW5ndGgpcmV0dXJuIiI7Zm9yKHZhciB0PXRoaXMuY2h1bmtzLmxlbmd0aC0xOzA8PXQ7KXt2YXIgZT10aGlzLmNodW5rc1t0XSxuPWUuc2hpZnQoKTtpZihlLnRvU3RyaW5nKCkpe2lmKCFuKWJyZWFrOy0tdH1lbHNlIHRoaXMuY2h1bmtzLnNwbGljZSh0LDEpO2lmKG4pcmV0dXJuIG59cmV0dXJuIiJ9fV0pLHR9KCkscHU9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUsbil7eHIodGhpcyx0KSx0aGlzLm1hc2tlZD1lLHRoaXMuX2xvZz1bXTt2YXIgaT1lLl9tYXBQb3NUb0Jsb2NrKG4pfHwobjwwP3tpbmRleDowLG9mZnNldDowfTp7aW5kZXg6dGhpcy5tYXNrZWQuX2Jsb2Nrcy5sZW5ndGgsb2Zmc2V0OjB9KSxyPWkub2Zmc2V0LHU9aS5pbmRleDt0aGlzLm9mZnNldD1yLHRoaXMuaW5kZXg9dSx0aGlzLm9rPSExfXJldHVybiBPcih0LFt7a2V5OiJibG9jayIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWFza2VkLl9ibG9ja3NbdGhpcy5pbmRleF19fSx7a2V5OiJwb3MiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1hc2tlZC5fYmxvY2tTdGFydFBvcyh0aGlzLmluZGV4KSt0aGlzLm9mZnNldH19LHtrZXk6InN0YXRlIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm57aW5kZXg6dGhpcy5pbmRleCxvZmZzZXQ6dGhpcy5vZmZzZXQsb2s6dGhpcy5va319LHNldDpmdW5jdGlvbih0KXtPYmplY3QuYXNzaWduKHRoaXMsdCl9fSx7a2V5OiJwdXNoU3RhdGUiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5fbG9nLnB1c2godGhpcy5zdGF0ZSl9fSx7a2V5OiJwb3BTdGF0ZSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9sb2cucG9wKCk7cmV0dXJuIHRoaXMuc3RhdGU9dCx0fX0se2tleToiYmluZEJsb2NrIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuYmxvY2t8fCh0aGlzLmluZGV4PDAmJih0aGlzLmluZGV4PTAsdGhpcy5vZmZzZXQ9MCksdGhpcy5pbmRleD49dGhpcy5tYXNrZWQuX2Jsb2Nrcy5sZW5ndGgmJih0aGlzLmluZGV4PXRoaXMubWFza2VkLl9ibG9ja3MubGVuZ3RoLTEsdGhpcy5vZmZzZXQ9dGhpcy5ibG9jay52YWx1ZS5sZW5ndGgpKX19LHtrZXk6Il9wdXNoTGVmdCIsdmFsdWU6ZnVuY3Rpb24odCl7Zm9yKHRoaXMucHVzaFN0YXRlKCksdGhpcy5iaW5kQmxvY2soKTswPD10aGlzLmluZGV4Oy0tdGhpcy5pbmRleCx0aGlzLm9mZnNldD0obnVsbD09PShlPXRoaXMuYmxvY2spfHx2b2lkIDA9PT1lP3ZvaWQgMDplLnZhbHVlLmxlbmd0aCl8fDApe3ZhciBlO2lmKHQoKSlyZXR1cm4gdGhpcy5vaz0hMH1yZXR1cm4gdGhpcy5vaz0hMX19LHtrZXk6Il9wdXNoUmlnaHQiLHZhbHVlOmZ1bmN0aW9uKHQpe2Zvcih0aGlzLnB1c2hTdGF0ZSgpLHRoaXMuYmluZEJsb2NrKCk7dGhpcy5pbmRleDx0aGlzLm1hc2tlZC5fYmxvY2tzLmxlbmd0aDsrK3RoaXMuaW5kZXgsdGhpcy5vZmZzZXQ9MClpZih0KCkpcmV0dXJuIHRoaXMub2s9ITA7cmV0dXJuIHRoaXMub2s9ITF9fSx7a2V5OiJwdXNoTGVmdEJlZm9yZUZpbGxlZCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3JldHVybiB0aGlzLl9wdXNoTGVmdCgoZnVuY3Rpb24oKXtpZighdC5ibG9jay5pc0ZpeGVkJiZ0LmJsb2NrLnZhbHVlKXJldHVybiB0Lm9mZnNldD10LmJsb2NrLm5lYXJlc3RJbnB1dFBvcyh0Lm9mZnNldCwkciksMCE9PXQub2Zmc2V0fHx2b2lkIDB9KSl9fSx7a2V5OiJwdXNoTGVmdEJlZm9yZUlucHV0Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXM7cmV0dXJuIHRoaXMuX3B1c2hMZWZ0KChmdW5jdGlvbigpe2lmKCF0LmJsb2NrLmlzRml4ZWQpcmV0dXJuIHQub2Zmc2V0PXQuYmxvY2submVhcmVzdElucHV0UG9zKHQub2Zmc2V0LEtyKSwhMH0pKX19LHtrZXk6InB1c2hMZWZ0QmVmb3JlUmVxdWlyZWQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcztyZXR1cm4gdGhpcy5fcHVzaExlZnQoKGZ1bmN0aW9uKCl7aWYoISh0LmJsb2NrLmlzRml4ZWR8fHQuYmxvY2suaXNPcHRpb25hbCYmIXQuYmxvY2sudmFsdWUpKXJldHVybiB0Lm9mZnNldD10LmJsb2NrLm5lYXJlc3RJbnB1dFBvcyh0Lm9mZnNldCxLciksITB9KSl9fSx7a2V5OiJwdXNoUmlnaHRCZWZvcmVGaWxsZWQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcztyZXR1cm4gdGhpcy5fcHVzaFJpZ2h0KChmdW5jdGlvbigpe2lmKCF0LmJsb2NrLmlzRml4ZWQmJnQuYmxvY2sudmFsdWUpcmV0dXJuIHQub2Zmc2V0PXQuYmxvY2submVhcmVzdElucHV0UG9zKHQub2Zmc2V0LFhyKSx0Lm9mZnNldCE9PXQuYmxvY2sudmFsdWUubGVuZ3RofHx2b2lkIDB9KSl9fSx7a2V5OiJwdXNoUmlnaHRCZWZvcmVJbnB1dCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3JldHVybiB0aGlzLl9wdXNoUmlnaHQoKGZ1bmN0aW9uKCl7aWYoIXQuYmxvY2suaXNGaXhlZClyZXR1cm4gdC5vZmZzZXQ9dC5ibG9jay5uZWFyZXN0SW5wdXRQb3ModC5vZmZzZXQsR3IpLCEwfSkpfX0se2tleToicHVzaFJpZ2h0QmVmb3JlUmVxdWlyZWQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcztyZXR1cm4gdGhpcy5fcHVzaFJpZ2h0KChmdW5jdGlvbigpe2lmKCEodC5ibG9jay5pc0ZpeGVkfHx0LmJsb2NrLmlzT3B0aW9uYWwmJiF0LmJsb2NrLnZhbHVlKSlyZXR1cm4gdC5vZmZzZXQ9dC5ibG9jay5uZWFyZXN0SW5wdXRQb3ModC5vZmZzZXQsR3IpLCEwfSkpfX1dKSx0fSgpLGR1PWZ1bmN0aW9uKHQpe1ByKG4sdCk7dmFyIGU9VnIobik7ZnVuY3Rpb24gbigpe3JldHVybiB4cih0aGlzLG4pLGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiBPcihuLFt7a2V5OiJfdXBkYXRlIix2YWx1ZTpmdW5jdGlvbih0KXt0Lm1hc2smJih0LnZhbGlkYXRlPWZ1bmN0aW9uKGUpe3JldHVybiBlLnNlYXJjaCh0Lm1hc2spPj0wfSksTnIoVHIobi5wcm90b3R5cGUpLCJfdXBkYXRlIix0aGlzKS5jYWxsKHRoaXMsdCl9fV0pLG59KHJ1KTtpdS5NYXNrZWRSZWdFeHA9ZHU7dmFyIHZ1PVsiX2Jsb2NrcyJdLGd1PWZ1bmN0aW9uKHQpe1ByKG4sdCk7dmFyIGU9VnIobik7ZnVuY3Rpb24gbigpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTp7fTtyZXR1cm4geHIodGhpcyxuKSx0LmRlZmluaXRpb25zPU9iamVjdC5hc3NpZ24oe30sb3UsdC5kZWZpbml0aW9ucyksZS5jYWxsKHRoaXMsT2JqZWN0LmFzc2lnbih7fSxuLkRFRkFVTFRTLHQpKX1yZXR1cm4gT3Iobixbe2tleToiX3VwZGF0ZSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06e307dC5kZWZpbml0aW9ucz1PYmplY3QuYXNzaWduKHt9LHRoaXMuZGVmaW5pdGlvbnMsdC5kZWZpbml0aW9ucyksTnIoVHIobi5wcm90b3R5cGUpLCJfdXBkYXRlIix0aGlzKS5jYWxsKHRoaXMsdCksdGhpcy5fcmVidWlsZE1hc2soKX19LHtrZXk6Il9yZWJ1aWxkTWFzayIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dGhpcy5kZWZpbml0aW9uczt0aGlzLl9ibG9ja3M9W10sdGhpcy5fc3RvcHM9W10sdGhpcy5fbWFza2VkQmxvY2tzPXt9O3ZhciBpPXRoaXMubWFzaztpZihpJiZlKWZvcih2YXIgcj0hMSx1PSExLHM9MDtzPGkubGVuZ3RoOysrcyl7aWYodGhpcy5ibG9ja3MpaWYoImNvbnRpbnVlIj09PWZ1bmN0aW9uKCl7dmFyIGU9aS5zbGljZShzKSxuPU9iamVjdC5rZXlzKHQuYmxvY2tzKS5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiAwPT09ZS5pbmRleE9mKHQpfSkpO24uc29ydCgoZnVuY3Rpb24odCxlKXtyZXR1cm4gZS5sZW5ndGgtdC5sZW5ndGh9KSk7dmFyIHI9blswXTtpZihyKXt2YXIgdT1zdShPYmplY3QuYXNzaWduKHtwYXJlbnQ6dCxsYXp5OnQubGF6eSxlYWdlcjp0LmVhZ2VyLHBsYWNlaG9sZGVyQ2hhcjp0LnBsYWNlaG9sZGVyQ2hhcixvdmVyd3JpdGU6dC5vdmVyd3JpdGV9LHQuYmxvY2tzW3JdKSk7cmV0dXJuIHUmJih0Ll9ibG9ja3MucHVzaCh1KSx0Ll9tYXNrZWRCbG9ja3Nbcl18fCh0Ll9tYXNrZWRCbG9ja3Nbcl09W10pLHQuX21hc2tlZEJsb2Nrc1tyXS5wdXNoKHQuX2Jsb2Nrcy5sZW5ndGgtMSkpLHMrPXIubGVuZ3RoLTEsImNvbnRpbnVlIn19KCkpY29udGludWU7dmFyIGE9aVtzXSxvPWEgaW4gZTtpZihhIT09bi5TVE9QX0NIQVIpaWYoInsiIT09YSYmIn0iIT09YSlpZigiWyIhPT1hJiYiXSIhPT1hKXtpZihhPT09bi5FU0NBUEVfQ0hBUil7aWYoKytzLCEoYT1pW3NdKSlicmVhaztvPSExfXZhciBsPW8\/bmV3IGx1KHtwYXJlbnQ6dGhpcyxsYXp5OnRoaXMubGF6eSxlYWdlcjp0aGlzLmVhZ2VyLHBsYWNlaG9sZGVyQ2hhcjp0aGlzLnBsYWNlaG9sZGVyQ2hhcixtYXNrOmVbYV0saXNPcHRpb25hbDp1fSk6bmV3IGh1KHtjaGFyOmEsZWFnZXI6dGhpcy5lYWdlcixpc1VubWFza2luZzpyfSk7dGhpcy5fYmxvY2tzLnB1c2gobCl9ZWxzZSB1PSF1O2Vsc2Ugcj0hcjtlbHNlIHRoaXMuX3N0b3BzLnB1c2godGhpcy5fYmxvY2tzLmxlbmd0aCl9fX0se2tleToic3RhdGUiLGdldDpmdW5jdGlvbigpe3JldHVybiBPYmplY3QuYXNzaWduKHt9LE5yKFRyKG4ucHJvdG90eXBlKSwic3RhdGUiLHRoaXMpLHtfYmxvY2tzOnRoaXMuX2Jsb2Nrcy5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0LnN0YXRlfSkpfSl9LHNldDpmdW5jdGlvbih0KXt2YXIgZT10Ll9ibG9ja3MsaT1qcih0LHZ1KTt0aGlzLl9ibG9ja3MuZm9yRWFjaCgoZnVuY3Rpb24odCxuKXtyZXR1cm4gdC5zdGF0ZT1lW25dfSkpLHpyKFRyKG4ucHJvdG90eXBlKSwic3RhdGUiLGksdGhpcywhMCl9fSx7a2V5OiJyZXNldCIsdmFsdWU6ZnVuY3Rpb24oKXtOcihUcihuLnByb3RvdHlwZSksInJlc2V0Iix0aGlzKS5jYWxsKHRoaXMpLHRoaXMuX2Jsb2Nrcy5mb3JFYWNoKChmdW5jdGlvbih0KXtyZXR1cm4gdC5yZXNldCgpfSkpfX0se2tleToiaXNDb21wbGV0ZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2Jsb2Nrcy5ldmVyeSgoZnVuY3Rpb24odCl7cmV0dXJuIHQuaXNDb21wbGV0ZX0pKX19LHtrZXk6ImlzRmlsbGVkIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYmxvY2tzLmV2ZXJ5KChmdW5jdGlvbih0KXtyZXR1cm4gdC5pc0ZpbGxlZH0pKX19LHtrZXk6ImlzRml4ZWQiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9ibG9ja3MuZXZlcnkoKGZ1bmN0aW9uKHQpe3JldHVybiB0LmlzRml4ZWR9KSl9fSx7a2V5OiJpc09wdGlvbmFsIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYmxvY2tzLmV2ZXJ5KChmdW5jdGlvbih0KXtyZXR1cm4gdC5pc09wdGlvbmFsfSkpfX0se2tleToiZG9Db21taXQiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5fYmxvY2tzLmZvckVhY2goKGZ1bmN0aW9uKHQpe3JldHVybiB0LmRvQ29tbWl0KCl9KSksTnIoVHIobi5wcm90b3R5cGUpLCJkb0NvbW1pdCIsdGhpcykuY2FsbCh0aGlzKX19LHtrZXk6InVubWFza2VkVmFsdWUiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9ibG9ja3MucmVkdWNlKChmdW5jdGlvbih0LGUpe3JldHVybiB0K2UudW5tYXNrZWRWYWx1ZX0pLCIiKX0sc2V0OmZ1bmN0aW9uKHQpe3pyKFRyKG4ucHJvdG90eXBlKSwidW5tYXNrZWRWYWx1ZSIsdCx0aGlzLCEwKX19LHtrZXk6InZhbHVlIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYmxvY2tzLnJlZHVjZSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdCtlLnZhbHVlfSksIiIpfSxzZXQ6ZnVuY3Rpb24odCl7enIoVHIobi5wcm90b3R5cGUpLCJ2YWx1ZSIsdCx0aGlzLCEwKX19LHtrZXk6ImFwcGVuZFRhaWwiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiBOcihUcihuLnByb3RvdHlwZSksImFwcGVuZFRhaWwiLHRoaXMpLmNhbGwodGhpcyx0KS5hZ2dyZWdhdGUodGhpcy5fYXBwZW5kUGxhY2Vob2xkZXIoKSl9fSx7a2V5OiJfYXBwZW5kRWFnZXIiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQsZT1uZXcgWXIsbj1udWxsPT09KHQ9dGhpcy5fbWFwUG9zVG9CbG9jayh0aGlzLnZhbHVlLmxlbmd0aCkpfHx2b2lkIDA9PT10P3ZvaWQgMDp0LmluZGV4O2lmKG51bGw9PW4pcmV0dXJuIGU7dGhpcy5fYmxvY2tzW25dLmlzRmlsbGVkJiYrK247Zm9yKHZhciBpPW47aTx0aGlzLl9ibG9ja3MubGVuZ3RoOysraSl7dmFyIHI9dGhpcy5fYmxvY2tzW2ldLl9hcHBlbmRFYWdlcigpO2lmKCFyLmluc2VydGVkKWJyZWFrO2UuYWdncmVnYXRlKHIpfXJldHVybiBlfX0se2tleToiX2FwcGVuZENoYXJSYXciLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp7fSxuPXRoaXMuX21hcFBvc1RvQmxvY2sodGhpcy52YWx1ZS5sZW5ndGgpLGk9bmV3IFlyO2lmKCFuKXJldHVybiBpO2Zvcih2YXIgcj1uLmluZGV4OzsrK3Ipe3ZhciB1LHM9dGhpcy5fYmxvY2tzW3JdO2lmKCFzKWJyZWFrO3ZhciBhPXMuX2FwcGVuZENoYXIodCxPYmplY3QuYXNzaWduKHt9LGUse19iZWZvcmVUYWlsU3RhdGU6bnVsbD09PSh1PWUuX2JlZm9yZVRhaWxTdGF0ZSl8fHZvaWQgMD09PXU\/dm9pZCAwOnUuX2Jsb2Nrc1tyXX0pKSxvPWEuc2tpcDtpZihpLmFnZ3JlZ2F0ZShhKSxvfHxhLnJhd0luc2VydGVkKWJyZWFrfXJldHVybiBpfX0se2tleToiZXh0cmFjdFRhaWwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTowLG49YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0\/YXJndW1lbnRzWzFdOnRoaXMudmFsdWUubGVuZ3RoLGk9bmV3IGZ1O3JldHVybiBlPT09bnx8dGhpcy5fZm9yRWFjaEJsb2Nrc0luUmFuZ2UoZSxuLChmdW5jdGlvbihlLG4scix1KXt2YXIgcz1lLmV4dHJhY3RUYWlsKHIsdSk7cy5zdG9wPXQuX2ZpbmRTdG9wQmVmb3JlKG4pLHMuZnJvbT10Ll9ibG9ja1N0YXJ0UG9zKG4pLHMgaW5zdGFuY2VvZiBmdSYmKHMuYmxvY2tJbmRleD1uKSxpLmV4dGVuZChzKX0pKSxpfX0se2tleToiZXh0cmFjdElucHV0Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTowLGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0\/YXJndW1lbnRzWzFdOnRoaXMudmFsdWUubGVuZ3RoLG49YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0\/YXJndW1lbnRzWzJdOnt9O2lmKHQ9PT1lKXJldHVybiIiO3ZhciBpPSIiO3JldHVybiB0aGlzLl9mb3JFYWNoQmxvY2tzSW5SYW5nZSh0LGUsKGZ1bmN0aW9uKHQsZSxyLHUpe2krPXQuZXh0cmFjdElucHV0KHIsdSxuKX0pKSxpfX0se2tleToiX2ZpbmRTdG9wQmVmb3JlIix2YWx1ZTpmdW5jdGlvbih0KXtmb3IodmFyIGUsbj0wO248dGhpcy5fc3RvcHMubGVuZ3RoOysrbil7dmFyIGk9dGhpcy5fc3RvcHNbbl07aWYoIShpPD10KSlicmVhaztlPWl9cmV0dXJuIGV9fSx7a2V5OiJfYXBwZW5kUGxhY2Vob2xkZXIiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsbj1uZXcgWXI7aWYodGhpcy5sYXp5JiZudWxsPT10KXJldHVybiBuO3ZhciBpPXRoaXMuX21hcFBvc1RvQmxvY2sodGhpcy52YWx1ZS5sZW5ndGgpO2lmKCFpKXJldHVybiBuO3ZhciByPWkuaW5kZXgsdT1udWxsIT10P3Q6dGhpcy5fYmxvY2tzLmxlbmd0aDtyZXR1cm4gdGhpcy5fYmxvY2tzLnNsaWNlKHIsdSkuZm9yRWFjaCgoZnVuY3Rpb24oaSl7aWYoIWkubGF6eXx8bnVsbCE9dCl7dmFyIHI9bnVsbCE9aS5fYmxvY2tzP1tpLl9ibG9ja3MubGVuZ3RoXTpbXSx1PWkuX2FwcGVuZFBsYWNlaG9sZGVyLmFwcGx5KGkscik7ZS5fdmFsdWUrPXUuaW5zZXJ0ZWQsbi5hZ2dyZWdhdGUodSl9fSkpLG59fSx7a2V5OiJfbWFwUG9zVG9CbG9jayIsdmFsdWU6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPSIiLG49MDtuPHRoaXMuX2Jsb2Nrcy5sZW5ndGg7KytuKXt2YXIgaT10aGlzLl9ibG9ja3Nbbl0scj1lLmxlbmd0aDtpZih0PD0oZSs9aS52YWx1ZSkubGVuZ3RoKXJldHVybntpbmRleDpuLG9mZnNldDp0LXJ9fX19LHtrZXk6Il9ibG9ja1N0YXJ0UG9zIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fYmxvY2tzLnNsaWNlKDAsdCkucmVkdWNlKChmdW5jdGlvbih0LGUpe3JldHVybiB0K2UudmFsdWUubGVuZ3RofSksMCl9fSx7a2V5OiJfZm9yRWFjaEJsb2Nrc0luUmFuZ2UiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp0aGlzLnZhbHVlLmxlbmd0aCxuPWFyZ3VtZW50cy5sZW5ndGg+Mj9hcmd1bWVudHNbMl06dm9pZCAwLGk9dGhpcy5fbWFwUG9zVG9CbG9jayh0KTtpZihpKXt2YXIgcj10aGlzLl9tYXBQb3NUb0Jsb2NrKGUpLHU9ciYmaS5pbmRleD09PXIuaW5kZXgscz1pLm9mZnNldCxhPXImJnU\/ci5vZmZzZXQ6dGhpcy5fYmxvY2tzW2kuaW5kZXhdLnZhbHVlLmxlbmd0aDtpZihuKHRoaXMuX2Jsb2Nrc1tpLmluZGV4XSxpLmluZGV4LHMsYSksciYmIXUpe2Zvcih2YXIgbz1pLmluZGV4KzE7bzxyLmluZGV4OysrbyluKHRoaXMuX2Jsb2Nrc1tvXSxvLDAsdGhpcy5fYmxvY2tzW29dLnZhbHVlLmxlbmd0aCk7bih0aGlzLl9ibG9ja3Nbci5pbmRleF0sci5pbmRleCwwLHIub2Zmc2V0KX19fX0se2tleToicmVtb3ZlIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTowLGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0\/YXJndW1lbnRzWzFdOnRoaXMudmFsdWUubGVuZ3RoLGk9TnIoVHIobi5wcm90b3R5cGUpLCJyZW1vdmUiLHRoaXMpLmNhbGwodGhpcyx0LGUpO3JldHVybiB0aGlzLl9mb3JFYWNoQmxvY2tzSW5SYW5nZSh0LGUsKGZ1bmN0aW9uKHQsZSxuLHIpe2kuYWdncmVnYXRlKHQucmVtb3ZlKG4scikpfSkpLGl9fSx7a2V5OiJuZWFyZXN0SW5wdXRQb3MiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTpHcjtpZighdGhpcy5fYmxvY2tzLmxlbmd0aClyZXR1cm4gMDt2YXIgbj1uZXcgcHUodGhpcyx0KTtpZihlPT09R3IpcmV0dXJuIG4ucHVzaFJpZ2h0QmVmb3JlSW5wdXQoKT9uLnBvczoobi5wb3BTdGF0ZSgpLG4ucHVzaExlZnRCZWZvcmVJbnB1dCgpP24ucG9zOnRoaXMudmFsdWUubGVuZ3RoKTtpZihlPT09S3J8fGU9PT0kcil7aWYoZT09PUtyKXtpZihuLnB1c2hSaWdodEJlZm9yZUZpbGxlZCgpLG4ub2smJm4ucG9zPT09dClyZXR1cm4gdDtuLnBvcFN0YXRlKCl9aWYobi5wdXNoTGVmdEJlZm9yZUlucHV0KCksbi5wdXNoTGVmdEJlZm9yZVJlcXVpcmVkKCksbi5wdXNoTGVmdEJlZm9yZUZpbGxlZCgpLGU9PT1Lcil7aWYobi5wdXNoUmlnaHRCZWZvcmVJbnB1dCgpLG4ucHVzaFJpZ2h0QmVmb3JlUmVxdWlyZWQoKSxuLm9rJiZuLnBvczw9dClyZXR1cm4gbi5wb3M7aWYobi5wb3BTdGF0ZSgpLG4ub2smJm4ucG9zPD10KXJldHVybiBuLnBvcztuLnBvcFN0YXRlKCl9cmV0dXJuIG4ub2s\/bi5wb3M6ZT09PSRyPzA6KG4ucG9wU3RhdGUoKSxuLm9rP24ucG9zOihuLnBvcFN0YXRlKCksbi5vaz9uLnBvczowKSl9cmV0dXJuIGU9PT1Xcnx8ZT09PVhyPyhuLnB1c2hSaWdodEJlZm9yZUlucHV0KCksbi5wdXNoUmlnaHRCZWZvcmVSZXF1aXJlZCgpLG4ucHVzaFJpZ2h0QmVmb3JlRmlsbGVkKCk\/bi5wb3M6ZT09PVhyP3RoaXMudmFsdWUubGVuZ3RoOihuLnBvcFN0YXRlKCksbi5vaz9uLnBvczoobi5wb3BTdGF0ZSgpLG4ub2s\/bi5wb3M6dGhpcy5uZWFyZXN0SW5wdXRQb3ModCxLcikpKSk6dH19LHtrZXk6Im1hc2tlZEJsb2NrIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5tYXNrZWRCbG9ja3ModClbMF19fSx7a2V5OiJtYXNrZWRCbG9ja3MiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsbj10aGlzLl9tYXNrZWRCbG9ja3NbdF07cmV0dXJuIG4\/bi5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBlLl9ibG9ja3NbdF19KSk6W119fV0pLG59KHJ1KTtndS5ERUZBVUxUUz17bGF6eTohMCxwbGFjZWhvbGRlckNoYXI6Il8ifSxndS5TVE9QX0NIQVI9ImAiLGd1LkVTQ0FQRV9DSEFSPSJcXCIsZ3UuSW5wdXREZWZpbml0aW9uPWx1LGd1LkZpeGVkRGVmaW5pdGlvbj1odSxpdS5NYXNrZWRQYXR0ZXJuPWd1O3ZhciBrdT1mdW5jdGlvbih0KXtQcihuLHQpO3ZhciBlPVZyKG4pO2Z1bmN0aW9uIG4oKXtyZXR1cm4geHIodGhpcyxuKSxlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1yZXR1cm4gT3Iobixbe2tleToiX21hdGNoRnJvbSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWF4TGVuZ3RoLVN0cmluZyh0aGlzLmZyb20pLmxlbmd0aH19LHtrZXk6Il91cGRhdGUiLHZhbHVlOmZ1bmN0aW9uKHQpe3Q9T2JqZWN0LmFzc2lnbih7dG86dGhpcy50b3x8MCxmcm9tOnRoaXMuZnJvbXx8MCxtYXhMZW5ndGg6dGhpcy5tYXhMZW5ndGh8fDB9LHQpO3ZhciBlPVN0cmluZyh0LnRvKS5sZW5ndGg7bnVsbCE9dC5tYXhMZW5ndGgmJihlPU1hdGgubWF4KGUsdC5tYXhMZW5ndGgpKSx0Lm1heExlbmd0aD1lO2Zvcih2YXIgaT1TdHJpbmcodC5mcm9tKS5wYWRTdGFydChlLCIwIikscj1TdHJpbmcodC50bykucGFkU3RhcnQoZSwiMCIpLHU9MDt1PHIubGVuZ3RoJiZyW3VdPT09aVt1XTspKyt1O3QubWFzaz1yLnNsaWNlKDAsdSkucmVwbGFjZSgvMC9nLCJcXDAiKSsiMCIucmVwZWF0KGUtdSksTnIoVHIobi5wcm90b3R5cGUpLCJfdXBkYXRlIix0aGlzKS5jYWxsKHRoaXMsdCl9fSx7a2V5OiJpc0NvbXBsZXRlIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gTnIoVHIobi5wcm90b3R5cGUpLCJpc0NvbXBsZXRlIix0aGlzKSYmQm9vbGVhbih0aGlzLnZhbHVlKX19LHtrZXk6ImJvdW5kYXJpZXMiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPSIiLG49IiIsaT1xcih0Lm1hdGNoKC9eKFxEKikoXGQqKShcRCopLyl8fFtdLDMpLHI9aVsxXSx1PWlbMl07cmV0dXJuIHUmJihlPSIwIi5yZXBlYXQoci5sZW5ndGgpK3Usbj0iOSIucmVwZWF0KHIubGVuZ3RoKSt1KSxbZT1lLnBhZEVuZCh0aGlzLm1heExlbmd0aCwiMCIpLG49bi5wYWRFbmQodGhpcy5tYXhMZW5ndGgsIjkiKV19fSx7a2V5OiJkb1ByZXBhcmUiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlLGk9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0\/YXJndW1lbnRzWzFdOnt9LHI9UXIoTnIoVHIobi5wcm90b3R5cGUpLCJkb1ByZXBhcmUiLHRoaXMpLmNhbGwodGhpcyx0LnJlcGxhY2UoL1xEL2csIiIpLGkpKSx1PXFyKHIsMik7aWYodD11WzBdLGU9dVsxXSwhdGhpcy5hdXRvZml4fHwhdClyZXR1cm4gdDt2YXIgcz1TdHJpbmcodGhpcy5mcm9tKS5wYWRTdGFydCh0aGlzLm1heExlbmd0aCwiMCIpLGE9U3RyaW5nKHRoaXMudG8pLnBhZFN0YXJ0KHRoaXMubWF4TGVuZ3RoLCIwIiksbz10aGlzLnZhbHVlK3Q7aWYoby5sZW5ndGg+dGhpcy5tYXhMZW5ndGgpcmV0dXJuIiI7dmFyIGw9dGhpcy5ib3VuZGFyaWVzKG8pLGg9cXIobCwyKSxjPWhbMF0sZj1oWzFdO3JldHVybiBOdW1iZXIoZik8dGhpcy5mcm9tP3Nbby5sZW5ndGgtMV06TnVtYmVyKGMpPnRoaXMudG8\/InBhZCI9PT10aGlzLmF1dG9maXgmJm8ubGVuZ3RoPHRoaXMubWF4TGVuZ3RoP1siIixlLmFnZ3JlZ2F0ZSh0aGlzLmFwcGVuZChzW28ubGVuZ3RoLTFdK3QsaSkpXTphW28ubGVuZ3RoLTFdOnR9fSx7a2V5OiJkb1ZhbGlkYXRlIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0LGU9dGhpcy52YWx1ZSxpPWUuc2VhcmNoKC9bXjBdLyk7aWYoLTE9PT1pJiZlLmxlbmd0aDw9dGhpcy5fbWF0Y2hGcm9tKXJldHVybiEwO2Zvcih2YXIgcj10aGlzLmJvdW5kYXJpZXMoZSksdT1xcihyLDIpLHM9dVswXSxhPXVbMV0sbz1hcmd1bWVudHMubGVuZ3RoLGw9bmV3IEFycmF5KG8pLGg9MDtoPG87aCsrKWxbaF09YXJndW1lbnRzW2hdO3JldHVybiB0aGlzLmZyb208PU51bWJlcihhKSYmTnVtYmVyKHMpPD10aGlzLnRvJiYodD1OcihUcihuLnByb3RvdHlwZSksImRvVmFsaWRhdGUiLHRoaXMpKS5jYWxsLmFwcGx5KHQsW3RoaXNdLmNvbmNhdChsKSl9fV0pLG59KGd1KTtpdS5NYXNrZWRSYW5nZT1rdTt2YXIgeXU9ZnVuY3Rpb24odCl7UHIobix0KTt2YXIgZT1WcihuKTtmdW5jdGlvbiBuKHQpe3JldHVybiB4cih0aGlzLG4pLGUuY2FsbCh0aGlzLE9iamVjdC5hc3NpZ24oe30sbi5ERUZBVUxUUyx0KSl9cmV0dXJuIE9yKG4sW3trZXk6Il91cGRhdGUiLHZhbHVlOmZ1bmN0aW9uKHQpe3QubWFzaz09PURhdGUmJmRlbGV0ZSB0Lm1hc2ssdC5wYXR0ZXJuJiYodC5tYXNrPXQucGF0dGVybik7dmFyIGU9dC5ibG9ja3M7dC5ibG9ja3M9T2JqZWN0LmFzc2lnbih7fSxuLkdFVF9ERUZBVUxUX0JMT0NLUygpKSx0Lm1pbiYmKHQuYmxvY2tzLlkuZnJvbT10Lm1pbi5nZXRGdWxsWWVhcigpKSx0Lm1heCYmKHQuYmxvY2tzLlkudG89dC5tYXguZ2V0RnVsbFllYXIoKSksdC5taW4mJnQubWF4JiZ0LmJsb2Nrcy5ZLmZyb209PT10LmJsb2Nrcy5ZLnRvJiYodC5ibG9ja3MubS5mcm9tPXQubWluLmdldE1vbnRoKCkrMSx0LmJsb2Nrcy5tLnRvPXQubWF4LmdldE1vbnRoKCkrMSx0LmJsb2Nrcy5tLmZyb209PT10LmJsb2Nrcy5tLnRvJiYodC5ibG9ja3MuZC5mcm9tPXQubWluLmdldERhdGUoKSx0LmJsb2Nrcy5kLnRvPXQubWF4LmdldERhdGUoKSkpLE9iamVjdC5hc3NpZ24odC5ibG9ja3MsdGhpcy5ibG9ja3MsZSksT2JqZWN0LmtleXModC5ibG9ja3MpLmZvckVhY2goKGZ1bmN0aW9uKGUpe3ZhciBuPXQuYmxvY2tzW2VdOyEoImF1dG9maXgiaW4gbikmJiJhdXRvZml4ImluIHQmJihuLmF1dG9maXg9dC5hdXRvZml4KX0pKSxOcihUcihuLnByb3RvdHlwZSksIl91cGRhdGUiLHRoaXMpLmNhbGwodGhpcyx0KX19LHtrZXk6ImRvVmFsaWRhdGUiLHZhbHVlOmZ1bmN0aW9uKCl7Zm9yKHZhciB0LGU9dGhpcy5kYXRlLGk9YXJndW1lbnRzLmxlbmd0aCxyPW5ldyBBcnJheShpKSx1PTA7dTxpO3UrKylyW3VdPWFyZ3VtZW50c1t1XTtyZXR1cm4odD1OcihUcihuLnByb3RvdHlwZSksImRvVmFsaWRhdGUiLHRoaXMpKS5jYWxsLmFwcGx5KHQsW3RoaXNdLmNvbmNhdChyKSkmJighdGhpcy5pc0NvbXBsZXRlfHx0aGlzLmlzRGF0ZUV4aXN0KHRoaXMudmFsdWUpJiZudWxsIT1lJiYobnVsbD09dGhpcy5taW58fHRoaXMubWluPD1lKSYmKG51bGw9PXRoaXMubWF4fHxlPD10aGlzLm1heCkpfX0se2tleToiaXNEYXRlRXhpc3QiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmZvcm1hdCh0aGlzLnBhcnNlKHQsdGhpcyksdGhpcykuaW5kZXhPZih0KT49MH19LHtrZXk6ImRhdGUiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnR5cGVkVmFsdWV9LHNldDpmdW5jdGlvbih0KXt0aGlzLnR5cGVkVmFsdWU9dH19LHtrZXk6InR5cGVkVmFsdWUiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmlzQ29tcGxldGU\/TnIoVHIobi5wcm90b3R5cGUpLCJ0eXBlZFZhbHVlIix0aGlzKTpudWxsfSxzZXQ6ZnVuY3Rpb24odCl7enIoVHIobi5wcm90b3R5cGUpLCJ0eXBlZFZhbHVlIix0LHRoaXMsITApfX0se2tleToibWFza0VxdWFscyIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9PT1EYXRlfHxOcihUcihuLnByb3RvdHlwZSksIm1hc2tFcXVhbHMiLHRoaXMpLmNhbGwodGhpcyx0KX19XSksbn0oZ3UpO3l1LkRFRkFVTFRTPXtwYXR0ZXJuOiJkey59YG17Ln1gWSIsZm9ybWF0OmZ1bmN0aW9uKHQpe3JldHVybiB0P1tTdHJpbmcodC5nZXREYXRlKCkpLnBhZFN0YXJ0KDIsIjAiKSxTdHJpbmcodC5nZXRNb250aCgpKzEpLnBhZFN0YXJ0KDIsIjAiKSx0LmdldEZ1bGxZZWFyKCldLmpvaW4oIi4iKToiIn0scGFyc2U6ZnVuY3Rpb24odCl7dmFyIGU9cXIodC5zcGxpdCgiLiIpLDMpLG49ZVswXSxpPWVbMV0scj1lWzJdO3JldHVybiBuZXcgRGF0ZShyLGktMSxuKX19LHl1LkdFVF9ERUZBVUxUX0JMT0NLUz1mdW5jdGlvbigpe3JldHVybntkOnttYXNrOmt1LGZyb206MSx0bzozMSxtYXhMZW5ndGg6Mn0sbTp7bWFzazprdSxmcm9tOjEsdG86MTIsbWF4TGVuZ3RoOjJ9LFk6e21hc2s6a3UsZnJvbToxOTAwLHRvOjk5OTl9fX0saXUuTWFza2VkRGF0ZT15dTt2YXIgbXU9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7eHIodGhpcyx0KX1yZXR1cm4gT3IodCxbe2tleToic2VsZWN0aW9uU3RhcnQiLGdldDpmdW5jdGlvbigpe3ZhciB0O3RyeXt0PXRoaXMuX3Vuc2FmZVNlbGVjdGlvblN0YXJ0fWNhdGNoKHQpe31yZXR1cm4gbnVsbCE9dD90OnRoaXMudmFsdWUubGVuZ3RofX0se2tleToic2VsZWN0aW9uRW5kIixnZXQ6ZnVuY3Rpb24oKXt2YXIgdDt0cnl7dD10aGlzLl91bnNhZmVTZWxlY3Rpb25FbmR9Y2F0Y2godCl7fXJldHVybiBudWxsIT10P3Q6dGhpcy52YWx1ZS5sZW5ndGh9fSx7a2V5OiJzZWxlY3QiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7aWYobnVsbCE9dCYmbnVsbCE9ZSYmKHQhPT10aGlzLnNlbGVjdGlvblN0YXJ0fHxlIT09dGhpcy5zZWxlY3Rpb25FbmQpKXRyeXt0aGlzLl91bnNhZmVTZWxlY3QodCxlKX1jYXRjaCh0KXt9fX0se2tleToiX3Vuc2FmZVNlbGVjdCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt9fSx7a2V5OiJpc0FjdGl2ZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuITF9fSx7a2V5OiJiaW5kRXZlbnRzIix2YWx1ZTpmdW5jdGlvbih0KXt9fSx7a2V5OiJ1bmJpbmRFdmVudHMiLHZhbHVlOmZ1bmN0aW9uKCl7fX1dKSx0fSgpO2l1Lk1hc2tFbGVtZW50PW11O3ZhciBidT1mdW5jdGlvbih0KXtQcihuLHQpO3ZhciBlPVZyKG4pO2Z1bmN0aW9uIG4odCl7dmFyIGk7cmV0dXJuIHhyKHRoaXMsbiksKGk9ZS5jYWxsKHRoaXMpKS5pbnB1dD10LGkuX2hhbmRsZXJzPXt9LGl9cmV0dXJuIE9yKG4sW3trZXk6InJvb3RFbGVtZW50IixnZXQ6ZnVuY3Rpb24oKXt2YXIgdCxlLG47cmV0dXJuIG51bGwhPT0odD1udWxsPT09KGU9KG49dGhpcy5pbnB1dCkuZ2V0Um9vdE5vZGUpfHx2b2lkIDA9PT1lP3ZvaWQgMDplLmNhbGwobikpJiZ2b2lkIDAhPT10P3Q6ZG9jdW1lbnR9fSx7a2V5OiJpc0FjdGl2ZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaW5wdXQ9PT10aGlzLnJvb3RFbGVtZW50LmFjdGl2ZUVsZW1lbnR9fSx7a2V5OiJfdW5zYWZlU2VsZWN0aW9uU3RhcnQiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmlucHV0LnNlbGVjdGlvblN0YXJ0fX0se2tleToiX3Vuc2FmZVNlbGVjdGlvbkVuZCIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaW5wdXQuc2VsZWN0aW9uRW5kfX0se2tleToiX3Vuc2FmZVNlbGVjdCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt0aGlzLmlucHV0LnNldFNlbGVjdGlvblJhbmdlKHQsZSl9fSx7a2V5OiJ2YWx1ZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaW5wdXQudmFsdWV9LHNldDpmdW5jdGlvbih0KXt0aGlzLmlucHV0LnZhbHVlPXR9fSx7a2V5OiJiaW5kRXZlbnRzIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzO09iamVjdC5rZXlzKHQpLmZvckVhY2goKGZ1bmN0aW9uKGkpe3JldHVybiBlLl90b2dnbGVFdmVudEhhbmRsZXIobi5FVkVOVFNfTUFQW2ldLHRbaV0pfSkpfX0se2tleToidW5iaW5kRXZlbnRzIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXM7T2JqZWN0LmtleXModGhpcy5faGFuZGxlcnMpLmZvckVhY2goKGZ1bmN0aW9uKGUpe3JldHVybiB0Ll90b2dnbGVFdmVudEhhbmRsZXIoZSl9KSl9fSx7a2V5OiJfdG9nZ2xlRXZlbnRIYW5kbGVyIix2YWx1ZTpmdW5jdGlvbih0LGUpe3RoaXMuX2hhbmRsZXJzW3RdJiYodGhpcy5pbnB1dC5yZW1vdmVFdmVudExpc3RlbmVyKHQsdGhpcy5faGFuZGxlcnNbdF0pLGRlbGV0ZSB0aGlzLl9oYW5kbGVyc1t0XSksZSYmKHRoaXMuaW5wdXQuYWRkRXZlbnRMaXN0ZW5lcih0LGUpLHRoaXMuX2hhbmRsZXJzW3RdPWUpfX1dKSxufShtdSk7YnUuRVZFTlRTX01BUD17c2VsZWN0aW9uQ2hhbmdlOiJrZXlkb3duIixpbnB1dDoiaW5wdXQiLGRyb3A6ImRyb3AiLGNsaWNrOiJjbGljayIsZm9jdXM6ImZvY3VzIixjb21taXQ6ImJsdXIifSxpdS5IVE1MTWFza0VsZW1lbnQ9YnU7dmFyIF91PWZ1bmN0aW9uKHQpe1ByKG4sdCk7dmFyIGU9VnIobik7ZnVuY3Rpb24gbigpe3JldHVybiB4cih0aGlzLG4pLGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiBPcihuLFt7a2V5OiJfdW5zYWZlU2VsZWN0aW9uU3RhcnQiLGdldDpmdW5jdGlvbigpe3ZhciB0PXRoaXMucm9vdEVsZW1lbnQsZT10LmdldFNlbGVjdGlvbiYmdC5nZXRTZWxlY3Rpb24oKSxuPWUmJmUuYW5jaG9yT2Zmc2V0LGk9ZSYmZS5mb2N1c09mZnNldDtyZXR1cm4gbnVsbD09aXx8bnVsbD09bnx8bjxpP246aX19LHtrZXk6Il91bnNhZmVTZWxlY3Rpb25FbmQiLGdldDpmdW5jdGlvbigpe3ZhciB0PXRoaXMucm9vdEVsZW1lbnQsZT10LmdldFNlbGVjdGlvbiYmdC5nZXRTZWxlY3Rpb24oKSxuPWUmJmUuYW5jaG9yT2Zmc2V0LGk9ZSYmZS5mb2N1c09mZnNldDtyZXR1cm4gbnVsbD09aXx8bnVsbD09bnx8bj5pP246aX19LHtrZXk6Il91bnNhZmVTZWxlY3QiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7aWYodGhpcy5yb290RWxlbWVudC5jcmVhdGVSYW5nZSl7dmFyIG49dGhpcy5yb290RWxlbWVudC5jcmVhdGVSYW5nZSgpO24uc2V0U3RhcnQodGhpcy5pbnB1dC5maXJzdENoaWxkfHx0aGlzLmlucHV0LHQpLG4uc2V0RW5kKHRoaXMuaW5wdXQubGFzdENoaWxkfHx0aGlzLmlucHV0LGUpO3ZhciBpPXRoaXMucm9vdEVsZW1lbnQscj1pLmdldFNlbGVjdGlvbiYmaS5nZXRTZWxlY3Rpb24oKTtyJiYoci5yZW1vdmVBbGxSYW5nZXMoKSxyLmFkZFJhbmdlKG4pKX19fSx7a2V5OiJ2YWx1ZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaW5wdXQudGV4dENvbnRlbnR9LHNldDpmdW5jdGlvbih0KXt0aGlzLmlucHV0LnRleHRDb250ZW50PXR9fV0pLG59KGJ1KTtpdS5IVE1MQ29udGVudGVkaXRhYmxlTWFza0VsZW1lbnQ9X3U7dmFyIEF1PVsibWFzayJdLEN1PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlLG4pe3hyKHRoaXMsdCksdGhpcy5lbD1lIGluc3RhbmNlb2YgbXU\/ZTplLmlzQ29udGVudEVkaXRhYmxlJiYiSU5QVVQiIT09ZS50YWdOYW1lJiYiVEVYVEFSRUEiIT09ZS50YWdOYW1lP25ldyBfdShlKTpuZXcgYnUoZSksdGhpcy5tYXNrZWQ9c3UobiksdGhpcy5fbGlzdGVuZXJzPXt9LHRoaXMuX3ZhbHVlPSIiLHRoaXMuX3VubWFza2VkVmFsdWU9IiIsdGhpcy5fc2F2ZVNlbGVjdGlvbj10aGlzLl9zYXZlU2VsZWN0aW9uLmJpbmQodGhpcyksdGhpcy5fb25JbnB1dD10aGlzLl9vbklucHV0LmJpbmQodGhpcyksdGhpcy5fb25DaGFuZ2U9dGhpcy5fb25DaGFuZ2UuYmluZCh0aGlzKSx0aGlzLl9vbkRyb3A9dGhpcy5fb25Ecm9wLmJpbmQodGhpcyksdGhpcy5fb25Gb2N1cz10aGlzLl9vbkZvY3VzLmJpbmQodGhpcyksdGhpcy5fb25DbGljaz10aGlzLl9vbkNsaWNrLmJpbmQodGhpcyksdGhpcy5hbGlnbkN1cnNvcj10aGlzLmFsaWduQ3Vyc29yLmJpbmQodGhpcyksdGhpcy5hbGlnbkN1cnNvckZyaWVuZGx5PXRoaXMuYWxpZ25DdXJzb3JGcmllbmRseS5iaW5kKHRoaXMpLHRoaXMuX2JpbmRFdmVudHMoKSx0aGlzLnVwZGF0ZVZhbHVlKCksdGhpcy5fb25DaGFuZ2UoKX1yZXR1cm4gT3IodCxbe2tleToibWFzayIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWFza2VkLm1hc2t9LHNldDpmdW5jdGlvbih0KXtpZighdGhpcy5tYXNrRXF1YWxzKHQpKWlmKHQgaW5zdGFuY2VvZiBpdS5NYXNrZWR8fHRoaXMubWFza2VkLmNvbnN0cnVjdG9yIT09dXUodCkpe3ZhciBlPXN1KHttYXNrOnR9KTtlLnVubWFza2VkVmFsdWU9dGhpcy5tYXNrZWQudW5tYXNrZWRWYWx1ZSx0aGlzLm1hc2tlZD1lfWVsc2UgdGhpcy5tYXNrZWQudXBkYXRlT3B0aW9ucyh7bWFzazp0fSl9fSx7a2V5OiJtYXNrRXF1YWxzIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZTtyZXR1cm4gbnVsbD09dHx8KG51bGw9PT0oZT10aGlzLm1hc2tlZCl8fHZvaWQgMD09PWU\/dm9pZCAwOmUubWFza0VxdWFscyh0KSl9fSx7a2V5OiJ2YWx1ZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3ZhbHVlfSxzZXQ6ZnVuY3Rpb24odCl7dGhpcy5tYXNrZWQudmFsdWU9dCx0aGlzLnVwZGF0ZUNvbnRyb2woKSx0aGlzLmFsaWduQ3Vyc29yKCl9fSx7a2V5OiJ1bm1hc2tlZFZhbHVlIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fdW5tYXNrZWRWYWx1ZX0sc2V0OmZ1bmN0aW9uKHQpe3RoaXMubWFza2VkLnVubWFza2VkVmFsdWU9dCx0aGlzLnVwZGF0ZUNvbnRyb2woKSx0aGlzLmFsaWduQ3Vyc29yKCl9fSx7a2V5OiJ0eXBlZFZhbHVlIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tYXNrZWQudHlwZWRWYWx1ZX0sc2V0OmZ1bmN0aW9uKHQpe3RoaXMubWFza2VkLnR5cGVkVmFsdWU9dCx0aGlzLnVwZGF0ZUNvbnRyb2woKSx0aGlzLmFsaWduQ3Vyc29yKCl9fSx7a2V5OiJfYmluZEV2ZW50cyIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmVsLmJpbmRFdmVudHMoe3NlbGVjdGlvbkNoYW5nZTp0aGlzLl9zYXZlU2VsZWN0aW9uLGlucHV0OnRoaXMuX29uSW5wdXQsZHJvcDp0aGlzLl9vbkRyb3AsY2xpY2s6dGhpcy5fb25DbGljayxmb2N1czp0aGlzLl9vbkZvY3VzLGNvbW1pdDp0aGlzLl9vbkNoYW5nZX0pfX0se2tleToiX3VuYmluZEV2ZW50cyIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmVsJiZ0aGlzLmVsLnVuYmluZEV2ZW50cygpfX0se2tleToiX2ZpcmVFdmVudCIsdmFsdWU6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPWFyZ3VtZW50cy5sZW5ndGgsbj1uZXcgQXJyYXkoZT4xP2UtMTowKSxpPTE7aTxlO2krKyluW2ktMV09YXJndW1lbnRzW2ldO3ZhciByPXRoaXMuX2xpc3RlbmVyc1t0XTtyJiZyLmZvckVhY2goKGZ1bmN0aW9uKHQpe3JldHVybiB0LmFwcGx5KHZvaWQgMCxuKX0pKX19LHtrZXk6InNlbGVjdGlvblN0YXJ0IixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY3Vyc29yQ2hhbmdpbmc\/dGhpcy5fY2hhbmdpbmdDdXJzb3JQb3M6dGhpcy5lbC5zZWxlY3Rpb25TdGFydH19LHtrZXk6ImN1cnNvclBvcyIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2N1cnNvckNoYW5naW5nP3RoaXMuX2NoYW5naW5nQ3Vyc29yUG9zOnRoaXMuZWwuc2VsZWN0aW9uRW5kfSxzZXQ6ZnVuY3Rpb24odCl7dGhpcy5lbCYmdGhpcy5lbC5pc0FjdGl2ZSYmKHRoaXMuZWwuc2VsZWN0KHQsdCksdGhpcy5fc2F2ZVNlbGVjdGlvbigpKX19LHtrZXk6Il9zYXZlU2VsZWN0aW9uIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMudmFsdWUhPT10aGlzLmVsLnZhbHVlJiZjb25zb2xlLndhcm4oIkVsZW1lbnQgdmFsdWUgd2FzIGNoYW5nZWQgb3V0c2lkZSBvZiBtYXNrLiBTeW5jcm9uaXplIG1hc2sgdXNpbmcgYG1hc2sudXBkYXRlVmFsdWUoKWAgdG8gd29yayBwcm9wZXJseS4iKSx0aGlzLl9zZWxlY3Rpb249e3N0YXJ0OnRoaXMuc2VsZWN0aW9uU3RhcnQsZW5kOnRoaXMuY3Vyc29yUG9zfX19LHtrZXk6InVwZGF0ZVZhbHVlIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMubWFza2VkLnZhbHVlPXRoaXMuZWwudmFsdWUsdGhpcy5fdmFsdWU9dGhpcy5tYXNrZWQudmFsdWV9fSx7a2V5OiJ1cGRhdGVDb250cm9sIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMubWFza2VkLnVubWFza2VkVmFsdWUsZT10aGlzLm1hc2tlZC52YWx1ZSxuPXRoaXMudW5tYXNrZWRWYWx1ZSE9PXR8fHRoaXMudmFsdWUhPT1lO3RoaXMuX3VubWFza2VkVmFsdWU9dCx0aGlzLl92YWx1ZT1lLHRoaXMuZWwudmFsdWUhPT1lJiYodGhpcy5lbC52YWx1ZT1lKSxuJiZ0aGlzLl9maXJlQ2hhbmdlRXZlbnRzKCl9fSx7a2V5OiJ1cGRhdGVPcHRpb25zIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10Lm1hc2ssbj1qcih0LEF1KSxpPSF0aGlzLm1hc2tFcXVhbHMoZSkscj0hdHUodGhpcy5tYXNrZWQsbik7aSYmKHRoaXMubWFzaz1lKSxyJiZ0aGlzLm1hc2tlZC51cGRhdGVPcHRpb25zKG4pLChpfHxyKSYmdGhpcy51cGRhdGVDb250cm9sKCl9fSx7a2V5OiJ1cGRhdGVDdXJzb3IiLHZhbHVlOmZ1bmN0aW9uKHQpe251bGwhPXQmJih0aGlzLmN1cnNvclBvcz10LHRoaXMuX2RlbGF5VXBkYXRlQ3Vyc29yKHQpKX19LHtrZXk6Il9kZWxheVVwZGF0ZUN1cnNvciIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpczt0aGlzLl9hYm9ydFVwZGF0ZUN1cnNvcigpLHRoaXMuX2NoYW5naW5nQ3Vyc29yUG9zPXQsdGhpcy5fY3Vyc29yQ2hhbmdpbmc9c2V0VGltZW91dCgoZnVuY3Rpb24oKXtlLmVsJiYoZS5jdXJzb3JQb3M9ZS5fY2hhbmdpbmdDdXJzb3JQb3MsZS5fYWJvcnRVcGRhdGVDdXJzb3IoKSl9KSwxMCl9fSx7a2V5OiJfZmlyZUNoYW5nZUV2ZW50cyIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLl9maXJlRXZlbnQoImFjY2VwdCIsdGhpcy5faW5wdXRFdmVudCksdGhpcy5tYXNrZWQuaXNDb21wbGV0ZSYmdGhpcy5fZmlyZUV2ZW50KCJjb21wbGV0ZSIsdGhpcy5faW5wdXRFdmVudCl9fSx7a2V5OiJfYWJvcnRVcGRhdGVDdXJzb3IiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5fY3Vyc29yQ2hhbmdpbmcmJihjbGVhclRpbWVvdXQodGhpcy5fY3Vyc29yQ2hhbmdpbmcpLGRlbGV0ZSB0aGlzLl9jdXJzb3JDaGFuZ2luZyl9fSx7a2V5OiJhbGlnbkN1cnNvciIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmN1cnNvclBvcz10aGlzLm1hc2tlZC5uZWFyZXN0SW5wdXRQb3ModGhpcy5tYXNrZWQubmVhcmVzdElucHV0UG9zKHRoaXMuY3Vyc29yUG9zLEtyKSl9fSx7a2V5OiJhbGlnbkN1cnNvckZyaWVuZGx5Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuc2VsZWN0aW9uU3RhcnQ9PT10aGlzLmN1cnNvclBvcyYmdGhpcy5hbGlnbkN1cnNvcigpfX0se2tleToib24iLHZhbHVlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuX2xpc3RlbmVyc1t0XXx8KHRoaXMuX2xpc3RlbmVyc1t0XT1bXSksdGhpcy5fbGlzdGVuZXJzW3RdLnB1c2goZSksdGhpc319LHtrZXk6Im9mZiIsdmFsdWU6ZnVuY3Rpb24odCxlKXtpZighdGhpcy5fbGlzdGVuZXJzW3RdKXJldHVybiB0aGlzO2lmKCFlKXJldHVybiBkZWxldGUgdGhpcy5fbGlzdGVuZXJzW3RdLHRoaXM7dmFyIG49dGhpcy5fbGlzdGVuZXJzW3RdLmluZGV4T2YoZSk7cmV0dXJuIG4+PTAmJnRoaXMuX2xpc3RlbmVyc1t0XS5zcGxpY2UobiwxKSx0aGlzfX0se2tleToiX29uSW5wdXQiLHZhbHVlOmZ1bmN0aW9uKHQpe2lmKHRoaXMuX2lucHV0RXZlbnQ9dCx0aGlzLl9hYm9ydFVwZGF0ZUN1cnNvcigpLCF0aGlzLl9zZWxlY3Rpb24pcmV0dXJuIHRoaXMudXBkYXRlVmFsdWUoKTt2YXIgZT1uZXcgZXUodGhpcy5lbC52YWx1ZSx0aGlzLmN1cnNvclBvcyx0aGlzLnZhbHVlLHRoaXMuX3NlbGVjdGlvbiksbj10aGlzLm1hc2tlZC5yYXdJbnB1dFZhbHVlLGk9dGhpcy5tYXNrZWQuc3BsaWNlKGUuc3RhcnRDaGFuZ2VQb3MsZS5yZW1vdmVkLmxlbmd0aCxlLmluc2VydGVkLGUucmVtb3ZlRGlyZWN0aW9uKS5vZmZzZXQscj1uPT09dGhpcy5tYXNrZWQucmF3SW5wdXRWYWx1ZT9lLnJlbW92ZURpcmVjdGlvbjpHcix1PXRoaXMubWFza2VkLm5lYXJlc3RJbnB1dFBvcyhlLnN0YXJ0Q2hhbmdlUG9zK2kscik7ciE9PUdyJiYodT10aGlzLm1hc2tlZC5uZWFyZXN0SW5wdXRQb3ModSxHcikpLHRoaXMudXBkYXRlQ29udHJvbCgpLHRoaXMudXBkYXRlQ3Vyc29yKHUpLGRlbGV0ZSB0aGlzLl9pbnB1dEV2ZW50fX0se2tleToiX29uQ2hhbmdlIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMudmFsdWUhPT10aGlzLmVsLnZhbHVlJiZ0aGlzLnVwZGF0ZVZhbHVlKCksdGhpcy5tYXNrZWQuZG9Db21taXQoKSx0aGlzLnVwZGF0ZUNvbnRyb2woKSx0aGlzLl9zYXZlU2VsZWN0aW9uKCl9fSx7a2V5OiJfb25Ecm9wIix2YWx1ZTpmdW5jdGlvbih0KXt0LnByZXZlbnREZWZhdWx0KCksdC5zdG9wUHJvcGFnYXRpb24oKX19LHtrZXk6Il9vbkZvY3VzIix2YWx1ZTpmdW5jdGlvbih0KXt0aGlzLmFsaWduQ3Vyc29yRnJpZW5kbHkoKX19LHtrZXk6Il9vbkNsaWNrIix2YWx1ZTpmdW5jdGlvbih0KXt0aGlzLmFsaWduQ3Vyc29yRnJpZW5kbHkoKX19LHtrZXk6ImRlc3Ryb3kiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5fdW5iaW5kRXZlbnRzKCksdGhpcy5fbGlzdGVuZXJzLmxlbmd0aD0wLGRlbGV0ZSB0aGlzLmVsfX1dKSx0fSgpO2l1LklucHV0TWFzaz1DdTt2YXIgRXU9ZnVuY3Rpb24odCl7UHIobix0KTt2YXIgZT1WcihuKTtmdW5jdGlvbiBuKCl7cmV0dXJuIHhyKHRoaXMsbiksZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9cmV0dXJuIE9yKG4sW3trZXk6Il91cGRhdGUiLHZhbHVlOmZ1bmN0aW9uKHQpe3QuZW51bSYmKHQubWFzaz0iKiIucmVwZWF0KHQuZW51bVswXS5sZW5ndGgpKSxOcihUcihuLnByb3RvdHlwZSksIl91cGRhdGUiLHRoaXMpLmNhbGwodGhpcyx0KX19LHtrZXk6ImRvVmFsaWRhdGUiLHZhbHVlOmZ1bmN0aW9uKCl7Zm9yKHZhciB0LGU9dGhpcyxpPWFyZ3VtZW50cy5sZW5ndGgscj1uZXcgQXJyYXkoaSksdT0wO3U8aTt1Kyspclt1XT1hcmd1bWVudHNbdV07cmV0dXJuIHRoaXMuZW51bS5zb21lKChmdW5jdGlvbih0KXtyZXR1cm4gdC5pbmRleE9mKGUudW5tYXNrZWRWYWx1ZSk+PTB9KSkmJih0PU5yKFRyKG4ucHJvdG90eXBlKSwiZG9WYWxpZGF0ZSIsdGhpcykpLmNhbGwuYXBwbHkodCxbdGhpc10uY29uY2F0KHIpKX19XSksbn0oZ3UpO2l1Lk1hc2tlZEVudW09RXU7dmFyIEZ1PWZ1bmN0aW9uKHQpe1ByKG4sdCk7dmFyIGU9VnIobik7ZnVuY3Rpb24gbih0KXtyZXR1cm4geHIodGhpcyxuKSxlLmNhbGwodGhpcyxPYmplY3QuYXNzaWduKHt9LG4uREVGQVVMVFMsdCkpfXJldHVybiBPcihuLFt7a2V5OiJfdXBkYXRlIix2YWx1ZTpmdW5jdGlvbih0KXtOcihUcihuLnByb3RvdHlwZSksIl91cGRhdGUiLHRoaXMpLmNhbGwodGhpcyx0KSx0aGlzLl91cGRhdGVSZWdFeHBzKCl9fSx7a2V5OiJfdXBkYXRlUmVnRXhwcyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD0iXiIrKHRoaXMuYWxsb3dOZWdhdGl2ZT8iWyt8XFwtXT8iOiIiKSxlPSh0aGlzLnNjYWxlPyIoIitKcih0aGlzLnJhZGl4KSsiXFxkezAsIit0aGlzLnNjYWxlKyJ9KT8iOiIiKSsiJCI7dGhpcy5fbnVtYmVyUmVnRXhwSW5wdXQ9bmV3IFJlZ0V4cCh0KyIoMHwoWzEtOV0rXFxkKikpPyIrZSksdGhpcy5fbnVtYmVyUmVnRXhwPW5ldyBSZWdFeHAodCsiXFxkKiIrZSksdGhpcy5fbWFwVG9SYWRpeFJlZ0V4cD1uZXcgUmVnRXhwKCJbIit0aGlzLm1hcFRvUmFkaXgubWFwKEpyKS5qb2luKCIiKSsiXSIsImciKSx0aGlzLl90aG91c2FuZHNTZXBhcmF0b3JSZWdFeHA9bmV3IFJlZ0V4cChKcih0aGlzLnRob3VzYW5kc1NlcGFyYXRvciksImciKX19LHtrZXk6Il9yZW1vdmVUaG91c2FuZHNTZXBhcmF0b3JzIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdC5yZXBsYWNlKHRoaXMuX3Rob3VzYW5kc1NlcGFyYXRvclJlZ0V4cCwiIil9fSx7a2V5OiJfaW5zZXJ0VGhvdXNhbmRzU2VwYXJhdG9ycyIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5zcGxpdCh0aGlzLnJhZGl4KTtyZXR1cm4gZVswXT1lWzBdLnJlcGxhY2UoL1xCKD89KFxkezN9KSsoPyFcZCkpL2csdGhpcy50aG91c2FuZHNTZXBhcmF0b3IpLGUuam9pbih0aGlzLnJhZGl4KX19LHtrZXk6ImRvUHJlcGFyZSIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU7dD10LnJlcGxhY2UodGhpcy5fbWFwVG9SYWRpeFJlZ0V4cCx0aGlzLnJhZGl4KTtmb3IodmFyIGk9dGhpcy5fcmVtb3ZlVGhvdXNhbmRzU2VwYXJhdG9ycyh0KSxyPWFyZ3VtZW50cy5sZW5ndGgsdT1uZXcgQXJyYXkocj4xP3ItMTowKSxzPTE7czxyO3MrKyl1W3MtMV09YXJndW1lbnRzW3NdO3ZhciBhPVFyKChlPU5yKFRyKG4ucHJvdG90eXBlKSwiZG9QcmVwYXJlIix0aGlzKSkuY2FsbC5hcHBseShlLFt0aGlzLGldLmNvbmNhdCh1KSkpLG89cXIoYSwyKSxsPW9bMF0saD1vWzFdO3JldHVybiB0JiYhaSYmKGguc2tpcD0hMCksW2wsaF19fSx7a2V5OiJfc2VwYXJhdG9yc0NvdW50Iix2YWx1ZTpmdW5jdGlvbih0KXtmb3IodmFyIGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0mJmFyZ3VtZW50c1sxXSxuPTAsaT0wO2k8dDsrK2kpdGhpcy5fdmFsdWUuaW5kZXhPZih0aGlzLnRob3VzYW5kc1NlcGFyYXRvcixpKT09PWkmJigrK24sZSYmKHQrPXRoaXMudGhvdXNhbmRzU2VwYXJhdG9yLmxlbmd0aCkpO3JldHVybiBufX0se2tleToiX3NlcGFyYXRvcnNDb3VudEZyb21TbGljZSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06dGhpcy5fdmFsdWU7cmV0dXJuIHRoaXMuX3NlcGFyYXRvcnNDb3VudCh0aGlzLl9yZW1vdmVUaG91c2FuZHNTZXBhcmF0b3JzKHQpLmxlbmd0aCwhMCl9fSx7a2V5OiJleHRyYWN0SW5wdXQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0\/YXJndW1lbnRzWzBdOjAsZT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06dGhpcy52YWx1ZS5sZW5ndGgsaT1hcmd1bWVudHMubGVuZ3RoPjI\/YXJndW1lbnRzWzJdOnZvaWQgMCxyPXRoaXMuX2FkanVzdFJhbmdlV2l0aFNlcGFyYXRvcnModCxlKSx1PXFyKHIsMik7cmV0dXJuIHQ9dVswXSxlPXVbMV0sdGhpcy5fcmVtb3ZlVGhvdXNhbmRzU2VwYXJhdG9ycyhOcihUcihuLnByb3RvdHlwZSksImV4dHJhY3RJbnB1dCIsdGhpcykuY2FsbCh0aGlzLHQsZSxpKSl9fSx7a2V5OiJfYXBwZW5kQ2hhclJhdyIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0\/YXJndW1lbnRzWzFdOnt9O2lmKCF0aGlzLnRob3VzYW5kc1NlcGFyYXRvcilyZXR1cm4gTnIoVHIobi5wcm90b3R5cGUpLCJfYXBwZW5kQ2hhclJhdyIsdGhpcykuY2FsbCh0aGlzLHQsZSk7dmFyIGk9ZS50YWlsJiZlLl9iZWZvcmVUYWlsU3RhdGU\/ZS5fYmVmb3JlVGFpbFN0YXRlLl92YWx1ZTp0aGlzLl92YWx1ZSxyPXRoaXMuX3NlcGFyYXRvcnNDb3VudEZyb21TbGljZShpKTt0aGlzLl92YWx1ZT10aGlzLl9yZW1vdmVUaG91c2FuZHNTZXBhcmF0b3JzKHRoaXMudmFsdWUpO3ZhciB1PU5yKFRyKG4ucHJvdG90eXBlKSwiX2FwcGVuZENoYXJSYXciLHRoaXMpLmNhbGwodGhpcyx0LGUpO3RoaXMuX3ZhbHVlPXRoaXMuX2luc2VydFRob3VzYW5kc1NlcGFyYXRvcnModGhpcy5fdmFsdWUpO3ZhciBzPWUudGFpbCYmZS5fYmVmb3JlVGFpbFN0YXRlP2UuX2JlZm9yZVRhaWxTdGF0ZS5fdmFsdWU6dGhpcy5fdmFsdWUsYT10aGlzLl9zZXBhcmF0b3JzQ291bnRGcm9tU2xpY2Uocyk7cmV0dXJuIHUudGFpbFNoaWZ0Kz0oYS1yKSp0aGlzLnRob3VzYW5kc1NlcGFyYXRvci5sZW5ndGgsdS5za2lwPSF1LnJhd0luc2VydGVkJiZ0PT09dGhpcy50aG91c2FuZHNTZXBhcmF0b3IsdX19LHtrZXk6Il9maW5kU2VwYXJhdG9yQXJvdW5kIix2YWx1ZTpmdW5jdGlvbih0KXtpZih0aGlzLnRob3VzYW5kc1NlcGFyYXRvcil7dmFyIGU9dC10aGlzLnRob3VzYW5kc1NlcGFyYXRvci5sZW5ndGgrMSxuPXRoaXMudmFsdWUuaW5kZXhPZih0aGlzLnRob3VzYW5kc1NlcGFyYXRvcixlKTtpZihuPD10KXJldHVybiBufXJldHVybi0xfX0se2tleToiX2FkanVzdFJhbmdlV2l0aFNlcGFyYXRvcnMiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcy5fZmluZFNlcGFyYXRvckFyb3VuZCh0KTtuPj0wJiYodD1uKTt2YXIgaT10aGlzLl9maW5kU2VwYXJhdG9yQXJvdW5kKGUpO3JldHVybiBpPj0wJiYoZT1pK3RoaXMudGhvdXNhbmRzU2VwYXJhdG9yLmxlbmd0aCksW3QsZV19fSx7a2V5OiJyZW1vdmUiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0\/YXJndW1lbnRzWzBdOjAsZT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06dGhpcy52YWx1ZS5sZW5ndGgsbj10aGlzLl9hZGp1c3RSYW5nZVdpdGhTZXBhcmF0b3JzKHQsZSksaT1xcihuLDIpO3Q9aVswXSxlPWlbMV07dmFyIHI9dGhpcy52YWx1ZS5zbGljZSgwLHQpLHU9dGhpcy52YWx1ZS5zbGljZShlKSxzPXRoaXMuX3NlcGFyYXRvcnNDb3VudChyLmxlbmd0aCk7dGhpcy5fdmFsdWU9dGhpcy5faW5zZXJ0VGhvdXNhbmRzU2VwYXJhdG9ycyh0aGlzLl9yZW1vdmVUaG91c2FuZHNTZXBhcmF0b3JzKHIrdSkpO3ZhciBhPXRoaXMuX3NlcGFyYXRvcnNDb3VudEZyb21TbGljZShyKTtyZXR1cm4gbmV3IFlyKHt0YWlsU2hpZnQ6KGEtcykqdGhpcy50aG91c2FuZHNTZXBhcmF0b3IubGVuZ3RofSl9fSx7a2V5OiJuZWFyZXN0SW5wdXRQb3MiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7aWYoIXRoaXMudGhvdXNhbmRzU2VwYXJhdG9yKXJldHVybiB0O3N3aXRjaChlKXtjYXNlIEdyOmNhc2UgS3I6Y2FzZSAkcjp2YXIgbj10aGlzLl9maW5kU2VwYXJhdG9yQXJvdW5kKHQtMSk7aWYobj49MCl7dmFyIGk9bit0aGlzLnRob3VzYW5kc1NlcGFyYXRvci5sZW5ndGg7aWYodDxpfHx0aGlzLnZhbHVlLmxlbmd0aDw9aXx8ZT09PSRyKXJldHVybiBufWJyZWFrO2Nhc2UgV3I6Y2FzZSBYcjp2YXIgcj10aGlzLl9maW5kU2VwYXJhdG9yQXJvdW5kKHQpO2lmKHI+PTApcmV0dXJuIHIrdGhpcy50aG91c2FuZHNTZXBhcmF0b3IubGVuZ3RofXJldHVybiB0fX0se2tleToiZG9WYWxpZGF0ZSIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9KHQuaW5wdXQ\/dGhpcy5fbnVtYmVyUmVnRXhwSW5wdXQ6dGhpcy5fbnVtYmVyUmVnRXhwKS50ZXN0KHRoaXMuX3JlbW92ZVRob3VzYW5kc1NlcGFyYXRvcnModGhpcy52YWx1ZSkpO2lmKGUpe3ZhciBpPXRoaXMubnVtYmVyO2U9ZSYmIWlzTmFOKGkpJiYobnVsbD09dGhpcy5taW58fHRoaXMubWluPj0wfHx0aGlzLm1pbjw9dGhpcy5udW1iZXIpJiYobnVsbD09dGhpcy5tYXh8fHRoaXMubWF4PD0wfHx0aGlzLm51bWJlcjw9dGhpcy5tYXgpfXJldHVybiBlJiZOcihUcihuLnByb3RvdHlwZSksImRvVmFsaWRhdGUiLHRoaXMpLmNhbGwodGhpcyx0KX19LHtrZXk6ImRvQ29tbWl0Iix2YWx1ZTpmdW5jdGlvbigpe2lmKHRoaXMudmFsdWUpe3ZhciB0PXRoaXMubnVtYmVyLGU9dDtudWxsIT10aGlzLm1pbiYmKGU9TWF0aC5tYXgoZSx0aGlzLm1pbikpLG51bGwhPXRoaXMubWF4JiYoZT1NYXRoLm1pbihlLHRoaXMubWF4KSksZSE9PXQmJih0aGlzLnVubWFza2VkVmFsdWU9U3RyaW5nKGUpKTt2YXIgaT10aGlzLnZhbHVlO3RoaXMubm9ybWFsaXplWmVyb3MmJihpPXRoaXMuX25vcm1hbGl6ZVplcm9zKGkpKSx0aGlzLnBhZEZyYWN0aW9uYWxaZXJvcyYmdGhpcy5zY2FsZT4wJiYoaT10aGlzLl9wYWRGcmFjdGlvbmFsWmVyb3MoaSkpLHRoaXMuX3ZhbHVlPWl9TnIoVHIobi5wcm90b3R5cGUpLCJkb0NvbW1pdCIsdGhpcykuY2FsbCh0aGlzKX19LHtrZXk6Il9ub3JtYWxpemVaZXJvcyIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fcmVtb3ZlVGhvdXNhbmRzU2VwYXJhdG9ycyh0KS5zcGxpdCh0aGlzLnJhZGl4KTtyZXR1cm4gZVswXT1lWzBdLnJlcGxhY2UoL14oXEQqKSgwKikoXGQqKS8sKGZ1bmN0aW9uKHQsZSxuLGkpe3JldHVybiBlK2l9KSksdC5sZW5ndGgmJiEvXGQkLy50ZXN0KGVbMF0pJiYoZVswXT1lWzBdKyIwIiksZS5sZW5ndGg+MSYmKGVbMV09ZVsxXS5yZXBsYWNlKC8wKiQvLCIiKSxlWzFdLmxlbmd0aHx8KGUubGVuZ3RoPTEpKSx0aGlzLl9pbnNlcnRUaG91c2FuZHNTZXBhcmF0b3JzKGUuam9pbih0aGlzLnJhZGl4KSl9fSx7a2V5OiJfcGFkRnJhY3Rpb25hbFplcm9zIix2YWx1ZTpmdW5jdGlvbih0KXtpZighdClyZXR1cm4gdDt2YXIgZT10LnNwbGl0KHRoaXMucmFkaXgpO3JldHVybiBlLmxlbmd0aDwyJiZlLnB1c2goIiIpLGVbMV09ZVsxXS5wYWRFbmQodGhpcy5zY2FsZSwiMCIpLGUuam9pbih0aGlzLnJhZGl4KX19LHtrZXk6InVubWFza2VkVmFsdWUiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9yZW1vdmVUaG91c2FuZHNTZXBhcmF0b3JzKHRoaXMuX25vcm1hbGl6ZVplcm9zKHRoaXMudmFsdWUpKS5yZXBsYWNlKHRoaXMucmFkaXgsIi4iKX0sc2V0OmZ1bmN0aW9uKHQpe3pyKFRyKG4ucHJvdG90eXBlKSwidW5tYXNrZWRWYWx1ZSIsdC5yZXBsYWNlKCIuIix0aGlzLnJhZGl4KSx0aGlzLCEwKX19LHtrZXk6InR5cGVkVmFsdWUiLGdldDpmdW5jdGlvbigpe3JldHVybiBOdW1iZXIodGhpcy51bm1hc2tlZFZhbHVlKX0sc2V0OmZ1bmN0aW9uKHQpe3pyKFRyKG4ucHJvdG90eXBlKSwidW5tYXNrZWRWYWx1ZSIsU3RyaW5nKHQpLHRoaXMsITApfX0se2tleToibnVtYmVyIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50eXBlZFZhbHVlfSxzZXQ6ZnVuY3Rpb24odCl7dGhpcy50eXBlZFZhbHVlPXR9fSx7a2V5OiJhbGxvd05lZ2F0aXZlIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zaWduZWR8fG51bGwhPXRoaXMubWluJiZ0aGlzLm1pbjwwfHxudWxsIT10aGlzLm1heCYmdGhpcy5tYXg8MH19XSksbn0ocnUpO0Z1LkRFRkFVTFRTPXtyYWRpeDoiLCIsdGhvdXNhbmRzU2VwYXJhdG9yOiIiLG1hcFRvUmFkaXg6WyIuIl0sc2NhbGU6MixzaWduZWQ6ITEsbm9ybWFsaXplWmVyb3M6ITAscGFkRnJhY3Rpb25hbFplcm9zOiExfSxpdS5NYXNrZWROdW1iZXI9RnU7dmFyIFN1PWZ1bmN0aW9uKHQpe1ByKG4sdCk7dmFyIGU9VnIobik7ZnVuY3Rpb24gbigpe3JldHVybiB4cih0aGlzLG4pLGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiBPcihuLFt7a2V5OiJfdXBkYXRlIix2YWx1ZTpmdW5jdGlvbih0KXt0Lm1hc2smJih0LnZhbGlkYXRlPXQubWFzayksTnIoVHIobi5wcm90b3R5cGUpLCJfdXBkYXRlIix0aGlzKS5jYWxsKHRoaXMsdCl9fV0pLG59KHJ1KTtpdS5NYXNrZWRGdW5jdGlvbj1TdTt2YXIgd3U9WyJjb21waWxlZE1hc2tzIiwiY3VycmVudE1hc2tSZWYiLCJjdXJyZW50TWFzayJdLEJ1PWZ1bmN0aW9uKHQpe1ByKG4sdCk7dmFyIGU9VnIobik7ZnVuY3Rpb24gbih0KXt2YXIgaTtyZXR1cm4geHIodGhpcyxuKSwoaT1lLmNhbGwodGhpcyxPYmplY3QuYXNzaWduKHt9LG4uREVGQVVMVFMsdCkpKS5jdXJyZW50TWFzaz1udWxsLGl9cmV0dXJuIE9yKG4sW3trZXk6Il91cGRhdGUiLHZhbHVlOmZ1bmN0aW9uKHQpe05yKFRyKG4ucHJvdG90eXBlKSwiX3VwZGF0ZSIsdGhpcykuY2FsbCh0aGlzLHQpLCJtYXNrImluIHQmJih0aGlzLmNvbXBpbGVkTWFza3M9QXJyYXkuaXNBcnJheSh0Lm1hc2spP3QubWFzay5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBzdSh0KX0pKTpbXSl9fSx7a2V5OiJfYXBwZW5kQ2hhclJhdyIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0\/YXJndW1lbnRzWzFdOnt9LG49dGhpcy5fYXBwbHlEaXNwYXRjaCh0LGUpO3JldHVybiB0aGlzLmN1cnJlbnRNYXNrJiZuLmFnZ3JlZ2F0ZSh0aGlzLmN1cnJlbnRNYXNrLl9hcHBlbmRDaGFyKHQsZSkpLG59fSx7a2V5OiJfYXBwbHlEaXNwYXRjaCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06IiIsZT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06e30sbj1lLnRhaWwmJm51bGwhPWUuX2JlZm9yZVRhaWxTdGF0ZT9lLl9iZWZvcmVUYWlsU3RhdGUuX3ZhbHVlOnRoaXMudmFsdWUsaT10aGlzLnJhd0lucHV0VmFsdWUscj1lLnRhaWwmJm51bGwhPWUuX2JlZm9yZVRhaWxTdGF0ZT9lLl9iZWZvcmVUYWlsU3RhdGUuX3Jhd0lucHV0VmFsdWU6aSx1PWkuc2xpY2Uoci5sZW5ndGgpLHM9dGhpcy5jdXJyZW50TWFzayxhPW5ldyBZcixvPXMmJnMuc3RhdGU7aWYodGhpcy5jdXJyZW50TWFzaz10aGlzLmRvRGlzcGF0Y2godCxPYmplY3QuYXNzaWduKHt9LGUpKSx0aGlzLmN1cnJlbnRNYXNrKWlmKHRoaXMuY3VycmVudE1hc2shPT1zKXtpZih0aGlzLmN1cnJlbnRNYXNrLnJlc2V0KCkscil7dmFyIGw9dGhpcy5jdXJyZW50TWFzay5hcHBlbmQocix7cmF3OiEwfSk7YS50YWlsU2hpZnQ9bC5pbnNlcnRlZC5sZW5ndGgtbi5sZW5ndGh9dSYmKGEudGFpbFNoaWZ0Kz10aGlzLmN1cnJlbnRNYXNrLmFwcGVuZCh1LHtyYXc6ITAsdGFpbDohMH0pLnRhaWxTaGlmdCl9ZWxzZSB0aGlzLmN1cnJlbnRNYXNrLnN0YXRlPW87cmV0dXJuIGF9fSx7a2V5OiJfYXBwZW5kUGxhY2Vob2xkZXIiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fYXBwbHlEaXNwYXRjaC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIHRoaXMuY3VycmVudE1hc2smJnQuYWdncmVnYXRlKHRoaXMuY3VycmVudE1hc2suX2FwcGVuZFBsYWNlaG9sZGVyKCkpLHR9fSx7a2V5OiJfYXBwZW5kRWFnZXIiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fYXBwbHlEaXNwYXRjaC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIHRoaXMuY3VycmVudE1hc2smJnQuYWdncmVnYXRlKHRoaXMuY3VycmVudE1hc2suX2FwcGVuZEVhZ2VyKCkpLHR9fSx7a2V5OiJkb0Rpc3BhdGNoIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06e307cmV0dXJuIHRoaXMuZGlzcGF0Y2godCx0aGlzLGUpfX0se2tleToiZG9WYWxpZGF0ZSIsdmFsdWU6ZnVuY3Rpb24oKXtmb3IodmFyIHQsZSxpPWFyZ3VtZW50cy5sZW5ndGgscj1uZXcgQXJyYXkoaSksdT0wO3U8aTt1Kyspclt1XT1hcmd1bWVudHNbdV07cmV0dXJuKHQ9TnIoVHIobi5wcm90b3R5cGUpLCJkb1ZhbGlkYXRlIix0aGlzKSkuY2FsbC5hcHBseSh0LFt0aGlzXS5jb25jYXQocikpJiYoIXRoaXMuY3VycmVudE1hc2t8fChlPXRoaXMuY3VycmVudE1hc2spLmRvVmFsaWRhdGUuYXBwbHkoZSxyKSl9fSx7a2V5OiJyZXNldCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdDtudWxsPT09KHQ9dGhpcy5jdXJyZW50TWFzayl8fHZvaWQgMD09PXR8fHQucmVzZXQoKSx0aGlzLmNvbXBpbGVkTWFza3MuZm9yRWFjaCgoZnVuY3Rpb24odCl7cmV0dXJuIHQucmVzZXQoKX0pKX19LHtrZXk6InZhbHVlIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jdXJyZW50TWFzaz90aGlzLmN1cnJlbnRNYXNrLnZhbHVlOiIifSxzZXQ6ZnVuY3Rpb24odCl7enIoVHIobi5wcm90b3R5cGUpLCJ2YWx1ZSIsdCx0aGlzLCEwKX19LHtrZXk6InVubWFza2VkVmFsdWUiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmN1cnJlbnRNYXNrP3RoaXMuY3VycmVudE1hc2sudW5tYXNrZWRWYWx1ZToiIn0sc2V0OmZ1bmN0aW9uKHQpe3pyKFRyKG4ucHJvdG90eXBlKSwidW5tYXNrZWRWYWx1ZSIsdCx0aGlzLCEwKX19LHtrZXk6InR5cGVkVmFsdWUiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmN1cnJlbnRNYXNrP3RoaXMuY3VycmVudE1hc2sudHlwZWRWYWx1ZToiIn0sc2V0OmZ1bmN0aW9uKHQpe3ZhciBlPVN0cmluZyh0KTt0aGlzLmN1cnJlbnRNYXNrJiYodGhpcy5jdXJyZW50TWFzay50eXBlZFZhbHVlPXQsZT10aGlzLmN1cnJlbnRNYXNrLnVubWFza2VkVmFsdWUpLHRoaXMudW5tYXNrZWRWYWx1ZT1lfX0se2tleToiaXNDb21wbGV0ZSIsZ2V0OmZ1bmN0aW9uKCl7dmFyIHQ7cmV0dXJuIEJvb2xlYW4obnVsbD09PSh0PXRoaXMuY3VycmVudE1hc2spfHx2b2lkIDA9PT10P3ZvaWQgMDp0LmlzQ29tcGxldGUpfX0se2tleToiaXNGaWxsZWQiLGdldDpmdW5jdGlvbigpe3ZhciB0O3JldHVybiBCb29sZWFuKG51bGw9PT0odD10aGlzLmN1cnJlbnRNYXNrKXx8dm9pZCAwPT09dD92b2lkIDA6dC5pc0ZpbGxlZCl9fSx7a2V5OiJyZW1vdmUiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQsZT1uZXcgWXI7dGhpcy5jdXJyZW50TWFzayYmZS5hZ2dyZWdhdGUoKHQ9dGhpcy5jdXJyZW50TWFzaykucmVtb3ZlLmFwcGx5KHQsYXJndW1lbnRzKSkuYWdncmVnYXRlKHRoaXMuX2FwcGx5RGlzcGF0Y2goKSk7cmV0dXJuIGV9fSx7a2V5OiJzdGF0ZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIE9iamVjdC5hc3NpZ24oe30sTnIoVHIobi5wcm90b3R5cGUpLCJzdGF0ZSIsdGhpcykse19yYXdJbnB1dFZhbHVlOnRoaXMucmF3SW5wdXRWYWx1ZSxjb21waWxlZE1hc2tzOnRoaXMuY29tcGlsZWRNYXNrcy5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0LnN0YXRlfSkpLGN1cnJlbnRNYXNrUmVmOnRoaXMuY3VycmVudE1hc2ssY3VycmVudE1hc2s6dGhpcy5jdXJyZW50TWFzayYmdGhpcy5jdXJyZW50TWFzay5zdGF0ZX0pfSxzZXQ6ZnVuY3Rpb24odCl7dmFyIGU9dC5jb21waWxlZE1hc2tzLGk9dC5jdXJyZW50TWFza1JlZixyPXQuY3VycmVudE1hc2ssdT1qcih0LHd1KTt0aGlzLmNvbXBpbGVkTWFza3MuZm9yRWFjaCgoZnVuY3Rpb24odCxuKXtyZXR1cm4gdC5zdGF0ZT1lW25dfSkpLG51bGwhPWkmJih0aGlzLmN1cnJlbnRNYXNrPWksdGhpcy5jdXJyZW50TWFzay5zdGF0ZT1yKSx6cihUcihuLnByb3RvdHlwZSksInN0YXRlIix1LHRoaXMsITApfX0se2tleToiZXh0cmFjdElucHV0Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0O3JldHVybiB0aGlzLmN1cnJlbnRNYXNrPyh0PXRoaXMuY3VycmVudE1hc2spLmV4dHJhY3RJbnB1dC5hcHBseSh0LGFyZ3VtZW50cyk6IiJ9fSx7a2V5OiJleHRyYWN0VGFpbCIsdmFsdWU6ZnVuY3Rpb24oKXtmb3IodmFyIHQsZSxpPWFyZ3VtZW50cy5sZW5ndGgscj1uZXcgQXJyYXkoaSksdT0wO3U8aTt1Kyspclt1XT1hcmd1bWVudHNbdV07cmV0dXJuIHRoaXMuY3VycmVudE1hc2s\/KHQ9dGhpcy5jdXJyZW50TWFzaykuZXh0cmFjdFRhaWwuYXBwbHkodCxyKTooZT1OcihUcihuLnByb3RvdHlwZSksImV4dHJhY3RUYWlsIix0aGlzKSkuY2FsbC5hcHBseShlLFt0aGlzXS5jb25jYXQocikpfX0se2tleToiZG9Db21taXQiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5jdXJyZW50TWFzayYmdGhpcy5jdXJyZW50TWFzay5kb0NvbW1pdCgpLE5yKFRyKG4ucHJvdG90eXBlKSwiZG9Db21taXQiLHRoaXMpLmNhbGwodGhpcyl9fSx7a2V5OiJuZWFyZXN0SW5wdXRQb3MiLHZhbHVlOmZ1bmN0aW9uKCl7Zm9yKHZhciB0LGUsaT1hcmd1bWVudHMubGVuZ3RoLHI9bmV3IEFycmF5KGkpLHU9MDt1PGk7dSsrKXJbdV09YXJndW1lbnRzW3VdO3JldHVybiB0aGlzLmN1cnJlbnRNYXNrPyh0PXRoaXMuY3VycmVudE1hc2spLm5lYXJlc3RJbnB1dFBvcy5hcHBseSh0LHIpOihlPU5yKFRyKG4ucHJvdG90eXBlKSwibmVhcmVzdElucHV0UG9zIix0aGlzKSkuY2FsbC5hcHBseShlLFt0aGlzXS5jb25jYXQocikpfX0se2tleToib3ZlcndyaXRlIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jdXJyZW50TWFzaz90aGlzLmN1cnJlbnRNYXNrLm92ZXJ3cml0ZTpOcihUcihuLnByb3RvdHlwZSksIm92ZXJ3cml0ZSIsdGhpcyl9LHNldDpmdW5jdGlvbih0KXtjb25zb2xlLndhcm4oJyJvdmVyd3JpdGUiIG9wdGlvbiBpcyBub3QgYXZhaWxhYmxlIGluIGR5bmFtaWMgbWFzaywgdXNlIHRoaXMgb3B0aW9uIGluIHNpYmxpbmdzJyl9fSx7a2V5OiJlYWdlciIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY3VycmVudE1hc2s\/dGhpcy5jdXJyZW50TWFzay5lYWdlcjpOcihUcihuLnByb3RvdHlwZSksImVhZ2VyIix0aGlzKX0sc2V0OmZ1bmN0aW9uKHQpe2NvbnNvbGUud2FybignImVhZ2VyIiBvcHRpb24gaXMgbm90IGF2YWlsYWJsZSBpbiBkeW5hbWljIG1hc2ssIHVzZSB0aGlzIG9wdGlvbiBpbiBzaWJsaW5ncycpfX0se2tleToibWFza0VxdWFscyIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIEFycmF5LmlzQXJyYXkodCkmJnRoaXMuY29tcGlsZWRNYXNrcy5ldmVyeSgoZnVuY3Rpb24oZSxuKXt2YXIgaTtyZXR1cm4gZS5tYXNrRXF1YWxzKG51bGw9PT0oaT10W25dKXx8dm9pZCAwPT09aT92b2lkIDA6aS5tYXNrKX0pKX19XSksbn0ocnUpO0J1LkRFRkFVTFRTPXtkaXNwYXRjaDpmdW5jdGlvbih0LGUsbil7aWYoZS5jb21waWxlZE1hc2tzLmxlbmd0aCl7dmFyIGk9ZS5yYXdJbnB1dFZhbHVlLHI9ZS5jb21waWxlZE1hc2tzLm1hcCgoZnVuY3Rpb24oZSxyKXtyZXR1cm4gZS5yZXNldCgpLGUuYXBwZW5kKGkse3JhdzohMH0pLGUuYXBwZW5kKHQsbikse3dlaWdodDplLnJhd0lucHV0VmFsdWUubGVuZ3RoLGluZGV4OnJ9fSkpO3JldHVybiByLnNvcnQoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUud2VpZ2h0LXQud2VpZ2h0fSkpLGUuY29tcGlsZWRNYXNrc1tyWzBdLmluZGV4XX19fSxpdS5NYXNrZWREeW5hbWljPUJ1O3ZhciBEdT17TUFTS0VEOiJ2YWx1ZSIsVU5NQVNLRUQ6InVubWFza2VkVmFsdWUiLFRZUEVEOiJ0eXBlZFZhbHVlIn07ZnVuY3Rpb24geHUodCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0\/YXJndW1lbnRzWzFdOkR1Lk1BU0tFRCxuPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTpEdS5NQVNLRUQsaT1zdSh0KTtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIGkucnVuSXNvbGF0ZWQoKGZ1bmN0aW9uKGkpe3JldHVybiBpW2VdPXQsaVtuXX0pKX19ZnVuY3Rpb24gTXUodCl7Zm9yKHZhciBlPWFyZ3VtZW50cy5sZW5ndGgsbj1uZXcgQXJyYXkoZT4xP2UtMTowKSxpPTE7aTxlO2krKyluW2ktMV09YXJndW1lbnRzW2ldO3JldHVybiB4dS5hcHBseSh2b2lkIDAsbikodCl9aXUuUElQRV9UWVBFPUR1LGl1LmNyZWF0ZVBpcGU9eHUsaXUucGlwZT1NdTt0cnl7Z2xvYmFsVGhpcy5JTWFzaz1pdX1jYXRjaCh0KXt9dC5IVE1MQ29udGVudGVkaXRhYmxlTWFza0VsZW1lbnQ9X3UsdC5IVE1MTWFza0VsZW1lbnQ9YnUsdC5JbnB1dE1hc2s9Q3UsdC5NYXNrRWxlbWVudD1tdSx0Lk1hc2tlZD1ydSx0Lk1hc2tlZERhdGU9eXUsdC5NYXNrZWREeW5hbWljPUJ1LHQuTWFza2VkRW51bT1FdSx0Lk1hc2tlZEZ1bmN0aW9uPVN1LHQuTWFza2VkTnVtYmVyPUZ1LHQuTWFza2VkUGF0dGVybj1ndSx0Lk1hc2tlZFJhbmdlPWt1LHQuTWFza2VkUmVnRXhwPWR1LHQuUElQRV9UWVBFPUR1LHQuY3JlYXRlTWFzaz1zdSx0LmNyZWF0ZVBpcGU9eHUsdC5kZWZhdWx0PWl1LHQucGlwZT1NdSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSl9KSk7DQovLyMgc291cmNlTWFwcGluZ1VSTD1pbWFzay5taW4uanMubWFwOwovKiogL20vanMvdmFuaWxsYWpzL2Zvcm0uanMgKiovCnZhciBfX19kMmNfZm9ybWpzX2Nfb249IjIwMjUtMDUtMjMgMTc6MDU6MjAiOyd1c2Ugc3RyaWN0Jzt2YXIgX19fZDJjX2Zvcm1qc19jX29uPSIyMDI0LTAxLTMxIDE0OjMzOjA5IjsidXNlIHN0cmljdCI7X19fZDJjX2Zvcm1qc19jX29uPSIyMDIzLTA0LTI3IDEwOjMwOjQ5IjsidXNlIHN0cmljdCI7CmNvbnN0IEZvcm09ZnVuY3Rpb24oKXt0aGlzLk1BU0tTPXtwaG9uZToiMDAwIDAwMC0wMDAwIixzaW46IjAwMCAwMDAgMDAwIixwb3N0YWxDb2RlOiJhMGEgMGEwIn07dGhpcy5tYXNrPShhLGIpPT57YT1kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKGEpO2EubGVuZ3RoJiZhLmZvckVhY2goYz0+e0lNYXNrKGMsYil9KX07dGhpcy5tYXNrTnVtYmVyPShhLGIpPT57bGV0IGM9e21hc2s6TnVtYmVyLG1pbjowfTtiJiYoYy5tYXg9Yik7dGhpcy5tYXNrKGEsYyl9O3RoaXMubWFza1Bob25lPWE9Pnt0aGlzLm1hc2soYSx7bWFzazpbe21hc2s6dGhpcy5NQVNLUy5waG9uZX0se21hc2s6YDEgJHt0aGlzLk1BU0tTLnBob25lfWB9XX0pfTt0aGlzLm1hc2tQb3N0YWxDb2RlPWE9Pnt0aGlzLm1hc2soYSx7bWFzazp0aGlzLk1BU0tTLnBvc3RhbENvZGUscHJlcGFyZTpiPT5iLnRvVXBwZXJDYXNlKCl9KX19OwovKiogL20vanMvZ2VuZXJpY01haWwuanMgKiovCnZhciBfX19kMmNfZ2VuZXJpY01haWxqc19jX29uPSIyMDI1LTA1LTIzIDE3OjEwOjE1IjsndXNlIHN0cmljdCc7dmFyIF9fX2QyY19nZW5lcmljTWFpbGpzX2Nfb249IjIwMjQtMTEtMjggMTA6MzA6MTEiOyJ1c2Ugc3RyaWN0IjsKR2VuZXJpY01haWw9ZnVuY3Rpb24odil7ZnVuY3Rpb24gbShjKXtjPWMudG9TdHJpbmcoKTtyZXR1cm4gYy5yZXBsYWNlKC88XC8\/W14+XSs+L2dpLCIiKX12YXIgYj10aGlzO2IubWFpbElEPXY7Yi5lbWFpbFNlbnQ9ZnVuY3Rpb24oYyl7bWFpbFNlbnRIYW5kbGVyPWdldE1haWxTZW50SGFuZGxlcihiLm1haWxJRCk7Yz8oInVuZGVmaW5lZCIhPXR5cGVvZiBtYWlsU2VudEhhbmRsZXImJihtYWlsU2VudEhhbmRsZXIudGltZW91dENhbGxiYWNrPWIubXNnU2VudEZpbmlzaGVkSGFuZGxlcixtYWlsU2VudEhhbmRsZXIuc2hvd1N1Y2Nlc3MoKSksYi5jbGVhckZvcm0oKSk6InVuZGVmaW5lZCIhPXR5cGVvZiBtYWlsU2VudEhhbmRsZXImJihtYWlsU2VudEhhbmRsZXIudGltZW91dENhbGxiYWNrPWIubXNnU2VudEZpbmlzaGVkSGFuZGxlcixtYWlsU2VudEhhbmRsZXIuc2hvd0ZhaWwoKSl9O2IuY2xlYXJGb3JtPWZ1bmN0aW9uKCl7dmFyIGM9Yi5qcVNjb3BlO2lmKCJ1bmRlZmluZWQiPT09CnR5cGVvZiBjfHwiIj09YylpZigkKCIuSW5uZXJCb3hMYXllciIpLmxlbmd0aCljPSIuSW5uZXJCb3hMYXllciI7ZWxzZSByZXR1cm47JCgiLmpxVHJhbnNmb3JtSW5wdXRXcmFwcGVyIGlucHV0LCAuanFUcmFuc2Zvcm1UZXh0YXJlYSB0ZXh0YXJlYSIsYykuZWFjaChmdW5jdGlvbigpeyQodGhpcykudmFsKCIiKTskKHRoaXMpLmF0dHIoInBsYWNlaG9sZGVyIiwkKHRoaXMpLmF0dHIoImFsdCIpKX0pOyQoIiNmb290ZXJEaXYgI2xlYWRTZW50IikucmVtb3ZlKCl9O2IubXNnU2VudEZpbmlzaGVkSGFuZGxlcj1mdW5jdGlvbigpe307Yi5iYW5kcExpbms9ZnVuY3Rpb24oYyl7cmV0dXJuIGVtYWlsSGFuZGxlci5iYW5kcExpbmsoYyl9O2Iuc2F2ZT1mdW5jdGlvbihjKXsidW5kZWZpbmVkIiE9PXR5cGVvZiBkZWJ1ZyYmZGVidWcoYyk7aWYoIWIuX3ZhbGlkYXRlRmllbGRzKCkpcmV0dXJuICQoImh0bWwsIGJvZHkiKS5hbmltYXRlKHtzY3JvbGxUb3A6JCgiLnZhbGlkaXR5LWVycm9uZW91czpmaXJzdCIpLm9mZnNldCgpLnRvcC0KMTAwfSwyRTMpLCExO2IucHJlcGFyZSgpO2VtYWlsSGFuZGxlci5zZW5kTWFpbCgpfTtiLnByZXBhcmU9ZnVuY3Rpb24oKXt2YXIgYz1mdW5jdGlvbihoKXt4PShoKyIiKS5zcGxpdCgiLiIpO3gxPXhbMF07eDI9MTx4Lmxlbmd0aD8iLiIreFsxXToiIjtmb3IoaD0vKFxkKykoXGR7M30pLztoLnRlc3QoeDEpOyl4MT14MS5yZXBsYWNlKGgsIiQxLCQyIik7cmV0dXJuIHgxK3gyfSxnPWIuanFTY29wZT9iLmpxU2NvcGU6Ii5Jbm5lckJveExheWVyIixrPSIiLGE9IiIsZT0iIixkPSIiLGY9IiI7az0wPCQoIiNlbWFpbFN1YmplY3REZWZfIitiLm1haWxJRCxnKS5sZW5ndGg\/JCgiI2VtYWlsU3ViamVjdERlZl8iK2IubWFpbElELGcpLnRleHQoKTowPCQoIiNlbWFpbFN1YmplY3REZWYiLGcpLmxlbmd0aD8kKCIjZW1haWxTdWJqZWN0RGVmIixnKS50ZXh0KCk6JCgiI2VtYWlsU3ViamVjdERlZiIpLnRleHQoKTthPTA8JCgiI2VtYWlsQm9keURlZl8iK2IubWFpbElELGcpLmxlbmd0aD8kKCIjZW1haWxCb2R5RGVmXyIrCmIubWFpbElELGcpLmh0bWwoKTokKCIjZW1haWxCb2R5RGVmIixnKS5sZW5ndGg\/JCgiI2VtYWlsQm9keURlZiIsZykuaHRtbCgpOiQoIiNlbWFpbEJvZHlEZWYiKS5odG1sKCk7dmFyIGw9InVuZGVmaW5lZCIhPXR5cGVvZiAkKCIjdGV4dElzRGVtbyIpLmF0dHIoImlkIikmJiIxIj09JCgiI3RleHRJc0RlbW8iKS52YWwoKT8hMDohMTsidW5kZWZpbmVkIiE9dHlwZW9mIG1haWxRdWlja0VtYWlsJiZudWxsIT1tYWlsUXVpY2tFbWFpbCYmInN0cmluZyI9PT10eXBlb2YgbWFpbFF1aWNrRW1haWwubWVzc2FnZSYmKGVtYWlsSGFuZGxlci5jb21tZW50cz1tYWlsUXVpY2tFbWFpbC5tZXNzYWdlKTtzd2l0Y2goYi5tYWlsSUQpe2Nhc2UgIlF1aWNrRW1haWwiOmNhc2UgIlF1aWNrRW1haWxOZXdJbnZlbnRvcnkiOmNhc2UgIm1lbnVDb250YWN0VXMiOmVtYWlsSGFuZGxlci5wb3B1cGRpdj0icXVpY2tFbWFpbEZvcm0iO21haWxRdWlja0VtYWlsLmFzc2lnblZhbHVlcygpO2E9YS5yZXBsYWNlKC97XCROQU1FfS9nLApkMmNtZWRpYS5jYXBpdGFsaXNlRmlyc3RMZXR0ZXJPZkV2ZXJ5V29yZChtYWlsUXVpY2tFbWFpbC5uYW1lKSkucmVwbGFjZSgve1wkRU1BSUx9L2csbWFpbFF1aWNrRW1haWwuZW1haWwpO2E9YS5yZXBsYWNlKC97XCRFTUFJTFBIT05FfS9nLG1haWxRdWlja0VtYWlsLnBob25lKS5yZXBsYWNlKC97XCRNRVNTQUdFfS9nLG1haWxRdWlja0VtYWlsLm1lc3NhZ2UpO2E9YS5yZXBsYWNlKC97XCRFTUFJTE1BS0V9L2csbWFpbFF1aWNrRW1haWwubWFrZSkucmVwbGFjZSgve1wkRU1BSUxNT0RFTH0vZyxtYWlsUXVpY2tFbWFpbC5tb2RlbCk7YT1hLnJlcGxhY2UoL3tcJEVNQUlMWUVBUn0vZyxtYWlsUXVpY2tFbWFpbC55ZWFyKS5yZXBsYWNlKC97XCRTVE9DS05VTUJFUn0vZyxtYWlsUXVpY2tFbWFpbC5zdG9ja051bWJlcik7YT1hLnJlcGxhY2UoL3tcJERFUEFSVE1FTlQyfS9nLG1haWxRdWlja0VtYWlsLmRlcGFydG1lbnQpO2E9YS5yZXBsYWNlKC9DaXR5Oi9nLCIiKTsidW5kZWZpbmVkIiE9CnR5cGVvZiBtYWlsUXVpY2tFbWFpbC5yb2FkVGVzdCYmbnVsbCE9bWFpbFF1aWNrRW1haWwucm9hZFRlc3QmJihhPWEucmVwbGFjZSgve1wkRU1BSUxST0FEVEVTVH0vZyxtYWlsUXVpY2tFbWFpbC5yb2FkVGVzdCkucmVwbGFjZSgve1wkRU1BSUxDQVJEfS9nLG1haWxRdWlja0VtYWlsLmdpZnRDYXJkKSk7ZW1haWxIYW5kbGVyLnVzZXJFbWFpbD1tYWlsUXVpY2tFbWFpbC5lbWFpbDtlbWFpbEhhbmRsZXIudXNlckZpcnN0TmFtZT1tYWlsUXVpY2tFbWFpbC5uYW1lO2VtYWlsSGFuZGxlci51c2VyUGhvbmU9bWFpbFF1aWNrRW1haWwucGhvbmU7ZT1tYWlsUXVpY2tFbWFpbC5tZXNzYWdlO2VtYWlsSGFuZGxlci50cmltPSQoIiNleHByZXNzY2FydHJpbSIpLnZhbCgpO2VtYWlsSGFuZGxlci52aW49JCgiI2V4cHJlc3NjYXJ2aW4iKS52YWwoKTtlbWFpbEhhbmRsZXIucHJpY2U9JCgiI2V4cHJlc3NjYXJwcmljZSIpLnZhbCgpO2VtYWlsSGFuZGxlci5tYWtlPSQoIiNleHByZXNzY2FybWFrZSIpLnZhbCgpOwplbWFpbEhhbmRsZXIubW9kZWw9JCgiI2V4cHJlc3NjYXJtb2RlbCIpLnZhbCgpO2VtYWlsSGFuZGxlci55ZWFyPSQoIiNleHByZXNzY2FyeWVhciIpLnZhbCgpO2VtYWlsSGFuZGxlci5zdG9ja051bWJlcj1tYWlsUXVpY2tFbWFpbC5zdG9ja051bWJlcjsidW5kZWZpbmVkIj09dHlwZW9mICQoIiNleHByZXNzY2FyaWQiKS5hdHRyKCJpZCIpP2VtYWlsSGFuZGxlci5jYXJpZD0iIjplbWFpbEhhbmRsZXIuY2FyaWQ9JCgiI2V4cHJlc3NjYXJpZCIpLnZhbCgpOyQoImlucHV0LmxhYmVsZW1haWwiKS52YWwoIkRlbWFuZGVzLUV4cHJlc3MiKTskKCJpbnB1dC5pc2V4cHJlc3MiKS52YWwoIjEiKTsidW5kZWZpbmVkIiE9dHlwZW9mIHNlYXJjaEVuZ2luZSYmKCQoImlucHV0LmJyYW5kZW1haWwiKS52YWwobWFpbFF1aWNrRW1haWwubWFrZSksJCgiaW5wdXQubW9kZWxlbWFpbCIpLnZhbChtYWlsUXVpY2tFbWFpbC5tb2RlbCksJCgiaW5wdXQueWVhcmVtYWlsIikudmFsKG1haWxRdWlja0VtYWlsLnllYXIpKTsKInVuZGVmaW5lZCIhPXR5cGVvZiAkKCIjZXhwcmVzc2NhcmlkIikuYXR0cigiaWQiKT8wPCQoIiNleHByZXNzY2FyaWQiKS52YWwoKS5sZW5ndGg\/ZW1haWxIYW5kbGVyLmNvbmRpdGlvbj0iVXNlZCI6ZW1haWxIYW5kbGVyLmNvbmRpdGlvbj0wPG1haWxRdWlja0VtYWlsLm1ha2UubGVuZ3RoPyJOZXciOiJVbmtub3duIjplbWFpbEhhbmRsZXIuY29uZGl0aW9uPSJVbmtub3duIjsiIiE9PW1haWxRdWlja0VtYWlsLmRlcGFydG1lbnQmJihlbWFpbEhhbmRsZXIuZGVwYXJ0bWVudD1tYWlsUXVpY2tFbWFpbC5kZXBhcnRtZW50KTtkPW1haWxRdWlja0VtYWlsLmdldFNlbmRUbygpO2Y9bWFpbFF1aWNrRW1haWwuZ2V0U2VuZFRvQWRmKCk7YnJlYWs7Y2FzZSAiUmViYXRlQ291cG9uUHJvbW8iOm1haWxRdWlja0VtYWlsLmFzc2lnblZhbHVlcygpO2U9bWFpbFF1aWNrRW1haWwubWVzc2FnZTthPWEucmVwbGFjZSgve1wkTkFNRX0vZyxkMmNtZWRpYS5jYXBpdGFsaXNlRmlyc3RMZXR0ZXJPZkV2ZXJ5V29yZChtYWlsUXVpY2tFbWFpbC5uYW1lKSkucmVwbGFjZSgve1wkRU1BSUx9L2csCm1haWxRdWlja0VtYWlsLmVtYWlsKTthPWEucmVwbGFjZSgve1wkRU1BSUxQSE9ORX0vZyxtYWlsUXVpY2tFbWFpbC5waG9uZSkucmVwbGFjZSgve1wkTUVTU0FHRX0vZyxtYWlsUXVpY2tFbWFpbC5tZXNzYWdlKTthPWEucmVwbGFjZSgve1wkQ09VUE9OTUFLRX0vZywkKCIjY291cG9ubWFrZSIpLnZhbCgpKS5yZXBsYWNlKC97XCRDT1VQT05NT0RFTH0vZywkKCIjY291cG9ubW9kZWwiKS52YWwoKSk7YT1hLnJlcGxhY2UoL3tcJENPVVBPTllFQVJ9L2csJCgiI2NvdXBvbnllYXIiKS52YWwoKSkucmVwbGFjZSgve1wkQ09VUE9OU1RPQ0tOVU1CRVJ9L2csJCgiI2NvdXBvbnN0b2NrbnVtYmVyIikudmFsKCkpO2E9YS5yZXBsYWNlKC97XCRDT1VQT05WQUxVRX0vZywkKCIjY291cG9uVmFsdWUiKS52YWwoKSsiJCIpLnJlcGxhY2UoL3tcJFBSSUNFfS9nLCQoIiN2ZWhpY2xlT3JpZ1ByaWNlIikudmFsKCkrIiQiKTtlbWFpbEhhbmRsZXIubWFrZT0kKCIjY291cG9ubWFrZSIpLnZhbCgpOwplbWFpbEhhbmRsZXIubW9kZWw9JCgiI2NvdXBvbm1vZGVsIikudmFsKCk7ZW1haWxIYW5kbGVyLnllYXI9JCgiI2NvdXBvbnllYXIiKS52YWwoKTtlbWFpbEhhbmRsZXIudXNlckVtYWlsPW1haWxRdWlja0VtYWlsLmVtYWlsO2VtYWlsSGFuZGxlci51c2VyRmlyc3ROYW1lPW1haWxRdWlja0VtYWlsLm5hbWU7ZW1haWxIYW5kbGVyLnVzZXJQaG9uZT1tYWlsUXVpY2tFbWFpbC5waG9uZTtlbWFpbEhhbmRsZXIudHJpbT0kKCIjY291cG9udmVoaWNsZXRyaW0iKS52YWwoKTtlbWFpbEhhbmRsZXIudmluPSQoIiNjb3Vwb252ZWhpY2xldmluIikudmFsKCk7ZW1haWxIYW5kbGVyLnByaWNlPSQoIiN2ZWhpY2xlT3JpZ1ByaWNlIikudmFsKCk7ZW1haWxIYW5kbGVyLnN0b2NrTnVtYmVyPSQoIiNjb3Vwb25zdG9ja251bWJlciIpLnZhbCgpO2VtYWlsSGFuZGxlci5jYXJpZD0kKCIjY291cG9udmVoaWNsZWlkIikudmFsKCk7JCgiaW5wdXQubGFiZWxlbWFpbCIpLnZhbCgiUmViYXRlQ291cG9uUHJvbW8iKTsKInVuZGVmaW5lZCIhPXR5cGVvZiBzZWFyY2hFbmdpbmUmJigkKCJpbnB1dC5icmFuZGVtYWlsIikudmFsKCQoIiNjb3Vwb25tYWtlIikudmFsKCkpLCQoImlucHV0Lm1vZGVsZW1haWwiKS52YWwoJCgiI2NvdXBvbm1vZGVsIikudmFsKCkpLCQoImlucHV0LnllYXJlbWFpbCIpLnZhbCgkKCIjY291cG9ueWVhciIpLnZhbCgpKSk7ZW1haWxIYW5kbGVyLmNvbmRpdGlvbj0iVXNlZCI7Yi5lbWFpbFNlbnQ9ZnVuY3Rpb24oaCl7JCgiLmNsb3NlLXJldmVhbC1tb2RhbCIpLnRyaWdnZXIoImNsaWNrIil9O2JyZWFrO2Nhc2UgIkNhcnByb29mTWFpbCI6ZW1haWxIYW5kbGVyLnBvcHVwZGl2PSJjYXJwcm9vZk1haW5EaXYiO2s9JCgiI2VtYWlsU3ViamVjdERlZjIiKS50ZXh0KCk7YT0kKCIjZW1haWxCb2R5RGVmMiIpLmh0bWwoKTskKCJpbnB1dC5sYWJlbGVtYWlsIikudmFsKCJEZW1hbmRlcy1DYXJQcm9vZiIpOyQoImlucHV0LmlzZXhwcmVzcyIpLnZhbCgiMCIpOyQoImlucHV0LmJyYW5kZW1haWwiKS52YWwoY2FycHJvb2ZIYW5kbGVyLm1ha2UpOwokKCJpbnB1dC5tb2RlbGVtYWlsIikudmFsKGNhcnByb29mSGFuZGxlci5tb2RlbCk7JCgiaW5wdXQueWVhcmVtYWlsIikudmFsKGNhcnByb29mSGFuZGxlci55ZWFyKTthPWEucmVwbGFjZSgve1wkTkFNRX0vZyxkMmNtZWRpYS5jYXBpdGFsaXNlRmlyc3RMZXR0ZXJPZkV2ZXJ5V29yZChjYXJwcm9vZkhhbmRsZXIubmFtZSkpLnJlcGxhY2UoL3tcJEVNQUlMfS9nLGNhcnByb29mSGFuZGxlci5lbWFpbCk7YT1hLnJlcGxhY2UoL3tcJEVNQUlMTUFLRX0vZyxjYXJwcm9vZkhhbmRsZXIubWFrZSkucmVwbGFjZSgve1wkRU1BSUxNT0RFTH0vZyxjYXJwcm9vZkhhbmRsZXIubW9kZWwpLnJlcGxhY2UoL3tcJEVNQUlMWUVBUn0vZyxjYXJwcm9vZkhhbmRsZXIueWVhcik7YT1hLnJlcGxhY2UoL3tcJENPTE9SfS9nLGNhcnByb29mSGFuZGxlci5jb2xvcikucmVwbGFjZSgve1wkU1RPQ0tOVU1CRVJ9L2csY2FycHJvb2ZIYW5kbGVyLnN0b2NrTnVtYmVyKS5yZXBsYWNlKC97XCRFTUFJTFBIT05FfS9nLApjYXJwcm9vZkhhbmRsZXIucGhvbmUpO2VtYWlsSGFuZGxlci51c2VyRW1haWw9Y2FycHJvb2ZIYW5kbGVyLmVtYWlsO2VtYWlsSGFuZGxlci51c2VyRmlyc3ROYW1lPWNhcnByb29mSGFuZGxlci5uYW1lO2VtYWlsSGFuZGxlci51c2VyUGhvbmU9Y2FycHJvb2ZIYW5kbGVyLnBob25lO2VtYWlsSGFuZGxlci5tYWtlPWNhcnByb29mSGFuZGxlci5tYWtlO2VtYWlsSGFuZGxlci5tb2RlbD1jYXJwcm9vZkhhbmRsZXIubW9kZWw7ZW1haWxIYW5kbGVyLnllYXI9Y2FycHJvb2ZIYW5kbGVyLnllYXI7ZW1haWxIYW5kbGVyLnRyaW09JCgiI2NhcnByb29mY2FydHJpbSIpLnZhbCgpO2VtYWlsSGFuZGxlci52aW49JCgiI2NhcnByb29mY2FydmluIikudmFsKCk7ZW1haWxIYW5kbGVyLnByaWNlPSQoIiNjYXJwcm9vZmNhcnByaWNlIikudmFsKCk7ZW1haWxIYW5kbGVyLnN0b2NrTnVtYmVyPWNhcnByb29mSGFuZGxlci5zdG9ja051bWJlcjtlbWFpbEhhbmRsZXIuY2FyaWQ9JCgiI2NhcnByb29mY2FyaWQiKS52YWwoKTsKZD1jYXJwcm9vZkhhbmRsZXIuc2VuZFRvLmxlbmd0aCYmIiIhPWNhcnByb29mSGFuZGxlci5zZW5kVG8\/Y2FycHJvb2ZIYW5kbGVyLnNlbmRUbzokKCIjdGV4dFNlbmRUb0VtYWlsIikubGVuZ3RoPyQoIiN0ZXh0U2VuZFRvRW1haWwiKS52YWwoKToiIjtmPWNhcnByb29mSGFuZGxlci5zZW5kVG9BZGYubGVuZ3RoJiYiIiE9Y2FycHJvb2ZIYW5kbGVyLnNlbmRUb0FkZj9jYXJwcm9vZkhhbmRsZXIuc2VuZFRvQWRmOiQoIiN0ZXh0U2VuZFRvRW1haWxBREYiKS5sZW5ndGg\/JCgiI3RleHRTZW5kVG9FbWFpbEFERiIpLnZhbCgpOiIiO2VtYWlsSGFuZGxlci5kZWFsZXJOYW1lPWNhcnByb29mSGFuZGxlci5kZWFsZXJOYW1lO2JyZWFrO2Nhc2UgIkN1c3RvbWVyUmF0aW5nIjplbWFpbEhhbmRsZXIucG9wdXBkaXY9IkN1c3RvbWVyUmF0aW5nIjttYWlsUmF0aW5nLmFzc2lnblZhbHVlcygpO2E9YS5yZXBsYWNlKC97XCRSQVRJTkdNRVNTQUdFfS9nLG1haWxSYXRpbmcubWVzc2FnZSkucmVwbGFjZSgve1wkTE5BTUV9L2csCmQyY21lZGlhLmNhcGl0YWxpc2VGaXJzdExldHRlck9mRXZlcnlXb3JkKG1haWxSYXRpbmcudXNlckxhc3ROYW1lKSkucmVwbGFjZSgve1wkRk5BTUV9L2csZDJjbWVkaWEuY2FwaXRhbGlzZUZpcnN0TGV0dGVyT2ZFdmVyeVdvcmQobWFpbFJhdGluZy51c2VyRmlyc3ROYW1lKSkucmVwbGFjZSgve1wkRU1BSUx9L2csbWFpbFJhdGluZy51c2VyRW1haWwpLnJlcGxhY2UoL3tcJFBIT05FfS9nLG1haWxSYXRpbmcudXNlclBob25lKS5yZXBsYWNlKC97XCRSQVRJTkdTVEFSU30vZyxtYWlsUmF0aW5nLnJhdGluZykucmVwbGFjZSgve1wkQ0xJRU5UTkFNRX0vZyxtYWlsUmF0aW5nLnVzZXJGaXJzdE5hbWUrIiAiK21haWxSYXRpbmcudXNlckxhc3ROYW1lKTtrPWsucmVwbGFjZSgve1wkQ0xJRU5UTkFNRX0vZyxtYWlsUmF0aW5nLnVzZXJGaXJzdE5hbWUrIiAiK21haWxSYXRpbmcudXNlckxhc3ROYW1lKTtlbWFpbEhhbmRsZXIudmluPSIiO2VtYWlsSGFuZGxlci5wcmljZT0wO2VtYWlsSGFuZGxlci5zdG9ja051bWJlcj0KIiI7ZW1haWxIYW5kbGVyLmNhcmlkPSIiO2VtYWlsSGFuZGxlci5jb25kaXRpb249IlVua25vd24iO2VtYWlsSGFuZGxlci51c2VyRmlyc3ROYW1lPW1haWxSYXRpbmcudXNlckZpcnN0TmFtZTtlbWFpbEhhbmRsZXIudXNlckxhc3ROYW1lPW1haWxSYXRpbmcudXNlckxhc3ROYW1lO2VtYWlsSGFuZGxlci51c2VyUGhvbmU9bWFpbFJhdGluZy51c2VyUGhvbmU7ZW1haWxIYW5kbGVyLnVzZXJFbWFpbD1tYWlsUmF0aW5nLnVzZXJFbWFpbDtkPW1haWxSYXRpbmcuc2VuZFRvO2Y9IiAgIjticmVhaztjYXNlICJoZWFkZXJTZXJ2aWNlIjplbWFpbEhhbmRsZXIucG9wdXBkaXY9Im1lbnVTZXJ2aWNlIjtzZXJ2aWNlRm9ybV9oZWFkZXJTZXJ2aWNlLnNldEVtYWlsU2VudENhbGxiYWNrKCk7YT1zZXJ2aWNlRm9ybV9oZWFkZXJTZXJ2aWNlLnNldEVtYWlsSGFuZGxlclZhbHVlc0FuZEJvZHkoYSk7ZD1zZXJ2aWNlRm9ybV9oZWFkZXJTZXJ2aWNlLmdldFNlbmRUbygpO2srPSIgRXhwcmVzcyI7CmJyZWFrO2Nhc2UgIm1lbnVTZXJ2aWNlIjplbWFpbEhhbmRsZXIucG9wdXBkaXY9Im1lbnVTZXJ2aWNlIjtzZXJ2aWNlRm9ybV9tZW51U2VydmljZS5zZXRFbWFpbFNlbnRDYWxsYmFjaygpO2E9c2VydmljZUZvcm1fbWVudVNlcnZpY2Uuc2V0RW1haWxIYW5kbGVyVmFsdWVzQW5kQm9keShhKTtkPXNlcnZpY2VGb3JtX21lbnVTZXJ2aWNlLmdldFNlbmRUbygpO2srPSIgRXhwcmVzcyI7YnJlYWs7ZGVmYXVsdDoiIj09ZCYmInVuZGVmaW5lZCIhPXR5cGVvZiAkKCIjdGV4dFNlbmRUb0VtYWlsIikuYXR0cigiaWQiKSYmKGQ9JCgiI3RleHRTZW5kVG9FbWFpbCIpLnZhbCgpKTsiIj09ZiYmInVuZGVmaW5lZCIhPXR5cGVvZiAkKCIjdGV4dFNlbmRUb0VtYWlsQURGIikuYXR0cigiaWQiKSYmMzwkKCIjdGV4dFNlbmRUb0VtYWlsQURGIikudmFsKCkubGVuZ3RoJiYoZj0kKCIjdGV4dFNlbmRUb0VtYWlsQURGIikudmFsKCkpOyJ1bmRlZmluZWQiIT10eXBlb2YgbWFpbFZlaGljbGVXaWRnZXQmJgoobWFpbFZlaGljbGVXaWRnZXQuYXNzaWduVmFsdWVzKCksYT1hLnJlcGxhY2UoL3tcJEVNQUlMTUFLRX0vZyxtYWlsVmVoaWNsZVdpZGdldC5tYWtlKS5yZXBsYWNlKC97XCRFTUFJTE1PREVMfS9nLG1haWxWZWhpY2xlV2lkZ2V0Lm1vZGVsKS5yZXBsYWNlKC97XCRFTUFJTFlFQVJ9L2csbWFpbFZlaGljbGVXaWRnZXQueWVhcikucmVwbGFjZSgve1wkQ09MT1J9L2csbWFpbFZlaGljbGVXaWRnZXQuY29sb3IpLnJlcGxhY2UoL3tcJEVNQUlMU1RPQ0tOVU1CRVJ9L2csbWFpbFZlaGljbGVXaWRnZXQuc3RvY2tOdW1iZXIpLnJlcGxhY2UoL3tcJFNUT0NLTlVNQkVSfS9nLG1haWxWZWhpY2xlV2lkZ2V0LnN0b2NrTnVtYmVyKS5yZXBsYWNlKC97XCRGUk9NWUVBUn0vZyxtYWlsVmVoaWNsZVdpZGdldC5mcm9tWWVhcikucmVwbGFjZSgve1wkVE9ZRUFSfS9nLG1haWxWZWhpY2xlV2lkZ2V0LnRvWWVhcikucmVwbGFjZSgve1wkSU5URU5USU9OfS9nLG1haWxWZWhpY2xlV2lkZ2V0LmludGVudGlvbikucmVwbGFjZSgve1wkUExBVEVTfS9nLAptYWlsVmVoaWNsZVdpZGdldC5wbGF0ZXMpLnJlcGxhY2UoL3tcJFZJTn0vZyxtYWlsVmVoaWNsZVdpZGdldC52aW4pLG1haWxWZWhpY2xlV2lkZ2V0Lm9kb21vdGVyJiYoYT1hLnJlcGxhY2UoL3tcJEtNfS9nLGMobWFpbFZlaGljbGVXaWRnZXQub2RvbW90ZXIpKSksJCgiaW5wdXQuYnJhbmRlbWFpbCIpLmxlbmd0aCYmJCgiaW5wdXQuYnJhbmRlbWFpbCIpLnZhbChtYWlsVmVoaWNsZVdpZGdldC5tYWtlKSwkKCJpbnB1dC5tb2RlbGVtYWlsIikubGVuZ3RoJiYkKCJpbnB1dC5tb2RlbGVtYWlsIikudmFsKG1haWxWZWhpY2xlV2lkZ2V0Lm1vZGVsKSwkKCJpbnB1dC55ZWFyZW1haWwiKS5sZW5ndGgmJiQoImlucHV0LnllYXJlbWFpbCIpLnZhbChtYWlsVmVoaWNsZVdpZGdldC55ZWFyKSxlbWFpbEhhbmRsZXIubWFrZT1tYWlsVmVoaWNsZVdpZGdldC5tYWtlLGVtYWlsSGFuZGxlci5tb2RlbD1tYWlsVmVoaWNsZVdpZGdldC5tb2RlbCxlbWFpbEhhbmRsZXIueWVhcj1tYWlsVmVoaWNsZVdpZGdldC55ZWFyLAplbWFpbEhhbmRsZXIudHJpbT0kKCIjY2FydHJpbSIpLnZhbCgpLGVtYWlsSGFuZGxlci52aW49bWFpbFZlaGljbGVXaWRnZXQudmluLGVtYWlsSGFuZGxlci5wcmljZT0kKCIjY2FycHJpY2UiKS52YWwoKSxlbWFpbEhhbmRsZXIuc3RvY2tOdW1iZXI9bWFpbFZlaGljbGVXaWRnZXQuc3RvY2tOdW1iZXIsZW1haWxIYW5kbGVyLmNhcmlkPSQoIiNjYXJpZCIpLnZhbCgpLDA8JCgiI2NhcmlkIikudmFsKCkubGVuZ3RofHxlbWFpbEhhbmRsZXIueWVhcjwobmV3IERhdGUpLmdldEZ1bGxZZWFyKCk\/ZW1haWxIYW5kbGVyLmNvbmRpdGlvbj0iVXNlZCI6ZW1haWxIYW5kbGVyLmNvbmRpdGlvbj0wPG1haWxWZWhpY2xlV2lkZ2V0Lm1ha2UubGVuZ3RoPyJOZXciOiJVbmtub3duIik7YT1hLnJlcGxhY2UoL3tcJFBMQVRFU30vZywiIik7InVuZGVmaW5lZCIhPXR5cGVvZiBtYWlsVmVoaWNsZVdpZGdldEV4JiYkKCIjdmVoaWNsZVNlbGVjdEZvcm1FeCIpLmxlbmd0aCYmKG1haWxWZWhpY2xlV2lkZ2V0RXguYXNzaWduVmFsdWVzKCksCmE9YS5yZXBsYWNlKC97XCRNQUtFRVh9L2csbWFpbFZlaGljbGVXaWRnZXRFeC5tYWtlKS5yZXBsYWNlKC97XCRNT0RFTEVYfS9nLG1haWxWZWhpY2xlV2lkZ2V0RXgubW9kZWwpLnJlcGxhY2UoL3tcJFlFQVJFWH0vZyxtYWlsVmVoaWNsZVdpZGdldEV4LnllYXIpLnJlcGxhY2UoL3tcJENPTE9SRVh9L2csbWFpbFZlaGljbGVXaWRnZXRFeC5jb2xvcikucmVwbGFjZSgve1wkVFJJTUVYfS9nLG1haWxWZWhpY2xlV2lkZ2V0RXgudHJpbSkucmVwbGFjZSgve1wkVFJBTlNNSVNTSU9OfS9nLG1haWxWZWhpY2xlV2lkZ2V0RXgudHJhbnNtaXNzaW9uKS5yZXBsYWNlKC97XCRLTX0vZyxjKG1haWxWZWhpY2xlV2lkZ2V0RXgub2RvbW90ZXIpKS5yZXBsYWNlKC97XCRWSU5FWH0vZyxtYWlsVmVoaWNsZVdpZGdldEV4LnZpbikucmVwbGFjZSgve1wkRFJJVkVUUkFJTn0vZyxtYWlsVmVoaWNsZVdpZGdldEV4LmRyaXZldHJhaW4pLnJlcGxhY2UoL3tcJEdBU30vZyxtYWlsVmVoaWNsZVdpZGdldEV4LmZ1ZWwpLAokKCJpbnB1dC5icmFuZGVtYWlsIikubGVuZ3RoJiYwPG1haWxWZWhpY2xlV2lkZ2V0RXgubWFrZS5sZW5ndGgmJiQoImlucHV0LmJyYW5kZW1haWwiKS52YWwobWFpbFZlaGljbGVXaWRnZXRFeC5tYWtlKSwkKCJpbnB1dC5tb2RlbGVtYWlsIikubGVuZ3RoJiYwPG1haWxWZWhpY2xlV2lkZ2V0RXgubW9kZWwubGVuZ3RoJiYkKCJpbnB1dC5tb2RlbGVtYWlsIikudmFsKG1haWxWZWhpY2xlV2lkZ2V0RXgubW9kZWwpLCQoImlucHV0LnllYXJlbWFpbCIpLmxlbmd0aCYmMDxtYWlsVmVoaWNsZVdpZGdldEV4Lm1ha2UubGVuZ3RoJiYkKCJpbnB1dC55ZWFyZW1haWwiKS52YWwobWFpbFZlaGljbGVXaWRnZXRFeC55ZWFyKSxlbWFpbEhhbmRsZXIubWFrZT1tYWlsVmVoaWNsZVdpZGdldEV4Lm1ha2UsZW1haWxIYW5kbGVyLm1vZGVsPW1haWxWZWhpY2xlV2lkZ2V0RXgubW9kZWwsZW1haWxIYW5kbGVyLnllYXI9bWFpbFZlaGljbGVXaWRnZXRFeC55ZWFyLGVtYWlsSGFuZGxlci50cmltPW1haWxWZWhpY2xlV2lkZ2V0RXgudHJpbSwKInVuZGVmaW5lZCIhPXR5cGVvZiBlbWFpbEhhbmRsZXIuaXNUcmFkZUluQmFyfHwiUHJpY2VWZWhpY2xlIiE9Yi5tYWlsSUQmJiJQcmljZVZlaGljbGVOZXciIT1iLm1haWxJRCYmIkVzdGhldGljUmVxdWVzdCIhPWIubWFpbElEfHwoZW1haWxIYW5kbGVyLm1ha2U9bWFpbFZlaGljbGVXaWRnZXQubWFrZSxlbWFpbEhhbmRsZXIubW9kZWw9bWFpbFZlaGljbGVXaWRnZXQubW9kZWwsZW1haWxIYW5kbGVyLnllYXI9bWFpbFZlaGljbGVXaWRnZXQueWVhcixlbWFpbEhhbmRsZXIudHJpbT1tYWlsVmVoaWNsZVdpZGdldC50cmltLCJQcmljZVZlaGljbGUiIT1iLm1haWxJRCYmIlByaWNlVmVoaWNsZU5ldyIhPWIubWFpbElEKXx8KGVtYWlsSGFuZGxlci5jYXIyX21ha2U9bWFpbFZlaGljbGVXaWRnZXRFeC5tYWtlLGVtYWlsSGFuZGxlci5jYXIyX21vZGVsPW1haWxWZWhpY2xlV2lkZ2V0RXgubW9kZWwsZW1haWxIYW5kbGVyLmNhcjJfdHJpbT1tYWlsVmVoaWNsZVdpZGdldEV4LnRyaW0sCmVtYWlsSGFuZGxlci5jYXIyX3llYXI9bWFpbFZlaGljbGVXaWRnZXRFeC55ZWFyLGVtYWlsSGFuZGxlci5jYXIyX2NvbG9yPW1haWxWZWhpY2xlV2lkZ2V0RXguY29sb3IsZW1haWxIYW5kbGVyLmNhcjJfb2RvbWV0ZXI9YyhtYWlsVmVoaWNsZVdpZGdldEV4Lm9kb21vdGVyKSxlbWFpbEhhbmRsZXIuY2FyMl92aW49bWFpbFZlaGljbGVXaWRnZXRFeC52aW4sZW1haWxIYW5kbGVyLmNhcjJfdHJhbnNtaXNzb249bWFpbFZlaGljbGVXaWRnZXRFeC50cmFuc21pc3Npb24sZW1haWxIYW5kbGVyLmNhcjJfZHJpdmV0cmFpbj1tYWlsVmVoaWNsZVdpZGdldEV4LmRyaXZldHJhaW4sZW1haWxIYW5kbGVyLmNhcjJfZnVlbHR5cGU9bWFpbFZlaGljbGVXaWRnZXRFeC5mdWVsLGE9YS5yZXBsYWNlKC97XCRUUkFERUlOTE9XfS9nLCJOL0EiKSxhPWEucmVwbGFjZSgve1wkVFJBREVJTkhJR0h9L2csIk4vQSIpLGE9YS5yZXBsYWNlKC97XCRUUkFERUlOQVZHfS9nLCJOL0EiKSksZW1haWxIYW5kbGVyLnZpbj0KIiIsZW1haWxIYW5kbGVyLnByaWNlPTAsZW1haWxIYW5kbGVyLnN0b2NrTnVtYmVyPSIiLGVtYWlsSGFuZGxlci5jYXJpZD0iIiwwPCQoIiNjYXJpZCIpLnZhbCgpLmxlbmd0aD9lbWFpbEhhbmRsZXIuY29uZGl0aW9uPSJVc2VkIjplbWFpbEhhbmRsZXIuY29uZGl0aW9uPTA8bWFpbFZlaGljbGVXaWRnZXRFeC5tYWtlLmxlbmd0aD8iTmV3IjoiVW5rbm93biIpO2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgJCgiI3NlcnZpY2VQYWNrYWdlcyIpLnByb3AoImlkIikpe3ZhciBuPSExLHI9IiI7JCgiaW5wdXQuc2VsZWN0ZWRTZXJ2aWNlIikuZWFjaChmdW5jdGlvbihoLHApe2g9JChwKTtoLmlzKCI6Y2hlY2tlZCIpJiYocis9Ijxicj4iK2gudmFsKCksbj0hMCl9KTtuJiYocj0iPGJyPjxicj48dT4iKyQoIiNzZWxlY3RlZFNlcnZpY2VzVGl0bGUiKS52YWwoKSsiPC91PiIrcik7YT1hLnJlcGxhY2UoL3tcJFNFTEVDVEVEU0VSVklDRVN9L2cscil9InVuZGVmaW5lZCIhPXR5cGVvZiBtYWlsVXNlckluZm8mJgoobWFpbFVzZXJJbmZvLmFzc2lnblZhbHVlcygpLGE9YS5yZXBsYWNlKC97XCRGTkFNRX0vZyxkMmNtZWRpYS5jYXBpdGFsaXNlRmlyc3RMZXR0ZXJPZkV2ZXJ5V29yZChtYWlsVXNlckluZm8uZmlyc3ROYW1lKSkucmVwbGFjZSgve1wkTE5BTUV9L2csZDJjbWVkaWEuY2FwaXRhbGlzZUZpcnN0TGV0dGVyT2ZFdmVyeVdvcmQobWFpbFVzZXJJbmZvLmxhc3ROYW1lKSkucmVwbGFjZSgve1wkRU1BSUxQSE9ORX0vZyxtYWlsVXNlckluZm8ucGhvbmUpLnJlcGxhY2UoL3tcJEVNQUlMfS9nLG1haWxVc2VySW5mby5lbWFpbCkpOyJ1bmRlZmluZWQiIT10eXBlb2YgbWFpbEpvYk9mZmVyJiYobWFpbEpvYk9mZmVyLmFzc2lnblZhbHVlcygpLGQ9JCgiI3RleHRTZW5kVG9FbWFpbCIpLnZhbCgpLGY9JCgiI3RleHRTZW5kVG9FbWFpbEFERiIpLnZhbCgpLGE9YS5yZXBsYWNlKC97XCRKT0JQT1NUfS9nLG0oZDJjbWVkaWEuY2FwaXRhbGlzZUZpcnN0TGV0dGVyT2ZFdmVyeVdvcmQobWFpbEpvYk9mZmVyLmpvYlBvc2l0b24pKSkucmVwbGFjZSgve1wkSk9CREVQQVJUTUVOVH0vZywKbShkMmNtZWRpYS5jYXBpdGFsaXNlRmlyc3RMZXR0ZXJPZkV2ZXJ5V29yZChtYWlsSm9iT2ZmZXIuam9iRGVwYXJ0bWVudCkpKS5yZXBsYWNlKC97XCRKT0JNU0d9L2csbShtYWlsSm9iT2ZmZXIuam9iTWVzc2FnZSkpKTtpZigidW5kZWZpbmVkIiE9dHlwZW9mIG1haWxVc2VyQWRkcmVzcyl7bWFpbFVzZXJBZGRyZXNzLmFzc2lnblZhbHVlcygpO3ZhciBxPXRyaW0obWFpbFVzZXJBZGRyZXNzLmFkZHJlc3NBcHArIiAiK21haWxVc2VyQWRkcmVzcy5hZGRyZXNzTnVtYmVyKyIgIittYWlsVXNlckFkZHJlc3MuYWRkcmVzc1N0cmVldCk7YT1hLnJlcGxhY2UoL3tcJENVUlJFTlRBRERSRVNTfS9nLG0ocSkpLnJlcGxhY2UoL3tcJENVUlJFTlRDSVRZfS9nLG0obWFpbFVzZXJBZGRyZXNzLmNpdHkpKS5yZXBsYWNlKC97XCRDVVJSRU5UUFJPVklOQ0V9L2csbShtYWlsVXNlckFkZHJlc3MucHJvdmluY2UpKS5yZXBsYWNlKC97XCRDVVJSRU5UUE9TVEFMQ09ERX0vZyxtKG1haWxVc2VyQWRkcmVzcy5wb3N0YWxDb2RlKSl9InVuZGVmaW5lZCIhPQp0eXBlb2YgbWFpbFNjaGVkdWxlJiYobWFpbFNjaGVkdWxlLmFzc2lnblZhbHVlcygpLGE9YS5yZXBsYWNlKC97XCREQVRFMX0vZyxtYWlsU2NoZWR1bGUuZmlyc3RDaG9pY2UpLnJlcGxhY2UoL3tcJERBVEUyfS9nLG1haWxTY2hlZHVsZS5zZWNvbmRDaG9pY2UpLnJlcGxhY2UoL3tcJFdBSVRJTkdPTlNJVEV9L2csbWFpbFNjaGVkdWxlLndhaXRpbmdPblNpdGUpLnJlcGxhY2UoL3tcJFRSQU5TUE9SVE9QVElPTn0vZyxtYWlsU2NoZWR1bGUuZ2V0VHJhbnNwb3J0T3B0aW9uVGV4dCgpKSxlbWFpbEhhbmRsZXIuc2VydmljZURhdGUxPW1haWxTY2hlZHVsZS5maXJzdENob2ljZSxlbWFpbEhhbmRsZXIuc2VydmljZURhdGUyPW1haWxTY2hlZHVsZS5zZWNvbmRDaG9pY2UsZW1haWxIYW5kbGVyLndhaXRpbmdPblNpdGU9bWFpbFNjaGVkdWxlLndhaXRpbmdPblNpdGUsZW1haWxIYW5kbGVyLnRyYW5zcG9ydE9wdGlvbj1tYWlsU2NoZWR1bGUudHJhbnNwb3J0T3B0aW9uKTt2YXIgdD1xPSIiLAp1PSIiOyJ1bmRlZmluZWQiIT10eXBlb2YgJCgiI2ZpbmFuY2VPcHRpb25EaXYiKS5hdHRyKCJpZCIpJiYoImNoZWNrZWQiPT0kKCIjZmluYW5jZU9wdGlvbkRpdiBpbnB1dCIpLmF0dHIoImNoZWNrZWQiKT9xPSQoIiN0ZXh0Q2FzaCIpLnZhbCgpOihxPSJjaGVja2VkIj09JCgiI2ZpbmFuY2VPcHRpb25EaXYyIGlucHV0IikuYXR0cigiY2hlY2tlZCIpPyQoIiN0ZXh0RmluYW5jZSIpLnZhbCgpOiQoIiN0ZXh0TGVhc2UiKS52YWwoKSx1PSQoIiNmaW5hbmNlVGVybVNlbGVjdCIpLnZhbCgpKSwidW5kZWZpbmVkIiE9dHlwZW9mICQoIiN2ZWhpY2xlT2ZmZXIiKS5hdHRyKCJpZCIpJiYodD0iJCIrYygkKCIjdmVoaWNsZU9mZmVyIikudmFsKCkpKSxhPWEucmVwbGFjZSgve1wkUEFZTUVOVH0vZyxxKS5yZXBsYWNlKC97XCRQQVlNRU5UVEVSTX0vZyx1KS5yZXBsYWNlKC97XCRPRkZFUn0vZyx0KSk7InVuZGVmaW5lZCIhPXR5cGVvZiAkKCIjcXVlc3Rpb25zQ29tbWVudHMiKS5hdHRyKCJpZCIpJiYKKGU9bSgkKCIjcXVlc3Rpb25zQ29tbWVudHMiKS52YWwoKSksYT1hLnJlcGxhY2UoL3tcJFFVRVNUSU9OU30vZyxlKSxlbWFpbEhhbmRsZXIuY29tbWVudHM9ZSk7InVuZGVmaW5lZCIhPXR5cGVvZiAkKCIjcmVxdWVzdFR5cGUiKS5hdHRyKCJpZCIpJiYoYT1hLnJlcGxhY2UoL3tcJERFTUFOREV9L2csJCgiI3JlcXVlc3RUeXBlIikudmFsKCkpKX0kKCIjdGVzdERyaXZlVHlwZSIpLmxlbmd0aCYmKGE9YS5yZXBsYWNlKC97XCRURVNURFJJVkVUWVBFfS9nLCQoIiN0ZXN0RHJpdmVUeXBlIikudmFsKCkpLGE9IlZpcnR1YWwiPT0kKCIjdGVzdERyaXZlVHlwZSIpLnZhbCgpfHwiVmlydHVlbCI9PSQoIiN0ZXN0RHJpdmVUeXBlIikudmFsKCk\/YS5yZXBsYWNlKC97XCRURVNURFJJVkVWSVJUVUFMfS9nLCQoIiNwcmVmZXJlZFZpcnR1YWxUb29sIikudmFsKCkpOmEucmVwbGFjZSgve1wkVEVTVERSSVZFVklSVFVBTH0vZywiTi9BIikpOyQoZykuZmluZCgiI3NlcnZpY2VFbWFpbHNTZWxlY3QiKS5sZW5ndGg\/CmVtYWlsSGFuZGxlci5kZWFsZXJOYW1lPSQoZykuZmluZCgiI3NlcnZpY2VFbWFpbHNTZWxlY3QiKS5maW5kKCI6c2VsZWN0ZWQiKS5odG1sKCk6IjEiPT0kKCIjaXNNb2JpbGUiKS52YWwoKSYmJCgiI3NlcnZpY2VFbWFpbHNTZWxlY3QiKS5sZW5ndGgmJihlbWFpbEhhbmRsZXIuZGVhbGVyTmFtZT0kKCIjc2VydmljZUVtYWlsc1NlbGVjdCIpLmZpbmQoIjpzZWxlY3RlZCIpLmh0bWwoKSk7ZW1haWxIYW5kbGVyLmRlYWxlck5hbWUmJihhPWEucmVwbGFjZSgieyRERUFMRVJOQU1FfSIsZW1haWxIYW5kbGVyLmRlYWxlck5hbWUpKTthPWEucmVwbGFjZSgve1wkKERBVEVbMTJdKX0vZyxmdW5jdGlvbihoLHApe2g9JCgnaW5wdXRbbmFtZT0iJytwLnRvTG93ZXJDYXNlKCkrJyJdJyxnKTtyZXR1cm4gMDxoLmxlbmd0aD8obmV3IERhdGUoaC52YWwoKSkpLmRhdGVGb3JtYXQoIlktbS1kIEg6aSIpOiIifSk7Yz0iIjswPCQoIiNsYXN0dmlld2VkbWFrZSIpLnZhbCgpLmxlbmd0aCYmKGM9JCgiI2xhc3R2aWV3ZWRtYWtlIikudmFsKCkrCiIgIiskKCIjbGFzdHZpZXdlZG1vZGVsIikudmFsKCkrIiAiKyQoIiNsYXN0dmlld2VkeWVhciIpLnZhbCgpKyIgIiskKCIjbGFzdHZpZXdlZHN0b2NrbnVtYmVyIikudmFsKCkpO2E9YS5yZXBsYWNlKCJ7JExBU1RWRUhJQ0xFVklFV0VEfSIsYyk7YT1hLnJlcGxhY2UoUmVnRXhwKCJ7XFwkKFFVRVNUSU9OU3xNRVNTQUdFfFJBVElOR01FU1NBR0V8RU1BSUxQSE9ORXxFTUFJTE1BS0V8RU1BSUxNT0RFTHxFTUFJTFlFQVJ8UEFZTUVOVHxQQVlNRU5UVEVSTXxPRkZFUnxTVE9DS05VTUJFUnxDT0xPUnxGTkFNRXxMTkFNRXxFTUFJTHxLTXxWSU5FWHxTRUxFQ1RFRFNFUlZJQ0VTfEVNQUlMQ0lUWXxQTEFURVN8REFURTF8REFURTJ8VFJBTlNQT1JUT1BUSU9OKX0iLCJnIiksIiIpO2E9YS5yZXBsYWNlKC97XCRFTUFJTEJVSUxEQU5EUFJJQ0V9L2csYi5iYW5kcExpbmsoKSk7IiI9PWQmJiJ1bmRlZmluZWQiIT10eXBlb2YgJCgiI2V4cHJlc3NTZW5kVG9FbWFpbCIpLmF0dHIoImlkIikmJgooZD1sJiYidW5kZWZpbmVkIiE9dHlwZW9mICQoIiNleHByZXNzU2VuZFRvRW1haWxORVciKS5hdHRyKCJpZCIpJiYwPCQoIiNleHByZXNzU2VuZFRvRW1haWxORVciKS52YWwoKS5sZW5ndGg\/JCgiI2V4cHJlc3NTZW5kVG9FbWFpbE5FVyIpLnZhbCgpOiQoIiNleHByZXNzU2VuZFRvRW1haWwiKS52YWwoKSk7aWYoIiI9PWYmJiJ1bmRlZmluZWQiIT10eXBlb2YgJCgiI2V4cHJlc3NTZW5kVG9FbWFpbEFERiIpLmF0dHIoImlkIikpaWYobCYmInVuZGVmaW5lZCIhPXR5cGVvZiAkKCIjZXhwcmVzc1NlbmRUb0VtYWlsQURGTkVXIikuYXR0cigiaWQiKSYmMDwkKCIjZXhwcmVzc1NlbmRUb0VtYWlsQURGTkVXIikudmFsKCkubGVuZ3RoKWY9JCgiI2V4cHJlc3NTZW5kVG9FbWFpbEFERk5FVyIpLnZhbCgpO2Vsc2UgaWYoInNlcnZpY2UiPT1lbWFpbEhhbmRsZXIuZGVwYXJ0bWVudC50b0xvd2VyQ2FzZSgpfHxiJiYoIm1lbnVTZXJ2aWNlIj09Yi5tYWlsSUR8fCJoZWFkZXJTZXJ2aWNlIj09CmIubWFpbElEKSlmPSQoIiNleHByZXNzU2VuZFRvRW1haWxBREZTRVJWSUNFIikudmFsKCk7IiI9PWQmJiQoIiNleHByZXNzSW5EZW1vIikubGVuZ3RoJiYiMSI9PSQoIiNleHByZXNzSW5EZW1vIikudmFsKCkmJihlbWFpbEhhbmRsZXIuY29uZGl0aW9uPSJOZXciLDA8JCgiI2V4cHJlc3NTZW5kVG9FbWFpbE5FVyIpLnZhbCgpLmxlbmd0aCYmKGQ9JCgiI2V4cHJlc3NTZW5kVG9FbWFpbE5FVyIpLnZhbCgpKSk7IlF1aWNrRW1haWwiPT1iLm1haWxJRCYmInVuZGVmaW5lZCIhPT10eXBlb2YgZSYmMDxlLmxlbmd0aCYmMDwkKCIjc2VydmljZUVtYWlsIikubGVuZ3RoJiYwPCQoIiNzZXJ2aWNlQWRmRW1haWwiKS5sZW5ndGgmJih0ZXJtcz0icmFwcGVsO3NlcnZpY2U7aHVpbGU7cGllY2VzO3Bp77+9Y2VzO3BuZXVzO3RyYW5zbWlzc2lvbjthY2Nlc3NvaXJlczthbHRlcm5hdGV1cjthbnRpcm91aWxsZTthbnRpLXJvdWlsbGU7YmF0dGVyaWU7YmF0ZXJpZTty77+9cGFyYXRpb247cGVpbnR1cmU7ZnJlaW5zO2Rpc3F1ZXM7Y2Fycm9zc2VyaWU7Y2F0YWx5c2V1cjtjaG9jO2RlbWFycmV1cjvvv71jaGFwcGVtZW50O21vdGV1cjtlc3N1aWUtZ2xhY2U7ZXNzdWktZ2xhY2U7IGZldXg7Y2xpZ25vdGFudDtrbGF4b247ZmlsdHJlO2hvcmxvZ2U7cmFkaW87dG9pdC1vdXZyYW50OyBtYWc7IG1hZ3M7be+\/vWNhbmlxdWU7bXVmZmxlcjtuYXZpZ2F0aW9uO29yZGluYXRldXI7IHBoYXJlcztsdW1p77+9cmVzO2x1bWllcmU7cHJvYmzvv71tZTtwcm9ibGVtZTtyZWNhbGw7cGFydHM7dGlyZTthY2Nlc3NvcmllczthbHRlcm5hdG9yO3J1c3Rwcm9vZmluZztiYXR0ZXJ5O3JlcGFpcjtwYWludDticmFrZTtkaXNrczsgYm9keTtzdGFydGVyO2V4aGF1c3Q7ZW5naW5lO3dpcGVyO3dpcGVyczsgZmxhc2g7IGxpZ2h0O2ZsYXNoZXI7Zmxhc2hlcnM7IGhvcm47ZmlsdGVyO2Nsb2NrO3Jvb2Y7bWVjYW5pYztjb21wdXRlcjtlY3U7cHJvYmxlbSIuc3BsaXQoIjsiKSwKbWF0Y2hlZFRlcm1zPVtdLCQuZWFjaCh0ZXJtcyxmdW5jdGlvbihoLHApe2lmKC0xPGUuaW5kZXhPZihwKSlyZXR1cm4gZD0kKCIjc2VydmljZUVtYWlsIikudmFsKCksZj0kKCIjc2VydmljZUFkZkVtYWlsIikudmFsKCksITF9KSk7ZW1haWxIYW5kbGVyLnN1YmplY3Q9aztlbWFpbEhhbmRsZXIuYm9keT1hO2VtYWlsSGFuZGxlci5zZW5kVG89ZDtlbWFpbEhhbmRsZXIuc2VuZEZyb209IiI7ZW1haWxIYW5kbGVyLm1haWxJRD1iLm1haWxJRDtlbWFpbEhhbmRsZXIuY2FsbGJhY2s9Yi5lbWFpbFNlbnQ7InVuZGVmaW5lZCIhPXR5cGVvZiBtYWlsVXNlckluZm8mJiJtZW51Q29udGFjdFVzIiE9ZW1haWxIYW5kbGVyLm1haWxJRCYmIm1lbnVTZXJ2aWNlIiE9ZW1haWxIYW5kbGVyLm1haWxJRCYmKGVtYWlsSGFuZGxlci51c2VyRW1haWw9bWFpbFVzZXJJbmZvLmVtYWlsLGVtYWlsSGFuZGxlci51c2VyRmlyc3ROYW1lPW1haWxVc2VySW5mby5maXJzdE5hbWUsZW1haWxIYW5kbGVyLnVzZXJMYXN0TmFtZT0KbWFpbFVzZXJJbmZvLmxhc3ROYW1lLGVtYWlsSGFuZGxlci51c2VyUGhvbmU9bWFpbFVzZXJJbmZvLnBob25lKTsidW5kZWZpbmVkIiE9dHlwZW9mIG1haWxKb2JPZmZlciYmKGVtYWlsSGFuZGxlci51c2VyQXR0YWNobWVudFBhdGg9bWFpbEpvYk9mZmVyLmpvYkZpbGUpO2VtYWlsSGFuZGxlci5zZW5kVG9BREZGb3JtYXQ9ZjstMSE9ZW1haWxIYW5kbGVyLmJvZHkudG9Mb3dlckNhc2UoKS5pbmRleE9mKCJ0ZXN0QGQyY21lZGlhLmNhIikmJiQoImlucHV0LnRlc3Rtb2RlIikudmFsKCIxIik7JChnKS5maW5kKCIjc2VydmljZUVtYWlsc1NlbGVjdCIpLmxlbmd0aD9lbWFpbEhhbmRsZXIuc2VuZFRvPSQoZykuZmluZCgiI3NlcnZpY2VFbWFpbHNTZWxlY3QiKS52YWwoKToiMSI9PSQoIiNpc01vYmlsZSIpLnZhbCgpJiYkKCIjc2VydmljZUVtYWlsc1NlbGVjdCIpLmxlbmd0aCYmKGVtYWlsSGFuZGxlci5zZW5kVG89JCgiI3NlcnZpY2VFbWFpbHNTZWxlY3QiKS52YWwoKSl9O2IuX3ZhbGlkYXRlRmllbGRzPQpmdW5jdGlvbihjKXt2YXIgZz0hMSxrPSQoIiNNaXNzaW5nVmFsaWRhdGlvbk1zZyIpLmh0bWwoKSxhPXRoaXMuanFTY29wZTtpZigiI3F1aWNrRW1haWxGb3JtIj09YSlyZXR1cm4hMDskLnZhbGlkaXR5LnN0YXJ0KCk7dmFyIGU9Ii5Jbm5lckJveExheWVyIjswPCQoIi5tYWluX2xlZnRfYm94IikubGVuZ3RoJiYoZT0iLm1haW5fbGVmdF9ib3giKTthPWIuanFTY29wZT9iLmpxU2NvcGU6ZTsxPiQoYSkubGVuZ3RoJiYoYT0iI25ld2RldGFpbHMiKTsxPiQoYSkubGVuZ3RoJiYoYT0iLm5ldy1kZXRhaWxzIik7MT4kKGEpLmxlbmd0aCYmKGE9ImJvZHkiKTsidW5kZWZpbmVkIiE9PXR5cGVvZiBkZWJ1ZyYmZGVidWcoYyk7Yz0kKGEpLmZpbmQoIi5yZXF1aXJlZCwudmFsaWRhdGUiKTskKGEpLmZpbmQoImlucHV0Om5vdCg6aGlkZGVuKSwgdGV4dGFyZWEiKS5ub25IdG1sKCk7Yy5maWx0ZXIoIi5yZXF1aXJlZCIpLmVhY2goZnVuY3Rpb24oKXskKHRoaXMpLnJlcXVpcmUoKS5ub25IdG1sKCl9KTsKYy5maWx0ZXIoIi5yZXF1aXJlZC1waG9uZSIpLmVhY2goZnVuY3Rpb24oKXskKHRoaXMpLnJlcXVpcmUoKS52YWxpZGF0ZVBob25lKCl9KTtjLmZpbHRlcigiLnBob25lOm5vdCgucmVxdWlyZWQtcGhvbmUpIikuZWFjaCgobCxuKT0+eyQobikudmFsaWRhdGVQaG9uZSgpfSk7ZT0kKCIjcGhvbmUxLCNwaG9uZTIsI3Bob25lMyIsYSkuZmlsdGVyKCI6dmlzaWJsZSIpO2lmKDA8ZS5sZW5ndGgpe3ZhciBkLGY7bGV0IGwsbjswPChlWzBdLnZhbHVlKyhudWxsIT0obD1udWxsPT0oZD1lWzFdKT92b2lkIDA6ZC52YWx1ZSk\/bDoiIikrKG51bGwhPShuPW51bGw9PShmPWVbMl0pP3ZvaWQgMDpmLnZhbHVlKT9uOiIiKSkubGVuZ3RoJiYkKGUpLnZhbGlkYXRlUGhvbmUoKX1jLmZpbHRlcigiLnppcCIpLmVhY2goZnVuY3Rpb24oKXsoJCh0aGlzKS5pcygiLnJlcXVpcmVkIil8fDAhPSQodGhpcykudmFsKCkubGVuZ3RoKSYmJCh0aGlzKS5yZXF1aXJlUG9zdGFsQ29kZSgpfSk7MT09JCgiLnZpbiIpLmxlbmd0aCYmCigkKCIudmluIikuaXMoIi5yZXF1aXJlZCIpJiYkKCIudmluIikucmVxdWlyZSgpLm5vbkh0bWwoKSwwPCQoIi52aW4iKS52YWwoKS5sZW5ndGgmJiQoIi52aW4iKS5taW5MZW5ndGgoMTcpKTsxPT0kKCIudmluRXgiKS5sZW5ndGgmJigkKCIudmluRXgiKS5pcygiLnJlcXVpcmVkIikmJiQoIi52aW5FeCIpLnJlcXVpcmUoKS5ub25IdG1sKCksMDwkKCIudmluRXgiKS52YWwoKS5sZW5ndGgmJiQoIi52aW5FeCIpLm1pbkxlbmd0aCgxNykpO2MuZmlsdGVyKCIuZW1haWwiKS5lYWNoKGZ1bmN0aW9uKCl7KCQodGhpcykuaXMoIi5yZXF1aXJlZCIpfHwwIT0kKHRoaXMpLnZhbCgpLmxlbmd0aCkmJiQodGhpcykudmFsaWRFbWFpbEFkZHJlc3MoKX0pOyQoYSkuZmluZCgiLnZhbGlkYXRlLWdyb3VwIikuZWFjaChmdW5jdGlvbigpe3ZhciBsPSQodGhpcykudmFsKCk7JChsLGEpLnZhbGlkQWxsb3JOb25lKCl9KTtjLmZpbHRlcigiLnVwbG9hZCIpLmVhY2goZnVuY3Rpb24oKXshJCh0aGlzKS5pcygiLnJlcXVpcmVkIikmJgowPT0kKHRoaXMpLnZhbCgpLmxlbmd0aHx8IiIhPSQodGhpcykudmFsKCl8fCgkKCIjdXBsb2FkU3RhdHVzIikuY3NzKCJjb2xvciIsInJlZCIpLCQoIiN1cGxvYWRTdGF0dXMiKS5odG1sKCQoIiNmaWxlVXBsb2FkUmVxdWVzdCIpLnZhbCgpKSwkKCIjdXBsb2FkU3RhdHVzIikuc2hvdygpKX0pO2Q9JC52YWxpZGl0eS5yZXBvcnQuZXJyb3JzOyQoIiNlbWFpbCIpLm1hdGNoKCJlbWFpbCIpOyQudmFsaWRpdHkucmVwb3J0LmVycm9ycz5kJiYoZj0kKCIjTWlzc2luZ1ZhbGlkYXRpb25Nc2ciKS50ZXh0KCkrIi48YnIvPiIrJCgiI2VtYWlsRXJyb3JNc2ciLCIjdXNlckluZm9Gb3JtIikudmFsKCkrIi4iLDA9PWQmJihmPSQoIiNlbWFpbEVycm9yTXNnIiwiI3VzZXJJbmZvRm9ybSIpLnZhbCgpKSwkKCIjTWlzc2luZ1ZhbGlkYXRpb25Nc2ciKS5odG1sKGYpKTsidW5kZWZpbmVkIiE9dHlwZW9mIG1haWxVc2VySW5mbyYmImZ1bmN0aW9uIj09dHlwZW9mIG1haWxVc2VySW5mby5hZGRlZFZhbGlkYXRpb24mJgptYWlsVXNlckluZm8uYWRkZWRWYWxpZGF0aW9uKGEpOyQudmFsaWRpdHkuZW5kKCkudmFsaWQ\/Zz0hMDooJCgiI01pc3NpbmdWYWxpZGF0aW9uTXNnIikuc2hvdygpLCQoIiNNaXNzaW5nVmFsaWRhdGlvbk1zZyIpLmNlbnRlcigpLCQoZG9jdW1lbnQpLm9uZSgibW91c2Vkb3duIixmdW5jdGlvbihsKXskLnZhbGlkaXR5LmNsZWFyKCk7JCgiI01pc3NpbmdWYWxpZGF0aW9uTXNnIikuaGlkZSgpOyQoIiNNaXNzaW5nVmFsaWRhdGlvbk1zZyIpLmh0bWwoayl9KSk7cmV0dXJuIGd9fTt2YXIgbWFpbFBhZ2U9bmV3IEdlbmVyaWNNYWlsOwokKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpezA8JCgiI3RvcGlzbW9iaWxlIikubGVuZ3RoJiYxPCQoIiN0b3Bpc21vYmlsZSIpLnZhbCgpJiYobWFpbFBhZ2UuanFTY29wZT0iLm5ldy1kZXRhaWxzIik7JCgiI3NlbmRFbWFpbEZvcm0gYnV0dG9uIikub24oImNsaWNrIHRhcCIsbWFpbFBhZ2Uuc2F2ZSk7JCgiI3NlbmRFbWFpbEZvcm1TdWJtaXQiKS5vbigiY2xpY2sgdGFwIixtYWlsUGFnZS5zYXZlKTttYWlsUGFnZS5tYWlsSUQ9JCgiI3RleHRTYXZlTWFpbElEIikudmFsKCk7JC52YWxpZGl0eS5zZXR1cCh7b3V0cHV0TW9kZToic3VtbWFyeSIsc2Nyb2xsVG86ITF9KTtqUXVlcnkuZm4uY2VudGVyPWZ1bmN0aW9uKCl7JCgiaXNtb2JpbGUiKSYmMDwkKCIjc2VuZEVtYWlsRm9ybVN1Ym1pdCIpLmxlbmd0aD90aGlzLmNzcyh7cG9zaXRpb246ImFic29sdXRlIixsZWZ0OigkKHdpbmRvdykud2lkdGgoKS0kKCIjTWlzc2luZ1ZhbGlkYXRpb25Nc2ciKS5vdXRlcldpZHRoKCkpLzIsCnRvcDokKCIjc2VuZEVtYWlsRm9ybVN1Ym1pdCIpLnBvc2l0aW9uKCkudG9wLTEwfSk6dGhpcy5jc3Moe3Bvc2l0aW9uOiJhYnNvbHV0ZSIsbGVmdDooJCh3aW5kb3cpLndpZHRoKCktJCgiI2NvbnRhaW5lciIpLm91dGVyV2lkdGgoKSkvMix0b3A6KCQod2luZG93KS5oZWlnaHQoKS0kKCIjY29udGFpbmVyIikub3V0ZXJIZWlnaHQoKSkvMn0pO3JldHVybiB0aGlzfTsidW5kZWZpbmVkIiE9dHlwZW9mIG1haWxQYWdlLm1haWxJRCYmZW1haWxIYW5kbGVyLmxvZ0Zvcm1SZXF1ZXN0KCJGb3JtTG9hZGVkIixtYWlsUGFnZS5tYWlsSUQpfSk7Ci8qKiAvbS9qcy9wb3B1cGl6ZXIuanMgKiovCnZhciBfX19kMmNfcG9wdXBpemVyanNfY19vbj0iMjAyNi0wNi0wNCAwOTozMDoxMyI7J3VzZSBzdHJpY3QnO2lzU2NyYXRjaEFuZFNhdmU9InVuZGVmaW5lZCI9PXR5cGVvZiBpc1NjcmF0Y2hBbmRTYXZlPyIiOmlzU2NyYXRjaEFuZFNhdmU7cG9wdXBXaWRnZXRfcGFnZVZpZXdzSW5jcmVtZW50ZWQ9InVuZGVmaW5lZCI9PXR5cGVvZiBwb3B1cFdpZGdldF9wYWdlVmlld3NJbmNyZW1lbnRlZD8iIjpwb3B1cFdpZGdldF9wYWdlVmlld3NJbmNyZW1lbnRlZDtzaG93UG9wdXBXaWRnZXQ9ImZ1bmN0aW9uIiE9dHlwZW9mIHNob3dQb3B1cFdpZGdldD9mdW5jdGlvbigpe306c2hvd1BvcHVwV2lkZ2V0O2FjdGl2YXRlUG9wdXBCZWZvcmVMb2FkPSJmdW5jdGlvbiIhPXR5cGVvZiBhY3RpdmF0ZVBvcHVwQmVmb3JlTG9hZD9mdW5jdGlvbigpe306YWN0aXZhdGVQb3B1cEJlZm9yZUxvYWQ7CnZhciBwb3B1cElzU3VibWl0dGluZz0hMSxDUG9wdXBTdXBlcnZpc29yPWZ1bmN0aW9uKCl7dmFyIGM9dGhpcztjLm9ubG9hZFF1ZXVlPVtdO2MuaW5kZXg9MDtjLmlzQW5pbWF0aW5nPSExO2MucG9wdXBzPVtdO2MucmVnaXN0ZXI9ZnVuY3Rpb24oYSl7dmFyIGs9MDswPE51bWJlcihhLnNldHRpbmdzLnNob3dvbmxvYWQpJiYhMCE9PWEuc2V0dGluZ3Muc2hvd29ubG9hZCYmKGs9YS5zZXR0aW5ncy5zaG93b25sb2FkKTt2YXIgYj0xOzE8YS5zZXR0aW5ncy5wcmlvcml0eSYmKGI9YS5zZXR0aW5ncy5wcmlvcml0eSk7MSE9Q29va2llcy5nZXQoIm5vdXNlZGN0YSIpfHwidXNlZGNhcnMuaHRtbCIhPSQoIiNQQUdFSUQiKS52YWwoKSYmImNhcmRldGFpbC5odG1sIiE9JCgiI1BBR0VJRCIpLnZhbCgpP2Mub25sb2FkUXVldWUucHVzaCh7cG9wdXA6YSxkZWxheTprLHByaW9yaXR5OmJ9KTpjb25zb2xlLmxvZygiTm90IHNob3dpbmcgcG9wdXAgb25sb2FkLCBiZWNhdXNlIGl0cyBhIHVzZWQgcGFnZSBhbmQgdGhlIGNvb2tpZSBub3VzZWRjdGEgaXMgc2V0Iil9OwpjLnJlcG9zaXRpb249ZnVuY3Rpb24oKXtpZighKHBvcHVwaXplckFjdGl2ZSgpfHwidW5kZWZpbmVkIiE9dHlwZW9mIG1vZGVsQ29uZmlnJiZtb2RlbENvbmZpZy5pc0FjdGl2ZSYmbW9kZWxDb25maWcuaXNBY3RpdmUoKSkpcmV0dXJuICQoImJvZHkiKS5jc3MoIm92ZXJmbG93IiwiIiksITE7aWYoYy5pc0FuaW1hdGluZylyZXR1cm4hMTt2YXIgYT0idW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdy5pbm5lckhlaWdodD93aW5kb3cuaW5uZXJIZWlnaHQ6JCh3aW5kb3cpLmhlaWdodCgpLGs9JChkb2N1bWVudCkuc2Nyb2xsVG9wKCksYj0vTW9iaS8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KT81OjIwOyQoIi5yZXZlYWwtbW9kYWwiKS5lYWNoKGZ1bmN0aW9uKGQsZSl7ZD0kKHRoaXMpO2lmKCJ2aXNpYmxlIj09ZC5jc3MoInZpc2liaWxpdHkiKSl7ZT1kLm9mZnNldCgpLnRvcDt2YXIgaD1kLm91dGVySGVpZ2h0KCksbD1lK2g7aWYoYTxoK2J8fG5hdmlnYXRvci51c2VyQWdlbnQubWF0Y2goLyhpUGhvbmV8aVBvZCkvZykpe2lmKCQoImJvZHkiKS5jc3MoIm92ZXJmbG93IiwKImF1dG8iKSxrPmx8fGsrYTxlKWU9aytiLGMuaXNBbmltYXRpbmc9ITAsZC5hbmltYXRlKHt0b3A6ZSsicHgifSwyMDAsZnVuY3Rpb24oKXtjLmlzQW5pbWF0aW5nPSExfSl9ZWxzZSBlPWsrKGEtaCkvMixlPWU8Yj9iOmUsYy5pc0FuaW1hdGluZz0hMCxkLmFuaW1hdGUoe3RvcDplKyJweCJ9LDIwMCxmdW5jdGlvbigpe2MuaXNBbmltYXRpbmc9ITF9KX19KX07Yy5zaG93PWZ1bmN0aW9uKCl7aWYoISgwPCQoIiNkaXNhYmxlUG9wdXBzIikubGVuZ3RoJiYiMSI9PSQoIiNkaXNhYmxlUG9wdXBzIikudmFsKCkpJiYoYy5vbmxvYWRRdWV1ZS5zb3J0KGZ1bmN0aW9uKGEsayl7aWYoYS5wcmlvcml0eT5rLnByaW9yaXR5KXJldHVybiAxO2lmKGEucHJpb3JpdHk8ay5wcmlvcml0eSlyZXR1cm4tMTtpZihhLnByaW9yaXR5PT1rLnByaW9yaXR5KXJldHVybiBhLmRlbGF5PGsuZGVsYXk\/MTotMX0pLCgiQlVJTERBTkRQUklDRSIhPXBhZ2V8fCItMSIhPXdpbmRvdy5sb2NhdGlvbi5ocmVmLmluZGV4T2YoInN0ZXA9cmVzdW1lIikpJiYKMDxjLm9ubG9hZFF1ZXVlLmxlbmd0aCkpe2ZvcihrZXkgaW4gYy5vbmxvYWRRdWV1ZSlpZigxPT1jLm9ubG9hZFF1ZXVlW2tleV0ucG9wdXAuc2V0dGluZ3MuZW5kUG9wdXBRdWV1ZSlyZXR1cm4gYy5vbmxvYWRRdWV1ZVtrZXldLnBvcHVwLm9wZW4oYy5vbmxvYWRRdWV1ZVtrZXldLmRlbGF5KSwhMTtmb3Ioa2V5IGluIGMub25sb2FkUXVldWUpYy5vbmxvYWRRdWV1ZVtrZXldLnBvcHVwLm9wZW4oYy5vbmxvYWRRdWV1ZVtrZXldLmRlbGF5KX19O3ZhciBtPWZ1bmN0aW9uKCl7aWYocG9wdXBpemVyQWN0aXZlKCkpcmV0dXJuIHNldFRpbWVvdXQobSw1MDApLCExO3NldFRpbWVvdXQoZnVuY3Rpb24oKXtpZihwb3B1cGl6ZXJBY3RpdmUoKSlyZXR1cm4gbSgpOyQucG9zdE1lc3NhZ2UoImNsb3NlUG9wdXAiLCIqIix3aW5kb3cucGFyZW50KX0sMUUzKX07c2V0VGltZW91dChmdW5jdGlvbigpezA8JCgiI2F1dG9hdWJhaW5lX3BvcHVwIikubGVuZ3RoJiYiZmFsc2UiIT0kKCIjYXV0b2F1YmFpbmVfcG9wdXAiKS52YWwoKSYmCm0oKX0sNUUzKX0scG9wdXBTdXBlcnZpc29yPW5ldyBDUG9wdXBTdXBlcnZpc29yLHBvcHVwaXplckFjdGl2ZT1mdW5jdGlvbigpe2lmKHBvcHVwaXplckNvbmZpZy5wb3B1cE9wZW4pcmV0dXJuITA7dmFyIGM9ITE7JCgiLnJldmVhbC1tb2RhbCwgLnJldmVhbC1tb2RlbC1kby1ub3Qtc2hvdyIpLmVhY2goZnVuY3Rpb24oKXtpZigxIT1jKXt2YXIgbT0kKHRoaXMpO2lmKCFtLmlzKCI6aGlkZGVuIikpc3dpdGNoKG0uY3NzKCJ2aXNpYmlsaXR5Iikpe2Nhc2UgInVuZGVmaW5lZCI6Y2FzZSAidmlzaWJsZSI6Yz0hMH19fSk7aWYoJCgiLnBwX292ZXJsYXkiKS5pcygiOnZpc2libGUiKXx8ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiLm1vZGFsLW92ZXJsYXkiKSljPSEwO3JldHVybiBjfSxwb3B1cGl6ZXJDb25maWc9e307JC5leHRlbmQoITAscG9wdXBpemVyQ29uZmlnLHtwb3B1cE9wZW46ITF9KTsKdmFyIHBvcHVwaXplcj1mdW5jdGlvbihjLG0pe3ZhciBhPXRoaXMsaz0iYXV0byI7Yz9hLnRhcmdldD1jOmM9YS50YXJnZXQ7YS5zZXR0aW5ncz1tO2Euc2V0VHJpZ2dlcj1mdW5jdGlvbihiKXtrPSJzdHJpbmciPT10eXBlb2YgYiYmImNsaWNrIj09Yi50b0xvd2VyQ2FzZSgpPyJjbGljayI6ImF1dG8iO2Euc2V0dGluZ3MudHJpZ2dlcj1rO3JldHVybiBhfTthLmluaXQ9ZnVuY3Rpb24oKXt2YXIgYj0iZnVuY3Rpb24iPT10eXBlb2YgYS5zZXR0aW5ncy5vbkJlZm9yZUluaXRpYWxpemUsZD0iZnVuY3Rpb24iPT10eXBlb2YgYS5zZXR0aW5ncy5vbkFmdGVySW5pdGlhbGl6ZTtpZihhLmlzQ29udGVudExvYWRlZCgpfHwhYiYmIWQpe2lmKGIpe3ZhciBlPWEuc2V0dGluZ3Mub25CZWZvcmVJbml0aWFsaXplLmNhbGwoYyxhKTtpZigwPT1lKXJldHVybn1iPSExO2lmKGEuc2V0dGluZ3MudGhyZXNob2xkJiZhLnNldHRpbmdzLm1haW5wb3B1cCl7YS5zZXR0aW5ncy5zaG93b25sb2FkPSExOwppZigiZnVuY3Rpb24iPT10eXBlb2YgYS5zZXR0aW5ncy5vbkFmdGVySW5pdGlhbGl6ZSYmKGI9ITAsZT1hLnNldHRpbmdzLm9uQWZ0ZXJJbml0aWFsaXplLmNhbGwoYyxhKSwwPT1lKSl7YS5zYXZlU2V0dGluZ3MoKTtyZXR1cm59dGhyZXNob2xkRXhlYyhhLnNldHRpbmdzLnRocmVzaG9sZFZhbHVlLzEwMCxhLmV4ZWNPcGVuKX1pZihhLnNldHRpbmdzLnNjcm9sbHVwJiZhLnNldHRpbmdzLm1haW5wb3B1cCl7YS5zZXR0aW5ncy5zaG93b25sb2FkPSExO2lmKGQmJihiPSEwLGU9YS5zZXR0aW5ncy5vbkFmdGVySW5pdGlhbGl6ZS5jYWxsKGMsYSksMD09ZSkpe2Euc2F2ZVNldHRpbmdzKCk7cmV0dXJufXNjcm9sbHVwRXhlYyhhLmV4ZWNPcGVuKX1jLmFkZENsYXNzKCJyZXZlYWwtbW9kYWwiKTsidW5kZWZpbmVkIiE9dHlwZW9mIGEuc2V0dGluZ3MuYWRkZWRDbGFzc2VzJiYwPGEuc2V0dGluZ3MuYWRkZWRDbGFzc2VzLmxlbmd0aCYmYy5hZGRDbGFzcyhhLnNldHRpbmdzLmFkZGVkQ2xhc3Nlcyk7CiQoImZvcm0iLGMpLm9uKCJzdWJtaXQiLGEuc3VibWl0KTtlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpO2Euc2V0dGluZ3MuYW5pbWF0aW9uJiZlLmdldENvbnRleHQmJigidW5kZWZpbmVkIiE9dHlwZW9mIGEuc2V0dGluZ3MuYW5pbWF0aW9uLmVmZmVjdCYmKGEuc2V0dGluZ3MucmV2ZWFsLmFuaW1hdGlvbj0iZXh0ZXJuYWxBbmltYXRpb24iLGMuYWRkQ2xhc3MoYS5zZXR0aW5ncy5hbmltYXRpb24uZWZmZWN0KSksInVuZGVmaW5lZCIhPXR5cGVvZiBhLnNldHRpbmdzLmFuaW1hdGlvbi5zcGVlZCYmYy5hZGRDbGFzcyhhLnNldHRpbmdzLmFuaW1hdGlvbi5zcGVlZCkpO2Euc2V0dGluZ3MuaW5pdGlhbGl6ZWQ9ITA7Yy50cmlnZ2VyKCJwb3B1cGl6ZXIuaW5pdGlhbGl6ZWQiLGEpO2lmKGQmJiFiJiYoZT1hLnNldHRpbmdzLm9uQWZ0ZXJJbml0aWFsaXplLmNhbGwoYyxhKSwwPT1lKSl7YS5zYXZlU2V0dGluZ3MoKTtyZXR1cm59YS5zYXZlU2V0dGluZ3MoKTtkPSQoIiNoaWRkZW5Ta2lwT25sb2FkUHJpbnRzY3JlZW4iKTsKaWYoMDxkLmxlbmd0aCYmIkRPX1NLSVBfUE9QVVAiPT1kLnZhbCgpKXJldHVybiExOyFhLnNldHRpbmdzLnNob3dvbmxvYWR8fG51bGwhPUNvb2tpZXMuZ2V0KCJwb3B1cEZvcm1GaWxsZWQiKXx8bnVsbCE9Q29va2llcy5nZXQoYS5zZXR0aW5ncy5jb29raWVOYW1lKXx8MSE9YS5zZXR0aW5ncy5jbG9zZUJ1dHRvbiYmMCE9YS5zZXR0aW5ncy5jbG9zZUJ1dHRvbnx8KC0xIT13aW5kb3cubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvcmVxdWVzdC8iKXx8LTEhPXdpbmRvdy5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9kZW1hbmRlcy8iKSkmJi0xPT1hLnNldHRpbmdzLm5hbWUuaW5kZXhPZigiaW1hZ2VQb3B1cCIpfHxwb3B1cFN1cGVydmlzb3IucmVnaXN0ZXIoYSk7JChkb2N1bWVudCkub2ZmKCJjbGljayIsIi4iK20ucmV2ZWFsLmRpc21pc3Ntb2RhbGNsYXNzKS5vbigiY2xpY2siLCIuIittLnJldmVhbC5kaXNtaXNzbW9kYWxjbGFzcyxmdW5jdGlvbihoKXtjLnRyaWdnZXIoInBvcHVwaXplci5jbG9zZSIsCmMpfSk7JChkb2N1bWVudCkub2ZmKCJrZXl1cCIpLm9uKCJrZXl1cCIsZnVuY3Rpb24oaCl7Mjc9PT1oLndoaWNoJiZjLnRyaWdnZXIoInBvcHVwaXplci5jbG9zZSIsYyl9KTsidW5kZWZpbmVkIiE9PXR5cGVvZiBhLnNldHRpbmdzLmZvcm0uZnJvbUFBJiYoZW1haWxIYW5kbGVyLmZyb21BQT1hLnNldHRpbmdzLmZvcm0uZnJvbUFBKTtyZXR1cm4gYX1hLmxvYWQoYS5pbml0KX07YS5vbk9wZW49ZnVuY3Rpb24oKXthLmlzQ29udGVudExvYWRlZCgpfHxhLmxvYWQoKTtpZigiYXV0byI9PWsmJm51bGwhPUNvb2tpZXMuZ2V0KGEuc2V0dGluZ3MuY29va2llTmFtZSkpcmV0dXJuITE7dmFyIGI9ZW1haWxIYW5kbGVyLmdldE5ld1NlcXVlbmNlKCk7Yi5zZXRBY3Rpb24oZnVuY3Rpb24oKXtlbWFpbEhhbmRsZXIuZGVhbGVyU2VsZWN0RnVuYyghMCx0aGlzKX0pO3ZhciBkPWVtYWlsSGFuZGxlci5nZXROZXdTZXF1ZW5jZSgpO2Quc2V0QWN0aW9uKGZ1bmN0aW9uKCl7Yy5maW5kKCIucG9wdXBpemVyQm9keSIpLnNob3coKTsKaWYobnVsbCE9Q29va2llcy5nZXQoInBvcHVwRm9ybUZpbGxlZCIpfHxudWxsIT1Db29raWVzLmdldChhLnNldHRpbmdzLmNvb2tpZU5hbWUpKWMuZmluZCgiLmNsb3NlLXJldmVhbC1tb2RhbCIpLnJlbW92ZUNsYXNzKCJtb2RhbC1jbG9zZS1oaWRlIiksYy5maW5kKCIuY2xvc2UtcmV2ZWFsLW1vZGFsIikuc2hvdygpO2EuY3JlYXRlQ29uZmlybUZvcm0oKTtpZigiZnVuY3Rpb24iPT10eXBlb2YgYS5zZXR0aW5ncy5vbkJlZm9yZU9wZW4mJjA9PWEuc2V0dGluZ3Mub25CZWZvcmVPcGVuLmNhbGwoYyxhKSlyZXR1cm4hMTt2YXIgZT0iL3BvcHVwLSIrYS50YXJnZXQuZmluZCgiLmVtYWlsU3ViamVjdCIpLnRleHQoKS5yZXBsYWNlKC9bXG5ccl0vZywiICIpO2EudGFyZ2V0LmZpbmQoIiNpbWFnZVBvcHVwTGVhZFR5cGUiKS5sZW5ndGgmJihlPSIvcG9wdXAtIithLnRhcmdldC5maW5kKCIjaW1hZ2VQb3B1cExlYWRUeXBlIikuYXR0cigiZGF0YS10cmFuc2xhdGVkIikucmVwbGFjZSgvW1xuXHJdL2csCiIgIikpO2EudGFyZ2V0LmZpbmQoIiNwYXltZW50Q2FsY3VsYXRvckNvbnRhaW5lciIpLmxlbmd0aCYmKGU9JCgiYm9keSIpLmhhc0NsYXNzKCJGUkVOQ0giKT8iL25ldWZzL2NhbGN1bGF0cmljZS1wcmV0LWF1dG8tcG9wdXAuaHRtbCI6Ii9uZXcvY2FyLWxvYW4tY2FsY3VsYXRvci1wb3B1cC5odG1sIik7Z2FQYWdlVmlldyhlKTtnYTRQYWdlVmlldyhlKTthLmxvZ0V2ZW50KCJwb3B1cC5vcGVuIik7ImxpdmUiPT0kKCIjdG9wZGVwbG95bWVudHR5cGUiKS52YWwoKSYmZ2FUcmFjaygiYy5fdHJhY2tFdmVudCIsIlBvcHVwLUxhdW5jaGVkIixhLnNldHRpbmdzLm5hbWUsd2luZG93LmxvY2F0aW9uLmhyZWYsMSk7YS5zZXR0aW5ncy5jb3VudGRvd24mJmEuaW5pdENvdW50ZG93bigpO2MuZGF0YSgib3BlbiIsITApO3BvcHVwaXplckNvbmZpZy5wb3B1cE9wZW49ITA7Im9uT3BlbiI9PWEuc2V0dGluZ3MuY29va2llQ3JlYXRlJiZhLnNldENvb2tpZSgpO2U9Yy5maW5kKCJmb3JtIikuZmlyc3QoKTsKZS5maW5kKCdpbnB1dCBbdHlwZT0idGV4dCJdJykuZWFjaChmdW5jdGlvbigpeyQodGhpcykub2ZmKCJmb2N1cyBibHVyIGNoYW5nZSIpLmNzcygiY29sb3IiLCIjMDAwIik7JCh0aGlzKS5hdHRyKCJwbGFjZWhvbGRlciIsJCh0aGlzKS5hdHRyKCJhbHQiKSl9KTt2YXIgaD1uZXcgRm9ybTtoLm1hc2tQaG9uZShjLmZpbmQoImZvcm0iKS5zZWxlY3RvcisiIGlucHV0LnBob25lIik7aC5tYXNrUGhvbmUoYy5maW5kKCJmb3JtIikuc2VsZWN0b3IrIiBpbnB1dC5tb2JpbGUiKTswPGUuZmluZCgiLnBob25lLnJlcXVpcmVkIikubGVuZ3RoP2VtYWlsSGFuZGxlci5waG9uZU1hbmRhdG9yeT0xOmVtYWlsSGFuZGxlci5waG9uZU1hbmRhdG9yeT0wO2Euc2V0dGluZ3MuZm9ybS5lbWFpbGlkJiZlbWFpbEhhbmRsZXIubG9nRm9ybVJlcXVlc3QoIkZvcm1Mb2FkZWQiLGEuc2V0dGluZ3MuZm9ybS5lbWFpbGlkLGEuc2V0dGluZ3MuZm9ybS5vZmZlcnR5cGUpO2Euc2V0dGluZ3MucmV2ZWFsLmNsb3NlZD0KYS5vbkNsb3NlO2MucmV2ZWFsKGEuc2V0dGluZ3MucmV2ZWFsKTskKCIjZmxvYXRQcm9tb1RvcEJ0bkNvbnRhaW5lciIpLmhpZGUoKTskKCIjY29udGFpbmVyRmxCIikuaGlkZSgpOyQoIiN0b2FzdC1jb250YWluZXIiKS5oaWRlKCk7JCgiI2FsZXJ0TXNnQ29udGFpbmVyIikuaGlkZSgpO2Euc2V0dGluZ3MuZm9ybS5PS0J1dHRvbkNsYXNzJiYoZT1hLnNldHRpbmdzLmZvcm0uT0tCdXR0b25DbGFzcywiLiI9PWVbMF0mJihlPWUuc3Vic3RyaW5nKDEpKSwkKCIuIitlLGMpLm9mZigiY2xpY2siKS5vbigiY2xpY2siLGEuc3VibWl0KSk7YS5zZXR0aW5ncy5mb3JtLkNhbmNlbEJ1dHRvbkNsYXNzJiYoZT1hLnNldHRpbmdzLmZvcm0uQ2FuY2VsQnV0dG9uQ2xhc3MsIi4iPT1lWzBdJiYoZT1lLnN1YnN0cmluZygxKSksJCgiLiIrZSxjKS5vZmYoImNsaWNrIikub24oImNsaWNrIixhLmNhbmNlbCkpO2MudHJpZ2dlcigicG9wdXBpemVyLm9uT3BlbiIsYSl9KTskKCIjUE9TVF9MRUFEX1NFTkRfVE9fREVBTEVSX0JFRk9SRV9QT1BVUCIpLmxlbmd0aCYmCiIxIj09JCgiI1BPU1RfTEVBRF9TRU5EX1RPX0RFQUxFUl9CRUZPUkVfUE9QVVAiKS52YWwoKT8iYXV0byIhPWs\/Yi5zZXROZXh0KGQpLmV4ZXV0ZSgpOmQuZXhldXRlKCk6ZC5leGV1dGUoKX07YS5vbkNsb3NlPWZ1bmN0aW9uKCl7Yy5kYXRhKCJvcGVuIiwhMSk7cG9wdXBpemVyQ29uZmlnLnBvcHVwT3Blbj0hMTthLnNldHRpbmdzLnN1Ym1pdHRlZHx8YS5sb2dFdmVudCgicG9wdXAuY2FuY2VsIik7c2V0VGltZW91dChmdW5jdGlvbigpeyQoIiN0b2FzdC1jb250YWluZXIiKS5zaG93KCl9LDUwMCk7c2V0VGltZW91dChmdW5jdGlvbigpeyQoIi5yZXZlYWwtbW9kYWwtYmciKS5sZW5ndGgmJiQoIi5yZXZlYWwtbW9kYWwtYmciKS5yZW1vdmUoKX0sMUUzKTtjLnRyaWdnZXIoInBvcHVwaXplci5vbkNsb3NlIixhKTsiZnVuY3Rpb24iPT10eXBlb2YgYS5zZXR0aW5ncy5vbkNsb3NlJiZhLnNldHRpbmdzLm9uQ2xvc2UuY2FsbChjLGEpfTthLnN1Ym1pdD1mdW5jdGlvbigpe2lmKHBvcHVwSXNTdWJtaXR0aW5nKXJldHVybiExOwpwb3B1cElzU3VibWl0dGluZz0hMDtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7cG9wdXBJc1N1Ym1pdHRpbmc9ITF9LDNFMyk7dmFyIGI9Yy5maW5kKCJmb3JtIikuZmlyc3QoKSxkPVtdLGU9IiIsaD0iIixsPVtdLHA9W10sZz0hMCx0PSIiLHo9IiIsQT0iIjtpZigiZnVuY3Rpb24iPT10eXBlb2YgYS5zZXR0aW5ncy5vbkJlZm9yZVZhbGlkYXRpb24pc3dpdGNoKGEuc2V0dGluZ3Mub25CZWZvcmVWYWxpZGF0aW9uLmNhbGwoYixjLGEpKXtjYXNlICExOmNhc2UgMDpyZXR1cm4gcG9wdXBJc1N1Ym1pdHRpbmc9ITE7Y2FzZSAtMTpnPSExfWlmKGcpeyQudmFsaWRpdHkuc2V0dXAoe291dHB1dE1vZGU6InBvcHVwIixzY3JvbGxUbzohMX0pLnN0YXJ0KCk7Yi5maW5kKCJpbnB1dDpub3QoOmhpZGRlbiksIHRleHRhcmVhIikubm9uSHRtbCgpO2IuZmluZCgiaW5wdXQucmVxdWlyZWQsIHNlbGVjdC5yZXF1aXJlZCwgdGV4dGFyZWEucmVxdWlyZWQiKS5yZXF1aXJlKCk7dmFyIHY9ITEsQj0hMSwKdz0hMTtiLmZpbmQoImlucHV0IikuZmlsdGVyKCIucmVxUmFkaW8iKS5yYWRpb09wdGlvbkNob3NlbigpO2IuZmluZCgiaW5wdXQiKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIGY9JCh0aGlzKTtmLmhhc0NsYXNzKCJlbWFpbCIpJiYoZi5oYXNDbGFzcygicmVxdWlyZWQiKXx8MDxmLnZhbCgpLmxlbmd0aCkmJih3PSEwKTtpZihmLmhhc0NsYXNzKCJwaG9uZSIpfHxmLmhhc0NsYXNzKCJtb2JpbGUiKSlpZihCPSEwLGYuaGFzQ2xhc3MoInJlcXVpcmVkIil8fDA8Zi52YWwoKS5sZW5ndGgpdj0hMH0pOzA9PXYmJjA9PXcmJihCP3Y9ITA6dz0hMCk7Yi5maW5kKCJpbnB1dCIpLmVhY2goZnVuY3Rpb24oKXt2YXIgZj0kKHRoaXMpO2YuaGFzQ2xhc3MoImVtYWlsIikmJmYudmFsaWRFbWFpbEFkZHJlc3MoKTtmLmhhc0NsYXNzKCJwaG9uZSIpJiZmLnZhbGlkYXRlUGhvbmUoKTtmLmhhc0NsYXNzKCJtb2JpbGUiKSYmZi52YWxpZGF0ZU1vYmlsZSgpfSk7MT5jLmZpbmQoIi5NaXNzaW5nVmFsaWRhdGlvbk1zZyIpLmxlbmd0aCYmCmMuYXBwZW5kKCc8ZGl2IGNsYXNzPSJNaXNzaW5nVmFsaWRhdGlvbk1zZyI+PC9kaXY+Jyk7aWYoISQudmFsaWRpdHkuZW5kKCkudmFsaWQpcmV0dXJuICQoIi5NaXNzaW5nVmFsaWRhdGlvbk1zZyIsYykuc2hvdygpLCQoZG9jdW1lbnQpLm9uKCJtb3VzZWRvd24iLGZ1bmN0aW9uKGYpeyQoIi5NaXNzaW5nVmFsaWRhdGlvbk1zZyIsYykuaGlkZSgpOyQodGhpcykub2ZmKGYpfSksYS5sb2dFdmVudCgicG9wdXAudmFsaWRhdGlvbkZhaWxlZCIpLHBvcHVwSXNTdWJtaXR0aW5nPSExfWlmKCJmdW5jdGlvbiI9PXR5cGVvZiBhLnNldHRpbmdzLm9uQmVmb3Jlc3VibWl0KXtnPSEwO3RyeXtnPWEuc2V0dGluZ3Mub25CZWZvcmVzdWJtaXQuY2FsbChjLGEpfWNhdGNoKGYpe2NvbnNvbGUubG9nKCJPbiBiZWZvcmUgc3VibWl0IGZhaWxlZCwgcmV0dXJuaW5nIHRydWUuIixmKX1pZigwPT1nKXJldHVybiBhLnNldHRpbmdzLmNsb3NlT25TdWJtaXQmJmEuY2xvc2UoKSwhMX1hLmxvZ0V2ZW50KCJwb3B1cC5zdWJtaXQiKTsKYi5maW5kKCJpbnB1dCIpLmVhY2goZnVuY3Rpb24oKXt2YXIgZj0kKHRoaXMpOyhmLmhhc0NsYXNzKCJlbWFpbCIpfHwiZW1haWwiPT09Zi5hdHRyKCJ0eXBlIikpJiZkLnB1c2goZi52YWwoKSk7Zi5oYXNDbGFzcygicG9zdGFsIikmJihlPWYudmFsKCkpO2YuaGFzQ2xhc3MoInRyYWRlaW4iKSYmKGg9Zi52YWwoKSk7KGYuaGFzQ2xhc3MoInBob25lIil8fGYuaGFzQ2xhc3MoIm1vYmlsZSIpfHwidGVsIj09PWYuYXR0cigidHlwZSIpKSYmcC5wdXNoKGYudmFsKCkpOyJ1bmRlZmluZWQiPT10eXBlb2YgZi5hdHRyKCJuYW1lIikmJmYuYXR0cigibmFtZSIsIiIpOyhmLmhhc0NsYXNzKCJuYW1lIil8fCJuYW1lIj09Zi5hdHRyKCJuYW1lIikudG9Mb3dlckNhc2UoKSkmJmwucHVzaChmLnZhbCgpKTsoZi5oYXNDbGFzcygiZmlyc3RuYW1lIil8fCJmaXJzdG5hbWUiPT1mLmF0dHIoIm5hbWUiKS50b0xvd2VyQ2FzZSgpKSYmbC51bnNoaWZ0KGYudmFsKCkpOyhmLmhhc0NsYXNzKCJsYXN0bmFtZSIpfHwKImxhc3RuYW1lIj09Zi5hdHRyKCJuYW1lIikudG9Mb3dlckNhc2UoKSkmJmwucHVzaChmLnZhbCgpKTtpZihmLmhhc0NsYXNzKCJjb21tZW50Iil8fCJjb21tZW50Ij09Zi5hdHRyKCJuYW1lIikudG9Mb3dlckNhc2UoKSl0PWYudmFsKCk7aWYoZi5oYXNDbGFzcygiYWRkcmVzcyIpfHwiYWRkcmVzcyI9PWYuYXR0cigibmFtZSIpLnRvTG93ZXJDYXNlKCkpej1mLnZhbCgpO2lmKGYuaGFzQ2xhc3MoImJpcnRoZGF0ZSIpfHwiYmlydGhkYXRlIj09Zi5hdHRyKCJuYW1lIikudG9Mb3dlckNhc2UoKSlBPWYudmFsKCl9KTtnPWIuc2VyaWFsaXplQXJyYXkoKTt2YXIgeD0kKCIuZW1haWxCb2R5IixjKS5odG1sKCkrIiIsdT0kKCIuZW1haWxTdWJqZWN0IixjKS5odG1sKCkrIiI7IlByaWNlVmVoaWNsZSI9PWEuc2V0dGluZ3MuZm9ybS5lbWFpbGlkJiYwPT1iLmZpbmQoIltuYW1lPW5vQ0JCXSIpLnZhbCgpJiYiU01TIj09Yi5maW5kKCIjdHJhZGVJbkJhclNtc09yRW1haWxTbXM6Y2hlY2tlZCIpLnZhbCgpJiYKKHUrPSIgKFNNUykiKTt2YXIgcT1bXTtbXS5wdXNoLmFwcGx5KHEsZyk7W10ucHVzaC5hcHBseShxLGEuZ2xvYmFsUmVwbGFjZW1lbnRzKCkpOyQuZWFjaChxLGZ1bmN0aW9uKCl7dmFyIGY9bmV3IFJlZ0V4cCgie1xcJCIrdGhpcy5uYW1lLnRvVXBwZXJDYXNlKCkrIn0iLCJnIiksbj10aGlzLnZhbHVlOyJTRUFSQ0hFRFZFSElDTEUiPT10aGlzLm5hbWUudG9VcHBlckNhc2UoKSYmKG49IjxzcGFuIGlkPSdwaFNFQVJDSFZFSElDTEUnPiIrbisiPC9zcGFuPiIpO3g9eC5yZXBsYWNlKGYsbik7dT11LnJlcGxhY2UoZix0aGlzLnZhbHVlKX0pO2c9e3NlbmRUbzphLnNldHRpbmdzLmZvcm0uc2VuZFRvLHNlbmRUb0FERkZvcm1hdDphLnNldHRpbmdzLmZvcm0uc2VuZFRvQURGLGNvbmRpdGlvbjphLnNldHRpbmdzLnZlaGljbGVTdGF0ZSxtYWlsSUQ6YS5zZXR0aW5ncy5mb3JtLmVtYWlsaWQsc3ViamVjdDp1LGJvZHk6eCx1c2VyUG9zdGFsOmUsYWRkcmVzczp6LGJpcnRoZGF0ZTpBLHRyYWRlaW46aCwKcG9wdXBkaXY6IiIsdXNlckVtYWlsOmQuam9pbigiOyIpLHVzZXJOYW1lOmwuam9pbigiICIpLHVzZXJQaG9uZTpwLmpvaW4oIiwiKSxzbXM6YS5zZXR0aW5ncy5mb3JtLnNtcyxwb3B1cE9mZmVyVHlwZTphLnNldHRpbmdzLmZvcm0ub2ZmZXJ0eXBlLGNvbW1lbnRzOnR9OyQuZXh0ZW5kKCEwLGVtYWlsSGFuZGxlcixnKTsic3RyaW5nIj09dHlwZW9mIGVtYWlsSGFuZGxlci51c2VyTmFtZSYmKGc9ZW1haWxIYW5kbGVyLnVzZXJOYW1lLnNwbGl0KCIgIiksZW1haWxIYW5kbGVyLnVzZXJGaXJzdE5hbWU9Zy5zaGlmdCgpLGVtYWlsSGFuZGxlci51c2VyTGFzdE5hbWU9Zy5qb2luKCIgIikpO2VtYWlsSGFuZGxlci5wb3B1cGRpdj1hLnRhcmdldC5hdHRyKCJpZCIpO2lmKGEuc2V0dGluZ3MuZmlsbGZsYWcpdmFyIEM9ZnVuY3Rpb24oKXtDb29raWVzLnNldCgicG9wdXBGb3JtRmlsbGVkIiwiMSIsOTAsIi8iKTtjLnRyaWdnZXIoInBvcHVwaXplci5mb3JtRmlsbGVkIixhKX07aWYoImZ1bmN0aW9uIj09CnR5cGVvZiBlbWFpbEhhbmRsZXIuY2FsbGJhY2smJjA8ZW1haWxIYW5kbGVyLmNhbGxiYWNrLmxlbmd0aCl2YXIgRD1lbWFpbEhhbmRsZXIuY2FsbGJhY2s7dmFyIEU9ZnVuY3Rpb24oKXtyZXR1cm4hMH07ImZ1bmN0aW9uIj09dHlwZW9mIGEuc2V0dGluZ3Mub25BZnRlcnN1Ym1pdCYmKEU9YS5zZXR0aW5ncy5vbkFmdGVyc3VibWl0KTtlbWFpbEhhbmRsZXIub25CZWZvcmVTaG93Q29uc2VudD1mdW5jdGlvbigpe2MuY3NzKHtvcGFjaXR5OjEsdmlzaWJpbGl0eToiaGlkZGVuIn0pO2VtYWlsSGFuZGxlci5vbkJlZm9yZVNob3dDb25zZW50PSExfTtlbWFpbEhhbmRsZXIub25BZnRlckNvbnNlbnQ9ZnVuY3Rpb24oZil7YS5zZXR0aW5ncy5jbG9zZU9uU3VibWl0P2EuY2xvc2UoKTpjLnJldmVhbChhLnNldHRpbmdzLnJldmVhbCk7ZW1haWxIYW5kbGVyLm9uQmVmb3JlU2hvd0NvbnNlbnQ9ITE7ZW1haWxIYW5kbGVyLm9uQWZ0ZXJDb25zZW50PSExfTtlbWFpbEhhbmRsZXIub25EdXBsaWNhdGVTZW5kPQpmdW5jdGlvbigpe2Euc2V0dGluZ3MuY2xvc2VPblN1Ym1pdCYmYS5jbG9zZSgpO2VtYWlsSGFuZGxlci5yZXNldENhbGxiYWNrcygpfTtlbWFpbEhhbmRsZXIuY2FsbGJhY2s9ZnVuY3Rpb24oZil7dmFyIG49ITE7YS5zZXR0aW5ncy5mb3JtLnNob3dFbWFpbENvbmZpcm1hdGlvbiYmKG49Z2V0TWFpbFNlbnRIYW5kbGVyKCJfIitjLmF0dHIoImlkIikpLG4udGltZW91dENhbGxiYWNrPWZ1bmN0aW9uKCl7Yi50cmlnZ2VyKCJyZXNldCIpfSk7dmFyIEY9YS5zZXR0aW5ncy5jbG9zZU9uU3VibWl0O2lmKGYpYS5sb2dFdmVudCgicG9wdXAubGVhZF9zZW50IiksMD09RS5jYWxsKGMsYSkmJihGPSExKSwiZnVuY3Rpb24iPT10eXBlb2YgQyYmQygpLCJmdW5jdGlvbiI9PXR5cGVvZiBEJiZEKCksIm9uU3VibWl0Ij09YS5zZXR0aW5ncy5jb29raWVDcmVhdGUmJmEuc2V0Q29va2llKCksRiYmImhpZGRlbiIhPWMuY3NzKCJ2aXNpYmlsaXR5IikmJmEuY2xvc2UoIkNPTlNFTlQiKSxhLnNldHRpbmdzLm1haW5wb3B1cCYmCihlbWFpbEhhbmRsZXIubWFpblByb21vPSEwKSxuP24uc2hvd1N1Y2Nlc3MoKTowPCQoImZvcm0jIitjLmF0dHIoImlkIikrIl9jb25maXJtIikubGVuZ3RoJiYkKCJmb3JtIyIrYy5hdHRyKCJpZCIpKyJfY29uZmlybSIpLnRyaWdnZXIoInN1Ym1pdCIpO2Vsc2V7bnx8KG49Z2V0TWFpbFNlbnRIYW5kbGVyKCkpO3RyeXtuLnNob3dGYWlsKCl9Y2F0Y2goRyl7fX1zZXRUaW1lb3V0KGVtYWlsSGFuZGxlci5yZXNldENhbGxiYWNrcygpLDFFMyl9O2Euc2F2ZVNldHRpbmdzKHtzdWJtaXR0ZWQ6ITB9KTtpZigiZnVuY3Rpb24iPT10eXBlb2YgYS5zZXR0aW5ncy5vbkJlZm9yZVNlbmRNYWlsJiYwPT1hLnNldHRpbmdzLm9uQmVmb3JlU2VuZE1haWwuY2FsbChjLGEpKXJldHVybiExO2Euc2V0RGVmYXVsdEFERigpOyJmdW5jdGlvbiI9PXR5cGVvZiBhLnNldHRpbmdzLm9uQURGJiYoZz1hLnNldHRpbmdzLm9uQURGLmNhbGwoYyxhKSwib2JqZWN0Ij09dHlwZW9mIGcmJiQuZXh0ZW5kKGEuc2V0dGluZ3MuQURGLApnKSk7Zz0ibWFrZSBtb2RlbCB5ZWFyIHN0b2NrTnVtYmVyIHRyaW0gdmluIHByaWNlIGNhcmlkIi5zcGxpdCgiICIpO3E9YS5zZXR0aW5ncy5BREY7Zm9yKHZhciB5PTA7eTxnLmxlbmd0aDt5Kyspe3ZhciByPWdbeV07ZW1haWxIYW5kbGVyW3JdPSIiIT1lbWFpbEhhbmRsZXJbcl0\/ZW1haWxIYW5kbGVyW3JdOnFbcl0\/cVtyXTplbWFpbEhhbmRsZXJbcl19ZW1haWxIYW5kbGVyLmJvZHk9YS5jbGVhbkJsYW5rVmFyaWFibGVzKGVtYWlsSGFuZGxlci5ib2R5KTthLnNob3dQdXJjaGFzZUludGVudFBvcHVwKCl8fGVtYWlsSGFuZGxlci5zZW5kTWFpbChhLnNldHRpbmdzLmJ5cGFzc0NvbnNlbnQpO3JldHVybiEwfTthLnNob3dQdXJjaGFzZUludGVudFBvcHVwPWZ1bmN0aW9uKCl7aWYoYS5zZXR0aW5ncy5wdXJjaGFzZUludGVudFBvcHVwKXt2YXIgYj0kKCIjaW50ZXJzdGl0aWFsVmVoaWNsZUludGVudCIpO2lmKDE+Yi5sZW5ndGh8fG51bGwhPUNvb2tpZXMuZ2V0KCJwdXJjaGFzZV9pbnRlbnQiKSlyZXR1cm4hMTsKZ2FUcmFjaygiX3RyYWNrRXZlbnQiLCJJbnRlbnRpb25zIGQnYWNoYXQiLCJQb3B1cCB2dXMiLGEuc2V0dGluZ3MuZ29vZ2xlVHJhY2tpbmcubGFiZWwsMSk7Yy5jc3Moe29wYWNpdHk6MSx2aXNpYmlsaXR5OiJoaWRkZW4ifSk7Yi5maW5kKCJmb3JtIikub24oInN1Ym1pdCIsZnVuY3Rpb24oKXt2YXIgZD0kKHRoaXMpLGU9ZC5maW5kKCJpbnB1dCIpOyQudmFsaWRpdHkuc2V0dXAoe291dHB1dE1vZGU6InBvcHVwIn0pLnN0YXJ0KCk7ZC5maW5kKCJpbnB1dDpub3QoOmhpZGRlbiksIHRleHRhcmVhIikubm9uSHRtbCgpO2UuZmlsdGVyKCIucmVxdWlyZWQiKS5yZXF1aXJlKCkubm9uSHRtbCgpO2UuZmlsdGVyKCIucmVxUmFkaW8iKS5yYWRpb09wdGlvbkNob3NlbigpO2lmKCQudmFsaWRpdHkuZW5kKCkudmFsaWQpe2IudHJpZ2dlcigicmV2ZWFsOmNsb3NlIik7dmFyIGg9e3B1cmNoYXNlX2ludGVudDohMH07ZC5zZXJpYWxpemVBcnJheSgpLm1hcChmdW5jdGlvbihsLHAsZyl7aFtsLm5hbWVdPQpsLnZhbHVlfSk7Q29va2llcy5zZXQoInB1cmNoYXNlX2ludGVudCIsaC5wdXJjaGFzZV9pbnRlbnQsMzAsIi8iKTtnYVRyYWNrKCJfdHJhY2tFdmVudCIsIkludGVudGlvbnMgZCdhY2hhdCIsIlJlcG9uc2VzIixoLnB1cmNoYXNlX2ludGVudCwxKTtlbWFpbEhhbmRsZXIuc2VuZE1haWwoYS5zZXR0aW5ncy5ieXBhc3NDb25zZW50KX1yZXR1cm4hMX0pO2IucmV2ZWFsKHtjbG9zZV9vbl9iYWNrZ3JvdW5kX2NsaWNrOiExLGRpc21pc3NfbW9kYWxfY2xhc3M6Il9fTlVMTF9fIn0pO3JldHVybiEwfXJldHVybiExfTthLmdsb2JhbFJlcGxhY2VtZW50cz1mdW5jdGlvbigpe3ZhciBiPVtdOyQoImlucHV0W3R5cGU9aGlkZGVuXSIpLmVhY2goZnVuY3Rpb24oKXt2YXIgZz0kKHRoaXMpLmF0dHIoIm5hbWUiKTtnPSJ1bmRlZmluZWQiIT10eXBlb2YgZz9nOiQodGhpcykuYXR0cigiaWQiKTtpZighZylyZXR1cm4hMDt2YXIgdD0hMTsiZW1haWxidWlsZGFuZHByaWNlIj09Zy50b0xvd2VyQ2FzZSgpJiYKIiI9PSQodGhpcykudmFsKCkucmVwbGFjZSgvIC9nLCIiKSYmKHQ9ITApO3R8fCgiYnJhbmQiPT1nLnRvTG93ZXJDYXNlKCkmJmIucHVzaCh7bmFtZToibWFrZSIsdmFsdWU6JCh0aGlzKS52YWwoKX0pLGIucHVzaCh7bmFtZTpnLHZhbHVlOiQodGhpcykudmFsKCl9KSl9KTt2YXIgZD0iIjtpZigwPCQoIiNsYXN0dmlld2VkbWFrZSIpLmxlbmd0aCYmMDwkKCIjbGFzdHZpZXdlZG1ha2UiKS52YWwoKS5sZW5ndGgpe3ZhciBlPSQoIiNsYXN0dmlld2Vkc3RvY2tudW1iZXIiKS52YWwoKTtkPSQoIiNsYXN0dmlld2VkbWFrZSIpLnZhbCgpO3ZhciBoPSQoIiNsYXN0dmlld2VkbW9kZWwiKS52YWwoKSxsPSQoIiNsYXN0dmlld2VkeWVhciIpLnZhbCgpLHA9JCgiI2xhc3R2aWV3ZWR0cmltIikudmFsKCl8fCIiO2Q9ZCsiICIraCsiICIrbCsocC5sZW5ndGg\/IiAiK3A6IiIpO2QrPTA8ZS5sZW5ndGg\/IiAoU3RvY2sjICIrZSsiKSI6IiJ9Yi5wdXNoKHtuYW1lOiJMQVNUVkVISUNMRVZJRVdFRCIsCnZhbHVlOmR9KTtyZXR1cm4gYn07YS5jbGVhbkJsYW5rVmFyaWFibGVzPWZ1bmN0aW9uKGIpe3ZhciBkPWIucmVwbGFjZSgve1wkUVVFU1RJT05TfS9nLCIiKS5yZXBsYWNlKC97XCRNRVNTQUdFfS9nLCIiKS5yZXBsYWNlKC97XCRFTUFJTFBIT05FfS9nLCIiKS5yZXBsYWNlKC97XCRFTUFJTE1BS0V9L2csIiIpLnJlcGxhY2UoL3tcJEVNQUlMTU9ERUx9L2csIiIpLnJlcGxhY2UoL3tcJEVNQUlMWUVBUn0vZywiIikucmVwbGFjZSgve1wkUEFZTUVOVH0vZywiIikucmVwbGFjZSgve1wkUEFZTUVOVFRFUk19L2csIiIpLnJlcGxhY2UoL3tcJE9GRkVSfS9nLCIiKS5yZXBsYWNlKC97XCRTVE9DS05VTUJFUn0vZywiIikucmVwbGFjZSgve1wkQ09MT1J9L2csIiIpLnJlcGxhY2UoL3tcJEZOQU1FfS9nLCIiKS5yZXBsYWNlKC97XCRMTkFNRX0vZywiIikucmVwbGFjZSgve1wkRU1BSUx9L2csIiIpLnJlcGxhY2UoL3tcJFVTRVJQSE9ORX0vZywiIik7bWFpbFBhZ2UmJmIucmVwbGFjZSgve1wkRU1BSUxCVUlMREFORFBSSUNFfS9nLAptYWlsUGFnZS5iYW5kcExpbmsoKSk7cmV0dXJuIGR9O2EuY2FuY2VsPWZ1bmN0aW9uKCl7YS5jbG9zZSgiQ0FOQ0VMIil9O2Eub3Blbj1mdW5jdGlvbihiKXtpZigxPT1jLmRhdGEoIm9wZW4iKSlyZXR1cm4hMTsib2JqZWN0Ij09dHlwZW9mIGImJi0xIT0iY2xpY2sgdGFwIi5pbmRleE9mKGIudHlwZS50b0xvd2VyQ2FzZSgpKSYmKGs9ImNsaWNrIik7aWYoIWlzTmFOKGIpKXJldHVybiBzZXRUaW1lb3V0KGEub3BlbiwxRTMqYik7aWYoIWEuaXNDb250ZW50TG9hZGVkKCkpcmV0dXJuIGEubG9hZChhLm9wZW4pO2lmKCJ1bmRlZmluZWQiIT09dHlwZW9mIHdpbmRvdy5uZXdWRFBWaWRlb0lzUGxheWluZyYmMT09d2luZG93Lm5ld1ZEUFZpZGVvSXNQbGF5aW5nJiYiY2xpY2siIT1rfHxhLmlzQWN0aXZlKCkpcmV0dXJuIGEub3Blbig1KTthLm9uT3BlbigpO3JldHVybiBhfTthLmV4ZWNPcGVuPWZ1bmN0aW9uKCl7bnVsbD09Q29va2llcy5nZXQoInBvcHVwU2hvd25FeGVjIikmJihDb29raWVzLnNldCgicG9wdXBTaG93bkV4ZWMiLAoiMSIsbnVsbCx3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUpLGEub3BlbigwKSl9O2EuaW5pdENvdW50ZG93bj1mdW5jdGlvbigpe3RyeXt2YXIgYj1uZXcgRGF0ZSgxRTMqYS5zZXR0aW5ncy5jb3VudGRvd24pO2lmKDA8Yy5maW5kKCIuY291bnRkb3duIikubGVuZ3RoKXt2YXIgZD1jLmZpbmQoIi5jb3VudGRvd24iKSxlPW5ldyBEYXRlLGg9Yi5nZXRUaW1lKCktZS5nZXRUaW1lKCk7aWYoMDxoKXt2YXIgbD1bTWF0aC5mbG9vcihoLzg2NEU1KSxNYXRoLmZsb29yKGglODY0RTUvMzZFNSksTWF0aC5mbG9vcihoJTg2NEU1JTM2RTUvNkU0KSxNYXRoLmZsb29yKGglODY0RTUlMzZFNSU2RTQvMUUzKV07Zm9yKGI9MDtiPGwubGVuZ3RoO2IrKylsW2JdPTk8bFtiXT9sW2JdLnRvU3RyaW5nKCk6IjAiK2xbYl07dmFyIHA9bC5qb2luKCI6Iik7ZC5jb3VudGRvd24oe3N0YXJ0VGltZTpwLGltYWdlOiIvaW1hZ2VzL2RpZ2l0c19zbWFsbC5wbmciLGRpZ2l0V2lkdGg6MjksZGlnaXRIZWlnaHQ6NDN9KX1lbHNlIGQuaGlkZSgpfX1jYXRjaChnKXsidW5kZWZpbmVkIiE9PQp0eXBlb2YgZGVidWcmJihkZWJ1ZyhnKSxkZWJ1ZygiSW52YWxpZCBkYXRlICIsYS5zZXR0aW5ncy5jb3VudGRvd24pKX19O2EuY2xvc2U9ZnVuY3Rpb24oYil7aWYoIkNBTkNFTCI9PWImJiJmdW5jdGlvbiI9PXR5cGVvZiBhLnNldHRpbmdzLm9uQmVmb3JlQ2FuY2VsKXt2YXIgZD1hLnNldHRpbmdzLm9uQmVmb3JlQ2FuY2VsLmNhbGwoYyxhKTtpZigwPT1kKXJldHVybiExfWlmKCJmdW5jdGlvbiI9PXR5cGVvZiBhLnNldHRpbmdzLm9uQmVmb3JlQ2xvc2UmJihkPWEuc2V0dGluZ3Mub25CZWZvcmVDbG9zZS5jYWxsKGMsYSxiKSwwPT1kKSlyZXR1cm4hMTtjLnRyaWdnZXIoInJldmVhbDpjbG9zZSIpfTthLmlzQWN0aXZlPWZ1bmN0aW9uKCl7cmV0dXJuIHBvcHVwaXplckFjdGl2ZSgpfTthLnNldENvb2tpZT1mdW5jdGlvbigpe0Nvb2tpZXMuc2V0KGEuc2V0dGluZ3MuY29va2llTmFtZSwiMSIsYS5zZXR0aW5ncy5jb29raWVEdXJhdGlvbiwiLyIpO3ZhciBiPWEuc2V0dGluZ3MuY29va2llTmFtZS50b0xvd2VyQ2FzZSgpOwppZigicmViYXRlc2hvd24iPT1ifHwicmViYXRlb3RoZXJzaG93biI9PWImJiJ1c2VkIj09JCgiI2N1cnJlbnRTdGF0dXMiKS52YWwoKSliPW5ldyBEYXRlLGIuc2V0VGltZShiLmdldFRpbWUoKSsxOEU0KSxDb29raWVzLnNldCgidXNlZFNsaWRlclBvcHVwRGlzcGxheWVkIiwiMSIsYiwiLyIpfTthLnNhdmVTZXR0aW5ncz1mdW5jdGlvbihiKXtiPSJ1bmRlZmluZWQiPT10eXBlb2YgYj97fTpiO2I9Im9iamVjdCIhPXR5cGVvZiBiP3t1c2VyRGVmaW5lZE5vbk9iamVjdDpifTpiO2MuZGF0YSgicG9wdXBTZXR0aW5ncyIsJC5leHRlbmQoITAsYS5zZXR0aW5ncyxiKSl9O2Euc2V0RGVmYXVsdEFERj1mdW5jdGlvbigpe3ZhciBiPSQoIiNwb3B1cG1ha2UiKS52YWwoKSxkPSQoIiNwb3B1cG1vZGVsIikudmFsKCksZT0kKCIjcG9wdXB5ZWFyIikudmFsKCk7MDwkKCJpbnB1dC5icmFuZGVtYWlsIikudmFsKCkubGVuZ3RoJiYwPCQoImlucHV0Lm1vZGVsZW1haWwiKS52YWwoKS5sZW5ndGgmJgowPCQoImlucHV0LnllYXJlbWFpbCIpLnZhbCgpLmxlbmd0aCYmKGI9JCgiaW5wdXQuYnJhbmRlbWFpbCIpLnZhbCgpLGQ9JCgiaW5wdXQubW9kZWxlbWFpbCIpLnZhbCgpLGU9JCgiaW5wdXQueWVhcmVtYWlsIikudmFsKCkpO2Euc2V0dGluZ3MuQURGPXttYWtlOmIsbW9kZWw6ZCx5ZWFyOmUsc3RvY2tOdW1iZXI6JCgiI3BvcHVwc3RvY2tudW1iZXIiKS52YWwoKX19O2EubG9nRXZlbnQ9ZnVuY3Rpb24oYil7dmFyIGQ9YS5zZXR0aW5ncy5mb3JtO2Q9ZC5vZmZlcnR5cGU\/ZC5vZmZlcnR5cGU6IkVNQUlMSURfIitkLmVtYWlsaWQ7aWYoIWIpcmV0dXJuITE7JChhLnRhcmdldCkudHJpZ2dlcihiKTtpZigicG9wdXAubGVhZF9zZW50Ij09Yil7dmFyIGU9ay5yZXBsYWNlKC8oXlthLXpdezF9KS9nLGZ1bmN0aW9uKGwpe3JldHVybiBsLnRvVXBwZXJDYXNlKCl9KSxoPWQyY21lZGlhLnBhZ2VEZXBhcnRtZW50KCk7Z2FUcmFjaygiYy5fdHJhY2tFdmVudCIsIlBvcHVwLWxlYWRzIixlLGgsCjEpfSJ1bmRlZmluZWQiIT10eXBlb2YgYWN0aXZlVXNlclByb2ZpbGVNbmcmJiJ1bmRlZmluZWQiIT10eXBlb2YgYWN0aXZlVXNlclByb2ZpbGVNbmcubG9nUGFnZVZpZXdFdmVudD8oInVuZGVmaW5lZCIhPT10eXBlb2YgZGVidWcmJmRlYnVnKCJMb2cgRXZlbnQiLGIsZCxhKSxhY3RpdmVVc2VyUHJvZmlsZU1uZy5sb2dQYWdlVmlld0V2ZW50KGIsZCkpOiJ1bmRlZmluZWQiIT09dHlwZW9mIGRlYnVnJiZkZWJ1ZygiIVVOTE9HR0VEIEVWRU5UISIsYixkKX07YS5pc0NvbnRlbnRMb2FkZWQ9ZnVuY3Rpb24oKXtpZighYS50YXJnZXRbMF0uaGFzQXR0cmlidXRlKCJkYXRhLWxhenlsb2FkaWQiKSlyZXR1cm4hMDt2YXIgYj0wPT09YS50YXJnZXQuaHRtbCgpLnRyaW0oKS5sZW5ndGgsZD1hLnNldHRpbmdzLmNvbnRlbnRMb2FkZWR8fCExO3JldHVybiFiJiZkfTthLmxvYWQ9ZnVuY3Rpb24oYil7YS5pc0NvbnRlbnRMb2FkZWQoKT8oYS5zZXR0aW5ncy5jb250ZW50TG9hZGVkPSEwLGIoKSk6CiQuYWpheCh7dHlwZToiR0VUIixjYWNoZTohMCx1cmw6KCJFTkdMSVNIIj09PSQoIiNhY3RpdmVzaXRlbGFuZ3VhZ2UiKS52YWwoKT8iL2VuIjoiL2ZyIikrIi9hamF4L2dldFBvcHVwQ29udGVudCIsZGF0YTp7d3N3aWR0aDoiMCIsXzphLnNldHRpbmdzLmlkZW50LGlkOmEudGFyZ2V0LmRhdGEoImxhenlsb2FkaWQiKSxtYWtlOiQoIiNsYXN0dmlld2VkbWFrZSIpLnZhbCgpfHwiIixtb2RlbDokKCIjbGFzdHZpZXdlZG1vZGVsIikudmFsKCl8fCIiLHllYXI6JCgiI2xhc3R2aWV3ZWR5ZWFyIikudmFsKCl8fCIiLHRyaW06JCgiI2xhc3R2aWV3ZWR0cmltIikudmFsKCl8fCIiLHN0b2NrTnVtYmVyOiQoIiNsYXN0dmlld2Vkc3RvY2tudW1iZXIiKS52YWwoKXx8IiIsdmVoaWNsZUlkOiQoIiN0b3BjYXJpZCIpLnZhbCgpfHwwfSxzdWNjZXNzOmZ1bmN0aW9uKGQpe2EudGFyZ2V0Lmh0bWwoZCk7YS5zZXR0aW5ncy5jb250ZW50TG9hZGVkPSEwOyJmdW5jdGlvbiI9PT0KdHlwZW9mIGFkZE5vVHJhbnNsYXRlRW1haWxEZWYmJmFkZE5vVHJhbnNsYXRlRW1haWxEZWYoKTtiKCl9fSl9O2EuY3JlYXRlQ29uZmlybUZvcm09ZnVuY3Rpb24oKXt2YXIgYj1hLnRhcmdldC5hdHRyKCJpZCIpKyJfY29uZmlybSI7MT4kKCIjY29uZmlybV9mb3JtcyIpLmxlbmd0aCYmJCgiYm9keSIpLmFwcGVuZCgkKCI8ZGl2PjwvZGl2PiIpLmF0dHIoImlkIiwiY29uZmlybV9mb3JtcyIpKTtpZigxPiQoIiMiK2IpLmxlbmd0aCYmYS5zZXR0aW5ncy5jb25maXJtRm9ybSYmMCE9PWEuc2V0dGluZ3MuY29uZmlybUZvcm0ubGVuZ3RoKXtiPSQoIjxmb3JtPjwvZm9ybT4iKS5hdHRyKCJpZCIsYikuYXR0cigibWV0aG9kIiwiUE9TVCIpLmF0dHIoImFjdGlvbiIsIi9jb25maXJtYXRpb24uaHRtbCIpLmF0dHIoInRhcmdldCIsImlmcmFtZWd0cmFjayIpO3ZhciBkPSQoIiNhdXRvYXViYWluZV9wb3B1cCIpO2Q9W3tuYW1lOiJndGFnX2NvbnZlcnNpb24iLHZhbHVlOiJndGFnIn0se25hbWU6ImxlYWRfZGVwYXJ0bWVudCIsCnZhbHVlOiIifSx7bmFtZToibGVhZFR5cGUiLHZhbHVlOiIifSx7bmFtZToicGFnZUlEIix2YWx1ZToiIn0se25hbWU6ImN1cnJlbnRVUkwiLHZhbHVlOiIifSx7bmFtZToiYnV0dG9uUG9zaXRpb24iLHZhbHVlOiIifSx7bmFtZToiZGVhbGVyTmFtZSIsdmFsdWU6IiJ9LHtuYW1lOiJpc0Z1bGxXaWR0aCIsdmFsdWU6IiJ9LHtuYW1lOiJpc01vYmlsZU5ld1ZEUCIsdmFsdWU6IiJ9LHtuYW1lOiJ0ZXN0bW9kZSIsdmFsdWU6IjAiLGNsYXNzOiJ0ZXN0bW9kZSJ9LHtuYW1lOiJmcm9tQXV0b0F1YmFpbmUiLHZhbHVlOjA8ZC5sZW5ndGgmJiJmYWxzZSIhPWQudmFsKCl9XTtbXS5wdXNoLmFwcGx5KGQsYS5zZXR0aW5ncy5jb25maXJtRm9ybSk7Zm9yKHZhciBlPTA7ZTxkLmxlbmd0aDtlKyspJCgiPGlucHV0IC8+IikuYXR0cigidHlwZSIsImhpZGRlbiIpLmF0dHIoZFtlXSkuYXBwZW5kVG8oYik7JCgiI2NvbmZpcm1fZm9ybXMiKS5hcHBlbmQoYik7Yi5vbigic3VibWl0IixvbkNvbmZpcm1TdWJtaXQpfTE+CiQoIiNndHJhY2tGcmFtZSIpLmxlbmd0aCYmJCgiPGlmcmFtZT48L2lmcmFtZT4iKS5hdHRyKHt3aWR0aDoxLGhlaWdodDoxLGZyYW1lQm9yZGVyOjAsaWQ6Imd0cmFja0ZyYW1lIixuYW1lOiJpZnJhbWVndHJhY2siLHN0eWxlOiJ3aWR0aDogMXB4OyBoZWlnaHQ6IDFweDsifSkuYXBwZW5kVG8oIiNjb25maXJtX2Zvcm1zIil9O3JldHVybiBhfTsKalF1ZXJ5KGZ1bmN0aW9uKGMpe3ZhciBtPWMoIiNzaXRlY29tcGlsZWlkIikubGVuZ3RoP2MoIiNzaXRlY29tcGlsZWlkIikudmFsKCk6TWF0aC5yb3VuZCgxRTcqTWF0aC5yYW5kb20oKSkudG9TdHJpbmcoMTYpO2MuZm4ucG9wdXBpemU9ZnVuY3Rpb24oYSl7YT1hP2E6e307dmFyIGs9e3JldmVhbDp7YW5pbWF0aW9uOiJmYWRlQW5kUG9wIixhbmltYXRpb25zcGVlZDozMDAsY2xvc2VvbmJhY2tncm91bmRjbGljazohMSxkaXNtaXNzbW9kYWxjbGFzczoiY2xvc2UtcmV2ZWFsLW1vZGFsIn0sZm9ybTp7ZW1haWxpZDowLG9mZmVydHlwZTowLG5hbWU6MCxzZW5kVG86MCxzZW5kVG9BREY6MCxPS0J1dHRvbkNsYXNzOiJzdWJtaXRCdG4iLENhbmNlbEJ1dHRvbkNsYXNzOiJjYW5jZWxCdG4iLHNob3dFbWFpbENvbmZpcm1hdGlvbjohMX0sQURGOnttYWtlOiIiLG1vZGVsOiIiLHllYXI6IiIsc3RvY2tOdW1iZXI6IiJ9LGlkZW50Om0sZW5kUG9wdXBRdWV1ZTohMSxwcmlvcml0eToxLGFuaW1hdGlvbjohMSwKbm90cmFuc2Zvcm06ITEsZmlsbGZsYWc6ITEsc3VibWl0dGVkOiExLHNob3dvbmxvYWQ6ITEsY29va2llTmFtZTohMSxjb29raWVEdXJhdGlvbjo2MCxjbG9zZU9uU3VibWl0OiEwLGFkZGVkQ2xhc3NlczoiIn07aWYoMT09dGhpcy5sZW5ndGgpe3ZhciBiPXRoaXMuZGF0YSgicG9wdXBTZXR0aW5ncyIpP3RoaXMuZGF0YSgicG9wdXBTZXR0aW5ncyIpOnt9O3NldHRpbmdzPXt9O2MuZXh0ZW5kKCEwLHNldHRpbmdzLGssYixhKTshc2V0dGluZ3MuY29va2llTmFtZSYmMDx0aGlzLmF0dHIoImlkIikubGVuZ3RoJiYoc2V0dGluZ3MuY29va2llTmFtZT0iY3BwXyIrdGhpcy5hdHRyKCJpZCIpKTshc2V0dGluZ3MubmFtZSYmMDx0aGlzLmF0dHIoImlkIikubGVuZ3RoJiYoc2V0dGluZ3MubmFtZT10aGlzLmF0dHIoImlkIikucmVwbGFjZSgvQ29udGFpbmVyXGIvLCIiKSk7dGhpcy5kYXRhKCJwb3B1cFNldHRpbmdzIixzZXR0aW5ncyk7YT1uZXcgcG9wdXBpemVyKHRoaXMsc2V0dGluZ3MpOwpzZXR0aW5ncy5pbml0aWFsaXplZHx8KGEuaW5pdCgpLHBvcHVwU3VwZXJ2aXNvci5wb3B1cHMucHVzaChhKSk7cmV0dXJuIGF9cG9wdXBzPVtdO3RoaXMuZWFjaChmdW5jdGlvbigpe3BvcHVwcy5wdXNoKGModGhpcykucG9wdXBpemUoKSl9KTtyZXR1cm4gcG9wdXBzfTtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dmFyIGE9bnVsbDtjKHdpbmRvdykub24oInRvdWNobW92ZSwgb25zY3JvbGwsIHNjcm9sbCBtb3VzZXdoZWVsIHJlc2l6ZSIsZnVuY3Rpb24oayl7Y2xlYXJUaW1lb3V0KGEpO2E9c2V0VGltZW91dChwb3B1cFN1cGVydmlzb3IucmVwb3NpdGlvbiwxRTMpfSl9LDFFMyl9KTsKLyoqIC9tL2pzL3Z0aXAuanMgKiovCnZhciBfX19kMmNfdnRpcGpzX2Nfb249IjIwMjUtMDUtMjMgMTc6MTA6NDciOyd1c2Ugc3RyaWN0Jzt2YXIgX19fZDJjX3Z0aXBqc19jX29uPSIyMDI0LTAzLTI1IDEyOjM1OjM5IjsidXNlIHN0cmljdCI7CnRoaXMudnRpcD1mdW5jdGlvbigpe3RoaXMueE9mZnNldD0tMTA7dGhpcy55T2Zmc2V0PTEwOyQoIi52dGlwIikub2ZmKCkub24oImhvdmVyIixmdW5jdGlvbihhKXt0aGlzLnQ9dGhpcy50aXRsZTt0aGlzLnRpdGxlPSIiO3RoaXMudG9wPWEucGFnZVkreU9mZnNldDt0aGlzLmxlZnQ9YS5wYWdlWCt4T2Zmc2V0OyQoImJvZHkiKS5hcHBlbmQoJzxwIGlkPSJ2dGlwIiBzdHlsZT0iei1pbmRleDoxMDAwMDA7Ij48aW1nIGlkPSJ2dGlwQXJyb3ciIC8+Jyt0aGlzLnQrIjwvcD4iKTskKCJwI3Z0aXAgI3Z0aXBBcnJvdyIpLmF0dHIoInNyYyIsIi9pbWFnZXMvc2NyYXRjaC92dGlwX2Fycm93LnBuZyIpOyQoInAjdnRpcCIpLmNzcygidG9wIix0aGlzLnRvcCsicHgiKS5jc3MoImxlZnQiLHRoaXMubGVmdCsicHgiKS5mYWRlSW4oInNsb3ciKX0sZnVuY3Rpb24oKXt0aGlzLnRpdGxlPXRoaXMudDskKCJwI3Z0aXAiKS5mYWRlT3V0KCJzbG93IikucmVtb3ZlKCl9KS5vbigibW91c2Vtb3ZlIiwKZnVuY3Rpb24oYSl7dGhpcy50b3A9YS5wYWdlWSt5T2Zmc2V0O3RoaXMubGVmdD1hLnBhZ2VYK3hPZmZzZXQ7JCgicCN2dGlwIikuY3NzKCJ0b3AiLHRoaXMudG9wKyJweCIpLmNzcygibGVmdCIsdGhpcy5sZWZ0KyJweCIpfSl9O2pRdWVyeShkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oYSl7dnRpcCgpfSk7Ci8qKiAvbS9qcy93U2NyYXRjaFBhZC5qcyAqKi8KdmFyIF9fX2QyY193U2NyYXRjaFBhZGpzX2Nfb249IjIwMjUtMDUtMjMgMTc6MTM6MzciOyd1c2Ugc3RyaWN0Jzt2YXIgX19fZDJjX3dTY3JhdGNoUGFkanNfY19vbj0iMjAyNC0wNC0xMiAxODozMDowNiI7InVzZSBzdHJpY3QiOwooZnVuY3Rpb24oZCl7ZnVuY3Rpb24gaChiLGEpe3RoaXMuc3A9bnVsbDt0aGlzLnNldHRpbmdzPWI7dGhpcy4kZWxlbT1hO3RoaXMuZW5hYmxlZD0hMDt0aGlzLnNjcmF0Y2g9ITE7dGhpcy5jdHg9dGhpcy5jYW52YXM9bnVsbDtyZXR1cm4gdGhpc31kLmZuLndTY3JhdGNoUGFkPWZ1bmN0aW9uKGIsYSl7aWYoImVuYWJsZSI9PWIpZCh0aGlzKS5kYXRhKCJfd1NjcmF0Y2hQYWQiKS5lbmFibGUoKTtlbHNle2lmKCJvYmplY3QiPT09dHlwZW9mIGIpYT1iO2Vsc2UgaWYoInN0cmluZyI9PXR5cGVvZiBiKXt2YXIgYz1bXSxmPXRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBlPWQodGhpcykuZGF0YSgiX3dTY3JhdGNoUGFkIik7ZSYmKCJyZXNldCI9PT1iP2UucmVzZXQoKToiY2xlYXIiPT09Yj9lLmNsZWFyKCk6ImVuYWJsZWQiPT09Yj9lLmVuYWJsZWQ9ITA9PT1hOnZvaWQgMCE9PWQuZm4ud1NjcmF0Y2hQYWQuZGVmYXVsdFNldHRpbmdzW2JdJiYodm9pZCAwIT09YT9lLnNldHRpbmdzW2JdPQphOmMucHVzaChlLnNldHRpbmdzW2JdKSkpfSk7cmV0dXJuIDE9PT1jLmxlbmd0aD9jWzBdOjA8Yy5sZW5ndGg\/YzpmfWE9ZC5leHRlbmQoe30sZC5mbi53U2NyYXRjaFBhZC5kZWZhdWx0U2V0dGluZ3MsYXx8e30pO3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZT1kKHRoaXMpLGc9alF1ZXJ5LmV4dGVuZCghMCx7fSxhKTtpZighZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIikuZ2V0Q29udGV4dCl7dmFyIGs9IkJyb3dzZXIgZG9lcyBub3Qgc3VwcG9ydCBIVE1MNSBjYW52YXMsIHBsZWFzZSB1cGdyYWRlIHRvIGEgbW9yZSBtb2Rlcm4gYnJvd3Nlci4iO2QoIiN0ZXh0RG9lc05vdFN1cHBvcnRIVE1MNSIpLmxlbmd0aCYmKGs9ZCgiI3RleHREb2VzTm90U3VwcG9ydEhUTUw1IikudmFsKCkpO2UuY3NzKCJwYWRkaW5nLXRvcCIsIjYwcHgiKTtlLmNzcygiaGVpZ2h0IiwiNTVweCIpO2UuaHRtbChrKTsidW5kZWZpbmVkIiE9dHlwZW9mIGcuaWRUb0FkZCYmZCgiI2Jsb2NrYWdlIisKZy5pZFRvQWRkKS5sZW5ndGgmJmQoIiNibG9ja2FnZSIrZy5pZFRvQWRkKS5jc3MoInRvcCIscGFyc2VJbnQoZCgiI2Jsb2NrYWdlIitnLmlkVG9BZGQpLmNzcygidG9wIikpKzMwKyJweCIpO3JldHVybiExfWc9bmV3IGgoZyxlKTtlLmFwcGVuZChnLmdlbmVyYXRlKCkpO2cucGl4ZWxzPWcuY2FudmFzLndpZHRoKmcuY2FudmFzLmhlaWdodDtlLmRhdGEoIl93U2NyYXRjaFBhZCIsZyk7Zy5pbml0KCl9KX19O2QuZm4ud1NjcmF0Y2hQYWQuZGVmYXVsdFNldHRpbmdzPXt3aWR0aDo2MDAsaGVpZ2h0OjExNSxpbWFnZToiL2ltYWdlcy9zY3JhdGNoL3NsaWRlMi5wbmciLGltYWdlMjoiL2ltYWdlcy9wb3B1cHMvc3R5bGUyL3NjcmF0Y2gucG5nIixpbWFnZURpc2FibGVkOiIvaW1hZ2VzL3BvcHVwcy9zdHlsZTIvc2NyYXRjaF9kaXNhYmxlZC5wbmciLGNvbG9yOiIjMzM2Njk5IixvdmVybGF5OiJub25lIixzaXplOjMwLHJlYWx0aW1lUGVyY2VudDohMSxzY3JhdGNoRG93bjpudWxsLHNjcmF0Y2hVcDpudWxsLApzY3JhdGNoTW92ZTpudWxsLGN1cnNvcjpudWxsLGlkVG9BZGQ6IiIsYmFja2dyb3VuZENvbG9yOiIjMDEwYTI4IixlbmFibGVkOiEwfTtoLnByb3RvdHlwZT17Z2VuZXJhdGU6ZnVuY3Rpb24oKXt0aGlzLmNhbnZhcz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKTt0aGlzLmN0eD10aGlzLmNhbnZhcy5nZXRDb250ZXh0KCIyZCIpO3RoaXMuc3A9ZCgiPGRpdj48L2Rpdj4iKS5jc3Moe3Bvc2l0aW9uOiJyZWxhdGl2ZSJ9KS5hcHBlbmQoZCh0aGlzLmNhbnZhcykuYXR0cigid2lkdGgiLHRoaXMuc2V0dGluZ3Mud2lkdGgrInB4IikuYXR0cigiaGVpZ2h0Iix0aGlzLnNldHRpbmdzLmhlaWdodCsicHgiKS5hdHRyKCJzdHlsZSIsInBvc2l0aW9uOmFic29sdXRlO2xlZnQ6LTJweDt0b3A6LTFweDt6LWluZGV4OjE7IikpO3RoaXMuc2V0dGluZ3MuZW5hYmxlZCYmdGhpcy5lbmFibGUoKTtyZXR1cm4gdGhpcy5zcH0sZW5hYmxlOmZ1bmN0aW9uKCl7dGhpcy5kcmF3SW1hZ2UodGhpcy5zZXR0aW5ncy5pbWFnZTIsCiEwKTt0aGlzLmJpbmRCcm93c2VyKCk7dGhpcy5iaW5kTW9iaWxlKHRoaXMuc3ApfSxiaW5kQnJvd3NlcjpmdW5jdGlvbihiKXt2YXIgYT10aGlzO2QodGhpcy5jYW52YXMpLm9uKCJtb3VzZWRvd24iLGZ1bmN0aW9uKGMpe2lmKCFhLmVuYWJsZWQpcmV0dXJuITA7Yy5wcmV2ZW50RGVmYXVsdCgpO2Muc3RvcFByb3BhZ2F0aW9uKCk7YS5jYW52YXNfb2Zmc2V0PWQoYS5jYW52YXMpLm9mZnNldCgpO2Euc2NyYXRjaD0hMDthLnNjcmF0Y2hGdW5jKGMsYSwiRG93biIpfSkub24oIm1vdXNlbW92ZSIsZnVuY3Rpb24oYyl7Yy5wcmV2ZW50RGVmYXVsdCgpO2Muc3RvcFByb3BhZ2F0aW9uKCk7YS5zY3JhdGNoJiZhLnNjcmF0Y2hGdW5jKGMsYSwiTW92ZSIpfSkub24oIm1vdXNldXAiLGZ1bmN0aW9uKGMpe2MucHJldmVudERlZmF1bHQoKTtjLnN0b3BQcm9wYWdhdGlvbigpO2Euc2NyYXRjaCYmKGEuc2NyYXRjaD0hMSxhLnNjcmF0Y2hGdW5jKGMsYSwiVXAiKSl9KX0sYmluZE1vYmlsZTpmdW5jdGlvbihiKXtiLm9uKCJ0b3VjaHN0YXJ0IHRvdWNobW92ZSB0b3VjaGVuZCB0b3VjaGNhbmNlbCIsCmZ1bmN0aW9uKCl7dmFyIGE9ZXZlbnQuY2hhbmdlZFRvdWNoZXNbMF07c3dpdGNoKGV2ZW50LnR5cGUpe2Nhc2UgInRvdWNoc3RhcnQiOnZhciBjPSJtb3VzZWRvd24iO2JyZWFrO2Nhc2UgInRvdWNobW92ZSI6Yz0ibW91c2Vtb3ZlIjticmVhaztjYXNlICJ0b3VjaGVuZCI6Yz0ibW91c2V1cCI7YnJlYWs7ZGVmYXVsdDpyZXR1cm59dmFyIGY9ZG9jdW1lbnQuY3JlYXRlRXZlbnQoIk1vdXNlRXZlbnQiKTtmLmluaXRNb3VzZUV2ZW50KGMsITAsITAsd2luZG93LDEsYS5zY3JlZW5YLGEuc2NyZWVuWSxhLmNsaWVudFgsYS5jbGllbnRZLCExLCExLCExLCExLDAsbnVsbCk7YS50YXJnZXQuZGlzcGF0Y2hFdmVudChmKTtldmVudC5wcmV2ZW50RGVmYXVsdCgpfSl9LGluaXQ6ZnVuY3Rpb24oKXt0aGlzLnNwLmNzcygid2lkdGgiLHRoaXMuc2V0dGluZ3Mud2lkdGgtMik7dGhpcy5zcC5jc3MoImhlaWdodCIsdGhpcy5zZXR0aW5ncy5oZWlnaHQtMik7dGhpcy5zcC5jc3MoImN1cnNvciIsdGhpcy5zZXR0aW5ncy5jdXJzb3I\/Cid1cmwoIicrdGhpcy5zZXR0aW5ncy5jdXJzb3IrJyIpLCBkZWZhdWx0JzoiZGVmYXVsdCIpO2QodGhpcy5jYW52YXMpLmNzcyh7Y3Vyc29yOnRoaXMuc2V0dGluZ3MuY3Vyc29yPyd1cmwoIicrdGhpcy5zZXR0aW5ncy5jdXJzb3IrJyIpLCBkZWZhdWx0JzoiZGVmYXVsdCJ9KTt0aGlzLmNhbnZhcy53aWR0aD10aGlzLnNldHRpbmdzLndpZHRoO3RoaXMuY2FudmFzLmhlaWdodD10aGlzLnNldHRpbmdzLmhlaWdodDt0aGlzLnBpeGVscz10aGlzLmNhbnZhcy53aWR0aCp0aGlzLmNhbnZhcy5oZWlnaHQ7dGhpcy5zZXR0aW5ncy5pbWFnZTI\/KHRoaXMuZHJhd0ltYWdlKHRoaXMuc2V0dGluZ3MuaW1hZ2UyKSx0aGlzLnNldHRpbmdzLmVuYWJsZWR8fHRoaXMuZHJhd0ltYWdlKHRoaXMuc2V0dGluZ3MuaW1hZ2VEaXNhYmxlZCwhMCkpOigibm9uZSIhPXRoaXMuc2V0dGluZ3Mub3ZlcmxheT8odGhpcy5zZXR0aW5ncy5pbWFnZSYmdGhpcy5kcmF3SW1hZ2UodGhpcy5zZXR0aW5ncy5pbWFnZSksCnRoaXMuY3R4Lmdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbj10aGlzLnNldHRpbmdzLm92ZXJsYXkpOnRoaXMuc2V0QmdJbWFnZSgpLHRoaXMuY3R4LmZpbGxTdHlsZT10aGlzLnNldHRpbmdzLmNvbG9yLHRoaXMuY3R4LmJlZ2luUGF0aCgpLHRoaXMuY3R4LnJlY3QoMCwwLHRoaXMuc2V0dGluZ3Mud2lkdGgsdGhpcy5zZXR0aW5ncy5oZWlnaHQpLHRoaXMuY3R4LmZpbGwoKSl9LHJlc2V0OmZ1bmN0aW9uKCl7dGhpcy5jdHguZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uPSJzb3VyY2Utb3ZlciI7dGhpcy5pbml0KCl9LGNsZWFyOmZ1bmN0aW9uKCl7dGhpcy5jdHguY2xlYXJSZWN0KDAsMCx0aGlzLnNldHRpbmdzLndpZHRoLHRoaXMuc2V0dGluZ3MuaGVpZ2h0KX0sc2V0QmdJbWFnZTpmdW5jdGlvbigpe3RoaXMuc2V0dGluZ3MuaW1hZ2UmJih0aGlzLnNwLmFkZENsYXNzKCJzY3JhdGNoRGl2VGV4dCIpLHRoaXMuc3AuY3NzKCJiYWNrZ3JvdW5kLWNvbG9yIix0aGlzLnNldHRpbmdzLmJhY2tncm91bmRDb2xvciksCnRoaXMuc3AuYXBwZW5kKCI8ZGl2IGlkPSdzY3JhdGNoRGl2VGV4dCIrdGhpcy5zZXR0aW5ncy5pZFRvQWRkKyInIHN0eWxlPSd0ZXh0LWFsaWduOmNlbnRlcjtmb250LXNpemU6MzBweDtjb2xvcjojZmZmO21hcmdpbi1sZWZ0OjBweDtwYWRkaW5nLWxlZnQ6MTBweDtwYWRkaW5nLXJpZ2h0OjEwcHg7cG9zaXRpb246YWJzb2x1dGU7dG9wOjIwcHg7ei1pbmRleDowOyc+IitkKCIjc2NyYXRjaElucHV0VGV4dCIrdGhpcy5zZXR0aW5ncy5pZFRvQWRkKS52YWwoKSsiPC9kaXY+IikpfSxkcmF3SW1hZ2U6ZnVuY3Rpb24oYixhKXt2YXIgYz10aGlzLGY9bmV3IEltYWdlO2Yuc3JjPWI7ZChmKS5vbigibG9hZCIsZnVuY3Rpb24oKXtjLmN0eC5kcmF3SW1hZ2UoZiwwLDApOyJ1bmRlZmluZWQiIT10eXBlb2YgYSYmYXx8Yy5zZXRCZ0ltYWdlKCl9KX0sc2NyYXRjaEZ1bmM6ZnVuY3Rpb24oYixhLGMpe2IucGFnZVg9TWF0aC5mbG9vcihiLnBhZ2VYLWEuY2FudmFzX29mZnNldC5sZWZ0KTtiLnBhZ2VZPQpNYXRoLmZsb29yKGIucGFnZVktYS5jYW52YXNfb2Zmc2V0LnRvcCk7YVsic2NyYXRjaCIrY10oYixhKTsodGhpcy5zZXR0aW5ncy5yZWFsdGltZVBlcmNlbnR8fCJVcCI9PWMpJiZhLnNldHRpbmdzWyJzY3JhdGNoIitjXSYmYS5zZXR0aW5nc1sic2NyYXRjaCIrY10uYXBwbHkoYSxbYixhLnNjcmF0Y2hQZXJjZW50YWdlKGEpXSl9LHNjcmF0Y2hQZXJjZW50YWdlOmZ1bmN0aW9uKGIpe2Zvcih2YXIgYT0wLGM9Yi5jdHguZ2V0SW1hZ2VEYXRhKDAsMCxiLmNhbnZhcy53aWR0aCxiLmNhbnZhcy5oZWlnaHQpLGY9MCxlPWMuZGF0YS5sZW5ndGg7ZjxlO2YrPTQpMD09Yy5kYXRhW2ZdJiYwPT1jLmRhdGFbZisxXSYmMD09Yy5kYXRhW2YrMl0mJjA9PWMuZGF0YVtmKzNdJiZhKys7cmV0dXJuIGEvYi5waXhlbHMqMTAwfSxzY3JhdGNoRG93bjpmdW5jdGlvbihiLGEpe2EuY3R4Lmdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbj0iZGVzdGluYXRpb24tb3V0IjthLmN0eC5saW5lSm9pbj0icm91bmQiOwphLmN0eC5saW5lQ2FwPSJyb3VuZCI7YS5jdHguc3Ryb2tlU3R5bGU9YS5zZXR0aW5ncy5jb2xvcjthLmN0eC5saW5lV2lkdGg9YS5zZXR0aW5ncy5zaXplO2EuY3R4LmJlZ2luUGF0aCgpO2EuY3R4LmFyYyhiLnBhZ2VYLGIucGFnZVksYS5zZXR0aW5ncy5zaXplLzIsMCwyKk1hdGguUEksITApO2EuY3R4LmNsb3NlUGF0aCgpO2EuY3R4LmZpbGwoKTthLmN0eC5iZWdpblBhdGgoKTthLmN0eC5tb3ZlVG8oYi5wYWdlWCxiLnBhZ2VZKX0sc2NyYXRjaE1vdmU6ZnVuY3Rpb24oYixhKXthLmN0eC5saW5lVG8oYi5wYWdlWCxiLnBhZ2VZKTthLmN0eC5zdHJva2UoKX0sc2NyYXRjaFVwOmZ1bmN0aW9uKGIsYSl7YS5jdHguY2xvc2VQYXRoKCl9fX0pKGpRdWVyeSk7Ci8qKiAvbS9qcy9zd2ZzdG9yZS5qcyAqKi8KdmFyIF9fX2QyY19zd2ZzdG9yZWpzX2Nfb249IjIwMjUtMDUtMjMgMTc6MTI6MjEiOyd1c2Ugc3RyaWN0Jzt2YXIgX19fZDJjX3N3ZnN0b3JlanNfY19vbj0iMjAyNC0wMS0zMSAxNDozNzo1MyI7InVzZSBzdHJpY3QiO19fX2QyY19zd2ZzdG9yZWpzX2Nfb249IjIwMjMtMDEtMTIgMTE6MzU6MTgiOyJ1c2Ugc3RyaWN0IjtfX19kMmNfc3dmc3RvcmVqc19jX29uPSIyMDIzLTAxLTEyIDEwOjQ0OjU4IjsidXNlIHN0cmljdCI7X19fZDJjX3N3ZnN0b3JlanNfY19vbj0iMjAyMS0xMi0xNSAxMjo0MjozMSI7InVzZSBzdHJpY3QiOwooZnVuY3Rpb24oKXtmdW5jdGlvbiBnKGEpe2lmKCJmdW5jdGlvbiI9PT10eXBlb2YgYSl0aHJvdyJTd2ZTdG9yZSBFcnJvcjogRnVuY3Rpb25zIGNhbm5vdCBiZSB1c2VkIGFzIGtleXMgb3IgdmFsdWVzLiI7fXZhciBoPTAsbT0vW15hLXowLTlfXS9naTt3aW5kb3cuU3dmU3RvcmU9ZnVuY3Rpb24oYSl7ZnVuY3Rpb24gZShkKXt2YXIgYj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGIpO2IuaWQ9IlN3ZlN0b3JlXyIrYS5uYW1lc3BhY2UrIl8iK2grKztkfHwoYi5zdHlsZS5wb3NpdGlvbj0iYWJzb2x1dGUiLGIuc3R5bGUudG9wPSItMjAwMHB4IixiLnN0eWxlLmxlZnQ9Ii0yMDAwcHgiKTtyZXR1cm4gYn1hPWF8fHt9O3ZhciBmPXtzd2ZfdXJsOiJzdG9yYWdlLnN3ZiIsbmFtZXNwYWNlOiJzd2ZzdG9yZSIscGF0aDpudWxsLGRlYnVnOiExLHRpbWVvdXQ6MTAsb25yZWFkeTpudWxsLG9uZXJyb3I6bnVsbH07Zm9yKGMgaW4gZilmLmhhc093blByb3BlcnR5KGMpJiYKKGEuaGFzT3duUHJvcGVydHkoYyl8fChhW2NdPWZbY10pKTthLm5hbWVzcGFjZT1hLm5hbWVzcGFjZS5yZXBsYWNlKG0sIl8iKTtpZih3aW5kb3cuU3dmU3RvcmVbYS5uYW1lc3BhY2VdKXRocm93IlRoZXJlIGlzIGFscmVhZHkgYW4gaW5zdGFuY2Ugb2YgU3dmU3RvcmUgdXNpbmcgdGhlICciK2EubmFtZXNwYWNlKyInIG5hbWVzcGFjZS4gVXNlIHRoYXQgaW5zdGFuY2Ugb3Igc3BlY2lmeSBhbiBhbHRlcm5hdGUgbmFtZXNwYWNlIGluIHRoZSBjb25maWcuIjt0aGlzLmNvbmZpZz1hO2lmKGEuZGVidWcpe2lmKCJ1bmRlZmluZWQiPT09dHlwZW9mIGNvbnNvbGUpe3ZhciBuPWUoITApO3dpbmRvdy5jb25zb2xlPXtsb2c6ZnVuY3Rpb24oZCl7dmFyIGI9ZSghMCk7Yi5pbm5lckhUTUw9ZDtuLmFwcGVuZENoaWxkKGIpfX19dGhpcy5sb2c9ZnVuY3Rpb24oZCxiLGspe2I9InN3ZlN0b3JlIj09PWI\/InN3ZiI6YjtpZigidW5kZWZpbmVkIiE9PXR5cGVvZiBjb25zb2xlW2RdKWNvbnNvbGVbZF0oIlN3ZlN0b3JlIC0gIisKYS5uYW1lc3BhY2UrIiAoIitiKyIpOiAiK2spO2Vsc2UgY29uc29sZS5sb2coIlN3ZlN0b3JlIC0gIithLm5hbWVzcGFjZSsiOiAiK2QrIiAoIitiKyIpOiAiK2spfX1lbHNlIHRoaXMubG9nPWZ1bmN0aW9uKCl7fTt0aGlzLmxvZygiaW5mbyIsImpzIiwiSW5pdGlhbGl6aW5nLi4uIik7U3dmU3RvcmVbYS5uYW1lc3BhY2VdPXRoaXM7Zj1lKGEuZGVidWcpO3ZhciBjPSJTd2ZTdG9yZV8iK2EubmFtZXNwYWNlKyJfIitoKyssbD0ibG9nZm49U3dmU3RvcmUuIithLm5hbWVzcGFjZSsiLmxvZyZhbXA7b25sb2FkPVN3ZlN0b3JlLiIrYS5uYW1lc3BhY2UrIi5vbmxvYWQmYW1wO29uZXJyb3I9U3dmU3RvcmUuIithLm5hbWVzcGFjZSsiLm9uZXJyb3ImYW1wOyIrKGEucGF0aD8iTFNPUGF0aD0iK2EucGF0aCsiJmFtcDsiOiIiKSsiTFNPTmFtZT0iK2EubmFtZXNwYWNlO2YuaW5uZXJIVE1MPSc8b2JqZWN0IGhlaWdodD0iMTAwIiB3aWR0aD0iNTAwIiBjb2RlYmFzZT0iaHR0cHM6Ly9kb3dubG9hZC5tYWNyb21lZGlhLmNvbS9wdWIvc2hvY2t3YXZlL2NhYnMvZmxhc2gvc3dmbGFzaC5jYWIiIGlkPSInKwpjKyciIGNsYXNzaWQ9ImNsc2lkOkQyN0NEQjZFLUFFNkQtMTFjZi05NkI4LTQ0NDU1MzU0MDAwMCI+ICAgIDxwYXJhbSB2YWx1ZT0iJythLnN3Zl91cmwrJyIgbmFtZT0ibW92aWUiPiAgPHBhcmFtIHZhbHVlPSInK2wrJyIgbmFtZT0iRmxhc2hWYXJzIj4gICA8cGFyYW0gdmFsdWU9ImFsd2F5cyIgbmFtZT0iYWxsb3dTY3JpcHRBY2Nlc3MiPiAgPGVtYmVkIGhlaWdodD0iMzc1IiBhbGlnbj0ibWlkZGxlIiB3aWR0aD0iNTAwIiBwbHVnaW5zcGFnZT0iaHR0cHM6Ly93d3cubWFjcm9tZWRpYS5jb20vZ28vZ2V0Zmxhc2hwbGF5ZXIiIGZsYXNodmFycz0iJytsKyciIHR5cGU9ImFwcGxpY2F0aW9uL3gtc2hvY2t3YXZlLWZsYXNoIiBhbGxvd3NjcmlwdGFjY2Vzcz0iYWx3YXlzIiBxdWFsaXR5PSJoaWdoIiBsb29wPSJmYWxzZSIgcGxheT0idHJ1ZSIgbmFtZT0iJytjKyciIGJnY29sb3I9IiNmZmZmZmYiIHNyYz0iJythLnN3Zl91cmwrJyI+PC9vYmplY3Q+Jzt0aGlzLnN3Zj1kb2N1bWVudFtjXXx8CndpbmRvd1tjXTt0aGlzLl90aW1lb3V0PXNldFRpbWVvdXQoZnVuY3Rpb24oKXtTd2ZTdG9yZVthLm5hbWVzcGFjZV0ubG9nKCJlcnJvciIsImpzIiwiVGltZW91dCByZWFjaGVkLCBhc3N1bWluZyAiK2Euc3dmX3VybCsiIGZhaWxlZCB0byBsb2FkIGFuZCBmaXJpbmcgdGhlIG9uZXJyb3IgY2FsbGJhY2suIik7aWYoYS5vbmVycm9yKWEub25lcnJvcigpfSwxRTMqYS50aW1lb3V0KX07U3dmU3RvcmUucHJvdG90eXBlPXt2ZXJzaW9uOiIxLjkiLHJlYWR5OiExLHNldDpmdW5jdGlvbihhLGUpe3RoaXMuX2NoZWNrUmVhZHkoKTtnKGEpO2coZSk7dGhpcy5zd2Yuc2V0KGEsZSl9LGdldDpmdW5jdGlvbihhKXt0aGlzLl9jaGVja1JlYWR5KCk7ZyhhKTtyZXR1cm4gdGhpcy5zd2YuZ2V0KGEpfSxnZXRBbGw6ZnVuY3Rpb24oKXt0aGlzLl9jaGVja1JlYWR5KCk7dmFyIGE9dGhpcy5zd2YuZ2V0QWxsKCk7YS5fX2ZsYXNoQnVnRml4JiZkZWxldGUgYS5fX2ZsYXNoQnVnRml4O3JldHVybiBhfSwKY2xlYXI6ZnVuY3Rpb24oYSl7dGhpcy5fY2hlY2tSZWFkeSgpO2coYSk7dGhpcy5zd2YuY2xlYXIoYSl9LF9jaGVja1JlYWR5OmZ1bmN0aW9uKCl7aWYoIXRoaXMucmVhZHkpdGhyb3ciU3dmU3RvcmUgaXMgbm90IHlldCBmaW5pc2hlZCBpbml0aWFsaXppbmcuIFBhc3MgYSBjb25maWcub25yZWFkeSBjYWxsYmFjayBvciB3YWl0IHVudGlsIHRoaXMucmVhZHkgaXMgdHJ1ZSBiZWZvcmUgdHJ5aW5nIHRvIHVzZSBhIFN3ZlN0b3JlIGluc3RhbmNlLiI7fSxvbmxvYWQ6ZnVuY3Rpb24oKXt2YXIgYT10aGlzO3NldFRpbWVvdXQoZnVuY3Rpb24oKXtjbGVhclRpbWVvdXQoYS5fdGltZW91dCk7YS5yZWFkeT0hMDthLnNldCgiX19mbGFzaEJ1Z0ZpeCIsIjEiKTtpZihhLmNvbmZpZy5vbnJlYWR5KWEuY29uZmlnLm9ucmVhZHkoKX0sMCl9LG9uZXJyb3I6ZnVuY3Rpb24oKXtjbGVhclRpbWVvdXQodGhpcy5fdGltZW91dCk7aWYodGhpcy5jb25maWcub25lcnJvcil0aGlzLmNvbmZpZy5vbmVycm9yKCl9fX0pKCk7Ci8qKiAvbS9qcy9qcXVlcnkuY291bnRkb3duLmpzICoqLwp2YXIgX19fZDJjX2pxdWVyeWNvdW50ZG93bmpzX2Nfb249IjIwMjUtMDUtMjMgMTc6MDk6MzIiOyd1c2Ugc3RyaWN0Jzt2YXIgX19fZDJjX2pxdWVyeWNvdW50ZG93bmpzX2Nfb249IjIwMjQtMDEtMzEgMTQ6MzY6MTIiOyJ1c2Ugc3RyaWN0IjtfX19kMmNfanF1ZXJ5Y291bnRkb3duanNfY19vbj0iMjAyMy0wMS0xMiAxMTo0MDoyNSI7InVzZSBzdHJpY3QiO19fX2QyY19qcXVlcnljb3VudGRvd25qc19jX29uPSIyMDIzLTAxLTEyIDEwOjUwOjEwIjsidXNlIHN0cmljdCI7X19fZDJjX2pxdWVyeWNvdW50ZG93bmpzX2Nfb249IjIwMjEtMTItMTUgMTI6NTA6MzUiOyJ1c2Ugc3RyaWN0IjsKalF1ZXJ5LmZuLmNvdW50ZG93bj1mdW5jdGlvbihoKXtpZigxPHRoaXMubGVuZ3RoKXJldHVybiAkKHRoaXMpLmVhY2goZnVuY3Rpb24oKXskKHRoaXMpLmNvdW50ZG93bihoKX0pLHRoaXM7aWYodGhpcy5kYXRhKCJjb3VudGluZyIpKXJldHVybiB0aGlzO3RoaXMuZGF0YSgiY291bnRpbmciLCEwKTt2YXIgYT17c3RlcFRpbWU6NjAsZm9ybWF0OiJkZDpoaDptbTpzcyIsc3RhcnRUaW1lOiIwMToxMjozMjo1NSIsZGlnaXRJbWFnZXM6NixkaWdpdFdpZHRoOjUzLGRpZ2l0SGVpZ2h0Ojc3LHRpbWVyRW5kOmZ1bmN0aW9uKCl7fSxpbWFnZToiZGlnaXRzLnBuZyJ9LGM9W10sZj1mdW5jdGlvbihiLGQpe3JldHVybiB2b2lkIDAhPT1kP2NbYl0uY3NzKHttYXJnaW5Ub3A6ZCsicHgifSk6cGFyc2VJbnQoY1tiXS5jc3MoIm1hcmdpblRvcCIpLnJlcGxhY2UoInB4IiwiIikpfSxrPWZ1bmN0aW9uKGIpe2NbYl0uX2RpZ2l0SW5pdGlhbD0tKGNbYl0uX19tYXgqYS5kaWdpdEhlaWdodCphLmRpZ2l0SW1hZ2VzKTsKcmV0dXJuIGZ1bmN0aW9uIGUoKXttdG9wPWYoYikrYS5kaWdpdEhlaWdodDtpZihtdG9wPT1hLmRpZ2l0SGVpZ2h0KWlmKGYoYixjW2JdLl9kaWdpdEluaXRpYWwpLDA8YilrKGItMSkoKSwwPGImJnZvaWQgMCE9PWNbYl0uX19jb25kbWF4JiZjW2ItMV0uX2RpZ2l0SW5pdGlhbD09ZihiLTEpJiZmKGIsLShjW2JdLl9fY29uZG1heCphLmRpZ2l0SGVpZ2h0KmEuZGlnaXRJbWFnZXMpKTtlbHNle2NsZWFySW50ZXJ2YWwobCk7Zm9yKHZhciBnPTA7ZzxjLmxlbmd0aDtnKyspZihnLDApO2EudGltZXJFbmQoKX1lbHNlIGYoYixtdG9wKSwwIT1mKGIpL2EuZGlnaXRIZWlnaHQlYS5kaWdpdEltYWdlcyYmc2V0VGltZW91dChlLGEuc3RlcFRpbWUpLDA9PW10b3AmJihjW2JdLl9faXNtYXg9ITApfX07JC5leHRlbmQoYSxoKTt0aGlzLmNzcyh7aGVpZ2h0OmEuZGlnaXRIZWlnaHQsb3ZlcmZsb3c6ImhpZGRlbiJ9KTsoZnVuY3Rpb24oYil7Zm9yKHZhciBkPTAsZT0wO2U8YS5zdGFydFRpbWUubGVuZ3RoO2UrKyl7aWYoMDw9CnBhcnNlSW50KGEuc3RhcnRUaW1lW2VdKSl7ZWxlbT0kKCc8ZGl2IGlkPSJjbnRfJytlKyciIGNsYXNzPSJjbnREaWdpdCIgLz4nKS5jc3Moe2hlaWdodDphLmRpZ2l0SGVpZ2h0KmEuZGlnaXRJbWFnZXMqMTAsZmxvYXQ6ImxlZnQiLGJhY2tncm91bmQ6InVybCgnIithLmltYWdlKyInKSIsd2lkdGg6YS5kaWdpdFdpZHRofSk7Yy5wdXNoKGVsZW0pO2YoZCwtKHBhcnNlSW50KGEuc3RhcnRUaW1lW2VdKSphLmRpZ2l0SGVpZ2h0KmEuZGlnaXRJbWFnZXMpKTtjW2RdLl9fbWF4PTk7c3dpdGNoKGEuZm9ybWF0W2VdKXtjYXNlICJoIjpjW2RdLl9fbWF4PTA9PWQlMj8yOjk7MD09ZCUyJiYoY1tkXS5fX2NvbmRtYXg9NCk7YnJlYWs7Y2FzZSAiZCI6Y1tkXS5fX21heD05O2JyZWFrO2Nhc2UgIm0iOmNhc2UgInMiOmNbZF0uX19tYXg9MD09ZCUyPzU6OX0rK2R9ZWxzZSBlbGVtPSQoJzxkaXYgY2xhc3M9ImNudFNlcGFyYXRvciIvPicpLmNzcyh7ZmxvYXQ6ImxlZnQifSkudGV4dChhLnN0YXJ0VGltZVtlXSk7CmIuYXBwZW5kKGVsZW0pfX0pKHRoaXMpO3ZhciBsPXNldEludGVydmFsKGsoYy5sZW5ndGgtMSksMUUzKX07Ci8qKiAvbS9qcy9kYXRlVXRpbHMuanMgKiovCnZhciBfX19kMmNfZGF0ZVV0aWxzanNfY19vbj0iMjAyNS0wNS0yMyAxNzowOTo0NiI7J3VzZSBzdHJpY3QnO3ZhciBfX19kMmNfZGF0ZVV0aWxzanNfY19vbj0iMjAyNC0wMS0zMSAxNDozNjowMSI7InVzZSBzdHJpY3QiO19fX2QyY19kYXRlVXRpbHNqc19jX29uPSIyMDIzLTAxLTEyIDExOjM0OjMzIjsidXNlIHN0cmljdCI7X19fZDJjX2RhdGVVdGlsc2pzX2Nfb249IjIwMjMtMDEtMTIgMTA6NDQ6MTQiOyJ1c2Ugc3RyaWN0IjtfX19kMmNfZGF0ZVV0aWxzanNfY19vbj0iMjAyMS0xMi0xNSAxMjo0MToyMyI7InVzZSBzdHJpY3QiO0RhdGUucHJvdG90eXBlLmFtb3VudEJldHdlZW49ZnVuY3Rpb24oYSxiLGMsZCl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBhfHxudWxsPT1hfHwidW5kZWZpbmVkIj09dHlwZW9mIGJ8fG51bGw9PWIpcmV0dXJuIG51bGw7YT1hLmdldFRpbWUoKTtiPWIuZ2V0VGltZSgpO3JldHVybiBNYXRoLmZsb29yKChiLWEtZCkvYyl9OwovKiogL20vanMvZDJjX2FzY19nYTQuanMgKiovCnZhciBfX19kMmNfZDJjYXNjZ2E0anNfY19vbj0iMjAyNi0wNS0yOCAxMjozMDowMyI7J3VzZSBzdHJpY3QnO3ZhciBhc2NUb3BDYXJEZXRhaWxzPSExLGFzY0xhc3RTZWFyY2hGaWx0ZXJTb3J0PSExLGFzY0xhc3RGaWx0ZXJDbGljaz0hMSxhc2NMYXN0Q3RhQ2xpY2s9ITEsYXNjQ29tbVN0YXJ0RmlyZWQ9ITE7ZnVuY3Rpb24gZDJhc2NQdWJsaWNhdGlvbkRhdGUoZCl7aWYoIiI9PWQpcmV0dXJuIiI7dmFyIGg9bmV3IERhdGUoZCk7ZD0iIisoaC5nZXRNb250aCgpKzEpO3ZhciBrPSIiK2guZ2V0RGF0ZSgpO2g9aC5nZXRGdWxsWWVhcigpOzEwPnBhcnNlRmxvYXQoZCkmJihkPSIwIitkKTsxMD5wYXJzZUZsb2F0KGspJiYoaz0iMCIrayk7cmV0dXJuW2QsayxoXS5qb2luKCIvIil9ZnVuY3Rpb24gZW5zdXJlVHJ1dGh5KGQpe3JldHVybiBkP2Q6IiJ9CmZ1bmN0aW9uIGFzY1VwZGF0ZVRvcENhckRhdGEoZCl7aWYoITEhPT1kKXtsZXQgaD1kMmFzY1B1YmxpY2F0aW9uRGF0ZShlbnN1cmVUcnV0aHkoZC5kYXRlX2xpc3RpbmcpKSxrPWQubWFrZWNlcnQrIiI7YXNjVG9wQ2FyRGV0YWlscz17aXRlbV9pZDplbnN1cmVUcnV0aHkoZC5OSVYpLGl0ZW1fbnVtYmVyOmVuc3VyZVRydXRoeShkLmlkKSxpdGVtX3ByaWNlOmVuc3VyZVRydXRoeShkLnByaWNlKSxpdGVtX2NvbmRpdGlvbjplbnN1cmVUcnV0aHkoZC52Y2F0ZWdvcnkpLnRvTG93ZXJDYXNlKCksaXRlbV95ZWFyOmVuc3VyZVRydXRoeShkLnllYXIpLnRvTG93ZXJDYXNlKCksaXRlbV9tYWtlOmVuc3VyZVRydXRoeShkLm1ha2UpLnRvTG93ZXJDYXNlKCksaXRlbV9tb2RlbDplbnN1cmVUcnV0aHkoZC5tb2RlbCkudG9Mb3dlckNhc2UoKSxpdGVtX3ZhcmlhbnQ6ZW5zdXJlVHJ1dGh5KGQudmVyc2lvbikudG9Mb3dlckNhc2UoKSxpdGVtX2NvbG9yOmVuc3VyZVRydXRoeShkLmNvbG9yKS50b0xvd2VyQ2FzZSgpLAppdGVtX3R5cGU6ZW5zdXJlVHJ1dGh5KGQuYm9keVR5cGVJRCkudG9Mb3dlckNhc2UoKSxpdGVtX2NhdGVnb3J5OmVuc3VyZVRydXRoeSgiIiksaXRlbV9mdWVsX3R5cGU6ZW5zdXJlVHJ1dGh5KGQudmNhcmJ1cmFudCkudG9Mb3dlckNhc2UoKSxpdGVtX2ludmVudG9yeV9kYXRlOmVuc3VyZVRydXRoeShoKX07IjIxIiE9ayYmIjAiIT1rJiZkMmFzYy5zZXRWZWhpY2xlU3RhdHVzKCJDUE8iKX1lbHNlIGQ9JCgiI2FzY19kaWdpdGFsX2RhdGFfaW5mbyIpLGFzY1RvcENhckRldGFpbHM9e2l0ZW1fY29uZGl0aW9uOiJuZXciLGl0ZW1feWVhcjokKCJpbnB1dFtuYW1lPSd5ZWFyJ10iLGQpLnZhbCgpLGl0ZW1fbWFrZTokKCJpbnB1dFtuYW1lPSdtYWtlJ10iLGQpLnZhbCgpLGl0ZW1fbW9kZWw6ZW5zdXJlVHJ1dGh5KCQoImlucHV0W25hbWU9J21vZGVsJ10iLGQpLnZhbCgpKS50b0xvd2VyQ2FzZSgpLGl0ZW1fdHlwZTokKCJpbnB1dFtuYW1lPSd2ZWhpY2xlQ2F0ZWdvcnknXSIsZCkudmFsKCl9Owpjb25zb2xlLmxvZygiR0E0IGFzY1RvcENhckRldGFpbHMiLGFzY1RvcENhckRldGFpbHMpfQpmdW5jdGlvbiBkMmFzY1Jlc29sdmVQYWdlSWQoZCl7ZD1kLnJlcGxhY2UoLzxcLz9bXj5dKyg+fCQpL2csIiIpO2lmKGQuaW5jbHVkZXMoInNpOnZscyIpKXJldHVybiJzZWFyY2ggaW52ZW50b3J5IjtpZihkLmluY2x1ZGVzKCI6c2k6dmVoaWNsZSBkZXRhaWxzIil8fGQuaW5jbHVkZXMoInZlaGljbGUiKSlyZXR1cm4idmRwIjtpZihkLmluY2x1ZGVzKCJjdXN0b206IikpcmV0dXJuImJsb2ciO2lmKGQuaW5jbHVkZXMoImZpbmFuY2UiKSlyZXR1cm4iY3JlZGl0IjtpZihkLmluY2x1ZGVzKCJzZXJ2aWNlOnJlcXVlc3QgYXBwb2ludG1lbnQiKSlyZXR1cm4icmVxdWVzdCBhcHBvaW50bWVudCI7aWYoZC5pbmNsdWRlcygic2VydmljZTpvcmRlciBwYXJ0cyIpKXJldHVybiJvcmRlciBwYXJ0cyI7aWYoZC5pbmNsdWRlcygiYWJvdXQgdXM6Y29udGFjdCB1cyIpKXJldHVybiJjb250YWN0IHVzIjtpZihkLmluY2x1ZGVzKCJVTktOT1dOIikpe2lmKC9idWlsZC1hbmQtcHJpY2UvLnRlc3Qod2luZG93LmxvY2F0aW9uLnBhdGhuYW1lKXx8Ci9jb25maWd1cmF0aW9uLWV0LXByaXgvLnRlc3Qod2luZG93LmxvY2F0aW9uLnBhdGhuYW1lKSlyZXR1cm4iYnVpbGQgYW5kIHByaWNlIjtpZigvcHJpY2UtbmV3Ly50ZXN0KHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSl8fC9wcml4LW5ldWYvLnRlc3Qod2luZG93LmxvY2F0aW9uLnBhdGhuYW1lKSlyZXR1cm4icHJpY2UgcmVxdWVzdCI7aWYoL2Jyb2NodXJlcy8udGVzdCh3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUpKXJldHVybiJicm9jaHVyZSI7aWYoL2F1dG8tam9icy8udGVzdCh3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUpfHwvZW1wbG9pcy1hdXRvbW9iaWxlLy50ZXN0KHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSkpcmV0dXJuImpvYnMiO2lmKC9vdXJ0ZWFtLy50ZXN0KHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSl8fC9lcXVpcGUvLnRlc3Qod2luZG93LmxvY2F0aW9uLnBhdGhuYW1lKSlyZXR1cm4ib3VyIHRlYW0ifXJldHVybiBkfQpmdW5jdGlvbiBkMmFzY1Jlc29sdmVMZWFkVHlwZShkLGgpe2g9aC50b0xvd2VyQ2FzZSgpO2xldCBrPXt9O2Zvcih2YXIgbCBpbiBkKWtbbC50b0xvd2VyQ2FzZSgpXT1kW2xdO2w9JCgiaHRtbCIpLmF0dHIoImxhbmciKTtkPSIiO2w9ImVuIj09bC50b0xvd2VyQ2FzZSgpfHwiZW5nIj09bC50b0xvd2VyQ2FzZSgpPyJFTkdMSVNIIjoiRlJFTkNIIjt2b2lkIDAhPT1rW2hdJiZ2b2lkIDAhPT1rW2hdW2xdJiYoZD1rW2hdW2xdKTtyZXR1cm4gZH0KZnVuY3Rpb24gRDJBU0MoZCl7ZC5wYWdlSWRPcmc9ZC5wYWdlSWQ7ZC5wYWdlSWQ9ZDJhc2NSZXNvbHZlUGFnZUlkKGQucGFnZUlkKTtkLmRlYWxlcl9uYW1lPSQoIiNoaWRkZW5EZWFsZXJOYW1lIikudmFsKCk7dmFyIGg9e3N0b3JlX25hbWU6ZC5kZWFsZXJfbmFtZS50b0xvd2VyQ2FzZSgpLG9lbV9jb2RlOmQucGFDb2RlLG9lbV9icmFuZDpkLmNsaWVudCxhZmZpbGlhdGlvbjoiIixsYW5ndWFnZTpkLnVzZXJMYW5ndWFnZSxjdXJyZW5jeToiY2FkIixwYWdlX3R5cGU6ZC5wYWdlSWQsaXRlbXM6W10sZXZlbnRzOltdLG1lYXN1cmVtZW50X2lkczpbIkctNkdFWjJXV1QzTCJdLHBsYXRmb3JtX2N1c3RvbToiIn0saz17YXNjX2NsaWNrX3RvX2NhbGw6WyJhLnBob25lLWxpbmsiLCJhLnBob25lLWFjdGlvbiJdLGFzY19jdGFfaW50ZXJhY3Rpb246Ii52LWNhcmQgYTpub3QoLnBob25lLWxpbmspOy5sZWZ0X2JveCBhOyNmb290ZXIgYTsjc2NyYXRjaGFuZHNhdmVfZW1iZWRkZWRfYnRuXzE7I1B1bGxvdXRfQnVpbGQtYW5kLVByaWNlOyNuZXdWZHBGdWxsd2lkdGhWaWRlb0lmcmFtZSIuc3BsaXQoIjsiKSwKYXNjX2N0YV9pbnRlcmFjdGlvbjoiI3Byb21vRGlzY292ZXJCdXR0b24gLmRpdkNhclBheW1lbnRDYWxjdWxhdG9yICNzY3JhdGNoYW5kc2F2ZV9lbWJlZGRlZCAubG9hbkNhbGN1bGF0b3JUcmlnZ2VyIC5vZmZlci1idG4gLmN0UHJvbW8gLnRyYWRlSW5CYXJfYnRuIi5zcGxpdCgiICIpLGFzY19jdGFfaW50ZXJhY3Rpb246WyIubmV3VmRwQWN0aW9ucyBhIiwiLmN0YS10cGwgYSJdLGFzY19jb21tX2VuZ2FnZW1lbnQ6WyIudGV4dC11cy1idG4iXSxhc2NfZm9ybV9lbmdhZ2VtZW50OlsiaW5wdXQiLCJzZWxlY3QiLCJ0ZXh0YXJlYSJdLGFzY19tZWRpYV9pbnRlcmFjdGlvbjpbIiNuZXdWZHBGdWxsd2lkdGhWaWRlb0lmcmFtZSIsImltZyJdLGFzY19tZW51X2ludGVyYWN0aW9uOlsiLnVwX21lbnUgYSJdLGFzY19lbGVtZW50X2NvbmZpZ3VyYXRpb246WyIubGFuZ3VhZ2VCYXIgYSJdfSxsPSExO2NvbnNvbGUubG9nKCJEMkFTQyBMb2FkaW5nLi4uIixkKTt2YXIgZz1uZXcgZnVuY3Rpb24oKXt2YXIgZT0KdGhpcztlLnNldFZlaGljbGVTdGF0dXM9ZnVuY3Rpb24oYil7bGV0IGE9JCgiI2FzY19kaWdpdGFsX2RhdGFfaW5mbyBpbnB1dFtuYW1lPXZlaGljbGVTdGF0dXNdIik7aWYoIiIhPSQoIiNhc2NfZGlnaXRhbF9kYXRhX2luZm8gaW5wdXRbbmFtZT0nbWFrZSddIikudmFsKCkpe2xldCBjPXdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZS50b0xvd2VyQ2FzZSgpO2EudmFsKC91c2VkLy50ZXN0KGMpfHwvb2NjYXNpb24vLnRlc3QoYyk\/IlVzZWQiOiJOZXciKX0hMSE9PWImJmEudmFsKGIpfTtlLnNldERpZ2l0YWxEYXRhPWZ1bmN0aW9uKGIsYSl7bGV0IGM9ZS5hZGRFdmVudChiLGEpO2lmKCExPT09YylyZXR1cm4hMTt2b2lkIDAhPT1jLmZvcm1fbmFtZSYmKGMuZm9ybV9uYW1lPWMuZm9ybV9uYW1lLnJlcGxhY2UoIm1lbnN1YWxpdD9zIiwibWVuc3VhbGl0ZXMiKSxjLmZvcm1fbmFtZT1jLmZvcm1fbmFtZS5yZXBsYWNlKCJ2P2hpY3VsZSIsInZlaGljdWxlIiksYy5mb3JtX25hbWU9Yy5mb3JtX25hbWUucmVwbGFjZSgiP3RhcGVzIiwKImV0YXBlcyIpLGMuZm9ybV9uYW1lPSJEMkMgIitjLmZvcm1fbmFtZSk7dm9pZCAwIT09Yy5mb3JtX2xhbmcmJihjLmZvcm1fbGFuZz1lLnN0YW5kYXJkaXplRm9ybUxhbmcoYy5mb3JtX2xhbmcpKTtoLmV2ZW50cy51bnNoaWZ0KEpTT04uc3RyaW5naWZ5KHtuYW1lOmIscGFyYW1zOmN9KSk7InZkcCI9PWMucGFnZV90eXBlJiYoYy5wYWdlX3R5cGU9Iml0ZW0iKTsic2hvd3Jvb20iPT1jLnBhZ2VfdHlwZSYmKGMucGFnZV90eXBlPSJpdGVtIik7InNlYXJjaCBpbnZlbnRvcnkiPT1jLnBhZ2VfdHlwZSYmKGMucGFnZV90eXBlPSJpdGVtbGlzdCIpO2xldCBmPWUuZ2V0RXZlbnRUeXBlKGIpO2UucmVwb3J0KGYsYixjLGgpOyJhc2NfZm9ybV9zdWJtaXNzaW9uIj09YiYmKGUuc2V0RGlnaXRhbERhdGEoImFzY19mb3JtX3N1Ym1pc3Npb25fc2FsZXMiLGEpLGUuc2V0RGlnaXRhbERhdGEoIkQyQ19Gb3JtX3N1Ym1pc3Npb25fc2FsZXMiLGEpLGUuc2V0RGlnaXRhbERhdGEoIkQyQ19MZWFkcyIsCmEpLHNldFRpbWVvdXQoZnVuY3Rpb24oKXthc2NMYXN0Q3RhQ2xpY2s9ITF9LDEyNTApKTsiYXNjX2NvbW1fc3VibWlzc2lvbiI9PWImJmUuc2V0RGlnaXRhbERhdGEoImFzY19jb21tX3N1Ym1pc3Npb25fc2FsZXMiLGEpOyJhc2NfZm9ybV9lbmdhZ2VtZW50Ij09YiYmITE9PT1hc2NDb21tU3RhcnRGaXJlZCYmYSBpbnN0YW5jZW9mIGpRdWVyeSYmMDxhLmNsb3Nlc3QoIiNTbGlkZVdpZGdldEZvcm0iKS5sZW5ndGgmJihhc2NDb21tU3RhcnRGaXJlZD0hMCxlLnNldERpZ2l0YWxEYXRhKCJhc2NfY29tbV9zdGFydCIsYSkpfTtlLmdldEV2ZW50VHlwZT1mdW5jdGlvbihiKXtsZXQgYT0iZW5nYWdlbWVudCI7c3dpdGNoKGIpe2Nhc2UgImFzY19mb3JtX3N1Ym1pc3Npb24iOmNhc2UgImFzY19mb3JtX3N1Ym1pc3Npb25fcGFydHMiOmNhc2UgImFzY19mb3JtX3N1Ym1pc3Npb25fc2FsZXNfYXBwdCI6Y2FzZSAiYXNjX2Zvcm1fc3VibWlzc2lvbl9zYWxlcyI6Y2FzZSAiYXNjX2Zvcm1fc3VibWlzc2lvbl9zZXJ2aWNlIjphPQoiY29udmVyc2lvbiJ9cmV0dXJuIGF9O2UuYmluZEVsZW1lbnRzPWZ1bmN0aW9uKGIsYSl7JC5lYWNoKGEsZnVuY3Rpb24oYyxmKXskKGYpLmVhY2goZnVuY3Rpb24oKXtjb25zdCBtPSQodGhpcyksbj0iYXNjX2Zvcm1fZW5nYWdlbWVudCI9PWI\/ImJsdXIiOiJjbGljayI7JCh0aGlzKS5vbihuLGZ1bmN0aW9uKCl7Zy5zZXREaWdpdGFsRGF0YShiLG0pfSl9KX0pfTtlLmFkZEV2ZW50PWZ1bmN0aW9uKGIsYSl7dmFyIGM9e2V2ZW50X293bmVyOiJkMmMiLHBhZ2VfdHlwZTpkLnBhZ2VJZCxwYWdlX3VybDp3aW5kb3cubG9jYXRpb24uaHJlZixldmVudF9sYWJlbDpiLGV2ZW50X2NhdGVnb3J5OiQoIiNhc2NfZGlnaXRhbF9kYXRhX2luZm8gaW5wdXRbbmFtZT12ZWhpY2xlU3RhdHVzXSIpLnZhbCgpfSxmPSExIT09YXNjTGFzdEN0YUNsaWNrP2UuQ3RhVGV4dFBhcnNlcihhc2NMYXN0Q3RhQ2xpY2spOiIiO3N3aXRjaChiKXtjYXNlICJhc2NfcGFnZXZpZXciOmJyZWFrO2Nhc2UgImFzY19jbGlja190b19jYWxsIjpmPQphLmhhc0NsYXNzKCJwaG9uZS1saW5rIik\/YS50ZXh0KCk6YS5hdHRyKCJocmVmIik7Zj1mLnJlcGxhY2UoL1teMC05XCtdL2csIiIpO2M9T2JqZWN0LmFzc2lnbih7fSxjLHtjb21tX3Bob25lX251bWJlcjpmLGRlcGFydG1lbnQ6ZS5nZXREMmNEZXBhcnRtZW50KGEpLGFmZmlsaWF0aW9uOiIifSk7YnJlYWs7Y2FzZSAiYXNjX2N0YV9pbnRlcmFjdGlvbiI6Zj1lLkN0YVRleHRQYXJzZXIoYSk7ZS5pc0N0YUNsaWNrKGEpJiYoYXNjTGFzdEN0YUNsaWNrPWEpO2M9T2JqZWN0LmFzc2lnbih7fSxjLHtlbGVtZW50X3RleHQ6ZixlbGVtZW50X29yZGVyOiIiLGVsZW1lbnRfY29sb3I6IiIsZWxlbWVudF90eXBlOmUuZ2V0RWxlbWVudFR5cGUoYSksZXZlbnRfYWN0aW9uOiIiLGV2ZW5fYWN0aW9uX3Jlc3VsdDphLmF0dHIoImhyZWYiKT8icmVkaXJlY3QiOiJwb3B1cCIsbGlua191cmw6YS5hdHRyKCJocmVmIik\/YS5hdHRyKCJocmVmIik6IiJ9KTticmVhaztjYXNlICJhc2NfZm9ybV9lbmdhZ2VtZW50IjpmPQplLmdldExlYWRUeXBlRm9ybU5hbWUoYSk7aWYoITE9PT1mKXJldHVybiExO2xldCBtPWUuYXNjVGV4dFJlcGxhY2VyKGEudmFsKCkpLG49ZS5nZXREMmNEZXBhcnRtZW50KGEpO2M9T2JqZWN0LmFzc2lnbih7fSxjLHtlbGVtZW50X3RleHQ6bSxjb21tX3R5cGU6ImZvcm0iLGNvbW1fc3RhdHVzOiJzdGFydCIsZGVwYXJ0bWVudDpuLGZvcm1fbmFtZTpmLGZvcm1fdHlwZTplLmdldEZvcm1UeXBlKGEpLGZvcm1fbGFuZzokKCJpbnB1dFtuYW1lPSdsYW5nJ10iKS52YWwoKSxmb3JtX2RlcHQ6bn0pO2JyZWFrO2Nhc2UgImFzY19mb3JtX3N1Ym1pc3Npb24iOmM9T2JqZWN0LmFzc2lnbih7fSxjLHtjb21tX3R5cGU6ImZvcm0iLGNvbW1fb3V0Y29tZToiY2xvc2UiLHN1Ym1pc3Npb25faWQ6IiIsZWxlbWVudF90ZXh0OiJzdWJtaXQiLGN0YV90ZXh0OmYsY3VzdG9tZXJfcGhvbmU6YS5jb25maXJtX3Bob25lX251bWJlcixjdXN0b21lcl9lbWFpbDphLmNvbmZpcm1fZW1haWwsZGVwYXJ0bWVudDplLmdldEQyY0RlcGFydG1lbnQoYSksCmZvcm1fbmFtZTphLmxlYWRUeXBlLGZvcm1fdHlwZTplLmdldEZvcm1UeXBlKGEpLGZvcm1fbGFuZzokKCJpbnB1dFtuYW1lPSdsYW5nJ10iKS52YWwoKSxmb3JtX2RlcHQ6ZS5nZXREMmNEZXBhcnRtZW50KGEpfSk7YnJlYWs7Y2FzZSAiYXNjX2Zvcm1fc3VibWlzc2lvbl9wYXJ0cyI6Y2FzZSAiYXNjX2Zvcm1fc3VibWlzc2lvbl9zYWxlcyI6Y2FzZSAiYXNjX2Zvcm1fc3VibWlzc2lvbl9zYWxlc19hcHB0IjpjYXNlICJhc2NfZm9ybV9zdWJtaXNzaW9uX3NlcnZpY2UiOmNhc2UgImFzY19mb3JtX3N1Ym1pc3Npb25fc2VydmljZV9hcHB0IjpjYXNlICJEMkNfTGVhZHMiOmEuY29uZmlybV9waG9uZV9udW1iZXI9dm9pZCAwPT09YS5jb25maXJtX3Bob25lX251bWJlcj8iIjphLmNvbmZpcm1fcGhvbmVfbnVtYmVyO2EuY29uZmlybV9lbWFpbD12b2lkIDA9PT1hLmNvbmZpcm1fZW1haWw\/IiI6YS5jb25maXJtX2VtYWlsO2M9T2JqZWN0LmFzc2lnbih7fSxjLHtjb21tX3R5cGU6ImZvcm0iLApjb21tX291dGNvbWU6ZS5nZXRGb3JtT3V0Y29tZShiKSxzdWJtaXNzaW9uX2lkOiIiLGVsZW1lbnRfdGV4dDplLmFzY1RleHRSZXBsYWNlcigic3VibWl0IiksY3RhX3RleHQ6ZixjdXN0b21lcl9waG9uZTphLmNvbmZpcm1fcGhvbmVfbnVtYmVyLGN1c3RvbWVyX2VtYWlsOmEuY29uZmlybV9lbWFpbCxkZXBhcnRtZW50OmUuZ2V0RDJjRGVwYXJ0bWVudChhKSxmb3JtX25hbWU6YS5sZWFkVHlwZSxmb3JtX3R5cGU6ZS5nZXRGb3JtVHlwZShhKSxmb3JtX2xhbmc6JCgiaW5wdXRbbmFtZT0nbGFuZyddIikudmFsKCksZm9ybV9kZXB0OmUuZ2V0RDJjRGVwYXJ0bWVudChhKX0pO2JyZWFrO2Nhc2UgIkQyQ19Gb3JtX3N1Ym1pc3Npb25fc2FsZXMiOmM9e2Zvcm1fZmlsbGVkOiJZZXMifTticmVhaztjYXNlICJhc2NfZWxlbWVudF9jb25maWd1cmF0aW9uIjpjPXZvaWQgMCE9PWEuZXZlbnRfYWN0aW9uP09iamVjdC5hc3NpZ24oe30sYyx7ZXZlbnRfYWN0aW9uX3Jlc3VsdDphLmV2ZW50X2FjdGlvbl9yZXN1bHQsCmV2ZW50X2FjdGlvbjphLmV2ZW50X2FjdGlvbixwcm9kdWN0X25hbWU6IiIsZWxlbWVudF9zdGF0ZTphLmZpbHRlckluZm8uc3RhdGUsZWxlbWVudF90eXBlOiJzZWFyY2giPT1hLmV2ZW50X2FjdGlvbj8iZmlsdGVyIjoic29ydCIsZWxlbWVudF9zdWJ0eXBlOmEuZmlsdGVySW5mby50eXBlLGVsZW1lbnRfdGl0bGU6YS5maWx0ZXJJbmZvLmxhYmVsLGVsZW1lbnRfdGV4dDphLmZpbHRlckluZm8udGl0bGUsZWxlbWVudF92YWx1ZTphLmZpbHRlckluZm8udmFsdWUsZWxlbWVudF9jb2xvcjoiIixlbGVtZW50X3Bvc2l0aW9uOiIiLGVsZW1lbnRfb3JkZXI6IiJ9KTpPYmplY3QuYXNzaWduKHt9LGMse2V2ZW50X2FjdGlvbl9yZXN1bHQ6Imxhbmd1YWdlIixldmVudF9hY3Rpb246ImNsaWNrIixwcm9kdWN0X25hbWU6IiIsZWxlbWVudF9zdGF0ZTowLGVsZW1lbnRfdHlwZToibGFuZ3VhZ2UgdG9nZ2xlLCIsZWxlbWVudF9zdWJ0eXBlOiJidXR0b24iLGVsZW1lbnRfdGl0bGU6ZS5hc2NUZXh0UmVwbGFjZXIoYS50ZXh0KCkpLAplbGVtZW50X3RleHQ6ZS5hc2NUZXh0UmVwbGFjZXIoYS50ZXh0KCkpLGVsZW1lbnRfdmFsdWU6ZS5hc2NUZXh0UmVwbGFjZXIoYS50ZXh0KCkpLGVsZW1lbnRfY29sb3I6IiIsZWxlbWVudF9wb3NpdGlvbjoiIixlbGVtZW50X29yZGVyOiIifSk7YnJlYWs7Y2FzZSAiYXNjX21lZGlhX2ludGVyYWN0aW9uIjpjPU9iamVjdC5hc3NpZ24oe30sYyx7ZXZlbnRfYWN0aW9uX3Jlc3VsdDoiIixhZmZpbGlhdGlvbjoiIixtZWRpYV90eXBlOiIiLGxpbmtfdXJsOiIiLGNyZWF0aXZlX25hbWU6IiJ9KTticmVhaztjYXNlICJhc2NfbWVudV9pbnRlcmFjdGlvbiI6Yz1PYmplY3QuYXNzaWduKHt9LGMse2VsZW1lbnRfdGV4dDplLmFzY1RleHRSZXBsYWNlcihhLnRleHQoKSksZWxlbWVudF9zdWJ0eXBlOiJtZWdhX21lbnUiLGVsZW1lbnRfdHlwZTphLmNsb3Nlc3QoImxpIikuYXR0cigiZGF0YS1pZCIpLGV2ZW50X2FjdGlvbjoiY2xpY2sifSk7YnJlYWs7Y2FzZSAiYXNjX3JldGFpbF9wcm9jZXNzIjpjPQpPYmplY3QuYXNzaWduKHt9LGMse2Zsb3dfbmFtZToiZmluYW5jZSIsZWxlbWVudF90aXRsZToiIixmbG93X291dGNvbWU6InByb2NlZWQiLGl0ZW1fcGF5bWVudDoiZmluYW5jZSIsZmxvd19zdGFnZToiIn0pO2JyZWFrO2Nhc2UgImFzY19zcGVjaWFsX29mZmVyIjpjPU9iamVjdC5hc3NpZ24oe30sYyx7cHJvbW90aW9uX25hbWU6JCgiaDI6Zmlyc3QtY2hpbGQiLGEpLmxlbmd0aD9lLmFzY1RleHRSZXBsYWNlcigkKCJoMjpmaXJzdC1jaGlsZCIsYSkudGV4dCgpKToiRGVhbGVyIFByb21vIixkZXBhcnRtZW50OmUuZ2V0RDJjRGVwYXJ0bWVudChhKSxwcm9kdWN0X25hbWU6IiIsZWxlbWVudF9wb3NpdGlvbjoiZmxvYXRpbmciLGZsb3dfb3V0Y29tZToic3RhcnQifSk7YnJlYWs7Y2FzZSAiYXNjX2NvbW1fZW5nYWdlbWVudCI6Yz1PYmplY3QuYXNzaWduKHt9LGMse2NvbW1fc3RhdHVzOiJzdGFydCIsY29tbV90eXBlOiJzbXMiLHByb2R1Y3RfbmFtZToiZDJjX3RleHQiLGV2ZW50X293bmVyOiJkMmMifSk7CmJyZWFrO2Nhc2UgImFzY19jb21tX3N1Ym1pc3Npb24iOmM9T2JqZWN0LmFzc2lnbih7fSxjLHtjb21tX3N0YXR1czoiY3JtX3VwZGF0ZSIsY29tbV90eXBlOiJzbXMiLHByb2R1Y3RfbmFtZToiZDJjX3RleHQiLGV2ZW50X293bmVyOiJkMmMiLGRlcGFydG1lbnQ6ZS5nZXREMmNEZXBhcnRtZW50KGEpfSk7YnJlYWs7Y2FzZSAiYXNjX2NvbW1fc3RhcnQiOmM9T2JqZWN0LmFzc2lnbih7fSxjLHtjb21tX3N0YXR1czoiZW5nYWdlIixjb21tX3R5cGU6InNtcyIscHJvZHVjdF9uYW1lOiJkMmNfdGV4dCIsZXZlbnRfb3duZXI6ImQyYyJ9KTticmVhaztjYXNlICJhc2NfY29tbV9zdWJtaXNzaW9uX3NhbGVzIjpjPU9iamVjdC5hc3NpZ24oe30sYyx7Y29tbV90eXBlOiJjaGF0IixhZmZpbGlhdGlvbjoibmF0aXZlIixkZXBhcnRtZW50OmUuZ2V0RDJjRGVwYXJ0bWVudChhKSxhZmZpbGlhdGlvbl9pZDoibXVsdGktdXNlciIsY29tbV9zdGF0dXM6ImNybV91cGRhdGUiLGVsZW1lbnRfcG9zaXRpb246InBvcC11cCJ9KTsKYnJlYWs7ZGVmYXVsdDpyZXR1cm4gY29uc29sZS5sb2coIkQyQVNDIEVSUk9SKENPREU6MDAxKSIsYixhKSwhMX0hMSE9PWFzY1RvcENhckRldGFpbHMmJiJEMkNfRm9ybV9zdWJtaXNzaW9uX3NhbGVzIiE9YiYmKGM9T2JqZWN0LmFzc2lnbih7fSxjLGFzY1RvcENhckRldGFpbHMpKTtjb25zb2xlLmxvZygiR0E0IEZpbmFsIERpZ2l0YWwgRGF0YSIsYyk7cmV0dXJuIGN9O2UuaXNDdGFDbGljaz1mdW5jdGlvbihiKXtsZXQgYT0hMTtiIGluc3RhbmNlb2YgalF1ZXJ5JiYoMDxiLmNsb3Nlc3QoIi5uZXdWZHBBY3Rpb25zIikubGVuZ3RoJiYoYT0hMCksMDxiLmNsb3Nlc3QoIi5jdGEtdHBsIikubGVuZ3RoJiYoYT0hMCksInByb21vRGlzY292ZXJCdXR0b24iPT1iLmF0dHIoImlkIikmJihhPSEwKSxiLmhhc0NsYXNzKCJkaXZDYXJQYXltZW50Q2FsY3VsYXRvciIpJiYoYT0hMCksMDxiLmNsb3Nlc3QoIi5kaXZDYXJQYXltZW50Q2FsY3VsYXRvciIpLmxlbmd0aCYmKGE9ITApLDA8Yi5jbG9zZXN0KCIjc2NyYXRjaGFuZHNhdmVfZW1iZWRkZWQiKS5sZW5ndGgmJgooYT0hMCksInNjcmF0Y2hhbmRzYXZlX2VtYmVkZGVkIj09Yi5hdHRyKCJpZCIpJiYoYT0hMCksYi5oYXNDbGFzcygibG9hbkNhbGN1bGF0b3JUcmlnZ2VyIikmJihhPSEwKSwwPGIuY2xvc2VzdCgiLmxvYW5DYWxjdWxhdG9yVHJpZ2dlciIpLmxlbmd0aCYmKGE9ITApLGIuaGFzQ2xhc3MoImN0UHJvbW8iKSYmKGE9ITApLDA8Yi5jbG9zZXN0KCIuY3RQcm9tbyIpLmxlbmd0aCYmKGE9ITApLGIuaGFzQ2xhc3MoIm9mZmVyLWJ0biIpJiYoYT0hMCksMDxiLmNsb3Nlc3QoIi5vZmZlci1idG4iKS5sZW5ndGgmJihhPSEwKSxiLmhhc0NsYXNzKCJ0cmFkZUluQmFyX2J0biIpJiYoYT0hMCksMDxiLmNsb3Nlc3QoIi50cmFkZUluQmFyX2J0biIpLmxlbmd0aCYmKGE9ITApLCJUUkFERUlOIj09Yi5hdHRyKCJkYXRhLWlkIikmJihhPSEwKSk7cmV0dXJuIGF9O2Uuc3RhbmRhcmRpemVGb3JtTGFuZz1mdW5jdGlvbihiKXt2b2lkIDA9PT1iJiYkKCJodG1sIikuYXR0cigibGFuZyIpO2I9Yi50b0xvd2VyQ2FzZSgpOwoiZW5nIj09YiYmKGI9ImVuIik7ImVuZ2xpc2giPT1iJiYoYj0iZW4iKTsiZnJuIj09YiYmKGI9ImZyIik7ImZyZW5jaCI9PWImJihiPSJmciIpOyJlbiIhPWImJiJmciIhPWImJihiPSJlbiIpO3JldHVybiBifTtlLkN0YVRleHRQYXJzZXI9ZnVuY3Rpb24oYil7ZC5wYWdlSWQudG9Mb3dlckNhc2UoKTtsZXQgYT13aW5kb3cubG9jYXRpb24ucGF0aG5hbWUudG9Mb3dlckNhc2UoKSxjPSIiO2lmKC9uZXdcL2ludmVudG9yeVwvc2VhcmNoLy50ZXN0KGEpfHwvbmV1ZnNcL2ludmVudGFpcmVcL3JlY2hlcmNoZS8udGVzdChhKSljKz0iRDJDIENUQU0gLSBOZXcgSW52ZW50b3J5IFNSUDogIjtlbHNlIGlmKC9uZXdcL2ludmVudG9yeS8udGVzdChhKXx8L25ldWZzXC9pbnZlbnRhaXJlLy50ZXN0KGEpKWMrPSJEMkMgQ1RBTSAtIE5ldyBJbnZlbnRvcnkgVkRQOiAiO2Vsc2UgaWYoL25ldy8udGVzdChhKXx8L25ldWZzLy50ZXN0KGEpKWMrPSJEMkMgQ1RBTSAtIE5ldyBTaG93Um9vbSBWRFA6ICI7CmVsc2UgaWYoL3VzZWQvLnRlc3QoYSl8fC9vY2Nhc2lvbi8udGVzdChhKSljKz0iRDJDIENUQU0gLSBVc2VkIEludmVudG9yeSBWRFA6ICI7cmV0dXJuIGMrZS5hc2NUZXh0UmVwbGFjZXIoYi50ZXh0KCkpfTtlLmdldExlYWRUeXBlRm9ybU5hbWU9ZnVuY3Rpb24oYil7bGV0IGE9MDxiLmNsb3Nlc3QoImZvcm0iKS5sZW5ndGg\/Yi5jbG9zZXN0KCJmb3JtIikuYXR0cigiaWQiKTpiLmF0dHIoImlkIiksYz0hMTtkLnBhZ2VJZC5pbmNsdWRlcygib3JkZXIgcGFydHMiKSYmKGM9IlBhcnRzUmVxdWVzdCIpO2QucGFnZUlkLmluY2x1ZGVzKCJ0ZXN0IGRyaXZlIikmJihjPSJUZXN0RHJpdmUiKTtkLnBhZ2VJZC5pbmNsdWRlcygicHJpY2UgcmVxdWVzdCIpJiYoYz0iUHJpY2VSZXF1ZXN0Iik7ZC5wYWdlSWQuaW5jbHVkZXMoImJyb2NodXJlIikmJihjPSJCcm9jaHVyZXNSZXF1ZXN0Iik7ZC5wYWdlSWQuaW5jbHVkZXMoInJlcXVlc3QgYXBwb2ludG1lbnQiKSYmKGM9IlNlcnZpY2VSZXF1ZXN0Iik7CmQucGFnZUlkLmluY2x1ZGVzKCJ0aXJlcyIpJiYoYz0iVGlyZXNSZXF1ZXN0Iik7ZC5wYWdlSWQuaW5jbHVkZXMoImJvZHkgc2hvcCIpJiYoYz0iQm9keVNob3AiKTtkLnBhZ2VJZC5pbmNsdWRlcygicmVjYWxsIikmJihjPSJSZWNhbGxzIik7aWYoYiBpbnN0YW5jZW9mIGpRdWVyeSYmKDA8Yi5jbG9zZXN0KCIuZGl2U3BhbkZpbHRlcnMiKS5sZW5ndGh8fDA8Yi5jbG9zZXN0KCIjYmFubmVyX3NlYXJjaF9iYXJfY29udGFpbmVyIikubGVuZ3RoKSlyZXR1cm4hMTtiPWUuZm9ybURhdGFCeUlkKGIpO3JldHVybiExIT09Yj9iLmZvcm1OYW1lOiExIT09Yz9kMmFzY1Jlc29sdmVMZWFkVHlwZShkLmZvcm1NYXAsYyk6IlVOS05PV046ICIrYX07ZS5mb3JtRGF0YUJ5SWQ9ZnVuY3Rpb24oYil7aWYoYiBpbnN0YW5jZW9mIGpRdWVyeSl7bGV0IGE9MDxiLmNsb3Nlc3QoImZvcm0iKS5sZW5ndGg\/Yi5jbG9zZXN0KCJmb3JtIikuYXR0cigiaWQiKTpiLmF0dHIoImlkIik7dm9pZCAwPT09YSYmKDA8CmIuY2xvc2VzdCgiI2NvbnRhY3Rwb3B1cCIpLmxlbmd0aCYmKGE9IlJlcXVlc3QgZm9yIGNvbnRhY3QiKSwwPGIuY2xvc2VzdCgiLmNyZWRpdFNjb3JlSW5wdXQiKS5sZW5ndGgmJihhPSJjcmVkaXRTY29yZSIpLDA8Yi5jbG9zZXN0KCIjc2NyYXRjaEFuZFNhdmVQb3B1cENvbnRhaW5lcl9ibnAiKS5sZW5ndGgmJihhPSJSZWJhdGVDb3Vwb25OZXdCTlAiKSwwPGIuY2xvc2VzdCgiLnNjcmF0Y2hhbmRzYXZlX3RleHQiKS5sZW5ndGgmJihhPSJSZWJhdGVDb3Vwb24iKSk7aWYoZC5wYWdlSWQuaW5jbHVkZXMoInNob3dyb29tOmNvbXBhcmUiKSYmdm9pZCAwIT09YSYmYS5pbmNsdWRlcygiZmVhdHVyZWRQcm9kdWN0XyIpKXJldHVybntmb3JtVHlwZToicmVzZWFyY2giLGZvcm1OYW1lOiJDb21wYXJlRm9ybSJ9O2lmKDA8Yi5jbG9zZXN0KCIjbXVsdGlmb3JtX2VtYmVkZGVkIikubGVuZ3RoJiYwPGIuY2xvc2VzdCgiI211bHRpZm9ybV9lbWJlZGRlZCIpLmZpbmQoIi5tdWx0aWZvcm1fZW1iZWRkZWRfc3RlcDEiKS5sZW5ndGgpcmV0dXJue2Zvcm1UeXBlOiJjb25zdW1lcl9jb250YWN0IiwKZm9ybU5hbWU6IkRpc2NvdmVyT2ZmZXIifTtzd2l0Y2goYSl7Y2FzZSAibWluaWZvcm0iOmNhc2UgImZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0iOnJldHVybntmb3JtVHlwZToiZmluYW5jZV9jcmVkaXQiLGZvcm1OYW1lOiJDcmVkaXRNdWx0aXN0ZXBSZXF1ZXN0In07Y2FzZSAibG9hbi1mb3JtIjpyZXR1cm57Zm9ybVR5cGU6ImZpbmFuY2VfY3JlZGl0Iixmb3JtTmFtZToiUHJpY2VSZXF1ZXN0In07Y2FzZSAiZm9ybURlYWxlckFwcG9pbnRtZW50IjpyZXR1cm57Zm9ybVR5cGU6ImNvbnN1bWVyX2NvbnRhY3QiLGZvcm1OYW1lOiJEZWFsZXJBcHBvaW50bWVudCJ9O2Nhc2UgIlNsaWRlV2lkZ2V0Rm9ybSI6cmV0dXJue2Zvcm1UeXBlOiJjb25zdW1lcl9jb250YWN0Iixmb3JtTmFtZToiU2xpZGVXaWRnZXRGb3JtIn07Y2FzZSAiY3JlZGl0U2NvcmUiOnJldHVybntmb3JtVHlwZToiZmluYW5jZV9jcmVkaXQiLGZvcm1OYW1lOiJDcmVkaXRSZXF1ZXN0X1Nob3J0In07Y2FzZSAiUmViYXRlQ291cG9uTmV3Qk5QIjpyZXR1cm57Zm9ybVR5cGU6InByZS1vcmRlciIsCmZvcm1OYW1lOiJSZWJhdGVDb3Vwb25OZXdCTlAifTtjYXNlICJiYW5uZXJfc2VhcmNoX2Jhcl9zZWxlY3RfYm9keSI6cmV0dXJue2Zvcm1UeXBlOiJjb25zdW1lcl9jb250YWN0Iixmb3JtTmFtZToiQmFubmVyRm9ybSJ9O2Nhc2UgInBheW1lbnRDYWxjdWxhdG9ySW50ZXJ2YWwiOmNhc2UgInBheW1lbnRDYWxjdWxhdG9yVHJpbVNlbGVjdCI6Y2FzZSAicGF5bWVudENhbGN1bGF0b3JLbUFsbG93YW5jZSI6Y2FzZSAicGF5bWVudENhbGN1bGF0b3JEb3duUGF5bWVudCI6cmV0dXJue2Zvcm1UeXBlOiJmaW5hbmNlX2NyZWRpdCIsZm9ybU5hbWU6Ik1vbnRobHlQYXltZW50cyJ9O2Nhc2UgImNvbnRhY3RfZm9ybSI6Y2FzZSAiY29udGFjdF9mb3JtMiI6Y2FzZSAiY29udGFjdF9mb3JtMyI6Y2FzZSAiUmVxdWVzdCBmb3IgY29udGFjdCI6cmV0dXJue2Zvcm1UeXBlOiJjb25zdW1lcl9jb250YWN0Iixmb3JtTmFtZToiQ29udGFjdFJlcXVlc3QifTtjYXNlICJxdWlja0VtYWlsRm9ybSI6Y2FzZSAibWFpbEV4cHJlc3NSZXF1ZXN0IjpyZXR1cm57Zm9ybVR5cGU6ImNvbnN1bWVyX2NvbnRhY3QiLApmb3JtTmFtZToiUXVpY2tFbWFpbCJ9O2Nhc2UgInRyYWRpbk1ha2UiOmNhc2UgInRyYWRpblllYXIiOmNhc2UgInRyYWRpbk1vZGVsIjpjYXNlICJ0cmFkaW5UcmltIjpjYXNlICJ0cmFkZUluQmFyUG9wdXBGb3JtIjpjYXNlICJTZWxsQ2FyRm9ybSI6cmV0dXJue2Zvcm1UeXBlOiJyZXNlYXJjaCIsZm9ybU5hbWU6IlByaWNlVmVoaWNsZSJ9fWlmKDA8Yi5jbG9zZXN0KCIuc2NyYXRjaGJvZHkiKS5sZW5ndGh8fDA8Yi5jbG9zZXN0KCIuc2NyYXRjaGJvZHkxIikubGVuZ3RofHwwPGIuY2xvc2VzdCgiLnNjcmF0Y2hib2R5MiIpLmxlbmd0aHx8MDxiLmNsb3Nlc3QoIi5zY3JhdGNoYm9keTMiKS5sZW5ndGgpcmV0dXJue2Zvcm1UeXBlOiJjb25zdW1lcl9jb250YWN0Iixmb3JtTmFtZToiUmViYXRlQ291cG9uTmV3In07aWYoMDxiLmNsb3Nlc3QoIiNtb250aGx5UGF5bWVudHNQb3B1cENvbnRhaW5lciIpLmxlbmd0aClyZXR1cm57Zm9ybVR5cGU6ImZpbmFuY2VfY3JlZGl0Iixmb3JtTmFtZToiTW9udGhseVBheW1lbnRzIn19cmV0dXJuITF9OwplLmNvbW1TdWJEYXRhUGFyc2VyPWZ1bmN0aW9uKGIsYSl7bGV0IGM9e2Zvcm1fbmFtZToiIixmb3JtX3R5cGU6IiIsZm9ybV9kZXB0OiIiLGZvcm1fbGFuZzoiIn07L2FzY19jb21tX3N1Ym1pc3Npb24vLnRlc3QoYikmJiJTbGlkZVdpZGdldEZvcm0iPT1hLmNsb3Nlc3QoImZvcm0iKS5hdHRyKCJpZCIpJiYoYy5mb3JtX25hbWU9IkxlYWQ6IENoYXQgU3VibWlzc2lvbiIpO3JldHVybiBjfTtlLmFzY1RleHRSZXBsYWNlcj1mdW5jdGlvbihiKXtiPWIucmVwbGFjZSgvKFxyXG58XG58XHJ8XHQpL2dtLCIiKTtiPWIucmVwbGFjZSgvPFwvP1tePl0rKD58JCkvZywiIik7cmV0dXJuIGI9Yi50cmltKCl9O2UuaGFzaFRleHQ9ZnVuY3Rpb24oYil7Yj0obmV3IFRleHRFbmNvZGVyKS5lbmNvZGUoYi50cmltKCkudG9Mb3dlckNhc2UoKSk7cmV0dXJuIGNyeXB0by5zdWJ0bGUuZGlnZXN0KCJTSEEtMjU2IixiKS50aGVuKGE9PkFycmF5LmZyb20obmV3IFVpbnQ4QXJyYXkoYSkpLm1hcChjPT4KYy50b1N0cmluZygxNikucGFkU3RhcnQoMiwiMCIpKS5qb2luKCIiKSl9O2UuZ2V0Rm9ybU91dGNvbWU9ZnVuY3Rpb24oYil7c3dpdGNoKGIpe2Nhc2UgImFzY19mb3JtX3N1Ym1pc3Npb25fcGFydHMiOmNhc2UgImFzY19mb3JtX3N1Ym1pc3Npb25fc2FsZXMiOmNhc2UgImFzY19mb3JtX3N1Ym1pc3Npb25fc2VydmljZSI6Y2FzZSAiRDJDX0xlYWRzIjpyZXR1cm4iY3JtX3VwZGF0ZSI7Y2FzZSAiYXNjX2Zvcm1fc3VibWlzc2lvbl9zYWxlc19hcHB0IjpjYXNlICJhc2NfZm9ybV9zdWJtaXNzaW9uX3NlcnZpY2VfYXBwdCI6cmV0dXJuImFwcHRfYm9va2VkIn19O2UuZ2V0RDJjRGVwYXJ0bWVudD1mdW5jdGlvbihiKXtsZXQgYT1kLnBhZ2VJZC50b0xvd2VyQ2FzZSgpLGM9d2luZG93LmxvY2F0aW9uLnBhdGhuYW1lLnRvTG93ZXJDYXNlKCksZj0iT1RIRVIiOy9uZXVmcy8udGVzdChjKSYmKGY9Ik5FVyIpOy9uZXcvLnRlc3QoYykmJihmPSJORVciKTsvb2NjYXNpb24vLnRlc3QoYykmJgooZj0iVVNFRCIpOy91c2VkLy50ZXN0KGMpJiYoZj0iVVNFRCIpO2EuaW5jbHVkZXMoImZpbmFuY2UiKSYmKGY9IkZJTkFOQ0UiKTthLmluY2x1ZGVzKCJyZXF1ZXN0IGFwcG9pbnRtZW50IikmJihmPSJTRVJWSUNFIik7YS5pbmNsdWRlcygicGFydHMiKSYmKGY9IlNFUlZJQ0UiKTthLmluY2x1ZGVzKCJ0aXJlcyIpJiYoZj0iU0VSVklDRSIpO2EuaW5jbHVkZXMoImJvZHkgc2hvcCIpJiYoZj0iU0VSVklDRSIpO2EuaW5jbHVkZXMoImZpbmFuY2UgZGVwYXJ0bWVudCIpJiYoZj0iRklOQU5DRSIpO2EuaW5jbHVkZXMoImNyZWRpdCIpJiYoZj0iRklOQU5DRSIpO2EuaW5jbHVkZXMoImNvbnRhY3QgdXMiKSYmKGY9IlNBTEVTIik7YS5pbmNsdWRlcygicmVjYWxsIikmJihmPSJTRVJWSUNFIik7YiBpbnN0YW5jZW9mIGpRdWVyeSYmKDA8Yi5jbG9zZXN0KCIjZmluYW5jZU11bHRpc3RlcFBvcHVwQ29udGFpbmVyIikubGVuZ3RoJiYoZj0iRklOQU5DRSIpLCJmaW5hbmNlTXVsdGlzdGVwUG9wdXBDb250YWluZXIiPT0KYi5hdHRyKCJpZCIpJiYoZj0iRklOQU5DRSIpLDA8Yi5jbG9zZXN0KCIjU2VsbENhckZvcm0iKS5sZW5ndGgmJihmPSJGSU5BTkNFIiksdm9pZCAwIT09Yi5hdHRyKCJkYXRhLWRlcGFydG1lbnQiKSYmKGY9Yi5hdHRyKCJkYXRhLWRlcGFydG1lbnQiKSkpO3JldHVybiBmfTtlLmdldEZvcm1UeXBlPWZ1bmN0aW9uKGIpe2xldCBhPWQucGFnZUlkLnRvTG93ZXJDYXNlKCk7aWYoYS5pbmNsdWRlcygicmVxdWVzdCBhcHBvaW50bWVudCIpKXJldHVybiJzZXJ2aWNlX2FwcG9pbnRtZW50IjtpZihhLmluY2x1ZGVzKCJvcmRlciBwYXJ0cyIpfHxhLmluY2x1ZGVzKCJvcmRlciB0aXJlcyIpKXJldHVybiJwYXJ0cyI7aWYoYS5pbmNsdWRlcygiYm9keSBzaG9wIikpcmV0dXJuImJvZHlfc2hvcCI7aWYoYS5pbmNsdWRlcygiZmluYW5jZSBkZXBhcnRtZW50Iil8fGEuaW5jbHVkZXMoImNyZWRpdCIpKXJldHVybiJjcmVkaXQiO2I9ZS5mb3JtRGF0YUJ5SWQoYik7cmV0dXJuITEhPT1iP2IuZm9ybVR5cGU6CiJjb25zdW1lcl9jb250YWN0In07ZS5nZXRFbGVtZW50VHlwZT1mdW5jdGlvbihiKXtyZXR1cm4idG9wQmFubmVySW1hZ2UiPT1iLmF0dHIoImlkIil8fDA8Yi5jbG9zZXN0KCIjdG9wQmFubmVySW1hZ2UiKS5sZW5ndGg\/ImJhbm5lciI6MDxiLmNsb3Nlc3QoIi5oZWFkZXItaW1hZ2Utd3JhcHBlciIpLmxlbmd0aD8iaGVhZGVyIjowPGIuY2xvc2VzdCgiLmxhbmd1YWdlQmFyIikubGVuZ3RoPyJhY2Nlc3NpYmlsaXR5X3Rvb2wiOjA8Yi5oYXMoIi5kZWFsZXJNYXBMaW5rIikubGVuZ3RoPyJtYXAiOjA8Yi5jbG9zZXN0KCIuc2xpZGVzIikubGVuZ3RoPyJnYWxsZXJ5IjowPGIuY2xvc2VzdCgiLnVzZWRWZHBBY3Rpb25zIikubGVuZ3RoPyJkaWdpdGFsX3JldGFpbGluZ190b29sIjoiUHVsbG91dF9CdWlsZC1hbmQtUHJpY2UiPT1iLmF0dHIoIi51c2VkVmRwQWN0aW9ucyIpPyJiYW5uZXIiOiJuZXdWZHBGdWxsd2lkdGhWaWRlb0lmcmFtZSI9PWIuYXR0cigiLnVzZWRWZHBBY3Rpb25zIik\/CiJ2aWRlbyI6ImRpZ2l0YWxfcmV0YWlsaW5nIn07ZS5nZXRWZWhpY2xlSlNPTj1mdW5jdGlvbihiLGEpeyQuZ2V0KCIvanMvanNvbi8iK2IrIi5qc29uIikuZG9uZShmdW5jdGlvbihjKXtjLml0ZW1fbnVtYmVyPWI7aWYoIiIhPWEmJnZvaWQgMCE9PWEpd2luZG93W2FdKGMpO3JldHVybiBjfSl9O2UucmVwb3J0PWZ1bmN0aW9uKGIsYSxjLGYpe2lmKHZvaWQgMD09PWQuc3ViX2dhNHx8Ik4iPT1kLnN1Yl9nYTQpYz1PYmplY3QuYXNzaWduKHt9LGMse3NlbmRfdG86IkctWjVROFo1QzdLRiJ9KTtpZighMD09PWwmJiJhc2NfZm9ybV9lbmdhZ2VtZW50Ij09YSlyZXR1cm4hMTtndGFnKCJldmVudCIsYSxjKTtsPSEwO3NldFRpbWVvdXQoZnVuY3Rpb24oKXtsPSExfSwxRTMpfTtyZXR1cm4gZX07c2V0VGltZW91dChmdW5jdGlvbigpe2cuc2V0VmVoaWNsZVN0YXR1cyghMSk7InZkcCI9PWQucGFnZUlkJiYoMDwkKCIjdG9wY2FyaWQiKS5sZW5ndGgmJiIiIT0kKCIjdG9wY2FyaWQiKS52YWwoKSYmCiIwIiE9JCgiI3RvcGNhcmlkIikudmFsKCk\/Zy5nZXRWZWhpY2xlSlNPTigkKCIjdG9wY2FyaWQiKS52YWwoKSwiYXNjVXBkYXRlVG9wQ2FyRGF0YSIpOmFzY1VwZGF0ZVRvcENhckRhdGEoITEpKTtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7JChmdW5jdGlvbihiKXtnLnNldERpZ2l0YWxEYXRhKCJhc2NfcGFnZXZpZXciLHt9KX0pfSwxRTMpOyQuZWFjaChrLGZ1bmN0aW9uKGIsYSl7Zy5iaW5kRWxlbWVudHMoYixhKX0sITEpOyQoIi5yZXZlYWwtbW9kYWwiKS5vbmUoInBvcHVwaXplci5vbk9wZW4iLGZ1bmN0aW9uKGIpe2cuc2V0RGlnaXRhbERhdGEoImFzY19zcGVjaWFsX29mZmVyIiwkKGIudGFyZ2V0KSk7Zy5iaW5kRWxlbWVudHMoImFzY19mb3JtX2VuZ2FnZW1lbnQiLFskKGIudGFyZ2V0KS5maW5kKCJmb3JtIGlucHV0LCBmb3JtIHNlbGVjdCwgZm9ybSB0ZXh0YXJlYSIpXSl9KTtzZXRUaW1lb3V0KCgpPT57JCgiYVtkYXRhLWxlYWQtdHJpZ2dlcj0nRGVhbGVyQXBwb2ludG1lbnQnXSIpLm9uKCJjbGljayIsCmZ1bmN0aW9uKCl7Zy5zZXREaWdpdGFsRGF0YSgiYXNjX3NwZWNpYWxfb2ZmZXIiLCQoIiNtb2RhbERlYWxlckFwcG9pbnRtZW50IikpfSk7JCgiYVtkYXRhLWxlYWQtdHJpZ2dlcj0nUGF5cGFsUGF5bWVudCddIikub24oImNsaWNrIixmdW5jdGlvbigpe2cuc2V0RGlnaXRhbERhdGEoImFzY19zcGVjaWFsX29mZmVyIiwkKCIjbW9kYWxQYXlwYWxQYXltZW50IikpfSl9LDFFMyk7MDwkKCIjZmx0U29ydElkIikubGVuZ3RoJiYoYXNjTGFzdFNlYXJjaEZpbHRlclNvcnQ9JCgiI2ZsdFNvcnRJZCAuZGl2QWN0aW9uV3JhcHBlciAuZGl2TGFiZWwiKS5odG1sKCkpO2lmKCJ1bmRlZmluZWQiIT09dHlwZW9mIHdpbmRvdy5BYnN0cmFjdFVzZWRTcnBPYmplY3Qpe3ZhciBlPW5ldyBBYnN0cmFjdFVzZWRTcnBPYmplY3Qoe25hbWU6ImQyY19ob25kYV9ndG0ifSk7ZS5hZGRVc2VkU3JwRXZlbnRPYnNlcnZlcigicHJveHkiLGZ1bmN0aW9uKGIpe2lmKCJ1bmRlZmluZWQiIT09dHlwZW9mIGIuY21kJiYKInJlcXVlc3QiPT09Yi5jbWQmJiExIT09Yi5kYXRhKXtsZXQgYT1iLmRhdGEuZmlsdGVyU3RhdGUuZmlsdGVyU2VhcmNoO3NldFRpbWVvdXQoZnVuY3Rpb24oKXthLnJlc3VsdHM9Yi5kYXRhLmZpbHRlclN0YXRlLmNvdW50U2VhcmNoUmVzdWx0czthLnR5cGVkU2VhcmNoPWIuZGF0YS5maWx0ZXJTdGF0ZS50eXBlZFNlYXJjaDthLmV2ZW50X2FjdGlvbl9yZXN1bHQ9InNlYXJjaCI7YS5ldmVudF9hY3Rpb249InNlYXJjaCI7YS5maWx0ZXJJbmZvPWFzY0xhc3RGaWx0ZXJDbGljazthc2NMYXN0RmlsdGVyQ2xpY2s9ITE7T2JqZWN0LmtleXMoYSkuaW5jbHVkZXMoInNvcnQiKSYmYXNjTGFzdFNlYXJjaEZpbHRlclNvcnQhPWEuc29ydFswXSYmKGFzY0xhc3RTZWFyY2hGaWx0ZXJTb3J0PWEuc29ydFswXSxhLmV2ZW50X2FjdGlvbj0ic29ydCIpO2cuc2V0RGlnaXRhbERhdGEoImFzY19lbGVtZW50X2NvbmZpZ3VyYXRpb24iLGEpfSwxMDApfX0pO2UuaW5pdFVzZWRTcnBPYnNlcnZlcigpfSQoZG9jdW1lbnQpLm9uKCJ1c2VkU3JwRmlsdGVycy5vbkNoYW5nZSIsCiJib2R5IiwoYixhKT0+e2I9JCgiIyIrYS5pZCk7Yj0kKCIuZmx0VGl0bGUiLGIpLnRleHQoKTtsZXQgYz1hLnZhbHVlO3ZhciBmPSIiO2xldCBtPSJ0ZXh0X3NlYXJjaCI7YS52YWx1ZSYmYS52YWx1ZS50b1N0cmluZygpLmluY2x1ZGVzKCI6OiIpPyhtPSJidXR0b24iLGY9YS52YWx1ZS5zcGxpdCgiOjoiKSxhLnZhbHVlPWZbMF0sZj1mWzFdKTphLnZhbHVlJiZhLnZhbHVlLnRvU3RyaW5nKCkuaW5jbHVkZXMoIiwiKSYmKG09InJhbmdlX3NsaWRlciIpO2FzY0xhc3RGaWx0ZXJDbGljaz17aWQ6YS5pZCx0aXRsZTphLmxhYmVsLHZhbHVlOmEudmFsdWUsb3JnX3ZhbHVlOmMsc3RhdGU6Zix0eXBlOm0sbGFiZWw6Yn19KTskKCJib2R5Iikub24oImVtYWlsSGFuZGxlci5lbWFpbFNlbnQiLGZ1bmN0aW9uKGIsYSl7Y29uc29sZS5sb2coIkQyQVNDIEVtYWlsIFNlbnQgVHJpZ2dlciIsYixhKTtpZih2b2lkIDAhPT1hLmRldGFpbC5sZWFkVHlwZSl7Yj1hLmRldGFpbC5sZWFkVHlwZTtpZihiLmluY2x1ZGVzKCJMZWFkOiBSZXF1ZXN0IGZvciBmaW5hbmNpbmcgKE11bHRpc3RlcCkiKXx8CmIuaW5jbHVkZXMoIkxlYWQgOiBEZW1hbmRlIGRlIGZpbmFuY2VtZW50IChQbHVzIil8fChhLmRldGFpbC5tYWlsSWR8fCIiKS5zdGFydHNXaXRoKCJDcmVkaXRNdWx0aXN0ZXBSZXF1ZXN0IikpcmV0dXJuITE7Yi5pbmNsdWRlcygiTGVhZCA6IERlbWFuZGUgZGUgdmFsZXVyIikmJihiPSJMZWFkIDogRGVtYW5kZSBkZSB2YWxldXIgZCdlY2hhbmdlIik7Yi50cmltKCk7YS5kZXRhaWwubGVhZFR5cGU9Yn12b2lkIDAhPT1hLmRldGFpbC5sZWFkVHlwZSYmIiIhPWEuZGV0YWlsLmxlYWRUeXBlfHx2b2lkIDA9PT1hLmRldGFpbC5tYWlsSWR8fChhLmRldGFpbC5sZWFkVHlwZT1kMmFzY1Jlc29sdmVMZWFkVHlwZShkLmZvcm1NYXAsYS5kZXRhaWwubWFpbElkKSk7YS5kZXRhaWwubGVhZE5hbWVBcnI9ZC5mb3JtTWFwO3ZvaWQgMD09PWEuZGV0YWlsLmNvbmZpcm1fZW1haWwmJihhLmRldGFpbC5jb25maXJtX2VtYWlsPSIiKTt2b2lkIDA9PT1hLmRldGFpbC5jb25maXJtX3Bob25lX251bWJlciYmCihhLmRldGFpbC5jb25maXJtX3Bob25lX251bWJlcj0iIik7UHJvbWlzZS5hbGwoW2cuaGFzaFRleHQoYS5kZXRhaWwuY29uZmlybV9lbWFpbCksZy5oYXNoVGV4dChhLmRldGFpbC5jb25maXJtX3Bob25lX251bWJlcildKS50aGVuKGM9Pnt2YXIgW2YsbV09YzthLmRldGFpbC5jb25maXJtX2VtYWlsPWY7YS5kZXRhaWwuY29uZmlybV9waG9uZV9udW1iZXI9bX0pO3ZvaWQgMCE9PWFzY1RvcENhckRldGFpbHMubWFrZSYmIiIhPWFzY1RvcENhckRldGFpbHMubWFrZXx8dm9pZCAwPT09YS5kZXRhaWwubWFrZXx8IiI9PWEuZGV0YWlsLm1ha2V8fChhLmRldGFpbC52Y2F0ZWdvcnk9YS5kZXRhaWwuY29uZGl0aW9uLGEuZGV0YWlsLnZlcnNpb249YS5kZXRhaWwudHJpbSxhLmRldGFpbC5ib2R5VHlwZUlEPWEuZGV0YWlsLnRyaW0sYS5kZXRhaWwuY29sb3I9IiIsYS5kZXRhaWwudmNhcmJ1cmFudD0iIixhLmRldGFpbC5kYXRlX2xpc3Rpbmc9IiIsYXNjVXBkYXRlVG9wQ2FyRGF0YShhLmRldGFpbCkpOwpzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Zy5zZXREaWdpdGFsRGF0YSgiYXNjX2Zvcm1fc3VibWlzc2lvbiIsYS5kZXRhaWwpfSwyNTApOyJTTVNJbmZvTGVhZCIhPWEuZGV0YWlsLm1haWxJZCYmIlNNU0xlYWQiIT1hLmRldGFpbC5tYWlsSWR8fHNldFRpbWVvdXQoZnVuY3Rpb24oKXtnLnNldERpZ2l0YWxEYXRhKCJhc2NfY29tbV9zdWJtaXNzaW9uIixhLmRldGFpbCl9LDI1MCl9KTskKCIjU2xpZGVXaWRnZXRGb3JtIGEuYnRuLWRlZmF1bHQiKS5vbigiY2xpY2siLGZ1bmN0aW9uKCl7bGV0IGI9ZDJhc2NSZXNvbHZlTGVhZFR5cGUoZC5mb3JtTWFwLCJTbGlkZVdpZGdldEZvcm0iKTtnLnNldERpZ2l0YWxEYXRhKCJhc2NfZm9ybV9zdWJtaXNzaW9uIix7ZGVwYXJ0bWVudDoic2FsZXMiLGxlYWRUeXBlOmIsY3VycmVudFVSTDoiIn0pfSk7JChkb2N1bWVudCkub24oImZvcm0uc3RlcCIsIiNmaW5hbmNlX211bHRpc3RlcF9mb3JtIixmdW5jdGlvbihiKXtnLnNldERpZ2l0YWxEYXRhKCJhc2NfcmV0YWlsX3Byb2Nlc3MiLApiKX0pOyQoZG9jdW1lbnQpLm9uKCJtdWx0aUZvcm1GaW5hbmNlU3VibWl0Iixkb2N1bWVudC5ib2R5LGZ1bmN0aW9uKGIpe2I9ZDJhc2NSZXNvbHZlTGVhZFR5cGUoZC5mb3JtTWFwLCJDcmVkaXRNdWx0aXN0ZXBSZXF1ZXN0Iik7Zy5zZXREaWdpdGFsRGF0YSgiYXNjX2Zvcm1fc3VibWlzc2lvbiIse2RlcGFydG1lbnQ6ImZpbmFuY2UiLGxlYWRUeXBlOmIsY3VycmVudFVSTDoiIn0pfSl9LDFFMyk7d2luZG93LmQyYXNjPWc7d2luZG93LmQyYXNjRGF0YU1hcD1ofTsKLyoqIC9tL2pzL2pxdWVyeS5yZXZlYWwuanMgKiovCnZhciBfX19kMmNfanF1ZXJ5cmV2ZWFsanNfY19vbj0iMjAyNi0wNS0wNSAxNjozMDowMyI7J3VzZSBzdHJpY3QnOyhmdW5jdGlvbihiKXtiKCJib2R5Iikub24oImNsaWNrIiwiYVtkYXRhLXJldmVhbC1pZF0iLGZ1bmN0aW9uKGEpe2EucHJldmVudERlZmF1bHQoKTthPWIodGhpcykuYXR0cigiZGF0YS1yZXZlYWwtaWQiKTtiKCIjIithKS5yZXZlYWwoYih0aGlzKS5kYXRhKCkpfSk7Yi5mbi5yZXZlYWw9ZnVuY3Rpb24oYSl7YT1iLmV4dGVuZCh7fSx7YW5pbWF0aW9uOiJmYWRlQW5kUG9wIixhbmltYXRpb25zcGVlZDozMDAsY2xvc2VvbmJhY2tncm91bmRjbGljazohMCxkaXNtaXNzbW9kYWxjbGFzczoiY2xvc2UtcmV2ZWFsLW1vZGFsIixjbG9zZW9uZXNjYXBlOiEwfSxhKTtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7ZnVuY3Rpb24gZigpeyJvYmplY3QiPT10eXBlb2YgcG9wdXBTdXBlcnZpc29yJiZzZXRUaW1lb3V0KHBvcHVwU3VwZXJ2aXNvci5yZXBvc2l0aW9uLDFFMyk7Zz0hMX12YXIgYz1iKHRoaXMpLGg9cGFyc2VJbnQoYy5jc3MoInRvcCIpKSxtPWMuaGVpZ2h0KCkrCmgsZz0hMSxkPWIoIi5yZXZlYWwtbW9kYWwtYmciKTswPT1kLmxlbmd0aCYmKGQ9YignPGRpdiBjbGFzcz0icmV2ZWFsLW1vZGFsLWJnIiAvPicpLmluc2VydEFmdGVyKGMpKTtjLm9uKCJyZXZlYWw6b3BlbiIsZnVuY3Rpb24oKXt2YXIgaz0idW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdy5pbm5lckhlaWdodD93aW5kb3cuaW5uZXJIZWlnaHQ6Yih3aW5kb3cpLmhlaWdodCgpLG49YihjKS5vdXRlckhlaWdodCgpO2IoYykub2Zmc2V0KCk7Yihkb2N1bWVudCkuc2Nyb2xsVG9wKCk7dmFyIGw9L01vYmkvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCk\/NToyMCxlPShrLW4pLzIrbDtlPWU8bHx8azxuP2w6ZTswPGIoIiNkMmNfYm9keUNvbnRlbnQiKS5sZW5ndGgmJihlLT1iKCIjZDJjX2JvZHlDb250ZW50Iikub2Zmc2V0KCkudG9wKTswPGIoIi5zbG90TWFjaGluZUNvbnRhaW5lciIpLmxlbmd0aCYmYigiLnNsb3RNYWNoaW5lQ29udGFpbmVyIikuc2hvdygpO2Qub2ZmKCJjbGljay5tb2RhbEV2ZW50Iik7CmIoIi4iK2EuZGlzbWlzc21vZGFsY2xhc3MpLm9mZigiY2xpY2subW9kYWxFdmVudCIpO2d8fChnPSEwLCJmYWRlQW5kUG9wIj09YS5hbmltYXRpb24mJihjLmNzcyh7dG9wOmIoZG9jdW1lbnQpLnNjcm9sbFRvcCgpLW0sb3BhY2l0eTowLHZpc2liaWxpdHk6InZpc2libGUifSksZC5mYWRlSW4oYS5hbmltYXRpb25zcGVlZC8yKSxjLmRlbGF5KGEuYW5pbWF0aW9uc3BlZWQvMikuYW5pbWF0ZSh7dG9wOmIoZG9jdW1lbnQpLnNjcm9sbFRvcCgpK2UrInB4IixvcGFjaXR5OjF9LGEuYW5pbWF0aW9uc3BlZWQsZigpKSksImZhZGUiPT1hLmFuaW1hdGlvbiYmKGMuY3NzKHtvcGFjaXR5OjAsdmlzaWJpbGl0eToidmlzaWJsZSIsdG9wOmIoZG9jdW1lbnQpLnNjcm9sbFRvcCgpK2V9KSxkLmZhZGVJbihhLmFuaW1hdGlvbnNwZWVkLzIpLGMuZGVsYXkoYS5hbmltYXRpb25zcGVlZC8yKS5hbmltYXRlKHtvcGFjaXR5OjF9LGEuYW5pbWF0aW9uc3BlZWQsZigpKSksIm5vbmUiPT1hLmFuaW1hdGlvbiYmCihjLmNzcyh7dmlzaWJpbGl0eToidmlzaWJsZSIsdG9wOmIoZG9jdW1lbnQpLnNjcm9sbFRvcCgpK2V9KSxkLmNzcyh7ZGlzcGxheToiYmxvY2sifSksZigpKSwiZXh0ZXJuYWxBbmltYXRpb24iPT1hLmFuaW1hdGlvbiYmKGMuY3NzKHt2aXNpYmlsaXR5OiJ2aXNpYmxlIix0b3A6Yihkb2N1bWVudCkuc2Nyb2xsVG9wKCkrZSxkaXNwbGF5OiJub25lIn0pLnNob3coKSxkLmNzcyh7ZGlzcGxheToiYmxvY2sifSksZigpKSk7Yy5vZmYoInJldmVhbDpvcGVuIil9KTtjLm9uKCJyZXZlYWw6Y2xvc2UiLGZ1bmN0aW9uKCl7YigiYm9keSIpLmNzcygib3ZlcmZsb3ciLCIiKTtiKCIuc2xvdE1hY2hpbmVDb250YWluZXIiKS5oaWRlKCk7aWYoIWcmJihnPSEwLCJmYWRlQW5kUG9wIj09YS5hbmltYXRpb24mJihkLmRlbGF5KGEuYW5pbWF0aW9uc3BlZWQpLmZhZGVPdXQoYS5hbmltYXRpb25zcGVlZCksYy5hbmltYXRlKHt0b3A6Yihkb2N1bWVudCkuc2Nyb2xsVG9wKCktbSsicHgiLG9wYWNpdHk6MH0sCmEuYW5pbWF0aW9uc3BlZWQvMixmdW5jdGlvbigpe2MuY3NzKHt0b3A6aCxvcGFjaXR5OjEsdmlzaWJpbGl0eToiaGlkZGVuIn0pO2YoKX0pKSwiZmFkZSI9PWEuYW5pbWF0aW9uJiYoZC5kZWxheShhLmFuaW1hdGlvbnNwZWVkKS5mYWRlT3V0KGEuYW5pbWF0aW9uc3BlZWQpLGMuYW5pbWF0ZSh7b3BhY2l0eTowfSxhLmFuaW1hdGlvbnNwZWVkLGZ1bmN0aW9uKCl7Yy5jc3Moe29wYWNpdHk6MSx2aXNpYmlsaXR5OiJoaWRkZW4iLHRvcDpofSk7ZigpfSkpLCJub25lIj09YS5hbmltYXRpb24mJihjLmNzcyh7dmlzaWJpbGl0eToiaGlkZGVuIix0b3A6aH0pLGQuY3NzKHtkaXNwbGF5OiJub25lIn0pKSwiZXh0ZXJuYWxBbmltYXRpb24iPT1hLmFuaW1hdGlvbikpYy5oaWRlKCkub25lKCJhbmltYXRpb25FbmQiLGZ1bmN0aW9uKCl7Yih0aGlzKS5jc3Moe3Zpc2liaWxpdHk6ImhpZGRlbiIsdG9wOmgsZGlzcGxheToibm9uZSJ9KTtkLmNzcyh7ZGlzcGxheToibm9uZSJ9KX0pO2Mub2ZmKCJyZXZlYWw6Y2xvc2UiKTsKInVuZGVmaW5lZCIhPXR5cGVvZiBhLmNsb3NlZCYmYS5jbG9zZWQoKX0pO2MudHJpZ2dlcigicmV2ZWFsOm9wZW4iKTtiKCIuIithLmRpc21pc3Ntb2RhbGNsYXNzKS5vbigiY2xpY2subW9kYWxFdmVudCB0b3VjaHN0YXJ0IixmdW5jdGlvbigpe2MudHJpZ2dlcigicmV2ZWFsOmNsb3NlIil9KTthLmNsb3Nlb25iYWNrZ3JvdW5kY2xpY2smJihkLmNzcyh7Y3Vyc29yOiJwb2ludGVyIn0pLGQub24oImNsaWNrLm1vZGFsRXZlbnQiLGZ1bmN0aW9uKCl7Yy50cmlnZ2VyKCJyZXZlYWw6Y2xvc2UiKX0pKTtpZihhLmNsb3Nlb25lc2NhcGUpYigiYm9keSIpLm9uKCJrZXl1cCIsZnVuY3Rpb24oayl7Mjc9PT1rLndoaWNoJiZjLnRyaWdnZXIoInJldmVhbDpjbG9zZSIpfSl9KX19KShqUXVlcnkpOwovKiogL20vanMvcHJvbW9fZHluYW1pY19maWxlX2ZyLmpzICoqLwooZnVuY3Rpb24oKXt9KTsKLyoqIC9tL2pzL3RyYWRlSW5CYXIuanMgKiovCnZhciBfX19kMmNfdHJhZGVJbkJhcmpzX2Nfb249IjIwMjYtMDEtMjcgMTA6MzA6MDkiOyd1c2Ugc3RyaWN0JztmdW5jdGlvbiB0cmFkZUluQmFySW5pdGlhbGl6ZSgpe2Zvcih2YXIgcD0kKCdzZWxlY3RbbmFtZT0idHJhZGluTWFrZSJdJyksaz0kKCdzZWxlY3RbbmFtZT0idHJhZGluTW9kZWwiXScpLGw9JCgnc2VsZWN0W25hbWU9InRyYWRpblRyaW0iXScpLHE9JCgnc2VsZWN0W25hbWU9InRyYWRpblllYXIiXScpLGc9JCgnaW5wdXRbbmFtZT0idHJhZGluVmluIl0nKSx1PXt9LHc9KG5ldyBEYXRlKS5nZXRGdWxsWWVhcigpOzE5OTk8dzt3LS0pO3Aub24oImZvY3VzIixmdW5jdGlvbigpe3AuY3NzKCJiYWNrZ3JvdW5kIiwiI2ZmZmZmZiIpfSk7ay5vbigiZm9jdXMiLGZ1bmN0aW9uKCl7ay5jc3MoImJhY2tncm91bmQiLCIjZmZmZmZmIil9KTtsLm9uKCJmb2N1cyIsZnVuY3Rpb24oKXtsLmNzcygiYmFja2dyb3VuZCIsIiNmZmZmZmYiKX0pO3Eub24oImZvY3VzIixmdW5jdGlvbigpe3EuY3NzKCJiYWNrZ3JvdW5kIiwiI2ZmZmZmZiIpfSk7dmFyIGg9JCgiYm9keSIpLmhhc0NsYXNzKCJFTkdMSVNIIik\/CiJFTkdMSVNIIjoiRlJFTkNIIixBPSc8b3B0aW9uIHZhbHVlPSIiPicrKCJFTkdMSVNIIj09aD8iTW9kZWwiOiJNb2QmZWdyYXZlO2xlIikrIjwvb3B0aW9uPiIsRD0nPG9wdGlvbiB2YWx1ZT0iIj4nKygiRU5HTElTSCI9PWg\/IlRyaW0iOiJWZXJzaW9uIikrIjwvb3B0aW9uPiIsRj0nPG9wdGlvbiB2YWx1ZT0iIj4nKygiRU5HTElTSCI9PWg\/IlllYXIiOiJBbm4mZWFjdXRlO2UiKSsiPC9vcHRpb24+IjskKGRvY3VtZW50KS5vbigidHJhZGVJbkJhci5jbG9uZWQiLGZ1bmN0aW9uKCl7cD0kKCdzZWxlY3RbbmFtZT0idHJhZGluTWFrZSJdJyk7az0kKCdzZWxlY3RbbmFtZT0idHJhZGluTW9kZWwiXScpO2w9JCgnc2VsZWN0W25hbWU9InRyYWRpblRyaW0iXScpO3E9JCgnc2VsZWN0W25hbWU9InRyYWRpblllYXIiXScpO2c9JCgnaW5wdXRbbmFtZT0idHJhZGluVmluIl0nKTtwLnZhbChwLnZhbCgpKTtxLnZhbChxLnZhbCgpKTtrLnZhbChrLnZhbCgpKTtsLnZhbChsLnZhbCgpKX0pOwpwLm9uKCJjaGFuZ2UiLGZ1bmN0aW9uKCl7cC52YWwoJCh0aGlzKS52YWwoKSk7cS5lbXB0eSgpO2suZW1wdHkoKTtsLmVtcHR5KCk7IiIhPXRoaXMudmFsdWUmJiQuYWpheCh7dHlwZToiUE9TVCIsdXJsOigiRU5HTElTSCI9PWg\/Ii9lbi8iOiIvZnIvIikrIi9hamF4L2dldFRyYWRlSW5CYXJEYXRhP3dzd2lkdGg9MCIsZGF0YVR5cGU6Impzb24iLGRhdGE6e2xhbmd1YWdlOmgsbWFrZTp0aGlzLnZhbHVlfSxzdWNjZXNzOmZ1bmN0aW9uKGIpe3U9YjtxLmFwcGVuZChGKTtmb3IodmFyIGYgaW4gYilxLmFwcGVuZCgnPG9wdGlvbiB2YWx1ZT0iJytmKyciPicrZisiPC9vcHRpb24+Iik7ZyYmZy5maXJzdCgpJiYiIiE9Zy5maXJzdCgpLmF0dHIoInZpblllYXIiKSYmKHEudmFsKGcuZmlyc3QoKS5hdHRyKCJ2aW5ZZWFyIikpLHEuZmlyc3QoKS50cmlnZ2VyKCJjaGFuZ2UiKSl9fSl9KTtxLm9uKCJjaGFuZ2UiLGZ1bmN0aW9uKCl7dmFyIGI9JCh0aGlzKS52YWwoKSwKZj1wLnZhbCgpO3EudmFsKCQodGhpcykudmFsKCkpO2suZW1wdHkoKTtsLmVtcHR5KCk7aWYoMSE9JCgiaW5wdXRbbmFtZT1ub0NCQl0iKS52YWwoKSkkLmFqYXgoe3R5cGU6IlBPU1QiLHVybDooIkVOR0xJU0giPT1oPyIvZW4vIjoiL2ZyLyIpKyIvYWpheC9nZXRUcmFkZUluQmFyTW9kZWw\/d3N3aWR0aD0wIixkYXRhVHlwZToianNvbiIsZGF0YTp7bGFuZ3VhZ2U6aCxtYWtlOmYseWVhcjpifSxzdWNjZXNzOmZ1bmN0aW9uKGEpe2NvbnNvbGUubG9nKGEpO2suYXBwZW5kKEEpO2Zvcih2YXIgZD0wO2Q8YS5sZW5ndGg7ZCsrKXt2YXIgYz1hW2RdLm5hbWU7ay5hcHBlbmQoJzxvcHRpb24gdmFsdWU9IicrYysnIj4nK2MrIjwvb3B0aW9uPiIpfWcmJmcuZmlyc3QoKSYmIiIhPWcuZmlyc3QoKS5hdHRyKCJ2aW5Nb2RlbCIpJiYoay52YWwoZy5maXJzdCgpLmF0dHIoInZpbk1vZGVsIikpLGsuZmlyc3QoKS50cmlnZ2VyKCJjaGFuZ2UiKSk7Zy5maXJzdCgpLmF0dHIoInZpblllYXIiLAoiIik7Zy5maXJzdCgpLmF0dHIoInZpbk1vZGVsIiwiIil9fSk7ZWxzZSBpZigxPT0kKCJpbnB1dFtuYW1lPWlzQWNjdXRyYWRlXSIpLnZhbCgpKSQuYWpheCh7dHlwZToiUE9TVCIsdXJsOigiRU5HTElTSCI9PWg\/Ii9lbi8iOiIvZnIvIikrIi9hamF4L2dldFRyYWRlSW5NbmdNb2RlbD93c3dpZHRoPTAiLGRhdGFUeXBlOiJqc29uIixkYXRhOntsYW5ndWFnZTpoLG1ha2U6Zix5ZWFyOmJ9LHN1Y2Nlc3M6ZnVuY3Rpb24oYSl7Y29uc29sZS5sb2coYSk7ay5hcHBlbmQoQSk7Zm9yKHZhciBkPTA7ZDxhLmxlbmd0aDtkKyspe3ZhciBjPWFbZF0ubmFtZTtrLmFwcGVuZCgnPG9wdGlvbiB2YWx1ZT0iJytjKyciPicrYysiPC9vcHRpb24+Iil9ZyYmZy5maXJzdCgpJiYiIiE9Zy5maXJzdCgpLmF0dHIoInZpbk1vZGVsIikmJihrLnZhbChnLmZpcnN0KCkuYXR0cigidmluTW9kZWwiKSksay5maXJzdCgpLnRyaWdnZXIoImNoYW5nZSIpKTtnLmZpcnN0KCkuYXR0cigidmluWWVhciIsCiIiKTtnLmZpcnN0KCkuYXR0cigidmluTW9kZWwiLCIiKX19KTtlbHNlIGlmKDA8T2JqZWN0LmtleXModSkubGVuZ3RoJiYiIiE9dGhpcy52YWx1ZSl7ay5hcHBlbmQoQSk7Zj17fTtmb3IodmFyIGU9MDtlPHVbYl0ubGVuZ3RoO2UrKykidW5kZWZpbmVkIj09dHlwZW9mIGZbdVtiXVtlXS5tb2RlbF0mJihrLmFwcGVuZCgnPG9wdGlvbiB2YWx1ZT0iJyt1W2JdW2VdLm1vZGVsKyciPicrdVtiXVtlXS5tb2RlbCsiPC9vcHRpb24+IiksZlt1W2JdW2VdLm1vZGVsXT11W2JdW2VdLm1vZGVsKX19KTtrLm9uKCJjaGFuZ2UiLGZ1bmN0aW9uKGIpe3ZhciBmPXAudmFsKCk7Yj1xLnZhbCgpO3ZhciBlPSQodGhpcykudmFsKCk7ay52YWwoJCh0aGlzKS52YWwoKSk7bC5lbXB0eSgpO2lmKDEhPSQoImlucHV0W25hbWU9bm9DQkJdIikudmFsKCkpJC5hamF4KHt0eXBlOiJQT1NUIix1cmw6KCJFTkdMSVNIIj09aD8iL2VuLyI6Ii9mci8iKSsiL2FqYXgvZ2V0VHJhZGVJbkJhclRyaW0\/d3N3aWR0aD0wIiwKZGF0YVR5cGU6Impzb24iLGRhdGE6e2xhbmd1YWdlOmgsbWFrZTpmLG1vZGVsOmUseWVhcjpifSxzdWNjZXNzOmZ1bmN0aW9uKGEpe2NvbnNvbGUubG9nKGEpO2wuYXBwZW5kKCc8b3B0aW9uIHZhbHVlPSIiPicrKCJFTkdMSVNIIj09aD8iVHJpbSI6IlZlcnNpb24iKSsiPC9vcHRpb24+Iik7Zm9yKHZhciBkPTAsYz0wO2M8YS5sZW5ndGg7YysrKXt2YXIgbT1hW2NdLnN0eWxlKyIgIithW2NdLnNlcmllcyx4PWFbY10udXZjO2QrKztsLmFwcGVuZCgnPG9wdGlvbiBkYXRhLXN0eWxlaWQ9IicreCsnIiB2YWx1ZT0iJyttKyciPicrbSsiPC9vcHRpb24+Iil9MT09ZCYmJCgib3B0aW9uOmVxKDEpIixsKS5wcm9wKCJzZWxlY3RlZCIsInNlbGVjdGVkIil9fSk7ZWxzZSBpZigxPT0kKCJpbnB1dFtuYW1lPWlzQWNjdXRyYWRlXSIpLnZhbCgpKSQuYWpheCh7dHlwZToiUE9TVCIsdXJsOigiRU5HTElTSCI9PWg\/Ii9lbi8iOiIvZnIvIikrIi9hamF4L2dldFRyYWRlSW5NbmdUcmltP3dzd2lkdGg9MCIsCmRhdGFUeXBlOiJqc29uIixkYXRhOntsYW5ndWFnZTpoLG1ha2U6Zixtb2RlbDplLHllYXI6Yn0sc3VjY2VzczpmdW5jdGlvbihhKXtjb25zb2xlLmxvZyhhKTtsLmFwcGVuZCgnPG9wdGlvbiB2YWx1ZT0iIj4nKygiRU5HTElTSCI9PWg\/IlRyaW0iOiJWZXJzaW9uIikrIjwvb3B0aW9uPiIpO2Zvcih2YXIgZD0wLGM9MDtjPGEubGVuZ3RoO2MrKyl7dmFyIG09YVtjXS5uYW1lLHg9YVtjXS5pZDtkKys7bC5hcHBlbmQoJzxvcHRpb24gZGF0YS1zdHlsZWlkPSInK3grJyIgdmFsdWU9IicrbSsnIj4nK20rIjwvb3B0aW9uPiIpfTE9PWQmJiQoIm9wdGlvbjplcSgxKSIsbCkucHJvcCgic2VsZWN0ZWQiLCEwKX19KTtlbHNlIGlmKDA8T2JqZWN0LmtleXModSkubGVuZ3RoJiYiIiE9dGhpcy52YWx1ZSl7bC5hcHBlbmQoRCk7Zm9yKGU9Zj0wO2U8dVtiXS5sZW5ndGg7ZSsrKXVbYl1bZV0ubW9kZWw9PXRoaXMudmFsdWUmJihmKyssbC5hcHBlbmQoJzxvcHRpb24gZGF0YS1zdHlsZWlkPSInKwp1W2JdW2VdLnN0eWxlaWQrJyIgdmFsdWU9IicrdVtiXVtlXS50cmltKyciPicrdVtiXVtlXS50cmltKyI8L29wdGlvbj4iKSk7MT09ZiYmJCgib3B0aW9uOmVxKDEpIixsKS5wcm9wKCJzZWxlY3RlZCIsInNlbGVjdGVkIil9fSk7bC5vbigiY2hhbmdlIixmdW5jdGlvbigpe2wudmFsKCQodGhpcykudmFsKCkpfSk7dmFyIEI9ITE7aWYoMSE9JCgiaW5wdXRbbmFtZT1ub0NCQl0iKS52YWwoKSlnLm9uKCJrZXl1cCIsZnVuY3Rpb24oKXtnLnZhbCgkKHRoaXMpLnZhbCgpKTskKHRoaXMpLnZhbCgpJiYxNzw9JCh0aGlzKS52YWwoKS5sZW5ndGgmJiFCJiYoQj0hMCwkLmFqYXgoe3R5cGU6IlBPU1QiLHVybDooJCgiYm9keSIpLmhhc0NsYXNzKCJFTkdMSVNIIik\/Ii9lbi8iOiIvZnIvIikrIi9hamF4L2dldFRyYWRlSW5CYXJWYWx1ZT93c3dpZHRoPTAiLGRhdGFUeXBlOiJqc29uIixkYXRhOnt2aW46JCh0aGlzKS52YWwoKSxwcm92aW5jZTokKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJkZWFsZXJQcm92aW5jZVRyYWRlSW4iXScpLnZhbCgpfSwKc3VjY2VzczpmdW5jdGlvbihiKXtiJiZiLm1vZGVsJiZiLm1vZGVsX3llYXI\/KGcuZmlyc3QoKS5hdHRyKCJ2aW5Nb2RlbCIsYi5tb2RlbCksZy5maXJzdCgpLmF0dHIoInZpblllYXIiLGIubW9kZWxfeWVhcikscC52YWwoYi5tYWtlKSxwLmZpcnN0KCkudHJpZ2dlcigiY2hhbmdlIikscmVtb3ZlUmVkV2FybmluZ01lc3NhZ2UoKSxzd2l0Y2hUb1ZlaGljbGVBbmRGb2N1c1RyaW0oKSk6YWRkUmVkV2FybmluZ01lc3NhZ2UoJCgiYm9keSIpLmhhc0NsYXNzKCJFTkdMSVNIIik\/IlVucmVjb2duaXplZCBWSU4iOiJOSVYgbm9uIHJlY29ubnUiKX0sY29tcGxldGU6ZnVuY3Rpb24oYil7Qj0hMX19KSl9KTtlbHNlIGlmKDE9PSQoImlucHV0W25hbWU9aXNBY2N1dHJhZGVdIikudmFsKCkpZy5vbigia2V5dXAiLGZ1bmN0aW9uKCl7Zy52YWwoJCh0aGlzKS52YWwoKSk7JCh0aGlzKS52YWwoKSYmMTc8PSQodGhpcykudmFsKCkubGVuZ3RoJiYhQiYmKEI9ITAsJC5hamF4KHt0eXBlOiJQT1NUIiwKdXJsOigkKCJib2R5IikuaGFzQ2xhc3MoIkVOR0xJU0giKT8iL2VuLyI6Ii9mci8iKSsiL2FqYXgvZ2V0VHJhZGVJbk1uZ1Zpbj93c3dpZHRoPTAiLGRhdGFUeXBlOiJqc29uIixkYXRhOnt2aW46JCh0aGlzKS52YWwoKSxwcm92aW5jZTokKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJkZWFsZXJQcm92aW5jZVRyYWRlSW4iXScpLnZhbCgpfSxzdWNjZXNzOmZ1bmN0aW9uKGIpe2ImJmIubW9kZWwmJmIueWVhcj8oZy5maXJzdCgpLmF0dHIoInZpbk1vZGVsIixiLm1vZGVsKSxnLmZpcnN0KCkuYXR0cigidmluWWVhciIsYi55ZWFyKSxwLnZhbChiLm1ha2UpLHAuZmlyc3QoKS50cmlnZ2VyKCJjaGFuZ2UiKSxyZW1vdmVSZWRXYXJuaW5nTWVzc2FnZSgpLHN3aXRjaFRvVmVoaWNsZUFuZEZvY3VzVHJpbSgpKTphZGRSZWRXYXJuaW5nTWVzc2FnZSgkKCJib2R5IikuaGFzQ2xhc3MoIkVOR0xJU0giKT8iVW5yZWNvZ25pemVkIFZJTiI6Ik5JViBub24gcmVjb25udSIpfSwKY29tcGxldGU6ZnVuY3Rpb24oYil7Qj0hMX19KSl9KTt3PWdldFVybFZhcnMoKTtmb3IodmFyIEc9T2JqZWN0LmtleXModyksSD1HLmxlbmd0aCxJPXt9O0gtLTspe3ZhciBKPUdbSF07SVtKLnRvTG93ZXJDYXNlKCldPXdbSl19dz1JO3cudG1ha2UmJncudG1vZGVsJiZ3LnR5ZWFyJiZzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7bGF1bmNoVHJhZGVJblBvcHVwKCJhdXRvbWF0aWMiKX0sMUUzKTt3WyJ0cmFkZS1mdWxsIl0mJnNldFRpbWVvdXQoZnVuY3Rpb24oKXtsYXVuY2hUcmFkZUluUG9wdXAoImF1dG9tYXRpYyIpfSwxRTMpOyQoIi50cmFkZUluQmFyX2J0biIpLm9uKCJjbGljayIsZnVuY3Rpb24oYil7Yj0hMTsiIj09cC52YWwoKSYmKHAuY3NzKCJiYWNrZ3JvdW5kIiwiI0ZGN0U3OSIpLGI9ITApO2lmKCIiPT1rLnZhbCgpfHxudWxsPT1rLnZhbCgpKWsuY3NzKCJiYWNrZ3JvdW5kIiwiI0ZGN0U3OSIpLGI9ITA7aWYoIiI9PWwudmFsKCl8fG51bGw9PWwudmFsKCkpbC5jc3MoImJhY2tncm91bmQiLAoiI0ZGN0U3OSIpLGI9ITA7aWYoIiI9PXEudmFsKCl8fG51bGw9PXEudmFsKCkpcS5jc3MoImJhY2tncm91bmQiLCIjRkY3RTc5IiksYj0hMDswPT1iJiZsYXVuY2hUcmFkZUluUG9wdXAoInRyYWRlaW5iYXIiKX0pO2lmKCIxIj09JCgiI2lzTW9iaWxlIikudmFsKCl8fCIiPT1wLnZhbCgpfHwidW5kZWZpbmVkIj09PXR5cGVvZiBwLnZhbCgpfHwiIj09ay52YWwoKXx8IiI9PXEudmFsKCkpe3ZhciB5PSQoIiN0cmFkZUluQmFyUG9wdXBNYWtlIikscj0kKCIjdHJhZGVJbkJhclBvcHVwTW9kZWwiKSx2PSQoIiN0cmFkZUluQmFyUG9wdXBUcmltIiksej0kKCIjdHJhZGVJbkJhclBvcHVwWWVhciIpLG49JCgiI3RyYWRlSW5CYXJQb3B1cE5pdiIpLHQ9e30sRT1kMmNtZWRpYS5jYXBpdGFsaXNlRmlyc3RMZXR0ZXIody50bW9kZWw\/dy50bW9kZWwudG9Mb3dlckNhc2UoKToiIiksQz13LnR5ZWFyO2lmKDAhPSQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9IkNCQk1PREVMU0VMRUNUIl0nKS52YWwoKSkkKCIjdHJhZGVJbkJhclBvcHVwRm9ybSAubml2TWFrZU1vZGVsU2VsZWN0Iikub24oImNoYW5nZSIsCmZ1bmN0aW9uKCl7InZpbiI9PSQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIC5uaXZNYWtlTW9kZWxTZWxlY3Q6Y2hlY2tlZCIpLnZhbCgpPygkKCIjdHJhZGVJbkJhclBvcHVwTWFrZURpdkNvbnRhaW5lciIpLmhpZGUoKSwkKCIjdHJhZGVJbkJhclBvcHVwTW9kZWxEaXZDb250YWluZXIiKS5oaWRlKCksJCgiI3RyYWRlSW5CYXJQb3B1cFllYXJEaXZDb250YWluZXIiKS5oaWRlKCksJCgiI3RyYWRlSW5CYXJQb3B1cE5pdkRpdkNvbnRhaW5lciIpLmNzcygiZGlzcGxheSIsImlubGluZS1ibG9jayIpKTooJCgiI3RyYWRlSW5CYXJQb3B1cE5pdkRpdkNvbnRhaW5lciIpLmhpZGUoKSwkKCIjdHJhZGVJbkJhclBvcHVwTWFrZURpdkNvbnRhaW5lciIpLmNzcygiZGlzcGxheSIsImlubGluZS1ibG9jayIpLCQoIiN0cmFkZUluQmFyUG9wdXBNb2RlbERpdkNvbnRhaW5lciIpLmNzcygiZGlzcGxheSIsImlubGluZS1ibG9jayIpLCQoIiN0cmFkZUluQmFyUG9wdXBZZWFyRGl2Q29udGFpbmVyIikuY3NzKCJkaXNwbGF5IiwKImlubGluZS1ibG9jayIpKTsidW5kZWZpbmVkIiE9PXR5cGVvZiB0cmFkZWlucG9wdXBkMmMmJnRyYWRlaW5wb3B1cGQyYy50cmFkZUluQm90dG9tTG9nb0hlaWd0KCl9KTt5Lm9uKCJjaGFuZ2UiLGZ1bmN0aW9uKCl7eS52YWwoJCh0aGlzKS52YWwoKSk7ei5lbXB0eSgpO3IuZW1wdHkoKTt2LmVtcHR5KCk7IiIhPXRoaXMudmFsdWUmJiQuYWpheCh7dHlwZToiUE9TVCIsdXJsOigiRU5HTElTSCI9PWg\/Ii9lbi8iOiIvZnIvIikrIi9hamF4L2dldFRyYWRlSW5CYXJEYXRhP3dzd2lkdGg9MCIsZGF0YVR5cGU6Impzb24iLGRhdGE6e2xhbmd1YWdlOmgsbWFrZTp0aGlzLnZhbHVlfSxzdWNjZXNzOmZ1bmN0aW9uKGIpe3Q9Yjt6LmFwcGVuZChGKTsiIiE9bi5hdHRyKCJ2aW5ZZWFyIikmJihDPW4uYXR0cigidmluWWVhciIpKTtmb3IodmFyIGYgaW4gYiliPSIiLEMmJihiPWY9PUM\/J3NlbGVjdGVkPSJzZWxlY3RlZCInOiIiKSx6LmFwcGVuZCgiPG9wdGlvbiAiKwpiKycgdmFsdWU9IicrZisnIj4nK2YrIjwvb3B0aW9uPiIpO0MmJih6LnRyaWdnZXIoImNoYW5nZSIpLEM9ITEpfX0pfSk7ei5vbigiY2hhbmdlIixmdW5jdGlvbigpe3oudmFsKCQodGhpcykudmFsKCkpO3IuZW1wdHkoKTt2LmVtcHR5KCk7dmFyIGI9JCh0aGlzKS52YWwoKSxmPXkudmFsKCk7aWYoMSE9JCgiaW5wdXRbbmFtZT1ub0NCQl0iKS52YWwoKSkkLmFqYXgoe3R5cGU6IlBPU1QiLHVybDooIkVOR0xJU0giPT1oPyIvZW4vIjoiL2ZyLyIpKyIvYWpheC9nZXRUcmFkZUluQmFyTW9kZWw\/d3N3aWR0aD0wIixkYXRhVHlwZToianNvbiIsZGF0YTp7bGFuZ3VhZ2U6aCxtYWtlOmYseWVhcjpifSxzdWNjZXNzOmZ1bmN0aW9uKGQpe2NvbnNvbGUubG9nKGQpO3IuYXBwZW5kKEEpO2Zvcih2YXIgYz0wO2M8ZC5sZW5ndGg7YysrKXt2YXIgbT1kW2NdLm5hbWU7ci5hcHBlbmQoJzxvcHRpb24gdmFsdWU9IicrbSsnIj4nK20rIjwvb3B0aW9uPiIpfSIiIT0Kbi5hdHRyKCJ2aW5Nb2RlbCIpJiYoci52YWwobi5hdHRyKCJ2aW5Nb2RlbCIpKSxyLnRyaWdnZXIoImNoYW5nZSIpKTtuLmF0dHIoInZpblllYXIiLCIiKTtuLmF0dHIoInZpbk1vZGVsIiwiIil9fSk7ZWxzZSBpZigxPT0kKCJpbnB1dFtuYW1lPWlzQWNjdXRyYWRlXSIpLnZhbCgpKSQuYWpheCh7dHlwZToiUE9TVCIsdXJsOigiRU5HTElTSCI9PWg\/Ii9lbi8iOiIvZnIvIikrIi9hamF4L2dldFRyYWRlSW5NbmdNb2RlbD93c3dpZHRoPTAiLGRhdGFUeXBlOiJqc29uIixkYXRhOntsYW5ndWFnZTpoLG1ha2U6Zix5ZWFyOmJ9LHN1Y2Nlc3M6ZnVuY3Rpb24oZCl7Y29uc29sZS5sb2coZCk7ci5hcHBlbmQoQSk7Zm9yKHZhciBjPTA7YzxkLmxlbmd0aDtjKyspe3ZhciBtPWRbY10ubmFtZTtyLmFwcGVuZCgnPG9wdGlvbiB2YWx1ZT0iJyttKyciPicrbSsiPC9vcHRpb24+Iil9IiIhPW4uYXR0cigidmluTW9kZWwiKSYmKHIudmFsKG4uYXR0cigidmluTW9kZWwiKSksCnIudHJpZ2dlcigiY2hhbmdlIikpO24uYXR0cigidmluWWVhciIsIiIpO24uYXR0cigidmluTW9kZWwiLCIiKX19KTtlbHNlIGlmKDA8T2JqZWN0LmtleXModCkubGVuZ3RoJiYiIiE9dGhpcy52YWx1ZSl7ci5hcHBlbmQoQSk7Zj17fTtmb3IodmFyIGU9MDtlPHRbYl0ubGVuZ3RoO2UrKylpZigidW5kZWZpbmVkIj09dHlwZW9mIGZbdFtiXVtlXS5tb2RlbF0pe3ZhciBhPSIiO0UmJihhPXRbYl1bZV0ubW9kZWw9PUU\/J3NlbGVjdGVkPSJzZWxlY3RlZCInOiIiKTtyLmFwcGVuZCgiPG9wdGlvbiAiK2ErJyB2YWx1ZT0iJyt0W2JdW2VdLm1vZGVsKyciPicrdFtiXVtlXS5tb2RlbCsiPC9vcHRpb24+Iik7Zlt0W2JdW2VdLm1vZGVsXT10W2JdW2VdLm1vZGVsfUUmJihyLnRyaWdnZXIoImNoYW5nZSIpLEU9ITEpfX0pO3Iub24oImNoYW5nZSIsZnVuY3Rpb24oKXtyLnZhbCgkKHRoaXMpLnZhbCgpKTt2LmVtcHR5KCk7dmFyIGI9ei52YWwoKSxmPXkudmFsKCksZT0kKHRoaXMpLnZhbCgpOwppZigxIT0kKCJpbnB1dFtuYW1lPW5vQ0JCXSIpLnZhbCgpKSQuYWpheCh7dHlwZToiUE9TVCIsdXJsOigiRU5HTElTSCI9PWg\/Ii9lbi8iOiIvZnIvIikrIi9hamF4L2dldFRyYWRlSW5CYXJUcmltP3dzd2lkdGg9MCIsZGF0YVR5cGU6Impzb24iLGRhdGE6e2xhbmd1YWdlOmgsbWFrZTpmLG1vZGVsOmUseWVhcjpifSxzdWNjZXNzOmZ1bmN0aW9uKGEpe2NvbnNvbGUubG9nKGEpO3YuYXBwZW5kKEQpO2Zvcih2YXIgZD0wLGM9MDtjPGEubGVuZ3RoO2MrKyl7dmFyIG09YVtjXS5zdHlsZSsiICIrYVtjXS5zZXJpZXMseD1hW2NdLnV2YztkKys7di5hcHBlbmQoJzxvcHRpb24gZGF0YS1zdHlsZWlkPSInK3grJyIgdmFsdWU9IicrbSsnIj4nK20rIjwvb3B0aW9uPiIpfTE9PWQmJiQoIm9wdGlvbjplcSgxKSIsdikucHJvcCgic2VsZWN0ZWQiLCJzZWxlY3RlZCIpfX0pO2Vsc2UgaWYoMT09JCgiaW5wdXRbbmFtZT1pc0FjY3V0cmFkZV0iKS52YWwoKSkkLmFqYXgoe3R5cGU6IlBPU1QiLAp1cmw6KCJFTkdMSVNIIj09aD8iL2VuLyI6Ii9mci8iKSsiL2FqYXgvZ2V0VHJhZGVJbk1uZ1RyaW0\/d3N3aWR0aD0wIixkYXRhVHlwZToianNvbiIsZGF0YTp7bGFuZ3VhZ2U6aCxtYWtlOmYsbW9kZWw6ZSx5ZWFyOmJ9LHN1Y2Nlc3M6ZnVuY3Rpb24oYSl7Y29uc29sZS5sb2coYSk7di5hcHBlbmQoRCk7Zm9yKHZhciBkPTAsYz0wO2M8YS5sZW5ndGg7YysrKXt2YXIgbT1hW2NdLm5hbWUseD1hW2NdLmlkO2QrKzt2LmFwcGVuZCgnPG9wdGlvbiBkYXRhLXN0eWxlaWQ9IicreCsnIiB2YWx1ZT0iJyttKyciPicrbSsiPC9vcHRpb24+Iil9MT09ZCYmJCgib3B0aW9uOmVxKDEpIix2KS5wcm9wKCJzZWxlY3RlZCIsITApfX0pO2Vsc2UgaWYoMDxPYmplY3Qua2V5cyh0KS5sZW5ndGgmJiIiIT10aGlzLnZhbHVlKXt2LmFwcGVuZChEKTtmb3IoZT1mPTA7ZTx0W2JdLmxlbmd0aDtlKyspdFtiXVtlXS5tb2RlbD09dGhpcy52YWx1ZSYmKGYrKyx2LmFwcGVuZCgnPG9wdGlvbiBkYXRhLXN0eWxlaWQ9IicrCnRbYl1bZV0uc3R5bGVpZCsnIiB2YWx1ZT0iJyt0W2JdW2VdLnRyaW0rJyI+Jyt0W2JdW2VdLnRyaW0rIjwvb3B0aW9uPiIpKTsxPT1mJiYkKCJvcHRpb246ZXEoMSkiLHYpLnByb3AoInNlbGVjdGVkIiwic2VsZWN0ZWQiKX19KTtpZigxIT0kKCJpbnB1dFtuYW1lPW5vQ0JCXSIpLnZhbCgpfHwxPT0kKCJpbnB1dFtuYW1lPWlzQWNjdXRyYWRlXSIpLnZhbCgpKXsxIT0kKCJpbnB1dFtuYW1lPW5vQ0JCXSIpLnZhbCgpPyh2Lm9uKCJjaGFuZ2UiLGZ1bmN0aW9uKCl7JC5hamF4KHt0eXBlOiJQT1NUIix1cmw6KCQoImJvZHkiKS5oYXNDbGFzcygiRU5HTElTSCIpPyIvZW4vIjoiL2ZyLyIpKyIvYWpheC9nZXRUcmFkZUluQmFyVmFsdWU\/d3N3aWR0aD0wIixkYXRhVHlwZToianNvbiIsZGF0YTp7dXZjOiQodGhpcykuZmluZCgiOmNoZWNrZWQiKS5hdHRyKCJkYXRhLXN0eWxlaWQiKSxwcm92aW5jZTokKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJkZWFsZXJQcm92aW5jZVRyYWRlSW4iXScpLnZhbCgpfSwKc3VjY2VzczpmdW5jdGlvbihhKXtjb25zb2xlLmxvZyhhKTskKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBzZWxlY3RbbmFtZT0iVkVISUNMRU9QVElPTlMiXScpLmZpbmQoIm9wdGlvbiIpLnJlbW92ZSgpO2lmKGEuYWRkX2RlZHVjdF9saXN0Lmxlbmd0aCl7Zm9yKHZhciBkPTA7ZDxhLmFkZF9kZWR1Y3RfbGlzdC5sZW5ndGg7ZCsrKSQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIHNlbGVjdFtuYW1lPSJWRUhJQ0xFT1BUSU9OUyJdJykuYXBwZW5kKCc8b3B0aW9uIHZhbHVlPSInK2EuYWRkX2RlZHVjdF9saXN0W2RdLnVvYysnIj4nK2EuYWRkX2RlZHVjdF9saXN0W2RdLm5hbWUrIjwvb3B0aW9uPiIpOyQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIHNlbGVjdFtuYW1lPSJWRUhJQ0xFT1BUSU9OUyJdJykubXVsdGlzZWxlY3Qoe2hlYWRlcjohMSxub25lU2VsZWN0ZWRUZXh0OiJPcHRpb25zIixzZWxlY3RlZFRleHQ6ZnVuY3Rpb24oYyxtLHgpe3JldHVybiAkKCJib2R5IikuaGFzQ2xhc3MoIkVOR0xJU0giKT8KYysiICIrJCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0ibXVsdGlzZWxlY3RlZFRleHRWYWx1ZSJdJykudmFsKCk6YysiICIrJCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0ibXVsdGlzZWxlY3RlZFRleHRWYWx1ZSJdJykudmFsKCkrKDE8Yz8icyI6IiIpfSxjbGFzc2VzOiJ0cmFkZUluQmFyTXVsdGlzZWxlY3QifSkubXVsdGlzZWxlY3QoInJlZnJlc2giKTskKCIjdHJhZGVJbkJhclBvcHVwRm9ybSAub3BlblZlaGljbGVPcHRpb25zIikuaGlkZSgpOyQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIC5tdWx0aXNlbGVjdFZlaGljbGVPcHRpb25zIikuc2hvdygpfWVsc2UgJCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gLm11bHRpc2VsZWN0VmVoaWNsZU9wdGlvbnMiKS5oaWRlKCksJCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gLm9wZW5WZWhpY2xlT3B0aW9ucyIpLnNob3coKX19KX0pLG4ub24oInBhc3RlIixmdW5jdGlvbigpe2xldCBhPSQodGhpcyk7c2V0VGltZW91dChmdW5jdGlvbigpe2EudHJpZ2dlcigia2V5dXAiKX0sCjIwMCl9KSxuLm9uKCJrZXl1cCIsZnVuY3Rpb24oKXskKHRoaXMpLnZhbCgpJiYxNzw9JCh0aGlzKS52YWwoKS5sZW5ndGgmJiQuYWpheCh7dHlwZToiUE9TVCIsdXJsOigkKCJib2R5IikuaGFzQ2xhc3MoIkVOR0xJU0giKT8iL2VuLyI6Ii9mci8iKSsiL2FqYXgvZ2V0VHJhZGVJbkJhclZhbHVlP3dzd2lkdGg9MCIsZGF0YVR5cGU6Impzb24iLGRhdGE6e3ZpbjokKHRoaXMpLnZhbCgpLHByb3ZpbmNlOiQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9ImRlYWxlclByb3ZpbmNlVHJhZGVJbiJdJykudmFsKCl9LHN1Y2Nlc3M6ZnVuY3Rpb24oYSl7YSYmYS5tb2RlbCYmYS5tb2RlbF95ZWFyPyhuLmZpcnN0KCkuYXR0cigidmluTW9kZWwiLGEubW9kZWwpLG4uZmlyc3QoKS5hdHRyKCJ2aW5ZZWFyIixhLm1vZGVsX3llYXIpLHkudmFsKGEubWFrZSkseS5maXJzdCgpLnRyaWdnZXIoImNoYW5nZSIpLGYoKSxlKCkpOmIoJCgiYm9keSIpLmhhc0NsYXNzKCJFTkdMSVNIIik\/CiJVbnJlY29nbml6ZWQgVklOIjoiTklWIG5vbiByZWNvbm51Iil9fSl9KSk6MT09JCgiaW5wdXRbbmFtZT1pc0FjY3V0cmFkZV0iKS52YWwoKSYmKHYub24oImNoYW5nZSIsZnVuY3Rpb24oKXskLmFqYXgoe3R5cGU6IlBPU1QiLHVybDooJCgiYm9keSIpLmhhc0NsYXNzKCJFTkdMSVNIIik\/Ii9lbi8iOiIvZnIvIikrIi9hamF4L2dldFRyYWRlSW5NbmdPcHRpb25zP3dzd2lkdGg9MCIsZGF0YVR5cGU6Impzb24iLGRhdGE6e2lkOiQodGhpcykuZmluZCgiOmNoZWNrZWQiKS5hdHRyKCJkYXRhLXN0eWxlaWQiKSxwcm92aW5jZTokKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJkZWFsZXJQcm92aW5jZVRyYWRlSW4iXScpLnZhbCgpfSxzdWNjZXNzOmZ1bmN0aW9uKGEpe2NvbnNvbGUubG9nKGEpOyQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIHNlbGVjdFtuYW1lPSJWRUhJQ0xFT1BUSU9OUyJdJykuZmluZCgib3B0aW9uIikucmVtb3ZlKCk7aWYoYS5sZW5ndGgpe2Zvcih2YXIgZD0KMDtkPGEubGVuZ3RoO2QrKykkKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBzZWxlY3RbbmFtZT0iVkVISUNMRU9QVElPTlMiXScpLmFwcGVuZCgnPG9wdGlvbiB2YWx1ZT0iJythW2RdLmlkKyciPicrYVtkXS5uYW1lKyI8L29wdGlvbj4iKTskKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBzZWxlY3RbbmFtZT0iVkVISUNMRU9QVElPTlMiXScpLm11bHRpc2VsZWN0KHtoZWFkZXI6ITEsbm9uZVNlbGVjdGVkVGV4dDoiT3B0aW9ucyIsc2VsZWN0ZWRUZXh0OmZ1bmN0aW9uKGMsbSx4KXtyZXR1cm4gJCgiYm9keSIpLmhhc0NsYXNzKCJFTkdMSVNIIik\/YysiICIrJCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0ibXVsdGlzZWxlY3RlZFRleHRWYWx1ZSJdJykudmFsKCk6YysiICIrJCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0ibXVsdGlzZWxlY3RlZFRleHRWYWx1ZSJdJykudmFsKCkrKDE8Yz8icyI6IiIpfSxjbGFzc2VzOiJ0cmFkZUluQmFyTXVsdGlzZWxlY3QifSkubXVsdGlzZWxlY3QoInJlZnJlc2giKTsKJCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gLm9wZW5WZWhpY2xlT3B0aW9ucyIpLmhpZGUoKTskKCIjdHJhZGVJbkJhclBvcHVwRm9ybSAubXVsdGlzZWxlY3RWZWhpY2xlT3B0aW9ucyIpLnNob3coKX1lbHNlICQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIC5tdWx0aXNlbGVjdFZlaGljbGVPcHRpb25zIikuaGlkZSgpLCQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIC5vcGVuVmVoaWNsZU9wdGlvbnMiKS5zaG93KCl9fSl9KSxuLm9uKCJwYXN0ZSIsZnVuY3Rpb24oKXtsZXQgYT0kKHRoaXMpO3NldFRpbWVvdXQoZnVuY3Rpb24oKXthLnRyaWdnZXIoImtleXVwIil9LDIwMCl9KSxuLm9uKCJrZXl1cCIsZnVuY3Rpb24oKXskKHRoaXMpLnZhbCgpJiYxNzw9JCh0aGlzKS52YWwoKS5sZW5ndGgmJiQuYWpheCh7dHlwZToiUE9TVCIsdXJsOigkKCJib2R5IikuaGFzQ2xhc3MoIkVOR0xJU0giKT8iL2VuLyI6Ii9mci8iKSsiL2FqYXgvZ2V0VHJhZGVJbk1uZ1Zpbj93c3dpZHRoPTAiLApkYXRhVHlwZToianNvbiIsZGF0YTp7dmluOiQodGhpcykudmFsKCkscHJvdmluY2U6JCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iZGVhbGVyUHJvdmluY2VUcmFkZUluIl0nKS52YWwoKX0sc3VjY2VzczpmdW5jdGlvbihhKXthJiZhLm1vZGVsJiZhLnllYXI\/KG4uZmlyc3QoKS5hdHRyKCJ2aW5Nb2RlbCIsYS5tb2RlbCksbi5maXJzdCgpLmF0dHIoInZpblllYXIiLGEueWVhcikseS52YWwoYS5tYWtlKSx5LmZpcnN0KCkudHJpZ2dlcigiY2hhbmdlIiksZigpLGUoKSk6YigkKCJib2R5IikuaGFzQ2xhc3MoIkVOR0xJU0giKT8iVW5yZWNvZ25pemVkIFZJTiI6Ik5JViBub24gcmVjb25udSIpfX0pfSkpO2Z1bmN0aW9uIGIoYSl7dmFyIGQ9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRyYWRlSW5CYXJQb3B1cE5pdkRpdkNvbnRhaW5lciIpO2lmKGQpe3ZhciBjPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWRXYXJuaW5nTWVzc2FnZSIpO2MmJmMucmVtb3ZlKCk7CmM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpO2MuaWQ9InJlZFdhcm5pbmdNZXNzYWdlIjtjLnRleHRDb250ZW50PWE7Yy5zdHlsZS5jb2xvcj0icmVkIjtjLnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSI7Yy5zdHlsZS50b3A9IjUwJSI7Yy5zdHlsZS5yaWdodD0iOHB4IjtjLnN0eWxlLm1hcmdpblRvcD0iNHB4IjtjLnN0eWxlLmZvbnRTaXplPSIxMXB4IjtjLnN0eWxlLnRyYW5zZm9ybT0idHJhbnNsYXRlWSgtNTAlKSI7ZC5zdHlsZS5wb3NpdGlvbj0icmVsYXRpdmUiO2QuYXBwZW5kQ2hpbGQoYyl9fWZ1bmN0aW9uIGYoKXt2YXIgYT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVkV2FybmluZ01lc3NhZ2UiKTthJiZhLnJlbW92ZSgpfWZ1bmN0aW9uIGUoKXt2YXIgYT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibml2TWFrZU1vZGVsU2VsZWN0TW9kZWwiKTthJiZhLmNsaWNrKCk7KGE9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRyYWRlSW5CYXJQb3B1cFRyaW0iKSkmJgphLmZvY3VzKCl9fX19OwovKiogL20vanMvdHJhZGVpbnBvcHVwLmpzICoqLwp2YXIgX19fZDJjX3RyYWRlaW5wb3B1cGpzX2Nfb249IjIwMjYtMDYtMDQgMDk6MzA6MTYiOyd1c2Ugc3RyaWN0Jzt2YXIgdHJhZGVpbnBvcHVwZDJjPXtpbml0OmZ1bmN0aW9uKCl7fSxvbkJlZm9yZVN1Ym1pdDpmdW5jdGlvbihhKXtlbWFpbEhhbmRsZXIuZGVwYXJ0bWVudD0iTkVXIjtlbWFpbEhhbmRsZXIuY29uZGl0aW9uPSJuZXciO2Euc2V0dGluZ3MudmVoaWNsZVN0YXRlPSJuZXciO2lmKCJ1c2VkY2Fycy5odG1sIj09JCgiI1BBR0VJRCIpLnZhbCgpfHwiMCI9PSQoImlucHV0W25hbWU9dHJhZGVJbkhhc05ld0RlcF0iKS52YWwoKSllbWFpbEhhbmRsZXIuZGVwYXJ0bWVudD0iVVNFRCIsZW1haWxIYW5kbGVyLmNvbmRpdGlvbj0idXNlZCIsYS5zZXR0aW5ncy52ZWhpY2xlU3RhdGU9InVzZWQiO2VtYWlsSGFuZGxlci5tYWtlPSQoIiNsYXN0dmlld2VkbWFrZSIpLnZhbCgpO2VtYWlsSGFuZGxlci5tb2RlbD0kKCIjbGFzdHZpZXdlZG1vZGVsIikudmFsKCk7ZW1haWxIYW5kbGVyLnllYXI9JCgiI2xhc3R2aWV3ZWR5ZWFyIikudmFsKCk7JCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iRU1BSUxNQUtFIl0nKS52YWwoJCgiI2xhc3R2aWV3ZWRtYWtlIikudmFsKCkpOwokKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJFTUFJTE1PREVMIl0nKS52YWwoJCgiI2xhc3R2aWV3ZWRtb2RlbCIpLnZhbCgpKTskKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJFTUFJTFlFQVIiXScpLnZhbCgkKCIjbGFzdHZpZXdlZHllYXIiKS52YWwoKSk7JCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iU1RPQ0tOVU1CRVIiXScpLnZhbCgkKCIjbGFzdHZpZXdlZHN0b2NrbnVtYmVyIikudmFsKCkpOyQoIiN2ZWhpY2xlY29sb3IiKS5sZW5ndGgmJiQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9IkNPTE9SIl0nKS52YWwoJCgiI3ZlaGljbGVjb2xvciIpLnZhbCgpKTskKCIjdHJhZGVJbkJhclBvcHVwTWFrZSIpLmhhc0NsYXNzKCJyZXF1aXJlZCIpJiYiIiE9JCgiI3RyYWRlSW5CYXJQb3B1cE1ha2UiKS52YWwoKSYmKCQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9Ik1BS0VFWCJdJykudmFsKCQoIiN0cmFkZUluQmFyUG9wdXBNYWtlIikudmFsKCkpLAplbWFpbEhhbmRsZXIuY2FyMl9tYWtlPSQoIiN0cmFkZUluQmFyUG9wdXBNYWtlIikudmFsKCkpOyQoIiN0cmFkZUluQmFyUG9wdXBNb2RlbCIpLmhhc0NsYXNzKCJyZXF1aXJlZCIpJiYiIiE9JCgiI3RyYWRlSW5CYXJQb3B1cE1vZGVsIikudmFsKCkmJigkKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJNT0RFTEVYIl0nKS52YWwoJCgiI3RyYWRlSW5CYXJQb3B1cE1vZGVsIikudmFsKCkpLGVtYWlsSGFuZGxlci5jYXIyX21vZGVsPSQoIiN0cmFkZUluQmFyUG9wdXBNb2RlbCIpLnZhbCgpKTskKCIjdHJhZGVJbkJhclBvcHVwVHJpbSIpLmhhc0NsYXNzKCJyZXF1aXJlZCIpJiYiIiE9JCgiI3RyYWRlSW5CYXJQb3B1cFRyaW0iKS52YWwoKSYmKCQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9IlRSSU1FWCJdJykudmFsKCQoIiN0cmFkZUluQmFyUG9wdXBUcmltIikudmFsKCkpLCQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9InRyYWRlaW5iYXJTdHlsZWlkIl0nKS52YWwoJCgiI3RyYWRlSW5CYXJQb3B1cFRyaW0gb3B0aW9uOnNlbGVjdGVkIikuYXR0cigiZGF0YS1zdHlsZWlkIikpLAplbWFpbEhhbmRsZXIuY2FyMl90cmltPSQoIiN0cmFkZUluQmFyUG9wdXBUcmltIikudmFsKCkpOyQoIiN0cmFkZUluQmFyUG9wdXBZZWFyIikuaGFzQ2xhc3MoInJlcXVpcmVkIikmJiIiIT0kKCIjdHJhZGVJbkJhclBvcHVwWWVhciIpLnZhbCgpJiYoJCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iWUVBUkVYIl0nKS52YWwoJCgiI3RyYWRlSW5CYXJQb3B1cFllYXIiKS52YWwoKSksZW1haWxIYW5kbGVyLmNhcjJfeWVhcj0kKCIjdHJhZGVJbkJhclBvcHVwWWVhciIpLnZhbCgpKTskKCIjdHJhZGVJbkJhclBvcHVwTml2IikubGVuZ3RoJiYiIiE9JCgiI3RyYWRlSW5CYXJQb3B1cE5pdiIpLnZhbCgpJiYkKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJWSU5FWCJdJykudmFsKCQoIiN0cmFkZUluQmFyUG9wdXBOaXYiKS52YWwoKSk7JCgiI1RyYWRlSW5CYXJQb3B1cENvbnRhaW5lciIpLmZpbmQoJ2lucHV0W25hbWU9InRyYWRlaW5iYXJSZWdpc3RlclBhcnRpYWxJRCJdJykubGVuZ3RoJiYKKGVtYWlsSGFuZGxlci50cmFkZWluYmFyUmVnaXN0ZXJQYXJ0aWFsSUQ9JCgiI1RyYWRlSW5CYXJQb3B1cENvbnRhaW5lciIpLmZpbmQoJ2lucHV0W25hbWU9InRyYWRlaW5iYXJSZWdpc3RlclBhcnRpYWxJRCJdJykudmFsKCkpO2VtYWlsSGFuZGxlci5jYXIyX29kb21ldGVyPSQoIiNyZWJhdGVNaWxlYWdlX3RyYWRlSW5CYXJQb3B1cCIpLnZhbCgpO2Euc2V0dGluZ3MuY2xvc2VPblN1Ym1pdD0hMTtpZighJCgiaW5wdXRbbmFtZT10cmFkZUluQmFyU21zT3JFbWFpbF06Y2hlY2tlZCIpLmxlbmd0aCYmMD09JCgiaW5wdXRbbmFtZT10cmFkZUluVmFsdWVDQkJDYWxsZWRdIikudmFsKCkmJjEhPSQoImlucHV0W25hbWU9bm9DQkJdIikudmFsKCkpcmV0dXJuIHRoaXMub25CZWZvcmVTdWJtaXRDQkJDYWxsKGEpLCExO2lmKCEkKCJpbnB1dFtuYW1lPXRyYWRlSW5CYXJTbXNPckVtYWlsXTpjaGVja2VkIikubGVuZ3RoJiYwPT0kKCJpbnB1dFtuYW1lPXRyYWRlSW5WYWx1ZUNCQkNhbGxlZF0iKS52YWwoKSYmCjE9PSQoImlucHV0W25hbWU9aXNBY2N1dHJhZGVdIikudmFsKCkpcmV0dXJuIHRoaXMub25CZWZvcmVTdWJtaXRBY2N1dHJhZGVDYWxsKGEpLCExO2lmKCQoImlucHV0W25hbWU9dHJhZGVJbkJhclNtc09yRW1haWxdOmNoZWNrZWQiKS5sZW5ndGgmJjE9PSQoImlucHV0W25hbWU9dHJhZGVJblZhbHVlQ0JCQ2FsbGVkXSIpLnZhbCgpJiYxPT0kKCJpbnB1dFtuYW1lPXRyYWRlSW5WYWx1ZUNCQkF2YWlsYWJsZVZhbHVlc10iKS52YWwoKSYmMSE9JCgiaW5wdXRbbmFtZT1ub0NCQl0iKS52YWwoKSl0aGlzLm9uQmVmb3JlU3VibWl0Q0JCTWVzc2FnZShhKTtlbHNlIGlmKCQoImlucHV0W25hbWU9dHJhZGVJbkJhclNtc09yRW1haWxdOmNoZWNrZWQiKS5sZW5ndGgmJjE9PSQoImlucHV0W25hbWU9dHJhZGVJblZhbHVlQ0JCQ2FsbGVkXSIpLnZhbCgpJiYxPT0kKCJpbnB1dFtuYW1lPXRyYWRlSW5WYWx1ZUNCQkF2YWlsYWJsZVZhbHVlc10iKS52YWwoKSYmMT09JCgiaW5wdXRbbmFtZT1pc0FjY3V0cmFkZV0iKS52YWwoKSl0aGlzLm9uQmVmb3JlU3VibWl0QWNjdXRyYWRlTWVzc2FnZShhKTsKaWYoIjEiPT09JCgiaW5wdXRbbmFtZT1zdGVwM2FjdGl2ZV0iKS52YWwoKSYmIjAiPT09JCgiaW5wdXRbbmFtZT1zdGVwM2RvbmVdIikudmFsKCkpcmV0dXJuIHRoaXMuaW5pdFRyYWRlSW5TdGVwMygpLCExO2Euc2V0dGluZ3MuY2xvc2VPblN1Ym1pdD0hMH0sb25BZnRlclN1Ym1pdDpmdW5jdGlvbihhKXskKCJib2R5IikudHJpZ2dlcigiVHJhZGVJbkJhclBvcHVwV2lkZ2V0X29uU3VibWl0IixbXSk7YT0kKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPWRlZmF1bHRTdWJtaXRNZXNhZ2VdIikudmFsKCk7MD09JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT10cmFkZUluVmFsdWVDQkJBdmFpbGFibGVWYWx1ZXNdIikudmFsKCkmJjEhPSQoImlucHV0W25hbWU9bm9DQkJdIikudmFsKCkmJihhPSQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9bm9WYWx1ZVN1Ym1pdE1lc2FnZV0iKS52YWwoKSk7bGV0IGs9JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT10cmFkZUluTG93XSIpLnZhbCgpfHwKMCxkPSQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9dHJhZGVJbkhpZ2hdIikudmFsKCl8fDAsYj0kKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPXRyYWRlSW5BdmddIikudmFsKCl8fDA7dmFyIGM9JCgiYm9keSIpLmhhc0NsYXNzKCJFTkdMSVNIIik\/JCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iWUVBUkVYIl0nKS52YWwoKSsiICIrJCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iTUFLRUVYIl0nKS52YWwoKSsiICIrJCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iTU9ERUxFWCJdJykudmFsKCk6JCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iTUFLRUVYIl0nKS52YWwoKSsiICIrJCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iTU9ERUxFWCJdJykudmFsKCkrIiAiKyQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9IllFQVJFWCJdJykudmFsKCk7aWYoMT09CiQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9UkVBTFRJTUVFU1RJTUFURV0iKS52YWwoKSl7dmFyIGg9JCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iQ0JCU0lOR0xFVkFMVUUiXScpLnZhbCgpO2xldCBlPSc8c3BhbiBzdHlsZT0idGV4dC1hbGlnbjpjZW50ZXI7Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxNnB4OyI+PGJyPicrYysiPC9zcGFuPiIsbj0iIjskKCJib2R5IikuaGFzQ2xhc3MoIkVOR0xJU0giKT8iMSI9PWg\/ZSs9Ijxicj5Fc3RpbWF0ZWQgVmFsdWU6ICQiK2I6KGUrPSI8YnI+TWluaW11bSBFc3RpbWF0ZWQgVmFsdWU6ICQiK2ssZSs9Ijxicj5NYXhpbXVtIEVzdGltYXRlZCBWYWx1ZTogJCIrZCk6IjEiPT1oP2UrPSI8YnI+VmFsZXVyIGVzdGltw6llOiAiK2IrIiQiOihlKz0iPGJyPlZhbGV1ciBlc3RpbcOpZSBtaW5pbWFsZTogIitrKyIkIixlKz0iPGJyPlZhbGV1ciBlc3RpbcOpZSBtYXhpbWFsZTogIitkKyIkIik7bis9JzxkaXYgc3R5bGU9ImZvbnQtc2l6ZToxMnB4O21hcmdpbi10b3A6MTBweDsiPicrCiQoImlucHV0W25hbWU9dHJhZGVJbk1zZ0Rpc2NsYWltZXJUZXh0MV0iKS52YWwoKSskKCJpbnB1dFtuYW1lPXRyYWRlSW5Nc2dEaXNjbGFpbWVyVGV4dDJdIikudmFsKCkrIjwvZGl2PiI7YSs9JzxkaXYgc3R5bGU9InRleHQtYWxpZ246Y2VudGVyO2ZvbnQtd2VpZ2h0OmJvbGQ7Zm9udC1zaXplOjIwcHg7Ij4nK2UrIjwvZGl2PiIrbn0kKCIjZW1haWxTdWNjZXNzTWVzc2FnZV9UcmFkZUluQmFyUG9wdXBDb250YWluZXIgcCIpLmh0bWwoIjxicj4iK2EpO2xldCBnPWlzTmFOKHBhcnNlSW50KGIpKT9kOmI7aXNOYU4ocGFyc2VJbnQoZykpfHwoYT1uZXcgQ3VzdG9tRXZlbnQoInRyYWNrc3RlcC5jb21wbGV0ZSIse2RldGFpbDp7c3RlcElkOiJUcmFkZUluQWN0aW9uQm94IixvbkNvbXBsZXRlOmU9PntlLmRhdGFzZXQuY29tcGxfdHh0X2ZyPWUuZGF0YXNldC5jb21wbF90eHRfZnIucmVwbGFjZSgieyRUUkFERUNBUn0iLGMpLnJlcGxhY2UoInskVFJBREVWQUx9IixnKTtlLmRhdGFzZXQuY29tcGxfdHh0X2VuPQplLmRhdGFzZXQuY29tcGxfdHh0X2VuLnJlcGxhY2UoInskVFJBREVDQVJ9IixjKS5yZXBsYWNlKCJ7JFRSQURFVkFMfSIsZyk7dmFyIG49e3llYXI6JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT1ZRUFSRVhdIikudmFsKCksbWFrZTokKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPU1BS0VFWF0iKS52YWwoKSxtb2RlbDokKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPU1PREVMRVhdIikudmFsKCksdHJpbTokKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPVRSSU1FWF0iKS52YWwoKSx2YWx1ZTpwYXJzZUludChnLnJlcGxhY2UoIiwiLCIiKSl9O19sb2NhbFN0b3JhZ2VTZXQoInRyYWRlaW5fc3VibWl0X2RhdGEiLEpTT04uc3RyaW5naWZ5KG4pLDEpO2lmKDE+cGFyc2VJbnQoZykpe249JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT16ZXJvVmFsdWVNZXNzYWdlRW5dIikudmFsKCk7bGV0IHI9JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT16ZXJvVmFsdWVNZXNzYWdlRnJdIikudmFsKCk7CmUuZGF0YXNldC5jb21wbF90eHRfZnI9YCR7Y30gfCAke3J9YDtlLmRhdGFzZXQuY29tcGxfdHh0X2VuPWAke2N9IHwgJHtufWB9fSxmb3JjZVVwZGF0ZTohMH19KSxkb2N1bWVudC5kaXNwYXRjaEV2ZW50KGEpKTskKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBbbmFtZT10cmFkZUluQXZnXSIpLnZhbCgwKTskKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBbbmFtZT10cmFkZUluTG93XSIpLnZhbCgwKTskKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBbbmFtZT10cmFkZUluSGlnaF0iKS52YWwoMCk7JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gW25hbWU9dHJhZGVJblZhbHVlQ0JCQXZhaWxhYmxlVmFsdWVzXSIpLnZhbCgwKTskKCIudHJhZGVJbkJhclN0ZXAxIikuc2hvdygpOyQoIi50cmFkZUluQmFyU3RlcDJUaXRsZSIpLnRleHQoJCgiLnRyYWRlSW5CYXJTdGVwMlRpdGxlIikudGV4dCgpLnJlcGxhY2UoIiAiK2MsIiIpKTskKCJpbnB1dFtuYW1lPXRyYWRlSW5CYXJTbXNPckVtYWlsXSIpLnJlbW92ZUNsYXNzKCJyZXFSYWRpbyIpOwokKCIudHJhZGVJbkJhclN0ZXAyIikuaGlkZSgpOyQoImlucHV0W25hbWU9dHJhZGVJblZhbHVlQ0JCQ2FsbGVkXSIpLnZhbCgwKTskKCJpbnB1dFtuYW1lPXRyYWRlSW5CYXJTbXNPckVtYWlsXTpjaGVja2VkIikucHJvcCgiY2hlY2tlZCIsITEpOyQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIHNlbGVjdFtuYW1lPSJWRUhJQ0xFT1BUSU9OUyJdJykuZmluZCgib3B0aW9uIikucmVtb3ZlKCk7JCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iUVVFU1RJT05TIl0nKS52YWwoIiIpfSxvbkJlZm9yZU9wZW46ZnVuY3Rpb24oKXtmb3IodmFyIGE9Z2V0VXJsVmFycygpLGs9T2JqZWN0LmtleXMoYSksZD1rLmxlbmd0aCxiPXt9O2QtLTspe3ZhciBjPWtbZF07YltjLnRvTG93ZXJDYXNlKCldPWFbY119YT1iO3ZhciBoPSQoJ3NlbGVjdFtuYW1lPSJ0cmFkaW5NYWtlIl0nKS52YWwoKT8kKCdzZWxlY3RbbmFtZT0idHJhZGluTWFrZSJdJykudmFsKCk6ZDJjbWVkaWEuY2FwaXRhbGlzZUZpcnN0TGV0dGVyKGEudG1ha2U\/CmEudG1ha2UudG9Mb3dlckNhc2UoKToiIiksZz0kKCdzZWxlY3RbbmFtZT0idHJhZGluTW9kZWwiXScpLnZhbCgpPyQoJ3NlbGVjdFtuYW1lPSJ0cmFkaW5Nb2RlbCJdJykudmFsKCk6ZDJjbWVkaWEuY2FwaXRhbGlzZUZpcnN0TGV0dGVyKGEudG1vZGVsP2EudG1vZGVsLnRvTG93ZXJDYXNlKCk6IiIpO2s9JCgnc2VsZWN0W25hbWU9InRyYWRpblRyaW0iXScpLnZhbCgpPyQoJ3NlbGVjdFtuYW1lPSJ0cmFkaW5UcmltIl0nKS52YWwoKToiICI7ZD0kKCdzZWxlY3RbbmFtZT0idHJhZGluVHJpbSJdJykudmFsKCk\/JCgnc2VsZWN0W25hbWU9InRyYWRpblRyaW0iXSBvcHRpb246c2VsZWN0ZWQnKS5hdHRyKCJkYXRhLXN0eWxlaWQiKToiICI7dmFyIGU9JCgnc2VsZWN0W25hbWU9InRyYWRpblllYXIiXScpLnZhbCgpPyQoJ3NlbGVjdFtuYW1lPSJ0cmFkaW5ZZWFyIl0nKS52YWwoKTphLnR5ZWFyO2E9JCgnaW5wdXRbbmFtZT0idHJhZGluVmluIl0nKS52YWwoKT8kKCdpbnB1dFtuYW1lPSJ0cmFkaW5WaW4iXScpLnZhbCgpOgoiIjskKCJ0cmFkZUluU2VsZWN0ZWRNYWtlIikudmFsKGgpOyQoInRyYWRlSW5TZWxlY3RlZE1vZGVsIikudmFsKGcpOyQoInRyYWRlSW5TZWxlY3RlZFRyaW0iKS52YWwoayk7JCgidHJhZGVJblNlbGVjdGVkWWVhciIpLnZhbChlKTskKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJNQUtFRVgiXScpLnZhbChoKTskKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJNT0RFTEVYIl0nKS52YWwoZyk7JCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iVFJJTUVYIl0nKS52YWwoayk7JCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iWUVBUkVYIl0nKS52YWwoZSk7JCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0idHJhZGVpbmJhclN0eWxlaWQiXScpLnZhbChkKTskKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJWSU5FWCJdJykudmFsKGEpO2lmKCJ1bmRlZmluZWQiIT09dHlwZW9mIGNsaWVudFN0b3JhZ2Upe3ZhciBuOwphPW51bGwhPShuPWNsaWVudFN0b3JhZ2UuZ2V0KCJmaXJzdG5hbWUiKSk\/bjoiIjt2YXIgcjtuPW51bGwhPShyPWNsaWVudFN0b3JhZ2UuZ2V0KCJsYXN0bmFtZSIpKT9yOiIiO3I9YSsoIiIhPW4\/IiAiK2NsaWVudFN0b3JhZ2UuZ2V0KCJsYXN0bmFtZSIpOiIiKTskKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJGTkFNRSJdJykudmFsKHIpO3ZhciBmOyQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9IkVNQUlMUEhPTkUiXScpLnZhbChudWxsIT0oZj1jbGllbnRTdG9yYWdlLmdldCgicGhvbmUiKSk\/ZjoiIik7dmFyIHU7JCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iRU1BSUwiXScpLnZhbChudWxsIT0odT1jbGllbnRTdG9yYWdlLmdldCgiZW1haWwiKSk\/dToiIil9ZW1haWxIYW5kbGVyLmNhcjJfbWFrZT1oO2VtYWlsSGFuZGxlci5jYXIyX21vZGVsPWc7ZW1haWxIYW5kbGVyLmNhcjJfdHJpbT1rO2VtYWlsSGFuZGxlci5jYXIyX3llYXI9CmU7ZW1haWxIYW5kbGVyLmNhcjJfb2RvbWV0ZXI9JCgiI3JlYmF0ZU1pbGVhZ2VfdHJhZGVJbkJhclBvcHVwIikudmFsKCk7ZW1haWxIYW5kbGVyLmRlcGFydG1lbnQ9Ik5FVyI7aWYoInVzZWRjYXJzLmh0bWwiPT0kKCIjUEFHRUlEIikudmFsKCl8fCIwIj09JCgiaW5wdXRbbmFtZT10cmFkZUluSGFzTmV3RGVwXSIpLnZhbCgpKWVtYWlsSGFuZGxlci5kZXBhcnRtZW50PSJVU0VEIjtmPSQoImJvZHkiKS5oYXNDbGFzcygiRU5HTElTSCIpPyIgIitlKyIgIitoKyIgIitnOiIgIitoKyIgIitnKyIgIitlOyQoIiN0cmFkZUluQmFyUG9wdXBTZWxlY3RlZFZlaGljbGUiKS5odG1sKGYpO0Nvb2tpZXMuZ2V0KCJwb3B1cFBhZ2VWaWV3cyIpfHxDb29raWVzLnNldCgicG9wdXBQYWdlVmlld3MiLCIwIixudWxsLCIvIik7aWYoIjEiPT0kKCIjaXNNb2JpbGUiKS52YWwoKXx8IiI9PWh8fCIiPT1nfHwiIj09ZSl7IjEiIT0kKCIjaXNNb2JpbGUiKS52YWwoKSYmKCQoIiNUcmFkZUluQmFyUG9wdXBDb250YWluZXIiKS5jc3MoImhlaWdodCIsCiI2ODBweCIpLCQoIiN0cmFkZUluQmFyUG9wdXBfZm9ybVciKS5jc3MoImhlaWdodCIsIjY4MHB4IikpOyQoIiN0cmFkZUluQmFyUG9wdXBNYWtlIikuYWRkQ2xhc3MoInJlcXVpcmVkIik7JCgiI3RyYWRlSW5CYXJQb3B1cE1ha2UiKS5lbXB0eSgpOyQoIiN0cmFkZUluQmFyUG9wdXBNb2RlbCIpLmFkZENsYXNzKCJyZXF1aXJlZCIpOyQoIiN0cmFkZUluQmFyUG9wdXBNb2RlbCIpLmVtcHR5KCk7JCgiI3RyYWRlSW5CYXJQb3B1cFllYXIiKS5hZGRDbGFzcygicmVxdWlyZWQiKTskKCIjdHJhZGVJbkJhclBvcHVwWWVhciIpLmVtcHR5KCk7InZpbiIhPSQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9IkNCQk1PREVMU0VMRUNUIl0nKS52YWwoKT8oJCgiI3RyYWRlSW5CYXJQb3B1cE1ha2VEaXZDb250YWluZXIiKS5jc3MoImRpc3BsYXkiLCJpbmxpbmUtYmxvY2siKSwkKCIjdHJhZGVJbkJhclBvcHVwTW9kZWxEaXZDb250YWluZXIiKS5jc3MoImRpc3BsYXkiLCJpbmxpbmUtYmxvY2siKSwKJCgiI3RyYWRlSW5CYXJQb3B1cFllYXJEaXZDb250YWluZXIiKS5jc3MoImRpc3BsYXkiLCJpbmxpbmUtYmxvY2siKSk6JCgiI3RyYWRlSW5CYXJQb3B1cE5pdkRpdkNvbnRhaW5lciIpLmNzcygiZGlzcGxheSIsImlubGluZS1ibG9jayIpOzAhPSQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9IkNCQk1PREVMU0VMRUNUIl0nKS52YWwoKSYmKCQoJy5uaXZNYWtlTW9kZWxTZWxlY3RDb250YWluZXIgLm5pdk1ha2VNb2RlbFNlbGVjdFt2YWx1ZT0iJyskKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJDQkJNT0RFTFNFTEVDVCJdJykudmFsKCkrJyJdJykucHJvcCgiY2hlY2tlZCIsITApLCQoIi5uaXZNYWtlTW9kZWxTZWxlY3RDb250YWluZXIiKS5zaG93KCkpOyQoIiN0cmFkZUluQmFyUG9wdXBUcmltRGl2Q29udGFpbmVyIikuY3NzKCJkaXNwbGF5IiwiaW5saW5lLWJsb2NrIik7JCgiI3RyYWRlSW5CYXJQb3B1cFRyaW0iKS5hZGRDbGFzcygicmVxdWlyZWQiKTsKJCgiI3RyYWRlSW5CYXJQb3B1cFRyaW0iKS5lbXB0eSgpO2Y9JCgiYm9keSIpLmhhc0NsYXNzKCJFTkdMSVNIIik\/IiB0cmFkZS1pbiEiOiIgw6ljaGFuZ2UhIjskKCIjdHJhZGVJbkJhclBvcHVwU2VsZWN0ZWRWZWhpY2xlIikuaHRtbChmKTskKCIjdHJhZGVJbkJhclBvcHVwRm9ybSAubml2TWFrZU1vZGVsU2VsZWN0IikubGVuZ3RoJiYkKCIjdHJhZGVJbkJhclBvcHVwRm9ybSAubml2TWFrZU1vZGVsU2VsZWN0IikudHJpZ2dlcigiY2hhbmdlIik7dmFyIHE9JCgiYm9keSIpLmhhc0NsYXNzKCJFTkdMSVNIIik\/IkVOR0xJU0giOiJGUkVOQ0giOyQuYWpheCh7dHlwZToiUE9TVCIsdXJsOigiRU5HTElTSCI9PXE\/Ii9lbi8iOiIvZnIvIikrIi9hamF4L2dldFRyYWRlSW5CYXJEYXRhP3dzd2lkdGg9MCIsZGF0YVR5cGU6Impzb24iLGRhdGE6e2xhbmd1YWdlOnF9LHN1Y2Nlc3M6ZnVuY3Rpb24obSl7JCgiI3RyYWRlSW5CYXJQb3B1cE1ha2UiKS5hcHBlbmQoJzxvcHRpb24gdmFsdWU9IiI+JysKKCJFTkdMSVNIIj09cT8iTWFrZSI6Ik1hcnF1ZSIpKyI8L29wdGlvbj4iKTtmb3IodmFyIGw9MDtsPG0ubGVuZ3RoO2wrKyl7dmFyIHA9bVtsXS5tYWtlLnRvTG93ZXJDYXNlKCk9PWgudG9Mb3dlckNhc2UoKT8nc2VsZWN0ZWQ9InNlbGVjdGVkIic6IiI7bGV0IHQ9MT09JCgiaW5wdXRbbmFtZT1pc0FjY3V0cmFkZV0iKS52YWwoKT9tW2xdLm1ha2UudG9VcHBlckNhc2UoKTptW2xdLm1ha2U7JCgiI3RyYWRlSW5CYXJQb3B1cE1ha2UiKS5hcHBlbmQoIjxvcHRpb24gIitwKycgdmFsdWU9IicrdCsnIj4nK21bbF0ubWFrZSsiPC9vcHRpb24+Iil9JCgiI3RyYWRlSW5CYXJQb3B1cE1ha2UiKS50cmlnZ2VyKCJjaGFuZ2UiKTskKCIjdHJhZGVJbkJhclBvcHVwTml2IikubGVuZ3RoJiYkKCIjdHJhZGVJbkJhclBvcHVwTml2IikudHJpZ2dlcigia2V5dXAiKX19KX1lbHNlIiAiPT1rPygkKCIjdHJhZGVJbkJhclBvcHVwVHJpbURpdkNvbnRhaW5lciIpLmNzcygiZGlzcGxheSIsImlubGluZS1ibG9jayIpLAokKCIjdHJhZGVJbkJhclBvcHVwVHJpbSIpLmFkZENsYXNzKCJyZXF1aXJlZCIpLCQoIiN0cmFkZUluQmFyUG9wdXBUcmltIikuZW1wdHkoKSxxPSQoImJvZHkiKS5oYXNDbGFzcygiRU5HTElTSCIpPyJFTkdMSVNIIjoiRlJFTkNIIiwxIT0kKCJpbnB1dFtuYW1lPW5vQ0JCXSIpLnZhbCgpPyQuYWpheCh7dHlwZToiUE9TVCIsdXJsOigiRU5HTElTSCI9PXE\/Ii9lbi8iOiIvZnIvIikrIi9hamF4L2dldFRyYWRlSW5CYXJUcmltP3dzd2lkdGg9MCIsZGF0YVR5cGU6Impzb24iLGRhdGE6e2xhbmd1YWdlOnEsbWFrZTpoLG1vZGVsOmcseWVhcjplfSxzdWNjZXNzOmZ1bmN0aW9uKG0peyQoIiN0cmFkZUluQmFyUG9wdXBUcmltIikuYXBwZW5kKCc8b3B0aW9uIHZhbHVlPSIiPicrKCJFTkdMSVNIIj09cT8iVHJpbSI6IlZlcnNpb24iKSsiPC9vcHRpb24+Iik7Zm9yKHZhciBsPTA7bDxtLmxlbmd0aDtsKyspe3ZhciBwPW1bbF0uc3R5bGUrIiAiK21bbF0uc2VyaWVzLAp0PW1bbF0udXZjOyQoIiN0cmFkZUluQmFyUG9wdXBUcmltIikuYXBwZW5kKCc8b3B0aW9uIGRhdGEtc3R5bGVpZD0iJyt0KyciIHZhbHVlPSInK3ArJyI+JytwKyI8L29wdGlvbj4iKX19fSk6MT09JCgiaW5wdXRbbmFtZT1pc0FjY3V0cmFkZV0iKS52YWwoKT8kLmFqYXgoe3R5cGU6IlBPU1QiLHVybDooIkVOR0xJU0giPT1xPyIvZW4vIjoiL2ZyLyIpKyIvYWpheC9nZXRUcmFkZUluTW5nVHJpbT93c3dpZHRoPTAiLGRhdGFUeXBlOiJqc29uIixkYXRhOntsYW5ndWFnZTpxLG1ha2U6aCxtb2RlbDpnLHllYXI6ZX0sc3VjY2VzczpmdW5jdGlvbihtKXskKCIjdHJhZGVJbkJhclBvcHVwVHJpbSIpLmFwcGVuZCgnPG9wdGlvbiB2YWx1ZT0iIj4nKygiRU5HTElTSCI9PXE\/IlRyaW0iOiJWZXJzaW9uIikrIjwvb3B0aW9uPiIpO2Zvcih2YXIgbD0wO2w8bS5sZW5ndGg7bCsrKXt2YXIgcD1tW2xdLm5hbWUsdD1tW2xdLmlkOyQoIiN0cmFkZUluQmFyUG9wdXBUcmltIikuYXBwZW5kKCc8b3B0aW9uIGRhdGEtc3R5bGVpZD0iJysKdCsnIiB2YWx1ZT0iJytwKyciPicrcCsiPC9vcHRpb24+Iil9fX0pOiQuYWpheCh7dHlwZToiUE9TVCIsdXJsOigiRU5HTElTSCI9PXE\/Ii9lbi8iOiIvZnIvIikrIi9hamF4L2dldFRyYWRlSW5CYXJEYXRhP3dzd2lkdGg9MCIsZGF0YVR5cGU6Impzb24iLGRhdGE6e2xhbmd1YWdlOnEsbWFrZTpofSxzdWNjZXNzOmZ1bmN0aW9uKG0peyQoIiN0cmFkZUluQmFyUG9wdXBUcmltIikuYXBwZW5kKCc8b3B0aW9uIHZhbHVlPSIiPicrKCJFTkdMSVNIIj09cT8iVHJpbSI6IlZlcnNpb24iKSsiPC9vcHRpb24+Iik7Zm9yKHZhciBsPTA7bDxtW2VdLmxlbmd0aDtsKyspbVtlXVtsXS5tb2RlbC50b0xvd2VyQ2FzZSgpPT1nLnRvTG93ZXJDYXNlKCkmJiQoIiN0cmFkZUluQmFyUG9wdXBUcmltIikuYXBwZW5kKCc8b3B0aW9uIHZhbHVlPSInK21bZV1bbF0udHJpbSsnIj4nK21bZV1bbF0udHJpbSsiPC9vcHRpb24+Iil9fSkpOigkKCIjdHJhZGVJbkJhclBvcHVwTWFrZURpdkNvbnRhaW5lciIpLmhpZGUoKSwKJCgiI3RyYWRlSW5CYXJQb3B1cE1ha2UiKS5yZW1vdmVDbGFzcygicmVxdWlyZWQiKSwkKCIjdHJhZGVJbkJhclBvcHVwTW9kZWxEaXZDb250YWluZXIiKS5oaWRlKCksJCgiI3RyYWRlSW5CYXJQb3B1cE1vZGVsIikucmVtb3ZlQ2xhc3MoInJlcXVpcmVkIiksJCgiI3RyYWRlSW5CYXJQb3B1cFllYXJEaXZDb250YWluZXIiKS5oaWRlKCksJCgiI3RyYWRlSW5CYXJQb3B1cFllYXIiKS5yZW1vdmVDbGFzcygicmVxdWlyZWQiKSwkKCIjdHJhZGVJbkJhclBvcHVwVHJpbURpdkNvbnRhaW5lciIpLmhpZGUoKSwkKCIjdHJhZGVJbkJhclBvcHVwVHJpbSIpLnJlbW92ZUNsYXNzKCJyZXF1aXJlZCIpLDEhPSQoImlucHV0W25hbWU9bm9DQkJdIikudmFsKCk\/KCQoIi5uaXZNYWtlTW9kZWxTZWxlY3RDb250YWluZXIiKS5oaWRlKCksJCgiI3RyYWRlSW5CYXJQb3B1cE5pdkRpdkNvbnRhaW5lciIpLmhpZGUoKSwkLmFqYXgoe3R5cGU6IlBPU1QiLHVybDooJCgiYm9keSIpLmhhc0NsYXNzKCJFTkdMSVNIIik\/CiIvZW4vIjoiL2ZyLyIpKyIvYWpheC9nZXRUcmFkZUluQmFyVmFsdWU\/d3N3aWR0aD0wIixkYXRhVHlwZToianNvbiIsZGF0YTp7dXZjOiQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9InRyYWRlaW5iYXJTdHlsZWlkIl0nKS52YWwoKSxwcm92aW5jZTokKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJkZWFsZXJQcm92aW5jZVRyYWRlSW4iXScpLnZhbCgpfSxzdWNjZXNzOmZ1bmN0aW9uKG0peyQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIHNlbGVjdFtuYW1lPSJWRUhJQ0xFT1BUSU9OUyJdJykuZmluZCgib3B0aW9uIikucmVtb3ZlKCk7JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gLm11bHRpc2VsZWN0VmVoaWNsZU9wdGlvbnMiKS5oaWRlKCk7JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gLm9wZW5WZWhpY2xlT3B0aW9ucyIpLnNob3coKX19KSk6MT09JCgiaW5wdXRbbmFtZT1pc0FjY3V0cmFkZV0iKS52YWwoKSYmKCQoIi5uaXZNYWtlTW9kZWxTZWxlY3RDb250YWluZXIiKS5oaWRlKCksCiQoIiN0cmFkZUluQmFyUG9wdXBOaXZEaXZDb250YWluZXIiKS5oaWRlKCksJC5hamF4KHt0eXBlOiJQT1NUIix1cmw6KCQoImJvZHkiKS5oYXNDbGFzcygiRU5HTElTSCIpPyIvZW4vIjoiL2ZyLyIpKyIvYWpheC9nZXRUcmFkZUluTW5nT3B0aW9ucz93c3dpZHRoPTAiLGRhdGFUeXBlOiJqc29uIixkYXRhOntpZDokKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJ0cmFkZWluYmFyU3R5bGVpZCJdJykudmFsKCkscHJvdmluY2U6JCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iZGVhbGVyUHJvdmluY2VUcmFkZUluIl0nKS52YWwoKX0sc3VjY2VzczpmdW5jdGlvbihtKXskKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBzZWxlY3RbbmFtZT0iVkVISUNMRU9QVElPTlMiXScpLmZpbmQoIm9wdGlvbiIpLnJlbW92ZSgpOyQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIC5tdWx0aXNlbGVjdFZlaGljbGVPcHRpb25zIikuaGlkZSgpOyQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIC5vcGVuVmVoaWNsZU9wdGlvbnMiKS5zaG93KCl9fSkpKTsKYT1nZXRVcmxWYXJzKCk7Zj1hLmhhc093blByb3BlcnR5KCJ0cmFkZS12YWx1ZSIpJiYieWVzIj09YVsidHJhZGUtdmFsdWUiXTt1PWEuaGFzT3duUHJvcGVydHkoInRyYWRlLXZhbHVlIikmJiJubyI9PWFbInRyYWRlLXZhbHVlIl07cj0kKCdpbnB1dFtuYW1lPSJDQkJDaGVja1VzZXIiXScpLmxlbmd0aD9hdG9iKCQoJ2lucHV0W25hbWU9IkNCQkNoZWNrVXNlciJdJykudmFsKCkpOiIiO3V8fCI2Ni4xMzAuMTA3LjE1NyIhPXImJjEhPUNvb2tpZXMuZ2V0KCJEMkNVVUlEIikmJiFmfHwxPT0kKCJpbnB1dFtuYW1lPW5vQ0JCXSIpLnZhbCgpfHwoJCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iRk5BTUUiXScpLmhpZGUoKSwkKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJFTUFJTFBIT05FIl0nKS5oaWRlKCksJCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iRU1BSUwiXScpLmhpZGUoKSwkKCIudHJhZGVJbkJhckRlYWxlck1lc3NhZ2UiKS5zaG93KCkpOwokKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBbbmFtZT0iRU1BSUxQSE9ORSJdJykuZWFjaCgobSxsKT0+e0lNYXNrKGwse21hc2s6W3ttYXNrOiIwMDAgMDAwLTAwMDAifSx7bWFzazoiMSAwMDAgMDAwLTAwMDAifV19KX0pOyQoIiN0cmFkZUluQmFyUG9wdXBfZm9ybVcgLnRyYWRlSW5EaXNjbGFpbWVyIC50cmFkZUluRGlzY2xhaW1lclNob3J0Iikub24oImNsaWNrIixmdW5jdGlvbigpe2xldCBtPSQodGhpcykuZmluZCgiLnRyYWRlSW5EaXNjbGFpbWVyQ29udGVudCIpLmh0bWwoKTskKCIudHJhZGVJbkRpc2NsYWltZXJEcmF3ZXIgLnRyYWRlSW5EaXNjbGFpbWVyQ29udGVudCIpLmVtcHR5KCkuaHRtbChtKTskKCIudHJhZGVJbkRpc2NsYWltZXJEcmF3ZXIiKS5zaG93KCkuYWRkQ2xhc3MoIm9wZW4iKX0pOyQoIiNUcmFkZUluQmFyUG9wdXBDb250YWluZXIgLnRyYWRlSW5EaXNjbGFpbWVyQ2xvc2UiKS5vbigiY2xpY2siLGZ1bmN0aW9uKCl7JCgiLnRyYWRlSW5EaXNjbGFpbWVyRHJhd2VyIikucmVtb3ZlQ2xhc3MoIm9wZW4iKS5oaWRlKCl9KTsKdGhpcy50cmFkZUluQm90dG9tTG9nb0hlaWd0KCl9LG9uQmVmb3JlVmFsaWRhdGlvbjpmdW5jdGlvbihhKXt2YXIgaz1nZXRVcmxWYXJzKCk7YT1rLmhhc093blByb3BlcnR5KCJ0cmFkZS12YWx1ZSIpJiYieWVzIj09a1sidHJhZGUtdmFsdWUiXTtrPWsuaGFzT3duUHJvcGVydHkoInRyYWRlLXZhbHVlIikmJiJubyI9PWtbInRyYWRlLXZhbHVlIl07dmFyIGQ9JCgnaW5wdXRbbmFtZT0iQ0JCQ2hlY2tVc2VyIl0nKS5sZW5ndGg\/YXRvYigkKCdpbnB1dFtuYW1lPSJDQkJDaGVja1VzZXIiXScpLnZhbCgpKToiIjtpZighayYmKCI2Ni4xMzAuMTA3LjE1NyI9PWR8fDE9PUNvb2tpZXMuZ2V0KCJEMkNVVUlEIil8fGEpJiYxIT0kKCJpbnB1dFtuYW1lPW5vQ0JCXSIpLnZhbCgpKXskKCIjcmViYXRlTWlsZWFnZV90cmFkZUluQmFyUG9wdXAiKS5yZW1vdmVDbGFzcygidmFsaWRpdHktZXJyb25lb3VzIik7JCgiI3RyYWRlSW5CYXJQb3B1cE1ha2UiKS5oYXNDbGFzcygicmVxdWlyZWQiKSYmCiIiIT0kKCIjdHJhZGVJbkJhclBvcHVwTWFrZSIpLnZhbCgpJiYkKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJNQUtFRVgiXScpLnZhbCgkKCIjdHJhZGVJbkJhclBvcHVwTWFrZSIpLnZhbCgpKTskKCIjdHJhZGVJbkJhclBvcHVwTW9kZWwiKS5oYXNDbGFzcygicmVxdWlyZWQiKSYmIiIhPSQoIiN0cmFkZUluQmFyUG9wdXBNb2RlbCIpLnZhbCgpJiYkKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJNT0RFTEVYIl0nKS52YWwoJCgiI3RyYWRlSW5CYXJQb3B1cE1vZGVsIikudmFsKCkpOyQoIiN0cmFkZUluQmFyUG9wdXBUcmltIikuaGFzQ2xhc3MoInJlcXVpcmVkIikmJiIiIT0kKCIjdHJhZGVJbkJhclBvcHVwVHJpbSIpLnZhbCgpJiYoJCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iVFJJTUVYIl0nKS52YWwoJCgiI3RyYWRlSW5CYXJQb3B1cFRyaW0iKS52YWwoKSksJCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0idHJhZGVpbmJhclN0eWxlaWQiXScpLnZhbCgkKCIjdHJhZGVJbkJhclBvcHVwVHJpbSBvcHRpb246c2VsZWN0ZWQiKS5hdHRyKCJkYXRhLXN0eWxlaWQiKSkpOwokKCIjdHJhZGVJbkJhclBvcHVwWWVhciIpLmhhc0NsYXNzKCJyZXF1aXJlZCIpJiYiIiE9JCgiI3RyYWRlSW5CYXJQb3B1cFllYXIiKS52YWwoKSYmJCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iWUVBUkVYIl0nKS52YWwoJCgiI3RyYWRlSW5CYXJQb3B1cFllYXIiKS52YWwoKSk7aWYoMT4kKCIjcmViYXRlTWlsZWFnZV90cmFkZUluQmFyUG9wdXAiKS52YWwoKSlyZXR1cm4gJCgiI3JlYmF0ZU1pbGVhZ2VfdHJhZGVJbkJhclBvcHVwIikuYWRkQ2xhc3MoInZhbGlkaXR5LWVycm9uZW91cyIpLCExO2E9JCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gc2VsZWN0W25hbWU9IlZFSElDTEVPUFRJT05TIl0nKS5maW5kKCJvcHRpb246c2VsZWN0ZWQiKS5tYXAoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy52YWx1ZX0pLmdldCgpLmpvaW4oIiwgIik7dmFyIGI9JCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gc2VsZWN0W25hbWU9IlZFSElDTEVPUFRJT05TIl0nKS5maW5kKCJvcHRpb246c2VsZWN0ZWQiKS5tYXAoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50ZXh0fSkuZ2V0KCkuam9pbigiLCAiKTsKaz0kKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJLTSJdJykudmFsKCk7JC5hamF4KHt0eXBlOiJQT1NUIix1cmw6KCQoImJvZHkiKS5oYXNDbGFzcygiRU5HTElTSCIpPyIvZW4vIjoiL2ZyLyIpKyIvYWpheC9nZXRUcmFkZUluQmFyVmFsdWU\/d3N3aWR0aD0wIixkYXRhVHlwZToianNvbiIsZGF0YTp7dXZjOiQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9InRyYWRlaW5iYXJTdHlsZWlkIl0nKS52YWwoKSxvcHRpb25zOmEsdmVoaWNsZUtNOmsscHJvdmluY2U6JCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iZGVhbGVyUHJvdmluY2VUcmFkZUluIl0nKS52YWwoKX0sc3VjY2VzczpmdW5jdGlvbihjKXt2YXIgaD1jLmNhbmFkaWFuX3RyYWRlaW5fdmFsdWV8fGMuYmFzZV90cmFkZWluX2F2Z3x8MCxnPWMuY2FuYWRpYW5fdHJhZGVpbl9sb3d8fGMuYmFzZV90cmFkZWluX3JvdWdofHwwO2M9Yy5jYW5hZGlhbl90cmFkZWluX2hpZ2h8fApjLmJhc2VfdHJhZGVpbl9jbGVhbnx8MDtoPSIkIitEMkNVdGlscy5Gb3JtYXQudG9OdW1iZXIoaCk7Zz0iJCIrRDJDVXRpbHMuRm9ybWF0LnRvTnVtYmVyKGcpO2M9IiQiK0QyQ1V0aWxzLkZvcm1hdC50b051bWJlcihjKTt2YXIgZT0kKCJib2R5IikuaGFzQ2xhc3MoIkVOR0xJU0giKT8kKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJZRUFSRVgiXScpLnZhbCgpKyIgIiskKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJNQUtFRVgiXScpLnZhbCgpKyIgIiskKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJNT0RFTEVYIl0nKS52YWwoKSsiICIrJCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iVFJJTUVYIl0nKS52YWwoKTokKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJNQUtFRVgiXScpLnZhbCgpKyIgIiskKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJNT0RFTEVYIl0nKS52YWwoKSsiICIrCiQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9IllFQVJFWCJdJykudmFsKCkrIiAiKyQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9IlRSSU1FWCJdJykudmFsKCk7YiYmKGUrPSIgKCIrYisiKSIpOyQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIC50cmFkZUluQmFyRGVhbGVyU3RlcCAudHJhZGVJbkJhckRlYWxlclN0ZXBNYWtlTW9kZWxZZWFyIikudGV4dChlKTsiMSI9PSQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9IkNCQlNJTkdMRVZBTFVFIl0nKS52YWwoKT8oJCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gLnRyYWRlSW5CYXJEZWFsZXJTdGVwIC50cmFkZUluQmFyQ0JCTWluVmFsdWUiKS5wYXJlbnQoKS5oaWRlKCksJCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gLnRyYWRlSW5CYXJEZWFsZXJTdGVwIC50cmFkZUluQmFyQ0JCTWF4VmFsdWUiKS5wYXJlbnQoKS5oaWRlKCkpOiQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIC50cmFkZUluQmFyRGVhbGVyU3RlcCAudHJhZGVJbkJhckNCQkF2Z1ZhbHVlIikucGFyZW50KCkuaGlkZSgpOwokKCIjdHJhZGVJbkJhclBvcHVwRm9ybSAudHJhZGVJbkJhckRlYWxlclN0ZXAgLnRyYWRlSW5CYXJDQkJNaW5WYWx1ZSIpLnRleHQoZyk7JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gLnRyYWRlSW5CYXJEZWFsZXJTdGVwIC50cmFkZUluQmFyQ0JCTWF4VmFsdWUiKS50ZXh0KGMpOyQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIC50cmFkZUluQmFyRGVhbGVyU3RlcCAudHJhZGVJbkJhckNCQkF2Z1ZhbHVlIikudGV4dChoKTskKCIjdHJhZGVJbkJhclBvcHVwRm9ybSAudHJhZGVJbkJhckRlYWxlclN0ZXAiKS5zaG93KCl9fSk7cmV0dXJuITF9fSxvbkJlZm9yZVN1Ym1pdENCQkNhbGw6ZnVuY3Rpb24oYSl7dmFyIGs9JCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gc2VsZWN0W25hbWU9IlZFSElDTEVPUFRJT05TIl0nKS5maW5kKCJvcHRpb246c2VsZWN0ZWQiKS5tYXAoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy52YWx1ZX0pLmdldCgpLmpvaW4oIiwgIiksZD0kKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBzZWxlY3RbbmFtZT0iVkVISUNMRU9QVElPTlMiXScpLmZpbmQoIm9wdGlvbjpzZWxlY3RlZCIpLm1hcChmdW5jdGlvbigpe3JldHVybiB0aGlzLnRleHR9KS5nZXQoKS5qb2luKCIsICIpOwoiIiE9ZCYmJCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iUVVFU1RJT05TIl0nKS52YWwoZCk7ZD0kKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJLTSJdJykudmFsKCk7JC5hamF4KHt0eXBlOiJQT1NUIix1cmw6KCQoImJvZHkiKS5oYXNDbGFzcygiRU5HTElTSCIpPyIvZW4vIjoiL2ZyLyIpKyIvYWpheC9nZXRUcmFkZUluQmFyVmFsdWU\/d3N3aWR0aD0wIixkYXRhVHlwZToianNvbiIsZGF0YTp7dXZjOiQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9InRyYWRlaW5iYXJTdHlsZWlkIl0nKS52YWwoKSxvcHRpb25zOmssdmVoaWNsZUtNOmQscHJvdmluY2U6JCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iZGVhbGVyUHJvdmluY2VUcmFkZUluIl0nKS52YWwoKX0sc3VjY2VzczpmdW5jdGlvbihiKXt2YXIgYz1iLmNhbmFkaWFuX3RyYWRlaW5fdmFsdWV8fGIuYmFzZV90cmFkZWluX2F2Z3x8CjAsaD1iLmNhbmFkaWFuX3RyYWRlaW5fbG93fHxiLmJhc2VfdHJhZGVpbl9yb3VnaHx8MDtiPWIuY2FuYWRpYW5fdHJhZGVpbl9oaWdofHxiLmJhc2VfdHJhZGVpbl9jbGVhbnx8MDt2YXIgZz0kKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJDQkJBRERFRFZBTFVFIl0nKS52YWwoKSxlPSQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9IkNCQkFEREVEVkFMVUVNQUtFUyJdJykudmFsKCksbj0kKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJDQkJBRERFRFZBTFVFVFlQRSJdJykudmFsKCkscj0kKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJDQkJTSU5HTEVWQUxVRSJdJykudmFsKCk7MCE9ZyYmIiIhPWUmJi0xPGUuc3BsaXQoIjsiKS5pbmRleE9mKCQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9Ik1BS0VFWCJdJykudmFsKCkpJiYoImNhc2giPT1uPyhjKz1wYXJzZUludChnKSxoKz1wYXJzZUludChnKSxiKz0KcGFyc2VJbnQoZykpOiJwZXJjZW50YWdlIj09biYmKGc9MStnLzEwMCxjKj1nLGgqPWcsYio9ZykpOyQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIFtuYW1lPXRyYWRlSW5BdmddIikuYXR0cigiZGF0YS1hdmciLGMpO2lmKCQoImlucHV0W25hbWU9ZmluYW5jZVRyYWRlSW5NYWtlXSIpLmxlbmd0aCl7Zz0kKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPVlFQVJFWF0iKS52YWwoKTtlPSQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9TUFLRUVYXSIpLnZhbCgpO249JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT1NT0RFTEVYXSIpLnZhbCgpO2xldCBsPSQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9VFJJTUVYXSIpLnZhbCgpOyQoImlucHV0W25hbWU9ZmluYW5jZVRyYWRlSW5NYWtlXSIpLnZhbChlKTskKCJpbnB1dFtuYW1lPWZpbmFuY2VUcmFkZUluTW9kZWxdIikudmFsKG4pOyQoImlucHV0W25hbWU9ZmluYW5jZVRyYWRlSW5ZZWFyXSIpLnZhbChnKTsKJCgiaW5wdXRbbmFtZT1maW5hbmNlVHJhZGVJblRyaW1dIikudmFsKGwpOyQoImlucHV0W25hbWU9ZmluYW5jZVRyYWRlSW5WYWx1ZV0iKS52YWwoJCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT10cmFkZUluQXZnXSIpLmF0dHIoImRhdGEtYXZnIikpOyQoIiNwYXltZW50VHJhZGVJblZhbHVlIikudmFsKCQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9dHJhZGVJbkF2Z10iKS5hdHRyKCJkYXRhLWF2ZyIpKTskKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPXRyYWRlSW5BdmddIikuYXR0cigiZGF0YS1hdmciLCIiKX1pZigxPT1hLnNldHRpbmdzLmZvcm11bHRpc3RlcCl7bGV0IGw9aXNOYU4ocGFyc2VJbnQoYykpPzA6YztsPUQyQ1V0aWxzLkZvcm1hdC50b051bWJlcihsKTtlbWFpbEhhbmRsZXIudXNlckVtYWlsPSQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9RU1BSUxdIikudmFsKCk7ZW1haWxIYW5kbGVyLnVzZXJQaG9uZT0KJCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT1FTUFJTFBIT05FXSIpLnZhbCgpO3ZhciBmO2M9bnVsbCE9KGY9JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT1GTkFNRV0iKS52YWwoKSk\/ZjoiIjt2YXIgdTtmPW51bGwhPSh1PWMuc3BsaXQoIiAiKVswXSk\/dToiIjt2YXIgcTt1PW51bGwhPShxPWMuc3BsaXQoIiAiKVsxXSk\/cToiIjtlbWFpbEhhbmRsZXIudXNlckZpcnN0TmFtZT1mO2VtYWlsSGFuZGxlci51c2VyTGFzdE5hbWU9dTt2YXIgbT0kKCJib2R5IikuaGFzQ2xhc3MoIkVOR0xJU0giKT8kKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJZRUFSRVgiXScpLnZhbCgpKyIgIiskKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJNQUtFRVgiXScpLnZhbCgpKyIgIiskKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJNT0RFTEVYIl0nKS52YWwoKTokKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJNQUtFRVgiXScpLnZhbCgpKwoiICIrJCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iTU9ERUxFWCJdJykudmFsKCkrIiAiKyQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9IllFQVJFWCJdJykudmFsKCk7aXNOYU4ocGFyc2VJbnQobCkpfHwocT1uZXcgQ3VzdG9tRXZlbnQoInRyYWNrc3RlcC5jb21wbGV0ZSIse2RldGFpbDp7c3RlcElkOiJUcmFkZUluQWN0aW9uQm94IixvbkNvbXBsZXRlOnA9PntwLmRhdGFzZXQuY29tcGxfdHh0X2ZyPXAuZGF0YXNldC5jb21wbF90eHRfZnIucmVwbGFjZSgieyRUUkFERUNBUn0iLG0pLnJlcGxhY2UoInskVFJBREVWQUx9IixsKTtwLmRhdGFzZXQuY29tcGxfdHh0X2VuPXAuZGF0YXNldC5jb21wbF90eHRfZW4ucmVwbGFjZSgieyRUUkFERUNBUn0iLG0pLnJlcGxhY2UoInskVFJBREVWQUx9IixsKTt2YXIgdD17eWVhcjokKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPVlFQVJFWF0iKS52YWwoKSxtYWtlOiQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9TUFLRUVYXSIpLnZhbCgpLAptb2RlbDokKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPU1PREVMRVhdIikudmFsKCksdHJpbTokKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPVRSSU1FWF0iKS52YWwoKSx2YWx1ZTpwYXJzZUludChsLnJlcGxhY2UoIiwiLCIiKSl9O19sb2NhbFN0b3JhZ2VTZXQoInRyYWRlaW5fc3VibWl0X2RhdGEiLEpTT04uc3RyaW5naWZ5KHQpLDEpO2lmKDE+cGFyc2VJbnQobCkpe3Q9JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT16ZXJvVmFsdWVNZXNzYWdlRW5dIikudmFsKCk7bGV0IHY9JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT16ZXJvVmFsdWVNZXNzYWdlRnJdIikudmFsKCk7cC5kYXRhc2V0LmNvbXBsX3R4dF9mcj1gJHttfSB8ICR7dn1gO3AuZGF0YXNldC5jb21wbF90eHRfZW49YCR7bX0gfCAke3R9YH19LGZvcmNlVXBkYXRlOiEwfX0pLGRvY3VtZW50LmRpc3BhdGNoRXZlbnQocSkpO2Euc2V0dGluZ3MuZm9ybXVsdGlzdGVwPQohMTthLmNsb3NlKCl9ZWxzZSAkKCJpbnB1dFtuYW1lPXRyYWRlSW5WYWx1ZUNCQkNhbGxlZF0iKS52YWwoMSksIjEiPT1yP2I9aD0icmVtb3ZlZW1wdHkiOmM9InJlbW92ZWVtcHR5IiwwPGh8fDA8Ynx8MDxjPygkKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBbbmFtZT10cmFkZUluQXZnXSIpLnZhbChEMkNVdGlscy5Gb3JtYXQudG9OdW1iZXIoYykpLCQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIFtuYW1lPXRyYWRlSW5Mb3ddIikudmFsKEQyQ1V0aWxzLkZvcm1hdC50b051bWJlcihoKSksJCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gW25hbWU9dHJhZGVJbkhpZ2hdIikudmFsKEQyQ1V0aWxzLkZvcm1hdC50b051bWJlcihiKSksJCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gW25hbWU9dHJhZGVJblZhbHVlQ0JCQXZhaWxhYmxlVmFsdWVzXSIpLnZhbCgxKSx0cmFkZWlucG9wdXBkMmMuaW5pdFRyYWRlSW5TdGVwMihhKSxwb3B1cElzU3VibWl0dGluZz0hMSk6KHBvcHVwSXNTdWJtaXR0aW5nPSExLAokKCJpbnB1dFtuYW1lPXN0ZXAzZG9uZV0iKS52YWwoMSksJCgiLnRyYWRlSW5CYXJQb3B1cFN1Ym1pdCIpLnRyaWdnZXIoImNsaWNrIikpfX0pfSxvbkJlZm9yZVN1Ym1pdEFjY3V0cmFkZUNhbGw6ZnVuY3Rpb24oYSl7dmFyIGs9JCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gc2VsZWN0W25hbWU9IlZFSElDTEVPUFRJT05TIl0nKS5maW5kKCJvcHRpb246c2VsZWN0ZWQiKS5tYXAoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy52YWx1ZX0pLmdldCgpLmpvaW4oIiwgIiksZD0kKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBzZWxlY3RbbmFtZT0iVkVISUNMRU9QVElPTlMiXScpLmZpbmQoIm9wdGlvbjpzZWxlY3RlZCIpLm1hcChmdW5jdGlvbigpe3JldHVybiB0aGlzLnRleHR9KS5nZXQoKS5qb2luKCIsICIpOyIiIT1kJiYkKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJRVUVTVElPTlMiXScpLnZhbChkKTtkPSQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9IktNIl0nKS52YWwoKTsKdmFyIGI9JCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gc2VsZWN0W25hbWU9IkNPTE9SRVgiXScpLmZpbmQoIm9wdGlvbjpzZWxlY3RlZCIpLmF0dHIoImRhdGEtaWQiKTskLmFqYXgoe3R5cGU6IlBPU1QiLHVybDooJCgiYm9keSIpLmhhc0NsYXNzKCJFTkdMSVNIIik\/Ii9lbi8iOiIvZnIvIikrIi9hamF4L2dldFRyYWRlSW5NbmdWYWx1ZT93c3dpZHRoPTAiLGRhdGFUeXBlOiJqc29uIixkYXRhOntpZDokKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJ0cmFkZWluYmFyU3R5bGVpZCJdJykudmFsKCksb3B0aW9uczprLGttOmQsY29sb3I6Yixwcm92aW5jZTokKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJkZWFsZXJQcm92aW5jZVRyYWRlSW4iXScpLnZhbCgpfSxzdWNjZXNzOmZ1bmN0aW9uKGMpe3ZhciBoPWMuYXZnfHwwLGc9Yy5sb3d8fDA7Yz1jLmhpZ2h8fDA7dmFyIGU9JCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iQ0JCQURERURWQUxVRSJdJykudmFsKCksCm49JCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iQ0JCQURERURWQUxVRU1BS0VTIl0nKS52YWwoKSxyPSQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9IkNCQkFEREVEVkFMVUVUWVBFIl0nKS52YWwoKSxmPSQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9IkNCQlNJTkdMRVZBTFVFIl0nKS52YWwoKTswIT1lJiYiIiE9biYmLTE8bi5zcGxpdCgiOyIpLmluZGV4T2YoJCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iTUFLRUVYIl0nKS52YWwoKSkmJigiY2FzaCI9PXI\/KGgrPXBhcnNlSW50KGUpLGcrPXBhcnNlSW50KGUpLGMrPXBhcnNlSW50KGUpKToicGVyY2VudGFnZSI9PXImJihlPTErZS8xMDAsaCo9ZSxnKj1lLGMqPWUpKTskKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBbbmFtZT10cmFkZUluQXZnXSIpLmF0dHIoImRhdGEtYXZnIixoKTtpZigkKCJpbnB1dFtuYW1lPWZpbmFuY2VUcmFkZUluTWFrZV0iKS5sZW5ndGgpe2U9CiQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9WUVBUkVYXSIpLnZhbCgpO249JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT1NQUtFRVhdIikudmFsKCk7cj0kKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPU1PREVMRVhdIikudmFsKCk7bGV0IHA9JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT1UUklNRVhdIikudmFsKCk7JCgiaW5wdXRbbmFtZT1maW5hbmNlVHJhZGVJbk1ha2VdIikudmFsKG4pOyQoImlucHV0W25hbWU9ZmluYW5jZVRyYWRlSW5Nb2RlbF0iKS52YWwocik7JCgiaW5wdXRbbmFtZT1maW5hbmNlVHJhZGVJblllYXJdIikudmFsKGUpOyQoImlucHV0W25hbWU9ZmluYW5jZVRyYWRlSW5UcmltXSIpLnZhbChwKTskKCJpbnB1dFtuYW1lPWZpbmFuY2VUcmFkZUluVmFsdWVdIikudmFsKCQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9dHJhZGVJbkF2Z10iKS5hdHRyKCJkYXRhLWF2ZyIpKTskKCIjcGF5bWVudFRyYWRlSW5WYWx1ZSIpLnZhbCgkKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPXRyYWRlSW5BdmddIikuYXR0cigiZGF0YS1hdmciKSk7CiQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9dHJhZGVJbkF2Z10iKS5hdHRyKCJkYXRhLWF2ZyIsIiIpfWlmKDE9PWEuc2V0dGluZ3MuZm9ybXVsdGlzdGVwKXtsZXQgcD1pc05hTihwYXJzZUludChoKSk\/MDpoO3A9RDJDVXRpbHMuRm9ybWF0LnRvTnVtYmVyKHApO2VtYWlsSGFuZGxlci51c2VyRW1haWw9JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT1FTUFJTF0iKS52YWwoKTtlbWFpbEhhbmRsZXIudXNlclBob25lPSQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9RU1BSUxQSE9ORV0iKS52YWwoKTt2YXIgdTtoPW51bGwhPSh1PSQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9Rk5BTUVdIikudmFsKCkpP3U6IiI7dmFyIHE7dT1udWxsIT0ocT1oLnNwbGl0KCIgIilbMF0pP3E6IiI7dmFyIG07cT1udWxsIT0obT1oLnNwbGl0KCIgIilbMV0pP206IiI7ZW1haWxIYW5kbGVyLnVzZXJGaXJzdE5hbWU9dTtlbWFpbEhhbmRsZXIudXNlckxhc3ROYW1lPQpxO3ZhciBsPSQoImJvZHkiKS5oYXNDbGFzcygiRU5HTElTSCIpPyQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9IllFQVJFWCJdJykudmFsKCkrIiAiKyQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9Ik1BS0VFWCJdJykudmFsKCkrIiAiKyQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9Ik1PREVMRVgiXScpLnZhbCgpOiQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9Ik1BS0VFWCJdJykudmFsKCkrIiAiKyQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9Ik1PREVMRVgiXScpLnZhbCgpKyIgIiskKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJZRUFSRVgiXScpLnZhbCgpO2lzTmFOKHBhcnNlSW50KHApKXx8KG09bmV3IEN1c3RvbUV2ZW50KCJ0cmFja3N0ZXAuY29tcGxldGUiLHtkZXRhaWw6e3N0ZXBJZDoiVHJhZGVJbkFjdGlvbkJveCIsb25Db21wbGV0ZTp0PT57dC5kYXRhc2V0LmNvbXBsX3R4dF9mcj0KdC5kYXRhc2V0LmNvbXBsX3R4dF9mci5yZXBsYWNlKCJ7JFRSQURFQ0FSfSIsbCkucmVwbGFjZSgieyRUUkFERVZBTH0iLHApO3QuZGF0YXNldC5jb21wbF90eHRfZW49dC5kYXRhc2V0LmNvbXBsX3R4dF9lbi5yZXBsYWNlKCJ7JFRSQURFQ0FSfSIsbCkucmVwbGFjZSgieyRUUkFERVZBTH0iLHApO3ZhciB2PXt5ZWFyOiQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9WUVBUkVYXSIpLnZhbCgpLG1ha2U6JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT1NQUtFRVhdIikudmFsKCksbW9kZWw6JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT1NT0RFTEVYXSIpLnZhbCgpLHRyaW06JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT1UUklNRVhdIikudmFsKCksdmFsdWU6cGFyc2VJbnQocC5yZXBsYWNlKCIsIiwiIikpfTtfbG9jYWxTdG9yYWdlU2V0KCJ0cmFkZWluX3N1Ym1pdF9kYXRhIixKU09OLnN0cmluZ2lmeSh2KSwxKTtpZigxPgpwYXJzZUludChwKSl7dj0kKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPXplcm9WYWx1ZU1lc3NhZ2VFbl0iKS52YWwoKTtsZXQgdz0kKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPXplcm9WYWx1ZU1lc3NhZ2VGcl0iKS52YWwoKTt0LmRhdGFzZXQuY29tcGxfdHh0X2ZyPWAke2x9IHwgJHt3fWA7dC5kYXRhc2V0LmNvbXBsX3R4dF9lbj1gJHtsfSB8ICR7dn1gfX0sZm9yY2VVcGRhdGU6ITB9fSksZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChtKSk7YS5zZXR0aW5ncy5mb3JtdWx0aXN0ZXA9ITE7YS5jbG9zZSgpfWVsc2UgJCgiaW5wdXRbbmFtZT10cmFkZUluVmFsdWVDQkJDYWxsZWRdIikudmFsKDEpLCIxIj09Zj9jPWc9InJlbW92ZWVtcHR5IjpoPSJyZW1vdmVlbXB0eSIsMDxnfHwwPGN8fDA8aD8oJCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gW25hbWU9dHJhZGVJbkF2Z10iKS52YWwoRDJDVXRpbHMuRm9ybWF0LnRvTnVtYmVyKGgpKSwkKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBbbmFtZT10cmFkZUluTG93XSIpLnZhbChEMkNVdGlscy5Gb3JtYXQudG9OdW1iZXIoZykpLAokKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBbbmFtZT10cmFkZUluSGlnaF0iKS52YWwoRDJDVXRpbHMuRm9ybWF0LnRvTnVtYmVyKGMpKSwkKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBbbmFtZT10cmFkZUluVmFsdWVDQkJBdmFpbGFibGVWYWx1ZXNdIikudmFsKDEpLHRyYWRlaW5wb3B1cGQyYy5pbml0VHJhZGVJblN0ZXAyKGEpLHRyYWRlaW5wb3B1cGQyYy5zZXRIZWlnaHRNb2JpbGUoMiksdHJhZGVpbnBvcHVwZDJjLnRyYWRlSW5Cb3R0b21Mb2dvSGVpZ3QoKSxwb3B1cElzU3VibWl0dGluZz0hMSk6KHBvcHVwSXNTdWJtaXR0aW5nPSExLCQoImlucHV0W25hbWU9c3RlcDNkb25lXSIpLnZhbCgxKSwkKCIudHJhZGVJbkJhclBvcHVwU3VibWl0IikudHJpZ2dlcigiY2xpY2siKSl9fSl9LG9uQmVmb3JlU3VibWl0Q0JCTWVzc2FnZTpmdW5jdGlvbihhKXskKCIjdHJhZGVJbkJhclBvcHVwU3VibWl0IikucHJvcCgiZGlzYWJsZWQiLCEwKTskKCIjdHJhZGVJbkJhclBvcHVwU3VibWl0IikucGFyZW50KCkuaGlkZSgpOwphPSQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9RU1BSUxdIikudmFsKCk7dmFyIGs9JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT1FTUFJTFBIT05FXSIpLnZhbCgpLGQ9JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT1ZRUFSRVhdIikudmFsKCksYj0kKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPU1BS0VFWF0iKS52YWwoKSxjPSQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9TU9ERUxFWF0iKS52YWwoKTskKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPVRSSU1FWF0iKS52YWwoKTt2YXIgaD0kKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPXRyYWRlSW5BdmddIikudmFsKCksZz0kKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPXRyYWRlSW5Mb3ddIikudmFsKCksZT0kKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPXRyYWRlSW5IaWdoXSIpLnZhbCgpO2Q9CiQoImJvZHkiKS5oYXNDbGFzcygiRU5HTElTSCIpP2QrIiAiK2IrIiAiK2M6YisiICIrYysiICIrZDtiPSQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9ZGVhbGVyTmFtZVRyYWRlSW5dIikudmFsKCk7Yz0kKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJDQkJTSU5HTEVWQUxVRSJdJykudmFsKCk7dmFyIG49IiI7aWYoIlNNUyI9PSQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9dHJhZGVJbkJhclNtc09yRW1haWxdOmNoZWNrZWQiKS52YWwoKSl2YXIgcj0iU01TIixmPSIxIj09Yz8kKCJib2R5IikuaGFzQ2xhc3MoIkVOR0xJU0giKT8iVGhlIENhbmFkaWFuIEJsYWNrIEJvb2sgZXN0aW1hdGVkIHRyYWRlIHZhbHVlIGZvciB5b3VyICIrZCsiIGlzICQiK2grIi4gV2UnbGwgY29udGFjdCB5b3Ugc2hvcnRseSB0byBkaXNjdXNzLiAiK2IrIiAiKyQoImlucHV0W25hbWU9dHJhZGVJbk1zZ0Rpc2NsYWltZXJUZXh0MV0iKS52YWwoKSskKCJpbnB1dFtuYW1lPXRyYWRlSW5Nc2dEaXNjbGFpbWVyVGV4dDJdIikudmFsKCk6CiJMYSB2YWxldXIgZCfDqWNoYW5nZSBlc3RpbcOpZSBDYW5hZGlhbiBCbGFjayBCb29rIHBvdXIgdm90cmUgIitkKyIgZXN0ICQiK2grIi4gTm91cyBjb21tdW5pcXVlcm9ucyBhdmVjIHZvdXMgc291cyBwZXUgcG91ciBlbiBkaXNjdXRlci4gIitiKyIgIiskKCJpbnB1dFtuYW1lPXRyYWRlSW5Nc2dEaXNjbGFpbWVyVGV4dDFdIikudmFsKCkrJCgiaW5wdXRbbmFtZT10cmFkZUluTXNnRGlzY2xhaW1lclRleHQyXSIpLnZhbCgpOiQoImJvZHkiKS5oYXNDbGFzcygiRU5HTElTSCIpPyJUaGUgQ2FuYWRpYW4gQmxhY2sgQm9vayBlc3RpbWF0ZWQgdHJhZGUgdmFsdWUgZm9yIHlvdXIgIitkKyIgaXMgYmV0d2VlbiAkIitnKyIgYW5kICQiK2UrIi4gV2UnbGwgY29udGFjdCB5b3Ugc2hvcnRseSB0byBkaXNjdXNzLiAiK2IrIiAiKyQoImlucHV0W25hbWU9dHJhZGVJbk1zZ0Rpc2NsYWltZXJUZXh0MV0iKS52YWwoKSskKCJpbnB1dFtuYW1lPXRyYWRlSW5Nc2dEaXNjbGFpbWVyVGV4dDJdIikudmFsKCk6CiJMYSB2YWxldXIgZCfDqWNoYW5nZSBlc3RpbcOpZSBDYW5hZGlhbiBCbGFjayBCb29rIHBvdXIgdm90cmUgIitkKyIgc2Ugc2l0dWUgZW50cmUgJCIrZysiIGV0ICQiK2UrIi4gTm91cyBjb21tdW5pcXVlcm9ucyBhdmVjIHZvdXMgc291cyBwZXUgcG91ciBlbiBkaXNjdXRlci4gIitiKyIgIiskKCJpbnB1dFtuYW1lPXRyYWRlSW5Nc2dEaXNjbGFpbWVyVGV4dDFdIikudmFsKCkrJCgiaW5wdXRbbmFtZT10cmFkZUluTXNnRGlzY2xhaW1lclRleHQyXSIpLnZhbCgpO2Vsc2Ugcj0iRU1BSUwiLG49JCgiYm9keSIpLmhhc0NsYXNzKCJFTkdMSVNIIik\/IklNUE9SVEFOVDogWW91ciB0cmFkZSB2YWx1ZSBmb3IgeW91ciAiK2Q6IklNUE9SVEFOVDogTGEgdmFsZXVyIGQnw6ljaGFuZ2UgZGUgdm90cmUgIitkLCQoImJvZHkiKS5oYXNDbGFzcygiRU5HTElTSCIpPyhmPSJIaSAiKyQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9Rk5BTUVdIikudmFsKCkrIiw8YnI+PGJyPiIsZj0KZisoIkZvbGxvd2luZyB1cCBvbiB5b3VyIHJlY2VudCB0cmFkZSBlc3RpbWF0ZSByZXF1ZXN0IGZvciBhICIrZCsiLCBoZXJlIGlzIHRoZSBlc3RpbWF0ZSBmcm9tIHRoZSBDYW5hZGlhbiBCbGFjayBCb29rOjxicj48YnI+IikrKCQoImlucHV0W25hbWU9dHJhZGVJbk1zZ0Rpc2NsYWltZXJUZXh0MV0iKS52YWwoKSskKCJpbnB1dFtuYW1lPXRyYWRlSW5Nc2dEaXNjbGFpbWVyVGV4dDJdIikudmFsKCkrIjxicj48YnI+IiksZj0iMSI9PWM\/ZisoIkVzdGltYXRlZCBWYWx1ZTogJCIraCsiPGJyPiIpOmYrKCJNaW5pbXVtIEVzdGltYXRlZCBWYWx1ZTogJCIrZysiPGJyPk1heGltdW0gRXN0aW1hdGVkIFZhbHVlOiAkIikrKGUrIjxicj4iKSxmKz0iKEFjY29yZGluZyB0byBDYW5hZGlhbiBCbGFjayBCb29rLCBsZXNzIHJlY29uZGl0aW9uaW5nIGNvc3RzLCBpZiBhcHBsaWNhYmxlKTxicj48YnI+IixmKz0iQSByZXByZXNlbnRhdGl2ZSB3aWxsIGNvbnRhY3QgeW91IHNob3J0bHkgdG8gZXhwbGFpbiB0aGUgZGV0YWlscyBvZiB0aGUgdmFsdWVzLjxicj48YnI+IiwKZis9IlRoYW5rcyBmb3IgdHJ1c3RpbmcgIitiKyIhPGJyPjxicj4iKTooZj0iQm9uam91ciAiKyQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9Rk5BTUVdIikudmFsKCkrIiw8YnI+PGJyPiIsZj1mKygiU3VpdGUgw6Agdm90cmUgZGVtYW5kZSBkJ2VzdGltYXRpb24gZGUgbGEgdmFsZXVyIGRlIHZvdHJlIMOpY2hhbmdlIHBvdXIgdW4gIitkKyIsIHZvaWNpIGwnw6l2YWx1YXRpb24gZGUgdm90cmUgdsOpaGljdWxlIHNlbG9uIGxlIENhbmFkaWFuIEJsYWNrIEJvb2s6PGJyPjxicj4iKSsoJCgiaW5wdXRbbmFtZT10cmFkZUluTXNnRGlzY2xhaW1lclRleHQxXSIpLnZhbCgpKyQoImlucHV0W25hbWU9dHJhZGVJbk1zZ0Rpc2NsYWltZXJUZXh0Ml0iKS52YWwoKSsiPGJyPjxicj4iKSxmPSIxIj09Yz9mKygiVmFsZXVyIGVzdGltw6llOiAkIitoKyI8YnI+Iik6ZisoIlZhbGV1ciBlc3RpbcOpZSBtaW5pbWFsZTogJCIrZysiPGJyPlZhbGV1ciBlc3RpbcOpZSBtYXhpbWFsZTogJCIpKwooZSsiPGJyPiIpLGYrPSIoU2Vsb24gbGUgQ2FuYWRpYW4gQmxhY2sgQm9vaywgbW9pbnMgbGVzIGNvw7t0cyBkZSByZWNvbmRpdGlvbm5lbWVudCBzaSBhcHBsaWNhYmxlKTxicj48YnI+IixmKz0iVW4gY29uc2VpbGxlciBlbnRyZXJhIGVuIGNvbW11bmljYXRpb24gc291cyBwZXUgYXZlYyB2b3VzIGFmaW4gZGUgZGlzY3V0ZXIgZGUgY2V0dGUgdmFsZXVyIGV0IHZvdXMgZW4gZXhwbGlxdWVyIGxlcyBkw6l0YWlscy48YnI+PGJyPiIsZis9Ik1lcmNpIGRlIGZhaXJlIGNvbmZpYW5jZSDDoCAiK2IrIiE8YnI+PGJyPiIpO2Y9YnRvYShmKTtuPWJ0b2Eobik7ZW1haWxIYW5kbGVyLm9uQWZ0ZXJMZWFkQ3JlYXRlZD17YWN0aW9uOnIsc3ViamVjdDpuLG1lc3NhZ2U6ZixlbWFpbDphLHBob25lOmt9fSxvbkJlZm9yZVN1Ym1pdEFjY3V0cmFkZU1lc3NhZ2U6ZnVuY3Rpb24oYSl7JCgiI3RyYWRlSW5CYXJQb3B1cFN1Ym1pdCIpLnByb3AoImRpc2FibGVkIiwhMCk7JCgiI3RyYWRlSW5CYXJQb3B1cFN1Ym1pdCIpLnBhcmVudCgpLmhpZGUoKTsKYT0kKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPUVNQUlMXSIpLnZhbCgpO3ZhciBrPSQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9RU1BSUxQSE9ORV0iKS52YWwoKSxkPSQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9WUVBUkVYXSIpLnZhbCgpLGI9JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT1NQUtFRVhdIikudmFsKCksYz0kKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPU1PREVMRVhdIikudmFsKCk7JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT1UUklNRVhdIikudmFsKCk7dmFyIGg9JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT10cmFkZUluQXZnXSIpLnZhbCgpLGc9JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT10cmFkZUluTG93XSIpLnZhbCgpLGU9JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT10cmFkZUluSGlnaF0iKS52YWwoKTtkPQokKCJib2R5IikuaGFzQ2xhc3MoIkVOR0xJU0giKT9kKyIgIitiKyIgIitjOmIrIiAiK2MrIiAiK2Q7Yj0kKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPWRlYWxlck5hbWVUcmFkZUluXSIpLnZhbCgpO2M9JCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iQ0JCU0lOR0xFVkFMVUUiXScpLnZhbCgpO3ZhciBuPSIiO2lmKCJTTVMiPT0kKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPXRyYWRlSW5CYXJTbXNPckVtYWlsXTpjaGVja2VkIikudmFsKCkpdmFyIHI9IlNNUyIsZj0iMSI9PWM\/JCgiYm9keSIpLmhhc0NsYXNzKCJFTkdMSVNIIik\/IkFjY3UtVHJhZGUgZXN0aW1hdGVkIHRyYWRlIHZhbHVlIGZvciB5b3VyICIrZCsiIGlzICQiK2grIi4gV2UnbGwgY29udGFjdCB5b3Ugc2hvcnRseSB0byBkaXNjdXNzLiAiK2IrIiAiKyQoImlucHV0W25hbWU9dHJhZGVJbk1zZ0Rpc2NsYWltZXJUZXh0MV0iKS52YWwoKSskKCJpbnB1dFtuYW1lPXRyYWRlSW5Nc2dEaXNjbGFpbWVyVGV4dDJdIikudmFsKCk6CiJMYSB2YWxldXIgZCfDqWNoYW5nZSBBY2N1LVRyYWRlIGVzdGltw6llIHBvdXIgdm90cmUgIitkKyIgZXN0ICQiK2grIi4gTm91cyBjb21tdW5pcXVlcm9ucyBhdmVjIHZvdXMgc291cyBwZXUgcG91ciBlbiBkaXNjdXRlci4gIitiKyIgIiskKCJpbnB1dFtuYW1lPXRyYWRlSW5Nc2dEaXNjbGFpbWVyVGV4dDFdIikudmFsKCkrJCgiaW5wdXRbbmFtZT10cmFkZUluTXNnRGlzY2xhaW1lclRleHQyXSIpLnZhbCgpOiQoImJvZHkiKS5oYXNDbGFzcygiRU5HTElTSCIpPyJBY2N1LVRyYWRlIGVzdGltYXRlZCB0cmFkZSB2YWx1ZSBmb3IgeW91ciAiK2QrIiBpcyBiZXR3ZWVuICQiK2crIiBhbmQgJCIrZSsiLiBXZSdsbCBjb250YWN0IHlvdSBzaG9ydGx5IHRvIGRpc2N1c3MuICIrYisiICIrJCgiaW5wdXRbbmFtZT10cmFkZUluTXNnRGlzY2xhaW1lclRleHQxXSIpLnZhbCgpKyQoImlucHV0W25hbWU9dHJhZGVJbk1zZ0Rpc2NsYWltZXJUZXh0Ml0iKS52YWwoKToiTGEgdmFsZXVyIGQnw6ljaGFuZ2UgQWNjdS1UcmFkZSBlc3RpbcOpZSBwb3VyIHZvdHJlICIrCmQrIiBzZSBzaXR1ZSBlbnRyZSAkIitnKyIgZXQgJCIrZSsiLiBOb3VzIGNvbW11bmlxdWVyb25zIGF2ZWMgdm91cyBzb3VzIHBldSBwb3VyIGVuIGRpc2N1dGVyLiAiK2IrIiAiKyQoImlucHV0W25hbWU9dHJhZGVJbk1zZ0Rpc2NsYWltZXJUZXh0MV0iKS52YWwoKSskKCJpbnB1dFtuYW1lPXRyYWRlSW5Nc2dEaXNjbGFpbWVyVGV4dDJdIikudmFsKCk7ZWxzZSByPSJFTUFJTCIsbj0kKCJib2R5IikuaGFzQ2xhc3MoIkVOR0xJU0giKT8iSU1QT1JUQU5UOiBZb3VyIHRyYWRlIHZhbHVlIGZvciB5b3VyICIrZDoiSU1QT1JUQU5UOiBMYSB2YWxldXIgZCfDqWNoYW5nZSBkZSB2b3RyZSAiK2QsJCgiYm9keSIpLmhhc0NsYXNzKCJFTkdMSVNIIik\/KGY9IkhpICIrJCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT1GTkFNRV0iKS52YWwoKSsiLDxicj48YnI+IixmPWYrKCJGb2xsb3dpbmcgdXAgb24geW91ciByZWNlbnQgdHJhZGUgZXN0aW1hdGUgcmVxdWVzdCBmb3IgYSAiKwpkKyIsIGhlcmUgaXMgdGhlIGVzdGltYXRlIGZyb20gQWNjdS1UcmFkZTo8YnI+PGJyPiIpKygkKCJpbnB1dFtuYW1lPXRyYWRlSW5Nc2dEaXNjbGFpbWVyVGV4dDFdIikudmFsKCkrJCgiaW5wdXRbbmFtZT10cmFkZUluTXNnRGlzY2xhaW1lclRleHQyXSIpLnZhbCgpKyI8YnI+PGJyPiIpLGY9IjEiPT1jP2YrKCJFc3RpbWF0ZWQgVmFsdWU6ICQiK2grIjxicj4iKTpmKygiTWluaW11bSBFc3RpbWF0ZWQgVmFsdWU6ICQiK2crIjxicj5NYXhpbXVtIEVzdGltYXRlZCBWYWx1ZTogJCIpKyhlKyI8YnI+IiksZis9IihBY2NvcmRpbmcgdG8gQWNjdS1UcmFkZSwgbGVzcyByZWNvbmRpdGlvbmluZyBjb3N0cywgaWYgYXBwbGljYWJsZSk8YnI+PGJyPiIsZis9IkEgcmVwcmVzZW50YXRpdmUgd2lsbCBjb250YWN0IHlvdSBzaG9ydGx5IHRvIGV4cGxhaW4gdGhlIGRldGFpbHMgb2YgdGhlIHZhbHVlcy48YnI+PGJyPiIsZis9IlRoYW5rcyBmb3IgdHJ1c3RpbmcgIitiKyIhPGJyPjxicj4iKToKKGY9IkJvbmpvdXIgIiskKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPUZOQU1FXSIpLnZhbCgpKyIsPGJyPjxicj4iLGY9ZisoIlN1aXRlIMOgIHZvdHJlIGRlbWFuZGUgZCdlc3RpbWF0aW9uIGRlIGxhIHZhbGV1ciBkZSB2b3RyZSDDqWNoYW5nZSBwb3VyIHVuICIrZCsiLCB2b2ljaSBsJ8OpdmFsdWF0aW9uIGRlIHZvdHJlIHbDqWhpY3VsZSBzZWxvbiBBY2N1LVRyYWRlOjxicj48YnI+IikrKCQoImlucHV0W25hbWU9dHJhZGVJbk1zZ0Rpc2NsYWltZXJUZXh0MV0iKS52YWwoKSskKCJpbnB1dFtuYW1lPXRyYWRlSW5Nc2dEaXNjbGFpbWVyVGV4dDJdIikudmFsKCkrIjxicj48YnI+IiksZj0iMSI9PWM\/ZisoIlZhbGV1ciBlc3RpbcOpZTogJCIraCsiPGJyPiIpOmYrKCJWYWxldXIgZXN0aW3DqWUgbWluaW1hbGU6ICQiK2crIjxicj5WYWxldXIgZXN0aW3DqWUgbWF4aW1hbGU6ICQiKSsoZSsiPGJyPiIpLGYrPSIoU2Vsb24gQWNjdS1UcmFkZSwgbW9pbnMgbGVzIGNvw7t0cyBkZSByZWNvbmRpdGlvbm5lbWVudCBzaSBhcHBsaWNhYmxlKTxicj48YnI+IiwKZis9IlVuIGNvbnNlaWxsZXIgZW50cmVyYSBlbiBjb21tdW5pY2F0aW9uIHNvdXMgcGV1IGF2ZWMgdm91cyBhZmluIGRlIGRpc2N1dGVyIGRlIGNldHRlIHZhbGV1ciBldCB2b3VzIGVuIGV4cGxpcXVlciBsZXMgZMOpdGFpbHMuPGJyPjxicj4iLGYrPSJNZXJjaSBkZSBmYWlyZSBjb25maWFuY2Ugw6AgIitiKyIhPGJyPjxicj4iKTtmPWJ0b2EoZik7bj1idG9hKG4pO2VtYWlsSGFuZGxlci5vbkFmdGVyTGVhZENyZWF0ZWQ9e2FjdGlvbjpyLHN1YmplY3Q6bixtZXNzYWdlOmYsZW1haWw6YSxwaG9uZTprfX0saW5pdFRyYWRlSW5TdGVwMTpmdW5jdGlvbigpeyQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIFtuYW1lPXRyYWRlSW5BdmddIikudmFsKDApOyQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIFtuYW1lPXRyYWRlSW5Mb3ddIikudmFsKDApOyQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIFtuYW1lPXRyYWRlSW5IaWdoXSIpLnZhbCgwKTskKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBbbmFtZT10cmFkZUluVmFsdWVDQkJBdmFpbGFibGVWYWx1ZXNdIikudmFsKDApOwokKCJpbnB1dFtuYW1lPXRyYWRlSW5CYXJTbXNPckVtYWlsXSIpLnJlbW92ZUNsYXNzKCJyZXFSYWRpbyIpOyQoImlucHV0W25hbWU9dHJhZGVJblZhbHVlQ0JCQ2FsbGVkXSIpLnZhbCgwKTskKCJpbnB1dFtuYW1lPXRyYWRlSW5CYXJTbXNPckVtYWlsXTpjaGVja2VkIikucHJvcCgiY2hlY2tlZCIsITEpOyQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIHNlbGVjdFtuYW1lPSJWRUhJQ0xFT1BUSU9OUyJdJykuZmluZCgib3B0aW9uIikucmVtb3ZlKCk7JCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iUVVFU1RJT05TIl0nKS52YWwoIiIpOyQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIC50cmFkZUluQmFyU3RlcDEiKS5zaG93KCk7JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gLnRyYWRlSW5CYXJTdGVwMiIpLmhpZGUoKTskKCIjdHJhZGVJbkJhclBvcHVwRm9ybSAudHJhZGVJbkJhclN0ZXAzIikuaGlkZSgpOyQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIC50cmFkZUluQmFyU3RlcDQiKS5oaWRlKCk7CiQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIC50cmFkZUluQmFyU3RlcDUiKS5oaWRlKCk7JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gLnRyYWRlSW5CYXJTdGVwNiIpLmhpZGUoKTskKCIjdHJhZGVJbkJhclBvcHVwRm9ybSAjdHJhZGVJbkJhclBvcHVwU3VibWl0IikucGFyZW50KCkuc2hvdygpOyQoIiN0cmFkZUluQmFyUG9wdXBfZm9ybVcgI3RyYWRlSW5CYXJQb3B1cF9saW5lMSIpLnNob3coKTt0aGlzLnNldEhlaWdodE1vYmlsZSgxKTskKCIjdHJhZGVJbkJhclBvcHVwX2Zvcm1XIC50cmFkZUluRGlzY2xhaW1lciIpLnNob3coKTt0aGlzLnRyYWRlSW5Cb3R0b21Mb2dvSGVpZ3QoKX0saW5pdFRyYWRlSW5TdGVwMjpmdW5jdGlvbihhKXt2YXIgaz0kKCIjVHJhZGVJbkJhclBvcHVwQ29udGFpbmVyIikuZmluZCgiZm9ybSIpLmZpcnN0KCkuc2VyaWFsaXplQXJyYXkoKSxkPSQoIiNUcmFkZUluQmFyUG9wdXBDb250YWluZXIiKS5maW5kKCIuZW1haWxCb2R5IikuaHRtbCgpKyIiLGI9JCgiI1RyYWRlSW5CYXJQb3B1cENvbnRhaW5lciIpLmZpbmQoIi5lbWFpbFN1YmplY3QiKS5odG1sKCkrCiIiLGM9W107W10ucHVzaC5hcHBseShjLGspOyQuZWFjaChjLGZ1bmN0aW9uKCl7dmFyIGg9bmV3IFJlZ0V4cCgie1xcJCIrdGhpcy5uYW1lLnRvVXBwZXJDYXNlKCkrIn0iLCJnIiksZz10aGlzLnZhbHVlOyJTRUFSQ0hFRFZFSElDTEUiPT10aGlzLm5hbWUudG9VcHBlckNhc2UoKSYmKGc9IjxzcGFuIGlkPSdwaFNFQVJDSFZFSElDTEUnPiIrZysiPC9zcGFuPiIpO2Q9ZC5yZXBsYWNlKGgsZyk7Yj1iLnJlcGxhY2UoaCx0aGlzLnZhbHVlKX0pO2VtYWlsSGFuZGxlci5zdWJqZWN0PWI7ZW1haWxIYW5kbGVyLmJvZHk9ZDtlbWFpbEhhbmRsZXIuc2VuZFRvPWEuc2V0dGluZ3MuZm9ybS5zZW5kVG87ZW1haWxIYW5kbGVyLnNlbmRUb0FERkZvcm1hdD1hLnNldHRpbmdzLmZvcm0uc2VuZFRvQURGO2VtYWlsSGFuZGxlci5tYWlsSUQ9YS5zZXR0aW5ncy5mb3JtLmVtYWlsaWQ7IiIhPT1lbWFpbEhhbmRsZXIuc2VsZWN0ZWRTZW5kVG8mJihlbWFpbEhhbmRsZXIuc2VuZFRvPWVtYWlsSGFuZGxlci5zZWxlY3RlZFNlbmRUbyk7CiIiIT09ZW1haWxIYW5kbGVyLnNlbGVjdGVkU2VuZFRvQURGRm9ybWF0JiYoZW1haWxIYW5kbGVyLnNlbmRUb0FERkZvcm1hdD1lbWFpbEhhbmRsZXIuc2VsZWN0ZWRTZW5kVG9BREZGb3JtYXQpO2E9JCgiI1RyYWRlSW5CYXJQb3B1cENvbnRhaW5lciIpLmZpbmQoJ2lucHV0W25hbWU9IkZOQU1FIl0nKS52YWwoKS5zcGxpdCgiICIpO2VtYWlsSGFuZGxlci51c2VyRmlyc3ROYW1lPWEuc2hpZnQoKTtlbWFpbEhhbmRsZXIudXNlckxhc3ROYW1lPWEuam9pbigiICIpO2VtYWlsSGFuZGxlci51c2VyUGhvbmU9JCgiI1RyYWRlSW5CYXJQb3B1cENvbnRhaW5lciIpLmZpbmQoJ2lucHV0W25hbWU9IkVNQUlMUEhPTkUiXScpLnZhbCgpO2VtYWlsSGFuZGxlci51c2VyRW1haWw9JCgiI1RyYWRlSW5CYXJQb3B1cENvbnRhaW5lciIpLmZpbmQoJ2lucHV0W25hbWU9IkVNQUlMIl0nKS52YWwoKTthPWVtYWlsSGFuZGxlci5nZXRKc29uT2JqZWN0KCk7ZW1haWxIYW5kbGVyLnN1YmplY3Q9IiI7ZW1haWxIYW5kbGVyLmJvZHk9CiIiO2s9JCgiYm9keSIpLmhhc0NsYXNzKCJFTkdMSVNIIik\/IkVOR0xJU0giOiJGUkVOQ0giOyQuYWpheCh7dHlwZToiUE9TVCIsdXJsOigiRU5HTElTSCI9PWs\/Ii9lbi8iOiIvZnIvIikrIi9hamF4L3JlZ2lzdGVyVHJhZGVMZWFkP3dzd2lkdGg9MCIsZGF0YVR5cGU6Impzb24iLGRhdGE6YSxzdWNjZXNzOmZ1bmN0aW9uKGgpe2gucGFydGlhbExlYWRJRCYmJCgiI1RyYWRlSW5CYXJQb3B1cENvbnRhaW5lciIpLmZpbmQoJ2lucHV0W25hbWU9InRyYWRlaW5iYXJSZWdpc3RlclBhcnRpYWxJRCJdJykudmFsKGgucGFydGlhbExlYWRJRCl9fSk7JCgiLnRyYWRlSW5CYXJTdGVwMSIpLmhpZGUoKTskKCIjdHJhZGVJbkJhclBvcHVwX2Zvcm1XIC50cmFkZUluRGlzY2xhaW1lciIpLmhpZGUoKTthPSQoImJvZHkiKS5oYXNDbGFzcygiRU5HTElTSCIpPyQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9IllFQVJFWCJdJykudmFsKCkrIiAiKyQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9Ik1BS0VFWCJdJykudmFsKCkrCiIgIiskKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJNT0RFTEVYIl0nKS52YWwoKTokKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJNQUtFRVgiXScpLnZhbCgpKyIgIiskKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJNT0RFTEVYIl0nKS52YWwoKSsiICIrJCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iWUVBUkVYIl0nKS52YWwoKTskKCIudHJhZGVJbkJhclN0ZXAyVGl0bGUiKS50ZXh0KCQoIi50cmFkZUluQmFyU3RlcDJUaXRsZSIpLnRleHQoKSsiICIrYSk7JCgiaW5wdXRbbmFtZT10cmFkZUluQmFyU21zT3JFbWFpbF0iKS5hZGRDbGFzcygicmVxUmFkaW8iKTskKCIudHJhZGVJbkJhclN0ZXAyIikuc2hvdygpfSxpbml0VHJhZGVJblN0ZXAzOmZ1bmN0aW9uKCl7cG9wdXBJc1N1Ym1pdHRpbmc9ITE7JCgiI3RyYWRlSW5TdGVwM1llcyIpLm9uKCJjbGljayIsZnVuY3Rpb24oKXt0cmFkZWlucG9wdXBkMmMudHJhZGVJblN0ZXAzWWVzKCk7CnJldHVybiExfSk7JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gI3RyYWRlSW5CYXJQb3B1cFN1Ym1pdCIpLnBhcmVudCgpLmhpZGUoKTskKCIjdHJhZGVJbkJhclBvcHVwX2Zvcm1XIC50cmFkZUluRGlzY2xhaW1lciIpLmhpZGUoKTskKCIjdHJhZGVJbkJhclBvcHVwRm9ybSAudHJhZGVJbkJhclN0ZXAxIikuaGlkZSgpOyQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIC50cmFkZUluQmFyU3RlcDIiKS5oaWRlKCk7JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gLnRyYWRlSW5CYXJTdGVwMyIpLnNob3coKTskKCIjdHJhZGVJbkJhclBvcHVwRm9ybSAudHJhZGVJbkJhclN0ZXA0IikuaGlkZSgpOyQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIC50cmFkZUluQmFyU3RlcDUiKS5oaWRlKCk7JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gLnRyYWRlSW5CYXJTdGVwNiIpLmhpZGUoKTt0aGlzLnNldEhlaWdodE1vYmlsZSgzKTskKCJpbnB1dFtuYW1lPXN0ZXAzZG9uZV0iKS52YWwoMSk7dGhpcy50cmFkZUluQm90dG9tTG9nb0hlaWd0KCl9LAp0cmFkZUluU3RlcDNZZXM6ZnVuY3Rpb24oKXt0aGlzLmluaXRUcmFkZUluU3RlcDQoKX0saW5pdFRyYWRlSW5TdGVwNDpmdW5jdGlvbigpeyQoIiN0cmFkZUluQmFyUG9wdXBGb3JtICN0cmFkZUluQmFyUG9wdXBTdWJtaXQiKS5wYXJlbnQoKS5oaWRlKCk7JCgiI3RyYWRlSW5CYXJQb3B1cF9mb3JtVyAudHJhZGVJbkRpc2NsYWltZXIiKS5oaWRlKCk7JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gLnRyYWRlSW5CYXJTdGVwMSIpLmhpZGUoKTskKCIjdHJhZGVJbkJhclBvcHVwRm9ybSAudHJhZGVJbkJhclN0ZXAyIikuaGlkZSgpOyQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIC50cmFkZUluQmFyU3RlcDMiKS5oaWRlKCk7JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gLnRyYWRlSW5CYXJTdGVwNCIpLnNob3coKTskKCIjdHJhZGVJbkJhclBvcHVwRm9ybSAudHJhZGVJbkJhclN0ZXA1IikuaGlkZSgpOyQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIC50cmFkZUluQmFyU3RlcDYiKS5oaWRlKCk7dGhpcy5zZXRIZWlnaHRNb2JpbGUoNCk7CiQoIiN0cmFkZUluU3RlcDRZZXMiKS5vbigiY2xpY2siLGZ1bmN0aW9uKCl7aWYoIiI9PSQoIiN0cmFkZUluS2V5U2VsZWN0IikudmFsKCkpcmV0dXJuICQoIiN0cmFkZUluS2V5U2VsZWN0IikuYWRkQ2xhc3MoInZhbGlkaXR5LWVycm9uZW91cyIpLCExO3RyYWRlaW5wb3B1cGQyYy50cmFkZUluU3RlcDRDb250aW51ZSgpO3JldHVybiExfSk7JCgiI3RyYWRlSW5LZXlTZWxlY3QiKS5vbigiY2hhbmdlIixmdW5jdGlvbigpeyQoIiN0cmFkZUluS2V5U2VsZWN0IikucmVtb3ZlQ2xhc3MoInZhbGlkaXR5LWVycm9uZW91cyIpfSk7dGhpcy50cmFkZUluQm90dG9tTG9nb0hlaWd0KCl9LHRyYWRlSW5TdGVwNENvbnRpbnVlOmZ1bmN0aW9uKCl7IiI9PSQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9VklORVhdIikudmFsKCk\/dGhpcy5pbml0VHJhZGVJblN0ZXA1KCk6dGhpcy5pbml0VHJhZGVJblN0ZXA2KCl9LGluaXRUcmFkZUluU3RlcDU6ZnVuY3Rpb24oKXskKCIjdHJhZGVJbkJhclBvcHVwRm9ybSAjdHJhZGVJbkJhclBvcHVwU3VibWl0IikucGFyZW50KCkuaGlkZSgpOwokKCIjdHJhZGVJbkJhclBvcHVwX2Zvcm1XIC50cmFkZUluRGlzY2xhaW1lciIpLmhpZGUoKTskKCIjdHJhZGVJbkJhclBvcHVwRm9ybSAudHJhZGVJbkJhclN0ZXAxIikuaGlkZSgpOyQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIC50cmFkZUluQmFyU3RlcDIiKS5oaWRlKCk7JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gLnRyYWRlSW5CYXJTdGVwMyIpLmhpZGUoKTskKCIjdHJhZGVJbkJhclBvcHVwRm9ybSAudHJhZGVJbkJhclN0ZXA0IikuaGlkZSgpOyQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIC50cmFkZUluQmFyU3RlcDUiKS5zaG93KCk7JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gLnRyYWRlSW5CYXJTdGVwNiIpLmhpZGUoKTt0aGlzLnNldEhlaWdodE1vYmlsZSg1KTskKCIjdHJhZGVJblN0ZXA1WWVzIikub24oImNsaWNrIixmdW5jdGlvbigpe3RyYWRlaW5wb3B1cGQyYy50cmFkZUluU3RlcDVDb250aW51ZSgpO3JldHVybiExfSk7dGhpcy50cmFkZUluQm90dG9tTG9nb0hlaWd0KCl9LAp0cmFkZUluU3RlcDVDb250aW51ZTpmdW5jdGlvbigpeyQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9VklORVhdIikudmFsKCQoIiN0cmFkZUluQmFyUG9wdXBGb3JtICNzdGVwNVZpbiIpLnZhbCgpKTt0aGlzLmluaXRUcmFkZUluU3RlcDYoKX0saW5pdFRyYWRlSW5TdGVwNjpmdW5jdGlvbigpeyQoIiN0cmFkZUluQmFyUG9wdXBfZm9ybVcgI3RyYWRlSW5CYXJQb3B1cF9saW5lMSIpLmhpZGUoKTskKCIjdHJhZGVJbkJhclBvcHVwRm9ybSAjdHJhZGVJbkJhclBvcHVwU3VibWl0IikucGFyZW50KCkuaGlkZSgpOyQoIiN0cmFkZUluQmFyUG9wdXBfZm9ybVcgLnRyYWRlSW5EaXNjbGFpbWVyIikuaGlkZSgpOyQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIC50cmFkZUluQmFyU3RlcDEiKS5oaWRlKCk7JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gLnRyYWRlSW5CYXJTdGVwMiIpLmhpZGUoKTskKCIjdHJhZGVJbkJhclBvcHVwRm9ybSAudHJhZGVJbkJhclN0ZXAzIikuaGlkZSgpOwokKCIjdHJhZGVJbkJhclBvcHVwRm9ybSAudHJhZGVJbkJhclN0ZXA0IikuaGlkZSgpOyQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIC50cmFkZUluQmFyU3RlcDUiKS5oaWRlKCk7JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gLnRyYWRlSW5CYXJTdGVwNiIpLnNob3coKTt0aGlzLnNldEhlaWdodE1vYmlsZSg2KTt0aGlzLmluaXRJbWFnZVVwbG9hZCgpOyQoIiN0cmFkZUluU3RlcDZZZXMiKS5vbigiY2xpY2siLGZ1bmN0aW9uKCl7JCgiI3RyYWRlSW5TdGVwNlllcyIpLmhpZGUoKTt0cmFkZWlucG9wdXBkMmMudXBsb2FkSW1hZ2VzVG9CYWNrZW5kKCl9KTt0aGlzLnRyYWRlSW5Cb3R0b21Mb2dvSGVpZ3QoKX0saW5pdEltYWdlVXBsb2FkOmZ1bmN0aW9uKCl7ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gLnVwbG9hZC1hcmVhIikuZm9yRWFjaChhPT57Y29uc3Qgaz1hLnF1ZXJ5U2VsZWN0b3IoJ2lucHV0W3R5cGU9ImZpbGUiXScpLGQ9YS5xdWVyeVNlbGVjdG9yKCIucGxhY2Vob2xkZXIiKSwKYj1hLnF1ZXJ5U2VsZWN0b3IoIi5kZWxldGUtYnRuIiksYz1hLnF1ZXJ5U2VsZWN0b3IoIi5hZGQtaWNvbiIpLGg9YS5kYXRhc2V0Lm92ZXJsYXk7aCYmKGEuc3R5bGUuYmFja2dyb3VuZEltYWdlPWB1cmwoJHtofSlgKTthLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwoKT0+e2sudmFsdWV8fGsuY2xpY2soKX0pO2suYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlIixnPT57aWYoKGc9Zy50YXJnZXQuZmlsZXNbMF0pJiZnLnR5cGUuc3RhcnRzV2l0aCgiaW1hZ2UvIikpe2NvbnN0IGU9bmV3IEZpbGVSZWFkZXI7ZS5vbmxvYWQ9KCk9PntkLnNyYz1lLnJlc3VsdDtkLnN0eWxlLmRpc3BsYXk9ImJsb2NrIjthLnN0eWxlLmJhY2tncm91bmRJbWFnZT0ibm9uZSI7Yi5zdHlsZS5kaXNwbGF5PSJibG9jayI7Yy5zdHlsZS5kaXNwbGF5PSJub25lIn07ZS5yZWFkQXNEYXRhVVJMKGcpfWVsc2Ugay52YWx1ZT0iIn0pO2IuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLGc9PntnLnN0b3BQcm9wYWdhdGlvbigpOwprLnZhbHVlPSIiO2Quc3JjPSIiO2Quc3R5bGUuZGlzcGxheT0ibm9uZSI7YS5zdHlsZS5iYWNrZ3JvdW5kSW1hZ2U9YHVybCgke2h9KWA7Yi5zdHlsZS5kaXNwbGF5PSJub25lIjtjLnN0eWxlLmRpc3BsYXk9ImZsZXgiO3JldHVybiExfSk7Yi5zdHlsZS5kaXNwbGF5PSJub25lIjtkLnN0eWxlLmRpc3BsYXk9Im5vbmUifSl9LHVwbG9hZEltYWdlc1RvQmFja2VuZDpmdW5jdGlvbigpe3ZhciBhPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIiN0cmFkZUluQmFyUG9wdXBGb3JtIC51cGxvYWQtYXJlYSIpO2NvbnN0IGs9bmV3IEZvcm1EYXRhO2xldCBkPSExO2EuZm9yRWFjaChiPT57Yj1iLnF1ZXJ5U2VsZWN0b3IoJ2lucHV0W3R5cGU9ImZpbGUiXScpOzA8Yi5maWxlcy5sZW5ndGgmJmIuZmlsZXNbMF0udHlwZS5zdGFydHNXaXRoKCJpbWFnZS8iKSYmKGsuYXBwZW5kKCJpbWFnZXNbXSIsYi5maWxlc1swXSxiLmdldEF0dHJpYnV0ZSgiZGF0YS1uYW1lIikpLGQ9ITApfSk7ZD8oYT0KJCgiYm9keSIpLmhhc0NsYXNzKCJFTkdMSVNIIik\/IkVOR0xJU0giOiJGUkVOQ0giLCQuYWpheCh7dHlwZToiUE9TVCIsdXJsOigiRU5HTElTSCI9PWE\/Ii9lbi8iOiIvZnIvIikrIi9hamF4L3VwbG9hZFRyYWRlSW5JbWFnZXMiLGNvbnRlbnRUeXBlOiExLHByb2Nlc3NEYXRhOiExLGRhdGE6ayxzdWNjZXNzOmZ1bmN0aW9uKGIpe2lmKGIubGVuZ3RoKXskZGF0YU9iaj1KU09OLnBhcnNlKGIpOyRpbWFnZUV4VmFsdWU9IiI7Zm9yKGI9MDtiPCRkYXRhT2JqLmxlbmd0aDtiKyspJGltYWdlRXhWYWx1ZSs9JGRhdGFPYmpbYl0uZmlsZW5hbWUrIiA6ICIrJGRhdGFPYmpbYl0uZmlsZVVybCsiIFxuIjskKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJUUkFERUlOSU1BR0VFWCJdJykudmFsKCRpbWFnZUV4VmFsdWUpfSQoIi50cmFkZUluQmFyUG9wdXBTdWJtaXQiKS50cmlnZ2VyKCJjbGljayIpfX0pKTokKCIudHJhZGVJbkJhclBvcHVwU3VibWl0IikudHJpZ2dlcigiY2xpY2siKX0sCnNldEhlaWdodE1vYmlsZShhKXtpZigiMSI9PSQoIiNpc21vYmlsZSIpLnZhbCgpKXN3aXRjaChhKXtjYXNlIDI6JCgiI1RyYWRlSW5CYXJQb3B1cENvbnRhaW5lciIpLmNzcygiaGVpZ2h0IiwiNTQwcHgiKTskKCIjdHJhZGVJbkJhclBvcHVwX2Zvcm1XIikuY3NzKCJoZWlnaHQiLCI1MzBweCIpO2JyZWFrO2Nhc2UgMzokKCIjVHJhZGVJbkJhclBvcHVwQ29udGFpbmVyIikuY3NzKCJoZWlnaHQiLCI2MDBweCIpOyQoIiN0cmFkZUluQmFyUG9wdXBfZm9ybVciKS5jc3MoImhlaWdodCIsIjU5MHB4Iik7YnJlYWs7Y2FzZSA0OiQoIiNUcmFkZUluQmFyUG9wdXBDb250YWluZXIiKS5jc3MoImhlaWdodCIsIjU0MHB4Iik7JCgiI3RyYWRlSW5CYXJQb3B1cF9mb3JtVyIpLmNzcygiaGVpZ2h0IiwiNTMwcHgiKTticmVhaztjYXNlIDU6JCgiI1RyYWRlSW5CYXJQb3B1cENvbnRhaW5lciIpLmNzcygiaGVpZ2h0IiwiNTMwcHgiKTskKCIjdHJhZGVJbkJhclBvcHVwX2Zvcm1XIikuY3NzKCJoZWlnaHQiLAoiNTIwcHgiKTticmVhaztjYXNlIDY6JCgiI1RyYWRlSW5CYXJQb3B1cENvbnRhaW5lciIpLmNzcygiaGVpZ2h0IiwiNzUwcHgiKTskKCIjdHJhZGVJbkJhclBvcHVwX2Zvcm1XIikuY3NzKCJoZWlnaHQiLCI3NDBweCIpO2JyZWFrO2RlZmF1bHQ6JCgiI1RyYWRlSW5CYXJQb3B1cENvbnRhaW5lciIpLmNzcygiaGVpZ2h0IiwiOTgwcHgiKSwkKCIjdHJhZGVJbkJhclBvcHVwX2Zvcm1XIikuY3NzKCJoZWlnaHQiLCI5NzBweCIpfX0sdHJhZGVJbkJvdHRvbUxvZ29IZWlndDpmdW5jdGlvbigpe2lmKCQoIi50cmFkZUluQm90dG9tTG9nbyIpLmxlbmd0aCl7dmFyIGE9JCgiI3RyYWRlSW5CYXJQb3B1cF9mb3JtVyIpO2xldCBrPSQoIi50cmFkZUluQm90dG9tTG9nbyIpLGQ9JCgiI3RyYWRlSW5CYXJQb3B1cF9mb3JtVyAudHJhZGVJbkRpc2NsYWltZXIiKSxiPSQoIiNpc01vYmlsZSIpLmxlbmd0aCYmIjEiPT0kKCIjaXNNb2JpbGUiKS52YWwoKSxjPSQoIi5uaXZNYWtlTW9kZWxTZWxlY3RDb250YWluZXIiKS5pcygiOnZpc2libGUiKTsKYT1hLmlubmVySGVpZ2h0KCktay5wb3NpdGlvbigpLnRvcDtkLmxlbmd0aCYmZC5pcygiOnZpc2libGUiKSYmKGEtPWQub3V0ZXJIZWlnaHQoITApKyhiPzA6Yz8xMDozMCkpOyQoIi50cmFkZUluQm90dG9tTG9nbyIpLmhlaWdodChhKyJweCIpfX19OwovKiogL20vanMvanF1ZXJ5LnByZXR0eVBob3RvMi5qcyAqKi8KdmFyIF9fX2QyY19qcXVlcnlwcmV0dHlQaG90bzJqc19jX29uPSIyMDI1LTA1LTIzIDE3OjExOjQzIjsndXNlIHN0cmljdCc7dmFyIF9fX2QyY19qcXVlcnlwcmV0dHlQaG90bzJqc19jX29uPSIyMDI0LTAzLTI1IDEyOjMzOjMzIjsidXNlIHN0cmljdCI7CihmdW5jdGlvbihhKXtmdW5jdGlvbiB5KCl7dmFyIGU9bG9jYXRpb24uaHJlZjtyZXR1cm4gaGFzaHRhZz0tMSE9PWUuaW5kZXhPZigiI3ByZXR0eVBob3RvIik\/ZGVjb2RlVVJJKGUuc3Vic3RyaW5nKGUuaW5kZXhPZigiI3ByZXR0eVBob3RvIikrMSxlLmxlbmd0aCkpOiExfWZ1bmN0aW9uIGwoZSxwKXtlPWUucmVwbGFjZSgvW1xbXS8sIlxcWyIpLnJlcGxhY2UoL1tcXV0vLCJcXF0iKTtlPShuZXcgUmVnRXhwKCJbXFw\/Jl0iK2UrIj0oW14mI10qKSIpKS5leGVjKHApO3JldHVybiBudWxsPT1lPyIiOmVbMV19YS5wcmV0dHlQaG90bz17dmVyc2lvbjoiMy4xLjUifTthLmZuLnByZXR0eVBob3RvPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHAoKXthKCIucHBfbG9hZGVySWNvbiIpLmhpZGUoKTtwcm9qZWN0ZWRUb3A9c2Nyb2xsX3Bvcy5zY3JvbGxUb3ArKGsvMi1kLmNvbnRhaW5lckhlaWdodC8yKTswPnByb2plY3RlZFRvcCYmKHByb2plY3RlZFRvcD0wKTskcHB0LmZhZGVUbyhiLmFuaW1hdGlvbl9zcGVlZCwKMSk7JHBwX3BpY19ob2xkZXIuZmluZCgiLnBwX2NvbnRlbnQiKS5hbmltYXRlKHtoZWlnaHQ6ZC5jb250ZW50SGVpZ2h0LHdpZHRoOmQuY29udGVudFdpZHRofSxiLmFuaW1hdGlvbl9zcGVlZCk7JHBwX3BpY19ob2xkZXIuYW5pbWF0ZSh7dG9wOnByb2plY3RlZFRvcCxsZWZ0OjA+aC8yLWQuY29udGFpbmVyV2lkdGgvMj8wOmgvMi1kLmNvbnRhaW5lcldpZHRoLzIsd2lkdGg6ZC5jb250YWluZXJXaWR0aH0sYi5hbmltYXRpb25fc3BlZWQsZnVuY3Rpb24oKXskcHBfcGljX2hvbGRlci5maW5kKCIucHBfaG92ZXJDb250YWluZXIsI2Z1bGxSZXNJbWFnZSIpLmhlaWdodChkLmhlaWdodCkud2lkdGgoZC53aWR0aCk7JHBwX3BpY19ob2xkZXIuZmluZCgiLnBwX2ZhZGUiKS5mYWRlSW4oYi5hbmltYXRpb25fc3BlZWQpO2lzU2V0JiYiaW1hZ2UiPT10KHBwX2ltYWdlc1tzZXRfcG9zaXRpb25dKT8kcHBfcGljX2hvbGRlci5maW5kKCIucHBfaG92ZXJDb250YWluZXIiKS5zaG93KCk6JHBwX3BpY19ob2xkZXIuZmluZCgiLnBwX2hvdmVyQ29udGFpbmVyIikuaGlkZSgpOwpiLmFsbG93X2V4cGFuZCYmKGQucmVzaXplZD9hKCJhLnBwX2V4cGFuZCxhLnBwX2NvbnRyYWN0Iikuc2hvdygpOmEoImEucHBfZXhwYW5kIikuaGlkZSgpKTshYi5hdXRvcGxheV9zbGlkZXNob3d8fHF8fHV8fGEucHJldHR5UGhvdG8uc3RhcnRTbGlkZXNob3coKTtiLmNoYW5nZXBpY3R1cmVjYWxsYmFjaygpO3U9ITB9KTtpc1NldCYmYi5vdmVybGF5X2dhbGxlcnkmJiJpbWFnZSI9PXQocHBfaW1hZ2VzW3NldF9wb3NpdGlvbl0pPyhpdGVtV2lkdGg9NTcsbmF2V2lkdGg9ImZhY2Vib29rIj09Yi50aGVtZXx8InBwX2RlZmF1bHQiPT1iLnRoZW1lPzUwOjMwLGl0ZW1zUGVyUGFnZT1NYXRoLmZsb29yKChkLmNvbnRhaW5lcldpZHRoLTEwMC1uYXZXaWR0aCkvaXRlbVdpZHRoKSxpdGVtc1BlclBhZ2U9aXRlbXNQZXJQYWdlPHBwX2ltYWdlcy5sZW5ndGg\/aXRlbXNQZXJQYWdlOnBwX2ltYWdlcy5sZW5ndGgsdG90YWxQYWdlPU1hdGguY2VpbChwcF9pbWFnZXMubGVuZ3RoL2l0ZW1zUGVyUGFnZSktCjEsMD09dG90YWxQYWdlPyhuYXZXaWR0aD0wLCRwcF9nYWxsZXJ5LmZpbmQoIi5wcF9hcnJvd19uZXh0LC5wcF9hcnJvd19wcmV2aW91cyIpLmhpZGUoKSk6JHBwX2dhbGxlcnkuZmluZCgiLnBwX2Fycm93X25leHQsLnBwX2Fycm93X3ByZXZpb3VzIikuc2hvdygpLGdhbGxlcnlXaWR0aD1pdGVtc1BlclBhZ2UqaXRlbVdpZHRoLGZ1bGxHYWxsZXJ5V2lkdGg9cHBfaW1hZ2VzLmxlbmd0aCppdGVtV2lkdGgsJHBwX2dhbGxlcnkuY3NzKCJtYXJnaW4tbGVmdCIsLShnYWxsZXJ5V2lkdGgvMituYXZXaWR0aC8yKSkuZmluZCgiZGl2OmZpcnN0Iikud2lkdGgoZ2FsbGVyeVdpZHRoKzUpLmZpbmQoInVsIikud2lkdGgoZnVsbEdhbGxlcnlXaWR0aCkuZmluZCgibGkuc2VsZWN0ZWQiKS5yZW1vdmVDbGFzcygic2VsZWN0ZWQiKSxnb1RvUGFnZT1NYXRoLmZsb29yKHNldF9wb3NpdGlvbi9pdGVtc1BlclBhZ2UpPHRvdGFsUGFnZT9NYXRoLmZsb29yKHNldF9wb3NpdGlvbi9pdGVtc1BlclBhZ2UpOgp0b3RhbFBhZ2UsYS5wcmV0dHlQaG90by5jaGFuZ2VHYWxsZXJ5UGFnZShnb1RvUGFnZSksJHBwX2dhbGxlcnlfbGkuZmlsdGVyKCI6ZXEoIitzZXRfcG9zaXRpb24rIikiKS5hZGRDbGFzcygic2VsZWN0ZWQiKSk6JHBwX3BpY19ob2xkZXIuZmluZCgiLnBwX2NvbnRlbnQiKS5vZmYoIm1vdXNlZW50ZXIgbW91c2VsZWF2ZSIpO2UuYWpheGNhbGxiYWNrKCl9ZnVuY3Rpb24geihjKXskcHBfcGljX2hvbGRlci5maW5kKCIjcHBfZnVsbF9yZXMgb2JqZWN0LCNwcF9mdWxsX3JlcyBlbWJlZCIpLmNzcygidmlzaWJpbGl0eSIsImhpZGRlbiIpOyRwcF9waWNfaG9sZGVyLmZpbmQoIi5wcF9mYWRlIikuZmFkZU91dChiLmFuaW1hdGlvbl9zcGVlZCxmdW5jdGlvbigpe2EoIi5wcF9sb2FkZXJJY29uIikuc2hvdygpO2MoKX0pfWZ1bmN0aW9uIEcoYyl7MTxjP2EoIi5wcF9uYXYiKS5zaG93KCk6YSgiLnBwX25hdiIpLmhpZGUoKX1mdW5jdGlvbiBnKGMsZil7cmVzaXplZD0hMTtBKGMsZik7aW1hZ2VXaWR0aD0KYztpbWFnZUhlaWdodD1mO2lmKChtPmh8fG4+aykmJmRvcmVzaXplJiZiLmFsbG93X3Jlc2l6ZSYmIXIpe3Jlc2l6ZWQ9ITA7Zm9yKGZpdHRpbmc9ITE7IWZpdHRpbmc7KW0+aD8oaW1hZ2VXaWR0aD1oLTUwLGltYWdlSGVpZ2h0PWYvYyppbWFnZVdpZHRoKTpuPms\/KGltYWdlSGVpZ2h0PWstNTAsaW1hZ2VXaWR0aD1jL2YqaW1hZ2VIZWlnaHQpOmZpdHRpbmc9ITAsbj1pbWFnZUhlaWdodCxtPWltYWdlV2lkdGg7KG0+aHx8bj5rKSYmZyhtLG4pO0EoaW1hZ2VXaWR0aCxpbWFnZUhlaWdodCl9cmV0dXJue3dpZHRoOk1hdGguZmxvb3IoaW1hZ2VXaWR0aCksaGVpZ2h0Ok1hdGguZmxvb3IoaW1hZ2VIZWlnaHQpLGNvbnRhaW5lckhlaWdodDpNYXRoLmZsb29yKG4pLGNvbnRhaW5lcldpZHRoOk1hdGguZmxvb3IobSkrMipiLmhvcml6b250YWxfcGFkZGluZyxjb250ZW50SGVpZ2h0Ok1hdGguZmxvb3IodiksY29udGVudFdpZHRoOk1hdGguZmxvb3IoQikscmVzaXplZH19ZnVuY3Rpb24gQShjLApmKXtjPXBhcnNlRmxvYXQoYyk7Zj1wYXJzZUZsb2F0KGYpOyRwcF9kZXRhaWxzPSRwcF9waWNfaG9sZGVyLmZpbmQoIi5wcF9kZXRhaWxzIik7JHBwX2RldGFpbHMud2lkdGgoYyk7ZGV0YWlsc0hlaWdodD1wYXJzZUZsb2F0KCRwcF9kZXRhaWxzLmNzcygibWFyZ2luVG9wIikpK3BhcnNlRmxvYXQoJHBwX2RldGFpbHMuY3NzKCJtYXJnaW5Cb3R0b20iKSk7JHBwX2RldGFpbHM9JHBwX2RldGFpbHMuY2xvbmUoKS5hZGRDbGFzcyhiLnRoZW1lKS53aWR0aChjKS5hcHBlbmRUbyhhKCJib2R5IikpLmNzcyh7cG9zaXRpb246ImFic29sdXRlIix0b3A6LTFFNH0pO2RldGFpbHNIZWlnaHQrPSRwcF9kZXRhaWxzLmhlaWdodCgpO2RldGFpbHNIZWlnaHQ9MzQ+PWRldGFpbHNIZWlnaHQ\/MzY6ZGV0YWlsc0hlaWdodDskcHBfZGV0YWlscy5yZW1vdmUoKTskcHBfdGl0bGU9JHBwX3BpY19ob2xkZXIuZmluZCgiLnBwdCIpOyRwcF90aXRsZS53aWR0aChjKTt0aXRsZUhlaWdodD1wYXJzZUZsb2F0KCRwcF90aXRsZS5jc3MoIm1hcmdpblRvcCIpKSsKcGFyc2VGbG9hdCgkcHBfdGl0bGUuY3NzKCJtYXJnaW5Cb3R0b20iKSk7JHBwX3RpdGxlPSRwcF90aXRsZS5jbG9uZSgpLmFwcGVuZFRvKGEoImJvZHkiKSkuY3NzKHtwb3NpdGlvbjoiYWJzb2x1dGUiLHRvcDotMUU0fSk7dGl0bGVIZWlnaHQrPSRwcF90aXRsZS5oZWlnaHQoKTskcHBfdGl0bGUucmVtb3ZlKCk7dj1mK2RldGFpbHNIZWlnaHQ7Qj1jO249dit0aXRsZUhlaWdodCskcHBfcGljX2hvbGRlci5maW5kKCIucHBfdG9wIikuaGVpZ2h0KCkrJHBwX3BpY19ob2xkZXIuZmluZCgiLnBwX2JvdHRvbSIpLmhlaWdodCgpO209Y31mdW5jdGlvbiB0KGMpe3JldHVybiBjLm1hdGNoKC95b3V0dWJlXC5jb21cL3dhdGNoL2kpfHxjLm1hdGNoKC95b3V0dVwuYmUvaSk\/InlvdXR1YmUiOmMubWF0Y2goL3ZpbWVvXC5jb20vaSk\/InZpbWVvIjpjLm1hdGNoKC9cLm1wNC9pKT8ibXA0IjpjLm1hdGNoKC9hdnUzZC9pKT8iYXZ1M2QiOmMubWF0Y2goL1xiLm1vdlxiL2kpPyJxdWlja3RpbWUiOgpjLm1hdGNoKC9cYi5zd2ZcYi9pKT8iZmxhc2giOmMubWF0Y2goL1xiaWZyYW1lPXRydWVcYi9pKT8iaWZyYW1lIjpjLm1hdGNoKC9cYmFqYXg9dHJ1ZVxiL2kpPyJhamF4IjpjLm1hdGNoKC9cYmN1c3RvbT10cnVlXGIvaSk\/ImN1c3RvbSI6IiMiPT1jLnN1YnN0cigwLDEpPyJpbmxpbmUiOiJpbWFnZSJ9ZnVuY3Rpb24gdygpe2RvcmVzaXplJiYidW5kZWZpbmVkIiE9dHlwZW9mICRwcF9waWNfaG9sZGVyJiYoc2Nyb2xsX3Bvcz1DKCksY29udGVudEhlaWdodD0kcHBfcGljX2hvbGRlci5oZWlnaHQoKSxjb250ZW50d2lkdGg9JHBwX3BpY19ob2xkZXIud2lkdGgoKSxwcm9qZWN0ZWRUb3A9ay8yK3Njcm9sbF9wb3Muc2Nyb2xsVG9wLWNvbnRlbnRIZWlnaHQvMiwwPnByb2plY3RlZFRvcCYmKHByb2plY3RlZFRvcD0wKSxjb250ZW50SGVpZ2h0Pmt8fCRwcF9waWNfaG9sZGVyLmNzcyh7dG9wOnByb2plY3RlZFRvcCxsZWZ0OmgvMitzY3JvbGxfcG9zLnNjcm9sbExlZnQtY29udGVudHdpZHRoLwoyfSkpfWZ1bmN0aW9uIEMoKXtpZihzZWxmLnBhZ2VZT2Zmc2V0KXJldHVybntzY3JvbGxUb3A6c2VsZi5wYWdlWU9mZnNldCxzY3JvbGxMZWZ0OnNlbGYucGFnZVhPZmZzZXR9O2lmKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCYmZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRvcClyZXR1cm57c2Nyb2xsVG9wOmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3Asc2Nyb2xsTGVmdDpkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsTGVmdH07aWYoZG9jdW1lbnQuYm9keSlyZXR1cm57c2Nyb2xsVG9wOmRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wLHNjcm9sbExlZnQ6ZG9jdW1lbnQuYm9keS5zY3JvbGxMZWZ0fX1mdW5jdGlvbiBEKGMpe2Iuc29jaWFsX3Rvb2xzJiYoZmFjZWJvb2tfbGlrZV9saW5rPWIuc29jaWFsX3Rvb2xzLnJlcGxhY2UoIntsb2NhdGlvbl9ocmVmfSIsZW5jb2RlVVJJQ29tcG9uZW50KGxvY2F0aW9uLmhyZWYpKSk7Yi5tYXJrdXA9Yi5tYXJrdXAucmVwbGFjZSgie3BwX3NvY2lhbH0iLAoiIik7YSgiYm9keSIpLmFwcGVuZChiLm1hcmt1cCk7JHBwX3BpY19ob2xkZXI9YSgiLnBwX3BpY19ob2xkZXIiKTskcHB0PWEoIi5wcHQiKTskcHBfb3ZlcmxheT1hKCJkaXYucHBfb3ZlcmxheSIpO2lmKGlzU2V0JiZiLm92ZXJsYXlfZ2FsbGVyeSl7Y3VycmVudEdhbGxlcnlQYWdlPTA7dG9JbmplY3Q9IiI7Zm9yKGM9MDtjPHBwX2ltYWdlcy5sZW5ndGg7YysrKXBwX2ltYWdlc1tjXS5tYXRjaCgvXGIoanBnfGpwZWd8cG5nfGdpZilcYi9naSk\/KGNsYXNzbmFtZT0iIixpbWdfc3JjPXBwX2ltYWdlc1tjXSk6KGNsYXNzbmFtZT0iZGVmYXVsdCIsaW1nX3NyYz0iIiksdG9JbmplY3QrPSI8bGkgY2xhc3M9JyIrY2xhc3NuYW1lKyInPjxhIGhyZWY9JyMnPjxpbWcgc3JjPSciK2ltZ19zcmMrIicgd2lkdGg9JzUwJyBhbHQ9JycgLz48L2E+PC9saT4iO3RvSW5qZWN0PWIuZ2FsbGVyeV9tYXJrdXAucmVwbGFjZSgve2dhbGxlcnl9L2csdG9JbmplY3QpOyRwcF9waWNfaG9sZGVyLmZpbmQoIiNwcF9mdWxsX3JlcyIpLmFmdGVyKHRvSW5qZWN0KTsKJHBwX2dhbGxlcnk9YSgiLnBwX3BpY19ob2xkZXIgLnBwX2dhbGxlcnkiKTskcHBfZ2FsbGVyeV9saT0kcHBfZ2FsbGVyeS5maW5kKCJsaSIpOyRwcF9nYWxsZXJ5LmZpbmQoIi5wcF9hcnJvd19uZXh0Iikub24oImNsaWNrIixmdW5jdGlvbigpe2EucHJldHR5UGhvdG8uY2hhbmdlR2FsbGVyeVBhZ2UoIm5leHQiKTthLnByZXR0eVBob3RvLnN0b3BTbGlkZXNob3coKTtyZXR1cm4hMX0pOyRwcF9nYWxsZXJ5LmZpbmQoIi5wcF9hcnJvd19wcmV2aW91cyIpLm9uKCJjbGljayIsZnVuY3Rpb24oKXthLnByZXR0eVBob3RvLmNoYW5nZUdhbGxlcnlQYWdlKCJwcmV2aW91cyIpO2EucHJldHR5UGhvdG8uc3RvcFNsaWRlc2hvdygpO3JldHVybiExfSk7JHBwX3BpY19ob2xkZXIuZmluZCgiLnBwX2NvbnRlbnQiKS5vbigiaG92ZXIiLGZ1bmN0aW9uKCl7JHBwX3BpY19ob2xkZXIuZmluZCgiLnBwX2dhbGxlcnk6bm90KC5kaXNhYmxlZCkiKS5mYWRlSW4oKX0sZnVuY3Rpb24oKXskcHBfcGljX2hvbGRlci5maW5kKCIucHBfZ2FsbGVyeTpub3QoLmRpc2FibGVkKSIpLmZhZGVPdXQoKX0pOwppdGVtV2lkdGg9NTc7JHBwX2dhbGxlcnlfbGkuZWFjaChmdW5jdGlvbihmKXthKHRoaXMpLmZpbmQoImEiKS5vbigiY2xpY2siLGZ1bmN0aW9uKCl7YS5wcmV0dHlQaG90by5jaGFuZ2VQYWdlKGYpO2EucHJldHR5UGhvdG8uc3RvcFNsaWRlc2hvdygpO3JldHVybiExfSl9KX1iLnNsaWRlc2hvdyYmKCRwcF9waWNfaG9sZGVyLmZpbmQoIi5wcF9uYXYiKS5wcmVwZW5kKCc8YSBocmVmPSIjIiBjbGFzcz0icHBfcGxheSI+UGxheTwvYT4nKSwkcHBfcGljX2hvbGRlci5maW5kKCIucHBfbmF2IC5wcF9wbGF5Iikub24oImNsaWNrIixmdW5jdGlvbigpe2EucHJldHR5UGhvdG8uc3RhcnRTbGlkZXNob3coKTtyZXR1cm4hMX0pKTskcHBfcGljX2hvbGRlci5hdHRyKCJjbGFzcyIsInBwX3BpY19ob2xkZXIgIitiLnRoZW1lKTskcHBfb3ZlcmxheS5jc3Moe29wYWNpdHk6MCxoZWlnaHQ6YShkb2N1bWVudCkuaGVpZ2h0KCksd2lkdGg6YSh3aW5kb3cpLndpZHRoKCl9KS5vbigiY2xpY2siLGZ1bmN0aW9uKCl7Yi5tb2RhbHx8CmEucHJldHR5UGhvdG8uY2xvc2UoKX0pO2EoImEucHBfY2xvc2UiKS5vbigiY2xpY2siLGZ1bmN0aW9uKCl7YS5wcmV0dHlQaG90by5jbG9zZSgpO3JldHVybiExfSk7aWYoYi5hbGxvd19leHBhbmQpYSgiYS5wcF9leHBhbmQiKS5vbigiY2xpY2siLGZ1bmN0aW9uKGYpe2EodGhpcykuaGFzQ2xhc3MoInBwX2V4cGFuZCIpPyhhKHRoaXMpLnJlbW92ZUNsYXNzKCJwcF9leHBhbmQiKS5hZGRDbGFzcygicHBfY29udHJhY3QiKSxkb3Jlc2l6ZT0hMSk6KGEodGhpcykucmVtb3ZlQ2xhc3MoInBwX2NvbnRyYWN0IikuYWRkQ2xhc3MoInBwX2V4cGFuZCIpLGRvcmVzaXplPSEwKTt6KGZ1bmN0aW9uKCl7YS5wcmV0dHlQaG90by5vcGVuKCl9KTtyZXR1cm4hMX0pOyRwcF9waWNfaG9sZGVyLmZpbmQoIi5wcF9wcmV2aW91cywgLnBwX25hdiAucHBfYXJyb3dfcHJldmlvdXMiKS5vbigiY2xpY2siLGZ1bmN0aW9uKCl7YS5wcmV0dHlQaG90by5jaGFuZ2VQYWdlKCJwcmV2aW91cyIpO2EucHJldHR5UGhvdG8uc3RvcFNsaWRlc2hvdygpOwpyZXR1cm4hMX0pOyRwcF9waWNfaG9sZGVyLmZpbmQoIi5wcF9uZXh0LCAucHBfbmF2IC5wcF9hcnJvd19uZXh0Iikub24oImNsaWNrIixmdW5jdGlvbigpe2EucHJldHR5UGhvdG8uY2hhbmdlUGFnZSgibmV4dCIpO2EucHJldHR5UGhvdG8uc3RvcFNsaWRlc2hvdygpO3JldHVybiExfSk7dygpfWU9alF1ZXJ5LmV4dGVuZCh7aG9vazoicmVsIixhbmltYXRpb25fc3BlZWQ6ImZhc3QiLGFqYXhjYWxsYmFjazpmdW5jdGlvbigpe30sc2xpZGVzaG93OjVFMyxhdXRvcGxheV9zbGlkZXNob3c6ITEsb3BhY2l0eTouOCxzaG93X3RpdGxlOiEwLGFsbG93X3Jlc2l6ZTohMCxhbGxvd19leHBhbmQ6ITAsZGVmYXVsdF93aWR0aDo1MDAsZGVmYXVsdF9oZWlnaHQ6MzQ0LGNvdW50ZXJfc2VwYXJhdG9yX2xhYmVsOiIvIix0aGVtZToicHBfZGVmYXVsdCIsaG9yaXpvbnRhbF9wYWRkaW5nOjIwLGhpZGVmbGFzaDohMSx3bW9kZToib3BhcXVlIixhdXRvcGxheTohMCxtb2RhbDohMSxkZWVwbGlua2luZzohMCwKb3ZlcmxheV9nYWxsZXJ5OiEwLG92ZXJsYXlfZ2FsbGVyeV9tYXg6MzAsa2V5Ym9hcmRfc2hvcnRjdXRzOiEwLGNoYW5nZXBpY3R1cmVjYWxsYmFjazpmdW5jdGlvbigpe30sY2FsbGJhY2s6ZnVuY3Rpb24oKXt9LGllNl9mYWxsYmFjazohMCxtYXJrdXA6JzxkaXYgY2xhc3M9InBwX3BpY19ob2xkZXIiPiAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcHQiPiZuYnNwOzwvZGl2PiAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcF90b3AiPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHBfbGVmdCI+PC9kaXY+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcF9taWRkbGUiPjwvZGl2PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHBfcmlnaHQiPjwvZGl2PiAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHBfY29udGVudF9jb250YWluZXIiPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHBfbGVmdCI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjIiBjbGFzcz0icHBfZXhwYW5kIiB0aXRsZT0iRXhwYW5kIHRoZSBpbWFnZSI+RXhwYW5kPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHBfcmlnaHQiPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InBwX2NvbnRlbnQiPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcF9sb2FkZXJJY29uIj48L2Rpdj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHBfZmFkZSI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0icHBfY2xvc2UiIGhyZWY9IiMiPkNsb3NlPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHBfaG92ZXJDb250YWluZXIganF1ZXJ5cHAyIj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0icHBfbmV4dCIgaHJlZj0iIyI+bmV4dDwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0icHBfcHJldmlvdXMiIGhyZWY9IiMiPnByZXZpb3VzPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJwcF9mdWxsX3JlcyI+PC9kaXY+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcF9kZXRhaWxzIj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0icHBfZGVzY3JpcHRpb24iPjwvcD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcF9zb2NpYWwiPntwcF9zb2NpYWx9PC9kaXY+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PiAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHBfYm90dG9tIj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InBwX2xlZnQiPjwvZGl2PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHBfbWlkZGxlIj48L2Rpdj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InBwX3JpZ2h0Ij48L2Rpdj4gICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+ICAgICAgICAgICAgICAgICAgICAgPC9kaXY+ICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHBfb3ZlcmxheSI+PC9kaXY+JywKZ2FsbGVyeV9tYXJrdXA6JzxkaXYgY2xhc3M9InBwX2dhbGxlcnkiPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIGNsYXNzPSJwcF9hcnJvd19wcmV2aW91cyI+UHJldmlvdXM8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2dhbGxlcnl9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9InBwX2Fycm93X25leHQiPk5leHQ8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4nLGltYWdlX21hcmt1cDonPGltZyBpZD0iZnVsbFJlc0ltYWdlIiBzcmM9IntwYXRofSIgLz4nLGZsYXNoX21hcmt1cDonPG9iamVjdCBjbGFzc2lkPSJjbHNpZDpEMjdDREI2RS1BRTZELTExY2YtOTZCOC00NDQ1NTM1NDAwMDAiIHdpZHRoPSJ7d2lkdGh9IiBoZWlnaHQ9IntoZWlnaHR9Ij48cGFyYW0gbmFtZT0id21vZGUiIHZhbHVlPSJ7d21vZGV9IiAvPjxwYXJhbSBuYW1lPSJhbGxvd2Z1bGxzY3JlZW4iIHZhbHVlPSJ0cnVlIiAvPjxwYXJhbSBuYW1lPSJhbGxvd3NjcmlwdGFjY2VzcyIgdmFsdWU9ImFsd2F5cyIgLz48cGFyYW0gbmFtZT0ibW92aWUiIHZhbHVlPSJ7cGF0aH0iIC8+PGVtYmVkIHNyYz0ie3BhdGh9IiB0eXBlPSJhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaCIgYWxsb3dmdWxsc2NyZWVuPSJ0cnVlIiBhbGxvd3NjcmlwdGFjY2Vzcz0iYWx3YXlzIiB3aWR0aD0ie3dpZHRofSIgaGVpZ2h0PSJ7aGVpZ2h0fSIgd21vZGU9Int3bW9kZX0iPjwvZW1iZWQ+PC9vYmplY3Q+JywKcXVpY2t0aW1lX21hcmt1cDonPG9iamVjdCBjbGFzc2lkPSJjbHNpZDowMkJGMjVENS04QzE3LTRCMjMtQkM4MC1EMzQ4OEFCRERDNkIiIGNvZGViYXNlPSJodHRwOi8vd3d3LmFwcGxlLmNvbS9xdGFjdGl2ZXgvcXRwbHVnaW4uY2FiIiBoZWlnaHQ9IntoZWlnaHR9IiB3aWR0aD0ie3dpZHRofSI+PHBhcmFtIG5hbWU9InNyYyIgdmFsdWU9IntwYXRofSI+PHBhcmFtIG5hbWU9ImF1dG9wbGF5IiB2YWx1ZT0ie2F1dG9wbGF5fSI+PHBhcmFtIG5hbWU9InR5cGUiIHZhbHVlPSJ2aWRlby9xdWlja3RpbWUiPjxlbWJlZCBzcmM9IntwYXRofSIgaGVpZ2h0PSJ7aGVpZ2h0fSIgd2lkdGg9Int3aWR0aH0iIGF1dG9wbGF5PSJ7YXV0b3BsYXl9IiB0eXBlPSJ2aWRlby9xdWlja3RpbWUiIHBsdWdpbnNwYWdlPSJodHRwOi8vd3d3LmFwcGxlLmNvbS9xdWlja3RpbWUvZG93bmxvYWQvIj48L2VtYmVkPjwvb2JqZWN0PicsaWZyYW1lX21hcmt1cDonPGlmcmFtZSBzcmMgPSJ7cGF0aH0iIHdpZHRoPSJ7d2lkdGh9IiBoZWlnaHQ9IntoZWlnaHR9IiBmcmFtZWJvcmRlcj0ibm8iPjwvaWZyYW1lPicsCmlubGluZV9tYXJrdXA6JzxkaXYgY2xhc3M9InBwX2lubGluZSI+e2NvbnRlbnR9PC9kaXY+JyxtcDRfbWFya3VwOic8dmlkZW8gd2lkdGg9IjEwMCUiIGhlaWdodD0iIiBwcmVsb2FkPSJhdXRvIiBhdXRvcGxheSBjb250cm9scz0iIiBpZD0icGxheWVyIiBzdHlsZT0id2lkdGg6IDEwMCU7Ij48c291cmNlIHR5cGU9InZpZGVvL21wNCIgc3JjPSJ7cGF0aH0iPjwvc291cmNlPjwvdmlkZW8+JyxjdXN0b21fbWFya3VwOiIiLHNvY2lhbF90b29sczonPGRpdiBjbGFzcz0idHdpdHRlciI+PGEgaHJlZj0iaHR0cDovL3R3aXR0ZXIuY29tL3NoYXJlIiBjbGFzcz0idHdpdHRlci1zaGFyZS1idXR0b24iIGRhdGEtY291bnQ9Im5vbmUiPlR3ZWV0PC9hPjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHA6Ly9wbGF0Zm9ybS50d2l0dGVyLmNvbS93aWRnZXRzLmpzIj5ceDNjL3NjcmlwdD48L2Rpdj48ZGl2IGNsYXNzPSJmYWNlYm9vayI+PGlmcmFtZSBzcmM9Ii8vd3d3LmZhY2Vib29rLmNvbS9wbHVnaW5zL2xpa2UucGhwP2xvY2FsZT1lbl9VUyZocmVmPXtsb2NhdGlvbl9ocmVmfSZhbXA7bGF5b3V0PWJ1dHRvbl9jb3VudCZhbXA7c2hvd19mYWNlcz10cnVlJmFtcDt3aWR0aD01MDAmYW1wO2FjdGlvbj1saWtlJmFtcDtmb250JmFtcDtjb2xvcnNjaGVtZT1saWdodCZhbXA7aGVpZ2h0PTIzIiBzY3JvbGxpbmc9Im5vIiBmcmFtZWJvcmRlcj0iMCIgc3R5bGU9ImJvcmRlcjpub25lOyBvdmVyZmxvdzpoaWRkZW47IHdpZHRoOjUwMHB4OyBoZWlnaHQ6MjNweDsiIGFsbG93VHJhbnNwYXJlbmN5PSJ0cnVlIj48L2lmcmFtZT48L2Rpdj4nfSwKZSk7dmFyIGI9e30seD10aGlzLHI9ITEsZCx1LHYsQixuLG0saz1hKHdpbmRvdykuaGVpZ2h0KCksaD1hKHdpbmRvdykud2lkdGgoKSxxO2RvcmVzaXplPSEwO3Njcm9sbF9wb3M9QygpO2Eod2luZG93KS5vZmYoInJlc2l6ZS5wcmV0dHlwaG90byIpLm9uKCJyZXNpemUucHJldHR5cGhvdG8iLGZ1bmN0aW9uKCl7dygpO2s9YSh3aW5kb3cpLmhlaWdodCgpO2g9YSh3aW5kb3cpLndpZHRoKCk7InVuZGVmaW5lZCIhPXR5cGVvZiAkcHBfb3ZlcmxheSYmJHBwX292ZXJsYXkuaGVpZ2h0KGEoZG9jdW1lbnQpLmhlaWdodCgpKS53aWR0aChoKX0pO2lmKGUua2V5Ym9hcmRfc2hvcnRjdXRzKWEoZG9jdW1lbnQpLm9mZigia2V5ZG93bi5wcmV0dHlwaG90byIpLm9uKCJrZXlkb3duLnByZXR0eXBob3RvIixmdW5jdGlvbihjKXtpZigidW5kZWZpbmVkIiE9dHlwZW9mICRwcF9waWNfaG9sZGVyJiYkcHBfcGljX2hvbGRlci5pcygiOnZpc2libGUiKSlzd2l0Y2goYy5rZXlDb2RlKXtjYXNlIDM3OmEucHJldHR5UGhvdG8uY2hhbmdlUGFnZSgicHJldmlvdXMiKTsKYy5wcmV2ZW50RGVmYXVsdCgpO2JyZWFrO2Nhc2UgMzk6YS5wcmV0dHlQaG90by5jaGFuZ2VQYWdlKCJuZXh0Iik7Yy5wcmV2ZW50RGVmYXVsdCgpO2JyZWFrO2Nhc2UgMjc6Yi5tb2RhbHx8YS5wcmV0dHlQaG90by5jbG9zZSgpLGMucHJldmVudERlZmF1bHQoKX19KTthLnByZXR0eVBob3RvLmluaXRpYWxpemU9ZnVuY3Rpb24oKXtiPWU7InBwX2RlZmF1bHQiPT1iLnRoZW1lJiYoYi5ob3Jpem9udGFsX3BhZGRpbmc9MTYpO3RoZVJlbD1hKHRoaXMpLmF0dHIoYi5ob29rKTtnYWxsZXJ5UmVnRXhwPS9cWyg\/Oi4qKVxdLztwcF9pbWFnZXM9KGlzU2V0PWdhbGxlcnlSZWdFeHAuZXhlYyh0aGVSZWwpPyEwOiExKT9qUXVlcnkubWFwKHgsZnVuY3Rpb24oYyxmKXtpZigtMSE9YShjKS5hdHRyKGIuaG9vaykuaW5kZXhPZih0aGVSZWwpKXJldHVybiBhKGMpLmF0dHIoImhyZWYiKX0pOmEubWFrZUFycmF5KGEodGhpcykuYXR0cigiaHJlZiIpKTtwcF90aXRsZXM9aXNTZXQ\/alF1ZXJ5Lm1hcCh4LApmdW5jdGlvbihjLGYpe2lmKC0xIT1hKGMpLmF0dHIoYi5ob29rKS5pbmRleE9mKHRoZVJlbCkpcmV0dXJuIGEoYykuZmluZCgiaW1nIikuYXR0cigiYWx0Iik\/YShjKS5maW5kKCJpbWciKS5hdHRyKCJhbHQiKToiIn0pOmEubWFrZUFycmF5KGEodGhpcykuZmluZCgiaW1nIikuYXR0cigiYWx0IikpO3BwX2Rlc2NyaXB0aW9ucz1pc1NldD9qUXVlcnkubWFwKHgsZnVuY3Rpb24oYyxmKXtpZigtMSE9YShjKS5hdHRyKGIuaG9vaykuaW5kZXhPZih0aGVSZWwpKXJldHVybiBhKGMpLmF0dHIoInRpdGxlIik\/YShjKS5hdHRyKCJ0aXRsZSIpOiIifSk6YS5tYWtlQXJyYXkoYSh0aGlzKS5hdHRyKCJ0aXRsZSIpKTtwcF9pbWFnZXMubGVuZ3RoPmIub3ZlcmxheV9nYWxsZXJ5X21heCYmKGIub3ZlcmxheV9nYWxsZXJ5PSExKTtzZXRfcG9zaXRpb249alF1ZXJ5LmluQXJyYXkoYSh0aGlzKS5hdHRyKCJocmVmIikscHBfaW1hZ2VzKTtyZWxfaW5kZXg9aXNTZXQ\/c2V0X3Bvc2l0aW9uOmEoImFbIisKYi5ob29rKyJePSciK3RoZVJlbCsiJ10iKS5pbmRleChhKHRoaXMpKTtEKHRoaXMpO2lmKGIuYWxsb3dfcmVzaXplKWEod2luZG93KS5vbigic2Nyb2xsLnByZXR0eXBob3RvIixmdW5jdGlvbigpe3coKX0pO2EucHJldHR5UGhvdG8ub3BlbigpO3JldHVybiExfTthLnByZXR0eVBob3RvLm9wZW49ZnVuY3Rpb24oYyxmLEUsRil7InVuZGVmaW5lZCI9PXR5cGVvZiBiJiYoYj1lLHBwX2ltYWdlcz1hLm1ha2VBcnJheShjKSxwcF90aXRsZXM9Zj9hLm1ha2VBcnJheShmKTphLm1ha2VBcnJheSgiIikscHBfZGVzY3JpcHRpb25zPUU\/YS5tYWtlQXJyYXkoRSk6YS5tYWtlQXJyYXkoIiIpLGlzU2V0PTE8cHBfaW1hZ2VzLmxlbmd0aD8hMDohMSxzZXRfcG9zaXRpb249Rj9GOjAsRChjLnRhcmdldCkpO2IuaGlkZWZsYXNoJiZhKCJvYmplY3QsZW1iZWQsaWZyYW1lW3NyYyo9eW91dHViZV0saWZyYW1lW3NyYyo9dmltZW9dIikuY3NzKCJ2aXNpYmlsaXR5IiwiaGlkZGVuIik7RyhhKHBwX2ltYWdlcykubGVuZ3RoKTsKYSgiLnBwX2xvYWRlckljb24iKS5zaG93KCk7Yi5kZWVwbGlua2luZyYmInVuZGVmaW5lZCIhPXR5cGVvZiB0aGVSZWwmJihsb2NhdGlvbi5oYXNoPXRoZVJlbCsiLyIrcmVsX2luZGV4KyIvIik7Yi5zb2NpYWxfdG9vbHMmJihmYWNlYm9va19saWtlX2xpbms9Yi5zb2NpYWxfdG9vbHMucmVwbGFjZSgie2xvY2F0aW9uX2hyZWZ9IixlbmNvZGVVUklDb21wb25lbnQobG9jYXRpb24uaHJlZikpLCRwcF9waWNfaG9sZGVyLmZpbmQoIi5wcF9zb2NpYWwiKS5odG1sKGZhY2Vib29rX2xpa2VfbGluaykpOyRwcHQuaXMoIjpoaWRkZW4iKSYmJHBwdC5jc3MoIm9wYWNpdHkiLDApLnNob3coKTskcHBfb3ZlcmxheS5zaG93KCkuZmFkZVRvKGIuYW5pbWF0aW9uX3NwZWVkLGIub3BhY2l0eSk7JHBwX3BpY19ob2xkZXIuZmluZCgiLmN1cnJlbnRUZXh0SG9sZGVyIikudGV4dChzZXRfcG9zaXRpb24rMStiLmNvdW50ZXJfc2VwYXJhdG9yX2xhYmVsK2EocHBfaW1hZ2VzKS5sZW5ndGgpOyJ1bmRlZmluZWQiIT0KdHlwZW9mIHBwX2Rlc2NyaXB0aW9uc1tzZXRfcG9zaXRpb25dJiYiIiE9cHBfZGVzY3JpcHRpb25zW3NldF9wb3NpdGlvbl0\/JHBwX3BpY19ob2xkZXIuZmluZCgiLnBwX2Rlc2NyaXB0aW9uIikuc2hvdygpLmh0bWwodW5lc2NhcGUocHBfZGVzY3JpcHRpb25zW3NldF9wb3NpdGlvbl0pKTokcHBfcGljX2hvbGRlci5maW5kKCIucHBfZGVzY3JpcHRpb24iKS5oaWRlKCk7bW92aWVfd2lkdGg9cGFyc2VGbG9hdChsKCJ3aWR0aCIscHBfaW1hZ2VzW3NldF9wb3NpdGlvbl0pKT9sKCJ3aWR0aCIscHBfaW1hZ2VzW3NldF9wb3NpdGlvbl0pOmIuZGVmYXVsdF93aWR0aC50b1N0cmluZygpO21vdmllX2hlaWdodD1wYXJzZUZsb2F0KGwoImhlaWdodCIscHBfaW1hZ2VzW3NldF9wb3NpdGlvbl0pKT9sKCJoZWlnaHQiLHBwX2ltYWdlc1tzZXRfcG9zaXRpb25dKTpiLmRlZmF1bHRfaGVpZ2h0LnRvU3RyaW5nKCk7cj0hMTstMSE9bW92aWVfaGVpZ2h0LmluZGV4T2YoIiUiKSYmKG1vdmllX2hlaWdodD0KcGFyc2VGbG9hdChhKHdpbmRvdykuaGVpZ2h0KCkqcGFyc2VGbG9hdChtb3ZpZV9oZWlnaHQpLzEwMC0xNTApLHI9ITApOy0xIT1tb3ZpZV93aWR0aC5pbmRleE9mKCIlIikmJihtb3ZpZV93aWR0aD1wYXJzZUZsb2F0KGEod2luZG93KS53aWR0aCgpKnBhcnNlRmxvYXQobW92aWVfd2lkdGgpLzEwMC0xNTApLHI9ITApOyRwcF9waWNfaG9sZGVyLmZhZGVJbihmdW5jdGlvbigpe2Iuc2hvd190aXRsZSYmIiIhPXBwX3RpdGxlc1tzZXRfcG9zaXRpb25dJiYidW5kZWZpbmVkIiE9dHlwZW9mIHBwX3RpdGxlc1tzZXRfcG9zaXRpb25dPyRwcHQuaHRtbCh1bmVzY2FwZShwcF90aXRsZXNbc2V0X3Bvc2l0aW9uXSkpOiRwcHQuaHRtbCgiJm5ic3A7Iik7aW1nUHJlbG9hZGVyPSIiO3NraXBJbmplY3Rpb249ITE7c3dpdGNoKHQocHBfaW1hZ2VzW3NldF9wb3NpdGlvbl0pKXtjYXNlICJpbWFnZSI6aW1nUHJlbG9hZGVyPW5ldyBJbWFnZTtuZXh0SW1hZ2U9bmV3IEltYWdlO2lzU2V0JiZzZXRfcG9zaXRpb248CmEocHBfaW1hZ2VzKS5sZW5ndGgtMSYmKG5leHRJbWFnZS5zcmM9cHBfaW1hZ2VzW3NldF9wb3NpdGlvbisxXSk7cHJldkltYWdlPW5ldyBJbWFnZTtpc1NldCYmcHBfaW1hZ2VzW3NldF9wb3NpdGlvbi0xXSYmKHByZXZJbWFnZS5zcmM9cHBfaW1hZ2VzW3NldF9wb3NpdGlvbi0xXSk7JHBwX3BpY19ob2xkZXIuZmluZCgiI3BwX2Z1bGxfcmVzIilbMF0uaW5uZXJIVE1MPWIuaW1hZ2VfbWFya3VwLnJlcGxhY2UoL3twYXRofS9nLHBwX2ltYWdlc1tzZXRfcG9zaXRpb25dKTtpbWdQcmVsb2FkZXIub25sb2FkPWZ1bmN0aW9uKCl7ZD1nKGltZ1ByZWxvYWRlci53aWR0aCxpbWdQcmVsb2FkZXIuaGVpZ2h0KTtwKCl9O2ltZ1ByZWxvYWRlci5vbmVycm9yPWZ1bmN0aW9uKCl7YWxlcnQoIkltYWdlIGNhbm5vdCBiZSBsb2FkZWQuIE1ha2Ugc3VyZSB0aGUgcGF0aCBpcyBjb3JyZWN0IGFuZCBpbWFnZSBleGlzdC4iKTthLnByZXR0eVBob3RvLmNsb3NlKCl9O2ltZ1ByZWxvYWRlci5zcmM9cHBfaW1hZ2VzW3NldF9wb3NpdGlvbl07CmJyZWFrO2Nhc2UgInlvdXR1YmUiOmQ9Zyhtb3ZpZV93aWR0aCxtb3ZpZV9oZWlnaHQpO21vdmllX2lkPWwoInYiLHBwX2ltYWdlc1tzZXRfcG9zaXRpb25dKTsiIj09bW92aWVfaWQmJihtb3ZpZV9pZD1wcF9pbWFnZXNbc2V0X3Bvc2l0aW9uXS5zcGxpdCgieW91dHUuYmUvIiksbW92aWVfaWQ9bW92aWVfaWRbMV0sMDxtb3ZpZV9pZC5pbmRleE9mKCI\/IikmJihtb3ZpZV9pZD1tb3ZpZV9pZC5zdWJzdHIoMCxtb3ZpZV9pZC5pbmRleE9mKCI\/IikpKSwwPG1vdmllX2lkLmluZGV4T2YoIiYiKSYmKG1vdmllX2lkPW1vdmllX2lkLnN1YnN0cigwLG1vdmllX2lkLmluZGV4T2YoIiYiKSkpKTttb3ZpZT0iaHR0cHM6Ly93d3cueW91dHViZS5jb20vZW1iZWQvIittb3ZpZV9pZDtsKCJyZWwiLHBwX2ltYWdlc1tzZXRfcG9zaXRpb25dKT9tb3ZpZSs9Ij9yZWw9IitsKCJyZWwiLHBwX2ltYWdlc1tzZXRfcG9zaXRpb25dKTptb3ZpZSs9Ij9yZWw9MSI7Yi5hdXRvcGxheSYmKG1vdmllKz0iJmF1dG9wbGF5PTEiKTsKdG9JbmplY3Q9Yi5pZnJhbWVfbWFya3VwLnJlcGxhY2UoL3t3aWR0aH0vZyxkLndpZHRoKS5yZXBsYWNlKC97aGVpZ2h0fS9nLGQuaGVpZ2h0KS5yZXBsYWNlKC97d21vZGV9L2csYi53bW9kZSkucmVwbGFjZSgve3BhdGh9L2csbW92aWUpO2JyZWFrO2Nhc2UgInZpbWVvIjpkPWcobW92aWVfd2lkdGgsbW92aWVfaGVpZ2h0KTttb3ZpZV9pZD1wcF9pbWFnZXNbc2V0X3Bvc2l0aW9uXTttb3ZpZT0iaHR0cDovL3BsYXllci52aW1lby5jb20vdmlkZW8vIittb3ZpZV9pZC5tYXRjaCgvaHR0cChzPyk6XC9cLyh3d3dcLik\/dmltZW8uY29tXC8oXGQrKS8pWzNdKyI\/dGl0bGU9MCZhbXA7YnlsaW5lPTAmYW1wO3BvcnRyYWl0PTAiO2IuYXV0b3BsYXkmJihtb3ZpZSs9IiZhdXRvcGxheT0xOyIpO3ZpbWVvX3dpZHRoPWQud2lkdGgrIi9lbWJlZC8\/bW9vZ193aWR0aD0iK2Qud2lkdGg7dG9JbmplY3Q9Yi5pZnJhbWVfbWFya3VwLnJlcGxhY2UoL3t3aWR0aH0vZyx2aW1lb193aWR0aCkucmVwbGFjZSgve2hlaWdodH0vZywKZC5oZWlnaHQpLnJlcGxhY2UoL3twYXRofS9nLG1vdmllKTticmVhaztjYXNlICJtcDQiOmQ9Zyhtb3ZpZV93aWR0aCxtb3ZpZV9oZWlnaHQpO21vdmllX3VybD1wcF9pbWFnZXNbc2V0X3Bvc2l0aW9uXTt0b0luamVjdD1iLm1wNF9tYXJrdXAucmVwbGFjZSgve3BhdGh9L2csbW92aWVfdXJsKTticmVhaztjYXNlICJxdWlja3RpbWUiOmQ9Zyhtb3ZpZV93aWR0aCxtb3ZpZV9oZWlnaHQpO2QuaGVpZ2h0Kz0xNTtkLmNvbnRlbnRIZWlnaHQrPTE1O2QuY29udGFpbmVySGVpZ2h0Kz0xNTt0b0luamVjdD1iLnF1aWNrdGltZV9tYXJrdXAucmVwbGFjZSgve3dpZHRofS9nLGQud2lkdGgpLnJlcGxhY2UoL3toZWlnaHR9L2csZC5oZWlnaHQpLnJlcGxhY2UoL3t3bW9kZX0vZyxiLndtb2RlKS5yZXBsYWNlKC97cGF0aH0vZyxwcF9pbWFnZXNbc2V0X3Bvc2l0aW9uXSkucmVwbGFjZSgve2F1dG9wbGF5fS9nLGIuYXV0b3BsYXkpO2JyZWFrO2Nhc2UgImZsYXNoIjpkPWcobW92aWVfd2lkdGgsCm1vdmllX2hlaWdodCk7Zmxhc2hfdmFycz1wcF9pbWFnZXNbc2V0X3Bvc2l0aW9uXTtmbGFzaF92YXJzPWZsYXNoX3ZhcnMuc3Vic3RyaW5nKHBwX2ltYWdlc1tzZXRfcG9zaXRpb25dLmluZGV4T2YoImZsYXNodmFycyIpKzEwLHBwX2ltYWdlc1tzZXRfcG9zaXRpb25dLmxlbmd0aCk7ZmlsZW5hbWU9cHBfaW1hZ2VzW3NldF9wb3NpdGlvbl07ZmlsZW5hbWU9ZmlsZW5hbWUuc3Vic3RyaW5nKDAsZmlsZW5hbWUuaW5kZXhPZigiPyIpKTt0b0luamVjdD1iLmZsYXNoX21hcmt1cC5yZXBsYWNlKC97d2lkdGh9L2csZC53aWR0aCkucmVwbGFjZSgve2hlaWdodH0vZyxkLmhlaWdodCkucmVwbGFjZSgve3dtb2RlfS9nLGIud21vZGUpLnJlcGxhY2UoL3twYXRofS9nLGZpbGVuYW1lKyI\/IitmbGFzaF92YXJzKTticmVhaztjYXNlICJpZnJhbWUiOmQ9Zyhtb3ZpZV93aWR0aCxtb3ZpZV9oZWlnaHQpO2ZyYW1lX3VybD1wcF9pbWFnZXNbc2V0X3Bvc2l0aW9uXTtmcmFtZV91cmw9ZnJhbWVfdXJsLnN1YnN0cigwLApmcmFtZV91cmwuaW5kZXhPZigiaWZyYW1lIiktMSk7dG9JbmplY3Q9Yi5pZnJhbWVfbWFya3VwLnJlcGxhY2UoL3t3aWR0aH0vZyxkLndpZHRoKS5yZXBsYWNlKC97aGVpZ2h0fS9nLGQuaGVpZ2h0KS5yZXBsYWNlKC97cGF0aH0vZyxmcmFtZV91cmwpO2JyZWFrO2Nhc2UgImFqYXgiOmRvcmVzaXplPSExO2Q9Zyhtb3ZpZV93aWR0aCxtb3ZpZV9oZWlnaHQpO3NraXBJbmplY3Rpb249ZG9yZXNpemU9ITA7YS5nZXQocHBfaW1hZ2VzW3NldF9wb3NpdGlvbl0sZnVuY3Rpb24oSCl7dG9JbmplY3Q9Yi5pbmxpbmVfbWFya3VwLnJlcGxhY2UoL3tjb250ZW50fS9nLEgpOyRwcF9waWNfaG9sZGVyLmZpbmQoIiNwcF9mdWxsX3JlcyIpWzBdLmlubmVySFRNTD10b0luamVjdDtwKCl9KTticmVhaztjYXNlICJjdXN0b20iOmQ9Zyhtb3ZpZV93aWR0aCxtb3ZpZV9oZWlnaHQpO3RvSW5qZWN0PWIuY3VzdG9tX21hcmt1cDticmVhaztjYXNlICJpbmxpbmUiOm15Q2xvbmU9YShwcF9pbWFnZXNbc2V0X3Bvc2l0aW9uXSkuY2xvbmUoKS5hcHBlbmQoJzxiciBjbGVhcj0iYWxsIiAvPicpLmNzcyh7d2lkdGg6Yi5kZWZhdWx0X3dpZHRofSkud3JhcElubmVyKCc8ZGl2IGlkPSJwcF9mdWxsX3JlcyI+PGRpdiBjbGFzcz0icHBfaW5saW5lIj48L2Rpdj48L2Rpdj4nKS5hcHBlbmRUbyhhKCJib2R5IikpLnNob3coKSwKZG9yZXNpemU9ITEsZD1nKGEobXlDbG9uZSkud2lkdGgoKSxhKG15Q2xvbmUpLmhlaWdodCgpKSxkb3Jlc2l6ZT0hMCxhKG15Q2xvbmUpLnJlbW92ZSgpLHRvSW5qZWN0PWIuaW5saW5lX21hcmt1cC5yZXBsYWNlKC97Y29udGVudH0vZyxhKHBwX2ltYWdlc1tzZXRfcG9zaXRpb25dKS5odG1sKCkpfWltZ1ByZWxvYWRlcnx8c2tpcEluamVjdGlvbnx8KCRwcF9waWNfaG9sZGVyLmZpbmQoIiNwcF9mdWxsX3JlcyIpWzBdLmlubmVySFRNTD10b0luamVjdCxwKCkpfSk7cmV0dXJuITF9O2EucHJldHR5UGhvdG8uY2hhbmdlUGFnZT1mdW5jdGlvbihjKXtjdXJyZW50R2FsbGVyeVBhZ2U9MDsicHJldmlvdXMiPT1jPyhzZXRfcG9zaXRpb24tLSwwPnNldF9wb3NpdGlvbiYmKHNldF9wb3NpdGlvbj1hKHBwX2ltYWdlcykubGVuZ3RoLTEpKToibmV4dCI9PWM\/KHNldF9wb3NpdGlvbisrLHNldF9wb3NpdGlvbj5hKHBwX2ltYWdlcykubGVuZ3RoLTEmJihzZXRfcG9zaXRpb249MCkpOnNldF9wb3NpdGlvbj0KYztyZWxfaW5kZXg9c2V0X3Bvc2l0aW9uO2RvcmVzaXplfHwoZG9yZXNpemU9ITApO2IuYWxsb3dfZXhwYW5kJiZhKCIucHBfY29udHJhY3QiKS5yZW1vdmVDbGFzcygicHBfY29udHJhY3QiKS5hZGRDbGFzcygicHBfZXhwYW5kIik7eihmdW5jdGlvbigpe2EucHJldHR5UGhvdG8ub3BlbigpfSl9O2EucHJldHR5UGhvdG8uY2hhbmdlR2FsbGVyeVBhZ2U9ZnVuY3Rpb24oYyl7Im5leHQiPT1jPyhjdXJyZW50R2FsbGVyeVBhZ2UrKyxjdXJyZW50R2FsbGVyeVBhZ2U+dG90YWxQYWdlJiYoY3VycmVudEdhbGxlcnlQYWdlPTApKToicHJldmlvdXMiPT1jPyhjdXJyZW50R2FsbGVyeVBhZ2UtLSwwPmN1cnJlbnRHYWxsZXJ5UGFnZSYmKGN1cnJlbnRHYWxsZXJ5UGFnZT10b3RhbFBhZ2UpKTpjdXJyZW50R2FsbGVyeVBhZ2U9YztzbGlkZV9zcGVlZD0ibmV4dCI9PWN8fCJwcmV2aW91cyI9PWM\/Yi5hbmltYXRpb25fc3BlZWQ6MDtzbGlkZV90bz1jdXJyZW50R2FsbGVyeVBhZ2UqaXRlbXNQZXJQYWdlKgppdGVtV2lkdGg7JHBwX2dhbGxlcnkuZmluZCgidWwiKS5hbmltYXRlKHtsZWZ0Oi1zbGlkZV90b30sc2xpZGVfc3BlZWQpfTthLnByZXR0eVBob3RvLnN0YXJ0U2xpZGVzaG93PWZ1bmN0aW9uKCl7InVuZGVmaW5lZCI9PXR5cGVvZiBxPygkcHBfcGljX2hvbGRlci5maW5kKCIucHBfcGxheSIpLm9mZigiY2xpY2siKS5yZW1vdmVDbGFzcygicHBfcGxheSIpLmFkZENsYXNzKCJwcF9wYXVzZSIpLm9uKCJjbGljayIsZnVuY3Rpb24oKXthLnByZXR0eVBob3RvLnN0b3BTbGlkZXNob3coKTtyZXR1cm4hMX0pLHE9c2V0SW50ZXJ2YWwoYS5wcmV0dHlQaG90by5zdGFydFNsaWRlc2hvdyxiLnNsaWRlc2hvdykpOmEucHJldHR5UGhvdG8uY2hhbmdlUGFnZSgibmV4dCIpfTthLnByZXR0eVBob3RvLnN0b3BTbGlkZXNob3c9ZnVuY3Rpb24oKXskcHBfcGljX2hvbGRlci5maW5kKCIucHBfcGF1c2UiKS5vZmYoImNsaWNrIikucmVtb3ZlQ2xhc3MoInBwX3BhdXNlIikuYWRkQ2xhc3MoInBwX3BsYXkiKS5vbigiY2xpY2siLApmdW5jdGlvbigpe2EucHJldHR5UGhvdG8uc3RhcnRTbGlkZXNob3coKTtyZXR1cm4hMX0pO2NsZWFySW50ZXJ2YWwocSk7cT12b2lkIDB9O2EucHJldHR5UGhvdG8uY2xvc2U9ZnVuY3Rpb24oKXskcHBfb3ZlcmxheS5pcygiOmFuaW1hdGVkIil8fChhLnByZXR0eVBob3RvLnN0b3BTbGlkZXNob3coKSwkcHBfcGljX2hvbGRlci5zdG9wKCkuZmluZCgib2JqZWN0LGVtYmVkIikuY3NzKCJ2aXNpYmlsaXR5IiwiaGlkZGVuIiksYSgiZGl2LnBwX3BpY19ob2xkZXIsZGl2LnBwdCwucHBfZmFkZSIpLmZhZGVPdXQoYi5hbmltYXRpb25fc3BlZWQsZnVuY3Rpb24oKXthKHRoaXMpLnJlbW92ZSgpfSksJHBwX292ZXJsYXkuZmFkZU91dChiLmFuaW1hdGlvbl9zcGVlZCxmdW5jdGlvbigpe2IuaGlkZWZsYXNoJiZhKCJvYmplY3QsZW1iZWQsaWZyYW1lW3NyYyo9eW91dHViZV0saWZyYW1lW3NyYyo9dmltZW9dIikuY3NzKCJ2aXNpYmlsaXR5IiwidmlzaWJsZSIpO2EodGhpcykucmVtb3ZlKCk7CmEod2luZG93KS5vZmYoInNjcm9sbC5wcmV0dHlwaG90byIpOy0xIT09bG9jYXRpb24uaHJlZi5pbmRleE9mKCIjcHJldHR5UGhvdG8iKSYmKGxvY2F0aW9uLmhhc2g9InByZXR0eVBob3RvIik7Yi5jYWxsYmFjaygpO2RvcmVzaXplPSEwO3U9ITE7ZGVsZXRlIGJ9KSl9OyFwcF9hbHJlYWR5SW5pdGlhbGl6ZWQmJnkoKSYmKHBwX2FscmVhZHlJbml0aWFsaXplZD0hMCxoYXNoUmVsPWhhc2hJbmRleD15KCksaGFzaEluZGV4PWhhc2hJbmRleC5zdWJzdHJpbmcoaGFzaEluZGV4LmluZGV4T2YoIi8iKSsxLGhhc2hJbmRleC5sZW5ndGgtMSksaGFzaFJlbD1oYXNoUmVsLnN1YnN0cmluZygwLGhhc2hSZWwuaW5kZXhPZigiLyIpKSxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7YSgiYVsiK2UuaG9vaysiXj0nIitoYXNoUmVsKyInXTplcSgiK2hhc2hJbmRleCsiKSIpLnRyaWdnZXIoImNsaWNrIil9LDUwKSk7cmV0dXJuIHRoaXMub2ZmKCJjbGljay5wcmV0dHlwaG90byIpLm9uKCJjbGljay5wcmV0dHlwaG90byIsCmEucHJldHR5UGhvdG8uaW5pdGlhbGl6ZSl9fSkoalF1ZXJ5KTt2YXIgcHBfYWxyZWFkeUluaXRpYWxpemVkPSExOwovKiogL20vanMvanF1ZXJ5LnRyYW5zaXRpb24ubWluLmpzICoqLwovKiEKICogalF1ZXJ5IFRyYW5zaXQgLSBDU1MzIHRyYW5zaXRpb25zIGFuZCB0cmFuc2Zvcm1hdGlvbnMKICogQ29weXJpZ2h0KGMpIDIwMTEgUmljbyBTdGEuIENydXogPHJpY29Acmljb3N0YWNydXouY29tPgogKiBNSVQgTGljZW5zZWQuCiAqCiAqIGh0dHA6Ly9yaWNvc3RhY3J1ei5jb20vanF1ZXJ5LnRyYW5zaXQKICogaHR0cDovL2dpdGh1Yi5jb20vcnN0YWNydXovanF1ZXJ5LnRyYW5zaXQKICovCihmdW5jdGlvbihkKXtmdW5jdGlvbiBrKGEpe3ZhciBiPVsiTW96IiwiV2Via2l0IiwiTyIsIm1zIl0sYz1hLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpK2Euc3Vic3RyKDEpO2lmKGEgaW4gaS5zdHlsZSlyZXR1cm4gYTtmb3IoYT0wO2E8Yi5sZW5ndGg7KythKXt2YXIgZD1iW2FdK2M7aWYoZCBpbiBpLnN0eWxlKXJldHVybiBkfX1mdW5jdGlvbiBqKGEpeyJzdHJpbmciPT09dHlwZW9mIGEmJnRoaXMucGFyc2UoYSk7cmV0dXJuIHRoaXN9ZnVuY3Rpb24gcChhLGIsYyl7ITA9PT1iP2EucXVldWUoYyk6Yj9hLnF1ZXVlKGIsYyk6YygpfWZ1bmN0aW9uIG0oYSl7dmFyIGI9W107ZC5lYWNoKGEsZnVuY3Rpb24oYSl7YT1kLmNhbWVsQ2FzZShhKTthPWQudHJhbnNpdC5wcm9wZXJ0eU1hcFthXXx8YTthPXIoYSk7LTE9PT1kLmluQXJyYXkoYSxiKSYmYi5wdXNoKGEpfSk7cmV0dXJuIGJ9ZnVuY3Rpb24gcShhLGIsYyxlKXthPW0oYSk7ZC5jc3NFYXNlW2NdJiYoYz1kLmNzc0Vhc2VbY10pOwp2YXIgaD0iIituKGIpKyIgIitjOzA8cGFyc2VJbnQoZSwxMCkmJihoKz0iICIrbihlKSk7dmFyIGY9W107ZC5lYWNoKGEsZnVuY3Rpb24oYSxiKXtmLnB1c2goYisiICIraCl9KTtyZXR1cm4gZi5qb2luKCIsICIpfWZ1bmN0aW9uIGYoYSxiKXtifHwoZC5jc3NOdW1iZXJbYV09ITApO2QudHJhbnNpdC5wcm9wZXJ0eU1hcFthXT1lLnRyYW5zZm9ybTtkLmNzc0hvb2tzW2FdPXtnZXQ6ZnVuY3Rpb24oYil7cmV0dXJuKGQoYikuY3NzKCJ0cmFuc2Zvcm0iKXx8bmV3IGopLmdldChhKX0sc2V0OmZ1bmN0aW9uKGIsZSl7dmFyIGg9ZChiKS5jc3MoInRyYW5zZm9ybSIpfHxuZXcgajtoLnNldEZyb21TdHJpbmcoYSxlKTtkKGIpLmNzcyh7dHJhbnNmb3JtOmh9KX19fWZ1bmN0aW9uIHIoYSl7cmV0dXJuIGEucmVwbGFjZSgvKFtBLVpdKS9nLGZ1bmN0aW9uKGEpe3JldHVybiItIithLnRvTG93ZXJDYXNlKCl9KX1mdW5jdGlvbiBnKGEsYil7cmV0dXJuInN0cmluZyI9PT10eXBlb2YgYSYmIWEubWF0Y2goL15bXC0wLTlcLl0rJC8pPwphOiIiK2ErYn1mdW5jdGlvbiBuKGEpe2QuZnguc3BlZWRzW2FdJiYoYT1kLmZ4LnNwZWVkc1thXSk7cmV0dXJuIGcoYSwibXMiKX1kLnRyYW5zaXQ9e3ZlcnNpb246IjAuMS4zIixwcm9wZXJ0eU1hcDp7bWFyZ2luTGVmdDoibWFyZ2luIixtYXJnaW5SaWdodDoibWFyZ2luIixtYXJnaW5Cb3R0b206Im1hcmdpbiIsbWFyZ2luVG9wOiJtYXJnaW4iLHBhZGRpbmdMZWZ0OiJwYWRkaW5nIixwYWRkaW5nUmlnaHQ6InBhZGRpbmciLHBhZGRpbmdCb3R0b206InBhZGRpbmciLHBhZGRpbmdUb3A6InBhZGRpbmcifSxlbmFibGVkOiEwLHVzZVRyYW5zaXRpb25FbmQ6ITF9O3ZhciBpPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLGU9e30scz0tMTxuYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCkuaW5kZXhPZigiY2hyb21lIik7ZS50cmFuc2l0aW9uPWsoInRyYW5zaXRpb24iKTtlLnRyYW5zaXRpb25EZWxheT1rKCJ0cmFuc2l0aW9uRGVsYXkiKTtlLnRyYW5zZm9ybT1rKCJ0cmFuc2Zvcm0iKTsKZS50cmFuc2Zvcm1PcmlnaW49aygidHJhbnNmb3JtT3JpZ2luIik7aS5zdHlsZVtlLnRyYW5zZm9ybV09IiI7aS5zdHlsZVtlLnRyYW5zZm9ybV09InJvdGF0ZVkoOTBkZWcpIjtlLnRyYW5zZm9ybTNkPSIiIT09aS5zdHlsZVtlLnRyYW5zZm9ybV07ZC5leHRlbmQoZC5zdXBwb3J0LGUpO3ZhciBvPWUudHJhbnNpdGlvbkVuZD17TW96VHJhbnNpdGlvbjoidHJhbnNpdGlvbmVuZCIsT1RyYW5zaXRpb246Im9UcmFuc2l0aW9uRW5kIixXZWJraXRUcmFuc2l0aW9uOiJ3ZWJraXRUcmFuc2l0aW9uRW5kIixtc1RyYW5zaXRpb246Ik1TVHJhbnNpdGlvbkVuZCJ9W2UudHJhbnNpdGlvbl18fG51bGwsaT1udWxsO2QuY3NzRWFzZT17X2RlZmF1bHQ6ImVhc2UiLCJpbiI6ImVhc2UtaW4iLG91dDoiZWFzZS1vdXQiLCJpbi1vdXQiOiJlYXNlLWluLW91dCIsc25hcDoiY3ViaWMtYmV6aWVyKDAsMSwuNSwxKSJ9O2QuY3NzSG9va3MudHJhbnNmb3JtPXtnZXQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGQoYSkuZGF0YSgidHJhbnNmb3JtIil9LApzZXQ6ZnVuY3Rpb24oYSxiKXt2YXIgYz1iO2MgaW5zdGFuY2VvZiBqfHwoYz1uZXcgaihjKSk7YS5zdHlsZVtlLnRyYW5zZm9ybV09IldlYmtpdFRyYW5zZm9ybSI9PT1lLnRyYW5zZm9ybSYmIXM\/Yy50b1N0cmluZyghMCk6Yy50b1N0cmluZygpO2QoYSkuZGF0YSgidHJhbnNmb3JtIixjKX19O2QuY3NzSG9va3MudHJhbnNmb3JtT3JpZ2luPXtnZXQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGEuc3R5bGVbZS50cmFuc2Zvcm1PcmlnaW5dfSxzZXQ6ZnVuY3Rpb24oYSxiKXthLnN0eWxlW2UudHJhbnNmb3JtT3JpZ2luXT1ifX07ZC5jc3NIb29rcy50cmFuc2l0aW9uPXtnZXQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGEuc3R5bGVbZS50cmFuc2l0aW9uXX0sc2V0OmZ1bmN0aW9uKGEsYil7YS5zdHlsZVtlLnRyYW5zaXRpb25dPWJ9fTtmKCJzY2FsZSIpO2YoInRyYW5zbGF0ZSIpO2YoInJvdGF0ZSIpO2YoInJvdGF0ZVgiKTtmKCJyb3RhdGVZIik7Zigicm90YXRlM2QiKTtmKCJwZXJzcGVjdGl2ZSIpOwpmKCJza2V3WCIpO2YoInNrZXdZIik7ZigieCIsITApO2YoInkiLCEwKTtqLnByb3RvdHlwZT17c2V0RnJvbVN0cmluZzpmdW5jdGlvbihhLGIpe3ZhciBjPSJzdHJpbmciPT09dHlwZW9mIGI\/Yi5zcGxpdCgiLCIpOmIuY29uc3RydWN0b3I9PT1BcnJheT9iOltiXTtjLnVuc2hpZnQoYSk7ai5wcm90b3R5cGUuc2V0LmFwcGx5KHRoaXMsYyl9LHNldDpmdW5jdGlvbihhKXt2YXIgYj1BcnJheS5wcm90b3R5cGUuc2xpY2UuYXBwbHkoYXJndW1lbnRzLFsxXSk7dGhpcy5zZXR0ZXJbYV0\/dGhpcy5zZXR0ZXJbYV0uYXBwbHkodGhpcyxiKTp0aGlzW2FdPWIuam9pbigiLCIpfSxnZXQ6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuZ2V0dGVyW2FdP3RoaXMuZ2V0dGVyW2FdLmFwcGx5KHRoaXMpOnRoaXNbYV18fDB9LHNldHRlcjp7cm90YXRlOmZ1bmN0aW9uKGEpe3RoaXMucm90YXRlPWcoYSwiZGVnIil9LHJvdGF0ZVg6ZnVuY3Rpb24oYSl7dGhpcy5yb3RhdGVYPWcoYSwiZGVnIil9LHJvdGF0ZVk6ZnVuY3Rpb24oYSl7dGhpcy5yb3RhdGVZPQpnKGEsImRlZyIpfSxzY2FsZTpmdW5jdGlvbihhLGIpe3ZvaWQgMD09PWImJihiPWEpO3RoaXMuc2NhbGU9YSsiLCIrYn0sc2tld1g6ZnVuY3Rpb24oYSl7dGhpcy5za2V3WD1nKGEsImRlZyIpfSxza2V3WTpmdW5jdGlvbihhKXt0aGlzLnNrZXdZPWcoYSwiZGVnIil9LHBlcnNwZWN0aXZlOmZ1bmN0aW9uKGEpe3RoaXMucGVyc3BlY3RpdmU9ZyhhLCJweCIpfSx4OmZ1bmN0aW9uKGEpe3RoaXMuc2V0KCJ0cmFuc2xhdGUiLGEsbnVsbCl9LHk6ZnVuY3Rpb24oYSl7dGhpcy5zZXQoInRyYW5zbGF0ZSIsbnVsbCxhKX0sdHJhbnNsYXRlOmZ1bmN0aW9uKGEsYil7dm9pZCAwPT09dGhpcy5fdHJhbnNsYXRlWCYmKHRoaXMuX3RyYW5zbGF0ZVg9MCk7dm9pZCAwPT09dGhpcy5fdHJhbnNsYXRlWSYmKHRoaXMuX3RyYW5zbGF0ZVk9MCk7bnVsbCE9PWEmJih0aGlzLl90cmFuc2xhdGVYPWcoYSwicHgiKSk7bnVsbCE9PWImJih0aGlzLl90cmFuc2xhdGVZPWcoYiwicHgiKSk7dGhpcy50cmFuc2xhdGU9CnRoaXMuX3RyYW5zbGF0ZVgrIiwiK3RoaXMuX3RyYW5zbGF0ZVl9fSxnZXR0ZXI6e3g6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fdHJhbnNsYXRlWHx8MH0seTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl90cmFuc2xhdGVZfHwwfSxzY2FsZTpmdW5jdGlvbigpe3ZhciBhPSh0aGlzLnNjYWxlfHwiMSwxIikuc3BsaXQoIiwiKTthWzBdJiYoYVswXT1wYXJzZUZsb2F0KGFbMF0pKTthWzFdJiYoYVsxXT1wYXJzZUZsb2F0KGFbMV0pKTtyZXR1cm4gYVswXT09PWFbMV0\/YVswXTphfSxyb3RhdGUzZDpmdW5jdGlvbigpe2Zvcih2YXIgYT0odGhpcy5yb3RhdGUzZHx8IjAsMCwwLDBkZWciKS5zcGxpdCgiLCIpLGI9MDszPj1iOysrYilhW2JdJiYoYVtiXT1wYXJzZUZsb2F0KGFbYl0pKTthWzNdJiYoYVszXT1nKGFbM10sImRlZyIpKTtyZXR1cm4gYX19LHBhcnNlOmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXM7YS5yZXBsYWNlKC8oW2EtekEtWjAtOV0rKVwoKC4qPylcKS9nLGZ1bmN0aW9uKGEsZCwKZSl7Yi5zZXRGcm9tU3RyaW5nKGQsZSl9KX0sdG9TdHJpbmc6ZnVuY3Rpb24oYSl7dmFyIGI9W10sYztmb3IoYyBpbiB0aGlzKWlmKHRoaXMuaGFzT3duUHJvcGVydHkoYykmJihlLnRyYW5zZm9ybTNkfHwhKCJyb3RhdGVYIj09PWN8fCJyb3RhdGVZIj09PWN8fCJwZXJzcGVjdGl2ZSI9PT1jfHwidHJhbnNmb3JtT3JpZ2luIj09PWMpKSkiXyIhPT1jWzBdJiYoYSYmInNjYWxlIj09PWM\/Yi5wdXNoKGMrIjNkKCIrdGhpc1tjXSsiLDEpIik6YSYmInRyYW5zbGF0ZSI9PT1jP2IucHVzaChjKyIzZCgiK3RoaXNbY10rIiwwKSIpOmIucHVzaChjKyIoIit0aGlzW2NdKyIpIikpO3JldHVybiBiLmpvaW4oIiAiKX19O2QuZm4udHJhbnNpdGlvbj1kLmZuLnRyYW5zaXQ9ZnVuY3Rpb24oYSxiLGMsZil7dmFyIGg9dGhpcyxnPTAsaT0hMDsiZnVuY3Rpb24iPT09dHlwZW9mIGImJihmPWIsYj12b2lkIDApOyJmdW5jdGlvbiI9PT10eXBlb2YgYyYmKGY9YyxjPXZvaWQgMCk7InVuZGVmaW5lZCIhPT0KdHlwZW9mIGEuZWFzaW5nJiYoYz1hLmVhc2luZyxkZWxldGUgYS5lYXNpbmcpOyJ1bmRlZmluZWQiIT09dHlwZW9mIGEuZHVyYXRpb24mJihiPWEuZHVyYXRpb24sZGVsZXRlIGEuZHVyYXRpb24pOyJ1bmRlZmluZWQiIT09dHlwZW9mIGEuY29tcGxldGUmJihmPWEuY29tcGxldGUsZGVsZXRlIGEuY29tcGxldGUpOyJ1bmRlZmluZWQiIT09dHlwZW9mIGEucXVldWUmJihpPWEucXVldWUsZGVsZXRlIGEucXVldWUpOyJ1bmRlZmluZWQiIT09dHlwZW9mIGEuZGVsYXkmJihnPWEuZGVsYXksZGVsZXRlIGEuZGVsYXkpOyJ1bmRlZmluZWQiPT09dHlwZW9mIGImJihiPWQuZnguc3BlZWRzLl9kZWZhdWx0KTsidW5kZWZpbmVkIj09PXR5cGVvZiBjJiYoYz1kLmNzc0Vhc2UuX2RlZmF1bHQpO3ZhciBiPW4oYiksaj1xKGEsYixjLGcpLGw9ZC50cmFuc2l0LmVuYWJsZWQmJmUudHJhbnNpdGlvbj9wYXJzZUludChiLDEwKStwYXJzZUludChnLDEwKTowO2lmKDA9PT1sKXJldHVybiBwKGgsaSxmdW5jdGlvbihiKXtoLmNzcyhhKTsKZiYmZi5hcHBseShoKTtiJiZiKCl9KSxoO3ZhciBrPXt9LG09ZnVuY3Rpb24oYil7dmFyIGM9ZmFsc2UsZz1mdW5jdGlvbigpe2MmJmgub2ZmKG8sZyk7bD4wJiZoLmVhY2goZnVuY3Rpb24oKXt0aGlzLnN0eWxlW2UudHJhbnNpdGlvbl09a1t0aGlzXXx8bnVsbH0pO3R5cGVvZiBmPT09ImZ1bmN0aW9uIiYmZi5hcHBseShoKTt0eXBlb2YgYj09PSJmdW5jdGlvbiImJmIoKX07aWYobD4wJiZvJiZkLnRyYW5zaXQudXNlVHJhbnNpdGlvbkVuZCl7Yz10cnVlO2gub24obyxnKX1lbHNlIHdpbmRvdy5zZXRUaW1lb3V0KGcsbCk7aC5lYWNoKGZ1bmN0aW9uKCl7bD4wJiYodGhpcy5zdHlsZVtlLnRyYW5zaXRpb25dPWopO2QodGhpcykuY3NzKGEpfSl9O3AoaCxpLGZ1bmN0aW9uKGEpe3ZhciBiPTA7ZS50cmFuc2l0aW9uPT09Ik1velRyYW5zaXRpb24iJiZiPDI1JiYoYj0yNSk7d2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKXttKGEpfSxiKX0pO3JldHVybiB0aGlzfTtkLnRyYW5zaXQuZ2V0VHJhbnNpdGlvblZhbHVlPQpxfSkoalF1ZXJ5KTsvKkVPRiovOwovKiogL20vanMvanF1ZXJ5LnRvdWNoU3dpcGUubWluLmpzICoqLwooZnVuY3Rpb24oZyl7Zy5mbi5zd2lwZT1mdW5jdGlvbihtKXtpZighdGhpcylyZXR1cm4gZmFsc2U7dmFyIGI9e2ZpbmdlcnM6MSx0aHJlc2hvbGQ6NzUsc3dpcGU6bnVsbCxzd2lwZUxlZnQ6bnVsbCxzd2lwZVJpZ2h0Om51bGwsc3dpcGVVcDpudWxsLHN3aXBlRG93bjpudWxsLHN3aXBlU3RhdHVzOm51bGwsY2xpY2s6bnVsbCx0cmlnZ2VyT25Ub3VjaEVuZDp0cnVlLGFsbG93UGFnZVNjcm9sbDoiYXV0byJ9LHA9ImxlZnQiLHY9InJpZ2h0Iix3PSJ1cCIseD0iZG93biIseT0ibm9uZSIsej0iaG9yaXpvbnRhbCIsQT0idmVydGljYWwiLEc9ImF1dG8iLEg9InN0YXJ0IixCPSJtb3ZlIixxPSJlbmQiLG49ImNhbmNlbCIsZD0ib250b3VjaHN0YXJ0ImluIHdpbmRvdyxDPWQ\/InRvdWNoc3RhcnQiOiJtb3VzZWRvd24iLHI9ZD8idG91Y2htb3ZlIjoibW91c2Vtb3ZlIixzPWQ\/InRvdWNoZW5kIjoibW91c2V1cCIsYz0ic3RhcnQiO2lmKG0uYWxsb3dQYWdlU2Nyb2xsPT11bmRlZmluZWQmJg0KKG0uc3dpcGUhPXVuZGVmaW5lZHx8bS5zd2lwZVN0YXR1cyE9dW5kZWZpbmVkKSltLmFsbG93UGFnZVNjcm9sbD15O20mJmcuZXh0ZW5kKGIsbSk7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2Z1bmN0aW9uIEQoYSl7dmFyIGU9ZD9hLnRvdWNoZXNbMF06YTtjPUg7aWYoZClrPWEudG91Y2hlcy5sZW5ndGg7ZGlzdGFuY2U9MDtkaXJlY3Rpb249bnVsbDtpZihrPT1iLmZpbmdlcnN8fCFkKXtoLng9Zi54PWUucGFnZVg7aC55PWYueT1lLnBhZ2VZO2Iuc3dpcGVTdGF0dXMmJm8oYSxjKX1lbHNlIGwoYSk7aWYoZCl7ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihyLHQpO2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIocyx1KX1lbHNle2coZG9jdW1lbnQpLm9uKHIsdCk7Zyhkb2N1bWVudCkub24ocyx1KX19ZnVuY3Rpb24gdChhKXtpZighKGM9PXF8fGM9PW4pKXt2YXIgZT1kP2EudG91Y2hlc1swXTphO2YueD1lLnBhZ2VYO2YueT1lLnBhZ2VZO2RpcmVjdGlvbj1FKCk7aWYoZClrPQ0KYS50b3VjaGVzLmxlbmd0aDtjPUI7ZT1kaXJlY3Rpb247aWYoYi5hbGxvd1BhZ2VTY3JvbGw9PXkpYS5wcmV2ZW50RGVmYXVsdCgpO2Vsc2V7dmFyIGk9Yi5hbGxvd1BhZ2VTY3JvbGw9PUc7c3dpdGNoKGUpe2Nhc2UgcDppZihiLnN3aXBlTGVmdCYmaXx8IWkmJmIuYWxsb3dQYWdlU2Nyb2xsIT16KWEucHJldmVudERlZmF1bHQoKTticmVhaztjYXNlIHY6aWYoYi5zd2lwZVJpZ2h0JiZpfHwhaSYmYi5hbGxvd1BhZ2VTY3JvbGwhPXopYS5wcmV2ZW50RGVmYXVsdCgpO2JyZWFrO2Nhc2UgdzppZihiLnN3aXBlVXAmJml8fCFpJiZiLmFsbG93UGFnZVNjcm9sbCE9QSlhLnByZXZlbnREZWZhdWx0KCk7YnJlYWs7Y2FzZSB4OmlmKGIuc3dpcGVEb3duJiZpfHwhaSYmYi5hbGxvd1BhZ2VTY3JvbGwhPUEpYS5wcmV2ZW50RGVmYXVsdCgpfX1pZihrPT1iLmZpbmdlcnN8fCFkKXtkaXN0YW5jZT1GKCk7Yi5zd2lwZVN0YXR1cyYmbyhhLGMsZGlyZWN0aW9uLGRpc3RhbmNlKTtpZighYi50cmlnZ2VyT25Ub3VjaEVuZClpZihkaXN0YW5jZT49DQpiLnRocmVzaG9sZCl7Yz1xO28oYSxjKTtsKGEpfX1lbHNle2M9bjtvKGEsYyk7bChhKX19fWZ1bmN0aW9uIHUoYSl7YS5wcmV2ZW50RGVmYXVsdCgpO2Rpc3RhbmNlPUYoKTtkaXJlY3Rpb249RSgpO2lmKGIudHJpZ2dlck9uVG91Y2hFbmQpe2M9cTtpZigoaz09Yi5maW5nZXJzfHwhZCkmJmYueCE9MClkaXN0YW5jZT49Yi50aHJlc2hvbGR8fChjPW4pO2Vsc2UgYz1uO28oYSxjKTtsKGEpfWVsc2UgaWYoYz09Qil7Yz1uO28oYSxjKTtsKGEpfWlmKGQpe2RvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIocix0KTtkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKHMsdSl9ZWxzZXtnKGRvY3VtZW50KS5vZmYocix0KTtnKGRvY3VtZW50KS5vZmYocyx1KX19ZnVuY3Rpb24gbCgpe2s9MDtoLng9MDtoLnk9MDtmLng9MDtmLnk9MH1mdW5jdGlvbiBvKGEsZSl7aWYoYi5zd2lwZVN0YXR1cyliLnN3aXBlU3RhdHVzLmNhbGwoaixhLGUsZGlyZWN0aW9ufHxudWxsLGRpc3RhbmNlfHwNCjApO2lmKGU9PW4paWYoYi5jbGljayYmKGs9PTF8fCFkKSYmKGlzTmFOKGRpc3RhbmNlKXx8ZGlzdGFuY2U9PTApKWIuY2xpY2suY2FsbChqLGEsYS50YXJnZXQpO2lmKGU9PXEpe2Iuc3dpcGUmJmIuc3dpcGUuY2FsbChqLGEsZGlyZWN0aW9uLGRpc3RhbmNlKTtzd2l0Y2goZGlyZWN0aW9uKXtjYXNlIHA6Yi5zd2lwZUxlZnQmJmIuc3dpcGVMZWZ0LmNhbGwoaixhLGRpcmVjdGlvbixkaXN0YW5jZSk7YnJlYWs7Y2FzZSB2OmIuc3dpcGVSaWdodCYmYi5zd2lwZVJpZ2h0LmNhbGwoaixhLGRpcmVjdGlvbixkaXN0YW5jZSk7YnJlYWs7Y2FzZSB3OmIuc3dpcGVVcCYmYi5zd2lwZVVwLmNhbGwoaixhLGRpcmVjdGlvbixkaXN0YW5jZSk7YnJlYWs7Y2FzZSB4OmIuc3dpcGVEb3duJiZiLnN3aXBlRG93bi5jYWxsKGosYSxkaXJlY3Rpb24sZGlzdGFuY2UpfX19ZnVuY3Rpb24gRigpe3JldHVybiBNYXRoLnJvdW5kKE1hdGguc3FydChNYXRoLnBvdyhmLngtaC54LDIpK01hdGgucG93KGYueS0NCmgueSwyKSkpfWZ1bmN0aW9uIEUoKXt2YXIgYTthPU1hdGgucm91bmQoTWF0aC5hdGFuMihmLnktaC55LGgueC1mLngpKjE4MC9NYXRoLlBJKTtpZihhPDApYT0zNjAtTWF0aC5hYnMoYSk7YT1hO3JldHVybiBhPD00NSYmYT49MD9wOmE8PTM2MCYmYT49MzE1P3A6YT49MTM1JiZhPD0yMjU\/djphPjQ1JiZhPDEzNT94Ond9dmFyIGo9Zyh0aGlzKSxrPTAsaD17eDowLHk6MH0sZj17eDowLHk6MH07aWYoZCl7dGhpcy5hZGRFdmVudExpc3RlbmVyKEMsRCk7ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2hjYW5jZWwiLGwpfWVsc2V7ai5vbihDLEQpO2coZG9jdW1lbnQpLm9uKCJ0b3VjaGNhbmNlbCIsbCl9fSl9fSkoalF1ZXJ5KTsvKkVPRiovOwovKiogL20vanMvYmFzZTY0LmpzICoqLwp2YXIgX19fZDJjX2Jhc2U2NGpzX2Nfb249IjIwMjUtMDUtMjMgMTc6MDY6MDgiOyd1c2Ugc3RyaWN0Jzt2YXIgX19fZDJjX2Jhc2U2NGpzX2Nfb249IjIwMjQtMDctMDggMTA6MzA6MDUiOyJ1c2Ugc3RyaWN0IjsKdmFyIEJhc2U2ND17X2tleVN0cjoiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLz0iLF9iNjRUZXN0OlJlZ0V4cCgiXig\/OltBLVphLXowLTkrL117NH0pKig\/OltBLVphLXowLTkrL117Mn09PXxbQS1aYS16MC05Ky9dezN9PSk\/JCIpLGVuY29kZTpmdW5jdGlvbihhKXt2YXIgZD0iIixjPTA7Zm9yKGE9QmFzZTY0Ll91dGY4X2VuY29kZShhKTtjPGEubGVuZ3RoOyl7dmFyIGI9YS5jaGFyQ29kZUF0KGMrKyksZT1hLmNoYXJDb2RlQXQoYysrKSxmPWEuY2hhckNvZGVBdChjKyspLGc9Yj4+MjtiPShiJjMpPDw0fGU+PjQ7dmFyIGg9KGUmMTUpPDwyfGY+PjYsaz1mJjYzO2lzTmFOKGUpP2g9az02NDppc05hTihmKSYmKGs9NjQpO2Q9ZCt0aGlzLl9rZXlTdHIuY2hhckF0KGcpK3RoaXMuX2tleVN0ci5jaGFyQXQoYikrdGhpcy5fa2V5U3RyLmNoYXJBdChoKSt0aGlzLl9rZXlTdHIuY2hhckF0KGspfXJldHVybiBkfSxkZWNvZGU6ZnVuY3Rpb24oYSl7dmFyIGQ9CiIiLGM9MDtmb3IoYT1hLnJlcGxhY2UoL1teQS1aYS16MC05XCtcLz1dL2csIiIpO2M8YS5sZW5ndGg7KXt2YXIgYj10aGlzLl9rZXlTdHIuaW5kZXhPZihhLmNoYXJBdChjKyspKSxlPXRoaXMuX2tleVN0ci5pbmRleE9mKGEuY2hhckF0KGMrKykpLGY9dGhpcy5fa2V5U3RyLmluZGV4T2YoYS5jaGFyQXQoYysrKSksZz10aGlzLl9rZXlTdHIuaW5kZXhPZihhLmNoYXJBdChjKyspKTtiPWI8PDJ8ZT4+NDtlPShlJjE1KTw8NHxmPj4yO3ZhciBoPShmJjMpPDw2fGc7ZCs9U3RyaW5nLmZyb21DaGFyQ29kZShiKTs2NCE9ZiYmKGQrPVN0cmluZy5mcm9tQ2hhckNvZGUoZSkpOzY0IT1nJiYoZCs9U3RyaW5nLmZyb21DaGFyQ29kZShoKSl9cmV0dXJuIEJhc2U2NC5fdXRmOF9kZWNvZGUoZCl9LF91dGY4X2VuY29kZTpmdW5jdGlvbihhKXt2YXIgZD0iIjthPWEucmVwbGFjZSgvXHJcbi9nLCJcbiIpO2Zvcih2YXIgYz0wO2M8YS5sZW5ndGg7YysrKXt2YXIgYj1hLmNoYXJDb2RlQXQoYyk7MTI4PgpiP2QrPVN0cmluZy5mcm9tQ2hhckNvZGUoYik6KDEyNzxiJiYyMDQ4PmI\/ZCs9U3RyaW5nLmZyb21DaGFyQ29kZShiPj42fDE5Mik6KGQrPVN0cmluZy5mcm9tQ2hhckNvZGUoYj4+MTJ8MjI0KSxkKz1TdHJpbmcuZnJvbUNoYXJDb2RlKGI+PjYmNjN8MTI4KSksZCs9U3RyaW5nLmZyb21DaGFyQ29kZShiJjYzfDEyOCkpfXJldHVybiBkfSxfdXRmOF9kZWNvZGU6ZnVuY3Rpb24oYSl7Zm9yKHZhciBkPSIiLGM9MCxiLGUsZjtjPGEubGVuZ3RoOyliPWEuY2hhckNvZGVBdChjKSwxMjg+Yj8oZCs9U3RyaW5nLmZyb21DaGFyQ29kZShiKSxjKyspOjE5MTxiJiYyMjQ+Yj8oZT1hLmNoYXJDb2RlQXQoYysxKSxkKz1TdHJpbmcuZnJvbUNoYXJDb2RlKChiJjMxKTw8NnxlJjYzKSxjKz0yKTooZT1hLmNoYXJDb2RlQXQoYysxKSxmPWEuY2hhckNvZGVBdChjKzIpLGQrPVN0cmluZy5mcm9tQ2hhckNvZGUoKGImMTUpPDwxMnwoZSY2Myk8PDZ8ZiY2MyksYys9Myk7cmV0dXJuIGR9LHdoaXRlTGlzdDpmdW5jdGlvbigpe3JldHVyblsidHJhaWxlcnMiXX0sCmlzQmFzZTY0OmZ1bmN0aW9uKGEpe3JldHVybiBCYXNlNjQud2hpdGVMaXN0KCkuaW5jbHVkZXMoYS50b0xvd2VyQ2FzZSgpKXx8InVuZGVmaW5lZCI9PT10eXBlb2YgYXx8IiI9PT1hfHwiIj09PWEudHJpbSgpfHw0Pj1hLmxlbmd0aD8hMTpCYXNlNjQuZW5jb2RlKEJhc2U2NC5kZWNvZGUoYSkpPT1hfX07Ci8qKiAvbS9qcy9kMmN0Y2svdXByb2ZpbGUuZmluYWwubWluLmpzICoqLwphY3RpdmVVc2VyUHJvZmlsZU1uZz17b25yZWFkeTpudWxsLG9ubm90Zm91bmQ6bnVsbCxkaXNhYmxlZDohMSx1aWQ6bnVsbCxhY3RpdmVTdGVwOjAsc3dmU3RvcmU6ITEscmVnaXN0ZXJlZFBhZ2VWaWV3czpudWxsLHJlZ2lzdGVyZWRFdmVudHM6bnVsbCxzZXNzaW9uaWQ6bnVsbCxyZWdpc3RlcmVkQ2FsbGJhY2tzOm51bGwscmVnaXN0ZXJlZFNlc3Npb25DYWxsYmFja3M6bnVsbCxwYWdlVmlld0NvdW50Om51bGwsX19wcm9wZXJ0aWVzOm51bGwsanF1ZXJ5QWN0aXZlOiEwLGlzRDJDU2l0ZTohMCxfX3Jlc2V0Vjo5LHJlc2V0U2Vjb25kUGFzczohMSxfX291dHB1dERpdk1zZzohMSxfX291dHB1dENvbnNvbGVNc2c6ITEsYWpheE1uZzp7YXN5bmM6ITAsX2xhc3RYOm51bGwseDpmdW5jdGlvbigpe3RyeXtpZigidW5kZWZpbmVkIiE9PXR5cGVvZiBYTUxIdHRwUmVxdWVzdClyZXR1cm4gbmV3IFhNTEh0dHBSZXF1ZXN0O2Zvcih2YXIgYT1bIk1TWE1MMi5YbWxIdHRwLjUuMCIsCgkJCSJNU1hNTDIuWG1sSHR0cC40LjAiLCJNU1hNTDIuWG1sSHR0cC4zLjAiLCJNU1hNTDIuWG1sSHR0cC4yLjAiLCJNaWNyb3NvZnQuWG1sSHR0cCJdLGIsZD0wO2Q8YS5sZW5ndGg7ZCsrKXRyeXtiPW5ldyBBY3RpdmVYT2JqZWN0KGFbZF0pO2JyZWFrfWNhdGNoKGMpe319Y2F0Y2goYyl7fXJldHVybiBifSxfc2VuZDpmdW5jdGlvbihhLGIsZCxjLGUsaCl7dHJ5e3ZhciBmPXRoaXMueCgpO3RoaXMuX2xhc3RYPWY7Zi5vcGVuKGQsYSxlKTt0cnl7Zi5hZGRFdmVudExpc3RlbmVyKCJlcnJvciIsZnVuY3Rpb24ocSl7InVuZGVmaW5lZCIhPXR5cGVvZiBoJiZudWxsIT1oJiZoKGYsZi5zdGF0dXNUZXh0LEVycm9yKGYucmVzcG9uc2VUZXh0KSl9KX1jYXRjaChxKXt9Zi5vbnJlYWR5c3RhdGVjaGFuZ2U9ZnVuY3Rpb24oKXs0PT1mLnJlYWR5U3RhdGU\/YihmLnJlc3BvbnNlVGV4dCk6InVuZGVmaW5lZCIhPXR5cGVvZiBoJiZudWxsIT1oJiZoKGYsZi5zdGF0dXNUZXh0LEVycm9yKGYucmVzcG9uc2VUZXh0KSl9OwoJCQkiUE9TVCI9PWQmJmYuc2V0UmVxdWVzdEhlYWRlcigiQ29udGVudC10eXBlIiwiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIik7Zi5zZW5kKGMpfWNhdGNoKHEpeyJ1bmRlZmluZWQiIT10eXBlb2YgaCYmbnVsbCE9aCYmaChmLCJ1bmtub3duIixxKX19LGFqYXg6ZnVuY3Rpb24oYSl7dmFyIGI9dGhpczt0cnl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBhLnR5cGUmJihhLnR5cGU9IkdFVCIpLCJ1bmRlZmluZWQiPT10eXBlb2YgYS5kYXRhJiYoYS5kYXRhPXt9KSx3aW5kb3cualF1ZXJ5JiYidW5kZWZpbmVkIiE9dHlwZW9mICQuYWpheCkkLmFqYXgoYSkuZG9uZShmdW5jdGlvbihjKXsidW5kZWZpbmVkIiE9dHlwZW9mIGEuZG9uZSYmYS5kb25lKGMpfSkuZmFpbChmdW5jdGlvbihjLGUsaCl7InVuZGVmaW5lZCIhPXR5cGVvZiBhLmZhaWwmJmEuZmFpbChjLGUsaCl9KS5hbHdheXMoZnVuY3Rpb24oKXsidW5kZWZpbmVkIiE9dHlwZW9mIGEuYWx3YXlzJiZhLmFsd2F5cygpfSkuZG9uZShmdW5jdGlvbihjKXsidW5kZWZpbmVkIiE9CgkJdHlwZW9mIGEuc3VjY2VzcyYmYS5zdWNjZXNzKGMpfSkuYWx3YXlzKGZ1bmN0aW9uKGMsZSl7InVuZGVmaW5lZCIhPXR5cGVvZiBhLmNvbXBsZXRlJiZhLmNvbXBsZXRlKGIuX2xhc3RYLCJ1bmRlZmluZWQiIT10eXBlb2YgYi5fbGFzdFguc3RhdHVzVGV4dD9iLl9sYXN0WC5zdGF0dXNUZXh0OiIiKX0pO2Vsc2V7dmFyIGQ9Yi5fZ2V0OyJwb3N0Ij09YS50eXBlLnRvTG93ZXJDYXNlKCkmJihkPWIuX3Bvc3QpO2QoYS51cmwsYS5kYXRhLGZ1bmN0aW9uKGMpeyJ1bmRlZmluZWQiIT10eXBlb2YgYS5kb25lJiZhLmRvbmUoYyk7InVuZGVmaW5lZCIhPXR5cGVvZiBhLnN1Y2Nlc3MmJmEuc3VjY2VzcyhjKTsidW5kZWZpbmVkIiE9dHlwZW9mIGEuY29tcGxldGUmJmEuY29tcGxldGUoKTsidW5kZWZpbmVkIiE9dHlwZW9mIGEuYWx3YXlzJiZhLmFsd2F5cygpfSxiLmFzeW5jLGZ1bmN0aW9uKGMsZSxoKXsidW5kZWZpbmVkIiE9dHlwZW9mIGEuZmFpbCYmYS5mYWlsKGMsZSxoKX0pfX1jYXRjaChjKXtjb25zb2xlJiYKCQljb25zb2xlLmxvZyYmY29uc29sZS5sb2coIlVuZXhwZWN0ZWQgZXJyb3IgYWNjZXNzaW5nIGFqYXhNbmcuZ2V0OiAlcyIsYy5tZXNzYWdlKX19LF9nZXQ6ZnVuY3Rpb24oYSxiLGQsYyxlKXt2YXIgaD1bXSxmO2ZvcihmIGluIGIpaC5wdXNoKGVuY29kZVVSSUNvbXBvbmVudChmKSsiPSIrZW5jb2RlVVJJQ29tcG9uZW50KGJbZl0pKTtpZigidW5kZWZpbmVkIj09dHlwZW9mIGN8fG51bGw9PWMpYz0hMDthY3RpdmVVc2VyUHJvZmlsZU1uZy5hamF4TW5nLl9zZW5kKGErIj8iK2guam9pbigiJiIpLGQsIkdFVCIsbnVsbCxjLGUpfSxfcG9zdDpmdW5jdGlvbihhLGIsZCxjLGUpe3ZhciBoPVtdLGY7Zm9yKGYgaW4gYiloLnB1c2goZW5jb2RlVVJJQ29tcG9uZW50KGYpKyI9IitlbmNvZGVVUklDb21wb25lbnQoYltmXSkpO2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgY3x8bnVsbD09YyljPSEwO2FjdGl2ZVVzZXJQcm9maWxlTW5nLmFqYXhNbmcuX3NlbmQoYSxkLCJQT1NUIixoLmpvaW4oIiYiKSwKCQkJYyxlKX0sZ2V0U2NyaXB0OmZ1bmN0aW9uKGEsYil7dHJ5e2lmKHdpbmRvdy5qUXVlcnkmJiJ1bmRlZmluZWQiIT10eXBlb2YgJC5nZXRTY3JpcHQpJC5nZXRTY3JpcHQoYSxiKTtlbHNle3ZhciBkPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpLGM9ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInNjcmlwdCIpWzBdO2QuYXN5bmM9MTtkLm9ubG9hZD1kLm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlvbihlLGgpe2lmKGh8fCFkLnJlYWR5U3RhdGV8fC9sb2FkZWR8Y29tcGxldGUvLnRlc3QoZC5yZWFkeVN0YXRlKSlkLm9ubG9hZD1kLm9ucmVhZHlzdGF0ZWNoYW5nZT1udWxsLGQ9dm9pZCAwLCFoJiZiJiZzZXRUaW1lb3V0KGIsMCl9O2Quc3JjPWE7Yy5wYXJlbnROb2RlLmluc2VydEJlZm9yZShkLGMpfX1jYXRjaChlKXtjb25zb2xlJiZjb25zb2xlLmxvZyYmY29uc29sZS5sb2coIlVuZXhwZWN0ZWQgZXJyb3IgcmV0cmlldmluZyBqcyBzY3JpcHQuIFRoaXMgc2hvdWxkIG5ldmVyIGhhcHBlbjogJXMiLAoJCQllLm1lc3NhZ2UpfX19LGNvb2tpZU1uZzp7cmVhZENvb2tpZVZhbHVlOmZ1bmN0aW9uKGEpe3ZhciBiPW51bGw7dHJ5e2lmKHdpbmRvdy5qUXVlcnkmJiJ1bmRlZmluZWQiIT10eXBlb2YgJC5jb29raWUpYj0kLmNvb2tpZShhKSwidW5kZWZpbmVkIj09dHlwZW9mIGImJihiPW51bGwpO2Vsc2V7YSs9Ij0iO2Zvcih2YXIgZD1kb2N1bWVudC5jb29raWUuc3BsaXQoIjsiKSxjPTA7YzxkLmxlbmd0aDtjKyspe2Zvcih2YXIgZT1kW2NdOyIgIj09ZS5jaGFyQXQoMCk7KWU9ZS5zdWJzdHJpbmcoMSxlLmxlbmd0aCk7aWYoMD09ZS5pbmRleE9mKGEpKXtiPWUuc3Vic3RyaW5nKGEubGVuZ3RoLGUubGVuZ3RoKTticmVha319fX1jYXRjaChoKXtjb25zb2xlJiZjb25zb2xlLmxvZyYmY29uc29sZS5sb2coIlVuZXhwZWN0ZWQgZXJyb3IgcmVhZGluZyBjb29raWU6ICVzIixoLm1lc3NhZ2UpfXJldHVybiBifSxzZXRDb29raWVWYWx1ZTpmdW5jdGlvbihhLGIsZCxjKXt0cnl7aWYoITAhPT10aGlzLmRpc2FibGVkKXtpZigidW5kZWZpbmVkIj09CgkJCXR5cGVvZiBkfHxudWxsPT1kKWQ9Ii8iO2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgY3x8bnVsbD09YyljPTA7InVuZGVmaW5lZCI9PXR5cGVvZiBiJiYoYj1udWxsKTt2YXIgZT1uZXcgRGF0ZTtlLnNldFRpbWUoZS5nZXRUaW1lKCkrODY0RTUqYyk7d2luZG93LmpRdWVyeSYmInVuZGVmaW5lZCIhPXR5cGVvZiAkLmNvb2tpZT8kLmNvb2tpZShhLGIse3BhdGg6ZCxzZWN1cmU6ITAsZXhwaXJlczowPT1jPyIiOmV9KTooZXhwaXJlcz0wIT1jPyI7IGV4cGlyZXM9IitlLnRvR01UU3RyaW5nKCk6IiIsZG9jdW1lbnQuY29va2llPWErIj0iK2IrZXhwaXJlcysiOyBzZWN1cmU7IHBhdGg9IitkLGImJmFjdGl2ZVVzZXJQcm9maWxlTW5nLmNvb2tpZU1uZy5sb2dDb29raWUoYSxiLGMsZCkpfX1jYXRjaChoKXtjb25zb2xlJiZjb25zb2xlLmxvZyYmY29uc29sZS5sb2coIlVuZXhwZWN0ZWQgZXJyb3Igc2V0dGluZyBjb29raWU6ICVzIixoLm1lc3NhZ2UpfX0sZGVsZXRlQ29va2llOmZ1bmN0aW9uKGEpe3RyeXt3aW5kb3cualF1ZXJ5JiYKCQkidW5kZWZpbmVkIiE9dHlwZW9mICQuY29va2llPygkLmNvb2tpZShhLG51bGwpLCQuY29va2llKGEsbnVsbCx7cGF0aDoiLyJ9KSk6dGhpcy5zZXRDb29raWVWYWx1ZShhLG51bGwsLTEpfWNhdGNoKGIpe2NvbnNvbGUmJmNvbnNvbGUubG9nJiZjb25zb2xlLmxvZygiVW5leHBlY3RlZCBlcnJvciBkZWxldGluZyBjb29raWU6ICVzIixiLm1lc3NhZ2UpfX0sbG9nQ29va2llOmZ1bmN0aW9uKGEsYixkLGMsZSl7InVuZGVmaW5lZCI9PT10eXBlb2YgZSYmKGU9NSk7InVuZGVmaW5lZCI9PT10eXBlb2Ygd2luZG93LkNvb2tpZUxvZ2dlcj9lJiZzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7YWN0aXZlVXNlclByb2ZpbGVNbmcuY29va2llTW5nLmxvZ0Nvb2tpZShhLGIsZCxjLGUtMSl9LDEwMCk6d2luZG93LkNvb2tpZUxvZ2dlci5sb2coYSxiLGQsYyl9fSxfX3VzZVByb3h5OmZ1bmN0aW9uKCl7cmV0dXJuITE9PT10aGlzLmlzRDJDU2l0ZT8hMTohMH0sX2lzQm90OmZ1bmN0aW9uKCl7cmV0dXJuL2JvdHxnb29nbGVib3R8Y3Jhd2xlcnxzcGlkZXJ8cm9ib3R8Y3Jhd2xpbmcvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpPwoJCSEwOiExfSxnZXRTdGF0c1VSSTpmdW5jdGlvbigpe3ZhciBhPSIvcHJveHlfc2QyYy8iO3RyeXshMT09PWFjdGl2ZVVzZXJQcm9maWxlTW5nLmlzRDJDU2l0ZSYmKGE9Imh0dHA6Ly9zdGF0cy5kMmNtZWRpYS5jYS8iLCJodHRwczoiPT13aW5kb3cubG9jYXRpb24ucHJvdG9jb2wmJihhPSJodHRwczovL3NzbHN0YXRzLmQyY21lZGlhLmNhLyIpKX1jYXRjaChiKXtjb25zb2xlJiZjb25zb2xlLmxvZyYmY29uc29sZS5sb2coIlVuZXhwZWN0ZWQgZXJyb3IgY2F1Z2h0IGluIGdldFN0YXRzVVJJOiAlcyIsYi5tZXNzYWdlKSxhPSJodHRwczovL3NzbHN0YXRzLmQyY21lZGlhLmNhLyJ9cmV0dXJuIGF9LGdldEZQVVJJOmZ1bmN0aW9uKCl7aWYoITA9PT10aGlzLmRpc2FibGVkKXJldHVybiIiO3ZhciBhPSIvanMvZDJjdGNrL2ZwcmludC52Mi5taW4uanMiO3RyeXthPSExPT09YWN0aXZlVXNlclByb2ZpbGVNbmcuaXNEMkNTaXRlP251bGwhPXdpbmRvdy5sb2NhdGlvbiYmInVuZGVmaW5lZCIhPQoJdHlwZW9mIHdpbmRvdy5sb2NhdGlvbi5ocmVmJiYtMSE9d2luZG93LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiY3JtMi5kMmNtZWRpYS5jYSIpPyJodHRwczovL2NybTIuZDJjbWVkaWEuY2EvYXNzZXRzL2pzL2QyY3Rjay9mcHJpbnQudjIuanMiOiJodHRwczovL3d3dy5hdXRvYXViYWluZS5jb20vanMvZDJjdGNrL2ZwcmludC52Mi5taW4uanMiOiEwPT09dGhpcy5fX291dHB1dERpdk1zZz8iL2pzL2QyY3Rjay9mcHJpbnQudjIuanMiOiIvanMvZDJjdGNrL2ZwcmludC52Mi5taW4uanMifWNhdGNoKGIpe2NvbnNvbGUmJmNvbnNvbGUubG9nJiZjb25zb2xlLmxvZygiVW5leHBlY3RlZCBlcnJvciBjYXVnaHQgaW4gZ2V0RlBVUkk6ICVzIixiLm1lc3NhZ2UpLGE9Ii9qcy9kMmN0Y2svZnByaW50LnYyLm1pbi5qcyJ9cmV0dXJuIGF9LGdldFNlc3Npb25JRDpmdW5jdGlvbigpe2lmKG51bGwhPWFjdGl2ZVVzZXJQcm9maWxlTW5nLnNlc3Npb25pZClyZXR1cm4gYWN0aXZlVXNlclByb2ZpbGVNbmcuc2Vzc2lvbmlkOwoJCXZhciBhPXdpbmRvdy5hY3RpdmVTZXNzaW9uSUQ7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBhfHxudWxsPT1hfHwwPT1hKXJldHVybiBhY3RpdmVVc2VyUHJvZmlsZU1uZy5zZXNzaW9uaWQ9d2luZG93LmFjdGl2ZVNlc3Npb25JRCxhY3RpdmVVc2VyUHJvZmlsZU1uZy5zZXNzaW9uaWQ7YT1hY3RpdmVVc2VyUHJvZmlsZU1uZy5jb29raWVNbmcucmVhZENvb2tpZVZhbHVlKCJ1c2lkIik7cmV0dXJuIG51bGwhPWE\/KGFjdGl2ZVVzZXJQcm9maWxlTW5nLnNlc3Npb25pZD1hLGFjdGl2ZVVzZXJQcm9maWxlTW5nLnNlc3Npb25pZCk6MH0scmVnaXN0ZXJDYWxsYmFjazpmdW5jdGlvbihhKXtpZighMD09PXRoaXMuZGlzYWJsZWQpe2lmKG51bGwhPWEpdHJ5e2EoKX1jYXRjaChiKXt9cmV0dXJuITF9bnVsbD09YWN0aXZlVXNlclByb2ZpbGVNbmcucmVnaXN0ZXJlZENhbGxiYWNrcyYmKGFjdGl2ZVVzZXJQcm9maWxlTW5nLnJlZ2lzdGVyZWRDYWxsYmFja3M9W10pOyJ1bmRlZmluZWQiIT10eXBlb2YgYWN0aXZlVXNlclByb2ZpbGVNbmcudWlkJiYKCW51bGwhPWFjdGl2ZVVzZXJQcm9maWxlTW5nLnVpZCYmIm5vbmUiIT1hY3RpdmVVc2VyUHJvZmlsZU1uZy51aWQ\/YSgpOmFjdGl2ZVVzZXJQcm9maWxlTW5nLnJlZ2lzdGVyZWRDYWxsYmFja3MucHVzaChhKX0scmVnaXN0ZXJTZXNzaW9uQ2FsbGJhY2s6ZnVuY3Rpb24oYSl7aWYoITA9PT10aGlzLmRpc2FibGVkKXtpZihudWxsIT1hKXRyeXthKCl9Y2F0Y2goYil7fXJldHVybiExfW51bGw9PWFjdGl2ZVVzZXJQcm9maWxlTW5nLnJlZ2lzdGVyZWRTZXNzaW9uQ2FsbGJhY2tzJiYoYWN0aXZlVXNlclByb2ZpbGVNbmcucmVnaXN0ZXJlZFNlc3Npb25DYWxsYmFja3M9W10pOyJ1bmRlZmluZWQiIT10eXBlb2YgYWN0aXZlVXNlclByb2ZpbGVNbmcuc2Vzc2lvbmlkJiZudWxsIT1hY3RpdmVVc2VyUHJvZmlsZU1uZy5zZXNzaW9uaWQmJjAhPWFjdGl2ZVVzZXJQcm9maWxlTW5nLnNlc3Npb25pZD9hKCk6YWN0aXZlVXNlclByb2ZpbGVNbmcucmVnaXN0ZXJlZFNlc3Npb25DYWxsYmFja3MucHVzaChhKX0sCglfX25vdGlmeVVVSUQ6ZnVuY3Rpb24oKXt0cnl7aWYoITA9PT10aGlzLmRpc2FibGVkKXt0cnl7YigpfWNhdGNoKGQpe31yZXR1cm4hMX1pZihudWxsIT1hY3RpdmVVc2VyUHJvZmlsZU1uZy5yZWdpc3RlcmVkQ2FsbGJhY2tzKXtmb3IodmFyIGE9MDthPGFjdGl2ZVVzZXJQcm9maWxlTW5nLnJlZ2lzdGVyZWRDYWxsYmFja3MubGVuZ3RoO2ErKyl7dmFyIGI9YWN0aXZlVXNlclByb2ZpbGVNbmcucmVnaXN0ZXJlZENhbGxiYWNrc1thXTtiKCl9YWN0aXZlVXNlclByb2ZpbGVNbmcucmVnaXN0ZXJlZENhbGxiYWNrcz1udWxsfX1jYXRjaChkKXtjb25zb2xlJiZjb25zb2xlLmxvZyYmY29uc29sZS5sb2coIlVuZXhwZWN0ZWQgZXJyb3IgY2F1Z2h0IGluIF9fbm90aWZ5VVVJRDogJXMiLGQubWVzc2FnZSl9fSxfX25vdGlmeVNlc3Npb25JRDpmdW5jdGlvbigpe2lmKCEwPT09dGhpcy5kaXNhYmxlZClyZXR1cm4hMTt2YXIgYT1hY3RpdmVVc2VyUHJvZmlsZU1uZy5nZXRTZXNzaW9uSUQoKTsKCQlpZigidW5kZWZpbmVkIj09dHlwZW9mIGF8fG51bGw9PWF8fCIwIj09YXx8MD09YSl2YXIgYj1zZXRJbnRlcnZhbChmdW5jdGlvbigpe3RyeXtudWxsPT1hY3RpdmVVc2VyUHJvZmlsZU1uZy5yZWdpc3RlcmVkU2Vzc2lvbkNhbGxiYWNrcz9jbGVhckludGVydmFsKGIpOjAhPT1hY3RpdmVVc2VyUHJvZmlsZU1uZy5nZXRTZXNzaW9uSUQoKSYmKGNsZWFySW50ZXJ2YWwoYiksYWN0aXZlVXNlclByb2ZpbGVNbmcuX19ub3RpZnlTZXNzaW9uSUQoKSl9Y2F0Y2goZCl7Y29uc29sZSYmY29uc29sZS5sb2cmJmNvbnNvbGUubG9nKCJOb3RpZnkgc2Vzc2lvbmlkIGZhaWxlZCB3aXRoOiAlcyIsZC5tZXNzYWdlKX19LDUwMCk7aWYobnVsbCE9YWN0aXZlVXNlclByb2ZpbGVNbmcucmVnaXN0ZXJlZFNlc3Npb25DYWxsYmFja3MpdHJ5e2ZvcihhPTA7YTxhY3RpdmVVc2VyUHJvZmlsZU1uZy5yZWdpc3RlcmVkU2Vzc2lvbkNhbGxiYWNrcy5sZW5ndGg7YSsrKSgwLGFjdGl2ZVVzZXJQcm9maWxlTW5nLnJlZ2lzdGVyZWRTZXNzaW9uQ2FsbGJhY2tzW2FdKSgpOwoJCQlhY3RpdmVVc2VyUHJvZmlsZU1uZy5yZWdpc3RlcmVkU2Vzc2lvbkNhbGxiYWNrcz1udWxsfWNhdGNoKGQpe2NvbnNvbGUmJmNvbnNvbGUubG9nJiZjb25zb2xlLmxvZygiVW5leHBlY3RlZCBlcnJvciBjYXVnaHQgaW4gX19ub3RpZnlTZXNzaW9uSUQ6ICVzIixkLm1lc3NhZ2UpfX0sbG9nTXNnOmZ1bmN0aW9uKGEpe3RyeXtpZighMD09PXRoaXMuZGlzYWJsZWQpcmV0dXJuITE7ITA9PT10aGlzLl9fb3V0cHV0RGl2TXNnJiYkKGRvY3VtZW50LmJvZHkpLmFwcGVuZCgiPGRpdj4iK2ErIjwvZGl2PiIpOyEwPT09dGhpcy5fX291dHB1dENvbnNvbGVNc2cmJmNvbnNvbGUmJmNvbnNvbGUubG9nJiZjb25zb2xlLmxvZyhhKX1jYXRjaChiKXtjb25zb2xlJiZjb25zb2xlLmxvZyYmY29uc29sZS5sb2coIlVuZXhwZWN0ZWQgZXJyb3IgY2F1Z2h0IGluIG1lc3NhZ2UgbG9nZ2luZy4gSG93IGlyb25pYzogJXMiLGIubWVzc2FnZSl9fSxjaGVja1NjaGVkdWxlZFJlc2V0OmZ1bmN0aW9uKCl7dmFyIGE9CgkJITE7dHJ5e2lmKCEwPT09YWN0aXZlVXNlclByb2ZpbGVNbmcuZGlzYWJsZWQpcmV0dXJuITE7dmFyIGI9YWN0aXZlVXNlclByb2ZpbGVNbmcuY29va2llTW5nLnJlYWRDb29raWVWYWx1ZSgidXVpZF9yc3QiKTtpZigidW5kZWZpbmVkIj09dHlwZW9mIGJ8fG51bGw9PWIpYj0wO2IhPXRoaXMuX19yZXNldFYmJihhPSEwLGFjdGl2ZVVzZXJQcm9maWxlTW5nLmNvb2tpZU1uZy5zZXRDb29raWVWYWx1ZSgidXVpZF9yc3QiLHRoaXMuX19yZXNldFYsIi8iLDRFMykpfWNhdGNoKGQpe3RoaXMubG9nTXNnKCJVbmV4cGVjdGVkIGVycm9yIGluIHNjaGVkdWxlZCByZXNldCBjaGVjazogIitkLm1lc3NhZ2UpfXJldHVybiBhfSxnZXRBY3RpdmVQcm9maWxlaWQ6ZnVuY3Rpb24oKXtpZihudWxsIT10aGlzLnVpZClyZXR1cm4gbnVsbD09d2luZG93LmFjdGl2ZVByb2ZpbGVJRCYmKHdpbmRvdy5hY3RpdmVQcm9maWxlSUQ9dGhpcy51aWQpLHRoaXMudWlkO2lmKCEwPT09YWN0aXZlVXNlclByb2ZpbGVNbmcuZGlzYWJsZWQpcmV0dXJuIG51bGw7CgkJdmFyIGE9dGhpcy5jb29raWVNbmcucmVhZENvb2tpZVZhbHVlKCJ1dWlkIik7aWYobnVsbCE9YSYmMDxhLmxlbmd0aClyZXR1cm4gdGhpcy5hY3RpdmVQcm9maWxlSUQ9dGhpcy51aWQ9YSx0aGlzLl9fZmlyZVJlYWR5RXZlbnQoKSx0aGlzLnVpZDthPWFjdGl2ZVVzZXJQcm9maWxlTW5nLmNvb2tpZU1uZy5yZWFkQ29va2llVmFsdWUoInV1aWRfdmxkMyIpO2lmKG51bGwhPWEmJjAhPWEubGVuZ3RoKXthY3RpdmVVc2VyUHJvZmlsZU1uZy5fX2xvYWRVc2VyRGF0YUNvb2tpZSgpO2FjdGl2ZVVzZXJQcm9maWxlTW5nLmVuc3VyZVZhbGlkSUQoKTtpZihudWxsIT1hY3RpdmVVc2VyUHJvZmlsZU1uZy51aWQpcmV0dXJuIGFjdGl2ZVVzZXJQcm9maWxlTW5nLnVpZDthY3RpdmVVc2VyUHJvZmlsZU1uZy5fX2xvYWRMb2NhbFN0b3JhZ2VDb29raWUoKTthY3RpdmVVc2VyUHJvZmlsZU1uZy5lbnN1cmVWYWxpZElEKCk7aWYobnVsbCE9YWN0aXZlVXNlclByb2ZpbGVNbmcudWlkKXJldHVybiBhY3RpdmVVc2VyUHJvZmlsZU1uZy51aWQ7CgkJCWFjdGl2ZVVzZXJQcm9maWxlTW5nLl9fbG9hZEdsb2JhbFN0b3JhZ2VDb29raWUoKTthY3RpdmVVc2VyUHJvZmlsZU1uZy5lbnN1cmVWYWxpZElEKCk7aWYobnVsbCE9YWN0aXZlVXNlclByb2ZpbGVNbmcudWlkKXJldHVybiBhY3RpdmVVc2VyUHJvZmlsZU1uZy51aWQ7YWN0aXZlVXNlclByb2ZpbGVNbmcuX19sb2FkU2Vzc2lvblN0b3JhZ2VDb29raWUoKTthY3RpdmVVc2VyUHJvZmlsZU1uZy5lbnN1cmVWYWxpZElEKCk7aWYobnVsbCE9YWN0aXZlVXNlclByb2ZpbGVNbmcudWlkKXJldHVybiBhY3RpdmVVc2VyUHJvZmlsZU1uZy51aWQ7YWN0aXZlVXNlclByb2ZpbGVNbmcuX19sb2FkRnJvbUxvY2FsREIoKTthY3RpdmVVc2VyUHJvZmlsZU1uZy5lbnN1cmVWYWxpZElEKCk7aWYobnVsbCE9YWN0aXZlVXNlclByb2ZpbGVNbmcudWlkKXJldHVybiBhY3RpdmVVc2VyUHJvZmlsZU1uZy51aWQ7YWN0aXZlVXNlclByb2ZpbGVNbmcuX19sb2FkRkxWQ29va2llKCl9ZWxzZSBzZXRUaW1lb3V0KCJhY3RpdmVVc2VyUHJvZmlsZU1uZy5fX2NvbnRpbnVlTG9hZCgzKSIsCgkJCTUwMCk7cmV0dXJuIG51bGx9LGVuc3VyZVZhbGlkSUQ6ZnVuY3Rpb24oKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIGFjdGl2ZVVzZXJQcm9maWxlTW5nfHwic3RyaW5nIj09dHlwZW9mIGFjdGl2ZVVzZXJQcm9maWxlTW5nLnVpZCYmMD09YWN0aXZlVXNlclByb2ZpbGVNbmcudWlkLmxlbmd0aClhY3RpdmVVc2VyUHJvZmlsZU1uZy51aWQ9bnVsbH0sc2V0QWN0aXZlUHJvZmlsZWlkOmZ1bmN0aW9uKCl7aWYobnVsbD09YWN0aXZlVXNlclByb2ZpbGVNbmcudWlkfHwhMD09PWFjdGl2ZVVzZXJQcm9maWxlTW5nLmRpc2FibGVkKXJldHVybiExO2FjdGl2ZVVzZXJQcm9maWxlTW5nLnNldERCQ29va2llKCk7YWN0aXZlVXNlclByb2ZpbGVNbmcuc2V0UE5HQ29va2llKCk7YWN0aXZlVXNlclByb2ZpbGVNbmcuc2V0RVRhZ0Nvb2tpZSgpO2FjdGl2ZVVzZXJQcm9maWxlTW5nLnNldFVzZXJEYXRhQ29va2llKCk7YWN0aXZlVXNlclByb2ZpbGVNbmcuc2V0TG9jYWxTdG9yYWdlQ29va2llKCk7YWN0aXZlVXNlclByb2ZpbGVNbmcuc2V0R2xvYmFsU3RvcmFnZUNvb2tpZSgpOwoJCWFjdGl2ZVVzZXJQcm9maWxlTW5nLnNldFNlc3Npb25TdG9yYWdlQ29va2llKCk7YWN0aXZlVXNlclByb2ZpbGVNbmcuc2V0RkxWQ29va2llKCk7YWN0aXZlVXNlclByb2ZpbGVNbmcuX19ub3RpZnlVVUlEKCl9LF9fY29udGludWVMb2FkOmZ1bmN0aW9uKGEpe2lmKCEwPT09YWN0aXZlVXNlclByb2ZpbGVNbmcuZGlzYWJsZWQpcmV0dXJuITE7YWN0aXZlVXNlclByb2ZpbGVNbmcuZW5zdXJlVmFsaWRJRCgpO2lmKG51bGwhPWFjdGl2ZVVzZXJQcm9maWxlTW5nLnVpZClhY3RpdmVVc2VyUHJvZmlsZU1uZy5fX2ZpcmVSZWFkeUV2ZW50KCk7ZWxzZSBzd2l0Y2goYSl7Y2FzZSAxOmFjdGl2ZVVzZXJQcm9maWxlTW5nLl9fbG9hZEVUYWdDb29raWUoKTticmVhaztjYXNlIDI6YWN0aXZlVXNlclByb2ZpbGVNbmcuX19sb2FkUE5HQ29va2llKCk7YnJlYWs7ZGVmYXVsdDphY3RpdmVVc2VyUHJvZmlsZU1uZy5fX2ZpcmVOb3RGb3VuZCgpfX0sX19maXJlUmVhZHlFdmVudDpmdW5jdGlvbigpe2lmKG51bGwhPQoJCWFjdGl2ZVVzZXJQcm9maWxlTW5nLm9ucmVhZHkpYWN0aXZlVXNlclByb2ZpbGVNbmcub25yZWFkeShhY3RpdmVVc2VyUHJvZmlsZU1uZy51aWQpO2FjdGl2ZVVzZXJQcm9maWxlTW5nLl9fbm90aWZ5VVVJRCgpfSxfX2ZpcmVOb3RGb3VuZDpmdW5jdGlvbigpe2lmKG51bGwhPWFjdGl2ZVVzZXJQcm9maWxlTW5nLm9ubm90Zm91bmQpYWN0aXZlVXNlclByb2ZpbGVNbmcub25ub3Rmb3VuZCgpfSxzZXRGTFZDb29raWU6ZnVuY3Rpb24oKXtpZihudWxsIT1hY3RpdmVVc2VyUHJvZmlsZU1uZy51aWQmJiJub25lIiE9YWN0aXZlVXNlclByb2ZpbGVNbmcudWlkKXtpZighMD09PWFjdGl2ZVVzZXJQcm9maWxlTW5nLmRpc2FibGVkKXJldHVybiExO3RyeXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIG5hdmlnYXRvci5wbHVnaW5zJiYib2JqZWN0Ij09dHlwZW9mIG5hdmlnYXRvci5wbHVnaW5zWyJTaG9ja3dhdmUgRmxhc2giXXx8d2luZG93LkFjdGl2ZVhPYmplY3QmJjAhPW5ldyBBY3RpdmVYT2JqZWN0KCJTaG9ja3dhdmVGbGFzaC5TaG9ja3dhdmVGbGFzaCIpKXtpZighYWN0aXZlVXNlclByb2ZpbGVNbmcuc3dmU3RvcmUmJgoJCShhY3RpdmVVc2VyUHJvZmlsZU1uZy5zd2ZTdG9yZT0hMCwidW5kZWZpbmVkIj09dHlwZW9mIFN3ZlN0b3JlKSl7YWN0aXZlVXNlclByb2ZpbGVNbmcuYWpheE1uZy5nZXRTY3JpcHQoIi9qcy9zd2ZzdG9yZS5qcyIsYWN0aXZlVXNlclByb2ZpbGVNbmcuc2V0RkxWQ29va2llKTtyZXR1cm59dHJ5e3ZhciBhPW5ldyBTd2ZTdG9yZSh7bmFtZXNwYWNlOiJ1cHJvZmlsZSIsc3dmX3VybDoiL2ZsYXNoL3N0b3JhZ2Uuc3dmIixvbnJlYWR5OmZ1bmN0aW9uKCl7YS5zZXQoInVpZCIsYWN0aXZlVXNlclByb2ZpbGVNbmcudWlkKX0sb25lcnJvcjpmdW5jdGlvbigpe319KX1jYXRjaChiKXsidW5kZWZpbmVkIiE9dHlwZW9mIGNvbnNvbGUmJm51bGwhPWNvbnNvbGUmJmNvbnNvbGUubG9nJiZjb25zb2xlLmxvZygiVW5hYmxlIHRvIHNldCBGTFYgQ29va2llLiBFcnJvcjogIitiLm1lc3NhZ2UpfX19Y2F0Y2goYil7InVuZGVmaW5lZCIhPXR5cGVvZiBjb25zb2xlJiZudWxsIT1jb25zb2xlJiZjb25zb2xlLmxvZyYmCgljb25zb2xlLmxvZygiTUFJTjogVW5hYmxlIHRvIHNldCBGTFYgQ29va2llLiBFcnJvcjogIitiLm1lc3NhZ2UpfX19LF9fbG9hZEZMVkNvb2tpZTpmdW5jdGlvbigpe2lmKG51bGw9PWFjdGl2ZVVzZXJQcm9maWxlTW5nLnVpZCl7aWYoITA9PT1hY3RpdmVVc2VyUHJvZmlsZU1uZy5kaXNhYmxlZClyZXR1cm4hMTtpZigidW5kZWZpbmVkIiE9dHlwZW9mIG5hdmlnYXRvci5wbHVnaW5zJiYib2JqZWN0Ij09dHlwZW9mIG5hdmlnYXRvci5wbHVnaW5zWyJTaG9ja3dhdmUgRmxhc2giXXx8d2luZG93LkFjdGl2ZVhPYmplY3QmJjAhPW5ldyBBY3RpdmVYT2JqZWN0KCJTaG9ja3dhdmVGbGFzaC5TaG9ja3dhdmVGbGFzaCIpKXtpZighYWN0aXZlVXNlclByb2ZpbGVNbmcuc3dmU3RvcmUmJihhY3RpdmVVc2VyUHJvZmlsZU1uZy5zd2ZTdG9yZT0hMCwidW5kZWZpbmVkIj09dHlwZW9mIFN3ZlN0b3JlKSl7YWN0aXZlVXNlclByb2ZpbGVNbmcuYWpheE1uZy5nZXRTY3JpcHQoIi9qcy9zd2ZzdG9yZS5qcyIsCgkJYWN0aXZlVXNlclByb2ZpbGVNbmcuX19sb2FkRkxWQ29va2llKTtyZXR1cm59dHJ5e3ZhciBhPW5ldyBTd2ZTdG9yZSh7bmFtZXNwYWNlOiJ1cHJvZmlsZSIsc3dmX3VybDoiL2ZsYXNoL3N0b3JhZ2Uuc3dmIixvbnJlYWR5OmZ1bmN0aW9uKCl7dmFyIGI9YS5nZXQoInVpZCIpOyJ1bmRlZmluZWQiIT10eXBlb2YgYiYmbnVsbCE9YiYmKGFjdGl2ZVVzZXJQcm9maWxlTW5nLnVpZD1iKTthY3RpdmVVc2VyUHJvZmlsZU1uZy5fX2NvbnRpbnVlTG9hZCgxKX0sb25lcnJvcjpmdW5jdGlvbigpe2FjdGl2ZVVzZXJQcm9maWxlTW5nLl9fY29udGludWVMb2FkKDEpfX0pfWNhdGNoKGIpe319ZWxzZSBhY3RpdmVVc2VyUHJvZmlsZU1uZy5fX2NvbnRpbnVlTG9hZCgxKX19LF9fbG9hZEZyb21Mb2NhbERCOmZ1bmN0aW9uKCl7aWYobnVsbD09YWN0aXZlVXNlclByb2ZpbGVNbmcudWlkKXtpZighMD09PWFjdGl2ZVVzZXJQcm9maWxlTW5nLmRpc2FibGVkKXJldHVybiExO3RyeXt3aW5kb3cub3BlbkRhdGFiYXNlJiYKCWRhdGFiYXNlLnRyYW5zYWN0aW9uKGZ1bmN0aW9uKGEpe2EuZXhlY3V0ZVNxbCgiU0VMRUNUIHZhbHVlIEZST00gdXByb2ZpbGUgV0hFUkUgbmFtZT0\/IixbInVpZCJdLGZ1bmN0aW9uKGIsZCl7MTw9ZC5yb3dzLmxlbmd0aCYmKGFjdGl2ZVVzZXJQcm9maWxlTW5nLnVpZD1kLnJvd3MuaXRlbSgwKS52YWx1ZSl9LGZ1bmN0aW9uKGIsZCl7fSl9KX1jYXRjaChhKXt9fX0sc2V0REJDb29raWU6ZnVuY3Rpb24oKXtpZihudWxsIT1hY3RpdmVVc2VyUHJvZmlsZU1uZy51aWQmJiJub25lIiE9YWN0aXZlVXNlclByb2ZpbGVNbmcudWlkKXtpZighMD09PWFjdGl2ZVVzZXJQcm9maWxlTW5nLmRpc2FibGVkKXJldHVybiExO3RyeXtpZih3aW5kb3cub3BlbkRhdGFiYXNlKXt2YXIgYT13aW5kb3cub3BlbkRhdGFiYXNlKCJzcWxpdGVfdXByb2ZpbGUiLCIiLCJ1cHJvZmlsZSIsMTA0ODU3Nik7InVuZGVmaW5lZCIhPXR5cGVvZiB2YWx1ZSYmYS50cmFuc2FjdGlvbihmdW5jdGlvbihiKXtiLmV4ZWN1dGVTcWwoIkNSRUFURSBUQUJMRSBJRiBOT1QgRVhJU1RTIHVwcm9maWxlKGlkIElOVEVHRVIgTk9UIE5VTEwgUFJJTUFSWSBLRVkgQVVUT0lOQ1JFTUVOVCwgdWlkIFRFWFQgTk9UIE5VTEwsIHZhbHVlIFRFWFQgTk9UIE5VTEwsIFVOSVFVRSAodWlkKSkiLAoJCVtdLGZ1bmN0aW9uKGQsYyl7fSxmdW5jdGlvbihkLGMpe30pO2IuZXhlY3V0ZVNxbCgiSU5TRVJUIE9SIFJFUExBQ0UgSU5UTyB1cHJvZmlsZSh1aWQsIHZhbHVlKSBWQUxVRVMoPywgPykiLFsidWlkIixhY3RpdmVVc2VyUHJvZmlsZU1uZy51aWRdLGZ1bmN0aW9uKGQsYyl7fSxmdW5jdGlvbihkLGMpe30pfSl9fWNhdGNoKGIpe319fSxfX2xvYWRQTkdDb29raWU6ZnVuY3Rpb24oKXtpZihudWxsPT1hY3RpdmVVc2VyUHJvZmlsZU1uZy51aWQpe2lmKCEwPT09YWN0aXZlVXNlclByb2ZpbGVNbmcuZGlzYWJsZWQpcmV0dXJuITE7dHJ5e2lmKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpLmdldENvbnRleHQpe3ZhciBhPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpO2Euc3R5bGUudmlzaWJpbGl0eT0iaGlkZGVuIjthLnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSI7YS53aWR0aD0yMDA7YS5oZWlnaHQ9MTt2YXIgYj1hLmdldENvbnRleHQoIjJkIiksZD1uZXcgSW1hZ2U7CgkJZC5zdHlsZS52aXNpYmlsaXR5PSJoaWRkZW4iO2Quc3R5bGUucG9zaXRpb249ImFic29sdXRlIjtkLnNyYz0iL2ltYWdlc19hcGkvZDJjaWdjYWNoZTEucG5nIjtkLm9uZXJyb3I9ZnVuY3Rpb24oKXthY3RpdmVVc2VyUHJvZmlsZU1uZy5fX2NvbnRpbnVlTG9hZCgzKX07ZC5vbmxvYWQ9ZnVuY3Rpb24oKXt0cnl7Yi5kcmF3SW1hZ2UoZCwwLDApO2Zvcih2YXIgYz1iLmdldEltYWdlRGF0YSgwLDAsMjAwLDEpLmRhdGEsZT0iIixoPTAsZj1jLmxlbmd0aDtoPGYmJjAhPWNbaF07aCs9NCl7ZSs9U3RyaW5nLmZyb21DaGFyQ29kZShjW2hdKTtpZigwPT1jW2grMV0pYnJlYWs7ZSs9U3RyaW5nLmZyb21DaGFyQ29kZShjW2grMV0pO2lmKDA9PWNbaCsyXSlicmVhaztlKz1TdHJpbmcuZnJvbUNoYXJDb2RlKGNbaCsyXSl9MDxlLmxlbmd0aCYmKGFjdGl2ZVVzZXJQcm9maWxlTW5nLnVpZD1lKX1jYXRjaChxKXt9YWN0aXZlVXNlclByb2ZpbGVNbmcuX19jb250aW51ZUxvYWQoMyl9fX1jYXRjaChjKXt9fX0sCglzZXRQTkdDb29raWU6ZnVuY3Rpb24oKXtpZihudWxsIT1hY3RpdmVVc2VyUHJvZmlsZU1uZy51aWQmJiJub25lIiE9YWN0aXZlVXNlclByb2ZpbGVNbmcudWlkKXtpZighMD09PWFjdGl2ZVVzZXJQcm9maWxlTW5nLmRpc2FibGVkKXJldHVybiExO3ZhciBhPW5ldyBJbWFnZTthLnN0eWxlLnZpc2liaWxpdHk9ImhpZGRlbiI7YS5zdHlsZS5wb3NpdGlvbj0iYWJzb2x1dGUiO2Euc3JjPSIvaW1hZ2VzX2FwaS9kMmNpZ2NhY2hlMS5wbmc\/dmFsPSIrYWN0aXZlVXNlclByb2ZpbGVNbmcudWlkfX0sX19sb2FkRVRhZ0Nvb2tpZTpmdW5jdGlvbigpe2lmKG51bGw9PWFjdGl2ZVVzZXJQcm9maWxlTW5nLnVpZCl7aWYoITA9PT1hY3RpdmVVc2VyUHJvZmlsZU1uZy5kaXNhYmxlZClyZXR1cm4hMTt0aGlzLmFqYXhNbmcuYWpheCh7dXJsOiIvaW1hZ2VzX2FwaS9kMmNpZ2NhY2hlMi5wbmciLHR5cGU6IkdFVCIsc3VjY2VzczpmdW5jdGlvbihhKXthY3RpdmVVc2VyUHJvZmlsZU1uZy51aWQ9YX0sCgkJY29tcGxldGU6ZnVuY3Rpb24oYSxiKXthY3RpdmVVc2VyUHJvZmlsZU1uZy5fX2NvbnRpbnVlTG9hZCgyKX19KX19LHNldEVUYWdDb29raWU6ZnVuY3Rpb24oKXtpZihudWxsIT1hY3RpdmVVc2VyUHJvZmlsZU1uZy51aWQmJiJub25lIiE9YWN0aXZlVXNlclByb2ZpbGVNbmcudWlkKXtpZighMD09PWFjdGl2ZVVzZXJQcm9maWxlTW5nLmRpc2FibGVkKXJldHVybiExO3ZhciBhPW5ldyBJbWFnZTthLnN0eWxlLnZpc2liaWxpdHk9ImhpZGRlbiI7YS5zdHlsZS5wb3NpdGlvbj0iYWJzb2x1dGUiO2Euc3JjPSIvaW1hZ2VzX2FwaS9kMmNpZ2NhY2hlMi5wbmc\/dmFsPSIrYWN0aXZlVXNlclByb2ZpbGVNbmcudWlkfX0sX19sb2FkVXNlckRhdGFDb29raWU6ZnVuY3Rpb24oKXtpZihudWxsPT1hY3RpdmVVc2VyUHJvZmlsZU1uZy51aWQpe2lmKCEwPT09YWN0aXZlVXNlclByb2ZpbGVNbmcuZGlzYWJsZWQpcmV0dXJuITE7dHJ5e3ZhciBhPXRoaXMuY3JlYXRlRWxlbSgiZGl2IiwidXNlcmRhdGFfZWwiLAoJCTEpO2Euc3R5bGUuYmVoYXZpb3I9InVybCgjZGVmYXVsdCN1c2VyRGF0YSkiO2EubG9hZCgidWlkIik7YWN0aXZlVXNlclByb2ZpbGVNbmcudWlkPWEuZ2V0QXR0cmlidXRlKCJ1aWQiKX1jYXRjaChiKXt9fX0sc2V0VXNlckRhdGFDb29raWU6ZnVuY3Rpb24oKXtpZihudWxsIT1hY3RpdmVVc2VyUHJvZmlsZU1uZy51aWQmJiJub25lIiE9YWN0aXZlVXNlclByb2ZpbGVNbmcudWlkKXtpZighMD09PWFjdGl2ZVVzZXJQcm9maWxlTW5nLmRpc2FibGVkKXJldHVybiExO3RyeXt2YXIgYT10aGlzLmNyZWF0ZUVsZW0oImRpdiIsInVzZXJkYXRhX2VsIiwxKTthLnN0eWxlLmJlaGF2aW9yPSJ1cmwoI2RlZmF1bHQjdXNlckRhdGEpIjthLnNldEF0dHJpYnV0ZSgidWlkIixhY3RpdmVVc2VyUHJvZmlsZU1uZy51aWQpO2Euc2F2ZSgidWlkIil9Y2F0Y2goYil7fX19LF9fbG9hZExvY2FsU3RvcmFnZUNvb2tpZTpmdW5jdGlvbigpe2lmKG51bGw9PWFjdGl2ZVVzZXJQcm9maWxlTW5nLnVpZCl7aWYoITA9PT0KCQlhY3RpdmVVc2VyUHJvZmlsZU1uZy5kaXNhYmxlZClyZXR1cm4hMTt0cnl7d2luZG93LmxvY2FsU3RvcmFnZSYmKGFjdGl2ZVVzZXJQcm9maWxlTW5nLnVpZD1sb2NhbFN0b3JhZ2UuZ2V0SXRlbSgidWlkIikpfWNhdGNoKGEpe319fSxzZXRMb2NhbFN0b3JhZ2VDb29raWU6ZnVuY3Rpb24oKXtpZihudWxsIT1hY3RpdmVVc2VyUHJvZmlsZU1uZy51aWQmJiJub25lIiE9YWN0aXZlVXNlclByb2ZpbGVNbmcudWlkKXtpZighMD09PWFjdGl2ZVVzZXJQcm9maWxlTW5nLmRpc2FibGVkKXJldHVybiExO3RyeXt3aW5kb3cubG9jYWxTdG9yYWdlJiZsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgidWlkIixhY3RpdmVVc2VyUHJvZmlsZU1uZy51aWQpfWNhdGNoKGEpe319fSxfX2xvYWRHbG9iYWxTdG9yYWdlQ29va2llOmZ1bmN0aW9uKCl7aWYobnVsbD09YWN0aXZlVXNlclByb2ZpbGVNbmcudWlkKXtpZighMD09PWFjdGl2ZVVzZXJQcm9maWxlTW5nLmRpc2FibGVkKXJldHVybiExO3RyeXtpZih3aW5kb3cuZ2xvYmFsU3RvcmFnZSlyZXR1cm4gdGhpcy5nZXRIb3N0KCksCgkJZXZhbCgiYWN0aXZlVXNlclByb2ZpbGVNbmcudWlkID0gZ2xvYmFsU3RvcmFnZVtob3N0XS51aWQiKX1jYXRjaChhKXt9fX0sc2V0R2xvYmFsU3RvcmFnZUNvb2tpZTpmdW5jdGlvbigpe2lmKG51bGwhPWFjdGl2ZVVzZXJQcm9maWxlTW5nLnVpZCYmIm5vbmUiIT1hY3RpdmVVc2VyUHJvZmlsZU1uZy51aWQpe2lmKCEwPT09YWN0aXZlVXNlclByb2ZpbGVNbmcuZGlzYWJsZWQpcmV0dXJuITE7dHJ5e3dpbmRvdy5nbG9iYWxTdG9yYWdlJiYodGhpcy5nZXRIb3N0KCksZXZhbCgiZ2xvYmFsU3RvcmFnZVtob3N0XS51aWQgPSBhY3RpdmVVc2VyUHJvZmlsZU1uZy51aWQiKSl9Y2F0Y2goYSl7fX19LF9fbG9hZFNlc3Npb25TdG9yYWdlQ29va2llOmZ1bmN0aW9uKCl7aWYobnVsbD09YWN0aXZlVXNlclByb2ZpbGVNbmcudWlkKXtpZighMD09PWFjdGl2ZVVzZXJQcm9maWxlTW5nLmRpc2FibGVkKXJldHVybiExO3RyeXt3aW5kb3cuc2Vzc2lvblN0b3JhZ2UmJihhY3RpdmVVc2VyUHJvZmlsZU1uZy51aWQ9CgkJd2luZG93LnNlc3Npb25TdG9yYWdlLmdldEl0ZW0oInVpZCIpKX1jYXRjaChhKXt9fX0sc2V0U2Vzc2lvblN0b3JhZ2VDb29raWU6ZnVuY3Rpb24oKXtpZihudWxsIT1hY3RpdmVVc2VyUHJvZmlsZU1uZy51aWQmJiJub25lIiE9YWN0aXZlVXNlclByb2ZpbGVNbmcudWlkKXtpZighMD09PWFjdGl2ZVVzZXJQcm9maWxlTW5nLmRpc2FibGVkKXJldHVybiExO3RyeXt3aW5kb3cuc2Vzc2lvblN0b3JhZ2UmJndpbmRvdy5zZXNzaW9uU3RvcmFnZS5zZXRJdGVtKCJ1aWQiLGFjdGl2ZVVzZXJQcm9maWxlTW5nLnVpZCl9Y2F0Y2goYSl7fX19LHJlZ2lzdGVyUGFnZVZpZXc6ZnVuY3Rpb24oKXtpZighMD09PWFjdGl2ZVVzZXJQcm9maWxlTW5nLmRpc2FibGVkKXJldHVybiEwO251bGw9PWFjdGl2ZVVzZXJQcm9maWxlTW5nLnJlZ2lzdGVyZWRQYWdlVmlld3MmJihhY3RpdmVVc2VyUHJvZmlsZU1uZy5yZWdpc3RlcmVkUGFnZVZpZXdzPVtdKTtmb3IodmFyIGE9MDthPGFjdGl2ZVVzZXJQcm9maWxlTW5nLnJlZ2lzdGVyZWRQYWdlVmlld3MubGVuZ3RoO2ErKylpZih3aW5kb3cubG9jYXRpb24uaHJlZj09CgkJYWN0aXZlVXNlclByb2ZpbGVNbmcucmVnaXN0ZXJlZFBhZ2VWaWV3c1thXSlyZXR1cm4hMTthY3RpdmVVc2VyUHJvZmlsZU1uZy5yZWdpc3RlcmVkUGFnZVZpZXdzLnB1c2god2luZG93LmxvY2F0aW9uLmhyZWYpO3JldHVybiEwfSxyZWdpc3RlclBhZ2VWaWV3RXZlbnQ6ZnVuY3Rpb24oYSxiLGQpe2lmKCEwPT09YWN0aXZlVXNlclByb2ZpbGVNbmcuZGlzYWJsZWQpcmV0dXJuITA7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBkfHxudWxsPT1kKWQ9IiI7YT1hKyJ8fHwiK2IrInx8fCIrZDtudWxsPT1hY3RpdmVVc2VyUHJvZmlsZU1uZy5yZWdpc3RlcmVkRXZlbnRzJiYoYWN0aXZlVXNlclByb2ZpbGVNbmcucmVnaXN0ZXJlZEV2ZW50cz1bXSk7Zm9yKGI9MDtiPGFjdGl2ZVVzZXJQcm9maWxlTW5nLnJlZ2lzdGVyZWRFdmVudHMubGVuZ3RoO2IrKylpZihhPT1hY3RpdmVVc2VyUHJvZmlsZU1uZy5yZWdpc3RlcmVkRXZlbnRzW2JdKXJldHVybiExO2FjdGl2ZVVzZXJQcm9maWxlTW5nLnJlZ2lzdGVyZWRFdmVudHMucHVzaChhKTsKCQlyZXR1cm4hMH0sbG9nUGFnZVZpZXdFdmVudDpmdW5jdGlvbihhLGIsZCl7aWYoIWFjdGl2ZVVzZXJQcm9maWxlTW5nLl9pc0JvdCgpKXtpZighMD09PWFjdGl2ZVVzZXJQcm9maWxlTW5nLmRpc2FibGVkKXJldHVybiExO2lmKGFjdGl2ZVVzZXJQcm9maWxlTW5nLnJlZ2lzdGVyUGFnZVZpZXdFdmVudChhLGIpKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIGR8fG51bGw9PWQpZD0iIjtpZihudWxsPT1hY3RpdmVVc2VyUHJvZmlsZU1uZy5zZXNzaW9uaWR8fDA9PWFjdGl2ZVVzZXJQcm9maWxlTW5nLnNlc3Npb25pZClhY3RpdmVVc2VyUHJvZmlsZU1uZy5yZWdpc3RlclNlc3Npb25DYWxsYmFjayhmdW5jdGlvbigpe2FjdGl2ZVVzZXJQcm9maWxlTW5nLmxvZ1BhZ2VWaWV3RXZlbnQoYSxiLGQpfSk7ZWxzZXt2YXIgYz0wO2lmKCJ1bmRlZmluZWQiPT10eXBlb2Ygd2luZG93Lmxhc3RWaWV3SUQpe3ZhciBlPWFjdGl2ZVVzZXJQcm9maWxlTW5nLmNvb2tpZU1uZy5yZWFkQ29va2llVmFsdWUoInV2aWV3Iik7CgkJbnVsbCE9ZSYmKGM9ZSl9ZWxzZSBjPXdpbmRvdy5sYXN0UGFnZVZpZXdJRDsidW5kZWZpbmVkIj09dHlwZW9mIGN8fG51bGw9PWN8fDA9PWM\/Y29uc29sZSYmY29uc29sZS5sb2cmJmNvbnNvbGUubG9nKCJVbmFibGUgdG8gaWRlbnRpZnkgbGFzdCB2aWV3IGlkIik6KGU9YWN0aXZlVXNlclByb2ZpbGVNbmcuZ2V0U3RhdHNVUkkoKSxjPXtzaWQ6YWN0aXZlVXNlclByb2ZpbGVNbmcuZ2V0U2Vzc2lvbklEKCksYWN0aW9uOiJldmVudCIsdmlld2lkOmMsZXZlbnQ6YSxlY2F0ZWdvcnk6YixhZGRlZEluZm86InVuZGVmaW5lZCIhPXR5cGVvZiBkP2Q6IiJ9LGFjdGl2ZVVzZXJQcm9maWxlTW5nLmFqYXhNbmcuYWpheCh7dXJsOmUrInNlcnZpY2Uvc2Vzc2lvbk1uZy5waHAiLHR5cGU6IlBPU1QiLGRhdGE6Y30pKX19fX0sbG9nUGFnZVZpZXdFeDpmdW5jdGlvbigpe3RyeXtpZighYWN0aXZlVXNlclByb2ZpbGVNbmcuX2lzQm90KCkmJmFjdGl2ZVVzZXJQcm9maWxlTW5nLnJlZ2lzdGVyUGFnZVZpZXcoKSl7aWYoITA9PT0KCQlhY3RpdmVVc2VyUHJvZmlsZU1uZy5kaXNhYmxlZClyZXR1cm4hMTt2YXIgYT1udWxsOyJ1bmRlZmluZWQiIT10eXBlb2YgZ2V0VXJsVmFycyYmKGE9Z2V0VXJsVmFycygpKTtnZXRDdXN0b21WUkI9ZnVuY3Rpb24oayx3KXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIGN1c3RvbV92YXJpYWJsZXMmJm51bGwhPWN1c3RvbV92YXJpYWJsZXMpZm9yKHZhciB1IGluIGN1c3RvbV92YXJpYWJsZXMpe2lmKHUubmFtZT09aylyZXR1cm4gdS52YWx1ZX1lbHNlIHJldHVybiB3fTtnZXRDS1ZhbHVlPWZ1bmN0aW9uKGssdyl7dmFyIHU9Z2V0Q3VzdG9tVlJCKGssbnVsbCk7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiB1JiZudWxsIT11KXJldHVybiB1O3U9YWN0aXZlVXNlclByb2ZpbGVNbmcuY29va2llTW5nLnJlYWRDb29raWVWYWx1ZShrKTtyZXR1cm4idW5kZWZpbmVkIj09dHlwZW9mIHV8fG51bGw9PXU\/bnVsbD09YXx8InVuZGVmaW5lZCI9PXR5cGVvZiBhW2tdPyJ1bmRlZmluZWQiPT10eXBlb2Ygdz8KCQkiIjp3OmFba106dX07Z2V0VVJMVmFsdWU9ZnVuY3Rpb24oayx3KXtrPWsucmVwbGFjZSgvW1xbXS8sIlxcWyIpLnJlcGxhY2UoL1tcXV0vLCJcXF0iKTtrPShuZXcgUmVnRXhwKCJbXFw\/Jl0iK2srIj0oW14mI10qKSIpKS5leGVjKHdpbmRvdy5sb2NhdGlvbi5ocmVmKTtrPW51bGw9PWs\/bnVsbDprWzFdO3JldHVybiJ1bmRlZmluZWQiPT10eXBlb2Yga3x8bnVsbD09a3x8MD09ay50b1N0cmluZygpLmxlbmd0aD93Omt9O3ZhciBiPSIiLGQ9MCxjPSJGUkVOQ0giLGU9ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInNjcmlwdCIpLGg9ZnVuY3Rpb24oayl7dmFyIHc9e21ha2U6IiIsbW9kZWw6IiIseWVhcjoiIixwcmljZTowLHNpdGVpZDowLGRlYWxlcmlkOjAsbGFuZ3VhZ2U6IkZSRU5DSCJ9O2lmKCFrKXJldHVybiB3O2s9ay5zcGxpdCgvWzsmXS8pO2Zvcih2YXIgdT0wO3U8ay5sZW5ndGg7dSsrKXt2YXIgQj1rW3VdLnNwbGl0KCI9Iik7aWYoQiYmMj09Qi5sZW5ndGgpe3ZhciBFPQoJCXVuZXNjYXBlKEJbMF0pO0I9dW5lc2NhcGUoQlsxXSk7Qj1CLnJlcGxhY2UoL1wrL2csIiAiKTt3W0VdPUJ9fXJldHVybiB3fTtpZigidW5kZWZpbmVkIiE9dHlwZW9mIGUmJm51bGwhPWUpZm9yKHZhciBmPTA7ZjxlLmxlbmd0aDtmKyspe3ZhciBxPWVbZl07aWYoLTEhPXEuc3JjLmluZGV4T2YoIi91cGxpZ2h0LmpzPyIpKXt2YXIgcD1xLnNyYy5yZXBsYWNlKC9eW15cP10rXD8\/LywiIikseT1oKHApO3ZhciBsPXkubWFrZTt2YXIgQz15Lm1vZGVsO2I9eS55ZWFyO3ZhciBBPXkuc2l0ZWlkO3ZhciB6PXkuZGVhbGVyaWQ7ZD15LnByaWNlO2M9eS5sYW5ndWFnZTticmVha319dmFyIG09YWN0aXZlVXNlclByb2ZpbGVNbmcuZ2V0U2Vzc2lvbklEKCk7ZT0wO2lmKCJ1bmRlZmluZWQiPT1tfHwwPT1tKXttPTA7dmFyIHI9YWN0aXZlVXNlclByb2ZpbGVNbmcuY29va2llTW5nLnJlYWRDb29raWVWYWx1ZSgidXNpZF90bXAiKTtpZigidW5kZWZpbmVkIj09dHlwZW9mIHJ8fG51bGw9PXIpe3ZhciB4PQoJCW5ldyBEYXRlO3guc2V0VGltZSh4LmdldFRpbWUoKSs3MkU1KTt2YXIgZz0iOyBleHBpcmVzPSIreC50b0dNVFN0cmluZygpO2RvY3VtZW50LmNvb2tpZT0idXNpZF90bXA9MSIrZysiOyBwYXRoPS8ifWVsc2UgZT0hMH12YXIgbj13aW5kb3cubG9jYXRpb24uaHJlZjtpZigtMTxuLmluZGV4T2YoInN0ZXA9cmVzdW1lIikpe3ZhciB0PWFjdGl2ZVVzZXJQcm9maWxlTW5nLmNvb2tpZU1uZy5yZWFkQ29va2llVmFsdWUoInNlc3NpZCIpO24rPSImc2Vzc2lkPSIrKCJ1bmRlZmluZWQiIT10eXBlb2YgdHx8bnVsbCE9dD90OiJOVUxMIil9dmFyIHY9e3NpZDptLHV1aWQ6d2luZG93LmFjdGl2ZVByb2ZpbGVJRCxzaXRlaWQ6QSxkZWFsZXJpZDp6LHV0bVNvdXJjZTpnZXRVUkxWYWx1ZSgidXRtX3NvdXJjZSIsIiIpLHV0bUNhbXBhaWduOmdldFVSTFZhbHVlKCJ1dG1fY2FtcGFpZ24iLCJvcmdhbmljIiksdXRtS2V5d29yZDpnZXRDS1ZhbHVlKCJ1dG1fa2V5d29yZCIpLHV0bUxhbmRpbmc6Z2V0Q0tWYWx1ZSgidXRtX2xhbmRpbmciKSwKCQl1dG1Tb3VyY2VSZXRhcmdldGluZzpnZXRDS1ZhbHVlKCJ1dG1fc291cmNlX3JldGFyZ2V0aW5nIiksdXRtQ2FtcGFpZ25SZXRhcmdldGluZzpnZXRDS1ZhbHVlKCJ1dG1fY2FtcGFpZ25fcmV0YXJnZXRpbmciKSxtYWtlOmwsbW9kZWw6Qyx5ZWFyOmlzTmFOKGIpPyhuZXcgRGF0ZSkuZ2V0RnVsbFllYXIoKTpiLGxhbmd1YWdlOmMscGFnZToidW5kZWZpbmVkIj09dHlwZW9mIHdpbmRvdy5hY3RpdmVQYWdlPyIiOndpbmRvdy5hY3RpdmVQYWdlLHByaWNlOmQsc2xvb2t1cDplLGhyZWY6bn0sRD1hY3RpdmVVc2VyUHJvZmlsZU1uZy5nZXRTdGF0c1VSSSgpO3Y9SlNPTi5zdHJpbmdpZnkodik7dj12LnJlcGxhY2VBbGwoIi8iLCJcXC8iKTt0aGlzLmFqYXhNbmcuYWpheCh7dXJsOkQrInNlcnZpY2Uvc2Vzc2lvbk1uZy5waHAiLGRhdGE6dixkb25lOmZ1bmN0aW9uKGspe3RyeXtpZigic3RyaW5nIj09dHlwZW9mIGsmJihrPUpTT04ucGFyc2UoaykpLCJ1bmRlZmluZWQiIT10eXBlb2YgayYmCgkJbnVsbCE9ayYmKGsuY29uc3RydWN0b3I9PVtdLmNvbnN0cnVjdG9yfHxrLmNvbnN0cnVjdG9yPT17fS5jb25zdHJ1Y3Rvcikpe209ay5zZXNzaW9uaWQ7bGFzdFZpZXdJRD1rLnZpZXdpZDthY3RpdmVVc2VyUHJvZmlsZU1uZy5fbG9hZFByb3BlcnRpZXMoay5wcm9wZXJ0aWVzKTt3aW5kb3cuYWN0aXZlU2Vzc2lvbklEPW07d2luZG93Lmxhc3RQYWdlVmlld0lEPWxhc3RWaWV3SUQ7YWN0aXZlVXNlclByb2ZpbGVNbmcuc2Vzc2lvbmlkPW07dmFyIHc9bmV3IERhdGU7dy5zZXRUaW1lKHcuZ2V0VGltZSgpKzcyRTUpO3ZhciB1PSI7IGV4cGlyZXM9Iit3LnRvR01UU3RyaW5nKCk7ZG9jdW1lbnQuY29va2llPSJ1c2lkPSIrbSt1KyI7IHBhdGg9LyI7ZG9jdW1lbnQuY29va2llPSJ1dmlldz0iK2xhc3RWaWV3SUQrdSsiOyBwYXRoPS8iO2FjdGl2ZVVzZXJQcm9maWxlTW5nLl9kZWxldGVDb29raWUoInVzaWRfdG1wIik7YWN0aXZlVXNlclByb2ZpbGVNbmcuX19ub3RpZnlTZXNzaW9uSUQoKX19Y2F0Y2goQil7fXRyeXtudWxsIT0KCQlzaXRlV2Vic29ja2V0TGlzdGVuZXIuc2l0ZWlkJiZzaXRlV2Vic29ja2V0TGlzdGVuZXIuY29ubmVjdCgpfWNhdGNoKEIpe319fSl9fWNhdGNoKGspe2NvbnNvbGUmJmNvbnNvbGUubG9nJiZjb25zb2xlLmxvZygiVW5hYmxlIHRvIHN0YXQgcGFnZSBkdWUgdG8gZXJyb3I6ICIray5tZXNzYWdlKX19LGxvZ1BhZ2VWaWV3OmZ1bmN0aW9uKCl7dHJ5e2lmKCFhY3RpdmVVc2VyUHJvZmlsZU1uZy5faXNCb3QoKSYmYWN0aXZlVXNlclByb2ZpbGVNbmcucmVnaXN0ZXJQYWdlVmlldygpKXtpZighMD09PWFjdGl2ZVVzZXJQcm9maWxlTW5nLmRpc2FibGVkKXJldHVybiExO2lmKCExPT09YWN0aXZlVXNlclByb2ZpbGVNbmcuanF1ZXJ5QWN0aXZlKXJldHVybiB0aGlzLmxvZ1BhZ2VWaWV3RXgoKTt2YXIgYT1kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgic2NyaXB0Iik7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBhJiZudWxsIT1hKWZvcih2YXIgYj0wO2I8YS5sZW5ndGg7YisrKWlmKC0xIT0KCQlhW2JdLnNyYy5pbmRleE9mKCIvdXBsaWdodC5qcz8iKSlyZXR1cm4gdGhpcy5sb2dQYWdlVmlld0V4KCk7dmFyIGQ9bnVsbDsidW5kZWZpbmVkIiE9dHlwZW9mIGdldFVybFZhcnMmJihkPWdldFVybFZhcnMoKSk7Z2V0Q3VzdG9tVlJCPWZ1bmN0aW9uKGcsbil7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBjdXN0b21fdmFyaWFibGVzJiZudWxsIT1jdXN0b21fdmFyaWFibGVzKWZvcih2YXIgdCBpbiBjdXN0b21fdmFyaWFibGVzKXtpZih0Lm5hbWU9PWcpcmV0dXJuIHQudmFsdWV9ZWxzZSByZXR1cm4gbn07Z2V0Q0tWYWx1ZT1mdW5jdGlvbihnLG4pe3ZhciB0PW51bGw7dHJ5e3ZhciB2PWdldEN1c3RvbVZSQihnLG51bGwpOyJ1bmRlZmluZWQiIT10eXBlb2YgdiYmbnVsbCE9diYmKHQ9dik7aWYobnVsbD09dCYmKHQ9YWN0aXZlVXNlclByb2ZpbGVNbmcuY29va2llTW5nLnJlYWRDb29raWVWYWx1ZShnKSxudWxsPT10KSl7aWYobnVsbD09ZHx8InVuZGVmaW5lZCI9PXR5cGVvZiBkW2ddKXJldHVybiJ1bmRlZmluZWQiPT0KCXR5cGVvZiBuPyIiOm47dD1kW2ddfX1jYXRjaChEKXtjb25zb2xlJiZjb25zb2xlLmxvZyYmY29uc29sZS5sb2coIlVuZXhwZWN0ZWQgZXJyb3IgcmV0cmlldmluZyBja1ZhbHVlIC0tICVzIixELm1lc3NhZ2UpfXJldHVybiB0fTtnZXRVUkxWYWx1ZT1mdW5jdGlvbihnLG4pe2c9Zy5yZXBsYWNlKC9bXFtdLywiXFxbIikucmVwbGFjZSgvW1xdXS8sIlxcXSIpO2c9KG5ldyBSZWdFeHAoIltcXD8mXSIrZysiPShbXiYjXSopIikpLmV4ZWMod2luZG93LmxvY2F0aW9uLmhyZWYpO2c9bnVsbD09Zz9udWxsOmdbMV07cmV0dXJuInVuZGVmaW5lZCI9PXR5cGVvZiBnfHxudWxsPT1nfHwwPT1nLnRvU3RyaW5nKCkubGVuZ3RoP246Z307YT1mdW5jdGlvbigpe2lmKCExPT09YWN0aXZlVXNlclByb2ZpbGVNbmcuanF1ZXJ5QWN0aXZlKXJldHVybltdO3ZhciBnPVtdO3RyeXt2YXIgbj1bXSx0PWZ1bmN0aW9uKGssdyl7cmV0dXJuInVuZGVmaW5lZCIhPXR5cGVvZiAkKCIjIitrKS5hdHRyKCJpZCIpJiYKCShrPSQoIiMiK2spLnZhbCgpLCJzdHJpbmciPT10eXBlb2YgayYmMDxrLmxlbmd0aCYmLTE9PWsuaW5kZXhPZigiIyMiKSk\/azp3fTtuLnB1c2goInBvcHVwIik7bi5wdXNoKCJwaG9uZSIpO24ucHVzaCgibGFzdHZpZXdlZCIpO24ucHVzaCgiZXhwcmVzc2NhciIpO2Zvcih2YXIgdj0wO3Y8bi5sZW5ndGg7disrKXt2YXIgRD10KG5bdl0rIm1ha2UiLG51bGwpO2lmKG51bGwhPUQpe2cucHVzaChEKTtnLnB1c2godChuW3ZdKyJtb2RlbCIsbnVsbCkpO2cucHVzaCh0KG5bdl0rInllYXIiLG51bGwpKTticmVha319fWNhdGNoKGspe2c9W10sZy5wdXNoKCIiKSxnLnB1c2goIiIpLGcucHVzaCgiIil9MD09Zy5sZW5ndGgmJmcucHVzaCgiIik7MT09Zy5sZW5ndGgmJmcucHVzaCgiIik7Mj09Zy5sZW5ndGgmJmcucHVzaCgiIik7cmV0dXJuIGd9O3ZhciBjPWI9IiIsZT0iIjt0cnl7dmFyIGg9YSgpO2I9MDxoLmxlbmd0aD9oWzBdOmI7Yz0xPGgubGVuZ3RoP2hbMV06YztlPTI8aC5sZW5ndGg\/CgkJaFsyXTplfWNhdGNoKGcpe2U9Yz1iPSIifXRyeXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIHNlYXJjaENyaXRlcmlhJiZudWxsIT1zZWFyY2hDcml0ZXJpYSl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBifHxudWxsPT1ifHwwPT1iLmxlbmd0aCliPS0xPT1zZWFyY2hDcml0ZXJpYS5tYWtlPyIiOnNlYXJjaENyaXRlcmlhLm1ha2U7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBjfHxudWxsPT1jfHwwPT1jLmxlbmd0aCljPS0xPT1zZWFyY2hDcml0ZXJpYS5tb2RlbD8iIjpzZWFyY2hDcml0ZXJpYS5tb2RlbDtpZigidW5kZWZpbmVkIj09dHlwZW9mIGV8fG51bGw9PWV8fDA9PWUubGVuZ3RoKWU9LTE9PXNlYXJjaENyaXRlcmlhLnllYXI\/IiI6c2VhcmNoQ3JpdGVyaWEueWVhcn1pZihudWxsPT1ifHwwPT1iLmxlbmd0aCkidW5kZWZpbmVkIiE9dHlwZW9mIG1ha2UmJm51bGwhPW1ha2UmJjA8bWFrZS5sZW5ndGgmJiIwIiE9bWFrZT9iPW1ha2U6KGI9JCgiI3BvcHVwbWFrZSIpLnZhbCgpLCJ1bmRlZmluZWQiPT0KCXR5cGVvZiBiJiYoYj0kKCIjYWN0aXZlTWFrZSIpLnZhbCgpKSwidW5kZWZpbmVkIj09dHlwZW9mIGImJihiPSQoIiNjYXJNYWtlIikudmFsKCkpLCJ1bmRlZmluZWQiPT10eXBlb2YgYiYmKGI9JCgnaW5wdXRbbmFtZT0ibWFrZSJdJykudmFsKCkpLCJ1bmRlZmluZWQiPT10eXBlb2YgYiYmKGI9Z2V0Q0tWYWx1ZSgibWFrZSIsIiIpKSk7aWYobnVsbD09Y3x8MD09Yy5sZW5ndGgpInVuZGVmaW5lZCIhPXR5cGVvZiBtb2RlbCYmbnVsbCE9bW9kZWwmJjA8bW9kZWwubGVuZ3RoJiYiMCIhPW1vZGVsP2M9bW9kZWw6KGM9JCgiI3BvcHVwbW9kZWwiKS52YWwoKSwidW5kZWZpbmVkIj09dHlwZW9mIGMmJihjPSQoIiNhY3RpdmVNb2RlbCIpLnZhbCgpKSwidW5kZWZpbmVkIj09dHlwZW9mIGMmJihjPSQoIiNjYXJNb2RlbCIpLnZhbCgpKSwidW5kZWZpbmVkIj09dHlwZW9mIGMmJihjPSQoJ2lucHV0W25hbWU9Im1vZGVsIl0nKS52YWwoKSksInVuZGVmaW5lZCI9PXR5cGVvZiBjJiYoYz1nZXRDS1ZhbHVlKCJtb2RlbCIsCgkJIiIpKSk7aWYobnVsbD09ZXx8MD09ZS5sZW5ndGgpInVuZGVmaW5lZCIhPXR5cGVvZiB5ZWFyJiZudWxsIT15ZWFyJiYhaXNOYU4oeWVhcikmJjA8eWVhci5sZW5ndGgmJiIwIiE9eWVhcj9lPXllYXI6KGU9JCgiI3BvcHVweWVhciIpLnZhbCgpLCJ1bmRlZmluZWQiPT10eXBlb2YgZSYmKGU9JCgiI2FjdGl2ZVllYXIiKS52YWwoKSksInVuZGVmaW5lZCI9PXR5cGVvZiBlJiYoZT0kKCIjY2FyWWVhciIpLnZhbCgpKSwidW5kZWZpbmVkIj09dHlwZW9mIGUmJihlPSQoIiN5ZWFyIikudmFsKCkpLCJ1bmRlZmluZWQiPT10eXBlb2YgZSYmKGU9JCgnaW5wdXRbbmFtZT0ieW1heFRleHQiXScpLnZhbCgpKSwidW5kZWZpbmVkIj09dHlwZW9mIGUmJihlPSQoJ2lucHV0W25hbWU9InltaW5UZXh0Il0nKS52YWwoKSksInVuZGVmaW5lZCI9PXR5cGVvZiBlJiYoZT1nZXRDS1ZhbHVlKCJ5ZWFyIiwobmV3IERhdGUpLmdldEZ1bGxZZWFyKCkpKSl9Y2F0Y2goZyl7Y29uc29sZSYmY29uc29sZS5sb2cmJgoJY29uc29sZS5sb2coIlVuZXhwZWN0ZWQgZXJyb3IgaWRlbnRpZnlpbmcgbWFrZS1tb2RlbC15ZWFyOiAiK2cubWVzc2FnZSksbnVsbD09YiYmKGI9IiIpLG51bGw9PWMmJihjPSIiKSxudWxsPT1lJiYoZT0iIil9dmFyIGY9MDtpZighMSE9PWFjdGl2ZVVzZXJQcm9maWxlTW5nLmpxdWVyeUFjdGl2ZSl7aWYoIlVTRURDQVJTIj09d2luZG93LmFjdGl2ZVBhZ2Upe3ZhciBxPTA7JCgiZGl2LmJveDE3MCBkaXYubWFpbl9waWNib3ggZGl2LmJveDJfZGV0YWlsc19taWQgZGl2LmJveDJfZGV0YWlsc190ZXh0IHNwYW4iKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIGc9JCh0aGlzKS50ZXh0KCk7LTEhPWcuaW5kZXhPZigiJCIpJiYocSsrLGYrPXBhcnNlSW50KGcucmVwbGFjZSgiJCIsIiIpLnJlcGxhY2UoIiwiLCIiKSkpfSk7Zj0wPHE\/Zi9xOjA7aXNOYU4oZikmJihmPTApfTAhPWYmJiFpc05hTihmKXx8InVuZGVmaW5lZCI9PXR5cGVvZiAkKCIjY3VycmVudENhclByaWNlIikuYXR0cigiaWQiKXx8CgkoZj1wYXJzZUludCgkKCIjY3VycmVudENhclByaWNlIikudmFsKCkucmVwbGFjZSgiJCIsIiIpLnJlcGxhY2UoIiwiLCIiKSkpOzAhPWYmJiFpc05hTihmKXx8InVuZGVmaW5lZCI9PXR5cGVvZiAkKCIjY2FycHJpY2UiKS5hdHRyKCJpZCIpfHwoZj1wYXJzZUludCgkKCIjY2FycHJpY2UiKS52YWwoKS5yZXBsYWNlKCIkIiwiIikucmVwbGFjZSgiLCIsIiIpKSk7MCE9ZiYmIWlzTmFOKGYpfHwidW5kZWZpbmVkIj09dHlwZW9mICQoIiNjYXJQcmljZSIpLmF0dHIoImlkIil8fChmPXBhcnNlSW50KCQoIiNjYXJQcmljZSIpLnZhbCgpLnJlcGxhY2UoIiQiLCIiKS5yZXBsYWNlKCIsIiwiIikpKTswIT1mJiYhaXNOYU4oZil8fCJ1bmRlZmluZWQiPT10eXBlb2YgJCgiI2V4cHJlc3NjYXJwcmljZSIpLmF0dHIoImlkIil8fChmPXBhcnNlSW50KCQoIiNleHByZXNzY2FycHJpY2UiKS52YWwoKS5yZXBsYWNlKCIkIiwiIikucmVwbGFjZSgiLCIsIiIpKSk7MCE9ZiYmIWlzTmFOKGYpfHwidW5kZWZpbmVkIj09Cgl0eXBlb2YgJCgiI2NhcnByb29mY2FycHJpY2UiKS5hdHRyKCJpZCIpfHwoZj1wYXJzZUludCgkKCIjY2FycHJvb2ZjYXJwcmljZSIpLnZhbCgpLnJlcGxhY2UoIiQiLCIiKS5yZXBsYWNlKCIsIiwiIikpKTswIT1mJiYhaXNOYU4oZil8fCJ1bmRlZmluZWQiPT10eXBlb2YgJCgiI3NlYXJjaFJlc3VsdHNBdmdQcmljZSIpLmF0dHIoImlkIil8fChmPXBhcnNlSW50KCQoIiNzZWFyY2hSZXN1bHRzQXZnUHJpY2UiKS52YWwoKS5yZXBsYWNlKCIkIiwiIikucmVwbGFjZSgiLCIsIiIpKSk7MCE9ZiYmIWlzTmFOKGYpfHwidW5kZWZpbmVkIj09dHlwZW9mICQoJ2lucHV0W25hbWU9InBtaW4iXScpLmF0dHIoImlkIil8fChmPXBhcnNlSW50KCQoJ2lucHV0W25hbWU9InBtaW4iXScpLnZhbCgpLnJlcGxhY2UoIiQiLCIiKS5yZXBsYWNlKCIsIiwiIikpKTswIT1mJiYhaXNOYU4oZil8fCJ1bmRlZmluZWQiPT10eXBlb2YgJCgnaW5wdXRbbmFtZT0icG1heCJdJykuYXR0cigiaWQiKXx8KGY9cGFyc2VJbnQoJCgnaW5wdXRbbmFtZT0icG1heCJdJykudmFsKCkucmVwbGFjZSgiJCIsCgkJIiIpLnJlcGxhY2UoIiwiLCIiKSkpOzAhPWYmJiFpc05hTihmKXx8InVuZGVmaW5lZCI9PXR5cGVvZiAkKCIjY2FyUHJpY2UiKS5hdHRyKCJpZCIpfHwoZj0kKCIjY2FyUHJpY2UiKS5oYXNDbGFzcygiYm94Ml9kZXRhaWxzX3RleHQyNSIpP3BhcnNlSW50KCQoIiNjYXJQcmljZSIpLmNoaWxkcmVuKCI6Zmlyc3QiKS50ZXh0KCkucmVwbGFjZSgiJCIsIiIpLnJlcGxhY2UoIiwiLCIiKSk6cGFyc2VJbnQoJCgiI2NhclByaWNlIikudGV4dCgpLnJlcGxhY2UoIiQiLCIiKS5yZXBsYWNlKCIsIiwiIikpKTtpc05hTihmKSYmKGY9MCk7dmFyIHA9MCx5PTA7InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3cuYWN0aXZlU2l0ZUlEJiZudWxsIT13aW5kb3cuYWN0aXZlU2l0ZUlEJiYwIT13aW5kb3cuYWN0aXZlU2l0ZUlEP3A9d2luZG93LmFjdGl2ZVNpdGVJRDoocD0kKCIjc2l0ZUlEIikudmFsKCksInVuZGVmaW5lZCI9PXR5cGVvZiBwJiYocD0kKCIjdG9wc2l0ZWlkIikudmFsKCkpLCJ1bmRlZmluZWQiPT0KCXR5cGVvZiBwJiYocD0wKSk7InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3cuYWN0aXZlRGVhbGVySUQmJih5PXdpbmRvdy5hY3RpdmVTaXRlSUQpO3ZhciBsPWFjdGl2ZVVzZXJQcm9maWxlTW5nLmdldFNlc3Npb25JRCgpLEM9MDtpZigidW5kZWZpbmVkIj09bHx8MD09bHx8IjAiPT1sKWlmKGw9MCwidW5kZWZpbmVkIj09dHlwZW9mICQuY29va2llKCJ1c2lkX3RtcCIpKXt2YXIgQT1uZXcgRGF0ZTtBLnNldFRpbWUoQS5nZXRUaW1lKCkrNzJFNSk7dmFyIHo9IjsgZXhwaXJlcz0iK0EudG9HTVRTdHJpbmcoKTtkb2N1bWVudC5jb29raWU9InVzaWRfdG1wPTEiK3orIjsgcGF0aD0vIn1lbHNlIEM9ITA7dmFyIG09d2luZG93LmxvY2F0aW9uLmhyZWY7LTE8bS5pbmRleE9mKCJzdGVwPXJlc3VtZSIpJiYobSs9IiZzZXNzaWQ9IisoInVuZGVmaW5lZCIhPXR5cGVvZiAkLmNvb2tpZSgic2Vzc2lkIik\/JC5jb29raWUoInNlc3NpZCIpOiJOVUxMIikpfXZhciByPXtzaWQ6bCx1dWlkOmFjdGl2ZVVzZXJQcm9maWxlTW5nLmdldEFjdGl2ZVByb2ZpbGVpZCgpLAoJCXNpdGVpZDpwLGRlYWxlcmlkOnksdXRtU291cmNlOmdldFVSTFZhbHVlKCJ1dG1fc291cmNlIiwiIiksdXRtQ2FtcGFpZ246Z2V0VVJMVmFsdWUoInV0bV9jYW1wYWlnbiIsIm9yZ2FuaWMiKSx1dG1LZXl3b3JkOmdldENLVmFsdWUoInV0bV9rZXl3b3JkIiksdXRtTGFuZGluZzpnZXRDS1ZhbHVlKCJ1dG1fbGFuZGluZyIpLHV0bVNvdXJjZVJldGFyZ2V0aW5nOmdldENLVmFsdWUoInV0bV9zb3VyY2VfcmV0YXJnZXRpbmciKSx1dG1DYW1wYWlnblJldGFyZ2V0aW5nOmdldENLVmFsdWUoInV0bV9jYW1wYWlnbl9yZXRhcmdldGluZyIpLG1ha2U6Yixtb2RlbDpjLHllYXI6aXNOYU4oZSk\/KG5ldyBEYXRlKS5nZXRGdWxsWWVhcigpOmUsbGFuZ3VhZ2U6JCgiI2FjdGl2ZXNpdGVsYW5ndWFnZSIpLnZhbCgpLHBhZ2U6InVuZGVmaW5lZCI9PXR5cGVvZiB3aW5kb3cuYWN0aXZlUGFnZT8iIjp3aW5kb3cuYWN0aXZlUGFnZSxwcmljZTpmLHNsb29rdXA6QyxocmVmOm19LHg9YWN0aXZlVXNlclByb2ZpbGVNbmcuZ2V0U3RhdHNVUkkoKTsKCQlyPUpTT04uc3RyaW5naWZ5KHIpO3I9ci5yZXBsYWNlQWxsKCIvIiwiXFwvIik7dGhpcy5hamF4TW5nLmFqYXgoe3R5cGU6IlBPU1QiLHVybDp4KyJzZXJ2aWNlL3Nlc3Npb25NbmcucGhwIixjb250ZW50VHlwZToiYXBwbGljYXRpb24vanNvbjsgY2hhcnNldD11dGYtOCIsZGF0YTpyLGRvbmU6ZnVuY3Rpb24oZyl7InN0cmluZyI9PXR5cGVvZiBnJiYoZz1KU09OLnBhcnNlKGcpKTsidW5kZWZpbmVkIj09dHlwZW9mIGd8fG51bGw9PWd8fGcuY29uc3RydWN0b3IhPVtdLmNvbnN0cnVjdG9yJiZnLmNvbnN0cnVjdG9yIT17fS5jb25zdHJ1Y3Rvcnx8KGw9Zy5zZXNzaW9uaWQsbGFzdFZpZXdJRD1nLnZpZXdpZCxhY3RpdmVVc2VyUHJvZmlsZU1uZy5fbG9hZFByb3BlcnRpZXMoZy5wcm9wZXJ0aWVzKSx3aW5kb3cuYWN0aXZlU2Vzc2lvbklEPWwsd2luZG93Lmxhc3RQYWdlVmlld0lEPWxhc3RWaWV3SUQsYWN0aXZlVXNlclByb2ZpbGVNbmcuc2Vzc2lvbmlkPWwsYWN0aXZlVXNlclByb2ZpbGVNbmcuY29va2llTW5nLnNldENvb2tpZVZhbHVlKCJ1c2lkIiwKCQkJCWwsIi8iLDIpLGFjdGl2ZVVzZXJQcm9maWxlTW5nLmNvb2tpZU1uZy5zZXRDb29raWVWYWx1ZSgidXZpZXciLGxhc3RWaWV3SUQsIi8iLDIpLGFjdGl2ZVVzZXJQcm9maWxlTW5nLmNvb2tpZU1uZy5kZWxldGVDb29raWUoInVzaWRfdG1wIiksYWN0aXZlVXNlclByb2ZpbGVNbmcuX19ub3RpZnlTZXNzaW9uSUQoKSl9LGZhaWw6ZnVuY3Rpb24oZyxuLHQpe2NvbnNvbGUmJmNvbnNvbGUubG9nJiZjb25zb2xlLmxvZygiVW5hYmxlIHRvIGxvZyBwYWdlIHZpZXcuIEVycm9yOiAiK3QubWVzc2FnZSl9LGFsd2F5czpmdW5jdGlvbigpe319KX19Y2F0Y2goZyl7Y29uc29sZSYmY29uc29sZS5sb2cmJmNvbnNvbGUubG9nKCJVbmFibGUgdG8gc3RhdCBwYWdlIGR1ZSB0byBlcnJvcjogIitnLm1lc3NhZ2UpfX0sX2xvYWRQcm9wZXJ0aWVzOmZ1bmN0aW9uKGEpe3RyeXsidW5kZWZpbmVkIiE9dHlwZW9mIGEmJm51bGwhPWEmJihhY3RpdmVVc2VyUHJvZmlsZU1uZy5fX3Byb3BlcnRpZXM9YSxhY3RpdmVVc2VyUHJvZmlsZU1uZy5wYWdlVmlld0NvdW50PQoJCWEucGFnZXZpZXdzKX1jYXRjaChiKXt9fSxnZXRQcm9wZXJ0eTpmdW5jdGlvbihhLGIpe3JldHVybiJ1bmRlZmluZWQiPT10eXBlb2YgYWN0aXZlVXNlclByb2ZpbGVNbmcuX19wcm9wZXJ0aWVzfHxudWxsPT1hY3RpdmVVc2VyUHJvZmlsZU1uZy5fX3Byb3BlcnRpZXM\/bnVsbDoidW5kZWZpbmVkIj09dHlwZW9mIGFjdGl2ZVVzZXJQcm9maWxlTW5nLl9fcHJvcGVydGllc1thXT8idW5kZWZpbmVkIiE9dHlwZW9mIGI\/YjoiIjphY3RpdmVVc2VyUHJvZmlsZU1uZy5fX3Byb3BlcnRpZXNbYV19LGFkZFByb3BlcnR5OmZ1bmN0aW9uKGEsYixkKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIGF8fG51bGw9PWF8fDA9PWEubGVuZ3RofHwidW5kZWZpbmVkIj09dHlwZW9mIGJ8fG51bGw9PWJ8fCJ1bmRlZmluZWQiPT10eXBlb2Ygd2luZG93LmFjdGl2ZVByb2ZpbGVJRClyZXR1cm4gbnVsbDsidW5kZWZpbmVkIj09dHlwZW9mIGQmJihkPSJVUERBVEUiKTthY3RpdmVVc2VyUHJvZmlsZU1uZy5nZXRTdGF0c1VSSSgpOwoJCXRoaXMuYWpheE1uZy5hamF4KHt0eXBlOiJHRVQiLGFjdGlvbjoiYWRkcHJvcGVydHkiLHV1aWQ6YWN0aXZlVXNlclByb2ZpbGVNbmcuZ2V0QWN0aXZlUHJvZmlsZWlkKCksc2lkOmFjdGl2ZVVzZXJQcm9maWxlTW5nLmdldFNlc3Npb25JRCgpLHBuYW1lOmEscHZhbHVlOmIscG1vZGU6ZH0pO3JldHVybiEwfSx0YWdCcm93c2VyOmZ1bmN0aW9uKGEsYil7dHJ5e3ZhciBkPWEsYz10aGlzO2lmKCEwPT09YWN0aXZlVXNlclByb2ZpbGVNbmcuZGlzYWJsZWQpcmV0dXJuITE7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBhfHxudWxsPT1hKWQ9ZnVuY3Rpb24oaCl7dHJ5e3ZhciBmPW5ldyBTdHJpbmcoaCk7Zj1mLnRyaW0oKTtpZigwPGYubGVuZ3RoKXtjLmxvZ01zZygiVGFnZ2VkIHdpdGggdXVpZCA9PiAiK2YpO3ZhciBxPWMuZ2V0QWN0aXZlUHJvZmlsZWlkKCk7YWN0aXZlVXNlclByb2ZpbGVNbmcudWlkPWYudHJpbSgpO251bGwhPXEmJiJ1bmRlZmluZWQiIT10eXBlb2YgcS5sZW5ndGgmJgoJMDxxLmxlbmd0aCYmYWN0aXZlVXNlclByb2ZpbGVNbmcudWlkIT1xJiZjLmNvb2tpZU1uZy5zZXRDb29raWVWYWx1ZSgidXVpZF92MSIscSwiLyIsMTgwKTtjLmNvb2tpZU1uZy5zZXRDb29raWVWYWx1ZSgidXVpZCIsYWN0aXZlVXNlclByb2ZpbGVNbmcudWlkLCIvIiw1RTMpO2MuY29va2llTW5nLnNldENvb2tpZVZhbHVlKCJ1dWlkX3ZsZDMiLCEwLCIvIiw1RTMpO2Muc2V0QWN0aXZlUHJvZmlsZWlkKCl9fWNhdGNoKHApe2MubG9nTXNnKCJVbmV4cGVjdGVkIGVycm9yIHJldHVybmVkIGZyb20gdGFnZ2luZzogIitwLm1lc3NhZ2UpfX07dGhpcy5sb2dNc2coIkdlbmVyYXRpbmcgZmluZ2VycHJpbnQiKTt2YXIgZT10aGlzLmdldEZQVVJJKCk7Yy5hamF4TW5nLmdldFNjcmlwdChlLGZ1bmN0aW9uKCl7dHJ5e3ZhciBoPWZ1bmN0aW9uKGwpe3RyeXtjLmxvZ01zZygiRmluZ2VycHJpbnRlZDogIitsKTt2YXIgQz1jLmdldEFjdGl2ZVByb2ZpbGVpZCgpLEE9ZW5jb2RlVVJJKHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4pOwoJCWlmKCJ1bmRlZmluZWQiPT10eXBlb2YgbHx8bnVsbD09bClyZXR1cm4hMTt2YXIgej0hMTthY3RpdmVVc2VyUHJvZmlsZU1uZy5pc0QyQ1NpdGUmJjM9PXdpbmRvdy5hY3RpdmVTaXRlSUQmJih6PSEwKTtjLmNvb2tpZU1uZy5zZXRDb29raWVWYWx1ZSgidXVmcCIsbCwiLyIsNUUzKTt2YXIgbT17ZDpBLGZwMTpsLnN1YnN0cmluZygwLDgpLGZwMjpsLnN1YnN0cmluZyg4LDE2KSxmcDM6bC5zdWJzdHJpbmcoMTYsMjQpLGZwNDpsLnN1YnN0cmluZygyNCwzMiksdWlkOkMsYWN0aW9uOiJ1cGdyYWRlZnAiLGRibTp6LHY6YWN0aXZlVXNlclByb2ZpbGVNbmcuX19yZXNldFZ9LHI9YWN0aXZlVXNlclByb2ZpbGVNbmcuZ2V0U3RhdHNVUkkoKTtjLmxvZ01zZyhyKyJzZXJ2aWNlL2QyYy51cGdyYWRlLnY2LmZwLmpzIik7Yy5sb2dNc2coSlNPTi5zdHJpbmdpZnkobSkpO2MuYWpheE1uZy5hamF4KHt1cmw6cisic2VydmljZS9kMmMudXBncmFkZS52Ni5mcC5qcyIsdHlwZToiR0VUIixkYXRhOm0sCgkJCWRvbmU6ZnVuY3Rpb24oeCl7dHJ5e2MubG9nTXNnKCJVVUlEIGFmdGVyIHVwcm9maWxlIHVwZGF0ZTogIit4KSwidW5kZWZpbmVkIiE9dHlwZW9mIGQmJm51bGwhPWQ\/ZCh4KTpjLmNvb2tpZU1uZy5zZXRDb29raWVWYWx1ZSgidXVpZCIseCwiLyIsNUUzKSwidW5kZWZpbmVkIiE9dHlwZW9mIGImJm51bGwhPWImJmIoKX1jYXRjaChnKXt9fX0pfWNhdGNoKHgpe2MubG9nTXNnKCJVbmV4cGVjdGVkIGVycm9yIGV4ZWN1dGluZyB0YWdNZSBzdGVwOiAiK3gubWVzc2FnZSl9fSxmPSExO3RyeXtuYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoIldpbiIpLG5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZigiTWFjIiksbmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRleE9mKCJMaW51eCIpLG5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZigiQW5kcm9pZCIpLC0xIT1uYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoImxpa2UgTWFjIikmJihmPSEwKSxsb2NhdGlvbi5wcm90b2NvbC5pbmRleE9mKCJodHRwcyIpfWNhdGNoKGwpe312YXIgcT0KCQl7cHJlcHJvY2Vzc29yOm51bGwsYXVkaW86e3RpbWVvdXQ6MUUzLGV4Y2x1ZGVJT1MxMTpmfSxmb250czp7c3dmQ29udGFpbmVySWQ6ImRjdGtkaXZmcDIiLHN3ZlBhdGg6ImZsYXNoL2NvbXBpbGVkL0ZvbnRMaXN0LnN3ZiIsdXNlckRlZmluZWRGb250czpbXSxleHRlbmRlZEpzRm9udHM6ITF9LHNjcmVlbjp7ZGV0ZWN0U2NyZWVuT3JpZW50YXRpb246ITB9LHBsdWdpbnM6e3NvcnRQbHVnaW5zRm9yOlsvcGFsZW1vb24vaV0sZXhjbHVkZUlFOiExfSxleHRyYUNvbXBvbmVudHM6W10sTk9UX0FWQUlMQUJMRToibm90IGF2YWlsYWJsZSIsRVJST1I6ImVycm9yIixFWENMVURFRDoiZXhjbHVkZWQifSxwPSExO251bGwhPXdpbmRvdyYmbnVsbCE9d2luZG93LmxvY2F0aW9uJiYidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdy5sb2NhdGlvbi5ocmVmJiYoLTE8d2luZG93LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiZDJjZGVidWc9MSIpfHwtMSE9d2luZG93LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiY3JtMi5kMmNtZWRpYS5jYSIpKSYmCgkocD0hMCk7dmFyIHk9ZnVuY3Rpb24obCl7dHJ5e3ZhciBDPWZ1bmN0aW9uKHope3o9ei5tYXAoZnVuY3Rpb24obSl7dmFyIHI9IiI7dHJ5e3N3aXRjaChwJiZjb25zb2xlLmxvZyhtLmtleS50b0xvd2VyQ2FzZSgpKSxtLmtleS50b0xvd2VyQ2FzZSgpKXtjYXNlICJjYW52YXMiOmNhc2UgIndlYmdsIjpjYXNlICJhZGJsb2NrIjpyPSIiO2JyZWFrO2Nhc2UgInVzZXJhZ2VudCI6aWYoMDxtLnZhbHVlLmxlbmd0aCYmLTEhPW0udmFsdWUuaW5kZXhPZigiICIpKWZvcih2YXIgeD1tLnZhbHVlLnNwbGl0KCIgIiksZz0wO2c8eC5sZW5ndGg7ZysrKXt2YXIgbj14W2ddO2lmKC0xIT1uLmluZGV4T2YoIi8iKSl7dmFyIHQ9bi5zcGxpdCgiLyIpO3IrPXRbMF19ZWxzZS0xPT1uLmluZGV4T2YoIi4iKSYmKHIrPW4pfXAmJmNvbnNvbGUubG9nKCJVc2VyIEFnZW50IC0tICIrcik7YnJlYWs7ZGVmYXVsdDoidW5kZWZpbmVkIiE9dHlwZW9mIEFycmF5LmlzQXJyYXkmJkFycmF5LmlzQXJyYXkobS52YWx1ZSl8fAoJbS52YWx1ZS5jb25zdHJ1Y3Rvcj09PUFycmF5PyhtLnZhbHVlLnNvcnQoKSxyPW0udmFsdWUuam9pbigpKTpyPW0udmFsdWV9fWNhdGNoKHYpe2NvbnNvbGUmJmNvbnNvbGUubG9nJiZjb25zb2xlLmxvZygiRlAgRmFpbGVkIC0tICVzIC0gJW8iLHYubWVzc2FnZSxtKX1pZigidW5kZWZpbmVkIj09dHlwZW9mIHJ8fG51bGw9PXIpcj0iIjtyZXR1cm4gcn0pO3ouc29ydCgpO3JldHVybiB6fShsKTtwJiZjb25zb2xlLmxvZygidG8gaGFzaDogJW8iLEMpO3ZhciBBPUZpbmdlcnByaW50Mi54NjRoYXNoMTI4KEMuam9pbigiIiksMzEpO3AmJmNvbnNvbGUubG9nKCJGUCA9PiAlcyIsQSk7aChBKTtjLmxvZ01zZygiRmluZ2VycHJpbnQ6ICIrQSl9Y2F0Y2goeil7Y29uc29sZSYmY29uc29sZS5sb2cmJmNvbnNvbGUubG9nKCJGUDIgRmFpbGVkIC0tICVzIix6Lm1lc3NhZ2UpfX07d2luZG93LnJlcXVlc3RJZGxlQ2FsbGJhY2s\/cmVxdWVzdElkbGVDYWxsYmFjayhmdW5jdGlvbigpe3RyeXtGaW5nZXJwcmludDIuZ2V0KHEsCgkJeSl9Y2F0Y2gobCl7Yy5sb2dNc2coIjEuVW5hYmxlIHRvIGluc3RhbnRpYXRlIEZQMi4gRXJyb3I6ICIrbC5tZXNzYWdlKX19KTpzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dHJ5e0ZpbmdlcnByaW50Mi5nZXQocSx5KX1jYXRjaChsKXtjLmxvZ01zZygiMi5VbmFibGUgdG8gaW5zdGFudGlhdGUgRlAyLiBFcnJvcjogIitsLm1lc3NhZ2UpfX0sNTAwKX1jYXRjaChsKXtjLmxvZ01zZygiVW5leHBlY3RlZCBlcnJvciBleGVjdXRpbmcgZmlyc3Qgc3RlcDogIitsLm1lc3NhZ2UpfX0pfWNhdGNoKGgpe2MubG9nTXNnKCJVbmV4cGVjdGVkIGVycm9yIGV4ZWN1dGluZyBmaXJzdCBzdGVwOiAiK2gubWVzc2FnZSl9fSx1cGRhdGVGUDpmdW5jdGlvbigpe3RyeXtpZighMD09PWFjdGl2ZVVzZXJQcm9maWxlTW5nLmRpc2FibGVkKXJldHVybiExO3RoaXMubG9nTXNnKCJTdGFydGluZyBTYWZhcmkgUnVuIik7aWYoITE9PT10aGlzLnJlc2V0U2Vjb25kUGFzcyl7dGhpcy5yZXNldFNlY29uZFBhc3M9CgkJITA7dGhpcy5sb2dNc2coIlN0YXJ0aW5nIGZpcnN0IHBhc3MiKTt2YXIgYT10aGlzLmNvb2tpZU1uZy5yZWFkQ29va2llVmFsdWUoInV1aWQiKSxiPXRoaXMuY29va2llTW5nLnJlYWRDb29raWVWYWx1ZSgidXVpZF9pb3NfMiIpO3RoaXMubG9nTXNnKCJVVUlELiAiK2ErIiAtLSBJT1NSRVNFVC4gIitiKTtudWxsPT1hfHxudWxsPT1iPyh0aGlzLmxvZ01zZygiRHJvcHBpbmcgcmVzZXQgY29va2llIiksdGhpcy5jb29raWVNbmcuc2V0Q29va2llVmFsdWUoInV1aWRfaW9zXzIiLDEsIi8iLDVFMyksdGhpcy50YWdCcm93c2VyKG51bGwpKToodGhpcy5sb2dNc2coIlNlY29uZCBwYXNzLCBub3RoaW5nIHRvIGRvIiksd2luZG93Ll9fX2QyY0NUS01ldGhvZCgpKX1lbHNlIHdpbmRvdy5fX19kMmNDVEtNZXRob2QoKX1jYXRjaChkKXt0aGlzLmxvZ01zZygiVW5leHBlY3RlZCBlcnJvciB1cGRhdGluZyBtb2JpbGUgY29va2llOiAiK2QubWVzc2FnZSl9fX07CndpbmRvdy5fX19kMmNDVEtNZXRob2Q9ZnVuY3Rpb24oKXt0cnl7aWYoIWFjdGl2ZVVzZXJQcm9maWxlTW5nLl9pc0JvdCgpJiYhMCE9PWFjdGl2ZVVzZXJQcm9maWxlTW5nLmRpc2FibGVkKXthY3RpdmVVc2VyUHJvZmlsZU1uZy5qcXVlcnlBY3RpdmU9d2luZG93LmpRdWVyeT8hMDohMTt2YXIgYT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidG9wc2l0ZWlkIik7aWYobnVsbD09YXx8InVuZGVmaW5lZCI9PXR5cGVvZiBhLnZhbHVlfHxpc05hTihhLnZhbHVlKSlhY3RpdmVVc2VyUHJvZmlsZU1uZy5sb2dNc2coIkxvYWRpbmcgZnBzeXN0ZW0gb24gbm9uIGQyYyB3ZWJzaXRlIiksYWN0aXZlVXNlclByb2ZpbGVNbmcuaXNEMkNTaXRlPSExO2Vsc2UgdHJ5e3dpbmRvdy5hY3RpdmVTaXRlSUQ9cGFyc2VJbnQoYS52YWx1ZSl9Y2F0Y2gocCl7d2luZG93LmFjdGl2ZVNpdGVJRD12b2lkIDB9dmFyIGI9YWN0aXZlVXNlclByb2ZpbGVNbmcuY2hlY2tTY2hlZHVsZWRSZXNldCgpLGQ9YWN0aXZlVXNlclByb2ZpbGVNbmcuY29va2llTW5nLnJlYWRDb29raWVWYWx1ZSgidXNpZCIpOwoJaWYoInVuZGVmaW5lZCI9PXR5cGVvZiB3aW5kb3cuYWN0aXZlU2Vzc2lvbklEfHxudWxsPT13aW5kb3cuYWN0aXZlU2Vzc2lvbklEKXdpbmRvdy5hY3RpdmVTZXNzaW9uSUQ9MDtudWxsPT1kfHxpc05hTihkKXx8KHdpbmRvdy5hY3RpdmVTZXNzaW9uSUQ9ZCk7YWN0aXZlVXNlclByb2ZpbGVNbmcuY29va2llTW5nLmRlbGV0ZUNvb2tpZSgidXVpZF92bGQiKTt2YXIgYz1hY3RpdmVVc2VyUHJvZmlsZU1uZy5nZXRTdGF0c1VSSSgpLGU9ZnVuY3Rpb24oKXt0cnl7InVuZGVmaW5lZCI9PXR5cGVvZiB3aW5kb3cuc3RhdEV4ZWN1dGVkJiYoInVuZGVmaW5lZCIhPXR5cGVvZiBhY3RpdmVVc2VyUHJvZmlsZU1uZyYmbnVsbCE9YWN0aXZlVXNlclByb2ZpbGVNbmcmJiJ1bmRlZmluZWQiIT10eXBlb2YgYWN0aXZlVXNlclByb2ZpbGVNbmcubG9nUGFnZVZpZXc\/KGFjdGl2ZVVzZXJQcm9maWxlTW5nLmxvZ1BhZ2VWaWV3KCksd2luZG93LnN0YXRFeGVjdXRlZD0hMCk6YWN0aXZlVXNlclByb2ZpbGVNbmcuYWpheE1uZy5hamF4KHt1cmw6YysKCQkJInNlcnZpY2Uvc2Vzc2lvbk1uZy5waHAiLHR5cGU6IkdFVCIsZGF0YTp7YWN0aW9uOiJ1bmtub3duIixtc2c6IjEuRWl0aGVyIGFjdGl2ZVVzZXJQcm9maWxlTW5nIGlzIG5vdCBkZWZpbmVkIG9yIGxvZ1BhZ2VWaWV3IGlzIG5vdCBkZWZpbmVkIn19KSl9Y2F0Y2gocCl7YWN0aXZlVXNlclByb2ZpbGVNbmcubG9nTXNnKHAubWVzc2FnZSksYWN0aXZlVXNlclByb2ZpbGVNbmcuYWpheE1uZy5hamF4KHt1cmw6Yysic2VydmljZS9zZXNzaW9uTW5nLnBocCIsdHlwZToiR0VUIixkYXRhOnthY3Rpb246InVua25vd24iLG1zZzpwLm1lc3NhZ2V9fSl9fSxoPWFjdGl2ZVVzZXJQcm9maWxlTW5nLmNvb2tpZU1uZy5yZWFkQ29va2llVmFsdWUoInV1aWQiKSxmPW51bGw9PWh8fDA9PWgubGVuZ3RoPyExOiEwO2g9YWN0aXZlVXNlclByb2ZpbGVNbmcuY29va2llTW5nLnJlYWRDb29raWVWYWx1ZSgidXVpZF92bGQzIik7dmFyIHE9bnVsbD09aHx8MD09aC5sZW5ndGg\/ITE6ITA7aWYoIWImJmYmJgoJCXEpe2FjdGl2ZVVzZXJQcm9maWxlTW5nLnJlZ2lzdGVyQ2FsbGJhY2soZSk7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiB3aW5kb3cuYWN0aXZlUHJvZmlsZUlEfHxudWxsPT13aW5kb3cuYWN0aXZlUHJvZmlsZUlEKXdpbmRvdy5hY3RpdmVQcm9maWxlSUQ9YWN0aXZlVXNlclByb2ZpbGVNbmcuZ2V0QWN0aXZlUHJvZmlsZWlkKCk7YWN0aXZlVXNlclByb2ZpbGVNbmcuX19ub3RpZnlVVUlEKCl9ZWxzZSBhY3RpdmVVc2VyUHJvZmlsZU1uZy5zZXNzaW9uaWQ9bnVsbCx3aW5kb3cuYWN0aXZlU2Vzc2lvbklEPW51bGwsYWN0aXZlVXNlclByb2ZpbGVNbmcudGFnQnJvd3NlcihudWxsLGZ1bmN0aW9uKCl7YWN0aXZlVXNlclByb2ZpbGVNbmcucmVnaXN0ZXJDYWxsYmFjayhlKX0pfX1jYXRjaChwKXtjPWFjdGl2ZVVzZXJQcm9maWxlTW5nLmdldFN0YXRzVVJJKCksYWN0aXZlVXNlclByb2ZpbGVNbmcuYWpheE1uZy5fZ2V0KGMrInNlcnZpY2Uvc2Vzc2lvbk1uZy5waHA\/YWN0aW9uPXVua25vd24mbXNnPTIuIisKCWVuY29kZVVSSUNvbXBvbmVudChwLm1lc3NhZ2UpKSxjb25zb2xlJiZjb25zb2xlLmxvZyYmY29uc29sZS5sb2coIjEuIFVuZXhwZWN0ZWQgZXJyb3Igb2NjdXJlZCBsb2FkaW5nIHVwcm9maWxlLmZpbmFsLmpzLiBFcnJvcjogIitwLm1lc3NhZ2UpfX07CnRyeXtsZXQgYT1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjZGlzYWJsZUludGVybmFsU2Vzc2lvbiIpO2lmKG51bGwhPWEmJiIxIj09YS52YWx1ZSl7YWN0aXZlVXNlclByb2ZpbGVNbmcuZGlzYWJsZWQ9ITA7YWN0aXZlVXNlclByb2ZpbGVNbmcudWlkPW51bGw7bGV0IGI9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI3RvcHNpdGVpZCIpO251bGwhPWImJihiPXBhcnNlSW50KGIudmFsdWUpKTtpc05hTihiKXx8MjM1IT1iPyhhY3RpdmVVc2VyUHJvZmlsZU1uZy5jb29raWVNbmcuZGVsZXRlQ29va2llKCJ1dWlkIiksYWN0aXZlVXNlclByb2ZpbGVNbmcuY29va2llTW5nLmRlbGV0ZUNvb2tpZSgidWlkIiksYWN0aXZlVXNlclByb2ZpbGVNbmcuY29va2llTW5nLmRlbGV0ZUNvb2tpZSgidXVpZF9yc3QiKSxhY3RpdmVVc2VyUHJvZmlsZU1uZy5jb29raWVNbmcuZGVsZXRlQ29va2llKCJ1c2lkIiksYWN0aXZlVXNlclByb2ZpbGVNbmcuY29va2llTW5nLmRlbGV0ZUNvb2tpZSgidXZpZXciKSwKCWFjdGl2ZVVzZXJQcm9maWxlTW5nLmNvb2tpZU1uZy5kZWxldGVDb29raWUoInVzaWQiKSxhY3RpdmVVc2VyUHJvZmlsZU1uZy5jb29raWVNbmcuZGVsZXRlQ29va2llKCJ1c2lkX3RtcCIpLGFjdGl2ZVVzZXJQcm9maWxlTW5nLmNvb2tpZU1uZy5kZWxldGVDb29raWUoInV1aWRfdjEiKSxhY3RpdmVVc2VyUHJvZmlsZU1uZy5jb29raWVNbmcuZGVsZXRlQ29va2llKCJ1dWlkX3ZsZDMiKSxhY3RpdmVVc2VyUHJvZmlsZU1uZy5jb29raWVNbmcuZGVsZXRlQ29va2llKCJ1dWZwIiksYWN0aXZlVXNlclByb2ZpbGVNbmcuY29va2llTW5nLmRlbGV0ZUNvb2tpZSgidXVpZF9pb3NfMiIpKTpjb25zb2xlLmxvZygiYnlwYXNzaW5nIGNvb2tpZSBwdXJnZSIpfWVsc2UibG9hZGluZyIhPWRvY3VtZW50LnJlYWR5U3RhdGU\/d2luZG93Ll9fX2QyY0NUS01ldGhvZCgpOmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXI\/ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsd2luZG93Ll9fX2QyY0NUS01ldGhvZCk6Cglkb2N1bWVudC5hdHRhY2hFdmVudCgib25yZWFkeXN0YXRlY2hhbmdlIixmdW5jdGlvbigpeyJjb21wbGV0ZSI9PWRvY3VtZW50LnJlYWR5U3RhdGUmJndpbmRvdy5fX19kMmNDVEtNZXRob2QoKX0pfWNhdGNoKGEpe2NvbnNvbGUmJmNvbnNvbGUubG9nJiZjb25zb2xlLmxvZygiNS4gVW5leHBlY3RlZCBlcnJvciBvY2N1cmVkIGxvYWRpbmcgdXByb2ZpbGUuZmluYWwuanMuIEVycm9yOiAiK2EubWVzc2FnZSl9OwovKiogL20vanMva2MuZmFiLmpzICoqLwp2YXIgX19fZDJjX2tjZmFianNfY19vbj0iMjAyNS0wNS0yMyAxNzowMzoxOCI7J3VzZSBzdHJpY3QnO3ZhciBfX19kMmNfa2NmYWJqc19jX29uPSIyMDI0LTAzLTI1IDEyOjMwOjE4IjsidXNlIHN0cmljdCI7CihmdW5jdGlvbihhKXthLmtjfHwoYS5rYz17fSk7YS5rYy5mYWI9ZnVuY3Rpb24oaCxlLGwpe3ZhciBiPXRoaXM7Yi4kZWw9YShoKTtiLmVsPWg7Yi4kZWwuZGF0YSgia2MuZmFiIixiKTt2YXIgZixrO2IuaW5pdD1mdW5jdGlvbigpe2lmKCJ1bmRlZmluZWQiPT09dHlwZW9mIGV8fG51bGw9PT1lKWU9W3t1cmw6bnVsbCxiZ2NvbG9yOiJyZWQiLGljb246IisifSx7dXJsOiJodHRwOi8vd3d3LmV4YW1wbGUuY29tIixiZ2NvbG9yOiJvcmFuZ2UiLGljb246IisifSx7dXJsOiJodHRwOi8vd3d3LmV4YW1wbGUuY29tIixiZ2NvbG9yOiJ5ZWxsb3ciLGljb246IisifV07Yi5saW5rcz1lO2lmKDA8Yi5saW5rcy5sZW5ndGgpe21haW5fYnRuPWIubGlua3NbMF07Y29sb3Jfc3R5bGU9bWFpbl9idG4uY29sb3I\/ImNvbG9yOiIrbWFpbl9idG4uY29sb3IrIjsiOiIiO2JnX2NvbG9yX3N0eWxlPW1haW5fYnRuLmJnY29sb3I\/ImJhY2tncm91bmQtY29sb3I6IittYWluX2J0bi5iZ2NvbG9yKyI7IjoKIiI7bWFpbl9idG5fZG9tPSI8YnV0dG9uIGRhdGEtbGluay1ocmVmPSciKyhtYWluX2J0bi51cmw\/bWFpbl9idG4udXJsOiIiKSsiJyBkYXRhLWxpbmstdGFyZ2V0PSciKyhtYWluX2J0bi50YXJnZXQ\/bWFpbl9idG4udGFyZ2V0OiIiKSsiJyBjbGFzcz0na2NfZmFiX21haW5fYnRuJyBzdHlsZT0nIitiZ19jb2xvcl9zdHlsZSsiJz48c3BhbiBzdHlsZT0nIitjb2xvcl9zdHlsZSsiJz4iK21haW5fYnRuLmljb24rIjwvc3Bhbj48L2J1dHRvbj4iO3N1Yl9mYWJfYnRuc19kb209IiI7Yi5saW5rcy5zaGlmdCgpO2Zvcih2YXIgYz0wO2M8Yi5saW5rcy5sZW5ndGg7YysrKWNvbG9yX3N0eWxlPWIubGlua3NbY10uY29sb3I\/ImNvbG9yOiIrYi5saW5rc1tjXS5jb2xvcisiOyI6IiIsYmdfY29sb3Jfc3R5bGU9Yi5saW5rc1tjXS5iZ2NvbG9yPyJiYWNrZ3JvdW5kLWNvbG9yOiIrYi5saW5rc1tjXS5iZ2NvbG9yKyI7IjoiIixzdWJfZmFiX2J0bnNfZG9tKz0iPGRpdj48YnV0dG9uIGRhdGEtbGluay10aXRsZT0nIisKYi5saW5rc1tjXS50aXRsZSsiJyBkYXRhLWxpbmstaHJlZj0nIisoYi5saW5rc1tjXS51cmw\/Yi5saW5rc1tjXS51cmw6IiIpKyInIGRhdGEtbGluay10YXJnZXQ9JyIrKGIubGlua3NbY10udGFyZ2V0P2IubGlua3NbY10udGFyZ2V0OiIiKSsiJyBjbGFzcz0nc3ViX2ZhYl9idG4nIHN0eWxlPSciK2JnX2NvbG9yX3N0eWxlKyInPjxzcGFuIHN0eWxlPSciK2NvbG9yX3N0eWxlKyInPiIrYi5saW5rc1tjXS5pY29uKyI8L3NwYW4+PC9idXR0b24+PC9kaXY+IjtzdWJfZmFiX2J0bnNfZG9tPSI8ZGl2IGNsYXNzPSdzdWJfZmFiX2J0bnNfd3JhcHBlcic+IitzdWJfZmFiX2J0bnNfZG9tKyI8L2Rpdj4iO2IuJGVsLmFwcGVuZChzdWJfZmFiX2J0bnNfZG9tKS5hcHBlbmQobWFpbl9idG5fZG9tKX1lbHNlInVuZGVmaW5lZCI9PXR5cGVvZiBjb25zb2xlJiYod2luZG93LmNvbnNvbGU9e2xvZzpmdW5jdGlvbihnKXthbGVydChnKX19KSxjb25zb2xlLmxvZygiSW52YWxpZCBsaW5rcyBhcnJheSBwYXJhbSIpOwpiLm9wdGlvbnM9YS5leHRlbmQoe30sYS5rYy5mYWIuZGVmYXVsdE9wdGlvbnMsbCk7Zj1iLiRlbC5maW5kKCIua2NfZmFiX21haW5fYnRuIik7az1iLiRlbC5maW5kKCIuc3ViX2ZhYl9idG5zX3dyYXBwZXIiKTtmLm9uKCJjbGljayIsZnVuY3Rpb24oZyl7MDxhKHRoaXMpLmF0dHIoImRhdGEtbGluay1ocmVmIikubGVuZ3RoJiYoYSh0aGlzKS5hdHRyKCJkYXRhLWxpbmstdGFyZ2V0Iik\/d2luZG93Lm9wZW4oYSh0aGlzKS5hdHRyKCJkYXRhLWxpbmstaHJlZiIpLGEodGhpcykuYXR0cigiZGF0YS1saW5rLXRhcmdldCIpKTp3aW5kb3cubG9jYXRpb24uaHJlZj1hKHRoaXMpLmF0dHIoImRhdGEtbGluay1ocmVmIikpO2sudG9nZ2xlQ2xhc3MoInNob3ciKTswPGEoIi5rY19mYWJfb3ZlcmxheSIpLmxlbmd0aD8oYSgiLmtjX2ZhYl9vdmVybGF5IikucmVtb3ZlKCksZi50cmlnZ2VyKCJibHVyIikpOihmLnRyaWdnZXIoImZvY3VzIiksYSgiYm9keSIpLmFwcGVuZCgnPGRpdiBjbGFzcz0ia2NfZmFiX292ZXJsYXkiID48L2Rpdj4nKSwKYSgiYm9keSIpLm9uKCJ0b3VjaHN0YXJ0IixmdW5jdGlvbigpe2YudHJpZ2dlcigiYmx1ciIpfSkpOzAhPT1hKHRoaXMpLmZpbmQoIi5pbmsiKS5sZW5ndGgmJmEodGhpcykuZmluZCgiLmluayIpLnJlbW92ZSgpO2EodGhpcykucHJlcGVuZCgiPHNwYW4gY2xhc3M9J2luayc+PC9zcGFuPiIpO2luaz1hKHRoaXMpLmZpbmQoIi5pbmsiKTtpbmsuaGVpZ2h0KCl8fGluay53aWR0aCgpfHwoZD1NYXRoLm1heChhKHRoaXMpLm91dGVyV2lkdGgoKSxhKHRoaXMpLm91dGVySGVpZ2h0KCkpLGluay5jc3Moe2hlaWdodDpkLHdpZHRoOmR9KSk7eD1nLnBhZ2VYLWEodGhpcykub2Zmc2V0KCkubGVmdC1pbmsud2lkdGgoKS8yO3k9Zy5wYWdlWS1hKHRoaXMpLm9mZnNldCgpLnRvcC1pbmsuaGVpZ2h0KCkvMjtpbmsuY3NzKHt0b3A6eSsicHgiLGxlZnQ6eCsicHgifSkuYWRkQ2xhc3MoImFuaW1hdGUiKX0pO2suZmluZCgiLnN1Yl9mYWJfYnRuIikub24oIm1vdXNlZG93biIsZnVuY3Rpb24oZyl7MDwKYSh0aGlzKS5hdHRyKCJkYXRhLWxpbmstaHJlZiIpLmxlbmd0aCYmKGEodGhpcykuYXR0cigiZGF0YS1saW5rLXRhcmdldCIpP3dpbmRvdy5vcGVuKGEodGhpcykuYXR0cigiZGF0YS1saW5rLWhyZWYiKSxhKHRoaXMpLmF0dHIoImRhdGEtbGluay10YXJnZXQiKSk6d2luZG93LmxvY2F0aW9uLmhyZWY9YSh0aGlzKS5hdHRyKCJkYXRhLWxpbmstaHJlZiIpKX0pO2YuZm9jdXNvdXQoZnVuY3Rpb24oKXtrLnJlbW92ZUNsYXNzKCJzaG93Iik7b3ZlcmxheT1hKCIua2NfZmFiX292ZXJsYXkiKTtvdmVybGF5LnJlbW92ZSgpO2EoImJvZHkiKS5vZmYoInRvdWNoc3RhcnQiKX0pfTtiLmluaXQoKX07YS5rYy5mYWIuZGVmYXVsdE9wdGlvbnM9e307YS5mbi5rY19mYWI9ZnVuY3Rpb24oaCxlKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7bmV3IGEua2MuZmFiKHRoaXMsaCxlKX0pfX0pKGpRdWVyeSk7Ci8qKiAvbS9qcy9vcGVuaG91cnMuanMgKiovCnZhciBfX19kMmNfb3BlbmhvdXJzanNfY19vbj0iMjAyNS0wNS0yMyAxNzoxMTowMyI7J3VzZSBzdHJpY3QnO3ZhciBfX19kMmNfb3BlbmhvdXJzanNfY19vbj0iMjAyNS0wMy0xOCAxNDozMDowOCI7InVzZSBzdHJpY3QiOwp2YXIgT3BlbkhvdXJzPWZ1bmN0aW9uKGIpe2Z1bmN0aW9uIGMoZCl7dmFyIGU9JCh0aGlzKS5zaWJsaW5ncygiLmV4cGFuZGFibGVfY29udGVudCIpLmVxKDApLmhhc0NsYXNzKCJvcGVuX2hvdXJzX21hcF9hY3RpdmUiKTskKGQuY3VycmVudFRhcmdldCkuZmluZCgiLm1hcF9vcGVuX2hvdXJzX2V4cGFuZF9hcnJvdyIpLnRvZ2dsZUNsYXNzKCJleHBhbmRlZCIpOyQodGhpcykucGFyZW50cyhhLm9wdGlvbnMuY29udGFpbmVyKS5maW5kKCIub3Blbl9ob3Vyc19tYXBfYWN0aXZlIikuc2xpZGVUb2dnbGUoInNsb3ciKTskKHRoaXMpLnBhcmVudHMoYS5vcHRpb25zLmNvbnRhaW5lcikuZmluZCgiLm9wZW5faG91cnNfbWFwX2FjdGl2ZSIpLnJlbW92ZUNsYXNzKCJvcGVuX2hvdXJzX21hcF9hY3RpdmUiKTtlfHwoJCh0aGlzKS5zaWJsaW5ncygiLmV4cGFuZGFibGVfY29udGVudCIpLmVxKDApLnNsaWRlVG9nZ2xlKCJzbG93IiksJCh0aGlzKS5zaWJsaW5ncygiLmV4cGFuZGFibGVfY29udGVudCIpLmVxKDApLmFkZENsYXNzKCJvcGVuX2hvdXJzX21hcF9hY3RpdmUiKSl9CnZhciBhPXRoaXM7YS5vcHRpb25zPWI7YS4kY29udGFpbmVyPSQoYS5vcHRpb25zLmNvbnRhaW5lcik7YS5pbml0PWZ1bmN0aW9uKCl7YS4kY29udGFpbmVyLmZpbmQoIi5tYXBfb3Blbl9ob3Vyc19leHBhbmQiKS5vbigiY2xpY2sgYXV0b19vcGVuIixjKTswPGEuJGNvbnRhaW5lci5maW5kKCIubWFwX29wZW5faG91cnNfZXhwYW5kLmRlZmF1bHRfb3BlbmVkIikubGVuZ3RoP2EuJGNvbnRhaW5lci5maW5kKCIubWFwX29wZW5faG91cnNfZXhwYW5kLmRlZmF1bHRfb3BlbmVkIikudHJpZ2dlcigiYXV0b19vcGVuIik6MiE9JCgiLmV4cGFuZGFibGVfY29udGVudCIpLmxlbmd0aHx8MDwkKCIuZXhwYW5kYWJsZV9jb250ZW50IikuZmluZCgiLnZpc2l0Q29udGFjdEhlYWRlciIpLmxlbmd0aD9hLm9wdGlvbnMuaGFzT3duUHJvcGVydHkoImF1dG9PcGVuIikmJiFhLm9wdGlvbnMuYXV0b09wZW58fGEuJGNvbnRhaW5lci5maW5kKCIubWFwX29wZW5faG91cnNfZXhwYW5kIikuZmlyc3QoKS50cmlnZ2VyKCJhdXRvX29wZW4iKToKJCgiLmV4cGFuZGFibGVfY29udGVudCIpLnNsaWRlVG9nZ2xlKCJzbG93IikuYWRkQ2xhc3MoIm9wZW5faG91cnNfbWFwX2FjdGl2ZSIpfTtyZXR1cm4gYX07Ci8qKiAvbS9qcy9nb29nbGVtYXBzLmpzICoqLwp2YXIgX19fZDJjX2dvb2dsZW1hcHNqc19jX29uPSIyMDI2LTAxLTEyIDEwOjE0OjU0IjsndXNlIHN0cmljdCc7Y2xhc3MgR29vZ2xlTWFwc1dyYXBwZXJ7Y29uc3RydWN0b3IoYSl7dGhpcy5wcmV2aW91c0luZm9XaW5kb3c9ITE7dGhpcy5vcHRpb25zPXtlbGVtZW50OmEmJmEuZWxlbWVudD9hLmVsZW1lbnQ6IiIsY2VudGVyOmEmJmEuY2VudGVyP2EuY2VudGVyOntsYXQ6NDUuNDY3Mjc3LGxuZzotNzMuODM0NTI2fSxjZW50ZXJPZmZzZXQ6YSYmYS5jZW50ZXJPZmZzZXQ\/YS5jZW50ZXJPZmZzZXQ6e3g6MCx5OjB9LHpvb206YSYmYS56b29tP2Euem9vbTo5LGFkZHJlc3NlczphJiZhLmFkZHJlc3Nlcz9hLmFkZHJlc3NlczpbXSxvbkJlZm9yZUluaXQ6YSYmYS5vbkJlZm9yZUluaXQ\/YS5vbkJlZm9yZUluaXQ6ZnVuY3Rpb24oKXt9LG9uQWZ0ZXJJbml0OmEmJmEub25BZnRlckluaXQ\/YS5vbkFmdGVySW5pdDpmdW5jdGlvbigpe30sb25BZnRlck1hcmtlckNyZWF0ZWQ6YSYmYS5vbkFmdGVyTWFya2VyQ3JlYXRlZD9hLm9uQWZ0ZXJNYXJrZXJDcmVhdGVkOmZ1bmN0aW9uKCl7fX19c3RhdGljIHNldEdvb2dsZU1hcCgpe3ZhciBhPQowLGU9ZnVuY3Rpb24oKXtnb29nbGUubWFwcy5NYXAucHJvdG90eXBlLnNldENlbnRlcldpdGhPZmZzZXQ9ZnVuY3Rpb24oayxnLGwpe3ZhciBjPXRoaXMsYj1uZXcgZ29vZ2xlLm1hcHMuT3ZlcmxheVZpZXc7Yi5vbkFkZD1mdW5jdGlvbigpe3ZhciBmPXRoaXMuZ2V0UHJvamVjdGlvbigpLGQ9Zi5mcm9tTGF0TG5nVG9Db250YWluZXJQaXhlbChrKTtkLngrPWc7ZC55Kz1sO2Muc2V0Q2VudGVyKGYuZnJvbUNvbnRhaW5lclBpeGVsVG9MYXRMbmcoZCkpfTtiLmRyYXc9ZnVuY3Rpb24oKXt9O2Iuc2V0TWFwKHRoaXMpfX07aWYoInVuZGVmaW5lZCIhPT10eXBlb2YgZ29vZ2xlKWUoKTtlbHNlIHZhciBoPXNldEludGVydmFsKGZ1bmN0aW9uKCl7ND5hPyJ1bmRlZmluZWQiIT09dHlwZW9mIGdvb2dsZT8oY2xlYXJJbnRlcnZhbChoKSxlKCkpOmErKzpjbGVhckludGVydmFsKGgpfSwxRTMpfWluaXQoKXt2YXIgYT10aGlzLGU9YS5vcHRpb25zLmNlbnRlck9mZnNldC54P2Eub3B0aW9ucy5jZW50ZXJPZmZzZXQueDoKMCxoPWEub3B0aW9ucy5jZW50ZXJPZmZzZXQueT9hLm9wdGlvbnMuY2VudGVyT2Zmc2V0Lnk6MCxrPW5ldyBnb29nbGUubWFwcy5MYXRMbmdCb3VuZHM7YS5vcHRpb25zLm9uQmVmb3JlSW5pdCgpO2lmKGEub3B0aW9ucy5hZGRyZXNzZXMubGVuZ3RoKXt2YXIgZz1hLm9wdGlvbnMuY2VudGVyLGw9bmV3IGdvb2dsZS5tYXBzLkdlb2NvZGVyLGM9bmV3IGdvb2dsZS5tYXBzLk1hcChkb2N1bWVudC5nZXRFbGVtZW50QnlJZChhLm9wdGlvbnMuZWxlbWVudCkse3pvb206YS5vcHRpb25zLnpvb20sY2VudGVyOmEub3B0aW9ucy5jZW50ZXIsbWFwVHlwZUlkOmdvb2dsZS5tYXBzLk1hcFR5cGVJZC5ST0FETUFQLGdlc3R1cmVIYW5kbGluZzoiZ3JlZWR5IixzY3JvbGx3aGVlbDohMSxtYXBUeXBlQ29udHJvbDohMX0pO2dvb2dsZS5tYXBzLmV2ZW50LmFkZExpc3RlbmVyT25jZShjLCJpZGxlIixmdW5jdGlvbigpe2Eub3B0aW9ucy5hZGRyZXNzZXMubWFwKGZ1bmN0aW9uKGIsZixkKXtmPWZ1bmN0aW9uKG4sCnEpe3RyeXtpZihxPT1nb29nbGUubWFwcy5HZW9jb2RlclN0YXR1cy5PSyl7ay5leHRlbmQoblswXS5nZW9tZXRyeS5sb2NhdGlvbik7Yy5maXRCb3VuZHMoayk7Yy5zZXRab29tKGEub3B0aW9ucy56b29tKTtnPWMuZ2V0Qm91bmRzKCkuZ2V0Q2VudGVyKCk7Yy5zZXRDZW50ZXJXaXRoT2Zmc2V0KGcsZSxoKTt2YXIgcD1uZXcgZ29vZ2xlLm1hcHMuSW5mb1dpbmRvdyh7Y29udGVudDpiLmluZm93aW5kb3d9KSxtPW5ldyBnb29nbGUubWFwcy5NYXJrZXIoe21hcDpjLHBvc2l0aW9uOm5bMF0uZ2VvbWV0cnkubG9jYXRpb24sdGl0bGU6Yi50aXRsZSxpY29uOmIuaWNvbn0pO20uYWRkTGlzdGVuZXIoImNsaWNrIixmdW5jdGlvbigpe2EucHJldmlvdXNJbmZvV2luZG93JiZhLnByZXZpb3VzSW5mb1dpbmRvdy5jbG9zZSgpO2EucHJldmlvdXNJbmZvV2luZG93PXA7cC5vcGVuKGMsbSl9KTthLm9wdGlvbnMub25BZnRlck1hcmtlckNyZWF0ZWQoYixtKX19Y2F0Y2gocil7Y29uc29sZS5sb2cocil9fTsKYS5oYXNMYXQoYikmJmEuaGFzTG5nKGIpPyhkPW5ldyBnb29nbGUubWFwcy5MYXRMbmcoTnVtYmVyKGIuZ2VvbWV0cnkubG9jYXRpb24ubGF0KSxOdW1iZXIoYi5nZW9tZXRyeS5sb2NhdGlvbi5sbmcpKSxmKFt7Z2VvbWV0cnk6e2xvY2F0aW9uOmR9fV0sIk9LIikpOmwuZ2VvY29kZSh7YWRkcmVzczpiLmFkZHJlc3N9LGYpfSl9KTtnb29nbGUubWFwcy5ldmVudC5hZGREb21MaXN0ZW5lcih3aW5kb3csInJlc2l6ZSIsZnVuY3Rpb24oKXtjLnNldENlbnRlcldpdGhPZmZzZXQoZyxlLGgpfSl9YS5vcHRpb25zLm9uQWZ0ZXJJbml0KCl9X2hhc0xhdExuZ1Byb3AoYSxlKXtyZXR1cm4gYS5oYXNPd25Qcm9wZXJ0eSgiZ2VvbWV0cnkiKSYmYS5nZW9tZXRyeS5oYXNPd25Qcm9wZXJ0eSgibG9jYXRpb24iKSYmYS5nZW9tZXRyeS5sb2NhdGlvbi5oYXNPd25Qcm9wZXJ0eShlKSYmImZhbHNlIiE9YS5nZW9tZXRyeS5sb2NhdGlvbltlXT8hMDohMX1oYXNMYXQoYSl7cmV0dXJuIHRoaXMuX2hhc0xhdExuZ1Byb3AoYSwKImxhdCIpfWhhc0xuZyhhKXtyZXR1cm4gdGhpcy5faGFzTGF0TG5nUHJvcChhLCJsbmciKX19OwovKiogL20vanMvZm9vdGVyV2lkZ2V0X00uanMgKiovCnZhciBfX19kMmNfZm9vdGVyV2lkZ2V0TWpzX2Nfb249IjIwMjYtMDEtMTIgMTA6MTM6MTYiOyd1c2Ugc3RyaWN0Jzt2YXIgdHJhY2tGb290ZXJNYXBMb2FkPWZ1bmN0aW9uKCl7dmFyIGE9JCgiI3RhcmdldFBhZ2UiKS52YWwoKTsidW5kZWZpbmVkIj09YSYmKGE9IlVOS05PV04iKTtnYVRyYWNrKCJjLl90cmFja0V2ZW50IiwiRm9vdGVyLU1hcC1Mb2FkIiwiTW9iaWxlIixhLDEpfTsKaW5WaWV3RXhlYygiI2Zvb3Rlckdvb2dsZU1hcCIsZnVuY3Rpb24oKXtpZigkKCIjZm9vdGVyR29vZ2xlTWFwIikubGVuZ3RoKXRyeXtHb29nbGVNYXBzV3JhcHBlci5zZXRHb29nbGVNYXAoKTt2YXIgYT0kKCIjZm9vdGVyR29vZ2xlTWFwWm9vbSIpLnZhbCgpLGM9MTxwYXJzZUludChhKSYmMTg+PXBhcnNlSW50KGEpP3BhcnNlSW50KGEpOjk7d2luZG93LmZvb3Rlckdvb2dsZU1hcE9iamVjdD1uZXcgR29vZ2xlTWFwc1dyYXBwZXIoe2VsZW1lbnQ6ImZvb3Rlckdvb2dsZU1hcCIsYWRkcmVzc2VzOiJ1bmRlZmluZWQiIT10eXBlb2YgZm9vdGVyTWFwQWRkcmVzc2VzP2Zvb3Rlck1hcEFkZHJlc3NlczpbXSx6b29tOmMsb25CZWZvcmVJbml0OmZ1bmN0aW9uKCl7dHJhY2tGb290ZXJNYXBMb2FkKCl9LG9uQWZ0ZXJJbml0OmZ1bmN0aW9uKCl7InVuZGVmaW5lZCIhPXR5cGVvZiBmb290ZXJNYXBBZGRyZXNzZXMmJjAhPWZvb3Rlck1hcEFkZHJlc3Nlcy5sZW5ndGh8fCQoIiNmb290ZXJHb29nbGVNYXAiKS5oaWRlKCl9fSk7CndpbmRvdy5mb290ZXJHb29nbGVNYXBPYmplY3QuaW5pdCgpfWNhdGNoKGIpe2NvbnNvbGUubG9nKGIpfX0pO2luVmlld0V4ZWMoIiNmb290ZXJHb29nbGVNYXBJZnJhbWUiLGZ1bmN0aW9uKCl7dHJhY2tGb290ZXJNYXBMb2FkKCl9KTsKJChmdW5jdGlvbigpe2Z1bmN0aW9uIGEoKXsidW5kZWZpbmVkIiE9PXR5cGVvZiB3aW5kb3cuZm9vdGVyR29vZ2xlTWFwT2JqZWN0P3dpbmRvdy5mb290ZXJHb29nbGVNYXBPYmplY3QuY2FsY3VsYXRlQW5kRGlzcGxheVJvdXRlKCk6KGNvbnNvbGUubG9nKCJJQ0kiKSxzZXRUaW1lb3V0KGEsNTAwKSl9aW5WaWV3RXhlYygiI21hcF9vcGVuX2hvdXJzIixmdW5jdGlvbigpeyhuZXcgT3BlbkhvdXJzKHtjb250YWluZXI6IiNtYXBfb3Blbl9ob3VycyIsYXV0b09wZW46ITB9KSkuaW5pdCgpfSk7JCgiZGl2I3Bob25lTnVtYmVyRGl2IGxpIGEiKS5vbigiY2xpY2siLGZ1bmN0aW9uKCl7InVuZGVmaW5lZCIhPXR5cGVvZiBhY3RpdmVVc2VyUHJvZmlsZU1uZyYmInVuZGVmaW5lZCIhPXR5cGVvZiBhY3RpdmVVc2VyUHJvZmlsZU1uZy5sb2dQYWdlVmlld0V2ZW50JiZhY3RpdmVVc2VyUHJvZmlsZU1uZy5sb2dQYWdlVmlld0V2ZW50KCJwaG9uZS5jYWxsIiwkKHRoaXMpLmF0dHIoImhyZWYiKS5yZXBsYWNlKCJ0ZWw6IiwKIiIpKX0pOyQoIiNkaXJlY3Rpb25zQnV0dG9uSGVhZGVyIikub24oImNsaWNrIixmdW5jdGlvbihjKXtjLnByZXZlbnREZWZhdWx0KCk7JCgiaHRtbCwgYm9keSIpLmFuaW1hdGUoe3Njcm9sbFRvcDokKCIjZm9vdGVyR29vZ2xlTWFwSG91cnMiKS5vZmZzZXQoKS50b3B9LDJFMyk7YSgpfSl9KTsKd2luZG93Lm9ubG9hZD1mdW5jdGlvbigpeyhmdW5jdGlvbigpe3ZhciBhPXtuZXdfZ2VvbG9jOiExLHVzZXJDb29yZDohMSxyZXN1bHQ6ITEscHJldl9nZW9sb2M6Q29va2llcy5nZXQoImdlb2xvY1Byb2Nlc3NlZCIpP0pTT04ucGFyc2UoQ29va2llcy5nZXQoImdlb2xvY1Byb2Nlc3NlZCIpKTohMSxkZWFsZXJfdmlzaXRlZDpDb29raWVzLmdldCgiZGVhbGVyVmlzaXRlZCIpP0pTT04ucGFyc2UoQ29va2llcy5nZXQoImRlYWxlclZpc2l0ZWQiKSk6ITEsZGVhbGVyQWRkcmVzczoiIixnZXRQcmV2TG9jYXRpb246ZnVuY3Rpb24oKXtyZXR1cm4gQ29va2llcy5nZXQoImdlb2xvY1Byb2Nlc3NlZCIpP0pTT04ucGFyc2UoQ29va2llcy5nZXQoImdlb2xvY1Byb2Nlc3NlZCIpKTohMX0scHJvY2Vzc1VzZXJMb2NhdGlvbjpmdW5jdGlvbihiKXthLm5ld19nZW9sb2M9Yjtzd2l0Y2goITApe2Nhc2UgMD09YS5wcmV2X2dlb2xvY3x8YS5wcmV2X2dlb2xvYy5hY2NlcHRlZCE9Yi5yZXN1bHQ6YS5uZXdfZ2VvbG9jLmxvY2F0aW9uX3N0cj0KMT09Yi5yZXN1bHQ\/Yi5nZW9jb2RlX2FkZHJlc3Nfc3RyKyIoIitiLmFjY3VyYWN5KyIpIjoiR2VvbG9jYXRpb24gcmVmdXNlZCI7YS5uZXdfZ2VvbG9jLmRlc2NyaXB0aW9uPTE9PWIucmVzdWx0PyJBQ0NFUFRFRCI6IiI7YS51c2VyQ29vcmQ9e2xhdDpiLmxhdGl0dWRlLCJsb25nIjpiLmxvbmdpdHVkZX07YS5jb21wYXJlVG9EZWFsZXJMb2NhdGlvbigpO2JyZWFrO2Nhc2UgMT09YS5wcmV2X2dlb2xvYy5hY2NlcHRlZCYmMT09Yi5yZXN1bHQ6dmFyIGQ9e2xhdDphLnByZXZfZ2VvbG9jLmxhdGl0dWRlLCJsb25nIjphLnByZXZfZ2VvbG9jLmxvbmdpdHVkZX07YS51c2VyQ29vcmQ9e2xhdDpiLmxhdGl0dWRlLCJsb25nIjpiLmxvbmdpdHVkZX07MjAwPGMuZ2V0RGlzdGFuY2UoZCxhLnVzZXJDb29yZCkmJihhLm5ld19nZW9sb2MuZGVzY3JpcHRpb249IlVQREFURUQiLGEubmV3X2dlb2xvYy5sb2NhdGlvbl9zdHI9Yi5nZW9jb2RlX2FkZHJlc3Nfc3RyKyIoIitiLmFjY3VyYWN5KyIpIiwKYS5jb21wYXJlVG9EZWFsZXJMb2NhdGlvbigpKX19LGNvbXBhcmVUb0RlYWxlckxvY2F0aW9uOmZ1bmN0aW9uKGIpeyJvYmplY3QiPT10eXBlb2YgYiYmYi5sYXQmJmIubG9uZz8yMDE+Yy5nZXREaXN0YW5jZShhLnVzZXJDb29yZCxiKT8wPT1hLmRlYWxlcl92aXNpdGVkJiYoYS5uZXdfZ2VvbG9jLmxvY2F0aW9uX3N0cj1hLmRlYWxlckFkZHJlc3MrIigiK2EubmV3X2dlb2xvYy5hY2N1cmFjeSsiKSIsYS5uZXdfZ2VvbG9jLmRlc2NyaXB0aW9uPSJERUFMRVJfTE9DQVRJT04iLGEubG9nUGFnZUV2ZW50KGEubmV3X2dlb2xvYy5sb2NhdGlvbl9zdHIpLGI9bmV3IERhdGUsYi5zZXRIb3VycygyMyw1OSw1OSwwKSxDb29raWVzLnNldCgiZGVhbGVyVmlzaXRlZCIsMSxiLCIvIikpOjA9PWEucHJldl9nZW9sb2MmJmEubG9nUGFnZUV2ZW50KGEubmV3X2dlb2xvYy5sb2NhdGlvbl9zdHIpOmEuZ2V0RGVhbGVyQ29vcmQoKX0sZ2V0RGVhbGVyQ29vcmQ6ZnVuY3Rpb24oKXthLmRlYWxlckFkZHJlc3M9CiQoJ21ldGFbbmFtZT0iZ2VvLnBsYWNlbmFtZSJdJykucHJvcCgiY29udGVudCIpO2MuZ2V0QWRkcmVzc0Nvb3JkKGEuZGVhbGVyQWRkcmVzcyxhLmNvbXBhcmVUb0RlYWxlckxvY2F0aW9uKX0sbG9nUGFnZUV2ZW50OmZ1bmN0aW9uKGIpe2ImJjA8Yi5sZW5ndGgmJjE9PWEubmV3X2dlb2xvYy5yZXN1bHQmJiJ1bmRlZmluZWQiIT10eXBlb2YgYWN0aXZlVXNlclByb2ZpbGVNbmcmJiJ1bmRlZmluZWQiIT10eXBlb2YgYWN0aXZlVXNlclByb2ZpbGVNbmcubG9nUGFnZVZpZXdFdmVudCYmKGI9YS5uZXdfZ2VvbG9jLmRlc2NyaXB0aW9uKyI6ICIrYixhY3RpdmVVc2VyUHJvZmlsZU1uZy5sb2dQYWdlVmlld0V2ZW50KCJUUkFDS19HRU9MT0MiLGIpKTtnZXRVVUlEPWZ1bmN0aW9uKCl7cmV0dXJuInVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3cuYWN0aXZlUHJvZmlsZUlEJiZudWxsIT13aW5kb3cuYWN0aXZlUHJvZmlsZUlEP3dpbmRvdy5hY3RpdmVQcm9maWxlSUQ6InVuZGVmaW5lZCIhPQp0eXBlb2YgYWN0aXZlVXNlclByb2ZpbGVNbmcmJm51bGwhPWFjdGl2ZVVzZXJQcm9maWxlTW5nLnVpZD9hY3RpdmVVc2VyUHJvZmlsZU1uZy51aWQ6InVuZGVmaW5lZCIhPXR5cGVvZiBDb29raWVzJiYidW5kZWZpbmVkIiE9Q29va2llcy5nZXQoInV1aWQiKSYmbnVsbCE9Q29va2llcy5nZXQoInV1aWQiKT9Db29raWVzLmdldCgidXVpZCIpOiIifTtiPSJ1bmRlZmluZWQiIT10eXBlb2YgQ29va2llcyYmInVuZGVmaW5lZCIhPXR5cGVvZiBDb29raWVzLmdldCgidXNpZCIpJiZudWxsIT1Db29raWVzLmdldCgidXNpZCIpP0Nvb2tpZXMuZ2V0KCJ1c2lkIik6MDt2YXIgZD1nZXRVVUlEKCksZT0kKCIjc2l0ZUlEIikudmFsKCk7JC5hamF4KHt0eXBlOiJQT1NUIix1cmw6Imh0dHBzOi8vcmVzdC5kMmNtZWRpYS5jYS9nZW9sb2NUcmFja2luZy9zaXRldmlzaXRvciIsZGF0YTp7dXVpZDpkLHNlc3Npb25pZDpiLHNpdGVJRDplLHN0YXR1czphLm5ld19nZW9sb2MuZ2VvbG9jX3N0YXR1cywKZGVzYzphLm5ld19nZW9sb2MuZGVzY3JpcHRpb24sbGF0aXR1ZGU6YS5uZXdfZ2VvbG9jLmxhdGl0dWRlLGxvbmdpdHVkZTphLm5ld19nZW9sb2MubG9uZ2l0dWRlLHBvc3RhbF9jb2RlOmEubmV3X2dlb2xvYy5wb3N0YWxfY29kZSxhY2N1cmFjeTphLm5ld19nZW9sb2MuYWNjdXJhY3ksYWRkcmVzczphLm5ld19nZW9sb2MuZ2VvY29kZV9hZGRyZXNzX3N0cixsb2NhdGlvbl9zdHI6YS5uZXdfZ2VvbG9jLmxvY2F0aW9uX3N0cixnZW9sb2NfZGF0ZTphLm5ld19nZW9sb2MuZ2VvbG9jX2RhdGV9LHN1Y2Nlc3M6ZnVuY3Rpb24oZil7fSxmYWlsdXJlOmZ1bmN0aW9uKGYpe319KX19O2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgJCgiI2Fza1Zpc2l0b3JHZW9sb2MiKS52YWwoKSYmMT09JCgiI2Fza1Zpc2l0b3JHZW9sb2MiKS52YWwoKSYmInVuZGVmaW5lZCIhPXR5cGVvZiBnZW9Mb2NhdG9yKXt2YXIgYz1uZXcgZ2VvTG9jYXRvcihhLnByb2Nlc3NVc2VyTG9jYXRpb24pO2MuZm9yY2VHZW9sb2NBdHRlbXB0PQohMDtjLmdldExvY2F0aW9uKCl9fSkoKX07JChmdW5jdGlvbigpeyQoIi5jRXhwZW5kTGlzdCBCVVRUT04iKS5vbigiY2xpY2siLGZ1bmN0aW9uKCl7dmFyIGE9JCh0aGlzKS5jbG9zZXN0KCJkaXYuY0Zvb3RlckNhckxpbmtzIik7YS5sZW5ndGgmJihhLmhhc0NsYXNzKCJjTGlzdEV4cGVuZGVkIil8fGEuYWRkQ2xhc3MoImNMaXN0RXhwZW5kZWQiKS5maW5kKCIuY0V4cGVuZExpc3QiKS5oaWRlKCkpfSl9KTsKLyoqIC9tL2pzL3RvYXN0ci5qcyAqKi8KdmFyIF9fX2QyY190b2FzdHJqc19jX29uPSIyMDI1LTA1LTIzIDE3OjEyOjA5IjsndXNlIHN0cmljdCc7dmFyIF9fX2QyY190b2FzdHJqc19jX29uPSIyMDI0LTAzLTI2IDEyOjMwOjE1IjsidXNlIHN0cmljdCI7CihmdW5jdGlvbih6KXt6KFsianF1ZXJ5Il0sZnVuY3Rpb24oZCl7cmV0dXJuIGZ1bmN0aW9uKCl7ZnVuY3Rpb24gbihhLGMpe2F8fChhPWwoKSk7Zj1kKCIjIithLmNvbnRhaW5lcklkKTtpZihmLmxlbmd0aClyZXR1cm4gZjtjJiYoZj1kKCI8ZGl2Lz4iKS5hdHRyKCJpZCIsYS5jb250YWluZXJJZCkuYWRkQ2xhc3MoYS5wb3NpdGlvbkNsYXNzKS5hdHRyKCJhcmlhLWxpdmUiLCJwb2xpdGUiKS5hdHRyKCJyb2xlIiwiYWxlcnQiKS5jc3MoImNvbG9yIixhLmNvbG9yKSxmLmFwcGVuZFRvKGQoYS50YXJnZXQpKSk7cmV0dXJuIGZ9ZnVuY3Rpb24gQShhLGMsZSl7ZT1lJiZlLmZvcmNlP2UuZm9yY2U6ITE7cmV0dXJuIGEmJihlfHwwPT09ZCgiOmZvY3VzIixhKS5sZW5ndGgpPyhhW2MuaGlkZU1ldGhvZF0oe2R1cmF0aW9uOmMuaGlkZUR1cmF0aW9uLGVhc2luZzpjLmhpZGVFYXNpbmcsY29tcGxldGU6ZnVuY3Rpb24oKXt1KGEpfX0pLCEwKTohMX1mdW5jdGlvbiBFKCl7cmV0dXJue3RhcFRvRGlzbWlzczohMCwKdG9hc3RDbGFzczoidG9hc3QiLGNvbnRhaW5lcklkOiJ0b2FzdC1jb250YWluZXIiLGRlYnVnOiExLHNob3dNZXRob2Q6ImZhZGVJbiIsc2hvd0R1cmF0aW9uOjMwMCxzaG93RWFzaW5nOiJzd2luZyIsb25TaG93bjpmdW5jdGlvbigpe2QoIi50cmFkZUluQmFyTW9iaWxlQnV0dG9uIikuYWRkQ2xhc3MoIndpdGhUb2FzdGVyIik7ZCgiLnByb21vVG9wQnRuLmZsb2F0aW5nIikuYWRkQ2xhc3MoIndpdGhUb2FzdGVyIil9LGhpZGVNZXRob2Q6ImZhZGVPdXQiLGhpZGVEdXJhdGlvbjoxRTMsaGlkZUVhc2luZzoic3dpbmciLG9uSGlkZGVuOmZ1bmN0aW9uKCl7ZCgiLnRyYWRlSW5CYXJNb2JpbGVCdXR0b24iKS5yZW1vdmVDbGFzcygid2l0aFRvYXN0ZXIiKTtkKCIucHJvbW9Ub3BCdG4uZmxvYXRpbmciKS5yZW1vdmVDbGFzcygid2l0aFRvYXN0ZXIiKX0sb25DbG9zZTpmdW5jdGlvbigpe2QoIi50cmFkZUluQmFyTW9iaWxlQnV0dG9uIikucmVtb3ZlQ2xhc3MoIndpdGhUb2FzdGVyIik7CmQoIi5wcm9tb1RvcEJ0bi5mbG9hdGluZyIpLnJlbW92ZUNsYXNzKCJ3aXRoVG9hc3RlciIpfSxleHRlbmRlZFRpbWVPdXQ6MUUzLGljb25DbGFzc2VzOntlcnJvcjoidG9hc3QtZXJyb3IiLGluZm86InRvYXN0LWluZm8iLHN1Y2Nlc3M6InRvYXN0LXN1Y2Nlc3MiLHdhcm5pbmc6InRvYXN0LXdhcm5pbmcifSxpY29uQ2xhc3M6InRvYXN0LWluZm8iLGNvbG9yOiIjRkZGIixiZ0NvbG9yOiIiLHBvc2l0aW9uQ2xhc3M6InRvYXN0LXRvcC1yaWdodCIsdGltZU91dDo1RTMsdGl0bGVDbGFzczoidG9hc3QtdGl0bGUiLG1lc3NhZ2VDbGFzczoidG9hc3QtbWVzc2FnZSIsdGFyZ2V0OiJib2R5IixjbG9zZUh0bWw6JzxidXR0b24gdHlwZT0iYnV0dG9uIj4mdGltZXM7PC9idXR0b24+JyxuZXdlc3RPblRvcDohMCxwcmV2ZW50RHVwbGljYXRlczohMSxwcm9ncmVzc0JhcjohMX19ZnVuY3Rpb24gcihhKXtmdW5jdGlvbiBjKGspe2lmKCFkKCI6Zm9jdXMiLGcpLmxlbmd0aHx8aylyZXR1cm4gY2xlYXJUaW1lb3V0KGguaW50ZXJ2YWxJZCksCmdbYi5oaWRlTWV0aG9kXSh7ZHVyYXRpb246Yi5oaWRlRHVyYXRpb24sZWFzaW5nOmIuaGlkZUVhc2luZyxjb21wbGV0ZTpmdW5jdGlvbigpe3UoZyk7aWYoYi5vbkhpZGRlbiYmImhpZGRlbiIhPT1tLnN0YXRlKWIub25IaWRkZW4oKTttLnN0YXRlPSJoaWRkZW4iO20uZW5kVGltZT1uZXcgRGF0ZTtwJiZwKG0pfX0pfWZ1bmN0aW9uIGUoKXtpZigwPGIudGltZU91dHx8MDxiLmV4dGVuZGVkVGltZU91dCl2PXNldFRpbWVvdXQoYyxiLmV4dGVuZGVkVGltZU91dCksaC5tYXhIaWRlVGltZT1wYXJzZUZsb2F0KGIuZXh0ZW5kZWRUaW1lT3V0KSxoLmhpZGVFdGE9KG5ldyBEYXRlKS5nZXRUaW1lKCkraC5tYXhIaWRlVGltZX1mdW5jdGlvbiBGKCl7Y2xlYXJUaW1lb3V0KHYpO2guaGlkZUV0YT0wO2cuc3RvcCghMCwhMClbYi5zaG93TWV0aG9kXSh7ZHVyYXRpb246Yi5zaG93RHVyYXRpb24sZWFzaW5nOmIuc2hvd0Vhc2luZ30pfWZ1bmN0aW9uIEcoKXt2YXIgaz0oaC5oaWRlRXRhLShuZXcgRGF0ZSkuZ2V0VGltZSgpKS8KaC5tYXhIaWRlVGltZSoxMDA7dy53aWR0aChrKyIlIil9dmFyIGI9bCgpLHg9YS5pY29uQ2xhc3N8fGIuaWNvbkNsYXNzOyJ1bmRlZmluZWQiIT09dHlwZW9mIGEub3B0aW9uc092ZXJyaWRlJiYoYj1kLmV4dGVuZChiLGEub3B0aW9uc092ZXJyaWRlKSx4PWEub3B0aW9uc092ZXJyaWRlLmljb25DbGFzc3x8eCk7YTp7aWYoYi5wcmV2ZW50RHVwbGljYXRlcylpZihhLm1lc3NhZ2U9PT15KXt2YXIgcT0hMDticmVhayBhfWVsc2UgeT1hLm1lc3NhZ2U7cT0hMX1pZighcSl7QisrO2Y9bihiLCEwKTt2YXIgdj1udWxsLGc9ZCgiPGRpdi8+Iik7cT1kKCI8ZGl2Lz4iKTt2YXIgQz1kKCI8ZGl2Lz4iKSx3PWQoIjxkaXYvPiIpLHQ9ZChiLmNsb3NlSHRtbCksaD17aW50ZXJ2YWxJZDpudWxsLGhpZGVFdGE6bnVsbCxtYXhIaWRlVGltZTpudWxsfSxtPXt0b2FzdElkOkIsc3RhdGU6InZpc2libGUiLHN0YXJ0VGltZTpuZXcgRGF0ZSxvcHRpb25zOmIsbWFwOmF9OzY8Yi5iZ0NvbG9yLmxlbmd0aCYmCmcuY3NzKCJiYWNrZ3JvdW5kLWNvbG9yIixiLmJnQ29sb3IpO2EuaWNvbkNsYXNzJiZnLmFkZENsYXNzKGIudG9hc3RDbGFzcykuYWRkQ2xhc3MoeCk7YS50aXRsZSYmKHEuYXBwZW5kKGEudGl0bGUpLmFkZENsYXNzKGIudGl0bGVDbGFzcyksZy5hcHBlbmQocSkpO2EubWVzc2FnZSYmKEMuYXBwZW5kKGEubWVzc2FnZSkuYWRkQ2xhc3MoYi5tZXNzYWdlQ2xhc3MpLGcuYXBwZW5kKEMpKTtiLmNsb3NlQnV0dG9uJiYodC5hZGRDbGFzcygidG9hc3QtY2xvc2UtYnV0dG9uIikuYXR0cigicm9sZSIsImJ1dHRvbiIpLGcucHJlcGVuZCh0KSk7Yi5wcm9ncmVzc0JhciYmKHcuYWRkQ2xhc3MoInRvYXN0LXByb2dyZXNzIiksZy5wcmVwZW5kKHcpKTtiLm5ld2VzdE9uVG9wP2YucHJlcGVuZChnKTpmLmFwcGVuZChnKTtnLmhpZGUoKTtnW2Iuc2hvd01ldGhvZF0oe2R1cmF0aW9uOmIuc2hvd0R1cmF0aW9uLGVhc2luZzpiLnNob3dFYXNpbmcsY29tcGxldGU6Yi5vblNob3dufSk7MDxiLnRpbWVPdXQmJgoodj1zZXRUaW1lb3V0KGMsYi50aW1lT3V0KSxoLm1heEhpZGVUaW1lPXBhcnNlRmxvYXQoYi50aW1lT3V0KSxoLmhpZGVFdGE9KG5ldyBEYXRlKS5nZXRUaW1lKCkraC5tYXhIaWRlVGltZSxiLnByb2dyZXNzQmFyJiYoaC5pbnRlcnZhbElkPXNldEludGVydmFsKEcsMTApKSk7KGZ1bmN0aW9uKCl7Zy5vbigibW91c2VlbnRlciIsRikub24oIm1vdXNlbGVhdmUiLGUpO2lmKCFiLm9uY2xpY2smJmIudGFwVG9EaXNtaXNzKWcub24oImNsaWNrIixjKTtpZihiLmNsb3NlQnV0dG9uJiZ0KXQub24oImNsaWNrIixmdW5jdGlvbihrKXtrLnN0b3BQcm9wYWdhdGlvbj9rLnN0b3BQcm9wYWdhdGlvbigpOnZvaWQgMCE9PWsuY2FuY2VsQnViYmxlJiYhMCE9PWsuY2FuY2VsQnViYmxlJiYoay5jYW5jZWxCdWJibGU9ITApO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBiLm9uQ2xvc2UpYi5vbkNsb3NlKCk7YyghMCl9KTtpZihiLm9uY2xpY2spZy5vbigiY2xpY2siLGZ1bmN0aW9uKCl7Yi5vbmNsaWNrKCk7CmMoKX0pfSkoKTtwJiZwKG0pO2IuZGVidWcmJmNvbnNvbGUmJmNvbnNvbGUubG9nKG0pO3JldHVybiBnfX1mdW5jdGlvbiBsKCl7cmV0dXJuIGQuZXh0ZW5kKHt9LEUoKSxELm9wdGlvbnMpfWZ1bmN0aW9uIHUoYSl7Znx8KGY9bigpKTthLmlzKCI6dmlzaWJsZSIpfHwoYS5yZW1vdmUoKSwwPT09Zi5jaGlsZHJlbigpLmxlbmd0aCYmKGYucmVtb3ZlKCkseT12b2lkIDApKX12YXIgZixwLEI9MCxEPXtjbGVhcjpmdW5jdGlvbihhLGMpe3ZhciBlPWwoKTtmfHxuKGUpO2lmKCFBKGEsZSxjKSlmb3IoYT1mLmNoaWxkcmVuKCksYz1hLmxlbmd0aC0xOzA8PWM7Yy0tKUEoZChhW2NdKSxlKX0scmVtb3ZlOmZ1bmN0aW9uKGEpe3ZhciBjPWwoKTtmfHxuKGMpO2EmJjA9PT1kKCI6Zm9jdXMiLGEpLmxlbmd0aD91KGEpOmYuY2hpbGRyZW4oKS5sZW5ndGgmJmYucmVtb3ZlKCl9LGVycm9yOmZ1bmN0aW9uKGEsYyxlKXtyZXR1cm4gcih7dHlwZToiZXJyb3IiLGljb25DbGFzczpsKCkuaWNvbkNsYXNzZXMuZXJyb3IsCm1lc3NhZ2U6YSxvcHRpb25zT3ZlcnJpZGU6ZSx0aXRsZTpjfSl9LGdldENvbnRhaW5lcjpuLGluZm86ZnVuY3Rpb24oYSxjLGUpe3JldHVybiByKHt0eXBlOiJpbmZvIixpY29uQ2xhc3M6bCgpLmljb25DbGFzc2VzLmluZm8sbWVzc2FnZTphLG9wdGlvbnNPdmVycmlkZTplLHRpdGxlOmN9KX0sb3B0aW9uczp7fSxzdWJzY3JpYmU6ZnVuY3Rpb24oYSl7cD1hfSxzdWNjZXNzOmZ1bmN0aW9uKGEsYyxlKXtyZXR1cm4gcih7dHlwZToic3VjY2VzcyIsaWNvbkNsYXNzOmwoKS5pY29uQ2xhc3Nlcy5zdWNjZXNzLG1lc3NhZ2U6YSxvcHRpb25zT3ZlcnJpZGU6ZSx0aXRsZTpjfSl9LHZlcnNpb246IjIuMS4xIix3YXJuaW5nOmZ1bmN0aW9uKGEsYyxlKXtyZXR1cm4gcih7dHlwZToid2FybmluZyIsaWNvbkNsYXNzOmwoKS5pY29uQ2xhc3Nlcy53YXJuaW5nLG1lc3NhZ2U6YSxvcHRpb25zT3ZlcnJpZGU6ZSx0aXRsZTpjfSl9fSx5O3JldHVybiBEfSgpfSl9KSgiZnVuY3Rpb24iPT09dHlwZW9mIGRlZmluZSYmCmRlZmluZS5hbWQ\/ZGVmaW5lOmZ1bmN0aW9uKHosZCl7InVuZGVmaW5lZCIhPT10eXBlb2YgbW9kdWxlJiZtb2R1bGUuZXhwb3J0cz9tb2R1bGUuZXhwb3J0cz1kKHJlcXVpcmUoImpxdWVyeSIpKTp3aW5kb3cudG9hc3RyPWQod2luZG93LmpRdWVyeSl9KTsKLyoqIC9tL2pzL2RlYWxlclNtc051bWJlci5qcyAqKi8KdmFyIF9fX2QyY19kZWFsZXJTbXNOdW1iZXJqc19jX29uPSIyMDI2LTAzLTEyIDE2OjMwOjAzIjsndXNlIHN0cmljdCc7d2luZG93LmRlYWxlclNtc051bWJlcj13aW5kb3cuZGVhbGVyU21zTnVtYmVyfHxuZXcgZnVuY3Rpb24oKXt0aGlzLl9uYW1lPSJkZWFsZXJTbXNOdW1iZXIiO3RoaXMuX3JpZD0wO3RoaXMuX29icz1bXTt0aGlzLl9idWlsZFF1ZXJ5PWZ1bmN0aW9uKGEsYyl7Yz0ic3RyaW5nIj09PXR5cGVvZiBjP2M6KCQoImJvZHkuRU5HTElTSCIpLmxlbmd0aD8iL2VuLyI6Ii9mci8iKSsiYWpheC9nZXREZWFsZXJTbXNOdW1iZXIiO3ZhciBiLGQ9e3dzd2lkdGg6IjAifSxnPVsiVVVJRCIsIm1lc3NhZ2VUeXBlIl07Yys9Ij8iO2ZvcihiIGluIGcpaWYoInVuZGVmaW5lZCI9PT10eXBlb2YgYVtnW2JdXXx8IiI9PWFbZ1tiXV0pcmV0dXJuIHRoaXMuX29uRXJyb3IoJ21hbmRhdG9yeSBmaWVsZCBpcyBtaXNzaW5nICInK2dbYl0rJyInKSwhMTtmb3IoYiBpbiBhKWEuaGFzT3duUHJvcGVydHkoYikmJihkW2JdPWFbYl0pO2ZvcihiIGluIGQpZC5oYXNPd25Qcm9wZXJ0eShiKSYmCihjKz0iJiIrYisiPSIrZW5jb2RlVVJJQ29tcG9uZW50KGRbYl0pKTtyZXR1cm4gY307dGhpcy5fb25FcnJvcj1mdW5jdGlvbihhKXtjb25zb2xlLmVycm9yKHRoaXMuX25hbWUsYSl9O3RoaXMuX25vdGlmeU9ic2VydmVyPWZ1bmN0aW9uKGEsYyl7dGhpcy5fb2JzW2FdKGMpO2RlbGV0ZSB0aGlzLl9vYnNbYV19O3RoaXMuX2RvUmVxdWVzdD1mdW5jdGlvbihhLGMpe3ZhciBiPXRoaXMuX29uUmVzcG9uc2UuYmluZCh0aGlzKTskLmFqYXgoe2NiOmIscmlkOmMsdHlwZToiR0VUIixjYWNoZTohMSxhc3luYzohMCxkYXRhVHlwZToianNvbiIsdXJsOmF9KS5kb25lKGZ1bmN0aW9uKGQpe3RoaXMuY2IodGhpcy5yaWQsbnVsbD09PWQ\/ITE6ZCwhMSl9KS5mYWlsKGZ1bmN0aW9uKGQsZyl7dGhpcy5jYih0aGlzLnJpZCwhMSxnKX0pfTt0aGlzLl9vblJlc3BvbnNlPWZ1bmN0aW9uKGEsYyxiKXtpZighMSE9PWIpdGhpcy5fb25FcnJvcigicmVzcG9uc2UgZXJyb3I6ICIrYik7ZWxzZSB0cnl7ITE9PT0KYz90aGlzLl9vbkVycm9yKCIuZGF0YSBlcXVhbCBmYWxzZSIpOiJ1bmRlZmluZWQiIT09dHlwZW9mIGMuc3VjY2VzcyYmITAhPT1jLnN1Y2Nlc3M\/KHRoaXMuX29uRXJyb3IoIi5kYXRhIGVycm9yOiAiK2MuZXJyb3JNZXNzYWdlKSxjPSExKTooYj0hMSwic3RyaW5nIiE9PXR5cGVvZiBjLmRhdGEubnVtYmVyJiYodGhpcy5fb25FcnJvcigiLmRhdGEgaW52YWxpZCBzbXMgbnVtYmVyIiksYj0hMCksInN0cmluZyIhPT10eXBlb2YgYy5kYXRhLm1lc3NhZ2UmJih0aGlzLl9vbkVycm9yKCIubWVzc2FnZSBpbnZhbGlkIHNtcyBtZXNzYWdlIiksYj0hMCksYz1iPyExOntzbXNudW1iZXI6Yy5kYXRhLm51bWJlcixzbXNtZXNzYWdlOmMuZGF0YS5tZXNzYWdlLHNtc2NvZGU6Yy5kYXRhLnNtc0NvZGV9KX1jYXRjaChkKXt0aGlzLl9vbkVycm9yKCIuZGF0YSBleGNlcHRpb246IitkKSxjPSExfXRoaXMuX25vdGlmeU9ic2VydmVyKGEsYyl9O3RoaXMuX2FkZE9ic2VydmVyPWZ1bmN0aW9uKGEpe2lmKCJmdW5jdGlvbiI9PT0KdHlwZW9mIGEpe3ZhciBjPXRoaXMuX3JpZCsrO3RoaXMuX29ic1tjXT1hO3JldHVybiBjfXRoaXMuX29uRXJyb3IoImlzIG5vdCBhIHZhbGlkIGNhbGxiYWNrIGZ1bmN0aW9uIik7cmV0dXJuITF9O3RoaXMuX2FkZENvbW1vblZhbHVlc1RvRGF0YT1mdW5jdGlvbihhLGMsYil7Im9iamVjdCIhPT10eXBlb2YgYiYmKGI9e30pO2IuVVVJRD1hO2Iuc2Vzc2lvbklkPWM7Yi50ZWNobm9sb2d5PSJIVE1MIjtiLnVybD13aW5kb3cubG9jYXRpb24uaHJlZjthPWdldENvb2tpZSgiZ2NsaWQiKT9nZXRDb29raWUoImdjbGlkIik6IiI7bnVsbCE9PWEmJiJ1bmRlZmluZWQiIT09YSYmIiIhPT1hJiYhMSE9PWEmJihiLmdvb2dsZUNsaWNrSWQ9YSk7YT1nZXRHYUNsaWVudElkKCk7bnVsbCE9PWEmJiJ1bmRlZmluZWQiIT09YSYmIiIhPT1hJiYhMSE9PWEmJihiLmdhQ2xpZW50SWQ9YSk7YT0kKCIjdGV4dFNlbmRUb0VtYWlsIikubGVuZ3RoPyQoIiN0ZXh0U2VuZFRvRW1haWwiKS52YWwoKToiIjsiIiE9PQphJiYoYi5zZW5kVG9FbWFpbD1hKTthPSQoIiN0ZXh0U2VuZFRvRW1haWxBREYiKS5sZW5ndGg\/JCgiI3RleHRTZW5kVG9FbWFpbEFERiIpLnZhbCgpOiIiOyIiIT09YSYmKGIuc2VuZFRvRW1haWxBZGY9YSk7YT0kKCdpbnB1dFtkYXRhLWZvcnZhcj0iT1ZFUldSSVRURVJERUFMRVIiXScpLmxlbmd0aD8kKCdpbnB1dFtkYXRhLWZvcnZhcj0iT1ZFUldSSVRURVJERUFMRVIiXScpLnZhbCgpOiIiOyIiIT09YSYmKGIuZGVhbGVyTmFtZT1hKTtsZXQgZD1iLm1ha2UudG9Mb3dlckNhc2UoKTtpZigkKCIjbXVsdGktYWRkcmVzcy1zdWJtaXNzaW9uIikubGVuZ3RoJiYiIiE9PWQmJiJjYXJkZXRhaWwuaHRtbCIhPSQoIiNQQUdFSUQiKS52YWwoKSl7YT0kKCIjbXVsdGktYWRkcmVzcy1zdWJtaXNzaW9uIikuZmluZCgic2VsZWN0Iik7bGV0IGc9ZW1haWxIYW5kbGVyLmdldERlcCgpO2EuZmluZCgib3B0aW9uW2RhdGEtYnJhbmRzXSIpLmVhY2goZnVuY3Rpb24oZSxmKXtlPSQoZikuZGF0YSgiYnJhbmRzIikudG9Mb3dlckNhc2UoKTsKaWYoIiIhPWUmJmUuc3BsaXQoIiwiKS5pbmNsdWRlcyhkKSl7bGV0IGg9ZT0iIixrPWYudGV4dDtzd2l0Y2goZyl7Y2FzZSAiVVNFRCI6ZT0kKGYpLmRhdGEoImVtYWlsdXNlZCIpO2g9JChmKS5kYXRhKCJlbWFpbGFkZnVzZWQiKTticmVhaztjYXNlICJTRVJWSUNFIjplPSQoZikuZGF0YSgiZW1haWxzZXJ2aWNlIik7aD0kKGYpLmRhdGEoImVtYWlsYWRmc2VydmljZSIpO2JyZWFrO2Nhc2UgIlBBUlRTIjplPSQoZikuZGF0YSgiZW1haWxwYXJ0cyIpfHwkKGYpLmRhdGEoImVtYWlsc2VydmljZSIpO2g9JChmKS5kYXRhKCJlbWFpbGFkZnBhcnRzIil8fCQoZikuZGF0YSgiZW1haWxhZGZzZXJ2aWNlIik7YnJlYWs7Y2FzZSAiRklOQU5DRSI6ZT0kKGYpLmRhdGEoImVtYWlsZmluYW5jZSIpO2g9JChmKS5kYXRhKCJlbWFpbGFkZmZpbmFuY2UiKTticmVhaztjYXNlICJORVciOmU9JChmKS5kYXRhKCJlbWFpbCIpLGg9JChmKS5kYXRhKCJlbWFpbGFkZiIpfWlmKCIiIT09ZXx8IiIhPT1oKWIuc2VuZFRvRW1haWw9CmUsYi5zZW5kVG9FbWFpbEFkZj1oLGIuZGVhbGVyTmFtZT1rfX0pfWE9JCgiI0NBTVBBSUdOSUQiKS5sZW5ndGg\/JCgiI0NBTVBBSUdOSUQiKS52YWwoKToiIjsiIiE9PWEmJihiLmNhbXBhaWduSWQ9YSk7Y29uc29sZS5sb2codGhpcy5fbmFtZSsiLmRhdGEiLGIpO3JldHVybiBifTt0aGlzLl9pbml0PWZ1bmN0aW9uKGEsYyxiLGQsZyl7dmFyIGU7aWYoITE9PT0oYT10aGlzLl9idWlsZFF1ZXJ5KHRoaXMuX2FkZENvbW1vblZhbHVlc1RvRGF0YShhLGMsYiksZykpfHwhMT09PShlPXRoaXMuX2FkZE9ic2VydmVyKGQpKSlyZXR1cm4hMTtzZXRUaW1lb3V0KHRoaXMuX2RvUmVxdWVzdC5iaW5kKHRoaXMsYSxlKSl9O3RoaXMuZ2V0U21zTnVtYmVyPWZ1bmN0aW9uKGEsYyxiKXtpZigib2JqZWN0Ij09PXR5cGVvZiB3aW5kb3cuYWN0aXZlVXNlclByb2ZpbGVNbmcpYWN0aXZlVXNlclByb2ZpbGVNbmcucmVnaXN0ZXJDYWxsYmFjayh0aGlzLl9pbml0LmJpbmQodGhpcyx3aW5kb3cuYWN0aXZlVXNlclByb2ZpbGVNbmcudWlkLAp3aW5kb3cuYWN0aXZlVXNlclByb2ZpbGVNbmcuZ2V0U2Vzc2lvbklEKCksYSxjLGIpKTtlbHNlIHJldHVybiB0aGlzLl9vbkVycm9yKCciYWN0aXZlVXNlclByb2ZpbGVNbmciIGlzIG5vdCBhbiBvYmplY3QnKSwhMTtyZXR1cm4hMH19OwovKiogL20vanMvZ2VvTG9jYXRpb24uanMgKiovCnZhciBfX19kMmNfZ2VvTG9jYXRpb25qc19jX29uPSIyMDI1LTA1LTIzIDE3OjEwOjI0IjsndXNlIHN0cmljdCc7dmFyIF9fX2QyY19nZW9Mb2NhdGlvbmpzX2Nfb249IjIwMjUtMDItMjYgMDk6MzA6MTEiOyJ1c2Ugc3RyaWN0IjsKdmFyIGdlb0xvY2F0b3I9ZnVuY3Rpb24oZil7dmFyIGE9dGhpczthLm1hcHNBUElLZXk9bnVsbDthLnVzZUhUTUw1PSEwO2EuZ2VvY29kZUxvY2F0aW9uPSEwO2EuYXR0ZW1wdFBhZ2VOdW09MDthLnRyYWNrTG9jYXRpb25HQT0hMTthLmZvcmNlR2VvbG9jQXR0ZW1wdD0hMTthLnNob3dQb2ludGVyTWVzc2FnZT0hMDthLnRpbWVvdXRzPVtdO2EuYnJvd3Nlcj0iIjthLmlzTW9iaWxlPSIxIj09JCgiI2lzbW9iaWxlIikudmFsKCk7YS5nZW9sb2NTdGF0dXNlcz17T0s6IlNVQ0NFU1MiLFJFRlVTRUQ6IlJFRlVTRUQiLENPT0tJRV9BQ0NFUFRFRDoiUFJFX0FDQ0VQVEVEIixDT09LSUVfUkVGVVNFRDoiUFJFX1JFRlVTRUQiLENBTkNFTEVEOiJDQU5DRUxFRCIsRkFJTDoiRkFJTEVEIn07YS5nZW9sb2NFcnJvcnM9e0lOVkFMSURfUkVTUE9OU0U6IklOVkFMSURfUkVTUE9OU0UiLENPTk5FQ1RJT05fRkFJTEVEOiJDT05ORUNUSU9OX0ZBSUxFRCIsR0VPTE9DX0ZBSUxFRDoiR0VPTE9DX0ZBSUxFRCIsCkdFT0xPQ19SRUZVU0VEOiJHRU9MT0NfUkVGVVNFRCIsR0VPQ09ERV9GQUlMRUQ6IkdFT0NPREVfRkFJTEVEIn07YS5nZW9sb2NSZXN1bHQ9e3Jlc3VsdDowLGdlb2xvY19kYXRlOiIiLGdlb2xvY19zdGF0dXM6YS5nZW9sb2NTdGF0dXNlcy5GQUlMLGdlb2NvZGVfc3RhdHVzOjAsbGF0aXR1ZGU6MCxsb25naXR1ZGU6MCxhY2N1cmFjeTowLHBvc3RhbF9jb2RlOiIiLGdlb2NvZGVfYWRkcmVzczoiIixnZW9jb2RlX2FkZHJlc3Nfc3RyOiIifTthLmdlb2xvY0NhbGxiYWNrPWZ1bmN0aW9uKCl7ZihhLmdlb2xvY1Jlc3VsdCk7Zj1mdW5jdGlvbigpe2NvbnNvbGUubG9nKCJHZW8gY2FsbGJhY2sgYWxyZWFkeSBmaXJlZC4iKX19O2EuX2luaXQ9ZnVuY3Rpb24oKXthLmlzTW9iaWxlJiYoYS5zaG93UG9pbnRlck1lc3NhZ2U9ITEpO2lmKDA8YS5hdHRlbXB0UGFnZU51bSl7dmFyIGI9bnVsbCE9Q29va2llcy5nZXQoImdlb2xvY1BhZ2VWaWV3cyIpP3BhcnNlSW50KENvb2tpZXMuZ2V0KCJnZW9sb2NQYWdlVmlld3MiKSkrCjE6MTtDb29raWVzLnNldCgiZ2VvbG9jUGFnZVZpZXdzIixiPGEuYXR0ZW1wdFBhZ2VOdW0\/YjowLG51bGwsIi8iKTtpZihiPGEuYXR0ZW1wdFBhZ2VOdW0pcmV0dXJuIGEuZ2VvbG9jUmVzdWx0LnJlc3VsdD0wLGEuZ2VvbG9jUmVzdWx0LnN0YXR1cz1hLmdlb2xvY1N0YXR1c2VzLkNBTkNFTEVELGEuZ2VvbG9jQ2FsbGJhY2soKSwhMX1pZighYS5mb3JjZUdlb2xvY0F0dGVtcHQmJkNvb2tpZXMuZ2V0KCJnZW9sb2NQcm9jZXNzZWQiKSlyZXR1cm4gYj1KU09OLnBhcnNlKENvb2tpZXMuZ2V0KCJnZW9sb2NQcm9jZXNzZWQiKSksIjEiPT1iLmFjY2VwdGVkPyhhLmdlb2xvY1Jlc3VsdC5yZXN1bHQ9MSxhLmdlb2xvY1Jlc3VsdC5nZW9sb2NfZGF0ZT1iLmdlb2xvY19kYXRlLGEuZ2VvbG9jUmVzdWx0Lmdlb2xvY19zdGF0dXM9YS5nZW9sb2NTdGF0dXNlcy5DT09LSUVfQUNDRVBURUQsYS5nZW9sb2NSZXN1bHQubGF0aXR1ZGU9Yi5sYXRpdGl1ZGUsYS5nZW9sb2NSZXN1bHQubG9uZ2l0dWRlPQpiLmxvbmdpdHVkZSxhLmdlb2xvY1Jlc3VsdC5nZW9jb2RlX2FkZHJlc3M9Yi5hZGRyZXNzLGEuZ2VvbG9jUmVzdWx0Lmdlb2NvZGVfYWRkcmVzc19zdHI9Yi5hZGRyZXNzX3N0cik6KGEuZ2VvbG9jUmVzdWx0LnJlc3VsdD0wLGEuZ2VvbG9jUmVzdWx0LnN0YXR1cz1hLmdlb2xvY1N0YXR1c2VzLkNPT0tJRV9SRUZVU0VEKSxhLmdlb2xvY0NhbGxiYWNrKCksITE7aWYoImh0dHBzOiIhPWxvY2F0aW9uLnByb3RvY29sKXJldHVybiBhLmdlb2xvY1Jlc3VsdC5yZXN1bHQ9MCxhLmdlb2xvY1Jlc3VsdC5zdGF0dXM9YS5nZW9sb2NTdGF0dXNlcy5DQU5DRUxFRCxhLmdlb2xvY0NhbGxiYWNrKCksITE7aWYobHRfSUU5fHwhbmF2aWdhdG9yLmdlb2xvY2F0aW9uKWEudXNlSFRNTDU9ITE7bmF2aWdhdG9yLmJyb3dzZXI9ZnVuY3Rpb24oKXt2YXIgYz1uYXZpZ2F0b3IudXNlckFnZW50LGQ9Yy5tYXRjaCgvKG9wZXJhfGNocm9tZXxzYWZhcml8ZmlyZWZveHxtc2llfHRyaWRlbnQoPz1cLykpXC8\/XHMqKFxkKykvaSl8fApbXTtpZigvdHJpZGVudC9pLnRlc3QoZFsxXSkpe3ZhciBlPS9cYnJ2WyA6XSsoXGQrKS9nLmV4ZWMoYyl8fFtdO3JldHVybiJJRXhwbG9yZXIgIisoZVsxXXx8IiIpfWlmKCJDaHJvbWUiPT09ZFsxXSYmKGU9Yy5tYXRjaCgvXGJPUFJcLyhcZCspLyksbnVsbCE9ZSkpcmV0dXJuIk9wZXJhICIrZVsxXTtkPWRbMl0\/W2RbMV0sZFsyXV06W25hdmlnYXRvci5hcHBOYW1lLG5hdmlnYXRvci5hcHBWZXJzaW9uLCItPyJdO251bGwhPShlPWMubWF0Y2goL3ZlcnNpb25cLyhcZCspL2kpKSYmZC5zcGxpY2UoMSwxLGVbMV0pO3JldHVybiBkLmpvaW4oIiAiKX0oKTthLmJyb3dzZXI9bmF2aWdhdG9yLmJyb3dzZXI7cmV0dXJuITB9O2EuaGFuZGxlTG9jYXRpb25TdWNjZXNzPWZ1bmN0aW9uKCl7dmFyIGI9IkxhdGl0dWRlOiAiK2EuZ2VvbG9jUmVzdWx0LmxhdGl0dWRlKyI7IExvbmdpdHVkZTogIithLmdlb2xvY1Jlc3VsdC5sb25naXR1ZGU7Mzw9YS5nZW9sb2NSZXN1bHQucG9zdGFsX2NvZGUubGVuZ3RoJiYKKGI9YS5nZW9sb2NSZXN1bHQucG9zdGFsX2NvZGUpO2EudHJhY2tMb2NhdGlvbigiR2VvbG9jYXRpb24iLCJBY2NlcHRlZCIsYik7YS5nZW9sb2NSZXN1bHQuZ2VvbG9jX2RhdGU9KG5ldyBEYXRlKS5nZXRUaW1lKCk7Yj1uZXcgRGF0ZTtiLnNldEhvdXJzKDIzLDU5LDU5LDApO0Nvb2tpZXMuc2V0KCJnZW9sb2NQcm9jZXNzZWQiLEpTT04uc3RyaW5naWZ5KHthY2NlcHRlZDoxLGdlb2xvY19kYXRlOmEuZ2VvbG9jUmVzdWx0Lmdlb2xvY19kYXRlLGxhdGl0dWRlOmEuZ2VvbG9jUmVzdWx0LmxhdGl0dWRlLGxvbmdpdHVkZTphLmdlb2xvY1Jlc3VsdC5sb25naXR1ZGUscG9zdGFsX2NvZGU6YS5nZW9sb2NSZXN1bHQucG9zdGFsX2NvZGUsYWNjdXJhY3k6YS5nZW9sb2NSZXN1bHQuYWNjdXJhY3ksYWRkcmVzczphLmdlb2xvY1Jlc3VsdC5nZW9jb2RlX2FkZHJlc3MsYWRkcmVzc19zdHI6YS5nZW9sb2NSZXN1bHQuZ2VvY29kZV9hZGRyZXNzX3N0cn0pLGIsIi8iKTthLmdlb2xvY0NhbGxiYWNrKCl9OwphLmhhbmRsZUxvY2F0aW9uRXJyb3I9ZnVuY3Rpb24oYixjKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIGN8fG51bGw9PWMpYz0iIjthLmdlb2xvY1Jlc3VsdC5yZXN1bHQ9MDthLmdlb2xvY1Jlc3VsdC5nZW9sb2NfZGF0ZT0obmV3IERhdGUpLmdldFRpbWUoKTthLmdlb2xvY1Jlc3VsdC5nZW9sb2Nfc3RhdHVzPWEuZ2VvbG9jU3RhdHVzZXMuRkFJTDtzd2l0Y2goYil7Y2FzZSBhLmdlb2xvY0Vycm9ycy5JTlZBTElEX1JFU1BPTlNFOmM9Ikdlb2xvYyBlcnJvciBtZXNhZ2U6IEludmFsaWQgcmVzcG9uc2UgZGF0YSI7YnJlYWs7Y2FzZSBhLmdlb2xvY0Vycm9ycy5DT05ORUNUSU9OX0ZBSUxFRDpjPSJHZW9sb2MgZXJyb3IgbWVzYWdlOiBDb25lY3Rpb24gZmFpbGVkIjticmVhaztjYXNlIGEuZ2VvbG9jRXJyb3JzLkdFT0xPQ19SRUZVU0VEOmEuZ2VvbG9jUmVzdWx0Lmdlb2xvY19zdGF0dXM9YS5nZW9sb2NTdGF0dXNlcy5SRUZVU0VEO2JyZWFrO2Nhc2UgYS5nZW9sb2NFcnJvcnMuR0VPTE9DX0ZBSUxFRDpicmVhazsKY2FzZSBhLmdlb2xvY0Vycm9ycy5HRU9DT0RFX0ZBSUxFRDpjPSJHZW9sb2MgZXJyb3IgbWVzYWdlOiBJbnZhbGlkIHJlc3BvbnNlIGRhdGEiO2JyZWFrO2RlZmF1bHQ6Yz0iVW5rbm93biBlcnJvciBvY3VycmVkIn1hLnRyYWNrTG9jYXRpb24oIkdlb2xvY2F0aW9uIiwiRmFpbGVkIixjKTthLmdlb2xvY0NhbGxiYWNrKCl9O2EuZ2V0TG9jYXRpb249ZnVuY3Rpb24oKXthLl9pbml0KCkmJigwPT1hLnVzZUhUTUw1P2EuZ2V0R29vZ2xlU2VydmljZUxvY2F0aW9uKCk6YS5nZXRIVE1MNUxvY2F0aW9uKCkpfTthLmdldEdvb2dsZVNlcnZpY2VMb2NhdGlvbj1mdW5jdGlvbigpe2EuaGFuZGxlTG9jYXRpb25TdWNjZXNzKCk7cmV0dXJuITF9O2EuZ2V0SFRNTDVMb2NhdGlvbj1mdW5jdGlvbigpe2Euc2hvd0dlb2xvY01zZygpO25hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24oZnVuY3Rpb24oYil7YS5oaWRlR2VvbG9jTXNnKCk7YS5jbGVhclNldFRpbWVvdXRzKCk7CmEuZ2VvbG9jUmVzdWx0LnJlc3VsdD0xO2EuZ2VvbG9jUmVzdWx0Lmdlb2xvY19zdGF0dXM9YS5nZW9sb2NTdGF0dXNlcy5PSzthLmdlb2xvY1Jlc3VsdC5sYXRpdHVkZT1iLmNvb3Jkcy5sYXRpdHVkZTthLmdlb2xvY1Jlc3VsdC5sb25naXR1ZGU9Yi5jb29yZHMubG9uZ2l0dWRlO2EuZ2VvbG9jUmVzdWx0LmFjY3VyYWN5PWIuY29vcmRzLmFjY3VyYWN5O2lmKDEhPWEuZ2VvY29kZUxvY2F0aW9uKXJldHVybiBhLmhhbmRsZUxvY2F0aW9uU3VjY2VzcygpLCExO2EubGF0TG9uZ0dlb2NvZGUoYi5jb29yZHMubGF0aXR1ZGUsYi5jb29yZHMubG9uZ2l0dWRlKX0sZnVuY3Rpb24oYil7Y29uc29sZS5sb2coYik7dmFyIGM9Ikdlb2xvYyBlcnJvciBjb2RlOiAiK2IuY29kZSsiLCBnZW9sb2MgZXJyb3IgbWVzYWdlOiAiK2IubWVzc2FnZTthLmhpZGVHZW9sb2NNc2coKTthLmNsZWFyU2V0VGltZW91dHMoKTtDb29raWVzLnNldCgiZ2VvbG9jUHJvY2Vzc2VkIixKU09OLnN0cmluZ2lmeSh7YWNjZXB0ZWQ6MH0pLAoxLCIvIik7dmFyIGQ9YS5nZW9sb2NFcnJvcnMuR0VPTE9DX1JFRlVTRUQ7MSE9cGFyc2VJbnQoYi5jb2RlKSYmKGQ9YS5nZW9sb2NFcnJvcnMuR0VPTE9DX0ZBSUxFRCk7YS5oYW5kbGVMb2NhdGlvbkVycm9yKGQsYyl9LHt0aW1lb3V0OjI1RTN9KX07YS5sYXRMb25nR2VvY29kZT1mdW5jdGlvbihiLGMpe2EuZ2VvbG9jUmVzdWx0Lmdlb2NvZGVfYWRkcmVzcz1iKyJ8IitjO2EuZ2VvbG9jUmVzdWx0Lmdlb2NvZGVfYWRkcmVzc19zdHI9IkxhdGl0dWRlOiAiK2IrIjsgTG9uZ2l0dWRlOiAiK2M7YS5oYW5kbGVMb2NhdGlvblN1Y2Nlc3MoKX07YS50cmFja1Bvc3RhbD1mdW5jdGlvbigpe2lmKCRjb29raWU9Q29va2llcy5nZXQoIkhUTUw1R2VvIikpaWYoJGNvb2tpZT1KU09OLnBhcnNlKCRjb29raWUpLCRjb29raWUucG9zdGFsX2NvZGUpcmV0dXJuO2lmKCJ1bmRlZmluZWQiIT09dHlwZW9mIGEuZ2VvbG9jUmVzdWx0LnBvc3RhbF9jb2RlJiYiIiE9PWEuZ2VvbG9jUmVzdWx0LnBvc3RhbF9jb2RlKXt2YXIgYj0KYS5nZW9sb2NSZXN1bHQucG9zdGFsX2NvZGUrInwiK2EuZ2VvbG9jUmVzdWx0LmFjY3VyYWN5OyJ1bmRlZmluZWQiIT10eXBlb2YgYWN0aXZlVXNlclByb2ZpbGVNbmcmJiJ1bmRlZmluZWQiIT10eXBlb2YgYWN0aXZlVXNlclByb2ZpbGVNbmcubG9nUGFnZVZpZXdFdmVudD8oInVuZGVmaW5lZCIhPT10eXBlb2YgZGVidWcmJmRlYnVnKCJMb2cgRXZlbnQiLGEuZ2VvbG9jUmVzdWx0LnBvc3RhbF9jb2RlLCJIVE1MNUdlby5wb3N0YWwiKSxhY3RpdmVVc2VyUHJvZmlsZU1uZy5sb2dQYWdlVmlld0V2ZW50KGIsIkhUTUw1R2VvLnBvc3RhbCIpKToidW5kZWZpbmVkIiE9PXR5cGVvZiBkZWJ1ZyYmZGVidWcoIiFVTkxPR0dFRCBFVkVOVCEiLGEuZ2VvbG9jUmVzdWx0LnBvc3RhbF9jb2RlLCJIVE1MNUdlby5wb3N0YWwiKTtiPW5ldyBEYXRlO2Iuc2V0SG91cnMoMjMsNTksNTksMCk7Q29va2llcy5zZXQoIkhUTUw1R2VvIixKU09OLnN0cmluZ2lmeSh7cG9zdGFsX2NvZGU6MX0pLGIsIi8iKX19OwphLmdldEFkZHJlc3NDb29yZD1mdW5jdGlvbihiLGMpe3JldHVybiExfTthLnRyYWNrTG9jYXRpb249ZnVuY3Rpb24oYixjLGQpe2lmKCFhLnRyYWNrTG9jYXRpb25HQSlyZXR1cm4hMX07YS5jbGVhclNldFRpbWVvdXRzPWZ1bmN0aW9uKCl7Zm9yKHZhciBiPTA7YjxhLnRpbWVvdXRzLmxlbmd0aDtiKyspY2xlYXJUaW1lb3V0KGEudGltZW91dHNbYl0pO2EudGltZW91dHM9W119O2Euc2hvd0dlb2xvY01zZz1mdW5jdGlvbigpe2lmKCFhLnNob3dQb2ludGVyTWVzc2FnZSlyZXR1cm4hMTthLmNsZWFyU2V0VGltZW91dHMoKTt2YXIgYj1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Z2VvbG9jRmFpbCgpfSwzRTQpO2EudGltZW91dHMucHVzaChiKTtpZigtMTxhLmJyb3dzZXIuaW5kZXhPZigiRmlyZWZveCIpfHwtMTxhLmJyb3dzZXIuaW5kZXhPZigiSUUiKSkkKCIuZ2VvbG9jLW1vZGFsLWJnIikub2ZmKCJjbGljayIpLm9uKCJjbGljayIsZnVuY3Rpb24oKXtnZW9sb2NGYWlsKCk7Y2xlYXJUaW1lb3V0KGIpfSksCiQoIiNnZW9sb2NhdGlvbk1zZyIpLm9mZigiY2xpY2siKS5vbigiY2xpY2siLGZ1bmN0aW9uKCl7Z2VvbG9jRmFpbCgpO2NsZWFyVGltZW91dChiKX0pLCQoIiNnZW9sb2NhdGlvbk1zZ0lFIikub2ZmKCJjbGljayIpLm9uKCJjbGljayIsZnVuY3Rpb24oKXtnZW9sb2NGYWlsKCk7Y2xlYXJUaW1lb3V0KGIpfSk7dmFyIGM9Imdlb2xvY2F0aW9uTXNnIixkPSEwLGU9e3RvcDoiMCIsbGVmdDoiMCJ9O3N3aXRjaCghMCl7Y2FzZSAtMTxhLmJyb3dzZXIuaW5kZXhPZigiSUUiKTplPXtib3R0b206IjBweCIsbGVmdDoiNDMlIn07Yz0iZ2VvbG9jYXRpb25Nc2dJRSI7YnJlYWs7Y2FzZSAtMTxhLmJyb3dzZXIuaW5kZXhPZigiRmlyZWZveCIpOmU9e3RvcDoiOTBweCIsbGVmdDoiNXB4In07JCgiaW1nLmJ1dHRvbl9wb2ludGVyIikuY3NzKCJsZWZ0IiwiNzVweCIpOyQoImltZy5idXR0b25fcG9pbnRlciIpLmNzcygidG9wIiwiMzVweCIpOy0xPT0kKCIjdHh0VXNlckFnZW50IikudmFsKCkuaW5kZXhPZigiV2luZG93cyIpJiYKJCgiaW1nLmJ1dHRvbl9wb2ludGVyIikuY3NzKCJsZWZ0IiwiMTc1cHgiKTticmVhaztjYXNlIC0xPGEuYnJvd3Nlci5pbmRleE9mKCJDaHJvbWUiKTplPXt0b3A6IjY1cHgiLGxlZnQ6IjBweCJ9OyQoImltZy5idXR0b25fcG9pbnRlciIpLmNzcygibGVmdCIsIjIxMHB4Iik7LTE9PSQoIiN0eHRVc2VyQWdlbnQiKS52YWwoKS5pbmRleE9mKCJXaW5kb3dzIikmJihlPXt0b3A6Ijc1cHgiLGxlZnQ6IjUwcHgifSwkKCJpbWcuYnV0dG9uX3BvaW50ZXIiKS5jc3MoImxlZnQiLCIyNDBweCIpKTticmVhaztjYXNlIC0xPGEuYnJvd3Nlci5pbmRleE9mKCJTYWZhcmkiKTplPXt0b3A6IjUxNXB4IixsZWZ0OiIzNSUifTtkPSEwO2JyZWFrO2Nhc2UgLTE8YS5icm93c2VyLmluZGV4T2YoIk9wZXJhIik6ZT17dG9wOiIwIixsZWZ0OiIwIn07ZD0hMTticmVhaztkZWZhdWx0OmU9e3RvcDoiMCIsbGVmdDoiMCJ9LGQ9ITF9ZCYmKCJ1bmRlZmluZWQiIT10eXBlb2YgJCgiLnJldmVhbC1tb2RhbC1iZyIpLnZhbCgpJiYKImJsb2NrIj09JCgiLnJldmVhbC1tb2RhbC1iZyIpLmNzcygiZGlzcGxheSIpJiYkKCIucmV2ZWFsLW1vZGFsLWJnIikuaGlkZSgpLCQoIi5nZW9sb2MtbW9kYWwtYmciKS5zaG93KCksJCgiIyIrYykuY3NzKGUpLCQoIiMiK2MpLnNob3coKSwidW5kZWZpbmVkIj09dHlwZW9mIHNpdGVTZWN0aW9uJiYoc2l0ZVNlY3Rpb249IlVOREVGSU5FRCIpLGEudHJhY2tMb2NhdGlvbigiR2VvbG9jYXRpb24iLCJTZWN0aW9uLSIrc2l0ZVNlY3Rpb24sIiIpKX07YS5oaWRlR2VvbG9jTXNnPWZ1bmN0aW9uKGIpe2lmKCFhLnNob3dQb2ludGVyTWVzc2FnZSlyZXR1cm4hMTtpZigidW5kZWZpbmVkIj09dHlwZW9mIGJ8fG51bGw9PWIpYj0hMTskKCIuZ2VvbG9jLW1vZGFsLWJnIikuaGlkZSgpO2J8fCgkKCIjZ2VvbG9jYXRpb25Nc2ciKS5oaWRlKCksJCgiI2dlb2xvY2F0aW9uTXNnSUUiKS5oaWRlKCkpfTthLmdlb2xvY0ZhaWw9ZnVuY3Rpb24oKXstMTxhLmJyb3dzZXIuaW5kZXhPZigiSUUiKSYmCmxvY2F0aW9uLnJlbG9hZCgpO292ZXJsYXlPbmx5PSEwO2lmKC0xPGEuYnJvd3Nlci5pbmRleE9mKCJGaXJlZm94Iil8fC0xPGEuYnJvd3Nlci5pbmRleE9mKCJJRSIpKW92ZXJsYXlPbmx5PSExO2EuaGlkZUdlb2xvY01zZyhvdmVybGF5T25seSk7cmV0dXJuITF9O2EuZ2V0RGlzdGFuY2U9ZnVuY3Rpb24oYixjLGQpe3JldHVybiBhLmdldERpc3RhbmNlSGF2ZXJzaW5lKGIsYyl9O2EuZ2V0RGlzdGFuY2VIYXZlcnNpbmU9ZnVuY3Rpb24oYixjKXt2YXIgZD0oYy5sYXQtYi5sYXQpKk1hdGguUEkvMTgwLGU9KGMubG9uZy1iLmxvbmcpKk1hdGguUEkvMTgwO2I9TWF0aC5zaW4oZC8yKSpNYXRoLnNpbihkLzIpK01hdGguY29zKGIubGF0Kk1hdGguUEkvMTgwKSpNYXRoLmNvcyhjLmxhdCpNYXRoLlBJLzE4MCkqTWF0aC5zaW4oZS8yKSpNYXRoLnNpbihlLzIpO3JldHVybigxMjc1NjI3NCpNYXRoLmF0YW4yKE1hdGguc3FydChiKSxNYXRoLnNxcnQoMS1iKSkpLnRvRml4ZWQoMil9O2EuZ2V0RGlzdGFuY2VHbWFwcz0KZnVuY3Rpb24oYixjKXtyZXR1cm4gYS5nZXREaXN0YW5jZUhhdmVyc2luZShiLGMpfX07Ci8qKiAvbS9qcy9wcmludFRoaXMuanMgKiovCnZhciBfX19kMmNfcHJpbnRUaGlzanNfY19vbj0iMjAyNS0wNS0yMyAxNzoxMTo0MCI7J3VzZSBzdHJpY3QnO3ZhciBfX19kMmNfcHJpbnRUaGlzanNfY19vbj0iMjAyNC0wNy0zMCAxMDozMDowOCI7InVzZSBzdHJpY3QiOwooZnVuY3Rpb24oYyl7ZnVuY3Rpb24gcihkLGUpe2UmJmQuYXBwZW5kKGUuanF1ZXJ5P2UuY2xvbmUoKTplKX1mdW5jdGlvbiB0KGQsZSxrKXt2YXIgZj1lLmNsb25lKGsuZm9ybVZhbHVlcyk7ay5mb3JtVmFsdWVzJiZ1KGUsZiwic2VsZWN0LCB0ZXh0YXJlYSIpO2sucmVtb3ZlU2NyaXB0cyYmZi5maW5kKCJzY3JpcHQiKS5yZW1vdmUoKTtrLnByaW50Q29udGFpbmVyP2YuYXBwZW5kVG8oZCk6Zi5lYWNoKGZ1bmN0aW9uKCl7Yyh0aGlzKS5jaGlsZHJlbigpLmFwcGVuZFRvKGQpfSl9ZnVuY3Rpb24gdShkLGUsayl7dmFyIGY9ZC5maW5kKGspO2UuZmluZChrKS5lYWNoKGZ1bmN0aW9uKGcscSl7YyhxKS52YWwoZi5lcShnKS52YWwoKSl9KX12YXIgYTtjLmZuLnByaW50VGhpcz1mdW5jdGlvbihkKXthPWMuZXh0ZW5kKHt9LGMuZm4ucHJpbnRUaGlzLmRlZmF1bHRzLGQpO3ZhciBlPXRoaXMgaW5zdGFuY2VvZiBqUXVlcnk\/dGhpczpjKHRoaXMpO2Q9InByaW50VGhpcy0iKyhuZXcgRGF0ZSkuZ2V0VGltZSgpOwppZih3aW5kb3cubG9jYXRpb24uaG9zdG5hbWUhPT1kb2N1bWVudC5kb21haW4mJm5hdmlnYXRvci51c2VyQWdlbnQubWF0Y2goL21zaWUvaSkpe3ZhciBrPSdqYXZhc2NyaXB0OmRvY3VtZW50LndyaXRlKCI8aGVhZD48c2NyaXB0PmRvY3VtZW50LmRvbWFpbj1cXCInK2RvY3VtZW50LmRvbWFpbisnXFwiO1x4M2Mvc2NyaXB0PjwvaGVhZD48Ym9keT48L2JvZHk+IiknLGY9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaWZyYW1lIik7Zi5uYW1lPSJwcmludElmcmFtZSI7Zi5pZD1kO2YuY2xhc3NOYW1lPSJNU0lFIjtkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGYpO2Yuc3JjPWt9ZWxzZSBjKCI8aWZyYW1lIGlkPSciK2QrIicgbmFtZT0ncHJpbnRJZnJhbWUnIC8+IikuYXBwZW5kVG8oImJvZHkiKTt2YXIgZz1jKCIjIitkKTthLmRlYnVnfHxnLmNzcyh7cG9zaXRpb246ImFic29sdXRlIix3aWR0aDoiMHB4IixoZWlnaHQ6IjBweCIsbGVmdDoiLTYwMHB4Iix0b3A6Ii02MDBweCJ9KTsKc2V0VGltZW91dChmdW5jdGlvbigpe2Z1bmN0aW9uIHEoYixwKXtiPWIuZ2V0KDApO2I9Yi5jb250ZW50V2luZG93fHxiLmNvbnRlbnREb2N1bWVudHx8YjtiPWIuZG9jdW1lbnR8fGIuY29udGVudERvY3VtZW50fHxiO2Iub3BlbigpO2Iud3JpdGUocCk7Yi5jbG9zZSgpfWEuZG9jdHlwZVN0cmluZyYmcShnLGEuZG9jdHlwZVN0cmluZyk7dmFyIG09Zy5jb250ZW50cygpLGw9bS5maW5kKCJoZWFkIiksbj1tLmZpbmQoImJvZHkiKSxoPWMoImJhc2UiKTtoPSEwPT09YS5iYXNlJiYwPGgubGVuZ3RoP2guYXR0cigiaHJlZiIpOiJzdHJpbmciPT09dHlwZW9mIGEuYmFzZT9hLmJhc2U6ZG9jdW1lbnQubG9jYXRpb24ucHJvdG9jb2wrIi8vIitkb2N1bWVudC5sb2NhdGlvbi5ob3N0O2wuYXBwZW5kKCc8YmFzZSBocmVmPSInK2grJyI+Jyk7YS5pbXBvcnRDU1MmJmMoImxpbmtbcmVsPXN0eWxlc2hlZXRdIikuZWFjaChmdW5jdGlvbigpe3ZhciBiPWModGhpcykuYXR0cigiaHJlZiIpO2lmKGIpe3ZhciBwPQpjKHRoaXMpLmF0dHIoIm1lZGlhIil8fCJhbGwiO2wuYXBwZW5kKCI8bGluayB0eXBlPSd0ZXh0L2NzcycgcmVsPSdzdHlsZXNoZWV0JyBocmVmPSciK2IrIicgbWVkaWE9JyIrcCsiJy8+Iil9fSk7YS5pbXBvcnRTdHlsZSYmYygic3R5bGUiKS5lYWNoKGZ1bmN0aW9uKCl7bC5hcHBlbmQodGhpcy5vdXRlckhUTUwpfSk7YS5wYWdlVGl0bGUmJmwuYXBwZW5kKCI8dGl0bGU+IithLnBhZ2VUaXRsZSsiPC90aXRsZT4iKTthLmxvYWRDU1MmJihBcnJheS5pc0FycmF5KGEubG9hZENTUyk\/alF1ZXJ5LmVhY2goYS5sb2FkQ1NTLGZ1bmN0aW9uKGIscCl7bC5hcHBlbmQoIjxsaW5rIHR5cGU9J3RleHQvY3NzJyByZWw9J3N0eWxlc2hlZXQnIGhyZWY9JyIrdGhpcysiJy8+Iil9KTpsLmFwcGVuZCgiPGxpbmsgdHlwZT0ndGV4dC9jc3MnIHJlbD0nc3R5bGVzaGVldCcgaHJlZj0nIithLmxvYWRDU1MrIicvPiIpKTtpZihoPWEuY29weVRhZ0NsYXNzZXMpaD0hMD09PWg\/ImJoIjpoLC0xIT09aC5pbmRleE9mKCJiIikmJgpuLmFkZENsYXNzKGMoImJvZHkiKVswXS5jbGFzc05hbWUpLC0xIT09aC5pbmRleE9mKCJoIikmJm0uZmluZCgiaHRtbCIpLmFkZENsYXNzKGMoImh0bWwiKVswXS5jbGFzc05hbWUpO3IobixhLmhlYWRlcik7aWYoYS5jYW52YXMpe3ZhciB2PTA7ZS5maW5kKCJjYW52YXMiKS5hZGRCYWNrKCJjYW52YXMiKS5lYWNoKGZ1bmN0aW9uKCl7Yyh0aGlzKS5hdHRyKCJkYXRhLXByaW50dGhpcyIsdisrKX0pfXQobixlLGEpO2EuY2FudmFzJiZuLmZpbmQoImNhbnZhcyIpLmVhY2goZnVuY3Rpb24oKXt2YXIgYj1jKHRoaXMpLmRhdGEoInByaW50dGhpcyIpO2I9YygnW2RhdGEtcHJpbnR0aGlzPSInK2IrJyJdJyk7dGhpcy5nZXRDb250ZXh0KCIyZCIpLmRyYXdJbWFnZShiWzBdLDAsMCk7Yi5yZW1vdmVEYXRhKCJwcmludHRoaXMiKX0pO2EucmVtb3ZlSW5saW5lJiYoaXNGdW5jdGlvbihjLnJlbW92ZUF0dHIpP20uZmluZCgiYm9keSAqIikucmVtb3ZlQXR0cigic3R5bGUiKTptLmZpbmQoImJvZHkgKiIpLmF0dHIoInN0eWxlIiwKIiIpKTtyKG4sYS5mb290ZXIpO3NldFRpbWVvdXQoZnVuY3Rpb24oKXtnLmhhc0NsYXNzKCJNU0lFIik\/KHdpbmRvdy5mcmFtZXMucHJpbnRJZnJhbWUudHJpZ2dlcigiZm9jdXMiKSxsLmFwcGVuZCgiPHNjcmlwdD4gIHdpbmRvdy5wcmludCgpOyBceDNjL3NjcmlwdD4iKSk6ZG9jdW1lbnQucXVlcnlDb21tYW5kU3VwcG9ydGVkKCJwcmludCIpP2dbMF0uY29udGVudFdpbmRvdy5kb2N1bWVudC5leGVjQ29tbWFuZCgicHJpbnQiLCExLG51bGwpOihnWzBdLmNvbnRlbnRXaW5kb3cudHJpZ2dlcigiZm9jdXMiKSxnWzBdLmNvbnRlbnRXaW5kb3cucHJpbnQoKSk7YS5kZWJ1Z3x8c2V0VGltZW91dChmdW5jdGlvbigpe2cucmVtb3ZlKCl9LDFFMyl9LGEucHJpbnREZWxheSl9LDMzMyl9O2MuZm4ucHJpbnRUaGlzLmRlZmF1bHRzPXtkZWJ1ZzohMSxpbXBvcnRDU1M6ITAsaW1wb3J0U3R5bGU6ITEscHJpbnRDb250YWluZXI6ITAsbG9hZENTUzoiIixwYWdlVGl0bGU6IiIscmVtb3ZlSW5saW5lOiExLApwcmludERlbGF5OjMzMyxoZWFkZXI6bnVsbCxmb290ZXI6bnVsbCxmb3JtVmFsdWVzOiEwLGNhbnZhczohMSxiYXNlOiExLGRvY3R5cGVTdHJpbmc6IjwhRE9DVFlQRSBodG1sPiIscmVtb3ZlU2NyaXB0czohMSxjb3B5VGFnQ2xhc3NlczohMX19KShqUXVlcnkpOwovKiogL20vanMvcG9wdXAuanMgKiovCnZhciBfX19kMmNfcG9wdXBqc19jX29uPSIyMDI1LTA1LTIzIDE3OjExOjI3IjsndXNlIHN0cmljdCc7dmFyIF9fX2QyY19wb3B1cGpzX2Nfb249IjIwMjQtMDMtMTUgMTA6MzA6MTAiOyJ1c2Ugc3RyaWN0Ijt2YXIgYWN0aXZhdGVkUG9wdXBEaXZJRD0iIixtYWluUG9wdXBEaXZJRD0iIixwb3B1cE9uQWZ0ZXJTdWJtaXRDbG9zZT0hMSxpc1BvcHVwSW5pdGlhbGl6ZWQ9ITE7CmZ1bmN0aW9uIHNob3dQb3B1cFdpZGdldChhLGI9ITApe3ZhciBjPSExPT09Yj8hMTohMDtpZihpc1Ntc1RleHRVc0Zvcm0oKSYmYilyZXR1cm4gc2hvd1Ntc1RleHRVc0Zvcm0oYyksITE7aWYoITE9PT1pc1BvcHVwSW5pdGlhbGl6ZWQpcmV0dXJuITE7YT1hP2E6e307c2V0dGluZ3M9e3Nob3dNYWluUG9wdXA6ITEsZG9Ob3RSZWRpcmVjdDohMSxldmVudFR5cGU6ImNsaWNrIixkZWxheTohMX07JC5leHRlbmQoc2V0dGluZ3MsYSk7YT1zZXR0aW5ncy5kb05vdFJlZGlyZWN0O2I9c2V0dGluZ3MuZXZlbnRUeXBlO2M9c2V0dGluZ3MuZGVsYXk7dmFyIGQ9MDxhY3RpdmF0ZWRQb3B1cERpdklELmxlbmd0aD9hY3RpdmF0ZWRQb3B1cERpdklEOiExOyEwPT09c2V0dGluZ3Muc2hvd01haW5Qb3B1cCYmMDxtYWluUG9wdXBEaXZJRC5sZW5ndGgmJihkPW1haW5Qb3B1cERpdklEKTtpZihkJiYwPGQubGVuZ3RoKSQoIiMiK2QpLnBvcHVwaXplKCkuc2V0VHJpZ2dlcihiKS5vcGVuKGMpO2Vsc2UgaWYoImZ1bmN0aW9uIj09PQp0eXBlb2Ygc2hvd1BvcHVwV2lkZ2V0T0xEKXNob3dQb3B1cFdpZGdldE9MRCghMSk7ZWxzZSBpZighMT09PWEpMDwkKCIjcHJvbW9TZWN0aW9ubmFibGVkIikubGVuZ3RoJiYiMCIhPSQoIiNwcm9tb1NlY3Rpb25uYWJsZWQiKS52YWwoKT93aW5kb3cubG9jYXRpb24uaHJlZj0iRU5HTElTSCI9PSQoIiNhY3RpdmVzaXRlbGFuZ3VhZ2UiKS52YWwoKT8iL291ci1wcm9tb3Rpb25zLmh0bWwiOiIvcHJvbW90aW9ucy5odG1sIjp3aW5kb3cubG9jYXRpb24uaHJlZj0iLyI7ZWxzZSByZXR1cm4hMX1mdW5jdGlvbiBwb3B1cFBvc3RNZXNzYWdlT25BdXRvYXViYWluZSgpe3NldFRpbWVvdXQoZnVuY3Rpb24oKXskLnBvc3RNZXNzYWdlKCJjbG9zZVBvcHVwIiwiKiIscGFyZW50KX0sMUUzKX0KZnVuY3Rpb24gcG9wdXBEZWZhdWx0T25BZnRlckluaXRpYWxpemUoYSxiLGMsZCxlLGYsZyl7aXNQb3B1cEluaXRpYWxpemVkPSEwO2MmJihtYWluUG9wdXBEaXZJRD1mK2QpO3JldHVybiBiPT1hJiZjfHwicmVzZXQiPT1iJiZjPyhhY3RpdmF0ZWRQb3B1cERpdklEPWYrZCwidXNlZGNhcnMuaHRtbCIhPWV8fGc\/Im5ld2NhcnMuaHRtbCIhPWV8fGc\/ITA6KGNvbnNvbGUubG9nKCJwb3B1cC5qcyBwb3B1cERlZmF1bHRPbkFmdGVySW5pdGlhbGl6ZSAtIG5ld2NhcnMgcmV0dXJucyBmYWxzZS4gUG9wdXAgbWF5IGJlIGNhbmNlbGxlZC4iKSwhMSk6KHRoaXMuY29uc29sZSYmInVuZGVmaW5lZCIhPT10eXBlb2YgY29uc29sZS5sb2cmJmNvbnNvbGUubG9nKCJwb3B1cC5qcyBwb3B1cERlZmF1bHRPbkFmdGVySW5pdGlhbGl6ZSAtIHVzZWRjYXJzICByZXR1cm5zIGZhbHNlLiBQb3B1cCBtYXkgYmUgY2FuY2VsbGVkLiIpLCExKSk6ITF9CmZ1bmN0aW9uIHBvcHVwY2xvc2VQREYoYSxiKXskKCIjcG9wdXBkaXZwZGYiK2EpLmxlbmd0aCYmJCgiI3BvcHVwZGl2cGRmIithKS5jc3MoImRpc3BsYXkiLCJub25lIik7JCgiI3BvcHVwZGlmcGRmbW9kYWwiKS5sZW5ndGgmJiQoIiNwb3B1cGRpZnBkZm1vZGFsIikucmVtb3ZlKCk7JCgiI3BvcHVwZGl2cGRmaWZyYW1lIikubGVuZ3RoJiYkKCIjcG9wdXBkaXZwZGZpZnJhbWUiKS5yZW1vdmUoKTtiJiZwb3B1cFBvc3RNZXNzYWdlT25BdXRvYXViYWluZSgpfWZ1bmN0aW9uIHByaW50UERGSUZyYW1lKCl7d2luZG93LmZyYW1lcy5wb3B1cGRpdnBkZmlmcmFtZS5wcmludE1lKCl9ZnVuY3Rpb24gcG9wdXBUcmltKGEpe3JldHVybiBhLnJlcGxhY2UoL15ccyt8XHMrJC9nbSwiIil9CmZ1bmN0aW9uIHNob3dQb3B1cFdpZGdldEFkZFZlaGljbGUoYSl7JCgnaW5wdXRbbmFtZT0ic2VhcmNoZWR2ZWhpY2xlIl0nKS5lYWNoKGZ1bmN0aW9uKCl7JCh0aGlzKS52YWwoYSl9KTtzaG93UG9wdXBXaWRnZXQoKX1mdW5jdGlvbiBzaG93U3BlY2lhbFNjaGVkdWxlT25sb2FkKCl7dmFyIGE9JCgiI3NwZWNpYWxTY2hlZHVsZSIpOzA8YS5sZW5ndGgmJmEucG9wdXBpemUoe3Nob3dvbmxvYWQ6ITAsY29va2llTmFtZToic3BTY2hlZHVsZURpc3BsYXllZCIsY29va2llQ3JlYXRlOiJvbk9wZW4iLGNsb3NlQnV0dG9uOiEwfSl9ZnVuY3Rpb24gc2hvd1NwZWNpYWxTY2hlZHVsZSgpeyQoIiNzcGVjaWFsU2NoZWR1bGUiKS5wb3B1cGl6ZSgpLnNldFRyaWdnZXIoImNsaWNrIikub3BlbigpfWZ1bmN0aW9uIHNob3dUcmFkZUJvb3N0UG9wdXAoKXskKCIjVHJhZGVJbkJhclBvcHVwQ29udGFpbmVyIikucG9wdXBpemUoKS5zZXRUcmlnZ2VyKCJjbGljayIpLm9wZW4oKX0KZnVuY3Rpb24gaXNTbXNUZXh0VXNGb3JtKCl7bGV0IGE9WyJuZXdjYXJkZXRhaWwuaHRtbCIsIm5ld2NhcnMuaHRtbCJdLGI9WyJjYXJkZXRhaWwuaHRtbCIsInVzZWRjYXJzLmh0bWwiXTtyZXR1cm4iMSI9PSQoIiNEaXNjb3VudFBvcHVwTmV3UmViYXRlU2hvd1RleHRVcyIpLnZhbCgpJiZhLmluY2x1ZGVzKCQoIiNQQUdFSUQiKS52YWwoKSl8fCIxIj09JCgiI0Rpc2NvdW50UG9wdXBVc2VkUmViYXRlU2hvd1RleHRVcyIpLnZhbCgpJiZiLmluY2x1ZGVzKCQoIiNQQUdFSUQiKS52YWwoKSk\/ITA6ITF9ZnVuY3Rpb24gc2hvd1Ntc1RleHRVc0Zvcm0oYT0hMCl7JCgiI2lzTW9iaWxlIikubGVuZ3RoJiYiMSI9PSQoIiNpc01vYmlsZSIpLnZhbCgpJiYhMSE9PWE\/ZGVhbGVyTGluZVNtcygpOmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNzbGlkZWl0ICNvcGVuLWl0ZW0iKS5jaGVja2VkPSEwfTsKLyoqIC9tL2pzL2NvbnRhY3RQb3B1cC5qcyAqKi8KdmFyIF9fX2QyY19jb250YWN0UG9wdXBqc19jX29uPSIyMDI2LTAxLTEyIDEwOjEzOjQ2IjsndXNlIHN0cmljdCc7dmFyIGNvbnRhY3RQb3B1cD17cG9wdXA6JCgiI2NvbnRhY3Rwb3B1cCIpLG9wdGlvbnM6e3R5cGU6IiJ9LHNldENvbmZpZzpmdW5jdGlvbihhKXtjb250YWN0UG9wdXAub3B0aW9ucz0kLmV4dGVuZCh7fSxjb250YWN0UG9wdXAub3B0aW9ucyxhKTtyZXR1cm4gY29udGFjdFBvcHVwfSxpbml0OmZ1bmN0aW9uKCl7Y29udGFjdFBvcHVwLnNldENvbmZpZyh7dHlwZTpzZWxmLnNldHRpbmdzLmZvcm0udHlwZX0pO2NvbnRhY3RQb3B1cC5wb3B1cC5wb3B1cGl6ZSh7b25CZWZvcmVTZW5kTWFpbDpjb250YWN0UG9wdXAub25CZWZvcmVTZW5kTWFpbH0pLm9wZW4oKTtyZXR1cm4gY29udGFjdFBvcHVwfSxvbkJlZm9yZVNlbmRNYWlsOmZ1bmN0aW9uKGEpe2NvbnRhY3RQb3B1cC5zZXRFbWFpbEhhbmRsZXJGcm9tQWRkcmVzc2VzKCk7ZW1haWxIYW5kbGVyLmNvbmRpdGlvbj1jb250YWN0UG9wdXAuZ2V0Q29uZGl0aW9uKCk7ZW1haWxIYW5kbGVyLmRlcGFydG1lbnQ9Y29udGFjdFBvcHVwLmdldFR5cGUoKS50b1VwcGVyQ2FzZSgpOwoiQk5QIj09ZW1haWxIYW5kbGVyLmRlcGFydG1lbnQmJihlbWFpbEhhbmRsZXIuZGVwYXJ0bWVudD0iTkVXIik7ZW1haWxIYW5kbGVyLnNraXBHZXREZXA9ITA7ZW1haWxIYW5kbGVyLmJvZHk9ZW1haWxIYW5kbGVyLmJvZHkucmVwbGFjZSgieyROQU1FfSIsZW1haWxIYW5kbGVyLnVzZXJGaXJzdE5hbWUrIiAiK2VtYWlsSGFuZGxlci51c2VyTGFzdE5hbWUpfSxnZXRDb25kaXRpb246ZnVuY3Rpb24oKXtzd2l0Y2goY29udGFjdFBvcHVwLmdldFR5cGUoKSl7Y2FzZSAiYm5wIjpjYXNlICJuZXciOmNhc2UgIm1hbnVmYWN0dXJlciI6cmV0dXJuIm5ldyI7ZGVmYXVsdDpyZXR1cm4idXNlZCJ9fSxnZXRUeXBlOmZ1bmN0aW9uKCl7cmV0dXJuIGNvbnRhY3RQb3B1cC5vcHRpb25zLnR5cGV9LHNldEVtYWlsSGFuZGxlckZyb21BZGRyZXNzZXM6ZnVuY3Rpb24oKXt2YXIgYT1jb250YWN0UG9wdXAuZ2V0VHlwZSgpO3RyeXt2YXIgYj1jb250YWN0UG9wdXAuZ2V0RW1haWxzKGEpOyIiPT09Yi5zZW5kVG8mJgoiIj09PWIuc2VuZFRvQURGJiYoYj1jb250YWN0UG9wdXAuZ2V0RW1haWxzKCJ1c2VkIikpO3ZhciBjPWIuc2VuZFRvLGQ9Yi5zZW5kVG9BREY7IiI9PT1jJiYiIj09PWQmJmNvbnNvbGUubG9nKCJXYXJuaW5nOiBib3RoIGVtYWlsIGFuZCBBREYgYWRkcmVzc2VzIGFyZSBlbXB0eSEiKTtpZigkKCIjY3VzdG9tRm9ybV9vcmlnaW5hbHNlbmR0byIpLmxlbmd0aCYmIk90aGVyIj09JCgiI2N1c3RvbUZvcm1fb3JpZ2luYWxzZW5kdG8iKS52YWwoKSl7dmFyIGU9JCgiI2N1c3RvbUZvcm1fc2VuZHRvIikudmFsKCksZj0kKCIjY3VzdG9tRm9ybV9zZW5kdG9BREYiKS52YWwoKTtpZigiIiE9PWV8fCIiIT09ZiljPWUsZD1mfWVtYWlsSGFuZGxlci5zZW5kVG89YztlbWFpbEhhbmRsZXIuc2VuZFRvQURGRm9ybWF0PWR9Y2F0Y2goZyl7Y29uc29sZS5sb2coZyl9cmV0dXJuIGNvbnRhY3RQb3B1cH0sZ2V0RW1haWxzOmZ1bmN0aW9uKGEpe3ZhciBiPSQoIiNoaWRkZW5Db250YWN0cG9wdXAiKTsKImJucCI9PWEmJihhPSJuZXciKTt2YXIgYz1iLmZpbmQoIiNlbWFpbF8iK2EpLnZhbCgpO2E9Yi5maW5kKCIjZW1haWxBREZfIithKS52YWwoKTtyZXR1cm57c2VuZFRvOmMsc2VuZFRvQURGOmF9fX0saW5pdENvbnRhY3Rwb3B1cD1mdW5jdGlvbihhKXthLnByZXZlbnREZWZhdWx0KCk7Y29udGFjdFBvcHVwLmluaXQoKX0sY29udGFjdFBvcHVwU3VibWl0PWZ1bmN0aW9uKCl7JCgiI2NvbnRhY3Rwb3B1cCIpLnBvcHVwaXplKCkuc3VibWl0KCl9LGNvbnRhY3RQb3B1cENsb3NlPWZ1bmN0aW9uKCl7JCgiI2NvbnRhY3Rwb3B1cCIpLnBvcHVwaXplKCkuY2xvc2UoKX07Ci8qKiAvbS9qcy9uZWJDYWwvbmViRGF0ZUZuLmpzICoqLwp2YXIgX19fZDJjX25lYkRhdGVGbmpzX2Nfb249IjIwMjUtMDUtMjMgMTc6MDQ6MjQiOyd1c2Ugc3RyaWN0Jzt2YXIgX19fZDJjX25lYkRhdGVGbmpzX2Nfb249IjIwMjQtMDEtMzEgMTQ6MzE6NTciOyJ1c2Ugc3RyaWN0IjtfX19kMmNfbmViRGF0ZUZuanNfY19vbj0iMjAyMy0wMS0xMiAxMTozMjoyMyI7InVzZSBzdHJpY3QiO19fX2QyY19uZWJEYXRlRm5qc19jX29uPSIyMDIzLTAxLTEyIDEwOjQyOjE2IjsidXNlIHN0cmljdCI7X19fZDJjX25lYkRhdGVGbmpzX2Nfb249IjIwMjEtMTItMTUgMTI6Mzg6MzkiOyJ1c2Ugc3RyaWN0Ijtjb25zdCBuZWJEYXRlRm49e307CiQoImJvZHkiKS5oYXNDbGFzcygiRlJFTkNIIik\/JC5uZWJMYW5nPXttb250aE5hbWVzOiJKYW52aWVyIEYmZWFjdXRlO3ZyaWVyIE1hcnMgQXZyaWwgTWFpIEp1aW4gSnVpbGxldCBBbyZ1Y2lyYzt0IFNlcHRlbWJyZSBPY3RvYnJlIE5vdmVtYnJlIEQmZWFjdXRlO2NlbWJyZSIuc3BsaXQoIiAiKSxtb250aE5hbWVzU2hvcnQ6IkphbnYuIEYmZWFjdXRlO3ZyLiBNYXJzIEF2ci4gTWFpIEp1aW4gSnVpbC4gQW8mdWNpcmM7dCBTZXB0LiBPY3QuIE5vdi4gRCZlYWN1dGU7Yy4iLnNwbGl0KCIgIiksZGF5TmFtZXM6IkRpbWFuY2hlIEx1bmRpIE1hcmRpIE1lcmNyZWRpIEpldWRpIFZlbmRyZWRpIFNhbWVkaSIuc3BsaXQoIiAiKSxkYXlOYW1lc1Nob3J0OiJEaW0gTHVuIE1hciBNZXIgSmV1IFZlbiBTYW0iLnNwbGl0KCIgIiksZGF5TmFtZXNNaW46IkRpIEx1IE1hIE1lIEplIFZlIFNhIi5zcGxpdCgiICIpLHdlZWtIZWFkZXI6IlNtIixkYXRlRm9ybWF0OiJ5LU0tZCIsZmlyc3REYXk6MSwKaXNSVEw6ITEsc2hvd01vbnRoQWZ0ZXJZZWFyOiExLHllYXJTdWZmaXg6IiIsaW52YWxpZERhdGVGb3JtYXQ6ImludmFsaWRfZGF0ZSJ9OiQubmViTGFuZz17bW9udGhOYW1lczoiSmFudWFyeSBGZWJydWFyeSBNYXJjaCBBcHJpbCBNYXkgSnVuZSBKdWx5IEF1Z3VzdCBTZXB0ZW1iZXIgT2N0b2JlciBOb3ZlbWJlciBEZWNlbWJlciIuc3BsaXQoIiAiKSxtb250aE5hbWVzU2hvcnQ6Ikphbi4gRmViLiBNYXIuIEFwci4gTWF5IEp1bi4gSnVsLiBBdWcuIFNlcHQuIE9jdC4gTm92LiBEZWMuIi5zcGxpdCgiICIpLGRheU5hbWVzOiJTdW5kYXkgTW9uZGF5IFR1ZXNkYXkgV2VkbmVzZGF5IFRodXJzZGF5IEZyaWRheSBTYXR1cmRheSIuc3BsaXQoIiAiKSxkYXlOYW1lc1Nob3J0OiJTdW4gTW9uIFR1ZSBXZWQgVGh1IEZyaSBTYXQiLnNwbGl0KCIgIiksZGF5TmFtZXNNaW46IlN1IE1vIFR1IFdlIFRoIEZyIFNhIi5zcGxpdCgiICIpLHdlZWtIZWFkZXI6IlNtIixkYXRlRm9ybWF0OiJ5LU0tZCIsCmZpcnN0RGF5OjEsaXNSVEw6ITEsc2hvd01vbnRoQWZ0ZXJZZWFyOiExLHllYXJTdWZmaXg6IiIsaW52YWxpZERhdGVGb3JtYXQ6ImludmFsaWRfZGF0ZSJ9O0RhdGUuTFo9ZnVuY3Rpb24oYSl7cmV0dXJuKDA+YXx8OTxhPyIiOiIwIikrYX07bmViRGF0ZUZuLkxaPWZ1bmN0aW9uKGEpe3JldHVybigwPmF8fDk8YT8iIjoiMCIpK2F9O0RhdGUucHJlZmVyQW1lcmljYW5Gb3JtYXQ9ITA7bmViRGF0ZUZuLmNsZWFyVGltZT1mdW5jdGlvbihhKXthIGluc3RhbmNlb2YgRGF0ZSYmKGEuc2V0SG91cnMoMCksYS5zZXRNaW51dGVzKDApLGEuc2V0U2Vjb25kcygwKSxhLnNldE1pbGxpc2Vjb25kcygwKSk7cmV0dXJuIGF9OwpEYXRlLnByb3RvdHlwZS50b015c3FsRm9ybWF0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0RnVsbFllYXIoKSsiLSIrRGF0ZS5MWigxK3RoaXMuZ2V0TW9udGgoKSkrIi0iK0RhdGUuTFoodGhpcy5nZXREYXRlKCkpKyIgIitEYXRlLkxaKHRoaXMuZ2V0SG91cnMoKSkrIjoiK0RhdGUuTFoodGhpcy5nZXRNaW51dGVzKCkpKyI6IitEYXRlLkxaKHRoaXMuZ2V0U2Vjb25kcygpKX07RGF0ZS5wcm90b3R5cGUuaXNMZWFwWWVhcj1mdW5jdGlvbigpe3JldHVybiAyOT09KG5ldyBEYXRlKHRoaXMuZ2V0RnVsbFllYXIoKSwxLDI5KSkuZ2V0RGF0ZSgpfTtEYXRlLnByb3RvdHlwZS5nZXRMYXN0RGF5T2ZNb250aENhbD1mdW5jdGlvbigpe3JldHVybihuZXcgRGF0ZSh0aGlzLmdldEZ1bGxZZWFyKCksdGhpcy5nZXRNb250aCgpKzEsMCkpLmdldERhdGUoKX07RGF0ZS5wcm90b3R5cGUuc2V0RGF5PWZ1bmN0aW9uKGEpe3RoaXMuc2V0RGF0ZShhKTtyZXR1cm4gdGhpc307CkRhdGUucHJvdG90eXBlLnNldE1vbj1mdW5jdGlvbihhKXt0aGlzLnNldE1vbnRoKGEpO3JldHVybiB0aGlzfTtEYXRlLnByb3RvdHlwZS5zZXRZZWFyPWZ1bmN0aW9uKGEpe3RoaXMuc2V0RnVsbFllYXIoYSk7cmV0dXJuIHRoaXN9O0RhdGUucHJvdG90eXBlLmFkZERheT1mdW5jdGlvbihhKXt0aGlzLnNldERhdGUodGhpcy5nZXREYXRlKCkrYSk7cmV0dXJuIHRoaXN9O0RhdGUucHJvdG90eXBlLmFkZE1vbj1mdW5jdGlvbihhKXt0aGlzLnNldE1vbnRoKHRoaXMuZ2V0TW9udGgoKSthKTtyZXR1cm4gdGhpc307RGF0ZS5wcm90b3R5cGUuYWRkWWVhcj1mdW5jdGlvbihhKXt0aGlzLnNldEZ1bGxZZWFyKHRoaXMuZ2V0RnVsbFllYXIoKSthKTtyZXR1cm4gdGhpc307RGF0ZS5wYXJzZURhdGVUaW1lPWZ1bmN0aW9uKGEpe2E9YS5zcGxpdCgvWy0gOl0vKTtyZXR1cm4gbmV3IERhdGUoYVswXSxhWzFdLTEsYVsyXSxhWzNdLGFbNF0sYVs1XSl9OwpuZWJEYXRlRm4ucGFyc2VTdHJpbmc9ZnVuY3Rpb24oYSxlKXtpZigidW5kZWZpbmVkIj09PXR5cGVvZiBlfHxudWxsPT09ZXx8IiI9PT1lKXtlPVsiTS9kL3kiLCJNLWQteSIsIk0uZC55IiwiTS9kIiwiTS1kIl07dmFyIGM9WyJkL00veSIsImQtTS15IiwiZC5NLnkiLCJkL00iLCJkLU0iXTtlPVsieS1NLWQ7TU1NIGQsIHk7TU1NIGQseTt5LU1NTS1kO2QtTU1NLXk7TU1NIGQ7TU1NLWQ7ZC1NTU0iLnNwbGl0KCI7IiksRGF0ZS5wcmVmZXJBbWVyaWNhbkZvcm1hdD9lOmMsRGF0ZS5wcmVmZXJBbWVyaWNhbkZvcm1hdD9jOmVdO2ZvcihjPTA7YzxlLmxlbmd0aDtjKyspZm9yKHZhciBoPWVbY10saz0wO2s8aC5sZW5ndGg7aysrKXt2YXIgbj1uZWJEYXRlRm4ucGFyc2VTdHJpbmcoYSxoW2tdKTtpZihudWxsIT09bilyZXR1cm4gbn1yZXR1cm4gbnVsbH10aGlzLmlzSW50ZWdlcj1mdW5jdGlvbih1KXtmb3IodmFyIHE9MDtxPHUubGVuZ3RoO3ErKylpZigtMT09IjEyMzQ1Njc4OTAiLmluZGV4T2YodS5jaGFyQXQocSkpKXJldHVybiExOwpyZXR1cm4hMH07dGhpcy5nZXRJbnQ9ZnVuY3Rpb24odSxxLHksdyl7Zm9yKDt3Pj15O3ctLSl7dmFyIHg9dS5zdWJzdHJpbmcocSxxK3cpO2lmKHgubGVuZ3RoPHkpYnJlYWs7aWYodGhpcy5pc0ludGVnZXIoeCkpcmV0dXJuIHh9cmV0dXJuIG51bGx9O2ErPSIiO2UrPSIiO2g9Yz0wO3ZhciBtPSIiLGI9IiIsbD0obmV3IERhdGUpLmdldEZ1bGxZZWFyKCksZz0xLGQ9MSxmPTAscj0wLHQ9MCx2PSIiO209W107Zm9yKGI9MDtoPGUubGVuZ3RoOyl7bT1lLmNoYXJBdChoKTtmb3IoYj0iIjtlLmNoYXJBdChoKT09bSYmaDxlLmxlbmd0aDspYis9ZS5jaGFyQXQoaCsrKTtpZigieXl5eSI9PWJ8fCJ5eSI9PWJ8fCJ5Ij09Yil7Inl5eXkiPT1iJiYobj1rPTQpOyJ5eSI9PWImJihuPWs9Mik7InkiPT1iJiYoaz0yLG49NCk7bD10aGlzLmdldEludChhLGMsayxuKTtpZihudWxsPT09bClyZXR1cm4gbnVsbDtjKz1sLmxlbmd0aDsyPT1sLmxlbmd0aCYmKGw9NzA8bD8xOTAwKyhsLTApOjJFMysKKGwtMCkpfWVsc2UgaWYoIk1NTSI9PWJ8fCJOTk4iPT1iKXtnPTA7bT0iTU1NIj09Yj8kLm5lYkxhbmcubW9udGhOYW1lcy5jb25jYXQoJC5uZWJMYW5nLm1vbnRoTmFtZXNTaG9ydCk6JC5uZWJMYW5nLm1vbnRoTmFtZXNTaG9ydDtmb3IoYj0wO2I8bS5sZW5ndGg7YisrKXt2YXIgcD1tW2JdO2lmKGEuc3Vic3RyaW5nKGMsYytwLmxlbmd0aCkudG9Mb3dlckNhc2UoKT09cC50b0xvd2VyQ2FzZSgpKXtnPWIlMTIrMTtjKz1wLmxlbmd0aDticmVha319aWYoMT5nfHwxMjxnKXJldHVybiBudWxsfWVsc2UgaWYoIkVFIj09Ynx8IkUiPT1iKWZvcihtPSJFRSI9PWI\/JC5uZWJMYW5nLmRheU5hbWVzOiQubmViTGFuZy5kYXlOYW1lc1Nob3J0LGI9MDtiPG0ubGVuZ3RoO2IrKyl7aWYocD1tW2JdLGEuc3Vic3RyaW5nKGMsYytwLmxlbmd0aCkudG9Mb3dlckNhc2UoKT09cC50b0xvd2VyQ2FzZSgpKXtjKz1wLmxlbmd0aDticmVha319ZWxzZSBpZigiTU0iPT1ifHwiTSI9PWIpe2c9dGhpcy5nZXRJbnQoYSwKYyxiLmxlbmd0aCwyKTtpZihudWxsPT09Z3x8MT5nfHwxMjxnKXJldHVybiBudWxsO2MrPWcubGVuZ3RofWVsc2UgaWYoImRkIj09Ynx8ImQiPT1iKXtkPXRoaXMuZ2V0SW50KGEsYyxiLmxlbmd0aCwyKTtpZihudWxsPT09ZHx8MT5kfHwzMTxkKXJldHVybiBudWxsO2MrPWQubGVuZ3RofWVsc2UgaWYoImhoIj09Ynx8ImgiPT1iKXtmPXRoaXMuZ2V0SW50KGEsYyxiLmxlbmd0aCwyKTtpZihudWxsPT09Znx8MT5mfHwxMjxmKXJldHVybiBudWxsO2MrPWYubGVuZ3RofWVsc2UgaWYoIkhIIj09Ynx8IkgiPT1iKXtmPXRoaXMuZ2V0SW50KGEsYyxiLmxlbmd0aCwyKTtpZihudWxsPT09Znx8MD5mfHwyMzxmKXJldHVybiBudWxsO2MrPWYubGVuZ3RofWVsc2UgaWYoIktLIj09Ynx8IksiPT1iKXtmPXRoaXMuZ2V0SW50KGEsYyxiLmxlbmd0aCwyKTtpZihudWxsPT09Znx8MD5mfHwxMTxmKXJldHVybiBudWxsO2MrPWYubGVuZ3RoO2YrK31lbHNlIGlmKCJrayI9PWJ8fCJrIj09Yil7Zj10aGlzLmdldEludChhLApjLGIubGVuZ3RoLDIpO2lmKG51bGw9PT1mfHwxPmZ8fDI0PGYpcmV0dXJuIG51bGw7Yys9Zi5sZW5ndGg7Zi0tfWVsc2UgaWYoIm1tIj09Ynx8Im0iPT1iKXtyPXRoaXMuZ2V0SW50KGEsYyxiLmxlbmd0aCwyKTtpZihudWxsPT09cnx8MD5yfHw1OTxyKXJldHVybiBudWxsO2MrPXIubGVuZ3RofWVsc2UgaWYoInNzIj09Ynx8InMiPT1iKXt0PXRoaXMuZ2V0SW50KGEsYyxiLmxlbmd0aCwyKTtpZihudWxsPT09dHx8MD50fHw1OTx0KXJldHVybiBudWxsO2MrPXQubGVuZ3RofWVsc2UgaWYoImEiPT1iKXtpZigiYW0iPT1hLnN1YnN0cmluZyhjLGMrMikudG9Mb3dlckNhc2UoKSl2PSJBTSI7ZWxzZSBpZigicG0iPT1hLnN1YnN0cmluZyhjLGMrMikudG9Mb3dlckNhc2UoKSl2PSJQTSI7ZWxzZSByZXR1cm4gbnVsbDtjKz0yfWVsc2V7aWYoYS5zdWJzdHJpbmcoYyxjK2IubGVuZ3RoKSE9YilyZXR1cm4gbnVsbDtjKz1iLmxlbmd0aH19aWYoYyE9YS5sZW5ndGgpcmV0dXJuIG51bGw7aWYoMj09CmcpaWYoMD09PWwlNCYmMCE9PWwlMTAwfHwwPT09bCU0MDApe2lmKDI5PGQpcmV0dXJuIG51bGx9ZWxzZSBpZigyODxkKXJldHVybiBudWxsO2lmKDMwPGQmJig0PT1nfHw2PT1nfHw5PT1nfHwxMT09ZykpcmV0dXJuIG51bGw7MTI+ZiYmIlBNIj09dj9mPWYtMCsxMjoxMTxmJiYiQU0iPT12JiYoZi09MTIpO3JldHVybiBuZXcgRGF0ZShsLGctMSxkLGYscix0KX07RGF0ZS5pc1ZhbGlkPWZ1bmN0aW9uKGEsZSl7cmV0dXJuIG51bGwhPT1uZWJEYXRlRm4ucGFyc2VTdHJpbmcoYSxlKX07RGF0ZS5wcm90b3R5cGUuZGlmZj1mdW5jdGlvbihhKXtyZXR1cm4gbnVsbD09PWE\/ITE6dGhpcy5nZXRUaW1lKCk9PWEuZ2V0VGltZSgpPzA6dGhpcy5nZXRUaW1lKCk+YS5nZXRUaW1lKCk\/LTE6MX07CkRhdGUucHJvdG90eXBlLmZvcm1hdD1mdW5jdGlvbihhKXthKz0iIjt2YXIgZT0iIixjPTAsaD10aGlzLmdldEZ1bGxZZWFyKCkrIiIsaz10aGlzLmdldE1vbnRoKCkrMSxuPXRoaXMuZ2V0RGF0ZSgpLG09dGhpcy5nZXREYXkoKSxiPXRoaXMuZ2V0SG91cnMoKSxsPXRoaXMuZ2V0TWludXRlcygpLGc9dGhpcy5nZXRTZWNvbmRzKCksZD17fTs0PmgubGVuZ3RoJiYoaD0iIisoK2grMTkwMCkpO2QueT0iIitoO2QueXl5eT1oO2QueXk9aC5zdWJzdHJpbmcoMiw0KTtkLk09aztkLk1NPURhdGUuTFooayk7ZC5NTU09JC5uZWJMYW5nLm1vbnRoTmFtZXNbay0xXTtkLk5OTj0kLm5lYkxhbmcubW9udGhOYW1lc1Nob3J0W2stMV07ZC5kPW47ZC5kZD1EYXRlLkxaKG4pO2QuRT0kLm5lYkxhbmcuZGF5TmFtZXNTaG9ydFttXTtkLkVFPSQubmViTGFuZy5kYXlOYW1lc1ttXTtkLkg9YjtkLkhIPURhdGUuTFooYik7ZC5oPTA9PT1iPzEyOjEyPGI\/Yi0xMjpiO2QuaGg9RGF0ZS5MWihkLmgpO2QuSz0KZC5oLTE7ZC5rPWQuSCsxO2QuS0s9RGF0ZS5MWihkLkspO2Qua2s9RGF0ZS5MWihkLmspO2QuYT0xMTxiPyJQTSI6IkFNIjtkLm09bDtkLm1tPURhdGUuTFoobCk7ZC5zPWc7Zm9yKGQuc3M9RGF0ZS5MWihnKTtjPGEubGVuZ3RoOyl7aD1hLmNoYXJBdChjKTtmb3Ioaz0iIjthLmNoYXJBdChjKT09aCYmYzxhLmxlbmd0aDspays9YS5jaGFyQXQoYysrKTtlPSJ1bmRlZmluZWQiIT10eXBlb2YgZFtrXT9lK2Rba106ZStrfXJldHVybiBlfTsKRGF0ZS5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKGEsZSl7aWYoInVuZGVmaW5lZCI9PT10eXBlb2YgYXx8bnVsbD09PWF8fCJ1bmRlZmluZWQiPT09dHlwZW9mIGV8fG51bGw9PT1lKXJldHVybiB0aGlzO2U9K2U7aWYoInkiPT1hKXRoaXMuc2V0RnVsbFllYXIodGhpcy5nZXRGdWxsWWVhcigpK2UpO2Vsc2UgaWYoIk0iPT1hKXRoaXMuc2V0TW9udGgodGhpcy5nZXRNb250aCgpK2UpO2Vsc2UgaWYoImQiPT1hKXRoaXMuc2V0RGF0ZSh0aGlzLmdldERhdGUoKStlKTtlbHNlIGlmKCJ3Ij09YSlmb3IoYT0wPGU\/MTotMTswIT09ZTspe2Zvcih0aGlzLmFkZCgiZCIsYSk7MD09PXRoaXMuZ2V0RGF5KCl8fDY9PT10aGlzLmdldERheSgpOyl0aGlzLmFkZCgiZCIsYSk7ZS09YX1lbHNlImgiPT1hP3RoaXMuc2V0SG91cnModGhpcy5nZXRIb3VycygpK2UpOiJtIj09YT90aGlzLnNldE1pbnV0ZXModGhpcy5nZXRNaW51dGVzKCkrZSk6InMiPT1hJiZ0aGlzLnNldFNlY29uZHModGhpcy5nZXRTZWNvbmRzKCkrCmUpO3JldHVybiB0aGlzfTtEYXRlLnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbigpe3JldHVybiBuZXcgRGF0ZSh0aGlzLmdldFRpbWUoKSl9OwovKiogL20vanMvbmViQ2FsL25lYkNhbC5qcyAqKi8KdmFyIF9fX2QyY19uZWJDYWxqc19jX29uPSIyMDI1LTA1LTIzIDE3OjA0OjIyIjsndXNlIHN0cmljdCc7dmFyIF9fX2QyY19uZWJDYWxqc19jX29uPSIyMDI0LTA0LTE2IDExOjMwOjA3IjsidXNlIHN0cmljdCI7CihmdW5jdGlvbihlKXtlLm5lYkNhbD1mdW5jdGlvbihoLGcpe3ZhciBsPXtzbGlkZUR1cmF0aW9uOjUwMCxmYWRlRHVyYXRpb246MjAwLHRvZ2dsZUR1cmF0aW9uOjIwMCxwcmVmaWxsOiExLGRlZmF1bHREYXRlOnZvaWQgMCxsaW5rV2l0aElucHV0OiEwLGtleU5hdmlnYXRpb246ITAsdGhlbWU6ImRlZmF1bHQiLGRlZmF1bHRWaWV3OiJtb250aCIsc3RhcnRNb25kYXk6ITEsYWx3YXlzU2hvdzohMSxpbmplY3RJbnNpZGVUYXJnZXQ6ITEsZm9ybWF0OiJ5eXl5LU1NLWRkIixhbGlnblg6Im1pZGRsZSIsYWxpZ25ZOiJib3R0b20iLG9mZnNldFg6MjAsb2Zmc2V0WTowLHBvcnRyYWl0OiEwLHBpY2thYmxlOiEwLHRvZ2dsZXI6dm9pZCAwLGRpc2FsbG93VXNlcklucHV0OiExLG1pbkRhdGU6dm9pZCAwLG1heERhdGU6dm9pZCAwLGV4Y2x1ZGVkV2Vla2RheXM6dm9pZCAwLGV4Y2x1ZGVkRGF0ZXM6dm9pZCAwLGNyZWF0ZUhpZGRlbklucHV0OiExLGhpZGRlbklucHV0TmFtZToiZGF0ZSIsaGlkZGVuSW5wdXRGb3JtYXQ6IiV0IiwKb25TZWxlY3Q6ITEsb25WaWV3Q2hhbmdlOiExfSxhPXRoaXM7YS5vcHRpb25zPXt9O2EudGFyZ2V0PWUoaCk7YS5pbml0PWZ1bmN0aW9uKCl7YS5vcHRpb25zPWUuZXh0ZW5kKHt9LGwsZyk7YS50b2RheT1uZWJEYXRlRm4uY2xlYXJUaW1lKG5ldyBEYXRlKTthLnRyYW5zaXRpb25pbmc9ITE7dm9pZCAwIT09YS5vcHRpb25zLmRlZmF1bHREYXRlP2Euc2VsZWN0ZWREYXRlPW5lYkRhdGVGbi5jbGVhclRpbWUobmViRGF0ZUZuLnBhcnNlU3RyaW5nKGEub3B0aW9ucy5kZWZhdWx0RGF0ZSkpOmEub3B0aW9ucy5saW5rV2l0aElucHV0JiZ2b2lkIDAhPT1hLnRhcmdldC52YWwoKSYmMCE9PWEudGFyZ2V0LnZhbCgpJiYoYS5zZWxlY3RlZERhdGU9bmViRGF0ZUZuLmNsZWFyVGltZShuZWJEYXRlRm4ucGFyc2VTdHJpbmcoYS50YXJnZXQudmFsKCkpKSk7aWYodm9pZCAwPT09YS5zZWxlY3RlZERhdGV8fG51bGw9PT1hLnNlbGVjdGVkRGF0ZSlhLnNlbGVjdGVkRGF0ZT1hLnRvZGF5LmNsb25lKCk7CmEuZWxlbWVudD1lKCc8ZGl2IGNsYXNzPSJuZWJDYWwgJythLm9wdGlvbnMudGhlbWUrJyIgc3R5bGU9ImRpc3BsYXk6ICcrKGEub3B0aW9ucy5hbHdheXNTaG93PyJibG9jayI6Im5vbmUiKSsnIj48ZGl2IGNsYXNzPSJjYWwtd3JhcHBlciI+PGRpdiBjbGFzcz0iY2FsLWhlYWRlciI+PGRpdiBjbGFzcz0iY2FsLWFycm93LWxlZnQiPjwvZGl2PjxkaXYgY2xhc3M9ImNhbC1hcnJvdy1yaWdodCI+PC9kaXY+PGRpdiBjbGFzcz0iY2FsLWxhYmVsIGNhbC1jbGlja2FibGUiPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9ImNhbC1ib2R5Ij48ZGl2IGNsYXNzPSJjYWwtaW5uZXIiPjxkaXYgY2xhc3M9ImNhbC1jb250YWluZXIgYSI+PC9kaXY+PGRpdiBjbGFzcz0iY2FsLWNvbnRhaW5lciBiIj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPSJjYWwtZm9vdGVyIj48L2Rpdj48L2Rpdj48L2Rpdj4nKTthLm9wdGlvbnMuaW5qZWN0SW5zaWRlVGFyZ2V0PyhhLmVsZW1lbnQuYWRkQ2xhc3MoImlubGluZSIpLAphLmVsZW1lbnQuYXBwZW5kVG8oYS50YXJnZXQpKTooYS5lbGVtZW50LmFwcGVuZFRvKGUoImJvZHkiKSksYS5wb3NpdGlvbigpLGUod2luZG93KS5vbigicmVzaXplIixhLnBvc2l0aW9uKSk7YS5jdXJyZW50Q29udGFpbmVyPWEuZWxlbWVudC5maW5kKCIuY2FsLWNvbnRhaW5lci5hIikuY3NzKCJ6LWluZGV4Iiw5OTkpO2EudGVtcENvbnRhaW5lcj1hLmVsZW1lbnQuZmluZCgiLmNhbC1jb250YWluZXIuYiIpLmNzcygiei1pbmRleCIsOTk4KTthLmhlYWRlcj1hLmVsZW1lbnQuZmluZCgiLmNhbC1oZWFkZXIiKTthLmxhYmVsPWEuaGVhZGVyLmZpbmQoIi5jYWwtbGFiZWwiKTthLmFycm93TGVmdD1hLmhlYWRlci5maW5kKCIuY2FsLWFycm93LWxlZnQiKTthLmFycm93UmlnaHQ9YS5oZWFkZXIuZmluZCgiLmNhbC1hcnJvdy1yaWdodCIpO2EubGFiZWwub24oImNsaWNrIixhLmxldmVsVXApO2EuYXJyb3dMZWZ0Lm9uKCJjbGljayIsYS5zbGlkZUxlZnQpO2EuYXJyb3dSaWdodC5vbigiY2xpY2siLAphLnNsaWRlUmlnaHQpO3ZvaWQgMCE9PWEub3B0aW9ucy5taW5EYXRlJiYoYS5vcHRpb25zLm1pbkRhdGU9bmViRGF0ZUZuLmNsZWFyVGltZShuZWJEYXRlRm4ucGFyc2VTdHJpbmcoYS5vcHRpb25zLm1pbkRhdGUpKSk7dm9pZCAwIT09YS5vcHRpb25zLm1heERhdGUmJihhLm9wdGlvbnMubWF4RGF0ZT1uZWJEYXRlRm4uY2xlYXJUaW1lKG5lYkRhdGVGbi5wYXJzZVN0cmluZyhhLm9wdGlvbnMubWF4RGF0ZSkpKTtpZih2b2lkIDAhPT1hLm9wdGlvbnMuZXhjbHVkZWREYXRlcyl7dmFyIGI9W107YS5vcHRpb25zLmV4Y2x1ZGVkRGF0ZXMuZWFjaChmdW5jdGlvbihjKXtiLmluY2x1ZGUoYS5mb3JtYXQobmViRGF0ZUZuLmNsZWFyVGltZShuZWJEYXRlRm4ucGFyc2VTdHJpbmcoYykpLCIldCIpKX0pO2Eub3B0aW9ucy5leGNsdWRlZERhdGVzPWJ9YS5vcHRpb25zLmNyZWF0ZUhpZGRlbklucHV0JiYoYS5oaWRkZW5JbnB1dD0obmV3IEVsZW1lbnQoImlucHV0Iix7dHlwZToiaGlkZGVuIiwKbmFtZTphLm9wdGlvbnMuaGlkZGVuSW5wdXROYW1lfSkpLmFwcGVuZFRvKGEudGFyZ2V0KSk7IWEub3B0aW9ucy5kaXNhbGxvd1VzZXJJbnB1dCYmYS5vcHRpb25zLmxpbmtXaXRoSW5wdXQmJiJpbnB1dCI9PWEudGFyZ2V0LmF0dHIoInRhZyIpJiZhLnRhcmdldC5hZGRFdmVudCgia2V5dXAiLGZ1bmN0aW9uKCl7YS5zZXREYXRlKGEudGFyZ2V0LmF0dHIoInZhbHVlIiksITEpfSk7dm9pZCAwIT09YS5vcHRpb25zLnRvZ2dsZXImJihhLm9wdGlvbnMudG9nZ2xlcj1lKGEub3B0aW9ucy50b2dnbGVyKSk7KHZvaWQgMCE9PWEub3B0aW9ucy50b2dnbGVyP2Eub3B0aW9ucy50b2dnbGVyOmEudGFyZ2V0KS5vbigiZm9jdXMiLGEuc2hvdykub24oImNsaWNrIixhLnNob3cpO2lmKCFhLm9wdGlvbnMuYWx3YXlzU2hvdyllKGRvY3VtZW50KS5vbigibW91c2Vkb3duIixhLm91dHNpZGVDbGljayk7IklOUFVUIj09YS50YXJnZXQucHJvcCgidGFnTmFtZSIpJiYoYS50YXJnZXQudHJpZ2dlcigia2V5ZG93biIsCmEub25LZXlEb3duKSxhLnRhcmdldC50cmlnZ2VyKCJrZXl1cCIsYS5vbktleVVwKSxhLm9wdGlvbnMuZGlzYWxsb3dVc2VySW5wdXQmJmEudGFyZ2V0LmFkZEV2ZW50KCJjb250ZXh0bWVudSIsJGxhbWJkYSghMSkpKTthLnNlbGVjdGVkRGF0ZT1hLmNvcnJlY3REYXRlKGEuc2VsZWN0ZWREYXRlKTthLm9wdGlvbnMucHJlZmlsbCYmYS5waWNrKCk7YS52aWV3RGF0ZT1uZWJEYXRlRm4uY2xlYXJUaW1lKGEuc2VsZWN0ZWREYXRlLmNsb25lKCkuc2V0RGF5KDEpKTthLnZpZXc9YS5vcHRpb25zLmRlZmF1bHRWaWV3O2EucmVuZGVyKCl9O2EucmVuZGVyPWZ1bmN0aW9uKCl7YS5jdXJyZW50Q29udGFpbmVyLmVtcHR5KCk7c3dpdGNoKGEudmlldyl7Y2FzZSAiZGVjYWRlIjphLnJlbmRlckRlY2FkZSgpO2JyZWFrO2Nhc2UgInllYXIiOmEucmVuZGVyWWVhcigpO2JyZWFrO2RlZmF1bHQ6YS5yZW5kZXJNb250aCgpfXJldHVybiBhfTthLnJlbmRlck1vbnRoPWZ1bmN0aW9uKCl7YS52aWV3PQoibW9udGgiO2EuY3VycmVudENvbnRhaW5lci5lbXB0eSgpLmFkZENsYXNzKCJjYWwtbW9udGgiKTthLm9wdGlvbnMucGlja2FibGUmJmEuY3VycmVudENvbnRhaW5lci5hZGRDbGFzcygiY2FsLXBpY2thYmxlIik7dmFyIGI9ZS5uZWJMYW5nLGM9YS52aWV3RGF0ZS5nZXREYXkoKS0oYS5vcHRpb25zLnN0YXJ0TW9uZGF5PzE6MCk7LTE9PWMmJihjPTYpO2EubGFiZWwuaHRtbChiLm1vbnRoTmFtZXNbYS52aWV3RGF0ZS5nZXRNb250aCgpXSsiICIrYS52aWV3RGF0ZS5mb3JtYXQoInl5eXkiKSk7Zm9yKHZhciBkPWUoIjxkaXY+PC9kaXY+IikuYWRkQ2xhc3MoImNhbC1yb3ciKS5hcHBlbmRUbyhhLmN1cnJlbnRDb250YWluZXIpLGY9YS5vcHRpb25zLnN0YXJ0TW9uZGF5PzE6MDtmPChhLm9wdGlvbnMuc3RhcnRNb25kYXk\/ODo3KTtmKyspe3ZhciBrPWUoIjxkaXY+PC9kaXY+IikuaHRtbChiLmRheU5hbWVzU2hvcnRbYS5vcHRpb25zLnN0YXJ0TW9uZGF5JiY3PT1mPzA6Zl0pLmFwcGVuZFRvKGQpOwprLmh0bWwoay5odG1sKCkpfWQ9ZSgiPGRpdj48L2Rpdj4iKS5hZGRDbGFzcygiY2FsLXJvdyIpLmFwcGVuZFRvKGEuY3VycmVudENvbnRhaW5lcik7Yj1hLnZpZXdEYXRlLmNsb25lKCkuYWRkKCJNIiwtMSkuZ2V0TGFzdERheU9mTW9udGhDYWwoKTtmb3IoZj0wO2Y8YztmKyspYS5pbmplY3REYXkoZCxhLnZpZXdEYXRlLmNsb25lKCkuYWRkKCJNIiwtMSkuc2V0RGF5KGItKGMtZikrMSksITApO2ZvcihmPTE7Zjw9YS52aWV3RGF0ZS5nZXRMYXN0RGF5T2ZNb250aENhbCgpO2YrKylhLmluamVjdERheShkLGEudmlld0RhdGUuY2xvbmUoKS5zZXREYXkoZikpLDc9PWQuY2hpbGRyZW4oKS5sZW5ndGgmJihkPWUoIjxkaXY+PC9kaXY+IikuYWRkQ2xhc3MoImNhbC1yb3ciKS5hcHBlbmRUbyhhLmN1cnJlbnRDb250YWluZXIpKTtiPTgtZC5jaGlsZHJlbigpLmxlbmd0aDtjPWEudmlld0RhdGUuY2xvbmUoKS5hZGQoIk0iLDEpLnNldERheSgxKTtmb3IoZj0xO2Y8YjtmKyspYS5pbmplY3REYXkoZCwKYy5jbG9uZSgpLnNldERheShmKSwhMCk7Zm9yKGI9YS5jdXJyZW50Q29udGFpbmVyLmZpbmQoIi5jYWwtcm93IikubGVuZ3RoOzc+YjtiKyspZm9yKGQ9ZSgiPGRpdj48L2Rpdj4iKS5hZGRDbGFzcygiY2FsLXJvdyIpLmFwcGVuZFRvKGEuY3VycmVudENvbnRhaW5lciksaz0wOzc+aztrKyspYS5pbmplY3REYXkoZCxjLmNsb25lKCkuc2V0RGF5KGYpLCEwKSxmKys7YS5yZW5kZXJBZnRlcigpfTthLmluamVjdERheT1mdW5jdGlvbihiLGMsZCl7Yj1lKCI8ZGl2PjwvZGl2PiIpLmh0bWwoYy5nZXREYXRlKCkpLmFwcGVuZFRvKGIpO2IuZGF0YSgiZGF0ZSIsYyk7ZCYmYi5hZGRDbGFzcygiY2FsLW91dHNpZGUiKTtpZih2b2lkIDAhPT1hLm9wdGlvbnMubWluRGF0ZSYmYS5vcHRpb25zLm1pbkRhdGU+Y3x8dm9pZCAwIT09YS5vcHRpb25zLm1heERhdGUmJmEub3B0aW9ucy5tYXhEYXRlPGN8fHZvaWQgMCE9PWEub3B0aW9ucy5leGNsdWRlZFdlZWtkYXlzJiZhLm9wdGlvbnMuZXhjbHVkZWRXZWVrZGF5cy5jb250YWlucyhjLmZvcm1hdCgiRSIpLnRvSW50KCkpfHwKdm9pZCAwIT09YS5vcHRpb25zLmV4Y2x1ZGVkRGF0ZXMmJmEub3B0aW9ucy5leGNsdWRlZERhdGVzLmNvbnRhaW5zKGEuZm9ybWF0KGMsIiV0IikpKWIuYWRkQ2xhc3MoImNhbC1ub24tc2VsZWN0YWJsZSIpO2Vsc2UgaWYoYS5vcHRpb25zLnBpY2thYmxlKWIub24oImNsaWNrIixhLnBpY2spO2MuZm9ybWF0KCJkIik9PWEudG9kYXkuZm9ybWF0KCJkIikmJmIuYWRkQ2xhc3MoImNhbC10b2RheSIpO2R8fGMuZm9ybWF0KCJkIikhPWEuc2VsZWN0ZWREYXRlLmZvcm1hdCgiZCIpfHxiLmFkZENsYXNzKCJjYWwtc2VsZWN0ZWQiKX07YS5yZW5kZXJZZWFyPWZ1bmN0aW9uKCl7YS52aWV3PSJ5ZWFyIjthLmN1cnJlbnRDb250YWluZXIuYWRkQ2xhc3MoImNhbC15ZWFyLWRlY2FkZSAiKyhhLm9wdGlvbnMucG9ydHJhaXQ\/ImNhbC1wb3J0cmFpdCI6ImNhbC1sYW5kc2NhcGUiKSk7dmFyIGI9ZS5uZWJMYW5nLm1vbnRoTmFtZXNTaG9ydDthLmxhYmVsLmh0bWwoYS52aWV3RGF0ZS5mb3JtYXQoInl5eXkiKSk7CmZvcih2YXIgYz1lKCI8ZGl2PjwvZGl2PiIpLmFkZENsYXNzKCJjYWwtcm93IikuYXBwZW5kVG8oYS5jdXJyZW50Q29udGFpbmVyKSxkPTE7MTM+ZDtkKyspe3ZhciBmPWUoIjxkaXY+PC9kaXY+IikuaHRtbChiW2QtMV0pLmFwcGVuZFRvKGMpLGs9YS52aWV3RGF0ZS5jbG9uZSgpLnNldE1vbihkLTEpO2YuZGF0YSgiZGF0ZSIsayk7aWYodm9pZCAwIT09YS5vcHRpb25zLm1pbkRhdGUmJmEub3B0aW9ucy5taW5EYXRlLmNsb25lKCkuc2V0RGF5KDEpPmt8fHZvaWQgMCE9PWEub3B0aW9ucy5tYXhEYXRlJiZhLm9wdGlvbnMubWF4RGF0ZS5jbG9uZSgpLnNldERheSgxKTxrKWYuYWRkQ2xhc3MoImNhbC1ub24tc2VsZWN0YWJsZSIpO2Vsc2UgZi5vbigiY2xpY2siLGEubGV2ZWxEb3duKTtkLTE9PWEudG9kYXkuZ2V0TW9udGgoKSYmYS52aWV3RGF0ZS5nZXRGdWxsWWVhcigpPT1hLnRvZGF5LmdldEZ1bGxZZWFyKCkmJmYuYWRkQ2xhc3MoImNhbC10b2RheSIpO2QtMT09YS5zZWxlY3RlZERhdGUuZ2V0TW9udGgoKSYmCmEudmlld0RhdGUuZ2V0RnVsbFllYXIoKT09YS5zZWxlY3RlZERhdGUuZ2V0RnVsbFllYXIoKSYmZi5hZGRDbGFzcygiY2FsLXNlbGVjdGVkIik7ZCUoYS5vcHRpb25zLnBvcnRyYWl0PzM6NCl8fDEyPT1kfHwoYz1lKCI8ZGl2PjwvZGl2PiIpLmFkZENsYXNzKCJjYWwtcm93IikuYXBwZW5kVG8oYS5jdXJyZW50Q29udGFpbmVyKSl9YS5yZW5kZXJBZnRlcigpfTthLnJlbmRlckRlY2FkZT1mdW5jdGlvbigpe2EubGFiZWwucmVtb3ZlQ2xhc3MoImNhbC1jbGlja2FibGUiKTthLnZpZXc9ImRlY2FkZSI7YS5jdXJyZW50Q29udGFpbmVyLmFkZENsYXNzKCJjYWwteWVhci1kZWNhZGUgIisoYS5vcHRpb25zLnBvcnRyYWl0PyJjYWwtcG9ydHJhaXQiOiJjYWwtbGFuZHNjYXBlIikpO3ZhciBiO2ZvcihiPXBhcnNlSW50KGEudmlld0RhdGUuZm9ybWF0KCJ5eXl5IikpO2IlMTI7KWItLTthLmxhYmVsLmh0bWwoYisiICYjMTUwOyAiKyhiKzExKSk7Zm9yKHZhciBjPWUoIjxkaXY+PC9kaXY+IikuYWRkQ2xhc3MoImNhbC1yb3ciKS5hcHBlbmRUbyhhLmN1cnJlbnRDb250YWluZXIpLApkPWI7ZDxiKzEyO2QrKyl7dmFyIGY9ZSgiPGRpdj48L2Rpdj4iKS5odG1sKGQpLmFwcGVuZFRvKGMpLGs9YS52aWV3RGF0ZS5jbG9uZSgpLnNldFllYXIoZCk7Zi5kYXRhKCJkYXRlIixrKTtpZih2b2lkIDAhPT1hLm9wdGlvbnMubWluRGF0ZSYmYS5vcHRpb25zLm1pbkRhdGUuZ2V0RnVsbFllYXIoKT5kfHx2b2lkIDAhPT1hLm9wdGlvbnMubWF4RGF0ZSYmYS5vcHRpb25zLm1heERhdGUuZ2V0RnVsbFllYXIoKTxkKWYuYWRkQ2xhc3MoImNhbC1ub24tc2VsZWN0YWJsZSIpO2Vsc2UgZi5vbigiY2xpY2siLGEubGV2ZWxEb3duKTtkPT1hLnRvZGF5LmdldEZ1bGxZZWFyKCkmJmYuYWRkQ2xhc3MoImNhbC10b2RheSIpO2Q9PWEuc2VsZWN0ZWREYXRlLmdldEZ1bGxZZWFyKCkmJmYuYWRkQ2xhc3MoImNhbC1zZWxlY3RlZCIpOyhkKzEpJShhLm9wdGlvbnMucG9ydHJhaXQ\/Mzo0KXx8ZD09YisxMXx8KGM9ZSgiPGRpdj48L2Rpdj4iKS5hZGRDbGFzcygiY2FsLXJvdyIpLmFwcGVuZFRvKGEuY3VycmVudENvbnRhaW5lcikpfWEucmVuZGVyQWZ0ZXIoKX07CmEucmVuZGVyQWZ0ZXI9ZnVuY3Rpb24oKXtmb3IodmFyIGI9YS5jdXJyZW50Q29udGFpbmVyLmZpbmQoIi5jYWwtcm93IiksYz0wO2M8Yi5sZW5ndGg7YysrKWUoYltjXSkuYWRkQ2xhc3MoImNhbC1yb3cgIisiYWJjZGVmZyIuc3BsaXQoIiIpW2NdKyIgIisoYyUyPyJjYWwtZXZlbiI6ImNhbC1vZGQiKSk7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGEub3B0aW9ucy5vblZpZXdDaGFuZ2UpYS5vcHRpb25zLm9uVmlld0NoYW5nZShhLnZpZXcsYS5zZWxlY3RlZERhdGUsYS52aWV3RGF0ZSl9O2Euc2xpZGVMZWZ0PWZ1bmN0aW9uKCl7YS50cmFuc2l0aW9uaW5nJiYoYS50ZW1wQ29udGFpbmVyLmNzcyh7bGVmdDowfSkuc3RvcCgpLGEudGVtcENvbnRhaW5lci5jc3Moe2xlZnQ6MH0pLnN0b3AoKSxhLnRyYW5zaXRpb25pbmc9ITEpO2Euc3dpdGNoQ29udGFpbmVycygpO3N3aXRjaChhLnZpZXcpe2Nhc2UgIm1vbnRoIjphLnZpZXdEYXRlLmFkZCgiTSIsLTEpO2JyZWFrO2Nhc2UgInllYXIiOmEudmlld0RhdGUuYWRkKCJ5IiwKLTEpO2JyZWFrO2Nhc2UgImRlY2FkZSI6YS52aWV3RGF0ZS5zZXRGdWxsWWVhcihhLnZpZXdEYXRlLmdldEZ1bGxZZWFyKCktMTIpfWEucmVuZGVyKCk7YS50cmFuc2l0aW9uaW5nPSEwO2EuY3VycmVudENvbnRhaW5lci5jc3Moe2xlZnQ6LWEuY3VycmVudENvbnRhaW5lci53aWR0aCgpfSkuYW5pbWF0ZSh7bGVmdDowfSxhLm9wdGlvbnMuc2xpZGVEdXJhdGlvbik7YS50ZW1wQ29udGFpbmVyLmNzcyh7bGVmdDowfSkuYW5pbWF0ZSh7bGVmdDphLnRlbXBDb250YWluZXIud2lkdGgoKX0sYS5vcHRpb25zLnNsaWRlRHVyYXRpb24sZnVuY3Rpb24oKXtlKHRoaXMpLmNzcyh7bGVmdDowfSk7YS50cmFuc2l0aW9uaW5nPSExfSl9O2Euc2xpZGVSaWdodD1mdW5jdGlvbigpe2EudHJhbnNpdGlvbmluZyYmKGEudGVtcENvbnRhaW5lci5jc3Moe2xlZnQ6MH0pLnN0b3AoKSxhLnRlbXBDb250YWluZXIuY3NzKHtsZWZ0OjB9KS5zdG9wKCksYS50cmFuc2l0aW9uaW5nPSExKTthLnN3aXRjaENvbnRhaW5lcnMoKTsKc3dpdGNoKGEudmlldyl7Y2FzZSAibW9udGgiOmEudmlld0RhdGUuYWRkKCJNIiwxKTticmVhaztjYXNlICJ5ZWFyIjphLnZpZXdEYXRlLmFkZCgieSIsMSk7YnJlYWs7Y2FzZSAiZGVjYWRlIjphLnZpZXdEYXRlLnNldEZ1bGxZZWFyKGEudmlld0RhdGUuZ2V0RnVsbFllYXIoKSsxMil9YS5yZW5kZXIoKTthLnRyYW5zaXRpb25pbmc9ITA7YS5jdXJyZW50Q29udGFpbmVyLmNzcyh7bGVmdDphLmN1cnJlbnRDb250YWluZXIud2lkdGgoKX0pLmFuaW1hdGUoe2xlZnQ6MH0sYS5vcHRpb25zLnNsaWRlRHVyYXRpb24pO2EudGVtcENvbnRhaW5lci5jc3Moe2xlZnQ6MH0pLmFuaW1hdGUoe2xlZnQ6LWEudGVtcENvbnRhaW5lci53aWR0aCgpfSxhLm9wdGlvbnMuc2xpZGVEdXJhdGlvbixmdW5jdGlvbigpe2UodGhpcykuY3NzKHtsZWZ0OjB9KTthLnRyYW5zaXRpb25pbmc9ITF9KX07YS5sZXZlbERvd249ZnVuY3Rpb24oYil7aWYoIWEudHJhbnNpdGlvbmluZyl7YS5zd2l0Y2hDb250YWluZXJzKCk7CmEudmlld0RhdGU9ZShiLnRhcmdldCkuZGF0YSgiZGF0ZSIpO3N3aXRjaChhLnZpZXcpe2Nhc2UgInllYXIiOmEucmVuZGVyTW9udGgoKTticmVhaztjYXNlICJkZWNhZGUiOmEucmVuZGVyWWVhcigpfWEudHJhbnNpdGlvbmluZz0hMDthLmN1cnJlbnRDb250YWluZXIuZmFkZUluKGEub3B0aW9ucy5mYWRlRHVyYXRpb24sZnVuY3Rpb24oKXthLnRyYW5zaXRpb25pbmc9ITF9KTthLnRlbXBDb250YWluZXIuZmFkZU91dChhLm9wdGlvbnMuZmFkZUR1cmF0aW9uKX19O2EubGV2ZWxVcD1mdW5jdGlvbigpe2lmKCJkZWNhZGUiIT1hLnZpZXcmJiFhLnRyYW5zaXRpb25pbmcpe2Euc3dpdGNoQ29udGFpbmVycygpO3N3aXRjaChhLnZpZXcpe2Nhc2UgIm1vbnRoIjphLnJlbmRlclllYXIoKTticmVhaztjYXNlICJ5ZWFyIjphLnJlbmRlckRlY2FkZSgpfWEudHJhbnNpdGlvbmluZz0hMDthLmN1cnJlbnRDb250YWluZXIuZmFkZUluKGEub3B0aW9ucy5mYWRlRHVyYXRpb24sZnVuY3Rpb24oKXthLnRyYW5zaXRpb25pbmc9CiExfSk7YS50ZW1wQ29udGFpbmVyLmZhZGVPdXQoYS5vcHRpb25zLmZhZGVEdXJhdGlvbil9fTthLmNoYW5nZVZpZXc9ZnVuY3Rpb24oYil7aWYoIWEudHJhbnNpdGlvbmluZyYmYiE9YS52aWV3KXthLnN3aXRjaENvbnRhaW5lcnMoKTtzd2l0Y2goYil7Y2FzZSAibW9udGgiOmEucmVuZGVyTW9udGgoKTticmVhaztjYXNlICJ5ZWFyIjphLnJlbmRlclllYXIoKTticmVhaztjYXNlICJkZWNhZGUiOmEucmVuZGVyRGVjYWRlKCl9YS50cmFuc2l0aW9uaW5nPSEwO2EuY3VycmVudENvbnRhaW5lci5mYWRlSW4oYS5vcHRpb25zLmZhZGVEdXJhdGlvbixmdW5jdGlvbigpe2EudHJhbnNpdGlvbmluZz0hMX0pO2EudGVtcENvbnRhaW5lci5mYWRlT3V0KGEub3B0aW9ucy5mYWRlRHVyYXRpb24pfX07YS51cGRhdGVNaW5EYXRlPWZ1bmN0aW9uKGIpe2lmKCFhLnRyYW5zaXRpb25pbmcmJihiPW5lYkRhdGVGbi5wYXJzZVN0cmluZyhiKSxudWxsIT09Yikpe2Eub3B0aW9ucy5taW5EYXRlPW5lYkRhdGVGbi5jbGVhclRpbWUoYik7CmEuc3dpdGNoQ29udGFpbmVycygpO3N3aXRjaChhLnZpZXcpe2Nhc2UgIm1vbnRoIjphLnJlbmRlck1vbnRoKCk7YnJlYWs7Y2FzZSAieWVhciI6YS5yZW5kZXJZZWFyKCk7YnJlYWs7Y2FzZSAiZGVjYWRlIjphLnJlbmRlckRlY2FkZSgpfWEudHJhbnNpdGlvbmluZz0hMDthLmN1cnJlbnRDb250YWluZXIuZmFkZUluKGEub3B0aW9ucy5mYWRlRHVyYXRpb24sZnVuY3Rpb24oKXthLnRyYW5zaXRpb25pbmc9ITF9KTthLnRlbXBDb250YWluZXIuZmFkZU91dChhLm9wdGlvbnMuZmFkZUR1cmF0aW9uKX19O2EudXBkYXRlTWF4RGF0ZT1mdW5jdGlvbihiKXtpZighYS50cmFuc2l0aW9uaW5nJiYoYj1uZWJEYXRlRm4ucGFyc2VTdHJpbmcoYiksbnVsbCE9PWIpKXthLm9wdGlvbnMubWF4RGF0ZT1uZWJEYXRlRm4uY2xlYXJUaW1lKGIpO2Euc3dpdGNoQ29udGFpbmVycygpO3N3aXRjaChhLnZpZXcpe2Nhc2UgIm1vbnRoIjphLnJlbmRlck1vbnRoKCk7YnJlYWs7Y2FzZSAieWVhciI6YS5yZW5kZXJZZWFyKCk7CmJyZWFrO2Nhc2UgImRlY2FkZSI6YS5yZW5kZXJEZWNhZGUoKX1hLnRyYW5zaXRpb25pbmc9ITA7YS5jdXJyZW50Q29udGFpbmVyLmZhZGVJbihhLm9wdGlvbnMuZmFkZUR1cmF0aW9uLGZ1bmN0aW9uKCl7YS50cmFuc2l0aW9uaW5nPSExfSk7YS50ZW1wQ29udGFpbmVyLmZhZGVPdXQoYS5vcHRpb25zLmZhZGVEdXJhdGlvbil9fTthLnN3aXRjaENvbnRhaW5lcnM9ZnVuY3Rpb24oKXthLmN1cnJlbnRDb250YWluZXI9YS5jdXJyZW50Q29udGFpbmVyLmhhc0NsYXNzKCJhIik\/YS5lbGVtZW50LmZpbmQoIi5jYWwtY29udGFpbmVyLmIiKTphLmVsZW1lbnQuZmluZCgiLmNhbC1jb250YWluZXIuYSIpO2EudGVtcENvbnRhaW5lcj1hLnRlbXBDb250YWluZXIuaGFzQ2xhc3MoImEiKT9hLmVsZW1lbnQuZmluZCgiLmNhbC1jb250YWluZXIuYiIpOmEuZWxlbWVudC5maW5kKCIuY2FsLWNvbnRhaW5lci5hIik7YS5jdXJyZW50Q29udGFpbmVyLmVtcHR5KCkucmVtb3ZlQ2xhc3MoImNhbC1tb250aCBjYWwteWVhci1kZWNhZGUgIisKKGEub3B0aW9ucy5wb3J0cmFpdD8iY2FsLXBvcnRyYWl0IjoiY2FsLWxhbmRzY2FwZSIpKS5jc3Moe29wYWNpdHk6MSxkaXNwbGF5OiJibG9jayIsInotaW5kZXgiOjk5OX0pO2EudGVtcENvbnRhaW5lci5jc3MoInotaW5kZXgiLDk5OCk7YS5sYWJlbC5hZGRDbGFzcygiY2FsLWNsaWNrYWJsZSIpO2EuYXJyb3dMZWZ0LmNzcygidmlzaWJpbGl0eSIsInZpc2libGUiKTthLmFycm93UmlnaHQuY3NzKCJ2aXNpYmlsaXR5IiwidmlzaWJsZSIpfTthLnBvc2l0aW9uPWZ1bmN0aW9uKCl7dmFyIGI9YS50YXJnZXQuZ2V0Q29vcmRpbmF0ZXMoKTtzd2l0Y2goYS5vcHRpb25zLmFsaWduWCl7Y2FzZSAibGVmdCI6dmFyIGM9Yi5sZWZ0O2JyZWFrO2Nhc2UgIm1pZGRsZSI6Yz1iLmxlZnQrYi53aWR0aC8yLWEuZWxlbWVudC53aWR0aCgpLzI7YnJlYWs7ZGVmYXVsdDpjYXNlICJyaWdodCI6Yz1iLmxlZnQrYi53aWR0aH1zd2l0Y2goYS5vcHRpb25zLmFsaWduWSl7Y2FzZSAiYm90dG9tIjpiPWIudG9wKwpiLmhlaWdodDticmVhaztjYXNlICJ0b3AiOmI9Yi50b3AtYS5lbGVtZW50LmdldEhlaWdodCgpO2JyZWFrO2RlZmF1bHQ6Y2FzZSAiY2VpbGluZyI6Yj1iLnRvcH1jKz1wYXJzZUludChhLm9wdGlvbnMub2Zmc2V0WCk7Yis9cGFyc2VJbnQoYS5vcHRpb25zLm9mZnNldFkpO2EuZWxlbWVudC5jc3Moe3RvcDpiLGxlZnQ6Y30pfTthLnNob3c9ZnVuY3Rpb24oKXthLnZpc2libGV8fGEub3B0aW9ucy5hbHdheXNTaG93fHwoYS52aXNpYmxlPSEwLGEuZWxlbWVudC5mYWRlSW4oYS5vcHRpb25zLnRvZ2dsZUR1cmF0aW9uKSxhLnBvc2l0aW9uKCkpfTthLmhpZGU9ZnVuY3Rpb24oKXthLnZpc2libGUmJiFhLm9wdGlvbnMuYWx3YXlzU2hvdyYmKGEudmlzaWJsZT0hMSxhLmVsZW1lbnQuZmFkZU91dChhLm9wdGlvbnMudG9nZ2xlRHVyYXRpb24pKX07YS50b2dnbGU9ZnVuY3Rpb24oKXthLnZpc2libGU\/YS5oaWRlKCk6YS5zaG93KCl9O2Eub3V0c2lkZUNsaWNrPWZ1bmN0aW9uKGIpe2lmKGEudmlzaWJsZSl7dmFyIGM9CmEuZWxlbWVudC5nZXRDb29yZGluYXRlcygpLGQ9YS50YXJnZXQuZ2V0Q29vcmRpbmF0ZXMoKTsoYi5wYWdlWDxjLmxlZnR8fGIucGFnZVg+Yy5sZWZ0K2Mud2lkdGh8fGIucGFnZVk8Yy50b3B8fGIucGFnZVk+Yy50b3ArYy5oZWlnaHQpJiYoYi5wYWdlWDxkLmxlZnR8fGIucGFnZVg+ZC5sZWZ0K2Qud2lkdGh8fGIucGFnZVk8ZC50b3B8fGIucGFnZVk+ZC50b3ArZC5oZWlnaHQpJiZhLmhpZGUoKX19O2EucGljaz1mdW5jdGlvbihiKXt2b2lkIDAhPT1iJiYoYS5zZWxlY3RlZERhdGU9ZShiLnRhcmdldCkuZGF0YSgiZGF0ZSIpLGEuZWxlbWVudC5maW5kKCIuY2FsLXNlbGVjdGVkIikucmVtb3ZlQ2xhc3MoImNhbC1zZWxlY3RlZCIpLGUoYi50YXJnZXQpLmFkZENsYXNzKCJjYWwtc2VsZWN0ZWQiKSxlKGIudGFyZ2V0KS5oYXNDbGFzcygiY2FsLW91dHNpZGUiKT9hLm9wdGlvbnMuYWx3YXlzU2hvdz8wPGEuc2VsZWN0ZWREYXRlLmRpZmYoYS52aWV3RGF0ZSk\/YS5zbGlkZUxlZnQoKToKYS5zbGlkZVJpZ2h0KCk6KGEudmlld0RhdGU9YS5zZWxlY3RlZERhdGUuY2xvbmUoKS5zZXREYXkoMSksc2V0VGltZW91dChhLnJlbmRlciwzMDApKTpzZXRUaW1lb3V0KGEuaGlkZSwxNTApKTtiPWEuZm9ybWF0KGEuc2VsZWN0ZWREYXRlKTtiPWUoIjx0ZXh0YXJlYSAvPiIpLmh0bWwoYikudGV4dCgpO2lmKCFhLm9wdGlvbnMuaW5qZWN0SW5zaWRlVGFyZ2V0KXN3aXRjaChhLnRhcmdldC5wcm9wKCJ0YWdOYW1lIikudG9Mb3dlckNhc2UoKSl7Y2FzZSAiaW5wdXQiOmEudGFyZ2V0LnZhbChiKTticmVhaztkZWZhdWx0OmEudGFyZ2V0Lmh0bWwoYil9dm9pZCAwIT09YS5oaWRkZW5JbnB1dCYmYS5oaWRkZW5JbnB1dC5zZXQoInZhbHVlIixhLmZvcm1hdChhLnNlbGVjdGVkRGF0ZSxhLm9wdGlvbnMuaGlkZGVuSW5wdXRGb3JtYXQpKTtpZigiZnVuY3Rpb24iPT10eXBlb2YgYS5vcHRpb25zLm9uU2VsZWN0KWEub3B0aW9ucy5vblNlbGVjdChhLnNlbGVjdGVkRGF0ZSk7cmV0dXJuIGF9OwphLmZvcm1hdD1mdW5jdGlvbihiLGMpe3ZvaWQgMD09PWMmJihjPXRoaXMub3B0aW9ucy5mb3JtYXQpO2lmKHZvaWQgMCE9PWIpcmV0dXJuIGM9Yy5yZXBsYWNlKC8lKFthLXolXSkvZ2ksZnVuY3Rpb24oZCxmKXtzd2l0Y2goZil7Y2FzZSAiRCI6cmV0dXJuIGIuZ2V0KCJkYXRlIik7Y2FzZSAibiI6cmV0dXJuIGIuZ2V0KCJtbyIpKzE7Y2FzZSAidCI6cmV0dXJuIHBhcnNlSW50KGIuZ2V0VGltZSgpLzFFMyl9cmV0dXJuIiUiK2Z9KSxiLmZvcm1hdChjKX07YS5vbktleURvd249ZnVuY3Rpb24oYil7aWYoYS5vcHRpb25zLmtleU5hdmlnYXRpb24pe3ZhciBjPWEuc2VsZWN0ZWREYXRlLmNsb25lKCksZD0hMCxmPSExO3N3aXRjaChiLndoaWNoKXtjYXNlIDM3OmMuYWRkKCJkIiwtMSk7Zj0hMDtkPSExO2JyZWFrO2Nhc2UgMzk6Yy5hZGQoImQiLDEpO2Y9ITA7YnJlYWs7Y2FzZSAzODpjLmFkZCgiTSIsLTEpO2Y9ITA7ZD0hMTticmVhaztjYXNlIDQwOmMuYWRkKCJNIiwxKTtmPSEwO2JyZWFrOwpjYXNlIDk6c2V0VGltZW91dChhLmhpZGUsMTUwKX1mJiYoYz1hLmNvcnJlY3REYXRlKGMsZCksMCE9PWEuc2VsZWN0ZWREYXRlLmRpZmYoYykmJmEuc2V0RGF0ZShjKSl9aWYoYS5vcHRpb25zLmRpc2FsbG93VXNlcklucHV0KXJldHVybiExfTthLm9uS2V5VXA9ZnVuY3Rpb24oKXsvXlxkezR9LVxkezJ9LVxkezJ9JC8udGVzdChhLnRhcmdldC52YWwoKSkmJihhLnNldERhdGUobmViRGF0ZUZuLnBhcnNlU3RyaW5nKGEudGFyZ2V0LnZhbCgpKSksYS50YXJnZXQucmVtb3ZlQ2xhc3MoImludmFsaWRJbnB1dCB0b29sdGlwIikucmVtb3ZlQXR0cigidGl0bGUiKSk7L15cZHsyfS0vLnRlc3QoYS50YXJnZXQudmFsKCkpfHwvXlxkezR9LSgxWzMtOV18KFsyLTldWzAtOV0pKS8udGVzdChhLnRhcmdldC52YWwoKSk\/YS50YXJnZXQuYWRkQ2xhc3MoImludmFsaWRJbnB1dCIpLmF0dHIoInRpdGxlIixlLm5lYkxhbmcuaW52YWxpZERhdGVGb3JtYXQpLnRvb2x0aXAoe3Rvb2x0aXBDbGFzczoiYWxidW1fdG9vbHRpcCIsCnBvc2l0aW9uOntteToiY2VudGVyIHRvcCszMCIsYXQ6IiJ9LHNob3c6e2VmZmVjdDoiZmFkZUluIixkdXJhdGlvbjo1MDB9LGNsb3NlOmZ1bmN0aW9uKCl7ZSh0aGlzKS5yZW1vdmUoKX19KTphLnRhcmdldC5yZW1vdmVDbGFzcygiaW52YWxpZElucHV0IHRvb2x0aXAiKS5yZW1vdmVBdHRyKCJ0aXRsZSIpfTthLmNvcnJlY3REYXRlPWZ1bmN0aW9uKGIsYyl7dm9pZCAwPT09YyYmKGM9ITApO3ZvaWQgMCE9PWEub3B0aW9ucy5taW5EYXRlJiYwPGIuZGlmZihhLm9wdGlvbnMubWluRGF0ZSk\/Yj1hLm9wdGlvbnMubWluRGF0ZS5jbG9uZSgpOnZvaWQgMCE9PWEub3B0aW9ucy5tYXhEYXRlJiYwPmIuZGlmZihhLm9wdGlvbnMubWF4RGF0ZSkmJihiPWEub3B0aW9ucy5tYXhEYXRlLmNsb25lKCkpO2Zvcih2YXIgZD0wO3ZvaWQgMCE9PWEub3B0aW9ucy5leGNsdWRlZFdlZWtkYXlzJiZhLm9wdGlvbnMuZXhjbHVkZWRXZWVrZGF5cy5jb250YWlucyhiLmZvcm1hdCgiRSIpLnRvSW50KCkpfHwKdm9pZCAwIT09YS5vcHRpb25zLm1pbkRhdGUmJjA8Yi5kaWZmKGEub3B0aW9ucy5taW5EYXRlKXx8dm9pZCAwIT09YS5vcHRpb25zLm1heERhdGUmJjA+Yi5kaWZmKGEub3B0aW9ucy5tYXhEYXRlKXx8dm9pZCAwIT09YS5vcHRpb25zLmV4Y2x1ZGVkRGF0ZXMmJmEub3B0aW9ucy5leGNsdWRlZERhdGVzLmNvbnRhaW5zKGEuZm9ybWF0KGIsIiV0IikpOyl7aWYoMzE9PWQpYz0hYztlbHNlIGlmKDYyPT1kKXtiPWEub3B0aW9ucy5taW5EYXRlLmNsb25lKCk7YnJlYWt9Yz9iLmFkZCgiZCIsMSk6Yi5hZGQoImQiLC0xKTtkKyt9cmV0dXJuIGJ9O2Euc2V0RGF0ZT1mdW5jdGlvbihiLGMpe3ZvaWQgMD09PWMmJihjPSEwKTtiPW5lYkRhdGVGbi5jbGVhclRpbWUoImRhdGUiPT10eXBlb2YgYj9iOm5lYkRhdGVGbi5wYXJzZVN0cmluZyhiKSk7bnVsbCE9PWImJihhLnNlbGVjdGVkRGF0ZT1hLmNvcnJlY3REYXRlKGIpLGEudmlld0RhdGU9YS5zZWxlY3RlZERhdGUuY2xvbmUoKS5zZXREYXkoMSksCmEucmVuZGVyKCksYyYmYS5waWNrKCkpO3JldHVybiBhfTthLmdldERhdGU9ZnVuY3Rpb24oKXtyZXR1cm4gYS5zZWxlY3RlZERhdGV9O2EuaW5pdCgpfTtlLmZuLm5lYkNhbD1mdW5jdGlvbihoLGcpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtpZih2b2lkIDA9PT1lKHRoaXMpLmRhdGEoIm5lYkNhbCIpKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIGh8fCJvYmplY3QiPT10eXBlb2YgaCl7dmFyIGw9bmV3IGUubmViQ2FsKHRoaXMsaCk7ZSh0aGlzKS5kYXRhKCJuZWJDYWwiLGwpfX1lbHNlIHN3aXRjaChoKXtjYXNlICJjaGFuZ2VWaWV3IjppZigidW5kZWZpbmVkIj09dHlwZW9mIGcpYnJlYWs7ZSh0aGlzKS5kYXRhKCJuZWJDYWwiKS5jaGFuZ2VWaWV3KGcpO2JyZWFrO2Nhc2UgIm1pbkRhdGUiOmlmKCJ1bmRlZmluZWQiPT10eXBlb2YgZylicmVhaztlKHRoaXMpLmRhdGEoIm5lYkNhbCIpLnVwZGF0ZU1pbkRhdGUoZyk7YnJlYWs7Y2FzZSAibWF4RGF0ZSI6aWYoInVuZGVmaW5lZCI9PQp0eXBlb2YgZylicmVhaztlKHRoaXMpLmRhdGEoIm5lYkNhbCIpLnVwZGF0ZU1heERhdGUoZyk7YnJlYWs7Y2FzZSAic2V0RGF0ZSI6aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBnKWJyZWFrO2UodGhpcykuZGF0YSgibmViQ2FsIikuc2V0RGF0ZShnKTticmVhaztjYXNlICJyZXBvc2l0aW9uIjplKHRoaXMpLmRhdGEoIm5lYkNhbCIpLnBvc2l0aW9uKCl9fSl9O2UuZm4uZ2V0Q29vcmRpbmF0ZXM9ZnVuY3Rpb24oaCl7aD1lKHRoaXMpLm9mZnNldCgpO3ZhciBnPWUodGhpcykud2lkdGgoKSxsPWUodGhpcykuaGVpZ2h0KCksYT1lKHdpbmRvdykud2lkdGgoKS1oLmxlZnQtZyxiPWUod2luZG93KS5oZWlnaHQoKS1oLnRvcC1sO3JldHVybnt0b3A6aC50b3AsbGVmdDpoLmxlZnQsd2lkdGg6ZyxoZWlnaHQ6bCxyaWdodDphLGJvdHRvbTpifX19KShqUXVlcnkpOwovKiogL20vanMvdnVlL3Z1ZS5taW4uanMgKiovCi8qIQ0KICogVnVlLmpzIHYyLjYuMTENCiAqIChjKSAyMDE0LTIwMTkgRXZhbiBZb3UNCiAqIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4NCiAqLw0KIWZ1bmN0aW9uKGUsdCl7Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzJiYidW5kZWZpbmVkIiE9dHlwZW9mIG1vZHVsZT9tb2R1bGUuZXhwb3J0cz10KCk6ImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUodCk6KGU9ZXx8c2VsZikuVnVlPXQoKX0odGhpcyxmdW5jdGlvbigpeyJ1c2Ugc3RyaWN0Ijt2YXIgZT1PYmplY3QuZnJlZXplKHt9KTtmdW5jdGlvbiB0KGUpe3JldHVybiBudWxsPT1lfWZ1bmN0aW9uIG4oZSl7cmV0dXJuIG51bGwhPWV9ZnVuY3Rpb24gcihlKXtyZXR1cm4hMD09PWV9ZnVuY3Rpb24gaShlKXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGV8fCJudW1iZXIiPT10eXBlb2YgZXx8InN5bWJvbCI9PXR5cGVvZiBlfHwiYm9vbGVhbiI9PXR5cGVvZiBlfWZ1bmN0aW9uIG8oZSl7cmV0dXJuIG51bGwhPT1lJiYib2JqZWN0Ij09dHlwZW9mIGV9dmFyIGE9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztmdW5jdGlvbiBzKGUpe3JldHVybiJbb2JqZWN0IE9iamVjdF0iPT09YS5jYWxsKGUpfWZ1bmN0aW9uIGMoZSl7dmFyIHQ9cGFyc2VGbG9hdChTdHJpbmcoZSkpO3JldHVybiB0Pj0wJiZNYXRoLmZsb29yKHQpPT09dCYmaXNGaW5pdGUoZSl9ZnVuY3Rpb24gdShlKXtyZXR1cm4gbihlKSYmImZ1bmN0aW9uIj09dHlwZW9mIGUudGhlbiYmImZ1bmN0aW9uIj09dHlwZW9mIGUuY2F0Y2h9ZnVuY3Rpb24gbChlKXtyZXR1cm4gbnVsbD09ZT8iIjpBcnJheS5pc0FycmF5KGUpfHxzKGUpJiZlLnRvU3RyaW5nPT09YT9KU09OLnN0cmluZ2lmeShlLG51bGwsMik6U3RyaW5nKGUpfWZ1bmN0aW9uIGYoZSl7dmFyIHQ9cGFyc2VGbG9hdChlKTtyZXR1cm4gaXNOYU4odCk\/ZTp0fWZ1bmN0aW9uIHAoZSx0KXtmb3IodmFyIG49T2JqZWN0LmNyZWF0ZShudWxsKSxyPWUuc3BsaXQoIiwiKSxpPTA7aTxyLmxlbmd0aDtpKyspbltyW2ldXT0hMDtyZXR1cm4gdD9mdW5jdGlvbihlKXtyZXR1cm4gbltlLnRvTG93ZXJDYXNlKCldfTpmdW5jdGlvbihlKXtyZXR1cm4gbltlXX19dmFyIGQ9cCgic2xvdCxjb21wb25lbnQiLCEwKSx2PXAoImtleSxyZWYsc2xvdCxzbG90LXNjb3BlLGlzIik7ZnVuY3Rpb24gaChlLHQpe2lmKGUubGVuZ3RoKXt2YXIgbj1lLmluZGV4T2YodCk7aWYobj4tMSlyZXR1cm4gZS5zcGxpY2UobiwxKX19dmFyIG09T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtmdW5jdGlvbiB5KGUsdCl7cmV0dXJuIG0uY2FsbChlLHQpfWZ1bmN0aW9uIGcoZSl7dmFyIHQ9T2JqZWN0LmNyZWF0ZShudWxsKTtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIHRbbl18fCh0W25dPWUobikpfX12YXIgXz0vLShcdykvZyxiPWcoZnVuY3Rpb24oZSl7cmV0dXJuIGUucmVwbGFjZShfLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQ\/dC50b1VwcGVyQ2FzZSgpOiIifSl9KSwkPWcoZnVuY3Rpb24oZSl7cmV0dXJuIGUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkrZS5zbGljZSgxKX0pLHc9L1xCKFtBLVpdKS9nLEM9ZyhmdW5jdGlvbihlKXtyZXR1cm4gZS5yZXBsYWNlKHcsIi0kMSIpLnRvTG93ZXJDYXNlKCl9KTt2YXIgeD1GdW5jdGlvbi5wcm90b3R5cGUuYmluZD9mdW5jdGlvbihlLHQpe3JldHVybiBlLmJpbmQodCl9OmZ1bmN0aW9uKGUsdCl7ZnVuY3Rpb24gbihuKXt2YXIgcj1hcmd1bWVudHMubGVuZ3RoO3JldHVybiByP3I+MT9lLmFwcGx5KHQsYXJndW1lbnRzKTplLmNhbGwodCxuKTplLmNhbGwodCl9cmV0dXJuIG4uX2xlbmd0aD1lLmxlbmd0aCxufTtmdW5jdGlvbiBrKGUsdCl7dD10fHwwO2Zvcih2YXIgbj1lLmxlbmd0aC10LHI9bmV3IEFycmF5KG4pO24tLTspcltuXT1lW24rdF07cmV0dXJuIHJ9ZnVuY3Rpb24gQShlLHQpe2Zvcih2YXIgbiBpbiB0KWVbbl09dFtuXTtyZXR1cm4gZX1mdW5jdGlvbiBPKGUpe2Zvcih2YXIgdD17fSxuPTA7bjxlLmxlbmd0aDtuKyspZVtuXSYmQSh0LGVbbl0pO3JldHVybiB0fWZ1bmN0aW9uIFMoZSx0LG4pe312YXIgVD1mdW5jdGlvbihlLHQsbil7cmV0dXJuITF9LEU9ZnVuY3Rpb24oZSl7cmV0dXJuIGV9O2Z1bmN0aW9uIE4oZSx0KXtpZihlPT09dClyZXR1cm4hMDt2YXIgbj1vKGUpLHI9byh0KTtpZighbnx8IXIpcmV0dXJuIW4mJiFyJiZTdHJpbmcoZSk9PT1TdHJpbmcodCk7dHJ5e3ZhciBpPUFycmF5LmlzQXJyYXkoZSksYT1BcnJheS5pc0FycmF5KHQpO2lmKGkmJmEpcmV0dXJuIGUubGVuZ3RoPT09dC5sZW5ndGgmJmUuZXZlcnkoZnVuY3Rpb24oZSxuKXtyZXR1cm4gTihlLHRbbl0pfSk7aWYoZSBpbnN0YW5jZW9mIERhdGUmJnQgaW5zdGFuY2VvZiBEYXRlKXJldHVybiBlLmdldFRpbWUoKT09PXQuZ2V0VGltZSgpO2lmKGl8fGEpcmV0dXJuITE7dmFyIHM9T2JqZWN0LmtleXMoZSksYz1PYmplY3Qua2V5cyh0KTtyZXR1cm4gcy5sZW5ndGg9PT1jLmxlbmd0aCYmcy5ldmVyeShmdW5jdGlvbihuKXtyZXR1cm4gTihlW25dLHRbbl0pfSl9Y2F0Y2goZSl7cmV0dXJuITF9fWZ1bmN0aW9uIGooZSx0KXtmb3IodmFyIG49MDtuPGUubGVuZ3RoO24rKylpZihOKGVbbl0sdCkpcmV0dXJuIG47cmV0dXJuLTF9ZnVuY3Rpb24gRChlKXt2YXIgdD0hMTtyZXR1cm4gZnVuY3Rpb24oKXt0fHwodD0hMCxlLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9fXZhciBMPSJkYXRhLXNlcnZlci1yZW5kZXJlZCIsTT1bImNvbXBvbmVudCIsImRpcmVjdGl2ZSIsImZpbHRlciJdLEk9WyJiZWZvcmVDcmVhdGUiLCJjcmVhdGVkIiwiYmVmb3JlTW91bnQiLCJtb3VudGVkIiwiYmVmb3JlVXBkYXRlIiwidXBkYXRlZCIsImJlZm9yZURlc3Ryb3kiLCJkZXN0cm95ZWQiLCJhY3RpdmF0ZWQiLCJkZWFjdGl2YXRlZCIsImVycm9yQ2FwdHVyZWQiLCJzZXJ2ZXJQcmVmZXRjaCJdLEY9e29wdGlvbk1lcmdlU3RyYXRlZ2llczpPYmplY3QuY3JlYXRlKG51bGwpLHNpbGVudDohMSxwcm9kdWN0aW9uVGlwOiExLGRldnRvb2xzOiExLHBlcmZvcm1hbmNlOiExLGVycm9ySGFuZGxlcjpudWxsLHdhcm5IYW5kbGVyOm51bGwsaWdub3JlZEVsZW1lbnRzOltdLGtleUNvZGVzOk9iamVjdC5jcmVhdGUobnVsbCksaXNSZXNlcnZlZFRhZzpULGlzUmVzZXJ2ZWRBdHRyOlQsaXNVbmtub3duRWxlbWVudDpULGdldFRhZ05hbWVzcGFjZTpTLHBhcnNlUGxhdGZvcm1UYWdOYW1lOkUsbXVzdFVzZVByb3A6VCxhc3luYzohMCxfbGlmZWN5Y2xlSG9va3M6SX0sUD0vYS16QS1aXHUwMEI3XHUwMEMwLVx1MDBENlx1MDBEOC1cdTAwRjZcdTAwRjgtXHUwMzdEXHUwMzdGLVx1MUZGRlx1MjAwQy1cdTIwMERcdTIwM0YtXHUyMDQwXHUyMDcwLVx1MjE4Rlx1MkMwMC1cdTJGRUZcdTMwMDEtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGRkQvO2Z1bmN0aW9uIFIoZSx0LG4scil7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiEhcix3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9KX12YXIgSD1uZXcgUmVnRXhwKCJbXiIrUC5zb3VyY2UrIi4kX1xcZF0iKTt2YXIgQixVPSJfX3Byb3RvX18iaW57fSx6PSJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93LFY9InVuZGVmaW5lZCIhPXR5cGVvZiBXWEVudmlyb25tZW50JiYhIVdYRW52aXJvbm1lbnQucGxhdGZvcm0sSz1WJiZXWEVudmlyb25tZW50LnBsYXRmb3JtLnRvTG93ZXJDYXNlKCksSj16JiZ3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpLHE9SiYmL21zaWV8dHJpZGVudC8udGVzdChKKSxXPUomJkouaW5kZXhPZigibXNpZSA5LjAiKT4wLFo9SiYmSi5pbmRleE9mKCJlZGdlLyIpPjAsRz0oSiYmSi5pbmRleE9mKCJhbmRyb2lkIiksSiYmL2lwaG9uZXxpcGFkfGlwb2R8aW9zLy50ZXN0KEopfHwiaW9zIj09PUspLFg9KEomJi9jaHJvbWVcL1xkKy8udGVzdChKKSxKJiYvcGhhbnRvbWpzLy50ZXN0KEopLEomJkoubWF0Y2goL2ZpcmVmb3hcLyhcZCspLykpLFk9e30ud2F0Y2gsUT0hMTtpZih6KXRyeXt2YXIgZWU9e307T2JqZWN0LmRlZmluZVByb3BlcnR5KGVlLCJwYXNzaXZlIix7Z2V0OmZ1bmN0aW9uKCl7UT0hMH19KSx3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigidGVzdC1wYXNzaXZlIixudWxsLGVlKX1jYXRjaChlKXt9dmFyIHRlPWZ1bmN0aW9uKCl7cmV0dXJuIHZvaWQgMD09PUImJihCPSF6JiYhViYmInVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWwmJihnbG9iYWwucHJvY2VzcyYmInNlcnZlciI9PT1nbG9iYWwucHJvY2Vzcy5lbnYuVlVFX0VOVikpLEJ9LG5lPXomJndpbmRvdy5fX1ZVRV9ERVZUT09MU19HTE9CQUxfSE9PS19fO2Z1bmN0aW9uIHJlKGUpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBlJiYvbmF0aXZlIGNvZGUvLnRlc3QoZS50b1N0cmluZygpKX12YXIgaWUsb2U9InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJnJlKFN5bWJvbCkmJiJ1bmRlZmluZWQiIT10eXBlb2YgUmVmbGVjdCYmcmUoUmVmbGVjdC5vd25LZXlzKTtpZT0idW5kZWZpbmVkIiE9dHlwZW9mIFNldCYmcmUoU2V0KT9TZXQ6ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7dGhpcy5zZXQ9T2JqZWN0LmNyZWF0ZShudWxsKX1yZXR1cm4gZS5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKGUpe3JldHVybiEwPT09dGhpcy5zZXRbZV19LGUucHJvdG90eXBlLmFkZD1mdW5jdGlvbihlKXt0aGlzLnNldFtlXT0hMH0sZS5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLnNldD1PYmplY3QuY3JlYXRlKG51bGwpfSxlfSgpO3ZhciBhZT1TLHNlPTAsY2U9ZnVuY3Rpb24oKXt0aGlzLmlkPXNlKyssdGhpcy5zdWJzPVtdfTtjZS5wcm90b3R5cGUuYWRkU3ViPWZ1bmN0aW9uKGUpe3RoaXMuc3Vicy5wdXNoKGUpfSxjZS5wcm90b3R5cGUucmVtb3ZlU3ViPWZ1bmN0aW9uKGUpe2godGhpcy5zdWJzLGUpfSxjZS5wcm90b3R5cGUuZGVwZW5kPWZ1bmN0aW9uKCl7Y2UudGFyZ2V0JiZjZS50YXJnZXQuYWRkRGVwKHRoaXMpfSxjZS5wcm90b3R5cGUubm90aWZ5PWZ1bmN0aW9uKCl7Zm9yKHZhciBlPXRoaXMuc3Vicy5zbGljZSgpLHQ9MCxuPWUubGVuZ3RoO3Q8bjt0KyspZVt0XS51cGRhdGUoKX0sY2UudGFyZ2V0PW51bGw7dmFyIHVlPVtdO2Z1bmN0aW9uIGxlKGUpe3VlLnB1c2goZSksY2UudGFyZ2V0PWV9ZnVuY3Rpb24gZmUoKXt1ZS5wb3AoKSxjZS50YXJnZXQ9dWVbdWUubGVuZ3RoLTFdfXZhciBwZT1mdW5jdGlvbihlLHQsbixyLGksbyxhLHMpe3RoaXMudGFnPWUsdGhpcy5kYXRhPXQsdGhpcy5jaGlsZHJlbj1uLHRoaXMudGV4dD1yLHRoaXMuZWxtPWksdGhpcy5ucz12b2lkIDAsdGhpcy5jb250ZXh0PW8sdGhpcy5mbkNvbnRleHQ9dm9pZCAwLHRoaXMuZm5PcHRpb25zPXZvaWQgMCx0aGlzLmZuU2NvcGVJZD12b2lkIDAsdGhpcy5rZXk9dCYmdC5rZXksdGhpcy5jb21wb25lbnRPcHRpb25zPWEsdGhpcy5jb21wb25lbnRJbnN0YW5jZT12b2lkIDAsdGhpcy5wYXJlbnQ9dm9pZCAwLHRoaXMucmF3PSExLHRoaXMuaXNTdGF0aWM9ITEsdGhpcy5pc1Jvb3RJbnNlcnQ9ITAsdGhpcy5pc0NvbW1lbnQ9ITEsdGhpcy5pc0Nsb25lZD0hMSx0aGlzLmlzT25jZT0hMSx0aGlzLmFzeW5jRmFjdG9yeT1zLHRoaXMuYXN5bmNNZXRhPXZvaWQgMCx0aGlzLmlzQXN5bmNQbGFjZWhvbGRlcj0hMX0sZGU9e2NoaWxkOntjb25maWd1cmFibGU6ITB9fTtkZS5jaGlsZC5nZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jb21wb25lbnRJbnN0YW5jZX0sT2JqZWN0LmRlZmluZVByb3BlcnRpZXMocGUucHJvdG90eXBlLGRlKTt2YXIgdmU9ZnVuY3Rpb24oZSl7dm9pZCAwPT09ZSYmKGU9IiIpO3ZhciB0PW5ldyBwZTtyZXR1cm4gdC50ZXh0PWUsdC5pc0NvbW1lbnQ9ITAsdH07ZnVuY3Rpb24gaGUoZSl7cmV0dXJuIG5ldyBwZSh2b2lkIDAsdm9pZCAwLHZvaWQgMCxTdHJpbmcoZSkpfWZ1bmN0aW9uIG1lKGUpe3ZhciB0PW5ldyBwZShlLnRhZyxlLmRhdGEsZS5jaGlsZHJlbiYmZS5jaGlsZHJlbi5zbGljZSgpLGUudGV4dCxlLmVsbSxlLmNvbnRleHQsZS5jb21wb25lbnRPcHRpb25zLGUuYXN5bmNGYWN0b3J5KTtyZXR1cm4gdC5ucz1lLm5zLHQuaXNTdGF0aWM9ZS5pc1N0YXRpYyx0LmtleT1lLmtleSx0LmlzQ29tbWVudD1lLmlzQ29tbWVudCx0LmZuQ29udGV4dD1lLmZuQ29udGV4dCx0LmZuT3B0aW9ucz1lLmZuT3B0aW9ucyx0LmZuU2NvcGVJZD1lLmZuU2NvcGVJZCx0LmFzeW5jTWV0YT1lLmFzeW5jTWV0YSx0LmlzQ2xvbmVkPSEwLHR9dmFyIHllPUFycmF5LnByb3RvdHlwZSxnZT1PYmplY3QuY3JlYXRlKHllKTtbInB1c2giLCJwb3AiLCJzaGlmdCIsInVuc2hpZnQiLCJzcGxpY2UiLCJzb3J0IiwicmV2ZXJzZSJdLmZvckVhY2goZnVuY3Rpb24oZSl7dmFyIHQ9eWVbZV07UihnZSxlLGZ1bmN0aW9uKCl7Zm9yKHZhciBuPVtdLHI9YXJndW1lbnRzLmxlbmd0aDtyLS07KW5bcl09YXJndW1lbnRzW3JdO3ZhciBpLG89dC5hcHBseSh0aGlzLG4pLGE9dGhpcy5fX29iX187c3dpdGNoKGUpe2Nhc2UicHVzaCI6Y2FzZSJ1bnNoaWZ0IjppPW47YnJlYWs7Y2FzZSJzcGxpY2UiOmk9bi5zbGljZSgyKX1yZXR1cm4gaSYmYS5vYnNlcnZlQXJyYXkoaSksYS5kZXAubm90aWZ5KCksb30pfSk7dmFyIF9lPU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGdlKSxiZT0hMDtmdW5jdGlvbiAkZShlKXtiZT1lfXZhciB3ZT1mdW5jdGlvbihlKXt2YXIgdDt0aGlzLnZhbHVlPWUsdGhpcy5kZXA9bmV3IGNlLHRoaXMudm1Db3VudD0wLFIoZSwiX19vYl9fIix0aGlzKSxBcnJheS5pc0FycmF5KGUpPyhVPyh0PWdlLGUuX19wcm90b19fPXQpOmZ1bmN0aW9uKGUsdCxuKXtmb3IodmFyIHI9MCxpPW4ubGVuZ3RoO3I8aTtyKyspe3ZhciBvPW5bcl07UihlLG8sdFtvXSl9fShlLGdlLF9lKSx0aGlzLm9ic2VydmVBcnJheShlKSk6dGhpcy53YWxrKGUpfTtmdW5jdGlvbiBDZShlLHQpe3ZhciBuO2lmKG8oZSkmJiEoZSBpbnN0YW5jZW9mIHBlKSlyZXR1cm4geShlLCJfX29iX18iKSYmZS5fX29iX18gaW5zdGFuY2VvZiB3ZT9uPWUuX19vYl9fOmJlJiYhdGUoKSYmKEFycmF5LmlzQXJyYXkoZSl8fHMoZSkpJiZPYmplY3QuaXNFeHRlbnNpYmxlKGUpJiYhZS5faXNWdWUmJihuPW5ldyB3ZShlKSksdCYmbiYmbi52bUNvdW50Kyssbn1mdW5jdGlvbiB4ZShlLHQsbixyLGkpe3ZhciBvPW5ldyBjZSxhPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSx0KTtpZighYXx8ITEhPT1hLmNvbmZpZ3VyYWJsZSl7dmFyIHM9YSYmYS5nZXQsYz1hJiZhLnNldDtzJiYhY3x8MiE9PWFyZ3VtZW50cy5sZW5ndGh8fChuPWVbdF0pO3ZhciB1PSFpJiZDZShuKTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXt2YXIgdD1zP3MuY2FsbChlKTpuO3JldHVybiBjZS50YXJnZXQmJihvLmRlcGVuZCgpLHUmJih1LmRlcC5kZXBlbmQoKSxBcnJheS5pc0FycmF5KHQpJiZmdW5jdGlvbiBlKHQpe2Zvcih2YXIgbj12b2lkIDAscj0wLGk9dC5sZW5ndGg7cjxpO3IrKykobj10W3JdKSYmbi5fX29iX18mJm4uX19vYl9fLmRlcC5kZXBlbmQoKSxBcnJheS5pc0FycmF5KG4pJiZlKG4pfSh0KSkpLHR9LHNldDpmdW5jdGlvbih0KXt2YXIgcj1zP3MuY2FsbChlKTpuO3Q9PT1yfHx0IT10JiZyIT1yfHxzJiYhY3x8KGM\/Yy5jYWxsKGUsdCk6bj10LHU9IWkmJkNlKHQpLG8ubm90aWZ5KCkpfX0pfX1mdW5jdGlvbiBrZShlLHQsbil7aWYoQXJyYXkuaXNBcnJheShlKSYmYyh0KSlyZXR1cm4gZS5sZW5ndGg9TWF0aC5tYXgoZS5sZW5ndGgsdCksZS5zcGxpY2UodCwxLG4pLG47aWYodCBpbiBlJiYhKHQgaW4gT2JqZWN0LnByb3RvdHlwZSkpcmV0dXJuIGVbdF09bixuO3ZhciByPWUuX19vYl9fO3JldHVybiBlLl9pc1Z1ZXx8ciYmci52bUNvdW50P246cj8oeGUoci52YWx1ZSx0LG4pLHIuZGVwLm5vdGlmeSgpLG4pOihlW3RdPW4sbil9ZnVuY3Rpb24gQWUoZSx0KXtpZihBcnJheS5pc0FycmF5KGUpJiZjKHQpKWUuc3BsaWNlKHQsMSk7ZWxzZXt2YXIgbj1lLl9fb2JfXztlLl9pc1Z1ZXx8biYmbi52bUNvdW50fHx5KGUsdCkmJihkZWxldGUgZVt0XSxuJiZuLmRlcC5ub3RpZnkoKSl9fXdlLnByb3RvdHlwZS53YWxrPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1PYmplY3Qua2V5cyhlKSxuPTA7bjx0Lmxlbmd0aDtuKyspeGUoZSx0W25dKX0sd2UucHJvdG90eXBlLm9ic2VydmVBcnJheT1mdW5jdGlvbihlKXtmb3IodmFyIHQ9MCxuPWUubGVuZ3RoO3Q8bjt0KyspQ2UoZVt0XSl9O3ZhciBPZT1GLm9wdGlvbk1lcmdlU3RyYXRlZ2llcztmdW5jdGlvbiBTZShlLHQpe2lmKCF0KXJldHVybiBlO2Zvcih2YXIgbixyLGksbz1vZT9SZWZsZWN0Lm93bktleXModCk6T2JqZWN0LmtleXModCksYT0wO2E8by5sZW5ndGg7YSsrKSJfX29iX18iIT09KG49b1thXSkmJihyPWVbbl0saT10W25dLHkoZSxuKT9yIT09aSYmcyhyKSYmcyhpKSYmU2UocixpKTprZShlLG4saSkpO3JldHVybiBlfWZ1bmN0aW9uIFRlKGUsdCxuKXtyZXR1cm4gbj9mdW5jdGlvbigpe3ZhciByPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3QuY2FsbChuLG4pOnQsaT0iZnVuY3Rpb24iPT10eXBlb2YgZT9lLmNhbGwobixuKTplO3JldHVybiByP1NlKHIsaSk6aX06dD9lP2Z1bmN0aW9uKCl7cmV0dXJuIFNlKCJmdW5jdGlvbiI9PXR5cGVvZiB0P3QuY2FsbCh0aGlzLHRoaXMpOnQsImZ1bmN0aW9uIj09dHlwZW9mIGU\/ZS5jYWxsKHRoaXMsdGhpcyk6ZSl9OnQ6ZX1mdW5jdGlvbiBFZShlLHQpe3ZhciBuPXQ\/ZT9lLmNvbmNhdCh0KTpBcnJheS5pc0FycmF5KHQpP3Q6W3RdOmU7cmV0dXJuIG4\/ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PVtdLG49MDtuPGUubGVuZ3RoO24rKyktMT09PXQuaW5kZXhPZihlW25dKSYmdC5wdXNoKGVbbl0pO3JldHVybiB0fShuKTpufWZ1bmN0aW9uIE5lKGUsdCxuLHIpe3ZhciBpPU9iamVjdC5jcmVhdGUoZXx8bnVsbCk7cmV0dXJuIHQ\/QShpLHQpOml9T2UuZGF0YT1mdW5jdGlvbihlLHQsbil7cmV0dXJuIG4\/VGUoZSx0LG4pOnQmJiJmdW5jdGlvbiIhPXR5cGVvZiB0P2U6VGUoZSx0KX0sSS5mb3JFYWNoKGZ1bmN0aW9uKGUpe09lW2VdPUVlfSksTS5mb3JFYWNoKGZ1bmN0aW9uKGUpe09lW2UrInMiXT1OZX0pLE9lLndhdGNoPWZ1bmN0aW9uKGUsdCxuLHIpe2lmKGU9PT1ZJiYoZT12b2lkIDApLHQ9PT1ZJiYodD12b2lkIDApLCF0KXJldHVybiBPYmplY3QuY3JlYXRlKGV8fG51bGwpO2lmKCFlKXJldHVybiB0O3ZhciBpPXt9O2Zvcih2YXIgbyBpbiBBKGksZSksdCl7dmFyIGE9aVtvXSxzPXRbb107YSYmIUFycmF5LmlzQXJyYXkoYSkmJihhPVthXSksaVtvXT1hP2EuY29uY2F0KHMpOkFycmF5LmlzQXJyYXkocyk\/czpbc119cmV0dXJuIGl9LE9lLnByb3BzPU9lLm1ldGhvZHM9T2UuaW5qZWN0PU9lLmNvbXB1dGVkPWZ1bmN0aW9uKGUsdCxuLHIpe2lmKCFlKXJldHVybiB0O3ZhciBpPU9iamVjdC5jcmVhdGUobnVsbCk7cmV0dXJuIEEoaSxlKSx0JiZBKGksdCksaX0sT2UucHJvdmlkZT1UZTt2YXIgamU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdm9pZCAwPT09dD9lOnR9O2Z1bmN0aW9uIERlKGUsdCxuKXtpZigiZnVuY3Rpb24iPT10eXBlb2YgdCYmKHQ9dC5vcHRpb25zKSxmdW5jdGlvbihlLHQpe3ZhciBuPWUucHJvcHM7aWYobil7dmFyIHIsaSxvPXt9O2lmKEFycmF5LmlzQXJyYXkobikpZm9yKHI9bi5sZW5ndGg7ci0tOykic3RyaW5nIj09dHlwZW9mKGk9bltyXSkmJihvW2IoaSldPXt0eXBlOm51bGx9KTtlbHNlIGlmKHMobikpZm9yKHZhciBhIGluIG4paT1uW2FdLG9bYihhKV09cyhpKT9pOnt0eXBlOml9O2UucHJvcHM9b319KHQpLGZ1bmN0aW9uKGUsdCl7dmFyIG49ZS5pbmplY3Q7aWYobil7dmFyIHI9ZS5pbmplY3Q9e307aWYoQXJyYXkuaXNBcnJheShuKSlmb3IodmFyIGk9MDtpPG4ubGVuZ3RoO2krKylyW25baV1dPXtmcm9tOm5baV19O2Vsc2UgaWYocyhuKSlmb3IodmFyIG8gaW4gbil7dmFyIGE9bltvXTtyW29dPXMoYSk\/QSh7ZnJvbTpvfSxhKTp7ZnJvbTphfX19fSh0KSxmdW5jdGlvbihlKXt2YXIgdD1lLmRpcmVjdGl2ZXM7aWYodClmb3IodmFyIG4gaW4gdCl7dmFyIHI9dFtuXTsiZnVuY3Rpb24iPT10eXBlb2YgciYmKHRbbl09e2JpbmQ6cix1cGRhdGU6cn0pfX0odCksIXQuX2Jhc2UmJih0LmV4dGVuZHMmJihlPURlKGUsdC5leHRlbmRzLG4pKSx0Lm1peGlucykpZm9yKHZhciByPTAsaT10Lm1peGlucy5sZW5ndGg7cjxpO3IrKyllPURlKGUsdC5taXhpbnNbcl0sbik7dmFyIG8sYT17fTtmb3IobyBpbiBlKWMobyk7Zm9yKG8gaW4gdCl5KGUsbyl8fGMobyk7ZnVuY3Rpb24gYyhyKXt2YXIgaT1PZVtyXXx8amU7YVtyXT1pKGVbcl0sdFtyXSxuLHIpfXJldHVybiBhfWZ1bmN0aW9uIExlKGUsdCxuLHIpe2lmKCJzdHJpbmciPT10eXBlb2Ygbil7dmFyIGk9ZVt0XTtpZih5KGksbikpcmV0dXJuIGlbbl07dmFyIG89YihuKTtpZih5KGksbykpcmV0dXJuIGlbb107dmFyIGE9JChvKTtyZXR1cm4geShpLGEpP2lbYV06aVtuXXx8aVtvXXx8aVthXX19ZnVuY3Rpb24gTWUoZSx0LG4scil7dmFyIGk9dFtlXSxvPSF5KG4sZSksYT1uW2VdLHM9UGUoQm9vbGVhbixpLnR5cGUpO2lmKHM+LTEpaWYobyYmIXkoaSwiZGVmYXVsdCIpKWE9ITE7ZWxzZSBpZigiIj09PWF8fGE9PT1DKGUpKXt2YXIgYz1QZShTdHJpbmcsaS50eXBlKTsoYzwwfHxzPGMpJiYoYT0hMCl9aWYodm9pZCAwPT09YSl7YT1mdW5jdGlvbihlLHQsbil7aWYoIXkodCwiZGVmYXVsdCIpKXJldHVybjt2YXIgcj10LmRlZmF1bHQ7aWYoZSYmZS4kb3B0aW9ucy5wcm9wc0RhdGEmJnZvaWQgMD09PWUuJG9wdGlvbnMucHJvcHNEYXRhW25dJiZ2b2lkIDAhPT1lLl9wcm9wc1tuXSlyZXR1cm4gZS5fcHJvcHNbbl07cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHImJiJGdW5jdGlvbiIhPT1JZSh0LnR5cGUpP3IuY2FsbChlKTpyfShyLGksZSk7dmFyIHU9YmU7JGUoITApLENlKGEpLCRlKHUpfXJldHVybiBhfWZ1bmN0aW9uIEllKGUpe3ZhciB0PWUmJmUudG9TdHJpbmcoKS5tYXRjaCgvXlxzKmZ1bmN0aW9uIChcdyspLyk7cmV0dXJuIHQ\/dFsxXToiIn1mdW5jdGlvbiBGZShlLHQpe3JldHVybiBJZShlKT09PUllKHQpfWZ1bmN0aW9uIFBlKGUsdCl7aWYoIUFycmF5LmlzQXJyYXkodCkpcmV0dXJuIEZlKHQsZSk\/MDotMTtmb3IodmFyIG49MCxyPXQubGVuZ3RoO248cjtuKyspaWYoRmUodFtuXSxlKSlyZXR1cm4gbjtyZXR1cm4tMX1mdW5jdGlvbiBSZShlLHQsbil7bGUoKTt0cnl7aWYodClmb3IodmFyIHI9dDtyPXIuJHBhcmVudDspe3ZhciBpPXIuJG9wdGlvbnMuZXJyb3JDYXB0dXJlZDtpZihpKWZvcih2YXIgbz0wO288aS5sZW5ndGg7bysrKXRyeXtpZighMT09PWlbb10uY2FsbChyLGUsdCxuKSlyZXR1cm59Y2F0Y2goZSl7QmUoZSxyLCJlcnJvckNhcHR1cmVkIGhvb2siKX19QmUoZSx0LG4pfWZpbmFsbHl7ZmUoKX19ZnVuY3Rpb24gSGUoZSx0LG4scixpKXt2YXIgbzt0cnl7KG89bj9lLmFwcGx5KHQsbik6ZS5jYWxsKHQpKSYmIW8uX2lzVnVlJiZ1KG8pJiYhby5faGFuZGxlZCYmKG8uY2F0Y2goZnVuY3Rpb24oZSl7cmV0dXJuIFJlKGUscixpKyIgKFByb21pc2UvYXN5bmMpIil9KSxvLl9oYW5kbGVkPSEwKX1jYXRjaChlKXtSZShlLHIsaSl9cmV0dXJuIG99ZnVuY3Rpb24gQmUoZSx0LG4pe2lmKEYuZXJyb3JIYW5kbGVyKXRyeXtyZXR1cm4gRi5lcnJvckhhbmRsZXIuY2FsbChudWxsLGUsdCxuKX1jYXRjaCh0KXt0IT09ZSYmVWUodCxudWxsLCJjb25maWcuZXJyb3JIYW5kbGVyIil9VWUoZSx0LG4pfWZ1bmN0aW9uIFVlKGUsdCxuKXtpZigheiYmIVZ8fCJ1bmRlZmluZWQiPT10eXBlb2YgY29uc29sZSl0aHJvdyBlO2NvbnNvbGUuZXJyb3IoZSl9dmFyIHplLFZlPSExLEtlPVtdLEplPSExO2Z1bmN0aW9uIHFlKCl7SmU9ITE7dmFyIGU9S2Uuc2xpY2UoMCk7S2UubGVuZ3RoPTA7Zm9yKHZhciB0PTA7dDxlLmxlbmd0aDt0KyspZVt0XSgpfWlmKCJ1bmRlZmluZWQiIT10eXBlb2YgUHJvbWlzZSYmcmUoUHJvbWlzZSkpe3ZhciBXZT1Qcm9taXNlLnJlc29sdmUoKTt6ZT1mdW5jdGlvbigpe1dlLnRoZW4ocWUpLEcmJnNldFRpbWVvdXQoUyl9LFZlPSEwfWVsc2UgaWYocXx8InVuZGVmaW5lZCI9PXR5cGVvZiBNdXRhdGlvbk9ic2VydmVyfHwhcmUoTXV0YXRpb25PYnNlcnZlcikmJiJbb2JqZWN0IE11dGF0aW9uT2JzZXJ2ZXJDb25zdHJ1Y3Rvcl0iIT09TXV0YXRpb25PYnNlcnZlci50b1N0cmluZygpKXplPSJ1bmRlZmluZWQiIT10eXBlb2Ygc2V0SW1tZWRpYXRlJiZyZShzZXRJbW1lZGlhdGUpP2Z1bmN0aW9uKCl7c2V0SW1tZWRpYXRlKHFlKX06ZnVuY3Rpb24oKXtzZXRUaW1lb3V0KHFlLDApfTtlbHNle3ZhciBaZT0xLEdlPW5ldyBNdXRhdGlvbk9ic2VydmVyKHFlKSxYZT1kb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShTdHJpbmcoWmUpKTtHZS5vYnNlcnZlKFhlLHtjaGFyYWN0ZXJEYXRhOiEwfSksemU9ZnVuY3Rpb24oKXtaZT0oWmUrMSklMixYZS5kYXRhPVN0cmluZyhaZSl9LFZlPSEwfWZ1bmN0aW9uIFllKGUsdCl7dmFyIG47aWYoS2UucHVzaChmdW5jdGlvbigpe2lmKGUpdHJ5e2UuY2FsbCh0KX1jYXRjaChlKXtSZShlLHQsIm5leHRUaWNrIil9ZWxzZSBuJiZuKHQpfSksSmV8fChKZT0hMCx6ZSgpKSwhZSYmInVuZGVmaW5lZCIhPXR5cGVvZiBQcm9taXNlKXJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihlKXtuPWV9KX12YXIgUWU9bmV3IGllO2Z1bmN0aW9uIGV0KGUpeyFmdW5jdGlvbiBlKHQsbil7dmFyIHIsaTt2YXIgYT1BcnJheS5pc0FycmF5KHQpO2lmKCFhJiYhbyh0KXx8T2JqZWN0LmlzRnJvemVuKHQpfHx0IGluc3RhbmNlb2YgcGUpcmV0dXJuO2lmKHQuX19vYl9fKXt2YXIgcz10Ll9fb2JfXy5kZXAuaWQ7aWYobi5oYXMocykpcmV0dXJuO24uYWRkKHMpfWlmKGEpZm9yKHI9dC5sZW5ndGg7ci0tOyllKHRbcl0sbik7ZWxzZSBmb3IoaT1PYmplY3Qua2V5cyh0KSxyPWkubGVuZ3RoO3ItLTspZSh0W2lbcl1dLG4pfShlLFFlKSxRZS5jbGVhcigpfXZhciB0dD1nKGZ1bmN0aW9uKGUpe3ZhciB0PSImIj09PWUuY2hhckF0KDApLG49In4iPT09KGU9dD9lLnNsaWNlKDEpOmUpLmNoYXJBdCgwKSxyPSIhIj09PShlPW4\/ZS5zbGljZSgxKTplKS5jaGFyQXQoMCk7cmV0dXJue25hbWU6ZT1yP2Uuc2xpY2UoMSk6ZSxvbmNlOm4sY2FwdHVyZTpyLHBhc3NpdmU6dH19KTtmdW5jdGlvbiBudChlLHQpe2Z1bmN0aW9uIG4oKXt2YXIgZT1hcmd1bWVudHMscj1uLmZucztpZighQXJyYXkuaXNBcnJheShyKSlyZXR1cm4gSGUocixudWxsLGFyZ3VtZW50cyx0LCJ2LW9uIGhhbmRsZXIiKTtmb3IodmFyIGk9ci5zbGljZSgpLG89MDtvPGkubGVuZ3RoO28rKylIZShpW29dLG51bGwsZSx0LCJ2LW9uIGhhbmRsZXIiKX1yZXR1cm4gbi5mbnM9ZSxufWZ1bmN0aW9uIHJ0KGUsbixpLG8sYSxzKXt2YXIgYyx1LGwsZjtmb3IoYyBpbiBlKXU9ZVtjXSxsPW5bY10sZj10dChjKSx0KHUpfHwodChsKT8odCh1LmZucykmJih1PWVbY109bnQodSxzKSkscihmLm9uY2UpJiYodT1lW2NdPWEoZi5uYW1lLHUsZi5jYXB0dXJlKSksaShmLm5hbWUsdSxmLmNhcHR1cmUsZi5wYXNzaXZlLGYucGFyYW1zKSk6dSE9PWwmJihsLmZucz11LGVbY109bCkpO2ZvcihjIGluIG4pdChlW2NdKSYmbygoZj10dChjKSkubmFtZSxuW2NdLGYuY2FwdHVyZSl9ZnVuY3Rpb24gaXQoZSxpLG8pe3ZhciBhO2UgaW5zdGFuY2VvZiBwZSYmKGU9ZS5kYXRhLmhvb2t8fChlLmRhdGEuaG9vaz17fSkpO3ZhciBzPWVbaV07ZnVuY3Rpb24gYygpe28uYXBwbHkodGhpcyxhcmd1bWVudHMpLGgoYS5mbnMsYyl9dChzKT9hPW50KFtjXSk6bihzLmZucykmJnIocy5tZXJnZWQpPyhhPXMpLmZucy5wdXNoKGMpOmE9bnQoW3MsY10pLGEubWVyZ2VkPSEwLGVbaV09YX1mdW5jdGlvbiBvdChlLHQscixpLG8pe2lmKG4odCkpe2lmKHkodCxyKSlyZXR1cm4gZVtyXT10W3JdLG98fGRlbGV0ZSB0W3JdLCEwO2lmKHkodCxpKSlyZXR1cm4gZVtyXT10W2ldLG98fGRlbGV0ZSB0W2ldLCEwfXJldHVybiExfWZ1bmN0aW9uIGF0KGUpe3JldHVybiBpKGUpP1toZShlKV06QXJyYXkuaXNBcnJheShlKT9mdW5jdGlvbiBlKG8sYSl7dmFyIHM9W107dmFyIGMsdSxsLGY7Zm9yKGM9MDtjPG8ubGVuZ3RoO2MrKyl0KHU9b1tjXSl8fCJib29sZWFuIj09dHlwZW9mIHV8fChsPXMubGVuZ3RoLTEsZj1zW2xdLEFycmF5LmlzQXJyYXkodSk\/dS5sZW5ndGg+MCYmKHN0KCh1PWUodSwoYXx8IiIpKyJfIitjKSlbMF0pJiZzdChmKSYmKHNbbF09aGUoZi50ZXh0K3VbMF0udGV4dCksdS5zaGlmdCgpKSxzLnB1c2guYXBwbHkocyx1KSk6aSh1KT9zdChmKT9zW2xdPWhlKGYudGV4dCt1KToiIiE9PXUmJnMucHVzaChoZSh1KSk6c3QodSkmJnN0KGYpP3NbbF09aGUoZi50ZXh0K3UudGV4dCk6KHIoby5faXNWTGlzdCkmJm4odS50YWcpJiZ0KHUua2V5KSYmbihhKSYmKHUua2V5PSJfX3ZsaXN0IithKyJfIitjKyJfXyIpLHMucHVzaCh1KSkpO3JldHVybiBzfShlKTp2b2lkIDB9ZnVuY3Rpb24gc3QoZSl7cmV0dXJuIG4oZSkmJm4oZS50ZXh0KSYmITE9PT1lLmlzQ29tbWVudH1mdW5jdGlvbiBjdChlLHQpe2lmKGUpe2Zvcih2YXIgbj1PYmplY3QuY3JlYXRlKG51bGwpLHI9b2U\/UmVmbGVjdC5vd25LZXlzKGUpOk9iamVjdC5rZXlzKGUpLGk9MDtpPHIubGVuZ3RoO2krKyl7dmFyIG89cltpXTtpZigiX19vYl9fIiE9PW8pe2Zvcih2YXIgYT1lW29dLmZyb20scz10O3M7KXtpZihzLl9wcm92aWRlZCYmeShzLl9wcm92aWRlZCxhKSl7bltvXT1zLl9wcm92aWRlZFthXTticmVha31zPXMuJHBhcmVudH1pZighcyYmImRlZmF1bHQiaW4gZVtvXSl7dmFyIGM9ZVtvXS5kZWZhdWx0O25bb109ImZ1bmN0aW9uIj09dHlwZW9mIGM\/Yy5jYWxsKHQpOmN9fX1yZXR1cm4gbn19ZnVuY3Rpb24gdXQoZSx0KXtpZighZXx8IWUubGVuZ3RoKXJldHVybnt9O2Zvcih2YXIgbj17fSxyPTAsaT1lLmxlbmd0aDtyPGk7cisrKXt2YXIgbz1lW3JdLGE9by5kYXRhO2lmKGEmJmEuYXR0cnMmJmEuYXR0cnMuc2xvdCYmZGVsZXRlIGEuYXR0cnMuc2xvdCxvLmNvbnRleHQhPT10JiZvLmZuQ29udGV4dCE9PXR8fCFhfHxudWxsPT1hLnNsb3QpKG4uZGVmYXVsdHx8KG4uZGVmYXVsdD1bXSkpLnB1c2gobyk7ZWxzZXt2YXIgcz1hLnNsb3QsYz1uW3NdfHwobltzXT1bXSk7InRlbXBsYXRlIj09PW8udGFnP2MucHVzaC5hcHBseShjLG8uY2hpbGRyZW58fFtdKTpjLnB1c2gobyl9fWZvcih2YXIgdSBpbiBuKW5bdV0uZXZlcnkobHQpJiZkZWxldGUgblt1XTtyZXR1cm4gbn1mdW5jdGlvbiBsdChlKXtyZXR1cm4gZS5pc0NvbW1lbnQmJiFlLmFzeW5jRmFjdG9yeXx8IiAiPT09ZS50ZXh0fWZ1bmN0aW9uIGZ0KHQsbixyKXt2YXIgaSxvPU9iamVjdC5rZXlzKG4pLmxlbmd0aD4wLGE9dD8hIXQuJHN0YWJsZTohbyxzPXQmJnQuJGtleTtpZih0KXtpZih0Ll9ub3JtYWxpemVkKXJldHVybiB0Ll9ub3JtYWxpemVkO2lmKGEmJnImJnIhPT1lJiZzPT09ci4ka2V5JiYhbyYmIXIuJGhhc05vcm1hbClyZXR1cm4gcjtmb3IodmFyIGMgaW4gaT17fSx0KXRbY10mJiIkIiE9PWNbMF0mJihpW2NdPXB0KG4sYyx0W2NdKSl9ZWxzZSBpPXt9O2Zvcih2YXIgdSBpbiBuKXUgaW4gaXx8KGlbdV09ZHQobix1KSk7cmV0dXJuIHQmJk9iamVjdC5pc0V4dGVuc2libGUodCkmJih0Ll9ub3JtYWxpemVkPWkpLFIoaSwiJHN0YWJsZSIsYSksUihpLCIka2V5IixzKSxSKGksIiRoYXNOb3JtYWwiLG8pLGl9ZnVuY3Rpb24gcHQoZSx0LG4pe3ZhciByPWZ1bmN0aW9uKCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD9uLmFwcGx5KG51bGwsYXJndW1lbnRzKTpuKHt9KTtyZXR1cm4oZT1lJiYib2JqZWN0Ij09dHlwZW9mIGUmJiFBcnJheS5pc0FycmF5KGUpP1tlXTphdChlKSkmJigwPT09ZS5sZW5ndGh8fDE9PT1lLmxlbmd0aCYmZVswXS5pc0NvbW1lbnQpP3ZvaWQgMDplfTtyZXR1cm4gbi5wcm94eSYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7Z2V0OnIsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxyfWZ1bmN0aW9uIGR0KGUsdCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGVbdF19fWZ1bmN0aW9uIHZ0KGUsdCl7dmFyIHIsaSxhLHMsYztpZihBcnJheS5pc0FycmF5KGUpfHwic3RyaW5nIj09dHlwZW9mIGUpZm9yKHI9bmV3IEFycmF5KGUubGVuZ3RoKSxpPTAsYT1lLmxlbmd0aDtpPGE7aSsrKXJbaV09dChlW2ldLGkpO2Vsc2UgaWYoIm51bWJlciI9PXR5cGVvZiBlKWZvcihyPW5ldyBBcnJheShlKSxpPTA7aTxlO2krKylyW2ldPXQoaSsxLGkpO2Vsc2UgaWYobyhlKSlpZihvZSYmZVtTeW1ib2wuaXRlcmF0b3JdKXtyPVtdO2Zvcih2YXIgdT1lW1N5bWJvbC5pdGVyYXRvcl0oKSxsPXUubmV4dCgpOyFsLmRvbmU7KXIucHVzaCh0KGwudmFsdWUsci5sZW5ndGgpKSxsPXUubmV4dCgpfWVsc2UgZm9yKHM9T2JqZWN0LmtleXMoZSkscj1uZXcgQXJyYXkocy5sZW5ndGgpLGk9MCxhPXMubGVuZ3RoO2k8YTtpKyspYz1zW2ldLHJbaV09dChlW2NdLGMsaSk7cmV0dXJuIG4ocil8fChyPVtdKSxyLl9pc1ZMaXN0PSEwLHJ9ZnVuY3Rpb24gaHQoZSx0LG4scil7dmFyIGksbz10aGlzLiRzY29wZWRTbG90c1tlXTtvPyhuPW58fHt9LHImJihuPUEoQSh7fSxyKSxuKSksaT1vKG4pfHx0KTppPXRoaXMuJHNsb3RzW2VdfHx0O3ZhciBhPW4mJm4uc2xvdDtyZXR1cm4gYT90aGlzLiRjcmVhdGVFbGVtZW50KCJ0ZW1wbGF0ZSIse3Nsb3Q6YX0saSk6aX1mdW5jdGlvbiBtdChlKXtyZXR1cm4gTGUodGhpcy4kb3B0aW9ucywiZmlsdGVycyIsZSl8fEV9ZnVuY3Rpb24geXQoZSx0KXtyZXR1cm4gQXJyYXkuaXNBcnJheShlKT8tMT09PWUuaW5kZXhPZih0KTplIT09dH1mdW5jdGlvbiBndChlLHQsbixyLGkpe3ZhciBvPUYua2V5Q29kZXNbdF18fG47cmV0dXJuIGkmJnImJiFGLmtleUNvZGVzW3RdP3l0KGkscik6bz95dChvLGUpOnI\/QyhyKSE9PXQ6dm9pZCAwfWZ1bmN0aW9uIF90KGUsdCxuLHIsaSl7aWYobilpZihvKG4pKXt2YXIgYTtBcnJheS5pc0FycmF5KG4pJiYobj1PKG4pKTt2YXIgcz1mdW5jdGlvbihvKXtpZigiY2xhc3MiPT09b3x8InN0eWxlIj09PW98fHYobykpYT1lO2Vsc2V7dmFyIHM9ZS5hdHRycyYmZS5hdHRycy50eXBlO2E9cnx8Ri5tdXN0VXNlUHJvcCh0LHMsbyk\/ZS5kb21Qcm9wc3x8KGUuZG9tUHJvcHM9e30pOmUuYXR0cnN8fChlLmF0dHJzPXt9KX12YXIgYz1iKG8pLHU9QyhvKTtjIGluIGF8fHUgaW4gYXx8KGFbb109bltvXSxpJiYoKGUub258fChlLm9uPXt9KSlbInVwZGF0ZToiK29dPWZ1bmN0aW9uKGUpe25bb109ZX0pKX07Zm9yKHZhciBjIGluIG4pcyhjKX1lbHNlO3JldHVybiBlfWZ1bmN0aW9uIGJ0KGUsdCl7dmFyIG49dGhpcy5fc3RhdGljVHJlZXN8fCh0aGlzLl9zdGF0aWNUcmVlcz1bXSkscj1uW2VdO3JldHVybiByJiYhdD9yOih3dChyPW5bZV09dGhpcy4kb3B0aW9ucy5zdGF0aWNSZW5kZXJGbnNbZV0uY2FsbCh0aGlzLl9yZW5kZXJQcm94eSxudWxsLHRoaXMpLCJfX3N0YXRpY19fIitlLCExKSxyKX1mdW5jdGlvbiAkdChlLHQsbil7cmV0dXJuIHd0KGUsIl9fb25jZV9fIit0KyhuPyJfIituOiIiKSwhMCksZX1mdW5jdGlvbiB3dChlLHQsbil7aWYoQXJyYXkuaXNBcnJheShlKSlmb3IodmFyIHI9MDtyPGUubGVuZ3RoO3IrKyllW3JdJiYic3RyaW5nIiE9dHlwZW9mIGVbcl0mJkN0KGVbcl0sdCsiXyIrcixuKTtlbHNlIEN0KGUsdCxuKX1mdW5jdGlvbiBDdChlLHQsbil7ZS5pc1N0YXRpYz0hMCxlLmtleT10LGUuaXNPbmNlPW59ZnVuY3Rpb24geHQoZSx0KXtpZih0KWlmKHModCkpe3ZhciBuPWUub249ZS5vbj9BKHt9LGUub24pOnt9O2Zvcih2YXIgciBpbiB0KXt2YXIgaT1uW3JdLG89dFtyXTtuW3JdPWk\/W10uY29uY2F0KGksbyk6b319ZWxzZTtyZXR1cm4gZX1mdW5jdGlvbiBrdChlLHQsbixyKXt0PXR8fHskc3RhYmxlOiFufTtmb3IodmFyIGk9MDtpPGUubGVuZ3RoO2krKyl7dmFyIG89ZVtpXTtBcnJheS5pc0FycmF5KG8pP2t0KG8sdCxuKTpvJiYoby5wcm94eSYmKG8uZm4ucHJveHk9ITApLHRbby5rZXldPW8uZm4pfXJldHVybiByJiYodC4ka2V5PXIpLHR9ZnVuY3Rpb24gQXQoZSx0KXtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rPTIpe3ZhciByPXRbbl07InN0cmluZyI9PXR5cGVvZiByJiZyJiYoZVt0W25dXT10W24rMV0pfXJldHVybiBlfWZ1bmN0aW9uIE90KGUsdCl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBlP3QrZTplfWZ1bmN0aW9uIFN0KGUpe2UuX289JHQsZS5fbj1mLGUuX3M9bCxlLl9sPXZ0LGUuX3Q9aHQsZS5fcT1OLGUuX2k9aixlLl9tPWJ0LGUuX2Y9bXQsZS5faz1ndCxlLl9iPV90LGUuX3Y9aGUsZS5fZT12ZSxlLl91PWt0LGUuX2c9eHQsZS5fZD1BdCxlLl9wPU90fWZ1bmN0aW9uIFR0KHQsbixpLG8sYSl7dmFyIHMsYz10aGlzLHU9YS5vcHRpb25zO3kobywiX3VpZCIpPyhzPU9iamVjdC5jcmVhdGUobykpLl9vcmlnaW5hbD1vOihzPW8sbz1vLl9vcmlnaW5hbCk7dmFyIGw9cih1Ll9jb21waWxlZCksZj0hbDt0aGlzLmRhdGE9dCx0aGlzLnByb3BzPW4sdGhpcy5jaGlsZHJlbj1pLHRoaXMucGFyZW50PW8sdGhpcy5saXN0ZW5lcnM9dC5vbnx8ZSx0aGlzLmluamVjdGlvbnM9Y3QodS5pbmplY3QsbyksdGhpcy5zbG90cz1mdW5jdGlvbigpe3JldHVybiBjLiRzbG90c3x8ZnQodC5zY29wZWRTbG90cyxjLiRzbG90cz11dChpLG8pKSxjLiRzbG90c30sT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsInNjb3BlZFNsb3RzIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZnQodC5zY29wZWRTbG90cyx0aGlzLnNsb3RzKCkpfX0pLGwmJih0aGlzLiRvcHRpb25zPXUsdGhpcy4kc2xvdHM9dGhpcy5zbG90cygpLHRoaXMuJHNjb3BlZFNsb3RzPWZ0KHQuc2NvcGVkU2xvdHMsdGhpcy4kc2xvdHMpKSx1Ll9zY29wZUlkP3RoaXMuX2M9ZnVuY3Rpb24oZSx0LG4scil7dmFyIGk9UHQocyxlLHQsbixyLGYpO3JldHVybiBpJiYhQXJyYXkuaXNBcnJheShpKSYmKGkuZm5TY29wZUlkPXUuX3Njb3BlSWQsaS5mbkNvbnRleHQ9byksaX06dGhpcy5fYz1mdW5jdGlvbihlLHQsbixyKXtyZXR1cm4gUHQocyxlLHQsbixyLGYpfX1mdW5jdGlvbiBFdChlLHQsbixyLGkpe3ZhciBvPW1lKGUpO3JldHVybiBvLmZuQ29udGV4dD1uLG8uZm5PcHRpb25zPXIsdC5zbG90JiYoKG8uZGF0YXx8KG8uZGF0YT17fSkpLnNsb3Q9dC5zbG90KSxvfWZ1bmN0aW9uIE50KGUsdCl7Zm9yKHZhciBuIGluIHQpZVtiKG4pXT10W25dfVN0KFR0LnByb3RvdHlwZSk7dmFyIGp0PXtpbml0OmZ1bmN0aW9uKGUsdCl7aWYoZS5jb21wb25lbnRJbnN0YW5jZSYmIWUuY29tcG9uZW50SW5zdGFuY2UuX2lzRGVzdHJveWVkJiZlLmRhdGEua2VlcEFsaXZlKXt2YXIgcj1lO2p0LnByZXBhdGNoKHIscil9ZWxzZXsoZS5jb21wb25lbnRJbnN0YW5jZT1mdW5jdGlvbihlLHQpe3ZhciByPXtfaXNDb21wb25lbnQ6ITAsX3BhcmVudFZub2RlOmUscGFyZW50OnR9LGk9ZS5kYXRhLmlubGluZVRlbXBsYXRlO24oaSkmJihyLnJlbmRlcj1pLnJlbmRlcixyLnN0YXRpY1JlbmRlckZucz1pLnN0YXRpY1JlbmRlckZucyk7cmV0dXJuIG5ldyBlLmNvbXBvbmVudE9wdGlvbnMuQ3RvcihyKX0oZSxXdCkpLiRtb3VudCh0P2UuZWxtOnZvaWQgMCx0KX19LHByZXBhdGNoOmZ1bmN0aW9uKHQsbil7dmFyIHI9bi5jb21wb25lbnRPcHRpb25zOyFmdW5jdGlvbih0LG4scixpLG8pe3ZhciBhPWkuZGF0YS5zY29wZWRTbG90cyxzPXQuJHNjb3BlZFNsb3RzLGM9ISEoYSYmIWEuJHN0YWJsZXx8cyE9PWUmJiFzLiRzdGFibGV8fGEmJnQuJHNjb3BlZFNsb3RzLiRrZXkhPT1hLiRrZXkpLHU9ISEob3x8dC4kb3B0aW9ucy5fcmVuZGVyQ2hpbGRyZW58fGMpO3QuJG9wdGlvbnMuX3BhcmVudFZub2RlPWksdC4kdm5vZGU9aSx0Ll92bm9kZSYmKHQuX3Zub2RlLnBhcmVudD1pKTtpZih0LiRvcHRpb25zLl9yZW5kZXJDaGlsZHJlbj1vLHQuJGF0dHJzPWkuZGF0YS5hdHRyc3x8ZSx0LiRsaXN0ZW5lcnM9cnx8ZSxuJiZ0LiRvcHRpb25zLnByb3BzKXskZSghMSk7Zm9yKHZhciBsPXQuX3Byb3BzLGY9dC4kb3B0aW9ucy5fcHJvcEtleXN8fFtdLHA9MDtwPGYubGVuZ3RoO3ArKyl7dmFyIGQ9ZltwXSx2PXQuJG9wdGlvbnMucHJvcHM7bFtkXT1NZShkLHYsbix0KX0kZSghMCksdC4kb3B0aW9ucy5wcm9wc0RhdGE9bn1yPXJ8fGU7dmFyIGg9dC4kb3B0aW9ucy5fcGFyZW50TGlzdGVuZXJzO3QuJG9wdGlvbnMuX3BhcmVudExpc3RlbmVycz1yLHF0KHQscixoKSx1JiYodC4kc2xvdHM9dXQobyxpLmNvbnRleHQpLHQuJGZvcmNlVXBkYXRlKCkpfShuLmNvbXBvbmVudEluc3RhbmNlPXQuY29tcG9uZW50SW5zdGFuY2Usci5wcm9wc0RhdGEsci5saXN0ZW5lcnMsbixyLmNoaWxkcmVuKX0saW5zZXJ0OmZ1bmN0aW9uKGUpe3ZhciB0LG49ZS5jb250ZXh0LHI9ZS5jb21wb25lbnRJbnN0YW5jZTtyLl9pc01vdW50ZWR8fChyLl9pc01vdW50ZWQ9ITAsWXQociwibW91bnRlZCIpKSxlLmRhdGEua2VlcEFsaXZlJiYobi5faXNNb3VudGVkPygodD1yKS5faW5hY3RpdmU9ITEsZW4ucHVzaCh0KSk6WHQociwhMCkpfSxkZXN0cm95OmZ1bmN0aW9uKGUpe3ZhciB0PWUuY29tcG9uZW50SW5zdGFuY2U7dC5faXNEZXN0cm95ZWR8fChlLmRhdGEua2VlcEFsaXZlP2Z1bmN0aW9uIGUodCxuKXtpZihuJiYodC5fZGlyZWN0SW5hY3RpdmU9ITAsR3QodCkpKXJldHVybjtpZighdC5faW5hY3RpdmUpe3QuX2luYWN0aXZlPSEwO2Zvcih2YXIgcj0wO3I8dC4kY2hpbGRyZW4ubGVuZ3RoO3IrKyllKHQuJGNoaWxkcmVuW3JdKTtZdCh0LCJkZWFjdGl2YXRlZCIpfX0odCwhMCk6dC4kZGVzdHJveSgpKX19LER0PU9iamVjdC5rZXlzKGp0KTtmdW5jdGlvbiBMdChpLGEscyxjLGwpe2lmKCF0KGkpKXt2YXIgZj1zLiRvcHRpb25zLl9iYXNlO2lmKG8oaSkmJihpPWYuZXh0ZW5kKGkpKSwiZnVuY3Rpb24iPT10eXBlb2YgaSl7dmFyIHA7aWYodChpLmNpZCkmJnZvaWQgMD09PShpPWZ1bmN0aW9uKGUsaSl7aWYocihlLmVycm9yKSYmbihlLmVycm9yQ29tcCkpcmV0dXJuIGUuZXJyb3JDb21wO2lmKG4oZS5yZXNvbHZlZCkpcmV0dXJuIGUucmVzb2x2ZWQ7dmFyIGE9SHQ7YSYmbihlLm93bmVycykmJi0xPT09ZS5vd25lcnMuaW5kZXhPZihhKSYmZS5vd25lcnMucHVzaChhKTtpZihyKGUubG9hZGluZykmJm4oZS5sb2FkaW5nQ29tcCkpcmV0dXJuIGUubG9hZGluZ0NvbXA7aWYoYSYmIW4oZS5vd25lcnMpKXt2YXIgcz1lLm93bmVycz1bYV0sYz0hMCxsPW51bGwsZj1udWxsO2EuJG9uKCJob29rOmRlc3Ryb3llZCIsZnVuY3Rpb24oKXtyZXR1cm4gaChzLGEpfSk7dmFyIHA9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTAsbj1zLmxlbmd0aDt0PG47dCsrKXNbdF0uJGZvcmNlVXBkYXRlKCk7ZSYmKHMubGVuZ3RoPTAsbnVsbCE9PWwmJihjbGVhclRpbWVvdXQobCksbD1udWxsKSxudWxsIT09ZiYmKGNsZWFyVGltZW91dChmKSxmPW51bGwpKX0sZD1EKGZ1bmN0aW9uKHQpe2UucmVzb2x2ZWQ9QnQodCxpKSxjP3MubGVuZ3RoPTA6cCghMCl9KSx2PUQoZnVuY3Rpb24odCl7bihlLmVycm9yQ29tcCkmJihlLmVycm9yPSEwLHAoITApKX0pLG09ZShkLHYpO3JldHVybiBvKG0pJiYodShtKT90KGUucmVzb2x2ZWQpJiZtLnRoZW4oZCx2KTp1KG0uY29tcG9uZW50KSYmKG0uY29tcG9uZW50LnRoZW4oZCx2KSxuKG0uZXJyb3IpJiYoZS5lcnJvckNvbXA9QnQobS5lcnJvcixpKSksbihtLmxvYWRpbmcpJiYoZS5sb2FkaW5nQ29tcD1CdChtLmxvYWRpbmcsaSksMD09PW0uZGVsYXk\/ZS5sb2FkaW5nPSEwOmw9c2V0VGltZW91dChmdW5jdGlvbigpe2w9bnVsbCx0KGUucmVzb2x2ZWQpJiZ0KGUuZXJyb3IpJiYoZS5sb2FkaW5nPSEwLHAoITEpKX0sbS5kZWxheXx8MjAwKSksbihtLnRpbWVvdXQpJiYoZj1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Zj1udWxsLHQoZS5yZXNvbHZlZCkmJnYobnVsbCl9LG0udGltZW91dCkpKSksYz0hMSxlLmxvYWRpbmc\/ZS5sb2FkaW5nQ29tcDplLnJlc29sdmVkfX0ocD1pLGYpKSlyZXR1cm4gZnVuY3Rpb24oZSx0LG4scixpKXt2YXIgbz12ZSgpO3JldHVybiBvLmFzeW5jRmFjdG9yeT1lLG8uYXN5bmNNZXRhPXtkYXRhOnQsY29udGV4dDpuLGNoaWxkcmVuOnIsdGFnOml9LG99KHAsYSxzLGMsbCk7YT1hfHx7fSwkbihpKSxuKGEubW9kZWwpJiZmdW5jdGlvbihlLHQpe3ZhciByPWUubW9kZWwmJmUubW9kZWwucHJvcHx8InZhbHVlIixpPWUubW9kZWwmJmUubW9kZWwuZXZlbnR8fCJpbnB1dCI7KHQuYXR0cnN8fCh0LmF0dHJzPXt9KSlbcl09dC5tb2RlbC52YWx1ZTt2YXIgbz10Lm9ufHwodC5vbj17fSksYT1vW2ldLHM9dC5tb2RlbC5jYWxsYmFjaztuKGEpPyhBcnJheS5pc0FycmF5KGEpPy0xPT09YS5pbmRleE9mKHMpOmEhPT1zKSYmKG9baV09W3NdLmNvbmNhdChhKSk6b1tpXT1zfShpLm9wdGlvbnMsYSk7dmFyIGQ9ZnVuY3Rpb24oZSxyLGkpe3ZhciBvPXIub3B0aW9ucy5wcm9wcztpZighdChvKSl7dmFyIGE9e30scz1lLmF0dHJzLGM9ZS5wcm9wcztpZihuKHMpfHxuKGMpKWZvcih2YXIgdSBpbiBvKXt2YXIgbD1DKHUpO290KGEsYyx1LGwsITApfHxvdChhLHMsdSxsLCExKX1yZXR1cm4gYX19KGEsaSk7aWYocihpLm9wdGlvbnMuZnVuY3Rpb25hbCkpcmV0dXJuIGZ1bmN0aW9uKHQscixpLG8sYSl7dmFyIHM9dC5vcHRpb25zLGM9e30sdT1zLnByb3BzO2lmKG4odSkpZm9yKHZhciBsIGluIHUpY1tsXT1NZShsLHUscnx8ZSk7ZWxzZSBuKGkuYXR0cnMpJiZOdChjLGkuYXR0cnMpLG4oaS5wcm9wcykmJk50KGMsaS5wcm9wcyk7dmFyIGY9bmV3IFR0KGksYyxhLG8sdCkscD1zLnJlbmRlci5jYWxsKG51bGwsZi5fYyxmKTtpZihwIGluc3RhbmNlb2YgcGUpcmV0dXJuIEV0KHAsaSxmLnBhcmVudCxzKTtpZihBcnJheS5pc0FycmF5KHApKXtmb3IodmFyIGQ9YXQocCl8fFtdLHY9bmV3IEFycmF5KGQubGVuZ3RoKSxoPTA7aDxkLmxlbmd0aDtoKyspdltoXT1FdChkW2hdLGksZi5wYXJlbnQscyk7cmV0dXJuIHZ9fShpLGQsYSxzLGMpO3ZhciB2PWEub247aWYoYS5vbj1hLm5hdGl2ZU9uLHIoaS5vcHRpb25zLmFic3RyYWN0KSl7dmFyIG09YS5zbG90O2E9e30sbSYmKGEuc2xvdD1tKX0hZnVuY3Rpb24oZSl7Zm9yKHZhciB0PWUuaG9va3x8KGUuaG9vaz17fSksbj0wO248RHQubGVuZ3RoO24rKyl7dmFyIHI9RHRbbl0saT10W3JdLG89anRbcl07aT09PW98fGkmJmkuX21lcmdlZHx8KHRbcl09aT9NdChvLGkpOm8pfX0oYSk7dmFyIHk9aS5vcHRpb25zLm5hbWV8fGw7cmV0dXJuIG5ldyBwZSgidnVlLWNvbXBvbmVudC0iK2kuY2lkKyh5PyItIit5OiIiKSxhLHZvaWQgMCx2b2lkIDAsdm9pZCAwLHMse0N0b3I6aSxwcm9wc0RhdGE6ZCxsaXN0ZW5lcnM6dix0YWc6bCxjaGlsZHJlbjpjfSxwKX19fWZ1bmN0aW9uIE10KGUsdCl7dmFyIG49ZnVuY3Rpb24obixyKXtlKG4sciksdChuLHIpfTtyZXR1cm4gbi5fbWVyZ2VkPSEwLG59dmFyIEl0PTEsRnQ9MjtmdW5jdGlvbiBQdChlLGEscyxjLHUsbCl7cmV0dXJuKEFycmF5LmlzQXJyYXkocyl8fGkocykpJiYodT1jLGM9cyxzPXZvaWQgMCkscihsKSYmKHU9RnQpLGZ1bmN0aW9uKGUsaSxhLHMsYyl7aWYobihhKSYmbihhLl9fb2JfXykpcmV0dXJuIHZlKCk7bihhKSYmbihhLmlzKSYmKGk9YS5pcyk7aWYoIWkpcmV0dXJuIHZlKCk7QXJyYXkuaXNBcnJheShzKSYmImZ1bmN0aW9uIj09dHlwZW9mIHNbMF0mJigoYT1hfHx7fSkuc2NvcGVkU2xvdHM9e2RlZmF1bHQ6c1swXX0scy5sZW5ndGg9MCk7Yz09PUZ0P3M9YXQocyk6Yz09PUl0JiYocz1mdW5jdGlvbihlKXtmb3IodmFyIHQ9MDt0PGUubGVuZ3RoO3QrKylpZihBcnJheS5pc0FycmF5KGVbdF0pKXJldHVybiBBcnJheS5wcm90b3R5cGUuY29uY2F0LmFwcGx5KFtdLGUpO3JldHVybiBlfShzKSk7dmFyIHUsbDtpZigic3RyaW5nIj09dHlwZW9mIGkpe3ZhciBmO2w9ZS4kdm5vZGUmJmUuJHZub2RlLm5zfHxGLmdldFRhZ05hbWVzcGFjZShpKSx1PUYuaXNSZXNlcnZlZFRhZyhpKT9uZXcgcGUoRi5wYXJzZVBsYXRmb3JtVGFnTmFtZShpKSxhLHMsdm9pZCAwLHZvaWQgMCxlKTphJiZhLnByZXx8IW4oZj1MZShlLiRvcHRpb25zLCJjb21wb25lbnRzIixpKSk\/bmV3IHBlKGksYSxzLHZvaWQgMCx2b2lkIDAsZSk6THQoZixhLGUscyxpKX1lbHNlIHU9THQoaSxhLGUscyk7cmV0dXJuIEFycmF5LmlzQXJyYXkodSk\/dTpuKHUpPyhuKGwpJiZmdW5jdGlvbiBlKGksbyxhKXtpLm5zPW87ImZvcmVpZ25PYmplY3QiPT09aS50YWcmJihvPXZvaWQgMCxhPSEwKTtpZihuKGkuY2hpbGRyZW4pKWZvcih2YXIgcz0wLGM9aS5jaGlsZHJlbi5sZW5ndGg7czxjO3MrKyl7dmFyIHU9aS5jaGlsZHJlbltzXTtuKHUudGFnKSYmKHQodS5ucyl8fHIoYSkmJiJzdmciIT09dS50YWcpJiZlKHUsbyxhKX19KHUsbCksbihhKSYmZnVuY3Rpb24oZSl7byhlLnN0eWxlKSYmZXQoZS5zdHlsZSk7byhlLmNsYXNzKSYmZXQoZS5jbGFzcyl9KGEpLHUpOnZlKCl9KGUsYSxzLGMsdSl9dmFyIFJ0LEh0PW51bGw7ZnVuY3Rpb24gQnQoZSx0KXtyZXR1cm4oZS5fX2VzTW9kdWxlfHxvZSYmIk1vZHVsZSI9PT1lW1N5bWJvbC50b1N0cmluZ1RhZ10pJiYoZT1lLmRlZmF1bHQpLG8oZSk\/dC5leHRlbmQoZSk6ZX1mdW5jdGlvbiBVdChlKXtyZXR1cm4gZS5pc0NvbW1lbnQmJmUuYXN5bmNGYWN0b3J5fWZ1bmN0aW9uIHp0KGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpZm9yKHZhciB0PTA7dDxlLmxlbmd0aDt0Kyspe3ZhciByPWVbdF07aWYobihyKSYmKG4oci5jb21wb25lbnRPcHRpb25zKXx8VXQocikpKXJldHVybiByfX1mdW5jdGlvbiBWdChlLHQpe1J0LiRvbihlLHQpfWZ1bmN0aW9uIEt0KGUsdCl7UnQuJG9mZihlLHQpfWZ1bmN0aW9uIEp0KGUsdCl7dmFyIG49UnQ7cmV0dXJuIGZ1bmN0aW9uIHIoKXtudWxsIT09dC5hcHBseShudWxsLGFyZ3VtZW50cykmJm4uJG9mZihlLHIpfX1mdW5jdGlvbiBxdChlLHQsbil7UnQ9ZSxydCh0LG58fHt9LFZ0LEt0LEp0LGUpLFJ0PXZvaWQgMH12YXIgV3Q9bnVsbDtmdW5jdGlvbiBadChlKXt2YXIgdD1XdDtyZXR1cm4gV3Q9ZSxmdW5jdGlvbigpe1d0PXR9fWZ1bmN0aW9uIEd0KGUpe2Zvcig7ZSYmKGU9ZS4kcGFyZW50KTspaWYoZS5faW5hY3RpdmUpcmV0dXJuITA7cmV0dXJuITF9ZnVuY3Rpb24gWHQoZSx0KXtpZih0KXtpZihlLl9kaXJlY3RJbmFjdGl2ZT0hMSxHdChlKSlyZXR1cm59ZWxzZSBpZihlLl9kaXJlY3RJbmFjdGl2ZSlyZXR1cm47aWYoZS5faW5hY3RpdmV8fG51bGw9PT1lLl9pbmFjdGl2ZSl7ZS5faW5hY3RpdmU9ITE7Zm9yKHZhciBuPTA7bjxlLiRjaGlsZHJlbi5sZW5ndGg7bisrKVh0KGUuJGNoaWxkcmVuW25dKTtZdChlLCJhY3RpdmF0ZWQiKX19ZnVuY3Rpb24gWXQoZSx0KXtsZSgpO3ZhciBuPWUuJG9wdGlvbnNbdF0scj10KyIgaG9vayI7aWYobilmb3IodmFyIGk9MCxvPW4ubGVuZ3RoO2k8bztpKyspSGUobltpXSxlLG51bGwsZSxyKTtlLl9oYXNIb29rRXZlbnQmJmUuJGVtaXQoImhvb2s6Iit0KSxmZSgpfXZhciBRdD1bXSxlbj1bXSx0bj17fSxubj0hMSxybj0hMSxvbj0wO3ZhciBhbj0wLHNuPURhdGUubm93O2lmKHomJiFxKXt2YXIgY249d2luZG93LnBlcmZvcm1hbmNlO2NuJiYiZnVuY3Rpb24iPT10eXBlb2YgY24ubm93JiZzbigpPmRvY3VtZW50LmNyZWF0ZUV2ZW50KCJFdmVudCIpLnRpbWVTdGFtcCYmKHNuPWZ1bmN0aW9uKCl7cmV0dXJuIGNuLm5vdygpfSl9ZnVuY3Rpb24gdW4oKXt2YXIgZSx0O2Zvcihhbj1zbigpLHJuPSEwLFF0LnNvcnQoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5pZC10LmlkfSksb249MDtvbjxRdC5sZW5ndGg7b24rKykoZT1RdFtvbl0pLmJlZm9yZSYmZS5iZWZvcmUoKSx0PWUuaWQsdG5bdF09bnVsbCxlLnJ1bigpO3ZhciBuPWVuLnNsaWNlKCkscj1RdC5zbGljZSgpO29uPVF0Lmxlbmd0aD1lbi5sZW5ndGg9MCx0bj17fSxubj1ybj0hMSxmdW5jdGlvbihlKXtmb3IodmFyIHQ9MDt0PGUubGVuZ3RoO3QrKyllW3RdLl9pbmFjdGl2ZT0hMCxYdChlW3RdLCEwKX0obiksZnVuY3Rpb24oZSl7dmFyIHQ9ZS5sZW5ndGg7Zm9yKDt0LS07KXt2YXIgbj1lW3RdLHI9bi52bTtyLl93YXRjaGVyPT09biYmci5faXNNb3VudGVkJiYhci5faXNEZXN0cm95ZWQmJll0KHIsInVwZGF0ZWQiKX19KHIpLG5lJiZGLmRldnRvb2xzJiZuZS5lbWl0KCJmbHVzaCIpfXZhciBsbj0wLGZuPWZ1bmN0aW9uKGUsdCxuLHIsaSl7dGhpcy52bT1lLGkmJihlLl93YXRjaGVyPXRoaXMpLGUuX3dhdGNoZXJzLnB1c2godGhpcykscj8odGhpcy5kZWVwPSEhci5kZWVwLHRoaXMudXNlcj0hIXIudXNlcix0aGlzLmxhenk9ISFyLmxhenksdGhpcy5zeW5jPSEhci5zeW5jLHRoaXMuYmVmb3JlPXIuYmVmb3JlKTp0aGlzLmRlZXA9dGhpcy51c2VyPXRoaXMubGF6eT10aGlzLnN5bmM9ITEsdGhpcy5jYj1uLHRoaXMuaWQ9Kytsbix0aGlzLmFjdGl2ZT0hMCx0aGlzLmRpcnR5PXRoaXMubGF6eSx0aGlzLmRlcHM9W10sdGhpcy5uZXdEZXBzPVtdLHRoaXMuZGVwSWRzPW5ldyBpZSx0aGlzLm5ld0RlcElkcz1uZXcgaWUsdGhpcy5leHByZXNzaW9uPSIiLCJmdW5jdGlvbiI9PXR5cGVvZiB0P3RoaXMuZ2V0dGVyPXQ6KHRoaXMuZ2V0dGVyPWZ1bmN0aW9uKGUpe2lmKCFILnRlc3QoZSkpe3ZhciB0PWUuc3BsaXQoIi4iKTtyZXR1cm4gZnVuY3Rpb24oZSl7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspe2lmKCFlKXJldHVybjtlPWVbdFtuXV19cmV0dXJuIGV9fX0odCksdGhpcy5nZXR0ZXJ8fCh0aGlzLmdldHRlcj1TKSksdGhpcy52YWx1ZT10aGlzLmxhenk\/dm9pZCAwOnRoaXMuZ2V0KCl9O2ZuLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24oKXt2YXIgZTtsZSh0aGlzKTt2YXIgdD10aGlzLnZtO3RyeXtlPXRoaXMuZ2V0dGVyLmNhbGwodCx0KX1jYXRjaChlKXtpZighdGhpcy51c2VyKXRocm93IGU7UmUoZSx0LCdnZXR0ZXIgZm9yIHdhdGNoZXIgIicrdGhpcy5leHByZXNzaW9uKyciJyl9ZmluYWxseXt0aGlzLmRlZXAmJmV0KGUpLGZlKCksdGhpcy5jbGVhbnVwRGVwcygpfXJldHVybiBlfSxmbi5wcm90b3R5cGUuYWRkRGVwPWZ1bmN0aW9uKGUpe3ZhciB0PWUuaWQ7dGhpcy5uZXdEZXBJZHMuaGFzKHQpfHwodGhpcy5uZXdEZXBJZHMuYWRkKHQpLHRoaXMubmV3RGVwcy5wdXNoKGUpLHRoaXMuZGVwSWRzLmhhcyh0KXx8ZS5hZGRTdWIodGhpcykpfSxmbi5wcm90b3R5cGUuY2xlYW51cERlcHM9ZnVuY3Rpb24oKXtmb3IodmFyIGU9dGhpcy5kZXBzLmxlbmd0aDtlLS07KXt2YXIgdD10aGlzLmRlcHNbZV07dGhpcy5uZXdEZXBJZHMuaGFzKHQuaWQpfHx0LnJlbW92ZVN1Yih0aGlzKX12YXIgbj10aGlzLmRlcElkczt0aGlzLmRlcElkcz10aGlzLm5ld0RlcElkcyx0aGlzLm5ld0RlcElkcz1uLHRoaXMubmV3RGVwSWRzLmNsZWFyKCksbj10aGlzLmRlcHMsdGhpcy5kZXBzPXRoaXMubmV3RGVwcyx0aGlzLm5ld0RlcHM9bix0aGlzLm5ld0RlcHMubGVuZ3RoPTB9LGZuLnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24oKXt0aGlzLmxhenk\/dGhpcy5kaXJ0eT0hMDp0aGlzLnN5bmM\/dGhpcy5ydW4oKTpmdW5jdGlvbihlKXt2YXIgdD1lLmlkO2lmKG51bGw9PXRuW3RdKXtpZih0blt0XT0hMCxybil7Zm9yKHZhciBuPVF0Lmxlbmd0aC0xO24+b24mJlF0W25dLmlkPmUuaWQ7KW4tLTtRdC5zcGxpY2UobisxLDAsZSl9ZWxzZSBRdC5wdXNoKGUpO25ufHwobm49ITAsWWUodW4pKX19KHRoaXMpfSxmbi5wcm90b3R5cGUucnVuPWZ1bmN0aW9uKCl7aWYodGhpcy5hY3RpdmUpe3ZhciBlPXRoaXMuZ2V0KCk7aWYoZSE9PXRoaXMudmFsdWV8fG8oZSl8fHRoaXMuZGVlcCl7dmFyIHQ9dGhpcy52YWx1ZTtpZih0aGlzLnZhbHVlPWUsdGhpcy51c2VyKXRyeXt0aGlzLmNiLmNhbGwodGhpcy52bSxlLHQpfWNhdGNoKGUpe1JlKGUsdGhpcy52bSwnY2FsbGJhY2sgZm9yIHdhdGNoZXIgIicrdGhpcy5leHByZXNzaW9uKyciJyl9ZWxzZSB0aGlzLmNiLmNhbGwodGhpcy52bSxlLHQpfX19LGZuLnByb3RvdHlwZS5ldmFsdWF0ZT1mdW5jdGlvbigpe3RoaXMudmFsdWU9dGhpcy5nZXQoKSx0aGlzLmRpcnR5PSExfSxmbi5wcm90b3R5cGUuZGVwZW5kPWZ1bmN0aW9uKCl7Zm9yKHZhciBlPXRoaXMuZGVwcy5sZW5ndGg7ZS0tOyl0aGlzLmRlcHNbZV0uZGVwZW5kKCl9LGZuLnByb3RvdHlwZS50ZWFyZG93bj1mdW5jdGlvbigpe2lmKHRoaXMuYWN0aXZlKXt0aGlzLnZtLl9pc0JlaW5nRGVzdHJveWVkfHxoKHRoaXMudm0uX3dhdGNoZXJzLHRoaXMpO2Zvcih2YXIgZT10aGlzLmRlcHMubGVuZ3RoO2UtLTspdGhpcy5kZXBzW2VdLnJlbW92ZVN1Yih0aGlzKTt0aGlzLmFjdGl2ZT0hMX19O3ZhciBwbj17ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsZ2V0OlMsc2V0OlN9O2Z1bmN0aW9uIGRuKGUsdCxuKXtwbi5nZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc1t0XVtuXX0scG4uc2V0PWZ1bmN0aW9uKGUpe3RoaXNbdF1bbl09ZX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsbixwbil9ZnVuY3Rpb24gdm4oZSl7ZS5fd2F0Y2hlcnM9W107dmFyIHQ9ZS4kb3B0aW9uczt0LnByb3BzJiZmdW5jdGlvbihlLHQpe3ZhciBuPWUuJG9wdGlvbnMucHJvcHNEYXRhfHx7fSxyPWUuX3Byb3BzPXt9LGk9ZS4kb3B0aW9ucy5fcHJvcEtleXM9W107ZS4kcGFyZW50JiYkZSghMSk7dmFyIG89ZnVuY3Rpb24obyl7aS5wdXNoKG8pO3ZhciBhPU1lKG8sdCxuLGUpO3hlKHIsbyxhKSxvIGluIGV8fGRuKGUsIl9wcm9wcyIsbyl9O2Zvcih2YXIgYSBpbiB0KW8oYSk7JGUoITApfShlLHQucHJvcHMpLHQubWV0aG9kcyYmZnVuY3Rpb24oZSx0KXtlLiRvcHRpb25zLnByb3BzO2Zvcih2YXIgbiBpbiB0KWVbbl09ImZ1bmN0aW9uIiE9dHlwZW9mIHRbbl0\/Uzp4KHRbbl0sZSl9KGUsdC5tZXRob2RzKSx0LmRhdGE\/ZnVuY3Rpb24oZSl7dmFyIHQ9ZS4kb3B0aW9ucy5kYXRhO3ModD1lLl9kYXRhPSJmdW5jdGlvbiI9PXR5cGVvZiB0P2Z1bmN0aW9uKGUsdCl7bGUoKTt0cnl7cmV0dXJuIGUuY2FsbCh0LHQpfWNhdGNoKGUpe3JldHVybiBSZShlLHQsImRhdGEoKSIpLHt9fWZpbmFsbHl7ZmUoKX19KHQsZSk6dHx8e30pfHwodD17fSk7dmFyIG49T2JqZWN0LmtleXModCkscj1lLiRvcHRpb25zLnByb3BzLGk9KGUuJG9wdGlvbnMubWV0aG9kcyxuLmxlbmd0aCk7Zm9yKDtpLS07KXt2YXIgbz1uW2ldO3ImJnkocixvKXx8KGE9dm9pZCAwLDM2IT09KGE9KG8rIiIpLmNoYXJDb2RlQXQoMCkpJiY5NSE9PWEmJmRuKGUsIl9kYXRhIixvKSl9dmFyIGE7Q2UodCwhMCl9KGUpOkNlKGUuX2RhdGE9e30sITApLHQuY29tcHV0ZWQmJmZ1bmN0aW9uKGUsdCl7dmFyIG49ZS5fY29tcHV0ZWRXYXRjaGVycz1PYmplY3QuY3JlYXRlKG51bGwpLHI9dGUoKTtmb3IodmFyIGkgaW4gdCl7dmFyIG89dFtpXSxhPSJmdW5jdGlvbiI9PXR5cGVvZiBvP286by5nZXQ7cnx8KG5baV09bmV3IGZuKGUsYXx8UyxTLGhuKSksaSBpbiBlfHxtbihlLGksbyl9fShlLHQuY29tcHV0ZWQpLHQud2F0Y2gmJnQud2F0Y2ghPT1ZJiZmdW5jdGlvbihlLHQpe2Zvcih2YXIgbiBpbiB0KXt2YXIgcj10W25dO2lmKEFycmF5LmlzQXJyYXkocikpZm9yKHZhciBpPTA7aTxyLmxlbmd0aDtpKyspX24oZSxuLHJbaV0pO2Vsc2UgX24oZSxuLHIpfX0oZSx0LndhdGNoKX12YXIgaG49e2xhenk6ITB9O2Z1bmN0aW9uIG1uKGUsdCxuKXt2YXIgcj0hdGUoKTsiZnVuY3Rpb24iPT10eXBlb2Ygbj8ocG4uZ2V0PXI\/eW4odCk6Z24obikscG4uc2V0PVMpOihwbi5nZXQ9bi5nZXQ\/ciYmITEhPT1uLmNhY2hlP3luKHQpOmduKG4uZ2V0KTpTLHBuLnNldD1uLnNldHx8UyksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCxwbil9ZnVuY3Rpb24geW4oZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fY29tcHV0ZWRXYXRjaGVycyYmdGhpcy5fY29tcHV0ZWRXYXRjaGVyc1tlXTtpZih0KXJldHVybiB0LmRpcnR5JiZ0LmV2YWx1YXRlKCksY2UudGFyZ2V0JiZ0LmRlcGVuZCgpLHQudmFsdWV9fWZ1bmN0aW9uIGduKGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBlLmNhbGwodGhpcyx0aGlzKX19ZnVuY3Rpb24gX24oZSx0LG4scil7cmV0dXJuIHMobikmJihyPW4sbj1uLmhhbmRsZXIpLCJzdHJpbmciPT10eXBlb2YgbiYmKG49ZVtuXSksZS4kd2F0Y2godCxuLHIpfXZhciBibj0wO2Z1bmN0aW9uICRuKGUpe3ZhciB0PWUub3B0aW9ucztpZihlLnN1cGVyKXt2YXIgbj0kbihlLnN1cGVyKTtpZihuIT09ZS5zdXBlck9wdGlvbnMpe2Uuc3VwZXJPcHRpb25zPW47dmFyIHI9ZnVuY3Rpb24oZSl7dmFyIHQsbj1lLm9wdGlvbnMscj1lLnNlYWxlZE9wdGlvbnM7Zm9yKHZhciBpIGluIG4pbltpXSE9PXJbaV0mJih0fHwodD17fSksdFtpXT1uW2ldKTtyZXR1cm4gdH0oZSk7ciYmQShlLmV4dGVuZE9wdGlvbnMsciksKHQ9ZS5vcHRpb25zPURlKG4sZS5leHRlbmRPcHRpb25zKSkubmFtZSYmKHQuY29tcG9uZW50c1t0Lm5hbWVdPWUpfX1yZXR1cm4gdH1mdW5jdGlvbiB3bihlKXt0aGlzLl9pbml0KGUpfWZ1bmN0aW9uIENuKGUpe2UuY2lkPTA7dmFyIHQ9MTtlLmV4dGVuZD1mdW5jdGlvbihlKXtlPWV8fHt9O3ZhciBuPXRoaXMscj1uLmNpZCxpPWUuX0N0b3J8fChlLl9DdG9yPXt9KTtpZihpW3JdKXJldHVybiBpW3JdO3ZhciBvPWUubmFtZXx8bi5vcHRpb25zLm5hbWUsYT1mdW5jdGlvbihlKXt0aGlzLl9pbml0KGUpfTtyZXR1cm4oYS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShuLnByb3RvdHlwZSkpLmNvbnN0cnVjdG9yPWEsYS5jaWQ9dCsrLGEub3B0aW9ucz1EZShuLm9wdGlvbnMsZSksYS5zdXBlcj1uLGEub3B0aW9ucy5wcm9wcyYmZnVuY3Rpb24oZSl7dmFyIHQ9ZS5vcHRpb25zLnByb3BzO2Zvcih2YXIgbiBpbiB0KWRuKGUucHJvdG90eXBlLCJfcHJvcHMiLG4pfShhKSxhLm9wdGlvbnMuY29tcHV0ZWQmJmZ1bmN0aW9uKGUpe3ZhciB0PWUub3B0aW9ucy5jb21wdXRlZDtmb3IodmFyIG4gaW4gdCltbihlLnByb3RvdHlwZSxuLHRbbl0pfShhKSxhLmV4dGVuZD1uLmV4dGVuZCxhLm1peGluPW4ubWl4aW4sYS51c2U9bi51c2UsTS5mb3JFYWNoKGZ1bmN0aW9uKGUpe2FbZV09bltlXX0pLG8mJihhLm9wdGlvbnMuY29tcG9uZW50c1tvXT1hKSxhLnN1cGVyT3B0aW9ucz1uLm9wdGlvbnMsYS5leHRlbmRPcHRpb25zPWUsYS5zZWFsZWRPcHRpb25zPUEoe30sYS5vcHRpb25zKSxpW3JdPWEsYX19ZnVuY3Rpb24geG4oZSl7cmV0dXJuIGUmJihlLkN0b3Iub3B0aW9ucy5uYW1lfHxlLnRhZyl9ZnVuY3Rpb24ga24oZSx0KXtyZXR1cm4gQXJyYXkuaXNBcnJheShlKT9lLmluZGV4T2YodCk+LTE6InN0cmluZyI9PXR5cGVvZiBlP2Uuc3BsaXQoIiwiKS5pbmRleE9mKHQpPi0xOihuPWUsIltvYmplY3QgUmVnRXhwXSI9PT1hLmNhbGwobikmJmUudGVzdCh0KSk7dmFyIG59ZnVuY3Rpb24gQW4oZSx0KXt2YXIgbj1lLmNhY2hlLHI9ZS5rZXlzLGk9ZS5fdm5vZGU7Zm9yKHZhciBvIGluIG4pe3ZhciBhPW5bb107aWYoYSl7dmFyIHM9eG4oYS5jb21wb25lbnRPcHRpb25zKTtzJiYhdChzKSYmT24obixvLHIsaSl9fX1mdW5jdGlvbiBPbihlLHQsbixyKXt2YXIgaT1lW3RdOyFpfHxyJiZpLnRhZz09PXIudGFnfHxpLmNvbXBvbmVudEluc3RhbmNlLiRkZXN0cm95KCksZVt0XT1udWxsLGgobix0KX0hZnVuY3Rpb24odCl7dC5wcm90b3R5cGUuX2luaXQ9ZnVuY3Rpb24odCl7dmFyIG49dGhpcztuLl91aWQ9Ym4rKyxuLl9pc1Z1ZT0hMCx0JiZ0Ll9pc0NvbXBvbmVudD9mdW5jdGlvbihlLHQpe3ZhciBuPWUuJG9wdGlvbnM9T2JqZWN0LmNyZWF0ZShlLmNvbnN0cnVjdG9yLm9wdGlvbnMpLHI9dC5fcGFyZW50Vm5vZGU7bi5wYXJlbnQ9dC5wYXJlbnQsbi5fcGFyZW50Vm5vZGU9cjt2YXIgaT1yLmNvbXBvbmVudE9wdGlvbnM7bi5wcm9wc0RhdGE9aS5wcm9wc0RhdGEsbi5fcGFyZW50TGlzdGVuZXJzPWkubGlzdGVuZXJzLG4uX3JlbmRlckNoaWxkcmVuPWkuY2hpbGRyZW4sbi5fY29tcG9uZW50VGFnPWkudGFnLHQucmVuZGVyJiYobi5yZW5kZXI9dC5yZW5kZXIsbi5zdGF0aWNSZW5kZXJGbnM9dC5zdGF0aWNSZW5kZXJGbnMpfShuLHQpOm4uJG9wdGlvbnM9RGUoJG4obi5jb25zdHJ1Y3RvciksdHx8e30sbiksbi5fcmVuZGVyUHJveHk9bixuLl9zZWxmPW4sZnVuY3Rpb24oZSl7dmFyIHQ9ZS4kb3B0aW9ucyxuPXQucGFyZW50O2lmKG4mJiF0LmFic3RyYWN0KXtmb3IoO24uJG9wdGlvbnMuYWJzdHJhY3QmJm4uJHBhcmVudDspbj1uLiRwYXJlbnQ7bi4kY2hpbGRyZW4ucHVzaChlKX1lLiRwYXJlbnQ9bixlLiRyb290PW4\/bi4kcm9vdDplLGUuJGNoaWxkcmVuPVtdLGUuJHJlZnM9e30sZS5fd2F0Y2hlcj1udWxsLGUuX2luYWN0aXZlPW51bGwsZS5fZGlyZWN0SW5hY3RpdmU9ITEsZS5faXNNb3VudGVkPSExLGUuX2lzRGVzdHJveWVkPSExLGUuX2lzQmVpbmdEZXN0cm95ZWQ9ITF9KG4pLGZ1bmN0aW9uKGUpe2UuX2V2ZW50cz1PYmplY3QuY3JlYXRlKG51bGwpLGUuX2hhc0hvb2tFdmVudD0hMTt2YXIgdD1lLiRvcHRpb25zLl9wYXJlbnRMaXN0ZW5lcnM7dCYmcXQoZSx0KX0obiksZnVuY3Rpb24odCl7dC5fdm5vZGU9bnVsbCx0Ll9zdGF0aWNUcmVlcz1udWxsO3ZhciBuPXQuJG9wdGlvbnMscj10LiR2bm9kZT1uLl9wYXJlbnRWbm9kZSxpPXImJnIuY29udGV4dDt0LiRzbG90cz11dChuLl9yZW5kZXJDaGlsZHJlbixpKSx0LiRzY29wZWRTbG90cz1lLHQuX2M9ZnVuY3Rpb24oZSxuLHIsaSl7cmV0dXJuIFB0KHQsZSxuLHIsaSwhMSl9LHQuJGNyZWF0ZUVsZW1lbnQ9ZnVuY3Rpb24oZSxuLHIsaSl7cmV0dXJuIFB0KHQsZSxuLHIsaSwhMCl9O3ZhciBvPXImJnIuZGF0YTt4ZSh0LCIkYXR0cnMiLG8mJm8uYXR0cnN8fGUsbnVsbCwhMCkseGUodCwiJGxpc3RlbmVycyIsbi5fcGFyZW50TGlzdGVuZXJzfHxlLG51bGwsITApfShuKSxZdChuLCJiZWZvcmVDcmVhdGUiKSxmdW5jdGlvbihlKXt2YXIgdD1jdChlLiRvcHRpb25zLmluamVjdCxlKTt0JiYoJGUoITEpLE9iamVjdC5rZXlzKHQpLmZvckVhY2goZnVuY3Rpb24obil7eGUoZSxuLHRbbl0pfSksJGUoITApKX0obiksdm4obiksZnVuY3Rpb24oZSl7dmFyIHQ9ZS4kb3B0aW9ucy5wcm92aWRlO3QmJihlLl9wcm92aWRlZD0iZnVuY3Rpb24iPT10eXBlb2YgdD90LmNhbGwoZSk6dCl9KG4pLFl0KG4sImNyZWF0ZWQiKSxuLiRvcHRpb25zLmVsJiZuLiRtb3VudChuLiRvcHRpb25zLmVsKX19KHduKSxmdW5jdGlvbihlKXt2YXIgdD17Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2RhdGF9fSxuPXtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcHJvcHN9fTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsIiRkYXRhIix0KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsIiRwcm9wcyIsbiksZS5wcm90b3R5cGUuJHNldD1rZSxlLnByb3RvdHlwZS4kZGVsZXRlPUFlLGUucHJvdG90eXBlLiR3YXRjaD1mdW5jdGlvbihlLHQsbil7aWYocyh0KSlyZXR1cm4gX24odGhpcyxlLHQsbik7KG49bnx8e30pLnVzZXI9ITA7dmFyIHI9bmV3IGZuKHRoaXMsZSx0LG4pO2lmKG4uaW1tZWRpYXRlKXRyeXt0LmNhbGwodGhpcyxyLnZhbHVlKX1jYXRjaChlKXtSZShlLHRoaXMsJ2NhbGxiYWNrIGZvciBpbW1lZGlhdGUgd2F0Y2hlciAiJytyLmV4cHJlc3Npb24rJyInKX1yZXR1cm4gZnVuY3Rpb24oKXtyLnRlYXJkb3duKCl9fX0od24pLGZ1bmN0aW9uKGUpe3ZhciB0PS9eaG9vazovO2UucHJvdG90eXBlLiRvbj1mdW5jdGlvbihlLG4pe3ZhciByPXRoaXM7aWYoQXJyYXkuaXNBcnJheShlKSlmb3IodmFyIGk9MCxvPWUubGVuZ3RoO2k8bztpKyspci4kb24oZVtpXSxuKTtlbHNlKHIuX2V2ZW50c1tlXXx8KHIuX2V2ZW50c1tlXT1bXSkpLnB1c2gobiksdC50ZXN0KGUpJiYoci5faGFzSG9va0V2ZW50PSEwKTtyZXR1cm4gcn0sZS5wcm90b3R5cGUuJG9uY2U9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzO2Z1bmN0aW9uIHIoKXtuLiRvZmYoZSxyKSx0LmFwcGx5KG4sYXJndW1lbnRzKX1yZXR1cm4gci5mbj10LG4uJG9uKGUsciksbn0sZS5wcm90b3R5cGUuJG9mZj1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXM7aWYoIWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIG4uX2V2ZW50cz1PYmplY3QuY3JlYXRlKG51bGwpLG47aWYoQXJyYXkuaXNBcnJheShlKSl7Zm9yKHZhciByPTAsaT1lLmxlbmd0aDtyPGk7cisrKW4uJG9mZihlW3JdLHQpO3JldHVybiBufXZhciBvLGE9bi5fZXZlbnRzW2VdO2lmKCFhKXJldHVybiBuO2lmKCF0KXJldHVybiBuLl9ldmVudHNbZV09bnVsbCxuO2Zvcih2YXIgcz1hLmxlbmd0aDtzLS07KWlmKChvPWFbc10pPT09dHx8by5mbj09PXQpe2Euc3BsaWNlKHMsMSk7YnJlYWt9cmV0dXJuIG59LGUucHJvdG90eXBlLiRlbWl0PWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX2V2ZW50c1tlXTtpZih0KXt0PXQubGVuZ3RoPjE\/ayh0KTp0O2Zvcih2YXIgbj1rKGFyZ3VtZW50cywxKSxyPSdldmVudCBoYW5kbGVyIGZvciAiJytlKyciJyxpPTAsbz10Lmxlbmd0aDtpPG87aSsrKUhlKHRbaV0sdGhpcyxuLHRoaXMscil9cmV0dXJuIHRoaXN9fSh3biksZnVuY3Rpb24oZSl7ZS5wcm90b3R5cGUuX3VwZGF0ZT1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMscj1uLiRlbCxpPW4uX3Zub2RlLG89WnQobik7bi5fdm5vZGU9ZSxuLiRlbD1pP24uX19wYXRjaF9fKGksZSk6bi5fX3BhdGNoX18obi4kZWwsZSx0LCExKSxvKCksciYmKHIuX192dWVfXz1udWxsKSxuLiRlbCYmKG4uJGVsLl9fdnVlX189biksbi4kdm5vZGUmJm4uJHBhcmVudCYmbi4kdm5vZGU9PT1uLiRwYXJlbnQuX3Zub2RlJiYobi4kcGFyZW50LiRlbD1uLiRlbCl9LGUucHJvdG90eXBlLiRmb3JjZVVwZGF0ZT1mdW5jdGlvbigpe3RoaXMuX3dhdGNoZXImJnRoaXMuX3dhdGNoZXIudXBkYXRlKCl9LGUucHJvdG90eXBlLiRkZXN0cm95PWZ1bmN0aW9uKCl7dmFyIGU9dGhpcztpZighZS5faXNCZWluZ0Rlc3Ryb3llZCl7WXQoZSwiYmVmb3JlRGVzdHJveSIpLGUuX2lzQmVpbmdEZXN0cm95ZWQ9ITA7dmFyIHQ9ZS4kcGFyZW50OyF0fHx0Ll9pc0JlaW5nRGVzdHJveWVkfHxlLiRvcHRpb25zLmFic3RyYWN0fHxoKHQuJGNoaWxkcmVuLGUpLGUuX3dhdGNoZXImJmUuX3dhdGNoZXIudGVhcmRvd24oKTtmb3IodmFyIG49ZS5fd2F0Y2hlcnMubGVuZ3RoO24tLTspZS5fd2F0Y2hlcnNbbl0udGVhcmRvd24oKTtlLl9kYXRhLl9fb2JfXyYmZS5fZGF0YS5fX29iX18udm1Db3VudC0tLGUuX2lzRGVzdHJveWVkPSEwLGUuX19wYXRjaF9fKGUuX3Zub2RlLG51bGwpLFl0KGUsImRlc3Ryb3llZCIpLGUuJG9mZigpLGUuJGVsJiYoZS4kZWwuX192dWVfXz1udWxsKSxlLiR2bm9kZSYmKGUuJHZub2RlLnBhcmVudD1udWxsKX19fSh3biksZnVuY3Rpb24oZSl7U3QoZS5wcm90b3R5cGUpLGUucHJvdG90eXBlLiRuZXh0VGljaz1mdW5jdGlvbihlKXtyZXR1cm4gWWUoZSx0aGlzKX0sZS5wcm90b3R5cGUuX3JlbmRlcj1mdW5jdGlvbigpe3ZhciBlLHQ9dGhpcyxuPXQuJG9wdGlvbnMscj1uLnJlbmRlcixpPW4uX3BhcmVudFZub2RlO2kmJih0LiRzY29wZWRTbG90cz1mdChpLmRhdGEuc2NvcGVkU2xvdHMsdC4kc2xvdHMsdC4kc2NvcGVkU2xvdHMpKSx0LiR2bm9kZT1pO3RyeXtIdD10LGU9ci5jYWxsKHQuX3JlbmRlclByb3h5LHQuJGNyZWF0ZUVsZW1lbnQpfWNhdGNoKG4pe1JlKG4sdCwicmVuZGVyIiksZT10Ll92bm9kZX1maW5hbGx5e0h0PW51bGx9cmV0dXJuIEFycmF5LmlzQXJyYXkoZSkmJjE9PT1lLmxlbmd0aCYmKGU9ZVswXSksZSBpbnN0YW5jZW9mIHBlfHwoZT12ZSgpKSxlLnBhcmVudD1pLGV9fSh3bik7dmFyIFNuPVtTdHJpbmcsUmVnRXhwLEFycmF5XSxUbj17S2VlcEFsaXZlOntuYW1lOiJrZWVwLWFsaXZlIixhYnN0cmFjdDohMCxwcm9wczp7aW5jbHVkZTpTbixleGNsdWRlOlNuLG1heDpbU3RyaW5nLE51bWJlcl19LGNyZWF0ZWQ6ZnVuY3Rpb24oKXt0aGlzLmNhY2hlPU9iamVjdC5jcmVhdGUobnVsbCksdGhpcy5rZXlzPVtdfSxkZXN0cm95ZWQ6ZnVuY3Rpb24oKXtmb3IodmFyIGUgaW4gdGhpcy5jYWNoZSlPbih0aGlzLmNhY2hlLGUsdGhpcy5rZXlzKX0sbW91bnRlZDpmdW5jdGlvbigpe3ZhciBlPXRoaXM7dGhpcy4kd2F0Y2goImluY2x1ZGUiLGZ1bmN0aW9uKHQpe0FuKGUsZnVuY3Rpb24oZSl7cmV0dXJuIGtuKHQsZSl9KX0pLHRoaXMuJHdhdGNoKCJleGNsdWRlIixmdW5jdGlvbih0KXtBbihlLGZ1bmN0aW9uKGUpe3JldHVybiFrbih0LGUpfSl9KX0scmVuZGVyOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy4kc2xvdHMuZGVmYXVsdCx0PXp0KGUpLG49dCYmdC5jb21wb25lbnRPcHRpb25zO2lmKG4pe3ZhciByPXhuKG4pLGk9dGhpcy5pbmNsdWRlLG89dGhpcy5leGNsdWRlO2lmKGkmJighcnx8IWtuKGkscikpfHxvJiZyJiZrbihvLHIpKXJldHVybiB0O3ZhciBhPXRoaXMuY2FjaGUscz10aGlzLmtleXMsYz1udWxsPT10LmtleT9uLkN0b3IuY2lkKyhuLnRhZz8iOjoiK24udGFnOiIiKTp0LmtleTthW2NdPyh0LmNvbXBvbmVudEluc3RhbmNlPWFbY10uY29tcG9uZW50SW5zdGFuY2UsaChzLGMpLHMucHVzaChjKSk6KGFbY109dCxzLnB1c2goYyksdGhpcy5tYXgmJnMubGVuZ3RoPnBhcnNlSW50KHRoaXMubWF4KSYmT24oYSxzWzBdLHMsdGhpcy5fdm5vZGUpKSx0LmRhdGEua2VlcEFsaXZlPSEwfXJldHVybiB0fHxlJiZlWzBdfX19OyFmdW5jdGlvbihlKXt2YXIgdD17Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEZ9fTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiY29uZmlnIix0KSxlLnV0aWw9e3dhcm46YWUsZXh0ZW5kOkEsbWVyZ2VPcHRpb25zOkRlLGRlZmluZVJlYWN0aXZlOnhlfSxlLnNldD1rZSxlLmRlbGV0ZT1BZSxlLm5leHRUaWNrPVllLGUub2JzZXJ2YWJsZT1mdW5jdGlvbihlKXtyZXR1cm4gQ2UoZSksZX0sZS5vcHRpb25zPU9iamVjdC5jcmVhdGUobnVsbCksTS5mb3JFYWNoKGZ1bmN0aW9uKHQpe2Uub3B0aW9uc1t0KyJzIl09T2JqZWN0LmNyZWF0ZShudWxsKX0pLGUub3B0aW9ucy5fYmFzZT1lLEEoZS5vcHRpb25zLmNvbXBvbmVudHMsVG4pLGZ1bmN0aW9uKGUpe2UudXNlPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX2luc3RhbGxlZFBsdWdpbnN8fCh0aGlzLl9pbnN0YWxsZWRQbHVnaW5zPVtdKTtpZih0LmluZGV4T2YoZSk+LTEpcmV0dXJuIHRoaXM7dmFyIG49ayhhcmd1bWVudHMsMSk7cmV0dXJuIG4udW5zaGlmdCh0aGlzKSwiZnVuY3Rpb24iPT10eXBlb2YgZS5pbnN0YWxsP2UuaW5zdGFsbC5hcHBseShlLG4pOiJmdW5jdGlvbiI9PXR5cGVvZiBlJiZlLmFwcGx5KG51bGwsbiksdC5wdXNoKGUpLHRoaXN9fShlKSxmdW5jdGlvbihlKXtlLm1peGluPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLm9wdGlvbnM9RGUodGhpcy5vcHRpb25zLGUpLHRoaXN9fShlKSxDbihlKSxmdW5jdGlvbihlKXtNLmZvckVhY2goZnVuY3Rpb24odCl7ZVt0XT1mdW5jdGlvbihlLG4pe3JldHVybiBuPygiY29tcG9uZW50Ij09PXQmJnMobikmJihuLm5hbWU9bi5uYW1lfHxlLG49dGhpcy5vcHRpb25zLl9iYXNlLmV4dGVuZChuKSksImRpcmVjdGl2ZSI9PT10JiYiZnVuY3Rpb24iPT10eXBlb2YgbiYmKG49e2JpbmQ6bix1cGRhdGU6bn0pLHRoaXMub3B0aW9uc1t0KyJzIl1bZV09bixuKTp0aGlzLm9wdGlvbnNbdCsicyJdW2VdfX0pfShlKX0od24pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh3bi5wcm90b3R5cGUsIiRpc1NlcnZlciIse2dldDp0ZX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh3bi5wcm90b3R5cGUsIiRzc3JDb250ZXh0Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJHZub2RlJiZ0aGlzLiR2bm9kZS5zc3JDb250ZXh0fX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh3biwiRnVuY3Rpb25hbFJlbmRlckNvbnRleHQiLHt2YWx1ZTpUdH0pLHduLnZlcnNpb249IjIuNi4xMSI7dmFyIEVuPXAoInN0eWxlLGNsYXNzIiksTm49cCgiaW5wdXQsdGV4dGFyZWEsb3B0aW9uLHNlbGVjdCxwcm9ncmVzcyIpLGpuPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4idmFsdWUiPT09biYmTm4oZSkmJiJidXR0b24iIT09dHx8InNlbGVjdGVkIj09PW4mJiJvcHRpb24iPT09ZXx8ImNoZWNrZWQiPT09biYmImlucHV0Ij09PWV8fCJtdXRlZCI9PT1uJiYidmlkZW8iPT09ZX0sRG49cCgiY29udGVudGVkaXRhYmxlLGRyYWdnYWJsZSxzcGVsbGNoZWNrIiksTG49cCgiZXZlbnRzLGNhcmV0LHR5cGluZyxwbGFpbnRleHQtb25seSIpLE1uPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIEhuKHQpfHwiZmFsc2UiPT09dD8iZmFsc2UiOiJjb250ZW50ZWRpdGFibGUiPT09ZSYmTG4odCk\/dDoidHJ1ZSJ9LEluPXAoImFsbG93ZnVsbHNjcmVlbixhc3luYyxhdXRvZm9jdXMsYXV0b3BsYXksY2hlY2tlZCxjb21wYWN0LGNvbnRyb2xzLGRlY2xhcmUsZGVmYXVsdCxkZWZhdWx0Y2hlY2tlZCxkZWZhdWx0bXV0ZWQsZGVmYXVsdHNlbGVjdGVkLGRlZmVyLGRpc2FibGVkLGVuYWJsZWQsZm9ybW5vdmFsaWRhdGUsaGlkZGVuLGluZGV0ZXJtaW5hdGUsaW5lcnQsaXNtYXAsaXRlbXNjb3BlLGxvb3AsbXVsdGlwbGUsbXV0ZWQsbm9ocmVmLG5vcmVzaXplLG5vc2hhZGUsbm92YWxpZGF0ZSxub3dyYXAsb3BlbixwYXVzZW9uZXhpdCxyZWFkb25seSxyZXF1aXJlZCxyZXZlcnNlZCxzY29wZWQsc2VhbWxlc3Msc2VsZWN0ZWQsc29ydGFibGUsdHJhbnNsYXRlLHRydWVzcGVlZCx0eXBlbXVzdG1hdGNoLHZpc2libGUiKSxGbj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIsUG49ZnVuY3Rpb24oZSl7cmV0dXJuIjoiPT09ZS5jaGFyQXQoNSkmJiJ4bGluayI9PT1lLnNsaWNlKDAsNSl9LFJuPWZ1bmN0aW9uKGUpe3JldHVybiBQbihlKT9lLnNsaWNlKDYsZS5sZW5ndGgpOiIifSxIbj1mdW5jdGlvbihlKXtyZXR1cm4gbnVsbD09ZXx8ITE9PT1lfTtmdW5jdGlvbiBCbihlKXtmb3IodmFyIHQ9ZS5kYXRhLHI9ZSxpPWU7bihpLmNvbXBvbmVudEluc3RhbmNlKTspKGk9aS5jb21wb25lbnRJbnN0YW5jZS5fdm5vZGUpJiZpLmRhdGEmJih0PVVuKGkuZGF0YSx0KSk7Zm9yKDtuKHI9ci5wYXJlbnQpOylyJiZyLmRhdGEmJih0PVVuKHQsci5kYXRhKSk7cmV0dXJuIGZ1bmN0aW9uKGUsdCl7aWYobihlKXx8bih0KSlyZXR1cm4gem4oZSxWbih0KSk7cmV0dXJuIiJ9KHQuc3RhdGljQ2xhc3MsdC5jbGFzcyl9ZnVuY3Rpb24gVW4oZSx0KXtyZXR1cm57c3RhdGljQ2xhc3M6em4oZS5zdGF0aWNDbGFzcyx0LnN0YXRpY0NsYXNzKSxjbGFzczpuKGUuY2xhc3MpP1tlLmNsYXNzLHQuY2xhc3NdOnQuY2xhc3N9fWZ1bmN0aW9uIHpuKGUsdCl7cmV0dXJuIGU\/dD9lKyIgIit0OmU6dHx8IiJ9ZnVuY3Rpb24gVm4oZSl7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSk\/ZnVuY3Rpb24oZSl7Zm9yKHZhciB0LHI9IiIsaT0wLG89ZS5sZW5ndGg7aTxvO2krKyluKHQ9Vm4oZVtpXSkpJiYiIiE9PXQmJihyJiYocis9IiAiKSxyKz10KTtyZXR1cm4gcn0oZSk6byhlKT9mdW5jdGlvbihlKXt2YXIgdD0iIjtmb3IodmFyIG4gaW4gZSllW25dJiYodCYmKHQrPSIgIiksdCs9bik7cmV0dXJuIHR9KGUpOiJzdHJpbmciPT10eXBlb2YgZT9lOiIifXZhciBLbj17c3ZnOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsbWF0aDoiaHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTCJ9LEpuPXAoImh0bWwsYm9keSxiYXNlLGhlYWQsbGluayxtZXRhLHN0eWxlLHRpdGxlLGFkZHJlc3MsYXJ0aWNsZSxhc2lkZSxmb290ZXIsaGVhZGVyLGgxLGgyLGgzLGg0LGg1LGg2LGhncm91cCxuYXYsc2VjdGlvbixkaXYsZGQsZGwsZHQsZmlnY2FwdGlvbixmaWd1cmUscGljdHVyZSxocixpbWcsbGksbWFpbixvbCxwLHByZSx1bCxhLGIsYWJicixiZGksYmRvLGJyLGNpdGUsY29kZSxkYXRhLGRmbixlbSxpLGtiZCxtYXJrLHEscnAscnQscnRjLHJ1YnkscyxzYW1wLHNtYWxsLHNwYW4sc3Ryb25nLHN1YixzdXAsdGltZSx1LHZhcix3YnIsYXJlYSxhdWRpbyxtYXAsdHJhY2ssdmlkZW8sZW1iZWQsb2JqZWN0LHBhcmFtLHNvdXJjZSxjYW52YXMsc2NyaXB0LG5vc2NyaXB0LGRlbCxpbnMsY2FwdGlvbixjb2wsY29sZ3JvdXAsdGFibGUsdGhlYWQsdGJvZHksdGQsdGgsdHIsYnV0dG9uLGRhdGFsaXN0LGZpZWxkc2V0LGZvcm0saW5wdXQsbGFiZWwsbGVnZW5kLG1ldGVyLG9wdGdyb3VwLG9wdGlvbixvdXRwdXQscHJvZ3Jlc3Msc2VsZWN0LHRleHRhcmVhLGRldGFpbHMsZGlhbG9nLG1lbnUsbWVudWl0ZW0sc3VtbWFyeSxjb250ZW50LGVsZW1lbnQsc2hhZG93LHRlbXBsYXRlLGJsb2NrcXVvdGUsaWZyYW1lLHRmb290IikscW49cCgic3ZnLGFuaW1hdGUsY2lyY2xlLGNsaXBwYXRoLGN1cnNvcixkZWZzLGRlc2MsZWxsaXBzZSxmaWx0ZXIsZm9udC1mYWNlLGZvcmVpZ25PYmplY3QsZyxnbHlwaCxpbWFnZSxsaW5lLG1hcmtlcixtYXNrLG1pc3NpbmctZ2x5cGgscGF0aCxwYXR0ZXJuLHBvbHlnb24scG9seWxpbmUscmVjdCxzd2l0Y2gsc3ltYm9sLHRleHQsdGV4dHBhdGgsdHNwYW4sdXNlLHZpZXciLCEwKSxXbj1mdW5jdGlvbihlKXtyZXR1cm4gSm4oZSl8fHFuKGUpfTtmdW5jdGlvbiBabihlKXtyZXR1cm4gcW4oZSk\/InN2ZyI6Im1hdGgiPT09ZT8ibWF0aCI6dm9pZCAwfXZhciBHbj1PYmplY3QuY3JlYXRlKG51bGwpO3ZhciBYbj1wKCJ0ZXh0LG51bWJlcixwYXNzd29yZCxzZWFyY2gsZW1haWwsdGVsLHVybCIpO2Z1bmN0aW9uIFluKGUpe2lmKCJzdHJpbmciPT10eXBlb2YgZSl7dmFyIHQ9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcihlKTtyZXR1cm4gdHx8ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iil9cmV0dXJuIGV9dmFyIFFuPU9iamVjdC5mcmVlemUoe2NyZWF0ZUVsZW1lbnQ6ZnVuY3Rpb24oZSx0KXt2YXIgbj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KGUpO3JldHVybiJzZWxlY3QiIT09ZT9uOih0LmRhdGEmJnQuZGF0YS5hdHRycyYmdm9pZCAwIT09dC5kYXRhLmF0dHJzLm11bHRpcGxlJiZuLnNldEF0dHJpYnV0ZSgibXVsdGlwbGUiLCJtdWx0aXBsZSIpLG4pfSxjcmVhdGVFbGVtZW50TlM6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKEtuW2VdLHQpfSxjcmVhdGVUZXh0Tm9kZTpmdW5jdGlvbihlKXtyZXR1cm4gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoZSl9LGNyZWF0ZUNvbW1lbnQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGRvY3VtZW50LmNyZWF0ZUNvbW1lbnQoZSl9LGluc2VydEJlZm9yZTpmdW5jdGlvbihlLHQsbil7ZS5pbnNlcnRCZWZvcmUodCxuKX0scmVtb3ZlQ2hpbGQ6ZnVuY3Rpb24oZSx0KXtlLnJlbW92ZUNoaWxkKHQpfSxhcHBlbmRDaGlsZDpmdW5jdGlvbihlLHQpe2UuYXBwZW5kQ2hpbGQodCl9LHBhcmVudE5vZGU6ZnVuY3Rpb24oZSl7cmV0dXJuIGUucGFyZW50Tm9kZX0sbmV4dFNpYmxpbmc6ZnVuY3Rpb24oZSl7cmV0dXJuIGUubmV4dFNpYmxpbmd9LHRhZ05hbWU6ZnVuY3Rpb24oZSl7cmV0dXJuIGUudGFnTmFtZX0sc2V0VGV4dENvbnRlbnQ6ZnVuY3Rpb24oZSx0KXtlLnRleHRDb250ZW50PXR9LHNldFN0eWxlU2NvcGU6ZnVuY3Rpb24oZSx0KXtlLnNldEF0dHJpYnV0ZSh0LCIiKX19KSxlcj17Y3JlYXRlOmZ1bmN0aW9uKGUsdCl7dHIodCl9LHVwZGF0ZTpmdW5jdGlvbihlLHQpe2UuZGF0YS5yZWYhPT10LmRhdGEucmVmJiYodHIoZSwhMCksdHIodCkpfSxkZXN0cm95OmZ1bmN0aW9uKGUpe3RyKGUsITApfX07ZnVuY3Rpb24gdHIoZSx0KXt2YXIgcj1lLmRhdGEucmVmO2lmKG4ocikpe3ZhciBpPWUuY29udGV4dCxvPWUuY29tcG9uZW50SW5zdGFuY2V8fGUuZWxtLGE9aS4kcmVmczt0P0FycmF5LmlzQXJyYXkoYVtyXSk\/aChhW3JdLG8pOmFbcl09PT1vJiYoYVtyXT12b2lkIDApOmUuZGF0YS5yZWZJbkZvcj9BcnJheS5pc0FycmF5KGFbcl0pP2Fbcl0uaW5kZXhPZihvKTwwJiZhW3JdLnB1c2gobyk6YVtyXT1bb106YVtyXT1vfX12YXIgbnI9bmV3IHBlKCIiLHt9LFtdKSxycj1bImNyZWF0ZSIsImFjdGl2YXRlIiwidXBkYXRlIiwicmVtb3ZlIiwiZGVzdHJveSJdO2Z1bmN0aW9uIGlyKGUsaSl7cmV0dXJuIGUua2V5PT09aS5rZXkmJihlLnRhZz09PWkudGFnJiZlLmlzQ29tbWVudD09PWkuaXNDb21tZW50JiZuKGUuZGF0YSk9PT1uKGkuZGF0YSkmJmZ1bmN0aW9uKGUsdCl7aWYoImlucHV0IiE9PWUudGFnKXJldHVybiEwO3ZhciByLGk9bihyPWUuZGF0YSkmJm4ocj1yLmF0dHJzKSYmci50eXBlLG89bihyPXQuZGF0YSkmJm4ocj1yLmF0dHJzKSYmci50eXBlO3JldHVybiBpPT09b3x8WG4oaSkmJlhuKG8pfShlLGkpfHxyKGUuaXNBc3luY1BsYWNlaG9sZGVyKSYmZS5hc3luY0ZhY3Rvcnk9PT1pLmFzeW5jRmFjdG9yeSYmdChpLmFzeW5jRmFjdG9yeS5lcnJvcikpfWZ1bmN0aW9uIG9yKGUsdCxyKXt2YXIgaSxvLGE9e307Zm9yKGk9dDtpPD1yOysraSluKG89ZVtpXS5rZXkpJiYoYVtvXT1pKTtyZXR1cm4gYX12YXIgYXI9e2NyZWF0ZTpzcix1cGRhdGU6c3IsZGVzdHJveTpmdW5jdGlvbihlKXtzcihlLG5yKX19O2Z1bmN0aW9uIHNyKGUsdCl7KGUuZGF0YS5kaXJlY3RpdmVzfHx0LmRhdGEuZGlyZWN0aXZlcykmJmZ1bmN0aW9uKGUsdCl7dmFyIG4scixpLG89ZT09PW5yLGE9dD09PW5yLHM9dXIoZS5kYXRhLmRpcmVjdGl2ZXMsZS5jb250ZXh0KSxjPXVyKHQuZGF0YS5kaXJlY3RpdmVzLHQuY29udGV4dCksdT1bXSxsPVtdO2ZvcihuIGluIGMpcj1zW25dLGk9Y1tuXSxyPyhpLm9sZFZhbHVlPXIudmFsdWUsaS5vbGRBcmc9ci5hcmcsZnIoaSwidXBkYXRlIix0LGUpLGkuZGVmJiZpLmRlZi5jb21wb25lbnRVcGRhdGVkJiZsLnB1c2goaSkpOihmcihpLCJiaW5kIix0LGUpLGkuZGVmJiZpLmRlZi5pbnNlcnRlZCYmdS5wdXNoKGkpKTtpZih1Lmxlbmd0aCl7dmFyIGY9ZnVuY3Rpb24oKXtmb3IodmFyIG49MDtuPHUubGVuZ3RoO24rKylmcih1W25dLCJpbnNlcnRlZCIsdCxlKX07bz9pdCh0LCJpbnNlcnQiLGYpOmYoKX1sLmxlbmd0aCYmaXQodCwicG9zdHBhdGNoIixmdW5jdGlvbigpe2Zvcih2YXIgbj0wO248bC5sZW5ndGg7bisrKWZyKGxbbl0sImNvbXBvbmVudFVwZGF0ZWQiLHQsZSl9KTtpZighbylmb3IobiBpbiBzKWNbbl18fGZyKHNbbl0sInVuYmluZCIsZSxlLGEpfShlLHQpfXZhciBjcj1PYmplY3QuY3JlYXRlKG51bGwpO2Z1bmN0aW9uIHVyKGUsdCl7dmFyIG4scixpPU9iamVjdC5jcmVhdGUobnVsbCk7aWYoIWUpcmV0dXJuIGk7Zm9yKG49MDtuPGUubGVuZ3RoO24rKykocj1lW25dKS5tb2RpZmllcnN8fChyLm1vZGlmaWVycz1jciksaVtscihyKV09cixyLmRlZj1MZSh0LiRvcHRpb25zLCJkaXJlY3RpdmVzIixyLm5hbWUpO3JldHVybiBpfWZ1bmN0aW9uIGxyKGUpe3JldHVybiBlLnJhd05hbWV8fGUubmFtZSsiLiIrT2JqZWN0LmtleXMoZS5tb2RpZmllcnN8fHt9KS5qb2luKCIuIil9ZnVuY3Rpb24gZnIoZSx0LG4scixpKXt2YXIgbz1lLmRlZiYmZS5kZWZbdF07aWYobyl0cnl7byhuLmVsbSxlLG4scixpKX1jYXRjaChyKXtSZShyLG4uY29udGV4dCwiZGlyZWN0aXZlICIrZS5uYW1lKyIgIit0KyIgaG9vayIpfX12YXIgcHI9W2VyLGFyXTtmdW5jdGlvbiBkcihlLHIpe3ZhciBpPXIuY29tcG9uZW50T3B0aW9ucztpZighKG4oaSkmJiExPT09aS5DdG9yLm9wdGlvbnMuaW5oZXJpdEF0dHJzfHx0KGUuZGF0YS5hdHRycykmJnQoci5kYXRhLmF0dHJzKSkpe3ZhciBvLGEscz1yLmVsbSxjPWUuZGF0YS5hdHRyc3x8e30sdT1yLmRhdGEuYXR0cnN8fHt9O2ZvcihvIGluIG4odS5fX29iX18pJiYodT1yLmRhdGEuYXR0cnM9QSh7fSx1KSksdSlhPXVbb10sY1tvXSE9PWEmJnZyKHMsbyxhKTtmb3IobyBpbihxfHxaKSYmdS52YWx1ZSE9PWMudmFsdWUmJnZyKHMsInZhbHVlIix1LnZhbHVlKSxjKXQodVtvXSkmJihQbihvKT9zLnJlbW92ZUF0dHJpYnV0ZU5TKEZuLFJuKG8pKTpEbihvKXx8cy5yZW1vdmVBdHRyaWJ1dGUobykpfX1mdW5jdGlvbiB2cihlLHQsbil7ZS50YWdOYW1lLmluZGV4T2YoIi0iKT4tMT9ocihlLHQsbik6SW4odCk\/SG4obik\/ZS5yZW1vdmVBdHRyaWJ1dGUodCk6KG49ImFsbG93ZnVsbHNjcmVlbiI9PT10JiYiRU1CRUQiPT09ZS50YWdOYW1lPyJ0cnVlIjp0LGUuc2V0QXR0cmlidXRlKHQsbikpOkRuKHQpP2Uuc2V0QXR0cmlidXRlKHQsTW4odCxuKSk6UG4odCk\/SG4obik\/ZS5yZW1vdmVBdHRyaWJ1dGVOUyhGbixSbih0KSk6ZS5zZXRBdHRyaWJ1dGVOUyhGbix0LG4pOmhyKGUsdCxuKX1mdW5jdGlvbiBocihlLHQsbil7aWYoSG4obikpZS5yZW1vdmVBdHRyaWJ1dGUodCk7ZWxzZXtpZihxJiYhVyYmIlRFWFRBUkVBIj09PWUudGFnTmFtZSYmInBsYWNlaG9sZGVyIj09PXQmJiIiIT09biYmIWUuX19pZXBoKXt2YXIgcj1mdW5jdGlvbih0KXt0LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpLGUucmVtb3ZlRXZlbnRMaXN0ZW5lcigiaW5wdXQiLHIpfTtlLmFkZEV2ZW50TGlzdGVuZXIoImlucHV0IixyKSxlLl9faWVwaD0hMH1lLnNldEF0dHJpYnV0ZSh0LG4pfX12YXIgbXI9e2NyZWF0ZTpkcix1cGRhdGU6ZHJ9O2Z1bmN0aW9uIHlyKGUscil7dmFyIGk9ci5lbG0sbz1yLmRhdGEsYT1lLmRhdGE7aWYoISh0KG8uc3RhdGljQ2xhc3MpJiZ0KG8uY2xhc3MpJiYodChhKXx8dChhLnN0YXRpY0NsYXNzKSYmdChhLmNsYXNzKSkpKXt2YXIgcz1CbihyKSxjPWkuX3RyYW5zaXRpb25DbGFzc2VzO24oYykmJihzPXpuKHMsVm4oYykpKSxzIT09aS5fcHJldkNsYXNzJiYoaS5zZXRBdHRyaWJ1dGUoImNsYXNzIixzKSxpLl9wcmV2Q2xhc3M9cyl9fXZhciBncixfcixiciwkcix3cixDcix4cj17Y3JlYXRlOnlyLHVwZGF0ZTp5cn0sa3I9L1tcdykuK1wtXyRcXV0vO2Z1bmN0aW9uIEFyKGUpe3ZhciB0LG4scixpLG8sYT0hMSxzPSExLGM9ITEsdT0hMSxsPTAsZj0wLHA9MCxkPTA7Zm9yKHI9MDtyPGUubGVuZ3RoO3IrKylpZihuPXQsdD1lLmNoYXJDb2RlQXQociksYSkzOT09PXQmJjkyIT09biYmKGE9ITEpO2Vsc2UgaWYocykzND09PXQmJjkyIT09biYmKHM9ITEpO2Vsc2UgaWYoYyk5Nj09PXQmJjkyIT09biYmKGM9ITEpO2Vsc2UgaWYodSk0Nz09PXQmJjkyIT09biYmKHU9ITEpO2Vsc2UgaWYoMTI0IT09dHx8MTI0PT09ZS5jaGFyQ29kZUF0KHIrMSl8fDEyND09PWUuY2hhckNvZGVBdChyLTEpfHxsfHxmfHxwKXtzd2l0Y2godCl7Y2FzZSAzNDpzPSEwO2JyZWFrO2Nhc2UgMzk6YT0hMDticmVhaztjYXNlIDk2OmM9ITA7YnJlYWs7Y2FzZSA0MDpwKys7YnJlYWs7Y2FzZSA0MTpwLS07YnJlYWs7Y2FzZSA5MTpmKys7YnJlYWs7Y2FzZSA5MzpmLS07YnJlYWs7Y2FzZSAxMjM6bCsrO2JyZWFrO2Nhc2UgMTI1OmwtLX1pZig0Nz09PXQpe2Zvcih2YXIgdj1yLTEsaD12b2lkIDA7dj49MCYmIiAiPT09KGg9ZS5jaGFyQXQodikpO3YtLSk7aCYma3IudGVzdChoKXx8KHU9ITApfX1lbHNlIHZvaWQgMD09PWk\/KGQ9cisxLGk9ZS5zbGljZSgwLHIpLnRyaW0oKSk6bSgpO2Z1bmN0aW9uIG0oKXsob3x8KG89W10pKS5wdXNoKGUuc2xpY2UoZCxyKS50cmltKCkpLGQ9cisxfWlmKHZvaWQgMD09PWk\/aT1lLnNsaWNlKDAscikudHJpbSgpOjAhPT1kJiZtKCksbylmb3Iocj0wO3I8by5sZW5ndGg7cisrKWk9T3IoaSxvW3JdKTtyZXR1cm4gaX1mdW5jdGlvbiBPcihlLHQpe3ZhciBuPXQuaW5kZXhPZigiKCIpO2lmKG48MClyZXR1cm4nX2YoIicrdCsnIikoJytlKyIpIjt2YXIgcj10LnNsaWNlKDAsbiksaT10LnNsaWNlKG4rMSk7cmV0dXJuJ19mKCInK3IrJyIpKCcrZSsoIikiIT09aT8iLCIraTppKX1mdW5jdGlvbiBTcihlLHQpe2NvbnNvbGUuZXJyb3IoIltWdWUgY29tcGlsZXJdOiAiK2UpfWZ1bmN0aW9uIFRyKGUsdCl7cmV0dXJuIGU\/ZS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIGVbdF19KS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIGV9KTpbXX1mdW5jdGlvbiBFcihlLHQsbixyLGkpeyhlLnByb3BzfHwoZS5wcm9wcz1bXSkpLnB1c2goUnIoe25hbWU6dCx2YWx1ZTpuLGR5bmFtaWM6aX0scikpLGUucGxhaW49ITF9ZnVuY3Rpb24gTnIoZSx0LG4scixpKXsoaT9lLmR5bmFtaWNBdHRyc3x8KGUuZHluYW1pY0F0dHJzPVtdKTplLmF0dHJzfHwoZS5hdHRycz1bXSkpLnB1c2goUnIoe25hbWU6dCx2YWx1ZTpuLGR5bmFtaWM6aX0scikpLGUucGxhaW49ITF9ZnVuY3Rpb24ganIoZSx0LG4scil7ZS5hdHRyc01hcFt0XT1uLGUuYXR0cnNMaXN0LnB1c2goUnIoe25hbWU6dCx2YWx1ZTpufSxyKSl9ZnVuY3Rpb24gRHIoZSx0LG4scixpLG8sYSxzKXsoZS5kaXJlY3RpdmVzfHwoZS5kaXJlY3RpdmVzPVtdKSkucHVzaChScih7bmFtZTp0LHJhd05hbWU6bix2YWx1ZTpyLGFyZzppLGlzRHluYW1pY0FyZzpvLG1vZGlmaWVyczphfSxzKSksZS5wbGFpbj0hMX1mdW5jdGlvbiBMcihlLHQsbil7cmV0dXJuIG4\/Il9wKCIrdCsnLCInK2UrJyIpJzplK3R9ZnVuY3Rpb24gTXIodCxuLHIsaSxvLGEscyxjKXt2YXIgdTsoaT1pfHxlKS5yaWdodD9jP249IigiK24rIik9PT0nY2xpY2snPydjb250ZXh0bWVudSc6KCIrbisiKSI6ImNsaWNrIj09PW4mJihuPSJjb250ZXh0bWVudSIsZGVsZXRlIGkucmlnaHQpOmkubWlkZGxlJiYoYz9uPSIoIituKyIpPT09J2NsaWNrJz8nbW91c2V1cCc6KCIrbisiKSI6ImNsaWNrIj09PW4mJihuPSJtb3VzZXVwIikpLGkuY2FwdHVyZSYmKGRlbGV0ZSBpLmNhcHR1cmUsbj1McigiISIsbixjKSksaS5vbmNlJiYoZGVsZXRlIGkub25jZSxuPUxyKCJ+IixuLGMpKSxpLnBhc3NpdmUmJihkZWxldGUgaS5wYXNzaXZlLG49THIoIiYiLG4sYykpLGkubmF0aXZlPyhkZWxldGUgaS5uYXRpdmUsdT10Lm5hdGl2ZUV2ZW50c3x8KHQubmF0aXZlRXZlbnRzPXt9KSk6dT10LmV2ZW50c3x8KHQuZXZlbnRzPXt9KTt2YXIgbD1Scih7dmFsdWU6ci50cmltKCksZHluYW1pYzpjfSxzKTtpIT09ZSYmKGwubW9kaWZpZXJzPWkpO3ZhciBmPXVbbl07QXJyYXkuaXNBcnJheShmKT9vP2YudW5zaGlmdChsKTpmLnB1c2gobCk6dVtuXT1mP28\/W2wsZl06W2YsbF06bCx0LnBsYWluPSExfWZ1bmN0aW9uIElyKGUsdCxuKXt2YXIgcj1GcihlLCI6Iit0KXx8RnIoZSwidi1iaW5kOiIrdCk7aWYobnVsbCE9cilyZXR1cm4gQXIocik7aWYoITEhPT1uKXt2YXIgaT1GcihlLHQpO2lmKG51bGwhPWkpcmV0dXJuIEpTT04uc3RyaW5naWZ5KGkpfX1mdW5jdGlvbiBGcihlLHQsbil7dmFyIHI7aWYobnVsbCE9KHI9ZS5hdHRyc01hcFt0XSkpZm9yKHZhciBpPWUuYXR0cnNMaXN0LG89MCxhPWkubGVuZ3RoO288YTtvKyspaWYoaVtvXS5uYW1lPT09dCl7aS5zcGxpY2UobywxKTticmVha31yZXR1cm4gbiYmZGVsZXRlIGUuYXR0cnNNYXBbdF0scn1mdW5jdGlvbiBQcihlLHQpe2Zvcih2YXIgbj1lLmF0dHJzTGlzdCxyPTAsaT1uLmxlbmd0aDtyPGk7cisrKXt2YXIgbz1uW3JdO2lmKHQudGVzdChvLm5hbWUpKXJldHVybiBuLnNwbGljZShyLDEpLG99fWZ1bmN0aW9uIFJyKGUsdCl7cmV0dXJuIHQmJihudWxsIT10LnN0YXJ0JiYoZS5zdGFydD10LnN0YXJ0KSxudWxsIT10LmVuZCYmKGUuZW5kPXQuZW5kKSksZX1mdW5jdGlvbiBIcihlLHQsbil7dmFyIHI9bnx8e30saT1yLm51bWJlcixvPSIkJHYiO3IudHJpbSYmKG89Iih0eXBlb2YgJCR2ID09PSAnc3RyaW5nJz8gJCR2LnRyaW0oKTogJCR2KSIpLGkmJihvPSJfbigiK28rIikiKTt2YXIgYT1Ccih0LG8pO2UubW9kZWw9e3ZhbHVlOiIoIit0KyIpIixleHByZXNzaW9uOkpTT04uc3RyaW5naWZ5KHQpLGNhbGxiYWNrOiJmdW5jdGlvbiAoJCR2KSB7IithKyJ9In19ZnVuY3Rpb24gQnIoZSx0KXt2YXIgbj1mdW5jdGlvbihlKXtpZihlPWUudHJpbSgpLGdyPWUubGVuZ3RoLGUuaW5kZXhPZigiWyIpPDB8fGUubGFzdEluZGV4T2YoIl0iKTxnci0xKXJldHVybigkcj1lLmxhc3RJbmRleE9mKCIuIikpPi0xP3tleHA6ZS5zbGljZSgwLCRyKSxrZXk6JyInK2Uuc2xpY2UoJHIrMSkrJyInfTp7ZXhwOmUsa2V5Om51bGx9O19yPWUsJHI9d3I9Q3I9MDtmb3IoOyF6cigpOylWcihicj1VcigpKT9Kcihicik6OTE9PT1iciYmS3IoYnIpO3JldHVybntleHA6ZS5zbGljZSgwLHdyKSxrZXk6ZS5zbGljZSh3cisxLENyKX19KGUpO3JldHVybiBudWxsPT09bi5rZXk\/ZSsiPSIrdDoiJHNldCgiK24uZXhwKyIsICIrbi5rZXkrIiwgIit0KyIpIn1mdW5jdGlvbiBVcigpe3JldHVybiBfci5jaGFyQ29kZUF0KCsrJHIpfWZ1bmN0aW9uIHpyKCl7cmV0dXJuICRyPj1ncn1mdW5jdGlvbiBWcihlKXtyZXR1cm4gMzQ9PT1lfHwzOT09PWV9ZnVuY3Rpb24gS3IoZSl7dmFyIHQ9MTtmb3Iod3I9JHI7IXpyKCk7KWlmKFZyKGU9VXIoKSkpSnIoZSk7ZWxzZSBpZig5MT09PWUmJnQrKyw5Mz09PWUmJnQtLSwwPT09dCl7Q3I9JHI7YnJlYWt9fWZ1bmN0aW9uIEpyKGUpe2Zvcih2YXIgdD1lOyF6cigpJiYoZT1VcigpKSE9PXQ7KTt9dmFyIHFyLFdyPSJfX3IiLFpyPSJfX2MiO2Z1bmN0aW9uIEdyKGUsdCxuKXt2YXIgcj1xcjtyZXR1cm4gZnVuY3Rpb24gaSgpe251bGwhPT10LmFwcGx5KG51bGwsYXJndW1lbnRzKSYmUXIoZSxpLG4scil9fXZhciBYcj1WZSYmIShYJiZOdW1iZXIoWFsxXSk8PTUzKTtmdW5jdGlvbiBZcihlLHQsbixyKXtpZihYcil7dmFyIGk9YW4sbz10O3Q9by5fd3JhcHBlcj1mdW5jdGlvbihlKXtpZihlLnRhcmdldD09PWUuY3VycmVudFRhcmdldHx8ZS50aW1lU3RhbXA+PWl8fGUudGltZVN0YW1wPD0wfHxlLnRhcmdldC5vd25lckRvY3VtZW50IT09ZG9jdW1lbnQpcmV0dXJuIG8uYXBwbHkodGhpcyxhcmd1bWVudHMpfX1xci5hZGRFdmVudExpc3RlbmVyKGUsdCxRP3tjYXB0dXJlOm4scGFzc2l2ZTpyfTpuKX1mdW5jdGlvbiBRcihlLHQsbixyKXsocnx8cXIpLnJlbW92ZUV2ZW50TGlzdGVuZXIoZSx0Ll93cmFwcGVyfHx0LG4pfWZ1bmN0aW9uIGVpKGUscil7aWYoIXQoZS5kYXRhLm9uKXx8IXQoci5kYXRhLm9uKSl7dmFyIGk9ci5kYXRhLm9ufHx7fSxvPWUuZGF0YS5vbnx8e307cXI9ci5lbG0sZnVuY3Rpb24oZSl7aWYobihlW1dyXSkpe3ZhciB0PXE\/ImNoYW5nZSI6ImlucHV0IjtlW3RdPVtdLmNvbmNhdChlW1dyXSxlW3RdfHxbXSksZGVsZXRlIGVbV3JdfW4oZVtacl0pJiYoZS5jaGFuZ2U9W10uY29uY2F0KGVbWnJdLGUuY2hhbmdlfHxbXSksZGVsZXRlIGVbWnJdKX0oaSkscnQoaSxvLFlyLFFyLEdyLHIuY29udGV4dCkscXI9dm9pZCAwfX12YXIgdGksbmk9e2NyZWF0ZTplaSx1cGRhdGU6ZWl9O2Z1bmN0aW9uIHJpKGUscil7aWYoIXQoZS5kYXRhLmRvbVByb3BzKXx8IXQoci5kYXRhLmRvbVByb3BzKSl7dmFyIGksbyxhPXIuZWxtLHM9ZS5kYXRhLmRvbVByb3BzfHx7fSxjPXIuZGF0YS5kb21Qcm9wc3x8e307Zm9yKGkgaW4gbihjLl9fb2JfXykmJihjPXIuZGF0YS5kb21Qcm9wcz1BKHt9LGMpKSxzKWkgaW4gY3x8KGFbaV09IiIpO2ZvcihpIGluIGMpe2lmKG89Y1tpXSwidGV4dENvbnRlbnQiPT09aXx8ImlubmVySFRNTCI9PT1pKXtpZihyLmNoaWxkcmVuJiYoci5jaGlsZHJlbi5sZW5ndGg9MCksbz09PXNbaV0pY29udGludWU7MT09PWEuY2hpbGROb2Rlcy5sZW5ndGgmJmEucmVtb3ZlQ2hpbGQoYS5jaGlsZE5vZGVzWzBdKX1pZigidmFsdWUiPT09aSYmIlBST0dSRVNTIiE9PWEudGFnTmFtZSl7YS5fdmFsdWU9bzt2YXIgdT10KG8pPyIiOlN0cmluZyhvKTtpaShhLHUpJiYoYS52YWx1ZT11KX1lbHNlIGlmKCJpbm5lckhUTUwiPT09aSYmcW4oYS50YWdOYW1lKSYmdChhLmlubmVySFRNTCkpeyh0aT10aXx8ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IikpLmlubmVySFRNTD0iPHN2Zz4iK28rIjwvc3ZnPiI7Zm9yKHZhciBsPXRpLmZpcnN0Q2hpbGQ7YS5maXJzdENoaWxkOylhLnJlbW92ZUNoaWxkKGEuZmlyc3RDaGlsZCk7Zm9yKDtsLmZpcnN0Q2hpbGQ7KWEuYXBwZW5kQ2hpbGQobC5maXJzdENoaWxkKX1lbHNlIGlmKG8hPT1zW2ldKXRyeXthW2ldPW99Y2F0Y2goZSl7fX19fWZ1bmN0aW9uIGlpKGUsdCl7cmV0dXJuIWUuY29tcG9zaW5nJiYoIk9QVElPTiI9PT1lLnRhZ05hbWV8fGZ1bmN0aW9uKGUsdCl7dmFyIG49ITA7dHJ5e249ZG9jdW1lbnQuYWN0aXZlRWxlbWVudCE9PWV9Y2F0Y2goZSl7fXJldHVybiBuJiZlLnZhbHVlIT09dH0oZSx0KXx8ZnVuY3Rpb24oZSx0KXt2YXIgcj1lLnZhbHVlLGk9ZS5fdk1vZGlmaWVycztpZihuKGkpKXtpZihpLm51bWJlcilyZXR1cm4gZihyKSE9PWYodCk7aWYoaS50cmltKXJldHVybiByLnRyaW0oKSE9PXQudHJpbSgpfXJldHVybiByIT09dH0oZSx0KSl9dmFyIG9pPXtjcmVhdGU6cmksdXBkYXRlOnJpfSxhaT1nKGZ1bmN0aW9uKGUpe3ZhciB0PXt9LG49LzooLispLztyZXR1cm4gZS5zcGxpdCgvOyg\/IVteKF0qXCkpL2cpLmZvckVhY2goZnVuY3Rpb24oZSl7aWYoZSl7dmFyIHI9ZS5zcGxpdChuKTtyLmxlbmd0aD4xJiYodFtyWzBdLnRyaW0oKV09clsxXS50cmltKCkpfX0pLHR9KTtmdW5jdGlvbiBzaShlKXt2YXIgdD1jaShlLnN0eWxlKTtyZXR1cm4gZS5zdGF0aWNTdHlsZT9BKGUuc3RhdGljU3R5bGUsdCk6dH1mdW5jdGlvbiBjaShlKXtyZXR1cm4gQXJyYXkuaXNBcnJheShlKT9PKGUpOiJzdHJpbmciPT10eXBlb2YgZT9haShlKTplfXZhciB1aSxsaT0vXi0tLyxmaT0vXHMqIWltcG9ydGFudCQvLHBpPWZ1bmN0aW9uKGUsdCxuKXtpZihsaS50ZXN0KHQpKWUuc3R5bGUuc2V0UHJvcGVydHkodCxuKTtlbHNlIGlmKGZpLnRlc3QobikpZS5zdHlsZS5zZXRQcm9wZXJ0eShDKHQpLG4ucmVwbGFjZShmaSwiIiksImltcG9ydGFudCIpO2Vsc2V7dmFyIHI9dmkodCk7aWYoQXJyYXkuaXNBcnJheShuKSlmb3IodmFyIGk9MCxvPW4ubGVuZ3RoO2k8bztpKyspZS5zdHlsZVtyXT1uW2ldO2Vsc2UgZS5zdHlsZVtyXT1ufX0sZGk9WyJXZWJraXQiLCJNb3oiLCJtcyJdLHZpPWcoZnVuY3Rpb24oZSl7aWYodWk9dWl8fGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLnN0eWxlLCJmaWx0ZXIiIT09KGU9YihlKSkmJmUgaW4gdWkpcmV0dXJuIGU7Zm9yKHZhciB0PWUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkrZS5zbGljZSgxKSxuPTA7bjxkaS5sZW5ndGg7bisrKXt2YXIgcj1kaVtuXSt0O2lmKHIgaW4gdWkpcmV0dXJuIHJ9fSk7ZnVuY3Rpb24gaGkoZSxyKXt2YXIgaT1yLmRhdGEsbz1lLmRhdGE7aWYoISh0KGkuc3RhdGljU3R5bGUpJiZ0KGkuc3R5bGUpJiZ0KG8uc3RhdGljU3R5bGUpJiZ0KG8uc3R5bGUpKSl7dmFyIGEscyxjPXIuZWxtLHU9by5zdGF0aWNTdHlsZSxsPW8ubm9ybWFsaXplZFN0eWxlfHxvLnN0eWxlfHx7fSxmPXV8fGwscD1jaShyLmRhdGEuc3R5bGUpfHx7fTtyLmRhdGEubm9ybWFsaXplZFN0eWxlPW4ocC5fX29iX18pP0Eoe30scCk6cDt2YXIgZD1mdW5jdGlvbihlLHQpe3ZhciBuLHI9e307aWYodClmb3IodmFyIGk9ZTtpLmNvbXBvbmVudEluc3RhbmNlOykoaT1pLmNvbXBvbmVudEluc3RhbmNlLl92bm9kZSkmJmkuZGF0YSYmKG49c2koaS5kYXRhKSkmJkEocixuKTsobj1zaShlLmRhdGEpKSYmQShyLG4pO2Zvcih2YXIgbz1lO289by5wYXJlbnQ7KW8uZGF0YSYmKG49c2koby5kYXRhKSkmJkEocixuKTtyZXR1cm4gcn0ociwhMCk7Zm9yKHMgaW4gZil0KGRbc10pJiZwaShjLHMsIiIpO2ZvcihzIGluIGQpKGE9ZFtzXSkhPT1mW3NdJiZwaShjLHMsbnVsbD09YT8iIjphKX19dmFyIG1pPXtjcmVhdGU6aGksdXBkYXRlOmhpfSx5aT0vXHMrLztmdW5jdGlvbiBnaShlLHQpe2lmKHQmJih0PXQudHJpbSgpKSlpZihlLmNsYXNzTGlzdCl0LmluZGV4T2YoIiAiKT4tMT90LnNwbGl0KHlpKS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3JldHVybiBlLmNsYXNzTGlzdC5hZGQodCl9KTplLmNsYXNzTGlzdC5hZGQodCk7ZWxzZXt2YXIgbj0iICIrKGUuZ2V0QXR0cmlidXRlKCJjbGFzcyIpfHwiIikrIiAiO24uaW5kZXhPZigiICIrdCsiICIpPDAmJmUuc2V0QXR0cmlidXRlKCJjbGFzcyIsKG4rdCkudHJpbSgpKX19ZnVuY3Rpb24gX2koZSx0KXtpZih0JiYodD10LnRyaW0oKSkpaWYoZS5jbGFzc0xpc3QpdC5pbmRleE9mKCIgIik+LTE\/dC5zcGxpdCh5aSkuZm9yRWFjaChmdW5jdGlvbih0KXtyZXR1cm4gZS5jbGFzc0xpc3QucmVtb3ZlKHQpfSk6ZS5jbGFzc0xpc3QucmVtb3ZlKHQpLGUuY2xhc3NMaXN0Lmxlbmd0aHx8ZS5yZW1vdmVBdHRyaWJ1dGUoImNsYXNzIik7ZWxzZXtmb3IodmFyIG49IiAiKyhlLmdldEF0dHJpYnV0ZSgiY2xhc3MiKXx8IiIpKyIgIixyPSIgIit0KyIgIjtuLmluZGV4T2Yocik+PTA7KW49bi5yZXBsYWNlKHIsIiAiKTsobj1uLnRyaW0oKSk\/ZS5zZXRBdHRyaWJ1dGUoImNsYXNzIixuKTplLnJlbW92ZUF0dHJpYnV0ZSgiY2xhc3MiKX19ZnVuY3Rpb24gYmkoZSl7aWYoZSl7aWYoIm9iamVjdCI9PXR5cGVvZiBlKXt2YXIgdD17fTtyZXR1cm4hMSE9PWUuY3NzJiZBKHQsJGkoZS5uYW1lfHwidiIpKSxBKHQsZSksdH1yZXR1cm4ic3RyaW5nIj09dHlwZW9mIGU\/JGkoZSk6dm9pZCAwfX12YXIgJGk9ZyhmdW5jdGlvbihlKXtyZXR1cm57ZW50ZXJDbGFzczplKyItZW50ZXIiLGVudGVyVG9DbGFzczplKyItZW50ZXItdG8iLGVudGVyQWN0aXZlQ2xhc3M6ZSsiLWVudGVyLWFjdGl2ZSIsbGVhdmVDbGFzczplKyItbGVhdmUiLGxlYXZlVG9DbGFzczplKyItbGVhdmUtdG8iLGxlYXZlQWN0aXZlQ2xhc3M6ZSsiLWxlYXZlLWFjdGl2ZSJ9fSksd2k9eiYmIVcsQ2k9InRyYW5zaXRpb24iLHhpPSJhbmltYXRpb24iLGtpPSJ0cmFuc2l0aW9uIixBaT0idHJhbnNpdGlvbmVuZCIsT2k9ImFuaW1hdGlvbiIsU2k9ImFuaW1hdGlvbmVuZCI7d2kmJih2b2lkIDA9PT13aW5kb3cub250cmFuc2l0aW9uZW5kJiZ2b2lkIDAhPT13aW5kb3cub253ZWJraXR0cmFuc2l0aW9uZW5kJiYoa2k9IldlYmtpdFRyYW5zaXRpb24iLEFpPSJ3ZWJraXRUcmFuc2l0aW9uRW5kIiksdm9pZCAwPT09d2luZG93Lm9uYW5pbWF0aW9uZW5kJiZ2b2lkIDAhPT13aW5kb3cub253ZWJraXRhbmltYXRpb25lbmQmJihPaT0iV2Via2l0QW5pbWF0aW9uIixTaT0id2Via2l0QW5pbWF0aW9uRW5kIikpO3ZhciBUaT16P3dpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWU\/d2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZS5iaW5kKHdpbmRvdyk6c2V0VGltZW91dDpmdW5jdGlvbihlKXtyZXR1cm4gZSgpfTtmdW5jdGlvbiBFaShlKXtUaShmdW5jdGlvbigpe1RpKGUpfSl9ZnVuY3Rpb24gTmkoZSx0KXt2YXIgbj1lLl90cmFuc2l0aW9uQ2xhc3Nlc3x8KGUuX3RyYW5zaXRpb25DbGFzc2VzPVtdKTtuLmluZGV4T2YodCk8MCYmKG4ucHVzaCh0KSxnaShlLHQpKX1mdW5jdGlvbiBqaShlLHQpe2UuX3RyYW5zaXRpb25DbGFzc2VzJiZoKGUuX3RyYW5zaXRpb25DbGFzc2VzLHQpLF9pKGUsdCl9ZnVuY3Rpb24gRGkoZSx0LG4pe3ZhciByPU1pKGUsdCksaT1yLnR5cGUsbz1yLnRpbWVvdXQsYT1yLnByb3BDb3VudDtpZighaSlyZXR1cm4gbigpO3ZhciBzPWk9PT1DaT9BaTpTaSxjPTAsdT1mdW5jdGlvbigpe2UucmVtb3ZlRXZlbnRMaXN0ZW5lcihzLGwpLG4oKX0sbD1mdW5jdGlvbih0KXt0LnRhcmdldD09PWUmJisrYz49YSYmdSgpfTtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7YzxhJiZ1KCl9LG8rMSksZS5hZGRFdmVudExpc3RlbmVyKHMsbCl9dmFyIExpPS9cYih0cmFuc2Zvcm18YWxsKSgsfCQpLztmdW5jdGlvbiBNaShlLHQpe3ZhciBuLHI9d2luZG93LmdldENvbXB1dGVkU3R5bGUoZSksaT0ocltraSsiRGVsYXkiXXx8IiIpLnNwbGl0KCIsICIpLG89KHJba2krIkR1cmF0aW9uIl18fCIiKS5zcGxpdCgiLCAiKSxhPUlpKGksbykscz0ocltPaSsiRGVsYXkiXXx8IiIpLnNwbGl0KCIsICIpLGM9KHJbT2krIkR1cmF0aW9uIl18fCIiKS5zcGxpdCgiLCAiKSx1PUlpKHMsYyksbD0wLGY9MDtyZXR1cm4gdD09PUNpP2E+MCYmKG49Q2ksbD1hLGY9by5sZW5ndGgpOnQ9PT14aT91PjAmJihuPXhpLGw9dSxmPWMubGVuZ3RoKTpmPShuPShsPU1hdGgubWF4KGEsdSkpPjA\/YT51P0NpOnhpOm51bGwpP249PT1DaT9vLmxlbmd0aDpjLmxlbmd0aDowLHt0eXBlOm4sdGltZW91dDpsLHByb3BDb3VudDpmLGhhc1RyYW5zZm9ybTpuPT09Q2kmJkxpLnRlc3QocltraSsiUHJvcGVydHkiXSl9fWZ1bmN0aW9uIElpKGUsdCl7Zm9yKDtlLmxlbmd0aDx0Lmxlbmd0aDspZT1lLmNvbmNhdChlKTtyZXR1cm4gTWF0aC5tYXguYXBwbHkobnVsbCx0Lm1hcChmdW5jdGlvbih0LG4pe3JldHVybiBGaSh0KStGaShlW25dKX0pKX1mdW5jdGlvbiBGaShlKXtyZXR1cm4gMWUzKk51bWJlcihlLnNsaWNlKDAsLTEpLnJlcGxhY2UoIiwiLCIuIikpfWZ1bmN0aW9uIFBpKGUscil7dmFyIGk9ZS5lbG07bihpLl9sZWF2ZUNiKSYmKGkuX2xlYXZlQ2IuY2FuY2VsbGVkPSEwLGkuX2xlYXZlQ2IoKSk7dmFyIGE9YmkoZS5kYXRhLnRyYW5zaXRpb24pO2lmKCF0KGEpJiYhbihpLl9lbnRlckNiKSYmMT09PWkubm9kZVR5cGUpe2Zvcih2YXIgcz1hLmNzcyxjPWEudHlwZSx1PWEuZW50ZXJDbGFzcyxsPWEuZW50ZXJUb0NsYXNzLHA9YS5lbnRlckFjdGl2ZUNsYXNzLGQ9YS5hcHBlYXJDbGFzcyx2PWEuYXBwZWFyVG9DbGFzcyxoPWEuYXBwZWFyQWN0aXZlQ2xhc3MsbT1hLmJlZm9yZUVudGVyLHk9YS5lbnRlcixnPWEuYWZ0ZXJFbnRlcixfPWEuZW50ZXJDYW5jZWxsZWQsYj1hLmJlZm9yZUFwcGVhciwkPWEuYXBwZWFyLHc9YS5hZnRlckFwcGVhcixDPWEuYXBwZWFyQ2FuY2VsbGVkLHg9YS5kdXJhdGlvbixrPVd0LEE9V3QuJHZub2RlO0EmJkEucGFyZW50OylrPUEuY29udGV4dCxBPUEucGFyZW50O3ZhciBPPSFrLl9pc01vdW50ZWR8fCFlLmlzUm9vdEluc2VydDtpZighT3x8JHx8IiI9PT0kKXt2YXIgUz1PJiZkP2Q6dSxUPU8mJmg\/aDpwLEU9TyYmdj92OmwsTj1PJiZifHxtLGo9TyYmImZ1bmN0aW9uIj09dHlwZW9mICQ\/JDp5LEw9TyYmd3x8ZyxNPU8mJkN8fF8sST1mKG8oeCk\/eC5lbnRlcjp4KSxGPSExIT09cyYmIVcsUD1CaShqKSxSPWkuX2VudGVyQ2I9RChmdW5jdGlvbigpe0YmJihqaShpLEUpLGppKGksVCkpLFIuY2FuY2VsbGVkPyhGJiZqaShpLFMpLE0mJk0oaSkpOkwmJkwoaSksaS5fZW50ZXJDYj1udWxsfSk7ZS5kYXRhLnNob3d8fGl0KGUsImluc2VydCIsZnVuY3Rpb24oKXt2YXIgdD1pLnBhcmVudE5vZGUsbj10JiZ0Ll9wZW5kaW5nJiZ0Ll9wZW5kaW5nW2Uua2V5XTtuJiZuLnRhZz09PWUudGFnJiZuLmVsbS5fbGVhdmVDYiYmbi5lbG0uX2xlYXZlQ2IoKSxqJiZqKGksUil9KSxOJiZOKGkpLEYmJihOaShpLFMpLE5pKGksVCksRWkoZnVuY3Rpb24oKXtqaShpLFMpLFIuY2FuY2VsbGVkfHwoTmkoaSxFKSxQfHwoSGkoSSk\/c2V0VGltZW91dChSLEkpOkRpKGksYyxSKSkpfSkpLGUuZGF0YS5zaG93JiYociYmcigpLGomJmooaSxSKSksRnx8UHx8UigpfX19ZnVuY3Rpb24gUmkoZSxyKXt2YXIgaT1lLmVsbTtuKGkuX2VudGVyQ2IpJiYoaS5fZW50ZXJDYi5jYW5jZWxsZWQ9ITAsaS5fZW50ZXJDYigpKTt2YXIgYT1iaShlLmRhdGEudHJhbnNpdGlvbik7aWYodChhKXx8MSE9PWkubm9kZVR5cGUpcmV0dXJuIHIoKTtpZighbihpLl9sZWF2ZUNiKSl7dmFyIHM9YS5jc3MsYz1hLnR5cGUsdT1hLmxlYXZlQ2xhc3MsbD1hLmxlYXZlVG9DbGFzcyxwPWEubGVhdmVBY3RpdmVDbGFzcyxkPWEuYmVmb3JlTGVhdmUsdj1hLmxlYXZlLGg9YS5hZnRlckxlYXZlLG09YS5sZWF2ZUNhbmNlbGxlZCx5PWEuZGVsYXlMZWF2ZSxnPWEuZHVyYXRpb24sXz0hMSE9PXMmJiFXLGI9QmkodiksJD1mKG8oZyk\/Zy5sZWF2ZTpnKSx3PWkuX2xlYXZlQ2I9RChmdW5jdGlvbigpe2kucGFyZW50Tm9kZSYmaS5wYXJlbnROb2RlLl9wZW5kaW5nJiYoaS5wYXJlbnROb2RlLl9wZW5kaW5nW2Uua2V5XT1udWxsKSxfJiYoamkoaSxsKSxqaShpLHApKSx3LmNhbmNlbGxlZD8oXyYmamkoaSx1KSxtJiZtKGkpKToocigpLGgmJmgoaSkpLGkuX2xlYXZlQ2I9bnVsbH0pO3k\/eShDKTpDKCl9ZnVuY3Rpb24gQygpe3cuY2FuY2VsbGVkfHwoIWUuZGF0YS5zaG93JiZpLnBhcmVudE5vZGUmJigoaS5wYXJlbnROb2RlLl9wZW5kaW5nfHwoaS5wYXJlbnROb2RlLl9wZW5kaW5nPXt9KSlbZS5rZXldPWUpLGQmJmQoaSksXyYmKE5pKGksdSksTmkoaSxwKSxFaShmdW5jdGlvbigpe2ppKGksdSksdy5jYW5jZWxsZWR8fChOaShpLGwpLGJ8fChIaSgkKT9zZXRUaW1lb3V0KHcsJCk6RGkoaSxjLHcpKSl9KSksdiYmdihpLHcpLF98fGJ8fHcoKSl9fWZ1bmN0aW9uIEhpKGUpe3JldHVybiJudW1iZXIiPT10eXBlb2YgZSYmIWlzTmFOKGUpfWZ1bmN0aW9uIEJpKGUpe2lmKHQoZSkpcmV0dXJuITE7dmFyIHI9ZS5mbnM7cmV0dXJuIG4ocik\/QmkoQXJyYXkuaXNBcnJheShyKT9yWzBdOnIpOihlLl9sZW5ndGh8fGUubGVuZ3RoKT4xfWZ1bmN0aW9uIFVpKGUsdCl7ITAhPT10LmRhdGEuc2hvdyYmUGkodCl9dmFyIHppPWZ1bmN0aW9uKGUpe3ZhciBvLGEscz17fSxjPWUubW9kdWxlcyx1PWUubm9kZU9wcztmb3Iobz0wO288cnIubGVuZ3RoOysrbylmb3Ioc1tycltvXV09W10sYT0wO2E8Yy5sZW5ndGg7KythKW4oY1thXVtycltvXV0pJiZzW3JyW29dXS5wdXNoKGNbYV1bcnJbb11dKTtmdW5jdGlvbiBsKGUpe3ZhciB0PXUucGFyZW50Tm9kZShlKTtuKHQpJiZ1LnJlbW92ZUNoaWxkKHQsZSl9ZnVuY3Rpb24gZihlLHQsaSxvLGEsYyxsKXtpZihuKGUuZWxtKSYmbihjKSYmKGU9Y1tsXT1tZShlKSksZS5pc1Jvb3RJbnNlcnQ9IWEsIWZ1bmN0aW9uKGUsdCxpLG8pe3ZhciBhPWUuZGF0YTtpZihuKGEpKXt2YXIgYz1uKGUuY29tcG9uZW50SW5zdGFuY2UpJiZhLmtlZXBBbGl2ZTtpZihuKGE9YS5ob29rKSYmbihhPWEuaW5pdCkmJmEoZSwhMSksbihlLmNvbXBvbmVudEluc3RhbmNlKSlyZXR1cm4gZChlLHQpLHYoaSxlLmVsbSxvKSxyKGMpJiZmdW5jdGlvbihlLHQscixpKXtmb3IodmFyIG8sYT1lO2EuY29tcG9uZW50SW5zdGFuY2U7KWlmKGE9YS5jb21wb25lbnRJbnN0YW5jZS5fdm5vZGUsbihvPWEuZGF0YSkmJm4obz1vLnRyYW5zaXRpb24pKXtmb3Iobz0wO288cy5hY3RpdmF0ZS5sZW5ndGg7KytvKXMuYWN0aXZhdGVbb10obnIsYSk7dC5wdXNoKGEpO2JyZWFrfXYocixlLmVsbSxpKX0oZSx0LGksbyksITB9fShlLHQsaSxvKSl7dmFyIGY9ZS5kYXRhLHA9ZS5jaGlsZHJlbixtPWUudGFnO24obSk\/KGUuZWxtPWUubnM\/dS5jcmVhdGVFbGVtZW50TlMoZS5ucyxtKTp1LmNyZWF0ZUVsZW1lbnQobSxlKSxnKGUpLGgoZSxwLHQpLG4oZikmJnkoZSx0KSx2KGksZS5lbG0sbykpOnIoZS5pc0NvbW1lbnQpPyhlLmVsbT11LmNyZWF0ZUNvbW1lbnQoZS50ZXh0KSx2KGksZS5lbG0sbykpOihlLmVsbT11LmNyZWF0ZVRleHROb2RlKGUudGV4dCksdihpLGUuZWxtLG8pKX19ZnVuY3Rpb24gZChlLHQpe24oZS5kYXRhLnBlbmRpbmdJbnNlcnQpJiYodC5wdXNoLmFwcGx5KHQsZS5kYXRhLnBlbmRpbmdJbnNlcnQpLGUuZGF0YS5wZW5kaW5nSW5zZXJ0PW51bGwpLGUuZWxtPWUuY29tcG9uZW50SW5zdGFuY2UuJGVsLG0oZSk\/KHkoZSx0KSxnKGUpKToodHIoZSksdC5wdXNoKGUpKX1mdW5jdGlvbiB2KGUsdCxyKXtuKGUpJiYobihyKT91LnBhcmVudE5vZGUocik9PT1lJiZ1Lmluc2VydEJlZm9yZShlLHQscik6dS5hcHBlbmRDaGlsZChlLHQpKX1mdW5jdGlvbiBoKGUsdCxuKXtpZihBcnJheS5pc0FycmF5KHQpKWZvcih2YXIgcj0wO3I8dC5sZW5ndGg7KytyKWYodFtyXSxuLGUuZWxtLG51bGwsITAsdCxyKTtlbHNlIGkoZS50ZXh0KSYmdS5hcHBlbmRDaGlsZChlLmVsbSx1LmNyZWF0ZVRleHROb2RlKFN0cmluZyhlLnRleHQpKSl9ZnVuY3Rpb24gbShlKXtmb3IoO2UuY29tcG9uZW50SW5zdGFuY2U7KWU9ZS5jb21wb25lbnRJbnN0YW5jZS5fdm5vZGU7cmV0dXJuIG4oZS50YWcpfWZ1bmN0aW9uIHkoZSx0KXtmb3IodmFyIHI9MDtyPHMuY3JlYXRlLmxlbmd0aDsrK3Ipcy5jcmVhdGVbcl0obnIsZSk7bihvPWUuZGF0YS5ob29rKSYmKG4oby5jcmVhdGUpJiZvLmNyZWF0ZShucixlKSxuKG8uaW5zZXJ0KSYmdC5wdXNoKGUpKX1mdW5jdGlvbiBnKGUpe3ZhciB0O2lmKG4odD1lLmZuU2NvcGVJZCkpdS5zZXRTdHlsZVNjb3BlKGUuZWxtLHQpO2Vsc2UgZm9yKHZhciByPWU7cjspbih0PXIuY29udGV4dCkmJm4odD10LiRvcHRpb25zLl9zY29wZUlkKSYmdS5zZXRTdHlsZVNjb3BlKGUuZWxtLHQpLHI9ci5wYXJlbnQ7bih0PVd0KSYmdCE9PWUuY29udGV4dCYmdCE9PWUuZm5Db250ZXh0JiZuKHQ9dC4kb3B0aW9ucy5fc2NvcGVJZCkmJnUuc2V0U3R5bGVTY29wZShlLmVsbSx0KX1mdW5jdGlvbiBfKGUsdCxuLHIsaSxvKXtmb3IoO3I8PWk7KytyKWYobltyXSxvLGUsdCwhMSxuLHIpfWZ1bmN0aW9uIGIoZSl7dmFyIHQscixpPWUuZGF0YTtpZihuKGkpKWZvcihuKHQ9aS5ob29rKSYmbih0PXQuZGVzdHJveSkmJnQoZSksdD0wO3Q8cy5kZXN0cm95Lmxlbmd0aDsrK3Qpcy5kZXN0cm95W3RdKGUpO2lmKG4odD1lLmNoaWxkcmVuKSlmb3Iocj0wO3I8ZS5jaGlsZHJlbi5sZW5ndGg7KytyKWIoZS5jaGlsZHJlbltyXSl9ZnVuY3Rpb24gJChlLHQscil7Zm9yKDt0PD1yOysrdCl7dmFyIGk9ZVt0XTtuKGkpJiYobihpLnRhZyk\/KHcoaSksYihpKSk6bChpLmVsbSkpfX1mdW5jdGlvbiB3KGUsdCl7aWYobih0KXx8bihlLmRhdGEpKXt2YXIgcixpPXMucmVtb3ZlLmxlbmd0aCsxO2ZvcihuKHQpP3QubGlzdGVuZXJzKz1pOnQ9ZnVuY3Rpb24oZSx0KXtmdW5jdGlvbiBuKCl7MD09LS1uLmxpc3RlbmVycyYmbChlKX1yZXR1cm4gbi5saXN0ZW5lcnM9dCxufShlLmVsbSxpKSxuKHI9ZS5jb21wb25lbnRJbnN0YW5jZSkmJm4ocj1yLl92bm9kZSkmJm4oci5kYXRhKSYmdyhyLHQpLHI9MDtyPHMucmVtb3ZlLmxlbmd0aDsrK3Ipcy5yZW1vdmVbcl0oZSx0KTtuKHI9ZS5kYXRhLmhvb2spJiZuKHI9ci5yZW1vdmUpP3IoZSx0KTp0KCl9ZWxzZSBsKGUuZWxtKX1mdW5jdGlvbiBDKGUsdCxyLGkpe2Zvcih2YXIgbz1yO288aTtvKyspe3ZhciBhPXRbb107aWYobihhKSYmaXIoZSxhKSlyZXR1cm4gb319ZnVuY3Rpb24geChlLGksbyxhLGMsbCl7aWYoZSE9PWkpe24oaS5lbG0pJiZuKGEpJiYoaT1hW2NdPW1lKGkpKTt2YXIgcD1pLmVsbT1lLmVsbTtpZihyKGUuaXNBc3luY1BsYWNlaG9sZGVyKSluKGkuYXN5bmNGYWN0b3J5LnJlc29sdmVkKT9PKGUuZWxtLGksbyk6aS5pc0FzeW5jUGxhY2Vob2xkZXI9ITA7ZWxzZSBpZihyKGkuaXNTdGF0aWMpJiZyKGUuaXNTdGF0aWMpJiZpLmtleT09PWUua2V5JiYocihpLmlzQ2xvbmVkKXx8cihpLmlzT25jZSkpKWkuY29tcG9uZW50SW5zdGFuY2U9ZS5jb21wb25lbnRJbnN0YW5jZTtlbHNle3ZhciBkLHY9aS5kYXRhO24odikmJm4oZD12Lmhvb2spJiZuKGQ9ZC5wcmVwYXRjaCkmJmQoZSxpKTt2YXIgaD1lLmNoaWxkcmVuLHk9aS5jaGlsZHJlbjtpZihuKHYpJiZtKGkpKXtmb3IoZD0wO2Q8cy51cGRhdGUubGVuZ3RoOysrZClzLnVwZGF0ZVtkXShlLGkpO24oZD12Lmhvb2spJiZuKGQ9ZC51cGRhdGUpJiZkKGUsaSl9dChpLnRleHQpP24oaCkmJm4oeSk\/aCE9PXkmJmZ1bmN0aW9uKGUscixpLG8sYSl7Zm9yKHZhciBzLGMsbCxwPTAsZD0wLHY9ci5sZW5ndGgtMSxoPXJbMF0sbT1yW3ZdLHk9aS5sZW5ndGgtMSxnPWlbMF0sYj1pW3ldLHc9IWE7cDw9diYmZDw9eTspdChoKT9oPXJbKytwXTp0KG0pP209clstLXZdOmlyKGgsZyk\/KHgoaCxnLG8saSxkKSxoPXJbKytwXSxnPWlbKytkXSk6aXIobSxiKT8oeChtLGIsbyxpLHkpLG09clstLXZdLGI9aVstLXldKTppcihoLGIpPyh4KGgsYixvLGkseSksdyYmdS5pbnNlcnRCZWZvcmUoZSxoLmVsbSx1Lm5leHRTaWJsaW5nKG0uZWxtKSksaD1yWysrcF0sYj1pWy0teV0pOmlyKG0sZyk\/KHgobSxnLG8saSxkKSx3JiZ1Lmluc2VydEJlZm9yZShlLG0uZWxtLGguZWxtKSxtPXJbLS12XSxnPWlbKytkXSk6KHQocykmJihzPW9yKHIscCx2KSksdChjPW4oZy5rZXkpP3NbZy5rZXldOkMoZyxyLHAsdikpP2YoZyxvLGUsaC5lbG0sITEsaSxkKTppcihsPXJbY10sZyk\/KHgobCxnLG8saSxkKSxyW2NdPXZvaWQgMCx3JiZ1Lmluc2VydEJlZm9yZShlLGwuZWxtLGguZWxtKSk6ZihnLG8sZSxoLmVsbSwhMSxpLGQpLGc9aVsrK2RdKTtwPnY\/XyhlLHQoaVt5KzFdKT9udWxsOmlbeSsxXS5lbG0saSxkLHksbyk6ZD55JiYkKHIscCx2KX0ocCxoLHksbyxsKTpuKHkpPyhuKGUudGV4dCkmJnUuc2V0VGV4dENvbnRlbnQocCwiIiksXyhwLG51bGwseSwwLHkubGVuZ3RoLTEsbykpOm4oaCk\/JChoLDAsaC5sZW5ndGgtMSk6bihlLnRleHQpJiZ1LnNldFRleHRDb250ZW50KHAsIiIpOmUudGV4dCE9PWkudGV4dCYmdS5zZXRUZXh0Q29udGVudChwLGkudGV4dCksbih2KSYmbihkPXYuaG9vaykmJm4oZD1kLnBvc3RwYXRjaCkmJmQoZSxpKX19fWZ1bmN0aW9uIGsoZSx0LGkpe2lmKHIoaSkmJm4oZS5wYXJlbnQpKWUucGFyZW50LmRhdGEucGVuZGluZ0luc2VydD10O2Vsc2UgZm9yKHZhciBvPTA7bzx0Lmxlbmd0aDsrK28pdFtvXS5kYXRhLmhvb2suaW5zZXJ0KHRbb10pfXZhciBBPXAoImF0dHJzLGNsYXNzLHN0YXRpY0NsYXNzLHN0YXRpY1N0eWxlLGtleSIpO2Z1bmN0aW9uIE8oZSx0LGksbyl7dmFyIGEscz10LnRhZyxjPXQuZGF0YSx1PXQuY2hpbGRyZW47aWYobz1vfHxjJiZjLnByZSx0LmVsbT1lLHIodC5pc0NvbW1lbnQpJiZuKHQuYXN5bmNGYWN0b3J5KSlyZXR1cm4gdC5pc0FzeW5jUGxhY2Vob2xkZXI9ITAsITA7aWYobihjKSYmKG4oYT1jLmhvb2spJiZuKGE9YS5pbml0KSYmYSh0LCEwKSxuKGE9dC5jb21wb25lbnRJbnN0YW5jZSkpKXJldHVybiBkKHQsaSksITA7aWYobihzKSl7aWYobih1KSlpZihlLmhhc0NoaWxkTm9kZXMoKSlpZihuKGE9YykmJm4oYT1hLmRvbVByb3BzKSYmbihhPWEuaW5uZXJIVE1MKSl7aWYoYSE9PWUuaW5uZXJIVE1MKXJldHVybiExfWVsc2V7Zm9yKHZhciBsPSEwLGY9ZS5maXJzdENoaWxkLHA9MDtwPHUubGVuZ3RoO3ArKyl7aWYoIWZ8fCFPKGYsdVtwXSxpLG8pKXtsPSExO2JyZWFrfWY9Zi5uZXh0U2libGluZ31pZighbHx8ZilyZXR1cm4hMX1lbHNlIGgodCx1LGkpO2lmKG4oYykpe3ZhciB2PSExO2Zvcih2YXIgbSBpbiBjKWlmKCFBKG0pKXt2PSEwLHkodCxpKTticmVha30hdiYmYy5jbGFzcyYmZXQoYy5jbGFzcyl9fWVsc2UgZS5kYXRhIT09dC50ZXh0JiYoZS5kYXRhPXQudGV4dCk7cmV0dXJuITB9cmV0dXJuIGZ1bmN0aW9uKGUsaSxvLGEpe2lmKCF0KGkpKXt2YXIgYyxsPSExLHA9W107aWYodChlKSlsPSEwLGYoaSxwKTtlbHNle3ZhciBkPW4oZS5ub2RlVHlwZSk7aWYoIWQmJmlyKGUsaSkpeChlLGkscCxudWxsLG51bGwsYSk7ZWxzZXtpZihkKXtpZigxPT09ZS5ub2RlVHlwZSYmZS5oYXNBdHRyaWJ1dGUoTCkmJihlLnJlbW92ZUF0dHJpYnV0ZShMKSxvPSEwKSxyKG8pJiZPKGUsaSxwKSlyZXR1cm4gayhpLHAsITApLGU7Yz1lLGU9bmV3IHBlKHUudGFnTmFtZShjKS50b0xvd2VyQ2FzZSgpLHt9LFtdLHZvaWQgMCxjKX12YXIgdj1lLmVsbSxoPXUucGFyZW50Tm9kZSh2KTtpZihmKGkscCx2Ll9sZWF2ZUNiP251bGw6aCx1Lm5leHRTaWJsaW5nKHYpKSxuKGkucGFyZW50KSlmb3IodmFyIHk9aS5wYXJlbnQsZz1tKGkpO3k7KXtmb3IodmFyIF89MDtfPHMuZGVzdHJveS5sZW5ndGg7KytfKXMuZGVzdHJveVtfXSh5KTtpZih5LmVsbT1pLmVsbSxnKXtmb3IodmFyIHc9MDt3PHMuY3JlYXRlLmxlbmd0aDsrK3cpcy5jcmVhdGVbd10obnIseSk7dmFyIEM9eS5kYXRhLmhvb2suaW5zZXJ0O2lmKEMubWVyZ2VkKWZvcih2YXIgQT0xO0E8Qy5mbnMubGVuZ3RoO0ErKylDLmZuc1tBXSgpfWVsc2UgdHIoeSk7eT15LnBhcmVudH1uKGgpPyQoW2VdLDAsMCk6bihlLnRhZykmJmIoZSl9fXJldHVybiBrKGkscCxsKSxpLmVsbX1uKGUpJiZiKGUpfX0oe25vZGVPcHM6UW4sbW9kdWxlczpbbXIseHIsbmksb2ksbWksej97Y3JlYXRlOlVpLGFjdGl2YXRlOlVpLHJlbW92ZTpmdW5jdGlvbihlLHQpeyEwIT09ZS5kYXRhLnNob3c\/UmkoZSx0KTp0KCl9fTp7fV0uY29uY2F0KHByKX0pO1cmJmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoInNlbGVjdGlvbmNoYW5nZSIsZnVuY3Rpb24oKXt2YXIgZT1kb2N1bWVudC5hY3RpdmVFbGVtZW50O2UmJmUudm1vZGVsJiZYaShlLCJpbnB1dCIpfSk7dmFyIFZpPXtpbnNlcnRlZDpmdW5jdGlvbihlLHQsbixyKXsic2VsZWN0Ij09PW4udGFnPyhyLmVsbSYmIXIuZWxtLl92T3B0aW9ucz9pdChuLCJwb3N0cGF0Y2giLGZ1bmN0aW9uKCl7VmkuY29tcG9uZW50VXBkYXRlZChlLHQsbil9KTpLaShlLHQsbi5jb250ZXh0KSxlLl92T3B0aW9ucz1bXS5tYXAuY2FsbChlLm9wdGlvbnMsV2kpKTooInRleHRhcmVhIj09PW4udGFnfHxYbihlLnR5cGUpKSYmKGUuX3ZNb2RpZmllcnM9dC5tb2RpZmllcnMsdC5tb2RpZmllcnMubGF6eXx8KGUuYWRkRXZlbnRMaXN0ZW5lcigiY29tcG9zaXRpb25zdGFydCIsWmkpLGUuYWRkRXZlbnRMaXN0ZW5lcigiY29tcG9zaXRpb25lbmQiLEdpKSxlLmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZSIsR2kpLFcmJihlLnZtb2RlbD0hMCkpKX0sY29tcG9uZW50VXBkYXRlZDpmdW5jdGlvbihlLHQsbil7aWYoInNlbGVjdCI9PT1uLnRhZyl7S2koZSx0LG4uY29udGV4dCk7dmFyIHI9ZS5fdk9wdGlvbnMsaT1lLl92T3B0aW9ucz1bXS5tYXAuY2FsbChlLm9wdGlvbnMsV2kpO2lmKGkuc29tZShmdW5jdGlvbihlLHQpe3JldHVybiFOKGUsclt0XSl9KSkoZS5tdWx0aXBsZT90LnZhbHVlLnNvbWUoZnVuY3Rpb24oZSl7cmV0dXJuIHFpKGUsaSl9KTp0LnZhbHVlIT09dC5vbGRWYWx1ZSYmcWkodC52YWx1ZSxpKSkmJlhpKGUsImNoYW5nZSIpfX19O2Z1bmN0aW9uIEtpKGUsdCxuKXtKaShlLHQsbiksKHF8fFopJiZzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7SmkoZSx0LG4pfSwwKX1mdW5jdGlvbiBKaShlLHQsbil7dmFyIHI9dC52YWx1ZSxpPWUubXVsdGlwbGU7aWYoIWl8fEFycmF5LmlzQXJyYXkocikpe2Zvcih2YXIgbyxhLHM9MCxjPWUub3B0aW9ucy5sZW5ndGg7czxjO3MrKylpZihhPWUub3B0aW9uc1tzXSxpKW89aihyLFdpKGEpKT4tMSxhLnNlbGVjdGVkIT09byYmKGEuc2VsZWN0ZWQ9byk7ZWxzZSBpZihOKFdpKGEpLHIpKXJldHVybiB2b2lkKGUuc2VsZWN0ZWRJbmRleCE9PXMmJihlLnNlbGVjdGVkSW5kZXg9cykpO2l8fChlLnNlbGVjdGVkSW5kZXg9LTEpfX1mdW5jdGlvbiBxaShlLHQpe3JldHVybiB0LmV2ZXJ5KGZ1bmN0aW9uKHQpe3JldHVybiFOKHQsZSl9KX1mdW5jdGlvbiBXaShlKXtyZXR1cm4iX3ZhbHVlImluIGU\/ZS5fdmFsdWU6ZS52YWx1ZX1mdW5jdGlvbiBaaShlKXtlLnRhcmdldC5jb21wb3Npbmc9ITB9ZnVuY3Rpb24gR2koZSl7ZS50YXJnZXQuY29tcG9zaW5nJiYoZS50YXJnZXQuY29tcG9zaW5nPSExLFhpKGUudGFyZ2V0LCJpbnB1dCIpKX1mdW5jdGlvbiBYaShlLHQpe3ZhciBuPWRvY3VtZW50LmNyZWF0ZUV2ZW50KCJIVE1MRXZlbnRzIik7bi5pbml0RXZlbnQodCwhMCwhMCksZS5kaXNwYXRjaEV2ZW50KG4pfWZ1bmN0aW9uIFlpKGUpe3JldHVybiFlLmNvbXBvbmVudEluc3RhbmNlfHxlLmRhdGEmJmUuZGF0YS50cmFuc2l0aW9uP2U6WWkoZS5jb21wb25lbnRJbnN0YW5jZS5fdm5vZGUpfXZhciBRaT17bW9kZWw6Vmksc2hvdzp7YmluZDpmdW5jdGlvbihlLHQsbil7dmFyIHI9dC52YWx1ZSxpPShuPVlpKG4pKS5kYXRhJiZuLmRhdGEudHJhbnNpdGlvbixvPWUuX192T3JpZ2luYWxEaXNwbGF5PSJub25lIj09PWUuc3R5bGUuZGlzcGxheT8iIjplLnN0eWxlLmRpc3BsYXk7ciYmaT8obi5kYXRhLnNob3c9ITAsUGkobixmdW5jdGlvbigpe2Uuc3R5bGUuZGlzcGxheT1vfSkpOmUuc3R5bGUuZGlzcGxheT1yP286Im5vbmUifSx1cGRhdGU6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXQudmFsdWU7IXIhPSF0Lm9sZFZhbHVlJiYoKG49WWkobikpLmRhdGEmJm4uZGF0YS50cmFuc2l0aW9uPyhuLmRhdGEuc2hvdz0hMCxyP1BpKG4sZnVuY3Rpb24oKXtlLnN0eWxlLmRpc3BsYXk9ZS5fX3ZPcmlnaW5hbERpc3BsYXl9KTpSaShuLGZ1bmN0aW9uKCl7ZS5zdHlsZS5kaXNwbGF5PSJub25lIn0pKTplLnN0eWxlLmRpc3BsYXk9cj9lLl9fdk9yaWdpbmFsRGlzcGxheToibm9uZSIpfSx1bmJpbmQ6ZnVuY3Rpb24oZSx0LG4scixpKXtpfHwoZS5zdHlsZS5kaXNwbGF5PWUuX192T3JpZ2luYWxEaXNwbGF5KX19fSxlbz17bmFtZTpTdHJpbmcsYXBwZWFyOkJvb2xlYW4sY3NzOkJvb2xlYW4sbW9kZTpTdHJpbmcsdHlwZTpTdHJpbmcsZW50ZXJDbGFzczpTdHJpbmcsbGVhdmVDbGFzczpTdHJpbmcsZW50ZXJUb0NsYXNzOlN0cmluZyxsZWF2ZVRvQ2xhc3M6U3RyaW5nLGVudGVyQWN0aXZlQ2xhc3M6U3RyaW5nLGxlYXZlQWN0aXZlQ2xhc3M6U3RyaW5nLGFwcGVhckNsYXNzOlN0cmluZyxhcHBlYXJBY3RpdmVDbGFzczpTdHJpbmcsYXBwZWFyVG9DbGFzczpTdHJpbmcsZHVyYXRpb246W051bWJlcixTdHJpbmcsT2JqZWN0XX07ZnVuY3Rpb24gdG8oZSl7dmFyIHQ9ZSYmZS5jb21wb25lbnRPcHRpb25zO3JldHVybiB0JiZ0LkN0b3Iub3B0aW9ucy5hYnN0cmFjdD90byh6dCh0LmNoaWxkcmVuKSk6ZX1mdW5jdGlvbiBubyhlKXt2YXIgdD17fSxuPWUuJG9wdGlvbnM7Zm9yKHZhciByIGluIG4ucHJvcHNEYXRhKXRbcl09ZVtyXTt2YXIgaT1uLl9wYXJlbnRMaXN0ZW5lcnM7Zm9yKHZhciBvIGluIGkpdFtiKG8pXT1pW29dO3JldHVybiB0fWZ1bmN0aW9uIHJvKGUsdCl7aWYoL1xkLWtlZXAtYWxpdmUkLy50ZXN0KHQudGFnKSlyZXR1cm4gZSgia2VlcC1hbGl2ZSIse3Byb3BzOnQuY29tcG9uZW50T3B0aW9ucy5wcm9wc0RhdGF9KX12YXIgaW89ZnVuY3Rpb24oZSl7cmV0dXJuIGUudGFnfHxVdChlKX0sb289ZnVuY3Rpb24oZSl7cmV0dXJuInNob3ciPT09ZS5uYW1lfSxhbz17bmFtZToidHJhbnNpdGlvbiIscHJvcHM6ZW8sYWJzdHJhY3Q6ITAscmVuZGVyOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMsbj10aGlzLiRzbG90cy5kZWZhdWx0O2lmKG4mJihuPW4uZmlsdGVyKGlvKSkubGVuZ3RoKXt2YXIgcj10aGlzLm1vZGUsbz1uWzBdO2lmKGZ1bmN0aW9uKGUpe2Zvcig7ZT1lLnBhcmVudDspaWYoZS5kYXRhLnRyYW5zaXRpb24pcmV0dXJuITB9KHRoaXMuJHZub2RlKSlyZXR1cm4gbzt2YXIgYT10byhvKTtpZighYSlyZXR1cm4gbztpZih0aGlzLl9sZWF2aW5nKXJldHVybiBybyhlLG8pO3ZhciBzPSJfX3RyYW5zaXRpb24tIit0aGlzLl91aWQrIi0iO2Eua2V5PW51bGw9PWEua2V5P2EuaXNDb21tZW50P3MrImNvbW1lbnQiOnMrYS50YWc6aShhLmtleSk\/MD09PVN0cmluZyhhLmtleSkuaW5kZXhPZihzKT9hLmtleTpzK2Eua2V5OmEua2V5O3ZhciBjPShhLmRhdGF8fChhLmRhdGE9e30pKS50cmFuc2l0aW9uPW5vKHRoaXMpLHU9dGhpcy5fdm5vZGUsbD10byh1KTtpZihhLmRhdGEuZGlyZWN0aXZlcyYmYS5kYXRhLmRpcmVjdGl2ZXMuc29tZShvbykmJihhLmRhdGEuc2hvdz0hMCksbCYmbC5kYXRhJiYhZnVuY3Rpb24oZSx0KXtyZXR1cm4gdC5rZXk9PT1lLmtleSYmdC50YWc9PT1lLnRhZ30oYSxsKSYmIVV0KGwpJiYoIWwuY29tcG9uZW50SW5zdGFuY2V8fCFsLmNvbXBvbmVudEluc3RhbmNlLl92bm9kZS5pc0NvbW1lbnQpKXt2YXIgZj1sLmRhdGEudHJhbnNpdGlvbj1BKHt9LGMpO2lmKCJvdXQtaW4iPT09cilyZXR1cm4gdGhpcy5fbGVhdmluZz0hMCxpdChmLCJhZnRlckxlYXZlIixmdW5jdGlvbigpe3QuX2xlYXZpbmc9ITEsdC4kZm9yY2VVcGRhdGUoKX0pLHJvKGUsbyk7aWYoImluLW91dCI9PT1yKXtpZihVdChhKSlyZXR1cm4gdTt2YXIgcCxkPWZ1bmN0aW9uKCl7cCgpfTtpdChjLCJhZnRlckVudGVyIixkKSxpdChjLCJlbnRlckNhbmNlbGxlZCIsZCksaXQoZiwiZGVsYXlMZWF2ZSIsZnVuY3Rpb24oZSl7cD1lfSl9fXJldHVybiBvfX19LHNvPUEoe3RhZzpTdHJpbmcsbW92ZUNsYXNzOlN0cmluZ30sZW8pO2Z1bmN0aW9uIGNvKGUpe2UuZWxtLl9tb3ZlQ2ImJmUuZWxtLl9tb3ZlQ2IoKSxlLmVsbS5fZW50ZXJDYiYmZS5lbG0uX2VudGVyQ2IoKX1mdW5jdGlvbiB1byhlKXtlLmRhdGEubmV3UG9zPWUuZWxtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpfWZ1bmN0aW9uIGxvKGUpe3ZhciB0PWUuZGF0YS5wb3Msbj1lLmRhdGEubmV3UG9zLHI9dC5sZWZ0LW4ubGVmdCxpPXQudG9wLW4udG9wO2lmKHJ8fGkpe2UuZGF0YS5tb3ZlZD0hMDt2YXIgbz1lLmVsbS5zdHlsZTtvLnRyYW5zZm9ybT1vLldlYmtpdFRyYW5zZm9ybT0idHJhbnNsYXRlKCIrcisicHgsIitpKyJweCkiLG8udHJhbnNpdGlvbkR1cmF0aW9uPSIwcyJ9fWRlbGV0ZSBzby5tb2RlO3ZhciBmbz17VHJhbnNpdGlvbjphbyxUcmFuc2l0aW9uR3JvdXA6e3Byb3BzOnNvLGJlZm9yZU1vdW50OmZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PXRoaXMuX3VwZGF0ZTt0aGlzLl91cGRhdGU9ZnVuY3Rpb24obixyKXt2YXIgaT1adChlKTtlLl9fcGF0Y2hfXyhlLl92bm9kZSxlLmtlcHQsITEsITApLGUuX3Zub2RlPWUua2VwdCxpKCksdC5jYWxsKGUsbixyKX19LHJlbmRlcjpmdW5jdGlvbihlKXtmb3IodmFyIHQ9dGhpcy50YWd8fHRoaXMuJHZub2RlLmRhdGEudGFnfHwic3BhbiIsbj1PYmplY3QuY3JlYXRlKG51bGwpLHI9dGhpcy5wcmV2Q2hpbGRyZW49dGhpcy5jaGlsZHJlbixpPXRoaXMuJHNsb3RzLmRlZmF1bHR8fFtdLG89dGhpcy5jaGlsZHJlbj1bXSxhPW5vKHRoaXMpLHM9MDtzPGkubGVuZ3RoO3MrKyl7dmFyIGM9aVtzXTtjLnRhZyYmbnVsbCE9Yy5rZXkmJjAhPT1TdHJpbmcoYy5rZXkpLmluZGV4T2YoIl9fdmxpc3QiKSYmKG8ucHVzaChjKSxuW2Mua2V5XT1jLChjLmRhdGF8fChjLmRhdGE9e30pKS50cmFuc2l0aW9uPWEpfWlmKHIpe2Zvcih2YXIgdT1bXSxsPVtdLGY9MDtmPHIubGVuZ3RoO2YrKyl7dmFyIHA9cltmXTtwLmRhdGEudHJhbnNpdGlvbj1hLHAuZGF0YS5wb3M9cC5lbG0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksbltwLmtleV0\/dS5wdXNoKHApOmwucHVzaChwKX10aGlzLmtlcHQ9ZSh0LG51bGwsdSksdGhpcy5yZW1vdmVkPWx9cmV0dXJuIGUodCxudWxsLG8pfSx1cGRhdGVkOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5wcmV2Q2hpbGRyZW4sdD10aGlzLm1vdmVDbGFzc3x8KHRoaXMubmFtZXx8InYiKSsiLW1vdmUiO2UubGVuZ3RoJiZ0aGlzLmhhc01vdmUoZVswXS5lbG0sdCkmJihlLmZvckVhY2goY28pLGUuZm9yRWFjaCh1byksZS5mb3JFYWNoKGxvKSx0aGlzLl9yZWZsb3c9ZG9jdW1lbnQuYm9keS5vZmZzZXRIZWlnaHQsZS5mb3JFYWNoKGZ1bmN0aW9uKGUpe2lmKGUuZGF0YS5tb3ZlZCl7dmFyIG49ZS5lbG0scj1uLnN0eWxlO05pKG4sdCksci50cmFuc2Zvcm09ci5XZWJraXRUcmFuc2Zvcm09ci50cmFuc2l0aW9uRHVyYXRpb249IiIsbi5hZGRFdmVudExpc3RlbmVyKEFpLG4uX21vdmVDYj1mdW5jdGlvbiBlKHIpe3ImJnIudGFyZ2V0IT09bnx8ciYmIS90cmFuc2Zvcm0kLy50ZXN0KHIucHJvcGVydHlOYW1lKXx8KG4ucmVtb3ZlRXZlbnRMaXN0ZW5lcihBaSxlKSxuLl9tb3ZlQ2I9bnVsbCxqaShuLHQpKX0pfX0pKX0sbWV0aG9kczp7aGFzTW92ZTpmdW5jdGlvbihlLHQpe2lmKCF3aSlyZXR1cm4hMTtpZih0aGlzLl9oYXNNb3ZlKXJldHVybiB0aGlzLl9oYXNNb3ZlO3ZhciBuPWUuY2xvbmVOb2RlKCk7ZS5fdHJhbnNpdGlvbkNsYXNzZXMmJmUuX3RyYW5zaXRpb25DbGFzc2VzLmZvckVhY2goZnVuY3Rpb24oZSl7X2kobixlKX0pLGdpKG4sdCksbi5zdHlsZS5kaXNwbGF5PSJub25lIix0aGlzLiRlbC5hcHBlbmRDaGlsZChuKTt2YXIgcj1NaShuKTtyZXR1cm4gdGhpcy4kZWwucmVtb3ZlQ2hpbGQobiksdGhpcy5faGFzTW92ZT1yLmhhc1RyYW5zZm9ybX19fX07d24uY29uZmlnLm11c3RVc2VQcm9wPWpuLHduLmNvbmZpZy5pc1Jlc2VydmVkVGFnPVduLHduLmNvbmZpZy5pc1Jlc2VydmVkQXR0cj1Fbix3bi5jb25maWcuZ2V0VGFnTmFtZXNwYWNlPVpuLHduLmNvbmZpZy5pc1Vua25vd25FbGVtZW50PWZ1bmN0aW9uKGUpe2lmKCF6KXJldHVybiEwO2lmKFduKGUpKXJldHVybiExO2lmKGU9ZS50b0xvd2VyQ2FzZSgpLG51bGwhPUduW2VdKXJldHVybiBHbltlXTt2YXIgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KGUpO3JldHVybiBlLmluZGV4T2YoIi0iKT4tMT9HbltlXT10LmNvbnN0cnVjdG9yPT09d2luZG93LkhUTUxVbmtub3duRWxlbWVudHx8dC5jb25zdHJ1Y3Rvcj09PXdpbmRvdy5IVE1MRWxlbWVudDpHbltlXT0vSFRNTFVua25vd25FbGVtZW50Ly50ZXN0KHQudG9TdHJpbmcoKSl9LEEod24ub3B0aW9ucy5kaXJlY3RpdmVzLFFpKSxBKHduLm9wdGlvbnMuY29tcG9uZW50cyxmbyksd24ucHJvdG90eXBlLl9fcGF0Y2hfXz16P3ppOlMsd24ucHJvdG90eXBlLiRtb3VudD1mdW5jdGlvbihlLHQpe3JldHVybiBmdW5jdGlvbihlLHQsbil7dmFyIHI7cmV0dXJuIGUuJGVsPXQsZS4kb3B0aW9ucy5yZW5kZXJ8fChlLiRvcHRpb25zLnJlbmRlcj12ZSksWXQoZSwiYmVmb3JlTW91bnQiKSxyPWZ1bmN0aW9uKCl7ZS5fdXBkYXRlKGUuX3JlbmRlcigpLG4pfSxuZXcgZm4oZSxyLFMse2JlZm9yZTpmdW5jdGlvbigpe2UuX2lzTW91bnRlZCYmIWUuX2lzRGVzdHJveWVkJiZZdChlLCJiZWZvcmVVcGRhdGUiKX19LCEwKSxuPSExLG51bGw9PWUuJHZub2RlJiYoZS5faXNNb3VudGVkPSEwLFl0KGUsIm1vdW50ZWQiKSksZX0odGhpcyxlPWUmJno\/WW4oZSk6dm9pZCAwLHQpfSx6JiZzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Ri5kZXZ0b29scyYmbmUmJm5lLmVtaXQoImluaXQiLHduKX0sMCk7dmFyIHBvPS9ce1x7KCg\/Oi58XHI\/XG4pKz8pXH1cfS9nLHZvPS9bLS4qKz9eJHt9KCl8W1xdXC9cXF0vZyxobz1nKGZ1bmN0aW9uKGUpe3ZhciB0PWVbMF0ucmVwbGFjZSh2bywiXFwkJiIpLG49ZVsxXS5yZXBsYWNlKHZvLCJcXCQmIik7cmV0dXJuIG5ldyBSZWdFeHAodCsiKCg\/Oi58XFxuKSs\/KSIrbiwiZyIpfSk7dmFyIG1vPXtzdGF0aWNLZXlzOlsic3RhdGljQ2xhc3MiXSx0cmFuc2Zvcm1Ob2RlOmZ1bmN0aW9uKGUsdCl7dC53YXJuO3ZhciBuPUZyKGUsImNsYXNzIik7biYmKGUuc3RhdGljQ2xhc3M9SlNPTi5zdHJpbmdpZnkobikpO3ZhciByPUlyKGUsImNsYXNzIiwhMSk7ciYmKGUuY2xhc3NCaW5kaW5nPXIpfSxnZW5EYXRhOmZ1bmN0aW9uKGUpe3ZhciB0PSIiO3JldHVybiBlLnN0YXRpY0NsYXNzJiYodCs9InN0YXRpY0NsYXNzOiIrZS5zdGF0aWNDbGFzcysiLCIpLGUuY2xhc3NCaW5kaW5nJiYodCs9ImNsYXNzOiIrZS5jbGFzc0JpbmRpbmcrIiwiKSx0fX07dmFyIHlvLGdvPXtzdGF0aWNLZXlzOlsic3RhdGljU3R5bGUiXSx0cmFuc2Zvcm1Ob2RlOmZ1bmN0aW9uKGUsdCl7dC53YXJuO3ZhciBuPUZyKGUsInN0eWxlIik7biYmKGUuc3RhdGljU3R5bGU9SlNPTi5zdHJpbmdpZnkoYWkobikpKTt2YXIgcj1JcihlLCJzdHlsZSIsITEpO3ImJihlLnN0eWxlQmluZGluZz1yKX0sZ2VuRGF0YTpmdW5jdGlvbihlKXt2YXIgdD0iIjtyZXR1cm4gZS5zdGF0aWNTdHlsZSYmKHQrPSJzdGF0aWNTdHlsZToiK2Uuc3RhdGljU3R5bGUrIiwiKSxlLnN0eWxlQmluZGluZyYmKHQrPSJzdHlsZTooIitlLnN0eWxlQmluZGluZysiKSwiKSx0fX0sX289ZnVuY3Rpb24oZSl7cmV0dXJuKHlvPXlvfHxkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSkuaW5uZXJIVE1MPWUseW8udGV4dENvbnRlbnR9LGJvPXAoImFyZWEsYmFzZSxicixjb2wsZW1iZWQsZnJhbWUsaHIsaW1nLGlucHV0LGlzaW5kZXgsa2V5Z2VuLGxpbmssbWV0YSxwYXJhbSxzb3VyY2UsdHJhY2ssd2JyIiksJG89cCgiY29sZ3JvdXAsZGQsZHQsbGksb3B0aW9ucyxwLHRkLHRmb290LHRoLHRoZWFkLHRyLHNvdXJjZSIpLHdvPXAoImFkZHJlc3MsYXJ0aWNsZSxhc2lkZSxiYXNlLGJsb2NrcXVvdGUsYm9keSxjYXB0aW9uLGNvbCxjb2xncm91cCxkZCxkZXRhaWxzLGRpYWxvZyxkaXYsZGwsZHQsZmllbGRzZXQsZmlnY2FwdGlvbixmaWd1cmUsZm9vdGVyLGZvcm0saDEsaDIsaDMsaDQsaDUsaDYsaGVhZCxoZWFkZXIsaGdyb3VwLGhyLGh0bWwsbGVnZW5kLGxpLG1lbnVpdGVtLG1ldGEsb3B0Z3JvdXAsb3B0aW9uLHBhcmFtLHJwLHJ0LHNvdXJjZSxzdHlsZSxzdW1tYXJ5LHRib2R5LHRkLHRmb290LHRoLHRoZWFkLHRpdGxlLHRyLHRyYWNrIiksQ289L15ccyooW15ccyInPD5cLz1dKykoPzpccyooPSlccyooPzoiKFteIl0qKSIrfCcoW14nXSopJyt8KFteXHMiJz08PmBdKykpKT8vLHhvPS9eXHMqKCg\/OnYtW1x3LV0rOnxAfDp8IylcW1tePV0rXF1bXlxzIic8PlwvPV0qKSg\/OlxzKig9KVxzKig\/OiIoW14iXSopIit8JyhbXiddKiknK3woW15ccyInPTw+YF0rKSkpPy8sa289IlthLXpBLVpfXVtcXC1cXC4wLTlfYS16QS1aIitQLnNvdXJjZSsiXSoiLEFvPSIoKD86IitrbysiXFw6KT8iK2tvKyIpIixPbz1uZXcgUmVnRXhwKCJePCIrQW8pLFNvPS9eXHMqKFwvPyk+LyxUbz1uZXcgUmVnRXhwKCJePFxcLyIrQW8rIltePl0qPiIpLEVvPS9ePCFET0NUWVBFIFtePl0rPi9pLE5vPS9ePCFcLS0vLGpvPS9ePCFcWy8sRG89cCgic2NyaXB0LHN0eWxlLHRleHRhcmVhIiwhMCksTG89e30sTW89eyImbHQ7IjoiPCIsIiZndDsiOiI+IiwiJnF1b3Q7IjonIicsIiZhbXA7IjoiJiIsIiYjMTA7IjoiXG4iLCImIzk7IjoiXHQiLCImIzM5OyI6IicifSxJbz0vJig\/Omx0fGd0fHF1b3R8YW1wfCMzOSk7L2csRm89LyYoPzpsdHxndHxxdW90fGFtcHwjMzl8IzEwfCM5KTsvZyxQbz1wKCJwcmUsdGV4dGFyZWEiLCEwKSxSbz1mdW5jdGlvbihlLHQpe3JldHVybiBlJiZQbyhlKSYmIlxuIj09PXRbMF19O2Z1bmN0aW9uIEhvKGUsdCl7dmFyIG49dD9GbzpJbztyZXR1cm4gZS5yZXBsYWNlKG4sZnVuY3Rpb24oZSl7cmV0dXJuIE1vW2VdfSl9dmFyIEJvLFVvLHpvLFZvLEtvLEpvLHFvLFdvLFpvPS9eQHxedi1vbjovLEdvPS9edi18XkB8Xjp8XiMvLFhvPS8oW1xzXFNdKj8pXHMrKD86aW58b2YpXHMrKFtcc1xTXSopLyxZbz0vLChbXixcfVxdXSopKD86LChbXixcfVxdXSopKT8kLyxRbz0vXlwofFwpJC9nLGVhPS9eXFsuKlxdJC8sdGE9LzooLiopJC8sbmE9L146fF5cLnxedi1iaW5kOi8scmE9L1wuW14uXF1dKyg\/PVteXF1dKiQpL2csaWE9L152LXNsb3QoOnwkKXxeIy8sb2E9L1tcclxuXS8sYWE9L1xzKy9nLHNhPWcoX28pLGNhPSJfZW1wdHlfIjtmdW5jdGlvbiB1YShlLHQsbil7cmV0dXJue3R5cGU6MSx0YWc6ZSxhdHRyc0xpc3Q6dCxhdHRyc01hcDptYSh0KSxyYXdBdHRyc01hcDp7fSxwYXJlbnQ6bixjaGlsZHJlbjpbXX19ZnVuY3Rpb24gbGEoZSx0KXtCbz10Lndhcm58fFNyLEpvPXQuaXNQcmVUYWd8fFQscW89dC5tdXN0VXNlUHJvcHx8VCxXbz10LmdldFRhZ05hbWVzcGFjZXx8VDt0LmlzUmVzZXJ2ZWRUYWc7em89VHIodC5tb2R1bGVzLCJ0cmFuc2Zvcm1Ob2RlIiksVm89VHIodC5tb2R1bGVzLCJwcmVUcmFuc2Zvcm1Ob2RlIiksS289VHIodC5tb2R1bGVzLCJwb3N0VHJhbnNmb3JtTm9kZSIpLFVvPXQuZGVsaW1pdGVyczt2YXIgbixyLGk9W10sbz0hMSE9PXQucHJlc2VydmVXaGl0ZXNwYWNlLGE9dC53aGl0ZXNwYWNlLHM9ITEsYz0hMTtmdW5jdGlvbiB1KGUpe2lmKGwoZSksc3x8ZS5wcm9jZXNzZWR8fChlPWZhKGUsdCkpLGkubGVuZ3RofHxlPT09bnx8bi5pZiYmKGUuZWxzZWlmfHxlLmVsc2UpJiZkYShuLHtleHA6ZS5lbHNlaWYsYmxvY2s6ZX0pLHImJiFlLmZvcmJpZGRlbilpZihlLmVsc2VpZnx8ZS5lbHNlKWE9ZSwodT1mdW5jdGlvbihlKXt2YXIgdD1lLmxlbmd0aDtmb3IoO3QtLTspe2lmKDE9PT1lW3RdLnR5cGUpcmV0dXJuIGVbdF07ZS5wb3AoKX19KHIuY2hpbGRyZW4pKSYmdS5pZiYmZGEodSx7ZXhwOmEuZWxzZWlmLGJsb2NrOmF9KTtlbHNle2lmKGUuc2xvdFNjb3BlKXt2YXIgbz1lLnNsb3RUYXJnZXR8fCciZGVmYXVsdCInOyhyLnNjb3BlZFNsb3RzfHwoci5zY29wZWRTbG90cz17fSkpW29dPWV9ci5jaGlsZHJlbi5wdXNoKGUpLGUucGFyZW50PXJ9dmFyIGEsdTtlLmNoaWxkcmVuPWUuY2hpbGRyZW4uZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiFlLnNsb3RTY29wZX0pLGwoZSksZS5wcmUmJihzPSExKSxKbyhlLnRhZykmJihjPSExKTtmb3IodmFyIGY9MDtmPEtvLmxlbmd0aDtmKyspS29bZl0oZSx0KX1mdW5jdGlvbiBsKGUpe2lmKCFjKWZvcih2YXIgdDsodD1lLmNoaWxkcmVuW2UuY2hpbGRyZW4ubGVuZ3RoLTFdKSYmMz09PXQudHlwZSYmIiAiPT09dC50ZXh0OyllLmNoaWxkcmVuLnBvcCgpfXJldHVybiBmdW5jdGlvbihlLHQpe2Zvcih2YXIgbixyLGk9W10sbz10LmV4cGVjdEhUTUwsYT10LmlzVW5hcnlUYWd8fFQscz10LmNhbkJlTGVmdE9wZW5UYWd8fFQsYz0wO2U7KXtpZihuPWUsciYmRG8ocikpe3ZhciB1PTAsbD1yLnRvTG93ZXJDYXNlKCksZj1Mb1tsXXx8KExvW2xdPW5ldyBSZWdFeHAoIihbXFxzXFxTXSo\/KSg8LyIrbCsiW14+XSo+KSIsImkiKSkscD1lLnJlcGxhY2UoZixmdW5jdGlvbihlLG4scil7cmV0dXJuIHU9ci5sZW5ndGgsRG8obCl8fCJub3NjcmlwdCI9PT1sfHwobj1uLnJlcGxhY2UoLzwhXC0tKFtcc1xTXSo\/KS0tPi9nLCIkMSIpLnJlcGxhY2UoLzwhXFtDREFUQVxbKFtcc1xTXSo\/KV1dPi9nLCIkMSIpKSxSbyhsLG4pJiYobj1uLnNsaWNlKDEpKSx0LmNoYXJzJiZ0LmNoYXJzKG4pLCIifSk7Yys9ZS5sZW5ndGgtcC5sZW5ndGgsZT1wLEEobCxjLXUsYyl9ZWxzZXt2YXIgZD1lLmluZGV4T2YoIjwiKTtpZigwPT09ZCl7aWYoTm8udGVzdChlKSl7dmFyIHY9ZS5pbmRleE9mKCItLVx4M2UiKTtpZih2Pj0wKXt0LnNob3VsZEtlZXBDb21tZW50JiZ0LmNvbW1lbnQoZS5zdWJzdHJpbmcoNCx2KSxjLGMrdiszKSxDKHYrMyk7Y29udGludWV9fWlmKGpvLnRlc3QoZSkpe3ZhciBoPWUuaW5kZXhPZigiXT4iKTtpZihoPj0wKXtDKGgrMik7Y29udGludWV9fXZhciBtPWUubWF0Y2goRW8pO2lmKG0pe0MobVswXS5sZW5ndGgpO2NvbnRpbnVlfXZhciB5PWUubWF0Y2goVG8pO2lmKHkpe3ZhciBnPWM7Qyh5WzBdLmxlbmd0aCksQSh5WzFdLGcsYyk7Y29udGludWV9dmFyIF89eCgpO2lmKF8pe2soXyksUm8oXy50YWdOYW1lLGUpJiZDKDEpO2NvbnRpbnVlfX12YXIgYj12b2lkIDAsJD12b2lkIDAsdz12b2lkIDA7aWYoZD49MCl7Zm9yKCQ9ZS5zbGljZShkKTshKFRvLnRlc3QoJCl8fE9vLnRlc3QoJCl8fE5vLnRlc3QoJCl8fGpvLnRlc3QoJCl8fCh3PSQuaW5kZXhPZigiPCIsMSkpPDApOylkKz13LCQ9ZS5zbGljZShkKTtiPWUuc3Vic3RyaW5nKDAsZCl9ZDwwJiYoYj1lKSxiJiZDKGIubGVuZ3RoKSx0LmNoYXJzJiZiJiZ0LmNoYXJzKGIsYy1iLmxlbmd0aCxjKX1pZihlPT09bil7dC5jaGFycyYmdC5jaGFycyhlKTticmVha319ZnVuY3Rpb24gQyh0KXtjKz10LGU9ZS5zdWJzdHJpbmcodCl9ZnVuY3Rpb24geCgpe3ZhciB0PWUubWF0Y2goT28pO2lmKHQpe3ZhciBuLHIsaT17dGFnTmFtZTp0WzFdLGF0dHJzOltdLHN0YXJ0OmN9O2ZvcihDKHRbMF0ubGVuZ3RoKTshKG49ZS5tYXRjaChTbykpJiYocj1lLm1hdGNoKHhvKXx8ZS5tYXRjaChDbykpOylyLnN0YXJ0PWMsQyhyWzBdLmxlbmd0aCksci5lbmQ9YyxpLmF0dHJzLnB1c2gocik7aWYobilyZXR1cm4gaS51bmFyeVNsYXNoPW5bMV0sQyhuWzBdLmxlbmd0aCksaS5lbmQ9YyxpfX1mdW5jdGlvbiBrKGUpe3ZhciBuPWUudGFnTmFtZSxjPWUudW5hcnlTbGFzaDtvJiYoInAiPT09ciYmd28obikmJkEocikscyhuKSYmcj09PW4mJkEobikpO2Zvcih2YXIgdT1hKG4pfHwhIWMsbD1lLmF0dHJzLmxlbmd0aCxmPW5ldyBBcnJheShsKSxwPTA7cDxsO3ArKyl7dmFyIGQ9ZS5hdHRyc1twXSx2PWRbM118fGRbNF18fGRbNV18fCIiLGg9ImEiPT09biYmImhyZWYiPT09ZFsxXT90LnNob3VsZERlY29kZU5ld2xpbmVzRm9ySHJlZjp0LnNob3VsZERlY29kZU5ld2xpbmVzO2ZbcF09e25hbWU6ZFsxXSx2YWx1ZTpIbyh2LGgpfX11fHwoaS5wdXNoKHt0YWc6bixsb3dlckNhc2VkVGFnOm4udG9Mb3dlckNhc2UoKSxhdHRyczpmLHN0YXJ0OmUuc3RhcnQsZW5kOmUuZW5kfSkscj1uKSx0LnN0YXJ0JiZ0LnN0YXJ0KG4sZix1LGUuc3RhcnQsZS5lbmQpfWZ1bmN0aW9uIEEoZSxuLG8pe3ZhciBhLHM7aWYobnVsbD09biYmKG49YyksbnVsbD09byYmKG89YyksZSlmb3Iocz1lLnRvTG93ZXJDYXNlKCksYT1pLmxlbmd0aC0xO2E+PTAmJmlbYV0ubG93ZXJDYXNlZFRhZyE9PXM7YS0tKTtlbHNlIGE9MDtpZihhPj0wKXtmb3IodmFyIHU9aS5sZW5ndGgtMTt1Pj1hO3UtLSl0LmVuZCYmdC5lbmQoaVt1XS50YWcsbixvKTtpLmxlbmd0aD1hLHI9YSYmaVthLTFdLnRhZ31lbHNlImJyIj09PXM\/dC5zdGFydCYmdC5zdGFydChlLFtdLCEwLG4sbyk6InAiPT09cyYmKHQuc3RhcnQmJnQuc3RhcnQoZSxbXSwhMSxuLG8pLHQuZW5kJiZ0LmVuZChlLG4sbykpfUEoKX0oZSx7d2FybjpCbyxleHBlY3RIVE1MOnQuZXhwZWN0SFRNTCxpc1VuYXJ5VGFnOnQuaXNVbmFyeVRhZyxjYW5CZUxlZnRPcGVuVGFnOnQuY2FuQmVMZWZ0T3BlblRhZyxzaG91bGREZWNvZGVOZXdsaW5lczp0LnNob3VsZERlY29kZU5ld2xpbmVzLHNob3VsZERlY29kZU5ld2xpbmVzRm9ySHJlZjp0LnNob3VsZERlY29kZU5ld2xpbmVzRm9ySHJlZixzaG91bGRLZWVwQ29tbWVudDp0LmNvbW1lbnRzLG91dHB1dFNvdXJjZVJhbmdlOnQub3V0cHV0U291cmNlUmFuZ2Usc3RhcnQ6ZnVuY3Rpb24oZSxvLGEsbCxmKXt2YXIgcD1yJiZyLm5zfHxXbyhlKTtxJiYic3ZnIj09PXAmJihvPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1bXSxuPTA7bjxlLmxlbmd0aDtuKyspe3ZhciByPWVbbl07eWEudGVzdChyLm5hbWUpfHwoci5uYW1lPXIubmFtZS5yZXBsYWNlKGdhLCIiKSx0LnB1c2gocikpfXJldHVybiB0fShvKSk7dmFyIGQsdj11YShlLG8scik7cCYmKHYubnM9cCksInN0eWxlIiE9PShkPXYpLnRhZyYmKCJzY3JpcHQiIT09ZC50YWd8fGQuYXR0cnNNYXAudHlwZSYmInRleHQvamF2YXNjcmlwdCIhPT1kLmF0dHJzTWFwLnR5cGUpfHx0ZSgpfHwodi5mb3JiaWRkZW49ITApO2Zvcih2YXIgaD0wO2g8Vm8ubGVuZ3RoO2grKyl2PVZvW2hdKHYsdCl8fHY7c3x8KCFmdW5jdGlvbihlKXtudWxsIT1GcihlLCJ2LXByZSIpJiYoZS5wcmU9ITApfSh2KSx2LnByZSYmKHM9ITApKSxKbyh2LnRhZykmJihjPSEwKSxzP2Z1bmN0aW9uKGUpe3ZhciB0PWUuYXR0cnNMaXN0LG49dC5sZW5ndGg7aWYobilmb3IodmFyIHI9ZS5hdHRycz1uZXcgQXJyYXkobiksaT0wO2k8bjtpKyspcltpXT17bmFtZTp0W2ldLm5hbWUsdmFsdWU6SlNPTi5zdHJpbmdpZnkodFtpXS52YWx1ZSl9LG51bGwhPXRbaV0uc3RhcnQmJihyW2ldLnN0YXJ0PXRbaV0uc3RhcnQscltpXS5lbmQ9dFtpXS5lbmQpO2Vsc2UgZS5wcmV8fChlLnBsYWluPSEwKX0odik6di5wcm9jZXNzZWR8fChwYSh2KSxmdW5jdGlvbihlKXt2YXIgdD1GcihlLCJ2LWlmIik7aWYodCllLmlmPXQsZGEoZSx7ZXhwOnQsYmxvY2s6ZX0pO2Vsc2V7bnVsbCE9RnIoZSwidi1lbHNlIikmJihlLmVsc2U9ITApO3ZhciBuPUZyKGUsInYtZWxzZS1pZiIpO24mJihlLmVsc2VpZj1uKX19KHYpLGZ1bmN0aW9uKGUpe251bGwhPUZyKGUsInYtb25jZSIpJiYoZS5vbmNlPSEwKX0odikpLG58fChuPXYpLGE\/dSh2KToocj12LGkucHVzaCh2KSl9LGVuZDpmdW5jdGlvbihlLHQsbil7dmFyIG89aVtpLmxlbmd0aC0xXTtpLmxlbmd0aC09MSxyPWlbaS5sZW5ndGgtMV0sdShvKX0sY2hhcnM6ZnVuY3Rpb24oZSx0LG4pe2lmKHImJighcXx8InRleHRhcmVhIiE9PXIudGFnfHxyLmF0dHJzTWFwLnBsYWNlaG9sZGVyIT09ZSkpe3ZhciBpLHUsbCxmPXIuY2hpbGRyZW47aWYoZT1jfHxlLnRyaW0oKT8ic2NyaXB0Ij09PShpPXIpLnRhZ3x8InN0eWxlIj09PWkudGFnP2U6c2EoZSk6Zi5sZW5ndGg\/YT8iY29uZGVuc2UiPT09YSYmb2EudGVzdChlKT8iIjoiICI6bz8iICI6IiI6IiIpY3x8ImNvbmRlbnNlIiE9PWF8fChlPWUucmVwbGFjZShhYSwiICIpKSwhcyYmIiAiIT09ZSYmKHU9ZnVuY3Rpb24oZSx0KXt2YXIgbj10P2hvKHQpOnBvO2lmKG4udGVzdChlKSl7Zm9yKHZhciByLGksbyxhPVtdLHM9W10sYz1uLmxhc3RJbmRleD0wO3I9bi5leGVjKGUpOyl7KGk9ci5pbmRleCk+YyYmKHMucHVzaChvPWUuc2xpY2UoYyxpKSksYS5wdXNoKEpTT04uc3RyaW5naWZ5KG8pKSk7dmFyIHU9QXIoclsxXS50cmltKCkpO2EucHVzaCgiX3MoIit1KyIpIikscy5wdXNoKHsiQGJpbmRpbmciOnV9KSxjPWkrclswXS5sZW5ndGh9cmV0dXJuIGM8ZS5sZW5ndGgmJihzLnB1c2gobz1lLnNsaWNlKGMpKSxhLnB1c2goSlNPTi5zdHJpbmdpZnkobykpKSx7ZXhwcmVzc2lvbjphLmpvaW4oIisiKSx0b2tlbnM6c319fShlLFVvKSk\/bD17dHlwZToyLGV4cHJlc3Npb246dS5leHByZXNzaW9uLHRva2Vuczp1LnRva2Vucyx0ZXh0OmV9OiIgIj09PWUmJmYubGVuZ3RoJiYiICI9PT1mW2YubGVuZ3RoLTFdLnRleHR8fChsPXt0eXBlOjMsdGV4dDplfSksbCYmZi5wdXNoKGwpfX0sY29tbWVudDpmdW5jdGlvbihlLHQsbil7aWYocil7dmFyIGk9e3R5cGU6Myx0ZXh0OmUsaXNDb21tZW50OiEwfTtyLmNoaWxkcmVuLnB1c2goaSl9fX0pLG59ZnVuY3Rpb24gZmEoZSx0KXt2YXIgbixyOyhyPUlyKG49ZSwia2V5IikpJiYobi5rZXk9ciksZS5wbGFpbj0hZS5rZXkmJiFlLnNjb3BlZFNsb3RzJiYhZS5hdHRyc0xpc3QubGVuZ3RoLGZ1bmN0aW9uKGUpe3ZhciB0PUlyKGUsInJlZiIpO3QmJihlLnJlZj10LGUucmVmSW5Gb3I9ZnVuY3Rpb24oZSl7dmFyIHQ9ZTtmb3IoO3Q7KXtpZih2b2lkIDAhPT10LmZvcilyZXR1cm4hMDt0PXQucGFyZW50fXJldHVybiExfShlKSl9KGUpLGZ1bmN0aW9uKGUpe3ZhciB0OyJ0ZW1wbGF0ZSI9PT1lLnRhZz8odD1GcihlLCJzY29wZSIpLGUuc2xvdFNjb3BlPXR8fEZyKGUsInNsb3Qtc2NvcGUiKSk6KHQ9RnIoZSwic2xvdC1zY29wZSIpKSYmKGUuc2xvdFNjb3BlPXQpO3ZhciBuPUlyKGUsInNsb3QiKTtuJiYoZS5zbG90VGFyZ2V0PSciIic9PT1uPyciZGVmYXVsdCInOm4sZS5zbG90VGFyZ2V0RHluYW1pYz0hKCFlLmF0dHJzTWFwWyI6c2xvdCJdJiYhZS5hdHRyc01hcFsidi1iaW5kOnNsb3QiXSksInRlbXBsYXRlIj09PWUudGFnfHxlLnNsb3RTY29wZXx8TnIoZSwic2xvdCIsbixmdW5jdGlvbihlLHQpe3JldHVybiBlLnJhd0F0dHJzTWFwWyI6Iit0XXx8ZS5yYXdBdHRyc01hcFsidi1iaW5kOiIrdF18fGUucmF3QXR0cnNNYXBbdF19KGUsInNsb3QiKSkpO2lmKCJ0ZW1wbGF0ZSI9PT1lLnRhZyl7dmFyIHI9UHIoZSxpYSk7aWYocil7dmFyIGk9dmEociksbz1pLm5hbWUsYT1pLmR5bmFtaWM7ZS5zbG90VGFyZ2V0PW8sZS5zbG90VGFyZ2V0RHluYW1pYz1hLGUuc2xvdFNjb3BlPXIudmFsdWV8fGNhfX1lbHNle3ZhciBzPVByKGUsaWEpO2lmKHMpe3ZhciBjPWUuc2NvcGVkU2xvdHN8fChlLnNjb3BlZFNsb3RzPXt9KSx1PXZhKHMpLGw9dS5uYW1lLGY9dS5keW5hbWljLHA9Y1tsXT11YSgidGVtcGxhdGUiLFtdLGUpO3Auc2xvdFRhcmdldD1sLHAuc2xvdFRhcmdldER5bmFtaWM9ZixwLmNoaWxkcmVuPWUuY2hpbGRyZW4uZmlsdGVyKGZ1bmN0aW9uKGUpe2lmKCFlLnNsb3RTY29wZSlyZXR1cm4gZS5wYXJlbnQ9cCwhMH0pLHAuc2xvdFNjb3BlPXMudmFsdWV8fGNhLGUuY2hpbGRyZW49W10sZS5wbGFpbj0hMX19fShlKSxmdW5jdGlvbihlKXsic2xvdCI9PT1lLnRhZyYmKGUuc2xvdE5hbWU9SXIoZSwibmFtZSIpKX0oZSksZnVuY3Rpb24oZSl7dmFyIHQ7KHQ9SXIoZSwiaXMiKSkmJihlLmNvbXBvbmVudD10KTtudWxsIT1GcihlLCJpbmxpbmUtdGVtcGxhdGUiKSYmKGUuaW5saW5lVGVtcGxhdGU9ITApfShlKTtmb3IodmFyIGk9MDtpPHpvLmxlbmd0aDtpKyspZT16b1tpXShlLHQpfHxlO3JldHVybiBmdW5jdGlvbihlKXt2YXIgdCxuLHIsaSxvLGEscyxjLHU9ZS5hdHRyc0xpc3Q7Zm9yKHQ9MCxuPXUubGVuZ3RoO3Q8bjt0KyspaWYocj1pPXVbdF0ubmFtZSxvPXVbdF0udmFsdWUsR28udGVzdChyKSlpZihlLmhhc0JpbmRpbmdzPSEwLChhPWhhKHIucmVwbGFjZShHbywiIikpKSYmKHI9ci5yZXBsYWNlKHJhLCIiKSksbmEudGVzdChyKSlyPXIucmVwbGFjZShuYSwiIiksbz1BcihvKSwoYz1lYS50ZXN0KHIpKSYmKHI9ci5zbGljZSgxLC0xKSksYSYmKGEucHJvcCYmIWMmJiJpbm5lckh0bWwiPT09KHI9YihyKSkmJihyPSJpbm5lckhUTUwiKSxhLmNhbWVsJiYhYyYmKHI9YihyKSksYS5zeW5jJiYocz1CcihvLCIkZXZlbnQiKSxjP01yKGUsJyJ1cGRhdGU6IisoJytyKyIpIixzLG51bGwsITEsMCx1W3RdLCEwKTooTXIoZSwidXBkYXRlOiIrYihyKSxzLG51bGwsITEsMCx1W3RdKSxDKHIpIT09YihyKSYmTXIoZSwidXBkYXRlOiIrQyhyKSxzLG51bGwsITEsMCx1W3RdKSkpKSxhJiZhLnByb3B8fCFlLmNvbXBvbmVudCYmcW8oZS50YWcsZS5hdHRyc01hcC50eXBlLHIpP0VyKGUscixvLHVbdF0sYyk6TnIoZSxyLG8sdVt0XSxjKTtlbHNlIGlmKFpvLnRlc3Qocikpcj1yLnJlcGxhY2UoWm8sIiIpLChjPWVhLnRlc3QocikpJiYocj1yLnNsaWNlKDEsLTEpKSxNcihlLHIsbyxhLCExLDAsdVt0XSxjKTtlbHNle3ZhciBsPShyPXIucmVwbGFjZShHbywiIikpLm1hdGNoKHRhKSxmPWwmJmxbMV07Yz0hMSxmJiYocj1yLnNsaWNlKDAsLShmLmxlbmd0aCsxKSksZWEudGVzdChmKSYmKGY9Zi5zbGljZSgxLC0xKSxjPSEwKSksRHIoZSxyLGksbyxmLGMsYSx1W3RdKX1lbHNlIE5yKGUscixKU09OLnN0cmluZ2lmeShvKSx1W3RdKSwhZS5jb21wb25lbnQmJiJtdXRlZCI9PT1yJiZxbyhlLnRhZyxlLmF0dHJzTWFwLnR5cGUscikmJkVyKGUsciwidHJ1ZSIsdVt0XSl9KGUpLGV9ZnVuY3Rpb24gcGEoZSl7dmFyIHQ7aWYodD1GcihlLCJ2LWZvciIpKXt2YXIgbj1mdW5jdGlvbihlKXt2YXIgdD1lLm1hdGNoKFhvKTtpZighdClyZXR1cm47dmFyIG49e307bi5mb3I9dFsyXS50cmltKCk7dmFyIHI9dFsxXS50cmltKCkucmVwbGFjZShRbywiIiksaT1yLm1hdGNoKFlvKTtpPyhuLmFsaWFzPXIucmVwbGFjZShZbywiIikudHJpbSgpLG4uaXRlcmF0b3IxPWlbMV0udHJpbSgpLGlbMl0mJihuLml0ZXJhdG9yMj1pWzJdLnRyaW0oKSkpOm4uYWxpYXM9cjtyZXR1cm4gbn0odCk7biYmQShlLG4pfX1mdW5jdGlvbiBkYShlLHQpe2UuaWZDb25kaXRpb25zfHwoZS5pZkNvbmRpdGlvbnM9W10pLGUuaWZDb25kaXRpb25zLnB1c2godCl9ZnVuY3Rpb24gdmEoZSl7dmFyIHQ9ZS5uYW1lLnJlcGxhY2UoaWEsIiIpO3JldHVybiB0fHwiIyIhPT1lLm5hbWVbMF0mJih0PSJkZWZhdWx0IiksZWEudGVzdCh0KT97bmFtZTp0LnNsaWNlKDEsLTEpLGR5bmFtaWM6ITB9OntuYW1lOiciJyt0KyciJyxkeW5hbWljOiExfX1mdW5jdGlvbiBoYShlKXt2YXIgdD1lLm1hdGNoKHJhKTtpZih0KXt2YXIgbj17fTtyZXR1cm4gdC5mb3JFYWNoKGZ1bmN0aW9uKGUpe25bZS5zbGljZSgxKV09ITB9KSxufX1mdW5jdGlvbiBtYShlKXtmb3IodmFyIHQ9e30sbj0wLHI9ZS5sZW5ndGg7bjxyO24rKyl0W2Vbbl0ubmFtZV09ZVtuXS52YWx1ZTtyZXR1cm4gdH12YXIgeWE9L154bWxuczpOU1xkKy8sZ2E9L15OU1xkKzovO2Z1bmN0aW9uIF9hKGUpe3JldHVybiB1YShlLnRhZyxlLmF0dHJzTGlzdC5zbGljZSgpLGUucGFyZW50KX12YXIgYmE9W21vLGdvLHtwcmVUcmFuc2Zvcm1Ob2RlOmZ1bmN0aW9uKGUsdCl7aWYoImlucHV0Ij09PWUudGFnKXt2YXIgbixyPWUuYXR0cnNNYXA7aWYoIXJbInYtbW9kZWwiXSlyZXR1cm47aWYoKHJbIjp0eXBlIl18fHJbInYtYmluZDp0eXBlIl0pJiYobj1JcihlLCJ0eXBlIikpLHIudHlwZXx8bnx8IXJbInYtYmluZCJdfHwobj0iKCIrclsidi1iaW5kIl0rIikudHlwZSIpLG4pe3ZhciBpPUZyKGUsInYtaWYiLCEwKSxvPWk\/IiYmKCIraSsiKSI6IiIsYT1udWxsIT1GcihlLCJ2LWVsc2UiLCEwKSxzPUZyKGUsInYtZWxzZS1pZiIsITApLGM9X2EoZSk7cGEoYyksanIoYywidHlwZSIsImNoZWNrYm94IiksZmEoYyx0KSxjLnByb2Nlc3NlZD0hMCxjLmlmPSIoIituKyIpPT09J2NoZWNrYm94JyIrbyxkYShjLHtleHA6Yy5pZixibG9jazpjfSk7dmFyIHU9X2EoZSk7RnIodSwidi1mb3IiLCEwKSxqcih1LCJ0eXBlIiwicmFkaW8iKSxmYSh1LHQpLGRhKGMse2V4cDoiKCIrbisiKT09PSdyYWRpbyciK28sYmxvY2s6dX0pO3ZhciBsPV9hKGUpO3JldHVybiBGcihsLCJ2LWZvciIsITApLGpyKGwsIjp0eXBlIixuKSxmYShsLHQpLGRhKGMse2V4cDppLGJsb2NrOmx9KSxhP2MuZWxzZT0hMDpzJiYoYy5lbHNlaWY9cyksY319fX1dO3ZhciAkYSx3YSxDYT17ZXhwZWN0SFRNTDohMCxtb2R1bGVzOmJhLGRpcmVjdGl2ZXM6e21vZGVsOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10LnZhbHVlLGk9dC5tb2RpZmllcnMsbz1lLnRhZyxhPWUuYXR0cnNNYXAudHlwZTtpZihlLmNvbXBvbmVudClyZXR1cm4gSHIoZSxyLGkpLCExO2lmKCJzZWxlY3QiPT09bykhZnVuY3Rpb24oZSx0LG4pe3ZhciByPSd2YXIgJCRzZWxlY3RlZFZhbCA9IEFycmF5LnByb3RvdHlwZS5maWx0ZXIuY2FsbCgkZXZlbnQudGFyZ2V0Lm9wdGlvbnMsZnVuY3Rpb24obyl7cmV0dXJuIG8uc2VsZWN0ZWR9KS5tYXAoZnVuY3Rpb24obyl7dmFyIHZhbCA9ICJfdmFsdWUiIGluIG8gPyBvLl92YWx1ZSA6IG8udmFsdWU7cmV0dXJuICcrKG4mJm4ubnVtYmVyPyJfbih2YWwpIjoidmFsIikrIn0pOyI7cj1yKyIgIitCcih0LCIkZXZlbnQudGFyZ2V0Lm11bHRpcGxlID8gJCRzZWxlY3RlZFZhbCA6ICQkc2VsZWN0ZWRWYWxbMF0iKSxNcihlLCJjaGFuZ2UiLHIsbnVsbCwhMCl9KGUscixpKTtlbHNlIGlmKCJpbnB1dCI9PT1vJiYiY2hlY2tib3giPT09YSkhZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4mJm4ubnVtYmVyLGk9SXIoZSwidmFsdWUiKXx8Im51bGwiLG89SXIoZSwidHJ1ZS12YWx1ZSIpfHwidHJ1ZSIsYT1JcihlLCJmYWxzZS12YWx1ZSIpfHwiZmFsc2UiO0VyKGUsImNoZWNrZWQiLCJBcnJheS5pc0FycmF5KCIrdCsiKT9faSgiK3QrIiwiK2krIik+LTEiKygidHJ1ZSI9PT1vPyI6KCIrdCsiKSI6IjpfcSgiK3QrIiwiK28rIikiKSksTXIoZSwiY2hhbmdlIiwidmFyICQkYT0iK3QrIiwkJGVsPSRldmVudC50YXJnZXQsJCRjPSQkZWwuY2hlY2tlZD8oIitvKyIpOigiK2ErIik7aWYoQXJyYXkuaXNBcnJheSgkJGEpKXt2YXIgJCR2PSIrKHI\/Il9uKCIraSsiKSI6aSkrIiwkJGk9X2koJCRhLCQkdik7aWYoJCRlbC5jaGVja2VkKXskJGk8MCYmKCIrQnIodCwiJCRhLmNvbmNhdChbJCR2XSkiKSsiKX1lbHNleyQkaT4tMSYmKCIrQnIodCwiJCRhLnNsaWNlKDAsJCRpKS5jb25jYXQoJCRhLnNsaWNlKCQkaSsxKSkiKSsiKX19ZWxzZXsiK0JyKHQsIiQkYyIpKyJ9IixudWxsLCEwKX0oZSxyLGkpO2Vsc2UgaWYoImlucHV0Ij09PW8mJiJyYWRpbyI9PT1hKSFmdW5jdGlvbihlLHQsbil7dmFyIHI9biYmbi5udW1iZXIsaT1JcihlLCJ2YWx1ZSIpfHwibnVsbCI7RXIoZSwiY2hlY2tlZCIsIl9xKCIrdCsiLCIrKGk9cj8iX24oIitpKyIpIjppKSsiKSIpLE1yKGUsImNoYW5nZSIsQnIodCxpKSxudWxsLCEwKX0oZSxyLGkpO2Vsc2UgaWYoImlucHV0Ij09PW98fCJ0ZXh0YXJlYSI9PT1vKSFmdW5jdGlvbihlLHQsbil7dmFyIHI9ZS5hdHRyc01hcC50eXBlLGk9bnx8e30sbz1pLmxhenksYT1pLm51bWJlcixzPWkudHJpbSxjPSFvJiYicmFuZ2UiIT09cix1PW8\/ImNoYW5nZSI6InJhbmdlIj09PXI\/V3I6ImlucHV0IixsPSIkZXZlbnQudGFyZ2V0LnZhbHVlIjtzJiYobD0iJGV2ZW50LnRhcmdldC52YWx1ZS50cmltKCkiKSxhJiYobD0iX24oIitsKyIpIik7dmFyIGY9QnIodCxsKTtjJiYoZj0iaWYoJGV2ZW50LnRhcmdldC5jb21wb3NpbmcpcmV0dXJuOyIrZiksRXIoZSwidmFsdWUiLCIoIit0KyIpIiksTXIoZSx1LGYsbnVsbCwhMCksKHN8fGEpJiZNcihlLCJibHVyIiwiJGZvcmNlVXBkYXRlKCkiKX0oZSxyLGkpO2Vsc2UgaWYoIUYuaXNSZXNlcnZlZFRhZyhvKSlyZXR1cm4gSHIoZSxyLGkpLCExO3JldHVybiEwfSx0ZXh0OmZ1bmN0aW9uKGUsdCl7dC52YWx1ZSYmRXIoZSwidGV4dENvbnRlbnQiLCJfcygiK3QudmFsdWUrIikiLHQpfSxodG1sOmZ1bmN0aW9uKGUsdCl7dC52YWx1ZSYmRXIoZSwiaW5uZXJIVE1MIiwiX3MoIit0LnZhbHVlKyIpIix0KX19LGlzUHJlVGFnOmZ1bmN0aW9uKGUpe3JldHVybiJwcmUiPT09ZX0saXNVbmFyeVRhZzpibyxtdXN0VXNlUHJvcDpqbixjYW5CZUxlZnRPcGVuVGFnOiRvLGlzUmVzZXJ2ZWRUYWc6V24sZ2V0VGFnTmFtZXNwYWNlOlpuLHN0YXRpY0tleXM6ZnVuY3Rpb24oZSl7cmV0dXJuIGUucmVkdWNlKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuY29uY2F0KHQuc3RhdGljS2V5c3x8W10pfSxbXSkuam9pbigiLCIpfShiYSl9LHhhPWcoZnVuY3Rpb24oZSl7cmV0dXJuIHAoInR5cGUsdGFnLGF0dHJzTGlzdCxhdHRyc01hcCxwbGFpbixwYXJlbnQsY2hpbGRyZW4sYXR0cnMsc3RhcnQsZW5kLHJhd0F0dHJzTWFwIisoZT8iLCIrZToiIikpfSk7ZnVuY3Rpb24ga2EoZSx0KXtlJiYoJGE9eGEodC5zdGF0aWNLZXlzfHwiIiksd2E9dC5pc1Jlc2VydmVkVGFnfHxULGZ1bmN0aW9uIGUodCl7dC5zdGF0aWM9ZnVuY3Rpb24oZSl7aWYoMj09PWUudHlwZSlyZXR1cm4hMTtpZigzPT09ZS50eXBlKXJldHVybiEwO3JldHVybiEoIWUucHJlJiYoZS5oYXNCaW5kaW5nc3x8ZS5pZnx8ZS5mb3J8fGQoZS50YWcpfHwhd2EoZS50YWcpfHxmdW5jdGlvbihlKXtmb3IoO2UucGFyZW50Oyl7aWYoInRlbXBsYXRlIiE9PShlPWUucGFyZW50KS50YWcpcmV0dXJuITE7aWYoZS5mb3IpcmV0dXJuITB9cmV0dXJuITF9KGUpfHwhT2JqZWN0LmtleXMoZSkuZXZlcnkoJGEpKSl9KHQpO2lmKDE9PT10LnR5cGUpe2lmKCF3YSh0LnRhZykmJiJzbG90IiE9PXQudGFnJiZudWxsPT10LmF0dHJzTWFwWyJpbmxpbmUtdGVtcGxhdGUiXSlyZXR1cm47Zm9yKHZhciBuPTAscj10LmNoaWxkcmVuLmxlbmd0aDtuPHI7bisrKXt2YXIgaT10LmNoaWxkcmVuW25dO2UoaSksaS5zdGF0aWN8fCh0LnN0YXRpYz0hMSl9aWYodC5pZkNvbmRpdGlvbnMpZm9yKHZhciBvPTEsYT10LmlmQ29uZGl0aW9ucy5sZW5ndGg7bzxhO28rKyl7dmFyIHM9dC5pZkNvbmRpdGlvbnNbb10uYmxvY2s7ZShzKSxzLnN0YXRpY3x8KHQuc3RhdGljPSExKX19fShlKSxmdW5jdGlvbiBlKHQsbil7aWYoMT09PXQudHlwZSl7aWYoKHQuc3RhdGljfHx0Lm9uY2UpJiYodC5zdGF0aWNJbkZvcj1uKSx0LnN0YXRpYyYmdC5jaGlsZHJlbi5sZW5ndGgmJigxIT09dC5jaGlsZHJlbi5sZW5ndGh8fDMhPT10LmNoaWxkcmVuWzBdLnR5cGUpKXJldHVybiB2b2lkKHQuc3RhdGljUm9vdD0hMCk7aWYodC5zdGF0aWNSb290PSExLHQuY2hpbGRyZW4pZm9yKHZhciByPTAsaT10LmNoaWxkcmVuLmxlbmd0aDtyPGk7cisrKWUodC5jaGlsZHJlbltyXSxufHwhIXQuZm9yKTtpZih0LmlmQ29uZGl0aW9ucylmb3IodmFyIG89MSxhPXQuaWZDb25kaXRpb25zLmxlbmd0aDtvPGE7bysrKWUodC5pZkNvbmRpdGlvbnNbb10uYmxvY2ssbil9fShlLCExKSl9dmFyIEFhPS9eKFtcdyRfXSt8XChbXildKj9cKSlccyo9PnxeZnVuY3Rpb24oPzpccytbXHckXSspP1xzKlwoLyxPYT0vXChbXildKj9cKTsqJC8sU2E9L15bQS1aYS16XyRdW1x3JF0qKD86XC5bQS1aYS16XyRdW1x3JF0qfFxbJ1teJ10qPyddfFxbIlteIl0qPyJdfFxbXGQrXXxcW1tBLVphLXpfJF1bXHckXSpdKSokLyxUYT17ZXNjOjI3LHRhYjo5LGVudGVyOjEzLHNwYWNlOjMyLHVwOjM4LGxlZnQ6MzcscmlnaHQ6MzksZG93bjo0MCxkZWxldGU6WzgsNDZdfSxFYT17ZXNjOlsiRXNjIiwiRXNjYXBlIl0sdGFiOiJUYWIiLGVudGVyOiJFbnRlciIsc3BhY2U6WyIgIiwiU3BhY2ViYXIiXSx1cDpbIlVwIiwiQXJyb3dVcCJdLGxlZnQ6WyJMZWZ0IiwiQXJyb3dMZWZ0Il0scmlnaHQ6WyJSaWdodCIsIkFycm93UmlnaHQiXSxkb3duOlsiRG93biIsIkFycm93RG93biJdLGRlbGV0ZTpbIkJhY2tzcGFjZSIsIkRlbGV0ZSIsIkRlbCJdfSxOYT1mdW5jdGlvbihlKXtyZXR1cm4iaWYoIitlKyIpcmV0dXJuIG51bGw7In0samE9e3N0b3A6IiRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsiLHByZXZlbnQ6IiRldmVudC5wcmV2ZW50RGVmYXVsdCgpOyIsc2VsZjpOYSgiJGV2ZW50LnRhcmdldCAhPT0gJGV2ZW50LmN1cnJlbnRUYXJnZXQiKSxjdHJsOk5hKCIhJGV2ZW50LmN0cmxLZXkiKSxzaGlmdDpOYSgiISRldmVudC5zaGlmdEtleSIpLGFsdDpOYSgiISRldmVudC5hbHRLZXkiKSxtZXRhOk5hKCIhJGV2ZW50Lm1ldGFLZXkiKSxsZWZ0Ok5hKCInYnV0dG9uJyBpbiAkZXZlbnQgJiYgJGV2ZW50LmJ1dHRvbiAhPT0gMCIpLG1pZGRsZTpOYSgiJ2J1dHRvbicgaW4gJGV2ZW50ICYmICRldmVudC5idXR0b24gIT09IDEiKSxyaWdodDpOYSgiJ2J1dHRvbicgaW4gJGV2ZW50ICYmICRldmVudC5idXR0b24gIT09IDIiKX07ZnVuY3Rpb24gRGEoZSx0KXt2YXIgbj10PyJuYXRpdmVPbjoiOiJvbjoiLHI9IiIsaT0iIjtmb3IodmFyIG8gaW4gZSl7dmFyIGE9TGEoZVtvXSk7ZVtvXSYmZVtvXS5keW5hbWljP2krPW8rIiwiK2ErIiwiOnIrPSciJytvKyciOicrYSsiLCJ9cmV0dXJuIHI9InsiK3Iuc2xpY2UoMCwtMSkrIn0iLGk\/bisiX2QoIityKyIsWyIraS5zbGljZSgwLC0xKSsiXSkiOm4rcn1mdW5jdGlvbiBMYShlKXtpZighZSlyZXR1cm4iZnVuY3Rpb24oKXt9IjtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiJbIitlLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gTGEoZSl9KS5qb2luKCIsIikrIl0iO3ZhciB0PVNhLnRlc3QoZS52YWx1ZSksbj1BYS50ZXN0KGUudmFsdWUpLHI9U2EudGVzdChlLnZhbHVlLnJlcGxhY2UoT2EsIiIpKTtpZihlLm1vZGlmaWVycyl7dmFyIGk9IiIsbz0iIixhPVtdO2Zvcih2YXIgcyBpbiBlLm1vZGlmaWVycylpZihqYVtzXSlvKz1qYVtzXSxUYVtzXSYmYS5wdXNoKHMpO2Vsc2UgaWYoImV4YWN0Ij09PXMpe3ZhciBjPWUubW9kaWZpZXJzO28rPU5hKFsiY3RybCIsInNoaWZ0IiwiYWx0IiwibWV0YSJdLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4hY1tlXX0pLm1hcChmdW5jdGlvbihlKXtyZXR1cm4iJGV2ZW50LiIrZSsiS2V5In0pLmpvaW4oInx8IikpfWVsc2UgYS5wdXNoKHMpO3JldHVybiBhLmxlbmd0aCYmKGkrPWZ1bmN0aW9uKGUpe3JldHVybiJpZighJGV2ZW50LnR5cGUuaW5kZXhPZigna2V5JykmJiIrZS5tYXAoTWEpLmpvaW4oIiYmIikrIilyZXR1cm4gbnVsbDsifShhKSksbyYmKGkrPW8pLCJmdW5jdGlvbigkZXZlbnQpeyIraSsodD8icmV0dXJuICIrZS52YWx1ZSsiKCRldmVudCkiOm4\/InJldHVybiAoIitlLnZhbHVlKyIpKCRldmVudCkiOnI\/InJldHVybiAiK2UudmFsdWU6ZS52YWx1ZSkrIn0ifXJldHVybiB0fHxuP2UudmFsdWU6ImZ1bmN0aW9uKCRldmVudCl7Iisocj8icmV0dXJuICIrZS52YWx1ZTplLnZhbHVlKSsifSJ9ZnVuY3Rpb24gTWEoZSl7dmFyIHQ9cGFyc2VJbnQoZSwxMCk7aWYodClyZXR1cm4iJGV2ZW50LmtleUNvZGUhPT0iK3Q7dmFyIG49VGFbZV0scj1FYVtlXTtyZXR1cm4iX2soJGV2ZW50LmtleUNvZGUsIitKU09OLnN0cmluZ2lmeShlKSsiLCIrSlNPTi5zdHJpbmdpZnkobikrIiwkZXZlbnQua2V5LCIrSlNPTi5zdHJpbmdpZnkocikrIikifXZhciBJYT17b246ZnVuY3Rpb24oZSx0KXtlLndyYXBMaXN0ZW5lcnM9ZnVuY3Rpb24oZSl7cmV0dXJuIl9nKCIrZSsiLCIrdC52YWx1ZSsiKSJ9fSxiaW5kOmZ1bmN0aW9uKGUsdCl7ZS53cmFwRGF0YT1mdW5jdGlvbihuKXtyZXR1cm4iX2IoIituKyIsJyIrZS50YWcrIicsIit0LnZhbHVlKyIsIisodC5tb2RpZmllcnMmJnQubW9kaWZpZXJzLnByb3A\/InRydWUiOiJmYWxzZSIpKyh0Lm1vZGlmaWVycyYmdC5tb2RpZmllcnMuc3luYz8iLHRydWUiOiIiKSsiKSJ9fSxjbG9hazpTfSxGYT1mdW5jdGlvbihlKXt0aGlzLm9wdGlvbnM9ZSx0aGlzLndhcm49ZS53YXJufHxTcix0aGlzLnRyYW5zZm9ybXM9VHIoZS5tb2R1bGVzLCJ0cmFuc2Zvcm1Db2RlIiksdGhpcy5kYXRhR2VuRm5zPVRyKGUubW9kdWxlcywiZ2VuRGF0YSIpLHRoaXMuZGlyZWN0aXZlcz1BKEEoe30sSWEpLGUuZGlyZWN0aXZlcyk7dmFyIHQ9ZS5pc1Jlc2VydmVkVGFnfHxUO3RoaXMubWF5YmVDb21wb25lbnQ9ZnVuY3Rpb24oZSl7cmV0dXJuISFlLmNvbXBvbmVudHx8IXQoZS50YWcpfSx0aGlzLm9uY2VJZD0wLHRoaXMuc3RhdGljUmVuZGVyRm5zPVtdLHRoaXMucHJlPSExfTtmdW5jdGlvbiBQYShlLHQpe3ZhciBuPW5ldyBGYSh0KTtyZXR1cm57cmVuZGVyOiJ3aXRoKHRoaXMpe3JldHVybiAiKyhlP1JhKGUsbik6J19jKCJkaXYiKScpKyJ9IixzdGF0aWNSZW5kZXJGbnM6bi5zdGF0aWNSZW5kZXJGbnN9fWZ1bmN0aW9uIFJhKGUsdCl7aWYoZS5wYXJlbnQmJihlLnByZT1lLnByZXx8ZS5wYXJlbnQucHJlKSxlLnN0YXRpY1Jvb3QmJiFlLnN0YXRpY1Byb2Nlc3NlZClyZXR1cm4gSGEoZSx0KTtpZihlLm9uY2UmJiFlLm9uY2VQcm9jZXNzZWQpcmV0dXJuIEJhKGUsdCk7aWYoZS5mb3ImJiFlLmZvclByb2Nlc3NlZClyZXR1cm4gemEoZSx0KTtpZihlLmlmJiYhZS5pZlByb2Nlc3NlZClyZXR1cm4gVWEoZSx0KTtpZigidGVtcGxhdGUiIT09ZS50YWd8fGUuc2xvdFRhcmdldHx8dC5wcmUpe2lmKCJzbG90Ij09PWUudGFnKXJldHVybiBmdW5jdGlvbihlLHQpe3ZhciBuPWUuc2xvdE5hbWV8fCciZGVmYXVsdCInLHI9cWEoZSx0KSxpPSJfdCgiK24rKHI\/IiwiK3I6IiIpLG89ZS5hdHRyc3x8ZS5keW5hbWljQXR0cnM\/R2EoKGUuYXR0cnN8fFtdKS5jb25jYXQoZS5keW5hbWljQXR0cnN8fFtdKS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJue25hbWU6YihlLm5hbWUpLHZhbHVlOmUudmFsdWUsZHluYW1pYzplLmR5bmFtaWN9fSkpOm51bGwsYT1lLmF0dHJzTWFwWyJ2LWJpbmQiXTshbyYmIWF8fHJ8fChpKz0iLG51bGwiKTtvJiYoaSs9IiwiK28pO2EmJihpKz0obz8iIjoiLG51bGwiKSsiLCIrYSk7cmV0dXJuIGkrIikifShlLHQpO3ZhciBuO2lmKGUuY29tcG9uZW50KW49ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXQuaW5saW5lVGVtcGxhdGU\/bnVsbDpxYSh0LG4sITApO3JldHVybiJfYygiK2UrIiwiK1ZhKHQsbikrKHI\/IiwiK3I6IiIpKyIpIn0oZS5jb21wb25lbnQsZSx0KTtlbHNle3ZhciByOyghZS5wbGFpbnx8ZS5wcmUmJnQubWF5YmVDb21wb25lbnQoZSkpJiYocj1WYShlLHQpKTt2YXIgaT1lLmlubGluZVRlbXBsYXRlP251bGw6cWEoZSx0LCEwKTtuPSJfYygnIitlLnRhZysiJyIrKHI\/IiwiK3I6IiIpKyhpPyIsIitpOiIiKSsiKSJ9Zm9yKHZhciBvPTA7bzx0LnRyYW5zZm9ybXMubGVuZ3RoO28rKyluPXQudHJhbnNmb3Jtc1tvXShlLG4pO3JldHVybiBufXJldHVybiBxYShlLHQpfHwidm9pZCAwIn1mdW5jdGlvbiBIYShlLHQpe2Uuc3RhdGljUHJvY2Vzc2VkPSEwO3ZhciBuPXQucHJlO3JldHVybiBlLnByZSYmKHQucHJlPWUucHJlKSx0LnN0YXRpY1JlbmRlckZucy5wdXNoKCJ3aXRoKHRoaXMpe3JldHVybiAiK1JhKGUsdCkrIn0iKSx0LnByZT1uLCJfbSgiKyh0LnN0YXRpY1JlbmRlckZucy5sZW5ndGgtMSkrKGUuc3RhdGljSW5Gb3I\/Iix0cnVlIjoiIikrIikifWZ1bmN0aW9uIEJhKGUsdCl7aWYoZS5vbmNlUHJvY2Vzc2VkPSEwLGUuaWYmJiFlLmlmUHJvY2Vzc2VkKXJldHVybiBVYShlLHQpO2lmKGUuc3RhdGljSW5Gb3Ipe2Zvcih2YXIgbj0iIixyPWUucGFyZW50O3I7KXtpZihyLmZvcil7bj1yLmtleTticmVha31yPXIucGFyZW50fXJldHVybiBuPyJfbygiK1JhKGUsdCkrIiwiK3Qub25jZUlkKysrIiwiK24rIikiOlJhKGUsdCl9cmV0dXJuIEhhKGUsdCl9ZnVuY3Rpb24gVWEoZSx0LG4scil7cmV0dXJuIGUuaWZQcm9jZXNzZWQ9ITAsZnVuY3Rpb24gZSh0LG4scixpKXtpZighdC5sZW5ndGgpcmV0dXJuIGl8fCJfZSgpIjt2YXIgbz10LnNoaWZ0KCk7cmV0dXJuIG8uZXhwPyIoIitvLmV4cCsiKT8iK2Eoby5ibG9jaykrIjoiK2UodCxuLHIsaSk6IiIrYShvLmJsb2NrKTtmdW5jdGlvbiBhKGUpe3JldHVybiByP3IoZSxuKTplLm9uY2U\/QmEoZSxuKTpSYShlLG4pfX0oZS5pZkNvbmRpdGlvbnMuc2xpY2UoKSx0LG4scil9ZnVuY3Rpb24gemEoZSx0LG4scil7dmFyIGk9ZS5mb3Isbz1lLmFsaWFzLGE9ZS5pdGVyYXRvcjE\/IiwiK2UuaXRlcmF0b3IxOiIiLHM9ZS5pdGVyYXRvcjI\/IiwiK2UuaXRlcmF0b3IyOiIiO3JldHVybiBlLmZvclByb2Nlc3NlZD0hMCwocnx8Il9sIikrIigoIitpKyIpLGZ1bmN0aW9uKCIrbythK3MrIil7cmV0dXJuICIrKG58fFJhKShlLHQpKyJ9KSJ9ZnVuY3Rpb24gVmEoZSx0KXt2YXIgbj0ieyIscj1mdW5jdGlvbihlLHQpe3ZhciBuPWUuZGlyZWN0aXZlcztpZighbilyZXR1cm47dmFyIHIsaSxvLGEscz0iZGlyZWN0aXZlczpbIixjPSExO2ZvcihyPTAsaT1uLmxlbmd0aDtyPGk7cisrKXtvPW5bcl0sYT0hMDt2YXIgdT10LmRpcmVjdGl2ZXNbby5uYW1lXTt1JiYoYT0hIXUoZSxvLHQud2FybikpLGEmJihjPSEwLHMrPSd7bmFtZToiJytvLm5hbWUrJyIscmF3TmFtZToiJytvLnJhd05hbWUrJyInKyhvLnZhbHVlPyIsdmFsdWU6KCIrby52YWx1ZSsiKSxleHByZXNzaW9uOiIrSlNPTi5zdHJpbmdpZnkoby52YWx1ZSk6IiIpKyhvLmFyZz8iLGFyZzoiKyhvLmlzRHluYW1pY0FyZz9vLmFyZzonIicrby5hcmcrJyInKToiIikrKG8ubW9kaWZpZXJzPyIsbW9kaWZpZXJzOiIrSlNPTi5zdHJpbmdpZnkoby5tb2RpZmllcnMpOiIiKSsifSwiKX1pZihjKXJldHVybiBzLnNsaWNlKDAsLTEpKyJdIn0oZSx0KTtyJiYobis9cisiLCIpLGUua2V5JiYobis9ImtleToiK2Uua2V5KyIsIiksZS5yZWYmJihuKz0icmVmOiIrZS5yZWYrIiwiKSxlLnJlZkluRm9yJiYobis9InJlZkluRm9yOnRydWUsIiksZS5wcmUmJihuKz0icHJlOnRydWUsIiksZS5jb21wb25lbnQmJihuKz0ndGFnOiInK2UudGFnKyciLCcpO2Zvcih2YXIgaT0wO2k8dC5kYXRhR2VuRm5zLmxlbmd0aDtpKyspbis9dC5kYXRhR2VuRm5zW2ldKGUpO2lmKGUuYXR0cnMmJihuKz0iYXR0cnM6IitHYShlLmF0dHJzKSsiLCIpLGUucHJvcHMmJihuKz0iZG9tUHJvcHM6IitHYShlLnByb3BzKSsiLCIpLGUuZXZlbnRzJiYobis9RGEoZS5ldmVudHMsITEpKyIsIiksZS5uYXRpdmVFdmVudHMmJihuKz1EYShlLm5hdGl2ZUV2ZW50cywhMCkrIiwiKSxlLnNsb3RUYXJnZXQmJiFlLnNsb3RTY29wZSYmKG4rPSJzbG90OiIrZS5zbG90VGFyZ2V0KyIsIiksZS5zY29wZWRTbG90cyYmKG4rPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lLmZvcnx8T2JqZWN0LmtleXModCkuc29tZShmdW5jdGlvbihlKXt2YXIgbj10W2VdO3JldHVybiBuLnNsb3RUYXJnZXREeW5hbWljfHxuLmlmfHxuLmZvcnx8S2Eobil9KSxpPSEhZS5pZjtpZighcilmb3IodmFyIG89ZS5wYXJlbnQ7bzspe2lmKG8uc2xvdFNjb3BlJiZvLnNsb3RTY29wZSE9PWNhfHxvLmZvcil7cj0hMDticmVha31vLmlmJiYoaT0hMCksbz1vLnBhcmVudH12YXIgYT1PYmplY3Qua2V5cyh0KS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIEphKHRbZV0sbil9KS5qb2luKCIsIik7cmV0dXJuInNjb3BlZFNsb3RzOl91KFsiK2ErIl0iKyhyPyIsbnVsbCx0cnVlIjoiIikrKCFyJiZpPyIsbnVsbCxmYWxzZSwiK2Z1bmN0aW9uKGUpe3ZhciB0PTUzODEsbj1lLmxlbmd0aDtmb3IoO247KXQ9MzMqdF5lLmNoYXJDb2RlQXQoLS1uKTtyZXR1cm4gdD4+PjB9KGEpOiIiKSsiKSJ9KGUsZS5zY29wZWRTbG90cyx0KSsiLCIpLGUubW9kZWwmJihuKz0ibW9kZWw6e3ZhbHVlOiIrZS5tb2RlbC52YWx1ZSsiLGNhbGxiYWNrOiIrZS5tb2RlbC5jYWxsYmFjaysiLGV4cHJlc3Npb246IitlLm1vZGVsLmV4cHJlc3Npb24rIn0sIiksZS5pbmxpbmVUZW1wbGF0ZSl7dmFyIG89ZnVuY3Rpb24oZSx0KXt2YXIgbj1lLmNoaWxkcmVuWzBdO2lmKG4mJjE9PT1uLnR5cGUpe3ZhciByPVBhKG4sdC5vcHRpb25zKTtyZXR1cm4iaW5saW5lVGVtcGxhdGU6e3JlbmRlcjpmdW5jdGlvbigpeyIrci5yZW5kZXIrIn0sc3RhdGljUmVuZGVyRm5zOlsiK3Iuc3RhdGljUmVuZGVyRm5zLm1hcChmdW5jdGlvbihlKXtyZXR1cm4iZnVuY3Rpb24oKXsiK2UrIn0ifSkuam9pbigiLCIpKyJdfSJ9fShlLHQpO28mJihuKz1vKyIsIil9cmV0dXJuIG49bi5yZXBsYWNlKC8sJC8sIiIpKyJ9IixlLmR5bmFtaWNBdHRycyYmKG49Il9iKCIrbisnLCInK2UudGFnKyciLCcrR2EoZS5keW5hbWljQXR0cnMpKyIpIiksZS53cmFwRGF0YSYmKG49ZS53cmFwRGF0YShuKSksZS53cmFwTGlzdGVuZXJzJiYobj1lLndyYXBMaXN0ZW5lcnMobikpLG59ZnVuY3Rpb24gS2EoZSl7cmV0dXJuIDE9PT1lLnR5cGUmJigic2xvdCI9PT1lLnRhZ3x8ZS5jaGlsZHJlbi5zb21lKEthKSl9ZnVuY3Rpb24gSmEoZSx0KXt2YXIgbj1lLmF0dHJzTWFwWyJzbG90LXNjb3BlIl07aWYoZS5pZiYmIWUuaWZQcm9jZXNzZWQmJiFuKXJldHVybiBVYShlLHQsSmEsIm51bGwiKTtpZihlLmZvciYmIWUuZm9yUHJvY2Vzc2VkKXJldHVybiB6YShlLHQsSmEpO3ZhciByPWUuc2xvdFNjb3BlPT09Y2E\/IiI6U3RyaW5nKGUuc2xvdFNjb3BlKSxpPSJmdW5jdGlvbigiK3IrIil7cmV0dXJuICIrKCJ0ZW1wbGF0ZSI9PT1lLnRhZz9lLmlmJiZuPyIoIitlLmlmKyIpPyIrKHFhKGUsdCl8fCJ1bmRlZmluZWQiKSsiOnVuZGVmaW5lZCI6cWEoZSx0KXx8InVuZGVmaW5lZCI6UmEoZSx0KSkrIn0iLG89cj8iIjoiLHByb3h5OnRydWUiO3JldHVybiJ7a2V5OiIrKGUuc2xvdFRhcmdldHx8JyJkZWZhdWx0IicpKyIsZm46IitpK28rIn0ifWZ1bmN0aW9uIHFhKGUsdCxuLHIsaSl7dmFyIG89ZS5jaGlsZHJlbjtpZihvLmxlbmd0aCl7dmFyIGE9b1swXTtpZigxPT09by5sZW5ndGgmJmEuZm9yJiYidGVtcGxhdGUiIT09YS50YWcmJiJzbG90IiE9PWEudGFnKXt2YXIgcz1uP3QubWF5YmVDb21wb25lbnQoYSk\/IiwxIjoiLDAiOiIiO3JldHVybiIiKyhyfHxSYSkoYSx0KStzfXZhciBjPW4\/ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG49MCxyPTA7cjxlLmxlbmd0aDtyKyspe3ZhciBpPWVbcl07aWYoMT09PWkudHlwZSl7aWYoV2EoaSl8fGkuaWZDb25kaXRpb25zJiZpLmlmQ29uZGl0aW9ucy5zb21lKGZ1bmN0aW9uKGUpe3JldHVybiBXYShlLmJsb2NrKX0pKXtuPTI7YnJlYWt9KHQoaSl8fGkuaWZDb25kaXRpb25zJiZpLmlmQ29uZGl0aW9ucy5zb21lKGZ1bmN0aW9uKGUpe3JldHVybiB0KGUuYmxvY2spfSkpJiYobj0xKX19cmV0dXJuIG59KG8sdC5tYXliZUNvbXBvbmVudCk6MCx1PWl8fFphO3JldHVybiJbIitvLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gdShlLHQpfSkuam9pbigiLCIpKyJdIisoYz8iLCIrYzoiIil9fWZ1bmN0aW9uIFdhKGUpe3JldHVybiB2b2lkIDAhPT1lLmZvcnx8InRlbXBsYXRlIj09PWUudGFnfHwic2xvdCI9PT1lLnRhZ31mdW5jdGlvbiBaYShlLHQpe3JldHVybiAxPT09ZS50eXBlP1JhKGUsdCk6Mz09PWUudHlwZSYmZS5pc0NvbW1lbnQ\/KHI9ZSwiX2UoIitKU09OLnN0cmluZ2lmeShyLnRleHQpKyIpIik6Il92KCIrKDI9PT0obj1lKS50eXBlP24uZXhwcmVzc2lvbjpYYShKU09OLnN0cmluZ2lmeShuLnRleHQpKSkrIikiO3ZhciBuLHJ9ZnVuY3Rpb24gR2EoZSl7Zm9yKHZhciB0PSIiLG49IiIscj0wO3I8ZS5sZW5ndGg7cisrKXt2YXIgaT1lW3JdLG89WGEoaS52YWx1ZSk7aS5keW5hbWljP24rPWkubmFtZSsiLCIrbysiLCI6dCs9JyInK2kubmFtZSsnIjonK28rIiwifXJldHVybiB0PSJ7Iit0LnNsaWNlKDAsLTEpKyJ9IixuPyJfZCgiK3QrIixbIituLnNsaWNlKDAsLTEpKyJdKSI6dH1mdW5jdGlvbiBYYShlKXtyZXR1cm4gZS5yZXBsYWNlKC9cdTIwMjgvZywiXFx1MjAyOCIpLnJlcGxhY2UoL1x1MjAyOS9nLCJcXHUyMDI5Iil9bmV3IFJlZ0V4cCgiXFxiIisiZG8saWYsZm9yLGxldCxuZXcsdHJ5LHZhcixjYXNlLGVsc2Usd2l0aCxhd2FpdCxicmVhayxjYXRjaCxjbGFzcyxjb25zdCxzdXBlcix0aHJvdyx3aGlsZSx5aWVsZCxkZWxldGUsZXhwb3J0LGltcG9ydCxyZXR1cm4sc3dpdGNoLGRlZmF1bHQsZXh0ZW5kcyxmaW5hbGx5LGNvbnRpbnVlLGRlYnVnZ2VyLGZ1bmN0aW9uLGFyZ3VtZW50cyIuc3BsaXQoIiwiKS5qb2luKCJcXGJ8XFxiIikrIlxcYiIpO2Z1bmN0aW9uIFlhKGUsdCl7dHJ5e3JldHVybiBuZXcgRnVuY3Rpb24oZSl9Y2F0Y2gobil7cmV0dXJuIHQucHVzaCh7ZXJyOm4sY29kZTplfSksU319ZnVuY3Rpb24gUWEoZSl7dmFyIHQ9T2JqZWN0LmNyZWF0ZShudWxsKTtyZXR1cm4gZnVuY3Rpb24obixyLGkpeyhyPUEoe30scikpLndhcm47ZGVsZXRlIHIud2Fybjt2YXIgbz1yLmRlbGltaXRlcnM\/U3RyaW5nKHIuZGVsaW1pdGVycykrbjpuO2lmKHRbb10pcmV0dXJuIHRbb107dmFyIGE9ZShuLHIpLHM9e30sYz1bXTtyZXR1cm4gcy5yZW5kZXI9WWEoYS5yZW5kZXIsYykscy5zdGF0aWNSZW5kZXJGbnM9YS5zdGF0aWNSZW5kZXJGbnMubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBZYShlLGMpfSksdFtvXT1zfX12YXIgZXMsdHMsbnM9KGVzPWZ1bmN0aW9uKGUsdCl7dmFyIG49bGEoZS50cmltKCksdCk7ITEhPT10Lm9wdGltaXplJiZrYShuLHQpO3ZhciByPVBhKG4sdCk7cmV0dXJue2FzdDpuLHJlbmRlcjpyLnJlbmRlcixzdGF0aWNSZW5kZXJGbnM6ci5zdGF0aWNSZW5kZXJGbnN9fSxmdW5jdGlvbihlKXtmdW5jdGlvbiB0KHQsbil7dmFyIHI9T2JqZWN0LmNyZWF0ZShlKSxpPVtdLG89W107aWYobilmb3IodmFyIGEgaW4gbi5tb2R1bGVzJiYoci5tb2R1bGVzPShlLm1vZHVsZXN8fFtdKS5jb25jYXQobi5tb2R1bGVzKSksbi5kaXJlY3RpdmVzJiYoci5kaXJlY3RpdmVzPUEoT2JqZWN0LmNyZWF0ZShlLmRpcmVjdGl2ZXN8fG51bGwpLG4uZGlyZWN0aXZlcykpLG4pIm1vZHVsZXMiIT09YSYmImRpcmVjdGl2ZXMiIT09YSYmKHJbYV09blthXSk7ci53YXJuPWZ1bmN0aW9uKGUsdCxuKXsobj9vOmkpLnB1c2goZSl9O3ZhciBzPWVzKHQudHJpbSgpLHIpO3JldHVybiBzLmVycm9ycz1pLHMudGlwcz1vLHN9cmV0dXJue2NvbXBpbGU6dCxjb21waWxlVG9GdW5jdGlvbnM6UWEodCl9fSkoQ2EpLHJzPShucy5jb21waWxlLG5zLmNvbXBpbGVUb0Z1bmN0aW9ucyk7ZnVuY3Rpb24gaXMoZSl7cmV0dXJuKHRzPXRzfHxkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSkuaW5uZXJIVE1MPWU\/JzxhIGhyZWY9IlxuIi8+JzonPGRpdiBhPSJcbiIvPicsdHMuaW5uZXJIVE1MLmluZGV4T2YoIiYjMTA7Iik+MH12YXIgb3M9ISF6JiZpcyghMSksYXM9ISF6JiZpcyghMCksc3M9ZyhmdW5jdGlvbihlKXt2YXIgdD1ZbihlKTtyZXR1cm4gdCYmdC5pbm5lckhUTUx9KSxjcz13bi5wcm90b3R5cGUuJG1vdW50O3JldHVybiB3bi5wcm90b3R5cGUuJG1vdW50PWZ1bmN0aW9uKGUsdCl7aWYoKGU9ZSYmWW4oZSkpPT09ZG9jdW1lbnQuYm9keXx8ZT09PWRvY3VtZW50LmRvY3VtZW50RWxlbWVudClyZXR1cm4gdGhpczt2YXIgbj10aGlzLiRvcHRpb25zO2lmKCFuLnJlbmRlcil7dmFyIHI9bi50ZW1wbGF0ZTtpZihyKWlmKCJzdHJpbmciPT10eXBlb2YgcikiIyI9PT1yLmNoYXJBdCgwKSYmKHI9c3MocikpO2Vsc2V7aWYoIXIubm9kZVR5cGUpcmV0dXJuIHRoaXM7cj1yLmlubmVySFRNTH1lbHNlIGUmJihyPWZ1bmN0aW9uKGUpe2lmKGUub3V0ZXJIVE1MKXJldHVybiBlLm91dGVySFRNTDt2YXIgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtyZXR1cm4gdC5hcHBlbmRDaGlsZChlLmNsb25lTm9kZSghMCkpLHQuaW5uZXJIVE1MfShlKSk7aWYocil7dmFyIGk9cnMocix7b3V0cHV0U291cmNlUmFuZ2U6ITEsc2hvdWxkRGVjb2RlTmV3bGluZXM6b3Msc2hvdWxkRGVjb2RlTmV3bGluZXNGb3JIcmVmOmFzLGRlbGltaXRlcnM6bi5kZWxpbWl0ZXJzLGNvbW1lbnRzOm4uY29tbWVudHN9LHRoaXMpLG89aS5yZW5kZXIsYT1pLnN0YXRpY1JlbmRlckZucztuLnJlbmRlcj1vLG4uc3RhdGljUmVuZGVyRm5zPWF9fXJldHVybiBjcy5jYWxsKHRoaXMsZSx0KX0sd24uY29tcGlsZT1ycyx3bn0pOwovKiogL20vanMvdnVlL3Z1ZS10aGUtbWFzay5qcyAqKi8KdmFyIF9fX2QyY192dWV0aGVtYXNranNfY19vbj0iMjAyNS0wNS0yMyAxNzowNTozOCI7J3VzZSBzdHJpY3QnO3ZhciBfX19kMmNfdnVldGhlbWFza2pzX2Nfb249IjIwMjQtMDEtMzEgMTQ6MzM6MTUiOyJ1c2Ugc3RyaWN0IjtfX19kMmNfdnVldGhlbWFza2pzX2Nfb249IjIwMjMtMDEtMTIgMTE6NDA6NTUiOyJ1c2Ugc3RyaWN0IjtfX19kMmNfdnVldGhlbWFza2pzX2Nfb249IjIwMjMtMDEtMTIgMTA6NTA6NDEiOyJ1c2Ugc3RyaWN0IjtfX19kMmNfdnVldGhlbWFza2pzX2Nfb249IjIwMjEtMTItMTUgMTI6NTE6MjQiOyJ1c2Ugc3RyaWN0IjsKKGZ1bmN0aW9uKGgsYyl7Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzJiYib2JqZWN0Ij09dHlwZW9mIG1vZHVsZT9tb2R1bGUuZXhwb3J0cz1jKCk6ImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoW10sYyk6Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzP2V4cG9ydHMuVnVlVGhlTWFzaz1jKCk6aC5WdWVUaGVNYXNrPWMoKX0pKHRoaXMsZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oaCl7ZnVuY3Rpb24gYyhkKXtpZihhW2RdKXJldHVybiBhW2RdLmV4cG9ydHM7dmFyIGU9YVtkXT17aTpkLGw6ITEsZXhwb3J0czp7fX07cmV0dXJuIGhbZF0uY2FsbChlLmV4cG9ydHMsZSxlLmV4cG9ydHMsYyksZS5sPSEwLGUuZXhwb3J0c312YXIgYT17fTtyZXR1cm4gYy5tPWgsYy5jPWEsYy5pPWZ1bmN0aW9uKGQpe3JldHVybiBkfSxjLmQ9ZnVuY3Rpb24oZCxlLGwpe2MubyhkLGUpfHxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCxlLHtjb25maWd1cmFibGU6ITEsZW51bWVyYWJsZTohMCwKZ2V0Omx9KX0sYy5uPWZ1bmN0aW9uKGQpe3ZhciBlPWQmJmQuX19lc01vZHVsZT9mdW5jdGlvbigpe3JldHVybiBkLmRlZmF1bHR9OmZ1bmN0aW9uKCl7cmV0dXJuIGR9O3JldHVybiBjLmQoZSwiYSIsZSksZX0sYy5vPWZ1bmN0aW9uKGQsZSl7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChkLGUpfSxjLnA9Ii4iLGMoYy5zPTEwKX0oW2Z1bmN0aW9uKGgsYyl7aC5leHBvcnRzPXsiIyI6e3BhdHRlcm46L1xkL30sWDp7cGF0dGVybjovWzAtOWEtekEtWl0vfSxTOntwYXR0ZXJuOi9bYS16QS1aXS99LEE6e3BhdHRlcm46L1thLXpBLVpdLyx0cmFuc2Zvcm06ZnVuY3Rpb24oYSl7cmV0dXJuIGEudG9Mb2NhbGVVcHBlckNhc2UoKX19LGE6e3BhdHRlcm46L1thLXpBLVpdLyx0cmFuc2Zvcm06ZnVuY3Rpb24oYSl7cmV0dXJuIGEudG9Mb2NhbGVMb3dlckNhc2UoKX19LCIhIjp7ZXNjYXBlOiEwfX19LGZ1bmN0aW9uKGgsYyxhKXtmdW5jdGlvbiBkKGIpe3ZhciBmPQpkb2N1bWVudC5jcmVhdGVFdmVudCgiRXZlbnQiKTtyZXR1cm4gZi5pbml0RXZlbnQoYiwhMCwhMCksZn12YXIgZT1hKDIpO2g9YSgwKTt2YXIgbD1hLm4oaCk7Yy5hPWZ1bmN0aW9uKGIsZil7dmFyIGc9Zi52YWx1ZTtpZigoQXJyYXkuaXNBcnJheShnKXx8InN0cmluZyI9PXR5cGVvZiBnKSYmKGc9e21hc2s6Zyx0b2tlbnM6bC5hfSksIklOUFVUIiE9PWIudGFnTmFtZS50b0xvY2FsZVVwcGVyQ2FzZSgpKXtmPWIuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImlucHV0Iik7aWYoMSE9PWYubGVuZ3RoKXRocm93IEVycm9yKCJ2LW1hc2sgZGlyZWN0aXZlIHJlcXVpcmVzIDEgaW5wdXQsIGZvdW5kICIrZi5sZW5ndGgpO2I9ZlswXX1iLm9uaW5wdXQ9ZnVuY3Rpb24obSl7aWYobS5pc1RydXN0ZWQpe3ZhciBrPWIuc2VsZWN0aW9uRW5kO209Yi52YWx1ZVtrLTFdO2ZvcihiLnZhbHVlPWEuaShlLmEpKGIudmFsdWUsZy5tYXNrLCEwLGcudG9rZW5zKTtrPGIudmFsdWUubGVuZ3RoJiZiLnZhbHVlLmNoYXJBdChrLQoxKSE9PW07KWsrKztiPT09ZG9jdW1lbnQuYWN0aXZlRWxlbWVudCYmKGIuc2V0U2VsZWN0aW9uUmFuZ2UoayxrKSxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Yi5zZXRTZWxlY3Rpb25SYW5nZShrLGspfSwwKSk7Yi5kaXNwYXRjaEV2ZW50KGQoImlucHV0IikpfX07Zj1hLmkoZS5hKShiLnZhbHVlLGcubWFzaywhMCxnLnRva2Vucyk7ZiE9PWIudmFsdWUmJihiLnZhbHVlPWYsYi5kaXNwYXRjaEV2ZW50KGQoImlucHV0IikpKX19LGZ1bmN0aW9uKGgsYyxhKXt2YXIgZD1hKDYpLGU9YSg1KTtjLmE9ZnVuY3Rpb24obCxiKXt2YXIgZj0hKDI8YXJndW1lbnRzLmxlbmd0aCYmdm9pZCAwIT09YXJndW1lbnRzWzJdKXx8YXJndW1lbnRzWzJdLGc9YXJndW1lbnRzWzNdO3JldHVybiBBcnJheS5pc0FycmF5KGIpP2EuaShlLmEpKGQuYSxiLGcpKGwsYixmLGcpOmEuaShkLmEpKGwsYixmLGcpfX0sZnVuY3Rpb24oaCxjLGEpe2Z1bmN0aW9uIGQoZyl7Zy5jb21wb25lbnQoYi5hLm5hbWUsYi5hKTsKZy5kaXJlY3RpdmUoIm1hc2siLGwuYSl9T2JqZWN0LmRlZmluZVByb3BlcnR5KGMsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO2g9YSgwKTt2YXIgZT1hLm4oaCksbD1hKDEpO2g9YSg3KTt2YXIgYj1hLm4oaCk7YS5kKGMsIlRoZU1hc2siLGZ1bmN0aW9uKCl7cmV0dXJuIGIuYX0pO2EuZChjLCJtYXNrIixmdW5jdGlvbigpe3JldHVybiBsLmF9KTthLmQoYywidG9rZW5zIixmdW5jdGlvbigpe3JldHVybiBlLmF9KTthLmQoYywidmVyc2lvbiIsZnVuY3Rpb24oKXtyZXR1cm4gZn0pO3ZhciBmPSIwLjExLjEiO2MuZGVmYXVsdD1kOyJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93JiZ3aW5kb3cuVnVlJiZ3aW5kb3cuVnVlLnVzZShkKX0sZnVuY3Rpb24oaCxjLGEpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShjLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTtoPWEoMSk7dmFyIGQ9YSgwKSxlPWEubihkKSxsPWEoMik7Yy5kZWZhdWx0PXtuYW1lOiJUaGVNYXNrIixwcm9wczp7dmFsdWU6W1N0cmluZywKTnVtYmVyXSxtYXNrOnt0eXBlOltTdHJpbmcsQXJyYXldLHJlcXVpcmVkOiEwfSxtYXNrZWQ6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSx0b2tlbnM6e3R5cGU6T2JqZWN0LGRlZmF1bHQ6ZnVuY3Rpb24oKXtyZXR1cm4gZS5hfX19LGRpcmVjdGl2ZXM6e21hc2s6aC5hfSxkYXRhOmZ1bmN0aW9uKCl7cmV0dXJue2xhc3RWYWx1ZTpudWxsLGRpc3BsYXk6dGhpcy52YWx1ZX19LHdhdGNoOnt2YWx1ZTpmdW5jdGlvbihiKXtiIT09dGhpcy5sYXN0VmFsdWUmJih0aGlzLmRpc3BsYXk9Yil9LG1hc2tlZDpmdW5jdGlvbigpe3RoaXMucmVmcmVzaCh0aGlzLmRpc3BsYXkpfX0sY29tcHV0ZWQ6e2NvbmZpZzpmdW5jdGlvbigpe3JldHVybnttYXNrOnRoaXMubWFzayx0b2tlbnM6dGhpcy50b2tlbnMsbWFza2VkOnRoaXMubWFza2VkfX19LG1ldGhvZHM6e29uSW5wdXQ6ZnVuY3Rpb24oYil7Yi5pc1RydXN0ZWR8fHRoaXMucmVmcmVzaChiLnRhcmdldC52YWx1ZSl9LHJlZnJlc2g6ZnVuY3Rpb24oYil7dGhpcy5kaXNwbGF5PQpiO2I9YS5pKGwuYSkoYix0aGlzLm1hc2ssdGhpcy5tYXNrZWQsdGhpcy50b2tlbnMpO2IhPT10aGlzLmxhc3RWYWx1ZSYmKHRoaXMubGFzdFZhbHVlPWIsdGhpcy4kZW1pdCgiaW5wdXQiLGIpKX19fX0sZnVuY3Rpb24oaCxjLGEpe2MuYT1mdW5jdGlvbihkLGUsbCl7cmV0dXJuIGU9ZS5zb3J0KGZ1bmN0aW9uKGIsZil7cmV0dXJuIGIubGVuZ3RoLWYubGVuZ3RofSksZnVuY3Rpb24oYixmKXtmb3IodmFyIGc9ISgyPGFyZ3VtZW50cy5sZW5ndGgmJnZvaWQgMCE9PWFyZ3VtZW50c1syXSl8fGFyZ3VtZW50c1syXSxtPTA7bTxlLmxlbmd0aDspe3ZhciBrPWVbbV07bSsrO3ZhciBuPWVbbV07aWYoIShuJiZkKGIsbiwhMCxsKS5sZW5ndGg+ay5sZW5ndGgpKXJldHVybiBkKGIsayxnLGwpfXJldHVybiIifX19LGZ1bmN0aW9uKGgsYyxhKXtjLmE9ZnVuY3Rpb24oZCxlKXt2YXIgbD0hKDI8YXJndW1lbnRzLmxlbmd0aCYmdm9pZCAwIT09YXJndW1lbnRzWzJdKXx8YXJndW1lbnRzWzJdLGI9CmFyZ3VtZW50c1szXTtkPWR8fCIiO2U9ZXx8IiI7Zm9yKHZhciBmPTAsZz0wLG09IiI7ZjxlLmxlbmd0aCYmZzxkLmxlbmd0aDspe3ZhciBrPWVbZl0sbj1iW2tdLHA9ZFtnXTtuJiYhbi5lc2NhcGU\/KG4ucGF0dGVybi50ZXN0KHApJiYobSs9bi50cmFuc2Zvcm0\/bi50cmFuc2Zvcm0ocCk6cCxmKyspLGcrKyk6KG4mJm4uZXNjYXBlJiYoZisrLGs9ZVtmXSksbCYmKG0rPWspLHA9PT1rJiZnKyssZisrKX1mb3IoZz0iIjtmPGUubGVuZ3RoJiZsOyl7az1lW2ZdO2lmKGJba10pe2c9IiI7YnJlYWt9Zys9aztmKyt9cmV0dXJuIG0rZ319LGZ1bmN0aW9uKGgsYyxhKXtjPWEoOCkoYSg0KSxhKDkpLG51bGwsbnVsbCk7aC5leHBvcnRzPWMuZXhwb3J0c30sZnVuY3Rpb24oaCxjKXtoLmV4cG9ydHM9ZnVuY3Rpb24oYSxkLGUsbCl7dmFyIGIsZj1hPWF8fHt9LGc9dHlwZW9mIGEuZGVmYXVsdDsib2JqZWN0IiE9PWcmJiJmdW5jdGlvbiIhPT1nfHwoYj1hLGY9YS5kZWZhdWx0KTthPSJmdW5jdGlvbiI9PQp0eXBlb2YgZj9mLm9wdGlvbnM6ZjtpZihkJiYoYS5yZW5kZXI9ZC5yZW5kZXIsYS5zdGF0aWNSZW5kZXJGbnM9ZC5zdGF0aWNSZW5kZXJGbnMpLGUmJihhLl9zY29wZUlkPWUpLGwpe3ZhciBtPWEuY29tcHV0ZWR8fChhLmNvbXB1dGVkPXt9KTtPYmplY3Qua2V5cyhsKS5mb3JFYWNoKGZ1bmN0aW9uKGspe3ZhciBuPWxba107bVtrXT1mdW5jdGlvbigpe3JldHVybiBufX0pfXJldHVybntlc01vZHVsZTpiLGV4cG9ydHM6ZixvcHRpb25zOmF9fX0sZnVuY3Rpb24oaCxjKXtoLmV4cG9ydHM9e3JlbmRlcjpmdW5jdGlvbigpe3ZhciBhPXRoaXMuJGNyZWF0ZUVsZW1lbnQ7cmV0dXJuKHRoaXMuX3NlbGYuX2N8fGEpKCJpbnB1dCIse2RpcmVjdGl2ZXM6W3tuYW1lOiJtYXNrIixyYXdOYW1lOiJ2LW1hc2siLHZhbHVlOnRoaXMuY29uZmlnLGV4cHJlc3Npb246ImNvbmZpZyJ9XSxhdHRyczp7dHlwZToidGV4dCJ9LGRvbVByb3BzOnt2YWx1ZTp0aGlzLmRpc3BsYXl9LG9uOntpbnB1dDp0aGlzLm9uSW5wdXR9fSl9LApzdGF0aWNSZW5kZXJGbnM6W119fSxmdW5jdGlvbihoLGMsYSl7aC5leHBvcnRzPWEoMyl9XSl9KTsKLyoqIC9tL2pzL2ZpbmFuY2VfbXVsdGlzdGVwLmpzICoqLwp2YXIgX19fZDJjX2ZpbmFuY2VtdWx0aXN0ZXBqc19jX29uPSIyMDI2LTA2LTE5IDA5OjMwOjAzIjsndXNlIHN0cmljdCc7dmFyICRqc2NvbXA9JGpzY29tcHx8e307JGpzY29tcC5zY29wZT17fTskanNjb21wLkFTU1VNRV9FUzU9ITE7JGpzY29tcC5BU1NVTUVfTk9fTkFUSVZFX01BUD0hMTskanNjb21wLkFTU1VNRV9OT19OQVRJVkVfU0VUPSExOyRqc2NvbXAuU0lNUExFX0ZST1VORF9QT0xZRklMTD0hMTskanNjb21wLklTT0xBVEVfUE9MWUZJTExTPSExOyRqc2NvbXAuRk9SQ0VfUE9MWUZJTExfUFJPTUlTRT0hMTskanNjb21wLkZPUkNFX1BPTFlGSUxMX1BST01JU0VfV0hFTl9OT19VTkhBTkRMRURfUkVKRUNUSU9OPSExOyRqc2NvbXAuZGVmaW5lUHJvcGVydHk9JGpzY29tcC5BU1NVTUVfRVM1fHwiZnVuY3Rpb24iPT10eXBlb2YgT2JqZWN0LmRlZmluZVByb3BlcnRpZXM\/T2JqZWN0LmRlZmluZVByb3BlcnR5OmZ1bmN0aW9uKGIsaCxtKXtpZihiPT1BcnJheS5wcm90b3R5cGV8fGI9PU9iamVjdC5wcm90b3R5cGUpcmV0dXJuIGI7YltoXT1tLnZhbHVlO3JldHVybiBifTsKJGpzY29tcC5nZXRHbG9iYWw9ZnVuY3Rpb24oYil7Yj1bIm9iamVjdCI9PXR5cGVvZiBnbG9iYWxUaGlzJiZnbG9iYWxUaGlzLGIsIm9iamVjdCI9PXR5cGVvZiB3aW5kb3cmJndpbmRvdywib2JqZWN0Ij09dHlwZW9mIHNlbGYmJnNlbGYsIm9iamVjdCI9PXR5cGVvZiBnbG9iYWwmJmdsb2JhbF07Zm9yKHZhciBoPTA7aDxiLmxlbmd0aDsrK2gpe3ZhciBtPWJbaF07aWYobSYmbS5NYXRoPT1NYXRoKXJldHVybiBtfXRocm93IEVycm9yKCJDYW5ub3QgZmluZCBnbG9iYWwgb2JqZWN0Iik7fTskanNjb21wLmdsb2JhbD0kanNjb21wLmdldEdsb2JhbCh0aGlzKTskanNjb21wLklTX1NZTUJPTF9OQVRJVkU9ImZ1bmN0aW9uIj09PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT09dHlwZW9mIFN5bWJvbCgieCIpOyRqc2NvbXAuVFJVU1RfRVM2X1BPTFlGSUxMUz0hJGpzY29tcC5JU09MQVRFX1BPTFlGSUxMU3x8JGpzY29tcC5JU19TWU1CT0xfTkFUSVZFOyRqc2NvbXAucG9seWZpbGxzPXt9OwokanNjb21wLnByb3BlcnR5VG9Qb2x5ZmlsbFN5bWJvbD17fTskanNjb21wLlBPTFlGSUxMX1BSRUZJWD0iJGpzY3AkIjt2YXIgJGpzY29tcCRsb29rdXBQb2x5ZmlsbGVkVmFsdWU9ZnVuY3Rpb24oYixoKXt2YXIgbT0kanNjb21wLnByb3BlcnR5VG9Qb2x5ZmlsbFN5bWJvbFtoXTtpZihudWxsPT1tKXJldHVybiBiW2hdO209YlttXTtyZXR1cm4gdm9pZCAwIT09bT9tOmJbaF19OyRqc2NvbXAucG9seWZpbGw9ZnVuY3Rpb24oYixoLG0sbil7aCYmKCRqc2NvbXAuSVNPTEFURV9QT0xZRklMTFM\/JGpzY29tcC5wb2x5ZmlsbElzb2xhdGVkKGIsaCxtLG4pOiRqc2NvbXAucG9seWZpbGxVbmlzb2xhdGVkKGIsaCxtLG4pKX07CiRqc2NvbXAucG9seWZpbGxVbmlzb2xhdGVkPWZ1bmN0aW9uKGIsaCxtLG4pe209JGpzY29tcC5nbG9iYWw7Yj1iLnNwbGl0KCIuIik7Zm9yKG49MDtuPGIubGVuZ3RoLTE7bisrKXt2YXIgcj1iW25dO2lmKCEociBpbiBtKSlyZXR1cm47bT1tW3JdfWI9YltiLmxlbmd0aC0xXTtuPW1bYl07aD1oKG4pO2ghPW4mJm51bGwhPWgmJiRqc2NvbXAuZGVmaW5lUHJvcGVydHkobSxiLHtjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6aH0pfTsKJGpzY29tcC5wb2x5ZmlsbElzb2xhdGVkPWZ1bmN0aW9uKGIsaCxtLG4pe3ZhciByPWIuc3BsaXQoIi4iKTtiPTE9PT1yLmxlbmd0aDtuPXJbMF07bj0hYiYmbiBpbiAkanNjb21wLnBvbHlmaWxscz8kanNjb21wLnBvbHlmaWxsczokanNjb21wLmdsb2JhbDtmb3IodmFyIHY9MDt2PHIubGVuZ3RoLTE7disrKXt2YXIgeT1yW3ZdO2lmKCEoeSBpbiBuKSlyZXR1cm47bj1uW3ldfXI9cltyLmxlbmd0aC0xXTttPSRqc2NvbXAuSVNfU1lNQk9MX05BVElWRSYmImVzNiI9PT1tP25bcl06bnVsbDtoPWgobSk7bnVsbCE9aCYmKGI\/JGpzY29tcC5kZWZpbmVQcm9wZXJ0eSgkanNjb21wLnBvbHlmaWxscyxyLHtjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6aH0pOmghPT1tJiYodm9pZCAwPT09JGpzY29tcC5wcm9wZXJ0eVRvUG9seWZpbGxTeW1ib2xbcl0mJihtPTFFOSpNYXRoLnJhbmRvbSgpPj4+MCwkanNjb21wLnByb3BlcnR5VG9Qb2x5ZmlsbFN5bWJvbFtyXT0kanNjb21wLklTX1NZTUJPTF9OQVRJVkU\/CiRqc2NvbXAuZ2xvYmFsLlN5bWJvbChyKTokanNjb21wLlBPTFlGSUxMX1BSRUZJWCttKyIkIityKSwkanNjb21wLmRlZmluZVByb3BlcnR5KG4sJGpzY29tcC5wcm9wZXJ0eVRvUG9seWZpbGxTeW1ib2xbcl0se2NvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpofSkpKX07JGpzY29tcC51bmRlcnNjb3JlUHJvdG9DYW5CZVNldD1mdW5jdGlvbigpe3ZhciBiPXthOiEwfSxoPXt9O3RyeXtyZXR1cm4gaC5fX3Byb3RvX189YixoLmF9Y2F0Y2gobSl7fXJldHVybiExfTsKJGpzY29tcC5zZXRQcm90b3R5cGVPZj0kanNjb21wLlRSVVNUX0VTNl9QT0xZRklMTFMmJiJmdW5jdGlvbiI9PXR5cGVvZiBPYmplY3Quc2V0UHJvdG90eXBlT2Y\/T2JqZWN0LnNldFByb3RvdHlwZU9mOiRqc2NvbXAudW5kZXJzY29yZVByb3RvQ2FuQmVTZXQoKT9mdW5jdGlvbihiLGgpe2IuX19wcm90b19fPWg7aWYoYi5fX3Byb3RvX18hPT1oKXRocm93IG5ldyBUeXBlRXJyb3IoYisiIGlzIG5vdCBleHRlbnNpYmxlIik7cmV0dXJuIGJ9Om51bGw7JGpzY29tcC5hcnJheUl0ZXJhdG9ySW1wbD1mdW5jdGlvbihiKXt2YXIgaD0wO3JldHVybiBmdW5jdGlvbigpe3JldHVybiBoPGIubGVuZ3RoP3tkb25lOiExLHZhbHVlOmJbaCsrXX06e2RvbmU6ITB9fX07JGpzY29tcC5hcnJheUl0ZXJhdG9yPWZ1bmN0aW9uKGIpe3JldHVybntuZXh0OiRqc2NvbXAuYXJyYXlJdGVyYXRvckltcGwoYil9fTsKJGpzY29tcC5tYWtlSXRlcmF0b3I9ZnVuY3Rpb24oYil7dmFyIGg9InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJlN5bWJvbC5pdGVyYXRvciYmYltTeW1ib2wuaXRlcmF0b3JdO3JldHVybiBoP2guY2FsbChiKTokanNjb21wLmFycmF5SXRlcmF0b3IoYil9OyRqc2NvbXAuZ2VuZXJhdG9yPXt9OyRqc2NvbXAuZ2VuZXJhdG9yLmVuc3VyZUl0ZXJhdG9yUmVzdWx0SXNPYmplY3RfPWZ1bmN0aW9uKGIpe2lmKCEoYiBpbnN0YW5jZW9mIE9iamVjdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiSXRlcmF0b3IgcmVzdWx0ICIrYisiIGlzIG5vdCBhbiBvYmplY3QiKTt9OwokanNjb21wLmdlbmVyYXRvci5Db250ZXh0PWZ1bmN0aW9uKCl7dGhpcy5pc1J1bm5pbmdfPSExO3RoaXMueWllbGRBbGxJdGVyYXRvcl89bnVsbDt0aGlzLnlpZWxkUmVzdWx0PXZvaWQgMDt0aGlzLm5leHRBZGRyZXNzPTE7dGhpcy5maW5hbGx5QWRkcmVzc189dGhpcy5jYXRjaEFkZHJlc3NfPTA7dGhpcy5maW5hbGx5Q29udGV4dHNfPXRoaXMuYWJydXB0Q29tcGxldGlvbl89bnVsbH07JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUuc3RhcnRfPWZ1bmN0aW9uKCl7aWYodGhpcy5pc1J1bm5pbmdfKXRocm93IG5ldyBUeXBlRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IHJ1bm5pbmciKTt0aGlzLmlzUnVubmluZ189ITB9OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLnN0b3BfPWZ1bmN0aW9uKCl7dGhpcy5pc1J1bm5pbmdfPSExfTsKJGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUuanVtcFRvRXJyb3JIYW5kbGVyXz1mdW5jdGlvbigpe3RoaXMubmV4dEFkZHJlc3M9dGhpcy5jYXRjaEFkZHJlc3NffHx0aGlzLmZpbmFsbHlBZGRyZXNzX307JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUubmV4dF89ZnVuY3Rpb24oYil7dGhpcy55aWVsZFJlc3VsdD1ifTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS50aHJvd189ZnVuY3Rpb24oYil7dGhpcy5hYnJ1cHRDb21wbGV0aW9uXz17ZXhjZXB0aW9uOmIsaXNFeGNlcHRpb246ITB9O3RoaXMuanVtcFRvRXJyb3JIYW5kbGVyXygpfTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5yZXR1cm49ZnVuY3Rpb24oYil7dGhpcy5hYnJ1cHRDb21wbGV0aW9uXz17cmV0dXJuOmJ9O3RoaXMubmV4dEFkZHJlc3M9dGhpcy5maW5hbGx5QWRkcmVzc199OwokanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5qdW1wVGhyb3VnaEZpbmFsbHlCbG9ja3M9ZnVuY3Rpb24oYil7dGhpcy5hYnJ1cHRDb21wbGV0aW9uXz17anVtcFRvOmJ9O3RoaXMubmV4dEFkZHJlc3M9dGhpcy5maW5hbGx5QWRkcmVzc199OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLnlpZWxkPWZ1bmN0aW9uKGIsaCl7dGhpcy5uZXh0QWRkcmVzcz1oO3JldHVybnt2YWx1ZTpifX07JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUueWllbGRBbGw9ZnVuY3Rpb24oYixoKXtiPSRqc2NvbXAubWFrZUl0ZXJhdG9yKGIpO3ZhciBtPWIubmV4dCgpOyRqc2NvbXAuZ2VuZXJhdG9yLmVuc3VyZUl0ZXJhdG9yUmVzdWx0SXNPYmplY3RfKG0pO2lmKG0uZG9uZSl0aGlzLnlpZWxkUmVzdWx0PW0udmFsdWUsdGhpcy5uZXh0QWRkcmVzcz1oO2Vsc2UgcmV0dXJuIHRoaXMueWllbGRBbGxJdGVyYXRvcl89Yix0aGlzLnlpZWxkKG0udmFsdWUsaCl9OwokanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5qdW1wVG89ZnVuY3Rpb24oYil7dGhpcy5uZXh0QWRkcmVzcz1ifTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5qdW1wVG9FbmQ9ZnVuY3Rpb24oKXt0aGlzLm5leHRBZGRyZXNzPTB9OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLnNldENhdGNoRmluYWxseUJsb2Nrcz1mdW5jdGlvbihiLGgpe3RoaXMuY2F0Y2hBZGRyZXNzXz1iO3ZvaWQgMCE9aCYmKHRoaXMuZmluYWxseUFkZHJlc3NfPWgpfTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5zZXRGaW5hbGx5QmxvY2s9ZnVuY3Rpb24oYil7dGhpcy5jYXRjaEFkZHJlc3NfPTA7dGhpcy5maW5hbGx5QWRkcmVzc189Ynx8MH07JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUubGVhdmVUcnlCbG9jaz1mdW5jdGlvbihiLGgpe3RoaXMubmV4dEFkZHJlc3M9Yjt0aGlzLmNhdGNoQWRkcmVzc189aHx8MH07CiRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLmVudGVyQ2F0Y2hCbG9jaz1mdW5jdGlvbihiKXt0aGlzLmNhdGNoQWRkcmVzc189Ynx8MDtiPXRoaXMuYWJydXB0Q29tcGxldGlvbl8uZXhjZXB0aW9uO3RoaXMuYWJydXB0Q29tcGxldGlvbl89bnVsbDtyZXR1cm4gYn07JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUuZW50ZXJGaW5hbGx5QmxvY2s9ZnVuY3Rpb24oYixoLG0pe20\/dGhpcy5maW5hbGx5Q29udGV4dHNfW21dPXRoaXMuYWJydXB0Q29tcGxldGlvbl86dGhpcy5maW5hbGx5Q29udGV4dHNfPVt0aGlzLmFicnVwdENvbXBsZXRpb25fXTt0aGlzLmNhdGNoQWRkcmVzc189Ynx8MDt0aGlzLmZpbmFsbHlBZGRyZXNzXz1ofHwwfTsKJGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUubGVhdmVGaW5hbGx5QmxvY2s9ZnVuY3Rpb24oYixoKXtoPXRoaXMuZmluYWxseUNvbnRleHRzXy5zcGxpY2UoaHx8MClbMF07aWYoaD10aGlzLmFicnVwdENvbXBsZXRpb25fPXRoaXMuYWJydXB0Q29tcGxldGlvbl98fGgpe2lmKGguaXNFeGNlcHRpb24pcmV0dXJuIHRoaXMuanVtcFRvRXJyb3JIYW5kbGVyXygpO3ZvaWQgMCE9aC5qdW1wVG8mJnRoaXMuZmluYWxseUFkZHJlc3NfPGguanVtcFRvPyh0aGlzLm5leHRBZGRyZXNzPWguanVtcFRvLHRoaXMuYWJydXB0Q29tcGxldGlvbl89bnVsbCk6dGhpcy5uZXh0QWRkcmVzcz10aGlzLmZpbmFsbHlBZGRyZXNzX31lbHNlIHRoaXMubmV4dEFkZHJlc3M9Yn07JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUuZm9ySW49ZnVuY3Rpb24oYil7cmV0dXJuIG5ldyAkanNjb21wLmdlbmVyYXRvci5Db250ZXh0LlByb3BlcnR5SXRlcmF0b3IoYil9OwokanNjb21wLmdlbmVyYXRvci5Db250ZXh0LlByb3BlcnR5SXRlcmF0b3I9ZnVuY3Rpb24oYil7dGhpcy5vYmplY3RfPWI7dGhpcy5wcm9wZXJ0aWVzXz1bXTtmb3IodmFyIGggaW4gYil0aGlzLnByb3BlcnRpZXNfLnB1c2goaCk7dGhpcy5wcm9wZXJ0aWVzXy5yZXZlcnNlKCl9OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQuUHJvcGVydHlJdGVyYXRvci5wcm90b3R5cGUuZ2V0TmV4dD1mdW5jdGlvbigpe2Zvcig7MDx0aGlzLnByb3BlcnRpZXNfLmxlbmd0aDspe3ZhciBiPXRoaXMucHJvcGVydGllc18ucG9wKCk7aWYoYiBpbiB0aGlzLm9iamVjdF8pcmV0dXJuIGJ9cmV0dXJuIG51bGx9OyRqc2NvbXAuZ2VuZXJhdG9yLkVuZ2luZV89ZnVuY3Rpb24oYil7dGhpcy5jb250ZXh0Xz1uZXcgJGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dDt0aGlzLnByb2dyYW1fPWJ9OwokanNjb21wLmdlbmVyYXRvci5FbmdpbmVfLnByb3RvdHlwZS5uZXh0Xz1mdW5jdGlvbihiKXt0aGlzLmNvbnRleHRfLnN0YXJ0XygpO2lmKHRoaXMuY29udGV4dF8ueWllbGRBbGxJdGVyYXRvcl8pcmV0dXJuIHRoaXMueWllbGRBbGxTdGVwXyh0aGlzLmNvbnRleHRfLnlpZWxkQWxsSXRlcmF0b3JfLm5leHQsYix0aGlzLmNvbnRleHRfLm5leHRfKTt0aGlzLmNvbnRleHRfLm5leHRfKGIpO3JldHVybiB0aGlzLm5leHRTdGVwXygpfTsKJGpzY29tcC5nZW5lcmF0b3IuRW5naW5lXy5wcm90b3R5cGUucmV0dXJuXz1mdW5jdGlvbihiKXt0aGlzLmNvbnRleHRfLnN0YXJ0XygpO3ZhciBoPXRoaXMuY29udGV4dF8ueWllbGRBbGxJdGVyYXRvcl87aWYoaClyZXR1cm4gdGhpcy55aWVsZEFsbFN0ZXBfKCJyZXR1cm4iaW4gaD9oWyJyZXR1cm4iXTpmdW5jdGlvbihtKXtyZXR1cm57dmFsdWU6bSxkb25lOiEwfX0sYix0aGlzLmNvbnRleHRfLnJldHVybik7dGhpcy5jb250ZXh0Xy5yZXR1cm4oYik7cmV0dXJuIHRoaXMubmV4dFN0ZXBfKCl9OwokanNjb21wLmdlbmVyYXRvci5FbmdpbmVfLnByb3RvdHlwZS50aHJvd189ZnVuY3Rpb24oYil7dGhpcy5jb250ZXh0Xy5zdGFydF8oKTtpZih0aGlzLmNvbnRleHRfLnlpZWxkQWxsSXRlcmF0b3JfKXJldHVybiB0aGlzLnlpZWxkQWxsU3RlcF8odGhpcy5jb250ZXh0Xy55aWVsZEFsbEl0ZXJhdG9yX1sidGhyb3ciXSxiLHRoaXMuY29udGV4dF8ubmV4dF8pO3RoaXMuY29udGV4dF8udGhyb3dfKGIpO3JldHVybiB0aGlzLm5leHRTdGVwXygpfTsKJGpzY29tcC5nZW5lcmF0b3IuRW5naW5lXy5wcm90b3R5cGUueWllbGRBbGxTdGVwXz1mdW5jdGlvbihiLGgsbSl7dHJ5e3ZhciBuPWIuY2FsbCh0aGlzLmNvbnRleHRfLnlpZWxkQWxsSXRlcmF0b3JfLGgpOyRqc2NvbXAuZ2VuZXJhdG9yLmVuc3VyZUl0ZXJhdG9yUmVzdWx0SXNPYmplY3RfKG4pO2lmKCFuLmRvbmUpcmV0dXJuIHRoaXMuY29udGV4dF8uc3RvcF8oKSxuO3ZhciByPW4udmFsdWV9Y2F0Y2godil7cmV0dXJuIHRoaXMuY29udGV4dF8ueWllbGRBbGxJdGVyYXRvcl89bnVsbCx0aGlzLmNvbnRleHRfLnRocm93Xyh2KSx0aGlzLm5leHRTdGVwXygpfXRoaXMuY29udGV4dF8ueWllbGRBbGxJdGVyYXRvcl89bnVsbDttLmNhbGwodGhpcy5jb250ZXh0XyxyKTtyZXR1cm4gdGhpcy5uZXh0U3RlcF8oKX07CiRqc2NvbXAuZ2VuZXJhdG9yLkVuZ2luZV8ucHJvdG90eXBlLm5leHRTdGVwXz1mdW5jdGlvbigpe2Zvcig7dGhpcy5jb250ZXh0Xy5uZXh0QWRkcmVzczspdHJ5e3ZhciBiPXRoaXMucHJvZ3JhbV8odGhpcy5jb250ZXh0Xyk7aWYoYilyZXR1cm4gdGhpcy5jb250ZXh0Xy5zdG9wXygpLHt2YWx1ZTpiLnZhbHVlLGRvbmU6ITF9fWNhdGNoKGgpe3RoaXMuY29udGV4dF8ueWllbGRSZXN1bHQ9dm9pZCAwLHRoaXMuY29udGV4dF8udGhyb3dfKGgpfXRoaXMuY29udGV4dF8uc3RvcF8oKTtpZih0aGlzLmNvbnRleHRfLmFicnVwdENvbXBsZXRpb25fKXtiPXRoaXMuY29udGV4dF8uYWJydXB0Q29tcGxldGlvbl87dGhpcy5jb250ZXh0Xy5hYnJ1cHRDb21wbGV0aW9uXz1udWxsO2lmKGIuaXNFeGNlcHRpb24pdGhyb3cgYi5leGNlcHRpb247cmV0dXJue3ZhbHVlOmIucmV0dXJuLGRvbmU6ITB9fXJldHVybnt2YWx1ZTp2b2lkIDAsZG9uZTohMH19OwokanNjb21wLmdlbmVyYXRvci5HZW5lcmF0b3JfPWZ1bmN0aW9uKGIpe3RoaXMubmV4dD1mdW5jdGlvbihoKXtyZXR1cm4gYi5uZXh0XyhoKX07dGhpcy50aHJvdz1mdW5jdGlvbihoKXtyZXR1cm4gYi50aHJvd18oaCl9O3RoaXMucmV0dXJuPWZ1bmN0aW9uKGgpe3JldHVybiBiLnJldHVybl8oaCl9O3RoaXNbU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfX07JGpzY29tcC5nZW5lcmF0b3IuY3JlYXRlR2VuZXJhdG9yPWZ1bmN0aW9uKGIsaCl7aD1uZXcgJGpzY29tcC5nZW5lcmF0b3IuR2VuZXJhdG9yXyhuZXcgJGpzY29tcC5nZW5lcmF0b3IuRW5naW5lXyhoKSk7JGpzY29tcC5zZXRQcm90b3R5cGVPZiYmYi5wcm90b3R5cGUmJiRqc2NvbXAuc2V0UHJvdG90eXBlT2YoaCxiLnByb3RvdHlwZSk7cmV0dXJuIGh9OwokanNjb21wLmFzeW5jRXhlY3V0ZVByb21pc2VHZW5lcmF0b3I9ZnVuY3Rpb24oYil7ZnVuY3Rpb24gaChuKXtyZXR1cm4gYi5uZXh0KG4pfWZ1bmN0aW9uIG0obil7cmV0dXJuIGIudGhyb3cobil9cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKG4scil7ZnVuY3Rpb24gdih5KXt5LmRvbmU\/bih5LnZhbHVlKTpQcm9taXNlLnJlc29sdmUoeS52YWx1ZSkudGhlbihoLG0pLnRoZW4odixyKX12KGIubmV4dCgpKX0pfTskanNjb21wLmFzeW5jRXhlY3V0ZVByb21pc2VHZW5lcmF0b3JGdW5jdGlvbj1mdW5jdGlvbihiKXtyZXR1cm4gJGpzY29tcC5hc3luY0V4ZWN1dGVQcm9taXNlR2VuZXJhdG9yKGIoKSl9OyRqc2NvbXAuYXN5bmNFeGVjdXRlUHJvbWlzZUdlbmVyYXRvclByb2dyYW09ZnVuY3Rpb24oYil7cmV0dXJuICRqc2NvbXAuYXN5bmNFeGVjdXRlUHJvbWlzZUdlbmVyYXRvcihuZXcgJGpzY29tcC5nZW5lcmF0b3IuR2VuZXJhdG9yXyhuZXcgJGpzY29tcC5nZW5lcmF0b3IuRW5naW5lXyhiKSkpfTsKZnVuY3Rpb24gaW5pdGlhbGl6ZUZpbmFuY2VNdWx0aVN0ZXAoYil7ZnVuY3Rpb24gaChjKXtzd2l0Y2goYyl7Y2FzZSAiRW1haWwgcHJvdmlkZWQiOmNhc2UgIlBob25lIHByb3ZpZGVkIjpPfHwoJCgiI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0iLGIpLnRyaWdnZXIoInBvcHVwaXplci5zdWJtaXR0ZWQiKSxPPSEwKX0iZnVuY3Rpb24iPT09dHlwZW9mIGdhVHJhY2smJmdhVHJhY2soIl90cmFja0V2ZW50IiwiVXNlZC1TUlAtRmluYW5jZS1Qb3B1cCIsYyx3aW5kb3cubG9jYXRpb24uaHJlZiwxKX1mdW5jdGlvbiBtKGMpeyQuYWpheCh7dXJsOiIvIit3KyIvYWpheC9nZXRCYW5uZXJTZWFyY2hCYXJNYWtlcz93c3dpZHRoPTAiLGRhdGFUeXBlOiJKU09OIixkYXRhOnt0eXBlOmMudG9Mb3dlckNhc2UoKX0sc3VjY2VzczpmdW5jdGlvbihkKXskKCIjZmluYW5jZU11bHRpc3RlcE1ha2UiLGIpLmh0bWwoJCgiI2ZpbmFuY2VNdWx0aXN0ZXBNYWtlIG9wdGlvbjpmaXJzdCIsCmIpWzBdLm91dGVySFRNTCk7JCgiI2ZpbmFuY2VNdWx0aXN0ZXBNb2RlbCIsYikuaHRtbCgkKCIjZmluYW5jZU11bHRpc3RlcE1vZGVsIG9wdGlvbjpmaXJzdCIsYilbMF0ub3V0ZXJIVE1MKTskKCIjZmluYW5jZU11bHRpc3RlcFRyaW0iLGIpLmh0bWwoJCgiI2ZpbmFuY2VNdWx0aXN0ZXBUcmltIG9wdGlvbjpmaXJzdCIsYilbMF0ub3V0ZXJIVE1MKTskLmVhY2goZCxmdW5jdGlvbihlLGYpeyQoIiNmaW5hbmNlTXVsdGlzdGVwTWFrZSIsYikuYXBwZW5kKCc8b3B0aW9uIHZhbHVlPSInK2YubWFrZSsnIj4nK2YudGl0bGUyKyI8L29wdGlvbj4iKX0pfX0pfWZ1bmN0aW9uIG4oYyxkKXskLmFqYXgoe3VybDoiLyIrdysiL2FqYXgvZ2V0QmFubmVyU2VhcmNoQmFyTW9kZWxzP3dzd2lkdGg9MCIsZGF0YVR5cGU6IkpTT04iLGRhdGE6e21ha2U6YnRvYShkKSx0eXBlOmMudG9Mb3dlckNhc2UoKX0sc3VjY2VzczpmdW5jdGlvbihlKXskKCIjZmluYW5jZU11bHRpc3RlcE1vZGVsIiwKYikuaHRtbCgkKCIjZmluYW5jZU11bHRpc3RlcE1vZGVsIG9wdGlvbjpmaXJzdCIsYilbMF0ub3V0ZXJIVE1MKTskKCIjZmluYW5jZU11bHRpc3RlcFRyaW0iLGIpLmh0bWwoJCgiI2ZpbmFuY2VNdWx0aXN0ZXBUcmltIG9wdGlvbjpmaXJzdCIsYilbMF0ub3V0ZXJIVE1MKTskLmVhY2goZSxmdW5jdGlvbihmLGcpeyQoIiNmaW5hbmNlTXVsdGlzdGVwTW9kZWwiLGIpLmFwcGVuZCgnPG9wdGlvbiBkYXRhLW1vZGVsPSInK2cubW9kZWxOYW1lKyciIGRhdGEteWVhcj0iJytnLnllYXIrJyIgdmFsdWU9IicrZy50aXRsZTIrJyI+JytnLnRpdGxlMisiPC9vcHRpb24+Iil9KX19KX1mdW5jdGlvbiByKGMsZCxlKXskLmFqYXgoe3VybDoiLyIrdysiL2FqYXgvZ2V0TmV3VHJpbXM\/d3N3aWR0aD0wIixkYXRhVHlwZToiSlNPTiIsZGF0YTp7bWFrZTpjLG1vZGVsOmQseWVhcjplfSxzdWNjZXNzOmZ1bmN0aW9uKGYpeyQoIiNmaW5hbmNlTXVsdGlzdGVwVHJpbSIsCmIpLmh0bWwoJCgiI2ZpbmFuY2VNdWx0aXN0ZXBUcmltIG9wdGlvbjpmaXJzdCIsYilbMF0ub3V0ZXJIVE1MKTskLmVhY2goZixmdW5jdGlvbihnLGwpeyQoIiNmaW5hbmNlTXVsdGlzdGVwVHJpbSIsYikuYXBwZW5kKCc8b3B0aW9uIGRhdGEtcHJpY2U9IicrbC5wcmljZSsnIiBkYXRhLXN0eWxlaWQ9IicrbC5zdHlsZWlkKyciIHZhbHVlPSInK2wudHJpbSsnIj4nK2wudHJpbSsiPC9vcHRpb24+Iil9KX19KX1mdW5jdGlvbiB2KGMsZCl7JC5hamF4KHt1cmw6Ii8iK3crIi9hamF4L2dldEludmVudG9yeVRyaW1zP3dzd2lkdGg9MCIsZGF0YVR5cGU6IkpTT04iLGRhdGE6e21ha2U6Yyxtb2RlbDpkfSxzdWNjZXNzOmZ1bmN0aW9uKGUpeyQoIiNmaW5hbmNlTXVsdGlzdGVwVHJpbSIsYikuaHRtbCgkKCIjZmluYW5jZU11bHRpc3RlcFRyaW0gb3B0aW9uOmZpcnN0IixiKVswXS5vdXRlckhUTUwpOyQuZWFjaChlLGZ1bmN0aW9uKGYsZyl7JCgiI2ZpbmFuY2VNdWx0aXN0ZXBUcmltIiwKYikuYXBwZW5kKCc8b3B0aW9uIGRhdGEtcHJpY2U9IicrZy5vcmlnaW5hbHByaWNlKyciIGRhdGEtdmVoaWNsZWlkPSInK2cudmVoaWNsZWlkKyciIGRhdGEteWVhcj0iJytnLnllYXIrJyIgZGF0YS1pc25ldz0iJytnLmlzbmV3KyciIGRhdGEtaXNkZW1vPSInK2cuZGVtbysnIiBkYXRhLXN0b2NrbnVtYmVyPSInK2cuc3RvY2tudW1iZXIrJyIgZGF0YS1taWxlYWdlPSInK2cubWlsZWFnZSsnIiBkYXRhLXN0eWxlaWQ9IicrZy5zdHlsZWlkKyciIHZhbHVlPSInK2cudHJpbSsnIj4nK2cudGl0bGUrIjwvb3B0aW9uPiIpfSl9fSl9ZnVuY3Rpb24geShjKXskLmFqYXgoe3VybDoiLyIrdysiL2FqYXgvZ2V0VXNlZENhbGN1bGF0b3JIVE1MP3dzd2lkdGg9MCIsZGF0YVR5cGU6IkpTT04iLGRhdGE6e2NhcmlkOmN9LHN1Y2Nlc3M6ZnVuY3Rpb24oZCl7ZC52YWxpZD8oJCgiI2ZpbmFuY2VNdWx0aXN0ZXBVc2VkQ2FsY3VsYXRvciIsYikuaHRtbChkLmh0bWwpLAokKCIjZmluYW5jZU11bHRpc3RlcFVzZWRDYWxjdWxhdG9yIixiKS5maW5kKCIuY2FsYy1mb3JtIikuZmluZCgiLnVzZWRDYWxjdWxhdG9yRG93blBheW1lbnQiKS5hZnRlcigkKCIuZmluYW5jZU11bHRpc3RlcFVzZWRDYWxjdWxhdG9yVHJhZGVJbiIsYikuaHRtbCgpKSxYKCksJCgiI2ZpbmFuY2VNdWx0aXN0ZXBVc2VkQ2FsY3VsYXRvciAucGF5bWVudENhbGN1bGF0b3JUcmFkZUluRmluYWwiKS52YWwoYS5mb3JtZGF0YS50cmFkZUluVmFsdWUpLCQoIiNmaW5hbmNlTXVsdGlzdGVwVXNlZENhbGN1bGF0b3IgLnBheW1lbnRDYWxjdWxhdG9yVHJhZGVJbkZpbmFsIikuYXR0cigibWF4IixhLmZvcm1kYXRhLnRyYWRlSW5WYWx1ZSksJCgiI2ZpbmFuY2VNdWx0aXN0ZXBVc2VkQ2FsY3VsYXRvciIsYikuc2hvdygpKTooYS5mb3JtZGF0YS5ub1BheW1lbnQ9ITAsJCgiI2ZpbmFuY2VNdWx0aXN0ZXBVc2VkQ2FsY3VsYXRvciIsYikuaGlkZSgpLGEubmV4dCghMCkpfX0pfWZ1bmN0aW9uIFgoKXskKCIuZmluYW5jZU11bHRpc3RlcFVzZWRDYWxjdWxhdG9yIC5kb3ducGF5bWVudCIpLm9uKCJibHVyIiwKZnVuY3Rpb24oKXtEKCl9KTskKCIuZmluYW5jZU11bHRpc3RlcFVzZWRDYWxjdWxhdG9yIC5ub09mTW9udGhzIikub24oImNoYW5nZSIsZnVuY3Rpb24oKXt2YXIgYz0kKHRoaXMpLmZpbmQoIm9wdGlvbjpzZWxlY3RlZCIpOyQoIi5maW5hbmNlTXVsdGlzdGVwVXNlZENhbGN1bGF0b3IgLmludGVyZXN0cmF0ZSIpLnZhbChjLmF0dHIoImRhdGEtcmF0ZSIpKTtEKCl9KTskKCIuZmluYW5jZU11bHRpc3RlcFVzZWRDYWxjdWxhdG9yIC5wYXltZW50RnJlcXVlbmN5Iikub24oImNoYW5nZSIsZnVuY3Rpb24oKXtEKCl9KTtEKCl9ZnVuY3Rpb24gRCgpe3ZhciBjPXBhcnNlRmxvYXQoJCgiLmZpbmFuY2VNdWx0aXN0ZXBVc2VkQ2FsY3VsYXRvciAuaW50ZXJlc3RyYXRlIixiKS52YWwoKS5yZXBsYWNlKCIsIiwiLiIpKS50b0ZpeGVkKDIpLzEwMCxkPXBhcnNlRmxvYXQoJCgiLmZpbmFuY2VNdWx0aXN0ZXBVc2VkQ2FsY3VsYXRvciAubm9PZk1vbnRocyIsYikudmFsKCkpLzEyLGU9cGFyc2VGbG9hdCgkKCIuZmluYW5jZU11bHRpc3RlcFVzZWRDYWxjdWxhdG9yIC5sb2FuYW1vdW50IiwKYikudmFsKCkpLnRvRml4ZWQoMik7JCgiLmZpbmFuY2VNdWx0aXN0ZXBVc2VkQ2FsY3VsYXRvciAuZmVlYW1vdW50IixiKS5sZW5ndGgmJihlPXBhcnNlRmxvYXQoZSkrcGFyc2VGbG9hdCgkKCIuZmluYW5jZU11bHRpc3RlcFVzZWRDYWxjdWxhdG9yIC5mZWVhbW91bnQiLGIpLnZhbCgpLnJlcGxhY2UoIiwiLCIiKSkpOzE9PSQoIiN1c2V0YXhlcyIsYikudmFsKCkmJihlKj1wYXJzZUZsb2F0KCQoIiN0YXhlcyIpLnZhbCgpKS50b0ZpeGVkKDIpLzEwMCsxKTswPCQoIi5maW5hbmNlTXVsdGlzdGVwVXNlZENhbGN1bGF0b3IgLmRvd25wYXltZW50IixiKS52YWwoKSYmKGUtPXBhcnNlRmxvYXQoJCgiLmZpbmFuY2VNdWx0aXN0ZXBVc2VkQ2FsY3VsYXRvciAuZG93bnBheW1lbnQiLGIpLnZhbCgpKS50b0ZpeGVkKDIpKTt2YXIgZj0iIixnPTEyO3N3aXRjaCgkKCIuZmluYW5jZU11bHRpc3RlcFVzZWRDYWxjdWxhdG9yIC5wYXltZW50RnJlcXVlbmN5IixiKS52YWwoKSl7Y2FzZSAid2VlayI6Zz0KNTI7Zj0kKCIjd2Vla1RleHQiKS52YWwoKTticmVhaztjYXNlICIyd2Vla3MiOmc9MjY7Zj0kKCIjMndlZWtzVGV4dCIpLnZhbCgpO2JyZWFrO2Nhc2UgIm1vbnRobHkiOmY9JCgiI21vbnRobHlUZXh0IikudmFsKCk7Zz0xMjticmVhaztjYXNlICJiaW1vbnRobHkiOmY9JCgiI2JpbW9udGhseVRleHQiKS52YWwoKSxnPTI0fWQqPWc7MDxjPyhjLz1nLGc9TWF0aC5wb3coYysxLGQpLGUqPWMqZy8oZy0xKSk6ZS89ZDtlPU1hdGgucm91bmQoMTAwKmUpLzEwMDtpc05hTihlKSYmKGU9MCk7JCgiLmZpbmFuY2VNdWx0aXN0ZXBVc2VkQ2FsY3VsYXRvciAub3V0cHV0cHJpY2UiLGIpLnZhbCgiJCIrZSk7JCgiLmZpbmFuY2VNdWx0aXN0ZXBVc2VkQ2FsY3VsYXRvciAub3V0cHV0cHJpY2UtdHh0IixiKS5odG1sKCIkIitlKTtmPSQoIiNlc3RpbWRhdGVkUGF5bWVudFRleHQiLGIpLnZhbCgpLnJlcGxhY2UoIiMjRlJFUVVFTkNZIyMiLGYpOyQoIi5maW5hbmNlTXVsdGlzdGVwVXNlZENhbGN1bGF0b3IgLmVzdGltYXRlZFRleHQiLApiKS5odG1sKCI8c3Ryb25nPiIrZisiPC9zdHJvbmc+Iik7Zj0kKCJib2R5IikuaGFzQ2xhc3MoIkZSRU5DSCIpPyJGaW5hbmNlbWVudCI6IkZpbmFuY2luZyI7YS5mb3JtZGF0YS5wYXltZW50VHlwZT1mO2EuZm9ybWRhdGEucGF5bWVudFR5cGVSZWFsPSJmaW5hbmNpbmciO2EuZm9ybWRhdGEucGF5bWVudFRlcm09JCgiLmZpbmFuY2VNdWx0aXN0ZXBVc2VkQ2FsY3VsYXRvciAubm9PZk1vbnRocyIsYikudmFsKCk7YS5mb3JtZGF0YS5wYXltZW50VmFsdWU9ZTthLmZvcm1kYXRhLnBheW1lbnREb3duUGF5bWVudD0kKCIuZmluYW5jZU11bHRpc3RlcFVzZWRDYWxjdWxhdG9yIC5kb3ducGF5bWVudCIsYikudmFsKCl8fDA7YS5mb3JtZGF0YS5wYXltZW50SW50ZXJ2YWw9JCgiLmZpbmFuY2VNdWx0aXN0ZXBVc2VkQ2FsY3VsYXRvciAucGF5bWVudEZyZXF1ZW5jeSIsYikudmFsKCk7YS5mb3JtZGF0YS5wYXltZW50UmF0ZT0kKCIuZmluYW5jZU11bHRpc3RlcFVzZWRDYWxjdWxhdG9yIC5pbnRlcmVzdHJhdGUiLApiKS52YWwoKTthLmZvcm1kYXRhLnZlaGljbGVJbml0aWFsUHJpY2U9cGFyc2VJbnQoJCgiLmZpbmFuY2VNdWx0aXN0ZXBVc2VkQ2FsY3VsYXRvciAubG9hbmFtb3VudCIsYikudmFsKCkpO2Y9cGFyc2VJbnQoJCgiLmZpbmFuY2VNdWx0aXN0ZXBVc2VkQ2FsY3VsYXRvciAuZmVlYW1vdW50IixiKS52YWwoKS5yZXBsYWNlKCIsIiwiIikpO2EuZm9ybWRhdGEudmVoaWNsZUZpbmFsUHJpY2U9cGFyc2VJbnQoJCgiLmZpbmFuY2VNdWx0aXN0ZXBVc2VkQ2FsY3VsYXRvciAubG9hbmFtb3VudCIsYikudmFsKCkpK2Y7YS5mb3JtZGF0YS5wYXltZW50VG90YWxGZWU9ZjtrLmNoZWNrVmFsaWRpdHkoKX1mdW5jdGlvbiBQKCl7IjEiPT0kKCIjRklOQU5DRV9NVUxUSVNURVBfaXNJbnN0YW50IixiKS52YWwoKSYmKCQoYikuZmluZCgiLmNvbmZpcm1hdGlvblRpdGxlIikuaGlkZSgpLCQoYikuZmluZCgiLmNvbmZpcm1hdGlvblRleHQiKS5zaG93KCksJChiKS5maW5kKCIuY3JlZGl0RGVjaXNpb24iKS5odG1sKCIiKSwKJChiKS5maW5kKCIuY3JlZGl0RGVjaXNpb24iKS5oaWRlKCkpO2lmKF9sb2NhbFN0b3JhZ2VHZXQoInRyYWRlaW5fc3VibWl0X2RhdGEiKSYmIiI9PSQoImlucHV0W25hbWU9ZmluYW5jZVRyYWRlSW5NYWtlXSIpLnZhbCgpKXt2YXIgYz1KU09OLnBhcnNlKF9sb2NhbFN0b3JhZ2VHZXQoInRyYWRlaW5fc3VibWl0X2RhdGEiKSk7JCgiaW5wdXRbbmFtZT1maW5hbmNlVHJhZGVJbk1ha2VdIikudmFsKGMubWFrZSk7JCgiaW5wdXRbbmFtZT1maW5hbmNlVHJhZGVJbk1vZGVsXSIpLnZhbChjLm1vZGVsKTskKCJpbnB1dFtuYW1lPWZpbmFuY2VUcmFkZUluWWVhcl0iKS52YWwoYy55ZWFyKTskKCJpbnB1dFtuYW1lPWZpbmFuY2VUcmFkZUluVHJpbV0iKS52YWwoYy50cmltKTskKCJpbnB1dFtuYW1lPWZpbmFuY2VUcmFkZUluVmFsdWVdIikudmFsKGMudmFsdWUpO19sb2NhbFN0b3JhZ2VHZXQoInRyYWRlaW5fY3VycmVudF92YWx1ZSIpJiYoYz1KU09OLnBhcnNlKF9sb2NhbFN0b3JhZ2VHZXQoInRyYWRlaW5fY3VycmVudF92YWx1ZSIpKSwKJCgiaW5wdXRbbmFtZT1maW5hbmNlVHJhZGVJblZhbHVlXSIpLmF0dHIoImRhdGEtY3VycmVudCIsYy52YWx1ZSkpfWEuc2hvd0Vycm9yPSExO2EucHVzaFBhcnRpYWw9ITE7ay5zZXREZXBhcnRtZW50KCk7ay5zZXRUcmFkZUluKCk7aWYoay51c2VySWQoKSkkLmFqYXgoe3VybDoiLyIrdysiL2FqYXgvZ2V0RmluYW5jZU11bHRpc3RlcFVzZXJJZEFuZERhdGE\/d3N3aWR0aD0wIixkYXRhVHlwZToiSlNPTiIsdHlwZToiUE9TVCIsZGF0YTp7dXNlcklkOmsudXNlcklkKCksZG9tYWluOlEsc2l0ZUlkOiQoIiNzaXRlSUQiKS52YWwoKXx8JCgiI3RvcHNpdGVpZCIpLnZhbCgpLGxhbmc6JCgiI2FjdGl2ZXNpdGVsYW5ndWFnZSIpLnZhbCgpLGVtYWlsSGFuZGxlckpzb25PYmplY3Q6SlNPTi5zdHJpbmdpZnkoSil9LHN1Y2Nlc3M6ZnVuY3Rpb24oZyl7Zy5JRHx8KGcuSUQ9LTEpO2sudXNlcklkKGcuSUQpO2cuZGF0YSYmKGEuZm9ybWRhdGE9SlNPTi5wYXJzZShnLmRhdGEpKTsKIiIhPWVtYWlsSGFuZGxlci51c2VyRmlyc3ROYW1lJiYidW5kZWZpbmVkIiE9ZW1haWxIYW5kbGVyLnVzZXJGaXJzdE5hbWUmJmEuZm9ybWRhdGEuZmlyc3ROYW1lIT1lbWFpbEhhbmRsZXIudXNlckZpcnN0TmFtZSYmKGEuZm9ybWRhdGEuZmlyc3ROYW1lPWVtYWlsSGFuZGxlci51c2VyRmlyc3ROYW1lKTsiIiE9ZW1haWxIYW5kbGVyLnVzZXJMYXN0TmFtZSYmInVuZGVmaW5lZCIhPWVtYWlsSGFuZGxlci51c2VyTGFzdE5hbWUmJmEuZm9ybWRhdGEubGFzdE5hbWUhPWVtYWlsSGFuZGxlci51c2VyTGFzdE5hbWUmJihhLmZvcm1kYXRhLmxhc3ROYW1lPWVtYWlsSGFuZGxlci51c2VyTGFzdE5hbWUpOyIiIT1lbWFpbEhhbmRsZXIudXNlckVtYWlsJiYidW5kZWZpbmVkIiE9ZW1haWxIYW5kbGVyLnVzZXJFbWFpbCYmYS5mb3JtZGF0YS5lbWFpbEFkZHJlc3MhPWVtYWlsSGFuZGxlci51c2VyRW1haWwmJihhLmZvcm1kYXRhLmVtYWlsQWRkcmVzcz1lbWFpbEhhbmRsZXIudXNlckVtYWlsKTsKIiIhPWVtYWlsSGFuZGxlci51c2VyUGhvbmUmJiJ1bmRlZmluZWQiIT1lbWFpbEhhbmRsZXIudXNlclBob25lJiZhLmZvcm1kYXRhLnBob25lTnVtYmVyIT1lbWFpbEhhbmRsZXIudXNlclBob25lJiYoYS5mb3JtZGF0YS5waG9uZU51bWJlcj1lbWFpbEhhbmRsZXIudXNlclBob25lLCQoIiNmaW5hbmNlX211bHRpc3RlcF9mb3JtIixiKS5maW5kKCdpbnB1dFtuYW1lPSJwaG9uZU51bWJlciJdJykudmFsKGEuZm9ybWRhdGEucGhvbmVOdW1iZXIpKTtpZihnLmVtYWlsSGFuZGxlckpzb24pe2xldCBsPUpTT04ucGFyc2UoZy5lbWFpbEhhbmRsZXJKc29uKTtlbWFpbEhhbmRsZXIuc2VuZFRvPWwuc2VuZFRvO2VtYWlsSGFuZGxlci5zZWxlY3RlZFNlbmRUbz1sLnNlbGVjdGVkU2VuZFRvO2VtYWlsSGFuZGxlci5zZW5kVG9BREZGb3JtYXQ9bC5zZW5kVG9BREZGb3JtYXQ7ZW1haWxIYW5kbGVyLnNlbGVjdGVkU2VuZFRvQURGRm9ybWF0PWwuc2VsZWN0ZWRTZW5kVG9BREZGb3JtYXQ7ZW1haWxIYW5kbGVyLmRlYWxlck5hbWU9CmwuZGVhbGVyTmFtZTtlbWFpbEhhbmRsZXIuaGFzU2VsZWN0ZWRNdWx0aUFkZHJlc3M9LTE9PT1bLTEsIi0xIiwiIl0uaW5kZXhPZihhLmZvcm1kYXRhLm11bHRpX2RlYWxlcl9zZW5kVG8pfWlmKCJ1bmRlZmluZWQiIT09dHlwZW9mIGNsaWVudFN0b3JhZ2Upe2xldCBsO2EuZm9ybWRhdGEuZmlyc3ROYW1lPW51bGwhPShsPWsuZ2V0Q2xpZW50U3RvcmFnZURhdGEoImZpcnN0bmFtZSIpKT9sOmEuZm9ybWRhdGEuZmlyc3ROYW1lO2xldCBwO2EuZm9ybWRhdGEubGFzdE5hbWU9bnVsbCE9KHA9ay5nZXRDbGllbnRTdG9yYWdlRGF0YSgibGFzdG5hbWUiKSk\/cDphLmZvcm1kYXRhLmxhc3ROYW1lO2xldCBxO2EuZm9ybWRhdGEuZW1haWxBZGRyZXNzPW51bGwhPShxPWsuZ2V0Q2xpZW50U3RvcmFnZURhdGEoImVtYWlsIikpP3E6YS5mb3JtZGF0YS5lbWFpbEFkZHJlc3M7bGV0IHQ7YS5mb3JtZGF0YS5waG9uZU51bWJlcj1udWxsIT0odD1rLmdldENsaWVudFN0b3JhZ2VEYXRhKCJwaG9uZSIpKT8KdDphLmZvcm1kYXRhLnBob25lTnVtYmVyOyQoIiNmaW5hbmNlX211bHRpc3RlcF9mb3JtIixiKS5maW5kKCdpbnB1dFtuYW1lPSJwaG9uZU51bWJlciJdJykudmFsKGEuZm9ybWRhdGEucGhvbmVOdW1iZXIpfTA9PWEuZm9ybWRhdGEuYWRkcmVzc195ZWFycyYmMD09YS5mb3JtZGF0YS5hZGRyZXNzX21vbnRocyYmKGEuZm9ybWRhdGEuYWRkcmVzcz0iIik7Zy5zdGVwJiYoYS5zdGVwPU51bWJlcihnLnN0ZXApLGEubmV4dFN0ZXA9YS5uZXh0U3RlcERlZmF1bHRWYWx1ZXNbInN0ZXAiK2cuc3RlcF0pOyQoZG9jdW1lbnQpLnRyaWdnZXIoImNyZWRpdC5tdWx0aXN0ZXAuc2hvdyIpOyQoIiNmaW5hbmNlX211bHRpc3RlcF9mb3JtIixiKS5zaG93KCk7ay5zZXRDdXJyZW50TWFrZU1vZGVsWWVhcigpO2sub25TaG93RnVuY3Rpb25Ub1J1bigpO2EuZmlyc3RTdGVwPSExfSxjb21wbGV0ZTpmdW5jdGlvbihnKXtpZighZy5kYXRhKXJldHVybiBrLnVzZXJJZCgtMSksbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oImZpbmFuY2VfbXVsdGlzdGVwLmxpbmVhcl9zdGVwIiksClAoKX19KTtlbHNle2EucHVzaFBhcnRpYWw9ITE7IiIhPWVtYWlsSGFuZGxlci51c2VyRmlyc3ROYW1lJiYidW5kZWZpbmVkIiE9ZW1haWxIYW5kbGVyLnVzZXJGaXJzdE5hbWUmJihhLmZvcm1kYXRhLmZpcnN0TmFtZT1lbWFpbEhhbmRsZXIudXNlckZpcnN0TmFtZSk7IiIhPWVtYWlsSGFuZGxlci51c2VyTGFzdE5hbWUmJiJ1bmRlZmluZWQiIT1lbWFpbEhhbmRsZXIudXNlckxhc3ROYW1lJiYoYS5mb3JtZGF0YS5sYXN0TmFtZT1lbWFpbEhhbmRsZXIudXNlckxhc3ROYW1lKTsiIiE9ZW1haWxIYW5kbGVyLnVzZXJFbWFpbCYmInVuZGVmaW5lZCIhPWVtYWlsSGFuZGxlci51c2VyRW1haWwmJihhLmZvcm1kYXRhLmVtYWlsQWRkcmVzcz1lbWFpbEhhbmRsZXIudXNlckVtYWlsKTsiIiE9ZW1haWxIYW5kbGVyLnVzZXJQaG9uZSYmInVuZGVmaW5lZCIhPWVtYWlsSGFuZGxlci51c2VyUGhvbmUmJihhLmZvcm1kYXRhLnBob25lTnVtYmVyPWVtYWlsSGFuZGxlci51c2VyUGhvbmUsJCgiI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0iLApiKS5maW5kKCdpbnB1dFtuYW1lPSJwaG9uZU51bWJlciJdJykudmFsKGEuZm9ybWRhdGEucGhvbmVOdW1iZXIpKTtpZigidW5kZWZpbmVkIiE9PXR5cGVvZiBjbGllbnRTdG9yYWdlKXt2YXIgZDthLmZvcm1kYXRhLmZpcnN0TmFtZT1udWxsIT0oZD1rLmdldENsaWVudFN0b3JhZ2VEYXRhKCJmaXJzdG5hbWUiKSk\/ZDphLmZvcm1kYXRhLmZpcnN0TmFtZTt2YXIgZTthLmZvcm1kYXRhLmxhc3ROYW1lPW51bGwhPShlPWsuZ2V0Q2xpZW50U3RvcmFnZURhdGEoImxhc3RuYW1lIikpP2U6YS5mb3JtZGF0YS5sYXN0TmFtZTt2YXIgZjthLmZvcm1kYXRhLmVtYWlsQWRkcmVzcz1udWxsIT0oZj1rLmdldENsaWVudFN0b3JhZ2VEYXRhKCJlbWFpbCIpKT9mOmEuZm9ybWRhdGEuZW1haWxBZGRyZXNzO2xldCBnO2EuZm9ybWRhdGEucGhvbmVOdW1iZXI9bnVsbCE9KGc9ay5nZXRDbGllbnRTdG9yYWdlRGF0YSgicGhvbmUiKSk\/ZzphLmZvcm1kYXRhLnBob25lTnVtYmVyOyQoIiNmaW5hbmNlX211bHRpc3RlcF9mb3JtIiwKYikuZmluZCgnaW5wdXRbbmFtZT0icGhvbmVOdW1iZXIiXScpLnZhbChhLmZvcm1kYXRhLnBob25lTnVtYmVyKX1rLmhhc0RlYWxlclNlbGVjdFZhbHVlcygpJiZrLnNldERlYWxlclNlbGVjdEVtYWlsKCk7JCgnI21pbmlmb3JtIFtuYW1lPSJtdWx0aV9kZWFsZXJfc2VuZFRvIl0nKS5sZW5ndGgmJiIiIT0kKCcjbWluaWZvcm0gW25hbWU9Im11bHRpX2RlYWxlcl9zZW5kVG8iXScpLnZhbCgpJiYoYS5mb3JtZGF0YS5tdWx0aV9kZWFsZXJfc2VuZFRvPSQoJyNtaW5pZm9ybSBbbmFtZT0ibXVsdGlfZGVhbGVyX3NlbmRUbyJdJykudmFsKCksYS5mb3JtZGF0YS5tdWx0aUZyb21NaW5pPSEwKTskKCIjbWF4X2J1ZGdldCIpLmxlbmd0aCYmKGEucHVzaFBhcnRpYWw9ITAsZD0iIixlPXBhcnNlRmxvYXQoJCgiI21heF9idWRnZXQiKS52YWwoKS5yZXBsYWNlKC9bXjAtOS4tXSsvZywiIikpLGQ9ay5nZXRDdXJyZW50QnVkZ2V0KGUpLCIxIj09dSYmaXNOYU4oZSkmJihkPSIiKSxhLmZvcm1kYXRhLmJ1ZGdldD0KZCk7JCgiLnRyYWNrLXByb2dyZXNzIikubGVuZ3RoJiYobG9jYWxTdG9yYWdlLmdldEl0ZW0oInRyYWRlaW5fc3VibWl0X2RhdGEiKSYmKGEuZm9ybWRhdGEuY3VycmVudGx5RHJpdmluZz0iRklOQU5DRV9GT1JNX0FMUkVBRFlfRFJJVklOR19UUkFERSIpLGQ9bG9jYWxTdG9yYWdlLmdldEl0ZW0oInJldGFpbF90cmFja19kYXRhIiksKGQ9SlNPTi5wYXJzZShkKSkmJmQudmFsdWUmJihkPUpTT04ucGFyc2UoZC52YWx1ZSkpJiZkLnBheW1lbnQmJmQucGF5bWVudC5wYXltZW50VmFsdWUmJihlPWQucGF5bWVudC5wYXltZW50VmFsdWUsZD1lWzBdLGU9ZVszXSxmPSIiLGQ9Im1vbnRobHkiPT1lP3BhcnNlRmxvYXQoZCk6IndlZWtseSI9PWU\/NTIqcGFyc2VGbG9hdChkKS8xMjoic2VtaW1vbnRobHkiPT1lPzI0KnBhcnNlRmxvYXQoZCkvMTI6MjYqcGFyc2VGbG9hdChkKS8xMixmPWsuZ2V0Q3VycmVudEJ1ZGdldChkKSxhLmZvcm1kYXRhLmJ1ZGdldD1mKSk7ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnW25hbWU9ImJ1ZGdldCJdK2xhYmVsJykuZm9yRWFjaChnPT4Ke2cuaW5uZXJIVE1MPWcuaW5uZXJIVE1MLnJlcGxhY2UoLyhcJFxkezMsNH18XGR7Myw0fVwkKS9nLGw9PkQyQ1V0aWxzLkZvcm1hdC50b1ByaWNlKGwucmVwbGFjZSgvXCQvZywiIikpKX0pOyQoZG9jdW1lbnQpLnRyaWdnZXIoImNyZWRpdC5tdWx0aXN0ZXAuc2hvdyIpOyQoIiNmaW5hbmNlX211bHRpc3RlcF9mb3JtIixiKS5zaG93KCk7MD09YS5zdGVwJiYoJCgiI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm1fbmV4dF9idG4iLGIpLmhpZGUoKSwkKCIjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSIsYikub2ZmKCJjbGljay5ub0J1dHRvbiIsImlucHV0W3R5cGU9cmFkaW9dIiksJCgiI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0iLGIpLm9uKCJjbGljay5ub0J1dHRvbiIsImlucHV0W3R5cGU9cmFkaW9dIixmdW5jdGlvbigpe3NldFRpbWVvdXQoZnVuY3Rpb24oKXthLm5leHQoKX0sMUUzKX0pKTtrLnNldEN1cnJlbnRNYWtlTW9kZWxZZWFyKCl9fXZhciB6PSQoIiNGSU5BTkNFX01VTFRJU1RFUF9QSE9ORV9QT1NJVElPTl9DSEVDSyIpLnZhbCgpLApLPSQoIiNGSU5BTkNFX01VTFRJU1RFUF9QSE9ORV9QT1NJVElPTl9TRUxFQ1QiKS52YWwoKSxFPSQoIiNBRE1JTl9NQU5EQVRPUllfQ1JFRElUX0JVUkVBVV9DSEVDSyIpLnZhbCgpLEM9JCgiI0FTS19GT1JfU0lOX0NIRUNLIikudmFsKCksTz0hMSx1PSQoIiNGSU5BTkNFX01VTFRJU1RFUF9pc1NlY29uZENoYW5jZSIsYikudmFsKCkseD0kKCIjRklOQU5DRV9NVUxUSVNURVBfaXNJbnN0YW50IixiKS52YWwoKSxGPSQoIiNGSU5BTkNFX01VTFRJU1RFUF9pc1Z3RFIiLGIpLnZhbCgpLEw9MSxNPVsxLDIsMyw2LDcsMTMsMTQsMTVdLEc9W3tmdW5jOiJ2YWxpZGF0ZU5vdEVtcHR5Iix2YWx1ZToiZW1wbG95bWVudFN0YXR1cyJ9XSxSPVtdLFM9W3tmdW5jOiJ2YWxpZGF0ZU5vdEVtcHR5Iix2YWx1ZToiZmlyc3ROYW1lIn0se2Z1bmM6InZhbGlkYXRlTm90RW1wdHkiLHZhbHVlOiJsYXN0TmFtZSJ9LHtmdW5jOiJ2YWxpZGF0ZU5hbWUiLHZhbHVlOiIifV0sVD1be2Z1bmM6InZhbGlkYXRlTm90RW1wdHkiLAp2YWx1ZToiYWRkcmVzcyJ9XSxVPVt7ZnVuYzoidmFsaWRhdGVOb3RFbXB0eSIsdmFsdWU6InJlbnRPck93biJ9LHtmdW5jOiJ2YWxpZGF0ZUlzTnVtYmVyIix2YWx1ZToibW9udGhseVBheW1lbnQifSx7ZnVuYzoidmFsaWRhdGVNb250aGx5UGF5bWVudCIsdmFsdWU6Im1vbnRobHlQYXltZW50In1dLFY9W10sQj17c3RlcDA6MSxzdGVwMToyLHN0ZXAyOjMsc3RlcDM6IjAiPT16PzQ6ImJlZm9yZSI9PUs\/MTk6NCxzdGVwNDoiMCI9PXo\/NToiYmVmb3JlIj09Sz81OjE5LHN0ZXA1OjYsc3RlcDY6NyxzdGVwNzo4LHN0ZXA4Ojksc3RlcDk6MTEsc3RlcDEwOjExLHN0ZXAxMToxMixzdGVwMTI6MTMsc3RlcDEzOjE2LHN0ZXAxNDoxNixzdGVwMTU6MTYsc3RlcDE2OjE3LHN0ZXAxNzoiMCI9PXo\/MTk6MD09RT8iMCI9PUM\/IjEiPT11PzIzOiJkb25lIjoyMjoyMCxzdGVwMTg6IjAiPT16PzA9PUU\/IjAiPT1DPyIxIj09dT8yMzoiZG9uZSI6MjI6MjA6ImJlZm9yZSI9PUs\/NDo1LHN0ZXAxOToxOCwKc3RlcDIwOiIwIj09Qz8iMSI9PXU\/MjM6ImRvbmUiOjIyLHN0ZXAyMjoiMSI9PXU\/MjM6ImRvbmUiLHN0ZXAyMzoiZG9uZSJ9O29wdGlvbmFsU3RlcHM9W107IjEiPT11JiYob3B0aW9uYWxTdGVwcz1bMjNdLCIwIj09QyYmKG9wdGlvbmFsU3RlcHM9WzIyLDIzXSksTT1bMSwyLDMsNiw3LDE0LDE1XSxHPVt7ZnVuYzoidmFsaWRhdGVOb3RFbXB0eSIsdmFsdWU6ImVtcGxveW1lbnRTdGF0dXMifSx7ZnVuYzoidmFsaWRhdGVOb3RFbXB0eSIsdmFsdWU6ImVtcGxveW1lbnRBZGRlZEluZm8ifSx7ZnVuYzoidmFsaWRhdGVFbXBsb3llckluZm8iLHZhbHVlOiIifSx7ZnVuYzoidmFsaWRhdGVOb3RFbXB0eUVtcGxveWVyU3RhdHVzVGltZSIsdmFsdWU6IiJ9XSxCPXtzdGVwMDoxLHN0ZXAxOjIsc3RlcDI6MyxzdGVwMzoxOCxzdGVwNDoxOSxzdGVwNTo2LHN0ZXA2Ojcsc3RlcDc6OCxzdGVwODo5LHN0ZXA5OjIyLHN0ZXAxMDoxMSxzdGVwMTE6MTIsc3RlcDEyOjEzLHN0ZXAxMzoxNixzdGVwMTQ6MTYsCnN0ZXAxNToxNixzdGVwMTY6MjMsc3RlcDE4OjUsc3RlcDE5OjExLHN0ZXAyMDoiZG9uZSIsc3RlcDIyOjQsc3RlcDIzOjA9PUU\/ImRvbmUiOjIwfSk7IjEiPT14JiYob3B0aW9uYWxTdGVwcz1bMjJdLEw9MjQsTT1bMSwyLDMsNiw3LDE0LDE1XSxHPVt7ZnVuYzoidmFsaWRhdGVOb3RFbXB0eSIsdmFsdWU6ImVtcGxveW1lbnRTdGF0dXMifSx7ZnVuYzoidmFsaWRhdGVFbXBsb3ltZW50QWRkZWRJbmZvIix2YWx1ZToiZW1wbG95bWVudEFkZGVkSW5mbyJ9LHtmdW5jOiJ2YWxpZGF0ZUVtcGxveWVySW5mbyIsdmFsdWU6IiJ9LHtmdW5jOiJ2YWxpZGF0ZU5vdEVtcHR5RW1wbG95ZXJTdGF0dXNUaW1lIix2YWx1ZToiIn0se2Z1bmM6InZhbGlkYXRlQWRkcmVzc0VtcGxveWVyIix2YWx1ZToiYWRkcmVzc0VtcGxveWVyIn1dLFI9W3tmdW5jOiJ2YWxpZGF0ZUVtcGxveW1lbnRBZGRlZEluZm8iLHZhbHVlOiJlbXBsb3ltZW50QWRkZWRJbmZvMiJ9LHtmdW5jOiJ2YWxpZGF0ZUVtcGxveWVySW5mbzIiLAp2YWx1ZToiIn0se2Z1bmM6InZhbGlkYXRlTm90RW1wdHlFbXBsb3llclN0YXR1c1RpbWUyIix2YWx1ZToiIn0se2Z1bmM6InZhbGlkYXRlQWRkcmVzc0VtcGxveWVyMiIsdmFsdWU6ImFkZHJlc3NFbXBsb3llcjIifV0sUz1be2Z1bmM6InZhbGlkYXRlTm90RW1wdHkiLHZhbHVlOiJmaXJzdE5hbWUifSx7ZnVuYzoidmFsaWRhdGVOb3RFbXB0eSIsdmFsdWU6Imxhc3ROYW1lIn0se2Z1bmM6InZhbGlkYXRlTm90RW1wdHkiLHZhbHVlOiJ0aXRsZSJ9LHtmdW5jOiJ2YWxpZGF0ZU5hbWUiLHZhbHVlOiIifV0sVD1be2Z1bmM6InZhbGlkYXRlQWRkcmVzcyIsdmFsdWU6ImFkZHJlc3MifV0sQj17c3RlcDA6MjQsc3RlcDI0OjI1LHN0ZXAyNTo0LHN0ZXA0OjE5LHN0ZXAxOToxOCxzdGVwMTg6NSxzdGVwNTo4LHN0ZXA4Ojksc3RlcDk6MTEsc3RlcDExOjEyLHN0ZXAxMjoxMyxzdGVwMjc6Mjgsc3RlcDI4OjEzLHN0ZXAxMzoxNixzdGVwMTQ6MTYsc3RlcDE1OjE2LHN0ZXAxNjoxNyxzdGVwMTc6MjIsCnN0ZXAyOToyMixzdGVwMjI6MD09RT8yNjoyMCxzdGVwMjA6MjYsc3RlcDI2OiJkb25lIn0sIjEiPT1GJiYoRz1be2Z1bmM6InZhbGlkYXRlTm90RW1wdHkiLHZhbHVlOiJlbXBsb3ltZW50U3RhdHVzIn0se2Z1bmM6InZhbGlkYXRlRW1wbG95bWVudEFkZGVkSW5mb1ZXIix2YWx1ZToiZW1wbG95bWVudEFkZGVkSW5mbyJ9LHtmdW5jOiJ2YWxpZGF0ZUVtcGxveWVySW5mb1ZXIix2YWx1ZToiIn0se2Z1bmM6InZhbGlkYXRlTm90RW1wdHlFbXBsb3llclN0YXR1c1RpbWVWVyIsdmFsdWU6IiJ9LHtmdW5jOiJ2YWxpZGF0ZUFkZHJlc3NFbXBsb3llclZXIix2YWx1ZToiYWRkcmVzc0VtcGxveWVyIn1dLEIuc3RlcDE2PTIyLEIuc3RlcDIyPTMwLEIuc3RlcDMwPSJkb25lIixVPVt7ZnVuYzoidmFsaWRhdGVOb3RFbXB0eSIsdmFsdWU6InJlbnRPck93biJ9LHtmdW5jOiJ2YWxpZGF0ZUlzTnVtYmVyIix2YWx1ZToibW9udGhseVBheW1lbnQifSx7ZnVuYzoidmFsaWRhdGVNb250aGx5UGF5bWVudCIsCnZhbHVlOiJtb250aGx5UGF5bWVudCJ9LHtmdW5jOiJ2YWxpZGF0ZU1vbnRobHlEaXNidXJzZW1lbnRWVyIsdmFsdWU6Im1vbnRobHlEaXNidXJzZW1lbnQifSx7ZnVuYzoidmFsaWRhdGVNb250aGx5UGF5bWVudCIsdmFsdWU6Im1vbnRobHlEaXNidXJzZW1lbnQifV0sVj1be2Z1bmM6ImluaXREaXNidXJzbWVudFZXIn1dKSk7dmFyIGE9bmV3IFZ1ZSh7ZWw6JCgiI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0iLGIpWzBdLGRhdGE6ZnVuY3Rpb24oKXtyZXR1cm57Y29udGV4dDpiLGFqYXhQcm9jZXNzOiExLHVzZXJJZDoiIixjb252ZXJzaW9uU3VibWl0dGVkOiExLHNob3dJY29uOiEwLHB1c2hQYXJ0aWFsOiExLGN1cnJlbnREZXB0OiJORVciLGluaXRWZWhpY2xlU2VsZWN0aW9uRmlyc3Q6ITAsc3RlcDowLG5leHRTdGVwOkwsZmlyc3RTdGVwOiEwLGNhbGN1bGF0b3JGdW5jdGlvbnM6IiIsY3JlZGl0RGVjaXNpb25IVE1MOiIiLGZvcm1kYXRhOnt2ZWhpY2xlVHlwZToiIixidWRnZXQ6IiIsCmN1cnJlbnRseURyaXZpbmc6IiIsZW1haWxBZGRyZXNzOiIiLGNyZWRpdFJhdGluZzoiIixkb3duT3B0aW9uczoiIixiaXJ0aGRhdGVZZWFyOiIiLGJpcnRoZGF0ZU1vbnRoOiIiLGJpcnRoZGF0ZURheToiIixhZGRyZXNzOiIiLHNwbGl0QWRkcmVzczpbXSxhZGRyZXNzX3llYXJzOjAsYWRkcmVzc19tb250aHM6MCxhZGRyZXNzMjoiIixzcGxpdEFkZHJlc3MyOltdLGFkZHJlc3MyX3llYXJzOjAsYWRkcmVzczJfbW9udGhzOjAsYWRkcmVzc0VtcGxveWVyOiIiLHNwbGl0QWRkcmVzc0VtcGxveWVyOltdLHJlbnRPck93bjoiIixtb250aGx5UGF5bWVudDowLG1vbnRobHlEaXNidXJzZW1lbnQ6MCxlbXBsb3ltZW50U3RhdHVzOiIiLGVtcGxveW1lbnRBZGRlZEluZm86IiIsZW1wbG95ZXJOYW1lOiIiLGVtcGxveWVyUGhvbmU6IiIsZW1wbG95bWVudFN0YXR1c1llYXI6MCxlbXBsb3ltZW50U3RhdHVzTW9udGg6MCxlbXBsb3ltZW50QWRkZWRJbmZvMjoiIixlbXBsb3llck5hbWUyOiIiLAplbXBsb3llclBob25lMjoiIixlbXBsb3ltZW50U3RhdHVzWWVhcjI6MCxlbXBsb3ltZW50U3RhdHVzTW9udGgyOjAsYWRkcmVzc0VtcGxveWVyMjoiIixzcGxpdEFkZHJlc3NFbXBsb3llcjI6W10sd29ya2luZ1doaWxlSW5TY2hvb2w6IiIsb3RoZXJFbXBsb3ltZW50U3RhdHVzOiIiLG1vbnRobHlJbmNvbWU6MCxtb250aGx5SW5jb21lX3llYXJzOjAsbW9udGhseUluY29tZV9tb250aHM6MCx0aXRsZToiIixmaXJzdE5hbWU6IiIsbGFzdE5hbWU6IiIscGhvbmVOdW1iZXI6IiIsY3VycmVudE1ha2U6IiIsY3VycmVudE1vZGVsOiIiLGN1cnJlbnRNb2RlbFRleHQ6IiIsY3VycmVudFllYXI6IiIsY3VycmVudFN0b2NrTnVtYmVyOiIiLGN1cnJlbnRNaWxlYWdlOjEwLGN1cnJlbnRUcmltOiIiLGN1cnJlbnRTdHlsZWlkOiIiLGN1cnJlbnRDYXJJZDoiIixwYXltZW50VHlwZToiIixwYXltZW50VHlwZVJlYWw6IiIscGF5bWVudFRlcm06IiIscGF5bWVudFJhdGVUeXBlOiIiLHBheW1lbnRWYWx1ZToiIiwKYmFzZXBheW1lbnQ6IiIscGF5bWVudFRvdGFsSW5jZW50aXZlOjAscGF5bWVudFRvdGFsRmVlOjAscGF5bWVudEdTVDowLHBheW1lbnRIU1Q6MCxwYXltZW50UFNUOjAscGF5bWVudERvd25QYXltZW50OjAscGF5bWVudEttQWxsb3dhbmNlOjAscGF5bWVudEludGVydmFsOiIiLHBheW1lbnRSYXRlOiIiLHBheW1lbnRSZXNpZHVhbFZhbHVlOjAsbm9QYXltZW50OiExLG11bHRpX2RlYWxlcl9zZW5kVG86IiIsY3JlZGl0QnVyZWF1Q3JlZGl0OiJOTyIsU0lOOiIiLGFkZGVkSW5mbzoiIix2ZWhpY2xlU2FsZXNEZXB0OiJvdGhlciIsdmVoaWNsZVByaWNlOiIiLHZlaGljbGVUcmFuc21pc3Npb246IiIsdmVoaWNsZVRyaW06IiIsdmVoaWNsZUNvbG9yOiIiLGluaXRpYWxUaXRsZVNob3c6ITAsbXVsdGlGcm9tTWluaTohMSx0cmFkZUluTWFrZToiIix0cmFkZUluTW9kZWw6IiIsdHJhZGVJblllYXI6IiIsdHJhZGVJblRyaW06IiIsdHJhZGVJblZhbHVlOiIiLHZlaGljbGVJbml0aWFsUHJpY2U6IiIsCnZlaGljbGVGaW5hbFByaWNlOiIiLHBheW1lbnRGZWVzTGlzdDpbXSxwYXltZW50SW5jZW50aXZlc0xpc3Q6W10sY3JlZGl0QXBwbGljYXRpb25JZDoiIixjb25zZW50QWNjb3VudE1vbml0b3Jpbmc6IiIsY29uc2VudENyZWRpdEFzc2Vzc21lbnQ6IiIsY29uc2VudFBpcGVkYToiIixjb25zZW50Q2FzbDoiIixjb25zZW50Vlc6IiJ9LG5leHRTdGVwRGVmYXVsdFZhbHVlczpCLHZhbGlkYXRpb25SdWxlczp7c3RlcDE6W3tmdW5jOiJ2YWxpZGF0ZU5vdEVtcHR5Iix2YWx1ZToidmVoaWNsZVR5cGUifV0sc3RlcDI6W3tmdW5jOiJ2YWxpZGF0ZU5vdEVtcHR5Iix2YWx1ZToiYnVkZ2V0In1dLHN0ZXAzOlt7ZnVuYzoidmFsaWRhdGVOb3RFbXB0eSIsdmFsdWU6ImN1cnJlbnRseURyaXZpbmcifV0sc3RlcDQ6W3tmdW5jOiJ2YWxpZGF0ZU5vdEVtcHR5Iix2YWx1ZToiZW1haWxBZGRyZXNzIn0se2Z1bmM6InZhbGlkYXRlRW1haWwiLHZhbHVlOiJlbWFpbEFkZHJlc3MifV0sc3RlcDU6W3tmdW5jOiJ2YWxpZGF0ZU5vdEVtcHR5IiwKdmFsdWU6Im11bHRpX2RlYWxlcl9zZW5kVG8ifV0sc3RlcDY6W3tmdW5jOiJ2YWxpZGF0ZU5vdEVtcHR5Iix2YWx1ZToiY3JlZGl0UmF0aW5nIn1dLHN0ZXA3Olt7ZnVuYzoidmFsaWRhdGVOb3RFbXB0eSIsdmFsdWU6ImRvd25PcHRpb25zIn1dLHN0ZXA4Olt7ZnVuYzoidmFsaWRhdGVCaXJ0aGRhdGUiLHZhbHVlOiIifV0sc3RlcDk6VCxzdGVwMTE6W3tmdW5jOiJ2YWxpZGF0ZU5vdEVtcHR5QWRkcmVzc1RpbWUiLHZhbHVlOiIifV0sc3RlcDEyOlUsc3RlcDEzOkcsc3RlcDE0Olt7ZnVuYzoidmFsaWRhdGVOb3RFbXB0eSIsdmFsdWU6IndvcmtpbmdXaGlsZUluU2Nob29sIn1dLHN0ZXAxNTpbe2Z1bmM6InZhbGlkYXRlTm90RW1wdHkiLHZhbHVlOiJvdGhlckVtcGxveW1lbnRTdGF0dXMifV0sc3RlcDE2Olt7ZnVuYzoidmFsaWRhdGVNb3JlVGhhblplcm8iLHZhbHVlOiJtb250aGx5SW5jb21lIn0se2Z1bmM6InZhbGlkYXRlTW9udGhseUluY29tZSIsdmFsdWU6Im1vbnRobHlJbmNvbWUifV0sCnN0ZXAxNzpbe2Z1bmM6InZhbGlkYXRlTm90RW1wdHlNb250aGx5SW5jb21lVGltZSIsdmFsdWU6IiJ9XSxzdGVwMTg6UyxzdGVwMTk6W3tmdW5jOiJ2YWxpZGF0ZVBob25lTnVtYmVyIix2YWx1ZToicGhvbmVOdW1iZXIifV0sc3RlcDIwOlt7ZnVuYzoidmFsaWRhdGVDaGVja2VkQ3JlZGl0QnVyZWF1Iix2YWx1ZToiY3JlZGl0QnVyZWF1Q3JlZGl0In1dLHN0ZXAyMjpbe2Z1bmM6InZhbGlkYXRlU0lOIix2YWx1ZToiU0lOIn1dLHN0ZXAyNDpbe2Z1bmM6InZhbGlkYXRlVmVoaWNsZSIsdmFsdWU6IiJ9XSxzdGVwMjU6W3tmdW5jOiJ2YWxpZGF0ZVBheW1lbnQiLHZhbHVlOiIifV0sc3RlcDI2Olt7ZnVuYzoidmFsaWRhdGVDb25zZW50Iix2YWx1ZToiIn1dLHN0ZXAyNzpbe2Z1bmM6InZhbGlkYXRlQWRkcmVzczIiLHZhbHVlOiJhZGRyZXNzMiJ9XSxzdGVwMjg6W3tmdW5jOiJ2YWxpZGF0ZU5vdEVtcHR5QWRkcmVzczJUaW1lIix2YWx1ZToiIn1dLHN0ZXAyOTpSLHN0ZXAzMDpbe2Z1bmM6InZhbGlkYXRlQ29uc2VudHMiLAp2YWx1ZToiIn1dfSxvblNob3dGdW5jdGlvbjp7c3RlcDI6W3tmdW5jOiJzdGVwMlZpZXdlZFRyYWNrIn1dLHN0ZXA0Olt7ZnVuYzoiZW1haWxTdGVwVmlld2VkVHJhY2sifSx7ZnVuYzoiaW5pdEVtYWlsIn1dLHN0ZXA2OltdLHN0ZXA3OltdLHN0ZXA4Olt7ZnVuYzoiaW5pdEJpcnRoZGF0ZUNoYW5nZSJ9XSxzdGVwOTpbe2Z1bmM6ImluaXRHb29nbGVBdXRvY29tcGxldGUifV0sc3RlcDI3Olt7ZnVuYzoiaW5pdEdvb2dsZUF1dG9jb21wbGV0ZTIifV0sc3RlcDEzOlt7ZnVuYzoiaW5pdEdvb2dsZUF1dG9jb21wbGV0ZUVtcGxveWVyIn1dLHN0ZXA1Olt7ZnVuYzoiaW5pdFNlbGVjdE11bHRpRGVhbGVyIn1dLHN0ZXAxOTpbe2Z1bmM6InBob25lU3RlcFZpZXdlZFRyYWNrIn0se2Z1bmM6ImluaXRQaG9uZSJ9XSxzdGVwMjQ6W3tmdW5jOiJpbml0VmVoaWNsZVNlbGVjdGlvbiJ9XSxzdGVwMjU6W3tmdW5jOiJpbml0Q2FsY3VsYXRvciJ9XSxzdGVwMjY6W3tmdW5jOiJpbml0Q29uc2VudCJ9XSwKc3RlcDI5Olt7ZnVuYzoiaW5pdEdvb2dsZUF1dG9jb21wbGV0ZUVtcGxveWVyMiJ9XSxzdGVwMzA6W3tmdW5jOiJpbml0VldDb25zZW50In1dLHN0ZXAxMjpWfSxub0NvbmZpcm1CdXR0b25TdGVwczpNLHNob3dFcnJvcjohMCxzZWNvbmRDaGFuY2VTdGVwVG9Ta2lwOlsxLDIsMyw2LDddLG9wdGlvbmFsU3RlcDpvcHRpb25hbFN0ZXBzfX0sbWV0aG9kczp7bmV4dDpmdW5jdGlvbihjKXtjfHwodGhpcy5zaG93RXJyb3I9ITAsdGhpcy5mb3JtZGF0YS5pbml0aWFsVGl0bGVTaG93PSExLHRoaXMucHVzaFBhcnRpYWw9ITApO2lmKHRoaXMudmFsaWRhdGlvblJ1bGVzLmhhc093blByb3BlcnR5KCJzdGVwIit0aGlzLnN0ZXApKWZvcih2YXIgZD0wO2Q8dGhpcy52YWxpZGF0aW9uUnVsZXNbInN0ZXAiK3RoaXMuc3RlcF0ubGVuZ3RoO2QrKylpZihrW3RoaXMudmFsaWRhdGlvblJ1bGVzWyJzdGVwIit0aGlzLnN0ZXBdW2RdLmZ1bmNdKHRoaXMuZm9ybWRhdGFbdGhpcy52YWxpZGF0aW9uUnVsZXNbInN0ZXAiKwp0aGlzLnN0ZXBdW2RdLnZhbHVlXSkpJCgiI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm1fZXJyb3IiLGIpLmh0bWwoIiIpLCQoJ1tuYW1lPSInK3RoaXMudmFsaWRhdGlvblJ1bGVzWyJzdGVwIit0aGlzLnN0ZXBdW2RdLnZhbHVlKyciXScsYikuY3NzKCJib3JkZXItY29sb3IiLCIiKTtlbHNle3RoaXMuc2hvd0Vycm9yJiYoJCgiIyIrdGhpcy52YWxpZGF0aW9uUnVsZXNbInN0ZXAiK3RoaXMuc3RlcF1bZF0udmFsdWUrIkVycm9yTXNnIixiKS5sZW5ndGgmJiQoIiNmaW5hbmNlX211bHRpc3RlcF9mb3JtX2Vycm9yIixiKS5odG1sKCQoIiMiK3RoaXMudmFsaWRhdGlvblJ1bGVzWyJzdGVwIit0aGlzLnN0ZXBdW2RdLnZhbHVlKyJFcnJvck1zZyIsYikudmFsKCkpLCQoJ1tuYW1lPSInK3RoaXMudmFsaWRhdGlvblJ1bGVzWyJzdGVwIit0aGlzLnN0ZXBdW2RdLnZhbHVlKyciXScsYikuY3NzKCJib3JkZXItY29sb3IiLCJ2YXIoLS1sYWJlbC1yZXF1aXJlZC1jb2xvcikiKSk7cmV0dXJufWZvcih0aGlzLnNob3dFcnJvcj0KITE7ay5pc05leHRTdGVwRmlsbGVkKCk7KTtpZigyMSE9dGhpcy5zdGVwKXs0PT10aGlzLnN0ZXAmJiIiIT1hLmZvcm1kYXRhLmVtYWlsQWRkcmVzcyYmay5lbWFpbFByb3ZpZGVkVHJhY2soKTsxOT09dGhpcy5zdGVwJiYiIiE9YS5mb3JtZGF0YS5waG9uZU51bWJlciYmay5waG9uZVByb3ZpZGVkVHJhY2soKTtpZig5PT10aGlzLnN0ZXApdHJ5e3ZhciBlPSQoJyNmaW5hbmNlX211bHRpc3RlcF9mb3JtIGlucHV0W25hbWU9ImFkZHJlc3MiXScsYiksZj1lLmdvb2dsZVBsYWNlcygiZ2V0QWRkcmVzcyIpLGc9InVuZGVmaW5lZCIhPT10eXBlb2YgZi5wb3N0YWwubG9uZ19uYW1lP2YucG9zdGFsLmxvbmdfbmFtZTplLnZhbCgpO2VtYWlsSGFuZGxlci51c2VyUG9zdGFsPWc7InVuZGVmaW5lZCIhPXR5cGVvZiBhY3RpdmVVc2VyUHJvZmlsZU1uZyYmInVuZGVmaW5lZCIhPXR5cGVvZiBhY3RpdmVVc2VyUHJvZmlsZU1uZy5sb2dQYWdlVmlld0V2ZW50JiYiIiE9ZyYmKCJ1bmRlZmluZWQiIT09CnR5cGVvZiBkZWJ1ZyYmZGVidWcoIkxvZyBFdmVudCIsZywiVXNlckZvcm0ucG9zdGFsIiksYWN0aXZlVXNlclByb2ZpbGVNbmcubG9nUGFnZVZpZXdFdmVudChnLCJVc2VyRm9ybS5wb3N0YWwiKSl9Y2F0Y2gobCl7Y29uc29sZS5sb2cobCl9NDw9dGhpcy5zdGVwJiYhdGhpcy5jb252ZXJzaW9uU3VibWl0dGVkJiYodGhpcy5jb252ZXJzaW9uU3VibWl0dGVkPSEwLGQ9JCgiI2ZpbmFuY2VNdWx0aXN0ZXBQb3B1cENvbnRhaW5lcl9jb25maXJtIiksMD09PWQubGVuZ3RoJiYoZD0kKCIjZ2VuZXJpY19mb3JtX2NvbmZpcm0iKSksZC5maW5kKCdpbnB1dFtuYW1lPSJsZWFkVHlwZSJdJykudmFsKCQodGhpcy5jb250ZXh0KS5maW5kKCIuZW1haWxTdWJqZWN0IikudGV4dCgpLnJlcGxhY2UoL1tcblxyXS9nLCIgIikpLGQuZmluZCgnaW5wdXRbbmFtZT0ibGVhZF9kZXBhcnRtZW50Il0nKS52YWwoIkZJTkFOQ0UiKSxkLmZpbmQoJ2lucHV0W25hbWU9InBhZ2VJRCJdJykudmFsKCQoIiNQQUdFSUQiKS52YWwoKSksCmQuZmluZCgnaW5wdXRbbmFtZT0iY3VycmVudFVSTCJdJykudmFsKHdpbmRvdy5sb2NhdGlvbi5ocmVmKSxkLmZpbmQoJ2lucHV0W25hbWU9ImlzRnVsbFdpZHRoIl0nKS52YWwoJCgiI2lzRnVsbFdpZHRoUGFnZU5ld1ZEUCIpLnZhbCgpKSxkLmZpbmQoJ2lucHV0W25hbWU9ImRlYWxlck5hbWUiXScpLnZhbCgkKCIjbmV3VkRQRGVhbGVyTmFtZSIpLnZhbCgpKSxkLmZpbmQoJ2lucHV0W25hbWU9ImJ1dHRvblBvc2l0aW9uIl0nKS52YWwoJCgiI25ld1ZEUEJ1dHRvblBvc2l0aW9uIikudmFsKCkpLGQuZmluZCgnaW5wdXRbbmFtZT0iaXNNb2JpbGVOZXdWRFAiXScpLnZhbCgkKCIjaXNtb2JpbGUiKS52YWwoKSksZC50cmlnZ2VyKCJzdWJtaXQiKSwiZnVuY3Rpb24iPT09dHlwZW9mIHdpbmRvdy50cmFja0NvbnZlcnNpb24mJndpbmRvdy50cmFja0NvbnZlcnNpb24oKSk7MCE9dGhpcy5zdGVwJiYodGhpcy5zaG93SWNvbj0hMSk7dGhpcy5zdGVwPXRoaXMubmV4dFN0ZXA7bG9jYWxTdG9yYWdlLmdldEl0ZW0oImZpbmFuY2VfbXVsdGlzdGVwLmxhc3Rfc3RlcCIpOwpjfHwoYS5maXJzdFN0ZXA\/YS5maXJzdFN0ZXA9ITE6ay5zdGVwVHJpZ2dlcighMCkpOygiIiE9dGhpcy5mb3JtZGF0YS5lbWFpbEFkZHJlc3MmJigiMCI9PSQoIiNGSU5BTkNFX01VTFRJU1RFUF9QSE9ORV9QT1NJVElPTl9DSEVDSyIpLnZhbCgpfHwiYWZ0ZXIiPT0kKCIjRklOQU5DRV9NVUxUSVNURVBfUEhPTkVfUE9TSVRJT05fU0VMRUNUIikudmFsKCkpfHwiIiE9dGhpcy5mb3JtZGF0YS5waG9uZU51bWJlciYmIjEiPT0kKCIjRklOQU5DRV9NVUxUSVNURVBfUEhPTkVfUE9TSVRJT05fQ0hFQ0siKS52YWwoKSYmImJlZm9yZSI9PSQoIiNGSU5BTkNFX01VTFRJU1RFUF9QSE9ORV9QT1NJVElPTl9TRUxFQ1QiKS52YWwoKSkmJmsubXVsdGlEZWFsZXJGb3JtU3RhdHVzKCkmJnRoaXMucHVzaFBhcnRpYWwmJigiMSI9PSQoIiNmaW5hbmNlX211bHRpc3RlcF9mb3JtICNPUEVORURGUk9NSU1BR0VQT1BVUCIsYikudmFsKCk\/JCgiI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gI09QRU5FREZST01JTUFHRVBPUFVQIiwKYikudmFsKCIwIik6ay5wdXNoRGF0YVRvU2VydmVyKCkpO2suc2V0Q2xpZW50U3RvcmFnZURhdGFWYWx1ZXMoKTt0aGlzLm5leHRTdGVwPXRoaXMubmV4dFN0ZXBEZWZhdWx0VmFsdWVzWyJzdGVwIit0aGlzLnN0ZXBdOzA8PXRoaXMub3B0aW9uYWxTdGVwLmluZGV4T2YoYS5zdGVwKT8kKCIjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybV9uZXh0X2J0biBidXR0b24iLGIpLmFkZENsYXNzKCJpc1ZhbGlkIik6JCgiI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm1fbmV4dF9idG4gYnV0dG9uIixiKS5yZW1vdmVDbGFzcygiaXNWYWxpZCIpO2sub25TaG93RnVuY3Rpb25Ub1J1bigpOzA8PXRoaXMubm9Db25maXJtQnV0dG9uU3RlcHMuaW5kZXhPZih0aGlzLnN0ZXApPygkKCIjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybV9uZXh0X2J0biIsYikuaGlkZSgpLCQoIiNmaW5hbmNlX211bHRpc3RlcF9mb3JtIixiKS5vZmYoImNsaWNrLm5vQnV0dG9uIiwiaW5wdXRbdHlwZT1yYWRpb10iKSwkKCIjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSIsCmIpLm9uKCJjbGljay5ub0J1dHRvbiIsImlucHV0W3R5cGU9cmFkaW9dIixmdW5jdGlvbigpe3NldFRpbWVvdXQoZnVuY3Rpb24oKXthLm5leHQoKX0sMUUzKX0pKTooJCgiI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm1fbmV4dF9idG4iLGIpLnNob3coKSwkKCIjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSIsYikub2ZmKCJjbGljay5ub0J1dHRvbiIsImlucHV0W3R5cGU9cmFkaW9dIikpOyJkb25lIj09dGhpcy5zdGVwJiYoIjEiPT14PyIxIj09Rj9rLmNyZWRpdEFwcFN1bWlzc2lvbigpOmsucm91dGVPbmVDYWxsKCk6ay5zZW5kRW1haWwoKSl9fSxnZXRMaW5lYXJzdGVwOmZ1bmN0aW9uKGMpe3ZhciBkPWxvY2FsU3RvcmFnZS5nZXRJdGVtKCJmaW5hbmNlX211bHRpc3RlcC5saW5lYXJfc3RlcCIpO2Q9cGFyc2VJbnQoZD9kOjApO2lmKDA9PWR8fGlzTmFOKGQpKWQ9MTtjJiYoZCs9MSxsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgiZmluYW5jZV9tdWx0aXN0ZXAubGluZWFyX3N0ZXAiLGQpKTtyZXR1cm4gZH19fSksCnc9IkVOR0xJU0giPT0kKCIjYWN0aXZlc2l0ZWxhbmd1YWdlIikudmFsKCk\/ImVuIjoiZnIiLEo9ZW1haWxIYW5kbGVyLmdldEpzb25PYmplY3QoKTt6PXdpbmRvdy5sb2NhdGlvbjt2YXIgUT16LnByb3RvY29sKyIvLyIrei5ob3N0LGs9e2lzTmV4dFN0ZXBGaWxsZWQ6ZnVuY3Rpb24oKXtpZigiMSI9PXgmJiIxIj09RiYmWzE5LDQsMzBdLmluY2x1ZGVzKGEubmV4dFN0ZXApKXJldHVybiExO2lmKCIxIj09dSYmMDw9YS5zZWNvbmRDaGFuY2VTdGVwVG9Ta2lwLmluZGV4T2YoYS5uZXh0U3RlcCkpcmV0dXJuIGEubmV4dFN0ZXA9YS5uZXh0U3RlcERlZmF1bHRWYWx1ZXNbInN0ZXAiK2EubmV4dFN0ZXBdLCEwO2lmKCgiMSI9PXV8fCIxIj09eCkmJjA8PWEub3B0aW9uYWxTdGVwLmluZGV4T2YoYS5uZXh0U3RlcCkpcmV0dXJuITE7aWYoYS52YWxpZGF0aW9uUnVsZXMuaGFzT3duUHJvcGVydHkoInN0ZXAiK2EubmV4dFN0ZXApKXtmb3IodmFyIGM9MDtjPGEudmFsaWRhdGlvblJ1bGVzWyJzdGVwIisKYS5uZXh0U3RlcF0ubGVuZ3RoO2MrKylpZigha1thLnZhbGlkYXRpb25SdWxlc1sic3RlcCIrYS5uZXh0U3RlcF1bY10uZnVuY10oYS5mb3JtZGF0YVthLnZhbGlkYXRpb25SdWxlc1sic3RlcCIrYS5uZXh0U3RlcF1bY10udmFsdWVdKSlyZXR1cm4hMTthLm5leHRTdGVwPWEubmV4dFN0ZXBEZWZhdWx0VmFsdWVzWyJzdGVwIithLm5leHRTdGVwXTtyZXR1cm4hMH19LHZhbGlkYXRlTm90RW1wdHk6ZnVuY3Rpb24oYyl7cmV0dXJuIiIhPWMmJiJ1bmRlZmluZWQiIT09dHlwZW9mIGN9LHZhbGlkYXRlTmFtZTpmdW5jdGlvbigpe3ZhciBjPS9eW0Etelx1MDBCRi1cdTFGRkZcdTJDMDAtXHVEN0ZGICctXSskLztsZXQgZD1jLnRlc3QoYS5mb3JtZGF0YS5maXJzdE5hbWUpO2M9Yy50ZXN0KGEuZm9ybWRhdGEubGFzdE5hbWUpO2QmJmM\/KCQoJ1tuYW1lPSJmaXJzdE5hbWUiXScsYikuY3NzKCJib3JkZXItY29sb3IiLCIiKSwkKCdbbmFtZT0iZmlyc3ROYW1lIl0nLGIpLmNzcygiYm9yZGVyLWJvdHRvbS13aWR0aCIsCiIiKSwkKCdbbmFtZT0ibGFzdE5hbWUiXScsYikuY3NzKCJib3JkZXItY29sb3IiLCIiKSwkKCdbbmFtZT0ibGFzdE5hbWUiXScsYikuY3NzKCJib3JkZXItYm90dG9tLXdpZHRoIiwiIiksJCgiI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm1fZXJyb3IiLGIpLmh0bWwoIiIpKTooZHx8KCQoJ1tuYW1lPSJmaXJzdE5hbWUiXScsYikuY3NzKCJib3JkZXItY29sb3IiLCIjYzgzZTNlIiksJCgnW25hbWU9ImZpcnN0TmFtZSJdJyxiKS5jc3MoImJvcmRlci1ib3R0b20td2lkdGgiLCI1cHgiKSksY3x8KCQoJ1tuYW1lPSJsYXN0TmFtZSJdJyxiKS5jc3MoImJvcmRlci1jb2xvciIsIiNjODNlM2UiKSwkKCdbbmFtZT0ibGFzdE5hbWUiXScsYikuY3NzKCJib3JkZXItYm90dG9tLXdpZHRoIiwiNXB4IikpLCQoIiNmaW5hbmNlX211bHRpc3RlcF9mb3JtX2Vycm9yIixiKS5odG1sKCQoIiNmaXJzdE5hbWVFcnJvck1zZyIpLnZhbCgpKSk7cmV0dXJuIGQmJmN9LHZhbGlkYXRlSXNOdW1iZXI6ZnVuY3Rpb24oYyl7cmV0dXJuIDA8PQpjfSx2YWxpZGF0ZU1vbnRobHlJbmNvbWU6ZnVuY3Rpb24oYyl7cmV0dXJuIDk5OTk5OT49Y30sdmFsaWRhdGVNb250aGx5UGF5bWVudDpmdW5jdGlvbihjKXtyZXR1cm4gOTk5OTk+PWN9LHZhbGlkYXRlQWRkcmVzczpmdW5jdGlvbihjKXtyZXR1cm4gMDxhLmZvcm1kYXRhLmFkZHJlc3NfeWVhcnN8fDA8YS5mb3JtZGF0YS5hZGRyZXNzX21vbnRocz8hMDoiIiE9YyYmKGM9JCgnI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gaW5wdXRbZGF0YS1nb29nbGUtcGxhY2VzLWN1c3RvbT0idHJ1ZSJdW25hbWU9ImFkZHJlc3MiXScsYikuZ29vZ2xlUGxhY2VzKCJnZXRBZGRyZXNzIiksIiIhPWMuY2l0eSYmIiIhPWMuc3RyZWV0KT8oYS5mb3JtZGF0YS5zcGxpdEFkZHJlc3M9YywhMCk6ITF9LHZhbGlkYXRlQWRkcmVzczI6ZnVuY3Rpb24oYyl7cmV0dXJuIDA8YS5mb3JtZGF0YS5hZGRyZXNzMl95ZWFyc3x8MDxhLmZvcm1kYXRhLmFkZHJlc3MyX21vbnRocz8hMDoiIiE9YyYmKGM9JCgnI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gaW5wdXRbZGF0YS1nb29nbGUtcGxhY2VzLWN1c3RvbT0idHJ1ZSJdW25hbWU9ImFkZHJlc3MyIl0nLApiKS5nb29nbGVQbGFjZXMoImdldEFkZHJlc3MiKSwiIiE9Yy5jaXR5JiYiIiE9Yy5zdHJlZXQpPyhhLmZvcm1kYXRhLnNwbGl0QWRkcmVzczI9YywhMCk6ITF9LHZhbGlkYXRlQWRkcmVzc0VtcGxveWVyOmZ1bmN0aW9uKGMpe2lmKCJGSU5BTkNFX0ZPUk1fRU1QTE9ZTUVOVF9TVEFUVVNfRU1QTE9ZRUQiIT1hLmZvcm1kYXRhLmVtcGxveW1lbnRTdGF0dXMpcmV0dXJuITA7aWYoIiIhPWMpe2lmKCJ1bmRlZmluZWQiIT09YS5mb3JtZGF0YS5zcGxpdEFkZHJlc3NFbXBsb3llciYmbnVsbCE9PWEuZm9ybWRhdGEuc3BsaXRBZGRyZXNzRW1wbG95ZXImJiJvYmplY3QiPT09dHlwZW9mIGEuZm9ybWRhdGEuc3BsaXRBZGRyZXNzRW1wbG95ZXImJiJjaXR5ImluIGEuZm9ybWRhdGEuc3BsaXRBZGRyZXNzRW1wbG95ZXImJiIiIT09YS5mb3JtZGF0YS5zcGxpdEFkZHJlc3NFbXBsb3llci5jaXR5KXJldHVybiEwO2suaW5pdEdvb2dsZUF1dG9jb21wbGV0ZUVtcGxveWVyKCk7Yz0kKCcjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSBpbnB1dFtkYXRhLWdvb2dsZS1wbGFjZXMtY3VzdG9tPSJ0cnVlIl1bbmFtZT0iYWRkcmVzc0VtcGxveWVyIl0nLApiKS5nb29nbGVQbGFjZXMoImdldEFkZHJlc3MiKTtpZigiIiE9Yy5jaXR5JiYiIiE9Yy5zdHJlZXQpcmV0dXJuIGEuZm9ybWRhdGEuc3BsaXRBZGRyZXNzRW1wbG95ZXI9YywhMH1yZXR1cm4hMX0sdmFsaWRhdGVNb250aGx5RGlzYnVyc2VtZW50Vlc6ZnVuY3Rpb24oYyl7bGV0IGQsZSxmO3JldHVybiJRQyI9PShudWxsIT0oZj1udWxsPT0oZD1hLmZvcm1kYXRhLnNwbGl0QWRkcmVzcyk\/dm9pZCAwOm51bGw9PShlPWQucHJvdmluY2UpP3ZvaWQgMDplLnNob3J0X25hbWUpP2Y6JCgiI0ZJTkFOQ0VfTVVMVElTVEVQX0RlYWxlclByb3ZpbmNlIixiKS52YWwoKSk\/MDw9YzohMH0sdmFsaWRhdGVBZGRyZXNzRW1wbG95ZXJWVzpmdW5jdGlvbihjKXt2YXIgZD1hLmZvcm1kYXRhLmVtcGxveW1lbnRTdGF0dXM7aWYoIkZJTkFOQ0VfRk9STV9FTVBMT1lNRU5UX1NUQVRVU19FTVBMT1lFRF9GVUxMIiE9ZCYmIkZJTkFOQ0VfRk9STV9FTVBMT1lNRU5UX1NUQVRVU19FTVBMT1lFRF9QQVJUIiE9CmQpcmV0dXJuITA7aWYoIiIhPWMpe2lmKCJ1bmRlZmluZWQiIT09YS5mb3JtZGF0YS5zcGxpdEFkZHJlc3NFbXBsb3llciYmbnVsbCE9PWEuZm9ybWRhdGEuc3BsaXRBZGRyZXNzRW1wbG95ZXImJiJvYmplY3QiPT09dHlwZW9mIGEuZm9ybWRhdGEuc3BsaXRBZGRyZXNzRW1wbG95ZXImJiJjaXR5ImluIGEuZm9ybWRhdGEuc3BsaXRBZGRyZXNzRW1wbG95ZXImJiIiIT09YS5mb3JtZGF0YS5zcGxpdEFkZHJlc3NFbXBsb3llci5jaXR5KXJldHVybiEwO2suaW5pdEdvb2dsZUF1dG9jb21wbGV0ZUVtcGxveWVyKCk7Yz0kKCcjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSBpbnB1dFtkYXRhLWdvb2dsZS1wbGFjZXMtY3VzdG9tPSJ0cnVlIl1bbmFtZT0iYWRkcmVzc0VtcGxveWVyIl0nLGIpLmdvb2dsZVBsYWNlcygiZ2V0QWRkcmVzcyIpO2lmKCIiIT1jLmNpdHkmJiIiIT1jLnN0cmVldClyZXR1cm4gYS5mb3JtZGF0YS5zcGxpdEFkZHJlc3NFbXBsb3llcj1jLCEwfXJldHVybiExfSx2YWxpZGF0ZUFkZHJlc3NFbXBsb3llcjI6ZnVuY3Rpb24oYyl7aWYoIiIhPQpjKXtpZigidW5kZWZpbmVkIiE9PWEuZm9ybWRhdGEuc3BsaXRBZGRyZXNzRW1wbG95ZXIyJiZudWxsIT09YS5mb3JtZGF0YS5zcGxpdEFkZHJlc3NFbXBsb3llcjImJiJvYmplY3QiPT09dHlwZW9mIGEuZm9ybWRhdGEuc3BsaXRBZGRyZXNzRW1wbG95ZXIyJiYiY2l0eSJpbiBhLmZvcm1kYXRhLnNwbGl0QWRkcmVzc0VtcGxveWVyMiYmIiIhPT1hLmZvcm1kYXRhLnNwbGl0QWRkcmVzc0VtcGxveWVyMi5jaXR5KXJldHVybiEwO2suaW5pdEdvb2dsZUF1dG9jb21wbGV0ZUVtcGxveWVyMigpO2M9JCgnI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gaW5wdXRbZGF0YS1nb29nbGUtcGxhY2VzLWN1c3RvbT0idHJ1ZSJdW25hbWU9ImFkZHJlc3NFbXBsb3llcjIiXScsYikuZ29vZ2xlUGxhY2VzKCJnZXRBZGRyZXNzIik7aWYoIiIhPWMuY2l0eSYmIiIhPWMuc3RyZWV0KXJldHVybiBhLmZvcm1kYXRhLnNwbGl0QWRkcmVzc0VtcGxveWVyMj1jLCEwfXJldHVybiExfSx2YWxpZGF0ZVN0YXR1c1RpbWU6ZnVuY3Rpb24oYyl7aWYoIiIhPQpjJiYxMD09Yy5sZW5ndGgpcmV0dXJuIGM9Yy5zcGxpdCgiLyIpLG5ldyBEYXRlKCtjWzJdLGNbMV0tMSwrY1swXSk8bmV3IERhdGV9LHZhbGlkYXRlRW1wbG95bWVudEFkZGVkSW5mbzpmdW5jdGlvbihjKXt2YXIgZD1hLmZvcm1kYXRhLmVtcGxveW1lbnRTdGF0dXM7cmV0dXJuIkZJTkFOQ0VfRk9STV9FTVBMT1lNRU5UX1NUQVRVU19FTVBMT1lFRCI9PWR8fCJGSU5BTkNFX0ZPUk1fRU1QTE9ZTUVOVF9TVEFUVVNfU0VMRkVNUExPWUVEIj09ZHx8IkZJTkFOQ0VfRk9STV9FTVBMT1lNRU5UX1NUQVRVU19TVFVERU5UIj09ZHx8IkZJTkFOQ0VfRk9STV9FTVBMT1lNRU5UX1NUQVRVU19PVEhFUiI9PWQ\/IiIhPT1jJiYidW5kZWZpbmVkIiE9PXR5cGVvZiBjOiEwfSx2YWxpZGF0ZUVtcGxveW1lbnRBZGRlZEluZm9WVzpmdW5jdGlvbihjKXt2YXIgZD1hLmZvcm1kYXRhLmVtcGxveW1lbnRTdGF0dXM7cmV0dXJuIkZJTkFOQ0VfRk9STV9FTVBMT1lNRU5UX1NUQVRVU19FTVBMT1lFRF9GVUxMIj09CmR8fCJGSU5BTkNFX0ZPUk1fRU1QTE9ZTUVOVF9TVEFUVVNfRU1QTE9ZRURfUEFSVCI9PWR8fCJGSU5BTkNFX0ZPUk1fRU1QTE9ZTUVOVF9TVEFUVVNfU0VMRkVNUExPWUVEIj09ZD8iIiE9PWMmJiJ1bmRlZmluZWQiIT09dHlwZW9mIGM6ITB9LHZhbGlkYXRlRW1wbG95ZXJJbmZvOmZ1bmN0aW9uKCl7cmV0dXJuIkZJTkFOQ0VfRk9STV9FTVBMT1lNRU5UX1NUQVRVU19FTVBMT1lFRCI9PWEuZm9ybWRhdGEuZW1wbG95bWVudFN0YXR1cz8iIiE9PWEuZm9ybWRhdGEuZW1wbG95ZXJOYW1lJiYidW5kZWZpbmVkIiE9PXR5cGVvZiBhLmZvcm1kYXRhLmVtcGxveWVyTmFtZSYmay52YWxpZGF0ZVBob25lTnVtYmVyRW1wbG95ZXIoYS5mb3JtZGF0YS5lbXBsb3llclBob25lKTohMH0sdmFsaWRhdGVFbXBsb3llckluZm9WVzpmdW5jdGlvbigpe3ZhciBjPWEuZm9ybWRhdGEuZW1wbG95bWVudFN0YXR1cztyZXR1cm4iRklOQU5DRV9GT1JNX0VNUExPWU1FTlRfU1RBVFVTX0VNUExPWUVEX0ZVTEwiPT0KY3x8IkZJTkFOQ0VfRk9STV9FTVBMT1lNRU5UX1NUQVRVU19FTVBMT1lFRF9QQVJUIj09Yz8iIiE9PWEuZm9ybWRhdGEuZW1wbG95ZXJOYW1lJiYidW5kZWZpbmVkIiE9PXR5cGVvZiBhLmZvcm1kYXRhLmVtcGxveWVyTmFtZSYmay52YWxpZGF0ZVBob25lTnVtYmVyRW1wbG95ZXIoYS5mb3JtZGF0YS5lbXBsb3llclBob25lKTohMH0sdmFsaWRhdGVFbXBsb3llckluZm8yOmZ1bmN0aW9uKCl7cmV0dXJuIiIhPT1hLmZvcm1kYXRhLmVtcGxveWVyTmFtZTImJiJ1bmRlZmluZWQiIT09dHlwZW9mIGEuZm9ybWRhdGEuZW1wbG95ZXJOYW1lMiYmay52YWxpZGF0ZVBob25lTnVtYmVyRW1wbG95ZXIyKGEuZm9ybWRhdGEuZW1wbG95ZXJQaG9uZTIpfSx2YWxpZGF0ZUVtYWlsOmZ1bmN0aW9uKGMpeyQudmFsaWRpdHkuc2V0dXAoe291dHB1dE1vZGU6ImNzc09ubHkiLHNjcm9sbFRvOiExfSkuc3RhcnQoKTskKCIjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSIsYikuZmluZCgnaW5wdXRbbmFtZT0iZW1haWxBZGRyZXNzIl0nKS52YWxpZEVtYWlsQWRkcmVzcygpOwpyZXR1cm4gJC52YWxpZGl0eS5lbmQoKS52YWxpZH0sdmFsaWRhdGVCaXJ0aGRhdGU6ZnVuY3Rpb24oKXt2YXIgYz1hLmZvcm1kYXRhLmJpcnRoZGF0ZVllYXIsZD1hLmZvcm1kYXRhLmJpcnRoZGF0ZU1vbnRoLGU9YS5mb3JtZGF0YS5iaXJ0aGRhdGVEYXk7aWYoMzE8ZXx8MTI8ZHx8MTkwMD5jfHwwPj1lfHwwPj1kfHwiIj09Y3x8IiI9PWR8fCIiPT1lfHw0PmMubGVuZ3RoKXJldHVybiExO2M9MTg8PWsuY2FsY3VsYXRlQWdlKG5ldyBEYXRlKGMsZC0xLGUpLG5ldyBEYXRlKTthLnNob3dFcnJvciYmKGM\/JCgiI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm1fZXJyb3IiLGIpLmh0bWwoIiIpOiQoIiNmaW5hbmNlX211bHRpc3RlcF9mb3JtX2Vycm9yIixiKS5odG1sKCQoIiNiaXJ0aGRhdGVFcnJvck1zZyIpLnZhbCgpKSk7cmV0dXJuIGN9LGNhbGN1bGF0ZUFnZTpmdW5jdGlvbihjLGQpe3ZhciBlPWQuZ2V0RnVsbFllYXIoKSxmPWQuZ2V0TW9udGgoKTtkPWQuZ2V0RGF0ZSgpO3ZhciBnPWMuZ2V0RnVsbFllYXIoKSwKbD1jLmdldE1vbnRoKCk7Yz1jLmdldERhdGUoKTtlLT1nO2YtPWw7aWYoMD5mfHwwPT1mJiYwPmQtYyllPXBhcnNlSW50KGUpLTE7cmV0dXJuIGV9LGhhc1VzZXI6ZnVuY3Rpb24oKXtyZXR1cm4hIWxvY2FsU3RvcmFnZS5nZXRJdGVtKCJmaW5hbmNlX211bHRpc3RlcF9mb3JtX3VzZXJJZCIpfSx1c2VySWQ6ZnVuY3Rpb24oYyl7YyYmKC0xPT1jPyhsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgiZmluYW5jZV9tdWx0aXN0ZXBfZm9ybV91c2VySWQiKSxhLnVzZXJJZD0hMSk6KGxvY2FsU3RvcmFnZS5zZXRJdGVtKCJmaW5hbmNlX211bHRpc3RlcF9mb3JtX3VzZXJJZCIsYyksYS51c2VySWQ9YykpO2EudXNlcklkfHwoYS51c2VySWQ9bG9jYWxTdG9yYWdlLmdldEl0ZW0oImZpbmFuY2VfbXVsdGlzdGVwX2Zvcm1fdXNlcklkIikpO3JldHVybiBhLnVzZXJJZH0scHVzaERhdGFUb1NlcnZlcjpmdW5jdGlvbigpe2lmKCFhLmFqYXhQcm9jZXNzKXthLmFqYXhQcm9jZXNzPSEwO2suc2V0VHJhZGVJbigpOwp2YXIgYz1hLmZvcm1kYXRhLGQ9YS5zdGVwLGU9JChiKS5maW5kKCIuZW1haWxTdWJqZWN0IiksZj0kKGIpLmZpbmQoIi5lbWFpbEJvZHkiKTtlPWUudGV4dCgpP2UudGV4dCgpOiIiO2Y9Zi5odG1sKCk\/Zi5odG1sKCk6IiI7dmFyIGc9JCgiI2N1cnJlbnRTdGF0dXMiKS52YWwoKTtlbWFpbEhhbmRsZXIuYm9keT1mO2VtYWlsSGFuZGxlci5zdWJqZWN0PWU7ay5zZXRFbWFpbEhhbmRsZXJTZW5kKCk7ZW1haWxIYW5kbGVyLm1haWxJRD0iQ3JlZGl0TXVsdGlzdGVwUmVxdWVzdCI7IjEiPT11JiYoZW1haWxIYW5kbGVyLm1haWxJRD0iQ3JlZGl0TXVsdGlzdGVwUmVxdWVzdDJuZENoYW5jZSIpOyIxIj09eCYmKGVtYWlsSGFuZGxlci5tYWlsSUQ9IkNyZWRpdE11bHRpc3RlcFJlcXVlc3RJbnN0YW50Iik7ZW1haWxIYW5kbGVyLmRlcGFydG1lbnQ9IkZJTkFOQ0UiO2VtYWlsSGFuZGxlci5pc21vYmlsZXNpdGU9MT09JCgiI2lzbW9iaWxlIikudmFsKCk\/IllFUyI6Ik5PIjtlbWFpbEhhbmRsZXIuY29uZGl0aW9uPQoidW5kZWZpbmVkIj09dHlwZW9mIGc\/InVzZWQiOmcudG9Mb3dlckNhc2UoKTtlbWFpbEhhbmRsZXIuY3JlZGl0RGF0YT1jO0o9ZW1haWxIYW5kbGVyLmdldEpzb25PYmplY3QoKTskLmFqYXgoe3VybDoiLyIrdysiL2FqYXgvc2V0RmluYW5jZU11bHRpc3RlcERhdGE\/d3N3aWR0aD0wIixkYXRhVHlwZToiSlNPTiIsdHlwZToiUE9TVCIsZGF0YTp7dXNlcklkOmsudXNlcklkKCksZm9ybWRhdGE6YyxzdGVwOmQsZG9tYWluOlEsc2l0ZUlkOiQoIiNzaXRlSUQiKS52YWwoKXx8JCgiI3RvcHNpdGVpZCIpLnZhbCgpLGxhbmc6JCgiI2FjdGl2ZXNpdGVsYW5ndWFnZSIpLnZhbCgpLGVtYWlsSGFuZGxlckpzb25PYmplY3Q6SlNPTi5zdHJpbmdpZnkoSil9LHN1Y2Nlc3M6ZnVuY3Rpb24obCl7bC5JRCYmbC5pZENoYW5nZWQmJmsudXNlcklkKGwuSUQpfSxjb21wbGV0ZTpmdW5jdGlvbihsKXthLmFqYXhQcm9jZXNzPSExfX0pfX0sb25TaG93RnVuY3Rpb25Ub1J1bjpmdW5jdGlvbigpe2lmKGEub25TaG93RnVuY3Rpb24uaGFzT3duUHJvcGVydHkoInN0ZXAiKwphLnN0ZXApJiYidW5kZWZpbmVkIiE9dHlwZW9mIGEub25TaG93RnVuY3Rpb25bInN0ZXAiK2Euc3RlcF0ubGVuZ3RoKWZvcih2YXIgYz0wO2M8YS5vblNob3dGdW5jdGlvblsic3RlcCIrYS5zdGVwXS5sZW5ndGg7YysrKWtbYS5vblNob3dGdW5jdGlvblsic3RlcCIrYS5zdGVwXVtjXS5mdW5jXSgpfSxpbml0R29vZ2xlQXV0b2NvbXBsZXRlOmZ1bmN0aW9uKCl7dmFyIGM9JCgnI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gaW5wdXRbZGF0YS1nb29nbGUtcGxhY2VzLWN1c3RvbT0idHJ1ZSJdW25hbWU9ImFkZHJlc3MiXScsYilbMF0sZD1uZXcgTXV0YXRpb25PYnNlcnZlcihmdW5jdGlvbigpe2QuZGlzY29ubmVjdCgpOyQoJyNmaW5hbmNlX211bHRpc3RlcF9mb3JtIGlucHV0W2RhdGEtZ29vZ2xlLXBsYWNlcy1jdXN0b209InRydWUiXVtuYW1lPSJhZGRyZXNzIl0nLGIpLmF0dHIoImF1dG9jb21wbGV0ZSIsIm5ldy1wYXNzd29yZCIpfSk7ZC5vYnNlcnZlKGMse2F0dHJpYnV0ZXM6ITAsCmF0dHJpYnV0ZUZpbHRlcjpbImF1dG9jb21wbGV0ZSJdfSk7Yz0kKCIjRklOQU5DRV9NVUxUSVNURVBfZGVhbGVyTGF0IikudmFsKCk7dmFyIGU9JCgiI0ZJTkFOQ0VfTVVMVElTVEVQX2RlYWxlckxvbmciKS52YWwoKTtjPXtsYXQ6Yyxsb25nOmUscmFkaXVzOjJFNX07JCgnI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gaW5wdXRbZGF0YS1nb29nbGUtcGxhY2VzLWN1c3RvbT0idHJ1ZSJdW25hbWU9ImFkZHJlc3MiXScsYikuZ29vZ2xlUGxhY2VzKGMpfSxpbml0R29vZ2xlQXV0b2NvbXBsZXRlMjpmdW5jdGlvbigpe3ZhciBjPSQoJyNmaW5hbmNlX211bHRpc3RlcF9mb3JtIGlucHV0W2RhdGEtZ29vZ2xlLXBsYWNlcy1jdXN0b209InRydWUiXVtuYW1lPSJhZGRyZXNzMiJdJyxiKVswXSxkPW5ldyBNdXRhdGlvbk9ic2VydmVyKGZ1bmN0aW9uKCl7ZC5kaXNjb25uZWN0KCk7JCgnI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gaW5wdXRbZGF0YS1nb29nbGUtcGxhY2VzLWN1c3RvbT0idHJ1ZSJdW25hbWU9ImFkZHJlc3MyIl0nLApiKS5hdHRyKCJhdXRvY29tcGxldGUiLCJuZXctcGFzc3dvcmQiKX0pO2Qub2JzZXJ2ZShjLHthdHRyaWJ1dGVzOiEwLGF0dHJpYnV0ZUZpbHRlcjpbImF1dG9jb21wbGV0ZSJdfSk7Yz0kKCIjRklOQU5DRV9NVUxUSVNURVBfZGVhbGVyTGF0IikudmFsKCk7dmFyIGU9JCgiI0ZJTkFOQ0VfTVVMVElTVEVQX2RlYWxlckxvbmciKS52YWwoKTtjPXtsYXQ6Yyxsb25nOmUscmFkaXVzOjJFNX07JCgnI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gaW5wdXRbZGF0YS1nb29nbGUtcGxhY2VzLWN1c3RvbT0idHJ1ZSJdW25hbWU9ImFkZHJlc3MyIl0nLGIpLmdvb2dsZVBsYWNlcyhjKX0saW5pdEdvb2dsZUF1dG9jb21wbGV0ZUVtcGxveWVyOmZ1bmN0aW9uKCl7dmFyIGM9JCgnI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gaW5wdXRbZGF0YS1nb29nbGUtcGxhY2VzLWN1c3RvbT0idHJ1ZSJdW25hbWU9ImFkZHJlc3NFbXBsb3llciJdJyxiKVswXSxkPW5ldyBNdXRhdGlvbk9ic2VydmVyKGZ1bmN0aW9uKCl7ZC5kaXNjb25uZWN0KCk7CiQoJyNmaW5hbmNlX211bHRpc3RlcF9mb3JtIGlucHV0W2RhdGEtZ29vZ2xlLXBsYWNlcy1jdXN0b209InRydWUiXVtuYW1lPSJhZGRyZXNzRW1wbG95ZXIiXScsYikuYXR0cigiYXV0b2NvbXBsZXRlIiwibmV3LXBhc3N3b3JkIil9KTtkLm9ic2VydmUoYyx7YXR0cmlidXRlczohMCxhdHRyaWJ1dGVGaWx0ZXI6WyJhdXRvY29tcGxldGUiXX0pO2M9JCgiI0ZJTkFOQ0VfTVVMVElTVEVQX2RlYWxlckxhdCIpLnZhbCgpO3ZhciBlPSQoIiNGSU5BTkNFX01VTFRJU1RFUF9kZWFsZXJMb25nIikudmFsKCk7Yz17bGF0OmMsbG9uZzplLHJhZGl1czoyRTV9OyQoJyNmaW5hbmNlX211bHRpc3RlcF9mb3JtIGlucHV0W2RhdGEtZ29vZ2xlLXBsYWNlcy1jdXN0b209InRydWUiXVtuYW1lPSJhZGRyZXNzRW1wbG95ZXIiXScsYikuZ29vZ2xlUGxhY2VzKGMpfSxpbml0R29vZ2xlQXV0b2NvbXBsZXRlRW1wbG95ZXIyOmZ1bmN0aW9uKCl7dmFyIGM9JCgnI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gaW5wdXRbZGF0YS1nb29nbGUtcGxhY2VzLWN1c3RvbT0idHJ1ZSJdW25hbWU9ImFkZHJlc3NFbXBsb3llcjIiXScsCmIpWzBdLGQ9bmV3IE11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24oKXtkLmRpc2Nvbm5lY3QoKTskKCcjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSBpbnB1dFtkYXRhLWdvb2dsZS1wbGFjZXMtY3VzdG9tPSJ0cnVlIl1bbmFtZT0iYWRkcmVzc0VtcGxveWVyMiJdJyxiKS5hdHRyKCJhdXRvY29tcGxldGUiLCJuZXctcGFzc3dvcmQiKX0pO2Qub2JzZXJ2ZShjLHthdHRyaWJ1dGVzOiEwLGF0dHJpYnV0ZUZpbHRlcjpbImF1dG9jb21wbGV0ZSJdfSk7Yz0kKCIjRklOQU5DRV9NVUxUSVNURVBfZGVhbGVyTGF0IikudmFsKCk7dmFyIGU9JCgiI0ZJTkFOQ0VfTVVMVElTVEVQX2RlYWxlckxvbmciKS52YWwoKTtjPXtsYXQ6Yyxsb25nOmUscmFkaXVzOjJFNX07JCgnI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gaW5wdXRbZGF0YS1nb29nbGUtcGxhY2VzLWN1c3RvbT0idHJ1ZSJdW25hbWU9ImFkZHJlc3NFbXBsb3llcjIiXScsYikuZ29vZ2xlUGxhY2VzKGMpfSxpbml0QmlydGhkYXRlQ2hhbmdlOmZ1bmN0aW9uKCl7JCgiLmZpbmFuY2VfbXVsdGlzdGVwX2JpcnRoZGF0ZV9pbnB1dF9kaXYgaW5wdXQiKS5vbigia2V5dXAiLApmdW5jdGlvbigpeyQodGhpcykudmFsKCkubGVuZ3RoPT0kKHRoaXMpLmF0dHIoIm1heGxlbmd0aCIpJiYkKHRoaXMpLnBhcmVudCgpLm5leHQoIi5maW5hbmNlX211bHRpc3RlcF9iaXJ0aGRhdGVfaW5wdXRfZGl2IikuZmluZCgiaW5wdXQiKS50cmlnZ2VyKCJmb2N1cyIpfSl9LHZhbGlkYXRlTm90RW1wdHlFbXBsb3llclN0YXR1c1RpbWU6ZnVuY3Rpb24oKXtpZig3MDxhLmZvcm1kYXRhLmVtcGxveW1lbnRTdGF0dXNZZWFyKXJldHVybiBhLnNob3dFcnJvciYmKCQoJ1tuYW1lPSJlbXBsb3ltZW50U3RhdHVzWWVhciJdJykuY3NzKCJib3JkZXItY29sb3IiLCIjYzgzZTNlIiksJCgnW25hbWU9ImVtcGxveW1lbnRTdGF0dXNZZWFyIl0nKS5jc3MoImJvcmRlci1ib3R0b20td2lkdGgiLCI1cHgiKSwkKCIjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybV9lcnJvciIsYikuaHRtbCgkKCIjYWRkcmVzc1RpbWVzRXJyb3JNc2ciKS52YWwoKSkpLCExO2lmKDEyPGEuZm9ybWRhdGEuZW1wbG95bWVudFN0YXR1c01vbnRoKXJldHVybiBhLnNob3dFcnJvciYmCigkKCdbbmFtZT0iZW1wbG95bWVudFN0YXR1c01vbnRoIl0nKS5jc3MoImJvcmRlci1jb2xvciIsIiNjODNlM2UiKSwkKCdbbmFtZT0iZW1wbG95bWVudFN0YXR1c01vbnRoIl0nKS5jc3MoImJvcmRlci1ib3R0b20td2lkdGgiLCI1cHgiKSwkKCIjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybV9lcnJvciIsYikuaHRtbCgkKCIjYWRkcmVzc1RpbWVzRXJyb3JNc2ciKS52YWwoKSkpLCExO2lmKDA+PWEuZm9ybWRhdGEuZW1wbG95bWVudFN0YXR1c1llYXImJjA+PWEuZm9ybWRhdGEuZW1wbG95bWVudFN0YXR1c01vbnRoKXJldHVybiBhLnNob3dFcnJvciYmKCQoJ1tuYW1lPSJlbXBsb3ltZW50U3RhdHVzWWVhciJdJykuY3NzKCJib3JkZXItY29sb3IiLCIjYzgzZTNlIiksJCgnW25hbWU9ImVtcGxveW1lbnRTdGF0dXNNb250aCJdJykuY3NzKCJib3JkZXItY29sb3IiLCIjYzgzZTNlIiksJCgnW25hbWU9ImVtcGxveW1lbnRTdGF0dXNZZWFyIl0nKS5jc3MoImJvcmRlci1ib3R0b20td2lkdGgiLAoiNXB4IiksJCgnW25hbWU9ImVtcGxveW1lbnRTdGF0dXNNb250aCJdJykuY3NzKCJib3JkZXItYm90dG9tLXdpZHRoIiwiNXB4IiksJCgiI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm1fZXJyb3IiLGIpLmh0bWwoJCgiI2FkZHJlc3NUaW1lc0Vycm9yTXNnIikudmFsKCkpKSwhMTthLnNob3dFcnJvciYmKCQoJ1tuYW1lPSJlbXBsb3ltZW50U3RhdHVzWWVhciJdJykuY3NzKCJib3JkZXItY29sb3IiLCIiKSwkKCdbbmFtZT0iZW1wbG95bWVudFN0YXR1c01vbnRoIl0nKS5jc3MoImJvcmRlci1jb2xvciIsIiIpLCQoJ1tuYW1lPSJlbXBsb3ltZW50U3RhdHVzWWVhciJdJykuY3NzKCJib3JkZXItYm90dG9tLXdpZHRoIiwiIiksJCgnW25hbWU9ImVtcGxveW1lbnRTdGF0dXNNb250aCJdJykuY3NzKCJib3JkZXItYm90dG9tLXdpZHRoIiwiIiksJCgiI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm1fZXJyb3IiLGIpLmh0bWwoIiIpKTsiMSI9PXgmJig2MD4xMipwYXJzZUludChhLmZvcm1kYXRhLmVtcGxveW1lbnRTdGF0dXNZZWFyKSsKcGFyc2VJbnQoYS5mb3JtZGF0YS5lbXBsb3ltZW50U3RhdHVzTW9udGgpP2EubmV4dFN0ZXBEZWZhdWx0VmFsdWVzLnN0ZXAxNz0yOTphLm5leHRTdGVwRGVmYXVsdFZhbHVlcy5zdGVwMTc9MjIpO3JldHVybiEwfSx2YWxpZGF0ZU5vdEVtcHR5RW1wbG95ZXJTdGF0dXNUaW1lVlc6ZnVuY3Rpb24oKXtpZigiRklOQU5DRV9GT1JNX0VNUExPWU1FTlRfU1RBVFVTX1VORU1QTE9ZRUQiPT1hLmZvcm1kYXRhLmVtcGxveW1lbnRTdGF0dXN8fCJGSU5BTkNFX0ZPUk1fRU1QTE9ZTUVOVF9TVEFUVVNfU1RVREVOVCI9PWEuZm9ybWRhdGEuZW1wbG95bWVudFN0YXR1c3x8IkZJTkFOQ0VfRk9STV9FTVBMT1lNRU5UX1NUQVRVU19SRVRJUkVEIj09YS5mb3JtZGF0YS5lbXBsb3ltZW50U3RhdHVzKXJldHVybiEwO2lmKDcwPGEuZm9ybWRhdGEuZW1wbG95bWVudFN0YXR1c1llYXIpcmV0dXJuIGEuc2hvd0Vycm9yJiYoJCgnW25hbWU9ImVtcGxveW1lbnRTdGF0dXNZZWFyIl0nKS5jc3MoImJvcmRlci1jb2xvciIsCiIjYzgzZTNlIiksJCgnW25hbWU9ImVtcGxveW1lbnRTdGF0dXNZZWFyIl0nKS5jc3MoImJvcmRlci1ib3R0b20td2lkdGgiLCI1cHgiKSwkKCIjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybV9lcnJvciIsYikuaHRtbCgkKCIjYWRkcmVzc1RpbWVzRXJyb3JNc2ciKS52YWwoKSkpLCExO2lmKDEyPGEuZm9ybWRhdGEuZW1wbG95bWVudFN0YXR1c01vbnRoKXJldHVybiBhLnNob3dFcnJvciYmKCQoJ1tuYW1lPSJlbXBsb3ltZW50U3RhdHVzTW9udGgiXScpLmNzcygiYm9yZGVyLWNvbG9yIiwiI2M4M2UzZSIpLCQoJ1tuYW1lPSJlbXBsb3ltZW50U3RhdHVzTW9udGgiXScpLmNzcygiYm9yZGVyLWJvdHRvbS13aWR0aCIsIjVweCIpLCQoIiNmaW5hbmNlX211bHRpc3RlcF9mb3JtX2Vycm9yIixiKS5odG1sKCQoIiNhZGRyZXNzVGltZXNFcnJvck1zZyIpLnZhbCgpKSksITE7aWYoMD49YS5mb3JtZGF0YS5lbXBsb3ltZW50U3RhdHVzWWVhciYmMD49YS5mb3JtZGF0YS5lbXBsb3ltZW50U3RhdHVzTW9udGgpcmV0dXJuIGEuc2hvd0Vycm9yJiYKKCQoJ1tuYW1lPSJlbXBsb3ltZW50U3RhdHVzWWVhciJdJykuY3NzKCJib3JkZXItY29sb3IiLCIjYzgzZTNlIiksJCgnW25hbWU9ImVtcGxveW1lbnRTdGF0dXNNb250aCJdJykuY3NzKCJib3JkZXItY29sb3IiLCIjYzgzZTNlIiksJCgnW25hbWU9ImVtcGxveW1lbnRTdGF0dXNZZWFyIl0nKS5jc3MoImJvcmRlci1ib3R0b20td2lkdGgiLCI1cHgiKSwkKCdbbmFtZT0iZW1wbG95bWVudFN0YXR1c01vbnRoIl0nKS5jc3MoImJvcmRlci1ib3R0b20td2lkdGgiLCI1cHgiKSwkKCIjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybV9lcnJvciIsYikuaHRtbCgkKCIjYWRkcmVzc1RpbWVzRXJyb3JNc2ciKS52YWwoKSkpLCExO2Euc2hvd0Vycm9yJiYoJCgnW25hbWU9ImVtcGxveW1lbnRTdGF0dXNZZWFyIl0nKS5jc3MoImJvcmRlci1jb2xvciIsIiIpLCQoJ1tuYW1lPSJlbXBsb3ltZW50U3RhdHVzTW9udGgiXScpLmNzcygiYm9yZGVyLWNvbG9yIiwiIiksJCgnW25hbWU9ImVtcGxveW1lbnRTdGF0dXNZZWFyIl0nKS5jc3MoImJvcmRlci1ib3R0b20td2lkdGgiLAoiIiksJCgnW25hbWU9ImVtcGxveW1lbnRTdGF0dXNNb250aCJdJykuY3NzKCJib3JkZXItYm90dG9tLXdpZHRoIiwiIiksJCgiI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm1fZXJyb3IiLGIpLmh0bWwoIiIpKTsiMSI9PXgmJig2MD4xMipwYXJzZUludChhLmZvcm1kYXRhLmVtcGxveW1lbnRTdGF0dXNZZWFyKStwYXJzZUludChhLmZvcm1kYXRhLmVtcGxveW1lbnRTdGF0dXNNb250aCk\/YS5uZXh0U3RlcERlZmF1bHRWYWx1ZXMuc3RlcDE3PTI5OmEubmV4dFN0ZXBEZWZhdWx0VmFsdWVzLnN0ZXAxNz0yMik7cmV0dXJuITB9LHZhbGlkYXRlTm90RW1wdHlFbXBsb3llclN0YXR1c1RpbWUyOmZ1bmN0aW9uKCl7aWYoNzA8YS5mb3JtZGF0YS5lbXBsb3ltZW50U3RhdHVzWWVhcjIpcmV0dXJuIGEuc2hvd0Vycm9yJiYoJCgnW25hbWU9ImVtcGxveW1lbnRTdGF0dXNZZWFyMiJdJykuY3NzKCJib3JkZXItY29sb3IiLCIjYzgzZTNlIiksJCgnW25hbWU9ImVtcGxveW1lbnRTdGF0dXNZZWFyMiJdJykuY3NzKCJib3JkZXItYm90dG9tLXdpZHRoIiwKIjVweCIpLCQoIiNmaW5hbmNlX211bHRpc3RlcF9mb3JtX2Vycm9yIixiKS5odG1sKCQoIiNhZGRyZXNzVGltZXNFcnJvck1zZyIpLnZhbCgpKSksITE7aWYoMTI8YS5mb3JtZGF0YS5lbXBsb3ltZW50U3RhdHVzTW9udGgyKXJldHVybiBhLnNob3dFcnJvciYmKCQoJ1tuYW1lPSJlbXBsb3ltZW50U3RhdHVzTW9udGgyIl0nKS5jc3MoImJvcmRlci1jb2xvciIsIiNjODNlM2UiKSwkKCdbbmFtZT0iZW1wbG95bWVudFN0YXR1c01vbnRoMiJdJykuY3NzKCJib3JkZXItYm90dG9tLXdpZHRoIiwiNXB4IiksJCgiI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm1fZXJyb3IiLGIpLmh0bWwoJCgiI2FkZHJlc3NUaW1lc0Vycm9yTXNnIikudmFsKCkpKSwhMTtpZigwPj1hLmZvcm1kYXRhLmVtcGxveW1lbnRTdGF0dXNZZWFyMiYmMD49YS5mb3JtZGF0YS5lbXBsb3ltZW50U3RhdHVzTW9udGgyKXJldHVybiBhLnNob3dFcnJvciYmKCQoJ1tuYW1lPSJlbXBsb3ltZW50U3RhdHVzWWVhcjIiXScpLmNzcygiYm9yZGVyLWNvbG9yIiwKIiNjODNlM2UiKSwkKCdbbmFtZT0iZW1wbG95bWVudFN0YXR1c01vbnRoMiJdJykuY3NzKCJib3JkZXItY29sb3IiLCIjYzgzZTNlIiksJCgnW25hbWU9ImVtcGxveW1lbnRTdGF0dXNZZWFyMiJdJykuY3NzKCJib3JkZXItYm90dG9tLXdpZHRoIiwiNXB4IiksJCgnW25hbWU9ImVtcGxveW1lbnRTdGF0dXNNb250aDIiXScpLmNzcygiYm9yZGVyLWJvdHRvbS13aWR0aCIsIjVweCIpLCQoIiNmaW5hbmNlX211bHRpc3RlcF9mb3JtX2Vycm9yIixiKS5odG1sKCQoIiNhZGRyZXNzVGltZXNFcnJvck1zZyIpLnZhbCgpKSksITE7YS5zaG93RXJyb3ImJigkKCdbbmFtZT0iZW1wbG95bWVudFN0YXR1c1llYXIyIl0nKS5jc3MoImJvcmRlci1jb2xvciIsIiIpLCQoJ1tuYW1lPSJlbXBsb3ltZW50U3RhdHVzTW9udGgyIl0nKS5jc3MoImJvcmRlci1jb2xvciIsIiIpLCQoJ1tuYW1lPSJlbXBsb3ltZW50U3RhdHVzWWVhcjIiXScpLmNzcygiYm9yZGVyLWJvdHRvbS13aWR0aCIsIiIpLCQoJ1tuYW1lPSJlbXBsb3ltZW50U3RhdHVzTW9udGgyIl0nKS5jc3MoImJvcmRlci1ib3R0b20td2lkdGgiLAoiIiksJCgiI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm1fZXJyb3IiLGIpLmh0bWwoIiIpKTtyZXR1cm4hMH0sdmFsaWRhdGVOb3RFbXB0eUFkZHJlc3NUaW1lOmZ1bmN0aW9uKCl7aWYoNzA8YS5mb3JtZGF0YS5hZGRyZXNzX3llYXJzKXJldHVybiBhLnNob3dFcnJvciYmKCQoJ1tuYW1lPSJhZGRyZXNzX3llYXJzIl0nKS5jc3MoImJvcmRlci1jb2xvciIsIiNjODNlM2UiKSwkKCdbbmFtZT0iYWRkcmVzc195ZWFycyJdJykuY3NzKCJib3JkZXItYm90dG9tLXdpZHRoIiwiNXB4IiksJCgiI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm1fZXJyb3IiLGIpLmh0bWwoJCgiI2FkZHJlc3NUaW1lc0Vycm9yTXNnIikudmFsKCkpKSwhMTtpZigxMjxhLmZvcm1kYXRhLmFkZHJlc3NfbW9udGhzKXJldHVybiBhLnNob3dFcnJvciYmKCQoJ1tuYW1lPSJhZGRyZXNzX21vbnRocyJdJykuY3NzKCJib3JkZXItY29sb3IiLCIjYzgzZTNlIiksJCgnW25hbWU9ImFkZHJlc3NfbW9udGhzIl0nKS5jc3MoImJvcmRlci1ib3R0b20td2lkdGgiLAoiNXB4IiksJCgiI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm1fZXJyb3IiLGIpLmh0bWwoJCgiI2FkZHJlc3NUaW1lc0Vycm9yTXNnIikudmFsKCkpKSwhMTtpZigwPj1hLmZvcm1kYXRhLmFkZHJlc3NfeWVhcnMmJjA+PWEuZm9ybWRhdGEuYWRkcmVzc19tb250aHMpcmV0dXJuIGEuc2hvd0Vycm9yJiYoJCgnW25hbWU9ImFkZHJlc3NfeWVhcnMiXScpLmNzcygiYm9yZGVyLWNvbG9yIiwiI2M4M2UzZSIpLCQoJ1tuYW1lPSJhZGRyZXNzX21vbnRocyJdJykuY3NzKCJib3JkZXItY29sb3IiLCIjYzgzZTNlIiksJCgnW25hbWU9ImFkZHJlc3NfeWVhcnMiXScpLmNzcygiYm9yZGVyLWJvdHRvbS13aWR0aCIsIjVweCIpLCQoJ1tuYW1lPSJhZGRyZXNzX21vbnRocyJdJykuY3NzKCJib3JkZXItYm90dG9tLXdpZHRoIiwiNXB4IiksJCgiI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm1fZXJyb3IiLGIpLmh0bWwoJCgiI2FkZHJlc3NUaW1lc0Vycm9yTXNnIikudmFsKCkpKSwhMTthLnNob3dFcnJvciYmCigkKCdbbmFtZT0iYWRkcmVzc195ZWFycyJdJykuY3NzKCJib3JkZXItY29sb3IiLCIiKSwkKCdbbmFtZT0iYWRkcmVzc19tb250aHMiXScpLmNzcygiYm9yZGVyLWNvbG9yIiwiIiksJCgnW25hbWU9ImFkZHJlc3NfeWVhcnMiXScpLmNzcygiYm9yZGVyLWJvdHRvbS13aWR0aCIsIiIpLCQoJ1tuYW1lPSJhZGRyZXNzX21vbnRocyJdJykuY3NzKCJib3JkZXItYm90dG9tLXdpZHRoIiwiIiksJCgiI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm1fZXJyb3IiLGIpLmh0bWwoIiIpKTsiMSI9PXgmJigyND4xMipwYXJzZUludChhLmZvcm1kYXRhLmFkZHJlc3NfeWVhcnMpK3BhcnNlSW50KGEuZm9ybWRhdGEuYWRkcmVzc19tb250aHMpP2EubmV4dFN0ZXBEZWZhdWx0VmFsdWVzLnN0ZXAxMj0yNzphLm5leHRTdGVwRGVmYXVsdFZhbHVlcy5zdGVwMTI9MTMpO3JldHVybiEwfSx2YWxpZGF0ZUNvbnNlbnRzOmZ1bmN0aW9uKCl7bGV0IGMsZCxlO3JldHVybigiUUMiIT0obnVsbCE9KGU9bnVsbD09KGM9CmEuZm9ybWRhdGEuc3BsaXRBZGRyZXNzKT92b2lkIDA6bnVsbD09KGQ9Yy5wcm92aW5jZSk\/dm9pZCAwOmQuc2hvcnRfbmFtZSk\/ZTokKCIjRklOQU5DRV9NVUxUSVNURVBfRGVhbGVyUHJvdmluY2UiLGIpLnZhbCgpKXx8YS5mb3JtZGF0YS5jb25zZW50QWNjb3VudE1vbml0b3JpbmcmJmEuZm9ybWRhdGEuY29uc2VudENyZWRpdEFzc2Vzc21lbnQpJiZhLmZvcm1kYXRhLmNvbnNlbnRWVz8hMDohMX0sdmFsaWRhdGVOb3RFbXB0eUFkZHJlc3MyVGltZTpmdW5jdGlvbigpe2lmKDcwPGEuZm9ybWRhdGEuYWRkcmVzczJfeWVhcnMpcmV0dXJuIGEuc2hvd0Vycm9yJiYoJCgnW25hbWU9ImFkZHJlc3MyX3llYXJzIl0nKS5jc3MoImJvcmRlci1jb2xvciIsIiNjODNlM2UiKSwkKCdbbmFtZT0iYWRkcmVzczJfeWVhcnMiXScpLmNzcygiYm9yZGVyLWJvdHRvbS13aWR0aCIsIjVweCIpLCQoIiNmaW5hbmNlX211bHRpc3RlcF9mb3JtX2Vycm9yIixiKS5odG1sKCQoIiNhZGRyZXNzVGltZXNFcnJvck1zZyIpLnZhbCgpKSksCiExO2lmKDEyPGEuZm9ybWRhdGEuYWRkcmVzczJfbW9udGhzKXJldHVybiBhLnNob3dFcnJvciYmKCQoJ1tuYW1lPSJhZGRyZXNzMl9tb250aHMiXScpLmNzcygiYm9yZGVyLWNvbG9yIiwiI2M4M2UzZSIpLCQoJ1tuYW1lPSJhZGRyZXNzMl9tb250aHMiXScpLmNzcygiYm9yZGVyLWJvdHRvbS13aWR0aCIsIjVweCIpLCQoIiNmaW5hbmNlX211bHRpc3RlcF9mb3JtX2Vycm9yIixiKS5odG1sKCQoIiNhZGRyZXNzVGltZXNFcnJvck1zZyIpLnZhbCgpKSksITE7aWYoMD49YS5mb3JtZGF0YS5hZGRyZXNzMl95ZWFycyYmMD49YS5mb3JtZGF0YS5hZGRyZXNzMl9tb250aHMpcmV0dXJuIGEuc2hvd0Vycm9yJiYoJCgnW25hbWU9ImFkZHJlc3MyX3llYXJzIl0nKS5jc3MoImJvcmRlci1jb2xvciIsIiNjODNlM2UiKSwkKCdbbmFtZT0iYWRkcmVzczJfbW9udGhzIl0nKS5jc3MoImJvcmRlci1jb2xvciIsIiNjODNlM2UiKSwkKCdbbmFtZT0iYWRkcmVzczJfeWVhcnMiXScpLmNzcygiYm9yZGVyLWJvdHRvbS13aWR0aCIsCiI1cHgiKSwkKCdbbmFtZT0iYWRkcmVzczJfbW9udGhzIl0nKS5jc3MoImJvcmRlci1ib3R0b20td2lkdGgiLCI1cHgiKSwkKCIjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybV9lcnJvciIsYikuaHRtbCgkKCIjYWRkcmVzczJUaW1lc0Vycm9yTXNnIikudmFsKCkpKSwhMTthLnNob3dFcnJvciYmKCQoJ1tuYW1lPSJhZGRyZXNzMl95ZWFycyJdJykuY3NzKCJib3JkZXItY29sb3IiLCIiKSwkKCdbbmFtZT0iYWRkcmVzczJfbW9udGhzIl0nKS5jc3MoImJvcmRlci1jb2xvciIsIiIpLCQoJ1tuYW1lPSJhZGRyZXNzMl95ZWFycyJdJykuY3NzKCJib3JkZXItYm90dG9tLXdpZHRoIiwiIiksJCgnW25hbWU9ImFkZHJlc3MyX21vbnRocyJdJykuY3NzKCJib3JkZXItYm90dG9tLXdpZHRoIiwiIiksJCgiI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm1fZXJyb3IiLGIpLmh0bWwoIiIpKTtyZXR1cm4hMH0sdmFsaWRhdGVOb3RFbXB0eU1vbnRobHlJbmNvbWVUaW1lOmZ1bmN0aW9uKCl7aWYoNzA8YS5mb3JtZGF0YS5tb250aGx5SW5jb21lX3llYXJzKXJldHVybiBhLnNob3dFcnJvciYmCigkKCdbbmFtZT0ibW9udGhseUluY29tZV95ZWFycyJdJykuY3NzKCJib3JkZXItY29sb3IiLCIjYzgzZTNlIiksJCgnW25hbWU9Im1vbnRobHlJbmNvbWVfeWVhcnMiXScpLmNzcygiYm9yZGVyLWJvdHRvbS13aWR0aCIsIjVweCIpLCQoIiNmaW5hbmNlX211bHRpc3RlcF9mb3JtX2Vycm9yIixiKS5odG1sKCQoIiNtb250aGx5SW5jb21lVGltZXNFcnJvck1zZyIpLnZhbCgpKSksITE7aWYoMTI8YS5mb3JtZGF0YS5tb250aGx5SW5jb21lX21vbnRocylyZXR1cm4gYS5zaG93RXJyb3ImJigkKCdbbmFtZT0ibW9udGhseUluY29tZV9tb250aHMiXScpLmNzcygiYm9yZGVyLWNvbG9yIiwiI2M4M2UzZSIpLCQoJ1tuYW1lPSJtb250aGx5SW5jb21lX21vbnRocyJdJykuY3NzKCJib3JkZXItYm90dG9tLXdpZHRoIiwiNXB4IiksJCgiI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm1fZXJyb3IiLGIpLmh0bWwoJCgiI21vbnRobHlJbmNvbWVUaW1lc0Vycm9yTXNnIikudmFsKCkpKSwhMTtpZigwPj0KYS5mb3JtZGF0YS5tb250aGx5SW5jb21lX3llYXJzJiYwPj1hLmZvcm1kYXRhLm1vbnRobHlJbmNvbWVfbW9udGhzKXJldHVybiBhLnNob3dFcnJvciYmKCQoJ1tuYW1lPSJtb250aGx5SW5jb21lX3llYXJzIl0nKS5jc3MoImJvcmRlci1jb2xvciIsIiNjODNlM2UiKSwkKCdbbmFtZT0ibW9udGhseUluY29tZV9tb250aHMiXScpLmNzcygiYm9yZGVyLWNvbG9yIiwiI2M4M2UzZSIpLCQoJ1tuYW1lPSJtb250aGx5SW5jb21lX3llYXJzIl0nKS5jc3MoImJvcmRlci1ib3R0b20td2lkdGgiLCI1cHgiKSwkKCdbbmFtZT0ibW9udGhseUluY29tZV9tb250aHMiXScpLmNzcygiYm9yZGVyLWJvdHRvbS13aWR0aCIsIjVweCIpLCQoIiNmaW5hbmNlX211bHRpc3RlcF9mb3JtX2Vycm9yIixiKS5odG1sKCQoIiNtb250aGx5SW5jb21lVGltZXNFcnJvck1zZyIpLnZhbCgpKSksITE7YS5zaG93RXJyb3ImJigkKCdbbmFtZT0ibW9udGhseUluY29tZV95ZWFycyJdJykuY3NzKCJib3JkZXItY29sb3IiLAoiIiksJCgnW25hbWU9Im1vbnRobHlJbmNvbWVfbW9udGhzIl0nKS5jc3MoImJvcmRlci1jb2xvciIsIiIpLCQoJ1tuYW1lPSJtb250aGx5SW5jb21lX3llYXJzIl0nKS5jc3MoImJvcmRlci1ib3R0b20td2lkdGgiLCIiKSwkKCdbbmFtZT0ibW9udGhseUluY29tZV9tb250aHMiXScpLmNzcygiYm9yZGVyLWJvdHRvbS13aWR0aCIsIiIpLCQoIiNmaW5hbmNlX211bHRpc3RlcF9mb3JtX2Vycm9yIixiKS5odG1sKCIiKSk7cmV0dXJuITB9LHZhbGlkYXRlUGhvbmVOdW1iZXI6ZnVuY3Rpb24oYyl7cmV0dXJuIGMmJihwaG9uZT1jLnJlcGxhY2UoIigiLCIiKS5yZXBsYWNlKCIpIiwiIikucmVwbGFjZSgiICIsIiIpLnJlcGxhY2UoIi0iLCIiKSwxMD09cGhvbmUubGVuZ3RoKT8oJC52YWxpZGl0eS5zZXR1cCh7b3V0cHV0TW9kZToicG9wdXAiLHNjcm9sbFRvOiExfSkuc3RhcnQoKSwkKCIjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSIsYikuZmluZCgnaW5wdXRbbmFtZT0icGhvbmVOdW1iZXIiXScpLnZhbGlkYXRlUGhvbmUoKSwKJC52YWxpZGl0eS5lbmQoKS52YWxpZCk6ITF9LHZhbGlkYXRlUGhvbmVOdW1iZXJFbXBsb3llcjpmdW5jdGlvbihjKXtyZXR1cm4gYyYmKHBob25lPWMucmVwbGFjZSgiKCIsIiIpLnJlcGxhY2UoIikiLCIiKS5yZXBsYWNlKCIgIiwiIikucmVwbGFjZSgiLSIsIiIpLDEwPT1waG9uZS5sZW5ndGgpPygkLnZhbGlkaXR5LnNldHVwKHtvdXRwdXRNb2RlOiJwb3B1cCIsc2Nyb2xsVG86ITF9KS5zdGFydCgpLCQoIiNmaW5hbmNlX211bHRpc3RlcF9mb3JtIixiKS5maW5kKCJpbnB1dC5lbXBsb3llclBob25lIikudmFsaWRhdGVQaG9uZSgpLCQudmFsaWRpdHkuZW5kKCkudmFsaWQpOiExfSx2YWxpZGF0ZVBob25lTnVtYmVyRW1wbG95ZXIyOmZ1bmN0aW9uKGMpe3JldHVybiBjJiYocGhvbmU9Yy5yZXBsYWNlKCIoIiwiIikucmVwbGFjZSgiKSIsIiIpLnJlcGxhY2UoIiAiLCIiKS5yZXBsYWNlKCItIiwiIiksMTA9PXBob25lLmxlbmd0aCk\/KCQudmFsaWRpdHkuc2V0dXAoe291dHB1dE1vZGU6InBvcHVwIiwKc2Nyb2xsVG86ITF9KS5zdGFydCgpLCQoIiNmaW5hbmNlX211bHRpc3RlcF9mb3JtIixiKS5maW5kKCJpbnB1dC5lbXBsb3llclBob25lMiIpLnZhbGlkYXRlUGhvbmUoKSwkLnZhbGlkaXR5LmVuZCgpLnZhbGlkKTohMX0sdmFsaWRhdGVTSU46ZnVuY3Rpb24oYyl7cmV0dXJuKCIxIj09dSYmIjAiPT1DfHwiMSI9PXgpJiYiIj09YyYmMDw9YS5vcHRpb25hbFN0ZXAuaW5kZXhPZigyMil8fGMmJihzaW49Yy5yZXBsYWNlQWxsKCIgIiwiIiksOT09c2luLmxlbmd0aCk\/ITA6ITF9LHZhbGlkYXRlVmVoaWNsZTpmdW5jdGlvbigpe3ZhciBjPSExO3N3aXRjaChhLmN1cnJlbnREZXB0KXtjYXNlICJVU0VEIjpjPSIiIT1hLmZvcm1kYXRhLmN1cnJlbnRNYWtlJiYiIiE9YS5mb3JtZGF0YS5jdXJyZW50TW9kZWwmJiIiIT1hLmZvcm1kYXRhLmN1cnJlbnRZZWFyJiYiIiE9YS5mb3JtZGF0YS5jdXJyZW50U3RvY2tOdW1iZXImJiIiIT1hLmZvcm1kYXRhLmN1cnJlbnRUcmltJiYiIiE9YS5mb3JtZGF0YS5jdXJyZW50Q2FySWQ7CmJyZWFrO2Nhc2UgIk5FV0lOViI6Yz0iIiE9YS5mb3JtZGF0YS5jdXJyZW50TWFrZSYmIiIhPWEuZm9ybWRhdGEuY3VycmVudE1vZGVsJiYiIiE9YS5mb3JtZGF0YS5jdXJyZW50WWVhciYmIiIhPWEuZm9ybWRhdGEuY3VycmVudFN0b2NrTnVtYmVyJiYiIiE9YS5mb3JtZGF0YS5jdXJyZW50VHJpbSYmIiIhPWEuZm9ybWRhdGEuY3VycmVudENhcklkJiYiIiE9YS5mb3JtZGF0YS5jdXJyZW50U3R5bGVpZDticmVhaztjYXNlICJORVciOmM9IiIhPWEuZm9ybWRhdGEuY3VycmVudE1ha2UmJiIiIT1hLmZvcm1kYXRhLmN1cnJlbnRNb2RlbCYmIiIhPWEuZm9ybWRhdGEuY3VycmVudFllYXImJiIiIT1hLmZvcm1kYXRhLmN1cnJlbnRTdHlsZWlkJiYiIiE9YS5mb3JtZGF0YS5jdXJyZW50VHJpbX1yZXR1cm4gY30saW5pdFZlaGljbGVTZWxlY3Rpb246ZnVuY3Rpb24oKXthLmluaXRWZWhpY2xlU2VsZWN0aW9uRmlyc3QmJigkKCdpbnB1dFtuYW1lPSJmaW5hbmNlTXVsdGlzdGVwRGVwdCJdJywKYikub24oImNoYW5nZSIsZnVuY3Rpb24oKXtsZXQgYz1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidmVoaWNsZVNlbGVjdGlvbldyYXBwZXIiKTtjLnJlcGxhY2VXaXRoKGMuY2xvbmVOb2RlKCEwKSk7ay5pbml0VmVoaWNsZVNlbGVjdGlvbigpfSksYS5pbml0VmVoaWNsZVNlbGVjdGlvbkZpcnN0PSExKTskKCIjZmluYW5jZU11bHRpc3RlcE1ha2UiLGIpLm9mZigiY2hhbmdlIik7JCgiI2ZpbmFuY2VNdWx0aXN0ZXBNb2RlbCIsYikub2ZmKCJjaGFuZ2UiKTskKCIjZmluYW5jZU11bHRpc3RlcFRyaW0iLGIpLm9mZigiY2hhbmdlIik7IlVTRUQiPT1hLmN1cnJlbnREZXB0fHwiTkVXSU5WIj09YS5jdXJyZW50RGVwdD8obSgibmV3aW52IiksJCgiI2ZpbmFuY2VNdWx0aXN0ZXBNYWtlIixiKS5vbigiY2hhbmdlIixmdW5jdGlvbigpeyIiIT0kKCIjZmluYW5jZU11bHRpc3RlcE1ha2UiLGIpLnZhbCgpJiYoYS5mb3JtZGF0YS5jdXJyZW50TW9kZWw9IiIsYS5mb3JtZGF0YS5jdXJyZW50TW9kZWxUZXh0PQoiIixhLmZvcm1kYXRhLmN1cnJlbnRUcmltPSIiLGEuZm9ybWRhdGEuY3VycmVudFllYXI9IiIsYS5mb3JtZGF0YS5jdXJyZW50U3R5bGVpZD0iIixhLmZvcm1kYXRhLnZlaGljbGVQcmljZT0iIixhLmZvcm1kYXRhLmN1cnJlbnRDYXJJZD0iIixhLmZvcm1kYXRhLmN1cnJlbnRTdG9ja051bWJlcj0iIixhLmZvcm1kYXRhLmN1cnJlbnRNaWxlYWdlPTEwLGsuY2hlY2tWYWxpZGl0eSgpLG4oIm5ld2ludiIsJCgiI2ZpbmFuY2VNdWx0aXN0ZXBNYWtlIixiKS52YWwoKSkpfSksJCgiI2ZpbmFuY2VNdWx0aXN0ZXBNb2RlbCIsYikub24oImNoYW5nZSIsZnVuY3Rpb24oKXsiIiE9JCgiI2ZpbmFuY2VNdWx0aXN0ZXBNYWtlIixiKS52YWwoKSYmIiIhPSQoIiNmaW5hbmNlTXVsdGlzdGVwTW9kZWwiLGIpLnZhbCgpJiYoYS5mb3JtZGF0YS5jdXJyZW50VHJpbT0iIixhLmZvcm1kYXRhLmN1cnJlbnRZZWFyPSIiLGEuZm9ybWRhdGEuY3VycmVudFN0eWxlaWQ9IiIsYS5mb3JtZGF0YS52ZWhpY2xlUHJpY2U9CiIiLGEuZm9ybWRhdGEuY3VycmVudENhcklkPSIiLGEuZm9ybWRhdGEuY3VycmVudFN0b2NrTnVtYmVyPSIiLGEuZm9ybWRhdGEuY3VycmVudE1pbGVhZ2U9MTAsay5jaGVja1ZhbGlkaXR5KCksdigkKCIjZmluYW5jZU11bHRpc3RlcE1ha2UiLGIpLnZhbCgpLCQoIiNmaW5hbmNlTXVsdGlzdGVwTW9kZWwgb3B0aW9uOnNlbGVjdGVkIixiKS5hdHRyKCJkYXRhLW1vZGVsIikpKX0pLCQoIiNmaW5hbmNlTXVsdGlzdGVwVHJpbSIsYikub24oImNoYW5nZSIsZnVuY3Rpb24oKXthLmZvcm1kYXRhLmN1cnJlbnRNYWtlPSQoIiNmaW5hbmNlTXVsdGlzdGVwTWFrZSIsYikudmFsKCk7YS5mb3JtZGF0YS5jdXJyZW50TW9kZWw9JCgiI2ZpbmFuY2VNdWx0aXN0ZXBNb2RlbCBvcHRpb246c2VsZWN0ZWQiLGIpLmF0dHIoImRhdGEtbW9kZWwiKTthLmZvcm1kYXRhLmN1cnJlbnRUcmltPSQoIiNmaW5hbmNlTXVsdGlzdGVwVHJpbSIsYikudmFsKCk7YS5mb3JtZGF0YS5jdXJyZW50WWVhcj0kKCIjZmluYW5jZU11bHRpc3RlcFRyaW0gb3B0aW9uOnNlbGVjdGVkIiwKYikuYXR0cigiZGF0YS15ZWFyIik7YS5mb3JtZGF0YS5jdXJyZW50U3R5bGVpZD0kKCIjZmluYW5jZU11bHRpc3RlcFRyaW0gb3B0aW9uOnNlbGVjdGVkIixiKS5hdHRyKCJkYXRhLXN0eWxlaWQiKTthLmZvcm1kYXRhLnZlaGljbGVQcmljZT0kKCIjZmluYW5jZU11bHRpc3RlcFRyaW0gb3B0aW9uOnNlbGVjdGVkIixiKS5hdHRyKCJkYXRhLXByaWNlIik7YS5mb3JtZGF0YS5jdXJyZW50Q2FySWQ9JCgiI2ZpbmFuY2VNdWx0aXN0ZXBUcmltIG9wdGlvbjpzZWxlY3RlZCIsYikuYXR0cigiZGF0YS12ZWhpY2xlaWQiKTthLmZvcm1kYXRhLmN1cnJlbnRTdG9ja051bWJlcj0kKCIjZmluYW5jZU11bHRpc3RlcFRyaW0gb3B0aW9uOnNlbGVjdGVkIixiKS5hdHRyKCJkYXRhLXN0b2NrbnVtYmVyIik7YS5mb3JtZGF0YS5jdXJyZW50TWlsZWFnZT0kKCIjZmluYW5jZU11bHRpc3RlcFRyaW0gb3B0aW9uOnNlbGVjdGVkIixiKS5hdHRyKCJkYXRhLW1pbGVhZ2UiKTt2YXIgYz0kKCIjZmluYW5jZU11bHRpc3RlcFRyaW0gb3B0aW9uOnNlbGVjdGVkIiwKYikuYXR0cigiZGF0YS1pc25ldyIpLGQ9JCgiI2ZpbmFuY2VNdWx0aXN0ZXBUcmltIG9wdGlvbjpzZWxlY3RlZCIsYikuYXR0cigiZGF0YS1pc2RlbW8iKSYmIjEiPT0kKCdpbnB1dFtuYW1lPSJGSU5BTkNFX0RFTU9BU05FVyJdJyxiKS52YWwoKTthLmN1cnJlbnREZXB0PSIxIj09Y3x8ZD8iTkVXSU5WIjoiVVNFRCI7ay5jaGVja1ZhbGlkaXR5KCl9KSk6KG0oYS5jdXJyZW50RGVwdCksJCgiI2ZpbmFuY2VNdWx0aXN0ZXBNYWtlIixiKS5vbigiY2hhbmdlIixmdW5jdGlvbigpeyIiIT0kKCIjZmluYW5jZU11bHRpc3RlcE1ha2UiLGIpLnZhbCgpJiYoYS5mb3JtZGF0YS5jdXJyZW50TW9kZWw9IiIsYS5mb3JtZGF0YS5jdXJyZW50TW9kZWxUZXh0PSIiLGEuZm9ybWRhdGEuY3VycmVudFllYXI9IiIsYS5mb3JtZGF0YS5jdXJyZW50VHJpbT0iIixhLmZvcm1kYXRhLmN1cnJlbnRNaWxlYWdlPTEwLGEuZm9ybWRhdGEuY3VycmVudFN0eWxlaWQ9IiIsYS5mb3JtZGF0YS52ZWhpY2xlUHJpY2U9CiIiLGsuY2hlY2tWYWxpZGl0eSgpLG4oYS5jdXJyZW50RGVwdCwkKCIjZmluYW5jZU11bHRpc3RlcE1ha2UiLGIpLnZhbCgpKSl9KSwkKCIjZmluYW5jZU11bHRpc3RlcE1vZGVsIixiKS5vbigiY2hhbmdlIixmdW5jdGlvbigpeyIiIT0kKCIjZmluYW5jZU11bHRpc3RlcE1ha2UiLGIpLnZhbCgpJiYiIiE9JCgiI2ZpbmFuY2VNdWx0aXN0ZXBNb2RlbCIsYikudmFsKCkmJihhLmZvcm1kYXRhLmN1cnJlbnRZZWFyPSIiLGEuZm9ybWRhdGEuY3VycmVudFRyaW09IiIsYS5mb3JtZGF0YS5jdXJyZW50TWlsZWFnZT0xMCxhLmZvcm1kYXRhLmN1cnJlbnRTdHlsZWlkPSIiLGEuZm9ybWRhdGEudmVoaWNsZVByaWNlPSIiLGsuY2hlY2tWYWxpZGl0eSgpLHIoJCgiI2ZpbmFuY2VNdWx0aXN0ZXBNYWtlIixiKS52YWwoKSwkKCIjZmluYW5jZU11bHRpc3RlcE1vZGVsIG9wdGlvbjpzZWxlY3RlZCIsYikuYXR0cigiZGF0YS1tb2RlbCIpLCQoIiNmaW5hbmNlTXVsdGlzdGVwTW9kZWwgb3B0aW9uOnNlbGVjdGVkIiwKYikuYXR0cigiZGF0YS15ZWFyIikpKX0pLCQoIiNmaW5hbmNlTXVsdGlzdGVwVHJpbSIsYikub24oImNoYW5nZSIsZnVuY3Rpb24oKXthLmZvcm1kYXRhLmN1cnJlbnRNYWtlPSQoIiNmaW5hbmNlTXVsdGlzdGVwTWFrZSIsYikudmFsKCk7YS5mb3JtZGF0YS5jdXJyZW50TW9kZWw9JCgiI2ZpbmFuY2VNdWx0aXN0ZXBNb2RlbCBvcHRpb246c2VsZWN0ZWQiLGIpLmF0dHIoImRhdGEtbW9kZWwiKTthLmZvcm1kYXRhLmN1cnJlbnRZZWFyPSQoIiNmaW5hbmNlTXVsdGlzdGVwTW9kZWwgb3B0aW9uOnNlbGVjdGVkIixiKS5hdHRyKCJkYXRhLXllYXIiKTthLmZvcm1kYXRhLmN1cnJlbnRUcmltPSQoIiNmaW5hbmNlTXVsdGlzdGVwVHJpbSIsYikudmFsKCk7YS5mb3JtZGF0YS5jdXJyZW50TWlsZWFnZT0xMDthLmZvcm1kYXRhLmN1cnJlbnRTdHlsZWlkPSQoIiNmaW5hbmNlTXVsdGlzdGVwVHJpbSBvcHRpb246c2VsZWN0ZWQiLGIpLmF0dHIoImRhdGEtc3R5bGVpZCIpO2EuZm9ybWRhdGEudmVoaWNsZVByaWNlPQokKCIjZmluYW5jZU11bHRpc3RlcFRyaW0gb3B0aW9uOnNlbGVjdGVkIixiKS5hdHRyKCJkYXRhLXByaWNlIik7ay5jaGVja1ZhbGlkaXR5KCl9KSl9LHZhbGlkYXRlUGF5bWVudDpmdW5jdGlvbigpe3JldHVybiIiIT1hLmZvcm1kYXRhLnBheW1lbnRUeXBlJiYiIiE9YS5mb3JtZGF0YS5wYXltZW50VGVybSYmIiIhPWEuZm9ybWRhdGEucGF5bWVudEludGVydmFsJiYiIiE9YS5mb3JtZGF0YS5wYXltZW50VmFsdWUmJiIiIT1hLmZvcm1kYXRhLnBheW1lbnRSYXRlfHxhLmZvcm1kYXRhLm5vUGF5bWVudH0saW5pdENhbGN1bGF0b3I6ZnVuY3Rpb24oKXt2YXIgYz0kKCJib2R5IikuaGFzQ2xhc3MoIkZSRU5DSCIpPyIgc3VyIGNlICIrYS5mb3JtZGF0YS5jdXJyZW50TWFrZSsiICIrYS5mb3JtZGF0YS5jdXJyZW50TW9kZWwrIiAiK2EuZm9ybWRhdGEuY3VycmVudFllYXI6IiBvbiB0aGlzICIrYS5mb3JtZGF0YS5jdXJyZW50WWVhcisiICIrYS5mb3JtZGF0YS5jdXJyZW50TWFrZSsiICIrCmEuZm9ybWRhdGEuY3VycmVudE1vZGVsOyQoIiNmaW5hbmNlX211bHRpc3RlcF9mb3JtIC5tdWx0aXN0ZXBQYXltZW50VmVoaWNsZSIsYikudGV4dChjKTtpZigiTkVXIj09YS5jdXJyZW50RGVwdHx8Ik5FV0lOViI9PWEuY3VycmVudERlcHQpeyQoIiNmaW5hbmNlX211bHRpc3RlcF9mb3JtX2Vycm9yIixiKS5odG1sKCIiKTthLmNhbGN1bGF0b3JGdW5jdGlvbnM9bmV3IGNhbGN1bGF0b3JGdW5jdGlvbnMoIiMiK2JbMF0uaWQrIiAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSIpO2M9Ik5FV0lOViI9PWEuY3VycmVudERlcHQ7bGV0IGU9ImZpbmFuY2luZyIsZj0wLGc9MCxsPSQoJ2lucHV0W25hbWU9IkFETUlOX1NIT1dfTE9XRVNUX1BBWU1FTlRfSU5URVJWQUwiXScpLnZhbCgpO3ZhciBkPTJFNDtDb29raWVzLmdldCgicGF5bWVudENhbGN1bGF0b3JTZWxlY3RlZE9wdGlvbnMiKSYmKGQ9Q29va2llcy5nZXQoInBheW1lbnRDYWxjdWxhdG9yU2VsZWN0ZWRPcHRpb25zIikuc3BsaXQoIi0iKSwKZT0idW5kZWZpbmVkIiE9ZFswXT9kWzBdOmUsZj1kWzFdLGc9cGFyc2VJbnQoZFs0XSl8fDAsbD1kWzJdLGQ9ZFszXSk7YS5jYWxjdWxhdG9yRnVuY3Rpb25zLmluaXQoYS5mb3JtZGF0YS5jdXJyZW50U3R5bGVpZCxlLGcsMCxsLGQsYyxhLmZvcm1kYXRhLmN1cnJlbnRTdG9ja051bWJlcik7JCgiYm9keSIpLm9mZigiY2hhbmdlIiwiIyIrYlswXS5pZCsnICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIC5wYXltZW50Q2FsY3VsYXRvclBheW1lbnRTZWxlY3QgaW5wdXRbbmFtZT0ic2VsZWN0ZWRQYXltZW50Il0sICMnK2JbMF0uaWQrJyAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSAucGF5bWVudENhbGN1bGF0b3JQYXltZW50U2VsZWN0IGlucHV0W25hbWU9InNlbGVjdGVkUGF5bWVudFdpdGhUYXhlcyJdJyk7JCgiYm9keSIpLm9mZigibm9QYXltZW50IiwiIyIrYlswXS5pZCsiICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIik7JCgiYm9keSIpLm9mZigicGF5bWVudHNSZWFkeSIsIiMiK2JbMF0uaWQrCiIgI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0iKTskKCJib2R5Iikub24oIm5vUGF5bWVudCIsIiMiK2JbMF0uaWQrIiAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSIsZnVuY3Rpb24oKXthLmZvcm1kYXRhLm5vUGF5bWVudD0hMDthLm5leHQoITApfSk7JCgiYm9keSIpLm9uKCJjaGFuZ2UiLCIjIitiWzBdLmlkKycgI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gLnBheW1lbnRDYWxjdWxhdG9yUGF5bWVudFNlbGVjdCBpbnB1dFtuYW1lPSJzZWxlY3RlZFBheW1lbnQiXSwgIycrYlswXS5pZCsnICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIC5wYXltZW50Q2FsY3VsYXRvclBheW1lbnRTZWxlY3QgaW5wdXRbbmFtZT0ic2VsZWN0ZWRQYXltZW50V2l0aFRheGVzIl0nLGZ1bmN0aW9uKCl7dmFyIHA9ImZpbmFuY2luZyI9PWEuY2FsY3VsYXRvckZ1bmN0aW9ucy5wYXltZW50VHlwZT8kKCJib2R5IikuaGFzQ2xhc3MoIkZSRU5DSCIpPyJGaW5hbmNlbWVudCI6IkZpbmFuY2luZyI6ImxlYXNpbmciPT0KYS5jYWxjdWxhdG9yRnVuY3Rpb25zLnBheW1lbnRUeXBlPyQoImJvZHkiKS5oYXNDbGFzcygiRlJFTkNIIik\/IkxvY2F0aW9uIjoiTGVhc2luZyI6IiI7YS5mb3JtZGF0YS5wYXltZW50VHlwZT1wO2EuZm9ybWRhdGEucGF5bWVudFR5cGVSZWFsPWEuY2FsY3VsYXRvckZ1bmN0aW9ucy5wYXltZW50VHlwZTthLmZvcm1kYXRhLnBheW1lbnRUZXJtPSQodGhpcykudmFsKCk7YS5mb3JtZGF0YS5wYXltZW50UmF0ZVR5cGU9JCh0aGlzKS5hdHRyKCJkYXRhLXJhdGV0eXBlIik7cD0kKHRoaXMpLmNsb3Nlc3QoIi5maW5hbmNlTXVsdGlzdGVwTmV3Q2FsY3VsYXRvciIpLmZpbmQoJy5wYXltZW50Q2FsY3VsYXRvclBheW1lbnRTZWxlY3QgaW5wdXRbbmFtZT0ic2VsZWN0ZWRQYXltZW50V2l0aFRheGVzIl1bdmFsdWU9IicrYS5mb3JtZGF0YS5wYXltZW50VGVybSsnIl1bZGF0YS1yYXRldHlwZT0iJythLmZvcm1kYXRhLnBheW1lbnRSYXRlVHlwZSsnIl0nKTt2YXIgcTthLmZvcm1kYXRhLnBheW1lbnRSZXNpZHVhbFZhbHVlPQpudWxsIT0ocT1wLmF0dHIoImRhdGEtcmVzaWR1YWwiKSk\/cTokKHRoaXMpLmF0dHIoImRhdGEtcmVzaWR1YWwiKTt2YXIgdDthLmZvcm1kYXRhLnBheW1lbnRWYWx1ZT1udWxsIT0odD1wLmF0dHIoImRhdGEtcmVhbHBheW1lbnQiKSk\/dDokKHRoaXMpLmF0dHIoImRhdGEtcmVhbHBheW1lbnQiKTt2YXIgQTthLmZvcm1kYXRhLmJhc2VwYXltZW50PW51bGwhPShBPXAuYXR0cigiZGF0YS1iYXNlcGF5bWVudCIpKT9BOiQodGhpcykuYXR0cigiZGF0YS1iYXNlcGF5bWVudCIpO2EuZm9ybWRhdGEucGF5bWVudFRvdGFsSW5jZW50aXZlPXAuYXR0cigiZGF0YS10b3RhbGluY2VudGl2ZSIpO2EuZm9ybWRhdGEucGF5bWVudEdTVD1wLmF0dHIoImRhdGEtZ3N0Iik7YS5mb3JtZGF0YS5wYXltZW50SFNUPXAuYXR0cigiZGF0YS1oc3QiKTthLmZvcm1kYXRhLnBheW1lbnRQU1Q9cC5hdHRyKCJkYXRhLXBzdCIpO2EuZm9ybWRhdGEudmVoaWNsZUluaXRpYWxQcmljZT1wLmF0dHIoImRhdGEtaW5pdGlhbFByaWNlIik7CmEuZm9ybWRhdGEudmVoaWNsZUZpbmFsUHJpY2U9cC5hdHRyKCJkYXRhLWZpbmFsUHJpY2UiKTt2YXIgSDthLmZvcm1kYXRhLnBheW1lbnRGZWVzTGlzdD1udWxsIT0oSD1KU09OLnBhcnNlKGF0b2IocC5hdHRyKCJkYXRhLWZlZXNMaXN0IikpKSk\/SDpbXTtxPTA7Zm9yKHZhciBOIG9mIGEuZm9ybWRhdGEucGF5bWVudEZlZXNMaXN0KXErPU4uYW1vdW50fHwwO2EuZm9ybWRhdGEucGF5bWVudFRvdGFsRmVlPXE7dmFyIEk7YS5mb3JtZGF0YS5wYXltZW50SW5jZW50aXZlc0xpc3Q9bnVsbCE9KEk9SlNPTi5wYXJzZShhdG9iKHAuYXR0cigiZGF0YS1pbmNlbnRpdmVzTGlzdCIpKSkpP0k6W107YS5mb3JtZGF0YS5wYXltZW50RG93blBheW1lbnQ9YS5jYWxjdWxhdG9yRnVuY3Rpb25zLmRvd25wYXltZW50fHwwO2EuZm9ybWRhdGEucGF5bWVudEttQWxsb3dhbmNlPWEuY2FsY3VsYXRvckZ1bmN0aW9ucy5rbUFsbG93YW5jZTthLmZvcm1kYXRhLnBheW1lbnRJbnRlcnZhbD1hLmNhbGN1bGF0b3JGdW5jdGlvbnMucGF5bWVudEZyZXF1ZW5jeTsKYS5mb3JtZGF0YS5wYXltZW50UmF0ZT0kKHRoaXMpLmF0dHIoImRhdGEtcmF0ZSIpO2EuZm9ybWRhdGEudHJhZGVJblZhbHVlPWEuY2FsY3VsYXRvckZ1bmN0aW9ucy50cmFkZUluVmFsdWU7cT0ocGFyc2VJbnQoYS5mb3JtZGF0YS5wYXltZW50RG93blBheW1lbnQpfHwwKSsocGFyc2VJbnQoYS5mb3JtZGF0YS50cmFkZUluVmFsdWUpfHwwKTtDb29raWVzLnNldCgicGF5bWVudENhbGN1bGF0b3JTZWxlY3RlZE9wdGlvbnMiLGEuZm9ybWRhdGEucGF5bWVudFR5cGVSZWFsKyItIithLmZvcm1kYXRhLnBheW1lbnRUZXJtKyItIithLmZvcm1kYXRhLnBheW1lbnRJbnRlcnZhbCsiLSIrYS5mb3JtZGF0YS5wYXltZW50S21BbGxvd2FuY2UrIi0iK3EsbnVsbCwiLyIpOyJORVdDQVJTIiE9KCQoIiN0YXJnZXRQYWdlIikudmFsKCl8fCExKSYmIlVTRURDQVJTIiE9KCQoIiN0YXJnZXRQYWdlIikudmFsKCl8fCExKSYmImZ1bmN0aW9uIj09dHlwZW9mIGNoYW5nZVBhZ2VQYXltZW50VmFsdWUmJgooST0kKHRoaXMpLmF0dHIoImRhdGEtcmVhbHBheW1lbnQiKSxOPSQodGhpcykuYXR0cigiZGF0YS10b3RhbGludGVyZXN0IikscD0kKHRoaXMpLmF0dHIoImRhdGEtbHV4ZVRheEFtb3VudCIpLHE9cS50b0ZpeGVkKDApLHQ9JCh0aGlzKS5hdHRyKCJkYXRhLXJhdGV0eXBlIiksQT0kKHRoaXMpLmF0dHIoImRhdGEtZWZmZWN0aXZlUmF0ZSIpLEg9JCh0aGlzKS5hdHRyKCJkYXRhLXRvdGFsQ29zdCIpLGNoYW5nZVBhZ2VQYXltZW50VmFsdWUoe2N1cnJlbnRQYXltZW50OkksY3VycmVudFJhdGU6YS5mb3JtZGF0YS5wYXltZW50UmF0ZSxwYXltZW50VGVybTphLmZvcm1kYXRhLnBheW1lbnRUZXJtLHBheW1lbnRUeXBlOmEuZm9ybWRhdGEucGF5bWVudFR5cGVSZWFsLHBheW1lbnRJbnRlcnZhbDphLmZvcm1kYXRhLnBheW1lbnRJbnRlcnZhbCxwYXltZW50RG93blBheW1lbnQ6cSx0b3RhbEludGVyZXN0Ok4sbHV4ZVRheEFtb3VudDpwLHJhdGVUeXBlOnQsZWZmZWN0aXZlUmF0ZTpBLHRvdGFsQ29zdDpIfSksCiQoIiMiK2JbMF0uaWQrIiAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSIpLnRyaWdnZXIoInBheW1lbnRDaGFuZ2VkIikpO2suY2hlY2tWYWxpZGl0eSgpfSk7JCgiYm9keSIpLm9uKCJwYXltZW50c1JlYWR5IiwiIyIrYlswXS5pZCsiICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIixmdW5jdGlvbigpe2Y9YS5mb3JtZGF0YS5wYXltZW50VGVybT9hLmZvcm1kYXRhLnBheW1lbnRUZXJtOmY\/ZjowOzAhPWYmJjA8JCgiIyIrYlswXS5pZCsnICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIC5wYXltZW50Q2FsY3VsYXRvclBheW1lbnRTZWxlY3QgaW5wdXRbbmFtZT0ic2VsZWN0ZWRQYXltZW50Il1bdmFsdWU9IicrZisnIl0nKS5sZW5ndGg\/JCgiIyIrYlswXS5pZCsnICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIC5wYXltZW50Q2FsY3VsYXRvclBheW1lbnRTZWxlY3QgaW5wdXRbbmFtZT0ic2VsZWN0ZWRQYXltZW50Il1bdmFsdWU9IicrZisnIl0nKS5hdHRyKCJjaGVja2VkIiwiY2hlY2tlZCIpLnRyaWdnZXIoImNoYW5nZSIpOgooYS5mb3JtZGF0YS5wYXltZW50VHlwZT0iIixhLmZvcm1kYXRhLnBheW1lbnRUeXBlUmVhbD0iIixhLmZvcm1kYXRhLnBheW1lbnRUZXJtPSIiLGEuZm9ybWRhdGEucGF5bWVudFJhdGVUeXBlPSIiLGEuZm9ybWRhdGEucGF5bWVudFJlc2lkdWFsVmFsdWU9IiIsYS5mb3JtZGF0YS5wYXltZW50VmFsdWU9IiIsYS5mb3JtZGF0YS52ZWhpY2xlSW5pdGlhbFByaWNlPSIiLGEuZm9ybWRhdGEudmVoaWNsZUZpbmFsUHJpY2U9IiIsYS5mb3JtZGF0YS5wYXltZW50RmVlc0xpc3Q9W10sYS5mb3JtZGF0YS5wYXltZW50SW5jZW50aXZlc0xpc3Q9W10sYS5mb3JtZGF0YS5iYXNlcGF5bWVudD0iIixhLmZvcm1kYXRhLnBheW1lbnRUb3RhbEluY2VudGl2ZT0wLGEuZm9ybWRhdGEucGF5bWVudFRvdGFsRmVlPTAsYS5mb3JtZGF0YS5wYXltZW50R1NUPTAsYS5mb3JtZGF0YS5wYXltZW50SFNUPTAsYS5mb3JtZGF0YS5wYXltZW50UFNUPTAsYS5mb3JtZGF0YS5wYXltZW50RG93blBheW1lbnQ9MCwKYS5mb3JtZGF0YS5wYXltZW50S21BbGxvd2FuY2U9MCxhLmZvcm1kYXRhLnBheW1lbnRJbnRlcnZhbD0iIixhLmZvcm1kYXRhLnBheW1lbnRSYXRlPSIiLGEuZm9ybWRhdGEudHJhZGVJblZhbHVlPSIiLGsuY2hlY2tWYWxpZGl0eSgpKTskKCIuZmluYW5jZU11bHRpc3RlcE5ld0NhbGN1bGF0b3IiLGIpLnNob3coKX0pO3NldFRpbWVvdXQoKCk9PntpZigidW5kZWZpbmVkIiE9dHlwZW9mIEN0YVRyYWNrJiZDdGFUcmFjay5nZXRUcmFja1N0ZXAoIlBheW1lbnRDYWxjdWxhdG9yQWN0aW9uQm94Iikpe2xldCBwPW5ldyBDdXN0b21FdmVudCgidHJhY2tzdGVwLmNvbXBsZXRlIix7ZGV0YWlsOntzdGVwSWQ6IlBheW1lbnRDYWxjdWxhdG9yQWN0aW9uQm94Iixmb3JjZVVwZGF0ZTohMCxvbkNvbXBsZXRlOnE9PntxLmRhdGFzZXQuY29tcGxfdHh0X2ZyPXEuZGF0YXNldC5pbml0X2NvbXBsX3R4dF9mci5yZXBsYWNlKCJ7JFBBWU1FTlRSQVRFfSIsY3RhUGF5bWVudFRleHRGclswXSkucmVwbGFjZSgieyRQQVlNRU5UWVBFfSIsCmN0YVBheW1lbnRUZXh0RnJbMV0pO3EuZGF0YXNldC5jb21wbF90eHRfZW49cS5kYXRhc2V0LmluaXRfY29tcGxfdHh0X2VuLnJlcGxhY2UoInskUEFZTUVOVFJBVEV9IixjdGFQYXltZW50VGV4dEVuWzBdKS5yZXBsYWNlKCJ7JFBBWU1FTlRZUEV9IixjdGFQYXltZW50VGV4dEVuWzFdKTtxPXtwYXltZW50Ont9fTtfbG9jYWxTdG9yYWdlR2V0KCJyZXRhaWxfdHJhY2tfZGF0YSIpJiYocT1KU09OLnBhcnNlKF9sb2NhbFN0b3JhZ2VHZXQoInJldGFpbF90cmFja19kYXRhIikpKTtsZXQgdD0iRlJFTkNIIj09PSQoIiNhY3RpdmVzaXRlbGFuZ3VhZ2UiKS52YWwoKT9jdGFQYXltZW50VGV4dEZyOmN0YVBheW1lbnRUZXh0RW47cS5wYXltZW50PXtsaXN0UHJpY2U6dFsyXXx8IiIscGF5bWVudDp0WzBdfHwiIixyYXRlOnRbMV18fCIiLHBheW1lbnRWYWx1ZTpjdGFQYXltZW50VmFsdWVzfHxbXX07X2xvY2FsU3RvcmFnZVNldCgicmV0YWlsX3RyYWNrX2RhdGEiLEpTT04uc3RyaW5naWZ5KHEpLAozMCk7Q29va2llcy5zZXQoImN0YV9kYXRhX3ZhbGlkIiwxLDEsIi8iKX19fSk7JCgiIyIrYlswXS5pZCsiICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIikub24oInBheW1lbnRDaGFuZ2VkIixmdW5jdGlvbigpe2RvY3VtZW50LmRpc3BhdGNoRXZlbnQocCl9KX19LDEwMCl9ZWxzZSAkKCIjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybV9lcnJvciIsYikuaHRtbCgiIikseShhLmZvcm1kYXRhLmN1cnJlbnRDYXJJZCl9LGluaXRFbWFpbDpmdW5jdGlvbigpe2suY2hlY2tWYWxpZGl0eSgpfSxpbml0UGhvbmU6ZnVuY3Rpb24oKXtrLmNoZWNrVmFsaWRpdHkoKX0saW5pdENvbnNlbnQ6ZnVuY3Rpb24oKXtsZXQgYz0iLyIrdysiL211bHRpc3RlcEluc3RhbnRDb25zZW50Lmh0bWwiOyQoIiNmaW5hbmNlX211bHRpc3RlcF9jb25zZW50X3RleHRfZGl2IixiKS5hdHRyKCJzcmMiLGMpO3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIixmdW5jdGlvbihkKXsoZC5vcmlnaW49d2luZG93LmxvY2F0aW9uLm9yaWdpbikmJgoiY29uc2VudElmcmFtZUJvdHRvbSI9PT1kLmRhdGEmJiQoIiNmaW5hbmNlX211bHRpc3RlcF9mb3JtICNmaW5hbmNlX211bHRpc3RlcF9mb3JtX25leHRfYnV0dG9uX2NvbnNlbnQiLGIpLmFkZENsYXNzKCJpc1ZhbGlkIil9LCExKX0saW5pdFZXQ29uc2VudDpmdW5jdGlvbigpe2xldCBjLGQsZTsiUUMiPT0obnVsbCE9KGU9bnVsbD09KGM9YS5mb3JtZGF0YS5zcGxpdEFkZHJlc3MpP3ZvaWQgMDpudWxsPT0oZD1jLnByb3ZpbmNlKT92b2lkIDA6ZC5zaG9ydF9uYW1lKT9lOiQoIiNGSU5BTkNFX01VTFRJU1RFUF9EZWFsZXJQcm92aW5jZSIsYikudmFsKCkpPygkKCIudndDb25zZW50RGl2c1JPQyIpLmhpZGUoKSwkKCIudndDb25zZW50RGl2c1FDIikuc2hvdygpKTooJCgiLnZ3Q29uc2VudERpdnNST0MiKS5zaG93KCksJCgiLnZ3Q29uc2VudERpdnNRQyIpLmhpZGUoKSl9LGluaXREaXNidXJzbWVudFZXOmZ1bmN0aW9uKCl7bGV0IGMsZCxlOyJRQyI9PShudWxsIT0oZT1udWxsPT0KKGM9YS5mb3JtZGF0YS5zcGxpdEFkZHJlc3MpP3ZvaWQgMDpudWxsPT0oZD1jLnByb3ZpbmNlKT92b2lkIDA6ZC5zaG9ydF9uYW1lKT9lOiQoIiNGSU5BTkNFX01VTFRJU1RFUF9EZWFsZXJQcm92aW5jZSIsYikudmFsKCkpPygkKCIucmVudE9yT3duUXVlc3Rpb25WV1FDIikuc2hvdygpLCQoIi52d0Rpc2J1cnNtZW50UWMiKS5zaG93KCksJCgiLm1vbnRsaHlQYXltZW50UXVlc3Rpb24iKS5oaWRlKCkpOigkKCIucmVudE9yT3duUXVlc3Rpb25WV1FDIikuaGlkZSgpLCQoIi52d0Rpc2J1cnNtZW50UWMiKS5oaWRlKCksJCgiLm1vbnRsaHlQYXltZW50UXVlc3Rpb24iKS5zaG93KCkpfSx2YWxpZGF0ZUNvbnNlbnQ6ZnVuY3Rpb24oKXtpZigkKCIjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybV9uZXh0X2J1dHRvbl9jb25zZW50IixiKS5oYXNDbGFzcygiaXNWYWxpZCIpKXJldHVybiBhLmZvcm1kYXRhLmNyZWRpdEJ1cmVhdUNyZWRpdD0kKCIjd29ya2luZ1doaWxlSW5TY2hvb2xfeWVzIiwKYikuYXR0cigiZGF0YS10cmFuc2xhdGVkVmFsdWUiKSwhMDthLmZvcm1kYXRhLmNyZWRpdEJ1cmVhdUNyZWRpdD0kKCIjd29ya2luZ1doaWxlSW5TY2hvb2xfbm8iLGIpLmF0dHIoImRhdGEtdHJhbnNsYXRlZFZhbHVlIik7cmV0dXJuITF9LHZhbGlkYXRlQ2hlY2tlZENyZWRpdEJ1cmVhdTpmdW5jdGlvbihjKXtpZigkKCIjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSIsYikuZmluZCgnaW5wdXRbbmFtZT0iY3JlZGl0QnVyZWF1Q29uc2VudCJdJykuaXMoIjpjaGVja2VkIikpcmV0dXJuIGEuZm9ybWRhdGEuY3JlZGl0QnVyZWF1Q3JlZGl0PSQoIiN3b3JraW5nV2hpbGVJblNjaG9vbF95ZXMiLGIpLmF0dHIoImRhdGEtdHJhbnNsYXRlZFZhbHVlIiksITA7YS5mb3JtZGF0YS5jcmVkaXRCdXJlYXVDcmVkaXQ9JCgiI3dvcmtpbmdXaGlsZUluU2Nob29sX25vIixiKS5hdHRyKCJkYXRhLXRyYW5zbGF0ZWRWYWx1ZSIpO3JldHVybiExfSx2YWxpZGF0ZU1vcmVUaGFuWmVybzpmdW5jdGlvbihjKXtyZXR1cm4gMDwKY30sc2VuZEVtYWlsOmZ1bmN0aW9uKCl7dmFyIGM9JChiKS5maW5kKCIuZW1haWxTdWJqZWN0IiksZD0kKGIpLmZpbmQoIi5lbWFpbEJvZHkiKTtjPWMudGV4dCgpP2MudGV4dCgpOiIiO2Q9ZC5odG1sKCk\/ZC5odG1sKCk6IiI7aWYoYyYmZCl7dmFyIGU9JCgnW3ZhbHVlPSInK2EuZm9ybWRhdGEuZW1wbG95bWVudFN0YXR1cysnIicpLmF0dHIoImRhdGEtdHJhbnNsYXRlZFZhbHVlIik7IiIhPWEuZm9ybWRhdGEuZW1wbG95bWVudEFkZGVkSW5mbyYmKGUrPSIgKCIrYS5mb3JtZGF0YS5lbXBsb3ltZW50QWRkZWRJbmZvKyIpIik7ZD1kLnJlcGxhY2UoInskQk9EWVRZUEV9IixhLmZvcm1kYXRhLnZlaGljbGVUeXBlPyQoJ1t2YWx1ZT0iJythLmZvcm1kYXRhLnZlaGljbGVUeXBlKyciJykuYXR0cigiZGF0YS10cmFuc2xhdGVkVmFsdWUiKToicmVtb3ZlZW1wdHkiKTtkPWQucmVwbGFjZSgieyRUSVRMRX0iLGEuZm9ybWRhdGEudGl0bGU\/YS5mb3JtZGF0YS50aXRsZToicmVtb3ZlZW1wdHkiKTsKZD1kLnJlcGxhY2UoInskRklSU1ROQU1FfSIsYS5mb3JtZGF0YS5maXJzdE5hbWUpO2Q9ZC5yZXBsYWNlKCJ7JExBU1ROQU1FfSIsYS5mb3JtZGF0YS5sYXN0TmFtZSk7ZD1kLnJlcGxhY2UoInskRU1BSUx9IixhLmZvcm1kYXRhLmVtYWlsQWRkcmVzcyk7ZD1kLnJlcGxhY2UoInskUEhPTkVOVU1CRVJ9IixhLmZvcm1kYXRhLnBob25lTnVtYmVyKTtkPWQucmVwbGFjZSgieyRCSVJUSERBWX0iLGEuZm9ybWRhdGEuYmlydGhkYXRlRGF5KyIvIithLmZvcm1kYXRhLmJpcnRoZGF0ZU1vbnRoKyIvIithLmZvcm1kYXRhLmJpcnRoZGF0ZVllYXIpO2Q9ZC5yZXBsYWNlKCJ7JEJVREdFVH0iLGEuZm9ybWRhdGEuYnVkZ2V0PyQoJ1t2YWx1ZT0iJythLmZvcm1kYXRhLmJ1ZGdldCsnIicpLmF0dHIoImRhdGEtdHJhbnNsYXRlZFZhbHVlIik6InJlbW92ZWVtcHR5Iik7ZD1kLnJlcGxhY2UoInskQ1VSUkVOVExZRFJJVklOR30iLGEuZm9ybWRhdGEuY3VycmVudGx5RHJpdmluZz8kKCdbdmFsdWU9IicrCmEuZm9ybWRhdGEuY3VycmVudGx5RHJpdmluZysnIicpLmF0dHIoImRhdGEtdHJhbnNsYXRlZFZhbHVlIik6InJlbW92ZWVtcHR5Iik7ZD1kLnJlcGxhY2UoInskQ1VSUkVOVEVTVElNQVRFRENSRURJVFJBVElOR30iLGEuZm9ybWRhdGEuY3JlZGl0UmF0aW5nPyQoJ1t2YWx1ZT0iJythLmZvcm1kYXRhLmNyZWRpdFJhdGluZysnIicpLmF0dHIoImRhdGEtdHJhbnNsYXRlZFZhbHVlIik6InJlbW92ZWVtcHR5Iik7ZD1kLnJlcGxhY2UoInskSU5URVJFU1RFRERPV05PUFRJT059IixhLmZvcm1kYXRhLmRvd25PcHRpb25zPyQoJ1t2YWx1ZT0iJythLmZvcm1kYXRhLmRvd25PcHRpb25zKyciJykuYXR0cigiZGF0YS10cmFuc2xhdGVkVmFsdWUiKToicmVtb3ZlZW1wdHkiKTtkPWQucmVwbGFjZSgieyRDVVJSRU5UQUREUkVTU30iLGEuZm9ybWRhdGEuYWRkcmVzcyk7ZD1kLnJlcGxhY2UoInskQ1VSUkVOVFJFU0lERU5DRVRZUEV9IiwkKCdbdmFsdWU9IicrYS5mb3JtZGF0YS5yZW50T3JPd24rCiciJykuYXR0cigiZGF0YS10cmFuc2xhdGVkVmFsdWUiKSk7ZD1kLnJlcGxhY2UoInskQ1VSUkVOVE9DQ1VQQVRJT05MRU5HVEh9IixhLmZvcm1kYXRhLmFkZHJlc3NfeWVhcnMrIiAiKyQoIiNGSU5BTkNFX0ZPUk1fQUREUkVTU19USU1FU19ZRUFSUyIpLnZhbCgpKyIgIithLmZvcm1kYXRhLmFkZHJlc3NfbW9udGhzKyIgIiskKCIjRklOQU5DRV9GT1JNX0FERFJFU1NfVElNRVNfTU9OVEhTIikudmFsKCkpO3ZhciBmLGcsbCxwPW51bGwhPShsPW51bGw9PShmPWEuZm9ybWRhdGEuc3BsaXRBZGRyZXNzKT92b2lkIDA6bnVsbD09KGc9Zi5wcm92aW5jZSk\/dm9pZCAwOmcuc2hvcnRfbmFtZSk\/bDokKCIjRklOQU5DRV9NVUxUSVNURVBfRGVhbGVyUHJvdmluY2UiLGIpLnZhbCgpO2Q9RiYmIlFDIj09cD9kLnJlcGxhY2UoInskQ1VSUkVOVE1PTlRITFlSRU5UfSIsIiQiK2EuZm9ybWRhdGEubW9udGhseVBheW1lbnQrIiAtLSBEaXNidXJzZW1lbnQ6ICQiK2EuZm9ybWRhdGEubW9udGhseURpc2J1cnNlbWVudCk6CmQucmVwbGFjZSgieyRDVVJSRU5UTU9OVEhMWVJFTlR9IiwiJCIrYS5mb3JtZGF0YS5tb250aGx5UGF5bWVudCk7ZD1kLnJlcGxhY2UoInskQ1VSUkVOVE9DQ1VQQVRJT059IixlKTtkPWQucmVwbGFjZSgieyRXT1JLSU5HV0hJTEVJTlNDSE9PTH0iLCIiIT1hLmZvcm1kYXRhLndvcmtpbmdXaGlsZUluU2Nob29sPyQoJ1t2YWx1ZT0iJythLmZvcm1kYXRhLndvcmtpbmdXaGlsZUluU2Nob29sKyciJykuYXR0cigiZGF0YS10cmFuc2xhdGVkVmFsdWUiKToicmVtb3ZlZW1wdHkiKTtkPWQucmVwbGFjZSgieyRDVVJSRU5USU5DT01FU09VUkNFfSIsIiIhPWEuZm9ybWRhdGEub3RoZXJFbXBsb3ltZW50U3RhdHVzPyQoJ1t2YWx1ZT0iJythLmZvcm1kYXRhLm90aGVyRW1wbG95bWVudFN0YXR1cysnIicpLmF0dHIoImRhdGEtdHJhbnNsYXRlZFZhbHVlIik6InJlbW92ZWVtcHR5Iik7ZD1kLnJlcGxhY2UoInskQ1VSUkVOVE1PTlRMWUlOQ09NRX0iLCIkIithLmZvcm1kYXRhLm1vbnRobHlJbmNvbWUpOwpkPWQucmVwbGFjZSgieyRDVVJSRU5UTU9OVEhMWUlOQ09NRUxFTkdUSH0iLGEuZm9ybWRhdGEubW9udGhseUluY29tZV95ZWFycysiICIrJCgiI0ZJTkFOQ0VfRk9STV9NT05USExZX0lOQ09NRV9USU1FU19ZRUFSUyIpLnZhbCgpKyIgIithLmZvcm1kYXRhLm1vbnRobHlJbmNvbWVfbW9udGhzKyIgIiskKCIjRklOQU5DRV9GT1JNX01PTlRITFlfSU5DT01FX1RJTUVTX01PTlRIUyIpLnZhbCgpKTsiIiE9YS5mb3JtZGF0YS5hZGRyZXNzMj8oZD1kLnJlcGxhY2UoInskUFJFVklPVVNBRERSRVNTfSIsYS5mb3JtZGF0YS5hZGRyZXNzMiksZD1kLnJlcGxhY2UoInskUFJFVklPVVNPQ0NVUEFUSU9OTEVOR1RIfSIsYS5mb3JtZGF0YS5hZGRyZXNzMl95ZWFycysiICIrJCgiI0ZJTkFOQ0VfRk9STV9BRERSRVNTX1RJTUVTX1lFQVJTIikudmFsKCkrIiAiK2EuZm9ybWRhdGEuYWRkcmVzczJfbW9udGhzKyIgIiskKCIjRklOQU5DRV9GT1JNX0FERFJFU1NfVElNRVNfTU9OVEhTIikudmFsKCkpLApkPWQucmVwbGFjZSgiIyNQUkVWSU9VU0FERFJFU1NJTkZPU1RBUlQjIyIsIiIpLGQ9ZC5yZXBsYWNlKCIjI1BSRVZJT1VTQUREUkVTU0lORk9FTkQjIyIsIiIpKTpkPWQucmVwbGFjZSgvIyNQUkVWSU9VU0FERFJFU1NJTkZPU1RBUlQjI1tcc1xTXSojI1BSRVZJT1VTQUREUkVTU0lORk9FTkQjIy8sIiIpO2Q9ZC5yZXBsYWNlKCJ7JENVUlJFTlRNQUtFfSIsIiIhPWEuZm9ybWRhdGEuY3VycmVudE1ha2U\/YS5mb3JtZGF0YS5jdXJyZW50TWFrZToicmVtb3ZlZW1wdHkiKTtkPWQucmVwbGFjZSgieyRDVVJSRU5UTU9ERUx9IiwiIiE9YS5mb3JtZGF0YS5jdXJyZW50TW9kZWw\/YS5mb3JtZGF0YS5jdXJyZW50TW9kZWw6InJlbW92ZWVtcHR5Iik7ZD1kLnJlcGxhY2UoInskQ1VSUkVOVFlFQVJ9IiwiIiE9YS5mb3JtZGF0YS5jdXJyZW50WWVhcj9hLmZvcm1kYXRhLmN1cnJlbnRZZWFyOiJyZW1vdmVlbXB0eSIpO2Q9ZC5yZXBsYWNlKCJ7JENVUlJFTlRTVE9DS05VTUJFUn0iLCIiIT1hLmZvcm1kYXRhLmN1cnJlbnRTdG9ja051bWJlcj8KYS5mb3JtZGF0YS5jdXJyZW50U3RvY2tOdW1iZXI6InJlbW92ZWVtcHR5Iik7ZD1kLnJlcGxhY2UoInskY3JlZGl0QnVyZWF1Q3JlZGl0fSIsIiIhPWEuZm9ybWRhdGEuY3JlZGl0QnVyZWF1Q3JlZGl0P2EuZm9ybWRhdGEuY3JlZGl0QnVyZWF1Q3JlZGl0OiJOTyIpO2Q9ZC5yZXBsYWNlKCJ7JFNJTn0iLCIiIT1hLmZvcm1kYXRhLlNJTj9hLmZvcm1kYXRhLlNJTjoicmVtb3ZlZW1wdHkiKTtkPWQucmVwbGFjZSgieyRBRERFRElORk99IiwiIiE9YS5mb3JtZGF0YS5hZGRlZEluZm8\/YS5mb3JtZGF0YS5hZGRlZEluZm86InJlbW92ZWVtcHR5Iik7ZD1kLnJlcGxhY2UoInskRU1QTE9ZRVJ9IiwiIiE9YS5mb3JtZGF0YS5lbXBsb3llck5hbWU\/YS5mb3JtZGF0YS5lbXBsb3llck5hbWU6InJlbW92ZWVtcHR5Iik7ZD1kLnJlcGxhY2UoInskRU1QTE9ZRVJQSE9ORX0iLCIiIT1hLmZvcm1kYXRhLmVtcGxveWVyUGhvbmU\/YS5mb3JtZGF0YS5lbXBsb3llclBob25lOiJyZW1vdmVlbXB0eSIpOwpkPWQucmVwbGFjZSgieyRFTVBMT1lFTUVOVFNUQVRVU1RJTUV9IixhLmZvcm1kYXRhLmVtcGxveW1lbnRTdGF0dXNZZWFyKyIgIiskKCIjRklOQU5DRV9GT1JNX01PTlRITFlfSU5DT01FX1RJTUVTX1lFQVJTIikudmFsKCkrIiAiK2EuZm9ybWRhdGEuZW1wbG95bWVudFN0YXR1c01vbnRoKyIgIiskKCIjRklOQU5DRV9GT1JNX01PTlRITFlfSU5DT01FX1RJTUVTX01PTlRIUyIpLnZhbCgpKTtkPWQucmVwbGFjZSgieyRFTVBMT1lFUkFERFJFU1N9IiwiIiE9YS5mb3JtZGF0YS5hZGRyZXNzRW1wbG95ZXI\/YS5mb3JtZGF0YS5hZGRyZXNzRW1wbG95ZXI6InJlbW92ZWVtcHR5Iik7ZD1kLnJlcGxhY2UoInskQ09OU0VOVEFDQ09VTlRNT05JVE9SSU5HfSIsIiIhPWEuZm9ybWRhdGEuY29uc2VudEFjY291bnRNb25pdG9yaW5nPzE9PWEuZm9ybWRhdGEuY29uc2VudEFjY291bnRNb25pdG9yaW5nPyJZRVMiOiJOTyI6InJlbW92ZWVtcHR5Iik7ZD1kLnJlcGxhY2UoInskQ09OU0VOVENSRURJVEFTU0VTU01FTlR9IiwKIiIhPWEuZm9ybWRhdGEuY29uc2VudENyZWRpdEFzc2Vzc21lbnQ\/MT09YS5mb3JtZGF0YS5jb25zZW50Q3JlZGl0QXNzZXNzbWVudD8iWUVTIjoiTk8iOiJyZW1vdmVlbXB0eSIpO2Q9ZC5yZXBsYWNlKCJ7JENPTlNFTlRQSVBFREF9IiwiIiE9YS5mb3JtZGF0YS5jb25zZW50UGlwZWRhPzE9PWEuZm9ybWRhdGEuY29uc2VudFBpcGVkYT8iWUVTIjoiTk8iOiJyZW1vdmVlbXB0eSIpO2Q9ZC5yZXBsYWNlKCJ7JENPTlNFTlRDQVNMfSIsIiIhPWEuZm9ybWRhdGEuY29uc2VudENhc2w\/MT09YS5mb3JtZGF0YS5jb25zZW50Q2FzbD8iWUVTIjoiTk8iOiJyZW1vdmVlbXB0eSIpOyIiIT1hLmZvcm1kYXRhLmVtcGxveWVyTmFtZTI\/KGY9JCgnW3ZhbHVlPSJGSU5BTkNFX0ZPUk1fRU1QTE9ZTUVOVF9TVEFUVVNfRU1QTE9ZRUQiXScpLmF0dHIoImRhdGEtdHJhbnNsYXRlZFZhbHVlIiksIiIhPWEuZm9ybWRhdGEuZW1wbG95bWVudEFkZGVkSW5mbzImJihmKz0iICgiK2EuZm9ybWRhdGEuZW1wbG95bWVudEFkZGVkSW5mbzIrCiIpIiksZD1kLnJlcGxhY2UoInskUFJFVklPVVNPQ0NVUEFUSU9OfSIsZiksZD1kLnJlcGxhY2UoInskUFJFVklPVVNFTVBMT1lFUn0iLCIiIT1hLmZvcm1kYXRhLmVtcGxveWVyTmFtZTI\/YS5mb3JtZGF0YS5lbXBsb3llck5hbWUyOiJyZW1vdmVlbXB0eSIpLGQ9ZC5yZXBsYWNlKCJ7JFBSRVZJT1VTRU1QTE9ZRVJQSE9ORX0iLCIiIT1hLmZvcm1kYXRhLmVtcGxveWVyUGhvbmUyP2EuZm9ybWRhdGEuZW1wbG95ZXJQaG9uZTI6InJlbW92ZWVtcHR5IiksZD1kLnJlcGxhY2UoInskUFJFVklPVVNFTVBMT1lFTUVOVFNUQVRVU1RJTUV9IixhLmZvcm1kYXRhLmVtcGxveW1lbnRTdGF0dXNZZWFyMisiICIrJCgiI0ZJTkFOQ0VfRk9STV9NT05USExZX0lOQ09NRV9USU1FU19ZRUFSUyIpLnZhbCgpKyIgIithLmZvcm1kYXRhLmVtcGxveW1lbnRTdGF0dXNNb250aDIrIiAiKyQoIiNGSU5BTkNFX0ZPUk1fTU9OVEhMWV9JTkNPTUVfVElNRVNfTU9OVEhTIikudmFsKCkpLGQ9ZC5yZXBsYWNlKCJ7JFBSRVZJT1VTRU1QTE9ZRVJBRERSRVNTfSIsCiIiIT1hLmZvcm1kYXRhLmFkZHJlc3NFbXBsb3llcjI\/YS5mb3JtZGF0YS5hZGRyZXNzRW1wbG95ZXIyOiJyZW1vdmVlbXB0eSIpLGQ9ZC5yZXBsYWNlKCIjI1BSRVZJT1VTT0NDVVBBVElPTlNUQVJUIyMiLCIiKSxkPWQucmVwbGFjZSgiIyNQUkVWSU9VU09DQ1VQQVRJT05FTkQjIyIsIiIpKTpkPWQucmVwbGFjZSgvIyNQUkVWSU9VU09DQ1VQQVRJT05TVEFSVCMjW1xzXFNdKiMjUFJFVklPVVNPQ0NVUEFUSU9ORU5EIyMvLCIiKTtkPWQucmVwbGFjZSgieyRQQVlNRU5UVFlQRX0iLCIiIT1hLmZvcm1kYXRhLnBheW1lbnRUeXBlP2EuZm9ybWRhdGEucGF5bWVudFR5cGU6InJlbW92ZWVtcHR5Iik7ZD1kLnJlcGxhY2UoInskUEFZTUVOVFRFUk19IiwiIiE9YS5mb3JtZGF0YS5wYXltZW50VGVybT9hLmZvcm1kYXRhLnBheW1lbnRUZXJtOiJyZW1vdmVlbXB0eSIpO2Q9ZC5yZXBsYWNlKCJ7JFBBWU1FTlRET1dOUEFZTUVOVH0iLCIiIT1hLmZvcm1kYXRhLnBheW1lbnREb3duUGF5bWVudD8KYS5mb3JtZGF0YS5wYXltZW50RG93blBheW1lbnQ6InJlbW92ZWVtcHR5Iik7ZD1kLnJlcGxhY2UoInskUEFZTUVOVElOVEVSVkFMfSIsIiIhPWEuZm9ybWRhdGEucGF5bWVudEludGVydmFsP2EuZm9ybWRhdGEucGF5bWVudEludGVydmFsOiJyZW1vdmVlbXB0eSIpO2Q9ZC5yZXBsYWNlKCJ7JFBBWU1FTlRLTUFMTE9XQU5DRX0iLCIiIT1hLmZvcm1kYXRhLnBheW1lbnRLbUFsbG93YW5jZT9hLmZvcm1kYXRhLnBheW1lbnRLbUFsbG93YW5jZToicmVtb3ZlZW1wdHkiKTtkPWQucmVwbGFjZSgieyRQQVlNRU5UVkFMVUV9IiwiIiE9YS5mb3JtZGF0YS5wYXltZW50VmFsdWU\/YS5mb3JtZGF0YS5wYXltZW50VmFsdWU6InJlbW92ZWVtcHR5Iik7ZD1kLnJlcGxhY2UoInskUEFZTUVOVFJBVEV9IiwiIiE9YS5mb3JtZGF0YS5wYXltZW50UmF0ZT9hLmZvcm1kYXRhLnBheW1lbnRSYXRlOiJyZW1vdmVlbXB0eSIpO2Q9ZC5yZXBsYWNlKCJ7JE5PUEFZTUVOVH0iLGEuZm9ybWRhdGEubm9QYXltZW50PwoiIjoicmVtb3ZlZW1wdHkiKTtkPWQucmVwbGFjZSgieyRDUkVESVRERUNJU0lPTn0iLGEuY3JlZGl0RGVjaXNpb25IVE1MP2EuY3JlZGl0RGVjaXNpb25IVE1MOiJyZW1vdmVlbXB0eSIpOyIiIT1hLmZvcm1kYXRhLnRyYWRlSW5WYWx1ZT8oZD1kLnJlcGxhY2UoInskVFJBREVNQUtFfSIsYS5mb3JtZGF0YS50cmFkZUluTWFrZSksZD1kLnJlcGxhY2UoInskVFJBREVNT0RFTH0iLGEuZm9ybWRhdGEudHJhZGVJbk1vZGVsKSxkPWQucmVwbGFjZSgieyRUUkFERVlFQVJ9IixhLmZvcm1kYXRhLnRyYWRlSW5UcmltKSxkPWQucmVwbGFjZSgieyRUUkFERVRSSU19IixhLmZvcm1kYXRhLnRyYWRlSW5ZZWFyKSxkPWQucmVwbGFjZSgieyRUUkFERVZBTFVFfSIsYS5mb3JtZGF0YS50cmFkZUluVmFsdWUpLGQ9ZC5yZXBsYWNlKCIjI1RSQURFSU5JTkZPU1RBUlQjIyIsIiIpLGQ9ZC5yZXBsYWNlKCIjI1RSQURFSU5JTkZPRU5EIyMiLCIiKSk6ZD1kLnJlcGxhY2UoLyMjVFJBREVJTklORk9TVEFSVCMjW1xzXFNdKiMjVFJBREVJTklORk9FTkQjIy8sCiIiKTtkPWsuZW1haWxCb2R5Rm9yTXVsdGlEZWFsZXIoZCk7Ym9keUxvd2VyPWQudG9Mb3dlckNhc2UoKTtmb3IoZj0wOy0xPGJvZHlMb3dlci5pbmRleE9mKCJyZW1vdmVlbXB0eSIpOyl7cG9zPWJvZHlMb3dlci5pbmRleE9mKCJyZW1vdmVlbXB0eSIpO2lmKC0xPT1wb3MpYnJlYWs7cnBsRW5kPWJvZHlMb3dlci5pbmRleE9mKCI8YnI+Iixwb3MpO3JwbFN0YXJ0PWJvZHlMb3dlci5sYXN0SW5kZXhPZigiPGJyPiIscG9zKTtpZigtMT09cnBsRW5kfHwtMT09cnBsU3RhcnQpYnJlYWs7cnBsU3RyaW5nPWQuc3Vic3RyaW5nKHJwbFN0YXJ0LHJwbEVuZCk7ZD1kLnJlcGxhY2UocnBsU3RyaW5nLCIiKTtib2R5TG93ZXI9ZC50b0xvd2VyQ2FzZSgpO2YrKztpZig1MDxmKWJyZWFrfWVtYWlsSGFuZGxlci5zdWJqZWN0PWM7ZW1haWxIYW5kbGVyLmJvZHk9ZDtrLnNldEVtYWlsSGFuZGxlclNlbmQoKTtlbWFpbEhhbmRsZXIubWFpbElEPSJDcmVkaXRNdWx0aXN0ZXBSZXF1ZXN0IjsiMSI9PQp1JiYoZW1haWxIYW5kbGVyLm1haWxJRD0iQ3JlZGl0TXVsdGlzdGVwUmVxdWVzdDJuZENoYW5jZSIpOyIxIj09eCYmKGVtYWlsSGFuZGxlci5tYWlsSUQ9IkNyZWRpdE11bHRpc3RlcFJlcXVlc3RJbnN0YW50Iik7ZW1haWxIYW5kbGVyLmRlcGFydG1lbnQ9IkZJTkFOQ0UiO2VtYWlsSGFuZGxlci5pc21vYmlsZXNpdGU9MT09JCgiI2lzbW9iaWxlIik\/IllFUyI6Ik5PIjtlbWFpbEhhbmRsZXIudXNlckVtYWlsPWEuZm9ybWRhdGEuZW1haWxBZGRyZXNzO2VtYWlsSGFuZGxlci51c2VyRmlyc3ROYW1lPWEuZm9ybWRhdGEuZmlyc3ROYW1lO2VtYWlsSGFuZGxlci51c2VyTGFzdE5hbWU9YS5mb3JtZGF0YS5sYXN0TmFtZTtlbWFpbEhhbmRsZXIudXNlclBob25lPWEuZm9ybWRhdGEucGhvbmVOdW1iZXI7ZW1haWxIYW5kbGVyLmNvbnRhY3RBZGRyZXNzPWEuZm9ybWRhdGEuYWRkcmVzcztlbWFpbEhhbmRsZXIuY29udGFjdEJpcnRoPWEuZm9ybWRhdGEuYmlydGhkYXRlRGF5KyIvIithLmZvcm1kYXRhLmJpcnRoZGF0ZU1vbnRoKwoiLyIrYS5mb3JtZGF0YS5iaXJ0aGRhdGVZZWFyO2VtYWlsSGFuZGxlci5zYWxlc0RlcHQ9YS5mb3JtZGF0YS52ZWhpY2xlU2FsZXNEZXB0O2VtYWlsSGFuZGxlci5tYWtlPWEuZm9ybWRhdGEuY3VycmVudE1ha2U7ZW1haWxIYW5kbGVyLm1vZGVsPWEuZm9ybWRhdGEuY3VycmVudE1vZGVsO2VtYWlsSGFuZGxlci55ZWFyPWEuZm9ybWRhdGEuY3VycmVudFllYXI7ZW1haWxIYW5kbGVyLnN0b2NrTnVtYmVyPWEuZm9ybWRhdGEuY3VycmVudFN0b2NrTnVtYmVyO2VtYWlsSGFuZGxlci5kZXBhcnRtZW50QnlTdG9jaz0hMTtlbWFpbEhhbmRsZXIuc2tpcEdlb0xvYz0hMDtlbWFpbEhhbmRsZXIucGFydGlhbD0hMTtlbWFpbEhhbmRsZXIuY2FsbGJhY2s9ZnVuY3Rpb24ocSl7aWYocSlrLnNldEZpbmFuY2VGb3JtU3RhdHVzVG9TZW50KCk7ZWxzZXt2YXIgdD1lbWFpbEhhbmRsZXIuX19sYXN0UmV0dXJufHx7fTtxPSJvYmplY3QiPT09dHlwZW9mIHQmJnQubWVzc2FnZT90Lm1lc3NhZ2U6IiI7CnZhciBBPWpzX2QyY19nZXRfdmFsKCJFTUFJTF9GQUlMX01FU1NBR0UiKXx8JCgiI0ZJTkFOQ0VfRk9STV9WV0NSRURJVF9FUlJPUl9NU0dfVVNFUiIsYikudmFsKCl8fCJUaGVyZSB3YXMgYSBwcm9ibGVtIHN1Ym1pdHRpbmcgeW91ciBhcHBsaWNhdGlvbi4gUGxlYXNlIHRyeSBhZ2Fpbi4iO2NvbnNvbGUuZXJyb3IoImZpbmFuY2VfbXVsdGlzdGVwLnNlbmRFbWFpbCBmYWlsZWQiLHQpO3Q9JCgiPGRpdj4iKS50ZXh0KHEpLmh0bWwoKTskKCIubXVsdGlzdGVwSW5zdGFudFNwaW5uZXIiKS5oaWRlKCk7YS5zdGVwPTMwOyQoIiNmaW5hbmNlX211bHRpc3RlcF9mb3JtX25leHRfYnRuIixiKS5zaG93KCk7JCgiI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm1fZXJyb3IiLGIpLmh0bWwocT9BKyIgIit0OkEpfX07ZW1haWxIYW5kbGVyLnNlbmRNYWlsKCExKX19LHNldEZpbmFuY2VGb3JtU3RhdHVzVG9TZW50OmZ1bmN0aW9uKCl7JC5hamF4KHt1cmw6Ii8iK3crIi9hamF4L3NldEZpbmFuY2VNdWx0aXN0ZXBEYXRhU3RhdHVzVG9TZW50P3dzd2lkdGg9MCIsCmRhdGFUeXBlOiJKU09OIix0eXBlOiJQT1NUIixkYXRhOnt1c2VySWQ6ay51c2VySWQoKX0sc3VjY2VzczpmdW5jdGlvbihjKXtsZXQgZD1uZXcgQ3VzdG9tRXZlbnQoInRyYWNrc3RlcC5jb21wbGV0ZSIse2RldGFpbDp7c3RlcElkOiJGaW5hbmNlQWN0aW9uQm94In19KTtkb2N1bWVudC5kaXNwYXRjaEV2ZW50KGQpO2lmKCJTVUNDRVNTIj09Y3x8bnVsbD09PWMpYS5zdGVwPTIxLGsudXNlcklkKC0xKSxsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgiZmluYW5jZV9tdWx0aXN0ZXAubGluZWFyX3N0ZXAiKSwkKGRvY3VtZW50LmJvZHkpLnRyaWdnZXIoIm11bHRpRm9ybUZpbmFuY2VTdWJtaXQiKX19KX0scmVzZXRGb3JtOmZ1bmN0aW9uKCl7YS5mb3JtZGF0YT17dmVoaWNsZVR5cGU6IiIsYnVkZ2V0OiIiLGN1cnJlbnRseURyaXZpbmc6IiIsZW1haWxBZGRyZXNzOiIiLGNyZWRpdFJhdGluZzoiIixkb3duT3B0aW9uczoiIixiaXJ0aGRhdGVZZWFyOiIiLGJpcnRoZGF0ZU1vbnRoOiIiLApiaXJ0aGRhdGVEYXk6IiIsYWRkcmVzczoiIixzcGxpdEFkZHJlc3M6W10sYWRkcmVzc195ZWFyczowLGFkZHJlc3NfbW9udGhzOjAsYWRkcmVzczI6IiIsc3BsaXRBZGRyZXNzMjpbXSxhZGRyZXNzMl95ZWFyczowLGFkZHJlc3MyX21vbnRoczowLGFkZHJlc3NFbXBsb3llcjoiIixzcGxpdEFkZHJlc3NFbXBsb3llcjpbXSxyZW50T3JPd246IiIsbW9udGhseVBheW1lbnQ6MCxtb250aGx5RGlzYnVyc2VtZW50OjAsZW1wbG95bWVudFN0YXR1czoiIixlbXBsb3ltZW50QWRkZWRJbmZvOiIiLGVtcGxveWVyTmFtZToiIixlbXBsb3llclBob25lOiIiLGVtcGxveW1lbnRTdGF0dXNZZWFyOjAsZW1wbG95bWVudFN0YXR1c01vbnRoOjAsZW1wbG95bWVudEFkZGVkSW5mbzI6IiIsZW1wbG95ZXJOYW1lMjoiIixlbXBsb3llclBob25lMjoiIixlbXBsb3ltZW50U3RhdHVzWWVhcjI6MCxlbXBsb3ltZW50U3RhdHVzTW9udGgyOjAsYWRkcmVzc0VtcGxveWVyMjoiIixzcGxpdEFkZHJlc3NFbXBsb3llcjI6W10sCndvcmtpbmdXaGlsZUluU2Nob29sOiIiLG90aGVyRW1wbG95bWVudFN0YXR1czoiIixtb250aGx5SW5jb21lOjAsbW9udGhseUluY29tZV95ZWFyczowLG1vbnRobHlJbmNvbWVfbW9udGhzOjAsdGl0bGU6IiIsZmlyc3ROYW1lOiIiLGxhc3ROYW1lOiIiLHBob25lTnVtYmVyOiIiLGN1cnJlbnRNYWtlOiIiLGN1cnJlbnRNb2RlbDoiIixjdXJyZW50TW9kZWxUZXh0OiIiLGN1cnJlbnRZZWFyOiIiLGN1cnJlbnRTdG9ja051bWJlcjoiIixjdXJyZW50TWlsZWFnZToxMCxjdXJyZW50VHJpbToiIixjdXJyZW50U3R5bGVpZDoiIixjdXJyZW50Q2FySWQ6IiIscGF5bWVudFR5cGU6IiIscGF5bWVudFR5cGVSZWFsOiIiLHBheW1lbnRUZXJtOiIiLHBheW1lbnRSYXRlVHlwZToiIixwYXltZW50VmFsdWU6IiIsYmFzZXBheW1lbnQ6IiIscGF5bWVudFRvdGFsSW5jZW50aXZlOjAscGF5bWVudFRvdGFsRmVlOjAscGF5bWVudEdTVDowLHBheW1lbnRIU1Q6MCxwYXltZW50UFNUOjAscGF5bWVudERvd25QYXltZW50OjAsCnBheW1lbnRLbUFsbG93YW5jZTowLHBheW1lbnRJbnRlcnZhbDoiIixwYXltZW50UmF0ZToiIixwYXltZW50UmVzaWR1YWxWYWx1ZTowLG5vUGF5bWVudDohMSxtdWx0aV9kZWFsZXJfc2VuZFRvOiIiLGNyZWRpdEJ1cmVhdUNyZWRpdDoiTk8iLFNJTjoiIixhZGRlZEluZm86IiIsdmVoaWNsZVNhbGVzRGVwdDoib3RoZXIiLHZlaGljbGVQcmljZToiIix2ZWhpY2xlVHJhbnNtaXNzaW9uOiIiLHZlaGljbGVUcmltOiIiLHZlaGljbGVDb2xvcjoiIixpbml0aWFsVGl0bGVTaG93OiEwLG11bHRpRnJvbU1pbmk6ITEsdHJhZGVJbk1ha2U6IiIsdHJhZGVJbk1vZGVsOiIiLHRyYWRlSW5ZZWFyOiIiLHRyYWRlSW5UcmltOiIiLHRyYWRlSW5WYWx1ZToiIn19LGNyZWRpdEFwcFN1bWlzc2lvbjpmdW5jdGlvbigpe3ZhciBjPWEuZm9ybWRhdGEsZD0kKCIjc2l0ZUlEIikudmFsKCl8fCQoIiN0b3BzaXRlaWQiKS52YWwoKTtjLnNpdGVJZD1kO2MuY3VycmVudERlcHQ9YS5jdXJyZW50RGVwdDskKCIubXVsdGlzdGVwSW5zdGFudFNwaW5uZXIiKS5zaG93KCk7CmEuZm9ybWRhdGEuY3JlZGl0QnVyZWF1Q3JlZGl0PSJZRVMiO2Euc3RlcD0yMTskLmFqYXgoe3VybDoiLyIrdytgL2FqYXgvc3VibWl0Q3JlZGl0QXBwbGljYXRpb24\/d3N3aWR0aD0ke2VuY29kZVVSSUNvbXBvbmVudCgiMCIpfWAsZGF0YVR5cGU6IkpTT04iLHR5cGU6IlBPU1QiLGRhdGE6YyxzdWNjZXNzOmZ1bmN0aW9uKGUpe2xldCBmLGcsbD1lLmFwcGxpY2F0aW9uSWQ7aWYoZS5lcnJvcilmPSQoIiNGSU5BTkNFX0ZPUk1fVldDUkVESVRfVldFUlJPUl9NU0dfVVNFUiIsYikudmFsKCksZz0kKCIjRklOQU5DRV9GT1JNX1ZXQ1JFRElUX0VSUk9SX01TR19MRUFEIixiKS52YWwoKSxhLmNyZWRpdERlY2lzaW9uSFRNTD1nO2Vsc2UgaWYobCl7aWYoZj0kKCIjRklOQU5DRV9GT1JNX1ZXQ1JFRElUX0FQUFJPVkFMX01TRyIsYikudmFsKCkrIjxicj48YnI+IitsLGY9Zi5yZXBsYWNlKCIjI1VTRVJFTUFJTCMjIixjLmVtYWlsQWRkcmVzcyksZz0kKCIjRklOQU5DRV9GT1JNX1ZXQ1JFRElUX1NVQ0NFU1NfTVNHX0xFQUQiLApiKS52YWwoKSsiPHN0cm9uZz4iK2wrIjwvc3Ryb25nPiIsYS5jcmVkaXREZWNpc2lvbkhUTUw9ZyxhLmNyZWRpdEFwcGxpY2F0aW9uSWQ9bCxlLmFwcGxpY2F0aW9uU3RhdHVzJiZlLmFwcGxpY2F0aW9uU3RhdHVzLnN0YXR1cylzd2l0Y2goZS5hcHBsaWNhdGlvblN0YXR1cy5zdGF0dXMpe2Nhc2UgIkFwcHJvdmVkIjokKCIjRklOQU5DRV9GT1JNX1ZXQ1JFRElUX0FQUFJPVkFMX01TRyIsYikudmFsKCk7YnJlYWs7Y2FzZSAiUGVuZGluZyI6JCgiI0ZJTkFOQ0VfRk9STV9WV0NSRURJVF9QRU5ESU5HX01TRyIsYikudmFsKCk7YnJlYWs7ZGVmYXVsdDokKCIjRklOQU5DRV9GT1JNX1ZXQ1JFRElUX05PQVBQUk9WQUxfTVNHIixiKS52YWwoKX19ZWxzZSBmPSQoIiNGSU5BTkNFX0ZPUk1fVldDUkVESVRfVldFUlJPUl9NU0dfVVNFUiIsYikudmFsKCksZz0kKCIjRklOQU5DRV9GT1JNX1ZXQ1JFRElUX0VSUk9SX01TR19MRUFEIixiKS52YWwoKSxhLmNyZWRpdERlY2lzaW9uSFRNTD1nOyQoYikuZmluZCgiLmNvbmZpcm1hdGlvblRpdGxlIikuaGlkZSgpOwokKGIpLmZpbmQoIi5jb25maXJtYXRpb25UZXh0IikuaGlkZSgpOyQoYikuZmluZCgiLmNyZWRpdERlY2lzaW9uIikuaHRtbChmKTskKGIpLmZpbmQoIi5jcmVkaXREZWNpc2lvbiIpLnNob3coKTskKCIubXVsdGlzdGVwSW5zdGFudFNwaW5uZXIiKS5oaWRlKCk7ay5zZW5kRW1haWwoKX19KX0scm91dGVPbmVDYWxsOmZ1bmN0aW9uKCl7dmFyIGM9YS5mb3JtZGF0YSxkPSQoIiNzaXRlSUQiKS52YWwoKXx8JCgiI3RvcHNpdGVpZCIpLnZhbCgpO2Muc2l0ZUlkPWQ7Yy5jdXJyZW50RGVwdD1hLmN1cnJlbnREZXB0OyQoIi5tdWx0aXN0ZXBJbnN0YW50U3Bpbm5lciIpLnNob3coKTthLnN0ZXA9MjE7KGZ1bmN0aW9uKGUpe3JldHVybiBuZXcgUHJvbWlzZSgoZixnKT0+JGpzY29tcC5hc3luY0V4ZWN1dGVQcm9taXNlR2VuZXJhdG9yRnVuY3Rpb24oZnVuY3Rpb24qKCl7ZT1lKyI\/Y2I9IisyMDM4MzQ3NDkzKk1hdGgucmFuZG9tKCk7bGV0IGw9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7Cmwuc2V0QXR0cmlidXRlKCJzcmMiLGUpO2wuc2V0QXR0cmlidXRlKCJhc3luYyIsImZhbHNlIik7bGV0IHA9ZG9jdW1lbnQuaGVhZDtwLmluc2VydEJlZm9yZShsLHAuZmlyc3RFbGVtZW50Q2hpbGQpO2wuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsKCk9PntmKCl9LCExKX0pKX0pKCIvanMvcm91dGUxSGFuZGxlci5qcyIpLnRoZW4oKCk9PntsZXQgZT1uZXcgcm91dGUxRXZlbnRIYW5kbGVyKCExKTtlLm9uKCJjb25uZWN0ZWQiLChmLGcpPT57Y29uc29sZS5sb2coIkNvbm5lY3RlZCIpfSk7ZS5vbigicmVhZHkiLChmLGcpPT57Y29uc29sZS5sb2coIlJlYWR5Iik7ZS5yZXF1ZXN0Q3JlZGl0Q2hlY2soYyl9KTtlLm9uKCJlcnJvciIsKGYsZyk9Pntjb25zb2xlLmxvZygiRXJyb3I6ICVvIixmKTtlLmNsb3NlKCk7ay5zZXRDcmVkaXREZWNpc2lvbihmLm1lc3NhZ2UpOyQoIi5tdWx0aXN0ZXBJbnN0YW50U3Bpbm5lciIpLmhpZGUoKTtrLnNlbmRFbWFpbCgpfSk7ZS5vbigiY3JlZGl0Q2hlY2tDb21wbGV0ZSIsCihmLGcpPT57Y29uc29sZS5sb2coIkNyZWRpdCBDaGVjayBDb21wbGV0ZTogJW8iLGYpO2UuY2xvc2UoKTtrLnNldENyZWRpdERlY2lzaW9uKGYpOyQoIi5tdWx0aXN0ZXBJbnN0YW50U3Bpbm5lciIpLmhpZGUoKTtrLnNlbmRFbWFpbCgpfSk7ZS5vbigid2FpdGluZ09uUm91dGUxIiwoZixnKT0+e2NvbnNvbGUubG9nKCJXYWl0aW5nIG9uIFJvdXRlIDE6ICVvIixmKX0pfSl9LHNldENyZWRpdERlY2lzaW9uOmZ1bmN0aW9uKGMpe3ZhciBkLGU9IiI7aWYoYy5qc29uKXt2YXIgZj0iYXBwcm92ZWQiPT1jLmpzb24uc3RhdHVzPyJBcHByb3ZlZCI6IkRlbmllZCI7dmFyIGc9bnVsbCE9KGQ9Yy5qc29uLmlkKT9kOiIiO3ZhciBsO2Q9bnVsbCE9KGw9Yy5qc29uLmxlbmRlcik\/bDoiIjtjLmpzb24uZXJyb3Jtc2cmJiJObyBwYXltZW50Ij09Yy5qc29uLmVycm9ybXNnJiYoZj1jLmpzb24uZXJyb3Jtc2csZD1nPSIiKTtlPWMuanNvbi5lcnJvcm1zZ31lbHNlIGlmKGMuc3RhdGUpe2Y9IkRlbmllZCI7CnZhciBwO2c9bnVsbCE9KHA9Yy5zdGF0ZS5pZCk\/cDoiIjtkPSIiO2MuZXJyb3Jtc2cmJiJObyBwYXltZW50Ij09Yy5lcnJvcm1zZyYmKGY9Yy5lcnJvcm1zZyxkPWc9IiIpO2U9Yy5lcnJvcm1zZz9jLmVycm9ybXNnOmMuZXJyb3J9ZWxzZSBmPSJEZW5pZWQiLGQ9Zz0iIjsiQXBwcm92ZWQiIT1mPyhsPSQoIiNGSU5BTkNFX0ZPUk1fUk9VVEVPTkVfTk9BUFBST1ZBTF9NU0ciKS52YWwoKSwiTm8gcGF5bWVudCI9PWY\/KGY9IkVOR0xJU0giPT0kKCIjYWN0aXZlc2l0ZWxhbmd1YWdlIikudmFsKCk\/ZjoiUGFzIGRlIHBhaWVtZW50IixsPWwucmVwbGFjZSgiJFJvdXRlT25lSUQiLCIiKS5yZXBsYWNlKCIkRXJyb3JDb2RlIixmKSk6bD1nP2wucmVwbGFjZSgiJFJvdXRlT25lSUQiLGcpLnJlcGxhY2UoIiRFcnJvckNvZGUiLGUpOmwucmVwbGFjZSgiJFJvdXRlT25lSUQiLCIiKS5yZXBsYWNlKCIkRXJyb3JDb2RlIixlKSk6KGw9JCgiI0ZJTkFOQ0VfRk9STV9ST1VURU9ORV9BUFBST1ZBTF9NU0ciKS52YWwoKSwKbD1sLnJlcGxhY2UoIiRNYWtlIixhLmZvcm1kYXRhLmN1cnJlbnRNYWtlKSxsPWwucmVwbGFjZSgiJE1vZGVsIixhLmZvcm1kYXRhLmN1cnJlbnRNb2RlbFRleHQpLGw9bC5yZXBsYWNlKCIkWWVhciIsYS5mb3JtZGF0YS5jdXJyZW50WWVhciksbD1sLnJlcGxhY2UoIiRWZXJzaW9uIixhLmZvcm1kYXRhLmN1cnJlbnRUcmltKSxsPWwucmVwbGFjZSgiJExlbmRlciIsZCksbD1sLnJlcGxhY2UoIiRSZWZlcmVuY2VJRCIsZyksZj0kKCdpbnB1dFtkYXRhLWZvcnZhcj0iT1ZFUldSSVRURVJERUFMRVIiXScpLnZhbCgpJiYkKCdpbnB1dFtkYXRhLWZvcnZhcj0iT1ZFUldSSVRURVJERUFMRVIiXScpLmxlbmd0aD8kKCdpbnB1dFtkYXRhLWZvcnZhcj0iT1ZFUldSSVRURVJERUFMRVIiXScpLnZhbCgpOiIiLHA9IiIhPSQoJ2lucHV0W2RhdGEtZm9ydmFyPSJERUFMRVIiXScpLnZhbCgpJiYkKCdpbnB1dFtkYXRhLWZvcnZhcj0iREVBTEVSIl0nKS5sZW5ndGg\/JCgnaW5wdXRbZGF0YS1mb3J2YXI9IkRFQUxFUiJdJykudmFsKCk6CiQoIiNoaWRkZW5EZWFsZXJOYW1lIikudmFsKCksZj1mIT1wJiYiIiE9Zj9mOnAsbD1sLnJlcGxhY2UoIiREZWFsZXJOYW1lIixmKSxsPSIiIT1hLmZvcm1kYXRhLmN1cnJlbnRTdG9ja051bWJlcj9sLnJlcGxhY2UoIiRTdG9jayIsYS5mb3JtZGF0YS5jdXJyZW50U3RvY2tOdW1iZXIpOmwucmVwbGFjZSgiKFN0b2NrICRTdG9jaykiLCIiKSxmPSJFTkdMSVNIIj09JCgiI2FjdGl2ZXNpdGVsYW5ndWFnZSIpLnZhbCgpPyJBcHByb3ZlZCI6IkFwcHJvdXbDqSIpO2QmJihmKz0iICIrZCk7ZyYmKGYrPSIgKCIrZysiKSIpO2UmJihmKz0iXG4iK2UpO2c9W107Yy5yb3V0ZTFpZCYmZy5wdXNoKGMucm91dGUxaWQpO2Muc3RhdGUmJmMuc3RhdGUuaWQmJmcucHVzaChjLnN0YXRlLmlkKTtpZihjLmhpc3RvcnkpZm9yKGU9MDtlPGMuaGlzdG9yeS5sZW5ndGg7ZSsrKWMuaGlzdG9yeVtlXS5pZCYmZy5wdXNoKGMuaGlzdG9yeVtlXS5pZCk7ZW1haWxIYW5kbGVyLm9uQWZ0ZXJMZWFkQ3JlYXRlZD0Ke2FjdGlvbjoiUk9VVEVPTkUiLGNvbnZlcnNhdGlvbklkczpnfTthLmNyZWRpdERlY2lzaW9uSFRNTD1mOyQoYikuZmluZCgiLmNvbmZpcm1hdGlvblRpdGxlIikuaGlkZSgpOyQoYikuZmluZCgiLmNvbmZpcm1hdGlvblRleHQiKS5oaWRlKCk7JChiKS5maW5kKCIuY3JlZGl0RGVjaXNpb24iKS50ZXh0KGwpOyQoYikuZmluZCgiLmNyZWRpdERlY2lzaW9uIikuc2hvdygpfSxzZXRDdXJyZW50TWFrZU1vZGVsWWVhcjpmdW5jdGlvbigpe2lmKCIxIj09JCgiI0ZJTkFOQ0VfTVVMVElTVEVQX2lzSW5zdGFudCIsYikudmFsKCkpe2Euc3RlcD0wO2EubmV4dFN0ZXA9TDthLmZvcm1kYXRhLm5vUGF5bWVudD0hMTthLmNhbGN1bGF0b3JGdW5jdGlvbnM9bnVsbDthLmZvcm1kYXRhLnBheW1lbnRUeXBlPSIiO2EuZm9ybWRhdGEucGF5bWVudFR5cGVSZWFsPSIiO2EuZm9ybWRhdGEucGF5bWVudFRlcm09IiI7YS5mb3JtZGF0YS5wYXltZW50UmF0ZVR5cGU9IiI7YS5mb3JtZGF0YS5wYXltZW50UmVzaWR1YWxWYWx1ZT0KIiI7YS5mb3JtZGF0YS5wYXltZW50VmFsdWU9IiI7YS5mb3JtZGF0YS52ZWhpY2xlSW5pdGlhbFByaWNlPSIiO2EuZm9ybWRhdGEudmVoaWNsZUZpbmFsUHJpY2U9IiI7YS5mb3JtZGF0YS5wYXltZW50RmVlc0xpc3Q9W107YS5mb3JtZGF0YS5wYXltZW50SW5jZW50aXZlc0xpc3Q9W107YS5mb3JtZGF0YS5iYXNlcGF5bWVudD0iIjthLmZvcm1kYXRhLnBheW1lbnRUb3RhbEluY2VudGl2ZT0wO2EuZm9ybWRhdGEucGF5bWVudFRvdGFsRmVlPTA7YS5mb3JtZGF0YS5wYXltZW50R1NUPTA7YS5mb3JtZGF0YS5wYXltZW50SFNUPTA7YS5mb3JtZGF0YS5wYXltZW50UFNUPTA7YS5mb3JtZGF0YS5wYXltZW50RG93blBheW1lbnQ9MDthLmZvcm1kYXRhLnRyYWRlSW5WYWx1ZT0iIjthLmZvcm1kYXRhLnBheW1lbnRLbUFsbG93YW5jZT0wO2EuZm9ybWRhdGEucGF5bWVudEludGVydmFsPSIiO2EuZm9ybWRhdGEucGF5bWVudFJhdGU9IiI7dmFyIGM9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZpbmFuY2VNdWx0aXN0ZXBOZXdDYWxjdWxhdG9yIik7CmMucmVwbGFjZVdpdGgoYy5jbG9uZU5vZGUoITApKX1hLmZvcm1kYXRhLmN1cnJlbnRNYWtlPSQoIiNwb3B1cG1ha2VNdWx0aXN0ZXBGb3JtIikubGVuZ3RoPyQoIiNwb3B1cG1ha2VNdWx0aXN0ZXBGb3JtIikudmFsKCk6YS5mb3JtZGF0YS5jdXJyZW50TWFrZTthLmZvcm1kYXRhLmN1cnJlbnRNb2RlbD0kKCIjcG9wdXBtb2RlbE11bHRpc3RlcEZvcm0iKS5sZW5ndGg\/JCgiI3BvcHVwbW9kZWxNdWx0aXN0ZXBGb3JtIikudmFsKCk6YS5mb3JtZGF0YS5jdXJyZW50TW9kZWw7YS5mb3JtZGF0YS5jdXJyZW50WWVhcj0kKCIjcG9wdXB5ZWFyTXVsdGlzdGVwRm9ybSIpLmxlbmd0aCYmMCE9JCgiI3BvcHVweWVhck11bHRpc3RlcEZvcm0iKS52YWwoKT8kKCIjcG9wdXB5ZWFyTXVsdGlzdGVwRm9ybSIpLnZhbCgpOmEuZm9ybWRhdGEuY3VycmVudFllYXI7YS5mb3JtZGF0YS5jdXJyZW50U3RvY2tOdW1iZXI9JCgiI3BvcHVwc3RvY2tudW1iZXJNdWx0aXN0ZXBGb3JtIikubGVuZ3RoPyQoIiNwb3B1cHN0b2NrbnVtYmVyTXVsdGlzdGVwRm9ybSIpLnZhbCgpOgphLmZvcm1kYXRhLmN1cnJlbnRTdG9ja051bWJlcjt2YXIgZD0kKCIjdG9wY2FyaWRNdWx0aXN0ZXBGb3JtIikudmFsKCk7MD09cGFyc2VJbnQoZCkmJihkPSIiKTtpZigiIiE9YS5mb3JtZGF0YS5jdXJyZW50TWFrZSYmIiIhPWEuZm9ybWRhdGEuY3VycmVudE1vZGVsJiYiIiE9YS5mb3JtZGF0YS5jdXJyZW50WWVhcnx8IiIhPWQpaWYoZCkkLmdldEpTT04oIi9qcy9qc29uLyIrZCsiLmpzb24iLGZ1bmN0aW9uKGYpe2EuZm9ybWRhdGEudmVoaWNsZVNhbGVzRGVwdD0idXNlZCI7YS5jdXJyZW50RGVwdD0iVVNFRCI7aWYoZi5pc25ld3x8Zi5kZW1vJiYiMSI9PSQoJ2lucHV0W25hbWU9IkZJTkFOQ0VfREVNT0FTTkVXIl0nLGIpLnZhbCgpKWEuZm9ybWRhdGEudmVoaWNsZVNhbGVzRGVwdD0ibmV3IixhLmN1cnJlbnREZXB0PSJORVdJTlYiLGEuZm9ybWRhdGEuY3VycmVudFN0eWxlaWQ9Zi5zdHlsZUlkOzA8Zi5tYWtlY2VydCYmKGEuZm9ybWRhdGEudmVoaWNsZVNhbGVzRGVwdD0iY3BvIik7CnZhciBnPShmLnRyYW5zbWlzc2lvbkVOKyIiKS5tYXRjaCgvKGF1dG9tYXRpY3xtYW51YWwpL2kpO2c9Zz9nWzBdOiIiO2EuZm9ybWRhdGEudmVoaWNsZUNvbG9yPWYuY29sb3JFTjthLmZvcm1kYXRhLnZlaGljbGVQcmljZT1mLm9yaWdpbmFsUHJpY2U7YS5mb3JtZGF0YS52ZWhpY2xlVGFuc21pc3Npb249ZzthLmZvcm1kYXRhLnZlaGljbGVUcmltPWYudmVyc2lvbjthLmZvcm1kYXRhLmN1cnJlbnRUcmltPWYudmVyc2lvbjthLmZvcm1kYXRhLmN1cnJlbnRDYXJJZD1kO2EuZm9ybWRhdGEuY3VycmVudE1pbGVhZ2U9Zi5taWxlcztzd2l0Y2goZi5ib2R5VHlwZUlEKXtjYXNlICJTVVYiOmEuZm9ybWRhdGEudmVoaWNsZVR5cGU9IkJPRFlUWVBFX1NVViI7YnJlYWs7Y2FzZSAiVFJVQ0siOmEuZm9ybWRhdGEudmVoaWNsZVR5cGU9IkJPRFlUWVBFX1RSVUNLIjticmVhaztjYXNlICJNSU5JVkFOIjphLmZvcm1kYXRhLnZlaGljbGVUeXBlPSJCT0RZVFlQRV9NSU5JVkFOIjticmVhaztkZWZhdWx0OmEuZm9ybWRhdGEudmVoaWNsZVR5cGU9CiJCT0RZVFlQRV9DQVIifTA9PWEuc3RlcCYmYS5uZXh0KCEwKTtrLnBvcHVwTGF1bmNoZWRUcmFjaygpfSk7ZWxzZXthLmZvcm1kYXRhLnZlaGljbGVTYWxlc0RlcHQ9Im5ldyI7Yz0iRU5HTElTSCI9PSQoIiNhY3RpdmVzaXRlbGFuZ3VhZ2UiKS52YWwoKT8iLWVuIjoiLWZyIjt1cmw9Ii9qc29uLyIrYS5mb3JtZGF0YS5jdXJyZW50TWFrZS5yZXBsYWNlKCItIiwiXyIpLnJlcGxhY2UoIiAiLCJfIikrIi0iK2EuZm9ybWRhdGEuY3VycmVudE1vZGVsLnJlcGxhY2UoIi0iLCJfIikucmVwbGFjZSgiICIsIl8iKSsiLSIrYS5mb3JtZGF0YS5jdXJyZW50WWVhcitjKyIuanNvbiI7aWYoIkJNVyI9PWEuZm9ybWRhdGEuY3VycmVudE1ha2V8fCJNZXJjZWRlcy1CZW56Ij09YS5mb3JtZGF0YS5jdXJyZW50TWFrZSl7dmFyIGU9JCgiI3RleHRNb2RlbE92ZXJyaWRlIikubGVuZ3RoJiYkKCIjdGV4dE1vZGVsT3ZlcnJpZGUiKS52YWwoKS5sZW5ndGg\/JCgiI3RleHRNb2RlbE92ZXJyaWRlIikudmFsKCk6CmEuZm9ybWRhdGEuY3VycmVudE1vZGVsO3VybD0iL2pzb24vIithLmZvcm1kYXRhLmN1cnJlbnRNYWtlLnJlcGxhY2UoIi0iLCJfIikucmVwbGFjZSgiICIsIl8iKSsiLSIrZS5yZXBsYWNlKCItIiwiXyIpLnJlcGxhY2UoIiAiLCJfIikrIi0iK2EuZm9ybWRhdGEuY3VycmVudFllYXIrYysiLmpzb24ifTA8PWEuZm9ybWRhdGEuY3VycmVudE1vZGVsLmluZGV4T2YoImh5YnJpZCIpJiYoZT0kKCdpbnB1dFtkYXRhLWZvcnZhcj0iTU9ERUxGT1JFTUFJTCJdJykubGVuZ3RoJiYkKCdpbnB1dFtkYXRhLWZvcnZhcj0iTU9ERUxGT1JFTUFJTCJdJykudmFsKCkubGVuZ3RoPyQoJ2lucHV0W2RhdGEtZm9ydmFyPSJNT0RFTEZPUkVNQUlMIl0nKS52YWwoKTphLmZvcm1kYXRhLmN1cnJlbnRNb2RlbCx1cmw9Ii9qc29uLyIrYS5mb3JtZGF0YS5jdXJyZW50TWFrZS5yZXBsYWNlKCItIiwiXyIpKyItIitlLnJlcGxhY2UoIi0iLCJfIikrIi0iK2EuZm9ybWRhdGEuY3VycmVudFllYXIrYysiLmpzb24iKTsKJCgiLnBheW1lbnRDYWxjdWxhdG9yVkRQIikubGVuZ3RoP2EuZm9ybWRhdGEuY3VycmVudFN0eWxlaWQ9JCgiLnBheW1lbnRDYWxjdWxhdG9yVkRQIikuYXR0cigiZGF0YS1zdHlsZWlkIik6JCgiLnBheW1lbnRDYWxjQnRuIikubGVuZ3RoP2EuZm9ybWRhdGEuY3VycmVudFN0eWxlaWQ9JCgiLnBheW1lbnRDYWxjQnRuIikuYXR0cigiZGF0YS1zdHlsZWlkIik6JCgiI2FjdGl2ZVN0eWxlSUQiKS5sZW5ndGgmJihhLmZvcm1kYXRhLmN1cnJlbnRTdHlsZWlkPSQoIiNhY3RpdmVTdHlsZUlEIikudmFsKCkpOyQuZ2V0SlNPTih1cmwpLmRvbmUoZnVuY3Rpb24oZil7aWYoZil7c3dpdGNoKGYuc2VjdGlvbil7Y2FzZSAic3V2IjphLmZvcm1kYXRhLnZlaGljbGVUeXBlPSJCT0RZVFlQRV9TVVYiO2JyZWFrO2Nhc2UgInRydWNrcyI6YS5mb3JtZGF0YS52ZWhpY2xlVHlwZT0iQk9EWVRZUEVfVFJVQ0siO2JyZWFrO2Nhc2UgIm1pbml2YW5zIjphLmZvcm1kYXRhLnZlaGljbGVUeXBlPSJCT0RZVFlQRV9NSU5JVkFOIjsKYnJlYWs7ZGVmYXVsdDphLmZvcm1kYXRhLnZlaGljbGVUeXBlPSJCT0RZVFlQRV9DQVIifSIiIT1hLmZvcm1kYXRhLmN1cnJlbnRTdHlsZWlkJiZmLnN0eWxlcy5mb3JFYWNoKGZ1bmN0aW9uKGcpe2cuaWQ9PWEuZm9ybWRhdGEuY3VycmVudFN0eWxlaWQmJihhLmZvcm1kYXRhLmN1cnJlbnRUcmltPSIiIT1nLnRyaW0\/Zy50cmltOmcuQ0ZTdHlsZU5hbWUsYS5mb3JtZGF0YS52ZWhpY2xlUHJpY2U9Zy5tc3JwQWxsSW4pfSl9fSkuYWx3YXlzKGZ1bmN0aW9uKCl7MD09YS5zdGVwJiYoYS5uZXh0KCEwKSxrLnBvcHVwTGF1bmNoZWRUcmFjaygpKX0pfWVsc2UiIiE9YS5mb3JtZGF0YS5lbWFpbEFkZHJlc3MmJjIxIT1hLnN0ZXAmJiIxIiE9JCgiI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gI09QRU5FREZST01JTUFHRVBPUFVQIixiKS52YWwoKSYmYS5wdXNoUGFydGlhbCYmay5wdXNoRGF0YVRvU2VydmVyKCksLTE9PWEub3B0aW9uYWxTdGVwLmluZGV4T2YoYS5zdGVwKSYmYS5uZXh0KCEwKSwKay5wb3B1cExhdW5jaGVkVHJhY2soKX0sZ2V0Q2xpZW50U3RvcmFnZURhdGE6ZnVuY3Rpb24oYyl7bGV0IGQ9IiI7InVuZGVmaW5lZCIhPT10eXBlb2YgY2xpZW50U3RvcmFnZSYmKGQ9Y2xpZW50U3RvcmFnZS5nZXQoYykpO3JldHVybiBkfSxzZXRDbGllbnRTdG9yYWdlRGF0YTpmdW5jdGlvbihjLGQpeyJ1bmRlZmluZWQiIT09dHlwZW9mIGNsaWVudFN0b3JhZ2UmJmNsaWVudFN0b3JhZ2Uuc2V0KGMsZCl9LHNldENsaWVudFN0b3JhZ2VEYXRhVmFsdWVzOmZ1bmN0aW9uKCl7InVuZGVmaW5lZCIhPT10eXBlb2YgY2xpZW50U3RvcmFnZSYmKCIiIT09YS5mb3JtZGF0YS5maXJzdE5hbWUmJmsuc2V0Q2xpZW50U3RvcmFnZURhdGEoImZpcnN0bmFtZSIsYS5mb3JtZGF0YS5maXJzdE5hbWUpLCIiIT09YS5mb3JtZGF0YS5sYXN0TmFtZSYmay5zZXRDbGllbnRTdG9yYWdlRGF0YSgibGFzdG5hbWUiLGEuZm9ybWRhdGEubGFzdE5hbWUpLCIiIT09YS5mb3JtZGF0YS5lbWFpbEFkZHJlc3MmJgprLnNldENsaWVudFN0b3JhZ2VEYXRhKCJlbWFpbCIsYS5mb3JtZGF0YS5lbWFpbEFkZHJlc3MpLCIiIT09YS5mb3JtZGF0YS5waG9uZU51bWJlciYmay5zZXRDbGllbnRTdG9yYWdlRGF0YSgicGhvbmUiLGEuZm9ybWRhdGEucGhvbmVOdW1iZXIpKX0sc2V0RGVwYXJ0bWVudDpmdW5jdGlvbigpe3ZhciBjPWVtYWlsSGFuZGxlci5nZXREZXAoKTtpZigiTkVXIiE9Y3x8Ik5FV0lOViIhPWN8fCJVU0VEIiE9YyljPSJORVciO2EuY3VycmVudERlcHQ9YzsiTkVXIiE9Y3x8ImNhcmRldGFpbC5odG1sIiE9JCgiI1BBR0VJRCIpLnZhbCgpJiYidXNlZGNhcnMuaHRtbCIhPSQoIiNQQUdFSUQiKS52YWwoKXx8KGEuY3VycmVudERlcHQ9Ik5FV0lOViIpfSxzZXRUcmFkZUluOmZ1bmN0aW9uKCl7YS5mb3JtZGF0YS50cmFkZUluTWFrZT0kKGIpLmZpbmQoJ2lucHV0W25hbWU9ImZpbmFuY2VUcmFkZUluTWFrZSJdJykudmFsKCk7YS5mb3JtZGF0YS50cmFkZUluTW9kZWw9JChiKS5maW5kKCdpbnB1dFtuYW1lPSJmaW5hbmNlVHJhZGVJbk1vZGVsIl0nKS52YWwoKTsKYS5mb3JtZGF0YS50cmFkZUluWWVhcj0kKGIpLmZpbmQoJ2lucHV0W25hbWU9ImZpbmFuY2VUcmFkZUluWWVhciJdJykudmFsKCk7YS5mb3JtZGF0YS50cmFkZUluVHJpbT0kKGIpLmZpbmQoJ2lucHV0W25hbWU9ImZpbmFuY2VUcmFkZUluVHJpbSJdJykudmFsKCk7bGV0IGM9JChiKS5maW5kKCdpbnB1dFtuYW1lPSJmaW5hbmNlVHJhZGVJblZhbHVlIl0nKS52YWwoKSxkPSQoYikuZmluZCgnaW5wdXRbbmFtZT0iZmluYW5jZVRyYWRlSW5WYWx1ZSJdJykuYXR0cigiZGF0YS1jdXJyZW50Iik7ZCYmIiI9PWEuZm9ybWRhdGEudHJhZGVJblZhbHVlP2EuZm9ybWRhdGEudHJhZGVJblZhbHVlPWQ6IiI9PWEuZm9ybWRhdGEudHJhZGVJblZhbHVlJiYoYS5mb3JtZGF0YS50cmFkZUluVmFsdWU9Yyk7IiIhPWEuZm9ybWRhdGEudHJhZGVJblZhbHVlJiYoJCgiLnBheW1lbnRDYWxjdWxhdG9yVHJhZGVJbkZpbmFsIixiKS52YWwoYS5mb3JtZGF0YS50cmFkZUluVmFsdWUpLCQoIi5wYXltZW50Q2FsY3VsYXRvclRyYWRlSW5GaW5hbCIsCmIpLmF0dHIoIm1heCIsYyksJCgiLnBheW1lbnRDYWxjdWxhdG9yVHJhZGVJbkZpbmFsIixiKS5zaG93KCksJCgiLnBheW1lbnRDYWxjdWxhdG9yVHJhZGVJbkluaXRpYWwiLGIpLmhpZGUoKSl9LGdldEN1cnJlbnRCdWRnZXQ6ZnVuY3Rpb24oYyl7cmV0dXJuIjEiPT0kKCdpbnB1dFtuYW1lPSJGSU5BTkNFX01VTFRJU1RFUF9ISUdIX0JVREdFVF9DSEVDSyJdJykudmFsKCk\/NTAwPj1jPyJGSU5BTkNFX0ZPUk1fQlVER0VUX1VOREVSXzUwMCI6Njc2PD1jJiY4NTA+PWM\/IkZJTkFOQ0VfRk9STV9CVURHRVRfQkVUV0VFTl82NzZfQU5EXzg1MCI6ODUxPD1jJiYxMTAwPj1jPyJGSU5BTkNFX0ZPUk1fQlVER0VUX0JFVFdFRU5fODUxX0FORF8xMTAwIjoxMzUwPGM\/IkZJTkFOQ0VfRk9STV9CVURHRVRfT1ZFUl8xMzUxIjo1MDE8PWMmJjY3NT49Yz8iRklOQU5DRV9GT1JNX0JVREdFVF9CRVRXRUVOXzUwMV9BTkRfNjc1IjoiRklOQU5DRV9GT1JNX0JVREdFVF9CRVRXRUVOXzExMDFfQU5EXzEzNTAiOgoiMSI9PSQoJ2lucHV0W25hbWU9IkZJTkFOQ0VfTVVMVElTVEVQX1ZFUllISUdIX0JVREdFVF9DSEVDSyJdJykudmFsKCk\/OTAwPj1jPyJGSU5BTkNFX0ZPUk1fQlVER0VUX1VOREVSXzkwMCI6MTE1MTw9YyYmMTQwMD49Yz8iRklOQU5DRV9GT1JNX0JVREdFVF9CRVRXRUVOXzExNTFfQU5EXzE0MDAiOjE0MDE8PWMmJjE2NTA+PWM\/IkZJTkFOQ0VfRk9STV9CVURHRVRfQkVUV0VFTl8xNDAxX0FORF8xNjUwIjoxOTAwPGM\/IkZJTkFOQ0VfRk9STV9CVURHRVRfT1ZFUl8xOTAxIjo5MDE8PWMmJjExNTA+PWM\/IkZJTkFOQ0VfRk9STV9CVURHRVRfQkVUV0VFTl85MDFfQU5EXzExNTAiOiJGSU5BTkNFX0ZPUk1fQlVER0VUX0JFVFdFRU5fMTY1MV9BTkRfMTkwMCI6MzUwPj1jPyJGSU5BTkNFX0ZPUk1fQlVER0VUX1VOREVSXzM1MCI6NjAxPD1jJiY3NTA+PWM\/IkZJTkFOQ0VfRk9STV9CVURHRVRfQkVUV0VFTl82MDFfQU5EXzc1MCI6NzUxPD1jJiY5MDA+PWM\/IkZJTkFOQ0VfRk9STV9CVURHRVRfQkVUV0VFTl83NTFfQU5EXzkwMCI6CjkwMDxjPyJGSU5BTkNFX0ZPUk1fQlVER0VUX09WRVJfOTAxIjozNTE8PWMmJjQ3NT49Yz8iRklOQU5DRV9GT1JNX0JVREdFVF9CRVRXRUVOXzM1MV9BTkRfNDc1IjoiRklOQU5DRV9GT1JNX0JVREdFVF9CRVRXRUVOXzQ3Nl9BTkRfNjAwIn0sc2V0RGVhbGVyU2VsZWN0RW1haWw6ZnVuY3Rpb24oKXtzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCJkZWFsZXJTZWxlY3RWYWx1ZXMiKSYmKGVtYWlsSGFuZGxlci5zZXREZWFsZXJTZWxlY3RFbWFpbHMoKSxhLmZvcm1kYXRhLm11bHRpX2RlYWxlcl9zZW5kVG89LTEpfSxoYXNEZWFsZXJTZWxlY3RWYWx1ZXM6ZnVuY3Rpb24oKXtyZXR1cm4gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgiZGVhbGVyU2VsZWN0VmFsdWVzIil9LHNldEVtYWlsSGFuZGxlclNlbmQ6ZnVuY3Rpb24oKXtpZigwPT1hLmZvcm1kYXRhLm11bHRpRnJvbU1pbml8fCJmYWxzZSI9PWEuZm9ybWRhdGEubXVsdGlGcm9tTWluaSllbWFpbEhhbmRsZXIuc2VuZFRvPSQoIiNGSU5BTkNFX0ZPUk1fU0VORFRPX0VNQUlMIiwKYikudmFsKCksZW1haWxIYW5kbGVyLnNlbmRUb0FERkZvcm1hdD0kKCIjRklOQU5DRV9GT1JNX1NFTkRUT0FERl9FTUFJTCIsYikudmFsKCksZW1haWxIYW5kbGVyLmRlYWxlck5hbWU9IiIhPSQoIiNGSU5BTkNFX0ZPUk1fREVBTEVSTkFNRSIsYikudmFsKCk\/JCgiI0ZJTkFOQ0VfRk9STV9ERUFMRVJOQU1FIixiKS52YWwoKTplbWFpbEhhbmRsZXIuZGVhbGVyTmFtZTtlbWFpbEhhbmRsZXIudmVoaWNsZVR5cGU9YS5mb3JtZGF0YS52ZWhpY2xlVHlwZTtlbWFpbEhhbmRsZXIuY2FyaWQ9YS5mb3JtZGF0YS5jdXJyZW50Q2FySWQ7aWYoay5oYXNEZWFsZXJTZWxlY3RWYWx1ZXMoKSlrLnNldERlYWxlclNlbGVjdEVtYWlsKCk7ZWxzZSBpZigtMT09PVstMSwiLTEiLCIiXS5pbmRleE9mKGEuZm9ybWRhdGEubXVsdGlfZGVhbGVyX3NlbmRUbykpe3ZhciBjPSQoIiNtdWx0aXN0ZXAtbXVsdGlhZGRyZXNzIixiKS5maW5kKCJzZWxlY3QiKTtjPWMubGVuZ3RoP2M6JCgnI21pbmlmb3JtIFtuYW1lPSJtdWx0aV9kZWFsZXJfc2VuZFRvIl0nKTsKYy5sZW5ndGgmJihjPWMuZmluZCgiOnNlbGVjdGVkIiksZW1haWxIYW5kbGVyLnNlbmRUbz1jLmRhdGEoImVtYWlsZmluYW5jZSIpfHxjLmRhdGEoImVtYWlsIiksZW1haWxIYW5kbGVyLnNlbGVjdGVkU2VuZFRvPWMuZGF0YSgiZW1haWxmaW5hbmNlIil8fGMuZGF0YSgiZW1haWwiKSxlbWFpbEhhbmRsZXIuc2VuZFRvQURGRm9ybWF0PWMuZGF0YSgiZW1haWxhZGZmaW5hbmNlIil8fGMuZGF0YSgiZW1haWxhZGYiKSxlbWFpbEhhbmRsZXIuc2VsZWN0ZWRTZW5kVG9BREZGb3JtYXQ9Yy5kYXRhKCJlbWFpbGFkZmZpbmFuY2UiKXx8Yy5kYXRhKCJlbWFpbGFkZiIpLGVtYWlsSGFuZGxlci5kZWFsZXJOYW1lPWMudGV4dCgpLGVtYWlsSGFuZGxlci5oYXNTZWxlY3RlZE11bHRpQWRkcmVzcz0hMCxjPXtzZW5kVG86ZW1haWxIYW5kbGVyLnNlbmRUbyxzZWxlY3RlZFNlbmRUbzplbWFpbEhhbmRsZXIuc2VsZWN0ZWRTZW5kVG8sc2VuZFRvQURGRm9ybWF0OmVtYWlsSGFuZGxlci5zZW5kVG9BREZGb3JtYXQsCnNlbGVjdGVkU2VuZFRvQURGRm9ybWF0OmVtYWlsSGFuZGxlci5zZWxlY3RlZFNlbmRUb0FERkZvcm1hdCxkZWFsZXJOYW1lOmMudGV4dCgpLnRyaW0oKSxkZWFsZXJpZDpjLmRhdGEoImRlYWxlcmlkIiksb3B0aW9uaWQ6Yy52YWwoKX0sc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSgiZGVhbGVyU2VsZWN0VmFsdWVzIixKU09OLnN0cmluZ2lmeShjKSkpfX0saW5pdFNlbGVjdE11bHRpRGVhbGVyOmZ1bmN0aW9uKCl7aWYoay5oYXNEZWFsZXJTZWxlY3RWYWx1ZXMoKSlrLnNldERlYWxlclNlbGVjdEVtYWlsKCksYS5uZXh0KCEwKTtlbHNle3ZhciBjPSQoIiNtdWx0aS1hZGRyZXNzLXN1Ym1pc3Npb24iKTtpZigwPT09Yy5sZW5ndGgpYS5mb3JtZGF0YS5tdWx0aV9kZWFsZXJfc2VuZFRvPS0xLGEubmV4dCghMCk7ZWxzZXt2YXIgZD0kKCIjUE9TVF9MRUFEX1NFTkRfVE9fREVBTEVSX1RZUEVfU0VMRUNUIikubGVuZ3RoPyQoIiNQT1NUX0xFQURfU0VORF9UT19ERUFMRVJfVFlQRV9TRUxFQ1QiKS52YWwoKToKImxvY2F0aW9uIjsoMDwkKCIjdGFyZ2V0UGFnZSIpLmxlbmd0aCYmIkNBUkRFVEFJTFMiPT09JCgiI3RhcmdldFBhZ2UiKS52YWwoKXx8IiIhPSQoIiNwb3B1cHN0b2NrbnVtYmVyTXVsdGlzdGVwRm9ybSIpLnZhbCgpJiYiMSI9PSQoIiNGSU5BTkNFX0ZPUk1fQURNSU5fU0hPV1BIWVNJQ0FMQUREUkVTU19DSEVDSyIpLnZhbCgpKSYmImxvY2F0aW9uIj09ZD8oYS5mb3JtZGF0YS5tdWx0aV9kZWFsZXJfc2VuZFRvPS0xLGEubmV4dCghMCkpOiIiPT09JCgiI211bHRpc3RlcC1tdWx0aWFkZHJlc3MiLGIpLnRleHQoKS50cmltKCkmJigkKCIjbXVsdGlzdGVwLW11bHRpYWRkcmVzcyIsYikuYXBwZW5kKGMuaHRtbCgpKSwiIiE9PWEuZm9ybWRhdGEuY3VycmVudE1ha2UmJiJ1bmRlZmluZWQiIT09dHlwZW9mIG11bHRpRGVhbGVyU2VsZWN0JiYoYz0kKCIjbXVsdGlzdGVwLW11bHRpYWRkcmVzcyIsYikuZmluZCgic2VsZWN0IiksbXVsdGlEZWFsZXJTZWxlY3QuZmlsdGVyKGMpLmJ5TWFrZShhLmZvcm1kYXRhLmN1cnJlbnRNYWtlKSksCiQoIiNtdWx0aXN0ZXAtbXVsdGlhZGRyZXNzIixiKS5maW5kKCJzZWxlY3QiKS5vbigiY2hhbmdlIixmdW5jdGlvbigpeyQodGhpcykuY3NzKCJib3JkZXItY29sb3IiLCIiKTthLmZvcm1kYXRhLm11bHRpX2RlYWxlcl9zZW5kVG89JCh0aGlzKS52YWwoKTtrLmNoZWNrVmFsaWRpdHkoKX0pKX19fSxtdWx0aURlYWxlckZvcm1TdGF0dXM6ZnVuY3Rpb24oKXtyZXR1cm4gMD09PSQoIiNtdWx0aS1hZGRyZXNzLXN1Ym1pc3Npb24iKS5sZW5ndGg\/ITA6IiIhPT1hLmZvcm1kYXRhLm11bHRpX2RlYWxlcl9zZW5kVG99LGVtYWlsQm9keUZvck11bHRpRGVhbGVyOmZ1bmN0aW9uKGMpe2lmKDA9PT0kKCIjbXVsdGktYWRkcmVzcy1zdWJtaXNzaW9uIikubGVuZ3RoKXJldHVybiBjO3ZhciBkPSQoIiNtdWx0aXN0ZXAtbXVsdGlhZGRyZXNzIixiKS5maW5kKCJzZWxlY3QgOnNlbGVjdGVkIiksZT0kKCIjcG9zdExlYWRMYWJlbCIpLnZhbCgpOyJ1bmRlZmluZWQiIT09dHlwZW9mIGUmJmQubGVuZ3RoPwooZT1lLnJlcGxhY2UoInskTVVMVElERUFMRVJOQU1FfSIsZC50ZXh0KCkpLnJlcGxhY2UoInskUE9TVF9MRUFEX0VNQUlMU30iLCIiKSxjPWMucmVwbGFjZSgieyRERUFMRVJfU0VORFRPfSIsZSkpOiQoJ2lucHV0W2RhdGEtZm9ydmFyPSJPVkVSV1JJVFRFUkRFQUxFUiJdJykubGVuZ3RoJiYiIiE9JCgnaW5wdXRbZGF0YS1mb3J2YXI9Ik9WRVJXUklUVEVSREVBTEVSIl0nKS52YWwoKSYmJCgnaW5wdXRbZGF0YS1mb3J2YXI9IkRFQUxFUiJdJykubGVuZ3RoJiYkKCdpbnB1dFtkYXRhLWZvcnZhcj0iT1ZFUldSSVRURVJERUFMRVIiXScpLnZhbCgpIT0kKCdpbnB1dFtkYXRhLWZvcnZhcj0iREVBTEVSIl0nKS52YWwoKT8oZD0kKCJib2R5IikuaGFzQ2xhc3MoIkZSRU5DSCIpPyJDb25jZXNzaW9uIG\/vv70gZXN0IHNpdHXvv70gbGUgdu+\/vWhpY3VsZTogIjoiRGVhbGVyIHdoZXJlIHRoZSB2ZWhpY2xlIGlzIGxvY2F0ZWQ6ICIsZCs9JCgnaW5wdXRbZGF0YS1mb3J2YXI9Ik9WRVJXUklUVEVSREVBTEVSIl0nKS52YWwoKSwKYz1jLnJlcGxhY2UoInskREVBTEVSX1NFTkRUT30iLGQpKTpjPWMucmVwbGFjZSgvPGJyXHM\/XC8+e1wkREVBTEVSX1NFTkRUT30oYnJccz9cLyk\/LywiIikucmVwbGFjZSgieyRERUFMRVJfU0VORFRPfSIsIiIpO3JldHVybiBjfSxjaGVja1ZhbGlkaXR5OmZ1bmN0aW9uKCl7aWYoYS52YWxpZGF0aW9uUnVsZXMuaGFzT3duUHJvcGVydHkoInN0ZXAiK2Euc3RlcCkpZm9yKHZhciBjPTA7YzxhLnZhbGlkYXRpb25SdWxlc1sic3RlcCIrYS5zdGVwXS5sZW5ndGg7YysrKWlmKGtbYS52YWxpZGF0aW9uUnVsZXNbInN0ZXAiK2Euc3RlcF1bY10uZnVuY10oYS5mb3JtZGF0YVthLnZhbGlkYXRpb25SdWxlc1sic3RlcCIrYS5zdGVwXVtjXS52YWx1ZV0pKSQoIiNmaW5hbmNlX211bHRpc3RlcF9mb3JtX25leHRfYnRuIGJ1dHRvbiNmaW5hbmNlX211bHRpc3RlcF9mb3JtX25leHRfYnV0dG9uIixiKS5hZGRDbGFzcygiaXNWYWxpZCIpLCQoIiNmaW5hbmNlX211bHRpc3RlcF9mb3JtX25leHRfYnRuIGJ1dHRvbiNmaW5hbmNlX211bHRpc3RlcF9mb3JtX25leHRfYnV0dG9uX2NvbnNlbnRWVyIsCmIpLmFkZENsYXNzKCJpc1ZhbGlkIik7ZWxzZXskKCIjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybV9uZXh0X2J0biBidXR0b24jZmluYW5jZV9tdWx0aXN0ZXBfZm9ybV9uZXh0X2J1dHRvbiIsYikucmVtb3ZlQ2xhc3MoImlzVmFsaWQiKTskKCIjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybV9uZXh0X2J0biBidXR0b24jZmluYW5jZV9tdWx0aXN0ZXBfZm9ybV9uZXh0X2J1dHRvbl9jb25zZW50VlciLGIpLnJlbW92ZUNsYXNzKCJpc1ZhbGlkIik7YnJlYWt9ZWxzZSAkKCIjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybV9uZXh0X2J0biBidXR0b24jZmluYW5jZV9tdWx0aXN0ZXBfZm9ybV9uZXh0X2J1dHRvbiIsYikuYWRkQ2xhc3MoImlzVmFsaWQiKSwkKCIjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybV9uZXh0X2J0biBidXR0b24jZmluYW5jZV9tdWx0aXN0ZXBfZm9ybV9uZXh0X2J1dHRvbl9jb25zZW50VlciLGIpLmFkZENsYXNzKCJpc1ZhbGlkIil9LHBvcHVwTGF1bmNoZWRUcmFjazpmdW5jdGlvbigpe2goIlBvcHVwIGxhdW5jaGVkIik7CiFrLnVzZXJJZCgpJiZhLmZpcnN0U3RlcCYmbG9jYWxTdG9yYWdlLnNldEl0ZW0oImZpbmFuY2VfbXVsdGlzdGVwLmxpbmVhcl9zdGVwIiwxKTtrLnN0ZXBUcmlnZ2VyKCExKX0sc3RlcDJWaWV3ZWRUcmFjazpmdW5jdGlvbigpe2goIlN0ZXAgMiB2aWV3ZWQiKX0sZW1haWxTdGVwVmlld2VkVHJhY2s6ZnVuY3Rpb24oKXtoKCJFbWFpbCBzdGVwIHZpZXdlZCIpfSxwaG9uZVN0ZXBWaWV3ZWRUcmFjazpmdW5jdGlvbigpe2goIlBob25lIHN0ZXAgdmlld2VkIil9LGVtYWlsUHJvdmlkZWRUcmFjazpmdW5jdGlvbigpe2goIkVtYWlsIHByb3ZpZGVkIil9LHBob25lUHJvdmlkZWRUcmFjazpmdW5jdGlvbigpe2goIlBob25lIHByb3ZpZGVkIil9LHN0ZXBUcmlnZ2VyOmZ1bmN0aW9uKGMpe2M9e3N0ZXA6YS5nZXRMaW5lYXJzdGVwKGMpLG1ha2U6YS5mb3JtZGF0YS5jdXJyZW50TWFrZSxtb2RlbDphLmZvcm1kYXRhLmN1cnJlbnRNb2RlbCx5ZWFyOmEuZm9ybWRhdGEuY3VycmVudFllYXIsYm9keVR5cGU6YS5mb3JtZGF0YS52ZWhpY2xlVHlwZSwKc2FsZXNEZXB0OmEuZm9ybWRhdGEudmVoaWNsZVNhbGVzRGVwdCx2ZWhpY2xlQ29sb3I6YS5mb3JtZGF0YS52ZWhpY2xlQ29sb3IsdmVoaWNsZVByaWNlOmEuZm9ybWRhdGEudmVoaWNsZVByaWNlLHZlaGljbGVUYW5zbWlzc2lvbjphLmZvcm1kYXRhLnZlaGljbGVUYW5zbWlzc2lvbix2ZWhpY2xlVHJpbTphLmZvcm1kYXRhLnZlaGljbGVUcmltfTskKCIjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSIsYikudHJpZ2dlcigiZm9ybS5zdGVwIixjKTthLmZpcnN0U3RlcD0hMX19O3dpbmRvdy5hcHBUZXN0PWE7dmFyIFc7JCgiI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gaW5wdXQsICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIHNlbGVjdCwgI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gdGV4dGFyZWEiKS5vbigiY2hhbmdlIGlucHV0IixmdW5jdGlvbigpe2NsZWFyVGltZW91dChXKTtXPXNldFRpbWVvdXQoay5jaGVja1ZhbGlkaXR5LDUwMCl9KTskKCcjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSBpbnB1dFt0eXBlPSJudW1iZXIiXScpLm9uKCJmb2N1cyIsCmZ1bmN0aW9uKCl7JCh0aGlzKS50cmlnZ2VyKCJzZWxlY3QiKX0pO3JldHVybntzdGFydDpQLGhhc1VzZXI6ay5oYXNVc2VyfX0KJChmdW5jdGlvbigpeyQoZG9jdW1lbnQpLm9uKCJyZXZlYWw6b3BlbiIsIiNmaW5hbmNlTXVsdGlzdGVwUG9wdXBDb250YWluZXIiLGZ1bmN0aW9uKCl7JChkb2N1bWVudCkudHJpZ2dlcigiY3JlZGl0Lm11bHRpc3RlcHBvcHVwLnN0YXJ0Iil9KTskKGRvY3VtZW50KS5vbigicmV2ZWFsOm9wZW4iLCIjZmluYW5jZU11bHRpc3RlcEluc3RhbnRQb3B1cENvbnRhaW5lciIsZnVuY3Rpb24oKXskKGRvY3VtZW50KS50cmlnZ2VyKCJjcmVkaXQubXVsdGlzdGVwcG9wdXAuc3RhcnQiKX0pOyQoZG9jdW1lbnQpLm9uKCJjbGljayIsIiNmaW5hbmNlTXVsdGlzdGVwUG9wdXBDb250YWluZXIgI2RyVmlld0Rpc2NsYWltZXJMaW5rIixmdW5jdGlvbigpeyIxIj09JCgiI0ZJTkFOQ0VfTVVMVElTVEVQX2lzVndEUiIpLnZhbCgpJiZ2b2lkIDAhPWRyRGlzY2xhaW1lckpTJiZkckRpc2NsYWltZXJKUy5jbG9zZUFsbE9wZW5EaXNjbGFpbWVyRGl2cygpOyQoIiNmaW5hbmNlTXVsdGlzdGVwUG9wdXBDb250YWluZXIgI2RyRGlzY2xhaW1lckRyYXdlciIpLnNob3coKTsKJCgiI2ZpbmFuY2VNdWx0aXN0ZXBQb3B1cENvbnRhaW5lciAjZHJEaXNjbGFpbWVyRHJhd2VyIikuYWRkQ2xhc3MoIm9wZW4iKX0pOyQoZG9jdW1lbnQpLm9uKCJjbGljayIsIiNmaW5hbmNlTXVsdGlzdGVwUG9wdXBDb250YWluZXIgLmNsb3NlRFJEaXNjbGFpbWVyRHJhd2VyIixmdW5jdGlvbigpeyQoIiNmaW5hbmNlTXVsdGlzdGVwUG9wdXBDb250YWluZXIgI2RyRGlzY2xhaW1lckRyYXdlciIpLnJlbW92ZUNsYXNzKCJvcGVuIik7JCgiI2ZpbmFuY2VNdWx0aXN0ZXBQb3B1cENvbnRhaW5lciAjZHJEaXNjbGFpbWVyRHJhd2VyIikuaGlkZSgpfSk7JChkb2N1bWVudCkub24oImNsaWNrIiwiI2ZpbmFuY2VNdWx0aXN0ZXBJbnN0YW50UG9wdXBDb250YWluZXIgI2RyVmlld0Rpc2NsYWltZXJMaW5rIixmdW5jdGlvbigpeyIxIj09JCgiI0ZJTkFOQ0VfTVVMVElTVEVQX2lzVndEUiIpLnZhbCgpJiZ2b2lkIDAhPWRyRGlzY2xhaW1lckpTJiZkckRpc2NsYWltZXJKUy5jbG9zZUFsbE9wZW5EaXNjbGFpbWVyRGl2cygpOwokKCIjZmluYW5jZU11bHRpc3RlcEluc3RhbnRQb3B1cENvbnRhaW5lciAjZHJEaXNjbGFpbWVyRHJhd2VyIikuc2hvdygpOyQoIiNmaW5hbmNlTXVsdGlzdGVwSW5zdGFudFBvcHVwQ29udGFpbmVyICNkckRpc2NsYWltZXJEcmF3ZXIiKS5hZGRDbGFzcygib3BlbiIpfSk7JChkb2N1bWVudCkub24oImNsaWNrIiwiI2ZpbmFuY2VNdWx0aXN0ZXBJbnN0YW50UG9wdXBDb250YWluZXIgLmNsb3NlRFJEaXNjbGFpbWVyRHJhd2VyIixmdW5jdGlvbigpeyQoIiNmaW5hbmNlTXVsdGlzdGVwSW5zdGFudFBvcHVwQ29udGFpbmVyICNkckRpc2NsYWltZXJEcmF3ZXIiKS5yZW1vdmVDbGFzcygib3BlbiIpOyQoIiNmaW5hbmNlTXVsdGlzdGVwSW5zdGFudFBvcHVwQ29udGFpbmVyICNkckRpc2NsYWltZXJEcmF3ZXIiKS5oaWRlKCl9KX0pOwovKiogL20vanMvY2FsY3VsYXRvckZ1bmN0aW9ucy5qcyAqKi8KdmFyIF9fX2QyY19jYWxjdWxhdG9yRnVuY3Rpb25zanNfY19vbj0iMjAyNi0wNy0xMSAwNTozMDoxNCI7J3VzZSBzdHJpY3QnO3ZhciBfX19kMmNfY2FsY3VsYXRvckZ1bmN0aW9uc2pzX2Nfb249IjIwMjYtMDctMTEgMDQ6MzA6MTQiOyJ1c2Ugc3RyaWN0IjtfX19kMmNfY2FsY3VsYXRvckZ1bmN0aW9uc2pzX2Nfb249IjIwMjYtMDctMTEgMDM6MzA6MTUiOyJ1c2Ugc3RyaWN0IjtfX19kMmNfY2FsY3VsYXRvckZ1bmN0aW9uc2pzX2Nfb249IjIwMjYtMDctMTEgMDI6MzA6MTQiOyJ1c2Ugc3RyaWN0IjtfX19kMmNfY2FsY3VsYXRvckZ1bmN0aW9uc2pzX2Nfb249IjIwMjYtMDctMTEgMDE6MzA6MTQiOyJ1c2Ugc3RyaWN0IjtfX19kMmNfY2FsY3VsYXRvckZ1bmN0aW9uc2pzX2Nfb249IjIwMjYtMDctMTEgMDA6MzA6MTQiOyJ1c2Ugc3RyaWN0IjtfX19kMmNfY2FsY3VsYXRvckZ1bmN0aW9uc2pzX2Nfb249IjIwMjYtMDctMTAgMjM6MzA6MTUiOyJ1c2Ugc3RyaWN0IjtfX19kMmNfY2FsY3VsYXRvckZ1bmN0aW9uc2pzX2Nfb249IjIwMjYtMDctMTAgMjI6MzA6MTQiOyJ1c2Ugc3RyaWN0IjsKX19fZDJjX2NhbGN1bGF0b3JGdW5jdGlvbnNqc19jX29uPSIyMDI2LTA3LTEwIDIxOjMwOjE0IjsidXNlIHN0cmljdCI7X19fZDJjX2NhbGN1bGF0b3JGdW5jdGlvbnNqc19jX29uPSIyMDI2LTA3LTEwIDIwOjMwOjE1IjsidXNlIHN0cmljdCI7X19fZDJjX2NhbGN1bGF0b3JGdW5jdGlvbnNqc19jX29uPSIyMDI2LTA3LTEwIDE5OjMwOjE1IjsidXNlIHN0cmljdCI7X19fZDJjX2NhbGN1bGF0b3JGdW5jdGlvbnNqc19jX29uPSIyMDI2LTA3LTEwIDE4OjMwOjE1IjsidXNlIHN0cmljdCI7X19fZDJjX2NhbGN1bGF0b3JGdW5jdGlvbnNqc19jX29uPSIyMDI2LTA3LTEwIDE3OjMwOjE5IjsidXNlIHN0cmljdCI7X19fZDJjX2NhbGN1bGF0b3JGdW5jdGlvbnNqc19jX29uPSIyMDI2LTA3LTEwIDE2OjMwOjE4IjsidXNlIHN0cmljdCI7X19fZDJjX2NhbGN1bGF0b3JGdW5jdGlvbnNqc19jX29uPSIyMDI2LTA3LTEwIDE1OjMwOjE5IjsidXNlIHN0cmljdCI7Cl9fX2QyY19jYWxjdWxhdG9yRnVuY3Rpb25zanNfY19vbj0iMjAyNi0wNy0xMCAxNDozMDoxOSI7InVzZSBzdHJpY3QiO19fX2QyY19jYWxjdWxhdG9yRnVuY3Rpb25zanNfY19vbj0iMjAyNi0wNy0xMCAxMzozMDoxOSI7InVzZSBzdHJpY3QiO19fX2QyY19jYWxjdWxhdG9yRnVuY3Rpb25zanNfY19vbj0iMjAyNi0wNy0xMCAxMjozMDoyMCI7InVzZSBzdHJpY3QiO19fX2QyY19jYWxjdWxhdG9yRnVuY3Rpb25zanNfY19vbj0iMjAyNi0wNy0xMCAxMTozMDoxOSI7InVzZSBzdHJpY3QiO19fX2QyY19jYWxjdWxhdG9yRnVuY3Rpb25zanNfY19vbj0iMjAyNi0wNy0xMCAxMDozMDoxOSI7InVzZSBzdHJpY3QiO19fX2QyY19jYWxjdWxhdG9yRnVuY3Rpb25zanNfY19vbj0iMjAyNi0wNy0xMCAwOTozMDoxOSI7InVzZSBzdHJpY3QiO19fX2QyY19jYWxjdWxhdG9yRnVuY3Rpb25zanNfY19vbj0iMjAyNi0wNy0xMCAwODozMDoxOCI7InVzZSBzdHJpY3QiOwpfX19kMmNfY2FsY3VsYXRvckZ1bmN0aW9uc2pzX2Nfb249IjIwMjYtMDctMTAgMDc6MzA6MTUiOyJ1c2Ugc3RyaWN0IjtfX19kMmNfY2FsY3VsYXRvckZ1bmN0aW9uc2pzX2Nfb249IjIwMjYtMDctMTAgMDY6MzA6MTUiOyJ1c2Ugc3RyaWN0IjtfX19kMmNfY2FsY3VsYXRvckZ1bmN0aW9uc2pzX2Nfb249IjIwMjYtMDctMTAgMDU6MzA6MTUiOyJ1c2Ugc3RyaWN0IjtfX19kMmNfY2FsY3VsYXRvckZ1bmN0aW9uc2pzX2Nfb249IjIwMjYtMDctMTAgMDQ6MzA6MTQiOyJ1c2Ugc3RyaWN0IjtfX19kMmNfY2FsY3VsYXRvckZ1bmN0aW9uc2pzX2Nfb249IjIwMjYtMDctMTAgMDM6MzA6MTUiOyJ1c2Ugc3RyaWN0IjtfX19kMmNfY2FsY3VsYXRvckZ1bmN0aW9uc2pzX2Nfb249IjIwMjYtMDctMTAgMDI6MzA6MTUiOyJ1c2Ugc3RyaWN0IjtfX19kMmNfY2FsY3VsYXRvckZ1bmN0aW9uc2pzX2Nfb249IjIwMjYtMDctMTAgMDE6MzA6MTQiOyJ1c2Ugc3RyaWN0IjsKX19fZDJjX2NhbGN1bGF0b3JGdW5jdGlvbnNqc19jX29uPSIyMDI2LTA3LTEwIDAwOjMwOjE1IjsidXNlIHN0cmljdCI7X19fZDJjX2NhbGN1bGF0b3JGdW5jdGlvbnNqc19jX29uPSIyMDI2LTA3LTA5IDIzOjMwOjE1IjsidXNlIHN0cmljdCI7X19fZDJjX2NhbGN1bGF0b3JGdW5jdGlvbnNqc19jX29uPSIyMDI2LTA3LTA5IDIyOjMwOjE1IjsidXNlIHN0cmljdCI7X19fZDJjX2NhbGN1bGF0b3JGdW5jdGlvbnNqc19jX29uPSIyMDI2LTA3LTA5IDIxOjMwOjE1IjsidXNlIHN0cmljdCI7X19fZDJjX2NhbGN1bGF0b3JGdW5jdGlvbnNqc19jX29uPSIyMDI2LTA3LTA5IDIwOjMwOjE1IjsidXNlIHN0cmljdCI7X19fZDJjX2NhbGN1bGF0b3JGdW5jdGlvbnNqc19jX29uPSIyMDI2LTA3LTA5IDE5OjMwOjE0IjsidXNlIHN0cmljdCI7X19fZDJjX2NhbGN1bGF0b3JGdW5jdGlvbnNqc19jX29uPSIyMDI2LTA3LTA5IDE4OjMwOjE1IjsidXNlIHN0cmljdCI7Cl9fX2QyY19jYWxjdWxhdG9yRnVuY3Rpb25zanNfY19vbj0iMjAyNi0wNy0wOSAxNzozMDoxOCI7InVzZSBzdHJpY3QiO19fX2QyY19jYWxjdWxhdG9yRnVuY3Rpb25zanNfY19vbj0iMjAyNi0wNy0wOSAxNjozMDoyMCI7InVzZSBzdHJpY3QiO19fX2QyY19jYWxjdWxhdG9yRnVuY3Rpb25zanNfY19vbj0iMjAyNi0wNy0wOSAxNTozMDoyMCI7InVzZSBzdHJpY3QiO19fX2QyY19jYWxjdWxhdG9yRnVuY3Rpb25zanNfY19vbj0iMjAyNi0wNy0wOSAxNDozMDoxOSI7InVzZSBzdHJpY3QiO19fX2QyY19jYWxjdWxhdG9yRnVuY3Rpb25zanNfY19vbj0iMjAyNi0wNy0wOSAxMzozMDoxNyI7InVzZSBzdHJpY3QiO19fX2QyY19jYWxjdWxhdG9yRnVuY3Rpb25zanNfY19vbj0iMjAyNi0wNy0wOSAxMjozMDoxOSI7InVzZSBzdHJpY3QiO19fX2QyY19jYWxjdWxhdG9yRnVuY3Rpb25zanNfY19vbj0iMjAyNi0wNy0wOSAxMTozMDoyMSI7InVzZSBzdHJpY3QiOwpfX19kMmNfY2FsY3VsYXRvckZ1bmN0aW9uc2pzX2Nfb249IjIwMjYtMDctMDkgMTA6MzA6MTkiOyJ1c2Ugc3RyaWN0IjtfX19kMmNfY2FsY3VsYXRvckZ1bmN0aW9uc2pzX2Nfb249IjIwMjYtMDctMDkgMDk6MzA6MjAiOyJ1c2Ugc3RyaWN0IjtfX19kMmNfY2FsY3VsYXRvckZ1bmN0aW9uc2pzX2Nfb249IjIwMjYtMDctMDkgMDg6MzA6MTkiOyJ1c2Ugc3RyaWN0IjtfX19kMmNfY2FsY3VsYXRvckZ1bmN0aW9uc2pzX2Nfb249IjIwMjYtMDctMDkgMDc6MzA6MTUiOyJ1c2Ugc3RyaWN0IjtfX19kMmNfY2FsY3VsYXRvckZ1bmN0aW9uc2pzX2Nfb249IjIwMjYtMDctMDkgMDY6MzA6MTQiOyJ1c2Ugc3RyaWN0IjtfX19kMmNfY2FsY3VsYXRvckZ1bmN0aW9uc2pzX2Nfb249IjIwMjYtMDctMDkgMDU6MzA6MTQiOyJ1c2Ugc3RyaWN0IjtfX19kMmNfY2FsY3VsYXRvckZ1bmN0aW9uc2pzX2Nfb249IjIwMjYtMDctMDkgMDQ6MzA6MTUiOyJ1c2Ugc3RyaWN0IjsKX19fZDJjX2NhbGN1bGF0b3JGdW5jdGlvbnNqc19jX29uPSIyMDI2LTA3LTA5IDAzOjMwOjE1IjsidXNlIHN0cmljdCI7X19fZDJjX2NhbGN1bGF0b3JGdW5jdGlvbnNqc19jX29uPSIyMDI2LTA3LTA5IDAyOjMwOjE1IjsidXNlIHN0cmljdCI7X19fZDJjX2NhbGN1bGF0b3JGdW5jdGlvbnNqc19jX29uPSIyMDI2LTA3LTA5IDAxOjMwOjE1IjsidXNlIHN0cmljdCI7X19fZDJjX2NhbGN1bGF0b3JGdW5jdGlvbnNqc19jX29uPSIyMDI2LTA3LTA5IDAwOjMwOjE1IjsidXNlIHN0cmljdCI7X19fZDJjX2NhbGN1bGF0b3JGdW5jdGlvbnNqc19jX29uPSIyMDI2LTA3LTA4IDIzOjMwOjE0IjsidXNlIHN0cmljdCI7X19fZDJjX2NhbGN1bGF0b3JGdW5jdGlvbnNqc19jX29uPSIyMDI2LTA3LTA4IDIyOjMwOjE0IjsidXNlIHN0cmljdCI7X19fZDJjX2NhbGN1bGF0b3JGdW5jdGlvbnNqc19jX29uPSIyMDI2LTA3LTA4IDIxOjMwOjE0IjsidXNlIHN0cmljdCI7Cl9fX2QyY19jYWxjdWxhdG9yRnVuY3Rpb25zanNfY19vbj0iMjAyNi0wNy0wOCAyMDozMDoxNSI7InVzZSBzdHJpY3QiO19fX2QyY19jYWxjdWxhdG9yRnVuY3Rpb25zanNfY19vbj0iMjAyNi0wNy0wOCAxOTozMDoxNSI7InVzZSBzdHJpY3QiO19fX2QyY19jYWxjdWxhdG9yRnVuY3Rpb25zanNfY19vbj0iMjAyNi0wNy0wOCAxODozMDoxNSI7InVzZSBzdHJpY3QiO19fX2QyY19jYWxjdWxhdG9yRnVuY3Rpb25zanNfY19vbj0iMjAyNi0wNy0wOCAxNzozMDoxOCI7InVzZSBzdHJpY3QiO19fX2QyY19jYWxjdWxhdG9yRnVuY3Rpb25zanNfY19vbj0iMjAyNi0wNy0wOCAxNjozMDoxOCI7InVzZSBzdHJpY3QiO19fX2QyY19jYWxjdWxhdG9yRnVuY3Rpb25zanNfY19vbj0iMjAyNi0wNy0wOCAxNTozMDoyMSI7InVzZSBzdHJpY3QiO19fX2QyY19jYWxjdWxhdG9yRnVuY3Rpb25zanNfY19vbj0iMjAyNi0wNy0wOCAxNDozMDoxOSI7InVzZSBzdHJpY3QiOwpfX19kMmNfY2FsY3VsYXRvckZ1bmN0aW9uc2pzX2Nfb249IjIwMjYtMDctMDggMTM6MzA6MjAiOyJ1c2Ugc3RyaWN0IjtfX19kMmNfY2FsY3VsYXRvckZ1bmN0aW9uc2pzX2Nfb249IjIwMjYtMDctMDggMTI6MzA6MjAiOyJ1c2Ugc3RyaWN0IjtfX19kMmNfY2FsY3VsYXRvckZ1bmN0aW9uc2pzX2Nfb249IjIwMjYtMDctMDggMTE6MzA6MjAiOyJ1c2Ugc3RyaWN0IjtfX19kMmNfY2FsY3VsYXRvckZ1bmN0aW9uc2pzX2Nfb249IjIwMjYtMDctMDggMTA6MzA6MjAiOyJ1c2Ugc3RyaWN0IjtfX19kMmNfY2FsY3VsYXRvckZ1bmN0aW9uc2pzX2Nfb249IjIwMjYtMDctMDggMDk6MzA6MjAiOyJ1c2Ugc3RyaWN0IjtfX19kMmNfY2FsY3VsYXRvckZ1bmN0aW9uc2pzX2Nfb249IjIwMjYtMDctMDggMDg6MzA6MTgiOyJ1c2Ugc3RyaWN0IjtfX19kMmNfY2FsY3VsYXRvckZ1bmN0aW9uc2pzX2Nfb249IjIwMjYtMDctMDggMDc6MzA6MTUiOyJ1c2Ugc3RyaWN0IjsKX19fZDJjX2NhbGN1bGF0b3JGdW5jdGlvbnNqc19jX29uPSIyMDI2LTA3LTA4IDA2OjMwOjE0IjsidXNlIHN0cmljdCI7X19fZDJjX2NhbGN1bGF0b3JGdW5jdGlvbnNqc19jX29uPSIyMDI2LTA3LTA4IDA1OjMwOjE1IjsidXNlIHN0cmljdCI7X19fZDJjX2NhbGN1bGF0b3JGdW5jdGlvbnNqc19jX29uPSIyMDI2LTA3LTA4IDA0OjMwOjE1IjsidXNlIHN0cmljdCI7X19fZDJjX2NhbGN1bGF0b3JGdW5jdGlvbnNqc19jX29uPSIyMDI2LTA3LTA4IDAzOjMwOjE1IjsidXNlIHN0cmljdCI7X19fZDJjX2NhbGN1bGF0b3JGdW5jdGlvbnNqc19jX29uPSIyMDI2LTA3LTA4IDAyOjMwOjE1IjsidXNlIHN0cmljdCI7X19fZDJjX2NhbGN1bGF0b3JGdW5jdGlvbnNqc19jX29uPSIyMDI2LTA3LTA4IDAxOjMwOjE0IjsidXNlIHN0cmljdCI7X19fZDJjX2NhbGN1bGF0b3JGdW5jdGlvbnNqc19jX29uPSIyMDI2LTA3LTA4IDAwOjMwOjE1IjsidXNlIHN0cmljdCI7Cl9fX2QyY19jYWxjdWxhdG9yRnVuY3Rpb25zanNfY19vbj0iMjAyNi0wNy0wNyAyMzozMDoxNCI7InVzZSBzdHJpY3QiO19fX2QyY19jYWxjdWxhdG9yRnVuY3Rpb25zanNfY19vbj0iMjAyNi0wNy0wNyAyMjozMDoxNSI7InVzZSBzdHJpY3QiO19fX2QyY19jYWxjdWxhdG9yRnVuY3Rpb25zanNfY19vbj0iMjAyNi0wNy0wNyAyMTozMDoxNCI7InVzZSBzdHJpY3QiO19fX2QyY19jYWxjdWxhdG9yRnVuY3Rpb25zanNfY19vbj0iMjAyNi0wNy0wNyAyMDozMDoxNiI7InVzZSBzdHJpY3QiO19fX2QyY19jYWxjdWxhdG9yRnVuY3Rpb25zanNfY19vbj0iMjAyNi0wNy0wNyAxOTozMDoxNSI7InVzZSBzdHJpY3QiO19fX2QyY19jYWxjdWxhdG9yRnVuY3Rpb25zanNfY19vbj0iMjAyNi0wNy0wNyAxODozMDoxNSI7InVzZSBzdHJpY3QiO19fX2QyY19jYWxjdWxhdG9yRnVuY3Rpb25zanNfY19vbj0iMjAyNi0wNy0wNyAxNzozMDoyMSI7InVzZSBzdHJpY3QiOwpfX19kMmNfY2FsY3VsYXRvckZ1bmN0aW9uc2pzX2Nfb249IjIwMjYtMDctMDcgMTY6MzA6MjEiOyJ1c2Ugc3RyaWN0IjtfX19kMmNfY2FsY3VsYXRvckZ1bmN0aW9uc2pzX2Nfb249IjIwMjYtMDctMDcgMTU6MzA6MjAiOyJ1c2Ugc3RyaWN0IjtfX19kMmNfY2FsY3VsYXRvckZ1bmN0aW9uc2pzX2Nfb249IjIwMjYtMDctMDcgMTQ6MzA6MTkiOyJ1c2Ugc3RyaWN0IjtfX19kMmNfY2FsY3VsYXRvckZ1bmN0aW9uc2pzX2Nfb249IjIwMjYtMDctMDcgMTM6MzA6MTgiOyJ1c2Ugc3RyaWN0IjtfX19kMmNfY2FsY3VsYXRvckZ1bmN0aW9uc2pzX2Nfb249IjIwMjYtMDctMDcgMTI6MzA6MjAiOyJ1c2Ugc3RyaWN0IjtfX19kMmNfY2FsY3VsYXRvckZ1bmN0aW9uc2pzX2Nfb249IjIwMjYtMDctMDcgMTE6MzA6MTgiOyJ1c2Ugc3RyaWN0IjtfX19kMmNfY2FsY3VsYXRvckZ1bmN0aW9uc2pzX2Nfb249IjIwMjYtMDctMDcgMTA6MzA6MTYiOyJ1c2Ugc3RyaWN0IjsKY2xhc3MgY2FsY3VsYXRvckZ1bmN0aW9uc3tjb25zdHJ1Y3RvcihhKXt0aGlzLnBhcmVudD1hO3RoaXMucGFyZW50TmFtZT10aGlzLnBhcmVudC5yZXBsYWNlKCIjIiwiIik7dGhpcy5zZXRUcmlnZ2VycygpfWluaXQoYSxiLGUsZixoLGcsayxwLG4pe3ZhciBxPXRoaXMucGFyZW50O3RoaXMuc3R5bGVpZD1hO3RoaXMucGF5bWVudFR5cGU9Yjt0aGlzLnRyYWRlSW5WYWx1ZT0kKHErIiAucGF5bWVudENhbGN1bGF0b3JUcmFkZUluRmluYWwiKS52YWwoKT9wYXJzZUludCgkKHErIiAucGF5bWVudENhbGN1bGF0b3JUcmFkZUluRmluYWwiKS52YWwoKSk6MDt0aGlzLmRvd25wYXltZW50PTA+ZS10aGlzLnRyYWRlSW5WYWx1ZT8wOmUtdGhpcy50cmFkZUluVmFsdWU7dGhpcy5vcHRpb25zQW1vdW50PWY7dGhpcy5wYXltZW50RnJlcXVlbmN5PWg7dGhpcy5rbUFsbG93YW5jZT1nO3RoaXMuaXNJbnZlbnRvcnk9az9rOiExO3RoaXMuc249cD9wOiIiO3RoaXMudmluPW4\/bjoiIjt0aGlzLmxvYWRQYXltZW50cyghMCl9c2V0SW5pdGlhbFZpZXcoYSl7dmFyIGI9CnRoaXMucGFyZW50LGU9dGhpczskKGIrIiAucGF5bWVudENhbGN1bGF0b3JLbUFsbG93YW5jZSBvcHRpb24iKS5yZW1vdmUoKTskKGIrIiAucGF5bWVudENhbGN1bGF0b3JEb3duUGF5bWVudCIpLnZhbCh0aGlzLmRvd25wYXltZW50KTskKGIrIiAucGF5bWVudENhbGN1bGF0b3JJbnRlcnZhbCIpLnZhbChhLmN1cnJlbnRQYXltZW50WzBdLmludGVydmFsKTtsZXQgZj0ibGVhc2UiPT1hLmN1cnJlbnRQYXltZW50WzBdLnR5cGU\/ImxlYXNpbmciOiJmaW5hbmNpbmciOyQoYisiIC5wYXltZW50Q2FsY3VsYXRvclBheW1lbnRUeXBlIGxpIikucmVtb3ZlQ2xhc3MoImFjdGl2ZVBheW1lbnRUeXBlIik7JChiKyIgLnBheW1lbnRDYWxjdWxhdG9yUGF5bWVudFR5cGUgbGlbZGF0YS10eXBlPSciK2YrIiddIikuYWRkQ2xhc3MoImFjdGl2ZVBheW1lbnRUeXBlIik7MD09YS5maW5hbmNlLmxlbmd0aD8kKGIrIiAucGF5bWVudENhbGN1bGF0b3JQYXltZW50VHlwZUZpbmFuY2UiKS5oaWRlKCk6JChiKwoiIC5wYXltZW50Q2FsY3VsYXRvclBheW1lbnRUeXBlRmluYW5jZSIpLnNob3coKTtpZigwPT1hLmxlYXNlLmxlbmd0aCkkKGIrIiAucGF5bWVudENhbGN1bGF0b3JQYXltZW50VHlwZUxlYXNlIikuaGlkZSgpO2Vsc2V7JChiKyIgLnBheW1lbnRDYWxjdWxhdG9yUGF5bWVudFR5cGVMZWFzZSIpLnNob3coKTtsZXQgZz1bXTthLmxlYXNlLmZvckVhY2goZnVuY3Rpb24oayl7LTE9PSQuaW5BcnJheShrLmttX2FsbG93YW5jZSxnKSYmZy5wdXNoKGsua21fYWxsb3dhbmNlKX0pO2cuZm9yRWFjaChmdW5jdGlvbihrKXtsZXQgcD1lLnBheW1lbnRDYWxjdWxhdG9yRm9ybWF0TnVtYmVyKGsudG9GaXhlZCgwKSk7JChiKyIgLnBheW1lbnRDYWxjdWxhdG9yS21BbGxvd2FuY2UiKS5hcHBlbmQobmV3IE9wdGlvbihwKyIga20iLGspKX0pO3ZhciBoPTJFNDthLmN1cnJlbnRQYXltZW50WzBdJiYidW5kZWZpbmVkIiE9PXR5cGVvZiBhLmN1cnJlbnRQYXltZW50WzBdLmttX2FsbG93YW5jZSYmKGg9CjA8YS5jdXJyZW50UGF5bWVudFswXS5rbV9hbGxvd2FuY2U\/YS5jdXJyZW50UGF5bWVudFswXS5rbV9hbGxvd2FuY2U6MkU0KTskKGIrIiAucGF5bWVudENhbGN1bGF0b3JLbUFsbG93YW5jZSIpLnZhbChoKX10aGlzLmttQWxsb3dhbmNlPSQoYisiIC5wYXltZW50Q2FsY3VsYXRvckttQWxsb3dhbmNlIikudmFsKCk7ImxlYXNpbmciPT1mPyQoYisiIC5wYXltZW50Q2FsY3VsYXRvckttQWxsb3dhbmNlQ29udGFpbmVyIikuc2hvdygpOiQoYisiIC5wYXltZW50Q2FsY3VsYXRvckttQWxsb3dhbmNlQ29udGFpbmVyIikuaGlkZSgpOyQoImJvZHkiKS5vbigiY2xpY2sgdGFwIixiKyIgLmZpbmFuY2luZy1vcHRpb24ucGF5bWVudENhbGN1bGF0b3JQYXltZW50V3JhcHBlciAqIixmdW5jdGlvbigpeyQodGhpcykuZmluZCgnaW5wdXRbbmFtZT0ic2VsZWN0ZWRQYXltZW50Il0nKS5wcm9wKCJjaGVja2VkIiwiY2hlY2tlZCIpLnRyaWdnZXIoImNoYW5nZSIpfSk7JCgiYm9keSIpLm9uKCJjaGFuZ2UiLApiKycgaW5wdXRbbmFtZT0ic2VsZWN0ZWRQYXltZW50Il0nLGZ1bmN0aW9uKCl7dmFyIGc9JCh0aGlzKS52YWwoKSxrPSQodGhpcykuYXR0cigiZGF0YS1yYXRldHlwZSIpOyQoYisiIC5maW5hbmNpbmctb3B0aW9uIikucmVtb3ZlQ2xhc3MoInNlbGVjdGVkIik7JCgnaW5wdXRbbmFtZT0ic2VsZWN0ZWRQYXltZW50V2l0aFRheGVzIl1bdmFsdWU9IicrZysnIl1bZGF0YS1yYXRldHlwZT0iJytrKyciXScpLmNsb3Nlc3QoIi5maW5hbmNpbmctb3B0aW9uIikuYWRkQ2xhc3MoInNlbGVjdGVkIik7JCgnaW5wdXRbbmFtZT0ic2VsZWN0ZWRQYXltZW50V2l0aFRheGVzIl1bdmFsdWU9IicrZysnIl1bZGF0YS1yYXRldHlwZT0iJytrKyciXScpLnByb3AoImNoZWNrZWQiLCEwKTskKHRoaXMpLmNsb3Nlc3QoIi5maW5hbmNpbmctb3B0aW9uIikuYWRkQ2xhc3MoInNlbGVjdGVkIil9KTskKCJib2R5Iikub24oImNoYW5nZSIsYisnIGlucHV0W25hbWU9InNlbGVjdGVkUGF5bWVudFdpdGhUYXhlcyJdJywKZnVuY3Rpb24oKXt2YXIgZz0kKHRoaXMpLnZhbCgpLGs9JCh0aGlzKS5hdHRyKCJkYXRhLXJhdGV0eXBlIik7JChiKyIgLmZpbmFuY2luZy1vcHRpb24iKS5yZW1vdmVDbGFzcygic2VsZWN0ZWQiKTskKCdpbnB1dFtuYW1lPSJzZWxlY3RlZFBheW1lbnQiXVt2YWx1ZT0iJytnKyciXVtkYXRhLXJhdGV0eXBlPSInK2srJyJdJykuY2xvc2VzdCgiLmZpbmFuY2luZy1vcHRpb24iKS5hZGRDbGFzcygic2VsZWN0ZWQiKTskKCdpbnB1dFtuYW1lPSJzZWxlY3RlZFBheW1lbnQiXVt2YWx1ZT0iJytnKyciXVtkYXRhLXJhdGV0eXBlPSInK2srJyJdJykucHJvcCgiY2hlY2tlZCIsITApOyQodGhpcykuY2xvc2VzdCgiLmZpbmFuY2luZy1vcHRpb24iKS5hZGRDbGFzcygic2VsZWN0ZWQiKX0pfXNldFRyaWdnZXJzKCl7dmFyIGE9dGhpcy5wYXJlbnQsYj10aGlzOyQoYSsiIC5wYXltZW50Q2FsY3VsYXRvclBheW1lbnRUeXBlIGxpIikub2ZmKCJjbGljayIpOyQoYSsiIC5wYXltZW50Q2FsY3VsYXRvckluY2x1ZGVUYXhDaGVjayIpLm9mZigiY2hhbmdlIik7CiQoYSsiIC5wYXltZW50Q2FsY3VsYXRvckludGVydmFsIikub2ZmKCJjaGFuZ2UiKTskKGErIiAucGF5bWVudENhbGN1bGF0b3JLbUFsbG93YW5jZSIpLm9mZigiY2hhbmdlIik7JChhKyIgLnBheW1lbnRDYWxjdWxhdG9yRG93blBheW1lbnQiKS5vZmYoImJsdXIiKTskKGErIiAucGF5bWVudENhbGN1bGF0b3JUcmFkZUluRmluYWwiKS5vZmYoImJsdXIiKTskKGErIiAucGF5bWVudENhbGN1bGF0b3JQYXltZW50VHlwZSBsaSIpLm9uKCJjbGljayIsZnVuY3Rpb24oKXskKGErIiAucGF5bWVudENhbGN1bGF0b3JQYXltZW50VHlwZSBsaSIpLnJlbW92ZUNsYXNzKCJhY3RpdmVQYXltZW50VHlwZSIpOyQodGhpcykuYWRkQ2xhc3MoImFjdGl2ZVBheW1lbnRUeXBlIik7Yi5wYXltZW50VHlwZT0kKHRoaXMpLmF0dHIoImRhdGEtdHlwZSIpOyJsZWFzaW5nIj09JCh0aGlzKS5hdHRyKCJkYXRhLXR5cGUiKT8kKGErIiAucGF5bWVudENhbGN1bGF0b3JLbUFsbG93YW5jZUNvbnRhaW5lciIpLnNob3coKToKJChhKyIgLnBheW1lbnRDYWxjdWxhdG9yS21BbGxvd2FuY2VDb250YWluZXIiKS5oaWRlKCk7Yi5sb2FkUGF5bWVudHMoKX0pOyQoYSsiIC5wYXltZW50Q2FsY3VsYXRvckluY2x1ZGVUYXhDaGVjayIpLm9uKCJjaGFuZ2UiLGZ1bmN0aW9uKCl7JCh0aGlzKS5pcygiOmNoZWNrZWQiKT8oJChhKyIgLnBheW1lbnRDYWxjdWxhdG9yUGF5bWVudENvbnRhaW5lciIpLmhpZGUoKSwkKGErIiAucGF5bWVudENhbGN1bGF0b3JQYXltZW50Q29udGFpbmVyV2l0aFRheGVzIikuc2hvdygpKTooJChhKyIgLnBheW1lbnRDYWxjdWxhdG9yUGF5bWVudENvbnRhaW5lcldpdGhUYXhlcyIpLmhpZGUoKSwkKGErIiAucGF5bWVudENhbGN1bGF0b3JQYXltZW50Q29udGFpbmVyIikuc2hvdygpKX0pOyQoYSsiIC5wYXltZW50Q2FsY3VsYXRvckluY2x1ZGVUYXhDaGVjayIpLnRyaWdnZXIoImNoYW5nZSIpOyQoYSsiIC5wYXltZW50Q2FsY3VsYXRvckludGVydmFsIikub24oImNoYW5nZSIsZnVuY3Rpb24oKXtiLnBheW1lbnRGcmVxdWVuY3k9CiQodGhpcykudmFsKCk7Yi5sb2FkUGF5bWVudHMoKX0pOyQoYSsiIC5wYXltZW50Q2FsY3VsYXRvckttQWxsb3dhbmNlIikub24oImNoYW5nZSIsZnVuY3Rpb24oKXtiLmttQWxsb3dhbmNlPSQodGhpcykudmFsKCk7Yi5sb2FkUGF5bWVudHMoKX0pOyQoYSsiIC5wYXltZW50Q2FsY3VsYXRvckRvd25QYXltZW50Iikub24oImJsdXIiLGZ1bmN0aW9uKCl7bGV0IGU9cGFyc2VJbnQoJCh0aGlzKS52YWwoKSk\/cGFyc2VJbnQoJCh0aGlzKS52YWwoKSk6MDtiLmRvd25wYXltZW50PWU7Yi5sb2FkUGF5bWVudHMoKX0pOyQoYSsiIC5wYXltZW50Q2FsY3VsYXRvclRyYWRlSW5GaW5hbCIpLm9uKCJibHVyIixmdW5jdGlvbigpe2xldCBlPXBhcnNlSW50KCQodGhpcykuYXR0cigibWF4IikpfHwwLGY9cGFyc2VJbnQoJCh0aGlzKS52YWwoKSl8fDA7Zj1mPmU\/ZTpmOyQodGhpcykudmFsKGYpO2IudHJhZGVJblZhbHVlPWY7X2xvY2FsU3RvcmFnZVNldCgidHJhZGVpbl9jdXJyZW50X3ZhbHVlIiwKSlNPTi5zdHJpbmdpZnkoe3ZhbHVlOmZ9KSwxKTtiLmxvYWRQYXltZW50cygpfSl9bG9hZFBheW1lbnRzKGEpe2E9YT9hOiExO2xldCBiPSgkKCJib2R5IikuaGFzQ2xhc3MoIkVOR0xJU0giKT8iL2VuIjoiL2ZyIikrIi9hamF4L2dldFBheW1lbnREYXRhRm9yU3R5bGVJRD93c3dpZHRoPTAiO3ZhciBlPXRoaXM7ZS50cmFkZUluVmFsdWU9cGFyc2VJbnQoJChlLnBhcmVudCsiIC5wYXltZW50Q2FsY3VsYXRvclRyYWRlSW5GaW5hbCIpLnZhbCgpPyQoZS5wYXJlbnQrIiAucGF5bWVudENhbGN1bGF0b3JUcmFkZUluRmluYWwiKS52YWwoKTowKTskLmFqYXgoe3VybDpiLHR5cGU6IlBPU1QiLGRhdGFUeXBlOiJKU09OIixkYXRhOntzdHlsZWlkOmUuc3R5bGVpZCxwYXltZW50VHlwZTplLnBheW1lbnRUeXBlLGRvd25wYXltZW50OmUuZG93bnBheW1lbnQrZS50cmFkZUluVmFsdWUsb3B0aW9uc0Ftb3VudDplLm9wdGlvbnNBbW91bnQscGF5bWVudEZyZXF1ZW5jeTplLnBheW1lbnRGcmVxdWVuY3ksCmttQWxsb3dhbmNlOmUua21BbGxvd2FuY2Usb3B0aW9uczplLm9wdGlvbnNBbW91bnQsaXNJbnZlbnRvcnk6ZS5pc0ludmVudG9yeSxzbjplLnNuLHZpbjplLnZpbixmb3JjZVRheGVzOiEwfSxzdWNjZXNzOmZ1bmN0aW9uKGYpe2YuY3VycmVudFBheW1lbnQmJmYuY3VycmVudFBheW1lbnQubGVuZ3RoPyhhJiZlLnNldEluaXRpYWxWaWV3KGYpLCJ1bmRlZmluZWQiIT09dHlwZW9mIGNhbGNDdXJQYXltZW50JiYoY2FsY0N1clBheW1lbnQ9ZiksZS5zaG93UGF5bWVudHMoZi5jdXJyZW50UGF5bWVudCxmLnBheW1lbnRGZWVzLGYubWFrZWlkLGYpLCQoImJvZHkgIitlLnBhcmVudCkudHJpZ2dlcigicGF5bWVudHNSZWFkeSIpKTokKCJib2R5ICIrZS5wYXJlbnQpLnRyaWdnZXIoIm5vUGF5bWVudCIpfX0pfXNob3dQYXltZW50cyhhLGIsZSxmKXt2YXIgaD10aGlzOyQoaC5wYXJlbnQrIiAucGF5bWVudENhbGN1bGF0b3JQYXltZW50Q29udGFpbmVyIikuaHRtbCgiIik7JChoLnBhcmVudCsKIiAucGF5bWVudENhbGN1bGF0b3JQYXltZW50Q29udGFpbmVyV2l0aFRheGVzIikuaHRtbCgiIik7bGV0IGc9IjEiPT0kKCIjcGF5bWVudENhbGN1bGF0b3JSb3VuZFBheW1lbnQiKS52YWwoKT8wOjI7IjEiPT0kKCIjcGF5bWVudENhbGN1bGF0b3JTdHJpa2VQYXltZW50IikudmFsKCkmJiQoIiNwYXltZW50Q2FsY3VsYXRvclN0cmlrZVBheW1lbnRPcHRpb24iKS52YWwoKTtsZXQgaz1bXSxwPSQoIiNvZW1DZXJ0aWZpY2F0aW9uIikudmFsKCl8fDA7NTxhLmxlbmd0aD9hLmZvckVhY2goZnVuY3Rpb24obCl7KDA9PWwudGVybSUxMnx8NjQ9PWwudGVybXx8NDA9PWUmJjUxPT1sLnRlcm18fDIwPT1lJiZbMjcsMzAsMzksNDJdLmluY2x1ZGVzKGwudGVybSl8fFsxNiwyMV0uaW5jbHVkZXMoZSl8fDQyPT1sLnRlcm0mJjEwMTQ9PXB8fFszMCw0Ml0uaW5jbHVkZXMobC50ZXJtKSYmWzQ3MTU2Miw0NzE1NjMsNDcxNTY0XS5pbmNsdWRlcyhwYXJzZUludChzZXR0aW5ncy5zdHlsZWlkKSl8fApbMTYsMV0uaW5jbHVkZXMoZSkmJlsyOCw0MF0uaW5jbHVkZXMobC50ZXJtKXx8Mjc9PWwudGVybSYmMjc9PWV8fDUyPT1sLnRlcm0mJjM5PT1lKSYmay5wdXNoKGwpfSk6az1hOyJkZXNjIj09JCgiI1BBWU1FTlRfVEVSTV9PUkRFUiIpLnZhbCgpJiYoaz1rLnJldmVyc2UoKSk7dmFyIG49e30scT0hMTtrLmZvckVhY2goZnVuY3Rpb24obCxtKXtPYmplY3QuaGFzT3duKG4sbC50ZXJtKT9xPSEwOm5bbC50ZXJtXT17fTtuW2wudGVybV1bbC5yYXRlX3R5cGVdPW19KTt2YXIgST1bXTthWzBdJiYibGVhc2UiPT1hWzBdLnR5cGUmJiJ1bmRlZmluZWQiIT09dHlwZW9mIGFbMF0ua21fYWxsb3dhbmNlJiYoYT0wPGFbMF0ua21fYWxsb3dhbmNlP2FbMF0ua21fYWxsb3dhbmNlOjJFNCwkKGgucGFyZW50KyIgLnBheW1lbnRDYWxjdWxhdG9yS21BbGxvd2FuY2UiKS52YWwoYSksdGhpcy5rbUFsbG93YW5jZT0kKGgucGFyZW50KyIgLnBheW1lbnRDYWxjdWxhdG9yS21BbGxvd2FuY2UiKS52YWwoKSk7CmxldCBKPWYudG90YWxJbmNlbnRpdmUsSz1xPyQoIiNMT1dFU1RQQVlNRU5UX0xBQkVMIikudmFsKCk6IiIsTD1xPyQoIiNMT1dFU1RSQVRFX0xBQkVMIikudmFsKCk6IiIsWD0wLHo9IiIsQT0iIjsxPT0kKCIjaXNEUlNpdGUiKS5sZW5ndGgmJiIxIj09JCgiI2lzRFJTaXRlIikudmFsKCkmJihhPWgucGFyZW50TmFtZS5zcGxpdCgiIyIpLGY9aC5wYXJlbnROYW1lLHZvaWQgMCE9YVswXSYmKGY9JC50cmltKGFbMF0pKSxhPWAke2Z9LWRpc2NsYWltZXJzLXN1cGVyc2NyaXB0cy0zLWRpdmAsZj1gJHtmfS1kaXNjbGFpbWVycy1zdXBlcnNjcmlwdHMtMi1kaXZgLCIxNzcxIj09PWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzaXRlSUQiKS52YWx1ZXx8IjIyMDkiPT09ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNpdGVJRCIpLnZhbHVlKSYmKHo9JzxhIGhyZWY9ImphdmFzY3JpcHQ6dm9pZCgwKSIgY2xhc3M9ImRpc2NsYWltZXJzU3VwZXJzY3JpcHRzIGNhbGNEaXNjbGFpbWVyc1N1cGVyc2NyaXB0cyAiIGRhdGEtZGlzY2xhaW1lci1kaXZpZD0iJysKYSsnIiBkYXRhLWRpc2NsYWltZXItaWQ9IjMiPjxzdXA+Mzwvc3VwPjwvYT4nLEE9JzxhIGhyZWY9ImphdmFzY3JpcHQ6dm9pZCgwKSIgY2xhc3M9ImRpc2NsYWltZXJzU3VwZXJzY3JpcHRzIGNhbGNEaXNjbGFpbWVyc1N1cGVyc2NyaXB0cyAiIGRhdGEtZGlzY2xhaW1lci1kaXZpZD0iJytmKyciIGRhdGEtZGlzY2xhaW1lci1pZD0iMiI+PHN1cD4yPC9zdXA+PC9hPicpOyQuZWFjaChrLGZ1bmN0aW9uKGwsbSl7aWYoIUkuaW5jbHVkZXMobS50ZXJtKSl7SS5wdXNoKG0udGVybSk7dmFyIGQ9InN0YW5kYXJkIj09bS5yYXRlX3R5cGV8fDI+T2JqZWN0LmtleXMoblttLnRlcm1dKS5sZW5ndGg\/bTprW25bbS50ZXJtXS5zdGFuZGFyZF0sYz0yPT1PYmplY3Qua2V5cyhuW20udGVybV0pLmxlbmd0aD9rW25bbS50ZXJtXS5zdWJ2ZW50ZWRdOiExLHg9Mj09T2JqZWN0LmtleXMoblttLnRlcm1dKS5sZW5ndGg\/blttLnRlcm1dLnN1YnZlbnRlZDohMSx2PW0udGVybSx5PW0uZG93bnBheW1lbnQudG9GaXhlZCgwKSwKQj1kLnBheW1lbnQudG9GaXhlZChnKSxZPWQucGF5bWVudC50b0ZpeGVkKGcpO0I9Qi5yZXBsYWNlKC9cLihbMC05XSopLyxmdW5jdGlvbihDLHcpe3JldHVybic8c3VwIGNsYXNzPSJwZCI+Jyt3KyI8L3N1cD4ifSk7bT1kLnBheW1lbnRXaXRoVGF4ZXMudG9GaXhlZChnKTt2YXIgWj1kLnBheW1lbnRXaXRoVGF4ZXMudG9GaXhlZChnKTttPW0ucmVwbGFjZSgvXC4oWzAtOV0qKS8sZnVuY3Rpb24oQyx3KXtyZXR1cm4nPHN1cCBjbGFzcz0icGQiPicrdysiPC9zdXA+In0pO3ZhciBNPWQucmF0ZSxhYT0icGF5bWVudCIrbDtsPSJwYXltZW50IitsKyJ3aXRoVGF4ZXMiO3Y9JCgiYm9keSIpLmhhc0NsYXNzKCJFTkdMSVNIIik\/IjxzcGFuPiIrdisiPC9zcGFuPiBtb250aCI6IjxzcGFuPiIrdisiPC9zcGFuPiBtb2lzIjt5PWA8c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIj4ke3l9PC9zcGFuPmArKCQoImJvZHkiKS5oYXNDbGFzcygiRU5HTElTSCIpPyIgZG93biBwYXltZW50IjoiIGNvbXB0YW50Iik7CnZhciBEPSIiIT0kKCIjZGlzY2xhaW1lclByaWNlVGV4dCIpLnZhbCgpPyI8ZGl2PiIrJCgiI2Rpc2NsYWltZXJQcmljZVRleHQiKS52YWwoKSsiPC9kaXY+IjoiK3R4IjskKCIjZGVhbGVyUHJvdmluY2VDb2RlIikubGVuZ3RoJiYiQUIiPT0kKCIjZGVhbGVyUHJvdmluY2VDb2RlIikudmFsKCkmJihEPSIiIT0kKCIjZGlzY2xhaW1lclByaWNlVGV4dCIpLnZhbCgpPyI8ZGl2PiIrJCgiI2Rpc2NsYWltZXJQcmljZVRleHQiKS52YWwoKSsiPC9kaXY+IjoiK0dTVCIpO3ZhciBFPWQuY2FsY3VsYXRlZEVmZmVjdGl2ZVJhdGU\/ZC5jYWxjdWxhdGVkRWZmZWN0aXZlUmF0ZTowLE49aC5mb3JtYXRFZmZlY3RpdmVSYXRlVGV4dENhbGMoRSxkLnJhdGUsIiIsJ2NsYXNzPSItZnMxMCInKSxPPWQudG90YWxPYmxpZ2F0aW9uQW1vdW50P2QudG90YWxPYmxpZ2F0aW9uQW1vdW50OjAsUD0nZGF0YS10b29sdGlwPSInK2QudG9vbHRpcCsnIicsUT0nZGF0YS10b29sdGlwPSInK2QudG9vbHRpcFdpdGhUYXhlcysKJyInLHIsYmE9bnVsbCE9KHI9ZC5tMmRfZmluYW5jZSk\/cjpKO3I9InNpbmdsZS1jb2x1bW4iO3ZhciBGPSJzbWFsbC1ib3giLHQ9IiIsdT0iIjtpZihjKXtyPSJsZWZ0LXNlY3Rpb24iO0Y9IiI7dD1jLnBheW1lbnQudG9GaXhlZChnKTtsZXQgQz1jLnBheW1lbnQudG9GaXhlZChnKTt0PXQucmVwbGFjZSgvXC4oWzAtOV0qKS8sZnVuY3Rpb24oY2EsRyl7cmV0dXJuJzxzdXAgY2xhc3M9InBkIj4nK0crIjwvc3VwPiJ9KTt1PWMucGF5bWVudFdpdGhUYXhlcy50b0ZpeGVkKGcpO2xldCB3PWMucGF5bWVudFdpdGhUYXhlcy50b0ZpeGVkKGcpO3U9dS5yZXBsYWNlKC9cLihbMC05XSopLyxmdW5jdGlvbihjYSxHKXtyZXR1cm4nPHN1cCBjbGFzcz0icGQiPicrRysiPC9zdXA+In0pO3ZhciBSPWMucmF0ZS50b0ZpeGVkKDIpLGRhPSJwYXltZW50Iit4O3g9InBheW1lbnQiK3grIndpdGhUYXhlcyI7bGV0IEg9Yy5jYWxjdWxhdGVkRWZmZWN0aXZlUmF0ZT9jLmNhbGN1bGF0ZWRFZmZlY3RpdmVSYXRlOgowLFM9aC5mb3JtYXRFZmZlY3RpdmVSYXRlVGV4dENhbGMoSCxjLnJhdGUsIiIsJ2NsYXNzPSItZnMxMCInKSxUPWMudG90YWxPYmxpZ2F0aW9uQW1vdW50P2MudG90YWxPYmxpZ2F0aW9uQW1vdW50OjAsVT0nZGF0YS10b29sdGlwPSInK2MudG9vbHRpcCsnIicsVj0nZGF0YS10b29sdGlwPSInK2MudG9vbHRpcFdpdGhUYXhlcysnIicsVz1jLm0yZF9maW5hbmNlO3Q9J1x0PGRpdiBpZD0iJytkYSsnIiBjbGFzcz0icmlnaHQtc2VjdGlvbiBwYXltZW50Q2FsY3VsYXRvclBheW1lbnRXcmFwcGVyQ29udGFpbmVyIiAnK1UrJz5cdFx0PGRpdiBjbGFzcz0ibG93ZXN0LXJhdGUiPicrUisnJSA8aSBjbGFzcz0iZmFzIGZhLWluZm8tY2lyY2xlIGluZm8taWNvbiBwYXltZW50VG9vbHRpcCByaWdodFRvb2x0aXAiICcrVSsiPjwvaT4iK1MrJzwvZGl2Plx0XHQ8ZGl2IGNsYXNzPSJhY3R1YWwtcGF5bWVudCI+PHNwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSI+Jyt0KyI8L3NwYW4+Iit6Kyc8L2Rpdj5cdFx0PGRpdiBjbGFzcz0iZGV0YWlsc1RheCI+JysKRCsnPC9kaXY+XHRcdDxkaXYgY2xhc3M9InJhZGlvLWNvbnRhaW5lciBwYXltZW50Q2FsY3VsYXRvclBheW1lbnRTZWxlY3QiPlx0XHRcdDxpbnB1dFx0XHRcdFx0XHR0eXBlPSJyYWRpbyJcdFx0XHRcdFx0bmFtZT0ic2VsZWN0ZWRQYXltZW50Ilx0XHRcdFx0XHR2YWx1ZT0iJytjLnRlcm0rJyJcdFx0XHRcdFx0ZGF0YS1iYXNlcGF5bWVudD0iJytjLnBheW1lbnQrJyJcdFx0XHRcdFx0ZGF0YS1yZWFscGF5bWVudD0iJytjLnBheW1lbnQrJyJcdFx0XHRcdFx0ZGF0YS1yYXRldHlwZT0iJytjLnJhdGVfdHlwZSsnIlx0XHRcdFx0XHRkYXRhLWRpc3BsYXllZHBheW1lbnQ9IicrQysnIlx0XHRcdFx0XHRkYXRhLXJlc2lkdWFsPSInK2MucmVzaWR1YWwrJyJcdFx0XHRcdFx0ZGF0YS10b3RhbGludGVyZXN0PSInK2MudG90YWxJbnRlcmVzdCsnIlx0XHRcdFx0XHRkYXRhLWx1eGVUYXhBbW91bnQ9IicrYy5sdXhlVGF4QW1vdW50KyciXHRcdFx0XHRcdGRhdGEtZWZmZWN0aXZlUmF0ZT0iJysKSCsnIlx0XHRcdFx0XHRkYXRhLXRvdGFsQ29zdD0iJytUKyciXHRcdFx0XHRcdGRhdGEtcmF0ZT0iJytjLnJhdGUrJyIgICAgICAgICAgICAgICAgIGRhdGEtcmVzaWR1YWw9IicrYy5yZXNpZHVhbFZhbHVlKyciICAgICAgICAgICAgICAgICBkYXRhLXRvdGFsaW5jZW50aXZlPSInK1crJyIgICAgICAgICAgICAgICAgIGRhdGEtaW5pdGlhbFByaWNlPSInK2MuaW5pdGlhbFByaWNlKyciICAgICAgICAgICAgICAgICBkYXRhLWZpbmFsUHJpY2U9IicrYy5maW5hbFByaWNlKyciICAgICAgICAgICAgICAgICBkYXRhLWZlZXNMaXN0PSInK2J0b2EoSlNPTi5zdHJpbmdpZnkoYy5mZWVzTGlzdCkpKyciICAgICAgICAgICAgICAgICBkYXRhLWluY2VudGl2ZXNMaXN0PSInK2J0b2EoSlNPTi5zdHJpbmdpZnkoYy5pbmNlbnRpdmVzTGlzdCkpKyciICAgICAgICAgICAgICAgICBkYXRhLWdzdD0iMCIgICAgICAgICAgICAgICAgIGRhdGEtaHN0PSIwIiAgICAgICAgICAgICAgICAgZGF0YS1wc3Q9IjAiXHRcdFx0XHQ+XHRcdFx0PGxhYmVsIGNsYXNzPSJmaW5hbmNlQ2FsYyI+JysKTCsiPC9sYWJlbD5cdFx0PC9kaXY+XHQ8L2Rpdj4iO3U9J1x0PGRpdiBpZD0iJyt4KyciIGNsYXNzPSJyaWdodC1zZWN0aW9uIHBheW1lbnRDYWxjdWxhdG9yUGF5bWVudFdyYXBwZXJDb250YWluZXIiICcrVisnPlx0XHQ8ZGl2IGNsYXNzPSJsb3dlc3QtcmF0ZSI+JytSKyclIDxpIGNsYXNzPSJmYXMgZmEtaW5mby1jaXJjbGUgaW5mby1pY29uIHBheW1lbnRUb29sdGlwIHJpZ2h0VG9vbHRpcCIgJytWKyI+PC9pPiIrUysnPC9kaXY+XHRcdDxkaXYgY2xhc3M9ImFjdHVhbC1wYXltZW50Ij48c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIj4nK3UrIjwvc3Bhbj4iK0ErJzwvZGl2Plx0XHQ8ZGl2IGNsYXNzPSJyYWRpby1jb250YWluZXIgcGF5bWVudENhbGN1bGF0b3JQYXltZW50U2VsZWN0Ij5cdFx0XHQ8aW5wdXRcdFx0XHRcdFx0dHlwZT0icmFkaW8iXHRcdFx0XHRcdG5hbWU9InNlbGVjdGVkUGF5bWVudFdpdGhUYXhlcyJcdFx0XHRcdFx0dmFsdWU9IicrYy50ZXJtKyciXHRcdFx0XHRcdGRhdGEtYmFzZXBheW1lbnQ9IicrCmMucGF5bWVudCsnIlx0XHRcdFx0XHRkYXRhLXJlYWxwYXltZW50PSInK2MucGF5bWVudFdpdGhUYXhlcysnIlx0XHRcdFx0XHRkYXRhLXJhdGV0eXBlPSInK2MucmF0ZV90eXBlKyciXHRcdFx0XHRcdGRhdGEtZGlzcGxheWVkcGF5bWVudD0iJyt3KyciXHRcdFx0XHRcdGRhdGEtcmVzaWR1YWw9IicrYy5yZXNpZHVhbFdpdGhUYXhlcysnIlx0XHRcdFx0XHRkYXRhLXRvdGFsaW50ZXJlc3Q9IicrYy50b3RhbEludGVyZXN0V2l0aFRheGVzKyciXHRcdFx0XHRcdGRhdGEtbHV4ZVRheEFtb3VudD0iJytjLmx1eGVUYXhBbW91bnQrJyJcdFx0XHRcdFx0ZGF0YS1lZmZlY3RpdmVSYXRlPSInK0grJyJcdFx0XHRcdFx0ZGF0YS10b3RhbENvc3Q9IicrVCsnIlx0XHRcdFx0XHRkYXRhLXJhdGU9IicrYy5yYXRlKyciICAgICAgICAgICAgICAgICBkYXRhLXJlc2lkdWFsPSInK2MucmVzaWR1YWxWYWx1ZVdpdGhUYXhlcysnIiAgICAgICAgICAgICAgICAgZGF0YS10b3RhbGluY2VudGl2ZT0iJysKVysnIiAgICAgICAgICAgICAgICAgZGF0YS1pbml0aWFsUHJpY2U9IicrYy5pbml0aWFsUHJpY2UrJyIgICAgICAgICAgICAgICAgIGRhdGEtZmluYWxQcmljZT0iJytjLmZpbmFsUHJpY2UrJyIgICAgICAgICAgICAgICAgIGRhdGEtZmVlc0xpc3Q9IicrYnRvYShKU09OLnN0cmluZ2lmeShjLmZlZXNMaXN0KSkrJyIgICAgICAgICAgICAgICAgIGRhdGEtaW5jZW50aXZlc0xpc3Q9IicrYnRvYShKU09OLnN0cmluZ2lmeShjLmluY2VudGl2ZXNMaXN0KSkrJyIgICAgICAgICAgICAgICAgIGRhdGEtZ3N0PSInK2MuZ3N0KyciICAgICAgICAgICAgICAgICBkYXRhLWhzdD0iJytjLmhzdCsnIiAgICAgICAgICAgICAgICAgZGF0YS1wc3Q9IicrYy5wc3QrJyJcdFx0XHRcdD5cdFx0XHQ8bGFiZWwgY2xhc3M9ImZpbmFuY2VDYWxjIj4nK0wrIjwvbGFiZWw+XHRcdDwvZGl2Plx0PC9kaXY+In1jPSc8ZGl2IGNsYXNzPSJmaW5hbmNpbmctb3B0aW9uIHBheW1lbnRDYWxjdWxhdG9yUGF5bWVudFdyYXBwZXIgJysKRisnIj5cdDxkaXYgY2xhc3M9InRlcm0iPicrdisnPC9kaXY+XHQ8ZGl2IGNsYXNzPSJkb3duLXBheW1lbnQiPicreSsnPC9kaXY+XHQ8ZGl2IGNsYXNzPSJzZXBhcmF0b3JQYXkiPjwvZGl2Plx0PGRpdiBjbGFzcz0iY29udGVudC1jb250YWluZXIiPlx0XHQ8ZGl2IGlkPSInK2FhKyciIGNsYXNzPSInK3IrJyBwYXltZW50Q2FsY3VsYXRvclBheW1lbnRXcmFwcGVyQ29udGFpbmVyIiAnK1ArJz5cdFx0XHQ8ZGl2IGNsYXNzPSJsb3dlc3QtcGF5bWVudCI+PHNwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSI+JytCKyI8L3NwYW4+Iit6KycgPGkgY2xhc3M9ImZhcyBmYS1pbmZvLWNpcmNsZSBpbmZvLWljb24gcGF5bWVudFRvb2x0aXAgbGVmdFRvb2x0aXAiICcrUCsnPjwvaT48L2Rpdj5cdFx0XHQ8ZGl2IGNsYXNzPSJkZXRhaWxzVGF4Ij4nK0QrJzwvZGl2Plx0XHRcdDxkaXYgY2xhc3M9ImFjdHVhbC1yYXRlIj4nK00rIiUgIitOKyc8L2Rpdj5cdFx0XHQ8ZGl2IGNsYXNzPSJyYWRpby1jb250YWluZXIgcGF5bWVudENhbGN1bGF0b3JQYXltZW50U2VsZWN0Ij5cdFx0XHRcdDxpbnB1dCBcdFx0XHRcdFx0dHlwZT0icmFkaW8iXHRcdFx0XHRcdFx0XHRcdFx0XHRuYW1lPSJzZWxlY3RlZFBheW1lbnQiXHRcdFx0XHRcdHZhbHVlPSInKwpkLnRlcm0rJyJcdFx0XHRcdFx0ZGF0YS1iYXNlcGF5bWVudD0iJytkLnBheW1lbnQrJyJcdFx0XHRcdFx0ZGF0YS1yZWFscGF5bWVudD0iJytkLnBheW1lbnQrJyJcdFx0XHRcdFx0ZGF0YS1yYXRldHlwZT0iJytkLnJhdGVfdHlwZSsnIlx0XHRcdFx0XHRkYXRhLWRpc3BsYXllZHBheW1lbnQ9IicrWSsnIlx0XHRcdFx0XHRkYXRhLXJlc2lkdWFsPSInK2QucmVzaWR1YWwrJyJcdFx0XHRcdFx0ZGF0YS10b3RhbGludGVyZXN0PSInK2QudG90YWxJbnRlcmVzdCsnIlx0XHRcdFx0XHRkYXRhLWx1eGVUYXhBbW91bnQ9IicrZC5sdXhlVGF4QW1vdW50KyciXHRcdFx0XHRcdGRhdGEtZWZmZWN0aXZlUmF0ZT0iJytFKyciXHRcdFx0XHRcdGRhdGEtdG90YWxDb3N0PSInK08rJyJcdFx0XHRcdFx0ZGF0YS1yYXRlPSInK2QucmF0ZSsnIiAgICAgICAgICAgICAgICAgZGF0YS1yZXNpZHVhbD0iJytkLnJlc2lkdWFsVmFsdWUrJyIgICAgICAgICAgICAgICAgIGRhdGEtdG90YWxpbmNlbnRpdmU9IicrCmJhKyciICAgICAgICAgICAgICAgICBkYXRhLWluaXRpYWxQcmljZT0iJytkLmluaXRpYWxQcmljZSsnIiAgICAgICAgICAgICAgICAgZGF0YS1maW5hbFByaWNlPSInK2QuZmluYWxQcmljZSsnIiAgICAgICAgICAgICAgICAgZGF0YS1mZWVzTGlzdD0iJytidG9hKEpTT04uc3RyaW5naWZ5KGQuZmVlc0xpc3QpKSsnIiAgICAgICAgICAgICAgICAgZGF0YS1pbmNlbnRpdmVzTGlzdD0iJytidG9hKEpTT04uc3RyaW5naWZ5KGQuaW5jZW50aXZlc0xpc3QpKSsnIiAgICAgICAgICAgICAgICAgZGF0YS1nc3Q9IjAiICAgICAgICAgICAgICAgICBkYXRhLWhzdD0iMCIgICAgICAgICAgICAgICAgIGRhdGEtcHN0PSIwIlx0XHRcdFx0Plx0XHRcdFx0PGxhYmVsIGNsYXNzPSJmaW5hbmNlQ2FsYyI+JytLKyI8L2xhYmVsPlx0XHRcdDwvZGl2Plx0XHQ8L2Rpdj4iK3QrIlx0PC9kaXY+PC9kaXY+IjtkPSc8ZGl2IGNsYXNzPSJmaW5hbmNpbmctb3B0aW9uIHBheW1lbnRDYWxjdWxhdG9yUGF5bWVudFdyYXBwZXIgJysKRisnIj5cdDxkaXYgY2xhc3M9InRlcm0iPicrdisnPC9kaXY+XHQ8ZGl2IGNsYXNzPSJkb3duLXBheW1lbnQiPicreSsnPC9kaXY+XHQ8ZGl2IGNsYXNzPSJzZXBhcmF0b3JQYXkiPjwvZGl2Plx0PGRpdiBjbGFzcz0iY29udGVudC1jb250YWluZXIiPlx0XHQ8ZGl2IGlkPSInK2wrJyIgY2xhc3M9IicrcisnIHBheW1lbnRDYWxjdWxhdG9yUGF5bWVudFdyYXBwZXJDb250YWluZXIiICcrUSsnPlx0XHRcdDxkaXYgY2xhc3M9Imxvd2VzdC1wYXltZW50Ij48c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIj4nK20rIjwvc3Bhbj4iK0ErJyA8aSBjbGFzcz0iZmFzIGZhLWluZm8tY2lyY2xlIGluZm8taWNvbiBwYXltZW50VG9vbHRpcCBsZWZ0VG9vbHRpcCIgJytRKyc+PC9pPjwvZGl2Plx0XHRcdDxkaXYgY2xhc3M9ImFjdHVhbC1yYXRlIj4nK00rIiUgIitOKyc8L2Rpdj5cdFx0XHQ8ZGl2IGNsYXNzPSJyYWRpby1jb250YWluZXIgcGF5bWVudENhbGN1bGF0b3JQYXltZW50U2VsZWN0Ij5cdFx0XHRcdDxpbnB1dCBcdFx0XHRcdFx0dHlwZT0icmFkaW8iXHRcdFx0XHRcdFx0XHRcdFx0XHRuYW1lPSJzZWxlY3RlZFBheW1lbnRXaXRoVGF4ZXMiXHRcdFx0XHRcdHZhbHVlPSInKwpkLnRlcm0rJyJcdFx0XHRcdFx0ZGF0YS1iYXNlcGF5bWVudD0iJytkLnBheW1lbnQrJyJcdFx0XHRcdFx0ZGF0YS1yZWFscGF5bWVudD0iJytkLnBheW1lbnRXaXRoVGF4ZXMrJyJcdFx0XHRcdFx0ZGF0YS1yYXRldHlwZT0iJytkLnJhdGVfdHlwZSsnIlx0XHRcdFx0XHRkYXRhLWRpc3BsYXllZHBheW1lbnQ9IicrWisnIlx0XHRcdFx0XHRkYXRhLXJlc2lkdWFsPSInK2QucmVzaWR1YWwrJyJcdFx0XHRcdFx0ZGF0YS10b3RhbGludGVyZXN0PSInK2QudG90YWxJbnRlcmVzdCsnIlx0XHRcdFx0XHRkYXRhLWx1eGVUYXhBbW91bnQ9IicrZC5sdXhlVGF4QW1vdW50KyciXHRcdFx0XHRcdGRhdGEtZWZmZWN0aXZlUmF0ZT0iJytFKyciXHRcdFx0XHRcdGRhdGEtdG90YWxDb3N0PSInK08rJyJcdFx0XHRcdFx0ZGF0YS1yYXRlPSInK2QucmF0ZSsnIiAgICAgICAgICAgICAgICAgZGF0YS1yZXNpZHVhbD0iJytkLnJlc2lkdWFsVmFsdWVXaXRoVGF4ZXMrJyIgICAgICAgICAgICAgICAgIGRhdGEtdG90YWxpbmNlbnRpdmU9IicrCkorJyIgICAgICAgICAgICAgICAgIGRhdGEtaW5pdGlhbFByaWNlPSInK2QuaW5pdGlhbFByaWNlKyciICAgICAgICAgICAgICAgICBkYXRhLWZpbmFsUHJpY2U9IicrZC5maW5hbFByaWNlKyciICAgICAgICAgICAgICAgICBkYXRhLWZlZXNMaXN0PSInK2J0b2EoSlNPTi5zdHJpbmdpZnkoZC5mZWVzTGlzdCkpKyciICAgICAgICAgICAgICAgICBkYXRhLWluY2VudGl2ZXNMaXN0PSInK2J0b2EoSlNPTi5zdHJpbmdpZnkoZC5pbmNlbnRpdmVzTGlzdCkpKyciICAgICAgICAgICAgICAgICBkYXRhLWdzdD0iJytkLmdzdCsnIiAgICAgICAgICAgICAgICAgZGF0YS1oc3Q9IicrZC5oc3QrJyIgICAgICAgICAgICAgICAgIGRhdGEtcHN0PSInK2QucHN0KyciXHRcdFx0XHQ+XHRcdFx0XHQ8bGFiZWwgY2xhc3M9ImZpbmFuY2VDYWxjIj4nK0srIjwvbGFiZWw+XHRcdFx0PC9kaXY+XHRcdDwvZGl2PiIrdSsiXHQ8L2Rpdj48L2Rpdj4iOyQoaC5wYXJlbnQrIiAucGF5bWVudENhbGN1bGF0b3JQYXltZW50Q29udGFpbmVyIikuYXBwZW5kKGMpOwokKGgucGFyZW50KyIgLnBheW1lbnRDYWxjdWxhdG9yUGF5bWVudENvbnRhaW5lcldpdGhUYXhlcyIpLmFwcGVuZChkKTtYKyt9fSk7aC5zZXRQYXltZW50Q2FsY3VsYXRvclBvcHVwVG9vbHRpcCgpfXNldFBheW1lbnRDYWxjdWxhdG9yUG9wdXBUb29sdGlwKCl7dmFyIGE9dGhpcy5wYXJlbnQsYj10aGlzLnBhcmVudE5hbWU7aWYoIjEiPT0kKCIjaXNtb2JpbGUiKS52YWwoKSkkKGErIiAucGF5bWVudENhbGN1bGF0b3JQYXltZW50V3JhcHBlciAucGF5bWVudENhbGN1bGF0b3JQYXltZW50V3JhcHBlckNvbnRhaW5lciAucGF5bWVudFRvb2x0aXAiKS5lYWNoKGZ1bmN0aW9uKGYpe3RyeXt2YXIgaD0kKHRoaXMpLmF0dHIoImRhdGEtdG9vbHRpcCIpLGc9JCh0aGlzKS5oYXNDbGFzcygibGVmdFRvb2x0aXAiKT8id2VzdCI6ImVhc3QiOyQodGhpcykuZGFya1Rvb2x0aXAoe2NvbnRlbnQ6aCxncmF2aXR5OmcsdGhlbWU6ImxpZ2h0Iix0cmlnZ2VyOiJjbGljayIsYW5pbWF0aW9uOiJmbGlwSW4ifSl9Y2F0Y2goayl7fX0pOwplbHNle2Zvcih2YXIgZT0wOzU+ZTtlKyspJCgiI2Rhcmt0b29sdGlwLSIrYisicGF5bWVudCIrZSkubGVuZ3RoJiYoJCgiI2Rhcmt0b29sdGlwLSIrYisicGF5bWVudCIrZSkucmVtb3ZlKCksJCgiI2Rhcmt0b29sdGlwLSIrYisicGF5bWVudCIrZSsid2l0aFRheGVzIikucmVtb3ZlKCkpOyQoYSsiIC5wYXltZW50Q2FsY3VsYXRvclBheW1lbnRXcmFwcGVyIC5wYXltZW50Q2FsY3VsYXRvclBheW1lbnRXcmFwcGVyQ29udGFpbmVyIikuZWFjaChmdW5jdGlvbigpe3RyeXt2YXIgZj0kKHRoaXMpLmF0dHIoImRhdGEtdG9vbHRpcCIpOyQodGhpcykuZGFya1Rvb2x0aXAoe2NvbnRlbnQ6ZixncmF2aXR5OiJub3J0aCIsdGhlbWU6ImxpZ2h0Iix0cmlnZ2VyOiJob3ZlciIsYW5pbWF0aW9uOiJub25lIn0pfWNhdGNoKGgpe319KX19cGF5bWVudENhbGN1bGF0b3JGb3JtYXROdW1iZXIoYSl7cmV0dXJuIGEucmVwbGFjZSgvXEIoPz0oXGR7M30pKyg\/IVxkKSkvZywiLCIpfWZvcm1hdEVmZmVjdGl2ZVJhdGVUZXh0Q2FsYyhhLApiLGUsZixoKXtmPXZvaWQgMD09PWY\/IiI6ZjtoPXZvaWQgMD09PWg\/ITA6aDtiPXBhcnNlRmxvYXQoYSktcGFyc2VGbG9hdChiKTt2YXIgZz1zdG9yZS5nZXQoImZpZWxkcyIpLkFETUlOX1NIT1dfRUZGRUNUSVZFX1JBVEVfU0VMRUNUO2lmKCJmYWxzZSI9PT1zdG9yZS5nZXQoImZpZWxkcyIpLkFETUlOX1NIT1dfRUZGRUNUSVZFX1JBVEV8fCJldmVyeXdoZXJlIiE9ZyYmMD49YilyZXR1cm4iIjtiPXN0b3JlLmdldCgiaTE4biIpLkVGRkVDVElWRV9SQVRFX0xBQkVMO2c9JCgiI2lzbW9iaWxlIikudmFsKCk\/Ijxici8+IjoiICI7Yj1iLnJlcGxhY2UoInskUkFURX0iLGA8c3BhbiAke2V9PiR7YX0lPC9zcGFuPmApO3JldHVybmAke2d9JHtoP2A8ZGl2ICR7Zn0+YDoiIn0oICR7Yn0gKSR7aD8iPC9kaXY+IjoiIn1gfX07Ci8qKiAvbS9qcy92YW5pbGxhanMvbW9kYWwuanMgKiovCnZhciBfX19kMmNfbW9kYWxqc19jX29uPSIyMDI2LTAyLTI3IDE1OjMwOjAzIjsndXNlIHN0cmljdCc7Y29uc3QgTW9kYWxzPXt9LE1vZGFsPWZ1bmN0aW9uKGgsYil7bGV0IGM9e307Y29uc3Qgbj17dGl0bGU6aCxjb250ZW50VHlwZToibm9kZSIsY29udGVudFNyYzoiIixhZnRlckluaXQ6KCk9Pnt9fTtsZXQgaz0iIjtjb25zdCBlPWh0bWxUb05vZGUoJzxkaXYgY2xhc3M9Im1vZGFsLW92ZXJsYXkiPjwvZGl2PicpLGw9ZnVuY3Rpb24oYSl7YS5vbmNsaWNrPSgpPT5mKCJjYW5jZWwiKX0scD1mdW5jdGlvbigpeyhjLnF1ZXJ5U2VsZWN0b3IoIi5va2F5Iil8fCExKS5vbmNsaWNrPSgpPT5mKCJva2F5Iik7Y29uc3QgYT1jLnF1ZXJ5U2VsZWN0b3JBbGwoIi5jYW5jZWwiKXx8ITE7MTxhLmxlbmd0aD8kLmVhY2goYSxmdW5jdGlvbihkLGcpe2woZyl9KTphJiZsKGFbMF0pfSxtPWZ1bmN0aW9uKGEpeyJFc2NhcGUiPT1hLmtleSYmKGEucHJldmVudERlZmF1bHQoKSxhLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpLGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoImtleXVwIiwKbSx7Y2FwdHVyZTohMH0pLGYoKSl9LGY9YT0+e2E9YXx8IiI7c3dpdGNoKGEpe2Nhc2UgImNhbmNlbCI6ImZ1bmN0aW9uIj09dHlwZW9mIGIub25CZWZvcmVDYW5jZWwmJmIub25CZWZvcmVDYW5jZWwuY2FsbCgpO2JyZWFrO2Nhc2UgIm9rYXkiOiJmdW5jdGlvbiI9PXR5cGVvZiBiLm9uQmVmb3JlU2F2ZSYmYi5vbkJlZm9yZVNhdmUuY2FsbCgpfSJmdW5jdGlvbiI9PXR5cGVvZiBiLm9uQmVmb3JlQ2xvc2UmJmIub25CZWZvcmVDbG9zZS5jYWxsKGEpO2RvY3VtZW50LmJvZHkuc3R5bGUub3ZlcmZsb3dZPSJhdXRvIjtjLmNsYXNzTGlzdC50b2dnbGUoImlzLWFjdGl2ZSIsITEpO2UucGFyZW50Tm9kZSYmKGUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChlKSxrLmZvY3VzKCkpfTtiPU9iamVjdC5hc3NpZ24obixiKTsoZnVuY3Rpb24oKXtjb25zdCBhPStuZXcgRGF0ZTt2YXIgZD0iIjtzd2l0Y2goYi5jb250ZW50VHlwZSl7Y2FzZSAibm9kZSI6ZD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChiLmNvbnRlbnRTcmMpOwpkLmhpZGRlbj0hMTticmVhaztjYXNlICJpZnJhbWUiOmQ9aHRtbFRvTm9kZShgPGRpdiBjbGFzcz0iaWZyYW1lLXdyYXBwZXIiPgoJCQkJCQkJCTxpZnJhbWUKCQkJCQkJCQkJc3JjPSIke2IuY29udGVudFNyY30iCgkJCQkJCQkJCWZyYW1lYm9yZGVyPSIwIgoJCQkJCQkJCQlhbGxvd2Z1bGxzY3JlZW49InRydWUiCgkJCQkJCQkJCXdlYmtpdGFsbG93ZnVsbHNjcmVlbj0idHJ1ZSIKCQkJCQkJCQkJbW96YWxsb3dmdWxsc2NyZWVuPSJ0cnVlIgoJCQkJCQkJCT48L2lmcmFtZT4KCQkJCQkJCTwvZGl2PmApfWxldCBnPSIiO2Iuc2hvd1llc05vQnV0dG9ucyYmKGc9YDxkaXYgY2xhc3M9Im1vZGFsLWZvb3RlciAtcCAtLXM1IGZsZXgtYmV0d2VlbiI+CgkJCQk8ZGl2PgoJCQkJCTxzcGFuIGNsYXNzPSIgLW10MiBtYWluVGV4dCAtYm9sZCI+JHtiLmJ1dHRvblRleHR8fCIifTwvc3Bhbj4KCQkJCTwvZGl2PgoJCQkJPGRpdj4KCQkJCQk8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0biBjYW5jZWwiIGRhdGEtZGlzbWlzcz0ibW9kYWwiPiR7Yi5ub0J1dHRvbnx8Ik5vIn08L2J1dHRvbj4KCQkJCQk8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0biBidG4tbWFpbjIgb2theSIgZGF0YS1kaXNtaXNzPSJtb2RhbCI+JHtiLnllc0J1dHRvbnx8IlllcyJ9PC9idXR0b24+CgkJCQk8L2Rpdj5gKTtjPWh0bWxUb05vZGUoYAoJCQk8Ym94LWxjIGNsYXNzPSJtb2RhbC13cmFwcGVyIC1iZy13aGl0ZSAtLXMwIj4KCQkJCTxzdGFjay1sYyBjbGFzcz0iLS1zMCI+CgkJCQkJPGRpdiBjbGFzcz0ibW9kYWwtaGVhZGVyIGZsZXgtYmV0d2VlbiAtcCAtLXM1Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibW9kYWwtdGl0bGUgdHh0LXVwcGVyIC1mcy1sIC1ib2xkIj4KCQkJCQkJCSR7Yi50aXRsZX0KCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9Im1vZGFsLWNvbnRyb2wiPgoJCQkJCQkJPGJ1dHRvbiB0aXRsZT0iY2xvc2UiIGNsYXNzPSJ4LWNsb3NlIGNhbmNlbCI+PC9idXR0b24+CgkJCQkJCTwvZGl2PgoJCQkJCTwvZGl2PgoJCQkJCTxkaXYgY2xhc3M9Im1vZGFsLWJvZHkiIGlkPSJxLSR7YX0iPgoKCQkJCQk8L2Rpdj4KCQkJCQkke2d9CgkJCQk8L3N0YWNrLWxjPgoJCQk8L2JveC1sYz4KCQlgKTtjLmlkPWBtb2RhbCR7aH1gO2Muc2V0QXR0cmlidXRlKCJyb2xlIiwiZGlhbG9nIik7Yy5zZXRBdHRyaWJ1dGUoImFyaWEtbGFiZWxsZWRieSIsYHEtJHthfWApO2MucXVlcnlTZWxlY3RvcigiLm1vZGFsLWJvZHkiKS5hcHBlbmRDaGlsZChkKTtkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGMpO2RvY3VtZW50LmJvZHkuc3R5bGUub3ZlcmZsb3dZPSJoaWRkZW4iO2IuYWZ0ZXJJbml0KCk7cCgpfSkoKTtyZXR1cm57ZGlzcGxheTpmdW5jdGlvbigpe2s9ZG9jdW1lbnQuYWN0aXZlRWxlbWVudDtkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGUpO2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImtleXVwIixtLHtjYXB0dXJlOiEwfSk7c2V0VGltZW91dChmdW5jdGlvbigpe2MuY2xhc3NMaXN0LnRvZ2dsZSgiaXMtYWN0aXZlIiwhMCl9LDEpfSxjbG9zZTpmfX07Ci8qKiAvbS9qcy92YW5pbGxhanMvbGVhZC5qcyAqKi8KdmFyIF9fX2QyY19sZWFkanNfY19vbj0iMjAyNi0wNC0wMiAxMzozMDowMyI7J3VzZSBzdHJpY3QnO3ZhciAkanNjb21wPSRqc2NvbXB8fHt9OyRqc2NvbXAuc2NvcGU9e307JGpzY29tcC5BU1NVTUVfRVM1PSExOyRqc2NvbXAuQVNTVU1FX05PX05BVElWRV9NQVA9ITE7JGpzY29tcC5BU1NVTUVfTk9fTkFUSVZFX1NFVD0hMTskanNjb21wLlNJTVBMRV9GUk9VTkRfUE9MWUZJTEw9ITE7JGpzY29tcC5JU09MQVRFX1BPTFlGSUxMUz0hMTskanNjb21wLkZPUkNFX1BPTFlGSUxMX1BST01JU0U9ITE7JGpzY29tcC5GT1JDRV9QT0xZRklMTF9QUk9NSVNFX1dIRU5fTk9fVU5IQU5ETEVEX1JFSkVDVElPTj0hMTskanNjb21wLmRlZmluZVByb3BlcnR5PSRqc2NvbXAuQVNTVU1FX0VTNXx8ImZ1bmN0aW9uIj09dHlwZW9mIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzP09iamVjdC5kZWZpbmVQcm9wZXJ0eTpmdW5jdGlvbihiLGEsYyl7aWYoYj09QXJyYXkucHJvdG90eXBlfHxiPT1PYmplY3QucHJvdG90eXBlKXJldHVybiBiO2JbYV09Yy52YWx1ZTtyZXR1cm4gYn07CiRqc2NvbXAuZ2V0R2xvYmFsPWZ1bmN0aW9uKGIpe2I9WyJvYmplY3QiPT10eXBlb2YgZ2xvYmFsVGhpcyYmZ2xvYmFsVGhpcyxiLCJvYmplY3QiPT10eXBlb2Ygd2luZG93JiZ3aW5kb3csIm9iamVjdCI9PXR5cGVvZiBzZWxmJiZzZWxmLCJvYmplY3QiPT10eXBlb2YgZ2xvYmFsJiZnbG9iYWxdO2Zvcih2YXIgYT0wO2E8Yi5sZW5ndGg7KythKXt2YXIgYz1iW2FdO2lmKGMmJmMuTWF0aD09TWF0aClyZXR1cm4gY310aHJvdyBFcnJvcigiQ2Fubm90IGZpbmQgZ2xvYmFsIG9iamVjdCIpO307JGpzY29tcC5nbG9iYWw9JGpzY29tcC5nZXRHbG9iYWwodGhpcyk7JGpzY29tcC5JU19TWU1CT0xfTkFUSVZFPSJmdW5jdGlvbiI9PT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09PXR5cGVvZiBTeW1ib2woIngiKTskanNjb21wLlRSVVNUX0VTNl9QT0xZRklMTFM9ISRqc2NvbXAuSVNPTEFURV9QT0xZRklMTFN8fCRqc2NvbXAuSVNfU1lNQk9MX05BVElWRTskanNjb21wLnBvbHlmaWxscz17fTsKJGpzY29tcC5wcm9wZXJ0eVRvUG9seWZpbGxTeW1ib2w9e307JGpzY29tcC5QT0xZRklMTF9QUkVGSVg9IiRqc2NwJCI7dmFyICRqc2NvbXAkbG9va3VwUG9seWZpbGxlZFZhbHVlPWZ1bmN0aW9uKGIsYSl7dmFyIGM9JGpzY29tcC5wcm9wZXJ0eVRvUG9seWZpbGxTeW1ib2xbYV07aWYobnVsbD09YylyZXR1cm4gYlthXTtjPWJbY107cmV0dXJuIHZvaWQgMCE9PWM\/YzpiW2FdfTskanNjb21wLnBvbHlmaWxsPWZ1bmN0aW9uKGIsYSxjLGUpe2EmJigkanNjb21wLklTT0xBVEVfUE9MWUZJTExTPyRqc2NvbXAucG9seWZpbGxJc29sYXRlZChiLGEsYyxlKTokanNjb21wLnBvbHlmaWxsVW5pc29sYXRlZChiLGEsYyxlKSl9OwokanNjb21wLnBvbHlmaWxsVW5pc29sYXRlZD1mdW5jdGlvbihiLGEsYyxlKXtjPSRqc2NvbXAuZ2xvYmFsO2I9Yi5zcGxpdCgiLiIpO2ZvcihlPTA7ZTxiLmxlbmd0aC0xO2UrKyl7dmFyIGg9YltlXTtpZighKGggaW4gYykpcmV0dXJuO2M9Y1toXX1iPWJbYi5sZW5ndGgtMV07ZT1jW2JdO2E9YShlKTthIT1lJiZudWxsIT1hJiYkanNjb21wLmRlZmluZVByb3BlcnR5KGMsYix7Y29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOmF9KX07CiRqc2NvbXAucG9seWZpbGxJc29sYXRlZD1mdW5jdGlvbihiLGEsYyxlKXt2YXIgaD1iLnNwbGl0KCIuIik7Yj0xPT09aC5sZW5ndGg7ZT1oWzBdO2U9IWImJmUgaW4gJGpzY29tcC5wb2x5ZmlsbHM\/JGpzY29tcC5wb2x5ZmlsbHM6JGpzY29tcC5nbG9iYWw7Zm9yKHZhciBxPTA7cTxoLmxlbmd0aC0xO3ErKyl7dmFyIHI9aFtxXTtpZighKHIgaW4gZSkpcmV0dXJuO2U9ZVtyXX1oPWhbaC5sZW5ndGgtMV07Yz0kanNjb21wLklTX1NZTUJPTF9OQVRJVkUmJiJlczYiPT09Yz9lW2hdOm51bGw7YT1hKGMpO251bGwhPWEmJihiPyRqc2NvbXAuZGVmaW5lUHJvcGVydHkoJGpzY29tcC5wb2x5ZmlsbHMsaCx7Y29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOmF9KTphIT09YyYmKHZvaWQgMD09PSRqc2NvbXAucHJvcGVydHlUb1BvbHlmaWxsU3ltYm9sW2hdJiYoYz0xRTkqTWF0aC5yYW5kb20oKT4+PjAsJGpzY29tcC5wcm9wZXJ0eVRvUG9seWZpbGxTeW1ib2xbaF09JGpzY29tcC5JU19TWU1CT0xfTkFUSVZFPwokanNjb21wLmdsb2JhbC5TeW1ib2woaCk6JGpzY29tcC5QT0xZRklMTF9QUkVGSVgrYysiJCIraCksJGpzY29tcC5kZWZpbmVQcm9wZXJ0eShlLCRqc2NvbXAucHJvcGVydHlUb1BvbHlmaWxsU3ltYm9sW2hdLHtjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6YX0pKSl9OyRqc2NvbXAudW5kZXJzY29yZVByb3RvQ2FuQmVTZXQ9ZnVuY3Rpb24oKXt2YXIgYj17YTohMH0sYT17fTt0cnl7cmV0dXJuIGEuX19wcm90b19fPWIsYS5hfWNhdGNoKGMpe31yZXR1cm4hMX07CiRqc2NvbXAuc2V0UHJvdG90eXBlT2Y9JGpzY29tcC5UUlVTVF9FUzZfUE9MWUZJTExTJiYiZnVuY3Rpb24iPT10eXBlb2YgT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZjokanNjb21wLnVuZGVyc2NvcmVQcm90b0NhbkJlU2V0KCk\/ZnVuY3Rpb24oYixhKXtiLl9fcHJvdG9fXz1hO2lmKGIuX19wcm90b19fIT09YSl0aHJvdyBuZXcgVHlwZUVycm9yKGIrIiBpcyBub3QgZXh0ZW5zaWJsZSIpO3JldHVybiBifTpudWxsOyRqc2NvbXAuYXJyYXlJdGVyYXRvckltcGw9ZnVuY3Rpb24oYil7dmFyIGE9MDtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gYTxiLmxlbmd0aD97ZG9uZTohMSx2YWx1ZTpiW2ErK119Ontkb25lOiEwfX19OyRqc2NvbXAuYXJyYXlJdGVyYXRvcj1mdW5jdGlvbihiKXtyZXR1cm57bmV4dDokanNjb21wLmFycmF5SXRlcmF0b3JJbXBsKGIpfX07CiRqc2NvbXAubWFrZUl0ZXJhdG9yPWZ1bmN0aW9uKGIpe3ZhciBhPSJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZTeW1ib2wuaXRlcmF0b3ImJmJbU3ltYm9sLml0ZXJhdG9yXTtyZXR1cm4gYT9hLmNhbGwoYik6JGpzY29tcC5hcnJheUl0ZXJhdG9yKGIpfTskanNjb21wLmdlbmVyYXRvcj17fTskanNjb21wLmdlbmVyYXRvci5lbnN1cmVJdGVyYXRvclJlc3VsdElzT2JqZWN0Xz1mdW5jdGlvbihiKXtpZighKGIgaW5zdGFuY2VvZiBPYmplY3QpKXRocm93IG5ldyBUeXBlRXJyb3IoIkl0ZXJhdG9yIHJlc3VsdCAiK2IrIiBpcyBub3QgYW4gb2JqZWN0Iik7fTsKJGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dD1mdW5jdGlvbigpe3RoaXMuaXNSdW5uaW5nXz0hMTt0aGlzLnlpZWxkQWxsSXRlcmF0b3JfPW51bGw7dGhpcy55aWVsZFJlc3VsdD12b2lkIDA7dGhpcy5uZXh0QWRkcmVzcz0xO3RoaXMuZmluYWxseUFkZHJlc3NfPXRoaXMuY2F0Y2hBZGRyZXNzXz0wO3RoaXMuZmluYWxseUNvbnRleHRzXz10aGlzLmFicnVwdENvbXBsZXRpb25fPW51bGx9OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLnN0YXJ0Xz1mdW5jdGlvbigpe2lmKHRoaXMuaXNSdW5uaW5nXyl0aHJvdyBuZXcgVHlwZUVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBydW5uaW5nIik7dGhpcy5pc1J1bm5pbmdfPSEwfTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5zdG9wXz1mdW5jdGlvbigpe3RoaXMuaXNSdW5uaW5nXz0hMX07CiRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLmp1bXBUb0Vycm9ySGFuZGxlcl89ZnVuY3Rpb24oKXt0aGlzLm5leHRBZGRyZXNzPXRoaXMuY2F0Y2hBZGRyZXNzX3x8dGhpcy5maW5hbGx5QWRkcmVzc199OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLm5leHRfPWZ1bmN0aW9uKGIpe3RoaXMueWllbGRSZXN1bHQ9Yn07JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUudGhyb3dfPWZ1bmN0aW9uKGIpe3RoaXMuYWJydXB0Q29tcGxldGlvbl89e2V4Y2VwdGlvbjpiLGlzRXhjZXB0aW9uOiEwfTt0aGlzLmp1bXBUb0Vycm9ySGFuZGxlcl8oKX07JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUucmV0dXJuPWZ1bmN0aW9uKGIpe3RoaXMuYWJydXB0Q29tcGxldGlvbl89e3JldHVybjpifTt0aGlzLm5leHRBZGRyZXNzPXRoaXMuZmluYWxseUFkZHJlc3NffTsKJGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUuanVtcFRocm91Z2hGaW5hbGx5QmxvY2tzPWZ1bmN0aW9uKGIpe3RoaXMuYWJydXB0Q29tcGxldGlvbl89e2p1bXBUbzpifTt0aGlzLm5leHRBZGRyZXNzPXRoaXMuZmluYWxseUFkZHJlc3NffTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS55aWVsZD1mdW5jdGlvbihiLGEpe3RoaXMubmV4dEFkZHJlc3M9YTtyZXR1cm57dmFsdWU6Yn19OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLnlpZWxkQWxsPWZ1bmN0aW9uKGIsYSl7Yj0kanNjb21wLm1ha2VJdGVyYXRvcihiKTt2YXIgYz1iLm5leHQoKTskanNjb21wLmdlbmVyYXRvci5lbnN1cmVJdGVyYXRvclJlc3VsdElzT2JqZWN0XyhjKTtpZihjLmRvbmUpdGhpcy55aWVsZFJlc3VsdD1jLnZhbHVlLHRoaXMubmV4dEFkZHJlc3M9YTtlbHNlIHJldHVybiB0aGlzLnlpZWxkQWxsSXRlcmF0b3JfPWIsdGhpcy55aWVsZChjLnZhbHVlLGEpfTsKJGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUuanVtcFRvPWZ1bmN0aW9uKGIpe3RoaXMubmV4dEFkZHJlc3M9Yn07JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUuanVtcFRvRW5kPWZ1bmN0aW9uKCl7dGhpcy5uZXh0QWRkcmVzcz0wfTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5zZXRDYXRjaEZpbmFsbHlCbG9ja3M9ZnVuY3Rpb24oYixhKXt0aGlzLmNhdGNoQWRkcmVzc189Yjt2b2lkIDAhPWEmJih0aGlzLmZpbmFsbHlBZGRyZXNzXz1hKX07JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUuc2V0RmluYWxseUJsb2NrPWZ1bmN0aW9uKGIpe3RoaXMuY2F0Y2hBZGRyZXNzXz0wO3RoaXMuZmluYWxseUFkZHJlc3NfPWJ8fDB9OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLmxlYXZlVHJ5QmxvY2s9ZnVuY3Rpb24oYixhKXt0aGlzLm5leHRBZGRyZXNzPWI7dGhpcy5jYXRjaEFkZHJlc3NfPWF8fDB9OwokanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5lbnRlckNhdGNoQmxvY2s9ZnVuY3Rpb24oYil7dGhpcy5jYXRjaEFkZHJlc3NfPWJ8fDA7Yj10aGlzLmFicnVwdENvbXBsZXRpb25fLmV4Y2VwdGlvbjt0aGlzLmFicnVwdENvbXBsZXRpb25fPW51bGw7cmV0dXJuIGJ9OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLmVudGVyRmluYWxseUJsb2NrPWZ1bmN0aW9uKGIsYSxjKXtjP3RoaXMuZmluYWxseUNvbnRleHRzX1tjXT10aGlzLmFicnVwdENvbXBsZXRpb25fOnRoaXMuZmluYWxseUNvbnRleHRzXz1bdGhpcy5hYnJ1cHRDb21wbGV0aW9uX107dGhpcy5jYXRjaEFkZHJlc3NfPWJ8fDA7dGhpcy5maW5hbGx5QWRkcmVzc189YXx8MH07CiRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLmxlYXZlRmluYWxseUJsb2NrPWZ1bmN0aW9uKGIsYSl7YT10aGlzLmZpbmFsbHlDb250ZXh0c18uc3BsaWNlKGF8fDApWzBdO2lmKGE9dGhpcy5hYnJ1cHRDb21wbGV0aW9uXz10aGlzLmFicnVwdENvbXBsZXRpb25ffHxhKXtpZihhLmlzRXhjZXB0aW9uKXJldHVybiB0aGlzLmp1bXBUb0Vycm9ySGFuZGxlcl8oKTt2b2lkIDAhPWEuanVtcFRvJiZ0aGlzLmZpbmFsbHlBZGRyZXNzXzxhLmp1bXBUbz8odGhpcy5uZXh0QWRkcmVzcz1hLmp1bXBUbyx0aGlzLmFicnVwdENvbXBsZXRpb25fPW51bGwpOnRoaXMubmV4dEFkZHJlc3M9dGhpcy5maW5hbGx5QWRkcmVzc199ZWxzZSB0aGlzLm5leHRBZGRyZXNzPWJ9OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLmZvckluPWZ1bmN0aW9uKGIpe3JldHVybiBuZXcgJGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5Qcm9wZXJ0eUl0ZXJhdG9yKGIpfTsKJGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5Qcm9wZXJ0eUl0ZXJhdG9yPWZ1bmN0aW9uKGIpe3RoaXMub2JqZWN0Xz1iO3RoaXMucHJvcGVydGllc189W107Zm9yKHZhciBhIGluIGIpdGhpcy5wcm9wZXJ0aWVzXy5wdXNoKGEpO3RoaXMucHJvcGVydGllc18ucmV2ZXJzZSgpfTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LlByb3BlcnR5SXRlcmF0b3IucHJvdG90eXBlLmdldE5leHQ9ZnVuY3Rpb24oKXtmb3IoOzA8dGhpcy5wcm9wZXJ0aWVzXy5sZW5ndGg7KXt2YXIgYj10aGlzLnByb3BlcnRpZXNfLnBvcCgpO2lmKGIgaW4gdGhpcy5vYmplY3RfKXJldHVybiBifXJldHVybiBudWxsfTskanNjb21wLmdlbmVyYXRvci5FbmdpbmVfPWZ1bmN0aW9uKGIpe3RoaXMuY29udGV4dF89bmV3ICRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQ7dGhpcy5wcm9ncmFtXz1ifTsKJGpzY29tcC5nZW5lcmF0b3IuRW5naW5lXy5wcm90b3R5cGUubmV4dF89ZnVuY3Rpb24oYil7dGhpcy5jb250ZXh0Xy5zdGFydF8oKTtpZih0aGlzLmNvbnRleHRfLnlpZWxkQWxsSXRlcmF0b3JfKXJldHVybiB0aGlzLnlpZWxkQWxsU3RlcF8odGhpcy5jb250ZXh0Xy55aWVsZEFsbEl0ZXJhdG9yXy5uZXh0LGIsdGhpcy5jb250ZXh0Xy5uZXh0Xyk7dGhpcy5jb250ZXh0Xy5uZXh0XyhiKTtyZXR1cm4gdGhpcy5uZXh0U3RlcF8oKX07CiRqc2NvbXAuZ2VuZXJhdG9yLkVuZ2luZV8ucHJvdG90eXBlLnJldHVybl89ZnVuY3Rpb24oYil7dGhpcy5jb250ZXh0Xy5zdGFydF8oKTt2YXIgYT10aGlzLmNvbnRleHRfLnlpZWxkQWxsSXRlcmF0b3JfO2lmKGEpcmV0dXJuIHRoaXMueWllbGRBbGxTdGVwXygicmV0dXJuImluIGE\/YVsicmV0dXJuIl06ZnVuY3Rpb24oYyl7cmV0dXJue3ZhbHVlOmMsZG9uZTohMH19LGIsdGhpcy5jb250ZXh0Xy5yZXR1cm4pO3RoaXMuY29udGV4dF8ucmV0dXJuKGIpO3JldHVybiB0aGlzLm5leHRTdGVwXygpfTsKJGpzY29tcC5nZW5lcmF0b3IuRW5naW5lXy5wcm90b3R5cGUudGhyb3dfPWZ1bmN0aW9uKGIpe3RoaXMuY29udGV4dF8uc3RhcnRfKCk7aWYodGhpcy5jb250ZXh0Xy55aWVsZEFsbEl0ZXJhdG9yXylyZXR1cm4gdGhpcy55aWVsZEFsbFN0ZXBfKHRoaXMuY29udGV4dF8ueWllbGRBbGxJdGVyYXRvcl9bInRocm93Il0sYix0aGlzLmNvbnRleHRfLm5leHRfKTt0aGlzLmNvbnRleHRfLnRocm93XyhiKTtyZXR1cm4gdGhpcy5uZXh0U3RlcF8oKX07CiRqc2NvbXAuZ2VuZXJhdG9yLkVuZ2luZV8ucHJvdG90eXBlLnlpZWxkQWxsU3RlcF89ZnVuY3Rpb24oYixhLGMpe3RyeXt2YXIgZT1iLmNhbGwodGhpcy5jb250ZXh0Xy55aWVsZEFsbEl0ZXJhdG9yXyxhKTskanNjb21wLmdlbmVyYXRvci5lbnN1cmVJdGVyYXRvclJlc3VsdElzT2JqZWN0XyhlKTtpZighZS5kb25lKXJldHVybiB0aGlzLmNvbnRleHRfLnN0b3BfKCksZTt2YXIgaD1lLnZhbHVlfWNhdGNoKHEpe3JldHVybiB0aGlzLmNvbnRleHRfLnlpZWxkQWxsSXRlcmF0b3JfPW51bGwsdGhpcy5jb250ZXh0Xy50aHJvd18ocSksdGhpcy5uZXh0U3RlcF8oKX10aGlzLmNvbnRleHRfLnlpZWxkQWxsSXRlcmF0b3JfPW51bGw7Yy5jYWxsKHRoaXMuY29udGV4dF8saCk7cmV0dXJuIHRoaXMubmV4dFN0ZXBfKCl9OwokanNjb21wLmdlbmVyYXRvci5FbmdpbmVfLnByb3RvdHlwZS5uZXh0U3RlcF89ZnVuY3Rpb24oKXtmb3IoO3RoaXMuY29udGV4dF8ubmV4dEFkZHJlc3M7KXRyeXt2YXIgYj10aGlzLnByb2dyYW1fKHRoaXMuY29udGV4dF8pO2lmKGIpcmV0dXJuIHRoaXMuY29udGV4dF8uc3RvcF8oKSx7dmFsdWU6Yi52YWx1ZSxkb25lOiExfX1jYXRjaChhKXt0aGlzLmNvbnRleHRfLnlpZWxkUmVzdWx0PXZvaWQgMCx0aGlzLmNvbnRleHRfLnRocm93XyhhKX10aGlzLmNvbnRleHRfLnN0b3BfKCk7aWYodGhpcy5jb250ZXh0Xy5hYnJ1cHRDb21wbGV0aW9uXyl7Yj10aGlzLmNvbnRleHRfLmFicnVwdENvbXBsZXRpb25fO3RoaXMuY29udGV4dF8uYWJydXB0Q29tcGxldGlvbl89bnVsbDtpZihiLmlzRXhjZXB0aW9uKXRocm93IGIuZXhjZXB0aW9uO3JldHVybnt2YWx1ZTpiLnJldHVybixkb25lOiEwfX1yZXR1cm57dmFsdWU6dm9pZCAwLGRvbmU6ITB9fTsKJGpzY29tcC5nZW5lcmF0b3IuR2VuZXJhdG9yXz1mdW5jdGlvbihiKXt0aGlzLm5leHQ9ZnVuY3Rpb24oYSl7cmV0dXJuIGIubmV4dF8oYSl9O3RoaXMudGhyb3c9ZnVuY3Rpb24oYSl7cmV0dXJuIGIudGhyb3dfKGEpfTt0aGlzLnJldHVybj1mdW5jdGlvbihhKXtyZXR1cm4gYi5yZXR1cm5fKGEpfTt0aGlzW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc319OyRqc2NvbXAuZ2VuZXJhdG9yLmNyZWF0ZUdlbmVyYXRvcj1mdW5jdGlvbihiLGEpe2E9bmV3ICRqc2NvbXAuZ2VuZXJhdG9yLkdlbmVyYXRvcl8obmV3ICRqc2NvbXAuZ2VuZXJhdG9yLkVuZ2luZV8oYSkpOyRqc2NvbXAuc2V0UHJvdG90eXBlT2YmJmIucHJvdG90eXBlJiYkanNjb21wLnNldFByb3RvdHlwZU9mKGEsYi5wcm90b3R5cGUpO3JldHVybiBhfTsKJGpzY29tcC5hc3luY0V4ZWN1dGVQcm9taXNlR2VuZXJhdG9yPWZ1bmN0aW9uKGIpe2Z1bmN0aW9uIGEoZSl7cmV0dXJuIGIubmV4dChlKX1mdW5jdGlvbiBjKGUpe3JldHVybiBiLnRocm93KGUpfXJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihlLGgpe2Z1bmN0aW9uIHEocil7ci5kb25lP2Uoci52YWx1ZSk6UHJvbWlzZS5yZXNvbHZlKHIudmFsdWUpLnRoZW4oYSxjKS50aGVuKHEsaCl9cShiLm5leHQoKSl9KX07JGpzY29tcC5hc3luY0V4ZWN1dGVQcm9taXNlR2VuZXJhdG9yRnVuY3Rpb249ZnVuY3Rpb24oYil7cmV0dXJuICRqc2NvbXAuYXN5bmNFeGVjdXRlUHJvbWlzZUdlbmVyYXRvcihiKCkpfTskanNjb21wLmFzeW5jRXhlY3V0ZVByb21pc2VHZW5lcmF0b3JQcm9ncmFtPWZ1bmN0aW9uKGIpe3JldHVybiAkanNjb21wLmFzeW5jRXhlY3V0ZVByb21pc2VHZW5lcmF0b3IobmV3ICRqc2NvbXAuZ2VuZXJhdG9yLkdlbmVyYXRvcl8obmV3ICRqc2NvbXAuZ2VuZXJhdG9yLkVuZ2luZV8oYikpKX07CmNvbnN0IExlYWQ9ZnVuY3Rpb24oYil7Y29uc3QgYT1PYmplY3QuYXNzaWduKHt9LGIpLGM9YS5sZWFkSWR8fGEubmFtZTtiPWEubGVhZE5vZGU7Y29uc3QgZT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZm9ybSIrYyk7bGV0IGg9ITEscT1lLnF1ZXJ5U2VsZWN0b3IoIi5sZWFkRW1haWwgW2RhdGEtc3ViamVjdF0iKS5pbm5lclRleHQscj1lLnF1ZXJ5U2VsZWN0b3IoIi5sZWFkRW1haWwgW2RhdGEtYm9keV0iKS5pbm5lckhUTUwsej1hLnRyaWdnZXIsaz17fTtjb25zdCBBPSgpPT57QXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbChlLmVsZW1lbnRzLGQ9PntpZigidW5kZWZpbmVkIiE9dHlwZW9mIGQuYXR0cmlidXRlcy5uYW1lKXt2YXIgZj1kLmF0dHJpYnV0ZXMubmFtZS52YWx1ZXx8ITE7c3dpdGNoKCEwKXtjYXNlIFsibmFtZSJdLmluY2x1ZGVzKGYudG9Mb3dlckNhc2UoKSk6Y2FzZSBbImZpcnN0bmFtZSJdLmluY2x1ZGVzKGYudG9Mb3dlckNhc2UoKSk6Y2FzZSBbImxhc3RuYW1lIl0uaW5jbHVkZXMoZi50b0xvd2VyQ2FzZSgpKTpjYXNlICJlbWFpbCI9PQpmLnRvTG93ZXJDYXNlKCk6Y2FzZSAiZGF0YSI9PWY6YnJlYWs7Y2FzZSAicGhvbmUiPT1mLnRvTG93ZXJDYXNlKCk6Y2FzZSAidGVsIj09ZC50eXBlOklNYXNrKGQse21hc2s6W3ttYXNrOiIwMDAgMDAwLTAwMDAifSx7bWFzazoiMSAwMDAgMDAwLTAwMDAifV19KX19fSk7InVuZGVmaW5lZCIhPT10eXBlb2YgY2xpZW50U3RvcmFnZSYmQXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbChlLmVsZW1lbnRzLGQ9PntpZigidW5kZWZpbmVkIiE9dHlwZW9mIGQuYXR0cmlidXRlcy5uYW1lKXt2YXIgZj1kLmF0dHJpYnV0ZXMubmFtZS52YWx1ZXx8ITE7c3dpdGNoKCEwKXtjYXNlIFsibmFtZSJdLmluY2x1ZGVzKGYudG9Mb3dlckNhc2UoKSk6dmFyIGc7Zj1udWxsIT0oZz1jbGllbnRTdG9yYWdlLmdldCgiZmlyc3RuYW1lIikpP2c6IiI7dmFyIGw7Zz1udWxsIT0obD1jbGllbnRTdG9yYWdlLmdldCgibGFzdG5hbWUiKSk\/bDoiIjtsPWYrKCIiIT1nPyIgIitjbGllbnRTdG9yYWdlLmdldCgibGFzdG5hbWUiKToKIiIpO2QudmFsdWU9bDticmVhaztjYXNlIFsiZmlyc3RuYW1lIl0uaW5jbHVkZXMoZi50b0xvd2VyQ2FzZSgpKTpsZXQgbTtkLnZhbHVlPW51bGwhPShtPWNsaWVudFN0b3JhZ2UuZ2V0KCJmaXJzdG5hbWUiKSk\/bToiIjticmVhaztjYXNlIFsibGFzdG5hbWUiXS5pbmNsdWRlcyhmLnRvTG93ZXJDYXNlKCkpOmxldCBuO2QudmFsdWU9bnVsbCE9KG49Y2xpZW50U3RvcmFnZS5nZXQoImxhc3RuYW1lIikpP246IiI7YnJlYWs7Y2FzZSAiZW1haWwiPT1mLnRvTG93ZXJDYXNlKCk6bGV0IHA7ZC52YWx1ZT1udWxsIT0ocD1jbGllbnRTdG9yYWdlLmdldCgiZW1haWwiKSk\/cDoiIjticmVhaztjYXNlICJwaG9uZSI9PWYudG9Mb3dlckNhc2UoKTpsZXQgdTtkLnZhbHVlPW51bGwhPSh1PWNsaWVudFN0b3JhZ2UuZ2V0KCJwaG9uZSIpKT91OiIifX19KX0sRT0oKT0+e2lmKGgpcmV0dXJuITE7aD0hMDtCKCkudGhlbihkPT57aWYoIWQpcmV0dXJuIHYoInBvcHVwLnZhbGlkYXRpb25GYWlsZWQiKSwKaD0hMTthLnZhbGlkYXRlZD0hMDtDKCk7RCgpfSl9LEM9KCk9PntBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKGUuZWxlbWVudHMsZD0+e2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgZC5hdHRyaWJ1dGVzLm5hbWUpe3ZhciBmPWQuYXR0cmlidXRlcy5uYW1lLnZhbHVlfHwhMTtpZihmKXN3aXRjaChrW2ZdPWQudmFsdWUsITApe2Nhc2UgWyJuYW1lIl0uaW5jbHVkZXMoZi50b0xvd2VyQ2FzZSgpKTpkPWQudmFsdWUuc3BsaXQoIiAiKTtrLnVzZXJGaXJzdE5hbWUrPWQuc2hpZnQoKTtrLnVzZXJMYXN0TmFtZSs9ZC5qb2luKCIgIik7YnJlYWs7Y2FzZSBbImZpcnN0bmFtZSJdLmluY2x1ZGVzKGYudG9Mb3dlckNhc2UoKSk6ay51c2VyRmlyc3ROYW1lKz1kLnZhbHVlO2JyZWFrO2Nhc2UgWyJsYXN0bmFtZSJdLmluY2x1ZGVzKGYudG9Mb3dlckNhc2UoKSk6ay51c2VyTGFzdE5hbWUrPWQudmFsdWU7YnJlYWs7Y2FzZSAiZW1haWwiPT1mLnRvTG93ZXJDYXNlKCk6ay51c2VyRW1haWw9CmQudmFsdWU7YnJlYWs7Y2FzZSAicGhvbmUiPT1mLnRvTG93ZXJDYXNlKCk6Y2FzZSAidGVsIj09ZC50eXBlOklNYXNrKGQse21hc2s6W3ttYXNrOiIwMDAgMDAwLTAwMDAifSx7bWFzazoiMSAwMDAgMDAwLTAwMDAifV19KTtrLnVzZXJQaG9uZT1kLnZhbHVlO2JyZWFrO2Nhc2UgImRhdGEiPT1mOmZvcihsZXQgZyBpbiBkLmRhdGFzZXQpa1tnLnJlcGxhY2UoLy0uL2csbD0+bFsxXS50b1VwcGVyQ2FzZSgpKV09ZC5kYXRhc2V0W2ddfX19KX0sRD0oKT0+e2lmKCExPT09YS5vbkJlZm9yZVN1Ym1pdChhKSlyZXR1cm4gYS5jbG9zZU9uU3VibWl0JiZ0KCksITE7dmFyIGQ9eCh3aW5kb3cubG9jYXRpb24uaHJlZik7aWYoQ29va2llcy5nZXQoYS5sZWFkSWQrZCkpcmV0dXJuIGg9ITEseSghMCksITE7RigpO3YoInBvcHVwLnN1Ym1pdCIpO2xldCBmO2lmKCJEaWdpdGFsUmV0YWlsIj09KG51bGw9PShmPWspP3ZvaWQgMDpmLmludm9rZXIpKXtkPWNsaWVudFN0b3JhZ2UuZ2V0KCJjbGllbnRTdG9yYWdlIil8fAp7fTtsZXQgbixwO2subGVhZEludm9rZXJTSUQ9RygobnVsbD09ZD92b2lkIDA6bnVsbD09KG49ZC5jb250YWN0KT92b2lkIDA6bi5lbWFpbCkrKG51bGw9PWQ\/dm9pZCAwOm51bGw9PShwPWQuY29udGFjdCk\/dm9pZCAwOnAucGhvbmUpKTtlbWFpbEhhbmRsZXIubGVhZEludm9rZXI9IkRpZ2l0YWxSZXRhaWwiO2VtYWlsSGFuZGxlci5kaWdpdGFsUmV0YWlsU0lEPWsubGVhZEludm9rZXJTSUR9dmFyIGc7cT0obnVsbD09KGc9ZS5xdWVyeVNlbGVjdG9yKCIubGVhZEVtYWlsIFtkYXRhLXN1YmplY3RdIikpP3ZvaWQgMDpnLmlubmVyVGV4dCl8fHE7bGV0IGw7cj0obnVsbD09KGw9ZS5xdWVyeVNlbGVjdG9yKCIubGVhZEVtYWlsIFtkYXRhLWJvZHldIikpP3ZvaWQgMDpsLmlubmVySFRNTCl8fHI7ZW1haWxIYW5kbGVyLmJvZHk9SCgpO2VtYWlsSGFuZGxlci5zdWJqZWN0PXE7T2JqZWN0LmFzc2lnbihlbWFpbEhhbmRsZXIsayk7InN0cmluZyI9PXR5cGVvZiBlbWFpbEhhbmRsZXIudXNlck5hbWUmJgooZz1lbWFpbEhhbmRsZXIudXNlck5hbWUuc3BsaXQoIiAiKSxlbWFpbEhhbmRsZXIudXNlckZpcnN0TmFtZT1nLnNoaWZ0KCksZW1haWxIYW5kbGVyLnVzZXJMYXN0TmFtZT1nLmpvaW4oIiAiKSk7ZW1haWxIYW5kbGVyLm9uQmVmb3JlU2hvd0NvbnNlbnQ9ZnVuY3Rpb24oKXtlbWFpbEhhbmRsZXIub25CZWZvcmVTaG93Q29uc2VudD0hMX07ZW1haWxIYW5kbGVyLm9uQWZ0ZXJDb25zZW50PWZ1bmN0aW9uKG4pe2VtYWlsSGFuZGxlci5vbkJlZm9yZVNob3dDb25zZW50PSExO2VtYWlsSGFuZGxlci5vbkFmdGVyQ29uc2VudD0hMX07ZW1haWxIYW5kbGVyLm9uRHVwbGljYXRlU2VuZD1mdW5jdGlvbigpe2VtYWlsSGFuZGxlci5yZXNldENhbGxiYWNrcygpfTtlbWFpbEhhbmRsZXIuY2FsbGJhY2s9ZnVuY3Rpb24obil7dmFyIHA9ITE7YS5zaG93RW1haWxDb25maXJtYXRpb24mJihwPWdldE1haWxTZW50SGFuZGxlcigiXyIrYS5uYW1lKSxwLnRpbWVvdXRDYWxsYmFjaz1mdW5jdGlvbigpe2UucmVzZXQoKX0pOwppZihuKXYoInBvcHVwLmxlYWRfc2VudCIpLCJmdW5jdGlvbiI9PXR5cGVvZiBvcmlnaW5hbENhbGxiYWNrJiZvcmlnaW5hbENhbGxiYWNrLmNhbGwoKSwib25TdWJtaXQiPT1hLmNvb2tpZUNyZWF0ZSYmQ29va2llcy5zZXQoYS5jb29raWVOYW1lLCIxIixhLmNvb2tpZUR1cmF0aW9uLCIvIiksYS5zdWJtaXRGbGFnJiZDb29raWVzLnNldCgicG9wdXBGb3JtRmlsbGVkIiwiMSIsMSwiLyIpLGEuY2xvc2VPblN1Ym1pdCYmdCgiQ09OU0VOVCIpLHA\/cC5zaG93U3VjY2VzcygpOjA8JChgZm9ybSNmb3JtJHthLm5hbWV9X2NvbmZpcm1gKS5sZW5ndGgmJiQoYGZvcm0jZm9ybSR7YS5uYW1lfV9jb25maXJtYCkudHJpZ2dlcigic3VibWl0Iik7ZWxzZXtwfHwocD1nZXRNYWlsU2VudEhhbmRsZXIoKSk7dHJ5e3Auc2hvd0ZhaWwoKX1jYXRjaCh1KXt9fXkobik7dygpO3NldFRpbWVvdXQoZW1haWxIYW5kbGVyLnJlc2V0Q2FsbGJhY2tzKCksMUUzKTtuJiYobj14KHdpbmRvdy5sb2NhdGlvbi5ocmVmKSwKQ29va2llcy5zZXQoYS5sZWFkSWQrbiwiMSIsMSwiLyIpKX07YS5zdWJtaXR0ZWQ9ITA7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGEub25CZWZvcmVTZW5kTWFpbCYmMD09YS5vbkJlZm9yZVNlbmRNYWlsLmNhbGwoKSlyZXR1cm4hMTtsZXQgbT17fTsiZnVuY3Rpb24iPT10eXBlb2YgYS5vbkFERiYmKG09YS5vbkFERi5jYWxsKCkpOyJtYWtlIG1vZGVsIHllYXIgc3RvY2tOdW1iZXIgdHJpbSB2aW4gcHJpY2UgY2FyaWQiLnNwbGl0KCIgIikuZm9yRWFjaChuPT57ZW1haWxIYW5kbGVyW25dPW1bbl18fGVtYWlsSGFuZGxlcltuXX0pO2EucHVyY2hhc2VJbnRlbnRQb3B1cHx8ZW1haWxIYW5kbGVyLnNlbmRNYWlsKGEuYnlwYXNzQ29uc2VudCk7cmV0dXJuITB9LHc9KCk9PntrPXt1c2VyRmlyc3ROYW1lOiIiLHVzZXJMYXN0TmFtZToiIix1c2VyRW1haWw6IiIsdXNlclBob25lOiIifTtoPSExfSxCPWZ1bmN0aW9uKCl7cmV0dXJuICRqc2NvbXAuYXN5bmNFeGVjdXRlUHJvbWlzZUdlbmVyYXRvckZ1bmN0aW9uKGZ1bmN0aW9uKigpe2lmKGEuc2tpcFZhbGlkYXRpb24pcmV0dXJuITA7CmNvbnN0IGQ9bmV3IFByaXN0aW5lKGUse2NsYXNzVG86ImZvcm0tbGFiZWwiLGVycm9yQ2xhc3M6ImludmFsaWQifSwhMSk7bGV0IGY9ZS5xdWVyeVNlbGVjdG9yKCdbbmFtZT0icGhvbmVudW0iXScpLGc9ITAsbD0hMDtpZihmLnJlcXVpcmVkfHxmLnZhbHVlKWc9bnVsbCxnPXlpZWxkIEkoZi52YWx1ZSk7bnVsbD09PWc\/KGQuYWRkVmFsaWRhdG9yKGYsZnVuY3Rpb24obSl7bT1tLnJlcGxhY2UoL1teMC05XSsvZ2ksIiIpOyIxIj09bVswXSYmKG09bS5zdWJzdHJpbmcoMSkpO209cGFyc2VJbnQobS5zdWJzdHJpbmcoMCwzKSk7cmV0dXJuIGc9WzQzOCw1MTQsMjYzLDQ1MCw1NzksODE5LDI0OSw3MDUsMjI2LDUxOSwyODksMzY1LDkwNSw0MTYsNDM3LDY0NywzNDMsNjEzLDcwOSw4NzMsNDE4LDU4MSw1MDYsOTAyXS5pbmNsdWRlcyhtKX0sIkVudGVyIGEgdmFsaWQgcGhvbmUgbnVtYmVyIiw1LCExKSxsPWQudmFsaWRhdGUoKSk6KGw9ZC52YWxpZGF0ZSgpJiZnLGYucGFyZW50RWxlbWVudC5jbGFzc0xpc3QudG9nZ2xlKCJpbnZhbGlkIiwKIWcpKTtmLnJlcXVpcmVkJiYhZyYmInVuZGVmaW5lZCIhPXR5cGVvZiBlbWFpbEhhbmRsZXImJihlbWFpbEhhbmRsZXIucGhvbmVWYWxpZGF0aW9uQXR0ZW1wdHMrKyxlbWFpbEhhbmRsZXIucGhvbmVNYW5kYXRvcnk9ITApO3JldHVybiBsfSl9LEk9ZD0+JGpzY29tcC5hc3luY0V4ZWN1dGVQcm9taXNlR2VuZXJhdG9yRnVuY3Rpb24oZnVuY3Rpb24qKCl7bGV0IGY9bnVsbDtkPWQucmVwbGFjZSgvW14wLTldKy9naSwiIik7eWllbGQgYXhpb3MuZ2V0KCIvcHJveHlfcmQyYy9zaXRlcy9zdmMvdmFsaWRhdGVQaG9uZU51bWJlci5waHAiLHt0aW1lb3V0OjJFMyxkYXRhVHlwZToianNvbiIscGFyYW1zOntwaG9uZTpkfSxyZXNwb25zZVR5cGU6Impzb24ifSkudGhlbihmdW5jdGlvbihnKXsidW5kZWZpbmVkIiE9PXR5cGVvZiBnLmRhdGEuaXNPayYmKGY9Zy5kYXRhLnBob25lTnVtYmVySXNWYWxpZCl9KS5jYXRjaChmdW5jdGlvbihnKXt9KTtyZXR1cm4gZn0pLEY9KCk9Pntjb25zdCBkPQpkb2N1bWVudC5mb3Jtcy5lbWFpbG1zZ2ZybXx8ITE7aWYoIWQpcmV0dXJuITE7ZC5xdWVyeVNlbGVjdG9yKCdbbmFtZT0ibGFiZWwiJykudmFsdWU9YCR7YS50eXBlfSAoJHtrLmNvbmRpdGlvbn0pYDtkLnF1ZXJ5U2VsZWN0b3IoJ1tuYW1lPSJzZWN0aW9uIicpLnZhbHVlPWsuY29uZGl0aW9ufSx4PWQ9PlsuLi5kXS5yZWR1Y2UoKGYsZyk9Pk1hdGguaW11bCgzMSxmKStnLmNoYXJDb2RlQXQoMCl8MCwwKSxIPWZ1bmN0aW9uKCl7bGV0IGQ9cixmPXtuYW1lOlsiTU5BTUUiXSxwaG9uZW51bTpbIk1QSE9ORSIsIlBIT05FIl0sZW1haWw6WyJNTUFJTCJdfTtPYmplY3Qua2V5cyhrKS5mb3JFYWNoKGc9Pnt2YXIgbD1uZXcgUmVnRXhwKCJ7XFwkIitnLnRvVXBwZXJDYXNlKCkrIn0iLCJnIik7ZD1kLnJlcGxhY2UobCxrW2ddKTtmW2ddJiYobD1uZXcgUmVnRXhwKCJ7XFwkKCIrZltnXS5qb2luKCJ8IikrIil9IiwiZyIpLGQ9ZC5yZXBsYWNlKGwsa1tnXSkpfSk7cmV0dXJuIGR9LHY9ZnVuY3Rpb24oZCl7dmFyIGY9CmEudHlwZTtpZighZClyZXR1cm4hMTtpZigicG9wdXAubGVhZF9zZW50Ij09ZCl7dmFyIGc9ImNsaWNrIi5yZXBsYWNlKC8oXlthLXpdezF9KS9nLGZ1bmN0aW9uKG0pe3JldHVybiBtLnRvVXBwZXJDYXNlKCl9KSxsPWQyY21lZGlhLnBhZ2VEZXBhcnRtZW50KCk7Z2FUcmFjaygiYy5fdHJhY2tFdmVudCIsIlBvcHVwLWxlYWRzIixnLGwsMSl9InVuZGVmaW5lZCIhPXR5cGVvZiBhY3RpdmVVc2VyUHJvZmlsZU1uZyYmInVuZGVmaW5lZCIhPXR5cGVvZiBhY3RpdmVVc2VyUHJvZmlsZU1uZy5sb2dQYWdlVmlld0V2ZW50PygidW5kZWZpbmVkIiE9PXR5cGVvZiBkZWJ1ZyYmZGVidWcoIkxvZyBFdmVudCIsZCxmLHNlbGYpLGFjdGl2ZVVzZXJQcm9maWxlTW5nLmxvZ1BhZ2VWaWV3RXZlbnQoZCxmKSk6InVuZGVmaW5lZCIhPT10eXBlb2YgZGVidWcmJmRlYnVnKCIhVU5MT0dHRUQgRVZFTlQhIixkLGYpfSx0PSgpPT57YS5vbkJlZm9yZUNsb3NlKGEpO3coKTtNb2RhbHNbY10mJk1vZGFsc1tjXS5jbG9zZSgpfSwKeT1kPT57YS5vbkFmdGVyU3VibWl0KGEsZCk7YS5jbG9zZU9uU3VibWl0JiZkJiZ0KCk7ZCYmZS5yZXNldCgpfSxHPWQ9PntsZXQgZj0wO2lmKDA9PWQubGVuZ3RoKXJldHVybiBmO2ZvcihsZXQgZz0wLGw9ZC5sZW5ndGg7ZzxsO2crKyl7bGV0IG09ZC5jaGFyQ29kZUF0KGcpO2Y9KGY8PDUpLWYrbTtmfD0wfXJldHVybiBNYXRoLmFicyhmKX07KCgpPT57JChlKS50cmlnZ2VyKCJwb3B1cGl6ZXIub25PcGVuIiwkKGUpKTt3KCk7QSgpO2Uub25zdWJtaXQ9ZD0+e2QucHJldmVudERlZmF1bHQoKTtFKCl9O2Eub25CZWZvcmVPcGVuKGEpfSkoKTtyZXR1cm57bGVhZElkOmMsbGVhZE5vZGU6Yix0cmlnZ2VyOnosZGlzcGxheTooKT0+e2EuZGlzcGxheT9hLmRpc3BsYXkoYSk6KGEuY29udGVudFNyYz1gbGVhZCR7Y31gLE1vZGFsc1tjXXx8KE1vZGFsc1tjXT1uZXcgTW9kYWwoYyxhKSksTW9kYWxzW2NdLmRpc3BsYXkoKSl9LGNsb3NlOnR9fSxMZWFkSGFuZGxlcj1mdW5jdGlvbigpe2NvbnN0IGI9CntvbkJlZm9yZU9wZW46KCk9Pnt9LG9uQmVmb3JlVmFsaWRhdGlvbjooKT0+e30sb25CZWZvcmVTdWJtaXQ6KCk9Pnt9LG9uQWZ0ZXJTdWJtaXQ6KCk9Pnt9LG9uQmVmb3JlQ2FuY2VsOigpPT57fSxvbkJlZm9yZUNsb3NlOigpPT57fSxvbkNsb3NlOigpPT57fSxmb3JtOntlbWFpbGlkOm51bGwsb2ZmZXJ0eXBlOm51bGwsbmFtZTpudWxsLHNlbmRUbzpudWxsLHNlbmRUb0FERjpudWxsLE9LQnV0dG9uQ2xhc3M6InN1Ym1pdEJ0biIsQ2FuY2VsQnV0dG9uQ2xhc3M6ImNhbmNlbEJ0biIsc2hvd0VtYWlsQ29uZmlybWF0aW9uOiExLGZyb21BQTohMX0sZ2V0SWRTdWZmaXg6YT0+TWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKkRhdGUubm93KCkpLG1vZGU6InN0YXRpYyIsdHJpZ2dlcjoiYXV0byIsZGVsYXk6ITEsZGlzcGxheTohMSxzdWJtaXR0ZWQ6ITEsY2xvc2VPblN1Ym1pdDohMCxzdWJtaXRGbGFnOiExLGJ5cGFzc0NvbnNlbnQ6ITEsc2hvd0VtYWlsQ29uZmlybWF0aW9uOiEwLHB1cmNoYXNlSW50ZW50UG9wdXA6ITF9Owppbml0PSgpPT57InVuZGVmaW5lZCIhPT10eXBlb2Ygd2luZG93LkFic3RyYWN0VXNlZFNycE9iamVjdCYmKG5ldyBBYnN0cmFjdFVzZWRTcnBPYmplY3Qoe25hbWU6IlZpZXdEaXNjb3ZlckJ0bkhhbmRsZXIifSkpLmFkZFVzZWRTcnBFdmVudE9ic2VydmVyKCJjb250ZW50IixhZGRMZWFkRXZlbnRzKS5pbml0VXNlZFNycE9ic2VydmVyKCk7YWRkTGVhZEV2ZW50cygpfTthZGRMZWFkRXZlbnRzPSgpPT57ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiW2RhdGEtbGVhZC10cmlnZ2VyXSIpLmZvckVhY2goYT0+e3RoaXMuaW5pdExlYWRUcmlnZ2VyKGEpfSl9O3RoaXMuaW5pdExlYWRUcmlnZ2VyPWE9PnthLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIixjPT57Yy5zdG9wUHJvcGFnYXRpb24oKTtjPWEuZGF0YXNldC5sZWFkVHJpZ2dlcjtsZXQgZT1hLmRhdGFzZXQubGVhZGlkfHwhMTtMZWFkQ29uZmlnc1tjXS50cmlnZ2VyPWE7Yz10aGlzLmdldExlYWQoYyxlKTtjLmRpc3BsYXkoKTsKYS5kYXRhc2V0LmxlYWRpZD1jLmxlYWRJZH0pfTt0aGlzLmdldExlYWQ9KGEsYyk9PntpZighKGM9TGVhZHNbY3x8YV0pKXt7Yz1hO2xldCBlPU9iamVjdC5hc3NpZ24oe30sYik7T2JqZWN0LmFzc2lnbihlLExlYWRDb25maWdzW2FdKTtjb25zdCBoPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGBsZWFkJHthfWApO2g\/KGE9aCwic3RhdGljIiE9ZS5tb2RlJiYoYz1gJHtlLm5hbWV9XyR7ZS5nZXRJZFN1ZmZpeChlKX1gLGE9aC5jbG9uZU5vZGUoITApLGEuc2V0QXR0cmlidXRlKCJpZCIsImxlYWQiK2MpLGEucXVlcnlTZWxlY3RvcigiZm9ybSIpLnNldEF0dHJpYnV0ZSgiaWQiLCJmb3JtIitjKSxkb2N1bWVudC5ib2R5LmFwcGVuZChhKSksZS5sZWFkSWQ9YyxlLmxlYWROb2RlPWEsTGVhZHNbY109bmV3IExlYWQoZSksYz1MZWFkc1tjXSk6Yz0hMX19cmV0dXJuIGN9O3JldHVybntpbml0LGluaXRMZWFkVHJpZ2dlcixnZXRMZWFkfX07dmFyIExlYWRzPUxlYWRzfHx7fTtkb2NSZWFkeUFyci5wdXNoKExlYWRIYW5kbGVyKCkuaW5pdCk7Ci8qKiAvbS9qcy92YW5pbGxhanMvYXhpb3MubWluLmpzICoqLwohZnVuY3Rpb24oZSx0KXsib2JqZWN0Ij09dHlwZW9mIGV4cG9ydHMmJiJvYmplY3QiPT10eXBlb2YgbW9kdWxlP21vZHVsZS5leHBvcnRzPXQoKToiZnVuY3Rpb24iPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZShbXSx0KToib2JqZWN0Ij09dHlwZW9mIGV4cG9ydHM\/ZXhwb3J0cy5heGlvcz10KCk6ZS5heGlvcz10KCl9KHRoaXMsKGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciB0PXt9O2Z1bmN0aW9uIG4ocil7aWYodFtyXSlyZXR1cm4gdFtyXS5leHBvcnRzO3ZhciBvPXRbcl09e2k6cixsOiExLGV4cG9ydHM6e319O3JldHVybiBlW3JdLmNhbGwoby5leHBvcnRzLG8sby5leHBvcnRzLG4pLG8ubD0hMCxvLmV4cG9ydHN9cmV0dXJuIG4ubT1lLG4uYz10LG4uZD1mdW5jdGlvbihlLHQscil7bi5vKGUsdCl8fE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse2VudW1lcmFibGU6ITAsZ2V0OnJ9KX0sbi5yPWZ1bmN0aW9uKGUpeyJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZTeW1ib2wudG9TdHJpbmdUYWcmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFN5bWJvbC50b1N0cmluZ1RhZyx7dmFsdWU6Ik1vZHVsZSJ9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSl9LG4udD1mdW5jdGlvbihlLHQpe2lmKDEmdCYmKGU9bihlKSksOCZ0KXJldHVybiBlO2lmKDQmdCYmIm9iamVjdCI9PXR5cGVvZiBlJiZlJiZlLl9fZXNNb2R1bGUpcmV0dXJuIGU7dmFyIHI9T2JqZWN0LmNyZWF0ZShudWxsKTtpZihuLnIociksT2JqZWN0LmRlZmluZVByb3BlcnR5KHIsImRlZmF1bHQiLHtlbnVtZXJhYmxlOiEwLHZhbHVlOmV9KSwyJnQmJiJzdHJpbmciIT10eXBlb2YgZSlmb3IodmFyIG8gaW4gZSluLmQocixvLGZ1bmN0aW9uKHQpe3JldHVybiBlW3RdfS5iaW5kKG51bGwsbykpO3JldHVybiByfSxuLm49ZnVuY3Rpb24oZSl7dmFyIHQ9ZSYmZS5fX2VzTW9kdWxlP2Z1bmN0aW9uKCl7cmV0dXJuIGUuZGVmYXVsdH06ZnVuY3Rpb24oKXtyZXR1cm4gZX07cmV0dXJuIG4uZCh0LCJhIix0KSx0fSxuLm89ZnVuY3Rpb24oZSx0KXtyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsdCl9LG4ucD0iIixuKG4ucz0xMSl9KFtmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oMyksbz1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nO2Z1bmN0aW9uIGkoZSl7cmV0dXJuIltvYmplY3QgQXJyYXldIj09PW8uY2FsbChlKX1mdW5jdGlvbiBzKGUpe3JldHVybiB2b2lkIDA9PT1lfWZ1bmN0aW9uIGEoZSl7cmV0dXJuIG51bGwhPT1lJiYib2JqZWN0Ij09dHlwZW9mIGV9ZnVuY3Rpb24gdShlKXtpZigiW29iamVjdCBPYmplY3RdIiE9PW8uY2FsbChlKSlyZXR1cm4hMTt2YXIgdD1PYmplY3QuZ2V0UHJvdG90eXBlT2YoZSk7cmV0dXJuIG51bGw9PT10fHx0PT09T2JqZWN0LnByb3RvdHlwZX1mdW5jdGlvbiBjKGUpe3JldHVybiJbb2JqZWN0IEZ1bmN0aW9uXSI9PT1vLmNhbGwoZSl9ZnVuY3Rpb24gZihlLHQpe2lmKG51bGwhPWUpaWYoIm9iamVjdCIhPXR5cGVvZiBlJiYoZT1bZV0pLGkoZSkpZm9yKHZhciBuPTAscj1lLmxlbmd0aDtuPHI7bisrKXQuY2FsbChudWxsLGVbbl0sbixlKTtlbHNlIGZvcih2YXIgbyBpbiBlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLG8pJiZ0LmNhbGwobnVsbCxlW29dLG8sZSl9ZS5leHBvcnRzPXtpc0FycmF5OmksaXNBcnJheUJ1ZmZlcjpmdW5jdGlvbihlKXtyZXR1cm4iW29iamVjdCBBcnJheUJ1ZmZlcl0iPT09by5jYWxsKGUpfSxpc0J1ZmZlcjpmdW5jdGlvbihlKXtyZXR1cm4gbnVsbCE9PWUmJiFzKGUpJiZudWxsIT09ZS5jb25zdHJ1Y3RvciYmIXMoZS5jb25zdHJ1Y3RvcikmJiJmdW5jdGlvbiI9PXR5cGVvZiBlLmNvbnN0cnVjdG9yLmlzQnVmZmVyJiZlLmNvbnN0cnVjdG9yLmlzQnVmZmVyKGUpfSxpc0Zvcm1EYXRhOmZ1bmN0aW9uKGUpe3JldHVybiJ1bmRlZmluZWQiIT10eXBlb2YgRm9ybURhdGEmJmUgaW5zdGFuY2VvZiBGb3JtRGF0YX0saXNBcnJheUJ1ZmZlclZpZXc6ZnVuY3Rpb24oZSl7cmV0dXJuInVuZGVmaW5lZCIhPXR5cGVvZiBBcnJheUJ1ZmZlciYmQXJyYXlCdWZmZXIuaXNWaWV3P0FycmF5QnVmZmVyLmlzVmlldyhlKTplJiZlLmJ1ZmZlciYmZS5idWZmZXIgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcn0saXNTdHJpbmc6ZnVuY3Rpb24oZSl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBlfSxpc051bWJlcjpmdW5jdGlvbihlKXtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIGV9LGlzT2JqZWN0OmEsaXNQbGFpbk9iamVjdDp1LGlzVW5kZWZpbmVkOnMsaXNEYXRlOmZ1bmN0aW9uKGUpe3JldHVybiJbb2JqZWN0IERhdGVdIj09PW8uY2FsbChlKX0saXNGaWxlOmZ1bmN0aW9uKGUpe3JldHVybiJbb2JqZWN0IEZpbGVdIj09PW8uY2FsbChlKX0saXNCbG9iOmZ1bmN0aW9uKGUpe3JldHVybiJbb2JqZWN0IEJsb2JdIj09PW8uY2FsbChlKX0saXNGdW5jdGlvbjpjLGlzU3RyZWFtOmZ1bmN0aW9uKGUpe3JldHVybiBhKGUpJiZjKGUucGlwZSl9LGlzVVJMU2VhcmNoUGFyYW1zOmZ1bmN0aW9uKGUpe3JldHVybiJ1bmRlZmluZWQiIT10eXBlb2YgVVJMU2VhcmNoUGFyYW1zJiZlIGluc3RhbmNlb2YgVVJMU2VhcmNoUGFyYW1zfSxpc1N0YW5kYXJkQnJvd3NlckVudjpmdW5jdGlvbigpe3JldHVybigidW5kZWZpbmVkIj09dHlwZW9mIG5hdmlnYXRvcnx8IlJlYWN0TmF0aXZlIiE9PW5hdmlnYXRvci5wcm9kdWN0JiYiTmF0aXZlU2NyaXB0IiE9PW5hdmlnYXRvci5wcm9kdWN0JiYiTlMiIT09bmF2aWdhdG9yLnByb2R1Y3QpJiYoInVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3cmJiJ1bmRlZmluZWQiIT10eXBlb2YgZG9jdW1lbnQpfSxmb3JFYWNoOmYsbWVyZ2U6ZnVuY3Rpb24gZSgpe3ZhciB0PXt9O2Z1bmN0aW9uIG4obixyKXt1KHRbcl0pJiZ1KG4pP3Rbcl09ZSh0W3JdLG4pOnUobik\/dFtyXT1lKHt9LG4pOmkobik\/dFtyXT1uLnNsaWNlKCk6dFtyXT1ufWZvcih2YXIgcj0wLG89YXJndW1lbnRzLmxlbmd0aDtyPG87cisrKWYoYXJndW1lbnRzW3JdLG4pO3JldHVybiB0fSxleHRlbmQ6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBmKHQsKGZ1bmN0aW9uKHQsbyl7ZVtvXT1uJiYiZnVuY3Rpb24iPT10eXBlb2YgdD9yKHQsbik6dH0pKSxlfSx0cmltOmZ1bmN0aW9uKGUpe3JldHVybiBlLnRyaW0\/ZS50cmltKCk6ZS5yZXBsYWNlKC9eXHMrfFxzKyQvZywiIil9LHN0cmlwQk9NOmZ1bmN0aW9uKGUpe3JldHVybiA2NTI3OT09PWUuY2hhckNvZGVBdCgwKSYmKGU9ZS5zbGljZSgxKSksZX19fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oMCksbz1uKDE3KSxpPW4oNSkscz17IkNvbnRlbnQtVHlwZSI6ImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCJ9O2Z1bmN0aW9uIGEoZSx0KXshci5pc1VuZGVmaW5lZChlKSYmci5pc1VuZGVmaW5lZChlWyJDb250ZW50LVR5cGUiXSkmJihlWyJDb250ZW50LVR5cGUiXT10KX12YXIgdSxjPXt0cmFuc2l0aW9uYWw6e3NpbGVudEpTT05QYXJzaW5nOiEwLGZvcmNlZEpTT05QYXJzaW5nOiEwLGNsYXJpZnlUaW1lb3V0RXJyb3I6ITF9LGFkYXB0ZXI6KCgidW5kZWZpbmVkIiE9dHlwZW9mIFhNTEh0dHBSZXF1ZXN0fHwidW5kZWZpbmVkIiE9dHlwZW9mIHByb2Nlc3MmJiJbb2JqZWN0IHByb2Nlc3NdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChwcm9jZXNzKSkmJih1PW4oNikpLHUpLHRyYW5zZm9ybVJlcXVlc3Q6W2Z1bmN0aW9uKGUsdCl7cmV0dXJuIG8odCwiQWNjZXB0Iiksbyh0LCJDb250ZW50LVR5cGUiKSxyLmlzRm9ybURhdGEoZSl8fHIuaXNBcnJheUJ1ZmZlcihlKXx8ci5pc0J1ZmZlcihlKXx8ci5pc1N0cmVhbShlKXx8ci5pc0ZpbGUoZSl8fHIuaXNCbG9iKGUpP2U6ci5pc0FycmF5QnVmZmVyVmlldyhlKT9lLmJ1ZmZlcjpyLmlzVVJMU2VhcmNoUGFyYW1zKGUpPyhhKHQsImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDtjaGFyc2V0PXV0Zi04IiksZS50b1N0cmluZygpKTpyLmlzT2JqZWN0KGUpfHx0JiYiYXBwbGljYXRpb24vanNvbiI9PT10WyJDb250ZW50LVR5cGUiXT8oYSh0LCJhcHBsaWNhdGlvbi9qc29uIiksZnVuY3Rpb24oZSx0LG4pe2lmKHIuaXNTdHJpbmcoZSkpdHJ5e3JldHVybih0fHxKU09OLnBhcnNlKShlKSxyLnRyaW0oZSl9Y2F0Y2goZSl7aWYoIlN5bnRheEVycm9yIiE9PWUubmFtZSl0aHJvdyBlfXJldHVybihufHxKU09OLnN0cmluZ2lmeSkoZSl9KGUpKTplfV0sdHJhbnNmb3JtUmVzcG9uc2U6W2Z1bmN0aW9uKGUpe3ZhciB0PXRoaXMudHJhbnNpdGlvbmFsfHxjLnRyYW5zaXRpb25hbCxuPXQmJnQuc2lsZW50SlNPTlBhcnNpbmcsbz10JiZ0LmZvcmNlZEpTT05QYXJzaW5nLHM9IW4mJiJqc29uIj09PXRoaXMucmVzcG9uc2VUeXBlO2lmKHN8fG8mJnIuaXNTdHJpbmcoZSkmJmUubGVuZ3RoKXRyeXtyZXR1cm4gSlNPTi5wYXJzZShlKX1jYXRjaChlKXtpZihzKXtpZigiU3ludGF4RXJyb3IiPT09ZS5uYW1lKXRocm93IGkoZSx0aGlzLCJFX0pTT05fUEFSU0UiKTt0aHJvdyBlfX1yZXR1cm4gZX1dLHRpbWVvdXQ6MCx4c3JmQ29va2llTmFtZToiWFNSRi1UT0tFTiIseHNyZkhlYWRlck5hbWU6IlgtWFNSRi1UT0tFTiIsbWF4Q29udGVudExlbmd0aDotMSxtYXhCb2R5TGVuZ3RoOi0xLHZhbGlkYXRlU3RhdHVzOmZ1bmN0aW9uKGUpe3JldHVybiBlPj0yMDAmJmU8MzAwfSxoZWFkZXJzOntjb21tb246e0FjY2VwdDoiYXBwbGljYXRpb24vanNvbiwgdGV4dC9wbGFpbiwgKi8qIn19fTtyLmZvckVhY2goWyJkZWxldGUiLCJnZXQiLCJoZWFkIl0sKGZ1bmN0aW9uKGUpe2MuaGVhZGVyc1tlXT17fX0pKSxyLmZvckVhY2goWyJwb3N0IiwicHV0IiwicGF0Y2giXSwoZnVuY3Rpb24oZSl7Yy5oZWFkZXJzW2VdPXIubWVyZ2Uocyl9KSksZS5leHBvcnRzPWN9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXt0aGlzLm1lc3NhZ2U9ZX1yLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiJDYW5jZWwiKyh0aGlzLm1lc3NhZ2U\/IjogIit0aGlzLm1lc3NhZ2U6IiIpfSxyLnByb3RvdHlwZS5fX0NBTkNFTF9fPSEwLGUuZXhwb3J0cz1yfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3JldHVybiBmdW5jdGlvbigpe2Zvcih2YXIgbj1uZXcgQXJyYXkoYXJndW1lbnRzLmxlbmd0aCkscj0wO3I8bi5sZW5ndGg7cisrKW5bcl09YXJndW1lbnRzW3JdO3JldHVybiBlLmFwcGx5KHQsbil9fX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDApO2Z1bmN0aW9uIG8oZSl7cmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudChlKS5yZXBsYWNlKC8lM0EvZ2ksIjoiKS5yZXBsYWNlKC8lMjQvZywiJCIpLnJlcGxhY2UoLyUyQy9naSwiLCIpLnJlcGxhY2UoLyUyMC9nLCIrIikucmVwbGFjZSgvJTVCL2dpLCJbIikucmVwbGFjZSgvJTVEL2dpLCJdIil9ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxuKXtpZighdClyZXR1cm4gZTt2YXIgaTtpZihuKWk9bih0KTtlbHNlIGlmKHIuaXNVUkxTZWFyY2hQYXJhbXModCkpaT10LnRvU3RyaW5nKCk7ZWxzZXt2YXIgcz1bXTtyLmZvckVhY2godCwoZnVuY3Rpb24oZSx0KXtudWxsIT1lJiYoci5pc0FycmF5KGUpP3QrPSJbXSI6ZT1bZV0sci5mb3JFYWNoKGUsKGZ1bmN0aW9uKGUpe3IuaXNEYXRlKGUpP2U9ZS50b0lTT1N0cmluZygpOnIuaXNPYmplY3QoZSkmJihlPUpTT04uc3RyaW5naWZ5KGUpKSxzLnB1c2gobyh0KSsiPSIrbyhlKSl9KSkpfSkpLGk9cy5qb2luKCImIil9aWYoaSl7dmFyIGE9ZS5pbmRleE9mKCIjIik7LTEhPT1hJiYoZT1lLnNsaWNlKDAsYSkpLGUrPSgtMT09PWUuaW5kZXhPZigiPyIpPyI\/IjoiJiIpK2l9cmV0dXJuIGV9fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQsbixyLG8pe3JldHVybiBlLmNvbmZpZz10LG4mJihlLmNvZGU9biksZS5yZXF1ZXN0PXIsZS5yZXNwb25zZT1vLGUuaXNBeGlvc0Vycm9yPSEwLGUudG9KU09OPWZ1bmN0aW9uKCl7cmV0dXJue21lc3NhZ2U6dGhpcy5tZXNzYWdlLG5hbWU6dGhpcy5uYW1lLGRlc2NyaXB0aW9uOnRoaXMuZGVzY3JpcHRpb24sbnVtYmVyOnRoaXMubnVtYmVyLGZpbGVOYW1lOnRoaXMuZmlsZU5hbWUsbGluZU51bWJlcjp0aGlzLmxpbmVOdW1iZXIsY29sdW1uTnVtYmVyOnRoaXMuY29sdW1uTnVtYmVyLHN0YWNrOnRoaXMuc3RhY2ssY29uZmlnOnRoaXMuY29uZmlnLGNvZGU6dGhpcy5jb2RlLHN0YXR1czp0aGlzLnJlc3BvbnNlJiZ0aGlzLnJlc3BvbnNlLnN0YXR1cz90aGlzLnJlc3BvbnNlLnN0YXR1czpudWxsfX0sZX19LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigwKSxvPW4oMTgpLGk9bigxOSkscz1uKDQpLGE9bigyMCksdT1uKDIzKSxjPW4oMjQpLGY9big3KSxsPW4oMSkscD1uKDIpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKHQsbil7dmFyIGQsaD1lLmRhdGEsbT1lLmhlYWRlcnMsdj1lLnJlc3BvbnNlVHlwZTtmdW5jdGlvbiB5KCl7ZS5jYW5jZWxUb2tlbiYmZS5jYW5jZWxUb2tlbi51bnN1YnNjcmliZShkKSxlLnNpZ25hbCYmZS5zaWduYWwucmVtb3ZlRXZlbnRMaXN0ZW5lcigiYWJvcnQiLGQpfXIuaXNGb3JtRGF0YShoKSYmZGVsZXRlIG1bIkNvbnRlbnQtVHlwZSJdO3ZhciBnPW5ldyBYTUxIdHRwUmVxdWVzdDtpZihlLmF1dGgpe3ZhciBiPWUuYXV0aC51c2VybmFtZXx8IiIseD1lLmF1dGgucGFzc3dvcmQ\/dW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KGUuYXV0aC5wYXNzd29yZCkpOiIiO20uQXV0aG9yaXphdGlvbj0iQmFzaWMgIitidG9hKGIrIjoiK3gpfXZhciB3PWEoZS5iYXNlVVJMLGUudXJsKTtmdW5jdGlvbiBFKCl7aWYoZyl7dmFyIHI9ImdldEFsbFJlc3BvbnNlSGVhZGVycyJpbiBnP3UoZy5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKSk6bnVsbCxpPXtkYXRhOnYmJiJ0ZXh0IiE9PXYmJiJqc29uIiE9PXY\/Zy5yZXNwb25zZTpnLnJlc3BvbnNlVGV4dCxzdGF0dXM6Zy5zdGF0dXMsc3RhdHVzVGV4dDpnLnN0YXR1c1RleHQsaGVhZGVyczpyLGNvbmZpZzplLHJlcXVlc3Q6Z307bygoZnVuY3Rpb24oZSl7dChlKSx5KCl9KSwoZnVuY3Rpb24oZSl7bihlKSx5KCl9KSxpKSxnPW51bGx9fWlmKGcub3BlbihlLm1ldGhvZC50b1VwcGVyQ2FzZSgpLHModyxlLnBhcmFtcyxlLnBhcmFtc1NlcmlhbGl6ZXIpLCEwKSxnLnRpbWVvdXQ9ZS50aW1lb3V0LCJvbmxvYWRlbmQiaW4gZz9nLm9ubG9hZGVuZD1FOmcub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKCl7ZyYmND09PWcucmVhZHlTdGF0ZSYmKDAhPT1nLnN0YXR1c3x8Zy5yZXNwb25zZVVSTCYmMD09PWcucmVzcG9uc2VVUkwuaW5kZXhPZigiZmlsZToiKSkmJnNldFRpbWVvdXQoRSl9LGcub25hYm9ydD1mdW5jdGlvbigpe2cmJihuKGYoIlJlcXVlc3QgYWJvcnRlZCIsZSwiRUNPTk5BQk9SVEVEIixnKSksZz1udWxsKX0sZy5vbmVycm9yPWZ1bmN0aW9uKCl7bihmKCJOZXR3b3JrIEVycm9yIixlLG51bGwsZykpLGc9bnVsbH0sZy5vbnRpbWVvdXQ9ZnVuY3Rpb24oKXt2YXIgdD1lLnRpbWVvdXQ\/InRpbWVvdXQgb2YgIitlLnRpbWVvdXQrIm1zIGV4Y2VlZGVkIjoidGltZW91dCBleGNlZWRlZCIscj1lLnRyYW5zaXRpb25hbHx8bC50cmFuc2l0aW9uYWw7ZS50aW1lb3V0RXJyb3JNZXNzYWdlJiYodD1lLnRpbWVvdXRFcnJvck1lc3NhZ2UpLG4oZih0LGUsci5jbGFyaWZ5VGltZW91dEVycm9yPyJFVElNRURPVVQiOiJFQ09OTkFCT1JURUQiLGcpKSxnPW51bGx9LHIuaXNTdGFuZGFyZEJyb3dzZXJFbnYoKSl7dmFyIFM9KGUud2l0aENyZWRlbnRpYWxzfHxjKHcpKSYmZS54c3JmQ29va2llTmFtZT9pLnJlYWQoZS54c3JmQ29va2llTmFtZSk6dm9pZCAwO1MmJihtW2UueHNyZkhlYWRlck5hbWVdPVMpfSJzZXRSZXF1ZXN0SGVhZGVyImluIGcmJnIuZm9yRWFjaChtLChmdW5jdGlvbihlLHQpe3ZvaWQgMD09PWgmJiJjb250ZW50LXR5cGUiPT09dC50b0xvd2VyQ2FzZSgpP2RlbGV0ZSBtW3RdOmcuc2V0UmVxdWVzdEhlYWRlcih0LGUpfSkpLHIuaXNVbmRlZmluZWQoZS53aXRoQ3JlZGVudGlhbHMpfHwoZy53aXRoQ3JlZGVudGlhbHM9ISFlLndpdGhDcmVkZW50aWFscyksdiYmImpzb24iIT09diYmKGcucmVzcG9uc2VUeXBlPWUucmVzcG9uc2VUeXBlKSwiZnVuY3Rpb24iPT10eXBlb2YgZS5vbkRvd25sb2FkUHJvZ3Jlc3MmJmcuYWRkRXZlbnRMaXN0ZW5lcigicHJvZ3Jlc3MiLGUub25Eb3dubG9hZFByb2dyZXNzKSwiZnVuY3Rpb24iPT10eXBlb2YgZS5vblVwbG9hZFByb2dyZXNzJiZnLnVwbG9hZCYmZy51cGxvYWQuYWRkRXZlbnRMaXN0ZW5lcigicHJvZ3Jlc3MiLGUub25VcGxvYWRQcm9ncmVzcyksKGUuY2FuY2VsVG9rZW58fGUuc2lnbmFsKSYmKGQ9ZnVuY3Rpb24oZSl7ZyYmKG4oIWV8fGUmJmUudHlwZT9uZXcgcCgiY2FuY2VsZWQiKTplKSxnLmFib3J0KCksZz1udWxsKX0sZS5jYW5jZWxUb2tlbiYmZS5jYW5jZWxUb2tlbi5zdWJzY3JpYmUoZCksZS5zaWduYWwmJihlLnNpZ25hbC5hYm9ydGVkP2QoKTplLnNpZ25hbC5hZGRFdmVudExpc3RlbmVyKCJhYm9ydCIsZCkpKSxofHwoaD1udWxsKSxnLnNlbmQoaCl9KSl9fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oNSk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxuLG8saSl7dmFyIHM9bmV3IEVycm9yKGUpO3JldHVybiByKHMsdCxuLG8saSl9fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4hKCFlfHwhZS5fX0NBTkNFTF9fKX19LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigwKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXt0PXR8fHt9O3ZhciBuPXt9O2Z1bmN0aW9uIG8oZSx0KXtyZXR1cm4gci5pc1BsYWluT2JqZWN0KGUpJiZyLmlzUGxhaW5PYmplY3QodCk\/ci5tZXJnZShlLHQpOnIuaXNQbGFpbk9iamVjdCh0KT9yLm1lcmdlKHt9LHQpOnIuaXNBcnJheSh0KT90LnNsaWNlKCk6dH1mdW5jdGlvbiBpKG4pe3JldHVybiByLmlzVW5kZWZpbmVkKHRbbl0pP3IuaXNVbmRlZmluZWQoZVtuXSk\/dm9pZCAwOm8odm9pZCAwLGVbbl0pOm8oZVtuXSx0W25dKX1mdW5jdGlvbiBzKGUpe2lmKCFyLmlzVW5kZWZpbmVkKHRbZV0pKXJldHVybiBvKHZvaWQgMCx0W2VdKX1mdW5jdGlvbiBhKG4pe3JldHVybiByLmlzVW5kZWZpbmVkKHRbbl0pP3IuaXNVbmRlZmluZWQoZVtuXSk\/dm9pZCAwOm8odm9pZCAwLGVbbl0pOm8odm9pZCAwLHRbbl0pfWZ1bmN0aW9uIHUobil7cmV0dXJuIG4gaW4gdD9vKGVbbl0sdFtuXSk6biBpbiBlP28odm9pZCAwLGVbbl0pOnZvaWQgMH12YXIgYz17dXJsOnMsbWV0aG9kOnMsZGF0YTpzLGJhc2VVUkw6YSx0cmFuc2Zvcm1SZXF1ZXN0OmEsdHJhbnNmb3JtUmVzcG9uc2U6YSxwYXJhbXNTZXJpYWxpemVyOmEsdGltZW91dDphLHRpbWVvdXRNZXNzYWdlOmEsd2l0aENyZWRlbnRpYWxzOmEsYWRhcHRlcjphLHJlc3BvbnNlVHlwZTphLHhzcmZDb29raWVOYW1lOmEseHNyZkhlYWRlck5hbWU6YSxvblVwbG9hZFByb2dyZXNzOmEsb25Eb3dubG9hZFByb2dyZXNzOmEsZGVjb21wcmVzczphLG1heENvbnRlbnRMZW5ndGg6YSxtYXhCb2R5TGVuZ3RoOmEsdHJhbnNwb3J0OmEsaHR0cEFnZW50OmEsaHR0cHNBZ2VudDphLGNhbmNlbFRva2VuOmEsc29ja2V0UGF0aDphLHJlc3BvbnNlRW5jb2Rpbmc6YSx2YWxpZGF0ZVN0YXR1czp1fTtyZXR1cm4gci5mb3JFYWNoKE9iamVjdC5rZXlzKGUpLmNvbmNhdChPYmplY3Qua2V5cyh0KSksKGZ1bmN0aW9uKGUpe3ZhciB0PWNbZV18fGksbz10KGUpO3IuaXNVbmRlZmluZWQobykmJnQhPT11fHwobltlXT1vKX0pKSxufX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9e3ZlcnNpb246IjAuMjQuMCJ9fSxmdW5jdGlvbihlLHQsbil7ZS5leHBvcnRzPW4oMTIpfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oMCksbz1uKDMpLGk9bigxMykscz1uKDkpO3ZhciBhPWZ1bmN0aW9uIGUodCl7dmFyIG49bmV3IGkodCksYT1vKGkucHJvdG90eXBlLnJlcXVlc3Qsbik7cmV0dXJuIHIuZXh0ZW5kKGEsaS5wcm90b3R5cGUsbiksci5leHRlbmQoYSxuKSxhLmNyZWF0ZT1mdW5jdGlvbihuKXtyZXR1cm4gZShzKHQsbikpfSxhfShuKDEpKTthLkF4aW9zPWksYS5DYW5jZWw9bigyKSxhLkNhbmNlbFRva2VuPW4oMjYpLGEuaXNDYW5jZWw9big4KSxhLlZFUlNJT049bigxMCkudmVyc2lvbixhLmFsbD1mdW5jdGlvbihlKXtyZXR1cm4gUHJvbWlzZS5hbGwoZSl9LGEuc3ByZWFkPW4oMjcpLGEuaXNBeGlvc0Vycm9yPW4oMjgpLGUuZXhwb3J0cz1hLGUuZXhwb3J0cy5kZWZhdWx0PWF9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigwKSxvPW4oNCksaT1uKDE0KSxzPW4oMTUpLGE9big5KSx1PW4oMjUpLGM9dS52YWxpZGF0b3JzO2Z1bmN0aW9uIGYoZSl7dGhpcy5kZWZhdWx0cz1lLHRoaXMuaW50ZXJjZXB0b3JzPXtyZXF1ZXN0Om5ldyBpLHJlc3BvbnNlOm5ldyBpfX1mLnByb3RvdHlwZS5yZXF1ZXN0PWZ1bmN0aW9uKGUpeyJzdHJpbmciPT10eXBlb2YgZT8oZT1hcmd1bWVudHNbMV18fHt9KS51cmw9YXJndW1lbnRzWzBdOmU9ZXx8e30sKGU9YSh0aGlzLmRlZmF1bHRzLGUpKS5tZXRob2Q\/ZS5tZXRob2Q9ZS5tZXRob2QudG9Mb3dlckNhc2UoKTp0aGlzLmRlZmF1bHRzLm1ldGhvZD9lLm1ldGhvZD10aGlzLmRlZmF1bHRzLm1ldGhvZC50b0xvd2VyQ2FzZSgpOmUubWV0aG9kPSJnZXQiO3ZhciB0PWUudHJhbnNpdGlvbmFsO3ZvaWQgMCE9PXQmJnUuYXNzZXJ0T3B0aW9ucyh0LHtzaWxlbnRKU09OUGFyc2luZzpjLnRyYW5zaXRpb25hbChjLmJvb2xlYW4pLGZvcmNlZEpTT05QYXJzaW5nOmMudHJhbnNpdGlvbmFsKGMuYm9vbGVhbiksY2xhcmlmeVRpbWVvdXRFcnJvcjpjLnRyYW5zaXRpb25hbChjLmJvb2xlYW4pfSwhMSk7dmFyIG49W10scj0hMDt0aGlzLmludGVyY2VwdG9ycy5yZXF1ZXN0LmZvckVhY2goKGZ1bmN0aW9uKHQpeyJmdW5jdGlvbiI9PXR5cGVvZiB0LnJ1bldoZW4mJiExPT09dC5ydW5XaGVuKGUpfHwocj1yJiZ0LnN5bmNocm9ub3VzLG4udW5zaGlmdCh0LmZ1bGZpbGxlZCx0LnJlamVjdGVkKSl9KSk7dmFyIG8saT1bXTtpZih0aGlzLmludGVyY2VwdG9ycy5yZXNwb25zZS5mb3JFYWNoKChmdW5jdGlvbihlKXtpLnB1c2goZS5mdWxmaWxsZWQsZS5yZWplY3RlZCl9KSksIXIpe3ZhciBmPVtzLHZvaWQgMF07Zm9yKEFycmF5LnByb3RvdHlwZS51bnNoaWZ0LmFwcGx5KGYsbiksZj1mLmNvbmNhdChpKSxvPVByb21pc2UucmVzb2x2ZShlKTtmLmxlbmd0aDspbz1vLnRoZW4oZi5zaGlmdCgpLGYuc2hpZnQoKSk7cmV0dXJuIG99Zm9yKHZhciBsPWU7bi5sZW5ndGg7KXt2YXIgcD1uLnNoaWZ0KCksZD1uLnNoaWZ0KCk7dHJ5e2w9cChsKX1jYXRjaChlKXtkKGUpO2JyZWFrfX10cnl7bz1zKGwpfWNhdGNoKGUpe3JldHVybiBQcm9taXNlLnJlamVjdChlKX1mb3IoO2kubGVuZ3RoOylvPW8udGhlbihpLnNoaWZ0KCksaS5zaGlmdCgpKTtyZXR1cm4gb30sZi5wcm90b3R5cGUuZ2V0VXJpPWZ1bmN0aW9uKGUpe3JldHVybiBlPWEodGhpcy5kZWZhdWx0cyxlKSxvKGUudXJsLGUucGFyYW1zLGUucGFyYW1zU2VyaWFsaXplcikucmVwbGFjZSgvXlw\/LywiIil9LHIuZm9yRWFjaChbImRlbGV0ZSIsImdldCIsImhlYWQiLCJvcHRpb25zIl0sKGZ1bmN0aW9uKGUpe2YucHJvdG90eXBlW2VdPWZ1bmN0aW9uKHQsbil7cmV0dXJuIHRoaXMucmVxdWVzdChhKG58fHt9LHttZXRob2Q6ZSx1cmw6dCxkYXRhOihufHx7fSkuZGF0YX0pKX19KSksci5mb3JFYWNoKFsicG9zdCIsInB1dCIsInBhdGNoIl0sKGZ1bmN0aW9uKGUpe2YucHJvdG90eXBlW2VdPWZ1bmN0aW9uKHQsbixyKXtyZXR1cm4gdGhpcy5yZXF1ZXN0KGEocnx8e30se21ldGhvZDplLHVybDp0LGRhdGE6bn0pKX19KSksZS5leHBvcnRzPWZ9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigwKTtmdW5jdGlvbiBvKCl7dGhpcy5oYW5kbGVycz1bXX1vLnByb3RvdHlwZS51c2U9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiB0aGlzLmhhbmRsZXJzLnB1c2goe2Z1bGZpbGxlZDplLHJlamVjdGVkOnQsc3luY2hyb25vdXM6ISFuJiZuLnN5bmNocm9ub3VzLHJ1bldoZW46bj9uLnJ1bldoZW46bnVsbH0pLHRoaXMuaGFuZGxlcnMubGVuZ3RoLTF9LG8ucHJvdG90eXBlLmVqZWN0PWZ1bmN0aW9uKGUpe3RoaXMuaGFuZGxlcnNbZV0mJih0aGlzLmhhbmRsZXJzW2VdPW51bGwpfSxvLnByb3RvdHlwZS5mb3JFYWNoPWZ1bmN0aW9uKGUpe3IuZm9yRWFjaCh0aGlzLmhhbmRsZXJzLChmdW5jdGlvbih0KXtudWxsIT09dCYmZSh0KX0pKX0sZS5leHBvcnRzPW99LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigwKSxvPW4oMTYpLGk9big4KSxzPW4oMSksYT1uKDIpO2Z1bmN0aW9uIHUoZSl7aWYoZS5jYW5jZWxUb2tlbiYmZS5jYW5jZWxUb2tlbi50aHJvd0lmUmVxdWVzdGVkKCksZS5zaWduYWwmJmUuc2lnbmFsLmFib3J0ZWQpdGhyb3cgbmV3IGEoImNhbmNlbGVkIil9ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiB1KGUpLGUuaGVhZGVycz1lLmhlYWRlcnN8fHt9LGUuZGF0YT1vLmNhbGwoZSxlLmRhdGEsZS5oZWFkZXJzLGUudHJhbnNmb3JtUmVxdWVzdCksZS5oZWFkZXJzPXIubWVyZ2UoZS5oZWFkZXJzLmNvbW1vbnx8e30sZS5oZWFkZXJzW2UubWV0aG9kXXx8e30sZS5oZWFkZXJzKSxyLmZvckVhY2goWyJkZWxldGUiLCJnZXQiLCJoZWFkIiwicG9zdCIsInB1dCIsInBhdGNoIiwiY29tbW9uIl0sKGZ1bmN0aW9uKHQpe2RlbGV0ZSBlLmhlYWRlcnNbdF19KSksKGUuYWRhcHRlcnx8cy5hZGFwdGVyKShlKS50aGVuKChmdW5jdGlvbih0KXtyZXR1cm4gdShlKSx0LmRhdGE9by5jYWxsKGUsdC5kYXRhLHQuaGVhZGVycyxlLnRyYW5zZm9ybVJlc3BvbnNlKSx0fSksKGZ1bmN0aW9uKHQpe3JldHVybiBpKHQpfHwodShlKSx0JiZ0LnJlc3BvbnNlJiYodC5yZXNwb25zZS5kYXRhPW8uY2FsbChlLHQucmVzcG9uc2UuZGF0YSx0LnJlc3BvbnNlLmhlYWRlcnMsZS50cmFuc2Zvcm1SZXNwb25zZSkpKSxQcm9taXNlLnJlamVjdCh0KX0pKX19LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigwKSxvPW4oMSk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxuKXt2YXIgaT10aGlzfHxvO3JldHVybiByLmZvckVhY2gobiwoZnVuY3Rpb24obil7ZT1uLmNhbGwoaSxlLHQpfSkpLGV9fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oMCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7ci5mb3JFYWNoKGUsKGZ1bmN0aW9uKG4scil7ciE9PXQmJnIudG9VcHBlckNhc2UoKT09PXQudG9VcHBlckNhc2UoKSYmKGVbdF09bixkZWxldGUgZVtyXSl9KSl9fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oNyk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxuKXt2YXIgbz1uLmNvbmZpZy52YWxpZGF0ZVN0YXR1cztuLnN0YXR1cyYmbyYmIW8obi5zdGF0dXMpP3QocigiUmVxdWVzdCBmYWlsZWQgd2l0aCBzdGF0dXMgY29kZSAiK24uc3RhdHVzLG4uY29uZmlnLG51bGwsbi5yZXF1ZXN0LG4pKTplKG4pfX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDApO2UuZXhwb3J0cz1yLmlzU3RhbmRhcmRCcm93c2VyRW52KCk\/e3dyaXRlOmZ1bmN0aW9uKGUsdCxuLG8saSxzKXt2YXIgYT1bXTthLnB1c2goZSsiPSIrZW5jb2RlVVJJQ29tcG9uZW50KHQpKSxyLmlzTnVtYmVyKG4pJiZhLnB1c2goImV4cGlyZXM9IituZXcgRGF0ZShuKS50b0dNVFN0cmluZygpKSxyLmlzU3RyaW5nKG8pJiZhLnB1c2goInBhdGg9IitvKSxyLmlzU3RyaW5nKGkpJiZhLnB1c2goImRvbWFpbj0iK2kpLCEwPT09cyYmYS5wdXNoKCJzZWN1cmUiKSxkb2N1bWVudC5jb29raWU9YS5qb2luKCI7ICIpfSxyZWFkOmZ1bmN0aW9uKGUpe3ZhciB0PWRvY3VtZW50LmNvb2tpZS5tYXRjaChuZXcgUmVnRXhwKCIoXnw7XFxzKikoIitlKyIpPShbXjtdKikiKSk7cmV0dXJuIHQ\/ZGVjb2RlVVJJQ29tcG9uZW50KHRbM10pOm51bGx9LHJlbW92ZTpmdW5jdGlvbihlKXt0aGlzLndyaXRlKGUsIiIsRGF0ZS5ub3coKS04NjRlNSl9fTp7d3JpdGU6ZnVuY3Rpb24oKXt9LHJlYWQ6ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH0scmVtb3ZlOmZ1bmN0aW9uKCl7fX19LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigyMSksbz1uKDIyKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZSYmIXIodCk\/byhlLHQpOnR9fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4vXihbYS16XVthLXpcZFwrXC1cLl0qOik\/XC9cLy9pLnRlc3QoZSl9fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3JldHVybiB0P2UucmVwbGFjZSgvXC8rJC8sIiIpKyIvIit0LnJlcGxhY2UoL15cLysvLCIiKTplfX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDApLG89WyJhZ2UiLCJhdXRob3JpemF0aW9uIiwiY29udGVudC1sZW5ndGgiLCJjb250ZW50LXR5cGUiLCJldGFnIiwiZXhwaXJlcyIsImZyb20iLCJob3N0IiwiaWYtbW9kaWZpZWQtc2luY2UiLCJpZi11bm1vZGlmaWVkLXNpbmNlIiwibGFzdC1tb2RpZmllZCIsImxvY2F0aW9uIiwibWF4LWZvcndhcmRzIiwicHJveHktYXV0aG9yaXphdGlvbiIsInJlZmVyZXIiLCJyZXRyeS1hZnRlciIsInVzZXItYWdlbnQiXTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQsbixpLHM9e307cmV0dXJuIGU\/KHIuZm9yRWFjaChlLnNwbGl0KCJcbiIpLChmdW5jdGlvbihlKXtpZihpPWUuaW5kZXhPZigiOiIpLHQ9ci50cmltKGUuc3Vic3RyKDAsaSkpLnRvTG93ZXJDYXNlKCksbj1yLnRyaW0oZS5zdWJzdHIoaSsxKSksdCl7aWYoc1t0XSYmby5pbmRleE9mKHQpPj0wKXJldHVybjtzW3RdPSJzZXQtY29va2llIj09PXQ\/KHNbdF0\/c1t0XTpbXSkuY29uY2F0KFtuXSk6c1t0XT9zW3RdKyIsICIrbjpufX0pKSxzKTpzfX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDApO2UuZXhwb3J0cz1yLmlzU3RhbmRhcmRCcm93c2VyRW52KCk\/ZnVuY3Rpb24oKXt2YXIgZSx0PS8obXNpZXx0cmlkZW50KS9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCksbj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhIik7ZnVuY3Rpb24gbyhlKXt2YXIgcj1lO3JldHVybiB0JiYobi5zZXRBdHRyaWJ1dGUoImhyZWYiLHIpLHI9bi5ocmVmKSxuLnNldEF0dHJpYnV0ZSgiaHJlZiIscikse2hyZWY6bi5ocmVmLHByb3RvY29sOm4ucHJvdG9jb2w\/bi5wcm90b2NvbC5yZXBsYWNlKC86JC8sIiIpOiIiLGhvc3Q6bi5ob3N0LHNlYXJjaDpuLnNlYXJjaD9uLnNlYXJjaC5yZXBsYWNlKC9eXD8vLCIiKToiIixoYXNoOm4uaGFzaD9uLmhhc2gucmVwbGFjZSgvXiMvLCIiKToiIixob3N0bmFtZTpuLmhvc3RuYW1lLHBvcnQ6bi5wb3J0LHBhdGhuYW1lOiIvIj09PW4ucGF0aG5hbWUuY2hhckF0KDApP24ucGF0aG5hbWU6Ii8iK24ucGF0aG5hbWV9fXJldHVybiBlPW8od2luZG93LmxvY2F0aW9uLmhyZWYpLGZ1bmN0aW9uKHQpe3ZhciBuPXIuaXNTdHJpbmcodCk\/byh0KTp0O3JldHVybiBuLnByb3RvY29sPT09ZS5wcm90b2NvbCYmbi5ob3N0PT09ZS5ob3N0fX0oKTpmdW5jdGlvbigpe3JldHVybiEwfX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDEwKS52ZXJzaW9uLG89e307WyJvYmplY3QiLCJib29sZWFuIiwibnVtYmVyIiwiZnVuY3Rpb24iLCJzdHJpbmciLCJzeW1ib2wiXS5mb3JFYWNoKChmdW5jdGlvbihlLHQpe29bZV09ZnVuY3Rpb24obil7cmV0dXJuIHR5cGVvZiBuPT09ZXx8ImEiKyh0PDE\/Im4gIjoiICIpK2V9fSkpO3ZhciBpPXt9O28udHJhbnNpdGlvbmFsPWZ1bmN0aW9uKGUsdCxuKXtmdW5jdGlvbiBvKGUsdCl7cmV0dXJuIltBeGlvcyB2IityKyJdIFRyYW5zaXRpb25hbCBvcHRpb24gJyIrZSsiJyIrdCsobj8iLiAiK246IiIpfXJldHVybiBmdW5jdGlvbihuLHIscyl7aWYoITE9PT1lKXRocm93IG5ldyBFcnJvcihvKHIsIiBoYXMgYmVlbiByZW1vdmVkIisodD8iIGluICIrdDoiIikpKTtyZXR1cm4gdCYmIWlbcl0mJihpW3JdPSEwLGNvbnNvbGUud2FybihvKHIsIiBoYXMgYmVlbiBkZXByZWNhdGVkIHNpbmNlIHYiK3QrIiBhbmQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZWFyIGZ1dHVyZSIpKSksIWV8fGUobixyLHMpfX0sZS5leHBvcnRzPXthc3NlcnRPcHRpb25zOmZ1bmN0aW9uKGUsdCxuKXtpZigib2JqZWN0IiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcigib3B0aW9ucyBtdXN0IGJlIGFuIG9iamVjdCIpO2Zvcih2YXIgcj1PYmplY3Qua2V5cyhlKSxvPXIubGVuZ3RoO28tLSA+MDspe3ZhciBpPXJbb10scz10W2ldO2lmKHMpe3ZhciBhPWVbaV0sdT12b2lkIDA9PT1hfHxzKGEsaSxlKTtpZighMCE9PXUpdGhyb3cgbmV3IFR5cGVFcnJvcigib3B0aW9uICIraSsiIG11c3QgYmUgIit1KX1lbHNlIGlmKCEwIT09bil0aHJvdyBFcnJvcigiVW5rbm93biBvcHRpb24gIitpKX19LHZhbGlkYXRvcnM6b319LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigyKTtmdW5jdGlvbiBvKGUpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBlKXRocm93IG5ldyBUeXBlRXJyb3IoImV4ZWN1dG9yIG11c3QgYmUgYSBmdW5jdGlvbi4iKTt2YXIgdDt0aGlzLnByb21pc2U9bmV3IFByb21pc2UoKGZ1bmN0aW9uKGUpe3Q9ZX0pKTt2YXIgbj10aGlzO3RoaXMucHJvbWlzZS50aGVuKChmdW5jdGlvbihlKXtpZihuLl9saXN0ZW5lcnMpe3ZhciB0LHI9bi5fbGlzdGVuZXJzLmxlbmd0aDtmb3IodD0wO3Q8cjt0Kyspbi5fbGlzdGVuZXJzW3RdKGUpO24uX2xpc3RlbmVycz1udWxsfX0pKSx0aGlzLnByb21pc2UudGhlbj1mdW5jdGlvbihlKXt2YXIgdCxyPW5ldyBQcm9taXNlKChmdW5jdGlvbihlKXtuLnN1YnNjcmliZShlKSx0PWV9KSkudGhlbihlKTtyZXR1cm4gci5jYW5jZWw9ZnVuY3Rpb24oKXtuLnVuc3Vic2NyaWJlKHQpfSxyfSxlKChmdW5jdGlvbihlKXtuLnJlYXNvbnx8KG4ucmVhc29uPW5ldyByKGUpLHQobi5yZWFzb24pKX0pKX1vLnByb3RvdHlwZS50aHJvd0lmUmVxdWVzdGVkPWZ1bmN0aW9uKCl7aWYodGhpcy5yZWFzb24pdGhyb3cgdGhpcy5yZWFzb259LG8ucHJvdG90eXBlLnN1YnNjcmliZT1mdW5jdGlvbihlKXt0aGlzLnJlYXNvbj9lKHRoaXMucmVhc29uKTp0aGlzLl9saXN0ZW5lcnM\/dGhpcy5fbGlzdGVuZXJzLnB1c2goZSk6dGhpcy5fbGlzdGVuZXJzPVtlXX0sby5wcm90b3R5cGUudW5zdWJzY3JpYmU9ZnVuY3Rpb24oZSl7aWYodGhpcy5fbGlzdGVuZXJzKXt2YXIgdD10aGlzLl9saXN0ZW5lcnMuaW5kZXhPZihlKTstMSE9PXQmJnRoaXMuX2xpc3RlbmVycy5zcGxpY2UodCwxKX19LG8uc291cmNlPWZ1bmN0aW9uKCl7dmFyIGU7cmV0dXJue3Rva2VuOm5ldyBvKChmdW5jdGlvbih0KXtlPXR9KSksY2FuY2VsOmV9fSxlLmV4cG9ydHM9b30sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBlLmFwcGx5KG51bGwsdCl9fX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIm9iamVjdCI9PXR5cGVvZiBlJiYhMD09PWUuaXNBeGlvc0Vycm9yfX1dKX0pKTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9YXhpb3MubWluLm1hcDsKLyoqIC9tL2pzL3ZhbmlsbGFqcy9wcmlzdGluZS5taW4uanMgKiovCiFmdW5jdGlvbihlLHIpeyJvYmplY3QiPT10eXBlb2YgZXhwb3J0cyYmInVuZGVmaW5lZCIhPXR5cGVvZiBtb2R1bGU\/bW9kdWxlLmV4cG9ydHM9cigpOiJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ\/ZGVmaW5lKHIpOihlPSJ1bmRlZmluZWQiIT10eXBlb2YgZ2xvYmFsVGhpcz9nbG9iYWxUaGlzOmV8fHNlbGYpLlByaXN0aW5lPXIoKX0odGhpcywoZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7dmFyIGU9e2VuOntyZXF1aXJlZDoiVGhpcyBmaWVsZCBpcyByZXF1aXJlZCIsZW1haWw6IlRoaXMgZmllbGQgcmVxdWlyZXMgYSB2YWxpZCBlLW1haWwgYWRkcmVzcyIsbnVtYmVyOiJUaGlzIGZpZWxkIHJlcXVpcmVzIGEgbnVtYmVyIixpbnRlZ2VyOiJUaGlzIGZpZWxkIHJlcXVpcmVzIGFuIGludGVnZXIgdmFsdWUiLHVybDoiVGhpcyBmaWVsZCByZXF1aXJlcyBhIHZhbGlkIHdlYnNpdGUgVVJMIix0ZWw6IlRoaXMgZmllbGQgcmVxdWlyZXMgYSB2YWxpZCB0ZWxlcGhvbmUgbnVtYmVyIixtYXhsZW5ndGg6IlRoaXMgZmllbGRzIGxlbmd0aCBtdXN0IGJlIDwgJHsxfSIsbWlubGVuZ3RoOiJUaGlzIGZpZWxkcyBsZW5ndGggbXVzdCBiZSA+ICR7MX0iLG1pbjoiTWluaW11bSB2YWx1ZSBmb3IgdGhpcyBmaWVsZCBpcyAkezF9IixtYXg6Ik1heGltdW0gdmFsdWUgZm9yIHRoaXMgZmllbGQgaXMgJHsxfSIscGF0dGVybjoiUGxlYXNlIG1hdGNoIHRoZSByZXF1ZXN0ZWQgZm9ybWF0IixlcXVhbHM6IlRoZSB0d28gZmllbGRzIGRvIG5vdCBtYXRjaCJ9fTtmdW5jdGlvbiByKGUpe3ZhciByPWFyZ3VtZW50cztyZXR1cm4gdGhpcy5yZXBsYWNlKC9cJHsoW157fV0qKX0vZywoZnVuY3Rpb24oZSx0KXtyZXR1cm4gclt0XX0pKX1mdW5jdGlvbiB0KGUpe3JldHVybiBlLnByaXN0aW5lLnNlbGYuZm9ybS5xdWVyeVNlbGVjdG9yQWxsKCdpbnB1dFtuYW1lPSInK2UuZ2V0QXR0cmlidXRlKCJuYW1lIikrJyJdOmNoZWNrZWQnKS5sZW5ndGh9dmFyIG49e2NsYXNzVG86ImZvcm0tZ3JvdXAiLGVycm9yQ2xhc3M6Imhhcy1kYW5nZXIiLHN1Y2Nlc3NDbGFzczoiaGFzLXN1Y2Nlc3MiLGVycm9yVGV4dFBhcmVudDoiZm9ybS1ncm91cCIsZXJyb3JUZXh0VGFnOiJkaXYiLGVycm9yVGV4dENsYXNzOiJ0ZXh0LWhlbHAifSxpPVsicmVxdWlyZWQiLCJtaW4iLCJtYXgiLCJtaW5sZW5ndGgiLCJtYXhsZW5ndGgiLCJwYXR0ZXJuIl0scz0vXigoW148PigpXFtcXVxcLiw7OlxzQCJdKyhcLltePD4oKVxbXF1cXC4sOzpcc0AiXSspKil8KCIuKyIpKUAoKFxbWzAtOV17MSwzfVwuWzAtOV17MSwzfVwuWzAtOV17MSwzfVwuWzAtOV17MSwzfV0pfCgoW2EtekEtWlwtMC05XStcLikrW2EtekEtWl17Mix9KSkkLyxhPS8tbWVzc2FnZSg\/Oi0oW2Etel17Mn0oPzpfW0EtWl17Mn0pPykpPy8sbz0iZW4iLGw9e30sdT1mdW5jdGlvbihlLHIpe3IubmFtZT1lLHZvaWQgMD09PXIucHJpb3JpdHkmJihyLnByaW9yaXR5PTEpLGxbZV09cn07ZnVuY3Rpb24gZih0LHMsdSl7dmFyIGY9dGhpcztmdW5jdGlvbiBjKGUscix0LG4pe3ZhciBpPWxbdF07aWYoaSYmKGUucHVzaChpKSxuKSl7dmFyIHM9InBhdHRlcm4iPT09dD9bbl06bi5zcGxpdCgiLCIpO3MudW5zaGlmdChudWxsKSxyW3RdPXN9fWZ1bmN0aW9uIHAodCl7Zm9yKHZhciBuPVtdLGk9ITAscz0wO3QudmFsaWRhdG9yc1tzXTtzKyspe3ZhciBhPXQudmFsaWRhdG9yc1tzXSxsPXQucGFyYW1zW2EubmFtZV0\/dC5wYXJhbXNbYS5uYW1lXTpbXTtpZihsWzBdPXQuaW5wdXQudmFsdWUsIWEuZm4uYXBwbHkodC5pbnB1dCxsKSYmKGk9ITEsImZ1bmN0aW9uIj09dHlwZW9mIGEubXNnP24ucHVzaChhLm1zZyh0LmlucHV0LnZhbHVlLGwpKToic3RyaW5nIj09dHlwZW9mIGEubXNnP24ucHVzaChyLmFwcGx5KGEubXNnLGwpKTphLm1zZz09PU9iamVjdChhLm1zZykmJmEubXNnW29dP24ucHVzaChyLmFwcGx5KGEubXNnW29dLGwpKTp0Lm1lc3NhZ2VzW29dJiZ0Lm1lc3NhZ2VzW29dW2EubmFtZV0\/bi5wdXNoKHIuYXBwbHkodC5tZXNzYWdlc1tvXVthLm5hbWVdLGwpKTplW29dJiZlW29dW2EubmFtZV0mJm4ucHVzaChyLmFwcGx5KGVbb11bYS5uYW1lXSxsKSksITA9PT1hLmhhbHQpKWJyZWFrfXJldHVybiB0LmVycm9ycz1uLGl9ZnVuY3Rpb24gbShlKXtpZihlLmVycm9yRWxlbWVudHMpcmV0dXJuIGUuZXJyb3JFbGVtZW50czt2YXIgcj1mdW5jdGlvbihlLHIpe2Zvcig7KGU9ZS5wYXJlbnRFbGVtZW50KSYmIWUuY2xhc3NMaXN0LmNvbnRhaW5zKHIpOyk7cmV0dXJuIGV9KGUuaW5wdXQsZi5jb25maWcuY2xhc3NUbyksdD1udWxsLG49bnVsbDtyZXR1cm4odD1mLmNvbmZpZy5jbGFzc1RvPT09Zi5jb25maWcuZXJyb3JUZXh0UGFyZW50P3I6ci5xdWVyeVNlbGVjdG9yKCIuIitmLmNvbmZpZy5lcnJvclRleHRQYXJlbnQpKSYmKChuPXQucXVlcnlTZWxlY3RvcigiLnByaXN0aW5lLWVycm9yIikpfHwoKG49ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChmLmNvbmZpZy5lcnJvclRleHRUYWcpKS5jbGFzc05hbWU9InByaXN0aW5lLWVycm9yICIrZi5jb25maWcuZXJyb3JUZXh0Q2xhc3MsdC5hcHBlbmRDaGlsZChuKSxuLnByaXN0aW5lRGlzcGxheT1uLnN0eWxlLmRpc3BsYXkpKSxlLmVycm9yRWxlbWVudHM9W3Isbl19ZnVuY3Rpb24gZChlKXt2YXIgcj1tKGUpLHQ9clswXSxuPXJbMV07dCYmKHQuY2xhc3NMaXN0LnJlbW92ZShmLmNvbmZpZy5zdWNjZXNzQ2xhc3MpLHQuY2xhc3NMaXN0LmFkZChmLmNvbmZpZy5lcnJvckNsYXNzKSksbiYmKG4uaW5uZXJIVE1MPWUuZXJyb3JzLmpvaW4oIjxici8+Iiksbi5zdHlsZS5kaXNwbGF5PW4ucHJpc3RpbmVEaXNwbGF5fHwiIil9ZnVuY3Rpb24gaChlKXt2YXIgcj1mdW5jdGlvbihlKXt2YXIgcj1tKGUpLHQ9clswXSxuPXJbMV07cmV0dXJuIHQmJih0LmNsYXNzTGlzdC5yZW1vdmUoZi5jb25maWcuZXJyb3JDbGFzcyksdC5jbGFzc0xpc3QucmVtb3ZlKGYuY29uZmlnLnN1Y2Nlc3NDbGFzcykpLG4mJihuLmlubmVySFRNTD0iIixuLnN0eWxlLmRpc3BsYXk9Im5vbmUiKSxyfShlKVswXTtyJiZyLmNsYXNzTGlzdC5hZGQoZi5jb25maWcuc3VjY2Vzc0NsYXNzKX1yZXR1cm4gZnVuY3Rpb24oZSxyLHQpe2Uuc2V0QXR0cmlidXRlKCJub3ZhbGlkYXRlIiwidHJ1ZSIpLGYuZm9ybT1lLGYuY29uZmlnPWZ1bmN0aW9uKGUscil7Zm9yKHZhciB0IGluIHIpdCBpbiBlfHwoZVt0XT1yW3RdKTtyZXR1cm4gZX0ocnx8e30sbiksZi5saXZlPSEoITE9PT10KSxmLmZpZWxkcz1BcnJheS5mcm9tKGUucXVlcnlTZWxlY3RvckFsbCgiaW5wdXQ6bm90KFt0eXBlXj1oaWRkZW5dKTpub3QoW3R5cGVePXN1Ym1pdF0pLCBzZWxlY3QsIHRleHRhcmVhIikpLm1hcChmdW5jdGlvbihlKXt2YXIgcj1bXSx0PXt9LG49e307cmV0dXJuW10uZm9yRWFjaC5jYWxsKGUuYXR0cmlidXRlcywoZnVuY3Rpb24oZSl7aWYoL15kYXRhLXByaXN0aW5lLS8udGVzdChlLm5hbWUpKXt2YXIgcz1lLm5hbWUuc3Vic3RyKDE0KSxvPXMubWF0Y2goYSk7aWYobnVsbCE9PW8pe3ZhciBsPXZvaWQgMD09PW9bMV0\/ImVuIjpvWzFdO3JldHVybiBuLmhhc093blByb3BlcnR5KGwpfHwobltsXT17fSksdm9pZChuW2xdW3Muc2xpY2UoMCxzLmxlbmd0aC1vWzBdLmxlbmd0aCldPWUudmFsdWUpfSJ0eXBlIj09PXMmJihzPWUudmFsdWUpLGMocix0LHMsZS52YWx1ZSl9ZWxzZX5pLmluZGV4T2YoZS5uYW1lKT9jKHIsdCxlLm5hbWUsZS52YWx1ZSk6InR5cGUiPT09ZS5uYW1lJiZjKHIsdCxlLnZhbHVlKX0pKSxyLnNvcnQoKGZ1bmN0aW9uKGUscil7cmV0dXJuIHIucHJpb3JpdHktZS5wcmlvcml0eX0pKSxmLmxpdmUmJmUuYWRkRXZlbnRMaXN0ZW5lcih+WyJyYWRpbyIsImNoZWNrYm94Il0uaW5kZXhPZihlLmdldEF0dHJpYnV0ZSgidHlwZSIpKT8iY2hhbmdlIjoiaW5wdXQiLGZ1bmN0aW9uKGUpe2YudmFsaWRhdGUoZS50YXJnZXQpfS5iaW5kKGYpKSxlLnByaXN0aW5lPXtpbnB1dDplLHZhbGlkYXRvcnM6cixwYXJhbXM6dCxtZXNzYWdlczpuLHNlbGY6Zn19LmJpbmQoZikpfSh0LHMsdSksZi52YWxpZGF0ZT1mdW5jdGlvbihlLHIpe3I9ZSYmITA9PT1yfHwhMD09PWU7dmFyIHQ9Zi5maWVsZHM7ITAhPT1lJiYhMSE9PWUmJihlIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQ\/dD1bZS5wcmlzdGluZV06KGUgaW5zdGFuY2VvZiBOb2RlTGlzdHx8ZSBpbnN0YW5jZW9mKHdpbmRvdy4kfHxBcnJheSl8fGUgaW5zdGFuY2VvZiBBcnJheSkmJih0PUFycmF5LmZyb20oZSkubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gZS5wcmlzdGluZX0pKSkpO2Zvcih2YXIgbj0hMCxpPTA7dFtpXTtpKyspe3ZhciBzPXRbaV07cChzKT8hciYmaChzKToobj0hMSwhciYmZChzKSl9cmV0dXJuIG59LGYuZ2V0RXJyb3JzPWZ1bmN0aW9uKGUpe2lmKCFlKXtmb3IodmFyIHI9W10sdD0wO3Q8Zi5maWVsZHMubGVuZ3RoO3QrKyl7dmFyIG49Zi5maWVsZHNbdF07bi5lcnJvcnMubGVuZ3RoJiZyLnB1c2goe2lucHV0Om4uaW5wdXQsZXJyb3JzOm4uZXJyb3JzfSl9cmV0dXJuIHJ9cmV0dXJuIGUudGFnTmFtZSYmInNlbGVjdCI9PT1lLnRhZ05hbWUudG9Mb3dlckNhc2UoKT9lLnByaXN0aW5lLmVycm9yczplLmxlbmd0aD9lWzBdLnByaXN0aW5lLmVycm9yczplLnByaXN0aW5lLmVycm9yc30sZi5hZGRWYWxpZGF0b3I9ZnVuY3Rpb24oZSxyLHQsbixpKXtlIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQ\/KGUucHJpc3RpbmUudmFsaWRhdG9ycy5wdXNoKHtmbjpyLG1zZzp0LHByaW9yaXR5Om4saGFsdDppfSksZS5wcmlzdGluZS52YWxpZGF0b3JzLnNvcnQoKGZ1bmN0aW9uKGUscil7cmV0dXJuIHIucHJpb3JpdHktZS5wcmlvcml0eX0pKSk6Y29uc29sZS53YXJuKCJUaGUgcGFyYW1ldGVyIGVsZW0gbXVzdCBiZSBhIGRvbSBlbGVtZW50Iil9LGYuYWRkRXJyb3I9ZnVuY3Rpb24oZSxyKXsoZT1lLmxlbmd0aD9lWzBdOmUpLnByaXN0aW5lLmVycm9ycy5wdXNoKHIpLGQoZS5wcmlzdGluZSl9LGYucmVzZXQ9ZnVuY3Rpb24oKXtmb3IodmFyIGU9MDtmLmZpZWxkc1tlXTtlKyspZi5maWVsZHNbZV0uZXJyb3JFbGVtZW50cz1udWxsO0FycmF5LmZyb20oZi5mb3JtLnF1ZXJ5U2VsZWN0b3JBbGwoIi5wcmlzdGluZS1lcnJvciIpKS5tYXAoKGZ1bmN0aW9uKGUpe2UucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChlKX0pKSxBcnJheS5mcm9tKGYuZm9ybS5xdWVyeVNlbGVjdG9yQWxsKCIuIitmLmNvbmZpZy5jbGFzc1RvKSkubWFwKChmdW5jdGlvbihlKXtlLmNsYXNzTGlzdC5yZW1vdmUoZi5jb25maWcuc3VjY2Vzc0NsYXNzKSxlLmNsYXNzTGlzdC5yZW1vdmUoZi5jb25maWcuZXJyb3JDbGFzcyl9KSl9LGYuZGVzdHJveT1mdW5jdGlvbigpe2YucmVzZXQoKSxmLmZpZWxkcy5mb3JFYWNoKChmdW5jdGlvbihlKXtkZWxldGUgZS5pbnB1dC5wcmlzdGluZX0pKSxmLmZpZWxkcz1bXX0sZi5zZXRHbG9iYWxDb25maWc9ZnVuY3Rpb24oZSl7bj1lfSxmfXJldHVybiB1KCJ0ZXh0Iix7Zm46ZnVuY3Rpb24oZSl7cmV0dXJuITB9LHByaW9yaXR5OjB9KSx1KCJyZXF1aXJlZCIse2ZuOmZ1bmN0aW9uKGUpe3JldHVybiJyYWRpbyI9PT10aGlzLnR5cGV8fCJjaGVja2JveCI9PT10aGlzLnR5cGU\/dCh0aGlzKTp2b2lkIDAhPT1lJiYiIiE9PWV9LHByaW9yaXR5Ojk5LGhhbHQ6ITB9KSx1KCJlbWFpbCIse2ZuOmZ1bmN0aW9uKGUpe3JldHVybiFlfHxzLnRlc3QoZSl9fSksdSgibnVtYmVyIix7Zm46ZnVuY3Rpb24oZSl7cmV0dXJuIWV8fCFpc05hTihwYXJzZUZsb2F0KGUpKX0scHJpb3JpdHk6Mn0pLHUoImludGVnZXIiLHtmbjpmdW5jdGlvbihlKXtyZXR1cm4hZXx8L15cZCskLy50ZXN0KGUpfX0pLHUoIm1pbmxlbmd0aCIse2ZuOmZ1bmN0aW9uKGUscil7cmV0dXJuIWV8fGUubGVuZ3RoPj1wYXJzZUludChyKX19KSx1KCJtYXhsZW5ndGgiLHtmbjpmdW5jdGlvbihlLHIpe3JldHVybiFlfHxlLmxlbmd0aDw9cGFyc2VJbnQocil9fSksdSgibWluIix7Zm46ZnVuY3Rpb24oZSxyKXtyZXR1cm4hZXx8KCJjaGVja2JveCI9PT10aGlzLnR5cGU\/dCh0aGlzKT49cGFyc2VJbnQocik6cGFyc2VGbG9hdChlKT49cGFyc2VGbG9hdChyKSl9fSksdSgibWF4Iix7Zm46ZnVuY3Rpb24oZSxyKXtyZXR1cm4hZXx8KCJjaGVja2JveCI9PT10aGlzLnR5cGU\/dCh0aGlzKTw9cGFyc2VJbnQocik6cGFyc2VGbG9hdChlKTw9cGFyc2VGbG9hdChyKSl9fSksdSgicGF0dGVybiIse2ZuOmZ1bmN0aW9uKGUscil7dmFyIHQ9ci5tYXRjaChuZXcgUmVnRXhwKCJeLyguKj8pLyhbZ2lteV0qKSQiKSk7cmV0dXJuIWV8fG5ldyBSZWdFeHAodFsxXSx0WzJdKS50ZXN0KGUpfX0pLHUoImVxdWFscyIse2ZuOmZ1bmN0aW9uKGUscil7dmFyIHQ9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcihyKTtyZXR1cm4gdCYmKCFlJiYhdC52YWx1ZXx8dC52YWx1ZT09PWUpfX0pLGYuYWRkVmFsaWRhdG9yPWZ1bmN0aW9uKGUscix0LG4saSl7dShlLHtmbjpyLG1zZzp0LHByaW9yaXR5Om4saGFsdDppfSl9LGYuYWRkTWVzc2FnZXM9ZnVuY3Rpb24ocix0KXt2YXIgbj1lLmhhc093blByb3BlcnR5KHIpP2Vbcl06ZVtyXT17fTtPYmplY3Qua2V5cyh0KS5mb3JFYWNoKChmdW5jdGlvbihlLHIpe25bZV09dFtlXX0pKX0sZi5zZXRMb2NhbGU9ZnVuY3Rpb24oZSl7bz1lfSxmfSkpOwoKLy9FeHRlbnNpb24KLy8gQSB2YWxpZGF0b3IgdG8gY2hlY2sgaWYgdGhlIGlucHV0IHZhbHVlIGlzIHdpdGhpbiBhIHNwZWNpZmllZCByYW5nZQovLyBUaGUgZ2xvYmFsIHZhbGlkYXRvciBtdXN0IGJlIGFkZGVkIGJlZm9yZSBjcmVhdGluZyB0aGUgcHJpc3RpbmUgaW5zdGFuY2UKCi8vIFByaXN0aW5lLmFkZFZhbGlkYXRvcigicGhvbmUiLCBmdW5jdGlvbihwaG9uZSkgewoKLy8gCXZhciBWYWxpZEFyZWFDb2RlcyA9IFsKLy8gCQk0MzgsNTE0LDI2Myw0NTAsNTc5LDgxOSwyNDksNzA1LDIyNiwKLy8gCQk1MTksMjg5LDM2NSw5MDUsNDE2LDQzNyw2NDcsMzQzLAovLyAJCTYxMyw3MDksODczLDQxOCw1ODEsNTA2LDkwMgovLyAJXTsKCi8vIAlwaG9uZSA9IHBob25lLnJlcGxhY2UoL1teMC05XSsvZ2ksICcnKTsKLy8gCWlmKHR5cGVvZiBlbWFpbEhhbmRsZXIhPSd1bmRlZmluZWQnICYmIHRoaXMuaGFzQ2xhc3MoJ3JlcXVpcmVkJykpIHsKLy8gCQllbWFpbEhhbmRsZXIucGhvbmVNYW5kYXRvcnk9dHJ1ZTsKLy8gCX0KLy8gCWlmKCBwaG9uZVswXSA9PSAnMScgKXsKLy8gCQlwaG9uZSA9IHBob25lLnN1YnN0cmluZyggMSApOwovLyAJfQoKLy8gCXZhciBhcmVhQ29kZSA9IHBhcnNlSW50KCBwaG9uZS5zdWJzdHJpbmcoMCwzKSApOwoKLy8gCWF4aW9zLmdldCgnaHR0cHM6Ly9hdXRvYXViYWluZS5jb20vc2VydmljZXMvdmFsaWRhdGVQaG9uZU51bWJlci5waHAnLHsKLy8gCQl0aW1lb3V0OjIwMDAsCi8vIAkJZGF0YVR5cGU6ICdqc29uJywKLy8gCQlwYXJhbXM6IHtwaG9uZTogcGhvbmV9LAovLyAJCXJlc3BvbnNlVHlwZTogJ2pzb24nCi8vIAl9KQovLyAJLnRoZW4oZnVuY3Rpb24ocmVzKSB7CgovLyAJCWlmICh0eXBlb2YgcmVzLmlzT2sgIT09ICd1bmRlZmluZWQnKXsKLy8gCQkJaWYgKHJlcy5waG9uZU51bWJlcklzVmFsaWQgPT09IGZhbHNlKSB7Ci8vIAkJCQkvL2NvbnNvbGUubG9nKCdwaG9uZSAnK3Bob25lKycgaXMgaW52YWxpZCcpOwovLyAJCQkJaWYodHlwZW9mIGVtYWlsSGFuZGxlciE9J3VuZGVmaW5lZCcgJiYgZW1haWxIYW5kbGVyLnBob25lTWFuZGF0b3J5ICkgewovLyAJCQkJCWVtYWlsSGFuZGxlci5waG9uZVZhbGlkYXRpb25BdHRlbXB0cysrOwovLyAJCQkJfQovLyAJCQkJcmV0dXJuIHRydWU7Ci8vIAkJCX0KLy8gCQkJfSBlbHNlIHsKLy8gCQkJLy92YWxpZGF0ZSBhcmVhY29kZSBhdCBsZWFzdAovLyAJCQlpZiggdHlwZW9mIFZhbGlkQXJlYUNvZGVzLmluZGV4T2YgIT0gJ3VuZGVmaW5lZCcgJiYJVmFsaWRBcmVhQ29kZXMuaW5kZXhPZiggYXJlYUNvZGUgKSA9PSAtMSApewovLyAJCQkJcmV0dXJuIGZhbHNlOwovLyAJCQl9Ci8vIAkJfQoKLy8gCX0pCi8vIAkuY2F0Y2goZnVuY3Rpb24oZXJyb3IpIHsKLy8gCQkvLyB2YWxpZGF0ZSBhcmVhY29kZSBhdCBsZWFzdAovLyAJCWlmKCB0eXBlb2YgVmFsaWRBcmVhQ29kZXMuaW5kZXhPZiAhPSAndW5kZWZpbmVkJyAmJglWYWxpZEFyZWFDb2Rlcy5pbmRleE9mKCBhcmVhQ29kZSApID09IC0xICl7Ci8vIAkJaWYodHlwZW9mIGVtYWlsSGFuZGxlciE9J3VuZGVmaW5lZCcJJiYgZW1haWxIYW5kbGVyLnBob25lTWFuZGF0b3J5KSBlbWFpbEhhbmRsZXIucGhvbmVWYWxpZGF0aW9uQXR0ZW1wdHMrKzsKLy8gCQkJcmV0dXJuIGZhbHNlOwovLyAJCX0KLy8gCQkvL2NvbnNvbGUubG9nKCJ2YWxpZGl0eSB2YWxpZGF0ZVBob25lTnVtYmVyIG5ldHdvcmsgZXJyb3IiKTsKCi8vIAkJcmV0dXJuIGZhbHNlOwovLyAJfSk7CgoKCi8vIH0sICJUaGUgdmFsdWUgKCR7MH0pIG11c3QgYmUgYmV0d2VlbiAkezF9IGFuZCAkezJ9IiwgNSwgZmFsc2UpOwovKiogL20vanMvdmFuaWxsYWpzL2ZsYXRwaWNrci5taW4uanMgKiovCi8qIGZsYXRwaWNrciB2NC42LjksLCBAbGljZW5zZSBNSVQgKi8KIWZ1bmN0aW9uKGUsdCl7Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzJiYidW5kZWZpbmVkIiE9dHlwZW9mIG1vZHVsZT9tb2R1bGUuZXhwb3J0cz10KCk6ImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUodCk6KGU9InVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWxUaGlzP2dsb2JhbFRoaXM6ZXx8c2VsZikuZmxhdHBpY2tyPXQoKX0odGhpcywoZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7dmFyIGU9ZnVuY3Rpb24oKXtyZXR1cm4oZT1PYmplY3QuYXNzaWdufHxmdW5jdGlvbihlKXtmb3IodmFyIHQsbj0xLGE9YXJndW1lbnRzLmxlbmd0aDtuPGE7bisrKWZvcih2YXIgaSBpbiB0PWFyZ3VtZW50c1tuXSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxpKSYmKGVbaV09dFtpXSk7cmV0dXJuIGV9KS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O2Z1bmN0aW9uIHQoKXtmb3IodmFyIGU9MCx0PTAsbj1hcmd1bWVudHMubGVuZ3RoO3Q8bjt0KyspZSs9YXJndW1lbnRzW3RdLmxlbmd0aDt2YXIgYT1BcnJheShlKSxpPTA7Zm9yKHQ9MDt0PG47dCsrKWZvcih2YXIgbz1hcmd1bWVudHNbdF0scj0wLGw9by5sZW5ndGg7cjxsO3IrKyxpKyspYVtpXT1vW3JdO3JldHVybiBhfXZhciBuPVsib25DaGFuZ2UiLCJvbkNsb3NlIiwib25EYXlDcmVhdGUiLCJvbkRlc3Ryb3kiLCJvbktleURvd24iLCJvbk1vbnRoQ2hhbmdlIiwib25PcGVuIiwib25QYXJzZUNvbmZpZyIsIm9uUmVhZHkiLCJvblZhbHVlVXBkYXRlIiwib25ZZWFyQ2hhbmdlIiwib25QcmVDYWxlbmRhclBvc2l0aW9uIl0sYT17X2Rpc2FibGU6W10sYWxsb3dJbnB1dDohMSxhbGxvd0ludmFsaWRQcmVsb2FkOiExLGFsdEZvcm1hdDoiRiBqLCBZIixhbHRJbnB1dDohMSxhbHRJbnB1dENsYXNzOiJmb3JtLWNvbnRyb2wgaW5wdXQiLGFuaW1hdGU6Im9iamVjdCI9PXR5cGVvZiB3aW5kb3cmJi0xPT09d2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZigiTVNJRSIpLGFyaWFEYXRlRm9ybWF0OiJGIGosIFkiLGF1dG9GaWxsRGVmYXVsdFRpbWU6ITAsY2xpY2tPcGVuczohMCxjbG9zZU9uU2VsZWN0OiEwLGNvbmp1bmN0aW9uOiIsICIsZGF0ZUZvcm1hdDoiWS1tLWQiLGRlZmF1bHRIb3VyOjEyLGRlZmF1bHRNaW51dGU6MCxkZWZhdWx0U2Vjb25kczowLGRpc2FibGU6W10sZGlzYWJsZU1vYmlsZTohMSxlbmFibGVTZWNvbmRzOiExLGVuYWJsZVRpbWU6ITEsZXJyb3JIYW5kbGVyOmZ1bmN0aW9uKGUpe3JldHVybiJ1bmRlZmluZWQiIT10eXBlb2YgY29uc29sZSYmY29uc29sZS53YXJuKGUpfSxnZXRXZWVrOmZ1bmN0aW9uKGUpe3ZhciB0PW5ldyBEYXRlKGUuZ2V0VGltZSgpKTt0LnNldEhvdXJzKDAsMCwwLDApLHQuc2V0RGF0ZSh0LmdldERhdGUoKSszLSh0LmdldERheSgpKzYpJTcpO3ZhciBuPW5ldyBEYXRlKHQuZ2V0RnVsbFllYXIoKSwwLDQpO3JldHVybiAxK01hdGgucm91bmQoKCh0LmdldFRpbWUoKS1uLmdldFRpbWUoKSkvODY0ZTUtMysobi5nZXREYXkoKSs2KSU3KS83KX0saG91ckluY3JlbWVudDoxLGlnbm9yZWRGb2N1c0VsZW1lbnRzOltdLGlubGluZTohMSxsb2NhbGU6ImRlZmF1bHQiLG1pbnV0ZUluY3JlbWVudDo1LG1vZGU6InNpbmdsZSIsbW9udGhTZWxlY3RvclR5cGU6ImRyb3Bkb3duIixuZXh0QXJyb3c6IjxzdmcgdmVyc2lvbj0nMS4xJyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHhtbG5zOnhsaW5rPSdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rJyB2aWV3Qm94PScwIDAgMTcgMTcnPjxnPjwvZz48cGF0aCBkPSdNMTMuMjA3IDguNDcybC03Ljg1NCA3Ljg1NC0wLjcwNy0wLjcwNyA3LjE0Ni03LjE0Ni03LjE0Ni03LjE0OCAwLjcwNy0wLjcwNyA3Ljg1NCA3Ljg1NHonIC8+PC9zdmc+Iixub0NhbGVuZGFyOiExLG5vdzpuZXcgRGF0ZSxvbkNoYW5nZTpbXSxvbkNsb3NlOltdLG9uRGF5Q3JlYXRlOltdLG9uRGVzdHJveTpbXSxvbktleURvd246W10sb25Nb250aENoYW5nZTpbXSxvbk9wZW46W10sb25QYXJzZUNvbmZpZzpbXSxvblJlYWR5OltdLG9uVmFsdWVVcGRhdGU6W10sb25ZZWFyQ2hhbmdlOltdLG9uUHJlQ2FsZW5kYXJQb3NpdGlvbjpbXSxwbHVnaW5zOltdLHBvc2l0aW9uOiJhdXRvIixwb3NpdGlvbkVsZW1lbnQ6dm9pZCAwLHByZXZBcnJvdzoiPHN2ZyB2ZXJzaW9uPScxLjEnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZycgeG1sbnM6eGxpbms9J2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsnIHZpZXdCb3g9JzAgMCAxNyAxNyc+PGc+PC9nPjxwYXRoIGQ9J001LjIwNyA4LjQ3MWw3LjE0NiA3LjE0Ny0wLjcwNyAwLjcwNy03Ljg1My03Ljg1NCA3Ljg1NC03Ljg1MyAwLjcwNyAwLjcwNy03LjE0NyA3LjE0NnonIC8+PC9zdmc+IixzaG9ydGhhbmRDdXJyZW50TW9udGg6ITEsc2hvd01vbnRoczoxLHN0YXRpYzohMSx0aW1lXzI0aHI6ITEsd2Vla051bWJlcnM6ITEsd3JhcDohMX0saT17d2Vla2RheXM6e3Nob3J0aGFuZDpbIlN1biIsIk1vbiIsIlR1ZSIsIldlZCIsIlRodSIsIkZyaSIsIlNhdCJdLGxvbmdoYW5kOlsiU3VuZGF5IiwiTW9uZGF5IiwiVHVlc2RheSIsIldlZG5lc2RheSIsIlRodXJzZGF5IiwiRnJpZGF5IiwiU2F0dXJkYXkiXX0sbW9udGhzOntzaG9ydGhhbmQ6WyJKYW4iLCJGZWIiLCJNYXIiLCJBcHIiLCJNYXkiLCJKdW4iLCJKdWwiLCJBdWciLCJTZXAiLCJPY3QiLCJOb3YiLCJEZWMiXSxsb25naGFuZDpbIkphbnVhcnkiLCJGZWJydWFyeSIsIk1hcmNoIiwiQXByaWwiLCJNYXkiLCJKdW5lIiwiSnVseSIsIkF1Z3VzdCIsIlNlcHRlbWJlciIsIk9jdG9iZXIiLCJOb3ZlbWJlciIsIkRlY2VtYmVyIl19LGRheXNJbk1vbnRoOlszMSwyOCwzMSwzMCwzMSwzMCwzMSwzMSwzMCwzMSwzMCwzMV0sZmlyc3REYXlPZldlZWs6MCxvcmRpbmFsOmZ1bmN0aW9uKGUpe3ZhciB0PWUlMTAwO2lmKHQ+MyYmdDwyMSlyZXR1cm4idGgiO3N3aXRjaCh0JTEwKXtjYXNlIDE6cmV0dXJuInN0IjtjYXNlIDI6cmV0dXJuIm5kIjtjYXNlIDM6cmV0dXJuInJkIjtkZWZhdWx0OnJldHVybiJ0aCJ9fSxyYW5nZVNlcGFyYXRvcjoiIHRvICIsd2Vla0FiYnJldmlhdGlvbjoiV2siLHNjcm9sbFRpdGxlOiJTY3JvbGwgdG8gaW5jcmVtZW50Iix0b2dnbGVUaXRsZToiQ2xpY2sgdG8gdG9nZ2xlIixhbVBNOlsiQU0iLCJQTSJdLHllYXJBcmlhTGFiZWw6IlllYXIiLG1vbnRoQXJpYUxhYmVsOiJNb250aCIsaG91ckFyaWFMYWJlbDoiSG91ciIsbWludXRlQXJpYUxhYmVsOiJNaW51dGUiLHRpbWVfMjRocjohMX0sbz1mdW5jdGlvbihlLHQpe3JldHVybiB2b2lkIDA9PT10JiYodD0yKSwoIjAwMCIrZSkuc2xpY2UoLTEqdCl9LHI9ZnVuY3Rpb24oZSl7cmV0dXJuITA9PT1lPzE6MH07ZnVuY3Rpb24gbChlLHQpe3ZhciBuO3JldHVybiBmdW5jdGlvbigpe3ZhciBhPXRoaXM7Y2xlYXJUaW1lb3V0KG4pLG49c2V0VGltZW91dCgoZnVuY3Rpb24oKXtyZXR1cm4gZS5hcHBseShhLGFyZ3VtZW50cyl9KSx0KX19dmFyIGM9ZnVuY3Rpb24oZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiBBcnJheT9lOltlXX07ZnVuY3Rpb24gZChlLHQsbil7aWYoITA9PT1uKXJldHVybiBlLmNsYXNzTGlzdC5hZGQodCk7ZS5jbGFzc0xpc3QucmVtb3ZlKHQpfWZ1bmN0aW9uIHMoZSx0LG4pe3ZhciBhPXdpbmRvdy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KGUpO3JldHVybiB0PXR8fCIiLG49bnx8IiIsYS5jbGFzc05hbWU9dCx2b2lkIDAhPT1uJiYoYS50ZXh0Q29udGVudD1uKSxhfWZ1bmN0aW9uIHUoZSl7Zm9yKDtlLmZpcnN0Q2hpbGQ7KWUucmVtb3ZlQ2hpbGQoZS5maXJzdENoaWxkKX1mdW5jdGlvbiBmKGUsdCl7cmV0dXJuIHQoZSk\/ZTplLnBhcmVudE5vZGU\/ZihlLnBhcmVudE5vZGUsdCk6dm9pZCAwfWZ1bmN0aW9uIG0oZSx0KXt2YXIgbj1zKCJkaXYiLCJudW1JbnB1dFdyYXBwZXIiKSxhPXMoImlucHV0IiwibnVtSW5wdXQgIitlKSxpPXMoInNwYW4iLCJhcnJvd1VwIiksbz1zKCJzcGFuIiwiYXJyb3dEb3duIik7aWYoLTE9PT1uYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoIk1TSUUgOS4wIik\/YS50eXBlPSJudW1iZXIiOihhLnR5cGU9InRleHQiLGEucGF0dGVybj0iXFxkKiIpLHZvaWQgMCE9PXQpZm9yKHZhciByIGluIHQpYS5zZXRBdHRyaWJ1dGUocix0W3JdKTtyZXR1cm4gbi5hcHBlbmRDaGlsZChhKSxuLmFwcGVuZENoaWxkKGkpLG4uYXBwZW5kQ2hpbGQobyksbn1mdW5jdGlvbiBnKGUpe3RyeXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgZS5jb21wb3NlZFBhdGg\/ZS5jb21wb3NlZFBhdGgoKVswXTplLnRhcmdldH1jYXRjaCh0KXtyZXR1cm4gZS50YXJnZXR9fXZhciBwPWZ1bmN0aW9uKCl7fSxoPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gbi5tb250aHNbdD8ic2hvcnRoYW5kIjoibG9uZ2hhbmQiXVtlXX0sdj17RDpwLEY6ZnVuY3Rpb24oZSx0LG4pe2Uuc2V0TW9udGgobi5tb250aHMubG9uZ2hhbmQuaW5kZXhPZih0KSl9LEc6ZnVuY3Rpb24oZSx0KXtlLnNldEhvdXJzKHBhcnNlRmxvYXQodCkpfSxIOmZ1bmN0aW9uKGUsdCl7ZS5zZXRIb3VycyhwYXJzZUZsb2F0KHQpKX0sSjpmdW5jdGlvbihlLHQpe2Uuc2V0RGF0ZShwYXJzZUZsb2F0KHQpKX0sSzpmdW5jdGlvbihlLHQsbil7ZS5zZXRIb3VycyhlLmdldEhvdXJzKCklMTIrMTIqcihuZXcgUmVnRXhwKG4uYW1QTVsxXSwiaSIpLnRlc3QodCkpKX0sTTpmdW5jdGlvbihlLHQsbil7ZS5zZXRNb250aChuLm1vbnRocy5zaG9ydGhhbmQuaW5kZXhPZih0KSl9LFM6ZnVuY3Rpb24oZSx0KXtlLnNldFNlY29uZHMocGFyc2VGbG9hdCh0KSl9LFU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbmV3IERhdGUoMWUzKnBhcnNlRmxvYXQodCkpfSxXOmZ1bmN0aW9uKGUsdCxuKXt2YXIgYT1wYXJzZUludCh0KSxpPW5ldyBEYXRlKGUuZ2V0RnVsbFllYXIoKSwwLDIrNyooYS0xKSwwLDAsMCwwKTtyZXR1cm4gaS5zZXREYXRlKGkuZ2V0RGF0ZSgpLWkuZ2V0RGF5KCkrbi5maXJzdERheU9mV2VlayksaX0sWTpmdW5jdGlvbihlLHQpe2Uuc2V0RnVsbFllYXIocGFyc2VGbG9hdCh0KSl9LFo6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbmV3IERhdGUodCl9LGQ6ZnVuY3Rpb24oZSx0KXtlLnNldERhdGUocGFyc2VGbG9hdCh0KSl9LGg6ZnVuY3Rpb24oZSx0KXtlLnNldEhvdXJzKHBhcnNlRmxvYXQodCkpfSxpOmZ1bmN0aW9uKGUsdCl7ZS5zZXRNaW51dGVzKHBhcnNlRmxvYXQodCkpfSxqOmZ1bmN0aW9uKGUsdCl7ZS5zZXREYXRlKHBhcnNlRmxvYXQodCkpfSxsOnAsbTpmdW5jdGlvbihlLHQpe2Uuc2V0TW9udGgocGFyc2VGbG9hdCh0KS0xKX0sbjpmdW5jdGlvbihlLHQpe2Uuc2V0TW9udGgocGFyc2VGbG9hdCh0KS0xKX0sczpmdW5jdGlvbihlLHQpe2Uuc2V0U2Vjb25kcyhwYXJzZUZsb2F0KHQpKX0sdTpmdW5jdGlvbihlLHQpe3JldHVybiBuZXcgRGF0ZShwYXJzZUZsb2F0KHQpKX0sdzpwLHk6ZnVuY3Rpb24oZSx0KXtlLnNldEZ1bGxZZWFyKDJlMytwYXJzZUZsb2F0KHQpKX19LEQ9e0Q6IihcXHcrKSIsRjoiKFxcdyspIixHOiIoXFxkXFxkfFxcZCkiLEg6IihcXGRcXGR8XFxkKSIsSjoiKFxcZFxcZHxcXGQpXFx3KyIsSzoiIixNOiIoXFx3KykiLFM6IihcXGRcXGR8XFxkKSIsVToiKC4rKSIsVzoiKFxcZFxcZHxcXGQpIixZOiIoXFxkezR9KSIsWjoiKC4rKSIsZDoiKFxcZFxcZHxcXGQpIixoOiIoXFxkXFxkfFxcZCkiLGk6IihcXGRcXGR8XFxkKSIsajoiKFxcZFxcZHxcXGQpIixsOiIoXFx3KykiLG06IihcXGRcXGR8XFxkKSIsbjoiKFxcZFxcZHxcXGQpIixzOiIoXFxkXFxkfFxcZCkiLHU6IiguKykiLHc6IihcXGRcXGR8XFxkKSIseToiKFxcZHsyfSkifSx3PXtaOmZ1bmN0aW9uKGUpe3JldHVybiBlLnRvSVNPU3RyaW5nKCl9LEQ6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiB0LndlZWtkYXlzLnNob3J0aGFuZFt3LncoZSx0LG4pXX0sRjpmdW5jdGlvbihlLHQsbil7cmV0dXJuIGgody5uKGUsdCxuKS0xLCExLHQpfSxHOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gbyh3LmgoZSx0LG4pKX0sSDpmdW5jdGlvbihlKXtyZXR1cm4gbyhlLmdldEhvdXJzKCkpfSxKOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHZvaWQgMCE9PXQub3JkaW5hbD9lLmdldERhdGUoKSt0Lm9yZGluYWwoZS5nZXREYXRlKCkpOmUuZ2V0RGF0ZSgpfSxLOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQuYW1QTVtyKGUuZ2V0SG91cnMoKT4xMSldfSxNOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGgoZS5nZXRNb250aCgpLCEwLHQpfSxTOmZ1bmN0aW9uKGUpe3JldHVybiBvKGUuZ2V0U2Vjb25kcygpKX0sVTpmdW5jdGlvbihlKXtyZXR1cm4gZS5nZXRUaW1lKCkvMWUzfSxXOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gbi5nZXRXZWVrKGUpfSxZOmZ1bmN0aW9uKGUpe3JldHVybiBvKGUuZ2V0RnVsbFllYXIoKSw0KX0sZDpmdW5jdGlvbihlKXtyZXR1cm4gbyhlLmdldERhdGUoKSl9LGg6ZnVuY3Rpb24oZSl7cmV0dXJuIGUuZ2V0SG91cnMoKSUxMj9lLmdldEhvdXJzKCklMTI6MTJ9LGk6ZnVuY3Rpb24oZSl7cmV0dXJuIG8oZS5nZXRNaW51dGVzKCkpfSxqOmZ1bmN0aW9uKGUpe3JldHVybiBlLmdldERhdGUoKX0sbDpmdW5jdGlvbihlLHQpe3JldHVybiB0LndlZWtkYXlzLmxvbmdoYW5kW2UuZ2V0RGF5KCldfSxtOmZ1bmN0aW9uKGUpe3JldHVybiBvKGUuZ2V0TW9udGgoKSsxKX0sbjpmdW5jdGlvbihlKXtyZXR1cm4gZS5nZXRNb250aCgpKzF9LHM6ZnVuY3Rpb24oZSl7cmV0dXJuIGUuZ2V0U2Vjb25kcygpfSx1OmZ1bmN0aW9uKGUpe3JldHVybiBlLmdldFRpbWUoKX0sdzpmdW5jdGlvbihlKXtyZXR1cm4gZS5nZXREYXkoKX0seTpmdW5jdGlvbihlKXtyZXR1cm4gU3RyaW5nKGUuZ2V0RnVsbFllYXIoKSkuc3Vic3RyaW5nKDIpfX0sYj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbmZpZyxuPXZvaWQgMD09PXQ\/YTp0LG89ZS5sMTBuLHI9dm9pZCAwPT09bz9pOm8sbD1lLmlzTW9iaWxlLGM9dm9pZCAwIT09bCYmbDtyZXR1cm4gZnVuY3Rpb24oZSx0LGEpe3ZhciBpPWF8fHI7cmV0dXJuIHZvaWQgMD09PW4uZm9ybWF0RGF0ZXx8Yz90LnNwbGl0KCIiKS5tYXAoKGZ1bmN0aW9uKHQsYSxvKXtyZXR1cm4gd1t0XSYmIlxcIiE9PW9bYS0xXT93W3RdKGUsaSxuKToiXFwiIT09dD90OiIifSkpLmpvaW4oIiIpOm4uZm9ybWF0RGF0ZShlLHQsaSl9fSxDPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29uZmlnLG49dm9pZCAwPT09dD9hOnQsbz1lLmwxMG4scj12b2lkIDA9PT1vP2k6bztyZXR1cm4gZnVuY3Rpb24oZSx0LGksbyl7aWYoMD09PWV8fGUpe3ZhciBsLGM9b3x8cixkPWU7aWYoZSBpbnN0YW5jZW9mIERhdGUpbD1uZXcgRGF0ZShlLmdldFRpbWUoKSk7ZWxzZSBpZigic3RyaW5nIiE9dHlwZW9mIGUmJnZvaWQgMCE9PWUudG9GaXhlZClsPW5ldyBEYXRlKGUpO2Vsc2UgaWYoInN0cmluZyI9PXR5cGVvZiBlKXt2YXIgcz10fHwobnx8YSkuZGF0ZUZvcm1hdCx1PVN0cmluZyhlKS50cmltKCk7aWYoInRvZGF5Ij09PXUpbD1uZXcgRGF0ZSxpPSEwO2Vsc2UgaWYoL1okLy50ZXN0KHUpfHwvR01UJC8udGVzdCh1KSlsPW5ldyBEYXRlKGUpO2Vsc2UgaWYobiYmbi5wYXJzZURhdGUpbD1uLnBhcnNlRGF0ZShlLHMpO2Vsc2V7bD1uJiZuLm5vQ2FsZW5kYXI\/bmV3IERhdGUoKG5ldyBEYXRlKS5zZXRIb3VycygwLDAsMCwwKSk6bmV3IERhdGUoKG5ldyBEYXRlKS5nZXRGdWxsWWVhcigpLDAsMSwwLDAsMCwwKTtmb3IodmFyIGY9dm9pZCAwLG09W10sZz0wLHA9MCxoPSIiO2c8cy5sZW5ndGg7ZysrKXt2YXIgdz1zW2ddLGI9IlxcIj09PXcsQz0iXFwiPT09c1tnLTFdfHxiO2lmKERbd10mJiFDKXtoKz1EW3ddO3ZhciBNPW5ldyBSZWdFeHAoaCkuZXhlYyhlKTtNJiYoZj0hMCkmJm1bIlkiIT09dz8icHVzaCI6InVuc2hpZnQiXSh7Zm46dlt3XSx2YWw6TVsrK3BdfSl9ZWxzZSBifHwoaCs9Ii4iKTttLmZvckVhY2goKGZ1bmN0aW9uKGUpe3ZhciB0PWUuZm4sbj1lLnZhbDtyZXR1cm4gbD10KGwsbixjKXx8bH0pKX1sPWY\/bDp2b2lkIDB9fWlmKGwgaW5zdGFuY2VvZiBEYXRlJiYhaXNOYU4obC5nZXRUaW1lKCkpKXJldHVybiEwPT09aSYmbC5zZXRIb3VycygwLDAsMCwwKSxsO24uZXJyb3JIYW5kbGVyKG5ldyBFcnJvcigiSW52YWxpZCBkYXRlIHByb3ZpZGVkOiAiK2QpKX19fTtmdW5jdGlvbiBNKGUsdCxuKXtyZXR1cm4gdm9pZCAwPT09biYmKG49ITApLCExIT09bj9uZXcgRGF0ZShlLmdldFRpbWUoKSkuc2V0SG91cnMoMCwwLDAsMCktbmV3IERhdGUodC5nZXRUaW1lKCkpLnNldEhvdXJzKDAsMCwwLDApOmUuZ2V0VGltZSgpLXQuZ2V0VGltZSgpfXZhciB5PTg2NGU1O2Z1bmN0aW9uIHgoZSl7dmFyIHQ9ZS5kZWZhdWx0SG91cixuPWUuZGVmYXVsdE1pbnV0ZSxhPWUuZGVmYXVsdFNlY29uZHM7aWYodm9pZCAwIT09ZS5taW5EYXRlKXt2YXIgaT1lLm1pbkRhdGUuZ2V0SG91cnMoKSxvPWUubWluRGF0ZS5nZXRNaW51dGVzKCkscj1lLm1pbkRhdGUuZ2V0U2Vjb25kcygpO3Q8aSYmKHQ9aSksdD09PWkmJm48byYmKG49byksdD09PWkmJm49PT1vJiZhPHImJihhPWUubWluRGF0ZS5nZXRTZWNvbmRzKCkpfWlmKHZvaWQgMCE9PWUubWF4RGF0ZSl7dmFyIGw9ZS5tYXhEYXRlLmdldEhvdXJzKCksYz1lLm1heERhdGUuZ2V0TWludXRlcygpOyh0PU1hdGgubWluKHQsbCkpPT09bCYmKG49TWF0aC5taW4oYyxuKSksdD09PWwmJm49PT1jJiYoYT1lLm1heERhdGUuZ2V0U2Vjb25kcygpKX1yZXR1cm57aG91cnM6dCxtaW51dGVzOm4sc2Vjb25kczphfX0iZnVuY3Rpb24iIT10eXBlb2YgT2JqZWN0LmFzc2lnbiYmKE9iamVjdC5hc3NpZ249ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PVtdLG49MTtuPGFyZ3VtZW50cy5sZW5ndGg7bisrKXRbbi0xXT1hcmd1bWVudHNbbl07aWYoIWUpdGhyb3cgVHlwZUVycm9yKCJDYW5ub3QgY29udmVydCB1bmRlZmluZWQgb3IgbnVsbCB0byBvYmplY3QiKTtmb3IodmFyIGE9ZnVuY3Rpb24odCl7dCYmT2JqZWN0LmtleXModCkuZm9yRWFjaCgoZnVuY3Rpb24obil7cmV0dXJuIGVbbl09dFtuXX0pKX0saT0wLG89dDtpPG8ubGVuZ3RoO2krKyl7dmFyIHI9b1tpXTthKHIpfXJldHVybiBlfSk7ZnVuY3Rpb24gRShwLHYpe3ZhciB3PXtjb25maWc6ZShlKHt9LGEpLFQuZGVmYXVsdENvbmZpZyksbDEwbjppfTtmdW5jdGlvbiBFKGUpe3JldHVybiBlLmJpbmQodyl9ZnVuY3Rpb24gaygpe3ZhciBlPXcuY29uZmlnOyExPT09ZS53ZWVrTnVtYmVycyYmMT09PWUuc2hvd01vbnRoc3x8ITAhPT1lLm5vQ2FsZW5kYXImJndpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKGZ1bmN0aW9uKCl7aWYodm9pZCAwIT09dy5jYWxlbmRhckNvbnRhaW5lciYmKHcuY2FsZW5kYXJDb250YWluZXIuc3R5bGUudmlzaWJpbGl0eT0iaGlkZGVuIix3LmNhbGVuZGFyQ29udGFpbmVyLnN0eWxlLmRpc3BsYXk9ImJsb2NrIiksdm9pZCAwIT09dy5kYXlzQ29udGFpbmVyKXt2YXIgdD0ody5kYXlzLm9mZnNldFdpZHRoKzEpKmUuc2hvd01vbnRoczt3LmRheXNDb250YWluZXIuc3R5bGUud2lkdGg9dCsicHgiLHcuY2FsZW5kYXJDb250YWluZXIuc3R5bGUud2lkdGg9dCsodm9pZCAwIT09dy53ZWVrV3JhcHBlcj93LndlZWtXcmFwcGVyLm9mZnNldFdpZHRoOjApKyJweCIsdy5jYWxlbmRhckNvbnRhaW5lci5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgidmlzaWJpbGl0eSIpLHcuY2FsZW5kYXJDb250YWluZXIuc3R5bGUucmVtb3ZlUHJvcGVydHkoImRpc3BsYXkiKX19KSl9ZnVuY3Rpb24gSShlKXtpZigwPT09dy5zZWxlY3RlZERhdGVzLmxlbmd0aCl7dmFyIHQ9dm9pZCAwPT09dy5jb25maWcubWluRGF0ZXx8TShuZXcgRGF0ZSx3LmNvbmZpZy5taW5EYXRlKT49MD9uZXcgRGF0ZTpuZXcgRGF0ZSh3LmNvbmZpZy5taW5EYXRlLmdldFRpbWUoKSksbj14KHcuY29uZmlnKTt0LnNldEhvdXJzKG4uaG91cnMsbi5taW51dGVzLG4uc2Vjb25kcyx0LmdldE1pbGxpc2Vjb25kcygpKSx3LnNlbGVjdGVkRGF0ZXM9W3RdLHcubGF0ZXN0U2VsZWN0ZWREYXRlT2JqPXR9dm9pZCAwIT09ZSYmImJsdXIiIT09ZS50eXBlJiZmdW5jdGlvbihlKXtlLnByZXZlbnREZWZhdWx0KCk7dmFyIHQ9ImtleWRvd24iPT09ZS50eXBlLG49ZyhlKSxhPW47dm9pZCAwIT09dy5hbVBNJiZuPT09dy5hbVBNJiYody5hbVBNLnRleHRDb250ZW50PXcubDEwbi5hbVBNW3Iody5hbVBNLnRleHRDb250ZW50PT09dy5sMTBuLmFtUE1bMF0pXSk7dmFyIGk9cGFyc2VGbG9hdChhLmdldEF0dHJpYnV0ZSgibWluIikpLGw9cGFyc2VGbG9hdChhLmdldEF0dHJpYnV0ZSgibWF4IikpLGM9cGFyc2VGbG9hdChhLmdldEF0dHJpYnV0ZSgic3RlcCIpKSxkPXBhcnNlSW50KGEudmFsdWUsMTApLHM9ZS5kZWx0YXx8KHQ\/Mzg9PT1lLndoaWNoPzE6LTE6MCksdT1kK2MqcztpZih2b2lkIDAhPT1hLnZhbHVlJiYyPT09YS52YWx1ZS5sZW5ndGgpe3ZhciBmPWE9PT13LmhvdXJFbGVtZW50LG09YT09PXcubWludXRlRWxlbWVudDt1PGk\/KHU9bCt1K3IoIWYpKyhyKGYpJiZyKCF3LmFtUE0pKSxtJiZqKHZvaWQgMCwtMSx3LmhvdXJFbGVtZW50KSk6dT5sJiYodT1hPT09dy5ob3VyRWxlbWVudD91LWwtcighdy5hbVBNKTppLG0mJmoodm9pZCAwLDEsdy5ob3VyRWxlbWVudCkpLHcuYW1QTSYmZiYmKDE9PT1jP3UrZD09PTIzOk1hdGguYWJzKHUtZCk+YykmJih3LmFtUE0udGV4dENvbnRlbnQ9dy5sMTBuLmFtUE1bcih3LmFtUE0udGV4dENvbnRlbnQ9PT13LmwxMG4uYW1QTVswXSldKSxhLnZhbHVlPW8odSl9fShlKTt2YXIgYT13Ll9pbnB1dC52YWx1ZTtTKCksYmUoKSx3Ll9pbnB1dC52YWx1ZSE9PWEmJncuX2RlYm91bmNlZENoYW5nZSgpfWZ1bmN0aW9uIFMoKXtpZih2b2lkIDAhPT13LmhvdXJFbGVtZW50JiZ2b2lkIDAhPT13Lm1pbnV0ZUVsZW1lbnQpe3ZhciBlLHQsbj0ocGFyc2VJbnQody5ob3VyRWxlbWVudC52YWx1ZS5zbGljZSgtMiksMTApfHwwKSUyNCxhPShwYXJzZUludCh3Lm1pbnV0ZUVsZW1lbnQudmFsdWUsMTApfHwwKSU2MCxpPXZvaWQgMCE9PXcuc2Vjb25kRWxlbWVudD8ocGFyc2VJbnQody5zZWNvbmRFbGVtZW50LnZhbHVlLDEwKXx8MCklNjA6MDt2b2lkIDAhPT13LmFtUE0mJihlPW4sdD13LmFtUE0udGV4dENvbnRlbnQsbj1lJTEyKzEyKnIodD09PXcubDEwbi5hbVBNWzFdKSk7dmFyIG89dm9pZCAwIT09dy5jb25maWcubWluVGltZXx8dy5jb25maWcubWluRGF0ZSYmdy5taW5EYXRlSGFzVGltZSYmdy5sYXRlc3RTZWxlY3RlZERhdGVPYmomJjA9PT1NKHcubGF0ZXN0U2VsZWN0ZWREYXRlT2JqLHcuY29uZmlnLm1pbkRhdGUsITApO2lmKHZvaWQgMCE9PXcuY29uZmlnLm1heFRpbWV8fHcuY29uZmlnLm1heERhdGUmJncubWF4RGF0ZUhhc1RpbWUmJncubGF0ZXN0U2VsZWN0ZWREYXRlT2JqJiYwPT09TSh3LmxhdGVzdFNlbGVjdGVkRGF0ZU9iaix3LmNvbmZpZy5tYXhEYXRlLCEwKSl7dmFyIGw9dm9pZCAwIT09dy5jb25maWcubWF4VGltZT93LmNvbmZpZy5tYXhUaW1lOncuY29uZmlnLm1heERhdGU7KG49TWF0aC5taW4obixsLmdldEhvdXJzKCkpKT09PWwuZ2V0SG91cnMoKSYmKGE9TWF0aC5taW4oYSxsLmdldE1pbnV0ZXMoKSkpLGE9PT1sLmdldE1pbnV0ZXMoKSYmKGk9TWF0aC5taW4oaSxsLmdldFNlY29uZHMoKSkpfWlmKG8pe3ZhciBjPXZvaWQgMCE9PXcuY29uZmlnLm1pblRpbWU\/dy5jb25maWcubWluVGltZTp3LmNvbmZpZy5taW5EYXRlOyhuPU1hdGgubWF4KG4sYy5nZXRIb3VycygpKSk9PT1jLmdldEhvdXJzKCkmJmE8Yy5nZXRNaW51dGVzKCkmJihhPWMuZ2V0TWludXRlcygpKSxhPT09Yy5nZXRNaW51dGVzKCkmJihpPU1hdGgubWF4KGksYy5nZXRTZWNvbmRzKCkpKX1PKG4sYSxpKX19ZnVuY3Rpb24gXyhlKXt2YXIgdD1lfHx3LmxhdGVzdFNlbGVjdGVkRGF0ZU9iajt0JiZPKHQuZ2V0SG91cnMoKSx0LmdldE1pbnV0ZXMoKSx0LmdldFNlY29uZHMoKSl9ZnVuY3Rpb24gTyhlLHQsbil7dm9pZCAwIT09dy5sYXRlc3RTZWxlY3RlZERhdGVPYmomJncubGF0ZXN0U2VsZWN0ZWREYXRlT2JqLnNldEhvdXJzKGUlMjQsdCxufHwwLDApLHcuaG91ckVsZW1lbnQmJncubWludXRlRWxlbWVudCYmIXcuaXNNb2JpbGUmJih3LmhvdXJFbGVtZW50LnZhbHVlPW8ody5jb25maWcudGltZV8yNGhyP2U6KDEyK2UpJTEyKzEyKnIoZSUxMj09MCkpLHcubWludXRlRWxlbWVudC52YWx1ZT1vKHQpLHZvaWQgMCE9PXcuYW1QTSYmKHcuYW1QTS50ZXh0Q29udGVudD13LmwxMG4uYW1QTVtyKGU+PTEyKV0pLHZvaWQgMCE9PXcuc2Vjb25kRWxlbWVudCYmKHcuc2Vjb25kRWxlbWVudC52YWx1ZT1vKG4pKSl9ZnVuY3Rpb24gRihlKXt2YXIgdD1nKGUpLG49cGFyc2VJbnQodC52YWx1ZSkrKGUuZGVsdGF8fDApOyhuLzFlMz4xfHwiRW50ZXIiPT09ZS5rZXkmJiEvW15cZF0vLnRlc3Qobi50b1N0cmluZygpKSkmJlEobil9ZnVuY3Rpb24gQShlLHQsbixhKXtyZXR1cm4gdCBpbnN0YW5jZW9mIEFycmF5P3QuZm9yRWFjaCgoZnVuY3Rpb24odCl7cmV0dXJuIEEoZSx0LG4sYSl9KSk6ZSBpbnN0YW5jZW9mIEFycmF5P2UuZm9yRWFjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIEEoZSx0LG4sYSl9KSk6KGUuYWRkRXZlbnRMaXN0ZW5lcih0LG4sYSksdm9pZCB3Ll9oYW5kbGVycy5wdXNoKHtyZW1vdmU6ZnVuY3Rpb24oKXtyZXR1cm4gZS5yZW1vdmVFdmVudExpc3RlbmVyKHQsbil9fSkpfWZ1bmN0aW9uIE4oKXtwZSgib25DaGFuZ2UiKX1mdW5jdGlvbiBQKGUsdCl7dmFyIG49dm9pZCAwIT09ZT93LnBhcnNlRGF0ZShlKTp3LmxhdGVzdFNlbGVjdGVkRGF0ZU9ianx8KHcuY29uZmlnLm1pbkRhdGUmJncuY29uZmlnLm1pbkRhdGU+dy5ub3c\/dy5jb25maWcubWluRGF0ZTp3LmNvbmZpZy5tYXhEYXRlJiZ3LmNvbmZpZy5tYXhEYXRlPHcubm93P3cuY29uZmlnLm1heERhdGU6dy5ub3cpLGE9dy5jdXJyZW50WWVhcixpPXcuY3VycmVudE1vbnRoO3RyeXt2b2lkIDAhPT1uJiYody5jdXJyZW50WWVhcj1uLmdldEZ1bGxZZWFyKCksdy5jdXJyZW50TW9udGg9bi5nZXRNb250aCgpKX1jYXRjaChlKXtlLm1lc3NhZ2U9IkludmFsaWQgZGF0ZSBzdXBwbGllZDogIituLHcuY29uZmlnLmVycm9ySGFuZGxlcihlKX10JiZ3LmN1cnJlbnRZZWFyIT09YSYmKHBlKCJvblllYXJDaGFuZ2UiKSxLKCkpLCF0fHx3LmN1cnJlbnRZZWFyPT09YSYmdy5jdXJyZW50TW9udGg9PT1pfHxwZSgib25Nb250aENoYW5nZSIpLHcucmVkcmF3KCl9ZnVuY3Rpb24gWShlKXt2YXIgdD1nKGUpO350LmNsYXNzTmFtZS5pbmRleE9mKCJhcnJvdyIpJiZqKGUsdC5jbGFzc0xpc3QuY29udGFpbnMoImFycm93VXAiKT8xOi0xKX1mdW5jdGlvbiBqKGUsdCxuKXt2YXIgYT1lJiZnKGUpLGk9bnx8YSYmYS5wYXJlbnROb2RlJiZhLnBhcmVudE5vZGUuZmlyc3RDaGlsZCxvPWhlKCJpbmNyZW1lbnQiKTtvLmRlbHRhPXQsaSYmaS5kaXNwYXRjaEV2ZW50KG8pfWZ1bmN0aW9uIEgoZSx0LG4sYSl7dmFyIGk9WCh0LCEwKSxvPXMoInNwYW4iLCJmbGF0cGlja3ItZGF5ICIrZSx0LmdldERhdGUoKS50b1N0cmluZygpKTtyZXR1cm4gby5kYXRlT2JqPXQsby4kaT1hLG8uc2V0QXR0cmlidXRlKCJhcmlhLWxhYmVsIix3LmZvcm1hdERhdGUodCx3LmNvbmZpZy5hcmlhRGF0ZUZvcm1hdCkpLC0xPT09ZS5pbmRleE9mKCJoaWRkZW4iKSYmMD09PU0odCx3Lm5vdykmJih3LnRvZGF5RGF0ZUVsZW09byxvLmNsYXNzTGlzdC5hZGQoInRvZGF5Iiksby5zZXRBdHRyaWJ1dGUoImFyaWEtY3VycmVudCIsImRhdGUiKSksaT8oby50YWJJbmRleD0tMSx2ZSh0KSYmKG8uY2xhc3NMaXN0LmFkZCgic2VsZWN0ZWQiKSx3LnNlbGVjdGVkRGF0ZUVsZW09bywicmFuZ2UiPT09dy5jb25maWcubW9kZSYmKGQobywic3RhcnRSYW5nZSIsdy5zZWxlY3RlZERhdGVzWzBdJiYwPT09TSh0LHcuc2VsZWN0ZWREYXRlc1swXSwhMCkpLGQobywiZW5kUmFuZ2UiLHcuc2VsZWN0ZWREYXRlc1sxXSYmMD09PU0odCx3LnNlbGVjdGVkRGF0ZXNbMV0sITApKSwibmV4dE1vbnRoRGF5Ij09PWUmJm8uY2xhc3NMaXN0LmFkZCgiaW5SYW5nZSIpKSkpOm8uY2xhc3NMaXN0LmFkZCgiZmxhdHBpY2tyLWRpc2FibGVkIiksInJhbmdlIj09PXcuY29uZmlnLm1vZGUmJmZ1bmN0aW9uKGUpe3JldHVybiEoInJhbmdlIiE9PXcuY29uZmlnLm1vZGV8fHcuc2VsZWN0ZWREYXRlcy5sZW5ndGg8MikmJihNKGUsdy5zZWxlY3RlZERhdGVzWzBdKT49MCYmTShlLHcuc2VsZWN0ZWREYXRlc1sxXSk8PTApfSh0KSYmIXZlKHQpJiZvLmNsYXNzTGlzdC5hZGQoImluUmFuZ2UiKSx3LndlZWtOdW1iZXJzJiYxPT09dy5jb25maWcuc2hvd01vbnRocyYmInByZXZNb250aERheSIhPT1lJiZuJTc9PTEmJncud2Vla051bWJlcnMuaW5zZXJ0QWRqYWNlbnRIVE1MKCJiZWZvcmVlbmQiLCI8c3BhbiBjbGFzcz0nZmxhdHBpY2tyLWRheSc+Iit3LmNvbmZpZy5nZXRXZWVrKHQpKyI8L3NwYW4+IikscGUoIm9uRGF5Q3JlYXRlIixvKSxvfWZ1bmN0aW9uIEwoZSl7ZS5mb2N1cygpLCJyYW5nZSI9PT13LmNvbmZpZy5tb2RlJiZhZShlKX1mdW5jdGlvbiBXKGUpe2Zvcih2YXIgdD1lPjA\/MDp3LmNvbmZpZy5zaG93TW9udGhzLTEsbj1lPjA\/dy5jb25maWcuc2hvd01vbnRoczotMSxhPXQ7YSE9bjthKz1lKWZvcih2YXIgaT13LmRheXNDb250YWluZXIuY2hpbGRyZW5bYV0sbz1lPjA\/MDppLmNoaWxkcmVuLmxlbmd0aC0xLHI9ZT4wP2kuY2hpbGRyZW4ubGVuZ3RoOi0xLGw9bztsIT1yO2wrPWUpe3ZhciBjPWkuY2hpbGRyZW5bbF07aWYoLTE9PT1jLmNsYXNzTmFtZS5pbmRleE9mKCJoaWRkZW4iKSYmWChjLmRhdGVPYmopKXJldHVybiBjfX1mdW5jdGlvbiBSKGUsdCl7dmFyIG49ZWUoZG9jdW1lbnQuYWN0aXZlRWxlbWVudHx8ZG9jdW1lbnQuYm9keSksYT12b2lkIDAhPT1lP2U6bj9kb2N1bWVudC5hY3RpdmVFbGVtZW50OnZvaWQgMCE9PXcuc2VsZWN0ZWREYXRlRWxlbSYmZWUody5zZWxlY3RlZERhdGVFbGVtKT93LnNlbGVjdGVkRGF0ZUVsZW06dm9pZCAwIT09dy50b2RheURhdGVFbGVtJiZlZSh3LnRvZGF5RGF0ZUVsZW0pP3cudG9kYXlEYXRlRWxlbTpXKHQ+MD8xOi0xKTt2b2lkIDA9PT1hP3cuX2lucHV0LmZvY3VzKCk6bj9mdW5jdGlvbihlLHQpe2Zvcih2YXIgbj0tMT09PWUuY2xhc3NOYW1lLmluZGV4T2YoIk1vbnRoIik\/ZS5kYXRlT2JqLmdldE1vbnRoKCk6dy5jdXJyZW50TW9udGgsYT10PjA\/dy5jb25maWcuc2hvd01vbnRoczotMSxpPXQ+MD8xOi0xLG89bi13LmN1cnJlbnRNb250aDtvIT1hO28rPWkpZm9yKHZhciByPXcuZGF5c0NvbnRhaW5lci5jaGlsZHJlbltvXSxsPW4tdy5jdXJyZW50TW9udGg9PT1vP2UuJGkrdDp0PDA\/ci5jaGlsZHJlbi5sZW5ndGgtMTowLGM9ci5jaGlsZHJlbi5sZW5ndGgsZD1sO2Q+PTAmJmQ8YyYmZCE9KHQ+MD9jOi0xKTtkKz1pKXt2YXIgcz1yLmNoaWxkcmVuW2RdO2lmKC0xPT09cy5jbGFzc05hbWUuaW5kZXhPZigiaGlkZGVuIikmJlgocy5kYXRlT2JqKSYmTWF0aC5hYnMoZS4kaS1kKT49TWF0aC5hYnModCkpcmV0dXJuIEwocyl9dy5jaGFuZ2VNb250aChpKSxSKFcoaSksMCl9KGEsdCk6TChhKX1mdW5jdGlvbiBCKGUsdCl7Zm9yKHZhciBuPShuZXcgRGF0ZShlLHQsMSkuZ2V0RGF5KCktdy5sMTBuLmZpcnN0RGF5T2ZXZWVrKzcpJTcsYT13LnV0aWxzLmdldERheXNJbk1vbnRoKCh0LTErMTIpJTEyLGUpLGk9dy51dGlscy5nZXREYXlzSW5Nb250aCh0LGUpLG89d2luZG93LmRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSxyPXcuY29uZmlnLnNob3dNb250aHM+MSxsPXI\/InByZXZNb250aERheSBoaWRkZW4iOiJwcmV2TW9udGhEYXkiLGM9cj8ibmV4dE1vbnRoRGF5IGhpZGRlbiI6Im5leHRNb250aERheSIsZD1hKzEtbix1PTA7ZDw9YTtkKyssdSsrKW8uYXBwZW5kQ2hpbGQoSChsLG5ldyBEYXRlKGUsdC0xLGQpLGQsdSkpO2ZvcihkPTE7ZDw9aTtkKyssdSsrKW8uYXBwZW5kQ2hpbGQoSCgiIixuZXcgRGF0ZShlLHQsZCksZCx1KSk7Zm9yKHZhciBmPWkrMTtmPD00Mi1uJiYoMT09PXcuY29uZmlnLnNob3dNb250aHN8fHUlNyE9MCk7ZisrLHUrKylvLmFwcGVuZENoaWxkKEgoYyxuZXcgRGF0ZShlLHQrMSxmJWkpLGYsdSkpO3ZhciBtPXMoImRpdiIsImRheUNvbnRhaW5lciIpO3JldHVybiBtLmFwcGVuZENoaWxkKG8pLG19ZnVuY3Rpb24gSigpe2lmKHZvaWQgMCE9PXcuZGF5c0NvbnRhaW5lcil7dSh3LmRheXNDb250YWluZXIpLHcud2Vla051bWJlcnMmJnUody53ZWVrTnVtYmVycyk7Zm9yKHZhciBlPWRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSx0PTA7dDx3LmNvbmZpZy5zaG93TW9udGhzO3QrKyl7dmFyIG49bmV3IERhdGUody5jdXJyZW50WWVhcix3LmN1cnJlbnRNb250aCwxKTtuLnNldE1vbnRoKHcuY3VycmVudE1vbnRoK3QpLGUuYXBwZW5kQ2hpbGQoQihuLmdldEZ1bGxZZWFyKCksbi5nZXRNb250aCgpKSl9dy5kYXlzQ29udGFpbmVyLmFwcGVuZENoaWxkKGUpLHcuZGF5cz13LmRheXNDb250YWluZXIuZmlyc3RDaGlsZCwicmFuZ2UiPT09dy5jb25maWcubW9kZSYmMT09PXcuc2VsZWN0ZWREYXRlcy5sZW5ndGgmJmFlKCl9fWZ1bmN0aW9uIEsoKXtpZighKHcuY29uZmlnLnNob3dNb250aHM+MXx8ImRyb3Bkb3duIiE9PXcuY29uZmlnLm1vbnRoU2VsZWN0b3JUeXBlKSl7dmFyIGU9ZnVuY3Rpb24oZSl7cmV0dXJuISh2b2lkIDAhPT13LmNvbmZpZy5taW5EYXRlJiZ3LmN1cnJlbnRZZWFyPT09dy5jb25maWcubWluRGF0ZS5nZXRGdWxsWWVhcigpJiZlPHcuY29uZmlnLm1pbkRhdGUuZ2V0TW9udGgoKSkmJiEodm9pZCAwIT09dy5jb25maWcubWF4RGF0ZSYmdy5jdXJyZW50WWVhcj09PXcuY29uZmlnLm1heERhdGUuZ2V0RnVsbFllYXIoKSYmZT53LmNvbmZpZy5tYXhEYXRlLmdldE1vbnRoKCkpfTt3Lm1vbnRoc0Ryb3Bkb3duQ29udGFpbmVyLnRhYkluZGV4PS0xLHcubW9udGhzRHJvcGRvd25Db250YWluZXIuaW5uZXJIVE1MPSIiO2Zvcih2YXIgdD0wO3Q8MTI7dCsrKWlmKGUodCkpe3ZhciBuPXMoIm9wdGlvbiIsImZsYXRwaWNrci1tb250aERyb3Bkb3duLW1vbnRoIik7bi52YWx1ZT1uZXcgRGF0ZSh3LmN1cnJlbnRZZWFyLHQpLmdldE1vbnRoKCkudG9TdHJpbmcoKSxuLnRleHRDb250ZW50PWgodCx3LmNvbmZpZy5zaG9ydGhhbmRDdXJyZW50TW9udGgsdy5sMTBuKSxuLnRhYkluZGV4PS0xLHcuY3VycmVudE1vbnRoPT09dCYmKG4uc2VsZWN0ZWQ9ITApLHcubW9udGhzRHJvcGRvd25Db250YWluZXIuYXBwZW5kQ2hpbGQobil9fX1mdW5jdGlvbiBVKCl7dmFyIGUsdD1zKCJkaXYiLCJmbGF0cGlja3ItbW9udGgiKSxuPXdpbmRvdy5kb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7dy5jb25maWcuc2hvd01vbnRocz4xfHwic3RhdGljIj09PXcuY29uZmlnLm1vbnRoU2VsZWN0b3JUeXBlP2U9cygic3BhbiIsImN1ci1tb250aCIpOih3Lm1vbnRoc0Ryb3Bkb3duQ29udGFpbmVyPXMoInNlbGVjdCIsImZsYXRwaWNrci1tb250aERyb3Bkb3duLW1vbnRocyIpLHcubW9udGhzRHJvcGRvd25Db250YWluZXIuc2V0QXR0cmlidXRlKCJhcmlhLWxhYmVsIix3LmwxMG4ubW9udGhBcmlhTGFiZWwpLEEody5tb250aHNEcm9wZG93bkNvbnRhaW5lciwiY2hhbmdlIiwoZnVuY3Rpb24oZSl7dmFyIHQ9ZyhlKSxuPXBhcnNlSW50KHQudmFsdWUsMTApO3cuY2hhbmdlTW9udGgobi13LmN1cnJlbnRNb250aCkscGUoIm9uTW9udGhDaGFuZ2UiKX0pKSxLKCksZT13Lm1vbnRoc0Ryb3Bkb3duQ29udGFpbmVyKTt2YXIgYT1tKCJjdXIteWVhciIse3RhYmluZGV4OiItMSJ9KSxpPWEuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImlucHV0IilbMF07aS5zZXRBdHRyaWJ1dGUoImFyaWEtbGFiZWwiLHcubDEwbi55ZWFyQXJpYUxhYmVsKSx3LmNvbmZpZy5taW5EYXRlJiZpLnNldEF0dHJpYnV0ZSgibWluIix3LmNvbmZpZy5taW5EYXRlLmdldEZ1bGxZZWFyKCkudG9TdHJpbmcoKSksdy5jb25maWcubWF4RGF0ZSYmKGkuc2V0QXR0cmlidXRlKCJtYXgiLHcuY29uZmlnLm1heERhdGUuZ2V0RnVsbFllYXIoKS50b1N0cmluZygpKSxpLmRpc2FibGVkPSEhdy5jb25maWcubWluRGF0ZSYmdy5jb25maWcubWluRGF0ZS5nZXRGdWxsWWVhcigpPT09dy5jb25maWcubWF4RGF0ZS5nZXRGdWxsWWVhcigpKTt2YXIgbz1zKCJkaXYiLCJmbGF0cGlja3ItY3VycmVudC1tb250aCIpO3JldHVybiBvLmFwcGVuZENoaWxkKGUpLG8uYXBwZW5kQ2hpbGQoYSksbi5hcHBlbmRDaGlsZChvKSx0LmFwcGVuZENoaWxkKG4pLHtjb250YWluZXI6dCx5ZWFyRWxlbWVudDppLG1vbnRoRWxlbWVudDplfX1mdW5jdGlvbiBxKCl7dSh3Lm1vbnRoTmF2KSx3Lm1vbnRoTmF2LmFwcGVuZENoaWxkKHcucHJldk1vbnRoTmF2KSx3LmNvbmZpZy5zaG93TW9udGhzJiYody55ZWFyRWxlbWVudHM9W10sdy5tb250aEVsZW1lbnRzPVtdKTtmb3IodmFyIGU9dy5jb25maWcuc2hvd01vbnRocztlLS07KXt2YXIgdD1VKCk7dy55ZWFyRWxlbWVudHMucHVzaCh0LnllYXJFbGVtZW50KSx3Lm1vbnRoRWxlbWVudHMucHVzaCh0Lm1vbnRoRWxlbWVudCksdy5tb250aE5hdi5hcHBlbmRDaGlsZCh0LmNvbnRhaW5lcil9dy5tb250aE5hdi5hcHBlbmRDaGlsZCh3Lm5leHRNb250aE5hdil9ZnVuY3Rpb24gJCgpe3cud2Vla2RheUNvbnRhaW5lcj91KHcud2Vla2RheUNvbnRhaW5lcik6dy53ZWVrZGF5Q29udGFpbmVyPXMoImRpdiIsImZsYXRwaWNrci13ZWVrZGF5cyIpO2Zvcih2YXIgZT13LmNvbmZpZy5zaG93TW9udGhzO2UtLTspe3ZhciB0PXMoImRpdiIsImZsYXRwaWNrci13ZWVrZGF5Y29udGFpbmVyIik7dy53ZWVrZGF5Q29udGFpbmVyLmFwcGVuZENoaWxkKHQpfXJldHVybiB6KCksdy53ZWVrZGF5Q29udGFpbmVyfWZ1bmN0aW9uIHooKXtpZih3LndlZWtkYXlDb250YWluZXIpe3ZhciBlPXcubDEwbi5maXJzdERheU9mV2VlayxuPXQody5sMTBuLndlZWtkYXlzLnNob3J0aGFuZCk7ZT4wJiZlPG4ubGVuZ3RoJiYobj10KG4uc3BsaWNlKGUsbi5sZW5ndGgpLG4uc3BsaWNlKDAsZSkpKTtmb3IodmFyIGE9dy5jb25maWcuc2hvd01vbnRoczthLS07KXcud2Vla2RheUNvbnRhaW5lci5jaGlsZHJlblthXS5pbm5lckhUTUw9IlxuICAgICAgPHNwYW4gY2xhc3M9J2ZsYXRwaWNrci13ZWVrZGF5Jz5cbiAgICAgICAgIituLmpvaW4oIjwvc3Bhbj48c3BhbiBjbGFzcz0nZmxhdHBpY2tyLXdlZWtkYXknPiIpKyJcbiAgICAgIDwvc3Bhbj5cbiAgICAgICJ9fWZ1bmN0aW9uIEcoZSx0KXt2b2lkIDA9PT10JiYodD0hMCk7dmFyIG49dD9lOmUtdy5jdXJyZW50TW9udGg7bjwwJiYhMD09PXcuX2hpZGVQcmV2TW9udGhBcnJvd3x8bj4wJiYhMD09PXcuX2hpZGVOZXh0TW9udGhBcnJvd3x8KHcuY3VycmVudE1vbnRoKz1uLCh3LmN1cnJlbnRNb250aDwwfHx3LmN1cnJlbnRNb250aD4xMSkmJih3LmN1cnJlbnRZZWFyKz13LmN1cnJlbnRNb250aD4xMT8xOi0xLHcuY3VycmVudE1vbnRoPSh3LmN1cnJlbnRNb250aCsxMiklMTIscGUoIm9uWWVhckNoYW5nZSIpLEsoKSksSigpLHBlKCJvbk1vbnRoQ2hhbmdlIiksRGUoKSl9ZnVuY3Rpb24gVihlKXtyZXR1cm4hKCF3LmNvbmZpZy5hcHBlbmRUb3x8IXcuY29uZmlnLmFwcGVuZFRvLmNvbnRhaW5zKGUpKXx8dy5jYWxlbmRhckNvbnRhaW5lci5jb250YWlucyhlKX1mdW5jdGlvbiBaKGUpe2lmKHcuaXNPcGVuJiYhdy5jb25maWcuaW5saW5lKXt2YXIgdD1nKGUpLG49Vih0KSxhPXQ9PT13LmlucHV0fHx0PT09dy5hbHRJbnB1dHx8dy5lbGVtZW50LmNvbnRhaW5zKHQpfHxlLnBhdGgmJmUucGF0aC5pbmRleE9mJiYofmUucGF0aC5pbmRleE9mKHcuaW5wdXQpfHx+ZS5wYXRoLmluZGV4T2Yody5hbHRJbnB1dCkpLGk9ImJsdXIiPT09ZS50eXBlP2EmJmUucmVsYXRlZFRhcmdldCYmIVYoZS5yZWxhdGVkVGFyZ2V0KTohYSYmIW4mJiFWKGUucmVsYXRlZFRhcmdldCksbz0hdy5jb25maWcuaWdub3JlZEZvY3VzRWxlbWVudHMuc29tZSgoZnVuY3Rpb24oZSl7cmV0dXJuIGUuY29udGFpbnModCl9KSk7aSYmbyYmKHZvaWQgMCE9PXcudGltZUNvbnRhaW5lciYmdm9pZCAwIT09dy5taW51dGVFbGVtZW50JiZ2b2lkIDAhPT13LmhvdXJFbGVtZW50JiYiIiE9PXcuaW5wdXQudmFsdWUmJnZvaWQgMCE9PXcuaW5wdXQudmFsdWUmJkkoKSx3LmNsb3NlKCksdy5jb25maWcmJiJyYW5nZSI9PT13LmNvbmZpZy5tb2RlJiYxPT09dy5zZWxlY3RlZERhdGVzLmxlbmd0aCYmKHcuY2xlYXIoITEpLHcucmVkcmF3KCkpKX19ZnVuY3Rpb24gUShlKXtpZighKCFlfHx3LmNvbmZpZy5taW5EYXRlJiZlPHcuY29uZmlnLm1pbkRhdGUuZ2V0RnVsbFllYXIoKXx8dy5jb25maWcubWF4RGF0ZSYmZT53LmNvbmZpZy5tYXhEYXRlLmdldEZ1bGxZZWFyKCkpKXt2YXIgdD1lLG49dy5jdXJyZW50WWVhciE9PXQ7dy5jdXJyZW50WWVhcj10fHx3LmN1cnJlbnRZZWFyLHcuY29uZmlnLm1heERhdGUmJncuY3VycmVudFllYXI9PT13LmNvbmZpZy5tYXhEYXRlLmdldEZ1bGxZZWFyKCk\/dy5jdXJyZW50TW9udGg9TWF0aC5taW4ody5jb25maWcubWF4RGF0ZS5nZXRNb250aCgpLHcuY3VycmVudE1vbnRoKTp3LmNvbmZpZy5taW5EYXRlJiZ3LmN1cnJlbnRZZWFyPT09dy5jb25maWcubWluRGF0ZS5nZXRGdWxsWWVhcigpJiYody5jdXJyZW50TW9udGg9TWF0aC5tYXgody5jb25maWcubWluRGF0ZS5nZXRNb250aCgpLHcuY3VycmVudE1vbnRoKSksbiYmKHcucmVkcmF3KCkscGUoIm9uWWVhckNoYW5nZSIpLEsoKSl9fWZ1bmN0aW9uIFgoZSx0KXt2YXIgbjt2b2lkIDA9PT10JiYodD0hMCk7dmFyIGE9dy5wYXJzZURhdGUoZSx2b2lkIDAsdCk7aWYody5jb25maWcubWluRGF0ZSYmYSYmTShhLHcuY29uZmlnLm1pbkRhdGUsdm9pZCAwIT09dD90OiF3Lm1pbkRhdGVIYXNUaW1lKTwwfHx3LmNvbmZpZy5tYXhEYXRlJiZhJiZNKGEsdy5jb25maWcubWF4RGF0ZSx2b2lkIDAhPT10P3Q6IXcubWF4RGF0ZUhhc1RpbWUpPjApcmV0dXJuITE7aWYoIXcuY29uZmlnLmVuYWJsZSYmMD09PXcuY29uZmlnLmRpc2FibGUubGVuZ3RoKXJldHVybiEwO2lmKHZvaWQgMD09PWEpcmV0dXJuITE7Zm9yKHZhciBpPSEhdy5jb25maWcuZW5hYmxlLG89bnVsbCE9PShuPXcuY29uZmlnLmVuYWJsZSkmJnZvaWQgMCE9PW4\/bjp3LmNvbmZpZy5kaXNhYmxlLHI9MCxsPXZvaWQgMDtyPG8ubGVuZ3RoO3IrKyl7aWYoImZ1bmN0aW9uIj09dHlwZW9mKGw9b1tyXSkmJmwoYSkpcmV0dXJuIGk7aWYobCBpbnN0YW5jZW9mIERhdGUmJnZvaWQgMCE9PWEmJmwuZ2V0VGltZSgpPT09YS5nZXRUaW1lKCkpcmV0dXJuIGk7aWYoInN0cmluZyI9PXR5cGVvZiBsKXt2YXIgYz13LnBhcnNlRGF0ZShsLHZvaWQgMCwhMCk7cmV0dXJuIGMmJmMuZ2V0VGltZSgpPT09YS5nZXRUaW1lKCk\/aTohaX1pZigib2JqZWN0Ij09dHlwZW9mIGwmJnZvaWQgMCE9PWEmJmwuZnJvbSYmbC50byYmYS5nZXRUaW1lKCk+PWwuZnJvbS5nZXRUaW1lKCkmJmEuZ2V0VGltZSgpPD1sLnRvLmdldFRpbWUoKSlyZXR1cm4gaX1yZXR1cm4haX1mdW5jdGlvbiBlZShlKXtyZXR1cm4gdm9pZCAwIT09dy5kYXlzQ29udGFpbmVyJiYoLTE9PT1lLmNsYXNzTmFtZS5pbmRleE9mKCJoaWRkZW4iKSYmLTE9PT1lLmNsYXNzTmFtZS5pbmRleE9mKCJmbGF0cGlja3ItZGlzYWJsZWQiKSYmdy5kYXlzQ29udGFpbmVyLmNvbnRhaW5zKGUpKX1mdW5jdGlvbiB0ZShlKXshKGUudGFyZ2V0PT09dy5faW5wdXQpfHwhKHcuc2VsZWN0ZWREYXRlcy5sZW5ndGg+MHx8dy5faW5wdXQudmFsdWUubGVuZ3RoPjApfHxlLnJlbGF0ZWRUYXJnZXQmJlYoZS5yZWxhdGVkVGFyZ2V0KXx8dy5zZXREYXRlKHcuX2lucHV0LnZhbHVlLCEwLGUudGFyZ2V0PT09dy5hbHRJbnB1dD93LmNvbmZpZy5hbHRGb3JtYXQ6dy5jb25maWcuZGF0ZUZvcm1hdCl9ZnVuY3Rpb24gbmUoZSl7dmFyIHQ9ZyhlKSxuPXcuY29uZmlnLndyYXA\/cC5jb250YWlucyh0KTp0PT09dy5faW5wdXQsYT13LmNvbmZpZy5hbGxvd0lucHV0LGk9dy5pc09wZW4mJighYXx8IW4pLG89dy5jb25maWcuaW5saW5lJiZuJiYhYTtpZigxMz09PWUua2V5Q29kZSYmbil7aWYoYSlyZXR1cm4gdy5zZXREYXRlKHcuX2lucHV0LnZhbHVlLCEwLHQ9PT13LmFsdElucHV0P3cuY29uZmlnLmFsdEZvcm1hdDp3LmNvbmZpZy5kYXRlRm9ybWF0KSx0LmJsdXIoKTt3Lm9wZW4oKX1lbHNlIGlmKFYodCl8fGl8fG8pe3ZhciByPSEhdy50aW1lQ29udGFpbmVyJiZ3LnRpbWVDb250YWluZXIuY29udGFpbnModCk7c3dpdGNoKGUua2V5Q29kZSl7Y2FzZSAxMzpyPyhlLnByZXZlbnREZWZhdWx0KCksSSgpLHNlKCkpOnVlKGUpO2JyZWFrO2Nhc2UgMjc6ZS5wcmV2ZW50RGVmYXVsdCgpLHNlKCk7YnJlYWs7Y2FzZSA4OmNhc2UgNDY6biYmIXcuY29uZmlnLmFsbG93SW5wdXQmJihlLnByZXZlbnREZWZhdWx0KCksdy5jbGVhcigpKTticmVhaztjYXNlIDM3OmNhc2UgMzk6aWYocnx8bil3LmhvdXJFbGVtZW50JiZ3LmhvdXJFbGVtZW50LmZvY3VzKCk7ZWxzZSBpZihlLnByZXZlbnREZWZhdWx0KCksdm9pZCAwIT09dy5kYXlzQ29udGFpbmVyJiYoITE9PT1hfHxkb2N1bWVudC5hY3RpdmVFbGVtZW50JiZlZShkb2N1bWVudC5hY3RpdmVFbGVtZW50KSkpe3ZhciBsPTM5PT09ZS5rZXlDb2RlPzE6LTE7ZS5jdHJsS2V5PyhlLnN0b3BQcm9wYWdhdGlvbigpLEcobCksUihXKDEpLDApKTpSKHZvaWQgMCxsKX1icmVhaztjYXNlIDM4OmNhc2UgNDA6ZS5wcmV2ZW50RGVmYXVsdCgpO3ZhciBjPTQwPT09ZS5rZXlDb2RlPzE6LTE7dy5kYXlzQ29udGFpbmVyJiZ2b2lkIDAhPT10LiRpfHx0PT09dy5pbnB1dHx8dD09PXcuYWx0SW5wdXQ\/ZS5jdHJsS2V5PyhlLnN0b3BQcm9wYWdhdGlvbigpLFEody5jdXJyZW50WWVhci1jKSxSKFcoMSksMCkpOnJ8fFIodm9pZCAwLDcqYyk6dD09PXcuY3VycmVudFllYXJFbGVtZW50P1Eody5jdXJyZW50WWVhci1jKTp3LmNvbmZpZy5lbmFibGVUaW1lJiYoIXImJncuaG91ckVsZW1lbnQmJncuaG91ckVsZW1lbnQuZm9jdXMoKSxJKGUpLHcuX2RlYm91bmNlZENoYW5nZSgpKTticmVhaztjYXNlIDk6aWYocil7dmFyIGQ9W3cuaG91ckVsZW1lbnQsdy5taW51dGVFbGVtZW50LHcuc2Vjb25kRWxlbWVudCx3LmFtUE1dLmNvbmNhdCh3LnBsdWdpbkVsZW1lbnRzKS5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiBlfSkpLHM9ZC5pbmRleE9mKHQpO2lmKC0xIT09cyl7dmFyIHU9ZFtzKyhlLnNoaWZ0S2V5Py0xOjEpXTtlLnByZXZlbnREZWZhdWx0KCksKHV8fHcuX2lucHV0KS5mb2N1cygpfX1lbHNlIXcuY29uZmlnLm5vQ2FsZW5kYXImJncuZGF5c0NvbnRhaW5lciYmdy5kYXlzQ29udGFpbmVyLmNvbnRhaW5zKHQpJiZlLnNoaWZ0S2V5JiYoZS5wcmV2ZW50RGVmYXVsdCgpLHcuX2lucHV0LmZvY3VzKCkpfX1pZih2b2lkIDAhPT13LmFtUE0mJnQ9PT13LmFtUE0pc3dpdGNoKGUua2V5KXtjYXNlIHcubDEwbi5hbVBNWzBdLmNoYXJBdCgwKTpjYXNlIHcubDEwbi5hbVBNWzBdLmNoYXJBdCgwKS50b0xvd2VyQ2FzZSgpOncuYW1QTS50ZXh0Q29udGVudD13LmwxMG4uYW1QTVswXSxTKCksYmUoKTticmVhaztjYXNlIHcubDEwbi5hbVBNWzFdLmNoYXJBdCgwKTpjYXNlIHcubDEwbi5hbVBNWzFdLmNoYXJBdCgwKS50b0xvd2VyQ2FzZSgpOncuYW1QTS50ZXh0Q29udGVudD13LmwxMG4uYW1QTVsxXSxTKCksYmUoKX0obnx8Vih0KSkmJnBlKCJvbktleURvd24iLGUpfWZ1bmN0aW9uIGFlKGUpe2lmKDE9PT13LnNlbGVjdGVkRGF0ZXMubGVuZ3RoJiYoIWV8fGUuY2xhc3NMaXN0LmNvbnRhaW5zKCJmbGF0cGlja3ItZGF5IikmJiFlLmNsYXNzTGlzdC5jb250YWlucygiZmxhdHBpY2tyLWRpc2FibGVkIikpKXtmb3IodmFyIHQ9ZT9lLmRhdGVPYmouZ2V0VGltZSgpOncuZGF5cy5maXJzdEVsZW1lbnRDaGlsZC5kYXRlT2JqLmdldFRpbWUoKSxuPXcucGFyc2VEYXRlKHcuc2VsZWN0ZWREYXRlc1swXSx2b2lkIDAsITApLmdldFRpbWUoKSxhPU1hdGgubWluKHQsdy5zZWxlY3RlZERhdGVzWzBdLmdldFRpbWUoKSksaT1NYXRoLm1heCh0LHcuc2VsZWN0ZWREYXRlc1swXS5nZXRUaW1lKCkpLG89ITEscj0wLGw9MCxjPWE7YzxpO2MrPXkpWChuZXcgRGF0ZShjKSwhMCl8fChvPW98fGM+YSYmYzxpLGM8biYmKCFyfHxjPnIpP3I9YzpjPm4mJighbHx8YzxsKSYmKGw9YykpO2Zvcih2YXIgZD0wO2Q8dy5jb25maWcuc2hvd01vbnRocztkKyspZm9yKHZhciBzPXcuZGF5c0NvbnRhaW5lci5jaGlsZHJlbltkXSx1PWZ1bmN0aW9uKGEsaSl7dmFyIGMsZCx1LGY9cy5jaGlsZHJlblthXSxtPWYuZGF0ZU9iai5nZXRUaW1lKCksZz1yPjAmJm08cnx8bD4wJiZtPmw7cmV0dXJuIGc\/KGYuY2xhc3NMaXN0LmFkZCgibm90QWxsb3dlZCIpLFsiaW5SYW5nZSIsInN0YXJ0UmFuZ2UiLCJlbmRSYW5nZSJdLmZvckVhY2goKGZ1bmN0aW9uKGUpe2YuY2xhc3NMaXN0LnJlbW92ZShlKX0pKSwiY29udGludWUiKTpvJiYhZz8iY29udGludWUiOihbInN0YXJ0UmFuZ2UiLCJpblJhbmdlIiwiZW5kUmFuZ2UiLCJub3RBbGxvd2VkIl0uZm9yRWFjaCgoZnVuY3Rpb24oZSl7Zi5jbGFzc0xpc3QucmVtb3ZlKGUpfSkpLHZvaWQodm9pZCAwIT09ZSYmKGUuY2xhc3NMaXN0LmFkZCh0PD13LnNlbGVjdGVkRGF0ZXNbMF0uZ2V0VGltZSgpPyJzdGFydFJhbmdlIjoiZW5kUmFuZ2UiKSxuPHQmJm09PT1uP2YuY2xhc3NMaXN0LmFkZCgic3RhcnRSYW5nZSIpOm4+dCYmbT09PW4mJmYuY2xhc3NMaXN0LmFkZCgiZW5kUmFuZ2UiKSxtPj1yJiYoMD09PWx8fG08PWwpJiYoZD1uLHU9dCwoYz1tKT5NYXRoLm1pbihkLHUpJiZjPE1hdGgubWF4KGQsdSkpJiZmLmNsYXNzTGlzdC5hZGQoImluUmFuZ2UiKSkpKX0sZj0wLG09cy5jaGlsZHJlbi5sZW5ndGg7ZjxtO2YrKyl1KGYpfX1mdW5jdGlvbiBpZSgpeyF3LmlzT3Blbnx8dy5jb25maWcuc3RhdGljfHx3LmNvbmZpZy5pbmxpbmV8fGNlKCl9ZnVuY3Rpb24gb2UoZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3ZhciBuPXcuY29uZmlnWyJfIitlKyJEYXRlIl09dy5wYXJzZURhdGUodCx3LmNvbmZpZy5kYXRlRm9ybWF0KSxhPXcuY29uZmlnWyJfIisoIm1pbiI9PT1lPyJtYXgiOiJtaW4iKSsiRGF0ZSJdO3ZvaWQgMCE9PW4mJih3WyJtaW4iPT09ZT8ibWluRGF0ZUhhc1RpbWUiOiJtYXhEYXRlSGFzVGltZSJdPW4uZ2V0SG91cnMoKT4wfHxuLmdldE1pbnV0ZXMoKT4wfHxuLmdldFNlY29uZHMoKT4wKSx3LnNlbGVjdGVkRGF0ZXMmJih3LnNlbGVjdGVkRGF0ZXM9dy5zZWxlY3RlZERhdGVzLmZpbHRlcigoZnVuY3Rpb24oZSl7cmV0dXJuIFgoZSl9KSksdy5zZWxlY3RlZERhdGVzLmxlbmd0aHx8Im1pbiIhPT1lfHxfKG4pLGJlKCkpLHcuZGF5c0NvbnRhaW5lciYmKGRlKCksdm9pZCAwIT09bj93LmN1cnJlbnRZZWFyRWxlbWVudFtlXT1uLmdldEZ1bGxZZWFyKCkudG9TdHJpbmcoKTp3LmN1cnJlbnRZZWFyRWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoZSksdy5jdXJyZW50WWVhckVsZW1lbnQuZGlzYWJsZWQ9ISFhJiZ2b2lkIDAhPT1uJiZhLmdldEZ1bGxZZWFyKCk9PT1uLmdldEZ1bGxZZWFyKCkpfX1mdW5jdGlvbiByZSgpe3JldHVybiB3LmNvbmZpZy53cmFwP3AucXVlcnlTZWxlY3RvcigiW2RhdGEtaW5wdXRdIik6cH1mdW5jdGlvbiBsZSgpeyJvYmplY3QiIT10eXBlb2Ygdy5jb25maWcubG9jYWxlJiZ2b2lkIDA9PT1ULmwxMG5zW3cuY29uZmlnLmxvY2FsZV0mJncuY29uZmlnLmVycm9ySGFuZGxlcihuZXcgRXJyb3IoImZsYXRwaWNrcjogaW52YWxpZCBsb2NhbGUgIit3LmNvbmZpZy5sb2NhbGUpKSx3LmwxMG49ZShlKHt9LFQubDEwbnMuZGVmYXVsdCksIm9iamVjdCI9PXR5cGVvZiB3LmNvbmZpZy5sb2NhbGU\/dy5jb25maWcubG9jYWxlOiJkZWZhdWx0IiE9PXcuY29uZmlnLmxvY2FsZT9ULmwxMG5zW3cuY29uZmlnLmxvY2FsZV06dm9pZCAwKSxELks9IigiK3cubDEwbi5hbVBNWzBdKyJ8Iit3LmwxMG4uYW1QTVsxXSsifCIrdy5sMTBuLmFtUE1bMF0udG9Mb3dlckNhc2UoKSsifCIrdy5sMTBuLmFtUE1bMV0udG9Mb3dlckNhc2UoKSsiKSIsdm9pZCAwPT09ZShlKHt9LHYpLEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkocC5kYXRhc2V0fHx7fSkpKS50aW1lXzI0aHImJnZvaWQgMD09PVQuZGVmYXVsdENvbmZpZy50aW1lXzI0aHImJih3LmNvbmZpZy50aW1lXzI0aHI9dy5sMTBuLnRpbWVfMjRociksdy5mb3JtYXREYXRlPWIodyksdy5wYXJzZURhdGU9Qyh7Y29uZmlnOncuY29uZmlnLGwxMG46dy5sMTBufSl9ZnVuY3Rpb24gY2UoZSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHcuY29uZmlnLnBvc2l0aW9uKXtpZih2b2lkIDAhPT13LmNhbGVuZGFyQ29udGFpbmVyKXtwZSgib25QcmVDYWxlbmRhclBvc2l0aW9uIik7dmFyIHQ9ZXx8dy5fcG9zaXRpb25FbGVtZW50LG49QXJyYXkucHJvdG90eXBlLnJlZHVjZS5jYWxsKHcuY2FsZW5kYXJDb250YWluZXIuY2hpbGRyZW4sKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUrdC5vZmZzZXRIZWlnaHR9KSwwKSxhPXcuY2FsZW5kYXJDb250YWluZXIub2Zmc2V0V2lkdGgsaT13LmNvbmZpZy5wb3NpdGlvbi5zcGxpdCgiICIpLG89aVswXSxyPWkubGVuZ3RoPjE\/aVsxXTpudWxsLGw9dC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxjPXdpbmRvdy5pbm5lckhlaWdodC1sLmJvdHRvbSxzPSJhYm92ZSI9PT1vfHwiYmVsb3ciIT09byYmYzxuJiZsLnRvcD5uLHU9d2luZG93LnBhZ2VZT2Zmc2V0K2wudG9wKyhzPy1uLTI6dC5vZmZzZXRIZWlnaHQrMik7aWYoZCh3LmNhbGVuZGFyQ29udGFpbmVyLCJhcnJvd1RvcCIsIXMpLGQody5jYWxlbmRhckNvbnRhaW5lciwiYXJyb3dCb3R0b20iLHMpLCF3LmNvbmZpZy5pbmxpbmUpe3ZhciBmPXdpbmRvdy5wYWdlWE9mZnNldCtsLmxlZnQsbT0hMSxnPSExOyJjZW50ZXIiPT09cj8oZi09KGEtbC53aWR0aCkvMixtPSEwKToicmlnaHQiPT09ciYmKGYtPWEtbC53aWR0aCxnPSEwKSxkKHcuY2FsZW5kYXJDb250YWluZXIsImFycm93TGVmdCIsIW0mJiFnKSxkKHcuY2FsZW5kYXJDb250YWluZXIsImFycm93Q2VudGVyIixtKSxkKHcuY2FsZW5kYXJDb250YWluZXIsImFycm93UmlnaHQiLGcpO3ZhciBwPXdpbmRvdy5kb2N1bWVudC5ib2R5Lm9mZnNldFdpZHRoLSh3aW5kb3cucGFnZVhPZmZzZXQrbC5yaWdodCksaD1mK2E+d2luZG93LmRvY3VtZW50LmJvZHkub2Zmc2V0V2lkdGgsdj1wK2E+d2luZG93LmRvY3VtZW50LmJvZHkub2Zmc2V0V2lkdGg7aWYoZCh3LmNhbGVuZGFyQ29udGFpbmVyLCJyaWdodE1vc3QiLGgpLCF3LmNvbmZpZy5zdGF0aWMpaWYody5jYWxlbmRhckNvbnRhaW5lci5zdHlsZS50b3A9dSsicHgiLGgpaWYodil7dmFyIEQ9ZnVuY3Rpb24oKXtmb3IodmFyIGU9bnVsbCx0PTA7dDxkb2N1bWVudC5zdHlsZVNoZWV0cy5sZW5ndGg7dCsrKXt2YXIgbj1kb2N1bWVudC5zdHlsZVNoZWV0c1t0XTt0cnl7bi5jc3NSdWxlc31jYXRjaChlKXtjb250aW51ZX1lPW47YnJlYWt9cmV0dXJuIG51bGwhPWU\/ZTooYT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdHlsZSIpLGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoYSksYS5zaGVldCk7dmFyIGF9KCk7aWYodm9pZCAwPT09RClyZXR1cm47dmFyIGI9d2luZG93LmRvY3VtZW50LmJvZHkub2Zmc2V0V2lkdGgsQz1NYXRoLm1heCgwLGIvMi1hLzIpLE09RC5jc3NSdWxlcy5sZW5ndGgseT0ie2xlZnQ6IitsLmxlZnQrInB4O3JpZ2h0OmF1dG87fSI7ZCh3LmNhbGVuZGFyQ29udGFpbmVyLCJyaWdodE1vc3QiLCExKSxkKHcuY2FsZW5kYXJDb250YWluZXIsImNlbnRlck1vc3QiLCEwKSxELmluc2VydFJ1bGUoIi5mbGF0cGlja3ItY2FsZW5kYXIuY2VudGVyTW9zdDpiZWZvcmUsLmZsYXRwaWNrci1jYWxlbmRhci5jZW50ZXJNb3N0OmFmdGVyIit5LE0pLHcuY2FsZW5kYXJDb250YWluZXIuc3R5bGUubGVmdD1DKyJweCIsdy5jYWxlbmRhckNvbnRhaW5lci5zdHlsZS5yaWdodD0iYXV0byJ9ZWxzZSB3LmNhbGVuZGFyQ29udGFpbmVyLnN0eWxlLmxlZnQ9ImF1dG8iLHcuY2FsZW5kYXJDb250YWluZXIuc3R5bGUucmlnaHQ9cCsicHgiO2Vsc2Ugdy5jYWxlbmRhckNvbnRhaW5lci5zdHlsZS5sZWZ0PWYrInB4Iix3LmNhbGVuZGFyQ29udGFpbmVyLnN0eWxlLnJpZ2h0PSJhdXRvIn19fWVsc2Ugdy5jb25maWcucG9zaXRpb24odyxlKX1mdW5jdGlvbiBkZSgpe3cuY29uZmlnLm5vQ2FsZW5kYXJ8fHcuaXNNb2JpbGV8fChLKCksRGUoKSxKKCkpfWZ1bmN0aW9uIHNlKCl7dy5faW5wdXQuZm9jdXMoKSwtMSE9PXdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoIk1TSUUiKXx8dm9pZCAwIT09bmF2aWdhdG9yLm1zTWF4VG91Y2hQb2ludHM\/c2V0VGltZW91dCh3LmNsb3NlLDApOncuY2xvc2UoKX1mdW5jdGlvbiB1ZShlKXtlLnByZXZlbnREZWZhdWx0KCksZS5zdG9wUHJvcGFnYXRpb24oKTt2YXIgdD1mKGcoZSksKGZ1bmN0aW9uKGUpe3JldHVybiBlLmNsYXNzTGlzdCYmZS5jbGFzc0xpc3QuY29udGFpbnMoImZsYXRwaWNrci1kYXkiKSYmIWUuY2xhc3NMaXN0LmNvbnRhaW5zKCJmbGF0cGlja3ItZGlzYWJsZWQiKSYmIWUuY2xhc3NMaXN0LmNvbnRhaW5zKCJub3RBbGxvd2VkIil9KSk7aWYodm9pZCAwIT09dCl7dmFyIG49dCxhPXcubGF0ZXN0U2VsZWN0ZWREYXRlT2JqPW5ldyBEYXRlKG4uZGF0ZU9iai5nZXRUaW1lKCkpLGk9KGEuZ2V0TW9udGgoKTx3LmN1cnJlbnRNb250aHx8YS5nZXRNb250aCgpPncuY3VycmVudE1vbnRoK3cuY29uZmlnLnNob3dNb250aHMtMSkmJiJyYW5nZSIhPT13LmNvbmZpZy5tb2RlO2lmKHcuc2VsZWN0ZWREYXRlRWxlbT1uLCJzaW5nbGUiPT09dy5jb25maWcubW9kZSl3LnNlbGVjdGVkRGF0ZXM9W2FdO2Vsc2UgaWYoIm11bHRpcGxlIj09PXcuY29uZmlnLm1vZGUpe3ZhciBvPXZlKGEpO28\/dy5zZWxlY3RlZERhdGVzLnNwbGljZShwYXJzZUludChvKSwxKTp3LnNlbGVjdGVkRGF0ZXMucHVzaChhKX1lbHNlInJhbmdlIj09PXcuY29uZmlnLm1vZGUmJigyPT09dy5zZWxlY3RlZERhdGVzLmxlbmd0aCYmdy5jbGVhcighMSwhMSksdy5sYXRlc3RTZWxlY3RlZERhdGVPYmo9YSx3LnNlbGVjdGVkRGF0ZXMucHVzaChhKSwwIT09TShhLHcuc2VsZWN0ZWREYXRlc1swXSwhMCkmJncuc2VsZWN0ZWREYXRlcy5zb3J0KChmdW5jdGlvbihlLHQpe3JldHVybiBlLmdldFRpbWUoKS10LmdldFRpbWUoKX0pKSk7aWYoUygpLGkpe3ZhciByPXcuY3VycmVudFllYXIhPT1hLmdldEZ1bGxZZWFyKCk7dy5jdXJyZW50WWVhcj1hLmdldEZ1bGxZZWFyKCksdy5jdXJyZW50TW9udGg9YS5nZXRNb250aCgpLHImJihwZSgib25ZZWFyQ2hhbmdlIiksSygpKSxwZSgib25Nb250aENoYW5nZSIpfWlmKERlKCksSigpLGJlKCksaXx8InJhbmdlIj09PXcuY29uZmlnLm1vZGV8fDEhPT13LmNvbmZpZy5zaG93TW9udGhzP3ZvaWQgMCE9PXcuc2VsZWN0ZWREYXRlRWxlbSYmdm9pZCAwPT09dy5ob3VyRWxlbWVudCYmdy5zZWxlY3RlZERhdGVFbGVtJiZ3LnNlbGVjdGVkRGF0ZUVsZW0uZm9jdXMoKTpMKG4pLHZvaWQgMCE9PXcuaG91ckVsZW1lbnQmJnZvaWQgMCE9PXcuaG91ckVsZW1lbnQmJncuaG91ckVsZW1lbnQuZm9jdXMoKSx3LmNvbmZpZy5jbG9zZU9uU2VsZWN0KXt2YXIgbD0ic2luZ2xlIj09PXcuY29uZmlnLm1vZGUmJiF3LmNvbmZpZy5lbmFibGVUaW1lLGM9InJhbmdlIj09PXcuY29uZmlnLm1vZGUmJjI9PT13LnNlbGVjdGVkRGF0ZXMubGVuZ3RoJiYhdy5jb25maWcuZW5hYmxlVGltZTsobHx8YykmJnNlKCl9TigpfX13LnBhcnNlRGF0ZT1DKHtjb25maWc6dy5jb25maWcsbDEwbjp3LmwxMG59KSx3Ll9oYW5kbGVycz1bXSx3LnBsdWdpbkVsZW1lbnRzPVtdLHcubG9hZGVkUGx1Z2lucz1bXSx3Ll9iaW5kPUEsdy5fc2V0SG91cnNGcm9tRGF0ZT1fLHcuX3Bvc2l0aW9uQ2FsZW5kYXI9Y2Usdy5jaGFuZ2VNb250aD1HLHcuY2hhbmdlWWVhcj1RLHcuY2xlYXI9ZnVuY3Rpb24oZSx0KXt2b2lkIDA9PT1lJiYoZT0hMCk7dm9pZCAwPT09dCYmKHQ9ITApO3cuaW5wdXQudmFsdWU9IiIsdm9pZCAwIT09dy5hbHRJbnB1dCYmKHcuYWx0SW5wdXQudmFsdWU9IiIpO3ZvaWQgMCE9PXcubW9iaWxlSW5wdXQmJih3Lm1vYmlsZUlucHV0LnZhbHVlPSIiKTt3LnNlbGVjdGVkRGF0ZXM9W10sdy5sYXRlc3RTZWxlY3RlZERhdGVPYmo9dm9pZCAwLCEwPT09dCYmKHcuY3VycmVudFllYXI9dy5faW5pdGlhbERhdGUuZ2V0RnVsbFllYXIoKSx3LmN1cnJlbnRNb250aD13Ll9pbml0aWFsRGF0ZS5nZXRNb250aCgpKTtpZighMD09PXcuY29uZmlnLmVuYWJsZVRpbWUpe3ZhciBuPXgody5jb25maWcpLGE9bi5ob3VycyxpPW4ubWludXRlcyxvPW4uc2Vjb25kcztPKGEsaSxvKX13LnJlZHJhdygpLGUmJnBlKCJvbkNoYW5nZSIpfSx3LmNsb3NlPWZ1bmN0aW9uKCl7dy5pc09wZW49ITEsdy5pc01vYmlsZXx8KHZvaWQgMCE9PXcuY2FsZW5kYXJDb250YWluZXImJncuY2FsZW5kYXJDb250YWluZXIuY2xhc3NMaXN0LnJlbW92ZSgib3BlbiIpLHZvaWQgMCE9PXcuX2lucHV0JiZ3Ll9pbnB1dC5jbGFzc0xpc3QucmVtb3ZlKCJhY3RpdmUiKSk7cGUoIm9uQ2xvc2UiKX0sdy5fY3JlYXRlRWxlbWVudD1zLHcuZGVzdHJveT1mdW5jdGlvbigpe3ZvaWQgMCE9PXcuY29uZmlnJiZwZSgib25EZXN0cm95Iik7Zm9yKHZhciBlPXcuX2hhbmRsZXJzLmxlbmd0aDtlLS07KXcuX2hhbmRsZXJzW2VdLnJlbW92ZSgpO2lmKHcuX2hhbmRsZXJzPVtdLHcubW9iaWxlSW5wdXQpdy5tb2JpbGVJbnB1dC5wYXJlbnROb2RlJiZ3Lm1vYmlsZUlucHV0LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQody5tb2JpbGVJbnB1dCksdy5tb2JpbGVJbnB1dD12b2lkIDA7ZWxzZSBpZih3LmNhbGVuZGFyQ29udGFpbmVyJiZ3LmNhbGVuZGFyQ29udGFpbmVyLnBhcmVudE5vZGUpaWYody5jb25maWcuc3RhdGljJiZ3LmNhbGVuZGFyQ29udGFpbmVyLnBhcmVudE5vZGUpe3ZhciB0PXcuY2FsZW5kYXJDb250YWluZXIucGFyZW50Tm9kZTtpZih0Lmxhc3RDaGlsZCYmdC5yZW1vdmVDaGlsZCh0Lmxhc3RDaGlsZCksdC5wYXJlbnROb2RlKXtmb3IoO3QuZmlyc3RDaGlsZDspdC5wYXJlbnROb2RlLmluc2VydEJlZm9yZSh0LmZpcnN0Q2hpbGQsdCk7dC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHQpfX1lbHNlIHcuY2FsZW5kYXJDb250YWluZXIucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh3LmNhbGVuZGFyQ29udGFpbmVyKTt3LmFsdElucHV0JiYody5pbnB1dC50eXBlPSJ0ZXh0Iix3LmFsdElucHV0LnBhcmVudE5vZGUmJncuYWx0SW5wdXQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh3LmFsdElucHV0KSxkZWxldGUgdy5hbHRJbnB1dCk7dy5pbnB1dCYmKHcuaW5wdXQudHlwZT13LmlucHV0Ll90eXBlLHcuaW5wdXQuY2xhc3NMaXN0LnJlbW92ZSgiZmxhdHBpY2tyLWlucHV0Iiksdy5pbnB1dC5yZW1vdmVBdHRyaWJ1dGUoInJlYWRvbmx5IikpO1siX3Nob3dUaW1lSW5wdXQiLCJsYXRlc3RTZWxlY3RlZERhdGVPYmoiLCJfaGlkZU5leHRNb250aEFycm93IiwiX2hpZGVQcmV2TW9udGhBcnJvdyIsIl9faGlkZU5leHRNb250aEFycm93IiwiX19oaWRlUHJldk1vbnRoQXJyb3ciLCJpc01vYmlsZSIsImlzT3BlbiIsInNlbGVjdGVkRGF0ZUVsZW0iLCJtaW5EYXRlSGFzVGltZSIsIm1heERhdGVIYXNUaW1lIiwiZGF5cyIsImRheXNDb250YWluZXIiLCJfaW5wdXQiLCJfcG9zaXRpb25FbGVtZW50IiwiaW5uZXJDb250YWluZXIiLCJyQ29udGFpbmVyIiwibW9udGhOYXYiLCJ0b2RheURhdGVFbGVtIiwiY2FsZW5kYXJDb250YWluZXIiLCJ3ZWVrZGF5Q29udGFpbmVyIiwicHJldk1vbnRoTmF2IiwibmV4dE1vbnRoTmF2IiwibW9udGhzRHJvcGRvd25Db250YWluZXIiLCJjdXJyZW50TW9udGhFbGVtZW50IiwiY3VycmVudFllYXJFbGVtZW50IiwibmF2aWdhdGlvbkN1cnJlbnRNb250aCIsInNlbGVjdGVkRGF0ZUVsZW0iLCJjb25maWciXS5mb3JFYWNoKChmdW5jdGlvbihlKXt0cnl7ZGVsZXRlIHdbZV19Y2F0Y2goZSl7fX0pKX0sdy5pc0VuYWJsZWQ9WCx3Lmp1bXBUb0RhdGU9UCx3Lm9wZW49ZnVuY3Rpb24oZSx0KXt2b2lkIDA9PT10JiYodD13Ll9wb3NpdGlvbkVsZW1lbnQpO2lmKCEwPT09dy5pc01vYmlsZSl7aWYoZSl7ZS5wcmV2ZW50RGVmYXVsdCgpO3ZhciBuPWcoZSk7biYmbi5ibHVyKCl9cmV0dXJuIHZvaWQgMCE9PXcubW9iaWxlSW5wdXQmJih3Lm1vYmlsZUlucHV0LmZvY3VzKCksdy5tb2JpbGVJbnB1dC5jbGljaygpKSx2b2lkIHBlKCJvbk9wZW4iKX1pZih3Ll9pbnB1dC5kaXNhYmxlZHx8dy5jb25maWcuaW5saW5lKXJldHVybjt2YXIgYT13LmlzT3Blbjt3LmlzT3Blbj0hMCxhfHwody5jYWxlbmRhckNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKCJvcGVuIiksdy5faW5wdXQuY2xhc3NMaXN0LmFkZCgiYWN0aXZlIikscGUoIm9uT3BlbiIpLGNlKHQpKTshMD09PXcuY29uZmlnLmVuYWJsZVRpbWUmJiEwPT09dy5jb25maWcubm9DYWxlbmRhciYmKCExIT09dy5jb25maWcuYWxsb3dJbnB1dHx8dm9pZCAwIT09ZSYmdy50aW1lQ29udGFpbmVyLmNvbnRhaW5zKGUucmVsYXRlZFRhcmdldCl8fHNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7cmV0dXJuIHcuaG91ckVsZW1lbnQuc2VsZWN0KCl9KSw1MCkpfSx3LnJlZHJhdz1kZSx3LnNldD1mdW5jdGlvbihlLHQpe2lmKG51bGwhPT1lJiYib2JqZWN0Ij09dHlwZW9mIGUpZm9yKHZhciBhIGluIE9iamVjdC5hc3NpZ24ody5jb25maWcsZSksZSl2b2lkIDAhPT1mZVthXSYmZmVbYV0uZm9yRWFjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUoKX0pKTtlbHNlIHcuY29uZmlnW2VdPXQsdm9pZCAwIT09ZmVbZV0\/ZmVbZV0uZm9yRWFjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUoKX0pKTpuLmluZGV4T2YoZSk+LTEmJih3LmNvbmZpZ1tlXT1jKHQpKTt3LnJlZHJhdygpLGJlKCEwKX0sdy5zZXREYXRlPWZ1bmN0aW9uKGUsdCxuKXt2b2lkIDA9PT10JiYodD0hMSk7dm9pZCAwPT09biYmKG49dy5jb25maWcuZGF0ZUZvcm1hdCk7aWYoMCE9PWUmJiFlfHxlIGluc3RhbmNlb2YgQXJyYXkmJjA9PT1lLmxlbmd0aClyZXR1cm4gdy5jbGVhcih0KTttZShlLG4pLHcubGF0ZXN0U2VsZWN0ZWREYXRlT2JqPXcuc2VsZWN0ZWREYXRlc1t3LnNlbGVjdGVkRGF0ZXMubGVuZ3RoLTFdLHcucmVkcmF3KCksUCh2b2lkIDAsdCksXygpLDA9PT13LnNlbGVjdGVkRGF0ZXMubGVuZ3RoJiZ3LmNsZWFyKCExKTtiZSh0KSx0JiZwZSgib25DaGFuZ2UiKX0sdy50b2dnbGU9ZnVuY3Rpb24oZSl7aWYoITA9PT13LmlzT3BlbilyZXR1cm4gdy5jbG9zZSgpO3cub3BlbihlKX07dmFyIGZlPXtsb2NhbGU6W2xlLHpdLHNob3dNb250aHM6W3EsaywkXSxtaW5EYXRlOltQXSxtYXhEYXRlOltQXSxjbGlja09wZW5zOltmdW5jdGlvbigpeyEwPT09dy5jb25maWcuY2xpY2tPcGVucz8oQSh3Ll9pbnB1dCwiZm9jdXMiLHcub3BlbiksQSh3Ll9pbnB1dCwiY2xpY2siLHcub3BlbikpOih3Ll9pbnB1dC5yZW1vdmVFdmVudExpc3RlbmVyKCJmb2N1cyIsdy5vcGVuKSx3Ll9pbnB1dC5yZW1vdmVFdmVudExpc3RlbmVyKCJjbGljayIsdy5vcGVuKSl9XX07ZnVuY3Rpb24gbWUoZSx0KXt2YXIgbj1bXTtpZihlIGluc3RhbmNlb2YgQXJyYXkpbj1lLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIHcucGFyc2VEYXRlKGUsdCl9KSk7ZWxzZSBpZihlIGluc3RhbmNlb2YgRGF0ZXx8Im51bWJlciI9PXR5cGVvZiBlKW49W3cucGFyc2VEYXRlKGUsdCldO2Vsc2UgaWYoInN0cmluZyI9PXR5cGVvZiBlKXN3aXRjaCh3LmNvbmZpZy5tb2RlKXtjYXNlInNpbmdsZSI6Y2FzZSJ0aW1lIjpuPVt3LnBhcnNlRGF0ZShlLHQpXTticmVhaztjYXNlIm11bHRpcGxlIjpuPWUuc3BsaXQody5jb25maWcuY29uanVuY3Rpb24pLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIHcucGFyc2VEYXRlKGUsdCl9KSk7YnJlYWs7Y2FzZSJyYW5nZSI6bj1lLnNwbGl0KHcubDEwbi5yYW5nZVNlcGFyYXRvcikubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gdy5wYXJzZURhdGUoZSx0KX0pKX1lbHNlIHcuY29uZmlnLmVycm9ySGFuZGxlcihuZXcgRXJyb3IoIkludmFsaWQgZGF0ZSBzdXBwbGllZDogIitKU09OLnN0cmluZ2lmeShlKSkpO3cuc2VsZWN0ZWREYXRlcz13LmNvbmZpZy5hbGxvd0ludmFsaWRQcmVsb2FkP246bi5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiBlIGluc3RhbmNlb2YgRGF0ZSYmWChlLCExKX0pKSwicmFuZ2UiPT09dy5jb25maWcubW9kZSYmdy5zZWxlY3RlZERhdGVzLnNvcnQoKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuZ2V0VGltZSgpLXQuZ2V0VGltZSgpfSkpfWZ1bmN0aW9uIGdlKGUpe3JldHVybiBlLnNsaWNlKCkubWFwKChmdW5jdGlvbihlKXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGV8fCJudW1iZXIiPT10eXBlb2YgZXx8ZSBpbnN0YW5jZW9mIERhdGU\/dy5wYXJzZURhdGUoZSx2b2lkIDAsITApOmUmJiJvYmplY3QiPT10eXBlb2YgZSYmZS5mcm9tJiZlLnRvP3tmcm9tOncucGFyc2VEYXRlKGUuZnJvbSx2b2lkIDApLHRvOncucGFyc2VEYXRlKGUudG8sdm9pZCAwKX06ZX0pKS5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiBlfSkpfWZ1bmN0aW9uIHBlKGUsdCl7aWYodm9pZCAwIT09dy5jb25maWcpe3ZhciBuPXcuY29uZmlnW2VdO2lmKHZvaWQgMCE9PW4mJm4ubGVuZ3RoPjApZm9yKHZhciBhPTA7blthXSYmYTxuLmxlbmd0aDthKyspblthXSh3LnNlbGVjdGVkRGF0ZXMsdy5pbnB1dC52YWx1ZSx3LHQpOyJvbkNoYW5nZSI9PT1lJiYody5pbnB1dC5kaXNwYXRjaEV2ZW50KGhlKCJjaGFuZ2UiKSksdy5pbnB1dC5kaXNwYXRjaEV2ZW50KGhlKCJpbnB1dCIpKSl9fWZ1bmN0aW9uIGhlKGUpe3ZhciB0PWRvY3VtZW50LmNyZWF0ZUV2ZW50KCJFdmVudCIpO3JldHVybiB0LmluaXRFdmVudChlLCEwLCEwKSx0fWZ1bmN0aW9uIHZlKGUpe2Zvcih2YXIgdD0wO3Q8dy5zZWxlY3RlZERhdGVzLmxlbmd0aDt0KyspaWYoMD09PU0ody5zZWxlY3RlZERhdGVzW3RdLGUpKXJldHVybiIiK3Q7cmV0dXJuITF9ZnVuY3Rpb24gRGUoKXt3LmNvbmZpZy5ub0NhbGVuZGFyfHx3LmlzTW9iaWxlfHwhdy5tb250aE5hdnx8KHcueWVhckVsZW1lbnRzLmZvckVhY2goKGZ1bmN0aW9uKGUsdCl7dmFyIG49bmV3IERhdGUody5jdXJyZW50WWVhcix3LmN1cnJlbnRNb250aCwxKTtuLnNldE1vbnRoKHcuY3VycmVudE1vbnRoK3QpLHcuY29uZmlnLnNob3dNb250aHM+MXx8InN0YXRpYyI9PT13LmNvbmZpZy5tb250aFNlbGVjdG9yVHlwZT93Lm1vbnRoRWxlbWVudHNbdF0udGV4dENvbnRlbnQ9aChuLmdldE1vbnRoKCksdy5jb25maWcuc2hvcnRoYW5kQ3VycmVudE1vbnRoLHcubDEwbikrIiAiOncubW9udGhzRHJvcGRvd25Db250YWluZXIudmFsdWU9bi5nZXRNb250aCgpLnRvU3RyaW5nKCksZS52YWx1ZT1uLmdldEZ1bGxZZWFyKCkudG9TdHJpbmcoKX0pKSx3Ll9oaWRlUHJldk1vbnRoQXJyb3c9dm9pZCAwIT09dy5jb25maWcubWluRGF0ZSYmKHcuY3VycmVudFllYXI9PT13LmNvbmZpZy5taW5EYXRlLmdldEZ1bGxZZWFyKCk\/dy5jdXJyZW50TW9udGg8PXcuY29uZmlnLm1pbkRhdGUuZ2V0TW9udGgoKTp3LmN1cnJlbnRZZWFyPHcuY29uZmlnLm1pbkRhdGUuZ2V0RnVsbFllYXIoKSksdy5faGlkZU5leHRNb250aEFycm93PXZvaWQgMCE9PXcuY29uZmlnLm1heERhdGUmJih3LmN1cnJlbnRZZWFyPT09dy5jb25maWcubWF4RGF0ZS5nZXRGdWxsWWVhcigpP3cuY3VycmVudE1vbnRoKzE+dy5jb25maWcubWF4RGF0ZS5nZXRNb250aCgpOncuY3VycmVudFllYXI+dy5jb25maWcubWF4RGF0ZS5nZXRGdWxsWWVhcigpKSl9ZnVuY3Rpb24gd2UoZSl7cmV0dXJuIHcuc2VsZWN0ZWREYXRlcy5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB3LmZvcm1hdERhdGUodCxlKX0pKS5maWx0ZXIoKGZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4icmFuZ2UiIT09dy5jb25maWcubW9kZXx8dy5jb25maWcuZW5hYmxlVGltZXx8bi5pbmRleE9mKGUpPT09dH0pKS5qb2luKCJyYW5nZSIhPT13LmNvbmZpZy5tb2RlP3cuY29uZmlnLmNvbmp1bmN0aW9uOncubDEwbi5yYW5nZVNlcGFyYXRvcil9ZnVuY3Rpb24gYmUoZSl7dm9pZCAwPT09ZSYmKGU9ITApLHZvaWQgMCE9PXcubW9iaWxlSW5wdXQmJncubW9iaWxlRm9ybWF0U3RyJiYody5tb2JpbGVJbnB1dC52YWx1ZT12b2lkIDAhPT13LmxhdGVzdFNlbGVjdGVkRGF0ZU9iaj93LmZvcm1hdERhdGUody5sYXRlc3RTZWxlY3RlZERhdGVPYmosdy5tb2JpbGVGb3JtYXRTdHIpOiIiKSx3LmlucHV0LnZhbHVlPXdlKHcuY29uZmlnLmRhdGVGb3JtYXQpLHZvaWQgMCE9PXcuYWx0SW5wdXQmJih3LmFsdElucHV0LnZhbHVlPXdlKHcuY29uZmlnLmFsdEZvcm1hdCkpLCExIT09ZSYmcGUoIm9uVmFsdWVVcGRhdGUiKX1mdW5jdGlvbiBDZShlKXt2YXIgdD1nKGUpLG49dy5wcmV2TW9udGhOYXYuY29udGFpbnModCksYT13Lm5leHRNb250aE5hdi5jb250YWlucyh0KTtufHxhP0cobj8tMToxKTp3LnllYXJFbGVtZW50cy5pbmRleE9mKHQpPj0wP3Quc2VsZWN0KCk6dC5jbGFzc0xpc3QuY29udGFpbnMoImFycm93VXAiKT93LmNoYW5nZVllYXIody5jdXJyZW50WWVhcisxKTp0LmNsYXNzTGlzdC5jb250YWlucygiYXJyb3dEb3duIikmJncuY2hhbmdlWWVhcih3LmN1cnJlbnRZZWFyLTEpfXJldHVybiBmdW5jdGlvbigpe3cuZWxlbWVudD13LmlucHV0PXAsdy5pc09wZW49ITEsZnVuY3Rpb24oKXt2YXIgdD1bIndyYXAiLCJ3ZWVrTnVtYmVycyIsImFsbG93SW5wdXQiLCJhbGxvd0ludmFsaWRQcmVsb2FkIiwiY2xpY2tPcGVucyIsInRpbWVfMjRociIsImVuYWJsZVRpbWUiLCJub0NhbGVuZGFyIiwiYWx0SW5wdXQiLCJzaG9ydGhhbmRDdXJyZW50TW9udGgiLCJpbmxpbmUiLCJzdGF0aWMiLCJlbmFibGVTZWNvbmRzIiwiZGlzYWJsZU1vYmlsZSJdLGk9ZShlKHt9LEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkocC5kYXRhc2V0fHx7fSkpKSx2KSxvPXt9O3cuY29uZmlnLnBhcnNlRGF0ZT1pLnBhcnNlRGF0ZSx3LmNvbmZpZy5mb3JtYXREYXRlPWkuZm9ybWF0RGF0ZSxPYmplY3QuZGVmaW5lUHJvcGVydHkody5jb25maWcsImVuYWJsZSIse2dldDpmdW5jdGlvbigpe3JldHVybiB3LmNvbmZpZy5fZW5hYmxlfSxzZXQ6ZnVuY3Rpb24oZSl7dy5jb25maWcuX2VuYWJsZT1nZShlKX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkody5jb25maWcsImRpc2FibGUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdy5jb25maWcuX2Rpc2FibGV9LHNldDpmdW5jdGlvbihlKXt3LmNvbmZpZy5fZGlzYWJsZT1nZShlKX19KTt2YXIgcj0idGltZSI9PT1pLm1vZGU7aWYoIWkuZGF0ZUZvcm1hdCYmKGkuZW5hYmxlVGltZXx8cikpe3ZhciBsPVQuZGVmYXVsdENvbmZpZy5kYXRlRm9ybWF0fHxhLmRhdGVGb3JtYXQ7by5kYXRlRm9ybWF0PWkubm9DYWxlbmRhcnx8cj8iSDppIisoaS5lbmFibGVTZWNvbmRzPyI6UyI6IiIpOmwrIiBIOmkiKyhpLmVuYWJsZVNlY29uZHM\/IjpTIjoiIil9aWYoaS5hbHRJbnB1dCYmKGkuZW5hYmxlVGltZXx8cikmJiFpLmFsdEZvcm1hdCl7dmFyIGQ9VC5kZWZhdWx0Q29uZmlnLmFsdEZvcm1hdHx8YS5hbHRGb3JtYXQ7by5hbHRGb3JtYXQ9aS5ub0NhbGVuZGFyfHxyPyJoOmkiKyhpLmVuYWJsZVNlY29uZHM\/IjpTIEsiOiIgSyIpOmQrIiBoOmkiKyhpLmVuYWJsZVNlY29uZHM\/IjpTIjoiIikrIiBLIn1PYmplY3QuZGVmaW5lUHJvcGVydHkody5jb25maWcsIm1pbkRhdGUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdy5jb25maWcuX21pbkRhdGV9LHNldDpvZSgibWluIil9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkody5jb25maWcsIm1heERhdGUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdy5jb25maWcuX21heERhdGV9LHNldDpvZSgibWF4Iil9KTt2YXIgcz1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24odCl7dy5jb25maWdbIm1pbiI9PT1lPyJfbWluVGltZSI6Il9tYXhUaW1lIl09dy5wYXJzZURhdGUodCwiSDppOlMiKX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh3LmNvbmZpZywibWluVGltZSIse2dldDpmdW5jdGlvbigpe3JldHVybiB3LmNvbmZpZy5fbWluVGltZX0sc2V0OnMoIm1pbiIpfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHcuY29uZmlnLCJtYXhUaW1lIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHcuY29uZmlnLl9tYXhUaW1lfSxzZXQ6cygibWF4Iil9KSwidGltZSI9PT1pLm1vZGUmJih3LmNvbmZpZy5ub0NhbGVuZGFyPSEwLHcuY29uZmlnLmVuYWJsZVRpbWU9ITApO09iamVjdC5hc3NpZ24ody5jb25maWcsbyxpKTtmb3IodmFyIHU9MDt1PHQubGVuZ3RoO3UrKyl3LmNvbmZpZ1t0W3VdXT0hMD09PXcuY29uZmlnW3RbdV1dfHwidHJ1ZSI9PT13LmNvbmZpZ1t0W3VdXTtuLmZpbHRlcigoZnVuY3Rpb24oZSl7cmV0dXJuIHZvaWQgMCE9PXcuY29uZmlnW2VdfSkpLmZvckVhY2goKGZ1bmN0aW9uKGUpe3cuY29uZmlnW2VdPWMody5jb25maWdbZV18fFtdKS5tYXAoRSl9KSksdy5pc01vYmlsZT0hdy5jb25maWcuZGlzYWJsZU1vYmlsZSYmIXcuY29uZmlnLmlubGluZSYmInNpbmdsZSI9PT13LmNvbmZpZy5tb2RlJiYhdy5jb25maWcuZGlzYWJsZS5sZW5ndGgmJiF3LmNvbmZpZy5lbmFibGUmJiF3LmNvbmZpZy53ZWVrTnVtYmVycyYmL0FuZHJvaWR8d2ViT1N8aVBob25lfGlQYWR8aVBvZHxCbGFja0JlcnJ5fElFTW9iaWxlfE9wZXJhIE1pbmkvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpO2Zvcih1PTA7dTx3LmNvbmZpZy5wbHVnaW5zLmxlbmd0aDt1Kyspe3ZhciBmPXcuY29uZmlnLnBsdWdpbnNbdV0odyl8fHt9O2Zvcih2YXIgbSBpbiBmKW4uaW5kZXhPZihtKT4tMT93LmNvbmZpZ1ttXT1jKGZbbV0pLm1hcChFKS5jb25jYXQody5jb25maWdbbV0pOnZvaWQgMD09PWlbbV0mJih3LmNvbmZpZ1ttXT1mW21dKX1pLmFsdElucHV0Q2xhc3N8fCh3LmNvbmZpZy5hbHRJbnB1dENsYXNzPXJlKCkuY2xhc3NOYW1lKyIgIit3LmNvbmZpZy5hbHRJbnB1dENsYXNzKTtwZSgib25QYXJzZUNvbmZpZyIpfSgpLGxlKCksZnVuY3Rpb24oKXtpZih3LmlucHV0PXJlKCksIXcuaW5wdXQpcmV0dXJuIHZvaWQgdy5jb25maWcuZXJyb3JIYW5kbGVyKG5ldyBFcnJvcigiSW52YWxpZCBpbnB1dCBlbGVtZW50IHNwZWNpZmllZCIpKTt3LmlucHV0Ll90eXBlPXcuaW5wdXQudHlwZSx3LmlucHV0LnR5cGU9InRleHQiLHcuaW5wdXQuY2xhc3NMaXN0LmFkZCgiZmxhdHBpY2tyLWlucHV0Iiksdy5faW5wdXQ9dy5pbnB1dCx3LmNvbmZpZy5hbHRJbnB1dCYmKHcuYWx0SW5wdXQ9cyh3LmlucHV0Lm5vZGVOYW1lLHcuY29uZmlnLmFsdElucHV0Q2xhc3MpLHcuX2lucHV0PXcuYWx0SW5wdXQsdy5hbHRJbnB1dC5wbGFjZWhvbGRlcj13LmlucHV0LnBsYWNlaG9sZGVyLHcuYWx0SW5wdXQuZGlzYWJsZWQ9dy5pbnB1dC5kaXNhYmxlZCx3LmFsdElucHV0LnJlcXVpcmVkPXcuaW5wdXQucmVxdWlyZWQsdy5hbHRJbnB1dC50YWJJbmRleD13LmlucHV0LnRhYkluZGV4LHcuYWx0SW5wdXQudHlwZT0idGV4dCIsdy5pbnB1dC5zZXRBdHRyaWJ1dGUoInR5cGUiLCJoaWRkZW4iKSwhdy5jb25maWcuc3RhdGljJiZ3LmlucHV0LnBhcmVudE5vZGUmJncuaW5wdXQucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUody5hbHRJbnB1dCx3LmlucHV0Lm5leHRTaWJsaW5nKSk7dy5jb25maWcuYWxsb3dJbnB1dHx8dy5faW5wdXQuc2V0QXR0cmlidXRlKCJyZWFkb25seSIsInJlYWRvbmx5Iik7dy5fcG9zaXRpb25FbGVtZW50PXcuY29uZmlnLnBvc2l0aW9uRWxlbWVudHx8dy5faW5wdXR9KCksZnVuY3Rpb24oKXt3LnNlbGVjdGVkRGF0ZXM9W10sdy5ub3c9dy5wYXJzZURhdGUody5jb25maWcubm93KXx8bmV3IERhdGU7dmFyIGU9dy5jb25maWcuZGVmYXVsdERhdGV8fCgiSU5QVVQiIT09dy5pbnB1dC5ub2RlTmFtZSYmIlRFWFRBUkVBIiE9PXcuaW5wdXQubm9kZU5hbWV8fCF3LmlucHV0LnBsYWNlaG9sZGVyfHx3LmlucHV0LnZhbHVlIT09dy5pbnB1dC5wbGFjZWhvbGRlcj93LmlucHV0LnZhbHVlOm51bGwpO2UmJm1lKGUsdy5jb25maWcuZGF0ZUZvcm1hdCk7dy5faW5pdGlhbERhdGU9dy5zZWxlY3RlZERhdGVzLmxlbmd0aD4wP3cuc2VsZWN0ZWREYXRlc1swXTp3LmNvbmZpZy5taW5EYXRlJiZ3LmNvbmZpZy5taW5EYXRlLmdldFRpbWUoKT53Lm5vdy5nZXRUaW1lKCk\/dy5jb25maWcubWluRGF0ZTp3LmNvbmZpZy5tYXhEYXRlJiZ3LmNvbmZpZy5tYXhEYXRlLmdldFRpbWUoKTx3Lm5vdy5nZXRUaW1lKCk\/dy5jb25maWcubWF4RGF0ZTp3Lm5vdyx3LmN1cnJlbnRZZWFyPXcuX2luaXRpYWxEYXRlLmdldEZ1bGxZZWFyKCksdy5jdXJyZW50TW9udGg9dy5faW5pdGlhbERhdGUuZ2V0TW9udGgoKSx3LnNlbGVjdGVkRGF0ZXMubGVuZ3RoPjAmJih3LmxhdGVzdFNlbGVjdGVkRGF0ZU9iaj13LnNlbGVjdGVkRGF0ZXNbMF0pO3ZvaWQgMCE9PXcuY29uZmlnLm1pblRpbWUmJih3LmNvbmZpZy5taW5UaW1lPXcucGFyc2VEYXRlKHcuY29uZmlnLm1pblRpbWUsIkg6aSIpKTt2b2lkIDAhPT13LmNvbmZpZy5tYXhUaW1lJiYody5jb25maWcubWF4VGltZT13LnBhcnNlRGF0ZSh3LmNvbmZpZy5tYXhUaW1lLCJIOmkiKSk7dy5taW5EYXRlSGFzVGltZT0hIXcuY29uZmlnLm1pbkRhdGUmJih3LmNvbmZpZy5taW5EYXRlLmdldEhvdXJzKCk+MHx8dy5jb25maWcubWluRGF0ZS5nZXRNaW51dGVzKCk+MHx8dy5jb25maWcubWluRGF0ZS5nZXRTZWNvbmRzKCk+MCksdy5tYXhEYXRlSGFzVGltZT0hIXcuY29uZmlnLm1heERhdGUmJih3LmNvbmZpZy5tYXhEYXRlLmdldEhvdXJzKCk+MHx8dy5jb25maWcubWF4RGF0ZS5nZXRNaW51dGVzKCk+MHx8dy5jb25maWcubWF4RGF0ZS5nZXRTZWNvbmRzKCk+MCl9KCksdy51dGlscz17Z2V0RGF5c0luTW9udGg6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9dy5jdXJyZW50TW9udGgpLHZvaWQgMD09PXQmJih0PXcuY3VycmVudFllYXIpLDE9PT1lJiYodCU0PT0wJiZ0JTEwMCE9MHx8dCU0MDA9PTApPzI5OncubDEwbi5kYXlzSW5Nb250aFtlXX19LHcuaXNNb2JpbGV8fGZ1bmN0aW9uKCl7dmFyIGU9d2luZG93LmRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTtpZih3LmNhbGVuZGFyQ29udGFpbmVyPXMoImRpdiIsImZsYXRwaWNrci1jYWxlbmRhciIpLHcuY2FsZW5kYXJDb250YWluZXIudGFiSW5kZXg9LTEsIXcuY29uZmlnLm5vQ2FsZW5kYXIpe2lmKGUuYXBwZW5kQ2hpbGQoKHcubW9udGhOYXY9cygiZGl2IiwiZmxhdHBpY2tyLW1vbnRocyIpLHcueWVhckVsZW1lbnRzPVtdLHcubW9udGhFbGVtZW50cz1bXSx3LnByZXZNb250aE5hdj1zKCJzcGFuIiwiZmxhdHBpY2tyLXByZXYtbW9udGgiKSx3LnByZXZNb250aE5hdi5pbm5lckhUTUw9dy5jb25maWcucHJldkFycm93LHcubmV4dE1vbnRoTmF2PXMoInNwYW4iLCJmbGF0cGlja3ItbmV4dC1tb250aCIpLHcubmV4dE1vbnRoTmF2LmlubmVySFRNTD13LmNvbmZpZy5uZXh0QXJyb3cscSgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh3LCJfaGlkZVByZXZNb250aEFycm93Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHcuX19oaWRlUHJldk1vbnRoQXJyb3d9LHNldDpmdW5jdGlvbihlKXt3Ll9faGlkZVByZXZNb250aEFycm93IT09ZSYmKGQody5wcmV2TW9udGhOYXYsImZsYXRwaWNrci1kaXNhYmxlZCIsZSksdy5fX2hpZGVQcmV2TW9udGhBcnJvdz1lKX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodywiX2hpZGVOZXh0TW9udGhBcnJvdyIse2dldDpmdW5jdGlvbigpe3JldHVybiB3Ll9faGlkZU5leHRNb250aEFycm93fSxzZXQ6ZnVuY3Rpb24oZSl7dy5fX2hpZGVOZXh0TW9udGhBcnJvdyE9PWUmJihkKHcubmV4dE1vbnRoTmF2LCJmbGF0cGlja3ItZGlzYWJsZWQiLGUpLHcuX19oaWRlTmV4dE1vbnRoQXJyb3c9ZSl9fSksdy5jdXJyZW50WWVhckVsZW1lbnQ9dy55ZWFyRWxlbWVudHNbMF0sRGUoKSx3Lm1vbnRoTmF2KSksdy5pbm5lckNvbnRhaW5lcj1zKCJkaXYiLCJmbGF0cGlja3ItaW5uZXJDb250YWluZXIiKSx3LmNvbmZpZy53ZWVrTnVtYmVycyl7dmFyIHQ9ZnVuY3Rpb24oKXt3LmNhbGVuZGFyQ29udGFpbmVyLmNsYXNzTGlzdC5hZGQoImhhc1dlZWtzIik7dmFyIGU9cygiZGl2IiwiZmxhdHBpY2tyLXdlZWt3cmFwcGVyIik7ZS5hcHBlbmRDaGlsZChzKCJzcGFuIiwiZmxhdHBpY2tyLXdlZWtkYXkiLHcubDEwbi53ZWVrQWJicmV2aWF0aW9uKSk7dmFyIHQ9cygiZGl2IiwiZmxhdHBpY2tyLXdlZWtzIik7cmV0dXJuIGUuYXBwZW5kQ2hpbGQodCkse3dlZWtXcmFwcGVyOmUsd2Vla051bWJlcnM6dH19KCksbj10LndlZWtXcmFwcGVyLGE9dC53ZWVrTnVtYmVyczt3LmlubmVyQ29udGFpbmVyLmFwcGVuZENoaWxkKG4pLHcud2Vla051bWJlcnM9YSx3LndlZWtXcmFwcGVyPW59dy5yQ29udGFpbmVyPXMoImRpdiIsImZsYXRwaWNrci1yQ29udGFpbmVyIiksdy5yQ29udGFpbmVyLmFwcGVuZENoaWxkKCQoKSksdy5kYXlzQ29udGFpbmVyfHwody5kYXlzQ29udGFpbmVyPXMoImRpdiIsImZsYXRwaWNrci1kYXlzIiksdy5kYXlzQ29udGFpbmVyLnRhYkluZGV4PS0xKSxKKCksdy5yQ29udGFpbmVyLmFwcGVuZENoaWxkKHcuZGF5c0NvbnRhaW5lciksdy5pbm5lckNvbnRhaW5lci5hcHBlbmRDaGlsZCh3LnJDb250YWluZXIpLGUuYXBwZW5kQ2hpbGQody5pbm5lckNvbnRhaW5lcil9dy5jb25maWcuZW5hYmxlVGltZSYmZS5hcHBlbmRDaGlsZChmdW5jdGlvbigpe3cuY2FsZW5kYXJDb250YWluZXIuY2xhc3NMaXN0LmFkZCgiaGFzVGltZSIpLHcuY29uZmlnLm5vQ2FsZW5kYXImJncuY2FsZW5kYXJDb250YWluZXIuY2xhc3NMaXN0LmFkZCgibm9DYWxlbmRhciIpO3ZhciBlPXgody5jb25maWcpO3cudGltZUNvbnRhaW5lcj1zKCJkaXYiLCJmbGF0cGlja3ItdGltZSIpLHcudGltZUNvbnRhaW5lci50YWJJbmRleD0tMTt2YXIgdD1zKCJzcGFuIiwiZmxhdHBpY2tyLXRpbWUtc2VwYXJhdG9yIiwiOiIpLG49bSgiZmxhdHBpY2tyLWhvdXIiLHsiYXJpYS1sYWJlbCI6dy5sMTBuLmhvdXJBcmlhTGFiZWx9KTt3LmhvdXJFbGVtZW50PW4uZ2V0RWxlbWVudHNCeVRhZ05hbWUoImlucHV0IilbMF07dmFyIGE9bSgiZmxhdHBpY2tyLW1pbnV0ZSIseyJhcmlhLWxhYmVsIjp3LmwxMG4ubWludXRlQXJpYUxhYmVsfSk7dy5taW51dGVFbGVtZW50PWEuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImlucHV0IilbMF0sdy5ob3VyRWxlbWVudC50YWJJbmRleD13Lm1pbnV0ZUVsZW1lbnQudGFiSW5kZXg9LTEsdy5ob3VyRWxlbWVudC52YWx1ZT1vKHcubGF0ZXN0U2VsZWN0ZWREYXRlT2JqP3cubGF0ZXN0U2VsZWN0ZWREYXRlT2JqLmdldEhvdXJzKCk6dy5jb25maWcudGltZV8yNGhyP2UuaG91cnM6ZnVuY3Rpb24oZSl7c3dpdGNoKGUlMjQpe2Nhc2UgMDpjYXNlIDEyOnJldHVybiAxMjtkZWZhdWx0OnJldHVybiBlJTEyfX0oZS5ob3VycykpLHcubWludXRlRWxlbWVudC52YWx1ZT1vKHcubGF0ZXN0U2VsZWN0ZWREYXRlT2JqP3cubGF0ZXN0U2VsZWN0ZWREYXRlT2JqLmdldE1pbnV0ZXMoKTplLm1pbnV0ZXMpLHcuaG91ckVsZW1lbnQuc2V0QXR0cmlidXRlKCJzdGVwIix3LmNvbmZpZy5ob3VySW5jcmVtZW50LnRvU3RyaW5nKCkpLHcubWludXRlRWxlbWVudC5zZXRBdHRyaWJ1dGUoInN0ZXAiLHcuY29uZmlnLm1pbnV0ZUluY3JlbWVudC50b1N0cmluZygpKSx3LmhvdXJFbGVtZW50LnNldEF0dHJpYnV0ZSgibWluIix3LmNvbmZpZy50aW1lXzI0aHI\/IjAiOiIxIiksdy5ob3VyRWxlbWVudC5zZXRBdHRyaWJ1dGUoIm1heCIsdy5jb25maWcudGltZV8yNGhyPyIyMyI6IjEyIiksdy5ob3VyRWxlbWVudC5zZXRBdHRyaWJ1dGUoIm1heGxlbmd0aCIsIjIiKSx3Lm1pbnV0ZUVsZW1lbnQuc2V0QXR0cmlidXRlKCJtaW4iLCIwIiksdy5taW51dGVFbGVtZW50LnNldEF0dHJpYnV0ZSgibWF4IiwiNTkiKSx3Lm1pbnV0ZUVsZW1lbnQuc2V0QXR0cmlidXRlKCJtYXhsZW5ndGgiLCIyIiksdy50aW1lQ29udGFpbmVyLmFwcGVuZENoaWxkKG4pLHcudGltZUNvbnRhaW5lci5hcHBlbmRDaGlsZCh0KSx3LnRpbWVDb250YWluZXIuYXBwZW5kQ2hpbGQoYSksdy5jb25maWcudGltZV8yNGhyJiZ3LnRpbWVDb250YWluZXIuY2xhc3NMaXN0LmFkZCgidGltZTI0aHIiKTtpZih3LmNvbmZpZy5lbmFibGVTZWNvbmRzKXt3LnRpbWVDb250YWluZXIuY2xhc3NMaXN0LmFkZCgiaGFzU2Vjb25kcyIpO3ZhciBpPW0oImZsYXRwaWNrci1zZWNvbmQiKTt3LnNlY29uZEVsZW1lbnQ9aS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaW5wdXQiKVswXSx3LnNlY29uZEVsZW1lbnQudmFsdWU9byh3LmxhdGVzdFNlbGVjdGVkRGF0ZU9iaj93LmxhdGVzdFNlbGVjdGVkRGF0ZU9iai5nZXRTZWNvbmRzKCk6ZS5zZWNvbmRzKSx3LnNlY29uZEVsZW1lbnQuc2V0QXR0cmlidXRlKCJzdGVwIix3Lm1pbnV0ZUVsZW1lbnQuZ2V0QXR0cmlidXRlKCJzdGVwIikpLHcuc2Vjb25kRWxlbWVudC5zZXRBdHRyaWJ1dGUoIm1pbiIsIjAiKSx3LnNlY29uZEVsZW1lbnQuc2V0QXR0cmlidXRlKCJtYXgiLCI1OSIpLHcuc2Vjb25kRWxlbWVudC5zZXRBdHRyaWJ1dGUoIm1heGxlbmd0aCIsIjIiKSx3LnRpbWVDb250YWluZXIuYXBwZW5kQ2hpbGQocygic3BhbiIsImZsYXRwaWNrci10aW1lLXNlcGFyYXRvciIsIjoiKSksdy50aW1lQ29udGFpbmVyLmFwcGVuZENoaWxkKGkpfXcuY29uZmlnLnRpbWVfMjRocnx8KHcuYW1QTT1zKCJzcGFuIiwiZmxhdHBpY2tyLWFtLXBtIix3LmwxMG4uYW1QTVtyKCh3LmxhdGVzdFNlbGVjdGVkRGF0ZU9iaj93LmhvdXJFbGVtZW50LnZhbHVlOncuY29uZmlnLmRlZmF1bHRIb3VyKT4xMSldKSx3LmFtUE0udGl0bGU9dy5sMTBuLnRvZ2dsZVRpdGxlLHcuYW1QTS50YWJJbmRleD0tMSx3LnRpbWVDb250YWluZXIuYXBwZW5kQ2hpbGQody5hbVBNKSk7cmV0dXJuIHcudGltZUNvbnRhaW5lcn0oKSk7ZCh3LmNhbGVuZGFyQ29udGFpbmVyLCJyYW5nZU1vZGUiLCJyYW5nZSI9PT13LmNvbmZpZy5tb2RlKSxkKHcuY2FsZW5kYXJDb250YWluZXIsImFuaW1hdGUiLCEwPT09dy5jb25maWcuYW5pbWF0ZSksZCh3LmNhbGVuZGFyQ29udGFpbmVyLCJtdWx0aU1vbnRoIix3LmNvbmZpZy5zaG93TW9udGhzPjEpLHcuY2FsZW5kYXJDb250YWluZXIuYXBwZW5kQ2hpbGQoZSk7dmFyIGk9dm9pZCAwIT09dy5jb25maWcuYXBwZW5kVG8mJnZvaWQgMCE9PXcuY29uZmlnLmFwcGVuZFRvLm5vZGVUeXBlO2lmKCh3LmNvbmZpZy5pbmxpbmV8fHcuY29uZmlnLnN0YXRpYykmJih3LmNhbGVuZGFyQ29udGFpbmVyLmNsYXNzTGlzdC5hZGQody5jb25maWcuaW5saW5lPyJpbmxpbmUiOiJzdGF0aWMiKSx3LmNvbmZpZy5pbmxpbmUmJighaSYmdy5lbGVtZW50LnBhcmVudE5vZGU\/dy5lbGVtZW50LnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHcuY2FsZW5kYXJDb250YWluZXIsdy5faW5wdXQubmV4dFNpYmxpbmcpOnZvaWQgMCE9PXcuY29uZmlnLmFwcGVuZFRvJiZ3LmNvbmZpZy5hcHBlbmRUby5hcHBlbmRDaGlsZCh3LmNhbGVuZGFyQ29udGFpbmVyKSksdy5jb25maWcuc3RhdGljKSl7dmFyIGw9cygiZGl2IiwiZmxhdHBpY2tyLXdyYXBwZXIiKTt3LmVsZW1lbnQucGFyZW50Tm9kZSYmdy5lbGVtZW50LnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGwsdy5lbGVtZW50KSxsLmFwcGVuZENoaWxkKHcuZWxlbWVudCksdy5hbHRJbnB1dCYmbC5hcHBlbmRDaGlsZCh3LmFsdElucHV0KSxsLmFwcGVuZENoaWxkKHcuY2FsZW5kYXJDb250YWluZXIpfXcuY29uZmlnLnN0YXRpY3x8dy5jb25maWcuaW5saW5lfHwodm9pZCAwIT09dy5jb25maWcuYXBwZW5kVG8\/dy5jb25maWcuYXBwZW5kVG86d2luZG93LmRvY3VtZW50LmJvZHkpLmFwcGVuZENoaWxkKHcuY2FsZW5kYXJDb250YWluZXIpfSgpLGZ1bmN0aW9uKCl7dy5jb25maWcud3JhcCYmWyJvcGVuIiwiY2xvc2UiLCJ0b2dnbGUiLCJjbGVhciJdLmZvckVhY2goKGZ1bmN0aW9uKGUpe0FycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwody5lbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIltkYXRhLSIrZSsiXSIpLChmdW5jdGlvbih0KXtyZXR1cm4gQSh0LCJjbGljayIsd1tlXSl9KSl9KSk7aWYody5pc01vYmlsZSlyZXR1cm4gdm9pZCBmdW5jdGlvbigpe3ZhciBlPXcuY29uZmlnLmVuYWJsZVRpbWU\/dy5jb25maWcubm9DYWxlbmRhcj8idGltZSI6ImRhdGV0aW1lLWxvY2FsIjoiZGF0ZSI7dy5tb2JpbGVJbnB1dD1zKCJpbnB1dCIsdy5pbnB1dC5jbGFzc05hbWUrIiBmbGF0cGlja3ItbW9iaWxlIiksdy5tb2JpbGVJbnB1dC50YWJJbmRleD0xLHcubW9iaWxlSW5wdXQudHlwZT1lLHcubW9iaWxlSW5wdXQuZGlzYWJsZWQ9dy5pbnB1dC5kaXNhYmxlZCx3Lm1vYmlsZUlucHV0LnJlcXVpcmVkPXcuaW5wdXQucmVxdWlyZWQsdy5tb2JpbGVJbnB1dC5wbGFjZWhvbGRlcj13LmlucHV0LnBsYWNlaG9sZGVyLHcubW9iaWxlRm9ybWF0U3RyPSJkYXRldGltZS1sb2NhbCI9PT1lPyJZLW0tZFxcVEg6aTpTIjoiZGF0ZSI9PT1lPyJZLW0tZCI6Ikg6aTpTIix3LnNlbGVjdGVkRGF0ZXMubGVuZ3RoPjAmJih3Lm1vYmlsZUlucHV0LmRlZmF1bHRWYWx1ZT13Lm1vYmlsZUlucHV0LnZhbHVlPXcuZm9ybWF0RGF0ZSh3LnNlbGVjdGVkRGF0ZXNbMF0sdy5tb2JpbGVGb3JtYXRTdHIpKTt3LmNvbmZpZy5taW5EYXRlJiYody5tb2JpbGVJbnB1dC5taW49dy5mb3JtYXREYXRlKHcuY29uZmlnLm1pbkRhdGUsIlktbS1kIikpO3cuY29uZmlnLm1heERhdGUmJih3Lm1vYmlsZUlucHV0Lm1heD13LmZvcm1hdERhdGUody5jb25maWcubWF4RGF0ZSwiWS1tLWQiKSk7dy5pbnB1dC5nZXRBdHRyaWJ1dGUoInN0ZXAiKSYmKHcubW9iaWxlSW5wdXQuc3RlcD1TdHJpbmcody5pbnB1dC5nZXRBdHRyaWJ1dGUoInN0ZXAiKSkpO3cuaW5wdXQudHlwZT0iaGlkZGVuIix2b2lkIDAhPT13LmFsdElucHV0JiYody5hbHRJbnB1dC50eXBlPSJoaWRkZW4iKTt0cnl7dy5pbnB1dC5wYXJlbnROb2RlJiZ3LmlucHV0LnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHcubW9iaWxlSW5wdXQsdy5pbnB1dC5uZXh0U2libGluZyl9Y2F0Y2goZSl7fUEody5tb2JpbGVJbnB1dCwiY2hhbmdlIiwoZnVuY3Rpb24oZSl7dy5zZXREYXRlKGcoZSkudmFsdWUsITEsdy5tb2JpbGVGb3JtYXRTdHIpLHBlKCJvbkNoYW5nZSIpLHBlKCJvbkNsb3NlIil9KSl9KCk7dmFyIGU9bChpZSw1MCk7dy5fZGVib3VuY2VkQ2hhbmdlPWwoTiwzMDApLHcuZGF5c0NvbnRhaW5lciYmIS9pUGhvbmV8aVBhZHxpUG9kL2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSYmQSh3LmRheXNDb250YWluZXIsIm1vdXNlb3ZlciIsKGZ1bmN0aW9uKGUpeyJyYW5nZSI9PT13LmNvbmZpZy5tb2RlJiZhZShnKGUpKX0pKTtBKHdpbmRvdy5kb2N1bWVudC5ib2R5LCJrZXlkb3duIixuZSksdy5jb25maWcuaW5saW5lfHx3LmNvbmZpZy5zdGF0aWN8fEEod2luZG93LCJyZXNpemUiLGUpO3ZvaWQgMCE9PXdpbmRvdy5vbnRvdWNoc3RhcnQ\/QSh3aW5kb3cuZG9jdW1lbnQsInRvdWNoc3RhcnQiLFopOkEod2luZG93LmRvY3VtZW50LCJtb3VzZWRvd24iLFopO0Eod2luZG93LmRvY3VtZW50LCJmb2N1cyIsWix7Y2FwdHVyZTohMH0pLCEwPT09dy5jb25maWcuY2xpY2tPcGVucyYmKEEody5faW5wdXQsImZvY3VzIix3Lm9wZW4pLEEody5faW5wdXQsImNsaWNrIix3Lm9wZW4pKTt2b2lkIDAhPT13LmRheXNDb250YWluZXImJihBKHcubW9udGhOYXYsImNsaWNrIixDZSksQSh3Lm1vbnRoTmF2LFsia2V5dXAiLCJpbmNyZW1lbnQiXSxGKSxBKHcuZGF5c0NvbnRhaW5lciwiY2xpY2siLHVlKSk7aWYodm9pZCAwIT09dy50aW1lQ29udGFpbmVyJiZ2b2lkIDAhPT13Lm1pbnV0ZUVsZW1lbnQmJnZvaWQgMCE9PXcuaG91ckVsZW1lbnQpe3ZhciB0PWZ1bmN0aW9uKGUpe3JldHVybiBnKGUpLnNlbGVjdCgpfTtBKHcudGltZUNvbnRhaW5lcixbImluY3JlbWVudCJdLEkpLEEody50aW1lQ29udGFpbmVyLCJibHVyIixJLHtjYXB0dXJlOiEwfSksQSh3LnRpbWVDb250YWluZXIsImNsaWNrIixZKSxBKFt3LmhvdXJFbGVtZW50LHcubWludXRlRWxlbWVudF0sWyJmb2N1cyIsImNsaWNrIl0sdCksdm9pZCAwIT09dy5zZWNvbmRFbGVtZW50JiZBKHcuc2Vjb25kRWxlbWVudCwiZm9jdXMiLChmdW5jdGlvbigpe3JldHVybiB3LnNlY29uZEVsZW1lbnQmJncuc2Vjb25kRWxlbWVudC5zZWxlY3QoKX0pKSx2b2lkIDAhPT13LmFtUE0mJkEody5hbVBNLCJjbGljayIsKGZ1bmN0aW9uKGUpe0koZSksTigpfSkpfXcuY29uZmlnLmFsbG93SW5wdXQmJkEody5faW5wdXQsImJsdXIiLHRlKX0oKSwody5zZWxlY3RlZERhdGVzLmxlbmd0aHx8dy5jb25maWcubm9DYWxlbmRhcikmJih3LmNvbmZpZy5lbmFibGVUaW1lJiZfKHcuY29uZmlnLm5vQ2FsZW5kYXI\/dy5sYXRlc3RTZWxlY3RlZERhdGVPYmo6dm9pZCAwKSxiZSghMSkpLGsoKTt2YXIgdD0vXigoPyFjaHJvbWV8YW5kcm9pZCkuKSpzYWZhcmkvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpOyF3LmlzTW9iaWxlJiZ0JiZjZSgpLHBlKCJvblJlYWR5Iil9KCksd31mdW5jdGlvbiBrKGUsdCl7Zm9yKHZhciBuPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGUpLmZpbHRlcigoZnVuY3Rpb24oZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiBIVE1MRWxlbWVudH0pKSxhPVtdLGk9MDtpPG4ubGVuZ3RoO2krKyl7dmFyIG89bltpXTt0cnl7aWYobnVsbCE9PW8uZ2V0QXR0cmlidXRlKCJkYXRhLWZwLW9taXQiKSljb250aW51ZTt2b2lkIDAhPT1vLl9mbGF0cGlja3ImJihvLl9mbGF0cGlja3IuZGVzdHJveSgpLG8uX2ZsYXRwaWNrcj12b2lkIDApLG8uX2ZsYXRwaWNrcj1FKG8sdHx8e30pLGEucHVzaChvLl9mbGF0cGlja3IpfWNhdGNoKGUpe2NvbnNvbGUuZXJyb3IoZSl9fXJldHVybiAxPT09YS5sZW5ndGg\/YVswXTphfSJ1bmRlZmluZWQiIT10eXBlb2YgSFRNTEVsZW1lbnQmJiJ1bmRlZmluZWQiIT10eXBlb2YgSFRNTENvbGxlY3Rpb24mJiJ1bmRlZmluZWQiIT10eXBlb2YgTm9kZUxpc3QmJihIVE1MQ29sbGVjdGlvbi5wcm90b3R5cGUuZmxhdHBpY2tyPU5vZGVMaXN0LnByb3RvdHlwZS5mbGF0cGlja3I9ZnVuY3Rpb24oZSl7cmV0dXJuIGsodGhpcyxlKX0sSFRNTEVsZW1lbnQucHJvdG90eXBlLmZsYXRwaWNrcj1mdW5jdGlvbihlKXtyZXR1cm4gayhbdGhpc10sZSl9KTt2YXIgVD1mdW5jdGlvbihlLHQpe3JldHVybiJzdHJpbmciPT10eXBlb2YgZT9rKHdpbmRvdy5kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKGUpLHQpOmUgaW5zdGFuY2VvZiBOb2RlP2soW2VdLHQpOmsoZSx0KX07cmV0dXJuIFQuZGVmYXVsdENvbmZpZz17fSxULmwxMG5zPXtlbjplKHt9LGkpLGRlZmF1bHQ6ZSh7fSxpKX0sVC5sb2NhbGl6ZT1mdW5jdGlvbih0KXtULmwxMG5zLmRlZmF1bHQ9ZShlKHt9LFQubDEwbnMuZGVmYXVsdCksdCl9LFQuc2V0RGVmYXVsdHM9ZnVuY3Rpb24odCl7VC5kZWZhdWx0Q29uZmlnPWUoZSh7fSxULmRlZmF1bHRDb25maWcpLHQpfSxULnBhcnNlRGF0ZT1DKHt9KSxULmZvcm1hdERhdGU9Yih7fSksVC5jb21wYXJlRGF0ZXM9TSwidW5kZWZpbmVkIiE9dHlwZW9mIGpRdWVyeSYmdm9pZCAwIT09alF1ZXJ5LmZuJiYoalF1ZXJ5LmZuLmZsYXRwaWNrcj1mdW5jdGlvbihlKXtyZXR1cm4gayh0aGlzLGUpfSksRGF0ZS5wcm90b3R5cGUuZnBfaW5jcj1mdW5jdGlvbihlKXtyZXR1cm4gbmV3IERhdGUodGhpcy5nZXRGdWxsWWVhcigpLHRoaXMuZ2V0TW9udGgoKSx0aGlzLmdldERhdGUoKSsoInN0cmluZyI9PXR5cGVvZiBlP3BhcnNlSW50KGUsMTApOmUpKX0sInVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3cmJih3aW5kb3cuZmxhdHBpY2tyPVQpLFR9KSk7Ci8qKiAvbS9qcy92YW5pbGxhanMvZmxhdHBpY2tyLmZyLmpzICoqLwp2YXIgX19fZDJjX2ZsYXRwaWNrcmZyanNfY19vbj0iMjAyNS0wNS0yMyAxNzowNToxNyI7J3VzZSBzdHJpY3QnO3ZhciBfX19kMmNfZmxhdHBpY2tyZnJqc19jX29uPSIyMDI0LTAxLTMxIDE0OjMyOjQ2IjsidXNlIHN0cmljdCI7X19fZDJjX2ZsYXRwaWNrcmZyanNfY19vbj0iMjAyMy0wMS0xMiAxMTo0MTo0NiI7InVzZSBzdHJpY3QiO19fX2QyY19mbGF0cGlja3JmcmpzX2Nfb249IjIwMjMtMDEtMTIgMTA6NTE6MzAiOyJ1c2Ugc3RyaWN0IjtfX19kMmNfZmxhdHBpY2tyZnJqc19jX29uPSIyMDIxLTEyLTIxIDEzOjMwOjUyIjsidXNlIHN0cmljdCI7CihmdW5jdGlvbihiLGEpeyJvYmplY3QiPT09dHlwZW9mIGV4cG9ydHMmJiJ1bmRlZmluZWQiIT09dHlwZW9mIG1vZHVsZT9hKGV4cG9ydHMpOiJmdW5jdGlvbiI9PT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZShbImV4cG9ydHMiXSxhKTooYj0idW5kZWZpbmVkIiE9PXR5cGVvZiBnbG9iYWxUaGlzP2dsb2JhbFRoaXM6Ynx8c2VsZixhKGIuZnI9e30pKX0pKHRoaXMsZnVuY3Rpb24oYil7dmFyIGE9InVuZGVmaW5lZCIhPT10eXBlb2Ygd2luZG93JiZ2b2lkIDAhPT13aW5kb3cuZmxhdHBpY2tyP3dpbmRvdy5mbGF0cGlja3I6e2wxMG5zOnt9fSxjPXtmaXJzdERheU9mV2VlazoxLHdlZWtkYXlzOntzaG9ydGhhbmQ6ImRpbSBsdW4gbWFyIG1lciBqZXUgdmVuIHNhbSIuc3BsaXQoIiAiKSxsb25naGFuZDoiZGltYW5jaGUgbHVuZGkgbWFyZGkgbWVyY3JlZGkgamV1ZGkgdmVuZHJlZGkgc2FtZWRpIi5zcGxpdCgiICIpfSxtb250aHM6e3Nob3J0aGFuZDoiamFudiBmw6l2ciBtYXJzIGF2ciBtYWkganVpbiBqdWlsIGFvw7t0IHNlcHQgb2N0IG5vdiBkw6ljIi5zcGxpdCgiICIpLApsb25naGFuZDoiamFudmllciBmw6l2cmllciBtYXJzIGF2cmlsIG1haSBqdWluIGp1aWxsZXQgYW\/Du3Qgc2VwdGVtYnJlIG9jdG9icmUgbm92ZW1icmUgZMOpY2VtYnJlIi5zcGxpdCgiICIpfSxvcmRpbmFsOmZ1bmN0aW9uKGQpe3JldHVybiAxPGQ\/IiI6ImVyIn0scmFuZ2VTZXBhcmF0b3I6IiBhdSAiLHdlZWtBYmJyZXZpYXRpb246IlNlbSIsc2Nyb2xsVGl0bGU6IkTDqWZpbGVyIHBvdXIgYXVnbWVudGVyIGxhIHZhbGV1ciIsdG9nZ2xlVGl0bGU6IkNsaXF1ZXIgcG91ciBiYXNjdWxlciIsdGltZV8yNGhyOiEwfTthLmwxMG5zLmZyPWM7YT1hLmwxMG5zO2IuRnJlbmNoPWM7Yi5kZWZhdWx0PWE7T2JqZWN0LmRlZmluZVByb3BlcnR5KGIsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pfSk7Ci8qKiAvbS9qcy9mci5uZXdjYXJzLmlubGluZS5qcyAqKi8KdmFyIGpzX2QyY19nZXRfdmFsPShqc19kMmNfZ2V0X3ZhbHx8ZnVuY3Rpb24oaWQpe3RyeXtyZXR1cm4gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpLnZhbHVlO31jYXRjaChleCl7aWYoY29uc29sZSYmY29uc29sZS5sb2cpY29uc29sZS5sb2coIlN5c3RlbSBmYWlsZWQgd2hpbGUgcmV0cmlldmluZyByZXBsYWNlbWVudCB2YWx1ZTogIitpZCxleCk7cmV0dXJuJyc7fX0pO3ZhciBpZGVudF85MmYyYmFhZmQ2ZWI2YzU3M2JkZDI5Y2JmMTJkMDI3Mjt0cnl7KGZ1bmN0aW9uKHcsZCxzLGwsaSl7d1tsXT13W2xdfHxbXTt3W2xdLnB1c2goeydndG0uc3RhcnQnOm5ldyBEYXRlKCkuZ2V0VGltZSgpLGV2ZW50OidndG0uanMnfSk7dmFyIGY9ZC5nZXRFbGVtZW50c0J5VGFnTmFtZShzKVswXSxqPWQuY3JlYXRlRWxlbWVudChzKSxkbD1sIT0nZGF0YUxheWVyJz8nJmw9JytsOicnO2ouYXN5bmM9dHJ1ZTtqLnNyYz0naHR0cHM6Ly93d3cuZ29vZ2xldGFnbWFuYWdlci5jb20vZ3RtLmpzP2lkPScraStkbDtmLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGosZik7fSkod2luZG93LGRvY3VtZW50LCdzY3JpcHQnLCdkYXRhTGF5ZXInLCdHVE0tVDk2SjRCVzMnKTt9Y2F0Y2goZXp6MSl7aWYoY29uc29sZSYmY29uc29sZS5sb2cpCmNvbnNvbGUubG9nKGV6ejEpO30KdmFyIGlkZW50X2Q3M2Y0MTliNzNjOGNjZjBhNWNlNDdiNGFmNDM4YTFjO3RyeXsoZnVuY3Rpb24odyxkLHMsbCxpKXt3W2xdPXdbbF18fFtdO3dbbF0ucHVzaCh7J2d0bS5zdGFydCc6bmV3IERhdGUoKS5nZXRUaW1lKCksZXZlbnQ6J2d0bS5qcyd9KTt2YXIgZj1kLmdldEVsZW1lbnRzQnlUYWdOYW1lKHMpWzBdLGo9ZC5jcmVhdGVFbGVtZW50KHMpLGRsPWwhPSdkYXRhTGF5ZXInPycmbD0nK2w6Jyc7ai5hc3luYz10cnVlO2ouc3JjPSdodHRwczovL3d3dy5nb29nbGV0YWdtYW5hZ2VyLmNvbS9ndG0uanM\/aWQ9JytpK2RsO2YucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoaixmKTt9KSh3aW5kb3csZG9jdW1lbnQsJ3NjcmlwdCcsJ2RhdGFMYXllcicsJ0dUTS1LNUJHR1M4UCcpO31jYXRjaChlenoxKXtpZihjb25zb2xlJiZjb25zb2xlLmxvZykKY29uc29sZS5sb2coZXp6MSk7fQp2YXIgaWRlbnRfN2MwYzczN2RmMzM5NDZmODlhMzRiYWJmMjM2OWNjMTg7dHJ5e0QyQVNDKHsidXNlckxhbmd1YWdlIjoiZnJlIiwicGFDb2RlIjoiMjA4NiIsImNsaWVudCI6ImFjdXJhIiwicGFnZUlkIjoic2hvd3Jvb20iLCJvZW1JbmZvIjp7Im9lbURlYWxlckNvZGUiOiIyMDg2IiwiMCI6IjIwODYiLCJvZW0iOiJBY3VyYSIsIjEiOiJBY3VyYSJ9LCJkZWFsZXJfbmFtZSI6IiIsImZvcm1NYXAiOnsiQURGQnVybGluZ3Rvbl9DZW50cmVfLV9FVl9Ub3VyXy1fRHJpdmVmZSI6eyJGUkVOQ0giOiJEZW1hbmRlIGRlIEJ1cmxpbmd0b24gQ2VudHJlIC0gRVYgVG91ciAtIERyaXZlZmVzdCArIEtpYSBTaWduIFVwIFdhcm0gTGVhZDogQ29udGFjdCBEZWFsZXIiLCJFTkdMSVNIIjoiTGVhZCBGcm9tIEJ1cmxpbmd0b24gQ2VudHJlIC0gRVYgVG91ciAtIERyaXZlZmVzdCArIEtpYSBTaWduIFVwIFdhcm0gTGVhZDogQ29udGFjdCBEZWFsZXIifSwiQURGY2FtcGJlbGxyaXZlcmNhcnMuY2FfKEQyQ19NZWRpYSlfLV9MZSI6eyJGUkVOQ0giOiJEZW1hbmRlIGRlIGNhbXBiZWxscml2ZXJjYXJzLmNhIChEMkMgTWVkaWEpIC0gTGVhZDogVmVoaWNsZSBBdmFpbGFiaWxpdHkgW0dvb2dsZSAtIFVzZWQgICBMb2NfcGh5c2ljYWw9OTAwMTYxM10iLCJFTkdMSVNIIjoiTGVhZCBGcm9tIGNhbXBiZWxscml2ZXJjYXJzLmNhIChEMkMgTWVkaWEpIC0gTGVhZDogVmVoaWNsZSBBdmFpbGFiaWxpdHkgW0dvb2dsZSAtIFVzZWQgICBMb2NfcGh5c2ljYWw9OTAwMTYxM10ifSwiQURGY2FybWF0Y2hlci5jYV8oRDJDX01lZGlhKV8tX0xlYWQ6X0FwcCI6eyJGUkVOQ0giOiJEZW1hbmRlIGRlIGNhcm1hdGNoZXIuY2EgKEQyQyBNZWRpYSkgLSBMZWFkOiBBcHBvaW50bWVudCByZXF1ZXN0IFtHb29nbGUgLSBPcmdhbmljXSIsIkVOR0xJU0giOiJMZWFkIEZyb20gY2FybWF0Y2hlci5jYSAoRDJDIE1lZGlhKSAtIExlYWQ6IEFwcG9pbnRtZW50IHJlcXVlc3QgW0dvb2dsZSAtIE9yZ2FuaWNdIn0sIkFERmNhcm1hdGNoZXIuY2FfKEQyQ19NZWRpYSlfLV9MZWFkOl9DYXIiOnsiRlJFTkNIIjoiRGVtYW5kZSBkZSBjYXJtYXRjaGVyLmNhIChEMkMgTWVkaWEpIC0gTGVhZDogQ2FyRmF4IHJlcXVlc3QgW0dvb2dsZSAtIE9yZ2FuaWNdIiwiRU5HTElTSCI6IkxlYWQgRnJvbSBjYXJtYXRjaGVyLmNhIChEMkMgTWVkaWEpIC0gTGVhZDogQ2FyRmF4IHJlcXVlc3QgW0dvb2dsZSAtIE9yZ2FuaWNdIn0sIkFERmNhcm1hdGNoZXIuY2FfKEQyQ19NZWRpYSlfLV9MZWFkOl9PZmYiOnsiRlJFTkNIIjoiRGVtYW5kZSBkZSBjYXJtYXRjaGVyLmNhIChEMkMgTWVkaWEpIC0gTGVhZDogT2ZmZXIgb24gYSB2ZWhpY2xlIFtHb29nbGUgLSBPcmdhbmljXSIsIkVOR0xJU0giOiJMZWFkIEZyb20gY2FybWF0Y2hlci5jYSAoRDJDIE1lZGlhKSAtIExlYWQ6IE9mZmVyIG9uIGEgdmVoaWNsZSBbR29vZ2xlIC0gT3JnYW5pY10ifSwiQURGY2FybWF0Y2hlci5jYV8oRDJDX01lZGlhKV8tX0xlYWQ6X1BERiI6eyJGUkVOQ0giOiJEZW1hbmRlIGRlIGNhcm1hdGNoZXIuY2EgKEQyQyBNZWRpYSkgLSBMZWFkOiBQREYgcmVxdWVzdCAtIFZlaGljbGUgaW4gaW52ZW50b3J5IFtHb29nbGUgLSBPcmdhbmljXSIsIkVOR0xJU0giOiJMZWFkIEZyb20gY2FybWF0Y2hlci5jYSAoRDJDIE1lZGlhKSAtIExlYWQ6IFBERiByZXF1ZXN0IC0gVmVoaWNsZSBpbiBpbnZlbnRvcnkgW0dvb2dsZSAtIE9yZ2FuaWNdIn0sIkFERmNhcm1hdGNoZXIuY2FfKEQyQ19NZWRpYSlfLV9MZWFkOl9SZXEiOnsiRlJFTkNIIjoiRGVtYW5kZSBkZSBjYXJtYXRjaGVyLmNhIChEMkMgTWVkaWEpIC0gTGVhZDogUmVxdWVzdCBmb3IgZmluYW5jaW5nIChNdWx0aXN0ZXApIFtHb29nbGUgLSBPcmdhbmljXSIsIkVOR0xJU0giOiJMZWFkIEZyb20gY2FybWF0Y2hlci5jYSAoRDJDIE1lZGlhKSAtIExlYWQ6IFJlcXVlc3QgZm9yIGZpbmFuY2luZyAoTXVsdGlzdGVwKSBbR29vZ2xlIC0gT3JnYW5pY10ifSwiQURGY2FybWF0Y2hlci5jYV8oRDJDX01lZGlhKV8tX0xlYWQ6X1NlciI6eyJGUkVOQ0giOiJEZW1hbmRlIGRlIGNhcm1hdGNoZXIuY2EgKEQyQyBNZWRpYSkgLSBMZWFkOiBTZXJ2aWNlIGFwcG9pbnRtZW50IHJlcXVlc3QgW0ZhY2Vib29rIC0gT3JnYW5pY10iLCJFTkdMSVNIIjoiTGVhZCBGcm9tIGNhcm1hdGNoZXIuY2EgKEQyQyBNZWRpYSkgLSBMZWFkOiBTZXJ2aWNlIGFwcG9pbnRtZW50IHJlcXVlc3QgW0ZhY2Vib29rIC0gT3JnYW5pY10ifSwiQURGY2FybWF0Y2hlci5jYV8oRDJDX01lZGlhKV8tX0xlYWQ6X1RyYSI6eyJGUkVOQ0giOiJEZW1hbmRlIGRlIGNhcm1hdGNoZXIuY2EgKEQyQyBNZWRpYSkgLSBMZWFkOiBUcmFkZS1pbiByZXF1ZXN0IFtHb29nbGUgLSBPcmdhbmljXSIsIkVOR0xJU0giOiJMZWFkIEZyb20gY2FybWF0Y2hlci5jYSAoRDJDIE1lZGlhKSAtIExlYWQ6IFRyYWRlLWluIHJlcXVlc3QgW0dvb2dsZSAtIE9yZ2FuaWNdIn0sIkFERmNhcm1hdGNoZXIuY2FfKEQyQ19NZWRpYSlfLV9MZWFkOl9WZWgiOnsiRlJFTkNIIjoiRGVtYW5kZSBkZSBjYXJtYXRjaGVyLmNhIChEMkMgTWVkaWEpIC0gTGVhZDogVmVoaWNsZSBBdmFpbGFiaWxpdHkgW0dvb2dsZSAtIE9yZ2FuaWNdIiwiRU5HTElTSCI6IkxlYWQgRnJvbSBjYXJtYXRjaGVyLmNhIChEMkMgTWVkaWEpIC0gTGVhZDogVmVoaWNsZSBBdmFpbGFiaWxpdHkgW0dvb2dsZSAtIE9yZ2FuaWNdIn0sIkFERmNhcm1hdGNoZXIuY2FfKEQyQ19NZWRpYV8tX09yZ2FuaWMpXy0iOnsiRlJFTkNIIjoiRGVtYW5kZSBkZSBjYXJtYXRjaGVyLmNhIChEMkMgTWVkaWEgLSBPcmdhbmljKSAtIExlYWQ6IFZlaGljbGUgQXZhaWxhYmlsaXR5IFtPcmdhbmljXSIsIkVOR0xJU0giOiJMZWFkIEZyb20gY2FybWF0Y2hlci5jYSAoRDJDIE1lZGlhIC0gT3JnYW5pYykgLSBMZWFkOiBWZWhpY2xlIEF2YWlsYWJpbGl0eSBbT3JnYW5pY10ifSwiQURGZGFuaWVscGFyZWRvZGdlLmNvbV8ocGFyX0QyQ19NZWRpYSlfLSI6eyJGUkVOQ0giOiJEZW1hbmRlIGRlIGRhbmllbHBhcmVkb2RnZS5jb20gKHBhciBEMkMgTWVkaWEpIC0gRDJDIE1lZGlhIC0gTGVhZCA6IFZvaXIgbCdvZmZyZSBjb3Vwb24gU1JQIFtHb29nbGUgLSBOZXVmLXZsYV0iLCJFTkdMSVNIIjoiTGVhZCBGcm9tIGRhbmllbHBhcmVkb2RnZS5jb20gKHBhciBEMkMgTWVkaWEpIC0gRDJDIE1lZGlhIC0gTGVhZCA6IFZvaXIgbCdvZmZyZSBjb3Vwb24gU1JQIFtHb29nbGUgLSBOZXVmLXZsYV0ifSwiQURGZGVtb2NybS5kMmNtZWRpYS5jYV8oRDJDX01lZGlhXy1fT3JnYSI6eyJGUkVOQ0giOiJEZW1hbmRlIGRlIGRlbW9jcm0uZDJjbWVkaWEuY2EgKEQyQyBNZWRpYSAtIE9yZ2FuaWMpIC0gTGVhZDogUmVxdWVzdCBmb3IgYSByZWJhdGUgY291cG9uIChpbnZlbnRvcnkgdmVoaWNsZSkgW09yZ2FuaWNdIiwiRU5HTElTSCI6IkxlYWQgRnJvbSBkZW1vY3JtLmQyY21lZGlhLmNhIChEMkMgTWVkaWEgLSBPcmdhbmljKSAtIExlYWQ6IFJlcXVlc3QgZm9yIGEgcmViYXRlIGNvdXBvbiAoaW52ZW50b3J5IHZlaGljbGUpIFtPcmdhbmljXSJ9LCJBREZNb25fc2l0ZV8tX0QyQ19NZWRpYV8tX0xlYWRfOl9EZW1hbmRlIjp7IkZSRU5DSCI6IkxlYWQgRnJvbSBNb24gc2l0ZSAtIEQyQyBNZWRpYSAtIExlYWQgOiBEZW1hbmRlIGRlIHZhbGV1ciBkJ2VjaGFuZ2UgKFNNUykgW0dvb2dsZSAtIE9yZ2FuaWNdIiwiRU5HTElTSCI6IkxlYWQgRnJvbSBNb24gc2l0ZSAtIEQyQyBNZWRpYSAtIExlYWQgOiBEZW1hbmRlIGRlIHZhbGV1ciBkJ2VjaGFuZ2UgKFNNUykgW0dvb2dsZSAtIE9yZ2FuaWNdIn0sIkFERnBhbGxhZGlub2F1dG9ncm91cC5jb21fKEQyQ19NZWRpYSlfLV8iOnsiRlJFTkNIIjoiRGVtYW5kZSBkZSBwYWxsYWRpbm9hdXRvZ3JvdXAuY29tIChEMkMgTWVkaWEpIC0gTGVhZDogQ2FyRmF4IHJlcXVlc3QgW0dvb2dsZSAtIFVzZWQtdmxhICAgTG9jX3BoeXNpY2FsPTkwMDExNDFdIiwiRU5HTElTSCI6IkxlYWQgRnJvbSBwYWxsYWRpbm9hdXRvZ3JvdXAuY29tIChEMkMgTWVkaWEpIC0gTGVhZDogQ2FyRmF4IHJlcXVlc3QgW0dvb2dsZSAtIFVzZWQtdmxhICAgTG9jX3BoeXNpY2FsPTkwMDExNDFdIn0sIkFERnBhbGxhZGlub2F1dG9ncm91cC5jb21fKEQyQ19NZWRpYSlfXy0iOnsiRlJFTkNIIjoiRGVtYW5kZSBkZSBwYWxsYWRpbm9hdXRvZ3JvdXAuY29tIChEMkMgTWVkaWEpICAtIExlYWQ6IFJlcXVlc3QgZm9yIGNvbnRhY3QgW0ZhY2Vib29rIC0gVXNlZCBbIEtleXdvcmQ6IFVzZWQrVHJ1Y2tdICBMb2NfIiwiRU5HTElTSCI6IkxlYWQgRnJvbSBwYWxsYWRpbm9hdXRvZ3JvdXAuY29tIChEMkMgTWVkaWEpICAtIExlYWQ6IFJlcXVlc3QgZm9yIGNvbnRhY3QgW0ZhY2Vib29rIC0gVXNlZCBbIEtleXdvcmQ6IFVzZWQrVHJ1Y2tdICBMb2NfcCJ9LCJBREZwYWxsYWRpbm9hdXRvZ3JvdXAuY29tXyhEMkNfX01lZGlhKV8tIjp7IkZSRU5DSCI6IkRlbWFuZGUgZGUgcGFsbGFkaW5vYXV0b2dyb3VwLmNvbSAoRDJDICBNZWRpYSkgLSBMZWFkOiBUcmFkZS1pbiByZXF1ZXN0IFtHb29nbGUgLSBUcmFkZSAgIExvY19waHlzaWNhbD05MDAxMTE4XSIsIkVOR0xJU0giOiJMZWFkIEZyb20gcGFsbGFkaW5vYXV0b2dyb3VwLmNvbSAoRDJDICBNZWRpYSkgLSBMZWFkOiBUcmFkZS1pbiByZXF1ZXN0IFtHb29nbGUgLSBUcmFkZSAgIExvY19waHlzaWNhbD05MDAxMTE4XSJ9LCJBREZwYWxsYWRpbm9hdXRvZ3JvdXAuY29tX18oRDJDX01lZGlhKV8tIjp7IkZSRU5DSCI6IkRlbWFuZGUgZGUgcGFsbGFkaW5vYXV0b2dyb3VwLmNvbSAgKEQyQyBNZWRpYSkgLSBMZWFkOiBUcmFkZS1pbiByZXF1ZXN0IFtHb29nbGUgLSBUcmFkZSAgIExvY19waHlzaWNhbD05MDAxMTMzXSIsIkVOR0xJU0giOiJMZWFkIEZyb20gcGFsbGFkaW5vYXV0b2dyb3VwLmNvbSAgKEQyQyBNZWRpYSkgLSBMZWFkOiBUcmFkZS1pbiByZXF1ZXN0IFtHb29nbGUgLSBUcmFkZSAgIExvY19waHlzaWNhbD05MDAxMTMzXSJ9LCJBREZwYWxsYWRpbm9zdWJhcnUuY2FfKHBhcl9EMkNfTWVkaWFfLV9PIjp7IkZSRU5DSCI6IkRlbWFuZGUgZGUgcGFsbGFkaW5vc3ViYXJ1LmNhIChwYXIgRDJDIE1lZGlhIC0gT3JnYW5pYykgLSBEMkMgTWVkaWEgLSBMZWFkOiBQREYgYnJvY2h1cmUgcmVxdWVzdCBbT3JnYW5pY10iLCJFTkdMSVNIIjoiTGVhZCBGcm9tIHBhbGxhZGlub3N1YmFydS5jYSAocGFyIEQyQyBNZWRpYSAtIE9yZ2FuaWMpIC0gRDJDIE1lZGlhIC0gTGVhZDogUERGIGJyb2NodXJlIHJlcXVlc3QgW09yZ2FuaWNdIn0sIkFERlNjYXJib3JvdWdoX1Rvd25fQ2VudHJlXy1fRVZfVG91cl8tX0QiOnsiRlJFTkNIIjoiRGVtYW5kZSBkZSBTY2FyYm9yb3VnaCBUb3duIENlbnRyZSAtIEVWIFRvdXIgLSBEcml2ZWZlc3QgKyBLaWEgU2lnbiBVcCBXYXJtIExlYWQ6IENvbnRhY3QgRGVhbGVyIiwiRU5HTElTSCI6IkxlYWQgRnJvbSBTY2FyYm9yb3VnaCBUb3duIENlbnRyZSAtIEVWIFRvdXIgLSBEcml2ZWZlc3QgKyBLaWEgU2lnbiBVcCBXYXJtIExlYWQ6IENvbnRhY3QgRGVhbGVyIn0sIkFERlNoZXJ3YXlfR2FyZGVuc18tX0VWX1RvdXJfLV9Ecml2ZWZlc3QiOnsiRlJFTkNIIjoiRGVtYW5kZSBkZSBTaGVyd2F5IEdhcmRlbnMgLSBFViBUb3VyIC0gRHJpdmVmZXN0IFNpZ24gVXAgV2FybSBMZWFkOiBDb250YWN0IERlYWxlciIsIkVOR0xJU0giOiJMZWFkIEZyb20gU2hlcndheSBHYXJkZW5zIC0gRVYgVG91ciAtIERyaXZlZmVzdCBTaWduIFVwIFdhcm0gTGVhZDogQ29udGFjdCBEZWFsZXIifSwiQURGU3F1YXJlX09uZV8tX0VWX1RvdXJfLV9Ecml2ZWZlc3RfK19LaSI6eyJGUkVOQ0giOiJEZW1hbmRlIGRlIFNxdWFyZSBPbmUgLSBFViBUb3VyIC0gRHJpdmVmZXN0ICsgS2lhIFNpZ24gVXAgV2FybSBMZWFkOiBDb250YWN0IERlYWxlciIsIkVOR0xJU0giOiJMZWFkIEZyb20gU3F1YXJlIE9uZSAtIEVWIFRvdXIgLSBEcml2ZWZlc3QgKyBLaWEgU2lnbiBVcCBXYXJtIExlYWQ6IENvbnRhY3QgRGVhbGVyIn0sIkFERlNxdWFyZV9PbmVfLV9FVl9Ub3VyXy1fS2lhX1NpZ25fVXBfSG8iOnsiRlJFTkNIIjoiRGVtYW5kZSBkZSBTcXVhcmUgT25lIC0gRVYgVG91ciAtIEtpYSBTaWduIFVwIEhvdCBMZWFkOiBDb250YWN0IERlYWxlciIsIkVOR0xJU0giOiJMZWFkIEZyb20gU3F1YXJlIE9uZSAtIEVWIFRvdXIgLSBLaWEgU2lnbiBVcCBIb3QgTGVhZDogQ29udGFjdCBEZWFsZXIifSwiQURGVXBwZXJfQ2FuYWRhX01hbGxfLV9FVl9Ub3VyXy1fRHJpdmVmZSI6eyJGUkVOQ0giOiJEZW1hbmRlIGRlIFVwcGVyIENhbmFkYSBNYWxsIC0gRVYgVG91ciAtIERyaXZlZmVzdCBTaWduIFVwIFdhcm0gTGVhZDogQ29udGFjdCBEZWFsZXIiLCJFTkdMSVNIIjoiTGVhZCBGcm9tIFVwcGVyIENhbmFkYSBNYWxsIC0gRVYgVG91ciAtIERyaXZlZmVzdCBTaWduIFVwIFdhcm0gTGVhZDogQ29udGFjdCBEZWFsZXIifSwiQUlDaGF0Ym90TGVhZCI6eyJGUkVOQ0giOiJMZWFkIDogQ2hhdEJvdCBJQSIsIkVOR0xJU0giOiJMZWFkOiBDaGF0Qm90IEFJIn0sIkF2YWlsYWJpbGl0eVVzZWQiOnsiRlJFTkNIIjoiTGVhZDogRGlzcG9uaWJpbGl0ZSBkJ3VuIHZlaGljdWxlIiwiRU5HTElTSCI6IkxlYWQ6IFZlaGljbGUgQXZhaWxhYmlsaXR5In0sIkJhbm5lckZvcm0iOnsiRlJFTkNIIjoiTGVhZDogRGVtYW5kZSBkZSBmb3JtIGJhbm5lciIsIkVOR0xJU0giOiJMZWFkOiBCYW5uZXIgRm9ybSBSZXF1ZXN0In0sIkJlc3RQcmljZVJlcXVlc3ROZXciOnsiRlJFTkNIIjoiTGVhZCA6IERlbWFuZGUgZGUgIG1laWxsZXVyIHByaXggKHZlaGljdWxlIG5ldWYpIiwiRU5HTElTSCI6IkxlYWQ6IFJlcXVlc3QgZm9yIGEgYmVzdCBwcmljZSAobmV3IHZlaGljbGUpIn0sIkJvZHlTaG9wIjp7IkZSRU5DSCI6IkxlYWQgOiBEZW1hbmRlIGRlIHJlbmRlei12b3VzIGVuIGNhcm9zc2VyaWUiLCJFTkdMSVNIIjoiTGVhZDogVmVoaWNsZSBib2R5IHNob3AgYXBwb2ludG1lbnQgcmVxdWVzdCJ9LCJCcm9jaHVyZXMiOnsiRlJFTkNIIjoiTGVhZCA6IERlbWFuZGUgZGUgYnJvY2h1cmUiLCJFTkdMSVNIIjoiTGVhZCA6IEJyb2NodXJlIHJlcXVlc3QifSwiQnJvY2h1cmVzUmVxdWVzdCI6eyJGUkVOQ0giOiJMZWFkIDogRGVtYW5kZSBkZSBicm9jaHVyZSIsIkVOR0xJU0giOiJMZWFkIDogQnJvY2h1cmUgcmVxdWVzdCJ9LCJCdWlsZEFuZFByaWNlX1NhdmUiOnsiRlJFTkNIIjoiTGVhZDogQ29uZmlndXJhdGlvbiBkJ3VuIHZlaGljdWxlIG5ldWYiLCJFTkdMSVNIIjoiTGVhZDogTmV3IFZlaGljbGUgQ29uZmlndXJhdGlvbiAoQnVpbGQgJiBQcmljZSkifSwiQnVpbGRBbmRQcmljZV9TdG9jayI6eyJGUkVOQ0giOiJMZWFkOiBEaXNwb25pYmlsaXRlIGQndW4gdmVoaWN1bGUiLCJFTkdMSVNIIjoiTGVhZDogVmVoaWNsZSBBdmFpbGFiaWxpdHkifSwiQ2FycHJvb2ZNYWlsIjp7IkZSRU5DSCI6IkxlYWQgOiBEZW1hbmRlIGRlIENhckZheCIsIkVOR0xJU0giOiJMZWFkOiBDYXJGYXggcmVxdWVzdCJ9LCJDb250YWN0UmVxdWVzdCI6eyJGUkVOQ0giOiJMZWFkIDogRGVtYW5kZSBkZSBjb250YWN0IiwiRU5HTElTSCI6IkxlYWQ6IFJlcXVlc3QgZm9yIGNvbnRhY3QifSwiQ29udGFjdFVzUmVxdWVzdCI6eyJGUkVOQ0giOiJMZWFkIDogRGVtYW5kZSBkZSBjb250YWN0IiwiRU5HTElTSCI6IkxlYWQ6IFJlcXVlc3QgZm9yIGNvbnRhY3QifSwiQ29udGFjdFZpc2l0UmVxdWVzdCI6eyJGUkVOQ0giOiJMZWFkIDogRGVtYW5kZSBkZSBjb250YWN0IFZlbnRlIiwiRU5HTElTSCI6IkxlYWQ6IFJlcXVlc3QgZm9yIGNvbnRhY3QgU2FsZXMifSwiQ29udGFjdFZpc2l0UmVxdWVzdE5ldyI6eyJGUkVOQ0giOiJMZWFkIDogRGVtYW5kZSBkZSBjb250YWN0IFZlbnRlIiwiRU5HTElTSCI6IkxlYWQ6IFJlcXVlc3QgZm9yIGNvbnRhY3QgU2FsZXMifSwiQ3JlZGl0Qm9vc3RNdWx0aSI6eyJGUkVOQ0giOiJMZWFkOiBEZW1hbmRlIGRlIHByZXF1YWxpZmljYXRpb24gZGUgY3JlZGl0IiwiRU5HTElTSCI6IkxlYWQ6IFJlcXVlc3QgZm9yIENyZWRpdCBQcmUtUXVhbGlmaWNhdGlvbiJ9LCJDcmVkaXRNdWx0aXN0ZXBSZXF1ZXN0Ijp7IkZSRU5DSCI6IkxlYWQgOiBEZW1hbmRlIGRlIGZpbmFuY2VtZW50IChQbHVzaWV1cnMgZXRhcGVzKSIsIkVOR0xJU0giOiJMZWFkOiBSZXF1ZXN0IGZvciBmaW5hbmNpbmcgKE11bHRpc3RlcCkifSwiQ3JlZGl0TXVsdGlzdGVwUmVxdWVzdDJuZENoYW5jZSI6eyJGUkVOQ0giOiJMZWFkIDogRGVtYW5kZSBkZSBmaW5hbmNlbWVudCAoUGx1c2lldXJzIGV0YXBlcyAyZSBjaGFuY2UpIiwiRU5HTElTSCI6IkxlYWQ6IFJlcXVlc3QgZm9yIGZpbmFuY2luZyAoTXVsaXN0ZXAgMm5kIGNoYW5jZSkifSwiQ3JlZGl0TXVsdGlzdGVwUmVxdWVzdEluc3RhbnQiOnsiRlJFTkNIIjoiTGVhZDogQXBwcm9iYXRpb24gZGUgY3JlZGl0IGluc3RhbnRhbmVlIiwiRU5HTElTSCI6IkxlYWQ6IEluc3RhbnQgQ3JlZGl0IEFwcHJvdmFsIn0sIkNyZWRpdFJlcXVlc3QiOnsiRlJFTkNIIjoiTGVhZCA6IERlbWFuZGUgZGUgZmluYW5jZW1lbnQiLCJFTkdMSVNIIjoiTGVhZDogUmVxdWVzdCBmb3IgZmluYW5jaW5nIn0sIkNyZWRpdFJlcXVlc3RNb2JpbGUiOnsiRlJFTkNIIjoiTGVhZCA6IERlbWFuZGUgZGUgZmluYW5jZW1lbnQiLCJFTkdMSVNIIjoiTGVhZDogUmVxdWVzdCBmb3IgZmluYW5jaW5nIn0sIkNyZWRpdFJlcXVlc3RNb2JpbGVGdWxsIjp7IkZSRU5DSCI6IkxlYWQ6IFJlcXVlc3QgZm9yIGZpbmFuY2luZyIsIkVOR0xJU0giOiJMZWFkOiBSZXF1ZXN0IGZvciBmaW5hbmNpbmcifSwiQ3JlZGl0UmVxdWVzdF9TaG9ydCI6eyJGUkVOQ0giOiJMZWFkIDogRGVtYW5kZSBkZSBmaW5hbmNlbWVudCAodmVyc2lvbiBjb3VydGUpIiwiRU5HTElTSCI6IkxlYWQgOiBDcmVkaXQgYXBwbGljYXRpb24gKHNob3J0IHZlcnNpb24pIn0sIkRlYWxlckFwcG9pbnRtZW50Ijp7IkZSRU5DSCI6IkxlYWQgOiBEZW1hbmRlIGRlIHJlbmRlei12b3VzIiwiRU5HTElTSCI6IkxlYWQ6IEFwcG9pbnRtZW50IHJlcXVlc3QifSwiRGlzY292ZXJPZmZlciI6eyJGUkVOQ0giOiJMZWFkIDogVm9pciBsJ29mZnJlIGNvdXBvbiBTUlAiLCJFTkdMSVNIIjoiTGVhZDogU2VlIE9mZmVyIENvdXBvbiBpbiBTUlAifSwiRXN0aGV0aWNSZXF1ZXN0Ijp7IkZSRU5DSCI6IkxlYWQ6IERlbWFuZGUgZGUgcmVuZGV6LXZvdXMgYSBsJ2VzdGhldHF1ZSBldCBsYXZlLWF1dG8iLCJFTkdMSVNIIjoiTGVhZDogVmVoaWNsZSBlc3RoZXRpYyBhbmQgY2FyIHdhc2ggYXBwb2ludG1lbnQgcmVxdWVzdCJ9LCJmYWNlYm9va0Nvbm5lY3QiOnsiRlJFTkNIIjoiTGVhZDogUmFiYWlzIEZhY2Vib29rIiwiRU5HTElTSCI6IkxlYWQ6IEZhY2Vib29rIFJlYmF0ZSJ9LCJGaW5kVmVoaWNsZSI6eyJGUkVOQ0giOiJMZWFkIDogRGVtYW5kZSBkZSByZWNoZXJjaGUgZGUgdmVoaWN1bGUiLCJFTkdMSVNIIjoiTGVhZDogUmVxdWVzdCB0byBmaW5kIGEgcHJlLW93bmVkIHZlaGljbGUifSwiaGVhZGVyU2VydmljZSI6eyJGUkVOQ0giOiJMZWFkIDogRGVtYW5kZSBkZSByZW5kZXotdm91cyBhdSBzZXJ2aWNlIEV4cHJlc3MiLCJFTkdMSVNIIjoiTGVhZDogU2VydmljZSBhcHBvaW50bWVudCByZXF1ZXN0IEV4cHJlc3MifSwiTWFrZU9mZmVyIjp7IkZSRU5DSCI6IkxlYWQgOiBPZmZyZSBkJ2FjaGF0IHN1ciB1biB2ZWhpY3VsZSIsIkVOR0xJU0giOiJMZWFkOiBPZmZlciBvbiBhIHZlaGljbGUifSwiTWFrZU9mZmVyTmV3Ijp7IkZSRU5DSCI6IkxlYWQgOiBPZmZyZSBkJ2FjaGF0IHN1ciB1biB2ZWhpY3VsZSIsIkVOR0xJU0giOiJMZWFkOiBPZmZlciBvbiBhIHZlaGljbGUifSwibWVudVNlcnZpY2UiOnsiRlJFTkNIIjoiTGVhZCA6IERlbWFuZGUgZGUgcmVuZGV6LXZvdXMgYXUgc2VydmljZSBFeHByZXNzIiwiRU5HTElTSCI6IkxlYWQ6IFNlcnZpY2UgYXBwb2ludG1lbnQgcmVxdWVzdCBFeHByZXNzIn0sIk1vbnRobHlQYXltZW50cyI6eyJGUkVOQ0giOiJEZW1hbmRlIGRlIG1lbnN1YWxpdGVzIiwiRU5HTElTSCI6IlJlcXVlc3QgZm9yIG1vbnRobHkgcGF5bWVudHMifSwiTW9udGhseVBheW1lbnRzX05FVyI6eyJGUkVOQ0giOiJEZW1hbmRlIGRlIG1lbnN1YWxpdGVzIiwiRU5HTElTSCI6IlJlcXVlc3QgZm9yIG1vbnRobHkgcGF5bWVudHMifSwiTW9udGhseVBheW1lbnRzX1NNUyI6eyJGUkVOQ0giOiJEZW1hbmRlIGRlIG1lbnN1YWxpdGVzIC0gU01TIiwiRU5HTElTSCI6IlJlcXVlc3QgZm9yIG1vbnRobHkgcGF5bWVudHMgLSBTTVMifSwiTW9udGhseVBheW1lbnRzX1NNU19ORVciOnsiRlJFTkNIIjoiRGVtYW5kZSBkZSBtZW5zdWFsaXRlcyAtIFNNUyIsIkVOR0xJU0giOiJSZXF1ZXN0IGZvciBtb250aGx5IHBheW1lbnRzIC0gU01TIn0sIlBhcnRzUmVxdWVzdCI6eyJGUkVOQ0giOiJMZWFkIDogRGVtYW5kZSBkZSBjb21tYW5kZSBwaSZlZ3JhdmU7Y2UiLCJFTkdMSVNIIjoiTGVhZDogUmVxdWVzdCBmb3IgdmVoaWNsZSBwYXJ0cyJ9LCJQaG90b1JlcXVlc3QiOnsiRlJFTkNIIjoiTGVhZDogRGVtYW5kZSBkZSBwaG90b3MiLCJFTkdMSVNIIjoiTGVhZDogUGhvdG8gcmVxdWVzdCJ9LCJQb3BVcEluc3RhbnRSZWJhdGUiOnsiRlJFTkNIIjoiTGVhZDogRGVtYW5kZSBkZSBSYWJhaXMgSW5zdGFudGFuZSIsIkVOR0xJU0giOiJMZWFkOiBJbnN0YW50IFJlYmF0ZSByZXF1ZXN0In0sIlBvcFVwSW5zdGFudFJlYmF0ZTMiOnsiRlJFTkNIIjoiTGVhZDogRGVtYW5kZSBkZSBSYWJhaXMgSW5zdGFudGFuZSIsIkVOR0xJU0giOiJMZWFkOiBJbnN0YW50IFJlYmF0ZSByZXF1ZXN0In0sIlBvcFVwSW5zdGFudFJlYmF0ZUFBIjp7IkZSRU5DSCI6IkxlYWQ6IERlbWFuZGUgZGUgUmFiYWlzIEluc3RhbnRhbmUiLCJFTkdMSVNIIjoiTGVhZDogSW5zdGFudCBSZWJhdGUgcmVxdWVzdCJ9LCJQcmljZVJlcXVlc3QiOnsiRlJFTkNIIjoiTGVhZCA6IERlbWFuZGUgZGUgcHJpeCIsIkVOR0xJU0giOiJMZWFkOiBQcmljZSByZXF1ZXN0In0sIlByaWNlUmVxdWVzdE5ldyI6eyJGUkVOQ0giOiJMZWFkIDogRGVtYW5kZSBkZSBwcml4IiwiRU5HTElTSCI6IkxlYWQ6IFByaWNlIHJlcXVlc3QifSwiUHJpY2VWZWhpY2xlIjp7IkZSRU5DSCI6IkxlYWQgOiBEZW1hbmRlIGRlIHZhbGV1ciBkJ2VjaGFuZ2UiLCJFTkdMSVNIIjoiTGVhZDogVHJhZGUtaW4gcmVxdWVzdCJ9LCJQcmljZVZlaGljbGVBY2N1dHJhZGUiOnsiRlJFTkNIIjoiTGVhZCA6IERlbWFuZGUgZGUgdmFsZXVyIGQnZWNoYW5nZSIsIkVOR0xJU0giOiJMZWFkIDogVHJhZGUtaW4gcmVxdWVzdCJ9LCJQcmljZVZlaGljbGVOZXciOnsiRlJFTkNIIjoiTGVhZCA6IERlbWFuZGUgZGUgdmFsZXVyIGQnZWNoYW5nZSIsIkVOR0xJU0giOiJMZWFkOiBUcmFkZS1pbiByZXF1ZXN0In0sIlF1aWNrRW1haWwiOnsiRlJFTkNIIjoiTGVhZCA6IERlbWFuZGUgRXhwcmVzcyIsIkVOR0xJU0giOiJMZWFkOiBFeHByZXNzIHJlcXVlc3QifSwiUXVpY2tFbWFpbE5ld0ludmVudG9yeSI6eyJGUkVOQ0giOiJMZWFkIDogRGVtYW5kZSBFeHByZXNzIChpbnZlbnRhaXJlIG5ldWYpIiwiRU5HTElTSCI6IkxlYWQ6IEV4cHJlc3MgcmVxdWVzdCAobmV3IGludmVudG9yeSkifSwiUmViYXRlQ291cG9uIjp7IkZSRU5DSCI6IkxlYWQgOiBEZW1hbmRlIGRlIGNvdXBvbiByYWJhaXMgKHZlaGljdWxlIGVuIGludmVudGFpcmUpIiwiRU5HTElTSCI6IkxlYWQ6IFJlcXVlc3QgZm9yIGEgcmViYXRlIGNvdXBvbiAoaW52ZW50b3J5IHZlaGljbGUpIn0sIlJlYmF0ZUNvdXBvbkludmVudG9yeSI6eyJGUkVOQ0giOiJMZWFkIDogRGVtYW5kZSBkZSBjb3Vwb24gcmFiYWlzIChpbnZlbnRhaXJlKSIsIkVOR0xJU0giOiJMZWFkOiBSZXF1ZXN0IGZvciBhIHJlYmF0ZSBjb3Vwb24gKGludmVudG9yeSkifSwiUmViYXRlQ291cG9uTmV3Ijp7IkZSRU5DSCI6IkxlYWQgOiBEZW1hbmRlIGRlIGNvdXBvbiByYWJhaXMiLCJFTkdMSVNIIjoiTGVhZDogUmVxdWVzdCBmb3IgYSByZWJhdGUgY291cG9uIn0sIlJlYmF0ZUNvdXBvbk5ld0JOUCI6eyJGUkVOQ0giOiJMZWFkIDogRGVtYW5kZSBkZSBjb3Vwb24gcmFiYWlzIChjb25maWd1cmF0ZXVyKSIsIkVOR0xJU0giOiJMZWFkOiBSZXF1ZXN0IGZvciBhIHJlYmF0ZSBjb3Vwb24gKGNvbmZpZ3VyYXRvcikifSwiUmViYXRlQ291cG9uTmV3SW52ZW50b3J5Ijp7IkZSRU5DSCI6IkxlYWQgOiBEZW1hbmRlIGRlIGNvdXBvbiByYWJhaXMgKGludmVudGFpcmUpIiwiRU5HTElTSCI6IkxlYWQ6IFJlcXVlc3QgZm9yIGEgcmViYXRlIGNvdXBvbiAoaW52ZW50b3J5KSJ9LCJSZWJhdGVDb3Vwb25OZXdTbGlkZXIiOnsiRlJFTkNIIjoiTGVhZCA6IERlbWFuZGUgZGUgY291cG9uIHJhYmFpcyAoY2Fyb3VzZWwpIiwiRU5HTElTSCI6IkxlYWQ6IFJlcXVlc3QgZm9yIGEgcmViYXRlIGNvdXBvbiAoc2xpZGVyKSJ9LCJSZWJhdGVDb3Vwb25Qcm9tbyI6eyJGUkVOQ0giOiJMZWFkOiBEZW1hbmRlIGRlIGNvdXBvbiByYWJhaXMgKGJvdXRvbiAnUHJvbW90aW9ucycpIiwiRU5HTElTSCI6IkxlYWQ6IFJlYmF0ZSBDb3Vwb24gcmVxdWVzdCAoJ1Byb21vdGlvbnMnIGJ1dHRvbikifSwiUmViYXRlQ291cG9uU2xpZGVyIjp7IkZSRU5DSCI6IkxlYWQgOiBEZW1hbmRlIGRlIGNvdXBvbiByYWJhaXMgKGNhcm91c2VsKSIsIkVOR0xJU0giOiJMZWFkOiBSZXF1ZXN0IGZvciBhIHJlYmF0ZSBjb3Vwb24gKHNsaWRlcikifSwiUmViYXRlQ291cG9uVXNlZFNsaWRlciI6eyJGUkVOQ0giOiJMZWFkIDogRGVtYW5kZSBkZSBjb3Vwb24gcmFiYWlzIChjYXJvdXNlbCkiLCJFTkdMSVNIIjoiTGVhZDogUmVxdWVzdCBmb3IgYSByZWJhdGUgY291cG9uIChzbGlkZXIpIn0sIlJlY2FsbHMiOnsiRlJFTkNIIjoiRGVtYW5kZSBkJ2luZm9ybWF0aW9uIHN1ciBsZXMgcmFwcGVscyIsIkVOR0xJU0giOiJSZWNhbGwgaW5mb3JtYXRpb24gcmVxdWVzdCJ9LCJSZXNlcnZlSXROb3ciOnsiRlJFTkNIIjoiTGVhZCA6IERlbWFuZGUgcG91ciByZXNlcnZlciB1biB2ZWhpY3VsZSIsIkVOR0xJU0giOiJMZWFkIDogUmVxdWVzdCB0byBwcmUtb3JkZXIgYSB2ZWhpY2xlIn0sIlJlc2VydmVJdE5vd05ldyI6eyJGUkVOQ0giOiJMZWFkIDogRGVtYW5kZSBwb3VyIHJlc2VydmVyIHVuIHZlaGljdWxlIiwiRU5HTElTSCI6IkxlYWQgOiBSZXF1ZXN0IHRvIHByZS1vcmRlciBhIHZlaGljbGUifSwiU2VsbENhciI6eyJGUkVOQ0giOiJMZWFkIDogRGVtYW5kZSBkZSBWZW5kZXogVmVoaWN1bGUiLCJFTkdMSVNIIjoiTGVhZCA6IFJlcXVlc3QgdG8gYnV5IHlvdXIgY2FyIn0sIlNlbGxDYXJfU2hvcnQiOnsiRlJFTkNIIjoiTGVhZCA6IERlbWFuZGUgZGUgVmVuZGV6LW5vdXMgdm90cmUgdmVoaWN1bGUgKHZlcnNpb24gY291cnRlKSIsIkVOR0xJU0giOiJMZWFkIDogUmVxdWVzdCB0byBidXkgeW91ciBjYXIgKFNob3J0IHZlcnNpb24pIn0sIlNlcnZpY2VSZXF1ZXN0Ijp7IkZSRU5DSCI6IkxlYWQgOiBEZW1hbmRlIGRlIHJlbmRlei12b3VzIGF1IHNlcnZpY2UiLCJFTkdMSVNIIjoiTGVhZDogU2VydmljZSBhcHBvaW50bWVudCByZXF1ZXN0In0sIlNNU0xlYWQiOnsiRlJFTkNIIjoiTGVhZDogRGVtYW5kZSBTTVMgKFRleHRvKSIsIkVOR0xJU0giOiJMZWFkOiBTTVMgcmVxdWVzdCJ9LCJTTVNMZWFkX29sZCI6eyJGUkVOQ0giOiJMZWFkIDogRGVtYW5kZSBTTVMgKFRleHRvKSIsIkVOR0xJU0giOiJMZWFkIDogU01TIHJlcXVlc3QifSwiU3BlY3NSZXF1ZXN0Ijp7IkZSRU5DSCI6IkxlYWQ6IERlbWFuZGUgZGUgZmljaGUgUERGIC0gVmVoaWN1bGUgZW4gaW52ZW50YWlyZSIsIkVOR0xJU0giOiJMZWFkOiBQREYgcmVxdWVzdCAtIFZlaGljbGUgaW4gaW52ZW50b3J5In0sIlNwZWNzUmVxdWVzdE5ldyI6eyJGUkVOQ0giOiJMZWFkOiBEZW1hbmRlIGRlIGJyb2NodXJlIFBERiIsIkVOR0xJU0giOiJMZWFkOiBQREYgYnJvY2h1cmUgcmVxdWVzdCJ9LCJTUlBDb250YWN0VXMiOnsiRlJFTkNIIjoiTGVhZCA6IERlbWFuZGUgZGUgY29udGFjdCBTUlAiLCJFTkdMSVNIIjoiTGVhZCA6IFJlcXVlc3QgZm9yIGNvbnRhY3QgU1JQIn0sIlRlc3REcml2ZSI6eyJGUkVOQ0giOiJMZWFkIDogRGVtYW5kZSBkJ2Vzc2FpIHJvdXRpZXIiLCJFTkdMSVNIIjoiTGVhZDogUmVxdWVzdCBmb3IgYSB0ZXN0IGRyaXZlIn0sIlRlc3REcml2ZU5ldyI6eyJGUkVOQ0giOiJMZWFkIDogRGVtYW5kZSBkJ2Vzc2FpIHJvdXRpZXIiLCJFTkdMSVNIIjoiTGVhZDogUmVxdWVzdCBmb3IgYSB0ZXN0IGRyaXZlIn0sIlRpcmVzUmVxdWVzdCI6eyJGUkVOQ0giOiJMZWFkIDogRGVtYW5kZSBkZSBwbmV1cyIsIkVOR0xJU0giOiJMZWFkOiBSZXF1ZXN0IGZvciB0aXJlcyJ9LCJQcm9tb01haWwiOnsiRlJFTkNIIjoiTGVhZCA6IERlbWFuZGUgZCdpbnZpdGF0aW9uIGEgbGEgdmVudGUgcHJpdmVlIiwiRU5HTElTSCI6IkxlYWQ6IFJlcXVlc3QgZm9yIGludml0YXRpb24gdG8gcHJpdmF0ZSBzYWxlIn0sIlNsaWRlV2lkZ2V0Rm9ybSI6eyJGUkVOQ0giOiJVSVRFWFQiLCJFTkdMSVNIIjoiVUlURVhUIn0sIkNvbXBhcmVGb3JtIjp7IkZSRU5DSCI6IlVJVEVYVCIsIkVOR0xJU0giOiJVSVRFWFQifSwiU2VhcmNoRmlsdGVycyI6eyJGUkVOQ0giOiJVSVRFWFQiLCJFTkdMSVNIIjoiVUlURVhUIn0sImhlYWRlckdsb2JhbFNlYXJjaCI6eyJGUkVOQ0giOiJVSVRFWFQiLCJFTkdMSVNIIjoiVUlURVhUIn19LCJzdWJfZ2E0IjoiWSJ9KTt9Y2F0Y2goZXp6MSl7aWYoY29uc29sZSYmY29uc29sZS5sb2cpCmNvbnNvbGUubG9nKGV6ejEpO30KdmFyIGlkZW50XzlmZjUxODk4MTFhOTc2ZDIzODNiYjU0NDE3ZmEwZGUyO3RyeXsoZnVuY3Rpb24odyxkLHQscix1KXt2YXIgZixuLGk7d1t1XT13W3VdfHxbXSxmPWZ1bmN0aW9uKCl7dmFyIG89e3RpOiI1MDc5MzkxIixlbmFibGVBdXRvU3BhVHJhY2tpbmc6dHJ1ZX07by5xPXdbdV0sd1t1XT1uZXcgVUVUKG8pLHdbdV0ucHVzaCgicGFnZUxvYWQiKX0sbj1kLmNyZWF0ZUVsZW1lbnQodCksbi5zcmM9cixuLmFzeW5jPTEsbi5vbmxvYWQ9bi5vbnJlYWR5c3RhdGVjaGFuZ2U9ZnVuY3Rpb24oKXt2YXIgcz10aGlzLnJlYWR5U3RhdGU7cyYmcyE9PSJsb2FkZWQiJiZzIT09ImNvbXBsZXRlInx8KGYoKSxuLm9ubG9hZD1uLm9ucmVhZHlzdGF0ZWNoYW5nZT1udWxsKX0saT1kLmdldEVsZW1lbnRzQnlUYWdOYW1lKHQpWzBdLGkucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUobixpKX0pKHdpbmRvdyxkb2N1bWVudCwic2NyaXB0IiwiLy9iYXQuYmluZy5jb20vYmF0LmpzIiwidWV0cSIpO31jYXRjaChlenoxKXtpZihjb25zb2xlJiZjb25zb2xlLmxvZykKY29uc29sZS5sb2coZXp6MSk7fQp2YXIgaWRlbnRfMTVkYmUxZWM0YmI4MTlmM2JlOWFmMGJiOTE3MzFkOWY7dHJ5e3ZhciBkZXBsb3ltZW50VHlwZT0nJytqc19kMmNfZ2V0X3ZhbCgiMmVqaGJjMHl5b2cwd3d3IikrJyc7aWYoZGVwbG95bWVudFR5cGU9PSdsaXZlJyl7Z2FUcmFjaygnX3RyYWNrRXZlbnQnLCdQYWdlcyB2dWVzJywnU2VjdGlvbi1OZXVmLU1vYmlsZScsJycsMSk7Z2FUcmFjaygnYy5fdHJhY2tFdmVudCcsJ01vYmlsZSBwYWdldmlld3MnLCdTdGFuZGFyZCBNb2JpbGUnLHdpbmRvdy5sb2NhdGlvbi5ocmVmLCcxJyk7fWVsc2UgaWYoZGVwbG95bWVudFR5cGU9PSdzdGFnaW5nJyl7Z2FUcmFjaygnYi5fdHJhY2tFdmVudCcsJ01vYmlsZSBwYWdldmlld3MnLCdTdGFuZGFyZCBNb2JpbGUnLHdpbmRvdy5sb2NhdGlvbi5ocmVmLCcxJyk7fX1jYXRjaChlenoxKXtpZihjb25zb2xlJiZjb25zb2xlLmxvZykKY29uc29sZS5sb2coZXp6MSk7fQp2YXIgaWRlbnRfYzlkNzNjYWUyMjg4NzQ0ZWNlZWFiOTQ2OTUyZmQzMjY7dHJ5e2Z1bmN0aW9uIHNob3dQaG9uZVBvcHVwKCl7Z2FUcmFjaygnX3RyYWNrRXZlbnQnLCdUZWxlcGhvbmVzJywnU2l0ZS1Nb2JpbGUnLCcnLDEpO3ZhciBodG1sPVBob25lc1RvUmVwbGFjZS5yZXBsYWNlKGF0b2IoIlBHUnBkaUJqYkdGemN6MG5iV1Z1ZFNjK1BIVnNJR05zWVhOelBTSnpkR0ZqYXkxc1l5SStQR3hwUGdvSlBHRWdJR2h5WldZOUluUmxiRHA3SkZWelpXUlFTRTlPUlVaUFVrMUJWRlJGUkgwaUlIUmhjbWRsZEQwaVgzTmxiR1lpSUhOMGVXeGxQU0ptYjI1MExYTnBlbVU2SURJeWNIZzdJaUJrWVhSaExXUmxjR0Z5ZEcxbGJuUTlJbE5oYkdWeklqNEtDUWs4YVNCamJHRnpjejBpWm1FZ1ptRXRjR2h2Ym1VaUlITjBlV3hsUFNKdFlYSm5hVzQ2SUROd2VDQXhNSEI0SURBZ01UVndlRHNpUGp3dmFUNEtDUWxINlc3cGNtRnNDZ2s4TDJFK0Nna0tQQzlzYVQ0OEwzVnNQand2WkdsMlBnPT0iKSk7aWYoJChodG1sKS5maW5kKCdhJykubGVuZ3RoPT0xKXskKCcjcGhvbmVOdW1iZXJEaXYnKS5odG1sKGh0bWwpLmZpbmQoJ2EnKVswXS5jbGljaygpO3JldHVybjt9CiQoJyNwaG9uZU51bWJlckRpdicpLmh0bWwoaHRtbCkucmV2ZWFsKHthbmltYXRpb246J2ZhZGVBbmRQb3AnLGFuaW1hdGlvbnNwZWVkOjMwMCxjbG9zZW9uYmFja2dyb3VuZGNsaWNrOnRydWUsZGlzbWlzc21vZGFsY2xhc3M6J2Nsb3NlLXJldmVhbC1tb2RhbCd9KTt9CmZ1bmN0aW9uIGNoZWNrQXV0aCgpe2dhcGkuYXV0aC5hdXRob3JpemUoe2NsaWVudF9pZDpnYXBpY2xpZW50SWQsc2NvcGU6Z2FwaXNjb3BlcyxpbW1lZGlhdGU6ZmFsc2V9LGhhbmRsZUF1dGhSZXN1bHQpO30KZnVuY3Rpb24gaGFuZGxlQXV0aFJlc3VsdChhdXRoUmVzdWx0KXtpZihhdXRoUmVzdWx0JiYhYXV0aFJlc3VsdC5lcnJvcil7b3Blbkdvb2dsZU1hcCh0cnVlKTt9ZWxzZXtvcGVuR29vZ2xlTWFwKGZhbHNlKTt9fQpmdW5jdGlvbiBvcGVuR29vZ2xlTWFwKCl7dmFyIG1hcFRvVXNlPSIiK2pzX2QyY19nZXRfdmFsKCIxNDA0cmEwNGJ3cmtvNHdnIikrIiI7dmFyIHVybD0iaHR0cDovL21hcHMuIittYXBUb1VzZSsiLmNvbS8\/cT01NjI1K0JvdWwuK01ldHJvcG9saXRhaW4rRXN0JTJDK01vbnRyZWFsJTJDK1F1ZWJlYyUyQytIMVArMVgzJno9MTMiO3dpbmRvdy5vcGVuKHVybCk7fX1jYXRjaChlenoxKXtpZihjb25zb2xlJiZjb25zb2xlLmxvZykKY29uc29sZS5sb2coZXp6MSk7fQp2YXIgaWRlbnRfOTUwYzc1NmRjZDNhZDc5ZDg0MWE3ODU5NWEwMzMwNWI7dHJ5e2pRdWVyeShmdW5jdGlvbigkKXskKCIjVHJhZGVJbkJhclBvcHVwQ29udGFpbmVyIikucG9wdXBpemUoeyJvbkJlZm9yZU9wZW4iOmZ1bmN0aW9uKCl7JCgnI3RyYWRlSW5CYXJQb3B1cFN1Ym1pdCcpLnByb3AoJ2Rpc2FibGVkJyxmYWxzZSk7JCgnI3RyYWRlSW5CYXJQb3B1cFN1Ym1pdCcpLnNob3coKTt0cmFkZWlucG9wdXBkMmMuaW5pdFRyYWRlSW5TdGVwMSgpOyQoJ2lucHV0W25hbWU9c3RlcDNkb25lXScpLnZhbCgwKTt0cmFkZWlucG9wdXBkMmMub25CZWZvcmVPcGVuKCk7fSwib25CZWZvcmVzdWJtaXQiOmZ1bmN0aW9uKHBvcHVwKXtyZXR1cm4gdHJhZGVpbnBvcHVwZDJjLm9uQmVmb3JlU3VibWl0KHBvcHVwKTt9LCJvbkFmdGVyc3VibWl0IjpmdW5jdGlvbihwb3B1cCl7dHJhZGVpbnBvcHVwZDJjLm9uQWZ0ZXJTdWJtaXQocG9wdXApO0Nvb2tpZXMuc2V0KCdwb3B1cEZvcm1GaWxsZWQnLG51bGwsbnVsbCwnLycpO0Nvb2tpZXMuc2V0KCd0cmFkZUluUG9wdXBTaG93bicsbnVsbCxudWxsLCcvJyk7aWYoJCgnI3RyYWRlSW5CYXInKS5sZW5ndGgpeyQoJyN0cmFkZUluQmFyJykuaGlkZSgpO30KaWYoJCgnI3RyYWRlaW5CYXJGbG9hdCcpLmxlbmd0aCl7JCgnI3RyYWRlaW5CYXJGbG9hdCcpLmhpZGUoKTt9fSwib25CZWZvcmVWYWxpZGF0aW9uIjpmdW5jdGlvbihwb3B1cCl7cmV0dXJuIHRyYWRlaW5wb3B1cGQyYy5vbkJlZm9yZVZhbGlkYXRpb24ocG9wdXApO30sIm9uQmVmb3JlQ2xvc2UiOmZ1bmN0aW9uKHBvcHVwKXtDb29raWVzLmdldCgndHJhZGVJblBvcHVwU2hvd24nLG51bGwsbnVsbCwnLycpOyQoJyNsZWFkU2VudCcpLnJlbW92ZSgpOyQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIC50cmFkZUluQmFyRGVhbGVyU3RlcCcpLmhpZGUoKTt9LCJvbkJlZm9yZUluaXRpYWxpemUiOmZ1bmN0aW9uKHBvcHVwKXtwb3B1cC5zZXR0aW5ncy5mb3JtLnNlbmRUbz1wb3B1cC5zZXR0aW5ncy5mb3JtLnNlbmRUbztwb3B1cC5zZXR0aW5ncy5mb3JtLnNlbmRUb0FERj1wb3B1cC5zZXR0aW5ncy5mb3JtLnNlbmRUb0FERjt9LCJvbkFmdGVySW5pdGlhbGl6ZSI6ZnVuY3Rpb24oc2VsZil7dHJhZGVJbkJhckluaXRpYWxpemUoKTt0cmFkZWlucG9wdXBkMmMuaW5pdCgpO3dpbmRvdy5sYXVuY2hUcmFkZUluUG9wdXA9ZnVuY3Rpb24oc291cmNlKXt2YXIgcD0kKCIjVHJhZGVJbkJhclBvcHVwQ29udGFpbmVyIikucG9wdXBpemUoe3BvcHVwRXZlbnRTb3VyY2U6c291cmNlfSk7aWYoc291cmNlIT0iYXV0b21hdGljIil7cC5zZXRUcmlnZ2VyKCJjbGljayIpO30KcC5vcGVuKCk7cmV0dXJuIGZhbHNlO30KaWYodHlwZW9mIHBvcHVwRGVmYXVsdE9uQWZ0ZXJJbml0aWFsaXplIT0idW5kZWZpbmVkIil7dmFyIHBvcHVwVHlwZT0idXNlZCI7dmFyIGN1cnJlbnRQYWdlPSIiK2pzX2QyY19nZXRfdmFsKCIxNmQ3dnd0NjZwbW93bzBrIikrIiI7dmFyIHRtcD1wb3B1cERlZmF1bHRPbkFmdGVySW5pdGlhbGl6ZSgidXNlZCIsIiIranNfZDJjX2dldF92YWwoIjZqeXA0NjY0dmd3czgwdyIpKyIiLGZhbHNlLCJ0cmFkZUluQmFyUG9wdXAiLCIiK2pzX2QyY19nZXRfdmFsKCIxNmQ3dnd0NjZwbW93bzBrIikrIiIsIlRyYWRlSW5CYXJQb3B1cENvbnRhaW5lciIsZmFsc2UpO3JldHVybiB0bXA7fX0sIm9uQmVmb3JlU2VuZE1haWwiOmZ1bmN0aW9uKHBvcHVwKXtpZignJz09Jycpe2lmKGVtYWlsSGFuZGxlci5nZXREZXAoKT09J05FVycpe2VtYWlsSGFuZGxlci5zZW5kVG89JzM5NDk5YWM0MTk2NzliODVkNmExYTVkNjNkNWMwZTc1fDM5MDczMDE2NzcnO2VtYWlsSGFuZGxlci5zZW5kVG9BREZGb3JtYXQ9J2NhNTg2MjUxNTgxMTQ1ODg5OThkZDE2ZGQxMTY5NDllfDM5MDczMDE2NzcnO2VtYWlsSGFuZGxlci5zZW5kVG9BREY9J2NhNTg2MjUxNTgxMTQ1ODg5OThkZDE2ZGQxMTY5NDllfDM5MDczMDE2NzcnO31lbHNle2VtYWlsSGFuZGxlci5zZW5kVG89JycranNfZDJjX2dldF92YWwoIjNwbTZ0dmdxcWVndzR3IikrJyc7ZW1haWxIYW5kbGVyLnNlbmRUb0FERkZvcm1hdD0nJytqc19kMmNfZ2V0X3ZhbCgicmQ1cDhzNGg2cjRzMGNrIikrJyc7ZW1haWxIYW5kbGVyLnNlbmRUb0FERj0nJytqc19kMmNfZ2V0X3ZhbCgicmQ1cDhzNGg2cjRzMGNrIikrJyc7fX0KaWYoZW1haWxIYW5kbGVyLmdldERlcCgpPT0nTkVXJyl7ZW1haWxIYW5kbGVyLm1haWxJRD0ncHJpY2V2ZWhpY2xlbmV3Jzt9ZWxzZXtlbWFpbEhhbmRsZXIubWFpbElEPSdwcmljZXZlaGljbGUnO319LCJvbkFmdGVyQ29uc2VudCI6ZnVuY3Rpb24ocG9wdXApeyQoJyN0cmFkZUluQmFyUG9wdXBTdWJtaXQnKS5wcm9wKCdkaXNhYmxlZCcsZmFsc2UpOyQoJyN0cmFkZUluQmFyUG9wdXBTdWJtaXQnKS5zaG93KCk7fSwiY29va2llRHVyYXRpb24iOjYwLCJjb29raWVOYW1lIjoidHJhZGVJblBvcHVwU2hvd24iLCJjb29raWVDcmVhdGUiOiJvblN1Ym1pdCIsImdvb2dsZVRyYWNraW5nIjp7ImlkU3VmZml4IjoiIiwibGFiZWwiOiIiLCJsYWJlbHNlY3Rpb24iOiIiLCJpc2V4cHJlc3MiOjAsImlzcHJvbW8iOjAsImlzaG9tZXBhZ2UiOjAsImlzbW9iaWxlIjowfSwiZm9ybSI6eyJlbWFpbGlkIjoiUHJpY2VWZWhpY2xlQWNjdXRyYWRlIiwib2ZmZXJ0eXBlIjoidHJhZGVJbkJhclBvcHVwIiwibmFtZSI6bnVsbCwic2VuZFRvIjoiIitqc19kMmNfZ2V0X3ZhbCgiM3BtNnR2Z3FxZWd3NHciKSsiIiwic2VuZFRvQURGIjoiIitqc19kMmNfZ2V0X3ZhbCgicmQ1cDhzNGg2cjRzMGNrIikrIiIsIk9LQnV0dG9uQ2xhc3MiOiJ0cmFkZUluQmFyUG9wdXBTdWJtaXQiLCJDYW5jZWxCdXR0b25DbGFzcyI6ImNhbmNlbEJ0biIsInNob3dFbWFpbENvbmZpcm1hdGlvbiI6dHJ1ZSwiZnJvbUFBIjpmYWxzZSwiY29uZmlybWF0aW9uIjp7InRpdGxlIjpudWxsLCJib2R5IjpudWxsfX0sInN0YXRlIjpbXSwidmVoaWNsZVN0YXRlIjoidXNlZCIsImNsb3NlT25TdWJtaXQiOmZhbHNlLCJmaWxsZmxhZyI6ZmFsc2UsIm5vdHJhbnNmb3JtIjp0cnVlLCJuYW1lIjpmYWxzZSwiYW5pbWF0aW9uIjoiZmFkZUFuZFBvcCIsImFuaW1hdGlvblNwZWVkIjozMDAsImNsb3NlT25CYWNrZ3JvdW5kQ2xpY2siOmZhbHNlLCJkaXNtaXNzTW9kYWxDbGFzcyI6ImNsb3NlLXJldmVhbC1tb2RhbCIsImNsb3NlQnV0dG9uIjp0cnVlLCJieXBhc3NDb25zZW50IjpmYWxzZSwidGhyZXNob2xkIjpmYWxzZSwidGhyZXNob2xkVmFsdWUiOmZhbHNlLCJzY3JvbGx1cCI6ZmFsc2UsIm1haW5wb3B1cCI6ZmFsc2UsImNvdW50ZG93biI6MTc4NDM0NzIwMCwiY29uZmlybUZvcm0iOltdfSk7fSk7fWNhdGNoKGV6ejEpe2lmKGNvbnNvbGUmJmNvbnNvbGUubG9nKQpjb25zb2xlLmxvZyhlenoxKTt9CnZhciBpZGVudF9lMjVkNmNmYWIzOTI3ZDc4ZDllMmY1YTJlMzQ3NjAxNjt0cnl7bWFpbFNlbnRIYW5kbGVyPWdldE1haWxTZW50SGFuZGxlcignX1RyYWRlSW5CYXJQb3B1cENvbnRhaW5lcicpO31jYXRjaChlenoxKXtpZihjb25zb2xlJiZjb25zb2xlLmxvZykKY29uc29sZS5sb2coZXp6MSk7fQp2YXIgaWRlbnRfNGQyNWJhMDY0MTcxMzg3ODVhY2ZhNTAwNjViYmJhYTk7dHJ5e31jYXRjaChlenoxKXtpZihjb25zb2xlJiZjb25zb2xlLmxvZykKY29uc29sZS5sb2coZXp6MSk7fQp2YXIgaWRlbnRfYTMzYzM1YjNmYTBjMGQ0ODExMjNiMzc1YmU5OTZhZGM7dHJ5e3ZhciBlc2ZEZWxheT0xMDtmdW5jdGlvbiBlc2NhcGVGcmFtZSgpe2lmKChkb2N1bWVudC5sb2NhdGlvbisnJykuaW5kZXhPZignbmZyPTEnKT09LTEpcmV0dXJuOyQoJ2EnKS5ub3QoJ1t0YXJnZXRdJykuZWFjaChmdW5jdGlvbigpe3ZhciBlbD0kKHRoaXMpO3ZhciB0YXJnZXQ9ZWwuYXR0cigndGFyZ2V0Jyk7dmFyIGhyZWY9ZWwuYXR0cignaHJlZicpO2lmKHRhcmdldCYmdGFyZ2V0Lmxlbmd0aD4wKXtyZXR1cm47fQppZighaHJlZilyZXR1cm47dmFyIHByb3RvY29sPWhyZWYubWF0Y2goL14oW2EtejAtOV0rKTovKTtpZihwcm90b2NvbCE9bnVsbCYmIXByb3RvY29sWzFdLm1hdGNoKC9eaHR0cC8pKXtyZXR1cm47fQppZihocmVmWzBdPT09JyMnKXtyZXR1cm47fQplbC5hdHRyKCd0YXJnZXQnLCdfdG9wJyk7fSk7c2V0VGltZW91dChlc2NhcGVGcmFtZSwxMDAqZXNmRGVsYXkrKyk7fQpqUXVlcnkoZXNjYXBlRnJhbWUpO2Z1bmN0aW9uIHRvZ2dsZVN1Ym1lbnVzKG9iail7JChvYmopLmNsb3Nlc3QoJ2xpJykuZmluZCgnLnN1Ym1lbnVJdGVtQ29udGFpbmVyLCAuc3VibWVudUl0ZW1DaGlsZENvbnRhaW5lcicpLmZpcnN0KCkuc2xpZGVUb2dnbGUoJ3Nsb3cnKTtpZigkKG9iaikuaGFzQ2xhc3MoJ21lbnVDb2xscGFzZScpKXskKG9iaikucmVtb3ZlQ2xhc3MoJ21lbnVDb2xscGFzZScpO31lbHNleyQob2JqKS5hZGRDbGFzcygnbWVudUNvbGxwYXNlJyk7fQpyZXR1cm4gZmFsc2U7fQpmdW5jdGlvbiBnZXRQYXJhbWV0ZXJCeU5hbWUobmFtZSl7bmFtZT1uYW1lLnJlcGxhY2UoL1tcW10vLCJcWyIpLnJlcGxhY2UoL1tcXV0vLCJcXSIpO3ZhciByZWdleD1uZXcgUmVnRXhwKCJbXD8mXSIrbmFtZSsiPShbXiYjXSopIikscmVzdWx0cz1yZWdleC5leGVjKGxvY2F0aW9uLnNlYXJjaCk7cmV0dXJuIHJlc3VsdHM9PW51bGw\/IiI6ZGVjb2RlVVJJQ29tcG9uZW50KHJlc3VsdHNbMV0ucmVwbGFjZSgvXCsvZywiICIpKTt9CnZhciB1dG1fc291cmNlPWdldFBhcmFtZXRlckJ5TmFtZSgndXRtX3NvdXJjZScpO2pRdWVyeShmdW5jdGlvbigkKXskKCcubm90Q2xpY2thYmxlJykub24oJ2NsaWNrJyxmdW5jdGlvbihldmVudCl7ZXZlbnQucHJldmVudERlZmF1bHQoKTt0b2dnbGVTdWJtZW51cygkKCcubWVudUV4cGFuZCcsdGhpcykpO3JldHVybiBmYWxzZTt9KTskKCcubWVudUV4cGFuZCcpLm9uKCdjbGljaycsZnVuY3Rpb24oZXZlbnQpe2V2ZW50LnByZXZlbnREZWZhdWx0KCk7dG9nZ2xlU3VibWVudXMoJCgnLm1lbnVFeHBhbmQnLHRoaXMuY2xvc2VzdCgnLm1lbnUtaXRlbScpKSk7cmV0dXJuIGZhbHNlO30pO2lmKCQoJy51c2VkcGhvbmVmb3JtYXRlZCcpLmxlbmd0aD4wJiYkKCcjYWdlbnRwaG9uZScpLmxlbmd0aD4wJiYkKCcjYWdlbnRwaG9uZScpLnZhbCgpLmxlbmd0aD41KXskKCcudXNlZHBob25lZm9ybWF0ZWQnKS5hdHRyKCdocmVmJywndGVsOicrJCgnI2FnZW50cGhvbmUnKS52YWwoKSk7fQpzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7JCh3aW5kb3cpLm9uKCdvcmllbnRhdGlvbmNoYW5nZScsZnVuY3Rpb24oZXZlbnQpe2lmKHdpbmRvdy5vcmllbnRhdGlvbj09OTB8fHdpbmRvdy5vcmllbnRhdGlvbj09LTkwfHx3aW5kb3cub3JpZW50YXRpb249PTI3MCl7JCgnbWV0YVtuYW1lPSJ2aWV3cG9ydCJdJykuYXR0cignY29udGVudCcsJ2hlaWdodD1kZXZpY2Utd2lkdGgsd2lkdGg9ZGV2aWNlLWhlaWdodCxpbml0aWFsLXNjYWxlPTEsbWF4aW11bS1zY2FsZT0zJyk7JCh3aW5kb3cpLnRyaWdnZXIoJ3Jlc2l6ZScpO31lbHNleyQoJ21ldGFbbmFtZT0idmlld3BvcnQiXScpLmF0dHIoJ2NvbnRlbnQnLCdoZWlnaHQ9ZGV2aWNlLWhlaWdodCx3aWR0aD1kZXZpY2Utd2lkdGgsaW5pdGlhbC1zY2FsZT0xLG1heGltdW0tc2NhbGU9MycpOyQod2luZG93KS50cmlnZ2VyKCdyZXNpemUnKTt9fSkudHJpZ2dlcignb3JpZW50YXRpb25jaGFuZ2UnKTtpZih1dG1fc291cmNlIT0iIil7Q29va2llcy5zZXQoJ3V0bV9sYW5kaW5nX2Zvb3RlcicsbnVsbCxudWxsLCIvIik7fQppZihDb29raWVzLmdldCgidXRtX2xhbmRpbmdfZm9vdGVyIik9PW51bGx8fENvb2tpZXMuZ2V0KCJ1dG1fbGFuZGluZ19mb290ZXIiKT09PSdudWxsJyl7Q29va2llcy5zZXQoJ3V0bV9sYW5kaW5nX2Zvb3Rlcicsd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lLDE4MCwiLyIpO319KTt9LDEwMDAwKTtmdW5jdGlvbiBzaG93Tm9ybWFsU2l0ZSgpe3ZhciBkb21haW49IiIranNfZDJjX2dldF92YWwoInU2dGhydzlvbGNnOHc4dyIpKyIiO0Nvb2tpZXMuc2V0KCdVc2VGdWxsU2l0ZScsJzEnLG51bGwsIi8iLGRvbWFpbik7d2luZG93LmxvY2F0aW9uLmhyZWY9JycranNfZDJjX2dldF92YWwoImNvdTlobTQyOTFjMGtvYyIpKycnO319Y2F0Y2goZXp6MSl7aWYoY29uc29sZSYmY29uc29sZS5sb2cpCmNvbnNvbGUubG9nKGV6ejEpO30KdmFyIGlkZW50XzMxNGNhYTViZjU5MDkyYzZmN2NmNmEyZmM3MmU5NTEzO3RyeXtpZih0eXBlb2YgcGFnZSE9PSd1bmRlZmluZWQnJiZwYWdlPT0iTkVXQ0FSREVUQUlMUyIpeyQoZG9jdW1lbnQpLm9uKCdjbGljaycsJ2EnLGZ1bmN0aW9uKCl7dmFyIG9iaj0kKHRoaXMpO3ZhciBocmVmPW9iai5hdHRyKCdocmVmJyk7dmFyIHRleHQ9b2JqLnRleHQoKTtpZih0ZXh0Lmxlbmd0aD4wJiZvYmouZmluZCgnaW1nJykubGVuZ3RoPT0wJiZ0eXBlb2YgaHJlZiE9J3VuZGVmaW5lZCcpe3ZhciB0aXRsZT0kKCcuYnJhbmRlbWFpbFtuYW1lPSJicmFuZCJdJykudmFsKCkrJy0nKyQoJy5tb2RlbGVtYWlsW25hbWU9Im1vZGVsIl0nKS52YWwoKSsnLScrJCgnLnllYXJlbWFpbCcpLnZhbCgpO2lmKGhyZWYhPSIjIiYmaHJlZiE9IiImJmhyZWYuaW5kZXhPZigiamF2YXNjcmlwdCIpPDAmJmhyZWYuaW5kZXhPZigneycpPDApe3RpdGxlPWhyZWY7fQpnYVRyYWNrKCdfdHJhY2tFdmVudCcsJ05ldy1WRFAtT3V0Ym91bmQtY2xpY2tzJyxvYmoudGV4dCgpLHRpdGxlKTt9fSl9fWNhdGNoKGV6ejEpe2lmKGNvbnNvbGUmJmNvbnNvbGUubG9nKQpjb25zb2xlLmxvZyhlenoxKTt9CnZhciBpZGVudF9lM2ZlM2RlNjlkNzA2MWJmOGVlMzQxMzEwYWRmNzFmNzt0cnl7dmFyIHRlc3QxMjM9dHJ1ZTtqUXVlcnkoZnVuY3Rpb24oJCl7aWYoQ29va2llcy5nZXQoJ25vdXNlZGN0YScpPT0nMScpe3JldHVybiBmYWxzZTt9CnZhciBpc1VzZWRWRFBQYWdlPSQoJyNwYWdlJykudmFsKCk9PSdkZXRhaWxzVXNlZCc7ZnVuY3Rpb24gbG9nUGFnZVZpZXdFdmVudChldmVudCxldmVudENhdGVnb3J5LGFkZGVkSW5mbyl7dHJ5e2FjdGl2ZVVzZXJQcm9maWxlTW5nLmxvZ1BhZ2VWaWV3RXZlbnQoZXZlbnQsZXZlbnRDYXRlZ29yeSxhZGRlZEluZm8pO31jYXRjaChlKXtjb25zb2xlLmxvZyhlKTt9fQp2YXIgdmRwVG9hc3RlclVzZWRNYWtlTW9kZWxZZWFyVGV4dD0ic3VyIGNlICIranNfZDJjX2dldF92YWwoIjQyY2xzaHlxc3h3a3NrbyIpKyIgIitqc19kMmNfZ2V0X3ZhbCgiMXA5NnBxMjJ0Mjc0Y2NjIikrIiAoIitqc19kMmNfZ2V0X3ZhbCgiM3NiNnhzZ2JrazRrNDQiKSsiKSBtYWludGVuYW50ISI7dmRwVG9hc3RlclVzZWRNYWtlTW9kZWxZZWFyVGV4dD12ZHBUb2FzdGVyVXNlZE1ha2VNb2RlbFllYXJUZXh0LnJlcGxhY2UoJyMjTU9ERUwjIycsJCgnI3Bob25lbW9kZWwnKS52YWwoKSk7dmRwVG9hc3RlclVzZWRNYWtlTW9kZWxZZWFyVGV4dD12ZHBUb2FzdGVyVXNlZE1ha2VNb2RlbFllYXJUZXh0LnJlcGxhY2UoJyMjWUVBUiMjJywkKCcjcGhvbmVteWVhcicpLnZhbCgpKTt2ZHBUb2FzdGVyVXNlZE1ha2VNb2RlbFllYXJUZXh0PXZkcFRvYXN0ZXJVc2VkTWFrZU1vZGVsWWVhclRleHQucmVwbGFjZSgnIyNTVE9DS05VTUJFUiMjJywnIycrJCgnI3Bob25lc3RvY2tudW1iZXInKS52YWwoKSk7dmRwVG9hc3RlclVzZWRNYWtlTW9kZWxZZWFyVGV4dDI9dmRwVG9hc3RlclVzZWRNYWtlTW9kZWxZZWFyVGV4dC5yZXBsYWNlKCcgbWFpbnRlbmFudCEnLCcnKTt2ZHBUb2FzdGVyVXNlZE1ha2VNb2RlbFllYXJUZXh0Mj12ZHBUb2FzdGVyVXNlZE1ha2VNb2RlbFllYXJUZXh0LnJlcGxhY2UoJyBub3chJywnJyk7dmFyIG9wdGlvbnNUb2FzdGVyMj17Im9uQ2xvc2UiOmZ1bmN0aW9uKCl7cmV0dXJuIGZhbHNlO30sImNsb3NlQnV0dG9uIjp0cnVlLCJkZWJ1ZyI6ZmFsc2UsIm5ld2VzdE9uVG9wIjpmYWxzZSwicHJvZ3Jlc3NCYXIiOmZhbHNlLCJwb3NpdGlvbkNsYXNzIjoidG9hc3QtYm90dG9tLWZ1bGwtd2lkdGgiLCJwcmV2ZW50RHVwbGljYXRlcyI6ZmFsc2UsIm9uY2xpY2siOmZ1bmN0aW9uKCl7Z2FUcmFjaygnX3RyYWNrRXZlbnQnLCdNb2JpbGUtVG9hc3RlcnMnLCdPY2Nhc2lvbi1QcmljZS1Ecm9wJyx3aW5kb3cubG9jYXRpb24uaHJlZiwxKTt0b1Ntc1VzZWRNZXNzYWdlKCdwcmljZURyb3BVc2VkJyk7bG9nUGFnZVZpZXdFdmVudCgnTW9iaWxlLVRvYXN0ZXInLCdUT0FTVEVSX01fRVZFTlRfUFJJQ0VfRFJPUCcpO3JldHVybiBmYWxzZTt9LCJzaG93RHVyYXRpb24iOiIzMDAiLCJoaWRlRHVyYXRpb24iOiIxMDAwIiwidGltZU91dCI6IjAiLCJleHRlbmRlZFRpbWVPdXQiOiIxMDAwIiwic2hvd0Vhc2luZyI6InN3aW5nIiwiaGlkZUVhc2luZyI6ImxpbmVhciIsInNob3dNZXRob2QiOiJzbGlkZURvd24iLCJoaWRlTWV0aG9kIjoiZmFkZU91dCIsImNvbG9yIjoiI2ZmZmZmZiIsImJnQ29sb3IiOiIjMDAwMDAwIn07aWYoaXNVc2VkVkRQUGFnZSl7dG9hc3RyLm9wdGlvbnM9eyJvbkNsb3NlIjpmdW5jdGlvbigpe2RlbGF5ZWRTZWNvbmRUb2FzdGVyKHZkcFRvYXN0ZXJVc2VkTWFrZU1vZGVsWWVhclRleHQyLG9wdGlvbnNUb2FzdGVyMik7fSwiY2xvc2VCdXR0b24iOnRydWUsImRlYnVnIjpmYWxzZSwibmV3ZXN0T25Ub3AiOmZhbHNlLCJwcm9ncmVzc0JhciI6ZmFsc2UsInBvc2l0aW9uQ2xhc3MiOiJ0b2FzdC1ib3R0b20tZnVsbC13aWR0aCIsInByZXZlbnREdXBsaWNhdGVzIjpmYWxzZSwib25jbGljayI6ZnVuY3Rpb24oKXtnYVRyYWNrKCdfdHJhY2tFdmVudCcsJ01vYmlsZS1Ub2FzdGVycycsJ09jY2FzaW9uLUJlc3QtUHJpY2UnLHdpbmRvdy5sb2NhdGlvbi5ocmVmLDEpO3RvU21zVXNlZE1lc3NhZ2UoJ2Jlc3RQcmljZVVzZWQnKTtkZWxheWVkU2Vjb25kVG9hc3Rlcih2ZHBUb2FzdGVyVXNlZE1ha2VNb2RlbFllYXJUZXh0MixvcHRpb25zVG9hc3RlcjIpO2xvZ1BhZ2VWaWV3RXZlbnQoJ01vYmlsZS1Ub2FzdGVyJywnVE9BU1RFUl9NX0VWRU5UX0JFU1RfUFJJQ0UnKTtyZXR1cm4gZmFsc2U7fSwic2hvd0R1cmF0aW9uIjoiMzAwIiwiaGlkZUR1cmF0aW9uIjoiMTAwMCIsInRpbWVPdXQiOiIwIiwiZXh0ZW5kZWRUaW1lT3V0IjoiMTAwMCIsInNob3dFYXNpbmciOiJzd2luZyIsImhpZGVFYXNpbmciOiJsaW5lYXIiLCJzaG93TWV0aG9kIjoic2xpZGVEb3duIiwiaGlkZU1ldGhvZCI6ImZhZGVPdXQiLCJjb2xvciI6IiMxZTI2NGUiLCJiZ0NvbG9yIjoiI2ZmZmZmZiJ9O3NldFRpbWVvdXQoZnVuY3Rpb24oKXt0b2FzdHIuc3VjY2Vzcyh2ZHBUb2FzdGVyVXNlZE1ha2VNb2RlbFllYXJUZXh0MisiIENsaXF1ZXogaWNpLiIsIlRleHRlei1tb2kgdm90cmUgbWVpbGxldXIgcHJpeCIpOyQoJyN0b2FzdC1jb250YWluZXInKS5jc3MoJ3otaW5kZXgnLCcyMTQ3NDgzNjQxJyk7JCgnI3RvYXN0LWNvbnRhaW5lciA+IGRpdicpLmNzcygnb3BhY2l0eScsJzAuOTUnKTt9LDApO30KcmV0dXJuO30pO2Z1bmN0aW9uIGRlbGF5ZWRTZWNvbmRUb2FzdGVyKHR4dCxvcHQpe2lmKDEpe3NldFRpbWVvdXQoZnVuY3Rpb24oKXt0b2FzdHIuc3VjY2Vzcyh0eHQrIiBDbGlxdWV6IGljaS4iLCJUZXh0ZXotbW9pIGxvcnNxdSdpbCB5IGF1cmEgdW5lIGJhaXNzZSBkZSBwcml4IixvcHQpOyQoJyN0b2FzdC1jb250YWluZXInKS5jc3MoJ3otaW5kZXgnLCcyMTQ3NDgzNjQxJyk7JCgnI3RvYXN0LWNvbnRhaW5lciA+IGRpdicpLmNzcygnb3BhY2l0eScsJzAuOTUnKTt9LDEwMDAwKTt9fQpmdW5jdGlvbiB0b1Ntc1VzZWRNZXNzYWdlKG1lc3NhZ2VUeXBlKXtpZih0eXBlb2YgZGVhbGVyU21zTnVtYmVyPT09J29iamVjdCcpe3ZhciBkYXRhPXtkZXB0OigkKCcjbmV3U2VjdGlvbk92ZXJyaWRlJykubGVuZ3RoJiYkKCcjbmV3U2VjdGlvbk92ZXJyaWRlJykudmFsKCk9PScxJyk\/J05FVyc6KHR5cGVvZiBlbWFpbEhhbmRsZXI9PT0nb2JqZWN0Jz9lbWFpbEhhbmRsZXIuZ2V0RGVwKCkudG9VcHBlckNhc2UoKTonVVNFRCcpLG1lc3NhZ2VUeXBlOm1lc3NhZ2VUeXBlfTt2YXIgeWVhcj0kKCcjcGhvbmVteWVhcicpLmxlbmd0aD8kKCcjcGhvbmVteWVhcicpLnZhbCgpOicnLG1ha2U9JCgnI3Bob25lbWFrZScpLmxlbmd0aD8kKCcjcGhvbmVtYWtlJykudmFsKCk6JycsbW9kZWw9JCgnI3Bob25lbW9kZWwnKS5sZW5ndGg\/JCgnI3Bob25lbW9kZWwnKS52YWwoKTonJyxzdG9ja251bT0kKCcjcGhvbmVzdG9ja251bWJlcicpLmxlbmd0aD8kKCcjcGhvbmVzdG9ja251bWJlcicpLnZhbCgpOicnLG93bmVySWQ9JCgnI3ZlaGljbGVPd25lcklkJykubGVuZ3RoPyQoJyN2ZWhpY2xlT3duZXJJZCcpLnZhbCgpOicnO2lmKG1ha2UhPT0nJyl7ZGF0YS5tYWtlPW1ha2U7fQppZihtb2RlbCE9PScnKXtkYXRhLm1vZGVsPW1vZGVsO30KaWYoeWVhciE9PScnKXtkYXRhLnllYXI9eWVhcjt9CmlmKHN0b2NrbnVtIT09Jycpe2RhdGEuc3RvY2tOdW1iZXI9c3RvY2tudW07fQppZihvd25lcklkIT09Jycpe2RhdGEuZGVhbGVySWQ9b3duZXJJZDt9CmRhdGEudmVoaWNsZUlkPScnO2RhdGEuVklOPScnO2RhdGEucHJpY2U9Jyc7ZGF0YS5tb2RlbElkPScnO2lmKHNpdGVQYWdlLm5hbWU9J0NBUkRFVEFJTFMnJiZ0eXBlb2Ygc2VhcmNoRGV0YWlscz09PSdvYmplY3QnJiZ0eXBlb2Ygc2VhcmNoRGV0YWlscy52ZWhpY2xlPT09J29iamVjdCcpe2RhdGEudmVoaWNsZUlkPXNlYXJjaERldGFpbHMudmVoaWNsZUlEO2RhdGEuVklOPXNlYXJjaERldGFpbHMudmVoaWNsZS5OSVY7ZGF0YS5wcmljZT1zZWFyY2hEZXRhaWxzLnZlaGljbGUucHJpY2U7fQppZihzaXRlUGFnZS5uYW1lPSdORVdDQVJERVRBSUxTJyYmdHlwZW9mIG5ld2NhckRldGFpbHM9PT0nb2JqZWN0JyYmdHlwZW9mIG5ld2NhckRldGFpbHMuYWN0aXZlTW9kZWw9PT0nb2JqZWN0Jyl7ZGF0YS5tb2RlbElkPW5ld2NhckRldGFpbHMuYWN0aXZlTW9kZWwuaWR8fCcnO30KZGVhbGVyU21zTnVtYmVyLmdldFNtc051bWJlcihkYXRhLGZ1bmN0aW9uKHJzcCl7aWYocnNwIT09ZmFsc2Upe3ZhciBzZXA9KC9XaW5kb3dzXHNQaG9uZS9pKS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpPyc\/JzonPyYnO3ZhciBsbms9J3NtczonK3JzcC5zbXNudW1iZXIrc2VwKydib2R5PScrZW5jb2RlVVJJQ29tcG9uZW50KHJzcC5zbXNtZXNzYWdlKTtjb25zb2xlLmxvZygnU01TSFJFRjonLGxuayk7d2luZG93LmxvY2F0aW9uLmhyZWY9bG5rO319KTt9fX1jYXRjaChlenoxKXtpZihjb25zb2xlJiZjb25zb2xlLmxvZykKY29uc29sZS5sb2coZXp6MSk7fQp2YXIgaWRlbnRfNzQ0Mjc2NzM0MWU2MTNmNjYxNWE1NWM5MmEzZjMzMWQ7dHJ5e2pRdWVyeShmdW5jdGlvbigkKXtpZigkKCcjZ2VuZXJpY19mb3JtX2NvbmZpcm0nKS5sZW5ndGg8MSl7dmFyIEZvcm09JCgnPGZvcm0gaWQ9ImdlbmVyaWNfZm9ybV9jb25maXJtIiB0YXJnZXQ9ImlmcmFtZWd0cmFjayIgbWV0aG9kPSJwb3N0IiBhY3Rpb249Ii9jb25maXJtYXRpb24uaHRtbCI+PC9mb3JtPicpO3ZhciBtYWtlVmFsPSIiK2pzX2QyY19nZXRfdmFsKCIxZXJpdjkwMHBkYTg4d3c4IikrIiI7dmFyIG1vZGVsVmFsPSIiK2pzX2QyY19nZXRfdmFsKCIxMHBhN3YzcWVsZGNvc2siKSsiIjt2YXIgeWVhclZhbD0iIitqc19kMmNfZ2V0X3ZhbCgicjgyemZreGEyZHdzczAwIikrIiI7dmFyIHJlZmVyYWxWYWw9IiIranNfZDJjX2dldF92YWwoImkzZ3NheGdzNWprOHdjayIpKyIiO3ZhciBzZWN0aW9uVmFsPScnK2pzX2QyY19nZXRfdmFsKCJzbzd5dXFhajRkd2NjOHMiKSsnJzt2YXIgZnJvbUF1dG9hdWJhaW5lPSQoJyNhdXRvYXViYWluZV9wb3B1cCcpLmxlbmd0aD4wJiYoJCgnI2F1dG9hdWJhaW5lX3BvcHVwJykudmFsKCkhPSdmYWxzZScpO3ZhciBpbnB1dHM9KFt7Im5hbWUiOiJsYWJlbCIsInZhbHVlIjoiIiwiY2xhc3MiOiJsYWJlbGVtYWlsIn0seyJuYW1lIjoic2VjdGlvbiIsInZhbHVlIjoiIiwiY2xhc3MiOiJsYWJlbHNlY3Rpb24ifSx7Im5hbWUiOiJicmFuZCIsInZhbHVlIjptYWtlVmFsLCJjbGFzcyI6ImJyYW5kZW1haWwifSx7Im5hbWUiOiJtb2RlbCIsInZhbHVlIjptb2RlbFZhbCwiY2xhc3MiOiJtb2RlbGVtYWlsIn0seyJuYW1lIjoieWVhciIsInZhbHVlIjp5ZWFyVmFsLCJjbGFzcyI6InllYXJlbWFpbCJ9LHsibmFtZSI6Imdvb2dsZWlkIiwidmFsdWUiOiIifSx7Im5hbWUiOiJnb29nbGVpZGQyY21lZGlhIiwidmFsdWUiOiIifSx7Im5hbWUiOiJiaW5nY29uaWQiLCJ2YWx1ZSI6IiJ9LHsibmFtZSI6ImJpbmdhY3Rpb25pZCIsInZhbHVlIjoiIn0seyJuYW1lIjoiYmluZ2RvbWFpbmlkIiwidmFsdWUiOiIifSx7Im5hbWUiOiJndGFnX2NvbnZlcnNpb24iLCJ2YWx1ZSI6Imd0YWcifSx7Im5hbWUiOiJhZHJvbGxBZHYiLCJ2YWx1ZSI6IiJ9LHsibmFtZSI6ImFkcm9sbFBpeCIsInZhbHVlIjoiIn0seyJuYW1lIjoiZmFjZWJvb2tDb25JZCIsInZhbHVlIjoiIn0seyJuYW1lIjoibGVhZF9kZXBhcnRtZW50IiwidmFsdWUiOiIifSx7Im5hbWUiOiJsZWFkVHlwZSIsInZhbHVlIjoiIn0seyJuYW1lIjoicGFnZUlEIiwidmFsdWUiOiIifSx7Im5hbWUiOiJjdXJyZW50VVJMIiwidmFsdWUiOiIifSx7Im5hbWUiOiJkb21haW4iLCJ2YWx1ZSI6ImRlc2phcmRpbnNhY3VyYS5jYSJ9LHsibmFtZSI6InJlZmVycmVyIiwidmFsdWUiOnJlZmVyYWxWYWx9LHsibmFtZSI6ImlzZXhwcmVzcyIsInZhbHVlIjoiIiwiY2xhc3MiOiJpc2V4cHJlc3MifSx7Im5hbWUiOiJpc3Byb21vIiwidmFsdWUiOiIifSx7Im5hbWUiOiJpc2hvbWVwYWdlIiwidmFsdWUiOiIifSx7Im5hbWUiOiJ0ZXN0bW9kZSIsInZhbHVlIjoiMCIsImNsYXNzIjoidGVzdG1vZGUifSx7Im5hbWUiOiJ0ZXh0Q2FyU2VjdGlvblR5cGUiLCJ2YWx1ZSI6c2VjdGlvblZhbH0seyJuYW1lIjoibGFuZyIsInZhbHVlIjoiRlJFTkNIIn0seyJuYW1lIjoiYnV0dG9uUG9zaXRpb24iLCJ2YWx1ZSI6IiJ9LHsibmFtZSI6ImRlYWxlck5hbWUiLCJ2YWx1ZSI6IiJ9LHsibmFtZSI6ImlzRnVsbFdpZHRoIiwidmFsdWUiOiIifSx7Im5hbWUiOiJpc01vYmlsZU5ld1ZEUCIsInZhbHVlIjoiIn0seyJuYW1lIjoiZnJvbUF1dG9BdWJhaW5lIiwidmFsdWUiOjB9XSk7Zm9yKHZhciBpPTA7aTxpbnB1dHMubGVuZ3RoO2krKyl7JCgnPGlucHV0IHR5cGU9ImhpZGRlbiIgLz4nKS5hdHRyKGlucHV0c1tpXSkuYXBwZW5kVG8oRm9ybSk7fQpGb3JtLmFwcGVuZFRvKCdib2R5Jyk7Rm9ybS5vbignc3VibWl0JyxvbkNvbmZpcm1TdWJtaXQpO30KaWYoJCgnI2d0cmFja0ZyYW1lJykubGVuZ3RoPDEpeyQoJzxpZnJhbWU+PC9pZnJhbWU+JykuYXR0cih7d2lkdGg6MSxoZWlnaHQ6MSxmcmFtZUJvcmRlcjowLGlkOidndHJhY2tGcmFtZScsbmFtZTonaWZyYW1lZ3RyYWNrJyxzdHlsZTond2lkdGg6MXB4O2hlaWdodDoxcHg7Jyx0aXRsZTonZnJhbWUnfSkuYXBwZW5kVG8oJyNjb25maXJtX2Zvcm1zJyk7fX0pO31jYXRjaChlenoxKXtpZihjb25zb2xlJiZjb25zb2xlLmxvZykKY29uc29sZS5sb2coZXp6MSk7fQp2YXIgaWRlbnRfMjAzMjU5ZDc3ZTQ0ZWY3Mzk4OWZjZDUyMDA2NGYwMWY7dHJ5e2pRdWVyeShmdW5jdGlvbigkKXskKCIjY29udGFjdHBvcHVwIikucG9wdXBpemUoeyJvbkFmdGVySW5pdGlhbGl6ZSI6ZnVuY3Rpb24oc2VsZil7Y29udGFjdFBvcHVwLnNldENvbmZpZyh7dHlwZTpzZWxmLnNldHRpbmdzLmZvcm0udHlwZX0pO2lmKHR5cGVvZiBwb3B1cERlZmF1bHRPbkFmdGVySW5pdGlhbGl6ZSE9InVuZGVmaW5lZCIpe3ZhciB0bXA9cG9wdXBEZWZhdWx0T25BZnRlckluaXRpYWxpemUoIm5ldyIsIiIranNfZDJjX2dldF92YWwoIjZqeXA0NjY0dmd3czgwdyIpKyIiLHRydWUsIiIsIiIranNfZDJjX2dldF92YWwoIjE2ZDd2d3Q2NnBtb3dvMGsiKSsiIiwiY29udGFjdHBvcHVwIix0cnVlKTtpZihmYWxzZSYmdG1wKXNlbGYuc2V0dGluZ3Muc2hvd29ubG9hZD0zMDtyZXR1cm4gdG1wO319LCJvbkJlZm9yZVNlbmRNYWlsIjpmdW5jdGlvbihzZWxmKXtjb250YWN0UG9wdXAub25CZWZvcmVTZW5kTWFpbCgpO30sImNvb2tpZUR1cmF0aW9uIjozMCwiY29va2llTmFtZSI6bnVsbCwiY29va2llQ3JlYXRlIjpudWxsLCJnb29nbGVUcmFja2luZyI6eyJpZFN1ZmZpeCI6IiIsImxhYmVsIjoiIiwibGFiZWxzZWN0aW9uIjoiIiwiaXNleHByZXNzIjowLCJpc3Byb21vIjowLCJpc2hvbWVwYWdlIjowLCJpc21vYmlsZSI6MH0sImZvcm0iOnsiZW1haWxpZCI6IkNvbnRhY3RVc1JlcXVlc3QiLCJzZW5kVG8iOm51bGwsInNlbmRUb0FERiI6bnVsbCwic2hvd0VtYWlsQ29uZmlybWF0aW9uIjp0cnVlLCJjb25maXJtYXRpb24iOnsidGl0bGUiOiJWb3RyZSBtZXNzYWdlIGEgYmllbiAmZWFjdXRlO3QmZWFjdXRlOyBlbnZveSZlYWN1dGU7ISIsImJvZHkiOiJNZXJjaSEgVW4gbWVtYnJlIGRlIG5vdHJlICZlYWN1dGU7cXVpcGUgdm91cyBjb250YWN0ZXJhIHNvdXMgcGV1LiJ9LCJ0eXBlIjoibmV3In0sInN0YXRlIjpbXSwidmVoaWNsZVN0YXRlIjoidXNlZCIsImNsb3NlT25TdWJtaXQiOnRydWUsImZpbGxmbGFnIjpmYWxzZSwibm90cmFuc2Zvcm0iOnRydWUsIm5hbWUiOmZhbHNlLCJhbmltYXRpb24iOiJmYWRlQW5kUG9wIiwiYW5pbWF0aW9uU3BlZWQiOjMwMCwiY2xvc2VPbkJhY2tncm91bmRDbGljayI6ZmFsc2UsImRpc21pc3NNb2RhbENsYXNzIjoiY2xvc2UtcmV2ZWFsLW1vZGFsIiwiY2xvc2VCdXR0b24iOnRydWUsImJ5cGFzc0NvbnNlbnQiOmZhbHNlLCJ0aHJlc2hvbGQiOmZhbHNlLCJ0aHJlc2hvbGRWYWx1ZSI6Ijc1Iiwic2Nyb2xsdXAiOmZhbHNlLCJtYWlucG9wdXAiOnRydWUsImNvdW50ZG93biI6MTc4NDM0NzIwMCwiY29uZmlybUZvcm0iOltdfSk7fSk7fWNhdGNoKGV6ejEpe2lmKGNvbnNvbGUmJmNvbnNvbGUubG9nKQpjb25zb2xlLmxvZyhlenoxKTt9CnZhciBpZGVudF8zZDc4NTQyNzQxMjVlYTY5YjAyNDU3NTY0NmE2OThkYzt0cnl7bWFpbFNlbnRIYW5kbGVyPWdldE1haWxTZW50SGFuZGxlcignX2NvbnRhY3Rwb3B1cCcpO31jYXRjaChlenoxKXtpZihjb25zb2xlJiZjb25zb2xlLmxvZykKY29uc29sZS5sb2coZXp6MSk7fQp2YXIgaWRlbnRfODJjNzg5ZWMxNGRlZTEzN2M3MjVkODc0Zjg0M2ZlYjQ7dHJ5e2pRdWVyeShmdW5jdGlvbigkKXskKCIjY3JlZGl0U2NvcmVQb3B1cENvbnRhaW5lciIpLnBvcHVwaXplKHsib25BZnRlcnN1Ym1pdCI6ZnVuY3Rpb24oc2VsZil7c2V0Q29va2llKCdjcmVkaXRTY29yZUVtYmVkZGVkRmlsbGVkJywxLDMwKTtpZih0eXBlb2YgZ1VzZWRTcnBBcHB6IT09J3VuZGVmaW5lZCcpe2dVc2VkU3JwQXBwei5maWx0ZXJJbnRlcmZhY2UuY2xlYXJQcm94eUNhY2hlQW5kUmVGZXRjaCgpO319LCJvbkFmdGVySW5pdGlhbGl6ZSI6ZnVuY3Rpb24oc2VsZil7KG5ldyBGb3JtKCkpLm1hc2tQaG9uZSgiI2NyZWRpdFNjb3JlUG9wdXBDb250YWluZXIgI2NyZWRpdFNjb3JlUGhvbmUiKTt2YXIgbGFuZz0kKCJib2R5IikuaGFzQ2xhc3MoIkVOR0xJU0giKT8iZW4iOiJmciI7dmFyIHN0YXJ0RGF0ZT1uZXcgRGF0ZSgpO3N0YXJ0RGF0ZS5zZXRGdWxsWWVhcihzdGFydERhdGUuZ2V0RnVsbFllYXIoKS0zMCk7dmFyIG1heERhdGU9bmV3IERhdGUoKTttYXhEYXRlLnNldEZ1bGxZZWFyKG1heERhdGUuZ2V0RnVsbFllYXIoKS0xOCk7dmFyIG1pbkRhdGU9bmV3IERhdGUoKTttaW5EYXRlLnNldEZ1bGxZZWFyKG1pbkRhdGUuZ2V0RnVsbFllYXIoKS0xMjApOyQoIi5jcmVkaXRTY29yZUJpcnRoZGF0ZSIpLm5lYkNhbCh7bWF4RGF0ZTptYXhEYXRlLmZvcm1hdCgieXl5eS1NTS1kZCIpLG1pbkRhdGU6bWluRGF0ZS5mb3JtYXQoInl5eXktTU0tZGQiKSxkZWZhdWx0RGF0ZTpzdGFydERhdGUuZm9ybWF0KCJ5eXl5LU1NLWRkIiksZm9ybWF0OiJkZCBNTU0geXl5eSIsZGVmYXVsdFZpZXc6ImRlY2FkZSJ9KTskKCcjY3JlZGl0U2NvcmVQb3B1cENvbnRhaW5lciBpbnB1dFtkYXRhLWdvb2dsZS1wbGFjZXMtY3VzdG9tPSJ0cnVlIl0nKS5nb29nbGVQbGFjZXMoKTt2YXIgcG9wdXBUeXBlPSJuZXciO2lmKHR5cGVvZiBwb3B1cERlZmF1bHRPbkFmdGVySW5pdGlhbGl6ZSE9InVuZGVmaW5lZCIpe3ZhciB0bXA9cG9wdXBEZWZhdWx0T25BZnRlckluaXRpYWxpemUoIm5ldyIsIiIranNfZDJjX2dldF92YWwoIjZqeXA0NjY0dmd3czgwdyIpKyIiLGZhbHNlLCIiLCIiK2pzX2QyY19nZXRfdmFsKCIxNmQ3dnd0NjZwbW93bzBrIikrIiIsImNyZWRpdFNjb3JlUG9wdXBDb250YWluZXIiLGZhbHNlKTtpZigwJiZ0bXApe3NlbGYuc2V0dGluZ3Muc2hvd29ubG9hZD0xMDt9CmVsc2V7c2VsZi5zZXR0aW5ncy5zaG93b25sb2FkPWZhbHNlO30KcmV0dXJuIHRtcDt9fSwiY29va2llRHVyYXRpb24iOjYwLCJjb29raWVOYW1lIjoiY3JlZGl0U2NvcmVTaG93biIsImNvb2tpZUNyZWF0ZSI6Im9uT3BlbiIsImdvb2dsZVRyYWNraW5nIjp7ImlkU3VmZml4IjoiIiwibGFiZWwiOiIiLCJsYWJlbHNlY3Rpb24iOiIiLCJpc2V4cHJlc3MiOjAsImlzcHJvbW8iOjAsImlzaG9tZXBhZ2UiOjAsImlzbW9iaWxlIjowfSwiZm9ybSI6eyJlbWFpbGlkIjoiQ3JlZGl0U2NvcmUiLCJvZmZlcnR5cGUiOiJDcmVkaXRTY29yZSIsIm5hbWUiOm51bGwsInNlbmRUbyI6IiIranNfZDJjX2dldF92YWwoIjEzZHF0c25jZDgxd2s4NDQiKSsiIiwic2VuZFRvQURGIjoiIitqc19kMmNfZ2V0X3ZhbCgiNWNjeWdrOTI1bWd3ZzAiKSsiIiwiT0tCdXR0b25DbGFzcyI6ImNyZWRpdFNjb3JlX2J0biIsIkNhbmNlbEJ1dHRvbkNsYXNzIjoiY2FuY2VsQnRuIiwic2hvd0VtYWlsQ29uZmlybWF0aW9uIjp0cnVlLCJmcm9tQUEiOmZhbHNlLCJjb25maXJtYXRpb24iOnsidGl0bGUiOiJWb3RyZSBkZW1hbmRlIGEgYmllbiAmZWFjdXRlO3QmZWFjdXRlOyBlbnZveSZlYWN1dGU7ZSEiLCJib2R5IjoiTWVyY2khIFVuIGNvbnNlaWxsZXIgY29tbXVuaXF1ZXJhIGF2ZWMgdm91cyBwb3VyIHZvdXMgZG9ubmVyIGxlcyBkJmVhY3V0ZTt0YWlscyBzdXIgdm90cmUgcG90ZW50aWVsIGRlIGNyJmVhY3V0ZTtkaXQuIiwibm9vdmVyd3JpdGUiOnRydWV9fSwic3RhdGUiOltdLCJ2ZWhpY2xlU3RhdGUiOiJ1c2VkIiwiY2xvc2VPblN1Ym1pdCI6dHJ1ZSwiZmlsbGZsYWciOmZhbHNlLCJub3RyYW5zZm9ybSI6dHJ1ZSwibmFtZSI6ZmFsc2UsImFuaW1hdGlvbiI6ImZhZGVBbmRQb3AiLCJhbmltYXRpb25TcGVlZCI6MzAwLCJjbG9zZU9uQmFja2dyb3VuZENsaWNrIjpmYWxzZSwiZGlzbWlzc01vZGFsQ2xhc3MiOiJjbG9zZS1yZXZlYWwtbW9kYWwiLCJjbG9zZUJ1dHRvbiI6dHJ1ZSwiYnlwYXNzQ29uc2VudCI6ZmFsc2UsInRocmVzaG9sZCI6ZmFsc2UsInRocmVzaG9sZFZhbHVlIjowLCJzY3JvbGx1cCI6ZmFsc2UsIm1haW5wb3B1cCI6ZmFsc2UsInNob3dvbmxvYWQiOmZhbHNlLCJjb3VudGRvd24iOjE3ODQzNDcyMDAsImNvbmZpcm1Gb3JtIjpbXX0pO30pO31jYXRjaChlenoxKXtpZihjb25zb2xlJiZjb25zb2xlLmxvZykKY29uc29sZS5sb2coZXp6MSk7fQp2YXIgaWRlbnRfZDY2ZjVkOTQ4NTk3NDJjNmE1MWY4YmFkOWMwZGZhZTA7dHJ5e21haWxTZW50SGFuZGxlcj1nZXRNYWlsU2VudEhhbmRsZXIoJ19jcmVkaXRTY29yZVBvcHVwQ29udGFpbmVyJyk7fWNhdGNoKGV6ejEpe2lmKGNvbnNvbGUmJmNvbnNvbGUubG9nKQpjb25zb2xlLmxvZyhlenoxKTt9CnZhciBpZGVudF9hYjQzYWFhYTQ2MjBmMjVmN2RmYmZhZmU3NThmZTBmZTt0cnl7alF1ZXJ5KGZ1bmN0aW9uKCQpeyQoIiNmaW5hbmNlTXVsdGlzdGVwUG9wdXBDb250YWluZXIiKS5wb3B1cGl6ZSh7Im9uQWZ0ZXJJbml0aWFsaXplIjpmdW5jdGlvbihzZWxmKXt2YXIgbXVsdGlzdGVwPWluaXRpYWxpemVGaW5hbmNlTXVsdGlTdGVwKHNlbGYudGFyZ2V0KTskKGRvY3VtZW50KS5vbignY3JlZGl0Lm11bHRpc3RlcHBvcHVwLnN0YXJ0JyxmdW5jdGlvbihlKXttdWx0aXN0ZXAuc3RhcnQoKTt9KTt9LCJjb29raWVEdXJhdGlvbiI6MzAsImNvb2tpZU5hbWUiOm51bGwsImNvb2tpZUNyZWF0ZSI6bnVsbCwiZ29vZ2xlVHJhY2tpbmciOnsiaWRTdWZmaXgiOiIiLCJsYWJlbCI6IiIsImxhYmVsc2VjdGlvbiI6IiIsImlzZXhwcmVzcyI6MCwiaXNwcm9tbyI6MCwiaXNob21lcGFnZSI6MCwiaXNtb2JpbGUiOjB9LCJmb3JtIjp7ImVtYWlsaWQiOiJDcmVkaXRNdWx0aXN0ZXBSZXF1ZXN0Iiwib2ZmZXJ0eXBlIjoiQ3JlZGl0TXVsdGlzdGVwUmVxdWVzdCIsIm5hbWUiOm51bGwsInNlbmRUbyI6IiIranNfZDJjX2dldF92YWwoIjEzZHF0c25jZDgxd2s4NDQiKSsiIiwic2VuZFRvQURGIjoiIitqc19kMmNfZ2V0X3ZhbCgiNWNjeWdrOTI1bWd3ZzAiKSsiIiwiT0tCdXR0b25DbGFzcyI6InN1Ym1pdEJ0biIsIkNhbmNlbEJ1dHRvbkNsYXNzIjoiY2FuY2VsQnRuIiwic2hvd0VtYWlsQ29uZmlybWF0aW9uIjpmYWxzZSwiZnJvbUFBIjpmYWxzZSwiY29uZmlybWF0aW9uIjp7InRpdGxlIjpudWxsLCJib2R5IjpudWxsfX0sInN0YXRlIjpbXSwidmVoaWNsZVN0YXRlIjoidXNlZCIsImNsb3NlT25TdWJtaXQiOnRydWUsImZpbGxmbGFnIjpmYWxzZSwibm90cmFuc2Zvcm0iOnRydWUsIm5hbWUiOmZhbHNlLCJhbmltYXRpb24iOiJmYWRlQW5kUG9wIiwiYW5pbWF0aW9uU3BlZWQiOjMwMCwiY2xvc2VPbkJhY2tncm91bmRDbGljayI6ZmFsc2UsImRpc21pc3NNb2RhbENsYXNzIjoiY2xvc2UtcmV2ZWFsLW1vZGFsIiwiY2xvc2VCdXR0b24iOnRydWUsImJ5cGFzc0NvbnNlbnQiOmZhbHNlLCJ0aHJlc2hvbGQiOmZhbHNlLCJ0aHJlc2hvbGRWYWx1ZSI6MCwic2Nyb2xsdXAiOmZhbHNlLCJtYWlucG9wdXAiOmZhbHNlLCJzaG93b25sb2FkIjpmYWxzZSwiY291bnRkb3duIjoxNzg0MzQ3MjAwLCJjb25maXJtRm9ybSI6W3sibmFtZSI6ImxhYmVsIiwidmFsdWUiOiIiLCJjbGFzcyI6ImxhYmVsZW1haWwifSx7Im5hbWUiOiJzZWN0aW9uIiwidmFsdWUiOiIiLCJjbGFzcyI6ImxhYmVsc2VjdGlvbiJ9LHsibmFtZSI6ImJyYW5kIiwidmFsdWUiOiIiK2pzX2QyY19nZXRfdmFsKCIxZXJpdjkwMHBkYTg4d3c4IikrIiIsImNsYXNzIjoiYnJhbmRlbWFpbCJ9LHsibmFtZSI6Im1vZGVsIiwidmFsdWUiOiIiK2pzX2QyY19nZXRfdmFsKCIxMHBhN3YzcWVsZGNvc2siKSsiIiwiY2xhc3MiOiJtb2RlbGVtYWlsIn0seyJuYW1lIjoieWVhciIsInZhbHVlIjoiIitqc19kMmNfZ2V0X3ZhbCgicjgyemZreGEyZHdzczAwIikrIiIsImNsYXNzIjoieWVhcmVtYWlsIn0seyJuYW1lIjoiZ29vZ2xlaWQiLCJ2YWx1ZSI6IiJ9LHsibmFtZSI6Imdvb2dsZWlkZDJjbWVkaWEiLCJ2YWx1ZSI6IiJ9LHsibmFtZSI6ImJpbmdjb25pZCIsInZhbHVlIjoiIn0seyJuYW1lIjoiYmluZ2FjdGlvbmlkIiwidmFsdWUiOiIifSx7Im5hbWUiOiJiaW5nZG9tYWluaWQiLCJ2YWx1ZSI6IiJ9LHsibmFtZSI6ImFkcm9sbEFkdiIsInZhbHVlIjoiIn0seyJuYW1lIjoiYWRyb2xsUGl4IiwidmFsdWUiOiIifSx7Im5hbWUiOiJmYWNlYm9va0NvbklkIiwidmFsdWUiOiIifSx7Im5hbWUiOiJkb21haW4iLCJ2YWx1ZSI6ImRlc2phcmRpbnNhY3VyYS5jYSJ9LHsibmFtZSI6InJlZmVycmVyIiwidmFsdWUiOiIiK2pzX2QyY19nZXRfdmFsKCJpM2dzYXhnczVqazh3Y2siKSsiIn0seyJuYW1lIjoiaXNleHByZXNzIiwidmFsdWUiOiIwIiwiY2xhc3MiOiJpc2V4cHJlc3MifSx7Im5hbWUiOiJpc3Byb21vIiwidmFsdWUiOiIwIn0seyJuYW1lIjoiaXNob21lcGFnZSIsInZhbHVlIjoiMCJ9LHsibmFtZSI6InRleHRDYXJTZWN0aW9uVHlwZSIsInZhbHVlIjoiIitqc19kMmNfZ2V0X3ZhbCgic283eXVxYWo0ZHdjYzhzIikrIiJ9LHsibmFtZSI6ImZyb21BQSIsInZhbHVlIjoiIn0seyJuYW1lIjoibGFuZyIsInZhbHVlIjoiRlJFTkNIIn1dfSk7fSk7fWNhdGNoKGV6ejEpe2lmKGNvbnNvbGUmJmNvbnNvbGUubG9nKQpjb25zb2xlLmxvZyhlenoxKTt9CnZhciBpZGVudF9mNGJlNThhMTFlZDhiZTUyYTIwYTA1MmFjOTkyMDY1MDt0cnl7alF1ZXJ5KGZ1bmN0aW9uKCQpeyQoIiNwYXltZW50Q2FsY3VsYXRvclBvcHVwQ29udGFpbmVyIikucG9wdXBpemUoeyJvbkJlZm9yZU9wZW4iOmZ1bmN0aW9uKHNlbGYpe2lmKHNlbGYuc2V0dGluZ3MuYWxyZWFkeUluaXQpe3NlbGYuc2V0dGluZ3MuYWxyZWFkeUluaXQ9ZmFsc2U7aWYoQ29va2llcy5nZXQoJ3BvcHVwRm9ybUZpbGxlZCcpPT0iMSIpeyQoIiNwYXltZW50Q2FsY3VsYXRvckNhbGxUb0FjdGlvbkNvbnRhaW5lciIpLmhpZGUoKTt9CnJldHVybiB0cnVlO30KaWYoIXNlbGYuc2V0dGluZ3Muc3R5bGVpZClyZXR1cm4gZmFsc2U7c2VsZi5zZXR0aW5ncy5pbml0aWFsU3R5bGVpZD1zZWxmLnNldHRpbmdzLnN0eWxlaWQ7aWYoJCgiLmJucF9wYXltZW50X2NvbnRhaW5lciIpLmxlbmd0aCl7c2VsZi5zZXR0aW5ncy5wYXltZW50T3B0aW9ucz1wYXJzZUludCgkKCIjb3B0aW9uUHJpY2VUb3RhbCIpLmh0bWwoKS5yZXBsYWNlKCIsIiwiIikpO30KZ2FUcmFjaygnYy5fdHJhY2tFdmVudCcsJ0NsaXF1ZXMgQ2FsY3VsYXRyaWNlJywnTmV1ZicsJ09wZW4nLDEpO3BheW1lbnRDYWxjdWxhdG9yUG9wdXBJbml0KCk7fSwib25DbG9zZSI6ZnVuY3Rpb24oc2VsZil7aWYoIXNlbGYuc2V0dGluZ3MuYWxyZWFkeUluaXQpe2dhVHJhY2soJ2MuX3RyYWNrRXZlbnQnLCdDbGlxdWVzIENhbGN1bGF0cmljZScsJ05ldWYnLCdDbG9zZScsMSk7fQppZigoKCQoJyN0YXJnZXRQYWdlJykudmFsKCl8fGZhbHNlKT09J05FV0NBUlMnfHwoJCgnI3RhcmdldFBhZ2UnKS52YWwoKXx8ZmFsc2UpPT0nVVNFRENBUlMnKSYmd2luZG93LnBheW1lbnRTZWxlY3RDaGFuZ2VkPT10cnVlKXtsb2NhdGlvbi5yZWxvYWQoKTt9fSwib25BZnRlckluaXRpYWxpemUiOmZ1bmN0aW9uKHNlbGYpe3BvcHVwQ2FsY3VsYXRvckluaXRpYWxpemVkKCk7fSwiY29va2llRHVyYXRpb24iOjMwLCJjb29raWVOYW1lIjpudWxsLCJjb29raWVDcmVhdGUiOm51bGwsImdvb2dsZVRyYWNraW5nIjp7ImlkU3VmZml4IjoiIiwibGFiZWwiOiIiLCJsYWJlbHNlY3Rpb24iOiIiLCJpc2V4cHJlc3MiOjAsImlzcHJvbW8iOjAsImlzaG9tZXBhZ2UiOjAsImlzbW9iaWxlIjowfSwiZm9ybSI6eyJlbWFpbGlkIjpudWxsLCJvZmZlcnR5cGUiOm51bGwsIm5hbWUiOm51bGwsInNlbmRUbyI6bnVsbCwic2VuZFRvQURGIjpudWxsLCJPS0J1dHRvbkNsYXNzIjoic3VibWl0QnRuIiwiQ2FuY2VsQnV0dG9uQ2xhc3MiOiJjYW5jZWxCdG4iLCJzaG93RW1haWxDb25maXJtYXRpb24iOmZhbHNlLCJmcm9tQUEiOmZhbHNlLCJjb25maXJtYXRpb24iOnsidGl0bGUiOm51bGwsImJvZHkiOm51bGx9fSwic3RhdGUiOltdLCJ2ZWhpY2xlU3RhdGUiOiJ1c2VkIiwiY2xvc2VPblN1Ym1pdCI6dHJ1ZSwiZmlsbGZsYWciOmZhbHNlLCJub3RyYW5zZm9ybSI6dHJ1ZSwibmFtZSI6ZmFsc2UsImFuaW1hdGlvbiI6ImZhZGVBbmRQb3AiLCJhbmltYXRpb25TcGVlZCI6MzAwLCJjbG9zZU9uQmFja2dyb3VuZENsaWNrIjpmYWxzZSwiZGlzbWlzc01vZGFsQ2xhc3MiOiJjbG9zZS1yZXZlYWwtbW9kYWwiLCJjbG9zZUJ1dHRvbiI6dHJ1ZSwiYnlwYXNzQ29uc2VudCI6ZmFsc2UsInRocmVzaG9sZCI6ZmFsc2UsInRocmVzaG9sZFZhbHVlIjpmYWxzZSwic2Nyb2xsdXAiOmZhbHNlLCJtYWlucG9wdXAiOmZhbHNlLCJzaG93b25sb2FkIjpmYWxzZSwiY291bnRkb3duIjoxNzg0MzQ3MjAwLCJjb25maXJtRm9ybSI6W3sibmFtZSI6ImxhYmVsIiwidmFsdWUiOiIiLCJjbGFzcyI6ImxhYmVsZW1haWwifSx7Im5hbWUiOiJzZWN0aW9uIiwidmFsdWUiOiIiLCJjbGFzcyI6ImxhYmVsc2VjdGlvbiJ9LHsibmFtZSI6ImJyYW5kIiwidmFsdWUiOiIiK2pzX2QyY19nZXRfdmFsKCIxZXJpdjkwMHBkYTg4d3c4IikrIiIsImNsYXNzIjoiYnJhbmRlbWFpbCJ9LHsibmFtZSI6Im1vZGVsIiwidmFsdWUiOiIiK2pzX2QyY19nZXRfdmFsKCIxMHBhN3YzcWVsZGNvc2siKSsiIiwiY2xhc3MiOiJtb2RlbGVtYWlsIn0seyJuYW1lIjoieWVhciIsInZhbHVlIjoiIitqc19kMmNfZ2V0X3ZhbCgicjgyemZreGEyZHdzczAwIikrIiIsImNsYXNzIjoieWVhcmVtYWlsIn0seyJuYW1lIjoiZ29vZ2xlaWQiLCJ2YWx1ZSI6IiJ9LHsibmFtZSI6Imdvb2dsZWlkZDJjbWVkaWEiLCJ2YWx1ZSI6IiJ9LHsibmFtZSI6ImJpbmdjb25pZCIsInZhbHVlIjoiIn0seyJuYW1lIjoiYmluZ2FjdGlvbmlkIiwidmFsdWUiOiIifSx7Im5hbWUiOiJiaW5nZG9tYWluaWQiLCJ2YWx1ZSI6IiJ9LHsibmFtZSI6ImFkcm9sbEFkdiIsInZhbHVlIjoiIn0seyJuYW1lIjoiYWRyb2xsUGl4IiwidmFsdWUiOiIifSx7Im5hbWUiOiJmYWNlYm9va0NvbklkIiwidmFsdWUiOiIifSx7Im5hbWUiOiJkb21haW4iLCJ2YWx1ZSI6ImRlc2phcmRpbnNhY3VyYS5jYSJ9LHsibmFtZSI6InJlZmVycmVyIiwidmFsdWUiOiIiK2pzX2QyY19nZXRfdmFsKCJpM2dzYXhnczVqazh3Y2siKSsiIn0seyJuYW1lIjoiaXNleHByZXNzIiwidmFsdWUiOiIwIiwiY2xhc3MiOiJpc2V4cHJlc3MifSx7Im5hbWUiOiJpc3Byb21vIiwidmFsdWUiOiIwIn0seyJuYW1lIjoiaXNob21lcGFnZSIsInZhbHVlIjoiMCJ9LHsibmFtZSI6InRleHRDYXJTZWN0aW9uVHlwZSIsInZhbHVlIjoiIitqc19kMmNfZ2V0X3ZhbCgic283eXVxYWo0ZHdjYzhzIikrIiJ9LHsibmFtZSI6ImZyb21BQSIsInZhbHVlIjoiIn0seyJuYW1lIjoibGFuZyIsInZhbHVlIjoiRlJFTkNIIn1dfSk7fSk7fWNhdGNoKGV6ejEpe2lmKGNvbnNvbGUmJmNvbnNvbGUubG9nKQpjb25zb2xlLmxvZyhlenoxKTt9OwovKiogL20vanMvc2tlbGV0b24uY29udHJvbGxlci5qcyAqKi8KdmFyIF9fX2QyY19za2VsZXRvbmNvbnRyb2xsZXJqc19jX29uPSIyMDI2LTA0LTAxIDExOjMwOjAyIjsndXNlIHN0cmljdCc7dHJ5e2pRdWVyeShmdW5jdGlvbihjKXtsZXQgaDtjb25zb2xlLmxvZygiR1NQRUVELUFGVEVSLUpRVUVSWToiKyhEYXRlLm5vdygpLShudWxsIT0oaD13aW5kb3cuZ1Rlc3RTcGVlZENvbm4pP2g6MCkpLzFFMyk7d2luZG93LmdSZXNvdXJjZUxvYWRlckFuZEpxdWVyeUlzUmVhZHk9ITA7c2V0VGltZW91dCgoKT0+e3ZhciBiPWMoIiNlbWJlZC1jb250YWluZXIteW91dHViZS1ob21lcGFnZS1ieWlkIik7Y29uc29sZS5sb2coIlNLRUxFVE9OfCNlbWJlZC1jb250YWluZXIteW91dHViZS1ob21lcGFnZS1ieWlkIik7aWYoYi5sZW5ndGgpe3ZhciBhPWIuYXR0cigiZGF0YS1pZnJhbWUtYXR0cmlidXRlcyIpOyJ1bmRlZmluZWQiIT09YSYmdm9pZCAwIT09YSYmKGE9SlNPTi5wYXJzZShhdG9iKGEpKSxjKCI8aWZyYW1lLz4iLGEpLmFwcGVuZFRvKGIpKX19LDdFMyk7c2V0VGltZW91dCgoKT0+e3ZhciBiPWMoIiNlbWJlZC1jb250YWluZXItbWFwcy1ob21lcGFnZS1ieWlkIik7CmNvbnNvbGUubG9nKCJTS0VMRVRPTnwjZW1iZWQtY29udGFpbmVyLW1hcHMtaG9tZXBhZ2UtYnlpZCIpO2lmKGIubGVuZ3RoKXt2YXIgYT1iLmF0dHIoImRhdGEtaWZyYW1lLWF0dHJpYnV0ZXMiKTsidW5kZWZpbmVkIiE9PWEmJnZvaWQgMCE9PWEmJihhPUpTT04ucGFyc2UoYXRvYihhKSksaW5qZWN0R29vZ2xlTWFwc0tleShmdW5jdGlvbihmKXthLnNyYz1hLnNyYy5yZXBsYWNlKCJfX0tFWV9fIixmKTtjKCI8aWZyYW1lLz4iLGEpLmFwcGVuZFRvKGIpfSkpfX0sN0UzKTt3aW5kb3cuZGVsYXllZENzcz1mdW5jdGlvbihiKXt2YXIgYT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdHlsZSIpO2EudHlwZT0idGV4dC9jc3MiO2Euc3R5bGVTaGVldD9hLnN0eWxlU2hlZXQuY3NzVGV4dD1iOmEuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoYikpO2NvbnNvbGUubG9nKCJTS0VMRVRPTnxERUxBWUVETE9BRENTU3wiK2IpO2RvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoYSl9Owp3aW5kb3cuZGVsYXllZENzcygiLmhpZGVPblByZUxvYWR7dmlzaWJpbGl0eTp2aXNpYmxlICFpbXBvcnRhbnQ7fSIpO3NldFRpbWVvdXQoKCk9Pntjb25zb2xlLmxvZygiU0tFTEVUT058c2V0dGluZyBtZW51IG11dGF0aW9uIG9ic2VydmVyIik7dHJ5e2NvbnN0IGE9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiLnNrZWxldG9uLnNrZWxldG9uLWRlc2t0b3Auc2tlbGV0b24tY29uZC0yIik7aWYobnVsbCE9PWEpe2NvbnN0IGY9bmV3IE11dGF0aW9uT2JzZXJ2ZXIoKGQsayk9Pntmb3IoY29uc3QgZSBvZiBkKSJhdHRyaWJ1dGVzIj09PWUudHlwZSYmImNsYXNzIj09PWUuYXR0cmlidXRlTmFtZSYmZS50YXJnZXQuY2xhc3NMaXN0LmNvbnRhaW5zKCJ1cF9tZW51IikmJihkPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi5za2VsZXRvbi5za2VsZXRvbi1kZXNrdG9wLnNrZWxldG9uLWNvbmQtMiIpLGUudGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucygiZml4ZWQiKT9kLmNsYXNzTGlzdC5jb250YWlucygiZml4ZWQiKXx8CmQuY2xhc3NMaXN0LmFkZCgiZml4ZWQiKTpkLmNsYXNzTGlzdC5jb250YWlucygiZml4ZWQiKSYmZC5jbGFzc0xpc3QucmVtb3ZlKCJmaXhlZCIpKX0pLGc9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiLnNrZWxldG9uLnNrZWxldG9uLWRlc2t0b3Auc2tlbGV0b24tY29uZC0yID4gLnVwX21lbnUiKTtnJiYoZi5vYnNlcnZlKGcse2F0dHJpYnV0ZXM6ITAsY2hpbGRMaXN0OiEwLHN1YnRyZWU6ITB9KSxnLmNsYXNzTGlzdC5jb250YWlucygiZml4ZWQiKSYmYS5jbGFzc0xpc3QuYWRkKCJmaXhlZCIpKX19Y2F0Y2goYSl7Y29uc29sZS5lcnJvcigiU0tFTEVUT058LnNrZWxldG9uLnNrZWxldG9uLWRlc2t0b3Auc2tlbGV0b24tY29uZC0yIixhKX1jb25zb2xlLmxvZygiU0tFTEVUT058aXMtbG9hZGVkLW5vdyIpO2NvbnN0IGI9YygiLnNrZWxldG9uIik7Yi5hZGRDbGFzcygiaXMtbG9hZGVkLW5vdyIpO3NldFRpbWVvdXQoKCk9Pntjb25zb2xlLmxvZygiU0tFTEVUT058cmVtb3Zpbmcgc2tlbGV0b25zIGZpcnN0IGltZyBiYWNrZ3JvdW5kIik7CmIuZmluZCgiaW1nLmlzLXNrZWxldG9uLWJnLWltZyIpLnJlbW92ZSgpfSwzPHdpbmRvdy5nU3BlZWRDb25uPzFFNDo2RTMpfSwyMDApfSl9Y2F0Y2goYyl7fTs=","menu_new":"","html":"Cgk8c3R5bGU+CgkJaHRtbCB7Zm9udC1zaXplOjEwMCU7fQoJCW1haW4gKiB7bWFyZ2luOmluaXRpYWw7fQoJCWZvb3RlciB7Y2xlYXI6IGJvdGg7fQoJPC9zdHlsZT4KCgk8ZGl2IGlkPSJkMmNfYm9keUNvbnRlbnQiIGNsYXNzPSJkMmMtZW1iZWRkZWQtY29udGVudC1tb2JpbGUiPgoKCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0iYWN0aXZlc2l0ZWxhbmd1YWdlIiB2YWx1ZT0iRlJFTkNIIi8+CgoJCTxpbnB1dAoJCQl0eXBlPSJoaWRkZW4iCgkJCWlkPSJkMmNEYXRhU3RvcmUiCgkJCWRhdGEtYmFzZXVybD0iaHR0cHM6Ly9kZXNqYXJkaW5zYWN1cmEuY2EiCgkJCWRhdGEtYm9keWNsYXNzPSIgaGVhZGluZ0NhcHNPbiBGUkVOQ0ggTmV3U3JwMiBOZXdTcnAyTW9iaWxlIgoJCQlkYXRhLWlzbW9iaWxlPSIxIgoJCT4KCgkJPHNjcmlwdCB0eXBlPSJhcHBsaWNhdGlvbi9sZCtqc29uIj4KICAgIHsiQGNvbnRleHQiOiJodHRwczpcL1wvc2NoZW1hLm9yZyIsIkB0eXBlIjoiV2ViU2l0ZSIsIm5hbWUiOiJEZXNqYXJkaW5zIEFjdXJhIiwidXJsIjoiaHR0cHM6XC9cL3d3dy5kZXNqYXJkaW5zYWN1cmEuY2FcLyIsInBvdGVudGlhbEFjdGlvbiI6eyJAdHlwZSI6IlNlYXJjaEFjdGlvbiIsInRhcmdldCI6Imh0dHBzOlwvXC93d3cuZGVzamFyZGluc2FjdXJhLmNhXC9vY2Nhc2lvblwvcmVjaGVyY2hlLmh0bWw\/cT17c2VhcmNoX3Rlcm1fc3RyaW5nfSIsInF1ZXJ5LWlucHV0IjoicmVxdWlyZWQgbmFtZT1zZWFyY2hfdGVybV9zdHJpbmcifX0KPC9zY3JpcHQ+PHNjcmlwdCB0eXBlPSJhcHBsaWNhdGlvbi9sZCtqc29uIj4KICAgIHsiQGNvbnRleHQiOiJodHRwczpcL1wvc2NoZW1hLm9yZyIsIkB0eXBlIjpbIkF1dG9EZWFsZXIiLCJBdXRvbW90aXZlQnVzaW5lc3MiXSwidXJsIjoiaHR0cHM6XC9cL3d3dy5kZXNqYXJkaW5zYWN1cmEuY2EiLCJuYW1lIjoiRGVzamFyZGlucyBBY3VyYSIsImltYWdlIjoiaHR0cHM6XC9cL3d3dy5kZXNqYXJkaW5zYWN1cmEuY2FcL2ltYWdlc1wvTG9nb01vYmlsZVwvYWN1cmEtZGVzamFyZGlucy5wbmciLCJsb2dvIjoiaHR0cHM6XC9cL3d3dy5kZXNqYXJkaW5zYWN1cmEuY2FcL2ltYWdlc1wvTG9nb01vYmlsZVwvYWN1cmEtZGVzamFyZGlucy5wbmciLCJzYW1lQXMiOlsiaHR0cHM6XC9cL3d3dy5mYWNlYm9vay5jb21cL2Rlc2phcmRpbnNhY3VyYVwvIiwiaHR0cHM6XC9cL3d3dy5saW5rZWRpbi5jb21cL2NvbXBhbnlcL2Rlc2phcmRpbnMtYWN1cmFcLyIsImh0dHBzOlwvXC93d3cuaW5zdGFncmFtLmNvbVwvZGVzamFyZGluc2FjdXJhXC8iXSwiZ2VvIjp7IkB0eXBlIjoiR2VvQ29vcmRpbmF0ZXMiLCJsYXRpdHVkZSI6IjQ1LjU4NTY2NDUwMDAiLCJsb25naXR1ZGUiOiItNzMuNTg5Njg2NzAwMCJ9LCJhZGRyZXNzIjp7IkB0eXBlIjoiUG9zdGFsQWRkcmVzcyIsInN0cmVldEFkZHJlc3MiOiI1NjI1IEJvdWwuIE1cdTAwZTl0cm9wb2xpdGFpbiBFc3QiLCJhZGRyZXNzTG9jYWxpdHkiOiJNb250clx1MDBlOWFsIiwiYWRkcmVzc1JlZ2lvbiI6IlF1ZWJlYyIsInBvc3RhbENvZGUiOiJIMVAgMVgzIiwiYWRkcmVzc0NvdW50cnkiOiJDQSJ9LCJ0ZWxlcGhvbmUiOiI1MTQtMzYyLTI4NzIiLCJwcmljZVJhbmdlIjoiNDM4NzAkLTcxMTc1JCIsIm9wZW5pbmdIb3Vyc1NwZWNpZmljYXRpb24iOlt7IkB0eXBlIjoiT3BlbmluZ0hvdXJzU3BlY2lmaWNhdGlvbiIsImRheU9mV2VlayI6Ik1vbmRheSIsIm9wZW5zIjoiMDk6MDAiLCJjbG9zZXMiOiIxOTozMCJ9LHsiQHR5cGUiOiJPcGVuaW5nSG91cnNTcGVjaWZpY2F0aW9uIiwiZGF5T2ZXZWVrIjoiVHVlc2RheSIsIm9wZW5zIjoiMDk6MDAiLCJjbG9zZXMiOiIxOTozMCJ9LHsiQHR5cGUiOiJPcGVuaW5nSG91cnNTcGVjaWZpY2F0aW9uIiwiZGF5T2ZXZWVrIjoiV2VkbmVzZGF5Iiwib3BlbnMiOiIwOTowMCIsImNsb3NlcyI6IjE5OjMwIn0seyJAdHlwZSI6Ik9wZW5pbmdIb3Vyc1NwZWNpZmljYXRpb24iLCJkYXlPZldlZWsiOiJUaHVyc2RheSIsIm9wZW5zIjoiMDk6MDAiLCJjbG9zZXMiOiIxOTozMCJ9LHsiQHR5cGUiOiJPcGVuaW5nSG91cnNTcGVjaWZpY2F0aW9uIiwiZGF5T2ZXZWVrIjoiRnJpZGF5Iiwib3BlbnMiOiIwOTowMCIsImNsb3NlcyI6IjE4OjAwIn1dfQo8L3NjcmlwdD48bGluayByZWw9Imljb24iIGhyZWY9Imh0dHBzOi8vZGVzamFyZGluc2FjdXJhLmNhL2ltYWdlcy9GYXZpY29uL0FjdXJhLUZhdmljb24uc3ZnIj48bGluayByZWw9ImFsdGVybmF0ZSIgaHJlZj0iaHR0cHM6Ly93d3cuZGVzamFyZGluc2FjdXJhLmNhL2VuZy8iIGhyZWZsYW5nPSJlbi1jYSI+PGxpbmsgcmVsPSJwcmVsb2FkIiBhcz0iaW1hZ2UiIGhyZWY9Imh0dHBzOi8vZGVzamFyZGluc2FjdXJhLmNhL2ltYWdlcy9Mb2dvTW9iaWxlL2FjdXJhLWRlc2phcmRpbnMud2VicCI+PGxpbmsgcmVsPSJwcmVsb2FkIiBocmVmPSIvL2ZvbnRzLmQyY21lZGlhLmNhL3dlYmZvbnRzL2Rlc2t0b3AtYXdlc29tZS93ZWJmb250cy9mYS1saWdodC0zMDAud29mZjIiIGFzPSJmb250IiB0eXBlPSJmb250L1dPRkYyIiBjcm9zc29yaWdpbj48bGluayByZWw9InByZWxvYWQiIGhyZWY9Ii8vZm9udHMuZDJjbWVkaWEuY2Evd2ViZm9udHMvZGVza3RvcC1hd2Vzb21lL3dlYmZvbnRzL2ZhLXNvbGlkLTkwMC53b2ZmMiIgYXM9ImZvbnQiIHR5cGU9ImZvbnQvV09GRjIiIGNyb3Nzb3JpZ2luPjxsaW5rIHJlbD0icHJlbG9hZCIgaHJlZj0iLy9mb250cy5kMmNtZWRpYS5jYS93ZWJmb250cy9kZXNrdG9wLWF3ZXNvbWUvd2ViZm9udHMvZmEtcmVndWxhci00MDAud29mZjIiIGFzPSJmb250IiB0eXBlPSJmb250L1dPRkYyIiBjcm9zc29yaWdpbj48bGluayByZWw9InByZWxvYWQiIGhyZWY9Ii8vZm9udHMuZDJjbWVkaWEuY2EvQWN1cmFCZXNwb2tlLVJlZ3VsYXIud29mZjIiIGFzPSJmb250IiB0eXBlPSJmb250L1dPRkYyIiBjcm9zc29yaWdpbj48bGluayByZWw9InByZWxvYWQiIGhyZWY9Ii8vZm9udHMuZDJjbWVkaWEuY2EvQWN1cmFCZXNwb2tlLUxpZ2h0LndvZmYyIiBhcz0iZm9udCIgdHlwZT0iZm9udC9XT0ZGMiIgY3Jvc3NvcmlnaW4+PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2Rlc2phcmRpbnNhY3VyYS5jYS9jc3Nfci9yZXNvdXJjZS5sb2FkZXIuZnIuY3NzP3Y9MyZhbXA7Y3NzcnBsPSZhbXA7d3N3aWR0aD0wJmFtcDtkZXZpY2U9bW9iaWxlJmFtcDt1YT1RME5DYjNRdk1pNHdJQ2hvZEhSd2N6b3ZMMk52YlcxdmJtTnlZWGRzTG05eVp5OW1ZWEV2S1E9PSI+PGxpbmsgcmVsPSJwcmVjb25uZWN0IiBocmVmPSJodHRwczovL2NhcmltYWdlcy5kMmNtZWRpYS5jYSIgY3Jvc3NvcmlnaW4+PGxpbmsgcmVsPSJwcmVjb25uZWN0IiBocmVmPSJodHRwczovL2ltYWdlc2Nkbi5kMmNtZWRpYS5jYSIgY3Jvc3NvcmlnaW4+PGxpbmsgcmVsPSJwcmVjb25uZWN0IiBocmVmPSJodHRwczovL2ZvbnRzLmQyY21lZGlhLmNhIiBjcm9zc29yaWdpbj48bGluayByZWw9ImNhbm9uaWNhbCIgaHJlZj0iaHR0cHM6Ly93d3cuZGVzamFyZGluc2FjdXJhLmNhL2VtYmVkZXIvcHJvY2Vzcy9mci9tIiBkYXRhLWNhbm9uaWNhbC1oZWFkZXItd2lkZ2V0PSIxIj48ZGl2IGlkPSJhc2NfZGlnaXRhbF9kYXRhX2luZm8iIGRhdGEtYW5hbHl0aWNzPSJnb29nbGVfYW5hbHl0aWNzXzQiPgoJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJ2ZWhpY2xlQ2F0ZWdvcnkiIHZhbHVlPSIiPgoJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJtYWtlIiB2YWx1ZT0iIj4KCQkJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ibW9kZWwiIHZhbHVlPSIiPgoJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJ5ZWFyIiB2YWx1ZT0iIj4KCQkJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0idmluIiB2YWx1ZT0iIj4KCQkJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0idHJpbSIgdmFsdWU9IiI+CgkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InByaWNlIiB2YWx1ZT0iIj4KCQkJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZXh0Y29sb3IiIHZhbHVlPSIiPgoJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJkYXRlX2xpc3RpbmciIHZhbHVlPSIiPgoJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJkMmFzY19pc0NlcnRpZmllZCIgdmFsdWU9IiI+CgkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InZlaGljbGVTdGF0dXMiIHZhbHVlPSIiPgoJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJkZWFsZXJDb2RlIiB2YWx1ZT0iMjA4NiI+CgkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InBhZ2VUeXBlIiB2YWx1ZT0iU2hvd3Jvb20iPgoJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJkZWFsZXJfbmFtZSIgdmFsdWU9IkRlc2phcmRpbnMgQWN1cmEiPgoJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJkZWFsZXJfYWRkcmVzcyIgdmFsdWU9IjU2MjUgQm91bC4gTcOpdHJvcG9saXRhaW4gRXN0LCBNb250csOpYWwsIE1vbnRyw6lhbCI+CgkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImRlYWxlcl9wb3N0YWwiIHZhbHVlPSJIMVAgMVgzIj4KCQk8L2Rpdj4KCQk8IS0tIE9POjo3YzBjNzM3ZGYzMzk0NmY4OWEzNGJhYmYyMzY5Y2MxOCAtLT4KPCEtLUVORF9SRU1PVkFCTEVfQ09ERV9CTE9DS19DT01NRU5UXzAwMDItLT4KCjwhLS1FTkRfUkVNT1ZBQkxFX0NPREVfQkxPQ0tfQ09NTUVOVF8wMDAxLS0+CjwhLS0gR2xvYmFsIHNpdGUgdGFnIChndGFnLmpzKSAtIEdvb2dsZSBBbmFseXRpY3MgLS0+Cgo8IS0tU1RBUlRfUkVNT1ZBQkxFX0NPREVfQkxPQ0tfQ09NTUVOVF8wMDAxLS0+CjxzY3JpcHQgYXN5bmMgc3JjPSJodHRwczovL3d3dy5nb29nbGV0YWdtYW5hZ2VyLmNvbS9ndGFnL2pzP2lkPUctTlMwVlczMjdGUCI+PC9zY3JpcHQ+CjwhLS1FTkRfUkVNT1ZBQkxFX0NPREVfQkxPQ0tfQ09NTUVOVF8wMDAxLS0+Cgo8IS0tICMjVk1KUzIjIyAtLT48IS0tIEdPIElEIC0tPgo8IS0tIEJJTkcgU0NSSVBUIC0tPgo8IS0tIE9POjo5ZmY1MTg5ODExYTk3NmQyMzgzYmI1NDQxN2ZhMGRlMiAtLT4KICAgICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiIGRhdGEtcmw9IjEiPgovKiogL2Nzcy9yb290LmNzcyAqKi8KOnJvb3R7IC0tcmF0aW86MS4xNTsgLS1zMDowOyAtLXMtOTpjYWxjKHZhcigtLXMtOCkgLyB2YXIoLS1yYXRpbykpOyAtLXMtODpjYWxjKHZhcigtLXMtNykgLyB2YXIoLS1yYXRpbykpOyAtLXMtNzpjYWxjKHZhcigtLXMtNikgLyB2YXIoLS1yYXRpbykpOyAtLXMtNjpjYWxjKHZhcigtLXMtNSkgLyB2YXIoLS1yYXRpbykpOyAtLXMtNTpjYWxjKHZhcigtLXMtNCkgLyB2YXIoLS1yYXRpbykpOyAtLXMtNDpjYWxjKHZhcigtLXMtMykgLyB2YXIoLS1yYXRpbykpOyAtLXMtMzpjYWxjKHZhcigtLXMtMikgLyB2YXIoLS1yYXRpbykpOyAtLXMtMjpjYWxjKHZhcigtLXMtMSkgLyB2YXIoLS1yYXRpbykpOyAtLXMtMTpjYWxjKHZhcigtLXMpIC8gdmFyKC0tcmF0aW8pKTsgLS1zOjAuNXJlbTsgLS1zMTpjYWxjKHZhcigtLXMpICogdmFyKC0tcmF0aW8pKTsgLS1zMjpjYWxjKHZhcigtLXMxKSAqIHZhcigtLXJhdGlvKSk7IC0tczM6Y2FsYyh2YXIoLS1zMikgKiB2YXIoLS1yYXRpbykpOyAtLXM0OmNhbGModmFyKC0tczMpICogdmFyKC0tcmF0aW8pKTsgLS1zNTpjYWxjKHZhcigtLXM0KSAqIHZhcigtLXJhdGlvKSk7IC0tczY6Y2FsYyh2YXIoLS1zNSkgKiB2YXIoLS1yYXRpbykpOyAtLXM3OmNhbGModmFyKC0tczYpICogdmFyKC0tcmF0aW8pKTsgLS1zODpjYWxjKHZhcigtLXM3KSAqIHZhcigtLXJhdGlvKSk7IC0tczk6Y2FsYyh2YXIoLS1zOCkgKiB2YXIoLS1yYXRpbykpOyAtLWZzLWJhc2U6MC44NzVyZW07IC0tZnM6dmFyKC0tZnMtYmFzZSk7IC0tZnMtOTpjYWxjKHZhcigtLWZzLTgpIC8gdmFyKC0tcmF0aW8pKTsgLS1mcy04IDpjYWxjKHZhcigtLWZzLTcpIC8gdmFyKC0tcmF0aW8pKTsgLS1mcy03IDpjYWxjKHZhcigtLWZzLTYpIC8gdmFyKC0tcmF0aW8pKTsgLS1mcy02IDpjYWxjKHZhcigtLWZzLTUpIC8gdmFyKC0tcmF0aW8pKTsgLS1mcy01IDpjYWxjKHZhcigtLWZzLTQpIC8gdmFyKC0tcmF0aW8pKTsgLS1mcy00IDpjYWxjKHZhcigtLWZzLTMpIC8gdmFyKC0tcmF0aW8pKTsgLS1mcy0zIDpjYWxjKHZhcigtLWZzLTIpIC8gdmFyKC0tcmF0aW8pKTsgLS1mcy0yIDpjYWxjKHZhcigtLWZzLTEpIC8gdmFyKC0tcmF0aW8pKTsgLS1mcy0xIDpjYWxjKHZhcigtLWZzMCkgLyB2YXIoLS1yYXRpbykpOyAtLWZzMCA6dmFyKC0tZnMtYmFzZSwgMC44NzVyZW0pOyAtLWZzMSA6Y2FsYyh2YXIoLS1mczApICogdmFyKC0tcmF0aW8pKTsgLS1mczIgOmNhbGModmFyKC0tZnMxKSAqIHZhcigtLXJhdGlvKSk7IC0tZnMzIDpjYWxjKHZhcigtLWZzMikgKiB2YXIoLS1yYXRpbykpOyAtLWZzNCA6Y2FsYyh2YXIoLS1mczMpICogdmFyKC0tcmF0aW8pKTsgLS1mczUgOmNhbGModmFyKC0tZnM0KSAqIHZhcigtLXJhdGlvKSk7IC0tZnM2IDpjYWxjKHZhcigtLWZzNSkgKiB2YXIoLS1yYXRpbykpOyAtLWZzNyA6Y2FsYyh2YXIoLS1mczYpICogdmFyKC0tcmF0aW8pKTsgLS1mczggOmNhbGModmFyKC0tZnM3KSAqIHZhcigtLXJhdGlvKSk7IC0tZnM5IDpjYWxjKHZhcigtLWZzOCkgKiB2YXIoLS1yYXRpbykpOyAtLWRlZmF1bHQtYmxhY2s6IzJjMmMyYzsgLS10YWItY29sb3Itc3BlY2lhbGNhc2U6IzAwMDAwMDsgLS10YWItY29sb3I6I2ZmZmZmZjsgLS10YWItdGV4dC1jb2xvcjojMmMyYzJjOyAtLXRhYi1jb2xvci1tb2I6IzJjMmMyYzsgLS10YWItdGV4dC1jb2xvci1tb2I6I2ZmZmZmZjsgLS10YWItY29sb3ItbW9iLWV4OiNmOWY5Zjk7IC0tdGFiLXRleHQtY29sb3ItbW9iLWV4OiMyYzJjMmM7IC0tbWVudS1jb2xvci1ib3JkZXI6I2VlZWVlZTsgLS1tZW51LWNvbG9yLW1vYjojZmZmZmZmOyAtLW1lbnUtdGV4dC1jb2xvci1tb2I6IzFlMjY0ZTsgLS1tZW51LWNvbG9yLW1vYi1leDojZjlmOWY5OyAtLW1lbnUtdGV4dC1jb2xvci1tb2ItZXg6IzJjMmMyYzsgLS1wcm9tby1jb2xvcjojMzM0Yzk2OyAtLXByb21vLXRleHQtY29sb3I6I2ZmZmZmZjsgLS1uZXdzcnAtbW9kZWwtY29sb3I6IzJjMmMyYzsgLS1mb290ZXItbGluay10aXRsZS1jb2w6IzJjMmMyYzsgLS1mb290ZXItaXRlbXMtbGluay1jb2xvcjojNzA3MDcwOyAtLWZvb3Rlci1jb25kaXRpb25zLWNvbG9yOiM3MDcwNzA7IC0tZm9vdGVyLWJnLWNvbG9yOiNmOWY5Zjk7IC0tZ2VuZXJhbC1iZy1jb2xvcjojZmZmZmZmOyAtLXRvcC1wcm9tby1idG4tdHh0OiNmZmZmZmY7IC0tdG9wLXByb21vLWJ0bi1iZzojMzM0Yzk2OyAtLXByb21vLWJ0bi1jb2xvcjojMzM0Yzk2OyAtLXByb21vLWJ0bi10ZXh0LWNvbG9yOiNmZmZmZmY7IC0tcHJvbW8tYnRuLWhvdmVyLWJnLWNvbG9yOiMzMzRjOTY7IC0tcHJvbW8tYnRuLWhvdmVyLXRleHQtY29sb3I6I2ZmZmZmZjsgLS1wcm9tby1idG4tYm9yZGVyLXJhZGl1czozcHg7IC0taG9tZS1iZy1jb2xvcjojZmZmZmZmOyAtLWZvcm0tdGl0bGUtY29sb3I6IzI0MjQyNDsgLS1idXNpbmVzcy1kZXNjLXR4dC1jb2xvcjojMmMyYzJjOyAtLWJ1c2luZXNzLWRlc2MtYmctY29sb3I6I2VlZWVlZTsgLS1idXNpbmVzcy1kZXNjLXR4dC1jb2xvcl9tb2I6IzJjMmMyYzsgLS1idXNpbmVzcy1kZXNjLWJnLWNvbG9yX21vYjojZWVlZWVlOyAtLXVzZWQtc2xpZGVyLWJnOiNmZmZmZmY7IC0tdXNlZC1zbGlkZXItdHh0OiMwMDAwMDA7IC0tdXNlZC1zbGlkZXItcHJpY2U6IzMzNGM5NjsgLS1uZXctc2xpZGVyLWJnOiNmZmZmZmY7IC0tbmV3LXZkcC1iZXN0cHJpY2UtYnRuLWJnLWNvbG9yOiMzMzRjOTY7IC0tbmV3LXZkcC1iZXN0cHJpY2UtYnRuLXRleHQtY29sb3I6I2ZmZmZmZjsgLS1kZWFsZXItbmFtZS1jb2xvcjojMmMyYzJjOyAtLW5ld3MtYmctY29sb3I6I2VlZWVlZTsgLS1uZXdzLXRleHQtY29sb3I6IzJjMmMyYzsgLS1leGl0LXBvcHVwLWJnY29sOiMzMzRjOTY7IC0tdXNlZC1vZmZlci1idG4tdGV4dC1jb2xvcjojZmZmZmZmOyAtLXVzZWQtb2ZmZXItYnRuLWJnLWNvbG9yOiMwMDAwMDA7IC0tZmluYW5jZS1idG4tdGV4dC1jb2xvcjojZmZmZmZmOyAtLWZpbmFuY2UtYnRuLWJnLWNvbG9yOiMzMzRjOTY7IC0tZmluYW5jZS1idG4tdGV4dC1jb2xvci1uZXdpbnY6I2ZmZmZmZjsgLS1maW5hbmNlLWJ0bi1iZy1jb2xvci1uZXdpbnY6IzMzNGM5NjsgLS1tZW51LWhvdmVyLXRleHQtY29sb3I6IzJjMmMyYzsgLS1tZW51LWhvdmVyLWJnLWNvbG9yOiNlZWVlZWU7IC0tbWVudS1iZy1jb2xvcjpyZ2IoMjU1LDI1NSwyNTUpOyAtLW1haW4tbWVudS1iZy1jb2xvcjpyZ2IoMjU1LDI1NSwyNTUpOyAtLWRlYWxlci1hZGRyZXNzLWNvbG9yOiMyYzJjMmM7IC0tZGVhbGVyLWFkZHJlc3MtZm9udC1zaXplOjE0OyAtLXdoaXRlOiNmZmY7IC0tbGlnaHQ6I2Y2ZjZmNjsgLS1saWdodC1ncmF5OiNlZmVmZWY7IC0tbWlkLWdyYXk6I2RkZDsgLS1ncmF5OiM5OTk7IC0tY250ci1ncmF5OiM3Njc2NzY7IC0tZGFyay1ncmF5OiM2NjY7IC0tYmxhY2stZ3JheTojMzMzOyAtLWJsYWNrOiMwMDA7IC0tcmVkOiNmZjAwMDA7IC0tYm9yZGVyLXRoaW46MXB4OyAtLWJvcmRlci10aGljazoycHg7IC0tdHh0LXVwcGVyOnVwcGVyY2FzZTsgLS1mb250LW1lbnU6QWN1cmFCZXNwb2tlOyAtLWZvbnQtbWVudS1tb2I6QWN1cmFCZXNwb2tlOyAtLWZvbnQtbWVudS13ZWlnaHQ6NDAwOyAtLWZvbnQtaDE6QWN1cmFCZXNwb2tlQm9vazsgLS1mb250LWgxLW1vYjpBY3VyYUJlc3Bva2VCb29rOyAtLWZvbnQtaDEtd2VpZ2h0OjQwMDsgLS1mb250LWgyOkFjdXJhQmVzcG9rZTsgLS1mb250LWgyLW1vYjpBY3VyYUJlc3Bva2U7IC0tZm9udC1oMi13ZWlnaHQ6NDAwOyAtLWZvbnQtdGV4dDpBY3VyYUJlc3Bva2U7IC0tZm9udC10ZXh0LW1vYjpBY3VyYUJlc3Bva2U7IC0tZm9udC10ZXh0LXdlaWdodDo0MDA7IC0tZm9udC1idXR0b25zOkFjdXJhQmVzcG9rZTsgLS1mb250LWJ1dHRvbnMtbW9iOkFjdXJhQmVzcG9rZTsgLS1mb250LWJ1dHRvbnMtd2VpZ2h0OjQwMDsgLS1jb3JuZXItcmliYm9uLWJnLWNvbG9yOiMzMzRjOTY7IC0tY29ybmVyLXJpYmJvbi10ZXh0LWNvbG9yOiNmZmZmZmY7IC0taG9tZXBhZ2UtbWVudS1pdGVtLWNvbG9yOiNmZmZmZmY7IC0taG9tZXBhZ2UtaGVhZGVyLWl0ZW0tY29sb3I6I2ZmZmZmZjsgLS1ob21lcGFnZS1iYW5uZXItc2VhcmNoLWJhci12aWRlby1vcGFjaXR5OjMwOyAtLWhvbWVwYWdlLXNvY2lhbC1iZy1jb2xvcjojZmZmZmZmOyAtLWhvbWVwYWdlLXNvY2lhbC10ZXh0LWNvbG9yOiMwMDAwMDA7IC0taG9tZXBhZ2Utc29jaWFsLWxvZ28tY29sb3I6IzE4NzdmMjsgLS1wcm9tb3Rpb24tYmFja2dyb3VuZC1jb2xvcjojZmVmZWZlOyAtLXByb21vdGlvbi10ZXh0LWNvbG9yOiMyYzJjMmM7IC0tdW5kZXJiYW5uZXJfc2VhcmNoX2Jhcl9iZzojZWVlZWVlOyAtLXVuZGVyYmFubmVyX3NlYXJjaF9iYXJfY29sb3I6IzMzNGM5NjsgLS11bmRlcmJhbm5lcl9zZWFyY2hfYmFyX2J0bl9iZzojMzM0Yzk2OyAtLXVuZGVyYmFubmVyX3NlYXJjaF9iYXJfYnRuX2NvbG9yOiNmZmZmZmY7IC0tbmV3dmRwLWJlc3RwcmljZS10ZXh0LWNvbG9yLXByaWNlOiMzMzRjOTY7IC0tYWRtaW4tc29jaWFsLWN1c3RvbS1jb2xvci1waWNrZXItdGV4dDojMDAwMDAwOyAtLWFkbWluLWdlbmVyYWwtaGVhZGVyLWJnLWNvbG9yOiNmZmZmZmY7IC0tYWRtaW4tZ2VuZXJhbC10ZXh0LXVzLWRlYWxlci1saW5lLXRleHQtY29sb3I6I2ZmZmZmZjsgLS1hZG1pbi1nZW5lcmFsLXRleHQtdXMtZGVhbGVyLWxpbmUtYmctY29sb3I6IzFlMjY0ZTsgLS10cmFkZWluYmFyLWJ0bi1iZzojMzM0Yzk2OyAtLXRyYWRlaW5iYXItYnRuLWNvbG9yOiNmZmZmZmY7IC0tZGVmYXVsdC1ibGFjay10ZXh0OiMyYzJjMmM7IC0tcHJvbW8tYnRuLWJnLWNvbG9yOiMzMzRjOTY7IC0tdHJhZGVpbmJhci1iZzojZWVlZWVlOyAtLXRyYWRlaW5iYXItY29sb3I6IzMzNGM5NjsgLS1sYW5ndWFnZS1idG4tYWN0aXZlLWJnLWNvbG9yOiMwMDAwMDA7IC0taGVhZGVyLXNlcnZpY2UtYXBwb2ludG1lbnQtdGV4dC1jb2xvci1iZzojMzM0Yzk2OyAtLWhlYWRlci1zZXJ2aWNlLWFwcG9pbnRtZW50LXRleHQtY29sb3I6I2ZmZmZmZjsgLS1hZG1pbi1nZW5lcmFsLWFsZXJ0LWJhci10ZXh0LWNvbG9yOiNmZmZmZmY7IC0tdG9wLXByb21vLWJ0bi10eHQtY29sb3I6cmdiKDQ0LDQ0LDQ0KTsgLS10b3AtcHJvbW8tYnRuLWJnLWNvbG9yOiNGRkZGRkY7IC0tbmV3LXZlaGljbGUtY2Fyb3VzZWwtdHh0LWNvbG9yOiMyYzJjMmM7IC0tZGlnaXRhbC1yZXRhaWxpbmctZHJhd2VyLXdpZHRoOjkwJSU7IH0gKiB7IGJvcmRlci1jb2xvcjppbmhlcml0OyBib3JkZXItc3R5bGU6c29saWQ7IGJvcmRlci13aWR0aDowOyBmb250LWZhbWlseTppbmhlcml0OyBsaW5lLWhlaWdodDoxLjJlbTsgfSBvbCwgdWwsIG1lbnUgeyBsaXN0LXN0eWxlOm5vbmU7IG1hcmdpbjowOyBwYWRkaW5nOjA7IH0gYSB7IHRleHQtZGVjb3JhdGlvbjpub25lOyBjb2xvcjppbmhlcml0OyB9IGgxLGgyLGgzLGg0LGg1LGg2LCBwIHsgbWFyZ2luOjA7IH0gaDEsaDIsaDMsaDQsaDUsaDZ7IGZvbnQtc2l6ZTppbmhlcml0OyBmb250LXdlaWdodDppbmhlcml0OyB9IGltZyB7IG1heC13aWR0aDoxMDAlOyB9IHRhYmxlIHsgYm9yZGVyLWNvbGxhcHNlOmNvbGxhcHNlOyB9IHRleHRhcmVhIHsgd2hpdGUtc3BhY2U6cmV2ZXJ0OyB9IDp3aGVyZShbaGlkZGVuXSl7IGRpc3BsYXk6bm9uZSAhaW1wb3J0YW50OyB9IDp3aGVyZShbY29udGVudGVkaXRhYmxlXSl7IC1tb3otdXNlci1tb2RpZnk6cmVhZC13cml0ZTsgLXdlYmtpdC11c2VyLW1vZGlmeTpyZWFkLXdyaXRlOyBvdmVyZmxvdy13cmFwOmJyZWFrLXdvcmQ7IGxpbmUtYnJlYWs6YWZ0ZXItd2hpdGUtc3BhY2U7IC13ZWJraXQtbGluZS1icmVhazphZnRlci13aGl0ZS1zcGFjZTsgfSA6d2hlcmUoW2RyYWdnYWJsZT0idHJ1ZSJdKSB7IC13ZWJraXQtdXNlci1kcmFnOmVsZW1lbnQ7IH0gI0FmdGVyQ2Fyb3VzZWwgPiAuY29udGFpbmVyLCAjaG9tZXBhZ2UtY29udGVudCA+IC5jb250YWluZXIsICNob21lX0FmdGVyQWN0aW9uQm94ID4gLmNvbnRhaW5lciwgI2hvbWVfQWZ0ZXJEaXNwbGF5VmVoaWNsZSA+IC5jb250YWluZXIgeyBtYXgtd2lkdGg6MTIwMHB4OyBtYXJnaW4tbGVmdDphdXRvOyBtYXJnaW4tcmlnaHQ6YXV0bzsgfSAjQWZ0ZXJDYXJvdXNlbCA+IC5jb250YWluZXI6aGFzKC5BZnRlckNhcm91c2VsRncpLCAjaG9tZV9BZnRlckFjdGlvbkJveCA+IC5jb250YWluZXI6aGFzKC5BZnRlckNhcm91c2VsRncpLCAjaG9tZV9BZnRlckRpc3BsYXlWZWhpY2xlID4gLmNvbnRhaW5lcjpoYXMoLkFmdGVyQ2Fyb3VzZWxGdyksICNob21lX0FmdGVyRGlzcGxheVZlaGljbGUgPiAuY29udGFpbmVyOmhhcyguZW1iZWQtY29udGFpbmVyLXlvdXR1YmUpIHsgbWF4LXdpZHRoOm5vbmU7IHBhZGRpbmctbGVmdDowOyBwYWRkaW5nLXJpZ2h0OjA7IH0gYm9keS5oYXMtZDJjYm90ICNBZnRlckNhcm91c2VsIC5jb250YWluZXIsIGJvZHkuaGFzLWQyY2JvdCAjaG9tZXBhZ2UtY29udGVudCAuY29udGFpbmVyLCBib2R5Lmhhcy1kMmNib3QgI2hvbWVfQWZ0ZXJBY3Rpb25Cb3ggLmNvbnRhaW5lciwgYm9keS5oYXMtZDJjYm90ICNob21lX0FmdGVyRGlzcGxheVZlaGljbGUgLmNvbnRhaW5lciB7IG1heC13aWR0aDpub25lICFpbXBvcnRhbnQ7IHBhZGRpbmctbGVmdDowICFpbXBvcnRhbnQ7IHBhZGRpbmctcmlnaHQ6MCAhaW1wb3J0YW50OyB9IC5yZXNwb25zaXZlLWVkaXRvciAuY29udGFpbmVyLWZsdWlkeyBvdmVyZmxvdy14OmhpZGRlbjsgfSAucmVzcG9uc2l2ZS1lZGl0b3IgLmNvbnRhaW5lci1mbHVpZCAqIHsgbGluZS1oZWlnaHQ6aW5pdGlhbDsgfSAuY2tlZGl0b3JXcmFwcGVyeyBvdmVyZmxvdy14OmhpZGRlbjsgc2Nyb2xsYmFyLXdpZHRoOm5vbmU7IH0gKiB7IGZvbnQtdmFyaWFudC1udW1lcmljOmxpbmluZy1udW1zOyB9Ci8qKiAvY3NzL3YyL25hdi5jc3MgKiovCmhlYWRlci5tb2JpbGUtaGVhZGVyeyAtLXR4dC1jb2xvcjp2YXIoLS1tZW51LXRleHQtY29sb3ItbW9iLCB2YXIoLS10YWItdGV4dC1jb2xvcikpOyBwb3NpdGlvbjpzdGlja3k7IHRvcDowOyB3aWR0aDoxMDB2dzsgaGVpZ2h0OjMuMnJlbTsgYm94LXNoYWRvdzpyZ2JhKDAsIDAsIDAsIDAuNSkgMCAwIDVweCAzcHg7IGJhY2tncm91bmQtY29sb3I6dmFyKC0tbWVudS1jb2xvci1tb2IsIHZhcigtLXRhYi1jb2xvcikpOyBjb2xvcjp2YXIoLS10eHQtY29sb3IpOyB6LWluZGV4OjEwMDA7IH0gZGl2Lm1vYmlsZS1oZWFkZXItc3BhY2VyeyBwb3NpdGlvbjpyZWxhdGl2ZTsgd2lkdGg6MTAwdnc7IGhlaWdodDozLjJyZW07IGRpc3BsYXk6YmxvY2s7IH0gaGVhZGVyLm1vYmlsZS1oZWFkZXIgPiAqICsgKiB7IGRpc3BsYXk6ZmxleDsganVzdGlmeS1jb250ZW50OmNlbnRlcjsgYWxpZ24taXRlbXM6Y2VudGVyOyBoZWlnaHQ6MTAwJTsgfSBoZWFkZXIubW9iaWxlLWhlYWRlci50YWxsID4gKiArICp7IGJvcmRlci1sZWZ0OjFweCBzb2xpZCAjZGRkOyBmbGV4OjEgMSBhdXRvOyB9IGhlYWRlciAubG9nby1hY3Rpb24gfiAqIHsgbWluLXdpZHRoOjIuNXJlbTsgfSAuaGVhZGVyLWRlYWxlci1uYW1lIHsgY29sb3I6aW5oZXJpdDsgZm9udC1zaXplOnZhcigtLWZzLTEpOyAtLWZzOnZhcigtLWZzLTEpOyB9IGhlYWRlciBhc2lkZXsgLS10eHQtY29sb3I6dmFyKC0tbWVudS10ZXh0LWNvbG9yLW1vYiwgdmFyKC0tdGFiLXRleHQtY29sb3IpKTsgcG9zaXRpb246YWJzb2x1dGU7IHRvcDoyLjk1cmVtOyBsZWZ0Oi0xOXJlbTsgd2lkdGg6bWluKDgwdncsIDE5cmVtKTsgbWluLWhlaWdodDoxMDB2aDsgZm9udC1zaXplOnZhcigtLWZzKTsgdHJhbnNpdGlvbjp0cmFuc2Zvcm0gMzAwbXMgZWFzZS1pbjsgYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1tZW51LWNvbG9yLW1vYiwgdmFyKC0tdGFiLWNvbG9yKSk7IGNvbG9yOnZhcigtLW1lbnUtdGV4dC1jb2xvcik7IG1heC1oZWlnaHQ6MTAwdmg7IG92ZXJmbG93OmF1dG87IHotaW5kZXg6MTAwOyB9IG5hdnsgLS1mczp2YXIoLS1mczEpOyBmb250LXNpemU6dmFyKC0tZnMpOyB9IG5hdiAubWVudS1pdGVtLCBuYXYgLnN1Ym1lbnUtaXRlbSB7IHBhZGRpbmc6dmFyKC0tcyk7IH0gbmF2IC5tZW51LWl0ZW17IGFsaWduLWl0ZW1zOmNlbnRlcjsgfSBuYXYgLm1lbnUtaXRlbS5pbnZlcnNlLWNvbG9yeyBjb2xvcjp2YXIoLS1tZW51LWhvdmVyLXRleHQtY29sb3IpOyBiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLW1lbnUtaG92ZXItYmctY29sb3IpOyB9IG5hdiAuc3VibWVudS1pdGVteyBib3JkZXItY29sb3I6dmFyKC0tZ3JheSk7IGJhY2tncm91bmQtY29sb3I6dmFyKC0tbWVudS1jb2xvci1tb2ItZXgsIHZhcigtLXRhYi1jb2xvcikpOyBjb2xvcjp2YXIoLS1tZW51LXRleHQtY29sb3ItbW9iLWV4KTsgfSBuYXYgLnN1Ym1lbnUtaXRlbSBzdmcuaWNvbiB7IGZpbGw6dmFyKC0tdGFiLXRleHQtY29sb3ItbW9iLWV4LCB2YXIoLS10YWItdGV4dC1jb2xvcikpOyB9IG5hdiAubWVudS1ncm91cCB7IGJvcmRlci10b3Atd2lkdGg6dmFyKC0tYm9yZGVyLXRoaW4pOyB9IG5hdiAubWVudS1ncm91cCB+IC5tZW51LWdyb3VwIHsgYm9yZGVyLXRvcC13aWR0aDowOyB9IG5hdiAubWVudUNvbGxwYXNlIHN2Z3sgdHJhbnNmb3JtOnJvdGF0ZSgxODBkZWcpOyB9ICNob21lbmF2IG5hdnsgLS10eHQtY29sb3I6dmFyKC0tdGFiLXRleHQtY29sb3ItbW9iLCB2YXIoLS10YWItdGV4dC1jb2xvcikpOyB9ICNob21lbmF2IG5hdiAubWVudS1pdGVteyBiYWNrZ3JvdW5kOnZhcigtLXRhYi1jb2xvci1tb2IsIHZhcigtLXRhYi1jb2xvcikpOyBjb2xvcjp2YXIoLS10YWItdGV4dC1jb2xvci1tb2IsIHZhcigtLXRhYi10ZXh0LWNvbG9yKSk7IH0gI2hvbWVuYXYgbmF2IC5tZW51LWl0ZW0uaW52ZXJzZS1jb2xvcnsgY29sb3I6dmFyKC0tbWVudS1ob3Zlci10ZXh0LWNvbG9yKTsgYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1tZW51LWhvdmVyLWJnLWNvbG9yKTsgfSAjaG9tZW5hdiBuYXYgLnN1Ym1lbnUtaXRlbXsgYmFja2dyb3VuZC1jb2xvcjp2YXIoLS10YWItY29sb3ItbW9iLWV4LCB2YXIoLS10YWItY29sb3IpKTsgY29sb3I6dmFyKC0tdGFiLXRleHQtY29sb3ItbW9iLWV4LCB2YXIoLS10YWItdGV4dC1jb2xvcikpOyB9ICNob21lbmF2IG5hdiBsaXsgcGFkZGluZy10b3A6dmFyKC0tcy04KTsgfSAjaG9tZW5hdiBuYXYgLm1lbnUtaXRlbXsgYm9yZGVyLXJhZGl1czowLjI1cmVtOyB9ICNob21lbmF2IG5hdiAubWVudS1pdGVtLkxBTkdVQUdFeyBkaXNwbGF5Om5vbmU7IH0gLmJ1cmdlci1tZW51LWNvbnRhaW5lcnsgcG9zaXRpb246cmVsYXRpdmU7IH0gLmJ1cmdlcl90b3AgeyB0cmFuc2Zvcm0tb3JpZ2luOjAgNTAlOyB9IC5idXJnZXJfYm90dG9tIHsgdHJhbnNmb3JtLW9yaWdpbjowIDUwJTsgfSAuYnVyZ2VyLW1lbnUtYnV0dG9uID4gc3BhbiB7IHdpZHRoOjEuNnJlbTsgaGVpZ2h0OjAuMjVyZW07IGJhY2tncm91bmQtY29sb3I6dmFyKC0tbWVudS10ZXh0LWNvbG9yLW1vYik7IGJvcmRlci1yYWRpdXM6MC4yNXJlbTsgdHJhbnNpdGlvbjp0cmFuc2Zvcm0gMC40cyBlYXNlOyB6LWluZGV4OjEwMTsgfSAjYm1fdG9nZ2xlOmNoZWNrZWQgfiAuYnVyZ2VyLW1lbnUtYnV0dG9uIC5idXJnZXJfdG9wLCAjYm1fYm90dG9tX3RvZ2dsZTpjaGVja2VkIH4gLmJ1cmdlci1tZW51LWJ1dHRvbiAuYnVyZ2VyX3RvcHsgb3BhY2l0eToxOyB0cmFuc2Zvcm06cm90YXRlKDQ1ZGVnKSB0cmFuc2xhdGUoMC4xcmVtLCAwKTsgfSAjYm1fdG9nZ2xlOmNoZWNrZWQgfiAuYnVyZ2VyLW1lbnUtYnV0dG9uIC5idXJnZXJfbWlkZGxlLCAjYm1fYm90dG9tX3RvZ2dsZTpjaGVja2VkIH4gLmJ1cmdlci1tZW51LWJ1dHRvbiAuYnVyZ2VyX21pZGRsZXsgb3BhY2l0eTowOyB0cmFuc2Zvcm06cm90YXRlKDBkZWcpIHNjYWxlKDAuMiwgMC4yKTsgfSAjYm1fdG9nZ2xlOmNoZWNrZWQgfiAuYnVyZ2VyLW1lbnUtYnV0dG9uIC5idXJnZXJfYm90dG9tLCAjYm1fYm90dG9tX3RvZ2dsZTpjaGVja2VkIH4gLmJ1cmdlci1tZW51LWJ1dHRvbiAuYnVyZ2VyX2JvdHRvbXsgb3BhY2l0eToxOyB0cmFuc2Zvcm06cm90YXRlKC00NWRlZykgdHJhbnNsYXRlKDAuMXJlbSwgMCk7IH0gI2JtX3RvZ2dsZTpjaGVja2VkIH4gLmJ1cmdlci1tZW51LWJ1dHRvbiB+IGFzaWRleyB0cmFuc2Zvcm06dHJhbnNsYXRlKDE5cmVtKTsgfSBsYWJlbFtmb3I9ImJtX3RvZ2dsZSJdeyBwb3NpdGlvbjphYnNvbHV0ZTsgdG9wOjA7IGxlZnQ6MDsgd2lkdGg6MTAwJTsgaGVpZ2h0OjEwMCU7IHotaW5kZXg6MTAyOyB9IC50aGluTGVmdCAuaGVhZGVyLWRlYWxlci1uYW1lIHsgZm9udC1zaXplOnZhcigtLWZzMCk7IG1hcmdpbi1sZWZ0OjhweDsgfSAudGhpbkxlZnQgLmxvZ28tYWN0aW9uIGEgeyBmbGV4LWJhc2lzOjE1JSB9IGhlYWRlci50aGluTGVmdCBhc2lkZSB7IGxlZnQ6dW5zZXQ7IHJpZ2h0OjA7IHRyYW5zZm9ybTpzY2FsZVgoMCkgdHJhbnNsYXRlWCgxOXJlbSk7IHRyYW5zZm9ybS1vcmlnaW46MTAwJSA1MCU7IH0gLnRoaW5MZWZ0ICNibV90b2dnbGU6Y2hlY2tlZCB+IC5idXJnZXItbWVudS1idXR0b24gfiBhc2lkZXsgdHJhbnNmb3JtOnVuc2V0OyB9Ci8qKiAvY3NzL3NrZWxldG9uLmNzcyAqKi8KLmhpZGVPblByZUxvYWQgeyB2aXNpYmlsaXR5OmhpZGRlbjsgfSAucmV2ZWFsLW1vZGFsIHsgdmlzaWJpbGl0eTpoaWRkZW47IHBvc2l0aW9uOmFic29sdXRlOyB0b3A6LTEwMDBweDsgfSAuc2tlbGV0b24geyBkaXNwbGF5OmJsb2NrOyBwb3NpdGlvbjpyZWxhdGl2ZTsgbWFyZ2luOjA7IHBhZGRpbmc6MDsgYmFja2dyb3VuZDojZWVlOyB9IC5za2VsZXRvbjo6YmVmb3JlIHsgZGlzcGxheTpmbGV4OyB3aWR0aDoxMDAlOyBoZWlnaHQ6MTAwJTsgcG9zaXRpb246YWJzb2x1dGU7IHotaW5kZXg6NDsgY29udGVudDoiIjsgZm9udC1zaXplOjAuNzVyZW07IGxpbmUtaGVpZ2h0OjAuNzVyZW07IGNvbG9yOiM4ODg7IGFuaW1hdGlvbjpza2VsZXRvbi1hbmltIDJzIGxpbmVhciBpbmZpbml0ZTsganVzdGlmeS1jb250ZW50OmNlbnRlcjsgbGV0dGVyLXNwYWNpbmc6MC4yNXJlbTsgYWxpZ24taXRlbXM6Y2VudGVyOyBmb250LXdlaWdodDpib2xkOyB9IEBrZXlmcmFtZXMgc2tlbGV0b24tYW5pbSB7IDAlIHsgY29udGVudDoiIjsgfSAyNSUgeyBjb250ZW50OiJ8IjsgfSA1MCUgeyBjb250ZW50OiJ8fCI7IH0gNzUlIHsgY29udGVudDoifHx8IjsgfSB9IC5za2VsZXRvbiBkaXY6Zmlyc3QtY2hpbGQsIC5za2VsZXRvbiBzcGFuOmZpcnN0LWNoaWxkIHsgb3BhY2l0eTowOyB0cmFuc2l0aW9uOm9wYWNpdHkgLjMwMHM7IH0gLnNrZWxldG9uLnNrZWxldG9uLWRlc2t0b3Auc2tlbGV0b24tY29uZC0yIHsgYmFja2dyb3VuZDpub25lOyB9IC5za2VsZXRvbi5za2VsZXRvbi1kZXNrdG9wLnNrZWxldG9uLWNvbmQtMi5maXhlZCB7IHdpZHRoOmluaGVyaXQgIWltcG9ydGFudDsgfSAuc2tlbGV0b24uaXMtbG9hZGVkLW5vdyB7IGJhY2tncm91bmQ6dW5zZXQ7IH0gLnNrZWxldG9uLmlzLWxvYWRlZC1ub3cgZGl2OmZpcnN0LWNoaWxkLCAuc2tlbGV0b24uaXMtbG9hZGVkLW5vdyBzcGFuOmZpcnN0LWNoaWxkIHsgb3BhY2l0eToxOyB9IC5za2VsZXRvbi5pcy1sb2FkZWQtbm93OjpiZWZvcmUgeyBjb250ZW50OiIiOyBkaXNwbGF5Om5vbmU7IGFuaW1hdGlvbjp1bnNldDsgfSAuc2tlbGV0b24uc2tlbGV0b24tZGVza3RvcC5za2VsZXRvbi1jb25kLTIuZml4ZWQuaXMtbG9hZGVkLW5vdyA+IGRpdjpmaXJzdC1jaGlsZCB7IG9wYWNpdHk6Ljc1OyB9IC5za2VsZXRvbi5za2VsZXRvbi1kZXNrdG9wLnNrZWxldG9uLWNvbmQtMi5maXhlZC5pcy1sb2FkZWQtbm93ID4gZGl2OmZpcnN0LWNoaWxkOmhvdmVyIHsgb3BhY2l0eToxOyB9Ci8qKiAvY3NzL2Nzcy5jc3MgKiovCmh0bWwsIGJvZHksIHNwYW4sIGFwcGxldCwgb2JqZWN0LCBpZnJhbWUsIGgxLCBoMiwgaDMsIGg0LCBoNSwgaDYsIHAsIGJsb2NrcXVvdGUsIHByZSwgYWJiciwgYWNyb255bSwgYWRkcmVzcywgYmlnLCBjaXRlLCBjb2RlLCBkZWwsIGRmbiwgZW0sIGZvbnQsIGltZywgaW5zLCBrYmQsIHEsIHMsIHNhbXAsIHNtYWxsLCBzdHJpa2UsIHN0cm9uZywgc3ViLCBzdXAsIHR0LCB2YXIsIGIsIHUsIGksIGNlbnRlciwgZGwsIGR0LCBkZCwgb2wsIHVsLCBsaSwgZmllbGRzZXQsIGZvcm0sIGxhYmVsLCBsZWdlbmQsIHRhYmxlLCBjYXB0aW9uLCB0Ym9keSwgdGZvb3QsIHRoZWFkLCB0ciwgdGgsIHRkIHsgbWFyZ2luOjA7IHBhZGRpbmc6MDsgfSBodG1seyBmb250LXNpemU6MXJlbSA7IH0gYm9keSB7IHBhZGRpbmc6MDsgbWFyZ2luLWxlZnQ6MHB4OyBtYXJnaW4tdG9wOjA7IG1hcmdpbi1yaWdodDowcHg7IG1hcmdpbi1ib3R0b206MHB4OyBmb250LXNpemU6MC44NzVyZW0gOyBmb250LWZhbWlseTp2YXIoLS1mb250LXRleHQpOyBmb250LXdlaWdodDp2YXIoLS1mb250LXRleHQtd2VpZ2h0KTsgYmFja2dyb3VuZDogdG9wIGNlbnRlciBuby1yZXBlYXQ7IGJhY2tncm91bmQtaW1hZ2U6dXJsKCcvaW1hZ2VzL2JsYW5rLmdpZicpOyBiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWdlbmVyYWwtYmctY29sb3IpOyB9IGlucHV0LCB0ZXh0YXJlYSwgc2VsZWN0LCBidXR0b24geyBmb250LWZhbWlseTp2YXIoLS1mb250LXRleHQpOyBmb250LXdlaWdodDp2YXIoLS1mb250LXRleHQtd2VpZ2h0KTsgfSAubmF2IGxpIGEudG9wX2xpbmssIC51cF9tZW51IHVsLm5hdiB1bC5zdWIgbGkgYS5zdWJ0aXRsZSwgLmltZ19tZW51LnVwX21lbnUgdWwubmF2ICNNYWluTWVudV9ORVc+dWwuc3ViIGxpPnVsLnN1Yj5saS5oYXNTdWIgbGkgYSwgYm9keSAud3JhcHBlciAudXBfbWVudSAubmF2eyBmb250LWZhbWlseTp2YXIoLS1mb250LW1lbnUpOyBmb250LXdlaWdodDp2YXIoLS1mb250LW1lbnUtd2VpZ2h0KTsgfSBoMXsgZm9udC1mYW1pbHk6dmFyKC0tZm9udC1oMSk7IGZvbnQtd2VpZ2h0OnZhcigtLWZvbnQtaDEtd2VpZ2h0KTsgY2xlYXI6Ym90aDsgfSAuZm4ub3JneyBmb250LWZhbWlseTp2YXIoLS1mb250LWgxKTsgZm9udC13ZWlnaHQ6dmFyKC0tZm9udC1oMS13ZWlnaHQpOyB9IGlucHV0W3R5cGU9YnV0dG9uXSwgYnV0dG9uLmpxVHJhbnNmb3JtQnV0dG9uIHNwYW4gc3BhbiwgLmJ1dHRvbl8xIGEsIC5idXR0b25fMiBhLCAuYnV0dG9uXzMgYSwgLmJ1dHRvbl91bmRlciBhLCAuYnV0dG9uX2NtcF9sZWZ0IGEsIC5idXR0b25fY21wX3JpZ2h0IGEsIC5idXR0b25fY21wX2FjdCBhLCAucHVsbG91dHMgYSwgLmlkTmF2MSBsaSBhLnRvcF9saW5rMSwgLmN0YV9wcmljZS5hbHQsIC5jdGFfY3JlZGl0LmFsdCwgLmN0YV90ZXN0RHJpdmUsIC5jdGFfZXZhbC5hbHQsIC5jdGFfc2VydmljZS5hbHQsIC5jdGFfcGFydHMuYWx0LCAuY3RhX3RpcmVzLmFsdCwgLmN0YV9zdmNwcm9tby5hbHQsIC5ib3gxNSBoMiBhLCAuYm94MTkgaDIgYSwgLmJveDI3IGEsIC52aW9yLCAuYnRuLWRlZmF1bHQsIC5idG4tc20sIC5idG4tbGcgeyBmb250LWZhbWlseTp2YXIoLS1mb250LWJ1dHRvbnMpOyBmb250LXdlaWdodDp2YXIoLS1mb250LWJ1dHRvbnMtd2VpZ2h0KTsgfSBoMixoMyxoNCxoNSxoNnsgZm9udC1mYW1pbHk6dmFyKC0tZm9udC1oMik7IGZvbnQtd2VpZ2h0OnZhcigtLWZvbnQtaDItd2VpZ2h0KTsgfSBzdHJvbmd7IGZvbnQtd2VpZ2h0OjkwMCAhaW1wb3J0YW50OyB9ICNtYWluRGl2LndyYXBwZXIgLnRvcF9iZ3sgbWF4LWhlaWdodDoyNTBweDsgbWluLWhlaWdodDoxMTVweDsgfSAuaGVhZGVyLWltYWdlLXdyYXBwZXIgaW1nLmltYWdlLXBhZGRpbmcgeyBwYWRkaW5nLWJvdHRvbTo1cHg7IH0gLmNrZWRpdG9yV3JhcHBlciBoMiB7IG1hcmdpbi1sZWZ0OjBweCAhaW1wb3J0YW50OyBtYXJnaW4tcmlnaHQ6MHB4ICFpbXBvcnRhbnQ7IG1hcmdpbi10b3A6MTVweCAhaW1wb3J0YW50OyBtYXJnaW4tYm90dG9tOjE1cHggIWltcG9ydGFudDsgfSAuY2tlZGl0b3JXcmFwcGVyIGEgeyBmbG9hdDpub25lICFpbXBvcnRhbnQ7IG1hcmdpbi1sZWZ0OjBweCAhaW1wb3J0YW50OyBmb250LXNpemU6MTAwJSAhaW1wb3J0YW50OyB9IC5ja2VkaXRvcldyYXBwZXIgcCB7IGZsb2F0Om5vbmUgIWltcG9ydGFudDsgfSAuY2tlZGl0b3JXcmFwcGVyIHA6ZW1wdHkgeyBtYXJnaW4tYm90dG9tOjFyZW07IH0gLnJlc3BvbnNpdmUtZWRpdG9yIC5jb2xsYXBzZS5zaG93LCAucmVzcG9uc2l2ZS1lZGl0b3IgLmNvbGxhcHNlLnNob3cgLmNhcmQtYm9keSB7IHZpc2liaWxpdHk6dmlzaWJsZSAhaW1wb3J0YW50OyB9IGEuZGVzY3JpcHRpb24tYXV0by1saW5rIHsgdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZSAhaW1wb3J0YW50OyBjb2xvcjppbmhlcml0OyB9IC5jbHJ7IGNsZWFyOmJvdGg7fSAuZmxlZnR7IGZsb2F0OmxlZnQ7IH0gaW5wdXQ6aW52YWxpZHtib3gtc2hhZG93Om5vbmU7IC1tb3otYm94LXNoYWRvdzpub25lO30gLmNvbmRpdGlvbnMtLWNvbnRhaW5lciB7IGRpc3BsYXk6ZmxleDsgZmxleC1kaXJlY3Rpb246cm93OyBqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjsgbWFyZ2luLWJvdHRvbTo4cHg7IH0gLmNvbmRpdGlvbnMtLWNvbnRhaW5lciAuY29uZGl0aW9ucyB7IGZsZXgtZ3JvdzoyOyBmb250LXNpemU6MC44MTNyZW0gOyBsaW5lLWhlaWdodDoxOHB4OyBjb2xvcjojNzA3MDcwOyB9IC5jb25kaXRpb25zRm9vdGVyeyBmbG9hdDpsZWZ0OyBmb250LXNpemU6MC44MTNyZW0gOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgZm9udC13ZWlnaHQ6bm9ybWFsOyBsaW5lLWhlaWdodDoxOHB4OyB0ZXh0LXRyYW5zZm9ybTpub25lOyB0ZXh0LWFsaWduOmxlZnQ7IG1hcmdpbi1sZWZ0OjVweDsgbWFyZ2luLXRvcDoyNXB4OyBjb2xvcjojNzA3MDcwOyB9IC5jb25kaXRpb25zLS1jb250YWluZXIgYSwgLmNvbmRpdGlvbnNGb290ZXIgYSB7IHRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7IGN1cnNvcjpwb2ludGVyOyBmb250LXNpemU6MC44MTNyZW0gOyBjb2xvcjojNzA3MDcwOyBmb250LXdlaWdodDpub3JtYWw7IH0gLmV4dGVuZGVkUGhvbmVUcmlnZ2VyIGF7IGNvbG9yOmluaGVyaXQ7IH0gLm1haW5EaXYtd3JhcHBlciA+IC5sYW5ndWFnZUJhci16ZXJvIHsgbWFyZ2luOjA7IGhlaWdodDppbmhlcml0OyB3aWR0aDoxMDAlOyB9IC5oZWFkZXItc2VjdGlvbiAubGFuZ3VhZ2VCYXIgeyBtYXJnaW46MCBhdXRvIDIuNzVyZW07IHdpZHRoOmluaGVyaXQ7IH0gLmhlYWRlci1zZWN0aW9uIC5sYW5ndWFnZUJhciArIC5waG9uZSB7IG1hcmdpbi1ib3R0b206MC41cmVtOyB9IC5sYW5ndWFnZUJhciB1bCBhOmhvdmVye2ZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiM2NjY2NjY7IHRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7fSAubGFuZ3VhZ2VCYXIgdWwgYTp2aXNpdGVke3BhZGRpbmctcmlnaHQ6MzVweDsgd2lkdGg6YXV0bzsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzY2NjY2NjsgdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTsgdGV4dC1hbGlnbjpyaWdodDt9IC5sYW5ndWFnZUJhci5sYW5ndWFnZUJhci16ZXJvIHsgaGVpZ2h0OjA7IHBhZGRpbmc6MDsgbWFyZ2luOjA7IH0gI21haW5EaXYud3JhcHBlci5uby1pY29ucyB7IHBhZGRpbmctdG9wOjAuMDFyZW07IH0gLnRvcF9yb3V7IHdpZHRoOjk2MHB4OyBoZWlnaHQ6NHB4OyBmbG9hdDpsZWZ0OyB9IC5sb2dveyB9IC5sb2dvTm9QYWRkaW5nIGltZ3sgd2lkdGg6MTAwJTt9IC5sYW5ndWFnZUJhciBhLmRlc2t0b3BfbGFuZ19idXR0b24sIC5sYW5ndWFnZUJhciBzcGFuLmRlc2t0b3BfbGFuZ19idXR0b257IHBvc2l0aW9uOnJlbGF0aXZlOyBkaXNwbGF5OmlubGluZS1ibG9jazsgZm9udC1zaXplOjAuNzVyZW0gOyB3aWR0aDoyOHB4OyBoZWlnaHQ6MjZweDsgcGFkZGluZzowOyB0ZXh0LWFsaWduOmNlbnRlcjsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IHZlcnRpY2FsLWFsaWduOnRvcDsgYm9yZGVyOjFweCBzb2xpZCAjQjZCN0I5OyBjb2xvcjojQjZCN0I5OyBjb2xvcjojMDAwMDAwOyBiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmY7IGJhY2tncm91bmQtY29sb3I6I2ZmZmZmZjsgYmFja2dyb3VuZC1jb2xvcjojZmZmZmZmOyB9IC5sYW5ndWFnZUJhciAuZGVza3RvcF9sYW5nX2J1dHRvbi5hY3RpdmUsIC5sYW5ndWFnZUJhciBhLmRlc2t0b3BfbGFuZ19idXR0b246aG92ZXJ7IGNvbG9yOiNmZmZmZmY7IGNvbG9yOiNmZmZmZmY7IGJhY2tncm91bmQtY29sb3I6I0I2QjdCOTsgYmFja2dyb3VuZC1jb2xvcjojMDAwMDAwOyB9IC5sYW5ndWFnZUJhciBzcGFuLmRlc2t0b3BfbGFuZ19idXR0b246bnRoLWNoaWxkKGV2ZW4pLCAubGFuZ3VhZ2VCYXIgYS5kZXNrdG9wX2xhbmdfYnV0dG9uOm50aC1jaGlsZChldmVuKXsgbWFyZ2luLWxlZnQ6MnB4OyB9IC5sYW5ndWFnZUJhciBhLmRlc2t0b3BfbGFuZ19idXR0b24gc3Bhbi5kZXNrdG9wX2xhbmdfYnV0dG9uX3RleHQsIC5sYW5ndWFnZUJhciBzcGFuLmRlc2t0b3BfbGFuZ19idXR0b24gc3Bhbi5kZXNrdG9wX2xhbmdfYnV0dG9uX3RleHR7IHBvc2l0aW9uOmFic29sdXRlOyB0b3A6NTAlOyB0cmFuc2Zvcm06dHJhbnNsYXRlKC01MCUsIC01MCUpOyB9IC5sb2dvTm9QYWRkaW5neyBtYXgtd2lkdGg6NTAlOyBmbG9hdDpsZWZ0OyBtYXJnaW4tdG9wOi00cHg7fSAudi1jYXJkLnRvcF9iZyB7IGRpc3BsYXk6ZmxleDsganVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47IGFsaWduLWl0ZW1zOmNlbnRlcjsgbWFyZ2luLXRvcDoxMHB4OyB9IC52LWNhcmQudG9wX2JnLi1tdDAgLmhlYWRlci1zZWN0aW9uOm50aC1jaGlsZCgyKSB7IG1hcmdpbi10b3A6NzRweDsgfSAuaGVhZGVyLXNlY3Rpb24geyBkaXNwbGF5OmZsZXg7IHZlcnRpY2FsLWFsaWduOm1pZGRsZTsganVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47IGFsaWduLWl0ZW1zOmNlbnRlcjsgfSAuaGVhZGVyLWltYWdlLXdyYXBwZXIgeyBtaW4taGVpZ2h0Ojk3cHg7IH0gLmhlYWRlci1zZWN0aW9uLmltYWdlIHsgd2lkdGg6MjUlOyB9IC5oZWFkZXItc2VjdGlvbi5pbWFnZSA+IC5oZWFkZXItaW1hZ2Utd3JhcHBlciBpbWcgeyBtYXgtaGVpZ2h0OjI1MHB4OyB9IC5oZWFkZXItc2VjdGlvbiA+IGRpdiB7IGRpc3BsYXk6aW5saW5lLWJsb2NrOyB9IC5oZWFkZXItc2VjdGlvbiAucGhvbmUgeyB3aWR0aDphdXRvOyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjp2YXIoLS1kZWFsZXItYWRkcmVzcy1jb2xvcik7IHRleHQtZGVjb3JhdGlvbjpub25lOyB0ZXh0LWFsaWduOnJpZ2h0OyBwYWRkaW5nOjAuNXJlbSAwOyB9IC5oZWFkZXItc2VjdGlvbjpudGgtY2hpbGQoMikuaW1hZ2UgeyB0ZXh0LWFsaWduOnJpZ2h0OyB9IC5oZWFkZXItc2VjdGlvbiAucGhvbmUucGhvbmVfcmlnaHR7IHRleHQtYWxpZ246cmlnaHQ7IH0gLmhlYWRlci1zZWN0aW9uIC5waG9uZS5waG9uZV9sZWZ0IHsgdGV4dC1hbGlnbjpsZWZ0OyB9IC5oZWFkZXItc2VjdGlvbiA+IC52LWNhcmQgeyB9IC5tdWx0aS1hZGRyZXNzLXdyYXBwZXIuZXhjZXB0aW9uU3R5bGV7IGRpc3BsYXk6ZmxleDsgfSAubXVsdGktYWRkcmVzcy13cmFwcGVyLmV4Y2VwdGlvblN0eWxlIC5tdWx0aS1hZGRyZXNzLS1waG9uZXsgd2lkdGg6YXV0bzsgYWxpZ24taXRlbXM6Y2VudGVyOyB9IC5tdWx0aS1hZGRyZXNzLXdyYXBwZXIuZXhjZXB0aW9uU3R5bGUgLm11bHRpLWFkZHJlc3MtLXBob25lIGl7IGZvbnQtc2l6ZTowLjYyNXJlbSA7IH0gLm11bHRpLWFkZHJlc3Mtd3JhcHBlci5leGNlcHRpb25TdHlsZSBheyB0ZXh0LWRlY29yYXRpb246bm9uZTsgfSAubXVsdGktYWRkcmVzcyB7IGRpc3BsYXk6ZmxleDsganVzdGlmeS1jb250ZW50OmZsZXgtZW5kOyB9IC5tdWx0aS1hZGRyZXNzLS1waG9uZSB7IHdpZHRoOjEzM3B4OyBkaXNwbGF5OmZsZXg7IGp1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuOyB9IC5tdWx0aS1hZGRyZXNzIGkgeyBwYWRkaW5nLXJpZ2h0OjVweDsgcGFkZGluZy1sZWZ0OjEwcHg7IH0gLnRvcF9iZyB0YWJsZSB0Ym9keSB0ZDpudGgtY2hpbGQoMikgLmhlYWRlci1zZWN0aW9uIHsgd2lkdGg6MTAwJTsgfSAudG9wX2JnLmRpdlRhYmxlIC5oZWFkZXItc2VjdGlvbjpudGgtY2hpbGQoMikgeyB0ZXh0LWFsaWduOnJpZ2h0OyB9IC50b3BfYmcgdGFibGUgdGQgLmhlYWRlci1zZWN0aW9uIHsgZGlzcGxheTppbmxpbmUtYmxvY2s7IH0gLnBob25lIGgyeyBmb250LXNpemU6MS41cmVtIDsgY29sb3I6IzUyNTI1MjsgZm9udC13ZWlnaHQ6Ym9sZDsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7fSAucGhvbmUgaDF7IGZvbnQtc2l6ZToxLjg3NXJlbSA7IGNvbG9yOiM1MjUyNTI7IGZvbnQtd2VpZ2h0OmJvbGQ7IHRleHQtZGVjb3JhdGlvbjpub25lO30gLnBob25lIGRpdi5vcmd7IGZvbnQtc2l6ZToxLjM3NXJlbSA7IGNvbG9yOiM1MjUyNTI7IGZvbnQtd2VpZ2h0OmJvbGQ7IHRleHQtZGVjb3JhdGlvbjpub25lO30gLnBob25lX3RleHQgeyBjb2xvcjp2YXIoLS1kZWFsZXItYWRkcmVzcy1jb2xvcik7IHRleHQtZGVjb3JhdGlvbjpub25lOyBwYWRkaW5nLWxlZnQ6MnB4OyBwYWRkaW5nLXRvcDoycHg7fSAucGhvbmVfdGV4dCBheyBjb2xvcjp2YXIoLS1kZWFsZXItYWRkcmVzcy1jb2xvcik7IHRleHQtZGVjb3JhdGlvbjpub25lOyBkaXNwbGF5OmlubGluZS1ibG9jazsgd2lsbC1jaGFuZ2U6dHJhbnNmb3JtOyB0cmFuc2Zvcm0tb3JpZ2luOnJpZ2h0IGNlbnRlcjsgdHJhbnNpdGlvbjp0cmFuc2Zvcm0gMC4zcyBlYXNlOyB9IC5waG9uZV90ZXh0IGE6aG92ZXJ7IHRyYW5zZm9ybTpzY2FsZSgwLjkzKTsgY29sb3I6IzAwNTc5YzsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IH0gYS5waG9uZS1saW5rIHsgZGlzcGxheSA6aW5saW5lLWJsb2NrICFpbXBvcnRhbnQ7IHBhZGRpbmcgOjAgIWltcG9ydGFudDsgY29sb3IgOmluaGVyaXQ7IHRleHQtZGVjb3JhdGlvbiA6bm9uZTsgfSBhLnBob25lLWxpbms6aG92ZXIgeyBjb2xvcjppbmhlcml0OyB0ZXh0LWRlY29yYXRpb246bm9uZTsgfSAjc2xpZGVyeyB3aWR0aDo5NjBweDsgbWFyZ2luLWxlZnQ6MHB4OyBib3gtc2hhZG93Om5vbmU7IH0gLmNlbnRlcmVkIHtwb3NpdGlvbjphYnNvbHV0ZTsgbGVmdDo1MCU7IHRvcDo1MCU7fSAudXBfbWVudXsgd2lkdGg6OTYwcHg7IGhlaWdodDozMXB4OyB6LWluZGV4OjExMTE7IGZsb2F0OnJpZ2h0O3doaXRlLXNwYWNlOm5vd3JhcDsgfSAuYmFubmVyeyB3aWR0aDo5NjBweDsgaGVpZ2h0OjMwMXB4OyBmbG9hdDpsZWZ0OyBtYXJnaW4tbGVmdDoycHg7IG1hcmdpbi1ib3R0b206NnB4OyB9IC5tZV90b3B7IHdpZHRoOjk2N3B4OyBoZWlnaHQ6OHB4OyBmbG9hdDpsZWZ0O30gLm1lX2JneyB3aWR0aDo5NjdweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvbWVfYmdfcm91LnBuZykgbGVmdCB0b3AgcmVwZWF0LXk7fSAubWVfZGVzY3ttYXJnaW46MHB4O2hlaWdodDphdXRvO2ZvbnQtc2l6ZTowLjg3NXJlbSA7IG92ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjVweCAxNXB4fSAubWVfYm91eyB3aWR0aDo5NjdweDsgaGVpZ2h0OjlweDsgZmxvYXQ6bGVmdDt9IC5vbmV7IHdpZHRoOjIyNXB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgbWFyZ2luLWxlZnQ6MTBweDsgbWFyZ2luLXRvcDo4cHg7fSAudHdveyB3aWR0aDoyMjVweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IG1hcmdpbi1sZWZ0OjE0cHg7IG1hcmdpbi10b3A6OHB4O30gLnRocmVleyB3aWR0aDoyMjVweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IG1hcmdpbi1sZWZ0OjE0cHg7IG1hcmdpbi10b3A6OHB4O30gLmZvdXJ7IHdpZHRoOjIyNXB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgbWFyZ2luLWxlZnQ6NHB4OyBtYXJnaW4tdG9wOjRweDt9IC5Wb3VzeyBmb250LXNpemU6MS4wNjNyZW0gOyBjb2xvcjojMmMyYzJjOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgcGFkZGluZy1ib3R0b206MnB4O30gLmNsYXNzeyBmb250LXNpemU6MC44MTNyZW0gOyBjb2xvcjojNTc1NzU3OyB0ZXh0LWRlY29yYXRpb246bm9uZTsgcGFkZGluZy1ib3R0b206MHB4OyBwYWRkaW5nLXRvcDo2cHg7fSAuY2xhc3MxeyBmb250LXNpemU6MC44MTNyZW0gOyBjb2xvcjojNTc1NzU3OyB0ZXh0LWRlY29yYXRpb246bm9uZTsgaGVpZ2h0OjE1N3B4OyBtYXJnaW4tdG9wOjZweDt9IC5ib3JkZXJ7Ym9yZGVyOjFweCBzb2xpZCAjZDNkM2QzOyB3aWR0aDoyMThweDt9IC5ib3h7IHdpZHRoOjc1cHg7IGhlaWdodDo3M3B4OyB0ZXh0LWFsaWduOmNlbnRlcjsgcGFkZGluZy10b3A6MTBweDsgbWFyZ2luOjAgYXV0bzt9IC5jYXtoZWlnaHQ6MTQzcHg7fSAuYm94MjI1eyB3aWR0aDoyMjVweDsgZmxvYXQ6bGVmdDsgZm9udC1zaXplOjAuODEzcmVtIDsgY29sb3I6IzU3NTc1NzsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IHBhZGRpbmctYm90dG9tOjNweDt9IC5ib3gyMjR7IHdpZHRoOjIyNXB4OyBmbG9hdDpsZWZ0OyBwYWRkaW5nLWJvdHRvbTo2cHg7fSAuYm94MjIzeyB3aWR0aDoyMjVweDsgZmxvYXQ6bGVmdDsgcGFkZGluZy10b3A6M3B4O30gLm5vc3sgd2lkdGg6NzEwcHg7IGhlaWdodDoxMDAlOyBtYXJnaW4tdG9wOjVweDsgZmxvYXQ6bGVmdDsgbWFyZ2luLXJpZ2h0OjVweDt9IC5ub3NfdG9weyB3aWR0aDo3MTZweDsgaGVpZ2h0OjlweDsgZmxvYXQ6bGVmdDt9IC5ub3NfYmd7IHdpZHRoOjcxNnB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9ub3NfYmcucG5nKSBsZWZ0IHRvcCByZXBlYXQteTt9IC5ub3NfYm91eyB3aWR0aDo3MTZweDsgaGVpZ2h0OjlweDsgZmxvYXQ6bGVmdDt9IC5ub3NfdGV4dHtoZWlnaHQ6MzBweDsgZm9udC1zaXplOjEuMTI1cmVtIDsgY29sb3I6IzU3NTc1NzsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IHRleHQtYWxpZ246Y2VudGVyO30gLmFyb3d7IHdpZHRoOjY5NXB4OyBoZWlnaHQ6MTYwcHg7IGZsb2F0OmxlZnQ7IG1hcmdpbi1sZWZ0OjRweDt9IC5jb257IGZvbnQtc2l6ZTowLjgxM3JlbSA7IGNvbG9yOiMzYzNjM2M7fSAuZGVzYyB7bWF4LXdpZHRoOjEwMCU7fSAuZGVzY19iZyB7d2lkdGg6MTAwJTsgaGVpZ2h0OjI0OHB4OyBmbG9hdDpsZWZ0OyBiYWNrZ3JvdW5kOnVybCgiL2ltYWdlcy9ub3NfYmcucG5nIikgcmVwZWF0LXkgc2Nyb2xsIGxlZnQgdG9wIHRyYW5zcGFyZW50O30gLmFkZHJ7bWFyZ2luLXRvcDoyNXB4O30gLmFkZHJfbWlke2JhY2tncm91bmQ6dXJsKC9pbWFnZXMvbWVfYmdfcm91LnBuZykgbGVmdCB0b3AgcmVwZWF0LXk7fSAuaGlkZGVue2Rpc3BsYXk6bm9uZSAhaW1wb3J0YW50O30gLmhvdXJzX3JlbSB7IHRleHQtYWxpZ246cmlnaHQ7bGluZS1oZWlnaHQ6MThweDsgZmxvYXQ6cmlnaHQ7cGFkZGluZy1yaWdodDoxNXB4OyB9IC5ob3Vyc19yZW0gYXsgZm9udC1zaXplOjAuNjg4cmVtIDsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IH0gI2x7d2lkdGg6NjBweDsgZmxvYXQ6bGVmdDt9IC5kZXJ7d2lkdGg6NDYwcHg7IGhlaWdodDoyNTVweDsgbWFyZ2luLXRvcDoxcHg7IGZsb2F0OmxlZnQ7fSAuZGVyX3RvcHsgd2lkdGg6NDY0cHg7IGhlaWdodDo4cHg7IGZsb2F0OmxlZnQ7fSAuZGVyX2JneyB3aWR0aDo0NDRweDsgaGVpZ2h0OjIyNnB4OyBmbG9hdDpsZWZ0OyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL2Rlcl9iZy5wbmcpIGxlZnQgdG9wIHJlcGVhdC15OyBwYWRkaW5nOjZweCAxMHB4IDEwcHggMTBweDt9IC5kZXJfYm91eyB3aWR0aDo0NjRweDsgaGVpZ2h0OjhweDsgZmxvYXQ6bGVmdDt9IC5kZW17d2lkdGg6NDk1cHg7IGhlaWdodDoyNTVweDsgbWFyZ2luLXRvcDozcHg7IGZsb2F0OmxlZnQ7IG1hcmdpbi1sZWZ0OjVweDttYXJnaW4tYm90dG9tOjZweDt9IC5zYm94MXsgd2lkdGg6MjQwcHg7IGhlaWdodDoxMjNweDsgZmxvYXQ6bGVmdDsgcGFkZGluZzowIDVweCAxMHB4IDVweH0gLnNib3gyeyB3aWR0aDoyNDBweDsgaGVpZ2h0OjEyM3B4OyBmbG9hdDpsZWZ0OyBwYWRkaW5nOjAgNXB4IDEwcHggNXB4fSAuc2JveDN7IHdpZHRoOjI0MHB4OyBoZWlnaHQ6MTIzcHg7IGZsb2F0OmxlZnQ7IHBhZGRpbmc6MCA1cHggMTBweCA1cHh9IC5zYm94NHsgd2lkdGg6MjQwcHg7IGhlaWdodDoxMjNweDsgZmxvYXQ6bGVmdDsgcGFkZGluZzowIDVweCAxMHB4IDVweH0gLmJvdHRvbTRib3hlc3tmbG9hdDpsZWZ0O3dpZHRoOjEwMCU7cGFkZGluZzowO2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2Vlbjt9IC5ib3R0b200Ym94ZXMgKiB7Ym94LXNpemluZzpib3JkZXItYm94O30gLmJvdHRvbTRib3hlcyA+IC5ib3gyNDV7ZmxvYXQ6bGVmdDt3aWR0aDoyNSU7bWF4LXdpZHRoOjI0NXB4O30gLmJvdHRvbTRib3hlcyA+IC5ib3gyNDF7ZmxvYXQ6bGVmdDttYXJnaW46MTBweCA2cHg7fSAuYm90dG9tNGJveGVzID4gLmJveDI0MTpmaXJzdC1jaGlsZHttYXJnaW4tbGVmdDowcHg7fSAuYm90dG9tNGJveGVzID4gLmJveDI0MTpsYXN0LWNoaWxke21hcmdpbi1yaWdodDowcHg7fSBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6MTAyNHB4KSB7IC5ib3R0b200Ym94ZXMgdGFibGUgeyBwYWRkaW5nOjAgMTBweDsgfSB9IC5zYm94VXNlZHsgZmxvYXQ6bGVmdDsgfSAuc2JveF90b3B7IHdpZHRoOjI0N3B4OyBoZWlnaHQ6NXB4OyBmbG9hdDpsZWZ0O30gLnNib3hfYmd7IHdpZHRoOjI0N3B4OyBoZWlnaHQ6MTA3cHg7IGZsb2F0OmxlZnQ7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvc2JveF9iZy5wbmcpIGxlZnQgdG9wIHJlcGVhdC15OyBmb250LXNpemU6MS4xODhyZW0gOyBjb2xvcjojMTkxOTE5OyB0ZXh0LWFsaWduOmNlbnRlcjt9IC5zYm94X2JvdXsgd2lkdGg6MjQ3cHg7IGhlaWdodDo1cHg7IGZsb2F0OmxlZnQ7fSAuZGF7IG1hcmdpbi10b3A6MTJweDt9IC5kYTF7IG1hcmdpbi10b3A6MTBweDsgZm9udC1zaXplOjEuMTg4cmVtIDsgY29sb3I6IzE5MTkxOTsgdGV4dC1hbGlnbjpjZW50ZXI7fSAuZGExIGgxeyBwYWRkaW5nOjA7IG1hcmdpbjowOyBmb250LXNpemU6MS44NzVyZW0gOyBjb2xvcjojMTkxOTE5OyB0ZXh0LWFsaWduOmNlbnRlcjsgZm9udC13ZWlnaHQ6bm9ybWFsO30gLmFkZGxpbmV7IGNvbG9yOiMyYzJjMmMhaW1wb3J0YW50OyBvdmVyZmxvdzpoaWRkZW47IHRleHQtYWxpZ246Y2VudGVyOyB9ICNyZXR1cm5Qb3B1cE5leHRNb2RlbHsgaGVpZ2h0OjQwcHghaW1wb3J0YW50OyB9IC5hZGRsaW5lOjpiZWZvcmUsIC5hZGRsaW5lOjphZnRlciB7IGJhY2tncm91bmQtY29sb3I6IzAwMDsgY29udGVudDoiIjsgZGlzcGxheTppbmxpbmUtYmxvY2s7IGhlaWdodDoxcHg7IHBvc2l0aW9uOnJlbGF0aXZlOyB2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7IHdpZHRoOjUwJTsgfSAuYWRkbGluZTpiZWZvcmUgeyByaWdodDowLjVlbTsgbWFyZ2luLWxlZnQ6LTUwJTsgfSAuYWRkbGluZTphZnRlciB7IGxlZnQ6MC41ZW07IG1hcmdpbi1yaWdodDotNTAlOyB9IC5zYm94MSBhLmNMaW5rLCAuc2JveDIgYS5jTGluaywgLnNib3gzIGEuY0xpbmssIC5zYm94NCBhLmNMaW5reyBkaXNwbGF5OmJsb2NrOyBoZWlnaHQ6MTAwJTsgd2lkdGg6MTAwJTsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IH0gLnNib3gxIGEuY0xpbms6aG92ZXIsIC5zYm94MiBhLmNMaW5rOmhvdmVyLCAuc2JveDMgYS5jTGluazpob3ZlciwgLnNib3g0IGEuY0xpbms6aG92ZXJ7IHRleHQtZGVjb3JhdGlvbjpub25lOyB9IC5ob21lcGFnZS0tYnVzaW5lc3MtZGVzY3JpcHRpb24sIC5ob21lcGFnZS0tYnVzaW5lc3MtZGVzY3JpcHRpb24tY2VydCwgLmhvbWVwYWdlLS1idXNpbmVzcy1kZXNjcmlwdGlvbiAuYm9yZGVyX2JveCB7IGJhY2tncm91bmQtY29sb3I6I2Y5ZjlmOTsgYmFja2dyb3VuZC1jb2xvcjojZWVlZWVlOyBjb2xvcjojMmMyYzJjOyBjb2xvcjojMmMyYzJjOyB9IC5ob21lcGFnZS0tYnVzaW5lc3MtZGVzY3JpcHRpb24gYSwgLmhvbWVwYWdlLS1idXNpbmVzcy1kZXNjcmlwdGlvbi1jZXJ0IGEgeyBjb2xvcjojMmMyYzJjOyBjb2xvcjojMmMyYzJjOyB9IC5ob21lcGFnZS0tYnVzaW5lc3MtZGVzY3JpcHRpb24gLmJvcmRlcl9ib3gsIC5ob21lcGFnZS0tYnVzaW5lc3MtZGVzY3JpcHRpb24tY2VydCAuYm9yZGVyX2JveCB7IGJhY2tncm91bmQtY29sb3I6aW5oZXJpdDsgY29sb3I6aW5oZXJpdDsgfSAuYmxhY2tfdGV4dHsgZm9udC1zaXplOjEuNXJlbSA7IGNvbG9yOiMxOTE5MTk7IG1hcmdpbi1ib3R0b206NHB4O30gLmdyYXlfdGV4dHsgZm9udC1zaXplOjAuODEzcmVtIDsgY29sb3I6IzE5MTkxOTt9IC5idXR7IGZsb2F0OnJpZ2h0OyBtYXJnaW46MHB4IDBweCAwcHggMHB4O30gLmxpbmV7IGJvcmRlci1ib3R0b206MXB4IHNvbGlkICNkMmQyZDI7IG1hcmdpbi10b3A6NXB4OyBtYXJnaW4tYm90dG9tOjVweDt9IC52aXZ7IG1hcmdpbi10b3A6NXB4OyBtYXJnaW4tbGVmdDo1cHg7IGZvbnQtc2l6ZToxLjVyZW0gOyBjb2xvcjojZmZmOyBjb2xvcjojMmMyYzJjOyB0ZXh0LWFsaWduOmp1c3RpZnk7fSAudHd7IHdpZHRoOjI2MHB4OyBoZWlnaHQ6NDBweDsgZmxvYXQ6cmlnaHQ7IG1hcmdpbi10b3A6NXB4OyB0ZXh0LWFsaWduOnJpZ2h0O30gLkVOR0xJU0ggLnZpdnt0ZXh0LXRyYW5zZm9ybTpjYXBpdGFsaXplO30gLk1haW5Cb3hMYXllciAudml2IHsgbWFyZ2luLWxlZnQ6MDsgfSAuc29jaWFsLXNoYXJpbmd7IHdpZHRoOjEwMCU7IGNsZWFyOmJvdGg7IGZsb2F0OnJpZ2h0OyBtYXJnaW4tdG9wOjVweDsgfSAuc29jaWFsLXNoYXJpbmcgPiBkaXYuc29jaWFseyBmbG9hdDpyaWdodDsgcGFkZGluZy1sZWZ0OjVweDsgfSAuc29jaWFsLXNoYXJpbmcgPiBkaXYuc29jaWFsOmxhc3QtY2hpbGR7IHBhZGRpbmctbGVmdDowOyB9IC5zb2NpYWwtc2hhcmluZyA+IGRpdi5zb2NpYWw6Zmlyc3QtY2hpbGR7IHBhZGRpbmctcmlnaHQ6NXB4OyB9IC5NYWluQm94TGF5ZXIgLnNvY2lhbC1zaGFyaW5nID4gZGl2LnNvY2lhbDpmaXJzdC1jaGlsZHsgcGFkZGluZy1yaWdodDowOyB9ICNmb290ZXJEaXYgLmFkZCwgI2Zvb3RlckRpdiAuYWRkIGEgeyBjb2xvcjp2YXIoLS1mb290ZXItaXRlbXMtbGluay1jb2xvcik7IH0gI2Zvb3RlckRpdiAuYWRkIC5vcmd7IGNvbG9yOnZhcigtLWZvb3Rlci1saW5rLXRpdGxlLWNvbCk7IH0gLnBvdXJ7IHdpZHRoOjcyNXB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDt9IC5wYWdlbm97d2lkdGg6MjM2cHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBtYXJnaW4tbGVmdDo1cHg7IHBhZGRpbmc6MDsgdGV4dC10cmFuc2Zvcm06bm9uZTsgZm9udC13ZWlnaHQ6bm9ybWFsOyBtYXJnaW4tdG9wOjEwcHg7IH0gLnBhZ2VubyB1bHsgbGlzdC1zdHlsZS10eXBlOm5vbmU7IG1hcmdpbjowIDAgMTVweCAwOyBwYWRkaW5nOjA7IHdpZHRoOjIzNnB4OyB0ZXh0LXRyYW5zZm9ybTpub25lOyBmb250LXdlaWdodDpub3JtYWw7IH0gLnBhZ2VubyB1bCBsaXsgbGlzdC1zdHlsZS10eXBlOm5vbmU7IG1hcmdpbjowO2Rpc3BsYXk6YmxvY2s7IGZsb2F0Om5vbmU7IHdpZHRoOjIzNnB4OyB0ZXh0LXRyYW5zZm9ybTpub25lOyBmb250LXdlaWdodDpub3JtYWw7fSAucGFnZW5vIHVsIGxpIGF7IHdpZHRoOjIzN3B4OyBtYXJnaW46MDsgZGlzcGxheTpibG9jazsgZmxvYXQ6bm9uZTsgZm9udC1zaXplOjAuODEzcmVtIDsgY29sb3I6dmFyKC0tZm9vdGVyLWl0ZW1zLWxpbmstY29sb3IpOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgZm9udC13ZWlnaHQ6bm9ybWFsOyBsaW5lLWhlaWdodDoxOHB4OyB0ZXh0LXRyYW5zZm9ybTpub25lOyB0ZXh0LWFsaWduOmxlZnQ7IHRleHQtdHJhbnNmb3JtOm5vbmU7IH0gLnBhZ2VubyB1bCBsaSBzcGFuLCAucGFnZW5vIHVsIGxpIGEuZnRpdGxleyB3aWR0aDoyMzZweDsgbWFyZ2luOjA7IGRpc3BsYXk6YmxvY2s7IGZsb2F0Om5vbmU7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiNmZmY7IGNvbG9yOnZhcigtLWZvb3Rlci1saW5rLXRpdGxlLWNvbCk7IHRleHQtZGVjb3JhdGlvbjpub25lOyBtYXJnaW4tYm90dG9tOjEwcHg7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgbGluZS1oZWlnaHQ6MThweDsgdGV4dC1hbGlnbjpsZWZ0OyB9IC5wYWdlbm8gdWwgbGkgYS5mdGl0bGU6aG92ZXJ7IG1hcmdpbi1ib3R0b206MTBweDt9IC5wYWdlbm8gdWwgbGkgYTpob3ZlcnsgbGlzdC1zdHlsZS10eXBlOm5vbmU7IG1hcmdpbjowOyBjb2xvcjp2YXIoLS1mb290ZXItbGluay10aXRsZS1jb2wpOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgZGlzcGxheTpibG9jazsgbGluZS1oZWlnaHQ6MThweDt9IC5wYWdlbm8gbGkgYS5hY3RpdmV7IGxpc3Qtc3R5bGUtdHlwZTpub25lOyBtYXJnaW46MDsgY29sb3I6IzkxOTE5MTsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IGRpc3BsYXk6YmxvY2s7IGxpbmUtaGVpZ2h0OjE4cHg7fSAuRU5HTElTSCAucGFnZW5vIHVsIGxpIGF7dGV4dC10cmFuc2Zvcm06Y2FwaXRhbGl6ZTt9IC5hZGR7IHdpZHRoOjIzMHB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgZm9udC1zaXplOjAuODEzcmVtIDsgY29sb3I6IzkxOTE5MTsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgbGluZS1oZWlnaHQ6MThweDsgdGV4dC10cmFuc2Zvcm06bm9uZTsgdGV4dC1hbGlnbjpyaWdodDsgdGV4dC10cmFuc2Zvcm06bm9uZTsgbWFyZ2luLXRvcDoxMHB4O21hcmdpbi1ib3R0b206MTBweDt9IC5jb3B5eyBmbG9hdDpsZWZ0OyBmb250LXNpemU6MC44MTNyZW0gOyBjb2xvcjojOTE5MTkxOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgZm9udC13ZWlnaHQ6bm9ybWFsOyBsaW5lLWhlaWdodDoxOHB4OyB0ZXh0LXRyYW5zZm9ybTpub25lOyB0ZXh0LWFsaWduOmxlZnQ7IHRleHQtdHJhbnNmb3JtOm5vbmU7IG1hcmdpbi1sZWZ0OjVweDsgbWFyZ2luLXRvcDoyNXB4O30gLmNvcHkgYXsgdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTtjdXJzb3I6cG9pbnRlcjsgZm9udC1zaXplOjAuODEzcmVtIDsgY29sb3I6IzkxOTE5MTsgZm9udC13ZWlnaHQ6bm9ybWFsfSAuY29weSBhOmhvdmVyeyBjb2xvcjojZDRkNGQ0OyBmb250LXdlaWdodDpib2xkO30gLmZvb3Rlci1saXN0cyBsaSA+IHNwYW4geyB0ZXh0LXRyYW5zZm9ybTp2YXIoLS10eHQtdXBwZXIpOyB9ICNmb290ZXJXcmFwcGVyIC52LWNhcmQuYWRkIHsgbGluZS1oZWlnaHQ6aW5pdGlhbDsgfSAjZm9vdGVyIC5mb290ZXItdGl0bGUgeyBmb250LXNpemU6dmFyKC0tZnM0KTsgY29sb3I6dmFyKC0tZm9vdGVyLWxpbmstdGl0bGUtY29sLCB2YXIoLS13aGl0ZSkpOyB9IC5FTkdMSVNIICNmb290ZXIgLmZvb3Rlci10aXRsZSB7IHRleHQtdHJhbnNmb3JtOmNhcGl0YWxpemU7IH0gI2Zvb3RlciA+IC5mbGV4LWJveCA+IC5mb290ZXItbG9nb19fY29udGFpbmVyIHsgbWFyZ2luLXRvcDowOyBtYXJnaW4tcmlnaHQ6dmFyKC0tczUpOyB9ICNmb290ZXIgPiAuZmxleC1ib3ggPiAuZm9vdGVyLWxvZ29fX2NvbnRhaW5lciBpbWcgeyBtYXgtd2lkdGg6MTAwJTsgbWF4LWhlaWdodDoxNTBweDsgfSAuc29jaWFsLW1lZGlhLWljb25zIHsgZGlzcGxheTpmbGV4OyBmbGV4LWRpcmVjdGlvbjpyb3c7IGp1c3RpZnktY29udGVudDpmbGV4LWVuZDsgdGV4dC1hbGlnbjpyaWdodDsgfSAuZGVhbGVyLWFsaWduLWxlZnQgLnNvY2lhbC1tZWRpYS1pY29ucyB7IHRleHQtYWxpZ246bGVmdDsganVzdGlmeS1jb250ZW50OmZsZXgtc3RhcnQ7IH0gLnNvY2lhbC1tZWRpYS1pY29ucyAuc29jaWFsLWljb25zIHsgd2lkdGggOmF1dG87IGhlaWdodDphdXRvOyBtYXJnaW46MCA0cHg7IH0gI2Zvb3RlciBhLnNvY2lhbC1saW5rID4gc3ZnIHsgaGVpZ2h0OjIycHg7IG1hcmdpbi1sZWZ0OjNweDsgfSBoZWFkZXIgLmhlYWRlci1zb2NpYWwgI3NvY2lhbF9tZWRpYV9pY29uc19kaXYgPiBhID4gc3ZnIHsgaGVpZ2h0OjIxcHg7IG1hcmdpbi10b3A6NHB4OyB9IC5zb2NpYWwtbWVkaWEtaWNvbnMgLnNvY2lhbC1pY29ucyAuZmFiIHsgbWFyZ2luLXRvcDowOyBmb250LXNpemUgOjEuOWVtOyBjb2xvciA6dmFyKC0tZm9vdGVyLWxpbmstdGl0bGUtY29sKTsgfSAuZGl2U3Bhbi5kaXZTcGFuMyA+IC5mb290ZXItbG9nb19fY29udGFpbmVyIHsgbWFyZ2luLXRvcDoxcmVtOyB0ZXh0LWFsaWduOnJpZ2h0OyB9IC5kZWFsZXItYWxpZ24tbGVmdCAuZm9vdGVyLWxvZ29fX2NvbnRhaW5lciB7IHRleHQtYWxpZ246bGVmdDsgfSAuZGl2U3Bhbi5kaXZTcGFuMyA+IC5mb290ZXItbG9nb19fY29udGFpbmVyIGltZyB7IG1heC13aWR0aDoxODBweDsgbWF4LWhlaWdodDoxMDBweDsgfSBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6MTAyNHB4KSB7IC5oZWFkZXItc2VjdGlvbiAucGhvbmUucGhvbmVfbGVmdCB7IHBhZGRpbmctbGVmdDoxMHB4OyB9ICNmb290ZXIgeyBwYWRkaW5nLWxlZnQ6MTBweDsgcGFkZGluZy1yaWdodDoxMHB4OyB9IH0gQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOjk5OXB4KSB7ICNNYWluTWVudV9TRUFSQ0hfQkFSIHsgZGlzcGxheTpub25lOyB9IC51cF9tZW51IHVsLm5hdiA+IGxpLmZpcnN0TWVudSB7IHBhZGRpbmctbGVmdDoxMHB4OyB9IC51cF9tZW51IHVsLm5hdiA+IGxpOm50aC1vZi10eXBlKDIpIHsgcGFkZGluZy1yaWdodDoxMHB4OyB9IC51cF9tZW51IHVsLm5hdiA+IGxpOm50aC1vZi10eXBlKDIpID4gdWwuc3ViIHsgcmlnaHQ6MTBweDsgfSAubGFuZ3VhZ2VCYXIgZGl2OmZpcnN0LW9mLXR5cGUgeyBtYXJnaW4tcmlnaHQ6MTBweDsgfSAubWVudTcgLmZpbmFuY2UtbWVudS1mcmVlY3JlZGl0LmNlbnRlciB7IHJpZ2h0Oi0xNjBweCAhaW1wb3J0YW50OyBsZWZ0OmF1dG87IH0gLm1lbnU4IC5maW5hbmNlLW1lbnUtZnJlZWNyZWRpdC5jZW50ZXIgeyByaWdodDotMTYwcHggIWltcG9ydGFudDsgbGVmdDphdXRvOyB9IC5tZW51NSAuZmluYW5jZS1tZW51LWZyZWVjcmVkaXQuY2VudGVyIHsgcmlnaHQ6LTMwMHB4ICFpbXBvcnRhbnQ7IGxlZnQ6YXV0bzsgfSB9IC5kaXZTcGFuLnBhZ2VubyB7IG1hcmdpbi1sZWZ0OjA7IH0gLmRpdlNwYW4ucGFnZW5vIHVsIGxpIHNwYW4sIC5kaXZTcGFuLnBhZ2VubyB1bCBsaSBhLmZ0aXRsZSB7IGZvbnQtc2l6ZTowLjkzOHJlbSA7IG1heC13aWR0aDoyMjVweDsgfSAuZGl2U3Bhbi5wYWdlbm8gdWwgbGkgYSB7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IH0gLmFkciB7IGxpbmUtaGVpZ2h0OjEuMnJlbTsgbWFyZ2luOjAuNXJlbSAwOyB9ICNmb290ZXIuZGVhbGVyLXBvc2l0aW9uLWxlZnQgLmZvb3Rlci10aXRsZV9fY29udGFpbmVyIHsgbWFyZ2luLWJvdHRvbToycmVtOyB9ICNmb290ZXIuZGVhbGVyLXBvc2l0aW9uLWxlZnQgLmRpdlNwYW4zIHsgZmxvYXQ6bGVmdDsgbWFyZ2luLXRvcDoxNXB4OyBwYWRkaW5nLXJpZ2h0OjMwcHg7IHRleHQtYWxpZ246bGVmdDsgfSAjZm9vdGVyLmRlYWxlci1wb3NpdGlvbi1sZWZ0IC5kaXZTcGFuOSB7IGZsb2F0OnJpZ2h0OyB9ICNmb290ZXIuZGVhbGVyLXBvc2l0aW9uLWxlZnQgLnNvY2lhbC1zaGFyaW5nIHsgZmxvYXQ6dW5zZXQ7IGNsZWFyOnVuc2V0OyBtYXJnaW46MDsgfSAjZm9vdGVyLmRlYWxlci1wb3NpdGlvbi1sZWZ0IC5zb2NpYWwgeyBmbG9hdDpsZWZ0OyB9ICNmb290ZXIuZGVhbGVyLXBvc2l0aW9uLXJpZ2h0LmRlYWxlci1hbGlnbi1sZWZ0IC5zb2NpYWwtc2hhcmluZyB7IHdpZHRoOjI1JTsgZmxvYXQ6bGVmdDsgcGFkZGluZy1sZWZ0Ojc1JTsgfSAjZm9vdGVyLmRlYWxlci1wb3NpdGlvbi1yaWdodC5kZWFsZXItYWxpZ24tbGVmdCAuc29jaWFsIHsgZmxvYXQ6bGVmdDsgbWFyZ2luLWxlZnQ6MXJlbTsgfSAjZm9vdGVyLmRlYWxlci1wb3NpdGlvbi1yaWdodC5kZWFsZXItYWxpZ24tbGVmdCAuc29jaWFsOmZpcnN0LWNoaWxkIHsgbWFyZ2luOjA7IHBhZGRpbmc6MDsgfSAjZm9vdGVyIC5pY29uLXRleHR7IG1hcmdpbi1ib3R0b206LjRyZW07IH0gI2Zvb3RlciAuaWNvbi10ZXh0IHNwYW57IHdpZHRoOjIwcHg7IHBhZGRpbmc6MCAhaW1wb3J0YW50OyB9ICNmb290ZXIgLmZuLm9yZyB7IGxpbmUtaGVpZ2h0OjIuMDYyNXJlbTsgfSAuc21hbGxwaWNfYm94e3dpZHRoOjMyOXB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgbWFyZ2luOjA7fSAuc21hbGxwaWM0M3t3aWR0aDo0M3B4OyBoZWlnaHQ6MzFweDsgZmxvYXQ6bGVmdDsgbWFyZ2luOjAgNXB4IDAgMDsgYm9yZGVyOjJweCBzb2xpZCAjRkZGRkZGO30gLmRldGFpbHN7d2lkdGg6ODFweDsgaGVpZ2h0OjMwcHg7IGRpc3BsYXk6YmxvY2s7IH0gYS5kZXRhaWxze3dpZHRoOjgxcHg7IGhlaWdodDozMHB4OyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL2RldGFpbHMucG5nKSBsZWZ0IHRvcCBuby1yZXBlYXQ7fSBhOmhvdmVyLmRldGFpbHN7d2lkdGg6ODFweDsgaGVpZ2h0OjMwcHg7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvZGV0YWlscy5wbmcpIGxlZnQgLTMycHggbm8tcmVwZWF0O30gLmJpZ19waWNib3h7bWluLWhlaWdodDoxMTBweDt3aWR0aDoxNDZweDt9IC5iaWdfcGljYm94IGltZ3sgZGlzcGxheTpibG9jazsgfSAucGljYm94X3ZpZGVvYnRuX2VuLCAucGljYm94X3ZpZGVvYnRuX2ZyIHtkaXNwbGF5OmJsb2NrO2hlaWdodDo0NXB4O30gLnBpY2JveF92aWRlb2J0bl9lbiB7YmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvdmlkZW8tYnRuLXRodW1iX2VuLnBuZycpIG5vLXJlcGVhdCBzY3JvbGwgMCAwIC8gMTAwJSBhdXRvIHRyYW5zcGFyZW50O30gLnBpY2JveF92aWRlb2J0bl9mciB7YmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvdmlkZW8tYnRuLXRodW1iX2ZyLnBuZycpIG5vLXJlcGVhdCBzY3JvbGwgMCAwIC8gMTAwJSBhdXRvIHRyYW5zcGFyZW50O30gLnBpY2JveF92aWRlb2J0bl9lbjpob3ZlciB7YmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvdmlkZW8tYnRuLXRodW1iX2VuX2hvdmVyLnBuZycpIG5vLXJlcGVhdCBzY3JvbGwgMCAwIC8gMTAwJSBhdXRvIHRyYW5zcGFyZW50O30gLnBpY2JveF92aWRlb2J0bl9mcjpob3ZlciB7YmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvdmlkZW8tYnRuLXRodW1iX2ZyX2hvdmVyLnBuZycpIG5vLXJlcGVhdCBzY3JvbGwgMCAwIC8gMTAwJSBhdXRvIHRyYW5zcGFyZW50O30gLmJpZ19waWNib3hfd3JhcHBlciB7IHdpZHRoOjE0NnB4OyBmbG9hdDpsZWZ0OyBtYXJnaW46MCAxMHB4IDBweCAyMXB4OyB9IC50ZXh0X3RpdGxlIGF7IGRpc3BsYXk6YmxvY2s7dGV4dC1kZWNvcmF0aW9uOm5vbmU7IHdpZHRoOjMyOXB4OyBoZWlnaHQ6YXV0bzsgbWFyZ2luOjA7IHBhZGRpbmctYm90dG9tOjVweDsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzQxNDE0MTsgZm9udC13ZWlnaHQ6Ym9sZDt9IC50ZXh0X3RpdGxlMnt3aWR0aDozMjlweDsgaGVpZ2h0OjMycHg7IGZsb2F0OmxlZnQ7IG1hcmdpbjowIDsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzQxNDE0MTt9IC5zb2xkX2Nhcl9ub3Rle2JhY2tncm91bmQtY29sb3I6IzFFMUUxRTsgYm9yZGVyLXJhZGl1czo1cHg7IC13ZWJraXQtYm9yZGVyLXJhZGl1czo1cHg7IGNvbG9yOiNGRkY7IHdpZHRoOjEwMCU7IHBhZGRpbmc6MTBweCAwOyB0ZXh0LWFsaWduOmNlbnRlcjsgbWFyZ2luLXRvcDoxNXB4O30gLnNvbGRfY2FyX25vdGUgYSB7Y29sb3I6I0ZGRjt9IC5zb2xkX2Nhcl9ub3RlIGE6aG92ZXIge2NvbG9yOiNCQkI7fSAudGV4dF90aXRsZTN7d2lkdGg6MzI5cHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBtYXJnaW46MCA7IHBhZGRpbmctYm90dG9tOjdweDsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzQ4NDg0ODt9IC50ZXh0X2JveDJ7d2lkdGg6MzI5cHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBtYXJnaW46MCAwcHggMHB4IDBweDsgfSAubWFpbl9waWNib3h7d2lkdGg6NjcxcHg7IG1pbi1oZWlnaHQ6MTcwcHg7IGZsb2F0OmxlZnQ7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvbGluZS5wbmcpIGxlZnQgYm90dG9tIHJlcGVhdC14OyBiYWNrZ3JvdW5kLXBvc2l0aW9uOmJvdHRvbTsgcGFkZGluZzowOyBtYXJnaW46MCA7fSAuYm94Ml9kZXRhaWxzX2Zvb3RlcjJ7d2lkdGg6NjgxcHg7IGhlaWdodDoxNXB4OyBmbG9hdDpsZWZ0OyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL2JveF9mb290ZXIucG5nKSBsZWZ0IHRvcCBuby1yZXBlYXQ7fSAuYm94Ml9kZXRhaWxzX21pZEV4e3dpZHRoOjEwMCU7IGhlaWdodDphdXRvOyBiYWNrZ3JvdW5kOm5vbmU7IHBhZGRpbmc6MCAwcHg7aGVpZ2h0Ojg1cHg7fSAuYm94Ml9kZXRhaWxzX3RleHQgc3BhbnsgdGV4dC1hbGlnbjpjZW50ZXI7IGZvbnQtc2l6ZToxLjEyNXJlbSA7IGNvbG9yOiNGRkZGRkY7IGZvbnQtd2VpZ2h0OmJvbGQ7fSAuYm94Ml9kZXRhaWxzX2Zvb3RlcjIye3dpZHRoOjk3MXB4OyBoZWlnaHQ6MTVweDsgZmxvYXQ6bGVmdDsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9ib3hfZm9vdGVyLnBuZykgbGVmdCB0b3Agbm8tcmVwZWF0O2JhY2tncm91bmQtc2l6ZTo5NzFweCBhdXRvO30gLmJveDE3MHtwb3NpdGlvbjpyZWxhdGl2ZTt3aWR0aDo2NzFweDsgbWluLWhlaWdodDoxNzBweDsgZmxvYXQ6bGVmdDsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9saW5lLnBuZykgbGVmdCBib3R0b20gbm8tcmVwZWF0OyBiYWNrZ3JvdW5kLXBvc2l0aW9uOmJvdHRvbTsgcGFkZGluZzowOyBtYXJnaW46MCAwcHggMTBweCAwO30gLmN1c3RvbUJveEJhc2ljeyB3aWR0aDoyNDFweDsgaGVpZ2h0OjExNnB4OyBmbG9hdDpsZWZ0OyBwYWRkaW5nOjVweCAwIDAgMDsgYmFja2dyb3VuZC1wb3NpdGlvbjpsZWZ0IHRvcDsgYmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0OyBiYWNrZ3JvdW5kLXNpemU6MjQxcHggMTIxcHg7IGZvbnQtc2l6ZToxLjE4OHJlbSA7IGNvbG9yOiMxOTE5MTk7IHRleHQtYWxpZ246Y2VudGVyOyBmb250LXdlaWdodDpub3JtYWw7IGN1cnNvcjpwb2ludGVyOyB9IC5jdXN0b21Cb3hCYXNpYzpob3ZlcnsgY29sb3I6I2ZmZjsgfSAuY3VzdG9tNSB7IGJhY2tncm91bmQtaW1hZ2U6dXJsKC9pbWFnZXMvYm94MjJfaG92ZXIucG5nKTsgfSAuY3VzdG9tNTUgeyBiYWNrZ3JvdW5kLWltYWdlOnVybCgvaW1hZ2VzL2JveDIyLnBuZyk7IH0gLmN1c3RvbTY2NSB7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvYm94MjNfaG92ZXIucG5nKTsgfSAuY3VzdG9tNjY1NSB7IGJhY2tncm91bmQtaW1hZ2U6dXJsKC9pbWFnZXMvYm94MjMucG5nKTsgfSAuY3VzdG9tNjc1IHsgYmFja2dyb3VuZC1pbWFnZTp1cmwoL2ltYWdlcy9ib3gyNy5wbmcpOyB9IC5jdXN0b202NzU1IHsgYmFja2dyb3VuZC1pbWFnZTp1cmwoL2ltYWdlcy9ib3gyN19ob3Zlci5wbmcpOyB9IC5jdXN0b202ODUgeyBiYWNrZ3JvdW5kLWltYWdlOnVybCgvaW1hZ2VzL2JveDI4LnBuZyk7IH0gLmN1c3RvbTY4NTUgeyBiYWNrZ3JvdW5kLWltYWdlOnVybCgvaW1hZ2VzL2JveDI4X2hvdmVyLnBuZyk7IH0gLmltYWdlX3JpYmJvbiB7IHBvc2l0aW9uOmFic29sdXRlOyBsZWZ0Oi01cHg7IHRvcDotNHB4OyB6LWluZGV4OjE7IG92ZXJmbG93OmhpZGRlbjsgd2lkdGg6MTEycHg7IGhlaWdodDoxMTJweDsgdGV4dC1hbGlnbjpyaWdodDsgfSAuaW1hZ2VfcmliYm9uIHNwYW4geyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojZmZmZmZmOyB0ZXh0LWFsaWduOmNlbnRlcjsgbGluZS1oZWlnaHQ6MjhweDsgdHJhbnNmb3JtOnJvdGF0ZSgtNDVkZWcpOyAtd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoLTQ1ZGVnKTsgd2lkdGg6MTQ4cHg7IGRpc3BsYXk6YmxvY2s7IGJhY2tncm91bmQ6IzMzNGM5NjsgYm94LXNoYWRvdzowIDNweCAxMHB4IC01cHggcmdiYSgwLCAwLCAwLCAxKTsgcG9zaXRpb246YWJzb2x1dGU7IHRvcDozMHB4OyBsZWZ0Oi0zMHB4OyB9IC5pbWFnZV9yaWJib24gc3Bhbjo6YmVmb3JlIHsgY29udGVudDoiIjsgcG9zaXRpb246YWJzb2x1dGU7IGxlZnQ6MHB4OyB0b3A6MTAwJTsgei1pbmRleDotMTsgYm9yZGVyLWxlZnQ6M3B4IHNvbGlkICMzMzRjOTY7IGJvcmRlci1yaWdodDozcHggc29saWQgdHJhbnNwYXJlbnQ7IGJvcmRlci1ib3R0b206M3B4IHNvbGlkIHRyYW5zcGFyZW50OyBib3JkZXItdG9wOjNweCBzb2xpZCAjMzM0Yzk2OyB9IC5pbWFnZV9yaWJib24gc3Bhbjo6YWZ0ZXIgeyBjb250ZW50OiIiOyBwb3NpdGlvbjphYnNvbHV0ZTsgcmlnaHQ6MHB4OyB0b3A6MTAwJTsgei1pbmRleDotMTsgYm9yZGVyLWxlZnQ6M3B4IHNvbGlkIHRyYW5zcGFyZW50OyBib3JkZXItcmlnaHQ6M3B4IHNvbGlkICMzMzRjOTY7IGJvcmRlci1ib3R0b206M3B4IHNvbGlkIHRyYW5zcGFyZW50OyBib3JkZXItdG9wOjNweCBzb2xpZCAjMzM0Yzk2OyB9IC5pbWFnZV9yaWJib25fdmRwIHsgcG9zaXRpb246YWJzb2x1dGU7IGxlZnQ6LTVweDsgdG9wOi02cHg7IG92ZXJmbG93OmhpZGRlbjsgd2lkdGg6MTk0cHg7IGhlaWdodDoxOTRweDsgdGV4dC1hbGlnbjpyaWdodDsgei1pbmRleDo0MDsgfSAuaW1hZ2VfcmliYm9uX3ZkcCBzcGFuIHsgZm9udC1zaXplOjEuMDYzcmVtIDsgY29sb3I6I2ZmZmZmZjsgdGV4dC1hbGlnbjpjZW50ZXI7IGxpbmUtaGVpZ2h0OjM2cHg7IHRyYW5zZm9ybTpyb3RhdGUoLTQ1ZGVnKTsgLXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKC00NWRlZyk7IHdpZHRoOjI3M3B4OyBkaXNwbGF5OmJsb2NrOyBiYWNrZ3JvdW5kOiMzMzRjOTY7IGJveC1zaGFkb3c6MCAzcHggMTBweCAtNXB4IHJnYmEoMCwgMCwgMCwgMSk7IHBvc2l0aW9uOmFic29sdXRlOyB0b3A6NjdweDsgbGVmdDotNTFweDsgfSAuaW1hZ2VfcmliYm9uX3ZkcCBzcGFuOjpiZWZvcmUgeyBjb250ZW50OiIiOyBwb3NpdGlvbjphYnNvbHV0ZTsgbGVmdDowcHg7IHRvcDoxMDAlOyB6LWluZGV4Oi0xOyBib3JkZXItbGVmdDozcHggc29saWQgI2ZmZmZmZjs7IGJvcmRlci1yaWdodDozcHggc29saWQgdHJhbnNwYXJlbnQ7IGJvcmRlci1ib3R0b206M3B4IHNvbGlkIHRyYW5zcGFyZW50OyBib3JkZXItdG9wOjNweCBzb2xpZCAjZmZmZmZmOzsgfSAuaW1hZ2VfcmliYm9uX3ZkcCBzcGFuOjphZnRlciB7IGNvbnRlbnQ6IiI7IHBvc2l0aW9uOmFic29sdXRlOyByaWdodDowcHg7IHRvcDoxMDAlOyB6LWluZGV4Oi0xOyBib3JkZXItbGVmdDozcHggc29saWQgdHJhbnNwYXJlbnQ7IGJvcmRlci1yaWdodDozcHggc29saWQgI2ZmZmZmZjs7IGJvcmRlci1ib3R0b206M3B4IHNvbGlkIHRyYW5zcGFyZW50OyBib3JkZXItdG9wOjNweCBzb2xpZCAjZmZmZmZmOzsgfSAucmliYm9uLWNvbnRhaW5lciB7IHdpZHRoIDozMDBweDsgaGVpZ2h0IDozMDBweDsgb3ZlcmZsb3cgOmhpZGRlbjsgcG9zaXRpb24gOmFic29sdXRlOyB0b3AgOjA7IGxlZnQgOjA7IH0gLnJpYmJvbi1jb250YWluZXIgLmNvcm5lci1yaWJib24geyB6LWluZGV4IDo1NTU7IG1hcmdpbiA6MDsgcGFkZGluZyA6MC41cmVtIDAgIWltcG9ydGFudDsgYm94LXNoYWRvdyA6MCAzcHggMTBweCAtNXB4IHJnYmEoMCwgMCwgMCwgMSk7IGZvbnQtc2l6ZSA6MTdweDsgbGluZS1oZWlnaHQgOjIzcHg7IHRleHQtYWxpZ24gOmNlbnRlcjsgcG9zaXRpb24gOmFic29sdXRlOyB0b3AgOjA7IGxlZnQgOjA7IHRyYW5zZm9ybSA6dHJhbnNsYXRlWCgtMzAlKSB0cmFuc2xhdGVZKDAlKSByb3RhdGUoLTQ1ZGVnKTsgdHJhbnNmb3JtLW9yaWdpbiA6dG9wIHJpZ2h0OyBiYWNrZ3JvdW5kIDojMzM0Yzk2OyBjb2xvciA6I2ZmZmZmZjsgfSAucmliYm9uLWNvbnRhaW5lciAuY29ybmVyLXJpYmJvbjpiZWZvcmUsIC5yaWJib24tY29udGFpbmVyIC5jb3JuZXItcmliYm9uOmFmdGVyIHsgY29udGVudCA6IiI7IHBvc2l0aW9uIDphYnNvbHV0ZTsgdG9wIDowOyBtYXJnaW4gOjAgLTFweDsgd2lkdGggOjEwMCU7IGhlaWdodCA6MTAwJTsgYmFja2dyb3VuZCA6IzMzNGM5NjsgfSAucmliYm9uLWNvbnRhaW5lciAuY29ybmVyLXJpYmJvbjpiZWZvcmUgeyBsZWZ0OjEwMCU7IH0gLnJpYmJvbi1jb250YWluZXIgLmNvcm5lci1yaWJib246YWZ0ZXIgeyByaWdodDoxMDAlOyB9IC5zZWFyY2hyaWdodCB7IHdpZHRoOjI4MHB4OyBoZWlnaHQ6MTE2cHg7IHBhZGRpbmc6NXB4IDAgMCAwOyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL3JpZ2h0LXNlYXJjaC1ib3gucG5nKSBsZWZ0IHRvcCByZXBlYXQteDsgZm9udC1zaXplOjEuMTg4cmVtIDsgY29sb3I6IzE5MTkxOTsgdGV4dC1hbGlnbjpjZW50ZXI7IGZvbnQtd2VpZ2h0Om5vcm1hbDtjdXJzb3I6cG9pbnRlcjsgfSAuc2VhcmNocmlnaHRob3ZlciB7IHdpZHRoOjI4MHB4OyBoZWlnaHQ6MTE2cHg7IHBhZGRpbmc6NXB4IDAgMCAwOyBtYXJnaW46MCAwIDAgMDsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9yaWdodC1zZWFyY2gtYm94LWhvdmVyLnBuZykgbGVmdCB0b3AgcmVwZWF0LXg7IGZvbnQtc2l6ZToxLjE4OHJlbSA7IGNvbG9yOiNGRkZGRkY7IHRleHQtYWxpZ246Y2VudGVyOyBmb250LXdlaWdodDpub3JtYWw7IGN1cnNvcjpwb2ludGVyOyB9IC5zZWFyY2hyaWdodFhYWCB7IHdpZHRoOjI4MHB4OyBoZWlnaHQ6MTE2cHg7IHBhZGRpbmc6NXB4IDAgMCAwOyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL3JpZ2h0LXNlYXJjaC1ib3gucG5nKSBsZWZ0IHRvcCBuby1yZXBlYXQgIzAwMDAwMDsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6I0ZGRkZGRjsgdGV4dC1hbGlnbjpjZW50ZXI7IGZvbnQtd2VpZ2h0OmJvbGQ7Y3Vyc29yOnBvaW50ZXI7IGJvcmRlci1yYWRpdXM6OHB4OyAtbW96LWJvcmRlci1yYWRpdXM6OHB4OyAtd2Via2l0LWJvcmRlci1yYWRpdXM6OHB4OyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gLnNlYXJjaHJpZ2h0aG92ZXJYWFggeyB3aWR0aDoyODBweDsgaGVpZ2h0OjExNnB4OyBwYWRkaW5nOjVweCAwIDAgMDsgbWFyZ2luOjAgMCAwIDA7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvcmlnaHQtc2VhcmNoLWJveC1ob3Zlci5wbmcpIGxlZnQgdG9wIG5vLXJlcGVhdCAjMDAwMDAwOyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojRkZGRkZGOyB0ZXh0LWFsaWduOmNlbnRlcjsgZm9udC13ZWlnaHQ6Ym9sZDsgY3Vyc29yOnBvaW50ZXI7IGJvcmRlci1yYWRpdXM6OHB4OyAtbW96LWJvcmRlci1yYWRpdXM6OHB4OyAtd2Via2l0LWJvcmRlci1yYWRpdXM6OHB4OyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gLnNlYXJjaHJpZ2h0LXRleHR7IG1hcmdpbi1sZWZ0OjEwMHB4OyB0ZXh0LWFsaWduOmxlZnQ7IHdpZHRoOjYwJTsgfSAuc2VhcmNocmlnaHQtdGV4dCBweyBtYXJnaW46MTVweCAwIDA7IH0gLnBhZ2VubzJ7aGVpZ2h0OjI0cHg7IH0gLnBhZ2VubzIgdWx7IGxpc3Qtc3R5bGUtdHlwZTpub25lOyBtYXJnaW46MDsgcGFkZGluZzowOyB0ZXh0LXRyYW5zZm9ybTpub25lOyB9IC5wYWdlbm8yIHVsIGxpeyBsaXN0LXN0eWxlLXR5cGU6bm9uZTsgbWFyZ2luOjA7IGRpc3BsYXk6aW5saW5lO30gLnBhZ2VubzIgdWwgbGkgYXsgbGlzdC1zdHlsZS10eXBlOm5vbmU7IG1hcmdpbjowOyBkaXNwbGF5OmJsb2NrOyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojMzIzMjMyOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgcGFkZGluZzowIDdweDsgbWFyZ2luLXJpZ2h0OjJweDsgZm9udC13ZWlnaHQ6Ym9sZDsgbGluZS1oZWlnaHQ6MjRweDsgdGV4dC10cmFuc2Zvcm06bm9uZTsgdGV4dC1hbGlnbjpjZW50ZXI7IHRleHQtdHJhbnNmb3JtOm5vbmU7IGJhY2tncm91bmQ6I2IzYjRiNTsgZmxvYXQ6bGVmdDsgLW1vei1ib3JkZXItcmFkaXVzOjRweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjRweDsgYm9yZGVyLXJhZGl1czo0cHg7IC1raHRtbC1ib3JkZXItcmFkaXVzOjRweDt9IC5wYWdlbm8yIHVsIGxpIGE6aG92ZXJ7IGxpc3Qtc3R5bGUtdHlwZTpub25lOyBtYXJnaW46MDsgZGlzcGxheTpibG9jazsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6I0ZGRkZGRjsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IHBhZGRpbmc6MCA3cHg7IG1hcmdpbi1yaWdodDoycHg7IGZvbnQtd2VpZ2h0OmJvbGQ7IGxpbmUtaGVpZ2h0OjI0cHg7IHRleHQtdHJhbnNmb3JtOm5vbmU7IHRleHQtYWxpZ246Y2VudGVyOyB0ZXh0LXRyYW5zZm9ybTpub25lOyBiYWNrZ3JvdW5kOiMyODI4Mjg7IGZsb2F0OmxlZnQ7IC1tb3otYm9yZGVyLXJhZGl1czo0cHg7IC13ZWJraXQtYm9yZGVyLXJhZGl1czo0cHg7IGJvcmRlci1yYWRpdXM6NHB4OyAta2h0bWwtYm9yZGVyLXJhZGl1czo0cHg7fSAucGFnZW5vMiBsaSBhLmFjdGl2ZXsgbGlzdC1zdHlsZS10eXBlOm5vbmU7IG1hcmdpbjowOyBkaXNwbGF5OmJsb2NrOyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojRkZGRkZGOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgcGFkZGluZzowIDdweDsgbWFyZ2luLXJpZ2h0OjJweDsgZm9udC13ZWlnaHQ6Ym9sZDsgbGluZS1oZWlnaHQ6MjRweDsgdGV4dC10cmFuc2Zvcm06bm9uZTsgdGV4dC1hbGlnbjpjZW50ZXI7IHRleHQtdHJhbnNmb3JtOm5vbmU7IGJhY2tncm91bmQ6IzI4MjgyODsgZmxvYXQ6bGVmdDsgLW1vei1ib3JkZXItcmFkaXVzOjRweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjRweDsgYm9yZGVyLXJhZGl1czo0cHg7IC1raHRtbC1ib3JkZXItcmFkaXVzOjRweDt9IC5tYWluX2JveHt3aWR0aDo5NjBweDsgbWFyZ2luOjAgYXV0bzt9IC5tYWluX2xlZnRfYm94e3dpZHRoOjY3MHB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDtwYWRkaW5nLXJpZ2h0OjEwcHg7fSAubWFpbl9sZWZ0X2JveCB1bHtwYWRkaW5nOjBweDt9IC5ib3hfbWlkX3JvdW5kIHsgYmFja2dyb3VuZC1jb2xvcjpyZ2IoMjU1LDI1NSwyNTUpOyAtbXMtZmlsdGVyOnByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5BbHBoYShPcGFjaXR5PTEwMCk7IGJhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwxKTsgYm9yZGVyLXJhZGl1czo1cHg7IGJveC1zaGFkb3c6bm9uZTsgZmxvYXQ6bGVmdDsgaGVpZ2h0OmF1dG87IG1hcmdpbi10b3A6MTBweDsgfSAuYm94X3RvcF9yb3VuZCB7IGRpc3BsYXk6bm9uZTsgfSAuYm94Ml9kZXRhaWxzX2Zvb3RlcjIgeyBkaXNwbGF5Om5vbmU7IH0gLmRldGFpbHNfYm94IGltZy52aXB7IG1hcmdpbi10b3A6LTQ4cHg7IHdpZHRoOjE0MHB4OyBib3JkZXI6MXB4OyBib3JkZXItcmFkaXVzOjRweDsgfSAuYm94X3RvcF9yb3VuZDJ7d2lkdGg6OTcxcHg7IGhlaWdodDoxNXB4OyBmbG9hdDpsZWZ0OyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL2JveF90b3AucG5nKSBsZWZ0IHRvcCBuby1yZXBlYXQ7YmFja2dyb3VuZC1zaXplOjk3MXB4IGF1dG87IG1hcmdpbi10b3A6NXB4O30gLmJveF9taWRfcm91bmQye3dpZHRoOjk3MXB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9ib3hfbWlkLnBuZykgbGVmdCB0b3AgcmVwZWF0LXk7YmFja2dyb3VuZC1zaXplOjk3MXB4IGF1dG87IHBhZGRpbmc6MCA1cHg7fSAucGFnZV9uYW1le3dpZHRoOjY1MHB4OyBoZWlnaHQ6MzBweDsgZmxvYXQ6bGVmdDsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9zaG8ucG5nKSBjZW50ZXIgYm90dG9tIG5vLXJlcGVhdDsgYmFja2dyb3VuZC1wb3NpdGlvbjpib3R0b207IHBhZGRpbmc6MCAwcHggMHB4IDIxcHg7IGxpbmUtaGVpZ2h0OjMwcHg7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiM0MTQxNDE7fSAucGFnZV9uYW1lIGF7IGxpbmUtaGVpZ2h0OjMwcHg7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiM0MTQxNDE7IHRleHQtdHJhbnNmb3JtOm5vbmU7IHRleHQtZGVjb3JhdGlvbjpub25lO30gLnBhZ2VfbmFtZSBhOmhvdmVyeyBsaW5lLWhlaWdodDozMHB4OyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojMDA1ODljOyB0ZXh0LXRyYW5zZm9ybTpub25lOyB0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lO30gdGFibGUudmVoaWNsZUxpc3RUYWJsZSBhe2Rpc3BsYXk6dGFibGUtY2VsbDsgdmVydGljYWwtYWxpZ246bWlkZGxlO2xpbmUtaGVpZ2h0OjEuMjt9IHRhYmxlLnZlaGljbGVMaXN0VGFibGUgYTpob3ZlcntkaXNwbGF5OnRhYmxlLWNlbGw7IHZlcnRpY2FsLWFsaWduOm1pZGRsZTtsaW5lLWhlaWdodDoxLjI7fSAuUG9yc2NoZTJ7d2lkdGg6MTAwJTtoZWlnaHQ6MzFweDsgZmxvYXQ6bGVmdDsgcGFkZGluZzowIDBweCAyMHB4IDIxcHg7IG1hcmdpbjoxNXB4IDAgMjVweCAwOyBsaW5lLWhlaWdodDozMXB4OyBmb250LXNpemU6MS44NzVyZW0gOyBjb2xvcjojNDE0MTQxO2Rpc3BsYXk6aW5saW5lfSAuUG9yc2NoZTIgaDF7Zm9udC13ZWlnaHQ6bm9ybWFsOyBmb250LXNpemU6MS44NzVyZW0gOyBjb2xvcjojNDE0MTQxO30gLlRyaWVycGFyeyBmb250LXNpemU6MC43NXJlbSA7IGNvbG9yOiM1QjY5OUM7IGZvbnQtd2VpZ2h0Om5vcm1hbDtwYWRkaW5nLWxlZnQ6NXB4O30gLnNlbGVjdGVkX2JveDJ7d2lkdGg6MTc1cHg7IGhlaWdodDozMXB4OyBmbG9hdDpsZWZ0OyBwYWRkaW5nOjAgMHB4IDBweCAwcHg7IG1hcmdpbjoxNXB4IDA7IGxpbmUtaGVpZ2h0OjMxcHg7IGZvbnQtc2l6ZToxLjg3NXJlbSA7IGNvbG9yOiM0MTQxNDE7fSAuc2VsZWN0ZWRfb3JkZXJieXt3aWR0aDoxMzVweDsgZmxvYXQ6cmlnaHQ7IHBhZGRpbmc6MCAwcHggMHB4IDBweDsgbWFyZ2luOjEwcHggMTBweCAwcHggMHB4OyBmb250LXNpemU6MS44NzVyZW0gOyBjb2xvcjojNDE0MTQxO30gLnByaXh7d2lkdGg6NzlweDsgaGVpZ2h0Ojc4cHg7IGZsb2F0OmxlZnQ7IHBvc2l0aW9uOmFic29sdXRlOyB6LWluZGV4OjExOyBtYXJnaW4tdG9wOi00cHg7IG1hcmdpbi1sZWZ0Oi00cHg7IHRvcDowcHg7fSAucGFnZW5vNXt3aWR0aDoxMDAlOyBoZWlnaHQ6MjRweDsgbWFyZ2luOjMwcHggMCAyMHB4IDBweDsgcGFkZGluZzowOyBmbG9hdDpsZWZ0IH0gLnBhZ2VubzZ7d2lkdGg6MjU0cHg7IGhlaWdodDoyNHB4OyBmbG9hdDpsZWZ0OyB0ZXh0LWFsaWduOnJpZ2h0O30gLnN1aXZhbnR7d2lkdGg6MjgwcHg7IGhlaWdodDoxOXB4OyBmbG9hdDpsZWZ0OyBwYWRkaW5nLXRvcDo1cHg7fSAubWFpbl9yaWdodF9ib3h7d2lkdGg6MjgwcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0O30gLmJveDd7d2lkdGg6MjkwcHg7IGhlaWdodDoxMnB4OyBmbG9hdDpsZWZ0OyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL2xlZnRfYm94X3RvcC5wbmcpIGxlZnQgdG9wIG5vLXJlcGVhdDsgfSAuYm94N0xpbmt7d2lkdGg6MjkwcHg7IGhlaWdodDoxMnB4OyBmbG9hdDpsZWZ0OyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL2xlZnRfYm94X3RvcC5wbmcpIGxlZnQgdG9wIG5vLXJlcGVhdDsgfSAuYm94N19taWR7d2lkdGg6MjgwcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL2xlZnRfYm94X21pZC5wbmcpIGxlZnQgdG9wIHJlcGVhdC15OyBwYWRkaW5nOjAgMnB4O30gLmJveDdfbWlkX2Z1bGx7d2lkdGg6OTU2cHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBiYWNrZ3JvdW5kOm5vbmUgbGVmdCB0b3Agbm8tcmVwZWF0IDAgMCB0cmFuc3BhcmVudDsgcGFkZGluZzowIDJweCAxNXB4OyBib3JkZXItYm90dG9tOjFweCBzb2xpZCAjQkJCO30gLnNpbXVsYXJfdl9ib3h7IHdpZHRoOjI2NXB4OyBwYWRkaW5nOjBweCAwcHggNXB4IDEwcHg7IG1hcmdpbi1ib3R0b206NXB4OyB9IC5ib3hTZWFyY2hOZXdze21hcmdpbi10b3A6LTNweDttYXJnaW4tbGVmdDotNXB4O3dpZHRoOjI4NXB4OyBoZWlnaHQ6MTJweDsgZmxvYXQ6bGVmdDsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9sZWZ0X2JveF90b3BfMjgwLnBuZykgbGVmdCB0b3Agbm8tcmVwZWF0O30gLmJveFNlYXJjaE5ld3NfbWlke21hcmdpbi1sZWZ0Oi01cHg7cGFkZGluZzowcHg7d2lkdGg6MjgxcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL2xlZnRfYm94X21pZF8yODAucG5nKSBsZWZ0IHRvcCByZXBlYXQteTsgfSAuYm94U2VhcmNoTmV3c19mb290ZXIxNXttYXJnaW4tbGVmdDotNXB4O3dpZHRoOjI4NXB4OyBoZWlnaHQ6MTJweDsgZmxvYXQ6bGVmdDsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9sZWZ0X2JveF9mb290ZXJfMjgwLnBuZykgbGVmdCB0b3Agbm8tcmVwZWF0O30gLmJveDdIX21pZHt3aWR0aDoyODBweDsgZmxvYXQ6bGVmdDsgcGFkZGluZy1ib3R0b206NnB4O30gLlJlY2hlcmNoZTIye2hlaWdodDoyMHB4OyBwYWRkaW5nOjEwcHggN3B4OyBmb250LXNpemU6MS4xMjVyZW0gOyBjb2xvcjojMmMyYzJjO30gLnNpbVRpdGxle2hlaWdodDphdXRvOyBwYWRkaW5nOjBweDsgZm9udC1zaXplOjEuMTI1cmVtIDsgY29sb3I6IzBmMWExZTt9IC5ib3g4e3dpZHRoOjI3MHB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgcGFkZGluZzowcHggMHB4IDBweCAxMHB4O30gLmJveDl7d2lkdGg6MjBweDsgaGVpZ2h0OjE4cHg7IGZsb2F0OmxlZnQ7IHBhZGRpbmc6MHB4IDBweCAxNHB4IDBweDsgZm9udC1zaXplOjEuMTI1cmVtIDsgY29sb3I6IzBmMWExZTt9IC5ib3gxMXt3aWR0aDoxMDBweDsgaGVpZ2h0OjExcHg7IGZsb2F0OmxlZnQ7IHBhZGRpbmc6N3B4IDBweCAxNHB4IDBweDsgZm9udC1zaXplOjAuODEzcmVtIDsgY29sb3I6IzU3NTc1NzsgbGluZS1oZWlnaHQ6MThweDt9IC5ib3gxMnt3aWR0aDoxMzBweDsgaGVpZ2h0OjExcHg7IGZsb2F0OmxlZnQ7IHBhZGRpbmc6N3B4IDBweCAxNHB4IDBweDsgZm9udC1zaXplOjAuODEzcmVtIDsgY29sb3I6IzU3NTc1NzsgbGluZS1oZWlnaHQ6MThweDt9IC5zZWxlY3RfYm94MTR7aGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IHBhZGRpbmc6MHB4IDEwcHggMHB4IDBweDsgbWFyZ2luLWJvdHRvbTozcHg7fSAuc2VsZWN0X2JveDE2e2hlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBwYWRkaW5nOjBweCAxMHB4IDBweCAxMHB4OyBtYXJnaW4tYm90dG9tOjNweDt9IC5zZWxlY3RfYm94MTV7aGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IHBhZGRpbmc6MTBweCAxMHB4IDBweCAxMHB4OyBtYXJnaW4tYm90dG9tOjEwcHg7fSAuc2VsZWN0X2JveDExNXt3aWR0aDoxMTVweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IHBhZGRpbmc6MHB4IDBweCAwcHggMTBweDsgbWFyZ2luLWJvdHRvbToxMHB4O30gLnNlbGVjdF9ib3g4MHt3aWR0aDo4MHB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgcGFkZGluZzowcHggMHB4IDBweCAwcHg7IG1hcmdpbi1ib3R0b206MTBweDt9IC5hX3RleHR7d2lkdGg6MjBweDsgZmxvYXQ6bGVmdDsgZm9udC1zaXplOjAuODEzcmVtIDsgY29sb3I6IzU3NTc1NzsgbGluZS1oZWlnaHQ6MzFweDsgdGV4dC1hbGlnbjpjZW50ZXI7IHBhZGRpbmc6MCA1cHg7fSAuYWpvdXRlcnt3aWR0aDoxMDAlOyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgcGFkZGluZzoxMHB4IDA7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiNGRkZGRkY7IGJhY2tncm91bmQtY29sb3I6IzFmMWYxZjttYXJnaW46NXB4IDAgMTBweCAwcHg7fSAuYWpvdXRlcl9he2JhY2tncm91bmQ6dXJsKCIvaW1hZ2VzL3NlYXJjaC1kb3duLWFycm93LnBuZyIpIG5vLXJlcGVhdCBzY3JvbGwgbGVmdCAzcHggdHJhbnNwYXJlbnQ7IHBhZGRpbmctbGVmdDoyNXB4OyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojRkZGRkZGOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgfSAuYWpvdXRlcl9hX2Z1bGx7YmFja2dyb3VuZDp1cmwoIi9pbWFnZXMvc2VhcmNoLXJpZ2h0LWFycm93LnBuZyIpIG5vLXJlcGVhdCBzY3JvbGwgcmlnaHQgLTFweCB0cmFuc3BhcmVudDsgcGFkZGluZy1yaWdodDoyNXB4OyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojRkZGRkZGOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgfSAuYm94MTN7d2lkdGg6MjYwcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBwYWRkaW5nOjBweCAxMHB4IDBweCAxMHB4O30gLmlucHV0X2JveDJ7d2lkdGg6MjBweDsgaGVpZ2h0OjE4cHg7IGZsb2F0OmxlZnQ7IHBhZGRpbmc6MHB4IDBweCAxNHB4IDBweDsgZm9udC1zaXplOjEuMTI1cmVtIDsgY29sb3I6IzBmMWExZTt9IC5pbnB1dF90ZXh0eyB3aWR0aDoxOTVweDsgaGVpZ2h0OjExcHg7IGZsb2F0OmxlZnQ7IHBhZGRpbmc6M3B4IDBweCA3cHggNXB4OyBmb250LXNpemU6MC44MTNyZW0gOyBjb2xvcjojNTc1NzU3OyBsaW5lLWhlaWdodDoxOHB4OyB9IC5idXR0b25fYm94Mnt3aWR0aDoyNjBweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IH0gLmJ1dHRvbl9ib3hTMnsgd2lkdGg6MjQ2cHg7IGhlaWdodDoyOXB4OyBmbG9hdDpsZWZ0OyBwYWRkaW5nOjEwcHggM3B4IDEzcHggM3B4OyB9IC5ib3gtZm9vdGVyMTV7d2lkdGg6MjkwcHg7IGhlaWdodDoxMnB4OyBmbG9hdDpsZWZ0OyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL2xlZnRfYm94X2Zvb3Rlci5wbmcpIGxlZnQgdG9wIG5vLXJlcGVhdDt9IC5kaXN7IG1hcmdpbi10b3A6NXB4OyBtYXJnaW4tbGVmdDo1cHg7IHdpZHRoOjI0MHB4O30gLmRpc19jdXN0b217IHdpZHRoOjI0MHB4O3dpZHRoOjI0MHB4O30gLmRpc190b3B7IHdpZHRoOjI0NnB4OyBoZWlnaHQ6OXB4OyBmbG9hdDpsZWZ0O30gLmRpc190b3BfY3VzdG9teyB3aWR0aDoyMzhweDsgaGVpZ2h0OjQwcHg7IGZsb2F0OmxlZnQ7IGNvbG9yOiMwMDAwMDA7IGJhY2tncm91bmQ6I2NiY2JjYjt9IC5kaXNfYmd7IHdpZHRoOjI0NnB4OyBoZWlnaHQ6MTUwcHg7IGZsb2F0OmxlZnQ7IGNvbG9yOiMyODI4Mjg7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvZGlzX2JnLnBuZykgbGVmdCB0b3AgcmVwZWF0LXk7fSAuX2Rpc19iZ3sgd2lkdGg6MjQwcHg7IGhlaWdodDoyMDBweDsgZmxvYXQ6bGVmdDsgY29sb3I6IzI4MjgyODt9IC5kaXNfYmdfY3VzdG9teyBmbG9hdDpsZWZ0OyBjb2xvcjojMjgyODI4OyBiYWNrZ3JvdW5kOnJnYmEoMjU1LDI1NSwyNTUsMSk7fSAuX2Rpc19iZ19jdXN0b217IGZsb2F0OmxlZnQ7IGNvbG9yOiMyODI4Mjg7IGJhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwxKTt9IC5kaXNfYm91eyB3aWR0aDoyNDZweDsgaGVpZ2h0OjUwcHg7IGZsb2F0OmxlZnQ7IGNvbG9yOiMyZDJkMmQ7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvZGlzX2JvdS5wbmcpIGxlZnQgdG9wIG5vLXJlcGVhdDt9IC5fZGlzX2JvdXsgd2lkdGg6MjQwcHg7IGhlaWdodDozOHB4OyBmbG9hdDpsZWZ0OyBib3JkZXItcmFkaXVzOjAgMCA2cHggNnB4OyBtYXJnaW4tdG9wOjE0cHg7IGNvbG9yOiMyZDJkMmQ7OyB9IC5kaXNfYm91X2N1c3RvbXsgd2lkdGg6MjM4cHg7IGhlaWdodDo1MHB4OyBmbG9hdDpsZWZ0OyBwYWRkaW5nLXRvcDo1cHg7IGNvbG9yOiMyYzJjMmM7IGJhY2tncm91bmQ6I2ZmZmZmZjt9IC5fZGlzX2JvdV9jdXN0b217IHdpZHRoOjI0MHB4OyBoZWlnaHQ6NDBweDsgZmxvYXQ6bGVmdDsgY29sb3I6IzJjMmMyYzsgYm9yZGVyLXJhZGl1czowIDAgNnB4IDZweDsgbWFyZ2luLXRvcDoxMnB4OyBiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmY7IH0gLmRpc19ib3VfMnsgd2lkdGg6MjQ2cHg7IGhlaWdodDo5cHg7IGZsb2F0OmxlZnQ7IGNvbG9yOiMyZDJkMmQ7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvZGlzX2JvdV8yLnBuZykgbGVmdCB0b3Agbm8tcmVwZWF0O30gLmRpc190ZXh0eyBmb250LXNpemU6MS40MzhyZW0gOyBwYWRkaW5nOjRweCAwcHggMHB4IDE1cHg7fSAubHVuZGlfdGV4dHsgZm9udC1zaXplOjAuODEzcmVtIDsgcGFkZGluZzoycHggMHB4IDBweCAyMHB4OyBsaW5lLWhlaWdodDoxNHB4O30gLmx1bmRpX3RleHRfaG9tZXBhZ2VfaDI0OHtmb250LXNpemU6MC44MTNyZW0gOyBsaW5lLWhlaWdodDoxOHB4OyBwYWRkaW5nOjEwcHggMCAwIDIwcHg7IH0gLmx1bmRpX3RleHQgdGh7dGV4dC1hbGlnbjpsZWZ0O2ZvbnQtd2VpZ2h0Om5vcm1hbDt3aWR0aDo2MHB4O30gLmx1bmRpX3RleHQgdGR7dGV4dC1hbGlnbjpsZWZ0O30gLnB7IGhlaWdodDoxNnB4OyBmbG9hdDpsZWZ0OyBwYWRkaW5nOjdweCA1cHggMHB4IDEwcHg7IGZvbnQtc2l6ZTowLjgxM3JlbSA7fSAuZXsgaGVpZ2h0OjE2cHg7IGZsb2F0OnJpZ2h0OyBwYWRkaW5nOjdweCAwcHggMHB4IDBweDsgZm9udC1zaXplOjAuODc1cmVtIDt9IC5ib3gyODgsIC5ib3gyODhfY3VzdG9te3dpZHRoOjI4MHB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgfSAuX2JveDI4OCwgLl9ib3gyODhfY3VzdG9te3dpZHRoOjI4MHB4OyBmbG9hdDpsZWZ0OyB9IC5ib3gyODhVc2Vke3dpZHRoOjI4MHB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgbWFyZ2luLWxlZnQ6MHB4O30gLmJveDI4OE5ld3t3aWR0aDoyODBweDsgZmxvYXQ6bGVmdDsgfSAuYm94Mjg4TmV3X2N1c3RvbXtmbG9hdDpsZWZ0O30gLmJveDI4OE5ld1FNLCAuYm94Mjg4TmV3UU1fbW9iaWxlIHsgYm9yZGVyLXJhZGl1czo1cHg7IGJhY2tncm91bmQtY29sb3I6cmdiKDI1NSwyNTUsMjU1KTsgLW1zLWZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT0xMDApOyBiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsMSk7IGJveC1zaGFkb3c6bm9uZTsgY2xlYXI6Ym90aDsgZmxvYXQ6bGVmdDsgd2lkdGg6MjgwcHg7IG1hcmdpbi1ib3R0b206NXB4OyB9IC5ib3gyODhOZXdRTV9tb2JpbGUgeyB3aWR0aDoxMDAlOyB9IC5ib3gyODhOZXdRTV9tb2JpbGUgLlJlY2hlcmNoZTIyIHsgdGV4dC1hbGlnbjpjZW50ZXI7IH0gLmJveDI4OE5ld1FNX21vYmlsZSB0YWJsZSB7IHdpZHRoOjEwMCU7IH0gLmJveDI4OE5ld1FNX21vYmlsZSAuanFUcmFuc2Zvcm1JbnB1dFdyYXBwZXIgeyB3aWR0aDoxMDAlIWltcG9ydGFudDsgfSAuYm94Mjg4TmV3UU1fbW9iaWxlIC5qcVRyYW5zZm9ybUlucHV0V3JhcHBlciBpbnB1dCB7IHdpZHRoOjk1JSFpbXBvcnRhbnQ7IH0gLmJveDI4OFFNeyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgbWFyZ2luLXRvcDo1cHg7IGZvbnQtc2l6ZTowLjg3NXJlbSA7Zm9udC13ZWlnaHQ6bm9ybWFsO30gLmJveDI4OFFNX2N1c3RvbXt3aWR0aDoyNzhweDttYXJnaW46NXB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgb3ZlcmZsb3c6aGlkZGVuO2JvcmRlci1yYWRpdXM6NnB4O2JveC1zaGFkb3c6MCAwIDRweCAjMzMzO30gLnRleHRBcmVhUU17IGZvbnQtc2l6ZTowLjgxM3JlbSA7bGluZS1oZWlnaHQ6MTVweDt9IC5ib3gyODhfdG9we3dpZHRoOjI4OHB4OyBoZWlnaHQ6MTRweDsgZmxvYXQ6bGVmdDsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9yaWdodF9ib3g0X3RvcC5wbmcpIGxlZnQgdG9wIG5vLXJlcGVhdDsgbWFyZ2luLXRvcDowcHg7fSAuYm94Mjg4X3RvcF9jdXN0b217d2lkdGg6Mjc4cHg7IGhlaWdodDo0MHB4OyBmbG9hdDpsZWZ0OyBjb2xvcjojMDAwMDAwOyBiYWNrZ3JvdW5kOiNjYmNiY2I7fSAuX2JveDI4OFFNeyB3aWR0aDoyODBweDsgfSAuX2JveDI4OF90b3B7fSAuX2JveDI4OF90b3BfY3VzdG9teyBoZWlnaHQ6NDBweDsgZmxvYXQ6bGVmdDsgV2lkdGg6MTAwJTsgY29sb3I6IzAwMDAwMDsgYmFja2dyb3VuZDojZmZmZmZmOyBib3JkZXItcmFkaXVzOjZweCA2cHggMCAwOyB9IC5fYm94Mjg4MF9taWR7fSAuX2JveDI4ODBfbWlkX2N1c3RvbXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsMSk7fSAuYm94Mjg4X21pZHsgYm94LXNoYWRvdzowIDAgNXB4ICMzMzMzMzM7IGJvcmRlci1yYWRpdXM6NXB4OyBtYXJnaW4tdG9wOjVweDsgbWFyZ2luLWxlZnQ6NXB4OyBmbG9hdDpsZWZ0OyBjb2xvcjojMjgyODI4OyBiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsMSk7IH0gLmJveDI4OF9taWRfY3VzdG9teyBib3gtc2hhZG93OjAgMCA1cHggIzMzMzMzMzsgYm9yZGVyLXJhZGl1czo1cHg7IG1hcmdpbi10b3A6NXB4OyBtYXJnaW4tbGVmdDo1cHg7IGZsb2F0OmxlZnQ7IGNvbG9yOiMyODI4Mjg7IGJhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwxKTt9IC5ib3gyODgwX21pZHt3aWR0aDoyNThweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IGNvbG9yOiMyODI4Mjg7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvcmlnaHRfYm94NF9taWQucG5nKSBsZWZ0IHRvcCByZXBlYXQteTsgcGFkZGluZzowIDE1cHggMHB4IDE1cHg7fSAuYm94Mjg4MF9taWRfY3VzdG9te3dpZHRoOjIyOHB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgcGFkZGluZzo1cHggMjVweDsgY29sb3I6IzI4MjgyODsgYmFja2dyb3VuZDpyZ2JhKDI1NSwyNTUsMjU1LDEpO30gLmJveDI2OV9taWR7d2lkdGg6MjU4cHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL3JpZ2h0X2JveDRfbWlkLnBuZykgbGVmdCB0b3AgcmVwZWF0LXk7IHBhZGRpbmc6MCAxNXB4IDBweCAxNXB4O30gLnpvb20yMnt3aWR0aDoyNThweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IHRleHQtYWxpZ246Y2VudGVyO30gLnNlYXJjaF9yaWdodCB7YmFja2dyb3VuZDp1cmwoL2ltYWdlcy9zZWFyY2gucG5nKSAwIDAgbm8tcmVwZWF0OyB3aWR0aDoyNzhweDsgaGVpZ2h0OjExMXB4OyBkaXNwbGF5OmJsb2NrOyBtYXJnaW46NXB4IDVweCA1cHggNXB4fSAuRGVtYW5kZTIye3dpZHRoOjI3OHB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgdGV4dC1hbGlnbjpjZW50ZXI7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiM5YTAxMDE7IGxpbmUtaGVpZ2h0OjI2cHg7IG1hcmdpbi10b3A6NjdweDt9IC5EZW1hbmRlMjIgYXsgdGV4dC1hbGlnbjpjZW50ZXI7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiM5YTAxMDE7IGxpbmUtaGVpZ2h0OjIwcHggOyB0ZXh0LWRlY29yYXRpb246bm9uZTt9IC5EZW1hbmRlMjIgYTpob3ZlcnsgdGV4dC1hbGlnbjpjZW50ZXI7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiM5YTAxMDE7IHRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7fSAuRGVtYW5kZTIyIHNwYW4gYXsgdGV4dC1hbGlnbjpjZW50ZXI7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiMyOTI5Mjk7IGxpbmUtaGVpZ2h0OjIwcHggOyB0ZXh0LWRlY29yYXRpb246bm9uZTt9IC5EZW1hbmRlMjIgc3BhbiBhOmhvdmVyeyB0ZXh0LWFsaWduOmNlbnRlcjsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzI5MjkyOTsgdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTt9IC5ib3gyODhfZm9vdGVye3dpZHRoOjI4OHB4OyBoZWlnaHQ6MTRweDsgZmxvYXQ6bGVmdDsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9yaWdodF9ib3g0X2Zvb3Rlci5wbmcpIGxlZnQgdG9wIG5vLXJlcGVhdDt9IC5ib3gyODhfZm9vdGVyX3Fze3dpZHRoOjI4OHB4OyBoZWlnaHQ6MTFweDsgZmxvYXQ6bGVmdDsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9yaWdodF9ib3g0X2Zvb3Rlci5wbmcpIGxlZnQgdG9wIG5vLXJlcGVhdDt9IC5ib3gyODhfZm9vdGVyX3Fze3dpZHRoOjI4OHB4OyBoZWlnaHQ6MTFweDsgZmxvYXQ6bGVmdDsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9yaWdodF9ib3g0X2Zvb3Rlci5wbmcpIGxlZnQgdG9wIG5vLXJlcGVhdDt9IC5ib3gyODhfZm9vdGVyNTV7IHdpZHRoOjI4MHB4OyBoZWlnaHQ6NTBweDsgZmxvYXQ6bGVmdDsgY29sb3I6IzJkMmQyZDsgYmFja2dyb3VuZC1jb2xvcjojQ0JDQkNCOyBib3JkZXItcmFkaXVzOjAgMCA2cHggNnB4OyB9IC5ib3gyODhfZm9vdGVyNTVfY3VzdG9teyB3aWR0aDoyODBweDsgaGVpZ2h0OjM1cHg7IHBhZGRpbmctdG9wOjVweDsgZmxvYXQ6bGVmdDsgY29sb3I6IzJjMmMyYzsgYmFja2dyb3VuZC1jb2xvcjojZmZmZmZmOyBib3JkZXItcmFkaXVzOjAgMCA2cHggNnB4OyB9IC5wIGF7dGV4dC1kZWNvcmF0aW9uOm5vbmU7fSAuZ2FwMTB7d2lkdGg6MjMwcHg7IGhlaWdodDoxMHB4OyBmbG9hdDpsZWZ0O30gLnBhZ2VfbmFtZTJ7d2lkdGg6NjUwcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBwYWRkaW5nOjAgMCAyMHB4IDA7IGxpbmUtaGVpZ2h0OjMwcHg7IGZvbnQtc2l6ZToxLjYyNXJlbSA7IGNvbG9yOiMyYzJjMmM7Zm9udC13ZWlnaHQ6bm9ybWFsfSAucGFnZV9uYW1lM3sgd2lkdGg6MTAwJTtib3gtc2l6aW5nOmJvcmRlci1ib3g7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBwYWRkaW5nOjBweCAxMHB4IDEwcHggMTBweDsgbGluZS1oZWlnaHQ6MzBweDsgZm9udC1zaXplOjEuNXJlbSA7IGNvbG9yOiMyNDI0MjQ7fSAucGFnZV9uYW1lMyBoMXsgZm9udC1zaXplOjEuODc1cmVtIDsgY29sb3I6IzI0MjQyNDtmb250LXdlaWdodDpub3JtYWx9IC5wYWdlX25hbWU0e3dpZHRoOjY1MHB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9zaG8ucG5nKSBjZW50ZXIgYm90dG9tIG5vLXJlcGVhdDsgYmFja2dyb3VuZC1wb3NpdGlvbjpib3R0b207IHBhZGRpbmc6MCAwcHggMTBweCAyMXB4OyBsaW5lLWhlaWdodDozMHB4OyBmb250LXNpemU6MS4xMjVyZW0gOyBjb2xvcjojMDE0RjgwO30gLnBhZ2VfbmFtZTQgaDJ7IGZvbnQtc2l6ZToxLjVyZW0gOyBjb2xvcjpyZ2IoMjU1LDI1NSwyNTUpO2ZvbnQtd2VpZ2h0Om5vcm1hbH0gLnBhZ2VfbmFtZTV7d2lkdGg6MTAwJTtoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9zaG8ucG5nKSBjZW50ZXIgYm90dG9tIG5vLXJlcGVhdDsgYmFja2dyb3VuZC1wb3NpdGlvbjpib3R0b207IHBhZGRpbmc6MCAwcHggMTBweCAwOyBtYXJnaW4tYm90dG9tOjE1cHg7IGxpbmUtaGVpZ2h0OjMwcHg7IGZvbnQtc2l6ZToxLjVyZW0gOyBjb2xvcjojMjQyNDI0O2ZvbnQtd2VpZ2h0Om5vcm1hbCB9ICNzZWFyY2hDb250YWluZXJQYXJlbnQgLnBhZ2VfbmFtZTU6bm90KDpmaXJzdC1jaGlsZCkgeyBtYXJnaW4tdG9wOjMwcHg7IH0gLmJveDJfdGV4dHtoZWlnaHQ6YXV0bzsgd2lkdGg6MTAwJTsgZmxvYXQ6bGVmdDsgbGluZS1oZWlnaHQ6MThweDsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzI0MjQyNDsgfSAuYm94Ml90ZXh0IHB7IGxpbmUtaGVpZ2h0OjE4cHg7IGZvbnQtc2l6ZTowLjg3NXJlbSA7Y29sb3I6IzJjMmMyYzsgbWFyZ2luLWJvdHRvbToyMHB4O30gLnBvc2l0aXZlUmF0aW5nVHh0IHB7Zm9udC1zaXplOjFyZW0gO30gLnBvc2l0aXZlUmF0aW5nVHh0IGgzLCAucG9zaXRpdmVSYXRpbmdUeHQgaDR7Zm9udC13ZWlnaHQ6bm9ybWFsO30gLnBvc2l0aXZlUmF0aW5nVHh0IC5idG4tZGVmYXVsdHt0ZXh0LXRyYW5zZm9ybTpub25lO30gLnBvc2l0aXZlUmF0aW5nVHh0IC5idG4tZGVmYXVsdHtmb250LXNpemU6MS4yNXJlbSA7fSAuZXRhcGV7d2lkdGg6YXV0bzsgaGVpZ2h0OjQ2cHg7IGZsb2F0OmxlZnQ7IG1hcmdpbi1yaWdodDoyMHB4O30gLnRleHQxe3dpZHRoOmF1dG87IGhlaWdodDo0NnB4OyBmbG9hdDpsZWZ0OyBwYWRkaW5nOjAgMHB4IDBweCAwcHg7fSAudGV4dDEgYXt3aWR0aDphdXRvOyBoZWlnaHQ6NDZweDsgZmxvYXQ6bGVmdDsgcGFkZGluZzowIDBweCAwcHggMHB4OyBsaW5lLWhlaWdodDo0NnB4OyB0ZXh0LWFsaWduOmxlZnQ7IGZvbnQtc2l6ZToxLjg3NXJlbSA7IGNvbG9yOiM0MzQzNDM7IGZvbnQtd2VpZ2h0OmJvbGQ7IHRleHQtZGVjb3JhdGlvbjpub25lOyB0ZXh0LXNoYWRvdzoxcHggMXB4IDFweCAjZjNmM2YzOyB9IC50ZXh0MSBhOmhvdmVye3dpZHRoOmF1dG87IGhlaWdodDo0NnB4OyBmbG9hdDpsZWZ0OyBwYWRkaW5nOjAgMHB4IDBweCAwcHg7IGxpbmUtaGVpZ2h0OjQ2cHg7IHRleHQtYWxpZ246bGVmdDsgZm9udC1zaXplOjEuODc1cmVtIDsgY29sb3I6IzQzNDM0MzsgZm9udC13ZWlnaHQ6Ym9sZDsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IHRleHQtc2hhZG93OjFweCAxcHggMXB4ICNmM2YzZjM7IH0gLnRleHQxIGEuYWN0aXZle3dpZHRoOmF1dG87IGhlaWdodDo0NnB4OyBmbG9hdDpsZWZ0OyBwYWRkaW5nOjAgMHB4IDBweCAwcHg7IGxpbmUtaGVpZ2h0OjQ2cHg7IHRleHQtYWxpZ246bGVmdDsgZm9udC1zaXplOjEuODc1cmVtIDsgY29sb3I6IzQzNDM0MzsgZm9udC13ZWlnaHQ6Ym9sZDsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IHRleHQtc2hhZG93OjFweCAxcHggMXB4ICNmM2YzZjM7IH0gLm9uZTF7d2lkdGg6NDZweDsgaGVpZ2h0OjQ2cHg7IGZsb2F0OnJpZ2h0OyBtYXJnaW4tbGVmdDoxMHB4O30gLm9uZTEgYXt3aWR0aDo0NnB4OyBoZWlnaHQ6NDZweDsgZmxvYXQ6bGVmdDsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy8xX3JvdW5kLnBuZykgbGVmdCB0b3Agbm8tcmVwZWF0OyBmb250LXNpemU6Mi4yNXJlbSA7IGZvbnQtd2VpZ2h0OmJvbGQ7IGNvbG9yOiNGRkZGRkY7IGxpbmUtaGVpZ2h0OjQ2cHg7IHRleHQtYWxpZ246Y2VudGVyOyB0ZXh0LWRlY29yYXRpb246bm9uZTt9IC5vbmUxIGE6aG92ZXJ7d2lkdGg6NDZweDsgaGVpZ2h0OjQ2cHg7IGZsb2F0OmxlZnQ7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvMV9ob3Zlci5wbmcpIGxlZnQgdG9wIG5vLXJlcGVhdDsgZm9udC1zaXplOjIuMjVyZW0gOyBjb2xvcjojMmMyYzJjOyBsaW5lLWhlaWdodDo0NnB4OyBmb250LXdlaWdodDpib2xkOyB0ZXh0LWFsaWduOmNlbnRlcjsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7fSAub25lMSBhLmFjdGl2ZXt3aWR0aDo0NnB4OyBoZWlnaHQ6NDZweDsgZmxvYXQ6bGVmdDsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy8xX2hvdmVyLnBuZykgbGVmdCB0b3Agbm8tcmVwZWF0OyBmb250LXNpemU6Mi4yNXJlbSA7IGNvbG9yOiMyYzJjMmM7IGxpbmUtaGVpZ2h0OjQ2cHg7IGZvbnQtd2VpZ2h0OmJvbGQ7IHRleHQtYWxpZ246Y2VudGVyOyB0ZXh0LWRlY29yYXRpb246bm9uZTt9IC5zZWxlY3Rpb25uZXp7d2lkdGg6YXV0bzsgaGVpZ2h0OmF1dG8gOyBmbG9hdDpsZWZ0OyBwYWRkaW5nLXJpZ2h0OjVweDsgcGFkZGluZy1sZWZ0OjNweDsgcGFkZGluZy10b3A6NHB4OyBmb250LXNpemU6MC44MTNyZW0gOyBjb2xvcjojMWExYTFhOyBsaW5lLWhlaWdodDoyMnB4OyBmb250LXdlaWdodDpib2xkOyB0ZXh0LWFsaWduOmxlZnQ7IHRleHQtZGVjb3JhdGlvbjpub25lO30gLmZvcm1zX2JveDIye2JveC1zaXppbmc6Ym9yZGVyLWJveDsgd2lkdGg6MTAwJTsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IG1hcmdpbjowIDAgMTBweCAwOyB9IC53aXRoX2JvcmRlciB7IGJvcmRlcjoxcHggc29saWQgI2Q0ZDRkNDsgLW1vei1ib3JkZXItcmFkaXVzOjhweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjhweDsgLWtodG1sLWJvcmRlci1yYWRpdXM6OHB4OyBwYWRkaW5nOjAgMTZweDsgfSAuUHJlbm9te3dpZHRoOjI3OXB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzI0MjQyNCA7IHBhZGRpbmc6OHB4IDAgMTBweCAwO30gLlByZW5vbSBzcGFueyBmb250LXNpemU6MS4zNzVyZW0gOyBjb2xvcjojZmYwMTAxO30gLlByZW5vbTJ7d2lkdGg6MzIxcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojMjQyNDI0IDsgcGFkZGluZzo4cHggMCAxMHB4IDA7fSAuUHJlbm9tMiBzcGFueyBmb250LXNpemU6MS4zNzVyZW0gOyBjb2xvcjojZmYwMTAxO30gLlByZW5vbTN7d2lkdGg6Mjc5cHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojMjQyNDI0IDsgcGFkZGluZzowcHggMCAxMHB4IDA7fSAuUHJlbm9tNHt3aWR0aDozMjFweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiMyNDI0MjQgOyBwYWRkaW5nOjBweCAwIDEwcHggMDt9IC5QcmVub201e3dpZHRoOjI3OXB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzI0MjQyNCA7IHBhZGRpbmc6cHggMCAxMHB4IDA7fSAuUHJlbm9tNnt3aWR0aDoyMTRweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiMyNDI0MjQgOyBwYWRkaW5nOjBweCAwIDEwcHggMDt9IC5QcmVub203e3dpZHRoOjEwN3B4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzI0MjQyNCA7IHBhZGRpbmc6MHB4IDAgMTBweCAwO30gLlByZW5vbTh7d2lkdGg6Mjc5cHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBwYWRkaW5nOnB4IDAgMTBweCAwOyBkaXNwbGF5OmJsb2NrfSAuUHJlbm9tOXt3aWR0aDoyMTRweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IHBhZGRpbmc6MHB4IDAgMTBweCAwO2Rpc3BsYXk6YmxvY2t9IC5QcmVub20xMHt3aWR0aDoxMDdweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IHBhZGRpbmc6MHB4IDAgMTBweCAwO2Rpc3BsYXk6YmxvY2t9IC50ZXh0MTV7d2lkdGg6Mjg1cHg7IGZvbnQtc2l6ZTowLjgxM3JlbSA7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBjb2xvcjojMjQyNDI0IDsgcGFkZGluZzowcHggMCAzcHggMDt9IC50ZXh0MTZ7d2lkdGg6MTcycHg7IGZvbnQtc2l6ZTowLjgxM3JlbSA7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBjb2xvcjojMjQyNDI0IDsgcGFkZGluZzowcHggMCAzcHggMDt9IC50ZXh0MTd7d2lkdGg6MTEycHg7IGZvbnQtc2l6ZTowLjgxM3JlbSA7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBjb2xvcjojMjQyNDI0IDsgcGFkZGluZzowcHggMCAzcHggMDt9IC50ZXh0MTh7d2lkdGg6Mjg1cHg7IGZvbnQtc2l6ZTowLjgxM3JlbSA7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBjb2xvcjojMjQyNDI0IDsgcGFkZGluZzo4cHggMCAzcHggMDt9IC50ZXh0MTUgc3BhbnsgZm9udC1zaXplOjEuMzc1cmVtIDsgY29sb3I6I2ZmMDEwMTt9IC5idXR0b241e3dpZHRoOjI4NXB4OyBtYXJnaW4tYm90dG9tOjMwcHg7IG1hcmdpbi10b3A6NzBweDsgZmxvYXQ6bGVmdDsgbWFyZ2luLXJpZ2h0OjVweDsgdGV4dC1hbGlnbjpyaWdodDsgfSAuYm94X2RhdGV7d2lkdGg6MTY3cHg7IG1hcmdpbi1ib3R0b206MTBweDsgZmxvYXQ6bGVmdDsgcGFkZGluZy10b3A6MXB4OyBtYXJnaW4tcmlnaHQ6NXB4O30gLmJveF9kYXRlMnt3aWR0aDoxMDdweDsgbWFyZ2luLWJvdHRvbToxMHB4OyBmbG9hdDpsZWZ0OyBtYXJnaW4tcmlnaHQ6NXB4OyBwYWRkaW5nLXRvcDowcHg7fSAuYm94X2RhdGUze3dpZHRoOjgwcHg7IG1hcmdpbi1ib3R0b206MTBweDsgZmxvYXQ6bGVmdDsgbWFyZ2luLXJpZ2h0OjVweDt9IHNwYW4uYXN0a3sgY29sb3I6I0ZGMDEwMTtmb250LXNpemU6MC42ODhyZW0gO2Zsb2F0OmxlZnQ7cGFkZGluZy1yaWdodDozcHg7IH0gLmJveDYxe3dpZHRoOjI4MHB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgbWFyZ2luLXRvcDoxMHB4OyBkaXNwbGF5OmJsb2NrOyBjbGVhcjpib3RoOyB9IC5ib3g2MTY2e3dpZHRoOjI4MHB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgbWFyZ2luLXRvcDoxMHB4OyB9IC5Qb2xpdGlxdWV7d2lkdGg6YXV0bzsgbWFyZ2luLWJvdHRvbToxMHB4OyBmbG9hdDpsZWZ0OyBtYXJnaW4tcmlnaHQ6NXB4OyBwYWRkaW5nOjAgMnB4IDBweCAycHg7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiMwZDU5YWY7IGxpbmUtaGVpZ2h0OjIycHg7IH0gLlBvbGl0aXF1ZSBheyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojMGQ1OWFmOyBsaW5lLWhlaWdodDoyNHB4OyB0ZXh0LWRlY29yYXRpb246bm9uZTsgYm9yZGVyLWJvdHRvbToycHggc29saWQgIzZiOTFiZDsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvbGluZTMucG5nKSBib3R0b20gbGVmdCByZXBlYXQteDsgYmFja2dyb3VuZC1wb3NpdGlvbjpib3R0b207fSAuUG9saXRpcXVlIGE6aG92ZXJ7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiMyNDI0MjQ7IGxpbmUtaGVpZ2h0OjI0cHg7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvbGluZTQucG5nKSBib3R0b20gbGVmdCByZXBlYXQteDsgYmFja2dyb3VuZC1wb3NpdGlvbjpib3R0b207IHRleHQtZGVjb3JhdGlvbjpub25lOyBib3JkZXItYm90dG9tOjJweCBzb2xpZCAjMjQyNDI0O30gLnRleHQxNTV7d2lkdGg6Mjg1cHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBmb250LXNpemU6MC44MTNyZW0gOyBjb2xvcjojMjQyNDI0IDsgcGFkZGluZzowcHggMCAzcHggMDt9IC50ZXh0MTU1Y2hre2hlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBmb250LXNpemU6MC44MTNyZW0gOyBjb2xvcjojMjQyNDI0IDsgcGFkZGluZzowcHggMTBweCAxMHB4IDE1cHg7dGV4dC1hbGlnbjpsZWZ0O30gLlZldWlsbGV6e3dpZHRoOjYxN3B4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgcGFkZGluZzoxN3B4IDA7IGZvbnQtc2l6ZToxLjM3NXJlbSA7IGNvbG9yOiMyYzJjMmM7Zm9udC13ZWlnaHQ6bm9ybWFsfSAuVmV1aWxsZXogc3Bhbnt0ZXh0LWFsaWduOmxlZnQ7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiMyNDI0MjQ7IGxpbmUtaGVpZ2h0OjIycHg7fSAuVmV1aWxsZXogc3BhbiBheyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojMjQyNDI0OyBmbG9hdDpyaWdodDsgbGluZS1oZWlnaHQ6MjJweDsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IGJvcmRlci1ib3R0b206MnB4IHNvbGlkICMyNDI0MjQ7IGRpc3BsYXk6YmxvY2t9IC5WZXVpbGxleiBzcGFuIGE6aG92ZXJ7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiMwMDQ0NmY7IGZsb2F0OnJpZ2h0OyBsaW5lLWhlaWdodDoyMnB4OyB0ZXh0LWRlY29yYXRpb246bm9uZTsgYm9yZGVyLWJvdHRvbToycHggc29saWQgIzAwNDQ2ZjsgZGlzcGxheTpibG9jazt9IC5IeXBvdGhlcXVle3dpZHRoOjE5NXB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgZm9udC1zaXplOjAuODEzcmVtIDsgY29sb3I6IzI0MjQyNCA7IHBhZGRpbmc6MDsgbGluZS1oZWlnaHQ6NTBweDt9IC5IeXBvdGhlcXVlMjJ7d2lkdGg6MjI0cHg7IG1hcmdpbi1ib3R0b206MTBweDsgZmxvYXQ6bGVmdDt9IC5IeXBvdGhlcXVlMzN7d2lkdGg6NTBweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IGZvbnQtc2l6ZTowLjgxM3JlbSA7IGNvbG9yOiMyNDI0MjQgOyBwYWRkaW5nOjBweCAwIDEwcHggMDsgbGluZS1oZWlnaHQ6MzVweDt9IC5jaXZpcXVle3dpZHRoOjEzMHB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgZm9udC1zaXplOjAuODEzcmVtIDsgY29sb3I6IzI0MjQyNCA7IHBhZGRpbmc6MHB4IDAgM3B4IDA7fSAuUnVle3dpZHRoOjI5MHB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgZm9udC1zaXplOjAuODEzcmVtIDsgY29sb3I6IzI0MjQyNCA7IHBhZGRpbmc6MHB4IDAgM3B4IDA7fSAuQXBwe3dpZHRoOjE4MHB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgZm9udC1zaXplOjAuODEzcmVtIDsgY29sb3I6IzI0MjQyNCA7IHBhZGRpbmc6MHB4IDAgM3B4IDA7fSAuZm9ybXMxMDB7d2lkdGg6MTMwcHg7IG1hcmdpbi1ib3R0b206MTBweDsgZmxvYXQ6bGVmdDt9IC5mb3JtczEwMXt3aWR0aDoyOTBweDsgbWFyZ2luLWJvdHRvbToxMHB4OyBmbG9hdDpsZWZ0O30gLmZvcm1zMTAye3dpZHRoOjE4MHB4OyBtYXJnaW4tYm90dG9tOjEwcHg7IGZsb2F0OmxlZnQ7fSAuVmlsbGV7IHdpZHRoOjI3MHB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgZm9udC1zaXplOjAuODEzcmVtIDsgY29sb3I6IzI0MjQyNCA7IHBhZGRpbmc6MHB4IDAgMTNweCAwO30gLlByb3ZpbmNleyB3aWR0aDoxNTBweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IGZvbnQtc2l6ZTowLjgxM3JlbSA7IGNvbG9yOiMyNDI0MjQgOyBwYWRkaW5nOjBweCAwIDEzcHggMDt9IC5Db2RleyB3aWR0aDoxNjBweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IGZvbnQtc2l6ZTowLjgxM3JlbSA7IGNvbG9yOiMyNDI0MjQgOyBwYWRkaW5nOjBweCAwIDEzcHggMDt9IC5mb3JtczEwM3sgd2lkdGg6MTAwJTsgbWFyZ2luLXRvcDowcHg7IH0gLmZvcm1zMTA0eyB3aWR0aDoxMDAlOyBtYXJnaW4tdG9wOjBweDsgfSAuZm9ybXMxMDV7IHdpZHRoOjEwMCU7IG1hcmdpbi10b3A6MHB4OyB9IC5mb3JtczEwNnsgd2lkdGg6MTAwJTsgbWFyZ2luLWJvdHRvbToxMHB4OyBmbG9hdDpsZWZ0fSAuVHlwZXt3aWR0aDoyMDBweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IGZvbnQtc2l6ZTowLjgxM3JlbSA7IGNvbG9yOiMyNDI0MjQgOyBwYWRkaW5nOjBweCAwIDNweCAwO30gLmJveDYwMHt3aWR0aDo2MDBweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IHBhZGRpbmctbGVmdDowcHg7IHBhZGRpbmctYm90dG9tOjIwcHg7IG1hcmdpbi1yaWdodDowcHg7fSAuRGVtYW5kZTU1e21hcmdpbjoxNXB4IDA7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvZC5wbmcpIDEwcHggdG9wIG5vLXJlcGVhdDsgcGFkZGluZzowIDAgMCA2MnB4OyBsaW5lLWhlaWdodDo0MHB4OyBmb250LXNpemU6MS4xMjVyZW0gOyBjb2xvcjojMTkxOTE5OyBmb250LXdlaWdodDpib2xkO30gLkRlbWFuZGU2NnttYXJnaW46MTVweCAwOyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL2NhbDIucG5nKSAxMHB4IHRvcCBuby1yZXBlYXQ7IHBhZGRpbmc6MCAwIDAgNjJweDsgbGluZS1oZWlnaHQ6MjBweDsgZm9udC1zaXplOjEuMTI1cmVtIDsgY29sb3I6IzE5MTkxOTsgZm9udC13ZWlnaHQ6Ym9sZDt9IC5EZW1hbmRlNzd7bWFyZ2luOjE1cHggMDsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9tLnBuZykgMTBweCB0b3Agbm8tcmVwZWF0OyBwYWRkaW5nOjAgMCAwIDYycHg7IGxpbmUtaGVpZ2h0OjQwcHg7IGZvbnQtc2l6ZToxLjEyNXJlbSA7IGNvbG9yOiMxOTE5MTk7IGZvbnQtd2VpZ2h0OmJvbGQ7fSAuRGVtYW5kZTg4e21hcmdpbjoxNXB4IDA7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvZi5wbmcpIDEwcHggdG9wIG5vLXJlcGVhdDsgcGFkZGluZzowIDAgMCA2MnB4OyBsaW5lLWhlaWdodDoyMHB4OyBmb250LXNpemU6MS4xMjVyZW0gOyBjb2xvcjojMTkxOTE5OyBmb250LXdlaWdodDpib2xkO30gLkRlbWFuZGU4ODd7bWFyZ2luOjE1cHggMDsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9mLnBuZykgMTBweCB0b3Agbm8tcmVwZWF0OyBwYWRkaW5nOjAgMCAwIDYycHg7IGxpbmUtaGVpZ2h0OjIwcHg7IGZvbnQtc2l6ZToxLjEyNXJlbSA7IGNvbG9yOiMxOTE5MTk7IGZvbnQtd2VpZ2h0OmJvbGQ7fSAuYm94Ml90ZXh0Mnt3aWR0aDo2NDhweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IHBhZGRpbmc6MTBweCAwcHggMTVweCAyM3B4OyBsaW5lLWhlaWdodDoxOHB4OyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojMjQyNDI0O30gLmJveF9icmFuZHt3aWR0aDo2NDhweDsgZmxvYXQ6bGVmdDtwYWRkaW5nOjIwcHggMHB4IDE1cHggMHB4OyBsaW5lLWhlaWdodDoxOHB4OyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojMjQyNDI0OyB9IC5ib3gyX3RleHQze3dpZHRoOjY2MXB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgcGFkZGluZzowIDBweCAxMHB4IDEwcHg7IG1hcmdpbi10b3A6MTVweDsgbGluZS1oZWlnaHQ6MThweDsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzI0MjQyNDsgfSAuY2FyX2JveHt3aWR0aDoyMDhweDsgaGVpZ2h0OjEzMHB4OyBmbG9hdDpsZWZ0OyBtYXJnaW46MCA4cHggMCAwOyBwYWRkaW5nOjA7IGJvcmRlcjowO30gLmNhcl9pbWFnZXN7d2lkdGg6MjA4cHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBtYXJnaW46MDsgcGFkZGluZzowOyBib3JkZXI6MDsgdGV4dC1hbGlnbjpjZW50ZXI7fSAuY2FyX3RleHR7d2lkdGg6MjA4cHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBsaW5lLWhlaWdodDoxMHB4OyBmb250LXNpemU6MC44MTNyZW0gOyBmb250LXdlaWdodDpib2xkOyBjb2xvcjojMmMyYzJjOyB0ZXh0LWFsaWduOmNlbnRlcn0gLmNhcl90ZXh0IGEge3RleHQtZGVjb3JhdGlvbjpub25lOyBjb2xvcjojMmMyYzJjOyBsaW5lLWhlaWdodDoxLjE7fSAuY2FyX3RleHQgYTpob3ZlciB7IHRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7IGNvbG9yOiMyYzJjMmN9IC5jYXJfYm94MnsgaGVpZ2h0OmF1dG87IG1hcmdpbjowIDEwcHggMTBweCAwOyBvdmVyZmxvdzpoaWRkZW47IGJvcmRlci1yYWRpdXM6NXB4OyAtbW96LWJvcmRlci1yYWRpdXM6NXB4OyAtd2Via2l0LWJvcmRlci1yYWRpdXM6NXB4OyBiYWNrZ3JvdW5kLWNvbG9yOiNGRkY7IC1tb3otYm94LXNoYWRvdzowIDAgMTBweCAxcHggcmdiYSgwLDAsMCwwLjIpOyAtd2Via2l0LWJveC1zaGFkb3c6MCAwIDEwcHggMXB4IHJnYmEoMCwwLDAsMC4yKTsgYm94LXNoYWRvdzowIDAgMTBweCAxcHggcmdiYSgwLDAsMCwwLjIpOyB9IC5jYXJfYm94Ml90YXh0e2hlaWdodDphdXRvOyBwYWRkaW5nLWJvdHRvbTo1cHg7IGZvbnQtc2l6ZToxcmVtIDsgY29sb3I6IzMwMzAzMDsgdGV4dC1hbGlnbjpsZWZ0OyBsaW5lLWhlaWdodDoyMXB4O30gLnBpY19ib3gyeyBib3JkZXI6MXB4IHNvbGlkICNBQUE7IGJhY2tncm91bmQ6I0ZGRkZGRjsgYm9yZGVyLXJhZGl1czozcHg7IC1tb3otYm9yZGVyLXJhZGl1czozcHg7IC13ZWJraXQtYm9yZGVyLXJhZGl1czozcHg7IH0gLnBpY19ib3gyIGltZyB7d2lkdGg6MTAwJTt9IC5wcmludHt3aWR0aDoxOTJweDsgaGVpZ2h0OmF1dG87IG1hcmdpbjowOyBwYWRkaW5nLXRvcDo3cHg7fSAucHJpbnQgYXsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9wcmludC5wbmcpIDEwcHggdG9wIG5vLXJlcGVhdDsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzMwMzAzMDsgcGFkZGluZy1sZWZ0OjM1cHg7IHRleHQtZGVjb3JhdGlvbjpub25lO30gLnByaW50IGE6aG92ZXJ7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvcHJpbnRfaG92ZXIucG5nKSAxMHB4IHRvcCBuby1yZXBlYXQ7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiMwMDRhNzg7IHBhZGRpbmctbGVmdDozNXB4OyB0ZXh0LWRlY29yYXRpb246bm9uZTsgfSAucGFnZV9uYW1lX2Nvbnt3aWR0aDo4NDBweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IHBhZGRpbmc6MjBweCAyMXB4IDEwcHggMjBweDsgfSAuaG9tZTJ7d2lkdGg6MjMwcHg7IGhlaWdodDphdXRvOyBtYXJnaW4tbGVmdDoyMHB4OyBmbG9hdDpsZWZ0OyBmb250LXNpemU6MXJlbSA7IGNvbG9yOiMzNzM3Mzc7IGxpbmUtaGVpZ2h0OjI0cHg7IHRleHQtZGVjb3JhdGlvbjpub25lOyB9IC5ob21lM3t3aWR0aDo1MTBweDsgaGVpZ2h0OmF1dG87IG1hcmdpbi1sZWZ0OjEwcHg7IGZsb2F0OmxlZnQ7IGZvbnQtc2l6ZToxcmVtIDsgY29sb3I6IzM3MzczNzsgbGluZS1oZWlnaHQ6MjRweDsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IH0gLnRleHQyMHt3aWR0aDozMTBweDsgaGVpZ2h0OjMycHg7IGZsb2F0OmxlZnQ7IG1hcmdpbi1yaWdodDoxMHB4OyBtYXJnaW4tYm90dG9tOjEwcHg7IGxpbmUtaGVpZ2h0OjMycHg7IHRleHQtYWxpZ246bGVmdDsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzBkMGQwZDsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IH0gLnRleHQyMCBzcGFueyBjb2xvcjojRkYwMDAwO30gLmlucHV0MjV7d2lkdGg6MzEwcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBtYXJnaW4tYm90dG9tOjEwcHg7IH0gLnZldXh7d2lkdGg6NjAwcHg7IGZsb2F0OmxlZnQ7IG1hcmdpbi1ib3R0b206MTBweDsgcGFkZGluZy10b3A6NXB4OyBsaW5lLWhlaWdodDoxN3B4OyB0ZXh0LWFsaWduOmxlZnQ7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiMwZDBkMGQ7IHRleHQtZGVjb3JhdGlvbjpub25lOyBtYXJnaW4tYm90dG9tOjEwcHg7fSAuTm9ze3dpZHRoOjI2NXB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgYmFja2dyb3VuZDojMDAwMDAwOyAtbW96LWJvcmRlci1yYWRpdXM6NXB4OyAtd2Via2l0LWJvcmRlci1yYWRpdXM6NXB4OyBib3JkZXItcmFkaXVzOjVweDsgLWtodG1sLWJvcmRlci1yYWRpdXM6NXB4OyBwYWRkaW5nOjE1cHggMCAxNXB4IDE1cHg7IG1hcmdpbjo1cHggMDsgZm9udC1zaXplOjEuNXJlbSA7IGNvbG9yOiNGRkZGRkY7fSAuYnV0dG9uX2pvYm9mZmVyIHsgZGlzcGxheTpibG9jazsgbGluZS1oZWlnaHQ6NTBweDsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvaWNvbl9lbXBsb3kucG5nJykgbm8tcmVwZWF0IHNjcm9sbCAwcHggMHB4IHJnYigyMzEsIDIzMiwgMjMyKTsgdGV4dC1hbGlnbjpjZW50ZXI7IGZvbnQtd2VpZ2h0OmJvbGQ7IHRleHQtZGVjb3JhdGlvbjpub25lOyBwYWRkaW5nLWxlZnQ6NDBweDsgYm9yZGVyLXJhZGl1czozcHg7IH0gLmJ1dHRvbl8xLCAuYnV0dG9uXzIsIC5idXR0b25fMyB7IG1hcmdpbi1ib3R0b206MTBweDsgfSAuYnV0dG9uXzEgYSwgLmJ1dHRvbl8yIGEsIC5idXR0b25fMyBhIHsgZGlzcGxheTpibG9jazsgd2lkdGg6MjQ5cHg7IGhlaWdodDozOHB4OyBib3JkZXItcmFkaXVzOjNweDsgZm9udC1zaXplOjEuMTI1cmVtIDsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IHRleHQtYWxpZ246Y2VudGVyOyBsaW5lLWhlaWdodDozOHB4OyB9IC5idXR0b25fMSBhLCAuYnV0dG9uXzIgYSB7IGJhY2tncm91bmQ6I2ZmZmZmZjsgY29sb3I6IzJjMmMyYzsgYm9yZGVyOjFweCBzb2xpZCAjMmMyYzJjOyB9IC5idXR0b25fMSBhOmhvdmVyLCAuYnV0dG9uXzIgYTpob3ZlcnsgYmFja2dyb3VuZDojZWVlZWVlOyBjb2xvcjojMmMyYzJjOyBib3JkZXI6MXB4IHNvbGlkICMyYzJjMmM7IH0gLmJ1dHRvbl8zIGE6bm90KC5kaXNjbGFpbWVyc1N1cGVyc2NyaXB0cyl7IGJhY2tncm91bmQ6IzAwMDsgY29sb3I6I0ZGRjsgYm9yZGVyOjFweCBzb2xpZCAjMDAwOyB9IC5idXR0b25fMyBhOm5vdCguZGlzY2xhaW1lcnNTdXBlcnNjcmlwdHMpOmhvdmVyeyBiYWNrZ3JvdW5kOiNGRkY7IGNvbG9yOiMwMDA7IH0gLmRpc2NsYWltZXJzU3VwZXJzY3JpcHRzW2RhdGEtZGlzY2xhaW1lci1pZD0iMSJdIHN1cCwgLmRpc2NsYWltZXJzU3VwZXJzY3JpcHRzW2RhdGEtZGlzY2xhaW1lci1pZD0iMyJdIHN1cCB7IGZvbnQtc2l6ZTowLjVlbTsgfSBhLmRpc2NsYWltZXJzU3VwZXJzY3JpcHRzW2RhdGEtZGlzY2xhaW1lci1pZD0iMyJdIHN1cCB7IGNvbG9yOnZhcigtLWRhcmstZ3JheSwgcmdiKDEwMiwgMTAyLCAxMDIpKTsgfSAuZmJDb25uZWN0QnRuIHsgcG9zaXRpb246cmVsYXRpdmU7IGJhY2tncm91bmQtY29sb3I6IzMwNTg5ODsgY29sb3I6I2ZmZjsgYm9yZGVyLXJhZGl1czozcHg7IGxpbmUtaGVpZ2h0OjM4cHg7IG1hcmdpbi1ib3R0b206MTBweDsgZm9udC1zaXplOjAuODc1cmVtIDsgdGV4dC1hbGlnbjpjZW50ZXI7IH0gI2NoYXQtd2lkZ2V0LWNvbnRhaW5lciwgI2xpdmVfY2hhdF9zdGF0dXMsICNDaGF0RGl2LCAjcG9kaXVtLWJ1YmJsZSwgI2pjb250LCBqZGl2LCAjdHN3X3dyYXBwZXIsIC5mYl9kaWFsb2csIC5mYl9pZnJhbWVfd2lkZ2V0LCAuZmItY3VzdG9tZXJjaGF0LCAuZWstY2hhdCwgLm1hdGFkb3ItbGl2ZWNoYXQtMTIzNzg5LW1haW4td3JhcHBlciwgI21hdGFkb3ItY29ubmVjdC10ZXh0LWxhYmVsLCAjbWF0YWRvci1jb25uZWN0LXRleHQtbGFiZWwtYmFkZ2V7IHotaW5kZXg6MTAwMDAgIWltcG9ydGFudDsgfSBzdmcuY2hhdC1idWJibGV7IHdpZHRoOnJldmVydDsgaGVpZ2h0OnJldmVydDsgfSAuZmJDb25uZWN0QnRuIC5mYS1mYWNlYm9va3sgY29sb3I6IzMwNTg5ODsgfSBhLmZhY2Vib29rQ29ubmVjdEJ0biB7IGNvbG9yOiNmZmY7IGRpc3BsYXk6aW5saW5lLWJsb2NrOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgZm9udC1mYW1pbHk6aW5oZXJpdDsgfSAuYnV0dG9uX3ZpZGVvc19mciBhLCAuYnV0dG9uX3ZpZGVvc19lbiBheyB3aWR0aDoyNDlweDsgaGVpZ2h0OjM4cHg7IGRpc3BsYXk6YmxvY2s7IH0gLmJ1dHRvbl92aWRlb3NfZnIgYXtiYWNrZ3JvdW5kOnVybCgiL2ltYWdlcy92aWRlb3MtYnV0dG9uX2ZyLnBuZyIpIG5vLXJlcGVhdCAwcHggMHB4IHRyYW5zcGFyZW50O30gLmJ1dHRvbl92aWRlb3NfZnIgYTpob3ZlcntiYWNrZ3JvdW5kOnVybCgiL2ltYWdlcy92aWRlb3MtYnV0dG9uLWhvdmVyX2ZyLnBuZyIpIG5vLXJlcGVhdCAwcHggMHB4IHRyYW5zcGFyZW50O30gLmJ1dHRvbl92aWRlb3NfZW4gYXtiYWNrZ3JvdW5kOnVybCgiL2ltYWdlcy92aWRlb3MtYnV0dG9uX2VuLnBuZyIpIG5vLXJlcGVhdCAwcHggMHB4IHRyYW5zcGFyZW50O30gLmJ1dHRvbl92aWRlb3NfZW4gYTpob3ZlcntiYWNrZ3JvdW5kOnVybCgiL2ltYWdlcy92aWRlb3MtYnV0dG9uLWhvdmVyX2VuLnBuZyIpIG5vLXJlcGVhdCAwcHggMHB4IHRyYW5zcGFyZW50O30gLmJ1dHRvbl92aWRlb19mciBhLCAuYnV0dG9uX3ZpZGVvX2VuIGF7IHdpZHRoOjE5M3B4OyBoZWlnaHQ6NTFweDsgZGlzcGxheTpibG9jazsgfSAuYnV0dG9uX3ZpZGVvX2ZyIGF7YmFja2dyb3VuZDp1cmwoIi9pbWFnZXMvdmlkZW8tYnV0dG9uX2ZyLnBuZyIpIG5vLXJlcGVhdCAwcHggMHB4IHRyYW5zcGFyZW50O30gLmJ1dHRvbl92aWRlb19mciBhOmhvdmVye2JhY2tncm91bmQ6dXJsKCIvaW1hZ2VzL3ZpZGVvLWJ1dHRvbi1ob3Zlcl9mci5wbmciKSBuby1yZXBlYXQgMHB4IDBweCB0cmFuc3BhcmVudDt9IC5idXR0b25fdmlkZW9fZW4gYXtiYWNrZ3JvdW5kOnVybCgiL2ltYWdlcy92aWRlby1idXR0b25fZW4ucG5nIikgbm8tcmVwZWF0IDBweCAwcHggdHJhbnNwYXJlbnQ7fSAuYnV0dG9uX3ZpZGVvX2VuIGE6aG92ZXJ7YmFja2dyb3VuZDp1cmwoIi9pbWFnZXMvdmlkZW8tYnV0dG9uLWhvdmVyX2VuLnBuZyIpIG5vLXJlcGVhdCAwcHggMHB4IHRyYW5zcGFyZW50O30gLmJ1dHRvbl91bmRlcnt3aWR0aDoyNDlweDsgcGFkZGluZzowcHg7IG1hcmdpbjoxMHB4IDBweDt9IC5idXR0b25fdW5kZXIgYXsgd2lkdGg6MTAwJTttaW4taGVpZ2h0OjM4cHg7IGJvcmRlci1yYWRpdXM6M3B4OyBmb250LXNpemU6MS4xMjVyZW0gOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgdGV4dC1hbGlnbjpjZW50ZXI7IGxpbmUtaGVpZ2h0OjM4cHg7IHRleHQtc2hhZG93Om5vbmU7IGRpc3BsYXk6YmxvY2sgfSAuYnV0dG9uX3VuZGVyIGE6aG92ZXJ7IGJvcmRlci1yYWRpdXM6M3B4OyBmb250LXNpemU6MS4xMjVyZW0gOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgdGV4dC1hbGlnbjpjZW50ZXI7IGxpbmUtaGVpZ2h0OjM4cHg7IHRleHQtc2hhZG93OjFweCAxcHggMXB4ICMwMDFlMzE7IH0gLmJ1dHRvbl91bmRlci5wcm9tbyBhe2JhY2tncm91bmQtY29sb3I6I2U4MGQwZDsgYmFja2dyb3VuZC1pbWFnZTpub25lOyBjb2xvcjojRkZGOyB3aWR0aDoyMzdweDsgbWFyZ2luLWxlZnQ6NXB4O30gLmJ1dHRvbl91bmRlci5wcm9tbzMgYXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjAwMDA7IGJhY2tncm91bmQtaW1hZ2U6bm9uZTsgY29sb3I6I0ZGRjsgd2lkdGg6MjM3cHg7IG1hcmdpbi1sZWZ0OjVweDt9IC5idXR0b25fdW5kZXIucHJvbW8gYTpob3ZlciwuYnV0dG9uX3VuZGVyLnByb21vMiBhOmhvdmVyLC5idXR0b25fdW5kZXIucHJvbW8zIGE6aG92ZXJ7YmFja2dyb3VuZC1pbWFnZTp1cmwoL2ltYWdlcy9idXR0b25fMWhvdmVyLnBuZyl9IC5idXR0b25fNHt3aWR0aDoyNDlweDsgaGVpZ2h0OjU3cHg7IGZsb2F0OmxlZnQ7IHBhZGRpbmc6MHB4OyBtYXJnaW4tYm90dG9tOjEwcHg7fSAuYnV0dG9uXzQgYXsgd2lkdGg6MjQ5cHg7IGhlaWdodDo1MHB4OyBwYWRkaW5nLXRvcDo3cHg7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvYnV0dG9uXzQucG5nKSBsZWZ0IHRvcCByZXBlYXQteDsgYm9yZGVyLXJhZGl1czozcHg7Zm9udC1zaXplOjEuMTI1cmVtIDsgY29sb3I6I0ZGRkZGRjsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IHRleHQtYWxpZ246Y2VudGVyOyBsaW5lLWhlaWdodDoyMnB4OyB0ZXh0LXNoYWRvdzoxcHggMXB4IDFweCAjMDAxZTMxOyBkaXNwbGF5OmJsb2NrIH0gLmJ1dHRvbl80IGE6aG92ZXJ7d2lkdGg6MjQ5cHg7IGhlaWdodDo1MHB4OyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL2J1dHRvbl80aG92ZXIucG5nKSBsZWZ0IHRvcCByZXBlYXQteDsgYm9yZGVyLXJhZGl1czozcHg7IGZvbnQtc2l6ZToxLjEyNXJlbSA7IGNvbG9yOiNGRkZGRkY7IHRleHQtZGVjb3JhdGlvbjpub25lOyB0ZXh0LWFsaWduOmNlbnRlcjsgbGluZS1oZWlnaHQ6MjJweDsgdGV4dC1zaGFkb3c6MXB4IDFweCAxcHggIzAwMWUzMTsgfSAuY2hlY2tib3gxNTJ7d2lkdGg6YXV0bzsgaGVpZ2h0OjE4cHg7IGZsb2F0OmxlZnQ7IG1hcmdpbjowOyBwYWRkaW5nOjAgNnB4IDAgMDsgbWFyZ2luLXRvcDowOyBib3JkZXI6MDsgdG9wOjA7IH0gLkJhc2UyMnt3aWR0aDphdXRvOyBoZWlnaHQ6MThweDsgZmxvYXQ6bGVmdDsgbWFyZ2luLXJpZ2h0OjZweDsgcGFkZGluZzo2cHggNnB4IDAgMDsgbWFyZ2luLXRvcDowOyBib3JkZXI6MDsgdG9wOjA7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiMyYzJjMmM7IHRleHQtZGVjb3JhdGlvbjpub25lO30gLmJveDk0MF9saW5le3dpZHRoOjk0MHB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9saW5lMjUucG5nKSBsZWZ0IGJvdHRvbSByZXBlYXQteDsgYmFja2dyb3VuZC1wb3NpdGlvbjpib3R0b207IGJvdHRvbTowO30gLndoaXRlX2JveHt3aWR0aDo5NDBweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IGJhY2tncm91bmQ6I0ZGRkZGRjsgb3ZlcmZsb3c6aGlkZGVuOyAtbW96LWJvcmRlci1yYWRpdXMtdG9wbGVmdDo2cHg7IC1tb3otYm9yZGVyLXJhZGl1cy10b3ByaWdodDo2cHg7IC1tb3otYm9yZGVyLXJhZGl1cy1ib3R0b21yaWdodDowcHg7IC1tb3otYm9yZGVyLXJhZGl1cy1ib3R0b21sZWZ0OjA7IC13ZWJraXQtYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czo2cHg7IC13ZWJraXQtYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6NnB4OyAtd2Via2l0LWJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjBweDsgLXdlYmtpdC1ib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjA7IGJvcmRlci10b3AtbGVmdC1yYWRpdXM6NnB4OyBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czo2cHg7IGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6MDsgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6MDt9IC5ib3gxMDB7d2lkdGg6MjIwcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojMGYxYTFlOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgdGV4dC1hbGlnbjpsZWZ0OyBwYWRkaW5nOjEzcHggMCAxNXB4IDEwcHg7fSAuYm94MTAxe3dpZHRoOjE3N3B4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzBmMWExZTsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IHRleHQtYWxpZ246Y2VudGVyOyBwYWRkaW5nOjEzcHggMCAxNXB4O2JhY2tncm91bmQ6dXJsKCIvaW1hZ2VzL2xpbmUyNS5wbmciKSByZXBlYXQteCBzY3JvbGwgY2VudGVyIGJvdHRvbSAjRDlEOUQ5O30gLmJveDEwMnt3aWR0aDoxNzdweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiMwZjFhMWU7IHRleHQtZGVjb3JhdGlvbjpub25lOyB0ZXh0LWFsaWduOmNlbnRlcjsgcGFkZGluZzoxM3B4IDAgMTVweDt9IC5ib3gxMDN7d2lkdGg6MTc3cHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojMGYxYTFlOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgdGV4dC1hbGlnbjpjZW50ZXI7IHBhZGRpbmc6MTNweCAwIDE1cHg7YmFja2dyb3VuZDp1cmwoIi9pbWFnZXMvbGluZTI1LnBuZyIpIHJlcGVhdC14IHNjcm9sbCBjZW50ZXIgYm90dG9tICNEOUQ5RDk7fSAuYm94MTA0e3dpZHRoOjE3OHB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzBmMWExZTsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IHRleHQtYWxpZ246Y2VudGVyOyBwYWRkaW5nOjEzcHggMCAxNXB4O30gLmJveEV2ZW57d2lkdGg6MTc3cHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojMGYxYTFlOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgdGV4dC1hbGlnbjpjZW50ZXI7IHBhZGRpbmc6MTNweCAwcHggMHB4IDBweDt9IC5ib3hPZGR7d2lkdGg6MTc3cHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojMGYxYTFlOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgdGV4dC1hbGlnbjpjZW50ZXI7IHBhZGRpbmc6MTNweCAwcHggMHB4IDBweDtiYWNrZ3JvdW5kOnVybCgiL2ltYWdlcy9saW5lMjUucG5nIikgcmVwZWF0LXggc2Nyb2xsIGNlbnRlciBib3R0b20gI0Q5RDlEOTt9IC5maWxlaW5wdXQtYnV0dG9uLCAuZmlsZWlucHV0LWJ1dHRvbjpob3ZlciB7IGZvbnQtc2l6ZTowLjg3NXJlbSAhaW1wb3J0YW50OyBsaW5lLWhlaWdodDozMXB4OyBwb3NpdGlvbjpyZWxhdGl2ZTsgfSAuZmlsZWlucHV0LWJ1dHRvbiBpbnB1dCB7IHBvc2l0aW9uOmFic29sdXRlOyB0b3A6MDsgcmlnaHQ6MDsgbWFyZ2luOjA7IG9wYWNpdHk6MDsgLW1zLWZpbHRlcjonYWxwaGEob3BhY2l0eT0wKSc7IGN1cnNvcjpwb2ludGVyOyB3aWR0aDoxMDAlOyBoZWlnaHQ6MTAwJTsgfSAuYm94OTQwX21haW57d2lkdGg6OTQwcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBwYWRkaW5nOjBweCAwIDE1cHggMHB4OyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL2JveDIwMF9iZy5wbmcpIGxlZnQgdG9wIHJlcGVhdDsgLW1vei1ib3JkZXItcmFkaXVzOjZweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjZweDsgYm9yZGVyLXJhZGl1czo2cHg7IC1raHRtbC1ib3JkZXItcmFkaXVzOjZweDt9IC53aGl0ZV9ib3hfdGV4dDJ7d2lkdGg6MjMwcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojMGYxYTFlOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgdGV4dC1hbGlnbjpjZW50ZXI7fSAud2hpdGVfYm94X3RleHQze2JhY2tncm91bmQtY29sb3I6I0Y2RjZGNjtib3JkZXItbGVmdDoxcHggc29saWQgI0M5QzlDOTtib3JkZXItcmlnaHQ6MXB4IHNvbGlkICNDOUM5Qzk7cGFkZGluZzoxMHB4IDBweDt3aWR0aDoxNzVweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiMwZjFhMWU7IHRleHQtZGVjb3JhdGlvbjpub25lOyB0ZXh0LWFsaWduOmNlbnRlcjt9IC53aGl0ZV9ib3hfdGV4dDR7cGFkZGluZzoxMHB4IDBweDt3aWR0aDoxNzdweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiMwZjFhMWU7IHRleHQtZGVjb3JhdGlvbjpub25lOyB0ZXh0LWFsaWduOmNlbnRlcjt9IC53aGl0ZV9ib3hfdGV4dDV7YmFja2dyb3VuZC1jb2xvcjojRjZGNkY2O2JvcmRlci1sZWZ0OjFweCBzb2xpZCAjQzlDOUM5O2JvcmRlci1yaWdodDoxcHggc29saWQgI0M5QzlDOTtwYWRkaW5nOjEwcHggMHB4O3dpZHRoOjE3NXB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzBmMWExZTsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IHRleHQtYWxpZ246Y2VudGVyOyB9IC53aGl0ZV9ib3hfdGV4dDZ7cGFkZGluZzoxMHB4IDBweDt3aWR0aDoxNzhweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiMwZjFhMWU7IHRleHQtZGVjb3JhdGlvbjpub25lOyB0ZXh0LWFsaWduOmNlbnRlcjt9IC53aGl0ZV9ib3hfYmxhbmt7d2lkdGg6MTc4cHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojMGYxYTFlOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgdGV4dC1hbGlnbjpjZW50ZXI7fSAud2hpdGVfYm94X3RleHRPZGR7cGFkZGluZzoxMHB4IDBweDt3aWR0aDoxNzdweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiMwZjFhMWU7IHRleHQtZGVjb3JhdGlvbjpub25lOyB0ZXh0LWFsaWduOmNlbnRlcjt9IC53aGl0ZV9ib3hfdGV4dEV2ZW57YmFja2dyb3VuZC1jb2xvcjojRjZGNkY2O2JvcmRlci1sZWZ0OjFweCBzb2xpZCAjQzlDOUM5O2JvcmRlci1yaWdodDoxcHggc29saWQgI0M5QzlDOTtwYWRkaW5nOjEwcHggMHB4O3dpZHRoOjE3NXB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzBmMWExZTsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IHRleHQtYWxpZ246Y2VudGVyO30gLmJveF90aXRsZXt3aWR0aDo5MzBweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IHBhZGRpbmc6MzBweCAwcHggNXB4IDEwcHg7IGZvbnQtc2l6ZTowLjkzOHJlbSA7IGNvbG9yOiMwZjFhMWU7IHRleHQtZGVjb3JhdGlvbjpub25lOyB0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7fSAuY3VzdG9tXzIyIHt3aWR0aDoyNDFweDsgaGVpZ2h0OjEyMXB4OyBmbG9hdDpsZWZ0OyBwYWRkaW5nOjBweDsgbWFyZ2luOjAgOHB4IDhweCAwOyBiYWNrZ3JvdW5kOiNlYmViZWI7LW1vei1ib3JkZXItcmFkaXVzOjhweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjhweDsgYm9yZGVyLXJhZGl1czo4cHg7IC1raHRtbC1ib3JkZXItcmFkaXVzOjhweDtjdXJzb3I6cG9pbnRlcjt9IC5jdXN0b21fMjIyIHt3aWR0aDoyNDFweDsgaGVpZ2h0OjEyMXB4OyBmbG9hdDpsZWZ0OyBwYWRkaW5nOjBweDsgbWFyZ2luOjAgOHB4IDhweCAwOyBiYWNrZ3JvdW5kOiNmZmZmZmY7LW1vei1ib3JkZXItcmFkaXVzOjhweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjhweDsgYm9yZGVyLXJhZGl1czo4cHg7IC1raHRtbC1ib3JkZXItcmFkaXVzOjhweDtjdXJzb3I6cG9pbnRlcjt9IC50b3lvdGFfY2Ftcnl7d2lkdGg6NDMwcHg7IGhlaWdodDoyMjJweDsgZmxvYXQ6bGVmdDsgcGFkZGluZzoyMHB4IDBweCAwcHggMTBweDsgbWFyZ2luLXJpZ2h0OjhweDsgYmFja2dyb3VuZDojZWJlYmViOy1tb3otYm9yZGVyLXJhZGl1czo4cHg7IC13ZWJraXQtYm9yZGVyLXJhZGl1czo4cHg7IGJvcmRlci1yYWRpdXM6OHB4OyAta2h0bWwtYm9yZGVyLXJhZGl1czo4cHg7fSAudG95b3RhX2NhbXJ5IGgxeyBmb250LXNpemU6MS44NzVyZW0gOyBjb2xvcjojMzAzMDMwOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgcGFkZGluZy1ib3R0b206NXB4O30gLnRveW90YV9jYW1yeSBweyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojNWE1YTVhOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgcGFkZGluZy1ib3R0b206OHB4O30gLmJveDJfZGV0YWlsc190ZXh0MjV7d2lkdGg6MTAwJTsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IG1hcmdpbjoxNXB4IGF1dG87IHRleHQtYWxpZ246Y2VudGVyOyBmb250LXNpemU6MS44NzVyZW0gOyBjb2xvcjojRkZGRkZGOyBmb250LXdlaWdodDpib2xkOyB0ZXh0LXNoYWRvdzoxcHggMXB4IDRweCAjODI4MjgyO30gLmJveDJfZGV0YWlsc190ZXh0MjUgc3BhbnsgdGV4dC1hbGlnbjpjZW50ZXI7IGZvbnQtc2l6ZToxLjEyNXJlbSA7IGNvbG9yOiNmZmY7IGZvbnQtd2VpZ2h0OmJvbGQ7fSAuYm94MTV7Y3Vyc29yOnBvaW50ZXI7d2lkdGg6YXV0bzsgaGVpZ2h0OjIwcHg7IGZsb2F0OmxlZnQ7IG1hcmdpbjowcHg7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvbWVudTEwX2JnLnBuZykgbGVmdCB0b3AgcmVwZWF0LXg7IC1tb3otYm9yZGVyLXJhZGl1czozcHg7IC13ZWJraXQtYm9yZGVyLXJhZGl1czozcHg7IGJvcmRlci1yYWRpdXM6M3B4OyAta2h0bWwtYm9yZGVyLXJhZGl1czozcHg7IHBhZGRpbmc6NHB4IDJweDsgZmxvYXQ6bGVmdDsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6I0ZGRjsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IG1hcmdpbi1yaWdodDoxcHg7IH0gLmJveDE1IGgye2N1cnNvcjpwb2ludGVyO2Zsb2F0OmxlZnQ7IHBhZGRpbmctcmlnaHQ6NXB4OyBwYWRkaW5nLXRvcDowcHg7fSAuYm94MTUgaDIgYXtjdXJzb3I6cG9pbnRlcjtmbG9hdDpsZWZ0OyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojRkZGOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9pY29uMi5wbmcpIGxlZnQgdG9wIG5vLXJlcGVhdDsgZm9udC13ZWlnaHQ6bm9ybWFsO3BhZGRpbmctbGVmdDo0MHB4OyBwYWRkaW5nLXJpZ2h0OjBweDsgbGluZS1oZWlnaHQ6MjBweDt9IC5ib3gxNSBoMiBhOmhvdmVye2N1cnNvcjpwb2ludGVyO2Zsb2F0OmxlZnQ7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiNGRkZGRkY7IHRleHQtZGVjb3JhdGlvbjpub25lOyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL2ljb24yLnBuZykgbGVmdCB0b3Agbm8tcmVwZWF0OyBmb250LXdlaWdodDpub3JtYWw7IGxpbmUtaGVpZ2h0OjIwcHg7fSAuYm94MTZ7d2lkdGg6YXV0bzsgaGVpZ2h0OjIwcHg7IGZsb2F0OmxlZnQ7IG1hcmdpbjowcHg7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvbWVudTEwX2JnLnBuZykgbGVmdCB0b3AgcmVwZWF0LXg7IC1tb3otYm9yZGVyLXJhZGl1czozcHg7IC13ZWJraXQtYm9yZGVyLXJhZGl1czozcHg7IGJvcmRlci1yYWRpdXM6M3B4OyAta2h0bWwtYm9yZGVyLXJhZGl1czozcHg7IHBhZGRpbmc6NHB4IDRweCA0cHggOHB4OyBmbG9hdDpsZWZ0OyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojRkZGOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgbWFyZ2luLXJpZ2h0OjFweDsgfSAuYm94MTYgaDJ7ZmxvYXQ6bGVmdDsgcGFkZGluZy1yaWdodDo1cHg7IHBhZGRpbmctdG9wOjBweDt9IC5ib3gxNiBoMiBhe2Zsb2F0OmxlZnQ7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiNGRkY7IHRleHQtZGVjb3JhdGlvbjpub25lOyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL2ljb24zLnBuZykgbGVmdCB0b3Agbm8tcmVwZWF0OyBmb250LXdlaWdodDpub3JtYWw7cGFkZGluZy1sZWZ0OjIwcHg7IHBhZGRpbmctcmlnaHQ6MHB4OyBsaW5lLWhlaWdodDoyMHB4O30gLmJveDE2IGgyIGE6aG92ZXJ7ZmxvYXQ6bGVmdDsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6cmdiKDQ0LDQ0LDQ0KTsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvaWNvbjMucG5nKSBsZWZ0IHRvcCBuby1yZXBlYXQ7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgbGluZS1oZWlnaHQ6MjBweDt9IC5ib3gxN3t3aWR0aDphdXRvOyBoZWlnaHQ6MjBweDsgZmxvYXQ6bGVmdDsgbWFyZ2luOjBweDsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9tZW51MTBfYmcucG5nKSBsZWZ0IHRvcCByZXBlYXQteDsgLW1vei1ib3JkZXItcmFkaXVzOjNweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjNweDsgYm9yZGVyLXJhZGl1czozcHg7IC1raHRtbC1ib3JkZXItcmFkaXVzOjNweDsgcGFkZGluZzo0cHggNHB4IDRweCA4cHg7IGZsb2F0OmxlZnQ7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiNGRkY7IHRleHQtZGVjb3JhdGlvbjpub25lOyBtYXJnaW4tcmlnaHQ6MXB4OyB9IC5ib3gxNyBoMntmbG9hdDpsZWZ0OyBwYWRkaW5nLXJpZ2h0OjVweDsgcGFkZGluZy10b3A6MHB4O30gLmJveDE3IGgyIGF7ZmxvYXQ6bGVmdDsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6I0ZGRjsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvaWNvbjQucG5nKSBsZWZ0IHRvcCBuby1yZXBlYXQ7IGZvbnQtd2VpZ2h0Om5vcm1hbDtwYWRkaW5nLWxlZnQ6MjVweDsgcGFkZGluZy1yaWdodDowcHg7IGxpbmUtaGVpZ2h0OjIwcHg7fSAuYm94MTcgaDIgYTpob3ZlcntmbG9hdDpsZWZ0OyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojMDA1ODlkOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9pY29uNC5wbmcpIGxlZnQgdG9wIG5vLXJlcGVhdDsgZm9udC13ZWlnaHQ6bm9ybWFsOyBsaW5lLWhlaWdodDoyMHB4O30gLmJveDE4e3dpZHRoOmF1dG87IGhlaWdodDoyMHB4OyBmbG9hdDpsZWZ0OyBtYXJnaW46MHB4OyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL21lbnUxMF9iZy5wbmcpIGxlZnQgdG9wIHJlcGVhdC14OyAtbW96LWJvcmRlci1yYWRpdXM6M3B4OyAtd2Via2l0LWJvcmRlci1yYWRpdXM6M3B4OyBib3JkZXItcmFkaXVzOjNweDsgLWtodG1sLWJvcmRlci1yYWRpdXM6M3B4OyBwYWRkaW5nOjRweCA0cHggNHB4IDhweDsgZmxvYXQ6bGVmdDsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6I0ZGRjsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IG1hcmdpbi1yaWdodDoxcHg7IH0gLmJveDE4IGgye2Zsb2F0OmxlZnQ7IHBhZGRpbmctcmlnaHQ6NXB4OyBwYWRkaW5nLXRvcDowcHg7fSAuYm94MTggaDIgYXtmbG9hdDpsZWZ0OyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojRkZGOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9pY29uNS5wbmcpIGxlZnQgdG9wIG5vLXJlcGVhdDsgZm9udC13ZWlnaHQ6bm9ybWFsO3BhZGRpbmctbGVmdDoyNXB4OyBwYWRkaW5nLXJpZ2h0OjVweDsgbGluZS1oZWlnaHQ6MjBweDt9IC5ib3gxOCBoMiBhOmhvdmVye2Zsb2F0OmxlZnQ7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiMwMDU4OWQ7IHRleHQtZGVjb3JhdGlvbjpub25lOyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL2ljb241LnBuZykgbGVmdCB0b3Agbm8tcmVwZWF0OyBmb250LXdlaWdodDpub3JtYWw7IGxpbmUtaGVpZ2h0OjIwcHg7fSAuYm94MTl7d2lkdGg6YXV0bzsgaGVpZ2h0OjIwcHg7IGZsb2F0OmxlZnQ7IG1hcmdpbjowcHg7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvbWVudTEwX2JnLnBuZykgbGVmdCB0b3AgcmVwZWF0LXg7IC1tb3otYm9yZGVyLXJhZGl1czozcHg7IC13ZWJraXQtYm9yZGVyLXJhZGl1czozcHg7IGJvcmRlci1yYWRpdXM6M3B4OyAta2h0bWwtYm9yZGVyLXJhZGl1czozcHg7IHBhZGRpbmc6NHB4OyBwYWRkaW5nLXJpZ2h0OjNweDsgZmxvYXQ6bGVmdDsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6I0ZGRjsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IG1hcmdpbi1yaWdodDoxcHg7IH0gLmJveDE5IGgye2Zsb2F0OmxlZnQ7IHBhZGRpbmctcmlnaHQ6NXB4OyBwYWRkaW5nLXRvcDowcHg7fSAuYm94MTkgaDIgYXtmbG9hdDpsZWZ0OyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojRkZGOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9pY29uNi5wbmcpIGxlZnQgdG9wIG5vLXJlcGVhdDsgZm9udC13ZWlnaHQ6bm9ybWFsO3BhZGRpbmctbGVmdDoyNXB4OyBsaW5lLWhlaWdodDoyMHB4O30gLmJveDE5IGgyIGE6aG92ZXJ7ZmxvYXQ6bGVmdDsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzAwNTg5ZDsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvaWNvbjYucG5nKSBsZWZ0IHRvcCBuby1yZXBlYXQ7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgbGluZS1oZWlnaHQ6MjBweDt9IC5ib3gxMTE0e2N1cnNvcjpwb2ludGVyO3dpZHRoOmF1dG87IGhlaWdodDoyMHB4OyBmbG9hdDpsZWZ0OyBtYXJnaW46MHB4OyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL2J1dHRvbl8xLnBuZykgbGVmdCB0b3AgcmVwZWF0LXg7IC1tb3otYm9yZGVyLXJhZGl1czozcHg7IC13ZWJraXQtYm9yZGVyLXJhZGl1czozcHg7IGJvcmRlci1yYWRpdXM6M3B4OyAta2h0bWwtYm9yZGVyLXJhZGl1czozcHg7IHBhZGRpbmc6NHB4OyBmbG9hdDpsZWZ0OyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojRkZGOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgbWFyZ2luLXJpZ2h0OjFweDsgfSAuYm94MTExNCBoMntjdXJzb3I6cG9pbnRlcjtmbG9hdDpsZWZ0OyBwYWRkaW5nLXJpZ2h0OjVweDsgcGFkZGluZy10b3A6MHB4O30gLmJveDExMTQgaDIgYXtjdXJzb3I6cG9pbnRlcjtmbG9hdDpsZWZ0OyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojRkZGOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9pY29uMi5wbmcpIGxlZnQgdG9wIG5vLXJlcGVhdDsgZm9udC13ZWlnaHQ6bm9ybWFsO3BhZGRpbmctbGVmdDo0MHB4OyBwYWRkaW5nLXJpZ2h0OjEwcHg7IGxpbmUtaGVpZ2h0OjIwcHg7fSAuYm94MTExNCBoMiBhOmhvdmVye2N1cnNvcjpwb2ludGVyO2Zsb2F0OmxlZnQ7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiMwMDU4OWQ7IHRleHQtZGVjb3JhdGlvbjpub25lOyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL2ljb24yLnBuZykgbGVmdCB0b3Agbm8tcmVwZWF0OyBmb250LXdlaWdodDpub3JtYWw7IGxpbmUtaGVpZ2h0OjIwcHg7fSAuU3BlY2lmaWNhdGlvbnN7d2lkdGg6NjUxcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBtYXJnaW46MHB4OyBwYWRkaW5nOjEwcHggMDsgZm9udC1zaXplOjEuNXJlbSA7IGNvbG9yOiMyNTI1MjU7IHRleHQtZGVjb3JhdGlvbjpub25lO2ZvbnQtd2VpZ2h0Om5vcm1hbDttYXJnaW4tdG9wOjVweDt9IC5Nb3JiaTJ7d2lkdGg6NjMxcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBwYWRkaW5nOjEwcHg7IG1hcmdpbjowcHg7IGJhY2tncm91bmQ6I0VGRUZFRjsgLW1vei1ib3JkZXItcmFkaXVzOjNweDtmb250LXdlaWdodDpub3JtYWw7IC13ZWJraXQtYm9yZGVyLXJhZGl1czozcHg7IGJvcmRlci1yYWRpdXM6M3B4OyAta2h0bWwtYm9yZGVyLXJhZGl1czozcHg7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiM1YTVhNWE7IHRleHQtZGVjb3JhdGlvbjpub25lO30gLk1vcmJpMiBweyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojNWE1YTVhOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgcGFkZGluZy1ib3R0b206OHB4O30gLmJveDI4ODlfbWlke3dpZHRoOjI3OHB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9yaWdodF9ib3g0X21pZC5wbmcpIGxlZnQgdG9wIHJlcGVhdC15OyBwYWRkaW5nOjAgNXB4IDIwcHggNXB4O30gLk1vcmJpMjJ7d2lkdGg6NjUxcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBwYWRkaW5nOjBweDsgbWFyZ2luOjBweDsgLW1vei1ib3JkZXItcmFkaXVzOjNweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjNweDsgYm9yZGVyLXJhZGl1czozcHg7IC1raHRtbC1ib3JkZXItcmFkaXVzOjNweDsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzVhNWE1YTsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7fSAuYm94Mjg4OV9taWQgaDF7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBwYWRkaW5nOjEwcHggMTBweCAyMHB4IDEwcHg7IGZvbnQtc2l6ZToxLjg3NXJlbSA7IGNvbG9yOiMyODI4Mjg7IHRleHQtZGVjb3JhdGlvbjpub25lOyBmb250LXdlaWdodDpub3JtYWw7IHRleHQtYWxpZ246bGVmdDsgdGV4dC10cmFuc2Zvcm06bm9uZTsgbGluZS1oZWlnaHQ6MjRweH0gLl9ib3gyODg5X21pZCBoMXsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IHBhZGRpbmc6MTBweCAxMHB4IDIwcHggMTBweDsgZm9udC1zaXplOjEuODc1cmVtIDsgY29sb3I6IzI4MjgyODsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgdGV4dC1hbGlnbjpsZWZ0OyB0ZXh0LXRyYW5zZm9ybTpub25lOyBsaW5lLWhlaWdodDoyNHB4fSAuYm94Mjg4OV9taWQgaDJ7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBwYWRkaW5nOjRweCAxMHB4IDIwcHggMTVweDsgZm9udC1zaXplOjEuNXJlbSA7IGNvbG9yOiMyODI4Mjg7IHRleHQtZGVjb3JhdGlvbjpub25lOyBmb250LXdlaWdodDpub3JtYWw7IHRleHQtYWxpZ246bGVmdDsgdGV4dC10cmFuc2Zvcm06bm9uZTsgbGluZS1oZWlnaHQ6MjNweH0gI3NpbWlsYXJUaXRsZXsgcGFkZGluZzo0cHggMTBweCA5cHggMTVweDsgZm9udC1zaXplOjEuNDM4cmVtIDsgZm9udC13ZWlnaHQ6bm9ybWFsOyB9IC50YWJlNXt3aWR0aDo2MzFweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IH0gLnRhYmU1IHVseyBsaXN0LXN0eWxlLXR5cGU6bm9uZTsgbWFyZ2luOjA7IHBhZGRpbmc6MDsgdGV4dC10cmFuc2Zvcm06bm9uZTsgfSAudGFiZTUgdWwgbGl7IGxpc3Qtc3R5bGUtdHlwZTpub25lOyBtYXJnaW46MDsgZGlzcGxheTpibG9jazt9IC50YWJlNSB1bCBsaSBzcGFue2N1cnNvcjpwb2ludGVyOyBsaXN0LXN0eWxlLXR5cGU6bm9uZTsgbWFyZ2luOjA7IGRpc3BsYXk6YmxvY2s7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiMzMjMyMzI7IHRleHQtZGVjb3JhdGlvbjpub25lOyBwYWRkaW5nOjdweCAxNXB4IDdweCAxNXB4OyBtYXJnaW4tcmlnaHQ6MnB4OyBmb250LXdlaWdodDpub3JtYWw7IGxpbmUtaGVpZ2h0OjE4cHg7IHRleHQtdHJhbnNmb3JtOm5vbmU7IHRleHQtYWxpZ246Y2VudGVyOyB0ZXh0LXRyYW5zZm9ybTpub25lOyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL3RhYl9iZy5wbmcpIGxlZnQgdG9wIHJlcGVhdC14OyBmbG9hdDpsZWZ0OyAtbW96LWJvcmRlci1yYWRpdXMtdG9wbGVmdDo2cHg7IC1tb3otYm9yZGVyLXJhZGl1cy10b3ByaWdodDo2cHg7IC1tb3otYm9yZGVyLXJhZGl1cy1ib3R0b21yaWdodDowcHg7IC1tb3otYm9yZGVyLXJhZGl1cy1ib3R0b21sZWZ0OjA7IC13ZWJraXQtYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czo2cHg7IC13ZWJraXQtYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6NnB4OyAtd2Via2l0LWJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjBweDsgLXdlYmtpdC1ib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjA7IGJvcmRlci10b3AtbGVmdC1yYWRpdXM6NnB4OyBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czo2cHg7IGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6MDsgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6MDt9IC50YWJlNSB1bCBsaSBzcGFuOmhvdmVyeyBsaXN0LXN0eWxlLXR5cGU6bm9uZTsgZGlzcGxheTpibG9jazsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzdiMDAwMDsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IHBhZGRpbmc6N3B4IDE1cHggN3B4IDE1cHg7IG1hcmdpbi1yaWdodDoycHg7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgbGluZS1oZWlnaHQ6MThweDsgdGV4dC10cmFuc2Zvcm06bm9uZTsgdGV4dC1hbGlnbjpjZW50ZXI7IHRleHQtdHJhbnNmb3JtOm5vbmU7IGJhY2tncm91bmQ6ICNlYmViZWI7IGZsb2F0OmxlZnQ7IC1tb3otYm9yZGVyLXJhZGl1cy10b3BsZWZ0OjZweDsgLW1vei1ib3JkZXItcmFkaXVzLXRvcHJpZ2h0OjZweDsgLW1vei1ib3JkZXItcmFkaXVzLWJvdHRvbXJpZ2h0OjBweDsgLW1vei1ib3JkZXItcmFkaXVzLWJvdHRvbWxlZnQ6MDsgLXdlYmtpdC1ib3JkZXItdG9wLWxlZnQtcmFkaXVzOjZweDsgLXdlYmtpdC1ib3JkZXItdG9wLXJpZ2h0LXJhZGl1czo2cHg7IC13ZWJraXQtYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6MHB4OyAtd2Via2l0LWJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6MDsgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czo2cHg7IGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOjZweDsgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czowOyBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czowOyB9IC50YWJlNSB1bCBsaSBzcGFuLmFjdGl2ZXtjdXJzb3I6ZGVmYXVsdDsgbGlzdC1zdHlsZS10eXBlOm5vbmU7IGRpc3BsYXk6YmxvY2s7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiM3YjAwMDA7IHRleHQtZGVjb3JhdGlvbjpub25lOyBwYWRkaW5nOjdweCAxNXB4IDdweCAxNXB4OyBtYXJnaW4tcmlnaHQ6MnB4OyBmb250LXdlaWdodDpub3JtYWw7IGxpbmUtaGVpZ2h0OjE4cHg7IHRleHQtdHJhbnNmb3JtOm5vbmU7IHRleHQtYWxpZ246Y2VudGVyOyB0ZXh0LXRyYW5zZm9ybTpub25lOyBiYWNrZ3JvdW5kOiAjZWJlYmViOyBmbG9hdDpsZWZ0OyAtbW96LWJvcmRlci1yYWRpdXMtdG9wbGVmdDo2cHg7IC1tb3otYm9yZGVyLXJhZGl1cy10b3ByaWdodDo2cHg7IC1tb3otYm9yZGVyLXJhZGl1cy1ib3R0b21yaWdodDowcHg7IC1tb3otYm9yZGVyLXJhZGl1cy1ib3R0b21sZWZ0OjA7IC13ZWJraXQtYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czo2cHg7IC13ZWJraXQtYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6NnB4OyAtd2Via2l0LWJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjBweDsgLXdlYmtpdC1ib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjA7IGJvcmRlci10b3AtbGVmdC1yYWRpdXM6NnB4OyBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czo2cHg7IGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6MDsgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6MDsgfSAudGFiX2RldGFpbHMye3dpZHRoOjYzMXB4OyBwYWRkaW5nOjEwcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBiYWNrZ3JvdW5kOiNFRkVGRUY7IC1tb3otYm9yZGVyLXJhZGl1cy10b3BsZWZ0OjBweDsgLW1vei1ib3JkZXItcmFkaXVzLXRvcHJpZ2h0OjBweDsgLW1vei1ib3JkZXItcmFkaXVzLWJvdHRvbXJpZ2h0OjZweDsgLW1vei1ib3JkZXItcmFkaXVzLWJvdHRvbWxlZnQ6NnB4OyAtd2Via2l0LWJvcmRlci10b3AtbGVmdC1yYWRpdXM6MHB4OyAtd2Via2l0LWJvcmRlci10b3AtcmlnaHQtcmFkaXVzOjBweDsgLXdlYmtpdC1ib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czo2cHg7IC13ZWJraXQtYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czo2cHg7IGJvcmRlci10b3AtbGVmdC1yYWRpdXM6MHB4OyBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czowcHg7IGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6NnB4OyBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czo2cHg7fSAuYm94MjV7d2lkdGg6NDg3cHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBtYXJnaW46MHB4OyBiYWNrZ3JvdW5kOiNFRkVGRUY7IC1tb3otYm9yZGVyLXJhZGl1czozcHg7IC13ZWJraXQtYm9yZGVyLXJhZGl1czozcHg7IGJvcmRlci1yYWRpdXM6M3B4OyAta2h0bWwtYm9yZGVyLXJhZGl1czozcHg7IG1hcmdpbjowIDEzcHggMCAwOyBwYWRkaW5nOjIwcHggMCAyMHB4IDIwcHg7fSAuYm94MjZ7d2lkdGg6MjQzcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0O30gLmJveDI2IHVseyBsaXN0LXN0eWxlLXR5cGU6bm9uZTsgbWFyZ2luOjA7IHBhZGRpbmc6MDsgdGV4dC10cmFuc2Zvcm06bm9uZTsgfSAuYm94MjYgdWwgbGl7IGxpc3Qtc3R5bGUtdHlwZTpub25lOyBtYXJnaW46MDsgZGlzcGxheTpibG9jazt9IC5ib3gyNiB1bCBsaSBzcGFueyBsaXN0LXN0eWxlLXR5cGU6bm9uZTsgbWFyZ2luOjA7IGRpc3BsYXk6YmxvY2s7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiMzMjMyMzI7IHRleHQtZGVjb3JhdGlvbjpub25lOyBwYWRkaW5nOjAgN3B4IDdweCAwcHg7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgbGluZS1oZWlnaHQ6MThweDsgdGV4dC10cmFuc2Zvcm06bm9uZTsgdGV4dC1hbGlnbjpsZWZ0O30gLmJveDI2IHVsIGxpIGF7IGxpc3Qtc3R5bGUtdHlwZTpub25lOyBtYXJnaW46MDsgZGlzcGxheTpibG9jazsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzMyMzIzMjsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IHBhZGRpbmc6MCA3cHggN3B4IDIycHg7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgbGluZS1oZWlnaHQ6MThweDsgdGV4dC10cmFuc2Zvcm06bm9uZTsgdGV4dC1hbGlnbjpsZWZ0OyB9IC5ib3gyNiB1bCBsaSBhOmhvdmVyeyBsaXN0LXN0eWxlLXR5cGU6bm9uZTsgbWFyZ2luOjA7IGRpc3BsYXk6YmxvY2s7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiM3YjAwMDA7IHBhZGRpbmc6MCA3cHggN3B4IDIycHg7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgbGluZS1oZWlnaHQ6MThweDsgdGV4dC10cmFuc2Zvcm06bm9uZTsgdGV4dC1hbGlnbjpsZWZ0OyB0ZXh0LXRyYW5zZm9ybTpub25lOyB9IC5ib3gyNiB1bCBsaSBhLmFjdGl2ZXsgbGlzdC1zdHlsZS10eXBlOm5vbmU7IG1hcmdpbjowOyBkaXNwbGF5OmJsb2NrOyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojN2IwMDAwOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgcGFkZGluZzowIDdweCA3cHggMjJweDsgZm9udC13ZWlnaHQ6bm9ybWFsOyBsaW5lLWhlaWdodDoxOHB4OyB0ZXh0LWFsaWduOmxlZnQ7IHRleHQtdHJhbnNmb3JtOm5vbmU7IH0gLmJveDI3e3dpZHRoOjEzMXB4OyBoZWlnaHQ6MjhweDsgZmxvYXQ6bGVmdDsgbWFyZ2luLWJvdHRvbTo4cHg7IH0gLmJveDMze3dpZHRoOjYzMXB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDt9IC5ib3gzMyB1bHsgbGlzdC1zdHlsZS10eXBlOm5vbmU7IG1hcmdpbjowOyBwYWRkaW5nOjA7IHRleHQtdHJhbnNmb3JtOm5vbmU7IH0gLmJveDMzIHVsIGxpeyBsaXN0LXN0eWxlLXR5cGU6bm9uZTsgbWFyZ2luOjA7IGRpc3BsYXk6YmxvY2s7fSAuYm94MzMgdWwgbGkgYXsgbGlzdC1zdHlsZS10eXBlOm5vbmU7IG1hcmdpbjowOyBkaXNwbGF5OmJsb2NrOyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojMzIzMjMyOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgcGFkZGluZzowIDdweCA3cHggMHB4OyBtYXJnaW4tcmlnaHQ6MnB4OyBmb250LXdlaWdodDpib2xkOyBsaW5lLWhlaWdodDoxOHB4OyB0ZXh0LXRyYW5zZm9ybTpub25lOyB0ZXh0LWFsaWduOmxlZnQ7IHRleHQtdHJhbnNmb3JtOm5vbmU7fSAuYm94MzMgdWwgbGkgc3BhbnsgbGlzdC1zdHlsZS10eXBlOm5vbmU7IG1hcmdpbjowOyBkaXNwbGF5OmJsb2NrOyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojMzIzMjMyOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgcGFkZGluZzowIDdweCA3cHggMHB4OyBtYXJnaW4tcmlnaHQ6MnB4OyBmb250LXdlaWdodDpib2xkOyBsaW5lLWhlaWdodDoxOHB4OyB0ZXh0LXRyYW5zZm9ybTpub25lOyB0ZXh0LWFsaWduOmxlZnQ7IHRleHQtdHJhbnNmb3JtOm5vbmU7fSAuYm94MzMgcHsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzMyMzIzMjsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IHBhZGRpbmc6MCAwcHggN3B4IDBweDsgZm9udC13ZWlnaHQ6Ym9sZDsgbGluZS1oZWlnaHQ6MThweDsgdGV4dC10cmFuc2Zvcm06bm9uZTsgdGV4dC1hbGlnbjpsZWZ0OyB9IC5ib3gzMyB1bCBsaSBhOmhvdmVyeyBsaXN0LXN0eWxlLXR5cGU6bm9uZTsgbWFyZ2luOjA7IGRpc3BsYXk6YmxvY2s7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiM3YjAwMDA7IHRleHQtZGVjb3JhdGlvbjpub25lOyBwYWRkaW5nOjAgN3B4IDdweCAyMnB4OyBtYXJnaW4tcmlnaHQ6MnB4OyBmb250LXdlaWdodDpib2xkOyBsaW5lLWhlaWdodDoxOHB4OyB0ZXh0LXRyYW5zZm9ybTpub25lOyB0ZXh0LWFsaWduOmxlZnQ7IHRleHQtdHJhbnNmb3JtOm5vbmU7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvYXJyb3c4LnBuZykgbGVmdCB0b3Agbm8tcmVwZWF0OyB9IC5Nb3RldXJ7d2lkdGg6MjgwcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBtYXJnaW4tYm90dG9tOjVweDt9IC5Nb3RldXIgaDJ7d2hpdGUtc3BhY2U6bm9ybWFsOyB3aWR0aDoxMzVweDsgZmxvYXQ6bGVmdDsgZm9udC1zaXplOjAuNzVyZW0gOyBjb2xvcjojMjAyMDIwO30gLk1vdGV1ciBoM3t3aGl0ZS1zcGFjZTpub3JtYWw7IHdpZHRoOjE0MHB4OyBmbG9hdDpsZWZ0OyBmb250LXNpemU6MC44MTNyZW0gOyBmb250LXdlaWdodDpub3JtYWw7IGNvbG9yOiM1YTVhNWE7fSAuYm94MjYgdWwgbGkgc3BhbjpiZWZvcmUsLmJveDMzIHVsIGxpIHNwYW46YmVmb3JlLC5Nb3RldXIgaDI6YmVmb3JlIHsgY29udGVudDoiXGYxMzgiOyBmb250LWZhbWlseTonRm9udCBBd2Vzb21lIDUgUHJvJzsgZm9udC13ZWlnaHQ6OTAwOyBtYXJnaW4tcmlnaHQ6NXB4OyB9IC5ib3gyNyBhe3dpZHRoOjEzMXB4OyBoZWlnaHQ6MjhweDsgZmxvYXQ6bGVmdDsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9idXR0b24xMF9iZy5wbmcpIGxlZnQgdG9wIHJlcGVhdC14IDsgLW1vei1ib3JkZXItcmFkaXVzOjNweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjNweDsgYm9yZGVyLXJhZGl1czozcHg7IC1raHRtbC1ib3JkZXItcmFkaXVzOjNweDsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6I0ZGRkZGRjsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgcGFkZGluZzowOyBsaW5lLWhlaWdodDoyOHB4OyB0ZXh0LWFsaWduOmNlbnRlcjsgdGV4dC10cmFuc2Zvcm06bm9uZTt9IC5ib3gyNyBhOmhvdmVye3dpZHRoOjEzMXB4OyBoZWlnaHQ6MjhweDsgZmxvYXQ6bGVmdDsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9idXR0b24xMF9iZy5wbmcpIGxlZnQgLTMycHggcmVwZWF0LXggOyAtbW96LWJvcmRlci1yYWRpdXM6M3B4OyAtd2Via2l0LWJvcmRlci1yYWRpdXM6M3B4OyBib3JkZXItcmFkaXVzOjNweDsgLWtodG1sLWJvcmRlci1yYWRpdXM6M3B4OyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojRkZGRkZGOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgZm9udC13ZWlnaHQ6bm9ybWFsOyB0ZXh0LWFsaWduOmNlbnRlcjsgdGV4dC10cmFuc2Zvcm06bm9uZTsgbGluZS1oZWlnaHQ6MjhweDsgfSAuYm94Mjh7d2lkdGg6MTI3cHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBtYXJnaW46MHB4OyBiYWNrZ3JvdW5kOiM2ZjZmNmYgdXJsKC9pbWFnZXMvbGl0ZXJfYmcucG5nKSBsZWZ0IHRvcCByZXBlYXQteDsgLW1vei1ib3JkZXItcmFkaXVzOjNweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjNweDsgYm9yZGVyLXJhZGl1czozcHg7IC1raHRtbC1ib3JkZXItcmFkaXVzOjNweDsgcGFkZGluZzoxMHB4IDJweCAxMHB4IDJweDsgbWFyZ2luOjAgMHB4IDAgMDt9IC50ZXh0NDR7d2lkdGg6MTI3cHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL2xpdGVyX2xpbmUucG5nKSBsZWZ0IGJvdHRvbSByZXBlYXQteDsgYmFja2dyb3VuZC1wb3NpdGlvbjpib3R0b207IHRleHQtYWxpZ246Y2VudGVyOyBwYWRkaW5nLWJvdHRvbTo1cHg7IG1hcmdpbi1ib3R0b206NXB4OyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojRkZGRkZGOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgZm9udC13ZWlnaHQ6bm9ybWFsOyB0ZXh0LWFsaWduOmNlbnRlcjsgdGV4dC10cmFuc2Zvcm06bm9uZTsgbGluZS1oZWlnaHQ6MThweH0gLnRleHRfYm94NjB7d2lkdGg6MTMzcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBwYWRkaW5nOjA7IH0gLnRleHRfYm94NjAgaDJ7d2lkdGg6MTMzcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBwYWRkaW5nOjA7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiMyNjI2MjY7IHRleHQtZGVjb3JhdGlvbjpub25lOyBmb250LXdlaWdodDpib2xkOyB0ZXh0LWFsaWduOmxlZnQ7IHRleHQtdHJhbnNmb3JtOm5vbmU7IGxpbmUtaGVpZ2h0OjE4cHh9IC50ZXh0X2JveDYwIGgze3dpZHRoOjEzM3B4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgcGFkZGluZzowOyBmb250LXNpemU6MXJlbSA7IGNvbG9yOiM3YjAwMDA7IHRleHQtZGVjb3JhdGlvbjpub25lOyBmb250LXdlaWdodDpub3JtYWw7IHRleHQtYWxpZ246bGVmdDsgdGV4dC10cmFuc2Zvcm06bm9uZTsgbGluZS1oZWlnaHQ6MThweH0gLnRleHRfYm94NjAgcHt3aWR0aDoxMzNweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IHBhZGRpbmc6NXB4IDA7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiMyNjI2MjY7IHRleHQtZGVjb3JhdGlvbjpub25lOyBmb250LXdlaWdodDpib2xkOyB0ZXh0LWFsaWduOmxlZnQ7IHRleHQtdHJhbnNmb3JtOm5vbmU7IGxpbmUtaGVpZ2h0OjE4cHh9IC52aW9ye3dpZHRoOmF1dG87IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBwYWRkaW5nOjBweCAxMHB4OyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL3Zpb3IucG5nKSBsZWZ0IHRvcCByZXBlYXQteDsgbGluZS1oZWlnaHQ6MjJweDsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6I0ZGRkZGRjsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgdGV4dC1hbGlnbjpsZWZ0OyB0ZXh0LXRyYW5zZm9ybTpub25lOyAtbW96LWJvcmRlci1yYWRpdXM6NXB4OyAtd2Via2l0LWJvcmRlci1yYWRpdXM6NXB4OyBib3JkZXItcmFkaXVzOjVweDsgLWtodG1sLWJvcmRlci1yYWRpdXM6NXB4OyB9IC5ib3gxMzN7d2lkdGg6MTMzcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBwYWRkaW5nOjA7IG1hcmdpbjowO30gLmJveDI1OHt3aWR0aDoyNThweDsgYm9yZGVyLWJvdHRvbToxcHggc29saWQgI2I5YjliOTsgcGFkZGluZzowIDEwcHggNXB4IDEwcHg7IG1hcmdpbi1ib3R0b206NXB4OyBmbG9hdDpsZWZ0O30gLmJveDExNnt3aWR0aDoxMTZweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IGJvcmRlcjoycHggc29saWQgI0ZGRkZGRjsgcGFkZGluZzowOyBtYXJnaW4tcmlnaHQ6NXB4O30gLmJveDExNiBpbWd7d2lkdGg6MTIwcHg7IH0gLmJveDJ7d2lkdGg6MjYwcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBtYXJnaW4tcmlnaHQ6NDdweDsgbWFyZ2luLWxlZnQ6MjBweDsgcGFkZGluZzowIDAgMTBweCA1cHg7IGZvbnQtc2l6ZTowLjgxM3JlbSA7IGNvbG9yOiMyNDI0MjQgO30gLmJveDIgc3Bhbntmb250OmJvbGQgMTJweCBWZXJkYW5hLCBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBjb2xvcjojRkYwMDAwfSAuYm94M3t3aWR0aDoyNjBweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IG1hcmdpbi1yaWdodDoyMHB4OyBwYWRkaW5nOjAgMCAxMHB4IDVweDsgZm9udC1zaXplOjAuODEzcmVtIDsgY29sb3I6IzI0MjQyNCA7fSAuYm94MyBzcGFue2ZvbnQ6Ym9sZCAxMnB4IFZlcmRhbmEsIEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGNvbG9yOiNGRjAwMDB9IC5ib3g0e3dpZHRoOjI2NXB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgbWFyZ2luOjBweCA0NXB4IDEwcHggMjBweDsgfSAuYm94NDR7d2lkdGg6MjY1cHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBtYXJnaW46MHB4IDQ3cHggMTBweCAyMHB4OyBwb3NpdGlvbjpyZWxhdGl2ZTt9IC5ib3g1e3dpZHRoOjI2NXB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgbWFyZ2luOjBweCAyMHB4IDEwcHggMDt9IC5ib3g2e3dpZHRoOjI4MHB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgbWFyZ2luOjEwcHggMHB4IDBweCAwO30gLmJveDU1e3dpZHRoOjI2NXB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgbWFyZ2luOjBweCAyMHB4IDEwcHggMDtwb3NpdGlvbjpyZWxhdGl2ZTt9IC5saW4ye3dpZHRoOjYxN3B4OyBoZWlnaHQ6MnB4OyBmbG9hdDpsZWZ0OyBtYXJnaW46MHB4IDAgMTBweCAwOyBwYWRkaW5nOjA7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvbGluZTIucG5nKSBsZWZ0IHRvcCByZXBlYXQteDt9IC5ib3gxNHtwYWRkaW5nOjBweCAwOyBoZWlnaHQ6MTVweDsgZmxvYXQ6bGVmdH0gLmJveDIwe3BhZGRpbmc6MCAxMHB4OyBmbG9hdDpsZWZ0OyBsaW5lLWhlaWdodDoyN3B4OyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojMjQyNDI0IDsgZm9udC13ZWlnaHQ6Ym9sZDt9IC50ZXh0MzB7d2lkdGg6NjE3cHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBwYWRkaW5nOjE3cHggMDsgZm9udC1zaXplOjEuMzc1cmVtIDsgY29sb3I6IzI0MjQyNH0gLnRleHQzMCBzcGFue3BhZGRpbmctcmlnaHQ6MTBweDsgZmxvYXQ6cmlnaHQ7IHRleHQtYWxpZ246cmlnaHQ7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgY29sb3I6IzI0MjQyNDt9IC50ZXh0MzAgc3BhbiBzdHJvbmd7Zm9udDpib2xkIDIwcHggVmVyZGFuYSwgQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgY29sb3I6I0ZGMDAwMCB9IC50ZXh0MzAuZm9ybUhlYWRpbmcsIC50ZXh0MzAuZm9ybUhlYWRpbmcgc3Bhbntjb2xvcjp2YXIoLS1mb3JtLXRpdGxlLWNvbG9yLCAjMjQyNDI0KTt9IC5ib3g2MTd7d2lkdGg6NjE3cHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBwYWRkaW5nLWxlZnQ6MHB4OyBwYWRkaW5nLWJvdHRvbToyMHB4OyBtYXJnaW4tcmlnaHQ6MHB4O30gLm1haW42MTd7d2lkdGg6NjE3cHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBwYWRkaW5nLWxlZnQ6MHB4OyBtYXJnaW4tdG9wOjE1cHg7fSAuYm94MjBBe3BhZGRpbmc6MCA1cHg7IGZsb2F0OmxlZnQ7IGxpbmUtaGVpZ2h0OjI1cHg7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiMyNDI0MjQgOyBmb250LXdlaWdodDpib2xkO30gLm9uU2l0ZSArIC5wcmVmZXJyZWQsIC5wcmVmZXJyZWQ6aGFzKCsub25TaXRlKSB7IGFsaWduLXNlbGY6ZW5kOyB9ICNzZXJ2aWNlUGFja2FnZXMgdGFibGUge2JvcmRlci1jb2xsYXBzZTpjb2xsYXBzZTsgd2lkdGg6MTAwJTsgbGluZS1oZWlnaHQ6MzBweDsgbWFyZ2luLWJvdHRvbToxNXB4OyBmb250LXNpemU6OTAlO30gI3NlcnZpY2VQYWNrYWdlcyB0YWJsZSB0Ym9keSB0cjpudGgtY2hpbGQob2RkKSB7YmFja2dyb3VuZDojZjNmM2YzO30gI3NlcnZpY2VQYWNrYWdlcyB0YWJsZSB0ZHtwYWRkaW5nLXRvcDowLjVyZW07IHZlcnRpY2FsLWFsaWduOnRvcDsgbGluZS1oZWlnaHQ6MS41O30gI3NlcnZpY2VQYWNrYWdlcyB0YWJsZSB0ZDpudGgtY2hpbGQoMikge3BhZGRpbmc6MC41cmVtO30gLmRldGFpbENhclRpdGxlLCAuZGV0YWlsQ2FyVGl0bGVXaWRlLCAuZGV0YWlsQ2FyVGl0bGVGdWxsIHt3b3JkLXdyYXA6YnJlYWstd29yZDtoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgbWFyZ2luOjBweDsgZm9udC1zaXplOjEuODc1cmVtIDsgY29sb3I6IzQxNDE0MTtmb250LXdlaWdodDpub3JtYWw7fSAuZGV0YWlsQ2FyVGl0bGUge3dpZHRoOjQ5MHB4O30gLmRldGFpbENhclRpdGxlV2lkZSB7d2lkdGg6Nzc1cHg7fSAuZGV0YWlsQ2FyVGl0bGVGdWxsIHt3aWR0aDoxMDAlO30gLm1haW5ib3hfdGV4dGFyZTYxN3toZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgcGFkZGluZy1sZWZ0OjBweDsgbWFyZ2luOjIwcHggMDsgdHJhbnNmb3JtOnRyYW5zbGF0ZSgtNTAlLCAwJSk7IHBvc2l0aW9uOnJlbGF0aXZlOyBsZWZ0OjUwJTt9IC50ZXh0Ym94MjJ7d2lkdGg6MzgxcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBwYWRkaW5nLWxlZnQ6MHB4OyBtYXJnaW46MHB4IDBweCAwIDA7fSAuYnV0dG9uNTF7IHdpZHRoOmF1dG87IGhlaWdodDozNnB4OyBmbG9hdDpsZWZ0OyB9IC5idXR0b241MSBheyB3aWR0aDphdXRvOyBoZWlnaHQ6MzZweDsgZmxvYXQ6bGVmdDsgLW1vei1ib3JkZXItcmFkaXVzOjVweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjVweDsgYm9yZGVyLXJhZGl1czo1cHg7IC1raHRtbC1ib3JkZXItcmFkaXVzOjVweDsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9idXR0b241LnBuZykgbGVmdCB0b3AgcmVwZWF0LXg7IGZvbnQtc2l6ZToxLjEyNXJlbSA7IGNvbG9yOiNGRkZGRkYgOyBwYWRkaW5nOjAgMTBweDsgbGluZS1oZWlnaHQ6MzZweDsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IHRleHQtdHJhbnNmb3JtOnVwcGVyY2FzZTsgfSAuYnV0dG9uNTEgYTpob3Zlcnsgd2lkdGg6YXV0bzsgaGVpZ2h0OjM2cHg7IGZsb2F0OmxlZnQ7IC1tb3otYm9yZGVyLXJhZGl1czo1cHg7IC13ZWJraXQtYm9yZGVyLXJhZGl1czo1cHg7IGJvcmRlci1yYWRpdXM6NXB4OyAta2h0bWwtYm9yZGVyLXJhZGl1czo1cHg7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvYnV0dG9uNS5wbmcpIGxlZnQgLTQ0cHggcmVwZWF0LXg7IGZvbnQtc2l6ZToxLjEyNXJlbSA7IGNvbG9yOiNGRkZGRkYgOyBwYWRkaW5nOjAgMTBweDsgbGluZS1oZWlnaHQ6MzZweDsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IHRleHQtdHJhbnNmb3JtOnVwcGVyY2FzZTt9IC50ZXh0NTV7d2lkdGg6MzgxcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBwYWRkaW5nLWxlZnQ6MHB4OyBtYXJnaW46MHB4IDBweCAyMHB4IDA7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOnZhcigtLWRlZmF1bHQtYmxhY2spIDsgbGluZS1oZWlnaHQ6MThweDsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IH0gLnRleHQ1NSBweyBwYWRkaW5nLWxlZnQ6MHB4IDVweCAwIDA7IG1hcmdpbjowcHggMHB4IDBweCAwOyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjp2YXIoLS1kZWZhdWx0LWJsYWNrKTsgbGluZS1oZWlnaHQ6MThweDsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IH0gLnBpY2JveF8yMjF7aGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IHBhZGRpbmctbGVmdDowcHg7IG1hcmdpbjowcHggMTVweCAwIDA7fSAucGljYm94XzIyMSBpbWcgeyB3aWR0aDozMzJweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IC1tb3otYm9yZGVyLXJhZGl1czozcHg7IC13ZWJraXQtYm9yZGVyLXJhZGl1czozcHg7IGJvcmRlci1yYWRpdXM6M3B4OyAta2h0bWwtYm9yZGVyLXJhZGl1czozcHg7IH0gLmlzRnVsbFdpZHRoUGFnZSAucGljYm94XzIyMSBpbWcgeyB3aWR0aDo0NDJweDsgfSAucGljYm94NjUxe3dpZHRoOjY1MXB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgbWFyZ2luOjVweCAxMHB4IDBweDt9IC5waWNib3g5MzB7d2lkdGg6OTMwcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBtYXJnaW46NXB4IDVweCAwcHg7fSAucGljYm94NjUxIGltZyB7IHdpZHRoOjY1MXB4OyB9IC5waWNib3g5MzAgaW1nIHsgd2lkdGg6OTMwcHg7IH0gLnBpY2JveDY1MSBpbWcsIC5waWNib3g5MzAgaW1nIHsgZmxvYXQ6bGVmdDsgY3Vyc29yOnBvaW50ZXI7IC1tb3otYm9yZGVyLXJhZGl1czozcHg7IC13ZWJraXQtYm9yZGVyLXJhZGl1czozcHg7IGJvcmRlci1yYWRpdXM6M3B4OyAta2h0bWwtYm9yZGVyLXJhZGl1czozcHg7IH0gLnRvcFByb21vSW1hZ2UgaW1nIHsgLW1vei1ib3JkZXItcmFkaXVzOjNweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjNweDsgYm9yZGVyLXJhZGl1czozcHg7IC1raHRtbC1ib3JkZXItcmFkaXVzOjNweDsgbWFyZ2luLXRvcDo1cHg7IHdpZHRoOjkzMHB4OyBjdXJzb3I6cG9pbnRlcjsgfSAudG9wUHJvbW9JbWFnZVVzZWQgaW1nIHsgLW1vei1ib3JkZXItcmFkaXVzOjNweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjNweDsgYm9yZGVyLXJhZGl1czozcHg7IC1raHRtbC1ib3JkZXItcmFkaXVzOjNweDsgd2lkdGg6NjUwcHg7IGN1cnNvcjpwb2ludGVyOyB9IC50ZWFtX3RpdGxlX2RlYWxlcnttYXJnaW4tYm90dG9tOjE1cHg7IHRleHQtYWxpZ246Y2VudGVyO30gLmZvcm1zX2JveDY2MXt3aWR0aDo5NjBweDsgaGVpZ2h0OmF1dG87IG1hcmdpbjoxMHB4IGF1dG87IH0gLnBpY2JveDkwe3dpZHRoOjkwcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBtYXJnaW4tcmlnaHQ6OHB4OyBib3JkZXI6MXB4IHNvbGlkICNhY2FjYWM7IC13ZWJraXQtYm9yZGVyLXJhZGl1czozcHg7IGJvcmRlci1yYWRpdXM6M3B4OyAta2h0bWwtYm9yZGVyLXJhZGl1czozcHg7IH0gLnBpY2JveDkwIGltZyB7d2lkdGg6OTBweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IC1tb3otYm9yZGVyLXJhZGl1czozcHg7IC13ZWJraXQtYm9yZGVyLXJhZGl1czozcHg7IGJvcmRlci1yYWRpdXM6M3B4OyAta2h0bWwtYm9yZGVyLXJhZGl1czozcHg7IH0gLnRleHRib3gxOTF7d2lkdGg6NTIlOyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgZm9udC1zaXplOjAuODEzcmVtIDsgbGluZS1oZWlnaHQ6MS4yOyBjb2xvcjojMjQyNDI0OyB9IC50ZXh0Ym94MTkxIGg0eyBmb250LXNpemU6MS4xMjVyZW0gOyBjb2xvcjojMjQyNDI0OyBwYWRkaW5nLWJvdHRvbTo1cHg7IH0gLm1haW5ib3gyOTF7d2lkdGg6MjkxcHg7IG1pbi1oZWlnaHQ6MTIzcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBtYXJnaW46MCA1cHggMTBweCAwOyBiYWNrZ3JvdW5kOiNlNmU2ZTY7IGJvcmRlcjoxcHggc29saWQgI2Q0ZDRkNDsgLW1vei1ib3JkZXItcmFkaXVzOjhweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjhweDsgYm9yZGVyLXJhZGl1czo4cHg7IC1raHRtbC1ib3JkZXItcmFkaXVzOjhweDsgcGFkZGluZzoxNXB4IDEwcHg7fSAubGF6eXtib3JkZXI6MDtkaXNwbGF5Om5vbmV9IC50ZWNoU3BlY3N7d2lkdGg6NjIxcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBtYXJnaW46MHB4OyBwYWRkaW5nOjI1cHggMTVweDsgYmFja2dyb3VuZDojZWJlYmViOyBiYWNrZ3JvdW5kLXBvc2l0aW9uOnJpZ2h0IGJvdHRvbTsgLW1vei1ib3JkZXItcmFkaXVzLXRvcGxlZnQ6MHB4Oy1tb3otYm9yZGVyLXJhZGl1cy10b3ByaWdodDowcHg7LW1vei1ib3JkZXItcmFkaXVzLWJvdHRvbXJpZ2h0OjZweDstbW96LWJvcmRlci1yYWRpdXMtYm90dG9tbGVmdDo2cHg7LXdlYmtpdC1ib3JkZXItdG9wLWxlZnQtcmFkaXVzOjBweDstd2Via2l0LWJvcmRlci10b3AtcmlnaHQtcmFkaXVzOjBweDstd2Via2l0LWJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjZweDstd2Via2l0LWJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6NnB4O2JvcmRlci10b3AtbGVmdC1yYWRpdXM6MHB4O2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOjBweDtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjZweDtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czo2cHg7fSAuZW1haWxfbGlua3t0ZXh0LWRlY29yYXRpb246bm9uZTsgY29sb3I6Izg4ODt9IC5lbWFpbF9saW5rOmhvdmVye3RleHQtZGVjb3JhdGlvbjpub25lOyBjb2xvcjojMzMzO30gLnBhZ2VfbmFtZTU1NSB7IGNvbG9yOiMyNDI0MjQ7IGZsb2F0OmxlZnQ7IGZvbnQtc2l6ZToxLjVyZW0gOyBmb250LXdlaWdodDpub3JtYWw7IGhlaWdodDphdXRvOyBsaW5lLWhlaWdodDozMHB4OyBwYWRkaW5nOjAgMCAxMHB4IDA7IHdpZHRoOjEwMCU7IGJveC1zaXppbmc6Ym9yZGVyLWJveDsgbWFyZ2luOjA7IH0gLnBhZ2VfbmFtZTU1NSBheyBjb2xvcjojMjQyNDI0OyB9IC5wYWdlX25hbWU1NTUgYTpob3ZlcnsgY29sb3I6IzI0MjQyNDsgdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTsgfSAucGFnZV9uYW1lNTU1IGE6dmlzaXRlZHsgY29sb3I6IzI0MjQyNDsgfSAucGFnZV9uYW1lTkVXNTU1IHsgY29sb3I6IzI0MjQyNDsgZm9udC13ZWlnaHQ6bm9ybWFsOyBoZWlnaHQ6YXV0bzsgZm9udC1zaXplOjAuODc1cmVtIDsgfSAucGFnZV9uYW1lTkVXNTU1IGF7IGNvbG9yOiMyNDI0MjQ7IH0gLnBhZ2VfbmFtZU5FVzU1NSBhOmhvdmVyeyBjb2xvcjojMjQyNDI0OyB0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lOyB9IC5wYWdlX25hbWVORVc1NTUgYTp2aXNpdGVkeyBjb2xvcjojMjQyNDI0OyB9IC5ib3gyX3RleHQ0NCB7IGNvbG9yOiMyNDI0MjQ7IGZvbnQtc2l6ZToxcmVtOyBoZWlnaHQ6YXV0bzsgbGluZS1oZWlnaHQ6MThweDsgcGFkZGluZzoxMHB4IDAgMCAwOyB3aWR0aDphdXRvOyB9IC50ZXh0X2JveDExIHsgZmxvYXQ6bGVmdDsgaGVpZ2h0OmF1dG87IG1hcmdpbjowOyBwYWRkaW5nOjAgMjBweCAxMHB4IDA7IHdpZHRoOmF1dG87IGxpbmUtaGVpZ2h0OjIxcHg7IGRpc3BsYXk6ZmxleDsgZmxleC1kaXJlY3Rpb246Y29sdW1uOyB9IC50ZXh0X2JveDExIGg0IHsgY29sb3I6IzI0MjQyNDsgZmxvYXQ6bGVmdDsgZm9udC1zaXplOjAuODc1cmVtIDsgaGVpZ2h0OmF1dG87IG1hcmdpbjowOyBwYWRkaW5nOjEwcHggMDsgfSAudGV4dF9ib3gxMSBhIHsgY29sb3I6IzI0MjQyNDsgZm9udC1zaXplOjAuNzVyZW0gOyBoZWlnaHQ6YXV0bzsgbWFyZ2luLWxlZnQ6MDsgcGFkZGluZzoxMHB4IDA7IGZsb2F0OmxlZnQ7IH0gLnRleHRfYm94MTEgYTpob3ZlciB7IGNvbG9yOiMyNDI0MjQ7IH0gLnRleHRfYm94MTEgYTp2aXNpdGVkIHsgY29sb3I6IzI0MjQyNDsgfSAudGV4dF9ib3gxMSB1bCwgLnRleHRfYm94MTEgcCB7IH0gLnRleHRfYm94MTEgdWwsIC50ZXh0X2JveDExIHAgeyBjb2xvcjojMjQyNDI0OyBmb250LXNpemU6MC44NzVyZW0gOyBoZWlnaHQ6YXV0bzsgbWFyZ2luOjA7IHBhZGRpbmc6MCAwIDVweDsgfSAudGV4dF9ib3gxMSB1bCB7IGxpc3Qtc3R5bGUtcG9zaXRpb246aW5zaWRlOyB9IC50ZXh0X2JveDExIHAgYSB7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IG1hcmdpbjowOyBwYWRkaW5nOjA7IGZsb2F0Om5vbmU7IH0gLnBpY2JveDMzNiB7IGJvcmRlcjoxcHggc29saWQgIzdEN0Q3RDsgZmxvYXQ6bGVmdDsgaGVpZ2h0OmF1dG87IG1hcmdpbi1yaWdodDo2OHB4OyB9IC5mb250X3NpemUyMSB7IGZvbnQtc2l6ZToxLjMxM3JlbSAhaW1wb3J0YW50OyB9IC5wYWdlX25hbWUxOCB7IGNvbG9yOiMyNDI0MjQ7IGZvbnQtc2l6ZToxLjEyNXJlbSA7IGhlaWdodDphdXRvOyBsaW5lLWhlaWdodDozMHB4OyBwYWRkaW5nOjAgMCAxMHB4IDA7IHdpZHRoOjEwMCU7IGZvbnQtd2VpZ2h0OmJvbGQ7IH0gLnBhZ2VfbmFtZTE4IGF7IGNvbG9yOiMyNDI0MjQ7IHRleHQtZGVjb3JhdGlvbjpub25lOyB9IC5wYWdlX25hbWUxOCBhOmhvdmVyeyBjb2xvcjojMjQyNDI0OyB0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lOyB9IC52aWRlbzUgeyBmbG9hdDpsZWZ0OyBoZWlnaHQ6NDFweDsgbWFyZ2luLXRvcDo3MHB4OyBtYXJnaW4tbGVmdDo3MHB4OyB9IC5mbG9hdExvZ297IHdpZHRoOjYyMXB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgbWFyZ2luOjBweDsgcGFkZGluZzoyNXB4IDE1cHg7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvTE9HT19HQV9UUkFOU1BBUkVOVC5wbmcpIHJpZ2h0IGJvdHRvbSBuby1yZXBlYXQ7IGJhY2tncm91bmQtcG9zaXRpb246cmlnaHQgYm90dG9tOyAtbW96LWJvcmRlci1yYWRpdXMtdG9wbGVmdDowcHg7LW1vei1ib3JkZXItcmFkaXVzLXRvcHJpZ2h0OjBweDstbW96LWJvcmRlci1yYWRpdXMtYm90dG9tcmlnaHQ6NnB4Oy1tb3otYm9yZGVyLXJhZGl1cy1ib3R0b21sZWZ0OjZweDstd2Via2l0LWJvcmRlci10b3AtbGVmdC1yYWRpdXM6MHB4Oy13ZWJraXQtYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6MHB4Oy13ZWJraXQtYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6NnB4Oy13ZWJraXQtYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czo2cHg7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czowcHg7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6MHB4O2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6NnB4O2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjZweDsgfSAuYnV0dG9uMi5qcVRyYW5zZm9ybUJ1dHRvbiB7IGJhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7IGJvcmRlcjptZWRpdW0gbm9uZTsgY29sb3I6I0ZGRkZGRjsgY3Vyc29yOnBvaW50ZXI7IGZvbnQtc2l6ZTowLjgxM3JlbSA7IG1hcmdpbjowOyBvdmVyZmxvdzp2aXNpYmxlOyBwYWRkaW5nOjA7IHRleHQtZGVjb3JhdGlvbjpub25lOyB9IC5idXR0b24yLmpxVHJhbnNmb3JtQnV0dG9uIHNwYW4geyBiYWNrZ3JvdW5kOnVybCgiL2ltYWdlcy9idG5fcmlnaHQyLnBuZyIpIG5vLXJlcGVhdCBzY3JvbGwgcmlnaHQgdG9wIHRyYW5zcGFyZW50OyBkaXNwbGF5OmJsb2NrOyBmbG9hdDpsZWZ0OyBoZWlnaHQ6MzVweDsgbWFyZ2luOjA7IHBhZGRpbmc6MCA2cHggMCAwOyB9IC5idXR0b24yLmpxVHJhbnNmb3JtQnV0dG9uIHNwYW4gc3BhbiB7IGJhY2tncm91bmQ6dXJsKCIvaW1hZ2VzL2J0bl9sZWZ0Mi5wbmciKSBuby1yZXBlYXQgc2Nyb2xsIGxlZnQgdG9wIHRyYW5zcGFyZW50OyBjb2xvcjojRkZGRkZGOyBkaXNwbGF5OmJsb2NrOyBmb250LXNpemU6MC44MTNyZW0gOyBmb250LXdlaWdodDpub3JtYWw7IGhlaWdodDoyNnB4OyBsaW5lLWhlaWdodDoxM3B4OyBwYWRkaW5nOjEycHggMTNweCAwIDE1cHg7IHRleHQtZGVjb3JhdGlvbjpub25lOyB0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7IH0gLmJ1dHRvbjIuanFUcmFuc2Zvcm1CdXR0b25faG92ZXIgc3BhbiBzcGFuIHsgYmFja2dyb3VuZC1wb3NpdGlvbjpsZWZ0IC0zOHB4OyB9IC5idXR0b24yLmpxVHJhbnNmb3JtQnV0dG9uX2hvdmVyIHNwYW4geyBiYWNrZ3JvdW5kLXBvc2l0aW9uOnJpZ2h0IC0zOHB4OyB9IC5idXR0b24yLmpxVHJhbnNmb3JtQnV0dG9uX2NsaWNrIHNwYW4gc3BhbiB7IGJhY2tncm91bmQtcG9zaXRpb246bGVmdCAtNjZweDsgfSAuYnV0dG9uMi5qcVRyYW5zZm9ybUJ1dHRvbl9jbGljayBzcGFuIHsgYmFja2dyb3VuZC1wb3NpdGlvbjpyaWdodCAtNjZweDsgfSAudmVoaWNsZUxpc3RUYWJsZSB7IG1hcmdpbjoxMHB4OyBmb250LXNpemU6MC43NXJlbSA7IGNvbG9yOiM0MTQxNDE7IH0gLnZlaGljbGVMaXN0VGFibGUgdHIgdGQgeyBib3JkZXItYm90dG9tOjFweCBkb3R0ZWQgIzY2NjY2NjsgaGVpZ2h0OjMwcHg7IH0gLnZlaGljbGVMaXN0VGFibGUgdHIgdGQgYXsgY29sb3I6IzQxNDE0MTsgZm9udC1zaXplOjAuNzVyZW0gOyB9IC52ZWhpY2xlTGlzdFRhYmxlIHRyIHRkIGE6aG92ZXJ7IGNvbG9yOiM0MTQxNDE7IGZvbnQtc2l6ZTowLjc1cmVtIDsgfSAudmVoaWNsZUxpc3RUYWJsZSB0ciB0ZCBhOnZpc2l0ZWR7IGNvbG9yOiM0MTQxNDE7IGZvbnQtc2l6ZTowLjc1cmVtIDsgfSAuZXhwYW5kUm93eyBiYWNrZ3JvdW5kLWNvbG9yOiMxZjFmMWY7IHRleHQtYWxpZ246cmlnaHQ7IGNvbG9yOiM0MTQxNDE7IG1hcmdpbi1sZWZ0OjRweDsgbWFyZ2luLXJpZ2h0OjJweDsgfSBkaXYuZXJyb3JNc2cgeyBiYWNrZ3JvdW5kLWNvbG9yOiNmZmRkZGQ7IGJhY2tncm91bmQtaW1hZ2U6dXJsKCIvaW1hZ2VzL2Vycm9yLnBuZyIpOyBiYWNrZ3JvdW5kLXBvc2l0aW9uOjEwcHggY2VudGVyOyBiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7IGJvcmRlcjoxcHggc29saWQ7IGNvbG9yOiNkMTAwMGM7IGRpc3BsYXk6bm9uZTsgZmxvYXQ6bGVmdDsgei1pbmRleDo5OTk5OyBwYWRkaW5nOjE1cHggMTBweCAxNXB4IDUwcHg7IH0gZGl2LmVtYWlsU2VudE1zZyB7IGJhY2tncm91bmQtY29sb3I6I2VmZmZlZjsgYmFja2dyb3VuZC1pbWFnZTp1cmwoIi9pbWFnZXMvYWNjZXB0ZWQucG5nIik7IGJhY2tncm91bmQtcG9zaXRpb246MTBweCBjZW50ZXI7IGJhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDsgYm9yZGVyOjFweCBzb2xpZCAjMDk3NzAwOyBjb2xvcjojMDk3NzAwOyBkaXNwbGF5Om5vbmU7IGZsb2F0OmxlZnQ7IHBhZGRpbmc6MTVweCAxMHB4IDE1cHggNTBweDsgfSBkaXYudG95b3RJbWFnZSB7IGNvbG9yOiM2NjY2NjY7IGZvbnQtc2l6ZTozLjQzOHJlbSA7IGZvbnQtd2VpZ2h0OmJvbGQ7IGhlaWdodDoyNTBweDsgbGVmdDowOyBvcGFjaXR5OjAuODsgb3ZlcmZsb3c6aGlkZGVuOyBwYWRkaW5nOjVweCAxMHB4OyBwb3NpdGlvbjphYnNvbHV0ZTsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IHdpZHRoOjM4MHB4OyB6LWluZGV4Ojg7IH0gZGl2LnRveW90SW1hZ2UgcCB7IHBhZGRpbmc6NXB4OyBtYXJnaW46MDsgZm9udC1zaXplOjAuOTM4cmVtIDsgY29sb3I6I0E2QTZBNjsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IH0gZGl2Lm5ld0Nhck1haW5Cb3ggeyB3aWR0aDo5NjBweDsgbWFyZ2luOjAgYXV0bzsgfSBkaXYubmV3Q2FyTWFpbkJveDIgeyBtYXJnaW4tdG9wOjVweDsgfSBkaXYubmV3Q2FyTWFpbkJveDMgeyB3aWR0aDo5NjBweDsgaGVpZ2h0OjEycHg7IGZsb2F0OmxlZnQ7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvYm94OTcwX3RvcC5wbmcpIGxlZnQgdG9wIG5vLXJlcGVhdDsgfSAuc3RvY2tJbWdTdHlsZXsgd2lkdGg6MTAwJTsgaGVpZ2h0OjUwJTsgZm9udC1zaXplOjIuMjVyZW0gOyB0ZXh0LWFsaWduOmNlbnRlcjsgZm9udC13ZWlnaHQ6Ym9sZDsgcGFkZGluZy10b3A6MzBweDsgcG9zaXRpb246YWJzb2x1dGU7IG1hcmdpbjowcHg7IGNvbG9yOiMzMDMwMzA7IH0gI2ZpcnN0U2xpZGVySW1nIHsgYmFja2dyb3VuZC1jb2xvcjojZmZmOyBwb3NpdGlvbjphYnNvbHV0ZTsgei1pbmRleDoxNTsgd2lkdGg6MTAwJTsgaGVpZ2h0OmF1dG87IG9wYWNpdHk6MTsgcGFkZGluZzowOyBtYXJnaW46MDsgfSAjZmlyc3RTbGlkZXJJbWcgLnBsYWNlaG9sZGVyeyBib3JkZXI6MXB4IHNvbGlkICNGRkY7IHdpZHRoOjY0MHB4OyBoZWlnaHQ6NDgwcHg7IH0gI2ZpcnN0U2xpZGVySW1nIC5wbGFjZWhvbGRlciAuaW5uZXItcGxhY2Vob2xkZXJ7IHBvc2l0aW9uOmFic29sdXRlOyB3aWR0aDoxMDAlOyBoZWlnaHQ6MTAwJTsgb3ZlcmZsb3c6aGlkZGVuOyBkaXNwbGF5OmZsZXg7IHRvcDowOyBib3R0b206MDsgbGVmdDowOyByaWdodDowOyB9ICNmaXJzdFNsaWRlckltZyBJTUd7IGhlaWdodDphdXRvOyBtYXgtd2lkdGg6NjQwcHg7IG1heC1oZWlnaHQ6NDgwcHg7IHdpZHRoOmF1dG87IG1hcmdpbjphdXRvOyB9ICNmaXJzdFNsaWRlckltZy5mYWRlLW91dHsgdmlzaWJpbGl0eTpoaWRkZW47IG9wYWNpdHk6MDsgLXdlYmtpdC10cmFuc2l0aW9uOnZpc2liaWxpdHkgMW1zIDAuMjVzLCBvcGFjaXR5IDAuMjVzIGxpbmVhcjsgLW1vei10cmFuc2l0aW9uOnZpc2liaWxpdHkgMW1zIDAuMjVzLCBvcGFjaXR5IDAuMjVzIGxpbmVhcjsgLW8tdHJhbnNpdGlvbjp2aXNpYmlsaXR5IDFtcyAwLjI1cywgb3BhY2l0eSAwLjI1cyBsaW5lYXI7IHRyYW5zaXRpb246dmlzaWJpbGl0eSAxbXMgMC4yNXMsIG9wYWNpdHkgMC4yNXMgbGluZWFyOyB9ICNzb2NpYWxUaW1lbGluZXsgd2lkdGg6OTYwcHg7IGhlaWdodDphdXRvOyB9IGRpdi5uZXdDYXJNYWluQm94NCB7IHdpZHRoOjk0MHB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9ib3g5NzBfbWlkLnBuZykgbGVmdCB0b3AgcmVwZWF0LXk7IHBhZGRpbmc6MTBweCAxNXB4OyB9IGRpdi5uZXdDYXJUaXRsZUJveCBoMXsgd2lkdGg6OTQwcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBmb250LXNpemU6MS44NzVyZW0gOyBjb2xvcjojMzAzMDMwOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgfSAuZ3JheWJveCB7IGJhY2tncm91bmQtY29sb3I6I0VGRUZFRjsgYm9yZGVyOjFweCBzb2xpZCAjRkZGRkZGOyBib3JkZXItcmFkaXVzOjNweDsgY29sb3I6IzAwMDsgZm9udC1zaXplOjAuODEzcmVtIDsgbGluZS1oZWlnaHQ6bm9ybWFsOyBwYWRkaW5nOjEwcHggMCAxMHB4IDA7IHRleHQtYWxpZ246Y2VudGVyOyB0ZXh0LXNoYWRvdzowIDFweCAwICNGRkZGRkY7IH0gLmdyYXlib3ggPiBzcGFuIHsgY29sb3I6IzAwMDsgZm9udC1zaXplOjAuODEzcmVtIDsgdGV4dC1hbGlnbjpjZW50ZXI7IH0gLmdyYXlib3ggLnNtYWxsdGV4dCB7IGJvcmRlci1ib3R0b206MXB4IHNvbGlkICNDQ0NDQ0M7IGJvcmRlci10b3A6MXB4IHNvbGlkICNDQ0NDQ0M7IGNvbG9yOiMzMzMzMzM7IGZvbnQtc2l6ZTowLjY4OHJlbSA7IG1hcmdpbi10b3A6MTBweDsgcGFkZGluZzoxMHB4OyB9IC5ncmF5Ym94IGgyIHsgY29sb3I6IzAwMDsgZm9udC1zaXplOjEuNXJlbSA7IGZvbnQtd2VpZ2h0OmJvbGQ7IG1hcmdpbjo1cHggYXV0bzsgfSAuZXh0ZW5kZWRQaG9uZXsgcG9zaXRpb246Zml4ZWQ7IGJhY2tncm91bmQtY29sb3I6IzY3Njc2NzsgY29sb3I6I2RkZDsgcGFkZGluZzowLjZlbTsgYm9yZGVyLXJhZGl1czo1cHg7IHotaW5kZXg6OTk5OTsgZm9udC1zaXplOjAuODc1cmVtIDsgdGV4dC1hbGlnbjpsZWZ0OyB9IC5leHRlbmRlZFBob25lIGxhYmVseyBkaXNwbGF5OmlubGluZS1ibG9jazsgfSAuZXh0ZW5kZWRQaG9uZSBzcGFueyBjb2xvcjojZmZmOyB9IC5waG9uZU5vdGV7IGZvbnQtc2l6ZTowLjY4OHJlbSA7IHBhZGRpbmctdG9wOjdweDsgfSAuYWRkZWRTZWFyY2hMaW5rc0RpdkV4IHsgY29sb3I6IzQxNDE0MTsgZm9udC1zaXplOjFyZW0gOyB0ZXh0LWFsaWduOmxlZnQ7IHBhZGRpbmctbGVmdDoyMHB4OyBwYWRkaW5nLXRvcDozMHB4OyB9IC5hZGRlZFNlYXJjaExpbmtzRGl2IGRpdnsgcGFkZGluZy1sZWZ0OjEwcHg7IHBhZGRpbmctdG9wOjEwcHg7IHdpZHRoOjIwMHB4OyBmbG9hdDpsZWZ0OyB9IC5hZGRlZFNlYXJjaExpbmtzRGl2IHVseyBtYXJnaW4tYm90dG9tOjIwcHg7IGZvbnQtc2l6ZTowLjgxM3JlbSA7IG1hcmdpbi10b3A6NXB4OyB9IC5hZGRlZFNlYXJjaExpbmtzRGl2IHVsIGxpeyBsaXN0LXN0eWxlOm5vbmUgb3V0c2lkZSBub25lOyBkaXNwbGF5OmJsb2NrOyBtYXJnaW4tbGVmdDo0MHB4OyB0ZXh0LWluZGVudDotMTBweDsgfSAuYWRkZWRTZWFyY2hMaW5rc0RpdiB1bCBsaSBheyBjb2xvcjojMzMzOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgY3Vyc29yOnBvaW50ZXI7IH0gLmFkZGVkU2VhcmNoTGlua3NEaXYgdWwgbGkgYXsgYmFja2dyb3VuZDp1cmwoIi9pbWFnZXMvYXJyb3dfcmVkLnBuZyIpIG5vLXJlcGVhdCBzY3JvbGwgMCAxMHB4IHRyYW5zcGFyZW50OyBjb2xvcjojMzMzMzMzOyBtYXJnaW4tcmlnaHQ6MnB4OyBwYWRkaW5nOjZweCAxMHB4OyB0ZXh0LWRlY29yYXRpb246bm9uZTsgfSAuYWRkZWRTZWFyY2hMaW5rc0RpdiB1bCBsaSBhOmhvdmVyIHsgdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTsgfSAuY29tcGFyZUxpbmtzIGF7IHRleHQtZGVjb3JhdGlvbjpub25lOyB9IC5jb21wYXJlTGlua3MgYTpob3ZlcnsgdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTsgfSAuZW1haWxCb2R5LCAuZW1haWxTdWJqZWN0eyBkaXNwbGF5Om5vbmU7IH0gI2NvbnRhY3R1cyBkaXYuZXJyb3JNc2cgeyBiYWNrZ3JvdW5kLWNvbG9yOiNmZmRkZGQ7IGJhY2tncm91bmQtaW1hZ2U6dXJsKCIvaW1hZ2VzL2Vycm9yLnBuZyIpOyBiYWNrZ3JvdW5kLXBvc2l0aW9uOjEwcHggY2VudGVyOyBiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7IGJvcmRlcjoxcHggc29saWQ7IGNvbG9yOiNkMTAwMGM7IGRpc3BsYXk6bm9uZTsgZmxvYXQ6bGVmdDsgcGFkZGluZzoxNXB4IDEwcHggMTVweCA1MHB4OyB9ICNjb250YWN0dXMgZGl2LmVtYWlsU2VudE1zZyB7IGJhY2tncm91bmQtY29sb3I6I2VmZmZlZjsgYmFja2dyb3VuZC1pbWFnZTp1cmwoIi9pbWFnZXMvYWNjZXB0ZWQucG5nIik7IGJhY2tncm91bmQtcG9zaXRpb246MTBweCBjZW50ZXI7IGJhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDsgYm9yZGVyOjFweCBzb2xpZCAjMDk3NzAwOyBjb2xvcjojMDk3NzAwOyBkaXNwbGF5Om5vbmU7IGZsb2F0OmxlZnQ7IHBhZGRpbmc6MTVweCAxMHB4IDE1cHggNTBweDsgfSAjUGFnZUZpbmFuY2UgLnN0ZXBBY3RpdmUgeyBiYWNrZ3JvdW5kOnVybCgiL2ltYWdlcy8xX2hvdmVyLnBuZyIpIG5vLXJlcGVhdCBzY3JvbGwgbGVmdCB0b3AgdHJhbnNwYXJlbnQ7IGNvbG9yOiMyYzJjMmM7IGZsb2F0OmxlZnQ7IGZvbnQtc2l6ZToyLjI1cmVtIDsgZm9udC13ZWlnaHQ6Ym9sZDsgaGVpZ2h0OjQ2cHg7IGxpbmUtaGVpZ2h0OjQ2cHg7IHRleHQtYWxpZ246Y2VudGVyOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgd2lkdGg6NDZweDsgbWFyZ2luLWxlZnQ6MTBweDsgfSAjUGFnZUZpbmFuY2UgLnN0ZXBVbmFjdGl2ZSB7IGJhY2tncm91bmQ6dXJsKCIvaW1hZ2VzLzFfcm91bmQucG5nIikgbm8tcmVwZWF0IHNjcm9sbCBsZWZ0IHRvcCB0cmFuc3BhcmVudDsgY29sb3I6I0ZGRkZGRjsgZmxvYXQ6bGVmdDsgZm9udC1zaXplOjIuMjVyZW0gOyBmb250LXdlaWdodDpib2xkOyBoZWlnaHQ6NDZweDsgbGluZS1oZWlnaHQ6NDZweDsgdGV4dC1hbGlnbjpjZW50ZXI7IHRleHQtZGVjb3JhdGlvbjpub25lOyB3aWR0aDo0NnB4OyBtYXJnaW4tbGVmdDoxMHB4OyB9ICNQYWdlRmluYW5jZSAudGV4dDEgc3BhbiB7IGNvbG9yOiM0MzQzNDM7IGZsb2F0OmxlZnQ7IGZvbnQtc2l6ZToxLjg3NXJlbSA7IGZvbnQtd2VpZ2h0OmJvbGQ7IGhlaWdodDo0NnB4OyBsaW5lLWhlaWdodDo0NnB4OyBwYWRkaW5nOjA7IHRleHQtYWxpZ246bGVmdDsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IHRleHQtc2hhZG93OjFweCAxcHggMXB4ICNGM0YzRjM7IHdpZHRoOmF1dG87IH0gI1BhZ2VGaW5hbmNlIGRpdi5lbWFpbFNlbnRNc2cgeyBiYWNrZ3JvdW5kLWNvbG9yOiNCOEZGQjg7IGJhY2tncm91bmQtaW1hZ2U6dXJsKCIvaW1hZ2VzL2FjY2VwdGVkLnBuZyIpOyBiYWNrZ3JvdW5kLXBvc2l0aW9uOjEwcHggY2VudGVyOyBiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7IGJvcmRlcjoxcHggc29saWQgIzBCOTYwMDsgY29sb3I6IzBCOTYwMDsgZGlzcGxheTpub25lOyBmbG9hdDpsZWZ0OyBwYWRkaW5nOjE1cHggMTBweCAxNXB4IDUwcHg7IH0gLm90aGVyX2xpbmtzIGF7IHRleHQtZGVjb3JhdGlvbjpub25lOyB9IC5vdGhlcl9saW5rcyBhOmhvdmVyeyB0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lOyB9IC5wcm9tb3Rpb25TaWRlQnRuQSB7IGJhY2tncm91bmQ6IzMzNGM5NjsgY29sb3I6I2ZmZmZmZjsgZGlzcGxheTpibG9jaztmb250LXNpemU6MS4yNXJlbSA7d2lkdGg6Zml0LWNvbnRlbnQ7aGVpZ2h0OjUzcHg7cGFkZGluZzoycHggMTVweCAwcHggMTVweDtjdXJzb3I6cG9pbnRlcjtsaW5lLWhlaWdodDo1M3B4O3RleHQtZGVjb3JhdGlvbjpub25lO2JhY2tncm91bmQtc2l6ZToxMDAlOyAtbW96LWJvcmRlci1yYWRpdXMtdG9wbGVmdDozcHg7IC1tb3otYm9yZGVyLXJhZGl1cy10b3ByaWdodDozcHg7IC1tb3otYm9yZGVyLXJhZGl1cy1ib3R0b21yaWdodDowcHg7IC1tb3otYm9yZGVyLXJhZGl1cy1ib3R0b21sZWZ0OjA7IC13ZWJraXQtYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czozcHg7IC13ZWJraXQtYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6M3B4OyAtd2Via2l0LWJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjA7IC13ZWJraXQtYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czowOyBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czozcHg7IGJvcmRlci10b3AtbGVmdC1yYWRpdXM6M3B4OyBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czpweDsgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czowcHg7IHRyYW5zZm9ybTpyb3RhdGUoLTkwZGVnKTsgLW1zLXRyYW5zZm9ybTpyb3RhdGUoLTkwZGVnKTsgLXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKC05MGRlZyk7IH0gLmZvb3Rlck11bHRpQWRkcmVzczMgeyBib3JkZXItcmlnaHQ6MXB4ICM5MTkxOTEgc29saWQ7IHBhZGRpbmctcmlnaHQ6NzBweDsgbWFyZ2luLWxlZnQ6MTRweDsgY29sb3I6IzU3NTc1NzsgfSAuZm9vdGVyTXVsdGlBZGRyZXNzMiB7IGJvcmRlci1yaWdodDoxcHggIzkxOTE5MSBzb2xpZDsgcGFkZGluZy1yaWdodDoxNTBweDsgbWFyZ2luLWxlZnQ6OTNweDsgY29sb3I6IzU3NTc1NzsgfSAuZm9vdGVyTXVsdGlBZGRyZXNzMSB7IG1hcmdpbi1sZWZ0OjM0NXB4OyBjb2xvcjojNTc1NzU3OyB9IC5zbWFsbEFjdGlvbldlYnNpdGVDb2xvciB7IGJhY2tncm91bmQgOnVybCgiL2ltYWdlcy9ibF9iZzIucG5nIikgbGVmdCB0b3AgcmVwZWF0LXg7IGNvbG9yOnJnYig0NCw0NCw0NCk7IH0gLnNtYWxsQWN0aW9uV2Vic2l0ZUNvbG9yOmhvdmVyeyBiYWNrZ3JvdW5kIDp1cmwoIi9pbWFnZXMvbWVudTEwX2JnLnBuZyIpIGxlZnQgdG9wIHJlcGVhdC14OyBjb2xvcjojRkZGOyB9IC5uYXYgbGkgYS50b3BfbGluay5pc0JvbGQsIC5uYXYgbGkgYS5pc0JvbGR7IGZvbnQtd2VpZ2h0OmJvbGQ7IH0gI21haW5IZWFkZXIgZGl2LmJveDE1UGFkZGluZ3sgcGFkZGluZy10b3A6MTVweDsgfSAubmF2IC5ub3RDbGlja2FibGV7IGN1cnNvcjpkZWZhdWx0ICFpbXBvcnRhbnQ7IH0gLlMxMDBQZXJjZW50V2lkdGh7IHdpZHRoOjEwMCU7IH0gI2ZpbHRlck1haW5Cb3ggeyBjb2xvcjojMDAwOyB9ICNmaWx0ZXJNYWluQm94IC5maWx0ZXJTcGFuLCAjZmlsdGVyTWFpbkJveCAuZmlsdGVyQ2hlY2ssICNmaWx0ZXJNYWluQm94IC5yYWRpb1NvcnQgeyBjdXJzb3I6cG9pbnRlcjsgfSAuYkNvZGVTdHlsZSB7IGZsb2F0OmxlZnQ7IHdpZHRoOjI1JTsgZm9udC1zaXplOjAuOGVtOyBwYWRkaW5nLXRvcDoxNXB4OyBwYWRkaW5nLWJvdHRvbToxNXB4OyBiYWNrZ3JvdW5kLWNvbG9yOjsgfSAuYkNvZGVTb3J0IHsgZmxvYXQ6bGVmdDsgd2lkdGg6MTYlOyBiYWNrZ3JvdW5kLWNvbG9yOjsgZm9udC1zaXplOjAuOGVtOyBwYWRkaW5nLXRvcDoxNXB4OyBwYWRkaW5nLWJvdHRvbToxNXB4OyB9IC5iQ29kZVNvcnQgLmJDb2RlSGVhZGluZywgLmJDb2RlU3R5bGUgLmJDb2RlSGVhZGluZyB7IG1hcmdpbi1ib3R0b206NXB4OyBmb250LXdlaWdodDpib2xkOyBwYWRkaW5nLWxlZnQ6MnB4OyB9IC5wYWdlX25hbWU0Mnt3aWR0aDo5NDBweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IHBhZGRpbmc6MCAwcHggMTBweCAyMXB4OyBsaW5lLWhlaWdodDozMHB4OyBmb250LXNpemU6MS41cmVtIDsgY29sb3I6IzJjMmMyYzt9IC5wYWdlX25hbWU0MiBoMiB7Zm9udC1zaXplOjEuNXJlbSA7IGNvbG9yOiMyYzJjMmM7Zm9udC13ZWlnaHQ6bm9ybWFsO2JvcmRlcjpub25lO30gLnBhZ2VfbmFtZTQyIGgyLm5vdGZpcnN0IHtmb250LXNpemU6MS41cmVtIDsgY29sb3I6IzJjMmMyYztmb250LXdlaWdodDpub3JtYWw7bWFyZ2luLXRvcDowcHg7cGFkZGluZy10b3A6NDBweDtib3JkZXItdG9wOjFweCAjY2NjY2NjIHNvbGlkO3dpZHRoOjkyMHB4O30gI2ZpbHRlck1haW5Cb3gubmV3Y2Fyc3N0eWxlMnsgLW1vei1ib3JkZXItcmFkaXVzOjBweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjBweDsgLWtodG1sLWJvcmRlci1yYWRpdXM6MHB4OyBib3JkZXItcmFkaXVzOjBweDsgYm9yZGVyOm5vbmU7IGJvcmRlci10b3A6MXB4IHNvbGlkICNiZWJlYmU7IGJvcmRlci1ib3R0b206MXB4IHNvbGlkICNiZWJlYmU7IHdpZHRoOjk1NXB4OyBsZWZ0OjNweDsgfSBkaXYuaW1kZXYgbGFiZWx7IGZvbnQtd2VpZ2h0OmJvbGQ7IHBhZGRpbmctdG9wOjEwcHg7IH0gZGl2LmltZGV2IGRpdnsgYmFja2dyb3VuZDpub25lOyBiYWNrZ3JvdW5kLWNvbG9yOiNEOUQ5RDk7IHBhZGRpbmc6MTBweCAwcHggMTBweCAwcHg7IHdpZHRoOjEwMCU7IGZvbnQtc2l6ZTowLjgxM3JlbSA7IH0gZGl2LmltZGV2X2lubmVyIHsgZm9udC13ZWlnaHQ6bm9ybWFsOyBtYXJnaW4tbGVmdDozMHB4OyB3aWR0aDo5MCUgIWltcG9ydGFudDsgfSB1bC5xdWl6IHtwYWRkaW5nOjEwcHggMCAxMHB4IDIwcHg7IGxpc3Qtc3R5bGUtdHlwZTpub25lOyBoZWlnaHQ6MTc1cHg7fSB1bC5xdWl6IGxpIHtwYWRkaW5nOjEwcHg7fSB1bC5xdWl6IGxpIGlucHV0IHttYXJnaW4tcmlnaHQ6MTBweDt9IC5uZXdzLWJvZHkge3dpZHRoOjEwMCU7dGV4dC1hbGlnbjpyaWdodDtmb250LXNpemU6MC44MTNyZW0gO2NvbG9yOiMxOTE5MTk7cGFkZGluZy1yaWdodDoxNXB4O21hcmdpbi10b3A6LTIwcHg7cGFkZGluZy1ib3R0b206MTBweDt9IC5uZXdzLWFsbC10ZXh0IHtjb2xvcjojMTkxOTE5O30gI25ld3NDb250YWluZXIgLnRleHRfYm94MTEgaW1nIHsgbWF4LXdpZHRoOjY0MHB4OyBkaXNwbGF5OmJsb2NrOyBtYXJnaW46NXB4IGF1dG87IH0gI25ld3NDb250YWluZXIgLnVzZWR7IGNsZWFyOmJvdGg7IH0gLmhvbWVfYWN0aW9uX2FkaiB7IHdpZHRoOjk2MXB4OyB9IC5ob21lX2FjdGlvbl9hZGoyIHsgd2lkdGg6NzMwcHghaW1wb3J0YW50OyBoZWlnaHQ6NjAwcHghaW1wb3J0YW50OyB9IC5ob21lX2VtYWlseyB3aWR0aDoyMzJweDsgbWFyZ2luLWxlZnQ6NXB4OyBtYXJnaW4tYm90dG9tOjVweDsgfSAud2lkZ2V0X21lbnVfYWRqMXsgZm9udC1zaXplOjAuOGVtOyB9IC53aWRnZXRfbWVudV9hZGoyeyBmbG9hdDpyaWdodDtwb3NpdGlvbjpyZWxhdGl2ZTt0b3A6LTJweDsgfSAud2lkZ2V0X21lbnVfZXh0ZW5kZWRQaG9uZXsgZm9udC1zaXplOjAuOGVtOyBtYXJnaW4tbGVmdDoxMDRweDsgdG9wOjEzMnB4OyB9IC53aWRnZXRfbWVudV9hZGozeyBmb250LXNpemU6MC44ZW07Y29sb3I6IzU3NTc1Nztwb3NpdGlvbjpyZWxhdGl2ZTtsZWZ0Oi04cHg7IH0gLndpZGdldF9tZW51X2FkajR7IHBvc2l0aW9uOnJlbGF0aXZlOyBmb250LXNpemU6MC44ZW07IGRpc3BsYXk6dGFibGU7IHBhZGRpbmctYm90dG9tOjEwcHg7IH0gLnBob25lX3RleHQucmlnaHQgeyBmbG9hdDpub25lOyBoZWlnaHQ6aW5pdGlhbDsgbWFyZ2luLWxlZnQ6YXV0bzsgd2lkdGg6aW5oZXJpdDsgfSAucGhvbmVfdGV4dCAudGVsIHsgbWFyZ2luLWxlZnQ6MTBweDsgfSAucGhvbmVfdGV4dCBsYWJlbCB7IGRpc3BsYXk6ZmxleDsganVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47IG1hcmdpbi1ib3R0b206NHB4OyB9IC53aWRnZXRfbWVudV9hZGo0LnJpZ2h0IHsgcGFkZGluZy1sZWZ0OjEwcHg7IHRleHQtYWxpZ246cmlnaHQ7IH0gLndpZGdldF9tZW51X2FkajQubGVmdCB7IHBhZGRpbmctcmlnaHQ6MTBweDsgd2lkdGg6aW5oZXJpdDsgfSAud2lkZ2V0X21lbnVfYWRqNnsgZm9udC1zaXplOjAuOGVtO3Bvc2l0aW9uOnJlbGF0aXZlO2xlZnQ6LTNweDtjb2xvcjojNTc1NzU3O2N1cnNvcjpwb2ludGVyOyB9IC53aWRnZXRfZXhwcmVzc19tYWlsX3Bob25lX3RpdGxleyBib3JkZXItYm90dG9tOjFweCBzb2xpZCAjYWFhO3RleHQtYWxpZ246IGNlbnRlcjtmb250LXNpemU6MS41cmVtIDsgZm9udC13ZWlnaHQ6Ym9sZDsgcGFkZGluZy1ib3R0b206OHB4OyBwYWRkaW5nLXRvcDo4cHg7IGNvbG9yOiMyYzJjMmM7IH0gLndpZGdldF9leHByZXNzX21haWxfYWRqMXsgcGFkZGluZzoxNXB4IDEwcHg7IGxpbmUtaGVpZ2h0OjYwcHg7IGZvbnQtc2l6ZToyZW07IHBhZGRpbmc6MTVweCAxMHB4O3RleHQtYWxpZ246Y2VudGVyOyB9IC5iYW5uZXJQb3B1cENsb3NleyBsZWZ0OjcxMHB4OyBwb3NpdGlvbjpyZWxhdGl2ZTsgd2lkdGg6MTVweDsgdG9wOjIwcHg7IGN1cnNvcjpwb2ludGVyOyB9IC5wcmljZU5vdGUgeyBjb2xvcjojNzU3NTc1OyBmb250LXN0eWxlOml0YWxpYzsgdGV4dC1hbGlnbjpqdXN0aWZ5OyBkaXNwbGF5OmJsb2NrOyBwYWRkaW5nLXJpZ2h0OjEwcHg7IGZvbnQtc2l6ZTowLjc1cmVtICFpbXBvcnRhbnQ7IG1hcmdpbi1ib3R0b206MTRweDsgfSAuc3RhY2tlZERpc2NsYWltZXJ7IGRpc3BsYXk6YmxvY2s7IG1hcmdpbi10b3A6MTBweDsgfSBzcGFuLnN0YWNrZWREaXNjbGFpbWVyOmJlZm9yZXsgY29udGVudDoiKioiOyBwb3NpdGlvbjpyZWxhdGl2ZTsgZm9udC1zaXplOjFyZW07IH0gLnRvcHJpbnR7IGRpc3BsYXk6bm9uZTsgfSAucmVmZmVyZW5jZUNvbnRlbnREZW1vLCAucmVmZmVyZW5jZUNvbnRlbnRDbGVhcmFuY2V7IHBhZGRpbmc6MzBweCAyMHB4OyBib3JkZXItYm90dG9tOjFweCBzb2xpZCAjY2NjOyBtYXJnaW4tYm90dG9tOjIwcHg7IH0gLmJveDJfZGV0YWlsc190ZXh0MiAuY29tcGFyZUJ1dHRvbiwgLmJveDJfZGV0YWlsc190ZXh0MjIgLmNvbXBhcmVCdXR0b257IHBvc2l0aW9uOmFic29sdXRlOyBtYXJnaW4tdG9wOi0yMHB4OyB6LWluZGV4OjE7IGxlZnQ6LTMwcHg7IH0gLnZkcHsgY2xlYXI6Ym90aDsgd2lkdGg6MTYwcHg7IH0gLmNvbXBhcmVCdXR0b257IHRyYW5zaXRpb246Ym94LXNoYWRvdyAwLjI1cyBlYXNlLW91dCAwczsgdHJhbnNpdGlvbjp0cmFuc2Zvcm0gMC4yNXMgZWFzZS1vdXQgMHM7IGRpc3BsYXk6bm9uZTsgfSBkaXYjc2xpZGVyLXByby0xMiB7IGJvcmRlcjoxcHggc29saWQgI0VCRUJFQjsgYm9yZGVyLXJhZGl1czozcHg7IGJhY2tncm91bmQ6I2ZmZjsgfSAjc2xpZGVyUHJvbW9BbGVydHsgYm9yZGVyLXJhZGl1czozcHggM3B4IDAgMDsgfSAuc2xpZGUtd3JhcHBlcnsgYm9yZGVyLXJhZGl1czozcHg7IH0gI3NsaWRlaXQgbGFiZWwub3BlbnsgYm9yZGVyLXJhZGl1czozcHggMCAwIDNweDsgfSBpbWcuaW1hZ2UgeyBib3JkZXItcmFkaXVzOjNweDsgfSAubmV3VmRwVmlld2VyIC5jb21wYXJlQnV0dG9ueyBwb3NpdGlvbjphYnNvbHV0ZTsgYm90dG9tOjJweDsgcmlnaHQ6MHB4OyB6LWluZGV4OjExMTE7IH0gLmxpdmVBbGVydF9saW5reyBjb2xvcjojRkZGRkZGOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgZm9udC13ZWlnaHQ6Ym9sZDsgfSAubGl2ZUFsZXJ0X2xpbms6aG92ZXIgeyB0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lOyB9IC5idXR0b24tdG9hc3RyeyBiYWNrZ3JvdW5kOiNGRkY7cGFkZGluZzo0cHggMjBweDtib3JkZXItcmFkaXVzOjVweDsgY29sb3I6I0JEMzYyRiFpbXBvcnRhbnQ7IH0gLmJ1dHRvbi10b2FzdHI6aG92ZXJ7IGJhY2tncm91bmQ6IzAwMDsgY29sb3I6I0ZGRjsgfSAucmV0dXJuUG9wdXBfc3VibWl0IHNwYW4geyBwb3NpdGlvbjphYnNvbHV0ZSFpbXBvcnRhbnQ7IHRvcDo1MCUhaW1wb3J0YW50OyBkaXNwbGF5OmJsb2NrIWltcG9ydGFudDsgdGV4dC1hbGlnbjpjZW50ZXIhaW1wb3J0YW50OyBsZWZ0OjAhaW1wb3J0YW50OyByaWdodDowIWltcG9ydGFudDsgcGFkZGluZzowIDhweCAwIDhweCFpbXBvcnRhbnQ7IGN1cnNvcjpwb2ludGVyIWltcG9ydGFudDsgZm9udC1zaXplOjAuODc1cmVtICFpbXBvcnRhbnQ7IG1hcmdpbjowIWltcG9ydGFudDsgY29sb3I6I0ZGRiFpbXBvcnRhbnQ7IG1hcmdpbi10b3A6LTlweCFpbXBvcnRhbnQ7IH0gcmV0dXJuUG9wdXBfc3VibWl0OmhvdmVyIHsgYmFja2dyb3VuZC1jb2xvcjojMGJiMWUwOyBjb2xvcjojZmZmOyB9IC5yZXR1cm5Qb3B1cF9zdWJtaXQgeyBkaXNwbGF5OmJsb2NrOyBib3JkZXItc3R5bGU6c29saWQ7IGJvcmRlci1yYWRpdXM6NXB4OyBsZWZ0OjIyOHB4OyB6LWluZGV4OjU7IHdpZHRoOjIyNXB4OyBoZWlnaHQ6NDBweDsgcG9zaXRpb246YWJzb2x1dGU7IGJhY2tncm91bmQtY29sb3I6IzMzNGM5NjsgdGV4dC1zaGFkb3c6MXB4IDFweCAjMDAyYjQ2OyBjb2xvcjojZmZmOyBib3JkZXItd2lkdGg6MXB4OyBib3JkZXItY29sb3I6IzMzMzMzMzsgZm9udC1zaXplOjFyZW0gOyBsaW5lLWhlaWdodDoxOXB4OyBmb250LXdlaWdodDpub3JtYWw7IHRleHQtYWxpZ246Y2VudGVyOyBiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7IH0gI3JldHVyblBvcHVwRm9ybV93cmFwcGVyIHsgZGlzcGxheTpibG9jazsgYmFja2dyb3VuZDpyZ2JhKDY2LDY2LDY2LDEpOyBib3JkZXItc3R5bGU6bm9uZTsgYm9yZGVyLXJhZGl1czoxMXB4OyBsZWZ0OjI4MHB4OyB0b3A6MTU1cHg7IHotaW5kZXg6Mjsgd2lkdGg6NTMxcHg7IGhlaWdodDozODRweDsgcG9zaXRpb246YWJzb2x1dGU7IH0gI3JldHVyblBvcHVwVGlsdGV7IHdpZHRoOjMzNXB4OyBmbG9hdDpyaWdodDsgbWFyZ2luOjIwcHg7IGNvbG9yOiMyYzJjMmM7IGZvbnQtc2l6ZToxLjEyNXJlbSA7IH0gI3JldHVyblBvcHVwVGlsdGUgLnJwX21jeyBmb250LXNpemU6MS4xMjVyZW0gIWltcG9ydGFudDsgfSAjcmV0dXJuUG9wdXBUaWx0ZTJ7IGNvbG9yOiNGRkY7IG1hcmdpbjoyMHB4IDEwcHggMjBweCAyMHB4OyBwYWRkaW5nOjA7IH0gLnJldHVyblBvcHVwRm9ybV9sYWJlbCB7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgZm9udC1zaXplOjAuODEzcmVtIDsgbGluZS1oZWlnaHQ6MTRweDsgY29sb3I6I2JmYmZiZjsgbWFyZ2luLWxlZnQ6MjBweDsgZGlzcGxheTppbmxpbmUtYmxvY2s7IH0gLnJldHVyblBvcHVwRm9ybV90YWJsZSB0ciB0ZHsgcGFkZGluZy1ib3R0b206MTBweDsgfSAucnBfbWMgeyBmb250LXNpemU6MC44NzVyZW0gIWltcG9ydGFudDsgY29sb3I6IzMzNGM5NiFpbXBvcnRhbnQ7IHBhZGRpbmc6MCFpbXBvcnRhbnQ7IG1hcmdpbjowIWltcG9ydGFudDsgfSAjZXhpdFBvcHVwQ29udGFpbmVyeyBwYWRkaW5nOjA7IGJhY2tncm91bmQtaW1hZ2U6bm9uZTsgfSAjZXhpdF9wb3B1cF9hY2N1dHJhZGVfZm9ybXsgaGVpZ2h0OjM0cmVtOyBiYWNrZ3JvdW5kLWltYWdlOnVybCgvaW1hZ2VzL3BvcHVwcy90cmFkZWluLWV4aXRwb3B1cC1mci5wbmcpOyBiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWV4aXQtcG9wdXAtYmdjb2wsICNlZWUpOyB9IGJvZHkuRU5HTElTSCAjZXhpdF9wb3B1cF9hY2N1dHJhZGVfZm9ybXsgYmFja2dyb3VuZC1pbWFnZTp1cmwoL2ltYWdlcy9wb3B1cHMvdHJhZGVpbi1leGl0cG9wdXAtZW4ucG5nKTsgfSAuZXhpdF9wb3B1cF9idXR0b25zIGJ1dHRvbiB7IHdpZHRoOjExcmVtOyBmb250LXdlaWdodDpib2xkOyB9IC5leGl0X3BvcHVwX3RleHRfbGluZV8yeyBtYXJnaW4tdG9wOjI3cHg7IG1hcmdpbi1ib3R0b206NXB4OyB9IC5leGl0X3BvcHVwX3RleHRfbGluZV8zeyBmb250LXNpemU6MS42MjVyZW0gOyBtYXJnaW4tYm90dG9tOjNweDsgZm9udC13ZWlnaHQ6Ym9sZGVyOyB9IC5leGl0X3BvcHVwX3RleHRfbGluZV81IHsgbWFyZ2luLWJvdHRvbToyMHB4OyBmb250LXNpemU6MS42MjVyZW0gOyBmb250LXdlaWdodDpib2xkZXI7IG1hcmdpbi10b3A6NjNweDsgfSAjZXhpdF9wb3B1cF9hY2N1dHJhZGVfdGl0bGV7IGhlaWdodDo5NXB4OyB3aWR0aDo1NzBweDsgbWFyZ2luLXRvcDoyMHB4OyB9ICNleGl0X3BvcHVwX2FjY3V0cmFkZV90aXRsZS5fRlJFTkNIeyBiYWNrZ3JvdW5kLWltYWdlOnVybCgvaW1hZ2VzL3BvcHVwcy9hY2N1LXRyYWRlLWV4aXQtdGl0bGVfZnIucG5nKTsgfSAjZXhpdF9wb3B1cF9hY2N1dHJhZGVfdGl0bGUuX0VOR0xJU0h7IGJhY2tncm91bmQtaW1hZ2U6dXJsKC9pbWFnZXMvcG9wdXBzL2FjY3UtdHJhZGUtZXhpdC10aXRsZV9lbi5wbmcpOyB9ICNiZXN0UHJpY2VWZHBOZXdQb3B1cENvbnRhaW5lcnsgd2lkdGg6NDgwcHg7IGhlaWdodDo1MTBweDsgfSAjYmVzdFByaWNlVmRwTmV3UG9wdXBDb250YWluZXIgLnBvcHVwX2JneyB3aWR0aDo0ODBweDsgaGVpZ2h0OjUxNXB4OyB9ICNiZXN0UHJpY2VWZHBOZXdQb3B1cENvbnRhaW5lciAucG9wdXBfYmd7IGJhY2tncm91bmQtaW1hZ2U6dXJsKCcvaW1hZ2VzL3BvcHVwcy9mci9iZXN0UHJpY2VOZXdWZHAucG5nJyk7IH0gLnBvcHVwX2JneyBiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmY7IGJhY2tncm91bmQtc2l6ZTo0ODBweCA1MTVweDsgfSAucG9wdXBGb3JtIC5hc3Rlcmlza3sgY29sb3I6I2QwMDsgZm9udC13ZWlnaHQ6Ym9sZDsgcGFkZGluZzowOyBmb250LXNpemU6aW5oZXJpdDsgbWFyZ2luOjA7IH0gLnBvcHVwRm9ybXsgei1pbmRleDo1MDsgcG9zaXRpb246YWJzb2x1dGU7IHRvcDoyNDhweDsgaGVpZ2h0OjI0OXB4OyBsZWZ0OjgwcHg7IGJhY2tncm91bmQ6dXJsKCIvaW1hZ2VzL2NvdXBvbi1mb3JtLWJnLTIucG5nIikgbm8tcmVwZWF0OyB3aWR0aDozMzVweDsgcGFkZGluZzozMHB4OyB9IC5wb3B1cEZvcm1UaXRsZXsgaGVpZ2h0OjQwcHg7IG1hcmdpbjo4cHg7IGZvbnQtc2l6ZTowLjkzOHJlbSA7IGZvbnQtd2VpZ2h0OmJvbGQ7IH0gLnBvcHVwRm9ybUlucHV0cyB0ZCB7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IHRleHQtYWxpZ246cmlnaHQ7IHBhZGRpbmctcmlnaHQ6MTBweDsgcGFkZGluZy1ib3R0b206M3B4OyB9IC5wb3B1cEZvcm0gaW5wdXR7IHdpZHRoOjIxMHB4OyB9ICNhc1B1cmNoYXNlSW50ZW50eyB3aWR0aDo2MDBweDsgcGFkZGluZzozMHB4IDMwcHg7IGhlaWdodDphdXRvOyBjb2xvcjojMDAwOyBiYWNrZ3JvdW5kLWNvbG9yOiNlZWU7IHotaW5kZXg6MTAwMDAyMTsgfSAjcHJvbW9EaXNjb3ZlckJ1dHRvbnsgfSAubmV3VmRwVmlld2VyIHsgd2lkdGg6NjQwcHg7IGhlaWdodDo0ODBweDsgZmxvYXQ6bGVmdDsgbWFyZ2luLWxlZnQ6MjBweDsgfSAubG9jYXRpb24tbmFtZXMgeyBwb3NpdGlvbjpzdGF0aWM7IH0gI01haW5NZW51X0RFQUxFUlNISVBTID4gdWwuc3ViID4gbGkgPiB1bCB7IHBvc2l0aW9uOnN0YXRpYzsgfSAuaW1nX21lbnUudXBfbWVudSB1bC5uYXYgdWwuc3ViIGxpIC5sb2NhdGlvbi1uYW1lcyB7IG1pbi13aWR0aDoyMDBweDsgfSAjTWFpbk1lbnVfREVBTEVSU0hJUFMgbGkubG9jYXRpb24tbmFtZXMgeyBtaW4td2lkdGg6MjAwcHg7IH0gLmxvY2F0aW9uLW5hbWVzLCAubG9jYXRpb24tbmFtZXMgbGkgeyBsaXN0LXN0eWxlOm5vbmU7IH0gLkwxMDAgeyBsZWZ0OjEwMCU7IH0gLlIxMDAgeyByaWdodDoxMDAlOyB9IC5sb2NhdGlvbi1uYW1lcyAubG9jYXRpb24tZGV0YWlscyB7IHBvc2l0aW9uOmFic29sdXRlOyB0b3A6MDsgcGFkZGluZzoxNHB4OyBib3gtc2hhZG93OjAgNnB4IDEycHggcmdiYSgwLDAsMCwuMTc1KTsgZGlzcGxheTpub25lOyBiYWNrZ3JvdW5kLWNvbG9yOndoaXRlOyBtaW4td2lkdGg6MjkwcHg7IH0gLmxvY2F0aW9uLW5hbWVzIC5sb2NhdGlvbi1kZXRhaWxzID4gLnRpdGxlIHsgbWFyZ2luLWJvdHRvbToxZW07IGZvbnQtc2l6ZTppbml0aWFsOyBjb2xvcjojMDAwMDAwOyB9IC5sb2NhdGlvbi1uYW1lcyAubG9jYXRpb24tZGV0YWlscyA+IC5sb2NhdGlvbi1kZXRhaWxzLWxvZ28gPiBpbWcgeyBtYXgtd2lkdGg6MTAwJTsgbWFyZ2luLWJvdHRvbTo4cHg7IH0gbGkubG9jYXRpb24tbmFtZXM6aG92ZXIgLmxvY2F0aW9uLWRldGFpbHMgeyBkaXNwbGF5OmJsb2NrOyB9IGxpLmxvY2F0aW9uLW5hbWVzOmhvdmVyIC5tYWlubWVudS1zdWJtZW51IHsgb3BhY2l0eToxOyB2aXNpYmlsaXR5OnZpc2libGU7IH0gLmxvY2F0aW9uLW5hbWVzIC5sb2NhdGlvbi1kZXRhaWxzIC5sb2NhdGlvbi1kZXRhaWxzLWxvZ28geyBib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZTVlNWU1OyBtYXJnaW4tYm90dG9tOjhweDsgdGV4dC1hbGlnbjpjZW50ZXI7IH0gI01haW5NZW51X0RFQUxFUlNISVBTIC5sb2NhdGlvbi1uYW1lcyAubWFpbm1lbnUtc3VibWVudSAubG9jYXRpb24tZGV0YWlscyB7IG1heC1oZWlnaHQ6NjB2aDsgcG9zaXRpb246c3RhdGljOyB9IC51cF9tZW51IHVsLm5hdiAubG9jYXRpb24tZGV0YWlscy1pbmZvIGEgeyBjb2xvcjojMmMyYzJjOyBwYWRkaW5nOjA7IH0gLmxvY2F0aW9uLWRldGFpbHMtaW5mbyAubG9jYXRpb24tc3BhY2luZy1tbC0xMyB7IG1hcmdpbi1sZWZ0OjEzLjQ5cHg7IH0gLnVwX21lbnUgdWwubmF2IGxpLmRldGFpbHMtaW5mby1saW5rIGEgeyBkaXNwbGF5OmlubGluZS1ibG9jazsgfSAudXBfbWVudSB1bC5uYXYgLmRldGFpbHMtaW5mby1saW5rOmhvdmVyIGEgeyBjb2xvcjojMmMyYzJjOyB9ICNNYWluTWVudV9ERUFMRVJTSElQUyA+IHVsLnN1YiA+IGxpID4gdWwgeyBtYXgtaGVpZ2h0OjYwdmg7IG92ZXJmbG93LXk6YXV0bzsgb3ZlcmZsb3cteDpoaWRkZW47IH0gYm9keSAud3JhcHBlciAudXBfbWVudSAubmF2ID4gbGk6aG92ZXIgdWwuc3ViIGxpOmhvdmVyIC5kZXRhaWxzLWluZm8tbGluayBsaTpob3ZlciBhIHsgZGlzcGxheTppbmxpbmUtYmxvY2s7IGJhY2tncm91bmQtaW1hZ2U6bm9uZTsgY29sb3I6IzJjMmMyYzsgYmFja2dyb3VuZC1jb2xvcjojZWVlZWVlOyB9IGxpLmRldGFpbHMtaW5mby1saW5rOmhvdmVyIHsgYmFja2dyb3VuZC1jb2xvcjojZWVlZWVlOyBjb2xvcjojMmMyYzJjOyB9IC5sb2NhdGlvbi1kZXRhaWxzLWluZm8gdWwgbGkgeyBwYWRkaW5nLXRvcDo0cHg7IHBhZGRpbmctYm90dG9tOjRweDsgZm9udC13ZWlnaHQ6MjAwOyBmb250LXNpemU6MC44NzVyZW0gOyBtYXJnaW4tYm90dG9tOjVweDsgfSAubG9jYXRpb24tZGV0YWlscy1pbmZvID4gdWwgPiBsaTpiZWZvcmUgeyBjb250ZW50OiIgIjsgYm9yZGVyOnNvbGlkOyBib3JkZXItd2lkdGg6MCAycHggMnB4IDA7IGRpc3BsYXk6aW5saW5lLWJsb2NrOyBwYWRkaW5nOjJweDsgYm9yZGVyLXJhZGl1czoycHg7IHRyYW5zZm9ybTpyb3RhdGUoLTQ1ZGVnKTsgLXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKC00NWRlZyk7IG1hcmdpbi1yaWdodDo3cHg7IG1hcmdpbi1ib3R0b206MXB4OyB9ICNNYWluTWVudV9ERUFMRVJTSElQUyB1bCB7IHBhZGRpbmc6MDsgfSBAbWVkaWEgcHJpbnR7IC50b3ByaW50eyBkaXNwbGF5OmJsb2NrO30gfSAubXItMTUgeyBtYXJnaW4tcmlnaHQ6MTVweDsgfSAubWwtMTUgeyBtYXJnaW4tbGVmdDoxNXB4OyB9IC5tbC03IHsgbWFyZ2luLWxlZnQ6N3B4OyB9IHNwYW4uYXJyb3cgeyBib3JkZXI6c29saWQ7IGJvcmRlci13aWR0aDowIDJweCAycHggMDsgZGlzcGxheTppbmxpbmUtYmxvY2s7IHBhZGRpbmc6MnB4OyBib3JkZXItcmFkaXVzOjFweDsgcG9zaXRpb246cmVsYXRpdmU7IHRvcDotMnB4OyB9IHNwYW4uYXJyb3cuYXJyb3ctbGFyZ2UgeyBib3JkZXItd2lkdGg6MCAzcHggM3B4IDA7IHBhZGRpbmc6NHB4OyBib3JkZXItcmFkaXVzOjNweDsgfSBzcGFuLmFycm93LmFycm93LXJpZ2h0IHsgdHJhbnNmb3JtOnJvdGF0ZSgtNDVkZWcpOyAtd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoLTQ1ZGVnKTsgfSBzcGFuLmFycm93LmFycm93LWxlZnQgeyB0cmFuc2Zvcm06cm90YXRlKDEzNWRlZyk7IC13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgxMzVkZWcpOyB9IHNwYW4uYXJyb3cuYXJyb3ctdXAgeyB0cmFuc2Zvcm06cm90YXRlKC0xMzVkZWcpOyAtd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoLTEzNWRlZyk7IH0gc3Bhbi5hcnJvdy5hcnJvdy1kb3duIHsgdHJhbnNmb3JtOnJvdGF0ZSg0NWRlZyk7IC13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSg0NWRlZyk7IH0gLnRvcGJhcjNidG5XcmFweyBib3JkZXItcmFkaXVzOjVweDsgYmFja2dyb3VuZC1jb2xvcjojMzM0Yzk2OyBib3JkZXI6MnB4IHNvbGlkICNmZmZmZmY7IHZlcnRpY2FsLWFsaWduOm1pZGRsZTsgaGVpZ2h0OjQycHg7IHBhZGRpbmc6MCAyMHB4OyBjb2xvcjojZmZmZmZmOyB9IC50b3BiYXIzYnRueyBmb250LXdlaWdodDpib2xkOyB0cmFuc2l0aW9uOi4yczsgZm9udC1zaXplOjAuODc1cmVtIDsgdGV4dC10cmFuc2Zvcm06Y2FwaXRhbGl6ZTsgYm9yZGVyLWNvbG9yOndoaXRlOyB0ZXh0LWFsaWduOmNlbnRlcjsgY3Vyc29yOnBvaW50ZXI7IGRpc3BsYXk6YmxvY2s7IHRleHQtZGVjb3JhdGlvbjpub25lOyBjb2xvcjppbmhlcml0OyB9IC50cmFkZUluQmFyX2J0bnsgZm9udC13ZWlnaHQ6Ym9sZDsgYm9yZGVyLXJhZGl1czo1cHg7IHRleHQtdHJhbnNmb3JtOnZhcigtLWNlcnQtdHh0LXRyYW5zZm9ybSwgdmFyKC0tdHh0LXVwcGVyKSk7IHRyYW5zaXRpb246LjJzOyBib3JkZXI6MnB4IHNvbGlkIHRyYW5zcGFyZW50OyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjp3aGl0ZTsgYm9yZGVyLWNvbG9yOndoaXRlOyB0ZXh0LWFsaWduOmNlbnRlcjsgY3Vyc29yOnBvaW50ZXI7IGhlaWdodDo1MHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiMzMzRjOTY7IGNvbG9yOiAjZmZmZmZmOyBib3JkZXI6MnB4IHNvbGlkICNmZmZmZmY7IG1pbi13aWR0aDoyMDBweDsgbWF4LXdpZHRoOjIwMHB4OyB9IC50cmFkZUluQmFyX2J0bjpob3ZlciwudG9wYmFyM2J0bldyYXA6aG92ZXJ7IGJhY2tncm91bmQtY29sb3I6I2ZmZmZmZjsgY29sb3I6IzMzNGM5NiFpbXBvcnRhbnQ7IH0gI2dSYXRpbmdMYXJnZXsgYmFja2dyb3VuZDojZmZmZmZmOyBjb2xvcjojMDAwMDAwOyBib3JkZXI6MXB4IHNvbGlkICMyYzJjMmM7IGZsb2F0OmxlZnQ7IHBhZGRpbmc6NXB4IDBweDsgbWFyZ2luLXRvcDo1cHg7IGN1cnNvcjpwb2ludGVyOyBib3JkZXItcmFkaXVzOjNweDsgdGV4dC1hbGlnbjpjZW50ZXI7IHdpZHRoOjE1MHB4OyBtYXJnaW4tbGVmdDozMHB4OyB9ICNnUmF0aW5neyBjdXJzb3I6cG9pbnRlcjsgfSAudHJhZGVJblZpbklucHV0eyBoZWlnaHQ6NTBweDsgYm9yZGVyLXJhZGl1czo1cHg7IHRleHQtYWxpZ246Y2VudGVyOyBib3gtc2l6aW5nOmJvcmRlci1ib3g7IHdpZHRoOjEwMCU7IGZvbnQtc2l6ZToxcmVtIDsgY29sb3I6IzNjMzgzNjsgYm9yZGVyOjJweCBzb2xpZCAjZmZmZmZmOyB9IC50cmFkZUluVmluSW5wdXQ6OnBsYWNlaG9sZGVyeyBmb250LXNpemU6MXJlbSA7IGNvbG9yOiMzYzM4MzY7IH0gLnRyYWRlSW5PckxhYmVseyBtYXgtd2lkdGg6MjVweDsgfSAjdHJhZGVJbkJhclBvcHVwX2Zvcm1XIC5uaXZNYWtlTW9kZWxTZWxlY3RDb250YWluZXJ7IHdpZHRoOjEwMCU7IHBhZGRpbmc6MTJweDsgbWFyZ2luLXRvcDoxMHB4OyBmb250LXNpemU6MXJlbSA7IH0gI3RyYWRlSW5CYXJQb3B1cF9mb3JtVyAubml2TWFrZU1vZGVsU2VsZWN0Q29udGFpbmVyIC5uaXZNYWtlTW9kZWxTZWxlY3R7IGRpc3BsYXk6bm9uZTsgfSAjdHJhZGVJbkJhclBvcHVwX2Zvcm1XIC5uaXZNYWtlTW9kZWxTZWxlY3RDb250YWluZXIgLm5pdk1ha2VNb2RlbFNlbGVjdExhYmVseyBkaXNwbGF5OmlubGluZS1ibG9jazsgbWFyZ2luOjAgMTJweDsgY3Vyc29yOnBvaW50ZXI7IH0gI3RyYWRlSW5CYXJQb3B1cF9mb3JtVyAubml2TWFrZU1vZGVsU2VsZWN0Q29udGFpbmVyIC5uaXZNYWtlTW9kZWxTZWxlY3Q6Y2hlY2tlZCtsYWJlbHsgYm9yZGVyLWJvdHRvbToycHggc29saWQgYmxhY2s7IH0gLnRyYWRpblNlbGVjdFd7IG1pbi13aWR0aDoyMDBweDsgbWF4LXdpZHRoOjIwMHB4OyB9IC50cmFkaW5TZWxlY3RXLndpdGhWSU5NYWtleyBtaW4td2lkdGg6MTQwcHg7IG1heC13aWR0aDoxNDBweDsgfSAudHJhZGluU2VsZWN0Vy53aXRoVklOWWVhcnsgbWluLXdpZHRoOjgwcHg7IG1heC13aWR0aDo4MHB4OyB9IC50cmFkaW5JbnB1dFd7IG1pbi13aWR0aDoyMDBweDsgbWF4LXdpZHRoOjIwMHB4OyB9IC50cmFkaW5TZWxlY3RBeyBwb3NpdGlvbjpyZWxhdGl2ZTsgfSAudHJhZGluU2VsZWN0QTphZnRlciB7IGNvbnRlbnQ6IiAiOyBoZWlnaHQ6MDsgd2lkdGg6MDsgYm9yZGVyLWxlZnQ6NXB4IHNvbGlkIHRyYW5zcGFyZW50OyBib3JkZXItcmlnaHQ6NXB4IHNvbGlkIHRyYW5zcGFyZW50OyBib3JkZXItdG9wOjVweCBzb2xpZCAjMDAwMDAwOyBwb3NpdGlvbjphYnNvbHV0ZTsgcmlnaHQ6MTRweDsgdG9wOjE3cHg7IHRyYW5zaXRpb246YWxsIDAuM3MgbGluZWFyOyBwb2ludGVyLWV2ZW50czpub25lOyB9IC50cmFkaW5TZWxlY3R7IGNvbG9yOiMzYzM4MzY7IGJvcmRlcjoycHggc29saWQgI2ZmZmZmZjsgYm9yZGVyLXJhZGl1czo1cHg7IHBhZGRpbmc6MTBweCAxMHB4OyBmb250LXNpemU6MXJlbSA7IGJhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwxKTsgYmFja2dyb3VuZC1wb3NpdGlvbjo5NSUgNTAlOyB3aWR0aDoxMDAlOyAtd2Via2l0LWFwcGVhcmFuY2U6bm9uZTsgLW1vei1hcHBlYXJhbmNlOm5vbmU7IHBhZGRpbmctcmlnaHQ6MjdweDsgaGVpZ2h0OjUwcHg7IH0gLnRyYWRpblNlbGVjdDphZnRlciB7IGNvbnRlbnQ6IiAiOyBoZWlnaHQ6MDsgd2lkdGg6MDsgYm9yZGVyLWxlZnQ6NXB4IHNvbGlkIHRyYW5zcGFyZW50OyBib3JkZXItcmlnaHQ6NXB4IHNvbGlkIHRyYW5zcGFyZW50OyBib3JkZXItdG9wOjVweCBzb2xpZCAjMDAwMDAwOyBwb3NpdGlvbjphYnNvbHV0ZTsgcmlnaHQ6MTRweDsgdG9wOjE3cHg7IHRyYW5zaXRpb246YWxsIDAuM3MgbGluZWFyOyB9IC5tdWx0aXNlbGVjdFZlaGljbGVPcHRpb25zIHNwYW57IGZvbnQtc2l6ZTowLjkzOHJlbSAhaW1wb3J0YW50OyBwYWRkaW5nOjAgIWltcG9ydGFudDsgbWFyZ2luOjAgIWltcG9ydGFudDsgfSAjdHJhZGVJbkJhclBvcHVwX2Zvcm1XIC50cmFkZUluQmFyTXVsdGlzZWxlY3R7IHdpZHRoOjU2OHB4IWltcG9ydGFudDsgYm9yZGVyLXJhZGl1czowLjNyZW0haW1wb3J0YW50OyBib3JkZXItd2lkdGg6MXB4IWltcG9ydGFudDsgYm9yZGVyLXJhZGl1czowLjNyZW0haW1wb3J0YW50OyBib3JkZXItY29sb3I6I2E5YTlhOSFpbXBvcnRhbnQ7IH0gLnVpLW11bHRpc2VsZWN0LW1lbnUudHJhZGVJbkJhck11bHRpc2VsZWN0eyBtaW4td2lkdGg6MjcycHg7IHotaW5kZXg6MTAwMDAyMDsgbWF4LWhlaWdodDoxMjBweDsgb3ZlcmZsb3c6c2Nyb2xsOyB9IC50cmFkZUluQmFyRGVhbGVyU3RlcHsgdGV4dC1hbGlnbjpjZW50ZXI7IG1hcmdpbi10b3A6MjVweDsgfSAudHJhZGVJbkJhckRlYWxlclN0ZXAgLnRyYWRlSW5CYXJEZWFsZXJTdGVwTWFrZU1vZGVsWWVhcnsgZm9udC13ZWlnaHQ6NzAwOyB9IC50cmFkZUluQmFyRGVhbGVyU3RlcCBzcGFueyBtYXJnaW46MCFpbXBvcnRhbnQ7IGZvbnQtd2VpZ2h0OjcwMCFpbXBvcnRhbnQ7IGNvbG9yOiMwMDAwMDAhaW1wb3J0YW50OyB9IEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDoxMDI0cHgpIHsgLnRyYWRpblNlbGVjdFcgeyBtaW4td2lkdGg6Y2FsYygoMjAwcHggLSB2YXIoLS1zKSkgLSB2YXIoLS1zLCAwLjVyZW0pKTsgbWF4LXdpZHRoOmNhbGMoKDIwMHB4IC0gdmFyKC0tcykpIC0gdmFyKC0tcywgMC41cmVtKSk7IH0gfSAjZ29vZ2xlUmV2aWV3c0Zvb3RlcnsgbWFyZ2luOjAgYXV0bzsgYmFja2dyb3VuZC1jb2xvcjojZmZmOyBib3JkZXItcmFkaXVzOjVweDsgbWF4LXdpZHRoOjk0MHB4OyBoZWlnaHQ6Mjc1cHg7IH0gLnJldmlldy1pdGVtIHsgZmxvYXQ6bGVmdDsgaGVpZ2h0OjE4NXB4OyB3aWR0aDoxMDAlOyBtYXgtd2lkdGg6NDYwcHg7IG1hcmdpbi1yaWdodDoxMHB4OyBib3JkZXItdG9wOjRweCBzb2xpZCAjRUJFQkVCOyBwYWRkaW5nLXRvcDoxMHB4OyB9IC5maXJzdGNoYXJ1cDo6Zmlyc3QtbGV0dGVyeyB0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7IH0gSS5pY29uLWNvbXBhcmUtMSwgc3Bhbi5pY29uLWNvbXBhcmUtMXsgY29sb3I6IzMzNGM5NjsgfSBJLmljb24tY29tcGFyZS0xOmhvdmVyLCBzcGFuLmljb24tY29tcGFyZS0xOmhvdmVyeyBjb2xvcjojZmZmZmZmICFpbXBvcnRhbnQ7IHRleHQtc2hhZG93OiMzMzRjOTYgMXB4IDFweCwgIzMzNGM5NiAtMXB4IDFweCwgIzMzNGM5NiAtMXB4IC0xcHgsICMzMzRjOTYgMXB4IC0xcHg7IGJvcmRlci1yYWRpdXM6MjBweDsgYmFja2dyb3VuZC1jb2xvcjojMzM0Yzk2OyB9IC5nUmF0aW5nLWljb24gaSB7IGZvbnQtc2l6ZToxLjA2M3JlbSA7IH0gLmdSYXRpbmctaWNvbiNnUmF0aW5nIHsgZGlzcGxheTpmbGV4OyBhbGlnbi1pdGVtczpjZW50ZXI7IGp1c3RpZnktY29udGVudDpjZW50ZXI7IHdpZHRoOjkwcHg7IGhlaWdodDoyOHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiMwMDAwMDA7IGNvbG9yOndoaXRlOyBjb2xvcjojZmZmZmZmOyBjb2xvcjojZmZmZmZmOyBnYXA6N3B4OyB9IC5nUmF0aW5nLWltZyNnUmF0aW5nIHsgYmFja2dyb3VuZC1pbWFnZTp1cmwoL2ltYWdlcy9ncmF0aW5nLnBuZyk7IGNvbG9yOiMzNTZDRjI7IHdpZHRoOjk1cHg7IGhlaWdodDoyOHB4OyBwYWRkaW5nOjRweCAzMXB4IDEwcHggMTBweDsgbWFyZ2luLXRvcDoxcHg7IH0gI2dSYXRpbmd7IGJveC1zaXppbmc6Ym9yZGVyLWJveDsgZm9udC1zaXplOjEuMDYzcmVtIDsgZm9udC13ZWlnaHQ6Ym9sZDsgZGlzcGxheTpibG9jazsgfSBJTlBVVFt0eXBlPSJ0ZXh0Il0udmFsaWRpdHktZXJyb25lb3VzeyBib3JkZXI6MXB4IHNvbGlkICNkYzM1NDU7IGJhY2tncm91bmQtY29sb3I6I2ZhZDZkYyAhaW1wb3J0YW50OyB9IElOUFVUW3R5cGU9InRlbCJdLnZhbGlkaXR5LWVycm9uZW91c3sgYm9yZGVyOjFweCBzb2xpZCAjZGMzNTQ1OyBiYWNrZ3JvdW5kLWNvbG9yOiNmYWQ2ZGMgIWltcG9ydGFudDsgfSBJTlBVVFt0eXBlPSJlbWFpbCJdLnZhbGlkaXR5LWVycm9uZW91c3sgYm9yZGVyOjFweCBzb2xpZCAjZGMzNTQ1OyBiYWNrZ3JvdW5kLWNvbG9yOiNmYWQ2ZGMgIWltcG9ydGFudDsgfSBJTlBVVFt0eXBlPSJwYXNzd29yZCJdLnZhbGlkaXR5LWVycm9uZW91c3sgYm9yZGVyOjFweCBzb2xpZCAjZGMzNTQ1OyBiYWNrZ3JvdW5kLWNvbG9yOiNmYWQ2ZGMgIWltcG9ydGFudDsgfSBIMS5kZWZhdWx0eyBmb250LXNpemU6MS44NzVyZW0gOyBjb2xvcjojMmMyYzJjOyBmb250LXdlaWdodDpub3JtYWw7IGNsZWFyOmJvdGg7IHBhZGRpbmc6MCAwIDI1cHggMDsgfSBIMS5kZWZhdWx0IEF7IHRleHQtZGVjb3JhdGlvbjpub25lOyB9IEgxLmRlZmF1bHQgSS5pY29uLCBIMS5kZWZhdWx0IHNwYW4uaWNvbiB7IGJvcmRlci1yYWRpdXM6MzBweDsgd2lkdGg6MjNweDsgaGVpZ2h0OjI5cHg7IHBhZGRpbmctdG9wOjRweDsgcGFkZGluZy1sZWZ0OjEwcHg7IGZsb2F0OmxlZnQ7IGZvbnQtc2l6ZToxLjU2M3JlbSA7IG1hcmdpbi1yaWdodDoxMHB4OyBib3JkZXI6MXB4IHNvbGlkICMyYzJjMmM7IGNvbG9yOiMyYzJjMmM7IGJhY2tncm91bmQtY29sb3I6I2ZmZmZmZjsgYm94LXNpemluZzpjb250ZW50LWJveDsgfSBIMS5kZWZhdWx0IEkuaWNvbi5tdWx0aUxpbmVIMSwgSDEuZGVmYXVsdCBzcGFuLmljb24ubXVsdGlMaW5lSDF7IG1hcmdpbi10b3A6MTBweDsgfSBIMS5kZWZhdWx0IEkuaWNvbi5zaW5nbGVMaW5lSDEsIEgxLmRlZmF1bHQgc3Bhbi5pY29uLnNpbmdsZUxpbmVIMXsgbWFyZ2luLXRvcDoycHg7IH0gSDEuZGVmYXVsdCA+IERJVnsgZGlzcGxheTp0YWJsZS1yb3c7IH0gSDEuZGVmYXVsdCA+IERJViBESVY6bnRoLWNoaWxkKDEpeyBmb250LXdlaWdodDpib2xkOyB9IEgxLmRlZmF1bHQgPiBESVYgRElWOm50aC1jaGlsZCgyKXsgZm9udC13ZWlnaHQ6bm9ybWFsOyBjb2xvcjojNzU3NTc1OyBmb250LXNpemU6MS4xMjVyZW0gOyB9IEgxLmRlZmF1bHQgPiBESVYgRElWOm50aC1jaGlsZCgzKXsgZm9udC1zaXplOjAuOHJlbTsgZm9udC1zaXplOjAuOHJlbTsgY29sb3I6I2JiYjsgcGFkZGluZy10b3A6NXB4OyB9IGgxLmNrZWRpdG9yLWRlZmF1bHQgeyBmb250LXdlaWdodDpib2xkOyBmb250LXNpemU6Mi4xMjVyZW0gOyBwYWRkaW5nOjAgMCAxNXB4IDA7IGNvbG9yOiMyYzJjMmM7IH0gaDEuY2tlZGl0b3ItZGVmYXVsdDo6YmVmb3JlIHsgY29udGVudDoiXGYwNTQiOyBmb250LWZhbWlseTpGb250QXdlc29tZTsgd2lkdGg6MjhweDsgaGVpZ2h0OjM1cHg7IG1hcmdpbi1yaWdodDoxMHB4OyBwYWRkaW5nOjRweCAwIDAgMTFweDsgYm9yZGVyLXJhZGl1czo0MXB4OyBmb250LXNpemU6MS45MzhyZW0gOyBmbG9hdDpsZWZ0OyBib3JkZXI6MXB4IHNvbGlkICMyYzJjMmM7IGNvbG9yOiMyYzJjMmM7IGJhY2tncm91bmQtY29sb3I6I2ZmZmZmZjsgfSBIMi5kZWZhdWx0eyBmb250LXNpemU6MS41cmVtIDsgY29sb3I6IzJjMmMyYzsgZm9udC13ZWlnaHQ6bm9ybWFsOyBjbGVhcjpib3RoOyBwYWRkaW5nOjEwcHggMDsgbWFyZ2luLXRvcDoxMHB4OyB9IEgyLmRlZmF1bHQgSS5pY29uLCBIMi5kZWZhdWx0IHNwYW4uaWNvbnsgYm9yZGVyLXJhZGl1czozMHB4OyB3aWR0aDoyMHB4OyBoZWlnaHQ6MjVweDsgcGFkZGluZy10b3A6NHB4OyBwYWRkaW5nLWxlZnQ6OXB4OyBmbG9hdDpsZWZ0OyBmb250LXNpemU6MS4zNzVyZW0gOyBtYXJnaW4tcmlnaHQ6MTBweDsgYm9yZGVyOjFweCBzb2xpZCAjMmMyYzJjOyBjb2xvcjojMmMyYzJjOyBiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmY7IH0gSDIuZGVmYXVsdCBJLmljb24ubXVsdGlMaW5lSDIsIEgyLmRlZmF1bHQgc3Bhbi5pY29uLm11bHRpTGluZUgyeyBtYXJnaW4tdG9wOjdweDsgfSBIMi5kZWZhdWx0IEkuaWNvbi5zaW5nbGVMaW5lSDIsIEgyLmRlZmF1bHQgc3Bhbi5pY29uLnNpbmdsZUxpbmVIMnsgbWFyZ2luLXRvcDowcHg7IH0gSDIuZGVmYXVsdCA+IERJVnsgZGlzcGxheTp0YWJsZS1yb3c7IH0gSDIuZGVmYXVsdCA+IERJViBESVY6bnRoLWNoaWxkKDEpeyBmb250LXdlaWdodDpib2xkOyB9IEgyLmRlZmF1bHQuY3JlZHNpaVVzZWRNaW5IZWlnaHQgLlRpdGxlVGV4dCB7IHdpZHRoOjgwJTsgfSBIMi5kZWZhdWx0ID4gRElWIERJVjpudGgtY2hpbGQoMil7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgY29sb3I6Izc1NzU3NTsgZm9udC1zaXplOjAuOTM4cmVtIDsgfSBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6MTMwMXB4KSB7IGJvZHkuaXNGdWxsV2lkdGhQYWdlLmlzUGFnZUZ1bGxXaWR0aEVuYWJsZWQgI2ZpcnN0U2xpZGVySW1nIC5wbGFjZWhvbGRlcnsgd2lkdGg6ODAwcHg7IGhlaWdodDo2MDBweDsgfSBib2R5LmlzRnVsbFdpZHRoUGFnZS5pc1BhZ2VGdWxsV2lkdGhFbmFibGVkICNmaXJzdFNsaWRlckltZyBJTUd7IG1heC13aWR0aDo4MDBweDsgbWF4LWhlaWdodDo2MDBweDsgfSBCT0RZLmlzRnVsbFdpZHRoUGFnZS5pc1BhZ2VGdWxsV2lkdGhFbmFibGVkIEgxLmRlZmF1bHQgeyB9IEJPRFkuaXNGdWxsV2lkdGhQYWdlLmlzUGFnZUZ1bGxXaWR0aEVuYWJsZWQgSDEuZGVmYXVsdCA+IERJViBESVY6bnRoLWNoaWxkKDIpeyBmb250LXNpemU6MS40MzhyZW0gOyB9IEJPRFkuaXNGdWxsV2lkdGhQYWdlLmlzUGFnZUZ1bGxXaWR0aEVuYWJsZWQgSDEuZGVmYXVsdCBJLmljb24sIEJPRFkuaXNGdWxsV2lkdGhQYWdlLmlzUGFnZUZ1bGxXaWR0aEVuYWJsZWQgSDEuZGVmYXVsdCBzcGFuLmljb24geyB3aWR0aDoyOHB4OyBoZWlnaHQ6MzVweDsgZm9udC1zaXplOjEuOTM4cmVtIDsgcGFkZGluZy1sZWZ0OjExcHg7IGJvcmRlci1yYWRpdXM6NDFweDsgfSBCT0RZLmlzRnVsbFdpZHRoUGFnZS5pc1BhZ2VGdWxsV2lkdGhFbmFibGVkIEgxLmRlZmF1bHQgSS5pY29uLm11bHRpTGluZUgxLCBCT0RZLmlzRnVsbFdpZHRoUGFnZS5pc1BhZ2VGdWxsV2lkdGhFbmFibGVkIEgxLmRlZmF1bHQgc3Bhbi5pY29uLm11bHRpTGluZUgxeyBtYXJnaW4tdG9wOjExcHg7IH0gQk9EWS5pc0Z1bGxXaWR0aFBhZ2UuaXNQYWdlRnVsbFdpZHRoRW5hYmxlZCBIMS5kZWZhdWx0IEkuaWNvbi5zaW5nbGVMaW5lSDEsIEJPRFkuaXNGdWxsV2lkdGhQYWdlLmlzUGFnZUZ1bGxXaWR0aEVuYWJsZWQgSDEuZGVmYXVsdCBzcGFuLmljb24uc2luZ2xlTGluZUgxeyBtYXJnaW4tdG9wOjFweDsgfSBCT0RZLmlzRnVsbFdpZHRoUGFnZS5pc1BhZ2VGdWxsV2lkdGhFbmFibGVkIEgyLmRlZmF1bHQgeyBmb250LXNpemU6MS44NzVyZW0gOyB9IEJPRFkuaXNGdWxsV2lkdGhQYWdlLmlzUGFnZUZ1bGxXaWR0aEVuYWJsZWQgSDIuZGVmYXVsdCA+IERJViBESVY6bnRoLWNoaWxkKDIpeyBmb250LXNpemU6MS4xODhyZW0gOyB9IEJPRFkuaXNGdWxsV2lkdGhQYWdlLmlzUGFnZUZ1bGxXaWR0aEVuYWJsZWQgSDIuZGVmYXVsdC5jcmVkc2lpVXNlZE1pbkhlaWdodCAuVGl0bGVUZXh0IHsgd2lkdGg6OTAlOyB9IEJPRFkuaXNGdWxsV2lkdGhQYWdlLmlzUGFnZUZ1bGxXaWR0aEVuYWJsZWQgSDIuZGVmYXVsdCBJLmljb24ubXVsdGlMaW5lSDIsIEJPRFkuaXNGdWxsV2lkdGhQYWdlLmlzUGFnZUZ1bGxXaWR0aEVuYWJsZWQgSDIuZGVmYXVsdCBzcGFuLmljb24ubXVsdGlMaW5lSDJ7IG1hcmdpbi10b3A6MTFweDsgfSBCT0RZLmlzRnVsbFdpZHRoUGFnZS5pc1BhZ2VGdWxsV2lkdGhFbmFibGVkIEgyLmRlZmF1bHQgSS5pY29uLnNpbmdsZUxpbmVIMiwgQk9EWS5pc0Z1bGxXaWR0aFBhZ2UuaXNQYWdlRnVsbFdpZHRoRW5hYmxlZCBIMi5kZWZhdWx0IHNwYW4uaWNvbi5zaW5nbGVMaW5lSDJ7IG1hcmdpbi10b3A6NHB4OyB9IH0gI2NpdHlUaXRsZSB7Y29sb3I6IzJjMmMyYzt9IC5tYWluX2xlZnRfYm94IHsgY29sb3I6IzJjMmMyYzsgfSAuZGl2VGFibGUgeyBkaXNwbGF5OnRhYmxlOyB9IC5kaXZUYWJsZS5hbGlnbi1jZW50ZXIgeyBtYXJnaW46MCBhdXRvOyB9IC5kaXZUYWJsZSAuZm9ybXNfYm94MjIsIC5kaXZUYWJsZSBmb3JtW25hbWU9InNlbmRFbWFpbEZvcm0iXSB7IHdpZHRoOjk0MHB4OyB9IC5kaXZUYWJsZSAudGV4dDMwIHsgd2lkdGg6MTAwJTsgfSAuc2VydmljZS10aXRsZSB7IG1hcmdpbi10b3A6MjBweDsgfSAuZnVsbFdpZHRoRm9ybSAuZm9ybXNfYm94MjIgeyB3aWR0aDoxMDAlOyBtYXJnaW4tbGVmdDowOyBtYXJnaW4tcmlnaHQ6MDsgYm94LXNpemluZzpib3JkZXItYm94OyB9IC5mdWxsV2lkdGhGb3JtIC50ZXh0MzAgeyB3aWR0aDoxMDAlOyB9IC5mb3JtLWdyb3VwIHsgbWFyZ2luLWJvdHRvbToxNXB4OyB9IC5pbmxpbmUtZm9ybS1ncm91cCB7IGRpc3BsYXk6aW5saW5lLWJsb2NrOyB9IC5mb3JtLWdyb3VwIGxhYmVsIHsgZGlzcGxheTppbmxpbmUtYmxvY2s7IG1heC13aWR0aDoxMDAlOyBtYXJnaW4tYm90dG9tOjVweDsgZm9udC13ZWlnaHQ6NzAwOyB9IC5kaXZTZWFyY2hNc2cgeyBmb250LXNpemU6MC45cmVtOyBtYXJnaW46MjBweCAwIDAgMDsgcGFkZGluZzoxNXB4OyBiYWNrZ3JvdW5kLWNvbG9yOiNmN2Y3Zjc7IGJvcmRlci1yYWRpdXM6NXB4OyBjbGVhcjpib3RoOyB9IC5jcmVkc2lpTmV3IHsgZGlzcGxheTpibG9jazsgbWF4LXdpZHRoOjQ3MHB4OyBtaW4td2lkdGg6MzAwcHg7IHdpZHRoOjEwMCU7IGN1cnNvcjpwb2ludGVyOyBvdmVyZmxvdzpoaWRkZW47IGhlaWdodDphdXRvOyBwb3NpdGlvbjphYnNvbHV0ZTsgdG9wOjA7IHJpZ2h0OjA7IH0gLmNyZWRzaWlOZXdWRFAgeyBkaXNwbGF5OmJsb2NrOyBtYXgtd2lkdGg6MzUwcHg7IG1pbi13aWR0aDozMDBweDsgd2lkdGg6MTAwJTsgY3Vyc29yOnBvaW50ZXI7IG92ZXJmbG93OmhpZGRlbjsgaGVpZ2h0OmF1dG87IHBvc2l0aW9uOnJlbGF0aXZlOyB0b3A6MDsgcmlnaHQ6MDsgfSAuY3JlZHNpaVVzZWRNaW5IZWlnaHQgeyBtaW4taGVpZ2h0OjEzMHB4OyB9IC5jcmVkc2lpRmluYW5jZSB7IGRpc3BsYXk6YmxvY2s7IG1heC13aWR0aDo5NjBweDsgbWluLXdpZHRoOjMwMHB4OyB3aWR0aDoxMDAlOyBjdXJzb3I6cG9pbnRlcjsgb3ZlcmZsb3c6aGlkZGVuOyBwb3NpdGlvbjpyZWxhdGl2ZTsgaGVpZ2h0OjEyNXB4OyBtYXJnaW4tdG9wOjE1cHg7IH0gLmNyZWRzaWlGaW5hbmNlIC5jcmVkc2lpLXdpZGdldC1jb250YWluZXJ7IG1heC13aWR0aDoxMDAlIWltcG9ydGFudDsgfSAuY3JlZHNpaUZpbmFuY2VNZW51IHsgZGlzcGxheTpibG9jazsgbWF4LXdpZHRoOjM0NXB4OyBtaW4td2lkdGg6MzAwcHg7IHdpZHRoOjEwMCU7IGN1cnNvcjpwb2ludGVyOyBvdmVyZmxvdzpoaWRkZW47IGhlaWdodDphdXRvOyBwb3NpdGlvbjpyZWxhdGl2ZTsgdG9wOjA7IHJpZ2h0OjA7IH0gLmNyZWRzaWlEaXYgLmNyZWRzaWlGaW5hbmNlTWVudSB7IG1heC13aWR0aDozNzVweDsgfSAuY3JlZHNpaUZpbmFuY2VNZW51IC5jcmVkc2lpLXdpZGdldHsgYm9yZGVyOjA7IH0gLnByb21vLWNhcmQgeyBwb3NpdGlvbjpyZWxhdGl2ZTsgaGVpZ2h0OmF1dG87IG1hcmdpbi1ib3R0b206MTBweDsgYmFja2dyb3VuZC1jb2xvcjojZjFmMWYxOyBwYWRkaW5nOjIwcHg7IG92ZXJmbG93OmhpZGRlbjsgfSAucHJvbW8tYm9keSAucGljX2JveDIgeyBtaW4taGVpZ2h0OjEzMHB4OyB9IC5wcm9tby1ob3ZlciB7IHBvc2l0aW9uOmFic29sdXRlOyBsZWZ0OjA7IHRvcDowOyB3aWR0aDoxMDAlOyBoZWlnaHQ6MTAwJTsgLXdlYmtpdC10cmFuc2l0aW9uOmFsbCAwLjNzOyAtbW96LXRyYW5zaXRpb246YWxsIDAuM3M7IC1tcy10cmFuc2l0aW9uOmFsbCAwLjNzOyAtby10cmFuc2l0aW9uOmFsbCAwLjNzOyB0cmFuc2l0aW9uOmFsbCAwLjNzOyBvcGFjaXR5OjA7IH0gLnByb21vLWJvZHk6aG92ZXIgLnByb21vLWhvdmVyIHsgb3BhY2l0eToxOyB9IC5wcm9tby1ib2R5OmhvdmVyIC5wcm9tby1pbmZvIHsgdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTUwJSkgc2NhbGUoMSwxKTsgfSAucHJvbW8tbWFzayB7IHBvc2l0aW9uOmFic29sdXRlOyB0b3A6MDsgbGVmdDowOyB3aWR0aDoxMDAlOyBoZWlnaHQ6MTAwJTsgYmFja2dyb3VuZDpyZ2JhKDAsMCwwLDAuNSk7IH0gLnByb21vLWluZm8geyBwb3NpdGlvbjphYnNvbHV0ZTsgbGVmdDowOyByaWdodDowOyB0b3A6NTAlOyB3aWR0aDozNSU7IG1hcmdpbjphdXRvOyAtd2Via2l0LWJvcmRlci1yYWRpdXM6MjVweDsgLW1vei1ib3JkZXItcmFkaXVzOjI1cHg7IGJvcmRlci1yYWRpdXM6MjVweDsgLXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMTUwJSkgc2NhbGUoMCwwKTsgLW1vei10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMTUwJSkgc2NhbGUoMCwwKTsgLW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xNTAlKSBzY2FsZSgwLDApOyAtby10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMTUwJSkgc2NhbGUoMCwwKTsgdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTE1MCUpIHNjYWxlKDAsMCk7IC13ZWJraXQtYm94LXNoYWRvdzowIDAgMTBweCA1cHggcmJnYSgwLDAsMCwwLjIpOyAtbW96LWJveC1zaGFkb3c6MCAwIDEwcHggNXB4IHJiZ2EoMCwwLDAsMC4yKTsgYm94LXNoYWRvdzowIDAgMTBweCA1cHggcmJnYSgwLDAsMCwwLjIpOyAtd2Via2l0LXRyYW5zaXRpb246YWxsIDAuM3M7IC1tb3otdHJhbnNpdGlvbjphbGwgMC4zczsgLW1zLXRyYW5zaXRpb246YWxsIDAuM3M7IC1vLXRyYW5zaXRpb246YWxsIDAuM3M7IHRyYW5zaXRpb246YWxsIDAuM3M7IH0gLmZvcm0tZW5kIHsgZGlzcGxheTpmbGV4OyBqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyOyBhbGlnbi1pdGVtczpjZW50ZXI7IH0gLmZvcm0tZW5kIC5idG4td3JhcHBlciB7IG1hcmdpbjowIGF1dG87IH0gLmZvcm0tZW5kIC5lbXB0eS1zcGFjZSB7IG1hcmdpbjphdXRvOyB9IC5mb3JtLWVuZCAucHJvbW8tYnRuIHsgcG9zaXRpb246aW5pdGlhbDsgfSAuZm9ybS1lbmQgLnByaW50IHsgbWFyZ2luLWxlZnQ6YXV0bzsgd2lkdGg6aW5pdGlhbDsgfSAucHJvbW8tYnRuIHsgcGFkZGluZzoxMHB4IDEwcHggMTBweCAxMHB4OyB3aWR0aDoxMDAlOyBiYWNrZ3JvdW5kLWNvbG9yOndoaXRlOyBib3JkZXI6MXB4IHNvbGlkOyB0ZXh0LXRyYW5zZm9ybTp2YXIoLS1jZXJ0LXR4dC10cmFuc2Zvcm0sIHZhcigtLXR4dC11cHBlcikpOyBmb250LXdlaWdodDpub3JtYWw7IHBvc2l0aW9uOmFic29sdXRlOyB0ZXh0LWFsaWduOmNlbnRlcjsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IGJvcmRlci1jb2xvcjp2YXIoLS1wcm9tby1idG4tdGV4dC1jb2xvcik7IGNvbG9yOnZhcigtLXByb21vLWJ0bi10ZXh0LWNvbG9yKTsgYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1wcm9tby1idG4tY29sb3IpOyBib3JkZXItcmFkaXVzOnZhcigtLXByb21vLWJ0bi1ib3JkZXItcmFkaXVzKTsgdHJhbnNpdGlvbjowLjI1czsgfSAucHJvbW9zIHsgYmFja2dyb3VuZDojZjFmMWYxOyBib3JkZXItcmFkaXVzOjVweDsgYm94LXNoYWRvdzowIDAgMTBweCAxcHggcmdiYSgwLDAsMCwwLjIpOyBwb3NpdGlvbjpyZWxhdGl2ZTsgY3Vyc29yOmRlZmF1bHQ7IG1hcmdpbjoxMnB4IDEwcHg7IGRpc3BsYXk6IGdyaWQ7IGdyaWQtcm93OnNwYW4gODsgZ3JpZC1jb2x1bW46c3BhbiAxOyBncmlkLXRlbXBsYXRlLWNvbHVtbnM6c3ViZ3JpZDsgZ3JpZC10ZW1wbGF0ZS1yb3dzOnN1YmdyaWQ7IH0gLnByb21vcyAuaGVhZGVyIHsgZ3JpZC1hcmVhOmhlYWRlcjsgfSAjc2VydmljZSAucHJvbW9zIC5wcm9tby1jb250ZW50eyBkaXNwbGF5OmJsb2NrOyBncmlkLXJvdzphdXRvOyB9IC5wcm9tb3MgLnByb21vLWNvbnRlbnQgeyBncmlkLWFyZWE6Y29udGVudDsgZGlzcGxheTpncmlkOyBncmlkLXRlbXBsYXRlLXJvd3M6c3ViZ3JpZDsgZ3JpZC1yb3c6MiAvIDc7IH0gLnByb21vcyAucHJvbW8tZm9vdGVyIHsgZ3JpZC1hcmVhOmZvb3RlcjsgcGFkZGluZzowIDE1cHggMTVweCAxNXB4OyB9IC5wcm9tb3M6aG92ZXIgLnByb21vLWJ0biwgLnByb21vLWJ0bjpob3ZlciB7IGNvbG9yOnZhcigtLXByb21vLWJ0bi1ob3Zlci10ZXh0LWNvbG9yKTsgYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1wcm9tby1idG4taG92ZXItYmctY29sb3IpOyBib3JkZXItY29sb3I6dmFyKC0tcHJvbW8tYnRuLWhvdmVyLXRleHQtY29sb3IpOyB9IC5wcm9tb3MgLnByb21vLWJ0biB7IHdpZHRoOmluaGVyaXQ7IHBvc2l0aW9uOmluaXRpYWw7IGRpc3BsYXk6YmxvY2s7IHBhZGRpbmc6MTVweCA0NXB4OyB9IC5wcm9tb3MucHJvbW8tc21hbGwgLnByb21vLWJ0biB7IHBhZGRpbmc6MTBweCAyNXB4OyB9IC5wcm9tby1icmVhayB7IGJvcmRlci10b3A6MXB4IHNvbGlkICNhYmFiYWI7IHBhZGRpbmctdG9wOjEwcHg7IG1hcmdpbjoxNXB4IDA7IH0gLnByb21vLWltYWdlLCAucHJvbW8tZGV0YWlscy1pbWFnZSB7IG92ZXJmbG93OmhpZGRlbjsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjVweCA1cHggMCAwOyAtbW96LWJvcmRlci1yYWRpdXM6NXB4IDVweCAwIDA7IGJvcmRlci1yYWRpdXM6NXB4IDVweCAwIDA7IGRpc3BsYXk6ZmxleDsgYWxpZ24taXRlbXM6Y2VudGVyOyBiYWNrZ3JvdW5kLXNpemU6Y29udGFpbjsgYmFja2dyb3VuZC1wb3NpdGlvbjpjZW50ZXI7IGJhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDsgYXNwZWN0LXJhdGlvOnZhcigtLXByb21vLWltZy1yYXRpbywgbm9uZSk7IH0gLnByb21vLWRldGFpbHMtaW1hZ2V7IHdpZHRoOjEwMCU7IH0gLnByb21vczpob3ZlciAucHJvbW8taW1hZ2UgaW1nIHsgLXdlYmtpdC10cmFuc2Zvcm06c2NhbGUoMS4xKTsgLW1vei10cmFuc2Zvcm06c2NhbGUoMS4xKTsgLW1zLXRyYW5zZm9ybTpzY2FsZSgxLjEpOyAtby10cmFuc2Zvcm06c2NhbGUoMS4xKTsgdHJhbnNmb3JtOnNjYWxlKDEuMSk7IH0gLnByb21vLWltYWdlIGltZyB7IG1heC13aWR0aDoxMDAlOyB0cmFuc2l0aW9uOnRyYW5zZm9ybSAxczsgZGlzcGxheTp0YWJsZS1jZWxsOyBtYXJnaW46MCBhdXRvOyB9IC5wcm9tby1ib2R5IHsgcGFkZGluZzoxNXB4OyBwb3NpdGlvbjpyZWxhdGl2ZTsgfSAucHJvbW8tYm9keS5ncmlkIHsgZGlzcGxheTpncmlkOyBoZWlnaHQ6MTAwJTsgZ3JpZC10ZW1wbGF0ZS1yb3dzOjFmciAzZnI7IH0gLnByb21vLWJvZHkuZ3JpZCAucHJvbW8tY2FwdGlvbi5oZWFkZXIgeyBkaXNwbGF5OmdyaWQ7IGdyaWQtdGVtcGxhdGUtcm93czoxZnIgYXV0bzsgfSAucHJvbW8tY29udGVudC5wYWRkZWQgeyBwYWRkaW5nOjE1cHg7IH0gLnByb21vLWRlc2MgeyBkaXNwbGF5Om5vbmU7IH0gLnByb21vLXRpdGxlIHsgZm9udC1zaXplOjEuNXJlbSA7IGRpc3BsYXk6YmxvY2s7IGZvbnQtd2VpZ2h0OjYwMDsgY29sb3I6IzMzMzMzMzsgbWluLWhlaWdodDo3OHB4OyB9IC5wcm9tby1tZWRpdW0gLnByb21vLXRpdGxlIHsgbWluLWhlaWdodDo4N3B4OyB9IC5wcm9tby1zbWFsbCAucHJvbW8tdGl0bGUgeyBmb250LXNpemU6MS4yNXJlbSA7IH0gLnByb21vLWNhcHRpb24geyBjb2xvcjojMzMzMzMzOyB9IC5wcm9tby1jYXB0aW9uOm5vdCg6bGFzdC1jaGlsZCkgeyBtYXJnaW4tYm90dG9tOjEwcHg7IH0gLnByb21vLW9mZmVyIC5wcm9tby10aXRsZSB7IG1pbi1oZWlnaHQ6MDsgfSAucHJvbW8tc3ViY2FwdGlvbiB7IG1hcmdpbi10b3A6NXB4OyBmb250LXNpemU6MC44NzVyZW07IH0gLnByb21vLXN1YmNhcHRpb24uc3ViaGVhZGluZy4tbWggeyBtaW4taGVpZ2h0OjMxcHg7IH0gLnByb21vLXN1YmNhcHRpb24uZGVzY3JpcHRpb24uLW1oIHsgbWluLWhlaWdodDo0OHB4OyB9IC5wcm9tby1kaXNsY2FpbWVyIHsgZm9udC1zaXplOjAuNzVyZW07IH0gLnByb21vLWxpbmtzIHsgZGlzcGxheTpmbGV4OyBqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjsgYWxpZ24taXRlbXM6Y2VudGVyOyB9IC5wcm9tby1saW5rLWl0ZW0gLnByaW50IHsgd2lkdGg6YXV0bzsgdGV4dC1hbGlnbjpyaWdodDsgfSAucHJvbW9zLWNvbnRhaW5lci5ncmlkIHsgcG9zaXRpb246cmVsYXRpdmU7IGRpc3BsYXk6Z3JpZDsgfSAucHJvbW9zLWNvbnRhaW5lciAuZmEtYXJyb3ctZG93bi10by1saW5lIHsgZm9udC1zaXplOjJyZW07IGNvbG9yOiMwMDAwMDA7IHBvc2l0aW9uOmFic29sdXRlOyBsZWZ0OjUwJTsgdG9wOjUwJTsgYmFja2dyb3VuZDojZmZmZmZmOyBwYWRkaW5nOjZweDsgYm9yZGVyLXJhZGl1czo1cHg7IGJveC1zaGFkb3c6MCAwIDEwcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4yKTsgdHJhbnNpdGlvbjphbGwgMC4yNXMgZWFzZS1vdXQ7IH0gLnByb21vcy1jb250YWluZXIuZ3JpZC5wcm9tby1tZWRpdW0geyBncmlkLXRlbXBsYXRlLWNvbHVtbnM6cmVwZWF0KDIsIDFmcik7IH0gLnByb21vcy1jb250YWluZXIuZ3JpZC5wcm9tby1zbWFsbCB7IGdyaWQtdGVtcGxhdGUtY29sdW1uczpyZXBlYXQoMywgMWZyKTsgfSAucHJvbW9zLWNvbnRhaW5lci5ncmlkLmNvbGxhcHNlIHsgaGVpZ2h0OjE0MnB4OyBvdmVyZmxvdzpoaWRkZW47IH0gLnByb21vcy1jb250YWluZXIuZ3JpZC5jb2xsYXBzZTo6YmVmb3JlIHsgY29udGVudDoiIjsgcG9zaXRpb246YWJzb2x1dGU7IGhlaWdodDoxMDAlOyB6LWluZGV4OjEwOyBsZWZ0OjEwcHg7IHJpZ2h0OjEwcHg7IHRvcDoxMHB4OyBib3JkZXItcmFkaXVzOjVweCA1cHggMCAwOyBiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCgwZGVnLCByZ2IoMCAwIDAgLyAzMCUpIDAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDApIDEwMCUpIH0gLnByb21vcy1jb250YWluZXIuZ3JpZC5jb2xsYXBzZTpob3Zlcjo6YmVmb3JlIHsgYmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQoMGRlZywgcmdiKDEzOCAxMzggMTM4IC8gMzAlKSAwJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwKSAxMDAlKTsgY3Vyc29yOnBvaW50ZXI7IH0gLnByb21vcy1jb250YWluZXIuZ3JpZC5jb2xsYXBzZTpob3ZlciAuZmEtYXJyb3ctZG93bi10by1saW5lIHsgdG9wOjU1JTsgY29sb3I6IzgzODM4MzsgfSAuYmFubmVyLWZvcm0geyBwb3NpdGlvbjpyZWxhdGl2ZTsgZGlzcGxheTp0YWJsZTsgbWFyZ2luOjAgYXV0bzsgfSAuYmFubmVyLWZvcm0gLk1haW5Cb3hMYXllciB7IHBvc2l0aW9uOmFic29sdXRlOyB6LWluZGV4OjEwOyBsZWZ0OjA7IHJpZ2h0OjA7IHRvcDowOyBkaXNwbGF5OnRhYmxlLWNlbGw7IGhlaWdodDoxMDAlOyB9IC5iYW5uZXItZm9ybS1ib3ggeyAtd2Via2l0LWJvcmRlci1yYWRpdXM6NXB4OyAtbW96LWJvcmRlci1yYWRpdXM6NXB4OyBib3JkZXItcmFkaXVzOjVweDsgcG9zaXRpb246YWJzb2x1dGU7IHJpZ2h0OjA7IG1heC13aWR0aDozNTBweDsgd2lkdGg6MTAwJTsgbWFyZ2luLXRvcDozNXB4OyB9IEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDoxMzAxcHgpIHsgLk1haW5Cb3hMYXllciAuYmFubmVyLWZvcm0tYm94IHsgdG9wOjUwJTsgLXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlWSgtNTAlKTsgLW1vei10cmFuc2Zvcm06dHJhbnNsYXRlWSgtNTAlKTsgLW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC01MCUpOyAtby10cmFuc2Zvcm06dHJhbnNsYXRlWSgtNTAlKTsgdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTUwJSk7IG1hcmdpbi10b3A6MDsgfSB9IEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDoxMzAxcHgpIHsgLmJhbm5lci1mb3JtIC5iYW5uZXItZm9ybS1ib3ggeyBwYWRkaW5nOjE1cHg7IG1heC13aWR0aDoyNzBweDsgZm9udC1zaXplOjAuODEzcmVtIDsgfSAuYmFubmVyLWZvcm0gI2Jhbm5lckZvcm0gLmZvcm0tY29udHJvbCB7IHBhZGRpbmc6NHB4IDhweDsgaGVpZ2h0OjMwcHg7IG1hcmdpbi1ib3R0b206MTJweDsgfSAuYmFubmVyLWZvcm0gLmJhbm5lci1mb3JtLXRpdGxlIHsgZm9udC1zaXplOjE1cHQ7IH0gLmJhbm5lci1mb3JtIC5iYW5uZXItZm9ybS1zdWJ0aXRsZSB7IGZvbnQtc2l6ZToxMXB0OyB9IC5iYW5uZXItZm9ybSAuYnRuLmJhbm5lci1idG4geyBwYWRkaW5nOjRweCAxMnB4OyB9IH0gLm90aGVyTG9nb01lbnVDb250YWluZXJ7IGZsb2F0OmxlZnQ7IH0gLm90aGVyTG9nb01lbnVDb250YWluZXJSaWdodHsgZmxvYXQ6cmlnaHQ7IH0gLm90aGVyTG9nb01lbnVJbWFnZXsgbWF4LXdpZHRoOjI1MHB4OyBtYXgtaGVpZ2h0OjEwMHB4OyB9IC5jdGFib3gtLXdyYXBwZXIgeyBjbGVhcjpib3RoOyBwYWRkaW5nOjAuNzVyZW0gMDsgYmFja2dyb3VuZDojZmZmZmZmOyB9IC5jdGFib3gtLXRhYmxlIHsgd2lkdGg6ODUlIWltcG9ydGFudDsgbWF4LXdpZHRoOjEyMDBweDsgbWFyZ2luOmF1dG87IGJvcmRlci1zcGFjaW5nOjFyZW07IGJvcmRlci1jb2xsYXBzZTp1bnNldDsgfSAuY3RhYm94LS1jZWxsIHsgd2lkdGg6MjUlOyB0cmFuc2l0aW9uOmFsbCAwLjJzIGxpbmVhcjsgfSAuY3RhYm94LS1jZWxsOm5vdChbb25jbGljaz0nJ10pOmhvdmVyIHsgY3Vyc29yOnBvaW50ZXI7IH0gLmN0YWJveC0tY2VsbC5jdGFib3gtLWNlbGxfXzEgeyB3aWR0aDoxMDAlOyB9IC5jdGFib3gtLWNlbGwuY3RhYm94LS1jZWxsX18yIHsgd2lkdGg6NDgwcHg7IH0gLmN0YWJveC0tY2VsbC5jdGFib3gtLWNlbGxfXzMgeyB3aWR0aDozMyU7IH0gLmN0YWJveC0tY29udGFpbmVyIHsgcGFkZGluZzoxcmVtOyB9IC5jdGFib3gtLWNvbnRhaW5lciAuY3RhYm94LS1pY29uIHsgZm9udC1zaXplOjEuNTYzcmVtIDsgfSAuY3RhYm94LS1jb250YWluZXIgLmN0YWJveC0taWNvbi5jdGFib3gtLWljb25fX3RvcCB7IHBhZGRpbmctYm90dG9tOjEwcHg7IH0gLmN0YWJveC0tY29udGFpbmVyIC5jdGFib3gtLWljb24uY3RhYm94LS1pY29uX19sZWZ0IHsgZmxvYXQ6bGVmdDsgfSAuY3RhYm94LS1pY29uX19sZWZ0IH4gLmN0YWJveC0tdGl0bGUsIC5jdGFib3gtLWljb25fX2xlZnQgfiAuY3RhYm94LS1kZXNjcmlwdGlvbiwgLmN0YWJveC0taWNvbl9fbGVmdCB+IC5jdGFib3gtLWJ1dHRvbiB7IG1hcmdpbi1sZWZ0OjM1cHg7IH0gLmN0YWJveC0tY29udGFpbmVyIC5jdGFib3gtLXRpdGxlIHsgZm9udC13ZWlnaHQ6Ym9sZDsgZm9udC1zaXplOjEuNTYzcmVtIDsgfSAuY3RhYm94LS1jb250YWluZXIgLmN0YWJveC0tZGVzY3JpcHRpb24geyBtYXJnaW4tdG9wOjEwcHg7IH0gLmN0YWJveC0tY29udGFpbmVyIC5jdGFib3gtLWJ1dHRvbiB7IG1hcmdpbi10b3A6MjBweDsgfSAucGFyYWxsYXgtc2VjdGlvbiB7IGJhY2tncm91bmQtcG9zaXRpb246Y2VudGVyOyBiYWNrZ3JvdW5kLXNpemU6Y292ZXI7IGJhY2tncm91bmQtYXR0YWNobWVudDpsb2NhbDsgcGFkZGluZzoyNXB4IDA7IC13ZWJraXQtdHJhbnNpdGlvbjphbGwgMC4zczsgLW1vei10cmFuc2l0aW9uOmFsbCAwLjNzOyAtbXMtdHJhbnNpdGlvbjphbGwgMC4zczsgLW8tdHJhbnNpdGlvbjphbGwgMC4zczsgdHJhbnNpdGlvbjphbGwgMC4zczsgYmFja2dyb3VuZC1jb2xvcjojMDAwOyB9IC5wYXJhbGxheC1zZWN0aW9uIC5jb250YWluZXIgeyB3aWR0aDo2MCU7IHBhZGRpbmctcmlnaHQ6MTVweDsgcGFkZGluZy1sZWZ0OjE1cHg7IG1hcmdpbi1yaWdodDphdXRvOyBtYXJnaW4tbGVmdDphdXRvOyB9IC5wYXJhbGxheC1zZWN0aW9uIC5jb250YWluZXIubGFyZ2UgeyB3aWR0aDo4MCU7IGJveC1zaXppbmc6Ym9yZGVyLWJveDsgfSAucGFyYWxsYXgtY29udGVudCB7IHdpZHRoOjQ1JTsgcGFkZGluZzo0MHB4IDQwcHg7IGJhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwwLjcpOyBjb2xvcjojZmZmOyB9IC5wYXJhbGxheC1jb250ZW50IC5wYXJhbGxheC1jb250ZW50LWJ1c2luZXNzLXRpdGxlIHsgZm9udC1zaXplOjEuNDM4cmVtICFpbXBvcnRhbnQ7IGZvbnQtd2VpZ2h0Om5vcm1hbCAhaW1wb3J0YW50OyBtYXJnaW4tYm90dG9tOjIwcHg7IGNvbG9yOmluaGVyaXQ7IH0gLnBhcmFsbGF4LWNvbnRlbnQgLnBhcmFsbGF4LWNvbnRlbnQtYnVzaW5lc3MtZGVzYyB7IGZvbnQtc2l6ZTowLjkzOHJlbSAhaW1wb3J0YW50OyB0ZXh0LWFsaWduOmxlZnQ7IGNvbG9yOmluaGVyaXQ7IH0gLnBhcmFsbGF4LWNvbnRlbnQgLnBhcmFsbGF4LWNvbnRlbnQtYnVzaW5lc3MtZGVzYyBheyBjb2xvcjppbmhlcml0OyB9IEBtZWRpYSAobWF4LXdpZHRoOjEzMzBweCkgeyAucGFyYWxsYXgtc2VjdGlvbiAuY29udGFpbmVyIHsgd2lkdGg6ODAlOyB9IC5wYXJhbGxheC1zZWN0aW9uIC5jb250YWluZXIubGFyZ2UgeyB3aWR0aDoxMDAlOyB9IH0gLnNyLW9ubHkgeyBwb3NpdGlvbjphYnNvbHV0ZSAhaW1wb3J0YW50OyB3aWR0aDoxcHggIWltcG9ydGFudDsgaGVpZ2h0OjFweCAhaW1wb3J0YW50OyBwYWRkaW5nOjAgIWltcG9ydGFudDsgbWFyZ2luOi0xcHggIWltcG9ydGFudDsgb3ZlcmZsb3c6aGlkZGVuICFpbXBvcnRhbnQ7IGNsaXA6cmVjdCgwLCAwLCAwLCAwKSAhaW1wb3J0YW50OyBib3JkZXI6MCAhaW1wb3J0YW50OyB9IC5ibnBfcHVsbG91dF9pbWd7IG1heC13aWR0aDoxMHJlbTsgbWFyZ2luOmF1dG87IH0gLmJucF9wdWxsb3V0X2NvbF9zZXBhcmF0b3J7IHdpZHRoOjFweDsgYmFja2dyb3VuZC1jb2xvcjojRUJFQkVCOyBoZWlnaHQ6OThweDsgcG9zaXRpb246YWJzb2x1dGU7IHRvcDoyMHB4OyB9IC5ibnBfcHVsbG91dF9taWRfY29seyB3aWR0aDo3MCU7IGRpc3BsYXk6dGFibGUtY2VsbDsgfSAuYm5wX3B1bGxvdXRfbWlkX2NvbF9yaWdodHsgYm9yZGVyLWxlZnQtd2lkdGg6MXB4OyB9IC5ibnBfcHVsbG91dF9taWRfY29sX3NlcGFyYXRvcnsgd2lkdGg6MXB4OyBiYWNrZ3JvdW5kLWNvbG9yOiNFQkVCRUI7IGhlaWdodDo0MHB4OyBwb3NpdGlvbjphYnNvbHV0ZTsgdG9wOjc4cHg7IH0gLmJucF9wdWxsb3V0X21pZF9jb2xfcHJpY2Vfd2l0aF90aXRsZXsgZGlzcGxheTpmbGV4OyBmbGV4LWRpcmVjdGlvbjpjb2x1bW47IHRleHQtYWxpZ246Y2VudGVyOyB3aWR0aDo0NSU7IH0gLmJucF9wdWxsb3V0X21pZF9jb2xfcHJpY2V7IGZvbnQtc2l6ZToycmVtIDsgZm9udC13ZWlnaHQ6Ym9sZDsgfSBAbWVkaWEgKG1heC13aWR0aDoxMzMwcHgpIHsgLmJucF9wdWxsb3V0X21pZF9jb2wgeyB3aWR0aDo1MCU7IH0gLmJucF9wdWxsb3V0X21pZF9jb2xfcHJpY2Vfd2l0aF90aXRsZSB7IHdpZHRoOjEwMCU7IH0gLmJucF9wdWxsb3V0X2NvbF9zZXBhcmF0b3IgeyBoZWlnaHQ6MTY0cHg7IH0gLmJucF9wdWxsb3V0X21pZF9jb2xfc2VwYXJhdG9yIHsgaGVpZ2h0OjEwNnB4OyB9IH0gLnB1bGxvdXQtY29udGVudCAuY3JlZGl0U2NvcmVQdWxsb3V0SW1neyBoZWlnaHQ6MTEwcHg7IGJhY2tncm91bmQtY29sb3I6IzMzNGM5NjsgfSAucHVsbG91dC1jb250ZW50IC5jcmVkaXRTY29yZVB1bGxvdXRCdXR0b257IGJhY2tncm91bmQ6IzQxN0YxQSAhaW1wb3J0YW50OyBib3JkZXItcmFkaXVzOjNweDsgY29sb3I6I2ZmZmZmZjsgcGFkZGluZzo3cHggMjBweCA3cHg7IGZvbnQtc2l6ZToxcmVtIDsgZm9udC13ZWlnaHQ6NzAwOyB0ZXh0LXNoYWRvdzowLjRweCAwOyB9IC5wdWxsb3V0LWNvbnRlbnQgLmNyZWRpdFNjb3JlUHVsbG91dENvbnRlbnR7IGNvbG9yOiMwMDAwMDA7IGZvbnQtc2l6ZToxLjU2M3JlbSA7IGZvbnQtd2VpZ2h0OjcwMDsgbWFyZ2luLWJvdHRvbTotMTVweDsgfSAucHVsbG91dC1jb250ZW50IC5jcmVkaXRTY29yZVB1bGxvdXRDb250ZW50U2NvcmV7IGNvbG9yOiMwMDAwMDA7IGZvbnQtd2VpZ2h0OjcwMDsgZm9udC1zaXplOjEuODc1cmVtIDsgdGV4dC1zaGFkb3c6MnB4IDA7IH0gLnB1bGxvdXQtY29udGVudCAuY3JlZGl0U2NvcmVQdWxsb3V0Q29udGVudEZyZWV7IGNvbG9yOiM0MTdGMUE7IGZvbnQtd2VpZ2h0OjcwMDsgZm9udC1zaXplOjIuODEzcmVtIDsgdGV4dC1zaGFkb3c6MnB4IDA7IH0gLmlzUGFnZUZ1bGxXaWR0aEVuYWJsZWQuaXNGdWxsV2lkdGhQYWdlIC5wdWxsb3V0LWNvbnRlbnQgLmNyZWRpdFNjb3JlUHVsbG91dE1heFdpZHRoeyBtYXgtd2lkdGg6MTIwMHB4OyB9IC5wdWxsb3V0LWNvbnRlbnQgLmNyZWRpdFNjb3JlUHVsbG91dE1heFdpZHRoeyBtYXgtd2lkdGg6OTYwcHg7IH0gLnNsaWRlci1tYWluIGltZ3sgdHJhbnNpdGlvbjp0cmFuc2Zvcm0gMC41cyBlYXNlLW91dCB9IC5jb21tdW5pY2F0aW9uUHJlZnsgcGFkZGluZzp2YXIoLS1pbnB1dC1wYWRkaW5nKTsgYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1pbnB1dC1iZy1jb2xvcik7IGJvcmRlci1yYWRpdXM6dmFyKC0taW5wdXQtcmFkaXVzKTsgYm9yZGVyOjFweCBzb2xpZCB2YXIoLS1pbnB1dC1ib3JkZXItY29sb3IpOyBjb2xvcjojMjEyNTI5OyBmb250LXNpemU6dmFyKC0taW5wdXQtZm9udC1zaXplKTsgbGluZS1oZWlnaHQ6dmFyKC0taW5wdXQtbGluZS1oZWlnaHQpOyBmb250LXdlaWdodDo0MDA7IHdpZHRoOjUwJSAhaW1wb3J0YW50OyB9IC5kMmNmb3JtIHsgLS1sYWJlbC1yZXF1aXJlZC1zeW1ib2w6IioiOyAtLWxhYmVsLXJlcXVpcmVkLWNvbG9yOiNGRjAwMDA7IC0taW5wdXQtcGFkZGluZzp2YXIoLS1zLTEpIHZhcigtLXMxKTsgLS1pbnB1dC1iZy1jb2xvcjp2YXIoLS13aGl0ZSk7IC0taW5wdXQtYm9yZGVyLWNvbG9yOnZhcigtLW1pZC1ncmF5KTsgLS1pbnB1dC1yYWRpdXM6dmFyKC0tcy02KTsgLS1pbnB1dC1mb250LXNpemU6dmFyKC0tZnMwKTsgLS1pbnB1dC1saW5lLWhlaWdodDp2YXIoLS1mczIpOyB9IC5tYWluRGl2QWRqdXN0SGVhZGVyIC51cF9tZW51IC5TMTAwUGVyY2VudFdpZHRoIHsgYmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDsgfSAudXBfbWVudS5maXhlZCAuUzEwMFBlcmNlbnRXaWR0aHsgYmFja2dyb3VuZC1jb2xvcjpyZ2IoMjU1LDI1NSwyNTUpIH0gLm1haW5EaXZBZGp1c3RIZWFkZXIgLnYtY2FyZCAuYWRkcmVzcy1taWRkbGUgLm9yZywgLm1haW5EaXZBZGp1c3RIZWFkZXIgLnYtY2FyZCAuYWRkcmVzcy1taWRkbGUgLnN0cmVldC1hZGRyZXNzLCAubWFpbkRpdkFkanVzdEhlYWRlciAudi1jYXJkIC5hZGRyZXNzLW1pZGRsZSAubG9jYWxpdHksIC5tYWluRGl2QWRqdXN0SGVhZGVyIC52LWNhcmQgLmFkZHJlc3MtbWlkZGxlIC5yZWdpb24sIC5tYWluRGl2QWRqdXN0SGVhZGVyIC52LWNhcmQgLmFkZHJlc3MtbWlkZGxlIC5wb3N0YWwtY29kZSwgLm1haW5EaXZBZGp1c3RIZWFkZXIgLnYtY2FyZCAuYWRkcmVzcy1taWRkbGUgLmFkZHJlc3Mtc2VwLCAubWFpbkRpdkFkanVzdEhlYWRlciAudi1jYXJkIC5hZGRyZXNzLW1pZGRsZSAucGhvbmUtdHlwZS1sYWJlbCwgLm1haW5EaXZBZGp1c3RIZWFkZXIgLnYtY2FyZCAuYWRkcmVzcy1taWRkbGUgLmV4dGVuZGVkUGhvbmVUcmlnZ2VyLCAubWFpbkRpdkFkanVzdEhlYWRlciAudi1jYXJkIC5hZGRyZXNzLW1pZGRsZSAucGhvbmUtbGluayB7IGNvbG9yOnZhcigtLWhvbWVwYWdlLWhlYWRlci1pdGVtLWNvbG9yKSAhaW1wb3J0YW50OyB9IC5tYWluRGl2QWRqdXN0SGVhZGVyIC52LWNhcmQgLmFkZHJlc3MtbWlkZGxlIC5kZWFsZXJNYXBMaW5rIHN2ZyB7IGZpbGw6dmFyKC0taG9tZXBhZ2UtaGVhZGVyLWl0ZW0tY29sb3IpOyB9IC5tYWluRGl2QWRqdXN0SGVhZGVyIC52LWNhcmQgLmFkZHJlc3MtbWlkZGxlIC5mYS1jYXJldC1kb3duOjpiZWZvcmUsIC5tYWluRGl2QWRqdXN0SGVhZGVyIC52LWNhcmQgLmFkZHJlc3MtbWlkZGxlIC5mYS1waG9uZTo6YmVmb3JlIHsgY29sb3I6dmFyKC0taG9tZXBhZ2UtaGVhZGVyLWl0ZW0tY29sb3IpOyB9IC5tYWluRGl2QWRqdXN0SGVhZGVyIC51cF9tZW51IC5TMTAwUGVyY2VudFdpZHRoID4gdWwgPiBsaSA+IGEudG9wX2xpbmsgeyBjb2xvcjp2YXIoLS1ob21lcGFnZS1tZW51LWl0ZW0tY29sb3IpOyB9IC5tYWluRGl2QWRqdXN0SGVhZGVyIC5sYW5ndWFnZUJhciAuZ1JhdGluZy1pY29uI2dSYXRpbmcsIC5tYWluRGl2QWRqdXN0SGVhZGVyIC5sYW5ndWFnZUJhciAuZGVza3RvcF9sYW5nX2J1dHRvbi5hY3RpdmUsIC5tYWluRGl2QWRqdXN0SGVhZGVyIC5sYW5ndWFnZUJhciBhLmRlc2t0b3BfbGFuZ19idXR0b246aG92ZXIgeyBiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50OyBjb2xvcjp2YXIoLS1ob21lcGFnZS1oZWFkZXItaXRlbS1jb2xvcik7IGJvcmRlcjoxcHggc29saWQgdmFyKC0taG9tZXBhZ2UtaGVhZGVyLWl0ZW0tY29sb3IpOyB9IC5tYWluRGl2QWRqdXN0SGVhZGVyIC5sYW5ndWFnZUJhciAuZGVza3RvcF9sYW5nX2J1dHRvbiB7IGNvbG9yOiMwMDAwMDA7IGJhY2tncm91bmQ6cmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KTsgYm9yZGVyOjFweCBzb2xpZCB2YXIoLS1ob21lcGFnZS1oZWFkZXItaXRlbS1jb2xvcik7IH0gLm1haW5EaXZBZGp1c3RIZWFkZXIgLmxhbmd1YWdlQmFyIGRpdi5kMmMtZmF2cy1uYXYtd3JhcHBlciBpLmZhciB7IGNvbG9yOnZhcigtLWhvbWVwYWdlLWhlYWRlci1pdGVtLWNvbG9yKTsgfSAubWFpbkRpdkFkanVzdEhlYWRlciAubGFuZ3VhZ2VCYXIgLnNlcnZpY2UtaGVhZGVyLWZvcm0gLmJ0biB7IGJvcmRlci1jb2xvcjp2YXIoLS1ob21lcGFnZS1oZWFkZXItaXRlbS1jb2xvcik7IH0gLmxhbmd1YWdlQmFyIC5nUmF0aW5nLWljb24jZ1JhdGluZywgLmxhbmd1YWdlQmFyICNzZXJ2aWNlX2FwcG9pbnRfaGVhZGVyID4gYSwgLmxhbmd1YWdlQmFyIC5kZXNrdG9wX2xhbmdfYnV0dG9uIHsgYm9yZGVyLXJhZGl1czp2YXIoLS1wcm9tby1idG4tYm9yZGVyLXJhZGl1cykgIWltcG9ydGFudDsgfSAuZ1JhdGluZy1pY29uI2dSYXRpbmcgLnJhdGluZyB7IGRpc3BsYXk6ZmxleDsgYWxpZ24taXRlbXM6Y2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyOyBsaW5lLWhlaWdodDoxOyB9IC5tYXJnaW4tYm90dG9tLS00cHggeyBtYXJnaW4tYm90dG9tOi00cHg7IH0gLm1haW5EaXZBZGp1c3RIZWFkZXIgLmxhbmd1YWdlQmFyLCAubWFpbkRpdkFkanVzdEhlYWRlciAudi1jYXJkLCAubWFpbkRpdkFkanVzdEhlYWRlciAuYmFubmVyLXNlYXJjaC1ib3gtd3JhcHBlciB7IHotaW5kZXg6MjsgcG9zaXRpb246cmVsYXRpdmUgfQovKiogL2Nzcy9wcm9fZHJvcGRvd25fNC5jc3MgKiovCi5pZE5hdjEgeyBwYWRkaW5nOjA7IGxpc3Qtc3R5bGU6bm9uZTsgaGVpZ2h0OjI4cHg7IGZvbnQtc2l6ZTowLjc1cmVtIDsgZm9udC1zdHlsZTpub3JtYWw7IGZvbnQtd2VpZ2h0OmJvbGQ7IHRleHQtdHJhbnNmb3JtOnVwcGVyY2FzZTsgY29sb3I6I0Y5RjlGOTsgfSAuaWROYXYxIGxpLnRvcCB7ZGlzcGxheTpibG9jazsgZmxvYXQ6bGVmdDsgaGVpZ2h0OjI4cHg7IHBhZGRpbmc6MDt9IC5pZE5hdjEgbGkudG9wMSB7ZGlzcGxheTpibG9jazsgZmxvYXQ6bGVmdDsgaGVpZ2h0OjI4cHg7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvYmxfaG92ZXIucG5nKSBsZWZ0IHRvcCByZXBlYXQteDsgcGFkZGluZzowOyBwYWRkaW5nLXJpZ2h0OjJweDsgZm9udC1zaXplOjAuODEzcmVtIDsgdGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlOyBjb2xvcjojZmZmOyB0ZXh0LWFsaWduOmNlbnRlcjsgLW1vei1ib3JkZXItcmFkaXVzOjNweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjNweDsgYm9yZGVyLXJhZGl1czozcHg7IC1raHRtbC1ib3JkZXItcmFkaXVzOjNweDt9IC5pZE5hdjEgbGkgYS50b3BfbGluayB7IGRpc3BsYXk6YmxvY2s7IGZsb2F0OmxlZnQ7IGhlaWdodDoyOHB4OyBsaW5lLWhlaWdodDozMHB4OyB0ZXh0LWRlY29yYXRpb246bm9uZTsgZm9udC1zaXplOjAuODEzcmVtIDsgdGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlOyBmb250LXdlaWdodDpub3JtYWw7IHBhZGRpbmc6MHB4IDEycHggMHB4IDEycHg7IGN1cnNvcjpwb2ludGVyOyAtbW96LWJvcmRlci1yYWRpdXM6M3B4OyAtd2Via2l0LWJvcmRlci1yYWRpdXM6M3B4OyBib3JkZXItcmFkaXVzOjNweDsgLWtodG1sLWJvcmRlci1yYWRpdXM6M3B4OyBiYWNrZ3JvdW5kOiNmZmZmZmY7IGNvbG9yOiMyYzJjMmM7IH0gLmlkTmF2MSBsaSBhLnRvcF9saW5rOmhvdmVyIHsgLW1vei1ib3JkZXItcmFkaXVzOjNweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjNweDsgYm9yZGVyLXJhZGl1czozcHg7IGZpbHRlcjpicmlnaHRuZXNzKDk1JSk7IH0gLmlkTmF2MSBsaSBhLnRvcF9saW5rMSB7ZGlzcGxheTpibG9jazsgZmxvYXQ6bGVmdDsgaGVpZ2h0OjI4cHg7IGxpbmUtaGVpZ2h0OjMwcHg7IGNvbG9yOiNmZWZlZmU7IHRleHQtZGVjb3JhdGlvbjpub25lOyBmb250LXNpemU6MC44MTNyZW0gOyB0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgcGFkZGluZzowcHggMTJweCAwcHggMTJweDsgY3Vyc29yOnBvaW50ZXI7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvYmxfaG92ZXIucG5nKSBsZWZ0IHRvcCByZXBlYXQteDsgLW1vei1ib3JkZXItcmFkaXVzOjNweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjNweDsgYm9yZGVyLXJhZGl1czozcHg7IC1raHRtbC1ib3JkZXItcmFkaXVzOjNweDt9IC5pZE5hdjIgeyBwYWRkaW5nOjA7IGxpc3Qtc3R5bGU6bm9uZTsgaGVpZ2h0OjI4cHg7IGZvbnQtc2l6ZTowLjc1cmVtIDsgZm9udC1zdHlsZTpub3JtYWw7IGZvbnQtd2VpZ2h0OmJvbGQ7IHRleHQtdHJhbnNmb3JtOnVwcGVyY2FzZTsgY29sb3I6I0Y5RjlGOTsgfSAuaWROYXYyIGxpLnRvcCB7ZGlzcGxheTpibG9jazsgZmxvYXQ6bGVmdDsgaGVpZ2h0OjI4cHg7IHBhZGRpbmc6MDsgcGFkZGluZy1yaWdodDoycHg7fSAuaWROYXYyIGxpLnRvcDEge2Rpc3BsYXk6YmxvY2s7IGZsb2F0OmxlZnQ7IGhlaWdodDoyOHB4OyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL2JsX2hvdmVyMi5wbmcpIGxlZnQgdG9wIHJlcGVhdC14OyBwYWRkaW5nOjA7IHBhZGRpbmctcmlnaHQ6MnB4OyBmb250LXNpemU6MC44MTNyZW0gOyB0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7IGNvbG9yOiNmZmY7IHRleHQtYWxpZ246Y2VudGVyOyAtbW96LWJvcmRlci1yYWRpdXM6M3B4OyAtd2Via2l0LWJvcmRlci1yYWRpdXM6M3B4OyBib3JkZXItcmFkaXVzOjNweDsgLWtodG1sLWJvcmRlci1yYWRpdXM6M3B4O30gLmlkTmF2MiBsaSBhLnRvcF9saW5rIHtkaXNwbGF5OmJsb2NrOyBmbG9hdDpsZWZ0OyBoZWlnaHQ6MjhweDsgbGluZS1oZWlnaHQ6MzBweDsgY29sb3I6I2ZlZmVmZTsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IGZvbnQtc2l6ZTowLjgxM3JlbSA7IHRleHQtdHJhbnNmb3JtOnVwcGVyY2FzZTsgZm9udC13ZWlnaHQ6bm9ybWFsOyBwYWRkaW5nOjBweCAxMnB4IDBweCAxMnB4OyBjdXJzb3I6cG9pbnRlcjsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9ibF9iZzIucG5nKSBsZWZ0IHRvcCByZXBlYXQteDsgLW1vei1ib3JkZXItcmFkaXVzOjNweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjNweDsgYm9yZGVyLXJhZGl1czozcHg7IC1raHRtbC1ib3JkZXItcmFkaXVzOjNweDt9IC5pZE5hdjIgbGkgYS50b3BfbGluazpob3ZlciB7Y29sb3I6I2ZmZjsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9ibF9ob3ZlcjIucG5nKSBsZWZ0IHRvcCByZXBlYXQteDsgLW1vei1ib3JkZXItcmFkaXVzOjNweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjNweDsgYm9yZGVyLXJhZGl1czozcHg7IC1raHRtbC1ib3JkZXItcmFkaXVzOjNweDt9IC5pZE5hdjIgbGkgYS50b3BfbGluazEge2Rpc3BsYXk6YmxvY2s7IGZsb2F0OmxlZnQ7IGhlaWdodDoyOHB4OyBsaW5lLWhlaWdodDozMHB4OyBjb2xvcjojZmVmZWZlOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgZm9udC1zaXplOjAuODEzcmVtIDsgdGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlOyBmb250LXdlaWdodDpub3JtYWw7IHBhZGRpbmc6MHB4IDEycHggMHB4IDEycHg7IGN1cnNvcjpwb2ludGVyOyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL2JsX2hvdmVyMi5wbmcpIGxlZnQgdG9wIHJlcGVhdC14OyAtbW96LWJvcmRlci1yYWRpdXM6M3B4OyAtd2Via2l0LWJvcmRlci1yYWRpdXM6M3B4OyBib3JkZXItcmFkaXVzOjNweDsgLWtodG1sLWJvcmRlci1yYWRpdXM6M3B4O30KLyoqIC9jc3MvanF1ZXJ5LXVpLWZhY3RvcnkvMS4xMy4yL2pxdWVyeS11aS5taW4uY3NzICoqLwoudWktaGVscGVyLWhpZGRlbntkaXNwbGF5Om5vbmV9LnVpLWhlbHBlci1oaWRkZW4tYWNjZXNzaWJsZXtib3JkZXI6MDtjbGlwOnJlY3QoMCAwIDAgMCk7aGVpZ2h0OjFweDttYXJnaW46LTFweDtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzowO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjFweH0udWktaGVscGVyLXJlc2V0e21hcmdpbjowO3BhZGRpbmc6MDtib3JkZXI6MDtvdXRsaW5lOjA7bGluZS1oZWlnaHQ6MS4zO3RleHQtZGVjb3JhdGlvbjpub25lO2ZvbnQtc2l6ZToxMDAlO2xpc3Qtc3R5bGU6bm9uZX0udWktaGVscGVyLWNsZWFyZml4OmJlZm9yZSwudWktaGVscGVyLWNsZWFyZml4OmFmdGVye2NvbnRlbnQ6IiI7ZGlzcGxheTp0YWJsZTtib3JkZXItY29sbGFwc2U6Y29sbGFwc2V9LnVpLWhlbHBlci1jbGVhcmZpeDphZnRlcntjbGVhcjpib3RofS51aS1oZWxwZXItemZpeHt3aWR0aDoxMDAlO2hlaWdodDoxMDAlO3RvcDowO2xlZnQ6MDtwb3NpdGlvbjphYnNvbHV0ZTtvcGFjaXR5OjA7LW1zLWZpbHRlcjoiYWxwaGEob3BhY2l0eT0wKSJ9LnVpLWZyb250e3otaW5kZXg6MTAwfS51aS1zdGF0ZS1kaXNhYmxlZHtjdXJzb3I6ZGVmYXVsdCFpbXBvcnRhbnQ7cG9pbnRlci1ldmVudHM6bm9uZX0udWktaWNvbntkaXNwbGF5OmlubGluZS1ibG9jazt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7bWFyZ2luLXRvcDotLjI1ZW07cG9zaXRpb246cmVsYXRpdmU7dGV4dC1pbmRlbnQ6LTk5OTk5cHg7b3ZlcmZsb3c6aGlkZGVuO2JhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdH0udWktd2lkZ2V0LWljb24tYmxvY2t7bGVmdDo1MCU7bWFyZ2luLWxlZnQ6LThweDtkaXNwbGF5OmJsb2NrfS51aS13aWRnZXQtb3ZlcmxheXtwb3NpdGlvbjpmaXhlZDt0b3A6MDtsZWZ0OjA7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJX0udWktYWNjb3JkaW9uIC51aS1hY2NvcmRpb24taGVhZGVye2Rpc3BsYXk6YmxvY2s7Y3Vyc29yOnBvaW50ZXI7cG9zaXRpb246cmVsYXRpdmU7bWFyZ2luOjJweCAwIDAgMDtwYWRkaW5nOi41ZW0gLjVlbSAuNWVtIC43ZW07Zm9udC1zaXplOjEwMCV9LnVpLWFjY29yZGlvbiAudWktYWNjb3JkaW9uLWNvbnRlbnR7cGFkZGluZzoxZW0gMi4yZW07Ym9yZGVyLXRvcDowO292ZXJmbG93OmF1dG99LnVpLXNsaWRlcntwb3NpdGlvbjpyZWxhdGl2ZTt0ZXh0LWFsaWduOmxlZnR9LnVpLXNsaWRlciAudWktc2xpZGVyLWhhbmRsZXtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjI7d2lkdGg6MS4yZW07aGVpZ2h0OjEuMmVtO2N1cnNvcjpwb2ludGVyOy1tcy10b3VjaC1hY3Rpb246bm9uZTt0b3VjaC1hY3Rpb246bm9uZX0udWktc2xpZGVyIC51aS1zbGlkZXItcmFuZ2V7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxO2ZvbnQtc2l6ZTouN2VtO2Rpc3BsYXk6YmxvY2s7Ym9yZGVyOjA7YmFja2dyb3VuZC1wb3NpdGlvbjowIDB9LnVpLXNsaWRlci51aS1zdGF0ZS1kaXNhYmxlZCAudWktc2xpZGVyLWhhbmRsZSwudWktc2xpZGVyLnVpLXN0YXRlLWRpc2FibGVkIC51aS1zbGlkZXItcmFuZ2V7ZmlsdGVyOmluaGVyaXR9LnVpLXNsaWRlci1ob3Jpem9udGFse2hlaWdodDouOGVtfS51aS1zbGlkZXItaG9yaXpvbnRhbCAudWktc2xpZGVyLWhhbmRsZXt0b3A6LS4zZW07bWFyZ2luLWxlZnQ6LS42ZW19LnVpLXNsaWRlci1ob3Jpem9udGFsIC51aS1zbGlkZXItcmFuZ2V7dG9wOjA7aGVpZ2h0OjEwMCV9LnVpLXNsaWRlci1ob3Jpem9udGFsIC51aS1zbGlkZXItcmFuZ2UtbWlue2xlZnQ6MH0udWktc2xpZGVyLWhvcml6b250YWwgLnVpLXNsaWRlci1yYW5nZS1tYXh7cmlnaHQ6MH0udWktc2xpZGVyLXZlcnRpY2Fse3dpZHRoOi44ZW07aGVpZ2h0OjEwMHB4fS51aS1zbGlkZXItdmVydGljYWwgLnVpLXNsaWRlci1oYW5kbGV7bGVmdDotLjNlbTttYXJnaW4tbGVmdDowO21hcmdpbi1ib3R0b206LS42ZW19LnVpLXNsaWRlci12ZXJ0aWNhbCAudWktc2xpZGVyLXJhbmdle2xlZnQ6MDt3aWR0aDoxMDAlfS51aS1zbGlkZXItdmVydGljYWwgLnVpLXNsaWRlci1yYW5nZS1taW57Ym90dG9tOjB9LnVpLXNsaWRlci12ZXJ0aWNhbCAudWktc2xpZGVyLXJhbmdlLW1heHt0b3A6MH0udWktd2lkZ2V0e2ZvbnQtZmFtaWx5OkFyaWFsLEhlbHZldGljYSxzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxZW19LnVpLXdpZGdldCAudWktd2lkZ2V0e2ZvbnQtc2l6ZToxZW19LnVpLXdpZGdldCBpbnB1dCwudWktd2lkZ2V0IHNlbGVjdCwudWktd2lkZ2V0IHRleHRhcmVhLC51aS13aWRnZXQgYnV0dG9ue2ZvbnQtZmFtaWx5OkFyaWFsLEhlbHZldGljYSxzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxZW19LnVpLXdpZGdldC51aS13aWRnZXQtY29udGVudHtib3JkZXI6MXB4IHNvbGlkICNjNWM1YzV9LnVpLXdpZGdldC1jb250ZW50e2JvcmRlcjoxcHggc29saWQgI2RkZDtiYWNrZ3JvdW5kOiNmZmY7Y29sb3I6IzMzM30udWktd2lkZ2V0LWNvbnRlbnQgYXtjb2xvcjojMzMzfS51aS13aWRnZXQtaGVhZGVye2JvcmRlcjoxcHggc29saWQgI2RkZDtiYWNrZ3JvdW5kOiNlOWU5ZTk7Y29sb3I6IzMzMztmb250LXdlaWdodDpib2xkfS51aS13aWRnZXQtaGVhZGVyIGF7Y29sb3I6IzMzM30udWktc3RhdGUtZGVmYXVsdCwudWktd2lkZ2V0LWNvbnRlbnQgLnVpLXN0YXRlLWRlZmF1bHQsLnVpLXdpZGdldC1oZWFkZXIgLnVpLXN0YXRlLWRlZmF1bHQsLnVpLWJ1dHRvbixodG1sIC51aS1idXR0b24udWktc3RhdGUtZGlzYWJsZWQ6aG92ZXIsaHRtbCAudWktYnV0dG9uLnVpLXN0YXRlLWRpc2FibGVkOmFjdGl2ZXtib3JkZXI6MXB4IHNvbGlkICNjNWM1YzU7YmFja2dyb3VuZDojZjZmNmY2O2ZvbnQtd2VpZ2h0Om5vcm1hbDtjb2xvcjojNDU0NTQ1fS51aS1zdGF0ZS1kZWZhdWx0IGEsLnVpLXN0YXRlLWRlZmF1bHQgYTpsaW5rLC51aS1zdGF0ZS1kZWZhdWx0IGE6dmlzaXRlZCxhLnVpLWJ1dHRvbixhOmxpbmsudWktYnV0dG9uLGE6dmlzaXRlZC51aS1idXR0b24sLnVpLWJ1dHRvbntjb2xvcjojNDU0NTQ1O3RleHQtZGVjb3JhdGlvbjpub25lfS51aS1zdGF0ZS1ob3ZlciwudWktd2lkZ2V0LWNvbnRlbnQgLnVpLXN0YXRlLWhvdmVyLC51aS13aWRnZXQtaGVhZGVyIC51aS1zdGF0ZS1ob3ZlciwudWktc3RhdGUtZm9jdXMsLnVpLXdpZGdldC1jb250ZW50IC51aS1zdGF0ZS1mb2N1cywudWktd2lkZ2V0LWhlYWRlciAudWktc3RhdGUtZm9jdXMsLnVpLWJ1dHRvbjpob3ZlciwudWktYnV0dG9uOmZvY3Vze2JvcmRlcjoxcHggc29saWQgI2NjYztiYWNrZ3JvdW5kOiNlZGVkZWQ7Zm9udC13ZWlnaHQ6bm9ybWFsO2NvbG9yOiMyYjJiMmJ9LnVpLXN0YXRlLWhvdmVyIGEsLnVpLXN0YXRlLWhvdmVyIGE6aG92ZXIsLnVpLXN0YXRlLWhvdmVyIGE6bGluaywudWktc3RhdGUtaG92ZXIgYTp2aXNpdGVkLC51aS1zdGF0ZS1mb2N1cyBhLC51aS1zdGF0ZS1mb2N1cyBhOmhvdmVyLC51aS1zdGF0ZS1mb2N1cyBhOmxpbmssLnVpLXN0YXRlLWZvY3VzIGE6dmlzaXRlZCxhLnVpLWJ1dHRvbjpob3ZlcixhLnVpLWJ1dHRvbjpmb2N1c3tjb2xvcjojMmIyYjJiO3RleHQtZGVjb3JhdGlvbjpub25lfS51aS12aXN1YWwtZm9jdXN7Ym94LXNoYWRvdzowIDAgM3B4IDFweCByZ2IoOTQsMTU4LDIxNCl9LnVpLXN0YXRlLWFjdGl2ZSwudWktd2lkZ2V0LWNvbnRlbnQgLnVpLXN0YXRlLWFjdGl2ZSwudWktd2lkZ2V0LWhlYWRlciAudWktc3RhdGUtYWN0aXZlLGEudWktYnV0dG9uOmFjdGl2ZSwudWktYnV0dG9uOmFjdGl2ZSwudWktYnV0dG9uLnVpLXN0YXRlLWFjdGl2ZTpob3Zlcntib3JkZXI6MXB4IHNvbGlkICMwMDNlZmY7YmFja2dyb3VuZDojMDA3ZmZmO2ZvbnQtd2VpZ2h0Om5vcm1hbDtjb2xvcjojZmZmfS51aS1pY29uLWJhY2tncm91bmQsLnVpLXN0YXRlLWFjdGl2ZSAudWktaWNvbi1iYWNrZ3JvdW5ke2JvcmRlcjojMDAzZWZmO2JhY2tncm91bmQtY29sb3I6I2ZmZn0udWktc3RhdGUtYWN0aXZlIGEsLnVpLXN0YXRlLWFjdGl2ZSBhOmxpbmssLnVpLXN0YXRlLWFjdGl2ZSBhOnZpc2l0ZWR7Y29sb3I6I2ZmZjt0ZXh0LWRlY29yYXRpb246bm9uZX0udWktc3RhdGUtaGlnaGxpZ2h0LC51aS13aWRnZXQtY29udGVudCAudWktc3RhdGUtaGlnaGxpZ2h0LC51aS13aWRnZXQtaGVhZGVyIC51aS1zdGF0ZS1oaWdobGlnaHR7Ym9yZGVyOjFweCBzb2xpZCAjZGFkNTVlO2JhY2tncm91bmQ6I2ZmZmE5MDtjb2xvcjojNzc3NjIwfS51aS1zdGF0ZS1jaGVja2Vke2JvcmRlcjoxcHggc29saWQgI2RhZDU1ZTtiYWNrZ3JvdW5kOiNmZmZhOTB9LnVpLXN0YXRlLWhpZ2hsaWdodCBhLC51aS13aWRnZXQtY29udGVudCAudWktc3RhdGUtaGlnaGxpZ2h0IGEsLnVpLXdpZGdldC1oZWFkZXIgLnVpLXN0YXRlLWhpZ2hsaWdodCBhe2NvbG9yOiM3Nzc2MjB9LnVpLXN0YXRlLWVycm9yLC51aS13aWRnZXQtY29udGVudCAudWktc3RhdGUtZXJyb3IsLnVpLXdpZGdldC1oZWFkZXIgLnVpLXN0YXRlLWVycm9ye2JvcmRlcjoxcHggc29saWQgI2YxYTg5OTtiYWNrZ3JvdW5kOiNmZGRmZGY7Y29sb3I6IzVmM2YzZn0udWktc3RhdGUtZXJyb3IgYSwudWktd2lkZ2V0LWNvbnRlbnQgLnVpLXN0YXRlLWVycm9yIGEsLnVpLXdpZGdldC1oZWFkZXIgLnVpLXN0YXRlLWVycm9yIGF7Y29sb3I6IzVmM2YzZn0udWktc3RhdGUtZXJyb3ItdGV4dCwudWktd2lkZ2V0LWNvbnRlbnQgLnVpLXN0YXRlLWVycm9yLXRleHQsLnVpLXdpZGdldC1oZWFkZXIgLnVpLXN0YXRlLWVycm9yLXRleHR7Y29sb3I6IzVmM2YzZn0udWktcHJpb3JpdHktcHJpbWFyeSwudWktd2lkZ2V0LWNvbnRlbnQgLnVpLXByaW9yaXR5LXByaW1hcnksLnVpLXdpZGdldC1oZWFkZXIgLnVpLXByaW9yaXR5LXByaW1hcnl7Zm9udC13ZWlnaHQ6Ym9sZH0udWktcHJpb3JpdHktc2Vjb25kYXJ5LC51aS13aWRnZXQtY29udGVudCAudWktcHJpb3JpdHktc2Vjb25kYXJ5LC51aS13aWRnZXQtaGVhZGVyIC51aS1wcmlvcml0eS1zZWNvbmRhcnl7b3BhY2l0eTouNzstbXMtZmlsdGVyOiJhbHBoYShvcGFjaXR5PTcwKSI7Zm9udC13ZWlnaHQ6bm9ybWFsfS51aS1zdGF0ZS1kaXNhYmxlZCwudWktd2lkZ2V0LWNvbnRlbnQgLnVpLXN0YXRlLWRpc2FibGVkLC51aS13aWRnZXQtaGVhZGVyIC51aS1zdGF0ZS1kaXNhYmxlZHtvcGFjaXR5Oi4zNTstbXMtZmlsdGVyOiJhbHBoYShvcGFjaXR5PTM1KSI7YmFja2dyb3VuZC1pbWFnZTpub25lfS51aS1zdGF0ZS1kaXNhYmxlZCAudWktaWNvbnstbXMtZmlsdGVyOiJhbHBoYShvcGFjaXR5PTM1KSJ9LnVpLWljb257d2lkdGg6MTZweDtoZWlnaHQ6MTZweH0udWktaWNvbiwudWktd2lkZ2V0LWNvbnRlbnQgLnVpLWljb257YmFja2dyb3VuZC1pbWFnZTp1cmwoImltYWdlcy91aS1pY29uc180NDQ0NDRfMjU2eDI0MC5wbmciKX0udWktd2lkZ2V0LWhlYWRlciAudWktaWNvbntiYWNrZ3JvdW5kLWltYWdlOnVybCgiaW1hZ2VzL3VpLWljb25zXzQ0NDQ0NF8yNTZ4MjQwLnBuZyIpfS51aS1zdGF0ZS1ob3ZlciAudWktaWNvbiwudWktc3RhdGUtZm9jdXMgLnVpLWljb24sLnVpLWJ1dHRvbjpob3ZlciAudWktaWNvbiwudWktYnV0dG9uOmZvY3VzIC51aS1pY29ue2JhY2tncm91bmQtaW1hZ2U6dXJsKCJpbWFnZXMvdWktaWNvbnNfNTU1NTU1XzI1NngyNDAucG5nIil9LnVpLXN0YXRlLWFjdGl2ZSAudWktaWNvbiwudWktYnV0dG9uOmFjdGl2ZSAudWktaWNvbntiYWNrZ3JvdW5kLWltYWdlOnVybCgiaW1hZ2VzL3VpLWljb25zX2ZmZmZmZl8yNTZ4MjQwLnBuZyIpfS51aS1zdGF0ZS1oaWdobGlnaHQgLnVpLWljb24sLnVpLWJ1dHRvbiAudWktc3RhdGUtaGlnaGxpZ2h0LnVpLWljb257YmFja2dyb3VuZC1pbWFnZTp1cmwoImltYWdlcy91aS1pY29uc183Nzc2MjBfMjU2eDI0MC5wbmciKX0udWktc3RhdGUtZXJyb3IgLnVpLWljb24sLnVpLXN0YXRlLWVycm9yLXRleHQgLnVpLWljb257YmFja2dyb3VuZC1pbWFnZTp1cmwoImltYWdlcy91aS1pY29uc19jYzAwMDBfMjU2eDI0MC5wbmciKX0udWktYnV0dG9uIC51aS1pY29ue2JhY2tncm91bmQtaW1hZ2U6dXJsKCJpbWFnZXMvdWktaWNvbnNfNzc3Nzc3XzI1NngyNDAucG5nIil9LnVpLWljb24tYmxhbmsudWktaWNvbi1ibGFuay51aS1pY29uLWJsYW5re2JhY2tncm91bmQtaW1hZ2U6bm9uZX0udWktaWNvbi1jYXJldC0xLW57YmFja2dyb3VuZC1wb3NpdGlvbjowIDB9LnVpLWljb24tY2FyZXQtMS1uZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNnB4IDB9LnVpLWljb24tY2FyZXQtMS1le2JhY2tncm91bmQtcG9zaXRpb246LTMycHggMH0udWktaWNvbi1jYXJldC0xLXNle2JhY2tncm91bmQtcG9zaXRpb246LTQ4cHggMH0udWktaWNvbi1jYXJldC0xLXN7YmFja2dyb3VuZC1wb3NpdGlvbjotNjVweCAwfS51aS1pY29uLWNhcmV0LTEtc3d7YmFja2dyb3VuZC1wb3NpdGlvbjotODBweCAwfS51aS1pY29uLWNhcmV0LTEtd3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi05NnB4IDB9LnVpLWljb24tY2FyZXQtMS1ud3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xMTJweCAwfS51aS1pY29uLWNhcmV0LTItbi1ze2JhY2tncm91bmQtcG9zaXRpb246LTEyOHB4IDB9LnVpLWljb24tY2FyZXQtMi1lLXd7YmFja2dyb3VuZC1wb3NpdGlvbjotMTQ0cHggMH0udWktaWNvbi10cmlhbmdsZS0xLW57YmFja2dyb3VuZC1wb3NpdGlvbjowIC0xNnB4fS51aS1pY29uLXRyaWFuZ2xlLTEtbmV7YmFja2dyb3VuZC1wb3NpdGlvbjotMTZweCAtMTZweH0udWktaWNvbi10cmlhbmdsZS0xLWV7YmFja2dyb3VuZC1wb3NpdGlvbjotMzJweCAtMTZweH0udWktaWNvbi10cmlhbmdsZS0xLXNle2JhY2tncm91bmQtcG9zaXRpb246LTQ4cHggLTE2cHh9LnVpLWljb24tdHJpYW5nbGUtMS1ze2JhY2tncm91bmQtcG9zaXRpb246LTY1cHggLTE2cHh9LnVpLWljb24tdHJpYW5nbGUtMS1zd3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi04MHB4IC0xNnB4fS51aS1pY29uLXRyaWFuZ2xlLTEtd3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi05NnB4IC0xNnB4fS51aS1pY29uLXRyaWFuZ2xlLTEtbnd7YmFja2dyb3VuZC1wb3NpdGlvbjotMTEycHggLTE2cHh9LnVpLWljb24tdHJpYW5nbGUtMi1uLXN7YmFja2dyb3VuZC1wb3NpdGlvbjotMTI4cHggLTE2cHh9LnVpLWljb24tdHJpYW5nbGUtMi1lLXd7YmFja2dyb3VuZC1wb3NpdGlvbjotMTQ0cHggLTE2cHh9LnVpLWljb24tYXJyb3ctMS1ue2JhY2tncm91bmQtcG9zaXRpb246MCAtMzJweH0udWktaWNvbi1hcnJvdy0xLW5le2JhY2tncm91bmQtcG9zaXRpb246LTE2cHggLTMycHh9LnVpLWljb24tYXJyb3ctMS1le2JhY2tncm91bmQtcG9zaXRpb246LTMycHggLTMycHh9LnVpLWljb24tYXJyb3ctMS1zZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi00OHB4IC0zMnB4fS51aS1pY29uLWFycm93LTEtc3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi02NXB4IC0zMnB4fS51aS1pY29uLWFycm93LTEtc3d7YmFja2dyb3VuZC1wb3NpdGlvbjotODBweCAtMzJweH0udWktaWNvbi1hcnJvdy0xLXd7YmFja2dyb3VuZC1wb3NpdGlvbjotOTZweCAtMzJweH0udWktaWNvbi1hcnJvdy0xLW53e2JhY2tncm91bmQtcG9zaXRpb246LTExMnB4IC0zMnB4fS51aS1pY29uLWFycm93LTItbi1ze2JhY2tncm91bmQtcG9zaXRpb246LTEyOHB4IC0zMnB4fS51aS1pY29uLWFycm93LTItbmUtc3d7YmFja2dyb3VuZC1wb3NpdGlvbjotMTQ0cHggLTMycHh9LnVpLWljb24tYXJyb3ctMi1lLXd7YmFja2dyb3VuZC1wb3NpdGlvbjotMTYwcHggLTMycHh9LnVpLWljb24tYXJyb3ctMi1zZS1ud3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNzZweCAtMzJweH0udWktaWNvbi1hcnJvd3N0b3AtMS1ue2JhY2tncm91bmQtcG9zaXRpb246LTE5MnB4IC0zMnB4fS51aS1pY29uLWFycm93c3RvcC0xLWV7YmFja2dyb3VuZC1wb3NpdGlvbjotMjA4cHggLTMycHh9LnVpLWljb24tYXJyb3dzdG9wLTEtc3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0yMjRweCAtMzJweH0udWktaWNvbi1hcnJvd3N0b3AtMS13e2JhY2tncm91bmQtcG9zaXRpb246LTI0MHB4IC0zMnB4fS51aS1pY29uLWFycm93dGhpY2stMS1ue2JhY2tncm91bmQtcG9zaXRpb246MXB4IC00OHB4fS51aS1pY29uLWFycm93dGhpY2stMS1uZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNnB4IC00OHB4fS51aS1pY29uLWFycm93dGhpY2stMS1le2JhY2tncm91bmQtcG9zaXRpb246LTMycHggLTQ4cHh9LnVpLWljb24tYXJyb3d0aGljay0xLXNle2JhY2tncm91bmQtcG9zaXRpb246LTQ4cHggLTQ4cHh9LnVpLWljb24tYXJyb3d0aGljay0xLXN7YmFja2dyb3VuZC1wb3NpdGlvbjotNjRweCAtNDhweH0udWktaWNvbi1hcnJvd3RoaWNrLTEtc3d7YmFja2dyb3VuZC1wb3NpdGlvbjotODBweCAtNDhweH0udWktaWNvbi1hcnJvd3RoaWNrLTEtd3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi05NnB4IC00OHB4fS51aS1pY29uLWFycm93dGhpY2stMS1ud3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xMTJweCAtNDhweH0udWktaWNvbi1hcnJvd3RoaWNrLTItbi1ze2JhY2tncm91bmQtcG9zaXRpb246LTEyOHB4IC00OHB4fS51aS1pY29uLWFycm93dGhpY2stMi1uZS1zd3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNDRweCAtNDhweH0udWktaWNvbi1hcnJvd3RoaWNrLTItZS13e2JhY2tncm91bmQtcG9zaXRpb246LTE2MHB4IC00OHB4fS51aS1pY29uLWFycm93dGhpY2stMi1zZS1ud3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNzZweCAtNDhweH0udWktaWNvbi1hcnJvd3RoaWNrc3RvcC0xLW57YmFja2dyb3VuZC1wb3NpdGlvbjotMTkycHggLTQ4cHh9LnVpLWljb24tYXJyb3d0aGlja3N0b3AtMS1le2JhY2tncm91bmQtcG9zaXRpb246LTIwOHB4IC00OHB4fS51aS1pY29uLWFycm93dGhpY2tzdG9wLTEtc3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0yMjRweCAtNDhweH0udWktaWNvbi1hcnJvd3RoaWNrc3RvcC0xLXd7YmFja2dyb3VuZC1wb3NpdGlvbjotMjQwcHggLTQ4cHh9LnVpLWljb24tYXJyb3dyZXR1cm50aGljay0xLXd7YmFja2dyb3VuZC1wb3NpdGlvbjowIC02NHB4fS51aS1pY29uLWFycm93cmV0dXJudGhpY2stMS1ue2JhY2tncm91bmQtcG9zaXRpb246LTE2cHggLTY0cHh9LnVpLWljb24tYXJyb3dyZXR1cm50aGljay0xLWV7YmFja2dyb3VuZC1wb3NpdGlvbjotMzJweCAtNjRweH0udWktaWNvbi1hcnJvd3JldHVybnRoaWNrLTEtc3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi00OHB4IC02NHB4fS51aS1pY29uLWFycm93cmV0dXJuLTEtd3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi02NHB4IC02NHB4fS51aS1pY29uLWFycm93cmV0dXJuLTEtbntiYWNrZ3JvdW5kLXBvc2l0aW9uOi04MHB4IC02NHB4fS51aS1pY29uLWFycm93cmV0dXJuLTEtZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi05NnB4IC02NHB4fS51aS1pY29uLWFycm93cmV0dXJuLTEtc3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xMTJweCAtNjRweH0udWktaWNvbi1hcnJvd3JlZnJlc2gtMS13e2JhY2tncm91bmQtcG9zaXRpb246LTEyOHB4IC02NHB4fS51aS1pY29uLWFycm93cmVmcmVzaC0xLW57YmFja2dyb3VuZC1wb3NpdGlvbjotMTQ0cHggLTY0cHh9LnVpLWljb24tYXJyb3dyZWZyZXNoLTEtZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNjBweCAtNjRweH0udWktaWNvbi1hcnJvd3JlZnJlc2gtMS1ze2JhY2tncm91bmQtcG9zaXRpb246LTE3NnB4IC02NHB4fS51aS1pY29uLWFycm93LTR7YmFja2dyb3VuZC1wb3NpdGlvbjowIC04MHB4fS51aS1pY29uLWFycm93LTQtZGlhZ3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNnB4IC04MHB4fS51aS1pY29uLWV4dGxpbmt7YmFja2dyb3VuZC1wb3NpdGlvbjotMzJweCAtODBweH0udWktaWNvbi1uZXd3aW57YmFja2dyb3VuZC1wb3NpdGlvbjotNDhweCAtODBweH0udWktaWNvbi1yZWZyZXNoe2JhY2tncm91bmQtcG9zaXRpb246LTY0cHggLTgwcHh9LnVpLWljb24tc2h1ZmZsZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi04MHB4IC04MHB4fS51aS1pY29uLXRyYW5zZmVyLWUtd3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi05NnB4IC04MHB4fS51aS1pY29uLXRyYW5zZmVydGhpY2stZS13e2JhY2tncm91bmQtcG9zaXRpb246LTExMnB4IC04MHB4fS51aS1pY29uLWZvbGRlci1jb2xsYXBzZWR7YmFja2dyb3VuZC1wb3NpdGlvbjowIC05NnB4fS51aS1pY29uLWZvbGRlci1vcGVue2JhY2tncm91bmQtcG9zaXRpb246LTE2cHggLTk2cHh9LnVpLWljb24tZG9jdW1lbnR7YmFja2dyb3VuZC1wb3NpdGlvbjotMzJweCAtOTZweH0udWktaWNvbi1kb2N1bWVudC1ie2JhY2tncm91bmQtcG9zaXRpb246LTQ4cHggLTk2cHh9LnVpLWljb24tbm90ZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi02NHB4IC05NnB4fS51aS1pY29uLW1haWwtY2xvc2Vke2JhY2tncm91bmQtcG9zaXRpb246LTgwcHggLTk2cHh9LnVpLWljb24tbWFpbC1vcGVue2JhY2tncm91bmQtcG9zaXRpb246LTk2cHggLTk2cHh9LnVpLWljb24tc3VpdGNhc2V7YmFja2dyb3VuZC1wb3NpdGlvbjotMTEycHggLTk2cHh9LnVpLWljb24tY29tbWVudHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xMjhweCAtOTZweH0udWktaWNvbi1wZXJzb257YmFja2dyb3VuZC1wb3NpdGlvbjotMTQ0cHggLTk2cHh9LnVpLWljb24tcHJpbnR7YmFja2dyb3VuZC1wb3NpdGlvbjotMTYwcHggLTk2cHh9LnVpLWljb24tdHJhc2h7YmFja2dyb3VuZC1wb3NpdGlvbjotMTc2cHggLTk2cHh9LnVpLWljb24tbG9ja2Vke2JhY2tncm91bmQtcG9zaXRpb246LTE5MnB4IC05NnB4fS51aS1pY29uLXVubG9ja2Vke2JhY2tncm91bmQtcG9zaXRpb246LTIwOHB4IC05NnB4fS51aS1pY29uLWJvb2ttYXJre2JhY2tncm91bmQtcG9zaXRpb246LTIyNHB4IC05NnB4fS51aS1pY29uLXRhZ3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0yNDBweCAtOTZweH0udWktaWNvbi1ob21le2JhY2tncm91bmQtcG9zaXRpb246MCAtMTEycHh9LnVpLWljb24tZmxhZ3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNnB4IC0xMTJweH0udWktaWNvbi1jYWxlbmRhcntiYWNrZ3JvdW5kLXBvc2l0aW9uOi0zMnB4IC0xMTJweH0udWktaWNvbi1jYXJ0e2JhY2tncm91bmQtcG9zaXRpb246LTQ4cHggLTExMnB4fS51aS1pY29uLXBlbmNpbHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi02NHB4IC0xMTJweH0udWktaWNvbi1jbG9ja3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi04MHB4IC0xMTJweH0udWktaWNvbi1kaXNre2JhY2tncm91bmQtcG9zaXRpb246LTk2cHggLTExMnB4fS51aS1pY29uLWNhbGN1bGF0b3J7YmFja2dyb3VuZC1wb3NpdGlvbjotMTEycHggLTExMnB4fS51aS1pY29uLXpvb21pbntiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xMjhweCAtMTEycHh9LnVpLWljb24tem9vbW91dHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNDRweCAtMTEycHh9LnVpLWljb24tc2VhcmNoe2JhY2tncm91bmQtcG9zaXRpb246LTE2MHB4IC0xMTJweH0udWktaWNvbi13cmVuY2h7YmFja2dyb3VuZC1wb3NpdGlvbjotMTc2cHggLTExMnB4fS51aS1pY29uLWdlYXJ7YmFja2dyb3VuZC1wb3NpdGlvbjotMTkycHggLTExMnB4fS51aS1pY29uLWhlYXJ0e2JhY2tncm91bmQtcG9zaXRpb246LTIwOHB4IC0xMTJweH0udWktaWNvbi1zdGFye2JhY2tncm91bmQtcG9zaXRpb246LTIyNHB4IC0xMTJweH0udWktaWNvbi1saW5re2JhY2tncm91bmQtcG9zaXRpb246LTI0MHB4IC0xMTJweH0udWktaWNvbi1jYW5jZWx7YmFja2dyb3VuZC1wb3NpdGlvbjowIC0xMjhweH0udWktaWNvbi1wbHVze2JhY2tncm91bmQtcG9zaXRpb246LTE2cHggLTEyOHB4fS51aS1pY29uLXBsdXN0aGlja3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0zMnB4IC0xMjhweH0udWktaWNvbi1taW51c3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi00OHB4IC0xMjhweH0udWktaWNvbi1taW51c3RoaWNre2JhY2tncm91bmQtcG9zaXRpb246LTY0cHggLTEyOHB4fS51aS1pY29uLWNsb3Nle2JhY2tncm91bmQtcG9zaXRpb246LTgwcHggLTEyOHB4fS51aS1pY29uLWNsb3NldGhpY2t7YmFja2dyb3VuZC1wb3NpdGlvbjotOTZweCAtMTI4cHh9LnVpLWljb24ta2V5e2JhY2tncm91bmQtcG9zaXRpb246LTExMnB4IC0xMjhweH0udWktaWNvbi1saWdodGJ1bGJ7YmFja2dyb3VuZC1wb3NpdGlvbjotMTI4cHggLTEyOHB4fS51aS1pY29uLXNjaXNzb3Jze2JhY2tncm91bmQtcG9zaXRpb246LTE0NHB4IC0xMjhweH0udWktaWNvbi1jbGlwYm9hcmR7YmFja2dyb3VuZC1wb3NpdGlvbjotMTYwcHggLTEyOHB4fS51aS1pY29uLWNvcHl7YmFja2dyb3VuZC1wb3NpdGlvbjotMTc2cHggLTEyOHB4fS51aS1pY29uLWNvbnRhY3R7YmFja2dyb3VuZC1wb3NpdGlvbjotMTkycHggLTEyOHB4fS51aS1pY29uLWltYWdle2JhY2tncm91bmQtcG9zaXRpb246LTIwOHB4IC0xMjhweH0udWktaWNvbi12aWRlb3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0yMjRweCAtMTI4cHh9LnVpLWljb24tc2NyaXB0e2JhY2tncm91bmQtcG9zaXRpb246LTI0MHB4IC0xMjhweH0udWktaWNvbi1hbGVydHtiYWNrZ3JvdW5kLXBvc2l0aW9uOjAgLTE0NHB4fS51aS1pY29uLWluZm97YmFja2dyb3VuZC1wb3NpdGlvbjotMTZweCAtMTQ0cHh9LnVpLWljb24tbm90aWNle2JhY2tncm91bmQtcG9zaXRpb246LTMycHggLTE0NHB4fS51aS1pY29uLWhlbHB7YmFja2dyb3VuZC1wb3NpdGlvbjotNDhweCAtMTQ0cHh9LnVpLWljb24tY2hlY2t7YmFja2dyb3VuZC1wb3NpdGlvbjotNjRweCAtMTQ0cHh9LnVpLWljb24tYnVsbGV0e2JhY2tncm91bmQtcG9zaXRpb246LTgwcHggLTE0NHB4fS51aS1pY29uLXJhZGlvLW9ue2JhY2tncm91bmQtcG9zaXRpb246LTk2cHggLTE0NHB4fS51aS1pY29uLXJhZGlvLW9mZntiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xMTJweCAtMTQ0cHh9LnVpLWljb24tcGluLXd7YmFja2dyb3VuZC1wb3NpdGlvbjotMTI4cHggLTE0NHB4fS51aS1pY29uLXBpbi1ze2JhY2tncm91bmQtcG9zaXRpb246LTE0NHB4IC0xNDRweH0udWktaWNvbi1wbGF5e2JhY2tncm91bmQtcG9zaXRpb246MCAtMTYwcHh9LnVpLWljb24tcGF1c2V7YmFja2dyb3VuZC1wb3NpdGlvbjotMTZweCAtMTYwcHh9LnVpLWljb24tc2Vlay1uZXh0e2JhY2tncm91bmQtcG9zaXRpb246LTMycHggLTE2MHB4fS51aS1pY29uLXNlZWstcHJldntiYWNrZ3JvdW5kLXBvc2l0aW9uOi00OHB4IC0xNjBweH0udWktaWNvbi1zZWVrLWVuZHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi02NHB4IC0xNjBweH0udWktaWNvbi1zZWVrLXN0YXJ0e2JhY2tncm91bmQtcG9zaXRpb246LTgwcHggLTE2MHB4fS51aS1pY29uLXNlZWstZmlyc3R7YmFja2dyb3VuZC1wb3NpdGlvbjotODBweCAtMTYwcHh9LnVpLWljb24tc3RvcHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi05NnB4IC0xNjBweH0udWktaWNvbi1lamVjdHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xMTJweCAtMTYwcHh9LnVpLWljb24tdm9sdW1lLW9mZntiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xMjhweCAtMTYwcHh9LnVpLWljb24tdm9sdW1lLW9ue2JhY2tncm91bmQtcG9zaXRpb246LTE0NHB4IC0xNjBweH0udWktaWNvbi1wb3dlcntiYWNrZ3JvdW5kLXBvc2l0aW9uOjAgLTE3NnB4fS51aS1pY29uLXNpZ25hbC1kaWFne2JhY2tncm91bmQtcG9zaXRpb246LTE2cHggLTE3NnB4fS51aS1pY29uLXNpZ25hbHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0zMnB4IC0xNzZweH0udWktaWNvbi1iYXR0ZXJ5LTB7YmFja2dyb3VuZC1wb3NpdGlvbjotNDhweCAtMTc2cHh9LnVpLWljb24tYmF0dGVyeS0xe2JhY2tncm91bmQtcG9zaXRpb246LTY0cHggLTE3NnB4fS51aS1pY29uLWJhdHRlcnktMntiYWNrZ3JvdW5kLXBvc2l0aW9uOi04MHB4IC0xNzZweH0udWktaWNvbi1iYXR0ZXJ5LTN7YmFja2dyb3VuZC1wb3NpdGlvbjotOTZweCAtMTc2cHh9LnVpLWljb24tY2lyY2xlLXBsdXN7YmFja2dyb3VuZC1wb3NpdGlvbjowIC0xOTJweH0udWktaWNvbi1jaXJjbGUtbWludXN7YmFja2dyb3VuZC1wb3NpdGlvbjotMTZweCAtMTkycHh9LnVpLWljb24tY2lyY2xlLWNsb3Nle2JhY2tncm91bmQtcG9zaXRpb246LTMycHggLTE5MnB4fS51aS1pY29uLWNpcmNsZS10cmlhbmdsZS1le2JhY2tncm91bmQtcG9zaXRpb246LTQ4cHggLTE5MnB4fS51aS1pY29uLWNpcmNsZS10cmlhbmdsZS1ze2JhY2tncm91bmQtcG9zaXRpb246LTY0cHggLTE5MnB4fS51aS1pY29uLWNpcmNsZS10cmlhbmdsZS13e2JhY2tncm91bmQtcG9zaXRpb246LTgwcHggLTE5MnB4fS51aS1pY29uLWNpcmNsZS10cmlhbmdsZS1ue2JhY2tncm91bmQtcG9zaXRpb246LTk2cHggLTE5MnB4fS51aS1pY29uLWNpcmNsZS1hcnJvdy1le2JhY2tncm91bmQtcG9zaXRpb246LTExMnB4IC0xOTJweH0udWktaWNvbi1jaXJjbGUtYXJyb3ctc3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xMjhweCAtMTkycHh9LnVpLWljb24tY2lyY2xlLWFycm93LXd7YmFja2dyb3VuZC1wb3NpdGlvbjotMTQ0cHggLTE5MnB4fS51aS1pY29uLWNpcmNsZS1hcnJvdy1ue2JhY2tncm91bmQtcG9zaXRpb246LTE2MHB4IC0xOTJweH0udWktaWNvbi1jaXJjbGUtem9vbWlue2JhY2tncm91bmQtcG9zaXRpb246LTE3NnB4IC0xOTJweH0udWktaWNvbi1jaXJjbGUtem9vbW91dHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xOTJweCAtMTkycHh9LnVpLWljb24tY2lyY2xlLWNoZWNre2JhY2tncm91bmQtcG9zaXRpb246LTIwOHB4IC0xOTJweH0udWktaWNvbi1jaXJjbGVzbWFsbC1wbHVze2JhY2tncm91bmQtcG9zaXRpb246MCAtMjA4cHh9LnVpLWljb24tY2lyY2xlc21hbGwtbWludXN7YmFja2dyb3VuZC1wb3NpdGlvbjotMTZweCAtMjA4cHh9LnVpLWljb24tY2lyY2xlc21hbGwtY2xvc2V7YmFja2dyb3VuZC1wb3NpdGlvbjotMzJweCAtMjA4cHh9LnVpLWljb24tc3F1YXJlc21hbGwtcGx1c3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi00OHB4IC0yMDhweH0udWktaWNvbi1zcXVhcmVzbWFsbC1taW51c3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi02NHB4IC0yMDhweH0udWktaWNvbi1zcXVhcmVzbWFsbC1jbG9zZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi04MHB4IC0yMDhweH0udWktaWNvbi1ncmlwLWRvdHRlZC12ZXJ0aWNhbHtiYWNrZ3JvdW5kLXBvc2l0aW9uOjAgLTIyNHB4fS51aS1pY29uLWdyaXAtZG90dGVkLWhvcml6b250YWx7YmFja2dyb3VuZC1wb3NpdGlvbjotMTZweCAtMjI0cHh9LnVpLWljb24tZ3JpcC1zb2xpZC12ZXJ0aWNhbHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0zMnB4IC0yMjRweH0udWktaWNvbi1ncmlwLXNvbGlkLWhvcml6b250YWx7YmFja2dyb3VuZC1wb3NpdGlvbjotNDhweCAtMjI0cHh9LnVpLWljb24tZ3JpcHNtYWxsLWRpYWdvbmFsLXNle2JhY2tncm91bmQtcG9zaXRpb246LTY0cHggLTIyNHB4fS51aS1pY29uLWdyaXAtZGlhZ29uYWwtc2V7YmFja2dyb3VuZC1wb3NpdGlvbjotODBweCAtMjI0cHh9LnVpLWNvcm5lci1hbGwsLnVpLWNvcm5lci10b3AsLnVpLWNvcm5lci1sZWZ0LC51aS1jb3JuZXItdGx7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czozcHh9LnVpLWNvcm5lci1hbGwsLnVpLWNvcm5lci10b3AsLnVpLWNvcm5lci1yaWdodCwudWktY29ybmVyLXRye2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOjNweH0udWktY29ybmVyLWFsbCwudWktY29ybmVyLWJvdHRvbSwudWktY29ybmVyLWxlZnQsLnVpLWNvcm5lci1ibHtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjNweH0udWktY29ybmVyLWFsbCwudWktY29ybmVyLWJvdHRvbSwudWktY29ybmVyLXJpZ2h0LC51aS1jb3JuZXItYnJ7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6M3B4fS51aS13aWRnZXQtb3ZlcmxheXtiYWNrZ3JvdW5kOiNhYWE7b3BhY2l0eTouMzstbXMtZmlsdGVyOkFscGhhKE9wYWNpdHk9MzApfS51aS13aWRnZXQtc2hhZG93ey13ZWJraXQtYm94LXNoYWRvdzowIDAgNXB4ICM2NjY7Ym94LXNoYWRvdzowIDAgNXB4ICM2NjZ9Ci8qKiAvY3NzL3N0eWxlLmNzcyAqKi8KaHRtbCwgYm9keSwgYXBwbGV0LCBvYmplY3QsIGlmcmFtZSwgaDEsIGgyLCBoMywgaDQsIGg1LCBoNiwgYmxvY2txdW90ZSwgcHJlLCBhYmJyLCBhY3JvbnltLCBhZGRyZXNzLCBiaWcsIGNpdGUsIGNvZGUsIGRlbCwgZGZuLCBlbSwgZm9udCwgaW1nLCBpbnMsIGtiZCwgcSwgcywgc2FtcCwgc21hbGwsIHN0cmlrZSwgc3Ryb25nLCBzdWIsIHN1cCwgdHQsIHZhciwgYiwgdSwgaSwgY2VudGVyLCBkbCwgZHQsIGRkLCBvbCwgdWwsIGxpLCBmaWVsZHNldCwgZm9ybSwgbGFiZWwsIGxlZ2VuZCwgdGFibGUsIGNhcHRpb24sIHRib2R5LCB0Zm9vdCwgdGhlYWQsIHRyLCB0aCwgdGQgeyBtYXJnaW46MDsgcGFkZGluZzowOyB9IGh0bWwgeyAtbXMtdGV4dC1zaXplLWFkanVzdDoxMDAlOyAtd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6MTAwJTsgfSBib2R5IHsgcGFkZGluZzowOyBtYXJnaW46MCAwIDAgMDsgYmFja2dyb3VuZDojRkZGRkZGOyBjb2xvcjojMzMzMzMzOyBmb250LWZhbWlseTp2YXIoLS1mb250LXRleHQtbW9iKTsgZm9udC13ZWlnaHQ6dmFyKC0tZm9udC10ZXh0LXdlaWdodCk7IGZvbnQtc2l6ZTowLjkzOHJlbSA7IH0gaW5wdXQsIHRleHRhcmVhLCBzZWxlY3QsIGJ1dHRvbiB7IGZvbnQtZmFtaWx5OnZhcigtLWZvbnQtdGV4dC1tb2IpOyBmb250LXdlaWdodDp2YXIoLS1mb250LXRleHQtd2VpZ2h0KTsgfSAuZnVsbFdpZHRoQnV0dG9uIGEsIC50b3BuYXYgdHIgdGQgYSwgYSNtb2JpbGVQcm9tb3Rpb25CdG4gc3BhbnsgZm9udC1mYW1pbHk6dmFyKC0tZm9udC1idXR0b25zLW1vYik7IGZvbnQtd2VpZ2h0OnZhcigtLWZvbnQtYnV0dG9ucy13ZWlnaHQpOyB9IC5kZWFsZXItY29sb3IgeyBjb2xvcjojZmZmZmZmOyB9IC5oMmZvcm17IGZvbnQtd2VpZ2h0OmJvbGQ7IHRleHQtdHJhbnNmb3JtOnZhcigtLXR4dC11cHBlcik7IGJhY2tncm91bmQ6Izk5OTsgY29sb3I6d2hpdGU7IHBhZGRpbmc6NXB4IDEwcHg7IGZvbnQtc2l6ZTowLjkzOHJlbSA7IG1hcmdpbi10b3A6MTVweDsgfSAuLXNlbGVjdCB7IHBhZGRpbmc6MDsgbWFyZ2luOjA7IGJvcmRlcjoxcHggc29saWQgI2NjYzsgYm9yZGVyLXJhZGl1czozcHg7IG92ZXJmbG93OmhpZGRlbjsgYmFja2dyb3VuZC1jb2xvcjojZmZmOyBiYWNrZ3JvdW5kOiNmZmY7IHBvc2l0aW9uOnJlbGF0aXZlOyB9IC51c2VkX2RldGFpbHNfb3B0aW9uc190aXRsZSwgLm5ld19kZXRhaWxzX29wdGlvbnNfdGl0bGV7IGJhY2tncm91bmQtY29sb3I6I2NjYzsgY29sb3I6IzAwMDsgcGFkZGluZzoxMHB4OyBmb250LXNpemU6MS4xMjVyZW0gOyBtYXJnaW4tbGVmdDotMTBweDsgbWFyZ2luLXJpZ2h0Oi0xMHB4OyB9IC4tc2VsZWN0OmFmdGVyIHsgdG9wOjUwJTsgcmlnaHQ6NXB4OyBib3JkZXI6c29saWQgdHJhbnNwYXJlbnQ7IGNvbnRlbnQ6IiAiOyBoZWlnaHQ6MDsgd2lkdGg6MDsgcG9zaXRpb246YWJzb2x1dGU7IHBvaW50ZXItZXZlbnRzOm5vbmU7IGJvcmRlci1jb2xvcjpyZ2JhKDAsIDAsIDAsIDApOyBib3JkZXItdG9wLWNvbG9yOiMwMDAwMDA7IGJvcmRlci13aWR0aDo1cHg7IG1hcmdpbi10b3A6LTJweDsgei1pbmRleDoxMDA7IH0gLi1zZWxlY3Qgc2VsZWN0IHsgcGFkZGluZzo1cHggOHB4OyB3aWR0aDoxMDAlOyBib3JkZXI6bm9uZTsgYm94LXNoYWRvdzpub25lOyBiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50OyBiYWNrZ3JvdW5kLWltYWdlOm5vbmU7IC13ZWJraXQtYXBwZWFyYW5jZTpub25lOyAtbW96LWFwcGVhcmFuY2U6bm9uZTsgYXBwZWFyYW5jZTpub25lOyB9IC4tc2VsZWN0IHNlbGVjdDpmb2N1cyB7IG91dGxpbmU6bm9uZTsgfSBhLCBhOmhvdmVyIHsgb3V0bGluZTpub25lOyB9IC5uYXYgPiB1bCA+IGxpeyBtYXJnaW4tYm90dG9tOjNweDsgfSBoMXsgZm9udC1zaXplOjEuNGVtOyBwYWRkaW5nLXRvcDoxMHB4OyBmb250LWZhbWlseTp2YXIoLS1mb250LWgxLW1vYik7IGZvbnQtd2VpZ2h0OnZhcigtLWZvbnQtaDEtd2VpZ2h0KTsgfSBzcGFuLmgyLWFsdCxzcGFuLmgzLWFsdHsgbWFyZ2luOjA7IHBhZGRpbmc6MDsgfSBoMixoMyxoNCxoNSxoNixzcGFuLmgyLWFsdCxzcGFuLmgzLWFsdHsgZm9udC1mYW1pbHk6dmFyKC0tZm9udC1oMi1tb2IpOyBmb250LXdlaWdodDp2YXIoLS1mb250LWgyLXdlaWdodCk7IH0gaW5wdXRbdHlwZT1idXR0b25dLCAuZGV0YWlscyBhLCAuaC1idXR0b25zIHVsIGxpIGEsIC5wcmljZSwgLmRldGFpbHMsIC5kZXRhaWxzIGEsIC5idXR0b24tcHJvbW8zLCAuYnRuLWRlZmF1bHQsIC5idG4tc20sIC5idG4tbGcgeyBmb250LWZhbWlseTp2YXIoLS1mb250LWJ1dHRvbnMtbW9iKTsgZm9udC13ZWlnaHQ6dmFyKC0tZm9udC1idXR0b25zLXdlaWdodCk7IH0gLmNsZWFyeyBjbGVhcjpib3RoO30gYSwgYTpob3ZlciB7dGV4dC1kZWNvcmF0aW9uOm5vbmU7fSAuY29udGFpbmVyIHsgd2lkdGg6MTAwJTsgbWFyZ2luOjAgMCAwIDA7IH0gLnRvcCB7IGJhY2tncm91bmQ6IzIyMjIyMjsgYmFja2dyb3VuZDojZmZmZmZmOyBoZWlnaHQ6NTBweDsgfSAudG9wbmF2IC5idXJnZXItYnRuLWNvbnRhaW5lci5tZW51LXRhbGx7IHdpZHRoOjQwcHggIWltcG9ydGFudDsgfSAudG9wbmF2IGEgeyB0ZXh0LWRlY29yYXRpb246bm9uZTsgZm9udC1zaXplOjFlbTsgZm9udC13ZWlnaHQ6Ym9sZDsgY29sb3I6I2ZmZmZmZjsgY29sb3I6IzFlMjY0ZTsgfSAuYnVyZ2VyLW1lbnV7IGhlaWdodDoyMDAlICFpbXBvcnRhbnQ7IGJhY2tncm91bmQtY29sb3I6cmdiYSgwLCAwLCAwLCAwLjUpICFpbXBvcnRhbnQ7IH0gLnJpZ2h0Ym9yZGVyIHsgYm9yZGVyLXJpZ2h0OjFweCBzb2xpZDsgYm9yZGVyLWNvbG9yOiNmZmZmZmY7IGJvcmRlci1jb2xvcjojMWUyNjRlOyB9IC5sZWZ0Ym9yZGVyIHsgYm9yZGVyLWxlZnQ6MXB4IHNvbGlkOyBib3JkZXItY29sb3I6I2ZmZmZmZjsgYm9yZGVyLWNvbG9yOiMxZTI2NGU7IH0gLnRlbGVwaG9uZSwgLm1hcCB7ZGlzcGxheTpibG9jazsgaGVpZ2h0OjY0cHg7IHBhZGRpbmc6MjVweCAwIDAgMDt9IC50ZWxlcGhvbmUge2JhY2tncm91bmQ6dXJsKC9pbWFnZXMvaWNvbi1waG9uZS5wbmcpIG5vLXJlcGVhdCAyMHB4IDE1cHg7IH0gLm1hcCB7YmFja2dyb3VuZDp1cmwoL2ltYWdlcy9pY29uLW1hcC5wbmcpIG5vLXJlcGVhdCA1MHB4IDEwcHg7fSAuaGVhZGVyYmFyIHsgYmFja2dyb3VuZDojMzMzOyBjb2xvcjp3aGl0ZTsgYm94LXNoYWRvdzpyZ2JhKDAsIDAsIDAsIDAuNSkgMCAwIDVweCAzcHg7IGJhY2tncm91bmQ6I2ZmZmZmZjsgY29sb3I6IzFlMjY0ZSB9IC5oZWFkZXJiYXIudGFsbCB7IHBvc2l0aW9uIDphYnNvbHV0ZTsgdG9wIDowOyB3aWR0aCA6MTAwJTsgfSAuaGVhZGVyYmFyIC50b3BuYXYgeyB3aWR0aCA6MTAwJTsgaGVpZ2h0IDoxMDAlOyBkaXNwbGF5IDpmbGV4OyBqdXN0aWZ5LWNvbnRlbnQgOnNwYWNlLWJldHdlZW47IGFsaWduLWl0ZW1zIDpjZW50ZXI7IH0gLmhlYWRlcmJhci50YWxsIC50b3BuYXYgeyBqdXN0aWZ5LWNvbnRlbnQ6c3RyZXRjaDsgfSAuaGVhZGVyYmFyIC50b3BuYXYgPiBkaXYgeyBoZWlnaHQgOjUwcHg7IGRpc3BsYXkgOmZsZXg7IGFsaWduLWl0ZW1zIDpjZW50ZXI7IH0gLmhlYWRlcmJhciAudG9wbmF2ID4gLmxvZ28tYWN0aW9uIHsgZmxleC1kaXJlY3Rpb24gOmNvbHVtbjsganVzdGlmeS1jb250ZW50IDpzcGFjZS1ldmVubHk7IH0gLmhlYWRlcmJhci50YWxsIC50b3BuYXYgPiBkaXY6bm90KC5idXJnZXItYnRuLWNvbnRhaW5lcikgeyBmbGV4LWdyb3c6MTsgfSAuaGVhZGVyYmFyLnRhbGwgLnRvcG5hdiA+IGRpdjpub3QoOmxhc3Qtb2YtdHlwZSkgeyBib3JkZXItcmlnaHQ6MXB4IHNvbGlkICNkZGQ7IH0gLmhlYWRlcmJhciAubWVudS5idXJnZXItYnRuLWNvbnRhaW5lciB7IG1heC13aWR0aCA6NDBweDsgaGVpZ2h0IDo1MHB4OyB9IC5oZWFkZXJiYXIgLmJ1cmdlci1tZW51LWJ1dHRvbiwgLmhlYWRlcmJhci50YWxsIC50b3BuYXYgPiBkaXYgeyBkaXNwbGF5IDpmbGV4OyBqdXN0aWZ5LWNvbnRlbnQgOmNlbnRlcjsgYWxpZ24taXRlbXMgOmNlbnRlcjsgdGV4dC1jZW50ZXIgOmNlbnRlcjsgfSAuaGVhZGVyYmFyIC5idXJnZXItbWVudS1idXR0b24gaSB7IGZvbnQtc2l6ZToxLjI1cmVtOyBjb2xvcjojMWUyNjRlOyB9IC5oZWFkZXJiYXIgLmxvZ28tYWN0aW9uIGltZyB7IHBhZGRpbmcgOjA7IGhlaWdodCA6MTAwJTsgbWF4LWhlaWdodCA6NTBweDsgfSAuaGVhZGVyYmFyIC5oZWFkZXItZGVhbGVyLW5hbWUgeyBkaXNwbGF5IDpibG9jazsgdGV4dC1hbGlnbiA6Y2VudGVyOyBsaW5lLWhlaWdodCA6MS4zZW07IGZvbnQtc2l6ZSA6MC44cmVtOyBjb2xvciA6Izg4ODg4ODsgZm9udC1mYW1pbHkgOnZhcigtLWZvbnQtaDEtbW9iKTsgZm9udC13ZWlnaHQgOnZhcigtLWZvbnQtd2VpZ2h0LWgxLW1vYik7IH0gLmhlYWRlcmJhciAudG9wbmF2ID4gZGl2Om5vdCgubG9nby1hY3Rpb24pID4gYSB7IHRleHQtYWxpZ24gOmNlbnRlcjsgd2lkdGggOjEwMCU7IHBhZGRpbmcgOjAuNzVyZW07IH0gZGl2I3Bob25lTnVtYmVyRGl2IGxpIHsgbGlzdC1zdHlsZS10eXBlOm5vbmU7IG1hcmdpbi1ib3R0b206MTVweDsgfSAjbmV3c0NvbnRhaW5lciBheyBjb2xvcjojMzMzOyB9ICNuZXdzQ29udGFpbmVyIGEudG9wX2xpbmsgeyBjb2xvcjojZmZmOyB9IC5uZXdzX2FydGljbGUgaDJ7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgZm9udC1zaXplOjEuMTI1cmVtIDsgfSAubmV3c19hcnRpY2xlIGgxLGgyLGgzLGg0LGg1LGg2eyBmb250LXdlaWdodDpub3JtYWw7IH0gLmFkZHJlc3MgeyBsZXR0ZXItc3BhY2luZzotMXB4OyBjb2xvcjojMzMzOyBmb250LXNpemU6MC44MTNyZW0gOyBmb250LXdlaWdodDpub3JtYWw7IGxpbmUtaGVpZ2h0Om5vcm1hbDsgd2lkdGg6NTAlOyBkaXNwbGF5OmlubGluZS1ibG9jazsgfSAuYWRkcmVzcywgLmxvZ28geyB2ZXJ0aWNhbC1hbGlnbjp0b3A7IH0gLmNvbnRlbnRzIHsgYmFja2dyb3VuZDojZmJmYmZiOyBwYWRkaW5nOjEwcHg7IH0gLmNvbnRlbnRzIGgyIHtmb250LXNpemU6MS41cmVtOyBsaW5lLWhlaWdodDoyLjI1cmVtO30gLmNvbnRlbnRzIHAge2ZvbnQtc2l6ZToxZW07IGxpbmUtaGVpZ2h0OjEuMWVtOyB0ZXh0LWFsaWduOmp1c3RpZnk7IGxldHRlci1zcGFjaW5nOjA7fSAubW9iaWxlX2J1c2luZXNzRGVzYyB7IGJhY2tncm91bmQ6I2VlZWVlZSFpbXBvcnRhbnQ7IGNvbG9yOiMyYzJjMmMhaW1wb3J0YW50OyB9IC5tZW51IHsgd2lkdGg6MTAwJTsgY2xlYXI6Ym90aDsgfSAjbmV3c0NvbnRhaW5lciAubmV3c19hcnRpY2xlIGltZ1tzcmMqPScvY2tmaW5kZXInXXsgaGVpZ2h0OmF1dG8gIWltcG9ydGFudDsgbWF4LXdpZHRoOjEwMCUgIWltcG9ydGFudDsgfSAjbmV3c0NvbnRhaW5lciAubmV3c19hcnRpY2xlIGltZ3sgbWF4LXdpZHRoOjEwMCU7IGhlaWdodDphdXRvOyB9ICNuZXdzQ29udGFpbmVyIC5jbGVhcmZpeCB7IGhlaWdodDowcHg7IH0gLm1lbnUgdWwgbGkgYSBzcGFuIHtwYWRkaW5nLWxlZnQ6N3B4O30gLm1lbnUgdWwgbGkgYSBzcGFuLnRleHR2YWwge2xpbmUtaGVpZ2h0OjMycHg7ICMjTU9CSUxFX01FTlVfQ1NTIyN9IC5tZW51IHVsIGxpIGEgc3BhbiBpbWcge3BhZGRpbmctbGVmdDoxMHB4OyB2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7fSAuYm90dG9tIC5saW5rcyBhIHsgY29sb3I6IzcwNzA3MDsgfSAuRU5HTElTSCAuYm90dG9tIC5saW5rcyB1bCBsaSBheyB0ZXh0LXRyYW5zZm9ybTpjYXBpdGFsaXplOyB9IC5ib3R0b20gLmxpbmtzIGRpdiB7IG1hcmdpbjoxNXB4IDA7IGRpc3BsYXk6YmxvY2s7IH0gLmJvdHRvbSB7IHBhZGRpbmc6MTBweDsgZGlzcGxheTpibG9jazsgLXdlYmtpdC1ib3gtc2hhZG93Omluc2V0IDBweCAxMHB4IDExcHggLTExcHggcmdiYSg1MCwgNTAsIDUwLCAwLjc1KTsgLW1vei1ib3gtc2hhZG93OiBpbnNldCAwcHggMTBweCAxMXB4IC0xMXB4IHJnYmEoNTAsIDUwLCA1MCwgMC43NSk7IGJveC1zaGFkb3c6IGluc2V0IDBweCAxMHB4IDExcHggLTExcHggcmdiYSg1MCwgNTAsIDUwLCAwLjc1KTsgYmFja2dyb3VuZC1jb2xvcjojZjlmOWY5OyBjb2xvcjojNzA3MDcwOyAtLXR4dC1jb2xvcjojNzA3MDcwOyB9IC5ib3R0b20gLmxpbmtzIHsgZm9udC1zaXplOjAuOTM4cmVtIDsgbGluZS1oZWlnaHQ6MjFweDsgY2xlYXI6Ym90aDsgcGFkZGluZy10b3A6NXB4OyB9IC5ib3R0b20gLmZvb3Rlcl9hZGRyZXNzIHNwYW57IGNvbG9yOmluaGVyaXQgIWltcG9ydGFudDsgfSAuYm90dG9tIC5saW5rcyBkaXYuZm9vdGVyX2xvZ28geyBtYXJnaW46MS4yNXJlbSAwIDEuNzVyZW0gMDsgfSAuYm90dG9tIC5saW5rcyBkaXYuZm9vdGVyX2xvZ28gaW1nIHsgbWF4LXdpZHRoOjE4MHB4OyBtYXgtaGVpZ2h0OjEwMHB4OyB9IGEuYnV0dG9uLXByb21vIHsgY29sb3I6I2ZmZmZmZiFpbXBvcnRhbnQ7IH0gLmJyZWFkY3J1bWJzIHsgZm9udC1zaXplIDowLjlyZW07IGNvbG9yIDojMjIyMjIyOyBmb250LXdlaWdodCA6Ym9sZDsgcGFkZGluZyA6MTVweDsgfSAuYnJlYWRjcnVtYnMgYSB7Y29sb3I6IzY2NjsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IH0gLmJvdHRvbSAubGlua3MgZGl2LmZvb3Rlci1jYXJsaXN0aW5nIHsgcGFkZGluZy1ib3R0b206NXB4OyB9IC5jRm9vdGVyQ2FyTGlua3N7IHBhZGRpbmc6MCAwIDVweCAwOyB9IC5zZWFyY2hib3ggeyBiYWNrZ3JvdW5kOiNFNUU1RTU7IH0gLnNlYXJjaGJveCBoMyAudWktYWNjb3JkaW9uLWhlYWRlci1pY29uIHtwYWRkaW5nOjBweCA0cHggNnB4IDBweDsgY3Vyc29yOnBvaW50ZXI7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvZG93bmFycm93LnBuZykgbm8tcmVwZWF0IDk4JSBjZW50ZXI7IHRvcDoxOHB4IWltcG9ydGFudDt9IC5mb3JtYXJlYSB7IC13ZWJraXQtYm94LXNoYWRvdzppbnNldCAwIDFweCAzcHggcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjMpOyAtbW96LWJveC1zaGFkb3c6aW5zZXQgMCAxcHggM3B4IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4zKTsgYm94LXNoYWRvdzppbnNldCAwIDFweCAzcHggcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjMpOyB9IC5mb3JtYXJlYSB0YWJsZSB0ciB0ZCB7IHBhZGRpbmc6NXB4OyB9IGlucHV0LCBpbnB1dFt0eXBlPXRleHRdLCBpbnB1dFt0eXBlPXRlbF0sIGlucHV0W3R5cGU9ZW1haWxdLCBzZWxlY3QsIHRleHRhcmVheyAtd2Via2l0LWJvcmRlci1yYWRpdXM6NHB4OyAtbW96LWJvcmRlci1yYWRpdXM6NHB4OyBib3JkZXItcmFkaXVzOjRweDsgYm9yZGVyOjFweCBzb2xpZCAjY2NjOyBwYWRkaW5nOjVweDsgYm94LXNpemluZzpib3JkZXItYm94OyB9IC5jaGVja2JveCB7IHBvc2l0aW9uOnJlbGF0aXZlOyBkaXNwbGF5OmJsb2NrOyB9IC5jaGVja2JveCBpbnB1dFt0eXBlPSJjaGVja2JveCJdIHsgd2lkdGg6YXV0bzsgb3BhY2l0eTowLjAwMDAwMDAxOyBwb3NpdGlvbjphYnNvbHV0ZTsgbGVmdDowOyBtYXJnaW4tbGVmdDotMnB4OyB9IC5jaGVja2JveF9oZWxwZXIgeyBwb3NpdGlvbjphYnNvbHV0ZTsgdG9wOi00cHg7IGxlZnQ6LTRweDsgY3Vyc29yOnBvaW50ZXI7IGRpc3BsYXk6YmxvY2s7IGZvbnQtc2l6ZToxcmVtIDsgdXNlci1zZWxlY3Q6bm9uZTsgY29sb3I6I2U3ZTdlNzsgfSAuY2hlY2tib3hfaGVscGVyOmJlZm9yZSB7IGNvbnRlbnQ6Jyc7IHBvc2l0aW9uOmFic29sdXRlOyBsZWZ0OjA7IHRvcDowOyBtYXJnaW46NHB4OyB3aWR0aDoxNXB4OyBoZWlnaHQ6MTVweDsgdHJhbnNpdGlvbjp0cmFuc2Zvcm0gMC4yOHMgZWFzZTsgYm9yZGVyLXJhZGl1czoycHg7IGJvcmRlcjoxcHggc29saWQgI2NjYzsgYmFja2dyb3VuZDp3aGl0ZTsgfSAuY2hlY2tib3hfaGVscGVyOmFmdGVyIHsgY29udGVudDonJzsgZGlzcGxheTpibG9jazsgd2lkdGg6OHB4OyBoZWlnaHQ6NXB4OyBib3JkZXItYm90dG9tOjJweCBzb2xpZCAjMzMzOyBib3JkZXItbGVmdDoycHggc29saWQgIzMzMzsgLXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKC00NWRlZykgc2NhbGUoMCk7IC1tb3otdHJhbnNmb3JtOnJvdGF0ZSgtNDVkZWcpIHNjYWxlKDApOyAtbXMtdHJhbnNmb3JtOnJvdGF0ZSgtNDVkZWcpIHNjYWxlKDApOyB0cmFuc2Zvcm06cm90YXRlKC00NWRlZykgc2NhbGUoMCk7IHBvc2l0aW9uOmFic29sdXRlOyB0b3A6N3B4OyBsZWZ0OjhweDsgfSAuY2hlY2tib3ggaW5wdXRbdHlwZT0iY2hlY2tib3giXWNoZWNrZWQgfiAuY2hlY2tib3hfaGVscGVyOjpiZWZvcmUgeyBjb2xvcjojMzMzOyB9IC5jaGVja2JveCBpbnB1dFt0eXBlPSJjaGVja2JveCJdOmNoZWNrZWQgfiAuY2hlY2tib3hfaGVscGVyOjphZnRlciB7IC13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgtNDVkZWcpIHNjYWxlKDEpOyAtbW96LXRyYW5zZm9ybTpyb3RhdGUoLTQ1ZGVnKSBzY2FsZSgxKTsgLW1zLXRyYW5zZm9ybTpyb3RhdGUoLTQ1ZGVnKSBzY2FsZSgxKTsgdHJhbnNmb3JtOnJvdGF0ZSgtNDVkZWcpIHNjYWxlKDEpOyB9IC5jaGVja2JveCBsYWJlbCB7IG1pbi1oZWlnaHQ6MjRweDsgcGFkZGluZy1sZWZ0OjI0cHg7IG1hcmdpbi1ib3R0b206MDsgZm9udC13ZWlnaHQ6bm9ybWFsOyBjdXJzb3I6cG9pbnRlcjsgdmVydGljYWwtYWxpZ246c3ViOyB9IC5jaGVja2JveCBpbnB1dFt0eXBlPSJjaGVja2JveCJdOmZvY3VzICsgbGFiZWw6OmJlZm9yZSB7IG91dGxpbmU6cmdiKDU5LCAxNTMsIDI1MikgYXV0byA1cHg7IH0gc2VsZWN0eyBmb250LXNpemU6MC45MzhyZW0gOyB9IC5kcm9wZG93biB7d2lkdGg6OTUlOyBtYXJnaW46YXV0byA1cHg7fSAuYnV0dG9uIHtiYWNrZ3JvdW5kOiMzMzM7IGNvbG9yOiNmZmY7IGZvbnQtc2l6ZToxLjFlbTsgdGV4dC1hbGlnbjpjZW50ZXI7IHdpZHRoOjMwMHB4OyBwYWRkaW5nOjE1cHg7IGN1cnNvcjpwb2ludGVyfSAuaW1hZ2VfYm94IHsgcG9zaXRpb246cmVsYXRpdmU7IG1hcmdpbjo3cHg7IH0gLmltYWdlX2JveCBpbWd7IGJvcmRlcjoxcHggc29saWQgI2VlZTsgfSAjY29udGFpbmVyRmxCIHsgei1pbmRleDo5OTk5OTk5OyB9IC5pbWFnZV9yaWJib24geyBwb3NpdGlvbjphYnNvbHV0ZTsgbGVmdDozcHg7IHRvcDotNHB4OyB6LWluZGV4Ojg1MDsgb3ZlcmZsb3c6aGlkZGVuOyB3aWR0aDoxMTJweDsgaGVpZ2h0OjExMnB4OyB0ZXh0LWFsaWduOnJpZ2h0OyB9IC5pbWFnZV9yaWJib24gc3BhbiB7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiMyYzJjMmM7IHRleHQtYWxpZ246Y2VudGVyOyBsaW5lLWhlaWdodDoyOHB4OyB0cmFuc2Zvcm06cm90YXRlKC00NWRlZyk7IC13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgtNDVkZWcpOyB3aWR0aDoxNDhweDsgZGlzcGxheTpibG9jazsgYmFja2dyb3VuZDojZmZmZmZmOyBib3gtc2hhZG93OjAgM3B4IDEwcHggLTVweCByZ2JhKDAsIDAsIDAsIDEpOyBwb3NpdGlvbjphYnNvbHV0ZTsgdG9wOjMwcHg7IGxlZnQ6LTMwcHg7IH0gLmltYWdlX3JpYmJvbiBzcGFuOjpiZWZvcmUgeyBjb250ZW50OiIiOyBwb3NpdGlvbjphYnNvbHV0ZTsgbGVmdDowcHg7IHRvcDoxMDAlOyB6LWluZGV4Oi0xOyBib3JkZXItbGVmdDozcHggc29saWQgI2ZmZmZmZjsgYm9yZGVyLXJpZ2h0OjNweCBzb2xpZCB0cmFuc3BhcmVudDsgYm9yZGVyLWJvdHRvbTozcHggc29saWQgdHJhbnNwYXJlbnQ7IGJvcmRlci10b3A6M3B4IHNvbGlkICNmZmZmZmY7IH0gLmltYWdlX3JpYmJvbiBzcGFuOjphZnRlciB7IGNvbnRlbnQ6IiI7IHBvc2l0aW9uOmFic29sdXRlOyByaWdodDowcHg7IHRvcDoxMDAlOyB6LWluZGV4Oi0xOyBib3JkZXItbGVmdDozcHggc29saWQgdHJhbnNwYXJlbnQ7IGJvcmRlci1yaWdodDozcHggc29saWQgI2ZmZmZmZjsgYm9yZGVyLWJvdHRvbTozcHggc29saWQgdHJhbnNwYXJlbnQ7IGJvcmRlci10b3A6M3B4IHNvbGlkICNmZmZmZmY7IH0gLnJpYmJvbi1jb250YWluZXIgeyB3aWR0aCA6MjAwcHg7IGhlaWdodCA6MjAwcHg7IG92ZXJmbG93IDpoaWRkZW47IHBvc2l0aW9uIDphYnNvbHV0ZTsgdG9wIDowOyBsZWZ0IDowOyB9IC5yaWJib24tY29udGFpbmVyIC5jb3JuZXItcmliYm9uIHsgei1pbmRleCA6NTU1OyBtYXJnaW4gOjA7IHBhZGRpbmcgOjAuNXJlbSAwICFpbXBvcnRhbnQ7IGJveC1zaGFkb3cgOjAgM3B4IDEwcHggLTVweCByZ2JhKDAsIDAsIDAsIDEpOyBmb250LXNpemUgOjFyZW07IGxpbmUtaGVpZ2h0IDoxMnB4OyB0ZXh0LWFsaWduIDpjZW50ZXI7IHBvc2l0aW9uIDphYnNvbHV0ZTsgdG9wIDowOyBsZWZ0IDowOyB0cmFuc2Zvcm0gOnRyYW5zbGF0ZVgoLTM1JSkgdHJhbnNsYXRlWSgwJSkgcm90YXRlKC00NWRlZyk7IHRyYW5zZm9ybS1vcmlnaW4gOnRvcCByaWdodDsgYmFja2dyb3VuZCA6dmFyKC0tY29ybmVyLXJpYmJvbi1iZy1jb2xvcik7IGNvbG9yIDp2YXIoLS1jb3JuZXItcmliYm9uLXRleHQtY29sb3IpOyB9IC5yaWJib24tY29udGFpbmVyIC5jb3JuZXItcmliYm9uOmJlZm9yZSwgLnJpYmJvbi1jb250YWluZXIgLmNvcm5lci1yaWJib246YWZ0ZXIgeyBjb250ZW50IDoiIjsgcG9zaXRpb24gOmFic29sdXRlOyB0b3AgOjA7IG1hcmdpbiA6MCAtMXB4OyB3aWR0aCA6MTAwJTsgaGVpZ2h0IDoxMDAlOyBiYWNrZ3JvdW5kIDp2YXIoLS1jb3JuZXItcmliYm9uLWJnLWNvbG9yKTsgfSAucmliYm9uLWNvbnRhaW5lciAuY29ybmVyLXJpYmJvbjpiZWZvcmUgeyBsZWZ0OjEwMCU7IH0gLnJpYmJvbi1jb250YWluZXIgLmNvcm5lci1yaWJib246YWZ0ZXIgeyByaWdodDoxMDAlOyB9IC5oZWFkaW5nIHsgbWluLWhlaWdodDozNXB4OyBib3JkZXItYm90dG9tOjFweCBzb2xpZCAjODA4MDgwOyBiYWNrZ3JvdW5kOiNjY2NjY2M7IHRleHQtYWxpZ246Y2VudGVyOyBwYWRkaW5nOjEwcHggNXB4IDVweCA1cHg7IH0gLmhlYWRpbmcgdGFibGV7IHdpZHRoOjIyNXB4OyBtYXJnaW46MCBhdXRvOyB9ICNzZWFyY2hDb250YWluZXIgLml0ZW0geyBib3JkZXItYm90dG9tOjFweCBzb2xpZCByZ2JhKDAsMCwwLDAuMSk7IGJvcmRlci10b3A6MXB4IHNvbGlkIHJnYmEoMjU1LDI1NSwyNTUsMC40KTsgcGFkZGluZzoxMHB4IGluaGVyaXQ7IG1hcmdpbjowIDAgMCAwOyBkaXNwbGF5OmJsb2NrOyBjbGVhcjpib3RoOyBtaW4taGVpZ2h0OjgwcHg7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IH0gI3NlYXJjaENvbnRhaW5lciAuaXRlbSBpbWcge2Zsb2F0OmxlZnQ7IHdpZHRoOjkwcHg7IC13ZWJraXQtYm9yZGVyLXJhZGl1czo0cHg7IC1tb3otYm9yZGVyLXJhZGl1czo0cHg7IGJvcmRlci1yYWRpdXM6NHB4OyBib3JkZXI6M3B4IHNvbGlkICNmZmY7IG1hcmdpbjouM2VtIDEwcHg7IC13ZWJraXQtYm94LXNoYWRvdzowIDFweCAzcHggcmdiYSgwLCAwLCAwLCAwLjQpOyAtbW96LWJveC1zaGFkb3c6MCAxcHggM3B4IHJnYmEoMCwgMCwgMCwgMC40KTsgYm94LXNoYWRvdzowIDFweCAzcHggcmdiYSgwLCAwLCAwLCAwLjQpOyB9ICNzZWFyY2hDb250YWluZXIgLml0ZW0gaDMgeyBtYXJnaW46MCAwIDAgMDsgcGFkZGluZzowIDAgMCAwOyBmb250LXNpemU6MXJlbSA7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgY29sb3I6IzExMTsgbGluZS1oZWlnaHQ6MThweDsgbWFyZ2luLXRvcDo1cHg7IH0gLnByaWNlLCAuZGV0YWlscyB7IC13ZWJraXQtYm9yZGVyLXJhZGl1czo2cHg7IC1tb3otYm9yZGVyLXJhZGl1czo2cHg7IGJvcmRlci1yYWRpdXM6NnB4OyAtd2Via2l0LWJveC1zaGFkb3c6aW5zZXQgMCAxcHggM3B4IHJnYmEoMCwgMCwgMCwgMC40KTsgLW1vei1ib3gtc2hhZG93Omluc2V0IDAgMXB4IDNweCByZ2JhKDAsIDAsIDAsIDAuNCk7IGJveC1zaGFkb3c6aW5zZXQgMCAxcHggM3B4IHJnYmEoMCwgMCwgMCwgMC40KTsgZm9udC13ZWlnaHQ6Ym9sZDsgcGFkZGluZzo3cHg7IGZsb2F0OmxlZnQ7IGRpc3BsYXk6YmxvY2s7IH0gLnByaWNlX3VzZWRfbGVmdCwucHJpY2VfdXNlZF9yaWdodHsgdGV4dC1hbGlnbjpsZWZ0OyBmb250LXNpemU6MS43NXJlbSA7IGZvbnQtd2VpZ2h0OmJvbGQ7IGJhY2tncm91bmQtY29sb3I6I0YyRjJGMjsgaGVpZ2h0OjYwcHg7IHRleHQtYWxpZ246Y2VudGVyOyBwYWRkaW5nOjA7IHdpZHRoOjUwJTsgfSAuc3BlY3NfdXNlZF9sZWZ0IHsgcGFkZGluZzo4cHggMTBweDsgY29sb3I6I2FhYWFhYTsgfSAuc3BlY3NfdXNlZF9yb3cyIHsgYmFja2dyb3VuZC1jb2xvcjojRjJGMkYyOyB9IC5zcGVjc191c2VkX2FmdGVyeyBiYWNrZ3JvdW5kLWNvbG9yOiNGMkYyRjI7IHBhZGRpbmctYm90dG9tOjEwcHg7IGJvcmRlci10b3A6MXB4IHNvbGlkICNjY2NjY2M7IH0gLnVzZWRfZGV0YWlsc19idG57IGRpc3BsYXk6YmxvY2s7IHdpZHRoOjI0MHB4OyBib3JkZXItcmFkaXVzOjNweDsgdmVydGljYWwtYWxpZ246bWlkZGxlOyBiYWNrZ3JvdW5kOiMwMDA7IG1hcmdpbjowIGF1dG87IHBhZGRpbmc6MTBweCAwOyB9IC51c2VkX2RldGFpbHNfYnRuIGF7IGNvbG9yOiNGRkY7IH0gLnByaWNlX3VzZWRfbGVmdCBzcGFueyBjb2xvcjojRDNEM0QzOyB9IC51c2VkX3NlYXJjaF9yZWJhdGV7IGRpc3BsYXk6YmxvY2s7IGZvbnQtc2l6ZToxLjE4OHJlbSA7IGZvbnQtd2VpZ2h0OmJvbGQ7IH0gLnJlYmF0ZV9wcmljZXsgY29sb3I6cmVkOyB9IC51c2VkX3NlYXJjaF9yZWJhdGVfdGR7IHBhZGRpbmc6MTBweCAwOyB0ZXh0LWFsaWduOmNlbnRlcjsgYmFja2dyb3VuZDojZTZlNmU2OyB9IC5wcmljZSB7IGJhY2tncm91bmQtY29sb3I6I2NkY2RjZDsgY29sb3I6IzExMTsgZm9udC1zaXplOjAuNzVyZW0gOyBwYWRkaW5nLXRvcDo4cHg7IHdpZHRoOjM2JTsgcGFkZGluZy1ib3R0b206NXB4OyB9IHByaWNlX3NlYXJjaF91c2VkeyBiYWNrZ3JvdW5kOiNGMkYyRjI7IGhlaWdodDo0MHB4OyB0ZXh0LWFsaWduOmNlbnRlcjsgdmVydGljYWwtYWxpZ246bWlkZGxlOyBmb250LXNpemU6MS41NjNyZW0gOyBmb250LXdlaWdodDpib2xkOyB9IC51c2VkX29sZF9wcmljZXsgZm9udC1zaXplOjEuMTI1cmVtIDsgY29sb3I6I2FhYWFhYTsgbGluZS1oZWlnaHQ6MTBweDsgfSAuZGV0YWlscyB7IGJhY2tncm91bmQ6LXdlYmtpdC1ncmFkaWVudChsaW5lYXIsbGVmdCB0b3AsbGVmdCBib3R0b20sY29sb3Itc3RvcCgwLjA1LCMwMDAwMDApLGNvbG9yLXN0b3AoMSwjMzMzMzMzKSk7IGJhY2tncm91bmQ6LW1vei1saW5lYXItZ3JhZGllbnQodG9wLCMwMDAwMDA1JSwjMzMzMzMzMTAwJSk7IGJhY2tncm91bmQ6LXdlYmtpdC1saW5lYXItZ3JhZGllbnQodG9wLCMwMDAwMDA1JSwjMzMzMzMzMTAwJSk7IGJhY2tncm91bmQ6LW8tbGluZWFyLWdyYWRpZW50KHRvcCwjMDAwMDAwNSUsIzMzMzMzMzEwMCUpOyBiYWNrZ3JvdW5kOi1tcy1saW5lYXItZ3JhZGllbnQodG9wLCMwMDAwMDA1JSwjMzMzMzMzMTAwJSk7IGJhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwjMDAwMDAwNSUsIzMzMzMzMzEwMCUpOyBmaWx0ZXI6cHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LmdyYWRpZW50KHN0YXJ0Q29sb3JzdHI9JyMwMDAwMDAnLGVuZENvbG9yc3RyPScjMzMzMzMzJyxHcmFkaWVudFR5cGU9MCk7IGJhY2tncm91bmQtY29sb3I6IzMzMzMzMzsgbWFyZ2luLXJpZ2h0OjEwcHg7IGZvbnQtc2l6ZTowLjkzOHJlbSA7IG1hcmdpbi1sZWZ0OjVweDsgcGFkZGluZzo4cHggMjBweDsgbWFyZ2luLXJpZ2h0OjBweDsgfSAudmlkZW9zX3BpY3R1cmVzX2J1dHRvbnNfY29udGFpbmVyIHsgbWFyZ2luLWJvdHRvbTowcHghaW1wb3J0YW50OyB9IC5pLWNhbWVyYTpiZWZvcmV7IGNvbnRlbnQ6IlxmMDNkIjsgZm9udC1mYW1pbHk6IkZvbnQgQXdlc29tZSA1IFBybyI7IHBhZGRpbmctcmlnaHQ6NXB4OyBmb250LXdlaWdodDo5MDA7IHdpZHRoOjE1cHg7IH0gLmktcGhvdG86YmVmb3JlIHsgY29udGVudDoiXGYwMzAiOyBmb250LWZhbWlseToiRm9udCBBd2Vzb21lIDUgUHJvIjsgcGFkZGluZy1yaWdodDo1cHg7IGZvbnQtd2VpZ2h0OjkwMDsgd2lkdGg6MTVweDsgfSAuZnVsbFdpZHRoQnV0dG9ueyB3aWR0aDo5MCU7IHBhZGRpbmc6dmFyKC0tcyk7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgYm94LXNpemluZzpib3JkZXItYm94OyBtYXJnaW4tbGVmdDo1JTsgbWFyZ2luLXJpZ2h0OjUlOyBib3JkZXItcmFkaXVzOjNweDsgcG9zaXRpb246cmVsYXRpdmU7IH0gLmZ1bGxXaWR0aEJ1dHRvbiBhIHsgZGlzcGxheTppbmxpbmUtYmxvY2s7IH0gLmZiLmZ1bGxXaWR0aEJ1dHRvbnsgcG9zaXRpb246cmVsYXRpdmU7IGJhY2tncm91bmQtY29sb3I6IzNhNTg5ODsgY29sb3I6I2ZmZjsgfSAuZmIuZnVsbFdpZHRoQnV0dG9uIGEgeyBjb2xvcjojZmZmOyBtYXJnaW4tbGVmdDo1MHB4OyB9IC5mYiBzcGFuLmZhLXN0YWNreyBjb2xvcjojM2E1ODk4OyBwb3NpdGlvbjphYnNvbHV0ZTsgdG9wOjA7IH0gLnRleHRfc2xpZGUgYSB7IGhlaWdodDoxNHB4IWltcG9ydGFudDsgfSAjdmRwX3ByaWNlX2Jsb2NrLCN2ZHBfcHJpY2VfYmxvY2tfdXNlZHsgYm9yZGVyLWJvdHRvbToxcHggc29saWQgIzAwMDsgYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1saWdodCk7IGJvcmRlci1jb2xvcjojYmJiOyB9ICN2ZHBfcHJpY2VfYmxvY2t7IG1pbi1oZWlnaHQ6MzBweDsgfSBkaXYjY29tcGxfdGFibGUgYSB7IGNvbG9yOiMzMzM7IH0gLmNoZXZyb24tcmlnaHQ6YWZ0ZXIgeyBjb250ZW50OiJcZjA1NCI7IGZvbnQtZmFtaWx5OiJGb250IEF3ZXNvbWUgNSBQcm8iOyBmb250LXN0eWxlOm5vcm1hbDsgZm9udC13ZWlnaHQ6OTAwOyB0ZXh0LWRlY29yYXRpb246aW5oZXJpdDsgcG9zaXRpb246YWJzb2x1dGU7IHJpZ2h0OjIlOyB9IGZ1bGxXaWR0aEJ1dHRvbjpiZWZvcmUgeyBmb250LWZhbWlseToiRm9udCBBd2Vzb21lIDUgUHJvIjsgZm9udC1zdHlsZTpub3JtYWw7IGZvbnQtd2VpZ2h0OjkwMDsgdGV4dC1kZWNvcmF0aW9uOmluaGVyaXQ7IHBhZGRpbmctcmlnaHQ6NXB4OyBwb3NpdGlvbjphYnNvbHV0ZTsgcmlnaHQ6MDsgcGFkZGluZy10b3A6MnB4OyB9ICNzb2NpYWxfbWVkaWFfaWNvbnNfZGl2eyBtYXJnaW4tdG9wOjE1cHg7IH0gI3NvY2lhbF9tZWRpYV9pY29uc19kaXYgKiArICp7IG1hcmdpbi1sZWZ0OjFyZW07IH0gI3NvY2lhbF9tZWRpYV9pY29uc19kaXYgLmZhYnsgZm9udC1zaXplOjEuNXJlbTsgfSAjc29jaWFsX21lZGlhX2ljb25zX2RpdiBheyBjb2xvcjojODA4MDgwOyB9IC5zb2NpYWwgeyB0ZXh0LWFsaWduOmNlbnRlcjsgd2lkdGg6MTlweDsgaGVpZ2h0OjE5cHg7IGZsb2F0OnJpZ2h0OyBiYWNrZ3JvdW5kOnJnYigyNTUsMjU1LDI1NSk7IGJvcmRlcjoxcHggc29saWQgcmdiKDIwNCwyMDQsMjA0KTsgYm94LXNoYWRvdzowIDJweCA0cHggcmdiYSgwLDAsMCwwLjE1KSwgaW5zZXQgMCAwIDUwcHggcmdiYSgwLDAsMCwwLjEpOyBib3JkZXItcmFkaXVzOjEwMHB4OyBtYXJnaW46MCAxMHB4IDBweCAwOyBwYWRkaW5nOjlweDsgfSAuc29jaWFsLXNoYXJlIHsgd2lkdGg6MTlweDsgaGVpZ2h0OjE5cHg7IGJhY2tncm91bmQ6cmdiKDI1NSwyNTUsMjU1KTsgYm9yZGVyLXJhZGl1czoxMDBweDsgbWFyZ2luOjAgMTBweCAwcHggMDsgfSAjc29jaWFsX21lZGlhX2ljb25zX2RpdiBhLnNvY2lhbCAuZmFieyBmb250LXNpemU6MS4xODhyZW0gOyB9IC5zb2NpYWwgaXsgZm9udC1zaXplOjEuMjVyZW0gOyB9IC5nb29nbGUtcGx1czpob3ZlcntiYWNrZ3JvdW5kOiNERDRCMzk7Y29sb3I6I0ZGRiFpbXBvcnRhbnQ7fSAuZmFjZWJvb2s6aG92ZXJ7YmFja2dyb3VuZDojM2I1OTk4O2NvbG9yOiNGRkYhaW1wb3J0YW50O30gLnR3aXR0ZXI6aG92ZXJ7YmFja2dyb3VuZDojMDBhY2VlO2NvbG9yOiNGRkYhaW1wb3J0YW50O30gLnBpbnRlcmVzdDpob3ZlcntiYWNrZ3JvdW5kOiNjODIzMmM7Y29sb3I6I0ZGRiFpbXBvcnRhbnQ7fSAubGlua2VkaW46aG92ZXJ7YmFja2dyb3VuZDojMGU3NmE4O2NvbG9yOiNGRkYhaW1wb3J0YW50O30gLnNreXBlOmhvdmVye2JhY2tncm91bmQ6IzAwYWZmMDtjb2xvcjojRkZGIWltcG9ydGFudDt9IC55b3V0dWJlOmhvdmVye2JhY2tncm91bmQ6I2M0MzAyYjtjb2xvcjojRkZGIWltcG9ydGFudDt9IC50dW1ibHI6aG92ZXJ7YmFja2dyb3VuZDojMzQ1MjZmO2NvbG9yOiNGRkYhaW1wb3J0YW50O30gLmRldGFpbHMgYSB7IGNvbG9yOiNmZmY7IGRpc3BsYXk6YmxvY2s7IHRleHQtYWxpZ246Y2VudGVyOyB9IC5wYWdpbmF0aW9uIHtjbGVhcjpib3RoOyBwYWRkaW5nOjVweDsgcGFkZGluZy1sZWZ0OjEwMHB4O30gLnBhZ2luYXRpb24gYSwgLnBhZ2luYXRpb24gYS5zZWxlY3RlZCB7IGRpc3BsYXk6YmxvY2s7IHBhZGRpbmc6NXB4IDdweDsgcGFkZGluZy10b3A6OHB4OyBmb250LXNpemU6MC45MzhyZW0gOyBjb2xvcjojZmZmOyBmb250LXdlaWdodDpib2xkOyB0ZXh0LWFsaWduOmNlbnRlcjsgZmxvYXQ6bGVmdDsgd2lkdGg6MTNweDsgbWFyZ2luOjRweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjZweDsgLW1vei1ib3JkZXItcmFkaXVzOjZweDsgYm9yZGVyLXJhZGl1czo2cHg7IH0gLnBhZ2luYXRpb24gYSB7YmFja2dyb3VuZDojNjY2IDt9IC5wYWdpbmF0aW9uIGEuc2VsZWN0ZWQge2JhY2tncm91bmQ6IzIyMiA7fSAucGFnZW5vNXt3aWR0aDoxMDAlO21hcmdpbjozMHB4IDAgMjBweCAwcHg7IHBhZGRpbmc6MDsgZmxvYXQ6bGVmdH0gLnBhZ2VfbmFtZTE4IGF7IGNvbG9yOiMzMzM7IH0gLnBhZ2VubzJ7aGVpZ2h0OjI0cHg7IH0gLnBhZ2VubzIgdWx7IGxpc3Qtc3R5bGUtdHlwZTpub25lOyBtYXJnaW46MDsgcGFkZGluZzowOyB0ZXh0LXRyYW5zZm9ybTpub25lOyB9IC5wYWdlbm8yIHVsIGxpeyBsaXN0LXN0eWxlLXR5cGU6bm9uZTsgbWFyZ2luOjA7IGRpc3BsYXk6aW5saW5lO30gLnBhZ2VubzIgdWwgbGkgYXsgbGlzdC1zdHlsZS10eXBlOm5vbmU7IG1hcmdpbjowOyBkaXNwbGF5OmJsb2NrOyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojMzIzMjMyOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgcGFkZGluZzowIDdweDsgbWFyZ2luLXJpZ2h0OjJweDsgZm9udC13ZWlnaHQ6Ym9sZDsgbGluZS1oZWlnaHQ6MjRweDsgdGV4dC10cmFuc2Zvcm06bm9uZTsgdGV4dC1hbGlnbjpjZW50ZXI7IHRleHQtdHJhbnNmb3JtOm5vbmU7IGJhY2tncm91bmQ6I2IzYjRiNTsgZmxvYXQ6bGVmdDsgLW1vei1ib3JkZXItcmFkaXVzOjRweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjRweDsgYm9yZGVyLXJhZGl1czo0cHg7IC1raHRtbC1ib3JkZXItcmFkaXVzOjRweDt9IC5wYWdlbm8yIHVsIGxpIGE6aG92ZXJ7IGxpc3Qtc3R5bGUtdHlwZTpub25lOyBtYXJnaW46MDsgZGlzcGxheTpibG9jazsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6I0ZGRkZGRjsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IHBhZGRpbmc6MCA3cHg7IG1hcmdpbi1yaWdodDoycHg7IGZvbnQtd2VpZ2h0OmJvbGQ7IGxpbmUtaGVpZ2h0OjI0cHg7IHRleHQtdHJhbnNmb3JtOm5vbmU7IHRleHQtYWxpZ246Y2VudGVyOyB0ZXh0LXRyYW5zZm9ybTpub25lOyBiYWNrZ3JvdW5kOiMyODI4Mjg7IGZsb2F0OmxlZnQ7IC1tb3otYm9yZGVyLXJhZGl1czo0cHg7IC13ZWJraXQtYm9yZGVyLXJhZGl1czo0cHg7IGJvcmRlci1yYWRpdXM6NHB4OyAta2h0bWwtYm9yZGVyLXJhZGl1czo0cHg7fSAucGFnZW5vMiBsaSBhLmFjdGl2ZXsgbGlzdC1zdHlsZS10eXBlOm5vbmU7IG1hcmdpbjowOyBkaXNwbGF5OmJsb2NrOyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojRkZGRkZGOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgcGFkZGluZzowIDdweDsgbWFyZ2luLXJpZ2h0OjJweDsgZm9udC13ZWlnaHQ6Ym9sZDsgbGluZS1oZWlnaHQ6MjRweDsgdGV4dC10cmFuc2Zvcm06bm9uZTsgdGV4dC1hbGlnbjpjZW50ZXI7IHRleHQtdHJhbnNmb3JtOm5vbmU7IGJhY2tncm91bmQ6IzI4MjgyODsgZmxvYXQ6bGVmdDsgLW1vei1ib3JkZXItcmFkaXVzOjRweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjRweDsgYm9yZGVyLXJhZGl1czo0cHg7IC1raHRtbC1ib3JkZXItcmFkaXVzOjRweDt9ICNwYWdlRGl2IGEgeyBjb2xvcjojZmZmOyB9ICNzZWFyY2hfdXNlZF9maWx0ZXItYm94LC5maWx0ZXItYWRqeyBiYWNrZ3JvdW5kOiM4MDgwODA7IGNvbG9yOndoaXRlOyB0ZXh0LWFsaWduOmNlbnRlcjsgfSAjc2VhcmNoX3VzZWRfZmlsdGVyLWJveHsgcGFkZGluZzoxNXB4IDVweDsgfSAuZmlsdGVyLWFkansgcGFkZGluZzo1cHggNXB4OyB9ICNzZWFyY2hfdXNlZF9maWx0ZXItYm94IC5mYSwgLmZpbHRlci1hZGogLmZheyBmb250LXNpemU6MC45MzhyZW0gOyB9IC51aS1hY2NvcmRpb24taGVhZGVyLWljb257IG1hcmdpbi10b3A6LTExcHghaW1wb3J0YW50OyB9IC51aS1hY2NvcmRpb24tY29udGVudHsgYm9yZGVyLXJhZGl1czowIWltcG9ydGFudDsgYm9yZGVyOm5vbmUhaW1wb3J0YW50OyBib3gtc2hhZG93Om5vbmUhaW1wb3J0YW50OyB9ICNjaXR5VGl0bGV7IGNvbG9yOiM2NjY2NjY7IGZvbnQtc2l6ZTowLjkzOHJlbSA7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgZGlzcGxheTpibG9jazsgfSAudGl0bGVJbmZveyBmb250LXNpemU6MS4xMjVyZW0gIWltcG9ydGFudDsgZm9udC13ZWlnaHQ6bm9ybWFsIWltcG9ydGFudDsgZGlzcGxheTpibG9jayFpbXBvcnRhbnQ7IH0gLnRpdGxlQ2FyeyBmb250LXNpemU6MS4zNzVyZW0gIWltcG9ydGFudDsgZm9udC13ZWlnaHQ6bm9ybWFsIWltcG9ydGFudDsgZm9udC13ZWlnaHQ6Ym9sZCFpbXBvcnRhbnQ7IH0gLnNlYXJjaHJlc3VsdCBoMiwgI1NlYXJjaFRpdGxlIHsgY29sb3I6IzMzMzsgZm9udC1zaXplOjEuNTYzcmVtIDsgZm9udC13ZWlnaHQ6bm9ybWFsOyBtYXJnaW46MCAwIDAgMDsgcGFkZGluZzoyNXB4IDAgMTBweCAxNXB4OyBjbGVhcjpib3RoOyBiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmY7IH0gLm5ldy1pdGVtIHsgYm9yZGVyLWJvdHRvbToxcHggc29saWQgcmdiYSgwLDAsMCwwLjEpOyBwYWRkaW5nOjAgOyBtYXJnaW46MCAwIDAgMDsgZGlzcGxheTpibG9jazsgY2xlYXI6Ym90aDsgZm9udC1zaXplOjAuODc1cmVtIDsgZmxvYXQ6bGVmdDsgd2lkdGg6MTAwJTsgYmFja2dyb3VuZC1jb2xvcjojZmZmOyB9IC5uZXctaXRlbTpsYXN0LW9mLXR5cGV7IGJvcmRlci1ib3R0b206bm9uZTsgfSAubmV3X3ByaWNlX2Jsb2NreyBmb250LXNpemU6MC44NzVyZW0gOyBmb250LXdlaWdodDpub3JtYWw7IGZsb2F0OmxlZnQ7IGNsZWFyOmJvdGg7IG1hcmdpbi10b3A6LTVweDsgfSAubmV3X21ha2VfbmFtZXsgZGlzcGxheTpibG9jazsgZm9udC1zaXplOjAuODc1cmVtIDsgZm9udC13ZWlnaHQ6bm9ybWFsOyBtYXJnaW4tYm90dG9tOi0zcHg7IH0gLm5ldy1pdGVtIC50aHVtYiB7IGZsb2F0OnJpZ2h0OyB3aWR0aDo0MCU7IG1hcmdpbjouM2VtIDBweDsgdGV4dC1hbGlnbjpyaWdodDsgfSAubmV3Y2FyX2Jsb2NrX2Rlc2MgYXsgY29sb3I6IzMzMzMzMzsgfSAubmV3X21vZGVsX25hbWV7IGZvbnQtc2l6ZToxLjEyNXJlbSA7IGZsb2F0OmxlZnQ7IG1hcmdpbi1yaWdodDo1cHg7IGZvbnQtd2VpZ2h0OmJvbGQ7IH0gLm5ld195ZWFyeyBmbG9hdDpsZWZ0OyB9IC5uZXctaXRlbSAudGh1bWIgaW1neyBtYXgtd2lkdGg6MTAwJTsgYm9yZGVyOjA7IH0gLm5ld2Nhcl9ibG9ja19kZXNjIHsgbWFyZ2luLXRvcDoxMHB4OyBwb3NpdGlvbjpyZWxhdGl2ZTsgcGFkZGluZzowOyBsaW5lLWhlaWdodDoyMHB4OyB3aWR0aDo1MCU7IHBhZGRpbmctbGVmdDoyNXB4OyBmbG9hdDpsZWZ0OyBjb2xvcjojMzMzOyB9IG5ld2Nhcl9ibG9jayBoM3sgfSAubmV3LWl0ZW0gaDMgeyBmbG9hdDpsZWZ0OyBwYWRkaW5nOjEwcHg7IGZvbnQtc2l6ZToxLjEyNXJlbSA7IGZvbnQtd2VpZ2h0OmJvbGQ7IHdpZHRoOjk1JTsgfSAubmV3LWl0ZW0gLmFycm93IHsgZmxvYXQ6bGVmdDsgYmFja2dyb3VuZC1jb2xvcjojRkZGRkZGOyBib3JkZXItcmFkaXVzOjE0cHg7IHdpZHRoOjE1cHg7IG1hcmdpbjozMHB4IDVweCAxMHB4IDEwcHg7IH0gLm5ldy1kZXRhaWxzIGgxLCAubmV3LWRldGFpbHMgaDIgLC51c2VkX3NlYXJjaF9pdGVtIGgyLCAudXNlZC1kZXRhaWxzIGgxLCAubmV3LWRldGFpbHMgc3Bhbi5oMi1hbHQgeyBjb2xvcjojMTExOyBjbGVhcjpib3RoOyBwb3NpdGlvbjpyZWxhdGl2ZTsgcGFkZGluZy1sZWZ0OjIwcHg7IGxpbmUtaGVpZ2h0OjIxcHg7IG1hcmdpbi1sZWZ0OjE1cHg7IG1hcmdpbi1yaWdodDoxNXB4OyBtYXJnaW4tYm90dG9tOjEwcHg7IH0gLm5ldy1kZXRhaWxzIC50Ym9yZGVyIHsgcGFkZGluZy10b3A6MTBweDsgYm9yZGVyLXRvcDoxcHggc29saWQgI2U3ZTdlNzsgfSAubmV3LWRldGFpbHMgaDEgLm1ha2VNb2RlbFllYXIsIC51c2VkX3NlYXJjaF9pdGVtIGgyIC5tYWtlTW9kZWxZZWFyLCAudXNlZC1kZXRhaWxzIGgxIC5tYWtlTW9kZWxZZWFyeyBmb250LXNpemU6MS41NjNyZW0gOyB9IC5uZXctZGV0YWlscyBoMSAudmVyc2lvbkZ1bGwsIC51c2VkX3NlYXJjaF9pdGVtIGgyIC52ZXJzaW9uRnVsbCwgLnVzZWQtZGV0YWlscyBoMSAudmVyc2lvbkZ1bGx7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgZm9udC1zaXplOjFyZW0gOyBvdmVyZmxvdy13cmFwOmFueXdoZXJlOyB9IC5uZXctZGV0YWlscyBoMSAuZGVhbGVyTGNhdGlvbkNhclRpdGxlLCAudXNlZF9zZWFyY2hfaXRlbSBoMiAuZGVhbGVyTGNhdGlvbkNhclRpdGxlLCAudXNlZC1kZXRhaWxzIGgxIC5kZWFsZXJMY2F0aW9uQ2FyVGl0bGUgeyBmb250LXdlaWdodDpub3JtYWw7IGNvbG9yOiM3NTc1NzU7IGZvbnQtc2l6ZTowLjkzOHJlbSA7IGxldHRlci1zcGFjaW5nOi0xcHg7IH0gLmZ1bGxXaWR0aEJ1dHRvbiBpeyBwYWRkaW5nLXJpZ2h0OjVweDsgbWluLXdpZHRoOjE4cHg7IH0gLnVzZWQtZGV0YWlscyBoMSBzcGFuLmZhLWNoZXZyb24tcmlnaHR7IG1pbi13aWR0aDoxLjVyZW07IG1pbi1oZWlnaHQ6MS41cmVtOyBmb250LXNpemU6MXJlbTsgcGFkZGluZzowOyBib3JkZXItcmFkaXVzOjFyZW07IG1hcmdpbjowIDVweCAwIDA7IGRpc3BsYXk6ZmxleDsgYWxpZ24taXRlbXM6Y2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyOyB9IC5uZXctZGV0YWlscyAjY2FyVGl0bGUgLmZhLWNoZXZyb24tcmlnaHQsIC51c2VkX3NlYXJjaF9pdGVtICNjYXJUaXRsZSAuZmEtY2hldnJvbi1yaWdodCwgLnVzZWQtZGV0YWlscyBoMSAuZmEtY2hldnJvbi1yaWdodHsgYm9yZGVyLXJhZGl1czoxM3B4OyB3aWR0aDoxNHB4OyBoZWlnaHQ6MTdweDsgcGFkZGluZy10b3A6M3B4OyBwYWRkaW5nLWxlZnQ6NnB4OyBtYXJnaW4tbGVmdDotMjhweDsgZmxvYXQ6bGVmdDsgbWFyZ2luLXRvcDoxNHB4OyBmb250LXNpemU6MC44NzVyZW0gOyBib3gtc2l6aW5nOmNvbnRlbnQtYm94OyBib3JkZXI6MXB4IHNvbGlkICMyYzJjMmM7IGJhY2tncm91bmQtY29sb3I6I2ZmZmZmZjsgY29sb3I6IzJjMmMyYzsgfSAjU2VhcmNoVGl0bGUgLmZhLWNoZXZyb24tcmlnaHR7IGJvcmRlci1yYWRpdXM6MzBweDsgd2lkdGg6MjNweCAhaW1wb3J0YW50OyBoZWlnaHQ6MjlweCAhaW1wb3J0YW50OyBwYWRkaW5nLXRvcDozcHggIWltcG9ydGFudDsgcGFkZGluZy1sZWZ0OjExcHggIWltcG9ydGFudDsgZmxvYXQ6bGVmdDsgbWFyZ2luLXRvcDo4cHg7IGZvbnQtc2l6ZToxLjVyZW0gIWltcG9ydGFudDsgYm9yZGVyOjFweCBzb2xpZCAjMmMyYzJjOyBiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmY7IGNvbG9yOiMyYzJjMmMgOyBtYXJnaW4tcmlnaHQ6MTBweDsgfSAuZm9vdGVyX2Rpc2NsYW1lciBheyBjb2xvcjojNzA3MDcwIH0gLm5ld2Nhcl9ibG9ja19kZXNjIC5mYS1jaGV2cm9uLXJpZ2h0eyBib3JkZXItcmFkaXVzOjEwcHg7IHdpZHRoOjEycHg7IGhlaWdodDoxNHB4OyBwYWRkaW5nLXRvcDoycHg7IHBhZGRpbmctbGVmdDo0cHg7IG1hcmdpbi1sZWZ0Oi0yOHB4OyBmbG9hdDpsZWZ0OyBtYXJnaW4tdG9wOjE0cHg7IGZvbnQtc2l6ZTowLjgxM3JlbSA7IGJvcmRlcjoxcHggc29saWQgIzJjMmMyYzsgYmFja2dyb3VuZC1jb2xvcjojZmZmZmZmOyBjb2xvcjojMmMyYzJjIDsgfSAubmV3LWRldGFpbHMgI21haW5Db21wYXJlVmlldyBoMiwgLm5ldy1kZXRhaWxzICNtYWluQ29tcGFyZVZpZXcgc3Bhbi5oMi1hbHQsIC5uZXctZGV0YWlscyAuYnJvY2h1cmUtaW1nLWJ0biBzcGFuLmgyLWFsdCwgaDIuYnJvY2h1cmUtaW1nLXRpdGxlIHsgY29sb3I6I2ZmZjsgZm9udC1zaXplOjAuOTM4cmVtIDsgZm9udC13ZWlnaHQ6Ym9sZDsgbWFyZ2luOjAgMCAwIDA7IHBhZGRpbmc6N3B4IDAgN3B4IDEwcHg7IGNsZWFyOmJvdGg7IH0gLm5ldy1kZXRhaWxzICNtYWluQ29tcGFyZVZpZXcgc3Bhbi5oMi1hbHQsIC5uZXctZGV0YWlscyAuYnJvY2h1cmUtaW1nLWJ0biBzcGFuLmgyLWFsdCB7IGRpc3BsYXk6YmxvY2s7IH0gLm5ldy1kZXRhaWxzID4gcCB7cGFkZGluZzo3cHggMTBweDt9IC5vdGhlckxpbmtzIHsgbWFyZ2luOjMwcHggMCAxNXB4OyBwYWRkaW5nOjAgMTVweDsgfSAub3RoZXJMaW5rcyBhIHsgZGlzcGxheTpsaXN0LWl0ZW07IGZvbnQtc2l6ZToxLjFlbTsgdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTsgbGlzdC1zdHlsZS1wb3NpdGlvbjppbnNpZGU7IH0gLm90aGVyTGlua3MgYSArIGEgeyBtYXJnaW4tdG9wOjEwcHg7IH0gLnJhaXRpbmctZGV0YWlscyBoMXsgY29sb3I6IzExMTsgZm9udC1zaXplOjEuM2VtOyB0ZXh0LWFsaWduOmNlbnRlcjsgbWFyZ2luLWJvdHRvbToxMHB4OyB9IC5yYWl0aW5nLWRldGFpbHMgLmJveDJfdGV4dHsgdGV4dC1hbGlnbjpqdXN0aWZ5OyBwYWRkaW5nOjAgNXB4OyB9IC5wb3NpdGl2ZVJhdGluZ1R4dHtwYWRkaW5nOjEwcHg7fSAucG9zaXRpdmVSYXRpbmdUeHQgLmJ0bi1kZWZhdWx0e3RleHQtdHJhbnNmb3JtOm5vbmU7fSAucG9zaXRpdmVSYXRpbmdUeHQgcCB7Zm9udC1zaXplOjEuMDYzcmVtIDsgdGV4dC1hbGlnbjpqdXN0aWZ5O30gLnBhZ2VfbmFtZTJ7dGV4dC1hbGlnbjpjZW50ZXI7fSAub3VydGVhbSBhIHsgY29sb3I6IzMzMzMzMzsgfSAjc2VhcmNoX3VzZWRfZmlsdGVyeyBib3JkZXI6MDsgYm9yZGVyLXJhZGl1czp1bnNldDsgZm9udC13ZWlnaHQ6Ym9sZDsgfSAjdXNlZE9wdGlvbnMgLmxpc3RpdGVtOmFmdGVyeyBjb250ZW50OiJcZjAwYyI7IGZvbnQtZmFtaWx5OiJGb250IEF3ZXNvbWUgNSBQcm8iOyBmb250LXdlaWdodDo5MDA7IHBhZGRpbmctcmlnaHQ6NXB4OyB3aWR0aDoxNXB4OyBmbG9hdDpyaWdodDsgfSAubGlzdGl0ZW0geyBib3JkZXItYm90dG9tOjFweCBzb2xpZCByZ2JhKDAsMCwwLDAuMSk7IHBhZGRpbmc6NXB4IDA7IGZvbnQtc2l6ZTowLjkzOHJlbSA7IH0gLmxpc3RpdGVtIGltZyB7d2lkdGg6MTAwJSAhaW1wb3J0YW50O2hlaWdodDphdXRvICFpbXBvcnRhbnQ7fSAubGlzdGl0ZW0gc3BhbiB7ZGlzcGxheTppbmxpbmUtYmxvY2s7fSAubGlzdGl0ZW0gLmxpc3RkZXNjIHtmbG9hdDpsZWZ0OyB3aWR0aDo1MCU7IG1hcmdpbi1sZWZ0OjVweDt9IC5saXN0aXRlbSAubGlzdHZhbCB7ZmxvYXQ6cmlnaHQ7d2lkdGg6NDUlOyB0ZXh0LWFsaWduOnJpZ2h0O21hcmdpbi1yaWdodDo1cHg7fSAuYmlnIHt3aWR0aDo5NSU7IGNsZWFyOmJvdGg7IG1hcmdpbjoxMHB4IGF1dG87IGRpc3BsYXk6YmxvY2s7IGhlaWdodDo0MHB4O30gLnByaWNldGV4dCB7Y29sb3I6IzExMTsgZm9udC1zaXplOjFyZW0gOyBmb250LXdlaWdodDpib2xkOyBtYXJnaW46MTBweCAwIDAgMDsgZGlzcGxheTpibG9jazsgZmxvYXQ6bGVmdH0gLnByaW50LCAubGlrZSB7ZmxvYXQ6cmlnaHQ7IHdpZHRoOjYwcHg7Zm9udC1zaXplOjAuNzVyZW0gOyB0ZXh0LWFsaWduOnJpZ2h0OyBtYXJnaW4tdG9wOjEwcHg7fSAub2xkLWRldGFpbHMgdGFibGV7IGJvcmRlci1jb2xsYXBzZTpjb2xsYXBzZTsgfSAjc3BlY1RpdGxleyBib3JkZXItdG9wOjFweCBzb2xpZCAjYWFhYWFhOyBib3JkZXItYm90dG9tOjFweCBzb2xpZCAjYWFhYWFhOyBwYWRkaW5nLXRvcDoxMHB4OyBwYWRkaW5nLWJvdHRvbToxMHB4OyBwYWRkaW5nLWxlZnQ6MTBweDsgYmFja2dyb3VuZC1jb2xvcjojZWVlOyBtYXJnaW4tdG9wOjI1cHg7IH0gLm9sZC1kZXRhaWxzIHRhYmxlIHRyIHRkeyBwYWRkaW5nOjVweCAwcHggNXB4IDEwcHg7IGJvcmRlci1ib3R0b206MXB4IHNvbGlkICNlNmU2ZTY7IH0gLm9sZC1kZXRhaWxzIHVseyBsaXN0LXN0eWxlOm5vbmU7IH0gLm9sZC1kZXRhaWxzIHRkIGkuZmEtY2hldnJvbi1yaWdodHsgYm9yZGVyLXJhZGl1czoxM3B4OyB3aWR0aDoxMnB4OyBoZWlnaHQ6MTRweDsgcGFkZGluZy10b3A6M3B4OyBwYWRkaW5nLWxlZnQ6NXB4OyBmbG9hdDpsZWZ0OyBmb250LXNpemU6MC43NXJlbSA7IG1hcmdpbjowcHg7IGJvcmRlcjoxcHggc29saWQgIzJjMmMyYzsgYmFja2dyb3VuZC1jb2xvcjojZmZmZmZmOyBjb2xvcjojMmMyYzJjIDsgfSAub2xkLWRldGFpbHMgdHI6bnRoLWNoaWxkKGV2ZW4pIHsgYmFja2dyb3VuZDojZWVlOyB9IC5vdGhlckJHeyBiYWNrZ3JvdW5kOiNmZmZmZmYgIWltcG9ydGFudDsgfSAuYmdOb25leyBiYWNrZ3JvdW5kOm5vbmUgIWltcG9ydGFudDsgfSAudGV4dENvbG9yeyBjb2xvcjojMmMyYzJjICFpbXBvcnRhbnQ7IH0gLnRleHRDb2xvclVzZWRTUlBNb2JpbGV7IGNvbG9yOiNmZmZmZmYgIWltcG9ydGFudDsgfSAudGV4dF9zbGlkZSBhID4gYnsgZmxvYXQ6bGVmdCFpbXBvcnRhbnQ7IG92ZXJmbG93OmhpZGRlbiAhaW1wb3J0YW50OyBwb3NpdGlvbjpyZWxhdGl2ZSFpbXBvcnRhbnQ7IG1hcmdpbjowcHghaW1wb3J0YW50OyB3aWR0aDoxMDAlIWltcG9ydGFudDsgdG9wOi0zcHghaW1wb3J0YW50OyB3aWR0aDoyMDBweCFpbXBvcnRhbnQ7IGxlZnQ6MnB4OyB9IC5ncmF5YmcgeyBtYXJnaW46MTBweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjRweDsgLW1vei1ib3JkZXItcmFkaXVzOjRweDsgYm9yZGVyLXJhZGl1czo0cHg7IGNsZWFyOmJvdGg7IGRpc3BsYXk6YmxvY2s7IGJhY2tncm91bmQ6I2NmY2ZjZiB1cmwoL2ltYWdlcy9ncmF5YmcucG5nKSByZXBlYXQteCAwIDA7IHBhZGRpbmc6MCAxMHB4OyBoZWlnaHQ6NTBweDsgfSAudGV4dDEsIHRleHQyLCBwaWMge21hcmdpbjowIDAgMCAwOyBoZWlnaHQ6NTBweDsgZGlzcGxheTpibG9jazsgcGFkZGluZzowIDEwcHggMCAxMHB4OyBsaW5lLWhlaWdodDo1MHB4OyBmb250LXNpemU6MC44NzVyZW0gO30gLnRleHQxIHtib3JkZXItcmlnaHQ6MXB4IHNvbGlkIHJnYmEoMjU1LDI1NSwyNTUsMC42KTt9IC5waWMge2JvcmRlci1sZWZ0OjFweCBzb2xpZCByZ2JhKDAsMCwwLDAuMyk7IGJvcmRlci1yaWdodDoxcHggc29saWQgcmdiYSgyNTUsMjU1LDI1NSwwLjYpO30gLnRleHQyIHtib3JkZXItbGVmdDoxcHggc29saWQgcmdiYSgwLDAsMCwwLjMpO30gLnByb21vaW1hZ2Uge2Zsb2F0OmxlZnQ7IHdpZHRoOjExMHB4OyBtYXJnaW4tdG9wOjdweDt9IC5wcm9tb2RldGFpbCB7ZmxvYXQ6bGVmdDsgd2lkdGg6MTcwcHg7fSAucHJvbW9kZXRhaWwgaDIge2ZvbnQtc2l6ZToxLjVyZW0gOyBtYXJnaW46LTEwcHggMCAwIDA7IHBhZGRpbmc6MCAwIDAgMH0gLnByb21vLWNhcmQgeyBtYXJnaW46MCAxNXB4IDEwcHg7IG1hcmdpbi1ib3R0b206OHB4OyBkaXNwbGF5OmJsb2NrOyBib3JkZXI6MXB4IHNvbGlkICNjOGM4Yzg7IHBhZGRpbmc6M3B4OyBib3JkZXItcmFkaXVzOjVweDsgYm94LXNoYWRvdzowcHggMHB4IDEwcHggMnB4ICNjOGM4Yzg7IH0gLnByb21vLWNhcmQgLnByb21vLWltYWdlIHsgdGV4dC1hbGlnbjpjZW50ZXI7IH0gLnByb21vLWNhcmQgLnByb21vLXRpdGxlIHsgZm9udC1zaXplOjEuMzEzcmVtIDsgZGlzcGxheTpibG9jazsgZm9udC13ZWlnaHQ6NjAwOyBjb2xvcjojMzMzOyBtYXJnaW4tdG9wOjhweDsgdGV4dC1hbGlnbjpjZW50ZXI7IH0gLnByb21vLWltYWdlIGltZyB7IHdpZHRoOjEwMCU7IH0gLnByb21vLWNhcmQgLnByb21vLWRldGFpbHMtd3JhcHBlciB7IH0gLnByb21vLWNhcHRpb24geyBjb2xvcjojMzMzMzMzOyB9IC5wcm9tby1jYXB0aW9uOm5vdCg6bGFzdC1jaGlsZCkgeyBtYXJnaW4tYm90dG9tOjE1cHg7IH0gLnByb21vLWNhcHRpb24gLnByb21vLXRpdGxlIHsgdGV4dC1hbGlnbjpsZWZ0OyB9IC5wcm9tby1vZmZlciAucHJvbW8tYm9keSAucHJvbW8tdGl0bGUgeyBtaW4taGVpZ2h0OjA7IH0gLnByb21vLXN1YmNhcHRpb24geyBtYXJnaW4tdG9wOjVweDsgZm9udC1zaXplOjAuODc1cmVtOyB9IC5wcm9tby1kZXRhaWxzLWJ0biB7IGJhY2tncm91bmQ6LXdlYmtpdC1ncmFkaWVudChsaW5lYXIsbGVmdCB0b3AsbGVmdCBib3R0b20sY29sb3Itc3RvcCgwLjA1LCMwMDAwMDApLGNvbG9yLXN0b3AoMSwjMzMzMzMzKSk7IGJhY2tncm91bmQ6LW1vei1saW5lYXItZ3JhZGllbnQodG9wLCMwMDAwMDA1JSwjMzMzMzMzMTAwJSk7IGJhY2tncm91bmQ6LXdlYmtpdC1saW5lYXItZ3JhZGllbnQodG9wLCMwMDAwMDA1JSwjMzMzMzMzMTAwJSk7IGJhY2tncm91bmQ6LW8tbGluZWFyLWdyYWRpZW50KHRvcCwjMDAwMDAwNSUsIzMzMzMzMzEwMCUpOyBiYWNrZ3JvdW5kOi1tcy1saW5lYXItZ3JhZGllbnQodG9wLCMwMDAwMDA1JSwjMzMzMzMzMTAwJSk7IGJhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwjMDAwMDAwNSUsIzMzMzMzMzEwMCUpOyBmaWx0ZXI6cHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LmdyYWRpZW50KHN0YXJ0Q29sb3JzdHI9JyMwMDAwMDAnLGVuZENvbG9yc3RyPScjMzMzMzMzJyxHcmFkaWVudFR5cGU9MCk7IGJhY2tncm91bmQtY29sb3I6IzMzMzMzMzsgZm9udC1zaXplOjAuOTM4cmVtIDsgdGV4dC1hbGlnbjpjZW50ZXI7IGJvcmRlci1yYWRpdXM6NnB4OyBwYWRkaW5nOjdweDsgfSAucHJvbW8tY2FyZCAucHJvbW8tZGV0YWlscy1idG4gYSB7IGNvbG9yOndoaXRlOyB0ZXh0LWFsaWduOmNlbnRlcjsgfSAuc2VydmljZS1zZWN0aW9uIHtjbGVhcjpib3RoOyBtYXJnaW46MTBweDsgZGlzcGxheTpibG9jazsgbWluLWhlaWdodDo4MHB4O30gLnNlcnZpY2Utc2VjdGlvbiBpbWcgeyB3aWR0aDoxMDAlOyBtYXJnaW4tYm90dG9tOjdweDsgfSAuc2VydmljZS1zZWN0aW9uIC5kZXRhaWxzIHsgYmFja2dyb3VuZDpyZ2IoNjgsNjgsNjgpOyB3aWR0aDoxNjVweDsgZmxvYXQ6bm9uZTsgZm9udC1zaXplOjAuNzVyZW0gOyBtYXJnaW4tdG9wOjVweDsgbWFyZ2luLWxlZnQ6MHB4OyB9IC5zZXJ2aWNlX2Rlc2N7IH0gLnNlcnZpY2VfbWFpbl9kZXNjIHsgbWFyZ2luOjEwcHg7IH0gLnNlcnZpY2VfbWFpbl9kZXNjIGF7IHRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7IH0gLnN0ZXBzIHt9IC5zdGVwcyB1bCB7fSAuc3RlcHMgdWwgbGl7IGxpc3Qtc3R5bGU6bm9uZTsgbGlzdC1zdHlsZS10eXBlOm5vbmU7IGZvbnQtc2l6ZTowLjkzOHJlbSA7IG1hcmdpbjowIDEwcHggMCAxMHB4OyBkaXNwbGF5OmJsb2NrOyB3aWR0aDo3MHB4OyBtYXJnaW4tYm90dG9tOjEwcHg7IGN1cnNvcjpkZWZhdWx0fSAuc3RlcHMgdWwgbGkgLmFjdGl2ZSwgLnN0ZXBzIHVsIGxpIC5pbmFjdGl2ZSB7IC13ZWJraXQtYm94LXNoYWRvdzowIDFweCAzcHggcmdiYSgwLCAwLCAwLCAwLjMpOyAtbW96LWJveC1zaGFkb3c6MCAxcHggM3B4IHJnYmEoMCwgMCwgMCwgMC4zKTsgYm94LXNoYWRvdzowIDFweCAzcHggcmdiYSgwLCAwLCAwLCAwLjMpOyAtd2Via2l0LWJvcmRlci1yYWRpdXM6MjVweDsgLW1vei1ib3JkZXItcmFkaXVzOjI1cHg7IGJvcmRlci1yYWRpdXM6MjVweDsgd2lkdGg6MjVweDsgaGVpZ2h0OjI1cHg7IGRpc3BsYXk6YmxvY2s7IGZvbnQtc2l6ZToxLjVyZW0gOyBmb250LXdlaWdodDpib2xkOyB0ZXh0LWFsaWduOmNlbnRlcjsgZmxvYXQ6cmlnaHQ7IG1hcmdpbi10b3A6LTJweDsgcGFkZGluZy1yaWdodDoxcHg7IGxpbmUtaGVpZ2h0OjI1cHg7IH0gLnN0ZXBzIHVsIGxpIC5hY3RpdmUgeyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL3doaXRlLnBuZykgcmVwZWF0LXg7IGNvbG9yOiMyYzJjMmM7fSAuc3RlcHMgdWwgbGkgLmluYWN0aXZlIHtiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL2JsYWNrLnBuZykgcmVwZWF0LXg7IGNvbG9yOiNmZmY7IH0gLmZvcm0ge21hcmdpbjoxMHB4O30gLmZvcm1zX2JveDIyIHsgYm94LXNpemluZzpib3JkZXItYm94OyB3aWR0aDoxMDAlOyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgbWFyZ2luOjAgMCAxMHB4IDA7IH0gLnZvaSB7IGZsb2F0OmxlZnQ7IG1hcmdpbi10b3A6OHB4OyB9ICNjcmVkaXRfdmlfYWR2YW5jZWQgbGFiZWwgaW5wdXQgeyBtYXJnaW4tdG9wOjEwcHg7IH0gc3Bhbi5hc3RrIHsgY29sb3I6I0ZGMDEwMTsgZm9udC1zaXplOjAuNjg4cmVtOyBmbG9hdDpsZWZ0OyBwYWRkaW5nLXJpZ2h0OjNweDsgfSAuY3JlZGl0LWNvbnNlbnRfX2NvbnRhaW5lciB7IGRpc3BsYXk6ZmxleDsgcGFkZGluZzowIDAuN3JlbTsgZm9udC1zaXplOjAuOHJlbTsgY29sb3I6IzI0MjQyNDsgfSAuY3JlZGl0LWNvbnNlbnRfX2NvbnRhaW5lciBkaXY6bm90KDpmaXJzdC1vZi10eXBlKSB7IG1hcmdpbi1sZWZ0OjAuN3JlbTsgfSAuZmllbGQgeyB3aWR0aDoxMDAlOyBib3JkZXItcmFkaXVzOjRweDsgYm9yZGVyOjFweCBzb2xpZCAjY2NjOyBib3gtc2l6aW5nOmJvcmRlci1ib3g7IH0gLmxhYmVsIHtwYWRkaW5nOjEwcHggMCAwIDA7fSAuZGVhbGVyYWRkcmVzcywgLmRlYWxlcnBob25lLCAuZGVhbGVyZW1haWwgeyBiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7IGJhY2tncm91bmQtc2l6ZTozMHB4OyBiYWNrZ3JvdW5kLXBvc2l0aW9uOjVweCAxM3B4OyBiYWNrZ3JvdW5kLWNvbG9yOiNkYmRiZGI7IC13ZWJraXQtYm9yZGVyLXJhZGl1czo0cHg7IC1tb3otYm9yZGVyLXJhZGl1czo0cHg7IGJvcmRlci1yYWRpdXM6NHB4OyBtYXJnaW46MTBweDsgZGlzcGxheTpibG9jazsgY2xlYXI6Ym90aDsgcGFkZGluZzoxNXB4IDEwcHggMTVweCA0MHB4OyBmb250LXdlaWdodDpub3JtYWwgfSAuZGVhbGVyYWRkcmVzcywgLmRlYWxlcnBob25lLCAuZGVhbGVyZW1haWwgeyBiYWNrZ3JvdW5kLWNvbG9yOndoaXRlOyB9IC5kZWFsZXJhZGRyZXNzOmJlZm9yZSB7IGNvbnRlbnQ6IlxmMDE1IjsgfSAuZGVhbGVycGhvbmU6YmVmb3JlIHsgY29udGVudDoiXGYwOTUiOyBtYXJnaW4tdG9wOjhweDsgfSAuZGVhbGVyZW1haWw6YmVmb3JlIHsgY29udGVudDoiXGYwZTAiOyB9IC5kZWFsZXJhZGRyZXNzOmJlZm9yZSwgLmRlYWxlcnBob25lOmJlZm9yZSwgLmRlYWxlcmVtYWlsOmJlZm9yZXsgZm9udC1mYW1pbHk6IkZvbnQgQXdlc29tZSA1IFBybyI7IGZvbnQtc3R5bGU6bm9ybWFsOyBmb250LXdlaWdodDo5MDA7IHRleHQtZGVjb3JhdGlvbjppbmhlcml0OyBjb2xvcjojMzMzOyBmb250LXNpemU6MS4xMjVyZW0gOyBwb3NpdGlvbjphYnNvbHV0ZTsgbGVmdDoyMXB4OyB9IC5kZWFsZXJwaG9uZSAjYWNjb3JkaW9uIC51aS1hY2NvcmRpb24taGVhZGVyLWljb24sIC5vcGVuX2hvdXJzX2NvbnRhaW5lciAudWktYWNjb3JkaW9uLWhlYWRlci1pY29uIHsgZGlzcGxheTpub25lOyB9IC5vcGVuX2hvdXJzX2NvbnRhaW5lciAubWFwX29wZW5faG91cnNfZXhwYW5kIHsgY29sb3I6IzAwMDAwMDsgfSAubWFwX29wZW5faG91cnNfbW9iaWxlIC52aXNpdENvbnRhY3RCdXR0b24sIC5vcGVuX2hvdXJzX2NvbnRhaW5lciAudmlzaXRDb250YWN0QnV0dG9ueyB3aWR0aDoxMDAlOyB0ZXh0LWFsaWduOmNlbnRlcjsgcGFkZGluZzoxMXB4IDVweCA5cHg7IGZvbnQtc2l6ZTowLjgxM3JlbSA7IG1hcmdpbi10b3A6MTBweDsgYm94LXNpemluZzpib3JkZXItYm94OyBiYWNrZ3JvdW5kLWNvbG9yOiMzMzRjOTY7IGNvbG9yOiNmZmZmZmY7IH0gLmRlYWxlcnBob25lIC51aS1hY2NvcmRpb24gLnVpLWFjY29yZGlvbi1pY29uc3sgcGFkZGluZy1sZWZ0OjA7IH0gLmRlYWxlcnBob25lIC5mYS1jYWxlbmRhcnsgbWFyZ2luLWxlZnQ6MTNweDsgbWFyZ2luLXJpZ2h0OjVweDsgfSAuZGVhbGVycGhvbmUgLnVpLWFjY29yZGlvbi1jb250ZW50IHsgYmFja2dyb3VuZC1jb2xvcjojZjNmM2YzIWltcG9ydGFudDsgYm9yZGVyOm5vbmUhaW1wb3J0YW50OyB9IC5kZWFsZXJwaG9uZS51aS1hY2NvcmRpb24gLnVpLWFjY29yZGlvbi1oZWFkZXJ7IHBhZGRpbmc6OHB4OyB9IC5oMy5tb2JpbGVCdXR0b257IGZvbnQtc2l6ZTowLjkzOHJlbSA7IH0gLm1vYmlsZUJ1dHRvbkNvbnRhY3R7IGJvcmRlci1yYWRpdXM6NHB4OyBkaXNwbGF5OmJsb2NrOyBjdXJzb3I6cG9pbnRlcjsgcG9zaXRpb246cmVsYXRpdmU7IG1hcmdpbi10b3A6MnB4OyBwYWRkaW5nOi41ZW0gLjVlbSAuNWVtIC43ZW07IHpvb206MTsgcGFkZGluZy1sZWZ0OjIuMmVtOyBvdXRsaW5lOjA7IGxpbmUtaGVpZ2h0OjEuMzsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IGxpc3Qtc3R5bGU6bm9uZTsgfSAubW9iaWxlQnV0dG9uQ29udGFjdCBpeyBtYXJnaW4tbGVmdDotMjBweDsgbWFyZ2luLXJpZ2h0OjEwcHg7IH0gLmJpZ2ZiIHtwYWRkaW5nOjMwcHggMDsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9iaWdmYi5wbmcpIHJlcGVhdC14IDAgMH0gLmJ1dHRvbl9qb2JvZmZlciB7IGRpc3BsYXk6YmxvY2s7IGxpbmUtaGVpZ2h0OjUwcHg7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2ljb25fZW1wbG95LnBuZycpIG5vLXJlcGVhdCBzY3JvbGwgMHB4IDBweCByZ2IoMjMxLCAyMzIsIDIzMik7IHRleHQtYWxpZ246Y2VudGVyOyBmb250LXdlaWdodDpib2xkOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgcGFkZGluZy1sZWZ0OjQwcHg7IH0gZGl2LmVycm9yTXNnIHsgYmFja2dyb3VuZC1jb2xvcjojRkZCQUJBOyBiYWNrZ3JvdW5kLWltYWdlOnVybCgiL2ltYWdlcy9lcnJvci5wbmciKTsgYmFja2dyb3VuZC1wb3NpdGlvbjoxMHB4IGNlbnRlcjsgYmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0OyBib3JkZXI6MXB4IHNvbGlkOyBjb2xvcjojRDgwMDBDOyBkaXNwbGF5Om5vbmU7IHBhZGRpbmc6MTVweCAxMHB4IDE1cHggNTBweDsgei1pbmRleDo5OTk5OyB9IC5lbWFpbEJvZHksIC5lbWFpbFN1YmplY3R7IGRpc3BsYXk6bm9uZTsgfSAuZmlsZWlucHV0LWJ1dHRvbiB7IGJhY2tncm91bmQ6dXJsKCIvaW1hZ2VzL2JsX2JnLnBuZyIpIHJlcGVhdC14IHNjcm9sbCBsZWZ0IHRvcCByZ2JhKDAsIDAsIDAsIDApOyB9IC5maWxlaW5wdXQtYnV0dG9uOmhvdmVyIHsgYmFja2dyb3VuZDp1cmwoIi9pbWFnZXMvYnV0dG9uXzIucG5nIikgcmVwZWF0LXggc2Nyb2xsIGxlZnQgdG9wIHJnYmEoMCwgMCwgMCwgMCk7IH0gLmZpbGVpbnB1dC1idXR0b24sIC5maWxlaW5wdXQtYnV0dG9uOmhvdmVyIHsgZm9udC1zaXplOjAuODc1cmVtICFpbXBvcnRhbnQ7IGxpbmUtaGVpZ2h0OjMxcHg7IHBvc2l0aW9uOnJlbGF0aXZlOyB9IC5maWxlaW5wdXQtYnV0dG9uIGlucHV0IHsgcG9zaXRpb246YWJzb2x1dGU7IHRvcDowOyByaWdodDowOyBtYXJnaW46MDsgb3BhY2l0eTowOyAtbXMtZmlsdGVyOidhbHBoYShvcGFjaXR5PTApJzsgY3Vyc29yOnBvaW50ZXI7IH0gLnBhZ2VfbmFtZTV7aGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IHdpZHRoOjEwMCUgIWltcG9ydGFudDtwYWRkaW5nOjAgMHB4IDEwcHggMjFweDsgbGluZS1oZWlnaHQ6MzBweDsgZm9udC1zaXplOjEuNXJlbSA7IGNvbG9yOiMyNDI0MjQ7Zm9udC13ZWlnaHQ6bm9ybWFsIH0gLnBpY2JveDkwe3dpZHRoOjkwcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBtYXJnaW4tcmlnaHQ6OHB4OyBib3JkZXI6MXB4IHNvbGlkICNhY2FjYWM7IC13ZWJraXQtYm9yZGVyLXJhZGl1czo3cHg7IGJvcmRlci1yYWRpdXM6N3B4OyAta2h0bWwtYm9yZGVyLXJhZGl1czo3cHg7IH0gLnBpY2JveDkwIGltZyB7d2lkdGg6OTBweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IC1tb3otYm9yZGVyLXJhZGl1czo3cHg7IC13ZWJraXQtYm9yZGVyLXJhZGl1czo3cHg7IGJvcmRlci1yYWRpdXM6N3B4OyAta2h0bWwtYm9yZGVyLXJhZGl1czo3cHg7IH0gLnRleHRib3gxOTF7d2lkdGg6MTkxcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBmb250LXNpemU6MC44MTNyZW0gOyBsaW5lLWhlaWdodDoxLjI7IGNvbG9yOiMyNDI0MjQ7IH0gLnRleHRib3gxOTEgaDR7IGZvbnQtc2l6ZToxLjEyNXJlbSA7IGNvbG9yOiMyNDI0MjQ7IHBhZGRpbmctYm90dG9tOjVweDsgfSAubWFpbmJveDI5MXt3aWR0aDo5MyU7aGVpZ2h0OjExMnB4OyBmbG9hdDpsZWZ0OyBjbGVhcjpib3RoOyBtYXJnaW46MCA1cHggMTBweCAwOyBiYWNrZ3JvdW5kOiNlNmU2ZTY7IGJvcmRlcjoxcHggc29saWQgI2Q0ZDRkNDsgLW1vei1ib3JkZXItcmFkaXVzOjhweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjhweDsgYm9yZGVyLXJhZGl1czo4cHg7IC1raHRtbC1ib3JkZXItcmFkaXVzOjhweDsgcGFkZGluZzoxNXB4IDEwcHg7fSAubGF6eXtib3JkZXI6MDtkaXNwbGF5Om5vbmV9IC50ZWNoU3BlY3N7d2lkdGg6NjIxcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBtYXJnaW46MHB4OyBwYWRkaW5nOjI1cHggMTVweDsgYmFja2dyb3VuZDojZTZlN2U3OyBiYWNrZ3JvdW5kLXBvc2l0aW9uOnJpZ2h0IGJvdHRvbTsgLW1vei1ib3JkZXItcmFkaXVzLXRvcGxlZnQ6MHB4Oy1tb3otYm9yZGVyLXJhZGl1cy10b3ByaWdodDowcHg7LW1vei1ib3JkZXItcmFkaXVzLWJvdHRvbXJpZ2h0OjZweDstbW96LWJvcmRlci1yYWRpdXMtYm90dG9tbGVmdDo2cHg7LXdlYmtpdC1ib3JkZXItdG9wLWxlZnQtcmFkaXVzOjBweDstd2Via2l0LWJvcmRlci10b3AtcmlnaHQtcmFkaXVzOjBweDstd2Via2l0LWJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjZweDstd2Via2l0LWJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6NnB4O2JvcmRlci10b3AtbGVmdC1yYWRpdXM6MHB4O2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOjBweDtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjZweDtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czo2cHg7fSAudGV4dF9ib3gxMSBhIHsgY29sb3I6IzI0MjQyNDsgZmxvYXQ6bGVmdDsgaGVpZ2h0OmF1dG87IG1hcmdpbi1sZWZ0OjE1cHg7IHBhZGRpbmc6MTBweCAwOyB9IC50ZXh0X2JveDExIGEgeyBjb2xvcjojMjQyNDI0OyBmbG9hdDpsZWZ0OyBoZWlnaHQ6YXV0bzsgbWFyZ2luLWxlZnQ6MTVweDsgcGFkZGluZzoxMHB4IDA7IH0gLnRleHRfYm94MTEgdWwsIC50ZXh0X2JveDExIHAgeyBjb2xvcjojMjQyNDI0OyBmbG9hdDpsZWZ0OyBoZWlnaHQ6YXV0bzsgd2lkdGg6MTAwJTsgdGV4dC1hbGlnbjpqdXN0aWZ5OyB9IC50ZXh0X2JveDExIHAgaW1neyB3aWR0aDoxMDAlICFpbXBvcnRhbnQ7IGhlaWdodDphdXRvICFpbXBvcnRhbnQ7IG1hcmdpbjowIWltcG9ydGFudDsgcGFkZGluZzoxMHB4IDAhaW1wb3J0YW50OyB9IC5wcmljZU5vdGUgeyBjb2xvcjojNzU3NTc1OyBmb250LXNpemU6MC44NWVtOyBmb250LXN0eWxlOml0YWxpYzsgdGV4dC1hbGlnbjpqdXN0aWZ5OyBkaXNwbGF5OmJsb2NrOyBwYWRkaW5nLXJpZ2h0OjEwcHg7IGxpbmUtaGVpZ2h0OjEuMWVtOyBtYXJnaW46MTBweCAwOyB9IC5zdGFja2VkRGlzY2xhaW1lcnsgZGlzcGxheTpibG9jazsgbWFyZ2luLXRvcDoxMHB4OyB9IHNwYW4uc3RhY2tlZERpc2NsYWltZXI6YmVmb3JleyBjb250ZW50OiIqKiI7IHBvc2l0aW9uOnJlbGF0aXZlOyBmb250LXNpemU6MXJlbTsgfSAjbWFpbkNvbXBhcmVWaWV3eyBtYXJnaW46MDsgfSAjY29tcGxfdGFibGV7IG1hcmdpbi1ib3R0b206MjBweDsgfSAuaWROYXYxIHsgY29sb3I6I2Y5ZjlmOTsgZm9udC1zaXplOjAuNzVyZW0gOyBmb250LXN0eWxlOm5vcm1hbDsgZm9udC13ZWlnaHQ6Ym9sZDsgaGVpZ2h0OjI4cHg7IGxpc3Qtc3R5bGU6b3V0c2lkZSBub25lIG5vbmU7IHBhZGRpbmc6MDsgdGV4dC10cmFuc2Zvcm06dmFyKC0tdHh0LXVwcGVyKTsgfSAuaWROYXYxIGxpLnRvcCB7IGRpc3BsYXk6YmxvY2s7IGZsb2F0OmxlZnQ7IGhlaWdodDoyOHB4OyBwYWRkaW5nOjAgMnB4IDAgMDsgfSAuaWROYXYxIGxpLnRvcDEgeyBiYWNrZ3JvdW5kOnJnYmEoMCwgMCwgMCwgMCkgdXJsKCIvaW1hZ2VzL2JsX2hvdmVyLnBuZyIpIHJlcGVhdC14IHNjcm9sbCBsZWZ0IHRvcDsgYm9yZGVyLXJhZGl1czozcHg7IGNvbG9yOiNmZmY7IGRpc3BsYXk6YmxvY2s7IGZsb2F0OmxlZnQ7IGZvbnQtc2l6ZTowLjgxM3JlbSA7IGhlaWdodDoyOHB4OyBwYWRkaW5nOjAgMnB4IDAgMDsgdGV4dC1hbGlnbjpjZW50ZXI7IHRleHQtdHJhbnNmb3JtOnZhcigtLXR4dC11cHBlcik7IH0gLmlkTmF2MSBsaSBhLnRvcF9saW5rIHsgYmFja2dyb3VuZDpyZ2JhKDAsIDAsIDAsIDApIHVybCgiL2ltYWdlcy9ibF9iZy5wbmciKSByZXBlYXQteCBzY3JvbGwgbGVmdCB0b3A7IGJvcmRlci1yYWRpdXM6M3B4OyBjb2xvcjpyZ2IoMjU1LCAyNTUsIDI1NSk7IGN1cnNvcjpwb2ludGVyOyBkaXNwbGF5OmJsb2NrOyBmbG9hdDpsZWZ0OyBmb250LXNpemU6MC44MTNyZW0gOyBmb250LXdlaWdodDpub3JtYWw7IGhlaWdodDoyOHB4OyBsaW5lLWhlaWdodDozMHB4OyBwYWRkaW5nOjAgMTJweDsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IHRleHQtdHJhbnNmb3JtOnZhcigtLXR4dC11cHBlcik7IH0gLmlkTmF2MSBsaSBhLnRvcF9saW5rOmhvdmVyIHsgYmFja2dyb3VuZDpyZ2JhKDAsIDAsIDAsIDApIHVybCgiL2ltYWdlcy9ibF9ob3Zlci5wbmciKSByZXBlYXQteCBzY3JvbGwgbGVmdCB0b3A7IGJvcmRlci1yYWRpdXM6M3B4OyBjb2xvcjojZmZmOyB9IC5pZE5hdjEgbGkgYS50b3BfbGluazEgeyBiYWNrZ3JvdW5kOnJnYmEoMCwgMCwgMCwgMCkgdXJsKCIvaW1hZ2VzL2JsX2hvdmVyLnBuZyIpIHJlcGVhdC14IHNjcm9sbCBsZWZ0IHRvcDsgYm9yZGVyLXJhZGl1czozcHg7IGNvbG9yOiNmZWZlZmU7IGN1cnNvcjpwb2ludGVyOyBkaXNwbGF5OmJsb2NrOyBmbG9hdDpsZWZ0OyBmb250LXNpemU6MC44MTNyZW0gOyBmb250LXdlaWdodDpub3JtYWw7IGhlaWdodDoyOHB4OyBsaW5lLWhlaWdodDozMHB4OyBwYWRkaW5nOjAgMTJweDsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IHRleHQtdHJhbnNmb3JtOnZhcigtLXR4dC11cHBlcik7IH0gI2ZybVJlYmF0ZSAuaWROYXYxIGxpIGEudG9wX2xpbmsgeyBiYWNrZ3JvdW5kOnJnYmEoMCwgMCwgMCwgMCkgdXJsKCIvaW1hZ2VzL2J1dHRvbl9wb3B1cC5wbmciKSByZXBlYXQteCBzY3JvbGwgbGVmdCB0b3A7IGNvbG9yOiNmZmY7IH0gI2ZybVJlYmF0ZSAuaWROYXYxIGxpIGEudG9wX2xpbms6aG92ZXIgeyBiYWNrZ3JvdW5kOnJnYmEoMCwgMCwgMCwgMCkgdXJsKCIvaW1hZ2VzL2JsX2hvdmVyLnBuZyIpIHJlcGVhdC14IHNjcm9sbCBsZWZ0IHRvcDsgY29sb3I6I2ZmZjsgfSAudGV4dDIwIHsgZm9udC1zaXplOjAuODEzcmVtIDsgaGVpZ2h0OjIzcHg7IHRleHQtZGVjb3JhdGlvbjpub25lOyB9IC5wcm9tb2NvZGVib3h7IC1tb3otYm94LXNoYWRvdzppbnNldCAwcHggLTNweCA3cHggMHB4ICNlODBkMGQ7IC13ZWJraXQtYm94LXNoYWRvdzppbnNldCAwcHggLTNweCA3cHggMHB4ICNlODBkMGQ7IGJveC1zaGFkb3c6aW5zZXQgMHB4IC0zcHggN3B4IDBweCAjZTgwZDBkOyBiYWNrZ3JvdW5kOi13ZWJraXQtZ3JhZGllbnQobGluZWFyLCBsZWZ0IHRvcCwgbGVmdCBib3R0b20sIGNvbG9yLXN0b3AoMC4wNSwgI2ZmMzMzMyksIGNvbG9yLXN0b3AoMSwgI0RCMDAwMCkpOyBiYWNrZ3JvdW5kOi1tb3otbGluZWFyLWdyYWRpZW50KHRvcCwgI2ZmMzMzMyA1JSwgI0RCMDAwMCAxMDAlKTsgYmFja2dyb3VuZDotd2Via2l0LWxpbmVhci1ncmFkaWVudCh0b3AsICNmZjMzMzMgNSUsICNEQjAwMDAgMTAwJSk7IGJhY2tncm91bmQ6LW8tbGluZWFyLWdyYWRpZW50KHRvcCwgI2ZmMzMzMyA1JSwgI0RCMDAwMCAxMDAlKTsgYmFja2dyb3VuZDotbXMtbGluZWFyLWdyYWRpZW50KHRvcCwgI2ZmMzMzMyA1JSwgI0RCMDAwMCAxMDAlKTsgYmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCAjZmYzMzMzIDUlLCAjREIwMDAwIDEwMCUpOyBmaWx0ZXI6cHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LmdyYWRpZW50KHN0YXJ0Q29sb3JzdHI9JyNmZjMzMzMnLCBlbmRDb2xvcnN0cj0nI0RCMDAwMCcsR3JhZGllbnRUeXBlPTApOyBiYWNrZ3JvdW5kLWNvbG9yOiNmZjMzMzM7IGJvcmRlcjoxcHggc29saWQgI2Y1MWExYTsgY29sb3I6I0ZGRkZGRiFpbXBvcnRhbnQ7IGZvbnQtc2l6ZTowLjkzOHJlbSA7IHBhZGRpbmc6MTBweCAxMHB4IDA7IG1hcmdpbjowOyBtYXJnaW4tdG9wOjEwcHg7IG1hcmdpbi1sZWZ0OjM4cHg7IG1pbi13aWR0aDoxMDBweDsgYm9yZGVyLXJhZGl1czo2cHg7IGJveC1zaGFkb3c6aW5zZXQgMCAxcHggM3B4IHJnYmEoMCwgMCwgMCwgMC40KTsgZm9udC13ZWlnaHQ6Ym9sZDsgZmxvYXQ6bGVmdDsgZGlzcGxheTpibG9jazsgYm9yZGVyOjA7IHdpZHRoOjEwMHB4OyB9IC5kZXRhaWxQcmljZVdpdGhCdXR0b24geyBkaXNwbGF5OmlubGluZS1ibG9jazsgcG9zaXRpb246cmVsYXRpdmU7IG1hcmdpbi1sZWZ0OjVweDsgdmVydGljYWwtYWxpZ246dG9wOyBtYXJnaW4tYm90dG9tOjEwcHg7IG1hcmdpbi1yaWdodDo1cHg7IHdpZHRoOjQ5JTsgbWF4LXdpZHRoOjE5NXB4OyBtaW4td2lkdGg6MTIwcHg7IH0gLmRldGFpbFByaWNlV2l0aEJ1dHRvbiA+IC5kZXRhaWxQcmljZUJsb2NrIHsgbWFyZ2luLWxlZnQ6MDsgbWFyZ2luLWJvdHRvbTo5cHg7IH0gLmRldGFpbFByaWNlV2l0aEJ1dHRvbiA+IC5wcm9tb2NvZGVib3ggeyBtYXJnaW46MHB4OyB3aWR0aDoxMDAlOyBwYWRkaW5nOjZweCAwcHggM3B4IDBweDsgbWFyZ2luLXRvcDo5cHg7IH0gLmRldGFpbC1wcmljZS1wcm9tbyBoMiB7IGJhY2tncm91bmQtaW1hZ2U6dXJsKC9pbWFnZXMvYnV0dG9uX3Byb21vdGlvbi5wbmcpOyBjb2xvcjojRkZGOyBib3JkZXItcmFkaXVzOjhweDsgcGFkZGluZzo1cHggMDsgfSAuZGV0YWlsLXByaWNlLXByb21vIGEgeyBjb2xvcjojRkZGOyB9IC5kZXRhaWxQcmljZUJsb2NreyBkaXNwbGF5OmlubGluZS1ibG9jazsgbWFyZ2luLWxlZnQ6NXB4OyBwYWRkaW5nOjBweDsgYmFja2dyb3VuZC1jb2xvcjpsaWdodGdyZXk7IHZlcnRpY2FsLWFsaWduOnRvcDsgYm9yZGVyLXJhZGl1czo1cHg7IG1hcmdpbi1ib3R0b206MHB4OyB3aWR0aDoxMDAlOyBtYXgtd2lkdGg6MTk1cHg7IH0gLm5ldy1kZXRhaWxzIC5kZXRhaWxQcmljZVdpdGhCdXR0b24gPiAuZGV0YWlsUHJpY2VCbG9jayB7IG1hcmdpbi1ib3R0b206MHB4OyB9IEBtZWRpYShtYXgtd2lkdGg6MzA3cHgpIHsgLmRldGFpbFByaWNlQmxvY2sgeyBtYXgtd2lkdGg6MTc1cHg7IH0gfSAuZGV0YWlsUHJpY2VCbG9jayAjcmViYXRleyBtYXJnaW46MDsgYmFja2dyb3VuZC1jb2xvcjpibGFjazsgY29sb3I6d2hpdGU7IGJvcmRlci1yYWRpdXM6MCAwIDVweCA1cHg7IHBhZGRpbmc6NHB4IDAgMCAwOyB9IC5kZXRhaWxQcmljZUJsb2NrICNjYXJQcmljZXsgYmFja2dyb3VuZDpub25lOyBmb250LXNpemU6MS4yNXJlbSA7IGZvbnQtd2VpZ2h0OmJvbGQ7IHBhZGRpbmc6MHB4OyBjb2xvcjojMTExMTExOyBoZWlnaHQ6MjVweDsgfSAuc2NyYXRjaERldGFpbFByaWNleyBwb3NpdGlvbjphYnNvbHV0ZTsgdG9wOjNweDsgbGVmdDotMXB4OyB9IC5wcm9tb0JUTjpob3ZlciwgLnByb21vQlROIGE6aG92ZXIsIC5icm9jaHVyZUJ0bjpob3ZlciB7IGJhY2tncm91bmQ6IzMzNGM5NiFpbXBvcnRhbnQ7IGNvbG9yOiNmZmZmZmYhaW1wb3J0YW50OyBib3JkZXI6bm9uZSFpbXBvcnRhbnQ7IH0gZGl2I2xlYXNlQ29tbWVudHMgeyBwYWRkaW5nLWJvdHRvbToxMHB4OyB9IC5kZXRhaWxQcmljZUJsb2NrICNjYXJQcmljZURpc2N7IGJhY2tncm91bmQ6bm9uZTsgZm9udC1zaXplOjEuMjVyZW0gOyBmb250LXdlaWdodDpib2xkOyBwYWRkaW5nOjBweDsgY29sb3I6I0Q0MDAwMDsgaGVpZ2h0OjIwcHg7IH0gLmRldGFpbFByaWNlQmxvY2sgI2NhclByaWNlUHJvbW97IGJhY2tncm91bmQ6bm9uZTsgZm9udC1zaXplOjEuMjVyZW0gOyBmb250LXdlaWdodDpib2xkOyB9ICNhc1B1cmNoYXNlSW50ZW50IC5hc1BJVGl0bGUgeyBmb250LXNpemU6MS4yNXJlbSAhaW1wb3J0YW50OyB9ICNhc1B1cmNoYXNlSW50ZW50IGxpIGxhYmVseyBtYXJnaW4tbGVmdDowcHghaW1wb3J0YW50OyB9ICNhc1B1cmNoYXNlSW50ZW50IC52aU9wdGlvbnN7IHBhZGRpbmc6MHB4IWltcG9ydGFudDsgfSAjYXNQdXJjaGFzZUludGVudCAudmlPcHRpb25zIGxpeyBoZWlnaHQ6MjBweCFpbXBvcnRhbnQ7IHdpZHRoOjI2MHB4IWltcG9ydGFudDsgcGFkZGluZzowIWltcG9ydGFudDsgbWFyZ2luOjJweCFpbXBvcnRhbnQ7IH0gI2FzUHVyY2hhc2VJbnRlbnQgLnN0ZXBzID4gbGl7IHBhZGRpbmc6MTBweCFpbXBvcnRhbnQ7IG1hcmdpbi1ib3R0b206NXB4IWltcG9ydGFudDsgfSAjYXNQdXJjaGFzZUludGVudCAuc3RlcHN7IHRleHQtaW5kZW50OjAhaW1wb3J0YW50OyB9ICNhc1B1cmNoYXNlSW50ZW50IC5hc3llcyB7IHBhZGRpbmctbGVmdDo2NXB4IWltcG9ydGFudDsgbWFyZ2luLXRvcDo4cHghaW1wb3J0YW50OyB9ICNhc1B1cmNoYXNlSW50ZW50IC5hc3llc25veyB3aWR0aDo2MHB4IWltcG9ydGFudDsgbWFyZ2luLXRvcDowcHghaW1wb3J0YW50OyB9ICNhc1B1cmNoYXNlSW50ZW50IGlucHV0eyBwYWRkaW5nIDowcHghaW1wb3J0YW50OyB9ICNteWNhcm91c2VsZGl2eyBtYXJnaW4tdG9wOjEwcHg7IH0gI215Y2Fyb3VzZWxkaXYuYmx1cnJ5Zmlyc3RpbWFnZXsgbWluLWhlaWdodDp2YXIoLS1tb2ItY2Fyb3VzZWwtbWluLWhlaWdodCk7IH0gI215Y2Fyb3VzZWxkaXYuYmx1cnJ5Zmlyc3RpbWFnZSAub3dsLWNhcm91c2VsIC5vd2wtaXRlbSBpbWd7IGJvcmRlcjowOyB9ICNteWNhcm91c2VsZGl2LmJsdXJyeWZpcnN0aW1hZ2UgLmxvYWRlcl9vd2x7IHZpc2liaWxpdHk6dmlzaWJsZTsgb3BhY2l0eToxOyB6LWluZGV4OjI7IHBvc2l0aW9uOmFic29sdXRlOyBoZWlnaHQ6MTAwJTsgd2lkdGg6MTAwJTsgb3ZlcmZsb3c6aGlkZGVuOyB9ICNteWNhcm91c2VsZGl2LmJsdXJyeWZpcnN0aW1hZ2UgLmxvYWRlcl9vd2wgLnBsYWNlaG9sZGVyeyBoZWlnaHQ6MTAwJTsgd2lkdGg6Y2FsYygxMDB2dyAtIDIwcHgpOyBwb3NpdGlvbjphYnNvbHV0ZTsgYmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0OyBiYWNrZ3JvdW5kLXNpemU6Y29udGFpbjsgYmFja2dyb3VuZC1wb3NpdGlvbjpjZW50ZXIgY2VudGVyOyBtYXJnaW46MCAxMHB4OyB9ICNteWNhcm91c2VsZGl2LmJsdXJyeWZpcnN0aW1hZ2UgLmxvYWRlcl9vd2wuZmFkZS1vdXR7IHZpc2liaWxpdHk6aGlkZGVuOyBvcGFjaXR5OjA7IC13ZWJraXQtdHJhbnNpdGlvbjp2aXNpYmlsaXR5IDFtcyAxcywgb3BhY2l0eSAxcyBsaW5lYXI7IC1tb3otdHJhbnNpdGlvbjp2aXNpYmlsaXR5IDFtcyAxcywgb3BhY2l0eSAxcyBsaW5lYXI7IC1vLXRyYW5zaXRpb246dmlzaWJpbGl0eSAxbXMgMXMsIG9wYWNpdHkgMXMgbGluZWFyOyB0cmFuc2l0aW9uOnZpc2liaWxpdHkgMW1zIDFzLCBvcGFjaXR5IDFzIGxpbmVhcjsgfSBpbnB1dFt0eXBlPXJhZGlvXXsgLXdlYmtpdC1ib3gtc2hhZG93Om5vbmUhaW1wb3J0YW50OyAtbW96LWJveC1zaGFkb3c6IG5vbmUhaW1wb3J0YW50OyBib3gtc2hhZG93OiBub25lIWltcG9ydGFudDsgfSAubGFuZ3VhZ2VCYXJ7IG1heC13aWR0aDoyMDBweDsgfSAudWktd2lkZ2V0LWNvbnRlbnQsIC51aS13aWRnZXQtaGVhZGVyeyBiYWNrZ3JvdW5kOiNGMkYyRjIhaW1wb3J0YW50OyB9IC51aS1hY2NvcmRpb24gLnVpLWFjY29yZGlvbi1jb250ZW50IHsgcGFkZGluZzoxMHB4IWltcG9ydGFudDsgfSAudWktd2lkZ2V0LWNvbnRlbnQgeyBiYWNrZ3JvdW5kOiNlNmU2ZTYhaW1wb3J0YW50OyB9IC51aS10YWJzIC51aS10YWJzLW5hdiBsaXsgcGFkZGluZzoxcHggM3B4IWltcG9ydGFudDsgfSAjbWFpbkRpdl9OZXdNb2JpbGVMYW5kaW5nUGFnZXsgYmFja2dyb3VuZDojZmZmIHVybCgvaW1hZ2VzL2ZpbmFuY2UvaGVhZGVyLWJnLW1vYmlsZS5qcGcpIHRvcCBjZW50ZXIgbm8tcmVwZWF0IH0gLmNyZWRpdF9tX2hlYWRlciB7IHBvc2l0aW9uOnJlbGF0aXZlOyB9IC5jcmVkaXRfbV9oZWFkZXIgaW1nIHsgbWFyZ2luOjAgYXV0bzsgZGlzcGxheTpibG9jazsgd2lkdGg6MTAwJTsgfSAuY3JlZGl0X21fdGV4dC13cmFwcGVyIHsgcG9zaXRpb246YWJzb2x1dGU7IGhlaWdodDoxMDAlOyB3aWR0aDoxMDAlOyBsZWZ0OjUwJTsgdG9wOjA7IHRyYW5zZm9ybTp0cmFuc2xhdGVYKC01MCUpOyB9IC5jcmVkaXRfbV90aW1lIHsgY29sb3I6IzhGMEQyMDsgZm9udC13ZWlnaHQ6NTAwOyB9IC5jcmVkaXRfbV9ib3ggeyBjb2xvcjojZmZmZmZmOyBmb250LXdlaWdodDpib2xkOyBtYXJnaW4tbGVmdDo0MCU7IG1hcmdpbi10b3A6OSU7IGxpbmUtaGVpZ2h0OjE1dnc7IH0gLmNyZWRpdF9tX2JveDIgeyBtYXJnaW4tbGVmdDo0NyU7IG1hcmdpbi10b3A6NSU7IGZvbnQtc2l6ZTo1LjV2dzsgdGV4dC1hbGlnbjpjZW50ZXI7IHdpZHRoOjQ1JTsgfSAuY3JlZGl0X21fYm94IC5jcmVkaXRfbV85OSB7IGZvbnQtc2l6ZToxOXZ3OyB9IC5jcmVkaXRfbV9ib3ggLmNyZWRpdF9tX2FwcHJvdmVkIHsgZm9udC1zaXplOjh2dzsgdGV4dC10cmFuc2Zvcm06dmFyKC0tdHh0LXVwcGVyKTsgfSAuY3JlZGl0X21fbG9nb3sgcG9zaXRpb246cmVsYXRpdmU7ZmxvYXQ6cmlnaHQ7aGVpZ2h0Ojg1cHg7bWFyZ2luLXJpZ2h0OjMwcHg7Y2xlYXI6Ym90aDsgfSAuY3JlZGl0X21fcGhvdG97IGhlaWdodDozNjNweDsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9maW5hbmNlL21vYmlsZS1maW5hbmNpbmctaW1nLnBuZykgMCAwIG5vLXJlcGVhdDsgYmFja2dyb3VuZC1zaXplOjEwMCU7IH0gLmNyZWRpdF9tX2FwcHJvdmFsX2ZyeyBmbG9hdDpyaWdodDsgY2xlYXI6cmlnaHQ7IHdpZHRoOjE2M3B4OyBoZWlnaHQ6MTM3cHg7IG1hcmdpbjoyNXB4IDIwcHggMTBweCAwOyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL2ZpbmFuY2UvbG9nby1hcHByb3ZlZC1tb2JpbGVfcmVkX2ZyLnBuZykgMCAwIG5vLXJlcGVhdDsgfSAuY3JlZGl0X21fYXBwcm92YWxfZW57IGZsb2F0OnJpZ2h0OyBjbGVhcjpyaWdodDsgd2lkdGg6MTYzcHg7IGhlaWdodDoxMzdweDsgbWFyZ2luOjI1cHggMjBweCAxMHB4IDA7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvZmluYW5jZS9sb2dvLWFwcHJvdmVkLW1vYmlsZV9yZWRfZW4ucG5nKSAwIDAgbm8tcmVwZWF0OyB9IC5jcmVkaXRfbV9zdGFydGluZ2F0X3dyYXBwZXJ7IGZvbnQtc2l6ZToxLjVyZW0gOyBmb250LXdlaWdodDpsaWdodGVyICFpbXBvcnRhbnQ7bGluZS1oZWlnaHQ6MjRweDt0ZXh0LWFsaWduOmNlbnRlcjtjb2xvcjojMDI0MDZmO2NsZWFyOmJvdGg7bWFyZ2luLWJvdHRvbTozMHB4OyB9IC5jcmVkaXRfbV9zdGFydGluZ2F0IHsgbWFyZ2luLXRvcDoyNjBweDtmb250LXNpemU6MS40MzhyZW0gOyBmb250LXdlaWdodDpib2xkICFpbXBvcnRhbnQ7bGluZS1oZWlnaHQ6MjZweDtkaXNwbGF5OmJsb2NrOyB9IC5jcmVkaXRfbV9kZWxpdmVyeXsgZm9udC1zaXplOjEuNXJlbSA7IGZvbnQtd2VpZ2h0OmxpZ2h0ZXIgIWltcG9ydGFudDsgbGluZS1oZWlnaHQ6MjRweDt0ZXh0LWFsaWduOmNlbnRlcjtjb2xvcjojMDI0MDZmOyB9IC5jcmVkaXRfbV9jYWxsdXNfd3JhcHBlcnsgYmFja2dyb3VuZC1jb2xvcjojMDI2MmFjOyBiYWNrZ3JvdW5kLWltYWdlOi1tb3otbGluZWFyLWdyYWRpZW50KCMwMjYyYWMsIzAxMzc2MCk7IGJhY2tncm91bmQtaW1hZ2U6LXdlYmtpdC1saW5lYXItZ3JhZGllbnQoIzAyNjJhYywjMDEzNzYwKTsgYmFja2dyb3VuZC1pbWFnZTpsaW5lYXItZ3JhZGllbnQoIzAyNjJhYywjMDEzNzYwKTsgd2lkdGg6MTAwJTsgbWFyZ2luOjAgMCAyMHB4IDA7IGJvcmRlci1yYWRpdXM6M3B4OyB0ZXh0LWFsaWduOmNlbnRlcjsgfSAuY3JlZGl0X21fY2FsbHVzLCAuY3JlZGl0X21fY2FsbHVzIGF7IGRpc3BsYXk6YmxvY2s7aGVpZ2h0OjU1cHg7d2lkdGg6MTAwJTtjb2xvcjojZmZmOyB9IC5jcmVkaXRfY2FsbF91c18xIHsgZm9udC1zaXplOjAuNzVyZW0gOyBmb250LXdlaWdodDpsaWdodGVyICFpbXBvcnRhbnQ7IGxpbmUtaGVpZ2h0OjEycHg7IGxpbmUtaGVpZ2h0OjU1cHg7IG1hcmdpbi1sZWZ0OjEwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsgYm90dG9tOjZweDsgfSAuY3JlZGl0X2NhbGxfdXNfMiB7IGNvbnRlbnQ6dXJsKC9pbWFnZXMvZmluYW5jZS9pY29uLXBob25lLXdoaXRlLnBuZyk7bWFyZ2luOjAgMTBweDsgfSAuY3JlZGl0X2NhbGxfdXNfMyB7IGZvbnQtc2l6ZToxLjM3NXJlbSA7IGZvbnQtd2VpZ2h0Om5vcm1hbCAhaW1wb3J0YW50OyBsaW5lLWhlaWdodDoyMnB4OyBsaW5lLWhlaWdodDo1NXB4OyBtYXJnaW4tcmlnaHQ6MTBweDsgfSAuY3JlZGl0X21faW5uZXIgeyBwYWRkaW5nOjE1cHggMTBweDsgfSAuY3JlZGl0X21fc2Vlbl9hbGx7IHBvc2l0aW9uOnJlbGF0aXZlO3dpZHRoOjEwMCU7IGhlaWdodDo0MDBweDsgbWFyZ2luOjAgYXV0bzsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9maW5hbmNlL2hlYWRlci1jb25kaXRpb25zLWJnLW1fcmVkLnBuZykgdG9wIGNlbnRlciBuby1yZXBlYXQ7IHotaW5kZXg6NTsgYm94LXNpemluZzpib3JkZXItYm94OyBjb2xvcjojZmZmOyB0ZXh0LWFsaWduOmNlbnRlcjsgfSAuY3JlZGl0X21fc2Vlbl9hbGwgdWx7IHBhZGRpbmctdG9wOjIwcHg7Zm9udC1zaXplOjEuMTI1cmVtIDsgfSAuY3JlZGl0X21fc2Vlbl9hbGwgdWwgbGl7IGZvbnQtc2l6ZToxLjEyNXJlbSA7IGZvbnQtd2VpZ2h0OmJvbGQgIWltcG9ydGFudDsgbGluZS1oZWlnaHQ6MThweDsgdGV4dC10cmFuc2Zvcm06dmFyKC0tdHh0LXVwcGVyKTsgcGFkZGluZzo1cHg7IGJvcmRlci10b3A6MXB4IHJnYmEoMjU1LDI1NSwyNTUsMC4yKSBzb2xpZDsgfSAuY3JlZGl0X21fc2Vlbl9hbGwgdWwgbGk6Zmlyc3QtY2hpbGQgeyBwYWRkaW5nLXRvcDowOyBib3JkZXItdG9wOm5vbmU7IH0gLmNyZWRpdF9tX3NlZW5fYWxsIHB7IGZvbnQtc2l6ZToxLjkzOHJlbSA7IGxpbmUtaGVpZ2h0OjMxcHg7IHRleHQtdHJhbnNmb3JtOnZhcigtLXR4dC11cHBlcik7IG1hcmdpbjoyMHB4IDAgMCAwOyB9IC5jcmVkaXRfbV9mb3JtX3dyYXBwZXJ7IHRleHQtYWxpZ246Y2VudGVyOyBib3JkZXItcmlnaHQ6bm9uZTsgY29sb3I6IzAyNDA2ZjsgZm9udC13ZWlnaHQ6bm9ybWFsICFpbXBvcnRhbnQ7IGJveC1zaXppbmc6Ym9yZGVyLWJveDsgei1pbmRleDo3MDsgcGFkZGluZzoyMHB4IDEwcHggODBweCA1cHg7IHBvc2l0aW9uOnJlbGF0aXZlOyBib3JkZXI6NXB4IHNvbGlkICMwMjQwNmY7IGJvcmRlci1yYWRpdXM6MTBweDsgYmFja2dyb3VuZDojRkZGOyB3aWR0aDoxMDAlOyBtYXJnaW4tdG9wOjIwcHg7IH0gLmNyZWRpdF9tX2JlZm9yZV9mb3JteyBmb250LXNpemU6Mi4xMjVyZW0gOyBsaW5lLWhlaWdodDozNHB4OyB0ZXh0LXRyYW5zZm9ybTp2YXIoLS10eHQtdXBwZXIpOyB9IC5jcmVkaXRfbV9iZWZvcmVfZm9ybSBweyBmb250LXNpemU6MS4xODhyZW0gOyBsaW5lLWhlaWdodDoxOXB4OyBtYXJnaW4tdG9wOjE1cHg7IHRleHQtdHJhbnNmb3JtOm5vbmU7IH0gLmNyZWRpdF9tX2Zvcm1fYm90dG9teyBwb3NpdGlvbjphYnNvbHV0ZTsgYm90dG9tOi0ycHg7IGxlZnQ6LTJweDsgd2lkdGg6MTAwJTsgcGFkZGluZzoxMnB4IDJweCA4cHggMnB4OyBiYWNrZ3JvdW5kOiMwMjQwNmY7IGNvbG9yOiNmZmY7IHRleHQtYWxpZ246Y2VudGVyOyBmb250LXNpemU6MXJlbSA7IGZvbnQtd2VpZ2h0Om5vcm1hbCAhaW1wb3J0YW50OyBsaW5lLWhlaWdodDoxNnB4OyB9IC5jcmVkaXRfbV9hZnRlcl9mb3JteyBib3gtc2l6aW5nOmJvcmRlci1ib3g7IGNvbG9yOiNmZmY7IHBhZGRpbmc6MzVweCAwOyBiYWNrZ3JvdW5kOiNmZmYgdXJsKC9pbWFnZXMvZmluYW5jZS9mZWF0LWJnX3JlZC5wbmcpOyBkaXNwbGF5OmJsb2NrOyBmb250LXNpemU6MS4xMjVyZW0gOyBmb250LXdlaWdodDpub3JtYWwgIWltcG9ydGFudDsgbGluZS1oZWlnaHQ6MjBweDsgdGV4dC1hbGlnbjpjZW50ZXI7IH0gLmNyZWRpdF9tX2FmdGVyX2Zvcm0gc3BhbnsgfSAuY3JlZGl0X21fZm9ybV9ib3R0b20gcHsgcGFkZGluZzowOyBsaW5lLWhlaWdodDoxLjM7IH0gLmNyZWRpdF9tX2FmdGVyX2Zvcm0gaDJ7IGZvbnQtc2l6ZToxLjMxM3JlbSA7IGZvbnQtd2VpZ2h0OmJvbGQgIWltcG9ydGFudDsgbGluZS1oZWlnaHQ6MjVweDsgbWFyZ2luOjVweCAwIDAgMDsgcGFkZGluZzowOyB9IEBtZWRpYShtYXgtd2lkdGg6NDUwcHgpIHsgLmNyZWRpdF9tX2FmdGVyX2Zvcm0gaDJ7cGFkZGluZzowIDIwJTt9IC5jcmVkaXRfbV9mb3JtX2JvdHRvbSBwe3BhZGRpbmc6MCAyMCU7fSB9IEBtZWRpYShtYXgtd2lkdGg6NDAwcHgpIHsgLmNyZWRpdF9tX2FmdGVyX2Zvcm0gaDJ7cGFkZGluZzowIDE1JTt9IC5jcmVkaXRfbV9mb3JtX2JvdHRvbSBwe3BhZGRpbmc6MCAxNSU7fSB9IEBtZWRpYShtYXgtd2lkdGg6MzQwcHgpIHsgLmNyZWRpdF9tX2FmdGVyX2Zvcm0gaDJ7cGFkZGluZzowIDEwJTt9IC5jcmVkaXRfbV9mb3JtX2JvdHRvbSBwe3BhZGRpbmc6MCAxMCU7fSB9IC5jcmVkaXRfbV8zc3RlcHN7IG1hcmdpbi1sZWZ0OmF1dG87IG1hcmdpbi1yaWdodDphdXRvOyBib3gtc2l6aW5nOmJvcmRlci1ib3g7IHBvc2l0aW9uOnJlbGF0aXZlOyB0ZXh0LWFsaWduOmxlZnQ7IG1hcmdpbjowIGF1dG87IHBhZGRpbmctcmlnaHQ6MTBweDsgcGFkZGluZy1sZWZ0OjEwcHg7IG1heC13aWR0aDo5NjBweDsgfSAuY3JlZGl0X21fM3N0ZXBzIGgyeyBmb250LXNpemU6MS41NjNyZW0gOyBmb250LXdlaWdodDpub3JtYWwgIWltcG9ydGFudDsgbGluZS1oZWlnaHQ6MjVweDsgdGV4dC10cmFuc2Zvcm06dmFyKC0tdHh0LXVwcGVyKTsgbWFyZ2luLXRvcDowOyBwYWRkaW5nLXRvcDowOyBib3JkZXItdG9wOm5vbmU7IGNvbG9yOiMwMjQwNmY7IH0gLmNyZWRpdF9tXzNzdGVwcyB1bHsgbGlzdC1zdHlsZTpub25lOyB9IC5jcmVkaXRfbV8zc3RlcHMgbGl7IHBhZGRpbmc6MjBweCAyMHB4IDIwcHggMTEzcHg7IGJvcmRlci1yYWRpdXM6MTBweDsgcG9zaXRpb246cmVsYXRpdmU7IGJhY2tncm91bmQtY29sb3I6I2ZmZjsgbWFyZ2luLXRvcDoxMHB4OyB9IC5jcmVkaXRfbV8zc3RlcHNfd3JhcHBlcnsgcGFkZGluZzo0MHB4IDA7IGJhY2tncm91bmQ6I2UxZTFlMSB1cmwoL2ltYWdlcy9maW5hbmNlL3N0ZXBzLWJnLmpwZykgdG9wIGNlbnRlciBuby1yZXBlYXQ7IH0gLmNyZWRpdF9tXzNzdGVwcyB1bCBsaSBoM3sgZm9udC1zaXplOjEuMzc1cmVtIDsgZm9udC13ZWlnaHQ6bm9ybWFsICFpbXBvcnRhbnQ7IGxpbmUtaGVpZ2h0OjIycHg7IGNvbG9yOiMwMjQwNmY7IH0gLmNyZWRpdF9tXzNzdGVwcyB1bCBsaSBweyBsaW5lLWhlaWdodDoyMHB4OyBtYXJnaW46MCAwIDE1cHggMDsgcGFkZGluZzowOyBmb250LXNpemU6MS4xMjVyZW0gOyBmb250LXdlaWdodDpub3JtYWwgIWltcG9ydGFudDsgbGluZS1oZWlnaHQ6MThweDsgfSAuY3JlZGl0X21fM3N0ZXBzIHVsIGxpOmFmdGVyeyBwb3NpdGlvbjphYnNvbHV0ZTsgdG9wOjA7IGJvdHRvbTowOyBsZWZ0OjIwcHg7IG1hcmdpbjphdXRvIDA7IGNvbnRlbnQ6JyAnOyBkaXNwbGF5OmJsb2NrOyB3aWR0aDo3M3B4OyBoZWlnaHQ6NjZweDsgYmFja2dyb3VuZC1pbWFnZTp1cmwoJy9pbWFnZXMvZmluYW5jZS9zdGVwcy1tb2JpbGVfcmVkLnBuZycpOyBiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7IH0gLmNyZWRpdF9tXzNzdGVwcyB1bCA+IGxpOmZpcnN0LWNoaWxkOmFmdGVyIHsgYmFja2dyb3VuZC1wb3NpdGlvbjotMTkxcHggMDsgfSAuY3JlZGl0X21fM3N0ZXBzIHVsID4gbGk6bnRoLWNoaWxkKDIpOmFmdGVyeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOjAgMXB4OyB9IC5jcmVkaXRfbV8zc3RlcHMgdWwgPiBsaTpudGgtY2hpbGQoMyk6YWZ0ZXJ7IGJhY2tncm91bmQtcG9zaXRpb246LTkwcHggOXB4OyB9IC5jcmVkaXRfbV9mb290ZXJfd3JhcHBlcnsgcGFkZGluZzoxMHB4IDA7IH0gLmNyZWRpdF9tX2Zvb3RlcnsgYm94LXNpemluZzpib3JkZXItYm94OyBwb3NpdGlvbjpyZWxhdGl2ZTsgdGV4dC1hbGlnbjpsZWZ0OyBtYXJnaW46MCBhdXRvOyBwYWRkaW5nLXJpZ2h0OjEwcHg7IHBhZGRpbmctbGVmdDoxMHB4OyBtYXgtd2lkdGg6OTYwcHg7IH0gLmNyZWRpdF9tX2Zvb3RlciBoMiB7IG1hcmdpbjp2YXIoLS1zOSkgMCB2YXIoLS1zMykgMDsgbGluZS1oZWlnaHQ6MS43NXJlbTsgfSAuY3JlZGl0X21fZm9ybSBpbnB1dFt0eXBlPXRleHRdLCAuY3JlZGl0X21fZm9ybSBpbnB1dFt0eXBlPWRhdGVdLCAuY3JlZGl0X21fZm9ybSBpbnB1dFt0eXBlPW51bWJlcl0sIC5jcmVkaXRfbV9mb3JtIGlucHV0W3R5cGU9ZW1haWxdLCAuY3JlZGl0X21fZm9ybSBpbnB1dFt0eXBlPXRlbF0sIC5jcmVkaXRfbV9mb3JtIHNlbGVjdHsgaGVpZ2h0OjUwcHg7IGZvbnQtc2l6ZToxLjM3NXJlbSA7IGZvbnQtd2VpZ2h0OmJvbGQgIWltcG9ydGFudDsgbGluZS1oZWlnaHQ6MjJweDsgd2lkdGg6MTAwJTsgbWFyZ2luLWJvdHRvbTowcHg7IGJvcmRlci1yYWRpdXM6MTBweDsgbWFyZ2luOjA7IHBhZGRpbmc6M3B4IDVweDsgYmFja2dyb3VuZC1jb2xvcjojREFEQURBOyBib3JkZXI6MXB4ICNDMkIzQjMgc29saWQ7IGJveC1zaXppbmc6Ym9yZGVyLWJveDsgfSAuY3JlZGl0X21fZm9ybSB0YWJsZXsgd2lkdGg6MTAwJTsgcGFkZGluZzowIDEwcHg7IH0gLmNyZWRpdF9tX2Zvcm0gLmNyZWRpdF9yZXF1ZXN0X3N1Ym1pdHsgZGlzcGxheTpibG9jazsgZm9udC1zaXplOjEuODc1cmVtIDsgcGFkZGluZzo1cHg7IGZvbnQtd2VpZ2h0OmJvbGQgIWltcG9ydGFudDsgbGluZS1oZWlnaHQ6NjBweDsgbWFyZ2luOjMwcHggMCAzMHB4IDA7IGJveC1zaGFkb3c6bm9uZTsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IGJhY2tncm91bmQ6bm9uZTsgYmFja2dyb3VuZC1jb2xvcjojY2YxNzFmOyBjb2xvcjojZmZmOyB0ZXh0LXRyYW5zZm9ybTp2YXIoLS10eHQtdXBwZXIpOyBib3JkZXItcmFkaXVzOjEwcHg7IH0gLmNyZWRpdF9tX2Zvcm0gLmxhYmVseyBmb250LXNpemU6MC44NzVyZW0gOyBmb250LXdlaWdodDpsaWdodGVyOyAhaW1wb3J0YW50OyBjb2xvcjojMjQyNDI0OyBmbG9hdDpsZWZ0OyB3aWR0aDoxMDAlOyB0ZXh0LWFsaWduOmxlZnQ7IH0gLmNyZWRpdF9tX3JlcXVpcmVkeyBjb2xvcjojYzAwOyB9ICNiZXN0UHJpY2VWZHBOZXdQb3B1cENvbnRhaW5lcnsgd2lkdGg6MjgwcHg7IGhlaWdodDo0OTBweDsgcGFkZGluZzoyNnB4IDEwcHggMTBweCAxMHB4OyB9ICNiZXN0UHJpY2VWZHBOZXdQb3B1cENvbnRhaW5lciAucG9wdXBfYmd7IHdpZHRoOjI4MHB4OyBoZWlnaHQ6NDkwcHg7IH0gI2Jlc3RQcmljZVZkcE5ld1BvcHVwQ29udGFpbmVyIC5wb3B1cF9iZ3sgYmFja2dyb3VuZC1pbWFnZTp1cmwoJy9pbWFnZXMvcG9wdXBzL20vZnIvYmVzdFByaWNlTmV3VmRwLnBuZycpOyB9IC5wb3B1cF9iZ3sgYmFja2dyb3VuZC1jb2xvcjojNDQ0NDQ0OyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gLnBvcHVwRm9ybSAuYXN0ZXJpc2t7IGNvbG9yOiNkMDA7IGZvbnQtd2VpZ2h0OmJvbGQ7IHBhZGRpbmc6MDsgZm9udC1zaXplOmluaGVyaXQ7IG1hcmdpbjowOyB9IC5wb3B1cEZvcm17IHotaW5kZXg6NTA7IHBvc2l0aW9uOmFic29sdXRlOyB0b3A6Mjc3cHg7IGhlaWdodDoyNDlweDsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB3aWR0aDoyNzBweDsgcGFkZGluZzozcHg7IH0gLnBvcHVwRm9ybSB0YWJsZXsgbWFyZ2luLWJvdHRvbToxMHB4OyB9IC5wb3B1cEZvcm1UaXRsZXsgaGVpZ2h0OjI1cHg7IG1hcmdpbjo4cHg7IGZvbnQtc2l6ZToxcmVtIDsgZm9udC13ZWlnaHQ6Ym9sZDsgfSAucG9wdXBGb3JtSW5wdXRzIHRkIHsgZm9udC1zaXplOjAuODc1cmVtIDsgdGV4dC1hbGlnbjpyaWdodDsgcGFkZGluZy1yaWdodDoxMHB4OyBwYWRkaW5nLWJvdHRvbTozcHg7IGxpbmUtaGVpZ2h0OjEzcHg7IG1pbi13aWR0aDo2MHB4OyB9IC5wb3B1cEZvcm0gaW5wdXR7IHdpZHRoOjE4MHB4OyB9ICNhc1B1cmNoYXNlSW50ZW50eyB3aWR0aDo4NSU7IG1heC13aWR0aDo2MDBweDsgcGFkZGluZzoxMHB4IDEwcHg7IHotaW5kZXg6MTAwMDAyMTsgfSAuc3RyaWtleyBwb3NpdGlvbjpyZWxhdGl2ZTsgfSAuc3RyaWtlOjphZnRlcnsgY29udGVudDonJzsgYm9yZGVyLWJvdHRvbToycHggc29saWQgI0NFMDAwMDsgcG9zaXRpb246YWJzb2x1dGU7IGxlZnQ6MDsgdG9wOjI1JTsgd2lkdGg6MTAwJTsgfSAucmVzcG9uc2l2ZS1jb250YWluZXIgeyBwb3NpdGlvbjpyZWxhdGl2ZTsgb3ZlcmZsb3c6c2Nyb2xsOyAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzp0b3VjaDsgfSAucmVzcG9uc2l2ZS1jb250YWluZXItMTZ4OSB7IHBhZGRpbmctYm90dG9tOjU2LjI1JTsgfSAucmVzcG9uc2l2ZS1jb250YWluZXItNHgzIHsgcGFkZGluZy1ib3R0b206NzUlOyB9IC5yZXNwb25zaXZlLWNvbnRhaW5lci0xMDAgeyBwYWRkaW5nLWJvdHRvbToxMDAlOyB3aWR0aDoxMDAlOyB9IC5yZXNwb25zaXZlLWNvbnRhaW5lci0xMCB7IHBhZGRpbmctYm90dG9tOjEwJTsgd2lkdGg6MTAwJTsgfSAucmVzcG9uc2l2ZS1jb250YWluZXIgaWZyYW1lIHsgcG9zaXRpb246YWJzb2x1dGU7IHRvcDowOyBsZWZ0OjA7IHdpZHRoOjEwMCU7IGhlaWdodDoxMDAlOyB9IC5yZXNwb25zaXZlLWNvbnRhaW5lciBbY2xhc3MqPSJjcmVkc2lpIl0gaWZyYW1lIHsgcG9zaXRpb246aW5oZXJpdDsgfSAucmVzcG9uc2l2ZS1lZGl0b3IgaWZyYW1leyBwb3NpdGlvbjppbml0aWFsOyB9IC5zdWJtZW51SXRlbUNvbnRhaW5lciAubG9jYXRpb24tbmFtZXMgYSwgLnN1Ym1lbnVJdGVtQ29udGFpbmVyIC5sb2NhdGlvbi1uYW1lcyAudGl0bGUsIC5zdWJtZW51SXRlbUNvbnRhaW5lciAubG9jYXRpb24tbmFtZXMgLmxvY2F0aW9uLWRldGFpbHMtaW5mbyBsaSB7IHBhZGRpbmctbGVmdDo5cHg7IH0gLnN1Ym1lbnVJdGVtQ29udGFpbmVyIC5zdWJtZW51SXRlbUNoaWxkQ29udGFpbmVyIHsgZGlzcGxheTpub25lOyB9IC5zdWJtZW51SXRlbUNoaWxkQ29udGFpbmVyIC5zdWJtZW51SXRlbUNoaWxkQ29udGFpbmVyIHsgZGlzcGxheTpibG9jazsgfSAuc3VibWVudUl0ZW1Db250YWluZXIgLnN1Ym1lbnVJdGVtQ2hpbGRDb250YWluZXIgLnN1Ym1lbnVJdGVtQ2hpbGRDb250YWluZXIgeyBkaXNwbGF5Om5vbmU7IH0gLnN1Ym1lbnVJdGVtQ29udGFpbmVyIC5sb2NhdGlvbi1uYW1lcyA+IGEgeyBiYWNrZ3JvdW5kLWNvbG9yOiNlZWVlZWU7IH0gbGkubG9jYXRpb24tbmFtZXMgeyB0ZXh0LWFsaWduOmxlZnQ7IH0gbGkubG9jYXRpb24tbmFtZXMubW9iaWxlIHsgbWFyZ2luLWJvdHRvbTowOyB9IGxpLmxvY2F0aW9uLW5hbWVzLm1vYmlsZSA+IGEgeyBmb250LXdlaWdodDpub3JtYWw7IGJvcmRlci1yYWRpdXM6MDsgYm9yZGVyOjFweCBzb2xpZCAjQkJCOyBib3JkZXItYm90dG9tOm5vbmU7IH0gLmxvY2F0aW9uLWRldGFpbHMgeyBmb250LXNpemU6MXJlbSA7IH0gLmxvY2F0aW9uLWRldGFpbHMtbG9nbyAudGl0bGUgeyBtYXJnaW4tdG9wOjhweDsgfSAubG9jYXRpb24tZGV0YWlscy1sb2dvIGltZyB7IG1hcmdpbi1ib3R0b206OHB4OyB9IC5sb2NhdGlvbi1kZXRhaWxzLWluZm8gdWwgbGk6bm90KC5kZXRhaWxzLWluZm8tbGluaykgeyBib3JkZXItbGVmdDpub25lOyBib3JkZXItcmlnaHQ6bm9uZTsgYm9yZGVyLWJvdHRvbTpub25lOyB9IC5sb2NhdGlvbi1kZXRhaWxzLWluZm8gdWwgbGk6bm90KDpmaXJzdC1jaGlsZCkgeyBib3JkZXI6bm9uZTsgfSAjZGVmYXVsdFRvcEJhbm5lclRleHQgeyB9IEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6MzIwcHgpIHsgI3RvcEJhbm5lckltYWdlLk5FV0NBUlMgI2RlZmF1bHRUb3BCYW5uZXJUaXRsZXsgZm9udC1zaXplOjEuMzc1cmVtICFpbXBvcnRhbnQ7IH0gI3RvcEJhbm5lckltYWdlLk5FV0NBUlMgI2RlZmF1bHRUb3BCYW5uZXJUZXh0eyBmb250LXNpemU6MS4xODhyZW0gIWltcG9ydGFudDsgfSAjdG9wQmFubmVySW1hZ2UuVVNFRENBUlMgI2RlZmF1bHRUb3BCYW5uZXJUaXRsZXsgZm9udC1zaXplOjEuMzc1cmVtICFpbXBvcnRhbnQ7IH0gI3RvcEJhbm5lckltYWdlLlVTRURDQVJTICNkZWZhdWx0VG9wQmFubmVyVGV4dHsgZm9udC1zaXplOjEuMTg4cmVtICFpbXBvcnRhbnQ7IH0gfSBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOjMyMHB4KSB7ICN0b3BCYW5uZXJJbWFnZS5ORVdDQVJTICNkZWZhdWx0VG9wQmFubmVyVGl0bGUsI3RvcEJhbm5lckltYWdlLlVTRURDQVJTICNkZWZhdWx0VG9wQmFubmVyVGl0bGUgeyBmb250LXNpemU6MS4xODhyZW0gIWltcG9ydGFudDsgfSAjdG9wQmFubmVySW1hZ2UuTkVXQ0FSUyAjZGVmYXVsdFRvcEJhbm5lclRleHQsI3RvcEJhbm5lckltYWdlLlVTRURDQVJTICNkZWZhdWx0VG9wQmFubmVyVGV4dCB7IGZvbnQtc2l6ZToxLjA2M3JlbSAhaW1wb3J0YW50OyB9IH0gI3RvcEJhbm5lckltYWdlLlVTRURDQVJTICNkZWZhdWx0VG9wQmFubmVyV3JhcHsgaGVpZ2h0OjE2NXB4ICFpbXBvcnRhbnQ7IH0gI3RvcEJhbm5lckltYWdlLk5FV0NBUlMgI2RlZmF1bHRUb3BCYW5uZXJXcmFweyBoZWlnaHQ6MTY1cHggIWltcG9ydGFudDsgfSAjZGVmYXVsdFRvcEJhbm5lcnsgbWluLWhlaWdodDppbml0aWFsOyBoZWlnaHQ6YXV0bzsgfSAjZGVmYXVsdFRvcEJhbm5lcldyYXAgZGl2LmRlZmF1bHRUb3BCYW5uZXJCdG5XcmFwcGVyeyBtYXJnaW46MTBweCAwICFpbXBvcnRhbnQ7IH0gI2RlZmF1bHRUb3BCYW5uZXJXcmFwIHsgdG9wOjAhaW1wb3J0YW50OyBwYWRkaW5nOjE1cHggNHB4ICFpbXBvcnRhbnQ7IH0gI2RlZmF1bHRUb3BCYW5uZXJUaXRsZSB7IGxpbmUtaGVpZ2h0Om5vcm1hbCFpbXBvcnRhbnQ7IH0gI2RlZmF1bHRUb3BCYW5uZXJUZXh0IHsgfSAjZGVmYXVsdFRvcEJhbm5lckJ0biB7IGZvbnQtc2l6ZTowLjc1cmVtICFpbXBvcnRhbnQ7IG1hcmdpbi1ib3R0b206MTBweDsgZm9udC13ZWlnaHQ6bm9ybWFsIWltcG9ydGFudDsgcGFkZGluZzo0cHggMjBweCFpbXBvcnRhbnQ7IH0gLnByb21vQlROIGF7IGJvcmRlcjpub25lIWltcG9ydGFudDsgdGV4dC10cmFuc2Zvcm06dmFyKC0tdHh0LXVwcGVyKTsgfSAucHJvbW9CVE4uaXMtc3RpY2t5eyBwb3NpdGlvbjpzdGlja3k7IHRvcDozcmVtOyBiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWxpZ2h0LWdyYXkpOyBhbGlnbi1pdGVtczpjZW50ZXI7IH0gLnNwZWNpYWwtc2NoZWR1bGUgeyAtd2Via2l0LWJvcmRlci1yYWRpdXM6NHB4OyAtbW96LWJvcmRlci1yYWRpdXM6NHB4OyBib3JkZXItcmFkaXVzOjRweDsgY29sb3I6cmdiKDI1NSwyNTUsMjU1KTsgdGV4dC1hbGlnbjpsZWZ0OyB0ZXh0LWRlY29yYXRpb246bm9uZTsgZGlzcGxheTpibG9jazsgZm9udC1zaXplOjEuMWVtOyBmb250LXdlaWdodDpib2xkOyBwYWRkaW5nOjdweCA4cHggN3B4IDBweDsgYmFja2dyb3VuZDpyZ2IoNzIsIDcyLCA3Myk7IG1hcmdpbjoxMnB4IDEwcHggM3B4IDEwcHg7IH0gI2RlZmF1bHRUb3BCYW5uZXIgeyBoZWlnaHQ6YXV0bzsgfSBJTlBVVFt0eXBlPSJ0ZXh0Il0udmFsaWRpdHktZXJyb25lb3VzLCBJTlBVVFt0eXBlPSJkYXRlIl0udmFsaWRpdHktZXJyb25lb3VzLCBJTlBVVFt0eXBlPSJlbWFpbCJdLnZhbGlkaXR5LWVycm9uZW91cywgSU5QVVRbdHlwZT0idGVsIl0udmFsaWRpdHktZXJyb25lb3VzLCBJTlBVVFt0eXBlPSJwYXNzd29yZCJdLnZhbGlkaXR5LWVycm9uZW91cyB7IGJvcmRlcjoxcHggc29saWQgI2RjMzU0NTsgYmFja2dyb3VuZC1jb2xvcjojZmFkNmRjOyB9IFNFTEVDVC52YWxpZGl0eS1lcnJvbmVvdXN7IGJvcmRlcjoxcHggc29saWQgI2RjMzU0NTsgYmFja2dyb3VuZC1jb2xvcjojZmFkNmRjOyB9IFRFWFRBUkVBLnZhbGlkaXR5LWVycm9uZW91c3sgYm9yZGVyOjFweCBzb2xpZCAjZGMzNTQ1OyBiYWNrZ3JvdW5kLWNvbG9yOiNmYWQ2ZGM7IH0gI3RyYWRlSW5CYXJQb3B1cF9mb3JtVyAudHJhZGluU2VsZWN0UG9wdXB7IGNvbG9yOiMzYzM4MzY7IGZvbnQtc2l6ZToxcmVtOyBiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsMSk7IGJhY2tncm91bmQtcG9zaXRpb246OTUlIDUwJTsgLXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7IC1tb3otYXBwZWFyYW5jZTpub25lOyBtYXJnaW46NXB4IDAgMDsgcGFkZGluZzowLjNyZW0haW1wb3J0YW50OyB9ICN0cmFkZUluQmFyUG9wdXBfZm9ybVcgOjpwbGFjZWhvbGRlciB7IGNvbG9yOiNhOWE5YTk7IG9wYWNpdHk6MTsgfSAjdHJhZGVJbkJhclBvcHVwX2Zvcm1XIDotbXMtaW5wdXQtcGxhY2Vob2xkZXIgeyBjb2xvcjojYTlhOWE5OyB9ICN0cmFkZUluQmFyUG9wdXBfZm9ybVcgOjotbXMtaW5wdXQtcGxhY2Vob2xkZXIgeyBjb2xvcjojYTlhOWE5OyB9IC5yZXZlYWwtbW9kYWwgOjpwbGFjZWhvbGRlciB7IGNvbG9yOiNhOWE5YTk7IG9wYWNpdHk6MTsgfSAucmV2ZWFsLW1vZGFsIDotbXMtaW5wdXQtcGxhY2Vob2xkZXIgeyBjb2xvcjojYTlhOWE5OyB9IC5yZXZlYWwtbW9kYWwgOjotbXMtaW5wdXQtcGxhY2Vob2xkZXIgeyBjb2xvcjojYTlhOWE5OyB9ICNhc1B1cmNoYXNlSW50ZW50ICp7IGJveC1zaXppbmc6Y29udGVudC1ib3ghaW1wb3J0YW50OyB9ICN0cmFkZUluQmFyUG9wdXBfdGl0bGV7IHRleHQtdHJhbnNmb3JtOnZhcigtLXR4dC11cHBlcik7IGZvbnQtd2VpZ2h0OmJvbGQ7IHRleHQtYWxpZ246Y2VudGVyOyBjb2xvcjojMmMyYzJjOyB9ICN0cmFkZUluQmFyUG9wdXBTZWxlY3RlZFZlaGljbGV7IG1hcmdpbi1ib3R0b206MTBweDsgdGV4dC1hbGlnbjpjZW50ZXI7IGNvbG9yOiMyYzJjMmM7IH0gLnRyYWRpblNlbGVjdFd7IGZsb2F0OmxlZnQ7IG1hcmdpbi1sZWZ0OjEwcHg7IH0gLnRyYWRpblNlbGVjdEF7IHBvc2l0aW9uOnJlbGF0aXZlOyB9IC50cmFkaW5TZWxlY3RBOmFmdGVyIHsgY29udGVudDoiICI7IGhlaWdodDowOyB3aWR0aDowOyBib3JkZXItbGVmdDo1cHggc29saWQgdHJhbnNwYXJlbnQ7IGJvcmRlci1yaWdodDo1cHggc29saWQgdHJhbnNwYXJlbnQ7IGJvcmRlci10b3A6NXB4IHNvbGlkICMwMDAwMDA7IHBvc2l0aW9uOmFic29sdXRlOyByaWdodDoxNHB4OyB0b3A6MTdweDsgdHJhbnNpdGlvbjphbGwgMC4zcyBsaW5lYXI7IHBvaW50ZXItZXZlbnRzOm5vbmU7IH0gLnRyYWRpbk5pdnsgd2lkdGg6MTAwJTsgcGFkZGluZzowLjRyZW07IGJvcmRlcjoxcHggc29saWQgI2E5YTlhOTsgYm9yZGVyLXJhZGl1czo1cHg7IH0gLnRyYWRpblNlbGVjdHsgY29sb3I6IzNjMzgzNjsgYm9yZGVyOjJweCBzb2xpZCAjI1RSQURFSU5KU0VMRUNUQk9SREVSQ09MT1IjIzsgYm9yZGVyLXJhZGl1czo1cHg7IHBhZGRpbmc6MTBweCAxMHB4OyBmb250LXNpemU6MXJlbSA7IGJhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuOSk7IGJhY2tncm91bmQtcG9zaXRpb246OTUlIDUwJTsgd2lkdGg6MjAwcHg7IC13ZWJraXQtYXBwZWFyYW5jZTpub25lOyAtbW96LWFwcGVhcmFuY2U6bm9uZTsgcGFkZGluZy1yaWdodDoyN3B4OyB9IC50cmFkaW5TZWxlY3Q6YWZ0ZXIgeyBjb250ZW50OiIgIjsgaGVpZ2h0OjA7IHdpZHRoOjA7IGJvcmRlci1sZWZ0OjVweCBzb2xpZCB0cmFuc3BhcmVudDsgYm9yZGVyLXJpZ2h0OjVweCBzb2xpZCB0cmFuc3BhcmVudDsgYm9yZGVyLXRvcDo1cHggc29saWQgIzAwMDAwMDsgcG9zaXRpb246YWJzb2x1dGU7IHJpZ2h0OjE0cHg7IHRvcDoxN3B4OyB0cmFuc2l0aW9uOmFsbCAwLjNzIGxpbmVhcjsgfSAudHJhZGVJbkJhck1vYmlsZUJ1dHRvbiB7IHBvc2l0aW9uOmZpeGVkOyBib3R0b206MTBweDsgbGVmdDoxMHB4OyB6LWluZGV4OjQ7IHdpZHRoOjE0MHB4ICFpbXBvcnRhbnQ7IGJvcmRlci13aWR0aDoxcHg7IHRleHQtYWxpZ246bGVmdDsgYmFja2dyb3VuZC1jb2xvcjojMzM0Yzk2ICFpbXBvcnRhbnQ7IGNvbG9yOiAjZmZmZmZmICFpbXBvcnRhbnQ7IGRpc3BsYXk6ZmxleDsgYWxpZ24taXRlbXM6Y2VudGVyOyBib3JkZXItcmFkaXVzOjhweDsgYm9yZGVyLXdpZHRoOjFweCAzcHggNHB4IDFweDsgYm9yZGVyLWNvbG9yOiMzMzMzMzM7IHBhZGRpbmctdG9wOjEwcHg7IH0gQk9EWS5Vc2VkU3JwMk1vYmlsZSAudHJhZGVJbkJhck1vYmlsZUJ1dHRvbnsgYm90dG9tOjZyZW07IH0gLnRyYWRlSW5CYXJNb2JpbGVCdXR0b24gaXsgZGlzcGxheTppbmxpbmUtZmxleDsgYm9yZGVyLXJhZGl1czoxMDAlOyB3aWR0aDoyZW07IGFsaWduLWl0ZW1zOmNlbnRlcjsganVzdGlmeS1jb250ZW50OmNlbnRlcjsgYm9yZGVyOjJweCBzb2xpZCAjZmZmOyBiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7IGhlaWdodDoxLjVlbTsgY29sb3I6IzAwMDsgZmxvYXQ6bGVmdDsgfSAudHJhZGVJbkJhck1vYmlsZUJ1dHRvbi53aXRoVG9hc3RlciB7IGJvdHRvbTo4MHB4OyB9IC50cmFkZUluQmFyTW9iaWxlQnV0dG9uIGEgeyBjb2xvcjogI2ZmZmZmZiAhaW1wb3J0YW50OyB9IC50cmFkZUluQmFyU3RlcDJ7IG1hcmdpbjo2MHB4IDA7IHRleHQtYWxpZ246Y2VudGVyOyB9IC50cmFkZUluQmFyU3RlcDIgLnRyYWRlSW5CYXJTdGVwMlF1ZXN0aW9ueyBtYXJnaW46MjBweCAwOyB9IC50cmFkZUluQmFyU3RlcDMgLnRyYWRlSW5CYXJTdGVwM1F1ZXN0aW9ueyBtYXJnaW46MjBweCAwOyB9IC50cmFkZUluQmFyU3RlcDIgLnJhZGlvX2RpdiBsYWJlbHsgd2lkdGg6NTBweDsgcGFkZGluZzowOyBtYXJnaW46NXB4OyBkaXNwbGF5OmlubGluZS1ibG9jayB9IC50cmFkZUluQmFyU3RlcDIgLnJhZGlvX2RpdiBpbnB1dHsgd2lkdGg6YXV0byAhaW1wb3J0YW50OyBwYWRkaW5nOjAgIWltcG9ydGFudDsgbWFyZ2luOjVweCAhaW1wb3J0YW50OyBib3JkZXI6bm9uZSAhaW1wb3J0YW50OyBoZWlnaHQ6YXV0byAhaW1wb3J0YW50OyB9IC5tdWx0aXNlbGVjdFZlaGljbGVPcHRpb25zeyBtYXJnaW4tdG9wOjVweDsgfSAubXVsdGlzZWxlY3RWZWhpY2xlT3B0aW9ucyBzcGFueyBmb250LXNpemU6MC45MzhyZW0gIWltcG9ydGFudDsgcGFkZGluZzowICFpbXBvcnRhbnQ7IG1hcmdpbjowICFpbXBvcnRhbnQ7IH0gI3RyYWRlSW5CYXJQb3B1cF9mb3JtVyAudHJhZGVJbkJhck11bHRpc2VsZWN0eyB3aWR0aDoxMDAlIWltcG9ydGFudDsgYm9yZGVyLXJhZGl1czowLjNyZW0haW1wb3J0YW50OyBib3JkZXItd2lkdGg6MXB4IWltcG9ydGFudDsgYm9yZGVyLXJhZGl1czowLjNyZW0haW1wb3J0YW50OyBib3JkZXItY29sb3I6I2E5YTlhOSFpbXBvcnRhbnQ7IHBhZGRpbmc6MC4zcmVtIWltcG9ydGFudDsgfSAudWktbXVsdGlzZWxlY3QtbWVudS50cmFkZUluQmFyTXVsdGlzZWxlY3R7IHotaW5kZXg6MTAwMDAyMDsgbWF4LWhlaWdodDoxMTBweDsgb3ZlcmZsb3c6c2Nyb2xsOyB9IC50cmFkZUluQmFyRGVhbGVyU3RlcHsgdGV4dC1hbGlnbjpjZW50ZXI7IG1hcmdpbi10b3A6MjVweDsgfSAudHJhZGVJbkJhckRlYWxlclN0ZXAgLnRyYWRlSW5CYXJEZWFsZXJTdGVwTWFrZU1vZGVsWWVhcnsgZm9udC13ZWlnaHQ6NzAwOyB9IC50cmFkZUluQmFyRGVhbGVyU3RlcCBzcGFueyBtYXJnaW46MCFpbXBvcnRhbnQ7IGZvbnQtd2VpZ2h0OjcwMCFpbXBvcnRhbnQ7IGNvbG9yOiMwMDAwMDAhaW1wb3J0YW50OyBwYWRkaW5nOjAhaW1wb3J0YW50OyBmb250LXNpemU6MS4zMTNyZW0gIWltcG9ydGFudDsgfSAubW9kZWxub3llYXJCdXR0b25MaXN0eyBtaW4taGVpZ2h0OjQycHg7IG1hcmdpbjoxNXB4IDA7IH0gLm1vZGVsbm95ZWFyQnV0dG9uTGlzdCB1bHsgZmxvYXQ6bGVmdDsgbGlzdC1zdHlsZS10eXBlOm5vbmU7IHBhZGRpbmc6MDsgfSAubW9kZWxub3llYXJCdXR0b25MaXN0IGxpeyBmbG9hdDpsZWZ0OyB0ZXh0LWFsaWduOmNlbnRlcjsgbWFyZ2luLXJpZ2h0OjNweDsgbGluZS1oZWlnaHQ6NDBweDsgcGFkZGluZzowcHggMTVweDsgY3Vyc29yOnBvaW50ZXI7IGJhY2tncm91bmQtY29sb3I6I2YwZjBmMDsgY29sb3I6IzJjMmMyYzsgYm9yZGVyOjFweCBzb2xpZCAjMDAwOyBib3JkZXItcmFkaXVzOjNweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjNweDsgLW1vei1ib3JkZXItcmFkaXVzOjNweDsgfSAubW9kZWxub3llYXJCdXR0b25MaXN0IGxpOmhvdmVyeyBjb2xvcjojMmMyYzJjOyBiYWNrZ3JvdW5kLWNvbG9yOiNlZWVlZWU7IGJvcmRlcjoxcHggc29saWQgIzJjMmMyYzsgfSAubW9kZWxub3llYXJCdXR0b25MaXN0IHNwYW57IG1hcmdpbi1sZWZ0OjEwcHg7IGJvcmRlci1yYWRpdXM6MjBweDsgYmFja2dyb3VuZC1jb2xvcjojMDAwOyBjb2xvcjojZjBmMGYwOyBwYWRkaW5nOjJweCAxMHB4OyBmb250LXNpemU6MC44NzVyZW0gOyBmb250LXdlaWdodDo3MDA7IH0gLm1vZGVsbm95ZWFyQnV0dG9uTGlzdCBsaTpob3ZlciBzcGFueyBiYWNrZ3JvdW5kLWNvbG9yOiMyYzJjMmM7IGNvbG9yOiNlZWVlZWU7IH0gLm1vZGVsbm95ZWFyQnV0dG9uTGlzdCBsaS5tb2RlbG5veWVhckJ1dHRvblNlbGVjdGVkeyBiYWNrZ3JvdW5kLWNvbG9yOnJnYigyNTUsMjU1LDI1NSk7IGNvbG9yOnJnYig0NCw0NCw0NCk7IGJvcmRlcjoxcHggc29saWQgcmdiKDQ0LDQ0LDQ0KTsgfSAubW9kZWxub3llYXJCdXR0b25MaXN0IGxpLm1vZGVsbm95ZWFyQnV0dG9uU2VsZWN0ZWQgc3BhbnsgYmFja2dyb3VuZC1jb2xvcjpyZ2IoNDQsNDQsNDQpOyBjb2xvcjpyZ2IoMjU1LDI1NSwyNTUpOyB9IC5tdWx0aWZvcm1fZm9vdGVyIC5tdWx0aWZvcm1fc3RlcDJ7IHRleHQtYWxpZ246Y2VudGVyOyB9IC5tdWx0aWZvcm1fYm9keXsgcGFkZGluZzozMHB4IDEwcHg7IH0gLm11bHRpZm9ybV90ZXh0eyBwYWRkaW5nLWJvdHRvbToxNXB4IWltcG9ydGFudDsgfSAubXVsdGlmb3JtX2J0bl8yeyB0ZXh0LWFsaWduOmNlbnRlcjsgfSAucmViYXRlVGFneyBtYXJnaW46MCBhdXRvOyBwYWRkaW5nOjRweCA3cHggNHB4IDdweDsgdGV4dC1hbGlnbjpjZW50ZXI7IHdpZHRoOmZpdC1jb250ZW50OyBsaW5lLWhlaWdodDoxNXB4OyBib3JkZXItcmFkaXVzOjNweDsgYmFja2dyb3VuZDojMzM0Yzk2IWltcG9ydGFudDsgY29sb3I6I2ZmZmZmZiFpbXBvcnRhbnQ7IHRleHQtc2hhZG93Om5vbmUhaW1wb3J0YW50OyB9IC5yZWJhdGVUYWcgc3Bhbi5yZWJhdGVUZXh0eyBkaXNwbGF5OmJsb2NrOyBmb250LXNpemU6MC43NXJlbSA7IH0gLnJlYmF0ZVRhZyBzcGFuLnJlYmF0ZUFtb3VudHsgZGlzcGxheTpibG9jazsgZm9udC13ZWlnaHQ6NzAwOyBmb250LXNpemU6MXJlbSA7IH0gLmdyYXlib3ggLmNhci1wcmljZS1kb3duLWFycm93eyBtYXJnaW4tdG9wOi0yNXB4OyBtYXJnaW4tYm90dG9tOjBweDsgbWFyZ2luLWxlZnQ6MjBweDsgZmxvYXQ6bGVmdDsgcG9zaXRpb246cmVsYXRpdmU7IHotaW5kZXg6NTsgfSAuZ3JheWJveCAuY2FyLXByaWNlLWRvd24tYXJyb3cudXNlZHsgbWFyZ2luLWxlZnQ6NTBweDsgfSAucHJvbW9JbmZvV3JhcHBlcnsgd2lkdGg6MTAwJTsgaGVpZ2h0OjYwcHg7IGJvdHRvbTowOyBmbG9hdDpsZWZ0OyBiYWNrZ3JvdW5kLWNvbG9yOiNlZmVmZWY7IGRpc3BsYXk6aW5saW5lLXRhYmxlOyBtYXJnaW4tdG9wOi0yMHB4OyB9IC5kaXZDYXJQYXltZW50Q29udGFpbmVyeyB0ZXh0LWFsaWduOmNlbnRlcjsgY29sb3I6YmxhY2s7IH0gLnJlc3BvbnNpdmUtY29udGFpbmVyIC5jb250ZW50LXdyYXBwZXIgeyBtYXJnaW46MCAxNXB4OyB9IC5jYXJmYXggeyB0ZXh0LWFsaWduOmNlbnRlcjsgfSAuY2FyZmF4IGltZyB7IHdpZHRoOjIwMHB4OyBwYWRkaW5nLXRvcDoxNXB4OyB9IC5jYXJmYXggLmNhcnByb29mLWJhZGdlID4gRElWeyBtYXgtd2lkdGg6bm9uZSAhaW1wb3J0YW50OyB3aWR0aDoxMDAlICFpbXBvcnRhbnQ7IHRleHQtYWxpZ246Y2VudGVyOyB9IC5jYXJmYXggLmNhcnByb29mLWJhZGdlID4gRElWIElNRyB7IG1heC13aWR0aDpub25lOyBoZWlnaHQ6NDBweDsgd2lkdGg6MTAwJTsgbWFyZ2luOjEwcHggMCAyMHB4OyB9IC5kaXZTZWFyY2hNc2cgeyBmb250LXNpemU6MC45cmVtOyBwYWRkaW5nOjE1cHg7IGJhY2tncm91bmQtY29sb3I6I2Y3ZjdmNzsgYm9yZGVyLXJhZGl1czo1cHg7IH0gLmJ1dHRvbl8xLCAuYnV0dG9uXzIsIC5idXR0b25fMyB7IG1hcmdpbi1ib3R0b206MTBweDsgfSAuYnV0dG9uXzEgYSwgLmJ1dHRvbl8yIGEsIC5idXR0b25fMyBhIHsgZGlzcGxheTpibG9jazsgd2lkdGg6MjQ5cHg7IGhlaWdodDozOHB4OyBib3JkZXItcmFkaXVzOjNweDsgZm9udC1zaXplOjEuMTI1cmVtIDsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IHRleHQtYWxpZ246Y2VudGVyOyBsaW5lLWhlaWdodDozOHB4OyB9IC5idXR0b25fMy5qcy1DVEEtbnVtYmVyIGEgPiAqOmZpcnN0LWNoaWxkeyBtYXJnaW4tcmlnaHQ6MC41cmVtOyB9IC5idXR0b25fMyBheyBiYWNrZ3JvdW5kOiMwMDA7IGNvbG9yOiNGRkY7IH0gLmJ1dHRvbl8zIGE6aG92ZXIsIC5idXR0b25fMyBhOmZvY3VzeyBiYWNrZ3JvdW5kOiM2NjY2NjY7IH0gI3Byb21vRGVzYyAuY2tlZGl0b3JXcmFwcGVyIGlmcmFtZSB7IG1heC13aWR0aDoxMDAlOyB9IEJPRFkuVXNlZFNycDJNb2JpbGUgSDEuZGVmYXVsdHsgZm9udC1zaXplOjEuMnJlbTsgbGluZS1oZWlnaHQ6MS4ycmVtOyBjb2xvcjojMmMyYzJjOyBmb250LXdlaWdodDpub3JtYWw7IGNsZWFyOmJvdGg7IHBhZGRpbmc6MCAwIDE1cHggMDsgZGlzcGxheTppbmxpbmUtZmxleDsgfSBCT0RZLlVzZWRWZHAyTW9iaWxlIEgxLmRlZmF1bHR7IHBhZGRpbmc6MTBweDsgYm94LXNpemluZzpib3JkZXItYm94OyBtYXJnaW46MDsgZGlzcGxheTppbmxpbmUtZmxleDsgfSBCT0RZLlVzZWRTcnAyTW9iaWxlIEgxLmRlZmF1bHQgQXsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IH0gQk9EWS5Vc2VkVmRwMk1vYmlsZSBIMS5kZWZhdWx0IEkuaWNvbiwgQk9EWS5Vc2VkU3JwMk1vYmlsZSBIMS5kZWZhdWx0IEkuaWNvbiB7IGJvcmRlci1yYWRpdXM6MzBweDsgd2lkdGg6MTZweDsgaGVpZ2h0OjIwcHg7IHBhZGRpbmctdG9wOjVweDsgcGFkZGluZy1sZWZ0OjhweDsgZmxvYXQ6bGVmdDsgZm9udC1zaXplOjFyZW0gOyBtYXJnaW4tcmlnaHQ6NXB4OyBib3JkZXI6MXB4IHNvbGlkICMyYzJjMmM7IGNvbG9yOiMyYzJjMmM7IGJhY2tncm91bmQtY29sb3I6I2ZmZmZmZjsgfSBCT0RZLlVzZWRWZHAyTW9iaWxlIEgxLmRlZmF1bHQgSS5pY29uLm11bHRpTGluZUgxLCBCT0RZLlVzZWRTcnAyTW9iaWxlIEgxLmRlZmF1bHQgSS5pY29uLm11bHRpTGluZUgxeyBtYXJnaW4tdG9wOjBweDsgfSBCT0RZLlVzZWRWZHAyTW9iaWxlIEgxLmRlZmF1bHQgSS5pY29uLnNpbmdsZUxpbmVIMSwgQk9EWS5Vc2VkU3JwMk1vYmlsZSBIMS5kZWZhdWx0IEkuaWNvbi5zaW5nbGVMaW5lSDF7IG1hcmdpbi10b3A6MHB4OyB9IEJPRFkuVXNlZFZkcDJNb2JpbGUgSDEuZGVmYXVsdCA+IERJViwgQk9EWS5Vc2VkU3JwMk1vYmlsZSBIMS5kZWZhdWx0ID4gRElWeyBkaXNwbGF5OnRhYmxlLXJvdzsgfSBCT0RZLlVzZWRTcnAyTW9iaWxlIEgxLmRlZmF1bHQgPiBESVYgRElWOm50aC1jaGlsZCgxKXsgZm9udC13ZWlnaHQ6Ym9sZDsgfSBCT0RZLlVzZWRTcnAyTW9iaWxlIEgxLmRlZmF1bHQgPiBESVYgRElWOm50aC1jaGlsZCgyKXsgZm9udC13ZWlnaHQ6bm9ybWFsOyBjb2xvcjojNzU3NTc1OyBmb250LXNpemU6MC45cmVtOyB9IEJPRFkuVXNlZFNycDJNb2JpbGUgSDEuZGVmYXVsdCA+IERJViBESVY6bnRoLWNoaWxkKDMpeyBmb250LXNpemU6MC44cmVtOyBjb2xvcjojYmJiOyBwYWRkaW5nLXRvcDo1cHg7IH0gLmNhcmZheC5tb2JpbGUgZGl2eyBoZWlnaHQ6YXV0byFpbXBvcnRhbnQ7IH0gLmNhcmZheC5tb2JpbGUgZGl2IGF7IGRpc3BsYXk6YmxvY2shaW1wb3J0YW50OyB9IC5jcmVkc2lpTW9iaWxleyBkaXNwbGF5OmJsb2NrOyBwb3NpdGlvbjpyZWxhdGl2ZTsgfSAuY3JlZHNpaU1vYmlsZSAuY3JlZHNpaS13aWRnZXQtY29udGFpbmVyeyBtYXgtd2lkdGg6MTAwJSFpbXBvcnRhbnQ7IH0gLmJhbm5lci1mb3JtIC5NYWluQm94TGF5ZXIgeyB3aWR0aDppbml0aWFsOyB9IEJPRFkuVXNlZFZkcDJNb2JpbGUgLnNwZWNzLWltYWdlcy1ncm91cHsgcG9zaXRpb246cmVsYXRpdmU7IGRpc3BsYXk6ZmxleDsgZmxleC1mbG93OnJvdyB3cmFwOyBhbGlnbi1pdGVtczpjZW50ZXI7IGdyaWQtZ2FwOjMwcHg7IGJhY2tncm91bmQtY29sb3I6I2ZmZjsgbWFyZ2luOjMwcHggMTVweDsgfSBCT0RZLlVzZWRWZHAyTW9iaWxlIC5zcGVjcy1pbWFnZXMtZ3JvdXAgPiBkaXZ7IHRleHQtYWxpZ246Y2VudGVyOyBmbGV4OjEgMSA0NSU7IH0gQk9EWS5Vc2VkVmRwMk1vYmlsZSAuc3BlY3MtaW1hZ2VzLWdyb3VwID4gZGl2ID4gaW1nIHsgd2lkdGg6MTAwJTsgaGVpZ2h0OmF1dG87IHBhZGRpbmc6NXB4OyBib3gtc2l6aW5nOmJvcmRlci1ib3g7IH0gQk9EWS5Vc2VkVmRwMk1vYmlsZSAuc3BlY3MtaW1hZ2VzLWdyb3VwIC5jZXJ0LXRpdGxlIHsgZGlzcGxheTpibG9jazsgZm9udC1zaXplOjEuMWVtOyB9IEJPRFkuVXNlZFZkcDJNb2JpbGUgLnNwZWNzLWltYWdlcy1ncm91cCAuY2VydC1zdWJ0aXRsZSB7IGRpc3BsYXk6YmxvY2s7IG1hcmdpbi1ib3R0b206MTBweDsgY29sb3I6Izc3NzsgZm9udC1zaXplOjAuOTVlbTsgbWFyZ2luLXRvcDo1cHg7IH0gQk9EWS5Vc2VkVmRwMk1vYmlsZSAuc3BlY3MtaW1hZ2VzLWdyb3VwIC5jZXJ0LWhpZ2hsaWdodGVkLXZhbHVlIHsgYmFja2dyb3VuZC1jb2xvcjojMDAwOyBib3JkZXI6MXB4IHNvbGlkICMwMDA7IGNvbG9yOiNGRkY7IHBhZGRpbmc6MTFweCAyMHB4IDlweCAyMHB4OyBib3JkZXItcmFkaXVzOjNweDsgZGlzcGxheTppbmxpbmUtYmxvY2s7IH0gLmNvbXBhcmVUYWJsZUltZyB7IGhlaWdodDo5MHB4OyBtYXJnaW46MCBhdXRvOyBkaXNwbGF5OmJsb2NrOyB9IC5kZWFsZXItaW5zaWRlLWNhbGwgYnV0dG9ueyBkaXNwbGF5Om5vbmUhaW1wb3J0YW50OyB9IC5icm9jaHVyZVBvc3RlciB7IHdpZHRoOjE3NXB4OyBtYXJnaW46MCBhdXRvOyBib3JkZXI6MXB4IHNvbGlkICNhYWE7IGJvcmRlci1yYWRpdXM6NHB4OyBvdmVyZmxvdzpoaWRkZW47IH0gLmJyb2NodXJlUG9zdGVyIGltZ3sgd2lkdGg6MTAwJTsgY3Vyc29yOnBvaW50ZXI7IH0gLnBoeXNpY2FsQWRkcmVzc0JveHsgYmFja2dyb3VuZC1jb2xvcjojRjdGNkY4OyB0ZXh0LWFsaWduOmNlbnRlcjsgfSAudXZkcC1sb2NhdGVkLWF0LW1zZ3sgZm9udC1zaXplOjFyZW0gOyBjb2xvcjojNzA3MDcwOyBmb250LXdlaWdodDpsaWdodGVyOyBkaXNwbGF5OmJsb2NrOyBtYXJnaW4tdG9wOjVweDsgfSAudXZkcC1sb2NhdGVkLWRlYWxlci1uYW1leyBmb250LXNpemU6MS4zMTNyZW0gOyBkaXNwbGF5OmJsb2NrOyBtYXJnaW4tdG9wOjVweDsgZm9udC13ZWlnaHQ6Ym9sZDsgfSAudXZkcC1sb2NhdGVkLWFkZHJlc3N7IGZvbnQtc2l6ZTowLjc1cmVtIDsgZGlzcGxheTpibG9jazsgbWFyZ2luOjVweCAwOyBmb250LXdlaWdodDpub3JtYWw7IH0gLnV2ZHAtbG9jYXRlZC13ZWJzaXRlIHsgZGlzcGxheTpibG9jazsgbWFyZ2luLXRvcDo1cHg7IGZvbnQtc2l6ZTp2YXIoLS1mcy0xKTsgZm9udC13ZWlnaHQ6Ym9sZDsgfSAuZHJvcGRvd24tY29udGVudHsgZGlzcGxheTpub25lOyBwb3NpdGlvbjphYnNvbHV0ZTsgYmFja2dyb3VuZC1jb2xvcjojZjlmOWY5OyB3aWR0aDoxMDAlOyBib3gtc2hhZG93OjBweCA4cHggMTZweCAwcHggcmdiYSgwLDAsMCwwLjIpOyB6LWluZGV4OjE7IGJveC1zaXppbmc6Ym9yZGVyLWJveDsgbWFyZ2luOjEwcHggLTEwcHg7IH0gLmRyb3Bkb3duLWNvbnRlbnQgYXsgYmFja2dyb3VuZDp0cmFuc3BhcmVudDsgY29sb3I6IzAwMCAhaW1wb3J0YW50OyBib3JkZXI6bm9uZTsgZm9udC1zaXplOjAuODc1cmVtICFpbXBvcnRhbnQ7IHRleHQtZGVjb3JhdGlvbjpub25lOyBib3gtc2l6aW5nOmJvcmRlci1ib3g7IHdpZHRoOjEwMCU7IHBhZGRpbmc6OHB4OyB0ZXh0LWFsaWduOmxlZnQ7IGRpc3BsYXk6ZmxleDsgYWxpZ24taXRlbXM6Y2VudGVyOyBsaW5lLWhlaWdodDoxLjVyZW07IHBhZGRpbmctbGVmdDozMHB4OyB9IC50ZXN0ZHJpdmVJY29ueyBmb250LXNpemU6MS4zNzVyZW0gOyBtYXJnaW4tcmlnaHQ6MjBweDsgfSAucHJpY2VEaXZ7IGRpc3BsYXk6ZmxleDsgYWxpZ24taXRlbXM6Y2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjsgcGFkZGluZzowIDIwcHggMCAxMHB4OyBmbGV4LWZsb3c6d3JhcDsgfSAucHJpY2VNc2dEaXZ7IGZvbnQtc2l6ZTowLjc1cmVtICFpbXBvcnRhbnQ7IGRpc3BsYXk6YmxvY2s7IHdpZHRoOjUwJTsgdGV4dC1hbGlnbjpyaWdodCFpbXBvcnRhbnQ7IGNvbG9yOiM2ZDZkNmQgIWltcG9ydGFudDsgfSAucHJpY2VEaXZQcmljZS5tdWx0aWZlZXN7IGZvbnQtc2l6ZToxcmVtOyBjb2xvcjojNzA3MDcwOyB9IC5wcmljZURpdlByaWNleyBmb250LXNpemU6MS44NzVyZW0gOyBjb2xvcjpibGFjazsgfSAuaGFzQXZnIC5wcmljZURpdlByaWNleyBmb250LXNpemU6MS41NjNyZW0gOyB9IC5wcmljZURpc2NsYWltZXJEaXZ7IGRpc3BsYXk6ZmxleDsgYWxpZ24taXRlbXM6Y2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6ZW5kOyB3aWR0aDoxMDAlOyB9ICN2ZHBfcHJpY2VfYmxvY2sgLnByaWNlRGlzY2xhaW1lckRpdnsgcGFkZGluZzowIDIwcHggMCAxMHB4OyB3aWR0aDp1bnNldDsgfSAucHJpY2VEaXNjbGFpbWVyU3BhbnsgZm9udC1zaXplOjAuNzVyZW0gIWltcG9ydGFudDsgZGlzcGxheTpibG9jazsgdGV4dC1hbGlnbjpyaWdodCFpbXBvcnRhbnQ7IGNvbG9yOiM2ZDZkNmQgIWltcG9ydGFudDsgfSAucHJpY2VCYXJ7IGJvcmRlci10b3A6MXB4IHNvbGlkICNiOGI4Yjg7IG1hcmdpbjowIDEwcHggMCA1NSU7IH0gLmNhckluZm9zRGl2eyBiYWNrZ3JvdW5kLWNvbG9yOndoaXRlOyBib3JkZXItYm90dG9tOjFweCBzb2xpZCBibGFjazsgcGFkZGluZzo1cHggMSUgMHB4IDElOyB9IC5jYXJJbmZvUHJpY2VEaXZ7IGNvbG9yOiM3NTc1NzU7IGZvbnQtc2l6ZTowLjc1cmVtIDsgZGlzcGxheTppbmxpbmUtYmxvY2s7IG92ZXJmbG93OmhpZGRlbjsgfSAuY2FySW5mb1ByaWNlRGl2IGl7IG1hcmdpbi1yaWdodDoycHggfSAuY2FySW5mb0tNeyB0ZXh0LWFsaWduOmxlZnQ7IHdpZHRoOjI4JTsgfSAuY2FySW5mb01pZGRsZXsgdGV4dC1hbGlnbjpjZW50ZXI7IHdpZHRoOjI3JTsgfSAuY2FySW5mb0NvbG9yeyB0ZXh0LWFsaWduOnJpZ2h0OyB3aWR0aDo0MCU7IH0gI3ZkcHZpZGVveyBtYXgtd2lkdGg6MTAwdnc7IH0gI3ZkcHZpZGVvID4gKnsgbWF4LXdpZHRoOjEwMCU7IH0gLmJkY3R7IHBhZGRpbmc6MCAxMHB4OyBtYXJnaW46MjBweCAwOyBmbG9hdDpsZWZ0OyB3aWR0aDoxMDAlOyBib3gtc2l6aW5nOmJvcmRlci1ib3g7IGZvbnQtc2l6ZTowLjg1cmVtOyBjb2xvcjojNjY2OyB9IC5iZGN0IEgzeyBwYWRkaW5nOjA7IG1hcmdpbjowIDAgNXB4IDA7IGZvbnQtc2l6ZToxcmVtOyB9IC5iZGN0ID4gZGl2eyBwYWRkaW5nOjE1cHg7IGJhY2tncm91bmQtY29sb3I6I2VlZTsgYm9yZGVyLXJhZGl1czo3cHg7IH0gLnByb21vLWJ0biB7IHBhZGRpbmc6MTVweCAyMHB4OyBtYXJnaW46YXV0bzsgYmFja2dyb3VuZC1jb2xvcjp3aGl0ZTsgYm9yZGVyOjFweCBzb2xpZDsgdGV4dC10cmFuc2Zvcm06dmFyKC0tY2VydC10eHQtdHJhbnNmb3JtLCB2YXIoLS10eHQtdXBwZXIpKTsgZm9udC13ZWlnaHQ6Ym9sZDsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IGJvcmRlci1jb2xvcjojMmMyYzJjOyBjb2xvcjojMmMyYzJjOyBiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmY7IGJvcmRlci1yYWRpdXM6MjVweDsgZm9udC1zaXplOjAuOXJlbTsgfSAuLXRleHQtdXBwZXJjYXNlLCAuLXVwcGVyY2FzZSwgLnRleHQtdXBwZXJjYXNlIHsgdGV4dC10cmFuc2Zvcm06dmFyKC0tdHh0LXVwcGVyKTsgfSAjZGFya3Rvb2x0aXAtY2FyUHJpY2VJbml0aWFsVG9vbFRpcEljb257IHdpZHRoOjIwMHB4OyB9Ci8qKiAvY3NzL25ld2NhcnMuY3NzICoqLwouZGl2Q2F0ZWdvcmllc0JveFdyYXBwZXIgLmRpdkNhdGVnb3J5Qm94V3JhcHBlcnsgbWFyZ2luLWJvdHRvbTo0MHB4OyB9IC5kaXZDYXRlZ29yaWVzQm94V3JhcHBlciAuZGl2Q2F0ZWdvcnlCb3hXcmFwcGVyOmxhc3QtY2hpbGR7IG1hcmdpbi1ib3R0b206MDsgfSBIMS5kZWZhdWx0LmlzU2luZ2xlVGl0bGUuaXNCb3R0b21Cb3JkZXJlZCwgLmRpdkNhdGVnb3JpZXNCb3hXcmFwcGVyIC5kaXZDYXRlZ29yeUJveFdyYXBwZXIgSDJ7IGJvcmRlcjowOyB9IC5kaXZDYXRlZ29yaWVzQm94V3JhcHBlciAuZGl2Q2F0ZWdvcnlCb3hXcmFwcGVyIC5kaXZDYXJzQm94V3JhcHBlciB7IGRpc3BsYXk6ZmxleDsgZmxleC1mbG93OnJvdyB3cmFwOyB9IC5kaXZDYXRlZ29yaWVzQm94V3JhcHBlciAuZGl2Q2F0ZWdvcnlCb3hXcmFwcGVyIC5kaXZDYXJTaW5nbGVPdXRlckJveHsgcG9zaXRpb246cmVsYXRpdmU7IGZsb2F0OmxlZnQ7IGJhY2tncm91bmQtY29sb3I6I2ZmZjsgYm9yZGVyLXJhZGl1czo3cHg7IG1hcmdpbjowIDAgMjBweCAwOyBwYWRkaW5nOjEwcHg7IGJvcmRlcjoxcHggI2FhYSBzb2xpZDsgYm94LXNpemluZzpib3JkZXItYm94OyB3aWR0aDoxMDAlOyBvdmVyZmxvdzpoaWRkZW47IH0gLmRpdkNhdGVnb3JpZXNCb3hXcmFwcGVyIC5kaXZDYXRlZ29yeUJveFdyYXBwZXIgLmRpdkNhclNpbmdsZU91dGVyQm94LmRpdk1ha2VMb2dvT25seXsgaGVpZ2h0OjE1NnB4OyB3aWR0aDphdXRvOyBtYXJnaW4tdG9wOjIwcHg7IHBhZGRpbmc6MjBweDsgYm9yZGVyLWNvbG9yOiNlZWU7IHRleHQtYWxpZ246Y2VudGVyOyB9IC5kaXZDYXRlZ29yaWVzQm94V3JhcHBlciAuZGl2Q2F0ZWdvcnlCb3hXcmFwcGVyIC5kaXZDYXJTaW5nbGVPdXRlckJveC5kaXZNYWtlTG9nb09ubHkgSU1HIHsgaGVpZ2h0OjEwMCU7IHdpZHRoOmF1dG87IH0gLmRpdkNhdGVnb3JpZXNCb3hXcmFwcGVyIC5kaXZDYXRlZ29yeUJveFdyYXBwZXIgLmRpdkNhclNpbmdsZU91dGVyQm94OmFjdGl2ZSB7IGJvcmRlci1jb2xvcjojNjY2OyB9IC5kaXZDYXRlZ29yaWVzQm94V3JhcHBlciAuZGl2Q2F0ZWdvcnlCb3hXcmFwcGVyIC5kaXZDYXJTaW5nbGVPdXRlckJveCAuZGl2Q2FyU2luZ2xlSW5uZXJCb3h7IG1hcmdpbjowOyB3aWR0aDoxMDAlOyBoZWlnaHQ6MTAwJTsgZmxvYXQ6bGVmdDsgb3BhY2l0eToxOyBvdmVyZmxvdzpoaWRkZW47IHBvc2l0aW9uOnJlbGF0aXZlOyB9IC5kaXZDYXRlZ29yaWVzQm94V3JhcHBlciAuZGl2Q2F0ZWdvcnlCb3hXcmFwcGVyIC5kaXZDYXJTaW5nbGVPdXRlckJveCAuZGl2Q2FyU2luZ2xlSW5uZXJCb3ggLmRpdkNhclRpdGxlQ29udGFpbmVyeyBjbGVhcjpib3RoOyB3aWR0aDo3NSU7IH0gLmRpdkNhdGVnb3JpZXNCb3hXcmFwcGVyIC5kaXZDYXRlZ29yeUJveFdyYXBwZXIgLmRpdkNhclNpbmdsZU91dGVyQm94IC5kaXZDYXJTaW5nbGVJbm5lckJveCAuZGl2Q2FyVGl0bGVDb250YWluZXIgQXsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IGRpc3BsYXk6YmxvY2s7IH0gLmRpdkNhdGVnb3JpZXNCb3hXcmFwcGVyIC5kaXZDYXRlZ29yeUJveFdyYXBwZXIgLmRpdkNhclNpbmdsZU91dGVyQm94IC5kaXZDYXJTaW5nbGVJbm5lckJveCAuZGl2Q2FyVGl0bGVDb250YWluZXIgc3Bhbi5zcGFuQ2FyTWFrZXsgZm9udC13ZWlnaHQ6bm9ybWFsOyBmb250LXNpemU6MS4wcmVtOyBsaW5lLWhlaWdodDoxLjJyZW07IHdpZHRoOmF1dG87IGhlaWdodDphdXRvOyBjb2xvcjojMmMyYzJjOyB9IC5kaXZDYXRlZ29yaWVzQm94V3JhcHBlciAuZGl2Q2F0ZWdvcnlCb3hXcmFwcGVyIC5kaXZDYXJTaW5nbGVPdXRlckJveCAuZGl2Q2FyU2luZ2xlSW5uZXJCb3ggLmRpdkNhclRpdGxlQ29udGFpbmVyIHNwYW4uc3Bhbk1vZGVsTmFtZXsgZm9udC13ZWlnaHQ6Ym9sZDsgbGluZS1oZWlnaHQ6MS40cmVtOyBmb250LXNpemU6MS40cmVtOyB3aWR0aDphdXRvOyBoZWlnaHQ6YXV0bzsgY29sb3I6IzJjMmMyYzsgfSAuZGl2Q2F0ZWdvcmllc0JveFdyYXBwZXIgLmRpdkNhdGVnb3J5Qm94V3JhcHBlciAuZGl2Q2FyU2luZ2xlT3V0ZXJCb3ggLmRpdkNhclNpbmdsZUlubmVyQm94IC5kaXZDYXJUaXRsZUNvbnRhaW5lciAuZGl2TmV3Q2FyU3RhcnRQcmljZSwgLmRpdkNhdGVnb3JpZXNCb3hXcmFwcGVyIC5kaXZDYXRlZ29yeUJveFdyYXBwZXIgLmRpdkNhclNpbmdsZU91dGVyQm94IC5kaXZDYXJTaW5nbGVJbm5lckJveCAuZGl2Q2FyVGl0bGVDb250YWluZXIgLmRpdk5ld0NhclByb21vUHJpY2V7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgZm9udC1zaXplOjFyZW07IHdpZHRoOmF1dG87IGhlaWdodDphdXRvOyBsaW5lLWhlaWdodDpub3JtYWw7IH0gLmRpdkNhdGVnb3JpZXNCb3hXcmFwcGVyIC5kaXZDYXRlZ29yeUJveFdyYXBwZXIgLmRpdkNhclNpbmdsZU91dGVyQm94IC5kaXZDYXJTaW5nbGVJbm5lckJveCAuZGl2Q2FySW1hZ2VDb250YWluZXJ7IHBvc2l0aW9uOnJlbGF0aXZlOyB3aWR0aDoxMDAlOyBtYXJnaW4tdG9wOjBweDsgbWFyZ2luLWJvdHRvbTotMTBweDsgbWluLWhlaWdodDoyNTBweDsgfSAuZGl2Q2F0ZWdvcmllc0JveFdyYXBwZXIgLmRpdkNhdGVnb3J5Qm94V3JhcHBlciAuZGl2Q2FyU2luZ2xlT3V0ZXJCb3ggLmRpdkNhclNpbmdsZUlubmVyQm94IC5kaXZDYXJJbWFnZUNvbnRhaW5lciBBeyBmbG9hdDpsZWZ0OyBjbGVhcjpib3RoOyB3aWR0aDoxMDAlOyB9IC5kaXZDYXRlZ29yaWVzQm94V3JhcHBlciAuZGl2Q2F0ZWdvcnlCb3hXcmFwcGVyIC5kaXZDYXJTaW5nbGVPdXRlckJveCAuZGl2Q2FyU2luZ2xlSW5uZXJCb3ggLmRpdkNhckltYWdlQ29udGFpbmVyIElNR3sgd2lkdGg6MTAwJTsgaGVpZ2h0OmF1dG87IH0gZGl2LmRpdkNhckZvb3RlckNvbnRhaW5lcnsgcG9zaXRpb246cmVsYXRpdmU7IGJvdHRvbTowcHg7IGxlZnQ6MDsgcmlnaHQ6MDsgd2lkdGg6MTAwJTsgfSBkaXYuY2FyUGF5bWVudFdyYXBwZXJ7IGhlaWdodDo2cmVtOyB9IC5yZWJhdGVUYWd7IHBhZGRpbmc6NXB4OyB0ZXh0LWFsaWduOmNlbnRlcjsgcG9zaXRpb246YWJzb2x1dGU7IHRvcDoxMHB4OyByaWdodDoxMHB4OyBiYWNrZ3JvdW5kOiMzMzRjOTYhaW1wb3J0YW50OyBjb2xvcjojZmZmZmZmIWltcG9ydGFudDsgdGV4dC1zaGFkb3c6bm9uZSFpbXBvcnRhbnQ7IGJvcmRlci1yYWRpdXM6NXB4OyB9IC5yZWJhdGVUYWcgc3Bhbi5yZWJhdGVUZXh0eyBmb250LXNpemU6MC44cmVtOyBsaW5lLWhlaWdodDoxcmVtOyB9IC5yZWJhdGVUYWcgc3Bhbi5yZWJhdGVBbW91bnR7IGRpc3BsYXk6YmxvY2s7IGZvbnQtd2VpZ2h0OjcwMDsgZm9udC1zaXplOjFyZW07IGxpbmUtaGVpZ2h0OjEuMnJlbTsgfSAuZGl2Q2F0ZWdvcmllc0JveFdyYXBwZXIgLmRpdkNhdGVnb3J5Qm94V3JhcHBlciAuZGl2Q2FyU2luZ2xlT3V0ZXJCb3ggLmRpdkNhclNpbmdsZUlubmVyQm94IC5kaXZDYXJQYXltZW50Q29udGFpbmVyeyBwb3NpdGlvbjpyZWxhdGl2ZTsgdGV4dC1hbGlnbjpjZW50ZXI7IGJhY2tncm91bmQtY29sb3I6I2YzZjNmMzsgd2lkdGg6MTAwJTsgYm9yZGVyLXJhZGl1czowIDAgN3B4IDdweDsgcGFkZGluZzoxMHB4IDVweDsgYm94LXNpemluZzpib3JkZXItYm94OyB9IC5kaXZDYXRlZ29yaWVzQm94V3JhcHBlciAuZGl2Q2F0ZWdvcnlCb3hXcmFwcGVyIC5kaXZDYXJTaW5nbGVPdXRlckJveCAuZGl2Q2FyU2luZ2xlSW5uZXJCb3ggLmRpdkNhclBheW1lbnRDb250YWluZXIgYXsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IHBvc2l0aW9uOnJlbGF0aXZlOyB9IC5kaXZDYXRlZ29yaWVzQm94V3JhcHBlciAuZGl2Q2F0ZWdvcnlCb3hXcmFwcGVyIC5kaXZDYXJTaW5nbGVPdXRlckJveCAuZGl2Q2FyU2luZ2xlSW5uZXJCb3ggLmRpdkNhclBheW1lbnRDb250YWluZXIgLnBheW1lbnRMaW5lMnsgZm9udC1zaXplOjEuM3JlbTsgY29sb3I6YmxhY2s7IH0gLmRpdkNhdGVnb3JpZXNCb3hXcmFwcGVyIC5kaXZDYXRlZ29yeUJveFdyYXBwZXIgLmRpdkNhclNpbmdsZU91dGVyQm94IC5kaXZDYXJTaW5nbGVJbm5lckJveCAuZGl2Q2FyUGF5bWVudENvbnRhaW5lciAucGF5bWVudExpbmUyIHNwYW57IGNvbG9yOiMzMzRjOTY7IGZvbnQtd2VpZ2h0OmJvbGQ7IH0gLmRpdkNhdGVnb3JpZXNCb3hXcmFwcGVyIC5kaXZDYXRlZ29yeUJveFdyYXBwZXIgLmRpdkNhclNpbmdsZU91dGVyQm94IC5kaXZDYXJTaW5nbGVJbm5lckJveCAuZGl2Q2FyUGF5bWVudENvbnRhaW5lciAucGF5bWVudExpbmUzeyBmb250LXNpemU6MC45cmVtOyBsaW5lLWhlaWdodDoxcmVtOyBjb2xvcjpncmV5OyB9IC5kaXZDYXRlZ29yaWVzQm94V3JhcHBlciAuZGl2Q2F0ZWdvcnlCb3hXcmFwcGVyIC5kaXZDYXJTaW5nbGVPdXRlckJveCAuZGl2Q2FyU2luZ2xlSW5uZXJCb3ggLmRpdkNhclBheW1lbnRDb250YWluZXIgLnBheW1lbnRMaW5lMXsgZm9udC1zaXplOjAuOXJlbTsgbGluZS1oZWlnaHQ6MXJlbTsgY29sb3I6Z3JleTsgfSBkaXYuZGl2Q2F0ZWdvcmllc0JveFdyYXBwZXIgZGl2LmRpdkNhdGVnb3J5Qm94V3JhcHBlciBkaXYuZGl2Q2FyU2luZ2xlT3V0ZXJCb3ggZGl2LmRpdkNhclNpbmdsZUlubmVyQm94IGRpdi5kaXZDYXJDb250YWN0Q1RBQ29udGFpbmVyeyBiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7IH0gZGl2LmRpdkNhdGVnb3JpZXNCb3hXcmFwcGVyIGRpdi5kaXZDYXRlZ29yeUJveFdyYXBwZXIgZGl2LmRpdkNhclNpbmdsZU91dGVyQm94IGRpdi5kaXZDYXJTaW5nbGVJbm5lckJveCBkaXYuZGl2Q2FyUGF5bWVudENvbnRhaW5lcldpdGhDVEF7IH0gLmRpdkNhclNpbmdsZU91dGVyQm94IC5kaXZDYXJQYXltZW50Q29udGFpbmVyVG9vbHRpcHsgZGlzcGxheTppbmxpbmUtdGFibGU7IHBhZGRpbmc6MCAxMHB4OyBjdXJzb3I6cG9pbnRlcjsgfSAuZGl2Q2F0ZWdvcnlCb3hXcmFwcGVyIC5kaXZDYXJTaW5nbGVPdXRlckJveCAuZGl2Q2FyUGF5bWVudENhbGN1bGF0b3IgeyBwb3NpdGlvbjphYnNvbHV0ZTsgbGVmdDoxMCU7IH0gLmRpdkNhdGVnb3J5Qm94V3JhcHBlciAuZGl2Q2FyU2luZ2xlT3V0ZXJCb3ggLnBheW1lbnRJbmZvQnViYmxlIHsgcG9zaXRpb246YWJzb2x1dGU7IHJpZ2h0OjEwJTsgZGlzcGxheTppbmxpbmUtYmxvY2s7IGZvbnQtc2l6ZToxLjU2M3JlbSA7IHRvcDozMCU7IGNvbG9yOiMwMDA7IH0gLk5ld1NycDJNb2JpbGUgSDEuZGVmYXVsdHsgZm9udC1zaXplOjEuN3JlbTsgbGluZS1oZWlnaHQ6MS43cmVtOyBjb2xvcjojMmMyYzJjOyBmb250LXdlaWdodDpub3JtYWw7IGNsZWFyOmJvdGg7IHBhZGRpbmc6MCAwIDEwcHggMDsgd2lkdGg6MTAwJTsgbWFyZ2luLWJvdHRvbToxMHB4OyBib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZGRkOyB9IC5OZXdTcnAyTW9iaWxlIEgxLmRlZmF1bHQgQXsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IH0gLk5ld1NycDJNb2JpbGUgSDEuZGVmYXVsdCBJLmljb24geyBib3JkZXItcmFkaXVzOjMycHg7IHdpZHRoOjMycHg7IGhlaWdodDozMnB4OyBwYWRkaW5nLXRvcDowOyBwYWRkaW5nLWxlZnQ6MTBweDsgZmxvYXQ6bGVmdDsgZm9udC1zaXplOjEuMTI1cmVtIDsgbWFyZ2luLXJpZ2h0OjVweDsgYm94LXNpemluZzpib3JkZXItYm94OyBsaW5lLWhlaWdodDozMHB4OyBib3JkZXI6MXB4IHNvbGlkICMyYzJjMmM7IGNvbG9yOiMyYzJjMmM7IGJhY2tncm91bmQtY29sb3I6I2ZmZmZmZjsgfSAuTmV3U3JwMk1vYmlsZSBIMS5kZWZhdWx0IEkuaWNvbi5tdWx0aUxpbmVIMXsgbWFyZ2luLXRvcDowcHg7IH0gLk5ld1NycDJNb2JpbGUgSDEuZGVmYXVsdCBJLmljb24uc2luZ2xlTGluZUgxeyBtYXJnaW4tdG9wOjBweDsgfSAuTmV3U3JwMk1vYmlsZSBIMS5kZWZhdWx0ID4gRElWeyBkaXNwbGF5OnRhYmxlLXJvdzsgfSAuTmV3U3JwMk1vYmlsZSBIMS5kZWZhdWx0ID4gRElWIERJVjpudGgtY2hpbGQoMSl7IGZvbnQtd2VpZ2h0OmJvbGQ7IH0gLk5ld1NycDJNb2JpbGUgSDEuZGVmYXVsdCA+IERJViBESVY6bnRoLWNoaWxkKDIpeyBmb250LXdlaWdodDpub3JtYWw7IGNvbG9yOiM3NTc1NzU7IGZvbnQtc2l6ZToxLjFyZW07IGxpbmUtaGVpZ2h0OjEuMnJlbTsgfSAuTmV3U3JwMk1vYmlsZSBIMS5kZWZhdWx0ID4gRElWIERJVjpudGgtY2hpbGQoMyl7IGZvbnQtc2l6ZTowLjhyZW07IGNvbG9yOiNiYmI7IHBhZGRpbmctdG9wOjVweDsgfSAuTmV3U3JwMk1vYmlsZSBIMi5kZWZhdWx0eyBmb250LXNpemU6MS40cmVtOyBsaW5lLWhlaWdodDoxLjRyZW07IGNvbG9yOiMyYzJjMmM7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgY2xlYXI6Ym90aDsgcGFkZGluZzoyMHB4IDA7IG1hcmdpbjowOyB9IC5OZXdTcnAyTW9iaWxlIEgyLmRlZmF1bHQgSS5pY29uIHsgYm9yZGVyLXJhZGl1czoyOHB4OyB3aWR0aDoyOHB4OyBoZWlnaHQ6MjhweDsgcGFkZGluZy10b3A6MDsgcGFkZGluZy1sZWZ0OjlweDsgZmxvYXQ6bGVmdDsgZm9udC1zaXplOjFyZW0gOyBsaW5lLWhlaWdodDoyNnB4OyBtYXJnaW4tcmlnaHQ6NXB4OyBib3gtc2l6aW5nOmJvcmRlci1ib3g7IGJvcmRlcjoxcHggc29saWQgIzJjMmMyYzsgY29sb3I6IzJjMmMyYzsgYmFja2dyb3VuZC1jb2xvcjojZmZmZmZmOyB9IC5OZXdTcnAyTW9iaWxlIEgyLmRlZmF1bHQgSS5pY29uLm11bHRpTGluZUgyeyBtYXJnaW4tdG9wOjBweDsgfSAuTmV3U3JwMk1vYmlsZSBIMi5kZWZhdWx0IEkuaWNvbi5zaW5nbGVMaW5lSDJ7IG1hcmdpbi10b3A6MHB4OyB9IC5OZXdTcnAyTW9iaWxlIEgyLmRlZmF1bHQgPiBESVZ7IGRpc3BsYXk6dGFibGUtcm93OyB9IC5OZXdTcnAyTW9iaWxlIEgyLmRlZmF1bHQgPiBESVYgRElWOm50aC1jaGlsZCgxKXsgZm9udC13ZWlnaHQ6Ym9sZDsgfSAuTmV3U3JwMk1vYmlsZSBIMi5kZWZhdWx0ID4gRElWIERJVjpudGgtY2hpbGQoMil7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgY29sb3I6Izc1NzU3NTsgZm9udC1zaXplOjFyZW07IGxpbmUtaGVpZ2h0OjFyZW07IH0gLk5ld1NycDIuTmV3U3JwMk1vYmlsZSBkaXYuTWFpbkJveExheWVyIGRpdi5PdXRlckJveExheWVyIHsgcGFkZGluZzoxMHB4OyBmbG9hdDpsZWZ0OyB3aWR0aDoxMDAlOyBib3gtc2l6aW5nOmJvcmRlci1ib3g7IH0gLmNhcl90ZXh0IGEge3RleHQtZGVjb3JhdGlvbjpub25lOyBjb2xvcjojMmMyYzJjOyBsaW5lLWhlaWdodDoxLjE7fSAuY2FyX3RleHQgYTpob3ZlciB7IHRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7IGNvbG9yOiMyYzJjMmN9IC5kaXZDYXRlZ29yaWVzQm94V3JhcHBlciAuZGl2Q2F0ZWdvcnlCb3hXcmFwcGVyIC5kaXZDYXJTaW5nbGVPdXRlckJveCAuZGl2Q2FyU2luZ2xlSW5uZXJCb3ggLmRpdkNhclRpdGxlQ29udGFpbmVyIC5kaXZDYXJJblN0b2NrTGlua3sgYmFja2dyb3VuZC1jb2xvcjojZWZlZmVmOyBwYWRkaW5nOjNweCA4cHg7IGJvcmRlci1yYWRpdXM6M3B4OyB3aWR0aDpmaXQtY29udGVudDsgY29sb3I6IzAwMDsgbWFyZ2luLXRvcDoxMHB4OyBwb3NpdGlvbjpyZWxhdGl2ZTsgei1pbmRleDozOyB9IC5kaXZDYXRlZ29yaWVzQm94V3JhcHBlciAuZGl2Q2F0ZWdvcnlCb3hXcmFwcGVyIC5kaXZDYXJTaW5nbGVPdXRlckJveCAuZGl2Q2FyU2luZ2xlSW5uZXJCb3ggLmRpdkNhclRpdGxlQ29udGFpbmVyIC5kaXZDYXJJblN0b2NrTGluayBheyBjb2xvcjojMDAwOyB9IC5kaXZEaXNjbGFpbWVyQmxvY2t7IGJhY2tncm91bmQtY29sb3I6I2Y1ZjVmNTsgYm9yZGVyLXJhZGl1czozcHg7IH0gLmRpdkRpc2NsYWltZXJCbG9ja0NvbnRlbnR7IHBhZGRpbmc6MTVweCAwOyB9IC5kaXZEaXNjbGFpbWVyQmxvY2tUaXRsZXsgaGVpZ2h0OmF1dG87IGRpc3BsYXk6YmxvY2s7IGZvbnQtd2VpZ2h0OmJvbGQ7IHBhZGRpbmc6MCA0MHB4IDEwcHg7IGJhY2tncm91bmQ6bm9uZTsgbWFyZ2luOjA7IH0gLmRpdkRpc2NsYWltZXJCbG9ja1RleHR7IHBhZGRpbmc6MCA0MHB4OyBiYWNrZ3JvdW5kOm5vbmU7IG1hcmdpbjowOyB9IC5kaXZGaWx0ZXJPdXRlckJveCAuZGl2RmlsdGVyVGl0bGV7IGZvbnQtd2VpZ2h0OmJvbGQ7IHBhZGRpbmctYm90dG9tOjEwcHg7IHBhZGRpbmctdG9wOjIwcHg7IGZvbnQtc2l6ZToxcmVtIDsgfSAuZGl2RmlsdGVyT3V0ZXJCb3ggdWwgbGkgLmZpbHRlckNoZWNrLCAuZGl2RmlsdGVyT3V0ZXJCb3ggdWwgbGkgLnJhZGlvU29ydHsgcG9zaXRpb246YWJzb2x1dGU7IG9wYWNpdHk6MDsgd2lkdGg6MXB4OyBoZWlnaHQ6MXB4OyBvdmVyZmxvdzpoaWRkZW47IGNsaXA6cmVjdCgwIDAgMCAwKTsgfSAuZGl2RmlsdGVyT3V0ZXJCb3ggdWwgbGkgLmZpbHRlckNoZWNrKy5maWx0ZXJTcGFuLCAuZGl2RmlsdGVyT3V0ZXJCb3ggdWwgbGkgLnJhZGlvU29ydCsuZmlsdGVyU3BhbnsgYmFja2dyb3VuZC1jb2xvcjojRjZGNkY2OyBjb2xvcjojMzMzMzMzOyB9IC5kaXZGaWx0ZXJPdXRlckJveCB1bCBsaSAuZmlsdGVyQ2hlY2s6Y2hlY2tlZCsuZmlsdGVyU3BhbiwgLmRpdkZpbHRlck91dGVyQm94IHVsIGxpIC5yYWRpb1NvcnQ6Y2hlY2tlZCsuZmlsdGVyU3BhbnsgYmFja2dyb3VuZC1jb2xvcjojNjY2NjY2OyBjb2xvcjojRkZGOyB9IC5kaXZGaWx0ZXJPdXRlckJveCB1bCB7IGRpc3BsYXk6ZmxleDsgZmxleC13cmFwOndyYXA7IGNvbHVtbi1nYXA6MTBweDsgcm93LWdhcDo1cHg7IHBhZGRpbmc6MDsgbWFyZ2luOjA7IGFsaWduLWl0ZW1zOnN0cmV0Y2g7IH0gLmRpdkZpbHRlck91dGVyQm94IHVsIGxpeyBmbGV4OjAgMCBjYWxjKDUwJSAtIDVweCk7IGJveC1zaXppbmc6Ym9yZGVyLWJveDsgfSAuZGl2RmlsdGVyT3V0ZXJCb3ggdWwgbGkgLmZpbHRlclNwYW57IGRpc3BsYXk6ZmxleDsgcGFkZGluZzo3cHggMjBweDsgYm9yZGVyOm5vbmU7IGJvcmRlci1yYWRpdXM6NXB4OyBjdXJzb3I6cG9pbnRlcjsgdGV4dC1hbGlnbjpjZW50ZXI7IHRleHQtZGVjb3JhdGlvbjpub25lOyBmb250LXNpemU6MC44NzVyZW0gOyB0cmFuc2l0aW9uOmJhY2tncm91bmQtY29sb3IgMC4zcyBlYXNlOyBib3gtc2l6aW5nOmJvcmRlci1ib3g7IG1hcmdpbi10b3A6NXB4OyB3aWR0aDoxMDAlOyBoZWlnaHQ6MTAwJTsgYWxpZ24taXRlbXM6Y2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyOyB9IC5NYWluQm94TGF5ZXIgLmZpbHRlclRvZ2dsZVdyYXBwZXIgLmZpbHRlclRvZ2dsZUJ0biB7IGRpc3BsYXk6aW5saW5lLWJsb2NrOyBwYWRkaW5nOjEwcHggMjBweDsgYmFja2dyb3VuZC1jb2xvcjojMzM0Yzk2OyBjb2xvcjojZmZmZmZmOyBib3JkZXI6bm9uZTsgYm9yZGVyLXJhZGl1czo1cHg7IGN1cnNvcjpwb2ludGVyOyB0ZXh0LWFsaWduOmNlbnRlcjsgZm9udC1zaXplOjFyZW0gOyB0cmFuc2l0aW9uOmJhY2tncm91bmQtY29sb3IgMC4zcyBlYXNlOyB3aWR0aDoxMDAlOyB0ZXh0LWRlY29yYXRpb246bm9uZSFpbXBvcnRhbnQ7IH0gLk1haW5Cb3hMYXllciAuc2VsZWN0VG9nZ2xlV3JhcHBlcnsgZGlzcGxheTpmbGV4OyBmbGV4LXdyYXA6d3JhcDsgY29sdW1uLWdhcDoxMHB4OyByb3ctZ2FwOjVweDsgcGFkZGluZzowOyBtYXJnaW46MDsgYWxpZ24taXRlbXM6c3RyZXRjaDsgfSAuTWFpbkJveExheWVyIC5zZWxlY3RUb2dnbGVXcmFwcGVyIC5zZWxlY3RBbGxUb2dnbGVCdG4sIC5NYWluQm94TGF5ZXIgLnNlbGVjdFRvZ2dsZVdyYXBwZXIgLnVuc2VsZWN0QWxsVG9nZ2xlQnRuIHsgZGlzcGxheTppbmxpbmUtYmxvY2s7IHBhZGRpbmc6MTBweCAzcHg7IGJhY2tncm91bmQtY29sb3I6IzMzNGM5NjsgY29sb3I6I2ZmZmZmZjsgYm9yZGVyOm5vbmU7IGJvcmRlci1yYWRpdXM6NXB4OyBjdXJzb3I6cG9pbnRlcjsgdGV4dC1hbGlnbjpjZW50ZXI7IGZvbnQtc2l6ZToxcmVtIDsgdHJhbnNpdGlvbjpiYWNrZ3JvdW5kLWNvbG9yIDAuM3MgZWFzZTsgdGV4dC1kZWNvcmF0aW9uOm5vbmUhaW1wb3J0YW50OyBmbGV4OjAgMCBjYWxjKDUwJSAtIDVweCk7IGJveC1zaXppbmc6Ym9yZGVyLWJveDsgfSAuZGl2RmlsdGVyT3V0ZXJCb3ggZGl2LmRpdlByaWNlUmFuZ2VTbGlkZXIgeyBtYXJnaW46MHB4IDAgNDBweCAwIWltcG9ydGFudDsgfSAuZGl2UHJpY2VSYW5nZVNsaWRlciA+IC5kaXZTcGFuLmRpdlNwYW4xMjpub3QoLmRpdkZpbHRlclRpdGxlKSB7IGRpc3BsYXk6ZmxleDsgYWxpZ24taXRlbXM6Y2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyOyB9IC5kaXZQcmljZVJhbmdlU2xpZGVyIC5yYW5nZS1zbGlkZXItbGVmdCwgLmRpdlByaWNlUmFuZ2VTbGlkZXIgLnJhbmdlLXNsaWRlci1yaWdodCB7IHdpZHRoOmF1dG87IG1pbi13aWR0aDo0MHB4OyB0ZXh0LWFsaWduOmNlbnRlcjsgfSAuZGl2UHJpY2VSYW5nZVNsaWRlciAucmFuZ2Utc2xpZGVyLnVpLXNsaWRlciB7IGZsZXg6MSAxIGF1dG87IG1heC13aWR0aDo1MDBweDsgfSAuTWFpbkJveExheWVyIC5zaWRlU2lkZWJhciB7IHBvc2l0aW9uOmZpeGVkOyB0b3A6MDsgbGVmdDowOyB3aWR0aDozMDBweDsgaGVpZ2h0OjEwMCU7IGJhY2tncm91bmQtY29sb3I6I2ZmZjsgYm94LXNoYWRvdzotMnB4IDAgOHB4IHJnYmEoMCwwLDAsMC4zKTsgcGFkZGluZzowIDIwcHggMjBweCAyMHB4OyB6LWluZGV4OjEwMDA7IG92ZXJmbG93LXk6YXV0bzsgb3ZlcmZsb3cteDpoaWRkZW47IG1heC13aWR0aDoxMDAlOyBib3gtc2l6aW5nOmJvcmRlci1ib3g7IHRyYW5zZm9ybTp0cmFuc2xhdGVYKC0xMDAlKTsgdHJhbnNpdGlvbjp0cmFuc2Zvcm0gMC4zcyBlYXNlOyB9IC5NYWluQm94TGF5ZXIgLnNpZGVTaWRlYmFyLm9wZW4geyB0cmFuc2Zvcm06dHJhbnNsYXRlWCgwKTsgZGlzcGxheTpibG9jazsgfSAuTWFpbkJveExheWVyIC5jbG9zZUJ0biB7IHBvc2l0aW9uOmFic29sdXRlOyB0b3A6MTBweDsgcmlnaHQ6LTEwcHg7IGZvbnQtc2l6ZToxLjVyZW0gOyBiYWNrZ3JvdW5kOm5vbmU7IGJvcmRlcjpub25lOyBjdXJzb3I6cG9pbnRlcjsgei1pbmRleDoxMTsgfSAuTWFpbkJveExheWVyIC5zaWRlU2lkZWJhciAuZGl2RmlsdGVyQm94VGl0bGV7IGZvbnQtd2VpZ2h0OmJvbGQ7IGZvbnQtc2l6ZToxLjEyNXJlbSA7IHBvc2l0aW9uOnN0aWNreTsgdG9wOjA7IGJhY2tncm91bmQtY29sb3I6I2ZmZjsgei1pbmRleDoxMDsgcGFkZGluZzoxMHB4IDAgMCAwOyB9IC5NYWluQm94TGF5ZXIgLnNpZGVTaWRlYmFyIC5zaWRlYmFySGVhZGVyIHsgcG9zaXRpb246c3RpY2t5OyB0b3A6MDsgYmFja2dyb3VuZC1jb2xvcjojZmZmOyB6LWluZGV4OjEwMDsgcGFkZGluZzoxMHB4IDAgMCAwOyBkaXNwbGF5OmZsZXg7IGp1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuOyBhbGlnbi1pdGVtczpjZW50ZXI7IH0KLyoqIC9jc3MvcmVkLmNzcyAqKi8KLm1lbnUgdWwgbGkgYSwgLm1lbnUgdWwgbGkgYTpob3ZlcnsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjRweDsgLW1vei1ib3JkZXItcmFkaXVzOjRweDsgYm9yZGVyLXJhZGl1czo0cHg7IGNvbG9yOiNmZmZmZmY7IGZpbGw6I2ZmZmZmZjsgdGV4dC1hbGlnbjpsZWZ0OyB0ZXh0LWRlY29yYXRpb246bm9uZTsgZGlzcGxheTpibG9jazsgZm9udC1zaXplOjEuMWVtOyBmb250LXdlaWdodDpib2xkOyBwYWRkaW5nOjVweCAwIDVweCA3cHg7IGJhY2tncm91bmQ6IzJjMmMyYzsgfSAudG9wbmF2IC5tZW51IHVsIGxpIGF7IGJhY2tncm91bmQ6I2ZmZmZmZjsgY29sb3I6IzFlMjY0ZTsgZmlsbDojMWUyNjRlOyB9IC5tZW51IHVsIGxpIGE6aG92ZXJ7IGJvcmRlci1yYWRpdXM6M3B4IDNweCAwcHggMHB4OyB9IC5tZW51IC5wcm9tbyB7IG1hcmdpbjppbml0aWFsOyBtaW4taGVpZ2h0OmF1dG87IH0gLm1lbnUuYnVyZ2VyLWJ0bi1jb250YWluZXIgdWwgbGkgYSwgLm1lbnUuYnVyZ2VyLWJ0bi1jb250YWluZXIgdWwgbGkgYTpob3ZlcnsgYm9yZGVyLXJhZGl1czowOyB9IC5tb2JpbGVCdXR0b257IGNvbG9yOnJnYig0NCw0NCw0NCkgIWltcG9ydGFudDsgYmFja2dyb3VuZDojRkZGRkZGIWltcG9ydGFudDsgfSAubWVudSB1bCBsaSBhLmJsYWNrIHtiYWNrZ3JvdW5kOiMyMjI7fSAuaC1idXR0b25zIHVsIGxpIGEuYmxhY2sge2JhY2tncm91bmQ6IzAwMDtjb2xvcjojRkZGRkZGfSAuaC1idXR0b25zIHt9IC5oLWJ1dHRvbnMgdWwgbGkge2Zsb2F0OmxlZnQ7IGxpc3Qtc3R5bGU6bm9uZTsgbGlzdC1zdHlsZS10eXBlOm5vbmU7IG1hcmdpbjowIDAgMTBweCAwcHg7ZGlzcGxheTpibG9jazsgdGV4dC1hbGlnbjpjZW50ZXI7fSAuaC1idXR0b25zIHVsIGxpIGEgeyBiYWNrZ3JvdW5kLWNvbG9yOiNGRkZGRkY7IGNvbG9yOiMwMDA7IGZvbnQtd2VpZ2h0OmJvbGQ7IGRpc3BsYXk6YmxvY2s7IHBhZGRpbmc6NXB4OyAtd2Via2l0LWJvcmRlci1yYWRpdXM6NnB4OyAtbW96LWJvcmRlci1yYWRpdXM6NnB4OyBib3JkZXItcmFkaXVzOjZweDsgbWluLXdpZHRoOjk1cHg7IH0gLmRlYWxlcnBob25lIHVsIGxpIGEgeyAtd2Via2l0LWJvcmRlci1yYWRpdXM6NHB4OyAtbW96LWJvcmRlci1yYWRpdXM6NHB4OyBib3JkZXItcmFkaXVzOjRweDsgY29sb3I6I2ZmZjsgdGV4dC1hbGlnbjpsZWZ0OyB0ZXh0LWRlY29yYXRpb246bm9uZTsgZGlzcGxheTpibG9jazsgZm9udC1zaXplOjEuMWVtOyBmb250LXdlaWdodDpib2xkOyBwYWRkaW5nOjEwcHg7IGJhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDsgYmFja2dyb3VuZC1zaXplOjI1cHg7IGJhY2tncm91bmQtcG9zaXRpb246OTglIDZweDsgYmFja2dyb3VuZC1jb2xvcjojZDAwOyBiYWNrZ3JvdW5kLWltYWdlOnVybCgvaW1hZ2VzL2Fycm93LnBuZyk7IH0gLm1lbnUgbGkuaW52ZXJzZS1jb2xvciA+IGEgeyBjb2xvcjojMmMyYzJjOyBiYWNrZ3JvdW5kLWNvbG9yOiNlZWVlZWU7IGJvcmRlcjoxcHggc29saWQ7IH0gI2NoYXQtd2lkZ2V0LWNvbnRhaW5lciwgI2xpdmVfY2hhdF9zdGF0dXMsICNDaGF0RGl2LCAjcG9kaXVtLWJ1YmJsZSwgI2pjb250LCBqZGl2LCAjdHN3X3dyYXBwZXIsIC5mYl9kaWFsb2csIC5mYl9pZnJhbWVfd2lkZ2V0LCAuZmItY3VzdG9tZXJjaGF0LCAuZWstY2hhdCwgLm1hdGFkb3ItbGl2ZWNoYXQtMTIzNzg5LW1haW4td3JhcHBlciwgI21hdGFkb3ItY29ubmVjdC10ZXh0LWxhYmVsLCAjbWF0YWRvci1jb25uZWN0LXRleHQtbGFiZWwtYmFkZ2V7IHotaW5kZXg6MTAwMDAgIWltcG9ydGFudDsgfSBzdmcuY2hhdC1idWJibGV7IHdpZHRoOnJldmVydDsgaGVpZ2h0OnJldmVydDsgfSAuVXNlZFNycDJNb2JpbGUgaWZyYW1lI3BvZGl1bS1idWJibGV7IGJvdHRvbTozcmVtICFpbXBvcnRhbnQ7IH0gI3RyYWRlSW5CYXJQb3B1cF9mb3JtVyAudHJhZGVJbkJhck11bHRpc2VsZWN0eyBtaW4td2lkdGg6MjI1cHg7IG1heC13aWR0aDoxMDAlIWltcG9ydGFudDsgfSAudWktbXVsdGlzZWxlY3QtbWVudS50cmFkZUluQmFyTXVsdGlzZWxlY3R7IHotaW5kZXg6MTAwMDAyMDsgbWF4LWhlaWdodDoxMTBweDsgb3ZlcmZsb3c6c2Nyb2xsOyB9IC5tdWx0aXNlbGVjdFZlaGljbGVPcHRpb25zeyBtYXJnaW4tdG9wOjVweDsgfSAubXVsdGlzZWxlY3RWZWhpY2xlT3B0aW9ucyBzcGFueyBmb250LXNpemU6MC45MzhyZW0gIWltcG9ydGFudDsgcGFkZGluZzowICFpbXBvcnRhbnQ7IG1hcmdpbjowICFpbXBvcnRhbnQ7IH0gLnRyYWRpbk5pdnsgd2lkdGg6MTAwJTsgcGFkZGluZzowLjRyZW07IGJvcmRlcjoxcHggc29saWQgI2E5YTlhOTsgYm9yZGVyLXJhZGl1czo1cHg7IH0gI3RyYWRlSW5CYXJQb3B1cF9mb3JtVyAudHJhZGluTml2eyB3aWR0aDoxMDAlOyBwYWRkaW5nOjAuNXJlbTsgYm9yZGVyOjFweCBzb2xpZCAjYTlhOWE5OyBib3JkZXItcmFkaXVzOjVweDsgfSAjdHJhZGVJbkJhclBvcHVwX2Zvcm1XIC5uaXZNYWtlTW9kZWxTZWxlY3RDb250YWluZXJ7IHdpZHRoOjEwMCU7IGZvbnQtc2l6ZTowLjc1cmVtIDsgfSAjdHJhZGVJbkJhclBvcHVwX2Zvcm1XIC5uaXZNYWtlTW9kZWxTZWxlY3RDb250YWluZXIgLm5pdk1ha2VNb2RlbFNlbGVjdHsgZGlzcGxheTpub25lOyB9ICN0cmFkZUluQmFyUG9wdXBfZm9ybVcgLm5pdk1ha2VNb2RlbFNlbGVjdENvbnRhaW5lciAubml2TWFrZU1vZGVsU2VsZWN0TGFiZWx7IGRpc3BsYXk6aW5saW5lLWJsb2NrOyBtYXJnaW46MCA1cHg7IGN1cnNvcjpwb2ludGVyOyB9ICN0cmFkZUluQmFyUG9wdXBfZm9ybVcgLm5pdk1ha2VNb2RlbFNlbGVjdENvbnRhaW5lciAubml2TWFrZU1vZGVsU2VsZWN0OmNoZWNrZWQrbGFiZWx7IGJvcmRlci1ib3R0b206MnB4IHNvbGlkIGJsYWNrOyB9ICN0cmFkZUluQmFyUG9wdXBfZm9ybVcgLnRyYWRlSW5CYXJNdWx0aXNlbGVjdHsgd2lkdGg6MTAwJSFpbXBvcnRhbnQ7IGJvcmRlci1yYWRpdXM6MC4zcmVtIWltcG9ydGFudDsgYm9yZGVyLXdpZHRoOjFweCFpbXBvcnRhbnQ7IGJvcmRlci1yYWRpdXM6MC4zcmVtIWltcG9ydGFudDsgYm9yZGVyLWNvbG9yOiNhOWE5YTkhaW1wb3J0YW50OyBwYWRkaW5nOjAuM3JlbSFpbXBvcnRhbnQ7IH0gI3RyYWRlSW5CYXJQb3B1cF9mb3JtVyAudHJhZGluU2VsZWN0UG9wdXB7IGNvbG9yOiMzYzM4MzY7IGZvbnQtc2l6ZToxcmVtOyBiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsMSk7IGJhY2tncm91bmQtcG9zaXRpb246OTUlIDUwJTsgLXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7IC1tb3otYXBwZWFyYW5jZTpub25lOyBtYXJnaW46NXB4IDAgMDsgcGFkZGluZzowLjNyZW0haW1wb3J0YW50OyB9Ci8qKiAvY3NzL2Rpdl9yYW5nZXNsaWRlci5jc3MgKiovCmRpdi5kaXZQcmljZVJhbmdlU2xpZGVyeyBtYXJnaW46MCAwIDEwcHggMDsgcGFkZGluZzowOyB9IGRpdi5kaXZQcmljZVJhbmdlU2xpZGVyIGRpdi5yYW5nZS1zbGlkZXItdGl0bGV7IGZvbnQtd2VpZ2h0OmJvbGQ7IHBhZGRpbmc6MCAwIDEwcHggMDsgfSBkaXYuZGl2UHJpY2VSYW5nZVNsaWRlciBkaXYucmFuZ2Utc2xpZGVyLXByaWNlc3sgcGFkZGluZzowIDAgMTVweCAwOyBmb250LXNpemU6MS4xMjVyZW0gOyB9IGRpdi5kaXZQcmljZVJhbmdlU2xpZGVyIGRpdi5yYW5nZS1zbGlkZXItcHJpY2VzIHNwYW4ucHJpY2UtbWlue30gZGl2LmRpdlByaWNlUmFuZ2VTbGlkZXIgZGl2LnJhbmdlLXNsaWRlci1wcmljZXMgc3Bhbi5wcmljZS1tYXh7fSBkaXYuZGl2UHJpY2VSYW5nZVNsaWRlciBkaXYucmFuZ2Utc2xpZGVyeyBib3JkZXItcmFkaXVzOjVweCAhaW1wb3J0YW50OyBoZWlnaHQ6MTBweDsgbWFyZ2luOjRweCA2cHggMCAtM3B4OyBwYWRkaW5nOjA7IGJvcmRlcjoxcHggc29saWQgI2NjYzsgfSBkaXYuZGl2UHJpY2VSYW5nZVNsaWRlciBkaXYucmFuZ2Utc2xpZGVyLWxlZnQsIGRpdi5kaXZQcmljZVJhbmdlU2xpZGVyIGRpdi5yYW5nZS1zbGlkZXItcmlnaHR7IGZvbnQtc2l6ZTowLjc1cmVtIDsgbGluZS1oZWlnaHQ6MjBweDsgY29sb3I6Izc1NzU3NTsgfSBkaXYuZGl2UHJpY2VSYW5nZVNsaWRlciBkaXYucmFuZ2Utc2xpZGVyLWxlZnR7IHRleHQtYWxpZ246bGVmdDsgfSBkaXYuZGl2UHJpY2VSYW5nZVNsaWRlciBkaXYucmFuZ2Utc2xpZGVyLXJpZ2h0eyB0ZXh0LWFsaWduOnJpZ2h0OyB9IGRpdi5kaXZQcmljZVJhbmdlU2xpZGVyIGRpdi5yYW5nZS1zbGlkZXIgZGl2LnVpLXNsaWRlci1yYW5nZXsgYmFja2dyb3VuZDojZmZmZmZmIWltcG9ydGFudDsgfSBkaXYuZGl2UHJpY2VSYW5nZVNsaWRlciBkaXYucmFuZ2Utc2xpZGVyIEEudWktc2xpZGVyLWhhbmRsZSwgZGl2LmRpdlByaWNlUmFuZ2VTbGlkZXIgZGl2LnJhbmdlLXNsaWRlciBzcGFuLnVpLXNsaWRlci1oYW5kbGV7IG1hcmdpbjotOHB4IDAgMCAtMTFweDsgYm9yZGVyOjFweCBzb2xpZCAjY2NjOyBwYWRkaW5nOjAgIWltcG9ydGFudDsgYm9yZGVyLXJhZGl1czo1MHB4ICFpbXBvcnRhbnQ7IGJhY2tncm91bmQ6I2ZmZiAhaW1wb3J0YW50OyB0b3A6MDsgaGVpZ2h0OjI1cHg7IHdpZHRoOjI1cHg7IGN1cnNvcjpwb2ludGVyOyBvdXRsaW5lOm5vbmUgIWltcG9ydGFudDsgfSBkaXYuZGl2UHJpY2VSYW5nZVNsaWRlciBkaXYucmFuZ2Utc2xpZGVyIEEudWktc2xpZGVyLWhhbmRsZS51aS1zdGF0ZS1ob3ZlciwgZGl2LmRpdlByaWNlUmFuZ2VTbGlkZXIgZGl2LnJhbmdlLXNsaWRlciBBLnVpLXNsaWRlci1oYW5kbGUudWktc3RhdGUtYWN0aXZlLCBkaXYuZGl2UHJpY2VSYW5nZVNsaWRlciBkaXYucmFuZ2Utc2xpZGVyIHNwYW4udWktc2xpZGVyLWhhbmRsZS51aS1zdGF0ZS1ob3ZlciwgZGl2LmRpdlByaWNlUmFuZ2VTbGlkZXIgZGl2LnJhbmdlLXNsaWRlciBzcGFuLnVpLXNsaWRlci1oYW5kbGUudWktc3RhdGUtYWN0aXZleyBib3JkZXItY29sb3I6IzY2NjsgfSBkaXYuZGl2UHJpY2VSYW5nZVNsaWRlciBkaXYucmFuZ2Utc2xpZGVyIEEudWktc2xpZGVyLWhhbmRsZS51aS1zdGF0ZS1mb2N1cywgZGl2LmRpdlByaWNlUmFuZ2VTbGlkZXIgZGl2LnJhbmdlLXNsaWRlciBzcGFuLnVpLXNsaWRlci1oYW5kbGUudWktc3RhdGUtZm9jdXN7IG91dGxpbmU6bm9uZSAhaW1wb3J0YW50OyB9Ci8qKiAvY3NzL3BheW1lbnRDYWxjdWxhdG9yLmNzcyAqKi8KOmlzKCNwYXltZW50Q2FsY3VsYXRvckNvbnRhaW5lciwjZmluYW5jZU11bHRpc3RlcE5ld0NhbGN1bGF0b3IpLmNhbGMtbW9iaWxlIHsgLS13cmFwLXBheW1lbnRzOndyYXA7IC0tbW9iaWxlLWRpc3BsYXk6bm9uZTsgLS1tb2ItZnVsbC13aWR0aDoxMDAlOyAtLXBheW1lbnQtbWluLXdpZHRoOjYuM3JlbTsgLS1oZWFkZXItZm9udC1zaXplOnZhcigtLWZzMik7IC0taGVhZGVyLWljb24tc2l6ZTp2YXIoLS1mczUpOyB9ICNwYXltZW50Q2FsY3VsYXRvckNvbnRhaW5lcnsgbWluLWhlaWdodDo0NTBweDsgY29sb3I6YmxhY2s7IH0gI3BheW1lbnRDYWxjdWxhdG9yUG9wdXBDb250YWluZXJ7IGJvcmRlcjo0cHggc29saWQgI2ZmZmZmZjsgfSAjcGF5bWVudENhbGN1bGF0b3JQb3B1cENvbnRhaW5lcjpoYXMoLmNhbGMtbW9iaWxlKXsgYm94LXNpemluZzpib3JkZXItYm94OyB9ICNwYXltZW50Q2FsY3VsYXRvckNvbnRhaW5lci5jYWxjLW1vYmlsZSAucGF5bWVudENhbGN1bGF0b3JQYXltZW50Q29udGFpbmVyLCAjZmluYW5jZU11bHRpc3RlcE5ld0NhbGN1bGF0b3IuY2FsYy1tb2JpbGUgLnBheW1lbnRDYWxjdWxhdG9yUGF5bWVudENvbnRhaW5lcnsgb3ZlcmZsb3cteDp2aXNpYmxlOyBvdmVyZmxvdy15OnNjcm9sbDsgaGVpZ2h0OjM3MHB4OyBmbGV4LXdyYXA6d3JhcDsgfSAucGF5bWVudENhbGN1bGF0b3JQYXltZW50Q29udGFpbmVyLCAucGF5bWVudENhbGN1bGF0b3JQYXltZW50Q29udGFpbmVyV2l0aFRheGVzIHsgb3ZlcmZsb3cteDpzY3JvbGw7IGRpc3BsYXk6ZmxleDsgZ2FwOjEwcHg7IH0gLmZpbmFuY2VNdWx0aXN0ZXBOZXdDYWxjdWxhdG9yIC5wYXltZW50Q2FsY3VsYXRvclBheW1lbnRDb250YWluZXIsIC5maW5hbmNlTXVsdGlzdGVwTmV3Q2FsY3VsYXRvciAucGF5bWVudENhbGN1bGF0b3JQYXltZW50Q29udGFpbmVyV2l0aFRheGVzIHsgd2lkdGg6MTAwJTsgfSAucGF5bWVudENhbGN1bGF0b3JQYXltZW50Q29udGFpbmVyLmJveGVzNHsgd2lkdGg6NjQlOyB9IC5maW5hbmNlTXVsdGlzdGVwTmV3Q2FsY3VsYXRvciAucGF5bWVudENhbGN1bGF0b3JQYXltZW50Q29udGFpbmVyLmJveGVzNCwgLmZpbmFuY2VNdWx0aXN0ZXBOZXdDYWxjdWxhdG9yIC5wYXltZW50Q2FsY3VsYXRvclBheW1lbnRDb250YWluZXJXaXRoVGF4ZXMuYm94ZXM0eyB3aWR0aDo4MCU7IH0gLnJldmVhbC1tb2RhbCAucGF5bWVudENhbGN1bGF0b3JQYXltZW50Q29udGFpbmVyIHNwYW4sIC5yZXZlYWwtbW9kYWwgLnBheW1lbnRDYWxjdWxhdG9yUGF5bWVudENvbnRhaW5lcldpdGhUYXhlcyBzcGFueyBwYWRkaW5nOjAhaW1wb3J0YW50OyBtYXJnaW4tYm90dG9tOjAhaW1wb3J0YW50OyBjb2xvcjppbmhlcml0OyBmb250LXNpemU6aW5oZXJpdDsgfSAucGF5bWVudENhbGN1bGF0b3JQYXltZW50V3JhcHBlcnsgbWFyZ2luLWJvdHRvbTp2YXIoLS1zKTsgfSAjcGF5bWVudENhbGN1bGF0b3JDb250YWluZXIuY2FsYy1tb2JpbGUgLnBheW1lbnRDYWxjdWxhdG9yUGF5bWVudFdyYXBwZXJ7IG1hcmdpbi1ib3R0b206MDsgfSAucGF5bWVudENhbGN1bGF0b3JQYXltZW50Q29udGFpbmVyLmJveGVzNCAucGF5bWVudENhbGN1bGF0b3JQYXltZW50V3JhcHBlciwgLnBheW1lbnRDYWxjdWxhdG9yUGF5bWVudENvbnRhaW5lcldpdGhUYXhlcy5ib3hlczQgLnBheW1lbnRDYWxjdWxhdG9yUGF5bWVudFdyYXBwZXJ7IHdpZHRoOjI0JTsgfSAucGF5bWVudENhbGN1bGF0b3JMaW5leyBib3JkZXItYm90dG9tOjFweCBzb2xpZCBncmV5OyBtYXJnaW46MTBweCAwOyB9IC5wYXltZW50Q2FsY3VsYXRvclBheW1lbnRXcmFwcGVyIC5wYXltZW50Q2FsY3VsYXRvclBheW1lbnRMaW5lMXsgZm9udC1zaXplOjAuNjg4cmVtIDsgfSAucmV2ZWFsLW1vZGFsIC5wYXltZW50Q2FsY3VsYXRvclBheW1lbnRXcmFwcGVyIC5wYXltZW50Q2FsY3VsYXRvclBheW1lbnRMaW5lMSBzcGFueyBmb250LXNpemU6MS43NXJlbSA7IGNvbG9yOiMzMzRjOTY7IH0gLnBheW1lbnRDYWxjdWxhdG9yUGF5bWVudFdyYXBwZXIgLnBheW1lbnRDYWxjdWxhdG9yUGF5bWVudExpbmUyeyBmb250LXNpemU6MC43NXJlbSA7IH0gLnJldmVhbC1tb2RhbCAucGF5bWVudENhbGN1bGF0b3JQYXltZW50V3JhcHBlciAucGF5bWVudENhbGN1bGF0b3JQYXltZW50TGluZTIgc3BhbnsgZm9udC1zaXplOjEuMzc1cmVtIDsgfSAucGF5bWVudENhbGN1bGF0b3JQYXltZW50V3JhcHBlciAucGF5bWVudENhbGN1bGF0b3JQYXltZW50TGluZTN7IGZvbnQtc2l6ZTowLjc1cmVtIDsgfSAucmV2ZWFsLW1vZGFsIC5wYXltZW50Q2FsY3VsYXRvclBheW1lbnRXcmFwcGVyIC5wYXltZW50Q2FsY3VsYXRvclBheW1lbnRMaW5lMyBzcGFueyBmb250LXNpemU6MS4yNXJlbSA7IH0gLnBheW1lbnRDYWxjdWxhdG9yUGF5bWVudFdyYXBwZXIgLnBheW1lbnRDYWxjdWxhdG9yUGF5bWVudExpbmU0eyBmb250LXNpemU6MC43NXJlbSA7IGNvbG9yOmdyZXk7IHdoaXRlLXNwYWNlOm5vcm1hbDsgfSAjcGF5bWVudENhbGN1bGF0b3JWZWhpY2xlSW1hZ2VEaXZ7IG1heC13aWR0aDozMyU7IHBvc2l0aW9uOmFic29sdXRlOyByaWdodDowOyB0b3A6LTUwJTsgZGlzcGxheTp2YXIoLS1tb2JpbGUtZGlzcGxheSwgaW5pdGlhbCk7IH0gLnBheW1lbnRDYWxjdWxhdG9yT3B0aW9uQ29udGFpbmVyeyB3aWR0aDptYXgodmFyKC0tbW9iLWZ1bGwtd2lkdGgsIDY2JSksIDIwcmVtKTsgfSAuY2FsYy1wYXltZW50c3sgbWF4LXdpZHRoOnZhcigtLW1vYi1mdWxsLXdpZHRoLCA2NiUpOyB9IC5jYWxjLXBheW1lbnRzIDppcygucHJpY2UtZnIsIC5wcmljZS1lbil7IHRleHQtYWxpZ246cmV2ZXJ0OyBtaW4td2lkdGg6dW5zZXQ7IH0gLnBheW1lbnRDYWxjdWxhdG9yUGF5bWVudFR5cGVDb250YWluZXJ7IGJvcmRlci1ib3R0b206MXB4IHNvbGlkICNjY2NjY2M7IH0gLmZpbmFuY2VNdWx0aXN0ZXBOZXdDYWxjdWxhdG9yIC5wYXltZW50Q2FsY3VsYXRvclBheW1lbnRUeXBlQ29udGFpbmVyeyBtYXJnaW4tYm90dG9tOjEwcHg7IH0gLnBheW1lbnRDYWxjdWxhdG9yUGF5bWVudFR5cGV7IGxpc3Qtc3R5bGU6bm9uZTsgcGFkZGluZzowIDA7IGRpc3BsYXk6aW5saW5lLWJsb2NrOyB9IC5wYXltZW50Q2FsY3VsYXRvclBheW1lbnRUeXBlIGxpeyBwYWRkaW5nOjEwcHg7IGZsb2F0OmxlZnQ7IG1pbi13aWR0aDo1cmVtOyBjdXJzb3I6cG9pbnRlcjsgYm9yZGVyLXJhZGl1czo1cHggNXB4IDAgMDsgYm9yZGVyLWJvdHRvbTowcHg7IHRleHQtYWxpZ246Y2VudGVyOyBiYWNrZ3JvdW5kLWNvbG9yOndoaXRlOyB9IC5wYXltZW50Q2FsY3VsYXRvclBheW1lbnRUeXBlIGxpOmhvdmVyeyBiYWNrZ3JvdW5kLWNvbG9yOiNkOWQ5ZDk7IH0gLnBheW1lbnRDYWxjdWxhdG9yUGF5bWVudFR5cGUgbGkuYWN0aXZlUGF5bWVudFR5cGV7IGJhY2tncm91bmQtY29sb3I6Izk4OTg5ODsgY29sb3I6d2hpdGU7IH0gLnBheW1lbnRDYWxjdWxhdG9ySW5wdXRDb250YWluZXJ7IG1hcmdpbi1ib3R0b206MTBweDsgfSAucGF5bWVudENhbGN1bGF0b3JJbnB1dENvbnRhaW5lciA+ICogeyBwYWRkaW5nLWJvdHRvbTowLjVyZW07IH0gLnBheW1lbnRDYWxjdWxhdG9ySW5wdXRDb250YWluZXIgbGFiZWx7IGNvbG9yOmdyZXk7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IG1hcmdpbi1sZWZ0OjNweDsgbWFyZ2luLWJvdHRvbTowOyB9IC5wYXltZW50Q2FsY3VsYXRvclRyaW1TZWxlY3R7IGJvcmRlci1yYWRpdXM6NXB4OyBwYWRkaW5nOjVweCA1cHg7IGZvbnQtc2l6ZToxcmVtIDsgbWluLXdpZHRoOjEwcmVtOyBtYXgtd2lkdGg6MjByZW07IC13ZWJraXQtYXBwZWFyYW5jZTpub25lOyAtbW96LWFwcGVhcmFuY2U6bm9uZTsgcGFkZGluZy1yaWdodDoyN3B4OyBiYWNrZ3JvdW5kLWltYWdlOnVybCgnZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCQUFBQUFRQ0FZQUFBQWY4LzloQUFBQWgwbEVRVlE0VDkzVE1RckNVQXpHOFY5eDhRemlpWVN1WGR6RkM3aDRBY0VMT1BRQWRYWW92WkNIRUFUbGdRVjVHRlRlMW96Smx6L2tTMUlwaktxdzN3UUJWeXkrK0pJMHkxR1RlN0RDQmJNQWNrZU5JUUtrL0JhbkFMQkIrMTZMdG5ERUxvTWNzTS9CRVNEbHoyaGVEUjNXZVB3S1NMbzVlb3h6M3o2Tk5jRkQrdnUzaWoxNEFxei9EeEdiS0I3Q0FBQUFBRWxGVGtTdVFtQ0MnKTsgYmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0OyBiYWNrZ3JvdW5kLXBvc2l0aW9uOjk1JSBjZW50ZXI7IGJvcmRlci1jb2xvcjojYTlhOWE5OyBjb2xvcjppbmhlcml0OyBib3gtc2hhZG93Om5vbmU7IC13ZWJraXQtYm94LXNoYWRvdzpub25lOyB9IC5wYXltZW50Q2FsY3VsYXRvckludGVydmFsLCAuZDJjZm9ybSAucGF5bWVudENhbGN1bGF0b3JJbnRlcnZhbCB7IGJvcmRlci1yYWRpdXM6NXB4OyBwYWRkaW5nOjVweCA1cHg7IGZvbnQtc2l6ZToxcmVtIDsgbWluLXdpZHRoOjdyZW07IC13ZWJraXQtYXBwZWFyYW5jZTpub25lOyAtbW96LWFwcGVhcmFuY2U6bm9uZTsgcGFkZGluZy1yaWdodDoyN3B4OyBiYWNrZ3JvdW5kLWltYWdlOnVybCgnZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCQUFBQUFRQ0FZQUFBQWY4LzloQUFBQWgwbEVRVlE0VDkzVE1RckNVQXpHOFY5eDhRemlpWVN1WGR6RkM3aDRBY0VMT1BRQWRYWW92WkNIRUFUbGdRVjVHRlRlMW96Smx6L2tTMUlwaktxdzN3UUJWeXkrK0pJMHkxR1RlN0RDQmJNQWNrZU5JUUtrL0JhbkFMQkIrMTZMdG5ERUxvTWNzTS9CRVNEbHoyaGVEUjNXZVB3S1NMbzVlb3h6M3o2Tk5jRkQrdnUzaWoxNEFxei9EeEdiS0I3Q0FBQUFBRWxGVGtTdVFtQ0MnKTsgYmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0OyBiYWNrZ3JvdW5kLXBvc2l0aW9uOjk1JSBjZW50ZXI7IGJvcmRlci1jb2xvcjojYTlhOWE5OyBjb2xvcjppbmhlcml0OyBib3gtc2hhZG93Om5vbmU7IC13ZWJraXQtYm94LXNoYWRvdzpub25lOyB9IC5wYXltZW50Q2FsY3VsYXRvckttQWxsb3dhbmNleyBib3JkZXItcmFkaXVzOjVweDsgcGFkZGluZzo1cHggNXB4OyBmb250LXNpemU6MXJlbSA7IHdpZHRoOjExMHB4OyAtd2Via2l0LWFwcGVhcmFuY2U6bm9uZTsgLW1vei1hcHBlYXJhbmNlOm5vbmU7IHBhZGRpbmctcmlnaHQ6MjdweDsgYmFja2dyb3VuZC1pbWFnZTp1cmwoJ2RhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQkFBQUFBUUNBWUFBQUFmOC85aEFBQUFoMGxFUVZRNFQ5M1RNUXJDVUF6RzhWOXg4UXppaVlTdVhkekZDN2g0QWNFTE9QUUFkWFlvdlpDSEVBVGxnUVY1R0ZUZTFvekpsei9rUzFJcGpLcXczd1FCVnl5KytKSTB5MUdUZTdEQ0JiTUFja2VOSVFLay9CYW5BTEJCKzE2THRuREVMb01jc00vQkVTRGx6MmhlRFIzV2VQd0tTTG81ZW94ejN6Nk5OY0ZEK3Z1M2lqMTRBcXovRHhHYktCN0NBQUFBQUVsRlRrU3VRbUNDJyk7IGJhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDsgYmFja2dyb3VuZC1wb3NpdGlvbjo5NSUgY2VudGVyOyBib3JkZXItY29sb3I6I2E5YTlhOTsgY29sb3I6aW5oZXJpdDsgYm94LXNoYWRvdzpub25lOyAtd2Via2l0LWJveC1zaGFkb3c6bm9uZTsgfSAucGF5bWVudENhbGN1bGF0b3JEb3duUGF5bWVudHsgYm9yZGVyOjFweCBzb2xpZCAjYTlhOWE5OyBib3JkZXItcmFkaXVzOjVweDsgcGFkZGluZzo1cHggNXB4OyBmb250LXNpemU6MXJlbSA7IHdpZHRoOjVyZW07IHBhZGRpbmctbGVmdDoyMHB4OyBiYWNrZ3JvdW5kLWltYWdlOnVybCgiZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsPHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZlcnNpb249JzEuMScgaGVpZ2h0PScyOHB4JyB3aWR0aD0nODVweCc+PHRleHQgeD0nNicgeT0nMjEnIGZpbGw9JycgZm9udC1zaXplPScxNicgZm9udC1mYW1pbHk9J2FyaWFsJz4kIik7IGJhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDsgYmFja2dyb3VuZC1zaXplOjYwJTsgYmFja2dyb3VuZC1wb3NpdGlvbi15OjQwJTsgLW1vei1hcHBlYXJhbmNlOnRleHRmaWVsZDsgfSAucGF5bWVudENhbGN1bGF0b3JEb3duUGF5bWVudDo6LXdlYmtpdC1vdXRlci1zcGluLWJ1dHRvbiwgLnBheW1lbnRDYWxjdWxhdG9yRG93blBheW1lbnQ6Oi13ZWJraXQtaW5uZXItc3Bpbi1idXR0b257IC13ZWJraXQtYXBwZWFyYW5jZTpub25lOyBtYXJnaW46MDsgfSAucGF5bWVudENhbGN1bGF0b3JOb3RpY2VDb250YWluZXJ7IG1pbi13aWR0aDoxOHJlbTsgZm9udC1zaXplOjAuODEzcmVtIDsgY29sb3I6Izg2ODY4NjsgcGFkZGluZzowOyBtYXJnaW46MDsgZGlzcGxheTp2YXIoLS1tb2JpbGUtZGlzcGxheSwgaW5pdGlhbCk7IH0gLnBheW1lbnRDYWxjdWxhdG9yTm90aWNlQ29udGFpbmVyLmJveGVzNHsgd2lkdGg6MzAlOyB9IC5yZXZlYWwtbW9kYWwgLnBheW1lbnRDYWxjdWxhdG9yTm90aWNlQ29udGFpbmVyIHAsIC5yZXZlYWwtbW9kYWwgLnBheW1lbnRDYWxjdWxhdG9yTm90aWNlQ29udGFpbmVyIHNwYW57IGNvbG9yOmluaGVyaXQ7IHBhZGRpbmc6MDsgZm9udC1zaXplOjFyZW07IH0gLnBheW1lbnRDYWxjdWxhdG9yRXJyb3JNZXNzYWdleyB3aWR0aDo1MCU7IG1hcmdpbi10b3A6MzBweDsgfSAjcGF5bWVudENhbGN1bGF0b3JWZWhpY2xlSW5mb3sgcG9zaXRpb246cmVsYXRpdmU7IH0gI3BheW1lbnRDYWxjdWxhdG9yVmVoaWNsZUluZm8gLmljb257IGJvcmRlci1yYWRpdXM6NTAlOyBib3JkZXI6MXB4IHNvbGlkICNmZmZmZmY7IGNvbG9yOiNmZmZmZmY7IG1hcmdpbjowOyBwYWRkaW5nOjAuNHJlbTsgLS10eHQtY29sb3I6I2ZmZmZmZjsgLS1mczp2YXIoLS1oZWFkZXItaWNvbi1zaXplLCB2YXIoLS1mczcpKTsgYmFja2dyb3VuZC1jb2xvcjojMzM0Yzk2OyB9ICNwYXltZW50Q2FsY3VsYXRvclZlaGljbGVJbmZvIGgyIHNwYW46Zmlyc3QtY2hpbGR7IGZvbnQtc2l6ZTp2YXIoLS1mczEpOyBmb250LXdlaWdodDpub3JtYWw7IH0gI3BheW1lbnRDYWxjdWxhdG9yVmVoaWNsZUluZm8gaDIgc3BhbnsgZm9udC1zaXplOnZhcigtLWhlYWRlci1mb250LXNpemUsIHZhcigtLWZzMykpOyBtYXJnaW46MDsgbGluZS1oZWlnaHQ6bm9ybWFsOyBmb250LXdlaWdodDo3MDA7IHBhZGRpbmc6MDsgfSAjcGF5bWVudENhbGN1bGF0b3JWZWhpY2xlSW5mbyBoM3sgZm9udC1zaXplOjEuMTg4cmVtIDsgfSAjcGF5bWVudENhbGN1bGF0b3JWZWhpY2xlSW5mbyBzcGFuLmgyLWFsdHsgbWFyZ2luOjA7IHBhZGRpbmc6MDsgbWFyZ2luLWxlZnQ6dmFyKC0tcyk7IGZvbnQtc2l6ZTppbmhlcml0OyBmb250LXdlaWdodDp2YXIoLS1mb250LWgyLXdlaWdodCk7IGxpbmUtaGVpZ2h0OjEuMmVtOyBjb2xvcjp2YXIoLS1kZWZhdWx0LWJsYWNrKTsgfSAjcGF5bWVudENhbGN1bGF0b3JWZWhpY2xlSW5mbyAuaDItYWx0IHNwYW46Zmlyc3QtY2hpbGR7IGZvbnQtc2l6ZTp2YXIoLS1mczEpOyBmb250LXdlaWdodDpub3JtYWw7IH0gI3BheW1lbnRDYWxjdWxhdG9yVmVoaWNsZUluZm8gLmgyLWFsdCBzcGFueyBmb250LXNpemU6dmFyKC0taGVhZGVyLWZvbnQtc2l6ZSwgdmFyKC0tZnMzKSk7IG1hcmdpbjowOyBsaW5lLWhlaWdodDpub3JtYWw7IGZvbnQtd2VpZ2h0OjcwMDsgcGFkZGluZzowOyB9ICNwYXltZW50Q2FsY3VsYXRvclZlaGljbGVJbmZvIC5oMy1hbHR7IGZvbnQtc2l6ZToxLjE4OHJlbSA7IH0gLnBheW1lbnRDYWxjdWxhdG9yQ2FsbFRvQWN0aW9uQ29udGFpbmVyeyB0ZXh0LWFsaWduOmNlbnRlcjsgfSAucGF5bWVudENhbGN1bGF0b3JDYWxsVG9BY3Rpb25Db250YWluZXIuYm94ZXM0eyB3aWR0aDo2NCU7IH0gLnBheW1lbnRDYWxjdWxhdG9yQ2FsbFRvQWN0aW9uQ29udGFpbmVyIGF7IHdpZHRoOm1pbig2NCUsMThyZW0pOyB9IC5wYXltZW50Q2FsY3VsYXRvclBheW1lbnRTZWxlY3R7IH0gLmZhLmZhLWNhbGN1bGF0b3J7IGNvbG9yOiMwMDAwMDA7IH0gLi1iZy1ibGFjayAuZmEuZmEtY2FsY3VsYXRvcnsgY29sb3I6I0ZGRkZGRjsgfSAjcGF5bWVudENhbGN1bGF0b3JDb250YWluZXIgc2VsZWN0OjotbXMtZXhwYW5kIHsgZGlzcGxheTpub25lOyB9IC5jYWxjLXBheW1lbnQtY2FzaCB7IHdpZHRoOm1pbigxN3JlbSw5MCUpOyBwYWRkaW5nOjAgMS41cmVtOyB9IC5jYWxjLXBheW1lbnQtY2FzaCBzcGFueyBtYXJnaW4tYm90dG9tOjA7IGZvbnQtc2l6ZTpyZXZlcnQ7IH0gLmNhbGMtcGF5bWVudC1jYXNoIC5wcmljZUZpbmFsIHsgcGFkZGluZy10b3A6dmFyKC0tcyk7IGJvcmRlci10b3A6MXB4IHNvbGlkICNiYmI7IGZvbnQtd2VpZ2h0OmJvbGQ7IH0gLmNhbGMtcGF5bWVudC1jYXNoIC5wcmljZVJvdyB7IGRpc3BsYXk6ZmxleDsgYWxpZ24taXRlbXM6Y2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjsgbGluZS1oZWlnaHQ6bm9ybWFsOyB9IC5jYWxjLXBheW1lbnQtY2FzaCAucHJpY2VOYW1leyBwYWRkaW5nOjA7IHRleHQtYWxpZ246bGVmdDsgZm9udC1zaXplOnZhcigtLWZzMCk7IH0gI3BheW1lbnRDYWxjdWxhdG9yT3B0aW9uQ29udGFpbmVyIC5wYXltZW50Q2FsY3VsYXRvclRyYWRlSW5CdXR0b257IGZvbnQtc2l6ZTowLjYyNXJlbSA7IGJvcmRlcjoxcHggc29saWQgI2E5YTlhOTsgYm9yZGVyLXJhZGl1czo1cHg7IGJhY2tncm91bmQtY29sb3I6d2hpdGU7IHdpZHRoOjEwNXB4OyB0ZXh0LWFsaWduOmNlbnRlcjsgdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTsgcGFkZGluZzoycHg7IGN1cnNvcjpwb2ludGVyOyB9ICNwYXltZW50Q2FsY3VsYXRvck9wdGlvbkNvbnRhaW5lciAucGF5bWVudENhbGN1bGF0b3JUcmFkZUluVmFsdWV7IGJvcmRlcjoxcHggc29saWQgI2E5YTlhOTsgYm9yZGVyLXJhZGl1czo1cHg7IHBhZGRpbmc6NXB4IDVweDsgZm9udC1zaXplOjFyZW0gOyB3aWR0aDoxMDBweDsgcGFkZGluZy1sZWZ0OjE1cHg7IGJhY2tncm91bmQtaW1hZ2U6dXJsKCJkYXRhOmltYWdlL3N2Zyt4bWw7dXRmOCw8c3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZycgdmVyc2lvbj0nMS4xJyBoZWlnaHQ9JzI4cHgnIHdpZHRoPSc4NXB4Jz48dGV4dCB4PSc2JyB5PScyMScgZmlsbD0nJyBmb250LXNpemU9JzE2JyBmb250LWZhbWlseT0nYXJpYWwnPiQiKTsgYmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0OyBiYWNrZ3JvdW5kLWNvbG9yOndoaXRlOyB9ICNwYXltZW50Q2FsY3VsYXRvckNvbnRhaW5lciAuZmluYW5jaW5nLW9wdGlvbiwgI2ZpbmFuY2VNdWx0aXN0ZXBOZXdDYWxjdWxhdG9yIC5maW5hbmNpbmctb3B0aW9uIHsgYm9yZGVyOjEuNXB4IHNvbGlkICNhYWE7IGJvcmRlci1yYWRpdXM6NnB4OyBwYWRkaW5nOjhweDsgd2lkdGg6MTkwcHg7IGJhY2tncm91bmQ6d2hpdGU7IGRpc3BsYXk6ZmxleDsgZmxleC1kaXJlY3Rpb246Y29sdW1uOyBhbGlnbi1pdGVtczpjZW50ZXI7IHRleHQtYWxpZ246Y2VudGVyOyBmbGV4LXNocmluazowOyBtaW4td2lkdGg6MTg3cHg7IGJveC1zaXppbmc6Y29udGVudC1ib3ghaW1wb3J0YW50OyB9ICNwYXltZW50Q2FsY3VsYXRvckNvbnRhaW5lciAuZmluYW5jaW5nLW9wdGlvbi5zZWxlY3RlZCwgI2ZpbmFuY2VNdWx0aXN0ZXBOZXdDYWxjdWxhdG9yIC5maW5hbmNpbmctb3B0aW9uLnNlbGVjdGVkIHsgYm9yZGVyLWNvbG9yOiMwMDdCRkY7IGJveC1zaGFkb3c6MCAwIDEwcHggcmdiYSgwLCAxMjMsIDI1NSwgMC41KTsgfSAjcGF5bWVudENhbGN1bGF0b3JDb250YWluZXIgLnRlcm0sICNmaW5hbmNlTXVsdGlzdGVwTmV3Q2FsY3VsYXRvciAudGVybSB7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGZvbnQtd2VpZ2h0OmJvbGQ7IGNvbG9yOiMzMzM7IG1hcmdpbi1ib3R0b206MnB4OyB9ICNwYXltZW50Q2FsY3VsYXRvckNvbnRhaW5lciAuZG93bi1wYXltZW50LCAjZmluYW5jZU11bHRpc3RlcE5ld0NhbGN1bGF0b3IgLmRvd24tcGF5bWVudCB7IGZvbnQtc2l6ZTowLjYyNXJlbSA7IGNvbG9yOiM5OTk7IG1hcmdpbi1ib3R0b206NXB4OyB9ICNwYXltZW50Q2FsY3VsYXRvckNvbnRhaW5lciAuc2VwYXJhdG9yUGF5LCAjZmluYW5jZU11bHRpc3RlcE5ld0NhbGN1bGF0b3IgLnNlcGFyYXRvclBheSB7IHdpZHRoOjkwJTsgaGVpZ2h0OjFweDsgYmFja2dyb3VuZC1jb2xvcjojY2NjOyBtYXJnaW4tYm90dG9tOjZweDsgfSAjcGF5bWVudENhbGN1bGF0b3JDb250YWluZXIgLmNvbnRlbnQtY29udGFpbmVyLCAjZmluYW5jZU11bHRpc3RlcE5ld0NhbGN1bGF0b3IgLmNvbnRlbnQtY29udGFpbmVyIHsgZGlzcGxheTpncmlkOyBncmlkLXRlbXBsYXRlLWNvbHVtbnM6MWZyIDFmcjsgYWxpZ24taXRlbXM6c3RhcnQ7IHdpZHRoOjEwMCU7IHBhZGRpbmctYm90dG9tOjhweDsgfSAjcGF5bWVudENhbGN1bGF0b3JDb250YWluZXIgLmxlZnQtc2VjdGlvbiwgI3BheW1lbnRDYWxjdWxhdG9yQ29udGFpbmVyIC5yaWdodC1zZWN0aW9uLCAjZmluYW5jZU11bHRpc3RlcE5ld0NhbGN1bGF0b3IgLmxlZnQtc2VjdGlvbiwgI2ZpbmFuY2VNdWx0aXN0ZXBOZXdDYWxjdWxhdG9yIC5yaWdodC1zZWN0aW9uIHsgZGlzcGxheTpncmlkOyBncmlkLXRlbXBsYXRlLXJvd3M6c3ViZ3JpZDsgZ3JpZC1yb3c6c3BhbiA0OyB0ZXh0LWFsaWduOmNlbnRlcjsgcGFkZGluZzo2cHg7IHBvc2l0aW9uOnJlbGF0aXZlOyB9ICNwYXltZW50Q2FsY3VsYXRvckNvbnRhaW5lciAubGVmdC1zZWN0aW9uLCAjZmluYW5jZU11bHRpc3RlcE5ld0NhbGN1bGF0b3IgLmxlZnQtc2VjdGlvbiB7IGJvcmRlci1yaWdodDoxcHggc29saWQgI2NjYzsgfSAjcGF5bWVudENhbGN1bGF0b3JDb250YWluZXIgLmxvd2VzdC1wYXltZW50LCAjZmluYW5jZU11bHRpc3RlcE5ld0NhbGN1bGF0b3IgLmxvd2VzdC1wYXltZW50LCAjcGF5bWVudENhbGN1bGF0b3JDb250YWluZXIgLmFjdHVhbC1wYXltZW50LCAjZmluYW5jZU11bHRpc3RlcE5ld0NhbGN1bGF0b3IgLmFjdHVhbC1wYXltZW50IHsgZm9udC1zaXplOjEuMjVyZW0gOyBjb2xvcjojZDMyZjJmOyBwb3NpdGlvbjpyZWxhdGl2ZTsgfSAjcGF5bWVudENhbGN1bGF0b3JDb250YWluZXIgLmluZm8taWNvbiwgI2ZpbmFuY2VNdWx0aXN0ZXBOZXdDYWxjdWxhdG9yIC5pbmZvLWljb24geyBmb250LXNpemU6MC43NXJlbSA7IGNvbG9yOiM2NjY7IGN1cnNvcjpwb2ludGVyOyBtYXJnaW4tbGVmdDo0cHg7IHBvc2l0aW9uOmFic29sdXRlOyB0b3A6MnB4OyB9ICNwYXltZW50Q2FsY3VsYXRvckNvbnRhaW5lciAuYWN0dWFsLXJhdGUsICNmaW5hbmNlTXVsdGlzdGVwTmV3Q2FsY3VsYXRvciAuYWN0dWFsLXJhdGUsICNwYXltZW50Q2FsY3VsYXRvckNvbnRhaW5lciAubG93ZXN0LXJhdGUsICNmaW5hbmNlTXVsdGlzdGVwTmV3Q2FsY3VsYXRvciAubG93ZXN0LXJhdGUgeyBmb250LXNpemU6MC45MzhyZW0gOyBtYXJnaW4tdG9wOjVweDsgZm9udC13ZWlnaHQ6Ym9sZDsgfSAjcGF5bWVudENhbGN1bGF0b3JDb250YWluZXIgLmFjdHVhbC1yYXRlLCAjZmluYW5jZU11bHRpc3RlcE5ld0NhbGN1bGF0b3IgLmFjdHVhbC1yYXRlLCAjcGF5bWVudENhbGN1bGF0b3JDb250YWluZXIgLmxvd2VzdC1yYXRlLCAjZmluYW5jZU11bHRpc3RlcE5ld0NhbGN1bGF0b3IgLmxvd2VzdC1yYXRlIHsgY29sb3I6IzMzMzsgfSAjcGF5bWVudENhbGN1bGF0b3JDb250YWluZXIgLmRldGFpbHNUYXgsICNmaW5hbmNlTXVsdGlzdGVwTmV3Q2FsY3VsYXRvciAuZGV0YWlsc1RheCB7IGZvbnQtc2l6ZTowLjY4OHJlbSA7IGNvbG9yOiMzMzM7IG1hcmdpbi10b3A6MnB4OyB9ICNwYXltZW50Q2FsY3VsYXRvckNvbnRhaW5lciAucmFkaW8tY29udGFpbmVyLCAjZmluYW5jZU11bHRpc3RlcE5ld0NhbGN1bGF0b3IgLnJhZGlvLWNvbnRhaW5lciB7IGRpc3BsYXk6ZmxleDsganVzdGlmeS1jb250ZW50OmNlbnRlcjsgYWxpZ24taXRlbXM6Y2VudGVyOyBnYXA6MHB4OyBtYXJnaW4tdG9wOjhweDsgZm9udC1zaXplOjAuNjg4cmVtIDsgfSAjcGF5bWVudENhbGN1bGF0b3JDb250YWluZXIgaW5wdXRbdHlwZT0icmFkaW8iXVtuYW1lPSJzZWxlY3RlZFBheW1lbnQiXSwgI3BheW1lbnRDYWxjdWxhdG9yQ29udGFpbmVyIGlucHV0W3R5cGU9InJhZGlvIl1bbmFtZT0ic2VsZWN0ZWRQYXltZW50V2l0aFRheGVzIl0sICNmaW5hbmNlTXVsdGlzdGVwTmV3Q2FsY3VsYXRvciBpbnB1dFt0eXBlPSJyYWRpbyJdW25hbWU9InNlbGVjdGVkUGF5bWVudCJdLCAjZmluYW5jZU11bHRpc3RlcE5ld0NhbGN1bGF0b3IgaW5wdXRbdHlwZT0icmFkaW8iXVtuYW1lPSJzZWxlY3RlZFBheW1lbnRXaXRoVGF4ZXMiXSB7IG1hcmdpbi1yaWdodDo0cHg7IG9wYWNpdHk6dW5zZXQ7IHdpZHRoOnVuc2V0OyBoZWlnaHQ6dW5zZXQ7IHBvc2l0aW9uOnVuc2V0OyB9ICNwYXltZW50Q2FsY3VsYXRvckNvbnRhaW5lciAuc2luZ2xlLWNvbHVtbiwgI2ZpbmFuY2VNdWx0aXN0ZXBOZXdDYWxjdWxhdG9yIC5zaW5nbGUtY29sdW1uIHsgZGlzcGxheTpmbGV4OyBmbGV4LWRpcmVjdGlvbjpjb2x1bW47IGFsaWduLWl0ZW1zOmNlbnRlcjsganVzdGlmeS1jb250ZW50OmNlbnRlcjsgZ3JpZC1jb2x1bW46MSAvIC0xOyBwYWRkaW5nOjhweDsgfSAjcGF5bWVudENhbGN1bGF0b3JDb250YWluZXIgLnNtYWxsLWJveCwgI2ZpbmFuY2VNdWx0aXN0ZXBOZXdDYWxjdWxhdG9yIC5zbWFsbC1ib3ggeyB3aWR0aDoxMDBweDsgcGFkZGluZzo4cHg7IG1pbi13aWR0aDoxMDBweDsgbWF4LXdpZHRoOjEwMHB4OyB9Ci8qKiAvY3NzL2Rhcmt0b29sdGlwLmNzcyAqKi8KLmRhcmstdG9vbHRpcHsgZGlzcGxheTpub25lOyBwb3NpdGlvbjphYnNvbHV0ZTsgei1pbmRleDoxMDAwOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgZm9udC13ZWlnaHQ6bm9ybWFsOyBoZWlnaHQ6YXV0bzsgdG9wOjA7IGxlZnQ6MDt9IC5kYXJrLXRvb2x0aXAgLmV2YXBMaW5reyBjb2xvcjojMDA2NmNjOyB0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lOyB9IC5kYXJrLXRvb2x0aXAuc21hbGx7IHBhZGRpbmc6NHB4OyBmb250LXNpemU6MC43NXJlbSA7IG1heC13aWR0aDoxNTBweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjJweDsgLW1vei1ib3JkZXItcmFkaXVzOjJweDsgYm9yZGVyLXJhZGl1czoycHg7IH0gLmRhcmstdG9vbHRpcC5tZWRpdW17IHBhZGRpbmc6NnB4OyBmb250LXNpemU6MC42ODhyZW0gOyBtYXgtd2lkdGg6MjAwcHg7IC13ZWJraXQtYm9yZGVyLXJhZGl1czo0cHg7IC1tb3otYm9yZGVyLXJhZGl1czo0cHg7IGJvcmRlci1yYWRpdXM6NHB4O30gLmRhcmstdG9vbHRpcC5sYXJnZXsgcGFkZGluZzoxNnB4OyBmb250LXNpemU6MXJlbSA7IG1heC13aWR0aDoyNTBweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjZweDsgLW1vei1ib3JkZXItcmFkaXVzOjZweDsgYm9yZGVyLXJhZGl1czo2cHg7IH0gLmRhcmstdG9vbHRpcCAudGlweyB0cmFuc2Zvcm06c2NhbGUoMS4wMSk7IC13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKDEuMDEpOyB0cmFuc2Zvcm06c2NhbGUoMS4wMSk7IGNvbnRlbnQ6IiI7IHBvc2l0aW9uOmFic29sdXRlOyB3aWR0aDowOyBoZWlnaHQ6MDsgYm9yZGVyLXN0eWxlOnNvbGlkOyBsaW5lLWhlaWdodDowcHg7IH0gLmRhcmstdG9vbHRpcC5zb3V0aCAudGlweyBsZWZ0OjUwJTsgdG9wOjEwMCU7fSAuZGFyay10b29sdGlwLndlc3QgLnRpcHsgbGVmdDowOyB0b3A6NTAlO30gLmRhcmstdG9vbHRpcC5ub3J0aCAudGlweyBsZWZ0OjUwJTsgdG9wOjA7IH0gLmRhcmstdG9vbHRpcC5lYXN0IC50aXB7IGxlZnQ6MTAwJTsgdG9wOjUwJTt9IC5kYXJrLXRvb2x0aXAuc291dGguc21hbGwgLnRpcHsgYm9yZGVyLXdpZHRoOjBweCA1cHggMCA1cHg7IG1hcmdpbi1sZWZ0Oi01cHg7fSAuZGFyay10b29sdGlwLnNvdXRoLm1lZGl1bSAudGlweyBib3JkZXItd2lkdGg6MHB4IDZweCAwIDZweDsgbWFyZ2luLWxlZnQ6LTZweDt9IC5kYXJrLXRvb2x0aXAuc291dGgubGFyZ2UgLnRpcHsgYm9yZGVyLXdpZHRoOjBweCAxMnB4IDAgMTJweDsgbWFyZ2luLWxlZnQ6LTEycHg7fSAuZGFyay10b29sdGlwLndlc3Quc21hbGwgLnRpcHsgYm9yZGVyLXdpZHRoOjVweCA3cHggNXB4IDA7IG1hcmdpbi1sZWZ0Oi03cHg7IG1hcmdpbi10b3A6LTVweDt9IC5kYXJrLXRvb2x0aXAud2VzdC5tZWRpdW0gLnRpcHsgYm9yZGVyLXdpZHRoOjZweCA4cHggNnB4IDA7IG1hcmdpbi1sZWZ0Oi04cHg7IG1hcmdpbi10b3A6LTZweDt9IC5kYXJrLXRvb2x0aXAud2VzdC5sYXJnZSAudGlweyBib3JkZXItd2lkdGg6MTJweCAxNHB4IDEycHggMDsgbWFyZ2luLWxlZnQ6LTE0cHg7IG1hcmdpbi10b3A6LTEycHg7fSAuZGFyay10b29sdGlwLm5vcnRoLnNtYWxsIC50aXB7IGJvcmRlci13aWR0aDowIDVweCA3cHggNXB4OyBtYXJnaW4tbGVmdDotNXB4OyBtYXJnaW4tdG9wOi03cHg7fSAuZGFyay10b29sdGlwLm5vcnRoLm1lZGl1bSAudGlweyBib3JkZXItd2lkdGg6MCA2cHggOHB4IDZweDsgbWFyZ2luLWxlZnQ6LTZweDsgbWFyZ2luLXRvcDotOHB4O30gLmRhcmstdG9vbHRpcC5ub3J0aC5sYXJnZSAudGlweyBib3JkZXItd2lkdGg6MCAxMnB4IDE0cHggMTJweDsgbWFyZ2luLWxlZnQ6LTEycHg7IG1hcmdpbi10b3A6LTE0cHg7fSAuZGFyay10b29sdGlwLmVhc3Quc21hbGwgLnRpcHsgYm9yZGVyLXdpZHRoOjVweCAwIDVweCAwcHg7IG1hcmdpbi10b3A6LTVweDt9IC5kYXJrLXRvb2x0aXAuZWFzdC5tZWRpdW0gLnRpcHsgYm9yZGVyLXdpZHRoOjZweCAwcHggNnB4IDBweDsgbWFyZ2luLXRvcDotNnB4O30gLmRhcmstdG9vbHRpcC5lYXN0LmxhcmdlIC50aXB7IGJvcmRlci13aWR0aDoxMnB4IDAgMTJweCAwcHg7IG1hcmdpbi10b3A6LTEycHg7fSAuZGFyay10b29sdGlwIHVsLmNvbmZpcm17IGxpc3Qtc3R5bGUtdHlwZTpub25lO21hcmdpbi10b3A6NXB4O2Rpc3BsYXk6aW5saW5lLWJsb2NrO21hcmdpbjowIGF1dG87IH0gLmRhcmstdG9vbHRpcCB1bC5jb25maXJtIGxpeyBwYWRkaW5nOjEwcHg7ZmxvYXQ6bGVmdDttYXJnaW46NXB4O21pbi13aWR0aDoyNXB4Oy13ZWJraXQtYm9yZGVyLXJhZGl1czozcHg7LW1vei1ib3JkZXItcmFkaXVzOjNweDstby1ib3JkZXItcmFkaXVzOjNweDtib3JkZXItcmFkaXVzOjNweDt9IC5kYXJrLXRvb2x0aXAuZGFya3sgYmFja2dyb3VuZC1jb2xvcjojREFEOURCOyBjb2xvcjojMDAwO30gLmRhcmstdG9vbHRpcC5saWdodHsgYmFja2dyb3VuZC1jb2xvcjojZjVmNWY1OyBjb2xvcjojNWU1ZTVlOyBib3JkZXI6MXB4IHNvbGlkICM1ZTVlNWU7IHotaW5kZXg6MTAwMDAzMDt9IC5kYXJrLXRvb2x0aXAuZGFyay5zb3V0aCAudGlweyBib3JkZXItY29sb3I6I0RBRDlEQiB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCB0cmFuc3BhcmVudDsgX2JvcmRlci1jb2xvcjojREFEOURCICMwMDAwMDAgIzAwMDAwMCAjMDAwMDAwOyBfZmlsdGVyOnByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5DaHJvbWEoY29sb3I9JyMwMDAwMDAnKTsgfSAuZGFyay10b29sdGlwLmRhcmsud2VzdCAudGlweyBib3JkZXItY29sb3I6dHJhbnNwYXJlbnQgI0RBRDlEQiB0cmFuc3BhcmVudCB0cmFuc3BhcmVudDsgX2JvcmRlci1jb2xvcjojMDAwMDAwICNEQUQ5REIgIzAwMDAwMCAjMDAwMDAwOyBfZmlsdGVyOnByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5DaHJvbWEoY29sb3I9JyMwMDAwMDAnKTsgfSAuZGFyay10b29sdGlwLmRhcmsubm9ydGggLnRpcHsgYm9yZGVyLWNvbG9yOnRyYW5zcGFyZW50IHRyYW5zcGFyZW50ICNEQUQ5REIgdHJhbnNwYXJlbnQ7IF9ib3JkZXItY29sb3I6IzAwMDAwMCAjMDAwMDAwICNEQUQ5REIgIzAwMDAwMDsgX2ZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQ2hyb21hKGNvbG9yPScjMDAwMDAwJyk7IH0gLmRhcmstdG9vbHRpcC5kYXJrLmVhc3QgLnRpcHsgYm9yZGVyLWNvbG9yOnRyYW5zcGFyZW50IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50ICNEQUQ5REI7IF9ib3JkZXItY29sb3I6IzAwMDAwMCAjMDAwMDAwICMwMDAwMDAgI0RBRDlEQjsgX2ZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQ2hyb21hKGNvbG9yPScjMDAwMDAwJyk7IH0gLmRhcmstdG9vbHRpcC5saWdodC5zb3V0aCAudGlweyBib3JkZXItY29sb3I6dHJhbnNwYXJlbnQ7IGJhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7IGJhY2tncm91bmQtaW1hZ2U6dXJsKC9jc3MvdGlwcy5wbmcpOyBiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7IHdpZHRoOjEycHg7IGhlaWdodDo4cHg7IH0gLmRhcmstdG9vbHRpcC5saWdodC53ZXN0IC50aXB7IGJvcmRlci1jb2xvcjp0cmFuc3BhcmVudDsgYmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDsgYmFja2dyb3VuZC1pbWFnZTp1cmwoL2Nzcy90aXB3LnBuZyk7IGJhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDsgd2lkdGg6OHB4OyBoZWlnaHQ6MTJweDsgfSAuZGFyay10b29sdGlwLmxpZ2h0Lm5vcnRoIC50aXB7IGJvcmRlci1jb2xvcjp0cmFuc3BhcmVudDsgYmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDsgYmFja2dyb3VuZC1pbWFnZTp1cmwoL2Nzcy90aXBuLnBuZyk7IGJhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDsgd2lkdGg6MTJweDsgaGVpZ2h0OjhweDsgfSAuZGFyay10b29sdGlwLmxpZ2h0LmVhc3QgLnRpcHsgYm9yZGVyLWNvbG9yOnRyYW5zcGFyZW50OyBiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50OyBiYWNrZ3JvdW5kLWltYWdlOnVybCgvY3NzL3RpcGUucG5nKTsgYmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0OyBiYWNrZ3JvdW5kLXBvc2l0aW9uOmxlZnQgY2VudGVyOyB3aWR0aDo4cHg7IGhlaWdodDoxMnB4O30gLmRhcmstdG9vbHRpcC5kYXJrIHVsLmNvbmZpcm0gbGl7IGJhY2tncm91bmQtY29sb3I6IzQxNkU4NTt9IC5kYXJrLXRvb2x0aXAuZGFyayB1bC5jb25maXJtIGxpOmhvdmVyeyBiYWNrZ3JvdW5kLWNvbG9yOiM0MTdFODU7fSAuZGFyay10b29sdGlwLmxpZ2h0IHVsLmNvbmZpcm0gbGl7IGJhY2tncm91bmQtY29sb3I6I0MxREJEQjt9IC5kYXJrLXRvb2x0aXAubGlnaHQgdWwuY29uZmlybSBsaTpob3ZlcnsgYmFja2dyb3VuZC1jb2xvcjojRENFOEU4O30gLmFuaW1hdGVkeyAtd2Via2l0LWFuaW1hdGlvbi1maWxsLW1vZGU6Ym90aDstbW96LWFuaW1hdGlvbi1maWxsLW1vZGU6Ym90aDstbXMtYW5pbWF0aW9uLWZpbGwtbW9kZTpib3RoOy1vLWFuaW1hdGlvbi1maWxsLW1vZGU6Ym90aDthbmltYXRpb24tZmlsbC1tb2RlOmJvdGg7IC13ZWJraXQtYW5pbWF0aW9uLWR1cmF0aW9uOi41czstbW96LWFuaW1hdGlvbi1kdXJhdGlvbjouNXM7LW1zLWFuaW1hdGlvbi1kdXJhdGlvbjouNXM7LW8tYW5pbWF0aW9uLWR1cmF0aW9uOi41czthbmltYXRpb24tZHVyYXRpb246LjVzOyB9IEAtd2Via2l0LWtleWZyYW1lcyBmbGlwSW5VcCB7IDAuMDAwMSUgeyAtd2Via2l0LXRyYW5zZm9ybTpwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlWCgtOTBkZWcpOyBvcGFjaXR5OjA7fSA0MCUgeyAtd2Via2l0LXRyYW5zZm9ybTpwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlWCg1ZGVnKTt9IDcwJSB7IC13ZWJraXQtdHJhbnNmb3JtOnBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGVYKC01ZGVnKTt9IDEwMCUgeyAtd2Via2l0LXRyYW5zZm9ybTpwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlWCgwZGVnKTsgb3BhY2l0eToxO30gfSBALW1vei1rZXlmcmFtZXMgZmxpcEluVXAgeyAwLjAwMDElIHt0cmFuc2Zvcm06cGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZVgoLTkwZGVnKTtvcGFjaXR5OjA7fSA0MCUge3RyYW5zZm9ybTpwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlWCg1ZGVnKTt9IDcwJSB7dHJhbnNmb3JtOnBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGVYKC01ZGVnKTt9IDEwMCUge3RyYW5zZm9ybTpwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlWCgwZGVnKTtvcGFjaXR5OjE7fSB9IEAtby1rZXlmcmFtZXMgZmxpcEluVXAgeyAwLjAwMDElIHstby10cmFuc2Zvcm06cGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZVgoLTkwZGVnKTtvcGFjaXR5OjA7fSA0MCUgey1vLXRyYW5zZm9ybTpwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlWCg1ZGVnKTt9IDcwJSB7LW8tdHJhbnNmb3JtOnBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGVYKC01ZGVnKTt9IDEwMCUgey1vLXRyYW5zZm9ybTpwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlWCgwZGVnKTtvcGFjaXR5OjE7fSB9IEBrZXlmcmFtZXMgZmxpcEluVXAgeyAwLjAwMDElIHt0cmFuc2Zvcm06cGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZVgoLTkwZGVnKTtvcGFjaXR5OjA7fSA0MCUge3RyYW5zZm9ybTpwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlWCg1ZGVnKTt9IDcwJSB7dHJhbnNmb3JtOnBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGVYKC01ZGVnKTt9IDEwMCUge3RyYW5zZm9ybTpwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlWCgwZGVnKTtvcGFjaXR5OjE7fSB9IEAtd2Via2l0LWtleWZyYW1lcyBmbGlwSW5SaWdodCB7IDAuMDAwMSUgeyAtd2Via2l0LXRyYW5zZm9ybTpwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlWSgtOTBkZWcpOyBvcGFjaXR5OjA7fSA0MCUgeyAtd2Via2l0LXRyYW5zZm9ybTpwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlWSg1ZGVnKTt9IDcwJSB7IC13ZWJraXQtdHJhbnNmb3JtOnBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGVZKC01ZGVnKTt9IDEwMCUgeyAtd2Via2l0LXRyYW5zZm9ybTpwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlWSgwZGVnKTsgb3BhY2l0eToxO30gfSBALW1vei1rZXlmcmFtZXMgZmxpcEluUmlnaHQgeyAwLjAwMDElIHt0cmFuc2Zvcm06cGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZVkoLTkwZGVnKTtvcGFjaXR5OjA7fSA0MCUge3RyYW5zZm9ybTpwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlWSg1ZGVnKTt9IDcwJSB7dHJhbnNmb3JtOnBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGVZKC01ZGVnKTt9IDEwMCUge3RyYW5zZm9ybTpwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlWSgwZGVnKTtvcGFjaXR5OjE7fSB9IEAtby1rZXlmcmFtZXMgZmxpcEluUmlnaHQgeyAwLjAwMDElIHstby10cmFuc2Zvcm06cGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZVkoLTkwZGVnKTtvcGFjaXR5OjA7fSA0MCUgey1vLXRyYW5zZm9ybTpwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlWSg1ZGVnKTt9IDcwJSB7LW8tdHJhbnNmb3JtOnBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGVZKC01ZGVnKTt9IDEwMCUgey1vLXRyYW5zZm9ybTpwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlWSgwZGVnKTtvcGFjaXR5OjE7fSB9IEBrZXlmcmFtZXMgZmxpcEluUmlnaHQgeyAwLjAwMDElIHt0cmFuc2Zvcm06cGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZVkoLTkwZGVnKTtvcGFjaXR5OjA7fSA0MCUge3RyYW5zZm9ybTpwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlWSg1ZGVnKTt9IDcwJSB7dHJhbnNmb3JtOnBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGVZKC01ZGVnKTt9IDEwMCUge3RyYW5zZm9ybTpwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlWSgwZGVnKTtvcGFjaXR5OjE7fSB9IC5mbGlwSW4geyAtd2Via2l0LWJhY2tmYWNlLXZpc2liaWxpdHk6dmlzaWJsZSAhaW1wb3J0YW50OyAtbW96LWJhY2tmYWNlLXZpc2liaWxpdHk6dmlzaWJsZSAhaW1wb3J0YW50OyAtby1iYWNrZmFjZS12aXNpYmlsaXR5OnZpc2libGUgIWltcG9ydGFudDsgYmFja2ZhY2UtdmlzaWJpbGl0eTp2aXNpYmxlICFpbXBvcnRhbnR9IC5mbGlwSW4uc291dGgsIC5mbGlwSW4ubm9ydGggeyAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOmZsaXBJblVwOyAtbW96LWFuaW1hdGlvbi1uYW1lOmZsaXBJblVwOyAtby1hbmltYXRpb24tbmFtZTpmbGlwSW5VcDsgYW5pbWF0aW9uLW5hbWU6ZmxpcEluVXA7IH0gLmZsaXBJbi53ZXN0LCAuZmxpcEluLmVhc3QgeyAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOmZsaXBJblJpZ2h0OyAtbW96LWFuaW1hdGlvbi1uYW1lOmZsaXBJblJpZ2h0OyAtby1hbmltYXRpb24tbmFtZTpmbGlwSW5SaWdodDsgYW5pbWF0aW9uLW5hbWU6ZmxpcEluUmlnaHQ7IH0gQC13ZWJraXQta2V5ZnJhbWVzIGZhZGVJbiB7IDAlIHtvcGFjaXR5OjA7fSAxMDAlIHtvcGFjaXR5OjE7fX0gQC1tb3ota2V5ZnJhbWVzIGZhZGVJbiB7IDAlIHtvcGFjaXR5OjA7fSAxMDAlIHtvcGFjaXR5OjE7fX0gQC1vLWtleWZyYW1lcyBmYWRlSW4gezAlIHtvcGFjaXR5OjA7fTEwMCUge29wYWNpdHk6MTt9fSBAa2V5ZnJhbWVzIGZhZGVJbiB7MCUge29wYWNpdHk6MDt9MTAwJSB7b3BhY2l0eToxO319IC5mYWRlSW57LXdlYmtpdC1hbmltYXRpb24tbmFtZTpmYWRlSW47IC1tb3otYW5pbWF0aW9uLW5hbWU6ZmFkZUluOyAtby1hbmltYXRpb24tbmFtZTpmYWRlSW47IGFuaW1hdGlvbi1uYW1lOmZhZGVJbjt9Ci8qKiAvY3NzL3JldmVhbC5jc3MgKiovCi5yZXZlYWwtbW9kYWwtYmcgeyBwb3NpdGlvbjpmaXhlZDsgaGVpZ2h0OjEwMCU7IHdpZHRoOjEwMCU7IGJhY2tncm91bmQ6IzAwMDsgYmFja2dyb3VuZDpyZ2JhKDAsMCwwLC44KTsgei1pbmRleDoxMDAwMDA5OyBkaXNwbGF5Om5vbmU7IHRvcDowOyBsZWZ0OjA7IH0gLnJldmVhbC1tb2RhbCB7IHZpc2liaWxpdHk6aGlkZGVuOyB0b3A6LTEwMDBweDsgd2lkdGg6bWluKDUyMHB4LCA5MHZ3KTsgYmFja2dyb3VuZDojZWVlIHVybCgvaW1hZ2VzL21vZGFsLWdsb3NzLnBuZykgbm8tcmVwZWF0IC0yMDBweCAtODBweDsgYmFja2dyb3VuZC1jb2xvcjojZWVlOyBwb3NpdGlvbjphYnNvbHV0ZTsgbGVmdDowOyByaWdodDowOyBtYXJnaW46YXV0bzsgei1pbmRleDoxMDAwMDIwOyBwYWRkaW5nOjMwcHggNDBweCAzNHB4OyAtbW96LWJvcmRlci1yYWRpdXM6NXB4OyAtd2Via2l0LWJvcmRlci1yYWRpdXM6NXB4OyBib3JkZXItcmFkaXVzOjVweDsgLW1vei1ib3gtc2hhZG93OjAgMCAxMHB4IHJnYmEoMCwwLDAsLjQpOyAtd2Via2l0LWJveC1zaGFkb3c6MCAwIDEwcHggcmdiYSgwLDAsMCwuNCk7IC1ib3gtc2hhZG93OjAgMCAxMHB4IHJnYmEoMCwwLDAsLjQpOyB9IC5yZXZlYWwtbW9kZWwtZG8tbm90LXNob3cgeyB2aXNpYmlsaXR5OmhpZGRlbjsgdG9wOjEwMHB4OyB3aWR0aDo1MjBweDsgcG9zaXRpb246YWJzb2x1dGU7IHotaW5kZXg6MTAwMDAyMDsgcGFkZGluZzozMHB4IDQwcHggMzRweDsgYmFja2dyb3VuZDpub25lOyAtbW96LWJvcmRlci1yYWRpdXM6MHB4OyAtd2Via2l0LWJvcmRlci1yYWRpdXM6MHB4OyBib3JkZXItcmFkaXVzOjBweDsgLW1vei1ib3gtc2hhZG93Om5vbmU7IC13ZWJraXQtYm94LXNoYWRvdzpub25lOyAtYm94LXNoYWRvdzpub25lOyB9IC4tLWlzLXBvcHVwLWZpeGVkLWNvbnRhaW5lciB7IHBvc2l0aW9uOmZpeGVkOyB0b3A6MDsgbGVmdDowOyByaWdodDowOyB6LWluZGV4OjEwMDAwMDAwMDsgfSAucmV2ZWFsLW1vZGFsLnNtYWxsIHsgd2lkdGg6MjAwcHg7fSAucmV2ZWFsLW1vZGFsLm1lZGl1bSB7IHdpZHRoOjQwMHB4O30gLnJldmVhbC1tb2RhbC5sYXJnZSB7IHdpZHRoOjYwMHB4O30gLnJldmVhbC1tb2RhbC54bGFyZ2UgeyB3aWR0aDo4MDBweDt9IC5yZXZlYWwtbW9kYWwgLmNsb3NlLXJldmVhbC1tb2RhbCB7IGZvbnQtc2l6ZToxLjM3NXJlbSA7IGxpbmUtaGVpZ2h0Oi41OyBwb3NpdGlvbjphYnNvbHV0ZTsgdG9wOjlweDsgcmlnaHQ6MTBweDsgY29sb3I6IzQ0NDsgdGV4dC1zaGFkb3c6MCAtMXB4IDFweCByYmdhKDAsMCwwLC42KTsgZm9udC13ZWlnaHQ6Ym9sZDsgY3Vyc29yOnBvaW50ZXI7IH0gLmNsb3NlLXJldmVhbC1tb2RhbC5tb2RhbC1jbG9zZS1oaWRlIHsgZGlzcGxheTpub25lOyB9IC5yZXZlYWwtbW9kYWwgc3BhbiB7IHBhZGRpbmc6MHB4OyBmb250LXNpemU6MS41cmVtIDsgbWFyZ2luLWJvdHRvbToxMHB4OyBjb2xvcjojNDE0MTQxOyB9IC5yZXZlYWwtbW9kYWwgc3Bhbi5zdWNjZXNzIHsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9jaXJjbGUtZ3JlZW4tMjQtbnMucG5nKSBuby1yZXBlYXQgc2Nyb2xsIGxlZnQgY2VudGVyIHRyYW5zcGFyZW50OyB9IC5yZXZlYWwtbW9kYWwgc3Bhbi5mYWlsIHsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9jaXJjbGUtcmVkLTI0LW5zLnBuZykgbm8tcmVwZWF0IHNjcm9sbCBsZWZ0IGNlbnRlciB0cmFuc3BhcmVudDsgcGFkZGluZy1sZWZ0OjMwcHg7IH0gLnJldmVhbC1tb2RhbCBwIHsgbWFyZ2luOjAgOyBmb250LXNpemU6MC45MzhyZW0gOyBjb2xvcjojNDE0MTQxOyB9IC5wb3B1cC1kb20tbm93cmFwcGVyIHsgYmFja2dyb3VuZDpub25lICFpbXBvcnRhbnQ7IGJveC1zaGFkb3c6bm9uZTsgfSBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtZGV2aWNlLXdpZHRoOjQ4MHB4KSB7IC5yZXZlYWwtbW9kYWwsIC5yZXZlYWwtbW9kZWwtZG8tbm90LXNob3cgeyB0b3A6MTBweDsgei1pbmRleDoxMDAwMDIwOyBwYWRkaW5nOjAuNXJlbTsgcGFkZGluZy10b3A6MnJlbTsgfSAucmV2ZWFsLW1vZGFsIC5jbG9zZS1yZXZlYWwtbW9kYWwgeyBmb250LXNpemU6MS44NzVyZW0gOyBsaW5lLWhlaWdodDowLjY7IHJpZ2h0OjAuNXJlbTsgdG9wOjAuNXJlbTsgei1pbmRleDoxOyB9IH0gLmVtYWlsLWNvbnNlbnQtYm94IDppcygudGl0bGUtdHh0LCBwKXsgbWFyZ2luLWxlZnQ6MDsgcGFkZGluZzowOyBjb2xvcjojNDE0MTQxOyB9IC5lbWFpbC1jb25zZW50LWJveHsgYmFja2dyb3VuZC1jb2xvcjojZWVlOyBjb2xvcjojNDE0MTQxOyB9IC5lbWFpbC1jb25zZW50LWJveCAuaWNvbi10aXRsZXsgdGV4dC1hbGlnbjpjZW50ZXI7IH0gLmVtYWlsLWNvbnNlbnQtYm94LS1jb21wYWN0IHNwYW4uZmFpbHsgZGlzcGxheTppbmxpbmUtYmxvY2s7IGxpbmUtaGVpZ2h0OjEuMjsgfSAuZW1haWwtY29uc2VudC1ib3gtLWNvbXBhY3QgcHsgbWFyZ2luLXRvcDoxMnB4OyBsaW5lLWhlaWdodDoxLjQ7IH0gQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LWRldmljZS13aWR0aDo0ODBweCkgeyBbaWRePSJlbWFpbEZhaWxNZXNzYWdlIl17IHdpZHRoOm1pbig5MnZ3LCA0MjBweCkgIWltcG9ydGFudDsgYm94LXNpemluZzpib3JkZXItYm94OyB9IH0KLyoqIC9jc3MvbWFpbi5jc3MgKiovCi4tbGVmdCB7ZmxvYXQ6bGVmdCFpbXBvcnRhbnQ7fSAuLXJpZ2h0IHtmbG9hdDpyaWdodH0gLi1zbWFsbCB7Zm9udC1zaXplOi44ZW07bWFyZ2luLWJvdHRvbToxLjg3NWVtO2xpbmUtaGVpZ2h0OjEuODc1ZW0haW1wb3J0YW50O30gLi1sYXJnZSB7Zm9udC1zaXplOjEuMmVtO2xpbmUtaGVpZ2h0OjIuNWVtO21hcmdpbi1ib3R0b206MS4yNWVtIWltcG9ydGFudDt9IC4taGlkZSB7ZGlzcGxheTpub25lIWltcG9ydGFudDt9IC4tcXVpZXQge2NvbG9yOiM2NjYhaW1wb3J0YW50O30gLi1sb3VkIHtjb2xvcjojMmMyYzJjIWltcG9ydGFudDt9IC4taGlnaGxpZ2h0IHtiYWNrZ3JvdW5kOiNmZjAhaW1wb3J0YW50O30gLi1hZGRlZCB7YmFja2dyb3VuZDojMDYwO2NvbG9yOiNmZmYhaW1wb3J0YW50O30gLi1yZW1vdmVkIHtiYWNrZ3JvdW5kOiM5MDA7Y29sb3I6I2ZmZiFpbXBvcnRhbnQ7fSAuLXB1c2gtZmlyc3Qge21hcmdpbi1sZWZ0OjA7cGFkZGluZy1sZWZ0OjAhaW1wb3J0YW50O30gLi1wdXNoLWxhc3Qge21hcmdpbi1yaWdodDowO3BhZGRpbmctcmlnaHQ6MCFpbXBvcnRhbnQ7fSAuLXB1c2gtbGVmdCB7bWFyZ2luLXRvcDowO3BhZGRpbmctdG9wOjAhaW1wb3J0YW50O30gLi1wdXNoLWJvdHRvbSB7bWFyZ2luLWJvdHRvbTowO3BhZGRpbmctYm90dG9tOjAhaW1wb3J0YW50O30gLi1ub2JvcmRlciB7Ym9yZGVyOjAhaW1wb3J0YW50O30gLi1ub2RlY29yYXRpb24sIC4tbm8tdGV4dC1kZWNvcmF0aW9uLCAuLW5vdGV4dC1kZWNvcmF0aW9uIHt0ZXh0LWRlY29yYXRpb246bm9uZSFpbXBvcnRhbnQ7fSAuLXRleHQtdXBwZXJjYXNlLCAuLXVwcGVyY2FzZSwgLnRleHQtdXBwZXJjYXNlIHt0ZXh0LXRyYW5zZm9ybTp2YXIoLS10eHQtdXBwZXIpO30gLi10ZXh0LWxvd2VyY2FzZSwgLi1sb3dlcmNhc2Uge3RleHQtdHJhbnNmb3JtOmxvd2VyY2FzZSFpbXBvcnRhbnQ7fSAuLWhpZGRlbiB7IGRpc3BsYXk6bm9uZTsgfSAuLXRleHQtYm9sZCwuYm9sZHtmb250LXdlaWdodDpib2xkIWltcG9ydGFudDt9IC4tdGV4dC1ub3JtYWwsLm5vcm1hbHtmb250LXdlaWdodDpub3JtYWwhaW1wb3J0YW50O30gLi1hbGlnbi10b3Age3ZlcnRpY2FsLWFsaWduOnRvcCFpbXBvcnRhbnQ7fSAuLWFsaWduLW1pZGRsZSB7dmVydGljYWwtYWxpZ246bWlkZGxlIWltcG9ydGFudDt9IC4tbGluZS1oMXsgbGluZS1oZWlnaHQ6MWVtOyB9IC4tbGluZS1oMnsgbGluZS1oZWlnaHQ6MmVtOyB9IC4tYm90dG9tMHsgYm90dG9tOjA7IH0gLi1ib3R0b20wLWltcG9ydGFudHsgYm90dG9tOjAhaW1wb3J0YW50OyB9IC5Qb3JzY2hlMnsgY2xlYXI6Ym90aDsgfSAuYmxhY2stdGV4dCB7IGNvbG9yOiMyYzJjMmM7IH0gOjpwbGFjZWhvbGRlciB7IHBhZGRpbmctdG9wOjFweDsgY29sb3I6I2E5YTlhOTsgb3BhY2l0eToxOyB9IDotbXMtaW5wdXQtcGxhY2Vob2xkZXIgeyBjb2xvcjojYTlhOWE5OyB9IDo6LW1zLWlucHV0LXBsYWNlaG9sZGVyIHsgY29sb3I6I2E5YTlhOTsgfSAjY2FyVGl0bGUgLmZhLWNoZXZyb24tcmlnaHQsIC5TcGVjaWZpY2F0aW9ucyAuZmEtY2hldnJvbi1yaWdodCB7IGJvcmRlci1yYWRpdXM6MzBweDsgd2lkdGg6MjBweDsgaGVpZ2h0OjI1cHg7IHBhZGRpbmctdG9wOjRweDsgcGFkZGluZy1sZWZ0OjlweDsgZmxvYXQ6bGVmdDsgbWFyZ2luLXRvcDo4cHg7IGZvbnQtc2l6ZToxLjM3NXJlbSA7IGJvcmRlcjoxcHggc29saWQgIzJjMmMyYzsgYmFja2dyb3VuZC1jb2xvcjojZmZmZmZmOyBjb2xvcjojMmMyYzJjIDsgbWFyZ2luLXJpZ2h0OjEwcHg7IH0gLlNwZWNpZmljYXRpb25zIC5mYS1jaGV2cm9uLXJpZ2h0eyBtYXJnaW4tdG9wOjFweDsgfSAjY2FyVGl0bGUgLm1ha2VNb2RlbFllYXJ7IGZvbnQtc2l6ZToxLjU2M3JlbSA7IH0gI2NhclRpdGxlIC5kZWFsZXJMY2F0aW9uQ2FyVGl0bGUgeyBmb250LXdlaWdodDpub3JtYWw7IGNvbG9yOiM5YzljOWM7IGZvbnQtc2l6ZToxLjEyNXJlbSA7IGxldHRlci1zcGFjaW5nOi0xcHg7IH0gLmNhclRpdGxlIC5mYS1jaGV2cm9uLXJpZ2h0eyBib3JkZXItcmFkaXVzOjMwcHg7IHdpZHRoOjIwcHg7IGhlaWdodDoyNXB4OyBwYWRkaW5nLXRvcDo0cHg7IHBhZGRpbmctbGVmdDo5cHg7IGZsb2F0OmxlZnQ7IG1hcmdpbi10b3A6OHB4OyBmb250LXNpemU6MS4zNzVyZW0gOyBib3JkZXI6MXB4IHNvbGlkICMyYzJjMmM7IGJhY2tncm91bmQtY29sb3I6I2ZmZmZmZjsgY29sb3I6IzJjMmMyYyA7IG1hcmdpbi1yaWdodDoxMHB4OyB9IC5jYXJUaXRsZSAubWFrZU1vZGVsWWVhcnsgZm9udC1zaXplOjEuNDM4cmVtIDsgfSAuY2FyVGl0bGUgLmRlYWxlckxjYXRpb25DYXJUaXRsZSB7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgY29sb3I6IzljOWM5YzsgZm9udC1zaXplOjAuOTM4cmVtIDsgbGV0dGVyLXNwYWNpbmc6LTFweDsgfSAjU2VhcmNoVGl0bGUgLmZhLWNoZXZyb24tcmlnaHR7IGJvcmRlci1yYWRpdXM6MzBweDsgd2lkdGg6MzFweDsgaGVpZ2h0OjQxcHg7IHBhZGRpbmctdG9wOjVweDsgcGFkZGluZy1sZWZ0OjE0cHg7IGZsb2F0OmxlZnQ7IG1hcmdpbi10b3A6OHB4OyBmb250LXNpemU6Mi4xODhyZW0gOyBib3JkZXI6MXB4IHNvbGlkICMyYzJjMmM7IGJhY2tncm91bmQtY29sb3I6I2ZmZmZmZjsgY29sb3I6IzJjMmMyYyA7IG1hcmdpbi1yaWdodDoxMHB4OyB9ICNTZWFyY2hUaXRsZSAuZGVhbGVyTGNhdGlvbkNhclRpdGxlIHsgZm9udC13ZWlnaHQ6bm9ybWFsOyBjb2xvcjojOWM5YzljOyBmb250LXNpemU6MXJlbSA7IGxldHRlci1zcGFjaW5nOi0xcHg7IG1hcmdpbi1sZWZ0OjQ1cHg7IGRpc3BsYXk6YmxvY2s7IH0gLnVpLW11bHRpc2VsZWN0LWNoZWNrYm94ZXMgbGFiZWwgaW5wdXQgeyBwb3NpdGlvbjpyZWxhdGl2ZTsgdG9wOjFweDsgbWFyZ2luLXJpZ2h0OjhweDsgaGVpZ2h0OjEzcHg7IH0gLnVpLXdpZGdldCwudWktc3RhdGUtaG92ZXIsIC51aS13aWRnZXQtY29udGVudCAudWktc3RhdGUtaG92ZXIsIC51aS13aWRnZXQtaGVhZGVyIC51aS1zdGF0ZS1ob3ZlciwgLnVpLXN0YXRlLWZvY3VzLCAudWktd2lkZ2V0LWNvbnRlbnQgLnVpLXN0YXRlLWZvY3VzLCAudWktd2lkZ2V0LWhlYWRlciAudWktc3RhdGUtZm9jdXMsIC51aS1zdGF0ZS1kZWZhdWx0LCAudWktd2lkZ2V0LWNvbnRlbnQgLnVpLXN0YXRlLWRlZmF1bHQsIC51aS13aWRnZXQtaGVhZGVyIC51aS1zdGF0ZS1kZWZhdWx0eyBiYWNrZ3JvdW5kOiNmZmYhaW1wb3J0YW50OyBjb2xvcjojNTU1OyBmb250LXNpemU6MC45MzhyZW0gIWltcG9ydGFudDsgfSAudWktc3RhdGUtZGVmYXVsdCwgLnVpLXdpZGdldC1jb250ZW50IC51aS1zdGF0ZS1kZWZhdWx0LCAudWktd2lkZ2V0LWhlYWRlciAudWktc3RhdGUtZGVmYXVsdHsgcGFkZGluZzo4cHggMTBweCFpbXBvcnRhbnQ7IH0gLnVpLW11bHRpc2VsZWN0LWNoZWNrYm94ZXMgbGl7IGZvbnQtc2l6ZTowLjkzOHJlbSAhaW1wb3J0YW50OyB9IC51aS1jb3JuZXItYWxseyBib3JkZXItcmFkaXVzOjBweCFpbXBvcnRhbnQ7IH0gLi1jb2xsYXBzZXsgYm9yZGVyLWNvbGxhcHNlOmNvbGxhcHNlOyB9IC4tbGl7IGxpc3Qtc3R5bGUtdHlwZTpub25lOyB9IC4tbm8tc2hhZG93LCAuLXNoYWRvdzAsIC4tbm9zaGFkb3d7IGJveC1zaGFkb3c6bm9uZSFpbXBvcnRhbnQ7IH0gLi11bmRlcmxpbmV7IHRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmUhaW1wb3J0YW50OyB9IC4tdG9wMHsgdG9wOjA7IH0gLi10ZXh0LWxlZnR7dGV4dC1hbGlnbjpsZWZ0IWltcG9ydGFudDt9IC4tdGV4dC1yaWdodHt0ZXh0LWFsaWduOnJpZ2h0IWltcG9ydGFudDt9IC4tdGV4dC1jZW50ZXJ7dGV4dC1hbGlnbjpjZW50ZXIhaW1wb3J0YW50O30gLi10ZXh0LXJlZCwgLi1yZWQtdGV4dHtjb2xvcjpyZWQhaW1wb3J0YW50O30gLi1ibG9ja3tkaXNwbGF5OmJsb2NrIWltcG9ydGFudDt9IC4taW5saW5lLWJsb2Nre2Rpc3BsYXk6aW5saW5lLWJsb2NrIWltcG9ydGFudDt9IC4tbm9uZSwgLi1oaWRkZW4sIC4taGlkZGUge2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnQ7fSAuLWlubGluZSB7ZGlzcGxheTppbmxpbmUhaW1wb3J0YW50O30gLi1jb2xvcjEgeyBjb2xvcjojNTc1NzU3IWltcG9ydGFudDt9IC4tdGl0bGUxIHsgZm9udC1zaXplOjEuNDM4cmVtICFpbXBvcnRhbnQ7IGZvbnQtY29sb3I6IzJjMmMyYyAhaW1wb3J0YW50OyB0ZXh0LWRlY29yYXRpb246bm9uZSFpbXBvcnRhbnQ7IH0gLi1pbnB1dCB7IGZvbnQtc2l6ZTowLjgxM3JlbSA7IGxpbmUtaGVpZ2h0OjE1cHg7IHZlcnRpY2FsLWFsaWduOm1pZGRsZTsgaGVpZ2h0OjMycHg7IGNvbG9yOiM0MDQwNDA7IHBhZGRpbmc6MHB4IDZweCFpbXBvcnRhbnQ7IG1hcmdpbjowcHg7IG91dGxpbmU6bm9uZTsgbWluLWhlaWdodDoyMHB4OyBib3JkZXI6MXB4IHNvbGlkICNjZWQ0ZGE7IGJvcmRlci1yYWRpdXM6LjI1cmVtOyB0cmFuc2l0aW9uOmJvcmRlci1jb2xvciAuMTVzIGVhc2UtaW4tb3V0LGJveC1zaGFkb3cgLjE1cyBlYXNlLWluLW91dDsgfSAuLWlucHV0OmZvY3VzLCAuLWlucHV0OmhvdmVyeyBib3JkZXItY29sb3I6IzgwYmRmZiAhaW1wb3J0YW50OyBib3gtc2hhZG93OjAgMCAwIDAuMnJlbSByZ2JhKDAsMTIzLDI1NSwuMjUpOyB9IC4tcG9zaXRpb24tc3RhdGljLCAuLXBvcy1zdGF0aWMsIC4tcG9zLXN0YXQge3Bvc2l0aW9uOnN0YXRpYyFpbXBvcnRhbnQ7fSAuLXBvc2l0aW9uLWFic29sdXRlLCAuLXBvcy1hYnNvbHV0ZSwgLi1wb3MtYWJzIHtwb3NpdGlvbjphYnNvbHV0ZSFpbXBvcnRhbnQ7fSAuLXBvc2l0aW9uLWZpeGVkLCAuLXBvcy1maXhlZCwgLi1wb3MtZml4IHtwb3NpdGlvbjpmaXhlZCFpbXBvcnRhbnQ7fSAuLXBvc2l0aW9uLXJlbGF0aXZlLCAuLXBvcy1yZWxhdGl2ZSwgLi1wb3MtcmVsIHtwb3NpdGlvbjpyZWxhdGl2ZSFpbXBvcnRhbnQ7fSAuLXBvc2l0aW9uLWluaGVyaXQsIC4tcG9zLWluaGVyaXQsIC4tcG9zLWluaCB7cG9zaXRpb246aW5oZXJpdCFpbXBvcnRhbnQ7fSAtbGgtMS0zLCAtbGluZS1oZWlnaHQtMS0zeyBsaW5lLWhlaWdodDoxLjM7IH0gLWxoLTIweyBsaW5lLWhlaWdodDoyMHB4OyB9IC4tZXJyb3IsIC4tYWxlcnQsIC4tbm90aWNlLCAuLXN1Y2Nlc3MsIC4taW5mbyB7cGFkZGluZzowLjhlbTttYXJnaW4tYm90dG9tOjFlbTtib3JkZXI6MnB4IHNvbGlkICNkZGQhaW1wb3J0YW50O30gLi1lcnJvciwgLi1hbGVydCB7YmFja2dyb3VuZDojZmJlM2U0O2NvbG9yOiM4YTFmMTE7Ym9yZGVyLWNvbG9yOiNmYmMyYzQhaW1wb3J0YW50O30gLi1ub3RpY2Uge2JhY2tncm91bmQ6I2ZmZjZiZjtjb2xvcjojNTE0NzIxO2JvcmRlci1jb2xvcjojZmZkMzI0IWltcG9ydGFudDt9IC4tc3VjY2VzcyB7YmFja2dyb3VuZDojZTZlZmMyO2NvbG9yOiMyNjQ0MDk7Ym9yZGVyLWNvbG9yOiNjNmQ4ODAhaW1wb3J0YW50O30gLi1pbmZvIHtiYWNrZ3JvdW5kOiNkNWVkZjg7Y29sb3I6IzIwNTc5MTtib3JkZXItY29sb3I6IzkyY2FlNCFpbXBvcnRhbnQ7fSAuLWVycm9yIGEsIC5hbGVydCBhIHtjb2xvcjojOGExZjExIWltcG9ydGFudDt9IC4tbm90aWNlIGEge2NvbG9yOiM1MTQ3MjEhaW1wb3J0YW50O30gLi1zdWNjZXNzIGEge2NvbG9yOiMyNjQ0MDkhaW1wb3J0YW50O30gLi1pbmZvIGEge2NvbG9yOiMyMDU3OTEhaW1wb3J0YW50O30gLi1ib3gge3BhZGRpbmc6MS41ZW07bWFyZ2luLWJvdHRvbToxLjVlbTtiYWNrZ3JvdW5kOiNlNWVDZjkhaW1wb3J0YW50O30gLWhyIHtiYWNrZ3JvdW5kOiNkZGRkZGQ7Y29sb3I6I2RkZGRkZDtjbGVhcjpib3RoO2Zsb2F0Om5vbmU7d2lkdGg6MTAwJTtoZWlnaHQ6MXB4O21hcmdpbjowIDAgMTdweDtib3JkZXI6bm9uZSFpbXBvcnRhbnQ7fSAtc3BhY2Uge2JhY2tncm91bmQ6I2ZmZjtjb2xvcjojZmZmO3Zpc2liaWxpdHk6aGlkZGVuO2NsZWFyOmJvdGg7ZmxvYXQ6bm9uZTt3aWR0aDoxMDAlO2hlaWdodDoxcHg7bWFyZ2luOjAgMCAxN3B4O2JvcmRlcjpub25lIWltcG9ydGFudDt9IC4tY2xlYXJmaXg6YWZ0ZXIge2NvbnRlbnQ6IlwwMDIwIjtkaXNwbGF5OmJsb2NrO2hlaWdodDowO2NsZWFyOmJvdGg7dmlzaWJpbGl0eTpoaWRkZW47b3ZlcmZsb3c6aGlkZGVuIWltcG9ydGFudDt9IC4tY2xlYXJmaXh7ZGlzcGxheTpibG9jayFpbXBvcnRhbnQ7fSAuLWNsZWFyIHtjbGVhcjpib3RoIWltcG9ydGFudDt9IC5pbnZpc2libGUge3Zpc2liaWxpdHk6aGlkZGVuO30gLmNsZWFyZml4OmFmdGVyIHtjb250ZW50OiIiOyBkaXNwbGF5OnRhYmxlOyBjbGVhcjpib3RoO30gLi1vdmVyZmxvdy1oaWRkZW4ge292ZXJmbG93OmhpZGRlbiFpbXBvcnRhbnQ7fSAuLXc1IHt3aWR0aDo1cHghaW1wb3J0YW50O30gLi13MTAge3dpZHRoOjEwcHghaW1wb3J0YW50O30gLi13MTUge3dpZHRoOjE1cHghaW1wb3J0YW50O30gLi13MTgge3dpZHRoOjE4cHghaW1wb3J0YW50O30gLi13MjAge3dpZHRoOjIwcHghaW1wb3J0YW50O30gLi13MjUge3dpZHRoOjI1cHghaW1wb3J0YW50O30gLi13MzAge3dpZHRoOjMwcHghaW1wb3J0YW50O30gLi13MzUge3dpZHRoOjM1cHghaW1wb3J0YW50O30gLi13NDAge3dpZHRoOjQwcHghaW1wb3J0YW50O30gLi13NDUge3dpZHRoOjQ1cHghaW1wb3J0YW50O30gLi13NTAge3dpZHRoOjUwcHghaW1wb3J0YW50O30gLi13NTUge3dpZHRoOjU1cHghaW1wb3J0YW50O30gLi13NjAge3dpZHRoOjYwcHghaW1wb3J0YW50O30gLi13NjUge3dpZHRoOjY1cHghaW1wb3J0YW50O30gLi13NzAge3dpZHRoOjcwcHghaW1wb3J0YW50O30gLi13NzMge3dpZHRoOjczcHghaW1wb3J0YW50O30gLi13NzUge3dpZHRoOjc1cHghaW1wb3J0YW50O30gLi13ODAge3dpZHRoOjgwcHghaW1wb3J0YW50O30gLi13ODUge3dpZHRoOjg1cHghaW1wb3J0YW50O30gLi13ODgge3dpZHRoOjg4cHghaW1wb3J0YW50O30gLi13OTAge3dpZHRoOjkwcHghaW1wb3J0YW50O30gLi13OTUge3dpZHRoOjk1cHghaW1wb3J0YW50O30gLi13MTAwIHt3aWR0aDoxMDBweCFpbXBvcnRhbnQ7fSAuLXcxMTAge3dpZHRoOjExMHB4IWltcG9ydGFudDt9IC4tdzEyMCB7d2lkdGg6MTIwcHghaW1wb3J0YW50O30gLi13MTI1IHt3aWR0aDoxMjVweCFpbXBvcnRhbnQ7fSAuLXcxMzAge3dpZHRoOjEzMHB4IWltcG9ydGFudDt9IC4tdzEzNSB7d2lkdGg6MTM1cHghaW1wb3J0YW50O30gLi13MTQwIHt3aWR0aDoxNDBweCFpbXBvcnRhbnQ7fSAuLXcxNDMge3dpZHRoOjE0M3B4IWltcG9ydGFudDt9IC4tdzE0NSB7d2lkdGg6MTQ1cHghaW1wb3J0YW50O30gLi13MTUwIHt3aWR0aDoxNTBweCFpbXBvcnRhbnQ7fSAuLXcxNzAge3dpZHRoOjE4MHB4IWltcG9ydGFudDt9IC4tdzE4MCB7d2lkdGg6MTgwcHghaW1wb3J0YW50O30gLi13MTg1IHt3aWR0aDoxODVweCFpbXBvcnRhbnQ7fSAuLXcxOTAge3dpZHRoOjE5MHB4IWltcG9ydGFudDt9IC4tdzIwMCB7d2lkdGg6MjAwcHghaW1wb3J0YW50O30gLi13MjEwIHt3aWR0aDoyMTBweCFpbXBvcnRhbnQ7fSAuLXcyMTUge3dpZHRoOjIxNXB4IWltcG9ydGFudDt9IC4tdzIyMCB7d2lkdGg6MjIwcHghaW1wb3J0YW50O30gLi13MjMwIHt3aWR0aDoyMzBweCFpbXBvcnRhbnQ7fSAuLXcyNDAge3dpZHRoOjI0MHB4IWltcG9ydGFudDt9IC4tdzI1MCB7d2lkdGg6MjUwcHghaW1wb3J0YW50O30gLi13MjU1IHt3aWR0aDoyNTVweCFpbXBvcnRhbnQ7fSAuLXcyNjAge3dpZHRoOjI2MHB4IWltcG9ydGFudDt9IC4tdzI3MCB7d2lkdGg6MjcwcHghaW1wb3J0YW50O30gLi13Mjc1IHt3aWR0aDoyNzVweCFpbXBvcnRhbnQ7fSAuLXcyODAge3dpZHRoOjI4MHB4IWltcG9ydGFudDt9IC4tdzI5MCB7d2lkdGg6MjkwcHghaW1wb3J0YW50O30gLi13MzAwIHt3aWR0aDozMDBweCFpbXBvcnRhbnQ7fSAuLXczMTUge3dpZHRoOjMxNXB4IWltcG9ydGFudDt9IC4tdzMyMCB7d2lkdGg6MzIwcHghaW1wb3J0YW50O30gLi13MzI1IHt3aWR0aDozMjVweCFpbXBvcnRhbnQ7fSAuLXczNTAge3dpZHRoOjM1MHB4IWltcG9ydGFudDt9IC4tdzQwMCB7d2lkdGg6NDAwcHghaW1wb3J0YW50O30gLi13NDUwIHt3aWR0aDo0NTBweCFpbXBvcnRhbnQ7fSAuLXc0NjAge3dpZHRoOjQ1MHB4IWltcG9ydGFudDt9IC4tdzUwMCB7d2lkdGg6NTAwcHghaW1wb3J0YW50O30gLi13NjMwIHt3aWR0aDo2MzBweCFpbXBvcnRhbnQ7fSAuLXc2MjAge3dpZHRoOjYyMHB4IWltcG9ydGFudDt9IC4tdzYyNSB7d2lkdGg6NjI1cHghaW1wb3J0YW50O30gLi13Njc1IHt3aWR0aDo2NzVweCFpbXBvcnRhbnQ7fSAuLXc2ODAge3dpZHRoOjY4MHB4IWltcG9ydGFudDt9IC4tdzY3MCB7d2lkdGg6NjcwcHghaW1wb3J0YW50O30gLi13NzAwIHt3aWR0aDo3MDBweCFpbXBvcnRhbnQ7fSAuLXc3MjAge3dpZHRoOjcyMHB4IWltcG9ydGFudDt9IC4tdzcyNSB7d2lkdGg6NzI1cHghaW1wb3J0YW50O30gLi13NzMwIHt3aWR0aDo3MzBweCFpbXBvcnRhbnQ7fSAuLXc3NTAge3dpZHRoOjc1MHB4IWltcG9ydGFudDt9IC4tdzgwMCB7d2lkdGg6ODAwcHghaW1wb3J0YW50O30gLi13OTAwIHt3aWR0aDo5MDBweCFpbXBvcnRhbnQ7fSAuLXc5Mzcge3dpZHRoOjkzN3B4IWltcG9ydGFudDt9IC4tdzk0MCB7d2lkdGg6OTQwcHghaW1wb3J0YW50O30gLi13OTYwIHt3aWR0aDo5NjBweCFpbXBvcnRhbnQ7fSAuLXc5NzAge3dpZHRoOjk3MHB4IWltcG9ydGFudDt9IC4tdzEwMDAge3dpZHRoOjEwMDBweCFpbXBvcnRhbnQ7fSAuLXc1cCB7d2lkdGg6NSUhaW1wb3J0YW50O30gLi13MTBwIHt3aWR0aDoxMCUhaW1wb3J0YW50O30gLi13MTVwIHt3aWR0aDoyMCUhaW1wb3J0YW50O30gLi13MjBwIHt3aWR0aDoyMCUhaW1wb3J0YW50O30gLi13cSwgLi13MjVwIHt3aWR0aDoyNSUhaW1wb3J0YW50O30gLi13MzBwIHt3aWR0aDozMCUhaW1wb3J0YW50O30gLi13MzVwIHt3aWR0aDozNSUhaW1wb3J0YW50O30gLi13NDBwIHt3aWR0aDo0MCUhaW1wb3J0YW50O30gLi13NDVwIHt3aWR0aDo0NSUhaW1wb3J0YW50O30gLi13aCwuLXc1MHAge3dpZHRoOjUwJSFpbXBvcnRhbnQ7fSAuLXc1NXAge3dpZHRoOjU1JSFpbXBvcnRhbnQ7fSAuLXc2MHAge3dpZHRoOjYwJSFpbXBvcnRhbnQ7fSAuLXc2NXAge3dpZHRoOjY1JSFpbXBvcnRhbnQ7fSAuLXc3MHAge3dpZHRoOjcwJSFpbXBvcnRhbnQ7fSAuLXc3NXAge3dpZHRoOjc1JSFpbXBvcnRhbnQ7fSAuLXc4MHAge3dpZHRoOjgwJSFpbXBvcnRhbnQ7fSAuLXc4NXAge3dpZHRoOjg1JSFpbXBvcnRhbnQ7fSAuLXc5MHAge3dpZHRoOjkwJSFpbXBvcnRhbnQ7fSAuLXc5NXAge3dpZHRoOjk1JSFpbXBvcnRhbnQ7fSAuLXdmLC4tdzEwMHAge3dpZHRoOjEwMCUhaW1wb3J0YW50O30gLi1tYXgtdy1ub25lIHttYXgtd2lkdGg6bm9uZSFpbXBvcnRhbnQ7fSAuLWg1IHtoZWlnaHQ6NXB4IWltcG9ydGFudDt9IC4taDYge2hlaWdodDo2cHghaW1wb3J0YW50O30gLi1oNyB7aGVpZ2h0OjdweCFpbXBvcnRhbnQ7fSAuLWg4IHtoZWlnaHQ6OHB4IWltcG9ydGFudDt9IC4taDkge2hlaWdodDo5cHghaW1wb3J0YW50O30gLi1oMTAge2hlaWdodDoxMHB4IWltcG9ydGFudDt9IC4taDExIHtoZWlnaHQ6MTFweCFpbXBvcnRhbnQ7fSAuLWgxMiB7aGVpZ2h0OjEycHghaW1wb3J0YW50O30gLi1oMTMge2hlaWdodDoxM3B4IWltcG9ydGFudDt9IC4taDE0IHtoZWlnaHQ6MTRweCFpbXBvcnRhbnQ7fSAuLWgxNSB7aGVpZ2h0OjE1cHghaW1wb3J0YW50O30gLi1oMjAge2hlaWdodDoyMHB4IWltcG9ydGFudDt9IC4taDI1IHtoZWlnaHQ6MjVweCFpbXBvcnRhbnQ7fSAuLWgzMCB7aGVpZ2h0OjMwcHghaW1wb3J0YW50O30gLi1oMzIge2hlaWdodDozMnB4IWltcG9ydGFudDt9IC4taDM1IHtoZWlnaHQ6MzVweCFpbXBvcnRhbnQ7fSAuLWg0MCB7aGVpZ2h0OjQwcHghaW1wb3J0YW50O30gLi1oNDUge2hlaWdodDo0NXB4IWltcG9ydGFudDt9IC4taDUwIHtoZWlnaHQ6NTBweCFpbXBvcnRhbnQ7fSAuLWg1NSB7aGVpZ2h0OjU1cHghaW1wb3J0YW50O30gLi1oNjAge2hlaWdodDo2MHB4IWltcG9ydGFudDt9IC4taDY1IHtoZWlnaHQ6NjVweCFpbXBvcnRhbnQ7fSAuLWg3MCB7aGVpZ2h0OjcwcHghaW1wb3J0YW50O30gLi1oNzUge2hlaWdodDo3NXB4IWltcG9ydGFudDt9IC4taDgwIHtoZWlnaHQ6ODBweCFpbXBvcnRhbnQ7fSAuLWg4NSB7aGVpZ2h0Ojg1cHghaW1wb3J0YW50O30gLi1oOTAge2hlaWdodDo5MHB4IWltcG9ydGFudDt9IC4taDk1IHtoZWlnaHQ6OTVweCFpbXBvcnRhbnQ7fSAuLWgxMDAge2hlaWdodDoxMDBweCFpbXBvcnRhbnQ7fSAuLWgxMTAge2hlaWdodDoxMTBweCFpbXBvcnRhbnQ7fSAuLWgxMjAge2hlaWdodDoxMjBweCFpbXBvcnRhbnQ7fSAuLWgxMzAge2hlaWdodDoxMzBweCFpbXBvcnRhbnQ7fSAuLWgxNDAge2hlaWdodDoxNDBweCFpbXBvcnRhbnQ7fSAuLWgxNTAge2hlaWdodDoxNTBweCFpbXBvcnRhbnQ7fSAuLWgxNjAge2hlaWdodDoxNjBweCFpbXBvcnRhbnQ7fSAuLWgxNzAge2hlaWdodDoxNzBweCFpbXBvcnRhbnQ7fSAuLWgxODAge2hlaWdodDoxODBweCFpbXBvcnRhbnQ7fSAuLWgxOTAge2hlaWdodDoxOTBweCFpbXBvcnRhbnQ7fSAuLWgyMDAge2hlaWdodDoyMDBweCFpbXBvcnRhbnQ7fSAuLWgyMjAge2hlaWdodDoyMjBweCFpbXBvcnRhbnQ7fSAuLWgyMzAge2hlaWdodDoyMzBweCFpbXBvcnRhbnQ7fSAuLWgyNDAge2hlaWdodDoyNDBweCFpbXBvcnRhbnQ7fSAuLWgyNDUge2hlaWdodDoyNDVweCFpbXBvcnRhbnQ7fSAuLWgyNDgge2hlaWdodDoyNDhweCFpbXBvcnRhbnQ7fSAuLWgyNTAge2hlaWdodDoyNTBweCFpbXBvcnRhbnQ7fSAuLWgyNTUge2hlaWdodDoyNTVweCFpbXBvcnRhbnQ7fSAuLWgyNjAge2hlaWdodDoyNjBweCFpbXBvcnRhbnQ7fSAuLWgzMDAge2hlaWdodDozMDBweCFpbXBvcnRhbnQ7fSAuLWgzNTAge2hlaWdodDozNTBweCFpbXBvcnRhbnQ7fSAuLWg0MDAge2hlaWdodDo0MDBweCFpbXBvcnRhbnQ7fSAuLWg0NTAge2hlaWdodDo0NTBweCFpbXBvcnRhbnQ7fSAuLWg1MDAge2hlaWdodDo1MDBweCFpbXBvcnRhbnQ7fSAuLWg1NTAge2hlaWdodDo1NTBweCFpbXBvcnRhbnQ7fSAuLWg2MDAge2hlaWdodDo2MDBweCFpbXBvcnRhbnQ7fSAuLWg2NTAge2hlaWdodDo2NTBweCFpbXBvcnRhbnQ7fSAuLWg3MDAge2hlaWdodDo3MDBweCFpbXBvcnRhbnQ7fSAuLWg3NTAge2hlaWdodDo3NTBweCFpbXBvcnRhbnQ7fSAuLWg4MDAge2hlaWdodDo4MDBweCFpbXBvcnRhbnQ7fSAuLWg5MDAge2hlaWdodDo5MDBweCFpbXBvcnRhbnQ7fSAuLWgxMDAwIHtoZWlnaHQ6MTAwMHB4IWltcG9ydGFudDt9IC4taDVwIHtoZWlnaHQ6NSUhaW1wb3J0YW50O30gLi1oMTBwIHtoZWlnaHQ6MTAlIWltcG9ydGFudDt9IC4taDE1cCB7aGVpZ2h0OjE1JSFpbXBvcnRhbnQ7fSAuLWgyMHAge2hlaWdodDoyMCUhaW1wb3J0YW50O30gLi1ocSwgLi1oMjVwIHtoZWlnaHQ6MjUlIWltcG9ydGFudDt9IC4taGgsLi1oNTBwIHtoZWlnaHQ6NTAlIWltcG9ydGFudDt9IC4taGYsLi1oMTAwcCB7aGVpZ2h0OjEwMCUhaW1wb3J0YW50O30gLi1ib3gtcy1ieyAtd2Via2l0LWJveC1zaXppbmc6Ym9yZGVyLWJveDsgLW1vei1ib3gtc2l6aW5nOmJvcmRlci1ib3g7IGJveC1zaXppbmc6Ym9yZGVyLWJveDsgfSAuLWJveC1jb250ZW50eyBib3gtc2l6aW5nOmNvbnRlbnQtYm94OyB9IC4tZmxleHtkaXNwbGF5OmZsZXg7fSAuLWZsZXgtY29sdW1ue2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47fSAuLWFpLWNlbnRlcnthbGlnbi1pdGVtczpjZW50ZXI7fSAuLXAwLC4tbm9wYWRkaW5nLC4tbm9wYWRkaW5ncyB7cGFkZGluZzowO30gLi1wMSB7cGFkZGluZzoxcHghaW1wb3J0YW50O30gLi1wMiB7cGFkZGluZzoycHghaW1wb3J0YW50O30gLi1wMyB7cGFkZGluZzozcHghaW1wb3J0YW50O30gLi1wNCB7cGFkZGluZzo0cHghaW1wb3J0YW50O30gLi1wNSB7cGFkZGluZzo1cHghaW1wb3J0YW50O30gLi1wNiB7cGFkZGluZzo2cHghaW1wb3J0YW50O30gLi1wNyB7cGFkZGluZzo3cHghaW1wb3J0YW50O30gLi1wOCB7cGFkZGluZzo4cHghaW1wb3J0YW50O30gLi1wOSB7cGFkZGluZzo5cHghaW1wb3J0YW50O30gLi1wMTAge3BhZGRpbmc6MTBweCFpbXBvcnRhbnQ7fSAuLXAxNSB7cGFkZGluZzoxNXB4IWltcG9ydGFudDt9IC4tcDIwIHtwYWRkaW5nOjIwcHghaW1wb3J0YW50O30gLi1wMjUge3BhZGRpbmc6MjVweCFpbXBvcnRhbnQ7fSAuLXAzMCB7cGFkZGluZzozMHB4IWltcG9ydGFudDt9IC4tcDM1IHtwYWRkaW5nOjM1cHghaW1wb3J0YW50O30gLi1wNDAge3BhZGRpbmc6NDBweCFpbXBvcnRhbnQ7fSAuLXA0NSB7cGFkZGluZzo0NXB4IWltcG9ydGFudDt9IC4tcDUwIHtwYWRkaW5nOjUwcHghaW1wb3J0YW50O30gLi1wbDAge3BhZGRpbmctbGVmdDowIWltcG9ydGFudDt9IC4tcGwxIHtwYWRkaW5nLWxlZnQ6MXB4IWltcG9ydGFudDt9IC4tcGwyIHtwYWRkaW5nLWxlZnQ6MnB4IWltcG9ydGFudDt9IC4tcGwzIHtwYWRkaW5nLWxlZnQ6M3B4IWltcG9ydGFudDt9IC4tcGw0IHtwYWRkaW5nLWxlZnQ6NHB4IWltcG9ydGFudDt9IC4tcGw1IHtwYWRkaW5nLWxlZnQ6NXB4IWltcG9ydGFudDt9IC4tcGw2IHtwYWRkaW5nLWxlZnQ6NnB4IWltcG9ydGFudDt9IC4tcGw3IHtwYWRkaW5nLWxlZnQ6N3B4IWltcG9ydGFudDt9IC4tcGw4IHtwYWRkaW5nLWxlZnQ6OHB4IWltcG9ydGFudDt9IC4tcGw5IHtwYWRkaW5nLWxlZnQ6OXB4IWltcG9ydGFudDt9IC4tcGwxMCB7cGFkZGluZy1sZWZ0OjEwcHghaW1wb3J0YW50O30gLi1wbDE1IHtwYWRkaW5nLWxlZnQ6MTVweCFpbXBvcnRhbnQ7fSAuLXBsMTYge3BhZGRpbmctbGVmdDoxNnB4IWltcG9ydGFudDt9IC4tcGwxNyB7cGFkZGluZy1sZWZ0OjE3cHghaW1wb3J0YW50O30gLi1wbDIwIHtwYWRkaW5nLWxlZnQ6MjBweCFpbXBvcnRhbnQ7fSAuLXBsMjUge3BhZGRpbmctbGVmdDoyNXB4IWltcG9ydGFudDt9IC4tcGwzMCB7cGFkZGluZy1sZWZ0OjMwcHghaW1wb3J0YW50O30gLi1wbDM1IHtwYWRkaW5nLWxlZnQ6MzVweCFpbXBvcnRhbnQ7fSAuLXBsNDAge3BhZGRpbmctbGVmdDo0MHB4IWltcG9ydGFudDt9IC4tcGw0NSB7cGFkZGluZy1sZWZ0OjQ1cHghaW1wb3J0YW50O30gLi1wbDUwIHtwYWRkaW5nLWxlZnQ6NTBweCFpbXBvcnRhbnQ7fSAuLXBsNTUge3BhZGRpbmctbGVmdDo1NXB4IWltcG9ydGFudDt9IC4tcHIwIHtwYWRkaW5nLXJpZ2h0OjAhaW1wb3J0YW50O30gLi1wcjEge3BhZGRpbmctcmlnaHQ6MXB4IWltcG9ydGFudDt9IC4tcHIyIHtwYWRkaW5nLXJpZ2h0OjJweCFpbXBvcnRhbnQ7fSAuLXByMyB7cGFkZGluZy1yaWdodDozcHghaW1wb3J0YW50O30gLi1wcjQge3BhZGRpbmctcmlnaHQ6NHB4IWltcG9ydGFudDt9IC4tcHI1IHtwYWRkaW5nLXJpZ2h0OjVweCFpbXBvcnRhbnQ7fSAuLXByNiB7cGFkZGluZy1yaWdodDo2cHghaW1wb3J0YW50O30gLi1wcjcge3BhZGRpbmctcmlnaHQ6N3B4IWltcG9ydGFudDt9IC4tcHI4IHtwYWRkaW5nLXJpZ2h0OjhweCFpbXBvcnRhbnQ7fSAuLXByOSB7cGFkZGluZy1yaWdodDo5cHghaW1wb3J0YW50O30gLi1wcjEwIHtwYWRkaW5nLXJpZ2h0OjEwcHghaW1wb3J0YW50O30gLi1wcjE1IHtwYWRkaW5nLXJpZ2h0OjE1cHghaW1wb3J0YW50O30gLi1wcjIwIHtwYWRkaW5nLXJpZ2h0OjIwcHghaW1wb3J0YW50O30gLi1wcjI1IHtwYWRkaW5nLXJpZ2h0OjI1cHghaW1wb3J0YW50O30gLi1wcjMwIHtwYWRkaW5nLXJpZ2h0OjMwcHghaW1wb3J0YW50O30gLi1wcjM1IHtwYWRkaW5nLXJpZ2h0OjM1cHghaW1wb3J0YW50O30gLi1wcjQwIHtwYWRkaW5nLXJpZ2h0OjQwcHghaW1wb3J0YW50O30gLi1wcjQ1IHtwYWRkaW5nLXJpZ2h0OjQ1cHghaW1wb3J0YW50O30gLi1wcjUwIHtwYWRkaW5nLXJpZ2h0OjUwcHghaW1wb3J0YW50O30gLi1wcjU1IHtwYWRkaW5nLXJpZ2h0OjU1cHghaW1wb3J0YW50O30gLi1wdDB7cGFkZGluZy10b3A6MCFpbXBvcnRhbnQ7fSAuLXB0MSB7cGFkZGluZy10b3A6MXB4IWltcG9ydGFudDt9IC4tcHQyIHtwYWRkaW5nLXRvcDoycHghaW1wb3J0YW50O30gLi1wdDMge3BhZGRpbmctdG9wOjNweCFpbXBvcnRhbnQ7fSAuLXB0NCB7cGFkZGluZy10b3A6NHB4IWltcG9ydGFudDt9IC4tcHQ1IHtwYWRkaW5nLXRvcDo1cHghaW1wb3J0YW50O30gLi1wdDYge3BhZGRpbmctdG9wOjZweCFpbXBvcnRhbnQ7fSAuLXB0NyB7cGFkZGluZy10b3A6N3B4IWltcG9ydGFudDt9IC4tcHQ4IHtwYWRkaW5nLXRvcDo4cHghaW1wb3J0YW50O30gLi1wdDkge3BhZGRpbmctdG9wOjlweCFpbXBvcnRhbnQ7fSAuLXB0MTAge3BhZGRpbmctdG9wOjEwcHghaW1wb3J0YW50O30gLi1wdDE1IHtwYWRkaW5nLXRvcDoxNXB4IWltcG9ydGFudDt9IC4tcHQyMCB7cGFkZGluZy10b3A6MjBweCFpbXBvcnRhbnQ7fSAuLXB0MjUge3BhZGRpbmctdG9wOjI1cHghaW1wb3J0YW50O30gLi1wdDMwIHtwYWRkaW5nLXRvcDozMHB4IWltcG9ydGFudDt9IC4tcHQzNSB7cGFkZGluZy10b3A6MzVweCFpbXBvcnRhbnQ7fSAuLXB0NDAge3BhZGRpbmctdG9wOjQwcHghaW1wb3J0YW50O30gLi1wdDQ1IHtwYWRkaW5nLXRvcDo0NXB4IWltcG9ydGFudDt9IC4tcHQ1MCB7cGFkZGluZy10b3A6NTBweCFpbXBvcnRhbnQ7fSAuLXB0NTUge3BhZGRpbmctdG9wOjU1cHghaW1wb3J0YW50O30gLi1wdDIwMCB7cGFkZGluZy10b3A6MjAwcHghaW1wb3J0YW50O30gLi1wYjAge3BhZGRpbmctYm90dG9tOjAhaW1wb3J0YW50O30gLi1wYjEge3BhZGRpbmctYm90dG9tOjFweCFpbXBvcnRhbnQ7fSAuLXBiMiB7cGFkZGluZy1ib3R0b206MnB4IWltcG9ydGFudDt9IC4tcGIzIHtwYWRkaW5nLWJvdHRvbTozcHghaW1wb3J0YW50O30gLi1wYjQge3BhZGRpbmctYm90dG9tOjRweCFpbXBvcnRhbnQ7fSAuLXBiNSB7cGFkZGluZy1ib3R0b206NXB4IWltcG9ydGFudDt9IC4tcGI2IHtwYWRkaW5nLWJvdHRvbTo2cHghaW1wb3J0YW50O30gLi1wYjcge3BhZGRpbmctYm90dG9tOjdweCFpbXBvcnRhbnQ7fSAuLXBiOCB7cGFkZGluZy1ib3R0b206OHB4IWltcG9ydGFudDt9IC4tcGI5IHtwYWRkaW5nLWJvdHRvbTo5cHghaW1wb3J0YW50O30gLi1wYjEwIHtwYWRkaW5nLWJvdHRvbToxMHB4IWltcG9ydGFudDt9IC4tcGIxNSB7cGFkZGluZy1ib3R0b206MTVweCFpbXBvcnRhbnQ7fSAuLXBiMjAge3BhZGRpbmctYm90dG9tOjIwcHghaW1wb3J0YW50O30gLi1wYjI1IHtwYWRkaW5nLWJvdHRvbToyNXB4IWltcG9ydGFudDt9IC4tcGIzMCB7cGFkZGluZy1ib3R0b206MzBweCFpbXBvcnRhbnQ7fSAuLXBiNDAge3BhZGRpbmctYm90dG9tOjQwcHghaW1wb3J0YW50O30gLWJvcmRlci1yYWRpdXMwLC1yYWRpdXMwLC1yYWQwIHtib3JkZXItcmFkaXVzOjBweCFpbXBvcnRhbnQ7fSAtYm9yZGVyLXJhZGl1czEsLXJhZGl1czEsLXJhZDEge2JvcmRlci1yYWRpdXM6MHB4IWltcG9ydGFudDt9IC1ib3JkZXItcmFkaXVzMiwtcmFkaXVzMiwtcmFkMiB7Ym9yZGVyLXJhZGl1czowcHghaW1wb3J0YW50O30gLWJvcmRlci1yYWRpdXMzLC1yYWRpdXMzLC1yYWQzIHtib3JkZXItcmFkaXVzOjBweCFpbXBvcnRhbnQ7fSAtYm9yZGVyLXJhZGl1czQsLXJhZGl1czQsLXJhZDQge2JvcmRlci1yYWRpdXM6MHB4IWltcG9ydGFudDt9IC1ib3JkZXItcmFkaXVzNSwtcmFkaXVzNSwtcmFkNSB7Ym9yZGVyLXJhZGl1czowcHghaW1wb3J0YW50O30gLWJvcmRlci1yYWRpdXM2LC1yYWRpdXM2LC1yYWQ2IHtib3JkZXItcmFkaXVzOjBweCFpbXBvcnRhbnQ7fSAtYm9yZGVyLXJhZGl1czcsLXJhZGl1czcsLXJhZDcge2JvcmRlci1yYWRpdXM6MHB4IWltcG9ydGFudDt9IC1ib3JkZXItcmFkaXVzOCwtcmFkaXVzOCwtcmFkOCB7Ym9yZGVyLXJhZGl1czowcHghaW1wb3J0YW50O30gLWJvcmRlci1yYWRpdXM5LC1yYWRpdXM5LC1yYWQ5IHtib3JkZXItcmFkaXVzOjBweCFpbXBvcnRhbnQ7fSAtYm9yZGVyLXJhZGl1czEwLC1yYWRpdXMxMCwtcmFkMTAge2JvcmRlci1yYWRpdXM6MHB4IWltcG9ydGFudDt9IC4tbWF1dG8ge21hcmdpbjphdXRvIWltcG9ydGFudDt9IC4tbTAgLi1ub21hcmdpbnMsLi1ub21hcmdpbnttYXJnaW46MCFpbXBvcnRhbnQ7fSAuLW0xIHttYXJnaW46MXB4IWltcG9ydGFudDt9IC4tbTIge21hcmdpbjoycHghaW1wb3J0YW50O30gLi1tMyB7bWFyZ2luOjNweCFpbXBvcnRhbnQ7fSAuLW00IHttYXJnaW46NHB4IWltcG9ydGFudDt9IC4tbTUge21hcmdpbjo1cHghaW1wb3J0YW50O30gLi1tNiB7bWFyZ2luOjZweCFpbXBvcnRhbnQ7fSAuLW03IHttYXJnaW46N3B4IWltcG9ydGFudDt9IC4tbTgge21hcmdpbjo4cHghaW1wb3J0YW50O30gLi1tOSB7bWFyZ2luOjlweCFpbXBvcnRhbnQ7fSAuLW0xMCB7bWFyZ2luOjEwcHghaW1wb3J0YW50O30gLi1tMTUge21hcmdpbjoxNXB4IWltcG9ydGFudDt9IC4tbTIwIHttYXJnaW46MjBweCFpbXBvcnRhbnQ7fSAuLW0yMiB7bWFyZ2luOjIycHghaW1wb3J0YW50O30gLi1tMjUge21hcmdpbjoyNXB4IWltcG9ydGFudDt9IC4tbTVwIHttYXJnaW46NSUhaW1wb3J0YW50O30gLi1tMTBwIHttYXJnaW46MTAlIWltcG9ydGFudDt9IC4tbTE1cCB7bWFyZ2luOjE1JSFpbXBvcnRhbnQ7fSAuLW0yMHAge21hcmdpbjoyMCUhaW1wb3J0YW50O30gLi1tMjVwIHttYXJnaW46MjUlIWltcG9ydGFudDt9IC4tbWxhdXRvIHttYXJnaW4tbGVmdDphdXRvIWltcG9ydGFudDt9IC4tbWwwIHttYXJnaW4tbGVmdDowIWltcG9ydGFudDt9IC4tbWwxIHttYXJnaW4tbGVmdDoxcHghaW1wb3J0YW50O30gLi1tbDIge21hcmdpbi1sZWZ0OjJweCFpbXBvcnRhbnQ7fSAuLW1sMyB7bWFyZ2luLWxlZnQ6M3B4IWltcG9ydGFudDt9IC4tbWw0IHttYXJnaW4tbGVmdDo0cHghaW1wb3J0YW50O30gLi1tbDUge21hcmdpbi1sZWZ0OjVweCFpbXBvcnRhbnQ7fSAuLW1sNiB7bWFyZ2luLWxlZnQ6NnB4IWltcG9ydGFudDt9IC4tbWw3IHttYXJnaW4tbGVmdDo3cHghaW1wb3J0YW50O30gLi1tbDgge21hcmdpbi1sZWZ0OjhweCFpbXBvcnRhbnQ7fSAuLW1sOSB7bWFyZ2luLWxlZnQ6OXB4IWltcG9ydGFudDt9IC4tbWwxMCB7bWFyZ2luLWxlZnQ6MTBweCFpbXBvcnRhbnQ7fSAuLW1sMTUge21hcmdpbi1sZWZ0OjE1cHghaW1wb3J0YW50O30gLi1tbDIwIHttYXJnaW4tbGVmdDoyMHB4IWltcG9ydGFudDt9IC4tbWwyNSB7bWFyZ2luLWxlZnQ6MjVweCFpbXBvcnRhbnQ7fSAuLW1sMjcge21hcmdpbi1sZWZ0OjI3cHghaW1wb3J0YW50O30gLi1tbDMwIHttYXJnaW4tbGVmdDozMHB4IWltcG9ydGFudDt9IC4tbWw1MCB7bWFyZ2luLWxlZnQ6NTBweCFpbXBvcnRhbnQ7fSAuLW1sODAge21hcmdpbi1sZWZ0OjgwcHghaW1wb3J0YW50O30gLi1tbDEwMCB7bWFyZ2luLWxlZnQ6MTAwcHghaW1wb3J0YW50O30gLi1tbDEzMCB7bWFyZ2luLWxlZnQ6MTMwcHghaW1wb3J0YW50O30gLi1tbDE1MCB7bWFyZ2luLWxlZnQ6MTUwcHghaW1wb3J0YW50O30gLi1tbDJwIHttYXJnaW4tbGVmdDoyJSFpbXBvcnRhbnQ7fSAuLW1sM3Age21hcmdpbi1sZWZ0OjMlIWltcG9ydGFudDt9IC4tbWw1cCB7bWFyZ2luLWxlZnQ6NSUhaW1wb3J0YW50O30gLi1tbDEwcCB7bWFyZ2luLWxlZnQ6MTAlIWltcG9ydGFudDt9IC4tbWwxNXAge21hcmdpbi1sZWZ0OjE1JSFpbXBvcnRhbnQ7fSAuLW1sMjBwIHttYXJnaW4tbGVmdDoyMCUhaW1wb3J0YW50O30gLi1tbDI1cCB7bWFyZ2luLWxlZnQ6MjUlIWltcG9ydGFudDt9IC4tbXJhdXRvIHttYXJnaW4tcmlnaHQ6YXV0byFpbXBvcnRhbnQ7fSAuLW1yMCB7bWFyZ2luLXJpZ2h0OjAhaW1wb3J0YW50O30gLi1tcjEge21hcmdpbi1yaWdodDoxcHghaW1wb3J0YW50O30gLi1tcjIge21hcmdpbi1yaWdodDoycHghaW1wb3J0YW50O30gLi1tcjMge21hcmdpbi1yaWdodDozcHghaW1wb3J0YW50O30gLi1tcjQge21hcmdpbi1yaWdodDo0cHghaW1wb3J0YW50O30gLi1tcjUge21hcmdpbi1yaWdodDo1cHghaW1wb3J0YW50O30gLi1tcjYge21hcmdpbi1yaWdodDo2cHghaW1wb3J0YW50O30gLi1tcjcge21hcmdpbi1yaWdodDo3cHghaW1wb3J0YW50O30gLi1tcjgge21hcmdpbi1yaWdodDo4cHghaW1wb3J0YW50O30gLi1tcjkge21hcmdpbi1yaWdodDo5cHghaW1wb3J0YW50O30gLi1tcjEwIHttYXJnaW4tcmlnaHQ6MTBweCFpbXBvcnRhbnQ7fSAuLW1yMTUge21hcmdpbi1yaWdodDoxNXB4IWltcG9ydGFudDt9IC4tbXIyMCB7bWFyZ2luLXJpZ2h0OjIwcHghaW1wb3J0YW50O30gLi1tcjI1IHttYXJnaW4tcmlnaHQ6MjVweCFpbXBvcnRhbnQ7fSAuLW1yMzAge21hcmdpbi1yaWdodDozMHB4IWltcG9ydGFudDt9IC4tbXIzNSB7bWFyZ2luLXJpZ2h0OjM1cHghaW1wb3J0YW50O30gLi1tcjQwIHttYXJnaW4tcmlnaHQ6NDBweCFpbXBvcnRhbnQ7fSAuLW1yNDUge21hcmdpbi1yaWdodDo0NXB4IWltcG9ydGFudDt9IC4tbXI1MCB7bWFyZ2luLXJpZ2h0OjUwcHghaW1wb3J0YW50O30gLi1tcjEwMCB7bWFyZ2luLXJpZ2h0OjEwMHB4IWltcG9ydGFudDt9IC4tbXIycCB7bWFyZ2luLXJpZ2h0OjIlIWltcG9ydGFudDt9IC4tbXIzcCB7bWFyZ2luLXJpZ2h0OjMlIWltcG9ydGFudDt9IC4tbXI1cCB7bWFyZ2luLXJpZ2h0OjUlIWltcG9ydGFudDt9IC4tbXIxMHAge21hcmdpbi1yaWdodDoxMCUhaW1wb3J0YW50O30gLi1tcjE1cCB7bWFyZ2luLXJpZ2h0OjE1JSFpbXBvcnRhbnQ7fSAuLW1yMjBwIHttYXJnaW4tcmlnaHQ6MjAlIWltcG9ydGFudDt9IC4tbXIyNXAge21hcmdpbi1yaWdodDoyNSUhaW1wb3J0YW50O30gLi1tdGF1dG8ge21hcmdpbi10b3A6YXV0byFpbXBvcnRhbnQ7fSAuLW10LTd7bWFyZ2luLXRvcDotN3B4IWltcG9ydGFudDt9IC4tbXQwe21hcmdpbi10b3A6MCFpbXBvcnRhbnQ7fSAuLW10MSB7bWFyZ2luLXRvcDoxcHghaW1wb3J0YW50O30gLi1tdDIge21hcmdpbi10b3A6MnB4IWltcG9ydGFudDt9IC4tbXQzIHttYXJnaW4tdG9wOjNweCFpbXBvcnRhbnQ7fSAuLW10NCB7bWFyZ2luLXRvcDo0cHghaW1wb3J0YW50O30gLi1tdDUge21hcmdpbi10b3A6NXB4IWltcG9ydGFudDt9IC4tbXQ2IHttYXJnaW4tdG9wOjZweCFpbXBvcnRhbnQ7fSAuLW10NyB7bWFyZ2luLXRvcDo3cHghaW1wb3J0YW50O30gLi1tdDgge21hcmdpbi10b3A6OHB4IWltcG9ydGFudDt9IC4tbXQ5IHttYXJnaW4tdG9wOjlweCFpbXBvcnRhbnQ7fSAuLW10MTAge21hcmdpbi10b3A6MTBweCFpbXBvcnRhbnQ7fSAuLW10MTEge21hcmdpbi10b3A6MTFweCFpbXBvcnRhbnQ7fSAuLW10MTIge21hcmdpbi10b3A6MTJweCFpbXBvcnRhbnQ7fSAuLW10MTMge21hcmdpbi10b3A6MTNweCFpbXBvcnRhbnQ7fSAuLW10MTQge21hcmdpbi10b3A6MTRweCFpbXBvcnRhbnQ7fSAuLW10MTUge21hcmdpbi10b3A6MTVweCFpbXBvcnRhbnQ7fSAuLW10MjAge21hcmdpbi10b3A6MjBweCFpbXBvcnRhbnQ7fSAuLW10MjUge21hcmdpbi10b3A6MjVweCFpbXBvcnRhbnQ7fSAuLW10Mjcge21hcmdpbi10b3A6MjdweCFpbXBvcnRhbnQ7fSAuLW10MzAge21hcmdpbi10b3A6MzBweCFpbXBvcnRhbnQ7fSAuLW10MzUge21hcmdpbi10b3A6MzVweCFpbXBvcnRhbnQ7fSAuLW10NDAge21hcmdpbi10b3A6NDBweCFpbXBvcnRhbnQ7fSAuLW10NTAge21hcmdpbi10b3A6NTBweCFpbXBvcnRhbnQ7fSAuLW10MTE1IHttYXJnaW4tdG9wOjExNXB4IWltcG9ydGFudDt9IC4tbXQyMDAge21hcmdpbi10b3A6MjAwcHghaW1wb3J0YW50O30gLi1tYmF1dG8ge21hcmdpbi1ib3R0b206YXV0byFpbXBvcnRhbnQ7fSAuLW1iMCB7bWFyZ2luLWJvdHRvbTowIWltcG9ydGFudDt9IC4tbWIxIHttYXJnaW4tYm90dG9tOjFweCFpbXBvcnRhbnQ7fSAuLW1iMiB7bWFyZ2luLWJvdHRvbToycHghaW1wb3J0YW50O30gLi1tYjMge21hcmdpbi1ib3R0b206M3B4IWltcG9ydGFudDt9IC4tbWI0IHttYXJnaW4tYm90dG9tOjRweCFpbXBvcnRhbnQ7fSAuLW1iNSB7bWFyZ2luLWJvdHRvbTo1cHghaW1wb3J0YW50O30gLi1tYjYge21hcmdpbi1ib3R0b206NnB4IWltcG9ydGFudDt9IC4tbWI3IHttYXJnaW4tYm90dG9tOjdweCFpbXBvcnRhbnQ7fSAuLW1iOCB7bWFyZ2luLWJvdHRvbTo4cHghaW1wb3J0YW50O30gLi1tYjkge21hcmdpbi1ib3R0b206OXB4IWltcG9ydGFudDt9IC4tbWIxMCB7bWFyZ2luLWJvdHRvbToxMHB4IWltcG9ydGFudDt9IC4tbWIxNSB7bWFyZ2luLWJvdHRvbToxNXB4IWltcG9ydGFudDt9IC4tbWIyMCB7bWFyZ2luLWJvdHRvbToyMHB4IWltcG9ydGFudDt9IC4tbWIyNSB7bWFyZ2luLWJvdHRvbToyNXB4IWltcG9ydGFudDt9IC4tbWIzMCB7bWFyZ2luLWJvdHRvbTozMHB4IWltcG9ydGFudDt9IC4tbWI1MCB7bWFyZ2luLWJvdHRvbTo1MHB4IWltcG9ydGFudDt9IC4tdG9wLTEwLCAuLXQtMTAge3RvcDotMTBweCFpbXBvcnRhbnQ7fSAuLXRvcDAsIC4tdDAge3RvcDowcHghaW1wb3J0YW50O30gLi10b3AxLCAuLXQxIHt0b3A6MXB4IWltcG9ydGFudDt9IC4tdG9wMiwgLi10MiB7dG9wOjJweCFpbXBvcnRhbnQ7fSAuLXRvcDMsIC4tdDMge3RvcDozcHghaW1wb3J0YW50O30gLi10b3A0LCAuLXQ0IHt0b3A6NHB4IWltcG9ydGFudDt9IC4tdG9wNSwgLi10NSB7dG9wOjVweCFpbXBvcnRhbnQ7fSAuLXRvcDYsIC4tdDYge3RvcDo2cHghaW1wb3J0YW50O30gLi10b3A3LCAuLXQ3IHt0b3A6N3B4IWltcG9ydGFudDt9IC4tdG9wOCwgLi10OCB7dG9wOjhweCFpbXBvcnRhbnQ7fSAuLXRvcDksIC4tdDkge3RvcDo5cHghaW1wb3J0YW50O30gLi10b3AxMCwgLi10MTAge3RvcDoxMHB4IWltcG9ydGFudDt9IC4tdG9wMTUsIC4tdDE1IHt0b3A6MTVweCFpbXBvcnRhbnQ7fSAuLXRvcDIwLCAuLXQyMCB7dG9wOjIwcHghaW1wb3J0YW50O30gLi10b3AyNSwgLi10MjV7dG9wOjI1cHghaW1wb3J0YW50O30gLi10b3AzMCwgLi10MzAge3RvcDozMHB4IWltcG9ydGFudDt9IC4tdG9wMzUsIC4tdDM1IHt0b3A6MzVweCFpbXBvcnRhbnQ7fSAuLXRvcDQwLCAuLXQ0MCB7dG9wOjQwcHghaW1wb3J0YW50O30gLi10b3A0NSwgLi10NDUge3RvcDo0NXB4IWltcG9ydGFudDt9IC4tdG9wNTAsIC4tdDUwIHt0b3A6NTBweCFpbXBvcnRhbnQ7fSAuLXRvcDEwMCwgLi10MTAwIHt0b3A6MTAwcHghaW1wb3J0YW50O30gLi10b3AyMDAsIC4tdDIwMCB7dG9wOjIwMHB4IWltcG9ydGFudDt9IC4tdG9wNXAsIC4tdDVwIHt0b3A6NSUhaW1wb3J0YW50O30gLi10b3AxMHAsIC4tdDEwcCB7dG9wOjEwJSFpbXBvcnRhbnQ7fSAuLXRvcDE1cCwgLi10MTVwIHt0b3A6MTUlIWltcG9ydGFudDt9IC4tdG9wMjBwLCAuLXQyMHAge3RvcDoyMCUhaW1wb3J0YW50O30gLi10b3AyNXAsIC4tdDI1cCB7dG9wOjI1JSFpbXBvcnRhbnQ7fSAuLXRvcDUwcCwgLi10NTBwIHt0b3A6NTAlIWltcG9ydGFudDt9IC4tdG9wMTAwcCwgLi10MTAwcCB7dG9wOjEwMCUhaW1wb3J0YW50O30gLi1sZWZ0MCwgLi1sMCB7bGVmdDowcHghaW1wb3J0YW50O30gLi1sZWZ0MSwgLi1sMSB7bGVmdDoxcHghaW1wb3J0YW50O30gLi1sZWZ0MiwgLi1sMiB7bGVmdDoycHghaW1wb3J0YW50O30gLi1sZWZ0MywgLi1sMyB7bGVmdDozcHghaW1wb3J0YW50O30gLi1sZWZ0NCwgLi1sNCB7bGVmdDo0cHghaW1wb3J0YW50O30gLi1sZWZ0NSwgLi1sNSB7bGVmdDo1cHghaW1wb3J0YW50O30gLi1sZWZ0NiwgLi1sNiB7bGVmdDo2cHghaW1wb3J0YW50O30gLi1sZWZ0NywgLi1sNyB7bGVmdDo3cHghaW1wb3J0YW50O30gLi1sZWZ0OCwgLi1sOCB7bGVmdDo4cHghaW1wb3J0YW50O30gLi1sZWZ0OSwgLi1sOSB7bGVmdDo5cHghaW1wb3J0YW50O30gLi1sZWZ0MTAsIC4tbDEwIHtsZWZ0OjEwcHghaW1wb3J0YW50O30gLi1sZWZ0MTUsIC4tbDE1IHtsZWZ0OjE1cHghaW1wb3J0YW50O30gLi1sZWZ0MjAsIC4tbDIwIHtsZWZ0OjIwcHghaW1wb3J0YW50O30gLi1sZWZ0MjUsIC4tbDI1e2xlZnQ6MjVweCFpbXBvcnRhbnQ7fSAuLWxlZnQzMCwgLi1sMzAge2xlZnQ6MzBweCFpbXBvcnRhbnQ7fSAuLWxlZnQzNSwgLi1sMzUge2xlZnQ6MzVweCFpbXBvcnRhbnQ7fSAuLWxlZnQ0MCwgLi1sNDAge2xlZnQ6NDBweCFpbXBvcnRhbnQ7fSAuLWxlZnQ0NSwgLi1sNDUge2xlZnQ6NDVweCFpbXBvcnRhbnQ7fSAuLWxlZnQ1MCwgLi1sNTAge2xlZnQ6NTBweCFpbXBvcnRhbnQ7fSAuLWxlZnQ1NSwgLi1sNTUge2xlZnQ6NTVweCFpbXBvcnRhbnQ7fSAuLWxlZnQ2MCwgLi1sNjAge2xlZnQ6NjBweCFpbXBvcnRhbnQ7fSAuLWxlZnQ2NSwgLi1sNjUge2xlZnQ6NjVweCFpbXBvcnRhbnQ7fSAuLWxlZnQ3MCwgLi1sNzAge2xlZnQ6NzBweCFpbXBvcnRhbnQ7fSAuLWxlZnQ3NSwgLi1sNzUge2xlZnQ6NzVweCFpbXBvcnRhbnQ7fSAuLWxlZnQ4MCwgLi1sODAge2xlZnQ6ODBweCFpbXBvcnRhbnQ7fSAuLWxlZnQ4NSwgLi1sODUge2xlZnQ6ODVweCFpbXBvcnRhbnQ7fSAuLWxlZnQ5MCwgLi1sOTAge2xlZnQ6OTBweCFpbXBvcnRhbnQ7fSAuLWxlZnQ5NSwgLi1sOTUge2xlZnQ6OTVweCFpbXBvcnRhbnQ7fSAuLWxlZnQxMDAsIC4tbDEwMCB7bGVmdDoxMDBweCFpbXBvcnRhbnQ7fSAuLWxlZnQxNTAsIC4tbDE1MCB7bGVmdDoxNTBweCFpbXBvcnRhbnQ7fSAuLWxlZnQyMDAsIC4tbDIwMCB7bGVmdDoyMDBweCFpbXBvcnRhbnQ7fSAuLWxlZnQyNTAsIC4tbDI1MCB7bGVmdDoyNTBweCFpbXBvcnRhbnQ7fSAuLWxlZnQzMDAsIC4tbDMwMCB7bGVmdDozMDBweCFpbXBvcnRhbnQ7fSAuLWxlZnQ1cCwgLi1sNXAge2xlZnQ6NSUhaW1wb3J0YW50O30gLi1sZWZ0MTBwLCAuLWwxMHAge2xlZnQ6MTAlIWltcG9ydGFudDt9IC4tbGVmdDE1cCwgLi1sMTVwIHtsZWZ0OjE1JSFpbXBvcnRhbnQ7fSAuLWxlZnQyMHAsIC4tbDIwcCB7bGVmdDoyMCUhaW1wb3J0YW50O30gLi1sZWZ0MjVwLCAuLWwyNXAge2xlZnQ6MjUlIWltcG9ydGFudDt9IC4tbGVmdDQwcCwgLi1sNDBwIHtsZWZ0OjQwJSFpbXBvcnRhbnQ7fSAuLWxlZnQ1MHAsIC4tbDUwcCB7bGVmdDo1MCUhaW1wb3J0YW50O30gLi1sZWZ0MTAwcCwgLi1sMTAwcCB7bGVmdDoxMDAlIWltcG9ydGFudDt9IC4tcmlnaHQwLCAuLXIwIHtyaWdodDowcHghaW1wb3J0YW50O30gLi1yaWdodDEsIC4tcjEge3JpZ2h0OjFweCFpbXBvcnRhbnQ7fSAuLXJpZ2h0MiwgLi1yMiB7cmlnaHQ6MnB4IWltcG9ydGFudDt9IC4tcmlnaHQzLCAuLXIzIHtyaWdodDozcHghaW1wb3J0YW50O30gLi1yaWdodDQsIC4tcjQge3JpZ2h0OjRweCFpbXBvcnRhbnQ7fSAuLXJpZ2h0NSwgLi1yNSB7cmlnaHQ6NXB4IWltcG9ydGFudDt9IC4tcmlnaHQ2LCAuLXI2IHtyaWdodDo2cHghaW1wb3J0YW50O30gLi1yaWdodDcsIC4tcjcge3JpZ2h0OjdweCFpbXBvcnRhbnQ7fSAuLXJpZ2h0OCwgLi1yOCB7cmlnaHQ6OHB4IWltcG9ydGFudDt9IC4tcmlnaHQ5LCAuLXI5IHtyaWdodDo5cHghaW1wb3J0YW50O30gLi1yaWdodDEwLCAuLXIxMCB7cmlnaHQ6MTBweCFpbXBvcnRhbnQ7fSAuLXJpZ2h0MTUsIC4tcjE1IHtyaWdodDoxNXB4IWltcG9ydGFudDt9IC4tcmlnaHQyMCwgLi1yMjAge3JpZ2h0OjIwcHghaW1wb3J0YW50O30gLi1yaWdodDI1LCAuLXIyNSB7cmlnaHQ6MjVweCFpbXBvcnRhbnQ7fSAuLXJpZ2h0MzAsIC4tcjMwIHtyaWdodDozMHB4IWltcG9ydGFudDt9IC4tcmlnaHQzNSwgLi1yMzUge3JpZ2h0OjM1cHghaW1wb3J0YW50O30gLi1yaWdodDQwLCAuLXI0MCB7cmlnaHQ6NDBweCFpbXBvcnRhbnQ7fSAuLXJpZ2h0NDUsIC4tcjQ1IHtyaWdodDo0NXB4IWltcG9ydGFudDt9IC4tcmlnaHQ1MCwgLi1yNTAge3JpZ2h0OjUwcHghaW1wb3J0YW50O30gLi1yaWdodDU1LCAuLXI1NSB7cmlnaHQ6NTVweCFpbXBvcnRhbnQ7fSAuLXJpZ2h0NjAsIC4tcjYwIHtyaWdodDo2MHB4IWltcG9ydGFudDt9IC4tcmlnaHQ2NSwgLi1yNjUge3JpZ2h0OjY1cHghaW1wb3J0YW50O30gLi1yaWdodDcwLCAuLXI3MCB7cmlnaHQ6NzBweCFpbXBvcnRhbnQ7fSAuLXJpZ2h0NzUsIC4tcjc1IHtyaWdodDo3NXB4IWltcG9ydGFudDt9IC4tcmlnaHQ4MCwgLi1yODAge3JpZ2h0OjgwcHghaW1wb3J0YW50O30gLi1yaWdodDg1LCAuLXI4NSB7cmlnaHQ6ODVweCFpbXBvcnRhbnQ7fSAuLXJpZ2h0OTAsIC4tcjkwIHtyaWdodDo5MHB4IWltcG9ydGFudDt9IC4tcmlnaHQ5NSwgLi1yOTUge3JpZ2h0Ojk1cHghaW1wb3J0YW50O30gLi1yaWdodDEwMCwgLi1yMTAwIHtyaWdodDoxMDBweCFpbXBvcnRhbnQ7fSAuLXJpZ2h0MTUwLCAuLXIxNTAge3JpZ2h0OjE1MHB4IWltcG9ydGFudDt9IC4tcmlnaHQyMDAsIC4tcjIwMCB7cmlnaHQ6MjAwcHghaW1wb3J0YW50O30gLi1yaWdodDI1MCwgLi1yMjUwIHtyaWdodDoyNTBweCFpbXBvcnRhbnQ7fSAuLXJpZ2h0NXAsIC4tcjVwIHtyaWdodDo1JSFpbXBvcnRhbnQ7fSAuLXJpZ2h0MTBwLCAuLXIxMHAge3JpZ2h0OjEwJSFpbXBvcnRhbnQ7fSAuLXJpZ2h0MTVwLCAuLXIxNXAge3JpZ2h0OjE1JSFpbXBvcnRhbnQ7fSAuLXJpZ2h0MjBwLCAuLXIyMHAge3JpZ2h0OjIwJSFpbXBvcnRhbnQ7fSAuLXJpZ2h0MjVwLCAuLXIyNXAge3JpZ2h0OjI1JSFpbXBvcnRhbnQ7fSAuLXJpZ2h0NTBwLCAuLXI1MHAge3JpZ2h0OjUwJSFpbXBvcnRhbnQ7fSAuLXJpZ2h0MTAwcCwgLi1yMTAwcCB7cmlnaHQ6MTAwJSFpbXBvcnRhbnQ7fSAuLXotaW5kZXg5OXt6LWluZGV4Ojk5IWltcG9ydGFudDt9IC4tei1pbmRleDEwMHt6LWluZGV4OjEwMCFpbXBvcnRhbnQ7fSAuLXotaW5kZXgxMDF7ei1pbmRleDoxMDEhaW1wb3J0YW50O30gLi16LWluZGV4MTAwMSwgLnppbmRleDEwMDF7IHotaW5kZXg6MTAwMSFpbXBvcnRhbnQ7IH0gLi16LWluZGV4MzYwMDEsIC56aW5kZXgzNjAwMXsgei1pbmRleDozNjAwMSFpbXBvcnRhbnQ7IH0gLi1uby1ib3JkZXItc3BhY2luZ3sgYm9yZGVyLXNwYWNpbmc6MCFpbXBvcnRhbnQ7IH0gLi10YWJsZXsgY2VsbHBhZGRpbmc6MCFpbXBvcnRhbnQ7IGNlbGxzcGFjaW5nOjAhaW1wb3J0YW50OyBib3JkZXI6MCFpbXBvcnRhbnQ7IH0gdGFibGUuLXRhYmxlIHRoZWFkIHRoIHsgYmFja2dyb3VuZDojYzNkOWZmIWltcG9ydGFudDsgfSB0YWJsZS4tdGFibGUgdHIgdGgsIHRhYmxlLi10YWJsZSB0ciB0ZCB7IHBhZGRpbmc6NHB4IDEwcHggNHB4IDVweCFpbXBvcnRhbnQ7IH0gdHIuLWJvcmRlci1ib3R0b20gdGQsIHRyLi1ib3JkZXItYm90dG9tIHRoIHsgYm9yZGVyLWJvdHRvbToxcHQgc29saWQgYmxhY2shaW1wb3J0YW50OyB9IC13aGl0ZS1zcGFjZS1ub3dyYXAge3doaXRlLXNwYWNlOm5vd3JhcCFpbXBvcnRhbnQ7fSAuLWN1cnNvci1hdXRvIHsgY3Vyc29yOmF1dG87IH0gLi1jdXJzb3ItZGVmYXVsdCB7IGN1cnNvcjpkZWZhdWx0OyB9IC4tY3Vyc29yLW5vbmUgeyBjdXJzb3I6bm9uZTsgfSAuLWN1cnNvci1jb250ZXh0LW1lbnUgeyBjdXJzb3I6Y29udGV4dC1tZW51OyB9IC4tY3Vyc29yLWhlbHAgeyBjdXJzb3I6aGVscDsgfSAuLWN1cnNvci1wb2ludGVyIHsgY3Vyc29yOnBvaW50ZXI7IH0gLi1jdXJzb3ItcHJvZ3Jlc3MgeyBjdXJzb3I6cHJvZ3Jlc3M7IH0gLi1jdXJzb3Itd2FpdCB7IGN1cnNvcjp3YWl0OyB9IC4tY3Vyc29yLWNlbGwgeyBjdXJzb3I6Y2VsbDsgfSAuLWN1cnNvci1jcm9zc2hhaXIgeyBjdXJzb3I6Y3Jvc3NoYWlyOyB9IC4tY3Vyc29yLXRleHQgeyBjdXJzb3I6dGV4dDsgfSAuLWN1cnNvci12ZXJ0aWNhbC10ZXh0IHsgY3Vyc29yOnZlcnRpY2FsLXRleHQ7IH0gLi1jdXJzb3ItYWxpYXMgeyBjdXJzb3I6YWxpYXM7IH0gLi1jdXJzb3ItY29weSB7IGN1cnNvcjpjb3B5OyB9IC4tY3Vyc29yLW1vdmUgeyBjdXJzb3I6bW92ZTsgfSAuLWN1cnNvci1uby1kcm9wIHsgY3Vyc29yOm5vLWRyb3A7IH0gLi1jdXJzb3Itbm90LWFsbG93ZWQgeyBjdXJzb3I6bm90LWFsbG93ZWQ7IH0gLi1jdXJzb3ItYWxsLXNjcm9sbCB7IGN1cnNvcjphbGwtc2Nyb2xsOyB9IC4tY3Vyc29yLWNvbC1yZXNpemUgeyBjdXJzb3I6Y29sLXJlc2l6ZTsgfSAuLWN1cnNvci1yb3ctcmVzaXplIHsgY3Vyc29yOnJvdy1yZXNpemU7IH0gLi1jdXJzb3Itbi1yZXNpemUgeyBjdXJzb3I6bi1yZXNpemU7IH0gLi1jdXJzb3ItZS1yZXNpemUgeyBjdXJzb3I6ZS1yZXNpemU7IH0gLi1jdXJzb3Itcy1yZXNpemUgeyBjdXJzb3I6cy1yZXNpemU7IH0gLi1jdXJzb3Itdy1yZXNpemUgeyBjdXJzb3I6dy1yZXNpemU7IH0gLi1jdXJzb3ItbnMtcmVzaXplIHsgY3Vyc29yOm5zLXJlc2l6ZTsgfSAuLWN1cnNvci1ldy1yZXNpemUgeyBjdXJzb3I6ZXctcmVzaXplOyB9IC4tY3Vyc29yLW5lLXJlc2l6ZSB7IGN1cnNvcjpuZS1yZXNpemU7IH0gLi1jdXJzb3ItbnctcmVzaXplIHsgY3Vyc29yOm53LXJlc2l6ZTsgfSAuLWN1cnNvci1zZS1yZXNpemUgeyBjdXJzb3I6c2UtcmVzaXplOyB9IC4tY3Vyc29yLXN3LXJlc2l6ZSB7IGN1cnNvcjpzdy1yZXNpemU7IH0gLi1jdXJzb3ItbmVzdy1yZXNpemUgeyBjdXJzb3I6bmVzdy1yZXNpemU7IH0gLi1jdXJzb3ItbndzZS1yZXNpemUgeyBjdXJzb3I6bndzZS1yZXNpemU7IH0gLi1mb250LXNpemUwLCAuLWZzMHsgZm9udC1zaXplOjAhaW1wb3J0YW50O30gLi1mb250LXNpemUxLCAuLWZzMXsgZm9udC1zaXplOjFweCFpbXBvcnRhbnQ7fSAuLWZvbnQtc2l6ZTIsIC4tZnMyeyBmb250LXNpemU6MnB4IWltcG9ydGFudDt9IC4tZm9udC1zaXplMywgLi1mczN7IGZvbnQtc2l6ZTozcHghaW1wb3J0YW50O30gLi1mb250LXNpemU0LCAuLWZzNHsgZm9udC1zaXplOjRweCFpbXBvcnRhbnQ7fSAuLWZvbnQtc2l6ZTUsIC4tZnM1eyBmb250LXNpemU6NXB4IWltcG9ydGFudDt9IC4tZm9udC1zaXplNiwgLi1mczZ7IGZvbnQtc2l6ZTo2cHghaW1wb3J0YW50O30gLi1mb250LXNpemU3LCAuLWZzN3sgZm9udC1zaXplOjdweCFpbXBvcnRhbnQ7fSAuLWZvbnQtc2l6ZTgsIC4tZnM4eyBmb250LXNpemU6MC41cmVtICFpbXBvcnRhbnQ7fSAuLWZvbnQtc2l6ZTksIC4tZnM5eyBmb250LXNpemU6MC41NjNyZW0gIWltcG9ydGFudDt9IC4tZm9udC1zaXplMTAsIC4tZnMxMHsgZm9udC1zaXplOjAuNjI1cmVtICFpbXBvcnRhbnQ7fSAuLWZvbnQtc2l6ZTExLCAuLWZzMTF7IGZvbnQtc2l6ZTowLjY4OHJlbSAhaW1wb3J0YW50O30gLi1mb250LXNpemUxMiwgLi1mczEyeyBmb250LXNpemU6MC43NXJlbSAhaW1wb3J0YW50O30gLi1mb250LXNpemUxMywgLi1mczEzeyBmb250LXNpemU6MC44MTNyZW0gIWltcG9ydGFudDt9IC4tZm9udC1zaXplMTQsIC4tZnMxNHsgZm9udC1zaXplOjAuODc1cmVtICFpbXBvcnRhbnQ7fSAuLWZvbnQtc2l6ZTE1LCAuLWZzMTV7IGZvbnQtc2l6ZTowLjkzOHJlbSAhaW1wb3J0YW50O30gLi1mb250LXNpemUxNiwgLi1mczE2eyBmb250LXNpemU6MXJlbSAhaW1wb3J0YW50O30gLi1mb250LXNpemUxNywgLi1mczE3eyBmb250LXNpemU6MS4wNjNyZW0gIWltcG9ydGFudDt9IC4tZm9udC1zaXplMTgsIC4tZnMxOHsgZm9udC1zaXplOjEuMTI1cmVtICFpbXBvcnRhbnQ7fSAuLWZvbnQtc2l6ZTE5LCAuLWZzMTl7IGZvbnQtc2l6ZToxLjE4OHJlbSAhaW1wb3J0YW50O30gLi1mb250LXNpemUyMCwgLi1mczIweyBmb250LXNpemU6MS4yNXJlbSAhaW1wb3J0YW50O30gLi1mb250LXNpemUyMSwgLi1mczIxeyBmb250LXNpemU6MS4zMTNyZW0gIWltcG9ydGFudDt9IC4tZm9udC1zaXplMjIsIC4tZnMyMnsgZm9udC1zaXplOjEuMzc1cmVtICFpbXBvcnRhbnQ7fSAuLWZvbnQtc2l6ZTIzLCAuLWZzMjN7IGZvbnQtc2l6ZToxLjQzOHJlbSAhaW1wb3J0YW50O30gLi1mb250LXNpemUyNCwgLi1mczI0eyBmb250LXNpemU6MS41cmVtICFpbXBvcnRhbnQ7fSAuLWZvbnQtc2l6ZTI1LCAuLWZzMjV7IGZvbnQtc2l6ZToxLjU2M3JlbSAhaW1wb3J0YW50O30gLi1mb250LXNpemUyNiwgLi1mczI2eyBmb250LXNpemU6MS42MjVyZW0gIWltcG9ydGFudDt9IC4tZm9udC1zaXplMjcsIC4tZnMyN3sgZm9udC1zaXplOjEuNjg4cmVtICFpbXBvcnRhbnQ7fSAuLWZvbnQtc2l6ZTI4LCAuLWZzMjh7IGZvbnQtc2l6ZToxLjc1cmVtICFpbXBvcnRhbnQ7fSAuLWZvbnQtc2l6ZTI5LCAuLWZzMjl7IGZvbnQtc2l6ZToxLjgxM3JlbSAhaW1wb3J0YW50O30gLi1mb250LXNpemUzMCwgLi1mczMweyBmb250LXNpemU6MS44NzVyZW0gIWltcG9ydGFudDt9IC4tZm9udC1zaXplMzEsIC4tZnMzMXsgZm9udC1zaXplOjEuOTM4cmVtICFpbXBvcnRhbnQ7fSAuLWZvbnQtc2l6ZTMyLCAuLWZzMzJ7IGZvbnQtc2l6ZToycmVtICFpbXBvcnRhbnQ7fSAuLWZvbnQtc2l6ZTMzLCAuLWZzMzN7IGZvbnQtc2l6ZToyLjA2M3JlbSAhaW1wb3J0YW50O30gLi1mb250LXNpemUzNCwgLi1mczM0eyBmb250LXNpemU6Mi4xMjVyZW0gIWltcG9ydGFudDt9IC4tZm9udC1zaXplMzUsIC4tZnMzNXsgZm9udC1zaXplOjIuMTg4cmVtICFpbXBvcnRhbnQ7fSAuLWZvbnQtc2l6ZTM2LCAuLWZzMzZ7IGZvbnQtc2l6ZToyLjI1cmVtICFpbXBvcnRhbnQ7fSAuLWZvbnQtc2l6ZTM3LCAuLWZzMzd7IGZvbnQtc2l6ZToyLjMxM3JlbSAhaW1wb3J0YW50O30gLi1mb250LXNpemUzOCwgLi1mczM4eyBmb250LXNpemU6Mi4zNzVyZW0gIWltcG9ydGFudDt9IC4tZm9udC1zaXplMzksIC4tZnMzOXsgZm9udC1zaXplOjIuNDM4cmVtICFpbXBvcnRhbnQ7fSAuLWZvbnQtc2l6ZTQwLCAuLWZzNDB7IGZvbnQtc2l6ZToyLjVyZW0gIWltcG9ydGFudDt9IC4tcmVkLWxpbmUtaDM1eyBoZWlnaHQ6MzVweDsgbWFyZ2luLWJvdHRvbTotMzVweDsgcG9zaXRpb246cmVsYXRpdmU7IHRvcDotMjVweDsgfSAjYnJlYWRjcnVtYnN7IGZvbnQtc2l6ZToxcmVtIDsgbWFyZ2luLWxlZnQ6MTBweDsgbWFyZ2luLXRvcDo4cHg7IG1hcmdpbi1ib3R0b206MTVweDsgY29sb3I6Izc1NzU3NTsgfSAuVXNlZFZkcDJNb2JpbGUgI2JyZWFkY3J1bWJzeyBmb250LXNpemU6MC45cmVtOyBjb2xvcjojMjIyMjIyOyBmb250LXdlaWdodDpib2xkOyBwYWRkaW5nOjEwcHg7IG1hcmdpbjowOyBsaW5lLWhlaWdodDoxLjI1cmVtOyB9ICNicmVhZGNydW1icyBheyBjb2xvcjojNzU3NTc1OyB9ICNjYXJwcm9vZl9tYWluLmNhcnByb29mX21haW57IHdpZHRoOjM0MHB4OyBoZWlnaHQ6YXV0bzsgYmFja2dyb3VuZC1jb2xvcjojZmZmOyBwYWRkaW5nOjIwcHg7IGRpc3BsYXk6bm9uZTsgei1pbmRleDo5OTk5OyBib3gtc2l6aW5nOmJvcmRlci1ib3g7IGJvcmRlci1yYWRpdXM6NXB4OyBwb3NpdGlvbjpmaXhlZDsgdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTUwJSkgdHJhbnNsYXRlWCgtNTAlKTsgLW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC01MCUpIHRyYW5zbGF0ZVgoLTUwJSk7IGxlZnQ6NTAlOyB0b3A6NTAlOyB9ICNjYXJwcm9vZl9tYWluIC5jYXJwcm9vZkNsb3NlQnV0dG9ueyBmbG9hdDpyaWdodDsgdG9wOjA7IH0gI2NhcnByb29mX21haW4gLmNhcnByb29mTWFpbkRpdiB7IHdpZHRoOjEwMCU7IGhlaWdodDphdXRvOyBwYWRkaW5nOjA7IGJhY2tncm91bmQ6I2ZmZjsgYm94LXNpemluZzpib3JkZXItYm94OyBwb3NpdGlvbjpyZWxhdGl2ZTsgZmxvYXQ6bGVmdDsgfSAjY2FycHJvb2ZfbWFpbiAuY2FycHJvb2ZNYWluRGl2IFVMeyB3aWR0aDoxMDAlOyBib3gtc2l6aW5nOmJvcmRlci1ib3g7IHBhZGRpbmc6MCAhaW1wb3J0YW50OyB9ICNjYXJwcm9vZl9tYWluIC5jYXJwcm9vZk1haW5EaXYgVUwgTEkgeyBsaXN0LXN0eWxlLXR5cGU6bm9uZTsgd2lkdGg6MTAwJTsgZmxvYXQ6bGVmdDsgcGFkZGluZzowIDAgNXB4IDA7IH0gI2NhcnByb29mX21haW4gLmNhcnByb29mX2ZpZWxkeyBtYXJnaW4tYm90dG9tOjdweDsgfSAjY2FycHJvb2ZfbWFpbiAuY2FycHJvb2ZNZXNzYWdleyBmb250LXNpemU6MXJlbTsgY29sb3I6IzAwMDsgZm9udC13ZWlnaHQ6bm9ybWFsOyBwYWRkaW5nLWJvdHRvbToxNXB4OyBwb3NpdGlvbjpyZWxhdGl2ZTsgZmxvYXQ6bGVmdDsgd2lkdGg6MTAwJTsgYm94LXNpemluZzpib3JkZXItYm94OyB9ICNpbm5lclBhZ2VEaXZ7IGRpc3BsYXk6dGFibGU7IH0gI2NhcnByb29mX21haW4gLmNhcnByb29mX2xhYmVseyBmb250LXNpemU6MXJlbTsgY29sb3I6IzY2NjY2NjsgZm9udC13ZWlnaHQ6Ym9sZDsgZGlzcGxheTpibG9jazsgZmxvYXQ6bGVmdDsgbWFyZ2luOjA7IHRleHQtYWxpZ246bGVmdDsgd2lkdGg6MTAwJTsgbGluZS1oZWlnaHQ6MjVweDsgYm94LXNpemluZzpib3JkZXItYm94OyB9ICNjYXJwcm9vZl9tYWluIC5jYXJwcm9vZl9pbnB1dHsgZm9udC1zaXplOjFyZW07IHBhZGRpbmc6NXB4OyBib3JkZXI6MXB4IHNvbGlkICNiOWJkYzE7IHdpZHRoOjEwMCU7IGNvbG9yOiM3OTc5Nzk7IGJveC1zaXppbmc6Ym9yZGVyLWJveDsgbWFyZ2luLWJvdHRvbToxMHB4OyBib3JkZXItcmFkaXVzOjVweDsgfSAjY2FycHJvb2ZfbWFpbiAuY2FycHJvb2ZfaW5wdXQ6Zm9jdXMgeyBiYWNrZ3JvdW5kLWNvbG9yOiNGNEY0RjQ7IGNvbG9yOiMyYzJjMmMgIWltcG9ydGFudDsgfSAjY2FycHJvb2ZfbWFpbiAucGhvbmVJbnB1dHsgZm9udC1zaXplOjFyZW07IHBhZGRpbmc6NXB4OyBib3JkZXI6MXB4IHNvbGlkICNiOWJkYzE7IHdpZHRoOjQ3cHg7IG1hcmdpbi1yaWdodDo1cHg7IGNvbG9yOiM3OTc5Nzk7IGJvcmRlci1yYWRpdXM6NXB4OyB9ICNjYXJwcm9vZl9tYWluIC5waG9uZUlucHV0OmZvY3VzIHsgYmFja2dyb3VuZC1jb2xvcjojRjRGNEY0OyBjb2xvcjojMmMyYzJjOyB9ICNjYXJwcm9vZl9tYWluIC5jYXJwcm9vZl9idXR0b25JRSB7IGJvcmRlcjoxcHggc29saWQgI0M4M0Y0MTsgbWFyZ2luOjEwcHggMTBweCAxMHB4IDA7IHBhZGRpbmc6M3B4IDEwcHg7IHRleHQtYWxpZ246Y2VudGVyOyBmbG9hdDpyaWdodDsgd2lkdGg6NjBweDsgY29sb3I6I2ZmZjsgY3Vyc29yOnBvaW50ZXI7IGJvcmRlci10b3AtY29sb3I6I0M4M0Y0MTsgYm9yZGVyLXJpZ2h0LWNvbG9yOiNDODNGNDE7IGJvcmRlci1ib3R0b20tY29sb3I6I0M4M0Y0MTsgYm9yZGVyLWxlZnQtY29sb3I6I0M4M0Y0MTsgYm9yZGVyLXRvcC13aWR0aDoxcHg7IGJvcmRlci1yaWdodC13aWR0aDoxcHg7IGJvcmRlci1ib3R0b20td2lkdGg6MXB4OyBib3JkZXItbGVmdC13aWR0aDoxcHg7IGJvcmRlci10b3Atc3R5bGU6c29saWQ7IGJvcmRlci1yaWdodC1zdHlsZTpzb2xpZDsgYm9yZGVyLWJvdHRvbS1zdHlsZTpzb2xpZDsgYm9yZGVyLWxlZnQtc3R5bGU6c29saWQ7IGJvcmRlci10b3AtbGVmdC1yYWRpdXM6OHB4OyBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czo4cHg7IGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjhweDsgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czo4cHg7IGJveC1zaGFkb3c6MHB4IDJweCAzcHggIzY2NjsgYmFja2dyb3VuZC1pbWFnZTpub25lOyBiYWNrZ3JvdW5kLWF0dGFjaG1lbnQ6c2Nyb2xsOyBiYWNrZ3JvdW5kLXJlcGVhdDpyZXBlYXQ7IGJhY2tncm91bmQtcG9zaXRpb246MCAwOyBiYWNrZ3JvdW5kLXNpemU6YXV0bzsgYmFja2dyb3VuZC1vcmlnaW46cGFkZGluZy1ib3g7IGJhY2tncm91bmQtY2xpcDpib3JkZXItYm94OyBiYWNrZ3JvdW5kLWNvbG9yOnJnYigyMDAsIDYzLCA2NSk7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgfSAjY2FycHJvb2ZfbWFpbiAuY2FycHJvb2ZfYnV0dG9uSUVIb3ZlciB7IGJhY2tncm91bmQtY29sb3I6I0M4M0Y0MTsgZm9udC13ZWlnaHQ6Ym9sZDsgfSAjY2FycHJvb2ZfbWFpbiAuY2FycHJvb2ZfYnV0dG9uIHsgZm9udC1zaXplOjEuMnJlbTsgZmxvYXQ6cmlnaHQ7IG1hcmdpbjoyNXB4IDAgMDsgZm9udC13ZWlnaHQ6bm9ybWFsOyBsaW5lLWhlaWdodDoxcmVtOyBwYWRkaW5nOjEwcHggMTVweDsgY3Vyc29yOnBvaW50ZXI7IGNvbG9yOiNmZmY7IHRleHQtYWxpZ246Y2VudGVyOyB0ZXh0LXNoYWRvdzowIC0xcHggMXB4ICM2NDc5OWU7IGJhY2tncm91bmQ6I2JiMDAwMzsgYmFja2dyb3VuZDotbW96LWxpbmVhci1ncmFkaWVudCh0b3AsICNDODNGNDEgMCUsICNiYjAwMDMgMTAwJSk7IGJhY2tncm91bmQ6LXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIDAlIDAlLCAwJSAxMDAlLCBmcm9tKCNDODNGNDEpLCB0bygjYmIwMDAzKSk7IGJvcmRlcjoxcHggc29saWQgIzVjNmY5MTsgLW1vei1ib3JkZXItcmFkaXVzOjVweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjVweDsgYm9yZGVyLXJhZGl1czo1cHg7IHdpZHRoOjEwMCU7IGJveC1zaXppbmc6Ym9yZGVyLWJveDsgfSAjY2FycHJvb2ZfbWFpbiAuY2FycHJvb2ZfYnV0dG9uOmhvdmVyIHsgYmFja2dyb3VuZDojQzgzRjQxOyBjdXJzb3I6cG9pbnRlcjsgfSAjY2FycHJvb2ZfZGlhbG9nLW92ZXJsYXkgeyBiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjgpOyBwb3NpdGlvbjpmaXhlZDsgdG9wOjA7IGxlZnQ6MDsgcmlnaHQ6MDsgYm90dG9tOjA7IHotaW5kZXg6OTk5ODsgZGlzcGxheTpub25lOyB9IC5jYXJwcm9vZi1iYWRnZS5kZXNrdG9wIHsgbWFyZ2luLWxlZnQ6LTE1cHg7IGhlaWdodDo1NnB4OyBvdmVyZmxvdzpoaWRkZW47IG1hcmdpbi10b3A6LTEwcHg7IGZsb2F0OmxlZnQ7IH0gLnByZVByb2Nlc3Nvckh0bWxDYXJQb29mQVBJcmVwb3J0LmNhcnByb29mLWJhZGdlLmRlc2t0b3AsIC5wcmVQcm9jZXNzb3JDYXJQb29mQVBJcmVwb3J0VjUuY2FycHJvb2YtYmFkZ2UuZGVza3RvcCwgLnByZVByb2Nlc3Nvckh0bWxDYXJQcm9vZkRlZmF1bHQuY2FycHJvb2YtYmFkZ2UuZGVza3RvcCB7IHdpZHRoOjEwNnB4OyBtYXJnaW46MnB4IDVweCAwIDA7IGZsb2F0OmxlZnQ7IH0gI2NhcnByb29mX21haW4gaW1nIHsgd2lkdGg6NTAlOyBmbG9hdDpsZWZ0OyBwb3NpdGlvbjpyZWxhdGl2ZTsgbWFyZ2luOjAgMCAxNXB4IDA7IH0gI2FzUG9wVXB7IGJhY2tncm91bmQ6I2ZmZmZmZjsgd2lkdGg6NjAwcHg7IHBhZGRpbmc6MzBweDsgY29sb3I6IzJjMmMyYzsgei1pbmRleDoxMDAwMDIxOyB9ICNhc1BvcFVwIC5wb3B1cC1wb2xpY3kgeyBtaW4taGVpZ2h0OjEwMHB4OyBtYXgtaGVpZ2h0OjE1MHB4OyBvdmVyZmxvdy15OmF1dG87IH0gLnBvcHVwLXBvbGljeSBhIHsgdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTsgY29sb3I6Ymx1ZTsgfSAjYXNQb3BVcCAuYXNUaXRsZXsgdGV4dC1hbGlnbjpjZW50ZXI7IGZvbnQtc2l6ZToyLjI1cmVtIDsgZm9udC13ZWlnaHQ6OyBtYXJnaW4tYm90dG9tOjIwcHg7IH0gI2FzUG9wVXAgLmJ0bkV4cGxpY2l0eyBmbG9hdDpsZWZ0OyBwYWRkaW5nLWxlZnQ6NzBweDsgd2lkdGg6MTAwcHg7IH0gI2FzUG9wVXAgLmJ0bkltcGxpY2l0eyBmbG9hdDpyaWdodDsgd2lkdGg6MTAwcHg7IHBhZGRpbmctcmlnaHQ6NzBweDsgfSAjYXNQdXJjaGFzZUludGVudC5yZXZlYWwtbW9kYWwgc3Bhbi5qcVRyYW5zZm9ybVJhZGlvV3JhcHBlcnsgcGFkZGluZzowOyBtYXJnaW46NnB4IDRweCAwOyB9ICNhc1B1cmNoYXNlSW50ZW50IC5wb3B1cC1wb2xpY3kgeyBtYXgtaGVpZ2h0OjE3MHB4OyBvdmVyZmxvdy15OmF1dG87IGZvbnQtd2VpZ2h0OmJvbGQ7IH0gI2FzUHVyY2hhc2VJbnRlbnQgLmFzUElUaXRsZXsgdGV4dC1hbGlnbjpsZWZ0OyBmb250LXNpemU6MS41NjNyZW0gOyBtYXJnaW4tYm90dG9tOjA7IHBhZGRpbmctYm90dG9tOjEwcHg7IGRpc3BsYXk6YmxvY2s7IH0gI2FzUHVyY2hhc2VJbnRlbnQgLnZpVGV4dHsgY2xlYXI6Ym90aDsgZm9udC13ZWlnaHQ6Ym9sZDsgcGFkZGluZy1ib3R0b206MTBweDsgfSAjYXNQdXJjaGFzZUludGVudCAudmlPcHRpb25zeyBsaXN0LXN0eWxlOm5vbmU7IHBhZGRpbmc6NXB4OyBtYXJnaW4tYm90dG9tOjNweDsgfSAjYXNQdXJjaGFzZUludGVudCAudmlPcHRpb25zIGxpIHsgcGFkZGluZzoycHg7IH0gI2FzUHVyY2hhc2VJbnRlbnQgLnZpT3B0aW9ucyBsaXsgY2xlYXI6Ym90aDsgZm9udC1zaXplOjEwcHQ7IH0gI2FzUHVyY2hhc2VJbnRlbnQgbGkgbGFiZWx7IGZvbnQtc2l6ZToxMHB0OyB9ICNhc1B1cmNoYXNlSW50ZW50IC5idXR0b25EZWZhdWx0Q29sb3IgeyBtYXJnaW46MCBhdXRvIDVweDsgZGlzcGxheTpibG9jazsgY2xlYXI6Ym90aDsgfSAjYXNQdXJjaGFzZUludGVudCAuc3RlcHMgeyBsaXN0LXN0eWxlOmluc2lkZSBub25lIG5vbmU7IH0gI2FzUHVyY2hhc2VJbnRlbnQgLnN0ZXBzID4gbGl7IGJhY2tncm91bmQ6I2ZmZjsgYm9yZGVyOjFweCBzb2xpZCAjYmJiYmJiOyBib3JkZXItd2lkdGg6MCAxcHggMXB4IDA7IHBhZGRpbmc6MTVweDsgbWFyZ2luLWJvdHRvbToxNXB4OyBmb250LXNpemU6MTBwdDsgfSAjYXNQdXJjaGFzZUludGVudCAuYXN5ZXNubyB7IGZsb2F0OmxlZnQ7IHBhZGRpbmctcmlnaHQ6MTBweDsgd2lkdGg6OTBweDsgfSAjYXNQdXJjaGFzZUludGVudCAuYXN5ZXN7IHBhZGRpbmctbGVmdDo5MHB4OyB3aWR0aDo3MHB4OyB9IC5jb25zZW50LmRpc2NsYWltZXIgeyB0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lOyBjb2xvcjpibHVlOyBhbGlnbi1zZWxmOmNlbnRlcjsgbWFyZ2luLWJvdHRvbTp2YXIoLS1zLTMpOyBjdXJzb3I6aGVscDsgfSAuY3VzdG9tNV9sZWZ0LCAuY3VzdG9tMjVfbGVmdCwgLmN1c3RvbTM1X2xlZnQsIC5jdXN0b200NV9sZWZ0LCAuY3RhX3ByaWNlLC5jdGFfY3JlZGl0LC5jdGFfdGVzdERyaXZlLC5jdGFfZXZhbCwuY3RhX3N2Y3Byb21vLC5jdGFfc2VydmljZSwuY3RhX3BhcnRzLC5jdGFfdGlyZXMgeyB3aWR0aDoyODBweDsgaGVpZ2h0OjYxcHg7IHBhZGRpbmc6MCAxNXB4IDAgNjBweDsgZGlzcGxheTp0YWJsZS1jZWxsOyB2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7IGZvbnQtc2l6ZToxcmVtIDsgZm9udC13ZWlnaHQ6Ym9sZDsgY3Vyc29yOnBvaW50ZXI7IGNvbG9yOiMxOTE5MTk7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2JveDI1LnBuZycpIG5vLXJlcGVhdCBzY3JvbGwgbGVmdCB0b3A7IGJhY2tncm91bmQtc2l6ZTo1ODlweCA1NTBweDsgfSAuY3RhX3ByaWNlLmFsdDpob3ZlciwgLmN0YV9jcmVkaXQuYWx0OmhvdmVyLCAuY3RhX3Rlc3REcml2ZS5hbHQ6aG92ZXIsIC5jdGFfZXZhbC5hbHQ6aG92ZXIsIC5jdGFfc2VydmljZS5hbHQ6aG92ZXIsIC5jdGFfcGFydHMuYWx0OmhvdmVyLCAuY3RhX3RpcmVzLmFsdDpob3ZlciwgLmN0YV9zdmNwcm9tby5hbHQ6aG92ZXIgeyBjb2xvcjojMTkxOTE5OyB9IC5jdXN0b201NV9sZWZ0LCAuY3VzdG9tMjU1X2xlZnQsIC5jdXN0b20zNTVfbGVmdCwgLmN1c3RvbTQ1NV9sZWZ0LCAuY3RhX3ByaWNlLmFsdCwuY3RhX3ByaWNlOmhvdmVyLCAuY3RhX2NyZWRpdC5hbHQsIC5jdGFfY3JlZGl0OmhvdmVyLCAuY3RhX3Rlc3REcml2ZS5hbHQsIC5jdGFfdGVzdERyaXZlOmhvdmVyLCAuY3RhX2V2YWwuYWx0LCAuY3RhX2V2YWw6aG92ZXIsIC5jdGFfc2VydmljZS5hbHQsIC5jdGFfc2VydmljZTpob3ZlciwgLmN0YV9wYXJ0cy5hbHQsIC5jdGFfcGFydHM6aG92ZXIsIC5jdGFfdGlyZXMuYWx0LCAuY3RhX3RpcmVzOmhvdmVyLCAuY3RhX3N2Y3Byb21vLmFsdCwgLmN0YV9zdmNwcm9tbzpob3ZlciB7IGNvbG9yOiNGRkZGRkY7IH0gLmN0YV9wcmljZSwgLmN0YV9wcmljZS5hbHQ6aG92ZXIgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOjAgMDsgfSAuY3RhX3ByaWNlLmFsdCwgLmN0YV9wcmljZTpob3ZlciB7IGJhY2tncm91bmQtcG9zaXRpb246LTMwOXB4IDA7IH0gLmN0YV9jcmVkaXQsIC5jdGFfY3JlZGl0LmFsdDpob3ZlciB7IGJhY2tncm91bmQtcG9zaXRpb246bGVmdCAtNjdweDsgfSAuY3RhX2NyZWRpdC5hbHQsIC5jdGFfY3JlZGl0OmhvdmVyIHsgYmFja2dyb3VuZC1wb3NpdGlvbjotMzA5cHggLTY3cHg7IH0gLmN0YV90ZXN0RHJpdmUsIC5jdGFfdGVzdERyaXZlLmFsdDpob3ZlciB7IGJhY2tncm91bmQtcG9zaXRpb246bGVmdCAtMTM1cHg7IH0gLmN0YV90ZXN0RHJpdmUuYWx0LCAuY3RhX3Rlc3REcml2ZTpob3ZlciB7IGJhY2tncm91bmQtcG9zaXRpb246LTMwOXB4IC0xMzVweDsgfSAuY3RhX2V2YWwsIC5jdGFfZXZhbC5hbHQ6aG92ZXIgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOmxlZnQgLTIwNHB4OyB9IC5jdGFfZXZhbC5hbHQsIC5jdGFfZXZhbDpob3ZlciB7IGJhY2tncm91bmQtcG9zaXRpb246LTMwOXB4IC0yMDRweDsgfSAuY3RhX3N2Y3Byb21vLCAuY3RhX3N2Y3Byb21vLmFsdDpob3ZlciB7IGJhY2tncm91bmQtcG9zaXRpb246bGVmdCAtMjczcHg7IH0gLmN0YV9zdmNwcm9tby5hbHQsIC5jdGFfc3ZjcHJvbW86aG92ZXIgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOi0zMDlweCAtMjczcHg7IH0gLmN0YV9zZXJ2aWNlLCAuY3RhX3NlcnZpY2UuYWx0OmhvdmVyIHsgYmFja2dyb3VuZC1wb3NpdGlvbjpsZWZ0IC0zNDFweDsgfSAuY3RhX3NlcnZpY2UuYWx0LCAuY3RhX3NlcnZpY2U6aG92ZXIgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOi0zMDlweCAtMzQxcHg7IH0gLmN0YV9wYXJ0cywgLmN0YV9wYXJ0cy5hbHQ6aG92ZXIgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOmxlZnQgLTQxMHB4OyB9IC5jdGFfcGFydHMuYWx0LCAuY3RhX3BhcnRzOmhvdmVyIHsgYmFja2dyb3VuZC1wb3NpdGlvbjotMzA5cHggLTQxMHB4OyB9IC5jdGFfdGlyZXMsIC5jdGFfdGlyZXMuYWx0OmhvdmVyIHsgYmFja2dyb3VuZC1wb3NpdGlvbjpsZWZ0IC00ODJweDsgfSAuY3RhX3RpcmVzLmFsdCwgLmN0YV90aXJlczpob3ZlciB7IGJhY2tncm91bmQtcG9zaXRpb246LTMwOXB4IC00ODJweDsgfSAuY3RhX3NlcnZpY2UuaGlkZV90ZXh0LCAuY3RhX3BhcnRzLmhpZGVfdGV4dCwgLmN0YV90aXJlcy5oaWRlX3RleHQsIC5jdGFfcHJpY2UuaGlkZV90ZXh0LCAuY3RhX2NyZWRpdC5oaWRlX3RleHQsIC5jdGFfdGVzdERyaXZlLmhpZGVfdGV4dCwgLmN0YV9ldmFsLmhpZGVfdGV4dCwgLmN0YV9zdmNwcm9tby5oaWRlX3RleHQgeyB0ZXh0LWluZGVudDotMjAwMGVtOyB9IGJvZHkuRlJFTkNIIC5jdGFfcHJpY2UuY3VzdG9tLCBib2R5LkZSRU5DSCAuY3RhX3ByaWNlLmN1c3RvbTpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYmxhbmsuZ2lmJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkZSRU5DSCAuY3RhX2NyZWRpdC5jdXN0b20sIGJvZHkuRlJFTkNIIC5jdGFfY3JlZGl0LmN1c3RvbTpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYmxhbmsuZ2lmJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkZSRU5DSCAuY3RhX3Rlc3REcml2ZS5jdXN0b20sIGJvZHkuRlJFTkNIIC5jdGFfdGVzdERyaXZlLmN1c3RvbTpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYmxhbmsuZ2lmJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkZSRU5DSCAuY3RhX2V2YWwuY3VzdG9tLCBib2R5LkZSRU5DSCAuY3RhX2V2YWwuY3VzdG9tOmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9ibGFuay5naWYnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRlJFTkNIIC5jdGFfc2VydmljZS5jdXN0b20sIGJvZHkuRlJFTkNIIC5jdGFfc2VydmljZS5jdXN0b206aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2JsYW5rLmdpZicpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5GUkVOQ0ggLmN0YV9wYXJ0cy5jdXN0b20sIGJvZHkuRlJFTkNIIC5jdGFfcGFydHMuY3VzdG9tOmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9ibGFuay5naWYnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRlJFTkNIIC5jdGFfdGlyZXMuY3VzdG9tLCBib2R5LkZSRU5DSCAuY3RhX3RpcmVzLmN1c3RvbTpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYmxhbmsuZ2lmJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkZSRU5DSCAuY3RhX3N2Y3Byb21vLmN1c3RvbSwgYm9keS5GUkVOQ0ggLmN0YV9zdmNwcm9tby5jdXN0b206aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2JsYW5rLmdpZicpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5FTkdMSVNIIC5jdGFfcHJpY2UuY3VzdG9tLCBib2R5LkVOR0xJU0ggLmN0YV9wcmljZS5jdXN0b206aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2JsYW5rLmdpZicpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5FTkdMSVNIIC5jdGFfY3JlZGl0LmN1c3RvbSwgYm9keS5FTkdMSVNIIC5jdGFfY3JlZGl0LmN1c3RvbTpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYmxhbmsuZ2lmJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkVOR0xJU0ggLmN0YV90ZXN0RHJpdmUuY3VzdG9tLCBib2R5LkVOR0xJU0ggLmN0YV90ZXN0RHJpdmUuY3VzdG9tOmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9ibGFuay5naWYnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRU5HTElTSCAuY3RhX2V2YWwuY3VzdG9tLCBib2R5LkVOR0xJU0ggLmN0YV9ldmFsLmN1c3RvbTpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYmxhbmsuZ2lmJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkVOR0xJU0ggLmN0YV9zZXJ2aWNlLmN1c3RvbSwgYm9keS5FTkdMSVNIIC5jdGFfc2VydmljZS5jdXN0b206aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2JsYW5rLmdpZicpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5FTkdMSVNIIC5jdGFfcGFydHMuY3VzdG9tLCBib2R5LkVOR0xJU0ggLmN0YV9wYXJ0cy5jdXN0b206aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2JsYW5rLmdpZicpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5FTkdMSVNIIC5jdGFfdGlyZXMuY3VzdG9tLCBib2R5LkVOR0xJU0ggLmN0YV90aXJlcy5jdXN0b206aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2JsYW5rLmdpZicpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5FTkdMSVNIIC5jdGFfc3ZjcHJvbW8uY3VzdG9tLCBib2R5LkVOR0xJU0ggLmN0YV9zdmNwcm9tby5jdXN0b206aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2JsYW5rLmdpZicpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5GUkVOQ0ggLmN0YV9wcmljZS5ibGFjaywgYm9keS5GUkVOQ0ggLmN0YV9wcmljZS5ibGFjazpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYWN0aW9uX2J1dHRvbnMvQ1RBX3ByaWNlX2JsYWNrX2ZyLnBuZycpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5GUkVOQ0ggLmN0YV9jcmVkaXQuYmxhY2ssIGJvZHkuRlJFTkNIIC5jdGFfY3JlZGl0LmJsYWNrOmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9hY3Rpb25fYnV0dG9ucy9DVEFfZmluYW5jZV9ibGFja19mci5wbmcnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRlJFTkNIIC5jdGFfdGVzdERyaXZlLmJsYWNrLCBib2R5LkZSRU5DSCAuY3RhX3Rlc3REcml2ZS5ibGFjazpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYWN0aW9uX2J1dHRvbnMvQ1RBX3Rlc3Rkcml2ZV9ibGFja19mci5wbmcnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRlJFTkNIIC5jdGFfZXZhbC5ibGFjaywgYm9keS5GUkVOQ0ggLmN0YV9ldmFsLmJsYWNrOmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9hY3Rpb25fYnV0dG9ucy9DVEFfdHJhZGVpbl9ibGFja19mci5wbmcnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRlJFTkNIIC5jdGFfc2VydmljZS5ibGFjaywgYm9keS5GUkVOQ0ggLmN0YV9zZXJ2aWNlLmJsYWNrOmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9hY3Rpb25fYnV0dG9ucy9DVEFfc2VydmljZV9ibGFja19mci5wbmcnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRlJFTkNIIC5jdGFfcGFydHMuYmxhY2ssIGJvZHkuRlJFTkNIIC5jdGFfcGFydHMuYmxhY2s6aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2FjdGlvbl9idXR0b25zL0NUQV9wYXJ0c19ibGFja19mci5wbmcnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRlJFTkNIIC5jdGFfdGlyZXMuYmxhY2ssIGJvZHkuRlJFTkNIIC5jdGFfdGlyZXMuYmxhY2s6aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2FjdGlvbl9idXR0b25zL0NUQV90aXJlc19ibGFja19mci5wbmcnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRlJFTkNIIC5jdGFfc3ZjcHJvbW8uYmxhY2ssIGJvZHkuRlJFTkNIIC5jdGFfc3ZjcHJvbW8uYmxhY2s6aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2FjdGlvbl9idXR0b25zL0NUQV9wcm9tb3NlcnZpY2VfYmxhY2tfZnIucG5nJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkVOR0xJU0ggLmN0YV9wcmljZS5ibGFjaywgYm9keS5FTkdMSVNIIC5jdGFfcHJpY2UuYmxhY2s6aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2FjdGlvbl9idXR0b25zL0NUQV9wcmljZV9ibGFja19lbi5wbmcnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRU5HTElTSCAuY3RhX2NyZWRpdC5ibGFjaywgYm9keS5FTkdMSVNIIC5jdGFfY3JlZGl0LmJsYWNrOmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9hY3Rpb25fYnV0dG9ucy9DVEFfZmluYW5jZV9ibGFja19lbi5wbmcnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRU5HTElTSCAuY3RhX3Rlc3REcml2ZS5ibGFjaywgYm9keS5FTkdMSVNIIC5jdGFfdGVzdERyaXZlLmJsYWNrOmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9hY3Rpb25fYnV0dG9ucy9DVEFfdGVzdGRyaXZlX2JsYWNrX2VuLnBuZycpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5FTkdMSVNIIC5jdGFfZXZhbC5ibGFjaywgYm9keS5FTkdMSVNIIC5jdGFfZXZhbC5ibGFjazpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYWN0aW9uX2J1dHRvbnMvQ1RBX3RyYWRlaW5fYmxhY2tfZW4ucG5nJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkVOR0xJU0ggLmN0YV9zZXJ2aWNlLmJsYWNrLCBib2R5LkVOR0xJU0ggLmN0YV9zZXJ2aWNlLmJsYWNrOmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9hY3Rpb25fYnV0dG9ucy9DVEFfc2VydmljZV9ibGFja19lbi5wbmcnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRU5HTElTSCAuY3RhX3BhcnRzLmJsYWNrLCBib2R5LkVOR0xJU0ggLmN0YV9wYXJ0cy5ibGFjazpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYWN0aW9uX2J1dHRvbnMvQ1RBX3BhcnRzX2JsYWNrX2VuLnBuZycpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5FTkdMSVNIIC5jdGFfdGlyZXMuYmxhY2ssIGJvZHkuRU5HTElTSCAuY3RhX3RpcmVzLmJsYWNrOmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9hY3Rpb25fYnV0dG9ucy9DVEFfdGlyZXNfYmxhY2tfZW4ucG5nJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkVOR0xJU0ggLmN0YV9zdmNwcm9tby5ibGFjaywgYm9keS5FTkdMSVNIIC5jdGFfc3ZjcHJvbW8uYmxhY2s6aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2FjdGlvbl9idXR0b25zL0NUQV9wcm9tb3NlcnZpY2VfYmxhY2tfZW4ucG5nJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkZSRU5DSCAuY3RhX3ByaWNlLmJsdWUsIGJvZHkuRlJFTkNIIC5jdGFfcHJpY2UuYmx1ZTpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYWN0aW9uX2J1dHRvbnMvQ1RBX3ByaWNlX2JsdWVfZnIucG5nJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkZSRU5DSCAuY3RhX2NyZWRpdC5ibHVlLCBib2R5LkZSRU5DSCAuY3RhX2NyZWRpdC5ibHVlOmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9hY3Rpb25fYnV0dG9ucy9DVEFfZmluYW5jZV9ibHVlX2ZyLnBuZycpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5GUkVOQ0ggLmN0YV90ZXN0RHJpdmUuYmx1ZSwgYm9keS5GUkVOQ0ggLmN0YV90ZXN0RHJpdmUuYmx1ZTpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYWN0aW9uX2J1dHRvbnMvQ1RBX3Rlc3Rkcml2ZV9ibHVlX2ZyLnBuZycpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5GUkVOQ0ggLmN0YV9ldmFsLmJsdWUsIGJvZHkuRlJFTkNIIC5jdGFfZXZhbC5ibHVlOmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9hY3Rpb25fYnV0dG9ucy9DVEFfdHJhZGVpbl9ibHVlX2ZyLnBuZycpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5GUkVOQ0ggLmN0YV9zZXJ2aWNlLmJsdWUsIGJvZHkuRlJFTkNIIC5jdGFfc2VydmljZS5ibHVlOmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9hY3Rpb25fYnV0dG9ucy9DVEFfc2VydmljZV9ibHVlX2ZyLnBuZycpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5GUkVOQ0ggLmN0YV9wYXJ0cy5ibHVlLCBib2R5LkZSRU5DSCAuY3RhX3BhcnRzLmJsdWU6aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2FjdGlvbl9idXR0b25zL0NUQV9wYXJ0c19ibHVlX2ZyLnBuZycpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5GUkVOQ0ggLmN0YV90aXJlcy5ibHVlLCBib2R5LkZSRU5DSCAuY3RhX3RpcmVzLmJsdWU6aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2FjdGlvbl9idXR0b25zL0NUQV90aXJlc19ibHVlX2ZyLnBuZycpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5GUkVOQ0ggLmN0YV9zdmNwcm9tby5ibHVlLCBib2R5LkZSRU5DSCAuY3RhX3N2Y3Byb21vLmJsdWU6aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2FjdGlvbl9idXR0b25zL0NUQV9wcm9tb3NlcnZpY2VfYmx1ZV9mci5wbmcnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRU5HTElTSCAuY3RhX3ByaWNlLmJsdWUsIGJvZHkuRU5HTElTSCAuY3RhX3ByaWNlLmJsdWU6aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2FjdGlvbl9idXR0b25zL0NUQV9wcmljZV9ibHVlX2VuLnBuZycpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5FTkdMSVNIIC5jdGFfY3JlZGl0LmJsdWUsIGJvZHkuRU5HTElTSCAuY3RhX2NyZWRpdC5ibHVlOmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9hY3Rpb25fYnV0dG9ucy9DVEFfZmluYW5jZV9ibHVlX2VuLnBuZycpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5FTkdMSVNIIC5jdGFfdGVzdERyaXZlLmJsdWUsIGJvZHkuRU5HTElTSCAuY3RhX3Rlc3REcml2ZS5ibHVlOmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9hY3Rpb25fYnV0dG9ucy9DVEFfdGVzdGRyaXZlX2JsdWVfZW4ucG5nJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkVOR0xJU0ggLmN0YV9ldmFsLmJsdWUsIGJvZHkuRU5HTElTSCAuY3RhX2V2YWwuYmx1ZTpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYWN0aW9uX2J1dHRvbnMvQ1RBX3RyYWRlaW5fYmx1ZV9lbi5wbmcnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRU5HTElTSCAuY3RhX3NlcnZpY2UuYmx1ZSwgYm9keS5FTkdMSVNIIC5jdGFfc2VydmljZS5ibHVlOmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9hY3Rpb25fYnV0dG9ucy9DVEFfc2VydmljZV9ibHVlX2VuLnBuZycpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5FTkdMSVNIIC5jdGFfcGFydHMuYmx1ZSwgYm9keS5FTkdMSVNIIC5jdGFfcGFydHMuYmx1ZTpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYWN0aW9uX2J1dHRvbnMvQ1RBX3BhcnRzX2JsdWVfZW4ucG5nJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkVOR0xJU0ggLmN0YV90aXJlcy5ibHVlLCBib2R5LkVOR0xJU0ggLmN0YV90aXJlcy5ibHVlOmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9hY3Rpb25fYnV0dG9ucy9DVEFfdGlyZXNfYmx1ZV9lbi5wbmcnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRU5HTElTSCAuY3RhX3N2Y3Byb21vLmJsdWUsIGJvZHkuRU5HTElTSCAuY3RhX3N2Y3Byb21vLmJsdWU6aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2FjdGlvbl9idXR0b25zL0NUQV9wcm9tb3NlcnZpY2VfYmx1ZV9lbi5wbmcnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRlJFTkNIIC5jdGFfcHJpY2UucmVkLCBib2R5LkZSRU5DSCAuY3RhX3ByaWNlLnJlZDpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYWN0aW9uX2J1dHRvbnMvQ1RBX3ByaWNlX3JlZF9mci5wbmcnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRlJFTkNIIC5jdGFfY3JlZGl0LnJlZCwgYm9keS5GUkVOQ0ggLmN0YV9jcmVkaXQucmVkOmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9hY3Rpb25fYnV0dG9ucy9DVEFfZmluYW5jZV9yZWRfZnIucG5nJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkZSRU5DSCAuY3RhX3Rlc3REcml2ZS5yZWQsIGJvZHkuRlJFTkNIIC5jdGFfdGVzdERyaXZlLnJlZDpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYWN0aW9uX2J1dHRvbnMvQ1RBX3Rlc3Rkcml2ZV9yZWRfZnIucG5nJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkZSRU5DSCAuY3RhX2V2YWwucmVkLCBib2R5LkZSRU5DSCAuY3RhX2V2YWwucmVkOmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9hY3Rpb25fYnV0dG9ucy9DVEFfdHJhZGVpbl9yZWRfZnIucG5nJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkZSRU5DSCAuY3RhX3NlcnZpY2UucmVkLCBib2R5LkZSRU5DSCAuY3RhX3NlcnZpY2UucmVkOmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9hY3Rpb25fYnV0dG9ucy9DVEFfc2VydmljZV9yZWRfZnIucG5nJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkZSRU5DSCAuY3RhX3BhcnRzLnJlZCwgYm9keS5GUkVOQ0ggLmN0YV9wYXJ0cy5yZWQ6aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2FjdGlvbl9idXR0b25zL0NUQV9wYXJ0c19yZWRfZnIucG5nJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkZSRU5DSCAuY3RhX3RpcmVzLnJlZCwgYm9keS5GUkVOQ0ggLmN0YV90aXJlcy5yZWQ6aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2FjdGlvbl9idXR0b25zL0NUQV90aXJlc19yZWRfZnIucG5nJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkZSRU5DSCAuY3RhX3N2Y3Byb21vLnJlZCwgYm9keS5GUkVOQ0ggLmN0YV9zdmNwcm9tby5yZWQ6aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2FjdGlvbl9idXR0b25zL0NUQV9wcm9tb3NlcnZpY2VfcmVkX2ZyLnBuZycpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5FTkdMSVNIIC5jdGFfcHJpY2UucmVkLCBib2R5LkVOR0xJU0ggLmN0YV9wcmljZS5yZWQ6aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2FjdGlvbl9idXR0b25zL0NUQV9wcmljZV9yZWRfZW4ucG5nJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkVOR0xJU0ggLmN0YV9jcmVkaXQucmVkLCBib2R5LkVOR0xJU0ggLmN0YV9jcmVkaXQucmVkOmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9hY3Rpb25fYnV0dG9ucy9DVEFfZmluYW5jZV9yZWRfZW4ucG5nJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkVOR0xJU0ggLmN0YV90ZXN0RHJpdmUucmVkLCBib2R5LkVOR0xJU0ggLmN0YV90ZXN0RHJpdmUucmVkOmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9hY3Rpb25fYnV0dG9ucy9DVEFfdGVzdGRyaXZlX3JlZF9lbi5wbmcnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRU5HTElTSCAuY3RhX2V2YWwucmVkLCBib2R5LkVOR0xJU0ggLmN0YV9ldmFsLnJlZDpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYWN0aW9uX2J1dHRvbnMvQ1RBX3RyYWRlaW5fcmVkX2VuLnBuZycpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5FTkdMSVNIIC5jdGFfc2VydmljZS5yZWQsIGJvZHkuRU5HTElTSCAuY3RhX3NlcnZpY2UucmVkOmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9hY3Rpb25fYnV0dG9ucy9DVEFfc2VydmljZV9yZWRfZW4ucG5nJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkVOR0xJU0ggLmN0YV9wYXJ0cy5yZWQsIGJvZHkuRU5HTElTSCAuY3RhX3BhcnRzLnJlZDpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYWN0aW9uX2J1dHRvbnMvQ1RBX3BhcnRzX3JlZF9lbi5wbmcnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRU5HTElTSCAuY3RhX3RpcmVzLnJlZCwgYm9keS5FTkdMSVNIIC5jdGFfdGlyZXMucmVkOmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9hY3Rpb25fYnV0dG9ucy9DVEFfdGlyZXNfcmVkX2VuLnBuZycpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5FTkdMSVNIIC5jdGFfc3ZjcHJvbW8ucmVkLCBib2R5LkVOR0xJU0ggLmN0YV9zdmNwcm9tby5yZWQ6aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2FjdGlvbl9idXR0b25zL0NUQV9wcm9tb3NlcnZpY2VfcmVkX2VuLnBuZycpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5GUkVOQ0ggLmN0YV9wcmljZS5ncmV5LCBib2R5LkZSRU5DSCAuY3RhX3ByaWNlLmdyZXk6aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2FjdGlvbl9idXR0b25zL0NUQV9wcmljZV9ncmV5X2ZyLnBuZycpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5GUkVOQ0ggLmN0YV9jcmVkaXQuZ3JleSwgYm9keS5GUkVOQ0ggLmN0YV9jcmVkaXQuZ3JleTpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYWN0aW9uX2J1dHRvbnMvQ1RBX2ZpbmFuY2VfZ3JleV9mci5wbmcnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRlJFTkNIIC5jdGFfdGVzdERyaXZlLmdyZXksIGJvZHkuRlJFTkNIIC5jdGFfdGVzdERyaXZlLmdyZXk6aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2FjdGlvbl9idXR0b25zL0NUQV90ZXN0ZHJpdmVfZ3JleV9mci5wbmcnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRlJFTkNIIC5jdGFfZXZhbC5ncmV5LCBib2R5LkZSRU5DSCAuY3RhX2V2YWwuZ3JleTpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYWN0aW9uX2J1dHRvbnMvQ1RBX3RyYWRlaW5fZ3JleV9mci5wbmcnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRlJFTkNIIC5jdGFfc2VydmljZS5ncmV5LCBib2R5LkZSRU5DSCAuY3RhX3NlcnZpY2UuZ3JleTpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYWN0aW9uX2J1dHRvbnMvQ1RBX3NlcnZpY2VfZ3JleV9mci5wbmcnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRlJFTkNIIC5jdGFfcGFydHMuZ3JleSwgYm9keS5GUkVOQ0ggLmN0YV9wYXJ0cy5ncmV5OmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9hY3Rpb25fYnV0dG9ucy9DVEFfcGFydHNfZ3JleV9mci5wbmcnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRlJFTkNIIC5jdGFfdGlyZXMuZ3JleSwgYm9keS5GUkVOQ0ggLmN0YV90aXJlcy5ncmV5OmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9hY3Rpb25fYnV0dG9ucy9DVEFfdGlyZXNfZ3JleV9mci5wbmcnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRlJFTkNIIC5jdGFfc3ZjcHJvbW8uZ3JleSwgYm9keS5GUkVOQ0ggLmN0YV9zdmNwcm9tby5ncmV5OmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9hY3Rpb25fYnV0dG9ucy9DVEFfcHJvbW9zZXJ2aWNlX2dyZXlfZnIucG5nJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkVOR0xJU0ggLmN0YV9wcmljZS5ncmV5LCBib2R5LkVOR0xJU0ggLmN0YV9wcmljZS5ncmV5OmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9hY3Rpb25fYnV0dG9ucy9DVEFfcHJpY2VfZ3JleV9lbi5wbmcnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRU5HTElTSCAuY3RhX2NyZWRpdC5ncmV5LCBib2R5LkVOR0xJU0ggLmN0YV9jcmVkaXQuZ3JleTpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYWN0aW9uX2J1dHRvbnMvQ1RBX2ZpbmFuY2VfZ3JleV9lbi5wbmcnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRU5HTElTSCAuY3RhX3Rlc3REcml2ZS5ncmV5LCBib2R5LkVOR0xJU0ggLmN0YV90ZXN0RHJpdmUuZ3JleTpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYWN0aW9uX2J1dHRvbnMvQ1RBX3Rlc3Rkcml2ZV9ncmV5X2VuLnBuZycpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5FTkdMSVNIIC5jdGFfZXZhbC5ncmV5LCBib2R5LkVOR0xJU0ggLmN0YV9ldmFsLmdyZXk6aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2FjdGlvbl9idXR0b25zL0NUQV90cmFkZWluX2dyZXlfZW4ucG5nJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkVOR0xJU0ggLmN0YV9zZXJ2aWNlLmdyZXksIGJvZHkuRU5HTElTSCAuY3RhX3NlcnZpY2UuZ3JleTpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYWN0aW9uX2J1dHRvbnMvQ1RBX3NlcnZpY2VfZ3JleV9lbi5wbmcnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRU5HTElTSCAuY3RhX3BhcnRzLmdyZXksIGJvZHkuRU5HTElTSCAuY3RhX3BhcnRzLmdyZXk6aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2FjdGlvbl9idXR0b25zL0NUQV9wYXJ0c19ncmV5X2VuLnBuZycpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5FTkdMSVNIIC5jdGFfdGlyZXMuZ3JleSwgYm9keS5FTkdMSVNIIC5jdGFfdGlyZXMuZ3JleTpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYWN0aW9uX2J1dHRvbnMvQ1RBX3RpcmVzX2dyZXlfZW4ucG5nJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkVOR0xJU0ggLmN0YV9zdmNwcm9tby5ncmV5LCBib2R5LkVOR0xJU0ggLmN0YV9zdmNwcm9tby5ncmV5OmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9hY3Rpb25fYnV0dG9ucy9DVEFfcHJvbW9zZXJ2aWNlX2dyZXlfZW4ucG5nJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LmhlYWRpbmdDYXBzT24gaDEsIGJvZHkuaGVhZGluZ0NhcHNPbiBoMiwgYm9keS5oZWFkaW5nQ2Fwc09uIGgzLCBib2R5LmhlYWRpbmdDYXBzT24gc3Bhbi5oMi1hbHQsIGJvZHkuaGVhZGluZ0NhcHNPbiBzcGFuLmgzLWFsdCwgYm9keS5oZWFkaW5nQ2Fwc09uLlVzZWRTcnAyIC5jYXJCYXNpY3MgLmNhclRpdGxlIC5kaXZDaXR5LCBib2R5LmhlYWRpbmdDYXBzT24gLnYtY2FyZCAuaGVhZGVyLXNlY3Rpb24gLm9yZywgYm9keS5oZWFkaW5nQ2Fwc09uICNmb290ZXIgLm9yZywgYm9keS5oZWFkaW5nQ2Fwc09uIC5sb2dvYXJlYSAuYWRkcmVzcyAuYWRyIHNwYW46Zmlyc3QtY2hpbGQsIGJvZHkuaGVhZGluZ0NhcHNPbiAjZm9vdGVyIC52aXYsIGJvZHkuaGVhZGluZ0NhcHNPbiAuc2VhcmNoLWxpbmtzLXdyYXBwZXIgLnNlYXJjaC1saW5rLXRpdGxlLCBib2R5LmhlYWRpbmdDYXBzT24gLnBvcHVwaXplckJvZHkgI3RyYWRlSW5CYXJQb3B1cF9saW5lMSwgYm9keS5oZWFkaW5nQ2Fwc09uIC5jYXJvdXNzZWwgLmNhcm91c2VsVGFicyAudGFiLWxhYmVsLCBib2R5LmhlYWRpbmdDYXBzT24gLmZvcm1IZWFkaW5nLCBib2R5LmhlYWRpbmdDYXBzT24gLmNvbXBhcmUtdmVoaWNsZXMtZm9ybS10YWJsZSAudHJpbS1wcmV2aWV3IC5jb21wYXJlLXRpdGxlIHsgdGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlICFpbXBvcnRhbnQ7IH0gYm9keS5oZWFkaW5nQ2Fwc09uIC5jYXJvdXNzZWwgLmNhcm91c2VsVGFicyAudGFiLWxhYmVsIHsgZm9udC1zaXplOjEuMjVyZW07IH0gQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOjEzMDFweCkgeyBib2R5LmhlYWRpbmdDYXBzT24gLmRpdkNlcnRpZmljYXRpb25CbG9jayBoMi5kZWZhdWx0IHsgZm9udC1zaXplOjEuNHJlbSAhaW1wb3J0YW50OyB9IH0gLmRpdkNlcnRpZmljYXRpb25CbG9jayBoMiBzcGFuLmljb24sIC5kaXZDZXJ0aWZpY2F0aW9uQmxvY2sgc3Bhbi5oMi1hbHQgc3Bhbi5pY29uIHsgbWluLXdpZHRoOjIwcHg7IH0gLmRpdkNlcnRpZmljYXRpb25CbG9jayAuY2VydC10aXRsZSB7IGRpc3BsYXk6YmxvY2s7IG1hcmdpbi1sZWZ0OjIwcHg7IGZvbnQtc2l6ZToxLjNlbTsgfSAuZGl2Q2VydGlmaWNhdGlvbkJsb2NrIC5jZXJ0LXN1YnRpdGxlIHsgZGlzcGxheTpibG9jazsgbWFyZ2luLWxlZnQ6MjBweDsgbWFyZ2luLWJvdHRvbToxMHB4OyBjb2xvcjojNzc3OyBmb250LXNpemU6MWVtOyBtYXJnaW4tdG9wOjVweDsgfSAuZGl2Q2VydGlmaWNhdGlvbkJsb2NrIC5jZXJ0LWhpZ2hsaWdodGVkLXZhbHVlIHsgYmFja2dyb3VuZC1jb2xvcjojMDAwOyBib3JkZXI6MXB4IHNvbGlkICMwMDA7IGNvbG9yOiNGRkY7IHBhZGRpbmc6MTFweCAyMHB4IDlweCAyMHB4OyBib3JkZXItcmFkaXVzOjNweDsgZGlzcGxheTppbmxpbmUtYmxvY2s7IH0gLklubmVyQm94TGF5ZXIuZGl2Q2VydGlmaWNhdGlvbkJsb2NrLmlzT25lUm93IGltZyB7IG1heC13aWR0aDphdXRvICFpbXBvcnRhbnQ7IH0gLnVzZWRWZHBBY3Rpb25zIC5hY3Rpb24tYm94IGEuYnRuLWRlZmF1bHQgeyB3aWR0aDoxMDAlICFpbXBvcnRhbnQ7IGRpc3BsYXk6YmxvY2sgIWltcG9ydGFudDsgbWFyZ2luLWJvdHRvbToxMHB4ICFpbXBvcnRhbnQ7IH0gLmN0YV9wcmljZTpob3ZlciwgLmN0YV9jcmVkaXQ6aG92ZXIsIC5jdGFfdGVzdERyaXZlOmhvdmVyLCAuY3RhX2V2YWw6aG92ZXIsIC5jdGFfc2VydmljZTpob3ZlciwgLmN0YV9wYXJ0czpob3ZlciwgLmN0YV90aXJlczpob3ZlciwgLmN0YV9zdmNwcm9tbzpob3Zlcnsgb3BhY2l0eTowLjc1OyB9IC5zZWFyY2hfY2VydF9nZW5lcmljeyBoZWlnaHQ6NDRweDsgbWFyZ2luOjJweCA1cHggMCAwOyBmbG9hdDpsZWZ0OyBtYXJnaW4tdG9wOi0wcHg7IH0gI25ld0NhckluVXNlZFBhZ2V7IG1hcmdpbi10b3A6LTJweDsgbWFyZ2luLWJvdHRvbTo1cHg7IGRpc3BsYXk6bm9uZTsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IH0gI25ld0NhckluVXNlZFBhZ2UgLmJveDI4OF90b3B7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL3JpZ2h0X2JveDRfdG9wLnBuZycpIG5vLXJlcGVhdCBzY3JvbGwgbGVmdCB0b3AgdHJhbnNwYXJlbnQ7IH0gI25ld0NhckluVXNlZFBhZ2UgLmJveDI4ODBfbWlkeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9yaWdodF9ib3g0X21pZC5wbmcnKSByZXBlYXQteSBzY3JvbGwgbGVmdCB0b3AgdHJhbnNwYXJlbnQgfSAjbmV3Q2FySW5Vc2VkUGFnZSAuYm94Mjg4X2Zvb3Rlcl9xc3sgYmFja2dyb3VuZCA6dXJsKCcvaW1hZ2VzL3JpZ2h0X2JveDRfZm9vdGVyLnBuZycpIG5vLXJlcGVhdCBzY3JvbGwgbGVmdCB0b3AgdHJhbnNwYXJlbnQgfSAjbmV3Q2FySW5Vc2VkUGFnZV9zY3JhdGNoUHJpY2V7IHdpZHRoOjExMHB4OyBoZWlnaHQ6MzVweDsgZmxvYXQ6cmlnaHQ7IHBvc2l0aW9uOnJlbGF0aXZlOyBsZWZ0Oi04M3B4OyBkaXNwbGF5Om5vbmU7IH0gI25ld0NhckluVXNlZFBhZ2VfdGl0bGV7IGRpc3BsYXk6YmxvY2s7dGV4dC1hbGlnbjpjZW50ZXI7Zm9udC1zaXplOjAuOTM4cmVtIDtmb250LXdlaWdodDpib2xkO3RleHQtZGVjb3JhdGlvbjpub25lOyB9IHVsI2NyZWRpdF9kcml2ZXRyYWluLCB1bCNjcmVkaXRfZnVlbHR5cGUsIHVsI2NyZWRpdF9ib2R5VHlwZXMgeyBsaXN0LXN0eWxlOm5vbmU7IGZsb2F0OmxlZnQ7IHdpZHRoOjMzJTsgcGFkZGluZy1ib3R0b206MTBweDsgfSB1bCNjcmVkaXRfZHJpdmV0cmFpbiBsaSA+IGxhYmVsLCB1bCNjcmVkaXRfZnVlbHR5cGUgbGkgPiBsYWJlbCwgdWwjY3JlZGl0X2JvZHlUeXBlcyBsaSA+IGxhYmVseyBkaXNwbGF5OmJsb2NrOyBwYWRkaW5nLWJvdHRvbTo1cHg7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgZm9udC1zaXplOjAuODEzcmVtIDsgY29sb3I6IzI0MjQyNDsgZmxvYXQ6bm9uZTsgfSB1bCNjcmVkaXRfZHJpdmV0cmFpbiBsaSA+IGRpdiwgdWwjY3JlZGl0X2Z1ZWx0eXBlIGxpID4gZGl2LCB1bCNjcmVkaXRfYm9keVR5cGVzIGxpID4gZGl2eyBkaXNwbGF5OmJsb2NrOyBwYWRkaW5nLWJvdHRvbTo1cHg7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgZm9udC1zaXplOjAuODEzcmVtIDsgY29sb3I6IzJjMmMyYzsgZmxvYXQ6bm9uZTsgfSB1bCNjcmVkaXRfZHJpdmV0cmFpbiBsaSA+IGxhYmVsID4gc3BhbiwgdWwjY3JlZGl0X2Z1ZWx0eXBlIGxpID4gbGFiZWwgPiBzcGFuLCB1bCNjcmVkaXRfYm9keVR5cGVzIGxpID4gbGFiZWwgPiBzcGFueyBtYXJnaW4tcmlnaHQ6OHB4OyBtYXJnaW4tdG9wOjBweDsgfSAjY3JlZGl0X3ZpX2FkdmFuY2VkIGxhYmVseyBmbG9hdDpsZWZ0OyB9ICNjcmVkaXRfdmlfYWR2YW5jZWQgbGFiZWwgZGl2LmxhYmVseyBmbG9hdDpsZWZ0OyBsaW5lLWhlaWdodDozMnB4OyBtYXJnaW4tcmlnaHQ6NnB4OyB3aWR0aDoyMDBweDsgdGV4dC1hbGlnbjpyaWdodDsgZm9udC13ZWlnaHQ6bm9ybWFsOyBmb250LXNpemU6MC44MTNyZW0gOyBjb2xvcjojMjQyNDI0OyB9IC5kZXRhaWxzX2JveCAuYm94Ml9kZXRhaWxzX21pZCAuYm94Ml9kZXRhaWxzX3RleHQsIC5kZXRhaWxzX2JveCAuYm94Ml9kZXRhaWxzX21pZCAuYm94Ml9kZXRhaWxzX3RleHQyNSBzcGFuLCAuZGV0YWlsc19ib3ggLmJveDJfZGV0YWlsc19taWQgLmJveDJfZGV0YWlsc190ZXh0IHNwYW57IGNvbG9yOiMzMzRjOTY7IH0gLnVzcC1jb2xvciB7IGNvbG9yOiMzMzRjOTY7IH0gLm15Y2Fyb3VzZWxfdGR7IGRpc3BsYXk6YmxvY2s7IHdpZHRoOjU2MHB4OyBvdmVyZmxvdzpoaWRkZW47IG1hcmdpbi1sZWZ0OjMwcHg7IG1hcmdpbi10b3A6MTBweDsgfSAudmVoaWNsZUNhcm91c2VseyB3aWR0aDoxOTBweDsgfSAuZGV0YWlsc19ib3gsIC5kZXRhaWxzX2JveCAuYm94Ml9kZXRhaWxzX21pZEV4IHsgYmFja2dyb3VuZDojYjViNWI0OyB9ICNleHRDb2xvclNlbGVjdC5maXhlZFdpZHRoICwgI2ludENvbG9yU2VsZWN0LmZpeGVkV2lkdGggeyB3aWR0aDoyMzBweDsgfSAuY29sb3JDaG9pY2V7IGhlaWdodDozMXB4OyB3aWR0aDozMXB4OyB0ZXh0LWFsaWduOmNlbnRlcjsgdGV4dC1pbmRlbnQ6LTIwMDBlbTsgbGluZS1oZWlnaHQ6MzFweDsgZm9udC1zaXplOjAuOTM4cmVtIDsgZm9udC13ZWlnaHQ6Ym9sZDsgZmxvYXQ6bGVmdDsgYm9yZGVyOjFweCBzb2xpZCAjMDAwOyBtYXJnaW46MnB4OyBjb2xvcjojZmZmOyB9IC5jb2xvckNob2ljZS5jaG9zZW4geyB0ZXh0LWluZGVudDowOyB9IC5jb2xvckNob2ljZS50YW4geyBiYWNrZ3JvdW5kLWNvbG9yOiNkMmI0OGM7IH0gLmNvbG9yQ2hvaWNlLmJsYWNrIHsgYmFja2dyb3VuZC1jb2xvcjojMDAwMDAwOyB9IC5jb2xvckNob2ljZS5nb2xkIHsgYmFja2dyb3VuZC1jb2xvcjojYjI5NjAwOyB9IC5jb2xvckNob2ljZS5icm93biB7IGJhY2tncm91bmQtY29sb3I6IzY2MzMwZTsgfSAuY29sb3JDaG9pY2UuZ3JlZW4geyBiYWNrZ3JvdW5kLWNvbG9yOiMwMDk5MDA7IH0gLmNvbG9yQ2hvaWNlLmdyYXkgeyBiYWNrZ3JvdW5kLWNvbG9yOiM5Nzk3OTc7IH0gLmNvbG9yQ2hvaWNlLmdyZXkgeyBiYWNrZ3JvdW5kLWNvbG9yOiM5Nzk3OTc7IH0gLmNvbG9yQ2hvaWNlLm9yYW5nZSB7IGJhY2tncm91bmQtY29sb3I6I2U2OTQwMDsgfSAuY29sb3JDaG9pY2Uuc2lsdmVyIHsgYmFja2dyb3VuZC1jb2xvcjojYzBjMGMwOyBjb2xvcjojMmMyYzJjOyB9IC5jb2xvckNob2ljZS5tYXV2ZSB7IGJhY2tncm91bmQtY29sb3I6I2Q0NzNkNDsgfSAuY29sb3JDaG9pY2UucmVkIHsgYmFja2dyb3VuZC1jb2xvcjojY2MwMDAwOyB9IC5jb2xvckNob2ljZS53aGl0ZSB7IGJhY2tncm91bmQtY29sb3I6I0ZGRkZGRjsgY29sb3I6IzJjMmMyYzsgfSAuY29sb3JDaG9pY2UueWVsbG93IHsgYmFja2dyb3VuZC1jb2xvcjojZjBjMDAwOyBjb2xvcjojMmMyYzJjOyB9IC5jb2xvckNob2ljZS5ibHVlIHsgYmFja2dyb3VuZC1jb2xvcjojMTkxOWM0OyB9IC5jb2xvckNob2ljZS5jb3BwZXIgeyBiYWNrZ3JvdW5kLWNvbG9yOiNBRjQ3NDQ7IH0gLmNvbG9yQ2hvaWNlLnB1cnBsZSB7IGJhY2tncm91bmQtY29sb3I6IzUzMTVCMjsgfSAubGlnaHQtZ3JheSB7IGJhY2tncm91bmQtY29sb3I6IzRiNGM0YzsgY29sb3I6IzJjMmMyYzt9IGEuY29sb3JDaG9pY2UgeyBjb2xvcjojZmZmOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgfSB0ci5ib3JkZXJfYm90dG9tX2xpbmUgdGQsIHRyLmJvcmRlcl9ib3R0b21fbGluZSB0aCB7IGJvcmRlci1ib3R0b206MXB0IHNvbGlkIGJsYWNrOyB9IC5ib3JkZXJfYm94eyBib3JkZXItcmFkaXVzOjVweDsgbWFyZ2luLWJvdHRvbTo1cHg7IGJhY2tncm91bmQtY29sb3I6cmdiKDI1NSwyNTUsMjU1KTsgLW1zLWZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT0xMDApOyBiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsMSk7IGJveC1zaGFkb3c6bm9uZTsgY2xlYXI6Ym90aDsgfSAuaG9tZXBhZ2UgLmJvcmRlcl9ib3h7IGJveC1zaGFkb3c6bm9uZSFpbXBvcnRhbnQ7IH0gI2hvbWVfc29jaWFsVGltZWxpbmV7IGJhY2tncm91bmQtY29sb3I6dmFyKC0taG9tZXBhZ2Utc29jaWFsLWJnLWNvbG9yKTsgfSAjZm9vdGVyV3JhcHBlcnsgd2lkdGg6MTAwJTsgbWFyZ2luLXRvcDowcHg7IGNsZWFyOmJvdGg7IHBhZGRpbmctdG9wOjE1cHg7IGNvbG9yOnZhcigtLWZvb3Rlci1pdGVtcy1saW5rLWNvbG9yKTsgY29sb3I6IzcwNzA3MDsgYmFja2dyb3VuZC1jb2xvcjojZmZmZmZmOyBiYWNrZ3JvdW5kLWNvbG9yOiNmOWY5Zjk7IH0gI2Zvb3RlcldyYXBwZXIgc3ZnIHsgZmlsbDp2YXIoLS1mb290ZXItbGluay10aXRsZS1jb2wpOyB9IC5jdXN0b21mb3JtX3N1Ym1pdHsgbWFyZ2luLXRvcDoyMHB4OyBtYXJnaW4tYm90dG9tOjIwcHg7IH0gLnNlZU9wdGlvbnN7IGRpc3BsYXk6bm9uZTsgfSAuc3RyaWtlLXByaWNlLCAuc3RyaWtlLXByaWNlLWJsYWNrLCAuc3RyaWtlLXByaWNlLXdoaXRlIHsgZGlzcGxheTppbmxpbmUtYmxvY2s7IHBvc2l0aW9uOnJlbGF0aXZlOyB9IC5zdHJpa2UtcHJpY2U6OmJlZm9yZSwgLnN0cmlrZS1wcmljZS1ibGFjazo6YmVmb3JlLCAuc3RyaWtlLXByaWNlLXdoaXRlOjpiZWZvcmUgeyBjb250ZW50OiIiOyBoZWlnaHQ6MnB4OyBwb3NpdGlvbjphYnNvbHV0ZTsgdG9wOjQwJTsgLW1vei10cmFuc2Zvcm06cm90YXRlKDdkZWcpOyAtd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoN2RlZyk7IHRyYW5zZm9ybTpyb3RhdGUoN2RlZyk7IHRyYW5zZm9ybS1vcmlnaW46NTAlIDUwJSAwOyB3aWR0aDoxMDAlOyB9IC5zdHJpa2UtcHJpY2UuLXRoaW46OmJlZm9yZXsgaGVpZ2h0OjFweDsgfSAuc3RyaWtlLXByaWNlOjpiZWZvcmUgeyBiYWNrZ3JvdW5kOm5vbmUgcmVwZWF0IHNjcm9sbCAwIDAgIzAwMDsgfSAuc3RyaWtlLXByaWNlLWJsYWNrOjpiZWZvcmUgeyBiYWNrZ3JvdW5kOm5vbmUgcmVwZWF0IHNjcm9sbCAwIDAgYmxhY2s7IH0gLnN0cmlrZS1wcmljZS13aGl0ZTo6YmVmb3JlIHsgYmFja2dyb3VuZDpub25lIHJlcGVhdCBzY3JvbGwgMCAwIHdoaXRlOyB9IC5ibHVyLXByaWNlIHsgLXdlYmtpdC1maWx0ZXI6Ymx1cigwLjE1ZW0pOyAtbW96LWZpbHRlcjpibHVyKDAuMTVlbSk7IC1tcy1maWx0ZXI6Ymx1cigwLjE1ZW0pOyAtby1maWx0ZXI6Ymx1cigwLjE1ZW0pOyBmaWx0ZXI6dXJsKCJkYXRhOmltYWdlL3N2Zyt4bWw7dXRmOCw8c3ZnIGhlaWdodD0nMCcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJz48ZmlsdGVyIGlkPSdzdmdCbHVyJyB4PSctNSUnIHk9Jy01JScgd2lkdGg9JzExMCUnIGhlaWdodD0nMTEwJSc+PGZlR2F1c3NpYW5CbHVyIGluPSdTb3VyY2VHcmFwaGljJyBzdGREZXZpYXRpb249JzUnLz4jc3ZnQmx1ciIpOyBmaWx0ZXI6cHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkJsdXIoUGl4ZWxSYWRpdXM9JzUnKTsgZmlsdGVyOmJsdXIoMC4xNWVtKTsgfSAubGVmdF9ib3h7IGJhY2tncm91bmQtY29sb3I6cmdiKDI1NSwyNTUsMjU1KTsgLW1zLWZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT0xMDApOyBiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsMSk7IG1hcmdpbi10b3A6MTBweCA7IHBhZGRpbmc6MTBweCAwIDEwcHg7IGZsb2F0OmxlZnQ7IGhlaWdodDphdXRvOyBib3JkZXItcmFkaXVzOjVweDsgYm94LXNoYWRvdzpub25lOyB9IC5idG4tZGVmYXVsdCwgLmJ0bi1zbSwgLmJ0bi1sZywuY3VzdG9tZm9ybV9zdWJtaXQsLnN1Ym1pdHsgLW1vei1ib3JkZXItcmFkaXVzOjNweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjNweDsgZGlzcGxheTppbmxpbmUtYmxvY2s7IGN1cnNvcjpwb2ludGVyOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgdGV4dC10cmFuc2Zvcm06dmFyKC0tY2VydC10eHQtdHJhbnNmb3JtLCB2YXIoLS10eHQtdXBwZXIpKTsgfSAuYnRuLWRlZmF1bHR7IGJhY2tncm91bmQtY29sb3I6I2ZmZmZmZjsgfSAuYnRuLWRlZmF1bHQsIC5zdWJtaXQsIC5jdXN0b21mb3JtX3N1Ym1pdCwgaW5wdXRbdHlwZT1idXR0b25dLmJ0bi1kZWZhdWx0LCBpbnB1dFt0eXBlPXN1Ym1pdF0uYnRuLWRlZmF1bHQgeyBwYWRkaW5nOjExcHggMjBweCA5cHggMjBweDsgYm9yZGVyLXJhZGl1czozcHg7IH0gLmJ0bi1zbSwgaW5wdXRbdHlwZT1idXR0b25dLmJ0bi1zbSwgaW5wdXRbdHlwZT1zdWJtaXRdLmJ0bi1zbSB7IGZvbnQtc2l6ZTppbmhlcml0IWltcG9ydGFudDsgcGFkZGluZzo0cHggMTBweCFpbXBvcnRhbnQ7IGJvcmRlci1yYWRpdXM6M3B4IWltcG9ydGFudDsgfSAuYnRuLWxnLCBpbnB1dFt0eXBlPWJ1dHRvbl0uYnRuLWxnLCBpbnB1dFt0eXBlPXN1Ym1pdF0uYnRuLWxnIHsgZm9udC1zaXplOjEuMDYzcmVtIDsgcGFkZGluZzoxMnB4IDUwcHg7IGJvcmRlci1yYWRpdXM6NnB4OyBmb250LXdlaWdodDpib2xkOyB9IC5idG4tZGVmYXVsdDpmb2N1cywgLmN1c3RvbWZvcm1fc3VibWl0OmZvY3VzLCAuYnRuLXNtOmZvY3VzLCAuYnRuLWxnOmZvY3VzLCAjZXhpdF9wb3B1cF95ZXM6Zm9jdXMsICNleGl0X3BvcHVwX25vOmZvY3VzIHsgb3V0bGluZTpub25lOyB9IC5idG4tZGVmYXVsdC5hcHBseS1jcmVkaXQgeyBkaXNwbGF5OmlubGluZS1ibG9jazsgdmVydGljYWwtYWxpZ246dG9wOyB3b3JkLXdyYXA6bm9ybWFsOyB3aWR0aDoxMDBweDsgdGV4dC1hbGlnbjpjZW50ZXI7IHBhZGRpbmc6M3B4IDVweDsgZm9udC1zaXplOjAuNzVyZW0gOyB9IC5idG4tZGVmYXVsdCwgLmN1c3RvbWZvcm1fc3VibWl0LCBpbnB1dFt0eXBlPWJ1dHRvbl0uYnRuLWRlZmF1bHQsIGlucHV0W3R5cGU9c3VibWl0XS5idG4tZGVmYXVsdHsgZm9udC1zaXplOjAuOHJlbTsgfSAuYnRuLWRlZmF1bHQsIC5idG4tc20sLmJ0bi1sZywgLnN1Ym1pdCwgI3NsaWRlaXQgaW5wdXQuc2VuZCwgLmN1c3RvbWZvcm1fc3VibWl0IHsgYmFja2dyb3VuZC1jb2xvcjp2YXIoLS10YWItY29sb3IpOyBib3JkZXItd2lkdGg6MXB4OyBib3JkZXItc3R5bGU6c29saWQ7IGJvcmRlci1jb2xvcjp2YXIoLS10YWItdGV4dC1jb2xvcik7IGNvbG9yOnZhcigtLXRhYi10ZXh0LWNvbG9yKTsgdGV4dC1zaGFkb3c6bm9uZTsgfSAuYnRuLWRlZmF1bHQuYnRuLWJnLXNhbWUgeyBib3JkZXItY29sb3I6I2ZmZmZmZjsgfSAuYnRuLWRlZmF1bHQuYnRuLWJnLXNhbWU6aG92ZXIgeyBib3JkZXItY29sb3I6I2VlZWVlZTsgfSAuYnRuLWRlZmF1bHQ6aG92ZXIsIC5jdXN0b21mb3JtX3N1Ym1pdDpob3ZlciwgLmJ0bi1zbTpob3ZlciwgLmJ0bi1sZzpob3ZlciwgLnN1Ym1pdDpob3ZlciwgI3NsaWRlaXQgaW5wdXQuc2VuZDpob3ZlciB7IGJhY2tncm91bmQtY29sb3I6dmFyKC0tbWVudS1ob3Zlci1iZy1jb2xvcik7IGJvcmRlci13aWR0aDoxcHg7IGJvcmRlci1zdHlsZTpzb2xpZDsgYm9yZGVyLWNvbG9yOnZhcigtLW1lbnUtaG92ZXItdGV4dC1jb2xvcik7IGNvbG9yOnZhcigtLW1lbnUtaG92ZXItdGV4dC1jb2xvcik7IH0gLmJ0bi1kZWZhdWx0LnByb21vY29sb3IsIC5idG4tc20ucHJvbW9jb2xvciwgLmJ0bi1sZy5wcm9tb2NvbG9yIHsgYmFja2dyb3VuZC1jb2xvcjojMzM0Yzk2OyBib3JkZXI6MXB4IHNvbGlkICMzMzRjOTY7IGNvbG9yOiNmZmZmZmY7IH0gLmJ0bi1kZWZhdWx0LnByb21vY29sb3I6aG92ZXIsIC5idG4tc20ucHJvbW9jb2xvcjpob3ZlciwgLmJ0bi1sZy5wcm9tb2NvbG9yOmhvdmVyeyBiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmY7IGNvbG9yOiMzMzRjOTY7IH0gLmJ0bi1kZWZhdWx0LmJsYWNrLCAuYnRuLXNtLmJsYWNrLCAuYnRuLWxnLmJsYWNrIHsgYmFja2dyb3VuZC1jb2xvciA6IzAwMDAwMDsgYm9yZGVyIDoxcHggc29saWQgIzAwMDAwMDsgY29sb3IgOiNmZmZmZmY7IH0gLmJ0bi1kZWZhdWx0LmJsYWNrLndpdGhib3JkZXIsIC5idG4tc20uYmxhY2sud2l0aGJvcmRlciwgLmJ0bi1sZy5ibGFjay53aXRoYm9yZGVyIHsgYm9yZGVyIDoxcHggc29saWQgI2ZmZmZmZjsgfSAuYnRuLWRlZmF1bHQuYmxhY2s6aG92ZXIsIC5idG4tc20uYmxhY2s6aG92ZXIsIC5idG4tbGcuYmxhY2s6aG92ZXIgeyBiYWNrZ3JvdW5kLWNvbG9yIDojZmZmZmZmOyBjb2xvcjojMDAwMDAwOyB9IC5idG4tZGVmYXVsdC5ubywgLmJ0bi1zbS5ubywgLmJ0bi1sZy5ubyB7IGJhY2tncm91bmQtY29sb3I6I0ZGRjsgYm9yZGVyOjFweCBzb2xpZCAjNTU1OyBjb2xvcjojMDAwOyB9IC5idG4tZGVmYXVsdC5ubzpob3ZlciwgLmJ0bi1zbS5ubzpob3ZlciwgLmJ0bi1sZy5ubzpob3ZlcnsgYmFja2dyb3VuZC1jb2xvcjojNjY2NjY2OyBib3JkZXI6MXB4IHNvbGlkICM2NjY2NjY7IGNvbG9yOiNGRkZGRkY7IH0gLmJ0bi1kZWZhdWx0LmludmVydCwgLmJ0bi1zbS5pbnZlcnQsIC5idG4tbGcuaW52ZXJ0LCAuYnRuLWRlZmF1bHQuaW52ZXJ0LmZsYXQsIC5idG4tc20uaW52ZXJ0LmZsYXQsIC5idG4tbGcuaW52ZXJ0LmZsYXQgeyBiYWNrZ3JvdW5kOiB2YXIoLS10YWItdGV4dC1jb2xvcik7IGJvcmRlcjoxcHggc29saWQgdmFyKC0tdGFiLXRleHQtY29sb3IpOyBjb2xvcjp2YXIoLS10YWItY29sb3IpOyBib3gtc2hhZG93Om5vbmU7IH0gLmJ0bi1kZWZhdWx0LmludmVydDpob3ZlciwgLmJ0bi1zbS5pbnZlcnQ6aG92ZXIsIC5idG4tbGcuaW52ZXJ0OmhvdmVyLCAuYnRuLWRlZmF1bHQuaW52ZXJ0LmZsYXQ6aG92ZXIsIC5idG4tc20uaW52ZXJ0LmZsYXQ6aG92ZXIsIC5idG4tbGcuaW52ZXJ0LmZsYXQ6aG92ZXIgeyBiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXRhYi1jb2xvcik7IGJvcmRlci1jb2xvcjp2YXIoLS10YWItdGV4dC1jb2xvcik7IGNvbG9yOnZhcigtLXRhYi10ZXh0LWNvbG9yKTsgfSAuYnRuLWRlZmF1bHQucmVkLCAuYnRuLXNtLnJlZCwgLmJ0bi1sZy5yZWQgeyBiYWNrZ3JvdW5kOiNmZjMzMzMhaW1wb3J0YW50OyBiYWNrZ3JvdW5kLWNvbG9yOiNmZjMzMzMhaW1wb3J0YW50OyBib3JkZXI6MXB4IHNvbGlkICNmNTFhMWEhaW1wb3J0YW50OyBjb2xvcjojRkZGRkZGIWltcG9ydGFudDsgfSAuYnRuLWRlZmF1bHQucmVkOmhvdmVyLCAuYnRuLXNtLnJlZDpob3ZlciwgLmJ0bi1sZy5yZWQ6aG92ZXJ7IGJhY2tncm91bmQ6IzMzMzMzMyFpbXBvcnRhbnQ7IGJhY2tncm91bmQtY29sb3I6IzMzMzMzMyFpbXBvcnRhbnQ7IGJvcmRlcjoxcHggc29saWQgIzMzMzMzMyFpbXBvcnRhbnQ7IGNvbG9yOiNGRkZGRkYhaW1wb3J0YW50OyB9IC5idG4tZGVmYXVsdC53aGl0ZSwgLmJ0bi1zbS53aGl0ZSwgLmJ0bi1sZy53aGl0ZSB7IGJhY2tncm91bmQ6I2ZmZjsgYm9yZGVyOjFweCBzb2xpZCAjMDAwOyBjb2xvcjojMmMyYzJjOyBib3gtc2hhZG93Om5vbmU7IH0gLmRlYWxlci1zZWxlY3Qtd3JhcHBlciB7IGRpc3BsYXk6Z3JpZDsgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjFmciAxZnI7IGNvbHVtbi1nYXA6MS41cmVtOyByb3ctZ2FwOjAuNXJlbTsgZ3JpZC1hdXRvLWNvbHVtbnM6MC41ZnI7IG1hcmdpbi1ib3R0b206MTBweDsgbWFyZ2luLXRvcDoxNXB4OyB9ICNtaW5pZm9ybSAuZGVhbGVyLXNlbGVjdC13cmFwcGVyeyBtYXJnaW4tbGVmdDoyMHB4OyBtYXJnaW4tcmlnaHQ6MjBweDsgfSAuZGVhbGVyLXNlbGVjdC13cmFwcGVyIC5idG4geyB0ZXh0LXdyYXA6YXV0bzsgdGV4dC1hbGlnbjpsZWZ0OyBwYWRkaW5nLWxlZnQ6MTBweDsgdHJhbnNpdGlvbjowLjJzIGVhc2UtaW4tb3V0OyBmb250LXdlaWdodDpub3JtYWw7IH0gLmRlYWxlci1zZWxlY3Qtd3JhcHBlciAuYnRuLmZvY3VzZWQsIC5kZWFsZXItc2VsZWN0LXdyYXBwZXIgLmJ0bjpmb2N1cyB7IGJhY2tncm91bmQtY29sb3I6dmFyKC0tdGFiLXRleHQtY29sb3IpOyBib3JkZXItd2lkdGg6MXB4OyBib3JkZXItc3R5bGU6c29saWQ7IGJvcmRlci1jb2xvcjp2YXIoLS10YWItY29sb3IpOyBjb2xvcjp2YXIoLS10YWItY29sb3IpOyBib3gtc2hhZG93OjAgNnB4IDEycHggcmdiYSgwLDAsMCwuMTc1KTsgdHJhbnNmb3JtOnRyYW5zbGF0ZVgoMnB4KTsgfSAuYXBwbHktY3JlZGl0IHsgLW1vei1ib3gtc2hhZG93Omluc2V0IDBweCAtM3B4IDdweCAwcHggIzQwNTlhMzsgLXdlYmtpdC1ib3gtc2hhZG93Omluc2V0IDBweCAtM3B4IDdweCAwcHggIzQwNTlhMzsgYm94LXNoYWRvdzppbnNldCAwcHggLTNweCA3cHggMHB4ICM0MDU5YTM7IGJhY2tncm91bmQ6LXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIGxlZnQgdG9wLCBsZWZ0IGJvdHRvbSwgY29sb3Itc3RvcCgwLjA1LCAjNjY3ZmM5KSwgY29sb3Itc3RvcCgxLCAjMzM0Yzk2KSk7IGJhY2tncm91bmQ6LW1vei1saW5lYXItZ3JhZGllbnQodG9wLCAjNjY3ZmM5IDUlLCAjMzM0Yzk2IDEwMCUpOyBiYWNrZ3JvdW5kOi13ZWJraXQtbGluZWFyLWdyYWRpZW50KHRvcCwgIzY2N2ZjOSA1JSwgIzMzNGM5NiAxMDAlKTsgYmFja2dyb3VuZDotby1saW5lYXItZ3JhZGllbnQodG9wLCAjNjY3ZmM5IDUlLCAjMzM0Yzk2IDEwMCUpOyBiYWNrZ3JvdW5kOi1tcy1saW5lYXItZ3JhZGllbnQodG9wLCAjNjY3ZmM5IDUlLCAjMzM0Yzk2IDEwMCUpOyBiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCh0byBib3R0b20sICM2NjdmYzkgNSUsICMzMzRjOTYgMTAwJSk7IGZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuZ3JhZGllbnQoc3RhcnRDb2xvcnN0cj0nI2ZmMzMzMycsIGVuZENvbG9yc3RyPScjREIwMDAwJyxHcmFkaWVudFR5cGU9MCk7IGJhY2tncm91bmQtY29sb3I6IzY2N2ZjOTsgYm9yZGVyOjFweCBzb2xpZCAjNGQ2NmIwOyB9IC5hcHBseS1jcmVkaXQ6aG92ZXIgeyBiYWNrZ3JvdW5kOi13ZWJraXQtZ3JhZGllbnQobGluZWFyLCBsZWZ0IHRvcCwgbGVmdCBib3R0b20sIGNvbG9yLXN0b3AoMC4wNSwgIzY2N2ZjOSksIGNvbG9yLXN0b3AoMSwgIzMzNGM5NikpOyBiYWNrZ3JvdW5kOi1tb3otbGluZWFyLWdyYWRpZW50KHRvcCwgIzMzNGM5NiA1JSwgIzY2N2ZjOSAxMDAlKTsgYmFja2dyb3VuZDotd2Via2l0LWxpbmVhci1ncmFkaWVudCh0b3AsICMzMzRjOTYgNSUsICM2NjdmYzkgMTAwJSk7IGJhY2tncm91bmQ6LW8tbGluZWFyLWdyYWRpZW50KHRvcCwgIzMzNGM5NiA1JSwgIzY2N2ZjOSAxMDAlKTsgYmFja2dyb3VuZDotbXMtbGluZWFyLWdyYWRpZW50KHRvcCwgIzMzNGM5NiA1JSwgIzY2N2ZjOSAxMDAlKTsgYmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCAjMzM0Yzk2IDUlLCAjNjY3ZmM5IDEwMCUpOyBmaWx0ZXI6cHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LmdyYWRpZW50KHN0YXJ0Q29sb3JzdHI9JyNmZjMzMzMnLCBlbmRDb2xvcnN0cj0nI0RCMDAwMCcsR3JhZGllbnRUeXBlPTApOyBiYWNrZ3JvdW5kLWNvbG9yOiM2NjdmYzk7IH0gLm9mZmVyLWJ0bnsgY29sb3I6dmFyKC0tYnRuLXR4dC1jb2wsIHZhcigtLXVzZWQtb2ZmZXItYnRuLXRleHQtY29sb3IsICNmZmYpKTsgYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1idG4tYmctY29sLCB2YXIoLS11c2VkLW9mZmVyLWJ0bi1iZy1jb2xvciwgdmFyKC0tcHJvbW8tY29sb3IpKSk7IH0gOmlzKC5uZXdWZHBBY3Rpb25zLCAudXNlZFZkcEFjdGlvbnMpICp7IGJveC1zaXppbmc6Ym9yZGVyLWJveDsgfSA6aXMoLm5ld1ZkcEFjdGlvbnMsIC51c2VkVmRwQWN0aW9ucykgLnByb21vQlROeyB0ZXh0LWFsaWduOmxlZnQ7IH0gOmlzKC5uZXdWZHBBY3Rpb25zLCAudXNlZFZkcEFjdGlvbnMpIC5wcm9tb0JUTjo6YWZ0ZXJ7IGZvbnQtZmFtaWx5OidGb250IEF3ZXNvbWUgNSBQcm8nLCBzZXJpZjsgZm9udC13ZWlnaHQ6OTAwOyB9IDppcygubmV3VmRwQWN0aW9ucywgLnVzZWRWZHBBY3Rpb25zLCAudXNlZC1kZXRhaWxzLCAubmV3LWRldGFpbHMpIC5wcm9tb0JUTiA+IHNwYW4uZmF7IGRpc3BsYXk6ZmxleDsgd2lkdGg6MS41ZW07IGhlaWdodDoxLjVlbTsgYWxpZ24taXRlbXM6Y2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyOyBjb2xvcjppbmhlcml0OyB9IDppcygubmV3VmRwQWN0aW9ucywgLnVzZWRWZHBBY3Rpb25zKSAuY29tcGxldGVkLnByb21vQlROOjphZnRlcnsgY29udGVudDoiXGYwMGMiOyBjb2xvcjppbmhlcml0OyB9IDppcygubmV3VmRwQWN0aW9ucywgLnVzZWRWZHBBY3Rpb25zKSAuY29tcGxldGVkLnByb21vQlROIHNwYW4uZmF7IGNvbG9yOiMwMDA7IH0gLmdyYXlib3ggLnByb21vQlROLCAudXNlZFZkcEFjdGlvbnMgLnByb21vQlROeyBib3JkZXItcmFkaXVzOjNweCFpbXBvcnRhbnQ7IGp1c3RpZnktY29udGVudDpjZW50ZXI7IHRleHQtYWxpZ246dW5zZXQ7IGxpbmUtaGVpZ2h0OjEuNXJlbTsgfSAuZ3JheWJveCAuYnV0dG9uX3VuZGVyIC5wcm9tb0JUTiBzdGFjay1sYywgLm5ld1ZkcEFjdGlvbnMgLmJ1dHRvbl91bmRlciAucHJvbW9CVE4gc3RhY2stbGMgeyBmbGV4LWdyb3c6MSAhaW1wb3J0YW50OyB0ZXh0LWFsaWduOmNlbnRlciAhaW1wb3J0YW50OyB9IC5tdWx0aWZvcm1fZW1iZWRkZWRfZm9vdGVyIC4tZm9yY2VkLS1hLWNmYTo6YWZ0ZXIgeyBmbGV4OjAgMTsgfSAuZ3JheWJveCAucHJvbW9CVE4uYnRuLWljb25lZHsganVzdGlmeS1jb250ZW50OmZsZXgtc3RhcnQ7IGRpc3BsYXk6ZmxleDsgYWxpZ24taXRlbXM6Y2VudGVyOyBtYXJnaW46YXV0bzsgd2lkdGg6OTUlOyB9IC5ncmF5Ym94IC5wcm9tb0JUTi5idG4tZGVmYXVsdCBzcGFuLmZheyBkaXNwbGF5Om5vbmU7IH0gLmdyYXlib3ggLnByb21vQlROLmJ0bi1pY29uZWQgc3Bhbi5mYXsgZGlzcGxheTpmbGV4OyB9IC5ncmF5Ym94IC5wcm9tb0JUTiBzcGFuLCAudXNlZFZkcEFjdGlvbnMgLnByb21vQlROIHNwYW57IG1hcmdpbi1sZWZ0OnVuc2V0OyBsaW5lLWhlaWdodDoxLjVlbTsgfSAucHJvbW9CVE4uY2hldnJvbi1yaWdodCAuY3RhLWxhYmVsIHsgcGFkZGluZy1yaWdodDoxLjVyZW07IH0gLnByb21vQlROLCAucHJvbW9CVE4gYSwgLmJyb2NodXJlQnRueyBiYWNrZ3JvdW5kOiMzMzRjOTY7IGNvbG9yOiNmZmZmZmY7IHRleHQtc2hhZG93Om5vbmU7IGFuaW1hdGlvbjphbGwgM3M7IGJvcmRlci1jb2xvcjojMzM0Yzk2OyB9IC5wcm9tb0JUTjpob3ZlciwgLnByb21vQlROIGE6aG92ZXJ7IGJhY2tncm91bmQ6IzMzNGM5NjsgY29sb3I6I2ZmZmZmZjsgYm9yZGVyOjFweCBzb2xpZCAjMzM0Yzk2OyB9IC5wcm9tb0JUTjpob3ZlciA+ICogPiAuZmEsIC5wcm9tb0JUTiBhOmhvdmVyID4gKiA+IC5mYSB7IGJhY2tncm91bmQ6I2ZmZmZmZjsgY29sb3I6IzMzNGM5NjsgfSAucHJvbW9CVE4uZ3Jvdzpob3ZlciB7IHRyYW5zZm9ybTpzY2FsZSgxLjEpOyB9IC5wcm9tb0JUTi5ncm93OmhvdmVyLCAucHJvbW9CVE4uZ3Jvdzpob3ZlciA+ICogPiAuZmEsIC5wcm9tb0JUTi5ncm93IGE6aG92ZXIgPiAqID4gLmZhIHsgdHJhbnNpdGlvbjphbGwgMC4zcyBsaW5lYXI7IH0gOm5vdCguY3RhLXRyYWNrLXRwbCkgLnByb21vQlROLnJpcHBsZSB7IHBvc2l0aW9uOnJlbGF0aXZlOyB6LWluZGV4OjE7IG92ZXJmbG93OmhpZGRlbjsgdHJhbnNpdGlvbjoxcyBhbGwgZWFzZTsgfSA6bm90KC5jdGEtdHJhY2stdHBsKSAucHJvbW9CVE4ucmlwcGxlOmJlZm9yZSB7IGNvbnRlbnQgOiIgIjsgcG9zaXRpb24gOmFic29sdXRlOyB6LWluZGV4IDotMTsgYm9yZGVyLXJhZGl1cyA6MTAwcHg7IHdpZHRoIDowJTsgaGVpZ2h0IDoxMjAlOyB0b3AgOjUwJTsgYm90dG9tIDo1MCU7IGxlZnQgOjUwJTsgcmlnaHQgOjUwJTsgdHJhbnNmb3JtIDp0cmFuc2xhdGUoLTUwJSwgLTUwJSk7IHRyYW5zaXRpb24gOmFsbCAwLjZzIGVhc2U7IGJvcmRlcjp1bnNldDsgYmFja2dyb3VuZDojMzM0Yzk2OyB9IDpub3QoLmN0YS10cmFjay10cGwpIC5wcm9tb0JUTi5yaXBwbGU6aG92ZXIgeyBiYWNrZ3JvdW5kOiMzMzRjOTY7IGNvbG9yOnZhcigtLXByb21vLWJ0bi1ob3Zlci10ZXh0LWNvbG9yKTsgYm9yZGVyLWNvbG9yOnZhcigtLXByb21vLWJ0bi1ob3Zlci10ZXh0LWNvbG9yKTs7IH0gOm5vdCguY3RhLXRyYWNrLXRwbCkgLnByb21vQlROLnJpcHBsZTpob3ZlcjpiZWZvcmUgeyB3aWR0aDoxMjAlOyB9IC5wcm9tb0JUTi5yaXBwbGU6aG92ZXIgc3Bhbi5mYXsgY29sb3I6dmFyKC0tcHJvbW8tYnRuLWhvdmVyLXRleHQtY29sb3IpOyB9IC5wcm9tb0Fycm93LC5wcm9tb0NvbG9yeyBjb2xvcjojMzM0Yzk2IWltcG9ydGFudDsgfSAuYnJvY2h1cmVCdG57IGJvcmRlcjpub25lOyBkaXNwbGF5OmJsb2NrOyB0ZXh0LWFsaWduOmNlbnRlcjsgcGFkZGluZzo1cHg7IH0gLnZkcC1idG4geyBib3JkZXItcmFkaXVzOjNweDsgbWFyZ2luLWJvdHRvbToxMHB4OyB0ZXh0LXRyYW5zZm9ybTpub25lOyB0ZXh0LWFsaWduOmNlbnRlcjsgZm9udC1zaXplOjEuMDYzcmVtIDsgcGFkZGluZzo4cHggNXB4OyB3aWR0aDoyMzdweDsgfSBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6NDAwcHgpIHsgLmJ0bi1kZWZhdWx0LCAuY3VzdG9tZm9ybV9zdWJtaXQsIGlucHV0W3R5cGU9YnV0dG9uXS5idG4tZGVmYXVsdCwgaW5wdXRbdHlwZT1zdWJtaXRdLmJ0bi1kZWZhdWx0eyBmb250LXNpemU6aW5oZXJpdDsgfSAuYXBwbHktY3JlZGl0IHsgYmFja2dyb3VuZDojNjY3ZmM5OyBib3JkZXI6MXB4IHNvbGlkICM0ZDY2YjA7IH0gLmFwcGx5LWNyZWRpdDpob3ZlciB7IGJhY2tncm91bmQ6eyRBUFBMWV9DUkVESVRfQlROX0NPTE9SX0VOREhPVkVSQ09MT1J9OyB9IH0gLmJnX2JsdWV7IGJhY2tncm91bmQtY29sb3I6IzA2ODhmYSFpbXBvcnRhbnQ7IGNvbG9yOiNmZmY7IH0gLmJnX3JlZHsgYmFja2dyb3VuZC1jb2xvcjojZmYwMDAwIWltcG9ydGFudDsgY29sb3I6I2ZmZjsgfSAuYmdfZ3JlZW57IGJhY2tncm91bmQtY29sb3I6IzY4YTU0YiFpbXBvcnRhbnQ7IGNvbG9yOiNmZmY7IH0gLmJnX2JsYWNreyBiYWNrZ3JvdW5kLWNvbG9yOiMwMDAwMDAhaW1wb3J0YW50OyBjb2xvcjojZmZmOyB9IC5iZ19ncmF5eyBiYWNrZ3JvdW5kLWNvbG9yOiM3OTc5NzkhaW1wb3J0YW50OyBjb2xvcjojZmZmOyB9IC5iZ19ibHVlIGEsLmJnX3JlZCBhLC5iZ19ncmVlbiBhLC5iZ19ibGFjayBhLC5iZ19ncmF5IGEgeyBjb2xvcjojZmZmOyB9IC5iZ19kZWZhdWx0eyBiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmYhaW1wb3J0YW50OyB9IC5ib3gyN3sgd2lkdGg6MTMxcHg7IGhlaWdodDoyOHB4OyBmbG9hdDpsZWZ0OyBtYXJnaW4tYm90dG9tOjhweDsgfSAuYm94MjcgYXsgd2lkdGg6MTMxcHg7IGhlaWdodDoyOHB4OyBmbG9hdDpsZWZ0OyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL2J1dHRvbjEwX2JnLnBuZykgbGVmdCB0b3AgcmVwZWF0LXggOyBib3JkZXItcmFkaXVzOjNweDsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6I0ZGRkZGRjsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgcGFkZGluZzowOyBsaW5lLWhlaWdodDoyOHB4OyB0ZXh0LWFsaWduOiBjZW50ZXI7IHRleHQtdHJhbnNmb3JtOm5vbmU7IH0gLmJveDI3IGE6aG92ZXJ7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvYnV0dG9uMTBfYmcucG5nKSBsZWZ0IC0zMnB4IHJlcGVhdC14OyBjb2xvcjojRkZGRkZGOyB9IC5ib3gyOHsgd2lkdGg6MTI3cHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBtYXJnaW46MHB4OyBiYWNrZ3JvdW5kOiM2ZjZmNmYgdXJsKC9pbWFnZXMvbGl0ZXJfYmcucG5nKSBsZWZ0IHRvcCByZXBlYXQteDsgYm9yZGVyLXJhZGl1czozcHg7IHBhZGRpbmc6MTBweCAycHggMTBweCAycHg7IG1hcmdpbjowIDBweCAwIDA7IH0gLnRleHQ0NHsgd2lkdGg6MTI3cHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL2xpdGVyX2xpbmUucG5nKSBsZWZ0IGJvdHRvbSByZXBlYXQteDsgYmFja2dyb3VuZC1wb3NpdGlvbjpib3R0b207IHRleHQtYWxpZ246Y2VudGVyOyBwYWRkaW5nLWJvdHRvbTo1cHg7IG1hcmdpbi1ib3R0b206NXB4OyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojRkZGRkZGOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgZm9udC13ZWlnaHQ6bm9ybWFsOyB0ZXh0LWFsaWduOmNlbnRlcjsgdGV4dC10cmFuc2Zvcm06bm9uZTsgbGluZS1oZWlnaHQ6MThweDsgfSAuY29uc3VtcHRpb24tbm90LWF2YWlsYWJsZSA+IC50ZXh0NDQgPiBzcGFuID4gI2NpdHlGdWVsIHsgZGlzcGxheTpub25lOyB9IC5jb25zdW1wdGlvbi1ub3QtYXZhaWxhYmxlID4gLnRleHQ0NCA+IHNwYW4gPiAjaGlnaHdheUZ1ZWwgeyBkaXNwbGF5Om5vbmU7IH0gLnRleHRfc2xpZGUgYSB7IGhlaWdodDozOHB4OyBtYXJnaW4tcmlnaHQ6MC4zZW07IHBhZGRpbmctdG9wOjFweCAhaW1wb3J0YW50OyB9IC50ZXh0X3NsaWRlIGEgPiBiIHsgZGlzcGxheTpibG9jazsgb3ZlcmZsb3c6aGlkZGVuICFpbXBvcnRhbnQ7IHBvc2l0aW9uOnJlbGF0aXZlOyBoZWlnaHQ6MjVweDsgd2lkdGg6MTAwJTsgfSAudGV4dF9zbGlkZSBhID4gYiA+IG0xIHsgZGlzcGxheTppbmxpbmUtYmxvY2s7IHBvc2l0aW9uOnJlbGF0aXZlOyB3aGl0ZS1zcGFjZTpub3dyYXA7IGxpbmUtaGVpZ2h0OjM4cHggIWltcG9ydGFudDsgdG9wOi04cHg7IGxlZnQ6MDsgfSAudGV4dF9zbGlkZS50ZXh0X3NsaWRlXzQgYSA+IGIgPiBtMSB7IGFuaW1hdGlvbjp0ZXh0X3NsaWRlXzQgNHMgZWFzZSA1czsgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDppbmZpbml0ZTsgfSAudGV4dF9zbGlkZS50ZXh0X3NsaWRlXzMgYSA+IGIgPiBtMSB7IGFuaW1hdGlvbjp0ZXh0X3NsaWRlXzMgM3MgZWFzZSA0czsgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDppbmZpbml0ZTsgfSAudGV4dF9zbGlkZS50ZXh0X3NsaWRlXzIgYSA+IGIgPiBtMSB7IGFuaW1hdGlvbjp0ZXh0X3NsaWRlXzIgMnMgZWFzZSAyczsgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDppbmZpbml0ZTsgfSAudGV4dF9zbGlkZS5wcm9tb2NvZGVib3ggeyBwYWRkaW5nOjBweCAwcHg7IG1hcmdpbi1sZWZ0OjBweDsgd2lkdGg6MTAwJTsgbWFyZ2luLXRvcDo5cHg7IH0gQGtleWZyYW1lcyB0ZXh0X3NsaWRlXzQgeyAwJSB7IHRvcDotOHB4OyB9IDI1JSB7IHRvcDotNDZweDsgfSA1MCUgeyB0b3A6LTg0cHg7IH0gNzUlIHsgdG9wOi0xMjJweDsgfSAxMDAlIHsgdG9wOi0xNjBweDsgfSB9IEBrZXlmcmFtZXMgdGV4dF9zbGlkZV8zIHsgMCUgeyB0b3A6LThweDsgfSAzMyUgeyB0b3A6LTQ2cHg7IH0gNjYlIHsgdG9wOi04NHB4OyB9IDEwMCUgeyB0b3A6LTEyMnB4OyB9IH0gQGtleWZyYW1lcyB0ZXh0X3NsaWRlXzIgeyAwJSB7IHRvcDotOHB4OyB9IDUwJSB7IHRvcDotNDZweDsgfSAxMDAlIHsgdG9wOi04NHB4OyB9IH0gLm1hcCB7IHdpZHRoOjEwMCU7IHRleHQtYWxpZ246Y2VudGVyOyBwb3NpdGlvbjpyZWxhdGl2ZTsgfSAubWFwIC53cmFwcGVyeyBwb3NpdGlvbjpzdGF0aWMgIWltcG9ydGFudDsgfSAubWFwX2RlYWxlcl9saXN0IHsgYmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC45KTsgYm94LXNpemluZzpib3JkZXItYm94OyBwb3NpdGlvbjphYnNvbHV0ZTsgdG9wOjA7IHBhZGRpbmc6MCAzMHB4OyB3aWR0aDozMTVweDsgaGVpZ2h0OjEwMCU7IHRleHQtYWxpZ246bGVmdDsgb3ZlcmZsb3cteTphdXRvOyB9IC5tYXBfZGVhbGVyX2xpc3RfaXRlbSB7IGN1cnNvcjpwb2ludGVyOyBwYWRkaW5nOjEzcHggMDsgZm9udC1zaXplOjAuODEzcmVtIDsgfSAubWFwX2RlYWxlcl9saXN0X2l0ZW1fbmFtZSB7IHBvc2l0aW9uOmFic29sdXRlOyB9IC5tYXBfZGVhbGVyX2xpc3RfaXRlbV9uYW1lOmhvdmVyIHsgZm9udC13ZWlnaHQ6NzAwOyB9IC5tYXBfZGVhbGVyX2xpc3RfaXRlbV9uYW1lX2FjdGl2ZSB7IGZvbnQtd2VpZ2h0OjcwMDsgfSAubWFya2VyU3BhbiB7IGhlaWdodDoxOHB4OyB3aWR0aDoyMHB4OyBkaXNwbGF5OmlubGluZS1ibG9jazsgcG9zaXRpb246cmVsYXRpdmU7IGRpc3BsYXk6aW5saW5lLWJsb2NrOyB9IC5tYXJrZXJTcGFuOmJlZm9yZSB7IGNvbnRlbnQ6Jyc7IGhlaWdodDo0cHg7IHdpZHRoOjRweDsgYm9yZGVyOjJweCBzb2xpZCAjMzMzOyBkaXNwbGF5OmJsb2NrOyBwb3NpdGlvbjphYnNvbHV0ZTsgdG9wOjJweDsgbGVmdDowcHg7IHotaW5kZXg6MTsgYmFja2dyb3VuZDojZmZmOyBsaW5lLWhlaWdodDoyNnB4OyBib3JkZXItcmFkaXVzOjQwcHg7IC13ZWJraXQtYm9yZGVyLXJhZGl1czo0MHB4OyAtbW96LWJvcmRlci1yYWRpdXM6NDBweDsgY29sb3I6I2ZmZjsgdGV4dC1hbGlnbjpjZW50ZXI7IH0gLm1hcmtlclNwYW46YWZ0ZXIgeyBjb250ZW50OicnOyBoZWlnaHQ6MHB4OyB3aWR0aDowcHg7IGRpc3BsYXk6YmxvY2s7IHBvc2l0aW9uOmFic29sdXRlOyBib3R0b206MnB4OyBsZWZ0OjJweDsgYm9yZGVyOjEwcHggdHJhbnNwYXJlbnQgc29saWQ7IGJvcmRlci10b3AtY29sb3I6IzMzMzsgYm9yZGVyLXdpZHRoOjdweCAycHggMHB4IDJweDsgfSAubWFwX29wZW5faG91cnMgeyBiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjkpOyBib3gtc2l6aW5nOmJvcmRlci1ib3g7IHBvc2l0aW9uOmFic29sdXRlOyB0b3A6MDsgd2lkdGg6NDAwcHg7IGhlaWdodDoxMDAlOyB0ZXh0LWFsaWduOmxlZnQ7IH0gLm9wZW5faG91cnNfY29udGFpbmVyIHsgYmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC45KTsgYm94LXNpemluZzpib3JkZXItYm94OyB0ZXh0LWFsaWduOmxlZnQ7IH0gLm1hcF9vcGVuX2hvdXJzIC5tYXBfb3Blbl9ob3Vycy0tdGl0bGUsIC5vcGVuX2hvdXJzX2NvbnRhaW5lciBoMiwgLm9wZW5faG91cnNfY29udGFpbmVyIHNwYW4uaDItYWx0IHsgZm9udC1zaXplOjEuNWVtOyBmb250LXdlaWdodDpib2xkOyBwYWRkaW5nLWxlZnQ6MTVweDsgbWFyZ2luLXRvcDoyMHB4OyBtYXJnaW4tYm90dG9tOjEwcHg7IGNvbG9yOmluaGVyaXQ7IH0gLm1hcF9vcGVuX2hvdXJzIHVsLCAub3Blbl9ob3Vyc19jb250YWluZXIgdWwgeyBwYWRkaW5nOjAgMDsgfSAubWFwX29wZW5faG91cnMgdWwgbGksIC5vcGVuX2hvdXJzX2NvbnRhaW5lciB1bCBsaSB7IGxpc3Qtc3R5bGU6bm9uZTsgY3Vyc29yOnBvaW50ZXI7IGN1cnNvcjpoYW5kOyBib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZjNmM2YzOyB9IC5tYXBfb3Blbl9ob3Vyc19leHBhbmR7IHBhZGRpbmc6NnB4IDMwcHggOHB4IDE1cHg7IGRpc3BsYXk6YmxvY2s7IH0gLmV4cGFuZGFibGVfY29udGVudHsgcGFkZGluZzowcHggMTZweCA1cHggMTZweDsgZm9udC1zaXplOjAuODc1cmVtIDsgbGluZS1oZWlnaHQ6MS40Mjg1NzE0MzsgfSAuZXhwYW5kYWJsZV9jb250ZW50IGRpdiwgLmV4cGFuZGFibGVfY29udGVudF9tdWx0aWxvY2F0aW9uIGRpdiB7IGRpc3BsYXkgOmZsZXg7IGZsZXgtZGlyZWN0aW9uIDpyb3c7IH0gLmV4cGFuZGFibGVfY29udGVudCA+IGRpdiA+IHNwYW46Zmlyc3Qtb2YtdHlwZSwgLmV4cGFuZGFibGVfY29udGVudF9tdWx0aWxvY2F0aW9uIGRpdiBzcGFuOmZpcnN0LW9mLXR5cGUgeyB3aWR0aDo0MCU7IH0gLmV4cGFuZGFibGVfY29udGVudF9tdWx0aWxvY2F0aW9ueyBmb250LXNpemU6MC44NzVyZW0gOyBsaW5lLWhlaWdodDoxLjQyODU3MTQzOyBtYXJnaW4tdG9wOjE1cHg7IH0gQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoIDo3NTlweCkgeyAuZXhwYW5kYWJsZV9jb250ZW50LCAuZXhwYW5kYWJsZV9jb250ZW50X211bHRpbG9jYXRpb24geyBmb250LXNpemU6aW5oZXJpdDsgfSB9IC5leHBhbmRhYmxlX2NvbnRlbnRfbXVsdGlsb2NhdGlvbiB0YWJsZXsgbWFyZ2luLXRvcDoxNXB4OyB9IC5tYXBfb3Blbl9ob3Vyc19leHBhbmRfYXJyb3d7IGZsb2F0OnJpZ2h0OyBtYXJnaW4tdG9wOjNweDsgfSAubWFwX29wZW5faG91cnNfZXhwYW5kX2Fycm93LmV4cGFuZGVkeyB0cmFuc2Zvcm06cm90YXRlKDE4MGRlZyk7IH0gLm1hcF9vcGVuX2hvdXJzX21vYmlsZXsgYmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC45KTsgfSAubWFwX29wZW5faG91cnNfbW9iaWxlIC5tYXBfb3Blbl9ob3Vyc19tb2JpbGUtLXRpdGxlIHsgZm9udC1zaXplOnZhcigtLWZzNCk7IHRleHQtYWxpZ246Y2VudGVyOyB9IC5tYXBfb3Blbl9ob3Vyc19tb2JpbGUgdWx7IHBhZGRpbmc6MCAwOyB9IC5tYXBfb3Blbl9ob3Vyc19tb2JpbGUgdWwgbGl7IGxpc3Qtc3R5bGU6bm9uZTsgY3Vyc29yOnBvaW50ZXI7IGJvcmRlci1ib3R0b206MXB4IHNvbGlkICNmM2YzZjM7IH0gLm1haW5fbGVmdF9ib3ggI2Zvb3Rlckdvb2dsZU1hcEhvdXJzQ29udGFpbmVyeyB3aWR0aDo5NjBweDsgfSAudmlkZW9CdG5TbGlkZXIsIC5waG90b0J0blNsaWRlcnsgYm9yZGVyLXJhZGl1czo1MCU7IGJvcmRlcjoxcHggc29saWQgI2ZmZmZmZjsgY29sb3I6I2ZmZmZmZjsgd2lkdGg6NzVweDsgaGVpZ2h0Ojc1cHg7IGJhY2tncm91bmQtY29sb3I6IzJjMmMyYzsgb3BhY2l0eTowLjU7IH0gLnZpZGVvQnRuU2xpZGVyOmhvdmVyLCAucGhvdG9CdG5TbGlkZXI6aG92ZXJ7IGJvcmRlci1yYWRpdXM6NTAlOyBib3JkZXI6MXB4IHNvbGlkICMyYzJjMmM7IHdpZHRoOjc1cHg7IGhlaWdodDo3NXB4OyBiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmY7IG9wYWNpdHk6MC41OyB9IC5waG90b0J0blNsaWRlciAuZmEsIC52aWRlb0J0blNsaWRlciAuZmF7IGNvbG9yOiNmZmZmZmY7IH0gLnBob3RvQnRuU2xpZGVyOmhvdmVyIC5mYSwgLnZpZGVvQnRuU2xpZGVyOmhvdmVyIC5mYXsgY29sb3I6IzJjMmMyYzsgfSAudmlkZW9CdG5TbGlkZXJVc2VkLCAucGhvdG9CdG5TbGlkZXJVc2VkeyBib3JkZXItcmFkaXVzOjUwJTsgYm9yZGVyOjFweCBzb2xpZCAjYjNiM2IzOyBjb2xvcjojYjNiM2IzOyB3aWR0aDo3NXB4OyBoZWlnaHQ6NzVweDsgYmFja2dyb3VuZC1jb2xvcjojZmZmOyBvcGFjaXR5OjAuOTsgfSAudmlkZW9CdG5TbGlkZXJVc2VkOmhvdmVyLCAucGhvdG9CdG5TbGlkZXJVc2VkOmhvdmVyeyBib3JkZXItcmFkaXVzOjUwJTsgYm9yZGVyOjFweCBzb2xpZCAjZmZmOyB3aWR0aDo3NXB4OyBoZWlnaHQ6NzVweDsgYmFja2dyb3VuZC1jb2xvcjojYjNiM2IzOyBvcGFjaXR5OjAuNTsgfSAucGhvdG9CdG5TbGlkZXJVc2VkIC5mYSwgLnZpZGVvQnRuU2xpZGVyVXNlZCAuZmF7IGNvbG9yOiNiM2IzYjM7IH0gLnBob3RvQnRuU2xpZGVyVXNlZDpob3ZlciAuZmEsIC52aWRlb0J0blNsaWRlclVzZWQ6aG92ZXIgLmZheyBjb2xvcjojZmZmOyB9IC52aWRlb3NfcGljdHVyZXNfYnV0dG9uc19jb250YWluZXJ7IGxlZnQ6NXB4OyBib3R0b206ODJweDsgcG9zaXRpb246cmVsYXRpdmU7IHotaW5kZXg6OTk5OyBmbG9hdDpsZWZ0OyBtYXJnaW4tYm90dG9tOi04MHB4OyB9IC4tZGlzcGxheS1ub25leyBkaXNwbGF5Om5vbmU7IH0gI2RlZmF1bHRUb3BCYW5uZXJXcmFweyB0ZXh0LWFsaWduOmNlbnRlcjsgdmVydGljYWwtYWxpZ246bWlkZGxlOyBwYWRkaW5nOjQwcHggMTVweDsgfSAjZGVmYXVsdFRvcEJhbm5lcnsgdGV4dC1hbGlnbjpjZW50ZXI7IHdpZHRoOjEwMCU7IGJvcmRlci1yYWRpdXM6NnB4OyBjdXJzb3I6cG9pbnRlcjsgfSAjZGVmYXVsdFRvcEJhbm5lclRpdGxlLCAjZGVmYXVsdFRvcEJhbm5lclRleHR7IGZvbnQtd2VpZ2h0OmJvbGQ7IH0gI2RlZmF1bHRUb3BCYW5uZXJXcmFwIGRpdi5kZWZhdWx0VG9wQmFubmVyQnRuV3JhcHBlcnsgbWFyZ2luOjMwcHggMCAyMHB4IDA7IHdpZHRoOjEwMCU7IGZsb2F0OmxlZnQ7IH0gI2RlZmF1bHRUb3BCYW5uZXJCdG57IHBhZGRpbmc6MTBweCAzMHB4OyBiYWNrZ3JvdW5kOmJsYWNrOyBib3JkZXI6MnB4IHdoaXRlIHNvbGlkOyBib3JkZXItcmFkaXVzOjNweDsgdGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlOyBmb250LXdlaWdodDpib2xkOyBjb2xvcjojZmZmZmZmOyBib3gtc2hhZG93OjBweCAycHggMTNweCAwcHggIzFiMWIxYjsgfSAjdG9wQmFubmVySW1hZ2UuTkVXQ0FSUyAjZGVmYXVsdFRvcEJhbm5lclRpdGxleyBmb250LXNpemU6My4xMjVyZW0gOyB9ICN0b3BCYW5uZXJJbWFnZS5ORVdDQVJTICNkZWZhdWx0VG9wQmFubmVyVGV4dHsgZm9udC1zaXplOjIuODEzcmVtIDsgfSAjdG9wQmFubmVySW1hZ2UuVVNFRENBUlMgI2RlZmF1bHRUb3BCYW5uZXJUaXRsZXsgZm9udC1zaXplOjMuMTI1cmVtIDsgfSAjdG9wQmFubmVySW1hZ2UuVVNFRENBUlMgI2RlZmF1bHRUb3BCYW5uZXJUZXh0eyBmb250LXNpemU6Mi44MTNyZW0gOyB9ICN0b3BCYW5uZXJJbWFnZTplbXB0eXsgbWFyZ2luOjAgIWltcG9ydGFudDsgcGFkZGluZzowICFpbXBvcnRhbnQ7IH0gI3RvcEJhbm5lckltYWdlLlVTRURDQVJTICNkZWZhdWx0VG9wQmFubmVyV3JhcHsgaGVpZ2h0OjI2NXB4OyBib3gtc2l6aW5nOmJvcmRlci1ib3g7IHBhZGRpbmc6NDBweCAxNXB4OyB9ICN0b3BCYW5uZXJJbWFnZS5ORVdDQVJTICNkZWZhdWx0VG9wQmFubmVyV3JhcHsgaGVpZ2h0OjI2NXB4OyBib3gtc2l6aW5nOmJvcmRlci1ib3g7IHBhZGRpbmc6NDBweCAxNXB4OyB9ICNnb29nbGVfcmV2aWV3c3sgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzY2NjsgfSAjZ29vZ2xlX3Jldmlld3MgLnJldmlldy1pdGVtIC5yZXZpZXctc3RhcnMgdWwgeyBkaXNwbGF5OmlubGluZS1ibG9jazsgbGlzdC1zdHlsZTpub25lOyBwYWRkaW5nOjA7IH0gI2dvb2dsZV9yZXZpZXdzIC5yZXZpZXctaXRlbSAucmV2aWV3LXN0YXJzIHVsIGxpIHsgZmxvYXQ6bGVmdDsgbWFyZ2luLXJpZ2h0OjVweDsgd2lkdGg6aW5pdGlhbCAhaW1wb3J0YW50OyBwYWRkaW5nOmluaXRpYWw7IH0gI2dvb2dsZV9yZXZpZXdzIC5yZXZpZXctaXRlbSAucmV2aWV3LXN0YXJzIHVsIGxpIGkgeyBjb2xvcjojRTRCMjQ4OyBmb250LXN0eWxlOm5vcm1hbDsgZm9udC1zaXplOjAuOTM4cmVtIDsgfSAjZ29vZ2xlX3Jldmlld3MgLnJldmlldy1pdGVtIC5yZXZpZXctc3RhcnMgdWwgbGkgaS5pbmFjdGl2ZSB7IGNvbG9yOiNjNmM2YzY7IH0gI2dvb2dsZV9yZXZpZXdzIC5yZXZpZXctaXRlbSAucmV2aWV3LXN0YXI6YWZ0ZXIgeyBjb250ZW50OiJcMjYwNSI7IH0gI2Vhc3ktZ3BsYWNlcy1yZXZpZXdzLWJ1dHsgZm9udC13ZWlnaHQ6Ym9sZDsgcGFkZGluZzo1cHggOHB4OyBoZWlnaHQ6MjdweDsgbGluZS1oZWlnaHQ6MjdweDsgfSAucmV2aWV3LWF1dGhvcnsgdGV4dC10cmFuc2Zvcm06Y2FwaXRhbGl6ZTsgfSAjZWFzeS1ncGxhY2VzLXJldmlld3MtYnV0LmRlZmF1bHR7IGNvbG9yOiM0NDQ7IGJhY2tncm91bmQtY29sb3I6I2Y1ZjVmNTsgYmFja2dyb3VuZC1pbWFnZTotbW96LWxpbmVhci1ncmFkaWVudChjZW50ZXIgdG9wICwgI2Y1ZjVmNSwgI2YxZjFmMSk7IGJvcmRlcjoxcHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjEpOyB9ICNlYXN5LWdwbGFjZXMtcmV2aWV3cy1idXQucmVkeyBjb2xvcjojZmZmOyBiYWNrZ3JvdW5kLWNvbG9yOiNmNWY1ZjU7IGJhY2tncm91bmQtaW1hZ2U6LW1vei1saW5lYXItZ3JhZGllbnQoY2VudGVyIHRvcCAsICNERDRCMzksICNEMTQ4MzYpOyBib3JkZXI6MXB4IHNvbGlkICNEMTQ4MzY7IH0gI2Vhc3ktZ3BsYWNlcy1yZXZpZXdzLWJ1dC5ibHVleyBjb2xvcjojZmZmOyBiYWNrZ3JvdW5kLWNvbG9yOiM0RDkwRkU7IGJhY2tncm91bmQtaW1hZ2U6LW1vei1saW5lYXItZ3JhZGllbnQoY2VudGVyIHRvcCAsICM0RDkwRkUsICM0Nzg3RUQpOyBib3JkZXI6MXB4IHNvbGlkICMzMDc5RUQ7IH0gLmVtYmVkLWNvbnRhaW5lci15b3V0dWJlIGlmcmFtZSwgLmVtYmVkLWNvbnRhaW5lci15b3V0dWJlIG9iamVjdCwgLmVtYmVkLWNvbnRhaW5lci15b3V0dWJlIGVtYmVkIHsgcG9zaXRpb246YWJzb2x1dGU7IHRvcDowOyBsZWZ0OjA7IHdpZHRoOjEwMCU7IGhlaWdodDoxMDAlOyB9IC5lbWJlZC1jb250YWluZXIteW91dHViZTJ7IHBvc2l0aW9uOnJlbGF0aXZlOyBwYWRkaW5nLWJvdHRvbTo1Ni4yNSU7IGhlaWdodDowOyBvdmVyZmxvdzpoaWRkZW47IG1heC13aWR0aDoxMDAlOyB9IC5lbWJlZC1jb250YWluZXIteW91dHViZTIgaWZyYW1lLCAuZW1iZWQtY29udGFpbmVyLXlvdXR1YmUyIG9iamVjdCwgLmVtYmVkLWNvbnRhaW5lci15b3V0dWJlMiBlbWJlZCB7IHBvc2l0aW9uOmFic29sdXRlOyB0b3A6MDsgbGVmdDowOyB3aWR0aDoxMDAlOyBoZWlnaHQ6MTAwJTsgfSAjc2VhcmNoQ3JpdGVyaWFXOjphZnRlciwgI2FjdGlvbkJveEJ0bjo6YWZ0ZXIsICNsaW5rQ29udGFpbmVyOjphZnRlcnsgY29udGVudDonJzsgaGVpZ2h0OjFweDsgZGlzcGxheTppbmxpbmUtYmxvY2s7IG1hcmdpbi1ib3R0b206JzE1cHgnOyB9ICNzZWFyY2hDcml0ZXJpYVc6OmFmdGVyLCAjYWN0aW9uQm94QnRuOjphZnRlciwgI2xpbmtDb250YWluZXI6OmFmdGVyeyBiYWNrZ3JvdW5kOiNhYWE7IHdpZHRoOjI4MHB4OyB9IC5iYW5uZXJQb3B1cENsb3NleyBjb2xvcjojYWFhOyB9IC5zZWVWaWRlb0J0bjF7IGJhY2tncm91bmQtY29sb3I6IzAwMCAhaW1wb3J0YW50OyBib3JkZXI6MXB4IHNvbGlkICNmZmYgIWltcG9ydGFudDsgY29sb3I6I2ZmZiAhaW1wb3J0YW50OyB9IC5zZWVWaWRlb0J0bjE6aG92ZXJ7IGJhY2tncm91bmQtY29sb3I6I2ZmZiAhaW1wb3J0YW50OyBib3JkZXI6MXB4IHNvbGlkICMwMDAgIWltcG9ydGFudDsgY29sb3I6IzJjMmMyYyAhaW1wb3J0YW50OyB9ICNib3R0b21MZWZ0QmFubmVySW1hZ2V7IG1hcmdpbjoxMHB4IDBweCAwcHg7IGZsb2F0OmxlZnQ7IHdpZHRoOjEwMCU7IH0gI2RlZmF1bHRCb3R0b21MZWZ0QmFubmVyeyB0ZXh0LWFsaWduOmNlbnRlcjsgd2lkdGg6MTAwJTsgYm9yZGVyLXJhZGl1czo2cHg7IGN1cnNvcjpwb2ludGVyOyB9ICNkZWZhdWx0Qm90dG9tTGVmdEJhbm5lcldyYXB7IHRleHQtYWxpZ246Y2VudGVyOyB2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7IHBhZGRpbmc6MTVweDsgfSAjZGVmYXVsdEJvdHRvbUxlZnRCYW5uZXJUaXRsZXsgZm9udC13ZWlnaHQ6Ym9sZDsgZm9udC1zaXplOjIuMTg4cmVtIDsgfSAjZGVmYXVsdEJvdHRvbUxlZnRCYW5uZXJUZXh0eyBmb250LXdlaWdodDpib2xkOyBmb250LXNpemU6MS45MzhyZW0gOyB9ICNkZWZhdWx0Qm90dG9tTGVmdEJhbm5lcldyYXAgZGl2LmRlZmF1bHRCb3R0b21MZWZ0QmFubmVyQnRuV3JhcHBlcnsgbWFyZ2luOjIwcHggMCAxMHB4IDA7IHdpZHRoOjEwMCU7IGZsb2F0OmxlZnQ7IH0gI2RlZmF1bHRCb3R0b21MZWZ0QmFubmVyQnRueyBwYWRkaW5nOjdweCAyMXB4OyBiYWNrZ3JvdW5kOmJsYWNrOyBib3JkZXI6MnB4IHdoaXRlIHNvbGlkOyBib3JkZXItcmFkaXVzOjNweDsgdGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlOyBmb250LXdlaWdodDpib2xkOyBjb2xvcjojZmZmZmZmOyBib3gtc2hhZG93OjBweCAycHggMTNweCAwcHggIzFiMWIxYjsgZm9udC1zaXplOjcwJTsgfSAubWFpbkRpdi13cmFwcGVyIHsgcGFkZGluZy10b3A6MC4wMXJlbTsgYmFja2dyb3VuZC1jb2xvcjojZmZmZmZmOyB9IC5sYW5ndWFnZUJhciAjc2VydmljZV9hcHBvaW50X2hlYWRlciA+IGEgeyBwYWRkaW5nOjAgMTJweDsgaGVpZ2h0OjI2cHg7IGxpbmUtaGVpZ2h0OjI3cHg7IGJvcmRlci1yYWRpdXM6MDsgfSAjc2VydmljZV9hcHBvaW50X2hlYWRlciA+IGEgeyB0ZXh0LWRlY29yYXRpb246bm9uZTsgYmFja2dyb3VuZC1jb2xvcjojMDAwMDAwOyBiYWNrZ3JvdW5kLWNvbG9yOiMzMzRjOTY7IGNvbG9yOndoaXRlOyBjb2xvcjojZmZmZmZmOyB9ICNzZXJ2aWNlX2FwcG9pbnRfaGVhZGVyID4gYS5idG4geyBmb250LXdlaWdodDpub3JtYWw7IH0gLmxhbmd1YWdlQmFyICNzZXJ2aWNlX2FwcG9pbnRfaGVhZGVyID4gLmJ0bi1kZWZhdWx0OmhvdmVyIHsgYm9yZGVyLWNvbG9yOiMwMDAwMDA7IGJvcmRlci1jb2xvcjojMzM0Yzk2OyB9ICNzZXJ2aWNlX2FwcG9pbnRfaGVhZGVyIC5zaG9ydC1zZXJ2aWNlLWZvcm0geyBkaXNwbGF5Om5vbmU7IGJveC1zaGFkb3c6MCA2cHggMTJweCByZ2JhKDAsIDAsIDAsIC4xNzUpOyBwb3NpdGlvbjphYnNvbHV0ZTsgd2lkdGg6MzUwcHg7IHJpZ2h0OjA7IHBhZGRpbmc6MTVweDsgei1pbmRleDo5OTk5OyBiYWNrZ3JvdW5kLWNvbG9yOndoaXRlOyBoZWlnaHQ6YXV0bzsgdG9wOjIzcHg7IH0gLmxhbmd1YWdlQmFyICNzZXJ2aWNlX2FwcG9pbnRfaGVhZGVyIGRpdjpub3QoW2NsYXNzXSkgeyBmbG9hdDppbml0aWFsOyB3aWR0aDoxMDAlOyBtYXJnaW4tcmlnaHQ6MDsgdGV4dC1hbGlnbjppbml0aWFsOyB9ICNzZXJ2aWNlX2FwcG9pbnRfaGVhZGVyOmhvdmVyIC5zaG9ydC1zZXJ2aWNlLWZvcm0geyBkaXNwbGF5OmJsb2NrOyB9ICNzZXJ2aWNlX2FwcG9pbnRfaGVhZGVyIHsgcG9zaXRpb246cmVsYXRpdmU7IH0gI3NlcnZpY2VfYXBwb2ludF9oZWFkZXIuaXNPcGVuIC5zaG9ydC1zZXJ2aWNlLWZvcm0geyBkaXNwbGF5OmJsb2NrOyB9IC5sYW5ndWFnZUJhciAjc2VydmljZV9hcHBvaW50X2hlYWRlciAubWFpbHdpZGdldC0tZm9ybS1yb3csIC5sYW5ndWFnZUJhciAjc2VydmljZV9hcHBvaW50X2hlYWRlciAubWFpbHdpZGdldC0tZm9ybS1yb3cgZGl2IHsgbWFyZ2luLXJpZ2h0OmluaGVyaXQ7IHdpZHRoOjEwMCUgIWltcG9ydGFudDsgZmxvYXQ6bm9uZTsgfSAubGFuZ3VhZ2VCYXIgI3NlcnZpY2VfYXBwb2ludF9oZWFkZXIgLm1haWx3aWRnZXQtLWZvcm0tcm93IHRhYmxlIHRleHRhcmVhIHsgd2lkdGg6Y2FsYygxMDAlICsgMnB4KSAhaW1wb3J0YW50OyB9ICN1c2VkXzQwNF9tZXNzYWdlIHsgdGV4dC1hbGlnbjpjZW50ZXI7IHBhZGRpbmc6MzBweDsgYm9yZGVyOjFweCBzb2xpZCAjZjAwOyBtYXJnaW46MCAwIDIwcHggMDsgfSAuYXVkaS10aXRsZSBoMiB7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgfSAuYXVkaS1jb2xvciB7IGNvbG9yOiNiYjBhMzA7IGZvbnQtd2VpZ2h0OmJvbGQ7IH0gZGl2I3NvY2lhbF9tZWRpYV9pY29uc19kaXYgeyBmb250LXNpemU6aW5oZXJpdDsgfSBhLnNvY2lhbC1saW5rIHsgLS1mczp2YXIoLS1mczYpOyAtLXR4dC1jb2xvcjojMDAwMDAwOyB9ICNzb2NpYWxfbWVkaWFfaWNvbnNfZGl2IC5zb2NpYWwtbGlua1tkYXRhLXRvb2x0aXA9J1lvdXR1YmUnXSAuc29jaWFsLWljb25zIHsgbWFyZ2luLXJpZ2h0OjNweDsgfSAucGF5cGFsX2J1dHRvbl9odG1sIHRhYmxleyBtYXJnaW4tbGVmdDphdXRvOyBtYXJnaW4tcmlnaHQ6YXV0bzsgYmFja2dyb3VuZC1jb2xvcjpibGFjazsgY29sb3I6d2hpdGU7IHdpZHRoOjEwMCU7IHBhZGRpbmc6MCAwIDEwcHggMDsgYm9yZGVyLXJhZGl1czozcHggM3B4IDAgMDsgdGV4dC1hbGlnbjpjZW50ZXI7IH0gLnBheXBhbF9idXR0b25faHRtbCB0YWJsZSB0cjpmaXJzdC1jaGlsZHsgZm9udC1zaXplOjEuMTI1cmVtIDsgaGVpZ2h0OjQwcHg7IH0gLnBheXBhbF9idXR0b25faHRtbCB0YWJsZSBzZWxlY3R7IGJvcmRlci1yYWRpdXM6NXB4OyB3aWR0aDoyMDBweDsgaGVpZ2h0OjM1cHg7IGJhY2tncm91bmQtY29sb3I6d2hpdGU7IH0gLnBheXBhbF9idXR0b25faHRtbCBpbnB1dFt0eXBlPSJpbWFnZSJdW25hbWU9InN1Ym1pdCJdeyB3aWR0aDoxMDAlOyBib3JkZXI6bm9uZTsgcGFkZGluZzowOyB9IEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDo0MDBweCkgeyAucGF5cGFsX2J1dHRvbl9odG1seyB3aWR0aDo5MCU7IG1hcmdpbjowIGF1dG87IH0gfSAjbXVsdGktYWRkcmVzcy1zdWJtaXNzaW9uIHsgei1pbmRleDoxMDAwMDAwMDAyMTsgfSAjbXVsdGktYWRkcmVzcy1zdWJtaXNzaW9uLmRlc2t0b3AgeyB0ZXh0LWFsaWduOmNlbnRlcjsgfSAjbXVsdGktYWRkcmVzcy1zdWJtaXNzaW9uLmRlc2t0b3Agc2VsZWN0IHsgbWF4LXdpZHRoOjMwMHB4OyBtYXJnaW46MCBhdXRvOyB9ICNtdWx0aS1hZGRyZXNzLXN1Ym1pc3Npb24uc21hbGwgeyBwYWRkaW5nOjIwcHggMTBweDsgfSAjbXVsdGktYWRkcmVzcy1zdWJtaXNzaW9uIGxhYmVsIHsgZGlzcGxheTpibG9jazsgbWFyZ2luLWJvdHRvbTo1cHg7IGZvbnQtd2VpZ2h0OmJvbGQ7IH0gI211bHRpLWFkZHJlc3Mtc3VibWlzc2lvbiAjbXV0bGlBZGRyZXNzU3VibWl0IHsgbWFyZ2luOjAgYXV0bzsgbWFyZ2luLXRvcDo4cHg7IGRpc3BsYXk6dGFibGU7IH0gI211bHRpLWFkZHJlc3Mtc3VibWlzc2lvbiAjbXVsdGktZGVhbGVyLW1hcCB7IGhlaWdodDo1MjBweDsgbWFyZ2luLWJvdHRvbToxMnB4OyB9ICNtdWx0aS1hZGRyZXNzLXN1Ym1pc3Npb24ucmV2ZWFsLW1vZGFsIHNwYW4geyBmb250LXNpemU6aW5oZXJpdDsgfSAudmFsaWRpdHktZXJyb25lb3VzIHsgYm9yZGVyOjFweCBzb2xpZCAjZGMzNTQ1OyBiYWNrZ3JvdW5kLWNvbG9yOiNmYWQ2ZGMhaW1wb3J0YW50OyB9IC5ib3g0LnZhbGlkaXR5LWVycm9uZW91cywgLmJveDUudmFsaWRpdHktZXJyb25lb3VzIHsgd2lkdGg6MjYzcHg7IH0gLmZvcm0tY29udHJvbCB7IGRpc3BsYXk6YmxvY2s7IHdpZHRoOjEwMCU7IGhlaWdodDozNHB4OyBwYWRkaW5nOjZweCAxMnB4OyBmb250LXNpemU6MC44NzVyZW0gOyBsaW5lLWhlaWdodDoxLjQyODU3MTQzOyBjb2xvcjojNTU1OyBiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7IGJhY2tncm91bmQtaW1hZ2U6bm9uZTsgYm9yZGVyOjFweCBzb2xpZCAjY2NjOyBib3JkZXItcmFkaXVzOjRweDsgLXdlYmtpdC1ib3gtc2hhZG93Omluc2V0IDAgMXB4IDFweCByZ2JhKDAsMCwwLC4wNzUpOyBib3gtc2hhZG93Omluc2V0IDAgMXB4IDFweCByZ2JhKDAsMCwwLC4wNzUpOyAtd2Via2l0LXRyYW5zaXRpb246Ym9yZGVyLWNvbG9yIGVhc2UtaW4tb3V0IC4xNXMsYm94LXNoYWRvdyBlYXNlLWluLW91dCAuMTVzOyAtby10cmFuc2l0aW9uOmJvcmRlci1jb2xvciBlYXNlLWluLW91dCAuMTVzLGJveC1zaGFkb3cgZWFzZS1pbi1vdXQgLjE1czsgLXdlYmtpdC10cmFuc2l0aW9uOmJvcmRlci1jb2xvciBlYXNlLWluLW91dCAuMTVzLC13ZWJraXQtYm94LXNoYWRvdyBlYXNlLWluLW91dCAuMTVzOyB0cmFuc2l0aW9uOmJvcmRlci1jb2xvciBlYXNlLWluLW91dCAuMTVzLC13ZWJraXQtYm94LXNoYWRvdyBlYXNlLWluLW91dCAuMTVzOyB0cmFuc2l0aW9uOmJvcmRlci1jb2xvciBlYXNlLWluLW91dCAuMTVzLGJveC1zaGFkb3cgZWFzZS1pbi1vdXQgLjE1czsgdHJhbnNpdGlvbjpib3JkZXItY29sb3IgZWFzZS1pbi1vdXQgLjE1cyxib3gtc2hhZG93IGVhc2UtaW4tb3V0IC4xNXMsLXdlYmtpdC1ib3gtc2hhZG93IGVhc2UtaW4tb3V0IC4xNXM7IH0gLmJhbm5lci1mb3JtLWJveCB7IHBhZGRpbmc6MzBweDsgYmFja2dyb3VuZC1jb2xvcjo7IGNvbG9yOjsgfSAuYmFubmVyLWZvcm0tdGl0bGUgeyBmb250LXdlaWdodDo2MDA7IGZvbnQtc2l6ZToxOHB0OyB0ZXh0LWFsaWduOmNlbnRlcjsgdGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlOyBtYXJnaW4tYm90dG9tOjVweDsgfSAuYmFubmVyLWZvcm0tc3VidGl0bGUgeyBmb250LXNpemU6MTEuNXB0OyBtYXJnaW4tYm90dG9tOjVweDsgfSAuYmFubmVyLWZvcm0tYm9keSB7IG1hcmdpbi1ib3R0b206MjVweDsgfSAuYmFubmVyLWZvcm0tYm9keSAuZm9ybS1jb250cm9sIHsgaGVpZ2h0OjQxcHg7IG1hcmdpbi1ib3R0b206MTVweDsgLXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7IC1tb3otYm94LXNpemluZzpib3JkZXItYm94OyBib3gtc2l6aW5nOmJvcmRlci1ib3g7IH0gLmJhbm5lci1mb3JtLWJveC1mb290ZXIgeyB0ZXh0LWFsaWduOmNlbnRlcjsgbWFyZ2luLXRvcDoyNXB4OyB9IC5iYW5uZXItZm9ybS1ib3gtaGVhZGVyIHsgdGV4dC1hbGlnbjpjZW50ZXI7IG1hcmdpbi1ib3R0b206MTVweDsgfSAuYnRuLmJhbm5lci1idG4geyBwYWRkaW5nOjZweCAyNHB4OyBmb250LXdlaWdodDpib2xkOyB0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7IGJhY2tncm91bmQtY29sb3I6YmxhY2s7IGNvbG9yOndoaXRlOyBiYWNrZ3JvdW5kLWNvbG9yOjsgY29sb3I6OyB9IC5idG4uYmFubmVyLWJ0bjpob3ZlciB7IGJveC1zaGFkb3c6aW5zZXQgMCAwIDEwMHB4IDEwMHB4IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKTsgfSAuYnRuIHsgZGlzcGxheTppbmxpbmUtYmxvY2s7IHBhZGRpbmc6NnB4IDEycHg7IG1hcmdpbi1ib3R0b206MDsgZm9udC1zaXplOjAuODc1cmVtIDsgZm9udC13ZWlnaHQ6NDAwOyBsaW5lLWhlaWdodDoxLjQyODU3MTQzOyB0ZXh0LWFsaWduOmNlbnRlcjsgd2hpdGUtc3BhY2U6bm93cmFwOyB2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7IC1tcy10b3VjaC1hY3Rpb246bWFuaXB1bGF0aW9uOyB0b3VjaC1hY3Rpb246bWFuaXB1bGF0aW9uOyBjdXJzb3I6cG9pbnRlcjsgLXdlYmtpdC11c2VyLXNlbGVjdDpub25lOyAtbW96LXVzZXItc2VsZWN0Om5vbmU7IC1tcy11c2VyLXNlbGVjdDpub25lOyB1c2VyLXNlbGVjdDpub25lOyBib3JkZXItcmFkaXVzOjRweDsgfSAubGF6eWxvYWR7IHZpc2liaWxpdHk6aGlkZGVuOyB9IC5nYm94IHsgYm9yZGVyLXJhZGl1czo1cHg7IGJveC1zaGFkb3c6MCAwIDEwcHggMXB4IHJnYmEoMCwwLDAsMC4yKTsgfSAucGQgeyB0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lOyBmb250LXNpemU6MC41ZW07IHZlcnRpY2FsLWFsaWduOnN1cGVyOyB9IC51aS1sb2FkZXItYmFja2dyb3VuZHsgd2lkdGg6MTAwJTsgaGVpZ2h0OjEwMCU7IHRvcDowOyBwYWRkaW5nOjA7IG1hcmdpbjowOyBiYWNrZ3JvdW5kOnJnYmEoMCwgMCwgMCwgMC4zKTsgZGlzcGxheTpub25lOyBwb3NpdGlvbjpmaXhlZDsgei1pbmRleDoxMDAwMDAwMDA7IH0gLnVpLWxvYWRlci1iYWNrZ3JvdW5kLWdpZnsgcG9zaXRpb246YWJzb2x1dGU7IHRvcDo1MCU7IGxlZnQ6NTAlOyB9IC5kMmNGb290ZXJDb29raWVEZWxldGVUaXRsZSB7IGZvbnQtc2l6ZToxLjNlbTsgfSAuZDJjRm9vdGVyQ29va2llRGVsZXRlVGV4dCB7IG1hcmdpbi10b3A6MzBweDsgfSAubW9udGhseVBheW1lbnRzUG9wdXBDb250YWluZXJfYnRueyBiYWNrZ3JvdW5kOiMzMzRjOTY7IGNvbG9yOiNmZmZmZmY7IHBhZGRpbmc6MTBweCAyMHB4IDEwcHggMjBweDsgZGlzcGxheTppbmxpbmUtYmxvY2s7IH0gLm1vbnRobHlQYXltZW50c1BvcHVwQ29udGFpbmVyX2J0biBzcGFueyBiYWNrZ3JvdW5kOiMzMzRjOTY7IGNvbG9yOiNmZmZmZmY7IH0gI21vbnRobHlQYXltZW50c1BvcHVwQ29udGFpbmVyX3Ntc3sgYmFja2dyb3VuZDojMzM0Yzk2OyBjb2xvcjojZmZmZmZmOyB9ICNtb250aGx5UGF5bWVudHNQb3B1cENvbnRhaW5lcl9zbXMgc3BhbnsgYmFja2dyb3VuZDojMzM0Yzk2OyBjb2xvcjojZmZmZmZmOyB9IC5ibGFja0NvbG9yQm9sZHsgY29sb3I6IzAwMCFpbXBvcnRhbnQ7IGZvbnQtd2VpZ2h0OjcwMCFpbXBvcnRhbnQ7IGZvbnQtc2l6ZToxcmVtICFpbXBvcnRhbnQ7IH0gLnByaWNlTXNnRGl2Omhhcyg+IC5ldmFwRGlzY2xhaW1lckljb24pLCAuY2FzaFJlYmF0ZVBvc3RUYXhUZXh0Omhhcyg+IC5ldmFwRGlzY2xhaW1lckljb24pLCAucHJpY2VTcGFuOmhhcyg+IC5ldmFwRGlzY2xhaW1lckljb24peyBkaXNwbGF5OmZsZXg7IGFsaWduLWl0ZW1zOmNlbnRlcjsgZ2FwOjNweDsgfSAuZmxleC1jZW50ZXIgLnJlc3BvbnNpdmUtZWRpdG9yIHsgZmxleC1ncm93OjE7IH0gLnJldmVhbC1tb2RhbHsgYm94LXNpemluZzpjb250ZW50LWJveDsgfSAuZ20tc3R5bGUtaXctZCB7IHBhZGRpbmctdG9wOjEycHg7IG1hcmdpbi1yaWdodDotMjRweDsgfSAuZ20tc3R5bGUgLmdtLXN0eWxlLWl3LWMgeyBmbGV4LWRpcmVjdGlvbjpyb3ctcmV2ZXJzZTsgfSAuZ3JlY2FwdGNoYS1iYWRnZSB7IHZpc2liaWxpdHk6aGlkZGVuICFpbXBvcnRhbnQ7IH0gLnJlY2FwdGNoYS1kaXNjbGFpbWVyIHsgZm9udC1zaXplOjAuNjg4cmVtIDsgY29sb3I6Izc3NzsgdGV4dC1hbGlnbjpjZW50ZXI7IG1hcmdpbjo4cHggMDsgbGluZS1oZWlnaHQ6MS4zOyB9Ci8qKiAvY3NzL2ZvbnRzLkFjdXJhQmVzcG9rZS5jc3MgKiovCkBmb250LWZhY2V7Zm9udC1kaXNwbGF5OnN3YXA7Zm9udC1mYW1pbHk6J0FjdXJhQmVzcG9rZSc7Zm9udC13ZWlnaHQ6MzAwO2ZvbnQtc3R5bGU6bm9ybWFsO3NyYzp1cmwoJ2h0dHBzOi8vZm9udHMuZDJjbWVkaWEuY2EvQWN1cmFCZXNwb2tlLUxpZ2h0LndvZmYyJylmb3JtYXQoJ3dvZmYyJyksdXJsKCdodHRwczovL2ZvbnRzLmQyY21lZGlhLmNhL0FjdXJhQmVzcG9rZS1MaWdodC5vdGYnKWZvcm1hdCgnb3BlbnR5cGUnKTt9QGZvbnQtZmFjZXtmb250LWRpc3BsYXk6c3dhcDtmb250LWZhbWlseTonQWN1cmFCZXNwb2tlJztmb250LXdlaWdodDo0MDA7Zm9udC1zdHlsZTpub3JtYWw7c3JjOnVybCgnaHR0cHM6Ly9mb250cy5kMmNtZWRpYS5jYS9BY3VyYUJlc3Bva2UtUmVndWxhci53b2ZmMicpZm9ybWF0KCd3b2ZmMicpLHVybCgnaHR0cHM6Ly9mb250cy5kMmNtZWRpYS5jYS9BY3VyYUJlc3Bva2UtUmVndWxhci5vdGYnKWZvcm1hdCgnb3BlbnR5cGUnKTt9QGZvbnQtZmFjZXtmb250LWRpc3BsYXk6c3dhcDtmb250LWZhbWlseTonQWN1cmFCZXNwb2tlJztmb250LXdlaWdodDo3MDA7Zm9udC1zdHlsZTpub3JtYWw7c3JjOnVybCgnaHR0cHM6Ly9mb250cy5kMmNtZWRpYS5jYS9BY3VyYUJlc3Bva2UtQm9sZC53b2ZmMicpZm9ybWF0KCd3b2ZmMicpLHVybCgnaHR0cHM6Ly9mb250cy5kMmNtZWRpYS5jYS9BY3VyYUJlc3Bva2UtQm9sZC5vdGYnKWZvcm1hdCgnb3BlbnR5cGUnKTt9Ci8qKiAvY3NzL2ZvbnRzLkFjdXJhQmVzcG9rZUJvb2suY3NzICoqLwpAZm9udC1mYWNle2ZvbnQtZGlzcGxheTpzd2FwO2ZvbnQtZmFtaWx5OidBY3VyYUJlc3Bva2VCb29rJztmb250LXdlaWdodDpub3JtYWw7Zm9udC1zdHlsZTpub3JtYWw7c3JjOnVybCgnaHR0cHM6Ly9mb250cy5kMmNtZWRpYS5jYS9BY3VyYUJlc3Bva2UtQm9vay53b2ZmMicpZm9ybWF0KCd3b2ZmMicpLHVybCgnaHR0cHM6Ly9mb250cy5kMmNtZWRpYS5jYS9BY3VyYUJlc3Bva2UtQm9vay5vdGYnKWZvcm1hdCgnb3BlbnR5cGUnKTt9Ci8qKiAvY3NzL2Jhc2UuY3NzICoqLwpzdGFjay1sYywgLnN0YWNrLWxjIHsgLS1zcGFjZTp2YXIoLS1zLCAwLjVyZW0pOyBkaXNwbGF5OmZsZXg7IGZsZXgtZGlyZWN0aW9uOmNvbHVtbjsganVzdGlmeS1jb250ZW50OmZsZXgtc3RhcnQ7IH0gc3RhY2stbGMgPiAqLCAuc3RhY2stbGMgPiAqIHsgbWFyZ2luLXRvcDowOyBtYXJnaW4tYm90dG9tOjA7IH0gc3RhY2stbGMgPiAqICsgKiwgLnN0YWNrLWxjID4gKiArICogeyBtYXJnaW4tdG9wOnZhcigtLXNwYWNlKTsgfSBzdGFjay1sYy4tLXMwID4gKiArICosIC5zdGFjay1sYy4tLXMwID4gKiArICogeyBib3JkZXItd2lkdGg6MDsgYm9yZGVyLXRvcC13aWR0aDp2YXIoLS1ib3JkZXItdGhpbik7IGJvcmRlci1jb2xvcjppbmhlcml0OyB9IC5ib3gtbGMsIGJveC1sYyB7IC0tc3BhY2U6dmFyKC0tcywgMC41cmVtKTsgZGlzcGxheTpibG9jazsgcGFkZGluZzp2YXIoLS1zcGFjZSk7IG91dGxpbmU6dmFyKC0tYm9yZGVyLXRoaW4pIHRyYW5zcGFyZW50OyBvdXRsaW5lLW9mZnNldDpjYWxjKHZhcigtLWJvcmRlci10aGluKSAqIC0xKTsgfSAuYm94LWxjLCBib3gtbGMgKiB7IGNvbG9yOmluaGVyaXQ7IH0gLmJnLWJveHsgY29sb3I6dmFyKC0tYmxhY2spOyBiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXdoaXRlKTsgYm9yZGVyLXdpZHRoOnZhcigtLWJvcmRlci10aGluKTsgfSAuZ2xhc3MtYm94eyBib3JkZXI6bm9uZTsgYmFja2dyb3VuZDpub25lOyBiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50OyBjb2xvcjppbmhlcml0OyB9IC5jdHItYm94LCAuZmxleC1ib3gsIC5mbGV4LWNvbHVtbiwgLmZsZXgtYXJvdW5kLCAuZmxleC1iZXR3ZWVuLCAuZmxleC1ldmVubHksIC5mbGV4LWNlbnRlciwgLmZsZXgtc3RhcnQsIC5mbGV4LWVuZCwgLmZsZXgtYXV0bywgLmZsZXgtZXF1YWx7IGRpc3BsYXk6ZmxleDsgfSAuaW5saW5lLWJveHsgZGlzcGxheTppbmxpbmUtYmxvY2s7IH0gLnNoYWRvdy1ib3h7IGJveC1zaGFkb3c6MCAwIDEwcHggMnB4IHZhcigtLW1pZC1ncmF5KTsgYm9yZGVyLWNvbG9yOnZhcigtLWxpZ2h0LWdyYXkpOyB9IC5mbGV4LWJveDpub3QoOmlzKC5mbGV4LWJldHdlZW4sLmZsZXgtZXZlbmx5LC5mbGV4LWFyb3VuZCkpID4gKiArICp7IG1hcmdpbi1sZWZ0OnZhcigtLXMpOyB9IC5ncm91cC1sYywgZ3JvdXAtbGMgeyAtLXNwYWNlOnZhcigtLXMsIDAuNXJlbSk7IH0gLmdyb3VwLWxjID4gKiwgZ3JvdXAtbGMgPiAqIHsgZGlzcGxheTpmbGV4OyBmbGV4LXdyYXA6d3JhcDsganVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47IGFsaWduLWl0ZW1zOmNlbnRlcjsgbWFyZ2luOmNhbGModmFyKC0tc3BhY2UpIC8gMiAqIC0xKTsgfSAuZ3JvdXAtbGMgPiAqID4gKiwgZ3JvdXAtbGMgPiAqID4gKiB7IG1hcmdpbjpjYWxjKHZhcigtLXNwYWNlKSAvIDIpOyB9IDppcyguc2lkZWJhci1sYyxzaWRlYmFyLWxjKSB7IG92ZXJmbG93OmhpZGRlbjsgfSA6aXMoLnNpZGViYXItbGMsc2lkZWJhci1sYykgPiAqIHsgLS1zcGFjZTp2YXIoLS1zLCAwLjVyZW0pOyBkaXNwbGF5OmZsZXg7IGZsZXgtd3JhcDp3cmFwOyBtYXJnaW46Y2FsYyh2YXIoLS1zcGFjZSkgLyAyICogLTEpOyB9IDppcyguc2lkZWJhci1sYyxzaWRlYmFyLWxjKSA+ICogPiAqIHsgbWFyZ2luOmNhbGModmFyKC0tc3BhY2UpIC8gMik7IGZsZXgtZ3JvdzoxOyB9IDppcyguc2lkZWJhci1sYyxzaWRlYmFyLWxjKSA+ICogPiA6Zmlyc3QtY2hpbGQgeyBmbGV4LWJhc2lzOjA7IGZsZXgtZ3Jvdzo5OTk7IG1pbi13aWR0aDpjYWxjKHZhcigtLXNpZGViYXItYnAsIDUwJSkgLSB2YXIoLS1zcGFjZSkpOyB9IDppcyguc3dpdGNoZXItbGMsc3dpdGNoZXItbGMpID4gKiB7IC0tc3BhY2U6dmFyKC0tcywgMC41cmVtKTsgZGlzcGxheTpmbGV4OyBmbGV4LXdyYXA6d3JhcDsgbWFyZ2luOmNhbGMoKHZhcigtLXNwYWNlKSAvIDIpICogLTEpOyB9IDppcyguc3dpdGNoZXItbGMsc3dpdGNoZXItbGMpID4gKiA+ICogeyBmbGV4LWdyb3c6MTsgZmxleC1iYXNpczpjYWxjKCh2YXIoLS1zd2l0Y2gtYnAsIDMwcmVtKSAtICgxMDAlIC0gdmFyKC0tc3BhY2UpKSkgKiA5OTkpOyBtYXJnaW46Y2FsYyh2YXIoLS1zcGFjZSkgLyAyKTsgfSA6aXMoLnN3aXRjaGVyLWxjLHN3aXRjaGVyLWxjKSA+ICogPiA6bnRoLWxhc3QtY2hpbGQobis1KSwgOmlzKC5zd2l0Y2hlci1sYyxzd2l0Y2hlci1sYykgPiAqID4gOm50aC1sYXN0LWNoaWxkKG4rNSkgfiAqIHsgZmxleC1iYXNpczoxMDAlOyB9IC4tLXMwey0tc3BhY2U6dmFyKC0tczApO30gLi0tcy05ey0tc3BhY2U6dmFyKC0tcy05KTt9IC4tLXMtOHstLXNwYWNlOnZhcigtLXMtOCk7fSAuLS1zLTd7LS1zcGFjZTp2YXIoLS1zLTcpO30gLi0tcy02ey0tc3BhY2U6dmFyKC0tcy02KTt9IC4tLXMtNXstLXNwYWNlOnZhcigtLXMtNSk7fSAuLS1zLTR7LS1zcGFjZTp2YXIoLS1zLTQpO30gLi0tcy0zey0tc3BhY2U6dmFyKC0tcy0zKTt9IC4tLXMtMnstLXNwYWNlOnZhcigtLXMtMik7fSAuLS1zLTF7LS1zcGFjZTp2YXIoLS1zLTEpO30gLi0tc3stLXNwYWNlOnZhcigtLXMpO30gLi0tczF7LS1zcGFjZTp2YXIoLS1zMSk7fSAuLS1zMnstLXNwYWNlOnZhcigtLXMyKTt9IC4tLXMzey0tc3BhY2U6dmFyKC0tczMpO30gLi0tczR7LS1zcGFjZTp2YXIoLS1zNCk7fSAuLS1zNXstLXNwYWNlOnZhcigtLXM1KTt9IC4tLXM2ey0tc3BhY2U6dmFyKC0tczYpO30gLi0tczd7LS1zcGFjZTp2YXIoLS1zNyk7fSAuLS1zOHstLXNwYWNlOnZhcigtLXM4KTt9IC4tLXM5ey0tc3BhY2U6dmFyKC0tczkpO30gLi0tZnMtOXtmb250LXNpemU6dmFyKC0tZnMtOSk7LS1mczp2YXIoLS1mcy05KTt9IC4tLWZzLTh7Zm9udC1zaXplOnZhcigtLWZzLTgpOy0tZnM6dmFyKC0tZnMtOCk7fSAuLS1mcy03e2ZvbnQtc2l6ZTp2YXIoLS1mcy03KTstLWZzOnZhcigtLWZzLTcpO30gLi0tZnMtNntmb250LXNpemU6dmFyKC0tZnMtNik7LS1mczp2YXIoLS1mcy02KTt9IC4tLWZzLTV7Zm9udC1zaXplOnZhcigtLWZzLTUpOy0tZnM6dmFyKC0tZnMtNSk7fSAuLS1mcy00e2ZvbnQtc2l6ZTp2YXIoLS1mcy00KTstLWZzOnZhcigtLWZzLTQpO30gLi0tZnMtM3tmb250LXNpemU6dmFyKC0tZnMtMyk7LS1mczp2YXIoLS1mcy0zKTt9IC4tLWZzLTJ7Zm9udC1zaXplOnZhcigtLWZzLTIpOy0tZnM6dmFyKC0tZnMtMik7fSAuLS1mcy0xe2ZvbnQtc2l6ZTp2YXIoLS1mcy0xKTstLWZzOnZhcigtLWZzLTEpO30gLi0tZnMwe2ZvbnQtc2l6ZTp2YXIoLS1mczApOy0tZnM6dmFyKC0tZnMwKTt9IC4tLWZzMXtmb250LXNpemU6dmFyKC0tZnMxKTstLWZzOnZhcigtLWZzMSk7fSAuLS1mczJ7Zm9udC1zaXplOnZhcigtLWZzMik7LS1mczp2YXIoLS1mczIpO30gLi0tZnMze2ZvbnQtc2l6ZTp2YXIoLS1mczMpOy0tZnM6dmFyKC0tZnMzKTt9IC4tLWZzNHtmb250LXNpemU6dmFyKC0tZnM0KTstLWZzOnZhcigtLWZzNCk7fSAuLS1mczV7Zm9udC1zaXplOnZhcigtLWZzNSk7LS1mczp2YXIoLS1mczUpO30gLi0tZnM2e2ZvbnQtc2l6ZTp2YXIoLS1mczYpOy0tZnM6dmFyKC0tZnM2KTt9IC4tLWZzN3tmb250LXNpemU6dmFyKC0tZnM3KTstLWZzOnZhcigtLWZzNyk7fSAuLS1mczh7Zm9udC1zaXplOnZhcigtLWZzOCk7LS1mczp2YXIoLS1mczgpO30gLi0tZnM5e2ZvbnQtc2l6ZTp2YXIoLS1mczkpOy0tZnM6dmFyKC0tZnM5KTt9IC5zaHJpbmstZ3Jvd3tmbGV4OjEgMTt9IC5mbGV4LXdyYXAge2ZsZXgtd3JhcDp3cmFwO30gLmZsZXgtcmV2ZXJzZSB7ZmxleC1kaXJlY3Rpb246cm93LXJldmVyc2U7fSAuZmxleC1hdXRvID4gKntmbGV4OjEgMSBhdXRvO30gLmZsZXgtZXF1YWwgPiAqe2ZsZXg6MSAxO30gLmFsaWduLWNlbnRlciB7YWxpZ24taXRlbXM6Y2VudGVyO30gLmFsaWduLXN0YXJ0e2FsaWduLWl0ZW1zOmZsZXgtc3RhcnQ7fSAuYWxpZ24tZW5ke2FsaWduLWl0ZW1zOmZsZXgtZW5kO30gLmFsaWduLWJhc2VsaW5le2FsaWduLWl0ZW1zOmJhc2VsaW5lO30gLmZsZXgtY29sdW1uIHtmbGV4LWZsb3c6Y29sdW1uO30gLmZsZXgtcm93IHtmbGV4LWZsb3c6cm93O30gLmZsZXgtYXJvdW5ke2p1c3RpZnktY29udGVudDpzcGFjZS1hcm91bmQ7fSAuZmxleC1iZXR3ZWVue2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO30gLmZsZXgtZXZlbmx5e2p1c3RpZnktY29udGVudDpzcGFjZS1ldmVubHk7fSAuZmxleC1jZW50ZXJ7anVzdGlmeS1jb250ZW50OmNlbnRlcjt9IC5mbGV4LXN0YXJ0e2p1c3RpZnktY29udGVudDpmbGV4LXN0YXJ0O30gLmZsZXgtZW5ke2p1c3RpZnktY29udGVudDpmbGV4LWVuZDt9IC4tcDAge3BhZGRpbmc6MDt9IC4tcHQwIHtwYWRkaW5nLXRvcDowO30gLi1wYjAge3BhZGRpbmctYm90dG9tOjA7fSAuLXB2MCB7cGFkZGluZy10b3A6MDtwYWRkaW5nLWJvdHRvbTowfSAuLXBoMCB7cGFkZGluZy1sZWZ0OjA7cGFkZGluZy1yaWdodDowfSAuLXAge3BhZGRpbmc6dmFyKC0tc3BhY2UpO30gLi1wdntwYWRkaW5nLXRvcDp2YXIoLS1zcGFjZSk7IHBhZGRpbmctYm90dG9tOnZhcigtLXNwYWNlKTt9IC4tcGh7cGFkZGluZy1sZWZ0OnZhcigtLXNwYWNlKTsgcGFkZGluZy1yaWdodDp2YXIoLS1zcGFjZSk7fSAuLXB0e3BhZGRpbmctdG9wOnZhcigtLXNwYWNlKTt9IC4tcGJ7cGFkZGluZy1ib3R0b206dmFyKC0tc3BhY2UpO30gLi1tMCB7bWFyZ2luOjA7fSAuLW10MCB7bWFyZ2luLXRvcDowO30gLi1tYjAge21hcmdpbi1ib3R0b206MDt9IC4tbXYwIHttYXJnaW4tdG9wOjA7bWFyZ2luLWJvdHRvbTowfSAuLW1oMCB7bWFyZ2luLWxlZnQ6MDttYXJnaW4tcmlnaHQ6MH0gLi1tIHttYXJnaW46dmFyKC0tc3BhY2UpO30gLi1tdnttYXJnaW4tdG9wOnZhcigtLXNwYWNlKTsgbWFyZ2luLWJvdHRvbTp2YXIoLS1zcGFjZSk7fSAuLW1oe21hcmdpbi1sZWZ0OnZhcigtLXNwYWNlKTsgbWFyZ2luLXJpZ2h0OnZhcigtLXNwYWNlKTt9IC4tbXR7bWFyZ2luLXRvcDp2YXIoLS1zcGFjZSk7fSAuLW1ie21hcmdpbi1ib3R0b206dmFyKC0tc3BhY2UpO30gLi1iMCB7Ym9yZGVyOm5vbmU7fSAuLWIyIHtib3JkZXItd2lkdGg6MnB4O30gLi1ie2JvcmRlci13aWR0aDoxcHg7fSAuLWJ0e2JvcmRlci10b3Atd2lkdGg6MXB4O30gLi1iYntib3JkZXItYm90dG9tLXdpZHRoOjFweDt9IC4tYnZ7Ym9yZGVyLXRvcC13aWR0aDoxcHg7Ym9yZGVyLWJvdHRvbS13aWR0aDoxcHg7fSAuLWJoe2JvcmRlci1sZWZ0LXdpZHRoOjFweDtib3JkZXItcmlnaHQtd2lkdGg6MXB4O30gLi13LWZ1bGwge3dpZHRoOjEwMHZ3O30gLi13LTEwMCB7d2lkdGg6MTAwJTt9IC4tdy01MCB7d2lkdGg6NTAlO30gLi13LTMzIHt3aWR0aDozMy4zMyU7fSAuLXctMjUge3dpZHRoOjI1JTt9IC4tdy01MHcge3dpZHRoOjUwdnc7fSAuLWZzLXh4c3tmb250LXNpemU6MC4xNXJlbTsgLS1mczowLjE1cmVtO30gLi1mcy14c3tmb250LXNpemU6MC41cmVtOyAtLWZzOjAuNXJlbTt9IC4tZnMtc3tmb250LXNpemU6MC43NXJlbTsgLS1mczowLjc1cmVtO30gLi1mcy1zcntmb250LXNpemU6MC45cmVtOyAtLWZzOjAuOXJlbTt9IC4tZnMtbHJ7Zm9udC1zaXplOjEuMXJlbTsgLS1mczoxLjFyZW07fSAuLWZzLWx7Zm9udC1zaXplOjEuMjVyZW07IC0tZnM6MS4yNXJlbTt9IC4tZnMteGx7Zm9udC1zaXplOjEuNXJlbTsgLS1mczoxLjVyZW07fSAuLWZzLXh4bHtmb250LXNpemU6MnJlbTsgLS1mczoycmVtO30gLi1mcy14eHhse2ZvbnQtc2l6ZToyLjI1cmVtOyAtLWZzOjIuMjVyZW07fSAuLWZ3MSB7Zm9udC13ZWlnaHQ6MTAwO30gLi1mdzIge2ZvbnQtd2VpZ2h0OjIwMDt9IC4tZnczIHtmb250LXdlaWdodDozMDA7fSAuLWZ3NCB7Zm9udC13ZWlnaHQ6NDAwO30gLi1mdzUge2ZvbnQtd2VpZ2h0OjUwMDt9IC4tZnc2IHtmb250LXdlaWdodDo2MDA7fSAuLWZ3NyB7Zm9udC13ZWlnaHQ6NzAwO30gLi1mdzgge2ZvbnQtd2VpZ2h0OjgwMDt9IC4tZnc5IHtmb250LXdlaWdodDo5MDA7fSAuLWJvbGQge2ZvbnQtd2VpZ2h0OmJvbGQ7fSAudHh0LXJlZCB7Y29sb3I6I2NjMDAwMDt9IC50eHQtY2VudGVye3RleHQtYWxpZ246Y2VudGVyO30gLnR4dC1yaWdodHt0ZXh0LWFsaWduOnJpZ2h0O30gLnR4dC1sZWZ0e3RleHQtYWxpZ246bGVmdDt9IC50eHQtdXBwZXJ7dGV4dC10cmFuc2Zvcm06dmFyKC0tY2VydC10eHQtdHJhbnNmb3JtLCB2YXIoLS10eHQtdXBwZXIsIHVwcGVyY2FzZSkpO30gLnR4dC1ub3Rle2ZvbnQtc3R5bGU6aXRhbGljO30gLnR4dC1wYXltZW50IHtjb2xvcjp2YXIoLS1uZXd2ZHAtYmVzdHByaWNlLXRleHQtY29sb3ItcHJpY2UpICFpbXBvcnRhbnQ7fSAuLXBvc3JlbHtwb3NpdGlvbjpyZWxhdGl2ZTt9IC5jZXJ0LXR4dC10cmFuc2Zvcm17dGV4dC10cmFuc2Zvcm06dmFyKC0tY2VydC10eHQtdHJhbnNmb3JtLCBub25lKTt9IFtoaWRkZW5dLCAuaGlkZGVuIHsgZGlzcGxheTpub25lICFpbXBvcnRhbnQ7IH0gLnNrZWxldG9uLXNsaWRlciA+ICp7IGRpc3BsYXk6bm9uZTsgfSAuc2tlbGV0b24tdHh0eyB0ZXh0LWluZGVudDoxMDAlOyB3aGl0ZS1zcGFjZTpub3dyYXA7IG92ZXJmbG93OmhpZGRlbjsgYmFja2dyb3VuZC1jb2xvcjpyZ2JhKDIyMSwgMjIxLCAyMjEsIDAuOCk7IGJvcmRlci1yYWRpdXM6MC41cmVtOyB9IC5za2VsZXRvbi1idG57IHdpZHRoOm1pbigyMHJlbSwxMDAlKTsgaGVpZ2h0OjIuNXJlbTsgYm9yZGVyLXJhZGl1czowLjVyZW07IGJhY2tncm91bmQtY29sb3I6cmdiYSgyMjEsIDIyMSwgMjIxLCAwLjgpOyBtYXJnaW46YXV0bzsgfSAuc2tlbGV0b24tYmxvY2t7IHdpZHRoOjEwMCU7IGhlaWdodDoxMDAlOyBiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjIxLCAyMjEsIDIyMSwgMC44KTsgfSAuc2tlbGV0b24tc2xpZGVyLCAuc2tlbGV0b24tdHh0LCAuc2tlbGV0b24tYnRuLCAuc2tlbGV0b24tYmxvY2sgeyBwb3NpdGlvbjpyZWxhdGl2ZTsgb3ZlcmZsb3c6aGlkZGVuOyBkaXNwbGF5OmJsb2NrOyB9IC5za2VsZXRvbi1zbGlkZXI6OmFmdGVyLCAuc2tlbGV0b24tdHh0OjphZnRlciwgLnNrZWxldG9uLWJ0bjo6YWZ0ZXIsIC5za2VsZXRvbi1ibG9jazo6YWZ0ZXIgeyBjb250ZW50OiIiOyBwb3NpdGlvbjphYnNvbHV0ZTsgdG9wOjA7IHJpZ2h0OjA7IGJvdHRvbTowOyBsZWZ0OjA7IHRyYW5zZm9ybTp0cmFuc2xhdGVYKC0xMDAlKTsgYmFja2dyb3VuZC1pbWFnZTpsaW5lYXItZ3JhZGllbnQoOTBkZWcsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMCkgMCwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjIpIDIwJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUpIDYwJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwKSk7IGFuaW1hdGlvbjpzaGltbWVyIDJzIGluZmluaXRlOyB9IC5za2VsZXRvbi1zbGlkZXIgeyBiYWNrZ3JvdW5kLWltYWdlOnVybCgiZGF0YTppbWFnZS9zdmcreG1sLCUzQ3N2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzAgMCA1MTIgNTEyJyUzRSUzQ3BhdGggZD0nTTQ2NCA0NDhINDhjLTI2LjUxIDAtNDgtMjEuNDktNDgtNDhWMTEyYzAtMjYuNTEgMjEuNDktNDggNDgtNDhoNDE2YzI2LjUxIDAgNDggMjEuNDkgNDggNDh2Mjg4YzAgMjYuNTEtMjEuNDkgNDgtNDggNDh6TTExMiAxMjBjLTMwLjkyOCAwLTU2IDI1LjA3Mi01NiA1NnMyNS4wNzIgNTYgNTYgNTYgNTYtMjUuMDcyIDU2LTU2LTI1LjA3Mi01Ni01Ni01NnpNNjQgMzg0aDM4NFYyNzJsLTg3LjUxNS04Ny41MTVjLTQuNjg2LTQuNjg2LTEyLjI4NC00LjY4Ni0xNi45NzEgMEwyMDggMzIwbC01NS41MTUtNTUuNTE1Yy00LjY4Ni00LjY4Ni0xMi4yODQtNC42ODYtMTYuOTcxIDBMNjQgMzM2djQ4eicgZmlsbD0nJTIzZWVlJy8lM0UlM0Mvc3ZnJTNFIik7IGJhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDsgYmFja2dyb3VuZC1wb3NpdGlvbjpjZW50ZXI7IGJhY2tncm91bmQtY29sb3I6I2NjYzsgb3BhY2l0eTowLjk7IH0gQGtleWZyYW1lcyBzaGltbWVyIHsgMTAwJSB7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoMTAwJSk7fSB9IEBzdXBwb3J0cyAoLXdlYmtpdC10b3VjaC1jYWxsb3V0Om5vbmUpIHsgLnNrZWxldG9uLXNsaWRlcjo6YWZ0ZXIsIC5za2VsZXRvbi10eHQ6OmFmdGVyeyBhbmltYXRpb246bm9uZTsgfSB9IC5jb250ZW50LXNrZWxldG9uIHsgYmFja2dyb3VuZDojZWVlOyBib3JkZXItcmFkaXVzOjAuNXJlbTsgb3ZlcmZsb3c6aGlkZGVuOyB3aWR0aDoxMDAlOyBoZWlnaHQ6MTAwJTsgbWF4LXdpZHRoOjQwMHB4OyBwb3NpdGlvbjpyZWxhdGl2ZTsgfSAuY29udGVudC1za2VsZXRvbi5yZWN0YW5nbGUgeyBhc3BlY3QtcmF0aW86dmFyKC0tcmF0aW8sIDE2LzkpOyB9IC5jb250ZW50LXNrZWxldG9uLnRleHQgeyBoZWlnaHQ6YXV0bzsgcGFkZGluZzoxcmVtOyB9IC5jb250ZW50LXNrZWxldG9uLnRleHQ6OmJlZm9yZSwgLmNvbnRlbnQtc2tlbGV0b24udGV4dDo6YWZ0ZXIgeyBjb250ZW50OiIiOyBkaXNwbGF5OmJsb2NrOyBoZWlnaHQ6MXJlbTsgYmFja2dyb3VuZDojZGRkOyBtYXJnaW4tYm90dG9tOjAuNXJlbTsgYm9yZGVyLXJhZGl1czowLjI1cmVtOyB9IC5jb250ZW50LXNrZWxldG9uLnRleHQ6OmFmdGVyIHsgd2lkdGg6NzAlOyB9IC5jb250ZW50LXNrZWxldG9uLmFjdGl2ZSB7IGJhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KDkwZGVnLCAjZjlmOWY5IDI1JSwgI2RlZGVkZSA1MCUsICNmOWY5ZjkgNzUlKTsgYmFja2dyb3VuZC1zaXplOjIwMCUgMTAwJTsgYW5pbWF0aW9uOnNoaW1tZXIgMnMgaW5maW5pdGUgbGluZWFyOyB9IEBrZXlmcmFtZXMgc2hpbW1lciB7IDAlIHsgYmFja2dyb3VuZC1wb3NpdGlvbjoyMDAlIDA7IH0gMTAwJSB7IGJhY2tncm91bmQtcG9zaXRpb246LTIwMCUgMDsgfSB9IC5jb250ZW50LXNrZWxldG9uLmRlYnVnOjphZnRlciB7IGNvbnRlbnQ6YXR0cihkYXRhLWJsb2NrKSAiIHwgIiBhdHRyKGRhdGEtc291cmNlKSAiIHwgIiBhdHRyKGRhdGEtZ2VuZXJhdGVkLWF0KTsgcG9zaXRpb246YWJzb2x1dGU7IHRvcDo0cHg7IGxlZnQ6NHB4OyByaWdodDo0cHg7IGZvbnQtc2l6ZTowLjdyZW07IGZvbnQtZmFtaWx5Om1vbm9zcGFjZSwgc2Fucy1zZXJpZjsgY29sb3I6I2ZmZjsgYmFja2dyb3VuZDpyZ2JhKDAsMCwwLDAuNik7IHBhZGRpbmc6MnB4IDRweDsgYm9yZGVyLXJhZGl1czo0cHg7IHotaW5kZXg6MTA7IHBvaW50ZXItZXZlbnRzOm5vbmU7IH0gYm9keSB7IHdpZHRoOmF1dG87IG1hcmdpbjowOyBwYWRkaW5nOjA7IGZvbnQtc2l6ZToxcmVtOyBmb250LWZhbWlseTp2YXIoLS1mb250LXRleHQtbW9iKTsgY29sb3I6dmFyKC0tZGVmYXVsdC1ibGFjayk7IGZvbnQtd2VpZ2h0OnZhcigtLWZvbnQtdGV4dC13ZWlnaHQpOyB9IHVsIHsgbGlzdC1zdHlsZTpub25lOyBsaXN0LXN0eWxlLXR5cGU6bm9uZTsgbGlzdC1zdHlsZS1wb3NpdGlvbjppbml0aWFsOyBsaXN0LXN0eWxlLWltYWdlOmluaXRpYWw7IH0gLnJlc3BvbnNpdmUtZWRpdG9yIHVsIHsgbGlzdC1zdHlsZTppbmhlcml0OyBsaXN0LXN0eWxlLXR5cGU6aW5oZXJpdDsgbGlzdC1zdHlsZS1wb3NpdGlvbjppbmhlcml0OyBsaXN0LXN0eWxlLWltYWdlOmluaGVyaXQ7IH0gc3ZnLCBzdmcuaWNvbnsgLS1pY29uLXNpemU6Y2FsYyh2YXIoLS1mcywgdmFyKC0tZnMwKSkgLyB2YXIoLS1yYXRpbykpOyBmaWxsOnZhcigtLXR4dC1jb2xvciwgdmFyKC0tYmxhY2spKTsgd2lkdGg6dmFyKC0taWNvbi1zaXplKTsgaGVpZ2h0OnZhcigtLWljb24tc2l6ZSk7IH0gc3ZnLmF1dGhvcml6ZWQtYmxhY2t7ZmlsbDojMjgyODI4IWltcG9ydGFudDt9IHN2Zy5hdXRob3JpemVkLWJsYWNrLWtpYXtmaWxsOiMwNTE0MUYhaW1wb3J0YW50O30gc3ZnLmF1dGhvcml6ZWQtcmVke2ZpbGw6I0ZGMDAwMCFpbXBvcnRhbnQ7fSBzdmcuYXV0aG9yaXplZC13aGl0ZXtmaWxsOiNGRkZGRkYhaW1wb3J0YW50O30gLmF1dGhvcml6ZWQtcmVkLXdoaXRlLXBsYXktYnRue2JhY2tncm91bmQ6cmFkaWFsLWdyYWRpZW50KCNGRkZGRkYgNTAlLHRyYW5zcGFyZW50IDUwJSk7fSBzdmcub2djb2xvci1mYWNlYm9va3tmaWxsOiM0MjY3QjIhaW1wb3J0YW50O30gc3ZnLm9nY29sb3ItdHdpdHRlcntmaWxsOiMxREExRjIhaW1wb3J0YW50O30gc3ZnLm9nY29sb3IteC10d2l0dGVye2ZpbGw6IzE0MTcxQSFpbXBvcnRhbnQ7fSBzdmcub2djb2xvci14LXR3aXR0ZXItd2hpdGV7ZmlsbDojRkZGRkZGIWltcG9ydGFudDt9IHN2Zy5vZ2NvbG9yLWxpbmtlZGlue2ZpbGw6IzAwNzdCNSFpbXBvcnRhbnQ7fSBzdmcub2djb2xvci1ibG9nZ2Vye2ZpbGw6I0ZGNTcyMiFpbXBvcnRhbnQ7fSBzdmcub2djb2xvci1waW50ZXJlc3R7ZmlsbDojRTYwMDIzIWltcG9ydGFudDt9IHN2Zy5vZ2NvbG9yLXlvdXR1YmV7ZmlsbDojRkYwMDAwIWltcG9ydGFudDsgYmFja2dyb3VuZDpyYWRpYWwtZ3JhZGllbnQoI0ZGRkZGRiA1MCUsdHJhbnNwYXJlbnQgNTAlKTt9IHN2Zy5vZ2NvbG9yLWluc3RhZ3JhbXtmaWxsOiM4MzNBQjQhaW1wb3J0YW50O30gc3ZnLm9nY29sb3ItdGlrdG9re2ZpbGw6I2ZmMDA1MCFpbXBvcnRhbnQ7fSAuZmFjZWJvb2stb2dpY29uLXR3ZWFrc3toZWlnaHQ6MjRweCFpbXBvcnRhbnQ7bWFyZ2luLXRvcDoycHghaW1wb3J0YW50O30gI2Zvb3RlciAuZmFjZWJvb2stb2dpY29uLXR3ZWFrc3toZWlnaHQ6MjNweCFpbXBvcnRhbnQ7bWFyZ2luLXRvcDowcHghaW1wb3J0YW50O30gLmluc3RhZ3JhbS1vZ2ljb24tdHdlYWtze2hlaWdodDoyOHB4IWltcG9ydGFudDttYXJnaW4tdG9wOjBweCFpbXBvcnRhbnQ7fSAjZm9vdGVyIC5pbnN0YWdyYW0tb2dpY29uLXR3ZWFrc3toZWlnaHQ6MjlweCFpbXBvcnRhbnQ7bWFyZ2luLXRvcDotNHB4IWltcG9ydGFudDt9IHN2Zy5jdXN0b21tZWRpYS1jb2xvcnBpY2tlcntmaWxsOnZhcigtLWFkbWluLXNvY2lhbC1jdXN0b20tY29sb3ItcGlja2VyLXRleHQpIWltcG9ydGFudDt9IC5zb2NpYWwtbWVkaWFfX2NvbnRhaW5lciAuYmctYXV0aG9yaXplZC1ibGFja3tiYWNrZ3JvdW5kLWNvbG9yOiMyODI4MjghaW1wb3J0YW50O30gLnNvY2lhbC1tZWRpYV9fY29udGFpbmVyIC5iZy1hdXRob3JpemVkLWJsYWNrLWtpYXtiYWNrZ3JvdW5kLWNvbG9yOiMwNTE0MUYhaW1wb3J0YW50O30gLnNvY2lhbC1tZWRpYV9fY29udGFpbmVyIC5iZy1hdXRob3JpemVkLXJlZHtiYWNrZ3JvdW5kLWNvbG9yOiNGRjAwMDAhaW1wb3J0YW50O30gLnNvY2lhbC1tZWRpYV9fY29udGFpbmVyIC5iZy1hdXRob3JpemVkLXdoaXRle2JhY2tncm91bmQtY29sb3I6I0ZGRkZGRiFpbXBvcnRhbnQ7fSAuc29jaWFsLW1lZGlhX19jb250YWluZXIgLmJnLW9nY29sb3ItZmFjZWJvb2t7YmFja2dyb3VuZC1jb2xvcjojM2E1OTk4IWltcG9ydGFudDt9IC5zb2NpYWwtbWVkaWFfX2NvbnRhaW5lciAuYmctb2djb2xvci10d2l0dGVye2JhY2tncm91bmQtY29sb3I6IzAwYWNlZCFpbXBvcnRhbnQ7fSAuc29jaWFsLW1lZGlhX19jb250YWluZXIgLmJnLW9nY29sb3IteC10d2l0dGVye2JhY2tncm91bmQtY29sb3I6IzE0MTcxQSFpbXBvcnRhbnQ7fSAuc29jaWFsLW1lZGlhX19jb250YWluZXIgLmJnLW9nY29sb3IteC10d2l0dGVyLXdoaXRle2JhY2tncm91bmQtY29sb3I6I0ZGRkZGRiFpbXBvcnRhbnQ7fSAuc29jaWFsLW1lZGlhX19jb250YWluZXIgLmJnLW9nY29sb3ItbGlua2VkaW57YmFja2dyb3VuZC1jb2xvcjojMDA3N0I1IWltcG9ydGFudDt9IC5zb2NpYWwtbWVkaWFfX2NvbnRhaW5lciAuYmctb2djb2xvci1ibG9nZ2Vye2JhY2tncm91bmQtY29sb3I6I0ZGNTcyMiFpbXBvcnRhbnQ7fSAuc29jaWFsLW1lZGlhX19jb250YWluZXIgLmJnLW9nY29sb3ItcGludGVyZXN0e2JhY2tncm91bmQtY29sb3I6I0U2MDAyMyFpbXBvcnRhbnQ7fSAuc29jaWFsLW1lZGlhX19jb250YWluZXIgLmJnLW9nY29sb3IteW91dHViZXtiYWNrZ3JvdW5kLWNvbG9yOiNGRjAwMDAhaW1wb3J0YW50O30gLnNvY2lhbC1tZWRpYV9fY29udGFpbmVyIC5iZy1vZ2NvbG9yLWluc3RhZ3JhbXtiYWNrZ3JvdW5kLWNvbG9yOiNmMjM5OTUhaW1wb3J0YW50O30gLnNvY2lhbC1tZWRpYV9fY29udGFpbmVyIC5iZy1vZ2NvbG9yLXRpa3Rva3tiYWNrZ3JvdW5kLWNvbG9yOiNmZjAwNTAhaW1wb3J0YW50O30gLnNvY2lhbC1tZWRpYV9fY29udGFpbmVyIC5iZy1jdXN0b21tZWRpYS1jb2xvcnBpY2tlcntiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWFkbWluLXNvY2lhbC1jdXN0b20tY29sb3ItcGlja2VyLXRleHQpIWltcG9ydGFudDt9IC5zb2NpYWwtbWVkaWFfX2NvbnRhaW5lciAuYy1hdXRob3JpemVkLWJsYWNre2NvbG9yOiMyODI4MjghaW1wb3J0YW50O30gLnNvY2lhbC1tZWRpYV9fY29udGFpbmVyIC5jLWF1dGhvcml6ZWQtYmxhY2sta2lhe2NvbG9yOiMwNTE0MUYhaW1wb3J0YW50O30gLnNvY2lhbC1tZWRpYV9fY29udGFpbmVyIC5jLWF1dGhvcml6ZWQtcmVke2NvbG9yOiNGRjAwMDAhaW1wb3J0YW50O30gLnNvY2lhbC1tZWRpYV9fY29udGFpbmVyIC5jLWF1dGhvcml6ZWQtd2hpdGV7Y29sb3I6I0ZGRkZGRiFpbXBvcnRhbnQ7fSAuc29jaWFsLW1lZGlhX19jb250YWluZXIgLmMtb2djb2xvci1mYWNlYm9va3tjb2xvcjojM2E1OTk4IWltcG9ydGFudDt9IC5zb2NpYWwtbWVkaWFfX2NvbnRhaW5lciAuYy1vZ2NvbG9yLXR3aXR0ZXJ7Y29sb3I6IzAwYWNlZCFpbXBvcnRhbnQ7fSAuc29jaWFsLW1lZGlhX19jb250YWluZXIgLmMtb2djb2xvci14LXR3aXR0ZXJ7Y29sb3I6IzE0MTcxQSFpbXBvcnRhbnQ7fSAuc29jaWFsLW1lZGlhX19jb250YWluZXIgLmMtb2djb2xvci14LXR3aXR0ZXItd2hpdGV7Y29sb3I6I0ZGRkZGRiFpbXBvcnRhbnQ7fSAuc29jaWFsLW1lZGlhX19jb250YWluZXIgLmMtb2djb2xvci1saW5rZWRpbntjb2xvcjojMDA3N0I1IWltcG9ydGFudDt9IC5zb2NpYWwtbWVkaWFfX2NvbnRhaW5lciAuYy1vZ2NvbG9yLWJsb2dnZXJ7Y29sb3I6I0ZGNTcyMiFpbXBvcnRhbnQ7fSAuc29jaWFsLW1lZGlhX19jb250YWluZXIgLmMtb2djb2xvci1waW50ZXJlc3R7Y29sb3I6I0U2MDAyMyFpbXBvcnRhbnQ7fSAuc29jaWFsLW1lZGlhX19jb250YWluZXIgLmMtb2djb2xvci15b3V0dWJle2NvbG9yOiNGRjAwMDAhaW1wb3J0YW50OyBiYWNrZ3JvdW5kOnJhZGlhbC1ncmFkaWVudCgjRkZGRkZGIDUwJSx0cmFuc3BhcmVudCA1MCUpO30gLnNvY2lhbC1tZWRpYV9fY29udGFpbmVyIC5jLW9nY29sb3ItaW5zdGFncmFte2NvbG9yOiNmMjM5OTUhaW1wb3J0YW50O30gLnNvY2lhbC1tZWRpYV9fY29udGFpbmVyIC5jLW9nY29sb3ItdGlrdG9re2NvbG9yOiNmZjAwNTAhaW1wb3J0YW50O30gLnNvY2lhbC1tZWRpYV9fY29udGFpbmVyIC5jLWN1c3RvbW1lZGlhLWNvbG9ycGlja2Vye2NvbG9yOnZhcigtLWFkbWluLXNvY2lhbC1jdXN0b20tY29sb3ItcGlja2VyLXRleHQpIWltcG9ydGFudDt9IC5ub3RlLWJveHsgZGlzcGxheTpibG9jazsgYm9yZGVyLXJhZGl1czowLjI1cmVtOyB9IC5ub3RlLXN1Y2Nlc3N7IGNvbG9yOiMxNTU3MjQ7IGJhY2tncm91bmQtY29sb3I6I2Q0ZWRkYTsgYm9yZGVyLWNvbG9yOiMxNTU3MjQ7IGJvcmRlci13aWR0aDp2YXIoLS1ib3JkZXItdGhpbik7IH0gLm5vdGUtZXJyb3J7IGNvbG9yOiNmZmZmZmY7IGJhY2tncm91bmQtY29sb3I6I2ZmMDAwMDsgYm9yZGVyLWNvbG9yOiNmZjAwMDA7IGJvcmRlci13aWR0aDp2YXIoLS1ib3JkZXItdGhpbik7IH0gdWwuY2hlY2tsaXN0IGxpOmJlZm9yZXsgY29udGVudDoiIjsgYm9yZGVyLWxlZnQ6MC4ycmVtIHNvbGlkOyBib3JkZXItYm90dG9tOjAuMnJlbSBzb2xpZDsgd2lkdGg6MC43cmVtOyBoZWlnaHQ6MC40cmVtOyBkaXNwbGF5OmlubGluZS1ibG9jazsgdHJhbnNmb3JtOnJvdGF0ZSgtNDVkZWcpOyBtYXJnaW4tcmlnaHQ6MXJlbTsgfSB1bC5jaGVja2xpc3QgbGl7IG1hcmdpbi10b3A6dmFyKC0tc3BhY2UpOyBkaXNwbGF5OmZsZXg7IGFsaWduLWl0ZW1zOmNlbnRlcjsgfSAuaW52YWxpZCA+IDppcyhpbnB1dCxzZWxlY3QsdGV4dGFyZWEpeyBiYWNrZ3JvdW5kLWNvbG9yOiNmYWQ2ZGM7IH0gLi1iZy13aGl0ZXsgYmFja2dyb3VuZC1jb2xvcjp2YXIoLS13aGl0ZSk7IH0gLi1iZy1ncmF5eyBiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWdyYXkpOyBjb2xvcjp2YXIoLS13aGl0ZSk7IH0gLi1iZy1kYXJrLWdyYXl7IGJhY2tncm91bmQtY29sb3I6dmFyKC0tZGFyay1ncmF5KTsgY29sb3I6dmFyKC0td2hpdGUpOyB9IC4tYmctYmxhY2stZ3JheXsgYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1ibGFjay1ncmF5KTsgY29sb3I6dmFyKC0td2hpdGUpOyB9IC4tYmctYmxhY2t7IGJhY2tncm91bmQtY29sb3I6dmFyKC0tYmxhY2spOyBjb2xvcjp2YXIoLS13aGl0ZSk7IH0gLi1iZy1saWdodHsgYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1saWdodCk7IGNvbG9yOnZhcigtLWJsYWNrKTsgfSAuLWJnLWxpZ2h0LWdyYXl7IGJhY2tncm91bmQtY29sb3I6dmFyKC0tbGlnaHQtZ3JheSk7IGNvbG9yOnZhcigtLWJsYWNrKTsgfSAuLWJnLW5vbmV7YmFja2dyb3VuZDp0cmFuc3BhcmVudDt9IC4tcm91bmR7IGJvcmRlci1yYWRpdXM6MC4zcmVtOyB9IC5wdXNoLWRvd257IHBvc2l0aW9uOmFic29sdXRlOyBib3R0b206MHB4OyB9IC5wcmljZS1tYWlueyBjb2xvcjojZmYwMDAwOyB9IC5wcmljZS1zdHJpa2V7IGNvbG9yOiM5OTk7IHRleHQtZGVjb3JhdGlvbjpsaW5lLXRocm91Z2g7IH0gLmZvcm1hdC1wcmljZXsgcG9zaXRpb246cmVsYXRpdmU7IG1heC13aWR0aDpmaXQtY29udGVudDsgbWFyZ2luLXJpZ2h0OjAuN3JlbTsgbGluZS1oZWlnaHQ6MWVtOyB3aGl0ZS1zcGFjZTpub3dyYXA7IH0gOmlzKC5FTkdMSVNILFtkYXRhLWxhbmc9ImVuIl0pIC5mb3JtYXQtcHJpY2V7IG1hcmdpbi1sZWZ0OjAuNnJlbTsgbWFyZ2luLXJpZ2h0OnVuc2V0OyB9IC5mb3JtYXQtcHJpY2U6YWZ0ZXJ7IGNvbnRlbnQ6IiQiOyBmb250LXNpemU6bWF4KDAuNXJlbSwwLjZlbSk7IHBvc2l0aW9uOmFic29sdXRlOyB0b3A6dmFyKC0tZm9ybWF0LXBpY2Utc2lnbi1wb3NpdGlvbiwwKTsgcmlnaHQ6LTAuNmVtOyBsaW5lLWhlaWdodDppbmhlcml0OyB9IC5maW5hbC1wcmljZSAuZm9ybWF0LXByaWNlOmFmdGVyeyBtYXJnaW4tdG9wOi01cHg7IH0gLmZpbmFsLXByaWNlIC5mb3JtYXQtcHJpY2V7IGRpc3BsYXk6aW5saW5lLWJsb2NrOyBwYWRkaW5nLXJpZ2h0OjJweDsgfSA6aXMoLkVOR0xJU0gsW2RhdGEtbGFuZz0iZW4iXSkgLmZvcm1hdC1wcmljZTphZnRlcnsgbGVmdDotMC43ZW07IHJpZ2h0OnVuc2V0OyB9IC5wcmljZS1lbjpiZWZvcmV7IGNvbnRlbnQ6IiQiOyB9IDppcygucHJpY2UtZW4pOmJlZm9yZXsgZm9udC1zaXplOjAuNmVtOyBwb3NpdGlvbjpyZWxhdGl2ZTsgdG9wOi0wLjVlbTsgfSAucHJpY2UtZnI6YWZ0ZXJ7IGNvbnRlbnQ6IiAkIjsgfSA6aXMoLnByaWNlLWZyKTphZnRlcnsgZm9udC1zaXplOjAuNmVtOyBwb3NpdGlvbjpyZWxhdGl2ZTsgdG9wOi0wLjVlbTsgfSAuc2NyYXRjaC1vdmVyLCAuc2NyYXRjaC1sZWFzZXsgcG9zaXRpb246cmVsYXRpdmU7IH0gLnNjcmF0Y2gtb3ZlcjpiZWZvcmUsIC5zY3JhdGNoLWxlYXNlOmJlZm9yZXsgYmFja2dyb3VuZDpub25lIHJlcGVhdCBzY3JvbGwgMCAwIGJsYWNrOyBjb250ZW50OiIgIjsgaGVpZ2h0OjJweDsgcG9zaXRpb246YWJzb2x1dGU7IHRvcDo0NSU7IC1tb3otdHJhbnNmb3JtOnJvdGF0ZSg3ZGVnKTsgLXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDdkZWcpOyB0cmFuc2Zvcm06cm90YXRlKDdkZWcpOyB3aWR0aDo5MCU7IH0gLkVOR0xJU0ggOmlzKC5zY3JhdGNoLWxlYXNlLC5zY3JhdGNoLW92ZXIpOmhhcyguZm9ybWF0LXByaWNlKTpiZWZvcmV7IG1hcmdpbi1sZWZ0OjAuNXJlbTsgfSAuYmx1ci1vdmVyLCAuYmx1ci1sZWFzZSB7IC13ZWJraXQtZmlsdGVyOmJsdXIoMC4xNWVtKTsgLW1vei1maWx0ZXI6Ymx1cigwLjE1ZW0pOyAtbXMtZmlsdGVyOmJsdXIoMC4xNWVtKTsgLW8tZmlsdGVyOmJsdXIoMC4xNWVtKTsgZmlsdGVyOmJsdXIoMC4xNWVtKTsgfSAub3V0LXZpZXd7IHBvc2l0aW9uOmZpeGVkOyB0b3A6LTIwcHg7IGNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsMCk7IHotaW5kZXg6MDsgfSAudG9wLWZpeGVkIHsgcG9zaXRpb246Zml4ZWQ7IHRvcDozLjJyZW07IGxlZnQ6MDsgei1pbmRleDoxMDA7IGFsaWduLWl0ZW1zOmNlbnRlcjsgfSAuZml4ZWQtd3JhcHBlci50b3AtZml4ZWQgeyB3aWR0aDoxMDAlOyBwYWRkaW5nOnZhcigtLXMpOyBiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWxpZ2h0LWdyYXkpOyBib3JkZXItYm90dG9tLXdpZHRoOjFweDsgYm9yZGVyLWJvdHRvbS1jb2xvcjojMDAwOyBib3gtc2l6aW5nOmJvcmRlci1ib3g7IGRpc3BsYXk6ZmxleDsganVzdGlmeS1jb250ZW50OmNlbnRlcjsgfSAuZml4ZWQtd3JhcHBlci50b3AtZml4ZWQgPiAucHJvbW9CVE4geyBtYXJnaW46MDsgd2lkdGg6OTB2dzsganVzdGlmeS1jb250ZW50OmNlbnRlcjsgfSAuZml4ZWQtd3JhcHBlci50b3AtZml4ZWQgLmN0YS1sYWJlbHsgdGV4dC1hbGlnbjpjZW50ZXI7IH0gLm1haW4tY29sb3JzeyBiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXRhYi1jb2xvcik7IGNvbG9yOnZhcigtLXRhYi10ZXh0LWNvbG9yKTsgfSAucHJvbW8tY29sb3JzeyBiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXRhYi1jb2xvcik7IGJhY2tncm91bmQtY29sb3I6dmFyKC0tcHJvbW8tY29sb3IpOyBjb2xvcjp2YXIoLS10YWItdGV4dC1jb2xvcik7IGNvbG9yOnZhcigtLXByb21vLXRleHQtY29sb3IpOyB9IC5idG57IC0tYnRuLWJnLWNvbDp2YXIoLS10YWItY29sb3IpOyAtLWJ0bi10eHQtY29sOnZhcigtLXRhYi10ZXh0LWNvbG9yKTsgYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1idG4tYmctY29sKTsgY29sb3I6dmFyKC0tYnRuLXR4dC1jb2wpOyBib3JkZXI6MXB4IHNvbGlkIHZhcigtLWJ0bi1icmQtY29sLCB2YXIoLS1idG4tdHh0LWNvbCkpOyBwYWRkaW5nOjAuNXJlbTsgZm9udC13ZWlnaHQ6Ym9sZDsgfSAuYnRuLWRhcmstZ3JleSwgLmNiRGFya0dyZXl7IC0tYnRuLWJnLWNvbDojMzMzOyAtLWJ0bi10eHQtY29sOiNmZmY7IH0gW3JvbGU9ImJ1dHRvbiJdeyBjdXJzb3I6cG9pbnRlcjsgfSAuYnRuLXByb21veyAtLXR4dC1jb2xvcjp2YXIoLS1wcm9tby10ZXh0LWNvbG9yLCB2YXIoLS10YWItdGV4dC1jb2xvcikpOyBjb2xvcjp2YXIoLS10eHQtY29sb3IpOyBiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXRhYi1jb2xvcik7IGJhY2tncm91bmQtY29sb3I6dmFyKC0tcHJvbW8tY29sb3IpOyBib3JkZXI6MXB4IHNvbGlkIHZhcigtLXByb21vLXRleHQtY29sb3IpOyBwb3NpdGlvbjpyZWxhdGl2ZTsgYWxpZ24taXRlbXM6Y2VudGVyOyBib3JkZXI6bm9uZTsgfSAuYnRuLWN0YTphZnRlcnsgY29udGVudDoiXGYwNTQiOyBmb250LXN0eWxlOm5vcm1hbDsgdGV4dC1kZWNvcmF0aW9uOmluaGVyaXQ7IHBvc2l0aW9uOmFic29sdXRlOyByaWdodDoxcmVtOyBmb250LWZhbWlseTonRm9udCBBd2Vzb21lIDUgUHJvJzsgZm9udC13ZWlnaHQ6OTAwOyB9IC5idG4tbWFpbnsgLS1idG4tYmctY29sOnZhcigtLXRhYi1jb2xvcik7IC0tYnRuLXR4dC1jb2w6dmFyKC0tdGFiLXRleHQtY29sb3IpOyAtLWJ0bi1icmQtY29sOnZhcigtLXRhYi10ZXh0LWNvbG9yLCB2YXIoLS10YWItdGV4dC1jb2xvcikpOyB9IC5idG4tbWFpbjIsIC5idG4tbWFpbjpob3ZlcnsgYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1tZW51LWhvdmVyLWJnLWNvbG9yKTsgYm9yZGVyOjFweCBzb2xpZCB2YXIoLS1tZW51LWhvdmVyLXRleHQtY29sb3IpOyBjb2xvcjp2YXIoLS1tZW51LWhvdmVyLXRleHQtY29sb3IpOyB9IC5idG4tYmxhY2t7IGJhY2tncm91bmQtY29sb3I6IzAwMDsgY29sb3I6I2ZmZjsgLS10eHQtY29sb3I6I2ZmZjsgfSAuYnRuLWxpZ2h0eyBiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7IGJvcmRlcjoxcHggc29saWQgI2FhYTsgY29sb3I6Izg4ODsgfSAuYnRuLXN1Y2Nlc3N7IC0tYnRuLWJnLWNvbDojNGNhZjUwOyAtLWJ0bi10eHQtY29sOiNmZmY7IH0gLmJ0bi13YXJuaW5neyAtLWJ0bi1iZy1jb2w6I2ZmOTgwMDsgLS1idG4tdHh0LWNvbDojZmZmOyB9IC5ibnQtZGlzYWJsZWQsIC5idG5bZGlzYWJsZWRdIHsgY29sb3I6dmFyKC0tZ3JheSk7IGJhY2tncm91bmQtY29sb3I6dmFyKC0tbGlnaHQtZ3JheSk7IGJvcmRlcjoxcHggc29saWQgdmFyKC0tZ3JheSk7IH0gLmJ0bi1lbWFpbC1tZSwgLmJ0bi10ZXh0LW1leyBkaXNwbGF5OmZsZXg7IGFsaWduLWl0ZW1zOmNlbnRlcjsganVzdGlmeS1jb250ZW50OmNlbnRlcjsgfSAuYnRuLWVtYWlsLW1lOmJlZm9yZXsgY29udGVudDoiXGYwZTAiOyBmb250LXdlaWdodDo5MDA7IH0gLmJ0bi10ZXh0LW1lOmJlZm9yZXsgY29udGVudDoiXGYzY2QiOyBmb250LXNpemU6eC1sYXJnZTsgZm9udC13ZWlnaHQ6OTAwOyB9IC5idG4tZW1haWwtbWU6YmVmb3JlLCAuYnRuLXRleHQtbWU6YmVmb3JleyBmb250LWZhbWlseTonRm9udCBBd2Vzb21lIDUgUHJvJzsgbWFyZ2luLXJpZ2h0OjVweDsgcG9zaXRpb246cmVsYXRpdmU7IHRvcDotMXB4OyB9IGJ1dHRvbi5yb3VuZC1idXR0b257IGFsbDppbmhlcml0OyBib3JkZXItcmFkaXVzOjUwJTsgYmFja2dyb3VuZC1jb2xvcjp2YXIoLS10YWItdGV4dC1jb2xvcik7IGZpbGw6dmFyKC0tdGFiLWNvbG9yKTsgcGFkZGluZzowLjNyZW07IGN1cnNvcjpwb2ludGVyOyB9IGJ1dHRvbi5pY29uLWJ1dHRvbnsgY29sb3I6dmFyKC0tcHJvbW8tYnRuLWNvbG9yKTsgYmFja2dyb3VuZC1jb2xvcjojZmZmOyBib3JkZXI6bm9uZTsgcGFkZGluZzowLjVyZW07IHdpZHRoOmF1dG87IH0gLngtY2xvc2V7IGJhY2tncm91bmQtaW1hZ2U6dXJsKCJkYXRhOmltYWdlL3N2Zyt4bWwsJTNDc3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZycgYXJpYS1oaWRkZW49J3RydWUnIGZvY3VzYWJsZT0nZmFsc2UnIHZpZXdCb3g9JzAgMCAxMCAxMCclM0UlM0NzdHlsZSUzRS52ZXJ0JTdCZmlsbDolMjMwMDA7JTdEJTNDL3N0eWxlJTNFJTNDcmVjdCBjbGFzcz0ndmVydCcgaGVpZ2h0PSc4JyB3aWR0aD0nMicgeT0nMScgeD0nNCclM0UlM0MvcmVjdCUzRSUzQ3JlY3QgaGVpZ2h0PScyJyB3aWR0aD0nOCcgeT0nNCcgeD0nMSclM0UlM0MvcmVjdCUzRSUzQy9zdmclM0UiKTsgYmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDsgYm9yZGVyOm5vbmU7IHdpZHRoOjEuNXJlbTsgaGVpZ2h0OjEuNXJlbTsgdHJhbnNmb3JtOnJvdGF0ZSg0NWRlZyk7IGN1cnNvcjpwb2ludGVyOyB9IDpub3QoLmNvbXBsZXRlZCkucmlwcGxlIHsgcG9zaXRpb246cmVsYXRpdmU7IG92ZXJmbG93OmhpZGRlbjsgdHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsIDAsIDApOyB9IDpub3QoLmNvbXBsZXRlZCkucmlwcGxlOmFmdGVyIHsgY29udGVudDoiIjsgZGlzcGxheTpibG9jazsgcG9zaXRpb246YWJzb2x1dGU7IHdpZHRoOjEwMCU7IGhlaWdodDoxMDAlOyB0b3A6MDsgbGVmdDowOyBwb2ludGVyLWV2ZW50czpub25lOyBiYWNrZ3JvdW5kLWltYWdlOnJhZGlhbC1ncmFkaWVudChjaXJjbGUsIHJnYigwLCAwLCAwKSAxMCUsIHRyYW5zcGFyZW50IDEwLjAxJSk7IGJhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDsgYmFja2dyb3VuZC1wb3NpdGlvbjo1MCU7IHRyYW5zZm9ybTpzY2FsZSgxMCwxMCk7IG9wYWNpdHk6MDsgdHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjVzLCBvcGFjaXR5IDFzOyB9IDpub3QoLmNvbXBsZXRlZCkucmlwcGxlOmFjdGl2ZTphZnRlciB7IHRyYW5zZm9ybTpzY2FsZSgwLDApOyBvcGFjaXR5Oi4yOyB0cmFuc2l0aW9uOjBzOyB9IC5sb2dvYXJlYSB7IG1pbi1oZWlnaHQ6N3JlbTsgYm9yZGVyLWJvdHRvbToxcHggc29saWQgI2VlZTsgYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1hZG1pbi1nZW5lcmFsLWhlYWRlci1iZy1jb2xvcik7IH0gYSA+IDp3aGVyZSg6aXMoc3ZnLCAuZmEsIC5mYXMpOmZpcnN0LWNoaWxkOm5vdCg6b25seS1jaGlsZCkpeyBtYXJnaW4tcmlnaHQ6MC42cmVtOyB9IC5wcm9tb1RvcEJ0biA6aXMoYSxidXR0b24pIHsgLS1mczp2YXIoLS1mczEpOyAtLXR4dC1jb2xvcjp2YXIoLS10b3AtcHJvbW8tYnRuLXR4dCwgdmFyKC0tdG9wLXByb21vLWJ0bi10eHQtY29sb3IpKTsgYm9yZGVyLXJhZGl1czo0cHg7IGJvcmRlci10b3Atd2lkdGg6MXB4OyBib3JkZXItYm90dG9tLXdpZHRoOjFweDsgYm9yZGVyLWNvbG9yOiNmM2YzZjM7IGhlaWdodDozLjJyZW07IGZvbnQtc2l6ZTp2YXIoLS1mczEpOyBmb250LXdlaWdodDpib2xkOyBkaXNwbGF5OmZsZXg7IGp1c3RpZnktY29udGVudDpjZW50ZXI7IGFsaWduLWl0ZW1zOmNlbnRlcjsgYmFja2dyb3VuZDp2YXIoLS10b3AtcHJvbW8tYnRuLWJnLCB2YXIoLS10b3AtcHJvbW8tYnRuLWJnLWNvbG9yKSk7IGNvbG9yOnZhcigtLXRvcC1wcm9tby1idG4tdHh0LCB2YXIoLS10b3AtcHJvbW8tYnRuLXR4dC1jb2xvcikpOyB9IC5wcm9tb1RvcEJ0bi5kZWFsZXJMaW5lQnV0dG9uIDppcyhhLGJ1dHRvbil7IC0tdHh0LWNvbG9yOnZhcigtLWFkbWluLWdlbmVyYWwtdGV4dC11cy1kZWFsZXItbGluZS10ZXh0LWNvbG9yKTsgYmFja2dyb3VuZDp2YXIoLS1hZG1pbi1nZW5lcmFsLXRleHQtdXMtZGVhbGVyLWxpbmUtYmctY29sb3IpOyBjb2xvcjp2YXIoLS1hZG1pbi1nZW5lcmFsLXRleHQtdXMtZGVhbGVyLWxpbmUtdGV4dC1jb2xvcik7IGJvcmRlci1jb2xvcjp2YXIoLS1hZG1pbi1nZW5lcmFsLXRleHQtdXMtZGVhbGVyLWxpbmUtdGV4dC1jb2xvcik7IHdpZHRoOjEwMCU7IH0gOmlzKC5wcm9tb1RvcEJ0bixsYWJlbCkuZmxvYXRpbmd7IHBvc2l0aW9uOmZpeGVkOyBib3R0b206MS41cmVtOyByaWdodDoxLjVyZW07IHotaW5kZXg6MTA7IH0gLnByb21vVG9wQnRuLmZsb2F0aW5nLndpdGhUb2FzdGVyIHtib3R0b206NnJlbTt9IC5wcm9tb1RvcEJ0bi5mbG9hdGluZyA6aXMoYSxidXR0b24peyAtLWZzOnZhcigtLWZzNSk7IHBhZGRpbmc6MXJlbTsgYm9yZGVyLXJhZGl1czo1MCU7IGJvcmRlci13aWR0aDoxcHg7IGhlaWdodDp1bnNldDsgfSAucHJvbW9Ub3BCdG4uZmxvYXRpbmcgOmlzKGEsYnV0dG9uKSBzcGFuIHtkaXNwbGF5Om5vbmU7fSAuaWNvbi1oZWFkaW5nIHNwYW4uZmF7IGZvbnQtc2l6ZTppbmhlcml0OyB3aWR0aDoxZW07IHBhZGRpbmc6MC4yZW07IGhlaWdodDoxZW07IHRleHQtYWxpZ246Y2VudGVyOyBib3JkZXItcmFkaXVzOjUwJTsgYm9yZGVyOjFweCBzb2xpZCB2YXIoLS1ibGFjayk7IGNvbG9yOnZhcigtLXdoaXRlKTsgYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1ibGFjayk7IGJveC1zaXppbmc6Y29udGVudC1ib3g7IH0gLmljb24taGVhZGluZyAuc2Vjb25kYXJ5VGV4dHsgY29sb3I6Izc1NzU3NTsgZm9udC1zaXplOjAuNzVlbTsgfSAuZ3JvdXBUYWJzID4gKnsgY3Vyc29yOnBvaW50ZXI7IGZvbnQtc2l6ZTpjYWxjKDEuMnJlbSArICgyMCAtIDE4KSAqICgoMTAwdncgLSAzMjBweCkgLyAoMTEwMCAtIDMwMCkpKTsgfSAuZ3JvdXBUYWJzID4gKjpob3ZlcnsgYmFja2dyb3VuZC1jb2xvcjojZWZlZmVmOyB9IC5ncm91cFRhYnMgLnRhYi1sYWJlbCwgLm5ld0NhclNsaWRlciAuY2Fyb3VzZWxUaXRsZXsgY29sb3I6dmFyKC0tbmV3LXZlaGljbGUtY2Fyb3VzZWwtdHh0LWNvbG9yLCB2YXIoLS1kZWZhdWx0LWJsYWNrKSk7IH0gLmdyb3VwVGFicyAuYWN0aXZlVGFiIC50YWItbGFiZWx7IGNvbG9yOnZhcigtLW5ldy12ZWhpY2xlLWNhcm91c2VsLXR4dC1jb2xvciwgdmFyKC0tZGVmYXVsdC1ibGFjaykpOyBib3JkZXItYm90dG9tOjNweCBzb2xpZDsgYm9yZGVyLWJvdHRvbS1jb2xvcjojMDAwOyBib3JkZXItYm90dG9tLWNvbG9yOnZhcigtLXRhYi1jb2xvcik7IH0gLmNhclNsaWRlcnsgZGlzcGxheTpmbGV4OyBqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyOyB9IC5jYXJTbGlkZXIgPiAqeyB3aWR0aDptaW4oOTByZW0sMTAwJSk7IH0gLmNhclNsaWRlci4tYmctbGlnaHQtZ3JheSA+ICp7IG1heC13aWR0aDptaW4oNzVyZW0sMTAwJSk7IH0gLm5ld0NhckNhcmR7IGhlaWdodDoxMDAlOyBtaW4taGVpZ2h0OjI3cmVtOyBib3JkZXI6MXB4IHNvbGlkICNiYmI7IGJveC1zaXppbmc6Ym9yZGVyLWJveDsgcG9zaXRpb246cmVsYXRpdmU7IGJhY2tncm91bmQtY29sb3I6dmFyKC0td2hpdGUpOyB9IC5uZXdDYXJDYXJkIGltZ3sgd2lkdGg6MTAwJTsgbWFyZ2luLXRvcDotMXJlbTsgcG9zaXRpb246cmVsYXRpdmU7IH0gLmNhclBheW1lbnRXcmFwcGVyeyB3aWR0aDptaW4oMTAwJSwyNXJlbSk7IG1pbi1oZWlnaHQ6N3JlbTsgfSAuY2FyUGF5bWVudFdyYXBwZXIgLnBheW1lbnRCbG9ja3sgaGVpZ2h0OjEwMCU7IH0gLnBheW1lbnRzRGlzYWJsZWQgLm5ld0NhckNhcmR7IG1pbi1oZWlnaHQ6MjJyZW07IH0gLnZlaGljbGVDYXJvdXNlbCAubmV3Q2FyQ2FyZHsgYmFja2dyb3VuZC1jb2xvcjp2YXIoLS13aGl0ZSk7IHdpZHRoOjIzLjdyZW07IGJvcmRlcjoxcHggc29saWQgI2JiYjsgbWFyZ2luOjAgMC40cmVtOyBoZWlnaHQ6MTAwJSB9IC5uZXdDYXJDYXJkIC5wcm9tby1iYWRnZXsgaGVpZ2h0OmZpdC1jb250ZW50OyBtaW4td2lkdGg6NnJlbTsgfSAubmV3Q2FyQ2FyZDpob3ZlcnsgYm94LXNoYWRvdzowIDAgMTBweCAycHggdmFyKC0tbWlkLWdyYXkpOyBiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWxpZ2h0LWdyYXkpOyB9IC5uZXdDYXJDYXJkOmhvdmVyIC5pblN0b2NrTGluayB7IGJhY2tncm91bmQtY29sb3I6I2ZmZmZmZjsgfSAubmV3Q2FyQ2FyZCAuY2FyZC1ib2R5eyBkaXNwbGF5OmZsZXg7IGFsaWduLWl0ZW1zOmNlbnRlcjsgaGVpZ2h0OjEycmVtOyBvdmVyZmxvdzpoaWRkZW47IH0gLm5ld0NhckNhcmQgPiAuYm94LWxjeyBtYXJnaW4tdG9wOjA7IHBhZGRpbmctdG9wOjA7IHBhZGRpbmctYm90dG9tOjA7IH0gLm5ld0NhckNhcmQgPiAuYm94LWxjOmZpcnN0LWNoaWxkeyBwYWRkaW5nLXRvcDowLjVyZW07IG1heC1oZWlnaHQ6MTByZW07IH0gLm5ld0NhckNhcmQgLmRlc2t0b3BQYXltZW50eyBwb3NpdGlvbjpyZWxhdGl2ZTsgfSAubmV3Q2FyQ2FyZCBzcGFuLnBheW1lbnRDYWxjQnRuLmRlc2t0b3B7IHBvc2l0aW9uOmFic29sdXRlOyByaWdodDo3JTsgZm9udC1zaXplOjEuN2VtOyBjdXJzb3I6cG9pbnRlcjsgfSAudXNlZENhclNsaWRleyBkaXNwbGF5OmJsb2NrOyBib3JkZXI6MXB4IHNvbGlkICNiYmI7IGJhY2tncm91bmQtY29sb3I6I2ZmZjsgaGVpZ2h0OjEwMCU7IGJveC1zaXppbmc6Ym9yZGVyLWJveDsgfSAudXNlZENhclNsaWRlICp7IGJveC1zaXppbmc6Ym9yZGVyLWJveDsgfSAudXNlZENhclNsaWRlIC5zbGlkZUNvbnRlbnR7IGhlaWdodDoxMDAlIH0gLmFuaW1hdGVkLXRyaWFuZ2xlIHsgcG9zaXRpb246cmVsYXRpdmU7IG1hcmdpbi1yaWdodDoxMHB4OyB9IC5hbmltYXRlZC10cmlhbmdsZSA+IC5mYTo6YWZ0ZXIgeyBjb250ZW50OiJcZjA3MSI7IH0gLmFuaW1hdGVkLXRyaWFuZ2xlIGl7IHBvc2l0aW9uOnJlbGF0aXZlOyB9IC5hbmltYXRlZC10cmlhbmdsZSA+IHN2ZywgLmFuaW1hdGVkLXRyaWFuZ2xlID4gLmZhOjphZnRlciB7IGFuaW1hdGlvbjpyaXBwbGUtMSAxcyBpbmZpbml0ZSBlYXNlLWluLW91dDsgYW5pbWF0aW9uLWRlbGF5OjAuNXM7IGFuaW1hdGlvbjpyaXBwbGUtMiAxcyBpbmZpbml0ZSBlYXNlLWluLW91dDsgYW5pbWF0aW9uLWRlbGF5OjAuNzVzOyBwb3NpdGlvbjphYnNvbHV0ZTsgfSAuYW5pbWF0ZWQtdHJpYW5nbGUgPiAuZmE6OmFmdGVyeyB0b3A6MDsgbGVmdDowOyB9IC5hbmltYXRlZC10cmlhbmdsZSA+IHN2Z3sgdG9wOjFweDsgbGVmdDotMXJlbTsgfSBAa2V5ZnJhbWVzIHJpcHBsZS0xIHsgMCUgeyB0cmFuc2Zvcm06c2NhbGUoMSk7IG9wYWNpdHk6MTsgfSAxMDAlIHsgdHJhbnNmb3JtOnNjYWxlKDEuNyk7IG9wYWNpdHk6MDsgfSB9IEBrZXlmcmFtZXMgcmlwcGxlLTIgeyAwJSB7IHRyYW5zZm9ybTpzY2FsZSgxKTsgb3BhY2l0eToxOyB9IDEwMCUgeyB0cmFuc2Zvcm06c2NhbGUoMik7IG9wYWNpdHk6MDsgfSB9IHNwYW4uYXN0ZXJpeDphZnRlcnsgY29udGVudDoiKiI7IHBvc2l0aW9uOnJlbGF0aXZlOyBmb250LXNpemU6MnJlbTsgfSBkaXYucHJpY2VOb3RlLmFzdGVyaXg6YmVmb3JleyBjb250ZW50OiIqIjsgcG9zaXRpb246cmVsYXRpdmU7IGZvbnQtc2l6ZToxcmVtOyB9IGZvb3RlciB7IC13ZWJraXQtYm94LXNoYWRvdzppbnNldCAwcHggMTBweCAxMXB4IC0xMXB4IHJnYmEoNTAsIDUwLCA1MCwgMC43NSk7IC1tb3otYm94LXNoYWRvdzogaW5zZXQgMHB4IDEwcHggMTFweCAtMTFweCByZ2JhKDUwLCA1MCwgNTAsIDAuNzUpOyBib3gtc2hhZG93OiBpbnNldCAwcHggMTBweCAxMXB4IC0xMXB4IHJnYmEoNTAsIDUwLCA1MCwgMC43NSk7IC0tdHh0LWNvbG9yOnZhcigtLWZvb3Rlci1pdGVtcy1saW5rLWNvbG9yKTsgYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1mb290ZXItYmctY29sb3IpOyBjb2xvcjp2YXIoLS1mb290ZXItaXRlbXMtbGluay1jb2xvcik7IH0gYS52aXNpdENvbnRhY3RCdXR0b257IC0tdHh0LWNvbG9yOnZhcigtLXByb21vLWJ0bi10ZXh0LWNvbG9yKTsgYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1wcm9tby1idG4tYmctY29sb3IpOyBjb2xvcjp2YXIoLS1wcm9tby1idG4tdGV4dC1jb2xvcik7IH0gLmNGb290ZXJDYXJMaW5rcyBsaS5jSXRlbUV4cGVuZHsgZGlzcGxheTpub25lOyB9IC5jRm9vdGVyQ2FyTGlua3MgaDMsIC5mb290ZXJfYWRkcmVzcyAuYWRyID4gc3BhbnsgY29sb3I6dmFyKC0tZm9vdGVyLWxpbmstdGl0bGUtY29sKTsgfSAuY0Zvb3RlckNhckxpbmtzIHNwYW4uaDMtYWx0IHsgZGlzcGxheTpibG9jazsgY29sb3I6dmFyKC0tZm9vdGVyLWxpbmstdGl0bGUtY29sKTsgfSAuY0Zvb3RlckNhckxpbmtzLmNMaXN0RXhwZW5kZWQgbGkuY0l0ZW1FeHBlbmR7IGRpc3BsYXk6YmxvY2s7IH0gLmNFeHBlbmRMaXN0IGJ1dHRvbnsgcGFkZGluZzp2YXIoLS1zKSAwOyBiYWNrZ3JvdW5kOm5vbmU7IH0gLmNvbmRpdGlvbnNGb290ZXIgeyBjb2xvcjp2YXIoLS1mb290ZXItY29uZGl0aW9ucy1jb2xvciwgIzkxOTE5MSk7IC0tdHh0LWNvbG9yOnZhcigtLWZvb3Rlci1jb25kaXRpb25zLWNvbG9yKTsgfSAudHJhZGVJbkJhck1vYmlsZUJ1dHRvbiB7IHBvc2l0aW9uOmZpeGVkOyBib3R0b206MTBweDsgbWFyZ2luOjVweCA1cHggMTVweCAxNXB4OyB6LWluZGV4OjQ7IHdpZHRoOjE0MHB4ICFpbXBvcnRhbnQ7IGJvcmRlci13aWR0aDoxcHg7IGJhY2tncm91bmQtY29sb3I6I2VhMDAyOTsgdGV4dC1hbGlnbjpsZWZ0OyBiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXRyYWRlaW5iYXItYnRuLWJnKTsgY29sb3I6IHZhcigtLXRyYWRlaW5iYXItYnRuLWNvbG9yKTsgYWxpZ24taXRlbXM6Y2VudGVyOyBib3JkZXItcmFkaXVzOjhweDsgYm9yZGVyLXdpZHRoOjFweCAzcHggNHB4IDFweDsgYm9yZGVyLWNvbG9yOiMzMzMzMzM7IHBhZGRpbmctdG9wOjEwcHg7IH0gLnRyYWRlSW5CYXJNb2JpbGVCdXR0b24gaXsgZGlzcGxheTppbmxpbmUtZmxleDsgYm9yZGVyLXJhZGl1czoxMDAlOyB3aWR0aDoyZW07IGFsaWduLWl0ZW1zOmNlbnRlcjsganVzdGlmeS1jb250ZW50OmNlbnRlcjsgYm9yZGVyOjJweCBzb2xpZCAjZmZmOyBiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7IGhlaWdodDoxLjVlbTsgY29sb3I6IzAwMDsgZmxvYXQ6bGVmdDsgfSAudHJhZGVJbkJhck1vYmlsZUJ1dHRvbi53aXRoVG9hc3RlciB7IGJvdHRvbTo1cmVtOyB9ICN0cmFkZUluQmFyUG9wdXBfbGluZTF7IGJhY2tncm91bmQtY29sb3I6I2YxZjFmMTsgYm9yZGVyOjFweCBzb2xpZCBncmV5OyBwYWRkaW5nOjIwcHggNDBweDsgZm9udC1zaXplOjEuMTI1cmVtIDsgdGV4dC1hbGlnbjpjZW50ZXI7IH0gLmJ0bi50cmFkZUluQmFyUG9wdXBTdWJtaXR7IHBhZGRpbmc6MC43NXJlbSAwLjM3NXJlbTsgYm9yZGVyLXdpZHRoOjFweDsgYm9yZGVyLWNvbG9yOiMwMDA7IGZvbnQtd2VpZ2h0OmJvbGQ7IGJvcmRlci1yYWRpdXM6M3B4OyBib3JkZXI6MXB4IHNvbGlkICMwMDA7IH0gI3RyYWRlSW5CYXJQb3B1cF9mb3JtVyBpbnB1dHsgbWFyZ2luOjVweCAwIDA7IH0gI3RyYWRlSW5CYXJQb3B1cF9mb3JtV3sgaGVpZ2h0OjU4MHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7IGNvbG9yOnZhcigtLWRlZmF1bHQtYmxhY2stdGV4dCk7IHBhZGRpbmc6MTVweDsgcG9zaXRpb246cmVsYXRpdmU7IH0gI3RyYWRlSW5CYXJQb3B1cF9mb3JtVyBpbnB1dHsgcGFkZGluZzoxMXB4IDEwcHg7IGZvbnQtc2l6ZTowLjkzOHJlbSA7IHdpZHRoOjI1MHB4OyBtYXJnaW46NXB4IDAgMDsgYm9yZGVyOjFweCBzb2xpZCAjYTlhOWE5IWltcG9ydGFudDsgfSAjdHJhZGVJbkJhclBvcHVwX2Zvcm1XIC50cmFkaW5TZWxlY3RQb3B1cHsgY29sb3I6IzNjMzgzNjsgZm9udC1zaXplOjFyZW07IGJhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwxKTsgYmFja2dyb3VuZC1wb3NpdGlvbjo5NSUgNTAlOyBhcHBlYXJhbmNlOm5vbmU7IC13ZWJraXQtYXBwZWFyYW5jZTpub25lOyAtbW96LWFwcGVhcmFuY2U6bm9uZTsgbWFyZ2luOjVweCAwIDA7IH0gI3RyYWRlSW5CYXJQb3B1cF9mb3JtVyA6OnBsYWNlaG9sZGVyIHsgY29sb3I6I2E5YTlhOTsgb3BhY2l0eToxOyB9ICN0cmFkZUluQmFyUG9wdXBfZm9ybVcgOi1tcy1pbnB1dC1wbGFjZWhvbGRlciB7IGNvbG9yOiNhOWE5YTk7IH0gI3RyYWRlSW5CYXJQb3B1cF9mb3JtVyA6Oi1tcy1pbnB1dC1wbGFjZWhvbGRlciB7IGNvbG9yOiNhOWE5YTk7IH0gLnRyYWRpblNlbGVjdCwgLnRyYWRpblNlbGVjdFBvcHVwIHsgY29sb3I6IzNjMzgzNjsgZm9udC1zaXplOjFyZW07IG1hcmdpbjo1cHggMCAwOyBhcHBlYXJhbmNlOm5vbmU7IC13ZWJraXQtYXBwZWFyYW5jZTpub25lOyAtbW96LWFwcGVhcmFuY2U6bm9uZTsgfSAudHJhZGluU2VsZWN0QSB7IHBvc2l0aW9uOnJlbGF0aXZlOyB9IC50cmFkaW5TZWxlY3RBOmFmdGVyIHsgY29udGVudDoiICI7IGhlaWdodDowOyB3aWR0aDowOyBib3JkZXItbGVmdDo1cHggc29saWQgdHJhbnNwYXJlbnQ7IGJvcmRlci1yaWdodDo1cHggc29saWQgdHJhbnNwYXJlbnQ7IGJvcmRlci10b3A6NXB4IHNvbGlkICMwMDAwMDA7IHBvc2l0aW9uOmFic29sdXRlOyByaWdodDoxNHB4OyB0b3A6MTdweDsgdHJhbnNpdGlvbjphbGwgMC4zcyBsaW5lYXI7IHBvaW50ZXItZXZlbnRzOm5vbmU7IH0gLmVtYWlsQm9keSwgLmVtYWlsU3ViamVjdHsgZGlzcGxheTpub25lOyB9IC5yZXZlYWwtbW9kYWw6bm90KCNwYXltZW50Q2FsY3VsYXRvclBvcHVwQ29udGFpbmVyKSAqOm5vdCguZmluYW5jZU11bHRpc3RlcE5ld0NhbGN1bGF0b3IgOmlzKGlucHV0LCBzZWxlY3QpKXsgYm94LXNpemluZzpib3JkZXItYm94OyB9IC5yZXZlYWwtbW9kYWw6bm90KCNwYXltZW50Q2FsY3VsYXRvclBvcHVwQ29udGFpbmVyKSA6aXMoaW5wdXRbdHlwZT0idGV4dCJdOm5vdCguZmluYW5jZU11bHRpc3RlcFVzZWRDYWxjdWxhdG9yIC5jYWxjLWZvcm0gaW5wdXQpLGlucHV0W3R5cGU9ImVtYWlsIl0saW5wdXRbdHlwZT0idGVsIl0sc2VsZWN0Om5vdCgucGF5bWVudENhbGN1bGF0b3JJbnRlcnZhbCwucGF5bWVudENhbGN1bGF0b3JLbUFsbG93YW5jZSwuZmluYW5jZU11bHRpc3RlcFVzZWRDYWxjdWxhdG9yIC5jYWxjLWZvcm0gc2VsZWN0LCBzZWxlY3Quc3RlcDI0c2VsZWN0KSl7IHBhZGRpbmc6MC40cmVtOyBib3JkZXItd2lkdGg6MXB4OyBib3JkZXItcmFkaXVzOjAuM3JlbTsgd2lkdGg6MTAwJTsgYm9yZGVyLWNvbG9yOiNhOWE5YTk7IH0gW2RhdGEtcGFnZT0iSE9NRVBBR0UiXXsgYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1ob21lLWJnLWNvbG9yLCAjRkZGRkZGKTsgfSAueXQtYmctY29udGFpbmVyeyBwb3NpdGlvbjpyZWxhdGl2ZTsgb3ZlcmZsb3c6aGlkZGVuOyB9IC5iYW5uZXItYmctY29udGFpbmVyeyBiYWNrZ3JvdW5kLXNpemU6Y292ZXI7IGJhY2tncm91bmQtcG9zaXRpb246Y2VudGVyIGNlbnRlcjsgYmFja2dyb3VuZC1ibGVuZC1tb2RlOmNvbG9yOyB9ICN5b3V0dWJlX19jb250YWluZXJ7IHBvc2l0aW9uOnJlbGF0aXZlOyB3aWR0aDoxMDAlOyBoZWlnaHQ6MDsgb3ZlcmZsb3c6aGlkZGVuOyBwYWRkaW5nLWJvdHRvbTptaW4oY2FsYygxMDB2aCAtIHZhcigtLWhlYWRlci1oZWlnaHQsMTByZW0pKSw2N3Z3KTsgYmFja2dyb3VuZC1jb2xvcjojODg4OyB9ICNob21lcGFnZV95b3V0dWJlX3BsYXllcnsgcG9zaXRpb246YWJzb2x1dGU7IHRvcDotNDUlOyBsZWZ0Oi0xMCU7IGhlaWdodDoxOTAlOyB3aWR0aDoxMjAlOyBwb2ludGVyLWV2ZW50czpub25lOyB9ICN5b3V0dWJlX19jb250YWluZXI6aXMoLmZ1bGxIZWlnaHQsLnZpc2libGVIZWlnaHQpeyBwYWRkaW5nLWJvdHRvbTpjYWxjKDEwMHZoIC0gdmFyKC0taGVhZGVyLWhlaWdodCwxMHJlbSkpOyB9IDppcyguZnVsbEhlaWdodCwudmlzaWJsZUhlaWdodCkgI2hvbWVwYWdlX3lvdXR1YmVfcGxheWVyeyBoZWlnaHQ6MTAwJTsgdG9wOjA7IH0gI3lvdXR1YmVfX2NvbnRhaW5lci5mdWxsV2lkdGh7IHBhZGRpbmctYm90dG9tOjU2LjI1JTsgfSAjbW9iaWxlU2xpZGVyICN5b3V0dWJlX19jb250YWluZXJ7IHBhZGRpbmctYm90dG9tOm1heCg2N3Z3LDI0cmVtKTsgfSAjbW9iaWxlU2xpZGVyICN5b3V0dWJlX19jb250YWluZXIgI2Jhbm5lcl9zZWFyY2hfYmFyX2NvbnRhaW5lcnsgaGVpZ2h0Om1heCg2N3Z3LDI0cmVtKTsgbWluLWhlaWdodDoxOHJlbTsgei1pbmRleDoxOyB9IC5mdWxsV2lkdGggI2hvbWVwYWdlX3lvdXR1YmVfcGxheWVyeyBoZWlnaHQ6MTIwJTsgdG9wOi0xMCU7IH0gLnl0LXZpZGVveyBiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7IGJhY2tncm91bmQtcG9zaXRpb246Y2VudGVyOyBiYWNrZ3JvdW5kLXNpemU6Y292ZXI7IH0gLnl0LXBsYXl7IGJhY2tncm91bmQtaW1hZ2U6dXJsKCdkYXRhOmltYWdlL3N2Zyt4bWwsJTNDc3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDU3NiA1MTIiPjwhLS0gRm9udCBBd2Vzb21lIEZyZWUgNS4xNS4xIGJ5IEBmb250YXdlc29tZSAtIGh0dHBzOi8vZm9udGF3ZXNvbWUuY29tIExpY2Vuc2UgLSBodHRwczovL2ZvbnRhd2Vzb21lLmNvbS9saWNlbnNlL2ZyZWUgKEljb25zOkNDIEJZIDQuMCwgRm9udHM6U0lMIE9GTCAxLjEsIENvZGU6TUlUIExpY2Vuc2UpIC0tPjxwYXRoIGQ9Ik01NDkuNjU1IDEyNC4wODNjLTYuMjgxLTIzLjY1LTI0Ljc4Ny00Mi4yNzYtNDguMjg0LTQ4LjU5N0M0NTguNzgxIDY0IDI4OCA2NCAyODggNjRTMTE3LjIyIDY0IDc0LjYyOSA3NS40ODZjLTIzLjQ5NyA2LjMyMi00Mi4wMDMgMjQuOTQ3LTQ4LjI4NCA0OC41OTctMTEuNDEyIDQyLjg2Ny0xMS40MTIgMTMyLjMwNS0xMS40MTIgMTMyLjMwNXMwIDg5LjQzOCAxMS40MTIgMTMyLjMwNWM2LjI4MSAyMy42NSAyNC43ODcgNDEuNSA0OC4yODQgNDcuODIxQzExNy4yMiA0NDggMjg4IDQ0OCAyODggNDQ4czE3MC43OCAwIDIxMy4zNzEtMTEuNDg2YzIzLjQ5Ny02LjMyMSA0Mi4wMDMtMjQuMTcxIDQ4LjI4NC00Ny44MjEgMTEuNDEyLTQyLjg2NyAxMS40MTItMTMyLjMwNSAxMS40MTItMTMyLjMwNXMwLTg5LjQzOC0xMS40MTItMTMyLjMwNXptLTMxNy41MSAyMTMuNTA4VjE3NS4xODVsMTQyLjczOSA4MS4yMDUtMTQyLjczOSA4MS4yMDF6IiBmaWxsPSIlMjNjMzNjMmQiIC8lM0UlM0Mvc3ZnJTNFJyk7IHdpZHRoOjVyZW07IGhlaWdodDo1cmVtOyBiYWNrZ3JvdW5kLXNpemU6Y29udGFpbjsgYmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0OyBiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50OyBvcGFjaXR5OjAuNzsgfSAuZW1iZWQtY29udGFpbmVyLXlvdXR1YmUgeyBwb3NpdGlvbjpyZWxhdGl2ZTsgaGVpZ2h0OmNhbGMoMTAwdncgLyAoMTYgLyA5KSk7IG92ZXJmbG93OmhpZGRlbjsgbWF4LXdpZHRoOjEwMCU7IGJhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDsgYmFja2dyb3VuZC1wb3NpdGlvbjpjZW50ZXI7IGJhY2tncm91bmQtc2l6ZTpjb3ZlcjsgfSAubW9iaWxlX2J1c2luZXNzRGVzYyB7IGJhY2tncm91bmQtY29sb3I6dmFyKC0tYnVzaW5lc3MtZGVzYy1iZy1jb2xvcl9tb2IsIHZhcigtLWZvb3Rlci1iZy1jb2xvcikpOyBjb2xvcjp2YXIoLS1idXNpbmVzcy1kZXNjLXR4dC1jb2xvcl9tb2IsIHZhcigtLWZvb3Rlci1saW5rLXRpdGxlLWNvbCkpOyB9IC5idXNpbmVzc0Rlc2MgeyBiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWJ1c2luZXNzLWRlc2MtYmctY29sb3JfbW9iLCB2YXIoLS1mb290ZXItYmctY29sb3IpKTsgY29sb3I6dmFyKC0tYnVzaW5lc3MtZGVzYy10eHQtY29sb3JfbW9iLCB2YXIoLS1mb290ZXItbGluay10aXRsZS1jb2wpKTsgfSAuYnVzaW5lc3NEZXNjICogeyBsaW5lLWhlaWdodDoxLjVyZW07IH0gLndyYXBwZXIgeyBtYXJnaW46MCBhdXRvOyB3aWR0aDo5NjBweDsgcG9zaXRpb246cmVsYXRpdmU7IH0gLmxhbmd1YWdlQmFyIHsgbWFyZ2luOjFyZW0gYXV0byA1cHg7IGhlaWdodDoyOHB4OyBwYWRkaW5nOjAgdmFyKC0tcyk7IH0gLnYtY2FyZC50b3BfYmcgeyBkaXNwbGF5OmZsZXg7IGp1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuOyBhbGlnbi1pdGVtczpjZW50ZXI7IG1hcmdpbi10b3A6MTBweDsgbWluLWhlaWdodDo4cmVtOyBwYWRkaW5nOjAgdmFyKC0tcyk7IH0gLmhlYWRlci1zZWN0aW9uIHsgZGlzcGxheTpmbGV4OyB2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7IGFsaWduLWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjsgYWxpZ24taXRlbXM6Y2VudGVyOyB9ICN0cmFkZUluQmFyTW9iaWxleyBiYWNrZ3JvdW5kLWNvbG9yOmJsYWNrOyBjb2xvcjogd2hpdGU7IGJvcmRlci1yYWRpdXM6NXB4OyBkaXNwbGF5OmJsb2NrOyBtYXJnaW46M3B4IDVweCA1cHggNXB4OyB9ICN0cmFkZUluQmFyTW9iaWxlIC5taWRkbGV7IGNvbG9yOiNmZmZmZmY7IH0gI3RyYWRlSW5CYXJNb2JpbGUgI2RlZmF1bHRUb3BCYW5uZXJUaXRsZXsgcGFkZGluZzo1cHggMjBweCAwcHggMjBweDsgfSAjdHJhZGVJbkJhck1vYmlsZSAuZGVmYXVsdFRvcEJhbm5lckJ0bldyYXBwZXIgZGl2eyBtYXgtd2lkdGg6MzMwcHg7IG1hcmdpbjoxMHB4IGF1dG87IHBhZGRpbmc6MTJweCAwOyBib3JkZXItcmFkaXVzOjJweDsgYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1wcm9tby1idG4tYmctY29sb3IpOyB9ICN0cmFkZUluQmFyTW9iaWxlIC5kZWZhdWx0VG9wQmFubmVyQnRuV3JhcHBlciBheyB0ZXh0LWFsaWduOmNlbnRlcjsgbWFyZ2luOjAgYXV0bzsgZm9udC13ZWlnaHQ6NzAwOyB9ICN0cmFkZUluQmFyTW9iaWxlICNkZWZhdWx0VG9wQmFubmVyTG9nbyBzcGFueyBmb250LXNpemU6MC44cmVtOyBmb250LXdlaWdodDozMDA7IGNvbG9yOnZhcigtLW1pZC1ncmF5KTsgfSAjdHJhZGVJbkJhcnsgYmFja2dyb3VuZC1jb2xvcjp2YXIoLS10cmFkZWluYmFyLWJnKTsgY29sb3I6IHZhcigtLXRyYWRlaW5iYXItY29sb3IpOyB9ICN0cmFkZUluQmFyV01vYmlsZSwgI3RyYWRlSW5CYXJXIHsgZGlzcGxheTpmbGV4OyBtaW4taGVpZ2h0OjUwcHg7IG1hcmdpbjphdXRvOyB3aWR0aDptaW4oMTAwJSwxMzUwcHgpOyBwb3NpdGlvbjpyZWxhdGl2ZTsganVzdGlmeS1jb250ZW50OmNlbnRlcjsgfSAubGFuZ3VhZ2VCYXIgLnNlcnZpY2UtaGVhZGVyLWZvcm0gPiBheyBwYWRkaW5nOjRweCAxMnB4OyBoZWlnaHQ6MThweDsgbGluZS1oZWlnaHQ6MThweDsgYm9yZGVyLXJhZGl1czowOyBmb250LXdlaWdodDpub3JtYWw7IGJhY2tncm91bmQtY29sb3I6dmFyKC0taGVhZGVyLXNlcnZpY2UtYXBwb2ludG1lbnQtdGV4dC1jb2xvci1iZywgdmFyKC0tbGFuZ3VhZ2UtYnRuLWFjdGl2ZS1iZy1jb2xvcikpOyBjb2xvcjp2YXIoLS1oZWFkZXItc2VydmljZS1hcHBvaW50bWVudC10ZXh0LWNvbG9yLCB3aGl0ZSApOyB9IC5sYW5ndWFnZUJhciAuc2VydmljZS1oZWFkZXItZm9ybSBhOmhvdmVyIHsgYm9yZGVyLWNvbG9yOnZhcigtLWhlYWRlci1zZXJ2aWNlLWFwcG9pbnRtZW50LXRleHQtY29sb3ItYmcsIHZhcigtLWxhbmd1YWdlLWJ0bi1hY3RpdmUtYmctY29sb3IpKTsgfSAjYWxlcnRNc2dDb250YWluZXJ7IHBvc2l0aW9uOnJlbGF0aXZlOyBiYWNrZ3JvdW5kLWNvbG9yOiMwMDA7IHotaW5kZXg6OTk5OyB3aWR0aDoxMDAlOyBjb2xvcjp3aGl0ZTsgYm94LXNpemluZzpib3JkZXItYm94OyBjb2xvcjp2YXIoLS1hZG1pbi1nZW5lcmFsLWFsZXJ0LWJhci10ZXh0LWNvbG9yKTsgZm9udC13ZWlnaHQ6NjAwOyB9ICNhbGVydE1zZ0NvbnRhaW5lci5zdGljay10b3B7IHBvc2l0aW9uOnN0aWNreTsgdG9wOjA7IHotaW5kZXg6OTk5OTk7IH0gQG1lZGlhIChtYXgtd2lkdGg6NzY3cHgpIHsgLmFsZXJ0LWhpZGUtb24tbW9iaWxlIHsgZGlzcGxheTpub25lICFpbXBvcnRhbnQ7IH0gfSAuZmEtZml4LWNlbnRlcjpiZWZvcmUgeyB3aWR0aDoxLjVlbTsgaGVpZ2h0OjEuNWVtOyBqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyOyBhbGlnbi1pdGVtczpjZW50ZXI7IGRpc3BsYXk6ZmxleDsgfSAjeW91dHViZV9fY29udGFpbmVyLmZ1bGxzY3JlZW57IG9iamVjdC1maXQ6Y292ZXI7IHBvc2l0aW9uOnJlbGF0aXZlOyBsZWZ0OjA7IHJpZ2h0OjA7IHRvcDowOyBvcGFjaXR5OjAuODsgfSAubWFpbkRpdkFkanVzdEhlYWRlciB7IHBvc2l0aW9uOmFic29sdXRlOyBiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50OyB0cmFuc2l0aW9uOmJhY2tncm91bmQtY29sb3IgLjNzLCBib3JkZXIgLjNzOyB0b3A6MDsgbGVmdDowOyByaWdodDowOyBib3R0b206MDsgfSAubWFpbkRpdkFkanVzdEhlYWRlci53aXRoLWFsZXJ0IHsgdG9wOjQwcHg7IH0gLnBheW1lbnRCbG9ja0NvbnRhaW5lciB7IGJhY2tncm91bmQtY29sb3I6dmFyKC0tY2VydC1jb25jcmV0ZS1ncmF5LCB2YXIoLS1saWdodC1ncmF5KSk7IGNvbG9yOnZhcigtLWRhcmstZ3JheSk7IH0gLnZlaGljbGVMb2NhdGlvbnsgYm9yZGVyLXRvcDoxcHggc29saWQgI2RkZDsgdGV4dC1hbGlnbjpjZW50ZXI7IH0gLmxpbmVTZXBhcmF0b3J7IGJvcmRlci10b3A6MXB4IHNvbGlkICNBOUE5QTk7IG1hcmdpbi10b3A6NDBweDsgbWFyZ2luLWJvdHRvbTo0MHB4OyB9IC5yZXZlYWwtbW9kYWwgc3Bhbi5mYS1oYW5kLXBvaW50ZXItY29sb3IgeyBjb2xvcjojZmZmZmZmOyBtYXJnaW4tcmlnaHQ6NXB4OyBtYXJnaW4tdG9wOjVweDsgfSAuY29uZmxpY3QtcmVzb2x2ZS1vcHRpb25zIHsgZm9udC1zaXplOjAuODEzcmVtIDsgfQovKiogL2Nzcy9mb250YXdlc29tZS1hbGwubWluLmNzcyAqKi8KLmZhLC5mYXMsLmZhciwuZmFsLC5mYWQsLmZhYnstbW96LW9zeC1mb250LXNtb290aGluZzpncmF5c2NhbGU7LXdlYmtpdC1mb250LXNtb290aGluZzphbnRpYWxpYXNlZDtkaXNwbGF5OmlubGluZS1ibG9jaztmb250LXN0eWxlOm5vcm1hbDtmb250LXZhcmlhbnQ6bm9ybWFsO3RleHQtcmVuZGVyaW5nOmF1dG87bGluZS1oZWlnaHQ6MX0uZmEtbGd7Zm9udC1zaXplOjEuMzMzMzNlbTtsaW5lLWhlaWdodDouNzVlbTt2ZXJ0aWNhbC1hbGlnbjotLjA2NjdlbX0uZmEteHN7Zm9udC1zaXplOi43NWVtfS5mYS1zbXtmb250LXNpemU6Ljg3NWVtfS5mYS0xeHtmb250LXNpemU6MWVtfS5mYS0yeHtmb250LXNpemU6MmVtfS5mYS0zeHtmb250LXNpemU6M2VtfS5mYS00eHtmb250LXNpemU6NGVtfS5mYS01eHtmb250LXNpemU6NWVtfS5mYS02eHtmb250LXNpemU6NmVtfS5mYS03eHtmb250LXNpemU6N2VtfS5mYS04eHtmb250LXNpemU6OGVtfS5mYS05eHtmb250LXNpemU6OWVtfS5mYS0xMHh7Zm9udC1zaXplOjEwZW19LmZhLWZ3e3RleHQtYWxpZ246Y2VudGVyO3dpZHRoOjEuMjVlbX0uZmEtdWx7bGlzdC1zdHlsZS10eXBlOm5vbmU7bWFyZ2luLWxlZnQ6Mi41ZW07cGFkZGluZy1sZWZ0OjB9LmZhLXVsID4gbGl7cG9zaXRpb246cmVsYXRpdmV9LmZhLWxpe2xlZnQ6LTJlbTtwb3NpdGlvbjphYnNvbHV0ZTt0ZXh0LWFsaWduOmNlbnRlcjt3aWR0aDoyZW07bGluZS1oZWlnaHQ6aW5oZXJpdH0uZmEtYm9yZGVye2JvcmRlcjpzb2xpZCAuMDhlbSAjZWVlO2JvcmRlci1yYWRpdXM6LjFlbTtwYWRkaW5nOi4yZW0gLjI1ZW0gLjE1ZW19LmZhLXB1bGwtbGVmdHtmbG9hdDpsZWZ0fS5mYS1wdWxsLXJpZ2h0e2Zsb2F0OnJpZ2h0fS5mYS5mYS1wdWxsLWxlZnQsLmZhcy5mYS1wdWxsLWxlZnQsLmZhci5mYS1wdWxsLWxlZnQsLmZhbC5mYS1wdWxsLWxlZnQsLmZhYi5mYS1wdWxsLWxlZnR7bWFyZ2luLXJpZ2h0Oi4zZW19LmZhLmZhLXB1bGwtcmlnaHQsLmZhcy5mYS1wdWxsLXJpZ2h0LC5mYXIuZmEtcHVsbC1yaWdodCwuZmFsLmZhLXB1bGwtcmlnaHQsLmZhYi5mYS1wdWxsLXJpZ2h0e21hcmdpbi1sZWZ0Oi4zZW19LmZhLXNwaW57LXdlYmtpdC1hbmltYXRpb246ZmEtc3BpbiAycyBpbmZpbml0ZSBsaW5lYXI7YW5pbWF0aW9uOmZhLXNwaW4gMnMgaW5maW5pdGUgbGluZWFyfS5mYS1wdWxzZXstd2Via2l0LWFuaW1hdGlvbjpmYS1zcGluIDFzIGluZmluaXRlIHN0ZXBzKDgpO2FuaW1hdGlvbjpmYS1zcGluIDFzIGluZmluaXRlIHN0ZXBzKDgpfUAtd2Via2l0LWtleWZyYW1lcyBmYS1zcGluezAley13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgwZGVnKTt0cmFuc2Zvcm06cm90YXRlKDBkZWcpfTEwMCV7LXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDM2MGRlZyk7dHJhbnNmb3JtOnJvdGF0ZSgzNjBkZWcpfX1Aa2V5ZnJhbWVzIGZhLXNwaW57MCV7LXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDBkZWcpO3RyYW5zZm9ybTpyb3RhdGUoMGRlZyl9MTAwJXstd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoMzYwZGVnKTt0cmFuc2Zvcm06cm90YXRlKDM2MGRlZyl9fS5mYS1yb3RhdGUtOTB7LW1zLWZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQmFzaWNJbWFnZShyb3RhdGlvbj0xKTstd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoOTBkZWcpO3RyYW5zZm9ybTpyb3RhdGUoOTBkZWcpfS5mYS1yb3RhdGUtMTgwey1tcy1maWx0ZXI6cHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkJhc2ljSW1hZ2Uocm90YXRpb249Mik7LXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDE4MGRlZyk7dHJhbnNmb3JtOnJvdGF0ZSgxODBkZWcpfS5mYS1yb3RhdGUtMjcwey1tcy1maWx0ZXI6cHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkJhc2ljSW1hZ2Uocm90YXRpb249Myk7LXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDI3MGRlZyk7dHJhbnNmb3JtOnJvdGF0ZSgyNzBkZWcpfS5mYS1mbGlwLWhvcml6b250YWx7LW1zLWZpbHRlcjoicHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkJhc2ljSW1hZ2Uocm90YXRpb249MCxtaXJyb3I9MSkiOy13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKC0xLDEpO3RyYW5zZm9ybTpzY2FsZSgtMSwxKX0uZmEtZmxpcC12ZXJ0aWNhbHstbXMtZmlsdGVyOiJwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQmFzaWNJbWFnZShyb3RhdGlvbj0yLG1pcnJvcj0xKSI7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGUoMSwtMSk7dHJhbnNmb3JtOnNjYWxlKDEsLTEpfS5mYS1mbGlwLWJvdGgsLmZhLWZsaXAtaG9yaXpvbnRhbC5mYS1mbGlwLXZlcnRpY2Fsey1tcy1maWx0ZXI6InByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5CYXNpY0ltYWdlKHJvdGF0aW9uPTIsbWlycm9yPTEpIjstd2Via2l0LXRyYW5zZm9ybTpzY2FsZSgtMSwtMSk7dHJhbnNmb3JtOnNjYWxlKC0xLC0xKX06cm9vdCAuZmEtcm90YXRlLTkwLDpyb290IC5mYS1yb3RhdGUtMTgwLDpyb290IC5mYS1yb3RhdGUtMjcwLDpyb290IC5mYS1mbGlwLWhvcml6b250YWwsOnJvb3QgLmZhLWZsaXAtdmVydGljYWwsOnJvb3QgLmZhLWZsaXAtYm90aHstd2Via2l0LWZpbHRlcjpub25lO2ZpbHRlcjpub25lfS5mYS1zdGFja3tkaXNwbGF5OmlubGluZS1ibG9jaztoZWlnaHQ6MmVtO2xpbmUtaGVpZ2h0OjJlbTtwb3NpdGlvbjpyZWxhdGl2ZTt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7d2lkdGg6Mi41ZW19LmZhLXN0YWNrLTF4LC5mYS1zdGFjay0yeHtsZWZ0OjA7cG9zaXRpb246YWJzb2x1dGU7dGV4dC1hbGlnbjpjZW50ZXI7d2lkdGg6MTAwJX0uZmEtc3RhY2stMXh7bGluZS1oZWlnaHQ6aW5oZXJpdH0uZmEtc3RhY2stMnh7Zm9udC1zaXplOjJlbX0uZmEtaW52ZXJzZXtjb2xvcjojZmZmfS5mYS01MDBweDpiZWZvcmV7Y29udGVudDoiXGYyNmUifS5mYS1hY2Nlc3NpYmxlLWljb246YmVmb3Jle2NvbnRlbnQ6IlxmMzY4In0uZmEtYWRkcmVzcy1ib29rOmJlZm9yZXtjb250ZW50OiJcZjJiOSJ9LmZhLWFkZHJlc3MtY2FyZDpiZWZvcmV7Y29udGVudDoiXGYyYmIifS5mYS1haXItZnJlc2hlbmVyOmJlZm9yZXtjb250ZW50OiJcZjVkMCJ9LmZhLWFsYXJtLWNsb2NrOmJlZm9yZXtjb250ZW50OiJcZjM0ZSJ9LmZhLWFtYnVsYW5jZTpiZWZvcmV7Y29udGVudDoiXGYwZjkifS5mYS1hbmRyb2lkOmJlZm9yZXtjb250ZW50OiJcZjE3YiJ9LmZhLWFuZ2xlLWRvdWJsZS1kb3duOmJlZm9yZXtjb250ZW50OiJcZjEwMyJ9LmZhLWFuZ2xlLWRvdWJsZS1sZWZ0OmJlZm9yZXtjb250ZW50OiJcZjEwMCJ9LmZhLWFuZ2xlLWRvdWJsZS1yaWdodDpiZWZvcmV7Y29udGVudDoiXGYxMDEifS5mYS1hbmdsZS1kb3VibGUtdXA6YmVmb3Jle2NvbnRlbnQ6IlxmMTAyIn0uZmEtYW5nbGUtZG93bjpiZWZvcmV7Y29udGVudDoiXGYxMDcifS5mYS1hbmdsZS1sZWZ0OmJlZm9yZXtjb250ZW50OiJcZjEwNCJ9LmZhLWFuZ2xlLXJpZ2h0OmJlZm9yZXtjb250ZW50OiJcZjEwNSJ9LmZhLWFuZ2xlLXVwOmJlZm9yZXtjb250ZW50OiJcZjEwNiJ9LmZhLWFwcGxlOmJlZm9yZXtjb250ZW50OiJcZjE3OSJ9LmZhLWFyY2hpdmU6YmVmb3Jle2NvbnRlbnQ6IlxmMTg3In0uZmEtYXJyb3ctYWx0LWNpcmNsZS1kb3duOmJlZm9yZXtjb250ZW50OiJcZjM1OCJ9LmZhLWFycm93LWFsdC1jaXJjbGUtbGVmdDpiZWZvcmV7Y29udGVudDoiXGYzNTkifS5mYS1hcnJvdy1hbHQtY2lyY2xlLXJpZ2h0OmJlZm9yZXtjb250ZW50OiJcZjM1YSJ9LmZhLWFycm93LWFsdC1jaXJjbGUtdXA6YmVmb3Jle2NvbnRlbnQ6IlxmMzViIn0uZmEtYXJyb3ctYWx0LWRvd246YmVmb3Jle2NvbnRlbnQ6IlxmMzU0In0uZmEtYXJyb3ctYWx0LWZyb20tYm90dG9tOmJlZm9yZXtjb250ZW50OiJcZjM0NiJ9LmZhLWFycm93LWFsdC1mcm9tLWxlZnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMzQ3In0uZmEtYXJyb3ctYWx0LWZyb20tcmlnaHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMzQ4In0uZmEtYXJyb3ctYWx0LWZyb20tdG9wOmJlZm9yZXtjb250ZW50OiJcZjM0OSJ9LmZhLWFycm93LWFsdC1sZWZ0OmJlZm9yZXtjb250ZW50OiJcZjM1NSJ9LmZhLWFycm93LWFsdC1yaWdodDpiZWZvcmV7Y29udGVudDoiXGYzNTYifS5mYS1hcnJvdy1hbHQtc3F1YXJlLWRvd246YmVmb3Jle2NvbnRlbnQ6IlxmMzUwIn0uZmEtYXJyb3ctYWx0LXNxdWFyZS1sZWZ0OmJlZm9yZXtjb250ZW50OiJcZjM1MSJ9LmZhLWFycm93LWFsdC1zcXVhcmUtcmlnaHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMzUyIn0uZmEtYXJyb3ctYWx0LXNxdWFyZS11cDpiZWZvcmV7Y29udGVudDoiXGYzNTMifS5mYS1hcnJvdy1hbHQtdG8tYm90dG9tOmJlZm9yZXtjb250ZW50OiJcZjM0YSJ9LmZhLWFycm93LWFsdC10by1sZWZ0OmJlZm9yZXtjb250ZW50OiJcZjM0YiJ9LmZhLWFycm93LWFsdC10by1yaWdodDpiZWZvcmV7Y29udGVudDoiXGYzNGMifS5mYS1hcnJvdy1hbHQtdG8tdG9wOmJlZm9yZXtjb250ZW50OiJcZjM0ZCJ9LmZhLWFycm93LWFsdC11cDpiZWZvcmV7Y29udGVudDoiXGYzNTcifS5mYS1hcnJvdy1jaXJjbGUtZG93bjpiZWZvcmV7Y29udGVudDoiXGYwYWIifS5mYS1hcnJvdy1jaXJjbGUtbGVmdDpiZWZvcmV7Y29udGVudDoiXGYwYTgifS5mYS1hcnJvdy1jaXJjbGUtcmlnaHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMGE5In0uZmEtYXJyb3ctY2lyY2xlLXVwOmJlZm9yZXtjb250ZW50OiJcZjBhYSJ9LmZhLWFycm93LWRvd246YmVmb3Jle2NvbnRlbnQ6IlxmMDYzIn0uZmEtYXJyb3ctZnJvbS1ib3R0b206YmVmb3Jle2NvbnRlbnQ6IlxmMzQyIn0uZmEtYXJyb3ctZnJvbS1sZWZ0OmJlZm9yZXtjb250ZW50OiJcZjM0MyJ9LmZhLWFycm93LWZyb20tcmlnaHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMzQ0In0uZmEtYXJyb3ctZnJvbS10b3A6YmVmb3Jle2NvbnRlbnQ6IlxmMzQ1In0uZmEtYXJyb3ctbGVmdDpiZWZvcmV7Y29udGVudDoiXGYwNjAifS5mYS1hcnJvdy1yaWdodDpiZWZvcmV7Y29udGVudDoiXGYwNjEifS5mYS1hcnJvdy1zcXVhcmUtZG93bjpiZWZvcmV7Y29udGVudDoiXGYzMzkifS5mYS1hcnJvdy1zcXVhcmUtbGVmdDpiZWZvcmV7Y29udGVudDoiXGYzM2EifS5mYS1hcnJvdy1zcXVhcmUtcmlnaHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMzNiIn0uZmEtYXJyb3ctc3F1YXJlLXVwOmJlZm9yZXtjb250ZW50OiJcZjMzYyJ9LmZhLWFycm93LXRvLWJvdHRvbTpiZWZvcmV7Y29udGVudDoiXGYzM2QifS5mYS1hcnJvdy10by1sZWZ0OmJlZm9yZXtjb250ZW50OiJcZjMzZSJ9LmZhLWFycm93LXRvLXJpZ2h0OmJlZm9yZXtjb250ZW50OiJcZjM0MCJ9LmZhLWFycm93LXRvLXRvcDpiZWZvcmV7Y29udGVudDoiXGYzNDEifS5mYS1hcnJvdy11cDpiZWZvcmV7Y29udGVudDoiXGYwNjIifS5mYS1hcnJvd3M6YmVmb3Jle2NvbnRlbnQ6IlxmMDQ3In0uZmEtYXJyb3dzLWFsdDpiZWZvcmV7Y29udGVudDoiXGYwYjIifS5mYS1hcnJvd3MtYWx0LWg6YmVmb3Jle2NvbnRlbnQ6IlxmMzM3In0uZmEtYXJyb3dzLWFsdC12OmJlZm9yZXtjb250ZW50OiJcZjMzOCJ9LmZhLWFycm93cy1oOmJlZm9yZXtjb250ZW50OiJcZjA3ZSJ9LmZhLWFycm93cy12OmJlZm9yZXtjb250ZW50OiJcZjA3ZCJ9LmZhLWFzc2lzdGl2ZS1saXN0ZW5pbmctc3lzdGVtczpiZWZvcmV7Y29udGVudDoiXGYyYTIifS5mYS1hdDpiZWZvcmV7Y29udGVudDoiXGYxZmEifS5mYS1hdWRpby1kZXNjcmlwdGlvbjpiZWZvcmV7Y29udGVudDoiXGYyOWUifS5mYS1hd2FyZDpiZWZvcmV7Y29udGVudDoiXGY1NTkifS5mYS1iYWRnZTpiZWZvcmV7Y29udGVudDoiXGYzMzUifS5mYS1iYWRnZS1jaGVjazpiZWZvcmV7Y29udGVudDoiXGYzMzYifS5mYS1iYW46YmVmb3Jle2NvbnRlbnQ6IlxmMDVlIn0uZmEtYmFyY29kZTpiZWZvcmV7Y29udGVudDoiXGYwMmEifS5mYS1iYXJjb2RlLWFsdDpiZWZvcmV7Y29udGVudDoiXGY0NjMifS5mYS1iYXJzOmJlZm9yZXtjb250ZW50OiJcZjBjOSJ9LmZhLWJhdHRlcnktZnVsbDpiZWZvcmV7Y29udGVudDoiXGYyNDAifS5mYS1iYXR0ZXJ5LWhhbGY6YmVmb3Jle2NvbnRlbnQ6IlxmMjQyIn0uZmEtYmVsbDpiZWZvcmV7Y29udGVudDoiXGYwZjMifS5mYS1iZWxsLWV4Y2xhbWF0aW9uOmJlZm9yZXtjb250ZW50OiJcZjg0OCJ9LmZhLWJlbGwtcGx1czpiZWZvcmV7Y29udGVudDoiXGY4NDkifS5mYS1iZWxsLXNsYXNoOmJlZm9yZXtjb250ZW50OiJcZjFmNiJ9LmZhLWJsb2c6YmVmb3Jle2NvbnRlbnQ6IlxmNzgxIn0uZmEtYmxvZ2dlcjpiZWZvcmV7Y29udGVudDoiXGYzN2MifS5mYS1ibG9nZ2VyLWI6YmVmb3Jle2NvbnRlbnQ6IlxmMzdkIn0uZmEtYmx1ZXRvb3RoOmJlZm9yZXtjb250ZW50OiJcZjI5MyJ9LmZhLWJsdWV0b290aC1iOmJlZm9yZXtjb250ZW50OiJcZjI5NCJ9LmZhLWJvbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMGU3In0uZmEtYm9va21hcms6YmVmb3Jle2NvbnRlbnQ6IlxmMDJlIn0uZmEtYm94LW9wZW46YmVmb3Jle2NvbnRlbnQ6IlxmNDllIn0uZmEtYnJvYWRjYXN0LXRvd2VyOmJlZm9yZXtjb250ZW50OiJcZjUxOSJ9LmZhLWJ0YzpiZWZvcmV7Y29udGVudDoiXGYxNWEifS5mYS1idWc6YmVmb3Jle2NvbnRlbnQ6IlxmMTg4In0uZmEtYnVpbGRpbmc6YmVmb3Jle2NvbnRlbnQ6IlxmMWFkIn0uZmEtYnVsbGhvcm46YmVmb3Jle2NvbnRlbnQ6IlxmMGExIn0uZmEtYnVsbHNleWU6YmVmb3Jle2NvbnRlbnQ6IlxmMTQwIn0uZmEtYnVzOmJlZm9yZXtjb250ZW50OiJcZjIwNyJ9LmZhLWJ1cy1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmNTVlIn0uZmEtYnVzLXNjaG9vbDpiZWZvcmV7Y29udGVudDoiXGY1ZGQifS5mYS1jYWxjdWxhdG9yOmJlZm9yZXtjb250ZW50OiJcZjFlYyJ9LmZhLWNhbGN1bGF0b3ItYWx0OmJlZm9yZXtjb250ZW50OiJcZjY0YyJ9LmZhLWNhbGVuZGFyOmJlZm9yZXtjb250ZW50OiJcZjEzMyJ9LmZhLWNhbGVuZGFyLWFsdDpiZWZvcmV7Y29udGVudDoiXGYwNzMifS5mYS1jYWxlbmRhci1jaGVjazpiZWZvcmV7Y29udGVudDoiXGYyNzQifS5mYS1jYWxlbmRhci1lZGl0OmJlZm9yZXtjb250ZW50OiJcZjMzMyJ9LmZhLWNhbGVuZGFyLWV4Y2xhbWF0aW9uOmJlZm9yZXtjb250ZW50OiJcZjMzNCJ9LmZhLWNhbGVuZGFyLW1pbnVzOmJlZm9yZXtjb250ZW50OiJcZjI3MiJ9LmZhLWNhbGVuZGFyLXRpbWVzOmJlZm9yZXtjb250ZW50OiJcZjI3MyJ9LmZhLWNhbWVyYTpiZWZvcmV7Y29udGVudDoiXGYwMzAifS5mYS1jYW1lcmEtYWx0OmJlZm9yZXtjb250ZW50OiJcZjMzMiJ9LmZhLWNhbWVyYS1ob21lOmJlZm9yZXtjb250ZW50OiJcZjhmZSJ9LmZhLWNhcjpiZWZvcmV7Y29udGVudDoiXGYxYjkifS5mYS1jYXItYWx0OmJlZm9yZXtjb250ZW50OiJcZjVkZSJ9LmZhLWNhci1iYXR0ZXJ5OmJlZm9yZXtjb250ZW50OiJcZjVkZiJ9LmZhLWNhci1idWlsZGluZzpiZWZvcmV7Y29udGVudDoiXGY4NTkifS5mYS1jYXItYnVtcDpiZWZvcmV7Y29udGVudDoiXGY1ZTAifS5mYS1jYXItYnVzOmJlZm9yZXtjb250ZW50OiJcZjg1YSJ9LmZhLWNhci1jcmFzaDpiZWZvcmV7Y29udGVudDoiXGY1ZTEifS5mYS1jYXItZ2FyYWdlOmJlZm9yZXtjb250ZW50OiJcZjVlMiJ9LmZhLWNhci1tZWNoYW5pYzpiZWZvcmV7Y29udGVudDoiXGY1ZTMifS5mYS1jYXItc2lkZTpiZWZvcmV7Y29udGVudDoiXGY1ZTQifS5mYS1jYXItdGlsdDpiZWZvcmV7Y29udGVudDoiXGY1ZTUifS5mYS1jYXItd2FzaDpiZWZvcmV7Y29udGVudDoiXGY1ZTYifS5mYS1jYXJhdmFuOmJlZm9yZXtjb250ZW50OiJcZjhmZiJ9LmZhLWNhcmF2YW4tYWx0OmJlZm9yZXtjb250ZW50OiJcZTAwMCJ9LmZhLWNhcmV0LWNpcmNsZS1kb3duOmJlZm9yZXtjb250ZW50OiJcZjMyZCJ9LmZhLWNhcmV0LWNpcmNsZS1sZWZ0OmJlZm9yZXtjb250ZW50OiJcZjMyZSJ9LmZhLWNhcmV0LWNpcmNsZS1yaWdodDpiZWZvcmV7Y29udGVudDoiXGYzMzAifS5mYS1jYXJldC1jaXJjbGUtdXA6YmVmb3Jle2NvbnRlbnQ6IlxmMzMxIn0uZmEtY2FyZXQtZG93bjpiZWZvcmV7Y29udGVudDoiXGYwZDcifS5mYS1jYXJldC1sZWZ0OmJlZm9yZXtjb250ZW50OiJcZjBkOSJ9LmZhLWNhcmV0LXJpZ2h0OmJlZm9yZXtjb250ZW50OiJcZjBkYSJ9LmZhLWNhcmV0LXNxdWFyZS1kb3duOmJlZm9yZXtjb250ZW50OiJcZjE1MCJ9LmZhLWNhcmV0LXNxdWFyZS1sZWZ0OmJlZm9yZXtjb250ZW50OiJcZjE5MSJ9LmZhLWNhcmV0LXNxdWFyZS1yaWdodDpiZWZvcmV7Y29udGVudDoiXGYxNTIifS5mYS1jYXJldC1zcXVhcmUtdXA6YmVmb3Jle2NvbnRlbnQ6IlxmMTUxIn0uZmEtY2FyZXQtdXA6YmVmb3Jle2NvbnRlbnQ6IlxmMGQ4In0uZmEtY2FyczpiZWZvcmV7Y29udGVudDoiXGY4NWIifS5mYS1jYXJ0LWFycm93LWRvd246YmVmb3Jle2NvbnRlbnQ6IlxmMjE4In0uZmEtY2FydC1wbHVzOmJlZm9yZXtjb250ZW50OiJcZjIxNyJ9LmZhLWNjLXBheXBhbDpiZWZvcmV7Y29udGVudDoiXGYxZjQifS5mYS1jZXJ0aWZpY2F0ZTpiZWZvcmV7Y29udGVudDoiXGYwYTMifS5mYS1jaGFpcjpiZWZvcmV7Y29udGVudDoiXGY2YzAifS5mYS1jaGFsa2JvYXJkOmJlZm9yZXtjb250ZW50OiJcZjUxYiJ9LmZhLWNoYXJnaW5nLXN0YXRpb246YmVmb3Jle2NvbnRlbnQ6IlxmNWU3In0uZmEtY2hhcnQtbGluZTpiZWZvcmV7Y29udGVudDoiXGYyMDEifS5mYS1jaGFydC1saW5lLWRvd246YmVmb3Jle2NvbnRlbnQ6IlxmNjRkIn0uZmEtY2hlY2s6YmVmb3Jle2NvbnRlbnQ6IlxmMDBjIn0uZmEtY2hlY2stY2lyY2xlOmJlZm9yZXtjb250ZW50OiJcZjA1OCJ9LmZhLWNoZWNrLWRvdWJsZTpiZWZvcmV7Y29udGVudDoiXGY1NjAifS5mYS1jaGVjay1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMTRhIn0uZmEtY2hldnJvbi1jaXJjbGUtZG93bjpiZWZvcmV7Y29udGVudDoiXGYxM2EifS5mYS1jaGV2cm9uLWNpcmNsZS1sZWZ0OmJlZm9yZXtjb250ZW50OiJcZjEzNyJ9LmZhLWNoZXZyb24tY2lyY2xlLXJpZ2h0OmJlZm9yZXtjb250ZW50OiJcZjEzOCJ9LmZhLWNoZXZyb24tY2lyY2xlLXVwOmJlZm9yZXtjb250ZW50OiJcZjEzOSJ9LmZhLWNoZXZyb24tZG91YmxlLWRvd246YmVmb3Jle2NvbnRlbnQ6IlxmMzIyIn0uZmEtY2hldnJvbi1kb3VibGUtbGVmdDpiZWZvcmV7Y29udGVudDoiXGYzMjMifS5mYS1jaGV2cm9uLWRvdWJsZS1yaWdodDpiZWZvcmV7Y29udGVudDoiXGYzMjQifS5mYS1jaGV2cm9uLWRvdWJsZS11cDpiZWZvcmV7Y29udGVudDoiXGYzMjUifS5mYS1jaGV2cm9uLWRvd246YmVmb3Jle2NvbnRlbnQ6IlxmMDc4In0uZmEtY2hldnJvbi1sZWZ0OmJlZm9yZXtjb250ZW50OiJcZjA1MyJ9LmZhLWNoZXZyb24tcmlnaHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMDU0In0uZmEtY2hldnJvbi1zcXVhcmUtZG93bjpiZWZvcmV7Y29udGVudDoiXGYzMjkifS5mYS1jaGV2cm9uLXNxdWFyZS1sZWZ0OmJlZm9yZXtjb250ZW50OiJcZjMyYSJ9LmZhLWNoZXZyb24tc3F1YXJlLXJpZ2h0OmJlZm9yZXtjb250ZW50OiJcZjMyYiJ9LmZhLWNoZXZyb24tc3F1YXJlLXVwOmJlZm9yZXtjb250ZW50OiJcZjMyYyJ9LmZhLWNoZXZyb24tdXA6YmVmb3Jle2NvbnRlbnQ6IlxmMDc3In0uZmEtY2lyY2xlOmJlZm9yZXtjb250ZW50OiJcZjExMSJ9LmZhLWNpcmNsZS1ub3RjaDpiZWZvcmV7Y29udGVudDoiXGYxY2UifS5mYS1jaXR5OmJlZm9yZXtjb250ZW50OiJcZjY0ZiJ9LmZhLWNsaXBib2FyZDpiZWZvcmV7Y29udGVudDoiXGYzMjgifS5mYS1jbG9jazpiZWZvcmV7Y29udGVudDoiXGYwMTcifS5mYS1jbG9uZTpiZWZvcmV7Y29udGVudDoiXGYyNGQifS5mYS1jbG9zZWQtY2FwdGlvbmluZzpiZWZvcmV7Y29udGVudDoiXGYyMGEifS5mYS1jbG91ZDpiZWZvcmV7Y29udGVudDoiXGYwYzIifS5mYS1jbG91ZC1kb3dubG9hZDpiZWZvcmV7Y29udGVudDoiXGYwZWQifS5mYS1jbG91ZC1kb3dubG9hZC1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMzgxIn0uZmEtY2xvdWQtdXBsb2FkOmJlZm9yZXtjb250ZW50OiJcZjBlZSJ9LmZhLWNsb3VkLXVwbG9hZC1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMzgyIn0uZmEtY2x1YjpiZWZvcmV7Y29udGVudDoiXGYzMjcifS5mYS1jb2ZmZWU6YmVmb3Jle2NvbnRlbnQ6IlxmMGY0In0uZmEtY29nOmJlZm9yZXtjb250ZW50OiJcZjAxMyJ9LmZhLWNvZ3M6YmVmb3Jle2NvbnRlbnQ6IlxmMDg1In0uZmEtY29tbWVudDpiZWZvcmV7Y29udGVudDoiXGYwNzUifS5mYS1jb21tZW50LWFsdDpiZWZvcmV7Y29udGVudDoiXGYyN2EifS5mYS1jb21tZW50LWFsdC1jaGVjazpiZWZvcmV7Y29udGVudDoiXGY0YTIifS5mYS1jb21tZW50LWFsdC1kb2xsYXI6YmVmb3Jle2NvbnRlbnQ6IlxmNjUwIn0uZmEtY29tbWVudC1kb2xsYXI6YmVmb3Jle2NvbnRlbnQ6IlxmNjUxIn0uZmEtY29tbWVudHM6YmVmb3Jle2NvbnRlbnQ6IlxmMDg2In0uZmEtY29tbWVudHMtYWx0OmJlZm9yZXtjb250ZW50OiJcZjRiNiJ9LmZhLWNvbW1lbnRzLWFsdC1kb2xsYXI6YmVmb3Jle2NvbnRlbnQ6IlxmNjUyIn0uZmEtY29tbWVudHMtZG9sbGFyOmJlZm9yZXtjb250ZW50OiJcZjY1MyJ9LmZhLWNvbXByZXNzLWFsdDpiZWZvcmV7Y29udGVudDoiXGY0MjIifS5mYS1jb21wcmVzcy1hcnJvd3MtYWx0OmJlZm9yZXtjb250ZW50OiJcZjc4YyJ9LmZhLWNvcHk6YmVmb3Jle2NvbnRlbnQ6IlxmMGM1In0uZmEtY29weXJpZ2h0OmJlZm9yZXtjb250ZW50OiJcZjFmOSJ9LmZhLWNvdWNoOmJlZm9yZXtjb250ZW50OiJcZjRiOCJ9LmZhLWNyZWF0aXZlLWNvbW1vbnMtc2hhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmNGYyIn0uZmEtY3JlZGl0LWNhcmQ6YmVmb3Jle2NvbnRlbnQ6IlxmMDlkIn0uZmEtY3V0OmJlZm9yZXtjb250ZW50OiJcZjBjNCJ9LmZhLWRhdGFiYXNlOmJlZm9yZXtjb250ZW50OiJcZjFjMCJ9LmZhLWRlc2t0b3A6YmVmb3Jle2NvbnRlbnQ6IlxmMTA4In0uZmEtZGlhbW9uZDpiZWZvcmV7Y29udGVudDoiXGYyMTkifS5mYS1kaWdpdGFsLXRhY2hvZ3JhcGg6YmVmb3Jle2NvbnRlbnQ6IlxmNTY2In0uZmEtZG9sbGFyLXNpZ246YmVmb3Jle2NvbnRlbnQ6IlxmMTU1In0uZmEtZG90LWNpcmNsZTpiZWZvcmV7Y29udGVudDoiXGYxOTIifS5mYS1kb3dubG9hZDpiZWZvcmV7Y29udGVudDoiXGYwMTkifS5mYS1lZGl0OmJlZm9yZXtjb250ZW50OiJcZjA0NCJ9LmZhLWVsbGlwc2lzLWg6YmVmb3Jle2NvbnRlbnQ6IlxmMTQxIn0uZmEtZWxsaXBzaXMtaC1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMzliIn0uZmEtZWxsaXBzaXMtdjpiZWZvcmV7Y29udGVudDoiXGYxNDIifS5mYS1lbGxpcHNpcy12LWFsdDpiZWZvcmV7Y29udGVudDoiXGYzOWMifS5mYS1lbmdpbmUtd2FybmluZzpiZWZvcmV7Y29udGVudDoiXGY1ZjIifS5mYS1lbnZlbG9wZTpiZWZvcmV7Y29udGVudDoiXGYwZTAifS5mYS1lbnZlbG9wZS1vcGVuOmJlZm9yZXtjb250ZW50OiJcZjJiNiJ9LmZhLWVudmVsb3BlLXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYxOTkifS5mYS1lcmFzZXI6YmVmb3Jle2NvbnRlbnQ6IlxmMTJkIn0uZmEtZXhjaGFuZ2U6YmVmb3Jle2NvbnRlbnQ6IlxmMGVjIn0uZmEtZXhjaGFuZ2UtYWx0OmJlZm9yZXtjb250ZW50OiJcZjM2MiJ9LmZhLWV4Y2xhbWF0aW9uOmJlZm9yZXtjb250ZW50OiJcZjEyYSJ9LmZhLWV4Y2xhbWF0aW9uLWNpcmNsZTpiZWZvcmV7Y29udGVudDoiXGYwNmEifS5mYS1leGNsYW1hdGlvbi1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMzIxIn0uZmEtZXhjbGFtYXRpb24tdHJpYW5nbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMDcxIn0uZmEtZXhwYW5kLWFsdDpiZWZvcmV7Y29udGVudDoiXGY0MjQifS5mYS1leHBhbmQtYXJyb3dzOmJlZm9yZXtjb250ZW50OiJcZjMxZCJ9LmZhLWV4cGFuZC1hcnJvd3MtYWx0OmJlZm9yZXtjb250ZW50OiJcZjMxZSJ9LmZhLWV4dGVybmFsLWxpbms6YmVmb3Jle2NvbnRlbnQ6IlxmMDhlIn0uZmEtZXh0ZXJuYWwtbGluay1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMzVkIn0uZmEtZXh0ZXJuYWwtbGluay1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMTRjIn0uZmEtZXh0ZXJuYWwtbGluay1zcXVhcmUtYWx0OmJlZm9yZXtjb250ZW50OiJcZjM2MCJ9LmZhLWV5ZTpiZWZvcmV7Y29udGVudDoiXGYwNmUifS5mYS1leWUtc2xhc2g6YmVmb3Jle2NvbnRlbnQ6IlxmMDcwIn0uZmEtZmFjZWJvb2s6YmVmb3Jle2NvbnRlbnQ6IlxmMDlhIn0uZmEtZmFjZWJvb2stZjpiZWZvcmV7Y29udGVudDoiXGYzOWUifS5mYS1mYWNlYm9vay1tZXNzZW5nZXI6YmVmb3Jle2NvbnRlbnQ6IlxmMzlmIn0uZmEtZmFjZWJvb2stc3F1YXJlOmJlZm9yZXtjb250ZW50OiJcZjA4MiJ9LmZhLWZheDpiZWZvcmV7Y29udGVudDoiXGYxYWMifS5mYS1maWxlOmJlZm9yZXtjb250ZW50OiJcZjE1YiJ9LmZhLWZpbGUtYWx0OmJlZm9yZXtjb250ZW50OiJcZjE1YyJ9LmZhLWZpbGUtYXJjaGl2ZTpiZWZvcmV7Y29udGVudDoiXGYxYzYifS5mYS1maWxlLWF1ZGlvOmJlZm9yZXtjb250ZW50OiJcZjFjNyJ9LmZhLWZpbGUtY2hhcnQtbGluZTpiZWZvcmV7Y29udGVudDoiXGY2NTkifS5mYS1maWxlLWNoZWNrOmJlZm9yZXtjb250ZW50OiJcZjMxNiJ9LmZhLWZpbGUtY29kZTpiZWZvcmV7Y29udGVudDoiXGYxYzkifS5mYS1maWxlLWRvd25sb2FkOmJlZm9yZXtjb250ZW50OiJcZjU2ZCJ9LmZhLWZpbGUtZWRpdDpiZWZvcmV7Y29udGVudDoiXGYzMWMifS5mYS1maWxlLWV4Y2VsOmJlZm9yZXtjb250ZW50OiJcZjFjMyJ9LmZhLWZpbGUtZXhjbGFtYXRpb246YmVmb3Jle2NvbnRlbnQ6IlxmMzFhIn0uZmEtZmlsZS1leHBvcnQ6YmVmb3Jle2NvbnRlbnQ6IlxmNTZlIn0uZmEtZmlsZS1pbWFnZTpiZWZvcmV7Y29udGVudDoiXGYxYzUifS5mYS1maWxlLWltcG9ydDpiZWZvcmV7Y29udGVudDoiXGY1NmYifS5mYS1maWxlLWludm9pY2UtZG9sbGFyOmJlZm9yZXtjb250ZW50OiJcZjU3MSJ9LmZhLWZpbGUtbWludXM6YmVmb3Jle2NvbnRlbnQ6IlxmMzE4In0uZmEtZmlsZS1tdXNpYzpiZWZvcmV7Y29udGVudDoiXGY4YjYifS5mYS1maWxlLXBkZjpiZWZvcmV7Y29udGVudDoiXGYxYzEifS5mYS1maWxlLXBsdXM6YmVmb3Jle2NvbnRlbnQ6IlxmMzE5In0uZmEtZmlsZS1wb3dlcnBvaW50OmJlZm9yZXtjb250ZW50OiJcZjFjNCJ9LmZhLWZpbGUtc2VhcmNoOmJlZm9yZXtjb250ZW50OiJcZjg2NSJ9LmZhLWZpbGUtdGltZXM6YmVmb3Jle2NvbnRlbnQ6IlxmMzE3In0uZmEtZmlsZS11cGxvYWQ6YmVmb3Jle2NvbnRlbnQ6IlxmNTc0In0uZmEtZmlsZS12aWRlbzpiZWZvcmV7Y29udGVudDoiXGYxYzgifS5mYS1maWxlLXdvcmQ6YmVmb3Jle2NvbnRlbnQ6IlxmMWMyIn0uZmEtZmlsdGVyOmJlZm9yZXtjb250ZW50OiJcZjBiMCJ9LmZhLWZpbmdlcnByaW50OmJlZm9yZXtjb250ZW50OiJcZjU3NyJ9LmZhLWZpcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMDZkIn0uZmEtZmxhZzpiZWZvcmV7Y29udGVudDoiXGYwMjQifS5mYS1mbGFnLWFsdDpiZWZvcmV7Y29udGVudDoiXGY3NGMifS5mYS1mbGFnLWNoZWNrZXJlZDpiZWZvcmV7Y29udGVudDoiXGYxMWUifS5mYS1mbHV4LWNhcGFjaXRvcjpiZWZvcmV7Y29udGVudDoiXGY4YmEifS5mYS1mb2xkZXI6YmVmb3Jle2NvbnRlbnQ6IlxmMDdiIn0uZmEtZm9sZGVyLWRvd25sb2FkOmJlZm9yZXtjb250ZW50OiJcZTA1MyJ9LmZhLWZvbGRlci1vcGVuOmJlZm9yZXtjb250ZW50OiJcZjA3YyJ9LmZhLWZvbGRlci11cGxvYWQ6YmVmb3Jle2NvbnRlbnQ6IlxlMDU0In0uZmEtZnJvd246YmVmb3Jle2NvbnRlbnQ6IlxmMTE5In0uZmEtZnJvd24tb3BlbjpiZWZvcmV7Y29udGVudDoiXGY1N2EifS5mYS1nYWxhY3RpYy1zZW5hdGU6YmVmb3Jle2NvbnRlbnQ6IlxmNTBkIn0uZmEtZ2FyYWdlOmJlZm9yZXtjb250ZW50OiJcZTAwOSJ9LmZhLWdhcmFnZS1jYXI6YmVmb3Jle2NvbnRlbnQ6IlxlMDBhIn0uZmEtZ2FyYWdlLW9wZW46YmVmb3Jle2NvbnRlbnQ6IlxlMDBiIn0uZmEtZ2FzLXB1bXA6YmVmb3Jle2NvbnRlbnQ6IlxmNTJmIn0uZmEtZ2FzLXB1bXAtc2xhc2g6YmVmb3Jle2NvbnRlbnQ6IlxmNWY0In0uZmEtZ2xhc3NlczpiZWZvcmV7Y29udGVudDoiXGY1MzAifS5mYS1nbG9iZTpiZWZvcmV7Y29udGVudDoiXGYwYWMifS5mYS1nb29nbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMWEwIn0uZmEtZ3JpcC1ob3Jpem9udGFsOmJlZm9yZXtjb250ZW50OiJcZjU4ZCJ9LmZhLWdyaXAtbGluZXM6YmVmb3Jle2NvbnRlbnQ6IlxmN2E0In0uZmEtZ3JpcC1saW5lcy12ZXJ0aWNhbDpiZWZvcmV7Y29udGVudDoiXGY3YTUifS5mYS1ncmlwLXZlcnRpY2FsOmJlZm9yZXtjb250ZW50OiJcZjU4ZSJ9LmZhLWhhbmQtaG9sZGluZy11c2Q6YmVmb3Jle2NvbnRlbnQ6IlxmNGMwIn0uZmEtaGFuZC1wb2ludC1kb3duOmJlZm9yZXtjb250ZW50OiJcZjBhNyJ9LmZhLWhhbmQtcG9pbnQtbGVmdDpiZWZvcmV7Y29udGVudDoiXGYwYTUifS5mYS1oYW5kLXBvaW50LXJpZ2h0OmJlZm9yZXtjb250ZW50OiJcZjBhNCJ9LmZhLWhhbmQtcG9pbnQtdXA6YmVmb3Jle2NvbnRlbnQ6IlxmMGE2In0uZmEtaGFuZC1wb2ludGVyOmJlZm9yZXtjb250ZW50OiJcZjI1YSJ9LmZhLWhhbmRzLXVzZDpiZWZvcmV7Y29udGVudDoiXGY0YzUifS5mYS1oYXNodGFnOmJlZm9yZXtjb250ZW50OiJcZjI5MiJ9LmZhLWhlYXJ0OmJlZm9yZXtjb250ZW50OiJcZjAwNCJ9LmZhLWhlYXJ0LWJyb2tlbjpiZWZvcmV7Y29udGVudDoiXGY3YTkifS5mYS1oZXhhZ29uOmJlZm9yZXtjb250ZW50OiJcZjMxMiJ9LmZhLWhpc3Rvcnk6YmVmb3Jle2NvbnRlbnQ6IlxmMWRhIn0uZmEtaG9tZTpiZWZvcmV7Y29udGVudDoiXGYwMTUifS5mYS1ob21lLWFsdDpiZWZvcmV7Y29udGVudDoiXGY4MGEifS5mYS1ob21lLWxnOmJlZm9yZXtjb250ZW50OiJcZjgwYiJ9LmZhLWhvbWUtbGctYWx0OmJlZm9yZXtjb250ZW50OiJcZjgwYyJ9LmZhLWhvdXNlOmJlZm9yZXtjb250ZW50OiJcZTAwZCJ9LmZhLWktY3Vyc29yOmJlZm9yZXtjb250ZW50OiJcZjI0NiJ9LmZhLWluYm94OmJlZm9yZXtjb250ZW50OiJcZjAxYyJ9LmZhLWluYm94LWluOmJlZm9yZXtjb250ZW50OiJcZjMxMCJ9LmZhLWluYm94LW91dDpiZWZvcmV7Y29udGVudDoiXGYzMTEifS5mYS1pbmZvOmJlZm9yZXtjb250ZW50OiJcZjEyOSJ9LmZhLWluZm8tY2lyY2xlOmJlZm9yZXtjb250ZW50OiJcZjA1YSJ9LmZhLWluZm8tc3F1YXJlOmJlZm9yZXtjb250ZW50OiJcZjMwZiJ9LmZhLWluc3RhZ3JhbTpiZWZvcmV7Y29udGVudDoiXGYxNmQifS5mYS1pbnN0YWdyYW0tc3F1YXJlOmJlZm9yZXtjb250ZW50OiJcZTA1NSJ9LmZhLWtleTpiZWZvcmV7Y29udGVudDoiXGYwODQifS5mYS1sYW5ndWFnZTpiZWZvcmV7Y29udGVudDoiXGYxYWIifS5mYS1sYXNzbzpiZWZvcmV7Y29udGVudDoiXGY4YzgifS5mYS1sZWFmOmJlZm9yZXtjb250ZW50OiJcZjA2YyJ9LmZhLWxldmVsLWRvd246YmVmb3Jle2NvbnRlbnQ6IlxmMTQ5In0uZmEtbGV2ZWwtZG93bi1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmM2JlIn0uZmEtbGV2ZWwtdXA6YmVmb3Jle2NvbnRlbnQ6IlxmMTQ4In0uZmEtbGV2ZWwtdXAtYWx0OmJlZm9yZXtjb250ZW50OiJcZjNiZiJ9LmZhLWxpbmtlZGluOmJlZm9yZXtjb250ZW50OiJcZjA4YyJ9LmZhLWxpbmtlZGluLWluOmJlZm9yZXtjb250ZW50OiJcZjBlMSJ9LmZhLWxvY2F0aW9uLWFycm93OmJlZm9yZXtjb250ZW50OiJcZjEyNCJ9LmZhLWxvbmctYXJyb3ctYWx0LWRvd246YmVmb3Jle2NvbnRlbnQ6IlxmMzA5In0uZmEtbG9uZy1hcnJvdy1hbHQtbGVmdDpiZWZvcmV7Y29udGVudDoiXGYzMGEifS5mYS1sb25nLWFycm93LWFsdC1yaWdodDpiZWZvcmV7Y29udGVudDoiXGYzMGIifS5mYS1sb25nLWFycm93LWFsdC11cDpiZWZvcmV7Y29udGVudDoiXGYzMGMifS5mYS1sb25nLWFycm93LWRvd246YmVmb3Jle2NvbnRlbnQ6IlxmMTc1In0uZmEtbG9uZy1hcnJvdy1sZWZ0OmJlZm9yZXtjb250ZW50OiJcZjE3NyJ9LmZhLWxvbmctYXJyb3ctcmlnaHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMTc4In0uZmEtbG9uZy1hcnJvdy11cDpiZWZvcmV7Y29udGVudDoiXGYxNzYifS5mYS1tYWdpYzpiZWZvcmV7Y29udGVudDoiXGYwZDAifS5mYS1tYXA6YmVmb3Jle2NvbnRlbnQ6IlxmMjc5In0uZmEtbWFwLW1hcmtlcjpiZWZvcmV7Y29udGVudDoiXGYwNDEifS5mYS1tYXAtbWFya2VyLWFsdDpiZWZvcmV7Y29udGVudDoiXGYzYzUifS5mYS1tYXAtcGluOmJlZm9yZXtjb250ZW50OiJcZjI3NiJ9LmZhLW1hcC1zaWduczpiZWZvcmV7Y29udGVudDoiXGYyNzcifS5mYS1tYXJrZXI6YmVmb3Jle2NvbnRlbnQ6IlxmNWExIn0uZmEtbWVkYWw6YmVmb3Jle2NvbnRlbnQ6IlxmNWEyIn0uZmEtbWVoOmJlZm9yZXtjb250ZW50OiJcZjExYSJ9LmZhLW1pY3JvY2hpcDpiZWZvcmV7Y29udGVudDoiXGYyZGIifS5mYS1taWNyb3Bob25lOmJlZm9yZXtjb250ZW50OiJcZjEzMCJ9LmZhLW1pY3JvcGhvbmUtYWx0OmJlZm9yZXtjb250ZW50OiJcZjNjOSJ9LmZhLW1pY3JvcGhvbmUtYWx0LXNsYXNoOmJlZm9yZXtjb250ZW50OiJcZjUzOSJ9LmZhLW1pY3JvcGhvbmUtc2xhc2g6YmVmb3Jle2NvbnRlbnQ6IlxmMTMxIn0uZmEtbWluZC1zaGFyZTpiZWZvcmV7Y29udGVudDoiXGY2NzcifS5mYS1taW51czpiZWZvcmV7Y29udGVudDoiXGYwNjgifS5mYS1taW51cy1jaXJjbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMDU2In0uZmEtbWludXMtaGV4YWdvbjpiZWZvcmV7Y29udGVudDoiXGYzMDcifS5mYS1taW51cy1vY3RhZ29uOmJlZm9yZXtjb250ZW50OiJcZjMwOCJ9LmZhLW1pbnVzLXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYxNDYifS5mYS1tb2JpbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMTBiIn0uZmEtbW9iaWxlLWFsdDpiZWZvcmV7Y29udGVudDoiXGYzY2QifS5mYS1tb2JpbGUtYW5kcm9pZDpiZWZvcmV7Y29udGVudDoiXGYzY2UifS5mYS1tb2JpbGUtYW5kcm9pZC1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmM2NmIn0uZmEtbW9uZXktY2hlY2s6YmVmb3Jle2NvbnRlbnQ6IlxmNTNjIn0uZmEtbW9uZXktY2hlY2stYWx0OmJlZm9yZXtjb250ZW50OiJcZjUzZCJ9LmZhLW1vbmV5LWNoZWNrLWVkaXQ6YmVmb3Jle2NvbnRlbnQ6IlxmODcyIn0uZmEtbW9uZXktY2hlY2stZWRpdC1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmODczIn0uZmEtbW90b3JjeWNsZTpiZWZvcmV7Y29udGVudDoiXGYyMWMifS5mYS1tb3VudGFpbjpiZWZvcmV7Y29udGVudDoiXGY2ZmMifS5mYS1tb3VzZS1wb2ludGVyOmJlZm9yZXtjb250ZW50OiJcZjI0NSJ9LmZhLW1wMy1wbGF5ZXI6YmVmb3Jle2NvbnRlbnQ6IlxmOGNlIn0uZmEtbXVzaWM6YmVmb3Jle2NvbnRlbnQ6IlxmMDAxIn0uZmEtb2N0YWdvbjpiZWZvcmV7Y29udGVudDoiXGYzMDYifS5mYS1vaWwtY2FuOmJlZm9yZXtjb250ZW50OiJcZjYxMyJ9LmZhLW9pbC10ZW1wOmJlZm9yZXtjb250ZW50OiJcZjYxNCJ9LmZhLXBhaW50LWJydXNoOmJlZm9yZXtjb250ZW50OiJcZjFmYyJ9LmZhLXBhbGV0dGU6YmVmb3Jle2NvbnRlbnQ6IlxmNTNmIn0uZmEtcGFwZXItcGxhbmU6YmVmb3Jle2NvbnRlbnQ6IlxmMWQ4In0uZmEtcGFzdGU6YmVmb3Jle2NvbnRlbnQ6IlxmMGVhIn0uZmEtcGF5cGFsOmJlZm9yZXtjb250ZW50OiJcZjFlZCJ9LmZhLXBlbjpiZWZvcmV7Y29udGVudDoiXGYzMDQifS5mYS1wZW4tYWx0OmJlZm9yZXtjb250ZW50OiJcZjMwNSJ9LmZhLXBlbi1mYW5jeTpiZWZvcmV7Y29udGVudDoiXGY1YWMifS5mYS1wZW5jaWw6YmVmb3Jle2NvbnRlbnQ6IlxmMDQwIn0uZmEtcGVuY2lsLWFsdDpiZWZvcmV7Y29udGVudDoiXGYzMDMifS5mYS1wZW5jaWwtcnVsZXI6YmVmb3Jle2NvbnRlbnQ6IlxmNWFlIn0uZmEtcGVvcGxlLWFycm93czpiZWZvcmV7Y29udGVudDoiXGUwNjgifS5mYS1waG9uZTpiZWZvcmV7Y29udGVudDoiXGYwOTUifS5mYS1waG9uZS1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmODc5In0uZmEtcGhvbmUtc3F1YXJlOmJlZm9yZXtjb250ZW50OiJcZjA5OCJ9LmZhLXBob25lLXNxdWFyZS1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmODdiIn0uZmEtcGhvbmUtdm9sdW1lOmJlZm9yZXtjb250ZW50OiJcZjJhMCJ9LmZhLXBob3RvLXZpZGVvOmJlZm9yZXtjb250ZW50OiJcZjg3YyJ9LmZhLXBpbnRlcmVzdDpiZWZvcmV7Y29udGVudDoiXGYwZDIifS5mYS1waW50ZXJlc3QtcDpiZWZvcmV7Y29udGVudDoiXGYyMzEifS5mYS1waW50ZXJlc3Qtc3F1YXJlOmJlZm9yZXtjb250ZW50OiJcZjBkMyJ9LmZhLXBsYXk6YmVmb3Jle2NvbnRlbnQ6IlxmMDRiIn0uZmEtcGxheS1jaXJjbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMTQ0In0uZmEtcGx1ZzpiZWZvcmV7Y29udGVudDoiXGYxZTYifS5mYS1wbHVzOmJlZm9yZXtjb250ZW50OiJcZjA2NyJ9LmZhLXBsdXMtY2lyY2xlOmJlZm9yZXtjb250ZW50OiJcZjA1NSJ9LmZhLXBsdXMtaGV4YWdvbjpiZWZvcmV7Y29udGVudDoiXGYzMDAifS5mYS1wbHVzLW9jdGFnb246YmVmb3Jle2NvbnRlbnQ6IlxmMzAxIn0uZmEtcGx1cy1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMGZlIn0uZmEtcG9vOmJlZm9yZXtjb250ZW50OiJcZjJmZSJ9LmZhLXByaW50OmJlZm9yZXtjb250ZW50OiJcZjAyZiJ9LmZhLXFyY29kZTpiZWZvcmV7Y29udGVudDoiXGYwMjkifS5mYS1xdWVzdGlvbjpiZWZvcmV7Y29udGVudDoiXGYxMjgifS5mYS1xdWVzdGlvbi1jaXJjbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMDU5In0uZmEtcXVlc3Rpb24tc3F1YXJlOmJlZm9yZXtjb250ZW50OiJcZjJmZCJ9LmZhLXF1b3RlLWxlZnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMTBkIn0uZmEtcXVvdGUtcmlnaHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMTBlIn0uZmEtcmFuZG9tOmJlZm9yZXtjb250ZW50OiJcZjA3NCJ9LmZhLXJlY3RhbmdsZS1sYW5kc2NhcGU6YmVmb3Jle2NvbnRlbnQ6IlxmMmZhIn0uZmEtcmVjdGFuZ2xlLXBvcnRyYWl0OmJlZm9yZXtjb250ZW50OiJcZjJmYiJ9LmZhLXJlY3RhbmdsZS13aWRlOmJlZm9yZXtjb250ZW50OiJcZjJmYyJ9LmZhLXJlY3ljbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMWI4In0uZmEtcmVkbzpiZWZvcmV7Y29udGVudDoiXGYwMWUifS5mYS1yZWRvLWFsdDpiZWZvcmV7Y29udGVudDoiXGYyZjkifS5mYS1yZXBlYXQ6YmVmb3Jle2NvbnRlbnQ6IlxmMzYzIn0uZmEtcmVwZWF0LTE6YmVmb3Jle2NvbnRlbnQ6IlxmMzY1In0uZmEtcmVwZWF0LTEtYWx0OmJlZm9yZXtjb250ZW50OiJcZjM2NiJ9LmZhLXJlcGVhdC1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMzY0In0uZmEtcmVwbHk6YmVmb3Jle2NvbnRlbnQ6IlxmM2U1In0uZmEtcmVwbHktYWxsOmJlZm9yZXtjb250ZW50OiJcZjEyMiJ9LmZhLXJldHdlZXQ6YmVmb3Jle2NvbnRlbnQ6IlxmMDc5In0uZmEtcmV0d2VldC1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMzYxIn0uZmEtcm9hZDpiZWZvcmV7Y29udGVudDoiXGYwMTgifS5mYS1yb2JvdDpiZWZvcmV7Y29udGVudDoiXGY1NDQifS5mYS1yc3M6YmVmb3Jle2NvbnRlbnQ6IlxmMDllIn0uZmEtcnNzLXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYxNDMifS5mYS1ydjpiZWZvcmV7Y29udGVudDoiXGY3YmUifS5mYS1zYXZlOmJlZm9yZXtjb250ZW50OiJcZjBjNyJ9LmZhLXNjcmV3ZHJpdmVyOmJlZm9yZXtjb250ZW50OiJcZjU0YSJ9LmZhLXNlYXJjaDpiZWZvcmV7Y29udGVudDoiXGYwMDIifS5mYS1zZWFyY2gtbWludXM6YmVmb3Jle2NvbnRlbnQ6IlxmMDEwIn0uZmEtc2VhcmNoLXBsdXM6YmVmb3Jle2NvbnRlbnQ6IlxmMDBlIn0uZmEtc2hhcGVzOmJlZm9yZXtjb250ZW50OiJcZjYxZiJ9LmZhLXNoYXJlOmJlZm9yZXtjb250ZW50OiJcZjA2NCJ9LmZhLXNoYXJlLWFsbDpiZWZvcmV7Y29udGVudDoiXGYzNjcifS5mYS1zaGFyZS1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMWUwIn0uZmEtc2hhcmUtYWx0LXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYxZTEifS5mYS1zaGFyZS1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMTRkIn0uZmEtc2hpZWxkOmJlZm9yZXtjb250ZW50OiJcZjEzMiJ9LmZhLXNoaWVsZC1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmM2VkIn0uZmEtc2hvcHBpbmctYmFza2V0OmJlZm9yZXtjb250ZW50OiJcZjI5MSJ9LmZhLXNob3BwaW5nLWNhcnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMDdhIn0uZmEtc2h1dHRsZS12YW46YmVmb3Jle2NvbnRlbnQ6IlxmNWI2In0uZmEtc2lnbi1pbjpiZWZvcmV7Y29udGVudDoiXGYwOTAifS5mYS1zaWduLWluLWFsdDpiZWZvcmV7Y29udGVudDoiXGYyZjYifS5mYS1zaWduLW91dDpiZWZvcmV7Y29udGVudDoiXGYwOGIifS5mYS1zaWduLW91dC1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMmY1In0uZmEtc2lnbmFsOmJlZm9yZXtjb250ZW50OiJcZjAxMiJ9LmZhLXNpZ25hbC1zdHJlYW06YmVmb3Jle2NvbnRlbnQ6IlxmOGRkIn0uZmEtc2l0ZW1hcDpiZWZvcmV7Y29udGVudDoiXGYwZTgifS5mYS1zbGlkZXJzLWg6YmVmb3Jle2NvbnRlbnQ6IlxmMWRlIn0uZmEtc2xpZGVycy1oLXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYzZjAifS5mYS1zbGlkZXJzLXY6YmVmb3Jle2NvbnRlbnQ6IlxmM2YxIn0uZmEtc2xpZGVycy12LXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYzZjIifS5mYS1zbWlsZTpiZWZvcmV7Y29udGVudDoiXGYxMTgifS5mYS1zbXM6YmVmb3Jle2NvbnRlbnQ6IlxmN2NkIn0uZmEtc25vd2ZsYWtlOmJlZm9yZXtjb250ZW50OiJcZjJkYyJ9LmZhLXNvcnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMGRjIn0uZmEtc29ydC1hbHBoYS1kb3duOmJlZm9yZXtjb250ZW50OiJcZjE1ZCJ9LmZhLXNvcnQtYWxwaGEtZG93bi1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmODgxIn0uZmEtc29ydC1hbHBoYS11cDpiZWZvcmV7Y29udGVudDoiXGYxNWUifS5mYS1zb3J0LWFscGhhLXVwLWFsdDpiZWZvcmV7Y29udGVudDoiXGY4ODIifS5mYS1zb3J0LWFsdDpiZWZvcmV7Y29udGVudDoiXGY4ODMifS5mYS1zb3J0LWFtb3VudC1kb3duOmJlZm9yZXtjb250ZW50OiJcZjE2MCJ9LmZhLXNvcnQtYW1vdW50LWRvd24tYWx0OmJlZm9yZXtjb250ZW50OiJcZjg4NCJ9LmZhLXNvcnQtYW1vdW50LXVwOmJlZm9yZXtjb250ZW50OiJcZjE2MSJ9LmZhLXNvcnQtYW1vdW50LXVwLWFsdDpiZWZvcmV7Y29udGVudDoiXGY4ODUifS5mYS1zb3J0LWNpcmNsZTpiZWZvcmV7Y29udGVudDoiXGUwMzAifS5mYS1zb3J0LWNpcmNsZS1kb3duOmJlZm9yZXtjb250ZW50OiJcZTAzMSJ9LmZhLXNvcnQtY2lyY2xlLXVwOmJlZm9yZXtjb250ZW50OiJcZTAzMiJ9LmZhLXNvcnQtZG93bjpiZWZvcmV7Y29udGVudDoiXGYwZGQifS5mYS1zb3J0LW51bWVyaWMtZG93bjpiZWZvcmV7Y29udGVudDoiXGYxNjIifS5mYS1zb3J0LW51bWVyaWMtZG93bi1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmODg2In0uZmEtc29ydC1udW1lcmljLXVwOmJlZm9yZXtjb250ZW50OiJcZjE2MyJ9LmZhLXNvcnQtbnVtZXJpYy11cC1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmODg3In0uZmEtc29ydC1zaGFwZXMtZG93bjpiZWZvcmV7Y29udGVudDoiXGY4ODgifS5mYS1zb3J0LXNoYXBlcy1kb3duLWFsdDpiZWZvcmV7Y29udGVudDoiXGY4ODkifS5mYS1zb3J0LXNoYXBlcy11cDpiZWZvcmV7Y29udGVudDoiXGY4OGEifS5mYS1zb3J0LXNoYXBlcy11cC1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmODhiIn0uZmEtc29ydC1zaXplLWRvd246YmVmb3Jle2NvbnRlbnQ6IlxmODhjIn0uZmEtc29ydC1zaXplLWRvd24tYWx0OmJlZm9yZXtjb250ZW50OiJcZjg4ZCJ9LmZhLXNvcnQtc2l6ZS11cDpiZWZvcmV7Y29udGVudDoiXGY4OGUifS5mYS1zb3J0LXNpemUtdXAtYWx0OmJlZm9yZXtjb250ZW50OiJcZjg4ZiJ9LmZhLXNvcnQtdXA6YmVmb3Jle2NvbnRlbnQ6IlxmMGRlIn0uZmEtc3BhZGU6YmVmb3Jle2NvbnRlbnQ6IlxmMmY0In0uZmEtc3Bpbm5lcjpiZWZvcmV7Y29udGVudDoiXGYxMTAifS5mYS1zcGlubmVyLXRoaXJkOmJlZm9yZXtjb250ZW50OiJcZjNmNCJ9LmZhLXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYwYzgifS5mYS1zdGFyOmJlZm9yZXtjb250ZW50OiJcZjAwNSJ9LmZhLXN0YXItZXhjbGFtYXRpb246YmVmb3Jle2NvbnRlbnQ6IlxmMmYzIn0uZmEtc3Rhci1oYWxmOmJlZm9yZXtjb250ZW50OiJcZjA4OSJ9LmZhLXN0YXItaGFsZi1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmNWMwIn0uZmEtc3RlZXJpbmctd2hlZWw6YmVmb3Jle2NvbnRlbnQ6IlxmNjIyIn0uZmEtc3RpY2t5LW5vdGU6YmVmb3Jle2NvbnRlbnQ6IlxmMjQ5In0uZmEtc3RvcHdhdGNoOmJlZm9yZXtjb250ZW50OiJcZjJmMiJ9LmZhLXN0b3JlOmJlZm9yZXtjb250ZW50OiJcZjU0ZSJ9LmZhLXN0b3JlLWFsdDpiZWZvcmV7Y29udGVudDoiXGY1NGYifS5mYS1zdWl0Y2FzZS1yb2xsaW5nOmJlZm9yZXtjb250ZW50OiJcZjVjMSJ9LmZhLXN1bjpiZWZvcmV7Y29udGVudDoiXGYxODUifS5mYS1zeW5jOmJlZm9yZXtjb250ZW50OiJcZjAyMSJ9LmZhLXN5bmMtYWx0OmJlZm9yZXtjb250ZW50OiJcZjJmMSJ9LmZhLXRhYmxldDpiZWZvcmV7Y29udGVudDoiXGYxMGEifS5mYS10YWJsZXQtYWx0OmJlZm9yZXtjb250ZW50OiJcZjNmYSJ9LmZhLXRhY2hvbWV0ZXI6YmVmb3Jle2NvbnRlbnQ6IlxmMGU0In0uZmEtdGFjaG9tZXRlci1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmM2ZkIn0uZmEtdGFjaG9tZXRlci1hbHQtYXZlcmFnZTpiZWZvcmV7Y29udGVudDoiXGY2MjQifS5mYS10YWNob21ldGVyLWFsdC1mYXN0OmJlZm9yZXtjb250ZW50OiJcZjYyNSJ9LmZhLXRhY2hvbWV0ZXItYWx0LWZhc3Rlc3Q6YmVmb3Jle2NvbnRlbnQ6IlxmNjI2In0uZmEtdGFjaG9tZXRlci1hbHQtc2xvdzpiZWZvcmV7Y29udGVudDoiXGY2MjcifS5mYS10YWNob21ldGVyLWFsdC1zbG93ZXN0OmJlZm9yZXtjb250ZW50OiJcZjYyOCJ9LmZhLXRhY2hvbWV0ZXItYXZlcmFnZTpiZWZvcmV7Y29udGVudDoiXGY2MjkifS5mYS10YWNob21ldGVyLWZhc3Q6YmVmb3Jle2NvbnRlbnQ6IlxmNjJhIn0uZmEtdGFjaG9tZXRlci1mYXN0ZXN0OmJlZm9yZXtjb250ZW50OiJcZjYyYiJ9LmZhLXRhY2hvbWV0ZXItc2xvdzpiZWZvcmV7Y29udGVudDoiXGY2MmMifS5mYS10YWNob21ldGVyLXNsb3dlc3Q6YmVmb3Jle2NvbnRlbnQ6IlxmNjJkIn0uZmEtdGFnOmJlZm9yZXtjb250ZW50OiJcZjAyYiJ9LmZhLXRhZ3M6YmVmb3Jle2NvbnRlbnQ6IlxmMDJjIn0uZmEtdGF4aTpiZWZvcmV7Y29udGVudDoiXGYxYmEifS5mYS10ZW1wZXJhdHVyZS1oaWdoOmJlZm9yZXtjb250ZW50OiJcZjc2OSJ9LmZhLXRlbXBlcmF0dXJlLWxvdzpiZWZvcmV7Y29udGVudDoiXGY3NmIifS5mYS10ZXh0LWhlaWdodDpiZWZvcmV7Y29udGVudDoiXGYwMzQifS5mYS10ZXh0LXdpZHRoOmJlZm9yZXtjb250ZW50OiJcZjAzNSJ9LmZhLXRoZXJtb21ldGVyLWhhbGY6YmVmb3Jle2NvbnRlbnQ6IlxmMmM5In0uZmEtdGh1bWJzLWRvd246YmVmb3Jle2NvbnRlbnQ6IlxmMTY1In0uZmEtdGh1bWJzLXVwOmJlZm9yZXtjb250ZW50OiJcZjE2NCJ9LmZhLXRpY2tldDpiZWZvcmV7Y29udGVudDoiXGYxNDUifS5mYS10aWt0b2s6YmVmb3Jle2NvbnRlbnQ6IlxlMDdiIn0uZmEtdGltZXM6YmVmb3Jle2NvbnRlbnQ6IlxmMDBkIn0uZmEtdGltZXMtY2lyY2xlOmJlZm9yZXtjb250ZW50OiJcZjA1NyJ9LmZhLXRpbWVzLWhleGFnb246YmVmb3Jle2NvbnRlbnQ6IlxmMmVlIn0uZmEtdGltZXMtb2N0YWdvbjpiZWZvcmV7Y29udGVudDoiXGYyZjAifS5mYS10aW1lcy1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMmQzIn0uZmEtdGludDpiZWZvcmV7Y29udGVudDoiXGYwNDMifS5mYS10aXJlOmJlZm9yZXtjb250ZW50OiJcZjYzMSJ9LmZhLXRpcmUtZmxhdDpiZWZvcmV7Y29udGVudDoiXGY2MzIifS5mYS10aXJlLXByZXNzdXJlLXdhcm5pbmc6YmVmb3Jle2NvbnRlbnQ6IlxmNjMzIn0uZmEtdGlyZS1ydWdnZWQ6YmVmb3Jle2NvbnRlbnQ6IlxmNjM0In0uZmEtdG9nZ2xlLW9mZjpiZWZvcmV7Y29udGVudDoiXGYyMDQifS5mYS10b2dnbGUtb246YmVmb3Jle2NvbnRlbnQ6IlxmMjA1In0uZmEtdG9vbHM6YmVmb3Jle2NvbnRlbnQ6IlxmN2Q5In0uZmEtdHJhaWxlcjpiZWZvcmV7Y29udGVudDoiXGUwNDEifS5mYS10cmFzaDpiZWZvcmV7Y29udGVudDoiXGYxZjgifS5mYS10cmFzaC1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMmVkIn0uZmEtdHJhc2gtcmVzdG9yZTpiZWZvcmV7Y29udGVudDoiXGY4MjkifS5mYS10cmFzaC1yZXN0b3JlLWFsdDpiZWZvcmV7Y29udGVudDoiXGY4MmEifS5mYS10cmFzaC11bmRvOmJlZm9yZXtjb250ZW50OiJcZjg5NSJ9LmZhLXRyYXNoLXVuZG8tYWx0OmJlZm9yZXtjb250ZW50OiJcZjg5NiJ9LmZhLXRyaWFuZ2xlOmJlZm9yZXtjb250ZW50OiJcZjJlYyJ9LmZhLXRyb3BoeTpiZWZvcmV7Y29udGVudDoiXGYwOTEifS5mYS10cm9waHktYWx0OmJlZm9yZXtjb250ZW50OiJcZjJlYiJ9LmZhLXRydWNrOmJlZm9yZXtjb250ZW50OiJcZjBkMSJ9LmZhLXRydWNrLWxvYWRpbmc6YmVmb3Jle2NvbnRlbnQ6IlxmNGRlIn0uZmEtdHJ1Y2stbW9uc3RlcjpiZWZvcmV7Y29udGVudDoiXGY2M2IifS5mYS10cnVjay1waWNrdXA6YmVmb3Jle2NvbnRlbnQ6IlxmNjNjIn0uZmEtdHR5OmJlZm9yZXtjb250ZW50OiJcZjFlNCJ9LmZhLXR2OmJlZm9yZXtjb250ZW50OiJcZjI2YyJ9LmZhLXR3aXR0ZXI6YmVmb3Jle2NvbnRlbnQ6IlxmMDk5In0uZmEtdHdpdHRlci1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMDgxIn0uZmEtdW5kbzpiZWZvcmV7Y29udGVudDoiXGYwZTIifS5mYS11bmRvLWFsdDpiZWZvcmV7Y29udGVudDoiXGYyZWEifS5mYS11cGxvYWQ6YmVmb3Jle2NvbnRlbnQ6IlxmMDkzIn0uZmEtdXNkLWNpcmNsZTpiZWZvcmV7Y29udGVudDoiXGYyZTgifS5mYS11c2Qtc3F1YXJlOmJlZm9yZXtjb250ZW50OiJcZjJlOSJ9LmZhLXVzZXI6YmVmb3Jle2NvbnRlbnQ6IlxmMDA3In0uZmEtdXNlci1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmNDA2In0uZmEtdXNlci1jaGVjazpiZWZvcmV7Y29udGVudDoiXGY0ZmMifS5mYS11c2VyLWNpcmNsZTpiZWZvcmV7Y29udGVudDoiXGYyYmQifS5mYS11c2VyLWZyaWVuZHM6YmVmb3Jle2NvbnRlbnQ6IlxmNTAwIn0uZmEtdXNlcnM6YmVmb3Jle2NvbnRlbnQ6IlxmMGMwIn0uZmEtdmlkZW86YmVmb3Jle2NvbnRlbnQ6IlxmMDNkIn0uZmEtdm9pY2VtYWlsOmJlZm9yZXtjb250ZW50OiJcZjg5NyJ9LmZhLXZvbHVtZTpiZWZvcmV7Y29udGVudDoiXGY2YTgifS5mYS12b2x1bWUtZG93bjpiZWZvcmV7Y29udGVudDoiXGYwMjcifS5mYS12b2x1bWUtbXV0ZTpiZWZvcmV7Y29udGVudDoiXGY2YTkifS5mYS12b2x1bWUtb2ZmOmJlZm9yZXtjb250ZW50OiJcZjAyNiJ9LmZhLXZvbHVtZS1zbGFzaDpiZWZvcmV7Y29udGVudDoiXGYyZTIifS5mYS12b2x1bWUtdXA6YmVmb3Jle2NvbnRlbnQ6IlxmMDI4In0uZmEtd2Fnb24tY292ZXJlZDpiZWZvcmV7Y29udGVudDoiXGY4ZWUifS5mYS13YWxraWUtdGFsa2llOmJlZm9yZXtjb250ZW50OiJcZjhlZiJ9LmZhLXdlYmNhbTpiZWZvcmV7Y29udGVudDoiXGY4MzIifS5mYS13ZWJjYW0tc2xhc2g6YmVmb3Jle2NvbnRlbnQ6IlxmODMzIn0uZmEtd2hlZWxjaGFpcjpiZWZvcmV7Y29udGVudDoiXGYxOTMifS5mYS13aWZpOmJlZm9yZXtjb250ZW50OiJcZjFlYiJ9LmZhLXdyZW5jaDpiZWZvcmV7Y29udGVudDoiXGYwYWQifS5mYS15b3V0dWJlOmJlZm9yZXtjb250ZW50OiJcZjE2NyJ9LmZhLXlvdXR1YmUtc3F1YXJlOmJlZm9yZXtjb250ZW50OiJcZjQzMSJ9LmZhLXNoaWVsZC1jaGVjazpiZWZvcmV7Y29udGVudDoiXGYyZjcifS5mYS1saW5rOmJlZm9yZXtjb250ZW50OiJcZjBjMSJ9LmZhLXVubGluazpiZWZvcmV7Y29udGVudDoiXGYxMjcifS5mYS1iYWRnZS1kb2xsYXI6YmVmb3Jle2NvbnRlbnQ6IlxmNjQ1In0uZmEtcGVuLXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYxNGIifS5mYS1jb21tZW50LWFsdC1kb3RzOmJlZm9yZXtjb250ZW50OiJcZjRhMyJ9LmZhLWFycm93LWRvd24tdG8tbGluZTpiZWZvcmV7Y29udGVudDoiXGYzM2QifS5mYS1yaWdodDpiZWZvcmV7Y29udGVudDoiXGYzNTYiO30uc3Itb25seXtib3JkZXI6MDtjbGlwOnJlY3QoMCwwLDAsMCk7aGVpZ2h0OjFweDttYXJnaW46LTFweDtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzowO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjFweH0uc3Itb25seS1mb2N1c2FibGU6YWN0aXZlLC5zci1vbmx5LWZvY3VzYWJsZTpmb2N1c3tjbGlwOmF1dG87aGVpZ2h0OmF1dG87bWFyZ2luOjA7b3ZlcmZsb3c6dmlzaWJsZTtwb3NpdGlvbjpzdGF0aWM7d2lkdGg6YXV0b31AZm9udC1mYWNle2ZvbnQtZmFtaWx5OidGb250IEF3ZXNvbWUgNSBCcmFuZHMnO2ZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtd2VpZ2h0OjQwMDtmb250LWRpc3BsYXk6YmxvY2s7c3JjOnVybCgvL2ZvbnRzLmQyY21lZGlhLmNhL3dlYmZvbnRzL2Rlc2t0b3AtYXdlc29tZS93ZWJmb250cy9mYS1icmFuZHMtNDAwLmVvdCk7c3JjOnVybCgvL2ZvbnRzLmQyY21lZGlhLmNhL3dlYmZvbnRzL2Rlc2t0b3AtYXdlc29tZS93ZWJmb250cy9mYS1icmFuZHMtNDAwLmVvdD8jaWVmaXgpIGZvcm1hdCgiZW1iZWRkZWQtb3BlbnR5cGUiKSx1cmwoLy9mb250cy5kMmNtZWRpYS5jYS93ZWJmb250cy9kZXNrdG9wLWF3ZXNvbWUvd2ViZm9udHMvZmEtYnJhbmRzLTQwMC53b2ZmMikgZm9ybWF0KCJ3b2ZmMiIpLHVybCgvL2ZvbnRzLmQyY21lZGlhLmNhL3dlYmZvbnRzL2Rlc2t0b3AtYXdlc29tZS93ZWJmb250cy9mYS1icmFuZHMtNDAwLndvZmYpIGZvcm1hdCgid29mZiIpLHVybCgvL2ZvbnRzLmQyY21lZGlhLmNhL3dlYmZvbnRzL2Rlc2t0b3AtYXdlc29tZS93ZWJmb250cy9mYS1icmFuZHMtNDAwLnR0ZikgZm9ybWF0KCJ0cnVldHlwZSIpLHVybCgvL2ZvbnRzLmQyY21lZGlhLmNhL3dlYmZvbnRzL2Rlc2t0b3AtYXdlc29tZS93ZWJmb250cy9mYS1icmFuZHMtNDAwLnN2ZyNmb250YXdlc29tZSkgZm9ybWF0KCJzdmciKX0uZmFie2ZvbnQtZmFtaWx5OidGb250IEF3ZXNvbWUgNSBCcmFuZHMnO2ZvbnQtd2VpZ2h0OjQwMH1AZm9udC1mYWNle2ZvbnQtZmFtaWx5OidGb250IEF3ZXNvbWUgNSBQcm8nO2ZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtd2VpZ2h0OjMwMDtmb250LWRpc3BsYXk6YmxvY2s7c3JjOnVybCgvL2ZvbnRzLmQyY21lZGlhLmNhL3dlYmZvbnRzL2Rlc2t0b3AtYXdlc29tZS93ZWJmb250cy9mYS1saWdodC0zMDAuZW90KTtzcmM6dXJsKC8vZm9udHMuZDJjbWVkaWEuY2Evd2ViZm9udHMvZGVza3RvcC1hd2Vzb21lL3dlYmZvbnRzL2ZhLWxpZ2h0LTMwMC5lb3Q\/I2llZml4KSBmb3JtYXQoImVtYmVkZGVkLW9wZW50eXBlIiksdXJsKC8vZm9udHMuZDJjbWVkaWEuY2Evd2ViZm9udHMvZGVza3RvcC1hd2Vzb21lL3dlYmZvbnRzL2ZhLWxpZ2h0LTMwMC53b2ZmMikgZm9ybWF0KCJ3b2ZmMiIpLHVybCgvL2ZvbnRzLmQyY21lZGlhLmNhL3dlYmZvbnRzL2Rlc2t0b3AtYXdlc29tZS93ZWJmb250cy9mYS1saWdodC0zMDAud29mZikgZm9ybWF0KCJ3b2ZmIiksdXJsKC8vZm9udHMuZDJjbWVkaWEuY2Evd2ViZm9udHMvZGVza3RvcC1hd2Vzb21lL3dlYmZvbnRzL2ZhLWxpZ2h0LTMwMC50dGYpIGZvcm1hdCgidHJ1ZXR5cGUiKSx1cmwoLy9mb250cy5kMmNtZWRpYS5jYS93ZWJmb250cy9kZXNrdG9wLWF3ZXNvbWUvd2ViZm9udHMvZmEtbGlnaHQtMzAwLnN2ZyNmb250YXdlc29tZSkgZm9ybWF0KCJzdmciKX0uZmFse2ZvbnQtZmFtaWx5OidGb250IEF3ZXNvbWUgNSBQcm8nO2ZvbnQtd2VpZ2h0OjMwMH1AZm9udC1mYWNle2ZvbnQtZmFtaWx5OidGb250IEF3ZXNvbWUgNSBQcm8nO2ZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtd2VpZ2h0OjQwMDtmb250LWRpc3BsYXk6YmxvY2s7c3JjOnVybCgvL2ZvbnRzLmQyY21lZGlhLmNhL3dlYmZvbnRzL2Rlc2t0b3AtYXdlc29tZS93ZWJmb250cy9mYS1yZWd1bGFyLTQwMC5lb3QpO3NyYzp1cmwoLy9mb250cy5kMmNtZWRpYS5jYS93ZWJmb250cy9kZXNrdG9wLWF3ZXNvbWUvd2ViZm9udHMvZmEtcmVndWxhci00MDAuZW90PyNpZWZpeCkgZm9ybWF0KCJlbWJlZGRlZC1vcGVudHlwZSIpLHVybCgvL2ZvbnRzLmQyY21lZGlhLmNhL3dlYmZvbnRzL2Rlc2t0b3AtYXdlc29tZS93ZWJmb250cy9mYS1yZWd1bGFyLTQwMC53b2ZmMikgZm9ybWF0KCJ3b2ZmMiIpLHVybCgvL2ZvbnRzLmQyY21lZGlhLmNhL3dlYmZvbnRzL2Rlc2t0b3AtYXdlc29tZS93ZWJmb250cy9mYS1yZWd1bGFyLTQwMC53b2ZmKSBmb3JtYXQoIndvZmYiKSx1cmwoLy9mb250cy5kMmNtZWRpYS5jYS93ZWJmb250cy9kZXNrdG9wLWF3ZXNvbWUvd2ViZm9udHMvZmEtcmVndWxhci00MDAudHRmKSBmb3JtYXQoInRydWV0eXBlIiksdXJsKC8vZm9udHMuZDJjbWVkaWEuY2Evd2ViZm9udHMvZGVza3RvcC1hd2Vzb21lL3dlYmZvbnRzL2ZhLXJlZ3VsYXItNDAwLnN2ZyNmb250YXdlc29tZSkgZm9ybWF0KCJzdmciKX0uZmFye2ZvbnQtZmFtaWx5OidGb250IEF3ZXNvbWUgNSBQcm8nO2ZvbnQtd2VpZ2h0OjQwMH1AZm9udC1mYWNle2ZvbnQtZmFtaWx5OidGb250IEF3ZXNvbWUgNSBQcm8nO2ZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtd2VpZ2h0OjkwMDtmb250LWRpc3BsYXk6YmxvY2s7c3JjOnVybCgvL2ZvbnRzLmQyY21lZGlhLmNhL3dlYmZvbnRzL2Rlc2t0b3AtYXdlc29tZS93ZWJmb250cy9mYS1zb2xpZC05MDAuZW90KTtzcmM6dXJsKC8vZm9udHMuZDJjbWVkaWEuY2Evd2ViZm9udHMvZGVza3RvcC1hd2Vzb21lL3dlYmZvbnRzL2ZhLXNvbGlkLTkwMC5lb3Q\/I2llZml4KSBmb3JtYXQoImVtYmVkZGVkLW9wZW50eXBlIiksdXJsKC8vZm9udHMuZDJjbWVkaWEuY2Evd2ViZm9udHMvZGVza3RvcC1hd2Vzb21lL3dlYmZvbnRzL2ZhLXNvbGlkLTkwMC53b2ZmMikgZm9ybWF0KCJ3b2ZmMiIpLHVybCgvL2ZvbnRzLmQyY21lZGlhLmNhL3dlYmZvbnRzL2Rlc2t0b3AtYXdlc29tZS93ZWJmb250cy9mYS1zb2xpZC05MDAud29mZikgZm9ybWF0KCJ3b2ZmIiksdXJsKC8vZm9udHMuZDJjbWVkaWEuY2Evd2ViZm9udHMvZGVza3RvcC1hd2Vzb21lL3dlYmZvbnRzL2ZhLXNvbGlkLTkwMC50dGYpIGZvcm1hdCgidHJ1ZXR5cGUiKSx1cmwoLy9mb250cy5kMmNtZWRpYS5jYS93ZWJmb250cy9kZXNrdG9wLWF3ZXNvbWUvd2ViZm9udHMvZmEtc29saWQtOTAwLnN2ZyNmb250YXdlc29tZSkgZm9ybWF0KCJzdmciKX0uZmEsLmZhc3tmb250LWZhbWlseTonRm9udCBBd2Vzb21lIDUgUHJvJyFpbXBvcnRhbnQ7Zm9udC13ZWlnaHQ6OTAwfUBmb250LWZhY2V7Zm9udC1kaXNwbGF5OnN3YXA7Zm9udC1mYW1pbHk6J0QyQ0N1c3RvbUljb25zJztzcmM6bG9jYWwoRDJDQ3VzdG9tSWNvbnMpLHVybCgvL2ZvbnRzLmQyY21lZGlhLmNhL3dlYmZvbnRzL2QyYy1jdXN0b20taWNvbnMuZW90PyNpZWZpeCkgZm9ybWF0KCJlbWJlZGRlZC1vcGVudHlwZSIpLHVybCgvL2ZvbnRzLmQyY21lZGlhLmNhL3dlYmZvbnRzL2QyYy1jdXN0b20taWNvbnMud29mZikgZm9ybWF0KCJ3b2ZmIiksdXJsKC8vZm9udHMuZDJjbWVkaWEuY2Evd2ViZm9udHMvZDJjLWN1c3RvbS1pY29ucy50dGYpIGZvcm1hdCgidHJ1ZXR5cGUiKSx1cmwoLy9mb250cy5kMmNtZWRpYS5jYS93ZWJmb250cy9kMmMtY3VzdG9tLWljb25zLnN2ZyNzdmdGb250TmFtZSkgZm9ybWF0KCJzdmciKTtmb250LXdlaWdodDo0MDA7Zm9udC1zdHlsZTpub3JtYWx9LmZhLXgtdHdpdHRlcjpiZWZvcmV7Zm9udC1mYW1pbHk6J0QyQ0N1c3RvbUljb25zJyxzZXJpZjtjb250ZW50OiJcZTkwMCI7ZGlzcGxheTpibG9jaztmb250LXdlaWdodDo0MDA7Zm9udC1zdHlsZTpub3JtYWx9Ci8qKiAvY3NzL2ZvbnQtYXdlc29tZS5jb250ZW50Lm1pbi5jc3MgKiovCi5mYS01MDBweDpiZWZvcmV7Y29udGVudDoiXGYyNmUifS5mYS1hY2Nlc3NpYmxlLWljb246YmVmb3Jle2NvbnRlbnQ6IlxmMzY4In0uZmEtYWNjdXNvZnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMzY5In0uZmEtYWRkcmVzcy1ib29rOmJlZm9yZXtjb250ZW50OiJcZjJiOSJ9LmZhLWFkZHJlc3MtY2FyZDpiZWZvcmV7Y29udGVudDoiXGYyYmIifS5mYS1hZGp1c3Q6YmVmb3Jle2NvbnRlbnQ6IlxmMDQyIn0uZmEtYWRuOmJlZm9yZXtjb250ZW50OiJcZjE3MCJ9LmZhLWFkdmVyc2FsOmJlZm9yZXtjb250ZW50OiJcZjM2YSJ9LmZhLWFmZmlsaWF0ZXRoZW1lOmJlZm9yZXtjb250ZW50OiJcZjM2YiJ9LmZhLWFsZ29saWE6YmVmb3Jle2NvbnRlbnQ6IlxmMzZjIn0uZmEtYWxpZ24tY2VudGVyOmJlZm9yZXtjb250ZW50OiJcZjAzNyJ9LmZhLWFsaWduLWp1c3RpZnk6YmVmb3Jle2NvbnRlbnQ6IlxmMDM5In0uZmEtYWxpZ24tbGVmdDpiZWZvcmV7Y29udGVudDoiXGYwMzYifS5mYS1hbGlnbi1yaWdodDpiZWZvcmV7Y29udGVudDoiXGYwMzgifS5mYS1hbWF6b246YmVmb3Jle2NvbnRlbnQ6IlxmMjcwIn0uZmEtYW1hem9uLXBheTpiZWZvcmV7Y29udGVudDoiXGY0MmMifS5mYS1hbWJ1bGFuY2U6YmVmb3Jle2NvbnRlbnQ6IlxmMGY5In0uZmEtYW1lcmljYW4tc2lnbi1sYW5ndWFnZS1pbnRlcnByZXRpbmc6YmVmb3Jle2NvbnRlbnQ6IlxmMmEzIn0uZmEtYW1pbGlhOmJlZm9yZXtjb250ZW50OiJcZjM2ZCJ9LmZhLWFuY2hvcjpiZWZvcmV7Y29udGVudDoiXGYxM2QifS5mYS1hbmRyb2lkOmJlZm9yZXtjb250ZW50OiJcZjE3YiJ9LmZhLWFuZ2VsbGlzdDpiZWZvcmV7Y29udGVudDoiXGYyMDkifS5mYS1hbmdsZS1kb3VibGUtZG93bjpiZWZvcmV7Y29udGVudDoiXGYxMDMifS5mYS1hbmdsZS1kb3VibGUtbGVmdDpiZWZvcmV7Y29udGVudDoiXGYxMDAifS5mYS1hbmdsZS1kb3VibGUtcmlnaHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMTAxIn0uZmEtYW5nbGUtZG91YmxlLXVwOmJlZm9yZXtjb250ZW50OiJcZjEwMiJ9LmZhLWFuZ2xlLWRvd246YmVmb3Jle2NvbnRlbnQ6IlxmMTA3In0uZmEtYW5nbGUtbGVmdDpiZWZvcmV7Y29udGVudDoiXGYxMDQifS5mYS1hbmdsZS1yaWdodDpiZWZvcmV7Y29udGVudDoiXGYxMDUifS5mYS1hbmdsZS11cDpiZWZvcmV7Y29udGVudDoiXGYxMDYifS5mYS1hbmdyeWNyZWF0aXZlOmJlZm9yZXtjb250ZW50OiJcZjM2ZSJ9LmZhLWFuZ3VsYXI6YmVmb3Jle2NvbnRlbnQ6IlxmNDIwIn0uZmEtYXBwLXN0b3JlOmJlZm9yZXtjb250ZW50OiJcZjM2ZiJ9LmZhLWFwcC1zdG9yZS1pb3M6YmVmb3Jle2NvbnRlbnQ6IlxmMzcwIn0uZmEtYXBwZXI6YmVmb3Jle2NvbnRlbnQ6IlxmMzcxIn0uZmEtYXBwbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMTc5In0uZmEtYXBwbGUtcGF5OmJlZm9yZXtjb250ZW50OiJcZjQxNSJ9LmZhLWFyY2hpdmU6YmVmb3Jle2NvbnRlbnQ6IlxmMTg3In0uZmEtYXJyb3ctYWx0LWNpcmNsZS1kb3duOmJlZm9yZXtjb250ZW50OiJcZjM1OCJ9LmZhLWFycm93LWFsdC1jaXJjbGUtbGVmdDpiZWZvcmV7Y29udGVudDoiXGYzNTkifS5mYS1hcnJvdy1hbHQtY2lyY2xlLXJpZ2h0OmJlZm9yZXtjb250ZW50OiJcZjM1YSJ9LmZhLWFycm93LWFsdC1jaXJjbGUtdXA6YmVmb3Jle2NvbnRlbnQ6IlxmMzViIn0uZmEtYXJyb3ctY2lyY2xlLWRvd246YmVmb3Jle2NvbnRlbnQ6IlxmMGFiIn0uZmEtYXJyb3ctY2lyY2xlLWxlZnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMGE4In0uZmEtYXJyb3ctY2lyY2xlLXJpZ2h0OmJlZm9yZXtjb250ZW50OiJcZjBhOSJ9LmZhLWFycm93LWNpcmNsZS11cDpiZWZvcmV7Y29udGVudDoiXGYwYWEifS5mYS1hcnJvdy1kb3duOmJlZm9yZXtjb250ZW50OiJcZjA2MyJ9LmZhLWFycm93LWxlZnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMDYwIn0uZmEtYXJyb3ctcmlnaHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMDYxIn0uZmEtYXJyb3ctdXA6YmVmb3Jle2NvbnRlbnQ6IlxmMDYyIn0uZmEtYXJyb3dzLWFsdDpiZWZvcmV7Y29udGVudDoiXGYwYjIifS5mYS1hcnJvd3MtYWx0LWg6YmVmb3Jle2NvbnRlbnQ6IlxmMzM3In0uZmEtYXJyb3dzLWFsdC12OmJlZm9yZXtjb250ZW50OiJcZjMzOCJ9LmZhLWFzc2lzdGl2ZS1saXN0ZW5pbmctc3lzdGVtczpiZWZvcmV7Y29udGVudDoiXGYyYTIifS5mYS1hc3RlcmlzazpiZWZvcmV7Y29udGVudDoiXGYwNjkifS5mYS1hc3ltbWV0cmlrOmJlZm9yZXtjb250ZW50OiJcZjM3MiJ9LmZhLWF0OmJlZm9yZXtjb250ZW50OiJcZjFmYSJ9LmZhLWF1ZGlibGU6YmVmb3Jle2NvbnRlbnQ6IlxmMzczIn0uZmEtYXVkaW8tZGVzY3JpcHRpb246YmVmb3Jle2NvbnRlbnQ6IlxmMjllIn0uZmEtYXV0b3ByZWZpeGVyOmJlZm9yZXtjb250ZW50OiJcZjQxYyJ9LmZhLWF2aWFuZXg6YmVmb3Jle2NvbnRlbnQ6IlxmMzc0In0uZmEtYXZpYXRvOmJlZm9yZXtjb250ZW50OiJcZjQyMSJ9LmZhLWF3czpiZWZvcmV7Y29udGVudDoiXGYzNzUifS5mYS1iYWNrd2FyZDpiZWZvcmV7Y29udGVudDoiXGYwNGEifS5mYS1iYWxhbmNlLXNjYWxlOmJlZm9yZXtjb250ZW50OiJcZjI0ZSJ9LmZhLWJhbjpiZWZvcmV7Y29udGVudDoiXGYwNWUifS5mYS1iYW5kY2FtcDpiZWZvcmV7Y29udGVudDoiXGYyZDUifS5mYS1iYXJjb2RlOmJlZm9yZXtjb250ZW50OiJcZjAyYSJ9LmZhLWJhcnM6YmVmb3Jle2NvbnRlbnQ6IlxmMGM5In0uZmEtYmFzZWJhbGwtYmFsbDpiZWZvcmV7Y29udGVudDoiXGY0MzMifS5mYS1iYXNrZXRiYWxsLWJhbGw6YmVmb3Jle2NvbnRlbnQ6IlxmNDM0In0uZmEtYmF0aDpiZWZvcmV7Y29udGVudDoiXGYyY2QifS5mYS1iYXR0ZXJ5LWVtcHR5OmJlZm9yZXtjb250ZW50OiJcZjI0NCJ9LmZhLWJhdHRlcnktZnVsbDpiZWZvcmV7Y29udGVudDoiXGYyNDAifS5mYS1iYXR0ZXJ5LWhhbGY6YmVmb3Jle2NvbnRlbnQ6IlxmMjQyIn0uZmEtYmF0dGVyeS1xdWFydGVyOmJlZm9yZXtjb250ZW50OiJcZjI0MyJ9LmZhLWJhdHRlcnktdGhyZWUtcXVhcnRlcnM6YmVmb3Jle2NvbnRlbnQ6IlxmMjQxIn0uZmEtYmVkOmJlZm9yZXtjb250ZW50OiJcZjIzNiJ9LmZhLWJlZXI6YmVmb3Jle2NvbnRlbnQ6IlxmMGZjIn0uZmEtYmVoYW5jZTpiZWZvcmV7Y29udGVudDoiXGYxYjQifS5mYS1iZWhhbmNlLXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYxYjUifS5mYS1iZWxsOmJlZm9yZXtjb250ZW50OiJcZjBmMyJ9LmZhLWJlbGwtc2xhc2g6YmVmb3Jle2NvbnRlbnQ6IlxmMWY2In0uZmEtYmljeWNsZTpiZWZvcmV7Y29udGVudDoiXGYyMDYifS5mYS1iaW1vYmplY3Q6YmVmb3Jle2NvbnRlbnQ6IlxmMzc4In0uZmEtYmlub2N1bGFyczpiZWZvcmV7Y29udGVudDoiXGYxZTUifS5mYS1iaXJ0aGRheS1jYWtlOmJlZm9yZXtjb250ZW50OiJcZjFmZCJ9LmZhLWJpdGJ1Y2tldDpiZWZvcmV7Y29udGVudDoiXGYxNzEifS5mYS1iaXRjb2luOmJlZm9yZXtjb250ZW50OiJcZjM3OSJ9LmZhLWJpdHk6YmVmb3Jle2NvbnRlbnQ6IlxmMzdhIn0uZmEtYmxhY2stdGllOmJlZm9yZXtjb250ZW50OiJcZjI3ZSJ9LmZhLWJsYWNrYmVycnk6YmVmb3Jle2NvbnRlbnQ6IlxmMzdiIn0uZmEtYmxpbmQ6YmVmb3Jle2NvbnRlbnQ6IlxmMjlkIn0uZmEtYmxvZ2dlcjpiZWZvcmV7Y29udGVudDoiXGYzN2MifS5mYS1ibG9nZ2VyLWI6YmVmb3Jle2NvbnRlbnQ6IlxmMzdkIn0uZmEtYmx1ZXRvb3RoOmJlZm9yZXtjb250ZW50OiJcZjI5MyJ9LmZhLWJsdWV0b290aC1iOmJlZm9yZXtjb250ZW50OiJcZjI5NCJ9LmZhLWJvbGQ6YmVmb3Jle2NvbnRlbnQ6IlxmMDMyIn0uZmEtYm9sdDpiZWZvcmV7Y29udGVudDoiXGYwZTcifS5mYS1ib21iOmJlZm9yZXtjb250ZW50OiJcZjFlMiJ9LmZhLWJvb2s6YmVmb3Jle2NvbnRlbnQ6IlxmMDJkIn0uZmEtYm9va21hcms6YmVmb3Jle2NvbnRlbnQ6IlxmMDJlIn0uZmEtYm93bGluZy1iYWxsOmJlZm9yZXtjb250ZW50OiJcZjQzNiJ9LmZhLWJyYWlsbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMmExIn0uZmEtYnJpZWZjYXNlOmJlZm9yZXtjb250ZW50OiJcZjBiMSJ9LmZhLWJ0YzpiZWZvcmV7Y29udGVudDoiXGYxNWEifS5mYS1idWc6YmVmb3Jle2NvbnRlbnQ6IlxmMTg4In0uZmEtYnVpbGRpbmc6YmVmb3Jle2NvbnRlbnQ6IlxmMWFkIn0uZmEtYnVsbGhvcm46YmVmb3Jle2NvbnRlbnQ6IlxmMGExIn0uZmEtYnVsbHNleWU6YmVmb3Jle2NvbnRlbnQ6IlxmMTQwIn0uZmEtYnVyb21vYmVsZXhwZXJ0ZTpiZWZvcmV7Y29udGVudDoiXGYzN2YifS5mYS1idXM6YmVmb3Jle2NvbnRlbnQ6IlxmMjA3In0uZmEtYnV5c2VsbGFkczpiZWZvcmV7Y29udGVudDoiXGYyMGQifS5mYS1jYWxjdWxhdG9yOmJlZm9yZXtjb250ZW50OiJcZjFlYyJ9LmZhLWNhbGVuZGFyOmJlZm9yZXtjb250ZW50OiJcZjEzMyJ9LmZhLWNhbGVuZGFyLWFsdDpiZWZvcmV7Y29udGVudDoiXGYwNzMifS5mYS1jYWxlbmRhci1jaGVjazpiZWZvcmV7Y29udGVudDoiXGYyNzQifS5mYS1jYWxlbmRhci1taW51czpiZWZvcmV7Y29udGVudDoiXGYyNzIifS5mYS1jYWxlbmRhci1wbHVzOmJlZm9yZXtjb250ZW50OiJcZjI3MSJ9LmZhLWNhbGVuZGFyLXRpbWVzOmJlZm9yZXtjb250ZW50OiJcZjI3MyJ9LmZhLWNhbWVyYTpiZWZvcmV7Y29udGVudDoiXGYwMzAifS5mYS1jYW1lcmEtcmV0cm86YmVmb3Jle2NvbnRlbnQ6IlxmMDgzIn0uZmEtY2FyOmJlZm9yZSwuZmEtYXV0b21vYmlsZTpiZWZvcmV7Y29udGVudDoiXGYxYjkifS5mYS1jYXJldC1kb3duOmJlZm9yZXtjb250ZW50OiJcZjBkNyJ9LmZhLWNhcmV0LWxlZnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMGQ5In0uZmEtY2FyZXQtcmlnaHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMGRhIn0uZmEtY2FyZXQtc3F1YXJlLWRvd246YmVmb3Jle2NvbnRlbnQ6IlxmMTUwIn0uZmEtY2FyZXQtc3F1YXJlLWxlZnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMTkxIn0uZmEtY2FyZXQtc3F1YXJlLXJpZ2h0OmJlZm9yZXtjb250ZW50OiJcZjE1MiJ9LmZhLWNhcmV0LXNxdWFyZS11cDpiZWZvcmV7Y29udGVudDoiXGYxNTEifS5mYS1jYXJldC11cDpiZWZvcmV7Y29udGVudDoiXGYwZDgifS5mYS1jYXJ0LWFycm93LWRvd246YmVmb3Jle2NvbnRlbnQ6IlxmMjE4In0uZmEtY2FydC1wbHVzOmJlZm9yZXtjb250ZW50OiJcZjIxNyJ9LmZhLWNjLWFtYXpvbi1wYXk6YmVmb3Jle2NvbnRlbnQ6IlxmNDJkIn0uZmEtY2MtYW1leDpiZWZvcmV7Y29udGVudDoiXGYxZjMifS5mYS1jYy1hcHBsZS1wYXk6YmVmb3Jle2NvbnRlbnQ6IlxmNDE2In0uZmEtY2MtZGluZXJzLWNsdWI6YmVmb3Jle2NvbnRlbnQ6IlxmMjRjIn0uZmEtY2MtZGlzY292ZXI6YmVmb3Jle2NvbnRlbnQ6IlxmMWYyIn0uZmEtY2MtamNiOmJlZm9yZXtjb250ZW50OiJcZjI0YiJ9LmZhLWNjLW1hc3RlcmNhcmQ6YmVmb3Jle2NvbnRlbnQ6IlxmMWYxIn0uZmEtY2MtcGF5cGFsOmJlZm9yZXtjb250ZW50OiJcZjFmNCJ9LmZhLWNjLXN0cmlwZTpiZWZvcmV7Y29udGVudDoiXGYxZjUifS5mYS1jYy12aXNhOmJlZm9yZXtjb250ZW50OiJcZjFmMCJ9LmZhLWNlbnRlcmNvZGU6YmVmb3Jle2NvbnRlbnQ6IlxmMzgwIn0uZmEtY2VydGlmaWNhdGU6YmVmb3Jle2NvbnRlbnQ6IlxmMGEzIn0uZmEtY2hhcnQtYXJlYTpiZWZvcmV7Y29udGVudDoiXGYxZmUifS5mYS1jaGFydC1iYXI6YmVmb3Jle2NvbnRlbnQ6IlxmMDgwIn0uZmEtY2hhcnQtbGluZTpiZWZvcmV7Y29udGVudDoiXGYyMDEifS5mYS1jaGFydC1waWU6YmVmb3Jle2NvbnRlbnQ6IlxmMjAwIn0uZmEtY2hlY2s6YmVmb3Jle2NvbnRlbnQ6IlxmMDBjIn0uZmEtY2hlY2stY2lyY2xlOmJlZm9yZXtjb250ZW50OiJcZjA1OCJ9LmZhLWNoZWNrLXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYxNGEifS5mYS1jaGVzczpiZWZvcmV7Y29udGVudDoiXGY0MzkifS5mYS1jaGVzcy1iaXNob3A6YmVmb3Jle2NvbnRlbnQ6IlxmNDNhIn0uZmEtY2hlc3MtYm9hcmQ6YmVmb3Jle2NvbnRlbnQ6IlxmNDNjIn0uZmEtY2hlc3Mta2luZzpiZWZvcmV7Y29udGVudDoiXGY0M2YifS5mYS1jaGVzcy1rbmlnaHQ6YmVmb3Jle2NvbnRlbnQ6IlxmNDQxIn0uZmEtY2hlc3MtcGF3bjpiZWZvcmV7Y29udGVudDoiXGY0NDMifS5mYS1jaGVzcy1xdWVlbjpiZWZvcmV7Y29udGVudDoiXGY0NDUifS5mYS1jaGVzcy1yb29rOmJlZm9yZXtjb250ZW50OiJcZjQ0NyJ9LmZhLWNoZXZyb24tY2lyY2xlLWRvd246YmVmb3Jle2NvbnRlbnQ6IlxmMTNhIn0uZmEtY2hldnJvbi1jaXJjbGUtbGVmdDpiZWZvcmV7Y29udGVudDoiXGYxMzcifS5mYS1jaGV2cm9uLWNpcmNsZS1yaWdodDpiZWZvcmV7Y29udGVudDoiXGYxMzgifS5mYS1jaGV2cm9uLWNpcmNsZS11cDpiZWZvcmV7Y29udGVudDoiXGYxMzkifS5mYS1jaGV2cm9uLWRvd246YmVmb3Jle2NvbnRlbnQ6IlxmMDc4In0uZmEtY2hldnJvbi1sZWZ0OmJlZm9yZXtjb250ZW50OiJcZjA1MyJ9LmZhLWNoZXZyb24tcmlnaHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMDU0In0uZmEtY2hldnJvbi11cDpiZWZvcmV7Y29udGVudDoiXGYwNzcifS5mYS1jaGlsZDpiZWZvcmV7Y29udGVudDoiXGYxYWUifS5mYS1jaHJvbWU6YmVmb3Jle2NvbnRlbnQ6IlxmMjY4In0uZmEtY2lyY2xlOmJlZm9yZXtjb250ZW50OiJcZjExMSJ9LmZhLWNpcmNsZS1ub3RjaDpiZWZvcmV7Y29udGVudDoiXGYxY2UifS5mYS1jbGlwYm9hcmQ6YmVmb3Jle2NvbnRlbnQ6IlxmMzI4In0uZmEtY2xvY2s6YmVmb3Jle2NvbnRlbnQ6IlxmMDE3In0uZmEtY2xvbmU6YmVmb3Jle2NvbnRlbnQ6IlxmMjRkIn0uZmEtY2xvc2VkLWNhcHRpb25pbmc6YmVmb3Jle2NvbnRlbnQ6IlxmMjBhIn0uZmEtY2xvdWQ6YmVmb3Jle2NvbnRlbnQ6IlxmMGMyIn0uZmEtY2xvdWQtZG93bmxvYWQtYWx0OmJlZm9yZXtjb250ZW50OiJcZjM4MSJ9LmZhLWNsb3VkLXVwbG9hZC1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMzgyIn0uZmEtY2xvdWRzY2FsZTpiZWZvcmV7Y29udGVudDoiXGYzODMifS5mYS1jbG91ZHNtaXRoOmJlZm9yZXtjb250ZW50OiJcZjM4NCJ9LmZhLWNsb3VkdmVyc2lmeTpiZWZvcmV7Y29udGVudDoiXGYzODUifS5mYS1jb2RlOmJlZm9yZXtjb250ZW50OiJcZjEyMSJ9LmZhLWNvZGUtYnJhbmNoOmJlZm9yZXtjb250ZW50OiJcZjEyNiJ9LmZhLWNvZGVwZW46YmVmb3Jle2NvbnRlbnQ6IlxmMWNiIn0uZmEtY29kaWVwaWU6YmVmb3Jle2NvbnRlbnQ6IlxmMjg0In0uZmEtY29mZmVlOmJlZm9yZXtjb250ZW50OiJcZjBmNCJ9LmZhLWNvZzpiZWZvcmV7Y29udGVudDoiXGYwMTMifS5mYS1jb2dzOmJlZm9yZXtjb250ZW50OiJcZjA4NSJ9LmZhLWdlYXJzOmJlZm9yZXtjb250ZW50OiJcZjA4NSJ9LmZhLWNvbHVtbnM6YmVmb3Jle2NvbnRlbnQ6IlxmMGRiIn0uZmEtY29tbWVudDpiZWZvcmV7Y29udGVudDoiXGYwNzUifS5mYS1jb21tZW50LWFsdDpiZWZvcmV7Y29udGVudDoiXGYyN2EifS5mYS1jb21tZW50czpiZWZvcmV7Y29udGVudDoiXGYwODYifS5mYS1jb21wYXNzOmJlZm9yZXtjb250ZW50OiJcZjE0ZSJ9LmZhLWNvbXByZXNzOmJlZm9yZXtjb250ZW50OiJcZjA2NiJ9LmZhLWNvbm5lY3RkZXZlbG9wOmJlZm9yZXtjb250ZW50OiJcZjIwZSJ9LmZhLWNvbnRhbzpiZWZvcmV7Y29udGVudDoiXGYyNmQifS5mYS1jb3B5OmJlZm9yZXtjb250ZW50OiJcZjBjNSJ9LmZhLWNvcHlyaWdodDpiZWZvcmV7Y29udGVudDoiXGYxZjkifS5mYS1jcGFuZWw6YmVmb3Jle2NvbnRlbnQ6IlxmMzg4In0uZmEtY3JlYXRpdmUtY29tbW9uczpiZWZvcmV7Y29udGVudDoiXGYyNWUifS5mYS1jcmVkaXQtY2FyZDpiZWZvcmV7Y29udGVudDoiXGYwOWQifS5mYS1jcm9wOmJlZm9yZXtjb250ZW50OiJcZjEyNSJ9LmZhLWNyb3NzaGFpcnM6YmVmb3Jle2NvbnRlbnQ6IlxmMDViIn0uZmEtY3NzMzpiZWZvcmV7Y29udGVudDoiXGYxM2MifS5mYS1jc3MzLWFsdDpiZWZvcmV7Y29udGVudDoiXGYzOGIifS5mYS1jdWJlOmJlZm9yZXtjb250ZW50OiJcZjFiMiJ9LmZhLWN1YmVzOmJlZm9yZXtjb250ZW50OiJcZjFiMyJ9LmZhLWN1dDpiZWZvcmV7Y29udGVudDoiXGYwYzQifS5mYS1jdXR0bGVmaXNoOmJlZm9yZXtjb250ZW50OiJcZjM4YyJ9LmZhLWQtYW5kLWQ6YmVmb3Jle2NvbnRlbnQ6IlxmMzhkIn0uZmEtZGFzaGN1YmU6YmVmb3Jle2NvbnRlbnQ6IlxmMjEwIn0uZmEtZGF0YWJhc2U6YmVmb3Jle2NvbnRlbnQ6IlxmMWMwIn0uZmEtZGVhZjpiZWZvcmV7Y29udGVudDoiXGYyYTQifS5mYS1kZWxpY2lvdXM6YmVmb3Jle2NvbnRlbnQ6IlxmMWE1In0uZmEtZGVwbG95ZG9nOmJlZm9yZXtjb250ZW50OiJcZjM4ZSJ9LmZhLWRlc2twcm86YmVmb3Jle2NvbnRlbnQ6IlxmMzhmIn0uZmEtZGVza3RvcDpiZWZvcmV7Y29udGVudDoiXGYxMDgifS5mYS1kZXZpYW50YXJ0OmJlZm9yZXtjb250ZW50OiJcZjFiZCJ9LmZhLWRpZ2c6YmVmb3Jle2NvbnRlbnQ6IlxmMWE2In0uZmEtZGlnaXRhbC1vY2VhbjpiZWZvcmV7Y29udGVudDoiXGYzOTEifS5mYS1kaXNjb3JkOmJlZm9yZXtjb250ZW50OiJcZjM5MiJ9LmZhLWRpc2NvdXJzZTpiZWZvcmV7Y29udGVudDoiXGYzOTMifS5mYS1kb2NodWI6YmVmb3Jle2NvbnRlbnQ6IlxmMzk0In0uZmEtZG9ja2VyOmJlZm9yZXtjb250ZW50OiJcZjM5NSJ9LmZhLWRvbGxhci1zaWduOmJlZm9yZSwuZmEtZG9sbGFyOmJlZm9yZSwuZmEtdXNkOmJlZm9yZXtjb250ZW50OiJcZjE1NSJ9LmZhLWRvdC1jaXJjbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMTkyIn0uZmEtZG93bmxvYWQ6YmVmb3Jle2NvbnRlbnQ6IlxmMDE5In0uZmEtZHJhZnQyZGlnaXRhbDpiZWZvcmV7Y29udGVudDoiXGYzOTYifS5mYS1kcmliYmJsZTpiZWZvcmV7Y29udGVudDoiXGYxN2QifS5mYS1kcmliYmJsZS1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMzk3In0uZmEtZHJvcGJveDpiZWZvcmV7Y29udGVudDoiXGYxNmIifS5mYS1kcnVwYWw6YmVmb3Jle2NvbnRlbnQ6IlxmMWE5In0uZmEtZHlhbG9nOmJlZm9yZXtjb250ZW50OiJcZjM5OSJ9LmZhLWVhcmx5YmlyZHM6YmVmb3Jle2NvbnRlbnQ6IlxmMzlhIn0uZmEtZWRnZTpiZWZvcmV7Y29udGVudDoiXGYyODIifS5mYS1lZGl0OmJlZm9yZXtjb250ZW50OiJcZjA0NCJ9LmZhLWVqZWN0OmJlZm9yZXtjb250ZW50OiJcZjA1MiJ9LmZhLWVsZW1lbnRvcjpiZWZvcmV7Y29udGVudDoiXGY0MzAifS5mYS1lbGxpcHNpcy1oOmJlZm9yZXtjb250ZW50OiJcZjE0MSJ9LmZhLWVsbGlwc2lzLXY6YmVmb3Jle2NvbnRlbnQ6IlxmMTQyIn0uZmEtZW1iZXI6YmVmb3Jle2NvbnRlbnQ6IlxmNDIzIn0uZmEtZW1waXJlOmJlZm9yZXtjb250ZW50OiJcZjFkMSJ9LmZhLWVudmVsb3BlOmJlZm9yZXtjb250ZW50OiJcZjBlMCJ9LmZhLWVudmVsb3BlLW9wZW46YmVmb3Jle2NvbnRlbnQ6IlxmMmI2In0uZmEtZW52ZWxvcGUtc3F1YXJlOmJlZm9yZXtjb250ZW50OiJcZjE5OSJ9LmZhLWVudmlyYTpiZWZvcmV7Y29udGVudDoiXGYyOTkifS5mYS1lcmFzZXI6YmVmb3Jle2NvbnRlbnQ6IlxmMTJkIn0uZmEtZXJsYW5nOmJlZm9yZXtjb250ZW50OiJcZjM5ZCJ9LmZhLWV0aGVyZXVtOmJlZm9yZXtjb250ZW50OiJcZjQyZSJ9LmZhLWV0c3k6YmVmb3Jle2NvbnRlbnQ6IlxmMmQ3In0uZmEtZXVyby1zaWduOmJlZm9yZXtjb250ZW50OiJcZjE1MyJ9LmZhLWV4Y2hhbmdlLWFsdDpiZWZvcmV7Y29udGVudDoiXGYzNjIifS5mYS1leGNsYW1hdGlvbjpiZWZvcmV7Y29udGVudDoiXGYxMmEifS5mYS1leGNsYW1hdGlvbi1jaXJjbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMDZhIn0uZmEtZXhjbGFtYXRpb24tdHJpYW5nbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMDcxIn0uZmEtZXhwYW5kOmJlZm9yZXtjb250ZW50OiJcZjA2NSJ9LmZhLWV4cGFuZC1hcnJvd3MtYWx0OmJlZm9yZXtjb250ZW50OiJcZjMxZSJ9LmZhLWV4cGVkaXRlZHNzbDpiZWZvcmV7Y29udGVudDoiXGYyM2UifS5mYS1leHRlcm5hbC1saW5rLWFsdDpiZWZvcmV7Y29udGVudDoiXGYzNWQifS5mYS1leHRlcm5hbC1saW5rLXNxdWFyZS1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMzYwIn0uZmEtZXllOmJlZm9yZXtjb250ZW50OiJcZjA2ZSJ9LmZhLWV5ZS1kcm9wcGVyOmJlZm9yZXtjb250ZW50OiJcZjFmYiJ9LmZhLWV5ZS1zbGFzaDpiZWZvcmV7Y29udGVudDoiXGYwNzAifS5mYS1mYWNlYm9vazpiZWZvcmV7Y29udGVudDoiXGYwOWEifS5mYS1mYWNlYm9vay1mOmJlZm9yZXtjb250ZW50OiJcZjM5ZSJ9LmZhLWZhY2Vib29rLW1lc3NlbmdlcjpiZWZvcmV7Y29udGVudDoiXGYzOWYifS5mYS1mYWNlYm9vay1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMDgyIn0uZmEtZmFzdC1iYWNrd2FyZDpiZWZvcmV7Y29udGVudDoiXGYwNDkifS5mYS1mYXN0LWZvcndhcmQ6YmVmb3Jle2NvbnRlbnQ6IlxmMDUwIn0uZmEtZmF4OmJlZm9yZXtjb250ZW50OiJcZjFhYyJ9LmZhLWZlbWFsZTpiZWZvcmV7Y29udGVudDoiXGYxODIifS5mYS1maWdodGVyLWpldDpiZWZvcmV7Y29udGVudDoiXGYwZmIifS5mYS1maWxlOmJlZm9yZSwuZmEtZmlsZS1vOmJlZm9yZXtjb250ZW50OiJcZjE1YiJ9LmZhLWZpbGUtYWx0OmJlZm9yZXtjb250ZW50OiJcZjE1YyJ9LmZhLWZpbGUtYXJjaGl2ZTpiZWZvcmV7Y29udGVudDoiXGYxYzYifS5mYS1maWxlLWF1ZGlvOmJlZm9yZXtjb250ZW50OiJcZjFjNyJ9LmZhLWZpbGUtY29kZTpiZWZvcmV7Y29udGVudDoiXGYxYzkifS5mYS1maWxlLWV4Y2VsOmJlZm9yZXtjb250ZW50OiJcZjFjMyJ9LmZhLWZpbGUtaW1hZ2U6YmVmb3Jle2NvbnRlbnQ6IlxmMWM1In0uZmEtZmlsZS1wZGY6YmVmb3Jle2NvbnRlbnQ6IlxmMWMxIn0uZmEtZmlsZS1wb3dlcnBvaW50OmJlZm9yZXtjb250ZW50OiJcZjFjNCJ9LmZhLWZpbGUtdmlkZW86YmVmb3Jle2NvbnRlbnQ6IlxmMWM4In0uZmEtZmlsZS13b3JkOmJlZm9yZXtjb250ZW50OiJcZjFjMiJ9LmZhLWZpbG06YmVmb3Jle2NvbnRlbnQ6IlxmMDA4In0uZmEtZmlsdGVyOmJlZm9yZXtjb250ZW50OiJcZjBiMCJ9LmZhLWZpcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMDZkIn0uZmEtZmlyZS1leHRpbmd1aXNoZXI6YmVmb3Jle2NvbnRlbnQ6IlxmMTM0In0uZmEtZmlyZWZveDpiZWZvcmV7Y29udGVudDoiXGYyNjkifS5mYS1maXJzdC1vcmRlcjpiZWZvcmV7Y29udGVudDoiXGYyYjAifS5mYS1maXJzdGRyYWZ0OmJlZm9yZXtjb250ZW50OiJcZjNhMSJ9LmZhLWZsYWc6YmVmb3Jle2NvbnRlbnQ6IlxmMDI0In0uZmEtZmxhZy1jaGVja2VyZWQ6YmVmb3Jle2NvbnRlbnQ6IlxmMTFlIn0uZmEtZmxhc2s6YmVmb3Jle2NvbnRlbnQ6IlxmMGMzIn0uZmEtZmxpY2tyOmJlZm9yZXtjb250ZW50OiJcZjE2ZSJ9LmZhLWZsaXBib2FyZDpiZWZvcmV7Y29udGVudDoiXGY0NGQifS5mYS1mbHk6YmVmb3Jle2NvbnRlbnQ6IlxmNDE3In0uZmEtZm9sZGVyOmJlZm9yZXtjb250ZW50OiJcZjA3YiJ9LmZhLWZvbGRlci1vcGVuOmJlZm9yZXtjb250ZW50OiJcZjA3YyJ9LmZhLWZvbnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMDMxIn0uZmEtZm9udC1hd2Vzb21lOmJlZm9yZXtjb250ZW50OiJcZjJiNCJ9LmZhLWZvbnQtYXdlc29tZS1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMzVjIn0uZmEtZm9udC1hd2Vzb21lLWZsYWc6YmVmb3Jle2NvbnRlbnQ6IlxmNDI1In0uZmEtZm9udGljb25zOmJlZm9yZXtjb250ZW50OiJcZjI4MCJ9LmZhLWZvbnRpY29ucy1maTpiZWZvcmV7Y29udGVudDoiXGYzYTIifS5mYS1mb290YmFsbC1iYWxsOmJlZm9yZXtjb250ZW50OiJcZjQ0ZSJ9LmZhLWZvcnQtYXdlc29tZTpiZWZvcmV7Y29udGVudDoiXGYyODYifS5mYS1mb3J0LWF3ZXNvbWUtYWx0OmJlZm9yZXtjb250ZW50OiJcZjNhMyJ9LmZhLWZvcnVtYmVlOmJlZm9yZXtjb250ZW50OiJcZjIxMSJ9LmZhLWZvcndhcmQ6YmVmb3Jle2NvbnRlbnQ6IlxmMDRlIn0uZmEtZm91cnNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYxODAifS5mYS1mcmVlLWNvZGUtY2FtcDpiZWZvcmV7Y29udGVudDoiXGYyYzUifS5mYS1mcmVlYnNkOmJlZm9yZXtjb250ZW50OiJcZjNhNCJ9LmZhLWZyb3duOmJlZm9yZXtjb250ZW50OiJcZjExOSJ9LmZhLWZ1dGJvbDpiZWZvcmV7Y29udGVudDoiXGYxZTMifS5mYS1nYW1lcGFkOmJlZm9yZXtjb250ZW50OiJcZjExYiJ9LmZhLWdhdmVsOmJlZm9yZXtjb250ZW50OiJcZjBlMyJ9LmZhLWdlbTpiZWZvcmV7Y29udGVudDoiXGYzYTUifS5mYS1nZW5kZXJsZXNzOmJlZm9yZXtjb250ZW50OiJcZjIyZCJ9LmZhLWdldC1wb2NrZXQ6YmVmb3Jle2NvbnRlbnQ6IlxmMjY1In0uZmEtZ2c6YmVmb3Jle2NvbnRlbnQ6IlxmMjYwIn0uZmEtZ2ctY2lyY2xlOmJlZm9yZXtjb250ZW50OiJcZjI2MSJ9LmZhLWdpZnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMDZiIn0uZmEtZ2l0OmJlZm9yZXtjb250ZW50OiJcZjFkMyJ9LmZhLWdpdC1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMWQyIn0uZmEtZ2l0aHViOmJlZm9yZXtjb250ZW50OiJcZjA5YiJ9LmZhLWdpdGh1Yi1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMTEzIn0uZmEtZ2l0aHViLXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYwOTIifS5mYS1naXRrcmFrZW46YmVmb3Jle2NvbnRlbnQ6IlxmM2E2In0uZmEtZ2l0bGFiOmJlZm9yZXtjb250ZW50OiJcZjI5NiJ9LmZhLWdpdHRlcjpiZWZvcmV7Y29udGVudDoiXGY0MjYifS5mYS1nbGFzcy1tYXJ0aW5pOmJlZm9yZXtjb250ZW50OiJcZjAwMCJ9LmZhLWdsaWRlOmJlZm9yZXtjb250ZW50OiJcZjJhNSJ9LmZhLWdsaWRlLWc6YmVmb3Jle2NvbnRlbnQ6IlxmMmE2In0uZmEtZ2xvYmU6YmVmb3Jle2NvbnRlbnQ6IlxmMGFjIn0uZmEtZ29mb3JlOmJlZm9yZXtjb250ZW50OiJcZjNhNyJ9LmZhLWdvbGYtYmFsbDpiZWZvcmV7Y29udGVudDoiXGY0NTAifS5mYS1nb29kcmVhZHM6YmVmb3Jle2NvbnRlbnQ6IlxmM2E4In0uZmEtZ29vZHJlYWRzLWc6YmVmb3Jle2NvbnRlbnQ6IlxmM2E5In0uZmEtZ29vZ2xlOmJlZm9yZXtjb250ZW50OiJcZjFhMCJ9LmZhLWdvb2dsZS1kcml2ZTpiZWZvcmV7Y29udGVudDoiXGYzYWEifS5mYS1nb29nbGUtcGxheTpiZWZvcmV7Y29udGVudDoiXGYzYWIifS5mYS1nb29nbGUtcGx1czpiZWZvcmV7Y29udGVudDoiXGYyYjMifS5mYS1nb29nbGUtcGx1cy1nOmJlZm9yZXtjb250ZW50OiJcZjBkNSJ9LmZhLWdvb2dsZS1wbHVzLXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYwZDQifS5mYS1nb29nbGUtd2FsbGV0OmJlZm9yZXtjb250ZW50OiJcZjFlZSJ9LmZhLWdyYWR1YXRpb24tY2FwOmJlZm9yZXtjb250ZW50OiJcZjE5ZCJ9LmZhLWdyYXRpcGF5OmJlZm9yZXtjb250ZW50OiJcZjE4NCJ9LmZhLWdyYXY6YmVmb3Jle2NvbnRlbnQ6IlxmMmQ2In0uZmEtZ3JpcGZpcmU6YmVmb3Jle2NvbnRlbnQ6IlxmM2FjIn0uZmEtZ3J1bnQ6YmVmb3Jle2NvbnRlbnQ6IlxmM2FkIn0uZmEtZ3VscDpiZWZvcmV7Y29udGVudDoiXGYzYWUifS5mYS1oLXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYwZmQifS5mYS1oYWNrZXItbmV3czpiZWZvcmV7Y29udGVudDoiXGYxZDQifS5mYS1oYWNrZXItbmV3cy1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmM2FmIn0uZmEtaGFuZC1saXphcmQ6YmVmb3Jle2NvbnRlbnQ6IlxmMjU4In0uZmEtaGFuZC1wYXBlcjpiZWZvcmV7Y29udGVudDoiXGYyNTYifS5mYS1oYW5kLXBlYWNlOmJlZm9yZXtjb250ZW50OiJcZjI1YiJ9LmZhLWhhbmQtcG9pbnQtZG93bjpiZWZvcmV7Y29udGVudDoiXGYwYTcifS5mYS1oYW5kLXBvaW50LWxlZnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMGE1In0uZmEtaGFuZC1wb2ludC1yaWdodDpiZWZvcmV7Y29udGVudDoiXGYwYTQifS5mYS1oYW5kLXBvaW50LXVwOmJlZm9yZXtjb250ZW50OiJcZjBhNiJ9LmZhLWhhbmQtcG9pbnRlcjpiZWZvcmUsLmZhLWhhbmQtcG9pbnRlci1vOmJlZm9yZXtjb250ZW50OiJcZjI1YSJ9LmZhLWhhbmQtcm9jazpiZWZvcmV7Y29udGVudDoiXGYyNTUifS5mYS1oYW5kLXNjaXNzb3JzOmJlZm9yZXtjb250ZW50OiJcZjI1NyJ9LmZhLWhhbmQtc3BvY2s6YmVmb3Jle2NvbnRlbnQ6IlxmMjU5In0uZmEtaGFuZHNoYWtlOmJlZm9yZXtjb250ZW50OiJcZjJiNSJ9LmZhLWhhc2h0YWc6YmVmb3Jle2NvbnRlbnQ6IlxmMjkyIn0uZmEtaGRkOmJlZm9yZXtjb250ZW50OiJcZjBhMCJ9LmZhLWhlYWRpbmc6YmVmb3Jle2NvbnRlbnQ6IlxmMWRjIn0uZmEtaGVhZHBob25lczpiZWZvcmV7Y29udGVudDoiXGYwMjUifS5mYS1oZWFydDpiZWZvcmV7Y29udGVudDoiXGYwMDQifS5mYS1oZWFydGJlYXQ6YmVmb3Jle2NvbnRlbnQ6IlxmMjFlIn0uZmEtaGlwczpiZWZvcmV7Y29udGVudDoiXGY0NTIifS5mYS1oaXJlLWEtaGVscGVyOmJlZm9yZXtjb250ZW50OiJcZjNiMCJ9LmZhLWhpc3Rvcnk6YmVmb3Jle2NvbnRlbnQ6IlxmMWRhIn0uZmEtaG9ja2V5LXB1Y2s6YmVmb3Jle2NvbnRlbnQ6IlxmNDUzIn0uZmEtaG9tZTpiZWZvcmV7Y29udGVudDoiXGYwMTUifS5mYS1ob29saTpiZWZvcmV7Y29udGVudDoiXGY0MjcifS5mYS1ob3NwaXRhbDpiZWZvcmV7Y29udGVudDoiXGYwZjgifS5mYS1ob3RqYXI6YmVmb3Jle2NvbnRlbnQ6IlxmM2IxIn0uZmEtaG91cmdsYXNzOmJlZm9yZXtjb250ZW50OiJcZjI1NCJ9LmZhLWhvdXJnbGFzcy1lbmQ6YmVmb3Jle2NvbnRlbnQ6IlxmMjUzIn0uZmEtaG91cmdsYXNzLWhhbGY6YmVmb3Jle2NvbnRlbnQ6IlxmMjUyIn0uZmEtaG91cmdsYXNzLXN0YXJ0OmJlZm9yZXtjb250ZW50OiJcZjI1MSJ9LmZhLWhvdXp6OmJlZm9yZXtjb250ZW50OiJcZjI3YyJ9LmZhLWh0bWw1OmJlZm9yZXtjb250ZW50OiJcZjEzYiJ9LmZhLWh1YnNwb3Q6YmVmb3Jle2NvbnRlbnQ6IlxmM2IyIn0uZmEtaS1jdXJzb3I6YmVmb3Jle2NvbnRlbnQ6IlxmMjQ2In0uZmEtaWQtYmFkZ2U6YmVmb3Jle2NvbnRlbnQ6IlxmMmMxIn0uZmEtaWQtY2FyZDpiZWZvcmV7Y29udGVudDoiXGYyYzIifS5mYS1pbWFnZTpiZWZvcmV7Y29udGVudDoiXGYwM2UifS5mYS1pbWFnZXM6YmVmb3Jle2NvbnRlbnQ6IlxmMzAyIn0uZmEtaW1kYjpiZWZvcmV7Y29udGVudDoiXGYyZDgifS5mYS1pbmJveDpiZWZvcmV7Y29udGVudDoiXGYwMWMifS5mYS1pbmRlbnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMDNjIn0uZmEtaW5kdXN0cnk6YmVmb3Jle2NvbnRlbnQ6IlxmMjc1In0uZmEtaW5mbzpiZWZvcmV7Y29udGVudDoiXGYxMjkifS5mYS1pbmZvLWNpcmNsZTpiZWZvcmV7Y29udGVudDoiXGYwNWEifS5mYS1pbnN0YWdyYW06YmVmb3Jle2NvbnRlbnQ6IlxmMTZkIn0uZmEtaW50ZXJuZXQtZXhwbG9yZXI6YmVmb3Jle2NvbnRlbnQ6IlxmMjZiIn0uZmEtaW94aG9zdDpiZWZvcmV7Y29udGVudDoiXGYyMDgifS5mYS1pdGFsaWM6YmVmb3Jle2NvbnRlbnQ6IlxmMDMzIn0uZmEtaXR1bmVzOmJlZm9yZXtjb250ZW50OiJcZjNiNCJ9LmZhLWl0dW5lcy1ub3RlOmJlZm9yZXtjb250ZW50OiJcZjNiNSJ9LmZhLWplbmtpbnM6YmVmb3Jle2NvbnRlbnQ6IlxmM2I2In0uZmEtam9nZXQ6YmVmb3Jle2NvbnRlbnQ6IlxmM2I3In0uZmEtam9vbWxhOmJlZm9yZXtjb250ZW50OiJcZjFhYSJ9LmZhLWpzOmJlZm9yZXtjb250ZW50OiJcZjNiOCJ9LmZhLWpzLXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYzYjkifS5mYS1qc2ZpZGRsZTpiZWZvcmV7Y29udGVudDoiXGYxY2MifS5mYS1rZXk6YmVmb3Jle2NvbnRlbnQ6IlxmMDg0In0uZmEta2V5Ym9hcmQ6YmVmb3Jle2NvbnRlbnQ6IlxmMTFjIn0uZmEta2V5Y2RuOmJlZm9yZXtjb250ZW50OiJcZjNiYSJ9LmZhLWtpY2tzdGFydGVyOmJlZm9yZXtjb250ZW50OiJcZjNiYiJ9LmZhLWtpY2tzdGFydGVyLWs6YmVmb3Jle2NvbnRlbnQ6IlxmM2JjIn0uZmEta29ydnVlOmJlZm9yZXtjb250ZW50OiJcZjQyZiJ9LmZhLWxhbmd1YWdlOmJlZm9yZXtjb250ZW50OiJcZjFhYiJ9LmZhLWxhcHRvcDpiZWZvcmV7Y29udGVudDoiXGYxMDkifS5mYS1sYXJhdmVsOmJlZm9yZXtjb250ZW50OiJcZjNiZCJ9LmZhLWxhc3RmbTpiZWZvcmV7Y29udGVudDoiXGYyMDIifS5mYS1sYXN0Zm0tc3F1YXJlOmJlZm9yZXtjb250ZW50OiJcZjIwMyJ9LmZhLWxlYWY6YmVmb3Jle2NvbnRlbnQ6IlxmMDZjIn0uZmEtbGVhbnB1YjpiZWZvcmV7Y29udGVudDoiXGYyMTIifS5mYS1sZW1vbjpiZWZvcmV7Y29udGVudDoiXGYwOTQifS5mYS1sZXNzOmJlZm9yZXtjb250ZW50OiJcZjQxZCJ9LmZhLWxldmVsLWRvd24tYWx0OmJlZm9yZXtjb250ZW50OiJcZjNiZSJ9LmZhLWxldmVsLXVwLWFsdDpiZWZvcmV7Y29udGVudDoiXGYzYmYifS5mYS1saWZlLXJpbmc6YmVmb3Jle2NvbnRlbnQ6IlxmMWNkIn0uZmEtbGlnaHRidWxiOmJlZm9yZXtjb250ZW50OiJcZjBlYiJ9LmZhLWxpbmU6YmVmb3Jle2NvbnRlbnQ6IlxmM2MwIn0uZmEtbGluazpiZWZvcmV7Y29udGVudDoiXGYwYzEifS5mYS1saW5rZWRpbjpiZWZvcmV7Y29udGVudDoiXGYwOGMifS5mYS1saW5rZWRpbi1pbjpiZWZvcmV7Y29udGVudDoiXGYwZTEifS5mYS1saW5vZGU6YmVmb3Jle2NvbnRlbnQ6IlxmMmI4In0uZmEtbGludXg6YmVmb3Jle2NvbnRlbnQ6IlxmMTdjIn0uZmEtbGlyYS1zaWduOmJlZm9yZXtjb250ZW50OiJcZjE5NSJ9LmZhLWxpc3Q6YmVmb3Jle2NvbnRlbnQ6IlxmMDNhIn0uZmEtbGlzdC1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMDIyIn0uZmEtbGlzdC1vbDpiZWZvcmV7Y29udGVudDoiXGYwY2IifS5mYS1saXN0LXVsOmJlZm9yZXtjb250ZW50OiJcZjBjYSJ9LmZhLWxvY2F0aW9uLWFycm93OmJlZm9yZXtjb250ZW50OiJcZjEyNCJ9LmZhLWxvY2s6YmVmb3Jle2NvbnRlbnQ6IlxmMDIzIn0uZmEtbG9jay1vcGVuOmJlZm9yZXtjb250ZW50OiJcZjNjMSJ9LmZhLWxvbmctYXJyb3ctYWx0LWRvd246YmVmb3Jle2NvbnRlbnQ6IlxmMzA5In0uZmEtbG9uZy1hcnJvdy1hbHQtbGVmdDpiZWZvcmV7Y29udGVudDoiXGYzMGEifS5mYS1sb25nLWFycm93LWFsdC1yaWdodDpiZWZvcmV7Y29udGVudDoiXGYzMGIifS5mYS1sb25nLWFycm93LWFsdC11cDpiZWZvcmV7Y29udGVudDoiXGYzMGMifS5mYS1sb3ctdmlzaW9uOmJlZm9yZXtjb250ZW50OiJcZjJhOCJ9LmZhLWx5ZnQ6YmVmb3Jle2NvbnRlbnQ6IlxmM2MzIn0uZmEtbWFnZW50bzpiZWZvcmV7Y29udGVudDoiXGYzYzQifS5mYS1tYWdpYzpiZWZvcmV7Y29udGVudDoiXGYwZDAifS5mYS1tYWduZXQ6YmVmb3Jle2NvbnRlbnQ6IlxmMDc2In0uZmEtbWFsZTpiZWZvcmV7Y29udGVudDoiXGYxODMifS5mYS1tYXA6YmVmb3Jle2NvbnRlbnQ6IlxmMjc5In0uZmEtbWFwLW1hcmtlcjpiZWZvcmV7Y29udGVudDoiXGYwNDEifS5mYS1tYXAtbWFya2VyLWFsdDpiZWZvcmV7Y29udGVudDoiXGYzYzUifS5mYS1tYXAtcGluOmJlZm9yZXtjb250ZW50OiJcZjI3NiJ9LmZhLW1hcC1zaWduczpiZWZvcmV7Y29udGVudDoiXGYyNzcifS5mYS1tYXJzOmJlZm9yZXtjb250ZW50OiJcZjIyMiJ9LmZhLW1hcnMtZG91YmxlOmJlZm9yZXtjb250ZW50OiJcZjIyNyJ9LmZhLW1hcnMtc3Ryb2tlOmJlZm9yZXtjb250ZW50OiJcZjIyOSJ9LmZhLW1hcnMtc3Ryb2tlLWg6YmVmb3Jle2NvbnRlbnQ6IlxmMjJiIn0uZmEtbWFycy1zdHJva2UtdjpiZWZvcmV7Y29udGVudDoiXGYyMmEifS5mYS1tYXhjZG46YmVmb3Jle2NvbnRlbnQ6IlxmMTM2In0uZmEtbWVkYXBwczpiZWZvcmV7Y29udGVudDoiXGYzYzYifS5mYS1tZWRpdW06YmVmb3Jle2NvbnRlbnQ6IlxmMjNhIn0uZmEtbWVkaXVtLW06YmVmb3Jle2NvbnRlbnQ6IlxmM2M3In0uZmEtbWVka2l0OmJlZm9yZXtjb250ZW50OiJcZjBmYSJ9LmZhLW1lZHJ0OmJlZm9yZXtjb250ZW50OiJcZjNjOCJ9LmZhLW1lZXR1cDpiZWZvcmV7Y29udGVudDoiXGYyZTAifS5mYS1tZWg6YmVmb3Jle2NvbnRlbnQ6IlxmMTFhIn0uZmEtbWVyY3VyeTpiZWZvcmV7Y29udGVudDoiXGYyMjMifS5mYS1taWNyb2NoaXA6YmVmb3Jle2NvbnRlbnQ6IlxmMmRiIn0uZmEtbWljcm9waG9uZTpiZWZvcmV7Y29udGVudDoiXGYxMzAifS5mYS1taWNyb3Bob25lLXNsYXNoOmJlZm9yZXtjb250ZW50OiJcZjEzMSJ9LmZhLW1pY3Jvc29mdDpiZWZvcmV7Y29udGVudDoiXGYzY2EifS5mYS1taW51czpiZWZvcmV7Y29udGVudDoiXGYwNjgifS5mYS1taW51cy1jaXJjbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMDU2In0uZmEtbWludXMtc3F1YXJlOmJlZm9yZXtjb250ZW50OiJcZjE0NiJ9LmZhLW1peDpiZWZvcmV7Y29udGVudDoiXGYzY2IifS5mYS1taXhjbG91ZDpiZWZvcmV7Y29udGVudDoiXGYyODkifS5mYS1taXp1bmk6YmVmb3Jle2NvbnRlbnQ6IlxmM2NjIn0uZmEtbW9iaWxlOmJlZm9yZXtjb250ZW50OiJcZjEwYiJ9LmZhLW1vYmlsZS1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmM2NkIn0uZmEtbW9keDpiZWZvcmV7Y29udGVudDoiXGYyODUifS5mYS1tb25lcm86YmVmb3Jle2NvbnRlbnQ6IlxmM2QwIn0uZmEtbW9uZXktYmlsbC1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmM2QxIn0uZmEtbW9vbjpiZWZvcmV7Y29udGVudDoiXGYxODYifS5mYS1tb3RvcmN5Y2xlOmJlZm9yZXtjb250ZW50OiJcZjIxYyJ9LmZhLW1vdXNlLXBvaW50ZXI6YmVmb3Jle2NvbnRlbnQ6IlxmMjQ1In0uZmEtbXVzaWM6YmVmb3Jle2NvbnRlbnQ6IlxmMDAxIn0uZmEtbmFwc3RlcjpiZWZvcmV7Y29udGVudDoiXGYzZDIifS5mYS1uZXV0ZXI6YmVmb3Jle2NvbnRlbnQ6IlxmMjJjIn0uZmEtbmV3c3BhcGVyOmJlZm9yZSwuZmEtbmV3c3BhcGVyLW86YmVmb3Jle2NvbnRlbnQ6IlxmMWVhIn0uZmEtbmludGVuZG8tc3dpdGNoOmJlZm9yZXtjb250ZW50OiJcZjQxOCJ9LmZhLW5vZGU6YmVmb3Jle2NvbnRlbnQ6IlxmNDE5In0uZmEtbm9kZS1qczpiZWZvcmV7Y29udGVudDoiXGYzZDMifS5mYS1ucG06YmVmb3Jle2NvbnRlbnQ6IlxmM2Q0In0uZmEtbnM4OmJlZm9yZXtjb250ZW50OiJcZjNkNSJ9LmZhLW51dHJpdGlvbml4OmJlZm9yZXtjb250ZW50OiJcZjNkNiJ9LmZhLW9iamVjdC1ncm91cDpiZWZvcmV7Y29udGVudDoiXGYyNDcifS5mYS1vYmplY3QtdW5ncm91cDpiZWZvcmV7Y29udGVudDoiXGYyNDgifS5mYS1vZG5va2xhc3NuaWtpOmJlZm9yZXtjb250ZW50OiJcZjI2MyJ9LmZhLW9kbm9rbGFzc25pa2ktc3F1YXJlOmJlZm9yZXtjb250ZW50OiJcZjI2NCJ9LmZhLW9wZW5jYXJ0OmJlZm9yZXtjb250ZW50OiJcZjIzZCJ9LmZhLW9wZW5pZDpiZWZvcmV7Y29udGVudDoiXGYxOWIifS5mYS1vcGVyYTpiZWZvcmV7Y29udGVudDoiXGYyNmEifS5mYS1vcHRpbi1tb25zdGVyOmJlZm9yZXtjb250ZW50OiJcZjIzYyJ9LmZhLW9zaTpiZWZvcmV7Y29udGVudDoiXGY0MWEifS5mYS1vdXRkZW50OmJlZm9yZXtjb250ZW50OiJcZjAzYiJ9LmZhLXBhZ2U0OmJlZm9yZXtjb250ZW50OiJcZjNkNyJ9LmZhLXBhZ2VsaW5lczpiZWZvcmV7Y29udGVudDoiXGYxOGMifS5mYS1wYWludC1icnVzaDpiZWZvcmV7Y29udGVudDoiXGYxZmMifS5mYS1wYWxmZWQ6YmVmb3Jle2NvbnRlbnQ6IlxmM2Q4In0uZmEtcGFwZXItcGxhbmU6YmVmb3Jle2NvbnRlbnQ6IlxmMWQ4In0uZmEtcGFwZXJjbGlwOmJlZm9yZXtjb250ZW50OiJcZjBjNiJ9LmZhLXBhcmFncmFwaDpiZWZvcmV7Y29udGVudDoiXGYxZGQifS5mYS1wYXN0ZTpiZWZvcmV7Y29udGVudDoiXGYwZWEifS5mYS1wYXRyZW9uOmJlZm9yZXtjb250ZW50OiJcZjNkOSJ9LmZhLXBhdXNlOmJlZm9yZXtjb250ZW50OiJcZjA0YyJ9LmZhLXBhdXNlLWNpcmNsZTpiZWZvcmV7Y29udGVudDoiXGYyOGIifS5mYS1wYXc6YmVmb3Jle2NvbnRlbnQ6IlxmMWIwIn0uZmEtcGF5cGFsOmJlZm9yZXtjb250ZW50OiJcZjFlZCJ9LmZhLXBlbi1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMTRiIn0uZmEtcGVuY2lsLWFsdDpiZWZvcmV7Y29udGVudDoiXGYzMDMifS5mYS1wZXJjZW50OmJlZm9yZXtjb250ZW50OiJcZjI5NSJ9LmZhLXBlcmlzY29wZTpiZWZvcmV7Y29udGVudDoiXGYzZGEifS5mYS1waGFicmljYXRvcjpiZWZvcmV7Y29udGVudDoiXGYzZGIifS5mYS1waG9lbml4LWZyYW1ld29yazpiZWZvcmV7Y29udGVudDoiXGYzZGMifS5mYS1waG9uZTpiZWZvcmV7Y29udGVudDoiXGYwOTUifS5mYS1waG9uZS1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMDk4In0uZmEtcGhvbmUtdm9sdW1lOmJlZm9yZXtjb250ZW50OiJcZjJhMCJ9LmZhLXBocDpiZWZvcmV7Y29udGVudDoiXGY0NTcifS5mYS1waWVkLXBpcGVyOmJlZm9yZXtjb250ZW50OiJcZjJhZSJ9LmZhLXBpZWQtcGlwZXItYWx0OmJlZm9yZXtjb250ZW50OiJcZjFhOCJ9LmZhLXBpZWQtcGlwZXItcHA6YmVmb3Jle2NvbnRlbnQ6IlxmMWE3In0uZmEtcGludGVyZXN0OmJlZm9yZXtjb250ZW50OiJcZjBkMiJ9LmZhLXBpbnRlcmVzdC1wOmJlZm9yZXtjb250ZW50OiJcZjIzMSJ9LmZhLXBpbnRlcmVzdC1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMGQzIn0uZmEtcGxhbmU6YmVmb3Jle2NvbnRlbnQ6IlxmMDcyIn0uZmEtcGxheTpiZWZvcmV7Y29udGVudDoiXGYwNGIifS5mYS1wbGF5LWNpcmNsZTpiZWZvcmV7Y29udGVudDoiXGYxNDQifS5mYS1wbGF5c3RhdGlvbjpiZWZvcmV7Y29udGVudDoiXGYzZGYifS5mYS1wbHVnOmJlZm9yZXtjb250ZW50OiJcZjFlNiJ9LmZhLXBsdXM6YmVmb3Jle2NvbnRlbnQ6IlxmMDY3In0uZmEtcGx1cy1jaXJjbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMDU1In0uZmEtcGx1cy1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMGZlIn0uZmEtcG9kY2FzdDpiZWZvcmV7Y29udGVudDoiXGYyY2UifS5mYS1wb3VuZC1zaWduOmJlZm9yZXtjb250ZW50OiJcZjE1NCJ9LmZhLXBvd2VyLW9mZjpiZWZvcmV7Y29udGVudDoiXGYwMTEifS5mYS1wcmludDpiZWZvcmV7Y29udGVudDoiXGYwMmYifS5mYS1wcm9kdWN0LWh1bnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMjg4In0uZmEtcHVzaGVkOmJlZm9yZXtjb250ZW50OiJcZjNlMSJ9LmZhLXB1enpsZS1waWVjZTpiZWZvcmV7Y29udGVudDoiXGYxMmUifS5mYS1weXRob246YmVmb3Jle2NvbnRlbnQ6IlxmM2UyIn0uZmEtcXE6YmVmb3Jle2NvbnRlbnQ6IlxmMWQ2In0uZmEtcXJjb2RlOmJlZm9yZXtjb250ZW50OiJcZjAyOSJ9LmZhLXF1ZXN0aW9uOmJlZm9yZXtjb250ZW50OiJcZjEyOCJ9LmZhLXF1ZXN0aW9uLWNpcmNsZTpiZWZvcmV7Y29udGVudDoiXGYwNTkifS5mYS1xdWlkZGl0Y2g6YmVmb3Jle2NvbnRlbnQ6IlxmNDU4In0uZmEtcXVpbnNjYXBlOmJlZm9yZXtjb250ZW50OiJcZjQ1OSJ9LmZhLXF1b3JhOmJlZm9yZXtjb250ZW50OiJcZjJjNCJ9LmZhLXF1b3RlLWxlZnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMTBkIn0uZmEtcXVvdGUtcmlnaHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMTBlIn0uZmEtcmFuZG9tOmJlZm9yZXtjb250ZW50OiJcZjA3NCJ9LmZhLXJhdmVscnk6YmVmb3Jle2NvbnRlbnQ6IlxmMmQ5In0uZmEtcmVhY3Q6YmVmb3Jle2NvbnRlbnQ6IlxmNDFiIn0uZmEtcmViZWw6YmVmb3Jle2NvbnRlbnQ6IlxmMWQwIn0uZmEtcmVjeWNsZTpiZWZvcmV7Y29udGVudDoiXGYxYjgifS5mYS1yZWQtcml2ZXI6YmVmb3Jle2NvbnRlbnQ6IlxmM2UzIn0uZmEtcmVkZGl0OmJlZm9yZXtjb250ZW50OiJcZjFhMSJ9LmZhLXJlZGRpdC1hbGllbjpiZWZvcmV7Y29udGVudDoiXGYyODEifS5mYS1yZWRkaXQtc3F1YXJlOmJlZm9yZXtjb250ZW50OiJcZjFhMiJ9LmZhLXJlZG86YmVmb3Jle2NvbnRlbnQ6IlxmMDFlIn0uZmEtcmVkby1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMmY5In0uZmEtcmVnaXN0ZXJlZDpiZWZvcmV7Y29udGVudDoiXGYyNWQifS5mYS1yZW5kYWN0OmJlZm9yZXtjb250ZW50OiJcZjNlNCJ9LmZhLXJlbnJlbjpiZWZvcmV7Y29udGVudDoiXGYxOGIifS5mYS1yZXBseTpiZWZvcmV7Y29udGVudDoiXGYzZTUifS5mYS1yZXBseS1hbGw6YmVmb3Jle2NvbnRlbnQ6IlxmMTIyIn0uZmEtcmVwbHlkOmJlZm9yZXtjb250ZW50OiJcZjNlNiJ9LmZhLXJlc29sdmluZzpiZWZvcmV7Y29udGVudDoiXGYzZTcifS5mYS1yZXR3ZWV0OmJlZm9yZXtjb250ZW50OiJcZjA3OSJ9LmZhLXJvYWQ6YmVmb3Jle2NvbnRlbnQ6IlxmMDE4In0uZmEtcm9ja2V0OmJlZm9yZXtjb250ZW50OiJcZjEzNSJ9LmZhLXJvY2tldGNoYXQ6YmVmb3Jle2NvbnRlbnQ6IlxmM2U4In0uZmEtcm9ja3JtczpiZWZvcmV7Y29udGVudDoiXGYzZTkifS5mYS1yc3M6YmVmb3Jle2NvbnRlbnQ6IlxmMDllIn0uZmEtcnNzLXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYxNDMifS5mYS1ydWJsZS1zaWduOmJlZm9yZXtjb250ZW50OiJcZjE1OCJ9LmZhLXJ1cGVlLXNpZ246YmVmb3Jle2NvbnRlbnQ6IlxmMTU2In0uZmEtc2FmYXJpOmJlZm9yZXtjb250ZW50OiJcZjI2NyJ9LmZhLXNhc3M6YmVmb3Jle2NvbnRlbnQ6IlxmNDFlIn0uZmEtc2F2ZTpiZWZvcmV7Y29udGVudDoiXGYwYzcifS5mYS1zY2hsaXg6YmVmb3Jle2NvbnRlbnQ6IlxmM2VhIn0uZmEtc2NyaWJkOmJlZm9yZXtjb250ZW50OiJcZjI4YSJ9LmZhLXNlYXJjaDpiZWZvcmV7Y29udGVudDoiXGYwMDIifS5mYS1zZWFyY2gtbWludXM6YmVmb3Jle2NvbnRlbnQ6IlxmMDEwIn0uZmEtc2VhcmNoLXBsdXM6YmVmb3Jle2NvbnRlbnQ6IlxmMDBlIn0uZmEtc2VhcmNoZW5naW46YmVmb3Jle2NvbnRlbnQ6IlxmM2ViIn0uZmEtc2VsbGNhc3Q6YmVmb3Jle2NvbnRlbnQ6IlxmMmRhIn0uZmEtc2VsbHN5OmJlZm9yZXtjb250ZW50OiJcZjIxMyJ9LmZhLXNlcnZlcjpiZWZvcmV7Y29udGVudDoiXGYyMzMifS5mYS1zZXJ2aWNlc3RhY2s6YmVmb3Jle2NvbnRlbnQ6IlxmM2VjIn0uZmEtc2hhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMDY0In0uZmEtc2hhcmUtYWx0OmJlZm9yZXtjb250ZW50OiJcZjFlMCJ9LmZhLXNoYXJlLWFsdC1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMWUxIn0uZmEtc2hhcmUtc3F1YXJlOmJlZm9yZXtjb250ZW50OiJcZjE0ZCJ9LmZhLXNoZWtlbC1zaWduOmJlZm9yZXtjb250ZW50OiJcZjIwYiJ9LmZhLXNoaWVsZC1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmM2VkIn0uZmEtc2hpcDpiZWZvcmV7Y29udGVudDoiXGYyMWEifS5mYS1zaGlydHNpbmJ1bGs6YmVmb3Jle2NvbnRlbnQ6IlxmMjE0In0uZmEtc2hvcHBpbmctYmFnOmJlZm9yZXtjb250ZW50OiJcZjI5MCJ9LmZhLXNob3BwaW5nLWJhc2tldDpiZWZvcmV7Y29udGVudDoiXGYyOTEifS5mYS1zaG9wcGluZy1jYXJ0OmJlZm9yZXtjb250ZW50OiJcZjA3YSJ9LmZhLXNob3dlcjpiZWZvcmV7Y29udGVudDoiXGYyY2MifS5mYS1zaWduLWluLWFsdDpiZWZvcmV7Y29udGVudDoiXGYyZjYifS5mYS1zaWduLWxhbmd1YWdlOmJlZm9yZXtjb250ZW50OiJcZjJhNyJ9LmZhLXNpZ24tb3V0LWFsdDpiZWZvcmV7Y29udGVudDoiXGYyZjUifS5mYS1zaWduYWw6YmVmb3Jle2NvbnRlbnQ6IlxmMDEyIn0uZmEtc2ltcGx5YnVpbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMjE1In0uZmEtc2lzdHJpeDpiZWZvcmV7Y29udGVudDoiXGYzZWUifS5mYS1zaXRlbWFwOmJlZm9yZXtjb250ZW50OiJcZjBlOCJ9LmZhLXNreWF0bGFzOmJlZm9yZXtjb250ZW50OiJcZjIxNiJ9LmZhLXNreXBlOmJlZm9yZXtjb250ZW50OiJcZjE3ZSJ9LmZhLXNsYWNrOmJlZm9yZXtjb250ZW50OiJcZjE5OCJ9LmZhLXNsYWNrLWhhc2g6YmVmb3Jle2NvbnRlbnQ6IlxmM2VmIn0uZmEtc2xpZGVycy1oOmJlZm9yZXtjb250ZW50OiJcZjFkZSJ9LmZhLXNsaWRlc2hhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMWU3In0uZmEtc21pbGU6YmVmb3JlLC5mYS1zbWlsZS1vOmJlZm9yZXtjb250ZW50OiJcZjExOCJ9LmZhLXNuYXBjaGF0OmJlZm9yZXtjb250ZW50OiJcZjJhYiJ9LmZhLXNuYXBjaGF0LWdob3N0OmJlZm9yZXtjb250ZW50OiJcZjJhYyJ9LmZhLXNuYXBjaGF0LXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYyYWQifS5mYS1zbm93Zmxha2U6YmVmb3Jle2NvbnRlbnQ6IlxmMmRjIn0uZmEtc29ydDpiZWZvcmV7Y29udGVudDoiXGYwZGMifS5mYS1zb3J0LWFscGhhLWRvd246YmVmb3Jle2NvbnRlbnQ6IlxmMTVkIn0uZmEtc29ydC1hbHBoYS11cDpiZWZvcmV7Y29udGVudDoiXGYxNWUifS5mYS1zb3J0LWFtb3VudC1kb3duOmJlZm9yZXtjb250ZW50OiJcZjE2MCJ9LmZhLXNvcnQtYW1vdW50LXVwOmJlZm9yZXtjb250ZW50OiJcZjE2MSJ9LmZhLXNvcnQtZG93bjpiZWZvcmV7Y29udGVudDoiXGYwZGQifS5mYS1zb3J0LW51bWVyaWMtZG93bjpiZWZvcmV7Y29udGVudDoiXGYxNjIifS5mYS1zb3J0LW51bWVyaWMtdXA6YmVmb3Jle2NvbnRlbnQ6IlxmMTYzIn0uZmEtc29ydC11cDpiZWZvcmV7Y29udGVudDoiXGYwZGUifS5mYS1zb3VuZGNsb3VkOmJlZm9yZXtjb250ZW50OiJcZjFiZSJ9LmZhLXNwYWNlLXNodXR0bGU6YmVmb3Jle2NvbnRlbnQ6IlxmMTk3In0uZmEtc3BlYWthcDpiZWZvcmV7Y29udGVudDoiXGYzZjMifS5mYS1zcGlubmVyOmJlZm9yZXtjb250ZW50OiJcZjExMCJ9LmZhLXNwb3RpZnk6YmVmb3Jle2NvbnRlbnQ6IlxmMWJjIn0uZmEtc3F1YXJlOmJlZm9yZXtjb250ZW50OiJcZjBjOCJ9LmZhLXNxdWFyZS1mdWxsOmJlZm9yZXtjb250ZW50OiJcZjQ1YyJ9LmZhLXN0YWNrLWV4Y2hhbmdlOmJlZm9yZXtjb250ZW50OiJcZjE4ZCJ9LmZhLXN0YWNrLW92ZXJmbG93OmJlZm9yZXtjb250ZW50OiJcZjE2YyJ9LmZhLXN0YXI6YmVmb3Jle2NvbnRlbnQ6IlxmMDA1In0uZmEtc3Rhci1oYWxmOmJlZm9yZXtjb250ZW50OiJcZjA4OSJ9LmZhLXN0YXlsaW5rZWQ6YmVmb3Jle2NvbnRlbnQ6IlxmM2Y1In0uZmEtc3RlYW06YmVmb3Jle2NvbnRlbnQ6IlxmMWI2In0uZmEtc3RlYW0tc3F1YXJlOmJlZm9yZXtjb250ZW50OiJcZjFiNyJ9LmZhLXN0ZWFtLXN5bWJvbDpiZWZvcmV7Y29udGVudDoiXGYzZjYifS5mYS1zdGVwLWJhY2t3YXJkOmJlZm9yZXtjb250ZW50OiJcZjA0OCJ9LmZhLXN0ZXAtZm9yd2FyZDpiZWZvcmV7Y29udGVudDoiXGYwNTEifS5mYS1zdGV0aG9zY29wZTpiZWZvcmV7Y29udGVudDoiXGYwZjEifS5mYS1zdGlja2VyLW11bGU6YmVmb3Jle2NvbnRlbnQ6IlxmM2Y3In0uZmEtc3RpY2t5LW5vdGU6YmVmb3Jle2NvbnRlbnQ6IlxmMjQ5In0uZmEtc3RvcDpiZWZvcmV7Y29udGVudDoiXGYwNGQifS5mYS1zdG9wLWNpcmNsZTpiZWZvcmV7Y29udGVudDoiXGYyOGQifS5mYS1zdG9wd2F0Y2g6YmVmb3Jle2NvbnRlbnQ6IlxmMmYyIn0uZmEtc3RyYXZhOmJlZm9yZXtjb250ZW50OiJcZjQyOCJ9LmZhLXN0cmVldC12aWV3OmJlZm9yZXtjb250ZW50OiJcZjIxZCJ9LmZhLXN0cmlrZXRocm91Z2g6YmVmb3Jle2NvbnRlbnQ6IlxmMGNjIn0uZmEtc3RyaXBlOmJlZm9yZXtjb250ZW50OiJcZjQyOSJ9LmZhLXN0cmlwZS1zOmJlZm9yZXtjb250ZW50OiJcZjQyYSJ9LmZhLXN0dWRpb3ZpbmFyaTpiZWZvcmV7Y29udGVudDoiXGYzZjgifS5mYS1zdHVtYmxldXBvbjpiZWZvcmV7Y29udGVudDoiXGYxYTQifS5mYS1zdHVtYmxldXBvbi1jaXJjbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMWEzIn0uZmEtc3Vic2NyaXB0OmJlZm9yZXtjb250ZW50OiJcZjEyYyJ9LmZhLXN1YndheTpiZWZvcmV7Y29udGVudDoiXGYyMzkifS5mYS1zdWl0Y2FzZTpiZWZvcmV7Y29udGVudDoiXGYwZjIifS5mYS1zdW46YmVmb3JlLC5mYS1zdW4tbzpiZWZvcmV7Y29udGVudDoiXGYxODUifS5mYS1zdXBlcnBvd2VyczpiZWZvcmV7Y29udGVudDoiXGYyZGQifS5mYS1zdXBlcnNjcmlwdDpiZWZvcmV7Y29udGVudDoiXGYxMmIifS5mYS1zdXBwbGU6YmVmb3Jle2NvbnRlbnQ6IlxmM2Y5In0uZmEtc3luYzpiZWZvcmV7Y29udGVudDoiXGYwMjEifS5mYS1zeW5jLWFsdDpiZWZvcmV7Y29udGVudDoiXGYyZjEifS5mYS10YWJsZTpiZWZvcmV7Y29udGVudDoiXGYwY2UifS5mYS10YWJsZS10ZW5uaXM6YmVmb3Jle2NvbnRlbnQ6IlxmNDVkIn0uZmEtdGFibGV0OmJlZm9yZXtjb250ZW50OiJcZjEwYSJ9LmZhLXRhYmxldC1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmM2ZhIn0uZmEtdGFjaG9tZXRlci1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmM2ZkIn0uZmEtdGFnOmJlZm9yZXtjb250ZW50OiJcZjAyYiJ9LmZhLXRhZ3M6YmVmb3Jle2NvbnRlbnQ6IlxmMDJjIn0uZmEtdGFza3M6YmVmb3Jle2NvbnRlbnQ6IlxmMGFlIn0uZmEtdGF4aTpiZWZvcmV7Y29udGVudDoiXGYxYmEifS5mYS10ZWxlZ3JhbTpiZWZvcmV7Y29udGVudDoiXGYyYzYifS5mYS10ZWxlZ3JhbS1wbGFuZTpiZWZvcmV7Y29udGVudDoiXGYzZmUifS5mYS10ZW5jZW50LXdlaWJvOmJlZm9yZXtjb250ZW50OiJcZjFkNSJ9LmZhLXRlcm1pbmFsOmJlZm9yZXtjb250ZW50OiJcZjEyMCJ9LmZhLXRleHQtaGVpZ2h0OmJlZm9yZXtjb250ZW50OiJcZjAzNCJ9LmZhLXRleHQtd2lkdGg6YmVmb3Jle2NvbnRlbnQ6IlxmMDM1In0uZmEtdGg6YmVmb3Jle2NvbnRlbnQ6IlxmMDBhIn0uZmEtdGgtbGFyZ2U6YmVmb3Jle2NvbnRlbnQ6IlxmMDA5In0uZmEtdGgtbGlzdDpiZWZvcmV7Y29udGVudDoiXGYwMGIifS5mYS10aGVtZWlzbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMmIyIn0uZmEtdGhlcm1vbWV0ZXItZW1wdHk6YmVmb3Jle2NvbnRlbnQ6IlxmMmNiIn0uZmEtdGhlcm1vbWV0ZXItZnVsbDpiZWZvcmV7Y29udGVudDoiXGYyYzcifS5mYS10aGVybW9tZXRlci1oYWxmOmJlZm9yZXtjb250ZW50OiJcZjJjOSJ9LmZhLXRoZXJtb21ldGVyLXF1YXJ0ZXI6YmVmb3Jle2NvbnRlbnQ6IlxmMmNhIn0uZmEtdGhlcm1vbWV0ZXItdGhyZWUtcXVhcnRlcnM6YmVmb3Jle2NvbnRlbnQ6IlxmMmM4In0uZmEtdGh1bWJzLWRvd246YmVmb3Jle2NvbnRlbnQ6IlxmMTY1In0uZmEtdGh1bWJzLXVwOmJlZm9yZXtjb250ZW50OiJcZjE2NCJ9LmZhLXRodW1idGFjazpiZWZvcmV7Y29udGVudDoiXGYwOGQifS5mYS10aWNrZXQtYWx0OmJlZm9yZXtjb250ZW50OiJcZjNmZiJ9LmZhLXRpbWVzOmJlZm9yZXtjb250ZW50OiJcZjAwZCJ9LmZhLXRpbWVzLWNpcmNsZTpiZWZvcmV7Y29udGVudDoiXGYwNTcifS5mYS10aW50OmJlZm9yZXtjb250ZW50OiJcZjA0MyJ9LmZhLXRvZ2dsZS1vZmY6YmVmb3Jle2NvbnRlbnQ6IlxmMjA0In0uZmEtdG9nZ2xlLW9uOmJlZm9yZXtjb250ZW50OiJcZjIwNSJ9LmZhLXRyYWRlbWFyazpiZWZvcmV7Y29udGVudDoiXGYyNWMifS5mYS10cmFpbjpiZWZvcmV7Y29udGVudDoiXGYyMzgifS5mYS10cmFuc2dlbmRlcjpiZWZvcmV7Y29udGVudDoiXGYyMjQifS5mYS10cmFuc2dlbmRlci1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMjI1In0uZmEtdHJhc2g6YmVmb3Jle2NvbnRlbnQ6IlxmMWY4In0uZmEtdHJhc2gtYWx0OmJlZm9yZXtjb250ZW50OiJcZjJlZCJ9LmZhLXRyZWU6YmVmb3Jle2NvbnRlbnQ6IlxmMWJiIn0uZmEtdHJlbGxvOmJlZm9yZXtjb250ZW50OiJcZjE4MSJ9LmZhLXRyaXBhZHZpc29yOmJlZm9yZXtjb250ZW50OiJcZjI2MiJ9LmZhLXRyb3BoeTpiZWZvcmV7Y29udGVudDoiXGYwOTEifS5mYS10cnVjazpiZWZvcmV7Y29udGVudDoiXGYwZDEifS5mYS10dHk6YmVmb3Jle2NvbnRlbnQ6IlxmMWU0In0uZmEtdHVtYmxyOmJlZm9yZXtjb250ZW50OiJcZjE3MyJ9LmZhLXR1bWJsci1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMTc0In0uZmEtdHY6YmVmb3Jle2NvbnRlbnQ6IlxmMjZjIn0uZmEtdHdpdGNoOmJlZm9yZXtjb250ZW50OiJcZjFlOCJ9LmZhLXR3aXR0ZXI6YmVmb3Jle2NvbnRlbnQ6IlxmMDk5In0uZmEtdHdpdHRlci1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMDgxIn0uZmEtdHlwbzM6YmVmb3Jle2NvbnRlbnQ6IlxmNDJiIn0uZmEtdWJlcjpiZWZvcmV7Y29udGVudDoiXGY0MDIifS5mYS11aWtpdDpiZWZvcmV7Y29udGVudDoiXGY0MDMifS5mYS11bWJyZWxsYTpiZWZvcmV7Y29udGVudDoiXGYwZTkifS5mYS11bmRlcmxpbmU6YmVmb3Jle2NvbnRlbnQ6IlxmMGNkIn0uZmEtdW5kbzpiZWZvcmV7Y29udGVudDoiXGYwZTIifS5mYS11bmRvLWFsdDpiZWZvcmV7Y29udGVudDoiXGYyZWEifS5mYS11bmlyZWdpc3RyeTpiZWZvcmV7Y29udGVudDoiXGY0MDQifS5mYS11bml2ZXJzYWwtYWNjZXNzOmJlZm9yZXtjb250ZW50OiJcZjI5YSJ9LmZhLXVuaXZlcnNpdHk6YmVmb3Jle2NvbnRlbnQ6IlxmMTljIn0uZmEtdW5saW5rOmJlZm9yZXtjb250ZW50OiJcZjEyNyJ9LmZhLXVubG9jazpiZWZvcmV7Y29udGVudDoiXGYwOWMifS5mYS11bmxvY2stYWx0OmJlZm9yZXtjb250ZW50OiJcZjEzZSJ9LmZhLXVudGFwcGQ6YmVmb3Jle2NvbnRlbnQ6IlxmNDA1In0uZmEtdXBsb2FkOmJlZm9yZXtjb250ZW50OiJcZjA5MyJ9LmZhLXVzYjpiZWZvcmV7Y29udGVudDoiXGYyODcifS5mYS11c2VyOmJlZm9yZXtjb250ZW50OiJcZjAwNyJ9LmZhLXVzZXItY2lyY2xlOmJlZm9yZXtjb250ZW50OiJcZjJiZCJ9LmZhLXVzZXItbWQ6YmVmb3Jle2NvbnRlbnQ6IlxmMGYwIn0uZmEtdXNlci1wbHVzOmJlZm9yZXtjb250ZW50OiJcZjIzNCJ9LmZhLXVzZXItc2VjcmV0OmJlZm9yZXtjb250ZW50OiJcZjIxYiJ9LmZhLXVzZXItdGltZXM6YmVmb3Jle2NvbnRlbnQ6IlxmMjM1In0uZmEtdXNlcnM6YmVmb3Jle2NvbnRlbnQ6IlxmMGMwIn0uZmEtdXNzdW5uYWg6YmVmb3Jle2NvbnRlbnQ6IlxmNDA3In0uZmEtdXRlbnNpbC1zcG9vbjpiZWZvcmV7Y29udGVudDoiXGYyZTUifS5mYS11dGVuc2lsczpiZWZvcmV7Y29udGVudDoiXGYyZTcifS5mYS12YWFkaW46YmVmb3Jle2NvbnRlbnQ6IlxmNDA4In0uZmEtdmVudXM6YmVmb3Jle2NvbnRlbnQ6IlxmMjIxIn0uZmEtdmVudXMtZG91YmxlOmJlZm9yZXtjb250ZW50OiJcZjIyNiJ9LmZhLXZlbnVzLW1hcnM6YmVmb3Jle2NvbnRlbnQ6IlxmMjI4In0uZmEtdmlhY29pbjpiZWZvcmV7Y29udGVudDoiXGYyMzcifS5mYS12aWFkZW86YmVmb3Jle2NvbnRlbnQ6IlxmMmE5In0uZmEtdmlhZGVvLXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYyYWEifS5mYS12aWJlcjpiZWZvcmV7Y29udGVudDoiXGY0MDkifS5mYS12aWRlbzpiZWZvcmV7Y29udGVudDoiXGYwM2QifS5mYS12aW1lbzpiZWZvcmV7Y29udGVudDoiXGY0MGEifS5mYS12aW1lby1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMTk0In0uZmEtdmltZW8tdjpiZWZvcmV7Y29udGVudDoiXGYyN2QifS5mYS12aW5lOmJlZm9yZXtjb250ZW50OiJcZjFjYSJ9LmZhLXZrOmJlZm9yZXtjb250ZW50OiJcZjE4OSJ9LmZhLXZudjpiZWZvcmV7Y29udGVudDoiXGY0MGIifS5mYS12b2xsZXliYWxsLWJhbGw6YmVmb3Jle2NvbnRlbnQ6IlxmNDVmIn0uZmEtdm9sdW1lLWRvd246YmVmb3Jle2NvbnRlbnQ6IlxmMDI3In0uZmEtdm9sdW1lLW9mZjpiZWZvcmV7Y29udGVudDoiXGYwMjYifS5mYS12b2x1bWUtdXA6YmVmb3Jle2NvbnRlbnQ6IlxmMDI4In0uZmEtdnVlanM6YmVmb3Jle2NvbnRlbnQ6IlxmNDFmIn0uZmEtd2VpYm86YmVmb3Jle2NvbnRlbnQ6IlxmMThhIn0uZmEtd2VpeGluOmJlZm9yZXtjb250ZW50OiJcZjFkNyJ9LmZhLXdoYXRzYXBwOmJlZm9yZXtjb250ZW50OiJcZjIzMiJ9LmZhLXdoYXRzYXBwLXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGY0MGMifS5mYS13aGVlbGNoYWlyOmJlZm9yZXtjb250ZW50OiJcZjE5MyJ9LmZhLXdobWNzOmJlZm9yZXtjb250ZW50OiJcZjQwZCJ9LmZhLXdpZmk6YmVmb3Jle2NvbnRlbnQ6IlxmMWViIn0uZmEtd2lraXBlZGlhLXc6YmVmb3Jle2NvbnRlbnQ6IlxmMjY2In0uZmEtd2luZG93LWNsb3NlOmJlZm9yZXtjb250ZW50OiJcZjQxMCJ9LmZhLXdpbmRvdy1tYXhpbWl6ZTpiZWZvcmV7Y29udGVudDoiXGYyZDAifS5mYS13aW5kb3ctbWluaW1pemU6YmVmb3Jle2NvbnRlbnQ6IlxmMmQxIn0uZmEtd2luZG93LXJlc3RvcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMmQyIn0uZmEtd2luZG93czpiZWZvcmV7Y29udGVudDoiXGYxN2EifS5mYS13b24tc2lnbjpiZWZvcmV7Y29udGVudDoiXGYxNTkifS5mYS13b3JkcHJlc3M6YmVmb3Jle2NvbnRlbnQ6IlxmMTlhIn0uZmEtd29yZHByZXNzLXNpbXBsZTpiZWZvcmV7Y29udGVudDoiXGY0MTEifS5mYS13cGJlZ2lubmVyOmJlZm9yZXtjb250ZW50OiJcZjI5NyJ9LmZhLXdwZXhwbG9yZXI6YmVmb3Jle2NvbnRlbnQ6IlxmMmRlIn0uZmEtd3Bmb3JtczpiZWZvcmV7Y29udGVudDoiXGYyOTgifS5mYS13cmVuY2g6YmVmb3Jle2NvbnRlbnQ6IlxmMGFkIn0uZmEteGJveDpiZWZvcmV7Y29udGVudDoiXGY0MTIifS5mYS14aW5nOmJlZm9yZXtjb250ZW50OiJcZjE2OCJ9LmZhLXhpbmctc3F1YXJlOmJlZm9yZXtjb250ZW50OiJcZjE2OSJ9LmZhLXktY29tYmluYXRvcjpiZWZvcmV7Y29udGVudDoiXGYyM2IifS5mYS15YWhvbzpiZWZvcmV7Y29udGVudDoiXGYxOWUifS5mYS15YW5kZXg6YmVmb3Jle2NvbnRlbnQ6IlxmNDEzIn0uZmEteWFuZGV4LWludGVybmF0aW9uYWw6YmVmb3Jle2NvbnRlbnQ6IlxmNDE0In0uZmEteWVscDpiZWZvcmV7Y29udGVudDoiXGYxZTkifS5mYS15ZW4tc2lnbjpiZWZvcmV7Y29udGVudDoiXGYxNTcifS5mYS15b2FzdDpiZWZvcmV7Y29udGVudDoiXGYyYjEifS5mYS15b3V0dWJlOmJlZm9yZXtjb250ZW50OiJcZjE2NyJ9LmZhLXlvdXR1YmUtc3F1YXJlOmJlZm9yZXtjb250ZW50OiJcZjQzMSJ9Ci8qKiAvY3NzL3YyL2FuaW1hdGUuY3NzICoqLwouYW5pbS1iZWF0IHsgLXdlYmtpdC1hbmltYXRpb24tbmFtZTphbmltLWJlYXQ7IGFuaW1hdGlvbi1uYW1lOmFuaW0tYmVhdDsgLXdlYmtpdC1hbmltYXRpb24tZGVsYXk6dmFyKC0tYW5pbS1kZWxheSwwcyk7IGFuaW1hdGlvbi1kZWxheTp2YXIoLS1hbmltLWRlbGF5LDBzKTsgLXdlYmtpdC1hbmltYXRpb24tZGlyZWN0aW9uOnZhcigtLWFuaW0tZGlyZWN0aW9uLG5vcm1hbCk7IGFuaW1hdGlvbi1kaXJlY3Rpb246dmFyKC0tYW5pbS1kaXJlY3Rpb24sbm9ybWFsKTsgLXdlYmtpdC1hbmltYXRpb24tZHVyYXRpb246dmFyKC0tYW5pbS1kdXJhdGlvbiwxcyk7IGFuaW1hdGlvbi1kdXJhdGlvbjp2YXIoLS1hbmltLWR1cmF0aW9uLDFzKTsgLXdlYmtpdC1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50OnZhcigtLWFuaW0taXRlcmF0aW9uLWNvdW50LGluZmluaXRlKTsgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDp2YXIoLS1hbmltLWl0ZXJhdGlvbi1jb3VudCxpbmZpbml0ZSk7IC13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjp2YXIoLS1hbmltLXRpbWluZyxlYXNlLWluLW91dCk7IGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246dmFyKC0tYW5pbS10aW1pbmcsZWFzZS1pbi1vdXQpIH0gLmFuaW0tYm91bmNlIHsgLXdlYmtpdC1hbmltYXRpb24tbmFtZTphbmltLWJvdW5jZTsgYW5pbWF0aW9uLW5hbWU6YW5pbS1ib3VuY2U7IC13ZWJraXQtYW5pbWF0aW9uLWRlbGF5OnZhcigtLWFuaW0tZGVsYXksMHMpOyBhbmltYXRpb24tZGVsYXk6dmFyKC0tYW5pbS1kZWxheSwwcyk7IC13ZWJraXQtYW5pbWF0aW9uLWRpcmVjdGlvbjp2YXIoLS1hbmltLWRpcmVjdGlvbixub3JtYWwpOyBhbmltYXRpb24tZGlyZWN0aW9uOnZhcigtLWFuaW0tZGlyZWN0aW9uLG5vcm1hbCk7IC13ZWJraXQtYW5pbWF0aW9uLWR1cmF0aW9uOnZhcigtLWFuaW0tZHVyYXRpb24sMXMpOyBhbmltYXRpb24tZHVyYXRpb246dmFyKC0tYW5pbS1kdXJhdGlvbiwxcyk7IC13ZWJraXQtYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDp2YXIoLS1hbmltLWl0ZXJhdGlvbi1jb3VudCxpbmZpbml0ZSk7IGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6dmFyKC0tYW5pbS1pdGVyYXRpb24tY291bnQsaW5maW5pdGUpOyAtd2Via2l0LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246dmFyKC0tYW5pbS10aW1pbmcsY3ViaWMtYmV6aWVyKC4yOCwuODQsLjQyLDEpKTsgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjp2YXIoLS1hbmltLXRpbWluZyxjdWJpYy1iZXppZXIoLjI4LC44NCwuNDIsMSkpIH0gLmFuaW0tZmFkZSB7IC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6YW5pbS1mYWRlOyBhbmltYXRpb24tbmFtZTphbmltLWZhZGU7IC13ZWJraXQtYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDp2YXIoLS1hbmltLWl0ZXJhdGlvbi1jb3VudCxpbmZpbml0ZSk7IGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6dmFyKC0tYW5pbS1pdGVyYXRpb24tY291bnQsaW5maW5pdGUpOyAtd2Via2l0LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246dmFyKC0tYW5pbS10aW1pbmcsY3ViaWMtYmV6aWVyKC40LDAsLjYsMSkpOyBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOnZhcigtLWFuaW0tdGltaW5nLGN1YmljLWJlemllciguNCwwLC42LDEpKSB9IC5hbmltLWJlYXQtZmFkZSwuYW5pbS1mYWRlIHsgLXdlYmtpdC1hbmltYXRpb24tZGVsYXk6dmFyKC0tYW5pbS1kZWxheSwwcyk7IGFuaW1hdGlvbi1kZWxheTp2YXIoLS1hbmltLWRlbGF5LDBzKTsgLXdlYmtpdC1hbmltYXRpb24tZGlyZWN0aW9uOnZhcigtLWFuaW0tZGlyZWN0aW9uLG5vcm1hbCk7IGFuaW1hdGlvbi1kaXJlY3Rpb246dmFyKC0tYW5pbS1kaXJlY3Rpb24sbm9ybWFsKTsgLXdlYmtpdC1hbmltYXRpb24tZHVyYXRpb246dmFyKC0tYW5pbS1kdXJhdGlvbiwxcyk7IGFuaW1hdGlvbi1kdXJhdGlvbjp2YXIoLS1hbmltLWR1cmF0aW9uLDFzKSB9IC5hbmltLWJlYXQtZmFkZSB7IC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6YW5pbS1iZWF0LWZhZGU7IGFuaW1hdGlvbi1uYW1lOmFuaW0tYmVhdC1mYWRlOyAtd2Via2l0LWFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6dmFyKC0tYW5pbS1pdGVyYXRpb24tY291bnQsaW5maW5pdGUpOyBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OnZhcigtLWFuaW0taXRlcmF0aW9uLWNvdW50LGluZmluaXRlKTsgLXdlYmtpdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOnZhcigtLWFuaW0tdGltaW5nLGN1YmljLWJlemllciguNCwwLC42LDEpKTsgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjp2YXIoLS1hbmltLXRpbWluZyxjdWJpYy1iZXppZXIoLjQsMCwuNiwxKSkgfSAuYW5pbS1mbGlwIHsgLXdlYmtpdC1hbmltYXRpb24tbmFtZTphbmltLWZsaXA7IGFuaW1hdGlvbi1uYW1lOmFuaW0tZmxpcDsgLXdlYmtpdC1hbmltYXRpb24tZGVsYXk6dmFyKC0tYW5pbS1kZWxheSwwcyk7IGFuaW1hdGlvbi1kZWxheTp2YXIoLS1hbmltLWRlbGF5LDBzKTsgLXdlYmtpdC1hbmltYXRpb24tZGlyZWN0aW9uOnZhcigtLWFuaW0tZGlyZWN0aW9uLG5vcm1hbCk7IGFuaW1hdGlvbi1kaXJlY3Rpb246dmFyKC0tYW5pbS1kaXJlY3Rpb24sbm9ybWFsKTsgLXdlYmtpdC1hbmltYXRpb24tZHVyYXRpb246dmFyKC0tYW5pbS1kdXJhdGlvbiwzcyk7IGFuaW1hdGlvbi1kdXJhdGlvbjp2YXIoLS1hbmltLWR1cmF0aW9uLDNzKTsgLXdlYmtpdC1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50OnZhcigtLWFuaW0taXRlcmF0aW9uLWNvdW50LGluZmluaXRlKTsgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDp2YXIoLS1hbmltLWl0ZXJhdGlvbi1jb3VudCxpbmZpbml0ZSk7IC13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjp2YXIoLS1hbmltLXRpbWluZyxlYXNlLWluLW91dCk7IGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246dmFyKC0tYW5pbS10aW1pbmcsZWFzZS1pbi1vdXQpIH0gLmFuaW0tc2hha2UgeyAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOmFuaW0tc2hha2U7IGFuaW1hdGlvbi1uYW1lOmFuaW0tc2hha2U7IC13ZWJraXQtYW5pbWF0aW9uLWR1cmF0aW9uOnZhcigtLWFuaW0tZHVyYXRpb24sMXMpOyBhbmltYXRpb24tZHVyYXRpb246dmFyKC0tYW5pbS1kdXJhdGlvbiwxcyk7IC13ZWJraXQtYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDp2YXIoLS1hbmltLWl0ZXJhdGlvbi1jb3VudCxpbmZpbml0ZSk7IGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6dmFyKC0tYW5pbS1pdGVyYXRpb24tY291bnQsaW5maW5pdGUpOyAtd2Via2l0LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246dmFyKC0tYW5pbS10aW1pbmcsbGluZWFyKTsgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjp2YXIoLS1hbmltLXRpbWluZyxsaW5lYXIpIH0gLmFuaW0tc2hha2UsLmFuaW0tc3BpbiB7IC13ZWJraXQtYW5pbWF0aW9uLWRlbGF5OnZhcigtLWFuaW0tZGVsYXksMHMpOyBhbmltYXRpb24tZGVsYXk6dmFyKC0tYW5pbS1kZWxheSwwcyk7IC13ZWJraXQtYW5pbWF0aW9uLWRpcmVjdGlvbjp2YXIoLS1hbmltLWRpcmVjdGlvbixub3JtYWwpOyBhbmltYXRpb24tZGlyZWN0aW9uOnZhcigtLWFuaW0tZGlyZWN0aW9uLG5vcm1hbCkgfSAuYW5pbS1zcGluIHsgLXdlYmtpdC1hbmltYXRpb24tbmFtZTphbmltLXNwaW47IGFuaW1hdGlvbi1uYW1lOmFuaW0tc3BpbjsgLXdlYmtpdC1hbmltYXRpb24tZHVyYXRpb246dmFyKC0tYW5pbS1kdXJhdGlvbiwycyk7IGFuaW1hdGlvbi1kdXJhdGlvbjp2YXIoLS1hbmltLWR1cmF0aW9uLDJzKTsgLXdlYmtpdC1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50OnZhcigtLWFuaW0taXRlcmF0aW9uLWNvdW50LGluZmluaXRlKTsgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDp2YXIoLS1hbmltLWl0ZXJhdGlvbi1jb3VudCxpbmZpbml0ZSk7IC13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjp2YXIoLS1hbmltLXRpbWluZyxsaW5lYXIpOyBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOnZhcigtLWFuaW0tdGltaW5nLGxpbmVhcikgfSAuYW5pbS1zcGluLXJldmVyc2UgeyAtLWFuaW0tZGlyZWN0aW9uOnJldmVyc2UgfSAuYW5pbS1wdWxzZSwuYW5pbS1zcGluLXB1bHNlIHsgLXdlYmtpdC1hbmltYXRpb24tbmFtZTphbmltLXNwaW47IGFuaW1hdGlvbi1uYW1lOmFuaW0tc3BpbjsgLXdlYmtpdC1hbmltYXRpb24tZGlyZWN0aW9uOnZhcigtLWFuaW0tZGlyZWN0aW9uLG5vcm1hbCk7IGFuaW1hdGlvbi1kaXJlY3Rpb246dmFyKC0tYW5pbS1kaXJlY3Rpb24sbm9ybWFsKTsgLXdlYmtpdC1hbmltYXRpb24tZHVyYXRpb246dmFyKC0tYW5pbS1kdXJhdGlvbiwxcyk7IGFuaW1hdGlvbi1kdXJhdGlvbjp2YXIoLS1hbmltLWR1cmF0aW9uLDFzKTsgLXdlYmtpdC1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50OnZhcigtLWFuaW0taXRlcmF0aW9uLWNvdW50LGluZmluaXRlKTsgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDp2YXIoLS1hbmltLWl0ZXJhdGlvbi1jb3VudCxpbmZpbml0ZSk7IC13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjp2YXIoLS1hbmltLXRpbWluZyxzdGVwcyg4KSk7IGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246dmFyKC0tYW5pbS10aW1pbmcsc3RlcHMoOCkpIH0gQC13ZWJraXQta2V5ZnJhbWVzIGFuaW0tYmVhdCB7IDAlLDkwJSB7IC13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKDEpOyB0cmFuc2Zvcm06c2NhbGUoMSkgfSA0NSUgeyAtd2Via2l0LXRyYW5zZm9ybTpzY2FsZSh2YXIoLS1hbmltLWJlYXQtc2NhbGUsMS4yNSkpOyB0cmFuc2Zvcm06c2NhbGUodmFyKC0tYW5pbS1iZWF0LXNjYWxlLDEuMjUpKSB9IH0gQGtleWZyYW1lcyBhbmltLWJlYXQgeyAwJSw5MCUgeyAtd2Via2l0LXRyYW5zZm9ybTpzY2FsZSgxKTsgdHJhbnNmb3JtOnNjYWxlKDEpIH0gNDUlIHsgLXdlYmtpdC10cmFuc2Zvcm06c2NhbGUodmFyKC0tYW5pbS1iZWF0LXNjYWxlLDEuMjUpKTsgdHJhbnNmb3JtOnNjYWxlKHZhcigtLWFuaW0tYmVhdC1zY2FsZSwxLjI1KSkgfSB9IEAtd2Via2l0LWtleWZyYW1lcyBhbmltLWJvdW5jZSB7IDAlIHsgLXdlYmtpdC10cmFuc2Zvcm06c2NhbGUoMSkgdHJhbnNsYXRlWSgwKTsgdHJhbnNmb3JtOnNjYWxlKDEpIHRyYW5zbGF0ZVkoMCkgfSAxMCUgeyAtd2Via2l0LXRyYW5zZm9ybTpzY2FsZSh2YXIoLS1hbmltLWJvdW5jZS1zdGFydC1zY2FsZS14LDEuMSksdmFyKC0tYW5pbS1ib3VuY2Utc3RhcnQtc2NhbGUteSwuOSkpIHRyYW5zbGF0ZVkoMCk7IHRyYW5zZm9ybTpzY2FsZSh2YXIoLS1hbmltLWJvdW5jZS1zdGFydC1zY2FsZS14LDEuMSksdmFyKC0tYW5pbS1ib3VuY2Utc3RhcnQtc2NhbGUteSwuOSkpIHRyYW5zbGF0ZVkoMCkgfSAzMCUgeyAtd2Via2l0LXRyYW5zZm9ybTpzY2FsZSh2YXIoLS1hbmltLWJvdW5jZS1qdW1wLXNjYWxlLXgsLjkpLHZhcigtLWFuaW0tYm91bmNlLWp1bXAtc2NhbGUteSwxLjEpKSB0cmFuc2xhdGVZKHZhcigtLWFuaW0tYm91bmNlLWhlaWdodCwtLjVlbSkpOyB0cmFuc2Zvcm06c2NhbGUodmFyKC0tYW5pbS1ib3VuY2UtanVtcC1zY2FsZS14LC45KSx2YXIoLS1hbmltLWJvdW5jZS1qdW1wLXNjYWxlLXksMS4xKSkgdHJhbnNsYXRlWSh2YXIoLS1hbmltLWJvdW5jZS1oZWlnaHQsLS41ZW0pKSB9IDUwJSB7IC13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKHZhcigtLWFuaW0tYm91bmNlLWxhbmQtc2NhbGUteCwxLjA1KSx2YXIoLS1hbmltLWJvdW5jZS1sYW5kLXNjYWxlLXksLjk1KSkgdHJhbnNsYXRlWSgwKTsgdHJhbnNmb3JtOnNjYWxlKHZhcigtLWFuaW0tYm91bmNlLWxhbmQtc2NhbGUteCwxLjA1KSx2YXIoLS1hbmltLWJvdW5jZS1sYW5kLXNjYWxlLXksLjk1KSkgdHJhbnNsYXRlWSgwKSB9IDU3JSB7IC13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKDEpIHRyYW5zbGF0ZVkodmFyKC0tYW5pbS1ib3VuY2UtcmVib3VuZCwtLjEyNWVtKSk7IHRyYW5zZm9ybTpzY2FsZSgxKSB0cmFuc2xhdGVZKHZhcigtLWFuaW0tYm91bmNlLXJlYm91bmQsLS4xMjVlbSkpIH0gNjQlIHsgLXdlYmtpdC10cmFuc2Zvcm06c2NhbGUoMSkgdHJhbnNsYXRlWSgwKTsgdHJhbnNmb3JtOnNjYWxlKDEpIHRyYW5zbGF0ZVkoMCkgfSB0byB7IC13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKDEpIHRyYW5zbGF0ZVkoMCk7IHRyYW5zZm9ybTpzY2FsZSgxKSB0cmFuc2xhdGVZKDApIH0gfSBAa2V5ZnJhbWVzIGFuaW0tYm91bmNlIHsgMCUgeyAtd2Via2l0LXRyYW5zZm9ybTpzY2FsZSgxKSB0cmFuc2xhdGVZKDApOyB0cmFuc2Zvcm06c2NhbGUoMSkgdHJhbnNsYXRlWSgwKSB9IDEwJSB7IC13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKHZhcigtLWFuaW0tYm91bmNlLXN0YXJ0LXNjYWxlLXgsMS4xKSx2YXIoLS1hbmltLWJvdW5jZS1zdGFydC1zY2FsZS15LC45KSkgdHJhbnNsYXRlWSgwKTsgdHJhbnNmb3JtOnNjYWxlKHZhcigtLWFuaW0tYm91bmNlLXN0YXJ0LXNjYWxlLXgsMS4xKSx2YXIoLS1hbmltLWJvdW5jZS1zdGFydC1zY2FsZS15LC45KSkgdHJhbnNsYXRlWSgwKSB9IDMwJSB7IC13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKHZhcigtLWFuaW0tYm91bmNlLWp1bXAtc2NhbGUteCwuOSksdmFyKC0tYW5pbS1ib3VuY2UtanVtcC1zY2FsZS15LDEuMSkpIHRyYW5zbGF0ZVkodmFyKC0tYW5pbS1ib3VuY2UtaGVpZ2h0LC0uNWVtKSk7IHRyYW5zZm9ybTpzY2FsZSh2YXIoLS1hbmltLWJvdW5jZS1qdW1wLXNjYWxlLXgsLjkpLHZhcigtLWFuaW0tYm91bmNlLWp1bXAtc2NhbGUteSwxLjEpKSB0cmFuc2xhdGVZKHZhcigtLWFuaW0tYm91bmNlLWhlaWdodCwtLjVlbSkpIH0gNTAlIHsgLXdlYmtpdC10cmFuc2Zvcm06c2NhbGUodmFyKC0tYW5pbS1ib3VuY2UtbGFuZC1zY2FsZS14LDEuMDUpLHZhcigtLWFuaW0tYm91bmNlLWxhbmQtc2NhbGUteSwuOTUpKSB0cmFuc2xhdGVZKDApOyB0cmFuc2Zvcm06c2NhbGUodmFyKC0tYW5pbS1ib3VuY2UtbGFuZC1zY2FsZS14LDEuMDUpLHZhcigtLWFuaW0tYm91bmNlLWxhbmQtc2NhbGUteSwuOTUpKSB0cmFuc2xhdGVZKDApIH0gNTclIHsgLXdlYmtpdC10cmFuc2Zvcm06c2NhbGUoMSkgdHJhbnNsYXRlWSh2YXIoLS1hbmltLWJvdW5jZS1yZWJvdW5kLC0uMTI1ZW0pKTsgdHJhbnNmb3JtOnNjYWxlKDEpIHRyYW5zbGF0ZVkodmFyKC0tYW5pbS1ib3VuY2UtcmVib3VuZCwtLjEyNWVtKSkgfSA2NCUgeyAtd2Via2l0LXRyYW5zZm9ybTpzY2FsZSgxKSB0cmFuc2xhdGVZKDApOyB0cmFuc2Zvcm06c2NhbGUoMSkgdHJhbnNsYXRlWSgwKSB9IHRvIHsgLXdlYmtpdC10cmFuc2Zvcm06c2NhbGUoMSkgdHJhbnNsYXRlWSgwKTsgdHJhbnNmb3JtOnNjYWxlKDEpIHRyYW5zbGF0ZVkoMCkgfSB9IEAtd2Via2l0LWtleWZyYW1lcyBhbmltLWZhZGUgeyA1MCUgeyBvcGFjaXR5OnZhcigtLWFuaW0tZmFkZS1vcGFjaXR5LC40KSB9IH0gQGtleWZyYW1lcyBhbmltLWZhZGUgeyA1MCUgeyBvcGFjaXR5OnZhcigtLWFuaW0tZmFkZS1vcGFjaXR5LC40KSB9IH0gQC13ZWJraXQta2V5ZnJhbWVzIGFuaW0tYmVhdC1mYWRlIHsgMCUsdG8geyBvcGFjaXR5OnZhcigtLWFuaW0tYmVhdC1mYWRlLW9wYWNpdHksLjQpOyAtd2Via2l0LXRyYW5zZm9ybTpzY2FsZSgxKTsgdHJhbnNmb3JtOnNjYWxlKDEpIH0gNTAlIHsgb3BhY2l0eToxOyAtd2Via2l0LXRyYW5zZm9ybTpzY2FsZSh2YXIoLS1hbmltLWJlYXQtZmFkZS1zY2FsZSwxLjEyNSkpOyB0cmFuc2Zvcm06c2NhbGUodmFyKC0tYW5pbS1iZWF0LWZhZGUtc2NhbGUsMS4xMjUpKSB9IH0gQGtleWZyYW1lcyBhbmltLWJlYXQtZmFkZSB7IDAlLHRvIHsgb3BhY2l0eTp2YXIoLS1hbmltLWJlYXQtZmFkZS1vcGFjaXR5LC40KTsgLXdlYmtpdC10cmFuc2Zvcm06c2NhbGUoMSk7IHRyYW5zZm9ybTpzY2FsZSgxKSB9IDUwJSB7IG9wYWNpdHk6MTsgLXdlYmtpdC10cmFuc2Zvcm06c2NhbGUodmFyKC0tYW5pbS1iZWF0LWZhZGUtc2NhbGUsMS4xMjUpKTsgdHJhbnNmb3JtOnNjYWxlKHZhcigtLWFuaW0tYmVhdC1mYWRlLXNjYWxlLDEuMTI1KSkgfSB9IEAtd2Via2l0LWtleWZyYW1lcyBhbmltLWZsaXAgeyA1MCUgeyAtd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUzZCh2YXIoLS1hbmltLWZsaXAteCwwKSx2YXIoLS1hbmltLWZsaXAteSwxKSx2YXIoLS1hbmltLWZsaXAteiwwKSx2YXIoLS1hbmltLWZsaXAtYW5nbGUsLTE4MGRlZykpOyB0cmFuc2Zvcm06cm90YXRlM2QodmFyKC0tYW5pbS1mbGlwLXgsMCksdmFyKC0tYW5pbS1mbGlwLXksMSksdmFyKC0tYW5pbS1mbGlwLXosMCksdmFyKC0tYW5pbS1mbGlwLWFuZ2xlLC0xODBkZWcpKSB9IH0gQGtleWZyYW1lcyBhbmltLWZsaXAgeyA1MCUgeyAtd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUzZCh2YXIoLS1hbmltLWZsaXAteCwwKSx2YXIoLS1hbmltLWZsaXAteSwxKSx2YXIoLS1hbmltLWZsaXAteiwwKSx2YXIoLS1hbmltLWZsaXAtYW5nbGUsLTE4MGRlZykpOyB0cmFuc2Zvcm06cm90YXRlM2QodmFyKC0tYW5pbS1mbGlwLXgsMCksdmFyKC0tYW5pbS1mbGlwLXksMSksdmFyKC0tYW5pbS1mbGlwLXosMCksdmFyKC0tYW5pbS1mbGlwLWFuZ2xlLC0xODBkZWcpKSB9IH0gQC13ZWJraXQta2V5ZnJhbWVzIGFuaW0tc2hha2UgeyAwJSB7IC13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgtMTVkZWcpOyB0cmFuc2Zvcm06cm90YXRlKC0xNWRlZykgfSA0JSB7IC13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgxNWRlZyk7IHRyYW5zZm9ybTpyb3RhdGUoMTVkZWcpIH0gOCUsMjQlIHsgLXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKC0xOGRlZyk7IHRyYW5zZm9ybTpyb3RhdGUoLTE4ZGVnKSB9IDEyJSwyOCUgeyAtd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoMThkZWcpOyB0cmFuc2Zvcm06cm90YXRlKDE4ZGVnKSB9IDE2JSB7IC13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgtMjJkZWcpOyB0cmFuc2Zvcm06cm90YXRlKC0yMmRlZykgfSAyMCUgeyAtd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoMjJkZWcpOyB0cmFuc2Zvcm06cm90YXRlKDIyZGVnKSB9IDMyJSB7IC13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgtMTJkZWcpOyB0cmFuc2Zvcm06cm90YXRlKC0xMmRlZykgfSAzNiUgeyAtd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoMTJkZWcpOyB0cmFuc2Zvcm06cm90YXRlKDEyZGVnKSB9IDQwJSx0byB7IC13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgwZGVnKTsgdHJhbnNmb3JtOnJvdGF0ZSgwZGVnKSB9IH0gQGtleWZyYW1lcyBhbmltLXNoYWtlIHsgMCUgeyAtd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoLTE1ZGVnKTsgdHJhbnNmb3JtOnJvdGF0ZSgtMTVkZWcpIH0gNCUgeyAtd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoMTVkZWcpOyB0cmFuc2Zvcm06cm90YXRlKDE1ZGVnKSB9IDglLDI0JSB7IC13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgtMThkZWcpOyB0cmFuc2Zvcm06cm90YXRlKC0xOGRlZykgfSAxMiUsMjglIHsgLXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDE4ZGVnKTsgdHJhbnNmb3JtOnJvdGF0ZSgxOGRlZykgfSAxNiUgeyAtd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoLTIyZGVnKTsgdHJhbnNmb3JtOnJvdGF0ZSgtMjJkZWcpIH0gMjAlIHsgLXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDIyZGVnKTsgdHJhbnNmb3JtOnJvdGF0ZSgyMmRlZykgfSAzMiUgeyAtd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoLTEyZGVnKTsgdHJhbnNmb3JtOnJvdGF0ZSgtMTJkZWcpIH0gMzYlIHsgLXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDEyZGVnKTsgdHJhbnNmb3JtOnJvdGF0ZSgxMmRlZykgfSA0MCUsdG8geyAtd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoMGRlZyk7IHRyYW5zZm9ybTpyb3RhdGUoMGRlZykgfSB9IEAtd2Via2l0LWtleWZyYW1lcyBhbmltLXNwaW4geyAwJSB7IC13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgwZGVnKTsgdHJhbnNmb3JtOnJvdGF0ZSgwZGVnKSB9IHRvIHsgLXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDF0dXJuKTsgdHJhbnNmb3JtOnJvdGF0ZSgxdHVybikgfSB9IEBrZXlmcmFtZXMgYW5pbS1zcGluIHsgMCUgeyAtd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoMGRlZyk7IHRyYW5zZm9ybTpyb3RhdGUoMGRlZykgfSB0byB7IC13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgxdHVybik7IHRyYW5zZm9ybTpyb3RhdGUoMXR1cm4pIH0gfSBAc3VwcG9ydHMgKC13ZWJraXQtdG91Y2gtY2FsbG91dDpub25lKSB7IGJvZHkgI3Byb21vVG9wQnRuIC5hbmltLWZsaXB7IC13ZWJraXQtYW5pbWF0aW9uLWRlbGF5OnVuc2V0OyBhbmltYXRpb24tZGVsYXk6dW5zZXQ7IC13ZWJraXQtYW5pbWF0aW9uLWRpcmVjdGlvbjp1bnNldDsgYW5pbWF0aW9uLWRpcmVjdGlvbjp1bnNldDsgLXdlYmtpdC1hbmltYXRpb24tZHVyYXRpb246dW5zZXQ7IGFuaW1hdGlvbi1kdXJhdGlvbjp1bnNldDsgLXdlYmtpdC1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50OnVuc2V0OyBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OnVuc2V0OyAtd2Via2l0LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246dW5zZXQ7IGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246dW5zZXQ7IH0gfSAucHVsc2F0aW5nLWNpcmNsZSB7IHBvc2l0aW9uOnJlbGF0aXZlOyB3aWR0aDozMHB4OyBoZWlnaHQ6MzBweDsgZmxleDowIDAgYXV0bzsgJjpiZWZvcmUgeyBjb250ZW50OicnOyBwb3NpdGlvbjpyZWxhdGl2ZTsgZGlzcGxheTpibG9jazsgd2lkdGg6MzAwJTsgaGVpZ2h0OjMwMCU7IGJveC1zaXppbmc6Ym9yZGVyLWJveDsgbWFyZ2luLWxlZnQ6LTEwMCU7IG1hcmdpbi10b3A6LTEwMCU7IGJvcmRlci1yYWRpdXM6NDVweDsgYmFja2dyb3VuZC1jb2xvcjojMDFhNGU5OyBhbmltYXRpb246cHVsc2UtcmluZyAxLjI1cyBjdWJpYy1iZXppZXIoMC4yMTUsIDAuNjEsIDAuMzU1LCAxKSBpbmZpbml0ZTsgfSAmOmFmdGVyIHsgY29udGVudDonJzsgcG9zaXRpb246YWJzb2x1dGU7IGxlZnQ6MDsgdG9wOjA7IGRpc3BsYXk6YmxvY2s7IHdpZHRoOjEwMCU7IGhlaWdodDoxMDAlOyBiYWNrZ3JvdW5kLWNvbG9yOndoaXRlOyBib3JkZXItcmFkaXVzOjE1cHg7IGJveC1zaGFkb3c6MCAwIDhweCByZ2JhKDAsMCwwLC4zKTsgYW5pbWF0aW9uOnB1bHNlLWRvdCAxLjI1cyBjdWJpYy1iZXppZXIoMC40NTUsIDAuMDMsIDAuNTE1LCAwLjk1NSkgLS40cyBpbmZpbml0ZTsgfSB9IEBrZXlmcmFtZXMgcHVsc2UtcmluZyB7IDAlIHsgdHJhbnNmb3JtOnNjYWxlKC4zMyk7IH0gODAlLCAxMDAlIHsgb3BhY2l0eTowOyB9IH0gQGtleWZyYW1lcyBwdWxzZS1kb3QgeyAwJSB7IHRyYW5zZm9ybTpzY2FsZSguOCk7IH0gNTAlIHsgdHJhbnNmb3JtOnNjYWxlKDEpOyB9IDEwMCUgeyB0cmFuc2Zvcm06c2NhbGUoLjgpOyB9IH0KLyoqIC9jc3MvZGl2X2xheWVycy5jc3MgKiovCmRpdi5NYWluQm94TGF5ZXJ7IHdpZHRoOm1pbigxMDAlLDk2MHB4KTsgbWFyZ2luOjAgYXV0bzsgfSBkaXYuTWFpbkJveExheWVyIEgxeyB3aWR0aDo5NDBweDsgfSBkaXYuTWFpbkJveExheWVyIC5yZXNwb25zaXZlLWVkaXRvciBoMSB7IHdpZHRoOmluaXRpYWw7IH0gZGl2Lk1haW5Cb3hMYXllciBkaXYuY3JlZHNpaURpdiBIMXsgd2lkdGg6YXV0bzsgfSAuY3JlZHNpaURpdnsgd2hpdGUtc3BhY2U6bm9ybWFsOyB9IGRpdi5NYWluQm94TGF5ZXIgZGl2LkxlZnRCb3hMYXllciB7IH0gZGl2Lk1haW5Cb3hMYXllciBkaXYuUmlnaHRCb3hMYXllciB7IH0gZGl2Lk1haW5Cb3hMYXllciBkaXYuT3V0ZXJCb3hMYXllciB7IHBhZGRpbmc6MTBweDsgZmxvYXQ6bGVmdDsgd2lkdGg6OTQwcHg7IH0gZGl2Lk1haW5Cb3hMYXllciBkaXYuSW5uZXJCb3hMYXllciB7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBwYWRkaW5nOjBweDsgbWFyZ2luOjBweDsgd2lkdGg6MTAwJTsgY2xlYXI6Ym90aDsgfSBkaXYuTWFpbkJveExheWVyIGRpdi5Jbm5lckJveExheWVyLnRvcEJvcmRlcmVkeyBib3JkZXItdG9wOjFweCBzb2xpZCAjY2NjOyB9IGRpdi5NYWluQm94TGF5ZXIgZGl2LklubmVyQm94TGF5ZXIuYm90dG9tQm9yZGVyZWR7IGJvcmRlci1ib3R0b206MXB4IHNvbGlkICNjY2M7IH0gZGl2Lk1haW5Cb3hMYXllciBkaXYuQm94Q2hpbGQgeyB9IGRpdi5NYWluQm94TGF5ZXIgZGl2LkJveENoaWxkLmVhc3R7IGZsb2F0OnJpZ2h0OyB9IGRpdi5NYWluQm94TGF5ZXIgZGl2LkJveENoaWxkLndlc3R7IGZsb2F0OmxlZnQ7IH0gYm9keS5pc0Z1bGxXaWR0aFBhZ2UuaXNQYWdlRnVsbFdpZHRoRW5hYmxlZCBkaXYuTWFpbkJveExheWVyICN0b3BCYW5uZXJJbWFnZXsgd2lkdGg6OTQwcHg7IGhlaWdodDphdXRvOyB0ZXh0LWFsaWduOmNlbnRlcjsgbWFyZ2luOjAgYXV0bzsgfSBib2R5LmlzRnVsbFdpZHRoUGFnZS5pc1BhZ2VGdWxsV2lkdGhFbmFibGVkIGRpdi5NYWluQm94TGF5ZXIgI3RvcEJhbm5lckltYWdlID4gaW1neyBtYXgtd2lkdGg6MTAwJSAhaW1wb3J0YW50OyB9IGRpdi5NYWluQm94TGF5ZXIgZGl2Lk91dGVyQm94TGF5ZXIjaGlzdG9yeURpdiBkaXYuSW5uZXJCb3hMYXllciAjYnJlYWRjcnVtYnMgeyBtYXJnaW46MDsgfSBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6MTMwMXB4KSB7IGJvZHkuaXNGdWxsV2lkdGhQYWdlLmlzUGFnZUZ1bGxXaWR0aEVuYWJsZWQgZGl2Lk1haW5Cb3hMYXllciB7IHdpZHRoOjEyMDBweDsgfSBib2R5LmlzRnVsbFdpZHRoUGFnZS5pc1BhZ2VGdWxsV2lkdGhFbmFibGVkIGRpdi5NYWluQm94TGF5ZXIgZGl2Lk91dGVyQm94TGF5ZXIgeyB3aWR0aDoxMTgwcHg7IH0gYm9keS5pc0Z1bGxXaWR0aFBhZ2UuaXNQYWdlRnVsbFdpZHRoRW5hYmxlZCBkaXYuTWFpbkJveExheWVyIGRpdi5PdXRlckJveExheWVyLnh0aW1lRnJhbWUgeyB3aWR0aDoxMjAwcHg7IH0gYm9keS5pc0Z1bGxXaWR0aFBhZ2UuaXNQYWdlRnVsbFdpZHRoRW5hYmxlZCBkaXYuTWFpbkJveExheWVyIEgxeyB3aWR0aDoxMTgwcHg7IH0gYm9keS5pc0Z1bGxXaWR0aFBhZ2UuaXNQYWdlRnVsbFdpZHRoRW5hYmxlZCBkaXYuTWFpbkJveExheWVyIC5yZXNwb25zaXZlLWVkaXRvciBoMSB7IHdpZHRoOmluaXRpYWw7IH0gYm9keS5pc0Z1bGxXaWR0aFBhZ2UuaXNQYWdlRnVsbFdpZHRoRW5hYmxlZCBkaXYuTWFpbkJveExheWVyIGRpdi5jcmVkc2lpRGl2IEgxeyB3aWR0aDphdXRvOyB9IGJvZHkuaXNGdWxsV2lkdGhQYWdlLmlzUGFnZUZ1bGxXaWR0aEVuYWJsZWQgZGl2Lk1haW5Cb3hMYXllciAjdG9wQmFubmVySW1hZ2UgeyB3aWR0aDoxMTgwcHg7IH0gYm9keS5pc0Z1bGxXaWR0aFBhZ2UuaXNQYWdlRnVsbFdpZHRoRW5hYmxlZCBkaXYuTWFpbkJveExheWVyICN0b3BCYW5uZXJJbWFnZS5URUFNIHsgd2lkdGg6OTYwcHg7IH0gfSBkaXYuTWFpbkJveExheWVyLnVjcENvbnRlbnRGdWxsV2lkdGggeyB3aWR0aDoxMDAlIWltcG9ydGFudDsgfSBkaXYuTWFpbkJveExheWVyIGRpdi5MZWZ0Qm94TGF5ZXIudWNwQ29udGVudEZ1bGxXaWR0aCB7IHdpZHRoOjEwMCUhaW1wb3J0YW50OyB9IGRpdi5NYWluQm94TGF5ZXIgZGl2Lk91dGVyQm94TGF5ZXIudWNwQ29udGVudEZ1bGxXaWR0aCB7IHdpZHRoOjEwMCUhaW1wb3J0YW50OyB9ICN2ZHBQcmludEltZyB7IGRpc3BsYXk6bm9uZTsgfSBAbWVkaWEgcHJpbnQgeyBib2R5I05FV0NBUkRFVEFJTFMuaGFzLXZkcC1wcmludC1pbWcgZGl2Lk1haW5Cb3hMYXllciAuSW5uZXJCb3hMYXllci4tcGIzMCB7IGRpc3BsYXk6ZmxleCAhaW1wb3J0YW50OyBmbGV4LWRpcmVjdGlvbjpyb3cgIWltcG9ydGFudDsgYWxpZ24taXRlbXM6ZmxleC1zdGFydCAhaW1wb3J0YW50OyBnYXA6MTZweCAhaW1wb3J0YW50OyB3aWR0aDoxMDAlICFpbXBvcnRhbnQ7IG1heC13aWR0aDoxMDAlICFpbXBvcnRhbnQ7IG92ZXJmbG93OnZpc2libGUgIWltcG9ydGFudDsgfSBib2R5I05FV0NBUkRFVEFJTFMuaGFzLXZkcC1wcmludC1pbWcgZGl2Lk1haW5Cb3hMYXllciBkaXYuQm94Q2hpbGQud2VzdCB7IGZsb2F0Om5vbmUgIWltcG9ydGFudDsgb3JkZXI6MSAhaW1wb3J0YW50OyBmbGV4OjEgMSBhdXRvICFpbXBvcnRhbnQ7IHdpZHRoOmF1dG8gIWltcG9ydGFudDsgbWF4LXdpZHRoOjYyJSAhaW1wb3J0YW50OyBtaW4td2lkdGg6MCAhaW1wb3J0YW50OyB9IGJvZHkjTkVXQ0FSREVUQUlMUy5oYXMtdmRwLXByaW50LWltZyBkaXYuTWFpbkJveExheWVyIGRpdi5Cb3hDaGlsZC5lYXN0LCBib2R5I05FV0NBUkRFVEFJTFMuaGFzLXZkcC1wcmludC1pbWcgZGl2Lk1haW5Cb3hMYXllciBkaXYuQm94Q2hpbGQtMSB7IGZsb2F0Om5vbmUgIWltcG9ydGFudDsgb3JkZXI6MiAhaW1wb3J0YW50OyBmbGV4OjAgMCAyNzBweCAhaW1wb3J0YW50OyB3aWR0aDoyNzBweCAhaW1wb3J0YW50OyB9IGJvZHkjTkVXQ0FSREVUQUlMUy5oYXMtdmRwLXByaW50LWltZyBkaXYuTWFpbkJveExheWVyLCBib2R5I05FV0NBUkRFVEFJTFMuaGFzLXZkcC1wcmludC1pbWcgZGl2Lk91dGVyQm94TGF5ZXIsIGJvZHkjTkVXQ0FSREVUQUlMUy5oYXMtdmRwLXByaW50LWltZyBkaXYuTGVmdEJveExheWVyIHsgd2lkdGg6MTAwJSAhaW1wb3J0YW50OyBtYXgtd2lkdGg6MTAwJSAhaW1wb3J0YW50OyB9IGJvZHkjTkVXQ0FSREVUQUlMUy5oYXMtdmRwLXByaW50LWltZyAuU2xpZGVyT3V0ZXJCb3ggeyBkaXNwbGF5Om5vbmUgIWltcG9ydGFudDsgfSBib2R5I05FV0NBUkRFVEFJTFMuaGFzLXZkcC1wcmludC1pbWcgI3ZkcFByaW50SW1nIHsgZGlzcGxheTpibG9jayAhaW1wb3J0YW50OyBtYXgtd2lkdGg6MTAwJSAhaW1wb3J0YW50OyBtYXgtaGVpZ2h0OjMuMmluICFpbXBvcnRhbnQ7IHdpZHRoOjEwMCUgIWltcG9ydGFudDsgaGVpZ2h0OmF1dG8gIWltcG9ydGFudDsgbWFyZ2luOjAgIWltcG9ydGFudDsgb2JqZWN0LWZpdDpjb250YWluICFpbXBvcnRhbnQ7IHBhZ2UtYnJlYWstaW5zaWRlOmF2b2lkICFpbXBvcnRhbnQ7IH0gfSBAbWVkaWEgcHJpbnQgeyBib2R5LmlzVXNlZFZkcFBhZ2UuaGFzLXZkcC1wcmludC1pbWcgZGl2Lk1haW5Cb3hMYXllciAuSW5uZXJCb3hMYXllci4tcGIzMCB7IGRpc3BsYXk6ZmxleCAhaW1wb3J0YW50OyBmbGV4LWRpcmVjdGlvbjpyb3cgIWltcG9ydGFudDsgYWxpZ24taXRlbXM6ZmxleC1zdGFydCAhaW1wb3J0YW50OyBnYXA6MTZweCAhaW1wb3J0YW50OyB3aWR0aDoxMDAlICFpbXBvcnRhbnQ7IG1heC13aWR0aDoxMDAlICFpbXBvcnRhbnQ7IG92ZXJmbG93OnZpc2libGUgIWltcG9ydGFudDsgfSBib2R5LmlzVXNlZFZkcFBhZ2UuaGFzLXZkcC1wcmludC1pbWcgI3VzZWRWRFBTbGlkZXJDb250YWluZXIgeyBmbG9hdDpub25lICFpbXBvcnRhbnQ7IG9yZGVyOjEgIWltcG9ydGFudDsgZmxleDoxIDEgYXV0byAhaW1wb3J0YW50OyB3aWR0aDphdXRvICFpbXBvcnRhbnQ7IG1heC13aWR0aDo2MiUgIWltcG9ydGFudDsgbWluLXdpZHRoOjAgIWltcG9ydGFudDsgb3ZlcmZsb3c6aGlkZGVuICFpbXBvcnRhbnQ7IH0gYm9keS5pc1VzZWRWZHBQYWdlLmhhcy12ZHAtcHJpbnQtaW1nIC51c2VkVmRwQWN0aW9ucyB7IGZsb2F0Om5vbmUgIWltcG9ydGFudDsgb3JkZXI6MiAhaW1wb3J0YW50OyBmbGV4OjAgMCAyNzBweCAhaW1wb3J0YW50OyB3aWR0aDoyNzBweCAhaW1wb3J0YW50OyB2aXNpYmlsaXR5OnZpc2libGUgIWltcG9ydGFudDsgfSBib2R5LmlzVXNlZFZkcFBhZ2UuaGFzLXZkcC1wcmludC1pbWcgLlNsaWRlck91dGVyQm94IHsgZGlzcGxheTpub25lICFpbXBvcnRhbnQ7IH0gYm9keS5pc1VzZWRWZHBQYWdlLmhhcy12ZHAtcHJpbnQtaW1nICN2ZHBQcmludEltZyB7IGRpc3BsYXk6YmxvY2sgIWltcG9ydGFudDsgbWF4LXdpZHRoOjEwMCUgIWltcG9ydGFudDsgbWF4LWhlaWdodDozLjJpbiAhaW1wb3J0YW50OyB3aWR0aDphdXRvICFpbXBvcnRhbnQ7IGhlaWdodDphdXRvICFpbXBvcnRhbnQ7IG1hcmdpbjowICFpbXBvcnRhbnQ7IH0gfQovKiogL2Nzcy9kaXZfc3BhbnMuY3NzICoqLwouZGl2U3BhbntmbG9hdDpsZWZ0O2JveC1zaXppbmc6Ym9yZGVyLWJveH0uZGl2U3Bhbi5kaXZTcGFuTGVmdHtmbG9hdDpsZWZ0fS5kaXZTcGFuLmRpdlNwYW5SaWdodHtmbG9hdDpyaWdodH0uZGl2U3Bhbi5kaXZTcGFuMXt3aWR0aDo4LjMzMzMzMzMzMzMzMzMzMyV9LmRpdlNwYW4uZGl2U3BhbjJ7d2lkdGg6MTYuNjY2NjY2NjY2NjY2NjclfS5kaXZTcGFuLmRpdlNwYW4ze3dpZHRoOjI1JX0uZGl2U3Bhbi5kaXZTcGFuNHt3aWR0aDozMy4zMzMzMzMzMzMzMzMzMyV9LmRpdlNwYW4uZGl2U3BhbjV7d2lkdGg6NDEuNjY2NjY2NjY2NjY2NjclfS5kaXZTcGFuLmRpdlNwYW42e3dpZHRoOjUwJX0uZGl2U3Bhbi5kaXZTcGFuN3t3aWR0aDo1OC4zMzMzMzMzMzMzMzMzMyV9LmRpdlNwYW4uZGl2U3Bhbjh7d2lkdGg6NjYuNjY2NjY2NjY2NjY2NjYlfS5kaXZTcGFuLmRpdlNwYW45e3dpZHRoOjc1JX0uZGl2U3Bhbi5kaXZTcGFuMTB7d2lkdGg6ODMuMzMzMzMzMzMzMzMzMzMlfS5kaXZTcGFuLmRpdlNwYW4xMXt3aWR0aDo5MS42NjY2NjY2NjY2NjY2NiV9LmRpdlNwYW4uZGl2U3BhbjEye3dpZHRoOjEwMCV9Ci8qKiAvY3NzL21lbnVpbWcuY3NzICoqLwoubWVudXNwcml0ZXtiYWNrZ3JvdW5kLWltYWdlOnVybCgvaW1hZ2VzL21lbnVpY29ucy9tZW51c3ByaXRlc2hlZXQucG5nKTtiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7ZGlzcGxheTppbmxpbmUtdGFibGU7Ym9yZGVyOjB9Lm1lbnVzcHJpdGUtYXJyb3dfZG93bnt3aWR0aDozMnB4O2hlaWdodDozMnB4O2JhY2tncm91bmQtcG9zaXRpb246LTVweCAtNXB4fS5tZW51c3ByaXRlLWFycm93X3Vwe3dpZHRoOjMycHg7aGVpZ2h0OjMycHg7YmFja2dyb3VuZC1wb3NpdGlvbjotNXB4IC00N3B4fS5tZW51c3ByaXRlLWNvbnRhY3R7d2lkdGg6MzJweDtoZWlnaHQ6MzJweDtiYWNrZ3JvdW5kLXBvc2l0aW9uOi01cHggLTg5cHh9Lm1lbnVzcHJpdGUtZGVtb2Nhcnt3aWR0aDozMnB4O2hlaWdodDozMnB4O2JhY2tncm91bmQtcG9zaXRpb246LTVweCAtMTMxcHh9Lm1lbnVzcHJpdGUtZmluYW5jZXt3aWR0aDozMnB4O2hlaWdodDozMnB4O2JhY2tncm91bmQtcG9zaXRpb246LTVweCAtMTczcHh9Lm1lbnVzcHJpdGUtaG9tZXt3aWR0aDozMnB4O2hlaWdodDozMnB4O2JhY2tncm91bmQtcG9zaXRpb246LTVweCAtMjE1cHh9Lm1lbnVzcHJpdGUtbmV3Y2Fye3dpZHRoOjMycHg7aGVpZ2h0OjMycHg7YmFja2dyb3VuZC1wb3NpdGlvbjotNXB4IC0yNTdweH0ubWVudXNwcml0ZS1vbGRjYXJ7d2lkdGg6MzJweDtoZWlnaHQ6MzJweDtiYWNrZ3JvdW5kLXBvc2l0aW9uOi01cHggLTI5OXB4fS5tZW51c3ByaXRlLXByb21vdGlvbnN7d2lkdGg6MzJweDtoZWlnaHQ6MzJweDtiYWNrZ3JvdW5kLXBvc2l0aW9uOi01cHggLTM0MXB4fS5tZW51c3ByaXRlLXNlcnZpY2V7d2lkdGg6MzJweDtoZWlnaHQ6MzJweDtiYWNrZ3JvdW5kLXBvc2l0aW9uOi01cHggLTM4M3B4fQovKiogL2Nzcy9qcXVlcnkubXVsdGlzZWxlY3QuY3NzICoqLwoudWktbXVsdGlzZWxlY3R7cGFkZGluZzoycHggMCAycHggNHB4O3RleHQtYWxpZ246bGVmdH0udWktbXVsdGlzZWxlY3Qgc3Bhbi51aS1pY29ue2Zsb2F0OnJpZ2h0fS51aS1tdWx0aXNlbGVjdC1zaW5nbGUgLnVpLW11bHRpc2VsZWN0LWNoZWNrYm94ZXMgaW5wdXR7cG9zaXRpb246YWJzb2x1dGUgIWltcG9ydGFudDt0b3A6YXV0byAhaW1wb3J0YW50O2xlZnQ6LTk5OTlweH0udWktbXVsdGlzZWxlY3Qtc2luZ2xlIC51aS1tdWx0aXNlbGVjdC1jaGVja2JveGVzIGxhYmVse3BhZGRpbmc6NXB4ICFpbXBvcnRhbnR9LnVpLW11bHRpc2VsZWN0LWhlYWRlcnttYXJnaW4tYm90dG9tOjNweDtwYWRkaW5nOjNweCAwIDNweCA0cHh9LnVpLW11bHRpc2VsZWN0LWhlYWRlciB1bHtmb250LXNpemU6LjllbX0udWktbXVsdGlzZWxlY3QtaGVhZGVyIHVsIGxpe2Zsb2F0OmxlZnQ7cGFkZGluZzowIDEwcHggMCAwfS51aS1tdWx0aXNlbGVjdC1oZWFkZXIgYXt0ZXh0LWRlY29yYXRpb246bm9uZX0udWktbXVsdGlzZWxlY3QtaGVhZGVyIGE6aG92ZXJ7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZX0udWktbXVsdGlzZWxlY3QtaGVhZGVyIHNwYW4udWktaWNvbntmbG9hdDpsZWZ0fS51aS1tdWx0aXNlbGVjdC1oZWFkZXIgbGkudWktbXVsdGlzZWxlY3QtY2xvc2V7ZmxvYXQ6cmlnaHQ7dGV4dC1hbGlnbjpyaWdodDtwYWRkaW5nLXJpZ2h0OjB9LnVpLW11bHRpc2VsZWN0LW1lbnV7ZGlzcGxheTpub25lO3BhZGRpbmc6M3B4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMDA7dGV4dC1hbGlnbjpsZWZ0fS51aS1tdWx0aXNlbGVjdC1jaGVja2JveGVze3Bvc2l0aW9uOnJlbGF0aXZlO292ZXJmbG93LXk6YXV0b30udWktbXVsdGlzZWxlY3QtY2hlY2tib3hlcyBsYWJlbHtjdXJzb3I6ZGVmYXVsdDtkaXNwbGF5OmJsb2NrO2JvcmRlcjoxcHggc29saWQgdHJhbnNwYXJlbnQ7cGFkZGluZzozcHggMXB4fS51aS1tdWx0aXNlbGVjdC1jaGVja2JveGVzIGxhYmVsIGlucHV0e3Bvc2l0aW9uOnJlbGF0aXZlO3RvcDoxcHh9LnVpLW11bHRpc2VsZWN0LWNoZWNrYm94ZXMgbGl7Y2xlYXI6Ym90aDtmb250LXNpemU6LjllbTtwYWRkaW5nLXJpZ2h0OjNweH0udWktbXVsdGlzZWxlY3QtY2hlY2tib3hlcyBsaS51aS1tdWx0aXNlbGVjdC1vcHRncm91cC1sYWJlbHt0ZXh0LWFsaWduOmNlbnRlcjtmb250LXdlaWdodDpib2xkO2JvcmRlci1ib3R0b206MXB4IHNvbGlkfS51aS1tdWx0aXNlbGVjdC1jaGVja2JveGVzIGxpLnVpLW11bHRpc2VsZWN0LW9wdGdyb3VwLWxhYmVsIGF7ZGlzcGxheTpibG9jaztwYWRkaW5nOjNweDttYXJnaW46MXB4IDA7dGV4dC1kZWNvcmF0aW9uOm5vbmV9KiBodG1sIC51aS1tdWx0aXNlbGVjdC1jaGVja2JveGVzIGxhYmVse2JvcmRlcjowfS51aS1tdWx0aXNlbGVjdC1oYXNmaWx0ZXIgdWx7cG9zaXRpb246cmVsYXRpdmU7dG9wOjJweH0udWktbXVsdGlzZWxlY3QtZmlsdGVye2Zsb2F0OmxlZnQ7bWFyZ2luLXJpZ2h0OjEwcHg7Zm9udC1zaXplOjExcHh9LnVpLW11bHRpc2VsZWN0LWZpbHRlciBpbnB1dHt3aWR0aDoxMDBweDtmb250LXNpemU6MC42MjVyZW0gO21hcmdpbi1sZWZ0OjVweDtoZWlnaHQ6MTVweDtwYWRkaW5nOjJweDtib3JkZXI6MXB4IHNvbGlkICMyOTI5Mjk7LXdlYmtpdC1hcHBlYXJhbmNlOnRleHRmaWVsZDstd2Via2l0LWJveC1zaXppbmc6Y29udGVudC1ib3h9Ci8qKiAvY3NzL3RyYWRlaW5wb3B1cC5jc3MgKiovCi50cmFkZUluQmFyU21zT3JFbWFpbHsgd2lkdGg6NTAlOyB9ICN0cmFkZUluQmFyUG9wdXBfZm9ybVcgI3RyYWRlSW5CYXJTbXNPckVtYWlsU21zLCAjdHJhZGVJbkJhclBvcHVwX2Zvcm1XICN0cmFkZUluQmFyU21zT3JFbWFpbEVtYWlseyB3aWR0aDo1MCU7IH0gLnRyYWRlSW5CYXJTdGVwNCwgLnRyYWRlSW5CYXJTdGVwNSwgLnRyYWRlSW5CYXJTdGVwNnsgbWFyZ2luOjYwcHggMDsgdGV4dC1hbGlnbjpjZW50ZXI7IH0gLnRyYWRlSW5CYXJTdGVwNnsgbWFyZ2luOjAgMCAzMHB4IDA7IHRleHQtYWxpZ246Y2VudGVyOyB9IC50cmFkZUluQmFyU3RlcDMgLnRyYWRlSW5CYXJTdGVwM1F1ZXN0aW9uLCAudHJhZGVJbkJhclN0ZXA0IC50cmFkZUluQmFyU3RlcDRRdWVzdGlvbiwgLnRyYWRlSW5CYXJTdGVwNSAudHJhZGVJbkJhclN0ZXA1UXVlc3Rpb24sIC50cmFkZUluQmFyU3RlcDYgLnRyYWRlSW5CYXJTdGVwNlF1ZXN0aW9ueyBtYXJnaW46MjBweCAwOyB9ICN0cmFkZUluQmFyUG9wdXBTdWJtaXQsIC50cmFkZUluQmFyU3RlcDMgI3RyYWRlSW5TdGVwM1llcywgLnRyYWRlSW5CYXJTdGVwNCAjdHJhZGVJblN0ZXA0WWVzLCAudHJhZGVJbkJhclN0ZXA1ICN0cmFkZUluU3RlcDVZZXMsIC50cmFkZUluQmFyU3RlcDYgI3RyYWRlSW5TdGVwNlllc3sgYmFja2dyb3VuZDojMzM0Yzk2OyBjb2xvcjojZmZmZmZmOyBwYWRkaW5nOjEycHggNnB4OyB0ZXh0LWRlY29yYXRpb246bm9uZTsgYm9yZGVyLXJhZGl1czozcHg7IGJvcmRlcjp1bnNldDsgZm9udC1zaXplOjAuODc1cmVtIDsgZGlzcGxheTpibG9jazsgdGV4dC13cmFwOmF1dG87IH0gLnRyYWRlSW5CYXJTdGVwMyAjdHJhZGVJblN0ZXAzTm97IGJhY2tncm91bmQ6I2UwZTBlMDsgY29sb3I6IzMzMzsgcGFkZGluZzoxMnB4IDZweDsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IGJvcmRlci1yYWRpdXM6M3B4OyBib3JkZXI6dW5zZXQ7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGRpc3BsYXk6YmxvY2s7IHRleHQtd3JhcDphdXRvOyB9ICN0cmFkZUluQmFyUG9wdXBfZm9ybVcgI3RyYWRlSW5CYXJQb3B1cEZvcm0gLnRyYWRlSW5CYXJTdGVwNiAudHJhZGVJbkJhclN0ZXA2VGl0bGV7IGZvbnQtc2l6ZToxLjI1cmVtIDsgZm9udC13ZWlnaHQ6Ym9sZDsgfSAjdHJhZGVJbkJhclBvcHVwX2Zvcm1XICN0cmFkZUluQmFyUG9wdXBfbGluZTF7IGJvcmRlci1yYWRpdXM6NnB4OyB9ICN0cmFkZUluQmFyUG9wdXBfZm9ybVcgI3RyYWRlSW5CYXJQb3B1cEZvcm0gLnVwbG9hZGVyLWNvbnRhaW5lciB7IG1heC13aWR0aDo2MDBweDsgd2lkdGg6MTAwJTsgbWFyZ2luOjAgYXV0bzsgYmFja2dyb3VuZC1jb2xvcjojZmZmOyBwYWRkaW5nOjIwcHg7IGJvcmRlci1yYWRpdXM6OHB4OyBib3gtc2hhZG93OjAgNHB4IDhweCByZ2JhKDAsIDAsIDAsIDAuMSk7IH0gI3RyYWRlSW5CYXJQb3B1cF9mb3JtVyAjdHJhZGVJbkJhclBvcHVwRm9ybSAudXBsb2FkZXItY29udGFpbmVyIGgyIHsgZm9udC1zaXplOjEuMnJlbTsgbWFyZ2luLWJvdHRvbToxMHB4OyB0ZXh0LWFsaWduOmNlbnRlcjsgfSAjdHJhZGVJbkJhclBvcHVwX2Zvcm1XICN0cmFkZUluQmFyUG9wdXBGb3JtIC51cGxvYWRlci1jb250YWluZXIgcCB7IGNvbG9yOiM2NjY7IG1hcmdpbi1ib3R0b206MjBweDsgdGV4dC1hbGlnbjpjZW50ZXI7IGZvbnQtc2l6ZTowLjlyZW07IH0gI3RyYWRlSW5CYXJQb3B1cF9mb3JtVyAjdHJhZGVJbkJhclBvcHVwRm9ybSAuaW1hZ2UtZ3JpZCB7IGRpc3BsYXk6Z3JpZDsgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOnJlcGVhdCg0LCAxZnIpOyBnYXA6MTVweDsgfSAjdHJhZGVJbkJhclBvcHVwX2Zvcm1XICN0cmFkZUluQmFyUG9wdXBGb3JtIC51cGxvYWQtYXJlYSB7IHBvc2l0aW9uOnJlbGF0aXZlOyB3aWR0aDoxMDAlOyBhc3BlY3QtcmF0aW86MSAvIDE7IGJvcmRlcjoycHggZGFzaGVkICNjY2M7IGJvcmRlci1yYWRpdXM6MTBweDsgY3Vyc29yOnBvaW50ZXI7IG92ZXJmbG93OmhpZGRlbjsgYmFja2dyb3VuZC1zaXplOjkwJTsgYmFja2dyb3VuZC1wb3NpdGlvbjpjZW50ZXI7IGJhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDsgYmFja2dyb3VuZC1jb2xvcjojZjVmNWY1OyB9ICN0cmFkZUluQmFyUG9wdXBfZm9ybVcgI3RyYWRlSW5CYXJQb3B1cEZvcm0gLnVwbG9hZC1hcmVhIGlucHV0W3R5cGU9ImZpbGUiXSB7IGRpc3BsYXk6bm9uZTsgfSAjdHJhZGVJbkJhclBvcHVwX2Zvcm1XICN0cmFkZUluQmFyUG9wdXBGb3JtIC5wbGFjZWhvbGRlciB7IHBvc2l0aW9uOmFic29sdXRlOyB0b3A6MDsgbGVmdDowOyB3aWR0aDoxMDAlOyBoZWlnaHQ6MTAwJTsgb2JqZWN0LWZpdDpjb250YWluOyBkaXNwbGF5Om5vbmU7IH0gI3RyYWRlSW5CYXJQb3B1cF9mb3JtVyAjdHJhZGVJbkJhclBvcHVwRm9ybSAucGxhY2Vob2xkZXItdGl0bGUgeyBwb3NpdGlvbjphYnNvbHV0ZTsgdG9wOjVweDsgbGVmdDo1MCU7IHRyYW5zZm9ybTp0cmFuc2xhdGVYKC01MCUpOyBmb250LXNpemU6MC41cmVtIDsgZm9udC13ZWlnaHQ6Ym9sZDsgY29sb3I6IzY2NjsgYmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOCk7IHBhZGRpbmc6MXB4IDZweDsgYm9yZGVyLXJhZGl1czo0cHg7IHBvaW50ZXItZXZlbnRzOm5vbmU7IHRleHQtYWxpZ246Y2VudGVyOyB3aGl0ZS1zcGFjZTpub3dyYXA7IG92ZXJmbG93OmhpZGRlbjsgdGV4dC1vdmVyZmxvdzplbGxpcHNpczsgfSAjdHJhZGVJbkJhclBvcHVwX2Zvcm1XICN0cmFkZUluQmFyUG9wdXBGb3JtIC5hZGQtaWNvbiB7IHBvc2l0aW9uOmFic29sdXRlOyBib3R0b206NXB4OyByaWdodDo1cHg7IGZvbnQtc2l6ZToxLjFyZW07IGNvbG9yOiMwMDdCRkY7IGJhY2tncm91bmQtY29sb3I6d2hpdGU7IGJvcmRlci1yYWRpdXM6NTAlOyB3aWR0aDoyOHB4OyBoZWlnaHQ6MjhweDsgZGlzcGxheTpmbGV4OyBqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyOyBhbGlnbi1pdGVtczpjZW50ZXI7IGJveC1zaGFkb3c6MCAycHggNHB4IHJnYmEoMCwgMCwgMCwgMC4yKTsgfSAjdHJhZGVJbkJhclBvcHVwX2Zvcm1XICN0cmFkZUluQmFyUG9wdXBGb3JtIC5kZWxldGUtYnRuIHsgcG9zaXRpb246YWJzb2x1dGU7IHRvcDo1cHg7IHJpZ2h0OjVweDsgd2lkdGg6MjBweDsgaGVpZ2h0OjIwcHg7IGJhY2tncm91bmQtY29sb3I6cmdiYSgwLCAwLCAwLCAwLjcpOyBjb2xvcjp3aGl0ZTsgYm9yZGVyOm5vbmU7IGJvcmRlci1yYWRpdXM6NTAlOyBmb250LXNpemU6MC43NXJlbSA7IGxpbmUtaGVpZ2h0OjIwcHg7IGN1cnNvcjpwb2ludGVyOyBkaXNwbGF5Om5vbmU7IH0gI3RyYWRlSW5CYXJQb3B1cF9mb3JtVyAjdHJhZGVJbkJhclBvcHVwRm9ybSAudXBsb2FkLWFyZWE6aG92ZXIgLmRlbGV0ZS1idG4geyBkaXNwbGF5OmZsZXg7IH0gLnRyYWRlSW5Cb3R0b21Mb2dveyB0ZXh0LWFsaWduOmNlbnRlcjsgY29sb3I6I2E5YTlhOTsgZGlzcGxheTpmbGV4OyBhbGlnbi1pdGVtczpjZW50ZXI7IGp1c3RpZnktY29udGVudDpjZW50ZXI7IG1hcmdpbi10b3A6MCFpbXBvcnRhbnQ7IH0gLnRyYWRlSW5Cb3R0b21Mb2dvLnRyYWRlSW5Cb3R0b21Mb2dvVld7IG1hcmdpbjowIGF1dG87IHdpZHRoOjg1JTsgfSAjdHJhZGVJbkJhclBvcHVwX2Zvcm1XIC50cmFkZUluRGlzY2xhaW1lciAudHJhZGVJbkRpc2NsYWltZXJTaG9ydHsgcG9zaXRpb246cmVsYXRpdmU7IHdoaXRlLXNwYWNlOm5vd3JhcDsgb3ZlcmZsb3c6aGlkZGVuOyB0ZXh0LW92ZXJmbG93OmNsaXA7IG1heC13aWR0aDoxMDAlOyBsaW5lLWhlaWdodDoxLjUgIWltcG9ydGFudDsgZm9udC1zaXplOjAuNzVyZW0gIWltcG9ydGFudDsgY29sb3I6IzAwMCAhaW1wb3J0YW50OyBtYXJnaW4tYm90dG9tOjAgIWltcG9ydGFudDsgcGFkZGluZy1yaWdodDoxNnB4OyB9ICN0cmFkZUluQmFyUG9wdXBfZm9ybVcgLnRyYWRlSW5EaXNjbGFpbWVyIC50cmFkZUluRGlzY2xhaW1lclNob3J0OjpiZWZvcmUgeyBjb250ZW50OiIiOyBwb3NpdGlvbjphYnNvbHV0ZTsgcmlnaHQ6MDsgdG9wOjA7IHdpZHRoOjIwcHg7IGhlaWdodDoxMDAlOyBiYWNrZ3JvdW5kOndoaXRlOyBwb2ludGVyLWV2ZW50czpub25lOyB9ICN0cmFkZUluQmFyUG9wdXBfZm9ybVcgLnRyYWRlSW5EaXNjbGFpbWVyIC50cmFkZUluRGlzY2xhaW1lclNob3J0OjphZnRlciB7IGNvbnRlbnQ6IiAiOyBoZWlnaHQ6MDsgd2lkdGg6MDsgYm9yZGVyLWxlZnQ6NXB4IHNvbGlkIHRyYW5zcGFyZW50OyBib3JkZXItcmlnaHQ6NXB4IHNvbGlkIHRyYW5zcGFyZW50OyBib3JkZXItdG9wOjVweCBzb2xpZCAjMDAwMDAwOyBwb3NpdGlvbjphYnNvbHV0ZTsgcmlnaHQ6NXB4OyB0b3A6NTAlOyB0cmFuc2Zvcm06dHJhbnNsYXRlWSgtNTAlKTsgdHJhbnNpdGlvbjphbGwgMC4zcyBsaW5lYXI7IHBvaW50ZXItZXZlbnRzOm5vbmU7IGJhY2tncm91bmQ6d2hpdGUgfSAjdHJhZGVJbkJhclBvcHVwX2Zvcm1XIC50cmFkZUluRGlzY2xhaW1lciAudHJhZGVJbkRpc2NsYWltZXJTaG9ydCBzcGFueyBsaW5lLWhlaWdodDoxLjUgIWltcG9ydGFudDsgZm9udC1zaXplOjAuODEzcmVtICFpbXBvcnRhbnQ7IGNvbG9yOiMwMDAgIWltcG9ydGFudDsgbWFyZ2luLWJvdHRvbTowICFpbXBvcnRhbnQ7IGN1cnNvcjpwb2ludGVyOyB9ICN0cmFkZUluQmFyUG9wdXBfZm9ybVcgLnRyYWRlSW5EaXNjbGFpbWVyIC50cmFkZUluRGlzY2xhaW1lclNob3J0IHNwYW4gYXsgZm9udC13ZWlnaHQ6Ym9sZDsgfSAudHJhZGVJbkRpc2NsYWltZXJEcmF3ZXJ7IHBvc2l0aW9uOmZpeGVkOyBsZWZ0OjA7IGJvdHRvbTotMzAwcHg7IHdpZHRoOjEwMCU7IGhlaWdodDphdXRvOyBiYWNrZ3JvdW5kOiNmZmY7IGJveC1zaGFkb3c6MCAtMnB4IDEwcHggcmdiYSgwLDAsMCwwLjMpOyB0cmFuc2l0aW9uOmJvdHRvbSAwLjNzIGVhc2U7IGRpc3BsYXk6bm9uZTsgb3ZlcmZsb3c6YXV0bzsgei1pbmRleDoxMDsgfSAudHJhZGVJbkRpc2NsYWltZXJEcmF3ZXIub3BlbnsgYm90dG9tOjA7IH0gLnRyYWRlSW5EaXNjbGFpbWVyRHJhd2VyLm9wZW4gLnRyYWRlSW5EaXNjbGFpbWVyQ29udGVudHsgcGFkZGluZzoyMHB4OyBwYWRkaW5nLWJvdHRvbTpjYWxjKDIwcHggKyBlbnYoc2FmZS1hcmVhLWluc2V0LWJvdHRvbSwgMHB4KSk7IG92ZXJmbG93LXk6YXV0bzsgfSAudHJhZGVJbkRpc2NsYWltZXJEcmF3ZXIub3BlbiAudHJhZGVJbkRpc2NsYWltZXJDbG9zZXsgcGFkZGluZzo3cHg7IGN1cnNvcjpwb2ludGVyOyBwb3NpdGlvbjpmaXhlZDsgcmlnaHQ6MDsgfSAudHJhZGVJbkRpc2NsYWltZXJEcmF3ZXIub3BlbiBheyBmb250LXdlaWdodDpib2xkOyB9IEBtZWRpYSAobWF4LXdpZHRoOjYwMHB4KSB7ICN0cmFkZUluQmFyUG9wdXBfZm9ybVcgI3RyYWRlSW5CYXJQb3B1cEZvcm0gLnVwbG9hZGVyLWNvbnRhaW5lciB7IHBhZGRpbmc6MTVweDsgfSAjdHJhZGVJbkJhclBvcHVwX2Zvcm1XICN0cmFkZUluQmFyUG9wdXBGb3JtIC5pbWFnZS1ncmlkIHsgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOnJlcGVhdCgzLCAxZnIpOyBnYXA6MTBweDsgfSAjdHJhZGVJbkJhclBvcHVwX2Zvcm1XICN0cmFkZUluQmFyUG9wdXBGb3JtIC5wbGFjZWhvbGRlci10aXRsZSB7IGZvbnQtc2l6ZTowLjVyZW0gOyB9IH0gQG1lZGlhIChtYXgtd2lkdGg6NDAwcHgpIHsgI3RyYWRlSW5CYXJQb3B1cF9mb3JtVyAjdHJhZGVJbkJhclBvcHVwRm9ybSAuaW1hZ2UtZ3JpZCB7IGdyaWQtdGVtcGxhdGUtY29sdW1uczpyZXBlYXQoMiwgMWZyKTsgZ2FwOjhweDsgfSAjdHJhZGVJbkJhclBvcHVwX2Zvcm1XICN0cmFkZUluQmFyUG9wdXBGb3JtIC5wbGFjZWhvbGRlci10aXRsZSB7IGZvbnQtc2l6ZTowLjVyZW0gOyB9ICN0cmFkZUluQmFyUG9wdXBfZm9ybVcgI3RyYWRlSW5CYXJQb3B1cEZvcm0gLmFkZC1pY29uIHsgd2lkdGg6MjRweDsgaGVpZ2h0OjI0cHg7IGZvbnQtc2l6ZToxcmVtOyB9ICN0cmFkZUluQmFyUG9wdXBfZm9ybVcgI3RyYWRlSW5CYXJQb3B1cEZvcm0gLmRlbGV0ZS1idG4geyB3aWR0aDoxNnB4OyBoZWlnaHQ6MTZweDsgZm9udC1zaXplOjAuNjI1cmVtIDsgfSB9Ci8qKiAvY3NzL2FkdmFuY2VkLXNsaWRlci1iYXNlLmNzcyAqKi8KLmFkdmFuY2VkLXNsaWRlciB7IHBvc2l0aW9uOnJlbGF0aXZlOyBvdmVyZmxvdzp2aXNpYmxlOyBvdXRsaW5lOm5vbmU7IG1hcmdpbi1sZWZ0OmF1dG87IG1hcmdpbi1yaWdodDphdXRvOyB9IC5hZHZhbmNlZC1zbGlkZXIgKiB7IG1hcmdpbjowOyBwYWRkaW5nOjA7IH0gLmFkdmFuY2VkLXNsaWRlciAuc2xpZGVyLW1haW4geyBwb3NpdGlvbjphYnNvbHV0ZTsgd2lkdGg6MTAwJTsgaGVpZ2h0OjEwMCU7IHotaW5kZXg6MTA7IH0gLmFkdmFuY2VkLXNsaWRlciAuc2xpZGUtd3JhcHBlciB7IHBvc2l0aW9uOnJlbGF0aXZlOyBvdmVyZmxvdzp2aXNpYmxlOyB3aWR0aDoxMDAlOyBoZWlnaHQ6MTAwJTsgei1pbmRleDoxMDsgfSAuYWR2YW5jZWQtc2xpZGVyIHVsLnNsaWRlcyB7IHBvc2l0aW9uOmFic29sdXRlOyBvdmVyZmxvdzpoaWRkZW47IG1hcmdpbjowOyBwYWRkaW5nOjA7IGxpc3Qtc3R5bGU6bm9uZTsgd2lkdGg6MTAwJTsgaGVpZ2h0OjEwMCU7IHotaW5kZXg6MTA7IH0gLmFkdmFuY2VkLXNsaWRlciBsaS5zbGlkZSB7IHBvc2l0aW9uOmFic29sdXRlOyBvdmVyZmxvdzpoaWRkZW47IGRpc3BsYXk6ZmxleDsgbWFyZ2luOjA7IHBhZGRpbmc6MDsgd2lkdGg6MTAwJTsgaGVpZ2h0OjEwMCU7IHZpc2liaWxpdHk6aGlkZGVuOyBsaXN0LXN0eWxlOm5vbmU7IGZpbHRlcjphbHBoYShvcGFjaXR5PTEwMCk7IG9wYWNpdHk6MTsgfSAuYWR2YW5jZWQtc2xpZGVyIGxpLnNsaWRlIC5pbWFnZSwgLmFkdmFuY2VkLXNsaWRlciBsaS5zbGlkZSAudGh1bWJuYWlsLCAuYWR2YW5jZWQtc2xpZGVyIGxpLnNsaWRlIC5jYXB0aW9uLCAuYWR2YW5jZWQtc2xpZGVyIGxpLnNsaWRlIC5odG1sIHsgcG9zaXRpb246YWJzb2x1dGU7IH0gLmFkdmFuY2VkLXNsaWRlciBsaS5zbGlkZSBpbWcsIC5hZHZhbmNlZC1zbGlkZXIgLnRodW1ibmFpbCBpbWcgeyBtYXgtd2lkdGg6bm9uZTsgbWF4LWhlaWdodDpub25lOyBib3JkZXI6MCBub25lOyB9IC5hZHZhbmNlZC1zbGlkZXIgbGkuc2xpZGUgLmh0bWwgeyBvdmVyZmxvdzpoaWRkZW47IH0gLmFkdmFuY2VkLXNsaWRlciBsaS5zbGlkZSAudmlkZW8geyB9IC5hZHZhbmNlZC1zbGlkZXIgbGkuc2xpZGUuYWN0aXZlIC52aWRlbyB7IH0gLmFkdmFuY2VkLXNsaWRlciAuc2xpY2UtY29udGFpbmVyIHsgcG9zaXRpb246YWJzb2x1dGU7IHdpZHRoOjEwMCU7IGhlaWdodDoxMDAlOyB6LWluZGV4OjEwOyB9IC5hZHZhbmNlZC1zbGlkZXIgLnN3aXBlYWJsZS1jb250YWluZXIgeyBwb3NpdGlvbjphYnNvbHV0ZTsgd2lkdGg6MTAwJTsgaGVpZ2h0OjEwMCU7IG92ZXJmbG93OmhpZGRlbjsgfSAuYWR2YW5jZWQtc2xpZGVyIC5zd2lwZWFibGUtY29udGFpbmVyIC5zbGlkZXMgeyAtd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7IC1tb3otdXNlci1zZWxlY3Q6bm9uZTsgLW8tdXNlci1zZWxlY3Q6bm9uZTsgdXNlci1zZWxlY3Q6bm9uZTsgfSAuYWR2YW5jZWQtc2xpZGVyIC5zd2lwZWFibGUtY29udGFpbmVyIC5zbGlkZXMgLnNlbGVjdGFibGUgeyAtd2Via2l0LXVzZXItc2VsZWN0OmF1dG87IC1tb3otdXNlci1zZWxlY3Q6YXV0bzsgLW8tdXNlci1zZWxlY3Q6YXV0bzsgdXNlci1zZWxlY3Q6YXV0bzsgY3Vyc29yOmF1dG87IH0gLmFkdmFuY2VkLXNsaWRlciAuc3dpcGVhYmxlLWNvbnRhaW5lciAuZ3JhYiB7IGN1cnNvcjpncmFiOyB9IC5hZHZhbmNlZC1zbGlkZXIgLnN3aXBlYWJsZS1jb250YWluZXIgLmdyYWJiaW5nIHsgY3Vyc29yOmdyYWJiaW5nOyB9IC5hZHZhbmNlZC1zbGlkZXIgLnNsaWNlIHsgZGlzcGxheTpibG9jazsgcG9zaXRpb246YWJzb2x1dGU7IH0gLmFkdmFuY2VkLXNsaWRlciAucHJlbG9hZGVyIHsgcG9zaXRpb246YWJzb2x1dGU7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvcHJlbG9hZGVyMi5naWYpIG5vLXJlcGVhdDsgd2lkdGg6NjJweDsgaGVpZ2h0OjE0cHg7IHotaW5kZXg6MTU7IH0gLmFkdmFuY2VkLXNsaWRlciAuc2xpZGUtYXJyb3dzIHsgcG9zaXRpb246c3RhdGljOyB9IC5hZHZhbmNlZC1zbGlkZXIgLnNsaWRlLWFycm93cyBhIHsgcG9zaXRpb246YWJzb2x1dGU7IHotaW5kZXg6MzA7IGN1cnNvcjpwb2ludGVyOyB9IC5hZHZhbmNlZC1zbGlkZXIgLmxpZ2h0Ym94LWljb24geyBwb3NpdGlvbjphYnNvbHV0ZTsgd2lkdGg6ODBweDsgaGVpZ2h0OjgwcHg7IHRvcDo1MCU7IGxlZnQ6NTAlOyBtYXJnaW4tdG9wOi00MHB4OyBtYXJnaW4tbGVmdDotNDBweDsgY3Vyc29yOnBvaW50ZXI7IHotaW5kZXg6MTA7IH0gLmFkdmFuY2VkLXNsaWRlciAubGlnaHRib3gtaWNvbi5wbGF5IHsgYmFja2dyb3VuZC1pbWFnZTp1cmwoL2ltYWdlcy9saWdodGJveF9wbGF5LnBuZyk7IH0gLmFkdmFuY2VkLXNsaWRlciAubGlnaHRib3gtaWNvbi5tYWduaWZ5aW5nIHsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9saWdodGJveF9tYWduaWZ5aW5nX3NtYWxsLnBuZykgbm8tcmVwZWF0OyBmbG9hdDpsZWZ0OyBsZWZ0OjA7IHRvcDowOyBtYXJnaW4tbGVmdDoxMHB4OyBtYXJnaW4tdG9wOjEwcHg7IGRpc3BsYXk6bm9uZTsgfSB9IC5hZHZhbmNlZC1zbGlkZXIgLmxpZ2h0Ym94LWljb24uaHlwZXJsaW5rIHsgYmFja2dyb3VuZC1pbWFnZTp1cmwoL2ltYWdlcy9saWdodGJveF9oeXBlcmxpbmsucG5nKTsgfSAuYWR2YW5jZWQtc2xpZGVyIC5zbGlkZXNob3ctY29udHJvbHMgeyBwb3NpdGlvbjphYnNvbHV0ZTsgei1pbmRleDo0MDsgY3Vyc29yOnBvaW50ZXI7IH0gLmFkdmFuY2VkLXNsaWRlciAuc2hhZG93IHsgcG9zaXRpb246YWJzb2x1dGU7IGhlaWdodDo5NHB4OyBtYXJnaW4tdG9wOi01MHB4OyB6LWluZGV4OjU7IH0gLmFkdmFuY2VkLXNsaWRlciAuc2hhZG93IC5zaGFkb3ctbGVmdCwgLmFkdmFuY2VkLXNsaWRlciAuc2hhZG93IC5zaGFkb3ctcmlnaHQsIC5hZHZhbmNlZC1zbGlkZXIgLnNoYWRvdyAuc2hhZG93LW1pZGRsZSB7IGZsb2F0OmxlZnQ7IH0gLmFkdmFuY2VkLXNsaWRlciAuZnVsbC1zY3JlZW4tY29udHJvbHMgeyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL2Z1bGxzY3JlZW4ucG5nKSBuby1yZXBlYXQ7IHBvc2l0aW9uOmFic29sdXRlOyB3aWR0aDozMXB4OyBoZWlnaHQ6MjdweDsgdG9wOjIwcHg7IGxlZnQ6MjBweDsgei1pbmRleDo2MDsgY3Vyc29yOnBvaW50ZXI7IH0gLmFkdmFuY2VkLXNsaWRlciAudGltZXItYW5pbWF0aW9uIHsgcG9zaXRpb246YWJzb2x1dGU7IHotaW5kZXg6NTA7IH0gLmFkdmFuY2VkLXNsaWRlciBjYW52YXMgeyBwb3NpdGlvbjphYnNvbHV0ZTsgfSAuYWR2YW5jZWQtc2xpZGVyIC50aW1lci1hbmltYXRpb24gLnRpbWVyLWFuaW1hdGlvbi1jb250cm9scyB7IHBvc2l0aW9uOmFic29sdXRlOyBjdXJzb3I6cG9pbnRlcjsgd2lkdGg6MjBweDsgaGVpZ2h0OjIwcHg7IHRvcDo1MCU7IGxlZnQ6NTAlOyBtYXJnaW4tdG9wOi0xMHB4OyBtYXJnaW4tbGVmdDotMTBweDsgfSAuYWR2YW5jZWQtc2xpZGVyIC50aW1lci1hbmltYXRpb24gLnRpbWVyLWFuaW1hdGlvbi1jb250cm9scyB7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvcGxheXBhdXNlX3NtYWxsLnBuZykgbm8tcmVwZWF0OyB9IC5hZHZhbmNlZC1zbGlkZXIgLnRpbWVyLWFuaW1hdGlvbi5wbGF5IC50aW1lci1hbmltYXRpb24tY29udHJvbHMgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOi0yMHB4IDA7IH0gLmFkdmFuY2VkLXNsaWRlciAudGltZXItYW5pbWF0aW9uLnBhdXNlIC50aW1lci1hbmltYXRpb24tY29udHJvbHMgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOjAgMDsgfSAuYWR2YW5jZWQtc2xpZGVyIC5jYXB0aW9uLWNvbnRhaW5lciB7IG92ZXJmbG93OmhpZGRlbjsgcG9zaXRpb246YWJzb2x1dGU7IH0gLmFkdmFuY2VkLXNsaWRlciAuY2FwdGlvbi1jb250YWluZXIgLndyYXBwZXIgeyBwb3NpdGlvbjphYnNvbHV0ZTsgfSAuYWR2YW5jZWQtc2xpZGVyIC5jYXB0aW9uLWNvbnRhaW5lciAuYmFja2dyb3VuZCB7IHBvc2l0aW9uOmFic29sdXRlOyB3aWR0aDoxMDAlOyBoZWlnaHQ6MTAwJTsgfSAuYWR2YW5jZWQtc2xpZGVyIC50aHVtYm5haWwtd3JhcHBlciB7IHBvc2l0aW9uOmFic29sdXRlOyB9IC5hZHZhbmNlZC1zbGlkZXIgLnRodW1ibmFpbCB7IGJhY2tncm91bmQtaW1hZ2U6dXJsKC9pbWFnZXMvcHJlbG9hZGVyLmdpZik7IGJhY2tncm91bmQtcG9zaXRpb246Y2VudGVyOyBiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7IHBvc2l0aW9uOmFic29sdXRlOyBvdmVyZmxvdzpoaWRkZW47IH0gLmFkdmFuY2VkLXNsaWRlciAuc2xpZGUtYnV0dG9ucyB7IHBvc2l0aW9uOmFic29sdXRlOyB6LWluZGV4OjIwOyB9IC5hZHZhbmNlZC1zbGlkZXIgLnNsaWRlLWJ1dHRvbnMgLmxlZnQsIC5hZHZhbmNlZC1zbGlkZXIgLnNsaWRlLWJ1dHRvbnMgLnJpZ2h0LCAuYWR2YW5jZWQtc2xpZGVyIC5zbGlkZS1idXR0b25zIC5taWRkbGUgeyBmbG9hdDpsZWZ0OyB9IC5hZHZhbmNlZC1zbGlkZXIgLnNsaWRlLWJ1dHRvbnMgYSB7IHBvc2l0aW9uOnJlbGF0aXZlOyBjdXJzb3I6cG9pbnRlcjsgZmxvYXQ6bGVmdDsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IHRleHQtYWxpZ246Y2VudGVyOyB9IC5hZHZhbmNlZC1zbGlkZXIgLnRodW1ibmFpbC1zY3JvbGxlciB7IHBvc2l0aW9uOmFic29sdXRlOyB6LWluZGV4OjIwOyB9IC5hZHZhbmNlZC1zbGlkZXIgLnRodW1ibmFpbC1zY3JvbGxlciAudmlzaWJsZS1jb250YWluZXIgeyBwb3NpdGlvbjpyZWxhdGl2ZTsgb3ZlcmZsb3c6aGlkZGVuOyB9IC5hZHZhbmNlZC1zbGlkZXIgLnRodW1ibmFpbC1zY3JvbGxlciAuY29udGFpbmVyIHsgcG9zaXRpb246YWJzb2x1dGU7IG92ZXJmbG93OnZpc2libGU7IHRvcDowOyBsZWZ0OjA7IGxpc3Qtc3R5bGU6bm9uZTsgbWFyZ2luOjA7IHBhZGRpbmc6MDsgfSAuYWR2YW5jZWQtc2xpZGVyIC50aHVtYm5haWwtc2Nyb2xsZXIgLnRodW1ibmFpbC13cmFwcGVyIHsgY3Vyc29yOnBvaW50ZXI7IGxpc3Qtc3R5bGU6bm9uZTsgfSAuYWR2YW5jZWQtc2xpZGVyIC50aHVtYm5haWwtc2Nyb2xsZXIgLmxpZ2h0Ym94LWljb24geyBwb3NpdGlvbjphYnNvbHV0ZTsgd2lkdGg6MzBweDsgaGVpZ2h0OjMwcHg7IHRvcDo1MCU7IGxlZnQ6NTAlOyBtYXJnaW4tdG9wOi0xNXB4OyBtYXJnaW4tbGVmdDotMTVweDsgY3Vyc29yOnBvaW50ZXI7IH0gLmFkdmFuY2VkLXNsaWRlciAudGh1bWJuYWlsLXNjcm9sbGVyIC5saWdodGJveC1pY29uLnBsYXkgeyBiYWNrZ3JvdW5kLWltYWdlOnVybCgvaW1hZ2VzL2xpZ2h0Ym94X3BsYXlfc21hbGwucG5nKTsgfSAuYWR2YW5jZWQtc2xpZGVyIC50aHVtYm5haWwtc2Nyb2xsZXIgLmxpZ2h0Ym94LWljb24ubWFnbmlmeWluZyB7IGJhY2tncm91bmQtaW1hZ2U6dXJsKC9pbWFnZXMvbGlnaHRib3hfbWFnbmlmeWluZ19zbWFsbC5wbmcpOyB9IC5hZHZhbmNlZC1zbGlkZXIgLnRodW1ibmFpbC1zY3JvbGxlciAubGlnaHRib3gtaWNvbi5oeXBlcmxpbmsgeyBiYWNrZ3JvdW5kLWltYWdlOnVybCgvaW1hZ2VzL2xpZ2h0Ym94X2h5cGVybGlua19zbWFsbC5wbmcpOyB9IC5hZHZhbmNlZC1zbGlkZXIgLnRodW1ibmFpbCAuY2FwdGlvbiB7IHBvc2l0aW9uOmFic29sdXRlOyB3aWR0aDoxMDAlOyB9IC5hZHZhbmNlZC1zbGlkZXIgLnRodW1ibmFpbCAuY2FwdGlvbiAuYmFja2dyb3VuZCB7IHBvc2l0aW9uOmFic29sdXRlOyB3aWR0aDoxMDAlOyBoZWlnaHQ6MTAwJTsgei1pbmRleDoxMDsgfSAuYWR2YW5jZWQtc2xpZGVyIC50aHVtYm5haWwgLmNhcHRpb24gLmNvbnRlbnQgeyBwb3NpdGlvbjphYnNvbHV0ZTsgd2lkdGg6MTAwJTsgei1pbmRleDoyMDsgfSAuYWR2YW5jZWQtc2xpZGVyIC50aHVtYm5haWwtc2Nyb2xsZXIgLmFycm93cyBhIHsgcG9zaXRpb246YWJzb2x1dGU7IGN1cnNvcjpwb2ludGVyOyB9IC5hZHZhbmNlZC1zbGlkZXIgLnRodW1ibmFpbC1zY3JvbGxlciAuYnV0dG9ucyB7IHBvc2l0aW9uOmFic29sdXRlOyB3aWR0aDphdXRvOyB9IC5hZHZhbmNlZC1zbGlkZXIgLnRodW1ibmFpbC1zY3JvbGxlciAuYnV0dG9ucyBhIHsgcG9zaXRpb246YWJzb2x1dGU7IGN1cnNvcjpwb2ludGVyOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgfSAuYWR2YW5jZWQtc2xpZGVyLXRvb2x0aXAgeyBwb3NpdGlvbjphYnNvbHV0ZTsgei1pbmRleDo5OTk5OyB9IC5vZW0taW1nLXNsaWRlciAuc2xpZGUgYSB7IGRpc3BsYXk6ZmxleDsgYWxpZ24taXRlbXM6Y2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyOyB9IC5vZW0taW1nLXNsaWRlciAuc2xpZGU6bnRoLWNoaWxkKC1uKzQpIGEgaW1neyB3aWR0aDoxMTUlICFpbXBvcnRhbnQ7IH0gLm9lbS1pbWctc2xpZGVyIC5zbGlkZSBhIGltZ3sgaGVpZ2h0OmF1dG8gIWltcG9ydGFudDsgbWFyZ2luOjAgIWltcG9ydGFudDsgbWF4LXdpZHRoOm5vbmUgIWltcG9ydGFudDsgbWF4LWhlaWdodDpub25lICFpbXBvcnRhbnQ7IHBvc2l0aW9uOnJlbGF0aXZlICFpbXBvcnRhbnQ7IGxlZnQ6aW5pdGlhbCAhaW1wb3J0YW50OyB0b3A6aW5pdGlhbCAhaW1wb3J0YW50OyBtYXgtd2lkdGg6dW5zZXQgIWltcG9ydGFudDsgbWF4LWhlaWdodDp1bnNldCAhaW1wb3J0YW50OyB9IC5vZW0taW1nLXNsaWRlciAjZmlyc3RTbGlkZXJJbWcgLnBsYWNlaG9sZGVyIHsgYmFja2dyb3VuZC1zaXplOjExNSU7IH0KLyoqIC9jc3MvdG9hc3RyLmNzcyAqKi8KLnRvYXN0LXRpdGxle2ZvbnQtd2VpZ2h0OmJvbGR9LnRvYXN0LW1lc3NhZ2V7LW1zLXdvcmQtd3JhcDpicmVhay13b3JkO3dvcmQtd3JhcDpicmVhay13b3JkfS50b2FzdC1tZXNzYWdlIGEsLnRvYXN0LW1lc3NhZ2UgbGFiZWx7Y29sb3I6I2ZmZn0udG9hc3QtbWVzc2FnZSBhOmhvdmVye2NvbG9yOiNjY2M7dGV4dC1kZWNvcmF0aW9uOm5vbmV9LnRvYXN0LWNsb3NlLWJ1dHRvbntwb3NpdGlvbjpyZWxhdGl2ZTtyaWdodDotMC4zZW07dG9wOi0wLjNlbTtmbG9hdDpyaWdodDtmb250LXNpemU6MS4yNXJlbSA7Zm9udC13ZWlnaHQ6Ym9sZDtjb2xvcjppbmhlcml0Oy13ZWJraXQtdGV4dC1zaGFkb3c6MCAxcHggMCAjZmZmO3RleHQtc2hhZG93OjAgMXB4IDAgI2ZmZjtvcGFjaXR5Oi44Oy1tcy1maWx0ZXI6YWxwaGEob3BhY2l0eT04MCk7ZmlsdGVyOmFscGhhKG9wYWNpdHk9ODApfS50b2FzdC1jbG9zZS1idXR0b246aG92ZXIsLnRvYXN0LWNsb3NlLWJ1dHRvbjpmb2N1c3tjb2xvcjojMmMyYzJjO3RleHQtZGVjb3JhdGlvbjpub25lO2N1cnNvcjpwb2ludGVyO29wYWNpdHk6LjQ7LW1zLWZpbHRlcjphbHBoYShvcGFjaXR5PTQwKTtmaWx0ZXI6YWxwaGEob3BhY2l0eT00MCl9YnV0dG9uLnRvYXN0LWNsb3NlLWJ1dHRvbntwYWRkaW5nOjA7Y3Vyc29yOnBvaW50ZXI7YmFja2dyb3VuZDp0cmFuc3BhcmVudDtib3JkZXI6MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZX0udG9hc3QtdG9wLWNlbnRlcnt0b3A6MDtyaWdodDowO3dpZHRoOjEwMCV9LnRvYXN0LWJvdHRvbS1jZW50ZXJ7Ym90dG9tOjA7cmlnaHQ6MDt3aWR0aDoxMDAlfS50b2FzdC10b3AtZnVsbC13aWR0aHt0b3A6MDtyaWdodDowO3dpZHRoOjEwMCV9LnRvYXN0LWJvdHRvbS1mdWxsLXdpZHRoe2JvdHRvbTowO3JpZ2h0OjA7d2lkdGg6MTAwJX0udG9hc3QtdG9wLWxlZnR7dG9wOjEycHg7bGVmdDoxMnB4fS50b2FzdC10b3AtcmlnaHR7dG9wOjEycHg7cmlnaHQ6MTJweH0udG9hc3QtYm90dG9tLXJpZ2h0e3JpZ2h0OjEycHg7Ym90dG9tOjEycHh9LnRvYXN0LWJvdHRvbS1sZWZ0e2JvdHRvbToxMnB4O2xlZnQ6MTJweH0jdG9hc3QtY29udGFpbmVye3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6OTk5OTk5O2NvbG9yOiNGRkZ9I3RvYXN0LWNvbnRhaW5lciAqey1tb3otYm94LXNpemluZzpib3JkZXItYm94Oy13ZWJraXQtYm94LXNpemluZzpib3JkZXItYm94O2JveC1zaXppbmc6Ym9yZGVyLWJveH0jdG9hc3QtY29udGFpbmVyPmRpdntwb3NpdGlvbjpyZWxhdGl2ZTtvdmVyZmxvdzpoaWRkZW47bWFyZ2luOjAgMCA2cHg7cGFkZGluZzoxNXB4IDE1cHggMTVweCA1MHB4O3dpZHRoOjMwMHB4Oy1tb3otYm9yZGVyLXJhZGl1czozcHggM3B4IDNweCAzcHg7LXdlYmtpdC1ib3JkZXItcmFkaXVzOjNweCAzcHggM3B4IDNweDtib3JkZXItcmFkaXVzOjNweCAzcHggM3B4IDNweDtiYWNrZ3JvdW5kLXBvc2l0aW9uOjE1cHggY2VudGVyO2JhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDstbW96LWJveC1zaGFkb3c6MCAwIDEycHggIzk5OTstd2Via2l0LWJveC1zaGFkb3c6MCAwIDEycHggIzk5OTtib3gtc2hhZG93OjAgMCAxMnB4ICM5OTk7Y29sb3I6aW5oZXJpdDtvcGFjaXR5Oi44Oy1tcy1maWx0ZXI6YWxwaGEob3BhY2l0eT04MCk7ZmlsdGVyOmFscGhhKG9wYWNpdHk9ODApfSN0b2FzdC1jb250YWluZXI+OmhvdmVyey1tb3otYm94LXNoYWRvdzowIDAgMTJweCAjMDAwOy13ZWJraXQtYm94LXNoYWRvdzowIDAgMTJweCAjMDAwO2JveC1zaGFkb3c6MCAwIDEycHggIzAwMDtvcGFjaXR5OjE7LW1zLWZpbHRlcjphbHBoYShvcGFjaXR5PTEwMCk7ZmlsdGVyOmFscGhhKG9wYWNpdHk9MTAwKTtjdXJzb3I6cG9pbnRlcn0jdG9hc3QtY29udGFpbmVyPi50b2FzdC1pbmZve2JhY2tncm91bmQtaW1hZ2U6dXJsKCJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJnQUFBQVlDQVlBQUFEZ2R6MzRBQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBRHNNQUFBN0RBY2R2cUdRQUFBR3dTVVJCVkVoTHRaYTlTZ05CRU1jOXNVeHhSY29VS1N6U1dJaFhwRk1oaFlXRmhhQmc0eVBZaVdDWFp4QkxFUnNMUlMzRVFrRWZ3Q0tkaldKQXdTS0Nnb0tDY3VkdjRPNVlMcnQ3RXpnWGhpVTMvNCtiMmNrbXdWakpTcEtrUTZ3QWk0Z3doVCt6M3dSQmNFejB5alNzZVVUcmNSeWZzSHNYbUQwQW1iSE9DOUlpOFZJbW51WEJQZ2xIcFE1d3dTVk03c05uVEc3WmE0SndEZENqeHlBaUgzbnlBMm10YVRKdWZpRFo1ZENhcWxJdElMaDFOSGF0Zk41c2t2ang5WjM4bTY5Q2d6dVhtWmdWclBJR0U3NjNKeDlxS3NSb3pXWXc2eE9IZEVSK25uMktrTytCYitVVjVDQk42V0M2UXRCZ2JSVm96cmFoQWJtbTZIdFVzZ3RQQzE5dEZkeFhaWUJPZmtibUZKMVZhSEExVkFIamQwcHA3MG9UWnp2UitFVnJ4MllnZmRzcTZldTU1QkhZUjhobGNraStuK2tFUlVGRzhCckEwQndqZUF2Mk04V0xRQnRjeStTRDZmTnNtbkIzQWxCTHJnVHRWVzFjMlFONGJWV0xBVGFJUzYwSjJEdTV5MVRpSmdqU0J2RlZaZ1Rtd0NVK2RBWkZvUHhHRUVzOG55SEM5QndlMkd2RUp2MldYWmIwdmpkeUZUNEN4azNlL2tJcWxPR29WTHd3UGV2cFlIVCswMFQraFd3WERmNEFKQU9VcVdjRGhid0FBQUFBU1VWT1JLNUNZSUk9IikgIWltcG9ydGFudH0jdG9hc3QtY29udGFpbmVyPi50b2FzdC1lcnJvcntiYWNrZ3JvdW5kLWltYWdlOnVybCgiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCZ0FBQUFZQ0FZQUFBRGdkejM0QUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQURzTUFBQTdEQWNkdnFHUUFBQUhPU1VSQlZFaExyWmEvU2dOQkVNWnpoMFdLQ0NsU0NLYUlZT0VEK0FBS2VRUUxHOEhXenRMQ0ltQnJZYWRnSWRZK2dJS05Za0JGU3d1N0NBb3FDZ2trb0dCSS9FMjhQZGJMWm1lRExnelp6Y3g4My96WjJTU1hDMWo5ZnIrSTFIcTkzZzJ5eEg0aXdNMXZrb0JXQWR4Q21welR4ZmtOMlJjeVpOYUhGSWtTbzEwKzhrZ3hrWElVUlY1SEd4VG1GdWM3NUIyUmZRa3B4SEc4YUFnYUFGYTB0QUhxWUZmUTdJd2UyeWhPRGs4K0o0Qzd5QW9SVFdJM3cvNGtsR1JnUjRsTzdScG45K2d2TXlXcCt1eEZoOCtIK0FSbGdOMW5KdUp1UUFZdk5rRW53R0ZjazE4RXI0cTNlZ0VjL29PK21oTGRLZ1J5aGRORmlhY0MwcmxPQ2JoTlZ6NEg5Rm5BWWdEQnZVM1FJaW9abEpGTEp0c29IWVJEZmlab1V5SXhxQ3RScFZsQU5xMEVVNGRBcGpydGdlelBGYWQ1UzE5V2dqa2MwaE5WbnVGNEhqVkE2QzdRclNJYnlsQitvWmUzYUhnQnNxbE5xS1lINDhqWHlKS011QWJpeVZKOEt6YUIzZVJjMHBnOVZ3UTRuaUZyeUk2OHFpT2kzQWJqd2RzZm5BdGswYkNqVExKS3I2bXJEOWc4aXEvUy9CODFoZ3VPTWxRVG5WeUc0MHdBY2pubWdzQ05FU0Ryam1lN3dmZnRQNFA3U1A0TjNDSlpkdnpvTnlHcTJjL0hXT1hKR3N2VmcrUkEvazJNQy93TjZJMllBMlB0OEdrQUFBQUFTVVZPUks1Q1lJST0iKSAhaW1wb3J0YW50fSN0b2FzdC1jb250YWluZXI+LnRvYXN0LXN1Y2Nlc3N7YmFja2dyb3VuZC1pbWFnZTp1cmwoImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQmdBQUFBWUNBWUFBQURnZHozNEFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFEc01BQUE3REFjZHZxR1FBQUFEc1NVUkJWRWhMWTJBWUJmUU1nZi8vLzNQOCsvZXZBSWd2QS9Gc0lGK0JhdllERFdNQkdyb2FTTU1CaUU4VkM3QVpEcklGYU1GbmlpM0FaVGpVZ3NVVVdVREE4T2RBSDZpUWJRRWh3NEh5R3NQRWNLQlhCSUM0QVJoZXg0RzRCc2ptd2VVMXNvSUZhR2cvV3RvRlpSSVpkRXZJTWh4a0NDalhJVnNBVFY2Z0ZHQUNzNFJzdzBFR2dJSUgzUUpZSmdIU0FSUVpEcldBQitqYXd6Z3MrUTJVTzQ5RDdqblJTUkdvRUZSSUxjZG1FTVdHSTBjbTBKSjJRcFlBMVJEdmNtekpFV2hBQmhEL3BxckwwUzBDV3VBQktnblJraTlsTHNlUzdnMkFscXdIV1FTS0g0b0tMcklMcFJHaEVRQ3cyTGlSVUlhNGx3QUFBQUJKUlU1RXJrSmdnZz09IikgIWltcG9ydGFudH0jdG9hc3QtY29udGFpbmVyPi50b2FzdC13YXJuaW5ne2JhY2tncm91bmQtaW1hZ2U6dXJsKCJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJnQUFBQVlDQVlBQUFEZ2R6MzRBQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBRHNNQUFBN0RBY2R2cUdRQUFBR1lTVVJCVkVoTDVaU3ZUc05RRk1iWFpHSUNNWUdZbUpoQVFJSkFJQ1lRUEFBQ2lTREI4QWlJQ1FRSlQ0Q3FRRXdnSnZZQVNBUUNpWmlZbUpoQUlCQVRDQVJKeSs5clRzbGRkOHNLdTFNMCtkTGIwNTd2Ni9sYnEvMnJLMG1TL1RSTmo5Y1dOQUtQWUlKSUk3Z0l4Q2NRNTFjdnFJRCtHSUVYOEFTRzRCMWJLNWdJWkZlUWZvSmRFWE9mZ1g0UUFRZzdrSDJBNjV5UTg3bHl4YjI3c2dna0F6QXVGaGJiZzFLMmtnQ2tCMWJWd3lJUjltMkw3UFJQSWhEVUlYZ0d0eUt3NTc1eXozbFROczZYNEpYbmpWK0xLTS9tM015ZG5UYnRPS0lqdHo2VmhDQnE0dlNtM25jZHJEMmxrMFZnVVhTVktqVkRKWEp6aWpXMVJRZHNVN0Y3N0hlOHU2OGtvTlpUejhPejV5R2E2SjNIM2xaMHhZZ1hCSzJReW1sV1dBK1JXblloc2tMQnYydm1FK2hCTUN0YkE3S1g1ZHJXeVJULzJKc3FaMkl2ZkI5WTRiV0ROTUZiSlJGbUM5RTc0U29TMENxdWx3amtDMCs1YnBjVjFDWjhOTWVqNHBqeTBVK2RvRFFzR3lvMWh6Vkp0dElqaFE3R25CdFJGTjFVYXJVbEg4RjN4aWN0K0hZMDdyRXpvVUdQbFdjalJGUnI0L2dDaFpnYzNaTDJkOG9BQUFBQVNVVk9SSzVDWUlJPSIpICFpbXBvcnRhbnR9I3RvYXN0LWNvbnRhaW5lci50b2FzdC10b3AtY2VudGVyPmRpdiwjdG9hc3QtY29udGFpbmVyLnRvYXN0LWJvdHRvbS1jZW50ZXI+ZGl2e3dpZHRoOjMwMHB4O21hcmdpbjphdXRvfSN0b2FzdC1jb250YWluZXIudG9hc3QtdG9wLWZ1bGwtd2lkdGg+ZGl2LCN0b2FzdC1jb250YWluZXIudG9hc3QtYm90dG9tLWZ1bGwtd2lkdGg+ZGl2e3dpZHRoOjk2JTttYXJnaW46YXV0b30udG9hc3R7YmFja2dyb3VuZC1jb2xvcjojMDMwMzAzfS50b2FzdC1zdWNjZXNze2JhY2tncm91bmQtY29sb3I6IzUxYTM1MX0udG9hc3QtZXJyb3J7YmFja2dyb3VuZC1jb2xvcjojYmQzNjJmfS50b2FzdC1pbmZve2JhY2tncm91bmQtY29sb3I6IzJmOTZiNH0udG9hc3Qtd2FybmluZ3tiYWNrZ3JvdW5kLWNvbG9yOiNmODk0MDZ9LnRvYXN0LXByb2dyZXNze3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MDtib3R0b206MDtoZWlnaHQ6NHB4O2JhY2tncm91bmQtY29sb3I6IzAwMDtvcGFjaXR5Oi40Oy1tcy1maWx0ZXI6YWxwaGEob3BhY2l0eT00MCk7ZmlsdGVyOmFscGhhKG9wYWNpdHk9NDApfUBtZWRpYSBhbGwgYW5kIChtYXgtd2lkdGg6MjQwcHgpeyN0b2FzdC1jb250YWluZXI+ZGl2e3BhZGRpbmc6OHB4IDhweCA4cHggNTBweDt3aWR0aDoxMWVtfSN0b2FzdC1jb250YWluZXIgLnRvYXN0LWNsb3NlLWJ1dHRvbntyaWdodDotMC4yZW07dG9wOi0wLjJlbX19QG1lZGlhIGFsbCBhbmQgKG1pbi13aWR0aDoyNDFweCkgYW5kIChtYXgtd2lkdGg6NDgwcHgpeyN0b2FzdC1jb250YWluZXI+ZGl2e3BhZGRpbmc6OHB4IDhweCA4cHggNTBweDt3aWR0aDoxOGVtfSN0b2FzdC1jb250YWluZXIgLnRvYXN0LWNsb3NlLWJ1dHRvbntyaWdodDotMC4yZW07dG9wOi0wLjJlbX19QG1lZGlhIGFsbCBhbmQgKG1pbi13aWR0aDo0ODFweCkgYW5kIChtYXgtd2lkdGg6NzY4cHgpeyN0b2FzdC1jb250YWluZXI+ZGl2e3BhZGRpbmc6MTVweCAxNXB4IDE1cHggNTBweDt3aWR0aDoyNWVtfX0KLyoqIC9jc3MvdmVoaWNsZUZlYXR1cmVTdW1tYXJ5LnByZWxvYWQuY3NzICoqLwoudmRwRmVhdHVyZVN1bW1hcnl7IC0tc3dpdGNoLWJwOjUwcmVtOyBib3JkZXItY29sb3I6I2NjY2NjYzsgY2xlYXI6Ym90aDsgfSAudnNmaUl0ZW1TdW1tYXJ5IHsgZm9udC13ZWlnaHQ6NzAwOyBmb250LXNpemU6MS4ycmVtOyB9IC52ZHBGZWF0dXJlQ29uc3VtcHRpb257IGRpc3BsYXk6ZmxleDsgZmxleC13cmFwOndyYXA7IH0gLnZkcEZlYXR1cmVDb25zdW1wdGlvbiA+ICp7IGZsZXg6MSAxIDMxJTsgbWluLXdpZHRoOjlyZW07IH0gI3RvcEZlYXR1cmVUaXRsZSB7IGJveC1zaXppbmc6Ym9yZGVyLWJveDsgfQovKiogL2Nzcy9rYy5mYWIuY3NzICoqLwojY29udGFpbmVyRmxCIHsgbWFyZ2luOjA7IHdpZHRoOjYwcHg7IGhlaWdodDo2MHB4OyBwb3NpdGlvbjpmaXhlZDtib3R0b206MjBweDtyaWdodDoxMHB4O30gI2NpcmNsZUZsQiB7IHBvc2l0aW9uOnJlbGF0aXZlOyB3aWR0aDoxMDAlOyBwYWRkaW5nLWJvdHRvbToxMDAlOyBvdmVyZmxvdzpoaWRkZW47IH0gI2NpcmNsZUZsQiB0ZXh0IHsgZm9udC1mYW1pbHk6J0hlbHZldGljYSBOZXVlJywgQXJpYWw7IGZvbnQtc2l6ZToxLjI1cmVtIDsgZm9udC13ZWlnaHQ6Ym9sZDsgfSAjY2lyY2xlRmxCIHN2ZyB7IHBvc2l0aW9uOmFic29sdXRlOyBsZWZ0OjA7IHRvcDowOyB3aWR0aDoxMDAlOyBoZWlnaHQ6MTAwJTsgLXdlYmtpdC1hbmltYXRpb24tbmFtZTpyb3RhdGU7IC1tb3otYW5pbWF0aW9uLW5hbWU6cm90YXRlOyAtbXMtYW5pbWF0aW9uLW5hbWU6cm90YXRlOyAtby1hbmltYXRpb24tbmFtZTpyb3RhdGU7IGFuaW1hdGlvbi1uYW1lOnJvdGF0ZTsgLXdlYmtpdC1hbmltYXRpb24tZHVyYXRpb246NXM7IC1tb3otYW5pbWF0aW9uLWR1cmF0aW9uOjVzOyAtbXMtYW5pbWF0aW9uLWR1cmF0aW9uOjVzOyAtby1hbmltYXRpb24tZHVyYXRpb246NXM7IGFuaW1hdGlvbi1kdXJhdGlvbjo1czsgLXdlYmtpdC1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50OmluZmluaXRlOyAtbW96LWFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6aW5maW5pdGU7IC1tcy1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50OmluZmluaXRlOyAtby1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50OmluZmluaXRlOyBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OmluZmluaXRlOyAtd2Via2l0LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246bGluZWFyOyAtbW96LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246bGluZWFyOyAtbXMtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjpsaW5lYXI7IC1vLWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246bGluZWFyOyBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOmxpbmVhcjsgfSBALXdlYmtpdC1rZXlmcmFtZXMgcm90YXRlIHsgZnJvbSB7IC13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgwKTsgfSB0byB7IC13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgzNjBkZWcpOyB9IH0gQC1tb3ota2V5ZnJhbWVzIHJvdGF0ZSB7IGZyb20geyAtbW96LXRyYW5zZm9ybTpyb3RhdGUoMCk7IH0gdG8geyAtbW96LXRyYW5zZm9ybTpyb3RhdGUoMzYwZGVnKTsgfSB9IEAtbXMta2V5ZnJhbWVzIHJvdGF0ZSB7IGZyb20geyAtbXMtdHJhbnNmb3JtOnJvdGF0ZSgwKTsgfSB0byB7IC1tcy10cmFuc2Zvcm06cm90YXRlKDM2MGRlZyk7IH0gfSBALW8ta2V5ZnJhbWVzIHJvdGF0ZSB7IGZyb20geyAtby10cmFuc2Zvcm06cm90YXRlKDApOyB9IHRvIHsgLW8tdHJhbnNmb3JtOnJvdGF0ZSgzNjBkZWcpOyB9IH0gQGtleWZyYW1lcyByb3RhdGUgeyBmcm9tIHsgdHJhbnNmb3JtOnJvdGF0ZSgwKTsgfSB0byB7IHRyYW5zZm9ybTpyb3RhdGUoMzYwZGVnKTsgfSB9ICNzaWduRmxCeyBjb2xvcjojZmZmO3Bvc2l0aW9uOnJlbGF0aXZlO3RvcDotNDdweDtsZWZ0OjE5cHg7Zm9udC1zaXplOjIuMTg4cmVtIDsgei1pbmRleDo5OTk5OTk7IH0KLyoqIC9jc3MvY29udGFjdFBvcHVwLmNzcyAqKi8KI2NvbnRhY3Rwb3B1cCB7IHdpZHRoOjU5OHB4OyBtaW4td2lkdGg6MjMwcHg7IH0gI2NvbnRhY3Rwb3B1cC5tb2JpbGUgeyB3aWR0aDoxMDAlOyB9IC5jb250YWN0cG9wdXAubW9iaWxlIHRhYmxlLmpxVHJhbnNmb3JtVGV4dGFyZWEsIC5jb250YWN0cG9wdXAubW9iaWxlIHRhYmxlLmpxVHJhbnNmb3JtVGV4dGFyZWEgdGV4dGFyZWEuanF0cmFuc2Zvcm1kb25lIHsgd2lkdGg6MTAwJTsgfSAuY29udGFjdHBvcHVwLm1vYmlsZSB0YWJsZS5qcVRyYW5zZm9ybVRleHRhcmVhIHRkLmpxVHJhbnNmb3JtVGV4dGFyZWEtbWwsIC5jb250YWN0cG9wdXAubW9iaWxlIHRhYmxlLmpxVHJhbnNmb3JtVGV4dGFyZWEgdGQuanFUcmFuc2Zvcm1UZXh0YXJlYS1tciB7IGRpc3BsYXk6bm9uZTsgfSAjY29udGFjdHBvcHVwICogeyBib3gtc2l6aW5nOmJvcmRlci1ib3g7IH0gI2NvbnRhY3Rwb3B1cC5yZXZlYWwtbW9kYWwgeyBwYWRkaW5nOjA7IH0gI2NvbnRhY3Rwb3B1cC5yZXZlYWwtbW9kYWwgLmNsb3NlLXJldmVhbC1tb2RhbCB7IGRpc3BsYXk6bm9uZTsgfSAjY29udGFjdHBvcHVwIC5jb250YWN0cG9wdXAtYm9keSB7IGJhY2tncm91bmQtY29sb3I6d2hpdGU7IHBhZGRpbmc6MzBweCAxMHB4IDEwcHg7IH0gLmNvbnRhY3Rwb3B1cC1ib2R5IGlucHV0IHsgd2lkdGg6MTAwJTsgfSAuY29udGFjdHBvcHVwLWJvZHkgLmRpdkJsb2NrUm93Om5vdCg6bGFzdC1jaGlsZCkgLmRpdlNwYW4geyBtYXJnaW4tYm90dG9tOjE1cHg7IH0gLmNvbnRhY3Rwb3B1cC1ib2R5IC5kaXZCbG9ja1JvdyAuZGl2U3BhbjY6Zmlyc3QtY2hpbGQgeyBwYWRkaW5nLXJpZ2h0OjE1cHg7IH0gLmNvbnRhY3Rwb3B1cC1ib2R5IC5kaXZCbG9ja1JvdyAuZGl2U3BhbjY6bGFzdC1jaGlsZCB7IHBhZGRpbmctbGVmdDoxNXB4OyB9IC5jb250YWN0cG9wdXAtYm9keSAuZGl2QmxvY2tSb3cgLmRpdlNwYW42IC5qcVRyYW5zZm9ybUlucHV0V3JhcHBlciB7IG1heC13aWR0aDoyNzRweCAhaW1wb3J0YW50OyB9IC5jb250YWN0cG9wdXAtaGVhZGVyIHsgYm9yZGVyLXJhZGl1czo1cHggNXB4IDAgMDsgcGFkZGluZzoxNXB4IDE1cHggMzBweCAxNXB4OyB0ZXh0LWFsaWduOmNlbnRlcjsgcG9zaXRpb246cmVsYXRpdmU7IC13ZWJraXQtYm94LXNoYWRvdzowIDAgMTBweCAycHggcmdiYSgwLDAsMCwwLjMpOyAtbW96LWJveC1zaGFkb3c6MCAwIDEwcHggMnB4IHJnYmEoMCwwLDAsMC4zKTsgYm94LXNoYWRvdzowIDAgMTBweCAycHggcmdiYSgwLDAsMCwwLjMpOyBmb250LXNpemU6MS42MjVyZW0gOyBjb2xvcjojMmMyYzJjOyBiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmY7IH0gLmNvbnRhY3Rwb3B1cC1oZWFkZXI6OmFmdGVyIHsgY29udGVudDoiIjsgcG9zaXRpb246YWJzb2x1dGU7IGJvdHRvbTotMTVweDsgbGVmdDo1MCU7IC13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZSgtNTAlKTsgLW1vei10cmFuc2Zvcm06dHJhbnNsYXRlKC01MCUpOyAtbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZSgtNTAlKTsgLW8tdHJhbnNmb3JtOnRyYW5zbGF0ZSgtNTAlKTsgdHJhbnNmb3JtOnRyYW5zbGF0ZSgtNTAlKTsgYm9yZGVyLWxlZnQ6MzBweCBzb2xpZCB0cmFuc3BhcmVudDsgYm9yZGVyLXJpZ2h0OjMwcHggc29saWQgdHJhbnNwYXJlbnQ7IGJvcmRlci10b3A6MTVweCBzb2xpZCAjZmZmZmZmOyB9IC5jb250YWN0cG9wdXAtaGVhZGVyIC5mYS10aW1lcyB7IHBvc2l0aW9uOmFic29sdXRlOyByaWdodDowLjVyZW07IHRvcDowLjVyZW07IGZvbnQtc2l6ZTppbml0aWFsOyB9IC5jb250YWN0cG9wdXAtaGVhZGVyIC5mYS10aW1lczpob3ZlciB7IGN1cnNvcjpwb2ludGVyOyB9IC5jb250YWN0cG9wdXAtaGVhZGVyIC5oZWFkZXItcmVwbGFjZSB7IGRpc3BsYXk6aW5saW5lLWJsb2NrOyB9IGJ1dHRvbi5jb250YWN0LXN1Ym1pdCB7IHBhZGRpbmc6MTBweCAxNXB4OyBkaXNwbGF5OmJsb2NrOyBmbG9hdDpsZWZ0OyB3aWR0aDoxMDAlOyBib3JkZXItY29sb3I6IzJjMmMyYzsgYmFja2dyb3VuZDojZmZmZmZmOyB0cmFuc2l0aW9uOmFsbCAwLjI1czsgY29sb3I6IzJjMmMyYzsgZm9udC13ZWlnaHQ6NjAwOyBtYXJnaW46MDsgYm9yZGVyOjFweCBzb2xpZDsgdGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlOyBib3JkZXItcmFkaXVzOjNweDsgZm9udC1zaXplOjEuNTYzcmVtIDsgfSAuY29udGFjdC1zdWJtaXQ6aG92ZXIgeyBjdXJzb3I6cG9pbnRlcjsgYm9yZGVyLWNvbG9yOiMyYzJjMmM7IGJhY2tncm91bmQtY29sb3I6I2VlZWVlZTsgY29sb3I6IzJjMmMyYzsgfSAuY29udGFjdHBvcHVwLWZvb3RlciB7IH0gLmNvbnRhY3Rwb3B1cC1mb290ZXIgLmJ0bi13cmFwcGVyIHsgcGFkZGluZzoxMHB4OyB9ICNjb250YWN0cG9wdXAgLmpxVHJhbnNmb3JtSW5wdXRJbm5lciBkaXYgeyBoZWlnaHQ6MzBweDsgfSAjY29udGFjdHBvcHVwIC5qcVRyYW5zZm9ybUlucHV0SW5uZXIgZGl2LnZhbGlkaXR5LWVycm9uZW91cyB7IHdpZHRoOmluaGVyaXQ7IH0KLyoqIC9jc3MvZGl2X3RhYmxlcy5jc3MgKiovCmRpdi5kaXZUYWJsZVZpZXd7IGZsb2F0OmxlZnQ7IHdpZHRoOjEwMCU7IH0gZGl2LmRpdlRhYmxlVmlldyBkaXYuZGl2VGFibGVXcmFwZXJ7IH0gZGl2LmRpdlRhYmxlVmlldyBkaXYuZGl2VGl0bGV7IGRpc3BsYXk6YmxvY2s7IGZvbnQtd2VpZ2h0OmJvbGQ7IHRleHQtYWxpZ246bGVmdDsgZm9udC1zaXplOjAuOTM4cmVtIDsgcGFkZGluZzozMHB4IDBweCAxMHB4IDEwcHg7IGNvbG9yOiMyYzJjMmM7IHRleHQtZGVjb3JhdGlvbjpub25lOyB0ZXh0LXRyYW5zZm9ybTp2YXIoLS10eHQtdXBwZXIpOyBoZWlnaHQ6YXV0bzsgfSBkaXYuZGl2VGFibGVWaWV3IGRpdi5kaXZUYWJsZU91dGVyeyBib3JkZXI6MXB4IHNvbGlkICNkZGQ7IHBhZGRpbmc6MDsgYm9yZGVyLXJhZGl1czo4cHg7IG1hcmdpbjowOyBiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LCAyNTUsIDI1NSwgMC43NSk7IG92ZXJmbG93OmhpZGRlbjsgfSBkaXYuZGl2VGFibGVWaWV3IGRpdi5kaXZUYWJsZXsgZGlzcGxheTp0YWJsZTsgd2lkdGg6MTAwJTsgcGFkZGluZzowOyBtYXJnaW46MDsgfSBkaXYuZGl2VGFibGVWaWV3IGRpdi5kaXZIZWFkaW5neyBkaXNwbGF5OnRhYmxlLXJvdzsgZm9udC13ZWlnaHQ6aW5pdGlhbDsgdGV4dC1hbGlnbjpjZW50ZXI7IGZvbnQtd2VpZ2h0OmJvbGQ7IGhlaWdodDo0NXB4OyB9IGRpdi5kaXZUYWJsZVZpZXcgZGl2LmRpdlJvd3sgZGlzcGxheTp0YWJsZS1yb3c7IHdpZHRoOjEwMCU7IGhlaWdodDo2NXB4OyB9IGRpdi5kaXZUYWJsZVZpZXcgZGl2LmRpdkNlbGx7IGRpc3BsYXk6dGFibGUtY2VsbDsgYm9yZGVyLWJvdHRvbToxcHggc29saWQgI2RkZDsgdGV4dC1hbGlnbjpjZW50ZXI7IHBhZGRpbmc6MTVweCAxNXB4IDI1cHggMTVweDsgYm9yZGVyLXJpZ2h0OjFweCBzb2xpZCAjZGRkOyBjb2xvcjojMmMyYzJjOyBmb250LXNpemU6MC44NzVyZW0gOyB9IGRpdi5kaXZUYWJsZVZpZXcgZGl2LmRpdkNlbGw6bGFzdC1jaGlsZHsgYm9yZGVyLXJpZ2h0OjFweCBzb2xpZCB0cmFuc3BhcmVudDsgfSBkaXYuZGl2VGFibGVWaWV3IGRpdi5kaXZIZWFkaW5nIGRpdi5kaXZDZWxseyBwYWRkaW5nOjEwcHggMTVweDsgYmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwgMjU1LCAyNTUsIDEuMCk7IH0gZGl2LmRpdlRhYmxlVmlldyBkaXYuZGl2SGVhZGluZyBkaXYuZGl2Q2VsbDpudGgtY2hpbGQoZXZlbil7IGJhY2tncm91bmQtY29sb3I6I2VlZTsgfSBkaXYuZGl2VGFibGVWaWV3IGRpdi5kaXZIZWFkaW5nIGRpdi5kaXZDZWxsOmxhc3QtY2hpbGR7IGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOjhweDsgfSBkaXYuZGl2VGFibGVWaWV3IGRpdi5kaXZIZWFkaW5nIGRpdi5kaXZDZWxsOmZpcnN0LWNoaWxkeyBib3JkZXItdG9wLWxlZnQtcmFkaXVzOjhweDsgfSBkaXYuZGl2VGFibGVWaWV3IGRpdi5kaXZSb3c6bGFzdC1jaGlsZCBkaXYuZGl2Q2VsbHsgYm9yZGVyLWJvdHRvbTowcHg7IH0gZGl2LmRpdlRhYmxlVmlldyBkaXYuZGl2Um93IGRpdi5kaXZDZWxseyBiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LCAyNTUsIDI1NSwgMC41KTsgfSBkaXYuZGl2VGFibGVWaWV3IGRpdi5kaXZSb3cgZGl2LmRpdkNlbGw6bnRoLWNoaWxkKGV2ZW4peyBiYWNrZ3JvdW5kLWNvbG9yOiNmNmY3Zjg7IH0KLyoqIC9jc3MvZGl2X2Jsb2Nrcy5jc3MgKiovCmRpdi5kaXZCbG9ja1ZpZXd7IGRpc3BsYXk6YmxvY2s7IGZsb2F0OmxlZnQ7IHdpZHRoOjEwMCU7IH0gZGl2LmRpdkJsb2NrVmlldyBkaXYuZGl2QmxvY2tUaXRsZSwgZGl2LmRpdkJsb2NrVmlldyBsYWJlbC5kaXZCbG9ja1RpdGxleyBkaXNwbGF5OmJsb2NrOyBmb250LXdlaWdodDpib2xkOyB0ZXh0LWFsaWduOmxlZnQ7IHBhZGRpbmc6MzBweCAxMHB4IDEwcHggMTBweDsgY29sb3I6IzJjMmMyYzsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IHRleHQtdHJhbnNmb3JtOnZhcigtLXR4dC11cHBlcik7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyB9IGRpdi5kaXZCbG9ja1ZpZXcgZGl2LmRpdkJsb2NrVGl0bGUuYmxvY2tUaXRsZVN0eWxlMiwgZGl2LmRpdkJsb2NrVmlldyBsYWJlbC5kaXZCbG9ja1RpdGxlLmJsb2NrVGl0bGVTdHlsZTJ7IHBhZGRpbmc6MCA0MHB4IDEwcHg7IH0gZGl2LmRpdkJsb2NrVmlldyBkaXYuZGl2QmxvY2tDb250ZW50eyBiYWNrZ3JvdW5kOm5vbmU7IHBhZGRpbmc6MTVweCAwcHg7IG1hcmdpbjowOyBmbG9hdDpsZWZ0OyB3aWR0aDoxMDAlOyB9IGRpdi5kaXZCbG9ja1ZpZXcgZGl2LmRpdkJsb2NrQ29udGVudCBkaXYuZGl2QmxvY2tDb2x1bW57IGJhY2tncm91bmQ6bm9uZTsgcGFkZGluZzowIDQwcHg7IG1hcmdpbjowOyB3aWR0aDo4NjBweCAhaW1wb3J0YW50OyBmbG9hdDpsZWZ0OyBmb250LXNpemU6aW5oZXJpdDsgfSBkaXYuZGl2QmxvY2tWaWV3IFVMLmRpdkJsb2NrTGlzdHsgYmFja2dyb3VuZDppbml0aWFsOyBwYWRkaW5nOjA7IG1hcmdpbjowIDAgMjBweCAwOyB9IGRpdi5kaXZCbG9ja1ZpZXcgVUwuZGl2QmxvY2tMaXN0IFVMLmRpdklubmVyQmxvY2tMaXN0IHsgcGFkZGluZzoxMHB4IDAgMCAwOyB9IGRpdi5kaXZCbG9ja1ZpZXcgVUwuZGl2QmxvY2tMaXN0LnNpemVGb3I0Q29sdW1uc0xpc3R7IH0gZGl2LmRpdkJsb2NrVmlldyBVTC5kaXZCbG9ja0xpc3Q6bm90KC5zaXplRm9yNENvbHVtbnNMaXN0KTpudGgtY2hpbGQoM24rMSksIGRpdi5kaXZCbG9ja1ZpZXcgVUwuZGl2QmxvY2tMaXN0LnNpemVGb3I0Q29sdW1uc0xpc3Q6bnRoLWNoaWxkKDRuKzEpeyBjbGVhcjpsZWZ0OyB9IGRpdi5kaXZCbG9ja1ZpZXcgVUwuZGl2QmxvY2tMaXN0IGRpdi5kaXZCbG9ja0xpc3RUaXRsZXsgYmFja2dyb3VuZDppbml0aWFsOyBwYWRkaW5nOjAgMCAxMHB4IDA7IG1hcmdpbjowOyB3aWR0aDoxMDAlOyBmbG9hdDpsZWZ0OyBmb250LXdlaWdodDpib2xkIH0gZGl2LmRpdkJsb2NrVmlldyBVTC5kaXZCbG9ja0xpc3QgTEkuZGl2TGlzdEl0ZW17IHBhZGRpbmc6MCAzMHB4IDEwcHggMTBweDsgbWFyZ2luOjA7IHRleHQtaW5kZW50OjA7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2Fycm93X3JlZC5wbmcnKSBuby1yZXBlYXQgc2Nyb2xsIDAgNXB4IHRyYW5zcGFyZW50OyB9IGRpdi5kaXZCbG9ja1ZpZXcgVUwuZGl2QmxvY2tMaXN0IExJLmRpdkxpc3RJdGVtID4gQXsgbWFyZ2luOjA7IHBhZGRpbmc6MDsgYmFja2dyb3VuZDpub25lOyBmb250LXNpemU6aW5pdGlhbDsgfSBkaXYuZGl2QmxvY2tWaWV3IFVMLmRpdkJsb2NrTGlzdCBMSS5kaXZMaXN0VGl0bGUyeyBmb250LXNpemU6MS4xZW07IGJvcmRlcjowOyBtYXJnaW46MDsgcGFkZGluZzowIDAgMTBweCAwOyBmb250LXdlaWdodDpib2xkOyBsaXN0LXN0eWxlOm5vbmU7IH0gZGl2LmRpdkJsb2NrVmlldyBVTC5kaXZCbG9ja0xpc3QgTEkuZGl2TGlzdEl0ZW0yeyBwYWRkaW5nOjAgMzBweCAxMHB4IDEwcHg7IHRleHQtaW5kZW50OjA7IGxpc3Qtc3R5bGU6bm9uZSBvdXRzaWRlIG5vbmU7IGRpc3BsYXk6YmxvY2s7IG1hcmdpbjowIDAgMCAxMnB4OyB9IGRpdi5kaXZCbG9ja1ZpZXcgVUwuZGl2QmxvY2tMaXN0IExJLmRpdkxpc3RJdGVtMiAub3RoZXJPcHRpb25MYWJlbHsgZm9udC13ZWlnaHQ6Ym9sZCAhaW1wb3J0YW50OyB9IGRpdi5kaXZCbG9ja1ZpZXcgVUwuZGl2QmxvY2tMaXN0IExJLmRpdkxpc3RJdGVtMjpiZWZvcmV7IGNvbnRlbnQ6IlxmMTM4IjsgZm9udC1mYW1pbHk6J0ZvbnQgQXdlc29tZSA1IFBybyc7IGZvbnQtd2VpZ2h0OjkwMDsgbWFyZ2luLXJpZ2h0OjA7IG1hcmdpbi1sZWZ0Oi0yMXB4OyBwYWRkaW5nLXJpZ2h0OjVweDsgZm9udC1zaXplOjAuODc1cmVtIDsgfSBkaXYuZGl2QmxvY2tWaWV3IFVMLmRpdkJsb2NrTGlzdCBVTC5kaXZJbm5lckJsb2NrTGlzdCBMSS5kaXZMaXN0SXRlbTI6YmVmb3JleyBmb250LXdlaWdodDpub3JtYWw7IH0gZGl2LmRpdkJsb2NrVmlldyBVTC5kaXZCbG9ja0xpc3QgVUwuZGl2SW5uZXJCbG9ja0xpc3QgTEkgeyBwYWRkaW5nOjAgMzBweCAxMHB4IDEwcHg7IH0gZGl2LmRpdkJsb2NrVmlldyBVTC5kaXZCbG9ja0xpc3QgTEkuZGl2TGlzdEl0ZW0ubm9TdHlsZUl0ZW17IHBhZGRpbmc6MCAwIDVweCAwOyBtYXJnaW46MDsgdGV4dC1pbmRlbnQ6MDsgYmFja2dyb3VuZDpub25lOyBsaXN0LXN0eWxlOm5vbmU7IH0gZGl2LmRpdkJsb2NrVmlldyBVTC5kaXZCbG9ja0xpc3QgTEkuZGl2TGlzdEl0ZW0ub25TYW1lTGluZXsgcGFkZGluZy1yaWdodDoxNXB4OyBkaXNwbGF5OmlubGluZS10YWJsZTsgfSBkaXYuZGl2QmxvY2tWaWV3IFVMLmRpdkJsb2NrTGlzdCBMSS5kaXZMaXN0SXRlbS5vblNhbWVMaW5lOmxhc3QtY2hpbGR7IHBhZGRpbmctcmlnaHQ6MDsgfSBkaXYuZGl2QmxvY2tWaWV3IGRpdi5kaXZCbG9ja1RhYmxlT3V0ZXJ7IH0gZGl2LmRpdkJsb2NrVmlldyBkaXYuZGl2QmxvY2tUYWJsZXsgZGlzcGxheTp0YWJsZTsgd2lkdGg6MTAwJTsgcGFkZGluZzowOyBtYXJnaW46MDsgfSBkaXYuZGl2QmxvY2tWaWV3IGRpdi5kaXZCbG9ja1Jvd3sgZGlzcGxheTp0YWJsZS1yb3c7IHdpZHRoOjEwMCU7IH0gZGl2LmRpdkJsb2NrVmlldyBkaXYuZGl2QmxvY2tDZWxseyBkaXNwbGF5OnRhYmxlLWNlbGw7IH0gZGl2LmRpdkRpc2NsYWltZXJCbG9ja3sgYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1nZW5lcmFsLWJnLWNvbG9yKTsgYm9yZGVyLXJhZGl1czozcHg7IH0gQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOjEzMDFweCkgeyBib2R5LmlzRnVsbFdpZHRoUGFnZS5pc1BhZ2VGdWxsV2lkdGhFbmFibGVkIGRpdi5kaXZCbG9ja1ZpZXcgZGl2LmRpdkJsb2NrQ29udGVudCBkaXYuZGl2QmxvY2tDb2x1bW4geyB3aWR0aDoxMTAwcHggIWltcG9ydGFudDsgfSB9Ci8qKiAvY3NzL2Zvcm1zL2Zvcm1zLnByZWxvYWQuY3NzICoqLwouZDJjZm9ybSB7IC0tbGFiZWwtcmVxdWlyZWQtc3ltYm9sOiIqIjsgLS1sYWJlbC1yZXF1aXJlZC1jb2xvcjojRkYwMDAwOyAtLWlucHV0LXBhZGRpbmc6dmFyKC0tcy0xKSB2YXIoLS1zMSk7IC0taW5wdXQtYmctY29sb3I6dmFyKC0td2hpdGUpOyAtLWlucHV0LWJvcmRlci1jb2xvcjp2YXIoLS1taWQtZ3JheSk7IC0taW5wdXQtcmFkaXVzOnZhcigtLXMtNik7IC0taW5wdXQtZm9udC1zaXplOnZhcigtLWZzMCk7IC0taW5wdXQtbGluZS1oZWlnaHQ6dmFyKC0tZnMyKTsgfSAuZDJjZm9ybSAqIHsgYm94LXNpemluZzpib3JkZXItYm94OyB9IC5kMmNmb3JtIGJveC1sYyB7IC0tc3BhY2U6dmFyKC0tcy00KTsgcGFkZGluZy1sZWZ0OjA7IHBhZGRpbmctcmlnaHQ6MDsgZGlzcGxheTpmbGV4OyBmbGV4LWRpcmVjdGlvbjpjb2x1bW47IGFsaWduLWl0ZW1zOmZsZXgtc3RhcnQ7IH0gLmQyY2Zvcm0tLXRoaW4gYm94LWxjIHsgLS1zcGFjZTp2YXIoLS1zLTkpOyB9IC5kMmNmb3JtLS1yb3cgc3RhY2stbGMgeyBmbGV4LWRpcmVjdGlvbjpyb3c7IGZsZXgtd3JhcDp3cmFwOyB9IC5kMmNmb3JtLS1yb3cgYm94LWxjIHsgcGFkZGluZy1yaWdodDp2YXIoLS1zcGFjZSk7IHBhZGRpbmctbGVmdDp2YXIoLS1zcGFjZSk7IH0gLmQyY2Zvcm0tLWhvcml6b250YWwgYm94LWxjIHsgZmxleC1kaXJlY3Rpb246cm93OyBhbGlnbi1pdGVtczpmbGV4LXN0YXJ0OyB9IC5kMmNmb3JtLS1ob3Jpem9udGFsIGJveC1sYyBsYWJlbCB7IG1pbi13aWR0aDoxMTVweDsgd2lkdGg6MzAlOyBwYWRkaW5nLXJpZ2h0OnZhcigtLXMpOyBtYXJnaW4tdG9wOnZhcigtLXMxKTsgbWFyZ2luLWJvdHRvbTowOyB9IC5kMmNmb3JtIGxhYmVsOmhhcyhbcmVxdWlyZWRdKSBzcGFuOmFmdGVyeyBjb2xvciA6dmFyKC0tbGFiZWwtcmVxdWlyZWQtY29sb3IpOyBjb250ZW50IDp2YXIoLS1sYWJlbC1yZXF1aXJlZC1zeW1ib2wpOyBwYWRkaW5nLWxlZnQgOnZhcigtLXMtNik7IH0gLmQyY2Zvcm0gbGFiZWw6bm90KC5maW5hbmNlQ2FsYyksIC5kMmNmb3JtIC5sYWJlbDpub3QoLmZpbmFuY2VDYWxjKSB7IG1hcmdpbi1ib3R0b206dmFyKC0tcy0zKTsgZm9udC1zaXplOnZhcigtLWlucHV0LWZvbnQtc2l6ZSk7IGxpbmUtaGVpZ2h0OnZhcigtLWlucHV0LWxpbmUtaGVpZ2h0KTsgZm9udC13ZWlnaHQ6NDAwOyB9IC5kMmNmb3JtIGxhYmVsLi0tcmVxdWlyZWQ6bm90KC50eHQtcmlnaHQpOmFmdGVyLCAuZDJjZm9ybSAubGFiZWwuLS1yZXF1aXJlZDpub3QoLnR4dC1yaWdodCk6YWZ0ZXIsIC5kMmNmb3JtIGxhYmVsLi1yZXF1aXJlZDpub3QoLnR4dC1yaWdodCk6YWZ0ZXIsIC5kMmNmb3JtIC5sYWJlbC4tcmVxdWlyZWQ6bm90KC50eHQtcmlnaHQpOmFmdGVyIHsgY29sb3IgOnZhcigtLWxhYmVsLXJlcXVpcmVkLWNvbG9yKTsgY29udGVudCA6dmFyKC0tbGFiZWwtcmVxdWlyZWQtc3ltYm9sKTsgcGFkZGluZy1sZWZ0IDp2YXIoLS1zLTYpOyB9IC5kMmNmb3JtIGxhYmVsLi0tcmVxdWlyZWQudHh0LXJpZ2h0OmJlZm9yZSwgLmQyY2Zvcm0gLmxhYmVsLi0tcmVxdWlyZWQudHh0LXJpZ2h0OmJlZm9yZSwgLmQyY2Zvcm0gbGFiZWwuLXJlcXVpcmVkLnR4dC1yaWdodDpiZWZvcmUsIC5kMmNmb3JtIC5sYWJlbC4tcmVxdWlyZWQudHh0LXJpZ2h0OmJlZm9yZSB7IGNvbG9yIDp2YXIoLS1sYWJlbC1yZXF1aXJlZC1jb2xvcik7IGNvbnRlbnQgOnZhcigtLWxhYmVsLXJlcXVpcmVkLXN5bWJvbCk7IHBhZGRpbmctcmlnaHQgOnZhcigtLXMtNik7IH0gLmQyY2Zvcm0gOndoZXJlKGlucHV0Om5vdChbdHlwZT1zdWJtaXRdLC5wYXltZW50Q2FsY3VsYXRvckRvd25QYXltZW50KTpub3QoW3R5cGU9InJhZGlvIl0pOm5vdChbdHlwZT0iY2hlY2tib3giXSkpLCAuZDJjZm9ybSBzZWxlY3Q6bm90KC5wYXltZW50Q2FsY3VsYXRvckludGVydmFsLC5wYXltZW50Q2FsY3VsYXRvckttQWxsb3dhbmNlLC5maW5hbmNlTXVsdGlzdGVwVXNlZENhbGN1bGF0b3IgLmNhbGMtZm9ybSBzZWxlY3QpLCAuZDJjZm9ybSB0ZXh0YXJlYSB7IHdpZHRoOjEwMCU7IHBhZGRpbmc6dmFyKC0taW5wdXQtcGFkZGluZyk7IGJhY2tncm91bmQtY29sb3I6dmFyKC0taW5wdXQtYmctY29sb3IpOyBib3JkZXItcmFkaXVzOnZhcigtLWlucHV0LXJhZGl1cyk7IGJvcmRlcjoxcHggc29saWQgdmFyKC0taW5wdXQtYm9yZGVyLWNvbG9yKTsgY29sb3I6IzIxMjUyOTsgZm9udC1zaXplOnZhcigtLWlucHV0LWZvbnQtc2l6ZSk7IGxpbmUtaGVpZ2h0OnZhcigtLWlucHV0LWxpbmUtaGVpZ2h0KTsgZm9udC13ZWlnaHQ6NDAwOyB9IC5kMmNmb3JtIGlucHV0Om5vdChbdHlwZT1zdWJtaXRdKTpub3QoW3R5cGU9InJhZGlvIl0pOm5vdChbdHlwZT0iY2hlY2tib3giXSksIC5kMmNmb3JtIHNlbGVjdCB7IGhlaWdodDozNXB4OyB9IC5kMmNmb3JtIC5pbnZhbGlkID4gOmlzKGlucHV0LHNlbGVjdCx0ZXh0YXJlYSl7IGJhY2tncm91bmQtY29sb3I6I2ZhZDZkYzsgfSAuZDJjZm9ybSBpbnB1dDpkaXNhYmxlZCwgLmQyY2Zvcm0gaW5wdXQuZGlzYWJsZWQgeyBiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjM5LCAyMzksIDIzOSwgMC4zKTsgY29sb3I6cmdiKDg0LCA4NCwgODQpOyBib3JkZXItY29sb3I6cmdiYSgxMTgsIDExOCwgMTE4LCAwLjMpOyBjdXJzb3I6bm90LWFsbG93ZWQ7IH0gLmQyY2Zvcm0gaW5wdXQudHh0LXVwcGVyIHsgdGV4dC10cmFuc2Zvcm06bm9uZTsgfSAuZDJjZm9ybSBpbnB1dC50eHQtdXBwZXI6OnBsYWNlaG9sZGVyIHsgdGV4dC10cmFuc2Zvcm06dmFyKC0tdHh0LXVwcGVyLCB1cHBlcmNhc2UpOyB9IC5kMmNmb3JtIC5pbnB1dC1pY29uLWxlZnQsIC5kMmNmb3JtIC5pbnB1dC1pY29uLXJpZ2h0IHsgcG9zaXRpb246cmVsYXRpdmU7IH0gLmQyY2Zvcm0gLmlucHV0LWljb24geyBwb3NpdGlvbjphYnNvbHV0ZTsgei1pbmRleDoxOyB0b3A6dmFyKC0tczEpOyBmb250LXNpemU6dmFyKC0taW5wdXQtZm9udC1zaXplKTsgbGluZS1oZWlnaHQ6dmFyKC0taW5wdXQtbGluZS1oZWlnaHQpOyBjb2xvcjp2YXIoLS1kYXJrLWdyYXkpOyB9IC5kMmNmb3JtIC5pbnB1dC1pY29uLXJpZ2h0IC5pbnB1dC1pY29uIHsgcmlnaHQ6dmFyKC0tczQpOyB9IC5kMmNmb3JtIC5pbnB1dC1pY29uLWxlZnQgLmlucHV0LWljb24geyBsZWZ0OnZhcigtLXM0KTsgfSAuZDJjZm9ybSAuaW5wdXQtaWNvbi1sZWZ0IGlucHV0IHsgcGFkZGluZy1sZWZ0OnZhcigtLXM5KTsgfSAuZDJjZm9ybSAuc2VwYXJhdG9yIHsgd2lkdGg6MTAwJTsgYm9yZGVyLXRvcDoxcHggc29saWQgI2Q0ZDRkNDsgbWFyZ2luLXRvcDp2YXIoLS1zNyk7IG1hcmdpbi1ib3R0b206dmFyKC0tczcpOyB9IC5kMmNmb3JtIC5yYWRpby1pbmxpbmUgeyBkaXNwbGF5OmZsZXg7IHdpZHRoOjEwMCU7IH0gLmQyY2Zvcm0gLmNoZWNrYm94LWxpc3QgeyBkaXNwbGF5OmZsZXg7IGZsZXgtZGlyZWN0aW9uOmNvbHVtbjsgbWFyZ2luLWJvdHRvbTp2YXIoLS1zLTMpOyB9IC5kMmNmb3JtIC5jaGVja2JveC1saXN0ID4gKiB7IG1hcmdpbi1ib3R0b206MDsgfSAuZDJjZm9ybSAubXVsdGlwbGUtaW5wdXQgeyBkaXNwbGF5OmZsZXg7IHdpZHRoOjEwMCU7IH0gLmQyY2Zvcm0gLm11bHRpcGxlLWlucHV0ID4gKjpub3QoOmxhc3Qtb2YtdHlwZSkgeyBtYXJnaW4tcmlnaHQ6dmFyKC0tczEpOyB9IC5kMmNmb3JtIC5pbnB1dC1ncm91cCB7IGRpc3BsYXk6ZmxleDsgd2lkdGggOjEwMCU7IH0gLmQyY2Zvcm0gLmlucHV0LWdyb3VwIC5pbnB1dC1ncm91cC10ZXh0IHsgZGlzcGxheTpmbGV4OyBhbGlnbi1pdGVtczpjZW50ZXI7IHBhZGRpbmc6dmFyKC0taW5wdXQtcGFkZGluZyk7IGJhY2tncm91bmQ6dmFyKC0tbGlnaHQtZ3JheSk7IGJvcmRlcjoxcHggc29saWQgdmFyKC0taW5wdXQtYm9yZGVyLWNvbG9yKTsgYm9yZGVyLXJhZGl1czp2YXIoLS1pbnB1dC1yYWRpdXMpOyBmb250LXNpemU6dmFyKC0taW5wdXQtZm9udC1zaXplKTsgbGluZS1oZWlnaHQ6dmFyKC0taW5wdXQtbGluZS1oZWlnaHQpOyB3aGl0ZS1zcGFjZTpub3dyYXA7IH0gLmQyY2Zvcm0gLmlucHV0LWdyb3VwID4gOm5vdCg6Zmlyc3QtY2hpbGQpIHsgYm9yZGVyLWxlZnQ6MDsgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czowICFpbXBvcnRhbnQ7IGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6MCAhaW1wb3J0YW50OyB9IC5kMmNmb3JtIC5pbnB1dC1ncm91cCA+IDpub3QoOmxhc3QtY2hpbGQpIHsgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6MCAhaW1wb3J0YW50OyBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czowICFpbXBvcnRhbnQ7IH0gQG1lZGlhIChtYXgtd2lkdGg6OTgwcHgpIHsgLmQyY2Zvcm0tLWhvcml6b250YWwgYm94LWxjIGxhYmVsIHsgbWluLXdpZHRoOjg1cHg7IH0gfQovKiogL2Nzcy9mb3Jtcy9mb3Jtcy5jc3MgKiovCi5kMmNmb3JtIGlucHV0Om5vdChbdHlwZT1zdWJtaXRdKTpub3QoW3R5cGU9InJhZGlvIl0pOm5vdChbdHlwZT0iY2hlY2tib3giXSksIC5kMmNmb3JtIHNlbGVjdCwgLmQyY2Zvcm0gdGV4dGFyZWEgeyB0cmFuc2l0aW9uOmJvcmRlci1jb2xvciAuMTVzIGVhc2UtaW4tb3V0LGJveC1zaGFkb3cgLjE1cyBlYXNlLWluLW91dDsgfSAuZDJjZm9ybSBpbnB1dDpub3QoW3R5cGU9c3VibWl0XSk6bm90KFt0eXBlPSJyYWRpbyJdKTpub3QoW3R5cGU9ImNoZWNrYm94Il0pOmZvY3VzLCAuZDJjZm9ybSBzZWxlY3Q6Zm9jdXMsIC5kMmNmb3JtIHRleHRhcmVhOmZvY3VzIHsgYm9yZGVyLWNvbG9yOiM4NmI3ZmU7IG91dGxpbmU6MDsgYm94LXNoYWRvdzowIDAgMCAwLjJyZW0gcmdiKDEzIDExMCAyNTMgLyAyNSUpOyB9IC5kMmNmb3JtIC5pbnB1dC1ncm91cCBpbnB1dDpub3QoW3R5cGU9c3VibWl0XSk6bm90KFt0eXBlPSJyYWRpbyJdKTpub3QoW3R5cGU9ImNoZWNrYm94Il0pOmZvY3VzLCAuZDJjZm9ybSAuaW5wdXQtZ3JvdXAgc2VsZWN0OmZvY3VzLCAuZDJjZm9ybSAuaW5wdXQtZ3JvdXAgdGV4dGFyZWE6Zm9jdXMgeyB6LWluZGV4OjM7IH0gLmQyY2Zvcm0gaW5wdXQudmFsaWRpdHktZXJyb25lb3VzLCAuZDJjZm9ybSBzZWxlY3QudmFsaWRpdHktZXJyb25lb3VzLCAuZDJjZm9ybSB0ZXh0YXJlYS52YWxpZGl0eS1lcnJvbmVvdXMsIC5kMmNmb3JtIC5pbnB1dC1ncm91cCAudmFsaWRpdHktZXJyb25lb3VzICsgLmlucHV0LWdyb3VwLXRleHQgeyBib3JkZXItY29sb3I6I2RjMzU0NSAhaW1wb3J0YW50OyBiYWNrZ3JvdW5kLWNvbG9yOiNmYWQ2ZGMgIWltcG9ydGFudDsgfSAuZDJjZm9ybSBpbnB1dC52YWxpZGl0eS1lcnJvbmVvdXM6OnBsYWNlaG9sZGVyLCAuZDJjZm9ybSB0ZXh0YXJlYS52YWxpZGl0eS1lcnJvbmVvdXM6OnBsYWNlaG9sZGVyLCAuZDJjZm9ybSBzZWxlY3QudmFsaWRpdHktZXJyb25lb3VzLCAuZDJjZm9ybSAuaW5wdXQtZ3JvdXAgLnZhbGlkaXR5LWVycm9uZW91cyArIC5pbnB1dC1ncm91cC10ZXh0IHsgY29sb3I6I2RjMzU0NTsgfQovKiogL2Nzcy9jcmVkaXRTY29yZVBvcHVwLmNzcyAqKi8KI2NyZWRpdFNjb3JlUG9wdXBDb250YWluZXJ7IGJhY2tncm91bmQ6d2hpdGU7IHBhZGRpbmc6MzBweCAyMHB4IDM0cHg7IG1heC13aWR0aDpjYWxjKDEwMHZ3IC0gNDBweCk7IH0gI2NyZWRpdFNjb3JlUG9wdXBDb250YWluZXIgc3BhbnsgbWFyZ2luOjA7IHBhZGRpbmc6MDsgZm9udC1zaXplOjEuMTI1cmVtIDsgfSAjY3JlZGl0U2NvcmVQb3B1cENvbnRhaW5lciBzcGFuLmNyZWRpdFNjb3JlR3JlZW5Db2xvcnsgY29sb3I6IzRkOGYxNDsgZm9udC13ZWlnaHQ6Ym9sZDsgfSAjY3JlZGl0U2NvcmVQb3B1cENvbnRhaW5lciBzcGFuLmNyZWRpdFNjb3JlQm9sZHsgZm9udC13ZWlnaHQ6Ym9sZDsgfSAuY3JlZGl0U2NvcmVfYnRueyBjb2xvcjojZmZmZmZmOyBiYWNrZ3JvdW5kOiMwMDAwMDA7IH0gLmNyZWRpdFNjb3JlSW1hZ2V7IHdpZHRoOjEwMCU7IH0gI2NyZWRpdFNjb3JlUG9wdXBDb250YWluZXIgZGl2LmNyZWRpdFNjb3JlVGl0bGVDb250YWluZXJ7IHRleHQtYWxpZ246Y2VudGVyOyB9ICNjcmVkaXRTY29yZVBvcHVwQ29udGFpbmVyIGRpdi5jcmVkaXRTY29yZVRpdGxleyBmb250LXNpemU6MS4yNXJlbSA7IH0gI2NyZWRpdFNjb3JlUG9wdXBDb250YWluZXIgZGl2LmNyZWRpdFNjb3JlSW1hZ2VDb250YWluZXJ7IHRleHQtYWxpZ246Y2VudGVyOyB9ICNjcmVkaXRTY29yZVBvcHVwQ29udGFpbmVyIHNwYW4uY3JlZGl0U2NvcmVUaXRsZUZyZWV7IGZvbnQtc2l6ZToyLjgxM3JlbSA7IHRleHQtc2hhZG93OjJweCAwOyB9ICNjcmVkaXRTY29yZVBvcHVwQ29udGFpbmVyIHNwYW4uY3JlZGl0U2NvcmVUaXRsZVNjb3JleyBmb250LXNpemU6MS44MTNyZW0gOyB0ZXh0LXNoYWRvdzoxLjRweCAwOyB9ICNjcmVkaXRTY29yZVBvcHVwQ29udGFpbmVyIGlucHV0eyBoZWlnaHQ6MzJweDsgZm9udC1zaXplOjAuODEzcmVtIDsgd2lkdGg6MTM1cHg7IHBhZGRpbmc6MCAxMHB4OyBtYXJnaW4tYm90dG9tOjEwcHg7IGJvcmRlcjoxcHggc29saWQgI2VlZWVlZTsgYm94LXNpemluZzpjb250ZW50LWJveDsgfSAjY3JlZGl0U2NvcmVQb3B1cENvbnRhaW5lciAjY3JlZGl0U2NvcmVFbWFpbHsgd2lkdGg6Mjk2cHg7IH0gI2NyZWRpdFNjb3JlUG9wdXBDb250YWluZXIgI2NyZWRpdFNjb3JlQWRkcmVzc3sgd2lkdGg6Mjk2cHg7IH0gI2NyZWRpdFNjb3JlUG9wdXBDb250YWluZXIgLmNyZWRpdFNjb3JlX2J0bnsgd2lkdGg6MzIwcHg7IHRleHQtYWxpZ246Y2VudGVyOyBoZWlnaHQ6NDBweDsgYm94LXNpemluZzpib3JkZXItYm94OyAtd2Via2l0LWFwcGVhcmFuY2U6bm9uZTsgfSAjY3JlZGl0U2NvcmVQb3B1cENvbnRhaW5lciBkaXYuY3JlZGl0U2NvcmVFeHRyYVRleHR7IHRleHQtYWxpZ246Y2VudGVyOyB9ICNjcmVkaXRTY29yZVBvcHVwQ29udGFpbmVyIGRpdi5jcmVkaXRTY29yZUNvbnNlbnRNZXNzYWdleyBjb2xvcjojYjNiM2IzOyBmb250LXNpemU6MC42ODhyZW0gOyB0ZXh0LWFsaWduOmNlbnRlcjsgbWFyZ2luLXRvcDoycHg7IH0gI2NyZWRpdFNjb3JlUG9wdXBDb250YWluZXIgLmNyZWRpdFNjb3JlSW1hZ2V7IGJhY2tncm91bmQtY29sb3I6IzMzNGM5NjsgfSAucGFjLWNvbnRhaW5lciB7IHotaW5kZXg6MTAwMDAyMTsgfQovKiogL2Nzcy9uZWJDYWwvbmViQ2FsLmNzcyAqKi8KLm5lYkNhbCAqIHsgb3ZlcmZsb3c6aGlkZGVuOyBwYWRkaW5nOjA7IG1hcmdpbjowOyBsaW5lLWhlaWdodDoxMDAlOyBiYWNrZ3JvdW5kLWNvbG9yIDp3aGl0ZTsgfSAubmViQ2FsIC5jYWwtaGVhZGVyIC5jYWwtYXJyb3ctbGVmdCwgLm5lYkNhbCAuY2FsLWhlYWRlciAuY2FsLWFycm93LXJpZ2h0IHsgY3Vyc29yOnBvaW50ZXI7fSAubmViQ2FsIC5jYWwtaGVhZGVyIC5jYWwtYXJyb3ctbGVmdCB7IGZsb2F0OmxlZnQ7IH0gLm5lYkNhbCAuY2FsLWhlYWRlciAuY2FsLWFycm93LWxlZnQ6YmVmb3JlIHsgY29udGVudDonPCc7IGZvbnQtd2VpZ2h0OmJvbGQ7IGNvbG9yOiM1MjNhMjk7IH0gLm5lYkNhbCAuY2FsLWhlYWRlciAuY2FsLWFycm93LXJpZ2h0IHsgZmxvYXQ6cmlnaHQ7IH0gLm5lYkNhbCAuY2FsLWhlYWRlciAuY2FsLWFycm93LXJpZ2h0OmJlZm9yZSB7IGNvbnRlbnQ6Jz4nOyBmb250LXdlaWdodDpib2xkOyBjb2xvcjojNTIzYTI5OyB9IC5uZWJDYWwgLmNhbC1oZWFkZXIgLmNhbC1sYWJlbCB7IGRpc3BsYXk6aW5saW5lLWJsb2NrOyBvdmVyZmxvdzp2aXNpYmxlOyB3aWR0aDoxNDZweDsgfSAubmViQ2FsIC5jYWwtaGVhZGVyIC5jYWwtbGFiZWwuY2FsLWNsaWNrYWJsZSB7IGN1cnNvcjpwb2ludGVyOyB9IC5uZWJDYWwgLmNhbC1ib2R5IHsgcG9zaXRpb246cmVsYXRpdmU7IH0gLm5lYkNhbCAuY2FsLWJvZHkgLmNhbC1pbm5lciAuY2FsLWNvbnRhaW5lciB7IHBvc2l0aW9uOmFic29sdXRlOyBsZWZ0OjA7IH0gLm5lYkNhbCAuY2FsLWJvZHkgLmNhbC1pbm5lciAuY2FsLWNvbnRhaW5lciAuY2FsLXJvdyBkaXYgeyBmbG9hdDpsZWZ0OyB9IC5uZWJDYWwgLmNhbC1ib2R5IC5jYWwtaW5uZXIgLmNhbC1jb250YWluZXIuY2FsLW1vbnRoLmNhbC1waWNrYWJsZSAuY2FsLXJvdyBkaXYsIC5uZWJDYWwgLmNhbC1ib2R5IC5jYWwtaW5uZXIgLmNhbC1jb250YWluZXIuY2FsLXllYXItZGVjYWRlIC5jYWwtcm93IGRpdiB7IGN1cnNvcjpwb2ludGVyO30gLm5lYkNhbCB7IGN1cnNvcjpkZWZhdWx0OyBwb3NpdGlvbjphYnNvbHV0ZTsgei1pbmRleDoxMDAwMDIwOyB0ZXh0LWFsaWduOmNlbnRlcjsgd2lkdGg6MjkwcHg7IGhlaWdodDoyMTVweDsgZm9udC1zaXplOjAuOTM4cmVtIDsgY29sb3I6IzUyM2EyOTsgfSAubmViQ2FsLmlubGluZSB7IHBvc2l0aW9uOnJlbGF0aXZlOyB9IC5uZWJDYWwuZGVmYXVsdCAuY2FsLXdyYXBwZXIgeyBwYWRkaW5nOjAgNHB4OyBib3JkZXI6c29saWQgMXB4ICNkZGRlZDk7IC1tb3otYm94LXNoYWRvdzowcHggMHB4IDRweCAycHggI2Q4ZDhkODstd2Via2l0LWJveC1zaGFkb3c6MHB4IDBweCA0cHggMnB4ICNkOGQ4ZDg7Ym94LXNoYWRvdzowcHggMHB4IDRweCAycHggI2Q4ZDhkODt9IC5uZWJDYWwuZGVmYXVsdCAuY2FsLWhlYWRlciB7IGhlaWdodDoyNXB4OyB9IC5uZWJDYWwuZGVmYXVsdCAuY2FsLWhlYWRlciAuY2FsLWFycm93LWxlZnQsIC5uZWJDYWwuZGVmYXVsdCAuY2FsLWhlYWRlciAuY2FsLWFycm93LXJpZ2h0IHsgd2lkdGg6MTJweDsgaGVpZ2h0OjEzcHg7IG1hcmdpbjo2cHggN3B4OyB9IC5uZWJDYWwuZGVmYXVsdCAuY2FsLWhlYWRlciAuY2FsLWFycm93LWxlZnQgeyB9IC5uZWJDYWwuZGVmYXVsdCAuY2FsLWhlYWRlciAuY2FsLWFycm93LWxlZnQ6aG92ZXIgeyB9IC5uZWJDYWwuZGVmYXVsdCAuY2FsLWhlYWRlciAuY2FsLWFycm93LXJpZ2h0IHsgfSAubmViQ2FsLmRlZmF1bHQgLmNhbC1oZWFkZXIgLmNhbC1hcnJvdy1yaWdodDpob3ZlciB7IH0gLm5lYkNhbC5kZWZhdWx0IC5jYWwtaGVhZGVyIC5jYWwtbGFiZWwgeyBsaW5lLWhlaWdodDoyNXB4OyBjb2xvcjojNTIzYTI5OyB0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7IH0gLm5lYkNhbC5kZWZhdWx0IC5jYWwtaGVhZGVyIC5jYWwtbGFiZWwuY2FsLWNsaWNrYWJsZSB7IGNvbG9yOiMwOGE1M2M7IH0gLm5lYkNhbC5kZWZhdWx0IC5jYWwtaGVhZGVyIC5jYWwtbGFiZWwuY2FsLWNsaWNrYWJsZTpob3ZlciB7IHRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7IH0gLm5lYkNhbC5kZWZhdWx0IC5jYWwtYm9keSB7IGhlaWdodDoxODBweDsgfSAubmViQ2FsLmRlZmF1bHQgLmNhbC1ib2R5IC5jYWwtaW5uZXIgLmNhbC1jb250YWluZXIgeyB3aWR0aDoyOTBweDsgaGVpZ2h0OjE4MHB4OyB9IC5uZWJDYWwuZGVmYXVsdCAuY2FsLWJvZHkgLmNhbC1pbm5lciAuY2FsLWNvbnRhaW5lciAuY2FsLXJvdyB7IHdpZHRoOjI5MHB4OyB9IC5uZWJDYWwuZGVmYXVsdCAuY2FsLWJvZHkgLmNhbC1pbm5lciAuY2FsLWNvbnRhaW5lci5jYWwteWVhci1kZWNhZGUgLmNhbC1yb3cuY2FsLW9kZCBkaXYgeyBtYXJnaW46NXB4OyBiYWNrZ3JvdW5kLWNvbG9yOiNkZWRlZGU7Ym9yZGVyOjFweCBzb2xpZCAjZDlkOWQ5O30gLm5lYkNhbC5kZWZhdWx0IC5jYWwtYm9keSAuY2FsLWlubmVyIC5jYWwtY29udGFpbmVyLmNhbC15ZWFyLWRlY2FkZSAuY2FsLXJvdy5jYWwtZXZlbiBkaXYgeyBtYXJnaW46NXB4OyBiYWNrZ3JvdW5kLWNvbG9yOiNmMGYwZjA7Ym9yZGVyOjFweCBzb2xpZCAjZWNlY2VjO30gLm5lYkNhbC5kZWZhdWx0IC5jYWwtYm9keSAuY2FsLWlubmVyIC5jYWwtY29udGFpbmVyIC5jYWwtcm93IGRpdi5jYWwtdG9kYXkgeyB0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lOyB9IC5uZWJDYWwuZGVmYXVsdCAuY2FsLWJvZHkgLmNhbC1pbm5lciAuY2FsLWNvbnRhaW5lciAuY2FsLXJvdyBkaXYuY2FsLXNlbGVjdGVkIHsgbWFyZ2luLWxlZnQ6NXB4OyBtYXJnaW4tcmlnaHQ6NXB4OyBoZWlnaHQ6MjBweDtmb250LXNpemU6MXJlbSA7Zm9udC13ZWlnaHQ6NjAwOyBjb2xvcjojZmZmICFpbXBvcnRhbnQ7dGV4dC1zaGFkb3c6MXB4IDFweCAwcHggIzM5YTY2MzsgYmFja2dyb3VuZC1jb2xvcjojNTRiYjAwOy13ZWJraXQtYm9yZGVyLXJhZGl1czo1cHg7LW1vei1ib3JkZXItcmFkaXVzOjVweDtib3JkZXItcmFkaXVzOjVweDt9IC5uZWJDYWwuZGVmYXVsdCAuY2FsLWJvZHkgLmNhbC1pbm5lciAuY2FsLWNvbnRhaW5lciAuY2FsLXJvdyBkaXYuY2FsLW5vbi1zZWxlY3RhYmxlLCAubmViQ2FsLmRlZmF1bHQgLmNhbC1ib2R5IC5jYWwtaW5uZXIgLmNhbC1jb250YWluZXIgLmNhbC1yb3cgZGl2LmNhbC1ub24tc2VsZWN0YWJsZTpob3ZlciB7IGNvbG9yOiNiZGJkYmQgIWltcG9ydGFudDsgY3Vyc29yOmRlZmF1bHQgIWltcG9ydGFudDsgfSAubmViQ2FsLmRlZmF1bHQgLmNhbC1ib2R5IC5jYWwtaW5uZXIgLmNhbC1jb250YWluZXIuY2FsLW1vbnRoIC5jYWwtcm93LmEgZGl2IHsgY3Vyc29yOmRlZmF1bHQgIWltcG9ydGFudDsgY29sb3I6IzM3OWI1NyAhaW1wb3J0YW50O3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZTsgfSAubmViQ2FsLmRlZmF1bHQgLmNhbC1ib2R5IC5jYWwtaW5uZXIgLmNhbC1jb250YWluZXIuY2FsLW1vbnRoIC5jYWwtcm93IHsgaGVpZ2h0OjI2cHg7IH0gLm5lYkNhbC5kZWZhdWx0IC5jYWwtYm9keSAuY2FsLWlubmVyIC5jYWwtY29udGFpbmVyLmNhbC1tb250aCAuY2FsLXJvdyBkaXYgeyBtYXJnaW4tdG9wOjNweDsgd2lkdGg6NDBweDsgfSAubmViQ2FsLmRlZmF1bHQgLmNhbC1ib2R5IC5jYWwtaW5uZXIgLmNhbC1jb250YWluZXIuY2FsLW1vbnRoIC5jYWwtcm93IGRpdi5jYWwtc2VsZWN0ZWQgeyBtYXJnaW4tdG9wOjNweDsgd2lkdGg6MzBweDsgfSAubmViQ2FsLmRlZmF1bHQgLmNhbC1ib2R5IC5jYWwtaW5uZXIgLmNhbC1jb250YWluZXIuY2FsLW1vbnRoIC5jYWwtcm93IGRpdi5jYWwtZmlyc3QgeyBwYWRkaW5nLWxlZnQ6MTZweDsgfSAubmViQ2FsLmRlZmF1bHQgLmNhbC1ib2R5IC5jYWwtaW5uZXIgLmNhbC1jb250YWluZXIuY2FsLW1vbnRoIC5jYWwtcm93IGRpdi5jYWwtbGFzdCB7IHBhZGRpbmctcmlnaHQ6MTZweDsgfSAubmViQ2FsLmRlZmF1bHQgLmNhbC1ib2R5IC5jYWwtaW5uZXIgLmNhbC1jb250YWluZXIuY2FsLW1vbnRoIC5jYWwtcm93IGRpdi5jYWwtb3V0c2lkZSB7IGNvbG9yOiNkZWRlZGU7IH0gLm5lYkNhbC5kZWZhdWx0IC5jYWwtYm9keSAuY2FsLWlubmVyIC5jYWwtY29udGFpbmVyLmNhbC1tb250aCAuY2FsLXJvdy5jYWwtZXZlbiBkaXYuY2FsLW91dHNpZGUgeyBjb2xvcjojY2VjZWNlOyB9IC5uZWJDYWwuZGVmYXVsdCAuY2FsLWJvZHkgLmNhbC1pbm5lciAuY2FsLWNvbnRhaW5lci5jYWwtbW9udGggLmNhbC1yb3cuYSBkaXYgeyBjb2xvcjojOWM5YzljOyB9IC5uZWJDYWwuZGVmYXVsdCAuY2FsLWJvZHkgLmNhbC1pbm5lciAuY2FsLWNvbnRhaW5lci5jYWwteWVhci1kZWNhZGUgLmNhbC1yb3cgeyBoZWlnaHQ6NDJweDsgfSAubmViQ2FsLmRlZmF1bHQgLmNhbC1ib2R5IC5jYWwtaW5uZXIgLmNhbC1jb250YWluZXIuY2FsLXllYXItZGVjYWRlIC5jYWwtcm93IGRpdiB7IHdpZHRoOjgwcHg7bGluZS1oZWlnaHQ6MjdweDsgaGVpZ2h0OjI3cHg7IH0gLm5lYkNhbC5kZWZhdWx0IC5jYWwtYm9keSAuY2FsLWlubmVyIC5jYWwtY29udGFpbmVyLmNhbC15ZWFyLWRlY2FkZSAuY2FsLXJvdyBkaXYuY2FsLWZpcnN0IHsgbWFyZ2luLWxlZnQ6MTZweDsgfSAubmViQ2FsLmRlZmF1bHQgLmNhbC1ib2R5IC5jYWwtaW5uZXIgLmNhbC1jb250YWluZXIuY2FsLXllYXItZGVjYWRlIC5jYWwtcm93IGRpdi5jYWwtbGFzdCB7IG1hcmdpbi1yaWdodDoxNnB4OyB9IC5uZWJDYWwuZGVmYXVsdCAuY2FsLWJvZHkgLmNhbC1pbm5lciAuY2FsLWNvbnRhaW5lci5jYWwteWVhci1kZWNhZGUgLmNhbC1yb3cgZGl2LmNhbC1zZWxlY3RlZCB7IGJhY2tncm91bmQtY29sb3I6IzU0YmIwMDt9IC5uZWJDYWwuZGVmYXVsdCAuY2FsLWJvZHkgLmNhbC1pbm5lciAuY2FsLWNvbnRhaW5lci5jYWwtbW9udGguY2FsLXBpY2thYmxlIC5jYWwtcm93IGRpdjpob3ZlciwgLm5lYkNhbC5kZWZhdWx0IC5jYWwtYm9keSAuY2FsLWlubmVyIC5jYWwtY29udGFpbmVyLmNhbC15ZWFyLWRlY2FkZSAuY2FsLXJvdyBkaXY6aG92ZXIgeyBjb2xvcjojYjJjZmUxOyB9IC5uZWJDYWwuZGVmYXVsdCAuY2FsLWZvb3RlciB7IGhlaWdodDo0cHg7IH0KLyoqIC9jc3MvZmluYW5jZV9tdWx0aXN0ZXAuY3NzICoqLwojZmluYW5jZV9tdWx0aXN0ZXBfZm9ybXsgdGV4dC1hbGlnbjpjZW50ZXI7IH0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gLmZpbmFuY2VNdWx0aXN0ZXBOZXdDYWxjdWxhdG9yeyB0ZXh0LWFsaWduOmxlZnQ7IH0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gaDJ7IHRleHQtYWxpZ246Y2VudGVyOyBtYXJnaW4tdG9wOjEwcHg7IG1hcmdpbi1ib3R0b206MTVweDsgfSAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSBoM3sgdGV4dC1hbGlnbjpjZW50ZXI7IG1hcmdpbi10b3A6MTBweDsgbWFyZ2luLWJvdHRvbToxNXB4OyBmb250LXNpemU6MS4yNXJlbSA7IH0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm1fbmV4dF9idG4geyB0ZXh0LWFsaWduOmNlbnRlcjsgbWFyZ2luLXRvcDoyNXB4OyBtYXJnaW4tYm90dG9tOjE1cHg7IHdpZHRoOjEwMCU7IHBvc2l0aW9uOmFic29sdXRlOyBsZWZ0OjA7IGJvdHRvbTowOyBwYWRkaW5nLWJvdHRvbTplbnYoc2FmZS1hcmVhLWluc2V0LWJvdHRvbSwgMHB4KTsgfSAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybV9uZXh0X2J0biBidXR0b257IHBhZGRpbmc6MTdweCA2NXB4IDE1cHggNjVweDsgZm9udC1zaXplOjEuMjVyZW0gOyBmb250LXdlaWdodDo0MDA7IHdpZHRoOjI4MHB4OyBiYWNrZ3JvdW5kLWNvbG9yOndoaXRlOyBjb2xvcjojQzBDMEMwOyBib3JkZXI6bm9uZTsgY3Vyc29yOnBvaW50ZXI7IGJvcmRlcjoxcHggc29saWQgI0MwQzBDMDsgfSAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybV9uZXh0X2J0biBidXR0b24uaXNWYWxpZHsgYmFja2dyb3VuZC1jb2xvcjojZmZmZmZmOyBjb2xvcjojMmMyYzJjOyBib3JkZXI6MXB4IHNvbGlkICMwMDAwMDA7IH0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gaW5wdXRbdHlwZT0icmFkaW8iXXsgb3BhY2l0eTowOyB3aWR0aDowOyBoZWlnaHQ6MDsgcG9zaXRpb246YWJzb2x1dGU7IH0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gbGFiZWwucmFkaW9fbGFiZWwgeyBib3gtc2l6aW5nOmJvcmRlci1ib3g7IHBhZGRpbmc6MTVweCAxMHB4OyBjdXJzb3I6cG9pbnRlcjsgb3BhY2l0eToxOyB0cmFuc2l0aW9uOmFsbCAxcyBlYXNlLWluLW91dDsgbWFyZ2luLWJvdHRvbTo1cHg7IGJvcmRlcjoxcHggc29saWQgI2NjY2NjYzsgYm9yZGVyLWJvdHRvbS13aWR0aDo1cHg7IHdpZHRoOjEwMCU7IGZsb2F0OmxlZnQ7IGZvbnQtc2l6ZToxLjEyNXJlbSA7IG1pbi1oZWlnaHQ6MTAycHg7IGJhY2tncm91bmQ6I2ZmZmZmZjsgfSAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSBpbnB1dFt0eXBlPSJyYWRpbyJdOmNoZWNrZWQgfiBsYWJlbC5yYWRpb19sYWJlbCB7IGJvcmRlcjoxcHggc29saWQgIzAwMDsgYm9yZGVyLWJvdHRvbS13aWR0aDo1cHg7IH0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gbGFiZWwucmFkaW9fbGFiZWwyIHsgYm9yZGVyOjFweCBzb2xpZCByZ2JhKDI1MCwgMjUwLCAyNTAsIDAuMTUpOyBib3gtc2l6aW5nOmJvcmRlci1ib3g7IHBhZGRpbmc6MTBweCA1cHggNXB4IDVweDsgY3Vyc29yOnBvaW50ZXI7IG9wYWNpdHk6MTsgdHJhbnNpdGlvbjphbGwgMXMgZWFzZS1pbi1vdXQ7IG1hcmdpbi1ib3R0b206NXB4OyBib3JkZXI6MXB4IHNvbGlkICNjY2NjY2M7IGJvcmRlci1ib3R0b20td2lkdGg6NXB4OyB3aWR0aDoxMDAlOyBmbG9hdDpsZWZ0OyBmb250LXNpemU6MS4xMjVyZW0gOyBtaW4taGVpZ2h0OjQ1cHg7IGJhY2tncm91bmQ6I2ZmZmZmZjsgfSAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSBpbnB1dFt0eXBlPSJyYWRpbyJdOmNoZWNrZWQgfiBsYWJlbC5yYWRpb19sYWJlbDIgeyBib3JkZXI6MXB4IHNvbGlkICMwMDA7IGJvcmRlci1ib3R0b20td2lkdGg6NXB4OyB9ICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIC5yYWRpb19kaXZ7IHdpZHRoOjQ1JTsgfSAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSAucmFkaW9fZGl2LnJkX3dpZGV7IHdpZHRoOjQ2JTsgbWluLWhlaWdodDo4OHB4OyB9ICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIC5yYWRpb19kaXY6bnRoLW9mLXR5cGUob2RkKXsgZmxvYXQ6bGVmdDsgfSAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSAucmFkaW9fZGl2Om50aC1vZi10eXBlKGV2ZW4peyBmbG9hdDpyaWdodDsgfSAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSBpbnB1dFt0eXBlPSJ0ZXh0Il17IHdpZHRoOjI5MHB4OyBoZWlnaHQ6NDBweDsgdGV4dC1hbGlnbjpjZW50ZXI7IGZvbnQtc2l6ZToxLjI1cmVtIDsgfSAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSBpbnB1dFt0eXBlPSJudW1iZXIiXTpub3QoLnBheW1lbnRDYWxjdWxhdG9yRG93blBheW1lbnQpeyBkaXNwbGF5OmJsb2NrOyBmbG9hdDpsZWZ0OyBib3JkZXI6MXB4IHNvbGlkICNkZGRkZGQ7IHdpZHRoOjEyMHB4OyBib3JkZXItcmlnaHQ6bm9uZTsgbWFyZ2luOjAgMCAxMHB4OyBsaW5lLWhlaWdodDozMHB4OyBoZWlnaHQ6NzVweDsgcGFkZGluZzowOyB0ZXh0LWFsaWduOmNlbnRlcjsgZm9udC1zaXplOjEuNXJlbSA7IH0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gLm51bWJlci10eXBlLWxhYmVseyBkaXNwbGF5OmJsb2NrOyBmbG9hdDpsZWZ0OyBib3JkZXI6MXB4IHNvbGlkICNkZGRkZGQ7IHdpZHRoOjEyMHB4OyBjb2xvcjojMjUyNTI1OyBoZWlnaHQ6NzVweDsgbGluZS1oZWlnaHQ6MzVweDsgZm9udC1zaXplOjEuNXJlbSA7IH0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gLm51bWJlci10eXBlLWRpdnsgZmxvYXQ6bGVmdDsgbGVmdDoxMCU7IG1hcmdpbi10b3A6MjBweDsgcG9zaXRpb246cmVsYXRpdmU7IH0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gLmZpbmFuY2VfbXVsdGlzdGVwX3NlbGVjdF9jb250YWluZXJ7IG1hcmdpbi10b3A6MTBweDsgfSAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSAuZmluYW5jZV9tdWx0aXN0ZXBfc2VsZWN0X2NvbnRhaW5lcl9kaXZ7IHdpZHRoOjEwMCU7IH0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gLmZpbmFuY2VfbXVsdGlzdGVwX3NlbGVjdF9jb250YWluZXIgc2VsZWN0eyBjb2xvcjojM2MzODM2OyBib3JkZXI6MnB4IHNvbGlkICMwMDAwMDA7IGJvcmRlci1yYWRpdXM6NXB4OyBwYWRkaW5nOjEwcHggMTBweDsgZm9udC1zaXplOjFyZW0gOyBiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjkpOyBiYWNrZ3JvdW5kLXBvc2l0aW9uOjk1JSA1MCU7IHdpZHRoOjkwcHg7IC13ZWJraXQtYXBwZWFyYW5jZTpub25lOyAtbW96LWFwcGVhcmFuY2U6bm9uZTsgcGFkZGluZy1yaWdodDoyN3B4OyB9ICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIC5maW5hbmNlX211bHRpc3RlcF9zZWxlY3RfY29udGFpbmVyX3NlbGVjdHsgcG9zaXRpb246cmVsYXRpdmU7IHdpZHRoOjQwJTsgbWFyZ2luOmF1dG87IH0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gLmZpbmFuY2VfbXVsdGlzdGVwX3NlbGVjdF9jb250YWluZXJfc2VsZWN0OmFmdGVyIHsgY29udGVudDoiICI7IGhlaWdodDowOyB3aWR0aDowOyBib3JkZXItbGVmdDo1cHggc29saWQgdHJhbnNwYXJlbnQ7IGJvcmRlci1yaWdodDo1cHggc29saWQgdHJhbnNwYXJlbnQ7IGJvcmRlci10b3A6NXB4IHNvbGlkICMwMDA7IHBvc2l0aW9uOmFic29sdXRlOyByaWdodDoxNHB4OyB0b3A6MTdweDsgdHJhbnNpdGlvbjphbGwgLjNzIGxpbmVhcjsgfSAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSAuc3RlcDI0c2VsZWN0eyBtYXJnaW4tdG9wOjEwcHg7IHBhZGRpbmc6MC41cmVtOyBiYWNrZ3JvdW5kLWNvbG9yOndoaXRlOyBib3JkZXItcmFkaXVzOjAuNXJlbTsgYm9yZGVyOjFweCBzb2xpZCAjZGRkOyBjb2xvcjojMjEyNTI5OyBmb250LXNpemU6MC44NzVyZW0gOyBsaW5lLWhlaWdodDpub3JtYWw7IGZvbnQtd2VpZ2h0OjQwMDsgd2lkdGg6MTAwJTsgfSAucGFjLWNvbnRhaW5lciB7IHotaW5kZXg6MTAwMDAyMTsgfSBpbnB1dDo6LXdlYmtpdC1vdXRlci1zcGluLWJ1dHRvbiwgaW5wdXQ6Oi13ZWJraXQtaW5uZXItc3Bpbi1idXR0b24geyAtd2Via2l0LWFwcGVhcmFuY2U6bm9uZTsgbWFyZ2luOjA7IH0gI2ZpbmFuY2VNdWx0aXN0ZXBQb3B1cENvbnRhaW5lcnsgbWF4LXdpZHRoOmNhbGMoMTAwdncgLSAyMHB4KTsgfSAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSAjbXVsdGlzdGVwLW11bHRpYWRkcmVzcyBzZWxlY3QgeyBtYXgtd2lkdGg6MjgwcHg7IG1hcmdpbjowIGF1dG87IH0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gI211bHRpc3RlcC1tdWx0aWFkZHJlc3MgbGFiZWwgeyB0ZXh0LWFsaWduOmNlbnRlcjsgbWFyZ2luLXRvcDoyNXB4OyBtYXJnaW4tYm90dG9tOjI1cHg7IGZvbnQtc2l6ZToxLjVyZW0gOyBkaXNwbGF5OmJsb2NrOyB9ICNmaW5hbmNlX211bHRpc3RlcF9mb3JtICNtdWx0aXN0ZXAtbXVsdGlhZGRyZXNzICNtdXRsaUFkZHJlc3NTdWJtaXQgeyBkaXNwbGF5Om5vbmU7IH0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gLmZpbmFuY2VfbXVsdGlzdGVwX2JpcnRoZGF0ZV9pbnB1dHN7IGRpc3BsYXk6aW5saW5lLWZsZXg7IH0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gLmZpbmFuY2VfbXVsdGlzdGVwX2JpcnRoZGF0ZV9pbnB1dF9kaXZ7IG1hcmdpbjoyMHB4IDVweCAyMHB4IDVweDsgfSAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSAuZmluYW5jZV9tdWx0aXN0ZXBfYmlydGhkYXRlX2lucHV0X2RpdiBsYWJlbHsgZm9udC1zaXplOjEuMTI1cmVtIDsgfSAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSAuZmluYW5jZV9tdWx0aXN0ZXBfYmlydGhkYXRlX2lucHV0X2RpdiBpbnB1dFt0eXBlPSJudW1iZXIiXXsgd2lkdGg6ODBweDsgaGVpZ2h0OjUwcHg7IGRpc3BsYXk6YmxvY2s7IGZsb2F0Om5vbmU7IH0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gLmZpbmFuY2VfbXVsdGlzdGVwX2JpcnRoZGF0ZV9pbnB1dF9kaXYgaW5wdXRbdHlwZT0ibnVtYmVyIl0uYmlydGh5ZWFyeyB3aWR0aDoxMDBweDsgfSAucmV2ZWFsLW1vZGFsLmZpbmFuY2VfYmFja2dyb3VuZF9pbWFnZXsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvcG9wdXBzL2ZpbmFuY2Vwb3B1cC1iZy1tb2JpbGUud2VicCcpOyB9ICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIC5maW5hbmNlSWNvbkRpdnsgcG9zaXRpb246cmVsYXRpdmU7IGhlaWdodDoxMzVweDsgbWFyZ2luLWJvdHRvbToxMHB4OyB9ICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIC5maW5hbmNlSWNvbkRpdiAuZmluYW5jZUNhbGN7IGNvbG9yOiM0ZWJhNTk7IGZvbnQtc2l6ZToxMDBweDsgbGVmdDozNSU7IHBvc2l0aW9uOmFic29sdXRlOyB9ICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIC5maW5hbmNlSWNvbkRpdiAuZmluYW5jZUNhcnsgY29sb3I6IzAwMDAwMDsgZm9udC1zaXplOjEwMHB4OyBsZWZ0OjMzJTsgcG9zaXRpb246YWJzb2x1dGU7IHRvcDo1MHB4OyB9ICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIC5lbXBsb3ltZW50VGV4dExhYmVseyB3aWR0aDo0NSU7IH0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gLmVtcGxveW1lbnRUZXh0TGFiZWwyeyBtYXJnaW4tcmlnaHQ6MjVweDsgfSAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSAuZW1wbG95bWVudFRleHR7IHdpZHRoOjYwJSFpbXBvcnRhbnQ7IGZvbnQtc2l6ZToxLjEyNXJlbSAhaW1wb3J0YW50OyBib3JkZXI6MXB4IHNvbGlkICNjY2NjY2M7IGhlaWdodDoyNXB4OyBtYXJnaW4tYm90dG9tOjVweDsgfSAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSBpbnB1dFt0eXBlPSJudW1iZXIiXS5lbXBsb3ltZW50U3RhdHVzVGltZXsgd2lkdGg6NTBweDsgaGVpZ2h0OjUwcHg7IGJvcmRlcjoxcHggc29saWQgI2E5YTlhOTsgYm9yZGVyLXJhZGl1czo1cHg7IGFsaWduLXNlbGY6Y2VudGVyOyB9ICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIC5lbXBsb3ltZW50QWRkZWRJbmZveyB3aWR0aDo5NSU7IGhlaWdodDo1MHB4OyByZXNpemU6bm9uZTsgbWFyZ2luLXRvcDoxMHB4OyBtYXJnaW4tYm90dG9tOjEwcHg7IGJvcmRlcjoxcHggc29saWQgI2NjY2NjYzsgZm9udC1zaXplOjAuOTM4cmVtICFpbXBvcnRhbnQ7IH0gLmZhZGUtZW50ZXIsIC5mYWRlLWxlYXZlIHsgb3BhY2l0eTowOyB9ICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIC5maW5hbmNlTXVsdGlzdGVwVXNlZENhbGN1bGF0b3IgLmNhbGMtZm9ybXsgd2lkdGg6MTAwJTsgdGV4dC1hbGlnbjpjZW50ZXI7IH0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gLmZpbmFuY2VNdWx0aXN0ZXBVc2VkQ2FsY3VsYXRvciAuY2FsYy1mb3JtIGxhYmVseyBtYXJnaW4tYm90dG9tOjE1cHg7IHBhZGRpbmc6MDsgZGlzcGxheTpmbGV4OyBhbGlnbi1pdGVtczpjZW50ZXI7IGp1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuOyBwb3NpdGlvbjpyZWxhdGl2ZTsgfSAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSAuZmluYW5jZU11bHRpc3RlcFVzZWRDYWxjdWxhdG9yIC5jYWxjLWZvcm0gbGFiZWwucGF5bWVudFZhbHVlTGFiZWx7IGp1c3RpZnktY29udGVudDp1bnNldDsgfSAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSAuZmluYW5jZU11bHRpc3RlcFVzZWRDYWxjdWxhdG9yIHNwYW57IGZvbnQtc2l6ZToxZW07IHdpZHRoOjUwJTsgdGV4dC1hbGlnbjpsZWZ0OyB9ICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIC5maW5hbmNlTXVsdGlzdGVwVXNlZENhbGN1bGF0b3IgaW5wdXR7IHRleHQtYWxpZ246bGVmdDsgaGVpZ2h0OjI1cHg7IGZvbnQtc2l6ZToxZW07IGNvbG9yOmJsYWNrOyB9ICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIC5maW5hbmNlTXVsdGlzdGVwVXNlZENhbGN1bGF0b3Igc2VsZWN0eyBoZWlnaHQ6MjhweDsgY29sb3I6YmxhY2s7IGZvbnQtc2l6ZToxZW07IH0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gLmZpbmFuY2VNdWx0aXN0ZXBVc2VkQ2FsY3VsYXRvciAuZXN0aW1hdGVkVGV4dHsgZm9udC13ZWlnaHQ6NzAwOyB3aWR0aDo3MCU7IH0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gLmZpbmFuY2VNdWx0aXN0ZXBVc2VkQ2FsY3VsYXRvciAub3V0cHV0cHJpY2UtdHh0eyB3aWR0aDozNSU7IG1hcmdpbi1sZWZ0OjMwcHg7IH0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gLmZpbmFuY2VNdWx0aXN0ZXBVc2VkQ2FsY3VsYXRvciAudGF4ZVRleHR7IHBvc2l0aW9uOmFic29sdXRlOyBsZWZ0OjA7IGJvdHRvbTotMTBweDsgd2lkdGg6Zml0LWNvbnRlbnQ7IH0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gLmZpbmFuY2VNdWx0aXN0ZXBVc2VkQ2FsY3VsYXRvciAuaW5wdXQgeyBib3JkZXI6MXB4IHNvbGlkICM5OTk7IGJhY2tncm91bmQ6I2VlZTsgcGFkZGluZzowLjI1cmVtOyBib3JkZXItcmFkaXVzOjAuMjVyZW07IHdpZHRoOm1pbig1MCUsNnJlbSk7IH0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gLmZpbmFuY2VNdWx0aXN0ZXBVc2VkQ2FsY3VsYXRvciAuY2FsYy1mb3JtIGRpdi5kb2xsYXJTcGFueyBkaXNwbGF5OmNvbnRlbnRzOyB9ICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIC5maW5hbmNlTXVsdGlzdGVwVXNlZENhbGN1bGF0b3IgZGl2LmRvbGxhclNwYW4gLmlucHV0eyBwYWRkaW5nLWxlZnQ6MTJweDsgfSAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSAuZmluYW5jZU11bHRpc3RlcFVzZWRDYWxjdWxhdG9yIC5jYWxjLWZvcm0gZGl2LmRvbGxhclNwYW46OmJlZm9yZXsgY29udGVudDoiJCI7IGZvbnQtc2l6ZToxZW07IHBvc2l0aW9uOmFic29sdXRlOyByaWdodDo4NXB4OyB0b3A6NDklOyB0cmFuc2Zvcm06dHJhbnNsYXRlWSgtNDMlKTsgfSAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSAuZmluYW5jZV9tdWx0aXN0ZXBfY29uc2VudF90ZXh0X2Rpdnsgb3ZlcmZsb3cteTpzY3JvbGw7IGhlaWdodDo0NDBweDsgd2lkdGg6MTAwJTsgfSAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSAubXVsdGlzdGVwUGF5bWVudFZlaGljbGV7IGZvbnQtc2l6ZTppbmhlcml0OyB9ICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIC5wYXltZW50Q2FsY3VsYXRvclBheW1lbnRXcmFwcGVyeyBtYXgtaGVpZ2h0OjE3NXB4OyB9ICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIC5wYXltZW50Q2FsY3VsYXRvclBheW1lbnRDb250YWluZXJ7IGhlaWdodDoyNzVweDsgfSAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSAuZmluYW5jZU11bHRpc3RlcFVzZWRDYWxjdWxhdG9yIC5jYWxjLWZvcm0gLmxvYW5hbW91bnQsICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIC5maW5hbmNlTXVsdGlzdGVwVXNlZENhbGN1bGF0b3IgLmNhbGMtZm9ybSAuaW50ZXJlc3RyYXRleyBib3JkZXI6MDsgYmFja2dyb3VuZC1jb2xvcjp1bnNldDsgfSAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSAuZmluYW5jZU11bHRpc3RlcFVzZWRDYWxjdWxhdG9yIC5jYWxjLWZvcm0gaW5wdXQsICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIC5maW5hbmNlTXVsdGlzdGVwVXNlZENhbGN1bGF0b3IgLmNhbGMtZm9ybSBzZWxlY3R7IGJhY2tncm91bmQtY29sb3I6I2ZmZjsgYm9yZGVyLXJhZGl1czowLjNyZW07IH0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gLm11bHRpc3RlcEluaXRpYWxUaXRsZXsgZm9udC13ZWlnaHQ6Ym9sZDsgbWFyZ2luLXRvcDowOyB9ICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIHNwYW4uaDItYWx0eyB0ZXh0LWFsaWduOmNlbnRlcjsgbWFyZ2luLWJvdHRvbToxNXB4OyBmb250LXNpemU6aW5oZXJpdDsgZGlzcGxheTpibG9jazsgY29sb3I6dmFyKC0tZGVmYXVsdC1ibGFjayk7IG1hcmdpbi1sZWZ0OjA7IH0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gc3Bhbi5oMy1hbHR7IHRleHQtYWxpZ246Y2VudGVyOyBtYXJnaW4tdG9wOjEwcHg7IG1hcmdpbi1ib3R0b206MTVweDsgZm9udC1zaXplOjEuMjVyZW0gOyBkaXNwbGF5OmJsb2NrOyBmb250LWZhbWlseTp2YXIoLS1mb250LWgyLW1vYik7IH0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gLmhpZGRlbklucHV0eyBkaXNwbGF5Om5vbmU7IH0gLmZpbmFuY2VNdWx0aXN0ZXBOZXdDYWxjdWxhdG9yIC5wYXltZW50Q2FsY3VsYXRvckluY2x1ZGVUYXhDaGVja0RpdnsgcG9zaXRpb246YWJzb2x1dGU7IG1hcmdpbi10b3A6MTBweDsgcmlnaHQ6MHB4OyB9ICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIC5maW5hbmNlTXVsdGlzdGVwTmV3Q2FsY3VsYXRvciAucGF5bWVudENhbGN1bGF0b3JUcmFkZUluSW5pdGlhbHsgZm9udC1zaXplOjAuNjI1cmVtIDsgYm9yZGVyOjFweCBzb2xpZCAjYTlhOWE5OyBoZWlnaHQ6MzVweDsgYm9yZGVyLXJhZGl1czo1cHg7IGJhY2tncm91bmQtY29sb3I6d2hpdGU7IHdpZHRoOjEwNXB4OyB0ZXh0LWFsaWduOmNlbnRlcjsgdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTsgcGFkZGluZzo0cHggMnB4IDVweDsgfSAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSAuZmluYW5jZU11bHRpc3RlcE5ld0NhbGN1bGF0b3IgLnBheW1lbnRDYWxjdWxhdG9yVHJhZGVJbkZpbmFseyBib3JkZXI6MXB4IHNvbGlkICNhOWE5YTk7IGhlaWdodDozNXB4OyBib3JkZXItcmFkaXVzOjVweDsgYmFja2dyb3VuZC1jb2xvcjp3aGl0ZTsgd2lkdGg6MTA1cHghaW1wb3J0YW50OyB0ZXh0LWFsaWduOmNlbnRlcjsgcGFkZGluZzo1cHggMnB4OyBiYWNrZ3JvdW5kLWltYWdlOnVybCgiZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsPHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZlcnNpb249JzEuMScgaGVpZ2h0PScyOHB4JyB3aWR0aD0nODVweCc+PHRleHQgeD0nNicgeT0nMjEnIGZpbGw9JycgZm9udC1zaXplPScxNicgZm9udC1mYW1pbHk9J2FyaWFsJz4kIik7IGJhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDsgfSAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSAuZmluYW5jZU11bHRpc3RlcFVzZWRDYWxjdWxhdG9yIC5wYXltZW50Q2FsY3VsYXRvclRyYWRlSW5Jbml0aWFseyBmb250LXNpemU6MC42MjVyZW0gOyBib3JkZXI6MXB4IHNvbGlkICNhOWE5YTk7IGhlaWdodDozNXB4OyBib3JkZXItcmFkaXVzOjVweDsgYmFja2dyb3VuZC1jb2xvcjp3aGl0ZTsgd2lkdGg6OTZweDsgdGV4dC1hbGlnbjpjZW50ZXI7IHRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7IHBhZGRpbmc6NXB4IDJweDsgfSAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSAuZmluYW5jZU11bHRpc3RlcFVzZWRDYWxjdWxhdG9yIC5wYXltZW50Q2FsY3VsYXRvclRyYWRlSW5GaW5hbHsgYm9yZGVyOjFweCBzb2xpZCAjYTlhOWE5OyBoZWlnaHQ6MzVweDsgYm9yZGVyLXJhZGl1czo1cHg7IGJhY2tncm91bmQtY29sb3I6d2hpdGU7IHdpZHRoOjk2cHghaW1wb3J0YW50OyB0ZXh0LWFsaWduOmNlbnRlcjsgcGFkZGluZzo1cHggMnB4OyBiYWNrZ3JvdW5kLWltYWdlOnVybCgiZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsPHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZlcnNpb249JzEuMScgaGVpZ2h0PScyOHB4JyB3aWR0aD0nODVweCc+PHRleHQgeD0nNicgeT0nMjEnIGZpbGw9JycgZm9udC1zaXplPScxNicgZm9udC1mYW1pbHk9J2FyaWFsJz4kIik7IGJhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDsgfSAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSAuZm9ybWF0LXByaWNleyBtYXJnaW4tYm90dG9tOnVuc2V0OyBtYXJnaW4tbGVmdDowLjdyZW07IH0gOmlzKC5FTkdMSVNILFtkYXRhLWxhbmc9ImVuIl0pIGxhYmVsIC5mb3JtYXQtcHJpY2V7IG1hcmdpbi1yaWdodDowLjNyZW07IH0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gLnZ3Q29uc2VudFRleHR7IGhlaWdodDoxMjBweDsgb3ZlcmZsb3cteTpzY3JvbGw7IGJhY2tncm91bmQtY29sb3I6I2ZmZjsgcGFkZGluZzoxMHB4IDEwcHg7IGxpbmUtaGVpZ2h0OjEuNSAhaW1wb3J0YW50OyB9IC52d0NvbnNlbnRUZXh0IGgxeyBmb250LXNpemU6MS4yNXJlbSAhaW1wb3J0YW50OyBmb250LXdlaWdodDo3MDAgIWltcG9ydGFudDsgbWFyZ2luOjAgMCAxNnB4IDAgIWltcG9ydGFudDsgfSAudndDb25zZW50VGV4dCBoMnsgZm9udC1zaXplOjFyZW0gIWltcG9ydGFudDsgZm9udC13ZWlnaHQ6NzAwICFpbXBvcnRhbnQ7IG1hcmdpbjoyNHB4IDAgMTBweCAwICFpbXBvcnRhbnQ7IH0gLnZ3Q29uc2VudFRleHQgcHsgZm9udC1zaXplOjAuODc1cmVtICFpbXBvcnRhbnQ7IGZvbnQtd2VpZ2h0OjQwMCAhaW1wb3J0YW50OyBsaW5lLWhlaWdodDoxLjUgIWltcG9ydGFudDsgbWFyZ2luOjAgMCAxMnB4IDAgIWltcG9ydGFudDsgdGV4dC1hbGlnbjpqdXN0aWZ5ICFpbXBvcnRhbnQ7IH0gLnZ3Q29uc2VudFRleHQgdWx7IG1hcmdpbjo4cHggMCAxNnB4IDI0cHggIWltcG9ydGFudDsgcGFkZGluZzowICFpbXBvcnRhbnQ7IH0gLnZ3Q29uc2VudFRleHQgbGl7IGZvbnQtc2l6ZTowLjg3NXJlbSAhaW1wb3J0YW50OyBmb250LXdlaWdodDo0MDAgIWltcG9ydGFudDsgbGluZS1oZWlnaHQ6MS41ICFpbXBvcnRhbnQ7IG1hcmdpbjowIDAgMTJweCAwICFpbXBvcnRhbnQ7IHRleHQtYWxpZ246anVzdGlmeSAhaW1wb3J0YW50OyB9IC52d0NvbnNlbnRUZXh0IHN0cm9uZ3sgZm9udC13ZWlnaHQ6NzAwICFpbXBvcnRhbnQ7IH0gLnZ3Q29uc2VudFRleHQgYXsgdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZSAhaW1wb3J0YW50OyB9ICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIC52d0NvbnNlbnREaXZzeyBtYXJnaW4tdG9wOjEwcHg7IGZvbnQtc2l6ZTowLjc1cmVtIDsgdGV4dC1hbGlnbjpsZWZ0OyB9ICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIC5yZW50T3JPd25RdWVzdGlvbnsgZmxvYXQ6bGVmdDsgdGV4dC1hbGlnbjpjZW50ZXI7IG1hcmdpbi10b3A6MjBweDsgfSAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSAucmVudE9yT3duUXVlc3Rpb24udndSZW50T3JPd257IGZsb2F0OmxlZnQ7IHRleHQtYWxpZ246Y2VudGVyOyBtYXJnaW4tdG9wOjVweDsgfSAuZHJWaWV3RGlzY2xhaW1lckxpbmsgeyB0ZXh0LWFsaWduOmxlZnQ7IGZvbnQtc2l6ZTowLjc1cmVtIDsgdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTsgfSAuZHJEaXNjbGFpbWVyRHJhd2VyIHsgcG9zaXRpb246Zml4ZWQ7IGxlZnQ6MDsgYm90dG9tOi0zMDBweDsgd2lkdGg6MTAwJTsgaGVpZ2h0OjIwMHB4OyBiYWNrZ3JvdW5kOiNmZmY7IGJveC1zaGFkb3c6MCAtMnB4IDEwcHggcmdiYSgwLDAsMCwwLjMpOyB0cmFuc2l0aW9uOmJvdHRvbSAwLjNzIGVhc2U7IGRpc3BsYXk6bm9uZTsgb3ZlcmZsb3c6YXV0bzsgei1pbmRleDoxMDAwMDAwMDAwOyB9IC5kckRpc2NsYWltZXJEcmF3ZXIub3BlbiB7IGJvdHRvbTowOyB9IC5kckRpc2NsYWltZXJEcmF3ZXIub3BlbiAuZHJEaXNjbGFpbWVyQ29udGVudCB7IHBhZGRpbmc6MjBweDsgcGFkZGluZy1ib3R0b206Y2FsYygyMHB4ICsgZW52KHNhZmUtYXJlYS1pbnNldC1ib3R0b20sIDBweCkpOyBvdmVyZmxvdy15OmF1dG87IH0gLmRyRGlzY2xhaW1lckRyYXdlci5vcGVuIC5jbG9zZURSRGlzY2xhaW1lckRyYXdlciwgLmRyRGlzY2xhaW1lckRyYXdlci5vcGVuIC5jbG9zZURSQ2FsY3VsYXRvckRpc2NsYWltZXJEcmF3ZXIgeyBwYWRkaW5nOjEwcHg7IGN1cnNvcjpwb2ludGVyOyB9IC5zdXBlclNjcmlwdFNwYW4geyBkaXNwbGF5OmlubGluZS1mbGV4OyB9Ci8qKiAvY3NzL2Zvcm1zL2Zvcm1zLnByZWxvYWQuY3NzICoqLwouZDJjZm9ybSB7IC0tbGFiZWwtcmVxdWlyZWQtc3ltYm9sOiIqIjsgLS1sYWJlbC1yZXF1aXJlZC1jb2xvcjojRkYwMDAwOyAtLWlucHV0LXBhZGRpbmc6dmFyKC0tcy0xKSB2YXIoLS1zMSk7IC0taW5wdXQtYmctY29sb3I6dmFyKC0td2hpdGUpOyAtLWlucHV0LWJvcmRlci1jb2xvcjp2YXIoLS1taWQtZ3JheSk7IC0taW5wdXQtcmFkaXVzOnZhcigtLXMtNik7IC0taW5wdXQtZm9udC1zaXplOnZhcigtLWZzMCk7IC0taW5wdXQtbGluZS1oZWlnaHQ6dmFyKC0tZnMyKTsgfSAuZDJjZm9ybSAqIHsgYm94LXNpemluZzpib3JkZXItYm94OyB9IC5kMmNmb3JtIGJveC1sYyB7IC0tc3BhY2U6dmFyKC0tcy00KTsgcGFkZGluZy1sZWZ0OjA7IHBhZGRpbmctcmlnaHQ6MDsgZGlzcGxheTpmbGV4OyBmbGV4LWRpcmVjdGlvbjpjb2x1bW47IGFsaWduLWl0ZW1zOmZsZXgtc3RhcnQ7IH0gLmQyY2Zvcm0tLXRoaW4gYm94LWxjIHsgLS1zcGFjZTp2YXIoLS1zLTkpOyB9IC5kMmNmb3JtLS1yb3cgc3RhY2stbGMgeyBmbGV4LWRpcmVjdGlvbjpyb3c7IGZsZXgtd3JhcDp3cmFwOyB9IC5kMmNmb3JtLS1yb3cgYm94LWxjIHsgcGFkZGluZy1yaWdodDp2YXIoLS1zcGFjZSk7IHBhZGRpbmctbGVmdDp2YXIoLS1zcGFjZSk7IH0gLmQyY2Zvcm0tLWhvcml6b250YWwgYm94LWxjIHsgZmxleC1kaXJlY3Rpb246cm93OyBhbGlnbi1pdGVtczpmbGV4LXN0YXJ0OyB9IC5kMmNmb3JtLS1ob3Jpem9udGFsIGJveC1sYyBsYWJlbCB7IG1pbi13aWR0aDoxMTVweDsgd2lkdGg6MzAlOyBwYWRkaW5nLXJpZ2h0OnZhcigtLXMpOyBtYXJnaW4tdG9wOnZhcigtLXMxKTsgbWFyZ2luLWJvdHRvbTowOyB9IC5kMmNmb3JtIGxhYmVsOmhhcyhbcmVxdWlyZWRdKSBzcGFuOmFmdGVyeyBjb2xvciA6dmFyKC0tbGFiZWwtcmVxdWlyZWQtY29sb3IpOyBjb250ZW50IDp2YXIoLS1sYWJlbC1yZXF1aXJlZC1zeW1ib2wpOyBwYWRkaW5nLWxlZnQgOnZhcigtLXMtNik7IH0gLmQyY2Zvcm0gbGFiZWw6bm90KC5maW5hbmNlQ2FsYyksIC5kMmNmb3JtIC5sYWJlbDpub3QoLmZpbmFuY2VDYWxjKSB7IG1hcmdpbi1ib3R0b206dmFyKC0tcy0zKTsgZm9udC1zaXplOnZhcigtLWlucHV0LWZvbnQtc2l6ZSk7IGxpbmUtaGVpZ2h0OnZhcigtLWlucHV0LWxpbmUtaGVpZ2h0KTsgZm9udC13ZWlnaHQ6NDAwOyB9IC5kMmNmb3JtIGxhYmVsLi0tcmVxdWlyZWQ6bm90KC50eHQtcmlnaHQpOmFmdGVyLCAuZDJjZm9ybSAubGFiZWwuLS1yZXF1aXJlZDpub3QoLnR4dC1yaWdodCk6YWZ0ZXIsIC5kMmNmb3JtIGxhYmVsLi1yZXF1aXJlZDpub3QoLnR4dC1yaWdodCk6YWZ0ZXIsIC5kMmNmb3JtIC5sYWJlbC4tcmVxdWlyZWQ6bm90KC50eHQtcmlnaHQpOmFmdGVyIHsgY29sb3IgOnZhcigtLWxhYmVsLXJlcXVpcmVkLWNvbG9yKTsgY29udGVudCA6dmFyKC0tbGFiZWwtcmVxdWlyZWQtc3ltYm9sKTsgcGFkZGluZy1sZWZ0IDp2YXIoLS1zLTYpOyB9IC5kMmNmb3JtIGxhYmVsLi0tcmVxdWlyZWQudHh0LXJpZ2h0OmJlZm9yZSwgLmQyY2Zvcm0gLmxhYmVsLi0tcmVxdWlyZWQudHh0LXJpZ2h0OmJlZm9yZSwgLmQyY2Zvcm0gbGFiZWwuLXJlcXVpcmVkLnR4dC1yaWdodDpiZWZvcmUsIC5kMmNmb3JtIC5sYWJlbC4tcmVxdWlyZWQudHh0LXJpZ2h0OmJlZm9yZSB7IGNvbG9yIDp2YXIoLS1sYWJlbC1yZXF1aXJlZC1jb2xvcik7IGNvbnRlbnQgOnZhcigtLWxhYmVsLXJlcXVpcmVkLXN5bWJvbCk7IHBhZGRpbmctcmlnaHQgOnZhcigtLXMtNik7IH0gLmQyY2Zvcm0gOndoZXJlKGlucHV0Om5vdChbdHlwZT1zdWJtaXRdLC5wYXltZW50Q2FsY3VsYXRvckRvd25QYXltZW50KTpub3QoW3R5cGU9InJhZGlvIl0pOm5vdChbdHlwZT0iY2hlY2tib3giXSkpLCAuZDJjZm9ybSBzZWxlY3Q6bm90KC5wYXltZW50Q2FsY3VsYXRvckludGVydmFsLC5wYXltZW50Q2FsY3VsYXRvckttQWxsb3dhbmNlLC5maW5hbmNlTXVsdGlzdGVwVXNlZENhbGN1bGF0b3IgLmNhbGMtZm9ybSBzZWxlY3QpLCAuZDJjZm9ybSB0ZXh0YXJlYSB7IHdpZHRoOjEwMCU7IHBhZGRpbmc6dmFyKC0taW5wdXQtcGFkZGluZyk7IGJhY2tncm91bmQtY29sb3I6dmFyKC0taW5wdXQtYmctY29sb3IpOyBib3JkZXItcmFkaXVzOnZhcigtLWlucHV0LXJhZGl1cyk7IGJvcmRlcjoxcHggc29saWQgdmFyKC0taW5wdXQtYm9yZGVyLWNvbG9yKTsgY29sb3I6IzIxMjUyOTsgZm9udC1zaXplOnZhcigtLWlucHV0LWZvbnQtc2l6ZSk7IGxpbmUtaGVpZ2h0OnZhcigtLWlucHV0LWxpbmUtaGVpZ2h0KTsgZm9udC13ZWlnaHQ6NDAwOyB9IC5kMmNmb3JtIGlucHV0Om5vdChbdHlwZT1zdWJtaXRdKTpub3QoW3R5cGU9InJhZGlvIl0pOm5vdChbdHlwZT0iY2hlY2tib3giXSksIC5kMmNmb3JtIHNlbGVjdCB7IGhlaWdodDozNXB4OyB9IC5kMmNmb3JtIC5pbnZhbGlkID4gOmlzKGlucHV0LHNlbGVjdCx0ZXh0YXJlYSl7IGJhY2tncm91bmQtY29sb3I6I2ZhZDZkYzsgfSAuZDJjZm9ybSBpbnB1dDpkaXNhYmxlZCwgLmQyY2Zvcm0gaW5wdXQuZGlzYWJsZWQgeyBiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjM5LCAyMzksIDIzOSwgMC4zKTsgY29sb3I6cmdiKDg0LCA4NCwgODQpOyBib3JkZXItY29sb3I6cmdiYSgxMTgsIDExOCwgMTE4LCAwLjMpOyBjdXJzb3I6bm90LWFsbG93ZWQ7IH0gLmQyY2Zvcm0gaW5wdXQudHh0LXVwcGVyIHsgdGV4dC10cmFuc2Zvcm06bm9uZTsgfSAuZDJjZm9ybSBpbnB1dC50eHQtdXBwZXI6OnBsYWNlaG9sZGVyIHsgdGV4dC10cmFuc2Zvcm06dmFyKC0tdHh0LXVwcGVyLCB1cHBlcmNhc2UpOyB9IC5kMmNmb3JtIC5pbnB1dC1pY29uLWxlZnQsIC5kMmNmb3JtIC5pbnB1dC1pY29uLXJpZ2h0IHsgcG9zaXRpb246cmVsYXRpdmU7IH0gLmQyY2Zvcm0gLmlucHV0LWljb24geyBwb3NpdGlvbjphYnNvbHV0ZTsgei1pbmRleDoxOyB0b3A6dmFyKC0tczEpOyBmb250LXNpemU6dmFyKC0taW5wdXQtZm9udC1zaXplKTsgbGluZS1oZWlnaHQ6dmFyKC0taW5wdXQtbGluZS1oZWlnaHQpOyBjb2xvcjp2YXIoLS1kYXJrLWdyYXkpOyB9IC5kMmNmb3JtIC5pbnB1dC1pY29uLXJpZ2h0IC5pbnB1dC1pY29uIHsgcmlnaHQ6dmFyKC0tczQpOyB9IC5kMmNmb3JtIC5pbnB1dC1pY29uLWxlZnQgLmlucHV0LWljb24geyBsZWZ0OnZhcigtLXM0KTsgfSAuZDJjZm9ybSAuaW5wdXQtaWNvbi1sZWZ0IGlucHV0IHsgcGFkZGluZy1sZWZ0OnZhcigtLXM5KTsgfSAuZDJjZm9ybSAuc2VwYXJhdG9yIHsgd2lkdGg6MTAwJTsgYm9yZGVyLXRvcDoxcHggc29saWQgI2Q0ZDRkNDsgbWFyZ2luLXRvcDp2YXIoLS1zNyk7IG1hcmdpbi1ib3R0b206dmFyKC0tczcpOyB9IC5kMmNmb3JtIC5yYWRpby1pbmxpbmUgeyBkaXNwbGF5OmZsZXg7IHdpZHRoOjEwMCU7IH0gLmQyY2Zvcm0gLmNoZWNrYm94LWxpc3QgeyBkaXNwbGF5OmZsZXg7IGZsZXgtZGlyZWN0aW9uOmNvbHVtbjsgbWFyZ2luLWJvdHRvbTp2YXIoLS1zLTMpOyB9IC5kMmNmb3JtIC5jaGVja2JveC1saXN0ID4gKiB7IG1hcmdpbi1ib3R0b206MDsgfSAuZDJjZm9ybSAubXVsdGlwbGUtaW5wdXQgeyBkaXNwbGF5OmZsZXg7IHdpZHRoOjEwMCU7IH0gLmQyY2Zvcm0gLm11bHRpcGxlLWlucHV0ID4gKjpub3QoOmxhc3Qtb2YtdHlwZSkgeyBtYXJnaW4tcmlnaHQ6dmFyKC0tczEpOyB9IC5kMmNmb3JtIC5pbnB1dC1ncm91cCB7IGRpc3BsYXk6ZmxleDsgd2lkdGggOjEwMCU7IH0gLmQyY2Zvcm0gLmlucHV0LWdyb3VwIC5pbnB1dC1ncm91cC10ZXh0IHsgZGlzcGxheTpmbGV4OyBhbGlnbi1pdGVtczpjZW50ZXI7IHBhZGRpbmc6dmFyKC0taW5wdXQtcGFkZGluZyk7IGJhY2tncm91bmQ6dmFyKC0tbGlnaHQtZ3JheSk7IGJvcmRlcjoxcHggc29saWQgdmFyKC0taW5wdXQtYm9yZGVyLWNvbG9yKTsgYm9yZGVyLXJhZGl1czp2YXIoLS1pbnB1dC1yYWRpdXMpOyBmb250LXNpemU6dmFyKC0taW5wdXQtZm9udC1zaXplKTsgbGluZS1oZWlnaHQ6dmFyKC0taW5wdXQtbGluZS1oZWlnaHQpOyB3aGl0ZS1zcGFjZTpub3dyYXA7IH0gLmQyY2Zvcm0gLmlucHV0LWdyb3VwID4gOm5vdCg6Zmlyc3QtY2hpbGQpIHsgYm9yZGVyLWxlZnQ6MDsgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czowICFpbXBvcnRhbnQ7IGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6MCAhaW1wb3J0YW50OyB9IC5kMmNmb3JtIC5pbnB1dC1ncm91cCA+IDpub3QoOmxhc3QtY2hpbGQpIHsgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6MCAhaW1wb3J0YW50OyBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czowICFpbXBvcnRhbnQ7IH0gQG1lZGlhIChtYXgtd2lkdGg6OTgwcHgpIHsgLmQyY2Zvcm0tLWhvcml6b250YWwgYm94LWxjIGxhYmVsIHsgbWluLXdpZHRoOjg1cHg7IH0gfQovKiogL2Nzcy9mb3Jtcy9mb3Jtcy5jc3MgKiovCi5kMmNmb3JtIGlucHV0Om5vdChbdHlwZT1zdWJtaXRdKTpub3QoW3R5cGU9InJhZGlvIl0pOm5vdChbdHlwZT0iY2hlY2tib3giXSksIC5kMmNmb3JtIHNlbGVjdCwgLmQyY2Zvcm0gdGV4dGFyZWEgeyB0cmFuc2l0aW9uOmJvcmRlci1jb2xvciAuMTVzIGVhc2UtaW4tb3V0LGJveC1zaGFkb3cgLjE1cyBlYXNlLWluLW91dDsgfSAuZDJjZm9ybSBpbnB1dDpub3QoW3R5cGU9c3VibWl0XSk6bm90KFt0eXBlPSJyYWRpbyJdKTpub3QoW3R5cGU9ImNoZWNrYm94Il0pOmZvY3VzLCAuZDJjZm9ybSBzZWxlY3Q6Zm9jdXMsIC5kMmNmb3JtIHRleHRhcmVhOmZvY3VzIHsgYm9yZGVyLWNvbG9yOiM4NmI3ZmU7IG91dGxpbmU6MDsgYm94LXNoYWRvdzowIDAgMCAwLjJyZW0gcmdiKDEzIDExMCAyNTMgLyAyNSUpOyB9IC5kMmNmb3JtIC5pbnB1dC1ncm91cCBpbnB1dDpub3QoW3R5cGU9c3VibWl0XSk6bm90KFt0eXBlPSJyYWRpbyJdKTpub3QoW3R5cGU9ImNoZWNrYm94Il0pOmZvY3VzLCAuZDJjZm9ybSAuaW5wdXQtZ3JvdXAgc2VsZWN0OmZvY3VzLCAuZDJjZm9ybSAuaW5wdXQtZ3JvdXAgdGV4dGFyZWE6Zm9jdXMgeyB6LWluZGV4OjM7IH0gLmQyY2Zvcm0gaW5wdXQudmFsaWRpdHktZXJyb25lb3VzLCAuZDJjZm9ybSBzZWxlY3QudmFsaWRpdHktZXJyb25lb3VzLCAuZDJjZm9ybSB0ZXh0YXJlYS52YWxpZGl0eS1lcnJvbmVvdXMsIC5kMmNmb3JtIC5pbnB1dC1ncm91cCAudmFsaWRpdHktZXJyb25lb3VzICsgLmlucHV0LWdyb3VwLXRleHQgeyBib3JkZXItY29sb3I6I2RjMzU0NSAhaW1wb3J0YW50OyBiYWNrZ3JvdW5kLWNvbG9yOiNmYWQ2ZGMgIWltcG9ydGFudDsgfSAuZDJjZm9ybSBpbnB1dC52YWxpZGl0eS1lcnJvbmVvdXM6OnBsYWNlaG9sZGVyLCAuZDJjZm9ybSB0ZXh0YXJlYS52YWxpZGl0eS1lcnJvbmVvdXM6OnBsYWNlaG9sZGVyLCAuZDJjZm9ybSBzZWxlY3QudmFsaWRpdHktZXJyb25lb3VzLCAuZDJjZm9ybSAuaW5wdXQtZ3JvdXAgLnZhbGlkaXR5LWVycm9uZW91cyArIC5pbnB1dC1ncm91cC10ZXh0IHsgY29sb3I6I2RjMzU0NTsgfQovKiogL2Nzcy92Mi9tb2RhbC5jc3MgKiovCi5tb2RhbC13cmFwcGVyIHsgcG9zaXRpb246Zml4ZWQ7IHRvcDoxNTAlOyBsZWZ0OjUwJTsgdHJhbnNmb3JtOnRyYW5zbGF0ZSgtNTAlLCAtNTAlKTsgei1pbmRleDoxNjAwMTsgdHJhbnNpdGlvbjp0b3AgMTUwbXMgZWFzZS1pbjsgfSAubW9kYWwtd3JhcHBlci5pcy1hY3RpdmV7IHRvcDo1MCU7IH0gLm1vZGFsLXdyYXBwZXIgLm1vZGFsLWJvZHl7IG1pbi13aWR0aDoyMHJlbTsgbWF4LXdpZHRoOjEwMCU7IG1heC1oZWlnaHQ6ODV2aDsgb3ZlcmZsb3cteTphdXRvOyB9IC5tb2RhbC1vdmVybGF5eyBwb3NpdGlvbjpmaXhlZDsgdG9wOjA7IGxlZnQ6MDsgd2lkdGg6MTAwdnc7IGhlaWdodDoxMDB2aDsgYmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLDAuNSk7IHotaW5kZXg6MTAwMDA7IH0gLmxvYWRpbmctb3ZlcmxheXsgcG9zaXRpb246YWJzb2x1dGU7IHdpZHRoOjEwMCU7IGhlaWdodDoxMDAlOyB0b3A6MDsgbGVmdDowOyBiYWNrZ3JvdW5kLWltYWdlOnVybCgvaW1hZ2VzL2FqYXgtbG9hZGVyLmdpZik7IGJhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDsgYmFja2dyb3VuZC1wb3NpdGlvbjpjZW50ZXI7IH0gLm1vZGFsLXdyYXBwZXIgOmlzKGlucHV0W3R5cGU9InRleHQiXSxpbnB1dFt0eXBlPSJlbWFpbCJdLGlucHV0W3R5cGU9InRlbCJdKXsgcGFkZGluZzowLjRyZW07IGJvcmRlcjoxcHggc29saWQgdmFyKC0tbWlkLWdyYXkpOyBib3JkZXItcmFkaXVzOjAuM3JlbTsgfSAubW9kYWwtYm9keSAuaWZyYW1lLXdyYXBwZXJ7IHdpZHRoOm1heCg5MHZ3LCAyMC41cmVtKTsgaGVpZ2h0Om1heCg4NHZoLCAzMHJlbSk7IHdpZHRoOmNsYW1wKDIwLjVyZW0sIG1heCg5MHZ3LCAyMC41cmVtKSwgNjByZW0pOyBoZWlnaHQ6Y2xhbXAoMzByZW0sIG1heCg4NHZoLCAzMHJlbSksIDYwcmVtKTsgfSAubW9kYWwtYm9keSAuaWZyYW1lLXdyYXBwZXIgaWZyYW1leyB3aWR0aDoxMDAlOyBoZWlnaHQ6MTAwJTsgfQovKiogL2Nzcy92Mi9mbGF0cGlja3IubWluLmNzcyAqKi8KLmZsYXRwaWNrci1jYWxlbmRhcntiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O29wYWNpdHk6MDtkaXNwbGF5Om5vbmU7dGV4dC1hbGlnbjpjZW50ZXI7dmlzaWJpbGl0eTpoaWRkZW47cGFkZGluZzowOy13ZWJraXQtYW5pbWF0aW9uOm5vbmU7YW5pbWF0aW9uOm5vbmU7ZGlyZWN0aW9uOmx0cjtib3JkZXI6MDtmb250LXNpemU6MC44NzVyZW0gO2xpbmUtaGVpZ2h0OjI0cHg7Ym9yZGVyLXJhZGl1czo1cHg7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MzA3Ljg3NXB4Oy13ZWJraXQtYm94LXNpemluZzpib3JkZXItYm94O2JveC1zaXppbmc6Ym9yZGVyLWJveDstbXMtdG91Y2gtYWN0aW9uOm1hbmlwdWxhdGlvbjt0b3VjaC1hY3Rpb246bWFuaXB1bGF0aW9uO2JhY2tncm91bmQ6I2ZmZjstd2Via2l0LWJveC1zaGFkb3c6MXB4IDAgMCAjZTZlNmU2LC0xcHggMCAwICNlNmU2ZTYsMCAxcHggMCAjZTZlNmU2LDAgLTFweCAwICNlNmU2ZTYsMCAzcHggMTNweCByZ2JhKDAsMCwwLDAuMDgpO2JveC1zaGFkb3c6MXB4IDAgMCAjZTZlNmU2LC0xcHggMCAwICNlNmU2ZTYsMCAxcHggMCAjZTZlNmU2LDAgLTFweCAwICNlNmU2ZTYsMCAzcHggMTNweCByZ2JhKDAsMCwwLDAuMDgpfS5mbGF0cGlja3ItY2FsZW5kYXIub3BlbiwuZmxhdHBpY2tyLWNhbGVuZGFyLmlubGluZXtvcGFjaXR5OjE7bWF4LWhlaWdodDo2NDBweDt2aXNpYmlsaXR5OnZpc2libGV9LmZsYXRwaWNrci1jYWxlbmRhci5vcGVue2Rpc3BsYXk6aW5saW5lLWJsb2NrO3otaW5kZXg6OTk5OTl9LmZsYXRwaWNrci1jYWxlbmRhci5hbmltYXRlLm9wZW57LXdlYmtpdC1hbmltYXRpb246ZnBGYWRlSW5Eb3duIDMwMG1zIGN1YmljLWJlemllciguMjMsMSwuMzIsMSk7YW5pbWF0aW9uOmZwRmFkZUluRG93biAzMDBtcyBjdWJpYy1iZXppZXIoLjIzLDEsLjMyLDEpfS5mbGF0cGlja3ItY2FsZW5kYXIuaW5saW5le2Rpc3BsYXk6YmxvY2s7cG9zaXRpb246cmVsYXRpdmU7dG9wOjJweH0uZmxhdHBpY2tyLWNhbGVuZGFyLnN0YXRpY3twb3NpdGlvbjphYnNvbHV0ZTt0b3A6Y2FsYygxMDAlICsgMnB4KX0uZmxhdHBpY2tyLWNhbGVuZGFyLnN0YXRpYy5vcGVue3otaW5kZXg6OTk5O2Rpc3BsYXk6YmxvY2t9LmZsYXRwaWNrci1jYWxlbmRhci5tdWx0aU1vbnRoIC5mbGF0cGlja3ItZGF5cyAuZGF5Q29udGFpbmVyOm50aC1jaGlsZChuKzEpIC5mbGF0cGlja3ItZGF5LmluUmFuZ2U6bnRoLWNoaWxkKDduKzcpey13ZWJraXQtYm94LXNoYWRvdzpub25lICFpbXBvcnRhbnQ7Ym94LXNoYWRvdzpub25lICFpbXBvcnRhbnR9LmZsYXRwaWNrci1jYWxlbmRhci5tdWx0aU1vbnRoIC5mbGF0cGlja3ItZGF5cyAuZGF5Q29udGFpbmVyOm50aC1jaGlsZChuKzIpIC5mbGF0cGlja3ItZGF5LmluUmFuZ2U6bnRoLWNoaWxkKDduKzEpey13ZWJraXQtYm94LXNoYWRvdzotMnB4IDAgMCAjZTZlNmU2LDVweCAwIDAgI2U2ZTZlNjtib3gtc2hhZG93Oi0ycHggMCAwICNlNmU2ZTYsNXB4IDAgMCAjZTZlNmU2fS5mbGF0cGlja3ItY2FsZW5kYXIgLmhhc1dlZWtzIC5kYXlDb250YWluZXIsLmZsYXRwaWNrci1jYWxlbmRhciAuaGFzVGltZSAuZGF5Q29udGFpbmVye2JvcmRlci1ib3R0b206MDtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czowO2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6MH0uZmxhdHBpY2tyLWNhbGVuZGFyIC5oYXNXZWVrcyAuZGF5Q29udGFpbmVye2JvcmRlci1sZWZ0OjB9LmZsYXRwaWNrci1jYWxlbmRhci5oYXNUaW1lIC5mbGF0cGlja3ItdGltZXtoZWlnaHQ6NDBweDtib3JkZXItdG9wOjFweCBzb2xpZCAjZTZlNmU2fS5mbGF0cGlja3ItY2FsZW5kYXIubm9DYWxlbmRhci5oYXNUaW1lIC5mbGF0cGlja3ItdGltZXtoZWlnaHQ6YXV0b30uZmxhdHBpY2tyLWNhbGVuZGFyOmJlZm9yZSwuZmxhdHBpY2tyLWNhbGVuZGFyOmFmdGVye3Bvc2l0aW9uOmFic29sdXRlO2Rpc3BsYXk6YmxvY2s7cG9pbnRlci1ldmVudHM6bm9uZTtib3JkZXI6c29saWQgdHJhbnNwYXJlbnQ7Y29udGVudDonJztoZWlnaHQ6MDt3aWR0aDowO2xlZnQ6MjJweH0uZmxhdHBpY2tyLWNhbGVuZGFyLnJpZ2h0TW9zdDpiZWZvcmUsLmZsYXRwaWNrci1jYWxlbmRhci5hcnJvd1JpZ2h0OmJlZm9yZSwuZmxhdHBpY2tyLWNhbGVuZGFyLnJpZ2h0TW9zdDphZnRlciwuZmxhdHBpY2tyLWNhbGVuZGFyLmFycm93UmlnaHQ6YWZ0ZXJ7bGVmdDphdXRvO3JpZ2h0OjIycHh9LmZsYXRwaWNrci1jYWxlbmRhci5hcnJvd0NlbnRlcjpiZWZvcmUsLmZsYXRwaWNrci1jYWxlbmRhci5hcnJvd0NlbnRlcjphZnRlcntsZWZ0OjUwJTtyaWdodDo1MCV9LmZsYXRwaWNrci1jYWxlbmRhcjpiZWZvcmV7Ym9yZGVyLXdpZHRoOjVweDttYXJnaW46MCAtNXB4fS5mbGF0cGlja3ItY2FsZW5kYXI6YWZ0ZXJ7Ym9yZGVyLXdpZHRoOjRweDttYXJnaW46MCAtNHB4fS5mbGF0cGlja3ItY2FsZW5kYXIuYXJyb3dUb3A6YmVmb3JlLC5mbGF0cGlja3ItY2FsZW5kYXIuYXJyb3dUb3A6YWZ0ZXJ7Ym90dG9tOjEwMCV9LmZsYXRwaWNrci1jYWxlbmRhci5hcnJvd1RvcDpiZWZvcmV7Ym9yZGVyLWJvdHRvbS1jb2xvcjojZTZlNmU2fS5mbGF0cGlja3ItY2FsZW5kYXIuYXJyb3dUb3A6YWZ0ZXJ7Ym9yZGVyLWJvdHRvbS1jb2xvcjojZmZmfS5mbGF0cGlja3ItY2FsZW5kYXIuYXJyb3dCb3R0b206YmVmb3JlLC5mbGF0cGlja3ItY2FsZW5kYXIuYXJyb3dCb3R0b206YWZ0ZXJ7dG9wOjEwMCV9LmZsYXRwaWNrci1jYWxlbmRhci5hcnJvd0JvdHRvbTpiZWZvcmV7Ym9yZGVyLXRvcC1jb2xvcjojZTZlNmU2fS5mbGF0cGlja3ItY2FsZW5kYXIuYXJyb3dCb3R0b206YWZ0ZXJ7Ym9yZGVyLXRvcC1jb2xvcjojZmZmfS5mbGF0cGlja3ItY2FsZW5kYXI6Zm9jdXN7b3V0bGluZTowfS5mbGF0cGlja3Itd3JhcHBlcntwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5OmlubGluZS1ibG9ja30uZmxhdHBpY2tyLW1vbnRoc3tkaXNwbGF5Oi13ZWJraXQtYm94O2Rpc3BsYXk6LXdlYmtpdC1mbGV4O2Rpc3BsYXk6LW1zLWZsZXhib3g7ZGlzcGxheTpmbGV4fS5mbGF0cGlja3ItbW9udGhzIC5mbGF0cGlja3ItbW9udGh7YmFja2dyb3VuZDp0cmFuc3BhcmVudDtjb2xvcjpyZ2JhKDAsMCwwLDAuOSk7ZmlsbDpyZ2JhKDAsMCwwLDAuOSk7aGVpZ2h0OjM0cHg7bGluZS1oZWlnaHQ6MTt0ZXh0LWFsaWduOmNlbnRlcjtwb3NpdGlvbjpyZWxhdGl2ZTstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7LW1vei11c2VyLXNlbGVjdDpub25lOy1tcy11c2VyLXNlbGVjdDpub25lO3VzZXItc2VsZWN0Om5vbmU7b3ZlcmZsb3c6aGlkZGVuOy13ZWJraXQtYm94LWZsZXg6MTstd2Via2l0LWZsZXg6MTstbXMtZmxleDoxO2ZsZXg6MX0uZmxhdHBpY2tyLW1vbnRocyAuZmxhdHBpY2tyLXByZXYtbW9udGgsLmZsYXRwaWNrci1tb250aHMgLmZsYXRwaWNrci1uZXh0LW1vbnRoe3RleHQtZGVjb3JhdGlvbjpub25lO2N1cnNvcjpwb2ludGVyO3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2hlaWdodDozNHB4O3BhZGRpbmc6MTBweDt6LWluZGV4OjM7Y29sb3I6cmdiYSgwLDAsMCwwLjkpO2ZpbGw6cmdiYSgwLDAsMCwwLjkpfS5mbGF0cGlja3ItbW9udGhzIC5mbGF0cGlja3ItcHJldi1tb250aC5mbGF0cGlja3ItZGlzYWJsZWQsLmZsYXRwaWNrci1tb250aHMgLmZsYXRwaWNrci1uZXh0LW1vbnRoLmZsYXRwaWNrci1kaXNhYmxlZHtkaXNwbGF5Om5vbmV9LmZsYXRwaWNrci1tb250aHMgLmZsYXRwaWNrci1wcmV2LW1vbnRoIGksLmZsYXRwaWNrci1tb250aHMgLmZsYXRwaWNrci1uZXh0LW1vbnRoIGl7cG9zaXRpb246cmVsYXRpdmV9LmZsYXRwaWNrci1tb250aHMgLmZsYXRwaWNrci1wcmV2LW1vbnRoLmZsYXRwaWNrci1wcmV2LW1vbnRoLC5mbGF0cGlja3ItbW9udGhzIC5mbGF0cGlja3ItbmV4dC1tb250aC5mbGF0cGlja3ItcHJldi1tb250aHtsZWZ0OjB9IC5mbGF0cGlja3ItbW9udGhzIC5mbGF0cGlja3ItcHJldi1tb250aC5mbGF0cGlja3ItbmV4dC1tb250aCwuZmxhdHBpY2tyLW1vbnRocyAuZmxhdHBpY2tyLW5leHQtbW9udGguZmxhdHBpY2tyLW5leHQtbW9udGh7cmlnaHQ6MH0gLmZsYXRwaWNrci1tb250aHMgLmZsYXRwaWNrci1wcmV2LW1vbnRoOmhvdmVyLC5mbGF0cGlja3ItbW9udGhzIC5mbGF0cGlja3ItbmV4dC1tb250aDpob3Zlcntjb2xvcjojOTU5ZWE5fS5mbGF0cGlja3ItbW9udGhzIC5mbGF0cGlja3ItcHJldi1tb250aDpob3ZlciBzdmcsLmZsYXRwaWNrci1tb250aHMgLmZsYXRwaWNrci1uZXh0LW1vbnRoOmhvdmVyIHN2Z3tmaWxsOiNmNjQ3NDd9LmZsYXRwaWNrci1tb250aHMgLmZsYXRwaWNrci1wcmV2LW1vbnRoIHN2ZywuZmxhdHBpY2tyLW1vbnRocyAuZmxhdHBpY2tyLW5leHQtbW9udGggc3Zne3dpZHRoOjE0cHg7aGVpZ2h0OjE0cHh9LmZsYXRwaWNrci1tb250aHMgLmZsYXRwaWNrci1wcmV2LW1vbnRoIHN2ZyBwYXRoLC5mbGF0cGlja3ItbW9udGhzIC5mbGF0cGlja3ItbmV4dC1tb250aCBzdmcgcGF0aHstd2Via2l0LXRyYW5zaXRpb246ZmlsbCAuMXM7dHJhbnNpdGlvbjpmaWxsIC4xcztmaWxsOmluaGVyaXR9Lm51bUlucHV0V3JhcHBlcntwb3NpdGlvbjpyZWxhdGl2ZTtoZWlnaHQ6YXV0b30ubnVtSW5wdXRXcmFwcGVyIGlucHV0LC5udW1JbnB1dFdyYXBwZXIgc3BhbntkaXNwbGF5OmlubGluZS1ibG9ja30ubnVtSW5wdXRXcmFwcGVyIGlucHV0e3dpZHRoOjEwMCV9Lm51bUlucHV0V3JhcHBlciBpbnB1dDo6LW1zLWNsZWFye2Rpc3BsYXk6bm9uZX0ubnVtSW5wdXRXcmFwcGVyIGlucHV0Ojotd2Via2l0LW91dGVyLXNwaW4tYnV0dG9uLC5udW1JbnB1dFdyYXBwZXIgaW5wdXQ6Oi13ZWJraXQtaW5uZXItc3Bpbi1idXR0b257bWFyZ2luOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmV9Lm51bUlucHV0V3JhcHBlciBzcGFue3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0OjA7d2lkdGg6MTRweDtwYWRkaW5nOjAgNHB4IDAgMnB4O2hlaWdodDo1MCU7bGluZS1oZWlnaHQ6NTAlO29wYWNpdHk6MDtjdXJzb3I6cG9pbnRlcjtib3JkZXI6MXB4IHNvbGlkIHJnYmEoNTcsNTcsNTcsMC4xNSk7LXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7Ym94LXNpemluZzpib3JkZXItYm94fS5udW1JbnB1dFdyYXBwZXIgc3Bhbjpob3ZlcntiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsMC4xKX0ubnVtSW5wdXRXcmFwcGVyIHNwYW46YWN0aXZle2JhY2tncm91bmQ6cmdiYSgwLDAsMCwwLjIpfS5udW1JbnB1dFdyYXBwZXIgc3BhbjphZnRlcntkaXNwbGF5OmJsb2NrO2NvbnRlbnQ6IiI7cG9zaXRpb246YWJzb2x1dGV9Lm51bUlucHV0V3JhcHBlciBzcGFuLmFycm93VXB7dG9wOjA7Ym9yZGVyLWJvdHRvbTowfS5udW1JbnB1dFdyYXBwZXIgc3Bhbi5hcnJvd1VwOmFmdGVye2JvcmRlci1sZWZ0OjRweCBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItcmlnaHQ6NHB4IHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1ib3R0b206NHB4IHNvbGlkIHJnYmEoNTcsNTcsNTcsMC42KTt0b3A6MjYlfS5udW1JbnB1dFdyYXBwZXIgc3Bhbi5hcnJvd0Rvd257dG9wOjUwJX0ubnVtSW5wdXRXcmFwcGVyIHNwYW4uYXJyb3dEb3duOmFmdGVye2JvcmRlci1sZWZ0OjRweCBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItcmlnaHQ6NHB4IHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci10b3A6NHB4IHNvbGlkIHJnYmEoNTcsNTcsNTcsMC42KTt0b3A6NDAlfS5udW1JbnB1dFdyYXBwZXIgc3BhbiBzdmd7d2lkdGg6aW5oZXJpdDtoZWlnaHQ6YXV0b30ubnVtSW5wdXRXcmFwcGVyIHNwYW4gc3ZnIHBhdGh7ZmlsbDpyZ2JhKDAsMCwwLDAuNSl9Lm51bUlucHV0V3JhcHBlcjpob3ZlcntiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsMC4wNSl9Lm51bUlucHV0V3JhcHBlcjpob3ZlciBzcGFue29wYWNpdHk6MX0uZmxhdHBpY2tyLWN1cnJlbnQtbW9udGh7Zm9udC1zaXplOjEzNSU7bGluZS1oZWlnaHQ6aW5oZXJpdDtmb250LXdlaWdodDozMDA7Y29sb3I6aW5oZXJpdDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDo3NSU7bGVmdDoxMi41JTtwYWRkaW5nOjcuNDhweCAwIDAgMDtsaW5lLWhlaWdodDoxO2hlaWdodDozNHB4O2Rpc3BsYXk6aW5saW5lLWJsb2NrO3RleHQtYWxpZ246Y2VudGVyOy13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsMCwwKTt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwwLDApfS5mbGF0cGlja3ItY3VycmVudC1tb250aCBzcGFuLmN1ci1tb250aHtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtd2VpZ2h0OjcwMDtjb2xvcjppbmhlcml0O2Rpc3BsYXk6aW5saW5lLWJsb2NrO21hcmdpbi1sZWZ0Oi41Y2g7cGFkZGluZzowfS5mbGF0cGlja3ItY3VycmVudC1tb250aCBzcGFuLmN1ci1tb250aDpob3ZlcntiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsMC4wNSl9LmZsYXRwaWNrci1jdXJyZW50LW1vbnRoIC5udW1JbnB1dFdyYXBwZXJ7d2lkdGg6NmNoO3dpZHRoOjdjaFwwO2Rpc3BsYXk6aW5saW5lLWJsb2NrfS5mbGF0cGlja3ItY3VycmVudC1tb250aCAubnVtSW5wdXRXcmFwcGVyIHNwYW4uYXJyb3dVcDphZnRlcntib3JkZXItYm90dG9tLWNvbG9yOnJnYmEoMCwwLDAsMC45KX0uZmxhdHBpY2tyLWN1cnJlbnQtbW9udGggLm51bUlucHV0V3JhcHBlciBzcGFuLmFycm93RG93bjphZnRlcntib3JkZXItdG9wLWNvbG9yOnJnYmEoMCwwLDAsMC45KX0uZmxhdHBpY2tyLWN1cnJlbnQtbW9udGggaW5wdXQuY3VyLXllYXJ7YmFja2dyb3VuZDp0cmFuc3BhcmVudDstd2Via2l0LWJveC1zaXppbmc6Ym9yZGVyLWJveDtib3gtc2l6aW5nOmJvcmRlci1ib3g7Y29sb3I6aW5oZXJpdDtjdXJzb3I6dGV4dDtwYWRkaW5nOjAgMCAwIC41Y2g7bWFyZ2luOjA7ZGlzcGxheTppbmxpbmUtYmxvY2s7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXdlaWdodDozMDA7bGluZS1oZWlnaHQ6aW5oZXJpdDtoZWlnaHQ6YXV0bztib3JkZXI6MDtib3JkZXItcmFkaXVzOjA7dmVydGljYWwtYWxpZ246aW5pdGlhbDstd2Via2l0LWFwcGVhcmFuY2U6dGV4dGZpZWxkOy1tb3otYXBwZWFyYW5jZTp0ZXh0ZmllbGQ7YXBwZWFyYW5jZTp0ZXh0ZmllbGR9LmZsYXRwaWNrci1jdXJyZW50LW1vbnRoIGlucHV0LmN1ci15ZWFyOmZvY3Vze291dGxpbmU6MH0uZmxhdHBpY2tyLWN1cnJlbnQtbW9udGggaW5wdXQuY3VyLXllYXJbZGlzYWJsZWRdLC5mbGF0cGlja3ItY3VycmVudC1tb250aCBpbnB1dC5jdXIteWVhcltkaXNhYmxlZF06aG92ZXJ7Zm9udC1zaXplOjEwMCU7Y29sb3I6cmdiYSgwLDAsMCwwLjUpO2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7cG9pbnRlci1ldmVudHM6bm9uZX0uZmxhdHBpY2tyLWN1cnJlbnQtbW9udGggLmZsYXRwaWNrci1tb250aERyb3Bkb3duLW1vbnRoc3thcHBlYXJhbmNlOm1lbnVsaXN0O2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7Ym9yZGVyOm5vbmU7Ym9yZGVyLXJhZGl1czowO2JveC1zaXppbmc6Ym9yZGVyLWJveDtjb2xvcjppbmhlcml0O2N1cnNvcjpwb2ludGVyO2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC13ZWlnaHQ6MzAwO2hlaWdodDphdXRvO2xpbmUtaGVpZ2h0OmluaGVyaXQ7bWFyZ2luOi0xcHggMCAwIDA7b3V0bGluZTpub25lO3BhZGRpbmc6MCAwIDAgLjVjaDtwb3NpdGlvbjpyZWxhdGl2ZTt2ZXJ0aWNhbC1hbGlnbjppbml0aWFsOy13ZWJraXQtYm94LXNpemluZzpib3JkZXItYm94Oy13ZWJraXQtYXBwZWFyYW5jZTptZW51bGlzdDstbW96LWFwcGVhcmFuY2U6bWVudWxpc3Q7d2lkdGg6YXV0b30uZmxhdHBpY2tyLWN1cnJlbnQtbW9udGggLmZsYXRwaWNrci1tb250aERyb3Bkb3duLW1vbnRoczpmb2N1cywuZmxhdHBpY2tyLWN1cnJlbnQtbW9udGggLmZsYXRwaWNrci1tb250aERyb3Bkb3duLW1vbnRoczphY3RpdmV7b3V0bGluZTpub25lfS5mbGF0cGlja3ItY3VycmVudC1tb250aCAuZmxhdHBpY2tyLW1vbnRoRHJvcGRvd24tbW9udGhzOmhvdmVye2JhY2tncm91bmQ6cmdiYSgwLDAsMCwwLjA1KX0uZmxhdHBpY2tyLWN1cnJlbnQtbW9udGggLmZsYXRwaWNrci1tb250aERyb3Bkb3duLW1vbnRocyAuZmxhdHBpY2tyLW1vbnRoRHJvcGRvd24tbW9udGh7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtvdXRsaW5lOm5vbmU7cGFkZGluZzowfS5mbGF0cGlja3Itd2Vla2RheXN7YmFja2dyb3VuZDp0cmFuc3BhcmVudDt0ZXh0LWFsaWduOmNlbnRlcjtvdmVyZmxvdzpoaWRkZW47d2lkdGg6MTAwJTtkaXNwbGF5Oi13ZWJraXQtYm94O2Rpc3BsYXk6LXdlYmtpdC1mbGV4O2Rpc3BsYXk6LW1zLWZsZXhib3g7ZGlzcGxheTpmbGV4Oy13ZWJraXQtYm94LWFsaWduOmNlbnRlcjstd2Via2l0LWFsaWduLWl0ZW1zOmNlbnRlcjstbXMtZmxleC1hbGlnbjpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyO2hlaWdodDoyOHB4fS5mbGF0cGlja3Itd2Vla2RheXMgLmZsYXRwaWNrci13ZWVrZGF5Y29udGFpbmVye2Rpc3BsYXk6LXdlYmtpdC1ib3g7ZGlzcGxheTotd2Via2l0LWZsZXg7ZGlzcGxheTotbXMtZmxleGJveDtkaXNwbGF5OmZsZXg7LXdlYmtpdC1ib3gtZmxleDoxOy13ZWJraXQtZmxleDoxOy1tcy1mbGV4OjE7ZmxleDoxfXNwYW4uZmxhdHBpY2tyLXdlZWtkYXl7Y3Vyc29yOmRlZmF1bHQ7Zm9udC1zaXplOjkwJTtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O2NvbG9yOnJnYmEoMCwwLDAsMC41NCk7bGluZS1oZWlnaHQ6MTttYXJnaW46MDt0ZXh0LWFsaWduOmNlbnRlcjtkaXNwbGF5OmJsb2NrOy13ZWJraXQtYm94LWZsZXg6MTstd2Via2l0LWZsZXg6MTstbXMtZmxleDoxO2ZsZXg6MTtmb250LXdlaWdodDpib2xkZXJ9LmRheUNvbnRhaW5lciwuZmxhdHBpY2tyLXdlZWtze3BhZGRpbmc6MXB4IDAgMCAwfS5mbGF0cGlja3ItZGF5c3twb3NpdGlvbjpyZWxhdGl2ZTtvdmVyZmxvdzpoaWRkZW47ZGlzcGxheTotd2Via2l0LWJveDtkaXNwbGF5Oi13ZWJraXQtZmxleDtkaXNwbGF5Oi1tcy1mbGV4Ym94O2Rpc3BsYXk6ZmxleDstd2Via2l0LWJveC1hbGlnbjpzdGFydDstd2Via2l0LWFsaWduLWl0ZW1zOmZsZXgtc3RhcnQ7LW1zLWZsZXgtYWxpZ246c3RhcnQ7YWxpZ24taXRlbXM6ZmxleC1zdGFydDt3aWR0aDozMDcuODc1cHh9LmZsYXRwaWNrci1kYXlzOmZvY3Vze291dGxpbmU6MH0uZGF5Q29udGFpbmVye3BhZGRpbmc6MDtvdXRsaW5lOjA7dGV4dC1hbGlnbjpsZWZ0O3dpZHRoOjMwNy44NzVweDttaW4td2lkdGg6MzA3Ljg3NXB4O21heC13aWR0aDozMDcuODc1cHg7LXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7Ym94LXNpemluZzpib3JkZXItYm94O2Rpc3BsYXk6aW5saW5lLWJsb2NrO2Rpc3BsYXk6LW1zLWZsZXhib3g7ZGlzcGxheTotd2Via2l0LWJveDtkaXNwbGF5Oi13ZWJraXQtZmxleDtkaXNwbGF5OmZsZXg7LXdlYmtpdC1mbGV4LXdyYXA6d3JhcDtmbGV4LXdyYXA6d3JhcDstbXMtZmxleC13cmFwOndyYXA7LW1zLWZsZXgtcGFjazpqdXN0aWZ5Oy13ZWJraXQtanVzdGlmeS1jb250ZW50OnNwYWNlLWFyb3VuZDtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYXJvdW5kOy13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsMCwwKTt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwwLDApO29wYWNpdHk6MX0uZGF5Q29udGFpbmVyICsgLmRheUNvbnRhaW5lcnstd2Via2l0LWJveC1zaGFkb3c6LTFweCAwIDAgI2U2ZTZlNjtib3gtc2hhZG93Oi0xcHggMCAwICNlNmU2ZTZ9LmZsYXRwaWNrci1kYXl7YmFja2dyb3VuZDpub25lO2JvcmRlcjoxcHggc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLXJhZGl1czoxNTBweDstd2Via2l0LWJveC1zaXppbmc6Ym9yZGVyLWJveDtib3gtc2l6aW5nOmJvcmRlci1ib3g7Y29sb3I6IzM5MzkzOTtjdXJzb3I6cG9pbnRlcjtmb250LXdlaWdodDo0MDA7d2lkdGg6MTQuMjg1NzE0MyU7LXdlYmtpdC1mbGV4LWJhc2lzOjE0LjI4NTcxNDMlOy1tcy1mbGV4LXByZWZlcnJlZC1zaXplOjE0LjI4NTcxNDMlO2ZsZXgtYmFzaXM6MTQuMjg1NzE0MyU7bWF4LXdpZHRoOjM5cHg7aGVpZ2h0OjM5cHg7bGluZS1oZWlnaHQ6MzlweDttYXJnaW46MDtkaXNwbGF5OmlubGluZS1ibG9jaztwb3NpdGlvbjpyZWxhdGl2ZTstd2Via2l0LWJveC1wYWNrOmNlbnRlcjstd2Via2l0LWp1c3RpZnktY29udGVudDpjZW50ZXI7LW1zLWZsZXgtcGFjazpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjt0ZXh0LWFsaWduOmNlbnRlcn0uZmxhdHBpY2tyLWRheS5pblJhbmdlLC5mbGF0cGlja3ItZGF5LnByZXZNb250aERheS5pblJhbmdlLC5mbGF0cGlja3ItZGF5Lm5leHRNb250aERheS5pblJhbmdlLC5mbGF0cGlja3ItZGF5LnRvZGF5LmluUmFuZ2UsLmZsYXRwaWNrci1kYXkucHJldk1vbnRoRGF5LnRvZGF5LmluUmFuZ2UsLmZsYXRwaWNrci1kYXkubmV4dE1vbnRoRGF5LnRvZGF5LmluUmFuZ2UsLmZsYXRwaWNrci1kYXk6aG92ZXIsLmZsYXRwaWNrci1kYXkucHJldk1vbnRoRGF5OmhvdmVyLC5mbGF0cGlja3ItZGF5Lm5leHRNb250aERheTpob3ZlciwuZmxhdHBpY2tyLWRheTpmb2N1cywuZmxhdHBpY2tyLWRheS5wcmV2TW9udGhEYXk6Zm9jdXMsLmZsYXRwaWNrci1kYXkubmV4dE1vbnRoRGF5OmZvY3Vze2N1cnNvcjpwb2ludGVyO291dGxpbmU6MDtiYWNrZ3JvdW5kOiNlNmU2ZTY7Ym9yZGVyLWNvbG9yOiNlNmU2ZTZ9LmZsYXRwaWNrci1kYXkudG9kYXl7Ym9yZGVyLWNvbG9yOiM5NTllYTl9LmZsYXRwaWNrci1kYXkudG9kYXk6aG92ZXIsLmZsYXRwaWNrci1kYXkudG9kYXk6Zm9jdXN7Ym9yZGVyLWNvbG9yOiM5NTllYTk7YmFja2dyb3VuZDojOTU5ZWE5O2NvbG9yOiNmZmZ9LmZsYXRwaWNrci1kYXkuc2VsZWN0ZWQsLmZsYXRwaWNrci1kYXkuc3RhcnRSYW5nZSwuZmxhdHBpY2tyLWRheS5lbmRSYW5nZSwuZmxhdHBpY2tyLWRheS5zZWxlY3RlZC5pblJhbmdlLC5mbGF0cGlja3ItZGF5LnN0YXJ0UmFuZ2UuaW5SYW5nZSwuZmxhdHBpY2tyLWRheS5lbmRSYW5nZS5pblJhbmdlLC5mbGF0cGlja3ItZGF5LnNlbGVjdGVkOmZvY3VzLC5mbGF0cGlja3ItZGF5LnN0YXJ0UmFuZ2U6Zm9jdXMsLmZsYXRwaWNrci1kYXkuZW5kUmFuZ2U6Zm9jdXMsLmZsYXRwaWNrci1kYXkuc2VsZWN0ZWQ6aG92ZXIsLmZsYXRwaWNrci1kYXkuc3RhcnRSYW5nZTpob3ZlciwuZmxhdHBpY2tyLWRheS5lbmRSYW5nZTpob3ZlciwuZmxhdHBpY2tyLWRheS5zZWxlY3RlZC5wcmV2TW9udGhEYXksLmZsYXRwaWNrci1kYXkuc3RhcnRSYW5nZS5wcmV2TW9udGhEYXksLmZsYXRwaWNrci1kYXkuZW5kUmFuZ2UucHJldk1vbnRoRGF5LC5mbGF0cGlja3ItZGF5LnNlbGVjdGVkLm5leHRNb250aERheSwuZmxhdHBpY2tyLWRheS5zdGFydFJhbmdlLm5leHRNb250aERheSwuZmxhdHBpY2tyLWRheS5lbmRSYW5nZS5uZXh0TW9udGhEYXl7YmFja2dyb3VuZDojNTY5ZmY3Oy13ZWJraXQtYm94LXNoYWRvdzpub25lO2JveC1zaGFkb3c6bm9uZTtjb2xvcjojZmZmO2JvcmRlci1jb2xvcjojNTY5ZmY3fS5mbGF0cGlja3ItZGF5LnNlbGVjdGVkLnN0YXJ0UmFuZ2UsLmZsYXRwaWNrci1kYXkuc3RhcnRSYW5nZS5zdGFydFJhbmdlLC5mbGF0cGlja3ItZGF5LmVuZFJhbmdlLnN0YXJ0UmFuZ2V7Ym9yZGVyLXJhZGl1czo1MHB4IDAgMCA1MHB4fS5mbGF0cGlja3ItZGF5LnNlbGVjdGVkLmVuZFJhbmdlLC5mbGF0cGlja3ItZGF5LnN0YXJ0UmFuZ2UuZW5kUmFuZ2UsLmZsYXRwaWNrci1kYXkuZW5kUmFuZ2UuZW5kUmFuZ2V7Ym9yZGVyLXJhZGl1czowIDUwcHggNTBweCAwfS5mbGF0cGlja3ItZGF5LnNlbGVjdGVkLnN0YXJ0UmFuZ2UgKyAuZW5kUmFuZ2U6bm90KDpudGgtY2hpbGQoN24rMSkpLC5mbGF0cGlja3ItZGF5LnN0YXJ0UmFuZ2Uuc3RhcnRSYW5nZSArIC5lbmRSYW5nZTpub3QoOm50aC1jaGlsZCg3bisxKSksLmZsYXRwaWNrci1kYXkuZW5kUmFuZ2Uuc3RhcnRSYW5nZSArIC5lbmRSYW5nZTpub3QoOm50aC1jaGlsZCg3bisxKSl7LXdlYmtpdC1ib3gtc2hhZG93Oi0xMHB4IDAgMCAjNTY5ZmY3O2JveC1zaGFkb3c6LTEwcHggMCAwICM1NjlmZjd9LmZsYXRwaWNrci1kYXkuc2VsZWN0ZWQuc3RhcnRSYW5nZS5lbmRSYW5nZSwuZmxhdHBpY2tyLWRheS5zdGFydFJhbmdlLnN0YXJ0UmFuZ2UuZW5kUmFuZ2UsLmZsYXRwaWNrci1kYXkuZW5kUmFuZ2Uuc3RhcnRSYW5nZS5lbmRSYW5nZXtib3JkZXItcmFkaXVzOjUwcHh9LmZsYXRwaWNrci1kYXkuaW5SYW5nZXtib3JkZXItcmFkaXVzOjA7LXdlYmtpdC1ib3gtc2hhZG93Oi01cHggMCAwICNlNmU2ZTYsNXB4IDAgMCAjZTZlNmU2O2JveC1zaGFkb3c6LTVweCAwIDAgI2U2ZTZlNiw1cHggMCAwICNlNmU2ZTZ9LmZsYXRwaWNrci1kYXkuZmxhdHBpY2tyLWRpc2FibGVkLC5mbGF0cGlja3ItZGF5LmZsYXRwaWNrci1kaXNhYmxlZDpob3ZlciwuZmxhdHBpY2tyLWRheS5wcmV2TW9udGhEYXksLmZsYXRwaWNrci1kYXkubmV4dE1vbnRoRGF5LC5mbGF0cGlja3ItZGF5Lm5vdEFsbG93ZWQsLmZsYXRwaWNrci1kYXkubm90QWxsb3dlZC5wcmV2TW9udGhEYXksLmZsYXRwaWNrci1kYXkubm90QWxsb3dlZC5uZXh0TW9udGhEYXl7Y29sb3I6cmdiYSg1Nyw1Nyw1NywwLjMpO2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7Ym9yZGVyLWNvbG9yOnRyYW5zcGFyZW50O2N1cnNvcjpkZWZhdWx0fS5mbGF0cGlja3ItZGF5LmZsYXRwaWNrci1kaXNhYmxlZCwuZmxhdHBpY2tyLWRheS5mbGF0cGlja3ItZGlzYWJsZWQ6aG92ZXJ7Y3Vyc29yOm5vdC1hbGxvd2VkO2NvbG9yOnJnYmEoNTcsNTcsNTcsMC4xKX0uZmxhdHBpY2tyLWRheS53ZWVrLnNlbGVjdGVke2JvcmRlci1yYWRpdXM6MDstd2Via2l0LWJveC1zaGFkb3c6LTVweCAwIDAgIzU2OWZmNyw1cHggMCAwICM1NjlmZjc7Ym94LXNoYWRvdzotNXB4IDAgMCAjNTY5ZmY3LDVweCAwIDAgIzU2OWZmN30uZmxhdHBpY2tyLWRheS5oaWRkZW57dmlzaWJpbGl0eTpoaWRkZW59LnJhbmdlTW9kZSAuZmxhdHBpY2tyLWRheXttYXJnaW4tdG9wOjFweH0uZmxhdHBpY2tyLXdlZWt3cmFwcGVye2Zsb2F0OmxlZnR9LmZsYXRwaWNrci13ZWVrd3JhcHBlciAuZmxhdHBpY2tyLXdlZWtze3BhZGRpbmc6MCAxMnB4Oy13ZWJraXQtYm94LXNoYWRvdzoxcHggMCAwICNlNmU2ZTY7Ym94LXNoYWRvdzoxcHggMCAwICNlNmU2ZTZ9LmZsYXRwaWNrci13ZWVrd3JhcHBlciAuZmxhdHBpY2tyLXdlZWtkYXl7ZmxvYXQ6bm9uZTt3aWR0aDoxMDAlO2xpbmUtaGVpZ2h0OjI4cHh9LmZsYXRwaWNrci13ZWVrd3JhcHBlciBzcGFuLmZsYXRwaWNrci1kYXksLmZsYXRwaWNrci13ZWVrd3JhcHBlciBzcGFuLmZsYXRwaWNrci1kYXk6aG92ZXJ7ZGlzcGxheTpibG9jazt3aWR0aDoxMDAlO21heC13aWR0aDpub25lO2NvbG9yOnJnYmEoNTcsNTcsNTcsMC4zKTtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O2N1cnNvcjpkZWZhdWx0O2JvcmRlcjpub25lfS5mbGF0cGlja3ItaW5uZXJDb250YWluZXJ7ZGlzcGxheTpibG9jaztkaXNwbGF5Oi13ZWJraXQtYm94O2Rpc3BsYXk6LXdlYmtpdC1mbGV4O2Rpc3BsYXk6LW1zLWZsZXhib3g7ZGlzcGxheTpmbGV4Oy13ZWJraXQtYm94LXNpemluZzpib3JkZXItYm94O2JveC1zaXppbmc6Ym9yZGVyLWJveDtvdmVyZmxvdzpoaWRkZW59LmZsYXRwaWNrci1yQ29udGFpbmVye2Rpc3BsYXk6aW5saW5lLWJsb2NrO3BhZGRpbmc6MDstd2Via2l0LWJveC1zaXppbmc6Ym9yZGVyLWJveDtib3gtc2l6aW5nOmJvcmRlci1ib3h9LmZsYXRwaWNrci10aW1le3RleHQtYWxpZ246Y2VudGVyO291dGxpbmU6MDtkaXNwbGF5OmJsb2NrO2hlaWdodDowO2xpbmUtaGVpZ2h0OjQwcHg7bWF4LWhlaWdodDo0MHB4Oy13ZWJraXQtYm94LXNpemluZzpib3JkZXItYm94O2JveC1zaXppbmc6Ym9yZGVyLWJveDtvdmVyZmxvdzpoaWRkZW47ZGlzcGxheTotd2Via2l0LWJveDtkaXNwbGF5Oi13ZWJraXQtZmxleDtkaXNwbGF5Oi1tcy1mbGV4Ym94O2Rpc3BsYXk6ZmxleH0uZmxhdHBpY2tyLXRpbWU6YWZ0ZXJ7Y29udGVudDoiIjtkaXNwbGF5OnRhYmxlO2NsZWFyOmJvdGh9LmZsYXRwaWNrci10aW1lIC5udW1JbnB1dFdyYXBwZXJ7LXdlYmtpdC1ib3gtZmxleDoxOy13ZWJraXQtZmxleDoxOy1tcy1mbGV4OjE7ZmxleDoxO3dpZHRoOjQwJTtoZWlnaHQ6NDBweDtmbG9hdDpsZWZ0fS5mbGF0cGlja3ItdGltZSAubnVtSW5wdXRXcmFwcGVyIHNwYW4uYXJyb3dVcDphZnRlcntib3JkZXItYm90dG9tLWNvbG9yOiMzOTM5Mzl9LmZsYXRwaWNrci10aW1lIC5udW1JbnB1dFdyYXBwZXIgc3Bhbi5hcnJvd0Rvd246YWZ0ZXJ7Ym9yZGVyLXRvcC1jb2xvcjojMzkzOTM5fS5mbGF0cGlja3ItdGltZS5oYXNTZWNvbmRzIC5udW1JbnB1dFdyYXBwZXJ7d2lkdGg6MjYlfS5mbGF0cGlja3ItdGltZS50aW1lMjRociAubnVtSW5wdXRXcmFwcGVye3dpZHRoOjQ5JX0uZmxhdHBpY2tyLXRpbWUgaW5wdXR7YmFja2dyb3VuZDp0cmFuc3BhcmVudDstd2Via2l0LWJveC1zaGFkb3c6bm9uZTtib3gtc2hhZG93Om5vbmU7Ym9yZGVyOjA7Ym9yZGVyLXJhZGl1czowO3RleHQtYWxpZ246Y2VudGVyO21hcmdpbjowO3BhZGRpbmc6MDtoZWlnaHQ6aW5oZXJpdDtsaW5lLWhlaWdodDppbmhlcml0O2NvbG9yOiMzOTM5Mzk7Zm9udC1zaXplOjAuODc1cmVtIDtwb3NpdGlvbjpyZWxhdGl2ZTstd2Via2l0LWJveC1zaXppbmc6Ym9yZGVyLWJveDtib3gtc2l6aW5nOmJvcmRlci1ib3g7LXdlYmtpdC1hcHBlYXJhbmNlOnRleHRmaWVsZDstbW96LWFwcGVhcmFuY2U6dGV4dGZpZWxkO2FwcGVhcmFuY2U6dGV4dGZpZWxkfS5mbGF0cGlja3ItdGltZSBpbnB1dC5mbGF0cGlja3ItaG91cntmb250LXdlaWdodDpib2xkfS5mbGF0cGlja3ItdGltZSBpbnB1dC5mbGF0cGlja3ItbWludXRlLC5mbGF0cGlja3ItdGltZSBpbnB1dC5mbGF0cGlja3Itc2Vjb25ke2ZvbnQtd2VpZ2h0OjQwMH0uZmxhdHBpY2tyLXRpbWUgaW5wdXQ6Zm9jdXN7b3V0bGluZTowO2JvcmRlcjowfS5mbGF0cGlja3ItdGltZSAuZmxhdHBpY2tyLXRpbWUtc2VwYXJhdG9yLC5mbGF0cGlja3ItdGltZSAuZmxhdHBpY2tyLWFtLXBte2hlaWdodDppbmhlcml0O2Zsb2F0OmxlZnQ7bGluZS1oZWlnaHQ6aW5oZXJpdDtjb2xvcjojMzkzOTM5O2ZvbnQtd2VpZ2h0OmJvbGQ7d2lkdGg6MiU7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTstbXMtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lOy13ZWJraXQtYWxpZ24tc2VsZjpjZW50ZXI7LW1zLWZsZXgtaXRlbS1hbGlnbjpjZW50ZXI7YWxpZ24tc2VsZjpjZW50ZXJ9LmZsYXRwaWNrci10aW1lIC5mbGF0cGlja3ItYW0tcG17b3V0bGluZTowO3dpZHRoOjE4JTtjdXJzb3I6cG9pbnRlcjt0ZXh0LWFsaWduOmNlbnRlcjtmb250LXdlaWdodDo0MDB9LmZsYXRwaWNrci10aW1lIGlucHV0OmhvdmVyLC5mbGF0cGlja3ItdGltZSAuZmxhdHBpY2tyLWFtLXBtOmhvdmVyLC5mbGF0cGlja3ItdGltZSBpbnB1dDpmb2N1cywuZmxhdHBpY2tyLXRpbWUgLmZsYXRwaWNrci1hbS1wbTpmb2N1c3tiYWNrZ3JvdW5kOiNlZWV9LmZsYXRwaWNrci1pbnB1dFtyZWFkb25seV17Y3Vyc29yOnBvaW50ZXJ9QC13ZWJraXQta2V5ZnJhbWVzIGZwRmFkZUluRG93bntmcm9te29wYWNpdHk6MDstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLC0yMHB4LDApO3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLC0yMHB4LDApfXRve29wYWNpdHk6MTstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLDAsMCk7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsMCwwKX19QGtleWZyYW1lcyBmcEZhZGVJbkRvd257ZnJvbXtvcGFjaXR5OjA7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwtMjBweCwwKTt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwtMjBweCwwKX10b3tvcGFjaXR5OjE7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwwLDApO3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLDAsMCl9fQovKiogL2Nzcy9pbmxpbmUuZnIubmV3Y2Fycy5jc3MgKiovCmJ1dHRvbiNvbmV0cnVzdC1hY2NlcHQtYnRuLWhhbmRsZXIgeyBiYWNrZ3JvdW5kLWNvbG9yOiMxZTI2NGUgIWltcG9ydGFudDsgY29sb3I6I2ZmZmZmZiAhaW1wb3J0YW50OyBib3JkZXItY29sb3I6I2ZmZmZmZiAhaW1wb3J0YW50OyBib3JkZXItcmFkaXVzOjNweCAhaW1wb3J0YW50OyB9IGJ1dHRvbiNvbmV0cnVzdC1yZWplY3QtYWxsLWhhbmRsZXIgeyBiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmYgIWltcG9ydGFudDsgY29sb3I6IzFlMjY0ZSAhaW1wb3J0YW50OyBib3JkZXItY29sb3I6IzFlMjY0ZSAhaW1wb3J0YW50OyBib3JkZXItcmFkaXVzOjNweCAhaW1wb3J0YW50OyB9IGJ1dHRvbiNvbmV0cnVzdC1wYy1idG4taGFuZGxlciB7IGJhY2tncm91bmQtY29sb3I6I2ZmZmZmZiAhaW1wb3J0YW50OyBjb2xvcjojNzA3MDcwICFpbXBvcnRhbnQ7IGJvcmRlci1jb2xvcjojOTA5MDkwICFpbXBvcnRhbnQ7IGJvcmRlci1yYWRpdXM6M3B4ICFpbXBvcnRhbnQ7IH0gYnV0dG9uLnNhdmUtcHJlZmVyZW5jZS1idG4taGFuZGxlci5vbmV0cnVzdC1jbG9zZS1idG4taGFuZGxlciB7IGJhY2tncm91bmQtY29sb3I6I2ZmZmZmZiAhaW1wb3J0YW50OyBjb2xvcjojMWUyNjRlICFpbXBvcnRhbnQ7IGJvcmRlci1jb2xvcjojMWUyNjRlICFpbXBvcnRhbnQ7IGJvcmRlci1yYWRpdXM6M3B4ICFpbXBvcnRhbnQ7IH0gYnV0dG9uLm90LXBjLXJlZnVzZS1hbGwtaGFuZGxlciB7IGJhY2tncm91bmQtY29sb3I6I2ZmZmZmZiAhaW1wb3J0YW50OyBjb2xvcjojMWUyNjRlICFpbXBvcnRhbnQ7IGJvcmRlci1jb2xvcjojMWUyNjRlICFpbXBvcnRhbnQ7IGJvcmRlci1yYWRpdXM6M3B4ICFpbXBvcnRhbnQ7IH0gYnV0dG9uI2FjY2VwdC1yZWNvbW1lbmRlZC1idG4taGFuZGxlcnsgYmFja2dyb3VuZC1jb2xvcjojMWUyNjRlICFpbXBvcnRhbnQ7IGNvbG9yOiNmZmZmZmYgIWltcG9ydGFudDsgYm9yZGVyLWNvbG9yOiNmZmZmZmYgIWltcG9ydGFudDsgZm9udC1zaXplOnNtYWxsICFpbXBvcnRhbnQ7IGJvcmRlci1yYWRpdXM6M3B4ICFpbXBvcnRhbnQ7IH0gLm90LXBjLWxvZ28gaW1neyBjb250ZW50OnVybCgiL2ltYWdlcy9Mb2dvTW9iaWxlL2FjdXJhLWRlc2phcmRpbnMud2VicCIpICFpbXBvcnRhbnQ7IH0gI29uZXRydXN0LXBjLXNkayAub3QtcGMtbG9nb3sgd2lkdGg6MzAlICFpbXBvcnRhbnQ7IGp1c3RpZnktY29udGVudDpsZWZ0ICFpbXBvcnRhbnQ7IH0gLm90LWJuci1sb2dveyBjb250ZW50OnVybCgiL2ltYWdlcy9Mb2dvTW9iaWxlL2FjdXJhLWRlc2phcmRpbnMud2VicCIpICFpbXBvcnRhbnQ7IH0gI29uZXRydXN0LWJhbm5lci1zZGsub3QtYm5yLXctbG9nbyAub3QtYm5yLWxvZ297IHdpZHRoOjg1cHggIWltcG9ydGFudDsgaGVpZ2h0OmF1dG8gIWltcG9ydGFudDsgbWFyZ2luLWxlZnQ6MjVweCAhaW1wb3J0YW50OyB9ICNvbmV0cnVzdC1iYW5uZXItc2RrLm90LWJuci13LWxvZ28gI29uZXRydXN0LXBvbGljeSB7IG1hcmdpbi1sZWZ0OjExMHB4ICFpbXBvcnRhbnQ7IHBhZGRpbmctbGVmdDoyNXB4OyB9IEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDo0MjVweCl7ICNvbmV0cnVzdC1iYW5uZXItc2RrLm90LWJuci13LWxvZ28gLm90LWJuci1sb2dveyBwb3NpdGlvbjpyZWxhdGl2ZTsgbWFyZ2luOjE1cHggMCAxMHB4IDAgIWltcG9ydGFudDsgdHJhbnNmb3JtOmluaGVyaXQ7IHpvb206NDAlOyB9ICNvbmV0cnVzdC1iYW5uZXItc2RrLm90LWJuci13LWxvZ28gI29uZXRydXN0LXBvbGljeSB7IG1hcmdpbi1sZWZ0OjBweCAhaW1wb3J0YW50OyBwYWRkaW5nLWxlZnQ6MHB4OyBtYXJnaW4tdG9wOjVweDsgfSAjb25ldHJ1c3QtY29uc2VudC1zZGsgI29uZXRydXN0LXBvbGljeS10aXRsZXsgZm9udC1zaXplOjFlbSAhaW1wb3J0YW50OyB9ICNvbmV0cnVzdC1iYW5uZXItc2RrICNvbmV0cnVzdC1hY2NlcHQtYnRuLWhhbmRsZXIsICNvbmV0cnVzdC1iYW5uZXItc2RrICNvbmV0cnVzdC1yZWplY3QtYWxsLWhhbmRsZXIsICNvbmV0cnVzdC1iYW5uZXItc2RrICNvbmV0cnVzdC1wYy1idG4taGFuZGxlcnsgcGFkZGluZzoxMHB4IDEwcHg7IH0gI29uZXRydXN0LWJhbm5lci1zZGsgYnV0dG9uLCAjb25ldHJ1c3QtcGMtc2RrIGJ1dHRvbiwgI290LXNkay1jb29raWUtcG9saWN5IGJ1dHRvbnsgbWFyZ2luLWJvdHRvbTowLjVyZW07IH0gI29uZXRydXN0LXBjLXNkayBidXR0b24geyB3aWR0aDphdXRvOyB9ICNvbmV0cnVzdC1iYW5uZXItc2RrIC5vdC1zZGstY29udGFpbmVyLCAjb25ldHJ1c3QtcGMtc2RrIC5vdC1zZGstY29udGFpbmVyLCAjb3Qtc2RrLWNvb2tpZS1wb2xpY3kgLm90LXNkay1jb250YWluZXJ7IHBhZGRpbmc6NXB4IDIwcHg7IH0gI29uZXRydXN0LWJhbm5lci1zZGsgI29uZXRydXN0LXBvbGljeXsgbWFyZ2luOjA7IH0gI29uZXRydXN0LWJhbm5lci1zZGsgI29uZXRydXN0LWJ1dHRvbi1ncm91cCAjb25ldHJ1c3QtYWNjZXB0LWJ0bi1oYW5kbGVyeyBmb250LXNpemU6dmFyKC0tZnMwKTsgfSB9PC9zdHlsZT4KCiAgICAgICAKICAgICAgIDwhLS0gT086OjE1ZGJlMWVjNGJiODE5ZjNiZTlhZjBiYjkxNzMxZDlmIC0tPgogICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgdmFsdWU9IsOgIHZlbmRyZSIgaWQ9InRleHRGb3JTYWxlIj4KICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIHZhbHVlPSJEw6l0YWlscyIgaWQ9InRleHREZXRhaWxzIj4KICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIHZhbHVlPSJUb3VzIiBpZD0idGV4dEFsbCI+CiAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iUHJpeCBSw6lkdWl0IiBpZD0idGV4dFJlZHVjZWQiPgogICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgdmFsdWU9IlPDqWxlY3Rpb25uZXogdW5lIG1hcnF1ZSIgaWQ9InRleHRNYW51VGl0bGUiPgogICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgdmFsdWU9IlZvaXIgbm9zIG1vZMOobGVzIEFjdXJhIiBpZD0idGV4dEJyYW5kVGl0bGUiPgogICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgdmFsdWU9Ik1vZMOobGVzIEFjdXJhIG5ldWZzIDIwMjYiIGlkPSJ0ZXh0TWFpblRpdGxlIj4KICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIHZhbHVlPSJBdXRvcyBuZXV2ZXMgQWN1cmEgMjAyNiDDoCB7JE5FV0NJVFl9IiBpZD0idGV4dENhclRpdGxlIj4KICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIHZhbHVlPSJWVVMgbmV1ZnMgQWN1cmEgMjAyNiDDoCB7JE5FV0NJVFl9IiBpZD0idGV4dFNVVlRpdGxlIj4KICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIHZhbHVlPSJDYW1pb25zIG5ldWZzIEFjdXJhIDIwMjYgw6AgeyRORVdDSVRZfSIgaWQ9InRleHRUcnVja1RpdGxlIj4KICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIHZhbHVlPSJIeWJyaWRlcyBuZXV2ZXMgQWN1cmEgMjAyNiDDoCB7JE5FV0NJVFl9IiBpZD0idGV4dEh5YnJpZFRpdGxlIj4KICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIHZhbHVlPSJub3V2ZWF1IiBpZD0idGV4dE5ldyI+CiAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iQWN1cmEgeyRDTEFTU05BTUV9IDIwMjYiIGlkPSJ0ZXh0Q2xhc3NWaWV3Ij4KICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIHZhbHVlPSJBY2N1ZWlsIiBpZD0idGV4dEhvbWUiPgogICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgdmFsdWU9Ii8iIGlkPSJ1cmlIb21lIj4KICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIHZhbHVlPSIvbmV1ZnMvbm91dmVhdS5odG1sIiBpZD0idXJpTmV3Q2FycyI+CiAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iL25ldWZzLyIgaWQ9InRleHROZXdDYXJGb2xkZXIiPgogICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgdmFsdWU9Ik5vcyBtYXJxdWVzIiBpZD0idGV4dE1hbnVTZWxlY3QiPgogICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgdmFsdWU9IkVuIFN0b2NrIC8gRGlzcG9uaWJsZXMiIGlkPSJpblN0b2NrTGFiZWwiPgogICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgdmFsdWU9Ii9pbWFnZXMvIiBpZD0idGV4dEJhc2VJbWFnZVBhdGgiPgogICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgdmFsdWU9Ii9wcm94eV9hdWIvIiBpZD0iYnJhbmRJbWFnZVBhdGgiPgogICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZm9yY2VUb0ZpbGxQb3B1cF9uZXciIHZhbHVlPSJub25lIj4KCSAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIHZhbHVlPSIxIiBpZD0iaXNtb2JpbGUiPgogICAgICAgCQkJCTxzY3JpcHQ+CgoJCS8vZ2xvYmFsIHN0b3JlCgkJdmFyIHN0b3JlID0gbnVsbDsKCgkJY29uc3QgaW5pdFN0b3JlID0gKCkgPT4gewoKCQkJaWYodHlwZW9mIGNyZWF0ZURhdGFTdG9yZSAhPT0gJ2Z1bmN0aW9uJyl7CgkJCQlzZXRUaW1lb3V0KGluaXRTdG9yZSwgNTApOwoJCQkJcmV0dXJuOwoJCQl9CgoJCQlzdG9yZSA9IGNyZWF0ZURhdGFTdG9yZSh7ImNvbnRleHQiOnsibGFuZyI6IkZSRU5DSCIsInNob3J0TGFuZyI6ImZyIiwiaXNNb2JpbGUiOnRydWUsImNhdGVnb3J5IjoiYWxsIiwic2VjdGlvbiI6Ik5FVyIsImxvY2FsZSI6ImZyX0NBIiwiZGF0ZWZvcm1hdCI6IiVlICVCIn0sImRlYWxlckluZm8iOnsiYWRkcmVzcyI6IjU2MjUgQm91bC4gTVx1MDBlOXRyb3BvbGl0YWluIEVzdCIsImNpdHkiOiJNb250clx1MDBlOWFsIiwicHJvdmluY2UiOiJRdVx1MDBlOWJlYyIsInJlZ2lvbiI6Ik1vbnRyXHUwMGU5YWwiLCJwb3N0YWwiOiJIMVAgMVgzIiwibmFtZSI6IkRlc2phcmRpbnMgQWN1cmEiLCJlbWFpbCI6IiIsImRlYWxlcklEIjo1Mzc1LCJkZWFsZXJHcm91cCI6eyJncm91cGVOYW1lIjoiR3JvdXBlIERlc2phcmRpbnMiLCJncm91cGVJRCI6IjQxNTIiLCJkZWFsZXJzIjpbeyJkZWFsZXJJRCI6MzYyNCwibmFtZSI6IkNoXHUwMGUydGVhdWd1YXkgSG9uZGEiLCJzaXRlSUQiOjIwMzcsImlzTGl2ZSI6IllFUyJ9LHsiZGVhbGVySUQiOjUzNzUsIm5hbWUiOiJEZXNqYXJkaW5zIEFjdXJhIiwic2l0ZUlEIjoyMDUzLCJpc0xpdmUiOiJZRVMifSx7ImRlYWxlcklEIjoyMzQsIm5hbWUiOiJEZXNqYXJkaW5zIEZvcmQgTHRlZSIsInNpdGVJRCI6MjcsImlzTGl2ZSI6IllFUyJ9LHsiZGVhbGVySUQiOjM4NzAsIm5hbWUiOiJEZXNqYXJkaW5zIEZvcmQgU3RlLUZveSIsInNpdGVJRCI6MTQ0NywiaXNMaXZlIjoiWUVTIn0seyJkZWFsZXJJRCI6Mjk4MiwibmFtZSI6IkRlc2phcmRpbnMgVm9sa3N3YWdlbiIsInNpdGVJRCI6MTYzNiwiaXNMaXZlIjoiWUVTIn0seyJkZWFsZXJJRCI6MTU5NywibmFtZSI6IkhvbmRhIENoYXJsZXNib3VyZyAoUXVcdTAwZTliZWMpIiwic2l0ZUlEIjozMjYsImlzTGl2ZSI6IllFUyJ9LHsiZGVhbGVySUQiOjU5MTksIm5hbWUiOiJKYWd1YXIgQnJvc3NhcmQiLCJzaXRlSUQiOjI2MjcsImlzTGl2ZSI6IllFUyJ9LHsiZGVhbGVySUQiOjMwNDIsIm5hbWUiOiJKQUdVQVIgREUgUVVcdTAwYzlCRUMiLCJzaXRlSUQiOjE1MzEsImlzTGl2ZSI6IllFUyJ9LHsiZGVhbGVySUQiOjMwNzEsIm5hbWUiOiJMJ0FuZ2UtR2FyZGllbiBGb3JkIiwic2l0ZUlEIjoyMjYzLCJpc0xpdmUiOiJZRVMifSx7ImRlYWxlcklEIjozMDcyLCJuYW1lIjoiTCdBbmdlLUdhcmRpZW4gVm9sa3N3YWdlbiIsInNpdGVJRCI6MTU4MCwiaXNMaXZlIjoiWUVTIn0seyJkZWFsZXJJRCI6NTkxOCwibmFtZSI6IkxhbmQgUm92ZXIgQnJvc3NhcmQiLCJzaXRlSUQiOjI2MjYsImlzTGl2ZSI6IllFUyJ9LHsiZGVhbGVySUQiOjMwNzksIm5hbWUiOiJMQU5EIFJPVkVSIERFIFFVXHUwMGM5QkVDIiwic2l0ZUlEIjoxNTMyLCJpc0xpdmUiOiJZRVMifSx7ImRlYWxlcklEIjoxNjE4LCJuYW1lIjoiU3QtQ29uc3RhbnQgSG9uZGEiLCJzaXRlSUQiOjIwMzYsImlzTGl2ZSI6IllFUyJ9LHsiZGVhbGVySUQiOjk3NSwibmFtZSI6IlZhdWRyZXVpbCBIb25kYSIsInNpdGVJRCI6MjAzMiwiaXNMaXZlIjoiWUVTIn1dfSwiZmF4IjoiIiwicGhvbmUiOiI1MTQtMzYyLTI4NzIiLCJsYXRpdHVkZSI6IjQ1LjU4NTY2NDUwMDAiLCJsb25naXR1ZGUiOiItNzMuNTg5Njg2NzAwMCIsInByb3ZpbmNlX2NvZGUiOiJRQyIsImRldGFpbF9wcml4IjpudWxsLCJkZXRhaWxfcHJpeF9hbiI6bnVsbCwiZGV0YWlsX3ByaXhfdXNlZCI6bnVsbCwiZGV0YWlsX3ByaXhfdXNlZF9hbiI6bnVsbCwib2VtRGVhbGVyQ29kZSI6IjIwODYiLCJwcmljZV9kaXNjbGFpbWVyX3ByZWZlcmVuY2UiOiIwIiwicHJpY2VfZGlzY2xhaW1lcl9wcmVmZXJlbmNlX3VzZWQiOiIwIiwiZ21CQUMiOiIiLCJwbGFjZUlkIjoiQ2hJSmQxNVlkLTBleVV3UkIwbDY5dUZieGx3In0sImlzVk0iOmZhbHNlLCJmaWVsZHMiOnsiU0hPV1JPT01fSU1BR0VfU09VUkNFX1RZUEUiOiJjaHJvbWUiLCJORVdfSU5WX0lNQUdFX1NPVVJDRV9UWVBFIjoiY2hyb21lIiwiQURNSU5fU0hPV19FRkZFQ1RJVkVfUkFURV9TRUxFQ1QiOiJwcmltYXJ5IiwiQURNSU5fU0hPV19FRkZFQ1RJVkVfUkFURSI6ImZhbHNlIiwiVldfRFJfUFBfRU5BQkxFRCI6dHJ1ZX0sImkxOG4iOnsiV0VCX1NJVEVfR0VORVJBVE9SX1BBR0VfTkVXSU5WIjoiXC9uZXVmc1wvaW52ZW50YWlyZVwvcmVjaGVyY2hlLmh0bWwiLCJQQVlNRU5UUyI6IlBhaWVtZW50cyIsIkRFRkFVTFRfUEFZTUVOVF9DQVNIIjoiQ29tcHRhbnQiLCJMQUJFTF9CRUZPUkVfVEFYRVMiOiJBdmFudCB0YXhlcyIsIkxBQkVMX1NBVkVfQlVJTERfVElUTEUiOiJFbnJlZ2lzdHJlciB2b3RyZSBjb25maWd1cmF0aW9uISIsIldFQlNJVEVfT0VNRFJfTE9BRF9CVUlMRF9UT09MVElQIjoiUmVzdGF1cmV6IHVuZSBjb25maWd1cmF0aW9uIHByXHUwMGU5Y1x1MDBlOWRlbW1lbnQgZW5yZWdpc3RyXHUwMGU5ZSBlbiBzYWlzaXNzYW50IHZvdHJlIGFkcmVzc2UgZS1tYWlsIG91IHZvdHJlIG51bVx1MDBlOXJvIGRlIHRcdTAwZTlsXHUwMGU5cGhvbmUuIiwiV0VCU0lURV9PRU1EUl9MT0FEX0JVSUxEX0VNQUlMX1BIT05FIjoiU2Fpc2lzc2V6IHZvdHJlIGFkcmVzc2UgZS1tYWlsIGV0XC9vdSB2b3RyZSBudW1cdTAwZTlybyBkZSB0XHUwMGU5bFx1MDBlOXBob25lIHBvdXIgY2hhcmdlciB1bmUgY29uZmlndXJhdGlvbiBlbnJlZ2lzdHJcdTAwZTllLiIsIldFQlNJVEVfT0VNRFJfTE9BRF9CVUlMRF9FTUFJTF9QSE9ORV9FUlJPUiI6IlZldWlsbGV6IHNhaXNpciB2b3RyZSBhZHJlc3NlIGUtbWFpbCBvdSB2b3RyZSBudW1cdTAwZTlybyBkZSB0XHUwMGU5bFx1MDBlOXBob25lLiIsIldFQlNJVEVfT0VNRFJfTE9BRF9CVUlMRF9FUlJPUiI6IkxlcyBkb25uXHUwMGU5ZXMgZGUgY29uZmlndXJhdGlvbiBuZSBzb250IHBhcyBkaXNwb25pYmxlcyBwb3VyIGNldCBlbnJlZ2lzdHJlbWVudC4iLCJXRUJTSVRFX09FTURSX0xPQURfQlVJTERfUkVESVJFQ1RJTkciOiJDb21waWxhdGlvbiBjaGFyZ1x1MDBlOWUhIFJlZGlyZWN0aW9uIGVuIGNvdXJzLi4uIiwiV0VCU0lURV9PRU1EUl9MT0FEX0JVSUxEX0xJU1RfRVJST1IiOiJBdWN1bmUgY29uZmlndXJhdGlvbiBuJiMzOTthIFx1MDBlOXRcdTAwZTkgdHJvdXZcdTAwZTllIHBvdXIgY2V0dGUgYWRyZXNzZSBlLW1haWxcL251bVx1MDBlOXJvIGRlIHRcdTAwZTlsXHUwMGU5cGhvbmUuIiwiV0VCU0lURV9PRU1EUl9MT0FEX0JVSUxEX0lOVkFMSURfVE9LRU4iOiJMZSBqZXRvbiBlc3QgaW52YWxpZGUgb3UgYSBleHBpclx1MDBlOS4gVmV1aWxsZXogclx1MDBlOWVzc2F5ZXIuIiwiV0VCU0lURV9PRU1EUl9MT0FEX0JVSUxEX0xJU1QiOiJDaGFyZ2VtZW50IGRlcyBjb25maWd1cmF0aW9ucyBzYXV2ZWdhcmRcdTAwZTlzLi4uIiwiV0VCU0lURV9PRU1EUl9MT0FEX0JVSUxEX0xJU1RfU0VMRUNUIjoiU1x1MDBlOWxlY3Rpb25uZXogdW5lIGNvbmZpZ3VyYXRpb24gXHUwMGUwIGNoYXJnZXI6IiwiV0VCU0lURV9PRU1EUl9MT0FEX0JVSUxEX0xJU1RfRkFJTEVEIjoiSW1wb3NzaWJsZSBkZSBjaGFyZ2VyIGxlcyBjb25maWd1cmF0aW9ucy4iLCJXRUJTSVRFX09FTURSX01GQV9TRU5EX0NPREUiOiJFbnZvaSBkdSBjb2RlIGRlIHZcdTAwZTlyaWZpY2F0aW9uLi4uIiwiV0VCU0lURV9PRU1EUl9NRkFfU1RBUlRfRVJST1IiOiJJbXBvc3NpYmxlIGRlIGRcdTAwZTltYXJyZXIgbGEgdlx1MDBlOXJpZmljYXRpb24uIiwiV0VCU0lURV9PRU1EUl9NRkFfRU5URVJfQ09ERSI6IlNhaXNpc3NleiBsZSBjb2RlIFx1MDBlMCA2IGNoaWZmcmVzIGVudm95XHUwMGU5IFx1MDBlMCB2b3RyZSBhZHJlc3NlIGUtbWFpbCBvdSBcdTAwZTAgdm90cmUgbnVtXHUwMGU5cm8gZGUgdFx1MDBlOWxcdTAwZTlwaG9uZS4iLCJXRUJTSVRFX09FTURSX01GQV9FTlRFUl9DT0RFX0VSUk9SIjoiVmV1aWxsZXogc2Fpc2lyIGxlIGNvZGUgZGUgdlx1MDBlOXJpZmljYXRpb24uIiwiV0VCU0lURV9PRU1EUl9NRkFfVkVSSUZZX0NPREUiOiJWXHUwMGU5cmlmaWNhdGlvbiBkdSBjb2RlLi4uIiwiV0VCU0lURV9PRU1EUl9NRkFfRVhQSVJFRF9DT0RFIjoiQ29kZSBpbnZhbGlkZSBvdSBleHBpclx1MDBlOS4gVmV1aWxsZXogclx1MDBlOWVzc2F5ZXIuIiwiV0VCU0lURV9PRU1EUl9NRkFfVkVSSUZZX0ZBSUxFRCI6IkxhIHZcdTAwZTlyaWZpY2F0aW9uIGEgXHUwMGU5Y2hvdVx1MDBlOS4gVmV1aWxsZXogclx1MDBlOWVzc2F5ZXIuIiwiV0VCU0lURV9PRU1EUl9TQVZFX0JVSUxEX1VQREFUSU5HIjoiTWlzZSBcdTAwZTAgam91ciBkZSBsYSBjb25maWd1YXRpb24uLi4iLCJXRUJTSVRFX09FTURSX1NBVkVfQlVJTERfVVBEQVRFX1NVQ0NFU1MiOiJMYSBjb25maWd1YXRpb24gYSBcdTAwZTl0XHUwMGU5IG1pc2UgXHUwMGUwIGpvdXIgYXZlYyBzdWNjXHUwMGU4cy4iLCJXRUJTSVRFX09FTURSX1NBVkVfQlVJTERfVVBEQVRFX0VSUk9SIjoiSW1wb3NzaWJsZSBkZSBtZXR0cmUgXHUwMGUwIGpvdXIgbGEgY29uZmlndWF0aW9uLiIsIldFQlNJVEVfT0VNRFJfU0FWRV9CVUlMRF9TQVZJTkciOiJTYXV2ZWdhcmRlIGRlIGxhIGNvbmZpZ3VhdGlvbi4uLiIsIldFQlNJVEVfT0VNRFJfU0FWRV9CVUlMRF9TQVZFX1NVQ0NFU1MiOiJDb25maWd1YXRpb24gZW5yZWdpc3RyXHUwMGU5ICEgVm91cyBwb3VycmV6IGxlIGNoYXJnZXIgdWx0XHUwMGU5cmlldXJlbWVudCBlbiB1dGlsaXNhbnQgdm90cmUgYWRyZXNzZSBlLW1haWwgb3Ugdm90cmUgbnVtXHUwMGU5cm8gZGUgdFx1MDBlOWxcdTAwZTlwaG9uZS4iLCJXRUJTSVRFX09FTURSX1NBVkVfQlVJTERfU0FWRV9FUlJPUiI6IkltcG9zc2libGUgZCYjMzk7ZW5yZWdpc3RyZXIgbGEgY29uZmlndXJhdGlvbi4iLCJXRUJTSVRFX09FTURSX0JUTl9MT0FEIjoiQ2hhcmdlciIsIldFQlNJVEVfT0VNRFJfQlROX1ZFUklGWSI6IlZcdTAwZTlyaWZpZXIiLCJXRUJTSVRFX09FTURSX0JUTl9SRVNFTkRfQ09ERSI6IlJlbnZveWVyIGxlIGNvZGUiLCJXRUJTSVRFX09FTURSX01GQV9WRVJJRklDQVRJT05fQ09ERSI6IkxlIGNvZGUgZGUgdlx1MDBlOXJpZmljYXRpb24iLCJXRUJTSVRFX09FTURSX1NBVkVfQlVJTERfTU9EQUxfVElUTEUiOiJDaGFyZ2VyIHVuZSBjb25maWd1cmF0aW9uIGVucmVnaXN0clx1MDBlOWUiLCJFRkZFQ1RJVkVfUkFURV9MT05HX0xBQkVMIjoieyRSQVRFfSB0YXV4IGVmZmVjdGlmIiwiRUZGRUNUSVZFX1JBVEVfTEFCRUwiOiJUYXV4IHskUkFURX0iLCJXRUJfU0lURV9QUklDRV9CUkVBS0RPV05fTFVYVVJZX1RBWF9MQUJFTCI6IlRheGUgZGUgbHV4ZSJ9LCJzaG93T2VtSW1hZ2VzIjpmYWxzZX0pOwoJCX07CgoJCWluaXRTdG9yZSgpOwoKCTwvc2NyaXB0PgoJCQkJCQk8c3ZnIGFyaWEtaGlkZGVuPSJ0cnVlIiBzdHlsZT0icG9zaXRpb246IGFic29sdXRlOyB3aWR0aDogMDsgaGVpZ2h0OiAwOyBvdmVyZmxvdzogaGlkZGVuOyIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KCQkJCQk8c3ltYm9sIGlkPSJpY29uLWNoZXZyb24tcmlnaHQiIHZpZXdib3g9IjAgMCAzMjAgNTEyIj4KCQk8cGF0aCBkPSJNMjg1LjQ3NiAyNzIuOTcxTDkxLjEzMiA0NjcuMzE0Yy05LjM3MyA5LjM3My0yNC41NjkgOS4zNzMtMzMuOTQxIDBsLTIyLjY2Ny0yMi42NjdjLTkuMzU3LTkuMzU3LTkuMzc1LTI0LjUyMi0uMDQtMzMuOTAxTDE4OC41MDUgMjU2IDM0LjQ4NCAxMDEuMjU1Yy05LjMzNS05LjM3OS05LjMxNy0yNC41NDQuMDQtMzMuOTAxbDIyLjY2Ny0yMi42NjdjOS4zNzMtOS4zNzMgMjQuNTY5LTkuMzczIDMzLjk0MSAwTDI4NS40NzUgMjM5LjAzYzkuMzczIDkuMzcyIDkuMzczIDI0LjU2OC4wMDEgMzMuOTQxeiI+PC9wYXRoPgoJPC9zeW1ib2w+CTxzeW1ib2wgaWQ9Imljb24tY2hldnJvbi1kb3duIiB2aWV3Ym94PSIwIDAgNDQ4IDUxMiI+CgkJPHBhdGggZD0iTTIwNy4wMjkgMzgxLjQ3NkwxMi42ODYgMTg3LjEzMmMtOS4zNzMtOS4zNzMtOS4zNzMtMjQuNTY5IDAtMzMuOTQxbDIyLjY2Ny0yMi42NjdjOS4zNTctOS4zNTcgMjQuNTIyLTkuMzc1IDMzLjkwMS0uMDRMMjI0IDI4NC41MDVsMTU0Ljc0NS0xNTQuMDIxYzkuMzc5LTkuMzM1IDI0LjU0NC05LjMxNyAzMy45MDEuMDRsMjIuNjY3IDIyLjY2N2M5LjM3MyA5LjM3MyA5LjM3MyAyNC41NjkgMCAzMy45NDFMMjQwLjk3MSAzODEuNDc2Yy05LjM3MyA5LjM3Mi0yNC41NjkgOS4zNzItMzMuOTQyIDB6Ij48L3BhdGg+Cgk8L3N5bWJvbD4JPHN5bWJvbCBpZD0iaWNvbi1zdGVlcmluZy13aGVlbCIgdmlld2JveD0iMCAwIDUxMiA1MTIiPgoJCTxwYXRoIGQ9Ik0wIDI1NkMwIDExNC42IDExNC42IDAgMjU2IDBDMzk3LjQgMCA1MTIgMTE0LjYgNTEyIDI1NkM1MTIgMzk3LjQgMzk3LjQgNTEyIDI1NiA1MTJDMTE0LjYgNTEyIDAgMzk3LjQgMCAyNTZ6TTE2OC45IDI4OEg2Ni42NUM4MC4xNCAzNjguNCAxNDMuNiA0MzEuOSAyMjQgNDQ1LjNWMzU4LjlMMTY4LjkgMjg4ek0yODggMzU4LjlWNDQ1LjNDMzY4LjQgNDMxLjkgNDMxLjkgMzY4LjQgNDQ1LjMgMjg4SDM0My4xTDI4OCAzNTguOXpNMzUyIDIyNEg0NDUuM0M0MzAuMSAxMzMuMiAzNTEuMSA2NCAyNTYgNjRDMTYwLjkgNjQgODEuODkgMTMzLjIgNjYuNjUgMjI0SDE2MEwxNjcuMiAyMDkuN0MxNzIuNiAxOTguOCAxODMuNyAxOTIgMTk1LjggMTkySDMxNi4yQzMyOC4zIDE5MiAzMzkuNCAxOTguOCAzNDQuOCAyMDkuN0wzNTIgMjI0eiI+PC9wYXRoPgoJPC9zeW1ib2w+CTxzeW1ib2wgaWQ9Imljb24tY2FyIiB2aWV3Ym94PSIwIDAgNTEyIDUxMiI+CgkJPHBhdGggZD0iTTQ5OS45OSAxNzZoLTU5Ljg3bC0xNi42NC00MS42QzQwNi4zOCA5MS42MyAzNjUuNTcgNjQgMzE5LjUgNjRoLTEyN2MtNDYuMDYgMC04Ni44OCAyNy42My0xMDMuOTkgNzAuNEw3MS44NyAxNzZIMTIuMDFDNC4yIDE3Ni0xLjUzIDE4My4zNC4zNyAxOTAuOTFsNiAyNEM3LjcgMjIwLjI1IDEyLjUgMjI0IDE4LjAxIDIyNGgyMC4wN0MyNC42NSAyMzUuNzMgMTYgMjUyLjc4IDE2IDI3MnY0OGMwIDE2LjEyIDYuMTYgMzAuNjcgMTYgNDEuOTNWNDE2YzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoMzJjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMnYtMzJoMjU2djMyYzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoMzJjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMnYtNTQuMDdjOS44NC0xMS4yNSAxNi0yNS44IDE2LTQxLjkzdi00OGMwLTE5LjIyLTguNjUtMzYuMjctMjIuMDctNDhINDk0YzUuNTEgMCAxMC4zMS0zLjc1IDExLjY0LTkuMDlsNi0yNGMxLjg5LTcuNTctMy44NC0xNC45MS0xMS42NS0xNC45MXptLTM1Mi4wNi0xNy44M2M3LjI5LTE4LjIyIDI0Ljk0LTMwLjE3IDQ0LjU3LTMwLjE3aDEyN2MxOS42MyAwIDM3LjI4IDExLjk1IDQ0LjU3IDMwLjE3TDM4NCAyMDhIMTI4bDE5LjkzLTQ5Ljgzek05NiAzMTkuOGMtMTkuMiAwLTMyLTEyLjc2LTMyLTMxLjlTNzYuOCAyNTYgOTYgMjU2czQ4IDI4LjcxIDQ4IDQ3Ljg1LTI4LjggMTUuOTUtNDggMTUuOTV6bTMyMCAwYy0xOS4yIDAtNDggMy4xOS00OC0xNS45NVMzOTYuOCAyNTYgNDE2IDI1NnMzMiAxMi43NiAzMiAzMS45LTEyLjggMzEuOS0zMiAzMS45eiI+PC9wYXRoPgoJPC9zeW1ib2w+CTxzeW1ib2wgaWQ9Imljb24tdGFnIiB2aWV3Ym94PSIwIDAgNTEyIDUxMiI+CgkJPHBhdGggZD0iTTAgMjUyLjExOFY0OEMwIDIxLjQ5IDIxLjQ5IDAgNDggMGgyMDQuMTE4YTQ4IDQ4IDAgMCAxIDMzLjk0MSAxNC4wNTlsMjExLjg4MiAyMTEuODgyYzE4Ljc0NSAxOC43NDUgMTguNzQ1IDQ5LjEzNyAwIDY3Ljg4MkwyOTMuODIzIDQ5Ny45NDFjLTE4Ljc0NSAxOC43NDUtNDkuMTM3IDE4Ljc0NS02Ny44ODIgMEwxNC4wNTkgMjg2LjA1OUE0OCA0OCAwIDAgMSAwIDI1Mi4xMTh6TTExMiA2NGMtMjYuNTEgMC00OCAyMS40OS00OCA0OHMyMS40OSA0OCA0OCA0OCA0OC0yMS40OSA0OC00OC0yMS40OS00OC00OC00OHoiPjwvcGF0aD4KCTwvc3ltYm9sPgk8c3ltYm9sIGlkPSJpY29uLWhhbmQtaG9sZGluZy11c2QiIHZpZXdib3g9IjAgMCA1NzYgNTEyIj4KCQk8cGF0aCBkPSJNMjcxLjA2LDE0NC4zbDU0LjI3LDE0LjNhOC41OSw4LjU5LDAsMCwxLDYuNjMsOC4xYzAsNC42LTQuMDksOC40LTkuMTIsOC40aC0zNS42YTMwLDMwLDAsMCwxLTExLjE5LTIuMmMtNS4yNC0yLjItMTEuMjgtMS43LTE1LjMsMmwtMTksMTcuNWExMS42OCwxMS42OCwwLDAsMC0yLjI1LDIuNjYsMTEuNDIsMTEuNDIsMCwwLDAsMy44OCwxNS43NCw4My43Nyw4My43NywwLDAsMCwzNC41MSwxMS41VjI0MGMwLDguOCw3LjgzLDE2LDE3LjM3LDE2aDE3LjM3YzkuNTUsMCwxNy4zOC03LjIsMTcuMzgtMTZWMjIyLjRjMzIuOTMtMy42LDU3Ljg0LTMxLDUzLjUtNjMtMy4xNS0yMy0yMi40Ni00MS4zLTQ2LjU2LTQ3LjdMMjgyLjY4LDk3LjRhOC41OSw4LjU5LDAsMCwxLTYuNjMtOC4xYzAtNC42LDQuMDktOC40LDkuMTItOC40aDM1LjZBMzAsMzAsMCwwLDEsMzMyLDgzLjFjNS4yMywyLjIsMTEuMjgsMS43LDE1LjMtMmwxOS0xNy41QTExLjMxLDExLjMxLDAsMCwwLDM2OC40Nyw2MWExMS40MywxMS40MywwLDAsMC0zLjg0LTE1Ljc4LDgzLjgyLDgzLjgyLDAsMCwwLTM0LjUyLTExLjVWMTZjMC04LjgtNy44Mi0xNi0xNy4zNy0xNkgyOTUuMzdDMjg1LjgyLDAsMjc4LDcuMiwyNzgsMTZWMzMuNmMtMzIuODksMy42LTU3Ljg1LDMxLTUzLjUxLDYzQzIyNy42MywxMTkuNiwyNDcsMTM3LjksMjcxLjA2LDE0NC4zWk01NjUuMjcsMzI4LjFjLTExLjgtMTAuNy0zMC4yLTEwLTQyLjYsMEw0MzAuMjcsNDAyYTYzLjY0LDYzLjY0LDAsMCwxLTQwLDE0SDI3MmExNiwxNiwwLDAsMSwwLTMyaDc4LjI5YzE1LjksMCwzMC43MS0xMC45LDMzLjI1LTI2LjZhMzEuMiwzMS4yLDAsMCwwLC40Ni01LjQ2QTMyLDMyLDAsMCwwLDM1MiwzMjBIMTkyYTExNy42NiwxMTcuNjYsMCwwLDAtNzQuMSwyNi4yOUw3MS40LDM4NEgxNkExNiwxNiwwLDAsMCwwLDQwMHY5NmExNiwxNiwwLDAsMCwxNiwxNkgzNzIuNzdhNjQsNjQsMCwwLDAsNDAtMTRMNTY0LDM3N2EzMiwzMiwwLDAsMCwxLjI4LTQ4LjlaIj48L3BhdGg+Cgk8L3N5bWJvbD4JPHN5bWJvbCBpZD0iaWNvbi10b29scyIgdmlld2JveD0iMCAwIDUxMiA1MTIiPgoJCTxwYXRoIGQ9Ik01MDEuMSAzOTUuN0wzODQgMjc4LjZjLTIzLjEtMjMuMS01Ny42LTI3LjYtODUuNC0xMy45TDE5MiAxNTguMVY5Nkw2NCAwIDAgNjRsOTYgMTI4aDYyLjFsMTA2LjYgMTA2LjZjLTEzLjYgMjcuOC05LjIgNjIuMyAxMy45IDg1LjRsMTE3LjEgMTE3LjFjMTQuNiAxNC42IDM4LjIgMTQuNiA1Mi43IDBsNTIuNy01Mi43YzE0LjUtMTQuNiAxNC41LTM4LjIgMC01Mi43ek0zMzEuNyAyMjVjMjguMyAwIDU0LjkgMTEgNzQuOSAzMWwxOS40IDE5LjRjMTUuOC02LjkgMzAuOC0xNi41IDQzLjgtMjkuNSAzNy4xLTM3LjEgNDkuNy04OS4zIDM3LjktMTM2LjctMi4yLTktMTMuNS0xMi4xLTIwLjEtNS41bC03NC40IDc0LjQtNjcuOS0xMS4zTDMzNCA5OC45bDc0LjQtNzQuNGM2LjYtNi42IDMuNC0xNy45LTUuNy0yMC4yLTQ3LjQtMTEuNy05OS42LjktMTM2LjYgMzcuOS0yOC41IDI4LjUtNDEuOSA2Ni4xLTQxLjIgMTAzLjZsODIuMSA4Mi4xYzguMS0xLjkgMTYuNS0yLjkgMjQuNy0yLjl6bS0xMDMuOSA4MmwtNTYuNy01Ni43TDE4LjcgNDAyLjhjLTI1IDI1LTI1IDY1LjUgMCA5MC41czY1LjUgMjUgOTAuNSAwbDEyMy42LTEyMy42Yy03LjYtMTkuOS05LjktNDEuNi01LTYyLjd6TTY0IDQ3MmMtMTMuMiAwLTI0LTEwLjgtMjQtMjQgMC0xMy4zIDEwLjctMjQgMjQtMjRzMjQgMTAuNyAyNCAyNGMwIDEzLjItMTAuNyAyNC0yNCAyNHoiPjwvcGF0aD4KCTwvc3ltYm9sPgk8c3ltYm9sIGlkPSJpY29uLW1hcC1tYXJrZXItYWx0IiB2aWV3Ym94PSIwIDAgMzg0IDUxMiI+CgkJPHBhdGggZD0iTTE3Mi4yNjggNTAxLjY3QzI2Ljk3IDI5MS4wMzEgMCAyNjkuNDEzIDAgMTkyIDAgODUuOTYxIDg1Ljk2MSAwIDE5MiAwczE5MiA4NS45NjEgMTkyIDE5MmMwIDc3LjQxMy0yNi45NyA5OS4wMzEtMTcyLjI2OCAzMDkuNjctOS41MzUgMTMuNzc0LTI5LjkzIDEzLjc3My0zOS40NjQgMHpNMTkyIDI3MmM0NC4xODMgMCA4MC0zNS44MTcgODAtODBzLTM1LjgxNy04MC04MC04MC04MCAzNS44MTctODAgODAgMzUuODE3IDgwIDgwIDgweiI+PC9wYXRoPgoJPC9zeW1ib2w+CTxzeW1ib2wgaWQ9Imljb24tZ2xvYmUiIHZpZXdib3g9IjAgMCA0OTYgNTEyIj4KCQk8cGF0aCBkPSJNMzM2LjUgMTYwQzMyMiA3MC43IDI4Ny44IDggMjQ4IDhzLTc0IDYyLjctODguNSAxNTJoMTc3ek0xNTIgMjU2YzAgMjIuMiAxLjIgNDMuNSAzLjMgNjRoMTg1LjNjMi4xLTIwLjUgMy4zLTQxLjggMy4zLTY0cy0xLjItNDMuNS0zLjMtNjRIMTU1LjNjLTIuMSAyMC41LTMuMyA0MS44LTMuMyA2NHptMzI0LjctOTZjLTI4LjYtNjcuOS04Ni41LTEyMC40LTE1OC0xNDEuNiAyNC40IDMzLjggNDEuMiA4NC43IDUwIDE0MS42aDEwOHpNMTc3LjIgMTguNEMxMDUuOCAzOS42IDQ3LjggOTIuMSAxOS4zIDE2MGgxMDhjOC43LTU2LjkgMjUuNS0xMDcuOCA0OS45LTE0MS42ek00ODcuNCAxOTJIMzcyLjdjMi4xIDIxIDMuMyA0Mi41IDMuMyA2NHMtMS4yIDQzLTMuMyA2NGgxMTQuNmM1LjUtMjAuNSA4LjYtNDEuOCA4LjYtNjRzLTMuMS00My41LTguNS02NHpNMTIwIDI1NmMwLTIxLjUgMS4yLTQzIDMuMy02NEg4LjZDMy4yIDIxMi41IDAgMjMzLjggMCAyNTZzMy4yIDQzLjUgOC42IDY0aDExNC42Yy0yLTIxLTMuMi00Mi41LTMuMi02NHptMzkuNSA5NmMxNC41IDg5LjMgNDguNyAxNTIgODguNSAxNTJzNzQtNjIuNyA4OC41LTE1MmgtMTc3em0xNTkuMyAxNDEuNmM3MS40LTIxLjIgMTI5LjQtNzMuNyAxNTgtMTQxLjZoLTEwOGMtOC44IDU2LjktMjUuNiAxMDcuOC01MCAxNDEuNnpNMTkuMyAzNTJjMjguNiA2Ny45IDg2LjUgMTIwLjQgMTU4IDE0MS42LTI0LjQtMzMuOC00MS4yLTg0LjctNTAtMTQxLjZoLTEwOHoiPjwvcGF0aD4KCTwvc3ltYm9sPgk8c3ltYm9sIGlkPSJpY29uLW5ld3NwYXBlciIgdmlld2JveD0iMCAwIDU3NiA1MTIiPgoJCTxwYXRoIGQ9Ik01NTIgNjRIODhjLTEzLjI1NSAwLTI0IDEwLjc0NS0yNCAyNHY4SDI0Yy0xMy4yNTUgMC0yNCAxMC43NDUtMjQgMjR2MjcyYzAgMzAuOTI4IDI1LjA3MiA1NiA1NiA1Nmg0NzJjMjYuNTEgMCA0OC0yMS40OSA0OC00OFY4OGMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjR6TTU2IDQwMGE4IDggMCAwIDEtOC04VjE0NGgxNnYyNDhhOCA4IDAgMCAxLTggOHptMjM2LTE2SDE0MGMtNi42MjcgMC0xMi01LjM3My0xMi0xMnYtOGMwLTYuNjI3IDUuMzczLTEyIDEyLTEyaDE1MmM2LjYyNyAwIDEyIDUuMzczIDEyIDEydjhjMCA2LjYyNy01LjM3MyAxMi0xMiAxMnptMjA4IDBIMzQ4Yy02LjYyNyAwLTEyLTUuMzczLTEyLTEydi04YzAtNi42MjcgNS4zNzMtMTIgMTItMTJoMTUyYzYuNjI3IDAgMTIgNS4zNzMgMTIgMTJ2OGMwIDYuNjI3LTUuMzczIDEyLTEyIDEyem0tMjA4LTk2SDE0MGMtNi42MjcgMC0xMi01LjM3My0xMi0xMnYtOGMwLTYuNjI3IDUuMzczLTEyIDEyLTEyaDE1MmM2LjYyNyAwIDEyIDUuMzczIDEyIDEydjhjMCA2LjYyNy01LjM3MyAxMi0xMiAxMnptMjA4IDBIMzQ4Yy02LjYyNyAwLTEyLTUuMzczLTEyLTEydi04YzAtNi42MjcgNS4zNzMtMTIgMTItMTJoMTUyYzYuNjI3IDAgMTIgNS4zNzMgMTIgMTJ2OGMwIDYuNjI3LTUuMzczIDEyLTEyIDEyem0wLTk2SDE0MGMtNi42MjcgMC0xMi01LjM3My0xMi0xMnYtNDBjMC02LjYyNyA1LjM3My0xMiAxMi0xMmgzNjBjNi42MjcgMCAxMiA1LjM3MyAxMiAxMnY0MGMwIDYuNjI3LTUuMzczIDEyLTEyIDEyeiI+PC9wYXRoPgoJPC9zeW1ib2w+CgkJCTwvc3ZnPgoKCQkJCQkJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9ImlzTW9iaWxlIiBuYW1lPSJpc01vYmlsZSIgdmFsdWU9IjEiPgoJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0iU2l0ZXNfUGFnZV9HZW5lcmFsX01lbnVfQlROIiB2YWx1ZT0iTWVudSBkw6lyb3VsYW50Ij4KCQkJCgkJCTxoZWFkZXIgY2xhc3M9Im1vYmlsZS1oZWFkZXIgZmxleC1ib3ggZmxleC1iZXR3ZWVuIGFsaWduLWNlbnRlciAtLWZzMiB0aGluIiBoaWRkZW49IjEiPgoJCQkJCgkJCTxib3gtbGMgY2xhc3M9ImJ1cmdlci1tZW51LWNvbnRhaW5lciAtcGgiPgoJCQkJPGxhYmVsIGZvcj0iYm1fdG9nZ2xlIj48L2xhYmVsPgoJCQkJPGlucHV0IGlkPSJibV90b2dnbGUiIHR5cGU9ImNoZWNrYm94IiBoaWRkZW4+CgkJCQk8ZGl2IGlkPSJidXJnZXItbWVudS1idXR0b24iIGNsYXNzPSJzdGFjay1sYyBidXJnZXItbWVudS1idXR0b24gLS1zLTIiPgoJCQkJCTxzcGFuIGNsYXNzPSJidXJnZXJfdG9wIj48L3NwYW4+CgkJCQkJPHNwYW4gY2xhc3M9ImJ1cmdlcl9taWRkbGUiPjwvc3Bhbj4KCQkJCQk8c3BhbiBjbGFzcz0iYnVyZ2VyX2JvdHRvbSI+PC9zcGFuPgoJCQkJPC9kaXY+CgoJCQkJPGFzaWRlIGNsYXNzPSJidXJnZXItbmF2Ij4KCQkJCQkJCQk8bmF2PgoJCQkJPHVsPgoJCQkJCQkJCQk8bGkgY2xhc3M9IiIgaHJlZj0iP3BhdGg9Ij4KCQkJCQkKCQkJCQk8YSBjbGFzcz0iTkVXICAtYm9sZCAgbWVudS1pdGVtIGZsZXgtYm94IiBocmVmPSI\/cGF0aD0vbmV1ZnMvbm91dmVhdS5odG1sIiB0YXJnZXQ9Il90b3AiIG9uY2xpY2s9IiI+CgkJCQkJCQkJCTxzdmcgY2xhc3M9Imljb24iPjx1c2UgeGxpbms6aHJlZj0iI2ljb24tc3RlZXJpbmctd2hlZWwiPjwvdXNlPjwvc3ZnPgoJCQkJCQk8c3BhbiBjbGFzcz0ic2hyaW5rLWdyb3cgc2tlbGV0b24tdHh0IiBkYXRhLW1lbnUtdHJhbnNsYXRlPSJORVciPk1vZMOobGVzPC9zcGFuPgoJCQkJCQkJCQkJCTxzcGFuIHJvbGU9ImJ1dHRvbiIgdGFiaW5kZXg9IjAiIGNsYXNzPSJtZW51RXhwYW5kIC1wIC0tcy0zIiBhcmlhLWxhYmVsPSJNZW51IGTDqXJvdWxhbnQiPgoJCQkJCQkJCQk8c3ZnIGNsYXNzPSJpY29uIj48dXNlIHhsaW5rOmhyZWY9IiNpY29uLWNoZXZyb24tZG93biI+PC91c2U+PC9zdmc+CgkJCQkJPC9zcGFuPgoJCQkJCTwvYT4KCQkJCQkJCQkJCTxkaXYgY2xhc3M9InN1Ym1lbnVJdGVtQ29udGFpbmVyIiBzdHlsZT0iZGlzcGxheTpub25lOyI+CgkJCQkJCTxzdGFjay1sYyBpZD0iaXRlbV9ORVciIGNsYXNzPSItLXMtOSI+CgkJCQkJCQkJCQkJCQk8c3BhbiBjbGFzcz0iLW0wIj4KCQkJCQkJCTxhIGNsYXNzPSJzdWJtZW51LWl0ZW0gZmxleC1ib3ggZmxleC1iZXR3ZWVuIC1idCAtLXMtNSBORVdfQlVJTERQUklDRSIgaHJlZj0iP3BhdGg9L2NvbmZpZ3VyYXRpb24tZXQtcHJpeC9jb25maWd1cmF0aW9uLmh0bWwiIHRhcmdldD0iIiBvbmNsaWNrPSIiPgoJCQkJCQkJCTxzcGFuIGNsYXNzPSItcGgiPkNvbmZpZ3VyYXRpb24gJmFtcDsgUHJpeDwvc3Bhbj4KCQkJCQkJCQk8c3BhbiByb2xlPSJidXR0b24iIHRhYmluZGV4PSIwIiBjbGFzcz0iLXAgLS1zLTUiPgoJCQkJCQkJCQkJCQk8c3ZnIGNsYXNzPSJpY29uIj48dXNlIHhsaW5rOmhyZWY9IiNpY29uLWNoZXZyb24tcmlnaHQiPjwvdXNlPjwvc3ZnPgoJCQkJCQkJCTwvc3Bhbj4KCQkJCQkJCTwvYT4KCQkJCQkJPC9zcGFuPgkJCQkJCTxzcGFuIGNsYXNzPSItbTAiPgoJCQkJCQkJPGEgY2xhc3M9InN1Ym1lbnUtaXRlbSBmbGV4LWJveCBmbGV4LWJldHdlZW4gLWJ0IC0tcy01IE5FV0lOViIgaHJlZj0iP3BhdGg9L25ldWZzL2ludmVudGFpcmUvcmVjaGVyY2hlLmh0bWwiIHRhcmdldD0iIiBvbmNsaWNrPSIiPgoJCQkJCQkJCTxzcGFuIGNsYXNzPSItcGgiPkludmVudGFpcmUgTmV1ZiAoNDApPC9zcGFuPgoJCQkJCQkJCTxzcGFuIHJvbGU9ImJ1dHRvbiIgdGFiaW5kZXg9IjAiIGNsYXNzPSItcCAtLXMtNSI+CgkJCQkJCQkJCQkJCTxzdmcgY2xhc3M9Imljb24iPjx1c2UgeGxpbms6aHJlZj0iI2ljb24tY2hldnJvbi1yaWdodCI+PC91c2U+PC9zdmc+CgkJCQkJCQkJPC9zcGFuPgoJCQkJCQkJPC9hPgoJCQkJCQk8L3NwYW4+CQkJCQkJPHNwYW4gY2xhc3M9Ii1tMCI+CgkJCQkJCQk8YSBjbGFzcz0ic3VibWVudS1pdGVtIGZsZXgtYm94IGZsZXgtYmV0d2VlbiAtYnQgLS1zLTUgTkVXX1NFREFOIiBocmVmPSI\/cGF0aD0vbmV1ZnMvYXV0b3MuaHRtbCIgdGFyZ2V0PSIiIG9uY2xpY2s9IiI+CgkJCQkJCQkJPHNwYW4gY2xhc3M9Ii1waCI+QXV0b21vYmlsZXM8L3NwYW4+CgkJCQkJCQkJPHNwYW4gcm9sZT0iYnV0dG9uIiB0YWJpbmRleD0iMCIgY2xhc3M9Ii1wIC0tcy01Ij4KCQkJCQkJCQkJCQkJPHN2ZyBjbGFzcz0iaWNvbiI+PHVzZSB4bGluazpocmVmPSIjaWNvbi1jaGV2cm9uLXJpZ2h0Ij48L3VzZT48L3N2Zz4KCQkJCQkJCQk8L3NwYW4+CgkJCQkJCQk8L2E+CgkJCQkJCTwvc3Bhbj4JCQkJCQk8c3BhbiBjbGFzcz0iLW0wIj4KCQkJCQkJCTxhIGNsYXNzPSJzdWJtZW51LWl0ZW0gZmxleC1ib3ggZmxleC1iZXR3ZWVuIC1idCAtLXMtNSBORVdfU1VWIiBocmVmPSI\/cGF0aD0vbmV1ZnMvVlVTLmh0bWwiIHRhcmdldD0iIiBvbmNsaWNrPSIiPgoJCQkJCQkJCTxzcGFuIGNsYXNzPSItcGgiPlZVUzwvc3Bhbj4KCQkJCQkJCQk8c3BhbiByb2xlPSJidXR0b24iIHRhYmluZGV4PSIwIiBjbGFzcz0iLXAgLS1zLTUiPgoJCQkJCQkJCQkJCQk8c3ZnIGNsYXNzPSJpY29uIj48dXNlIHhsaW5rOmhyZWY9IiNpY29uLWNoZXZyb24tcmlnaHQiPjwvdXNlPjwvc3ZnPgoJCQkJCQkJCTwvc3Bhbj4KCQkJCQkJCTwvYT4KCQkJCQkJPC9zcGFuPgoJCQkJCQk8L3N0YWNrLWxjPgoJCQkJCTwvZGl2PgoJCQkJPC9saT4KCgkJCQkKCQkJCTxsaSBjbGFzcz0iIj4KCQkJCQkKCQkJCQk8YSBjbGFzcz0iVVNFRCAgLWJvbGQgIG1lbnUtaXRlbSBmbGV4LWJveCIgaHJlZj0iP3BhdGg9L29jY2FzaW9uL3JlY2hlcmNoZS5odG1sIiB0YXJnZXQ9Il90b3AiIG9uY2xpY2s9IiI+CgkJCQkJCQkJCTxzdmcgY2xhc3M9Imljb24iPjx1c2UgeGxpbms6aHJlZj0iI2ljb24tY2FyIj48L3VzZT48L3N2Zz4KCQkJCQkJPHNwYW4gY2xhc3M9InNocmluay1ncm93IHNrZWxldG9uLXR4dCIgZGF0YS1tZW51LXRyYW5zbGF0ZT0iVVNFRCI+T2NjYXNpb248L3NwYW4+CgkJCQkJCQkJCQkJPHNwYW4gcm9sZT0iYnV0dG9uIiB0YWJpbmRleD0iMCIgY2xhc3M9Im1lbnVFeHBhbmQgLXAgLS1zLTMiIGFyaWEtbGFiZWw9Ik1lbnUgZMOpcm91bGFudCI+CgkJCQkJCQkJCTxzdmcgY2xhc3M9Imljb24iPjx1c2UgeGxpbms6aHJlZj0iI2ljb24tY2hldnJvbi1kb3duIj48L3VzZT48L3N2Zz4KCQkJCQk8L3NwYW4+CgkJCQkJPC9hPgoJCQkJCQkJCQkJPGRpdiBjbGFzcz0ic3VibWVudUl0ZW1Db250YWluZXIiIHN0eWxlPSJkaXNwbGF5Om5vbmU7Ij4KCQkJCQkJPHN0YWNrLWxjIGlkPSJpdGVtX1VTRUQiIGNsYXNzPSItLXMtOSI+CgkJCQkJCQkJCQkJCQk8c3BhbiBjbGFzcz0iLW0wIj4KCQkJCQkJCTxhIGNsYXNzPSJzdWJtZW51LWl0ZW0gZmxleC1ib3ggZmxleC1iZXR3ZWVuIC1idCAtLXMtNSBVU0VEX0FMTElOViIgaHJlZj0iP3BhdGg9L29jY2FzaW9uL3JlY2hlcmNoZS5odG1sIiB0YXJnZXQ9IiIgb25jbGljaz0iIj4KCQkJCQkJCQk8c3BhbiBjbGFzcz0iLXBoIj5JbnZlbnRhaXJlIGQnb2NjYXNpb24gKDM3KTwvc3Bhbj4KCQkJCQkJCQk8c3BhbiByb2xlPSJidXR0b24iIHRhYmluZGV4PSIwIiBjbGFzcz0iLXAgLS1zLTUiPgoJCQkJCQkJCQkJCQk8c3ZnIGNsYXNzPSJpY29uIj48dXNlIHhsaW5rOmhyZWY9IiNpY29uLWNoZXZyb24tcmlnaHQiPjwvdXNlPjwvc3ZnPgoJCQkJCQkJCTwvc3Bhbj4KCQkJCQkJCTwvYT4KCQkJCQkJPC9zcGFuPgkJCQkJCTxzcGFuIGNsYXNzPSItbTAiPgoJCQkJCQkJPGEgY2xhc3M9InN1Ym1lbnUtaXRlbSBmbGV4LWJveCBmbGV4LWJldHdlZW4gLWJ0IC0tcy01IFVTRURfQ0VSVElGSUVEX0NBUlMiIGhyZWY9Ij9wYXRoPS9vY2Nhc2lvbi9jZXJ0aWZpZXMuaHRtbCIgdGFyZ2V0PSIiIG9uY2xpY2s9IiI+CgkJCQkJCQkJPHNwYW4gY2xhc3M9Ii1waCI+VsOpaGljdWxlcyBjZXJ0aWZpw6lzIEFjdXJhICgyNCk8L3NwYW4+CgkJCQkJCQkJPHNwYW4gcm9sZT0iYnV0dG9uIiB0YWJpbmRleD0iMCIgY2xhc3M9Ii1wIC0tcy01Ij4KCQkJCQkJCQkJCQkJPHN2ZyBjbGFzcz0iaWNvbiI+PHVzZSB4bGluazpocmVmPSIjaWNvbi1jaGV2cm9uLXJpZ2h0Ij48L3VzZT48L3N2Zz4KCQkJCQkJCQk8L3NwYW4+CgkJCQkJCQk8L2E+CgkJCQkJCTwvc3Bhbj4JCQkJCQk8c3BhbiBjbGFzcz0iLW0wIj4KCQkJCQkJCTxhIGNsYXNzPSJzdWJtZW51LWl0ZW0gZmxleC1ib3ggZmxleC1iZXR3ZWVuIC1idCAtLXMtNSBVU0VEX0NBVF9DQVIiIGhyZWY9Ij9wYXRoPS9vY2Nhc2lvbi90eXBlL0F1dG9zLmh0bWwiIHRhcmdldD0iIiBvbmNsaWNrPSIiPgoJCQkJCQkJCTxzcGFuIGNsYXNzPSItcGgiPkJlcmxpbmVzIC8gQ29tcGFjdGVzICg4KTwvc3Bhbj4KCQkJCQkJCQk8c3BhbiByb2xlPSJidXR0b24iIHRhYmluZGV4PSIwIiBjbGFzcz0iLXAgLS1zLTUiPgoJCQkJCQkJCQkJCQk8c3ZnIGNsYXNzPSJpY29uIj48dXNlIHhsaW5rOmhyZWY9IiNpY29uLWNoZXZyb24tcmlnaHQiPjwvdXNlPjwvc3ZnPgoJCQkJCQkJCTwvc3Bhbj4KCQkJCQkJCTwvYT4KCQkJCQkJPC9zcGFuPgkJCQkJCTxzcGFuIGNsYXNzPSItbTAiPgoJCQkJCQkJPGEgY2xhc3M9InN1Ym1lbnUtaXRlbSBmbGV4LWJveCBmbGV4LWJldHdlZW4gLWJ0IC0tcy01IFVTRURfQ0FUX1NVViIgaHJlZj0iP3BhdGg9L29jY2FzaW9uL3R5cGUvVlVTLmh0bWwiIHRhcmdldD0iIiBvbmNsaWNrPSIiPgoJCQkJCQkJCTxzcGFuIGNsYXNzPSItcGgiPlZVUyAvIE11bHRpc2VnbWVudHMgKDI5KTwvc3Bhbj4KCQkJCQkJCQk8c3BhbiByb2xlPSJidXR0b24iIHRhYmluZGV4PSIwIiBjbGFzcz0iLXAgLS1zLTUiPgoJCQkJCQkJCQkJCQk8c3ZnIGNsYXNzPSJpY29uIj48dXNlIHhsaW5rOmhyZWY9IiNpY29uLWNoZXZyb24tcmlnaHQiPjwvdXNlPjwvc3ZnPgoJCQkJCQkJCTwvc3Bhbj4KCQkJCQkJCTwvYT4KCQkJCQkJPC9zcGFuPgkJCQkJCTxzcGFuIGNsYXNzPSItbTAiPgoJCQkJCQkJPGEgY2xhc3M9InN1Ym1lbnUtaXRlbSBmbGV4LWJveCBmbGV4LWJldHdlZW4gLWJ0IC0tcy01IFVTRURfQ0FUX0hZQlJJRCIgaHJlZj0iP3BhdGg9L29jY2FzaW9uL2h5YnJpZGUuaHRtbCIgdGFyZ2V0PSIiIG9uY2xpY2s9IiI+CgkJCQkJCQkJPHNwYW4gY2xhc3M9Ii1waCI+SHlicmlkZXMgKDIpPC9zcGFuPgoJCQkJCQkJCTxzcGFuIHJvbGU9ImJ1dHRvbiIgdGFiaW5kZXg9IjAiIGNsYXNzPSItcCAtLXMtNSI+CgkJCQkJCQkJCQkJCTxzdmcgY2xhc3M9Imljb24iPjx1c2UgeGxpbms6aHJlZj0iI2ljb24tY2hldnJvbi1yaWdodCI+PC91c2U+PC9zdmc+CgkJCQkJCQkJPC9zcGFuPgoJCQkJCQkJPC9hPgoJCQkJCQk8L3NwYW4+CQkJCQkJPHNwYW4gY2xhc3M9Ii1tMCI+CgkJCQkJCQk8YSBjbGFzcz0ic3VibWVudS1pdGVtIGZsZXgtYm94IGZsZXgtYmV0d2VlbiAtYnQgLS1zLTUgVVNFRDEiIGhyZWY9Ij9wYXRoPS9vY2Nhc2lvbi9BY3VyYS1SRFguaHRtbCIgdGFyZ2V0PSIiIG9uY2xpY2s9IiI+CgkJCQkJCQkJPHNwYW4gY2xhc3M9Ii1waCI+QWN1cmEgUkRYICgxMik8L3NwYW4+CgkJCQkJCQkJPHNwYW4gcm9sZT0iYnV0dG9uIiB0YWJpbmRleD0iMCIgY2xhc3M9Ii1wIC0tcy01Ij4KCQkJCQkJCQkJCQkJPHN2ZyBjbGFzcz0iaWNvbiI+PHVzZSB4bGluazpocmVmPSIjaWNvbi1jaGV2cm9uLXJpZ2h0Ij48L3VzZT48L3N2Zz4KCQkJCQkJCQk8L3NwYW4+CgkJCQkJCQk8L2E+CgkJCQkJCTwvc3Bhbj4JCQkJCQk8c3BhbiBjbGFzcz0iLW0wIj4KCQkJCQkJCTxhIGNsYXNzPSJzdWJtZW51LWl0ZW0gZmxleC1ib3ggZmxleC1iZXR3ZWVuIC1idCAtLXMtNSBVU0VEMiIgaHJlZj0iP3BhdGg9L29jY2FzaW9uL0FjdXJhLU1EWC5odG1sIiB0YXJnZXQ9IiIgb25jbGljaz0iIj4KCQkJCQkJCQk8c3BhbiBjbGFzcz0iLXBoIj5BY3VyYSBNRFggKDcpPC9zcGFuPgoJCQkJCQkJCTxzcGFuIHJvbGU9ImJ1dHRvbiIgdGFiaW5kZXg9IjAiIGNsYXNzPSItcCAtLXMtNSI+CgkJCQkJCQkJCQkJCTxzdmcgY2xhc3M9Imljb24iPjx1c2UgeGxpbms6aHJlZj0iI2ljb24tY2hldnJvbi1yaWdodCI+PC91c2U+PC9zdmc+CgkJCQkJCQkJPC9zcGFuPgoJCQkJCQkJPC9hPgoJCQkJCQk8L3NwYW4+CQkJCQkJPHNwYW4gY2xhc3M9Ii1tMCI+CgkJCQkJCQk8YSBjbGFzcz0ic3VibWVudS1pdGVtIGZsZXgtYm94IGZsZXgtYmV0d2VlbiAtYnQgLS1zLTUgVVNFRDMiIGhyZWY9Ij9wYXRoPS9vY2Nhc2lvbi9BY3VyYS1BRFguaHRtbCIgdGFyZ2V0PSIiIG9uY2xpY2s9IiI+CgkJCQkJCQkJPHNwYW4gY2xhc3M9Ii1waCI+QWN1cmEgQURYICgzKTwvc3Bhbj4KCQkJCQkJCQk8c3BhbiByb2xlPSJidXR0b24iIHRhYmluZGV4PSIwIiBjbGFzcz0iLXAgLS1zLTUiPgoJCQkJCQkJCQkJCQk8c3ZnIGNsYXNzPSJpY29uIj48dXNlIHhsaW5rOmhyZWY9IiNpY29uLWNoZXZyb24tcmlnaHQiPjwvdXNlPjwvc3ZnPgoJCQkJCQkJCTwvc3Bhbj4KCQkJCQkJCTwvYT4KCQkJCQkJPC9zcGFuPgkJCQkJCTxzcGFuIGNsYXNzPSItbTAiPgoJCQkJCQkJPGEgY2xhc3M9InN1Ym1lbnUtaXRlbSBmbGV4LWJveCBmbGV4LWJldHdlZW4gLWJ0IC0tcy01IFVTRUQ0IiBocmVmPSI\/cGF0aD0vb2NjYXNpb24vQWN1cmEtSW50ZWdyYS5odG1sIiB0YXJnZXQ9IiIgb25jbGljaz0iIj4KCQkJCQkJCQk8c3BhbiBjbGFzcz0iLXBoIj5BY3VyYSBJbnRlZ3JhICgzKTwvc3Bhbj4KCQkJCQkJCQk8c3BhbiByb2xlPSJidXR0b24iIHRhYmluZGV4PSIwIiBjbGFzcz0iLXAgLS1zLTUiPgoJCQkJCQkJCQkJCQk8c3ZnIGNsYXNzPSJpY29uIj48dXNlIHhsaW5rOmhyZWY9IiNpY29uLWNoZXZyb24tcmlnaHQiPjwvdXNlPjwvc3ZnPgoJCQkJCQkJCTwvc3Bhbj4KCQkJCQkJCTwvYT4KCQkJCQkJPC9zcGFuPgkJCQkJCTxzcGFuIGNsYXNzPSItbTAiPgoJCQkJCQkJPGEgY2xhc3M9InN1Ym1lbnUtaXRlbSBmbGV4LWJveCBmbGV4LWJldHdlZW4gLWJ0IC0tcy01IFVTRUQ1IiBocmVmPSI\/cGF0aD0vb2NjYXNpb24vQWN1cmEtSUxYLmh0bWwiIHRhcmdldD0iIiBvbmNsaWNrPSIiPgoJCQkJCQkJCTxzcGFuIGNsYXNzPSItcGgiPkFjdXJhIElMWCAoMSk8L3NwYW4+CgkJCQkJCQkJPHNwYW4gcm9sZT0iYnV0dG9uIiB0YWJpbmRleD0iMCIgY2xhc3M9Ii1wIC0tcy01Ij4KCQkJCQkJCQkJCQkJPHN2ZyBjbGFzcz0iaWNvbiI+PHVzZSB4bGluazpocmVmPSIjaWNvbi1jaGV2cm9uLXJpZ2h0Ij48L3VzZT48L3N2Zz4KCQkJCQkJCQk8L3NwYW4+CgkJCQkJCQk8L2E+CgkJCQkJCTwvc3Bhbj4JCQkJCQk8c3BhbiBjbGFzcz0iLW0wIj4KCQkJCQkJCTxhIGNsYXNzPSJzdWJtZW51LWl0ZW0gZmxleC1ib3ggZmxleC1iZXR3ZWVuIC1idCAtLXMtNSBVU0VENiIgaHJlZj0iP3BhdGg9L29jY2FzaW9uL0FjdXJhLVRMWC5odG1sIiB0YXJnZXQ9IiIgb25jbGljaz0iIj4KCQkJCQkJCQk8c3BhbiBjbGFzcz0iLXBoIj5BY3VyYSBUTFggKDEpPC9zcGFuPgoJCQkJCQkJCTxzcGFuIHJvbGU9ImJ1dHRvbiIgdGFiaW5kZXg9IjAiIGNsYXNzPSItcCAtLXMtNSI+CgkJCQkJCQkJCQkJCTxzdmcgY2xhc3M9Imljb24iPjx1c2UgeGxpbms6aHJlZj0iI2ljb24tY2hldnJvbi1yaWdodCI+PC91c2U+PC9zdmc+CgkJCQkJCQkJPC9zcGFuPgoJCQkJCQkJPC9hPgoJCQkJCQk8L3NwYW4+CQkJCQkJPHNwYW4gY2xhc3M9Ii1tMCI+CgkJCQkJCQk8YSBjbGFzcz0ic3VibWVudS1pdGVtIGZsZXgtYm94IGZsZXgtYmV0d2VlbiAtYnQgLS1zLTUgVVNFRDciIGhyZWY9Ij9wYXRoPS9vY2Nhc2lvbi9Ib25kYS1DUl9WLmh0bWwiIHRhcmdldD0iIiBvbmNsaWNrPSIiPgoJCQkJCQkJCTxzcGFuIGNsYXNzPSItcGgiPkhvbmRhIENSLVYgKDQpPC9zcGFuPgoJCQkJCQkJCTxzcGFuIHJvbGU9ImJ1dHRvbiIgdGFiaW5kZXg9IjAiIGNsYXNzPSItcCAtLXMtNSI+CgkJCQkJCQkJCQkJCTxzdmcgY2xhc3M9Imljb24iPjx1c2UgeGxpbms6aHJlZj0iI2ljb24tY2hldnJvbi1yaWdodCI+PC91c2U+PC9zdmc+CgkJCQkJCQkJPC9zcGFuPgoJCQkJCQkJPC9hPgoJCQkJCQk8L3NwYW4+CQkJCQkJPHNwYW4gY2xhc3M9Ii1tMCI+CgkJCQkJCQk8YSBjbGFzcz0ic3VibWVudS1pdGVtIGZsZXgtYm94IGZsZXgtYmV0d2VlbiAtYnQgLS1zLTUgVVNFRDgiIGhyZWY9Ij9wYXRoPS9vY2Nhc2lvbi9Ib25kYS1DaXZpY19IeWJyaWQuaHRtbCIgdGFyZ2V0PSIiIG9uY2xpY2s9IiI+CgkJCQkJCQkJPHNwYW4gY2xhc3M9Ii1waCI+SG9uZGEgQ2l2aWMgSHlicmlkICgyKTwvc3Bhbj4KCQkJCQkJCQk8c3BhbiByb2xlPSJidXR0b24iIHRhYmluZGV4PSIwIiBjbGFzcz0iLXAgLS1zLTUiPgoJCQkJCQkJCQkJCQk8c3ZnIGNsYXNzPSJpY29uIj48dXNlIHhsaW5rOmhyZWY9IiNpY29uLWNoZXZyb24tcmlnaHQiPjwvdXNlPjwvc3ZnPgoJCQkJCQkJCTwvc3Bhbj4KCQkJCQkJCTwvYT4KCQkJCQkJPC9zcGFuPgkJCQkJCTxzcGFuIGNsYXNzPSItbTAiPgoJCQkJCQkJPGEgY2xhc3M9InN1Ym1lbnUtaXRlbSBmbGV4LWJveCBmbGV4LWJldHdlZW4gLWJ0IC0tcy01IFVTRUQ5IiBocmVmPSI\/cGF0aD0vb2NjYXNpb24vQXVkaS1TUTcuaHRtbCIgdGFyZ2V0PSIiIG9uY2xpY2s9IiI+CgkJCQkJCQkJPHNwYW4gY2xhc3M9Ii1waCI+QXVkaSBTUTcgKDEpPC9zcGFuPgoJCQkJCQkJCTxzcGFuIHJvbGU9ImJ1dHRvbiIgdGFiaW5kZXg9IjAiIGNsYXNzPSItcCAtLXMtNSI+CgkJCQkJCQkJCQkJCTxzdmcgY2xhc3M9Imljb24iPjx1c2UgeGxpbms6aHJlZj0iI2ljb24tY2hldnJvbi1yaWdodCI+PC91c2U+PC9zdmc+CgkJCQkJCQkJPC9zcGFuPgoJCQkJCQkJPC9hPgoJCQkJCQk8L3NwYW4+CQkJCQkJPHNwYW4gY2xhc3M9Ii1tMCI+CgkJCQkJCQk8YSBjbGFzcz0ic3VibWVudS1pdGVtIGZsZXgtYm94IGZsZXgtYmV0d2VlbiAtYnQgLS1zLTUgVVNFRDEwIiBocmVmPSI\/cGF0aD0vb2NjYXNpb24vSG9uZGEtQ2l2aWMuaHRtbCIgdGFyZ2V0PSIiIG9uY2xpY2s9IiI+CgkJCQkJCQkJPHNwYW4gY2xhc3M9Ii1waCI+SG9uZGEgQ2l2aWMgKDEpPC9zcGFuPgoJCQkJCQkJCTxzcGFuIHJvbGU9ImJ1dHRvbiIgdGFiaW5kZXg9IjAiIGNsYXNzPSItcCAtLXMtNSI+CgkJCQkJCQkJCQkJCTxzdmcgY2xhc3M9Imljb24iPjx1c2UgeGxpbms6aHJlZj0iI2ljb24tY2hldnJvbi1yaWdodCI+PC91c2U+PC9zdmc+CgkJCQkJCQkJPC9zcGFuPgoJCQkJCQkJPC9hPgoJCQkJCQk8L3NwYW4+CQkJCQkJPHNwYW4gY2xhc3M9Ii1tMCI+CgkJCQkJCQk8YSBjbGFzcz0ic3VibWVudS1pdGVtIGZsZXgtYm94IGZsZXgtYmV0d2VlbiAtYnQgLS1zLTUgVVNFRDExIiBocmVmPSI\/cGF0aD0vb2NjYXNpb24vSG9uZGEtUGFzc3BvcnQuaHRtbCIgdGFyZ2V0PSIiIG9uY2xpY2s9IiI+CgkJCQkJCQkJPHNwYW4gY2xhc3M9Ii1waCI+SG9uZGEgUGFzc3BvcnQgKDEpPC9zcGFuPgoJCQkJCQkJCTxzcGFuIHJvbGU9ImJ1dHRvbiIgdGFiaW5kZXg9IjAiIGNsYXNzPSItcCAtLXMtNSI+CgkJCQkJCQkJCQkJCTxzdmcgY2xhc3M9Imljb24iPjx1c2UgeGxpbms6aHJlZj0iI2ljb24tY2hldnJvbi1yaWdodCI+PC91c2U+PC9zdmc+CgkJCQkJCQkJPC9zcGFuPgoJCQkJCQkJPC9hPgoJCQkJCQk8L3NwYW4+CQkJCQkJPHNwYW4gY2xhc3M9Ii1tMCI+CgkJCQkJCQk8YSBjbGFzcz0ic3VibWVudS1pdGVtIGZsZXgtYm94IGZsZXgtYmV0d2VlbiAtYnQgLS1zLTUgVVNFRDEyIiBocmVmPSI\/cGF0aD0vb2NjYXNpb24vUG9yc2NoZS1NYWNhbi5odG1sIiB0YXJnZXQ9IiIgb25jbGljaz0iIj4KCQkJCQkJCQk8c3BhbiBjbGFzcz0iLXBoIj5Qb3JzY2hlIE1hY2FuICgxKTwvc3Bhbj4KCQkJCQkJCQk8c3BhbiByb2xlPSJidXR0b24iIHRhYmluZGV4PSIwIiBjbGFzcz0iLXAgLS1zLTUiPgoJCQkJCQkJCQkJCQk8c3ZnIGNsYXNzPSJpY29uIj48dXNlIHhsaW5rOmhyZWY9IiNpY29uLWNoZXZyb24tcmlnaHQiPjwvdXNlPjwvc3ZnPgoJCQkJCQkJCTwvc3Bhbj4KCQkJCQkJCTwvYT4KCQkJCQkJPC9zcGFuPgoJCQkJCQk8L3N0YWNrLWxjPgoJCQkJCTwvZGl2PgoJCQkJPC9saT4KCgkJCQkKCQkJCTxsaSBjbGFzcz0iIj4KCQkJCQkKCQkJCQk8YSBjbGFzcz0iUFJPTU8gIC1ib2xkICBtZW51LWl0ZW0gZmxleC1ib3giIGhyZWY9Ij9wYXRoPS9wcm9tb3Rpb25zLmh0bWwiIHRhcmdldD0iX3RvcCIgb25jbGljaz0iIj4KCQkJCQkJCQkJPHN2ZyBjbGFzcz0iaWNvbiI+PHVzZSB4bGluazpocmVmPSIjaWNvbi10YWciPjwvdXNlPjwvc3ZnPgoJCQkJCQk8c3BhbiBjbGFzcz0ic2hyaW5rLWdyb3cgc2tlbGV0b24tdHh0Ij5PZmZyZXM8L3NwYW4+CgkJCQkJCQkJCQkJPHNwYW4gcm9sZT0iYnV0dG9uIiB0YWJpbmRleD0iMCIgY2xhc3M9Im1lbnVFeHBhbmQgLXAgLS1zLTMiIGFyaWEtbGFiZWw9Ik1lbnUgZMOpcm91bGFudCI+CgkJCQkJCQkJCTxzdmcgY2xhc3M9Imljb24iPjx1c2UgeGxpbms6aHJlZj0iI2ljb24tY2hldnJvbi1kb3duIj48L3VzZT48L3N2Zz4KCQkJCQk8L3NwYW4+CgkJCQkJPC9hPgoJCQkJCQkJCQkJPGRpdiBjbGFzcz0ic3VibWVudUl0ZW1Db250YWluZXIiIHN0eWxlPSJkaXNwbGF5Om5vbmU7Ij4KCQkJCQkJPHN0YWNrLWxjIGlkPSJpdGVtX1BST01PIiBjbGFzcz0iLS1zLTkiPgoJCQkJCQkJCQkJCQkJPHNwYW4gY2xhc3M9Ii1tMCI+CgkJCQkJCQk8YSBjbGFzcz0ic3VibWVudS1pdGVtIGZsZXgtYm94IGZsZXgtYmV0d2VlbiAtYnQgLS1zLTUgUFJPTU9fTUFOVUZBQ1RVUkVSIiBocmVmPSI\/cGF0aD0vcHJvbW90aW9ucy5odG1sI21hbnVmYWN0dXJlciIgdGFyZ2V0PSIiIG9uY2xpY2s9IiI+CgkJCQkJCQkJPHNwYW4gY2xhc3M9Ii1waCI+SW5jaXRhdGlmcyBBY3VyYTwvc3Bhbj4KCQkJCQkJCQk8c3BhbiByb2xlPSJidXR0b24iIHRhYmluZGV4PSIwIiBjbGFzcz0iLXAgLS1zLTUiPgoJCQkJCQkJCQkJCQk8c3ZnIGNsYXNzPSJpY29uIj48dXNlIHhsaW5rOmhyZWY9IiNpY29uLWNoZXZyb24tcmlnaHQiPjwvdXNlPjwvc3ZnPgoJCQkJCQkJCTwvc3Bhbj4KCQkJCQkJCTwvYT4KCQkJCQkJPC9zcGFuPgoJCQkJCQk8L3N0YWNrLWxjPgoJCQkJCTwvZGl2PgoJCQkJPC9saT4KCgkJCQkKCQkJCTxsaSBjbGFzcz0iIj4KCQkJCQkKCQkJCQk8YSBjbGFzcz0iRklOQU5DRSAgLWJvbGQgIG1lbnUtaXRlbSBmbGV4LWJveCIgaHJlZj0iP3BhdGg9L2RlbWFuZGVzL2ZpbmFuY2VtZW50Lmh0bWwiIHRhcmdldD0iX3RvcCIgb25jbGljaz0iIj4KCQkJCQkJCQkJPHN2ZyBjbGFzcz0iaWNvbiI+PHVzZSB4bGluazpocmVmPSIjaWNvbi1oYW5kLWhvbGRpbmctdXNkIj48L3VzZT48L3N2Zz4KCQkJCQkJPHNwYW4gY2xhc3M9InNocmluay1ncm93IHNrZWxldG9uLXR4dCI+RmluYW5jZW1lbnQ8L3NwYW4+CgkJCQkJCQkJCQkJPHNwYW4gcm9sZT0iYnV0dG9uIiB0YWJpbmRleD0iMCIgY2xhc3M9Im1lbnVFeHBhbmQgLXAgLS1zLTMiIGFyaWEtbGFiZWw9Ik1lbnUgZMOpcm91bGFudCI+CgkJCQkJCQkJCTxzdmcgY2xhc3M9Imljb24iPjx1c2UgeGxpbms6aHJlZj0iI2ljb24tY2hldnJvbi1kb3duIj48L3VzZT48L3N2Zz4KCQkJCQk8L3NwYW4+CgkJCQkJPC9hPgoJCQkJCQkJCQkJPGRpdiBjbGFzcz0ic3VibWVudUl0ZW1Db250YWluZXIiIHN0eWxlPSJkaXNwbGF5Om5vbmU7Ij4KCQkJCQkJPHN0YWNrLWxjIGlkPSJpdGVtX0ZJTkFOQ0UiIGNsYXNzPSItLXMtOSI+CgkJCQkJCQkJCQkJCQk8c3BhbiBjbGFzcz0iLW0wIj4KCQkJCQkJCTxhIGNsYXNzPSJzdWJtZW51LWl0ZW0gZmxleC1ib3ggZmxleC1iZXR3ZWVuIC1idCAtLXMtNSAzMDRhMTViNy0zY2M2LWJhMDEtZWMxLTZlIiBocmVmPSI\/cGF0aD0vZGVtYW5kZXMvZmluYW5jZW1lbnQuaHRtbCIgdGFyZ2V0PSIiIG9uY2xpY2s9IiI+CgkJCQkJCQkJPHNwYW4gY2xhc3M9Ii1waCI+RGVtYW5kZSBkZSBmaW5hbmNlbWVudDwvc3Bhbj4KCQkJCQkJCQk8c3BhbiByb2xlPSJidXR0b24iIHRhYmluZGV4PSIwIiBjbGFzcz0iLXAgLS1zLTUiPgoJCQkJCQkJCQkJCQk8c3ZnIGNsYXNzPSJpY29uIj48dXNlIHhsaW5rOmhyZWY9IiNpY29uLWNoZXZyb24tcmlnaHQiPjwvdXNlPjwvc3ZnPgoJCQkJCQkJCTwvc3Bhbj4KCQkJCQkJCTwvYT4KCQkJCQkJPC9zcGFuPgkJCQkJCTxzcGFuIGNsYXNzPSItbTAiPgoJCQkJCQkJPGEgY2xhc3M9InN1Ym1lbnUtaXRlbSBmbGV4LWJveCBmbGV4LWJldHdlZW4gLWJ0IC0tcy01IDhjZDcyODhmLWE1ZDEtNjc4Yy0zYjE4LWIiIGhyZWY9ImphdmFzY3JpcHQ6dm9pZCgwKSIgdGFyZ2V0PSIiIG9uY2xpY2s9ImphdmFzY3JpcHQ6dm9pZCgkKCcjVHJhZGVJbkJhclBvcHVwQ29udGFpbmVyJykucG9wdXBpemUoKS5zZXRUcmlnZ2VyKCdjbGljaycpLm9wZW4oKSk7Ij4KCQkJCQkJCQk8c3BhbiBjbGFzcz0iLXBoIj5WYWxldXIgZCfDqWNoYW5nZTwvc3Bhbj4KCQkJCQkJCQk8c3BhbiByb2xlPSJidXR0b24iIHRhYmluZGV4PSIwIiBjbGFzcz0iLXAgLS1zLTUiPgoJCQkJCQkJCQkJCQk8c3ZnIGNsYXNzPSJpY29uIj48dXNlIHhsaW5rOmhyZWY9IiNpY29uLWNoZXZyb24tcmlnaHQiPjwvdXNlPjwvc3ZnPgoJCQkJCQkJCTwvc3Bhbj4KCQkJCQkJCTwvYT4KCQkJCQkJPC9zcGFuPgoJCQkJCQk8L3N0YWNrLWxjPgoJCQkJCTwvZGl2PgoJCQkJPC9saT4KCgkJCQkKCQkJCTxsaSBjbGFzcz0iIj4KCQkJCQkKCQkJCQk8YSBjbGFzcz0iU0VSVklDRSAgLWJvbGQgIG1lbnUtaXRlbSBmbGV4LWJveCIgaHJlZj0iP3BhdGg9L3NlcnZpY2VzLWFjdXJhLmh0bWwiIHRhcmdldD0iX3RvcCIgb25jbGljaz0iIj4KCQkJCQkJCQkJPHN2ZyBjbGFzcz0iaWNvbiI+PHVzZSB4bGluazpocmVmPSIjaWNvbi10b29scyI+PC91c2U+PC9zdmc+CgkJCQkJCTxzcGFuIGNsYXNzPSJzaHJpbmstZ3JvdyBza2VsZXRvbi10eHQiIGRhdGEtbWVudS10cmFuc2xhdGU9IlNFUlZJQ0UiPlNlcnZpY2UgJmFtcDsgUGnDqGNlczwvc3Bhbj4KCQkJCQkJCQkJCQk8c3BhbiByb2xlPSJidXR0b24iIHRhYmluZGV4PSIwIiBjbGFzcz0ibWVudUV4cGFuZCAtcCAtLXMtMyIgYXJpYS1sYWJlbD0iTWVudSBkw6lyb3VsYW50Ij4KCQkJCQkJCQkJPHN2ZyBjbGFzcz0iaWNvbiI+PHVzZSB4bGluazpocmVmPSIjaWNvbi1jaGV2cm9uLWRvd24iPjwvdXNlPjwvc3ZnPgoJCQkJCTwvc3Bhbj4KCQkJCQk8L2E+CgkJCQkJCQkJCQk8ZGl2IGNsYXNzPSJzdWJtZW51SXRlbUNvbnRhaW5lciIgc3R5bGU9ImRpc3BsYXk6bm9uZTsiPgoJCQkJCQk8c3RhY2stbGMgaWQ9Iml0ZW1fU0VSVklDRSIgY2xhc3M9Ii0tcy05Ij4KCQkJCQkJCQkJCQkJCTxzcGFuIGNsYXNzPSItbTAiPgoJCQkJCQkJPGEgY2xhc3M9InN1Ym1lbnUtaXRlbSBmbGV4LWJveCBmbGV4LWJldHdlZW4gLWJ0IC0tcy01IEFQUE9JTlQiIGhyZWY9Ij9wYXRoPS9kZW1hbmRlcy9yZW5kZXotdm91cy1hdS1zZXJ2aWNlLmh0bWwiIHRhcmdldD0iIiBvbmNsaWNrPSIiPgoJCQkJCQkJCTxzcGFuIGNsYXNzPSItcGgiPlJlbmRlei12b3VzIGF1IHNlcnZpY2U8L3NwYW4+CgkJCQkJCQkJPHNwYW4gcm9sZT0iYnV0dG9uIiB0YWJpbmRleD0iMCIgY2xhc3M9Ii1wIC0tcy01Ij4KCQkJCQkJCQkJCQkJPHN2ZyBjbGFzcz0iaWNvbiI+PHVzZSB4bGluazpocmVmPSIjaWNvbi1jaGV2cm9uLXJpZ2h0Ij48L3VzZT48L3N2Zz4KCQkJCQkJCQk8L3NwYW4+CgkJCQkJCQk8L2E+CgkJCQkJCTwvc3Bhbj4JCQkJCQk8c3BhbiBjbGFzcz0iLW0wIj4KCQkJCQkJCTxhIGNsYXNzPSJzdWJtZW51LWl0ZW0gZmxleC1ib3ggZmxleC1iZXR3ZWVuIC1idCAtLXMtNSBQSUVDRVMiIGhyZWY9Ij9wYXRoPS9kZW1hbmRlcy9jb21tYW5kZS1waWVjZXMtYWNjZXNzb2lyZXMtYXV0b21vYmlsZXMuaHRtbCIgdGFyZ2V0PSIiIG9uY2xpY2s9IiI+CgkJCQkJCQkJPHNwYW4gY2xhc3M9Ii1waCI+UGnDqGNlcyAmYW1wOyBBY2Nlc3NvaXJlczwvc3Bhbj4KCQkJCQkJCQk8c3BhbiByb2xlPSJidXR0b24iIHRhYmluZGV4PSIwIiBjbGFzcz0iLXAgLS1zLTUiPgoJCQkJCQkJCQkJCQk8c3ZnIGNsYXNzPSJpY29uIj48dXNlIHhsaW5rOmhyZWY9IiNpY29uLWNoZXZyb24tcmlnaHQiPjwvdXNlPjwvc3ZnPgoJCQkJCQkJCTwvc3Bhbj4KCQkJCQkJCTwvYT4KCQkJCQkJPC9zcGFuPgkJCQkJCTxzcGFuIGNsYXNzPSItbTAiPgoJCQkJCQkJPGEgY2xhc3M9InN1Ym1lbnUtaXRlbSBmbGV4LWJveCBmbGV4LWJldHdlZW4gLWJ0IC0tcy01IFRJUkVTIiBocmVmPSI\/cGF0aD0vZGVtYW5kZXMvY29tbWFuZGUtZGUtcG5ldXMuaHRtbCIgdGFyZ2V0PSIiIG9uY2xpY2s9IiI+CgkJCQkJCQkJPHNwYW4gY2xhc3M9Ii1waCI+Q29tbWFuZGV6IHZvcyBwbmV1czwvc3Bhbj4KCQkJCQkJCQk8c3BhbiByb2xlPSJidXR0b24iIHRhYmluZGV4PSIwIiBjbGFzcz0iLXAgLS1zLTUiPgoJCQkJCQkJCQkJCQk8c3ZnIGNsYXNzPSJpY29uIj48dXNlIHhsaW5rOmhyZWY9IiNpY29uLWNoZXZyb24tcmlnaHQiPjwvdXNlPjwvc3ZnPgoJCQkJCQkJCTwvc3Bhbj4KCQkJCQkJCTwvYT4KCQkJCQkJPC9zcGFuPgkJCQkJCTxzcGFuIGNsYXNzPSItbTAiPgoJCQkJCQkJPGEgY2xhc3M9InN1Ym1lbnUtaXRlbSBmbGV4LWJveCBmbGV4LWJldHdlZW4gLWJ0IC0tcy01IEJPRFkiIGhyZWY9Ij9wYXRoPS9kZW1hbmRlcy9yZW5kZXotdm91cy1hdS1jYXJvc3NlcmllLmh0bWwiIHRhcmdldD0iIiBvbmNsaWNrPSIiPgoJCQkJCQkJCTxzcGFuIGNsYXNzPSItcGgiPkNhcnJvc3NlcmllIGF1dG9tb2JpbGU8L3NwYW4+CgkJCQkJCQkJPHNwYW4gcm9sZT0iYnV0dG9uIiB0YWJpbmRleD0iMCIgY2xhc3M9Ii1wIC0tcy01Ij4KCQkJCQkJCQkJCQkJPHN2ZyBjbGFzcz0iaWNvbiI+PHVzZSB4bGluazpocmVmPSIjaWNvbi1jaGV2cm9uLXJpZ2h0Ij48L3VzZT48L3N2Zz4KCQkJCQkJCQk8L3NwYW4+CgkJCQkJCQk8L2E+CgkJCQkJCTwvc3Bhbj4JCQkJCQk8c3BhbiBjbGFzcz0iLW0wIj4KCQkJCQkJCTxhIGNsYXNzPSJzdWJtZW51LWl0ZW0gZmxleC1ib3ggZmxleC1iZXR3ZWVuIC1idCAtLXMtNSA1NDQxNzg0ZS1kZGM3LTE1N2MtY2M0My1jIiBocmVmPSI\/cGF0aD0vcmFwcGVscy9yYXBwZWxzLmh0bWwiIHRhcmdldD0iIiBvbmNsaWNrPSIiPgoJCQkJCQkJCTxzcGFuIGNsYXNzPSItcGgiPlbDqXJpZmlleiBsZXMgcmFwcGVsczwvc3Bhbj4KCQkJCQkJCQk8c3BhbiByb2xlPSJidXR0b24iIHRhYmluZGV4PSIwIiBjbGFzcz0iLXAgLS1zLTUiPgoJCQkJCQkJCQkJCQk8c3ZnIGNsYXNzPSJpY29uIj48dXNlIHhsaW5rOmhyZWY9IiNpY29uLWNoZXZyb24tcmlnaHQiPjwvdXNlPjwvc3ZnPgoJCQkJCQkJCTwvc3Bhbj4KCQkJCQkJCTwvYT4KCQkJCQkJPC9zcGFuPgoJCQkJCQk8L3N0YWNrLWxjPgoJCQkJCTwvZGl2PgoJCQkJPC9saT4KCgkJCQkKCQkJCTxsaSBjbGFzcz0iIj4KCQkJCQkKCQkJCQk8YSBjbGFzcz0iQ09OVEFDVCAgLWJvbGQgIG1lbnUtaXRlbSBmbGV4LWJveCIgaHJlZj0iP3BhdGg9L2NvbnRhY3Rlem5vdXMuaHRtbCIgdGFyZ2V0PSJfdG9wIiBvbmNsaWNrPSIiPgoJCQkJCQkJCQk8c3ZnIGNsYXNzPSJpY29uIj48dXNlIHhsaW5rOmhyZWY9IiNpY29uLW1hcC1tYXJrZXItYWx0Ij48L3VzZT48L3N2Zz4KCQkJCQkJPHNwYW4gY2xhc3M9InNocmluay1ncm93IHNrZWxldG9uLXR4dCI+w4AgUHJvcG9zPC9zcGFuPgoJCQkJCQkJCQkJCTxzcGFuIHJvbGU9ImJ1dHRvbiIgdGFiaW5kZXg9IjAiIGNsYXNzPSJtZW51RXhwYW5kIC1wIC0tcy0zIiBhcmlhLWxhYmVsPSJNZW51IGTDqXJvdWxhbnQiPgoJCQkJCQkJCQk8c3ZnIGNsYXNzPSJpY29uIj48dXNlIHhsaW5rOmhyZWY9IiNpY29uLWNoZXZyb24tZG93biI+PC91c2U+PC9zdmc+CgkJCQkJPC9zcGFuPgoJCQkJCTwvYT4KCQkJCQkJCQkJCTxkaXYgY2xhc3M9InN1Ym1lbnVJdGVtQ29udGFpbmVyIiBzdHlsZT0iZGlzcGxheTpub25lOyI+CgkJCQkJCTxzdGFjay1sYyBpZD0iaXRlbV9DT05UQUNUIiBjbGFzcz0iLS1zLTkiPgoJCQkJCQkJCQkJCQkJPHNwYW4gY2xhc3M9Ii1tMCI+CgkJCQkJCQk8YSBjbGFzcz0ic3VibWVudS1pdGVtIGZsZXgtYm94IGZsZXgtYmV0d2VlbiAtYnQgLS1zLTUgQ09OVEFDVFVTIiBocmVmPSI\/cGF0aD0vY29udGFjdGV6bm91cy5odG1sIiB0YXJnZXQ9IiIgb25jbGljaz0iIj4KCQkJCQkJCQk8c3BhbiBjbGFzcz0iLXBoIj5Ob3VzIGpvaW5kcmU8L3NwYW4+CgkJCQkJCQkJPHNwYW4gcm9sZT0iYnV0dG9uIiB0YWJpbmRleD0iMCIgY2xhc3M9Ii1wIC0tcy01Ij4KCQkJCQkJCQkJCQkJPHN2ZyBjbGFzcz0iaWNvbiI+PHVzZSB4bGluazpocmVmPSIjaWNvbi1jaGV2cm9uLXJpZ2h0Ij48L3VzZT48L3N2Zz4KCQkJCQkJCQk8L3NwYW4+CgkJCQkJCQk8L2E+CgkJCQkJCTwvc3Bhbj4JCQkJCQk8c3BhbiBjbGFzcz0iLW0wIj4KCQkJCQkJCTxhIGNsYXNzPSJzdWJtZW51LWl0ZW0gZmxleC1ib3ggZmxleC1iZXR3ZWVuIC1idCAtLXMtNSBKT0JPRkZFUiIgaHJlZj0iaHR0cHM6Ly9qb2JzLmdsb3dpbnRoZWNsb3VkLmNvbS9hY3VyYS1kZXNqYXJkaW5zP2w9ZnIiIHRhcmdldD0iX2JsYW5rIiBvbmNsaWNrPSIiPgoJCQkJCQkJCTxzcGFuIGNsYXNzPSItcGgiPk9wcG9ydHVuaXTDqXMgZCdlbXBsb2k8L3NwYW4+CgkJCQkJCQkJPHNwYW4gcm9sZT0iYnV0dG9uIiB0YWJpbmRleD0iMCIgY2xhc3M9Ii1wIC0tcy01Ij4KCQkJCQkJCQkJCQkJPHN2ZyBjbGFzcz0iaWNvbiI+PHVzZSB4bGluazpocmVmPSIjaWNvbi1jaGV2cm9uLXJpZ2h0Ij48L3VzZT48L3N2Zz4KCQkJCQkJCQk8L3NwYW4+CgkJCQkJCQk8L2E+CgkJCQkJCTwvc3Bhbj4JCQkJCQk8c3BhbiBjbGFzcz0iLW0wIj4KCQkJCQkJCTxhIGNsYXNzPSJzdWJtZW51LWl0ZW0gZmxleC1ib3ggZmxleC1iZXR3ZWVuIC1idCAtLXMtNSA0YTc1ZTFkMi1lMGU0LWQzODUtZDhlMi1iIiBocmVmPSI\/cGF0aD0vbm91dmVsbGVzLmh0bWwiIHRhcmdldD0iIiBvbmNsaWNrPSIiPgoJCQkJCQkJCTxzcGFuIGNsYXNzPSItcGgiPk5vdXZlbGxlczwvc3Bhbj4KCQkJCQkJCQk8c3BhbiByb2xlPSJidXR0b24iIHRhYmluZGV4PSIwIiBjbGFzcz0iLXAgLS1zLTUiPgoJCQkJCQkJCQkJCQk8c3ZnIGNsYXNzPSJpY29uIj48dXNlIHhsaW5rOmhyZWY9IiNpY29uLWNoZXZyb24tcmlnaHQiPjwvdXNlPjwvc3ZnPgoJCQkJCQkJCTwvc3Bhbj4KCQkJCQkJCTwvYT4KCQkJCQkJPC9zcGFuPgkJCQkJCTxzcGFuIGNsYXNzPSItbTAiPgoJCQkJCQkJPGEgY2xhc3M9InN1Ym1lbnUtaXRlbSBmbGV4LWJveCBmbGV4LWJldHdlZW4gLWJ0IC0tcy01IDM4Mzk0YmYtY2MzMi02YTE4LTNlZGYtMjMiIGhyZWY9Ij9wYXRoPS9lcXVpcGUuaHRtbCIgdGFyZ2V0PSIiIG9uY2xpY2s9IiI+CgkJCQkJCQkJPHNwYW4gY2xhc3M9Ii1waCI+Tm90cmUgw6lxdWlwZTwvc3Bhbj4KCQkJCQkJCQk8c3BhbiByb2xlPSJidXR0b24iIHRhYmluZGV4PSIwIiBjbGFzcz0iLXAgLS1zLTUiPgoJCQkJCQkJCQkJCQk8c3ZnIGNsYXNzPSJpY29uIj48dXNlIHhsaW5rOmhyZWY9IiNpY29uLWNoZXZyb24tcmlnaHQiPjwvdXNlPjwvc3ZnPgoJCQkJCQkJCTwvc3Bhbj4KCQkJCQkJCTwvYT4KCQkJCQkJPC9zcGFuPgoJCQkJCQk8L3N0YWNrLWxjPgoJCQkJCTwvZGl2PgoJCQkJPC9saT4KCgkJCQkKCQkJCTxsaSBjbGFzcz0ibWVudS1ncm91cCI+CgkJCQkJCgkJCQkJPGEgY2xhc3M9IkxBTkdVQUdFICAtYm9sZCAgbWVudS1pdGVtIGZsZXgtYm94IiBocmVmPSI\/cGF0aD0vZW5nLyIgdGFyZ2V0PSJfdG9wIiBvbmNsaWNrPSIiPgoJCQkJCQkJCQk8c3ZnIGNsYXNzPSJpY29uIj48dXNlIHhsaW5rOmhyZWY9IiNpY29uLWdsb2JlIj48L3VzZT48L3N2Zz4KCQkJCQkJPHNwYW4gY2xhc3M9InNocmluay1ncm93IHNrZWxldG9uLXR4dCI+RW5nbGlzaDwvc3Bhbj4KCQkJCQkJCgkJCQkJPC9hPgoJCQkJCQoJCQkJPC9saT4KCgkJCQkKCQkJCTxsaSBjbGFzcz0ibWVudS1ncm91cCI+CgkJCQkJCgkJCQkJPGEgY2xhc3M9Ik5FV1MgICBtZW51LWl0ZW0gZmxleC1ib3giIGhyZWY9Ij9wYXRoPS9ub3V2ZWxsZXMuaHRtbCIgdGFyZ2V0PSJfdG9wIiBvbmNsaWNrPSIiPgoJCQkJCQkJCQk8c3ZnIGNsYXNzPSJpY29uIj48dXNlIHhsaW5rOmhyZWY9IiNpY29uLW5ld3NwYXBlciI+PC91c2U+PC9zdmc+CgkJCQkJCTxzcGFuIGNsYXNzPSJzaHJpbmstZ3JvdyBza2VsZXRvbi10eHQiPk5vdXZlbGxlczwvc3Bhbj4KCQkJCQkJCgkJCQkJPC9hPgoJCQkJCQoJCQkJPC9saT4KCgkJCQkKCgkJCQk8L3VsPgoJCQk8L25hdj4KCQkJCTwvYXNpZGU+CgkJCTwvYm94LWxjPgoKCgkJCTxzdGFjay1sYyBjbGFzcz0ibG9nby1hY3Rpb24gc2hyaW5rLWdyb3cgYWxpZ24tY2VudGVyIGZsZXgtZXZlbmx5Ij4KCQkJCTxhIGNsYXNzPSJsb2dvIiBocmVmPSI\/cGF0aD0vIiBpdGVtcHJvcD0idXJsIj4KCQkJCQk8aW1nIGFsdD0iTG9nbyIgY2xhc3M9ImxpdmVsb2FkIG9wdGFub24tY2F0ZWdvcnktQzAwMDEiIGRhdGEtc2NvZGVyZWY9IjUxOTc4LVQiIHNyYz0iaHR0cHM6Ly9kZXNqYXJkaW5zYWN1cmEuY2EvL2ltYWdlcy9Mb2dvTW9iaWxlL2FjdXJhLWRlc2phcmRpbnMud2VicCIgc3R5bGU9IndpZHRoOiAxMjdweDsgaGVpZ2h0OiA0NXB4OyIgZGF0YS1vdC1pZ25vcmUgZGF0YS1jb29raWVjb25zZW50PSJpZ25vcmUiPgoJCQkJPC9hPgoJCQkJCgkJCTwvc3RhY2stbGM+CgkJCTxkaXYgc3R5bGU9InBhZGRpbmc6IDAgMTBweDsiPgoJCQkJCgkJCTwvZGl2PgoKCQkJPGEgY2xhc3M9InBob25lLWFjdGlvbiIgdGl0bGU9IkNvbnRhY3Rlei1ub3VzIiBkYXRhLWRlcGFydG1lbnQ9IlNhbGVzIiBocmVmPSI\/cGF0aD10ZWw6NTE0JTIwMzYyLTI4NzIiPgoJCQkJPHN2ZyBjbGFzcz0iIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdib3g9IjAgMCA1MTIgNTEyIj48IS0tIEZvbnQgQXdlc29tZSBGcmVlIDUuMTUuMSBieSBAZm9udGF3ZXNvbWUgLSBodHRwczovL2ZvbnRhd2Vzb21lLmNvbSBMaWNlbnNlIC0gaHR0cHM6Ly9mb250YXdlc29tZS5jb20vbGljZW5zZS9mcmVlIChJY29uczogQ0MgQlkgNC4wLCBGb250czogU0lMIE9GTCAxLjEsIENvZGU6IE1JVCBMaWNlbnNlKSAtLT48cGF0aCBkPSJNNDk3LjM5IDM2MS44bC0xMTItNDhhMjQgMjQgMCAwIDAtMjggNi45bC00OS42IDYwLjZBMzcwLjY2IDM3MC42NiAwIDAgMSAxMzAuNiAyMDQuMTFsNjAuNi00OS42YTIzLjk0IDIzLjk0IDAgMCAwIDYuOS0yOGwtNDgtMTEyQTI0LjE2IDI0LjE2IDAgMCAwIDEyMi42LjYxbC0xMDQgMjRBMjQgMjQgMCAwIDAgMCA0OGMwIDI1Ni41IDIwNy45IDQ2NCA0NjQgNDY0YTI0IDI0IDAgMCAwIDIzLjQtMTguNmwyNC0xMDRhMjQuMjkgMjQuMjkgMCAwIDAtMTQuMDEtMjcuNnoiPjwvcGF0aD48L3N2Zz4KCQkJCQoJCQk8L2E+CgoJCQk8L2hlYWRlcj4JCgkJCQoJCQk8ZGl2IGlkPSJwcm9tb1RvcEJ0biI+PCEtLSBzZW1fYm9vc3Qgb25seSAtLT48L2Rpdj4KCgkJCTxkaXYgaWQ9InBob25lTnVtYmVyRGl2IiBjbGFzcz0icmV2ZWFsLW1vZGFsIiBzdHlsZT0id2lkdGg6ODAlO21hcmdpbi1sZWZ0OjBweDtsZWZ0OjUlO3BhZGRpbmc6NSU7ei1pbmRleDogOTk5OTk5OTt2aXNpYmlsaXR5OmhpZGRlbjt0b3A6IC0xMDAwcHg7cG9zaXRpb246IGFic29sdXRlOyI+PC9kaXY+CgoJCQkKCQkJCgkJCTwhLS0gT086OmM5ZDczY2FlMjI4ODc0NGVjZWVhYjk0Njk1MmZkMzI2IC0tPgoJCQk8IS0tZW5kIHRvcCAtLT4KCgogICAgICAgPGRpdiBjbGFzcz0ic2VhcmNoYm94Ij4KICAgICAgICAgICAgICAgPGRpdiBpZD0ibmV3Y2FyQ29udGFpbmVyIiBjbGFzcz0iZGl2U3BhbiBkaXZTcGFuMTIgTWFpbkJveExheWVyIj4KICAgICAgICA8IS0tIElOSVRJQUwgTE9DQVRJT05CQVIgLS0+CiAgICAgICAgPGRpdiBjbGFzcz0iZGl2U3BhbiBkaXZTcGFuMTIgT3V0ZXJCb3hMYXllciI+CiAgICAgICAgCTxkaXYgY2xhc3M9ImhlYWRlckltZyI+PGlucHV0IHR5cGU9ImhpZGRlbiIgdmFsdWU9IjEiIGlkPSJ0cmFkZUluQmFyU3RpY2t5Qm90dG9tIj4KPCEtLVNUQVJUX1JFTU9WQUJMRV9DT0RFX0JMT0NLX0NPTU1FTlRfMDAwMS0tPgoKCQkJCQk8ZGl2IGlkPSJ0cmFkZUluQmFyTW9iaWxlIiBjbGFzcz0iYm94LWxjIC1jbGVhciI+CiAgICAgICAgICAgIAkJPGRpdiBpZD0idHJhZGVJbkJhcldNb2JpbGUiIGNsYXNzPSJmbGV4LWJveCBmbGV4LWVxdWFsIj4KCQkJCQk8dGFibGUgY2xhc3M9Im1pZGRsZSIgaWQ9ImRlZmF1bHRUb3BCYW5uZXIiPgoJCQkJCTx0Ym9keT4KCQkJCQkJPHRyPgoJCQkJCQk8dGQgaWQ9ImRlZmF1bHRUb3BCYW5uZXJXcmFwIj4KCQkJCQkJCTxkaXYgaWQ9ImRlZmF1bHRUb3BCYW5uZXJUaXRsZSI+PHA+RMOpY291dnJleiBsYSB2YWxldXIgZGUgdm90cmUgw6ljaGFuZ2U8L3A+PC9kaXY+CgkJCQkJCQk8ZGl2IGNsYXNzPSJkZWZhdWx0VG9wQmFubmVyQnRuV3JhcHBlciI+CgkJCQkJCQkJPGRpdj48YSBkYXRhLXBvcHVwaWQ9IlRyYWRlSW5CYXJQb3B1cENvbnRhaW5lciI+UkVDRVZFWiBVTiBFU1RJTcOJIEdSQVRVSVQhPC9hPjwvZGl2PgoJCQkJCQkJPC9kaXY+CgkJCQkJCQk8ZGl2IGlkPSJkZWZhdWx0VG9wQmFubmVyTG9nbyI+CgkJCQkJCQkJPHA+PHNwYW4+UHJvcHVsc8OpIHBhcjwvc3Bhbj4gQWNjdS1UcmFkZTwvcD4KCQkJCQkJCTwvZGl2PgoJCQkJCQk8L3RkPgoJCQkJCQk8L3RyPgoJCQkJCTwvdGJvZHk+CgkJCQkJPC90YWJsZT4KCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj48Ym94LWxjIGlkPSJ0cmFkZUluQmFyTW9iaWxlQnV0dG9uIiBjbGFzcz0idHJhZGVJbkJhck1vYmlsZUJ1dHRvbiAtLWZzMCIgc3R5bGU9ImRpc3BsYXk6ZmxleDt3aWR0aDoxNDBweCFpbXBvcnRhbnQ7Ij48aSBjbGFzcz0iZmEgZmEtc3luYyBmYS1zcGluIj48L2k+PGEgc3R5bGU9InRleHQtYWxpZ246IGxlZnQ7d2lkdGg6IDEwMCU7ZmxvYXQ6IGxlZnQ7dGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtmb250LXNpemU6IC45cmVtO3BhZGRpbmctbGVmdDogNXB4O3dpZHRoOjEwMCU7IiBkYXRhLXBvcHVwaWQ9IlRyYWRlSW5CYXJQb3B1cENvbnRhaW5lciI+w4l2YWx1ZXogdm90cmU8cCBzdHlsZT0iZm9udC1zaXplOiAxcmVtO2ZvbnQtd2VpZ2h0OiBib2xkOyI+w4lDSEFOR0UhPC9wPjwvYT48L2JveC1sYz4JCQoJCTxkaXYgaWQ9IlRyYWRlSW5CYXJQb3B1cENvbnRhaW5lciIgY2xhc3M9InJldmVhbC1tb2RhbCAiIHN0eWxlPSJ3aWR0aDozMDBweDtoZWlnaHQ6OTgwcHg7IiBkYXRhLWxhenlsb2FkaWQ9Im5ld2NhcnNfdHJhZGVpbmJhcnBvcHVwY29udGFpbmVyIj4KCQkJCgkJPC9kaXY+CgoJCTwhLS0gT086Ojk1MGM3NTZkY2QzYWQ3OWQ4NDFhNzg1OTVhMDMzMDViIC0tPgoKCQkKCiAgICA8ZGl2IGlkPSJlbWFpbFN1Y2Nlc3NNZXNzYWdlX1RyYWRlSW5CYXJQb3B1cENvbnRhaW5lciIgY2xhc3M9InJldmVhbC1tb2RhbCBlbWFpbC1jb25zZW50LWJveCIgc3R5bGU9IndpZHRoOjYwJTsiPgogICAgICA8ZGl2IGNsYXNzPSJpY29uLXRpdGxlIj4KICAgICAgICA8IS0tIDxzcGFuIGNsYXNzPSJ0aXRsZS1pY29uIHN1Y2Nlc3MgLW1sMCI+PC9zcGFuPiAtLT4KICAgICAgICA8c3BhbiBjbGFzcz0idGl0bGUtdHh0Ij5Wb3RyZSBkZW1hbmRlIGEgYmllbiDDqXTDqSBlbnZvecOpZSE8L3NwYW4+CiAgICAgIDwvZGl2PgogICAgICA8cCBjbGFzcz0iZGVmYXVsdFN1Y2Nlc3MiPjxicj5EZXNqYXJkaW5zIEFjdXJhIHZvdXMgcmVtZXJjaWUgZCdhdm9pciBjb21tdW5pcXXDqSB2b3RyZSBkZW1hbmRlLiBVbiBjb25zZWlsbGVyIGNvbW11bmlxdWVyYSBhdmVjIHZvdXMgc291cyBwZXUuPC9wPgogICAgICA8cCBjbGFzcz0ic2VydmljZVN1Y2Nlc3MiIHN0eWxlPSJkaXNwbGF5Om5vbmU7Ij48YnI+TWVyY2kgcG91ciB2b3RyZSBkZW1hbmRlLiBVbiBtZW1icmUgZGUgbm90cmUgw6lxdWlwZSBjb21tdW5pcXVlcmEgYXZlYyB2b3VzIHNvdXMgcGV1LjwvcD4KICAgICAgPCEtLSA8YSBjbGFzcz0iY2xvc2UtcmV2ZWFsLW1vZGFsIj4mIzIxNTs8L2E+IC0tPgogICAgICA8ZGl2IGNsYXNzPSJlbWFpbC1jb25zZW50LWJ0bnMgLXB0MjAgLXJpZ2h0IGFtcENvbnNlbnRSZXNwb25zZVNlbmREaXNtaXNzIj4KICAgICAgICA8YSBocmVmPSI\/cGF0aD0jIiBjbGFzcz0iIC11cHBlcmNhc2UgYnRuLWRlZmF1bHQgIiBvbmNsaWNrPSIkKCcuY2xvc2UtcmV2ZWFsLW1vZGFsOnZpc2libGUnKS50cmlnZ2VyKCdjbGljaycpO3JldHVybiBmYWxzZTsiPkZlcm1lcjwvYT4KICAgICAgPC9kaXY+CiAgICAgIDxmb3JtIGlkPSJlbWFpbG1zZ2ZybV9UcmFkZUluQmFyUG9wdXBDb250YWluZXIiIGNsYXNzPSJjb25maXJtX2h0bWwiIHRhcmdldD0iaWZyYW1lIiBtZXRob2Q9InBvc3QiIGFjdGlvbj0iL2NvbmZpcm1hdGlvbi5odG1sIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ibGFiZWwiIGNsYXNzPSJsYWJlbGVtYWlsIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ic2VjdGlvbiIgY2xhc3M9ImxhYmVsc2VjdGlvbiIgdmFsdWU9Ik9jY2FzaW9uIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYnJhbmQiIGNsYXNzPSJicmFuZGVtYWlsIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ibW9kZWwiIGNsYXNzPSJtb2RlbGVtYWlsIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ieWVhciIgY2xhc3M9InllYXJlbWFpbCIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9Imdvb2dsZWlkIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZ29vZ2xlaWRkMmNtZWRpYSIgdmFsdWU9IiI+CgkJCQkJCSAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYWR3b3Jkc2NvbmlkIiB2YWx1ZT0iIj4KCQkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImFkd29yZHNsYWJlbGlkIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYmluZ2NvbmlkIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYmluZ2FjdGlvbmlkIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYmluZ2RvbWFpbmlkIiB2YWx1ZT0iIj4KCiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImFkcm9sbEFkdiIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImFkcm9sbFBpeCIgdmFsdWU9IiI+CgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJmYWNlYm9va0NvbklkIiB2YWx1ZT0iIj4KCiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImRvbWFpbiIgdmFsdWU9ImRlc2phcmRpbnNhY3VyYS5jYSI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InJlZmVycmVyIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZGVwYXJ0bWVudCIgdmFsdWU9Ik5FVyI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImxlYWRfZGVwYXJ0bWVudCIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImlzZXhwcmVzcyIgY2xhc3M9ImlzZXhwcmVzcyIgdmFsdWU9IjAiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJpc3Byb21vIiB2YWx1ZT0iMCI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImlzaG9tZXBhZ2UiIHZhbHVlPSIwIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0idGVzdG1vZGUiIGNsYXNzPSJ0ZXN0bW9kZSIgdmFsdWU9IjAiPgoKICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ibGVhZFR5cGUiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJwYWdlSUQiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJjdXJyZW50VVJMIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iaXNDb25maXJtUG9wdXAiIHZhbHVlPSIiPgoKICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iY29uZmlybV9lbWFpbCIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImNvbmZpcm1fZmlyc3RfbmFtZSIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImNvbmZpcm1fbGFzdF9uYW1lIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iY29uZmlybV9waG9uZV9udW1iZXIiIHZhbHVlPSIiPgoKICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iaXNGdWxsV2lkdGgiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJkZWFsZXJOYW1lIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYnV0dG9uUG9zaXRpb24iIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJpc01vYmlsZU5ld1ZEUCIgdmFsdWU9IjEiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJmcm9tQXV0b0F1YmFpbmUiIHZhbHVlPSIiPgoKICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgdmFsdWU9Ik5FVyIgbmFtZT0idGV4dENhclNlY3Rpb25UeXBlIiBzdHlsZT0iZGlzcGxheTpub25lOyI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImxhbmciIHZhbHVlPSJmciI+CiAgICAgIDwvZm9ybT4KICAgICAgPGlmcmFtZSB3aWR0aD0iMSIgaGVpZ2h0PSIxIiBuYW1lPSJpZnJhbWUiIGZyYW1lYm9yZGVyPSIwIiBzdHlsZT0id2lkdGg6MXB4O2hlaWdodDoxcHg7Ij48L2lmcmFtZT4KICAgIDwvZGl2PgoKICAgIDxkaXYgaWQ9ImVtYWlsRmFpbE1lc3NhZ2VfVHJhZGVJbkJhclBvcHVwQ29udGFpbmVyIiBjbGFzcz0icmV2ZWFsLW1vZGFsIGVtYWlsLWNvbnNlbnQtYm94IiBzdHlsZT0id2lkdGg6NjAlOyI+CiAgICAgIDxzcGFuIGNsYXNzPSJmYWlsIj5VbmUgZXJyZXVyIHMnZXN0IHByb2R1aXRlPC9zcGFuPgogICAgICA8cD5Ob3VzIG4nYXZvbnMgcGFzIHB1IGVudm95ZXIgdm90cmUgbWVzc2FnZS4gUydpbCB2b3VzIHBsYcOudCByYWZyYcOuY2hpciBldCBlc3NheWV6IMOgIG5vdXZlYXUuPC9wPgogICAgICA8ZGl2IGNsYXNzPSJjbG9zZS1yZXZlYWwtbW9kYWwiPjxlbSBjbGFzcz0iZmEgZmEtdGltZXMtY2lyY2xlIj48L2VtPjwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSItcHQyMCAtcmlnaHQgYW1wQ29uc2VudFJlc3BvbnNlU2VuZERpc21pc3MiPgogICAgICAgIDxpbnB1dCB0eXBlPSJidXR0b24iIGNsYXNzPSIgLXVwcGVyY2FzZSBidG4tZGVmYXVsdCAiIG9uY2xpY2s9IiQoJyNlbWFpbEZhaWxNZXNzYWdlJykudHJpZ2dlcigncmV2ZWFsOmNsb3NlJyk7IiB2YWx1ZT0iRmVybWVyIj4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCgoJCQkJPCEtLSBPTzo6ZTI1ZDZjZmFiMzkyN2Q3OGQ5ZTJmNWEyZTM0NzYwMTYgLS0+CgkJCg08IS0tIFRSQURFIElOIEJBUiBORVdDQVJTIC0tPgoNCjwhLS1FTkRfUkVNT1ZBQkxFX0NPREVfQkxPQ0tfQ09NTUVOVF8wMDAxLS0+Cgo8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGlkPSJ1bmRlckJhbm5lciI+PC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iZGl2U3BhbiBkaXZTcGFuMTIgT3V0ZXJCb3hMYXllciI+CiAgICAgICAgCTxkaXYgY2xhc3M9ImRpdlNwYW4gZGl2U3BhbjEyIj4KICAgICAgICAJCTxkaXYgY2xhc3M9IklubmVyQm94TGF5ZXIiPjxoMSBjbGFzcz0iZGVmYXVsdCBIMV8yMDg3ICI+PGRpdj48ZGl2PkFjdXJhIG5ldXZlcyAyMDI2IMOgIHZlbmRyZcKgPC9kaXY+PGRpdj7DoCBNb250csOpYWzCoDwvZGl2PjwvZGl2PjwvaDE+PC9kaXY+PGRpdiBjbGFzcz0iSW5uZXJCb3hMYXllciI+PC9kaXY+CQkJCQkJCQk8IS0tIE9QRU4gTU9CSUxFIEZJTFRFUiBCVVRUT04gKCcuX19MSU5FX18uJyktLT4KCQkJCTxkaXYgY2xhc3M9ImZpbHRlclRvZ2dsZVdyYXBwZXIiPgoJCQkJCTxidXR0b24gdHlwZT0iYnV0dG9uIiBpZD0idG9nZ2xlRmlsdGVyQnRuIiBjbGFzcz0iZmlsdGVyVG9nZ2xlQnRuIj5GaWx0cmVyPC9idXR0b24+CgkJCQk8L2Rpdj4KCQkJCTwhLS0gQ0xPU0UgTU9CSUxFIEZJTFRFUiBCVVRUT04gKCcuX19MSU5FX18uJyktLT4KCQkJCTxkaXYgaWQ9InNpZGVTaWRlYmFyRmlsdGVyIiBjbGFzcz0ic2lkZVNpZGViYXIiPgoJCQkJCTxkaXYgY2xhc3M9InNpZGViYXJIZWFkZXIiPgoJCQkJCQk8ZGl2IGNsYXNzPSJkaXZTcGFuIGRpdlNwYW4xMiBkaXZGaWx0ZXJCb3hUaXRsZSI+CgkJCQkJCQlSYWZmaW5leiB2b3RyZSByZWNoZXJjaGUgOgoJCQkJCQk8L2Rpdj4KCQkJCQkJPGJ1dHRvbiB0eXBlPSJidXR0b24iIGlkPSJjbG9zZVNpZGViYXJCdG4iIGNsYXNzPSJjbG9zZUJ0biI+w5c8L2J1dHRvbj4KCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGlkPSJmaWx0ZXJDb250ZW50Ij4KCQkJCQkJPGRpdiBpZD0iZmlsdGVyTWFpbkJveCIgY2xhc3M9IklubmVyQm94TGF5ZXIgYmxhY2stdGV4dCI+CgkJCQkJCQk8ZGl2IGNsYXNzPSJkaXZTcGFuIGRpdlNwYW4xMiI+CgkJCQkJCQkJPGRpdiBjbGFzcz0iZGl2U3BhbiBkaXZTcGFuMTIgZGl2RmlsdGVyT3V0ZXJCb3giPgoJCQkJCQkJCQk8ZGl2IGNsYXNzPSJkaXZTcGFuIGRpdlNwYW4xMiI+CgkJCQkJCQkJCQk8ZGl2IGNsYXNzPSJkaXZTcGFuIGRpdlNwYW4xMiI+CgkJCQkJCQkJCQkJPGRpdiBjbGFzcz0iZGl2U3BhbiBkaXZTcGFuMTIiPjxkaXYgY2xhc3M9ImRpdkZpbHRlclRpdGxlIj5UeXBlIGRlIGNhcnJvc3NlcmllPC9kaXY+PHVsIGNsYXNzPSIiPjxsaSBjbGFzcz0iIj48aW5wdXQgY2xhc3M9ImZpbHRlckNoZWNrIGNhdGVnb3J5IiBpZD0ic2hvd0NsYXNzX2NhciIgdHlwZT0iY2hlY2tib3giIHZhbHVlPSJjYXIiIGNoZWNrZWQ+PGxhYmVsIGNsYXNzPSJmaWx0ZXJTcGFuIGNhdGVnb3J5IiBmb3I9InNob3dDbGFzc19jYXIiPkF1dG88L2xhYmVsPjwvbGk+PGxpIGNsYXNzPSIiPjxpbnB1dCBjbGFzcz0iZmlsdGVyQ2hlY2sgY2F0ZWdvcnkiIGlkPSJzaG93Q2xhc3Nfc3V2IiB0eXBlPSJjaGVja2JveCIgdmFsdWU9InN1diIgY2hlY2tlZD48bGFiZWwgY2xhc3M9ImZpbHRlclNwYW4gY2F0ZWdvcnkiIGZvcj0ic2hvd0NsYXNzX3N1diI+VlVTPC9sYWJlbD48L2xpPjwvdWw+PC9kaXY+PGRpdiBjbGFzcz0iZGl2U3BhbiBkaXZTcGFuMTIiPjwvZGl2PjxkaXYgY2xhc3M9ImRpdlNwYW4gZGl2U3BhbjEyIj48ZGl2IGNsYXNzPSJkaXZGaWx0ZXJUaXRsZSI+TW90cmljaXTDqTwvZGl2Pjx1bCBjbGFzcz0iIj48bGkgY2xhc3M9IiI+PGlucHV0IGlkPSJmaWx0ZXJEcml2ZVRyYWluQ2hlY2sxIiBjbGFzcz0iZmlsdGVyQ2hlY2sgZHJpdmV0cmFpbiIgdHlwZT0iY2hlY2tib3giIHZhbHVlPSIxIiBkYXRhLWRyaXZldHJhaW49IkZXRCIgY2hlY2tlZD48bGFiZWwgZm9yPSJmaWx0ZXJEcml2ZVRyYWluQ2hlY2sxIiBjbGFzcz0iZmlsdGVyU3BhbiI+VHJhY3Rpb24gYXZhbnQ8L2xhYmVsPjwvbGk+PC91bD48L2Rpdj48ZGl2IGNsYXNzPSJkaXZTcGFuIGRpdlNwYW4xMiI+PGRpdiBjbGFzcz0iZGl2RmlsdGVyVGl0bGUiPlR5cGUgZGUgY2FyYnVyYW50PC9kaXY+PHVsIGNsYXNzPSIiPgk8bGkgY2xhc3M9IiI+CgkJPGlucHV0IGRhdGEtZXNzZW5jZT0iZ2FzIiBjbGFzcz0iZmlsdGVyQ2hlY2sgZnVlbHR5cGUiIGlkPSJmaWx0ZXJFc3NlbmNlQ2hlY2sxIiB0eXBlPSJjaGVja2JveCIgdmFsdWU9IjEiIGNoZWNrZWQ+CgkJPGxhYmVsIGZvcj0iZmlsdGVyRXNzZW5jZUNoZWNrMSIgY2xhc3M9ImZpbHRlclNwYW4iPgoJCQlFc3NlbmNlCgkJPC9sYWJlbD4KCTwvbGk+PC91bD48L2Rpdj48ZGl2IGNsYXNzPSJkaXZTcGFuIGRpdlNwYW4xMiI+PGRpdiBjbGFzcz0iZGl2RmlsdGVyVGl0bGUiPlRyaWVyIHBhcjwvZGl2Pjx1bCBjbGFzcz0iIj48bGkgY2xhc3M9IiI+PGlucHV0IGlkPSJyYWRpb01vZGxlIiBjbGFzcz0icmFkaW9Tb3J0IiB0eXBlPSJyYWRpbyIgbmFtZT0ic29ydGJ5IiB2YWx1ZT0ibW9kZWwiIGNoZWNrZWQ+PGxhYmVsIGNsYXNzPSJmaWx0ZXJTcGFuIiBmb3I9InJhZGlvTW9kbGUiPk1vZMOobGU8L2xhYmVsPjwvbGk+PGxpIGNsYXNzPSIiPjxpbnB1dCBpZD0icmFkaW9QcmljZSIgY2xhc3M9InJhZGlvU29ydCIgdHlwZT0icmFkaW8iIG5hbWU9InNvcnRieSIgdmFsdWU9InByaWNlIj48bGFiZWwgY2xhc3M9ImZpbHRlclNwYW4iIGZvcj0icmFkaW9QcmljZSI+UHJpeDwvbGFiZWw+PC9saT48bGkgY2xhc3M9IiI+PGlucHV0IGlkPSJyYWRpb0NvbnNvIiBjbGFzcz0icmFkaW9Tb3J0IiB0eXBlPSJyYWRpbyIgbmFtZT0ic29ydGJ5IiB2YWx1ZT0iY29uc28iPjxsYWJlbCBjbGFzcz0iZmlsdGVyU3BhbiIgZm9yPSJyYWRpb0NvbnNvIj5MLzEwMGttPC9sYWJlbD48L2xpPjwvdWw+PC9kaXY+CQkJCQoJCQkJCQkJCQkJPC9kaXY+CgkJCQkJCQkJCQk8ZGl2IGNsYXNzPSJkaXZTcGFuIGRpdlNwYW4xMiI+CgkJCQkJCQkJCQkJCQkJPGRpdiBjbGFzcz0iZGl2U3BhbiBkaXZTcGFuMTIgZGl2UHJpY2VSYW5nZVNsaWRlciIgaWQ9InByaWNlUmFuZ2VTbGlkZXJGaWx0ZXJDb250YWluZXIiPgoJCQkJPGRpdiBjbGFzcz0iZGl2U3BhbiBkaXZTcGFuMTIgZGl2RmlsdGVyVGl0bGUiPgoJCQkJCUZvdXJjaGV0dGUgZGUgcHJpeAoJCQkJPC9kaXY+CgkJCQk8ZGl2IGNsYXNzPSJkaXZTcGFuIGRpdlNwYW4xMiByYW5nZS1zbGlkZXItcHJpY2VzIj4KCQkJCQk8c3BhbiBjbGFzcz0icHJpY2UtbWluIGZvcm1hdC1wcmljZSI+PC9zcGFuPsKgwqDDoMKgwqA8c3BhbiBjbGFzcz0icHJpY2UtbWF4IGZvcm1hdC1wcmljZSI+PC9zcGFuPgoJCQkJPC9kaXY+CgkJCQk8ZGl2IGNsYXNzPSJkaXZTcGFuIGRpdlNwYW4xMiI+CgkJCQkJPGRpdiBjbGFzcz0iZGl2U3BhbiBkaXZTcGFuMSByYW5nZS1zbGlkZXItbGVmdCI+TWluPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0iZGl2U3BhbiBkaXZTcGFuOSByYW5nZS1zbGlkZXIiIGF0dHItcHJpY2UtbWluPSI0NTI4OCIgYXR0ci1wcmljZS1tYXg9IjcyNTkzIj48L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJkaXZTcGFuIGRpdlNwYW4xIHJhbmdlLXNsaWRlci1yaWdodCI+TWF4PC9kaXY+CgkJCQk8L2Rpdj4KCQkJPC9kaXY+CgkJCQkJCQkJCQk8L2Rpdj4KCQkJCQkJCQkJPC9kaXY+CgkJCQkJCQkJPC9kaXY+CgkJCQkJCQk8L2Rpdj4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQk8L2Rpdj48IS0tIE9QRU4gQ0FURUdPUklFU0JPWFdSQVBQRVIgKDIxMzEpLS0+PGRpdiBjbGFzcz0iSW5uZXJCb3hMYXllciBkaXZDYXRlZ29yaWVzQm94V3JhcHBlciI+PCEtLSBPUEVOIENBVEVHT1JZQk9YV1JBUFBFUiAoMjE5NCkgLS0+PGRpdiBpZD0iY2xhc3NjYXJfY29udGFpbmVyIiBjbGFzcz0iZGl2U3BhbiBkaXZTcGFuMTIgZGl2Q2F0ZWdvcnlCb3hXcmFwcGVyIiBzdGF0ZT0ib3BlbiIgbmJ2aXNpYmxlPSIxIj48aDIgY2xhc3M9ImRlZmF1bHQgaWNvbi1oZWFkaW5nIGZsZXgtYm94IGFsaWduLWNlbnRlciI+Cgk8c3BhbiBjbGFzcz0iZmEgZmEtY2hldnJvbi1yaWdodCIgYXJpYS1oaWRkZW49InRydWUiPjwvc3Bhbj4KCTxib3gtbGMgY2xhc3M9Ii1wdjAiPgoJCTxkaXYgY2xhc3M9Im1haW5UZXh0IC1ib2xkIj5BdXRvcyBuZXV2ZXMgQWN1cmEgMjAyNjwvZGl2PgoJCTxkaXYgY2xhc3M9InNlY29uZGFyeVRleHQiPsOgIE1vbnRyw6lhbDwvZGl2PgoJPC9ib3gtbGM+CjwvaDI+PGRpdiBjbGFzcz0iZGl2U3BhbiBkaXZTcGFuMTIgZGl2Q2Fyc0JveFdyYXBwZXIgQ0xBU1NfY2FyIj4JPGRpdiBjbGFzcz0iZGl2Q2FyU2luZ2xlT3V0ZXJCb3ggZGl2Q2FyU2luZ2xlT3V0ZXJCb3hXaXRoQ1RBIHJlYmF0ZUJvcmRlckNvbG9yIiBpZD0iZmJ4X2Nhcl8xIj4KCQkJPGRpdiBjbGFzcz0icmViYXRlVGFnIj4KCTxzcGFuIGNsYXNzPSJyZWJhdGVUZXh0Ij5yYWJhaXMganVzcXUnw6A8L3NwYW4+Cgk8c3BhbiBjbGFzcz0icmViYXRlQW1vdW50Ij4JPHNwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSI+MSA1MDA8L3NwYW4+PC9zcGFuPgoJPC9kaXY+CgkJPGRpdiBjbGFzcz0iZGl2Q2FyU2luZ2xlSW5uZXJCb3giIGlkPSIiPgoJCQkKCQkJPGRpdiBjbGFzcz0iZGl2Q2FyVGl0bGVDb250YWluZXIiPgoJCQkJPGEgdGl0bGU9IkFjdXJhIEludGVncmEgMjAyNiIgaHJlZj0iP3BhdGg9L25ldWZzL0FjdXJhLUludGVncmEtMjAyNi5odG1sIiBkYXRhLW1ha2U9IkFjdXJhIiBkYXRhLW1vZGVsPSJJbnRlZ3JhIDIwMjYiPgoJCQkJCTxoMz4KCQkJCQkJPHNwYW4gY2xhc3M9InNwYW5DYXJNYWtlICI+QWN1cmE8L3NwYW4+PGJyPgoJCQkJCQk8c3BhbiBjbGFzcz0ibW9kZWxOYW1lIHNwYW5Nb2RlbE5hbWUiPkludGVncmEgMjAyNjwvc3Bhbj4KCQkJCQk8L2gzPgoJCQkJPC9hPgoJCQkJICAgIDwhLS0gT1BFTiBORVcgQ0FSIFNUQVJUIFBSSUNFICh7X19MSU5FX199KS0tPgogICAgPGRpdiBjbGFzcz0iZGl2TmV3Q2FyU3RhcnRQcmljZSI+CiAgICAgICAgQS1TcGVjIENWVCDDoCBwYXJ0aXIgZGUKICAgICAgICA8c3BhbiBjbGFzcz0iIj4JPHNwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSI+NDUgMjg4PC9zcGFuPjxzcGFuIGNsYXNzPSJzdXBlclNjcmlwdFNwYW4iPjwvc3Bhbj48L3NwYW4+CiAgICAgICAgPGkgc3R5bGU9ImNvbG9yOiMwMDA7Zm9udC1zaXplOjIwcHg7IiBjbGFzcz0iY2FyUHJpY2VJbml0aWFsVG9vbFRpcEljb24gZmFsIGZhLWluZm8tY2lyY2xlIGJsYWNrQ29sb3JCb2xkIiBkYXRhLXRvb2x0aXA9JyZsdDtwIGNsYXNzPSJmbGV4LWJldHdlZW4iIHN0eWxlPSJtaW4td2lkdGg6MTYwcHg7IiZndDsKCSZsdDtzcGFuIHN0eWxlPSJtYXgtd2lkdGg6NzAlOyImZ3Q7UERTRjombHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0iIiZndDsJJmx0O3NwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSImZ3Q7NDEgMTc1Jmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSJmbGV4LWJldHdlZW4iIHN0eWxlPSJtaW4td2lkdGg6MTYwcHg7IiZndDsKCSZsdDtzcGFuIHN0eWxlPSJtYXgtd2lkdGg6NzAlOyImZ3Q7VHJhbnNwb3J0ICZhbXA7IFByw6lwYXJhdGlvbjombHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0iIiZndDsJJmx0O3NwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSImZ3Q7MiA1OTUmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9ImZsZXgtYmV0d2VlbiIgc3R5bGU9Im1pbi13aWR0aDoxNjBweDsiJmd0OwoJJmx0O3NwYW4gc3R5bGU9Im1heC13aWR0aDo3MCU7IiZndDtUYXhlIHN1ciBsZXMgcG5ldXMmbHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0iIiZndDsJJmx0O3NwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSImZ3Q7MjMmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9ImZsZXgtYmV0d2VlbiIgc3R5bGU9Im1pbi13aWR0aDoxNjBweDsiJmd0OwoJJmx0O3NwYW4gc3R5bGU9Im1heC13aWR0aDo3MCU7IiZndDtGcmFpcyBjb25jZXNzaW9ubmFpcmUmbHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0iIiZndDsJJmx0O3NwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSImZ3Q7MSAzOTUmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9ImZsZXgtYmV0d2VlbiIgc3R5bGU9Im1pbi13aWR0aDoxNjBweDsiJmd0OwoJJmx0O3NwYW4gc3R5bGU9Im1heC13aWR0aDo3MCU7IiZndDtUYXhlIEFDOiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSIiJmd0OwkmbHQ7c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIiZndDsxMDAmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9ImZsZXgtYmV0d2VlbiIgc3R5bGU9Im1pbi13aWR0aDoxNjBweDsiJmd0OwoJJmx0O3NwYW4gc3R5bGU9Im1heC13aWR0aDo3MCU7IiZndDtUb3RhbCZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSIiJmd0OwkmbHQ7c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIiZndDs0NSAyODgmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jz48L2k+CiAgICA8L2Rpdj4KICAgIDwhLS0gQ0xPU0UgTkVXIENBUiBTVEFSVCBQUklDRSAoe19fTElORV9ffSktLT4JCQkJCTxkaXYgY2xhc3M9ImRpdk5ld0NhckRpc2NsYWltZXJQcmljZSIgc3R5bGU9ImZvbnQtc2l6ZToxMnB4OyI+K1RheGVzICZhbXA7IExpY2Vuc2VzPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0iZGl2Q2FySW5TdG9ja0xpbmsiIGhpZGRlbj4KCQkJPGlucHV0IHR5cGU9ImhpZGRlbiIgZGF0YS10eXBlPSJpbnZkYXRhIiBkYXRhLW1ha2U9IkFjdXJhIiBkYXRhLW1vZGVsPSJJbnRlZ3JhIiBkYXRhLXllYXI9IjIwMjYiIGRhdGEtc3R5bGVpZHM9IjQ4MTg3MSw0ODE4NzIsNDgxODczLDQ4MTg3NCIgZGF0YS1oeWJyaWQ9IjAiPgoJPC9kaXY+CgkJCTwvZGl2PgoJCQk8ZGl2IGNsYXNzPSJkaXZDYXJJbWFnZUNvbnRhaW5lciBmbGV4LWNlbnRlciBhbGlnbi1jZW50ZXIgZGl2Q2FySW1hZ2VDb250YWluZXJXaXRoQ1RBIj4KCQkJCTxhIHRpdGxlPSJBY3VyYSBJbnRlZ3JhIDIwMjYiIGhyZWY9Ij9wYXRoPS9uZXVmcy9BY3VyYS1JbnRlZ3JhLTIwMjYuaHRtbCI+CgkJCQkJPGltZyBhbHQ9IkFjdXJhIEludGVncmEgMjAyNiIgYm9yZGVyPSIwIiBjbGFzcz0ibGl2ZWxvYWQgb3B0YW5vbi1jYXRlZ29yeS1DMDAwMSIgZGF0YS1pbWdzcmM9Imh0dHBzOi8vY2FyaW1hZ2VzLmQyY21lZGlhLmNhL25ld2NhcmltYWdlcy9mci9BY3VyYS9JbnRlZ3JhLzIwMjYvNDgxODcxL1NpbHZlci9wcm9maWxlLndlYnAiIHNyYz0iaHR0cHM6Ly9jYXJpbWFnZXMuZDJjbWVkaWEuY2EvbmV3Y2FyaW1hZ2VzL2ZyL0FjdXJhL0ludGVncmEvMjAyNi80ODE4NzEvU2lsdmVyL3Byb2ZpbGUud2VicCIgZGF0YS1vdC1pZ25vcmUgZGF0YS1jb29raWVjb25zZW50PSJpZ25vcmUiPgoJCQkJPC9hPgoJCQk8L2Rpdj4KCQkJPGRpdiBjbGFzcz0iZGl2Q2FyRm9vdGVyQ29udGFpbmVyIHN0YWNrLWxjIC0tcy05Ij4KCQkJCQk8ZGl2IGNsYXNzPSJjYXJQYXltZW50V3JhcHBlciI+CgkJCTxkaXYgY2xhc3M9ImNvbnRlbnQtc2tlbGV0b24gaHRtbC1ibG9jayIgZGF0YS1ibG9jaz0icGF5bWVudEJsb2NrIiBkYXRhLXR5cGU9ImJsb2NrIiBkYXRhLXNvdXJjZT0ic2VydmVyIiBkYXRhLWNhbGxiYWNrPSJwYXltZW50Q2FsY0Jsb2NrIj4KCQkKCTxpbnB1dCBuYW1lPSJibG9jay1kYXRhIiB0eXBlPSJoaWRkZW4iIHZhbHVlPSd7InN0eWxlaWQiOjQ4MTg3MSwidGl0bGUiOiJBY3VyYSBJbnRlZ3JhIDIwMjYiLCJocmVmIjoiXC9uZXVmc1wvQWN1cmEtSW50ZWdyYS0yMDI2Lmh0bWwiLCJsaW5rc3R5bGUiOiIiLCJsaW5rY2xhc3MiOiIiLCJjb250YWluZXJjbGFzcyI6ImRpdkNhclBheW1lbnRDb250YWluZXJXaXRoQ1RBIiwicHJvbW90ZXh0IjoiRFx1MDBlOWJ1dGV6ISJ9Jz4KCTwvZGl2PgoJPC9kaXY+CgkJCQkJCQk8ZGl2IGNsYXNzPSJkaXZDYXJDb250YWN0Q1RBQ29udGFpbmVyIj4KCQkJCTxidXR0b24gc3R5bGU9IndpZHRoOjEwMCU7IiBjbGFzcz0iYnRuLWRlZmF1bHQiIG9uY2xpY2s9ImphdmFzY3JpcHQ6dm9pZChvcGVuU2hvd3Jvb21Db250YWN0UG9wdXAoZXZlbnQsICdBY3VyYScsICdJbnRlZ3JhJywgJzIwMjYnKSk7Ij4KCSAgICAgICAgICAgICAgICBDb250YWN0ZXotbm91cwoJICAgICAgICAgICAgPC9idXR0b24+CgkJCTwvZGl2PgoJCQk8L2Rpdj4KCQk8L2Rpdj4KCTwvZGl2PjwvZGl2PjwvZGl2PjwhLS0gQ0xPU0UgQ0FURUdPUllCT1hXUkFQUEVSICgyMjAyKS0tPjwhLS0gT1BFTiBDQVRFR09SWUJPWFdSQVBQRVIgKDIxOTQpIC0tPjxkaXYgaWQ9ImNsYXNzc3V2X2NvbnRhaW5lciIgY2xhc3M9ImRpdlNwYW4gZGl2U3BhbjEyIGRpdkNhdGVnb3J5Qm94V3JhcHBlciIgc3RhdGU9Im9wZW4iIG5idmlzaWJsZT0iMSI+PGgyIGNsYXNzPSJkZWZhdWx0IGljb24taGVhZGluZyBmbGV4LWJveCBhbGlnbi1jZW50ZXIiPgoJPHNwYW4gY2xhc3M9ImZhIGZhLWNoZXZyb24tcmlnaHQiIGFyaWEtaGlkZGVuPSJ0cnVlIj48L3NwYW4+Cgk8Ym94LWxjIGNsYXNzPSItcHYwIj4KCQk8ZGl2IGNsYXNzPSJtYWluVGV4dCAtYm9sZCI+VlVTIG5ldWZzIEFjdXJhIDIwMjY8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJzZWNvbmRhcnlUZXh0Ij7DoCBNb250csOpYWw8L2Rpdj4KCTwvYm94LWxjPgo8L2gyPjxkaXYgY2xhc3M9ImRpdlNwYW4gZGl2U3BhbjEyIGRpdkNhcnNCb3hXcmFwcGVyIENMQVNTX3N1diI+CTxkaXYgY2xhc3M9ImRpdkNhclNpbmdsZU91dGVyQm94IGRpdkNhclNpbmdsZU91dGVyQm94V2l0aENUQSByZWJhdGVCb3JkZXJDb2xvciIgaWQ9ImZieF9zdXZfMSI+CgkJCgkJPGRpdiBjbGFzcz0iZGl2Q2FyU2luZ2xlSW5uZXJCb3giIGlkPSIiPgoJCQkKCQkJPGRpdiBjbGFzcz0iZGl2Q2FyVGl0bGVDb250YWluZXIiPgoJCQkJPGEgdGl0bGU9IkFjdXJhIEFEWCAyMDI2IiBocmVmPSI\/cGF0aD0vbmV1ZnMvQWN1cmEtQURYLTIwMjYuaHRtbCIgZGF0YS1tYWtlPSJBY3VyYSIgZGF0YS1tb2RlbD0iQURYIDIwMjYiPgoJCQkJCTxoMz4KCQkJCQkJPHNwYW4gY2xhc3M9InNwYW5DYXJNYWtlICI+QWN1cmE8L3NwYW4+PGJyPgoJCQkJCQk8c3BhbiBjbGFzcz0ibW9kZWxOYW1lIHNwYW5Nb2RlbE5hbWUiPkFEWCAyMDI2PC9zcGFuPgoJCQkJCTwvaDM+CgkJCQk8L2E+CgkJCQkgICAgPCEtLSBPUEVOIE5FVyBDQVIgU1RBUlQgUFJJQ0UgKHtfX0xJTkVfX30pLS0+CiAgICA8ZGl2IGNsYXNzPSJkaXZOZXdDYXJTdGFydFByaWNlIj4KICAgICAgICBUSSDDoCBwYXJ0aXIgZGUKICAgICAgICA8c3BhbiBjbGFzcz0iIj4JPHNwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSI+NTAgMTkzPC9zcGFuPjxzcGFuIGNsYXNzPSJzdXBlclNjcmlwdFNwYW4iPjwvc3Bhbj48L3NwYW4+CiAgICAgICAgPGkgc3R5bGU9ImNvbG9yOiMwMDA7Zm9udC1zaXplOjIwcHg7IiBjbGFzcz0iY2FyUHJpY2VJbml0aWFsVG9vbFRpcEljb24gZmFsIGZhLWluZm8tY2lyY2xlIGJsYWNrQ29sb3JCb2xkIiBkYXRhLXRvb2x0aXA9JyZsdDtwIGNsYXNzPSJmbGV4LWJldHdlZW4iIHN0eWxlPSJtaW4td2lkdGg6MTYwcHg7IiZndDsKCSZsdDtzcGFuIHN0eWxlPSJtYXgtd2lkdGg6NzAlOyImZ3Q7UERTRjombHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0iIiZndDsJJmx0O3NwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSImZ3Q7NDYgMDgwJmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSJmbGV4LWJldHdlZW4iIHN0eWxlPSJtaW4td2lkdGg6MTYwcHg7IiZndDsKCSZsdDtzcGFuIHN0eWxlPSJtYXgtd2lkdGg6NzAlOyImZ3Q7VHJhbnNwb3J0ICZhbXA7IFByw6lwYXJhdGlvbjombHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0iIiZndDsJJmx0O3NwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSImZ3Q7MiA1OTUmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9ImZsZXgtYmV0d2VlbiIgc3R5bGU9Im1pbi13aWR0aDoxNjBweDsiJmd0OwoJJmx0O3NwYW4gc3R5bGU9Im1heC13aWR0aDo3MCU7IiZndDtUYXhlIHN1ciBsZXMgcG5ldXMmbHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0iIiZndDsJJmx0O3NwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSImZ3Q7MjMmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9ImZsZXgtYmV0d2VlbiIgc3R5bGU9Im1pbi13aWR0aDoxNjBweDsiJmd0OwoJJmx0O3NwYW4gc3R5bGU9Im1heC13aWR0aDo3MCU7IiZndDtGcmFpcyBjb25jZXNzaW9ubmFpcmUmbHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0iIiZndDsJJmx0O3NwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSImZ3Q7MSAzOTUmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9ImZsZXgtYmV0d2VlbiIgc3R5bGU9Im1pbi13aWR0aDoxNjBweDsiJmd0OwoJJmx0O3NwYW4gc3R5bGU9Im1heC13aWR0aDo3MCU7IiZndDtUYXhlIEFDOiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSIiJmd0OwkmbHQ7c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIiZndDsxMDAmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9ImZsZXgtYmV0d2VlbiIgc3R5bGU9Im1pbi13aWR0aDoxNjBweDsiJmd0OwoJJmx0O3NwYW4gc3R5bGU9Im1heC13aWR0aDo3MCU7IiZndDtUb3RhbCZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSIiJmd0OwkmbHQ7c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIiZndDs1MCAxOTMmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jz48L2k+CiAgICA8L2Rpdj4KICAgIDwhLS0gQ0xPU0UgTkVXIENBUiBTVEFSVCBQUklDRSAoe19fTElORV9ffSktLT4JCQkJCTxkaXYgY2xhc3M9ImRpdk5ld0NhckRpc2NsYWltZXJQcmljZSIgc3R5bGU9ImZvbnQtc2l6ZToxMnB4OyI+K1RheGVzICZhbXA7IExpY2Vuc2VzPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0iZGl2Q2FySW5TdG9ja0xpbmsiIGhpZGRlbj4KCQkJPGlucHV0IHR5cGU9ImhpZGRlbiIgZGF0YS10eXBlPSJpbnZkYXRhIiBkYXRhLW1ha2U9IkFjdXJhIiBkYXRhLW1vZGVsPSJBRFgiIGRhdGEteWVhcj0iMjAyNiIgZGF0YS1zdHlsZWlkcz0iNDgzOTIyLDQ4MzkyMyw0ODM5MjQiIGRhdGEtaHlicmlkPSIwIj4KCTwvZGl2PgoJCQk8L2Rpdj4KCQkJPGRpdiBjbGFzcz0iZGl2Q2FySW1hZ2VDb250YWluZXIgZmxleC1jZW50ZXIgYWxpZ24tY2VudGVyIGRpdkNhckltYWdlQ29udGFpbmVyV2l0aENUQSI+CgkJCQk8YSB0aXRsZT0iQWN1cmEgQURYIDIwMjYiIGhyZWY9Ij9wYXRoPS9uZXVmcy9BY3VyYS1BRFgtMjAyNi5odG1sIj4KCQkJCQk8aW1nIGFsdD0iQWN1cmEgQURYIDIwMjYiIGJvcmRlcj0iMCIgY2xhc3M9ImxpdmVsb2FkIG9wdGFub24tY2F0ZWdvcnktQzAwMDEiIGRhdGEtaW1nc3JjPSJodHRwczovL2NhcmltYWdlcy5kMmNtZWRpYS5jYS9uZXdjYXJpbWFnZXMvZnIvQWN1cmEvQURYLzIwMjYvNDgzOTIyL0dyYXkvcHJvZmlsZS53ZWJwIiBzcmM9Imh0dHBzOi8vY2FyaW1hZ2VzLmQyY21lZGlhLmNhL25ld2NhcmltYWdlcy9mci9BY3VyYS9BRFgvMjAyNi80ODM5MjIvR3JheS9wcm9maWxlLndlYnAiIGRhdGEtb3QtaWdub3JlIGRhdGEtY29va2llY29uc2VudD0iaWdub3JlIj4KCQkJCTwvYT4KCQkJPC9kaXY+CgkJCTxkaXYgY2xhc3M9ImRpdkNhckZvb3RlckNvbnRhaW5lciBzdGFjay1sYyAtLXMtOSI+CgkJCQkJPGRpdiBjbGFzcz0iY2FyUGF5bWVudFdyYXBwZXIiPgoJCQk8ZGl2IGNsYXNzPSJjb250ZW50LXNrZWxldG9uIGh0bWwtYmxvY2siIGRhdGEtYmxvY2s9InBheW1lbnRCbG9jayIgZGF0YS10eXBlPSJibG9jayIgZGF0YS1zb3VyY2U9InNlcnZlciIgZGF0YS1jYWxsYmFjaz0icGF5bWVudENhbGNCbG9jayI+CgkJCgk8aW5wdXQgbmFtZT0iYmxvY2stZGF0YSIgdHlwZT0iaGlkZGVuIiB2YWx1ZT0neyJzdHlsZWlkIjo0ODM5MjIsInRpdGxlIjoiQWN1cmEgQURYIDIwMjYiLCJocmVmIjoiXC9uZXVmc1wvQWN1cmEtQURYLTIwMjYuaHRtbCIsImxpbmtzdHlsZSI6IiIsImxpbmtjbGFzcyI6IiIsImNvbnRhaW5lcmNsYXNzIjoiZGl2Q2FyUGF5bWVudENvbnRhaW5lcldpdGhDVEEiLCJwcm9tb3RleHQiOiJEXHUwMGU5YnV0ZXohIn0nPgoJPC9kaXY+Cgk8L2Rpdj4KCQkJCQkJCTxkaXYgY2xhc3M9ImRpdkNhckNvbnRhY3RDVEFDb250YWluZXIiPgoJCQkJPGJ1dHRvbiBzdHlsZT0id2lkdGg6MTAwJTsiIGNsYXNzPSJidG4tZGVmYXVsdCIgb25jbGljaz0iamF2YXNjcmlwdDp2b2lkKG9wZW5TaG93cm9vbUNvbnRhY3RQb3B1cChldmVudCwgJ0FjdXJhJywgJ0FEWCcsICcyMDI2JykpOyI+CgkgICAgICAgICAgICAgICAgQ29udGFjdGV6LW5vdXMKCSAgICAgICAgICAgIDwvYnV0dG9uPgoJCQk8L2Rpdj4KCQkJPC9kaXY+CgkJPC9kaXY+Cgk8L2Rpdj4JPGRpdiBjbGFzcz0iZGl2Q2FyU2luZ2xlT3V0ZXJCb3ggZGl2Q2FyU2luZ2xlT3V0ZXJCb3hXaXRoQ1RBIHJlYmF0ZUJvcmRlckNvbG9yIiBpZD0iZmJ4X3N1dl8yIj4KCQkKCQk8ZGl2IGNsYXNzPSJkaXZDYXJTaW5nbGVJbm5lckJveCIgaWQ9IiI+CgkJCQoJCQk8ZGl2IGNsYXNzPSJkaXZDYXJUaXRsZUNvbnRhaW5lciI+CgkJCQk8YSB0aXRsZT0iQWN1cmEgUkRYIDIwMjYiIGhyZWY9Ij9wYXRoPS9uZXVmcy9BY3VyYS1SRFgtMjAyNi5odG1sIiBkYXRhLW1ha2U9IkFjdXJhIiBkYXRhLW1vZGVsPSJSRFggMjAyNiI+CgkJCQkJPGgzPgoJCQkJCQk8c3BhbiBjbGFzcz0ic3BhbkNhck1ha2UgIj5BY3VyYTwvc3Bhbj48YnI+CgkJCQkJCTxzcGFuIGNsYXNzPSJtb2RlbE5hbWUgc3Bhbk1vZGVsTmFtZSI+UkRYIDIwMjY8L3NwYW4+CgkJCQkJPC9oMz4KCQkJCTwvYT4KCQkJCSAgICA8IS0tIE9QRU4gTkVXIENBUiBTVEFSVCBQUklDRSAoe19fTElORV9ffSktLT4KICAgIDxkaXYgY2xhc3M9ImRpdk5ld0NhclN0YXJ0UHJpY2UiPgogICAgICAgIFRJIMOgIHBhcnRpciBkZQogICAgICAgIDxzcGFuIGNsYXNzPSIiPgk8c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIj41OCA4MTM8L3NwYW4+PHNwYW4gY2xhc3M9InN1cGVyU2NyaXB0U3BhbiI+PC9zcGFuPjwvc3Bhbj4KICAgICAgICA8aSBzdHlsZT0iY29sb3I6IzAwMDtmb250LXNpemU6MjBweDsiIGNsYXNzPSJjYXJQcmljZUluaXRpYWxUb29sVGlwSWNvbiBmYWwgZmEtaW5mby1jaXJjbGUgYmxhY2tDb2xvckJvbGQiIGRhdGEtdG9vbHRpcD0nJmx0O3AgY2xhc3M9ImZsZXgtYmV0d2VlbiIgc3R5bGU9Im1pbi13aWR0aDoxNjBweDsiJmd0OwoJJmx0O3NwYW4gc3R5bGU9Im1heC13aWR0aDo3MCU7IiZndDtQRFNGOiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSIiJmd0OwkmbHQ7c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIiZndDs1NCA3MDAmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9ImZsZXgtYmV0d2VlbiIgc3R5bGU9Im1pbi13aWR0aDoxNjBweDsiJmd0OwoJJmx0O3NwYW4gc3R5bGU9Im1heC13aWR0aDo3MCU7IiZndDtUcmFuc3BvcnQgJmFtcDsgUHLDqXBhcmF0aW9uOiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSIiJmd0OwkmbHQ7c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIiZndDsyIDU5NSZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0iZmxleC1iZXR3ZWVuIiBzdHlsZT0ibWluLXdpZHRoOjE2MHB4OyImZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0ibWF4LXdpZHRoOjcwJTsiJmd0O1RheGUgc3VyIGxlcyBwbmV1cyZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSIiJmd0OwkmbHQ7c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIiZndDsyMyZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0iZmxleC1iZXR3ZWVuIiBzdHlsZT0ibWluLXdpZHRoOjE2MHB4OyImZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0ibWF4LXdpZHRoOjcwJTsiJmd0O0ZyYWlzIGNvbmNlc3Npb25uYWlyZSZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSIiJmd0OwkmbHQ7c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIiZndDsxIDM5NSZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0iZmxleC1iZXR3ZWVuIiBzdHlsZT0ibWluLXdpZHRoOjE2MHB4OyImZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0ibWF4LXdpZHRoOjcwJTsiJmd0O1RheGUgQUM6Jmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9IiImZ3Q7CSZsdDtzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiJmd0OzEwMCZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0iZmxleC1iZXR3ZWVuIiBzdHlsZT0ibWluLXdpZHRoOjE2MHB4OyImZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0ibWF4LXdpZHRoOjcwJTsiJmd0O1RvdGFsJmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9IiImZ3Q7CSZsdDtzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiJmd0OzU4IDgxMyZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsnPjwvaT4KICAgIDwvZGl2PgogICAgPCEtLSBDTE9TRSBORVcgQ0FSIFNUQVJUIFBSSUNFICh7X19MSU5FX199KS0tPgkJCQkJPGRpdiBjbGFzcz0iZGl2TmV3Q2FyRGlzY2xhaW1lclByaWNlIiBzdHlsZT0iZm9udC1zaXplOjEycHg7Ij4rVGF4ZXMgJmFtcDsgTGljZW5zZXM8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJkaXZDYXJJblN0b2NrTGluayIgaGlkZGVuPgoJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBkYXRhLXR5cGU9ImludmRhdGEiIGRhdGEtbWFrZT0iQWN1cmEiIGRhdGEtbW9kZWw9IlJEWCIgZGF0YS15ZWFyPSIyMDI2IiBkYXRhLXN0eWxlaWRzPSI0ODE2MDgsNDgxNjA5LDQ4MTYxMCIgZGF0YS1oeWJyaWQ9IjAiPgoJPC9kaXY+CgkJCTwvZGl2PgoJCQk8ZGl2IGNsYXNzPSJkaXZDYXJJbWFnZUNvbnRhaW5lciBmbGV4LWNlbnRlciBhbGlnbi1jZW50ZXIgZGl2Q2FySW1hZ2VDb250YWluZXJXaXRoQ1RBIj4KCQkJCTxhIHRpdGxlPSJBY3VyYSBSRFggMjAyNiIgaHJlZj0iP3BhdGg9L25ldWZzL0FjdXJhLVJEWC0yMDI2Lmh0bWwiPgoJCQkJCTxpbWcgYWx0PSJBY3VyYSBSRFggMjAyNiIgYm9yZGVyPSIwIiBjbGFzcz0ibGl2ZWxvYWQgb3B0YW5vbi1jYXRlZ29yeS1DMDAwMSIgZGF0YS1pbWdzcmM9Imh0dHBzOi8vY2FyaW1hZ2VzLmQyY21lZGlhLmNhL25ld2NhcmltYWdlcy9mci9BY3VyYS9SRFgvMjAyNi80ODE2MDgvR3JheS9wcm9maWxlLndlYnAiIHNyYz0iaHR0cHM6Ly9jYXJpbWFnZXMuZDJjbWVkaWEuY2EvbmV3Y2FyaW1hZ2VzL2ZyL0FjdXJhL1JEWC8yMDI2LzQ4MTYwOC9HcmF5L3Byb2ZpbGUud2VicCIgZGF0YS1vdC1pZ25vcmUgZGF0YS1jb29raWVjb25zZW50PSJpZ25vcmUiPgoJCQkJPC9hPgoJCQk8L2Rpdj4KCQkJPGRpdiBjbGFzcz0iZGl2Q2FyRm9vdGVyQ29udGFpbmVyIHN0YWNrLWxjIC0tcy05Ij4KCQkJCQk8ZGl2IGNsYXNzPSJjYXJQYXltZW50V3JhcHBlciI+CgkJCTxkaXYgY2xhc3M9ImNvbnRlbnQtc2tlbGV0b24gaHRtbC1ibG9jayIgZGF0YS1ibG9jaz0icGF5bWVudEJsb2NrIiBkYXRhLXR5cGU9ImJsb2NrIiBkYXRhLXNvdXJjZT0ic2VydmVyIiBkYXRhLWNhbGxiYWNrPSJwYXltZW50Q2FsY0Jsb2NrIj4KCQkKCTxpbnB1dCBuYW1lPSJibG9jay1kYXRhIiB0eXBlPSJoaWRkZW4iIHZhbHVlPSd7InN0eWxlaWQiOjQ4MTYwOCwidGl0bGUiOiJBY3VyYSBSRFggMjAyNiIsImhyZWYiOiJcL25ldWZzXC9BY3VyYS1SRFgtMjAyNi5odG1sIiwibGlua3N0eWxlIjoiIiwibGlua2NsYXNzIjoiIiwiY29udGFpbmVyY2xhc3MiOiJkaXZDYXJQYXltZW50Q29udGFpbmVyV2l0aENUQSIsInByb21vdGV4dCI6IkRcdTAwZTlidXRleiEifSc+Cgk8L2Rpdj4KCTwvZGl2PgoJCQkJCQkJPGRpdiBjbGFzcz0iZGl2Q2FyQ29udGFjdENUQUNvbnRhaW5lciI+CgkJCQk8YnV0dG9uIHN0eWxlPSJ3aWR0aDoxMDAlOyIgY2xhc3M9ImJ0bi1kZWZhdWx0IiBvbmNsaWNrPSJqYXZhc2NyaXB0OnZvaWQob3BlblNob3dyb29tQ29udGFjdFBvcHVwKGV2ZW50LCAnQWN1cmEnLCAnUkRYJywgJzIwMjYnKSk7Ij4KCSAgICAgICAgICAgICAgICBDb250YWN0ZXotbm91cwoJICAgICAgICAgICAgPC9idXR0b24+CgkJCTwvZGl2PgoJCQk8L2Rpdj4KCQk8L2Rpdj4KCTwvZGl2Pgk8ZGl2IGNsYXNzPSJkaXZDYXJTaW5nbGVPdXRlckJveCBkaXZDYXJTaW5nbGVPdXRlckJveFdpdGhDVEEgcmViYXRlQm9yZGVyQ29sb3IiIGlkPSJmYnhfc3V2XzMiPgoJCQk8ZGl2IGNsYXNzPSJyZWJhdGVUYWciPgoJPHNwYW4gY2xhc3M9InJlYmF0ZVRleHQiPnJhYmFpcyBqdXNxdSfDoDwvc3Bhbj4KCTxzcGFuIGNsYXNzPSJyZWJhdGVBbW91bnQiPgk8c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIj4zIDAwMDwvc3Bhbj48L3NwYW4+Cgk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJkaXZDYXJTaW5nbGVJbm5lckJveCIgaWQ9IiI+CgkJCQoJCQk8ZGl2IGNsYXNzPSJkaXZDYXJUaXRsZUNvbnRhaW5lciI+CgkJCQk8YSB0aXRsZT0iQWN1cmEgTURYIDIwMjYiIGhyZWY9Ij9wYXRoPS9uZXVmcy9BY3VyYS1NRFgtMjAyNi5odG1sIiBkYXRhLW1ha2U9IkFjdXJhIiBkYXRhLW1vZGVsPSJNRFggMjAyNiI+CgkJCQkJPGgzPgoJCQkJCQk8c3BhbiBjbGFzcz0ic3BhbkNhck1ha2UgIj5BY3VyYTwvc3Bhbj48YnI+CgkJCQkJCTxzcGFuIGNsYXNzPSJtb2RlbE5hbWUgc3Bhbk1vZGVsTmFtZSI+TURYIDIwMjY8L3NwYW4+CgkJCQkJPC9oMz4KCQkJCTwvYT4KCQkJCSAgICA8IS0tIE9QRU4gTkVXIENBUiBTVEFSVCBQUklDRSAoe19fTElORV9ffSktLT4KICAgIDxkaXYgY2xhc3M9ImRpdk5ld0NhclN0YXJ0UHJpY2UiPgogICAgICAgIFRlY2ggU0gtQVdEIMOgIHBhcnRpciBkZQogICAgICAgIDxzcGFuIGNsYXNzPSIiPgk8c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIj43MiA1OTM8L3NwYW4+PHNwYW4gY2xhc3M9InN1cGVyU2NyaXB0U3BhbiI+PC9zcGFuPjwvc3Bhbj4KICAgICAgICA8aSBzdHlsZT0iY29sb3I6IzAwMDtmb250LXNpemU6MjBweDsiIGNsYXNzPSJjYXJQcmljZUluaXRpYWxUb29sVGlwSWNvbiBmYWwgZmEtaW5mby1jaXJjbGUgYmxhY2tDb2xvckJvbGQiIGRhdGEtdG9vbHRpcD0nJmx0O3AgY2xhc3M9ImZsZXgtYmV0d2VlbiIgc3R5bGU9Im1pbi13aWR0aDoxNjBweDsiJmd0OwoJJmx0O3NwYW4gc3R5bGU9Im1heC13aWR0aDo3MCU7IiZndDtQRFNGOiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSIiJmd0OwkmbHQ7c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIiZndDs2OCA0ODAmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9ImZsZXgtYmV0d2VlbiIgc3R5bGU9Im1pbi13aWR0aDoxNjBweDsiJmd0OwoJJmx0O3NwYW4gc3R5bGU9Im1heC13aWR0aDo3MCU7IiZndDtUcmFuc3BvcnQgJmFtcDsgUHLDqXBhcmF0aW9uOiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSIiJmd0OwkmbHQ7c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIiZndDsyIDU5NSZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0iZmxleC1iZXR3ZWVuIiBzdHlsZT0ibWluLXdpZHRoOjE2MHB4OyImZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0ibWF4LXdpZHRoOjcwJTsiJmd0O1RheGUgc3VyIGxlcyBwbmV1cyZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSIiJmd0OwkmbHQ7c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIiZndDsyMyZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0iZmxleC1iZXR3ZWVuIiBzdHlsZT0ibWluLXdpZHRoOjE2MHB4OyImZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0ibWF4LXdpZHRoOjcwJTsiJmd0O0ZyYWlzIGNvbmNlc3Npb25uYWlyZSZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSIiJmd0OwkmbHQ7c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIiZndDsxIDM5NSZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0iZmxleC1iZXR3ZWVuIiBzdHlsZT0ibWluLXdpZHRoOjE2MHB4OyImZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0ibWF4LXdpZHRoOjcwJTsiJmd0O1RheGUgQUM6Jmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9IiImZ3Q7CSZsdDtzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiJmd0OzEwMCZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0iZmxleC1iZXR3ZWVuIiBzdHlsZT0ibWluLXdpZHRoOjE2MHB4OyImZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0ibWF4LXdpZHRoOjcwJTsiJmd0O1RvdGFsJmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9IiImZ3Q7CSZsdDtzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiJmd0OzcyIDU5MyZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsnPjwvaT4KICAgIDwvZGl2PgogICAgPCEtLSBDTE9TRSBORVcgQ0FSIFNUQVJUIFBSSUNFICh7X19MSU5FX199KS0tPgkJCQkJPGRpdiBjbGFzcz0iZGl2TmV3Q2FyRGlzY2xhaW1lclByaWNlIiBzdHlsZT0iZm9udC1zaXplOjEycHg7Ij4rVGF4ZXMgJmFtcDsgTGljZW5zZXM8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJkaXZDYXJJblN0b2NrTGluayIgaGlkZGVuPgoJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBkYXRhLXR5cGU9ImludmRhdGEiIGRhdGEtbWFrZT0iQWN1cmEiIGRhdGEtbW9kZWw9Ik1EWCIgZGF0YS15ZWFyPSIyMDI2IiBkYXRhLXN0eWxlaWRzPSI0Nzg4MTIsNDc4ODEzLDQ3ODgxNCw0Nzg4MTUiIGRhdGEtaHlicmlkPSIwIj4KCTwvZGl2PgoJCQk8L2Rpdj4KCQkJPGRpdiBjbGFzcz0iZGl2Q2FySW1hZ2VDb250YWluZXIgZmxleC1jZW50ZXIgYWxpZ24tY2VudGVyIGRpdkNhckltYWdlQ29udGFpbmVyV2l0aENUQSI+CgkJCQk8YSB0aXRsZT0iQWN1cmEgTURYIDIwMjYiIGhyZWY9Ij9wYXRoPS9uZXVmcy9BY3VyYS1NRFgtMjAyNi5odG1sIj4KCQkJCQk8aW1nIGFsdD0iQWN1cmEgTURYIDIwMjYiIGJvcmRlcj0iMCIgY2xhc3M9ImxpdmVsb2FkIG9wdGFub24tY2F0ZWdvcnktQzAwMDEiIGRhdGEtaW1nc3JjPSJodHRwczovL2NhcmltYWdlcy5kMmNtZWRpYS5jYS9uZXdjYXJpbWFnZXMvZnIvQWN1cmEvTURYLzIwMjYvNDc4ODEyL0dyYXkvcHJvZmlsZS53ZWJwIiBzcmM9Imh0dHBzOi8vY2FyaW1hZ2VzLmQyY21lZGlhLmNhL25ld2NhcmltYWdlcy9mci9BY3VyYS9NRFgvMjAyNi80Nzg4MTIvR3JheS9wcm9maWxlLndlYnAiIGRhdGEtb3QtaWdub3JlIGRhdGEtY29va2llY29uc2VudD0iaWdub3JlIj4KCQkJCTwvYT4KCQkJPC9kaXY+CgkJCTxkaXYgY2xhc3M9ImRpdkNhckZvb3RlckNvbnRhaW5lciBzdGFjay1sYyAtLXMtOSI+CgkJCQkJPGRpdiBjbGFzcz0iY2FyUGF5bWVudFdyYXBwZXIiPgoJCQk8ZGl2IGNsYXNzPSJjb250ZW50LXNrZWxldG9uIGh0bWwtYmxvY2siIGRhdGEtYmxvY2s9InBheW1lbnRCbG9jayIgZGF0YS10eXBlPSJibG9jayIgZGF0YS1zb3VyY2U9InNlcnZlciIgZGF0YS1jYWxsYmFjaz0icGF5bWVudENhbGNCbG9jayI+CgkJCgk8aW5wdXQgbmFtZT0iYmxvY2stZGF0YSIgdHlwZT0iaGlkZGVuIiB2YWx1ZT0neyJzdHlsZWlkIjo0Nzg4MTIsInRpdGxlIjoiQWN1cmEgTURYIDIwMjYiLCJocmVmIjoiXC9uZXVmc1wvQWN1cmEtTURYLTIwMjYuaHRtbCIsImxpbmtzdHlsZSI6IiIsImxpbmtjbGFzcyI6IiIsImNvbnRhaW5lcmNsYXNzIjoiZGl2Q2FyUGF5bWVudENvbnRhaW5lcldpdGhDVEEiLCJwcm9tb3RleHQiOiJEXHUwMGU5YnV0ZXohIn0nPgoJPC9kaXY+Cgk8L2Rpdj4KCQkJCQkJCTxkaXYgY2xhc3M9ImRpdkNhckNvbnRhY3RDVEFDb250YWluZXIiPgoJCQkJPGJ1dHRvbiBzdHlsZT0id2lkdGg6MTAwJTsiIGNsYXNzPSJidG4tZGVmYXVsdCIgb25jbGljaz0iamF2YXNjcmlwdDp2b2lkKG9wZW5TaG93cm9vbUNvbnRhY3RQb3B1cChldmVudCwgJ0FjdXJhJywgJ01EWCcsICcyMDI2JykpOyI+CgkgICAgICAgICAgICAgICAgQ29udGFjdGV6LW5vdXMKCSAgICAgICAgICAgIDwvYnV0dG9uPgoJCQk8L2Rpdj4KCQkJPC9kaXY+CgkJPC9kaXY+Cgk8L2Rpdj48L2Rpdj48L2Rpdj48IS0tIENMT1NFIENBVEVHT1JZQk9YV1JBUFBFUiAoMjIwMiktLT48L2Rpdj48IS0tIENMT1NFIENBVEVHT1JJRVNCT1hXUkFQUEVSICgyMjA5KS0tPjxpbnB1dCB0eXBlPSJoaWRkZW4iIHZhbHVlPSJBY3VyYSIgaWQ9ImlzQnJhbmRQYWdlIj4KICAgICAgICAJPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJkaXZTcGFuIGRpdlNwYW4xMiBkaXZEaXNjbGFpbWVyQmxvY2siPgogICAgICAgIDxkaXYgY2xhc3M9ImRpdkRpc2NsYWltZXJCbG9ja0NvbnRlbnQiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJkaXZEaXNjbGFpbWVyQmxvY2tUaXRsZSI+CiAgICAgICAgICAgICAgICBDbGF1c2UgZGUgbm9uLXJlc3BvbnNhYmlsaXTDqQogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iZGl2RGlzY2xhaW1lckJsb2NrVGV4dCI+CiAgICAgICAgICAgICAgICBMZSBtb250YW50IGluZGlxdcOpIHJlcHLDqXNlbnRlIHVuZSBlc3RpbWF0aW9uIGR1IG1vbnRhbnQgcXVlIHZvdXMgcG91dmV6IHZvdXMgYXR0ZW5kcmUgw6AgcGF5ZXIgZW4gZG9sbGFycyBjYW5hZGllbnMuIExlcyB0YXhlcyBzb250IGV4Y2x1ZXMgKHNhdWYgaW5kaWNhdGlvbiBjb250cmFpcmUpLiBMZXMgcGhvdG9zIHJlcHLDqXNlbnRlbnQgbGUgbW9kw6hsZSBvZmZlcnQgbWFpcyBwZXV2ZW50IHZhcmllciBsw6lnw6hyZW1lbnQgZW4gY291bGV1ciwgb3B0aW9ucywgb3UgY2FyYWN0w6lyaXN0aXF1ZXMuIEJpZW4gcXVlIG5vdXMgbm91cyBlZmZvcmNpb25zIGRlIGdhcmFudGlyIGwnZXhhY3RpdHVkZSBkZXMgaW5mb3JtYXRpb25zIHN1ciBjZSBzaXRlIFdlYiwgbm91cyB2b3VzIHJlY29tbWFuZG9ucyBkZSBub3VzIGNvbnRhY3RlciBkaXJlY3RlbWVudCBwb3VyIHbDqXJpZmllciBsZXMgZMOpdGFpbHMgZXQgb2J0ZW5pciBkZXMgaW5mb3JtYXRpb25zIHN1cHBsw6ltZW50YWlyZXMgc3VyIGxlIHbDqWhpY3VsZSwgeSBjb21wcmlzIGxhIGNvbmZpcm1hdGlvbiBkZXMgcHJpeCwgZGVzIGNvdWxldXJzLCBkZXMgZmluaXRpb25zLCBkZXMgb3B0aW9ucyBldCBhdXRyZXMgc3DDqWNpZmljYXRpb25zLgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgoJCQk8L2Rpdj4KCiAgICAgICAJCgoJPGRpdiBjbGFzcz0idWktbG9hZGVyLWJhY2tncm91bmQiPjxpbWcgY2xhc3M9InVpLWxvYWRlci1iYWNrZ3JvdW5kLWdpZiBsYXp5bG9hZCBvcHRhbm9uLWNhdGVnb3J5LUMwMDAxIiBkYXRhLWltZ3NyYz0iaHR0cHM6Ly9kZXNqYXJkaW5zYWN1cmEuY2EvL2ltYWdlcy9hamF4LWxvYWRlcjIuZ2lmIiBhbHQ9ImFqYXggbG9hZGVyMiIgZGF0YS1vdC1pZ25vcmUgZGF0YS1jb29raWVjb25zZW50PSJpZ25vcmUiPjwvZGl2PgoKCQk8ZGl2IGlkPSJhc1BvcFVwIiBjbGFzcz0icmV2ZWFsLW1vZGFsIHNtYWxsIiBzdHlsZT0iYm94LXNoYWRvdzogbm9uZTtiYWNrZ3JvdW5kOiNmZmZmZmY7Y29sb3I6IzAwMDt3aWR0aDo4NSU7bWF4LXdpZHRoOjYwMHB4O3BhZGRpbmc6MjBweDsiPgoJCTxkaXYgY2xhc3M9InRleHQtdXBwZXJjYXNlIiBzdHlsZT0iaGVpZ2h0OjQwcHg7dGV4dC1hbGlnbjpjZW50ZXI7Zm9udC1zaXplOiAxLjc1cmVtO21hcmdpbi1ib3R0b206MTBweDsiPgoJCQlTVlAgY29uZmlybWVyCgkJPC9kaXY+CgoJCTxmb3JtIG1ldGhvZD0icG9zdCI+CgkJCQk8c3RhY2stbGM+CgkJPGJveC1sYyBjbGFzcz0idmlUZXh0Ij4KCQkJPGRpdiBjbGFzcz0icG9wdXAtcG9saWN5Ij5BZmluIGRlIHJlc3BlY3RlciBsYSBMb2kgQ2FuYWRpZW5uZSBBbnRpLVBvdXJyaWVsIGV0IGxhIExvaSAyNSBkdSBRdcOpYmVjLCBub3VzIHZvdXMgcHJpb25zIGRlIGJpZW4gdm91bG9pciBjb25maXJtZXIgc2kgdm91cyBzb3VoYWl0ZXogcmVjZXZvaXIgbm9zIGNvbW11bmljYXRpb25zIGZ1dHVyZXMgY29uY2VybmFudCBsZXMgcmFiYWlzLCBsZXMgcHJvbW90aW9ucywgbGVzIG9mZnJlcyBldCBsZXMgdmVudGVzIHByaXbDqWVzLiBWZXVpbGxleiBub3RlciBxdWUgdm91cyBwb3V2ZXogbW9kaWZpZXIgb3UgcmV0aXJlciBjZSBjb25zZW50ZW1lbnQgw6AgdG91dCBtb21lbnQuIEVuIGNsaXF1YW50IHN1ciBPdWksIHZvdXMgY29uZmlybWV6IGF2b2lyIGx1IGV0IGFjY2VwdMOpIG5vdHJlIDxhIHRhcmdldD0iX2JsYW5rIiBocmVmPSI\/cGF0aD0vcG9saXRpcXVlLWRlLWNvbmZpZGVudGlhbGl0ZS5odG1sIj5wb2xpdGlxdWUgZGUgY29uZmlkZW50aWFsaXTDqTwvYT4uPC9kaXY+CgkJPC9ib3gtbGM+CgkJPGJveC1sYyBjbGFzcz0iZGVhbGVyQ29uc2VudCI+CgkJCTxkaXYgY2xhc3M9ImZsZXgtYmV0d2VlbiI+CgkJCQk8ZGl2IGNsYXNzPSItdzUwcCI+RGVzamFyZGlucyBBY3VyYTwvZGl2PgoJCQkJPGRpdiBjbGFzcz0iLXc1MHAiPgoJCQkJCTxsYWJlbD4KCQkJCQkJPGlucHV0IHR5cGU9InJhZGlvIiB2YWx1ZT0iMSIgbmFtZT0iY29uc2VudCIgY2xhc3M9InJlcVJhZGlvIj4KCQkJCQkJT3VpCgkJCQkJPC9sYWJlbD4KCQkJCQk8bGFiZWw+CgkJCQkJCTxpbnB1dCB0eXBlPSJyYWRpbyIgdmFsdWU9Ii0xIiBuYW1lPSJjb25zZW50IiBjbGFzcz0icmVxUmFkaW8iPgoJCQkJCQlOb24KCQkJCQk8L2xhYmVsPgoJCQkJPC9kaXY+CgkJCTwvZGl2PgoJCQk8ZGl2IGNsYXNzPSJjb25zZW50IGRpc2NsYWltZXIiIHN0eWxlPSJ3aWR0aDogNTAlOyIgZGF0YS10b29sdGlwPSdFbiBmb3Vybmlzc2FudCBtZXMgaW5mb3JtYXRpb25zIHBlcnNvbm5lbGxlcywgamUgY29uc2VucyDDoCBsZXVyIHV0aWxpc2F0aW9uIGV0IGxldXIgZGl2dWxnYXRpb24gY29uZm9ybcOpbWVudCDDoCBsYSBQb2xpdGlxdWUgZGUgY29uZmlkZW50aWFsaXTDqSBkZSBEZXNqYXJkaW5zIEFjdXJhLiBKZSBjb25maXJtZSBhdm9pciBsdSBsYSAmbHQ7YSBocmVmPSIvcG9saXRpcXVlLWRlLWNvbmZpZGVudGlhbGl0ZS5odG1sIiZndDtQb2xpdGlxdWUgZGUgY29uZmlkZW50aWFsaXTDqSZsdDsvYSZndDsuIEplIGNvbXByZW5kcyBxdWUgRGVzamFyZGlucyBBY3VyYSBwZXV0IHBhcnRhZ2VyIG1lcyBpbmZvcm1hdGlvbnMgcGVyc29ubmVsbGVzIGF2ZWMgZGVzIHRpZXJzIGRhbnMgbGUgYnV0IGRlIGfDqXJlciBtYSByZWxhdGlvbiBhdmVjIGV1eCwgdGVscyBxdWUgbm90cmUgZm91cm5pc3NldXIgZGUgZ2VzdGlvbiBkZSBsYSByZWxhdGlvbiBjbGllbnQgKENSTSkuIEplIGNvbXByZW5kcyBxdWUgY2VydGFpbnMgZGUgY2VzIGZvdXJuaXNzZXVycyBwZXV2ZW50IHN0b2NrZXIgbWVzIGluZm9ybWF0aW9ucyBwZXJzb25uZWxsZXMgc3VyIGRlcyBzZXJ2ZXVycyBldCBkZXMgYmFzZXMgZGUgZG9ubsOpZXMgc2l0dcOpcyBlbiBkZWhvcnMgZGUgbWEgcHJvdmluY2UuIEplIGNvbXByZW5kcyDDqWdhbGVtZW50IHF1ZSBqZSBwZXV4IHJldGlyZXIgbW9uIGNvbnNlbnRlbWVudCBldCBtZSBkw6lzYWJvbm5lciBkZSBsYSByw6ljZXB0aW9uIGRlIGNvbW11bmljYXRpb25zIGZ1dHVyZXMgZGUgRGVzamFyZGlucyBBY3VyYSDDoCB0b3V0IG1vbWVudC4gTGUgY29uc2VudGVtZW50IMOgIGxhIHLDqWNlcHRpb24gZGUgY29tbXVuaWNhdGlvbnMgw6lsZWN0cm9uaXF1ZXMgZXN0IHNvbGxpY2l0w6kgcGFyIERlc2phcmRpbnMgQWN1cmEuJz5DbGF1c2UgZGUgbm9uLXJlc3BvbnNhYmlsaXTDqTwvZGl2PgoJCTwvYm94LWxjPgoKCQkKCgk8L3N0YWNrLWxjPgoJPGRpdiBjbGFzcz0iLXB0MTAiIHN0eWxlPSJmb250LXNpemU6IDEwcHg7dGV4dC1hbGlnbjogY2VudGVyO2NvbG9yOiB2YXIoLS1kYXJrLWdyYXkpOyI+SU1QT1JUQU5UOiBWb3VzIHBvdXZleiBmYWNpbGVtZW50IHJldGlyZXIgdm90cmUgY29uc2VudGVtZW50IGVuIHRvdXQgdGVtcHMhPC9kaXY+CgoJCQk8ZGl2IGNsYXNzPSJmbGV4LWJveCBmbGV4LWV2ZW5seSIgc3R5bGU9Im1hcmdpbi10b3A6IDM1cHg7Ij4KCQkJCTxpbnB1dCB0eXBlPSJidXR0b24iIGlkPSJjb25zZW50U3VibWl0IiBjbGFzcz0iIGJ0bi1kZWZhdWx0ICIgdmFsdWU9IlNvdW1ldHRyZSI+CgkJCTwvZGl2PgoJCTwvZm9ybT4KCgkJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9Imxhc3RDb25zZW50UG9wIiB2YWx1ZT0iIj4KCTwvZGl2PgoJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJwdXJjaGFzZV9pbnRlbnRfYW5zd2VyIiB2YWx1ZT0iUEdKeUlDOCtUR1VnWTJ4cFpXNTBJR0VnYkNkcGJuUmxiblJwYjI0Z1pDZGhZMmhsZEdWeUlITnZiaUJ3Y205amFHRnBiaUIyNldocFkzVnNaU0E4WWo0bGRHbHRaV1p5WVcxbEpUd3ZZajQ4WW5JZ0x6ND0iPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9InB1cmNoYXNlX2ludGVudF9ub19hbnN3ZXIiIHZhbHVlPSJjMkZ1Y3lCa1lYUmxJSEJ5NldOcGMyVT0iPgoJPGRpdiBjbGFzcz0icmV2ZWFsLW1vZGFsIiBpZD0iYXNQdXJjaGFzZUludGVudCI+CgkgIDxmb3JtIG1ldGhvZD0icG9zdCI+CgkgICAgPHN0cm9uZyBjbGFzcz0iYXNQSVRpdGxlIj4KCSAgICAgIFF1ZWxxdWVzIHByw6ljaXNpb25zCgkgICAgPC9zdHJvbmc+CgkgICAgPG9sIGNsYXNzPSJzdGVwcyI+CgkgICAgPGxpIGlkPSJBTExPV19TSEFSRV9QRVJTT05BTF9JTkZPIiBjbGFzcz0iaGlkZGVuIj4KCQkJCQk8ZGl2IHN0eWxlPSJoZWlnaHQ6MTA1cHg7Ij4KCQkJCQkJPHN0cm9uZyBjbGFzcz0idmlUZXh0Ij4KCQkJCQkJCU5vdXMgcGVybWV0dGV6LXZvdXMgZGUgcGFydGFnZXIgdm9zIGluZm9ybWF0aW9ucyBwZXJzb25uZWxsZXMgYXZlYyBsZXMgaW5zdGl0dXRpb25zIGZpbmFuY2nDqHJlcyBwb3VyIHZvdHJlIGJ1cmVhdSBkZSBjcsOpZGl0PwoJCQkJCQk8L3N0cm9uZz4KCQkJCQkJPGRpdiBjbGFzcz0iY2xyIj48L2Rpdj4KCgkJCQkJCTxkaXYgY2xhc3M9ImFzeWVzbm8gYXN5ZXMiPgoJCQkJCQkJPGlucHV0IHR5cGU9InJhZGlvIiB2YWx1ZT0ieWVzIiBuYW1lPSJzaGFyZV9wZXJzb25hbCIgY2xhc3M9InJlcVJhZGlvIj4KCQkJCQkJCQk8bGFiZWw+T3VpPC9sYWJlbD4KCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImFzeWVzbm8gYXNubyI+CgkJCQkJCQk8aW5wdXQgdHlwZT0icmFkaW8iIHZhbHVlPSJubyIgbmFtZT0ic2hhcmVfcGVyc29uYWwiIGNsYXNzPSJyZXFSYWRpbyI+CgkJCQkJCQkJPGxhYmVsPk5vbjwvbGFiZWw+CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IHN0eWxlPSJkaXNwbGF5Om5vbmU7Y29sb3I6cmVkO3BhZGRpbmctdG9wOjRweDtjbGVhcjogYm90aDsiIGlkPSJBTExPV19TSEFSRV9QRVJTT05BTF9JTkZPX1RFWFRfRVJST1IiPlZvdHJlIGNvbnNlbnRlbWVudCBlc3QgcmVxdWlzIHBvdXIgY29tcGzDqXRlciB2b3RyZSBkZW1hbmRlIGRlIGNyw6lkaXQhPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQk8L2xpPgoKCSAgICAgIDxsaSBjbGFzcz0ic3RlcEludGVudCBoaWRkZW4iPgoJICAgICAgICA8c3Ryb25nIGNsYXNzPSJ2aVRleHQiPgoJCQkJCVF1YW5kIHByw6l2b3llei12b3VzIGFjaGV0ZXIgdW4gdsOpaGljdWxlPwoJICAgICAgICA8L3N0cm9uZz4KCSAgICAgICAgPHVsIGNsYXNzPSJ2aU9wdGlvbnMiPgoJICAgICAgICAgIDxsaT48aW5wdXQgdHlwZT0icmFkaW8iIHZhbHVlPSJEJ2ljaSAzMCBqb3VycyIgbmFtZT0icHVyY2hhc2VfaW50ZW50IiBjbGFzcz0icmVxUmFkaW8iPjxsYWJlbD4gRCdpY2kgMzAgam91cnM8L2xhYmVsPjwvbGk+CgkgICAgICAgICAgPGxpPjxpbnB1dCB0eXBlPSJyYWRpbyIgdmFsdWU9IkQnaWNpIDMgbW9pcyIgbmFtZT0icHVyY2hhc2VfaW50ZW50IiBjbGFzcz0icmVxUmFkaW8iPjxsYWJlbD4gRCdpY2kgMyBtb2lzPC9sYWJlbD48L2xpPgoJICAgICAgICAgIDxsaT48aW5wdXQgdHlwZT0icmFkaW8iIHZhbHVlPSJEJ2ljaSA2IG1vaXMiIG5hbWU9InB1cmNoYXNlX2ludGVudCIgY2xhc3M9InJlcVJhZGlvIj48bGFiZWw+IEQnaWNpIDYgbW9pczwvbGFiZWw+PC9saT4KCSAgICAgICAgICA8bGk+PGlucHV0IHR5cGU9InJhZGlvIiB2YWx1ZT0iRCdpY2kgcGx1cyBkZSA2IG1vaXMiIG5hbWU9InB1cmNoYXNlX2ludGVudCIgY2xhc3M9InJlcVJhZGlvIj48bGFiZWw+IEQnaWNpIHBsdXMgZGUgNiBtb2lzPC9sYWJlbD48L2xpPgoJICAgICAgICA8L3VsPgoJICAgICAgICA8YnIgY2xhc3M9ImNsciI+CgkgICAgICA8L2xpPgoKCSAgICAgIDxsaSBjbGFzcz0ic3RlcENvbnRhY3QgIiBkYXRhLWRlcGFydG1lbnRzPSJuZXciPgoJCQk8ZGl2IHN0eWxlPSJib3JkZXI6IG5vbmU7IiBjbGFzcz0iZDJjZm9ybSBkMmNmb3JtLS1yb3ciPgoJCQkJPGJveC1sYz4KCQkJCQk8ZGl2IGNsYXNzPSJ2aVRleHQiPgoJCQkJCQk8c3Ryb25nPlF1ZWxsZSBlc3Qgdm90cmUgbcOpdGhvZGUgZGUgY29udGFjdCBwcsOpZsOpcsOpZSA\/PC9zdHJvbmc+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0icmFkaW8taW5saW5lIj4KCQkJCQkJPGxhYmVsIGNsYXNzPSIiPgoJCQkJCQkJPGlucHV0IHR5cGU9InJhZGlvIiBuYW1lPSJwcmVmZXJyZWRfY29udGFjdCIgdmFsdWU9IlTDqWzDqXBob25lIiBjbGFzcz0icmVxUmFkaW8iPgoJCQkJCQkJVMOpbMOpcGhvbmUKCQkJCQkJPC9sYWJlbD4KCQkJCQkJPGxhYmVsIGNsYXNzPSIiPgoJCQkJCQkJPGlucHV0IHR5cGU9InJhZGlvIiBuYW1lPSJwcmVmZXJyZWRfY29udGFjdCIgdmFsdWU9IkNvdXJyaWVsIiBjbGFzcz0icmVxUmFkaW8iPgoJCQkJCQkJQ291cnJpZWwKCQkJCQkJPC9sYWJlbD4KCQkJCQkJPGxhYmVsIGNsYXNzPSIiPgoJCQkJCQkJPGlucHV0IHR5cGU9InJhZGlvIiBuYW1lPSJwcmVmZXJyZWRfY29udGFjdCIgdmFsdWU9IlNNUyIgY2xhc3M9InJlcVJhZGlvIj4KCQkJCQkJCVNNUwoJCQkJCQk8L2xhYmVsPgoJCQkJCTwvZGl2PgoJCQkJPC9ib3gtbGM+CgkJCTwvZGl2PgoJCTwvbGk+CgoJCTxsaSBjbGFzcz0ic3RlcENvbnNlbnQiPgoJCQkJPHN0YWNrLWxjPgoJCTxib3gtbGMgY2xhc3M9InZpVGV4dCI+CgkJCTxkaXYgY2xhc3M9InBvcHVwLXBvbGljeSI+QWZpbiBkZSByZXNwZWN0ZXIgbGEgTG9pIENhbmFkaWVubmUgQW50aS1Qb3VycmllbCBldCBsYSBMb2kgMjUgZHUgUXXDqWJlYywgbm91cyB2b3VzIHByaW9ucyBkZSBiaWVuIHZvdWxvaXIgY29uZmlybWVyIHNpIHZvdXMgc291aGFpdGV6IHJlY2V2b2lyIG5vcyBjb21tdW5pY2F0aW9ucyBmdXR1cmVzIGNvbmNlcm5hbnQgbGVzIHJhYmFpcywgbGVzIHByb21vdGlvbnMsIGxlcyBvZmZyZXMgZXQgbGVzIHZlbnRlcyBwcml2w6llcy4gVmV1aWxsZXogbm90ZXIgcXVlIHZvdXMgcG91dmV6IG1vZGlmaWVyIG91IHJldGlyZXIgY2UgY29uc2VudGVtZW50IMOgIHRvdXQgbW9tZW50LiBFbiBjbGlxdWFudCBzdXIgT3VpLCB2b3VzIGNvbmZpcm1leiBhdm9pciBsdSBldCBhY2NlcHTDqSBub3RyZSA8YSB0YXJnZXQ9Il9ibGFuayIgaHJlZj0iP3BhdGg9L3BvbGl0aXF1ZS1kZS1jb25maWRlbnRpYWxpdGUuaHRtbCI+cG9saXRpcXVlIGRlIGNvbmZpZGVudGlhbGl0w6k8L2E+LjwvZGl2PgoJCTwvYm94LWxjPgoJCTxib3gtbGMgY2xhc3M9ImRlYWxlckNvbnNlbnQiPgoJCQk8ZGl2IGNsYXNzPSJmbGV4LWJldHdlZW4iPgoJCQkJPGRpdiBjbGFzcz0iLXc1MHAiPkRlc2phcmRpbnMgQWN1cmE8L2Rpdj4KCQkJCTxkaXYgY2xhc3M9Ii13NTBwIj4KCQkJCQk8bGFiZWw+CgkJCQkJCTxpbnB1dCB0eXBlPSJyYWRpbyIgdmFsdWU9IjEiIG5hbWU9ImNvbnNlbnQiIGNsYXNzPSJyZXFSYWRpbyI+CgkJCQkJCU91aQoJCQkJCTwvbGFiZWw+CgkJCQkJPGxhYmVsPgoJCQkJCQk8aW5wdXQgdHlwZT0icmFkaW8iIHZhbHVlPSItMSIgbmFtZT0iY29uc2VudCIgY2xhc3M9InJlcVJhZGlvIj4KCQkJCQkJTm9uCgkJCQkJPC9sYWJlbD4KCQkJCTwvZGl2PgoJCQk8L2Rpdj4KCQkJPGRpdiBjbGFzcz0iY29uc2VudCBkaXNjbGFpbWVyIiBzdHlsZT0id2lkdGg6IDUwJTsiIGRhdGEtdG9vbHRpcD0nRW4gZm91cm5pc3NhbnQgbWVzIGluZm9ybWF0aW9ucyBwZXJzb25uZWxsZXMsIGplIGNvbnNlbnMgw6AgbGV1ciB1dGlsaXNhdGlvbiBldCBsZXVyIGRpdnVsZ2F0aW9uIGNvbmZvcm3DqW1lbnQgw6AgbGEgUG9saXRpcXVlIGRlIGNvbmZpZGVudGlhbGl0w6kgZGUgRGVzamFyZGlucyBBY3VyYS4gSmUgY29uZmlybWUgYXZvaXIgbHUgbGEgJmx0O2EgaHJlZj0iL3BvbGl0aXF1ZS1kZS1jb25maWRlbnRpYWxpdGUuaHRtbCImZ3Q7UG9saXRpcXVlIGRlIGNvbmZpZGVudGlhbGl0w6kmbHQ7L2EmZ3Q7LiBKZSBjb21wcmVuZHMgcXVlIERlc2phcmRpbnMgQWN1cmEgcGV1dCBwYXJ0YWdlciBtZXMgaW5mb3JtYXRpb25zIHBlcnNvbm5lbGxlcyBhdmVjIGRlcyB0aWVycyBkYW5zIGxlIGJ1dCBkZSBnw6lyZXIgbWEgcmVsYXRpb24gYXZlYyBldXgsIHRlbHMgcXVlIG5vdHJlIGZvdXJuaXNzZXVyIGRlIGdlc3Rpb24gZGUgbGEgcmVsYXRpb24gY2xpZW50IChDUk0pLiBKZSBjb21wcmVuZHMgcXVlIGNlcnRhaW5zIGRlIGNlcyBmb3Vybmlzc2V1cnMgcGV1dmVudCBzdG9ja2VyIG1lcyBpbmZvcm1hdGlvbnMgcGVyc29ubmVsbGVzIHN1ciBkZXMgc2VydmV1cnMgZXQgZGVzIGJhc2VzIGRlIGRvbm7DqWVzIHNpdHXDqXMgZW4gZGVob3JzIGRlIG1hIHByb3ZpbmNlLiBKZSBjb21wcmVuZHMgw6lnYWxlbWVudCBxdWUgamUgcGV1eCByZXRpcmVyIG1vbiBjb25zZW50ZW1lbnQgZXQgbWUgZMOpc2Fib25uZXIgZGUgbGEgcsOpY2VwdGlvbiBkZSBjb21tdW5pY2F0aW9ucyBmdXR1cmVzIGRlIERlc2phcmRpbnMgQWN1cmEgw6AgdG91dCBtb21lbnQuIExlIGNvbnNlbnRlbWVudCDDoCBsYSByw6ljZXB0aW9uIGRlIGNvbW11bmljYXRpb25zIMOpbGVjdHJvbmlxdWVzIGVzdCBzb2xsaWNpdMOpIHBhciBEZXNqYXJkaW5zIEFjdXJhLic+Q2xhdXNlIGRlIG5vbi1yZXNwb25zYWJpbGl0w6k8L2Rpdj4KCQk8L2JveC1sYz4KCgkJCgoJPC9zdGFjay1sYz4KCTxkaXYgY2xhc3M9Ii1wdDEwIiBzdHlsZT0iZm9udC1zaXplOiAxMHB4O3RleHQtYWxpZ246IGNlbnRlcjtjb2xvcjogdmFyKC0tZGFyay1ncmF5KTsiPklNUE9SVEFOVDogVm91cyBwb3V2ZXogZmFjaWxlbWVudCByZXRpcmVyIHZvdHJlIGNvbnNlbnRlbWVudCBlbiB0b3V0IHRlbXBzITwvZGl2PgoJCTwvbGk+CgoJICAgIDwvb2w+CgkgIDwvZm9ybT4KCSAgPGRpdiBjbGFzcz0iLXRleHQtY2VudGVyIj4KCSAgICA8YnV0dG9uIGlkPSJlbWFpbENvbnNlbnRTdWJtaXQiIGNsYXNzPSIgLXVwcGVyY2FzZSBidG4tZGVmYXVsdCAiPlNPVU1FVFRSRTwvYnV0dG9uPgoJICA8L2Rpdj4KCTwvZGl2PgoKCgoJCgkKCQoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9ImN1cnJlbnRJdGVtVHlwZSIgdmFsdWU9ImNhciI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0iY3VycmVudEl0ZW1UeXBlVVJMU2FmZUVOIiB2YWx1ZT0iIj4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJjdXJyZW50U3RhdHVzIiB2YWx1ZT0ibmV3Ij4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJ0eHRVc2VyQWdlbnQiIHZhbHVlPSIgICI+CgkJPHNjcmlwdCBhc3luYyB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly9zdGF0cy5kMmNtZWRpYS5jYS9zZXJ2aWNlL2QyYy5pbml0LmpzIj48L3NjcmlwdD4KCgk8ZGl2IGlkPSJjb252ZXJzaW9uVGFnc1dyYXBwZXIiPjwvZGl2PgoKCTxkaXYgaWQ9ImQyY192YXJzIj48aW5wdXQgdHlwZT0iaGlkZGVuIiB2YWx1ZT0ibmV3Y2Fycy5odG1sIiBpZD0iMTZkN3Z3dDY2cG1vd28wayIgZGF0YS1mb3J2YXI9IkNVUlJFTlRQQUdFIj4KPGlucHV0IHR5cGU9ImhpZGRlbiIgdmFsdWU9IjM5NDk5YWM0MTk2NzliODVkNmExYTVkNjNkNWMwZTc1fDM5MDczMDE2NzciIGlkPSIzcG02dHZncXFlZ3c0dyIgZGF0YS1mb3J2YXI9IlVTRURfRU1BSUwiPgo8aW5wdXQgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iY2E1ODYyNTE1ODExNDU4ODk5OGRkMTZkZDExNjk0OWV8MzkwNzMwMTY3NyIgaWQ9InJkNXA4czRoNnI0czBjayIgZGF0YS1mb3J2YXI9IkFERl9FTUFJTCI+CjxpbnB1dCB0eXBlPSJoaWRkZW4iIHZhbHVlPSIjI01PREVMIyMiIGlkPSI0MmNsc2h5cXN4d2tza28iIGRhdGEtZm9ydmFyPSJNT0RFTCI+CjxpbnB1dCB0eXBlPSJoaWRkZW4iIHZhbHVlPSIjI1lFQVIjIyIgaWQ9IjFwOTZwcTIydDI3NGNjYyIgZGF0YS1mb3J2YXI9IllFQVIiPgo8aW5wdXQgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iIyNTVE9DS05VTUJFUiMjIiBpZD0iM3NiNnhzZ2JrazRrNDQiIGRhdGEtZm9ydmFyPSJTVE9DS05VTUJFUiI+CjxpbnB1dCB0eXBlPSJoaWRkZW4iIHZhbHVlPSJORVciIGlkPSJzbzd5dXFhajRkd2NjOHMiIGRhdGEtZm9ydmFyPSJTSVRFX0NBUl9TRUNUSU9OX1RZUEUiPgo8aW5wdXQgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iMzk0OTlhYzQxOTY3OWI4NWQ2YTFhNWQ2M2Q1YzBlNzV8MzkwNzMwMTY3NyIgaWQ9IjEzZHF0c25jZDgxd2s4NDQiIGRhdGEtZm9ydmFyPSJGSU5BTkNFX0VNQUlMIj4KPGlucHV0IHR5cGU9ImhpZGRlbiIgdmFsdWU9ImNhNTg2MjUxNTgxMTQ1ODg5OThkZDE2ZGQxMTY5NDllfDM5MDczMDE2NzciIGlkPSI1Y2N5Z2s5MjVtZ3dnMCIgZGF0YS1mb3J2YXI9IkZJTkFOQ0VfQURGX0VNQUlMIj4KPGlucHV0IHR5cGU9ImhpZGRlbiIgdmFsdWU9ImxpdmUiIGlkPSIyZWpoYmMweXlvZzB3d3ciIGRhdGEtZm9ydmFyPSJERVBMT1lNRU5UVFlQRSI+CjxpbnB1dCB0eXBlPSJoaWRkZW4iIHZhbHVlPSJnb29nbGUiIGlkPSIxNDA0cmEwNGJ3cmtvNHdnIiBkYXRhLWZvcnZhcj0iTUFQVE9VU0UiPgo8aW5wdXQgdHlwZT0iaGlkZGVuIiB2YWx1ZT0icmVzZXQiIGlkPSI2anlwNDY2NHZnd3M4MHciIGRhdGEtZm9ydmFyPSJQT1BVUFdJREdFVFRPQUNUSVZFIj4KPGlucHV0IHR5cGU9ImhpZGRlbiIgdmFsdWU9ImRlc2phcmRpbnNhY3VyYS5jYSIgaWQ9InU2dGhydzlvbGNnOHc4dyIgZGF0YS1mb3J2YXI9IkRPTUFJTk5BTUUiPgo8aW5wdXQgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iaHR0cHM6Ly93d3cuZGVzamFyZGluc2FjdXJhLmNhIiBpZD0iY291OWhtNDI5MWMwa29jIiBkYXRhLWZvcnZhcj0iTk9STUFMU0lURVVSSSI+CjxpbnB1dCB0eXBlPSJoaWRkZW4iIHZhbHVlPSIiIGlkPSIxZXJpdjkwMHBkYTg4d3c4IiBkYXRhLWZvcnZhcj0iTUFLRUZPUkVNQUlMIj4KPGlucHV0IHR5cGU9ImhpZGRlbiIgdmFsdWU9IiIgaWQ9IjEwcGE3djNxZWxkY29zayIgZGF0YS1mb3J2YXI9Ik1PREVMRk9SRU1BSUwiPgo8aW5wdXQgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iIiBpZD0icjgyemZreGEyZHdzczAwIiBkYXRhLWZvcnZhcj0iWUVBUiI+CjxpbnB1dCB0eXBlPSJoaWRkZW4iIHZhbHVlPSIiIGlkPSJpM2dzYXhnczVqazh3Y2siIGRhdGEtZm9ydmFyPSJSRUZFUkVSIj4KPC9kaXY+PCEtLSAjI0VORE9GUEFHRSMjIC0tPgoJPGRpdiBpZD0iY29uZmlybV9mb3JtcyI+PC9kaXY+CgoJPCEtLSBPTzo6YTMzYzM1YjNmYTBjMGQ0ODExMjNiMzc1YmU5OTZhZGMgLS0+CgoJCgoJPCEtLSBEV1AtMjQzOSAtLT4KCTwhLS0gT086OjMxNGNhYTViZjU5MDkyYzZmN2NmNmEyZmM3MmU5NTEzIC0tPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgdmFsdWU9IjEiIGlkPSJpc21vYmlsZSI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iRlJFTkNIIiBpZD0iYWN0aXZlc2l0ZWxhbmd1YWdlIj4KCgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0idG9wc2l0ZWlkIiBuYW1lPSJ0b3BzaXRlaWQiIHZhbHVlPSIyMDUzIj4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJ0b3BjYXJpZCIgbmFtZT0idG9wY2FyaWQiIHZhbHVlPSIiPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9InRvcGNhcmlkTXVsdGlzdGVwRm9ybSIgbmFtZT0idG9wY2FyaWRNdWx0aXN0ZXBGb3JtIiB2YWx1ZT0iIj4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJ0b3Bpc21vYmlsZSIgbmFtZT0idG9waXNtb2JpbGUiIHZhbHVlPSIxIj4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJ0b3BkZXBsb3ltZW50dHlwZSIgbmFtZT0idG9wZGVwbG95bWVudHR5cGUiIHZhbHVlPSJsaXZlIj4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJlTW9kZWwiIG5hbWU9ImVNb2RlbCIgdmFsdWU9IiI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0icG9wdXBtYWtlIiBuYW1lPSJwb3B1cG1ha2UiIHZhbHVlPSIiPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9InBvcHVwbWFrZU11bHRpc3RlcEZvcm0iIG5hbWU9InBvcHVwbWFrZU11bHRpc3RlcEZvcm0iIHZhbHVlPSIiPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9InBvcHVwbW9kZWwiIG5hbWU9InBvcHVwbW9kZWwiIHZhbHVlPSIiPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9InBvcHVwbW9kZWxNdWx0aXN0ZXBGb3JtIiBuYW1lPSJwb3B1cG1vZGVsTXVsdGlzdGVwRm9ybSIgdmFsdWU9IiI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0icG9wdXB5ZWFyIiBuYW1lPSJwb3B1cHllYXIiIHZhbHVlPSIiPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9InBvcHVweWVhck11bHRpc3RlcEZvcm0iIG5hbWU9InBvcHVweWVhck11bHRpc3RlcEZvcm0iIHZhbHVlPSIiPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9InBvcHVwdHJpbSIgbmFtZT0icG9wdXB0cmltIiB2YWx1ZT0iIj4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJwb3B1cHN0b2NrbnVtYmVyIiBuYW1lPSJwb3B1cHN0b2NrbnVtYmVyIiB2YWx1ZT0iIj4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJwb3B1cHN0b2NrbnVtYmVyTXVsdGlzdGVwRm9ybSIgbmFtZT0icG9wdXBzdG9ja251bWJlck11bHRpc3RlcEZvcm0iIHZhbHVlPSIiPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9Imxhc3R2aWV3ZWRtYWtlIiBuYW1lPSJsYXN0dmlld2VkbWFrZSIgdmFsdWU9IiI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0ibGFzdHZpZXdlZG1vZGVsIiBuYW1lPSJsYXN0dmlld2VkbW9kZWwiIHZhbHVlPSIiPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9Imxhc3R2aWV3ZWR5ZWFyIiBuYW1lPSJsYXN0dmlld2VkeWVhciIgdmFsdWU9IiI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0ibGFzdHZpZXdlZHRyaW0iIG5hbWU9Imxhc3R2aWV3ZWR0cmltIiB2YWx1ZT0iIj4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJsYXN0dmlld2Vkc3RvY2tudW1iZXIiIG5hbWU9Imxhc3R2aWV3ZWRzdG9ja251bWJlciIgdmFsdWU9IiI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0iaGFzTXVsdGlwbGVEZWFsZXJzIiB2YWx1ZT0iIj4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJzZW5kRW1haWxUb0FsbERlYWxlcnMiIHZhbHVlPSIwIj4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJzZWFyY2hlZFZlaGljbGUiIHZhbHVlPSIgICI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0ic2VhcmNoZWRxdWVyeW1ha2UiIG5hbWU9InNlYXJjaGVkcXVlcnltYWtlIiB2YWx1ZT0iIj4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJzZWFyY2hlZHF1ZXJ5bW9kZWwiIG5hbWU9InNlYXJjaGVkcXVlcnltb2RlbCIgdmFsdWU9IiI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0ic2VhcmNoZWRxdWVyeXllYXIiIG5hbWU9InNlYXJjaGVkcXVlcnl5ZWFyIiB2YWx1ZT0iIj4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJpbWdzdnJwb29sYWN0aXZlIiBuYW1lPSJpbWdzdnJwb29sYWN0aXZlIiB2YWx1ZT0iVFJVRSI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0iaXNBVkdNYXJrZXRQcmljZUFjdGl2ZSIgdmFsdWU9IjAiPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9InNpdGVjb21waWxlaWQiIG5hbWU9InNpdGVjb21waWxlaWQiIHZhbHVlPSI2YTUyMTUyY2MwNGY3Ij4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJlbWFpbExpc3RTdWZmaXgiIG5hbWU9ImVtYWlsTGlzdFN1ZmZpeCIgdmFsdWU9IjM5MDczMDE2NzciPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9ImRpc2FibGVQb3B1cHMiIG5hbWU9ImRpc2FibGVQb3B1cHMiIHZhbHVlPSIwIj4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJBRE1JTl9HRU5FUkFMX0JMT0NLX0ZSX0RPTUFJTl9DSEVDSyIgbmFtZT0iQURNSU5fR0VORVJBTF9CTE9DS19GUl9ET01BSU5fQ0hFQ0siIHZhbHVlPSIxIj4KCgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0idGFyZ2V0UGFnZSIgbmFtZT0idGFyZ2V0UGFnZSIgdmFsdWU9Ik5FV0NBUlMiPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9InBhZ2VTZWN0aW9uIiBuYW1lPSJwYWdlU2VjdGlvbiIgdmFsdWU9Ik5FVyI+CgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9IkRpc2NvdW50UG9wdXBPdGhlclBhZ2VzIiBuYW1lPSJEaXNjb3VudFBvcHVwT3RoZXJQYWdlcyIgdmFsdWU9IiI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0iRGlzY291bnRQb3B1cERlbGF5U2hvd090aGVyIiBuYW1lPSJEaXNjb3VudFBvcHVwRGVsYXlTaG93T3RoZXIiIHZhbHVlPSIiPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9IkRpc2NvdW50UG9wdXBEZWxheVNob3ciIG5hbWU9IkRpc2NvdW50UG9wdXBEZWxheVNob3ciIHZhbHVlPSIiPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9IkRpc2NvdW50UG9wdXBEZWxheVNob3dOZXciIG5hbWU9IkRpc2NvdW50UG9wdXBEZWxheVNob3dOZXciIHZhbHVlPSIiPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9IlNIT1dfUE9QVVBfQVVUTyIgbmFtZT0iU0hPV19QT1BVUF9BVVRPIiB2YWx1ZT0icGVyY2VudCI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0iU0hPV19QT1BVUF9BVVRPX1VTRUQiIG5hbWU9IlNIT1dfUE9QVVBfQVVUT19VU0VEIiB2YWx1ZT0icGVyY2VudCI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0iU0hPV19QT1BVUF9BVVRPX05FVyIgbmFtZT0iU0hPV19QT1BVUF9BVVRPX05FVyIgdmFsdWU9InBlcmNlbnQiPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9IkFVVE9fUEVSQ0VOVF9QT1BVUCIgbmFtZT0iQVVUT19QRVJDRU5UX1BPUFVQIiB2YWx1ZT0iNzUiPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9IkFVVE9fUEVSQ0VOVF9QT1BVUF9VU0VEIiBuYW1lPSJBVVRPX1BFUkNFTlRfUE9QVVBfVVNFRCIgdmFsdWU9Ijc1Ij4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJBVVRPX1BFUkNFTlRfUE9QVVBfTkVXIiBuYW1lPSJBVVRPX1BFUkNFTlRfUE9QVVBfTkVXIiB2YWx1ZT0iNzUiPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9IkdFTkVSQUxfVVNFRF9QQUdFX1BPUFVQX1NFTEVDVCIgbmFtZT0iR0VORVJBTF9VU0VEX1BBR0VfUE9QVVBfU0VMRUNUIiB2YWx1ZT0iSU5DTFVESU5HIj4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJHRU5FUkFMX05FV19QQUdFX1BPUFVQX1NFTEVDVCIgbmFtZT0iR0VORVJBTF9ORVdfUEFHRV9QT1BVUF9TRUxFQ1QiIHZhbHVlPSJJTkNMVURJTkciPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9IlVTRURfTE9HT19PTl9DSEVDSyIgbmFtZT0iVVNFRF9MT0dPX09OX0NIRUNLIiB2YWx1ZT0iIj4KCgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0iU0VNX0JPT1NURVJfQUNUSVZFIiBuYW1lPSJTRU1fQk9PU1RFUl9BQ1RJVkUiIHZhbHVlPSIxIj4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJQQUdFSUQiIG5hbWU9IlBBR0VJRCIgdmFsdWU9Im5ld2NhcnMuaHRtbCI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0iRGlzY291bnRQb3B1cENoZWNrYm94T3RoZXIiIG5hbWU9IkRpc2NvdW50UG9wdXBDaGVja2JveE90aGVyIiB2YWx1ZT0iMSI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0iRGlzY291bnRQb3B1cENoZWNrYm94IiBuYW1lPSJEaXNjb3VudFBvcHVwQ2hlY2tib3giIHZhbHVlPSIxIj4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJEaXNjb3VudFBvcHVwQ2hlY2tib3hOZXciIG5hbWU9IkRpc2NvdW50UG9wdXBDaGVja2JveE5ldyIgdmFsdWU9IjEiPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9IkNSTV9XU1NfQUNUSVZFIiBuYW1lPSJDUk1fV1NTX0FDVElWRSIgdmFsdWU9Im5vIj4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJ0eHRCdWlsZEFuZFByaWNlRW1haWxMaW5rIiB2YWx1ZT0iRGVybmllciB2w6loaWN1bGUgY29uZmlndXLDqSAobW9kdWxlIENvbmZpZ3VyYXRpb24gJmFtcDsgUHJpeCkgbGUgeyRCQU5QTElOS30iPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9InR4dEJ1aWxkQW5kUHJpY2VGb2xkZXJQYXRoIiB2YWx1ZT0iL2NvbmZpZ3VyYXRpb24tZXQtcHJpeC8iPgoKCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJuZXdTZWN0aW9ubmFibGVkIiBuYW1lPSJuZXdTZWN0aW9ubmFibGVkIiB2YWx1ZT0iMSI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0idXNlZFNlY3Rpb25uYWJsZWQiIG5hbWU9InVzZWRTZWN0aW9ubmFibGVkIiB2YWx1ZT0iMSI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0iZmluYW5jZVNlY3Rpb25uYWJsZWQiIG5hbWU9ImZpbmFuY2VTZWN0aW9ubmFibGVkIiB2YWx1ZT0iMSI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0ic2VydmljZVNlY3Rpb25uYWJsZWQiIG5hbWU9InNlcnZpY2VTZWN0aW9ubmFibGVkIiB2YWx1ZT0iMSI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0icHJvbW9TZWN0aW9ubmFibGVkIiBuYW1lPSJwcm9tb1NlY3Rpb25uYWJsZWQiIHZhbHVlPSIxIj4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJDQU1QQUlHTklEIiBuYW1lPSJDQU1QQUlHTklEIiB2YWx1ZT0iIj4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJJU1ZNIiBuYW1lPSJJU1ZNIiB2YWx1ZT0iIj4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJFTUFJTF9GQUlMX01FU1NBR0UiIHZhbHVlPSJVbmUgZXJyZXVyIGVzdCBzdXJ2ZW51ZSBsb3JzIGRlIGwnZW52b2kgZGUgdm90cmUgbWVzc2FnZS4gVmV1aWxsZXogcsOpZXNzYXllci4iPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9ImhpZGRlbkRlYWxlck5hbWUiIHZhbHVlPSJEZXNqYXJkaW5zIEFjdXJhIj4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkNCQkNoZWNrVXNlciIgdmFsdWU9Ik1UZ3VPVGN1T1M0eE5qaz0iPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZm9ybV9lbWFpbHMiIHZhbHVlPSIiPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgdmFsdWU9IjAiIGlkPSJoYXNWQkRDRW5hYmxlZCI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0iZmZkTDEiIHZhbHVlPSI5ZGJlNDkyM2MwNDQ4OWZjYzM3NTA1YjQ1NTBkZTcwYjc3YjI4YWRiIj4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJHUldMIiBuYW1lPSJHUldMIiB2YWx1ZT0iYjJlMzUwYjcxYzE2NDZiN2VlZWM5ZTFhZjZjODU0YjEzY2IxZGI1MTtiYTZiODYxMWNiYTExNzgwMzFiMTdmYTdlMzUwYWNmMmNlMTM1YWE1OzA5YzM1ODA3YmE0N2E4MjU5MmVmODhlNWQ2MzA0ZWE2OTliOGNiZTIiPgoKCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJERUFMRVJCUkFORCIgbmFtZT0iREVBTEVSQlJBTkQiIHZhbHVlPSJBY3VyYSI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0iREVBTEVSUEFDT0RFIiBuYW1lPSJERUFMRVJQQUNPREUiIHZhbHVlPSIyMDg2Ij4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJGSU5BTkNFRk9STVRZUEUiIG5hbWU9IkZJTkFOQ0VGT1JNVFlQRSIgdmFsdWU9Im11bHRpc3RlcCI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0iRGlzY291bnRQb3B1cE5ld1JlYmF0ZVNob3dUZXh0VXMiIHZhbHVlPSIwIj4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJEaXNjb3VudFBvcHVwVXNlZFJlYmF0ZVNob3dUZXh0VXMiIHZhbHVlPSIwIj4KCgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0ib2VtQ2VydGlmaWNhdGlvbiIgdmFsdWU9IjYiPgoKCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJjb29raWVMb2dUb2tlbiIgdmFsdWU9Ik16WTJNakV3TXpFMU5EWTJNdz09Ij4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJjb29raWVUb0NoZWNrIiB2YWx1ZT0iIj4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJkaXNhYmxlSW50ZXJuYWxTZXNzaW9uIiB2YWx1ZT0iMSI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0iZGVhbGVyUHJvdmluY2VDb2RlIiB2YWx1ZT0iUUMiPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9InNpdGVJRCIgdmFsdWU9IjIwNTMiPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9InNpdGVhcGl1cmwiIHZhbHVlPSJodHRwczovL3NpdGVhcGkuZDJjbWVkaWEuY2EiPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9IkZpbmFuY2VfRm9ybVR5cGUiIHZhbHVlPSJtdWx0aXN0ZXAiPgoKICAgIDxkaXYgaWQ9ImVtYWlsU3VjY2Vzc01lc3NhZ2UiIGNsYXNzPSJyZXZlYWwtbW9kYWwgZW1haWwtY29uc2VudC1ib3giIHN0eWxlPSJ3aWR0aDo2MCU7Ij4KICAgICAgPGRpdiBjbGFzcz0iaWNvbi10aXRsZSI+CiAgICAgICAgPCEtLSA8c3BhbiBjbGFzcz0idGl0bGUtaWNvbiBzdWNjZXNzIC1tbDAiPjwvc3Bhbj4gLS0+CiAgICAgICAgPHNwYW4gY2xhc3M9InRpdGxlLXR4dCI+Vm90cmUgZGVtYW5kZSBhIGJpZW4gw6l0w6kgZW52b3nDqWUhPC9zcGFuPgogICAgICA8L2Rpdj4KICAgICAgPHAgY2xhc3M9ImRlZmF1bHRTdWNjZXNzIj48YnI+Vm90cmUgZGVtYW5kZSBhIMOpdMOpIGVudm95w6llIGF2ZWMgc3VjY8Oocy4gVW4gcmVwcsOpc2VudGFudCB2b3VzIGNvbnRhY3RlcmEgc291cyBwZXUuPC9wPgogICAgICA8cCBjbGFzcz0ic2VydmljZVN1Y2Nlc3MiIHN0eWxlPSJkaXNwbGF5Om5vbmU7Ij48YnI+TWVyY2kgcG91ciB2b3RyZSBkZW1hbmRlLiBVbiBtZW1icmUgZGUgbm90cmUgw6lxdWlwZSBjb21tdW5pcXVlcmEgYXZlYyB2b3VzIHNvdXMgcGV1LjwvcD4KICAgICAgPCEtLSA8YSBjbGFzcz0iY2xvc2UtcmV2ZWFsLW1vZGFsIj4mIzIxNTs8L2E+IC0tPgogICAgICA8ZGl2IGNsYXNzPSJlbWFpbC1jb25zZW50LWJ0bnMgLXB0MjAgLXJpZ2h0IGFtcENvbnNlbnRSZXNwb25zZVNlbmREaXNtaXNzIj4KICAgICAgICA8YSBocmVmPSI\/cGF0aD0jIiBjbGFzcz0iIC11cHBlcmNhc2UgYnRuLWRlZmF1bHQgIiBvbmNsaWNrPSIkKCcuY2xvc2UtcmV2ZWFsLW1vZGFsOnZpc2libGUnKS50cmlnZ2VyKCdjbGljaycpO3JldHVybiBmYWxzZTsiPkZlcm1lcjwvYT4KICAgICAgPC9kaXY+CiAgICAgIDxmb3JtIGlkPSJlbWFpbG1zZ2ZybSIgY2xhc3M9ImNvbmZpcm1faHRtbCIgdGFyZ2V0PSJpZnJhbWUiIG1ldGhvZD0icG9zdCIgYWN0aW9uPSIvY29uZmlybWF0aW9uLmh0bWwiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJsYWJlbCIgY2xhc3M9ImxhYmVsZW1haWwiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJzZWN0aW9uIiBjbGFzcz0ibGFiZWxzZWN0aW9uIiB2YWx1ZT0iT2NjYXNpb24iPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJicmFuZCIgY2xhc3M9ImJyYW5kZW1haWwiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJtb2RlbCIgY2xhc3M9Im1vZGVsZW1haWwiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJ5ZWFyIiBjbGFzcz0ieWVhcmVtYWlsIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZ29vZ2xlaWQiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJnb29nbGVpZGQyY21lZGlhIiB2YWx1ZT0iIj4KCQkJCQkJICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhZHdvcmRzY29uaWQiIHZhbHVlPSIiPgoJCQkJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYWR3b3Jkc2xhYmVsaWQiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJiaW5nY29uaWQiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJiaW5nYWN0aW9uaWQiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJiaW5nZG9tYWluaWQiIHZhbHVlPSIiPgoKICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYWRyb2xsQWR2IiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYWRyb2xsUGl4IiB2YWx1ZT0iIj4KCiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImZhY2Vib29rQ29uSWQiIHZhbHVlPSIiPgoKICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZG9tYWluIiB2YWx1ZT0iZGVzamFyZGluc2FjdXJhLmNhIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0icmVmZXJyZXIiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJkZXBhcnRtZW50IiB2YWx1ZT0iTkVXIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ibGVhZF9kZXBhcnRtZW50IiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iaXNleHByZXNzIiBjbGFzcz0iaXNleHByZXNzIiB2YWx1ZT0iMCI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImlzcHJvbW8iIHZhbHVlPSIwIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iaXNob21lcGFnZSIgdmFsdWU9IjAiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJ0ZXN0bW9kZSIgY2xhc3M9InRlc3Rtb2RlIiB2YWx1ZT0iMCI+CgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJsZWFkVHlwZSIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InBhZ2VJRCIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImN1cnJlbnRVUkwiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJpc0NvbmZpcm1Qb3B1cCIgdmFsdWU9IiI+CgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJjb25maXJtX2VtYWlsIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iY29uZmlybV9maXJzdF9uYW1lIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iY29uZmlybV9sYXN0X25hbWUiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJjb25maXJtX3Bob25lX251bWJlciIgdmFsdWU9IiI+CgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJpc0Z1bGxXaWR0aCIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImRlYWxlck5hbWUiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJidXR0b25Qb3NpdGlvbiIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImlzTW9iaWxlTmV3VkRQIiB2YWx1ZT0iMSI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImZyb21BdXRvQXViYWluZSIgdmFsdWU9IiI+CgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iTkVXIiBuYW1lPSJ0ZXh0Q2FyU2VjdGlvblR5cGUiIHN0eWxlPSJkaXNwbGF5Om5vbmU7Ij4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ibGFuZyIgdmFsdWU9ImZyIj4KICAgICAgPC9mb3JtPgogICAgICA8aWZyYW1lIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIG5hbWU9ImlmcmFtZSIgZnJhbWVib3JkZXI9IjAiIHN0eWxlPSJ3aWR0aDoxcHg7aGVpZ2h0OjFweDsiPjwvaWZyYW1lPgogICAgPC9kaXY+CgogICAgPGRpdiBpZD0iZW1haWxGYWlsTWVzc2FnZSIgY2xhc3M9InJldmVhbC1tb2RhbCBlbWFpbC1jb25zZW50LWJveCIgc3R5bGU9IndpZHRoOjYwJTsiPgogICAgICA8c3BhbiBjbGFzcz0iZmFpbCI+VW5lIGVycmV1ciBzJ2VzdCBwcm9kdWl0ZTwvc3Bhbj4KICAgICAgPHA+Tm91cyBuJ2F2b25zIHBhcyBwdSBlbnZveWVyIHZvdHJlIG1lc3NhZ2UuIFMnaWwgdm91cyBwbGHDrnQgcmFmcmHDrmNoaXIgZXQgZXNzYXlleiDDoCBub3V2ZWF1LjwvcD4KICAgICAgPGRpdiBjbGFzcz0iY2xvc2UtcmV2ZWFsLW1vZGFsIj48ZW0gY2xhc3M9ImZhIGZhLXRpbWVzLWNpcmNsZSI+PC9lbT48L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0iLXB0MjAgLXJpZ2h0IGFtcENvbnNlbnRSZXNwb25zZVNlbmREaXNtaXNzIj4KICAgICAgICA8aW5wdXQgdHlwZT0iYnV0dG9uIiBjbGFzcz0iIC11cHBlcmNhc2UgYnRuLWRlZmF1bHQgIiBvbmNsaWNrPSIkKCcjZW1haWxGYWlsTWVzc2FnZScpLnRyaWdnZXIoJ3JldmVhbDpjbG9zZScpOyIgdmFsdWU9IkZlcm1lciI+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CgoKCQkJCgoJCQkKCQk8c3R5bGU+CgoJCQkjbGVhZERlYWxlckFwcG9pbnRtZW50IHNpZGViYXItbGMgPiAqewoJCQkJd2lkdGg6IGNsYW1wKDIwLjVyZW0sIG1heCg5MHZ3LCAyMC41cmVtKSwgNjByZW0pOwoJCQkJZGlyZWN0aW9uOiBydGw7CgkJCX0KCgkJCSNsZWFkRGVhbGVyQXBwb2ludG1lbnQgc2lkZWJhci1sYyA+ICogPiAqewoJCQkJZGlyZWN0aW9uOiBpbml0aWFsOwoJCQl9CgoJCQkjbGVhZERlYWxlckFwcG9pbnRtZW50IHNpZGViYXItbGMgPiAqID46bGFzdC1jaGlsZHsKCQkJCXdpZHRoOiAyMHJlbTsKCQkJfQoKCQkJI2xlYWREZWFsZXJBcHBvaW50bWVudCBzaWRlYmFyLWxjewoJCQkJLS1zaWRlYmFyLWJwOiA0MCU7CgkJCX0KCgkJCSNsZWFkRGVhbGVyQXBwb2ludG1lbnQgc3dpdGNoZXItbGN7CgkJCQktLXN3aXRjaC1icDogMzVyZW07CgkJCX0KCgoJCQkjZm9ybURlYWxlckFwcG9pbnRtZW50IGxhYmVsewoJCQkJbWF4LXdpZHRoOjE5cmVtOwoJCQkJZGlzcGxheTogZmxleDsKCQkJCWZsZXgtd3JhcDogd3JhcDsKCQkJCWp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKCQkJfQoKCQkJI2Zvcm1EZWFsZXJBcHBvaW50bWVudCBsYWJlbCBzcGFuewoJCQkJd2lkdGg6NHJlbTsKCQkJfQoKCgkJCSNmb3JtRGVhbGVyQXBwb2ludG1lbnQgW3R5cGU9InN1Ym1pdCJdewoJCQkJbWF4LXdpZHRoOjE5cmVtOwoJCQl9CgoJCQkuY29udGFjdE1hcENvbnRhaW5lcnsKCQkJCWhlaWdodDoxMDAlOwoJCQkJbWluLWhlaWdodDptaW4oNzV2aCwgMzhyZW0pOwoJCQl9CgoJCQkuY29udGFjdEZvcm17CgkJCQlib3JkZXItY29sb3I6I2JiYjsKCQkJCWJveC1zaXppbmc6IGJvcmRlci1ib3g7CgkJCX0KCgkJCSNsZWFkRGVhbGVyQXBwb2ludG1lbnQgLmNvbnRhY3RGb3JtIGlucHV0ewoJCQkJbWF4LXdpZHRoOiAxMHJlbTsKCQkJfQoKCgoJCQkjbGVhZERlYWxlckFwcG9pbnRtZW50IC5mbGF0cGlja3ItZGF5LnNlbGVjdGVkewoJCQkJYmFja2dyb3VuZC1jb2xvcjojMDAwOwoJCQkJYm9yZGVyLWNvbG9yOiMwMDA7CgkJCX0KCgkJCSNsZWFkRGVhbGVyQXBwb2ludG1lbnQgLmZsYXRwaWNrci10aW1lIDppcyhpbnB1dDpob3ZlcixpbnB1dDpmb2N1cyl7CgkJCQliYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKCQkJfQoKCQkJLmZsYXRwaWNrci1tb250aERyb3Bkb3duLW1vbnRoLCAuZmxhdHBpY2tyLW1vbnRoRHJvcGRvd24tbW9udGhzewoJCQkJdGV4dC10cmFuc2Zvcm06dmFyKC0tdHh0LXVwcGVyLCB1cHBlcmNhc2UpOwoJCQl9CgoJCQkvKiAuZHAtbGFyZ2UgLmZsYXRwaWNrci1jYWxlbmRhcnsKCQkJCXdpZHRoOjMwcmVtOwoJCQkJZm9udC1zaXplOjEuMXJlbTsKCQkJfQoKCQkJLmRwLWxhcmdlIC5mbGF0cGlja3Itd2Vla2RheXN7CgkJCQloZWlnaHQ6Mi41cmVtOwoJCQl9CgoJCQkuZHAtbGFyZ2UgLmZsYXRwaWNrci1kYXl7CgkJCQltYXgtd2lkdGg6IDRyZW07CgkJCQloZWlnaHQ6IDIuNXJlbTsKCQkJCWxpbmUtaGVpZ2h0OiAyLjVyZW07CgkJCX0KCgkJCS5kcC1sYXJnZSA6aXMoLmZsYXRwaWNrci1kYXlzLC5kYXlDb250YWluZXIpIHsKCQkJCXdpZHRoOjEwMCU7CgkJCQltYXgtd2lkdGg6IDMwcmVtOwoJCQl9ICovCgkJPC9zdHlsZT4KCgkJCTxkaXYgaWQ9ImxlYWREZWFsZXJBcHBvaW50bWVudCIgaGlkZGVuPgoJCQkJPGRpdiBjbGFzcz0iZmxleC1jZW50ZXIgYWxpZ24tY2VudGVyIj4KCQkJCTxzaWRlYmFyLWxjPgoJCQkJCTxkaXY+IDwhLS0gaW50ZXJtZWRpYXJ5IHdyYXBwZXIgLS0+CgoJCQkJCQk8Ym94LWxjPgoJCQkJCQkJPHN0YWNrLWxjIGNsYXNzPSJhbGlnbi1jZW50ZXIiPgoJCQkJCQkJCTx1bCBjbGFzcz0iY2hlY2tsaXN0IC1mcy0xIC0tcyI+CgkJCQkJCQkJCTxsaT5VbmUgZXhww6lyaWVuY2UgcGVyc29ubmFsaXPDqWUgZMOocyB2b3RyZSBhcnJpdsOpZTwvbGk+CgkJCQkJCQkJCTxsaT5BdWN1bmUgYXR0ZW50ZSBjaGV6IGxlIGNvbmNlc3Npb25uYWlyZTwvbGk+CgkJCQkJCQkJCTxsaT5BdWN1bmUgcGFwZXJhc3NlIGludXRpbGU6IGNvbmNlbnRyZXotdm91cyBzdXIgbGUgdsOpaGljdWxlPC9saT4KCQkJCQkJCQk8L3VsPgoJCQkJCQkJCTxib3gtbGMgY2xhc3M9ImZsZXgtY2VudGVyIj4KCQkJCQkJCQkJPGlucHV0IGNsYXNzPSJkYXRlcGlja2VyIGZsYXRwaWNrci1pbnB1dCIgaGlkZGVuIHR5cGU9InRleHQiIHRpdGxlPSJTZWxlY3QgRGF0ZS4uLiIgcGxhY2Vob2xkZXI9IlNlbGVjdCBEYXRlLi4uIiBkYXRhLWlkPSJpbmxpbmUiIHJlYWRvbmx5PgoJCQkJCQkJCTwvYm94LWxjPgoJCQkJCQkJCTxib3gtbGMgY2xhc3M9ImNvbnRhY3RGb3JtIC1iIC13LTEwMCBmbGV4LWNlbnRlciAtLXMyIj4KCQkJCQkJCQkJPGZvcm0gaWQ9ImZvcm1EZWFsZXJBcHBvaW50bWVudCIgY2xhc3M9Ii13LTEwMCIgbm92YWxpZGF0ZT4KCQkJCQkJCQkJCTxzdGFjay1sYyBjbGFzcz0iLS1zMiBhbGlnbi1jZW50ZXIiPgoKCQkJCQkJCQkJCQk8c3BhbiBjbGFzcz0iLWJvbGQgdHh0LWNlbnRlciB0eHQtdXBwZXIgc2VsZWN0ZWRUaW1lIj48L3NwYW4+CgkJCQkJCQkJCQkJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZGF0ZSI+CgoJCQkJCQkJCQkJCTxzd2l0Y2hlci1sYz4KCQkJCQkJCQkJCQkJPGRpdiBjbGFzcz0iZmxleC1jZW50ZXIiPiA8IS0tIGludGVybWVkaWFyeSB3cmFwcGVyIC0tPgoJCQkJCQkJCQkJCQkJPGxhYmVsIGNsYXNzPSJmb3JtLWxhYmVsIGFsaWduLWNlbnRlciI+CgkJCQkJCQkJCQkJCQkJPHNwYW4+Tm9tICo8L3NwYW4+CgkJCQkJCQkJCQkJCQkJPGlucHV0IHJlcXVpcmVkIGNsYXNzPSItcGgiIG5hbWU9Im5hbWUiIHR5cGU9InRleHQiPgoJCQkJCQkJCQkJCQkJPC9sYWJlbD4KCgkJCQkJCQkJCQkJCQk8bGFiZWwgY2xhc3M9ImZvcm0tbGFiZWwgYWxpZ24tY2VudGVyIj4KCQkJCQkJCQkJCQkJCQk8c3Bhbj5Db3VycmllbCAqPC9zcGFuPgoJCQkJCQkJCQkJCQkJCTxpbnB1dCBuYW1lPSJlbWFpbCIgdHlwZT0iZW1haWwiIHJlcXVpcmVkPgoJCQkJCQkJCQkJCQkJPC9sYWJlbD4KCgkJCQkJCQkJCQkJCQk8bGFiZWwgY2xhc3M9ImZvcm0tbGFiZWwgYWxpZ24tY2VudGVyIj4KCQkJCQkJCQkJCQkJCQk8c3Bhbj5Uw6lsw6lwaG9uZSAqPC9zcGFuPgoJCQkJCQkJCQkJCQkJCTxpbnB1dCBkYXRhLXByaXN0aW5lLXBob25lIG5hbWU9InBob25lbnVtIiB0eXBlPSJ0ZWwiIHJlcXVpcmVkPgoJCQkJCQkJCQkJCQkJPC9sYWJlbD4KCQkJCQkJCQkJCQkJPC9kaXY+CgkJCQkJCQkJCQkJPC9zd2l0Y2hlci1sYz4KCgkJCQkJCQkJCQkJPGRpdiBjbGFzcz0icmVjYXB0Y2hhLWRpc2NsYWltZXIiPldFQl9TSVRFX0dFTkVSQVRPUl9SRUNBUFRDSEFfRElTQ0xBSU1FUjwvZGl2PgoJCQkJCQkJCQkJCTxidXR0b24gb25zdWJtaXQ9ImphdmFzY3JpcHQ6dm9pZCgpIiBjbGFzcz0iYnRuIGJ0bi1wcm9tbyAtZnMtbHIgLXctMTAwIHR4dC11cHBlciAtYm9sZCIgdHlwZT0ic3VibWl0Ij4KCQkJCQkJCQkJCQkJUHJlbmRyZSByZW5kZXotdm91cwoJCQkJCQkJCQkJCTwvYnV0dG9uPgoKCQkJCQkJCQkJCQk8aW5wdXQgbmFtZT0iZGF0YSIgdHlwZT0iaGlkZGVuIiBkYXRhLW1ha2U9IiIgZGF0YS1tb2RlbD0iIiBkYXRhLXllYXI9IiIgZGF0YS10cmltPSIiIGRhdGEtY29uZGl0aW9uPSIiIGRhdGEta209IiIgZGF0YS12aW49IiIgZGF0YS1zdG9jay1udW1iZXI9IiI+CgoJCQkJCQkJCQkJCTxpbnB1dCBuYW1lPSJzZW5kVG8iIHZhbHVlPSIzOTQ5OWFjNDE5Njc5Yjg1ZDZhMWE1ZDYzZDVjMGU3NXwzOTA3MzAxNjc3IiB0eXBlPSJoaWRkZW4iPgoJCQkJCQkJCQkJCTxpbnB1dCBuYW1lPSJzZW5kVG9BREZGb3JtYXQiIHZhbHVlPSJjYTU4NjI1MTU4MTE0NTg4OTk4ZGQxNmRkMTE2OTQ5ZXwzOTA3MzAxNjc3IiB0eXBlPSJoaWRkZW4iPgoJCQkJCQkJCQkJCTxpbnB1dCBuYW1lPSJtYWlsSUQiIHZhbHVlPSJEZWFsZXJBcHBvaW50bWVudCIgdHlwZT0iaGlkZGVuIj4KCQkJCQkJCQkJCQk8aW5wdXQgbmFtZT0icG9wdXBPZmZlclR5cGUiIHZhbHVlPSJEZWFsZXJBcHBvaW50bWVudEFsbCIgdHlwZT0iaGlkZGVuIj4KCgkJCQkJCQkJCQkJPGRpdiBjbGFzcz0ibGVhZEVtYWlsIiBoaWRkZW4+CgkJCQkJCQkJCQkJCTxzcGFuIGRhdGEtc3ViamVjdD5MZWFkIDogRGVtYW5kZSBkZSByZW5kZXotdm91czwvc3Bhbj4KCQkJCQkJCQkJCQkJPHNwYW4gZGF0YS1ib2R5PkJvbmpvdXIsPGJyPjxicj5VbiBjbGllbnQgcG90ZW50aWVsIGF5YW50IHZpc2l0w6kgdm90cmUgc2l0ZSB3ZWIsIGFpbWVyYWl0IHByZW5kcmUgdW4gcmVuZGV6LXZvdXM6PGJyPjxicj48dT5SZW5zZWlnbmVtZW50cyBzdXIgbGUgdsOpaGljdWxlPC91Pjo8YnI+TW9kw6hsZTogPHN0cm9uZz4gIDwvc3Ryb25nPjxicj5OSVY6IDxzdHJvbmc+eyRWSU59PC9zdHJvbmc+PGJyPk51bcOpcm8gZGUgc3RvY2s6IDxzdHJvbmc+eyRTVE9DS05VTUJFUn08L3N0cm9uZz48YnI+S2lsb23DqHRyZXM6IDxzdHJvbmc+eyRLTX08L3N0cm9uZz48YnI+PGJyPjx1PkRhdGUgZHUgcmVuZGV6LXZvdXMgc291aGFpdMOpPC91PiA6IDxzdHJvbmc+eyREQVRFfTwvc3Ryb25nPjxicj48YnI+PHU+UmVuc2VpZ25lbWVudHMgc3VyIGxlIHZpc2l0ZXVyPC91Pjo8YnI+Tm9tOiA8c3Ryb25nPnskTkFNRX08L3N0cm9uZz48YnI+Q291cnJpZWw6IDxzdHJvbmc+PGEgaHJlZj0iP3BhdGg9bWFpbHRvOiU3QiUyNEVNQUlMJTdEIj57JEVNQUlMfTwvYT48L3N0cm9uZz48YnI+VMOpbMOpcGhvbmU6IDxzdHJvbmc+PGEgaHJlZj0iP3BhdGg9dGVsOiU3QiUyNFBIT05FTlVNJTdEIj57JFBIT05FTlVNfTwvYT48L3N0cm9uZz4geyRQSE9ORV9WQUxJREFUSU9OX0FUVEVNUFRTfTxicj48YnI+PHU+Q29uY2Vzc2lvbjwvdT46PGJyPk5vbSA6IDxzdHJvbmc+eyRERUFMRVJOQU1FfTwvc3Ryb25nPjxicj48YnI+PGRpdiBzdHlsZT0iIyNTRU9CTE9DS0RJU1BMQVkjIyI+U291cmNlIE3DqWRpYTogPHN0cm9uZz57JFVUTURFVEFJTFN9PC9zdHJvbmc+PGJyPk5hdmlnYXRldXI6IDxzdHJvbmc+eyRVU0VSQUdFTlR9IC0gPC9zdHJvbmc+PGJyPkhpc3RvcmlxdWUgZGUgbmF2aWdhdGlvbjogPHN0cm9uZz48YSBocmVmPSI\/cGF0aD0lN0IlMjRVVUxJTkslN0QiIHJlbD0ibm9mb2xsb3cgdWdjIHNwb25zb3JlZCBub2luZGV4IiBzdHlsZT0iY29sb3I6YmxhY2s7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsiPkNsaXF1ZXogaWNpPC9hPjwvc3Ryb25nPjxicj48L2Rpdj5Db25zZW50ZW1lbnQ6IDxzdHJvbmc+eyRDT05TRU5UX0RFVEFJTFN9PC9zdHJvbmc+eyRQVVJDSEFTRV9JTlRFTlR9PC9zcGFuPgoJCQkJCQkJCQkJCTwvZGl2PgoKCQkJCQkJCQkJCTwvc3RhY2stbGM+CgkJCQkJCQkJCTwvZm9ybT4KCQkJCQkJCQk8L2JveC1sYz4KCQkJCQkJCTwvc3RhY2stbGM+CgkJCQkJCTwvYm94LWxjPgoKCQkJCQkJPGRpdj4KCQkJCQkJCTxzdGFjay1sYyBjbGFzcz0iY29udGFjdE1hcENvbnRhaW5lciAtLXMtOCAtYmctbGlnaHQiIGlkPSJmb290ZXJHb29nbGVNYXBIb3Vyc0NvbnRhaW5lciI+CgoJCQkJCQkJCQoJCQk8aWZyYW1lIHRpdGxlPSJHb29nbGUgTWFwIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiBmcmFtZWJvcmRlcj0iMCIgY2xhc3M9IiBsYXp5bG9hZGVkIiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vbWFwcy9lbWJlZC92MS9wbGFjZT9xPXBsYWNlX2lkJTNBQ2hJSmQxNVlkLTBleVV3UkIwbDY5dUZieGx3JmFtcDtrZXk9QUl6YVN5Q1hfQ3B1eUVKbzlsWm44OFNXWGhDWUhnUXdua0xCOEdjJmFtcDt6b29tPTE0JmFtcDtyZWdpb249Q0EmYW1wO2xhbmd1YWdlPWZyIiBhbGxvd2Z1bGxzY3JlZW49IiI+PC9pZnJhbWU+CgoJCQkJCQkJCTxib3gtbGMgY2xhc3M9ImNvbnRhY3RCbG9jayAtLXMyIC1tMCI+CgkJCQkJCQkJCTxzdGFjay1sYyBjbGFzcz0iLS1zMyI+CgkJCQkJCQkJCQk8ZGl2PgoJCQkJCQkJCQkJCTxzdGFjay1sYyBjbGFzcz0iLS1zLTgiPgoJCQkJCQkJCQkJCQk8c3BhbiBjbGFzcz0iLS1mczAiPkRlc2phcmRpbnMgQWN1cmE8L3NwYW4+CgkJCQkJCQkJCQkJCTxhIGhyZWY9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jYS9tYXBzL2Rpci8\/YXBpPTEmYW1wO2Rlc3RpbmF0aW9uPURlc2phcmRpbnMlMkJBY3VyYSUyQzU2MjUrQm91bC4rTUElQzIlQTl0cm9wb2xpdGFpbitFc3QlMkNNb250ckElQzMlODIlQzIlQTlhbCUyQ1FDJTJDSDFQKzFYMyZhbXA7aGw9ZnImYW1wO3Q9bSZhbXA7ej0xNiZhbXA7aWU9VVRGOCZhbXA7ZGVzdGluYXRpb25fcGxhY2VfaWQ9Q2hJSmQxNVlkLTBleVV3UkIwbDY5dUZieGx3IiB0YXJnZXQ9Il9ibGFuayIgY2xhc3M9Ii0tZnMtMSI+CgkJCQkJCQkJCQkJCQk8c3Bhbj41NjI1IEJvdWwuIE3DqXRyb3BvbGl0YWluIEVzdDwvc3Bhbj4KCQkJCQkJCQkJCQkJCTxzcGFuPk1vbnRyw6lhbCwgUUM8L3NwYW4+CgkJCQkJCQkJCQkJCQk8c3Bhbj5IMVAgMVgzPC9zcGFuPgoJCQkJCQkJCQkJCQk8L2E+CgkJCQkJCQkJCQkJPC9zdGFjay1sYz4KCQkJCQkJCQkJCTwvZGl2PgoKCQkJCQkJCQkJCTxkaXY+CgkJCQkJCQkJCQkJPHN0YWNrLWxjIGNsYXNzPSItLXMtOCI+CgkJCQkJCQkJCQkJCTxzcGFuIGNsYXNzPSItYm9sZCI+VMOpbMOpcGhvbmU8L3NwYW4+CgkJCQkJCQkJCQkJCTxzcGFuIGNsYXNzPSItLWZzLTEiPgoJCQkJCQkJCQkJCQkJPGEgaHJlZj0iP3BhdGg9dGVsOjUxNCUyMDM2Mi0yODcyIiBkYXRhLWRlcGFydG1lbnQ9IlNhbGVzIiB0aXRsZT0iQ29udGFjdCBQaG9uZSI+NTE0IDM2Mi0yODcyPC9hPgoJCQkJCQkJCQkJCQk8L3NwYW4+CgkJCQkJCQkJCQkJPC9zdGFjay1sYz4KCQkJCQkJCQkJCTwvZGl2PgoKCQkJCQkJCQkJCTxkaXY+CgkJCQkJCQkJCQkJPHN0YWNrLWxjIGNsYXNzPSItLXMtOCI+CgkJCQkJCQkJCQkJCTxzcGFuIGNsYXNzPSItYm9sZCI+SGV1cmVzPC9zcGFuPgoJCQkJCQkJCQkJCQkJCQk8ZGl2IGlkPSJpdGVtX25ldyI+CgkJCQk8c3RhY2stbGMgY2xhc3M9ImhvdXJzTGlzdCI+CgkJCQkJCQkJCTxib3gtbGMgY2xhc3M9ImZsZXgtYmV0d2VlbiAtLWZzLTEgLS1zLTgiIGRhdGEtbWluaG91cj0iMDk6MDAiIGRhdGEtbWF4aG91cj0iMTk6MzAiIGRhdGEtY2xvc2VkPSIwIj4KCQkJCQk8c3BhbiBjbGFzcz0iZGF5Ij5MdW5kaTwvc3Bhbj4KCQkJCQk8c3BhbiBjbGFzcz0iaG91cnMiPjA5OjAwIC0gMTk6MzA8L3NwYW4+CgkJCQk8L2JveC1sYz4JCQkJPGJveC1sYyBjbGFzcz0iZmxleC1iZXR3ZWVuIC0tZnMtMSAtLXMtOCIgZGF0YS1taW5ob3VyPSIwOTowMCIgZGF0YS1tYXhob3VyPSIxOTozMCIgZGF0YS1jbG9zZWQ9IjAiPgoJCQkJCTxzcGFuIGNsYXNzPSJkYXkiPk1hcmRpPC9zcGFuPgoJCQkJCTxzcGFuIGNsYXNzPSJob3VycyI+MDk6MDAgLSAxOTozMDwvc3Bhbj4KCQkJCTwvYm94LWxjPgkJCQk8Ym94LWxjIGNsYXNzPSJmbGV4LWJldHdlZW4gLS1mcy0xIC0tcy04IiBkYXRhLW1pbmhvdXI9IjA5OjAwIiBkYXRhLW1heGhvdXI9IjE5OjMwIiBkYXRhLWNsb3NlZD0iMCI+CgkJCQkJPHNwYW4gY2xhc3M9ImRheSI+TWVyY3JlZGk8L3NwYW4+CgkJCQkJPHNwYW4gY2xhc3M9ImhvdXJzIj4wOTowMCAtIDE5OjMwPC9zcGFuPgoJCQkJPC9ib3gtbGM+CQkJCTxib3gtbGMgY2xhc3M9ImZsZXgtYmV0d2VlbiAtLWZzLTEgLS1zLTgiIGRhdGEtbWluaG91cj0iMDk6MDAiIGRhdGEtbWF4aG91cj0iMTk6MzAiIGRhdGEtY2xvc2VkPSIwIj4KCQkJCQk8c3BhbiBjbGFzcz0iZGF5Ij5KZXVkaTwvc3Bhbj4KCQkJCQk8c3BhbiBjbGFzcz0iaG91cnMiPjA5OjAwIC0gMTk6MzA8L3NwYW4+CgkJCQk8L2JveC1sYz4JCQkJPGJveC1sYyBjbGFzcz0iZmxleC1iZXR3ZWVuIC0tZnMtMSAtLXMtOCIgZGF0YS1taW5ob3VyPSIwOTowMCIgZGF0YS1tYXhob3VyPSIxODowMCIgZGF0YS1jbG9zZWQ9IjAiPgoJCQkJCTxzcGFuIGNsYXNzPSJkYXkiPlZlbmRyZWRpPC9zcGFuPgoJCQkJCTxzcGFuIGNsYXNzPSJob3VycyI+MDk6MDAgLSAxODowMDwvc3Bhbj4KCQkJCTwvYm94LWxjPgkJCQk8Ym94LWxjIGNsYXNzPSJmbGV4LWJldHdlZW4gLS1mcy0xIC0tcy04IiBkYXRhLW1pbmhvdXI9IjAiIGRhdGEtbWF4aG91cj0iMCIgZGF0YS1jbG9zZWQ9IjEiPgoJCQkJCTxzcGFuIGNsYXNzPSJkYXkiPlNhbWVkaTwvc3Bhbj4KCQkJCQk8c3BhbiBjbGFzcz0iaG91cnMiPkZlcm3DqTwvc3Bhbj4KCQkJCTwvYm94LWxjPgkJCQk8Ym94LWxjIGNsYXNzPSJmbGV4LWJldHdlZW4gLS1mcy0xIC0tcy04IiBkYXRhLW1pbmhvdXI9IjAiIGRhdGEtbWF4aG91cj0iMCIgZGF0YS1jbG9zZWQ9IjEiPgoJCQkJCTxzcGFuIGNsYXNzPSJkYXkiPkRpbWFuY2hlPC9zcGFuPgoJCQkJCTxzcGFuIGNsYXNzPSJob3VycyI+RmVybcOpPC9zcGFuPgoJCQkJPC9ib3gtbGM+CgkJCQk8L3N0YWNrLWxjPgoJCQk8L2Rpdj4KCQkJCQkJCQkJCQk8L3N0YWNrLWxjPgoJCQkJCQkJCQkJPC9kaXY+CgoJCQkJCQkJCQk8L3N0YWNrLWxjPgoJCQkJCQkJCTwvYm94LWxjPgoKCQkJCQkJCTwvc3RhY2stbGM+CgkJCQkJCTwvZGl2PgoKCQkJCQk8L2Rpdj4KCQkJCTwvc2lkZWJhci1sYz4KCQkJCTwvZGl2PgoJCQkJPC9kaXY+CgoJCQkJCgoJCQkJPCEtLSBPTzo6ZTNmZTNkZTY5ZDcwNjFiZjhlZTM0MTMxMGFkZjcxZjcgLS0+CTwhLS0gT086Ojc0NDI3NjczNDFlNjEzZjY2MTVhNTVjOTJhM2YzMzFkIC0tPgoKICAgICAgIDwhLS0gTUFJTiBQT1BVUCBuZXcgQ29udGFjdFBvcHVwIC0tPgoJCQoJCTxkaXYgaWQ9ImNvbnRhY3Rwb3B1cCIgY2xhc3M9InJldmVhbC1tb2RhbCAiIHN0eWxlPSJ3aWR0aDo4MCU7IiBkYXRhLWxhenlsb2FkaWQ9Im5ld2NhcnNfY29udGFjdHBvcHVwIj4KCQkJCgkJPC9kaXY+CgoJCTwhLS0gT086OjIwMzI1OWQ3N2U0NGVmNzM5ODlmY2Q1MjAwNjRmMDFmIC0tPgoKCQkKCiAgICA8ZGl2IGlkPSJlbWFpbFN1Y2Nlc3NNZXNzYWdlX2NvbnRhY3Rwb3B1cCIgY2xhc3M9InJldmVhbC1tb2RhbCBlbWFpbC1jb25zZW50LWJveCIgc3R5bGU9IndpZHRoOjYwJTsiPgogICAgICA8ZGl2IGNsYXNzPSJpY29uLXRpdGxlIj4KICAgICAgICA8IS0tIDxzcGFuIGNsYXNzPSJ0aXRsZS1pY29uIHN1Y2Nlc3MgLW1sMCI+PC9zcGFuPiAtLT4KICAgICAgICA8c3BhbiBjbGFzcz0idGl0bGUtdHh0Ij5Wb3RyZSBtZXNzYWdlIGEgYmllbiDDqXTDqSBlbnZvecOpITwvc3Bhbj4KICAgICAgPC9kaXY+CiAgICAgIDxwIGNsYXNzPSJkZWZhdWx0U3VjY2VzcyI+PGJyPk1lcmNpISBVbiBtZW1icmUgZGUgbm90cmUgw6lxdWlwZSB2b3VzIGNvbnRhY3RlcmEgc291cyBwZXUuPC9wPgogICAgICA8cCBjbGFzcz0ic2VydmljZVN1Y2Nlc3MiIHN0eWxlPSJkaXNwbGF5Om5vbmU7Ij48YnI+TWVyY2khIFVuIG1lbWJyZSBkZSBub3RyZSDDqXF1aXBlIHZvdXMgY29udGFjdGVyYSBzb3VzIHBldS48L3A+CiAgICAgIDwhLS0gPGEgY2xhc3M9ImNsb3NlLXJldmVhbC1tb2RhbCI+JiMyMTU7PC9hPiAtLT4KICAgICAgPGRpdiBjbGFzcz0iZW1haWwtY29uc2VudC1idG5zIC1wdDIwIC1yaWdodCBhbXBDb25zZW50UmVzcG9uc2VTZW5kRGlzbWlzcyI+CiAgICAgICAgPGEgaHJlZj0iP3BhdGg9IyIgY2xhc3M9IiAtdXBwZXJjYXNlIGJ0bi1kZWZhdWx0ICIgb25jbGljaz0iJCgnLmNsb3NlLXJldmVhbC1tb2RhbDp2aXNpYmxlJykudHJpZ2dlcignY2xpY2snKTtyZXR1cm4gZmFsc2U7Ij5GZXJtZXI8L2E+CiAgICAgIDwvZGl2PgogICAgICA8Zm9ybSBpZD0iZW1haWxtc2dmcm1fY29udGFjdHBvcHVwIiBjbGFzcz0iY29uZmlybV9odG1sIiB0YXJnZXQ9ImlmcmFtZSIgbWV0aG9kPSJwb3N0IiBhY3Rpb249Ii9jb25maXJtYXRpb24uaHRtbCI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImxhYmVsIiBjbGFzcz0ibGFiZWxlbWFpbCIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InNlY3Rpb24iIGNsYXNzPSJsYWJlbHNlY3Rpb24iIHZhbHVlPSJPY2Nhc2lvbiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImJyYW5kIiBjbGFzcz0iYnJhbmRlbWFpbCIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9Im1vZGVsIiBjbGFzcz0ibW9kZWxlbWFpbCIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InllYXIiIGNsYXNzPSJ5ZWFyZW1haWwiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJnb29nbGVpZCIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9Imdvb2dsZWlkZDJjbWVkaWEiIHZhbHVlPSIiPgoJCQkJCQkgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImFkd29yZHNjb25pZCIgdmFsdWU9IiI+CgkJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhZHdvcmRzbGFiZWxpZCIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImJpbmdjb25pZCIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImJpbmdhY3Rpb25pZCIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImJpbmdkb21haW5pZCIgdmFsdWU9IiI+CgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhZHJvbGxBZHYiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhZHJvbGxQaXgiIHZhbHVlPSIiPgoKICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZmFjZWJvb2tDb25JZCIgdmFsdWU9IiI+CgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJkb21haW4iIHZhbHVlPSJkZXNqYXJkaW5zYWN1cmEuY2EiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJyZWZlcnJlciIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImRlcGFydG1lbnQiIHZhbHVlPSJORVciPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJsZWFkX2RlcGFydG1lbnQiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJpc2V4cHJlc3MiIGNsYXNzPSJpc2V4cHJlc3MiIHZhbHVlPSIwIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iaXNwcm9tbyIgdmFsdWU9IjAiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJpc2hvbWVwYWdlIiB2YWx1ZT0iMCI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InRlc3Rtb2RlIiBjbGFzcz0idGVzdG1vZGUiIHZhbHVlPSIwIj4KCiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImxlYWRUeXBlIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0icGFnZUlEIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iY3VycmVudFVSTCIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImlzQ29uZmlybVBvcHVwIiB2YWx1ZT0iIj4KCiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImNvbmZpcm1fZW1haWwiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJjb25maXJtX2ZpcnN0X25hbWUiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJjb25maXJtX2xhc3RfbmFtZSIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImNvbmZpcm1fcGhvbmVfbnVtYmVyIiB2YWx1ZT0iIj4KCiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImlzRnVsbFdpZHRoIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZGVhbGVyTmFtZSIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImJ1dHRvblBvc2l0aW9uIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iaXNNb2JpbGVOZXdWRFAiIHZhbHVlPSIxIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZnJvbUF1dG9BdWJhaW5lIiB2YWx1ZT0iIj4KCiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIHZhbHVlPSJORVciIG5hbWU9InRleHRDYXJTZWN0aW9uVHlwZSIgc3R5bGU9ImRpc3BsYXk6bm9uZTsiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJsYW5nIiB2YWx1ZT0iZnIiPgogICAgICA8L2Zvcm0+CiAgICAgIDxpZnJhbWUgd2lkdGg9IjEiIGhlaWdodD0iMSIgbmFtZT0iaWZyYW1lIiBmcmFtZWJvcmRlcj0iMCIgc3R5bGU9IndpZHRoOjFweDtoZWlnaHQ6MXB4OyI+PC9pZnJhbWU+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGlkPSJlbWFpbEZhaWxNZXNzYWdlX2NvbnRhY3Rwb3B1cCIgY2xhc3M9InJldmVhbC1tb2RhbCBlbWFpbC1jb25zZW50LWJveCIgc3R5bGU9IndpZHRoOjYwJTsiPgogICAgICA8c3BhbiBjbGFzcz0iZmFpbCI+VW5lIGVycmV1ciBzJ2VzdCBwcm9kdWl0ZTwvc3Bhbj4KICAgICAgPHA+Tm91cyBuJ2F2b25zIHBhcyBwdSBlbnZveWVyIHZvdHJlIG1lc3NhZ2UuIFMnaWwgdm91cyBwbGHDrnQgcmFmcmHDrmNoaXIgZXQgZXNzYXlleiDDoCBub3V2ZWF1LjwvcD4KICAgICAgPGRpdiBjbGFzcz0iY2xvc2UtcmV2ZWFsLW1vZGFsIj48ZW0gY2xhc3M9ImZhIGZhLXRpbWVzLWNpcmNsZSI+PC9lbT48L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0iLXB0MjAgLXJpZ2h0IGFtcENvbnNlbnRSZXNwb25zZVNlbmREaXNtaXNzIj4KICAgICAgICA8aW5wdXQgdHlwZT0iYnV0dG9uIiBjbGFzcz0iIC11cHBlcmNhc2UgYnRuLWRlZmF1bHQgIiBvbmNsaWNrPSIkKCcjZW1haWxGYWlsTWVzc2FnZScpLnRyaWdnZXIoJ3JldmVhbDpjbG9zZScpOyIgdmFsdWU9IkZlcm1lciI+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CgoKCQkJCTwhLS0gT086OjNkNzg1NDI3NDEyNWVhNjliMDI0NTc1NjQ2YTY5OGRjIC0tPgoJCQo8IS0tIEVORCBuZXcgLS0+Cgo8IS0tIENSRURJVCBTQ09SRSBQT1BVUCAtLT4KCQkKCQk8ZGl2IGlkPSJjcmVkaXRTY29yZVBvcHVwQ29udGFpbmVyIiBjbGFzcz0icmV2ZWFsLW1vZGFsICIgc3R5bGU9IndpZHRoOjMyMHB4O2hlaWdodDo2MDBweDsiIGRhdGEtbGF6eWxvYWRpZD0ibmV3Y2Fyc19jcmVkaXRzY29yZXBvcHVwY29udGFpbmVyIj4KCQkJCgkJPC9kaXY+CgoJCTwhLS0gT086OjgyYzc4OWVjMTRkZWUxMzdjNzI1ZDg3NGY4NDNmZWI0IC0tPgoKCQkKCiAgICA8ZGl2IGlkPSJlbWFpbFN1Y2Nlc3NNZXNzYWdlX2NyZWRpdFNjb3JlUG9wdXBDb250YWluZXIiIGNsYXNzPSJyZXZlYWwtbW9kYWwgZW1haWwtY29uc2VudC1ib3giIHN0eWxlPSJ3aWR0aDo2MCU7Ij4KICAgICAgPGRpdiBjbGFzcz0iaWNvbi10aXRsZSI+CiAgICAgICAgPCEtLSA8c3BhbiBjbGFzcz0idGl0bGUtaWNvbiBzdWNjZXNzIC1tbDAiPjwvc3Bhbj4gLS0+CiAgICAgICAgPHNwYW4gY2xhc3M9InRpdGxlLXR4dCI+Vm90cmUgZGVtYW5kZSBhIGJpZW4gw6l0w6kgZW52b3nDqWUhPC9zcGFuPgogICAgICA8L2Rpdj4KICAgICAgPHAgY2xhc3M9ImRlZmF1bHRTdWNjZXNzIj48YnI+TWVyY2khIFVuIGNvbnNlaWxsZXIgY29tbXVuaXF1ZXJhIGF2ZWMgdm91cyBwb3VyIHZvdXMgZG9ubmVyIGxlcyBkw6l0YWlscyBzdXIgdm90cmUgcG90ZW50aWVsIGRlIGNyw6lkaXQuPC9wPgogICAgICA8cCBjbGFzcz0ic2VydmljZVN1Y2Nlc3MiIHN0eWxlPSJkaXNwbGF5Om5vbmU7Ij48YnI+TWVyY2khIFVuIGNvbnNlaWxsZXIgY29tbXVuaXF1ZXJhIGF2ZWMgdm91cyBwb3VyIHZvdXMgZG9ubmVyIGxlcyBkw6l0YWlscyBzdXIgdm90cmUgcG90ZW50aWVsIGRlIGNyw6lkaXQuPC9wPgogICAgICA8IS0tIDxhIGNsYXNzPSJjbG9zZS1yZXZlYWwtbW9kYWwiPiYjMjE1OzwvYT4gLS0+CiAgICAgIDxkaXYgY2xhc3M9ImVtYWlsLWNvbnNlbnQtYnRucyAtcHQyMCAtcmlnaHQgYW1wQ29uc2VudFJlc3BvbnNlU2VuZERpc21pc3MiPgogICAgICAgIDxhIGhyZWY9Ij9wYXRoPSMiIGNsYXNzPSIgLXVwcGVyY2FzZSBidG4tZGVmYXVsdCAiIG9uY2xpY2s9IiQoJy5jbG9zZS1yZXZlYWwtbW9kYWw6dmlzaWJsZScpLnRyaWdnZXIoJ2NsaWNrJyk7cmV0dXJuIGZhbHNlOyI+RmVybWVyPC9hPgogICAgICA8L2Rpdj4KICAgICAgPGZvcm0gaWQ9ImVtYWlsbXNnZnJtX2NyZWRpdFNjb3JlUG9wdXBDb250YWluZXIiIGNsYXNzPSJjb25maXJtX2h0bWwiIHRhcmdldD0iaWZyYW1lIiBtZXRob2Q9InBvc3QiIGFjdGlvbj0iL2NvbmZpcm1hdGlvbi5odG1sIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ibGFiZWwiIGNsYXNzPSJsYWJlbGVtYWlsIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ic2VjdGlvbiIgY2xhc3M9ImxhYmVsc2VjdGlvbiIgdmFsdWU9Ik9jY2FzaW9uIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYnJhbmQiIGNsYXNzPSJicmFuZGVtYWlsIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ibW9kZWwiIGNsYXNzPSJtb2RlbGVtYWlsIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ieWVhciIgY2xhc3M9InllYXJlbWFpbCIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9Imdvb2dsZWlkIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZ29vZ2xlaWRkMmNtZWRpYSIgdmFsdWU9IiI+CgkJCQkJCSAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYWR3b3Jkc2NvbmlkIiB2YWx1ZT0iIj4KCQkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImFkd29yZHNsYWJlbGlkIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYmluZ2NvbmlkIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYmluZ2FjdGlvbmlkIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYmluZ2RvbWFpbmlkIiB2YWx1ZT0iIj4KCiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImFkcm9sbEFkdiIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImFkcm9sbFBpeCIgdmFsdWU9IiI+CgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJmYWNlYm9va0NvbklkIiB2YWx1ZT0iIj4KCiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImRvbWFpbiIgdmFsdWU9ImRlc2phcmRpbnNhY3VyYS5jYSI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InJlZmVycmVyIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZGVwYXJ0bWVudCIgdmFsdWU9Ik5FVyI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImxlYWRfZGVwYXJ0bWVudCIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImlzZXhwcmVzcyIgY2xhc3M9ImlzZXhwcmVzcyIgdmFsdWU9IjAiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJpc3Byb21vIiB2YWx1ZT0iMCI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImlzaG9tZXBhZ2UiIHZhbHVlPSIwIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0idGVzdG1vZGUiIGNsYXNzPSJ0ZXN0bW9kZSIgdmFsdWU9IjAiPgoKICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ibGVhZFR5cGUiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJwYWdlSUQiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJjdXJyZW50VVJMIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iaXNDb25maXJtUG9wdXAiIHZhbHVlPSIiPgoKICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iY29uZmlybV9lbWFpbCIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImNvbmZpcm1fZmlyc3RfbmFtZSIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImNvbmZpcm1fbGFzdF9uYW1lIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iY29uZmlybV9waG9uZV9udW1iZXIiIHZhbHVlPSIiPgoKICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iaXNGdWxsV2lkdGgiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJkZWFsZXJOYW1lIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYnV0dG9uUG9zaXRpb24iIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJpc01vYmlsZU5ld1ZEUCIgdmFsdWU9IjEiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJmcm9tQXV0b0F1YmFpbmUiIHZhbHVlPSIiPgoKICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgdmFsdWU9Ik5FVyIgbmFtZT0idGV4dENhclNlY3Rpb25UeXBlIiBzdHlsZT0iZGlzcGxheTpub25lOyI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImxhbmciIHZhbHVlPSJmciI+CiAgICAgIDwvZm9ybT4KICAgICAgPGlmcmFtZSB3aWR0aD0iMSIgaGVpZ2h0PSIxIiBuYW1lPSJpZnJhbWUiIGZyYW1lYm9yZGVyPSIwIiBzdHlsZT0id2lkdGg6MXB4O2hlaWdodDoxcHg7Ij48L2lmcmFtZT4KICAgIDwvZGl2PgoKICAgIDxkaXYgaWQ9ImVtYWlsRmFpbE1lc3NhZ2VfY3JlZGl0U2NvcmVQb3B1cENvbnRhaW5lciIgY2xhc3M9InJldmVhbC1tb2RhbCBlbWFpbC1jb25zZW50LWJveCIgc3R5bGU9IndpZHRoOjYwJTsiPgogICAgICA8c3BhbiBjbGFzcz0iZmFpbCI+VW5lIGVycmV1ciBzJ2VzdCBwcm9kdWl0ZTwvc3Bhbj4KICAgICAgPHA+Tm91cyBuJ2F2b25zIHBhcyBwdSBlbnZveWVyIHZvdHJlIG1lc3NhZ2UuIFMnaWwgdm91cyBwbGHDrnQgcmFmcmHDrmNoaXIgZXQgZXNzYXlleiDDoCBub3V2ZWF1LjwvcD4KICAgICAgPGRpdiBjbGFzcz0iY2xvc2UtcmV2ZWFsLW1vZGFsIj48ZW0gY2xhc3M9ImZhIGZhLXRpbWVzLWNpcmNsZSI+PC9lbT48L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0iLXB0MjAgLXJpZ2h0IGFtcENvbnNlbnRSZXNwb25zZVNlbmREaXNtaXNzIj4KICAgICAgICA8aW5wdXQgdHlwZT0iYnV0dG9uIiBjbGFzcz0iIC11cHBlcmNhc2UgYnRuLWRlZmF1bHQgIiBvbmNsaWNrPSIkKCcjZW1haWxGYWlsTWVzc2FnZScpLnRyaWdnZXIoJ3JldmVhbDpjbG9zZScpOyIgdmFsdWU9IkZlcm1lciI+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CgoKCQkJCTwhLS0gT086OmQ2NmY1ZDk0ODU5NzQyYzZhNTFmOGJhZDljMGRmYWUwIC0tPgoJCQo8IS0tIEVORCBDUkVESVQgU0NPUkUgUE9QVVAgLS0+Cgo8IS0tIENSRURJVCBTQ09SRSBDT05GSVJNIFBPUFVQIC0tPgoKPCEtLSBFTkQgQ1JFRElUIFNDT1JFIENPTkZJUk0gUE9QVVAgLS0+CgoKCgo8IS0tIEZJTkFOQ0UgTVVMVElTVEVQIFBPUFVQIG5ldyAtLT4KCQkKCQk8ZGl2IGlkPSJmaW5hbmNlTXVsdGlzdGVwUG9wdXBDb250YWluZXIiIGNsYXNzPSJyZXZlYWwtbW9kYWwgIiBzdHlsZT0id2lkdGg6MzIwcHg7aGVpZ2h0OjQ5NXB4O3BhZGRpbmc6MzBweCAxMHB4IDgwcHg7IiBkYXRhLWxhenlsb2FkaWQ9Im5ld2NhcnNfZmluYW5jZW11bHRpc3RlcHBvcHVwY29udGFpbmVyIj4KCQkJCgkJPC9kaXY+CgoJCTwhLS0gT086OmFiNDNhYWFhNDYyMGYyNWY3ZGZiZmFmZTc1OGZlMGZlIC0tPgoKCQkKCQkKPCEtLSBFTkQgbmV3IC0tPgoKPCEtLSBGSU5BTkNFIE1VTFRJU1RFUCBJTlNUQU5UIC0tPgoKPCEtLSBFTkQgRklOQU5DRSBNVUxUSVNURVAgSU5TVEFOVCAtLT4KCjwhLS0gQ1JFRElUIEJPT1NUIE1VTFRJIC0tPgoKPCEtLSBFTkQgQ1JFRElUIEJPT1NUIE1VTFRJIC0tPgoKPCEtLSBTRUNPTkQgQ0hBTkNFIFBPUFVQIG5ldyAtLT4KCjwhLS0gRU5EIG5ldyAtLT4KCjwhLS0gUkVUVVJOIFBPUFVQIG5ldyAtLT4KCjwhLS0gRU5EIG5ldyAtLT4KCjwhLS0gRVhJVCBQT1BVUCBuZXcgLS0+Cgo8IS0tIEVORCBuZXcgLS0+Cgo8IS0tIEJFU1QgUFJBQ1RJQ0UgUE9QVVAgbmV3IC0tPgoKPCEtLSBFTkQgbmV3IC0tPgogICAgICAgCQkKCQk8ZGl2IGlkPSJwYXltZW50Q2FsY3VsYXRvclBvcHVwQ29udGFpbmVyIiBjbGFzcz0icmV2ZWFsLW1vZGFsICIgc3R5bGU9IndpZHRoOjgyJTttaW4taGVpZ2h0OjczMHB4O21pbi13aWR0aDozNTBweDsiIGRhdGEtbGF6eWxvYWRpZD0ibmV3Y2Fyc19wYXltZW50Y2FsY3VsYXRvcnBvcHVwY29udGFpbmVyIj4KCQkJCgkJPC9kaXY+CgoJCTwhLS0gT086OmY0YmU1OGExMWVkOGJlNTJhMjBhMDUyYWM5OTIwNjUwIC0tPgoKCQkKCQkKICAgICAgIAogICAgICA8c2NyaXB0IGRhdGEtc2NvZGVyZWY9IjIxMTEtQiIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGFzeW5jPSJ0cnVlIj48L3NjcmlwdD4KPHNjcmlwdCBkYXRhLXNjb2RlcmVmPSIyMTExLUIiIHNyYz0iaHR0cHM6Ly9kZXNqYXJkaW5zYWN1cmEuY2EvanMvbWFwcy5qcy5waHA\/JmFtcDtsYW5nPWZyIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGFzeW5jPSJ0cnVlIj48L3NjcmlwdD4KPGlucHV0IHR5cGU9ImhpZGRlbiIgdmFsdWU9Ik5FVyIgaWQ9ImRlZmF1bHREZXBhcnRtZW50Ij4KICAgIAoJPC9kaXY+","logs":"{\"result\":\"1\",\"error\":\"\",\"sources\":\"https:\\\/\\\/desjardinsacura.ca\\\/js_r\\\/resource.loader.fr.js?v=3&js=hVPRbtswDPyhJUGzYR-wFsU2tEOAbNijwUi0zVgWPYlOln796AyWbDdFH4JYR4k8Ho-bY9wc__QYLutj_LDJJ8PcEI7gCTw5B_pl2At6eWKwGG6Fh2dxkewAET9_WoAWQiPMTqhbRE7gyJIkSi2QH78dvFwivWiJNoO5vg0PFI0DajF838_zrnpalWCEw2Vzt777uN7mwO1sUe8mDVBpuK_grcuNH2uItcDBpVsezwbCUgAtINybetX13tTTYh1cWtXzHpzpHWi91yyohdjcJlhyaEe0Qo-BzLOyTMm56zsVKyediH3emwBi6h3YEYrnctZy8kLvxfI5EbAg-EvIpTbt1hQQTVHBcsoBTwiZUOCWC3vx0JIpSnJYlImcBPXUN_8F5gj5axuLvF1AkcuuZuHtIqSvfCQh9lPRxuAwhv2ZOpwG5wbVbsQ0m17ZDhTXJXltYXK9MesSDuOJO_Q193noFXPl1C5dQkpmwfCbbIVSPKf2GKKkZq3qhGHfxh99e8gjq5Cf2MC1naQieflZU5zNeTwMG6ou300xjwd12PD3oKN79K_x-zykU4_Db-a4_9BKalxd3Tj2pcp4g0Xb6xpHwUwi-flRHT-Qj6_d27KdVE2ww-zIjMJf4jeWXvWIQh7f2BGl0ZFpwnvh7MTYoENRwQctA7vJxqfQAcvJpujbcfPJu4HLMf4D&jsrpl=&wswidth=0&device=mobile&ua=Q0NCb3QvMi4wIChodHRwczovL2NvbW1vbmNyYXdsLm9yZy9mYXEvKQ==\"}"}