{"title":"PHRpdGxlPktpYSBuZXVmcyAyMDI1LCAyMDI2ICZhbXA7IDIwMjcgw6AgTWFzY291Y2hlIHwgQUxCSSBLaWEgTWFzY291Y2hlPC90aXRsZT4=","metas":"PG1ldGEgaXRlbXByb3A9Im5hbWUiIGNvbnRlbnQ9IiAgIj48bWV0YSBpdGVtcHJvcD0iZGVzY3JpcHRpb24iIGNvbnRlbnQ9IiI+","js_inline":"CgkoKGQpID0+IHsKCQljb25zdCBjZSA9IGQuY3JlYXRlRWxlbWVudDsKCQlsZXQgdXJsQ2F0QXJyID0gewoJCQknY2xhcml2b3kuY29tJyA6ICdDMDAwMicsCgkJCSdkZWFsZXItbGVhZHMuY2EnIDogJ0MwMDAzJywKCQkJJ3JvYWRzdGVyLmNvbS9yb2Fkc3RlcicgOiAnQzAwMDInLC8vRFdQLTEyMjgxCgkJCSdmemxuay5jb20vc2lnbmFscy5qcycgOiAnQzAwMDInLC8vRFdQLTEyMjg5CgkJCSdsaXZlY2hhdGluYy5jb20vdHJhY2tpbmcuanMnIDogJ0MwMDAzJywvL0RXUC0xMjMwMwoJCQkndGhlbGl2ZWNoYXRzb2Z0d2FyZS5jb20nIDogJ0MwMDAzJywvL0RXUC0xMjI5NwoJCQknY2FuYWRhLmRpZ2l0YWwtaW50ZXJ2aWV3LmNvbScgOiAnQzAwMDMnLC8vRFdQLTEyMzAwCgkJCSdzZGsuYXV0b3ZlcmlmeS5jb20nIDogJ0MwMDAzJywvL0RXUC0xMjMwMQoJCQknYW5hbHl0aWNzLmpzJyA6ICdDMDAwMicsLy9EV1AtMTIzMDkKCQkJJ2hzLXNjcmlwdHMuY29tJyA6ICdDMDAwNCcsLy9EV1AtMTIzMjAKCQkJJ21hcmtldGluZ2F1dG9tYXRpb24uc2VydmljZXMnIDogJ0MwMDA0JywvL0RXUC0xMjMyMgoJCQknbGVhZGZveC5jbycgOiAnQzAwMDQnLAoJCQknc3RhdGljLnVwdHJhY3MuY29tJyA6ICdDMDAwMycsLy9EV1AtMTIzNTQKIAkJCSdiYXQuYmluZy5jb20nIDogJ0MwMDAyJywvL0RXUC0xMjM1NAoJCQknZ3RhZy9qcycgOiAnQzAwMDInLAoJCQknc2QuanMnIDogJ0MwMDAxJywKCQkJJ3NkYS5qcycgOiAnQzAwMDEnLAoJCQkKCQl9OwoJCWxldCB1cmxDYXRSZWdleCA9ICcoJyArIE9iamVjdC5rZXlzKHVybENhdEFycikuam9pbignfCcpLnJlcGxhY2UoL1srPy5dL2csICdcJCYnKSArICcpJzsKCQlsZXQgY3VycmVudENvbnNlbnQgPSBnZXRDb25zZW50KCk7CgkJd2luZG93LnNjcmlwdFVybEFyciA9IFtdOwoJCWQuY3JlYXRlRWxlbWVudCA9IGZ1bmN0aW9uKC4uLmFyZ3MpIHsKCQkJY29uc3QgcyA9IGNlLmJpbmQoZCkoLi4uYXJncyksIHNhID0gcy5zZXRBdHRyaWJ1dGUuYmluZChzKTsKCQkJcy5zZXRBdHRyaWJ1dGUgPSBmdW5jdGlvbihuLCB2KSB7CgkJCQlpZihuID09PSAnc3JjJyAmJiB3aW5kb3cuc2NyaXB0VXJsQXJyLmluZGV4T2Yodi50b1N0cmluZygpKSA9PSAtMSkgewoJCQkJCWlmKChuZXcgUmVnRXhwKHVybENhdFJlZ2V4KSkudGVzdCh2KSl7CgkJCQkJCWZvcihrZXkgaW4gdXJsQ2F0QXJyKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIAoJCQkJCQkJaWYgKChuZXcgUmVnRXhwKGtleSkpLnRlc3QodikpIHsKCQkJCQkJCQl3aW5kb3cuc2NyaXB0VXJsQXJyLnB1c2godi50b1N0cmluZygpKTsKCQkJCQkJCQlpZihrZXkgPT0gJ2d0YWcvanMnIHx8IGtleSA9PSAnYmF0LmJpbmcuY29tJyB8fCBrZXkgPT0gJ3NkLmpzJyB8fCBrZXkgPT0gJ3NkYS5qcycpewoJCQkJCQkJCQlzYSgnZGF0YS1vdC1pZ25vcmUnLCB0cnVlKTsKCQkJCQkJCQkJc2EoJ3R5cGUnLCAndGV4dC9qYXZhc2NyaXB0Jyk7CgkJCQkJCQkJfSBlbHNlIGlmKGN1cnJlbnRDb25zZW50ID09IG51bGwgfHwgY3VycmVudENvbnNlbnQuaW5kZXhPZih1cmxDYXRBcnJba2V5XSkgPT0gLTEpewoJCQkJCQkJCQlzYSgndHlwZScsICd0ZXh0L3BsYWluJyk7CgkJCQkJCQkJCXNhKCdjbGFzcycsICdvcHRhbm9uLWNhdGVnb3J5LScgKyB1cmxDYXRBcnJba2V5XSk7CgkJCQkJCQkJfQoJCQkJCQkJCWJyZWFrOwoJCQkJCQkJfQoJCQkJCQl9CgkJCQkJfQoJCQkJfQoJCQkJc2Eobiwgdik7CgkJCX0KCQkJcmV0dXJuIHM7CgkJfQoJCWZ1bmN0aW9uIGdldENvbnNlbnQoKXsKCQkJbGV0IG5hbWUgPSAnZDJjX2Nvb2tpZV9jb25zZW50JyArICc9JzsKCQkJbGV0IGNhID0gKCcnK2RvY3VtZW50LmNvb2tpZSkuc3BsaXQoJzsnKTsKCQkJZm9yKGxldCBpID0gMDsgaSA8IGNhLmxlbmd0aDsgaSsrKSB7CgkJCQlsZXQgYyA9IGNhW2ldOwoJCQkJYyA9IGMudHJpbSgpOwoJCQkJaWYgKGMuaW5kZXhPZihuYW1lKSA9PSAwKSB7CgkJCQkJdHJ5ewoJCQkJCQljID0gZGVjb2RlVVJJQ29tcG9uZW50KCBjICk7CgkJCQkJfSBjYXRjaCggZSApCgkJCQkJewoJCQkJCQljb25zb2xlLmxvZyggZSApOwoJCQkJCQlyZXR1cm4gbnVsbDsKCQkJCQl9CgkJCQkJcmV0dXJuIGMuc3Vic3RyaW5nKG5hbWUubGVuZ3RoLCBjLmxlbmd0aCk7CgkJCQl9CgkJCX0KCQkJcmV0dXJuIG51bGw7CgkJfQoJfSkoZG9jdW1lbnQpOwoKCWRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmdW5jdGlvbigpIHsKCS8vIExpc3RlbiBmb3IgY2hhbmdlcyB0byB0aGUgRE9NCgkJbGV0IG9ic2VydmVyID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24obXV0YXRpb25zKSB7CgkJCW11dGF0aW9ucy5mb3JFYWNoKGZ1bmN0aW9uKG11dGF0aW9uKSB7CgkJCQlpZiAobXV0YXRpb24uYWRkZWROb2RlcyAmJiBtdXRhdGlvbi5hZGRlZE5vZGVzLmxlbmd0aCA+IDApIHsKCQkJCQkvLyBDaGVjayBpZiBvdXIgc2NyaXB0IGhhcyBiZWVuIGFkZGVkIHRvIHRoZSBET00KCQkJCQlmb3IgKGxldCBpID0gMDsgaSA8IG11dGF0aW9uLmFkZGVkTm9kZXMubGVuZ3RoOyBpKyspIHsKCQkJCQkJbGV0IG5vZGUgPSBtdXRhdGlvbi5hZGRlZE5vZGVzW2ldOwoJCQkJCQlpZiAobm9kZS5ub2RlVHlwZSA9PT0gMSAmJiBub2RlLnRhZ05hbWUgPT09ICdTQ1JJUFQnICYmIG5vZGUuc3JjICYmIG5vZGUuc3JjLmluY2x1ZGVzKCdjYW5hZGEuZGlnaXRhbC1pbnRlcnZpZXcuY29tJykgJiYgdHlwZW9mIE9uZVRydXN0ICE9PSAndW5kZWZpbmVkJykgewoJCQkJCQkJc2V0VGltZW91dChmdW5jdGlvbigpewoJCQkJCQkJCXRyeXtEaWdpdGFsSW50ZXJ2aWV3LkxhdW5jaGVyLmVuYWJsZUxhdW5jaFBvaW50cygpO31jYXRjaChlKXt9CgkJCQkJCQl9LCAxMDAwKTsKCQkJCQkJfQoJCQkJCX0KCQkJCX0KCQkJfSk7CgkJfSk7CgkJLy8gU3RhcnQgb2JzZXJ2aW5nIHRoZSBkb2N1bWVudCB3aXRoIHRoZSBjb25maWd1cmVkIHBhcmFtZXRlcnMKCQlvYnNlcnZlci5vYnNlcnZlKGRvY3VtZW50LmJvZHksIHsgY2hpbGRMaXN0OiB0cnVlLCBzdWJ0cmVlOiB0cnVlIH0pOwoJCW9ic2VydmVyLm9ic2VydmUoZG9jdW1lbnQuaGVhZCwgeyBjaGlsZExpc3Q6IHRydWUsIHN1YnRyZWU6IHRydWUgfSk7Cgl9KTsKCi8qPCFbQ0RBVEFbKi8KLy9kYXRhLXNjb2RlcmVmPSJQQUYtMTg2NDU2MzY4MTE4NTEyMjg1IgooZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7dmFyIFNUT1JBR0VfS0VZPSdvbmVycm9yJyxzdG9yYWdlPVtdLGVycm9yQ29sbGVjdGlvbnM9W10scGl4ZWxBZGRyZXNzPScvZnIvYWpheC9sb2dFcnJvcj93c3dpZHRoPTAnO3ZhciBzdGFydFRpbWU9bmV3IERhdGUoKTtsb2FkU3RvcmVkRXJyb3JzKCk7dmFyIHBpeGVsRnJhZ21lbnQ9dW5kZWZpbmVkO2Z1bmN0aW9uIGdldFBpeGVsRnJhZ21lbnQoKXtpZihwaXhlbEZyYWdtZW50IT09dW5kZWZpbmVkKXJldHVybiBwaXhlbEZyYWdtZW50LmNsb25lTm9kZSh0cnVlKTt2YXIgZnJhZz1kb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7dmFyIGRpdj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtmcmFnLmFwcGVuZENoaWxkKGRpdik7cGl4ZWxGcmFnbWVudD1mcmFnLmNsb25lTm9kZSh0cnVlKTtyZXR1cm4gZnJhZzt9CmZ1bmN0aW9uIGhhc1BpeGVsKGRhdGEpe3JldHVybiEhZG9jdW1lbnQucXVlcnlTZWxlY3RvcignZGl2W2RhdGEtbGluZT0iJytkYXRhLmxpbmUrJyJdW2RhdGEtbXNnPSInK2RhdGEubXNnKyciXScpO30KZnVuY3Rpb24gY3JlYXRlUGl4ZWwoZGF0YSl7aWYoaGFzUGl4ZWwoZGF0YSkpcmV0dXJuIHRydWU7dmFyIGZyYWdtZW50PWdldFBpeGVsRnJhZ21lbnQoKTt2YXIgZGl2PWZyYWdtZW50LnF1ZXJ5U2VsZWN0b3IoJ2RpdicpO3ZhciBpbnRlcm5hbD1pc0ZpbGVJbnRlcm5hbChkYXRhLmZpbGUpPzE6MDt2YXIgb2JqPXttc2c6ZGF0YS5tc2csYWdlbnQ6bmF2aWdhdG9yLnVzZXJBZ2VudCx1cmw6d2luZG93LmxvY2F0aW9uLmhyZWYsaW50ZXJuYWw6aW50ZXJuYWwsdWlkOmdldFVJRCgpLHRvcDooKG5ldyBEYXRlKCkpLmdldFRpbWUoKS1zdGFydFRpbWUuZ2V0VGltZSgpKSxtb3VzZU92ZXI6Z2V0Q3VycmVudE1vdXNlT3ZlckVsZW1lbnQoKX07dmFyIGFkZEVsZW1lbnQ9ZnVuY3Rpb24oKXtkaXYuc2V0QXR0cmlidXRlKCdkYXRhLW1zZycsZGF0YS5tc2cpO2Rpdi5zZXRBdHRyaWJ1dGUoJ2RhdGEtbGluZScsZGF0YS5saW5lKTtkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGZyYWdtZW50KTt9O2FqYXgob2JqLGZ1bmN0aW9uKHhocil7Y29uc29sZS5sb2coIklzc3VlIHNlbmRpbmcgZXJyb3IsIHN0YXR1czogIit4aHIuc3RhdHVzKyIgZXJyb3I6ICIreGhyLnJlc3BvbnNlVGV4dCk7YWRkRWxlbWVudCgpO30sZnVuY3Rpb24oeGhyKXthZGRFbGVtZW50KCk7Y29uc29sZS5sb2coeGhyKTt9KTt9CmZ1bmN0aW9uIGFqYXgoZGF0YSxlcnJvcixzdWNjZXNzKXt2YXIgeGhyPW5ldyBYTUxIdHRwUmVxdWVzdCgpO3hoci5vcGVuKCdQT1NUJyxwaXhlbEFkZHJlc3MsdHJ1ZSk7eGhyLnNldFJlcXVlc3RIZWFkZXIoJ0NvbnRlbnQtVHlwZScsJ2FwcGxpY2F0aW9uL2pzb247Y2hhcnNldD1VVEYtOCcpO3hoci5vbnJlYWR5c3RhdGVjaGFuZ2U9ZnVuY3Rpb24oKXtpZih4aHIucmVhZHlTdGF0ZT09PTQpe2lmKHhoci5zdGF0dXM9PT0yMDApe3N1Y2Nlc3MoeGhyKTt9ZWxzZXtlcnJvcih4aHIpO319fTt4aHIuc2VuZChKU09OLnN0cmluZ2lmeShkYXRhKSk7fQpmdW5jdGlvbiBnZXRDdXJyZW50TW91c2VPdmVyRWxlbWVudCgpe3ZhciBob3Zlcj1kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCc6aG92ZXInKTtpZihob3Zlcj09PXVuZGVmaW5lZHx8aG92ZXIubGVuZ3RoPT09MCl7cmV0dXJuJ25vbmUnO30KaG92ZXI9aG92ZXJbaG92ZXIubGVuZ3RoLTFdLmNsb25lTm9kZSgpO3JldHVybiBob3Zlci5vdXRlckhUTUw7fQpmdW5jdGlvbiBpc0ZpbGVJbnRlcm5hbChmaWxlKXtyZXR1cm4oZmlsZS5pbmRleE9mKHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSk+LTEpO30KZnVuY3Rpb24gZ2V0VUlEKCl7aWYodHlwZW9mIGFjdGl2ZVVzZXJQcm9maWxlTW5nIT09J3VuZGVmaW5lZCcpe3JldHVybiBhY3RpdmVVc2VyUHJvZmlsZU1uZy51aWQ7fQpyZXR1cm4nJzt9CmZ1bmN0aW9uIGxvYWRTdG9yZWRFcnJvcnMoKXtpZih0eXBlb2Ygc2Vzc2lvblN0b3JhZ2UhPT0ndW5kZWZpbmVkJyl7aWYoc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShTVE9SQUdFX0tFWSkpe3N0b3JhZ2U9SlNPTi5wYXJzZShzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKFNUT1JBR0VfS0VZKSk7fX0KcmV0dXJuIHN0b3JhZ2U7fQpmdW5jdGlvbiBoYXNTZXNzaW9uRXJyb3JTaG93bihtc2cpe2xvYWRTdG9yZWRFcnJvcnMoKTtyZXR1cm4gaGFzRXJyb3JTaG93bihtc2cpO30KZnVuY3Rpb24gaGFzRXJyb3JTaG93bihtc2cpe2lmKHN0b3JhZ2U9PT11bmRlZmluZWQpcmV0dXJuIGZhbHNlO2Zvcih2YXIgaT0wO2k8c3RvcmFnZS5sZW5ndGg7aSsrKXtpZihzdG9yYWdlW2ldPT09bXNnKXtyZXR1cm4gdHJ1ZTt9fQpyZXR1cm4gZmFsc2U7fQppZih3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUuaW5kZXhPZignY3VzdG9tLXBhZ2UtcHJldmlldy5odG1sJyk9PT0tMSl7d2luZG93Lm9uZXJyb3I9ZnVuY3Rpb24obXNnLGZpbGUsbGluZSxjb2wsZXJyb3Ipe2NvbnNvbGUubG9nKCdvbmVycm9yIHJhaXNlZCEnKTtpZighaGFzU2Vzc2lvbkVycm9yU2hvd24obXNnKSl7ZXJyb3JDb2xsZWN0aW9ucy5wdXNoKHttc2c6bXNnLGxpbmU6bGluZSxmaWxlOmZpbGV9KTtzdG9yYWdlLnB1c2gobXNnKTtpZihzZXNzaW9uU3RvcmFnZSE9PXVuZGVmaW5lZCl7c2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbShTVE9SQUdFX0tFWSxKU09OLnN0cmluZ2lmeShzdG9yYWdlKSk7fX0KaWYoZG9jdW1lbnRbJ2JvZHknXSE9PW51bGwmJmRvY3VtZW50Wydib2R5J10hPT11bmRlZmluZWQpe2FkZFBpeGVsc1RvRG9tKCk7fQppZignbGl2ZSc9PSdsaXZlJyYmJ1VTJz09J0NBJyl7Z3RhZygnZXZlbnQnLCdleGNlcHRpb24nLHsnc2VuZF90byc6J0ctWjVROFo1QzdLRicsJ2Rlc2NyaXB0aW9uJzptc2csJ2ZhdGFsJzp0cnVlfSk7fX07fQppZigvV2ViS2l0L2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSl7dmFyIF90aW1lcj1zZXRJbnRlcnZhbChmdW5jdGlvbigpe2lmKC9sb2FkZWR8Y29tcGxldGUvLnRlc3QoZG9jdW1lbnQucmVhZHlTdGF0ZSkpe2NsZWFySW50ZXJ2YWwoX3RpbWVyKTtvbmxvYWQoKTt9fSwxMCk7fQovKkBjY19vbiBAKi8KLypAaWYgKEBfd2luMzIpCgkJCQlkb2N1bWVudC53cml0ZSgiPCIrInNjcmlwdCBpZD1fX2llX29ubG9hZCBkZWZlciBzcmM9amF2YXNjcmlwdDp2b2lkKDApPjxcL3NjcmlwdD4iKTsKCQkJCXZhciBzY3JpcHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiX19pZV9vbmxvYWQiKTsKCQkJCXNjcmlwdC5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbigpIHsKCQkJCSAgaWYgKHRoaXMucmVhZHlTdGF0ZSA9PSAiY29tcGxldGUiKSB7CgkJCQkJb25sb2FkKCk7IC8vIGNhbGwgdGhlIG9ubG9hZCBoYW5kbGVyCgkJCQkgIH0KCQkJCX07CgkJCS8qQGVuZCBAKi8KZnVuY3Rpb24gYWRkUGl4ZWxzVG9Eb20oKXtmb3IodmFyIGk9MDtpPGVycm9yQ29sbGVjdGlvbnMubGVuZ3RoO2krKyl7Y29uc29sZS5sb2coJ2NyZWF0ZVBpeGVsJyxlcnJvckNvbGxlY3Rpb25zW2ldKTt9fQpmdW5jdGlvbiBvbmxvYWQoKXthZGRQaXhlbHNUb0RvbSgpO30KZnVuY3Rpb24gX2NyZWF0ZVNjcmlwdCh0ZXh0KXt2YXIgcz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTtzLmFwcGVuZCh0ZXh0KTtyZXR1cm4gczt9CndpbmRvdy5lcnJvclRlc3RzPXtzeW50YXg6ZnVuY3Rpb24oKXt2YXIgc2NyaXB0PV9jcmVhdGVTY3JpcHQoJ30nKTtkb2N1bWVudC5ib2R5LmFwcGVuZChzY3JpcHQpO30sb2ZOdWxsOmZ1bmN0aW9uKCl7dmFyIHRleHQ9J3ZhciBhID0gbnVsbDsgdmFyIGIgPSBhLndoYXQ7Jzt2YXIgc2NyaXB0PV9jcmVhdGVTY3JpcHQodGV4dCk7ZG9jdW1lbnQuYm9keS5hcHBlbmQoc2NyaXB0KTt9LGludmFsaWRBc3NpZ25tZW50OmZ1bmN0aW9uKCl7dmFyIHNjcmlwdD1fY3JlYXRlU2NyaXB0KCcxID0gZnVuYygpOycpO2RvY3VtZW50LmJvZHkuYXBwZW5kKHNjcmlwdCk7fX07d2luZG93LnRyYWNrQ29udmVyc2lvbj1mdW5jdGlvbigpe2lmKHR5cGVvZiBndGFnPT0ndW5kZWZpbmVkJylyZXR1cm4tMTtpZighd2luZG93LmQyY19hd2NJZHx8IXdpbmRvdy5kMmNfYXdjTGFiZWwpcmV0dXJuLTM7aWYoZGVwbG95bWVudFR5cGUudG9Mb3dlckNhc2UoKT09J2xpdmUnJiYnVVMnPT0nQ0EnKXtndGFnKCdldmVudCcsJ2NvbnZlcnNpb24nLHsnc2VuZF90byc6ZDJjX2F3Y0lkKycvJytkMmNfYXdjTGFiZWx9KTt9ZWxzZXtjb25zb2xlLmxvZygiZ3RhZygnZXZlbnQnLCdjb252ZXJzaW9uJywgeyAnc2VuZF90byc6ICIrZDJjX2F3Y0lkKycvJytkMmNfYXdjTGFiZWwrIiB9KTsiKTt9fX0pKCk7Ci8qXV0+Ki8KCi8qPCFbQ0RBVEFbKi8KLy9kYXRhLXNjb2RlcmVmPSJQQUYtMTg2NDU2MzY4MTE4NTEyMjg1IgooZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7dmFyIFNUT1JBR0VfS0VZPSdvbmVycm9yJyxzdG9yYWdlPVtdLGVycm9yQ29sbGVjdGlvbnM9W10scGl4ZWxBZGRyZXNzPScvZnIvYWpheC9sb2dFcnJvcj93c3dpZHRoPTAnO3ZhciBzdGFydFRpbWU9bmV3IERhdGUoKTtsb2FkU3RvcmVkRXJyb3JzKCk7dmFyIHBpeGVsRnJhZ21lbnQ9dW5kZWZpbmVkO2Z1bmN0aW9uIGdldFBpeGVsRnJhZ21lbnQoKXtpZihwaXhlbEZyYWdtZW50IT09dW5kZWZpbmVkKXJldHVybiBwaXhlbEZyYWdtZW50LmNsb25lTm9kZSh0cnVlKTt2YXIgZnJhZz1kb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7dmFyIGRpdj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtmcmFnLmFwcGVuZENoaWxkKGRpdik7cGl4ZWxGcmFnbWVudD1mcmFnLmNsb25lTm9kZSh0cnVlKTtyZXR1cm4gZnJhZzt9CmZ1bmN0aW9uIGhhc1BpeGVsKGRhdGEpe3JldHVybiEhZG9jdW1lbnQucXVlcnlTZWxlY3RvcignZGl2W2RhdGEtbGluZT0iJytkYXRhLmxpbmUrJyJdW2RhdGEtbXNnPSInK2RhdGEubXNnKyciXScpO30KZnVuY3Rpb24gY3JlYXRlUGl4ZWwoZGF0YSl7aWYoaGFzUGl4ZWwoZGF0YSkpcmV0dXJuIHRydWU7dmFyIGZyYWdtZW50PWdldFBpeGVsRnJhZ21lbnQoKTt2YXIgZGl2PWZyYWdtZW50LnF1ZXJ5U2VsZWN0b3IoJ2RpdicpO3ZhciBpbnRlcm5hbD1pc0ZpbGVJbnRlcm5hbChkYXRhLmZpbGUpPzE6MDt2YXIgb2JqPXttc2c6ZGF0YS5tc2csYWdlbnQ6bmF2aWdhdG9yLnVzZXJBZ2VudCx1cmw6d2luZG93LmxvY2F0aW9uLmhyZWYsaW50ZXJuYWw6aW50ZXJuYWwsdWlkOmdldFVJRCgpLHRvcDooKG5ldyBEYXRlKCkpLmdldFRpbWUoKS1zdGFydFRpbWUuZ2V0VGltZSgpKSxtb3VzZU92ZXI6Z2V0Q3VycmVudE1vdXNlT3ZlckVsZW1lbnQoKX07dmFyIGFkZEVsZW1lbnQ9ZnVuY3Rpb24oKXtkaXYuc2V0QXR0cmlidXRlKCdkYXRhLW1zZycsZGF0YS5tc2cpO2Rpdi5zZXRBdHRyaWJ1dGUoJ2RhdGEtbGluZScsZGF0YS5saW5lKTtkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGZyYWdtZW50KTt9O2FqYXgob2JqLGZ1bmN0aW9uKHhocil7Y29uc29sZS5sb2coIklzc3VlIHNlbmRpbmcgZXJyb3IsIHN0YXR1czogIit4aHIuc3RhdHVzKyIgZXJyb3I6ICIreGhyLnJlc3BvbnNlVGV4dCk7YWRkRWxlbWVudCgpO30sZnVuY3Rpb24oeGhyKXthZGRFbGVtZW50KCk7Y29uc29sZS5sb2coeGhyKTt9KTt9CmZ1bmN0aW9uIGFqYXgoZGF0YSxlcnJvcixzdWNjZXNzKXt2YXIgeGhyPW5ldyBYTUxIdHRwUmVxdWVzdCgpO3hoci5vcGVuKCdQT1NUJyxwaXhlbEFkZHJlc3MsdHJ1ZSk7eGhyLnNldFJlcXVlc3RIZWFkZXIoJ0NvbnRlbnQtVHlwZScsJ2FwcGxpY2F0aW9uL2pzb247Y2hhcnNldD1VVEYtOCcpO3hoci5vbnJlYWR5c3RhdGVjaGFuZ2U9ZnVuY3Rpb24oKXtpZih4aHIucmVhZHlTdGF0ZT09PTQpe2lmKHhoci5zdGF0dXM9PT0yMDApe3N1Y2Nlc3MoeGhyKTt9ZWxzZXtlcnJvcih4aHIpO319fTt4aHIuc2VuZChKU09OLnN0cmluZ2lmeShkYXRhKSk7fQpmdW5jdGlvbiBnZXRDdXJyZW50TW91c2VPdmVyRWxlbWVudCgpe3ZhciBob3Zlcj1kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCc6aG92ZXInKTtpZihob3Zlcj09PXVuZGVmaW5lZHx8aG92ZXIubGVuZ3RoPT09MCl7cmV0dXJuJ25vbmUnO30KaG92ZXI9aG92ZXJbaG92ZXIubGVuZ3RoLTFdLmNsb25lTm9kZSgpO3JldHVybiBob3Zlci5vdXRlckhUTUw7fQpmdW5jdGlvbiBpc0ZpbGVJbnRlcm5hbChmaWxlKXtyZXR1cm4oZmlsZS5pbmRleE9mKHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSk+LTEpO30KZnVuY3Rpb24gZ2V0VUlEKCl7aWYodHlwZW9mIGFjdGl2ZVVzZXJQcm9maWxlTW5nIT09J3VuZGVmaW5lZCcpe3JldHVybiBhY3RpdmVVc2VyUHJvZmlsZU1uZy51aWQ7fQpyZXR1cm4nJzt9CmZ1bmN0aW9uIGxvYWRTdG9yZWRFcnJvcnMoKXtpZih0eXBlb2Ygc2Vzc2lvblN0b3JhZ2UhPT0ndW5kZWZpbmVkJyl7aWYoc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShTVE9SQUdFX0tFWSkpe3N0b3JhZ2U9SlNPTi5wYXJzZShzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKFNUT1JBR0VfS0VZKSk7fX0KcmV0dXJuIHN0b3JhZ2U7fQpmdW5jdGlvbiBoYXNTZXNzaW9uRXJyb3JTaG93bihtc2cpe2xvYWRTdG9yZWRFcnJvcnMoKTtyZXR1cm4gaGFzRXJyb3JTaG93bihtc2cpO30KZnVuY3Rpb24gaGFzRXJyb3JTaG93bihtc2cpe2lmKHN0b3JhZ2U9PT11bmRlZmluZWQpcmV0dXJuIGZhbHNlO2Zvcih2YXIgaT0wO2k8c3RvcmFnZS5sZW5ndGg7aSsrKXtpZihzdG9yYWdlW2ldPT09bXNnKXtyZXR1cm4gdHJ1ZTt9fQpyZXR1cm4gZmFsc2U7fQppZih3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUuaW5kZXhPZignY3VzdG9tLXBhZ2UtcHJldmlldy5odG1sJyk9PT0tMSl7d2luZG93Lm9uZXJyb3I9ZnVuY3Rpb24obXNnLGZpbGUsbGluZSxjb2wsZXJyb3Ipe2NvbnNvbGUubG9nKCdvbmVycm9yIHJhaXNlZCEnKTtpZighaGFzU2Vzc2lvbkVycm9yU2hvd24obXNnKSl7ZXJyb3JDb2xsZWN0aW9ucy5wdXNoKHttc2c6bXNnLGxpbmU6bGluZSxmaWxlOmZpbGV9KTtzdG9yYWdlLnB1c2gobXNnKTtpZihzZXNzaW9uU3RvcmFnZSE9PXVuZGVmaW5lZCl7c2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbShTVE9SQUdFX0tFWSxKU09OLnN0cmluZ2lmeShzdG9yYWdlKSk7fX0KaWYoZG9jdW1lbnRbJ2JvZHknXSE9PW51bGwmJmRvY3VtZW50Wydib2R5J10hPT11bmRlZmluZWQpe2FkZFBpeGVsc1RvRG9tKCk7fQppZignbGl2ZSc9PSdsaXZlJyYmJ1VTJz09J0NBJyl7Z3RhZygnZXZlbnQnLCdleGNlcHRpb24nLHsnc2VuZF90byc6J0ctWjVROFo1QzdLRicsJ2Rlc2NyaXB0aW9uJzptc2csJ2ZhdGFsJzp0cnVlfSk7fX07fQppZigvV2ViS2l0L2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSl7dmFyIF90aW1lcj1zZXRJbnRlcnZhbChmdW5jdGlvbigpe2lmKC9sb2FkZWR8Y29tcGxldGUvLnRlc3QoZG9jdW1lbnQucmVhZHlTdGF0ZSkpe2NsZWFySW50ZXJ2YWwoX3RpbWVyKTtvbmxvYWQoKTt9fSwxMCk7fQovKkBjY19vbiBAKi8KLypAaWYgKEBfd2luMzIpCgkJCQlkb2N1bWVudC53cml0ZSgiPCIrInNjcmlwdCBpZD1fX2llX29ubG9hZCBkZWZlciBzcmM9amF2YXNjcmlwdDp2b2lkKDApPjxcL3NjcmlwdD4iKTsKCQkJCXZhciBzY3JpcHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiX19pZV9vbmxvYWQiKTsKCQkJCXNjcmlwdC5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbigpIHsKCQkJCSAgaWYgKHRoaXMucmVhZHlTdGF0ZSA9PSAiY29tcGxldGUiKSB7CgkJCQkJb25sb2FkKCk7IC8vIGNhbGwgdGhlIG9ubG9hZCBoYW5kbGVyCgkJCQkgIH0KCQkJCX07CgkJCS8qQGVuZCBAKi8KZnVuY3Rpb24gYWRkUGl4ZWxzVG9Eb20oKXtmb3IodmFyIGk9MDtpPGVycm9yQ29sbGVjdGlvbnMubGVuZ3RoO2krKyl7Y29uc29sZS5sb2coJ2NyZWF0ZVBpeGVsJyxlcnJvckNvbGxlY3Rpb25zW2ldKTt9fQpmdW5jdGlvbiBvbmxvYWQoKXthZGRQaXhlbHNUb0RvbSgpO30KZnVuY3Rpb24gX2NyZWF0ZVNjcmlwdCh0ZXh0KXt2YXIgcz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTtzLmFwcGVuZCh0ZXh0KTtyZXR1cm4gczt9CndpbmRvdy5lcnJvclRlc3RzPXtzeW50YXg6ZnVuY3Rpb24oKXt2YXIgc2NyaXB0PV9jcmVhdGVTY3JpcHQoJ30nKTtkb2N1bWVudC5ib2R5LmFwcGVuZChzY3JpcHQpO30sb2ZOdWxsOmZ1bmN0aW9uKCl7dmFyIHRleHQ9J3ZhciBhID0gbnVsbDsgdmFyIGIgPSBhLndoYXQ7Jzt2YXIgc2NyaXB0PV9jcmVhdGVTY3JpcHQodGV4dCk7ZG9jdW1lbnQuYm9keS5hcHBlbmQoc2NyaXB0KTt9LGludmFsaWRBc3NpZ25tZW50OmZ1bmN0aW9uKCl7dmFyIHNjcmlwdD1fY3JlYXRlU2NyaXB0KCcxID0gZnVuYygpOycpO2RvY3VtZW50LmJvZHkuYXBwZW5kKHNjcmlwdCk7fX07d2luZG93LnRyYWNrQ29udmVyc2lvbj1mdW5jdGlvbigpe2lmKHR5cGVvZiBndGFnPT0ndW5kZWZpbmVkJylyZXR1cm4tMTtpZighd2luZG93LmQyY19hd2NJZHx8IXdpbmRvdy5kMmNfYXdjTGFiZWwpcmV0dXJuLTM7aWYoZGVwbG95bWVudFR5cGUudG9Mb3dlckNhc2UoKT09J2xpdmUnJiYnVVMnPT0nQ0EnKXtndGFnKCdldmVudCcsJ2NvbnZlcnNpb24nLHsnc2VuZF90byc6ZDJjX2F3Y0lkKycvJytkMmNfYXdjTGFiZWx9KTt9ZWxzZXtjb25zb2xlLmxvZygiZ3RhZygnZXZlbnQnLCdjb252ZXJzaW9uJywgeyAnc2VuZF90byc6ICIrZDJjX2F3Y0lkKycvJytkMmNfYXdjTGFiZWwrIiB9KTsiKTt9fX0pKCk7Ci8qXV0+Ki8KCgkoKGQpID0+IHsKCQljb25zdCBjZSA9IGQuY3JlYXRlRWxlbWVudDsKCQlsZXQgdXJsQ2F0QXJyID0gewoJCQknY2xhcml2b3kuY29tJyA6ICdDMDAwMicsCgkJCSdkZWFsZXItbGVhZHMuY2EnIDogJ0MwMDAzJywKCQkJJ3JvYWRzdGVyLmNvbS9yb2Fkc3RlcicgOiAnQzAwMDInLC8vRFdQLTEyMjgxCgkJCSdmemxuay5jb20vc2lnbmFscy5qcycgOiAnQzAwMDInLC8vRFdQLTEyMjg5CgkJCSdsaXZlY2hhdGluYy5jb20vdHJhY2tpbmcuanMnIDogJ0MwMDAzJywvL0RXUC0xMjMwMwoJCQkndGhlbGl2ZWNoYXRzb2Z0d2FyZS5jb20nIDogJ0MwMDAzJywvL0RXUC0xMjI5NwoJCQknY2FuYWRhLmRpZ2l0YWwtaW50ZXJ2aWV3LmNvbScgOiAnQzAwMDMnLC8vRFdQLTEyMzAwCgkJCSdzZGsuYXV0b3ZlcmlmeS5jb20nIDogJ0MwMDAzJywvL0RXUC0xMjMwMQoJCQknYW5hbHl0aWNzLmpzJyA6ICdDMDAwMicsLy9EV1AtMTIzMDkKCQkJJ2hzLXNjcmlwdHMuY29tJyA6ICdDMDAwNCcsLy9EV1AtMTIzMjAKCQkJJ21hcmtldGluZ2F1dG9tYXRpb24uc2VydmljZXMnIDogJ0MwMDA0JywvL0RXUC0xMjMyMgoJCQknbGVhZGZveC5jbycgOiAnQzAwMDQnLAoJCQknc3RhdGljLnVwdHJhY3MuY29tJyA6ICdDMDAwMycsLy9EV1AtMTIzNTQKIAkJCSdiYXQuYmluZy5jb20nIDogJ0MwMDAyJywvL0RXUC0xMjM1NAoJCQknZ3RhZy9qcycgOiAnQzAwMDInLAoJCQknc2QuanMnIDogJ0MwMDAxJywKCQkJJ3NkYS5qcycgOiAnQzAwMDEnLAoJCQkKCQl9OwoJCWxldCB1cmxDYXRSZWdleCA9ICcoJyArIE9iamVjdC5rZXlzKHVybENhdEFycikuam9pbignfCcpLnJlcGxhY2UoL1srPy5dL2csICdcJCYnKSArICcpJzsKCQlsZXQgY3VycmVudENvbnNlbnQgPSBnZXRDb25zZW50KCk7CgkJd2luZG93LnNjcmlwdFVybEFyciA9IFtdOwoJCWQuY3JlYXRlRWxlbWVudCA9IGZ1bmN0aW9uKC4uLmFyZ3MpIHsKCQkJY29uc3QgcyA9IGNlLmJpbmQoZCkoLi4uYXJncyksIHNhID0gcy5zZXRBdHRyaWJ1dGUuYmluZChzKTsKCQkJcy5zZXRBdHRyaWJ1dGUgPSBmdW5jdGlvbihuLCB2KSB7CgkJCQlpZihuID09PSAnc3JjJyAmJiB3aW5kb3cuc2NyaXB0VXJsQXJyLmluZGV4T2Yodi50b1N0cmluZygpKSA9PSAtMSkgewoJCQkJCWlmKChuZXcgUmVnRXhwKHVybENhdFJlZ2V4KSkudGVzdCh2KSl7CgkJCQkJCWZvcihrZXkgaW4gdXJsQ2F0QXJyKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIAoJCQkJCQkJaWYgKChuZXcgUmVnRXhwKGtleSkpLnRlc3QodikpIHsKCQkJCQkJCQl3aW5kb3cuc2NyaXB0VXJsQXJyLnB1c2godi50b1N0cmluZygpKTsKCQkJCQkJCQlpZihrZXkgPT0gJ2d0YWcvanMnIHx8IGtleSA9PSAnYmF0LmJpbmcuY29tJyB8fCBrZXkgPT0gJ3NkLmpzJyB8fCBrZXkgPT0gJ3NkYS5qcycpewoJCQkJCQkJCQlzYSgnZGF0YS1vdC1pZ25vcmUnLCB0cnVlKTsKCQkJCQkJCQkJc2EoJ3R5cGUnLCAndGV4dC9qYXZhc2NyaXB0Jyk7CgkJCQkJCQkJfSBlbHNlIGlmKGN1cnJlbnRDb25zZW50ID09IG51bGwgfHwgY3VycmVudENvbnNlbnQuaW5kZXhPZih1cmxDYXRBcnJba2V5XSkgPT0gLTEpewoJCQkJCQkJCQlzYSgndHlwZScsICd0ZXh0L3BsYWluJyk7CgkJCQkJCQkJCXNhKCdjbGFzcycsICdvcHRhbm9uLWNhdGVnb3J5LScgKyB1cmxDYXRBcnJba2V5XSk7CgkJCQkJCQkJfQoJCQkJCQkJCWJyZWFrOwoJCQkJCQkJfQoJCQkJCQl9CgkJCQkJfQoJCQkJfQoJCQkJc2Eobiwgdik7CgkJCX0KCQkJcmV0dXJuIHM7CgkJfQoJCWZ1bmN0aW9uIGdldENvbnNlbnQoKXsKCQkJbGV0IG5hbWUgPSAnZDJjX2Nvb2tpZV9jb25zZW50JyArICc9JzsKCQkJbGV0IGNhID0gKCcnK2RvY3VtZW50LmNvb2tpZSkuc3BsaXQoJzsnKTsKCQkJZm9yKGxldCBpID0gMDsgaSA8IGNhLmxlbmd0aDsgaSsrKSB7CgkJCQlsZXQgYyA9IGNhW2ldOwoJCQkJYyA9IGMudHJpbSgpOwoJCQkJaWYgKGMuaW5kZXhPZihuYW1lKSA9PSAwKSB7CgkJCQkJdHJ5ewoJCQkJCQljID0gZGVjb2RlVVJJQ29tcG9uZW50KCBjICk7CgkJCQkJfSBjYXRjaCggZSApCgkJCQkJewoJCQkJCQljb25zb2xlLmxvZyggZSApOwoJCQkJCQlyZXR1cm4gbnVsbDsKCQkJCQl9CgkJCQkJcmV0dXJuIGMuc3Vic3RyaW5nKG5hbWUubGVuZ3RoLCBjLmxlbmd0aCk7CgkJCQl9CgkJCX0KCQkJcmV0dXJuIG51bGw7CgkJfQoJfSkoZG9jdW1lbnQpOwoKCWRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmdW5jdGlvbigpIHsKCS8vIExpc3RlbiBmb3IgY2hhbmdlcyB0byB0aGUgRE9NCgkJbGV0IG9ic2VydmVyID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24obXV0YXRpb25zKSB7CgkJCW11dGF0aW9ucy5mb3JFYWNoKGZ1bmN0aW9uKG11dGF0aW9uKSB7CgkJCQlpZiAobXV0YXRpb24uYWRkZWROb2RlcyAmJiBtdXRhdGlvbi5hZGRlZE5vZGVzLmxlbmd0aCA+IDApIHsKCQkJCQkvLyBDaGVjayBpZiBvdXIgc2NyaXB0IGhhcyBiZWVuIGFkZGVkIHRvIHRoZSBET00KCQkJCQlmb3IgKGxldCBpID0gMDsgaSA8IG11dGF0aW9uLmFkZGVkTm9kZXMubGVuZ3RoOyBpKyspIHsKCQkJCQkJbGV0IG5vZGUgPSBtdXRhdGlvbi5hZGRlZE5vZGVzW2ldOwoJCQkJCQlpZiAobm9kZS5ub2RlVHlwZSA9PT0gMSAmJiBub2RlLnRhZ05hbWUgPT09ICdTQ1JJUFQnICYmIG5vZGUuc3JjICYmIG5vZGUuc3JjLmluY2x1ZGVzKCdjYW5hZGEuZGlnaXRhbC1pbnRlcnZpZXcuY29tJykgJiYgdHlwZW9mIE9uZVRydXN0ICE9PSAndW5kZWZpbmVkJykgewoJCQkJCQkJc2V0VGltZW91dChmdW5jdGlvbigpewoJCQkJCQkJCXRyeXtEaWdpdGFsSW50ZXJ2aWV3LkxhdW5jaGVyLmVuYWJsZUxhdW5jaFBvaW50cygpO31jYXRjaChlKXt9CgkJCQkJCQl9LCAxMDAwKTsKCQkJCQkJfQoJCQkJCX0KCQkJCX0KCQkJfSk7CgkJfSk7CgkJLy8gU3RhcnQgb2JzZXJ2aW5nIHRoZSBkb2N1bWVudCB3aXRoIHRoZSBjb25maWd1cmVkIHBhcmFtZXRlcnMKCQlvYnNlcnZlci5vYnNlcnZlKGRvY3VtZW50LmJvZHksIHsgY2hpbGRMaXN0OiB0cnVlLCBzdWJ0cmVlOiB0cnVlIH0pOwoJCW9ic2VydmVyLm9ic2VydmUoZG9jdW1lbnQuaGVhZCwgeyBjaGlsZExpc3Q6IHRydWUsIHN1YnRyZWU6IHRydWUgfSk7Cgl9KTsKCi8qPCFbQ0RBVEFbKi8KLy9kYXRhLXNjb2RlcmVmPSJaWlotNDE1NTY0OCIKdmFyIGN1cnJlbnRTaXRlSUQ9MTIyNTt2YXIgZDJjX2dhQWNjb3VudHM9eyJhbGwiOltdLCJpbnRlcm5hbCI6W119O3ZhciBkMmNfYXdjSWQ9J0FXLTk3MDkxMTIzMic7dmFyIGQyY19hd2NMYWJlbD0nRHlyY0NPeXVuMjBRZ056N3pnTSc7dmFyIGxlZ2FjeV9nYT1mYWxzZTt3aW5kb3cuZGF0YUxheWVyPXdpbmRvdy5kYXRhTGF5ZXJ8fFtdO2Z1bmN0aW9uIGd0YWcoKXtkYXRhTGF5ZXIucHVzaChhcmd1bWVudHMpO30KZ3RhZygnanMnLG5ldyBEYXRlKCkpO2QyY19nYUFjY291bnRzLmFsbC5wdXNoKCdHLVo1UThaNUM3S0YnKTtkMmNfZ2FBY2NvdW50cy5hbGwucHVzaCgnRy1YMVNMN1NFOTlQJyk7aWYoZDJjX2F3Y0lkKXtkMmNfZ2FBY2NvdW50cy5hbGwucHVzaChkMmNfYXdjSWQpO30KKGQyY19nYUFjY291bnRzLmFsbHx8W10pLm1hcChmdW5jdGlvbihpZCl7Z3RhZygnY29uZmlnJyxpZCx7J3NlbmRfcGFnZV92aWV3JzpmYWxzZSwnbGlua2VyJzp7J2RvbWFpbnMnOkpTT04ucGFyc2UoYXRvYigiV3lKb2RIUndjenBjTDF3dmMyaHZjQzVoYkdKcGEybGhMbU52YlNKZCIpKSwnY29va2llX2RvbWFpbic6J3d3dy5hbGJpa2lhLmNvbSd9fSk7fSk7Ci8qXV0+Ki8KCi8qPCFbQ0RBVEFbKi8KLy9kYXRhLXNjb2RlcmVmPSJGTFQtMTU2NjQ1ODg5OTY0NTM0MTE1Mzg2Igp2YXIgZG9jUmVhZHlBcnI9W107dmFyIHBhZ2U9Ik5FV0NBUlMiO3ZhciBmYkNoYXRSZWY9e307dmFyIGRlcGxveW1lbnRUeXBlPSdsaXZlJzt2YXIgY3VycmVudFNpdGVJRD0xMjI1O3ZhciBjdXJyZW50RGVhbGVySUQ9MzMzMDt2YXIgZ2FUeXBlPSdndGFnJzt2YXIgYWxsQ2FtcGFpZ25zPVtbImFsYmlraWEuY29tIiwiQ291cnJpZWxzLXJlbGFuY2UiLCJUb3V0ZXMiLCIxMTk2NyJdLFsiYWxiaWtpYS5jb20iLCJDb3VycmllbHMtcmVsYW5jZSIsIk5ldWZzIiwiMTE5NjgiXSxbImFsYmlraWEuY29tIiwiQ291cnJpZWxzLXJlbGFuY2UiLCJPY2Nhc2lvbiIsIjExOTY5Il0sWyJhbGJpa2lhLmNvbSIsIlNFTSIsIkFnZW5jeSIsIjExOTcxIl0sWyJhbGJpa2lhLmNvbSIsIlRyYWRlciIsIlJldGFyZ2V0aW5nIiwiMTE5NzQiXSxbImFsYmlraWEuY29tIiwiQmluZyIsIkJpbmciLCIxMTk3NyJdXQp2YXIgcmV0YXJnZXRpbmdDYW1wYWlnbnM9W10KdmFyIEFJQ3VycmVudENvbmZpZ0lEPTA7dmFyIEFJSURQZXJOZXdDYXJzRnJlbmNoPW5ldyBBcnJheSgpO3ZhciBBSUlEUGVyTmV3Q2Fyc0VuZ2xpc2g9bmV3IEFycmF5KCk7ZnVuY3Rpb24gcGFyc2VRdWVyeShzdHIpe2lmKHN0ci5sZW5ndGg8MSlyZXR1cm57fQp2YXIgdmFycz17fSx2O3ZhciBxcz1zdHIuc3BsaXQoJyYnKTtmb3IodmFyIGk9MDtpPHFzLmxlbmd0aDtpKyspe3Y9ZXhwbG9kZShxc1tpXSwnPScsMSk7dmFyc1t2WzBdXT12WzFdO30KcmV0dXJuIHZhcnM7fQpmdW5jdGlvbiBkZWNvZGVTdHJpbmcoc3RyaW5nLHRpbWVzKXtpZih0aW1lcz09IiJ8fHRpbWVzPT0idW5kZWZpbmVkIil7dGltZXM9MTt9CmZvcihpPTA7aTx0aW1lcztpKyspe3N0cmluZz1kZWNvZGVVUklDb21wb25lbnQoc3RyaW5nKTt9CnJldHVybiBzdHJpbmc7fQpmdW5jdGlvbiBkZWNvZGVIVE1MKGVuY29kZWQpe2lmKHR5cGVvZiBlbmNvZGVkIT09J3N0cmluZycpcmV0dXJuIGVuY29kZWQ7dmFyIGVsPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RleHRhcmVhJyk7ZWwuaW5uZXJIVE1MPWVuY29kZWQ7cmV0dXJuIGVsLnZhbHVlO30KZnVuY3Rpb24gZXhwbG9kZShzdHIsc2VwYXJhdG9yLGxpbWl0KXtzdHI9c3RyLnNwbGl0KHNlcGFyYXRvcik7aWYoc3RyLmxlbmd0aDw9bGltaXQpcmV0dXJuIHN0cjt2YXIgcmV0PXN0ci5zcGxpY2UoMCxsaW1pdCk7cmV0LnB1c2goc3RyLmpvaW4oc2VwYXJhdG9yKSk7cmV0dXJuIHJldDt9CmZ1bmN0aW9uIGdldFVybFZhcnMoKXt2YXIgcXM9KHdpbmRvdy5sb2NhdGlvbi5zZWFyY2gpLnN1YnN0cmluZygxKTtyZXR1cm4gcGFyc2VRdWVyeShxcyk7fQpmdW5jdGlvbiBnZXRDb29raWUoY19uYW1lKXtyZXR1cm4gQ29va2llcy5nZXQoY19uYW1lKTt9CmZ1bmN0aW9uIGdldENvb2tpZShjX25hbWUpe3ZhciBjX3ZhbHVlPWRvY3VtZW50LmNvb2tpZTt2YXIgY19zdGFydD1jX3ZhbHVlLmluZGV4T2YoIiAiK2NfbmFtZSsiPSIpO2lmKGNfc3RhcnQ9PS0xKXtjX3N0YXJ0PWNfdmFsdWUuaW5kZXhPZihjX25hbWUrIj0iKTt9CmlmKGNfc3RhcnQ9PS0xKXtjX3ZhbHVlPW51bGw7fWVsc2V7Y19zdGFydD1jX3ZhbHVlLmluZGV4T2YoIj0iLGNfc3RhcnQpKzE7dmFyIGNfZW5kPWNfdmFsdWUuaW5kZXhPZigiOyIsY19zdGFydCk7aWYoY19lbmQ9PS0xKXtjX2VuZD1jX3ZhbHVlLmxlbmd0aDt9CmNfdmFsdWU9dW5lc2NhcGUoY192YWx1ZS5zdWJzdHJpbmcoY19zdGFydCxjX2VuZCkpO30KcmV0dXJuIGNfdmFsdWU7fQpmdW5jdGlvbiBzZXRDb29raWUoY19uYW1lLHZhbHVlLGV4ZGF5cyl7aXNDb29raWVBbGxvd2VkKGNfbmFtZSxmdW5jdGlvbihhbGxvd2VkKXtpZighYWxsb3dlZCl7cmV0dXJuIENvb2tpZXMuc2V0KGNfbmFtZSx2YWx1ZSxleGRheXMsJy8nKTtsb2dDb29raWUoY19uYW1lLHZhbHVlLGV4ZGF5cyk7cmV0dXJuO30KdmFyIGV4ZGF0ZT1uZXcgRGF0ZSgpO2V4ZGF0ZS5zZXREYXRlKGV4ZGF0ZS5nZXREYXRlKCkrZXhkYXlzKTt2YXIgY192YWx1ZT1lc2NhcGUodmFsdWUpKygoZXhkYXlzPT1udWxsKT8iIjoiOyBleHBpcmVzPSIrZXhkYXRlLnRvVVRDU3RyaW5nKCkpKyI7IHBhdGg9LyI7ZG9jdW1lbnQuY29va2llPWNfbmFtZSsiPSIrY192YWx1ZTt9KTt9CmZ1bmN0aW9uIGxvZ0Nvb2tpZShuYW1lLHZhbHVlLGV4cGlyZXMsdHJpZXMpe2lmKHR5cGVvZiB0cmllcz09PSd1bmRlZmluZWQnKXt0cmllcz01O30KaWYodHlwZW9mIHdpbmRvdy5Db29raWVMb2dnZXI9PT0ndW5kZWZpbmVkJyl7aWYodHJpZXMpe3NldFRpbWVvdXQoZnVuY3Rpb24oKXtsb2dDb29raWUobmFtZSx2YWx1ZSxleHBpcmVzLHRyaWVzLTEpO30sMTAwMCk7fX1lbHNle3dpbmRvdy5Db29raWVMb2dnZXIubG9nKG5hbWUsdmFsdWUsZXhwaXJlcyk7fX0KZnVuY3Rpb24gaXNDb29raWVBbGxvd2VkKG5hbWUsY2FsbGJhY2ssdHJpZXMpe2lmKHR5cGVvZiB3aW5kb3cuQ29va2llQ29uc2VudD09PSd1bmRlZmluZWQnKXtpZih0eXBlb2YgdHJpZXM9PT0ndW5kZWZpbmVkJyl7dHJpZXM9NTt9CmlmKHRyaWVzKXtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7aXNDb29raWVBbGxvd2VkKG5hbWUsY2FsbGJhY2ssdHJpZXMtMSk7fSwxMDAwKTt9fWVsc2V7d2luZG93LkNvb2tpZUNvbnNlbnQuaXNDb29raWVBbGxvd2VkKG5hbWUsY2FsbGJhY2spO319CmZ1bmN0aW9uIGdhUGFnZVZpZXcocHApeyhkMmNfZ2FBY2NvdW50cy5hbGx8fFtdKS5tYXAoZnVuY3Rpb24oaWQpe2xldCBkPXtwYWdlX3BhdGg6cHB9O2lmKGRlcGxveW1lbnRUeXBlIT0nbGl2ZSd8fCdVUychPSdDQScpe2NvbnNvbGUubG9nKCdndGFnJywnY29uZmlnJyxpZCxkKQpyZXR1cm47fQpndGFnKCdjb25maWcnLGlkLGQpO30pO307ZnVuY3Rpb24gZ2E0UGFnZVZpZXcocHApe2lmKGRlcGxveW1lbnRUeXBlIT0nbGl2ZSd8fCdVUychPSdDQScpe3JldHVybjt9Cmd0YWcoJ3NldCcseydwYWdlX3BhdGgnOnBwfSk7Z3RhZygnZXZlbnQnLCdwYWdlX3ZpZXcnLHsnc2VuZF90byc6J0ctWDFTTDdTRTk5UCd9KTt9CmZ1bmN0aW9uIGdldEdhQ2xpZW50SWQoKXtyZXR1cm4oKCh0eXBlb2Ygd2luZG93LmdhPT09J29iamVjdCcmJndpbmRvdy5nYSE9PW51bGwpfHx0eXBlb2Ygd2luZG93LmdhPT09J2Z1bmN0aW9uJykmJnR5cGVvZiBnYVsnZ2V0QWxsJ109PT0nZnVuY3Rpb24nKT9nYS5nZXRBbGwoKVswXS5nZXQoJ2NsaWVudElkJyk6Jyc7fQpmdW5jdGlvbiBnYVRyYWNrKGFhLGMsYSxsLHYpe2xldCBhYz1bXTtjb25zdCBjcz1kZXBsb3ltZW50VHlwZSE9J2xpdmUnfHwnVVMnIT0nQ0EnO2NvbnN0IGNoPShvLGQpPT50eXBlb2YgbyE9PSd1bmRlZmluZWQnP286ZDthYT1jaChhYSwnJyk7Yz1jaChjLCcnKTthPWNoKGEsJycpO2w9Y2gobCwnJyk7dj1jaCh2LDEpO2lmKGFhPT0naW50ZXJuYWwnKXthYz1kMmNfZ2FBY2NvdW50cy5pbnRlcm5hbDt9ZWxzZSBpZihhYS5sZW5ndGgmJi9eKGJ8Y3xkKVwuX3RyYWNrRXZlbnQvLnRlc3QoYWEpJiZ0eXBlb2YgZDJjX2dhQWNjb3VudHNbYWFbMF1dIT0ndW5kZWZpbmVkJyl7YWMucHVzaChkMmNfZ2FBY2NvdW50c1thYVswXV0pO30KaWYoYWMubGVuZ3RoKXthYy5tYXAoKGlkKT0+e2NvbnN0IGQ9e3NlbmRfdG86aWQsZXZlbnRfYWN0aW9uOmEsZXZlbnRfY2F0ZWdvcnk6YyxldmVudF9sYWJlbDpsLHZhbHVlOnZ9O2lmKGNzKXtjb25zb2xlLmxvZyhgR0FUUkFDSy1HVEFHLVNFTkQtVE9bJHtpZH1dOmAsJ2V2ZW50JyxhLGQpO3JldHVybjt9Cmd0YWcoJ2V2ZW50JyxhLGQpO30pO31lbHNle2NvbnN0IGQ9e2V2ZW50X2FjdGlvbjphLGV2ZW50X2NhdGVnb3J5OmMsZXZlbnRfbGFiZWw6bCx2YWx1ZTp2fTtpZihjcyl7Y29uc29sZS5sb2coJ0dBVFJBQ0stR1RBRy1OTy1TRU5ELVRPOicsJ2V2ZW50JyxhLGQpO31lbHNle2d0YWcoJ2V2ZW50JyxhLGQpO319fTtmdW5jdGlvbiBvbkNvbmZpcm1TdWJtaXQoZXZlbnQpe3JldHVybiB0cnVlO30KZnVuY3Rpb24gc2V0U2Vzc2lvbkNvb2tpZShjX25hbWUsdmFsdWUpe3ZhciBleGRheXM9bnVsbDt2YXIgY192YWx1ZT1lc2NhcGUodmFsdWUpKyI7ZXhwaXJlcz0wO3BhdGg9LyI7ZG9jdW1lbnQuY29va2llPWNfbmFtZSsiPSIrY192YWx1ZTtsb2dDb29raWUoY19uYW1lKTt9CmZ1bmN0aW9uIGluaXRMQ0kocGFyYW1zLG4pe2lmKG4+MjApcmV0dXJuIG47dmFyIG49KG4pP246MDtpZih0eXBlb2YgTENfQVBJPT0ndW5kZWZpbmVkJ3x8dHlwZW9mIExDX0ludml0ZT09J3VuZGVmaW5lZCcpe3NldFRpbWVvdXQoZnVuY3Rpb24oKXtpbml0TENJKHBhcmFtcywrK24pO30sNTAwKTtyZXR1cm47fQppZih0eXBlb2YgTENfQVBJIT0ndW5kZWZpbmVkJyYmdHlwZW9mIExDX0ludml0ZSE9J3VuZGVmaW5lZCcmJnBhcmFtcyl7cmV0dXJuIExDX0FQSS5zZXRfY3VzdG9tX3ZhcmlhYmxlcyhwYXJhbXMpO319CmZ1bmN0aW9uIHNhbml0aXplUmVmZXJlcihyZWZlcmVyKXtyZXR1cm4gcmVmZXJlci5yZXBsYWNlKC9bJyJgKCk8PlxbXF17fXwhXS9nLCcnKTt9CmZ1bmN0aW9uIGdldFJlZmVycmVyVmFyRnVuY3Rpb24ocmVmZXJlcil7cmV0dXJuIGZ1bmN0aW9uKCl7aWYoJyc9PXJlZmVyZXIpcmVmZXJlcj1kb2N1bWVudC5yZWZlcnJlcjtyZWZlcmVyPXNhbml0aXplUmVmZXJlcihyZWZlcmVyKTt2YXIgcXMscXNpbmRleD1yZWZlcmVyLmluZGV4T2YoJz8nKSsxO2lmKHFzaW5kZXg+MCl7dmFyIHFzPXJlZmVyZXIuc2xpY2UocXNpbmRleCk7cmV0dXJuIHBhcnNlUXVlcnkocXMpO30KcmV0dXJue319fQp2YXIgZ2V0UmVmZXJlclZhcnM9Z2V0UmVmZXJyZXJWYXJGdW5jdGlvbignJyk7dmFyIHV0bV9sYW5kaW5nX2Nvb2tpZT0oZ2V0Q29va2llKCd1dG1fbGFuZGluZycpIT1udWxsJiZ0eXBlb2YgZ2V0Q29va2llKCd1dG1fbGFuZGluZycpIT0ndW5kZWZpbmVkJz9nZXRDb29raWUoJ3V0bV9sYW5kaW5nJyk6JycpO2lmKHV0bV9sYW5kaW5nX2Nvb2tpZS5sZW5ndGg9PTApe3NldENvb2tpZSgndXRtX2xhbmRpbmcnLHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSk7fQppZihkZXBsb3ltZW50VHlwZT09J2xpdmUnKXt2YXIgZ2VuZXJhdGVHVUlEPWZ1bmN0aW9uKCl7dmFyIFM0PWZ1bmN0aW9uKCl7cmV0dXJuIE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSoweDEwMDAwKS50b1N0cmluZygxNik7fTtyZXR1cm4oUzQoKStTNCgpKyItIisKUzQoKSsiLSIrClM0KCkrIi0iKwpTNCgpKyItIisKUzQoKStTNCgpK1M0KCkpO30KdmFyIHVybFZhcnM9Z2V0VXJsVmFycygpO3ZhciByZWZlcmVyVmFycz1nZXRSZWZlcmVyVmFycygpO3ZhciByZWZlcmVyPScnO3ZhciByYXdSZWZlcnJlcj1yZWZlcmVyO3JlZmVyZXI9KHJlZmVyZXIubGVuZ3RoPDE\/MDpyZWZlcmVyKTtpZignJz09cmF3UmVmZXJyZXIpcmF3UmVmZXJyZXI9ZG9jdW1lbnQucmVmZXJyZXI7dmFyIGl0ZW1UeXBlPSdjYXInO2l0ZW1UeXBlPShpdGVtVHlwZS5sZW5ndGg8MT8wOml0ZW1UeXBlKTtpZihpc05hTihyZWZlcmVyKSl7cmVmZXJlcj1yZWZlcmVyLnJlcGxhY2UoL1wvL2csInwiKS5yZXBsYWNlKC9cPy9nLCJfXyIpLnJlcGxhY2UoL1x0L2csJycpLnJlcGxhY2UoL1xuL2csJycpLnJlcGxhY2UoL1xyL2csJycpLnJlcGxhY2VBbGwoJyUwQScsJycpLnJlcGxhY2VBbGwoJyUwOScsJycpLnJlcGxhY2VBbGwoJyUwQicsJycpLnJlcGxhY2VBbGwoJyUwMCcsJycpLnJlcGxhY2VBbGwoJyUwRCcsJycpO30KdmFyIG1ha2U9IiI7aWYobWFrZS5sZW5ndGg9PTApbWFrZT0iMCI7dmFyIG1vZGVsPSIiO2lmKG1vZGVsLmxlbmd0aD09MCltb2RlbD0iMCI7dmFyIHllYXI9IiI7aWYoeWVhci5sZW5ndGg9PTApeWVhcj0iMCI7dmFyIGlzbW9iaWxlPSIxIjtpZihpc21vYmlsZS5sZW5ndGg9PTApaXNtb2JpbGU9IjAiO3ZhciBvcmlnU291cmNlPSIiO3ZhciBvcmlnQ2FtcGFpZ249IiI7dmFyIG9yaWdLZXl3b3JkPSIiO2lmKHVybFZhcnNbInJlbGFuY2VJRCJdIT11bmRlZmluZWQpCnNldENvb2tpZSgncmVsYW5jZUlEJyx1cmxWYXJzWyJyZWxhbmNlSUQiXSwxODApO3ZhciBzb3VyY2U9KGdldENvb2tpZSgndXRtX3NvdXJjZScpIT1udWxsJiZ0eXBlb2YgZ2V0Q29va2llKCd1dG1fc291cmNlJykhPSd1bmRlZmluZWQnP2dldENvb2tpZSgndXRtX3NvdXJjZScpOicnKTt2YXIgc291cmNlQ29va2llPXNvdXJjZTt2YXIgc291cmNlVVJMPSIiO2lmKCJ1dG1fc291cmNlImluIHVybFZhcnMpe2lmKHNvdXJjZS5sZW5ndGg9PTApc291cmNlPXVybFZhcnNbJ3V0bV9zb3VyY2UnXTtzb3VyY2VVUkw9dXJsVmFyc1sndXRtX3NvdXJjZSddO30KdmFyIGNhbXBhaWduPShnZXRDb29raWUoJ3V0bV9jYW1wYWlnbicpIT1udWxsJiZ0eXBlb2YgZ2V0Q29va2llKCd1dG1fY2FtcGFpZ24nKSE9J3VuZGVmaW5lZCc\/Z2V0Q29va2llKCd1dG1fY2FtcGFpZ24nKTonJyk7aWYoY2FtcGFpZ24udG9Mb3dlckNhc2UoKT09J2Vjb2xlLWV0dWRpYW50Jyl7Y2FtcGFpZ249Jyc7c2V0Q29va2llKCd1dG1fY2FtcGFpZ24nLCIiLDEpO30KdmFyIGNhbXBhaWduQ29va2llPWNhbXBhaWduO3ZhciBjYW1wYWlnblVSTD0iIjtpZigidXRtX2NhbXBhaWduImluIHVybFZhcnMpe2lmKGNhbXBhaWduLmxlbmd0aD09MCljYW1wYWlnbj11cmxWYXJzWyd1dG1fY2FtcGFpZ24nXTtjYW1wYWlnblVSTD11cmxWYXJzWyd1dG1fY2FtcGFpZ24nXTt9CnZhciBtZWRpdW09KGdldENvb2tpZSgndXRtX21lZGl1bScpIT1udWxsJiZ0eXBlb2YgZ2V0Q29va2llKCd1dG1fbWVkaXVtJykhPSd1bmRlZmluZWQnP2dldENvb2tpZSgndXRtX21lZGl1bScpOicnKTt2YXIgbWVkaXVtQ29va2llPW1lZGl1bTt2YXIgbWVkaXVtVVJMPSIiO2lmKCJ1dG1fbWVkaXVtImluIHVybFZhcnMpe2lmKG1lZGl1bS5sZW5ndGg9PTApbWVkaXVtPXVybFZhcnNbJ3V0bV9tZWRpdW0nXTttZWRpdW1VUkw9dXJsVmFyc1sndXRtX21lZGl1bSddO30KdmFyIGNvb2tpZUluQ2FtcGFpZ25zPWZhbHNlO3ZhciB1cmxJbkNhbXBhaWducz1mYWxzZTt2YXIgaGFzR29vZ2xlT3JnYW5pYz1mYWxzZTtmb3IodmFyIGk9MDtpPGFsbENhbXBhaWducy5sZW5ndGg7aSsrKXtpZihhbGxDYW1wYWlnbnNbaV1bMV0udG9Mb3dlckNhc2UoKT09c291cmNlVVJMLnRvTG93ZXJDYXNlKCkmJmFsbENhbXBhaWduc1tpXVsyXS50b0xvd2VyQ2FzZSgpPT1jYW1wYWlnblVSTC50b0xvd2VyQ2FzZSgpKXVybEluQ2FtcGFpZ25zPXRydWU7aWYoYWxsQ2FtcGFpZ25zW2ldWzFdLnRvTG93ZXJDYXNlKCk9PXNvdXJjZUNvb2tpZS50b0xvd2VyQ2FzZSgpJiZhbGxDYW1wYWlnbnNbaV1bMl0udG9Mb3dlckNhc2UoKT09Y2FtcGFpZ25Db29raWUudG9Mb3dlckNhc2UoKSljb29raWVJbkNhbXBhaWducz10cnVlO2lmKGFsbENhbXBhaWduc1tpXVsxXS50b0xvd2VyQ2FzZSgpPT0nZ29vZ2xlJyYmYWxsQ2FtcGFpZ25zW2ldWzJdLnRvTG93ZXJDYXNlKCk9PSdvcmdhbmlxdWUnKWhhc0dvb2dsZU9yZ2FuaWM9dHJ1ZTt9CmlmKHNvdXJjZVVSTD09IiImJmNhbXBhaWduVVJMPT0iIiYmc291cmNlPT0iIiYmY2FtcGFpZ249PSIiJiZoYXNHb29nbGVPcmdhbmljKXtzb3VyY2VVUkw9Ikdvb2dsZSI7Y2FtcGFpZ25VUkw9Ik9yZ2FuaXF1ZSI7dXJsSW5DYW1wYWlnbnM9dHJ1ZTt9CmlmKGNvb2tpZUluQ2FtcGFpZ25zPT1mYWxzZSYmdXJsSW5DYW1wYWlnbnM9PXRydWUpe3NvdXJjZT1zb3VyY2VVUkw7Y2FtcGFpZ249Y2FtcGFpZ25VUkw7c291cmNlQ29va2llPXNvdXJjZVVSTDtjYW1wYWlnbkNvb2tpZT1jYW1wYWlnblVSTDt9CmlmKHNvdXJjZUNvb2tpZS50b0xvd2VyQ2FzZSgpPT0nc2VtJyYmc291cmNlVVJMLnRvTG93ZXJDYXNlKCk9PSdnb29nbGUnJiZ1cmxJbkNhbXBhaWducyl7c291cmNlPXNvdXJjZVVSTDtjYW1wYWlnbj1jYW1wYWlnblVSTDt9CnZhciBjdXJyZW50U2l0ZUlEPTEyMjU7aWYoKGN1cnJlbnRTaXRlSUQ9PTU5Mnx8Y3VycmVudFNpdGVJRD09NDM3fHxjdXJyZW50U2l0ZUlEPT01Nzl8fGN1cnJlbnRTaXRlSUQ9PTU4NSkmJnNvdXJjZUNvb2tpZS50b0xvd2VyQ2FzZSgpPT0nc2VtJyl7c291cmNlQ29va2llPSdHb29nbGUnO3NvdXJjZT0nR29vZ2xlJztjYW1wYWlnbkNvb2tpZT0nTmV1Zic7Y2FtcGFpZ249J05ldWYnO30KaWYoY2FtcGFpZ25Db29raWUudG9Mb3dlckNhc2UoKT09J29yZ2FuaWMnfHxjYW1wYWlnbkNvb2tpZS50b0xvd2VyQ2FzZSgpPT0nb3JnYW5pcXVlJyl7c291cmNlQ29va2llPScnO2NhbXBhaWduQ29va2llPScnO21lZGl1bUNvb2tpZT0nJzt9CmlmKHNvdXJjZS5sZW5ndGg+MCYmKHNvdXJjZUNvb2tpZS5sZW5ndGg9PTB8fHNvdXJjZUNvb2tpZT09c291cmNlKSlzZXRDb29raWUoJ3V0bV9zb3VyY2UnLHNvdXJjZSwxODApO2lmKGNhbXBhaWduLmxlbmd0aD4wJiYoY2FtcGFpZ25Db29raWUubGVuZ3RoPT0wfHxjYW1wYWlnbkNvb2tpZT09Y2FtcGFpZ24pKXNldENvb2tpZSgndXRtX2NhbXBhaWduJyxjYW1wYWlnbiwxODApO2lmKG1lZGl1bS5sZW5ndGg+MCYmKG1lZGl1bUNvb2tpZS5sZW5ndGg9PTB8fG1lZGl1bUNvb2tpZT09bWVkaXVtKSlzZXRDb29raWUoJ3V0bV9tZWRpdW0nLG1lZGl1bSwxODApO3ZhciBrZXl3b3JkPShnZXRDb29raWUoJ3V0bV9rZXl3b3JkJykhPW51bGwmJnR5cGVvZiBnZXRDb29raWUoJ3V0bV9rZXl3b3JkJykhPSd1bmRlZmluZWQnP2dldENvb2tpZSgndXRtX2tleXdvcmQnKTonJyk7aWYoImt3ImluIHVybFZhcnMpe2tleXdvcmQ9ZGVjb2RlU3RyaW5nKHVybFZhcnNbJ2t3J10sMyk7fQppZihrZXl3b3JkLmxlbmd0aD4wKXNldENvb2tpZSgndXRtX2tleXdvcmQnLGtleXdvcmQsMTgwKTt2YXIgaXNSZXRhcmdldGluZz1mYWxzZTtmb3IodmFyIGk9MDtpPHJldGFyZ2V0aW5nQ2FtcGFpZ25zLmxlbmd0aDtpKyspe2lmKHJldGFyZ2V0aW5nQ2FtcGFpZ25zW2ldWzFdLnRvTG93ZXJDYXNlKCk9PXNvdXJjZVVSTC50b0xvd2VyQ2FzZSgpJiZyZXRhcmdldGluZ0NhbXBhaWduc1tpXVsyXS50b0xvd2VyQ2FzZSgpPT1jYW1wYWlnblVSTC50b0xvd2VyQ2FzZSgpKWlzUmV0YXJnZXRpbmc9dHJ1ZTt9CmlmKGlzUmV0YXJnZXRpbmcpe3ZhciBzb3VyY2VSZXRhcmdldGluZz0oZ2V0Q29va2llKCd1dG1fc291cmNlX3JldGFyZ2V0aW5nJykhPW51bGwmJnR5cGVvZiBnZXRDb29raWUoJ3V0bV9zb3VyY2VfcmV0YXJnZXRpbmcnKSE9J3VuZGVmaW5lZCc\/Z2V0Q29va2llKCd1dG1fc291cmNlX3JldGFyZ2V0aW5nJyk6JycpO3ZhciBjYW1wYWlnblJldGFyZ2V0aW5nPShnZXRDb29raWUoJ3V0bV9jYW1wYWlnbl9yZXRhcmdldGluZycpIT1udWxsJiZ0eXBlb2YgZ2V0Q29va2llKCd1dG1fY2FtcGFpZ25fcmV0YXJnZXRpbmcnKSE9J3VuZGVmaW5lZCc\/Z2V0Q29va2llKCd1dG1fY2FtcGFpZ25fcmV0YXJnZXRpbmcnKTonJyk7aWYoc291cmNlIT1zb3VyY2VVUkx8fGNhbXBhaWduIT1jYW1wYWlnblVSTCl7aWYoc291cmNlVVJMLmxlbmd0aD4wJiZzb3VyY2VSZXRhcmdldGluZy5sZW5ndGg9PTApc2V0Q29va2llKCd1dG1fc291cmNlX3JldGFyZ2V0aW5nJyxzb3VyY2VVUkwsMTgwKTtpZihjYW1wYWlnblVSTC5sZW5ndGg+MCYmY2FtcGFpZ25SZXRhcmdldGluZy5sZW5ndGg9PTApc2V0Q29va2llKCd1dG1fY2FtcGFpZ25fcmV0YXJnZXRpbmcnLGNhbXBhaWduVVJMLDE4MCk7fQpzZXRDb29raWUoJ3V0bV9zb3VyY2UnLHNvdXJjZVVSTCwxODApO3NldENvb2tpZSgndXRtX2NhbXBhaWduJyxjYW1wYWlnblVSTCwxODApO30KdmFyIHNvdXJjZVJldGFyZ2V0aW5nPShnZXRDb29raWUoJ3V0bV9zb3VyY2VfcmV0YXJnZXRpbmcnKSE9bnVsbCYmdHlwZW9mIGdldENvb2tpZSgndXRtX3NvdXJjZV9yZXRhcmdldGluZycpIT0ndW5kZWZpbmVkJz9nZXRDb29raWUoJ3V0bV9zb3VyY2VfcmV0YXJnZXRpbmcnKTonJyk7dmFyIGNhbXBhaWduUmV0YXJnZXRpbmc9KGdldENvb2tpZSgndXRtX2NhbXBhaWduX3JldGFyZ2V0aW5nJykhPW51bGwmJnR5cGVvZiBnZXRDb29raWUoJ3V0bV9jYW1wYWlnbl9yZXRhcmdldGluZycpIT0ndW5kZWZpbmVkJz9nZXRDb29raWUoJ3V0bV9jYW1wYWlnbl9yZXRhcmdldGluZycpOicnKTtpZihzb3VyY2VSZXRhcmdldGluZy5sZW5ndGg+MClzZXRDb29raWUoJ3V0bV9zb3VyY2VfcmV0YXJnZXRpbmcnLHNvdXJjZVJldGFyZ2V0aW5nLDE4MCk7aWYoY2FtcGFpZ25SZXRhcmdldGluZy5sZW5ndGg+MClzZXRDb29raWUoJ3V0bV9jYW1wYWlnbl9yZXRhcmdldGluZycsY2FtcGFpZ25SZXRhcmdldGluZywxODApO2lmKCFzb3VyY2Upe2lmKHJhd1JlZmVycmVyIT0nJyl7dmFyIHNlbGZIb3N0PShkb2N1bWVudC5sb2NhdGlvbi5ocmVmKS5tYXRjaCgvXltBLXpdKzpcL1wvKFteXC9dKylcLz8uKi8pO2lmKHNlbGZIb3N0KXtzZWxmSG9zdD1zZWxmSG9zdFsxXX0KdmFyIGhvc3Q9KHJhd1JlZmVycmVyLnRvU3RyaW5nKCkpLm1hdGNoKC9eW0Etel0rOlwvXC8oW15cL10rKVwvPy4qLyk7aWYoaG9zdCl7aG9zdD1ob3N0WzFdfWVsc2V7aG9zdD1zZWxmSG9zdDt9CmlmKGhvc3QhPXNlbGZIb3N0KXtob3N0PWhvc3Quc3BsaXQoJy4nKTtpZihob3N0Lmxlbmd0aD4yKXtzb3VyY2U9aG9zdFsxXTt9CmlmKGhvc3QubGVuZ3RoPT0yKXtzb3VyY2U9aG9zdFswXTt9CmlmKHNvdXJjZSlzZXRDb29raWUoJ3V0bV9zb3VyY2UnLHNvdXJjZSwxODApO2lmKCFjYW1wYWlnbil7Y2FtcGFpZ249J29yZ2FuaWMnO3NldENvb2tpZSgndXRtX2NhbXBhaWduJyxjYW1wYWlnbiwxODApO319fX0KaWYoc291cmNlLmxlbmd0aD09MClzb3VyY2U9IjAiO2lmKGNhbXBhaWduLmxlbmd0aD09MCljYW1wYWlnbj0iMCI7aWYoc291cmNlUmV0YXJnZXRpbmcubGVuZ3RoPT0wKXNvdXJjZVJldGFyZ2V0aW5nPSIwIjtpZihjYW1wYWlnblJldGFyZ2V0aW5nLmxlbmd0aD09MCljYW1wYWlnblJldGFyZ2V0aW5nPSIwIjtpZih1cmxWYXJzWyJEaXNwbGF5U291cmNlIl0hPXVuZGVmaW5lZCl7aWYoZ2V0Q29va2llKCdEaXNwbGF5U291cmNlJyk9PW51bGx8fHR5cGVvZiBnZXRDb29raWUoJ0Rpc3BsYXlTb3VyY2UnKT09J3VuZGVmaW5lZCcpe2lmKHVybFZhcnNbInV0bV9jYW1wYWlnbiJdIT11bmRlZmluZWQmJihnZXRDb29raWUoJ0Rpc3BsYXlTb3VyY2VVVE1DYW1wYWlnbicpPT1udWxsfHx0eXBlb2YgZ2V0Q29va2llKCdEaXNwbGF5U291cmNlVVRNQ2FtcGFpZ24nKT09J3VuZGVmaW5lZCcpKXNldENvb2tpZSgnRGlzcGxheVNvdXJjZVVUTUNhbXBhaWduJyx1cmxWYXJzWyJ1dG1fY2FtcGFpZ24iXSwxODApO2lmKHVybFZhcnNbInV0bV9zb3VyY2UiXSE9dW5kZWZpbmVkJiYoZ2V0Q29va2llKCdEaXNwbGF5U291cmNlVVRNU291cmNlJyk9PW51bGx8fHR5cGVvZiBnZXRDb29raWUoJ0Rpc3BsYXlTb3VyY2VVVE1Tb3VyY2UnKT09J3VuZGVmaW5lZCcpKXNldENvb2tpZSgnRGlzcGxheVNvdXJjZVVUTVNvdXJjZScsdXJsVmFyc1sidXRtX3NvdXJjZSJdLDE4MCk7fQpzZXRDb29raWUoJ0Rpc3BsYXlTb3VyY2UnLHVybFZhcnNbIkRpc3BsYXlTb3VyY2UiXSwxODApO30KdmFyIHNldEdjbGlkQ29va2llPXRydWU7aWYodXJsVmFyc1sidXRtX3NvdXJjZSJdIT11bmRlZmluZWQpe2lmKHVybFZhcnNbInV0bV9zb3VyY2UiXT09J1NFTSd8fHVybFZhcnNbInV0bV9zb3VyY2UiXT09J1RyYWRlcid8fHVybFZhcnNbInV0bV9zb3VyY2UiXT09J0dvb2dsZS1uZXJkbWFya2V0aW5nJyl7c2V0R2NsaWRDb29raWU9ZmFsc2U7fX0KaWYodXJsVmFyc1siZ2NsaWQiXSE9dW5kZWZpbmVkJiZzZXRHY2xpZENvb2tpZSl7c2V0Q29va2llKCdnY2xpZCcsdXJsVmFyc1siZ2NsaWQiXSwxODApO3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJsb2FkIixmdW5jdGlvbihldmVudCl7aWYoJ3VuZGVmaW5lZCchPXR5cGVvZiBhY3RpdmVVc2VyUHJvZmlsZU1uZyl7c2F2ZUdDTElEPWZ1bmN0aW9uKCl7aWYoJ3VuZGVmaW5lZCc9PXR5cGVvZiB3aW5kb3cualF1ZXJ5KXtyZXR1cm47fQokLnBvc3QoImh0dHBzOi8vcmVzdC5kMmNtZWRpYS5jYS9nY2xpZC5yZXN0LmFwaS5waHAiLHtzZXNzaW9uaWQ6YWN0aXZlVXNlclByb2ZpbGVNbmcuc2Vzc2lvbmlkLGdjbGlkOnVybFZhcnNbJ2djbGlkJ119KTt9O3RyeXthY3RpdmVVc2VyUHJvZmlsZU1uZy5yZWdpc3RlclNlc3Npb25DYWxsYmFjayhzYXZlR0NMSUQpO31jYXRjaChlcnJvcil7Y29uc29sZS5sb2coZXJyb3IpO319fSk7fQp3aW5kb3cuYWN0aXZlUGFnZT1wYWdlO3ZhciB1aWQ9KGdldENvb2tpZSgndWlkJykhPW51bGwmJnR5cGVvZiBnZXRDb29raWUoJ3VpZCcpIT0ndW5kZWZpbmVkJz9nZXRDb29raWUoJ3VpZCcpOmdlbmVyYXRlR1VJRCgpKTtzZXRDb29raWUoJ3VpZCcsdWlkLDE4MCk7dmFyIGRlYWxlcmlkPTMzMzA7dmFyIHNpdGVpZD0xMjI1O3dpbmRvdy5hY3RpdmVTaXRlSUQ9c2l0ZWlkO3dpbmRvdy5hY3RpdmVEZWFsZXJJRD1kZWFsZXJpZDt2YXIgY2FyaWQ9Jyc7aWYoY2FyaWQubGVuZ3RoPT0wKWNhcmlkPSIwIjtmdW5jdGlvbiB0YWdCdWlsZChpbnRlcm5hbHMpe3JldHVybic8JysoaW50ZXJuYWxzLmpvaW4oJyAnKSkrJyAvPic7fQp2YXIgY2FjaGVDbGVhcmVyPU1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSo5OTk5OTk5KTt2YXIgYWRkVGtJbWc9ZnVuY3Rpb24oc3JjKXtzd2l0Y2goZG9jdW1lbnQucmVhZHlTdGF0ZSl7Y2FzZSJsb2FkaW5nIjpkb2N1bWVudC53cml0ZSh0YWdCdWlsZChbJ2ltZycsJ3N0eWxlPSJ3aWR0aDoxcHg7aGVpZ2h0OjFweDtwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjBweDt0b3A6MHB4OyInLCdzcmM9Iicrc3JjKyciJywnYWx0PSIiJ10pKTticmVhaztjYXNlImludGVyYWN0aXZlIjpjYXNlImNvbXBsZXRlIjpkZWZhdWx0OnRyeXt2YXIgaW1nPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImltZyIpO2ltZy5zdHlsZS5jc3NUZXh0PSd3aWR0aDoxcHg7aGVpZ2h0OjFweDtwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjBweDt0b3A6MHB4Oyc7aW1nLnNldEF0dHJpYnV0ZSgnc3JjJyxzcmMpO2ltZy5zZXRBdHRyaWJ1dGUoJ2FsdCcsJ1RyYWNraW5nIHBpeGVsJyk7ZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChpbWcpO31jYXRjaChleCl7aWYoY29uc29sZSYmY29uc29sZS5sb2cpY29uc29sZS5sb2coIkVycm9yIHRrd2lkZ2V0OiAiK2V4Lm1lc3NhZ2UpO30KYnJlYWs7fX07Y2FtcGFpZ249Y2FtcGFpZ24ucmVwbGFjZSgvXHQvZywnJykucmVwbGFjZSgvXG4vZywnJykucmVwbGFjZSgvXHIvZywnJykucmVwbGFjZSgnJTBBJywnJykucmVwbGFjZSgnJTA5JywnJykucmVwbGFjZSgnJTBCJywnJykucmVwbGFjZSgnJTAwJywnJykucmVwbGFjZSgnJTBEJywnJyk7c291cmNlPXNvdXJjZS5yZXBsYWNlKC9cdC9nLCcnKS5yZXBsYWNlKC9cbi9nLCcnKS5yZXBsYWNlKC9cci9nLCcnKS5yZXBsYWNlKCclMEEnLCcnKS5yZXBsYWNlKCclMDknLCcnKS5yZXBsYWNlKCclMEInLCcnKS5yZXBsYWNlKCclMDAnLCcnKS5yZXBsYWNlKCclMEQnLCcnKTt2YXIgdGtzcmM9Jy9wcm94eV9zYXViL3dlYnNpdGVIaXRzLycrCmRlYWxlcmlkKyIvIitzaXRlaWQrIi8iK2NhcmlkKyIvIitlc2NhcGUodWlkKSsiLyIrcGFnZSsiLyIrZXNjYXBlKHNvdXJjZSkrIi8iK2VzY2FwZShjYW1wYWlnbikrIi8iK2VzY2FwZShtYWtlKSsiLyIrZXNjYXBlKG1vZGVsKSsiLyIreWVhcisiLyIrCmlzbW9iaWxlKyIvIitlbmNvZGVVUklDb21wb25lbnQocmVmZXJlcikrIi8iK2VzY2FwZShpdGVtVHlwZSkrIi8iK2VzY2FwZShzb3VyY2VSZXRhcmdldGluZykrIi8iK2VzY2FwZShjYW1wYWlnblJldGFyZ2V0aW5nKSsiLyIrY2FjaGVDbGVhcmVyKycuZ2lmJztpZih0eXBlb2YgYWN0aXZlVXNlclByb2ZpbGVNbmc9PSd1bmRlZmluZWQnfHwhYWN0aXZlVXNlclByb2ZpbGVNbmcuX2lzQm90KCkpYWRkVGtJbWcodGtzcmMpO3ZhciBrZXl3b3Jkcz0iIjtpZigicCJpbiByZWZlcmVyVmFycyYmcmVmZXJlci5pbmRleE9mKCJ5YWhvbyIpPi0xKXtrZXl3b3Jkcz1yZWZlcmVyVmFyc1sncCddO30KaWYoInEiaW4gcmVmZXJlclZhcnMmJihyZWZlcmVyLmluZGV4T2YoImdvb2dsZSIpPi0xfHxyZWZlcmVyLmluZGV4T2YoImJpbmciKT4tMSkpe2tleXdvcmRzPXJlZmVyZXJWYXJzWydxJ107fQp2YXIgdUxhbmc9KGdldENvb2tpZSgnbGFuZycpPT0nZW4nKT8nZW4nOidmcic7d2luZG93LmZiQ2hhdFJlZj17cjonc2l0ZScsYzpjYW1wYWlnbixzOnNvdXJjZX07dmFyIGN1c3RvbV92YXJpYWJsZXM9W3tuYW1lOidsYW5ndWFnZScsdmFsdWU6dUxhbmd9LHtuYW1lOid1dG1fY2FtcGFpZ24nLHZhbHVlOmNhbXBhaWdufSx7bmFtZTondXRtX3NvdXJjZScsdmFsdWU6c291cmNlfSx7bmFtZToncGFnZScsdmFsdWU6cGFnZX0se25hbWU6J3VpZCcsdmFsdWU6dWlkfSx7bmFtZTonY2FyaWQnLHZhbHVlOmNhcmlkfSx7bmFtZTonbWFrZScsdmFsdWU6bWFrZX0se25hbWU6J21vZGVsJyx2YWx1ZTptb2RlbH0se25hbWU6J3llYXInLHZhbHVlOnllYXJ9LHtuYW1lOidpc01vYmlsZVNpdGUnLHZhbHVlOmlzbW9iaWxlfV07d2luZG93LmNWYXJpYWJsZXM9Y3VzdG9tX3ZhcmlhYmxlczt3aW5kb3cucmVsYW5jZUhhbmRsZXJGbmM9ZnVuY3Rpb24oKXt2YXIgcmVsYW5jZUlEPShnZXRDb29raWUoJ3JlbGFuY2VJRCcpIT1udWxsJiZ0eXBlb2YgZ2V0Q29va2llKCdyZWxhbmNlSUQnKSE9J3VuZGVmaW5lZCc\/Z2V0Q29va2llKCdyZWxhbmNlSUQnKTowKTtpZih0eXBlb2YgYWN0aXZlVXNlclByb2ZpbGVNbmchPSd1bmRlZmluZWQnJiZ0eXBlb2YgYWN0aXZlVXNlclByb2ZpbGVNbmcubG9nUGFnZVZpZXdFdmVudCE9J3VuZGVmaW5lZCcpe2FjdGl2ZVVzZXJQcm9maWxlTW5nLmxvZ1BhZ2VWaWV3RXZlbnQocmVsYW5jZUlELCdyZWxhbmNlSUQnKTtpZih1cmxWYXJzWyJEaXNwbGF5U291cmNlIl0hPXVuZGVmaW5lZCl7YWN0aXZlVXNlclByb2ZpbGVNbmcubG9nUGFnZVZpZXdFdmVudCh1cmxWYXJzWyJEaXNwbGF5U291cmNlIl0sJ2Rpc3BsYXlTb3VyY2UnKTtpZih1cmxWYXJzWyJ1dG1fY2FtcGFpZ24iXSE9dW5kZWZpbmVkKWFjdGl2ZVVzZXJQcm9maWxlTW5nLmxvZ1BhZ2VWaWV3RXZlbnQodXJsVmFyc1sidXRtX2NhbXBhaWduIl0sJ3V0bV9jYW1wYWlnbicpO2lmKHVybFZhcnNbInV0bV9zb3VyY2UiXSE9dW5kZWZpbmVkKWFjdGl2ZVVzZXJQcm9maWxlTW5nLmxvZ1BhZ2VWaWV3RXZlbnQodXJsVmFyc1sidXRtX3NvdXJjZSJdLCd1dG1fc291cmNlJyk7fX0KZWxzZQpzZXRUaW1lb3V0KHdpbmRvdy5yZWxhbmNlSGFuZGxlckZuYywxMDAwKTt9O3ZhciBpbml0Rj1mdW5jdGlvbigpe2luaXRMQ0koY3VzdG9tX3ZhcmlhYmxlcyk7d2luZG93LnJlbGFuY2VIYW5kbGVyRm5jKCk7fTtpZih3aW5kb3cuYXR0YWNoRXZlbnQpd2luZG93LmF0dGFjaEV2ZW50KCdvbmxvYWQnLGluaXRGKTtlbHNlIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJyxpbml0RixmYWxzZSk7dmFyIGFpY3VycmVudHBhZ2U9J25ld2NhcnMuaHRtbCc7aWYoQUlDdXJyZW50Q29uZmlnSUQ+MCYmdHlwZW9mIGFjdGl2ZVVzZXJQcm9maWxlTW5nIT0ndW5kZWZpbmVkJyl7YWN0aXZlVXNlclByb2ZpbGVNbmcubG9nUGFnZVZpZXdFdmVudChBSUN1cnJlbnRDb25maWdJRCwnQUlDb25maWcnKTt9CmlmKEFJSURQZXJOZXdDYXJzRnJlbmNoLmxlbmd0aD4wJiZhaWN1cnJlbnRwYWdlPT0nbmV3Y2FyZGV0YWlsLmh0bWwnJiZnZXRDb29raWUoJ2xhc3RuZXd2ZWhpY2xlJykhPW51bGwpe3ZhciBsYXN0bmV3dmVoaWNsZT1nZXRDb29raWUoJ2xhc3RuZXd2ZWhpY2xlJyk7dmFyIGxhc3RuZXd2ZWhpY2xlc3BsaXQ9bGFzdG5ld3ZlaGljbGUuc3BsaXQoJ3x8fCcpO3ZhciBhaW5ld2NhcmlkPTA7aWYodHlwZW9mIEFJSURQZXJOZXdDYXJzRnJlbmNoW2xhc3RuZXd2ZWhpY2xlc3BsaXRbMF0rbGFzdG5ld3ZlaGljbGVzcGxpdFsxXStsYXN0bmV3dmVoaWNsZXNwbGl0WzJdXSE9PSd1bmRlZmluZWQnKWFpbmV3Y2FyaWQ9QUlJRFBlck5ld0NhcnNGcmVuY2hbbGFzdG5ld3ZlaGljbGVzcGxpdFswXStsYXN0bmV3dmVoaWNsZXNwbGl0WzFdK2xhc3RuZXd2ZWhpY2xlc3BsaXRbMl1dO2lmKHR5cGVvZiBBSUlEUGVyTmV3Q2Fyc0VuZ2xpc2hbbGFzdG5ld3ZlaGljbGVzcGxpdFswXStsYXN0bmV3dmVoaWNsZXNwbGl0WzFdK2xhc3RuZXd2ZWhpY2xlc3BsaXRbMl1dIT09J3VuZGVmaW5lZCcpYWluZXdjYXJpZD1BSUlEUGVyTmV3Q2Fyc0VuZ2xpc2hbbGFzdG5ld3ZlaGljbGVzcGxpdFswXStsYXN0bmV3dmVoaWNsZXNwbGl0WzFdK2xhc3RuZXd2ZWhpY2xlc3BsaXRbMl1dO2lmKGFpbmV3Y2FyaWQ+MCYmdHlwZW9mIGFjdGl2ZVVzZXJQcm9maWxlTW5nIT0ndW5kZWZpbmVkJyl7YWN0aXZlVXNlclByb2ZpbGVNbmcubG9nUGFnZVZpZXdFdmVudChhaW5ld2NhcmlkLCdBSUNvbmZpZ05ld0NhcicpO319fQpzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dmFyIGZuPWZ1bmN0aW9uKCl7aWYodHlwZW9mIGpRdWVyeSE9J3VuZGVmaW5lZCcpe3JldHVybiBqUXVlcnkucmVhZHkoKTt9CnNldFRpbWVvdXQoZm4sMTAwKTt9CmZuKCk7fSwxMDAwKTsKLypdXT4qLwoKCS8qPCFbQ0RBVEFbKi8KCXZhciBwYXJhbXMgPSBnZXRVcmxWYXJzKCk7CgkvL3NldCBwYXJhbSB2YWx1ZSBpbnRvIHNlc3Npb24gc3RvcmFnZQoJaWYgKHR5cGVvZiBzZXNzaW9uU3RvcmFnZSAhPT0gJ3VuZGVmaW5lZCcpIHsKCgkJaWYocGFyYW1zLmhhc093blByb3BlcnR5KCdoJykpewoJCQlzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKCdoJyxwYXJhbXMuaCk7CgkJfQoKCQlpZihwYXJhbXMuaGFzT3duUHJvcGVydHkoJ20nKSl7CgkJCXNlc3Npb25TdG9yYWdlLnNldEl0ZW0oJ20nLHBhcmFtcy5tKTsKCQl9CgoJCXZhciBoID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgnaCcpOwoJCXZhciBtID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgnbScpOwoKCQkvL3JlYWQgc2Vzc2lvbiBhbmQgcmVtb3ZlIGhlYWRlciAmIG1lbnUgaWYgb3B0aW9ucyBoYXZlIGJlZW4gc2V0CgkJaWYoaCA9PT0gJ25vJyl7CgkJCS8vc3R1ZmYgdG8gcmVtb3ZlIHRoYXQgaXMgY29uc2lkZXJlZCBwYXJ0IG9mIHRoZSBoZWFkZXIKCQkJdmFyIGhlYWRlcnMgPSBbCgkJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuaGVhZGVyLWluZm8nKSwKCQkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5oZWFkZXItZm9vdGVyJyksCgkJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcubGFuZ3VhZ2VCYXInKSwKCQkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5oZWFkZXItbG9nbycpLAoJCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLm1vYmlsZS1oZWFkZXIgPiAqOm5vdCguYnVyZ2VyLW1lbnUtY29udGFpbmVyKScpCgkJCV07CgoJCQlmb3IodmFyIGVsZW0gb2YgaGVhZGVycyl7CgkJCQkvL3JlbW92ZSBub2RlIGxpc3QgcXVlcmllcwoJCQkJaWYgKE5vZGVMaXN0LnByb3RvdHlwZS5pc1Byb3RvdHlwZU9mKGVsZW0pKSB7CgkJCQkJZm9yKHZhciBfZWxlbSBvZiBlbGVtKXsKCQkJCQkJaWYgKF9lbGVtICE9PSBudWxsKSB7CgkJCQkJCQlfZWxlbS5yZW1vdmUoKTsKCQkJCQkJfQoJCQkJCX0KCQkJCX0KCQkJCWVsc2UgaWYgKGVsZW0gIT09IG51bGwpewoJCQkJCWVsZW0ucmVtb3ZlKCk7CgkJCQl9CgkJCX0KCQl9CgoJCS8vbWVudQoJCWlmKG0gPT09ICdubycpewoJCQl2YXIgbWVudXMgPSBbCgkJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuaGVhZGVyLW1lbnUnKSwKCQkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5idXJnZXItbWVudS1jb250YWluZXInKSwKCQkJXTsKCQkJZm9yKHZhciBlbGVtIG9mIG1lbnVzKXsKCQkJCWlmKGVsZW0gIT09IG51bGwpewoJCQkJCWVsZW0ucmVtb3ZlKCk7CgkJCQl9CgkJCX0KCQl9CgoJCS8vc2luY2Ugbm8gaGVhZGVyIG9yIG1lbnUsIHJlbW92ZSBldmVyeXRoaW5nCgkJaWYgKG0gPT09ICdubycgJiYgaCA9PT0gJ25vJykgewoJCQl2YXIgaGVhZGVyID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLm1vYmlsZS1oZWFkZXInKTsKCQkJaWYoaGVhZGVyICE9PSBudWxsKXsKCQkJCWhlYWRlci5yZW1vdmUoKTsKCQkJfQoJCX0KCgl9CgkvKl1dPiovCgoJCShmdW5jdGlvbigpewoJCQlmdW5jdGlvbiBpbml0KCl7CgkJCQlpZiggdHlwZW9mIFBhZ2VCYW5uZXIgPT09ICdmdW5jdGlvbicgKSB7CgkJCQkJd2luZG93LnBhZ2VCYW5uZXIgPSBuZXcgUGFnZUJhbm5lcih7ImJhbm5lcnMiOnsiRVY5Ijp7IjYiOnsiaSI6IlwvaW1hZ2VzXC9OZXdDYXJQYWdlSW1hZ2VEeW5cL01CQU5fS2lhLUFKQUMtRVY5LUZSLnBuZyIsInUiOiIiLCJ0Ijo2MDAwfX0sIktpYS1LNC0yMDI1Ijp7IjEiOnsiaSI6IlwvaW1hZ2VzXC9OZXdDYXJQYWdlSW1hZ2VEeW5cL01CQU5fV0VCLUs0LTEyNTBYMjAwLUZSLmpwZyIsInUiOiIiLCJ0Ijo2MDAwfX0sInN0YXRpY2Jhbm5lcnMiOnsiNTAwIjp7ImkiOiJcL2ltYWdlc1wvTmV3Q2FyUGFnZUltYWdlRHluXC9NQkFOX0QyQy1BY2hldG9uc0F1dG9zLTEyNTB4MjAwLWZyLmpwZyIsInUiOiJodHRwczpcL1wvd3d3LmFsYmlsZWdlYW50LmNvbVwvZnJcL2FjaGV0b25zLXZvdHJlLXZlaGljdWxlXC8iLCJ0Ijo2MDAwfSwiNSI6eyJpIjoiXC9pbWFnZXNcL05ld0NhclBhZ2VJbWFnZUR5blwvTUJBTl9OT05DQkItVFJBREVJTi1LSUEtMTI1MFgyMDAtRlIucG5nIiwidSI6IiRUcmFkZUJvb3N0IiwidCI6NjAwMH19LCJLaWEtTmlyb19FVi0yMDI2Ijp7IjUwOCI6eyJpIjoiXC9pbWFnZXNcL05ld0NhclBhZ2VJbWFnZUR5blwvTUJBTl9XRUItTmlyb0VWLTEyNTBYMjAwLUZSLmpwZyIsInUiOiIiLCJ0Ijo2MDAwfX0sIktpYS1Tb3JlbnRvX0h5YnJpZC0yMDI2Ijp7IjUwNyI6eyJpIjoiXC9pbWFnZXNcL05ld0NhclBhZ2VJbWFnZUR5blwvTUJBTl9XRUItU29yZW50b1BIRVYtMTI1MFgyMDAtRlIuanBnIiwidSI6IiIsInQiOjYwMDB9fSwiS2lhLVNwb3J0YWdlLTIwMjYiOnsiNTA2Ijp7ImkiOiJcL2ltYWdlc1wvTmV3Q2FyUGFnZUltYWdlRHluXC9NQkFOX1dFQi1TcG9ydGFnZS0xMjUwWDIwMC1GUi5qcGciLCJ1IjoiIiwidCI6NjAwMH19fSwiY29uZmlnIjp7ImMxIjoiZmZmZmZmIiwiYzIiOiJmZmZmZmYiLCJjMl8xIjoiMDUxNDFmIiwiYzJfMiI6IjAwMDAwMCJ9fSk7CgkJCQkJcmV0dXJuOwoJCQkJfQoJCQkJc2V0VGltZW91dCggaW5pdCwgMzAwMCApOwoJCQl9CgkJCWluaXQoKTsKCQl9KSgpOwoJ","js_rl":"CgkJCQl3aW5kb3cuZ1Rlc3RTcGVlZENvbm49RGF0ZS5ub3coKTsKCQkJCXdpbmRvdy5nUmVzb3VyY2VMb2FkZXJBbmRKcXVlcnlJc1JlYWR5PWZhbHNlOwoJCQkJd2luZG93LmdTa2VsZXRvbklzUmVtb3ZlZD1mYWxzZTsKCQkJCXdpbmRvdy5nRGVsYXllZExvYWRTY3JpcHQ9d2luZG93LmdEZWxheWVkTG9hZFNjcmlwdHx8ZnVuY3Rpb24oYSxkKXtzZXRUaW1lb3V0KCgpPT57dmFyIGU9ITA7Y29uc29sZS5sb2coIkdERUxBWUVETE9BRFNDUklQVDoiK2EsZCk7dmFyIG49ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7aWYoIm9iamVjdCI9PXR5cGVvZiBkJiZudWxsIT09ZClmb3IodmFyIG8gaW4gZClkLmhhc093blByb3BlcnR5KG8pJiZudWxsIT09ZFtvXSYmKC0xIT09WyJkZWZlciIsImFzeW5jIl0uaW5kZXhPZihvKSYmKGU9ITEpLG5bb109ZFtvXSk7bi5zcmM9YSxlJiYobi5hc3luYz0hMCksZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChuKX0pfTsKCQkJCgkJCQkJLyo8IVtDREFUQVsqLwoJCQkJCXZhciBib3hCbG9ja3MgPSB7ImNhciI6eyJmYnhfY2FyXzEiOnsidmlzaWJsZSI6dHJ1ZSwiaWQiOjEsInBvc2l0aW9uIjoxLCJkcml2ZXRyYWluIjoxLCJmdWVsIjoxLCJwcmljZSI6MjY1OTQsImNvbnNvIjo1Ljc5OTk5OTk5OTk5OTk5OTgyMjM2NDMxNjA1OTk3NDk1MzUzMjIxODkzMzEwNTQ2ODc1LCJjYXJDYXRlZ29yeSI6ImNhciIsImNhck1ha2UiOiJraWEiLCJjYXJNb2RlbCI6Iks0Iiwic3BlY2lhbE9yZGVyIjowfSwiZmJ4X2Nhcl8yIjp7InZpc2libGUiOnRydWUsImlkIjoyLCJwb3NpdGlvbiI6MiwiZHJpdmV0cmFpbiI6MSwiZnVlbCI6MSwicHJpY2UiOjI2ODk0LCJjb25zbyI6NiwiY2FyQ2F0ZWdvcnkiOiJjYXIiLCJjYXJNYWtlIjoia2lhIiwiY2FyTW9kZWwiOiJLNCIsInNwZWNpYWxPcmRlciI6MH0sImZieF9jYXJfMyI6eyJ2aXNpYmxlIjp0cnVlLCJpZCI6MywicG9zaXRpb24iOjMsImRyaXZldHJhaW4iOjEsImZ1ZWwiOjEsInByaWNlIjoyNzM5NCwiY29uc28iOjYuNzAwMDAwMDAwMDAwMDAwMTc3NjM1NjgzOTQwMDI1MDQ2NDY3NzgxMDY2ODk0NTMxMjUsImNhckNhdGVnb3J5IjoiY2FyIiwiY2FyTWFrZSI6ImtpYSIsImNhck1vZGVsIjoiSzQgSGF0Y2hiYWNrIiwic3BlY2lhbE9yZGVyIjowfX0sInN1diI6eyJmYnhfc3V2XzEiOnsidmlzaWJsZSI6dHJ1ZSwiaWQiOjEsInBvc2l0aW9uIjoxLCJkcml2ZXRyYWluIjoxLCJmdWVsIjoxLCJwcmljZSI6Mjg4OTQsImNvbnNvIjo2Ljc5OTk5OTk5OTk5OTk5OTgyMjM2NDMxNjA1OTk3NDk1MzUzMjIxODkzMzEwNTQ2ODc1LCJjYXJDYXRlZ29yeSI6InN1diIsImNhck1ha2UiOiJraWEiLCJjYXJNb2RlbCI6IlNlbHRvcyIsInNwZWNpYWxPcmRlciI6MH0sImZieF9zdXZfMiI6eyJ2aXNpYmxlIjp0cnVlLCJpZCI6MiwicG9zaXRpb24iOjIsImRyaXZldHJhaW4iOjEsImZ1ZWwiOjEsInByaWNlIjozNTE0NCwiY29uc28iOjcsImNhckNhdGVnb3J5Ijoic3V2IiwiY2FyTWFrZSI6ImtpYSIsImNhck1vZGVsIjoiU3BvcnRhZ2UiLCJzcGVjaWFsT3JkZXIiOjB9fSwiaHlicmlkIjp7ImZieF9oeWJyaWRfMSI6eyJ2aXNpYmxlIjp0cnVlLCJpZCI6MSwicG9zaXRpb24iOjEsImRyaXZldHJhaW4iOjEsImZ1ZWwiOjgsInByaWNlIjozMzQ5NCwiY29uc28iOjQuNDAwMDAwMDAwMDAwMDAwMzU1MjcxMzY3ODgwMDUwMDkyOTM1NTYyMTMzNzg5MDYyNSwiY2FyQ2F0ZWdvcnkiOiJzdXYiLCJjYXJNYWtlIjoia2lhIiwiY2FyTW9kZWwiOiJOaXJvIEh5YnJpZCIsInNwZWNpYWxPcmRlciI6MH0sImZieF9oeWJyaWRfMiI6eyJ2aXNpYmxlIjp0cnVlLCJpZCI6MiwicG9zaXRpb24iOjIsImRyaXZldHJhaW4iOjEsImZ1ZWwiOjgsInByaWNlIjozMzU0NCwiY29uc28iOjQuNDAwMDAwMDAwMDAwMDAwMzU1MjcxMzY3ODgwMDUwMDkyOTM1NTYyMTMzNzg5MDYyNSwiY2FyQ2F0ZWdvcnkiOiJzdXYiLCJjYXJNYWtlIjoia2lhIiwiY2FyTW9kZWwiOiJOaXJvIEh5YnJpZCIsInNwZWNpYWxPcmRlciI6MH0sImZieF9oeWJyaWRfMyI6eyJ2aXNpYmxlIjp0cnVlLCJpZCI6MywicG9zaXRpb24iOjMsImRyaXZldHJhaW4iOjEsImZ1ZWwiOjgsInByaWNlIjo0NDM0NCwiY29uc28iOjYuNTk5OTk5OTk5OTk5OTk5NjQ0NzI4NjMyMTE5OTQ5OTA3MDY0NDM3ODY2MjEwOTM3NSwiY2FyQ2F0ZWdvcnkiOiJzdXYiLCJjYXJNYWtlIjoia2lhIiwiY2FyTW9kZWwiOiJTcG9ydGFnZSBIeWJyaWQiLCJzcGVjaWFsT3JkZXIiOjB9LCJmYnhfaHlicmlkXzQiOnsidmlzaWJsZSI6dHJ1ZSwiaWQiOjQsInBvc2l0aW9uIjo0LCJkcml2ZXRyYWluIjoxLCJmdWVsIjo4LCJwcmljZSI6NDY0OTQsImNvbnNvIjo2LjcwMDAwMDAwMDAwMDAwMDE3NzYzNTY4Mzk0MDAyNTA0NjQ2Nzc4MTA2Njg5NDUzMTI1LCJjYXJDYXRlZ29yeSI6InN1diIsImNhck1ha2UiOiJraWEiLCJjYXJNb2RlbCI6IlNvcmVudG8gSHlicmlkIiwic3BlY2lhbE9yZGVyIjowfSwiZmJ4X2h5YnJpZF81Ijp7InZpc2libGUiOnRydWUsImlkIjo1LCJwb3NpdGlvbiI6NSwiZHJpdmV0cmFpbiI6MSwiZnVlbCI6OCwicHJpY2UiOjQ4NDQ0LCJjb25zbyI6Ni45MDAwMDAwMDAwMDAwMDAzNTUyNzEzNjc4ODAwNTAwOTI5MzU1NjIxMzM3ODkwNjI1LCJjYXJDYXRlZ29yeSI6InN1diIsImNhck1ha2UiOiJraWEiLCJjYXJNb2RlbCI6IlNvcmVudG8gSHlicmlkIiwic3BlY2lhbE9yZGVyIjowfSwiZmJ4X2h5YnJpZF82Ijp7InZpc2libGUiOnRydWUsImlkIjo2LCJwb3NpdGlvbiI6NiwiZHJpdmV0cmFpbiI6MSwiZnVlbCI6OCwicHJpY2UiOjUxMjQ0LCJjb25zbyI6Ny41LCJjYXJDYXRlZ29yeSI6Im1pbml2YW4iLCJjYXJNYWtlIjoia2lhIiwiY2FyTW9kZWwiOiJDYXJuaXZhbCBIeWJyaWQiLCJzcGVjaWFsT3JkZXIiOjB9fSwicGhldiI6eyJmYnhfcGhldl8xIjp7InZpc2libGUiOnRydWUsImlkIjoxLCJwb3NpdGlvbiI6MSwiZHJpdmV0cmFpbiI6MSwiZnVlbCI6MTYsInByaWNlIjozOTU0NCwiY29uc28iOjQuOTAwMDAwMDAwMDAwMDAwMzU1MjcxMzY3ODgwMDUwMDkyOTM1NTYyMTMzNzg5MDYyNSwiY2FyQ2F0ZWdvcnkiOiJzdXYiLCJjYXJNYWtlIjoia2lhIiwiY2FyTW9kZWwiOiJOaXJvIFBsdWctSW4gSHlicmlkIiwic3BlY2lhbE9yZGVyIjowfSwiZmJ4X3BoZXZfMiI6eyJ2aXNpYmxlIjp0cnVlLCJpZCI6MiwicG9zaXRpb24iOjIsImRyaXZldHJhaW4iOjEsImZ1ZWwiOjE2LCJwcmljZSI6NDkyNDQsImNvbnNvIjo2LjQwMDAwMDAwMDAwMDAwMDM1NTI3MTM2Nzg4MDA1MDA5MjkzNTU2MjEzMzc4OTA2MjUsImNhckNhdGVnb3J5Ijoic3V2IiwiY2FyTWFrZSI6ImtpYSIsImNhck1vZGVsIjoiU3BvcnRhZ2UgUGx1Zy1JbiBIeWJyaWQiLCJzcGVjaWFsT3JkZXIiOjB9LCJmYnhfcGhldl8zIjp7InZpc2libGUiOnRydWUsImlkIjozLCJwb3NpdGlvbiI6MywiZHJpdmV0cmFpbiI6MSwiZnVlbCI6MTYsInByaWNlIjo1MTQ5NCwiY29uc28iOjYuMjk5OTk5OTk5OTk5OTk5ODIyMzY0MzE2MDU5OTc0OTUzNTMyMjE4OTMzMTA1NDY4NzUsImNhckNhdGVnb3J5Ijoic3V2IiwiY2FyTWFrZSI6ImtpYSIsImNhck1vZGVsIjoiU29yZW50byBQbHVnLUluIEh5YnJpZCIsInNwZWNpYWxPcmRlciI6MH0sImZieF9waGV2XzQiOnsidmlzaWJsZSI6dHJ1ZSwiaWQiOjQsInBvc2l0aW9uIjo0LCJkcml2ZXRyYWluIjoxLCJmdWVsIjoxNiwicHJpY2UiOjUzNDQ0LCJjb25zbyI6Ni45MDAwMDAwMDAwMDAwMDAzNTUyNzEzNjc4ODAwNTAwOTI5MzU1NjIxMzM3ODkwNjI1LCJjYXJDYXRlZ29yeSI6InN1diIsImNhck1ha2UiOiJraWEiLCJjYXJNb2RlbCI6IlNvcmVudG8gUGx1Zy1JbiBIeWJyaWQiLCJzcGVjaWFsT3JkZXIiOjB9fSwiZWxlY3RyaWMiOnsiZmJ4X2VsZWN0cmljXzEiOnsidmlzaWJsZSI6dHJ1ZSwiaWQiOjEsInBvc2l0aW9uIjoxLCJkcml2ZXRyYWluIjoxLCJmdWVsIjo0LCJwcmljZSI6NDE4NDQsImNvbnNvIjoxMDAwLCJjYXJDYXRlZ29yeSI6ImNhciIsImNhck1ha2UiOiJraWEiLCJjYXJNb2RlbCI6IkVWNCIsInNwZWNpYWxPcmRlciI6MH0sImZieF9lbGVjdHJpY18yIjp7InZpc2libGUiOnRydWUsImlkIjoyLCJwb3NpdGlvbiI6MiwiZHJpdmV0cmFpbiI6MSwiZnVlbCI6NCwicHJpY2UiOjQ2MzQ0LCJjb25zbyI6MTAwMCwiY2FyQ2F0ZWdvcnkiOiJzdXYiLCJjYXJNYWtlIjoia2lhIiwiY2FyTW9kZWwiOiJFVjUiLCJzcGVjaWFsT3JkZXIiOjB9LCJmYnhfZWxlY3RyaWNfMyI6eyJ2aXNpYmxlIjp0cnVlLCJpZCI6MywicG9zaXRpb24iOjMsImRyaXZldHJhaW4iOjEsImZ1ZWwiOjQsInByaWNlIjo0ODI5NCwiY29uc28iOjEwMDAsImNhckNhdGVnb3J5Ijoic3V2IiwiY2FyTWFrZSI6ImtpYSIsImNhck1vZGVsIjoiTmlybyBFViIsInNwZWNpYWxPcmRlciI6MH0sImZieF9lbGVjdHJpY180Ijp7InZpc2libGUiOnRydWUsImlkIjo0LCJwb3NpdGlvbiI6NCwiZHJpdmV0cmFpbiI6MywiZnVlbCI6NCwicHJpY2UiOjUxODQ0LCJjb25zbyI6MTAwMCwiY2FyQ2F0ZWdvcnkiOiJzdXYiLCJjYXJNYWtlIjoia2lhIiwiY2FyTW9kZWwiOiJFVjYiLCJzcGVjaWFsT3JkZXIiOjB9LCJmYnhfZWxlY3RyaWNfNSI6eyJ2aXNpYmxlIjp0cnVlLCJpZCI6NSwicG9zaXRpb24iOjUsImRyaXZldHJhaW4iOjMsImZ1ZWwiOjQsInByaWNlIjo2Mjg0NCwiY29uc28iOjEwMDAsImNhckNhdGVnb3J5Ijoic3V2IiwiY2FyTWFrZSI6ImtpYSIsImNhck1vZGVsIjoiRVY5Iiwic3BlY2lhbE9yZGVyIjowfSwiZmJ4X2VsZWN0cmljXzYiOnsidmlzaWJsZSI6dHJ1ZSwiaWQiOjYsInBvc2l0aW9uIjo2LCJkcml2ZXRyYWluIjozLCJmdWVsIjo0LCJwcmljZSI6NjI4NDQsImNvbnNvIjoxMDAwLCJjYXJDYXRlZ29yeSI6InN1diIsImNhck1ha2UiOiJraWEiLCJjYXJNb2RlbCI6IkVWOSIsInNwZWNpYWxPcmRlciI6MH19LCJtaW5pdmFuIjp7ImZieF9taW5pdmFuXzEiOnsidmlzaWJsZSI6dHJ1ZSwiaWQiOjEsInBvc2l0aW9uIjoxLCJkcml2ZXRyYWluIjoxLCJmdWVsIjoxLCJwcmljZSI6NDUyOTQsImNvbnNvIjo5LjMwMDAwMDAwMDAwMDAwMDcxMDU0MjczNTc2MDEwMDE4NTg3MTEyNDI2NzU3ODEyNSwiY2FyQ2F0ZWdvcnkiOiJtaW5pdmFuIiwiY2FyTWFrZSI6ImtpYSIsImNhck1vZGVsIjoiQ2Fybml2YWwiLCJzcGVjaWFsT3JkZXIiOjB9fX07CgkJCQkJLyotLSovCgkJCQkJdmFyIGJveFBvc2l0aW9ucyA9IHsiZmJ4X2Nhcl8xIjoxLCJmYnhfY2FyXzIiOjIsImZieF9jYXJfMyI6MywiZmJ4X3N1dl8xIjoxLCJmYnhfaHlicmlkXzEiOjEsImZieF9oeWJyaWRfMiI6MiwiZmJ4X3N1dl8yIjoyLCJmYnhfcGhldl8xIjoxLCJmYnhfZWxlY3RyaWNfMSI6MSwiZmJ4X2h5YnJpZF8zIjozLCJmYnhfbWluaXZhbl8xIjoxLCJmYnhfZWxlY3RyaWNfMiI6MiwiZmJ4X2h5YnJpZF80Ijo0LCJmYnhfZWxlY3RyaWNfMyI6MywiZmJ4X2h5YnJpZF81Ijo1LCJmYnhfcGhldl8yIjoyLCJmYnhfaHlicmlkXzYiOjYsImZieF9waGV2XzMiOjMsImZieF9lbGVjdHJpY180Ijo0LCJmYnhfcGhldl80Ijo0LCJmYnhfZWxlY3RyaWNfNSI6NSwiZmJ4X2VsZWN0cmljXzYiOjZ9OwoJCQkJCS8qKiBGaWx0ZXIgSlMgaW4gbmV3Y2Fycy5qcyAqKi8KCQkJCQkvKl1dPiovCgkJCQkKCgkJCQl2YXIgTGVhZENvbmZpZ3MgPSAodHlwZW9mIExlYWRDb25maWdzICE9ICd1bmRlZmluZWQnKSA\/IExlYWRDb25maWdzIDoge307CgoJCQkJbGV0IGFjdGl2ZUxhbmcgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWN0aXZlc2l0ZWxhbmd1YWdlJykgPyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWN0aXZlc2l0ZWxhbmd1YWdlJykudmFsdWUgOiAnRlJFTkNIJzsKCgkJCQlMZWFkQ29uZmlncy5EZWFsZXJBcHBvaW50bWVudCA9IHsKCgkJCQkJdGl0bGU6IChhY3RpdmVMYW5nID09ICdFTkdMSVNIJyA\/ICdSZXF1ZXN0IGFuIGFwcG9pbnRtZW50JyA6ICdQcmVuZHJlIFJlbmRlei12b3VzJyksCgkJCQkJY2xvc2VPblN1Ym1pdCA6IHRydWUsCgkJCQkJbmFtZSA6ICdEZWFsZXJBcHBvaW50bWVudCcsCgoJCQkJCW9uQmVmb3JlT3BlbjogZnVuY3Rpb24obGVhZENvbmYpewogICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS50cmlnZ2VyKCdkZWFsZXJBcHBvaW50bWVudC5zdGFydCcpOwoKCQkJCQkJY29uc3QgdGltZVR4dEVsID0gbGVhZENvbmYubGVhZE5vZGUucXVlcnlTZWxlY3RvcignLnNlbGVjdGVkVGltZScpOwoJCQkJCQljb25zdCB0aW1lSW5wdXQgPSBsZWFkQ29uZi5sZWFkTm9kZS5xdWVyeVNlbGVjdG9yKCdbbmFtZT0iZGF0ZSJdJyk7CgkJCQkJCWNvbnN0IHBpY2tlciA9IGxlYWRDb25mLmxlYWROb2RlLnF1ZXJ5U2VsZWN0b3IoJy5kYXRlcGlja2VyJyk7CgkJCQkJCWNvbnN0IHBob25lRWwgPSBsZWFkQ29uZi5sZWFkTm9kZS5xdWVyeVNlbGVjdG9yKCdbbmFtZT0icGhvbmVudW0iXScpOwoJCQkJCQljb25zdCBob3Vyc0Jsb2NrID0gbGVhZENvbmYubGVhZE5vZGUucXVlcnlTZWxlY3RvcignLmhvdXJzTGlzdCcpOwoJCQkJCQlsZXQgZGF5Tm9kZXMgPSBBcnJheS5mcm9tKGhvdXJzQmxvY2suY2hpbGRyZW4pOwoJCQkJCQlsZXQgZGF0ZUZvcm1hdCA9ICBhY3RpdmVMYW5nID09ICdFTkdMSVNIJyA\/ICdGIGogWSwgSDppJyA6ICdqIEYgWSwgSDppJzsKCgoJCQkJCQljb25zdCBzZXRTZWxlY3RlZCA9IChzZWxlY3RlZERhdGVzLCBkYXRlU3RyLCBpbnN0YW5jZSkgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGN1cnJlbnRseVNlbGVjdGVkRGF0ZSA9IHNlbGVjdGVkRGF0ZXNbMF0gfHwgbmV3IERhdGUoKTsvL2Rvbid0IHBsYXkgd2l0aCB0aGlzIG9yIG1pZ2h0IGFmZmVjdCBkYXRlL3RpbWUgc2VsZWN0aW9uCgkJCQkJCQlsZXQgZGF5TnVtID0gY3VycmVudGx5U2VsZWN0ZWREYXRlLmdldERheSgpOwoKCQkJCQkJCWRheU51bSA9IGRheU51bSA9PSAwID8gNyA6IGRheU51bTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZGF5TWluVGltZSA9IGRheU5vZGVzW2RheU51bSAtIDFdLmRhdGFzZXQubWluaG91ciB8fCAnMDk6MDAnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGRheU1heFRpbWUgPSBkYXlOb2Rlc1tkYXlOdW0gLSAxXS5kYXRhc2V0Lm1heGhvdXIgfHwgJzE3OjAwJzsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL21pblRpbWUgbWFuYWdlbWVudAogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9pZiBkYXRlIGlzIHRvZGF5LCBtaW5UaW1lIG5lZWRzIHRvIGJlIGEgbWluaW11bSBvZiAxaG91ciBsYXRlciBmcm9tIGN1cnJlbnQgdGltZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoc2VsZWN0ZWREYXRlc1swXSl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG5vdyA9IG5ldyBEYXRlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGFjY2VwdGVkRXhjZXB0aW9uID0gNTsvL21pbnV0ZXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihzZWxlY3RlZERhdGVzWzBdLnRvRGF0ZVN0cmluZygpID09IG5vdy50b0RhdGVTdHJpbmcoKSl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBtaW5Ib3VyID0gbm93LmdldEhvdXJzKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBtaW5NaW51dGUgPSBub3cuZ2V0TWludXRlcygpICsgNjA7Ly9hZGQgMSBob3VyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKG1pbk1pbnV0ZSA+PSA2MCl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5Ib3VyICs9IE1hdGguZmxvb3IobWluTWludXRlIC8gNjApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluTWludXRlID0gbWluTWludXRlICUgNjA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihtaW5NaW51dGUgJSAxNSl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9tYWtlIGl0IHNvIHRoYXQgbWludXRlcyBhcmUgZWl0aGVyIHJvdW5kZWQgdG8gbmV4dCAxNW1pbiBpbmNyZW1lbnQgb3IgdG8gdGhlIHByZXZpb3VzIG9uZSBpZiB3aXRoaW4gYWNjZXB0ZWRFeGNlcHRpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihtaW5NaW51dGUgJSAxNSA8PSBhY2NlcHRlZEV4Y2VwdGlvbil7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbk1pbnV0ZSA9IG1pbk1pbnV0ZSAtIChtaW5NaW51dGUgJSAxNSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfWVsc2UgaWYoKG1pbk1pbnV0ZSAlIDE1ID4gYWNjZXB0ZWRFeGNlcHRpb24pKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluTWludXRlID0gbWluTWludXRlICsgKDE1IC0gKG1pbk1pbnV0ZSAlIDE1KSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfWVsc2V7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9kbyBub3RoaW5nLCBhbHJlYWR5IGF0IGluY3JlbWVudAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKG1pbkhvdXIgPj0gMjQpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9ubyBtb3JlIGF2YWlsYWJsZSB0aW1lIHRvZGF5LCBzZXQgdG8gbmV4dCBkYXkgYXQgMDk6MDAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbmNlLnNldERhdGUobmV3IERhdGUoKS5mcF9pbmNyKDEpLCB0cnVlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGluc3RhbmNlLnNldCgnbWluVGltZScsIGRheU1pblRpbWUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRheU1pblRpbWUgPSBTdHJpbmcobWluSG91cikucGFkU3RhcnQoMiwnMCcpICsgJzonICsgU3RyaW5nKG1pbk1pbnV0ZSkucGFkU3RhcnQoMiwnMCcpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vbWF4VGltZSBtYW5hZ2VtZW50CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsYXN0IGFwcG9pbnRtZW50IHRpbWUgbWFuYWdlbWVudCAoMTVtaW4gYmVmb3JlIGNsb3NpbmcgdGltZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBbY2xvc2luZ0hvdXJzLCBjbG9zaW5nTWludXRlc10gPSBkYXlNYXhUaW1lLnNwbGl0KCc6JykubWFwKE51bWJlcik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZGF5RGF0ZSA9IG5ldyBEYXRlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXlEYXRlLnNldEhvdXJzKGNsb3NpbmdIb3VycywgY2xvc2luZ01pbnV0ZXMsIDAsIDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF5RGF0ZS5zZXRNaW51dGVzKGRheURhdGUuZ2V0TWludXRlcygpIC0gMTUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9mb3JtYXQgdGhlIG5ldyB0aW1lIGJhY2sgaW50byAnSEg6bW0nIGZvcm1hdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGFjdHVhbENsb3NpbmdIb3VycyA9IGRheURhdGUuZ2V0SG91cnMoKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsICcwJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgYWN0dWFsQ2xvc2luZ01pbnV0ZXMgPSBkYXlEYXRlLmdldE1pbnV0ZXMoKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsICcwJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXlNYXhUaW1lID0gYWN0dWFsQ2xvc2luZ0hvdXJzICsgJzonICsgYWN0dWFsQ2xvc2luZ01pbnV0ZXM7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9zZXQgc3RhcnQvZW5kIHRpbWUgZm9yIHRoYXQgZGF5CgkJCQkJCQlpbnN0YW5jZS5zZXQoJ21pblRpbWUnLCBkYXlNaW5UaW1lKTsKCQkJCQkJCWluc3RhbmNlLnNldCgnbWF4VGltZScsIGRheU1heFRpbWUpOwoKCQkJCQkJCS8vU2V0IGN1cnJlbnQgZGF0ZSBpbml0aWFsbHkKCQkJCQkJCXRpbWVUeHRFbC50ZXh0Q29udGVudCA9ICFzZWxlY3RlZERhdGVzLmxlbmd0aAoJCQkJCQkJCQkJCQkgID8gaW5zdGFuY2UuZm9ybWF0RGF0ZShuZXcgRGF0ZSgpLmZwX2luY3IoMSksIChhY3RpdmVMYW5nID09ICdFTkdMSVNIJyA\/ICdGIGogWSwgMTI6MDAnIDogJ2ogRiBZLCAxMjowMCcpKQoJCQkJCQkJCQkJCQkgIDogZGF0ZVN0cjsKCgkJCQkJCQkvL2dldCB0aGUgZGF0ZSBpbiBlbmdsaXNoIGFuZCBmcmVuY2ggZm9yIHRoZSBsb2NhbCBzdG9yYWdlCgkJCQkJCQl0aW1lVHh0RWwuZGF0YXNldC5lbiA9IGluc3RhbmNlLmZvcm1hdERhdGUobmV3IERhdGUoKS5mcF9pbmNyKDEpLCdGIGogWSwgMTI6MDAnLCBmbGF0cGlja3IubDEwbnMuZW4pOwoJCQkJCQkJdGltZVR4dEVsLmRhdGFzZXQuZnIgPSBpbnN0YW5jZS5mb3JtYXREYXRlKG5ldyBEYXRlKCkuZnBfaW5jcigxKSwnaiBGIFksIDEyOjAwJywgZmxhdHBpY2tyLmwxMG5zLmZyKTsKCgkJCQkJCQl0aW1lSW5wdXQudmFsdWUgPSB0aW1lVHh0RWwudGV4dENvbnRlbnQ7CgoJCQkJCQkJaW5zdGFuY2UuaG91ckVsZW1lbnQuYmx1cigpOwoJCQkJCQl9OwoKCQkJCQkJbGV0IGNsb3NlZERheXMgPSBbXTsKCQkJCQkJZGF5Tm9kZXMuZm9yRWFjaCgoZSxpKSA9PiB7CgkJCQkJCQlpZigoZS5kYXRhc2V0LmNsb3NlZCB8fCAnMCcpID09ICcxJykgY2xvc2VkRGF5cy5wdXNoKGkpCgkJCQkJCX0pOwoKCQkJCQkJLy9BZGQgZnJlbmNoIGxvY2FsaXphdGlvbiB3aGVuIG5lZWRlZAoJCQkJCQlpZihhY3RpdmVMYW5nID09ICdGUkVOQ0gnKXsKCQkJCQkJCWZsYXRwaWNrci5sb2NhbGl6ZShmbGF0cGlja3IubDEwbnMuZnIpOwoJCQkJCQl9CgoKCgkJCQkJCWNvbnN0IGZwID0gZmxhdHBpY2tyKHBpY2tlciwgewoJCQkJCQkJaW5saW5lOnRydWUsCgkJCQkJCQllbmFibGVUaW1lOiB0cnVlLAoJCQkJCQkJbWluRGF0ZTogJ3RvZGF5JywvL2JhY2sgZnJvbSBuZXcgRGF0ZSgpLmZwX2luY3IoMSkgYnV0IGFsc28gYWRkZWQgdGltZSB2YWxpZGF0aW9uIGZvciBtaW5UaW1lCgkJCQkJCQltaW5UaW1lOiAiMDk6MDAiLAoJCQkJCQkJbWF4VGltZTogIjE3OjAwIiwKCQkJCQkJCWRhdGVGb3JtYXQ6IGRhdGVGb3JtYXQsLy8iRCwgaiBGIFksIEg6aSIsCgkJCQkJCQltaW51dGVJbmNyZW1lbnQ6MTUsCgkJCQkJCQl0aW1lXzI0aHI6dHJ1ZSwKCQkJCQkJCW9uQ2hhbmdlOiBzZXRTZWxlY3RlZCwKCQkJCQkJCW9uUmVhZHk6IHNldFNlbGVjdGVkLAoJCQkJCQkJZGlzYWJsZTogWwoJCQkJCQkJCWZ1bmN0aW9uKGRhdGUpewoJCQkJCQkJCQlsZXQgZGF5TnVtID0gZGF0ZS5nZXREYXkoKSA9PSAwID8gNyA6IGRhdGUuZ2V0RGF5KCk7CgkJCQkJCQkJCXJldHVybiBjbG9zZWREYXlzLmluY2x1ZGVzKGRheU51bSAtIDEpOwoJCQkJCQkJCX0KCQkJCQkJCV0sCgkJCQkJCQlsb2NhbGU6IHsKCQkJCQkJCQlmaXJzdERheU9mV2VlazogMSAvLyBzdGFydCB3ZWVrIG9uIE1vbmRheQoJCQkJCQkJfQoKCQkJCQkJfSk7CgoJCQkJCX0sCgoJCQkJCW9uQmVmb3JlU3VibWl0IDogKGxlYWRDb25mKSA9PiB7CgkJCQkJCWNvbnN0IHRpbWVUeHRFbCA9IGxlYWRDb25mLmxlYWROb2RlLnF1ZXJ5U2VsZWN0b3IoJy5zZWxlY3RlZFRpbWUnKTsKCQkJCQkJZW1haWxIYW5kbGVyLmRlYWxlckFwcG9pbnRtZW50RGF0YSA9IHsKCQkJCQkJCWRhdGUgOiB0aW1lVHh0RWwudGV4dENvbnRlbnQKCQkJCQkJfTsKCQkJCQl9LAoKCQkJCQlvbkFmdGVyU3VibWl0IDogKGxlYWRDb25mKSA9PiB7CgoJCQkJCQljb25zdCB0aW1lVHh0RWwgPSBsZWFkQ29uZi5sZWFkTm9kZS5xdWVyeVNlbGVjdG9yKCcuc2VsZWN0ZWRUaW1lJyk7CgoJCQkJCQljb25zdCBjYiA9IHRyYWNrU3RlcCA9PiB7CgkJCQkJCQl0cmFja1N0ZXAuZGF0YXNldC5jb21wbF90eHRfZnIgPSB0cmFja1N0ZXAuZGF0YXNldC5jb21wbF90eHRfZnIucmVwbGFjZSgneyRBUFBPSU5UX0RBVEV9JywgdGltZVR4dEVsLmRhdGFzZXQuZnIpOwoJCQkJCQkJdHJhY2tTdGVwLmRhdGFzZXQuY29tcGxfdHh0X2VuID0gdHJhY2tTdGVwLmRhdGFzZXQuY29tcGxfdHh0X2VuLnJlcGxhY2UoJ3skQVBQT0lOVF9EQVRFfScsIHRpbWVUeHRFbC5kYXRhc2V0LmVuKTsKCQkJCQkJfTsKCgkJCQkJCWxldCBjb21wbGV0ZUV2ZW50ID0gbmV3IEN1c3RvbUV2ZW50KCd0cmFja3N0ZXAuY29tcGxldGUnLHsKCQkJCQkJCWRldGFpbDp7CgkJCQkJCQkJc3RlcElkIDogJ0RlYWxlckFwcG9pbnRtZW50JywKCQkJCQkJCQlvbkNvbXBsZXRlIDogY2IKCQkJCQkJCX0KCQkJCQkJfSk7CgoJCQkJCQlkb2N1bWVudC5kaXNwYXRjaEV2ZW50KGNvbXBsZXRlRXZlbnQpOwoKICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkudHJpZ2dlcignZGVhbGVyQXBwb2ludG1lbnQuZW5kJyk7CgkJCQkJfQoKCQkJCX0KCgkJCQovKiogL20vanMvc2tlbGV0b24uYmVmb3JlLmpzICoqLwp2YXIgX19fZDJjX3NrZWxldG9uYmVmb3JlanNfY19vbj0iMjAyNS0wNS0yMyAxNzoxMzowMyI7J3VzZSBzdHJpY3QnO3ZhciBfX19kMmNfc2tlbGV0b25iZWZvcmVqc19jX29uPSIyMDI0LTAxLTMxIDE0OjM3OjU3IjsidXNlIHN0cmljdCI7X19fZDJjX3NrZWxldG9uYmVmb3JlanNfY19vbj0iMjAyMy0wNi0wMSAxMjozMDoxOSI7InVzZSBzdHJpY3QiO2xldCAkanNjb21wJG51bGxpc2gkdG1wMDt3aW5kb3cuZ1NwZWVkQ29ubj1wYXJzZUludChNYXRoLmZsb29yKChEYXRlLm5vdygpLShudWxsIT0oJGpzY29tcCRudWxsaXNoJHRtcDA9d2luZG93LmdUZXN0U3BlZWRDb25uKT8kanNjb21wJG51bGxpc2gkdG1wMDowKSkvMUUzKSk7bGV0ICRqc2NvbXAkbnVsbGlzaCR0bXAxO2NvbnNvbGUubG9nKCJHU1BFRUQtQkVGT1JFOiIrKERhdGUubm93KCktKG51bGwhPSgkanNjb21wJG51bGxpc2gkdG1wMT13aW5kb3cuZ1Rlc3RTcGVlZENvbm4pPyRqc2NvbXAkbnVsbGlzaCR0bXAxOjApKS8xRTMpOwovKiogL20vanMvanF1ZXJ5LmpzICoqLwp2YXIgX19fZDJjX2pxdWVyeWpzX2Nfb249IjIwMjUtMDUtMjMgMTc6MDU6NDkiOyd1c2Ugc3RyaWN0Jzt2YXIgX19fZDJjX2pxdWVyeWpzX2Nfb249IjIwMjQtMDMtMjUgMTI6MzE6MzMiOyJ1c2Ugc3RyaWN0IjsKIWZ1bmN0aW9uKG4sZGEpeyJvYmplY3QiPT10eXBlb2YgbW9kdWxlJiYib2JqZWN0Ij09dHlwZW9mIG1vZHVsZS5leHBvcnRzP21vZHVsZS5leHBvcnRzPW4uZG9jdW1lbnQ\/ZGEobiwhMCk6ZnVuY3Rpb24od2Epe2lmKCF3YS5kb2N1bWVudCl0aHJvdyBFcnJvcigialF1ZXJ5IHJlcXVpcmVzIGEgd2luZG93IHdpdGggYSBkb2N1bWVudCIpO3JldHVybiBkYSh3YSl9OmRhKG4pfSgidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6dGhpcyxmdW5jdGlvbihuLGRhKXtmdW5jdGlvbiB3YShhLGIsYyl7dmFyIGUsZixnPShjPWN8fEwpLmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpO2lmKGcudGV4dD1hLGIpZm9yKGUgaW4gTGMpKGY9YltlXXx8Yi5nZXRBdHRyaWJ1dGUmJmIuZ2V0QXR0cmlidXRlKGUpKSYmZy5zZXRBdHRyaWJ1dGUoZSxmKTtjLmhlYWQuYXBwZW5kQ2hpbGQoZykucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChnKX1mdW5jdGlvbiBVKGEpe3JldHVybiBudWxsPT1hP2ErCiIiOiJvYmplY3QiPT10eXBlb2YgYXx8ImZ1bmN0aW9uIj09dHlwZW9mIGE\/TWJba2MuY2FsbChhKV18fCJvYmplY3QiOnR5cGVvZiBhfWZ1bmN0aW9uIGViKGEpe3ZhciBiPSEhYSYmImxlbmd0aCJpbiBhJiZhLmxlbmd0aCxjPVUoYSk7cmV0dXJuIU0oYSkmJiFrYihhKSYmKCJhcnJheSI9PT1jfHwwPT09Ynx8Im51bWJlciI9PXR5cGVvZiBiJiYwPGImJmItMSBpbiBhKX1mdW5jdGlvbiBYKGEsYil7cmV0dXJuIGEubm9kZU5hbWUmJmEubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PWIudG9Mb3dlckNhc2UoKX1mdW5jdGlvbiBiYShhLGIpe3JldHVybiBiPyJceDAwIj09PWE\/Ilx1ZmZmZCI6YS5zbGljZSgwLC0xKSsiXFwiK2EuY2hhckNvZGVBdChhLmxlbmd0aC0xKS50b1N0cmluZygxNikrIiAiOiJcXCIrYX1mdW5jdGlvbiBqYShhLGIsYyl7cmV0dXJuIE0oYik\/ZC5ncmVwKGEsZnVuY3Rpb24oZSxmKXtyZXR1cm4hIWIuY2FsbChlLGYsZSkhPT1jfSk6Yi5ub2RlVHlwZT9kLmdyZXAoYSwKZnVuY3Rpb24oZSl7cmV0dXJuIGU9PT1iIT09Y30pOiJzdHJpbmciIT10eXBlb2YgYj9kLmdyZXAoYSxmdW5jdGlvbihlKXtyZXR1cm4tMTxOYS5jYWxsKGIsZSkhPT1jfSk6ZC5maWx0ZXIoYixhLGMpfWZ1bmN0aW9uIGxiKGEsYil7Zm9yKDsoYT1hW2JdKSYmMSE9PWEubm9kZVR5cGU7KTtyZXR1cm4gYX1mdW5jdGlvbiBZYShhKXtyZXR1cm4gYX1mdW5jdGlvbiBaYShhKXt0aHJvdyBhO31mdW5jdGlvbiBtYihhLGIsYyxlKXt2YXIgZjt0cnl7YSYmTShmPWEucHJvbWlzZSk\/Zi5jYWxsKGEpLmRvbmUoYikuZmFpbChjKTphJiZNKGY9YS50aGVuKT9mLmNhbGwoYSxiLGMpOmIuYXBwbHkodm9pZCAwLFthXS5zbGljZShlKSl9Y2F0Y2goZyl7Yy5hcHBseSh2b2lkIDAsW2ddKX19ZnVuY3Rpb24gT2EoKXtMLnJlbW92ZUV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLE9hKTtuLnJlbW92ZUV2ZW50TGlzdGVuZXIoImxvYWQiLE9hKTtkLnJlYWR5KCl9ZnVuY3Rpb24gTmIoYSxiKXtyZXR1cm4gYi50b1VwcGVyQ2FzZSgpfQpmdW5jdGlvbiBCYShhKXtyZXR1cm4gYS5yZXBsYWNlKE1jLCJtcy0iKS5yZXBsYWNlKE5jLE5iKX1mdW5jdGlvbiBKYSgpe3RoaXMuZXhwYW5kbz1kLmV4cGFuZG8rSmEudWlkKyt9ZnVuY3Rpb24gT2IoYSxiLGMpe3ZhciBlLGY7aWYodm9pZCAwPT09YyYmMT09PWEubm9kZVR5cGUpaWYoZT0iZGF0YS0iK2IucmVwbGFjZShPYywiLSQmIikudG9Mb3dlckNhc2UoKSwic3RyaW5nIj09dHlwZW9mKGM9YS5nZXRBdHRyaWJ1dGUoZSkpKXt0cnl7Yz0idHJ1ZSI9PT0oZj1jKXx8ImZhbHNlIiE9PWYmJigibnVsbCI9PT1mP251bGw6Zj09PStmKyIiPytmOlBjLnRlc3QoZik\/SlNPTi5wYXJzZShmKTpmKX1jYXRjaChnKXt9eGEuc2V0KGEsYixjKX1lbHNlIGM9dm9pZCAwO3JldHVybiBjfWZ1bmN0aW9uIFBiKGEsYixjLGUpe3ZhciBmLGcsaD0yMCxtPWU\/ZnVuY3Rpb24oKXtyZXR1cm4gZS5jdXIoKX06ZnVuY3Rpb24oKXtyZXR1cm4gZC5jc3MoYSxiLCIiKX0sbD1tKCksdD1jJiZjWzNdfHwKKGQuY3NzTnVtYmVyW2JdPyIiOiJweCIpLHc9YS5ub2RlVHlwZSYmKGQuY3NzTnVtYmVyW2JdfHwicHgiIT09dCYmK2wpJiZ5Yi5leGVjKGQuY3NzKGEsYikpO2lmKHcmJndbM10hPT10KXtsLz0yO3Q9dHx8d1szXTtmb3Iodz0rbHx8MTtoLS07KWQuc3R5bGUoYSxiLHcrdCksMD49KDEtZykqKDEtKGc9bSgpL2x8fC41KSkmJihoPTApLHcvPWc7dyo9MjtkLnN0eWxlKGEsYix3K3QpO2M9Y3x8W119cmV0dXJuIGMmJih3PSt3fHwrbHx8MCxmPWNbMV0\/dysoY1sxXSsxKSpjWzJdOitjWzJdLGUmJihlLnVuaXQ9dCxlLnN0YXJ0PXcsZS5lbmQ9ZikpLGZ9ZnVuY3Rpb24gJGEoYSxiKXtmb3IodmFyIGMsZSxmLGcsaCxtLGwsdD1bXSx3PTAscj1hLmxlbmd0aDt3PHI7dysrKShlPWFbd10pLnN0eWxlJiYoYz1lLnN0eWxlLmRpc3BsYXksYj8oIm5vbmUiPT09YyYmKHRbd109Ry5nZXQoZSwiZGlzcGxheSIpfHxudWxsLHRbd118fChlLnN0eWxlLmRpc3BsYXk9IiIpKSwiIj09PWUuc3R5bGUuZGlzcGxheSYmClFiKGUpJiYodFt3XT0obD1oPWc9dm9pZCAwLGg9KGY9ZSkub3duZXJEb2N1bWVudCxtPWYubm9kZU5hbWUsKGw9bGNbbV0pfHwoZz1oLmJvZHkuYXBwZW5kQ2hpbGQoaC5jcmVhdGVFbGVtZW50KG0pKSxsPWQuY3NzKGcsImRpc3BsYXkiKSxnLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZyksIm5vbmUiPT09bCYmKGw9ImJsb2NrIiksbGNbbV09bCkpKSk6Im5vbmUiIT09YyYmKHRbd109Im5vbmUiLEcuc2V0KGUsImRpc3BsYXkiLGMpKSk7Zm9yKHc9MDt3PHI7dysrKW51bGwhPXRbd10mJihhW3ddLnN0eWxlLmRpc3BsYXk9dFt3XSk7cmV0dXJuIGF9ZnVuY3Rpb24gc2EoYSxiKXt2YXIgYztyZXR1cm4gYz0idW5kZWZpbmVkIiE9dHlwZW9mIGEuZ2V0RWxlbWVudHNCeVRhZ05hbWU\/YS5nZXRFbGVtZW50c0J5VGFnTmFtZShifHwiKiIpOiJ1bmRlZmluZWQiIT10eXBlb2YgYS5xdWVyeVNlbGVjdG9yQWxsP2EucXVlcnlTZWxlY3RvckFsbChifHwiKiIpOltdLHZvaWQgMD09PWJ8fGImJgpYKGEsYik\/ZC5tZXJnZShbYV0sYyk6Y31mdW5jdGlvbiBuYihhLGIpe2Zvcih2YXIgYz0wLGU9YS5sZW5ndGg7YzxlO2MrKylHLnNldChhW2NdLCJnbG9iYWxFdmFsIiwhYnx8Ry5nZXQoYltjXSwiZ2xvYmFsRXZhbCIpKX1mdW5jdGlvbiBSYihhLGIsYyxlLGYpe2Zvcih2YXIgZyxoLG0sbCx0PWIuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpLHc9W10scj0wLHo9YS5sZW5ndGg7cjx6O3IrKylpZigoZz1hW3JdKXx8MD09PWcpaWYoIm9iamVjdCI9PT1VKGcpKWQubWVyZ2UodyxnLm5vZGVUeXBlP1tnXTpnKTtlbHNlIGlmKFFjLnRlc3QoZykpe2g9aHx8dC5hcHBlbmRDaGlsZChiLmNyZWF0ZUVsZW1lbnQoImRpdiIpKTttPShtYy5leGVjKGcpfHxbIiIsIiJdKVsxXS50b0xvd2VyQ2FzZSgpO209Q2FbbV18fENhLl9kZWZhdWx0O2guaW5uZXJIVE1MPW1bMV0rZC5odG1sUHJlZmlsdGVyKGcpK21bMl07Zm9yKG09bVswXTttLS07KWg9aC5sYXN0Q2hpbGQ7ZC5tZXJnZSh3LGguY2hpbGROb2Rlcyk7CihoPXQuZmlyc3RDaGlsZCkudGV4dENvbnRlbnQ9IiJ9ZWxzZSB3LnB1c2goYi5jcmVhdGVUZXh0Tm9kZShnKSk7dC50ZXh0Q29udGVudD0iIjtmb3Iocj0wO2c9d1tyKytdOylpZihlJiYtMTxkLmluQXJyYXkoZyxlKSlmJiZmLnB1c2goZyk7ZWxzZSBpZihsPW9iKGcpLGg9c2EodC5hcHBlbmRDaGlsZChnKSwic2NyaXB0IiksbCYmbmIoaCksYylmb3IobT0wO2c9aFttKytdOyluYy50ZXN0KGcudHlwZXx8IiIpJiZjLnB1c2goZyk7cmV0dXJuIHR9ZnVuY3Rpb24gYWIoKXtyZXR1cm4hMH1mdW5jdGlvbiBiYigpe3JldHVybiExfWZ1bmN0aW9uIGZiKGEsYixjLGUsZixnKXt2YXIgaCxtO2lmKCJvYmplY3QiPT10eXBlb2YgYil7Zm9yKG0gaW4ic3RyaW5nIiE9dHlwZW9mIGMmJihlPWV8fGMsYz12b2lkIDApLGIpZmIoYSxtLGMsZSxiW21dLGcpO3JldHVybiBhfWlmKG51bGw9PWUmJm51bGw9PWY\/KGY9YyxlPWM9dm9pZCAwKTpudWxsPT1mJiYoInN0cmluZyI9PXR5cGVvZiBjPyhmPQplLGU9dm9pZCAwKTooZj1lLGU9YyxjPXZvaWQgMCkpLCExPT09ZilmPWJiO2Vsc2UgaWYoIWYpcmV0dXJuIGE7cmV0dXJuIDE9PT1nJiYoaD1mLChmPWZ1bmN0aW9uKGwpe3JldHVybiBkKCkub2ZmKGwpLGguYXBwbHkodGhpcyxhcmd1bWVudHMpfSkuZ3VpZD1oLmd1aWR8fChoLmd1aWQ9ZC5ndWlkKyspKSxhLmVhY2goZnVuY3Rpb24oKXtkLmV2ZW50LmFkZCh0aGlzLGIsZixlLGMpfSl9ZnVuY3Rpb24gcGIoYSxiLGMpe2M\/KEcuc2V0KGEsYiwhMSksZC5ldmVudC5hZGQoYSxiLHtuYW1lc3BhY2U6ITEsaGFuZGxlcjpmdW5jdGlvbihlKXt2YXIgZixnPUcuZ2V0KHRoaXMsYik7aWYoMSZlLmlzVHJpZ2dlciYmdGhpc1tiXSlpZihnKShkLmV2ZW50LnNwZWNpYWxbYl18fHt9KS5kZWxlZ2F0ZVR5cGUmJmUuc3RvcFByb3BhZ2F0aW9uKCk7ZWxzZXtpZihnPXlhLmNhbGwoYXJndW1lbnRzKSxHLnNldCh0aGlzLGIsZyksdGhpc1tiXSgpLGY9Ry5nZXQodGhpcyxiKSxHLnNldCh0aGlzLGIsCiExKSxnIT09ZilyZXR1cm4gZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKSxlLnByZXZlbnREZWZhdWx0KCksZn1lbHNlIGcmJihHLnNldCh0aGlzLGIsZC5ldmVudC50cmlnZ2VyKGdbMF0sZy5zbGljZSgxKSx0aGlzKSksZS5zdG9wUHJvcGFnYXRpb24oKSxlLmlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkPWFiKX19KSk6dm9pZCAwPT09Ry5nZXQoYSxiKSYmZC5ldmVudC5hZGQoYSxiLGFiKX1mdW5jdGlvbiBTYihhLGIpe3JldHVybiBYKGEsInRhYmxlIikmJlgoMTEhPT1iLm5vZGVUeXBlP2I6Yi5maXJzdENoaWxkLCJ0ciIpJiZkKGEpLmNoaWxkcmVuKCJ0Ym9keSIpWzBdfHxhfWZ1bmN0aW9uIHFiKGEpe3JldHVybiBhLnR5cGU9KG51bGwhPT1hLmdldEF0dHJpYnV0ZSgidHlwZSIpKSsiLyIrYS50eXBlLGF9ZnVuY3Rpb24gJGIoYSl7cmV0dXJuInRydWUvIj09PShhLnR5cGV8fCIiKS5zbGljZSgwLDUpP2EudHlwZT1hLnR5cGUuc2xpY2UoNSk6YS5yZW1vdmVBdHRyaWJ1dGUoInR5cGUiKSwKYX1mdW5jdGlvbiBnYihhLGIpe3ZhciBjLGUsZixnLGg7aWYoMT09PWIubm9kZVR5cGUpe2lmKEcuaGFzRGF0YShhKSYmKGg9Ry5nZXQoYSkuZXZlbnRzKSlmb3IoZSBpbiBHLnJlbW92ZShiLCJoYW5kbGUgZXZlbnRzIiksaCl7dmFyIG09MDtmb3IoYz1oW2VdLmxlbmd0aDttPGM7bSsrKWQuZXZlbnQuYWRkKGIsZSxoW2VdW21dKX14YS5oYXNEYXRhKGEpJiYoZj14YS5hY2Nlc3MoYSksZz1kLmV4dGVuZCh7fSxmKSx4YS5zZXQoYixnKSl9fWZ1bmN0aW9uIGNiKGEsYixjLGUpe2I9b2MoYik7dmFyIGYsZyxoLG09MCxsPWEubGVuZ3RoLHQ9bC0xLHc9YlswXSxyPU0odyk7aWYocnx8MTxsJiYic3RyaW5nIj09dHlwZW9mIHcmJiFOLmNoZWNrQ2xvbmUmJlJjLnRlc3QodykpcmV0dXJuIGEuZWFjaChmdW5jdGlvbihEKXt2YXIgRj1hLmVxKEQpO3ImJihiWzBdPXcuY2FsbCh0aGlzLEQsRi5odG1sKCkpKTtjYihGLGIsYyxlKX0pO2lmKGwmJihnPShmPVJiKGIsYVswXS5vd25lckRvY3VtZW50LAohMSxhLGUpKS5maXJzdENoaWxkLDE9PT1mLmNoaWxkTm9kZXMubGVuZ3RoJiYoZj1nKSxnfHxlKSl7Zm9yKGg9KGc9ZC5tYXAoc2EoZiwic2NyaXB0IikscWIpKS5sZW5ndGg7bTxsO20rKyl7dmFyIHo9ZjttIT09dCYmKHo9ZC5jbG9uZSh6LCEwLCEwKSxoJiZkLm1lcmdlKGcsc2Eoeiwic2NyaXB0IikpKTtjLmNhbGwoYVttXSx6LG0pfWlmKGgpZm9yKGY9Z1tnLmxlbmd0aC0xXS5vd25lckRvY3VtZW50LGQubWFwKGcsJGIpLG09MDttPGg7bSsrKXo9Z1ttXSxuYy50ZXN0KHoudHlwZXx8IiIpJiYhRy5hY2Nlc3MoeiwiZ2xvYmFsRXZhbCIpJiZkLmNvbnRhaW5zKGYseikmJih6LnNyYyYmIm1vZHVsZSIhPT0oei50eXBlfHwiIikudG9Mb3dlckNhc2UoKT9kLl9ldmFsVXJsJiYhei5ub01vZHVsZSYmZC5fZXZhbFVybCh6LnNyYyx7bm9uY2U6ei5ub25jZXx8ei5nZXRBdHRyaWJ1dGUoIm5vbmNlIil9LGYpOndhKHoudGV4dENvbnRlbnQucmVwbGFjZShTYywiIikseixmKSl9cmV0dXJuIGF9CmZ1bmN0aW9uIFRiKGEsYixjKXtmb3IodmFyIGU9Yj9kLmZpbHRlcihiLGEpOmEsZj0wO251bGwhPShiPWVbZl0pO2YrKyljfHwxIT09Yi5ub2RlVHlwZXx8ZC5jbGVhbkRhdGEoc2EoYikpLGIucGFyZW50Tm9kZSYmKGMmJm9iKGIpJiZuYihzYShiLCJzY3JpcHQiKSksYi5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGIpKTtyZXR1cm4gYX1mdW5jdGlvbiBLYShhLGIsYyl7dmFyIGUsZixnLGgsbT1hYy50ZXN0KGIpLGw9YS5zdHlsZTtyZXR1cm4oYz1jfHxVYihhKSkmJihoPWMuZ2V0UHJvcGVydHlWYWx1ZShiKXx8Y1tiXSxtJiZoJiYoaD1oLnJlcGxhY2UoemIsIiQxIil8fHZvaWQgMCksIiIhPT1ofHxvYihhKXx8KGg9ZC5zdHlsZShhLGIpKSwhTi5waXhlbEJveFN0eWxlcygpJiZiYy50ZXN0KGgpJiZUYy50ZXN0KGIpJiYoZT1sLndpZHRoLGY9bC5taW5XaWR0aCxnPWwubWF4V2lkdGgsbC5taW5XaWR0aD1sLm1heFdpZHRoPWwud2lkdGg9aCxoPWMud2lkdGgsbC53aWR0aD1lLGwubWluV2lkdGg9CmYsbC5tYXhXaWR0aD1nKSksdm9pZCAwIT09aD9oKyIiOmh9ZnVuY3Rpb24gVmIoYSxiKXtyZXR1cm57Z2V0OmZ1bmN0aW9uKCl7aWYoIWEoKSlyZXR1cm4odGhpcy5nZXQ9YikuYXBwbHkodGhpcyxhcmd1bWVudHMpO2RlbGV0ZSB0aGlzLmdldH19fWZ1bmN0aW9uIEFiKGEpe3ZhciBiO2lmKCEoYj1kLmNzc1Byb3BzW2FdfHxwY1thXSkpe2lmKCEoYSBpbiBxYykpe2E6e2I9YTtmb3IodmFyIGM9YlswXS50b1VwcGVyQ2FzZSgpK2Iuc2xpY2UoMSksZT1yYy5sZW5ndGg7ZS0tOylpZigoYj1yY1tlXStjKWluIHFjKWJyZWFrIGE7Yj12b2lkIDB9YT1wY1thXT1ifHxhfWI9YX1yZXR1cm4gYn1mdW5jdGlvbiBXYihhLGIsYyl7cmV0dXJuKGE9eWIuZXhlYyhiKSk\/TWF0aC5tYXgoMCxhWzJdLShjfHwwKSkrKGFbM118fCJweCIpOmJ9ZnVuY3Rpb24gcmIoYSxiLGMsZSxmLGcpe3ZhciBoPSJ3aWR0aCI9PT1iPzE6MCxtPTAsbD0wLHQ9MDtpZihjPT09KGU\/ImJvcmRlciI6ImNvbnRlbnQiKSlyZXR1cm4gMDsKZm9yKDs0Pmg7aCs9MikibWFyZ2luIj09PWMmJih0Kz1kLmNzcyhhLGMrUGFbaF0sITAsZikpLGU\/KCJjb250ZW50Ij09PWMmJihsLT1kLmNzcyhhLCJwYWRkaW5nIitQYVtoXSwhMCxmKSksIm1hcmdpbiIhPT1jJiYobC09ZC5jc3MoYSwiYm9yZGVyIitQYVtoXSsiV2lkdGgiLCEwLGYpKSk6KGwrPWQuY3NzKGEsInBhZGRpbmciK1BhW2hdLCEwLGYpLCJwYWRkaW5nIiE9PWM\/bCs9ZC5jc3MoYSwiYm9yZGVyIitQYVtoXSsiV2lkdGgiLCEwLGYpOm0rPWQuY3NzKGEsImJvcmRlciIrUGFbaF0rIldpZHRoIiwhMCxmKSk7cmV0dXJuIWUmJjA8PWcmJihsKz1NYXRoLm1heCgwLE1hdGguY2VpbChhWyJvZmZzZXQiK2JbMF0udG9VcHBlckNhc2UoKStiLnNsaWNlKDEpXS1nLWwtbS0uNSkpfHwwKSxsK3R9ZnVuY3Rpb24gQmIoYSxiLGMpe3ZhciBlPVViKGEpLGY9KCFOLmJveFNpemluZ1JlbGlhYmxlKCl8fGMpJiYiYm9yZGVyLWJveCI9PT1kLmNzcyhhLCJib3hTaXppbmciLCExLGUpLGc9CmYsaD1LYShhLGIsZSksbT0ib2Zmc2V0IitiWzBdLnRvVXBwZXJDYXNlKCkrYi5zbGljZSgxKTtpZihiYy50ZXN0KGgpKXtpZighYylyZXR1cm4gaDtoPSJhdXRvIn1yZXR1cm4oIU4uYm94U2l6aW5nUmVsaWFibGUoKSYmZnx8IU4ucmVsaWFibGVUckRpbWVuc2lvbnMoKSYmWChhLCJ0ciIpfHwiYXV0byI9PT1ofHwhcGFyc2VGbG9hdChoKSYmImlubGluZSI9PT1kLmNzcyhhLCJkaXNwbGF5IiwhMSxlKSkmJmEuZ2V0Q2xpZW50UmVjdHMoKS5sZW5ndGgmJihmPSJib3JkZXItYm94Ij09PWQuY3NzKGEsImJveFNpemluZyIsITEsZSksKGc9bSBpbiBhKSYmKGg9YVttXSkpLChoPXBhcnNlRmxvYXQoaCl8fDApK3JiKGEsYixjfHwoZj8iYm9yZGVyIjoiY29udGVudCIpLGcsZSxoKSsicHgifWZ1bmN0aW9uIHphKGEsYixjLGUsZil7cmV0dXJuIG5ldyB6YS5wcm90b3R5cGUuaW5pdChhLGIsYyxlLGYpfWZ1bmN0aW9uIENiKCl7WGImJighMT09PUwuaGlkZGVuJiZuLnJlcXVlc3RBbmltYXRpb25GcmFtZT8Kbi5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoQ2IpOm4uc2V0VGltZW91dChDYixkLmZ4LmludGVydmFsKSxkLmZ4LnRpY2soKSl9ZnVuY3Rpb24gRGIoKXtyZXR1cm4gbi5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7c2I9dm9pZCAwfSksc2I9RGF0ZS5ub3coKX1mdW5jdGlvbiB0YihhLGIpe3ZhciBjLGU9MCxmPXtoZWlnaHQ6YX07Zm9yKGI9Yj8xOjA7ND5lO2UrPTItYilmWyJtYXJnaW4iKyhjPVBhW2VdKV09ZlsicGFkZGluZyIrY109YTtyZXR1cm4gYiYmKGYub3BhY2l0eT1mLndpZHRoPWEpLGZ9ZnVuY3Rpb24gdShhLGIsYyl7Zm9yKHZhciBlLGY9KHgudHdlZW5lcnNbYl18fFtdKS5jb25jYXQoeC50d2VlbmVyc1siKiJdKSxnPTAsaD1mLmxlbmd0aDtnPGg7ZysrKWlmKGU9ZltnXS5jYWxsKGMsYixhKSlyZXR1cm4gZX1mdW5jdGlvbiB4KGEsYixjKXt2YXIgZSxmPTAsZz14LnByZWZpbHRlcnMubGVuZ3RoLGg9ZC5EZWZlcnJlZCgpLmFsd2F5cyhmdW5jdGlvbigpe2RlbGV0ZSBtLmVsZW19KSwKbT1mdW5jdGlvbigpe2lmKGUpcmV0dXJuITE7dmFyIHQ9c2J8fERiKCk7dD1NYXRoLm1heCgwLGwuc3RhcnRUaW1lK2wuZHVyYXRpb24tdCk7Zm9yKHZhciB3PTEtKHQvbC5kdXJhdGlvbnx8MCkscj0wLHo9bC50d2VlbnMubGVuZ3RoO3I8ejtyKyspbC50d2VlbnNbcl0ucnVuKHcpO3JldHVybiBoLm5vdGlmeVdpdGgoYSxbbCx3LHRdKSwxPncmJno\/dDooenx8aC5ub3RpZnlXaXRoKGEsW2wsMSwwXSksaC5yZXNvbHZlV2l0aChhLFtsXSksITEpfSxsPWgucHJvbWlzZSh7ZWxlbTphLHByb3BzOmQuZXh0ZW5kKHt9LGIpLG9wdHM6ZC5leHRlbmQoITAse3NwZWNpYWxFYXNpbmc6e30sZWFzaW5nOmQuZWFzaW5nLl9kZWZhdWx0fSxjKSxvcmlnaW5hbFByb3BlcnRpZXM6YixvcmlnaW5hbE9wdGlvbnM6YyxzdGFydFRpbWU6c2J8fERiKCksZHVyYXRpb246Yy5kdXJhdGlvbix0d2VlbnM6W10sY3JlYXRlVHdlZW46ZnVuY3Rpb24odCx3KXt0PWQuVHdlZW4oYSxsLm9wdHMsdCx3LGwub3B0cy5zcGVjaWFsRWFzaW5nW3RdfHwKbC5vcHRzLmVhc2luZyk7cmV0dXJuIGwudHdlZW5zLnB1c2godCksdH0sc3RvcDpmdW5jdGlvbih0KXt2YXIgdz0wLHI9dD9sLnR3ZWVucy5sZW5ndGg6MDtpZihlKXJldHVybiB0aGlzO2ZvcihlPSEwO3c8cjt3KyspbC50d2VlbnNbd10ucnVuKDEpO3JldHVybiB0PyhoLm5vdGlmeVdpdGgoYSxbbCwxLDBdKSxoLnJlc29sdmVXaXRoKGEsW2wsdF0pKTpoLnJlamVjdFdpdGgoYSxbbCx0XSksdGhpc319KTtjPWwucHJvcHM7IWZ1bmN0aW9uKHQsdyl7dmFyIHIseixELEYsTztmb3IociBpbiB0KWlmKEQ9d1t6PUJhKHIpXSxGPXRbcl0sQXJyYXkuaXNBcnJheShGKSYmKEQ9RlsxXSxGPXRbcl09RlswXSksciE9PXomJih0W3pdPUYsZGVsZXRlIHRbcl0pLChPPWQuY3NzSG9va3Nbel0pJiYiZXhwYW5kImluIE8pZm9yKHIgaW4gRj1PLmV4cGFuZChGKSxkZWxldGUgdFt6XSxGKXIgaW4gdHx8KHRbcl09RltyXSx3W3JdPUQpO2Vsc2Ugd1t6XT1EfShjLGwub3B0cy5zcGVjaWFsRWFzaW5nKTsKZm9yKDtmPGc7ZisrKWlmKGI9eC5wcmVmaWx0ZXJzW2ZdLmNhbGwobCxhLGMsbC5vcHRzKSlyZXR1cm4gTShiLnN0b3ApJiYoZC5fcXVldWVIb29rcyhsLmVsZW0sbC5vcHRzLnF1ZXVlKS5zdG9wPWIuc3RvcC5iaW5kKGIpKSxiO3JldHVybiBkLm1hcChjLHUsbCksTShsLm9wdHMuc3RhcnQpJiZsLm9wdHMuc3RhcnQuY2FsbChhLGwpLGwucHJvZ3Jlc3MobC5vcHRzLnByb2dyZXNzKS5kb25lKGwub3B0cy5kb25lLGwub3B0cy5jb21wbGV0ZSkuZmFpbChsLm9wdHMuZmFpbCkuYWx3YXlzKGwub3B0cy5hbHdheXMpLGQuZngudGltZXIoZC5leHRlbmQobSx7ZWxlbTphLGFuaW06bCxxdWV1ZTpsLm9wdHMucXVldWV9KSksbH1mdW5jdGlvbiBDKGEpe3JldHVybihhLm1hdGNoKExhKXx8W10pLmpvaW4oIiAiKX1mdW5jdGlvbiBIKGEpe3JldHVybiBhLmdldEF0dHJpYnV0ZSYmYS5nZXRBdHRyaWJ1dGUoImNsYXNzIil8fCIifWZ1bmN0aW9uIFAoYSl7cmV0dXJuIEFycmF5LmlzQXJyYXkoYSk\/CmE6InN0cmluZyI9PXR5cGVvZiBhJiZhLm1hdGNoKExhKXx8W119ZnVuY3Rpb24gZWEoYSxiLGMsZSl7dmFyIGY7aWYoQXJyYXkuaXNBcnJheShiKSlkLmVhY2goYixmdW5jdGlvbihnLGgpe2N8fFVjLnRlc3QoYSk\/ZShhLGgpOmVhKGErIlsiKygib2JqZWN0Ij09dHlwZW9mIGgmJm51bGwhPWg\/ZzoiIikrIl0iLGgsYyxlKX0pO2Vsc2UgaWYoY3x8Im9iamVjdCIhPT1VKGIpKWUoYSxiKTtlbHNlIGZvcihmIGluIGIpZWEoYSsiWyIrZisiXSIsYltmXSxjLGUpfWZ1bmN0aW9uIFFhKGEpe3JldHVybiBmdW5jdGlvbihiLGMpeyJzdHJpbmciIT10eXBlb2YgYiYmKGM9YixiPSIqIik7dmFyIGU9MCxmPWIudG9Mb3dlckNhc2UoKS5tYXRjaChMYSl8fFtdO2lmKE0oYykpZm9yKDtiPWZbZSsrXTspIisiPT09YlswXT8oYj1iLnNsaWNlKDEpfHwiKiIsKGFbYl09YVtiXXx8W10pLnVuc2hpZnQoYykpOihhW2JdPWFbYl18fFtdKS5wdXNoKGMpfX1mdW5jdGlvbiBFYihhLGIsYyxlKXtmdW5jdGlvbiBmKG0pe3ZhciBsOwpyZXR1cm4gZ1ttXT0hMCxkLmVhY2goYVttXXx8W10sZnVuY3Rpb24odCx3KXt0PXcoYixjLGUpO3JldHVybiJzdHJpbmciIT10eXBlb2YgdHx8aHx8Z1t0XT9oPyEobD10KTp2b2lkIDA6KGIuZGF0YVR5cGVzLnVuc2hpZnQodCksZih0KSwhMSl9KSxsfXZhciBnPXt9LGg9YT09PWNjO3JldHVybiBmKGIuZGF0YVR5cGVzWzBdKXx8IWdbIioiXSYmZigiKiIpfWZ1bmN0aW9uIGhiKGEsYil7dmFyIGMsZSxmPWQuYWpheFNldHRpbmdzLmZsYXRPcHRpb25zfHx7fTtmb3IoYyBpbiBiKXZvaWQgMCE9PWJbY10mJigoZltjXT9hOmV8fChlPXt9KSlbY109YltjXSk7cmV0dXJuIGUmJmQuZXh0ZW5kKCEwLGEsZSksYX12YXIgb2E9W10sc2M9T2JqZWN0LmdldFByb3RvdHlwZU9mLHlhPW9hLnNsaWNlLG9jPW9hLmZsYXQ\/ZnVuY3Rpb24oYSl7cmV0dXJuIG9hLmZsYXQuY2FsbChhKX06ZnVuY3Rpb24oYSl7cmV0dXJuIG9hLmNvbmNhdC5hcHBseShbXSxhKX0sdWI9b2EucHVzaCxOYT1vYS5pbmRleE9mLApNYj17fSxrYz1NYi50b1N0cmluZyxGYj1NYi5oYXNPd25Qcm9wZXJ0eSx0Yz1GYi50b1N0cmluZyxWYz10Yy5jYWxsKE9iamVjdCksTj17fSxNPWZ1bmN0aW9uKGEpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBhJiYibnVtYmVyIiE9dHlwZW9mIGEubm9kZVR5cGUmJiJmdW5jdGlvbiIhPXR5cGVvZiBhLml0ZW19LGtiPWZ1bmN0aW9uKGEpe3JldHVybiBudWxsIT1hJiZhPT09YS53aW5kb3d9LEw9bi5kb2N1bWVudCxMYz17dHlwZTohMCxzcmM6ITAsbm9uY2U6ITAsbm9Nb2R1bGU6ITB9LFdjPS9IVE1MJC9pLGQ9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gbmV3IGQuZm4uaW5pdChhLGIpfTtkLmZuPWQucHJvdG90eXBlPXtqcXVlcnk6IjMuNy4wIixjb25zdHJ1Y3RvcjpkLGxlbmd0aDowLHRvQXJyYXk6ZnVuY3Rpb24oKXtyZXR1cm4geWEuY2FsbCh0aGlzKX0sZ2V0OmZ1bmN0aW9uKGEpe3JldHVybiBudWxsPT1hP3lhLmNhbGwodGhpcyk6MD5hP3RoaXNbYSt0aGlzLmxlbmd0aF06dGhpc1thXX0sCnB1c2hTdGFjazpmdW5jdGlvbihhKXthPWQubWVyZ2UodGhpcy5jb25zdHJ1Y3RvcigpLGEpO3JldHVybiBhLnByZXZPYmplY3Q9dGhpcyxhfSxlYWNoOmZ1bmN0aW9uKGEpe3JldHVybiBkLmVhY2godGhpcyxhKX0sbWFwOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnB1c2hTdGFjayhkLm1hcCh0aGlzLGZ1bmN0aW9uKGIsYyl7cmV0dXJuIGEuY2FsbChiLGMsYil9KSl9LHNsaWNlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKHlhLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9LGZpcnN0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZXEoMCl9LGxhc3Q6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lcSgtMSl9LGV2ZW46ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soZC5ncmVwKHRoaXMsZnVuY3Rpb24oYSxiKXtyZXR1cm4oYisxKSUyfSkpfSxvZGQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soZC5ncmVwKHRoaXMsZnVuY3Rpb24oYSxiKXtyZXR1cm4gYiUKMn0pKX0sZXE6ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5sZW5ndGg7YT0rYSsoMD5hP2I6MCk7cmV0dXJuIHRoaXMucHVzaFN0YWNrKDA8PWEmJmE8Yj9bdGhpc1thXV06W10pfSxlbmQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wcmV2T2JqZWN0fHx0aGlzLmNvbnN0cnVjdG9yKCl9LHB1c2g6dWIsc29ydDpvYS5zb3J0LHNwbGljZTpvYS5zcGxpY2V9O2QuZXh0ZW5kPWQuZm4uZXh0ZW5kPWZ1bmN0aW9uKCl7dmFyIGEsYixjLGUsZixnPWFyZ3VtZW50c1swXXx8e30saD0xLG09YXJndW1lbnRzLmxlbmd0aCxsPSExOyJib29sZWFuIj09dHlwZW9mIGcmJihsPWcsZz1hcmd1bWVudHNbaF18fHt9LGgrKyk7Im9iamVjdCI9PXR5cGVvZiBnfHxNKGcpfHwoZz17fSk7Zm9yKGg9PT1tJiYoZz10aGlzLGgtLSk7aDxtO2grKylpZihudWxsIT0oYT1hcmd1bWVudHNbaF0pKWZvcihiIGluIGEpe3ZhciB0PWFbYl07Il9fcHJvdG9fXyIhPT1iJiZnIT09dCYmKGwmJnQmJihkLmlzUGxhaW5PYmplY3QodCl8fAooZT1BcnJheS5pc0FycmF5KHQpKSk\/KGM9Z1tiXSxmPWUmJiFBcnJheS5pc0FycmF5KGMpP1tdOmV8fGQuaXNQbGFpbk9iamVjdChjKT9jOnt9LGU9ITEsZ1tiXT1kLmV4dGVuZChsLGYsdCkpOnZvaWQgMCE9PXQmJihnW2JdPXQpKX1yZXR1cm4gZ307ZC5leHRlbmQoe2V4cGFuZG86ImpRdWVyeSIrKCIzLjcuMCIrTWF0aC5yYW5kb20oKSkucmVwbGFjZSgvXEQvZywiIiksaXNSZWFkeTohMCxlcnJvcjpmdW5jdGlvbihhKXt0aHJvdyBFcnJvcihhKTt9LG5vb3A6ZnVuY3Rpb24oKXt9LGlzUGxhaW5PYmplY3Q6ZnVuY3Rpb24oYSl7dmFyIGIsYztyZXR1cm4hKCFhfHwiW29iamVjdCBPYmplY3RdIiE9PWtjLmNhbGwoYSkpJiYoIShiPXNjKGEpKXx8ImZ1bmN0aW9uIj09dHlwZW9mKGM9RmIuY2FsbChiLCJjb25zdHJ1Y3RvciIpJiZiLmNvbnN0cnVjdG9yKSYmdGMuY2FsbChjKT09PVZjKX0saXNFbXB0eU9iamVjdDpmdW5jdGlvbihhKXtmb3IodmFyIGIgaW4gYSlyZXR1cm4hMTtyZXR1cm4hMH0sCmdsb2JhbEV2YWw6ZnVuY3Rpb24oYSxiLGMpe3dhKGEse25vbmNlOmImJmIubm9uY2V9LGMpfSxlYWNoOmZ1bmN0aW9uKGEsYil7dmFyIGMsZT0wO2lmKGViKGEpKWZvcihjPWEubGVuZ3RoO2U8YyYmITEhPT1iLmNhbGwoYVtlXSxlLGFbZV0pO2UrKyk7ZWxzZSBmb3IoZSBpbiBhKWlmKCExPT09Yi5jYWxsKGFbZV0sZSxhW2VdKSlicmVhaztyZXR1cm4gYX0sdGV4dDpmdW5jdGlvbihhKXt2YXIgYixjPSIiLGU9MDtpZihiPWEubm9kZVR5cGUpe2lmKDE9PT1ifHw5PT09Ynx8MTE9PT1iKXJldHVybiBhLnRleHRDb250ZW50O2lmKDM9PT1ifHw0PT09YilyZXR1cm4gYS5ub2RlVmFsdWV9ZWxzZSBmb3IoO2I9YVtlKytdOyljKz1kLnRleHQoYik7cmV0dXJuIGN9LG1ha2VBcnJheTpmdW5jdGlvbihhLGIpe2I9Ynx8W107cmV0dXJuIG51bGwhPWEmJihlYihPYmplY3QoYSkpP2QubWVyZ2UoYiwic3RyaW5nIj09dHlwZW9mIGE\/W2FdOmEpOnViLmNhbGwoYixhKSksYn0saW5BcnJheTpmdW5jdGlvbihhLApiLGMpe3JldHVybiBudWxsPT1iPy0xOk5hLmNhbGwoYixhLGMpfSxpc1hNTERvYzpmdW5jdGlvbihhKXt2YXIgYj1hJiYoYS5vd25lckRvY3VtZW50fHxhKS5kb2N1bWVudEVsZW1lbnQ7cmV0dXJuIVdjLnRlc3QoYSYmYS5uYW1lc3BhY2VVUkl8fGImJmIubm9kZU5hbWV8fCJIVE1MIil9LG1lcmdlOmZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPStiLmxlbmd0aCxlPTAsZj1hLmxlbmd0aDtlPGM7ZSsrKWFbZisrXT1iW2VdO3JldHVybiBhLmxlbmd0aD1mLGF9LGdyZXA6ZnVuY3Rpb24oYSxiLGMpe3ZhciBlPVtdLGY9MCxnPWEubGVuZ3RoO2ZvcihjPSFjO2Y8ZztmKyspIWIoYVtmXSxmKSE9PWMmJmUucHVzaChhW2ZdKTtyZXR1cm4gZX0sbWFwOmZ1bmN0aW9uKGEsYixjKXt2YXIgZSxmLGc9MCxoPVtdO2lmKGViKGEpKWZvcihlPWEubGVuZ3RoO2c8ZTtnKyspbnVsbCE9KGY9YihhW2ddLGcsYykpJiZoLnB1c2goZik7ZWxzZSBmb3IoZyBpbiBhKW51bGwhPShmPWIoYVtnXSxnLGMpKSYmCmgucHVzaChmKTtyZXR1cm4gb2MoaCl9LGd1aWQ6MSxzdXBwb3J0Ok59KTsiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYoZC5mbltTeW1ib2wuaXRlcmF0b3JdPW9hW1N5bWJvbC5pdGVyYXRvcl0pO2QuZWFjaCgiQm9vbGVhbiBOdW1iZXIgU3RyaW5nIEZ1bmN0aW9uIEFycmF5IERhdGUgUmVnRXhwIE9iamVjdCBFcnJvciBTeW1ib2wiLnNwbGl0KCIgIiksZnVuY3Rpb24oYSxiKXtNYlsiW29iamVjdCAiK2IrIl0iXT1iLnRvTG93ZXJDYXNlKCl9KTt2YXIgWGM9b2EucG9wLFljPW9hLnNvcnQsWmM9b2Euc3BsaWNlLHpiPVJlZ0V4cCgiXltcXHgyMFxcdFxcclxcblxcZl0rfCgoPzpefFteXFxcXF0pKD86XFxcXC4pKilbXFx4MjBcXHRcXHJcXG5cXGZdKyQiLCJnIik7ZC5jb250YWlucz1mdW5jdGlvbihhLGIpe2I9YiYmYi5wYXJlbnROb2RlO3JldHVybiBhPT09Ynx8ISghYnx8MSE9PWIubm9kZVR5cGV8fCEoYS5jb250YWlucz9hLmNvbnRhaW5zKGIpOmEuY29tcGFyZURvY3VtZW50UG9zaXRpb24mJgoxNiZhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGIpKSl9O3ZhciAkYz0vKFtcMC1ceDFmXHg3Zl18Xi0\/XGQpfF4tJHxbXlx4ODAtXHVGRkZGXHctXS9nO2QuZXNjYXBlU2VsZWN0b3I9ZnVuY3Rpb24oYSl7cmV0dXJuKGErIiIpLnJlcGxhY2UoJGMsYmEpfTt2YXIgUmE9TDshZnVuY3Rpb24oKXtmdW5jdGlvbiBhKGsscCxxLHYpe3ZhciB5LEUsQSxJLEI9cCYmcC5vd25lckRvY3VtZW50LEo9cD9wLm5vZGVUeXBlOjk7aWYocT1xfHxbXSwic3RyaW5nIiE9dHlwZW9mIGt8fCFrfHwxIT09SiYmOSE9PUomJjExIT09SilyZXR1cm4gcTtpZighdiYmKHQocCkscD1wfHxaLHZhKSl7aWYoMTEhPT1KJiYoST1hZC5leGVjKGspKSlpZih5PUlbMV0paWYoOT09PUope2lmKCEoRT1wLmdldEVsZW1lbnRCeUlkKHkpKSlyZXR1cm4gcTtpZihFLmlkPT09eSlyZXR1cm4gdGEuY2FsbChxLEUpLHF9ZWxzZXtpZihCJiYoRT1CLmdldEVsZW1lbnRCeUlkKHkpKSYmYS5jb250YWlucyhwLEUpJiZFLmlkPT09CnkpcmV0dXJuIHRhLmNhbGwocSxFKSxxfWVsc2V7aWYoSVsyXSlyZXR1cm4gdGEuYXBwbHkocSxwLmdldEVsZW1lbnRzQnlUYWdOYW1lKGspKSxxO2lmKCh5PUlbM10pJiZwLmdldEVsZW1lbnRzQnlDbGFzc05hbWUpcmV0dXJuIHRhLmFwcGx5KHEscC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKHkpKSxxfWlmKCEoWVtrKyIgIl18fGthJiZrYS50ZXN0KGspKSl7aWYoeT1rLEI9cCwxPT09SiYmKHZiLnRlc3Qoayl8fEhhLnRlc3QoaykpKXsoQj1kYy50ZXN0KGspJiZsKHAucGFyZW50Tm9kZSl8fHApPT1wJiZOLnNjb3BlfHwoKEE9cC5nZXRBdHRyaWJ1dGUoImlkIikpP0E9ZC5lc2NhcGVTZWxlY3RvcihBKTpwLnNldEF0dHJpYnV0ZSgiaWQiLEE9VykpO2ZvcihKPSh5PXIoaykpLmxlbmd0aDtKLS07KXlbSl09KEE\/IiMiK0E6IjpzY29wZSIpKyIgIit6KHlbSl0pO3k9eS5qb2luKCIsIil9dHJ5e3JldHVybiB0YS5hcHBseShxLEIucXVlcnlTZWxlY3RvckFsbCh5KSkscX1jYXRjaChSKXtZKGssCiEwKX1maW5hbGx5e0E9PT1XJiZwLnJlbW92ZUF0dHJpYnV0ZSgiaWQiKX19fXJldHVybiBTYShrLnJlcGxhY2UoemIsIiQxIikscCxxLHYpfWZ1bmN0aW9uIGIoKXt2YXIgaz1bXTtyZXR1cm4gZnVuY3Rpb24geShxLHYpe3JldHVybiBrLnB1c2gocSsiICIpPksuY2FjaGVMZW5ndGgmJmRlbGV0ZSB5W2suc2hpZnQoKV0seVtxKyIgIl09dn19ZnVuY3Rpb24gYyhrKXtyZXR1cm4ga1tXXT0hMCxrfWZ1bmN0aW9uIGUoayl7dmFyIHA9Wi5jcmVhdGVFbGVtZW50KCJmaWVsZHNldCIpO3RyeXtyZXR1cm4hIWsocCl9Y2F0Y2gocSl7cmV0dXJuITF9ZmluYWxseXtwLnBhcmVudE5vZGUmJnAucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChwKX19ZnVuY3Rpb24gZihrKXtyZXR1cm4gZnVuY3Rpb24ocCl7cmV0dXJuIFgocCwiaW5wdXQiKSYmcC50eXBlPT09a319ZnVuY3Rpb24gZyhrKXtyZXR1cm4gZnVuY3Rpb24ocCl7cmV0dXJuKFgocCwiaW5wdXQiKXx8WChwLCJidXR0b24iKSkmJnAudHlwZT09PQprfX1mdW5jdGlvbiBoKGspe3JldHVybiBmdW5jdGlvbihwKXtyZXR1cm4iZm9ybSJpbiBwP3AucGFyZW50Tm9kZSYmITE9PT1wLmRpc2FibGVkPyJsYWJlbCJpbiBwPyJsYWJlbCJpbiBwLnBhcmVudE5vZGU\/cC5wYXJlbnROb2RlLmRpc2FibGVkPT09azpwLmRpc2FibGVkPT09azpwLmlzRGlzYWJsZWQ9PT1rfHxwLmlzRGlzYWJsZWQhPT0hayYmYmQocCk9PT1rOnAuZGlzYWJsZWQ9PT1rOiJsYWJlbCJpbiBwJiZwLmRpc2FibGVkPT09a319ZnVuY3Rpb24gbShrKXtyZXR1cm4gYyhmdW5jdGlvbihwKXtyZXR1cm4gcD0rcCxjKGZ1bmN0aW9uKHEsdil7Zm9yKHZhciB5LEU9ayhbXSxxLmxlbmd0aCxwKSxBPUUubGVuZ3RoO0EtLTspcVt5PUVbQV1dJiYocVt5XT0hKHZbeV09cVt5XSkpfSl9KX1mdW5jdGlvbiBsKGspe3JldHVybiBrJiYidW5kZWZpbmVkIiE9dHlwZW9mIGsuZ2V0RWxlbWVudHNCeVRhZ05hbWUmJmt9ZnVuY3Rpb24gdChrKXt2YXIgcDtrPWs\/ay5vd25lckRvY3VtZW50fHwKazpSYTtyZXR1cm4gayE9WiYmOT09PWsubm9kZVR5cGUmJmsuZG9jdW1lbnRFbGVtZW50JiYocmE9KFo9aykuZG9jdW1lbnRFbGVtZW50LHZhPSFkLmlzWE1MRG9jKFopLE1hPXJhLm1hdGNoZXN8fHJhLndlYmtpdE1hdGNoZXNTZWxlY3Rvcnx8cmEubXNNYXRjaGVzU2VsZWN0b3IsUmEhPVomJihwPVouZGVmYXVsdFZpZXcpJiZwLnRvcCE9PXAmJnAuYWRkRXZlbnRMaXN0ZW5lcigidW5sb2FkIixjZCksTi5nZXRCeUlkPWUoZnVuY3Rpb24ocSl7cmV0dXJuIHJhLmFwcGVuZENoaWxkKHEpLmlkPWQuZXhwYW5kbywhWi5nZXRFbGVtZW50c0J5TmFtZXx8IVouZ2V0RWxlbWVudHNCeU5hbWUoZC5leHBhbmRvKS5sZW5ndGh9KSxOLmRpc2Nvbm5lY3RlZE1hdGNoPWUoZnVuY3Rpb24ocSl7cmV0dXJuIE1hLmNhbGwocSwiKiIpfSksTi5zY29wZT1lKGZ1bmN0aW9uKCl7cmV0dXJuIFoucXVlcnlTZWxlY3RvckFsbCgiOnNjb3BlIil9KSxOLmNzc0hhcz1lKGZ1bmN0aW9uKCl7dHJ5e3JldHVybiBaLnF1ZXJ5U2VsZWN0b3IoIjpoYXMoKiw6anFmYWtlKSIpLAohMX1jYXRjaChxKXtyZXR1cm4hMH19KSxOLmdldEJ5SWQ\/KEsuZmlsdGVyLklEPWZ1bmN0aW9uKHEpe3ZhciB2PXEucmVwbGFjZShUYSxVYSk7cmV0dXJuIGZ1bmN0aW9uKHkpe3JldHVybiB5LmdldEF0dHJpYnV0ZSgiaWQiKT09PXZ9fSxLLmZpbmQuSUQ9ZnVuY3Rpb24ocSx2KXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIHYuZ2V0RWxlbWVudEJ5SWQmJnZhKXJldHVybihxPXYuZ2V0RWxlbWVudEJ5SWQocSkpP1txXTpbXX0pOihLLmZpbHRlci5JRD1mdW5jdGlvbihxKXt2YXIgdj1xLnJlcGxhY2UoVGEsVWEpO3JldHVybiBmdW5jdGlvbih5KXtyZXR1cm4oeT0idW5kZWZpbmVkIiE9dHlwZW9mIHkuZ2V0QXR0cmlidXRlTm9kZSYmeS5nZXRBdHRyaWJ1dGVOb2RlKCJpZCIpKSYmeS52YWx1ZT09PXZ9fSxLLmZpbmQuSUQ9ZnVuY3Rpb24ocSx2KXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIHYuZ2V0RWxlbWVudEJ5SWQmJnZhKXt2YXIgeSxFPXYuZ2V0RWxlbWVudEJ5SWQocSk7aWYoRSl7aWYoKHk9CkUuZ2V0QXR0cmlidXRlTm9kZSgiaWQiKSkmJnkudmFsdWU9PT1xKXJldHVybltFXTt2YXIgQT12LmdldEVsZW1lbnRzQnlOYW1lKHEpO2Zvcih2PTA7RT1BW3YrK107KWlmKCh5PUUuZ2V0QXR0cmlidXRlTm9kZSgiaWQiKSkmJnkudmFsdWU9PT1xKXJldHVybltFXX1yZXR1cm5bXX19KSxLLmZpbmQuVEFHPWZ1bmN0aW9uKHEsdil7cmV0dXJuInVuZGVmaW5lZCIhPXR5cGVvZiB2LmdldEVsZW1lbnRzQnlUYWdOYW1lP3YuZ2V0RWxlbWVudHNCeVRhZ05hbWUocSk6di5xdWVyeVNlbGVjdG9yQWxsKHEpfSxLLmZpbmQuQ0xBU1M9ZnVuY3Rpb24ocSx2KXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIHYuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSYmdmEpcmV0dXJuIHYuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShxKX0sa2E9W10sZShmdW5jdGlvbihxKXt2YXIgdjtyYS5hcHBlbmRDaGlsZChxKS5pbm5lckhUTUw9IjxhIGlkPSciK1crIicgaHJlZj0nJyBkaXNhYmxlZD0nZGlzYWJsZWQnPjwvYT48c2VsZWN0IGlkPSciKwpXKyItXHJcXCcgZGlzYWJsZWQ9J2Rpc2FibGVkJz48b3B0aW9uIHNlbGVjdGVkPScnPjwvb3B0aW9uPjwvc2VsZWN0PiI7cS5xdWVyeVNlbGVjdG9yQWxsKCJbc2VsZWN0ZWRdIikubGVuZ3RofHxrYS5wdXNoKCJcXFtbXFx4MjBcXHRcXHJcXG5cXGZdKig\/OnZhbHVlfGNoZWNrZWR8c2VsZWN0ZWR8YXN5bmN8YXV0b2ZvY3VzfGF1dG9wbGF5fGNvbnRyb2xzfGRlZmVyfGRpc2FibGVkfGhpZGRlbnxpc21hcHxsb29wfG11bHRpcGxlfG9wZW58cmVhZG9ubHl8cmVxdWlyZWR8c2NvcGVkKSIpO3EucXVlcnlTZWxlY3RvckFsbCgiW2lkfj0iK1crIi1dIikubGVuZ3RofHxrYS5wdXNoKCJ+PSIpO3EucXVlcnlTZWxlY3RvckFsbCgiYSMiK1crIisqIikubGVuZ3RofHxrYS5wdXNoKCIuIy4rWyt+XSIpO3EucXVlcnlTZWxlY3RvckFsbCgiOmNoZWNrZWQiKS5sZW5ndGh8fGthLnB1c2goIjpjaGVja2VkIik7KHY9Wi5jcmVhdGVFbGVtZW50KCJpbnB1dCIpKS5zZXRBdHRyaWJ1dGUoInR5cGUiLAoiaGlkZGVuIik7cS5hcHBlbmRDaGlsZCh2KS5zZXRBdHRyaWJ1dGUoIm5hbWUiLCJEIik7cmEuYXBwZW5kQ2hpbGQocSkuZGlzYWJsZWQ9ITA7MiE9PXEucXVlcnlTZWxlY3RvckFsbCgiOmRpc2FibGVkIikubGVuZ3RoJiZrYS5wdXNoKCI6ZW5hYmxlZCIsIjpkaXNhYmxlZCIpOyh2PVouY3JlYXRlRWxlbWVudCgiaW5wdXQiKSkuc2V0QXR0cmlidXRlKCJuYW1lIiwiIik7cS5hcHBlbmRDaGlsZCh2KTtxLnF1ZXJ5U2VsZWN0b3JBbGwoIltuYW1lPScnXSIpLmxlbmd0aHx8a2EucHVzaCgiXFxbW1xceDIwXFx0XFxyXFxuXFxmXSpuYW1lW1xceDIwXFx0XFxyXFxuXFxmXSo9W1xceDIwXFx0XFxyXFxuXFxmXSooPzonJ3xcIlwiKSIpfSksTi5jc3NIYXN8fGthLnB1c2goIjpoYXMiKSxrYT1rYS5sZW5ndGgmJm5ldyBSZWdFeHAoa2Euam9pbigifCIpKSxsYT1mdW5jdGlvbihxLHYpe2lmKHE9PT12KXJldHVybiBpYj0hMCwwO3ZhciB5PSFxLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uLSF2LmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uOwpyZXR1cm4geXx8KDEmKHk9KHEub3duZXJEb2N1bWVudHx8cSk9PSh2Lm93bmVyRG9jdW1lbnR8fHYpP3EuY29tcGFyZURvY3VtZW50UG9zaXRpb24odik6MSl8fCFOLnNvcnREZXRhY2hlZCYmdi5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihxKT09PXk\/cT09PVp8fHEub3duZXJEb2N1bWVudD09UmEmJmEuY29udGFpbnMoUmEscSk\/LTE6dj09PVp8fHYub3duZXJEb2N1bWVudD09UmEmJmEuY29udGFpbnMoUmEsdik\/MTpoYT9OYS5jYWxsKGhhLHEpLU5hLmNhbGwoaGEsdik6MDo0Jnk\/LTE6MSl9KSxafWZ1bmN0aW9uIHcoKXt9ZnVuY3Rpb24gcihrLHApe3ZhciBxLHYseSxFLEEsSTtpZihBPVZhW2srIiAiXSlyZXR1cm4gcD8wOkEuc2xpY2UoMCk7QT1rO3ZhciBCPVtdO2ZvcihJPUsucHJlRmlsdGVyO0E7KXtmb3IoRSBpbiBxJiYhKHY9bWEuZXhlYyhBKSl8fCh2JiYoQT1BLnNsaWNlKHZbMF0ubGVuZ3RoKXx8QSksQi5wdXNoKHk9W10pKSxxPSExLCh2PUhhLmV4ZWMoQSkpJiYocT0Kdi5zaGlmdCgpLHkucHVzaCh7dmFsdWU6cSx0eXBlOnZbMF0ucmVwbGFjZSh6YiwiICIpfSksQT1BLnNsaWNlKHEubGVuZ3RoKSksSy5maWx0ZXIpISh2PVliW0VdLmV4ZWMoQSkpfHxJW0VdJiYhKHY9SVtFXSh2KSl8fChxPXYuc2hpZnQoKSx5LnB1c2goe3ZhbHVlOnEsdHlwZTpFLG1hdGNoZXM6dn0pLEE9QS5zbGljZShxLmxlbmd0aCkpO2lmKCFxKWJyZWFrfXJldHVybiBwP0EubGVuZ3RoOkE\/YS5lcnJvcihrKTpWYShrLEIpLnNsaWNlKDApfWZ1bmN0aW9uIHooayl7Zm9yKHZhciBwPTAscT1rLmxlbmd0aCx2PSIiO3A8cTtwKyspdis9a1twXS52YWx1ZTtyZXR1cm4gdn1mdW5jdGlvbiBEKGsscCxxKXt2YXIgdj1wLmRpcix5PXAubmV4dCxFPXl8fHYsQT1xJiYicGFyZW50Tm9kZSI9PT1FLEk9RGErKztyZXR1cm4gcC5maXJzdD9mdW5jdGlvbihCLEosUil7Zm9yKDtCPUJbdl07KWlmKDE9PT1CLm5vZGVUeXBlfHxBKXJldHVybiBrKEIsSixSKTtyZXR1cm4hMX06ZnVuY3Rpb24oQiwKSixSKXt2YXIgVCxWLGlhPVtmYSxJXTtpZihSKWZvcig7Qj1CW3ZdOyl7aWYoKDE9PT1CLm5vZGVUeXBlfHxBKSYmayhCLEosUikpcmV0dXJuITB9ZWxzZSBmb3IoO0I9Qlt2XTspaWYoMT09PUIubm9kZVR5cGV8fEEpaWYoVj1CW1ddfHwoQltXXT17fSkseSYmWChCLHkpKUI9Qlt2XXx8QjtlbHNle2lmKChUPVZbRV0pJiZUWzBdPT09ZmEmJlRbMV09PT1JKXJldHVybiBpYVsyXT1UWzJdO2lmKChWW0VdPWlhKVsyXT1rKEIsSixSKSlyZXR1cm4hMH1yZXR1cm4hMX19ZnVuY3Rpb24gRihrKXtyZXR1cm4gMTxrLmxlbmd0aD9mdW5jdGlvbihwLHEsdil7Zm9yKHZhciB5PWsubGVuZ3RoO3ktLTspaWYoIWtbeV0ocCxxLHYpKXJldHVybiExO3JldHVybiEwfTprWzBdfWZ1bmN0aW9uIE8oayxwLHEsdix5KXtmb3IodmFyIEUsQT1bXSxJPTAsQj1rLmxlbmd0aCxKPW51bGwhPXA7STxCO0krKykoRT1rW0ldKSYmKHEmJiFxKEUsdix5KXx8KEEucHVzaChFKSxKJiZwLnB1c2goSSkpKTtyZXR1cm4gQX0KZnVuY3Rpb24gYWEoayxwLHEsdix5LEUpe3JldHVybiB2JiYhdltXXSYmKHY9YWEodikpLHkmJiF5W1ddJiYoeT1hYSh5LEUpKSxjKGZ1bmN0aW9uKEEsSSxCLEope3ZhciBSLFQsVj1bXSxpYT1bXSxwYT1JLmxlbmd0aCxuYTtpZighKG5hPUEpKXtuYT1wfHwiKiI7Zm9yKHZhciBFYT1CLm5vZGVUeXBlP1tCXTpCLGNhPVtdLEFhPTAsV2E9RWEubGVuZ3RoO0FhPFdhO0FhKyspYShuYSxFYVtBYV0sY2EpO25hPWNhfW5hPSFrfHwhQSYmcD9uYTpPKG5hLFYsayxCLEopO2lmKHE\/cShuYSxUPXl8fChBP2s6cGF8fHYpP1tdOkksQixKKTpUPW5hLHYpe3ZhciBGYT1PKFQsaWEpO3YoRmEsW10sQixKKTtmb3IoQj1GYS5sZW5ndGg7Qi0tOykoUj1GYVtCXSkmJihUW2lhW0JdXT0hKG5hW2lhW0JdXT1SKSl9aWYoQSl7aWYoeXx8ayl7aWYoeSl7RmE9W107Zm9yKEI9VC5sZW5ndGg7Qi0tOykoUj1UW0JdKSYmRmEucHVzaChuYVtCXT1SKTt5KG51bGwsVD1bXSxGYSxKKX1mb3IoQj1ULmxlbmd0aDtCLS07KShSPQpUW0JdKSYmLTE8KEZhPXk\/TmEuY2FsbChBLFIpOlZbQl0pJiYoQVtGYV09IShJW0ZhXT1SKSl9fWVsc2UgVD1PKFQ9PT1JP1Quc3BsaWNlKHBhLFQubGVuZ3RoKTpUKSx5P3kobnVsbCxJLFQsSik6dGEuYXBwbHkoSSxUKX0pfWZ1bmN0aW9uIEdhKGspe2Zvcih2YXIgcCxxLHY9ay5sZW5ndGgseT1LLnJlbGF0aXZlW2tbMF0udHlwZV0sRT15fHxLLnJlbGF0aXZlWyIgIl0sQT15PzE6MCxJPUQoZnVuY3Rpb24oUil7cmV0dXJuIFI9PT1wfSxFLCEwKSxCPUQoZnVuY3Rpb24oUil7cmV0dXJuLTE8TmEuY2FsbChwLFIpfSxFLCEwKSxKPVtmdW5jdGlvbihSLFQsVil7Uj0heSYmKFZ8fFQhPVMpfHwoKHA9VCkubm9kZVR5cGU\/SShSLFQsVik6QihSLFQsVikpO3JldHVybiBwPW51bGwsUn1dO0E8djtBKyspaWYoRT1LLnJlbGF0aXZlW2tbQV0udHlwZV0pSj1bRChGKEopLEUpXTtlbHNle2lmKChFPUsuZmlsdGVyW2tbQV0udHlwZV0uYXBwbHkobnVsbCxrW0FdLm1hdGNoZXMpKVtXXSl7Zm9yKHE9CisrQTtxPHYmJiFLLnJlbGF0aXZlW2tbcV0udHlwZV07cSsrKTtyZXR1cm4gYWEoMTxBJiZGKEopLDE8QSYmeihrLnNsaWNlKDAsQS0xKS5jb25jYXQoe3ZhbHVlOiIgIj09PWtbQS0yXS50eXBlPyIqIjoiIn0pKS5yZXBsYWNlKHpiLCIkMSIpLEUsQTxxJiZHYShrLnNsaWNlKEEscSkpLHE8diYmR2Eoaz1rLnNsaWNlKHEpKSxxPHYmJnooaykpfUoucHVzaChFKX1yZXR1cm4gRihKKX1mdW5jdGlvbiBxYShrLHApe3ZhciBxLHYseSxFLEE9W10sST1bXSxCPXVhW2srIiAiXTtpZighQil7cHx8KHA9cihrKSk7Zm9yKHE9cC5sZW5ndGg7cS0tOykoQj1HYShwW3FdKSlbV10\/QS5wdXNoKEIpOkkucHVzaChCKTsoQj11YShrLCh2PTA8QS5sZW5ndGgseT0wPEkubGVuZ3RoLEU9ZnVuY3Rpb24oSixSLFQsVixpYSl7dmFyIHBhLG5hLEVhPTAsY2E9IjAiLEFhPUomJltdLFdhPVtdLEZhPVMsdWM9Snx8eSYmSy5maW5kLlRBRygiKiIsaWEpLHZjPWZhKz1udWxsPT1GYT8xOk1hdGgucmFuZG9tKCl8fAouMSxkZD11Yy5sZW5ndGg7Zm9yKGlhJiYoUz1SPT1afHxSfHxpYSk7Y2EhPT1kZCYmbnVsbCE9KHBhPXVjW2NhXSk7Y2ErKyl7aWYoeSYmcGEpe3ZhciBlYz0wO2ZvcihSfHxwYS5vd25lckRvY3VtZW50PT1afHwodChwYSksVD0hdmEpO25hPUlbZWMrK107KWlmKG5hKHBhLFJ8fFosVCkpe3RhLmNhbGwoVixwYSk7YnJlYWt9aWEmJihmYT12Yyl9diYmKChwYT0hbmEmJnBhKSYmRWEtLSxKJiZBYS5wdXNoKHBhKSl9aWYoRWErPWNhLHYmJmNhIT09RWEpe2ZvcihlYz0wO25hPUFbZWMrK107KW5hKEFhLFdhLFIsVCk7aWYoSil7aWYoMDxFYSlmb3IoO2NhLS07KUFhW2NhXXx8V2FbY2FdfHwoV2FbY2FdPVhjLmNhbGwoVikpO1dhPU8oV2EpfXRhLmFwcGx5KFYsV2EpO2lhJiYhSiYmMDxXYS5sZW5ndGgmJjE8RWErQS5sZW5ndGgmJmQudW5pcXVlU29ydChWKX1yZXR1cm4gaWEmJihmYT12YyxTPUZhKSxBYX0sdj9jKEUpOkUpKSkuc2VsZWN0b3I9a31yZXR1cm4gQn1mdW5jdGlvbiBTYShrLApwLHEsdil7dmFyIHksRSxBLEksQixKPSJmdW5jdGlvbiI9PXR5cGVvZiBrJiZrLFI9IXYmJnIoaz1KLnNlbGVjdG9yfHxrKTtpZihxPXF8fFtdLDE9PT1SLmxlbmd0aCl7aWYoMjwoRT1SWzBdPVJbMF0uc2xpY2UoMCkpLmxlbmd0aCYmIklEIj09PShBPUVbMF0pLnR5cGUmJjk9PT1wLm5vZGVUeXBlJiZ2YSYmSy5yZWxhdGl2ZVtFWzFdLnR5cGVdKXtpZighKHA9KEsuZmluZC5JRChBLm1hdGNoZXNbMF0ucmVwbGFjZShUYSxVYSkscCl8fFtdKVswXSkpcmV0dXJuIHE7SiYmKHA9cC5wYXJlbnROb2RlKTtrPWsuc2xpY2UoRS5zaGlmdCgpLnZhbHVlLmxlbmd0aCl9Zm9yKHk9WWIubmVlZHNDb250ZXh0LnRlc3Qoayk\/MDpFLmxlbmd0aDt5LS0mJihBPUVbeV0sIUsucmVsYXRpdmVbST1BLnR5cGVdKTspaWYoKEI9Sy5maW5kW0ldKSYmKHY9QihBLm1hdGNoZXNbMF0ucmVwbGFjZShUYSxVYSksZGMudGVzdChFWzBdLnR5cGUpJiZsKHAucGFyZW50Tm9kZSl8fHApKSl7aWYoRS5zcGxpY2UoeSwKMSksIShrPXYubGVuZ3RoJiZ6KEUpKSlyZXR1cm4gdGEuYXBwbHkocSx2KSxxO2JyZWFrfX1yZXR1cm4oSnx8cWEoayxSKSkodixwLCF2YSxxLCFwfHxkYy50ZXN0KGspJiZsKHAucGFyZW50Tm9kZSl8fHApLHF9dmFyIFEsSyxTLGhhLGliLFoscmEsdmEsa2EsTWEsdGE9dWIsVz1kLmV4cGFuZG8sZmE9MCxEYT0wLGRiPWIoKSxWYT1iKCksdWE9YigpLFk9YigpLGxhPWZ1bmN0aW9uKGsscCl7cmV0dXJuIGs9PT1wJiYoaWI9ITApLDB9LElhPVJlZ0V4cCgiW1xceDIwXFx0XFxyXFxuXFxmXSsiLCJnIiksbWE9UmVnRXhwKCJeW1xceDIwXFx0XFxyXFxuXFxmXSosW1xceDIwXFx0XFxyXFxuXFxmXSoiKSxIYT1SZWdFeHAoIl5bXFx4MjBcXHRcXHJcXG5cXGZdKihbPit+XXxbXFx4MjBcXHRcXHJcXG5cXGZdKVtcXHgyMFxcdFxcclxcblxcZl0qIiksdmI9UmVnRXhwKCJbXFx4MjBcXHRcXHJcXG5cXGZdfD4iKSxmYz1SZWdFeHAoIjooKD86XFxcXFtcXGRhLWZBLUZdezEsNn1bXFx4MjBcXHRcXHJcXG5cXGZdP3xcXFxcW15cXHJcXG5cXGZdfFtcXHctXXxbXlx4MDAtXFx4N2ZdKSspKD86XFwoKCgnKCg\/OlxcXFwufFteXFxcXCddKSopJ3xcIigoPzpcXFxcLnxbXlxcXFxcIl0pKilcIil8KCg\/OlxcXFwufFteXFxcXCgpW1xcXV18XFxbW1xceDIwXFx0XFxyXFxuXFxmXSooKD86XFxcXFtcXGRhLWZBLUZdezEsNn1bXFx4MjBcXHRcXHJcXG5cXGZdP3xcXFxcW15cXHJcXG5cXGZdfFtcXHctXXxbXlx4MDAtXFx4N2ZdKSspKD86W1xceDIwXFx0XFxyXFxuXFxmXSooWypeJHwhfl0\/PSlbXFx4MjBcXHRcXHJcXG5cXGZdKig\/OicoKD86XFxcXC58W15cXFxcJ10pKiknfFwiKCg\/OlxcXFwufFteXFxcXFwiXSkqKVwifCgoPzpcXFxcW1xcZGEtZkEtRl17MSw2fVtcXHgyMFxcdFxcclxcblxcZl0\/fFxcXFxbXlxcclxcblxcZl18W1xcdy1dfFteXHgwMC1cXHg3Zl0pKykpfClbXFx4MjBcXHRcXHJcXG5cXGZdKlxcXSkqKXwuKilcXCl8KSIpLAplZD1SZWdFeHAoIl4oPzpcXFxcW1xcZGEtZkEtRl17MSw2fVtcXHgyMFxcdFxcclxcblxcZl0\/fFxcXFxbXlxcclxcblxcZl18W1xcdy1dfFteXHgwMC1cXHg3Zl0pKyQiKSxZYj17SUQ6UmVnRXhwKCJeIygoPzpcXFxcW1xcZGEtZkEtRl17MSw2fVtcXHgyMFxcdFxcclxcblxcZl0\/fFxcXFxbXlxcclxcblxcZl18W1xcdy1dfFteXHgwMC1cXHg3Zl0pKykiKSxDTEFTUzpSZWdFeHAoIl5cXC4oKD86XFxcXFtcXGRhLWZBLUZdezEsNn1bXFx4MjBcXHRcXHJcXG5cXGZdP3xcXFxcW15cXHJcXG5cXGZdfFtcXHctXXxbXlx4MDAtXFx4N2ZdKSspIiksVEFHOlJlZ0V4cCgiXigoPzpcXFxcW1xcZGEtZkEtRl17MSw2fVtcXHgyMFxcdFxcclxcblxcZl0\/fFxcXFxbXlxcclxcblxcZl18W1xcdy1dfFteXHgwMC1cXHg3Zl0pK3xbKl0pIiksQVRUUjpSZWdFeHAoIl5cXFtbXFx4MjBcXHRcXHJcXG5cXGZdKigoPzpcXFxcW1xcZGEtZkEtRl17MSw2fVtcXHgyMFxcdFxcclxcblxcZl0\/fFxcXFxbXlxcclxcblxcZl18W1xcdy1dfFteXHgwMC1cXHg3Zl0pKykoPzpbXFx4MjBcXHRcXHJcXG5cXGZdKihbKl4kfCF+XT89KVtcXHgyMFxcdFxcclxcblxcZl0qKD86JygoPzpcXFxcLnxbXlxcXFwnXSkqKSd8XCIoKD86XFxcXC58W15cXFxcXCJdKSopXCJ8KCg\/OlxcXFxbXFxkYS1mQS1GXXsxLDZ9W1xceDIwXFx0XFxyXFxuXFxmXT98XFxcXFteXFxyXFxuXFxmXXxbXFx3LV18W15ceDAwLVxceDdmXSkrKSl8KVtcXHgyMFxcdFxcclxcblxcZl0qXFxdIiksClBTRVVETzpSZWdFeHAoIl46KCg\/OlxcXFxbXFxkYS1mQS1GXXsxLDZ9W1xceDIwXFx0XFxyXFxuXFxmXT98XFxcXFteXFxyXFxuXFxmXXxbXFx3LV18W15ceDAwLVxceDdmXSkrKSg\/OlxcKCgoJygoPzpcXFxcLnxbXlxcXFwnXSkqKSd8XCIoKD86XFxcXC58W15cXFxcXCJdKSopXCIpfCgoPzpcXFxcLnxbXlxcXFwoKVtcXF1dfFxcW1tcXHgyMFxcdFxcclxcblxcZl0qKCg\/OlxcXFxbXFxkYS1mQS1GXXsxLDZ9W1xceDIwXFx0XFxyXFxuXFxmXT98XFxcXFteXFxyXFxuXFxmXXxbXFx3LV18W15ceDAwLVxceDdmXSkrKSg\/OltcXHgyMFxcdFxcclxcblxcZl0qKFsqXiR8IX5dPz0pW1xceDIwXFx0XFxyXFxuXFxmXSooPzonKCg\/OlxcXFwufFteXFxcXCddKSopJ3xcIigoPzpcXFxcLnxbXlxcXFxcIl0pKilcInwoKD86XFxcXFtcXGRhLWZBLUZdezEsNn1bXFx4MjBcXHRcXHJcXG5cXGZdP3xcXFxcW15cXHJcXG5cXGZdfFtcXHctXXxbXlx4MDAtXFx4N2ZdKSspKXwpW1xceDIwXFx0XFxyXFxuXFxmXSpcXF0pKil8LiopXFwpfCkiKSwKQ0hJTEQ6UmVnRXhwKCJeOihvbmx5fGZpcnN0fGxhc3R8bnRofG50aC1sYXN0KS0oY2hpbGR8b2YtdHlwZSkoPzpcXChbXFx4MjBcXHRcXHJcXG5cXGZdKihldmVufG9kZHwoKFsrLV18KShcXGQqKW58KVtcXHgyMFxcdFxcclxcblxcZl0qKD86KFsrLV18KVtcXHgyMFxcdFxcclxcblxcZl0qKFxcZCspfCkpW1xceDIwXFx0XFxyXFxuXFxmXSpcXCl8KSIsImkiKSxib29sOlJlZ0V4cCgiXig\/OmNoZWNrZWR8c2VsZWN0ZWR8YXN5bmN8YXV0b2ZvY3VzfGF1dG9wbGF5fGNvbnRyb2xzfGRlZmVyfGRpc2FibGVkfGhpZGRlbnxpc21hcHxsb29wfG11bHRpcGxlfG9wZW58cmVhZG9ubHl8cmVxdWlyZWR8c2NvcGVkKSQiLCJpIiksbmVlZHNDb250ZXh0OlJlZ0V4cCgiXltcXHgyMFxcdFxcclxcblxcZl0qWz4rfl18OihldmVufG9kZHxlcXxndHxsdHxudGh8Zmlyc3R8bGFzdCkoPzpcXChbXFx4MjBcXHRcXHJcXG5cXGZdKigoPzotXFxkKT9cXGQqKVtcXHgyMFxcdFxcclxcblxcZl0qXFwpfCkoPz1bXi1dfCQpIiwKImkiKX0sZmQ9L14oPzppbnB1dHxzZWxlY3R8dGV4dGFyZWF8YnV0dG9uKSQvaSxnZD0vXmhcZCQvaSxhZD0vXig\/OiMoW1x3LV0rKXwoXHcrKXxcLihbXHctXSspKSQvLGRjPS9bK35dLyxUYT1SZWdFeHAoIlxcXFxbXFxkYS1mQS1GXXsxLDZ9W1xceDIwXFx0XFxyXFxuXFxmXT98XFxcXChbXlxcclxcblxcZl0pIiwiZyIpLFVhPWZ1bmN0aW9uKGsscCl7az0iMHgiK2suc2xpY2UoMSktNjU1MzY7cmV0dXJuIHB8fCgwPms\/U3RyaW5nLmZyb21DaGFyQ29kZShrKzY1NTM2KTpTdHJpbmcuZnJvbUNoYXJDb2RlKGs+PjEwfDU1Mjk2LDEwMjMma3w1NjMyMCkpfSxjZD1mdW5jdGlvbigpe3QoKX0sYmQ9RChmdW5jdGlvbihrKXtyZXR1cm4hMD09PWsuZGlzYWJsZWQmJlgoaywiZmllbGRzZXQiKX0se2RpcjoicGFyZW50Tm9kZSIsbmV4dDoibGVnZW5kIn0pO3RyeXt0YS5hcHBseShvYT15YS5jYWxsKFJhLmNoaWxkTm9kZXMpLFJhLmNoaWxkTm9kZXMpLG9hW1JhLmNoaWxkTm9kZXMubGVuZ3RoXS5ub2RlVHlwZX1jYXRjaChrKXt0YT0Ke2FwcGx5OmZ1bmN0aW9uKHAscSl7dWIuYXBwbHkocCx5YS5jYWxsKHEpKX0sY2FsbDpmdW5jdGlvbihwKXt1Yi5hcHBseShwLHlhLmNhbGwoYXJndW1lbnRzLDEpKX19fWZvcihRIGluIGEubWF0Y2hlcz1mdW5jdGlvbihrLHApe3JldHVybiBhKGssbnVsbCxudWxsLHApfSxhLm1hdGNoZXNTZWxlY3Rvcj1mdW5jdGlvbihrLHApe2lmKHQoayksISghdmF8fFlbcCsiICJdfHxrYSYma2EudGVzdChwKSkpdHJ5e3ZhciBxPU1hLmNhbGwoayxwKTtpZihxfHxOLmRpc2Nvbm5lY3RlZE1hdGNofHxrLmRvY3VtZW50JiYxMSE9PWsuZG9jdW1lbnQubm9kZVR5cGUpcmV0dXJuIHF9Y2F0Y2godil7WShwLCEwKX1yZXR1cm4gMDxhKHAsWixudWxsLFtrXSkubGVuZ3RofSxhLmNvbnRhaW5zPWZ1bmN0aW9uKGsscCl7cmV0dXJuKGsub3duZXJEb2N1bWVudHx8aykhPVomJnQoayksZC5jb250YWlucyhrLHApfSxhLmF0dHI9ZnVuY3Rpb24oayxwKXsoay5vd25lckRvY3VtZW50fHxrKSE9WiYmdChrKTsKdmFyIHE9Sy5hdHRySGFuZGxlW3AudG9Mb3dlckNhc2UoKV07cT1xJiZGYi5jYWxsKEsuYXR0ckhhbmRsZSxwLnRvTG93ZXJDYXNlKCkpP3EoayxwLCF2YSk6dm9pZCAwO3JldHVybiB2b2lkIDAhPT1xP3E6ay5nZXRBdHRyaWJ1dGUocCl9LGEuZXJyb3I9ZnVuY3Rpb24oayl7dGhyb3cgRXJyb3IoIlN5bnRheCBlcnJvciwgdW5yZWNvZ25pemVkIGV4cHJlc3Npb246ICIrayk7fSxkLnVuaXF1ZVNvcnQ9ZnVuY3Rpb24oayl7dmFyIHAscT1bXSx2PTAseT0wO2lmKGliPSFOLnNvcnRTdGFibGUsaGE9IU4uc29ydFN0YWJsZSYmeWEuY2FsbChrLDApLFljLmNhbGwoayxsYSksaWIpe2Zvcig7cD1rW3krK107KXA9PT1rW3ldJiYodj1xLnB1c2goeSkpO2Zvcig7di0tOylaYy5jYWxsKGsscVt2XSwxKX1yZXR1cm4gaGE9bnVsbCxrfSxkLmZuLnVuaXF1ZVNvcnQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soZC51bmlxdWVTb3J0KHlhLmFwcGx5KHRoaXMpKSl9LChLPWQuZXhwcj0Ke2NhY2hlTGVuZ3RoOjUwLGNyZWF0ZVBzZXVkbzpjLG1hdGNoOlliLGF0dHJIYW5kbGU6e30sZmluZDp7fSxyZWxhdGl2ZTp7Ij4iOntkaXI6InBhcmVudE5vZGUiLGZpcnN0OiEwfSwiICI6e2RpcjoicGFyZW50Tm9kZSJ9LCIrIjp7ZGlyOiJwcmV2aW91c1NpYmxpbmciLGZpcnN0OiEwfSwifiI6e2RpcjoicHJldmlvdXNTaWJsaW5nIn19LHByZUZpbHRlcjp7QVRUUjpmdW5jdGlvbihrKXtyZXR1cm4ga1sxXT1rWzFdLnJlcGxhY2UoVGEsVWEpLGtbM109KGtbM118fGtbNF18fGtbNV18fCIiKS5yZXBsYWNlKFRhLFVhKSwifj0iPT09a1syXSYmKGtbM109IiAiK2tbM10rIiAiKSxrLnNsaWNlKDAsNCl9LENISUxEOmZ1bmN0aW9uKGspe3JldHVybiBrWzFdPWtbMV0udG9Mb3dlckNhc2UoKSwibnRoIj09PWtbMV0uc2xpY2UoMCwzKT8oa1szXXx8YS5lcnJvcihrWzBdKSxrWzRdPSsoa1s0XT9rWzVdKyhrWzZdfHwxKToyKigiZXZlbiI9PT1rWzNdfHwib2RkIj09PWtbM10pKSxrWzVdPQorKGtbN10ra1s4XXx8Im9kZCI9PT1rWzNdKSk6a1szXSYmYS5lcnJvcihrWzBdKSxrfSxQU0VVRE86ZnVuY3Rpb24oayl7dmFyIHAscT0ha1s2XSYma1syXTtyZXR1cm4gWWIuQ0hJTEQudGVzdChrWzBdKT9udWxsOihrWzNdP2tbMl09a1s0XXx8a1s1XXx8IiI6cSYmZmMudGVzdChxKSYmKHA9cihxLCEwKSkmJihwPXEuaW5kZXhPZigiKSIscS5sZW5ndGgtcCktcS5sZW5ndGgpJiYoa1swXT1rWzBdLnNsaWNlKDAscCksa1syXT1xLnNsaWNlKDAscCkpLGsuc2xpY2UoMCwzKSl9fSxmaWx0ZXI6e1RBRzpmdW5jdGlvbihrKXt2YXIgcD1rLnJlcGxhY2UoVGEsVWEpLnRvTG93ZXJDYXNlKCk7cmV0dXJuIioiPT09az9mdW5jdGlvbigpe3JldHVybiEwfTpmdW5jdGlvbihxKXtyZXR1cm4gWChxLHApfX0sQ0xBU1M6ZnVuY3Rpb24oayl7dmFyIHA9ZGJbaysiICJdO3JldHVybiBwfHwocD1uZXcgUmVnRXhwKCIoXnxbXFx4MjBcXHRcXHJcXG5cXGZdKSIraysiKFtcXHgyMFxcdFxcclxcblxcZl18JCkiKSwKZGIoayxmdW5jdGlvbihxKXtyZXR1cm4gcC50ZXN0KCJzdHJpbmciPT10eXBlb2YgcS5jbGFzc05hbWUmJnEuY2xhc3NOYW1lfHwidW5kZWZpbmVkIiE9dHlwZW9mIHEuZ2V0QXR0cmlidXRlJiZxLmdldEF0dHJpYnV0ZSgiY2xhc3MiKXx8IiIpfSkpfSxBVFRSOmZ1bmN0aW9uKGsscCxxKXtyZXR1cm4gZnVuY3Rpb24odil7dj1hLmF0dHIodixrKTtyZXR1cm4gbnVsbD09dj8iIT0iPT09cDohcHx8KHYrPSIiLCI9Ij09PXA\/dj09PXE6IiE9Ij09PXA\/diE9PXE6Il49Ij09PXA\/cSYmMD09PXYuaW5kZXhPZihxKToiKj0iPT09cD9xJiYtMTx2LmluZGV4T2YocSk6IiQ9Ij09PXA\/cSYmdi5zbGljZSgtcS5sZW5ndGgpPT09cToifj0iPT09cD8tMTwoIiAiK3YucmVwbGFjZShJYSwiICIpKyIgIikuaW5kZXhPZihxKToifD0iPT09cCYmKHY9PT1xfHx2LnNsaWNlKDAscS5sZW5ndGgrMSk9PT1xKyItIikpfX0sQ0hJTEQ6ZnVuY3Rpb24oayxwLHEsdix5KXt2YXIgRT0ibnRoIiE9PWsuc2xpY2UoMCwKMyksQT0ibGFzdCIhPT1rLnNsaWNlKC00KSxJPSJvZi10eXBlIj09PXA7cmV0dXJuIDE9PT12JiYwPT09eT9mdW5jdGlvbihCKXtyZXR1cm4hIUIucGFyZW50Tm9kZX06ZnVuY3Rpb24oQixKLFIpe3ZhciBULFYsaWE7Sj1FIT09QT8ibmV4dFNpYmxpbmciOiJwcmV2aW91c1NpYmxpbmciO3ZhciBwYT1CLnBhcmVudE5vZGUsbmE9SSYmQi5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpLEVhPSFSJiYhSSxjYT0hMTtpZihwYSl7aWYoRSl7Zm9yKDtKOyl7Zm9yKFY9QjtWPVZbSl07KWlmKEk\/WChWLG5hKToxPT09Vi5ub2RlVHlwZSlyZXR1cm4hMTt2YXIgQWE9Sj0ib25seSI9PT1rJiYhQWEmJiJuZXh0U2libGluZyJ9cmV0dXJuITB9aWYoQWE9W0E\/cGEuZmlyc3RDaGlsZDpwYS5sYXN0Q2hpbGRdLEEmJkVhKWZvcihjYT0oaWE9KFQ9KFI9cGFbV118fChwYVtXXT17fSkpW2tdfHxbXSlbMF09PT1mYSYmVFsxXSkmJlRbMl0sVj1pYSYmcGEuY2hpbGROb2Rlc1tpYV07Vj0rK2lhJiZWJiZWW0pdfHwKKGNhPWlhPTApfHxBYS5wb3AoKTspe2lmKDE9PT1WLm5vZGVUeXBlJiYrK2NhJiZWPT09Qil7UltrXT1bZmEsaWEsY2FdO2JyZWFrfX1lbHNlIGlmKEVhJiYoY2E9aWE9KFQ9KEJbV118fChCW1ddPXt9KSlba118fFtdKVswXT09PWZhJiZUWzFdKSwhMT09PWNhKWZvcig7KFY9KytpYSYmViYmVltKXXx8KGNhPWlhPTApfHxBYS5wb3AoKSkmJigoST8hWChWLG5hKToxIT09Vi5ub2RlVHlwZSl8fCErK2NhfHwoRWEmJigoUj1WW1ddfHwoVltXXT17fSkpW2tdPVtmYSxjYV0pLFYhPT1CKSk7KTtyZXR1cm4oY2EtPXkpPT09dnx8MD09Y2EldiYmMDw9Y2Evdn19fSxQU0VVRE86ZnVuY3Rpb24oayxwKXt2YXIgcSx2PUsucHNldWRvc1trXXx8Sy5zZXRGaWx0ZXJzW2sudG9Mb3dlckNhc2UoKV18fGEuZXJyb3IoInVuc3VwcG9ydGVkIHBzZXVkbzogIitrKTtyZXR1cm4gdltXXT92KHApOjE8di5sZW5ndGg\/KHE9W2ssaywiIixwXSxLLnNldEZpbHRlcnMuaGFzT3duUHJvcGVydHkoay50b0xvd2VyQ2FzZSgpKT8KYyhmdW5jdGlvbih5LEUpe2Zvcih2YXIgQSxJPXYoeSxwKSxCPUkubGVuZ3RoO0ItLTspeVtBPU5hLmNhbGwoeSxJW0JdKV09IShFW0FdPUlbQl0pfSk6ZnVuY3Rpb24oeSl7cmV0dXJuIHYoeSwwLHEpfSk6dn19LHBzZXVkb3M6e25vdDpjKGZ1bmN0aW9uKGspe3ZhciBwPVtdLHE9W10sdj1xYShrLnJlcGxhY2UoemIsIiQxIikpO3JldHVybiB2W1ddP2MoZnVuY3Rpb24oeSxFLEEsSSl7dmFyIEI7QT12KHksbnVsbCxJLFtdKTtmb3IoST15Lmxlbmd0aDtJLS07KShCPUFbSV0pJiYoeVtJXT0hKEVbSV09QikpfSk6ZnVuY3Rpb24oeSxFLEEpe3JldHVybiBwWzBdPXksdihwLG51bGwsQSxxKSxwWzBdPW51bGwsIXEucG9wKCl9fSksaGFzOmMoZnVuY3Rpb24oayl7cmV0dXJuIGZ1bmN0aW9uKHApe3JldHVybiAwPGEoayxwKS5sZW5ndGh9fSksY29udGFpbnM6YyhmdW5jdGlvbihrKXtyZXR1cm4gaz1rLnJlcGxhY2UoVGEsVWEpLGZ1bmN0aW9uKHApe3JldHVybi0xPChwLnRleHRDb250ZW50fHwKZC50ZXh0KHApKS5pbmRleE9mKGspfX0pLGxhbmc6YyhmdW5jdGlvbihrKXtyZXR1cm4gZWQudGVzdChrfHwiIil8fGEuZXJyb3IoInVuc3VwcG9ydGVkIGxhbmc6ICIrayksaz1rLnJlcGxhY2UoVGEsVWEpLnRvTG93ZXJDYXNlKCksZnVuY3Rpb24ocCl7dmFyIHE7ZG8gaWYocT12YT9wLmxhbmc6cC5nZXRBdHRyaWJ1dGUoInhtbDpsYW5nIil8fHAuZ2V0QXR0cmlidXRlKCJsYW5nIikpcmV0dXJuKHE9cS50b0xvd2VyQ2FzZSgpKT09PWt8fDA9PT1xLmluZGV4T2YoaysiLSIpO3doaWxlKChwPXAucGFyZW50Tm9kZSkmJjE9PT1wLm5vZGVUeXBlKTtyZXR1cm4hMX19KSx0YXJnZXQ6ZnVuY3Rpb24oayl7dmFyIHA9bi5sb2NhdGlvbiYmbi5sb2NhdGlvbi5oYXNoO3JldHVybiBwJiZwLnNsaWNlKDEpPT09ay5pZH0scm9vdDpmdW5jdGlvbihrKXtyZXR1cm4gaz09PXJhfSxmb2N1czpmdW5jdGlvbihrKXthOnt0cnl7dmFyIHA9Wi5hY3RpdmVFbGVtZW50O2JyZWFrIGF9Y2F0Y2gocSl7fXA9CnZvaWQgMH1yZXR1cm4gaz09PXAmJlouaGFzRm9jdXMoKSYmISEoay50eXBlfHxrLmhyZWZ8fH5rLnRhYkluZGV4KX0sZW5hYmxlZDpoKCExKSxkaXNhYmxlZDpoKCEwKSxjaGVja2VkOmZ1bmN0aW9uKGspe3JldHVybiBYKGssImlucHV0IikmJiEhay5jaGVja2VkfHxYKGssIm9wdGlvbiIpJiYhIWsuc2VsZWN0ZWR9LHNlbGVjdGVkOmZ1bmN0aW9uKGspe3JldHVybiBrLnBhcmVudE5vZGUmJmsucGFyZW50Tm9kZS5zZWxlY3RlZEluZGV4LCEwPT09ay5zZWxlY3RlZH0sZW1wdHk6ZnVuY3Rpb24oayl7Zm9yKGs9ay5maXJzdENoaWxkO2s7az1rLm5leHRTaWJsaW5nKWlmKDY+ay5ub2RlVHlwZSlyZXR1cm4hMTtyZXR1cm4hMH0scGFyZW50OmZ1bmN0aW9uKGspe3JldHVybiFLLnBzZXVkb3MuZW1wdHkoayl9LGhlYWRlcjpmdW5jdGlvbihrKXtyZXR1cm4gZ2QudGVzdChrLm5vZGVOYW1lKX0saW5wdXQ6ZnVuY3Rpb24oayl7cmV0dXJuIGZkLnRlc3Qoay5ub2RlTmFtZSl9LGJ1dHRvbjpmdW5jdGlvbihrKXtyZXR1cm4gWChrLAoiaW5wdXQiKSYmImJ1dHRvbiI9PT1rLnR5cGV8fFgoaywiYnV0dG9uIil9LHRleHQ6ZnVuY3Rpb24oayl7dmFyIHA7cmV0dXJuIFgoaywiaW5wdXQiKSYmInRleHQiPT09ay50eXBlJiYobnVsbD09KHA9ay5nZXRBdHRyaWJ1dGUoInR5cGUiKSl8fCJ0ZXh0Ij09PXAudG9Mb3dlckNhc2UoKSl9LGZpcnN0Om0oZnVuY3Rpb24oKXtyZXR1cm5bMF19KSxsYXN0Om0oZnVuY3Rpb24oayxwKXtyZXR1cm5bcC0xXX0pLGVxOm0oZnVuY3Rpb24oayxwLHEpe3JldHVyblswPnE\/cStwOnFdfSksZXZlbjptKGZ1bmN0aW9uKGsscCl7Zm9yKHZhciBxPTA7cTxwO3ErPTIpay5wdXNoKHEpO3JldHVybiBrfSksb2RkOm0oZnVuY3Rpb24oayxwKXtmb3IodmFyIHE9MTtxPHA7cSs9MilrLnB1c2gocSk7cmV0dXJuIGt9KSxsdDptKGZ1bmN0aW9uKGsscCxxKXtmb3IocD0wPnE\/cStwOnA8cT9wOnE7MDw9LS1wOylrLnB1c2gocCk7cmV0dXJuIGt9KSxndDptKGZ1bmN0aW9uKGsscCxxKXtmb3IocT0wPnE\/CnErcDpxOysrcTxwOylrLnB1c2gocSk7cmV0dXJuIGt9KX19KS5wc2V1ZG9zLm50aD1LLnBzZXVkb3MuZXEse3JhZGlvOiEwLGNoZWNrYm94OiEwLGZpbGU6ITAscGFzc3dvcmQ6ITAsaW1hZ2U6ITB9KUsucHNldWRvc1tRXT1mKFEpO2ZvcihRIGlue3N1Ym1pdDohMCxyZXNldDohMH0pSy5wc2V1ZG9zW1FdPWcoUSk7dy5wcm90b3R5cGU9Sy5maWx0ZXJzPUsucHNldWRvcztLLnNldEZpbHRlcnM9bmV3IHc7Ti5zb3J0U3RhYmxlPVcuc3BsaXQoIiIpLnNvcnQobGEpLmpvaW4oIiIpPT09Vzt0KCk7Ti5zb3J0RGV0YWNoZWQ9ZShmdW5jdGlvbihrKXtyZXR1cm4gMSZrLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKFouY3JlYXRlRWxlbWVudCgiZmllbGRzZXQiKSl9KTtkLmZpbmQ9YTtkLmV4cHJbIjoiXT1kLmV4cHIucHNldWRvcztkLnVuaXF1ZT1kLnVuaXF1ZVNvcnQ7YS5jb21waWxlPXFhO2Euc2VsZWN0PVNhO2Euc2V0RG9jdW1lbnQ9dDthLmVzY2FwZT1kLmVzY2FwZVNlbGVjdG9yOwphLmdldFRleHQ9ZC50ZXh0O2EuaXNYTUw9ZC5pc1hNTERvYzthLnNlbGVjdG9ycz1kLmV4cHI7YS5zdXBwb3J0PWQuc3VwcG9ydDthLnVuaXF1ZVNvcnQ9ZC51bmlxdWVTb3J0fSgpO3ZhciB3Yj1mdW5jdGlvbihhLGIsYyl7Zm9yKHZhciBlPVtdLGY9dm9pZCAwIT09YzsoYT1hW2JdKSYmOSE9PWEubm9kZVR5cGU7KWlmKDE9PT1hLm5vZGVUeXBlKXtpZihmJiZkKGEpLmlzKGMpKWJyZWFrO2UucHVzaChhKX1yZXR1cm4gZX0sd2M9ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9W107YTthPWEubmV4dFNpYmxpbmcpMT09PWEubm9kZVR5cGUmJmEhPT1iJiZjLnB1c2goYSk7cmV0dXJuIGN9LHhjPWQuZXhwci5tYXRjaC5uZWVkc0NvbnRleHQseWM9L148KFthLXpdW15cL1wwPjpceDIwXHRcclxuXGZdKilbXHgyMFx0XHJcblxmXSpcLz8+KD86PFwvXDE+fCkkL2k7ZC5maWx0ZXI9ZnVuY3Rpb24oYSxiLGMpe3ZhciBlPWJbMF07cmV0dXJuIGMmJihhPSI6bm90KCIrYSsiKSIpLDE9PT1iLmxlbmd0aCYmCjE9PT1lLm5vZGVUeXBlP2QuZmluZC5tYXRjaGVzU2VsZWN0b3IoZSxhKT9bZV06W106ZC5maW5kLm1hdGNoZXMoYSxkLmdyZXAoYixmdW5jdGlvbihmKXtyZXR1cm4gMT09PWYubm9kZVR5cGV9KSl9O2QuZm4uZXh0ZW5kKHtmaW5kOmZ1bmN0aW9uKGEpe3ZhciBiLGM9dGhpcy5sZW5ndGgsZT10aGlzO2lmKCJzdHJpbmciIT10eXBlb2YgYSlyZXR1cm4gdGhpcy5wdXNoU3RhY2soZChhKS5maWx0ZXIoZnVuY3Rpb24oKXtmb3IoYj0wO2I8YztiKyspaWYoZC5jb250YWlucyhlW2JdLHRoaXMpKXJldHVybiEwfSkpO3ZhciBmPXRoaXMucHVzaFN0YWNrKFtdKTtmb3IoYj0wO2I8YztiKyspZC5maW5kKGEsZVtiXSxmKTtyZXR1cm4gMTxjP2QudW5pcXVlU29ydChmKTpmfSxmaWx0ZXI6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKGphKHRoaXMsYXx8W10sITEpKX0sbm90OmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnB1c2hTdGFjayhqYSh0aGlzLGF8fFtdLCEwKSl9LGlzOmZ1bmN0aW9uKGEpe3JldHVybiEhamEodGhpcywKInN0cmluZyI9PXR5cGVvZiBhJiZ4Yy50ZXN0KGEpP2QoYSk6YXx8W10sITEpLmxlbmd0aH19KTt2YXIgaGQ9L14oPzpccyooPFtcd1xXXSs+KVtePl0qfCMoW1x3LV0rKSkkLzsoZC5mbi5pbml0PWZ1bmN0aW9uKGEsYixjKXt2YXIgZSxmO2lmKCFhKXJldHVybiB0aGlzO2lmKGM9Y3x8aWQsInN0cmluZyI9PXR5cGVvZiBhKXtpZighKGU9IjwiPT09YVswXSYmIj4iPT09YVthLmxlbmd0aC0xXSYmMzw9YS5sZW5ndGg\/W251bGwsYSxudWxsXTpoZC5leGVjKGEpKXx8IWVbMV0mJmIpcmV0dXJuIWJ8fGIuanF1ZXJ5PyhifHxjKS5maW5kKGEpOnRoaXMuY29uc3RydWN0b3IoYikuZmluZChhKTtpZihlWzFdKXtpZihiPWIgaW5zdGFuY2VvZiBkP2JbMF06YixkLm1lcmdlKHRoaXMsZC5wYXJzZUhUTUwoZVsxXSxiJiZiLm5vZGVUeXBlP2Iub3duZXJEb2N1bWVudHx8YjpMLCEwKSkseWMudGVzdChlWzFdKSYmZC5pc1BsYWluT2JqZWN0KGIpKWZvcihlIGluIGIpTSh0aGlzW2VdKT90aGlzW2VdKGJbZV0pOgp0aGlzLmF0dHIoZSxiW2VdKTtyZXR1cm4gdGhpc31yZXR1cm4oZj1MLmdldEVsZW1lbnRCeUlkKGVbMl0pKSYmKHRoaXNbMF09Zix0aGlzLmxlbmd0aD0xKSx0aGlzfXJldHVybiBhLm5vZGVUeXBlPyh0aGlzWzBdPWEsdGhpcy5sZW5ndGg9MSx0aGlzKTpNKGEpP3ZvaWQgMCE9PWMucmVhZHk\/Yy5yZWFkeShhKTphKGQpOmQubWFrZUFycmF5KGEsdGhpcyl9KS5wcm90b3R5cGU9ZC5mbjt2YXIgaWQ9ZChMKSxqZD0vXig\/OnBhcmVudHN8cHJldig\/OlVudGlsfEFsbCkpLyxrZD17Y2hpbGRyZW46ITAsY29udGVudHM6ITAsbmV4dDohMCxwcmV2OiEwfTtkLmZuLmV4dGVuZCh7aGFzOmZ1bmN0aW9uKGEpe3ZhciBiPWQoYSx0aGlzKSxjPWIubGVuZ3RoO3JldHVybiB0aGlzLmZpbHRlcihmdW5jdGlvbigpe2Zvcih2YXIgZT0wO2U8YztlKyspaWYoZC5jb250YWlucyh0aGlzLGJbZV0pKXJldHVybiEwfSl9LGNsb3Nlc3Q6ZnVuY3Rpb24oYSxiKXt2YXIgYyxlPTAsZj10aGlzLmxlbmd0aCwKZz1bXSxoPSJzdHJpbmciIT10eXBlb2YgYSYmZChhKTtpZigheGMudGVzdChhKSlmb3IoO2U8ZjtlKyspZm9yKGM9dGhpc1tlXTtjJiZjIT09YjtjPWMucGFyZW50Tm9kZSlpZigxMT5jLm5vZGVUeXBlJiYoaD8tMTxoLmluZGV4KGMpOjE9PT1jLm5vZGVUeXBlJiZkLmZpbmQubWF0Y2hlc1NlbGVjdG9yKGMsYSkpKXtnLnB1c2goYyk7YnJlYWt9cmV0dXJuIHRoaXMucHVzaFN0YWNrKDE8Zy5sZW5ndGg\/ZC51bmlxdWVTb3J0KGcpOmcpfSxpbmRleDpmdW5jdGlvbihhKXtyZXR1cm4gYT8ic3RyaW5nIj09dHlwZW9mIGE\/TmEuY2FsbChkKGEpLHRoaXNbMF0pOk5hLmNhbGwodGhpcyxhLmpxdWVyeT9hWzBdOmEpOnRoaXNbMF0mJnRoaXNbMF0ucGFyZW50Tm9kZT90aGlzLmZpcnN0KCkucHJldkFsbCgpLmxlbmd0aDotMX0sYWRkOmZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMucHVzaFN0YWNrKGQudW5pcXVlU29ydChkLm1lcmdlKHRoaXMuZ2V0KCksZChhLGIpKSkpfSxhZGRCYWNrOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmFkZChudWxsPT0KYT90aGlzLnByZXZPYmplY3Q6dGhpcy5wcmV2T2JqZWN0LmZpbHRlcihhKSl9fSk7ZC5lYWNoKHtwYXJlbnQ6ZnVuY3Rpb24oYSl7cmV0dXJuKGE9YS5wYXJlbnROb2RlKSYmMTEhPT1hLm5vZGVUeXBlP2E6bnVsbH0scGFyZW50czpmdW5jdGlvbihhKXtyZXR1cm4gd2IoYSwicGFyZW50Tm9kZSIpfSxwYXJlbnRzVW50aWw6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiB3YihhLCJwYXJlbnROb2RlIixjKX0sbmV4dDpmdW5jdGlvbihhKXtyZXR1cm4gbGIoYSwibmV4dFNpYmxpbmciKX0scHJldjpmdW5jdGlvbihhKXtyZXR1cm4gbGIoYSwicHJldmlvdXNTaWJsaW5nIil9LG5leHRBbGw6ZnVuY3Rpb24oYSl7cmV0dXJuIHdiKGEsIm5leHRTaWJsaW5nIil9LHByZXZBbGw6ZnVuY3Rpb24oYSl7cmV0dXJuIHdiKGEsInByZXZpb3VzU2libGluZyIpfSxuZXh0VW50aWw6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiB3YihhLCJuZXh0U2libGluZyIsYyl9LHByZXZVbnRpbDpmdW5jdGlvbihhLGIsCmMpe3JldHVybiB3YihhLCJwcmV2aW91c1NpYmxpbmciLGMpfSxzaWJsaW5nczpmdW5jdGlvbihhKXtyZXR1cm4gd2MoKGEucGFyZW50Tm9kZXx8e30pLmZpcnN0Q2hpbGQsYSl9LGNoaWxkcmVuOmZ1bmN0aW9uKGEpe3JldHVybiB3YyhhLmZpcnN0Q2hpbGQpfSxjb250ZW50czpmdW5jdGlvbihhKXtyZXR1cm4gbnVsbCE9YS5jb250ZW50RG9jdW1lbnQmJnNjKGEuY29udGVudERvY3VtZW50KT9hLmNvbnRlbnREb2N1bWVudDooWChhLCJ0ZW1wbGF0ZSIpJiYoYT1hLmNvbnRlbnR8fGEpLGQubWVyZ2UoW10sYS5jaGlsZE5vZGVzKSl9fSxmdW5jdGlvbihhLGIpe2QuZm5bYV09ZnVuY3Rpb24oYyxlKXt2YXIgZj1kLm1hcCh0aGlzLGIsYyk7cmV0dXJuIlVudGlsIiE9PWEuc2xpY2UoLTUpJiYoZT1jKSxlJiYic3RyaW5nIj09dHlwZW9mIGUmJihmPWQuZmlsdGVyKGUsZikpLDE8dGhpcy5sZW5ndGgmJihrZFthXXx8ZC51bmlxdWVTb3J0KGYpLGpkLnRlc3QoYSkmJmYucmV2ZXJzZSgpKSwKdGhpcy5wdXNoU3RhY2soZil9fSk7dmFyIExhPS9bXlx4MjBcdFxyXG5cZl0rL2c7ZC5DYWxsYmFja3M9ZnVuY3Rpb24oYSl7dmFyIGIsYzthPSJzdHJpbmciPT10eXBlb2YgYT8oYj1hLGM9e30sZC5lYWNoKGIubWF0Y2goTGEpfHxbXSxmdW5jdGlvbih6LEQpe2NbRF09ITB9KSxjKTpkLmV4dGVuZCh7fSxhKTt2YXIgZSxmLGcsaCxtPVtdLGw9W10sdD0tMSx3PWZ1bmN0aW9uKCl7aD1ofHxhLm9uY2U7Zm9yKGc9ZT0hMDtsLmxlbmd0aDt0PS0xKWZvcihmPWwuc2hpZnQoKTsrK3Q8bS5sZW5ndGg7KSExPT09bVt0XS5hcHBseShmWzBdLGZbMV0pJiZhLnN0b3BPbkZhbHNlJiYodD1tLmxlbmd0aCxmPSExKTthLm1lbW9yeXx8KGY9ITEpO2U9ITE7aCYmKG09Zj9bXToiIil9LHI9e2FkZDpmdW5jdGlvbigpe3JldHVybiBtJiYoZiYmIWUmJih0PW0ubGVuZ3RoLTEsbC5wdXNoKGYpKSxmdW5jdGlvbiBGKEQpe2QuZWFjaChELGZ1bmN0aW9uKE8sYWEpe00oYWEpP2EudW5pcXVlJiZyLmhhcyhhYSl8fAptLnB1c2goYWEpOmFhJiZhYS5sZW5ndGgmJiJzdHJpbmciIT09VShhYSkmJkYoYWEpfSl9KGFyZ3VtZW50cyksZiYmIWUmJncoKSksdGhpc30scmVtb3ZlOmZ1bmN0aW9uKCl7cmV0dXJuIGQuZWFjaChhcmd1bWVudHMsZnVuY3Rpb24oeixEKXtmb3IodmFyIEY7LTE8KEY9ZC5pbkFycmF5KEQsbSxGKSk7KW0uc3BsaWNlKEYsMSksRjw9dCYmdC0tfSksdGhpc30saGFzOmZ1bmN0aW9uKHope3JldHVybiB6Py0xPGQuaW5BcnJheSh6LG0pOjA8bS5sZW5ndGh9LGVtcHR5OmZ1bmN0aW9uKCl7cmV0dXJuIG0mJihtPVtdKSx0aGlzfSxkaXNhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuIGg9bD1bXSxtPWY9IiIsdGhpc30sZGlzYWJsZWQ6ZnVuY3Rpb24oKXtyZXR1cm4hbX0sbG9jazpmdW5jdGlvbigpe3JldHVybiBoPWw9W10sZnx8ZXx8KG09Zj0iIiksdGhpc30sbG9ja2VkOmZ1bmN0aW9uKCl7cmV0dXJuISFofSxmaXJlV2l0aDpmdW5jdGlvbih6LEQpe3JldHVybiBofHwoRD1beiwoRD1EfHwKW10pLnNsaWNlP0Quc2xpY2UoKTpEXSxsLnB1c2goRCksZXx8dygpKSx0aGlzfSxmaXJlOmZ1bmN0aW9uKCl7cmV0dXJuIHIuZmlyZVdpdGgodGhpcyxhcmd1bWVudHMpLHRoaXN9LGZpcmVkOmZ1bmN0aW9uKCl7cmV0dXJuISFnfX07cmV0dXJuIHJ9O2QuZXh0ZW5kKHtEZWZlcnJlZDpmdW5jdGlvbihhKXt2YXIgYj1bWyJub3RpZnkiLCJwcm9ncmVzcyIsZC5DYWxsYmFja3MoIm1lbW9yeSIpLGQuQ2FsbGJhY2tzKCJtZW1vcnkiKSwyXSxbInJlc29sdmUiLCJkb25lIixkLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSxkLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSwwLCJyZXNvbHZlZCJdLFsicmVqZWN0IiwiZmFpbCIsZC5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IiksZC5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IiksMSwicmVqZWN0ZWQiXV0sYz0icGVuZGluZyIsZT17c3RhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gY30sYWx3YXlzOmZ1bmN0aW9uKCl7cmV0dXJuIGYuZG9uZShhcmd1bWVudHMpLmZhaWwoYXJndW1lbnRzKSwKdGhpc30sImNhdGNoIjpmdW5jdGlvbihnKXtyZXR1cm4gZS50aGVuKG51bGwsZyl9LHBpcGU6ZnVuY3Rpb24oKXt2YXIgZz1hcmd1bWVudHM7cmV0dXJuIGQuRGVmZXJyZWQoZnVuY3Rpb24oaCl7ZC5lYWNoKGIsZnVuY3Rpb24obSxsKXt2YXIgdD1NKGdbbFs0XV0pJiZnW2xbNF1dO2ZbbFsxXV0oZnVuY3Rpb24oKXt2YXIgdz10JiZ0LmFwcGx5KHRoaXMsYXJndW1lbnRzKTt3JiZNKHcucHJvbWlzZSk\/dy5wcm9taXNlKCkucHJvZ3Jlc3MoaC5ub3RpZnkpLmRvbmUoaC5yZXNvbHZlKS5mYWlsKGgucmVqZWN0KTpoW2xbMF0rIldpdGgiXSh0aGlzLHQ\/W3ddOmFyZ3VtZW50cyl9KX0pO2c9bnVsbH0pLnByb21pc2UoKX0sdGhlbjpmdW5jdGlvbihnLGgsbSl7ZnVuY3Rpb24gbCh3LHIseixEKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgRj10aGlzLE89YXJndW1lbnRzLGFhPWZ1bmN0aW9uKCl7dmFyIHFhO2lmKCEodzx0KSl7aWYoKHFhPXouYXBwbHkoRixPKSk9PT1yLnByb21pc2UoKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJUaGVuYWJsZSBzZWxmLXJlc29sdXRpb24iKTsKdmFyIFNhPXFhJiYoIm9iamVjdCI9PXR5cGVvZiBxYXx8ImZ1bmN0aW9uIj09dHlwZW9mIHFhKSYmcWEudGhlbjtNKFNhKT9EP1NhLmNhbGwocWEsbCh0LHIsWWEsRCksbCh0LHIsWmEsRCkpOih0KyssU2EuY2FsbChxYSxsKHQscixZYSxEKSxsKHQscixaYSxEKSxsKHQscixZYSxyLm5vdGlmeVdpdGgpKSk6KHohPT1ZYSYmKEY9dm9pZCAwLE89W3FhXSksKER8fHIucmVzb2x2ZVdpdGgpKEYsTykpfX0sR2E9RD9hYTpmdW5jdGlvbigpe3RyeXthYSgpfWNhdGNoKHFhKXtkLkRlZmVycmVkLmV4Y2VwdGlvbkhvb2smJmQuRGVmZXJyZWQuZXhjZXB0aW9uSG9vayhxYSxHYS5lcnJvciksdDw9dysxJiYoeiE9PVphJiYoRj12b2lkIDAsTz1bcWFdKSxyLnJlamVjdFdpdGgoRixPKSl9fTt3P0dhKCk6KGQuRGVmZXJyZWQuZ2V0RXJyb3JIb29rP0dhLmVycm9yPWQuRGVmZXJyZWQuZ2V0RXJyb3JIb29rKCk6ZC5EZWZlcnJlZC5nZXRTdGFja0hvb2smJihHYS5lcnJvcj1kLkRlZmVycmVkLmdldFN0YWNrSG9vaygpKSwKbi5zZXRUaW1lb3V0KEdhKSl9fXZhciB0PTA7cmV0dXJuIGQuRGVmZXJyZWQoZnVuY3Rpb24odyl7YlswXVszXS5hZGQobCgwLHcsTShtKT9tOllhLHcubm90aWZ5V2l0aCkpO2JbMV1bM10uYWRkKGwoMCx3LE0oZyk\/ZzpZYSkpO2JbMl1bM10uYWRkKGwoMCx3LE0oaCk\/aDpaYSkpfSkucHJvbWlzZSgpfSxwcm9taXNlOmZ1bmN0aW9uKGcpe3JldHVybiBudWxsIT1nP2QuZXh0ZW5kKGcsZSk6ZX19LGY9e307cmV0dXJuIGQuZWFjaChiLGZ1bmN0aW9uKGcsaCl7dmFyIG09aFsyXSxsPWhbNV07ZVtoWzFdXT1tLmFkZDtsJiZtLmFkZChmdW5jdGlvbigpe2M9bH0sYlszLWddWzJdLmRpc2FibGUsYlszLWddWzNdLmRpc2FibGUsYlswXVsyXS5sb2NrLGJbMF1bM10ubG9jayk7bS5hZGQoaFszXS5maXJlKTtmW2hbMF1dPWZ1bmN0aW9uKCl7cmV0dXJuIGZbaFswXSsiV2l0aCJdKHRoaXM9PT1mP3ZvaWQgMDp0aGlzLGFyZ3VtZW50cyksdGhpc307ZltoWzBdKyJXaXRoIl09bS5maXJlV2l0aH0pLAplLnByb21pc2UoZiksYSYmYS5jYWxsKGYsZiksZn0sd2hlbjpmdW5jdGlvbihhKXt2YXIgYj1hcmd1bWVudHMubGVuZ3RoLGM9YixlPUFycmF5KGMpLGY9eWEuY2FsbChhcmd1bWVudHMpLGc9ZC5EZWZlcnJlZCgpLGg9ZnVuY3Rpb24obSl7cmV0dXJuIGZ1bmN0aW9uKGwpe2VbbV09dGhpcztmW21dPTE8YXJndW1lbnRzLmxlbmd0aD95YS5jYWxsKGFyZ3VtZW50cyk6bDstLWJ8fGcucmVzb2x2ZVdpdGgoZSxmKX19O2lmKDE+PWImJihtYihhLGcuZG9uZShoKGMpKS5yZXNvbHZlLGcucmVqZWN0LCFiKSwicGVuZGluZyI9PT1nLnN0YXRlKCl8fE0oZltjXSYmZltjXS50aGVuKSkpcmV0dXJuIGcudGhlbigpO2Zvcig7Yy0tOyltYihmW2NdLGgoYyksZy5yZWplY3QpO3JldHVybiBnLnByb21pc2UoKX19KTt2YXIgbGQ9L14oRXZhbHxJbnRlcm5hbHxSYW5nZXxSZWZlcmVuY2V8U3ludGF4fFR5cGV8VVJJKUVycm9yJC87ZC5EZWZlcnJlZC5leGNlcHRpb25Ib29rPWZ1bmN0aW9uKGEsYil7bi5jb25zb2xlJiYKbi5jb25zb2xlLndhcm4mJmEmJmxkLnRlc3QoYS5uYW1lKSYmbi5jb25zb2xlLndhcm4oImpRdWVyeS5EZWZlcnJlZCBleGNlcHRpb246ICIrYS5tZXNzYWdlLGEuc3RhY2ssYil9O2QucmVhZHlFeGNlcHRpb249ZnVuY3Rpb24oYSl7bi5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dGhyb3cgYTt9KX07dmFyIGdjPWQuRGVmZXJyZWQoKTtkLmZuLnJlYWR5PWZ1bmN0aW9uKGEpe3JldHVybiBnYy50aGVuKGEpWyJjYXRjaCJdKGZ1bmN0aW9uKGIpe2QucmVhZHlFeGNlcHRpb24oYil9KSx0aGlzfTtkLmV4dGVuZCh7aXNSZWFkeTohMSxyZWFkeVdhaXQ6MSxyZWFkeTpmdW5jdGlvbihhKXsoITA9PT1hPy0tZC5yZWFkeVdhaXQ6ZC5pc1JlYWR5KXx8KGQuaXNSZWFkeT0hMCkhPT1hJiYwPC0tZC5yZWFkeVdhaXR8fGdjLnJlc29sdmVXaXRoKEwsW2RdKX19KTtkLnJlYWR5LnRoZW49Z2MudGhlbjsiY29tcGxldGUiPT09TC5yZWFkeVN0YXRlfHwibG9hZGluZyIhPT1MLnJlYWR5U3RhdGUmJiFMLmRvY3VtZW50RWxlbWVudC5kb1Njcm9sbD8Kbi5zZXRUaW1lb3V0KGQucmVhZHkpOihMLmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLE9hKSxuLmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLE9hKSk7dmFyIFhhPWZ1bmN0aW9uKGEsYixjLGUsZixnLGgpe3ZhciBtPTAsbD1hLmxlbmd0aCx0PW51bGw9PWM7aWYoIm9iamVjdCI9PT1VKGMpKWZvcihtIGluIGY9ITAsYylYYShhLGIsbSxjW21dLCEwLGcsaCk7ZWxzZSBpZih2b2lkIDAhPT1lJiYoZj0hMCxNKGUpfHwoaD0hMCksdCYmKGg\/KGIuY2FsbChhLGUpLGI9bnVsbCk6KHQ9YixiPWZ1bmN0aW9uKHcscix6KXtyZXR1cm4gdC5jYWxsKGQodykseil9KSksYikpZm9yKDttPGw7bSsrKWIoYVttXSxjLGg\/ZTplLmNhbGwoYVttXSxtLGIoYVttXSxjKSkpO3JldHVybiBmP2E6dD9iLmNhbGwoYSk6bD9iKGFbMF0sYyk6Z30sTWM9L14tbXMtLyxOYz0vLShbYS16XSkvZyxHYj1mdW5jdGlvbihhKXtyZXR1cm4gMT09PWEubm9kZVR5cGV8fDk9PT1hLm5vZGVUeXBlfHwhK2Eubm9kZVR5cGV9OwpKYS51aWQ9MTtKYS5wcm90b3R5cGU9e2NhY2hlOmZ1bmN0aW9uKGEpe3ZhciBiPWFbdGhpcy5leHBhbmRvXTtyZXR1cm4gYnx8KGI9e30sR2IoYSkmJihhLm5vZGVUeXBlP2FbdGhpcy5leHBhbmRvXT1iOk9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLHRoaXMuZXhwYW5kbyx7dmFsdWU6Yixjb25maWd1cmFibGU6ITB9KSkpLGJ9LHNldDpmdW5jdGlvbihhLGIsYyl7dmFyIGU7YT10aGlzLmNhY2hlKGEpO2lmKCJzdHJpbmciPT10eXBlb2YgYilhW0JhKGIpXT1jO2Vsc2UgZm9yKGUgaW4gYilhW0JhKGUpXT1iW2VdO3JldHVybiBhfSxnZXQ6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdm9pZCAwPT09Yj90aGlzLmNhY2hlKGEpOmFbdGhpcy5leHBhbmRvXSYmYVt0aGlzLmV4cGFuZG9dW0JhKGIpXX0sYWNjZXNzOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gdm9pZCAwPT09Ynx8YiYmInN0cmluZyI9PXR5cGVvZiBiJiZ2b2lkIDA9PT1jP3RoaXMuZ2V0KGEsYik6KHRoaXMuc2V0KGEsYixjKSx2b2lkIDAhPT0KYz9jOmIpfSxyZW1vdmU6ZnVuY3Rpb24oYSxiKXt2YXIgYz1hW3RoaXMuZXhwYW5kb107aWYodm9pZCAwIT09Yyl7aWYodm9pZCAwIT09Yil7dmFyIGU9KGI9QXJyYXkuaXNBcnJheShiKT9iLm1hcChCYSk6KGI9QmEoYikpaW4gYz9bYl06Yi5tYXRjaChMYSl8fFtdKS5sZW5ndGg7Zm9yKDtlLS07KWRlbGV0ZSBjW2JbZV1dfSh2b2lkIDA9PT1ifHxkLmlzRW1wdHlPYmplY3QoYykpJiYoYS5ub2RlVHlwZT9hW3RoaXMuZXhwYW5kb109dm9pZCAwOmRlbGV0ZSBhW3RoaXMuZXhwYW5kb10pfX0saGFzRGF0YTpmdW5jdGlvbihhKXthPWFbdGhpcy5leHBhbmRvXTtyZXR1cm4gdm9pZCAwIT09YSYmIWQuaXNFbXB0eU9iamVjdChhKX19O3ZhciBHPW5ldyBKYSx4YT1uZXcgSmEsUGM9L14oPzpce1tcd1xXXSpcfXxcW1tcd1xXXSpcXSkkLyxPYz0vW0EtWl0vZztkLmV4dGVuZCh7aGFzRGF0YTpmdW5jdGlvbihhKXtyZXR1cm4geGEuaGFzRGF0YShhKXx8Ry5oYXNEYXRhKGEpfSxkYXRhOmZ1bmN0aW9uKGEsCmIsYyl7cmV0dXJuIHhhLmFjY2VzcyhhLGIsYyl9LHJlbW92ZURhdGE6ZnVuY3Rpb24oYSxiKXt4YS5yZW1vdmUoYSxiKX0sX2RhdGE6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBHLmFjY2VzcyhhLGIsYyl9LF9yZW1vdmVEYXRhOmZ1bmN0aW9uKGEsYil7Ry5yZW1vdmUoYSxiKX19KTtkLmZuLmV4dGVuZCh7ZGF0YTpmdW5jdGlvbihhLGIpe3ZhciBjLGUsZixnPXRoaXNbMF0saD1nJiZnLmF0dHJpYnV0ZXM7aWYodm9pZCAwPT09YSl7aWYodGhpcy5sZW5ndGgmJihmPXhhLmdldChnKSwxPT09Zy5ub2RlVHlwZSYmIUcuZ2V0KGcsImhhc0RhdGFBdHRycyIpKSl7Zm9yKGM9aC5sZW5ndGg7Yy0tOyloW2NdJiYwPT09KGU9aFtjXS5uYW1lKS5pbmRleE9mKCJkYXRhLSIpJiYoZT1CYShlLnNsaWNlKDUpKSxPYihnLGUsZltlXSkpO0cuc2V0KGcsImhhc0RhdGFBdHRycyIsITApfXJldHVybiBmfXJldHVybiJvYmplY3QiPT10eXBlb2YgYT90aGlzLmVhY2goZnVuY3Rpb24oKXt4YS5zZXQodGhpcywKYSl9KTpYYSh0aGlzLGZ1bmN0aW9uKG0pe3ZhciBsO2lmKGcmJnZvaWQgMD09PW0pcmV0dXJuIHZvaWQgMCE9PShsPXhhLmdldChnLGEpKT9sOnZvaWQgMCE9PShsPU9iKGcsYSkpP2w6dm9pZCAwO3RoaXMuZWFjaChmdW5jdGlvbigpe3hhLnNldCh0aGlzLGEsbSl9KX0sbnVsbCxiLDE8YXJndW1lbnRzLmxlbmd0aCxudWxsLCEwKX0scmVtb3ZlRGF0YTpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7eGEucmVtb3ZlKHRoaXMsYSl9KX19KTtkLmV4dGVuZCh7cXVldWU6ZnVuY3Rpb24oYSxiLGMpe3ZhciBlO2lmKGEpcmV0dXJuIGI9KGJ8fCJmeCIpKyJxdWV1ZSIsZT1HLmdldChhLGIpLGMmJighZXx8QXJyYXkuaXNBcnJheShjKT9lPUcuYWNjZXNzKGEsYixkLm1ha2VBcnJheShjKSk6ZS5wdXNoKGMpKSxlfHxbXX0sZGVxdWV1ZTpmdW5jdGlvbihhLGIpe2I9Ynx8ImZ4Ijt2YXIgYz1kLnF1ZXVlKGEsYiksZT1jLmxlbmd0aCxmPWMuc2hpZnQoKSxnPWQuX3F1ZXVlSG9va3MoYSwKYik7ImlucHJvZ3Jlc3MiPT09ZiYmKGY9Yy5zaGlmdCgpLGUtLSk7ZiYmKCJmeCI9PT1iJiZjLnVuc2hpZnQoImlucHJvZ3Jlc3MiKSxkZWxldGUgZy5zdG9wLGYuY2FsbChhLGZ1bmN0aW9uKCl7ZC5kZXF1ZXVlKGEsYil9LGcpKTshZSYmZyYmZy5lbXB0eS5maXJlKCl9LF9xdWV1ZUhvb2tzOmZ1bmN0aW9uKGEsYil7dmFyIGM9YisicXVldWVIb29rcyI7cmV0dXJuIEcuZ2V0KGEsYyl8fEcuYWNjZXNzKGEsYyx7ZW1wdHk6ZC5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IikuYWRkKGZ1bmN0aW9uKCl7Ry5yZW1vdmUoYSxbYisicXVldWUiLGNdKX0pfSl9fSk7ZC5mbi5leHRlbmQoe3F1ZXVlOmZ1bmN0aW9uKGEsYil7dmFyIGM9MjtyZXR1cm4ic3RyaW5nIiE9dHlwZW9mIGEmJihiPWEsYT0iZngiLGMtLSksYXJndW1lbnRzLmxlbmd0aDxjP2QucXVldWUodGhpc1swXSxhKTp2b2lkIDA9PT1iP3RoaXM6dGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGU9ZC5xdWV1ZSh0aGlzLGEsYik7ZC5fcXVldWVIb29rcyh0aGlzLAphKTsiZngiPT09YSYmImlucHJvZ3Jlc3MiIT09ZVswXSYmZC5kZXF1ZXVlKHRoaXMsYSl9KX0sZGVxdWV1ZTpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7ZC5kZXF1ZXVlKHRoaXMsYSl9KX0sY2xlYXJRdWV1ZTpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5xdWV1ZShhfHwiZngiLFtdKX0scHJvbWlzZTpmdW5jdGlvbihhLGIpe3ZhciBjLGU9MSxmPWQuRGVmZXJyZWQoKSxnPXRoaXMsaD10aGlzLmxlbmd0aCxtPWZ1bmN0aW9uKCl7LS1lfHxmLnJlc29sdmVXaXRoKGcsW2ddKX07InN0cmluZyIhPXR5cGVvZiBhJiYoYj1hLGE9dm9pZCAwKTtmb3IoYT1hfHwiZngiO2gtLTspKGM9Ry5nZXQoZ1toXSxhKyJxdWV1ZUhvb2tzIikpJiZjLmVtcHR5JiYoZSsrLGMuZW1wdHkuYWRkKG0pKTtyZXR1cm4gbSgpLGYucHJvbWlzZShiKX19KTt2YXIgemM9L1srLV0\/KD86XGQqXC58KVxkKyg\/OltlRV1bKy1dP1xkK3wpLy5zb3VyY2UseWI9bmV3IFJlZ0V4cCgiXig\/OihbKy1dKT18KSgiKwp6YysiKShbYS16JV0qKSQiLCJpIiksUGE9WyJUb3AiLCJSaWdodCIsIkJvdHRvbSIsIkxlZnQiXSxqYj1MLmRvY3VtZW50RWxlbWVudCxvYj1mdW5jdGlvbihhKXtyZXR1cm4gZC5jb250YWlucyhhLm93bmVyRG9jdW1lbnQsYSl9LG1kPXtjb21wb3NlZDohMH07amIuZ2V0Um9vdE5vZGUmJihvYj1mdW5jdGlvbihhKXtyZXR1cm4gZC5jb250YWlucyhhLm93bmVyRG9jdW1lbnQsYSl8fGEuZ2V0Um9vdE5vZGUobWQpPT09YS5vd25lckRvY3VtZW50fSk7dmFyIFFiPWZ1bmN0aW9uKGEsYil7cmV0dXJuIm5vbmUiPT09KGE9Ynx8YSkuc3R5bGUuZGlzcGxheXx8IiI9PT1hLnN0eWxlLmRpc3BsYXkmJm9iKGEpJiYibm9uZSI9PT1kLmNzcyhhLCJkaXNwbGF5Iil9LGxjPXt9O2QuZm4uZXh0ZW5kKHtzaG93OmZ1bmN0aW9uKCl7cmV0dXJuICRhKHRoaXMsITApfSxoaWRlOmZ1bmN0aW9uKCl7cmV0dXJuICRhKHRoaXMpfSx0b2dnbGU6ZnVuY3Rpb24oYSl7cmV0dXJuImJvb2xlYW4iPT10eXBlb2YgYT8KYT90aGlzLnNob3coKTp0aGlzLmhpZGUoKTp0aGlzLmVhY2goZnVuY3Rpb24oKXtRYih0aGlzKT9kKHRoaXMpLnNob3coKTpkKHRoaXMpLmhpZGUoKX0pfX0pO3ZhciBaYixIYj0vXig\/OmNoZWNrYm94fHJhZGlvKSQvaSxtYz0vPChbYS16XVteXC9cMD5ceDIwXHRcclxuXGZdKikvaSxuYz0vXiR8Xm1vZHVsZSR8XC8oPzpqYXZhfGVjbWEpc2NyaXB0L2kseGI9TC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCkuYXBwZW5kQ2hpbGQoTC5jcmVhdGVFbGVtZW50KCJkaXYiKSk7KFpiPUwuY3JlYXRlRWxlbWVudCgiaW5wdXQiKSkuc2V0QXR0cmlidXRlKCJ0eXBlIiwicmFkaW8iKTtaYi5zZXRBdHRyaWJ1dGUoImNoZWNrZWQiLCJjaGVja2VkIik7WmIuc2V0QXR0cmlidXRlKCJuYW1lIiwidCIpO3hiLmFwcGVuZENoaWxkKFpiKTtOLmNoZWNrQ2xvbmU9eGIuY2xvbmVOb2RlKCEwKS5jbG9uZU5vZGUoITApLmxhc3RDaGlsZC5jaGVja2VkO3hiLmlubmVySFRNTD0iPHRleHRhcmVhPng8L3RleHRhcmVhPiI7Ck4ubm9DbG9uZUNoZWNrZWQ9ISF4Yi5jbG9uZU5vZGUoITApLmxhc3RDaGlsZC5kZWZhdWx0VmFsdWU7eGIuaW5uZXJIVE1MPSI8b3B0aW9uPjwvb3B0aW9uPiI7Ti5vcHRpb249ISF4Yi5sYXN0Q2hpbGQ7dmFyIENhPXt0aGVhZDpbMSwiPHRhYmxlPiIsIjwvdGFibGU+Il0sY29sOlsyLCI8dGFibGU+PGNvbGdyb3VwPiIsIjwvY29sZ3JvdXA+PC90YWJsZT4iXSx0cjpbMiwiPHRhYmxlPjx0Ym9keT4iLCI8L3Rib2R5PjwvdGFibGU+Il0sdGQ6WzMsIjx0YWJsZT48dGJvZHk+PHRyPiIsIjwvdHI+PC90Ym9keT48L3RhYmxlPiJdLF9kZWZhdWx0OlswLCIiLCIiXX07Q2EudGJvZHk9Q2EudGZvb3Q9Q2EuY29sZ3JvdXA9Q2EuY2FwdGlvbj1DYS50aGVhZDtDYS50aD1DYS50ZDtOLm9wdGlvbnx8KENhLm9wdGdyb3VwPUNhLm9wdGlvbj1bMSwiPHNlbGVjdCBtdWx0aXBsZT0nbXVsdGlwbGUnPiIsIjwvc2VsZWN0PiJdKTt2YXIgUWM9Lzx8JiM\/XHcrOy8sQWM9L14oW14uXSopKD86XC4oLispfCkvOwpkLmV2ZW50PXtnbG9iYWw6e30sYWRkOmZ1bmN0aW9uKGEsYixjLGUsZil7dmFyIGcsaCxtLGwsdCx3LHIseixEPUcuZ2V0KGEpO2lmKEdiKGEpKWZvcihjLmhhbmRsZXImJihjPShnPWMpLmhhbmRsZXIsZj1nLnNlbGVjdG9yKSxmJiZkLmZpbmQubWF0Y2hlc1NlbGVjdG9yKGpiLGYpLGMuZ3VpZHx8KGMuZ3VpZD1kLmd1aWQrKyksKGw9RC5ldmVudHMpfHwobD1ELmV2ZW50cz1PYmplY3QuY3JlYXRlKG51bGwpKSwoaD1ELmhhbmRsZSl8fChoPUQuaGFuZGxlPWZ1bmN0aW9uKE8pe3JldHVybiJ1bmRlZmluZWQiIT10eXBlb2YgZCYmZC5ldmVudC50cmlnZ2VyZWQhPT1PLnR5cGU\/ZC5ldmVudC5kaXNwYXRjaC5hcHBseShhLGFyZ3VtZW50cyk6dm9pZCAwfSksRD0oYj0oYnx8IiIpLm1hdGNoKExhKXx8WyIiXSkubGVuZ3RoO0QtLTspe3ZhciBGPXo9KG09QWMuZXhlYyhiW0RdKXx8W10pWzFdO209KG1bMl18fCIiKS5zcGxpdCgiLiIpLnNvcnQoKTtGJiYodz1kLmV2ZW50LnNwZWNpYWxbRl18fAp7fSxGPShmP3cuZGVsZWdhdGVUeXBlOncuYmluZFR5cGUpfHxGLHc9ZC5ldmVudC5zcGVjaWFsW0ZdfHx7fSx0PWQuZXh0ZW5kKHt0eXBlOkYsb3JpZ1R5cGU6eixkYXRhOmUsaGFuZGxlcjpjLGd1aWQ6Yy5ndWlkLHNlbGVjdG9yOmYsbmVlZHNDb250ZXh0OmYmJmQuZXhwci5tYXRjaC5uZWVkc0NvbnRleHQudGVzdChmKSxuYW1lc3BhY2U6bS5qb2luKCIuIil9LGcpLChyPWxbRl0pfHwoKHI9bFtGXT1bXSkuZGVsZWdhdGVDb3VudD0wLHcuc2V0dXAmJiExIT09dy5zZXR1cC5jYWxsKGEsZSxtLGgpfHxhLmFkZEV2ZW50TGlzdGVuZXImJmEuYWRkRXZlbnRMaXN0ZW5lcihGLGgpKSx3LmFkZCYmKHcuYWRkLmNhbGwoYSx0KSx0LmhhbmRsZXIuZ3VpZHx8KHQuaGFuZGxlci5ndWlkPWMuZ3VpZCkpLGY\/ci5zcGxpY2Uoci5kZWxlZ2F0ZUNvdW50KyssMCx0KTpyLnB1c2godCksZC5ldmVudC5nbG9iYWxbRl09ITApfX0scmVtb3ZlOmZ1bmN0aW9uKGEsYixjLGUsZil7dmFyIGcsaCxtLGwsCnQsdyxyLHosRD1HLmhhc0RhdGEoYSkmJkcuZ2V0KGEpO2lmKEQmJihsPUQuZXZlbnRzKSl7Zm9yKHQ9KGI9KGJ8fCIiKS5tYXRjaChMYSl8fFsiIl0pLmxlbmd0aDt0LS07KWlmKHc9ej0obT1BYy5leGVjKGJbdF0pfHxbXSlbMV0scj0obVsyXXx8IiIpLnNwbGl0KCIuIikuc29ydCgpLHcpe3ZhciBGPWQuZXZlbnQuc3BlY2lhbFt3XXx8e30sTz1sW3c9KGU\/Ri5kZWxlZ2F0ZVR5cGU6Ri5iaW5kVHlwZSl8fHddfHxbXTttPW1bMl0mJm5ldyBSZWdFeHAoIihefFxcLikiK3Iuam9pbigiXFwuKD86LipcXC58KSIpKyIoXFwufCQpIik7Zm9yKGg9Zz1PLmxlbmd0aDtnLS07KXt2YXIgYWE9T1tnXTshZiYmeiE9PWFhLm9yaWdUeXBlfHxjJiZjLmd1aWQhPT1hYS5ndWlkfHxtJiYhbS50ZXN0KGFhLm5hbWVzcGFjZSl8fGUmJmUhPT1hYS5zZWxlY3RvciYmKCIqKiIhPT1lfHwhYWEuc2VsZWN0b3IpfHwoTy5zcGxpY2UoZywxKSxhYS5zZWxlY3RvciYmTy5kZWxlZ2F0ZUNvdW50LS0sRi5yZW1vdmUmJgpGLnJlbW92ZS5jYWxsKGEsYWEpKX1oJiYhTy5sZW5ndGgmJihGLnRlYXJkb3duJiYhMSE9PUYudGVhcmRvd24uY2FsbChhLHIsRC5oYW5kbGUpfHxkLnJlbW92ZUV2ZW50KGEsdyxELmhhbmRsZSksZGVsZXRlIGxbd10pfWVsc2UgZm9yKHcgaW4gbClkLmV2ZW50LnJlbW92ZShhLHcrYlt0XSxjLGUsITApO2QuaXNFbXB0eU9iamVjdChsKSYmRy5yZW1vdmUoYSwiaGFuZGxlIGV2ZW50cyIpfX0sZGlzcGF0Y2g6ZnVuY3Rpb24oYSl7dmFyIGIsYyxlLGYsZz1BcnJheShhcmd1bWVudHMubGVuZ3RoKSxoPWQuZXZlbnQuZml4KGEpLG09KEcuZ2V0KHRoaXMsImV2ZW50cyIpfHxPYmplY3QuY3JlYXRlKG51bGwpKVtoLnR5cGVdfHxbXSxsPWQuZXZlbnQuc3BlY2lhbFtoLnR5cGVdfHx7fTtnWzBdPWg7Zm9yKGI9MTtiPGFyZ3VtZW50cy5sZW5ndGg7YisrKWdbYl09YXJndW1lbnRzW2JdO2lmKGguZGVsZWdhdGVUYXJnZXQ9dGhpcywhbC5wcmVEaXNwYXRjaHx8ITEhPT1sLnByZURpc3BhdGNoLmNhbGwodGhpcywKaCkpe3ZhciB0PWQuZXZlbnQuaGFuZGxlcnMuY2FsbCh0aGlzLGgsbSk7Zm9yKGI9MDsoZT10W2IrK10pJiYhaC5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpOylmb3IoaC5jdXJyZW50VGFyZ2V0PWUuZWxlbSxtPTA7KGY9ZS5oYW5kbGVyc1ttKytdKSYmIWguaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQoKTspaC5ybmFtZXNwYWNlJiYhMSE9PWYubmFtZXNwYWNlJiYhaC5ybmFtZXNwYWNlLnRlc3QoZi5uYW1lc3BhY2UpfHwoaC5oYW5kbGVPYmo9ZixoLmRhdGE9Zi5kYXRhLHZvaWQgMCE9PShjPSgoZC5ldmVudC5zcGVjaWFsW2Yub3JpZ1R5cGVdfHx7fSkuaGFuZGxlfHxmLmhhbmRsZXIpLmFwcGx5KGUuZWxlbSxnKSkmJiExPT09KGgucmVzdWx0PWMpJiYoaC5wcmV2ZW50RGVmYXVsdCgpLGguc3RvcFByb3BhZ2F0aW9uKCkpKTtyZXR1cm4gbC5wb3N0RGlzcGF0Y2gmJmwucG9zdERpc3BhdGNoLmNhbGwodGhpcyxoKSxoLnJlc3VsdH19LGhhbmRsZXJzOmZ1bmN0aW9uKGEsYil7dmFyIGMsCmUsZixnPVtdLGg9Yi5kZWxlZ2F0ZUNvdW50LG09YS50YXJnZXQ7aWYoaCYmbS5ub2RlVHlwZSYmISgiY2xpY2siPT09YS50eXBlJiYxPD1hLmJ1dHRvbikpZm9yKDttIT09dGhpczttPW0ucGFyZW50Tm9kZXx8dGhpcylpZigxPT09bS5ub2RlVHlwZSYmKCJjbGljayIhPT1hLnR5cGV8fCEwIT09bS5kaXNhYmxlZCkpe3ZhciBsPVtdLHQ9e307Zm9yKGM9MDtjPGg7YysrKXZvaWQgMD09PXRbZj0oZT1iW2NdKS5zZWxlY3RvcisiICJdJiYodFtmXT1lLm5lZWRzQ29udGV4dD8tMTxkKGYsdGhpcykuaW5kZXgobSk6ZC5maW5kKGYsdGhpcyxudWxsLFttXSkubGVuZ3RoKSx0W2ZdJiZsLnB1c2goZSk7bC5sZW5ndGgmJmcucHVzaCh7ZWxlbTptLGhhbmRsZXJzOmx9KX1yZXR1cm4gbT10aGlzLGg8Yi5sZW5ndGgmJmcucHVzaCh7ZWxlbTptLGhhbmRsZXJzOmIuc2xpY2UoaCl9KSxnfSxhZGRQcm9wOmZ1bmN0aW9uKGEsYil7T2JqZWN0LmRlZmluZVByb3BlcnR5KGQuRXZlbnQucHJvdG90eXBlLAphLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCxnZXQ6TShiKT9mdW5jdGlvbigpe2lmKHRoaXMub3JpZ2luYWxFdmVudClyZXR1cm4gYih0aGlzLm9yaWdpbmFsRXZlbnQpfTpmdW5jdGlvbigpe2lmKHRoaXMub3JpZ2luYWxFdmVudClyZXR1cm4gdGhpcy5vcmlnaW5hbEV2ZW50W2FdfSxzZXQ6ZnVuY3Rpb24oYyl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsYSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6Y30pfX0pfSxmaXg6ZnVuY3Rpb24oYSl7cmV0dXJuIGFbZC5leHBhbmRvXT9hOm5ldyBkLkV2ZW50KGEpfSxzcGVjaWFsOntsb2FkOntub0J1YmJsZTohMH0sY2xpY2s6e3NldHVwOmZ1bmN0aW9uKGEpe2E9dGhpc3x8YTtyZXR1cm4gSGIudGVzdChhLnR5cGUpJiZhLmNsaWNrJiZYKGEsImlucHV0IikmJnBiKGEsImNsaWNrIiwhMCksITF9LHRyaWdnZXI6ZnVuY3Rpb24oYSl7YT10aGlzfHxhO3JldHVybiBIYi50ZXN0KGEudHlwZSkmJgphLmNsaWNrJiZYKGEsImlucHV0IikmJnBiKGEsImNsaWNrIiksITB9LF9kZWZhdWx0OmZ1bmN0aW9uKGEpe2E9YS50YXJnZXQ7cmV0dXJuIEhiLnRlc3QoYS50eXBlKSYmYS5jbGljayYmWChhLCJpbnB1dCIpJiZHLmdldChhLCJjbGljayIpfHxYKGEsImEiKX19LGJlZm9yZXVubG9hZDp7cG9zdERpc3BhdGNoOmZ1bmN0aW9uKGEpe3ZvaWQgMCE9PWEucmVzdWx0JiZhLm9yaWdpbmFsRXZlbnQmJihhLm9yaWdpbmFsRXZlbnQucmV0dXJuVmFsdWU9YS5yZXN1bHQpfX19fTtkLnJlbW92ZUV2ZW50PWZ1bmN0aW9uKGEsYixjKXthLnJlbW92ZUV2ZW50TGlzdGVuZXImJmEucmVtb3ZlRXZlbnRMaXN0ZW5lcihiLGMpfTtkLkV2ZW50PWZ1bmN0aW9uKGEsYil7aWYoISh0aGlzIGluc3RhbmNlb2YgZC5FdmVudCkpcmV0dXJuIG5ldyBkLkV2ZW50KGEsYik7YSYmYS50eXBlPyh0aGlzLm9yaWdpbmFsRXZlbnQ9YSx0aGlzLnR5cGU9YS50eXBlLHRoaXMuaXNEZWZhdWx0UHJldmVudGVkPWEuZGVmYXVsdFByZXZlbnRlZHx8CnZvaWQgMD09PWEuZGVmYXVsdFByZXZlbnRlZCYmITE9PT1hLnJldHVyblZhbHVlP2FiOmJiLHRoaXMudGFyZ2V0PWEudGFyZ2V0JiYzPT09YS50YXJnZXQubm9kZVR5cGU\/YS50YXJnZXQucGFyZW50Tm9kZTphLnRhcmdldCx0aGlzLmN1cnJlbnRUYXJnZXQ9YS5jdXJyZW50VGFyZ2V0LHRoaXMucmVsYXRlZFRhcmdldD1hLnJlbGF0ZWRUYXJnZXQpOnRoaXMudHlwZT1hO2ImJmQuZXh0ZW5kKHRoaXMsYik7dGhpcy50aW1lU3RhbXA9YSYmYS50aW1lU3RhbXB8fERhdGUubm93KCk7dGhpc1tkLmV4cGFuZG9dPSEwfTtkLkV2ZW50LnByb3RvdHlwZT17Y29uc3RydWN0b3I6ZC5FdmVudCxpc0RlZmF1bHRQcmV2ZW50ZWQ6YmIsaXNQcm9wYWdhdGlvblN0b3BwZWQ6YmIsaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQ6YmIsaXNTaW11bGF0ZWQ6ITEscHJldmVudERlZmF1bHQ6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLm9yaWdpbmFsRXZlbnQ7dGhpcy5pc0RlZmF1bHRQcmV2ZW50ZWQ9YWI7CmEmJiF0aGlzLmlzU2ltdWxhdGVkJiZhLnByZXZlbnREZWZhdWx0KCl9LHN0b3BQcm9wYWdhdGlvbjpmdW5jdGlvbigpe3ZhciBhPXRoaXMub3JpZ2luYWxFdmVudDt0aGlzLmlzUHJvcGFnYXRpb25TdG9wcGVkPWFiO2EmJiF0aGlzLmlzU2ltdWxhdGVkJiZhLnN0b3BQcm9wYWdhdGlvbigpfSxzdG9wSW1tZWRpYXRlUHJvcGFnYXRpb246ZnVuY3Rpb24oKXt2YXIgYT10aGlzLm9yaWdpbmFsRXZlbnQ7dGhpcy5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZD1hYjthJiYhdGhpcy5pc1NpbXVsYXRlZCYmYS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTt0aGlzLnN0b3BQcm9wYWdhdGlvbigpfX07ZC5lYWNoKHthbHRLZXk6ITAsYnViYmxlczohMCxjYW5jZWxhYmxlOiEwLGNoYW5nZWRUb3VjaGVzOiEwLGN0cmxLZXk6ITAsZGV0YWlsOiEwLGV2ZW50UGhhc2U6ITAsbWV0YUtleTohMCxwYWdlWDohMCxwYWdlWTohMCxzaGlmdEtleTohMCx2aWV3OiEwLCJjaGFyIjohMCxjb2RlOiEwLApjaGFyQ29kZTohMCxrZXk6ITAsa2V5Q29kZTohMCxidXR0b246ITAsYnV0dG9uczohMCxjbGllbnRYOiEwLGNsaWVudFk6ITAsb2Zmc2V0WDohMCxvZmZzZXRZOiEwLHBvaW50ZXJJZDohMCxwb2ludGVyVHlwZTohMCxzY3JlZW5YOiEwLHNjcmVlblk6ITAsdGFyZ2V0VG91Y2hlczohMCx0b0VsZW1lbnQ6ITAsdG91Y2hlczohMCx3aGljaDohMH0sZC5ldmVudC5hZGRQcm9wKTtkLmVhY2goe2ZvY3VzOiJmb2N1c2luIixibHVyOiJmb2N1c291dCJ9LGZ1bmN0aW9uKGEsYil7ZnVuY3Rpb24gYyhlKXtpZihMLmRvY3VtZW50TW9kZSl7dmFyIGY9Ry5nZXQodGhpcywiaGFuZGxlIiksZz1kLmV2ZW50LmZpeChlKTtnLnR5cGU9ImZvY3VzaW4iPT09ZS50eXBlPyJmb2N1cyI6ImJsdXIiO2cuaXNTaW11bGF0ZWQ9ITA7ZihlKTtnLnRhcmdldD09PWcuY3VycmVudFRhcmdldCYmZihnKX1lbHNlIGQuZXZlbnQuc2ltdWxhdGUoYixlLnRhcmdldCxkLmV2ZW50LmZpeChlKSl9ZC5ldmVudC5zcGVjaWFsW2FdPQp7c2V0dXA6ZnVuY3Rpb24oKXt2YXIgZTtpZihwYih0aGlzLGEsITApLCFMLmRvY3VtZW50TW9kZSlyZXR1cm4hMTsoZT1HLmdldCh0aGlzLGIpKXx8dGhpcy5hZGRFdmVudExpc3RlbmVyKGIsYyk7Ry5zZXQodGhpcyxiLChlfHwwKSsxKX0sdHJpZ2dlcjpmdW5jdGlvbigpe3JldHVybiBwYih0aGlzLGEpLCEwfSx0ZWFyZG93bjpmdW5jdGlvbigpe3ZhciBlO2lmKCFMLmRvY3VtZW50TW9kZSlyZXR1cm4hMTsoZT1HLmdldCh0aGlzLGIpLTEpP0cuc2V0KHRoaXMsYixlKToodGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKGIsYyksRy5yZW1vdmUodGhpcyxiKSl9LF9kZWZhdWx0OmZ1bmN0aW9uKGUpe3JldHVybiBHLmdldChlLnRhcmdldCxhKX0sZGVsZWdhdGVUeXBlOmJ9O2QuZXZlbnQuc3BlY2lhbFtiXT17c2V0dXA6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLm93bmVyRG9jdW1lbnR8fHRoaXMuZG9jdW1lbnR8fHRoaXMsZj1MLmRvY3VtZW50TW9kZT90aGlzOmUsZz1HLmdldChmLGIpO2d8fAooTC5kb2N1bWVudE1vZGU\/dGhpcy5hZGRFdmVudExpc3RlbmVyKGIsYyk6ZS5hZGRFdmVudExpc3RlbmVyKGEsYywhMCkpO0cuc2V0KGYsYiwoZ3x8MCkrMSl9LHRlYXJkb3duOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5vd25lckRvY3VtZW50fHx0aGlzLmRvY3VtZW50fHx0aGlzLGY9TC5kb2N1bWVudE1vZGU\/dGhpczplLGc9Ry5nZXQoZixiKS0xO2c\/Ry5zZXQoZixiLGcpOihMLmRvY3VtZW50TW9kZT90aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIoYixjKTplLnJlbW92ZUV2ZW50TGlzdGVuZXIoYSxjLCEwKSxHLnJlbW92ZShmLGIpKX19fSk7ZC5lYWNoKHttb3VzZWVudGVyOiJtb3VzZW92ZXIiLG1vdXNlbGVhdmU6Im1vdXNlb3V0Iixwb2ludGVyZW50ZXI6InBvaW50ZXJvdmVyIixwb2ludGVybGVhdmU6InBvaW50ZXJvdXQifSxmdW5jdGlvbihhLGIpe2QuZXZlbnQuc3BlY2lhbFthXT17ZGVsZWdhdGVUeXBlOmIsYmluZFR5cGU6YixoYW5kbGU6ZnVuY3Rpb24oYyl7dmFyIGUsZj0KYy5yZWxhdGVkVGFyZ2V0LGc9Yy5oYW5kbGVPYmo7cmV0dXJuIGYmJihmPT09dGhpc3x8ZC5jb250YWlucyh0aGlzLGYpKXx8KGMudHlwZT1nLm9yaWdUeXBlLGU9Zy5oYW5kbGVyLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxjLnR5cGU9YiksZX19fSk7ZC5mbi5leHRlbmQoe29uOmZ1bmN0aW9uKGEsYixjLGUpe3JldHVybiBmYih0aGlzLGEsYixjLGUpfSxvbmU6ZnVuY3Rpb24oYSxiLGMsZSl7cmV0dXJuIGZiKHRoaXMsYSxiLGMsZSwxKX0sb2ZmOmZ1bmN0aW9uKGEsYixjKXt2YXIgZSxmO2lmKGEmJmEucHJldmVudERlZmF1bHQmJmEuaGFuZGxlT2JqKXJldHVybiBlPWEuaGFuZGxlT2JqLGQoYS5kZWxlZ2F0ZVRhcmdldCkub2ZmKGUubmFtZXNwYWNlP2Uub3JpZ1R5cGUrIi4iK2UubmFtZXNwYWNlOmUub3JpZ1R5cGUsZS5zZWxlY3RvcixlLmhhbmRsZXIpLHRoaXM7aWYoIm9iamVjdCI9PXR5cGVvZiBhKXtmb3IoZiBpbiBhKXRoaXMub2ZmKGYsYixhW2ZdKTtyZXR1cm4gdGhpc31yZXR1cm4hMSE9PQpiJiYiZnVuY3Rpb24iIT10eXBlb2YgYnx8KGM9YixiPXZvaWQgMCksITE9PT1jJiYoYz1iYiksdGhpcy5lYWNoKGZ1bmN0aW9uKCl7ZC5ldmVudC5yZW1vdmUodGhpcyxhLGMsYil9KX19KTt2YXIgbmQ9LzxzY3JpcHR8PHN0eWxlfDxsaW5rL2ksUmM9L2NoZWNrZWRccyooPzpbXj1dfD1ccyouY2hlY2tlZC4pL2ksU2M9L15ccyo8IVxbQ0RBVEFcW3xcXVxdPlxzKiQvZztkLmV4dGVuZCh7aHRtbFByZWZpbHRlcjpmdW5jdGlvbihhKXtyZXR1cm4gYX0sY2xvbmU6ZnVuY3Rpb24oYSxiLGMpe3ZhciBlLGYsZyxoPWEuY2xvbmVOb2RlKCEwKSxtPW9iKGEpO2lmKCEoTi5ub0Nsb25lQ2hlY2tlZHx8MSE9PWEubm9kZVR5cGUmJjExIT09YS5ub2RlVHlwZXx8ZC5pc1hNTERvYyhhKSkpe3ZhciBsPXNhKGgpLHQ9MDtmb3IoZT0oZj1zYShhKSkubGVuZ3RoO3Q8ZTt0Kyspe3ZhciB3PWZbdF0scj1sW3RdO3ZvaWQgMDsiaW5wdXQiPT09KGc9ci5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpKSYmSGIudGVzdCh3LnR5cGUpPwpyLmNoZWNrZWQ9dy5jaGVja2VkOiJpbnB1dCIhPT1nJiYidGV4dGFyZWEiIT09Z3x8KHIuZGVmYXVsdFZhbHVlPXcuZGVmYXVsdFZhbHVlKX19aWYoYilpZihjKWZvcihmPWZ8fHNhKGEpLGw9bHx8c2EoaCksdD0wLGU9Zi5sZW5ndGg7dDxlO3QrKylnYihmW3RdLGxbdF0pO2Vsc2UgZ2IoYSxoKTtyZXR1cm4gMDwobD1zYShoLCJzY3JpcHQiKSkubGVuZ3RoJiZuYihsLCFtJiZzYShhLCJzY3JpcHQiKSksaH0sY2xlYW5EYXRhOmZ1bmN0aW9uKGEpe2Zvcih2YXIgYixjLGUsZj1kLmV2ZW50LnNwZWNpYWwsZz0wO3ZvaWQgMCE9PShjPWFbZ10pO2crKylpZihHYihjKSl7aWYoYj1jW0cuZXhwYW5kb10pe2lmKGIuZXZlbnRzKWZvcihlIGluIGIuZXZlbnRzKWZbZV0\/ZC5ldmVudC5yZW1vdmUoYyxlKTpkLnJlbW92ZUV2ZW50KGMsZSxiLmhhbmRsZSk7Y1tHLmV4cGFuZG9dPXZvaWQgMH1jW3hhLmV4cGFuZG9dJiYoY1t4YS5leHBhbmRvXT12b2lkIDApfX19KTtkLmZuLmV4dGVuZCh7ZGV0YWNoOmZ1bmN0aW9uKGEpe3JldHVybiBUYih0aGlzLAphLCEwKX0scmVtb3ZlOmZ1bmN0aW9uKGEpe3JldHVybiBUYih0aGlzLGEpfSx0ZXh0OmZ1bmN0aW9uKGEpe3JldHVybiBYYSh0aGlzLGZ1bmN0aW9uKGIpe3JldHVybiB2b2lkIDA9PT1iP2QudGV4dCh0aGlzKTp0aGlzLmVtcHR5KCkuZWFjaChmdW5jdGlvbigpezEhPT10aGlzLm5vZGVUeXBlJiYxMSE9PXRoaXMubm9kZVR5cGUmJjkhPT10aGlzLm5vZGVUeXBlfHwodGhpcy50ZXh0Q29udGVudD1iKX0pfSxudWxsLGEsYXJndW1lbnRzLmxlbmd0aCl9LGFwcGVuZDpmdW5jdGlvbigpe3JldHVybiBjYih0aGlzLGFyZ3VtZW50cyxmdW5jdGlvbihhKXsxIT09dGhpcy5ub2RlVHlwZSYmMTEhPT10aGlzLm5vZGVUeXBlJiY5IT09dGhpcy5ub2RlVHlwZXx8U2IodGhpcyxhKS5hcHBlbmRDaGlsZChhKX0pfSxwcmVwZW5kOmZ1bmN0aW9uKCl7cmV0dXJuIGNiKHRoaXMsYXJndW1lbnRzLGZ1bmN0aW9uKGEpe2lmKDE9PT10aGlzLm5vZGVUeXBlfHwxMT09PXRoaXMubm9kZVR5cGV8fDk9PT0KdGhpcy5ub2RlVHlwZSl7dmFyIGI9U2IodGhpcyxhKTtiLmluc2VydEJlZm9yZShhLGIuZmlyc3RDaGlsZCl9fSl9LGJlZm9yZTpmdW5jdGlvbigpe3JldHVybiBjYih0aGlzLGFyZ3VtZW50cyxmdW5jdGlvbihhKXt0aGlzLnBhcmVudE5vZGUmJnRoaXMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoYSx0aGlzKX0pfSxhZnRlcjpmdW5jdGlvbigpe3JldHVybiBjYih0aGlzLGFyZ3VtZW50cyxmdW5jdGlvbihhKXt0aGlzLnBhcmVudE5vZGUmJnRoaXMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoYSx0aGlzLm5leHRTaWJsaW5nKX0pfSxlbXB0eTpmdW5jdGlvbigpe2Zvcih2YXIgYSxiPTA7bnVsbCE9KGE9dGhpc1tiXSk7YisrKTE9PT1hLm5vZGVUeXBlJiYoZC5jbGVhbkRhdGEoc2EoYSwhMSkpLGEudGV4dENvbnRlbnQ9IiIpO3JldHVybiB0aGlzfSxjbG9uZTpmdW5jdGlvbihhLGIpe3JldHVybiBhPW51bGwhPWEmJmEsYj1udWxsPT1iP2E6Yix0aGlzLm1hcChmdW5jdGlvbigpe3JldHVybiBkLmNsb25lKHRoaXMsCmEsYil9KX0saHRtbDpmdW5jdGlvbihhKXtyZXR1cm4gWGEodGhpcyxmdW5jdGlvbihiKXt2YXIgYz10aGlzWzBdfHx7fSxlPTAsZj10aGlzLmxlbmd0aDtpZih2b2lkIDA9PT1iJiYxPT09Yy5ub2RlVHlwZSlyZXR1cm4gYy5pbm5lckhUTUw7aWYoInN0cmluZyI9PXR5cGVvZiBiJiYhbmQudGVzdChiKSYmIUNhWyhtYy5leGVjKGIpfHxbIiIsIiJdKVsxXS50b0xvd2VyQ2FzZSgpXSl7Yj1kLmh0bWxQcmVmaWx0ZXIoYik7dHJ5e2Zvcig7ZTxmO2UrKykxPT09KGM9dGhpc1tlXXx8e30pLm5vZGVUeXBlJiYoZC5jbGVhbkRhdGEoc2EoYywhMSkpLGMuaW5uZXJIVE1MPWIpO2M9MH1jYXRjaChnKXt9fWMmJnRoaXMuZW1wdHkoKS5hcHBlbmQoYil9LG51bGwsYSxhcmd1bWVudHMubGVuZ3RoKX0scmVwbGFjZVdpdGg6ZnVuY3Rpb24oKXt2YXIgYT1bXTtyZXR1cm4gY2IodGhpcyxhcmd1bWVudHMsZnVuY3Rpb24oYil7dmFyIGM9dGhpcy5wYXJlbnROb2RlOzA+ZC5pbkFycmF5KHRoaXMsYSkmJgooZC5jbGVhbkRhdGEoc2EodGhpcykpLGMmJmMucmVwbGFjZUNoaWxkKGIsdGhpcykpfSxhKX19KTtkLmVhY2goe2FwcGVuZFRvOiJhcHBlbmQiLHByZXBlbmRUbzoicHJlcGVuZCIsaW5zZXJ0QmVmb3JlOiJiZWZvcmUiLGluc2VydEFmdGVyOiJhZnRlciIscmVwbGFjZUFsbDoicmVwbGFjZVdpdGgifSxmdW5jdGlvbihhLGIpe2QuZm5bYV09ZnVuY3Rpb24oYyl7Zm9yKHZhciBlPVtdLGY9ZChjKSxnPWYubGVuZ3RoLTEsaD0wO2g8PWc7aCsrKWM9aD09PWc\/dGhpczp0aGlzLmNsb25lKCEwKSxkKGZbaF0pW2JdKGMpLHViLmFwcGx5KGUsYy5nZXQoKSk7cmV0dXJuIHRoaXMucHVzaFN0YWNrKGUpfX0pO3ZhciBiYz1uZXcgUmVnRXhwKCJeKCIremMrIikoPyFweClbYS16JV0rJCIsImkiKSxhYz0vXi0tLyxVYj1mdW5jdGlvbihhKXt2YXIgYj1hLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXc7cmV0dXJuIGImJmIub3BlbmVyfHwoYj1uKSxiLmdldENvbXB1dGVkU3R5bGUoYSl9LEJjPWZ1bmN0aW9uKGEsCmIsYyl7dmFyIGUsZj17fTtmb3IoZSBpbiBiKWZbZV09YS5zdHlsZVtlXSxhLnN0eWxlW2VdPWJbZV07Zm9yKGUgaW4gYz1jLmNhbGwoYSksYilhLnN0eWxlW2VdPWZbZV07cmV0dXJuIGN9LFRjPW5ldyBSZWdFeHAoUGEuam9pbigifCIpLCJpIik7IWZ1bmN0aW9uKCl7ZnVuY3Rpb24gYSgpe2lmKGwpe20uc3R5bGUuY3NzVGV4dD0icG9zaXRpb246YWJzb2x1dGU7bGVmdDotMTExMTFweDt3aWR0aDo2MHB4O21hcmdpbi10b3A6MXB4O3BhZGRpbmc6MDtib3JkZXI6MCI7bC5zdHlsZS5jc3NUZXh0PSJwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveDtvdmVyZmxvdzpzY3JvbGw7bWFyZ2luOmF1dG87Ym9yZGVyOjFweDtwYWRkaW5nOjFweDt3aWR0aDo2MCU7dG9wOjElIjtqYi5hcHBlbmRDaGlsZChtKS5hcHBlbmRDaGlsZChsKTt2YXIgdD1uLmdldENvbXB1dGVkU3R5bGUobCk7Yj0iMSUiIT09dC50b3A7aD0xMj09PU1hdGgucm91bmQocGFyc2VGbG9hdCh0Lm1hcmdpbkxlZnQpKTsKbC5zdHlsZS5yaWdodD0iNjAlIjtmPTM2PT09TWF0aC5yb3VuZChwYXJzZUZsb2F0KHQucmlnaHQpKTtjPTM2PT09TWF0aC5yb3VuZChwYXJzZUZsb2F0KHQud2lkdGgpKTtsLnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSI7ZT0xMj09PU1hdGgucm91bmQocGFyc2VGbG9hdChsLm9mZnNldFdpZHRoLzMpKTtqYi5yZW1vdmVDaGlsZChtKTtsPW51bGx9fXZhciBiLGMsZSxmLGcsaCxtPUwuY3JlYXRlRWxlbWVudCgiZGl2IiksbD1MLmNyZWF0ZUVsZW1lbnQoImRpdiIpO2wuc3R5bGUmJihsLnN0eWxlLmJhY2tncm91bmRDbGlwPSJjb250ZW50LWJveCIsbC5jbG9uZU5vZGUoITApLnN0eWxlLmJhY2tncm91bmRDbGlwPSIiLE4uY2xlYXJDbG9uZVN0eWxlPSJjb250ZW50LWJveCI9PT1sLnN0eWxlLmJhY2tncm91bmRDbGlwLGQuZXh0ZW5kKE4se2JveFNpemluZ1JlbGlhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuIGEoKSxjfSxwaXhlbEJveFN0eWxlczpmdW5jdGlvbigpe3JldHVybiBhKCksCmZ9LHBpeGVsUG9zaXRpb246ZnVuY3Rpb24oKXtyZXR1cm4gYSgpLGJ9LHJlbGlhYmxlTWFyZ2luTGVmdDpmdW5jdGlvbigpe3JldHVybiBhKCksaH0sc2Nyb2xsYm94U2l6ZTpmdW5jdGlvbigpe3JldHVybiBhKCksZX0scmVsaWFibGVUckRpbWVuc2lvbnM6ZnVuY3Rpb24oKXt2YXIgdCx3LHIsejtyZXR1cm4gbnVsbD09ZyYmKHQ9TC5jcmVhdGVFbGVtZW50KCJ0YWJsZSIpLHc9TC5jcmVhdGVFbGVtZW50KCJ0ciIpLHI9TC5jcmVhdGVFbGVtZW50KCJkaXYiKSx0LnN0eWxlLmNzc1RleHQ9InBvc2l0aW9uOmFic29sdXRlO2xlZnQ6LTExMTExcHg7Ym9yZGVyLWNvbGxhcHNlOnNlcGFyYXRlIix3LnN0eWxlLmNzc1RleHQ9ImJvcmRlcjoxcHggc29saWQiLHcuc3R5bGUuaGVpZ2h0PSIxcHgiLHIuc3R5bGUuaGVpZ2h0PSI5cHgiLHIuc3R5bGUuZGlzcGxheT0iYmxvY2siLGpiLmFwcGVuZENoaWxkKHQpLmFwcGVuZENoaWxkKHcpLmFwcGVuZENoaWxkKHIpLHo9bi5nZXRDb21wdXRlZFN0eWxlKHcpLApnPXBhcnNlSW50KHouaGVpZ2h0LDEwKStwYXJzZUludCh6LmJvcmRlclRvcFdpZHRoLDEwKStwYXJzZUludCh6LmJvcmRlckJvdHRvbVdpZHRoLDEwKT09PXcub2Zmc2V0SGVpZ2h0LGpiLnJlbW92ZUNoaWxkKHQpKSxnfX0pKX0oKTt2YXIgcmM9WyJXZWJraXQiLCJNb3oiLCJtcyJdLHFjPUwuY3JlYXRlRWxlbWVudCgiZGl2Iikuc3R5bGUscGM9e30sb2Q9L14obm9uZXx0YWJsZSg\/IS1jW2VhXSkuKykvLHBkPXtwb3NpdGlvbjoiYWJzb2x1dGUiLHZpc2liaWxpdHk6ImhpZGRlbiIsZGlzcGxheToiYmxvY2sifSxDYz17bGV0dGVyU3BhY2luZzoiMCIsZm9udFdlaWdodDoiNDAwIn07ZC5leHRlbmQoe2Nzc0hvb2tzOntvcGFjaXR5OntnZXQ6ZnVuY3Rpb24oYSxiKXtpZihiKXJldHVybiBhPUthKGEsIm9wYWNpdHkiKSwiIj09PWE\/IjEiOmF9fX0sY3NzTnVtYmVyOnthbmltYXRpb25JdGVyYXRpb25Db3VudDohMCxhc3BlY3RSYXRpbzohMCxib3JkZXJJbWFnZVNsaWNlOiEwLGNvbHVtbkNvdW50OiEwLApmbGV4R3JvdzohMCxmbGV4U2hyaW5rOiEwLGZvbnRXZWlnaHQ6ITAsZ3JpZEFyZWE6ITAsZ3JpZENvbHVtbjohMCxncmlkQ29sdW1uRW5kOiEwLGdyaWRDb2x1bW5TdGFydDohMCxncmlkUm93OiEwLGdyaWRSb3dFbmQ6ITAsZ3JpZFJvd1N0YXJ0OiEwLGxpbmVIZWlnaHQ6ITAsb3BhY2l0eTohMCxvcmRlcjohMCxvcnBoYW5zOiEwLHNjYWxlOiEwLHdpZG93czohMCx6SW5kZXg6ITAsem9vbTohMCxmaWxsT3BhY2l0eTohMCxmbG9vZE9wYWNpdHk6ITAsc3RvcE9wYWNpdHk6ITAsc3Ryb2tlTWl0ZXJsaW1pdDohMCxzdHJva2VPcGFjaXR5OiEwfSxjc3NQcm9wczp7fSxzdHlsZTpmdW5jdGlvbihhLGIsYyxlKXtpZihhJiYzIT09YS5ub2RlVHlwZSYmOCE9PWEubm9kZVR5cGUmJmEuc3R5bGUpe3ZhciBmLGcsaCxtPUJhKGIpLGw9YWMudGVzdChiKSx0PWEuc3R5bGU7aWYobHx8KGI9QWIobSkpLGg9ZC5jc3NIb29rc1tiXXx8ZC5jc3NIb29rc1ttXSx2b2lkIDA9PT1jKXJldHVybiBoJiYKImdldCJpbiBoJiZ2b2lkIDAhPT0oZj1oLmdldChhLCExLGUpKT9mOnRbYl07InN0cmluZyI9PT0oZz10eXBlb2YgYykmJihmPXliLmV4ZWMoYykpJiZmWzFdJiYoYz1QYihhLGIsZiksZz0ibnVtYmVyIik7bnVsbCE9YyYmYz09YyYmKCJudW1iZXIiIT09Z3x8bHx8KGMrPWYmJmZbM118fChkLmNzc051bWJlclttXT8iIjoicHgiKSksTi5jbGVhckNsb25lU3R5bGV8fCIiIT09Y3x8MCE9PWIuaW5kZXhPZigiYmFja2dyb3VuZCIpfHwodFtiXT0iaW5oZXJpdCIpLGgmJiJzZXQiaW4gaCYmdm9pZCAwPT09KGM9aC5zZXQoYSxjLGUpKXx8KGw\/dC5zZXRQcm9wZXJ0eShiLGMpOnRbYl09YykpfX0sY3NzOmZ1bmN0aW9uKGEsYixjLGUpe3ZhciBmLGcsaCxtPUJhKGIpO3JldHVybiBhYy50ZXN0KGIpfHwoYj1BYihtKSksKGg9ZC5jc3NIb29rc1tiXXx8ZC5jc3NIb29rc1ttXSkmJiJnZXQiaW4gaCYmKGY9aC5nZXQoYSwhMCxjKSksdm9pZCAwPT09ZiYmKGY9S2EoYSxiLGUpKSwibm9ybWFsIj09PQpmJiZiIGluIENjJiYoZj1DY1tiXSksIiI9PT1jfHxjPyhnPXBhcnNlRmxvYXQoZiksITA9PT1jfHxpc0Zpbml0ZShnKT9nfHwwOmYpOmZ9fSk7ZC5lYWNoKFsiaGVpZ2h0Iiwid2lkdGgiXSxmdW5jdGlvbihhLGIpe2QuY3NzSG9va3NbYl09e2dldDpmdW5jdGlvbihjLGUsZil7aWYoZSlyZXR1cm4hb2QudGVzdChkLmNzcyhjLCJkaXNwbGF5IikpfHxjLmdldENsaWVudFJlY3RzKCkubGVuZ3RoJiZjLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoP0JiKGMsYixmKTpCYyhjLHBkLGZ1bmN0aW9uKCl7cmV0dXJuIEJiKGMsYixmKX0pfSxzZXQ6ZnVuY3Rpb24oYyxlLGYpe3ZhciBnLGg9VWIoYyksbT0hTi5zY3JvbGxib3hTaXplKCkmJiJhYnNvbHV0ZSI9PT1oLnBvc2l0aW9uLGw9KG18fGYpJiYiYm9yZGVyLWJveCI9PT1kLmNzcyhjLCJib3hTaXppbmciLCExLGgpO2Y9Zj9yYihjLGIsZixsLGgpOjA7cmV0dXJuIGwmJm0mJihmLT1NYXRoLmNlaWwoY1sib2Zmc2V0IitiWzBdLnRvVXBwZXJDYXNlKCkrCmIuc2xpY2UoMSldLXBhcnNlRmxvYXQoaFtiXSktcmIoYyxiLCJib3JkZXIiLCExLGgpLS41KSksZiYmKGc9eWIuZXhlYyhlKSkmJiJweCIhPT0oZ1szXXx8InB4IikmJihjLnN0eWxlW2JdPWUsZT1kLmNzcyhjLGIpKSxXYigwLGUsZil9fX0pO2QuY3NzSG9va3MubWFyZ2luTGVmdD1WYihOLnJlbGlhYmxlTWFyZ2luTGVmdCxmdW5jdGlvbihhLGIpe2lmKGIpcmV0dXJuKHBhcnNlRmxvYXQoS2EoYSwibWFyZ2luTGVmdCIpKXx8YS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0LUJjKGEse21hcmdpbkxlZnQ6MH0sZnVuY3Rpb24oKXtyZXR1cm4gYS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0fSkpKyJweCJ9KTtkLmVhY2goe21hcmdpbjoiIixwYWRkaW5nOiIiLGJvcmRlcjoiV2lkdGgifSxmdW5jdGlvbihhLGIpe2QuY3NzSG9va3NbYStiXT17ZXhwYW5kOmZ1bmN0aW9uKGMpe3ZhciBlPTAsZj17fTtmb3IoYz0ic3RyaW5nIj09dHlwZW9mIGM\/Yy5zcGxpdCgiICIpOltjXTs0PgplO2UrKylmW2ErUGFbZV0rYl09Y1tlXXx8Y1tlLTJdfHxjWzBdO3JldHVybiBmfX07Im1hcmdpbiIhPT1hJiYoZC5jc3NIb29rc1thK2JdLnNldD1XYil9KTtkLmZuLmV4dGVuZCh7Y3NzOmZ1bmN0aW9uKGEsYil7cmV0dXJuIFhhKHRoaXMsZnVuY3Rpb24oYyxlLGYpe3ZhciBnLGg9e30sbT0wO2lmKEFycmF5LmlzQXJyYXkoZSkpe2Y9VWIoYyk7Zm9yKGc9ZS5sZW5ndGg7bTxnO20rKyloW2VbbV1dPWQuY3NzKGMsZVttXSwhMSxmKTtyZXR1cm4gaH1yZXR1cm4gdm9pZCAwIT09Zj9kLnN0eWxlKGMsZSxmKTpkLmNzcyhjLGUpfSxhLGIsMTxhcmd1bWVudHMubGVuZ3RoKX19KTsoKGQuVHdlZW49emEpLnByb3RvdHlwZT17Y29uc3RydWN0b3I6emEsaW5pdDpmdW5jdGlvbihhLGIsYyxlLGYsZyl7dGhpcy5lbGVtPWE7dGhpcy5wcm9wPWM7dGhpcy5lYXNpbmc9Znx8ZC5lYXNpbmcuX2RlZmF1bHQ7dGhpcy5vcHRpb25zPWI7dGhpcy5zdGFydD10aGlzLm5vdz10aGlzLmN1cigpO3RoaXMuZW5kPQplO3RoaXMudW5pdD1nfHwoZC5jc3NOdW1iZXJbY10\/IiI6InB4Iil9LGN1cjpmdW5jdGlvbigpe3ZhciBhPXphLnByb3BIb29rc1t0aGlzLnByb3BdO3JldHVybiBhJiZhLmdldD9hLmdldCh0aGlzKTp6YS5wcm9wSG9va3MuX2RlZmF1bHQuZ2V0KHRoaXMpfSxydW46ZnVuY3Rpb24oYSl7dmFyIGIsYz16YS5wcm9wSG9va3NbdGhpcy5wcm9wXTtyZXR1cm4gdGhpcy5vcHRpb25zLmR1cmF0aW9uP3RoaXMucG9zPWI9ZC5lYXNpbmdbdGhpcy5lYXNpbmddKGEsdGhpcy5vcHRpb25zLmR1cmF0aW9uKmEsMCwxLHRoaXMub3B0aW9ucy5kdXJhdGlvbik6dGhpcy5wb3M9Yj1hLHRoaXMubm93PSh0aGlzLmVuZC10aGlzLnN0YXJ0KSpiK3RoaXMuc3RhcnQsdGhpcy5vcHRpb25zLnN0ZXAmJnRoaXMub3B0aW9ucy5zdGVwLmNhbGwodGhpcy5lbGVtLHRoaXMubm93LHRoaXMpLGMmJmMuc2V0P2Muc2V0KHRoaXMpOnphLnByb3BIb29rcy5fZGVmYXVsdC5zZXQodGhpcyksdGhpc319KS5pbml0LnByb3RvdHlwZT0KemEucHJvdG90eXBlOyh6YS5wcm9wSG9va3M9e19kZWZhdWx0OntnZXQ6ZnVuY3Rpb24oYSl7dmFyIGI7cmV0dXJuIDEhPT1hLmVsZW0ubm9kZVR5cGV8fG51bGwhPWEuZWxlbVthLnByb3BdJiZudWxsPT1hLmVsZW0uc3R5bGVbYS5wcm9wXT9hLmVsZW1bYS5wcm9wXTooYj1kLmNzcyhhLmVsZW0sYS5wcm9wLCIiKSkmJiJhdXRvIiE9PWI\/YjowfSxzZXQ6ZnVuY3Rpb24oYSl7ZC5meC5zdGVwW2EucHJvcF0\/ZC5meC5zdGVwW2EucHJvcF0oYSk6MSE9PWEuZWxlbS5ub2RlVHlwZXx8IWQuY3NzSG9va3NbYS5wcm9wXSYmbnVsbD09YS5lbGVtLnN0eWxlW0FiKGEucHJvcCldP2EuZWxlbVthLnByb3BdPWEubm93OmQuc3R5bGUoYS5lbGVtLGEucHJvcCxhLm5vdythLnVuaXQpfX19KS5zY3JvbGxUb3A9emEucHJvcEhvb2tzLnNjcm9sbExlZnQ9e3NldDpmdW5jdGlvbihhKXthLmVsZW0ubm9kZVR5cGUmJmEuZWxlbS5wYXJlbnROb2RlJiYoYS5lbGVtW2EucHJvcF09YS5ub3cpfX07ZC5lYXNpbmc9CntsaW5lYXI6ZnVuY3Rpb24oYSl7cmV0dXJuIGF9LHN3aW5nOmZ1bmN0aW9uKGEpe3JldHVybi41LU1hdGguY29zKGEqTWF0aC5QSSkvMn0sX2RlZmF1bHQ6InN3aW5nIn07ZC5meD16YS5wcm90b3R5cGUuaW5pdDtkLmZ4LnN0ZXA9e307dmFyIHNiLFhiLHFkPS9eKD86dG9nZ2xlfHNob3d8aGlkZSkkLyxyZD0vcXVldWVIb29rcyQvO2QuQW5pbWF0aW9uPWQuZXh0ZW5kKHgse3R3ZWVuZXJzOnsiKiI6W2Z1bmN0aW9uKGEsYil7dmFyIGM9dGhpcy5jcmVhdGVUd2VlbihhLGIpO3JldHVybiBQYihjLmVsZW0sYSx5Yi5leGVjKGIpLGMpLGN9XX0sdHdlZW5lcjpmdW5jdGlvbihhLGIpe00oYSk\/KGI9YSxhPVsiKiJdKTphPWEubWF0Y2goTGEpO2Zvcih2YXIgYyxlPTAsZj1hLmxlbmd0aDtlPGY7ZSsrKWM9YVtlXSx4LnR3ZWVuZXJzW2NdPXgudHdlZW5lcnNbY118fFtdLHgudHdlZW5lcnNbY10udW5zaGlmdChiKX0scHJlZmlsdGVyczpbZnVuY3Rpb24oYSxiLGMpe3ZhciBlLGYsZyxoLAptLGwsdCx3PSJ3aWR0aCJpbiBifHwiaGVpZ2h0ImluIGIscj10aGlzLHo9e30sRD1hLnN0eWxlLEY9YS5ub2RlVHlwZSYmUWIoYSksTz1HLmdldChhLCJmeHNob3ciKTtmb3IoZSBpbiBjLnF1ZXVlfHwobnVsbD09KGg9ZC5fcXVldWVIb29rcyhhLCJmeCIpKS51bnF1ZXVlZCYmKGgudW5xdWV1ZWQ9MCxtPWguZW1wdHkuZmlyZSxoLmVtcHR5LmZpcmU9ZnVuY3Rpb24oKXtoLnVucXVldWVkfHxtKCl9KSxoLnVucXVldWVkKyssci5hbHdheXMoZnVuY3Rpb24oKXtyLmFsd2F5cyhmdW5jdGlvbigpe2gudW5xdWV1ZWQtLTtkLnF1ZXVlKGEsImZ4IikubGVuZ3RofHxoLmVtcHR5LmZpcmUoKX0pfSkpLGIpaWYoZj1iW2VdLHFkLnRlc3QoZikpe2lmKGRlbGV0ZSBiW2VdLGc9Z3x8InRvZ2dsZSI9PT1mLGY9PT0oRj8iaGlkZSI6InNob3ciKSl7aWYoInNob3ciIT09Znx8IU98fHZvaWQgMD09PU9bZV0pY29udGludWU7Rj0hMH16W2VdPU8mJk9bZV18fGQuc3R5bGUoYSxlKX1pZigoYj0hZC5pc0VtcHR5T2JqZWN0KGIpKXx8CiFkLmlzRW1wdHlPYmplY3QoeikpZm9yKGUgaW4gdyYmMT09PWEubm9kZVR5cGUmJihjLm92ZXJmbG93PVtELm92ZXJmbG93LEQub3ZlcmZsb3dYLEQub3ZlcmZsb3dZXSxudWxsPT0obD1PJiZPLmRpc3BsYXkpJiYobD1HLmdldChhLCJkaXNwbGF5IikpLCJub25lIj09PSh0PWQuY3NzKGEsImRpc3BsYXkiKSkmJihsP3Q9bDooJGEoW2FdLCEwKSxsPWEuc3R5bGUuZGlzcGxheXx8bCx0PWQuY3NzKGEsImRpc3BsYXkiKSwkYShbYV0pKSksKCJpbmxpbmUiPT09dHx8ImlubGluZS1ibG9jayI9PT10JiZudWxsIT1sKSYmIm5vbmUiPT09ZC5jc3MoYSwiZmxvYXQiKSYmKGJ8fChyLmRvbmUoZnVuY3Rpb24oKXtELmRpc3BsYXk9bH0pLG51bGw9PWwmJih0PUQuZGlzcGxheSxsPSJub25lIj09PXQ\/IiI6dCkpLEQuZGlzcGxheT0iaW5saW5lLWJsb2NrIikpLGMub3ZlcmZsb3cmJihELm92ZXJmbG93PSJoaWRkZW4iLHIuYWx3YXlzKGZ1bmN0aW9uKCl7RC5vdmVyZmxvdz1jLm92ZXJmbG93WzBdOwpELm92ZXJmbG93WD1jLm92ZXJmbG93WzFdO0Qub3ZlcmZsb3dZPWMub3ZlcmZsb3dbMl19KSksYj0hMSx6KWJ8fChPPyJoaWRkZW4iaW4gTyYmKEY9Ty5oaWRkZW4pOk89Ry5hY2Nlc3MoYSwiZnhzaG93Iix7ZGlzcGxheTpsfSksZyYmKE8uaGlkZGVuPSFGKSxGJiYkYShbYV0sITApLHIuZG9uZShmdW5jdGlvbigpe2ZvcihlIGluIEZ8fCRhKFthXSksRy5yZW1vdmUoYSwiZnhzaG93IikseilkLnN0eWxlKGEsZSx6W2VdKX0pKSxiPXUoRj9PW2VdOjAsZSxyKSxlIGluIE98fChPW2VdPWIuc3RhcnQsRiYmKGIuZW5kPWIuc3RhcnQsYi5zdGFydD0wKSl9XSxwcmVmaWx0ZXI6ZnVuY3Rpb24oYSxiKXtiP3gucHJlZmlsdGVycy51bnNoaWZ0KGEpOngucHJlZmlsdGVycy5wdXNoKGEpfX0pO2Quc3BlZWQ9ZnVuY3Rpb24oYSxiLGMpe3ZhciBlPWEmJiJvYmplY3QiPT10eXBlb2YgYT9kLmV4dGVuZCh7fSxhKTp7Y29tcGxldGU6Y3x8IWMmJmJ8fE0oYSkmJmEsZHVyYXRpb246YSxlYXNpbmc6YyYmCmJ8fGImJiFNKGIpJiZifTtyZXR1cm4gZC5meC5vZmY\/ZS5kdXJhdGlvbj0wOiJudW1iZXIiIT10eXBlb2YgZS5kdXJhdGlvbiYmKGUuZHVyYXRpb24gaW4gZC5meC5zcGVlZHM\/ZS5kdXJhdGlvbj1kLmZ4LnNwZWVkc1tlLmR1cmF0aW9uXTplLmR1cmF0aW9uPWQuZnguc3BlZWRzLl9kZWZhdWx0KSxudWxsIT1lLnF1ZXVlJiYhMCE9PWUucXVldWV8fChlLnF1ZXVlPSJmeCIpLGUub2xkPWUuY29tcGxldGUsZS5jb21wbGV0ZT1mdW5jdGlvbigpe00oZS5vbGQpJiZlLm9sZC5jYWxsKHRoaXMpO2UucXVldWUmJmQuZGVxdWV1ZSh0aGlzLGUucXVldWUpfSxlfTtkLmZuLmV4dGVuZCh7ZmFkZVRvOmZ1bmN0aW9uKGEsYixjLGUpe3JldHVybiB0aGlzLmZpbHRlcihRYikuY3NzKCJvcGFjaXR5IiwwKS5zaG93KCkuZW5kKCkuYW5pbWF0ZSh7b3BhY2l0eTpifSxhLGMsZSl9LGFuaW1hdGU6ZnVuY3Rpb24oYSxiLGMsZSl7dmFyIGY9ZC5pc0VtcHR5T2JqZWN0KGEpLGc9ZC5zcGVlZChiLGMsZSk7CmI9ZnVuY3Rpb24oKXt2YXIgaD14KHRoaXMsZC5leHRlbmQoe30sYSksZyk7KGZ8fEcuZ2V0KHRoaXMsImZpbmlzaCIpKSYmaC5zdG9wKCEwKX07cmV0dXJuIGIuZmluaXNoPWIsZnx8ITE9PT1nLnF1ZXVlP3RoaXMuZWFjaChiKTp0aGlzLnF1ZXVlKGcucXVldWUsYil9LHN0b3A6ZnVuY3Rpb24oYSxiLGMpe3ZhciBlPWZ1bmN0aW9uKGYpe3ZhciBnPWYuc3RvcDtkZWxldGUgZi5zdG9wO2coYyl9O3JldHVybiJzdHJpbmciIT10eXBlb2YgYSYmKGM9YixiPWEsYT12b2lkIDApLGImJnRoaXMucXVldWUoYXx8ImZ4IixbXSksdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGY9ITAsZz1udWxsIT1hJiZhKyJxdWV1ZUhvb2tzIixoPWQudGltZXJzLG09Ry5nZXQodGhpcyk7aWYoZyltW2ddJiZtW2ddLnN0b3AmJmUobVtnXSk7ZWxzZSBmb3IoZyBpbiBtKW1bZ10mJm1bZ10uc3RvcCYmcmQudGVzdChnKSYmZShtW2ddKTtmb3IoZz1oLmxlbmd0aDtnLS07KWhbZ10uZWxlbSE9PXRoaXN8fG51bGwhPQphJiZoW2ddLnF1ZXVlIT09YXx8KGhbZ10uYW5pbS5zdG9wKGMpLGY9ITEsaC5zcGxpY2UoZywxKSk7IWYmJmN8fGQuZGVxdWV1ZSh0aGlzLGEpfSl9LGZpbmlzaDpmdW5jdGlvbihhKXtyZXR1cm4hMSE9PWEmJihhPWF8fCJmeCIpLHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBiPUcuZ2V0KHRoaXMpLGM9YlthKyJxdWV1ZSJdLGU9YlthKyJxdWV1ZUhvb2tzIl0sZj1kLnRpbWVycyxnPWM\/Yy5sZW5ndGg6MDtiLmZpbmlzaD0hMDtkLnF1ZXVlKHRoaXMsYSxbXSk7ZSYmZS5zdG9wJiZlLnN0b3AuY2FsbCh0aGlzLCEwKTtmb3IoZT1mLmxlbmd0aDtlLS07KWZbZV0uZWxlbT09PXRoaXMmJmZbZV0ucXVldWU9PT1hJiYoZltlXS5hbmltLnN0b3AoITApLGYuc3BsaWNlKGUsMSkpO2ZvcihlPTA7ZTxnO2UrKyljW2VdJiZjW2VdLmZpbmlzaCYmY1tlXS5maW5pc2guY2FsbCh0aGlzKTtkZWxldGUgYi5maW5pc2h9KX19KTtkLmVhY2goWyJ0b2dnbGUiLCJzaG93IiwiaGlkZSJdLGZ1bmN0aW9uKGEsCmIpe3ZhciBjPWQuZm5bYl07ZC5mbltiXT1mdW5jdGlvbihlLGYsZyl7cmV0dXJuIG51bGw9PWV8fCJib29sZWFuIj09dHlwZW9mIGU\/Yy5hcHBseSh0aGlzLGFyZ3VtZW50cyk6dGhpcy5hbmltYXRlKHRiKGIsITApLGUsZixnKX19KTtkLmVhY2goe3NsaWRlRG93bjp0Yigic2hvdyIpLHNsaWRlVXA6dGIoImhpZGUiKSxzbGlkZVRvZ2dsZTp0YigidG9nZ2xlIiksZmFkZUluOntvcGFjaXR5OiJzaG93In0sZmFkZU91dDp7b3BhY2l0eToiaGlkZSJ9LGZhZGVUb2dnbGU6e29wYWNpdHk6InRvZ2dsZSJ9fSxmdW5jdGlvbihhLGIpe2QuZm5bYV09ZnVuY3Rpb24oYyxlLGYpe3JldHVybiB0aGlzLmFuaW1hdGUoYixjLGUsZil9fSk7ZC50aW1lcnM9W107ZC5meC50aWNrPWZ1bmN0aW9uKCl7dmFyIGEsYj0wLGM9ZC50aW1lcnM7Zm9yKHNiPURhdGUubm93KCk7YjxjLmxlbmd0aDtiKyspKGE9Y1tiXSkoKXx8Y1tiXSE9PWF8fGMuc3BsaWNlKGItLSwxKTtjLmxlbmd0aHx8ZC5meC5zdG9wKCk7CnNiPXZvaWQgMH07ZC5meC50aW1lcj1mdW5jdGlvbihhKXtkLnRpbWVycy5wdXNoKGEpO2QuZnguc3RhcnQoKX07ZC5meC5pbnRlcnZhbD0xMztkLmZ4LnN0YXJ0PWZ1bmN0aW9uKCl7WGJ8fChYYj0hMCxDYigpKX07ZC5meC5zdG9wPWZ1bmN0aW9uKCl7WGI9bnVsbH07ZC5meC5zcGVlZHM9e3Nsb3c6NjAwLGZhc3Q6MjAwLF9kZWZhdWx0OjQwMH07ZC5mbi5kZWxheT1mdW5jdGlvbihhLGIpe3JldHVybiBhPWQuZngmJmQuZnguc3BlZWRzW2FdfHxhLGI9Ynx8ImZ4Iix0aGlzLnF1ZXVlKGIsZnVuY3Rpb24oYyxlKXt2YXIgZj1uLnNldFRpbWVvdXQoYyxhKTtlLnN0b3A9ZnVuY3Rpb24oKXtuLmNsZWFyVGltZW91dChmKX19KX07dmFyIEliPUwuY3JlYXRlRWxlbWVudCgiaW5wdXQiKSxzZD1MLmNyZWF0ZUVsZW1lbnQoInNlbGVjdCIpLmFwcGVuZENoaWxkKEwuY3JlYXRlRWxlbWVudCgib3B0aW9uIikpO0liLnR5cGU9ImNoZWNrYm94IjtOLmNoZWNrT249IiIhPT1JYi52YWx1ZTtOLm9wdFNlbGVjdGVkPQpzZC5zZWxlY3RlZDsoSWI9TC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpKS52YWx1ZT0idCI7SWIudHlwZT0icmFkaW8iO04ucmFkaW9WYWx1ZT0idCI9PT1JYi52YWx1ZTt2YXIgSmI9ZC5leHByLmF0dHJIYW5kbGU7ZC5mbi5leHRlbmQoe2F0dHI6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gWGEodGhpcyxkLmF0dHIsYSxiLDE8YXJndW1lbnRzLmxlbmd0aCl9LHJlbW92ZUF0dHI6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2QucmVtb3ZlQXR0cih0aGlzLGEpfSl9fSk7ZC5leHRlbmQoe2F0dHI6ZnVuY3Rpb24oYSxiLGMpe3ZhciBlLGYsZz1hLm5vZGVUeXBlO2lmKDMhPT1nJiY4IT09ZyYmMiE9PWcpcmV0dXJuInVuZGVmaW5lZCI9PXR5cGVvZiBhLmdldEF0dHJpYnV0ZT9kLnByb3AoYSxiLGMpOigxPT09ZyYmZC5pc1hNTERvYyhhKXx8KGY9ZC5hdHRySG9va3NbYi50b0xvd2VyQ2FzZSgpXXx8KGQuZXhwci5tYXRjaC5ib29sLnRlc3QoYik\/dGQ6dm9pZCAwKSksCnZvaWQgMCE9PWM\/bnVsbD09PWM\/dm9pZCBkLnJlbW92ZUF0dHIoYSxiKTpmJiYic2V0ImluIGYmJnZvaWQgMCE9PShlPWYuc2V0KGEsYyxiKSk\/ZTooYS5zZXRBdHRyaWJ1dGUoYixjKyIiKSxjKTpmJiYiZ2V0ImluIGYmJm51bGwhPT0oZT1mLmdldChhLGIpKT9lOm51bGw9PShlPWQuZmluZC5hdHRyKGEsYikpP3ZvaWQgMDplKX0sYXR0ckhvb2tzOnt0eXBlOntzZXQ6ZnVuY3Rpb24oYSxiKXtpZighTi5yYWRpb1ZhbHVlJiYicmFkaW8iPT09YiYmWChhLCJpbnB1dCIpKXt2YXIgYz1hLnZhbHVlO3JldHVybiBhLnNldEF0dHJpYnV0ZSgidHlwZSIsYiksYyYmKGEudmFsdWU9YyksYn19fX0scmVtb3ZlQXR0cjpmdW5jdGlvbihhLGIpe3ZhciBjPTAsZT1iJiZiLm1hdGNoKExhKTtpZihlJiYxPT09YS5ub2RlVHlwZSlmb3IoO2I9ZVtjKytdOylhLnJlbW92ZUF0dHJpYnV0ZShiKX19KTt2YXIgdGQ9e3NldDpmdW5jdGlvbihhLGIsYyl7cmV0dXJuITE9PT1iP2QucmVtb3ZlQXR0cihhLApjKTphLnNldEF0dHJpYnV0ZShjLGMpLGN9fTtkLmVhY2goZC5leHByLm1hdGNoLmJvb2wuc291cmNlLm1hdGNoKC9cdysvZyksZnVuY3Rpb24oYSxiKXt2YXIgYz1KYltiXXx8ZC5maW5kLmF0dHI7SmJbYl09ZnVuY3Rpb24oZSxmLGcpe3ZhciBoLG0sbD1mLnRvTG93ZXJDYXNlKCk7cmV0dXJuIGd8fChtPUpiW2xdLEpiW2xdPWgsaD1udWxsIT1jKGUsZixnKT9sOm51bGwsSmJbbF09bSksaH19KTt2YXIgdWQ9L14oPzppbnB1dHxzZWxlY3R8dGV4dGFyZWF8YnV0dG9uKSQvaSx2ZD0vXig\/OmF8YXJlYSkkL2k7ZC5mbi5leHRlbmQoe3Byb3A6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gWGEodGhpcyxkLnByb3AsYSxiLDE8YXJndW1lbnRzLmxlbmd0aCl9LHJlbW92ZVByb3A6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2RlbGV0ZSB0aGlzW2QucHJvcEZpeFthXXx8YV19KX19KTtkLmV4dGVuZCh7cHJvcDpmdW5jdGlvbihhLGIsYyl7dmFyIGUsZixnPWEubm9kZVR5cGU7CmlmKDMhPT1nJiY4IT09ZyYmMiE9PWcpcmV0dXJuIDE9PT1nJiZkLmlzWE1MRG9jKGEpfHwoYj1kLnByb3BGaXhbYl18fGIsZj1kLnByb3BIb29rc1tiXSksdm9pZCAwIT09Yz9mJiYic2V0ImluIGYmJnZvaWQgMCE9PShlPWYuc2V0KGEsYyxiKSk\/ZTphW2JdPWM6ZiYmImdldCJpbiBmJiZudWxsIT09KGU9Zi5nZXQoYSxiKSk\/ZTphW2JdfSxwcm9wSG9va3M6e3RhYkluZGV4OntnZXQ6ZnVuY3Rpb24oYSl7dmFyIGI9ZC5maW5kLmF0dHIoYSwidGFiaW5kZXgiKTtyZXR1cm4gYj9wYXJzZUludChiLDEwKTp1ZC50ZXN0KGEubm9kZU5hbWUpfHx2ZC50ZXN0KGEubm9kZU5hbWUpJiZhLmhyZWY\/MDotMX19fSxwcm9wRml4OnsiZm9yIjoiaHRtbEZvciIsImNsYXNzIjoiY2xhc3NOYW1lIn19KTtOLm9wdFNlbGVjdGVkfHwoZC5wcm9wSG9va3Muc2VsZWN0ZWQ9e2dldDpmdW5jdGlvbihhKXthPWEucGFyZW50Tm9kZTtyZXR1cm4gYSYmYS5wYXJlbnROb2RlJiZhLnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleCwKbnVsbH0sc2V0OmZ1bmN0aW9uKGEpe2E9YS5wYXJlbnROb2RlO2EmJihhLnNlbGVjdGVkSW5kZXgsYS5wYXJlbnROb2RlJiZhLnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleCl9fSk7ZC5lYWNoKCJ0YWJJbmRleCByZWFkT25seSBtYXhMZW5ndGggY2VsbFNwYWNpbmcgY2VsbFBhZGRpbmcgcm93U3BhbiBjb2xTcGFuIHVzZU1hcCBmcmFtZUJvcmRlciBjb250ZW50RWRpdGFibGUiLnNwbGl0KCIgIiksZnVuY3Rpb24oKXtkLnByb3BGaXhbdGhpcy50b0xvd2VyQ2FzZSgpXT10aGlzfSk7ZC5mbi5leHRlbmQoe2FkZENsYXNzOmZ1bmN0aW9uKGEpe3ZhciBiLGMsZSxmLGcsaDtyZXR1cm4gTShhKT90aGlzLmVhY2goZnVuY3Rpb24obSl7ZCh0aGlzKS5hZGRDbGFzcyhhLmNhbGwodGhpcyxtLEgodGhpcykpKX0pOihiPVAoYSkpLmxlbmd0aD90aGlzLmVhY2goZnVuY3Rpb24oKXtpZihlPUgodGhpcyksYz0xPT09dGhpcy5ub2RlVHlwZSYmIiAiK0MoZSkrIiAiKXtmb3IoZz0wO2c8Yi5sZW5ndGg7ZysrKWY9CmJbZ10sMD5jLmluZGV4T2YoIiAiK2YrIiAiKSYmKGMrPWYrIiAiKTtoPUMoYyk7ZSE9PWgmJnRoaXMuc2V0QXR0cmlidXRlKCJjbGFzcyIsaCl9fSk6dGhpc30scmVtb3ZlQ2xhc3M6ZnVuY3Rpb24oYSl7dmFyIGIsYyxlLGYsZyxoO3JldHVybiBNKGEpP3RoaXMuZWFjaChmdW5jdGlvbihtKXtkKHRoaXMpLnJlbW92ZUNsYXNzKGEuY2FsbCh0aGlzLG0sSCh0aGlzKSkpfSk6YXJndW1lbnRzLmxlbmd0aD8oYj1QKGEpKS5sZW5ndGg\/dGhpcy5lYWNoKGZ1bmN0aW9uKCl7aWYoZT1IKHRoaXMpLGM9MT09PXRoaXMubm9kZVR5cGUmJiIgIitDKGUpKyIgIil7Zm9yKGc9MDtnPGIubGVuZ3RoO2crKylmb3IoZj1iW2ddOy0xPGMuaW5kZXhPZigiICIrZisiICIpOyljPWMucmVwbGFjZSgiICIrZisiICIsIiAiKTtoPUMoYyk7ZSE9PWgmJnRoaXMuc2V0QXR0cmlidXRlKCJjbGFzcyIsaCl9fSk6dGhpczp0aGlzLmF0dHIoImNsYXNzIiwiIil9LHRvZ2dsZUNsYXNzOmZ1bmN0aW9uKGEsYil7dmFyIGMsCmUsZixnLGg9dHlwZW9mIGEsbT0ic3RyaW5nIj09PWh8fEFycmF5LmlzQXJyYXkoYSk7cmV0dXJuIE0oYSk\/dGhpcy5lYWNoKGZ1bmN0aW9uKGwpe2QodGhpcykudG9nZ2xlQ2xhc3MoYS5jYWxsKHRoaXMsbCxIKHRoaXMpLGIpLGIpfSk6ImJvb2xlYW4iPT10eXBlb2YgYiYmbT9iP3RoaXMuYWRkQ2xhc3MoYSk6dGhpcy5yZW1vdmVDbGFzcyhhKTooYz1QKGEpLHRoaXMuZWFjaChmdW5jdGlvbigpe2lmKG0pZm9yKGc9ZCh0aGlzKSxmPTA7ZjxjLmxlbmd0aDtmKyspZT1jW2ZdLGcuaGFzQ2xhc3MoZSk\/Zy5yZW1vdmVDbGFzcyhlKTpnLmFkZENsYXNzKGUpO2Vsc2Ugdm9pZCAwIT09YSYmImJvb2xlYW4iIT09aHx8KChlPUgodGhpcykpJiZHLnNldCh0aGlzLCJfX2NsYXNzTmFtZV9fIixlKSx0aGlzLnNldEF0dHJpYnV0ZSYmdGhpcy5zZXRBdHRyaWJ1dGUoImNsYXNzIixlfHwhMT09PWE\/IiI6Ry5nZXQodGhpcywiX19jbGFzc05hbWVfXyIpfHwiIikpfSkpfSxoYXNDbGFzczpmdW5jdGlvbihhKXt2YXIgYiwKYz0wO2ZvcihhPSIgIithKyIgIjtiPXRoaXNbYysrXTspaWYoMT09PWIubm9kZVR5cGUmJi0xPCgiICIrQyhIKGIpKSsiICIpLmluZGV4T2YoYSkpcmV0dXJuITA7cmV0dXJuITF9fSk7dmFyIHdkPS9cci9nO2QuZm4uZXh0ZW5kKHt2YWw6ZnVuY3Rpb24oYSl7dmFyIGIsYyxlLGY9dGhpc1swXTtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT1NKGEpLHRoaXMuZWFjaChmdW5jdGlvbihnKXt2YXIgaDsxPT09dGhpcy5ub2RlVHlwZSYmKG51bGw9PShoPWU\/YS5jYWxsKHRoaXMsZyxkKHRoaXMpLnZhbCgpKTphKT9oPSIiOiJudW1iZXIiPT10eXBlb2YgaD9oKz0iIjpBcnJheS5pc0FycmF5KGgpJiYoaD1kLm1hcChoLGZ1bmN0aW9uKG0pe3JldHVybiBudWxsPT1tPyIiOm0rIiJ9KSksKGI9ZC52YWxIb29rc1t0aGlzLnR5cGVdfHxkLnZhbEhvb2tzW3RoaXMubm9kZU5hbWUudG9Mb3dlckNhc2UoKV0pJiYic2V0ImluIGImJnZvaWQgMCE9PWIuc2V0KHRoaXMsaCwidmFsdWUiKXx8KHRoaXMudmFsdWU9CmgpKX0pKTpmPyhiPWQudmFsSG9va3NbZi50eXBlXXx8ZC52YWxIb29rc1tmLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCldKSYmImdldCJpbiBiJiZ2b2lkIDAhPT0oYz1iLmdldChmLCJ2YWx1ZSIpKT9jOiJzdHJpbmciPT10eXBlb2YoYz1mLnZhbHVlKT9jLnJlcGxhY2Uod2QsIiIpOm51bGw9PWM\/IiI6Yzp2b2lkIDB9fSk7ZC5leHRlbmQoe3ZhbEhvb2tzOntvcHRpb246e2dldDpmdW5jdGlvbihhKXt2YXIgYj1kLmZpbmQuYXR0cihhLCJ2YWx1ZSIpO3JldHVybiBudWxsIT1iP2I6QyhkLnRleHQoYSkpfX0sc2VsZWN0OntnZXQ6ZnVuY3Rpb24oYSl7dmFyIGIsYyxlPWEub3B0aW9ucyxmPWEuc2VsZWN0ZWRJbmRleCxnPSJzZWxlY3Qtb25lIj09PWEudHlwZSxoPWc\/bnVsbDpbXSxtPWc\/ZisxOmUubGVuZ3RoO2ZvcihjPTA+Zj9tOmc\/ZjowO2M8bTtjKyspaWYoISghKGI9ZVtjXSkuc2VsZWN0ZWQmJmMhPT1mfHxiLmRpc2FibGVkfHxiLnBhcmVudE5vZGUuZGlzYWJsZWQmJlgoYi5wYXJlbnROb2RlLAoib3B0Z3JvdXAiKSkpe2lmKGE9ZChiKS52YWwoKSxnKXJldHVybiBhO2gucHVzaChhKX1yZXR1cm4gaH0sc2V0OmZ1bmN0aW9uKGEsYil7dmFyIGMsZSxmPWEub3B0aW9ucztiPWQubWFrZUFycmF5KGIpO2Zvcih2YXIgZz1mLmxlbmd0aDtnLS07KSgoZT1mW2ddKS5zZWxlY3RlZD0tMTxkLmluQXJyYXkoZC52YWxIb29rcy5vcHRpb24uZ2V0KGUpLGIpKSYmKGM9ITApO3JldHVybiBjfHwoYS5zZWxlY3RlZEluZGV4PS0xKSxifX19fSk7ZC5lYWNoKFsicmFkaW8iLCJjaGVja2JveCJdLGZ1bmN0aW9uKCl7ZC52YWxIb29rc1t0aGlzXT17c2V0OmZ1bmN0aW9uKGEsYil7aWYoQXJyYXkuaXNBcnJheShiKSlyZXR1cm4gYS5jaGVja2VkPS0xPGQuaW5BcnJheShkKGEpLnZhbCgpLGIpfX07Ti5jaGVja09ufHwoZC52YWxIb29rc1t0aGlzXS5nZXQ9ZnVuY3Rpb24oYSl7cmV0dXJuIG51bGw9PT1hLmdldEF0dHJpYnV0ZSgidmFsdWUiKT8ib24iOmEudmFsdWV9KX0pO3ZhciBLYj1uLmxvY2F0aW9uLApEYz1EYXRlLm5vdygpLGhjPS9cPy87ZC5wYXJzZVhNTD1mdW5jdGlvbihhKXt2YXIgYjtpZighYXx8InN0cmluZyIhPXR5cGVvZiBhKXJldHVybiBudWxsO3RyeXt2YXIgYz0obmV3IG4uRE9NUGFyc2VyKS5wYXJzZUZyb21TdHJpbmcoYSwidGV4dC94bWwiKX1jYXRjaChlKXt9cmV0dXJuIGI9YyYmYy5nZXRFbGVtZW50c0J5VGFnTmFtZSgicGFyc2VyZXJyb3IiKVswXSxjJiYhYnx8ZC5lcnJvcigiSW52YWxpZCBYTUw6ICIrKGI\/ZC5tYXAoYi5jaGlsZE5vZGVzLGZ1bmN0aW9uKGUpe3JldHVybiBlLnRleHRDb250ZW50fSkuam9pbigiXG4iKTphKSksY307dmFyIEVjPS9eKD86Zm9jdXNpbmZvY3VzfGZvY3Vzb3V0Ymx1cikkLyxGYz1mdW5jdGlvbihhKXthLnN0b3BQcm9wYWdhdGlvbigpfTtkLmV4dGVuZChkLmV2ZW50LHt0cmlnZ2VyOmZ1bmN0aW9uKGEsYixjLGUpe3ZhciBmLGcsaCxtLGwsdCx3PVtjfHxMXSxyPUZiLmNhbGwoYSwidHlwZSIpP2EudHlwZTphLHo9RmIuY2FsbChhLAoibmFtZXNwYWNlIik\/YS5uYW1lc3BhY2Uuc3BsaXQoIi4iKTpbXTtpZihmPXQ9Zz1jPWN8fEwsMyE9PWMubm9kZVR5cGUmJjghPT1jLm5vZGVUeXBlJiYhRWMudGVzdChyK2QuZXZlbnQudHJpZ2dlcmVkKSYmKC0xPHIuaW5kZXhPZigiLiIpJiYocj0oej1yLnNwbGl0KCIuIikpLnNoaWZ0KCksei5zb3J0KCkpLGg9MD5yLmluZGV4T2YoIjoiKSYmIm9uIityLChhPWFbZC5leHBhbmRvXT9hOm5ldyBkLkV2ZW50KHIsIm9iamVjdCI9PXR5cGVvZiBhJiZhKSkuaXNUcmlnZ2VyPWU\/MjozLGEubmFtZXNwYWNlPXouam9pbigiLiIpLGEucm5hbWVzcGFjZT1hLm5hbWVzcGFjZT9uZXcgUmVnRXhwKCIoXnxcXC4pIit6LmpvaW4oIlxcLig\/Oi4qXFwufCkiKSsiKFxcLnwkKSIpOm51bGwsYS5yZXN1bHQ9dm9pZCAwLGEudGFyZ2V0fHwoYS50YXJnZXQ9YyksYj1udWxsPT1iP1thXTpkLm1ha2VBcnJheShiLFthXSksbD1kLmV2ZW50LnNwZWNpYWxbcl18fHt9LGV8fCFsLnRyaWdnZXJ8fCExIT09CmwudHJpZ2dlci5hcHBseShjLGIpKSl7aWYoIWUmJiFsLm5vQnViYmxlJiYha2IoYykpe3ZhciBEPWwuZGVsZWdhdGVUeXBlfHxyO2ZvcihFYy50ZXN0KEQrcil8fChmPWYucGFyZW50Tm9kZSk7ZjtmPWYucGFyZW50Tm9kZSl3LnB1c2goZiksZz1mO2c9PT0oYy5vd25lckRvY3VtZW50fHxMKSYmdy5wdXNoKGcuZGVmYXVsdFZpZXd8fGcucGFyZW50V2luZG93fHxuKX1mb3Ioej0wOyhmPXdbeisrXSkmJiFhLmlzUHJvcGFnYXRpb25TdG9wcGVkKCk7KXQ9ZixhLnR5cGU9MTx6P0Q6bC5iaW5kVHlwZXx8ciwobT0oRy5nZXQoZiwiZXZlbnRzIil8fE9iamVjdC5jcmVhdGUobnVsbCkpW2EudHlwZV0mJkcuZ2V0KGYsImhhbmRsZSIpKSYmbS5hcHBseShmLGIpLChtPWgmJmZbaF0pJiZtLmFwcGx5JiZHYihmKSYmKGEucmVzdWx0PW0uYXBwbHkoZixiKSwhMT09PWEucmVzdWx0JiZhLnByZXZlbnREZWZhdWx0KCkpO3JldHVybiBhLnR5cGU9cixlfHxhLmlzRGVmYXVsdFByZXZlbnRlZCgpfHwKbC5fZGVmYXVsdCYmITEhPT1sLl9kZWZhdWx0LmFwcGx5KHcucG9wKCksYil8fCFHYihjKXx8aCYmTShjW3JdKSYmIWtiKGMpJiYoKGc9Y1toXSkmJihjW2hdPW51bGwpLGQuZXZlbnQudHJpZ2dlcmVkPXIsYS5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpJiZ0LmFkZEV2ZW50TGlzdGVuZXIocixGYyksY1tyXSgpLGEuaXNQcm9wYWdhdGlvblN0b3BwZWQoKSYmdC5yZW1vdmVFdmVudExpc3RlbmVyKHIsRmMpLGQuZXZlbnQudHJpZ2dlcmVkPXZvaWQgMCxnJiYoY1toXT1nKSksYS5yZXN1bHR9fSxzaW11bGF0ZTpmdW5jdGlvbihhLGIsYyl7YT1kLmV4dGVuZChuZXcgZC5FdmVudCxjLHt0eXBlOmEsaXNTaW11bGF0ZWQ6ITB9KTtkLmV2ZW50LnRyaWdnZXIoYSxudWxsLGIpfX0pO2QuZm4uZXh0ZW5kKHt0cmlnZ2VyOmZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2QuZXZlbnQudHJpZ2dlcihhLGIsdGhpcyl9KX0sdHJpZ2dlckhhbmRsZXI6ZnVuY3Rpb24oYSxiKXt2YXIgYz0KdGhpc1swXTtpZihjKXJldHVybiBkLmV2ZW50LnRyaWdnZXIoYSxiLGMsITApfX0pO3ZhciBVYz0vXFtcXSQvLEdjPS9ccj9cbi9nLHhkPS9eKD86c3VibWl0fGJ1dHRvbnxpbWFnZXxyZXNldHxmaWxlKSQvaSx5ZD0vXig\/OmlucHV0fHNlbGVjdHx0ZXh0YXJlYXxrZXlnZW4pL2k7ZC5wYXJhbT1mdW5jdGlvbihhLGIpe3ZhciBjLGU9W10sZj1mdW5jdGlvbihnLGgpe2g9TShoKT9oKCk6aDtlW2UubGVuZ3RoXT1lbmNvZGVVUklDb21wb25lbnQoZykrIj0iK2VuY29kZVVSSUNvbXBvbmVudChudWxsPT1oPyIiOmgpfTtpZihudWxsPT1hKXJldHVybiIiO2lmKEFycmF5LmlzQXJyYXkoYSl8fGEuanF1ZXJ5JiYhZC5pc1BsYWluT2JqZWN0KGEpKWQuZWFjaChhLGZ1bmN0aW9uKCl7Zih0aGlzLm5hbWUsdGhpcy52YWx1ZSl9KTtlbHNlIGZvcihjIGluIGEpZWEoYyxhW2NdLGIsZik7cmV0dXJuIGUuam9pbigiJiIpfTtkLmZuLmV4dGVuZCh7c2VyaWFsaXplOmZ1bmN0aW9uKCl7cmV0dXJuIGQucGFyYW0odGhpcy5zZXJpYWxpemVBcnJheSgpKX0sCnNlcmlhbGl6ZUFycmF5OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWFwKGZ1bmN0aW9uKCl7dmFyIGE9ZC5wcm9wKHRoaXMsImVsZW1lbnRzIik7cmV0dXJuIGE\/ZC5tYWtlQXJyYXkoYSk6dGhpc30pLmZpbHRlcihmdW5jdGlvbigpe3ZhciBhPXRoaXMudHlwZTtyZXR1cm4gdGhpcy5uYW1lJiYhZCh0aGlzKS5pcygiOmRpc2FibGVkIikmJnlkLnRlc3QodGhpcy5ub2RlTmFtZSkmJiF4ZC50ZXN0KGEpJiYodGhpcy5jaGVja2VkfHwhSGIudGVzdChhKSl9KS5tYXAoZnVuY3Rpb24oYSxiKXthPWQodGhpcykudmFsKCk7cmV0dXJuIG51bGw9PWE\/bnVsbDpBcnJheS5pc0FycmF5KGEpP2QubWFwKGEsZnVuY3Rpb24oYyl7cmV0dXJue25hbWU6Yi5uYW1lLHZhbHVlOmMucmVwbGFjZShHYywiXHJcbiIpfX0pOntuYW1lOmIubmFtZSx2YWx1ZTphLnJlcGxhY2UoR2MsIlxyXG4iKX19KS5nZXQoKX19KTt2YXIgemQ9LyUyMC9nLEFkPS8jLiokLyxCZD0vKFs\/Jl0pXz1bXiZdKi8sQ2Q9L14oLio\/KTpbIFx0XSooW15cclxuXSopJC9nbSwKRGQ9L14oPzpHRVR8SEVBRCkkLyxFZD0vXlwvXC8vLEhjPXt9LGNjPXt9LEljPSIqLyIuY29uY2F0KCIqIiksaWM9TC5jcmVhdGVFbGVtZW50KCJhIik7aWMuaHJlZj1LYi5ocmVmO2QuZXh0ZW5kKHthY3RpdmU6MCxsYXN0TW9kaWZpZWQ6e30sZXRhZzp7fSxhamF4U2V0dGluZ3M6e3VybDpLYi5ocmVmLHR5cGU6IkdFVCIsaXNMb2NhbDovXig\/OmFib3V0fGFwcHxhcHAtc3RvcmFnZXwuKy1leHRlbnNpb258ZmlsZXxyZXN8d2lkZ2V0KTokLy50ZXN0KEtiLnByb3RvY29sKSxnbG9iYWw6ITAscHJvY2Vzc0RhdGE6ITAsYXN5bmM6ITAsY29udGVudFR5cGU6ImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDsgY2hhcnNldD1VVEYtOCIsYWNjZXB0czp7IioiOkljLHRleHQ6InRleHQvcGxhaW4iLGh0bWw6InRleHQvaHRtbCIseG1sOiJhcHBsaWNhdGlvbi94bWwsIHRleHQveG1sIixqc29uOiJhcHBsaWNhdGlvbi9qc29uLCB0ZXh0L2phdmFzY3JpcHQifSxjb250ZW50czp7eG1sOi9cYnhtbFxiLywKaHRtbDovXGJodG1sLyxqc29uOi9cYmpzb25cYi99LHJlc3BvbnNlRmllbGRzOnt4bWw6InJlc3BvbnNlWE1MIix0ZXh0OiJyZXNwb25zZVRleHQiLGpzb246InJlc3BvbnNlSlNPTiJ9LGNvbnZlcnRlcnM6eyIqIHRleHQiOlN0cmluZywidGV4dCBodG1sIjohMCwidGV4dCBqc29uIjpKU09OLnBhcnNlLCJ0ZXh0IHhtbCI6ZC5wYXJzZVhNTH0sZmxhdE9wdGlvbnM6e3VybDohMCxjb250ZXh0OiEwfX0sYWpheFNldHVwOmZ1bmN0aW9uKGEsYil7cmV0dXJuIGI\/aGIoaGIoYSxkLmFqYXhTZXR0aW5ncyksYik6aGIoZC5hamF4U2V0dGluZ3MsYSl9LGFqYXhQcmVmaWx0ZXI6UWEoSGMpLGFqYXhUcmFuc3BvcnQ6UWEoY2MpLGFqYXg6ZnVuY3Rpb24oYSxiKXtmdW5jdGlvbiBjKFMsaGEsaWIsWil7dmFyIHJhLHZhLGthLE1hLHRhLFc9aGE7S3x8KEs9ITAsbSYmbi5jbGVhclRpbWVvdXQobSksZT12b2lkIDAsZz1afHwiIixRLnJlYWR5U3RhdGU9MDxTPzQ6MCxyYT0yMDA8PVMmJjMwMD5TfHwKMzA0PT09UyxpYiYmKE1hPWZ1bmN0aW9uKGZhLERhLGRiKXtmb3IodmFyIFZhLHVhLFksbGEsSWE9ZmEuY29udGVudHMsbWE9ZmEuZGF0YVR5cGVzOyIqIj09PW1hWzBdOyltYS5zaGlmdCgpLHZvaWQgMD09PVZhJiYoVmE9ZmEubWltZVR5cGV8fERhLmdldFJlc3BvbnNlSGVhZGVyKCJDb250ZW50LVR5cGUiKSk7aWYoVmEpZm9yKHVhIGluIElhKWlmKElhW3VhXSYmSWFbdWFdLnRlc3QoVmEpKXttYS51bnNoaWZ0KHVhKTticmVha31pZihtYVswXWluIGRiKVk9bWFbMF07ZWxzZXtmb3IodWEgaW4gZGIpe2lmKCFtYVswXXx8ZmEuY29udmVydGVyc1t1YSsiICIrbWFbMF1dKXtZPXVhO2JyZWFrfWxhfHwobGE9dWEpfVk9WXx8bGF9aWYoWSlyZXR1cm4gWSE9PW1hWzBdJiZtYS51bnNoaWZ0KFkpLGRiW1ldfShyLFEsaWIpKSwhcmEmJi0xPGQuaW5BcnJheSgic2NyaXB0IixyLmRhdGFUeXBlcykmJjA+ZC5pbkFycmF5KCJqc29uIixyLmRhdGFUeXBlcykmJihyLmNvbnZlcnRlcnNbInRleHQgc2NyaXB0Il09CmZ1bmN0aW9uKCl7fSksTWE9ZnVuY3Rpb24oZmEsRGEsZGIsVmEpe3ZhciB1YSxZLGxhLElhLG1hLEhhPXt9LHZiPWZhLmRhdGFUeXBlcy5zbGljZSgpO2lmKHZiWzFdKWZvcihsYSBpbiBmYS5jb252ZXJ0ZXJzKUhhW2xhLnRvTG93ZXJDYXNlKCldPWZhLmNvbnZlcnRlcnNbbGFdO2ZvcihZPXZiLnNoaWZ0KCk7WTspaWYoZmEucmVzcG9uc2VGaWVsZHNbWV0mJihkYltmYS5yZXNwb25zZUZpZWxkc1tZXV09RGEpLCFtYSYmVmEmJmZhLmRhdGFGaWx0ZXImJihEYT1mYS5kYXRhRmlsdGVyKERhLGZhLmRhdGFUeXBlKSksbWE9WSxZPXZiLnNoaWZ0KCkpaWYoIioiPT09WSlZPW1hO2Vsc2UgaWYoIioiIT09bWEmJm1hIT09WSl7aWYoIShsYT1IYVttYSsiICIrWV18fEhhWyIqICIrWV0pKWZvcih1YSBpbiBIYSlpZigoSWE9dWEuc3BsaXQoIiAiKSlbMV09PT1ZJiYobGE9SGFbbWErIiAiK0lhWzBdXXx8SGFbIiogIitJYVswXV0pKXshMD09PWxhP2xhPUhhW3VhXTohMCE9PUhhW3VhXSYmKFk9CklhWzBdLHZiLnVuc2hpZnQoSWFbMV0pKTticmVha31pZighMCE9PWxhKWlmKGxhJiZmYVsidGhyb3dzIl0pRGE9bGEoRGEpO2Vsc2UgdHJ5e0RhPWxhKERhKX1jYXRjaChmYyl7cmV0dXJue3N0YXRlOiJwYXJzZXJlcnJvciIsZXJyb3I6bGE\/ZmM6Ik5vIGNvbnZlcnNpb24gZnJvbSAiK21hKyIgdG8gIitZfX19cmV0dXJue3N0YXRlOiJzdWNjZXNzIixkYXRhOkRhfX0ocixNYSxRLHJhKSxyYT8oci5pZk1vZGlmaWVkJiYoKHRhPVEuZ2V0UmVzcG9uc2VIZWFkZXIoIkxhc3QtTW9kaWZpZWQiKSkmJihkLmxhc3RNb2RpZmllZFtmXT10YSksKHRhPVEuZ2V0UmVzcG9uc2VIZWFkZXIoImV0YWciKSkmJihkLmV0YWdbZl09dGEpKSwyMDQ9PT1TfHwiSEVBRCI9PT1yLnR5cGU\/Vz0ibm9jb250ZW50IjozMDQ9PT1TP1c9Im5vdG1vZGlmaWVkIjooVz1NYS5zdGF0ZSx2YT1NYS5kYXRhLHJhPSEoa2E9TWEuZXJyb3IpKSk6KGthPVcsIVMmJld8fChXPSJlcnJvciIsMD5TJiYoUz0wKSkpLFEuc3RhdHVzPQpTLFEuc3RhdHVzVGV4dD0oaGF8fFcpKyIiLHJhP0YucmVzb2x2ZVdpdGgoeixbdmEsVyxRXSk6Ri5yZWplY3RXaXRoKHosW1EsVyxrYV0pLFEuc3RhdHVzQ29kZShhYSksYWE9dm9pZCAwLGwmJkQudHJpZ2dlcihyYT8iYWpheFN1Y2Nlc3MiOiJhamF4RXJyb3IiLFtRLHIscmE\/dmE6a2FdKSxPLmZpcmVXaXRoKHosW1EsV10pLGwmJihELnRyaWdnZXIoImFqYXhDb21wbGV0ZSIsW1Escl0pLC0tZC5hY3RpdmV8fGQuZXZlbnQudHJpZ2dlcigiYWpheFN0b3AiKSkpfSJvYmplY3QiPT10eXBlb2YgYSYmKGI9YSxhPXZvaWQgMCk7Yj1ifHx7fTt2YXIgZSxmLGcsaCxtLGwsdCx3LHI9ZC5hamF4U2V0dXAoe30sYiksej1yLmNvbnRleHR8fHIsRD1yLmNvbnRleHQmJih6Lm5vZGVUeXBlfHx6LmpxdWVyeSk\/ZCh6KTpkLmV2ZW50LEY9ZC5EZWZlcnJlZCgpLE89ZC5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IiksYWE9ci5zdGF0dXNDb2RlfHx7fSxHYT17fSxxYT17fSxTYT0iY2FuY2VsZWQiLFE9CntyZWFkeVN0YXRlOjAsZ2V0UmVzcG9uc2VIZWFkZXI6ZnVuY3Rpb24oUyl7dmFyIGhhO2lmKEspe2lmKCFoKWZvcihoPXt9O2hhPUNkLmV4ZWMoZyk7KWhbaGFbMV0udG9Mb3dlckNhc2UoKSsiICJdPShoW2hhWzFdLnRvTG93ZXJDYXNlKCkrIiAiXXx8W10pLmNvbmNhdChoYVsyXSk7aGE9aFtTLnRvTG93ZXJDYXNlKCkrIiAiXX1yZXR1cm4gbnVsbD09aGE\/bnVsbDpoYS5qb2luKCIsICIpfSxnZXRBbGxSZXNwb25zZUhlYWRlcnM6ZnVuY3Rpb24oKXtyZXR1cm4gSz9nOm51bGx9LHNldFJlcXVlc3RIZWFkZXI6ZnVuY3Rpb24oUyxoYSl7cmV0dXJuIG51bGw9PUsmJihTPXFhW1MudG9Mb3dlckNhc2UoKV09cWFbUy50b0xvd2VyQ2FzZSgpXXx8UyxHYVtTXT1oYSksdGhpc30sb3ZlcnJpZGVNaW1lVHlwZTpmdW5jdGlvbihTKXtyZXR1cm4gbnVsbD09SyYmKHIubWltZVR5cGU9UyksdGhpc30sc3RhdHVzQ29kZTpmdW5jdGlvbihTKXt2YXIgaGE7aWYoUylpZihLKVEuYWx3YXlzKFNbUS5zdGF0dXNdKTsKZWxzZSBmb3IoaGEgaW4gUylhYVtoYV09W2FhW2hhXSxTW2hhXV07cmV0dXJuIHRoaXN9LGFib3J0OmZ1bmN0aW9uKFMpe1M9U3x8U2E7cmV0dXJuIGUmJmUuYWJvcnQoUyksYygwLFMpLHRoaXN9fTtpZihGLnByb21pc2UoUSksci51cmw9KChhfHxyLnVybHx8S2IuaHJlZikrIiIpLnJlcGxhY2UoRWQsS2IucHJvdG9jb2wrIi8vIiksci50eXBlPWIubWV0aG9kfHxiLnR5cGV8fHIubWV0aG9kfHxyLnR5cGUsci5kYXRhVHlwZXM9KHIuZGF0YVR5cGV8fCIqIikudG9Mb3dlckNhc2UoKS5tYXRjaChMYSl8fFsiIl0sbnVsbD09ci5jcm9zc0RvbWFpbil7YT1MLmNyZWF0ZUVsZW1lbnQoImEiKTt0cnl7YS5ocmVmPXIudXJsLGEuaHJlZj1hLmhyZWYsci5jcm9zc0RvbWFpbj1pYy5wcm90b2NvbCsiLy8iK2ljLmhvc3QhPWEucHJvdG9jb2wrIi8vIithLmhvc3R9Y2F0Y2goUyl7ci5jcm9zc0RvbWFpbj0hMH19aWYoci5kYXRhJiZyLnByb2Nlc3NEYXRhJiYic3RyaW5nIiE9dHlwZW9mIHIuZGF0YSYmCihyLmRhdGE9ZC5wYXJhbShyLmRhdGEsci50cmFkaXRpb25hbCkpLEViKEhjLHIsYixRKSxLKXJldHVybiBRO2Zvcih0IGluKGw9ZC5ldmVudCYmci5nbG9iYWwpJiYwPT1kLmFjdGl2ZSsrJiZkLmV2ZW50LnRyaWdnZXIoImFqYXhTdGFydCIpLHIudHlwZT1yLnR5cGUudG9VcHBlckNhc2UoKSxyLmhhc0NvbnRlbnQ9IURkLnRlc3Qoci50eXBlKSxmPXIudXJsLnJlcGxhY2UoQWQsIiIpLHIuaGFzQ29udGVudD9yLmRhdGEmJnIucHJvY2Vzc0RhdGEmJjA9PT0oci5jb250ZW50VHlwZXx8IiIpLmluZGV4T2YoImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIpJiYoci5kYXRhPXIuZGF0YS5yZXBsYWNlKHpkLCIrIikpOih3PXIudXJsLnNsaWNlKGYubGVuZ3RoKSxyLmRhdGEmJihyLnByb2Nlc3NEYXRhfHwic3RyaW5nIj09dHlwZW9mIHIuZGF0YSkmJihmKz0oaGMudGVzdChmKT8iJiI6Ij8iKStyLmRhdGEsZGVsZXRlIHIuZGF0YSksITE9PT1yLmNhY2hlJiYoZj1mLnJlcGxhY2UoQmQsCiIkMSIpLHc9KGhjLnRlc3QoZik\/IiYiOiI\/IikrIl89IitEYysrICt3KSxyLnVybD1mK3cpLHIuaWZNb2RpZmllZCYmKGQubGFzdE1vZGlmaWVkW2ZdJiZRLnNldFJlcXVlc3RIZWFkZXIoIklmLU1vZGlmaWVkLVNpbmNlIixkLmxhc3RNb2RpZmllZFtmXSksZC5ldGFnW2ZdJiZRLnNldFJlcXVlc3RIZWFkZXIoIklmLU5vbmUtTWF0Y2giLGQuZXRhZ1tmXSkpLChyLmRhdGEmJnIuaGFzQ29udGVudCYmITEhPT1yLmNvbnRlbnRUeXBlfHxiLmNvbnRlbnRUeXBlKSYmUS5zZXRSZXF1ZXN0SGVhZGVyKCJDb250ZW50LVR5cGUiLHIuY29udGVudFR5cGUpLFEuc2V0UmVxdWVzdEhlYWRlcigiQWNjZXB0IixyLmRhdGFUeXBlc1swXSYmci5hY2NlcHRzW3IuZGF0YVR5cGVzWzBdXT9yLmFjY2VwdHNbci5kYXRhVHlwZXNbMF1dKygiKiIhPT1yLmRhdGFUeXBlc1swXT8iLCAiK0ljKyI7IHE9MC4wMSI6IiIpOnIuYWNjZXB0c1siKiJdKSxyLmhlYWRlcnMpUS5zZXRSZXF1ZXN0SGVhZGVyKHQsci5oZWFkZXJzW3RdKTsKaWYoci5iZWZvcmVTZW5kJiYoITE9PT1yLmJlZm9yZVNlbmQuY2FsbCh6LFEscil8fEspKXJldHVybiBRLmFib3J0KCk7aWYoU2E9ImFib3J0IixPLmFkZChyLmNvbXBsZXRlKSxRLmRvbmUoci5zdWNjZXNzKSxRLmZhaWwoci5lcnJvciksZT1FYihjYyxyLGIsUSkpe2lmKFEucmVhZHlTdGF0ZT0xLGwmJkQudHJpZ2dlcigiYWpheFNlbmQiLFtRLHJdKSxLKXJldHVybiBRO3IuYXN5bmMmJjA8ci50aW1lb3V0JiYobT1uLnNldFRpbWVvdXQoZnVuY3Rpb24oKXtRLmFib3J0KCJ0aW1lb3V0Iil9LHIudGltZW91dCkpO3RyeXt2YXIgSz0hMTtlLnNlbmQoR2EsYyl9Y2F0Y2goUyl7aWYoSyl0aHJvdyBTO2MoLTEsUyl9fWVsc2UgYygtMSwiTm8gVHJhbnNwb3J0Iik7cmV0dXJuIFF9LGdldEpTT046ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBkLmdldChhLGIsYywianNvbiIpfSxnZXRTY3JpcHQ6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gZC5nZXQoYSx2b2lkIDAsYiwic2NyaXB0Iil9fSk7ZC5lYWNoKFsiZ2V0IiwKInBvc3QiXSxmdW5jdGlvbihhLGIpe2RbYl09ZnVuY3Rpb24oYyxlLGYsZyl7cmV0dXJuIE0oZSkmJihnPWd8fGYsZj1lLGU9dm9pZCAwKSxkLmFqYXgoZC5leHRlbmQoe3VybDpjLHR5cGU6YixkYXRhVHlwZTpnLGRhdGE6ZSxzdWNjZXNzOmZ9LGQuaXNQbGFpbk9iamVjdChjKSYmYykpfX0pO2QuYWpheFByZWZpbHRlcihmdW5jdGlvbihhKXtmb3IodmFyIGIgaW4gYS5oZWFkZXJzKSJjb250ZW50LXR5cGUiPT09Yi50b0xvd2VyQ2FzZSgpJiYoYS5jb250ZW50VHlwZT1hLmhlYWRlcnNbYl18fCIiKX0pO2QuX2V2YWxVcmw9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBkLmFqYXgoe3VybDphLHR5cGU6IkdFVCIsZGF0YVR5cGU6InNjcmlwdCIsY2FjaGU6ITAsYXN5bmM6ITEsZ2xvYmFsOiExLGNvbnZlcnRlcnM6eyJ0ZXh0IHNjcmlwdCI6ZnVuY3Rpb24oKXt9fSxkYXRhRmlsdGVyOmZ1bmN0aW9uKGUpe2QuZ2xvYmFsRXZhbChlLGIsYyl9fSl9O2QuZm4uZXh0ZW5kKHt3cmFwQWxsOmZ1bmN0aW9uKGEpe3ZhciBiOwpyZXR1cm4gdGhpc1swXSYmKE0oYSkmJihhPWEuY2FsbCh0aGlzWzBdKSksYj1kKGEsdGhpc1swXS5vd25lckRvY3VtZW50KS5lcSgwKS5jbG9uZSghMCksdGhpc1swXS5wYXJlbnROb2RlJiZiLmluc2VydEJlZm9yZSh0aGlzWzBdKSxiLm1hcChmdW5jdGlvbigpe2Zvcih2YXIgYz10aGlzO2MuZmlyc3RFbGVtZW50Q2hpbGQ7KWM9Yy5maXJzdEVsZW1lbnRDaGlsZDtyZXR1cm4gY30pLmFwcGVuZCh0aGlzKSksdGhpc30sd3JhcElubmVyOmZ1bmN0aW9uKGEpe3JldHVybiBNKGEpP3RoaXMuZWFjaChmdW5jdGlvbihiKXtkKHRoaXMpLndyYXBJbm5lcihhLmNhbGwodGhpcyxiKSl9KTp0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgYj1kKHRoaXMpLGM9Yi5jb250ZW50cygpO2MubGVuZ3RoP2Mud3JhcEFsbChhKTpiLmFwcGVuZChhKX0pfSx3cmFwOmZ1bmN0aW9uKGEpe3ZhciBiPU0oYSk7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihjKXtkKHRoaXMpLndyYXBBbGwoYj9hLmNhbGwodGhpcywKYyk6YSl9KX0sdW53cmFwOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnBhcmVudChhKS5ub3QoImJvZHkiKS5lYWNoKGZ1bmN0aW9uKCl7ZCh0aGlzKS5yZXBsYWNlV2l0aCh0aGlzLmNoaWxkTm9kZXMpfSksdGhpc319KTtkLmV4cHIucHNldWRvcy5oaWRkZW49ZnVuY3Rpb24oYSl7cmV0dXJuIWQuZXhwci5wc2V1ZG9zLnZpc2libGUoYSl9O2QuZXhwci5wc2V1ZG9zLnZpc2libGU9ZnVuY3Rpb24oYSl7cmV0dXJuISEoYS5vZmZzZXRXaWR0aHx8YS5vZmZzZXRIZWlnaHR8fGEuZ2V0Q2xpZW50UmVjdHMoKS5sZW5ndGgpfTtkLmFqYXhTZXR0aW5ncy54aHI9ZnVuY3Rpb24oKXt0cnl7cmV0dXJuIG5ldyBuLlhNTEh0dHBSZXF1ZXN0fWNhdGNoKGEpe319O3ZhciBGZD17MDoyMDAsMTIyMzoyMDR9LExiPWQuYWpheFNldHRpbmdzLnhocigpO04uY29ycz0hIUxiJiYid2l0aENyZWRlbnRpYWxzImluIExiO04uYWpheD1MYj0hIUxiO2QuYWpheFRyYW5zcG9ydChmdW5jdGlvbihhKXt2YXIgYiwKYztpZihOLmNvcnN8fExiJiYhYS5jcm9zc0RvbWFpbilyZXR1cm57c2VuZDpmdW5jdGlvbihlLGYpe3ZhciBnLGg9YS54aHIoKTtpZihoLm9wZW4oYS50eXBlLGEudXJsLGEuYXN5bmMsYS51c2VybmFtZSxhLnBhc3N3b3JkKSxhLnhockZpZWxkcylmb3IoZyBpbiBhLnhockZpZWxkcyloW2ddPWEueGhyRmllbGRzW2ddO2ZvcihnIGluIGEubWltZVR5cGUmJmgub3ZlcnJpZGVNaW1lVHlwZSYmaC5vdmVycmlkZU1pbWVUeXBlKGEubWltZVR5cGUpLGEuY3Jvc3NEb21haW58fGVbIlgtUmVxdWVzdGVkLVdpdGgiXXx8KGVbIlgtUmVxdWVzdGVkLVdpdGgiXT0iWE1MSHR0cFJlcXVlc3QiKSxlKWguc2V0UmVxdWVzdEhlYWRlcihnLGVbZ10pO2I9ZnVuY3Rpb24obSl7cmV0dXJuIGZ1bmN0aW9uKCl7YiYmKGI9Yz1oLm9ubG9hZD1oLm9uZXJyb3I9aC5vbmFib3J0PWgub250aW1lb3V0PWgub25yZWFkeXN0YXRlY2hhbmdlPW51bGwsImFib3J0Ij09PW0\/aC5hYm9ydCgpOiJlcnJvciI9PT1tPwoibnVtYmVyIiE9dHlwZW9mIGguc3RhdHVzP2YoMCwiZXJyb3IiKTpmKGguc3RhdHVzLGguc3RhdHVzVGV4dCk6ZihGZFtoLnN0YXR1c118fGguc3RhdHVzLGguc3RhdHVzVGV4dCwidGV4dCIhPT0oaC5yZXNwb25zZVR5cGV8fCJ0ZXh0Iil8fCJzdHJpbmciIT10eXBlb2YgaC5yZXNwb25zZVRleHQ\/e2JpbmFyeTpoLnJlc3BvbnNlfTp7dGV4dDpoLnJlc3BvbnNlVGV4dH0saC5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKSkpfX07aC5vbmxvYWQ9YigpO2M9aC5vbmVycm9yPWgub250aW1lb3V0PWIoImVycm9yIik7dm9pZCAwIT09aC5vbmFib3J0P2gub25hYm9ydD1jOmgub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKCl7ND09PWgucmVhZHlTdGF0ZSYmbi5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7YiYmYygpfSl9O2I9YigiYWJvcnQiKTt0cnl7aC5zZW5kKGEuaGFzQ29udGVudCYmYS5kYXRhfHxudWxsKX1jYXRjaChtKXtpZihiKXRocm93IG07fX0sYWJvcnQ6ZnVuY3Rpb24oKXtiJiYKYigpfX19KTtkLmFqYXhQcmVmaWx0ZXIoZnVuY3Rpb24oYSl7YS5jcm9zc0RvbWFpbiYmKGEuY29udGVudHMuc2NyaXB0PSExKX0pO2QuYWpheFNldHVwKHthY2NlcHRzOntzY3JpcHQ6InRleHQvamF2YXNjcmlwdCwgYXBwbGljYXRpb24vamF2YXNjcmlwdCwgYXBwbGljYXRpb24vZWNtYXNjcmlwdCwgYXBwbGljYXRpb24veC1lY21hc2NyaXB0In0sY29udGVudHM6e3NjcmlwdDovXGIoPzpqYXZhfGVjbWEpc2NyaXB0XGIvfSxjb252ZXJ0ZXJzOnsidGV4dCBzY3JpcHQiOmZ1bmN0aW9uKGEpe3JldHVybiBkLmdsb2JhbEV2YWwoYSksYX19fSk7ZC5hamF4UHJlZmlsdGVyKCJzY3JpcHQiLGZ1bmN0aW9uKGEpe3ZvaWQgMD09PWEuY2FjaGUmJihhLmNhY2hlPSExKTthLmNyb3NzRG9tYWluJiYoYS50eXBlPSJHRVQiKX0pO2QuYWpheFRyYW5zcG9ydCgic2NyaXB0IixmdW5jdGlvbihhKXt2YXIgYixjO2lmKGEuY3Jvc3NEb21haW58fGEuc2NyaXB0QXR0cnMpcmV0dXJue3NlbmQ6ZnVuY3Rpb24oZSwKZil7Yj1kKCI8c2NyaXB0PiIpLmF0dHIoYS5zY3JpcHRBdHRyc3x8e30pLnByb3Aoe2NoYXJzZXQ6YS5zY3JpcHRDaGFyc2V0LHNyYzphLnVybH0pLm9uKCJsb2FkIGVycm9yIixjPWZ1bmN0aW9uKGcpe2IucmVtb3ZlKCk7Yz1udWxsO2cmJmYoImVycm9yIj09PWcudHlwZT80MDQ6MjAwLGcudHlwZSl9KTtMLmhlYWQuYXBwZW5kQ2hpbGQoYlswXSl9LGFib3J0OmZ1bmN0aW9uKCl7YyYmYygpfX19KTt2YXIgSmMsS2M9W10samM9Lyg9KVw\/KD89JnwkKXxcP1w\/LztkLmFqYXhTZXR1cCh7anNvbnA6ImNhbGxiYWNrIixqc29ucENhbGxiYWNrOmZ1bmN0aW9uKCl7dmFyIGE9S2MucG9wKCl8fGQuZXhwYW5kbysiXyIrRGMrKztyZXR1cm4gdGhpc1thXT0hMCxhfX0pO2QuYWpheFByZWZpbHRlcigianNvbiBqc29ucCIsZnVuY3Rpb24oYSxiLGMpe3ZhciBlLGYsZyxoPSExIT09YS5qc29ucCYmKGpjLnRlc3QoYS51cmwpPyJ1cmwiOiJzdHJpbmciPT10eXBlb2YgYS5kYXRhJiYwPT09KGEuY29udGVudFR5cGV8fAoiIikuaW5kZXhPZigiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIikmJmpjLnRlc3QoYS5kYXRhKSYmImRhdGEiKTtpZihofHwianNvbnAiPT09YS5kYXRhVHlwZXNbMF0pcmV0dXJuIGU9YS5qc29ucENhbGxiYWNrPU0oYS5qc29ucENhbGxiYWNrKT9hLmpzb25wQ2FsbGJhY2soKTphLmpzb25wQ2FsbGJhY2ssaD9hW2hdPWFbaF0ucmVwbGFjZShqYywiJDEiK2UpOiExIT09YS5qc29ucCYmKGEudXJsKz0oaGMudGVzdChhLnVybCk\/IiYiOiI\/IikrYS5qc29ucCsiPSIrZSksYS5jb252ZXJ0ZXJzWyJzY3JpcHQganNvbiJdPWZ1bmN0aW9uKCl7cmV0dXJuIGd8fGQuZXJyb3IoZSsiIHdhcyBub3QgY2FsbGVkIiksZ1swXX0sYS5kYXRhVHlwZXNbMF09Impzb24iLGY9bltlXSxuW2VdPWZ1bmN0aW9uKCl7Zz1hcmd1bWVudHN9LGMuYWx3YXlzKGZ1bmN0aW9uKCl7dm9pZCAwPT09Zj9kKG4pLnJlbW92ZVByb3AoZSk6bltlXT1mO2FbZV0mJihhLmpzb25wQ2FsbGJhY2s9Yi5qc29ucENhbGxiYWNrLApLYy5wdXNoKGUpKTtnJiZNKGYpJiZmKGdbMF0pO2c9Zj12b2lkIDB9KSwic2NyaXB0In0pO04uY3JlYXRlSFRNTERvY3VtZW50PSgoSmM9TC5pbXBsZW1lbnRhdGlvbi5jcmVhdGVIVE1MRG9jdW1lbnQoIiIpLmJvZHkpLmlubmVySFRNTD0iPGZvcm0+PC9mb3JtPjxmb3JtPjwvZm9ybT4iLDI9PT1KYy5jaGlsZE5vZGVzLmxlbmd0aCk7ZC5wYXJzZUhUTUw9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiJzdHJpbmciIT10eXBlb2YgYT9bXTooImJvb2xlYW4iPT10eXBlb2YgYiYmKGM9YixiPSExKSxifHwoTi5jcmVhdGVIVE1MRG9jdW1lbnQ\/KChlPShiPUwuaW1wbGVtZW50YXRpb24uY3JlYXRlSFRNTERvY3VtZW50KCIiKSkuY3JlYXRlRWxlbWVudCgiYmFzZSIpKS5ocmVmPUwubG9jYXRpb24uaHJlZixiLmhlYWQuYXBwZW5kQ2hpbGQoZSkpOmI9TCksZz0hYyYmW10sKGY9eWMuZXhlYyhhKSk\/W2IuY3JlYXRlRWxlbWVudChmWzFdKV06KGY9UmIoW2FdLGIsZyksZyYmZy5sZW5ndGgmJmQoZykucmVtb3ZlKCksCmQubWVyZ2UoW10sZi5jaGlsZE5vZGVzKSkpO3ZhciBlLGYsZ307ZC5mbi5sb2FkPWZ1bmN0aW9uKGEsYixjKXt2YXIgZSxmLGcsaD10aGlzLG09YS5pbmRleE9mKCIgIik7cmV0dXJuLTE8bSYmKGU9QyhhLnNsaWNlKG0pKSxhPWEuc2xpY2UoMCxtKSksTShiKT8oYz1iLGI9dm9pZCAwKTpiJiYib2JqZWN0Ij09dHlwZW9mIGImJihmPSJQT1NUIiksMDxoLmxlbmd0aCYmZC5hamF4KHt1cmw6YSx0eXBlOmZ8fCJHRVQiLGRhdGFUeXBlOiJodG1sIixkYXRhOmJ9KS5kb25lKGZ1bmN0aW9uKGwpe2c9YXJndW1lbnRzO2guaHRtbChlP2QoIjxkaXY+IikuYXBwZW5kKGQucGFyc2VIVE1MKGwpKS5maW5kKGUpOmwpfSkuYWx3YXlzKGMmJmZ1bmN0aW9uKGwsdCl7aC5lYWNoKGZ1bmN0aW9uKCl7Yy5hcHBseSh0aGlzLGd8fFtsLnJlc3BvbnNlVGV4dCx0LGxdKX0pfSksdGhpc307ZC5leHByLnBzZXVkb3MuYW5pbWF0ZWQ9ZnVuY3Rpb24oYSl7cmV0dXJuIGQuZ3JlcChkLnRpbWVycyxmdW5jdGlvbihiKXtyZXR1cm4gYT09PQpiLmVsZW19KS5sZW5ndGh9O2Qub2Zmc2V0PXtzZXRPZmZzZXQ6ZnVuY3Rpb24oYSxiLGMpe3ZhciBlLGYsZyxoPWQuY3NzKGEsInBvc2l0aW9uIiksbT1kKGEpLGw9e307InN0YXRpYyI9PT1oJiYoYS5zdHlsZS5wb3NpdGlvbj0icmVsYXRpdmUiKTt2YXIgdD1tLm9mZnNldCgpLHc9ZC5jc3MoYSwidG9wIikscj1kLmNzcyhhLCJsZWZ0Iik7KCJhYnNvbHV0ZSI9PT1ofHwiZml4ZWQiPT09aCkmJi0xPCh3K3IpLmluZGV4T2YoImF1dG8iKT8oZz0oZT1tLnBvc2l0aW9uKCkpLnRvcCxmPWUubGVmdCk6KGc9cGFyc2VGbG9hdCh3KXx8MCxmPXBhcnNlRmxvYXQocil8fDApO00oYikmJihiPWIuY2FsbChhLGMsZC5leHRlbmQoe30sdCkpKTtudWxsIT1iLnRvcCYmKGwudG9wPWIudG9wLXQudG9wK2cpO251bGwhPWIubGVmdCYmKGwubGVmdD1iLmxlZnQtdC5sZWZ0K2YpOyJ1c2luZyJpbiBiP2IudXNpbmcuY2FsbChhLGwpOm0uY3NzKGwpfX07ZC5mbi5leHRlbmQoe29mZnNldDpmdW5jdGlvbihhKXtpZihhcmd1bWVudHMubGVuZ3RoKXJldHVybiB2b2lkIDA9PT0KYT90aGlzOnRoaXMuZWFjaChmdW5jdGlvbihmKXtkLm9mZnNldC5zZXRPZmZzZXQodGhpcyxhLGYpfSk7dmFyIGIsYyxlPXRoaXNbMF07cmV0dXJuIGU\/ZS5nZXRDbGllbnRSZWN0cygpLmxlbmd0aD8oYj1lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGM9ZS5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3LHt0b3A6Yi50b3ArYy5wYWdlWU9mZnNldCxsZWZ0OmIubGVmdCtjLnBhZ2VYT2Zmc2V0fSk6e3RvcDowLGxlZnQ6MH06dm9pZCAwfSxwb3NpdGlvbjpmdW5jdGlvbigpe2lmKHRoaXNbMF0pe3ZhciBhLGI9dGhpc1swXSxjPXt0b3A6MCxsZWZ0OjB9O2lmKCJmaXhlZCI9PT1kLmNzcyhiLCJwb3NpdGlvbiIpKXZhciBlPWIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7ZWxzZXtlPXRoaXMub2Zmc2V0KCk7dmFyIGY9Yi5vd25lckRvY3VtZW50O2ZvcihhPWIub2Zmc2V0UGFyZW50fHxmLmRvY3VtZW50RWxlbWVudDthJiYoYT09PWYuYm9keXx8YT09PWYuZG9jdW1lbnRFbGVtZW50KSYmCiJzdGF0aWMiPT09ZC5jc3MoYSwicG9zaXRpb24iKTspYT1hLnBhcmVudE5vZGU7YSYmYSE9PWImJjE9PT1hLm5vZGVUeXBlJiYoKGM9ZChhKS5vZmZzZXQoKSkudG9wKz1kLmNzcyhhLCJib3JkZXJUb3BXaWR0aCIsITApLGMubGVmdCs9ZC5jc3MoYSwiYm9yZGVyTGVmdFdpZHRoIiwhMCkpfXJldHVybnt0b3A6ZS50b3AtYy50b3AtZC5jc3MoYiwibWFyZ2luVG9wIiwhMCksbGVmdDplLmxlZnQtYy5sZWZ0LWQuY3NzKGIsIm1hcmdpbkxlZnQiLCEwKX19fSxvZmZzZXRQYXJlbnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24oKXtmb3IodmFyIGE9dGhpcy5vZmZzZXRQYXJlbnQ7YSYmInN0YXRpYyI9PT1kLmNzcyhhLCJwb3NpdGlvbiIpOylhPWEub2Zmc2V0UGFyZW50O3JldHVybiBhfHxqYn0pfX0pO2QuZWFjaCh7c2Nyb2xsTGVmdDoicGFnZVhPZmZzZXQiLHNjcm9sbFRvcDoicGFnZVlPZmZzZXQifSxmdW5jdGlvbihhLGIpe3ZhciBjPSJwYWdlWU9mZnNldCI9PT0KYjtkLmZuW2FdPWZ1bmN0aW9uKGUpe3JldHVybiBYYSh0aGlzLGZ1bmN0aW9uKGYsZyxoKXt2YXIgbTtpZihrYihmKT9tPWY6OT09PWYubm9kZVR5cGUmJihtPWYuZGVmYXVsdFZpZXcpLHZvaWQgMD09PWgpcmV0dXJuIG0\/bVtiXTpmW2ddO20\/bS5zY3JvbGxUbyhjP20ucGFnZVhPZmZzZXQ6aCxjP2g6bS5wYWdlWU9mZnNldCk6ZltnXT1ofSxhLGUsYXJndW1lbnRzLmxlbmd0aCl9fSk7ZC5lYWNoKFsidG9wIiwibGVmdCJdLGZ1bmN0aW9uKGEsYil7ZC5jc3NIb29rc1tiXT1WYihOLnBpeGVsUG9zaXRpb24sZnVuY3Rpb24oYyxlKXtpZihlKXJldHVybiBlPUthKGMsYiksYmMudGVzdChlKT9kKGMpLnBvc2l0aW9uKClbYl0rInB4IjplfSl9KTtkLmVhY2goe0hlaWdodDoiaGVpZ2h0IixXaWR0aDoid2lkdGgifSxmdW5jdGlvbihhLGIpe2QuZWFjaCh7cGFkZGluZzoiaW5uZXIiK2EsY29udGVudDpiLCIiOiJvdXRlciIrYX0sZnVuY3Rpb24oYyxlKXtkLmZuW2VdPWZ1bmN0aW9uKGYsCmcpe3ZhciBoPWFyZ3VtZW50cy5sZW5ndGgmJihjfHwiYm9vbGVhbiIhPXR5cGVvZiBmKSxtPWN8fCghMD09PWZ8fCEwPT09Zz8ibWFyZ2luIjoiYm9yZGVyIik7cmV0dXJuIFhhKHRoaXMsZnVuY3Rpb24obCx0LHcpe3ZhciByO3JldHVybiBrYihsKT8wPT09ZS5pbmRleE9mKCJvdXRlciIpP2xbImlubmVyIithXTpsLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudFsiY2xpZW50IithXTo5PT09bC5ub2RlVHlwZT8ocj1sLmRvY3VtZW50RWxlbWVudCxNYXRoLm1heChsLmJvZHlbInNjcm9sbCIrYV0sclsic2Nyb2xsIithXSxsLmJvZHlbIm9mZnNldCIrYV0sclsib2Zmc2V0IithXSxyWyJjbGllbnQiK2FdKSk6dm9pZCAwPT09dz9kLmNzcyhsLHQsbSk6ZC5zdHlsZShsLHQsdyxtKX0sYixoP2Y6dm9pZCAwLGgpfX0pfSk7ZC5lYWNoKCJhamF4U3RhcnQgYWpheFN0b3AgYWpheENvbXBsZXRlIGFqYXhFcnJvciBhamF4U3VjY2VzcyBhamF4U2VuZCIuc3BsaXQoIiAiKSxmdW5jdGlvbihhLApiKXtkLmZuW2JdPWZ1bmN0aW9uKGMpe3JldHVybiB0aGlzLm9uKGIsYyl9fSk7ZC5mbi5leHRlbmQoe2JpbmQ6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiB0aGlzLm9uKGEsbnVsbCxiLGMpfSx1bmJpbmQ6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5vZmYoYSxudWxsLGIpfSxkZWxlZ2F0ZTpmdW5jdGlvbihhLGIsYyxlKXtyZXR1cm4gdGhpcy5vbihiLGEsYyxlKX0sdW5kZWxlZ2F0ZTpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP3RoaXMub2ZmKGEsIioqIik6dGhpcy5vZmYoYixhfHwiKioiLGMpfSxob3ZlcjpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLm1vdXNlZW50ZXIoYSkubW91c2VsZWF2ZShifHxhKX19KTtkLmVhY2goImJsdXIgZm9jdXMgZm9jdXNpbiBmb2N1c291dCByZXNpemUgc2Nyb2xsIGNsaWNrIGRibGNsaWNrIG1vdXNlZG93biBtb3VzZXVwIG1vdXNlbW92ZSBtb3VzZW92ZXIgbW91c2VvdXQgbW91c2VlbnRlciBtb3VzZWxlYXZlIGNoYW5nZSBzZWxlY3Qgc3VibWl0IGtleWRvd24ga2V5cHJlc3Mga2V5dXAgY29udGV4dG1lbnUiLnNwbGl0KCIgIiksCmZ1bmN0aW9uKGEsYil7ZC5mbltiXT1mdW5jdGlvbihjLGUpe3JldHVybiAwPGFyZ3VtZW50cy5sZW5ndGg\/dGhpcy5vbihiLG51bGwsYyxlKTp0aGlzLnRyaWdnZXIoYil9fSk7dmFyIEdkPS9eW1xzXHVGRUZGXHhBMF0rfChbXlxzXHVGRUZGXHhBMF0pW1xzXHVGRUZGXHhBMF0rJC9nO2QucHJveHk9ZnVuY3Rpb24oYSxiKXt2YXIgYyxlLGY7aWYoInN0cmluZyI9PXR5cGVvZiBiJiYoYz1hW2JdLGI9YSxhPWMpLE0oYSkpcmV0dXJuIGU9eWEuY2FsbChhcmd1bWVudHMsMiksKGY9ZnVuY3Rpb24oKXtyZXR1cm4gYS5hcHBseShifHx0aGlzLGUuY29uY2F0KHlhLmNhbGwoYXJndW1lbnRzKSkpfSkuZ3VpZD1hLmd1aWQ9YS5ndWlkfHxkLmd1aWQrKyxmfTtkLmhvbGRSZWFkeT1mdW5jdGlvbihhKXthP2QucmVhZHlXYWl0Kys6ZC5yZWFkeSghMCl9O2QuaXNBcnJheT1BcnJheS5pc0FycmF5O2QucGFyc2VKU09OPUpTT04ucGFyc2U7ZC5ub2RlTmFtZT1YO2QuaXNGdW5jdGlvbj1NO2QuaXNXaW5kb3c9CmtiO2QuY2FtZWxDYXNlPUJhO2QudHlwZT1VO2Qubm93PURhdGUubm93O2QuaXNOdW1lcmljPWZ1bmN0aW9uKGEpe3ZhciBiPWQudHlwZShhKTtyZXR1cm4oIm51bWJlciI9PT1ifHwic3RyaW5nIj09PWIpJiYhaXNOYU4oYS1wYXJzZUZsb2F0KGEpKX07ZC50cmltPWZ1bmN0aW9uKGEpe3JldHVybiBudWxsPT1hPyIiOihhKyIiKS5yZXBsYWNlKEdkLCIkMSIpfTsiZnVuY3Rpb24iPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kJiZkZWZpbmUoImpxdWVyeSIsW10sZnVuY3Rpb24oKXtyZXR1cm4gZH0pO3ZhciBIZD1uLmpRdWVyeSxJZD1uLiQ7cmV0dXJuIGQubm9Db25mbGljdD1mdW5jdGlvbihhKXtyZXR1cm4gbi4kPT09ZCYmKG4uJD1JZCksYSYmbi5qUXVlcnk9PT1kJiYobi5qUXVlcnk9SGQpLGR9LCJ1bmRlZmluZWQiPT10eXBlb2YgZGEmJihuLmpRdWVyeT1uLiQ9ZCksZH0pO3ZhciBtYXRjaGVkLGJyb3dzZXI7CmpRdWVyeS51YU1hdGNoPWZ1bmN0aW9uKG4pe249bi50b0xvd2VyQ2FzZSgpO249LyhjaHJvbWUpWyBcL10oW1x3Ll0rKS8uZXhlYyhuKXx8Lyh3ZWJraXQpWyBcL10oW1x3Ll0rKS8uZXhlYyhuKXx8LyhvcGVyYSkoPzouKnZlcnNpb258KVsgXC9dKFtcdy5dKykvLmV4ZWMobil8fC8obXNpZSkgKFtcdy5dKykvLmV4ZWMobil8fDA+bi5pbmRleE9mKCJjb21wYXRpYmxlIikmJi8obW96aWxsYSkoPzouKj8gcnY6KFtcdy5dKyl8KS8uZXhlYyhuKXx8W107cmV0dXJue2Jyb3dzZXI6blsxXXx8IiIsdmVyc2lvbjpuWzJdfHwiMCJ9fTttYXRjaGVkPWpRdWVyeS51YU1hdGNoKG5hdmlnYXRvci51c2VyQWdlbnQpO2Jyb3dzZXI9e307bWF0Y2hlZC5icm93c2VyJiYoYnJvd3NlclttYXRjaGVkLmJyb3dzZXJdPSEwLGJyb3dzZXIudmVyc2lvbj1tYXRjaGVkLnZlcnNpb24pO2Jyb3dzZXIuY2hyb21lP2Jyb3dzZXIud2Via2l0PSEwOmJyb3dzZXIud2Via2l0JiYoYnJvd3Nlci5zYWZhcmk9ITApOwpqUXVlcnkuYnJvd3Nlcj1icm93c2VyOwooZnVuY3Rpb24obil7ImZ1bmN0aW9uIj09PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ\/ZGVmaW5lKFsianF1ZXJ5Il0sZnVuY3Rpb24oZGEpe3JldHVybiBuKGRhLHdpbmRvdyl9KToib2JqZWN0Ij09PXR5cGVvZiBtb2R1bGUmJm1vZHVsZS5leHBvcnRzP21vZHVsZS5leHBvcnRzPW4ocmVxdWlyZSgianF1ZXJ5Iiksd2luZG93KTpuKGpRdWVyeSx3aW5kb3cpfSkoZnVuY3Rpb24obixkYSl7ZnVuY3Rpb24gd2EodSl7YTp7dmFyIHg9L14oXGQrKVwuKFxkKylcLihcZCspLyxDPXguZXhlYyhuLmZuLmpxdWVyeSl8fFtdO3g9eC5leGVjKHUpfHxbXTtmb3IodT0xOzM+PXU7dSsrKXtpZigrQ1t1XT4reFt1XSl7Qz0xO2JyZWFrIGF9aWYoK0NbdV08K3hbdV0pe0M9LTE7YnJlYWsgYX19Qz0wfXJldHVybiAwPD1DfWZ1bmN0aW9uIFUodSx4KXt2YXIgQz1kYS5jb25zb2xlOyFuLm1pZ3JhdGVJc1BhdGNoRW5hYmxlZCh1KXx8bi5taWdyYXRlRGVkdXBsaWNhdGVXYXJuaW5ncyYmbWJbeF18fAoobWJbeF09ITAsbi5taWdyYXRlV2FybmluZ3MucHVzaCh4KyIgWyIrdSsiXSIpLEMmJkMud2FybiYmIW4ubWlncmF0ZU11dGUmJihDLndhcm4oIkpRTUlHUkFURTogIit4KSxuLm1pZ3JhdGVUcmFjZSYmQy50cmFjZSYmQy50cmFjZSgpKSl9ZnVuY3Rpb24gZWIodSx4LEMsSCxQKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodSx4LHtjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtVKEgsUCk7cmV0dXJuIEN9LHNldDpmdW5jdGlvbihlYSl7VShILFApO0M9ZWF9fSl9ZnVuY3Rpb24gWCh1LHgsQyxILFApe3ZhciBlYSxRYT11W3hdO3VbeF09ZnVuY3Rpb24oKXtQJiZVKEgsUCk7ZWE9bi5taWdyYXRlSXNQYXRjaEVuYWJsZWQoSCk\/QzpRYXx8bi5ub29wO3JldHVybiBlYS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fWZ1bmN0aW9uIGJhKHUseCxDLEgsUCl7aWYoIVApdGhyb3cgRXJyb3IoIk5vIHdhcm5pbmcgbWVzc2FnZSBwcm92aWRlZCIpO3JldHVybiBYKHUsCngsQyxILFApfWZ1bmN0aW9uIGphKHUseCxDLEgpe3JldHVybiBYKHUseCxDLEgpfWZ1bmN0aW9uIGxiKHUpe3JldHVybiB1LnJlcGxhY2UoLy0oW2Etel0pL2csZnVuY3Rpb24oeCxDKXtyZXR1cm4gQy50b1VwcGVyQ2FzZSgpfSl9ZnVuY3Rpb24gWWEodSl7cmV0dXJuIHBiLnRlc3QodSkmJlNiLnRlc3QodVswXS50b1VwcGVyQ2FzZSgpK3Uuc2xpY2UoMSkpfW4ubWlncmF0ZVZlcnNpb249IjMuNC4xIjt2YXIgWmE9T2JqZWN0LmNyZWF0ZShudWxsKTtuLm1pZ3JhdGVEaXNhYmxlUGF0Y2hlcz1mdW5jdGlvbigpe3ZhciB1O2Zvcih1PTA7dTxhcmd1bWVudHMubGVuZ3RoO3UrKylaYVthcmd1bWVudHNbdV1dPSEwfTtuLm1pZ3JhdGVFbmFibGVQYXRjaGVzPWZ1bmN0aW9uKCl7dmFyIHU7Zm9yKHU9MDt1PGFyZ3VtZW50cy5sZW5ndGg7dSsrKWRlbGV0ZSBaYVthcmd1bWVudHNbdV1dfTtuLm1pZ3JhdGVJc1BhdGNoRW5hYmxlZD1mdW5jdGlvbih1KXtyZXR1cm4hWmFbdV19O2RhLmNvbnNvbGUmJgpkYS5jb25zb2xlLmxvZyYmKG4mJndhKCIzLjAuMCIpJiYhd2EoIjUuMC4wIil8fGRhLmNvbnNvbGUubG9nKCJKUU1JR1JBVEU6IGpRdWVyeSAzLngtNC54IFJFUVVJUkVEIiksbi5taWdyYXRlV2FybmluZ3MmJmRhLmNvbnNvbGUubG9nKCJKUU1JR1JBVEU6IE1pZ3JhdGUgcGx1Z2luIGxvYWRlZCBtdWx0aXBsZSB0aW1lcyIpLGRhLmNvbnNvbGUubG9nKCJKUU1JR1JBVEU6IE1pZ3JhdGUgaXMgaW5zdGFsbGVkIisobi5taWdyYXRlTXV0ZT8iIjoiIHdpdGggbG9nZ2luZyBhY3RpdmUiKSsiLCB2ZXJzaW9uICIrbi5taWdyYXRlVmVyc2lvbikpO3ZhciBtYj17fTtuLm1pZ3JhdGVEZWR1cGxpY2F0ZVdhcm5pbmdzPSEwO24ubWlncmF0ZVdhcm5pbmdzPVtdO3ZvaWQgMD09PW4ubWlncmF0ZVRyYWNlJiYobi5taWdyYXRlVHJhY2U9ITApO24ubWlncmF0ZVJlc2V0PWZ1bmN0aW9uKCl7bWI9e307bi5taWdyYXRlV2FybmluZ3MubGVuZ3RoPTB9OyJCYWNrQ29tcGF0Ij09PWRhLmRvY3VtZW50LmNvbXBhdE1vZGUmJgpVKCJxdWlya3MiLCJqUXVlcnkgaXMgbm90IGNvbXBhdGlibGUgd2l0aCBRdWlya3MgTW9kZSIpO3ZhciBPYSxOYj17fSxCYT1uLmZuLmluaXQsSmE9bi5maW5kLE9iPS9cWyhccypbLVx3XStccyopKFt+fF4kKl0\/PSlccyooWy1cdyNdKj8jWy1cdyNdKilccypcXS8sUGI9L1xbKFxzKlstXHddK1xzKikoW358XiQqXT89KVxzKihbLVx3I10qPyNbLVx3I10qKVxzKlxdL2csJGE9L15bXHNcdUZFRkZceEEwXSt8KFteXHNcdUZFRkZceEEwXSlbXHNcdUZFRkZceEEwXSskL2c7amEobi5mbiwiaW5pdCIsZnVuY3Rpb24odSl7dmFyIHg9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKTtuLm1pZ3JhdGVJc1BhdGNoRW5hYmxlZCgic2VsZWN0b3ItZW1wdHktaWQiKSYmInN0cmluZyI9PT10eXBlb2YgdSYmIiMiPT09dSYmKFUoInNlbGVjdG9yLWVtcHR5LWlkIiwialF1ZXJ5KCAnIycgKSBpcyBub3QgYSB2YWxpZCBzZWxlY3RvciIpLHhbMF09W10pO3JldHVybiBCYS5hcHBseSh0aGlzLAp4KX0sInNlbGVjdG9yLWVtcHR5LWlkIik7bi5mbi5pbml0LnByb3RvdHlwZT1uLmZuO2phKG4sImZpbmQiLGZ1bmN0aW9uKHUpe3ZhciB4PUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cyk7aWYoInN0cmluZyI9PT10eXBlb2YgdSYmT2IudGVzdCh1KSl0cnl7ZGEuZG9jdW1lbnQucXVlcnlTZWxlY3Rvcih1KX1jYXRjaChDKXt1PXUucmVwbGFjZShQYixmdW5jdGlvbihILFAsZWEsUWEpe3JldHVybiJbIitQK2VhKyciJytRYSsnIl0nfSk7dHJ5e2RhLmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IodSksVSgic2VsZWN0b3ItaGFzaCIsIkF0dHJpYnV0ZSBzZWxlY3RvciB3aXRoICcjJyBtdXN0IGJlIHF1b3RlZDogIit4WzBdKSx4WzBdPXV9Y2F0Y2goSCl7VSgic2VsZWN0b3ItaGFzaCIsIkF0dHJpYnV0ZSBzZWxlY3RvciB3aXRoICcjJyB3YXMgbm90IGZpeGVkOiAiK3hbMF0pfX1yZXR1cm4gSmEuYXBwbHkodGhpcyx4KX0sInNlbGVjdG9yLWhhc2giKTtmb3IoT2EgaW4gSmEpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKEphLApPYSkmJihuLmZpbmRbT2FdPUphW09hXSk7YmEobi5mbiwic2l6ZSIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5sZW5ndGh9LCJzaXplIiwialF1ZXJ5LmZuLnNpemUoKSBpcyBkZXByZWNhdGVkIGFuZCByZW1vdmVkOyB1c2UgdGhlIC5sZW5ndGggcHJvcGVydHkiKTtiYShuLCJwYXJzZUpTT04iLGZ1bmN0aW9uKCl7cmV0dXJuIEpTT04ucGFyc2UuYXBwbHkobnVsbCxhcmd1bWVudHMpfSwicGFyc2VKU09OIiwialF1ZXJ5LnBhcnNlSlNPTiBpcyBkZXByZWNhdGVkOyB1c2UgSlNPTi5wYXJzZSIpO2JhKG4sImhvbGRSZWFkeSIsbi5ob2xkUmVhZHksImhvbGRSZWFkeSIsImpRdWVyeS5ob2xkUmVhZHkgaXMgZGVwcmVjYXRlZCIpO2JhKG4sInVuaXF1ZSIsbi51bmlxdWVTb3J0LCJ1bmlxdWUiLCJqUXVlcnkudW5pcXVlIGlzIGRlcHJlY2F0ZWQ7IHVzZSBqUXVlcnkudW5pcXVlU29ydCIpO2ViKG4uZXhwciwiZmlsdGVycyIsbi5leHByLnBzZXVkb3MsImV4cHItcHJlLXBzZXVkb3MiLCJqUXVlcnkuZXhwci5maWx0ZXJzIGlzIGRlcHJlY2F0ZWQ7IHVzZSBqUXVlcnkuZXhwci5wc2V1ZG9zIik7CmViKG4uZXhwciwiOiIsbi5leHByLnBzZXVkb3MsImV4cHItcHJlLXBzZXVkb3MiLCJqUXVlcnkuZXhwclsnOiddIGlzIGRlcHJlY2F0ZWQ7IHVzZSBqUXVlcnkuZXhwci5wc2V1ZG9zIik7d2EoIjMuMS4xIikmJmJhKG4sInRyaW0iLGZ1bmN0aW9uKHUpe3JldHVybiBudWxsPT11PyIiOih1KyIiKS5yZXBsYWNlKCRhLCIkMSIpfSwidHJpbSIsImpRdWVyeS50cmltIGlzIGRlcHJlY2F0ZWQ7IHVzZSBTdHJpbmcucHJvdG90eXBlLnRyaW0iKTt3YSgiMy4yLjAiKSYmKGJhKG4sIm5vZGVOYW1lIixmdW5jdGlvbih1LHgpe3JldHVybiB1Lm5vZGVOYW1lJiZ1Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT14LnRvTG93ZXJDYXNlKCl9LCJub2RlTmFtZSIsImpRdWVyeS5ub2RlTmFtZSBpcyBkZXByZWNhdGVkIiksYmEobiwiaXNBcnJheSIsQXJyYXkuaXNBcnJheSwiaXNBcnJheSIsImpRdWVyeS5pc0FycmF5IGlzIGRlcHJlY2F0ZWQ7IHVzZSBBcnJheS5pc0FycmF5IikpO3dhKCIzLjMuMCIpJiYKKGJhKG4sImlzTnVtZXJpYyIsZnVuY3Rpb24odSl7dmFyIHg9dHlwZW9mIHU7cmV0dXJuKCJudW1iZXIiPT09eHx8InN0cmluZyI9PT14KSYmIWlzTmFOKHUtcGFyc2VGbG9hdCh1KSl9LCJpc051bWVyaWMiLCJqUXVlcnkuaXNOdW1lcmljKCkgaXMgZGVwcmVjYXRlZCIpLG4uZWFjaCgiQm9vbGVhbiBOdW1iZXIgU3RyaW5nIEZ1bmN0aW9uIEFycmF5IERhdGUgUmVnRXhwIE9iamVjdCBFcnJvciBTeW1ib2wiLnNwbGl0KCIgIiksZnVuY3Rpb24odSx4KXtOYlsiW29iamVjdCAiK3grIl0iXT14LnRvTG93ZXJDYXNlKCl9KSxiYShuLCJ0eXBlIixmdW5jdGlvbih1KXtyZXR1cm4gbnVsbD09dT91KyIiOiJvYmplY3QiPT09dHlwZW9mIHV8fCJmdW5jdGlvbiI9PT10eXBlb2YgdT9OYltPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodSldfHwib2JqZWN0Ijp0eXBlb2YgdX0sInR5cGUiLCJqUXVlcnkudHlwZSBpcyBkZXByZWNhdGVkIiksYmEobiwiaXNGdW5jdGlvbiIsZnVuY3Rpb24odSl7cmV0dXJuImZ1bmN0aW9uIj09PQp0eXBlb2YgdX0sImlzRnVuY3Rpb24iLCJqUXVlcnkuaXNGdW5jdGlvbigpIGlzIGRlcHJlY2F0ZWQiKSxiYShuLCJpc1dpbmRvdyIsZnVuY3Rpb24odSl7cmV0dXJuIG51bGwhPXUmJnU9PT11LndpbmRvd30sImlzV2luZG93IiwialF1ZXJ5LmlzV2luZG93KCkgaXMgZGVwcmVjYXRlZCIpKTtpZihuLmFqYXgpe3ZhciBzYT1uLmFqYXgsbmI9Lyg9KVw\/KD89JnwkKXxcP1w\/LztqYShuLCJhamF4IixmdW5jdGlvbigpe3ZhciB1PXNhLmFwcGx5KHRoaXMsYXJndW1lbnRzKTt1LnByb21pc2UmJihiYSh1LCJzdWNjZXNzIix1LmRvbmUsImpxWEhSLW1ldGhvZHMiLCJqUVhIUi5zdWNjZXNzIGlzIGRlcHJlY2F0ZWQgYW5kIHJlbW92ZWQiKSxiYSh1LCJlcnJvciIsdS5mYWlsLCJqcVhIUi1tZXRob2RzIiwialFYSFIuZXJyb3IgaXMgZGVwcmVjYXRlZCBhbmQgcmVtb3ZlZCIpLGJhKHUsImNvbXBsZXRlIix1LmFsd2F5cywianFYSFItbWV0aG9kcyIsImpRWEhSLmNvbXBsZXRlIGlzIGRlcHJlY2F0ZWQgYW5kIHJlbW92ZWQiKSk7CnJldHVybiB1fSwianFYSFItbWV0aG9kcyIpO3dhKCI0LjAuMCIpfHxuLmFqYXhQcmVmaWx0ZXIoIitqc29uIixmdW5jdGlvbih1KXshMSE9PXUuanNvbnAmJihuYi50ZXN0KHUudXJsKXx8InN0cmluZyI9PT10eXBlb2YgdS5kYXRhJiYwPT09KHUuY29udGVudFR5cGV8fCIiKS5pbmRleE9mKCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiKSYmbmIudGVzdCh1LmRhdGEpKSYmVSgianNvbnAtcHJvbW90aW9uIiwiSlNPTi10by1KU09OUCBhdXRvLXByb21vdGlvbiBpcyBkZXByZWNhdGVkIil9KX12YXIgUmI9bi5mbi5yZW1vdmVBdHRyLGFiPW4uZm4udG9nZ2xlQ2xhc3MsYmI9L1xTKy9nO2phKG4uZm4sInJlbW92ZUF0dHIiLGZ1bmN0aW9uKHUpe3ZhciB4PXRoaXMsQz0hMTtuLmVhY2godS5tYXRjaChiYiksZnVuY3Rpb24oSCxQKXtuLmV4cHIubWF0Y2guYm9vbC50ZXN0KFApJiZ4LmVhY2goZnVuY3Rpb24oKXtpZighMSE9PW4odGhpcykucHJvcChQKSlyZXR1cm4gQz0KITAsITF9KTtDJiYoVSgicmVtb3ZlQXR0ci1ib29sIiwialF1ZXJ5LmZuLnJlbW92ZUF0dHIgbm8gbG9uZ2VyIHNldHMgYm9vbGVhbiBwcm9wZXJ0aWVzOiAiK1ApLHgucHJvcChQLCExKSl9KTtyZXR1cm4gUmIuYXBwbHkodGhpcyxhcmd1bWVudHMpfSwicmVtb3ZlQXR0ci1ib29sIik7amEobi5mbiwidG9nZ2xlQ2xhc3MiLGZ1bmN0aW9uKHUpe2lmKHZvaWQgMCE9PXUmJiJib29sZWFuIiE9PXR5cGVvZiB1KXJldHVybiBhYi5hcHBseSh0aGlzLGFyZ3VtZW50cyk7VSgidG9nZ2xlQ2xhc3MtYm9vbCIsImpRdWVyeS5mbi50b2dnbGVDbGFzcyggYm9vbGVhbiApIGlzIGRlcHJlY2F0ZWQiKTtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIHg9dGhpcy5nZXRBdHRyaWJ1dGUmJnRoaXMuZ2V0QXR0cmlidXRlKCJjbGFzcyIpfHwiIjt4JiZuLmRhdGEodGhpcywiX19jbGFzc05hbWVfXyIseCk7dGhpcy5zZXRBdHRyaWJ1dGUmJnRoaXMuc2V0QXR0cmlidXRlKCJjbGFzcyIseHx8CiExPT09dT8iIjpuLmRhdGEodGhpcywiX19jbGFzc05hbWVfXyIpfHwiIil9KX0sInRvZ2dsZUNsYXNzLWJvb2wiKTt2YXIgZmI9ITEscGI9L15bYS16XS8sU2I9L14oPzpCb3JkZXIoPzpUb3B8UmlnaHR8Qm90dG9tfExlZnQpPyg\/OldpZHRofCl8KD86TWFyZ2lufFBhZGRpbmcpPyg\/OlRvcHxSaWdodHxCb3R0b218TGVmdCk\/fCg\/Ok1pbnxNYXgpPyg\/OldpZHRofEhlaWdodCkpJC87bi5zd2FwJiZuLmVhY2goWyJoZWlnaHQiLCJ3aWR0aCIsInJlbGlhYmxlTWFyZ2luUmlnaHQiXSxmdW5jdGlvbih1LHgpe3ZhciBDPW4uY3NzSG9va3NbeF0mJm4uY3NzSG9va3NbeF0uZ2V0O0MmJihuLmNzc0hvb2tzW3hdLmdldD1mdW5jdGlvbigpe2ZiPSEwO3ZhciBIPUMuYXBwbHkodGhpcyxhcmd1bWVudHMpO2ZiPSExO3JldHVybiBIfSl9KTtqYShuLCJzd2FwIixmdW5jdGlvbih1LHgsQyxIKXt2YXIgUCxlYT17fTtmYnx8VSgic3dhcCIsImpRdWVyeS5zd2FwKCkgaXMgdW5kb2N1bWVudGVkIGFuZCBkZXByZWNhdGVkIik7CmZvcihQIGluIHgpZWFbUF09dS5zdHlsZVtQXSx1LnN0eWxlW1BdPXhbUF07Qz1DLmFwcGx5KHUsSHx8W10pO2ZvcihQIGluIHgpdS5zdHlsZVtQXT1lYVtQXTtyZXR1cm4gQ30sInN3YXAiKTt3YSgiMy40LjAiKSYmInVuZGVmaW5lZCIhPT10eXBlb2YgUHJveHkmJihuLmNzc1Byb3BzPW5ldyBQcm94eShuLmNzc1Byb3BzfHx7fSx7c2V0OmZ1bmN0aW9uKCl7VSgiY3NzUHJvcHMiLCJqUXVlcnkuY3NzUHJvcHMgaXMgZGVwcmVjYXRlZCIpO3JldHVybiBSZWZsZWN0LnNldC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSkpO2lmKHdhKCI0LjAuMCIpKXt2YXIgcWI9e2FuaW1hdGlvbkl0ZXJhdGlvbkNvdW50OiEwLGNvbHVtbkNvdW50OiEwLGZpbGxPcGFjaXR5OiEwLGZsZXhHcm93OiEwLGZsZXhTaHJpbms6ITAsZm9udFdlaWdodDohMCxncmlkQXJlYTohMCxncmlkQ29sdW1uOiEwLGdyaWRDb2x1bW5FbmQ6ITAsZ3JpZENvbHVtblN0YXJ0OiEwLGdyaWRSb3c6ITAsZ3JpZFJvd0VuZDohMCwKZ3JpZFJvd1N0YXJ0OiEwLGxpbmVIZWlnaHQ6ITAsb3BhY2l0eTohMCxvcmRlcjohMCxvcnBoYW5zOiEwLHdpZG93czohMCx6SW5kZXg6ITAsem9vbTohMH07bi5jc3NOdW1iZXI9InVuZGVmaW5lZCIhPT10eXBlb2YgUHJveHk\/bmV3IFByb3h5KHFiLHtnZXQ6ZnVuY3Rpb24oKXtVKCJjc3MtbnVtYmVyIiwialF1ZXJ5LmNzc051bWJlciBpcyBkZXByZWNhdGVkIik7cmV0dXJuIFJlZmxlY3QuZ2V0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sc2V0OmZ1bmN0aW9uKCl7VSgiY3NzLW51bWJlciIsImpRdWVyeS5jc3NOdW1iZXIgaXMgZGVwcmVjYXRlZCIpO3JldHVybiBSZWZsZWN0LnNldC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSk6cWJ9ZWxzZSBxYj1uLmNzc051bWJlcjt2YXIgJGI9bi5mbi5jc3M7amEobi5mbiwiY3NzIixmdW5jdGlvbih1LHgpe3ZhciBDPXRoaXM7aWYodSYmIm9iamVjdCI9PT10eXBlb2YgdSYmIUFycmF5LmlzQXJyYXkodSkpcmV0dXJuIG4uZWFjaCh1LGZ1bmN0aW9uKFAsCmVhKXtuLmZuLmNzcy5jYWxsKEMsUCxlYSl9KSx0aGlzO2lmKCJudW1iZXIiPT09dHlwZW9mIHgpe3ZhciBIPWxiKHUpO1lhKEgpfHxxYltIXXx8VSgiY3NzLW51bWJlciIsJ051bWJlci10eXBlZCB2YWx1ZXMgYXJlIGRlcHJlY2F0ZWQgZm9yIGpRdWVyeS5mbi5jc3MoICInK3UrJyIsIHZhbHVlICknKX1yZXR1cm4gJGIuYXBwbHkodGhpcyxhcmd1bWVudHMpfSwiY3NzLW51bWJlciIpO3ZhciBnYj1uLmRhdGE7amEobiwiZGF0YSIsZnVuY3Rpb24odSx4LEMpe3ZhciBIO2lmKHgmJiJvYmplY3QiPT09dHlwZW9mIHgmJjI9PT1hcmd1bWVudHMubGVuZ3RoKXt2YXIgUD1uLmhhc0RhdGEodSkmJmdiLmNhbGwodGhpcyx1KSxlYT17fTtmb3IoSCBpbiB4KUghPT1sYihIKT8oVSgiZGF0YS1jYW1lbENhc2UiLCJqUXVlcnkuZGF0YSgpIGFsd2F5cyBzZXRzL2dldHMgY2FtZWxDYXNlZCBuYW1lczogIitIKSxQW0hdPXhbSF0pOmVhW0hdPXhbSF07Z2IuY2FsbCh0aGlzLHUsZWEpO3JldHVybiB4fXJldHVybiB4JiYKInN0cmluZyI9PT10eXBlb2YgeCYmeCE9PWxiKHgpJiYoUD1uLmhhc0RhdGEodSkmJmdiLmNhbGwodGhpcyx1KSkmJnggaW4gUD8oVSgiZGF0YS1jYW1lbENhc2UiLCJqUXVlcnkuZGF0YSgpIGFsd2F5cyBzZXRzL2dldHMgY2FtZWxDYXNlZCBuYW1lczogIit4KSwyPGFyZ3VtZW50cy5sZW5ndGgmJihQW3hdPUMpLFBbeF0pOmdiLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sImRhdGEtY2FtZWxDYXNlIik7aWYobi5meCl7dmFyIGNiPW4uVHdlZW4ucHJvdG90eXBlLnJ1bixUYj1mdW5jdGlvbih1KXtyZXR1cm4gdX07amEobi5Ud2Vlbi5wcm90b3R5cGUsInJ1biIsZnVuY3Rpb24oKXsxPG4uZWFzaW5nW3RoaXMuZWFzaW5nXS5sZW5ndGgmJihVKCJlYXNpbmctb25lLWFyZyIsIidqUXVlcnkuZWFzaW5nLiIrdGhpcy5lYXNpbmcudG9TdHJpbmcoKSsiJyBzaG91bGQgdXNlIG9ubHkgb25lIGFyZ3VtZW50Iiksbi5lYXNpbmdbdGhpcy5lYXNpbmddPVRiKTtjYi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LAoiZWFzaW5nLW9uZS1hcmciKTt2YXIgS2E9bi5meC5pbnRlcnZhbDtkYS5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShuLmZ4LCJpbnRlcnZhbCIse2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe2RhLmRvY3VtZW50LmhpZGRlbnx8VSgiZngtaW50ZXJ2YWwiLCJqUXVlcnkuZnguaW50ZXJ2YWwgaXMgZGVwcmVjYXRlZCIpO3JldHVybiBuLm1pZ3JhdGVJc1BhdGNoRW5hYmxlZCgiZngtaW50ZXJ2YWwiKT92b2lkIDA9PT1LYT8xMzpLYTpLYX0sc2V0OmZ1bmN0aW9uKHUpe1UoImZ4LWludGVydmFsIiwialF1ZXJ5LmZ4LmludGVydmFsIGlzIGRlcHJlY2F0ZWQiKTtLYT11fX0pfXZhciBWYj1uLmZuLmxvYWQsQWI9bi5ldmVudC5hZGQsV2I9bi5ldmVudC5maXg7bi5ldmVudC5wcm9wcz1bXTtuLmV2ZW50LmZpeEhvb2tzPXt9O2ViKG4uZXZlbnQucHJvcHMsImNvbmNhdCIsbi5ldmVudC5wcm9wcy5jb25jYXQsImV2ZW50LW9sZC1wYXRjaCIsCiJqUXVlcnkuZXZlbnQucHJvcHMuY29uY2F0KCkgaXMgZGVwcmVjYXRlZCBhbmQgcmVtb3ZlZCIpO2phKG4uZXZlbnQsImZpeCIsZnVuY3Rpb24odSl7dmFyIHg9dS50eXBlLEM9dGhpcy5maXhIb29rc1t4XSxIPW4uZXZlbnQucHJvcHM7aWYoSC5sZW5ndGgpZm9yKFUoImV2ZW50LW9sZC1wYXRjaCIsImpRdWVyeS5ldmVudC5wcm9wcyBhcmUgZGVwcmVjYXRlZCBhbmQgcmVtb3ZlZDogIitILmpvaW4oKSk7SC5sZW5ndGg7KW4uZXZlbnQuYWRkUHJvcChILnBvcCgpKTtpZihDJiYhQy5fbWlncmF0ZWRfJiYoQy5fbWlncmF0ZWRfPSEwLFUoImV2ZW50LW9sZC1wYXRjaCIsImpRdWVyeS5ldmVudC5maXhIb29rcyBhcmUgZGVwcmVjYXRlZCBhbmQgcmVtb3ZlZDogIit4KSwoSD1DLnByb3BzKSYmSC5sZW5ndGgpKWZvcig7SC5sZW5ndGg7KW4uZXZlbnQuYWRkUHJvcChILnBvcCgpKTt4PVdiLmNhbGwodGhpcyx1KTtyZXR1cm4gQyYmQy5maWx0ZXI\/Qy5maWx0ZXIoeCx1KTp4fSwiZXZlbnQtb2xkLXBhdGNoIik7CmphKG4uZXZlbnQsImFkZCIsZnVuY3Rpb24odSx4KXt1PT09ZGEmJiJsb2FkIj09PXgmJiJjb21wbGV0ZSI9PT1kYS5kb2N1bWVudC5yZWFkeVN0YXRlJiZVKCJsb2FkLWFmdGVyLWV2ZW50IiwialF1ZXJ5KHdpbmRvdykub24oJ2xvYWQnLi4uKSBjYWxsZWQgYWZ0ZXIgbG9hZCBldmVudCBvY2N1cnJlZCIpO3JldHVybiBBYi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LCJsb2FkLWFmdGVyLWV2ZW50Iik7bi5lYWNoKFsibG9hZCIsInVubG9hZCIsImVycm9yIl0sZnVuY3Rpb24odSx4KXtqYShuLmZuLHgsZnVuY3Rpb24oKXt2YXIgQz1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMCk7aWYoImxvYWQiPT09eCYmInN0cmluZyI9PT10eXBlb2YgQ1swXSlyZXR1cm4gVmIuYXBwbHkodGhpcyxDKTtVKCJzaG9ydGhhbmQtcmVtb3ZlZC12MyIsImpRdWVyeS5mbi4iK3grIigpIGlzIGRlcHJlY2F0ZWQiKTtDLnNwbGljZSgwLDAseCk7aWYoYXJndW1lbnRzLmxlbmd0aClyZXR1cm4gdGhpcy5vbi5hcHBseSh0aGlzLApDKTt0aGlzLnRyaWdnZXJIYW5kbGVyLmFwcGx5KHRoaXMsQyk7cmV0dXJuIHRoaXN9LCJzaG9ydGhhbmQtcmVtb3ZlZC12MyIpfSk7bi5lYWNoKCJibHVyIGZvY3VzIGZvY3VzaW4gZm9jdXNvdXQgcmVzaXplIHNjcm9sbCBjbGljayBkYmxjbGljayBtb3VzZWRvd24gbW91c2V1cCBtb3VzZW1vdmUgbW91c2VvdmVyIG1vdXNlb3V0IG1vdXNlZW50ZXIgbW91c2VsZWF2ZSBjaGFuZ2Ugc2VsZWN0IHN1Ym1pdCBrZXlkb3duIGtleXByZXNzIGtleXVwIGNvbnRleHRtZW51Ii5zcGxpdCgiICIpLGZ1bmN0aW9uKHUseCl7YmEobi5mbix4LGZ1bmN0aW9uKEMsSCl7cmV0dXJuIDA8YXJndW1lbnRzLmxlbmd0aD90aGlzLm9uKHgsbnVsbCxDLEgpOnRoaXMudHJpZ2dlcih4KX0sInNob3J0aGFuZC1kZXByZWNhdGVkLXYzIiwialF1ZXJ5LmZuLiIreCsiKCkgZXZlbnQgc2hvcnRoYW5kIGlzIGRlcHJlY2F0ZWQiKX0pO24oZnVuY3Rpb24oKXtuKGRhLmRvY3VtZW50KS50cmlnZ2VySGFuZGxlcigicmVhZHkiKX0pOwpuLmV2ZW50LnNwZWNpYWwucmVhZHk9e3NldHVwOmZ1bmN0aW9uKCl7dGhpcz09PWRhLmRvY3VtZW50JiZVKCJyZWFkeS1ldmVudCIsIidyZWFkeScgZXZlbnQgaXMgZGVwcmVjYXRlZCIpfX07YmEobi5mbiwiYmluZCIsZnVuY3Rpb24odSx4LEMpe3JldHVybiB0aGlzLm9uKHUsbnVsbCx4LEMpfSwicHJlLW9uLW1ldGhvZHMiLCJqUXVlcnkuZm4uYmluZCgpIGlzIGRlcHJlY2F0ZWQiKTtiYShuLmZuLCJ1bmJpbmQiLGZ1bmN0aW9uKHUseCl7cmV0dXJuIHRoaXMub2ZmKHUsbnVsbCx4KX0sInByZS1vbi1tZXRob2RzIiwialF1ZXJ5LmZuLnVuYmluZCgpIGlzIGRlcHJlY2F0ZWQiKTtiYShuLmZuLCJkZWxlZ2F0ZSIsZnVuY3Rpb24odSx4LEMsSCl7cmV0dXJuIHRoaXMub24oeCx1LEMsSCl9LCJwcmUtb24tbWV0aG9kcyIsImpRdWVyeS5mbi5kZWxlZ2F0ZSgpIGlzIGRlcHJlY2F0ZWQiKTtiYShuLmZuLCJ1bmRlbGVnYXRlIixmdW5jdGlvbih1LHgsQyl7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoPwp0aGlzLm9mZih1LCIqKiIpOnRoaXMub2ZmKHgsdXx8IioqIixDKX0sInByZS1vbi1tZXRob2RzIiwialF1ZXJ5LmZuLnVuZGVsZWdhdGUoKSBpcyBkZXByZWNhdGVkIik7YmEobi5mbiwiaG92ZXIiLGZ1bmN0aW9uKHUseCl7cmV0dXJuIHRoaXMub24oIm1vdXNlZW50ZXIiLHUpLm9uKCJtb3VzZWxlYXZlIix4fHx1KX0sInByZS1vbi1tZXRob2RzIiwialF1ZXJ5LmZuLmhvdmVyKCkgaXMgZGVwcmVjYXRlZCIpO3ZhciByYj0vPCg\/IWFyZWF8YnJ8Y29sfGVtYmVkfGhyfGltZ3xpbnB1dHxsaW5rfG1ldGF8cGFyYW0pKChbYS16XVteXC9cMD5ceDIwXHRcclxuXGZdKilbXj5dKilcLz4vZ2ksQmI9ZnVuY3Rpb24odSl7dmFyIHg9ZGEuZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uY3JlYXRlSFRNTERvY3VtZW50KCIiKTt4LmJvZHkuaW5uZXJIVE1MPXU7cmV0dXJuIHguYm9keSYmeC5ib2R5LmlubmVySFRNTH07bi5VTlNBRkVfcmVzdG9yZUxlZ2FjeUh0bWxQcmVmaWx0ZXI9ZnVuY3Rpb24oKXtuLm1pZ3JhdGVFbmFibGVQYXRjaGVzKCJzZWxmLWNsb3NlZC10YWdzIil9OwpqYShuLCJodG1sUHJlZmlsdGVyIixmdW5jdGlvbih1KXt2YXIgeD11LnJlcGxhY2UocmIsIjwkMT48LyQyPiIpO3ghPT11JiZCYih1KSE9PUJiKHgpJiZVKCJzZWxmLWNsb3NlZC10YWdzIiwiSFRNTCB0YWdzIG11c3QgYmUgcHJvcGVybHkgbmVzdGVkIGFuZCBjbG9zZWQ6ICIrdSk7cmV0dXJuIHUucmVwbGFjZShyYiwiPCQxPjwvJDI+Iil9LCJzZWxmLWNsb3NlZC10YWdzIik7bi5taWdyYXRlRGlzYWJsZVBhdGNoZXMoInNlbGYtY2xvc2VkLXRhZ3MiKTt2YXIgemE9bi5mbi5vZmZzZXQ7amEobi5mbiwib2Zmc2V0IixmdW5jdGlvbigpe3ZhciB1PXRoaXNbMF07cmV0dXJuIXV8fHUubm9kZVR5cGUmJnUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0P3phLmFwcGx5KHRoaXMsYXJndW1lbnRzKTooVSgib2Zmc2V0LXZhbGlkLWVsZW0iLCJqUXVlcnkuZm4ub2Zmc2V0KCkgcmVxdWlyZXMgYSB2YWxpZCBET00gZWxlbWVudCIpLGFyZ3VtZW50cy5sZW5ndGg\/dGhpczp2b2lkIDApfSwib2Zmc2V0LXZhbGlkLWVsZW0iKTsKaWYobi5hamF4KXt2YXIgQ2I9bi5wYXJhbTtqYShuLCJwYXJhbSIsZnVuY3Rpb24odSx4KXt2YXIgQz1uLmFqYXhTZXR0aW5ncyYmbi5hamF4U2V0dGluZ3MudHJhZGl0aW9uYWw7dm9pZCAwPT09eCYmQyYmKFUoInBhcmFtLWFqYXgtdHJhZGl0aW9uYWwiLCJqUXVlcnkucGFyYW0oKSBubyBsb25nZXIgdXNlcyBqUXVlcnkuYWpheFNldHRpbmdzLnRyYWRpdGlvbmFsIikseD1DKTtyZXR1cm4gQ2IuY2FsbCh0aGlzLHUseCl9LCJwYXJhbS1hamF4LXRyYWRpdGlvbmFsIil9YmEobi5mbiwiYW5kU2VsZiIsbi5mbi5hZGRCYWNrLCJhbmRTZWxmIiwialF1ZXJ5LmZuLmFuZFNlbGYoKSBpcyBkZXByZWNhdGVkIGFuZCByZW1vdmVkLCB1c2UgalF1ZXJ5LmZuLmFkZEJhY2soKSIpO2lmKG4uRGVmZXJyZWQpe3ZhciBEYj1uLkRlZmVycmVkLHRiPVtbInJlc29sdmUiLCJkb25lIixuLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSxuLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSwicmVzb2x2ZWQiXSwKWyJyZWplY3QiLCJmYWlsIixuLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSxuLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSwicmVqZWN0ZWQiXSxbIm5vdGlmeSIsInByb2dyZXNzIixuLkNhbGxiYWNrcygibWVtb3J5Iiksbi5DYWxsYmFja3MoIm1lbW9yeSIpXV07amEobiwiRGVmZXJyZWQiLGZ1bmN0aW9uKHUpe2Z1bmN0aW9uIHgoKXt2YXIgUD1hcmd1bWVudHM7cmV0dXJuIG4uRGVmZXJyZWQoZnVuY3Rpb24oZWEpe24uZWFjaCh0YixmdW5jdGlvbihRYSxFYil7dmFyIGhiPSJmdW5jdGlvbiI9PT10eXBlb2YgUFtRYV0mJlBbUWFdO0NbRWJbMV1dKGZ1bmN0aW9uKCl7dmFyIG9hPWhiJiZoYi5hcHBseSh0aGlzLGFyZ3VtZW50cyk7aWYob2EmJiJmdW5jdGlvbiI9PT10eXBlb2Ygb2EucHJvbWlzZSlvYS5wcm9taXNlKCkuZG9uZShlYS5yZXNvbHZlKS5mYWlsKGVhLnJlamVjdCkucHJvZ3Jlc3MoZWEubm90aWZ5KTtlbHNlIGVhW0ViWzBdKyJXaXRoIl0odGhpcz09PUg\/ZWEucHJvbWlzZSgpOgp0aGlzLGhiP1tvYV06YXJndW1lbnRzKX0pfSk7UD1udWxsfSkucHJvbWlzZSgpfXZhciBDPURiKCksSD1DLnByb21pc2UoKTtiYShDLCJwaXBlIix4LCJkZWZlcnJlZC1waXBlIiwiZGVmZXJyZWQucGlwZSgpIGlzIGRlcHJlY2F0ZWQiKTtiYShILCJwaXBlIix4LCJkZWZlcnJlZC1waXBlIiwiZGVmZXJyZWQucGlwZSgpIGlzIGRlcHJlY2F0ZWQiKTt1JiZ1LmNhbGwoQyxDKTtyZXR1cm4gQ30sImRlZmVycmVkLXBpcGUiKTtuLkRlZmVycmVkLmV4Y2VwdGlvbkhvb2s9RGIuZXhjZXB0aW9uSG9va31yZXR1cm4gbn0pOwovKiogL20vanMvanF1ZXJ5LmNvb2tpZS5qcyAqKi8KdmFyIF9fX2QyY19qcXVlcnljb29raWVqc19jX29uPSIyMDI1LTA1LTIzIDE3OjA5OjI4IjsndXNlIHN0cmljdCc7dmFyIF9fX2QyY19qcXVlcnljb29raWVqc19jX29uPSIyMDI0LTAxLTMxIDE0OjM2OjA5IjsidXNlIHN0cmljdCI7X19fZDJjX2pxdWVyeWNvb2tpZWpzX2Nfb249IjIwMjMtMDktMDYgMTQ6MzA6MDYiOyJ1c2Ugc3RyaWN0IjsKKGZ1bmN0aW9uKGgsbCxyKXtmdW5jdGlvbiB0KGIpe3JldHVybiBifWZ1bmN0aW9uIHUoYil7dHJ5e3JldHVybiBkZWNvZGVVUklDb21wb25lbnQoYi5yZXBsYWNlKG0sIiAiKSl9Y2F0Y2goYyl7dHJ5e3JldHVybiBkZWNvZGVVUklDb21wb25lbnQodW5lc2NhcGUoYikucmVwbGFjZShtLCIgIikpfWNhdGNoKGEpe3JldHVybiBjb25zb2xlJiZjb25zb2xlLmxvZyYmY29uc29sZS5sb2coYS5tZXNzYWdlKSxifX19ZnVuY3Rpb24gbihiLGMsYSxlLGssZil7InVuZGVmaW5lZCI9PT10eXBlb2YgZiYmKGY9NSk7InVuZGVmaW5lZCI9PT10eXBlb2Ygd2luZG93LkNvb2tpZUxvZ2dlcj9mJiZzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7bihiLGMsYSxlLGssZi0xKX0sMUUzKTp3aW5kb3cuQ29va2llTG9nZ2VyLmxvZyhiLGMsYSxlLGspfXZhciBtPS9cKy9nLGc9aC5jb29raWU9ZnVuY3Rpb24oYixjLGEpe2lmKGMhPT1yKXJldHVybiBDb29raWVzLmlzQ29va2llQWxsb3dlZChiLGZ1bmN0aW9uKGQpe2RlYnVnKCJDb29raWU6ICIsCmIsZCk7YT1oLmV4dGVuZCh7fSxnLmRlZmF1bHRzLGEpO2lmKCFkKXJldHVybiBDb29raWVzLnJlbW92ZShiLGEucGF0aCxhLmRvbWFpbiksITE7bnVsbD09PWMmJihhLmV4cGlyZXM9LTEpOyJudW1iZXIiPT09dHlwZW9mIGEuZXhwaXJlc0luTWludXRlcyYmKGEuZXhwaXJlcz1hLmV4cGlyZXNJbk1pbnV0ZXMvMTQ0MCk7aWYoIm51bWJlciI9PT10eXBlb2YgYS5leHBpcmVzKXtkPWEuZXhwaXJlczt2YXIgcD1hLmV4cGlyZXM9bmV3IERhdGU7cC5zZXRUaW1lKCtwKzg2NEU1KmQpfWQ9bmV3IERhdGU7ZC5zZXRGdWxsWWVhcihkLmdldEZ1bGxZZWFyKCkrMSk7YS5leHBpcmVzPmQmJihhLmV4cGlyZXM9ZCk7Yz1nLmpzb24\/SlNPTi5zdHJpbmdpZnkoYyk6U3RyaW5nKGMpO24oYixjLGEuZXhwaXJlcyxhLnBhdGgsYS5kb21haW4pO3JldHVybiBsLmNvb2tpZT1bZW5jb2RlVVJJQ29tcG9uZW50KGIpLCI9IixnLnJhdz9jOmVuY29kZVVSSUNvbXBvbmVudChjKSxhLmV4cGlyZXM\/IjsgZXhwaXJlcz0iKwphLmV4cGlyZXMudG9VVENTdHJpbmcoKToiIixhLnBhdGg\/IjsgcGF0aD0iK2EucGF0aDoiIixhLmRvbWFpbj8iOyBkb21haW49IithLmRvbWFpbjoiIixhLnNlY3VyZT8iOyBzZWN1cmUiOiIiXS5qb2luKCIiKX0pO2Zvcih2YXIgZT1nLnJhdz90OnUsaz1sLmNvb2tpZS5zcGxpdCgiOyAiKSxmPTAsdj1rLmxlbmd0aDtmPHY7ZisrKXt2YXIgcT1rW2ZdLnNwbGl0KCI9Iik7aWYoZShxLnNoaWZ0KCkpPT09YilyZXR1cm4gZT1lKHEuam9pbigiPSIpKSxnLmpzb24\/SlNPTi5wYXJzZShlKTplfXJldHVybiBudWxsfTtnLmRlZmF1bHRzPXt9O2gucmVtb3ZlQ29va2llPWZ1bmN0aW9uKGIsYyl7cmV0dXJuIG51bGwhPT1oLmNvb2tpZShiKT8oaC5jb29raWUoYixudWxsLGMpLCEwKTohMX19KShqUXVlcnksZG9jdW1lbnQpOwovKiogL20vanMvdmFuaWxsYWpzL2Nvb2tpZXMuY29uc2VudC5qcyAqKi8KdmFyIF9fX2QyY19jb29raWVzY29uc2VudGpzX2Nfb249IjIwMjYtMDQtMTUgMTE6MzA6MDMiOyd1c2Ugc3RyaWN0JzsoZnVuY3Rpb24oKXt3aW5kb3cuRDJDRmJDb25zZW50PXdpbmRvdy5EMkNGYkNvbnNlbnR8fHtfc3RhdGU6bnVsbCxfcXVldWU6W10sX2ZsdXNoOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5fcXVldWU7dGhpcy5fcXVldWU9W107YS5mb3JFYWNoKGZ1bmN0aW9uKGIpe3RyeXtiKCl9Y2F0Y2goYyl7fX0pfSxncmFudDpmdW5jdGlvbigpe3RoaXMuX3N0YXRlPSJncmFudCI7InVuZGVmaW5lZCIhPT10eXBlb2YgZmJxJiYoZmJxKCJjb25zZW50IiwiZ3JhbnQiKSx0aGlzLl9mbHVzaCgpKX0scmV2b2tlOmZ1bmN0aW9uKCl7dGhpcy5fc3RhdGU9InJldm9rZSI7InVuZGVmaW5lZCIhPT10eXBlb2YgZmJxJiZmYnEoImNvbnNlbnQiLCJyZXZva2UiKX0sb25HcmFudGVkOmZ1bmN0aW9uKGEpe2lmKCJmdW5jdGlvbiI9PT10eXBlb2YgYSlpZigiZ3JhbnQiPT09dGhpcy5fc3RhdGUmJiJ1bmRlZmluZWQiIT09dHlwZW9mIGZicSl0cnl7YSgpfWNhdGNoKGIpe31lbHNlIHRoaXMuX3F1ZXVlLnB1c2goYSl9LApzeW5jVG9GYnE6ZnVuY3Rpb24oKXt0aGlzLl9zdGF0ZSYmInVuZGVmaW5lZCIhPT10eXBlb2YgZmJxJiYoZmJxKCJjb25zZW50Iix0aGlzLl9zdGF0ZSksImdyYW50Ij09PXRoaXMuX3N0YXRlJiZ0aGlzLl9mbHVzaCgpKX19O3dpbmRvdy5Db29raWVDb25zZW50PXtDQVRFR09SWUlEX0VTU0VOVElBTDoyLF9jbXBJbnRlcnZhbElEOm51bGwsX2N1cnJlbnRWZW5kb3I6bnVsbCxfY29va2llczpudWxsLF9jYXRlZ29yaWVzOm51bGwsX3JlZ2lzdGVyZWRSZXF1ZXN0czpbXSxpbml0OmZ1bmN0aW9uKCl7Q29va2llQ29uc2VudC5fbG9hZEpTT04obnVsbCk7Q29va2llQ29uc2VudC5fY21wSW50ZXJ2YWxJRD1zZXRJbnRlcnZhbChmdW5jdGlvbigpe0Nvb2tpZUNvbnNlbnQubGlzdGVuRm9yT25lVHJ1c3QoKX0sMUUzKTt2YXIgYT1Db29raWVDb25zZW50LmdldENvbnNlbnQoKTtsZXQgYj1udWxsPT1hfHwtMTxhLmluZGV4T2YoIkMwMDAyIik\/ImdyYW50ZWQiOiJkZW5pZWQiO2E9bnVsbD09CmF8fC0xPGEuaW5kZXhPZigiQzAwMDQiKT8iZ3JhbnRlZCI6ImRlbmllZCI7Z3RhZygiY29uc2VudCIsImRlZmF1bHQiLHthZF9zdG9yYWdlOmEsYW5hbHl0aWNzX3N0b3JhZ2U6Yn0pOyJncmFudGVkIj09PWE\/d2luZG93LkQyQ0ZiQ29uc2VudC5ncmFudCgpOndpbmRvdy5EMkNGYkNvbnNlbnQucmV2b2tlKCl9LGxpc3RlbkZvck9uZVRydXN0OmZ1bmN0aW9uKCl7aWYoInVuZGVmaW5lZCIhPT10eXBlb2YgT25lVHJ1c3Qpe2NvbnNvbGUubG9nKCJDb29raWVDb25zZW50Lmxpc3RlbkZvck9uZVRydXN0KCkiKTtDb29raWVDb25zZW50Ll9jdXJyZW50VmVuZG9yPSJPbmVUcnVzdCI7Y2xlYXJJbnRlcnZhbChDb29raWVDb25zZW50Ll9jbXBJbnRlcnZhbElEKTt2YXIgYT1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjb25ldHJ1c3QtY2xvc2UtYnRuLWNvbnRhaW5lciAub25ldHJ1c3QtY2xvc2UtYnRuLWhhbmRsZXIiKTthJiZhLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIixmdW5jdGlvbigpe3NldFRpbWVvdXQoZnVuY3Rpb24oKXtsZXQgYj0Kd2luZG93LmxvY2F0aW9uLmhvc3RuYW1lLGM9bG9jYXRpb24uaG9zdG5hbWUuc3BsaXQoIi4iKS5zbGljZSgtMikuam9pbigiLiIpO2RvY3VtZW50LmNvb2tpZT0iT3B0YW5vbkFsZXJ0Qm94Q2xvc2VkPTsgUGF0aD0vOyBFeHBpcmVzPVRodSwgMDEgSmFuIDE5NzAgMDA6MDA6MDEgR01UO2RvbWFpbj0iK2IrIjsiO2RvY3VtZW50LmNvb2tpZT0iT3B0YW5vbkFsZXJ0Qm94Q2xvc2VkPTsgUGF0aD0vOyBFeHBpcmVzPVRodSwgMDEgSmFuIDE5NzAgMDA6MDA6MDEgR01UO2RvbWFpbj0iK2MrIjsifSwxRTMpfSk7T25lVHJ1c3QuT25Db25zZW50Q2hhbmdlZChmdW5jdGlvbihiKXtpZihiJiZiLmRldGFpbCl7dmFyIGM9Q29va2llQ29uc2VudC5fZ2V0Q29uc2VudENvb2tpZSgpO0Nvb2tpZUNvbnNlbnQuX3VwZGF0ZUNvbnNlbnRDb29raWUoSlNPTi5zdHJpbmdpZnkoYi5kZXRhaWwpKTstMTxiLmRldGFpbC5pbmRleE9mKCJDMDAwNCIpP2d0YWcoImNvbnNlbnQiLCJ1cGRhdGUiLHthZF9zdG9yYWdlOiJncmFudGVkIn0pOgpndGFnKCJjb25zZW50IiwidXBkYXRlIix7YWRfc3RvcmFnZToiZGVuaWVkIn0pOy0xPGIuZGV0YWlsLmluZGV4T2YoIkMwMDAyIik\/Z3RhZygiY29uc2VudCIsInVwZGF0ZSIse2FuYWx5dGljc19zdG9yYWdlOiJncmFudGVkIn0pOmd0YWcoImNvbnNlbnQiLCJ1cGRhdGUiLHthbmFseXRpY3Nfc3RvcmFnZToiZGVuaWVkIn0pOy0xPGIuZGV0YWlsLmluZGV4T2YoIkMwMDA0Iik\/d2luZG93LkQyQ0ZiQ29uc2VudC5ncmFudCgpOndpbmRvdy5EMkNGYkNvbnNlbnQucmV2b2tlKCk7MT09Yi5kZXRhaWwubGVuZ3RoJiYiQzAwMDEiPT1iLmRldGFpbFswXSYmKG51bGw9PWN8fDE8Yy5sZW5ndGgpJiZkMmNGb290ZXJEZWxldGVBbGxDb29raWVzKCEwKTtpZigtMTxiLmRldGFpbC5pbmRleE9mKCJDMDAwMiIpKXtjPXNlc3Npb25TdG9yYWdlLmdldEl0ZW0oImQyY19jb25zZW50X3dhaXQiKTtjPW51bGwhPWM\/SlNPTi5wYXJzZShhdG9iKGMpKTp7fTtmb3IodmFyIGQgaW4gYylDb29raWVzLnNldChjW2RdLmtleSwKY1tkXS52YWx1ZSxjW2RdLmV4cGlyZXMsY1tkXS5wYXRoLGNbZF0uZG9tYWluKX1zZXNzaW9uU3RvcmFnZS5yZW1vdmVJdGVtKCJkMmNfY29uc2VudF93YWl0Iik7ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiYm9keSIpLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCJkMmNfY29uc2VudF9jaGFuZ2VkIix7Y2F0ZWdvcmllczpiLmRldGFpbH0pKX19KX19LF91cGRhdGVDb25zZW50Q29va2llOmZ1bmN0aW9uKGEpe0Nvb2tpZXMuc2V0KCJkMmNfY29va2llX2NvbnNlbnQiLGEsMzY1LCIvIil9LF9nZXRDb25zZW50Q29va2llOmZ1bmN0aW9uKCl7aWYoIUNvb2tpZXMuaGFzKCJkMmNfY29va2llX2NvbnNlbnQiKSlyZXR1cm4gbnVsbDtsZXQgYT1Db29raWVzLmdldCgiZDJjX2Nvb2tpZV9jb25zZW50Iik7cmV0dXJuIEpTT04ucGFyc2UoYSl9LGdldENvbnNlbnQ6ZnVuY3Rpb24oKXtsZXQgYT0oIiIrZG9jdW1lbnQuY29va2llKS5zcGxpdCgiOyIpO2ZvcihsZXQgYj0wO2I8YS5sZW5ndGg7YisrKXtsZXQgYz0KYVtiXTtjPWMudHJpbSgpO2lmKDA9PWMuaW5kZXhPZigiZDJjX2Nvb2tpZV9jb25zZW50PSIpKXt0cnl7Yz1kZWNvZGVVUklDb21wb25lbnQoYyl9Y2F0Y2goZCl7Y29uc29sZS5sb2coZCk7YnJlYWt9cmV0dXJuIGMuc3Vic3RyaW5nKDE5LGMubGVuZ3RoKX19cmV0dXJuIG51bGx9LGlzQ29va2llQWxsb3dlZDpmdW5jdGlvbihhLGIpe2lmKFsiZDJjX2Nvb2tpZV9jb25zZW50IiwiQ1NSRkRPTUFJTkNIRUNLXzEiXS5pbmNsdWRlcyhhKSliKCEwKTtlbHNlIGlmKG51bGw9PT1Db29raWVDb25zZW50Ll9jb29raWVzfHxudWxsPT09Q29va2llQ29uc2VudC5fY2F0ZWdvcmllcylDb29raWVDb25zZW50Ll9yZWdpc3RlckpTT05Mb2FkZWRFdmVudChmdW5jdGlvbigpe0Nvb2tpZUNvbnNlbnQuaXNDb29raWVBbGxvd2VkKGEsYil9KTtlbHNlIGlmKENvb2tpZUNvbnNlbnQuX2Nvb2tpZXMuaGFzT3duUHJvcGVydHkoYSkpe3ZhciBjPUNvb2tpZUNvbnNlbnQuX2Nvb2tpZXNbYV0sZD1Db29raWVDb25zZW50Ll9nZXRWZW5kb3JDYXRlZ29yeShjKSwKZT1Db29raWVDb25zZW50Ll9nZXRDb25zZW50Q29va2llKCk7ImZ1bmN0aW9uIj09PXR5cGVvZiBkZWJ1ZyYmZGVidWcoe25hbWU6YSxjYXRlZ29yeTpjLHZlbmRvcjpkLGNvbnNlbnQ6ZX0pO251bGw9PT1lfHxudWxsPT09ZD9iKCExKToib2JqZWN0Ij09PXR5cGVvZiBkPyhjPTA8ZC5maWx0ZXIoZnVuY3Rpb24oZil7cmV0dXJuLTE8ZS5pbmRleE9mKGYpfSkubGVuZ3RoLGIoYykpOmIoLTE8ZS5pbmRleE9mKGQpKX1lbHNlIGIoITEpfSxfbG9hZEpTT046ZnVuY3Rpb24oYSl7ZmV0Y2goIi9qcy9qc29uL2NhdGVnb3JpemVkX2Nvb2tpZXMuanNvbiIpLnRoZW4oZnVuY3Rpb24oYil7cmV0dXJuIGIuanNvbigpfSkudGhlbihmdW5jdGlvbihiKXtDb29raWVDb25zZW50Ll9jb29raWVzPWIuY29va2llcztDb29raWVDb25zZW50Ll9jYXRlZ29yaWVzPWIuY2F0ZWdvcmllcztpZigiZnVuY3Rpb24iPT09dHlwZW9mIGEpdHJ5e2EoKX1jYXRjaChjKXt9MDxDb29raWVDb25zZW50Ll9yZWdpc3RlcmVkUmVxdWVzdHMubGVuZ3RoJiYKQ29va2llQ29uc2VudC5fcmVnaXN0ZXJlZFJlcXVlc3RzLmZvckVhY2goZnVuY3Rpb24oYyl7dHJ5e2MoKX1jYXRjaChkKXt9fSl9KX0sX3JlZ2lzdGVySlNPTkxvYWRlZEV2ZW50OmZ1bmN0aW9uKGEpe2lmKCJmdW5jdGlvbiI9PT10eXBlb2YgYSlpZihudWxsIT09Q29va2llQ29uc2VudC5fY29va2llcyl0cnl7YSgpfWNhdGNoKGIpe31lbHNlIENvb2tpZUNvbnNlbnQuX3JlZ2lzdGVyZWRSZXF1ZXN0cy5wdXNoKGEpfSxfZ2V0VmVuZG9yQ2F0ZWdvcnk6ZnVuY3Rpb24oYSl7aWYobnVsbD09PUNvb2tpZUNvbnNlbnQuX2N1cnJlbnRWZW5kb3Ipe2xldCBjPVtdO09iamVjdC52YWx1ZXMoQ29va2llQ29uc2VudC5fY2F0ZWdvcmllcykuZm9yRWFjaChmdW5jdGlvbihkKXtkLmhhc093blByb3BlcnR5KGEpJiZjLnB1c2goZFthXSl9KTtyZXR1cm4gY31sZXQgYj1Db29raWVDb25zZW50Ll9jYXRlZ29yaWVzW0Nvb2tpZUNvbnNlbnQuX2N1cnJlbnRWZW5kb3JdO3JldHVybiBiJiZiLmhhc093blByb3BlcnR5KGEpPwpiW2FdOm51bGx9fTt3aW5kb3cuQ29va2llQ29uc2VudC5pbml0KCl9KSgpOwovKiogL20vanMvdmFuaWxsYWpzL2NvbnRlbnRMb2FkZXIuanMgKiovCnZhciBfX19kMmNfY29udGVudExvYWRlcmpzX2Nfb249IjIwMjYtMDEtMTIgMTA6MTM6MjkiOyd1c2Ugc3RyaWN0Jzt2YXIgJGpzY29tcD0kanNjb21wfHx7fTskanNjb21wLnNjb3BlPXt9OyRqc2NvbXAuQVNTVU1FX0VTNT0hMTskanNjb21wLkFTU1VNRV9OT19OQVRJVkVfTUFQPSExOyRqc2NvbXAuQVNTVU1FX05PX05BVElWRV9TRVQ9ITE7JGpzY29tcC5TSU1QTEVfRlJPVU5EX1BPTFlGSUxMPSExOyRqc2NvbXAuSVNPTEFURV9QT0xZRklMTFM9ITE7JGpzY29tcC5GT1JDRV9QT0xZRklMTF9QUk9NSVNFPSExOyRqc2NvbXAuRk9SQ0VfUE9MWUZJTExfUFJPTUlTRV9XSEVOX05PX1VOSEFORExFRF9SRUpFQ1RJT049ITE7JGpzY29tcC5kZWZpbmVQcm9wZXJ0eT0kanNjb21wLkFTU1VNRV9FUzV8fCJmdW5jdGlvbiI9PXR5cGVvZiBPYmplY3QuZGVmaW5lUHJvcGVydGllcz9PYmplY3QuZGVmaW5lUHJvcGVydHk6ZnVuY3Rpb24oYSxiLGMpe2lmKGE9PUFycmF5LnByb3RvdHlwZXx8YT09T2JqZWN0LnByb3RvdHlwZSlyZXR1cm4gYTthW2JdPWMudmFsdWU7cmV0dXJuIGF9OwokanNjb21wLmdldEdsb2JhbD1mdW5jdGlvbihhKXthPVsib2JqZWN0Ij09dHlwZW9mIGdsb2JhbFRoaXMmJmdsb2JhbFRoaXMsYSwib2JqZWN0Ij09dHlwZW9mIHdpbmRvdyYmd2luZG93LCJvYmplY3QiPT10eXBlb2Ygc2VsZiYmc2VsZiwib2JqZWN0Ij09dHlwZW9mIGdsb2JhbCYmZ2xvYmFsXTtmb3IodmFyIGI9MDtiPGEubGVuZ3RoOysrYil7dmFyIGM9YVtiXTtpZihjJiZjLk1hdGg9PU1hdGgpcmV0dXJuIGN9dGhyb3cgRXJyb3IoIkNhbm5vdCBmaW5kIGdsb2JhbCBvYmplY3QiKTt9OyRqc2NvbXAuZ2xvYmFsPSRqc2NvbXAuZ2V0R2xvYmFsKHRoaXMpOyRqc2NvbXAuSVNfU1lNQk9MX05BVElWRT0iZnVuY3Rpb24iPT09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PT10eXBlb2YgU3ltYm9sKCJ4Iik7JGpzY29tcC5UUlVTVF9FUzZfUE9MWUZJTExTPSEkanNjb21wLklTT0xBVEVfUE9MWUZJTExTfHwkanNjb21wLklTX1NZTUJPTF9OQVRJVkU7JGpzY29tcC5wb2x5ZmlsbHM9e307CiRqc2NvbXAucHJvcGVydHlUb1BvbHlmaWxsU3ltYm9sPXt9OyRqc2NvbXAuUE9MWUZJTExfUFJFRklYPSIkanNjcCQiO3ZhciAkanNjb21wJGxvb2t1cFBvbHlmaWxsZWRWYWx1ZT1mdW5jdGlvbihhLGIpe3ZhciBjPSRqc2NvbXAucHJvcGVydHlUb1BvbHlmaWxsU3ltYm9sW2JdO2lmKG51bGw9PWMpcmV0dXJuIGFbYl07Yz1hW2NdO3JldHVybiB2b2lkIDAhPT1jP2M6YVtiXX07JGpzY29tcC5wb2x5ZmlsbD1mdW5jdGlvbihhLGIsYyxkKXtiJiYoJGpzY29tcC5JU09MQVRFX1BPTFlGSUxMUz8kanNjb21wLnBvbHlmaWxsSXNvbGF0ZWQoYSxiLGMsZCk6JGpzY29tcC5wb2x5ZmlsbFVuaXNvbGF0ZWQoYSxiLGMsZCkpfTsKJGpzY29tcC5wb2x5ZmlsbFVuaXNvbGF0ZWQ9ZnVuY3Rpb24oYSxiLGMsZCl7Yz0kanNjb21wLmdsb2JhbDthPWEuc3BsaXQoIi4iKTtmb3IoZD0wO2Q8YS5sZW5ndGgtMTtkKyspe3ZhciBlPWFbZF07aWYoIShlIGluIGMpKXJldHVybjtjPWNbZV19YT1hW2EubGVuZ3RoLTFdO2Q9Y1thXTtiPWIoZCk7YiE9ZCYmbnVsbCE9YiYmJGpzY29tcC5kZWZpbmVQcm9wZXJ0eShjLGEse2NvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpifSl9OwokanNjb21wLnBvbHlmaWxsSXNvbGF0ZWQ9ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9YS5zcGxpdCgiLiIpO2E9MT09PWUubGVuZ3RoO2Q9ZVswXTtkPSFhJiZkIGluICRqc2NvbXAucG9seWZpbGxzPyRqc2NvbXAucG9seWZpbGxzOiRqc2NvbXAuZ2xvYmFsO2Zvcih2YXIgZj0wO2Y8ZS5sZW5ndGgtMTtmKyspe3ZhciBnPWVbZl07aWYoIShnIGluIGQpKXJldHVybjtkPWRbZ119ZT1lW2UubGVuZ3RoLTFdO2M9JGpzY29tcC5JU19TWU1CT0xfTkFUSVZFJiYiZXM2Ij09PWM\/ZFtlXTpudWxsO2I9YihjKTtudWxsIT1iJiYoYT8kanNjb21wLmRlZmluZVByb3BlcnR5KCRqc2NvbXAucG9seWZpbGxzLGUse2NvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpifSk6YiE9PWMmJih2b2lkIDA9PT0kanNjb21wLnByb3BlcnR5VG9Qb2x5ZmlsbFN5bWJvbFtlXSYmKGM9MUU5Kk1hdGgucmFuZG9tKCk+Pj4wLCRqc2NvbXAucHJvcGVydHlUb1BvbHlmaWxsU3ltYm9sW2VdPSRqc2NvbXAuSVNfU1lNQk9MX05BVElWRT8KJGpzY29tcC5nbG9iYWwuU3ltYm9sKGUpOiRqc2NvbXAuUE9MWUZJTExfUFJFRklYK2MrIiQiK2UpLCRqc2NvbXAuZGVmaW5lUHJvcGVydHkoZCwkanNjb21wLnByb3BlcnR5VG9Qb2x5ZmlsbFN5bWJvbFtlXSx7Y29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOmJ9KSkpfTskanNjb21wLnVuZGVyc2NvcmVQcm90b0NhbkJlU2V0PWZ1bmN0aW9uKCl7dmFyIGE9e2E6ITB9LGI9e307dHJ5e3JldHVybiBiLl9fcHJvdG9fXz1hLGIuYX1jYXRjaChjKXt9cmV0dXJuITF9OwokanNjb21wLnNldFByb3RvdHlwZU9mPSRqc2NvbXAuVFJVU1RfRVM2X1BPTFlGSUxMUyYmImZ1bmN0aW9uIj09dHlwZW9mIE9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2Y6JGpzY29tcC51bmRlcnNjb3JlUHJvdG9DYW5CZVNldCgpP2Z1bmN0aW9uKGEsYil7YS5fX3Byb3RvX189YjtpZihhLl9fcHJvdG9fXyE9PWIpdGhyb3cgbmV3IFR5cGVFcnJvcihhKyIgaXMgbm90IGV4dGVuc2libGUiKTtyZXR1cm4gYX06bnVsbDskanNjb21wLmFycmF5SXRlcmF0b3JJbXBsPWZ1bmN0aW9uKGEpe3ZhciBiPTA7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGI8YS5sZW5ndGg\/e2RvbmU6ITEsdmFsdWU6YVtiKytdfTp7ZG9uZTohMH19fTskanNjb21wLmFycmF5SXRlcmF0b3I9ZnVuY3Rpb24oYSl7cmV0dXJue25leHQ6JGpzY29tcC5hcnJheUl0ZXJhdG9ySW1wbChhKX19OwokanNjb21wLm1ha2VJdGVyYXRvcj1mdW5jdGlvbihhKXt2YXIgYj0idW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmU3ltYm9sLml0ZXJhdG9yJiZhW1N5bWJvbC5pdGVyYXRvcl07cmV0dXJuIGI\/Yi5jYWxsKGEpOiRqc2NvbXAuYXJyYXlJdGVyYXRvcihhKX07JGpzY29tcC5nZW5lcmF0b3I9e307JGpzY29tcC5nZW5lcmF0b3IuZW5zdXJlSXRlcmF0b3JSZXN1bHRJc09iamVjdF89ZnVuY3Rpb24oYSl7aWYoIShhIGluc3RhbmNlb2YgT2JqZWN0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJJdGVyYXRvciByZXN1bHQgIithKyIgaXMgbm90IGFuIG9iamVjdCIpO307CiRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQ9ZnVuY3Rpb24oKXt0aGlzLmlzUnVubmluZ189ITE7dGhpcy55aWVsZEFsbEl0ZXJhdG9yXz1udWxsO3RoaXMueWllbGRSZXN1bHQ9dm9pZCAwO3RoaXMubmV4dEFkZHJlc3M9MTt0aGlzLmZpbmFsbHlBZGRyZXNzXz10aGlzLmNhdGNoQWRkcmVzc189MDt0aGlzLmZpbmFsbHlDb250ZXh0c189dGhpcy5hYnJ1cHRDb21wbGV0aW9uXz1udWxsfTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5zdGFydF89ZnVuY3Rpb24oKXtpZih0aGlzLmlzUnVubmluZ18pdGhyb3cgbmV3IFR5cGVFcnJvcigiR2VuZXJhdG9yIGlzIGFscmVhZHkgcnVubmluZyIpO3RoaXMuaXNSdW5uaW5nXz0hMH07JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUuc3RvcF89ZnVuY3Rpb24oKXt0aGlzLmlzUnVubmluZ189ITF9OwokanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5qdW1wVG9FcnJvckhhbmRsZXJfPWZ1bmN0aW9uKCl7dGhpcy5uZXh0QWRkcmVzcz10aGlzLmNhdGNoQWRkcmVzc198fHRoaXMuZmluYWxseUFkZHJlc3NffTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5uZXh0Xz1mdW5jdGlvbihhKXt0aGlzLnlpZWxkUmVzdWx0PWF9OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLnRocm93Xz1mdW5jdGlvbihhKXt0aGlzLmFicnVwdENvbXBsZXRpb25fPXtleGNlcHRpb246YSxpc0V4Y2VwdGlvbjohMH07dGhpcy5qdW1wVG9FcnJvckhhbmRsZXJfKCl9OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLnJldHVybj1mdW5jdGlvbihhKXt0aGlzLmFicnVwdENvbXBsZXRpb25fPXtyZXR1cm46YX07dGhpcy5uZXh0QWRkcmVzcz10aGlzLmZpbmFsbHlBZGRyZXNzX307CiRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLmp1bXBUaHJvdWdoRmluYWxseUJsb2Nrcz1mdW5jdGlvbihhKXt0aGlzLmFicnVwdENvbXBsZXRpb25fPXtqdW1wVG86YX07dGhpcy5uZXh0QWRkcmVzcz10aGlzLmZpbmFsbHlBZGRyZXNzX307JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUueWllbGQ9ZnVuY3Rpb24oYSxiKXt0aGlzLm5leHRBZGRyZXNzPWI7cmV0dXJue3ZhbHVlOmF9fTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS55aWVsZEFsbD1mdW5jdGlvbihhLGIpe2E9JGpzY29tcC5tYWtlSXRlcmF0b3IoYSk7dmFyIGM9YS5uZXh0KCk7JGpzY29tcC5nZW5lcmF0b3IuZW5zdXJlSXRlcmF0b3JSZXN1bHRJc09iamVjdF8oYyk7aWYoYy5kb25lKXRoaXMueWllbGRSZXN1bHQ9Yy52YWx1ZSx0aGlzLm5leHRBZGRyZXNzPWI7ZWxzZSByZXR1cm4gdGhpcy55aWVsZEFsbEl0ZXJhdG9yXz1hLHRoaXMueWllbGQoYy52YWx1ZSxiKX07CiRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLmp1bXBUbz1mdW5jdGlvbihhKXt0aGlzLm5leHRBZGRyZXNzPWF9OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLmp1bXBUb0VuZD1mdW5jdGlvbigpe3RoaXMubmV4dEFkZHJlc3M9MH07JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUuc2V0Q2F0Y2hGaW5hbGx5QmxvY2tzPWZ1bmN0aW9uKGEsYil7dGhpcy5jYXRjaEFkZHJlc3NfPWE7dm9pZCAwIT1iJiYodGhpcy5maW5hbGx5QWRkcmVzc189Yil9OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLnNldEZpbmFsbHlCbG9jaz1mdW5jdGlvbihhKXt0aGlzLmNhdGNoQWRkcmVzc189MDt0aGlzLmZpbmFsbHlBZGRyZXNzXz1hfHwwfTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5sZWF2ZVRyeUJsb2NrPWZ1bmN0aW9uKGEsYil7dGhpcy5uZXh0QWRkcmVzcz1hO3RoaXMuY2F0Y2hBZGRyZXNzXz1ifHwwfTsKJGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUuZW50ZXJDYXRjaEJsb2NrPWZ1bmN0aW9uKGEpe3RoaXMuY2F0Y2hBZGRyZXNzXz1hfHwwO2E9dGhpcy5hYnJ1cHRDb21wbGV0aW9uXy5leGNlcHRpb247dGhpcy5hYnJ1cHRDb21wbGV0aW9uXz1udWxsO3JldHVybiBhfTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5lbnRlckZpbmFsbHlCbG9jaz1mdW5jdGlvbihhLGIsYyl7Yz90aGlzLmZpbmFsbHlDb250ZXh0c19bY109dGhpcy5hYnJ1cHRDb21wbGV0aW9uXzp0aGlzLmZpbmFsbHlDb250ZXh0c189W3RoaXMuYWJydXB0Q29tcGxldGlvbl9dO3RoaXMuY2F0Y2hBZGRyZXNzXz1hfHwwO3RoaXMuZmluYWxseUFkZHJlc3NfPWJ8fDB9OwokanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5sZWF2ZUZpbmFsbHlCbG9jaz1mdW5jdGlvbihhLGIpe2I9dGhpcy5maW5hbGx5Q29udGV4dHNfLnNwbGljZShifHwwKVswXTtpZihiPXRoaXMuYWJydXB0Q29tcGxldGlvbl89dGhpcy5hYnJ1cHRDb21wbGV0aW9uX3x8Yil7aWYoYi5pc0V4Y2VwdGlvbilyZXR1cm4gdGhpcy5qdW1wVG9FcnJvckhhbmRsZXJfKCk7dm9pZCAwIT1iLmp1bXBUbyYmdGhpcy5maW5hbGx5QWRkcmVzc188Yi5qdW1wVG8\/KHRoaXMubmV4dEFkZHJlc3M9Yi5qdW1wVG8sdGhpcy5hYnJ1cHRDb21wbGV0aW9uXz1udWxsKTp0aGlzLm5leHRBZGRyZXNzPXRoaXMuZmluYWxseUFkZHJlc3NffWVsc2UgdGhpcy5uZXh0QWRkcmVzcz1hfTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5mb3JJbj1mdW5jdGlvbihhKXtyZXR1cm4gbmV3ICRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQuUHJvcGVydHlJdGVyYXRvcihhKX07CiRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQuUHJvcGVydHlJdGVyYXRvcj1mdW5jdGlvbihhKXt0aGlzLm9iamVjdF89YTt0aGlzLnByb3BlcnRpZXNfPVtdO2Zvcih2YXIgYiBpbiBhKXRoaXMucHJvcGVydGllc18ucHVzaChiKTt0aGlzLnByb3BlcnRpZXNfLnJldmVyc2UoKX07JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5Qcm9wZXJ0eUl0ZXJhdG9yLnByb3RvdHlwZS5nZXROZXh0PWZ1bmN0aW9uKCl7Zm9yKDswPHRoaXMucHJvcGVydGllc18ubGVuZ3RoOyl7dmFyIGE9dGhpcy5wcm9wZXJ0aWVzXy5wb3AoKTtpZihhIGluIHRoaXMub2JqZWN0XylyZXR1cm4gYX1yZXR1cm4gbnVsbH07JGpzY29tcC5nZW5lcmF0b3IuRW5naW5lXz1mdW5jdGlvbihhKXt0aGlzLmNvbnRleHRfPW5ldyAkanNjb21wLmdlbmVyYXRvci5Db250ZXh0O3RoaXMucHJvZ3JhbV89YX07CiRqc2NvbXAuZ2VuZXJhdG9yLkVuZ2luZV8ucHJvdG90eXBlLm5leHRfPWZ1bmN0aW9uKGEpe3RoaXMuY29udGV4dF8uc3RhcnRfKCk7aWYodGhpcy5jb250ZXh0Xy55aWVsZEFsbEl0ZXJhdG9yXylyZXR1cm4gdGhpcy55aWVsZEFsbFN0ZXBfKHRoaXMuY29udGV4dF8ueWllbGRBbGxJdGVyYXRvcl8ubmV4dCxhLHRoaXMuY29udGV4dF8ubmV4dF8pO3RoaXMuY29udGV4dF8ubmV4dF8oYSk7cmV0dXJuIHRoaXMubmV4dFN0ZXBfKCl9OwokanNjb21wLmdlbmVyYXRvci5FbmdpbmVfLnByb3RvdHlwZS5yZXR1cm5fPWZ1bmN0aW9uKGEpe3RoaXMuY29udGV4dF8uc3RhcnRfKCk7dmFyIGI9dGhpcy5jb250ZXh0Xy55aWVsZEFsbEl0ZXJhdG9yXztpZihiKXJldHVybiB0aGlzLnlpZWxkQWxsU3RlcF8oInJldHVybiJpbiBiP2JbInJldHVybiJdOmZ1bmN0aW9uKGMpe3JldHVybnt2YWx1ZTpjLGRvbmU6ITB9fSxhLHRoaXMuY29udGV4dF8ucmV0dXJuKTt0aGlzLmNvbnRleHRfLnJldHVybihhKTtyZXR1cm4gdGhpcy5uZXh0U3RlcF8oKX07CiRqc2NvbXAuZ2VuZXJhdG9yLkVuZ2luZV8ucHJvdG90eXBlLnRocm93Xz1mdW5jdGlvbihhKXt0aGlzLmNvbnRleHRfLnN0YXJ0XygpO2lmKHRoaXMuY29udGV4dF8ueWllbGRBbGxJdGVyYXRvcl8pcmV0dXJuIHRoaXMueWllbGRBbGxTdGVwXyh0aGlzLmNvbnRleHRfLnlpZWxkQWxsSXRlcmF0b3JfWyJ0aHJvdyJdLGEsdGhpcy5jb250ZXh0Xy5uZXh0Xyk7dGhpcy5jb250ZXh0Xy50aHJvd18oYSk7cmV0dXJuIHRoaXMubmV4dFN0ZXBfKCl9OwokanNjb21wLmdlbmVyYXRvci5FbmdpbmVfLnByb3RvdHlwZS55aWVsZEFsbFN0ZXBfPWZ1bmN0aW9uKGEsYixjKXt0cnl7dmFyIGQ9YS5jYWxsKHRoaXMuY29udGV4dF8ueWllbGRBbGxJdGVyYXRvcl8sYik7JGpzY29tcC5nZW5lcmF0b3IuZW5zdXJlSXRlcmF0b3JSZXN1bHRJc09iamVjdF8oZCk7aWYoIWQuZG9uZSlyZXR1cm4gdGhpcy5jb250ZXh0Xy5zdG9wXygpLGQ7dmFyIGU9ZC52YWx1ZX1jYXRjaChmKXtyZXR1cm4gdGhpcy5jb250ZXh0Xy55aWVsZEFsbEl0ZXJhdG9yXz1udWxsLHRoaXMuY29udGV4dF8udGhyb3dfKGYpLHRoaXMubmV4dFN0ZXBfKCl9dGhpcy5jb250ZXh0Xy55aWVsZEFsbEl0ZXJhdG9yXz1udWxsO2MuY2FsbCh0aGlzLmNvbnRleHRfLGUpO3JldHVybiB0aGlzLm5leHRTdGVwXygpfTsKJGpzY29tcC5nZW5lcmF0b3IuRW5naW5lXy5wcm90b3R5cGUubmV4dFN0ZXBfPWZ1bmN0aW9uKCl7Zm9yKDt0aGlzLmNvbnRleHRfLm5leHRBZGRyZXNzOyl0cnl7dmFyIGE9dGhpcy5wcm9ncmFtXyh0aGlzLmNvbnRleHRfKTtpZihhKXJldHVybiB0aGlzLmNvbnRleHRfLnN0b3BfKCkse3ZhbHVlOmEudmFsdWUsZG9uZTohMX19Y2F0Y2goYil7dGhpcy5jb250ZXh0Xy55aWVsZFJlc3VsdD12b2lkIDAsdGhpcy5jb250ZXh0Xy50aHJvd18oYil9dGhpcy5jb250ZXh0Xy5zdG9wXygpO2lmKHRoaXMuY29udGV4dF8uYWJydXB0Q29tcGxldGlvbl8pe2E9dGhpcy5jb250ZXh0Xy5hYnJ1cHRDb21wbGV0aW9uXzt0aGlzLmNvbnRleHRfLmFicnVwdENvbXBsZXRpb25fPW51bGw7aWYoYS5pc0V4Y2VwdGlvbil0aHJvdyBhLmV4Y2VwdGlvbjtyZXR1cm57dmFsdWU6YS5yZXR1cm4sZG9uZTohMH19cmV0dXJue3ZhbHVlOnZvaWQgMCxkb25lOiEwfX07CiRqc2NvbXAuZ2VuZXJhdG9yLkdlbmVyYXRvcl89ZnVuY3Rpb24oYSl7dGhpcy5uZXh0PWZ1bmN0aW9uKGIpe3JldHVybiBhLm5leHRfKGIpfTt0aGlzLnRocm93PWZ1bmN0aW9uKGIpe3JldHVybiBhLnRocm93XyhiKX07dGhpcy5yZXR1cm49ZnVuY3Rpb24oYil7cmV0dXJuIGEucmV0dXJuXyhiKX07dGhpc1tTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9fTskanNjb21wLmdlbmVyYXRvci5jcmVhdGVHZW5lcmF0b3I9ZnVuY3Rpb24oYSxiKXtiPW5ldyAkanNjb21wLmdlbmVyYXRvci5HZW5lcmF0b3JfKG5ldyAkanNjb21wLmdlbmVyYXRvci5FbmdpbmVfKGIpKTskanNjb21wLnNldFByb3RvdHlwZU9mJiZhLnByb3RvdHlwZSYmJGpzY29tcC5zZXRQcm90b3R5cGVPZihiLGEucHJvdG90eXBlKTtyZXR1cm4gYn07CiRqc2NvbXAuYXN5bmNFeGVjdXRlUHJvbWlzZUdlbmVyYXRvcj1mdW5jdGlvbihhKXtmdW5jdGlvbiBiKGQpe3JldHVybiBhLm5leHQoZCl9ZnVuY3Rpb24gYyhkKXtyZXR1cm4gYS50aHJvdyhkKX1yZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24oZCxlKXtmdW5jdGlvbiBmKGcpe2cuZG9uZT9kKGcudmFsdWUpOlByb21pc2UucmVzb2x2ZShnLnZhbHVlKS50aGVuKGIsYykudGhlbihmLGUpfWYoYS5uZXh0KCkpfSl9OyRqc2NvbXAuYXN5bmNFeGVjdXRlUHJvbWlzZUdlbmVyYXRvckZ1bmN0aW9uPWZ1bmN0aW9uKGEpe3JldHVybiAkanNjb21wLmFzeW5jRXhlY3V0ZVByb21pc2VHZW5lcmF0b3IoYSgpKX07JGpzY29tcC5hc3luY0V4ZWN1dGVQcm9taXNlR2VuZXJhdG9yUHJvZ3JhbT1mdW5jdGlvbihhKXtyZXR1cm4gJGpzY29tcC5hc3luY0V4ZWN1dGVQcm9taXNlR2VuZXJhdG9yKG5ldyAkanNjb21wLmdlbmVyYXRvci5HZW5lcmF0b3JfKG5ldyAkanNjb21wLmdlbmVyYXRvci5FbmdpbmVfKGEpKSl9Owpjb25zdCBjb250ZW50QmxvY2tzPSgpPT57Y29uc3QgYT1iPT4kanNjb21wLmFzeW5jRXhlY3V0ZVByb21pc2VHZW5lcmF0b3JGdW5jdGlvbihmdW5jdGlvbiooKXt2YXIgYz1iLmRhdGFzZXQsZCxlPW51bGw9PShkPWIucXVlcnlTZWxlY3RvcignaW5wdXRbbmFtZT0iYmxvY2stZGF0YSJdJykpP3ZvaWQgMDpkLnZhbHVlO2Q9IkZSRU5DSCI9PWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNhY3RpdmVzaXRlbGFuZ3VhZ2UiKS52YWx1ZT8iZnIiOiJlbiI7Yz1PYmplY3QuYXNzaWduKHt9LGMse2RhdGE6ZXx8Int9In0pO2M9eWllbGQoeWllbGQgZmV0Y2goYC8ke2VuY29kZVVSSUNvbXBvbmVudChkKX0vYWpheC9nZXRTa2VsZXRvbkNvbnRlbnRgLHttZXRob2Q6IlBPU1QiLGhlYWRlcnM6e0FjY2VwdDoiYXBwbGljYXRpb24vanNvbiIsIkNvbnRlbnQtVHlwZSI6ImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDsiLGNoYXJzZXQ6IlVURi04In0sYm9keTpuZXcgVVJMU2VhcmNoUGFyYW1zKGMpfSkpLmpzb24oKTsKaWYoInVuZGVmaW5lZCIhPXR5cGVvZiBjLnN0YXR1cyYmInN1Y2Nlc3MiPT1jLnN0YXR1cylpZihjPWMuY29udGVudCwxPmMubGVuZ3RoKWIucmVwbGFjZVdpdGgoIiIpO2Vsc2V7Yz1kb2N1bWVudC5jcmVhdGVSYW5nZSgpLmNyZWF0ZUNvbnRleHR1YWxGcmFnbWVudChjKS5jaGlsZHJlblswXTt2YXIgZjtlPW51bGw9PShmPWIuZGF0YXNldCk\/dm9pZCAwOmYuY2FsbGJhY2s7Yi5wYXJlbnRFbGVtZW50LmRhdGFzZXQubG9hZGVkPSIxIjtiLnJlcGxhY2VXaXRoKGMpO2UmJiJmdW5jdGlvbiI9PT10eXBlb2YgaGFuZGxlcnNbZV0mJmhhbmRsZXJzW2VdKGMpLmluaXQoKX19KTtoYW5kbGVycz17cGF5bWVudENhbGNCbG9jazpiPT57Y29uc3QgYz1iLmNsb3Nlc3QoIi5kaXZDYXJTaW5nbGVJbm5lckJveCIpO3JldHVybntpbml0OigpPT57JChiKS5maW5kKCIucGF5bWVudFRvb2x0aXAiKS5lYWNoKGZ1bmN0aW9uKCl7dHJ5e3ZhciBkPSQodGhpcykuYXR0cigiZGF0YS10b29sdGlwIik7CiQodGhpcykuZGFya1Rvb2x0aXAoe2NvbnRlbnQ6ZCxncmF2aXR5OiJlYXN0Iix0aGVtZToibGlnaHQiLHRyaWdnZXI6ImNsaWNrIixhbmltYXRpb246ImZsaXBJbiJ9KX1jYXRjaChlKXt9fSk7Yi5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWVudGVyIixmdW5jdGlvbihkKXtkLnN0b3BQcm9wYWdhdGlvbigpO2lmKGIuZGF0YXNldC50b29sdGlwQ3JlYXRlZClyZXR1cm4hMTtiLmRhdGFzZXQudG9vbHRpcENyZWF0ZWQ9IjEiOyQoZC5jdXJyZW50VGFyZ2V0LnF1ZXJ5U2VsZWN0b3IoIi5jYXItZmluYW5jZS1pbmZvIikpLmRhcmtUb29sdGlwKHtncmF2aXR5OiJ3ZXN0Iix0aGVtZToibGlnaHQiLHRyaWdnZXI6ImhvdmVyIixhbmltYXRpb246ImZsaXBJbiJ9KX0pO2IucXVlcnlTZWxlY3RvcigiLmNhci1maW5hbmNlLWluZm8iKS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsZnVuY3Rpb24oZCl7ZC5wcmV2ZW50RGVmYXVsdCgpO2lmKCFjKXJldHVybiExO2Q9Yy5xdWVyeVNlbGVjdG9yKCIuZGl2Q2FyVGl0bGVDb250YWluZXIgYSIpLmhyZWY7CndpbmRvdy5vcGVuKGQsIl9zZWxmIil9KX19fX07cmV0dXJue3NldEJsb2NrT2JzZXJ2ZXI6KCk9Pntjb25zdCBiPW5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcihkPT57ZC5mb3JFYWNoKGU9PntlLmlzSW50ZXJzZWN0aW5nJiYoZS50YXJnZXQuY2xhc3NMaXN0LmFkZCgiYWN0aXZlIiksYi51bm9ic2VydmUoZS50YXJnZXQpLGNvbnNvbGUubG9nKCJza2VsZXRvbiBvYnNlcnZlZCAiK2UudGFyZ2V0KSxhKGUudGFyZ2V0KSl9KX0se3RocmVzaG9sZDouMX0pLGM9bmV3IFVSTFNlYXJjaFBhcmFtcyh3aW5kb3cubG9jYXRpb24uc2VhcmNoKTtkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCIuY29udGVudC1za2VsZXRvbiIpLmZvckVhY2goZD0+e2Iub2JzZXJ2ZShkKTsic2tlbGV0b24iPT09Yy5nZXQoImRlYnVnIikmJmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIi5jb250ZW50LXNrZWxldG9uIikuZm9yRWFjaChlPT5lLmNsYXNzTGlzdC5hZGQoImRlYnVnIikpfSl9LGhhbmRsZXJzfX07CmRvY1JlYWR5QXJyLnB1c2goKCk9PnsiZnVuY3Rpb24iPT09dHlwZW9mIGNvbnRlbnRCbG9ja3MmJmNvbnRlbnRCbG9ja3MoKS5zZXRCbG9ja09ic2VydmVyKCl9KTsKLyoqIC9tL2pzL3ZhbmlsbGFqcy9jb29raWVzLmpzICoqLwp2YXIgX19fZDJjX2Nvb2tpZXNqc19jX29uPSIyMDI2LTAxLTEyIDEwOjEzOjI1IjsndXNlIHN0cmljdCc7KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gbChhLGMsYixoLGQsZixlKXt2YXIgZz0iIjtpZihiKXtsZXQgaz1uZXcgRGF0ZTtrLnNldEZ1bGxZZWFyKGsuZ2V0RnVsbFllYXIoKSsxKTtzd2l0Y2goYi5jb25zdHJ1Y3Rvcil7Y2FzZSBOdW1iZXI6MzY1PGImJihiPTM2NSk7Zz1uZXcgRGF0ZTtnLnNldERhdGUoZy5nZXREYXRlKCkrYik7Zz1JbmZpbml0eT09PWI\/IjsgZXhwaXJlcz1GcmksIDMxIERlYyA5OTk5IDIzOjU5OjU5IEdNVCI6IjsgZXhwaXJlcz0iK2cudG9VVENTdHJpbmcoKTticmVhaztjYXNlIFN0cmluZzpuZXcgRGF0ZShiKT5rJiYoYj1rLnRvVVRDU3RyaW5nKCkpO2c9IjsgZXhwaXJlcz0iK2I7YnJlYWs7Y2FzZSBEYXRlOmI+ayYmKGI9ayksZz0iOyBleHBpcmVzPSIrYi50b1VUQ1N0cmluZygpfX0idW5kZWZpbmVkIj09PXR5cGVvZiBmJiYoZj0iaHR0cHM6Ij09PXdpbmRvdy5sb2NhdGlvbi5wcm90b2NvbCk7cmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudChhKSsKIj0iK2VuY29kZVVSSUNvbXBvbmVudChjKStnKyhkPyI7IGRvbWFpbj0iK2Q6IiIpKyhoPyI7IHBhdGg9IitoOiIiKSsoZj8iOyBzZWN1cmUiOiIiKSsoZSYmIm5vX3Jlc3RyaWN0aW9uIiE9PWUudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpPyJsYXgiPT09ZS50b1N0cmluZygpLnRvTG93ZXJDYXNlKCl8fDE9PT1NYXRoLmNlaWwoZSl8fCEwPT09ZT8iOyBzYW1lc2l0ZT1sYXgiOiJub25lIj09PWUudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpfHwwPmU\/Ijsgc2FtZXNpdGU9bm9uZSI6Ijsgc2FtZXNpdGU9c3RyaWN0IjoiIil9ZnVuY3Rpb24gbShhLGMpe2lmKCJ1bmRlZmluZWQiPT09dHlwZW9mIGF8fG51bGw9PT1hKXJldHVybi0xO3N3aXRjaChhLmNvbnN0cnVjdG9yKXtjYXNlIE51bWJlcjppZigibnVtYmVyIj09PWMpdmFyIGI9ODY0MDAqYTtlbHNlIGI9bmV3IERhdGUsYi5zZXREYXRlKGIuZ2V0RGF0ZSgpK2EpLGI9SW5maW5pdHk9PT1hPyJGcmksIDMxIERlYyA5OTk5IDIzOjU5OjU5IEdNVCI6CmIudG9VVENTdHJpbmcoKTticmVhaztjYXNlIFN0cmluZzoic3RyaW5nIj09PWM\/Yj1hOihiPW5ldyBEYXRlLGI9KChuZXcgRGF0ZShhKSkuZ2V0VGltZSgpLWIuZ2V0VGltZSgpKS8xRTMpO2JyZWFrO2Nhc2UgRGF0ZToic3RyaW5nIj09PWM\/Yj1hLnRvVVRDU3RyaW5nKCk6KGI9bmV3IERhdGUsYj0oYS5nZXRUaW1lKCktYi5nZXRUaW1lKCkpLzFFMyl9Im51bWJlciI9PT1jJiYoYj1NYXRoLnJvdW5kKGIpKTtyZXR1cm4gYn12YXIgbj0vW1wtXC5cK1wqXS9nLHA9L14oPzpleHBpcmVzfG1heFwtYWdlfHBhdGh8ZG9tYWlufHNlY3VyZXxzYW1lc2l0ZXxodHRwb25seSkkL2kscT0idXRtX2NhbXBhaWduIHV0bV9rZXl3b3JkIHV0bV9sYW5kaW5nIHV0bV9sYW5kaW5nX2Zvb3RlciB1dG1fbWVkaXVtIHV0bV9zb3VyY2UgdXRtX2NhbXBhaWduX3JldGFyZ2V0aW5nIHV0bV9zb3VyY2VfcmV0YXJnZXRpbmcgRGlzcGxheVNvdXJjZVVUTUNhbXBhaWduIERpc3BsYXlTb3VyY2VVVE1Tb3VyY2UiLnNwbGl0KCIgIik7CndpbmRvdy5Db29raWVzPXtnZXQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGE\/ZGVjb2RlVVJJQ29tcG9uZW50KGRvY3VtZW50LmNvb2tpZS5yZXBsYWNlKG5ldyBSZWdFeHAoIig\/Oig\/Ol58Lio7KVxccyoiK2VuY29kZVVSSUNvbXBvbmVudChhKS5yZXBsYWNlKG4sIlxcJCYiKSsiXFxzKlxcPVxccyooW147XSopLiokKXxeLiokIiksIiQxIikpfHxudWxsOm51bGx9LHNldDpmdW5jdGlvbihhLGMsYixoLGQsZixlKXtyZXR1cm4hYXx8cC50ZXN0KGEpPyExOkNvb2tpZXMuaXNDb29raWVBbGxvd2VkKGEsZnVuY3Rpb24oZyl7ZD1kP2Q6IiI7Zj1udWxsPT1mPyEwOmY7ZT1udWxsPT1lPyJOb25lIjplO0Nvb2tpZXMubG9nKGEsYyxiLGgsZCk7aWYoIWcpcmV0dXJuLTE8cS5pbmRleE9mKGEpJiZudWxsPT1Db29raWVzLmdldCgiZDJjX2Nvb2tpZV9jb25zZW50IikmJihnPXNlc3Npb25TdG9yYWdlLmdldEl0ZW0oImQyY19jb25zZW50X3dhaXQiKSxnPW51bGwhPWc\/SlNPTi5wYXJzZShhdG9iKGcpKToKe30sZ1thXT17a2V5OmEsdmFsdWU6YyxleHBpcmVzOmIscGF0aDpoLGRvbWFpbjpkfSx1dG1Db29raWVzU3RvcmFnZUpTT049SlNPTi5zdHJpbmdpZnkoZyksc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSgiZDJjX2NvbnNlbnRfd2FpdCIsYnRvYSh1dG1Db29raWVzU3RvcmFnZUpTT04pKSksQ29va2llcy5yZW1vdmUoYSxoLGQsZixlKSwhMTtkb2N1bWVudC5jb29raWU9bChhLGMsYixoLGQsZixlKTtyZXR1cm4hMH0pfSxyZW1vdmU6ZnVuY3Rpb24oYSxjLGIsaCxkKXtpZighdGhpcy5oYXMoYSkpcmV0dXJuITE7ZG9jdW1lbnQuY29va2llPWwoYSwiIiwiVGh1LCAwMSBKYW4gMTk3MCAwMDowMDowMCBHTVQiLGMsYixoLGQpO3JldHVybiEwfSxoYXM6ZnVuY3Rpb24oYSl7cmV0dXJuIWF8fHAudGVzdChhKT8hMToobmV3IFJlZ0V4cCgiKD86Xnw7XFxzKikiK2VuY29kZVVSSUNvbXBvbmVudChhKS5yZXBsYWNlKG4sIlxcJCYiKSsiXFxzKlxcPSIpKS50ZXN0KGRvY3VtZW50LmNvb2tpZSl9LAprZXlzOmZ1bmN0aW9uKCl7Zm9yKHZhciBhPWRvY3VtZW50LmNvb2tpZS5yZXBsYWNlKC8oKD86Xnxccyo7KVtePV0rKSg\/PTt8JCl8XlxzKnxccyooPzo9W147XSopPyg\/OlwxfCQpL2csIiIpLnNwbGl0KC9ccyooPzo9W147XSopPztccyovKSxjPWEubGVuZ3RoLGI9MDtiPGM7YisrKWFbYl09ZGVjb2RlVVJJQ29tcG9uZW50KGFbYl0pO3JldHVybiBhfSxjbGVhcjpmdW5jdGlvbihhLGMsYixoKXtmb3IodmFyIGQ9dGhpcy5rZXlzKCksZj1kLmxlbmd0aCxlPTA7ZTxmO2UrKyl0aGlzLnJlbW92ZUl0ZW0oZFtlXSxhLGMsYixoKX0sbG9nOmZ1bmN0aW9uKGEsYyxiLGgsZCxmKXsidW5kZWZpbmVkIj09PXR5cGVvZiBmJiYoZj01KTsidW5kZWZpbmVkIj09PXR5cGVvZiB3aW5kb3cuQ29va2llTG9nZ2VyP2YmJnNldFRpbWVvdXQoZnVuY3Rpb24oKXtDb29raWVzLmxvZyhhLGMsYixoLGQsZi0xKX0sMUUzKTp3aW5kb3cuQ29va2llTG9nZ2VyLmxvZyhhLGMsYixoLGQpfSxpc0Nvb2tpZUFsbG93ZWQ6ZnVuY3Rpb24oYSwKYyl7cmV0dXJuInVuZGVmaW5lZCI9PT10eXBlb2Ygd2luZG93LkNvb2tpZUNvbnNlbnR8fCJ1bmRlZmluZWQiPT09dHlwZW9mIHdpbmRvdy5Db29raWVDb25zZW50LmlzQ29va2llQWxsb3dlZD9jKCEwKTp3aW5kb3cuQ29va2llQ29uc2VudC5pc0Nvb2tpZUFsbG93ZWQoYSxjKX19O3dpbmRvdy5Db29raWVMb2dnZXI9e19zdGFjazpbXSxpbml0OmZ1bmN0aW9uKCl7bGV0IGE9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRlYWxlclByb3ZpbmNlQ29kZSIpO2EmJiJRQyI9PW5ldyBTdHJpbmcoYS52YWx1ZSkmJjE9PU1hdGguZmxvb3IoMypNYXRoLnJhbmRvbSgpKSYmZmV0Y2goIi9wcm94eV9yZDJjL2QyY2FwaS9sb2cvY29va2llcy9hY3RpdmUiKS50aGVuKGZ1bmN0aW9uKGMpe3JldHVybiBjLmpzb24oKX0pLnRoZW4oZnVuY3Rpb24oYyl7ImFjdGl2ZSI9PT1jLnN0YXR1cyYmQ29va2llTG9nZ2VyLndhaXRTdGFjaygpfSl9LGxvZzpmdW5jdGlvbihhLGMsYixoLGQpe2lmKCJsaXZlIj09PQp3aW5kb3cuZGVwbG95bWVudFR5cGUudG9Mb3dlckNhc2UoKSl7ZGVidWcoIkxvZ2dpbmcgY29va2llOiIse25hbWU6YSx2YWx1ZTpjfHwiIixkdXJhdGlvbjptKGIsIm51bWJlciIpLHBhdGg6aCxkb21haW46ZH0pO3ZhciBmLGUsZz0idW5kZWZpbmVkIiE9dHlwZW9mIGN1cnJlbnRTaXRlSUQ\/Y3VycmVudFNpdGVJRDpudWxsIT0oZT1udWxsPT0oZj1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2l0ZUlEIikpP3ZvaWQgMDpmLnZhbHVlKT9lOiIiO3RoaXMuX3N0YWNrLnB1c2goe25hbWU6YSxkdXJhdGlvbjptKGIsIm51bWJlciIpLHBhdGg6aHx8Ii8iLGRvbWFpbjpkfHx3aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsdXJpOndpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSxzaXRlaWQ6Zyx2YWx1ZTpidG9hKGMpfSl9fSxfc2VuZFN0YWNrOmZ1bmN0aW9uKCl7aWYoMCE9PXRoaXMuX3N0YWNrLmxlbmd0aCl7dmFyIGE9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvb2tpZUxvZ1Rva2VuIik\/CmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb29raWVMb2dUb2tlbiIpLnZhbHVlOm51bGw7aWYoYSl7dmFyIGM9InVuZGVmaW5lZCIhPXR5cGVvZiBjdXJyZW50U2l0ZUlEP2N1cnJlbnRTaXRlSUQ6ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNpdGVJRCIpP2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzaXRlSUQiKS52YWx1ZToiIjsobmV3IFdvcmtlcigiL2pzL3ZhbmlsbGFqcy9jb29raWVXb3JrZXIuanMiKSkucG9zdE1lc3NhZ2Uoe3Rva2VuOmEsc2l0ZUlEOmMsc3RhY2s6Q29va2llTG9nZ2VyLl9zdGFja30pO0Nvb2tpZUxvZ2dlci5fc3RhY2s9W119ZWxzZSBkZWJ1ZygiTm8gY29va2llIGxvZyB0b2tlbiBmb3VuZC4iKX19LHdhaXRTdGFjazpmdW5jdGlvbigpeyJsaXZlIj09PXdpbmRvdy5kZXBsb3ltZW50VHlwZS50b0xvd2VyQ2FzZSgpJiYoc2V0VGltZW91dChmdW5jdGlvbigpe0Nvb2tpZUxvZ2dlci5fc2VuZFN0YWNrKCl9LDFFNCksd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImJlZm9yZXVubG9hZCIsCmZ1bmN0aW9uKCl7Q29va2llTG9nZ2VyLl9zZW5kU3RhY2soKX0pKX19O3dpbmRvdy5Db29raWVMb2dnZXIuaW5pdCgpfSkoKTsKLyoqIC9tL2pzL2pxdWVyeS5iYXNlNjQuanMgKiovCnZhciBfX19kMmNfanF1ZXJ5YmFzZTY0anNfY19vbj0iMjAyNS0wNS0yMyAxNzowOToyNCI7J3VzZSBzdHJpY3QnO3ZhciBfX19kMmNfanF1ZXJ5YmFzZTY0anNfY19vbj0iMjAyNC0wMS0zMSAxNDozNTo0OCI7InVzZSBzdHJpY3QiO19fX2QyY19qcXVlcnliYXNlNjRqc19jX29uPSIyMDIzLTAxLTEyIDExOjM1OjU4IjsidXNlIHN0cmljdCI7X19fZDJjX2pxdWVyeWJhc2U2NGpzX2Nfb249IjIwMjMtMDEtMTIgMTA6NDU6MzkiOyJ1c2Ugc3RyaWN0IjtfX19kMmNfanF1ZXJ5YmFzZTY0anNfY19vbj0iMjAyMS0xMi0xNSAxMjo0MzozNCI7InVzZSBzdHJpY3QiOwpqUXVlcnkuYmFzZTY0PWZ1bmN0aW9uKGspe2Z1bmN0aW9uIGUoYSxjKXthPSJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvIi5pbmRleE9mKGEuY2hhckF0KGMpKTtpZigtMT09PWEpdGhyb3ciQ2Fubm90IGRlY29kZSBiYXNlNjQiO3JldHVybiBhfWZ1bmN0aW9uIGgoYSxjKXthPWEuY2hhckNvZGVBdChjKTtpZigyNTU8YSl0aHJvdyJJTlZBTElEX0NIQVJBQ1RFUl9FUlI6IERPTSBFeGNlcHRpb24gNSI7cmV0dXJuIGF9cmV0dXJue2RlY29kZTpmdW5jdGlvbihhKXt2YXIgYz0wLGIsZj1hLmxlbmd0aCxkPVtdO2E9U3RyaW5nKGEpO2lmKDA9PT1mKXJldHVybiBhO2lmKDAhPT1mJTQpdGhyb3ciQ2Fubm90IGRlY29kZSBiYXNlNjQiOyI9Ij09PWEuY2hhckF0KGYtMSkmJihjPTEsIj0iPT09YS5jaGFyQXQoZi0yKSYmKGM9MiksZi09NCk7Zm9yKGI9MDtiPGY7Yis9NCl7dmFyIGc9ZShhLGIpPDwxOHxlKGEsYisxKTw8CjEyfGUoYSxiKzIpPDw2fGUoYSxiKzMpO2QucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKGc+PjE2LGc+PjgmMjU1LGcmMjU1KSl9c3dpdGNoKGMpe2Nhc2UgMTpnPWUoYSxiKTw8MTh8ZShhLGIrMSk8PDEyfGUoYSxiKzIpPDw2O2QucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKGc+PjE2LGc+PjgmMjU1KSk7YnJlYWs7Y2FzZSAyOmc9ZShhLGIpPDwxOHxlKGEsYisxKTw8MTIsZC5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoZz4+MTYpKX1yZXR1cm4gZC5qb2luKCIiKX0sZW5jb2RlOmZ1bmN0aW9uKGEpe2lmKDEhPT1hcmd1bWVudHMubGVuZ3RoKXRocm93IlN5bnRheEVycm9yOiBleGFjdGx5IG9uZSBhcmd1bWVudCByZXF1aXJlZCI7YT1TdHJpbmcoYSk7dmFyIGMsYj1bXSxmPWEubGVuZ3RoLWEubGVuZ3RoJTM7aWYoMD09PWEubGVuZ3RoKXJldHVybiBhO2ZvcihjPTA7YzxmO2MrPTMpe3ZhciBkPWgoYSxjKTw8MTZ8aChhLGMrMSk8PDh8aChhLGMrMik7Yi5wdXNoKCJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvIi5jaGFyQXQoZD4+CjE4KSk7Yi5wdXNoKCJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvIi5jaGFyQXQoZD4+MTImNjMpKTtiLnB1c2goIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky8iLmNoYXJBdChkPj42JjYzKSk7Yi5wdXNoKCJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvIi5jaGFyQXQoZCY2MykpfXN3aXRjaChhLmxlbmd0aC1mKXtjYXNlIDE6ZD1oKGEsYyk8PDE2O2IucHVzaCgiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLyIuY2hhckF0KGQ+PjE4KSsiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLyIuY2hhckF0KGQ+PjEyJjYzKSsiPT0iKTticmVhaztjYXNlIDI6ZD0KaChhLGMpPDwxNnxoKGEsYysxKTw8OCxiLnB1c2goIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky8iLmNoYXJBdChkPj4xOCkrIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky8iLmNoYXJBdChkPj4xMiY2MykrIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky8iLmNoYXJBdChkPj42JjYzKSsiPSIpfXJldHVybiBiLmpvaW4oIiIpfSxWRVJTSU9OOiIxLjAifX0oalF1ZXJ5KTsKLyoqIC9tL2pzL2pxdWVyeS5kYXJrdG9vbHRpcC5qcyAqKi8KdmFyIF9fX2QyY19qcXVlcnlkYXJrdG9vbHRpcGpzX2Nfb249IjIwMjUtMDUtMjMgMTc6MDk6NDgiOyd1c2Ugc3RyaWN0Jzt2YXIgX19fZDJjX2pxdWVyeWRhcmt0b29sdGlwanNfY19vbj0iMjAyNC0wMy0yNSAxMjozMzowNyI7InVzZSBzdHJpY3QiOwooZnVuY3Rpb24oYil7ZnVuY3Rpb24gZShhLGMpe3RoaXMuYmVhcmVyPWE7dGhpcy5vcHRpb25zPWM7dGhpcy5oaWRlRXZlbnQ7dGhpcy5oaWRpbmc9ITE7dGhpcy5tb3VzZU92ZXJNb2RlPSJob3ZlciI9PXRoaXMub3B0aW9ucy50cmlnZ2VyfHwibW91c2VvdmVyIj09dGhpcy5vcHRpb25zLnRyaWdnZXJ8fCJvbm1vdXNlb3ZlciI9PXRoaXMub3B0aW9ucy50cmlnZ2VyfWUucHJvdG90eXBlPXtzaG93OmZ1bmN0aW9uKCl7dmFyIGE9dGhpczt0aGlzLm9wdGlvbnMubW9kYWwmJnRoaXMubW9kYWxMYXllci5jc3MoImRpc3BsYXkiLCJibG9jayIpO3RoaXMudG9vbHRpcC5jc3MoImRpc3BsYXkiLCJibG9jayIpO2EubW91c2VPdmVyTW9kZSYmKHRoaXMudG9vbHRpcC5vbigibW91c2VvdmVyIixmdW5jdGlvbigpe2NsZWFyVGltZW91dChhLmhpZGVFdmVudCk7YS5oaWRpbmc9ITF9KSx0aGlzLnRvb2x0aXAub24oIm1vdXNlb3V0IixmdW5jdGlvbigpe2NsZWFyVGltZW91dChhLmhpZGVFdmVudCk7CmEuaGlkZSgpO2EuaGlkaW5nPSExfSkpfSxoaWRlOmZ1bmN0aW9uKCl7dmFyIGE9dGhpczthLmhpZGluZ3x8KGEuaGlkaW5nPSEwLHRoaXMuaGlkZUV2ZW50PXNldFRpbWVvdXQoZnVuY3Rpb24oKXthLmhpZGluZz0hMTthLnRvb2x0aXAuaGlkZSgpfSksYS5vcHRpb25zLm1vZGFsJiYoYS5oaWRpbmc9ITEsYS5tb2RhbExheWVyLmhpZGUoKSksdGhpcy5vcHRpb25zLm9uQ2xvc2UoKSl9LHRvZ2dsZTpmdW5jdGlvbigpe3RoaXMudG9vbHRpcC5pcygiOnZpc2libGUiKT90aGlzLmhpZGUoKTp0aGlzLnNob3coKX0sYWRkQW5pbWF0aW9uOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMub3B0aW9ucy5hbmltYXRpb24pe2Nhc2UgImZhZGVJbiI6dGhpcy50b29sdGlwLmFkZENsYXNzKCJhbmltYXRlZCIpO3RoaXMudG9vbHRpcC5hZGRDbGFzcygiZmFkZUluIik7YnJlYWs7Y2FzZSAiZmxpcEluIjp0aGlzLnRvb2x0aXAuYWRkQ2xhc3MoImFuaW1hdGVkIiksdGhpcy50b29sdGlwLmFkZENsYXNzKCJmbGlwSW4iKX19LApzZXRDb250ZW50OmZ1bmN0aW9uKCl7Yih0aGlzLmJlYXJlcikuY3NzKCJjdXJzb3IiLCJwb2ludGVyIik7aWYodGhpcy5vcHRpb25zLmNvbnRlbnQpdGhpcy5jb250ZW50PXRoaXMub3B0aW9ucy5jb250ZW50O2Vsc2UgaWYodGhpcy5iZWFyZXIuYXR0cigiZGF0YS10b29sdGlwIikpdGhpcy5jb250ZW50PXRoaXMuYmVhcmVyLmF0dHIoImRhdGEtdG9vbHRpcCIpO2Vsc2UgcmV0dXJuO2lmKCIjIj09dGhpcy5jb250ZW50LmNoYXJBdCgwKSl7aWYodGhpcy5vcHRpb25zLmRlbGV0ZV9jb250ZW50KXt2YXIgYT1iKHRoaXMuY29udGVudCkuaHRtbCgpO2IodGhpcy5jb250ZW50KS5odG1sKCIiKTt0aGlzLmNvbnRlbnQ9YTtkZWxldGUgYX1lbHNlIGIodGhpcy5jb250ZW50KS5oaWRlKCksdGhpcy5jb250ZW50PWIodGhpcy5jb250ZW50KS5odG1sKCk7dGhpcy5jb250ZW50VHlwZT0iaHRtbCJ9ZWxzZSB0aGlzLmNvbnRlbnRUeXBlPSJ0ZXh0IjthPSIiIT10aGlzLmJlYXJlci5hdHRyKCJpZCIpJiYKInVuZGVmaW5lZCIhPXRoaXMuYmVhcmVyLmF0dHIoImlkIik\/ImlkPSdkYXJrdG9vbHRpcC0iK3RoaXMuYmVhcmVyLmF0dHIoImlkIikrIiciOiJpZD0nZGFya3Rvb2x0aXAtIisoRGF0ZS5ub3coKStNYXRoLmZsb29yKDFFNCpNYXRoLnJhbmRvbSgpKSkrIiciOzA9PT1iKCJJTlMuZGFya3Rvb2x0aXAtbW9kYWwtbGF5ZXIiKS5sZW5ndGgmJih0aGlzLm1vZGFsTGF5ZXI9YigiPGlucyBjbGFzcz0nZGFya3Rvb2x0aXAtbW9kYWwtbGF5ZXInPjwvaW5zPiIpKTt0aGlzLnRvb2x0aXA9YigiPGlucyAiK2ErIiBjbGFzcyA9ICdkYXJrLXRvb2x0aXAgIit0aGlzLm9wdGlvbnMudGhlbWUrIiAiK3RoaXMub3B0aW9ucy5zaXplKyIgIit0aGlzLm9wdGlvbnMuZ3Jhdml0eSsiJz48ZGl2PiIrdGhpcy5jb250ZW50KyI8L2Rpdj48ZGl2IGNsYXNzID0gJ3RpcCc+PC9kaXY+PC9pbnM+Iik7dGhpcy50aXA9dGhpcy50b29sdGlwLmZpbmQoIi50aXAiKTtiKCJib2R5IikuYXBwZW5kKHRoaXMubW9kYWxMYXllcik7CmIoImJvZHkiKS5hcHBlbmQodGhpcy50b29sdGlwKTsiaHRtbCI9PXRoaXMuY29udGVudFR5cGUmJnRoaXMudG9vbHRpcC5jc3MoIm1heC13aWR0aCIsIm5vbmUiKTt0aGlzLnRvb2x0aXAuY3NzKCJvcGFjaXR5Iix0aGlzLm9wdGlvbnMub3BhY2l0eSk7dGhpcy5hZGRBbmltYXRpb24oKTt0aGlzLm9wdGlvbnMuY29uZmlybSYmdGhpcy5hZGRDb25maXJtKCl9LHNldFBvc2l0aW9uczpmdW5jdGlvbigpe3ZhciBhPXRoaXMuYmVhcmVyLm9mZnNldCgpLmxlZnQsYz10aGlzLmJlYXJlci5vZmZzZXQoKS50b3A7c3dpdGNoKHRoaXMub3B0aW9ucy5ncmF2aXR5KXtjYXNlICJzb3V0aCI6YSs9dGhpcy5iZWFyZXIub3V0ZXJXaWR0aCgpLzItdGhpcy50b29sdGlwLm91dGVyV2lkdGgoKS8yO2MrPS10aGlzLnRvb2x0aXAub3V0ZXJIZWlnaHQoKS10aGlzLnRpcC5vdXRlckhlaWdodCgpLzI7YnJlYWs7Y2FzZSAid2VzdCI6YSs9dGhpcy5iZWFyZXIub3V0ZXJXaWR0aCgpK3RoaXMudGlwLm91dGVyV2lkdGgoKS8KMjtjKz10aGlzLmJlYXJlci5vdXRlckhlaWdodCgpLzItdGhpcy50b29sdGlwLm91dGVySGVpZ2h0KCkvMjticmVhaztjYXNlICJub3J0aCI6YSs9dGhpcy5iZWFyZXIub3V0ZXJXaWR0aCgpLzItdGhpcy50b29sdGlwLm91dGVyV2lkdGgoKS8yO2MrPXRoaXMuYmVhcmVyLm91dGVySGVpZ2h0KCkrdGhpcy50aXAub3V0ZXJIZWlnaHQoKS8yO2JyZWFrO2Nhc2UgImVhc3QiOmErPS10aGlzLnRvb2x0aXAub3V0ZXJXaWR0aCgpLXRoaXMudGlwLm91dGVyV2lkdGgoKS8yLGMrPXRoaXMuYmVhcmVyLm91dGVySGVpZ2h0KCkvMi10aGlzLnRvb2x0aXAub3V0ZXJIZWlnaHQoKS8yfXRoaXMub3B0aW9ucy5hdXRvTGVmdCYmdGhpcy50b29sdGlwLmNzcygibGVmdCIsYSk7dGhpcy5vcHRpb25zLmF1dG9Ub3AmJnRoaXMudG9vbHRpcC5jc3MoInRvcCIsYyl9LHNldEV2ZW50czpmdW5jdGlvbigpe3ZhciBhPXRoaXMsYz1hLm9wdGlvbnMuaG92ZXJEZWxheSxmO2lmKGEubW91c2VPdmVyTW9kZSl0aGlzLmJlYXJlci5vbigibW91c2VlbnRlciIsCmZ1bmN0aW9uKCl7Zj1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7YS5zZXRQb3NpdGlvbnMoKTthLnNob3coKX0sYyl9KS5vbigibW91c2VsZWF2ZSIsZnVuY3Rpb24oKXtjbGVhclRpbWVvdXQoZik7YS5oaWRlKCl9KTtlbHNlIGlmKCJjbGljayI9PXRoaXMub3B0aW9ucy50cmlnZ2VyfHwib25jbGlrIj09dGhpcy5vcHRpb25zLnRyaWdnZXIpdGhpcy50b29sdGlwLm9uKCJjbGljayIsZnVuY3Rpb24oZCl7ZC5zdG9wUHJvcGFnYXRpb24oKX0pLHRoaXMuYmVhcmVyLm9uKCJjbGljayIsZnVuY3Rpb24oZCl7ZC5wcmV2ZW50RGVmYXVsdCgpO2Euc2V0UG9zaXRpb25zKCk7YS50b2dnbGUoKTtkLnN0b3BQcm9wYWdhdGlvbigpfSksYigiaHRtbCIpLm9uKCJjbGljayIsZnVuY3Rpb24oKXthLmhpZGUoKX0pfSxhY3RpdmF0ZTpmdW5jdGlvbigpe3RoaXMuc2V0Q29udGVudCgpO3RoaXMuY29udGVudCYmdGhpcy5zZXRFdmVudHMoKX0sYWRkQ29uZmlybTpmdW5jdGlvbigpe3RoaXMudG9vbHRpcC5hcHBlbmQoIjx1bCBjbGFzcyA9ICdjb25maXJtJz48bGkgY2xhc3MgPSAnZGFya3Rvb2x0aXAteWVzJz4iKwp0aGlzLm9wdGlvbnMueWVzKyI8L2xpPjxsaSBjbGFzcyA9ICdkYXJrdG9vbHRpcC1ubyc+Iit0aGlzLm9wdGlvbnMubm8rIjwvbGk+PC91bD4iKTt0aGlzLnNldENvbmZpcm1FdmVudHMoKX0sc2V0Q29uZmlybUV2ZW50czpmdW5jdGlvbigpe3ZhciBhPXRoaXM7dGhpcy50b29sdGlwLmZpbmQoImxpLmRhcmt0b29sdGlwLXllcyIpLm9uKCJjbGljayIsZnVuY3Rpb24oYyl7YS5vblllcygpO2Muc3RvcFByb3BhZ2F0aW9uKCl9KTt0aGlzLnRvb2x0aXAuZmluZCgibGkuZGFya3Rvb2x0aXAtbm8iKS5vbigiY2xpY2siLGZ1bmN0aW9uKGMpe2Eub25ObygpO2Muc3RvcFByb3BhZ2F0aW9uKCl9KX0sZmluYWxNZXNzYWdlOmZ1bmN0aW9uKCl7aWYodGhpcy5vcHRpb25zLmZpbmFsTWVzc2FnZSl7dmFyIGE9dGhpczthLnRvb2x0aXAuZmluZCgiZGl2OmZpcnN0IikuaHRtbCh0aGlzLm9wdGlvbnMuZmluYWxNZXNzYWdlKTthLnRvb2x0aXAuZmluZCgidWwiKS5yZW1vdmUoKTthLnNldFBvc2l0aW9ucygpOwpzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7YS5oaWRlKCk7YS5zZXRDb250ZW50KCl9LGEub3B0aW9ucy5maW5hbE1lc3NhZ2VEdXJhdGlvbil9ZWxzZSB0aGlzLmhpZGUoKX0sb25ZZXM6ZnVuY3Rpb24oKXt0aGlzLm9wdGlvbnMub25ZZXModGhpcy5iZWFyZXIpO3RoaXMuZmluYWxNZXNzYWdlKCl9LG9uTm86ZnVuY3Rpb24oKXt0aGlzLm9wdGlvbnMub25Obyh0aGlzLmJlYXJlcik7dGhpcy5oaWRlKCl9fTtiLmZuLmRhcmtUb29sdGlwPWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXthPWIuZXh0ZW5kKHt9LGIuZm4uZGFya1Rvb2x0aXAuZGVmYXVsdHMsYSk7KG5ldyBlKGIodGhpcyksYSkpLmFjdGl2YXRlKCl9KX07Yi5mbi5kYXJrVG9vbHRpcC5kZWZhdWx0cz17YW5pbWF0aW9uOiJub25lIixjb25maXJtOiExLGNvbnRlbnQ6IiIsZmluYWxNZXNzYWdlOiIiLGZpbmFsTWVzc2FnZUR1cmF0aW9uOjFFMyxncmF2aXR5OiJzb3V0aCIsaG92ZXJEZWxheTowLG1vZGFsOiExLApubzoiTm8iLG9uTm86ZnVuY3Rpb24oKXt9LG9uWWVzOmZ1bmN0aW9uKCl7fSxvcGFjaXR5Oi45LHNpemU6Im1lZGl1bSIsdGhlbWU6ImRhcmsiLHRyaWdnZXI6ImhvdmVyIix5ZXM6IlllcyIsYXV0b1RvcDohMCxhdXRvTGVmdDohMCxvbkNsb3NlOmZ1bmN0aW9uKCl7fX19KShqUXVlcnkpOwovKiogL20vanMvanF1ZXJ5LnZhbGlkaXR5Lm1pbi5qcyAqKi8KKGZ1bmN0aW9uKGEpe2Z1bmN0aW9uIGIoYixjLGUpe3ZhciBmPShiLnJlZHVjdGlvbnx8YikuZmlsdGVyKGEudmFsaWRpdHkuc2V0dGluZ3MuZWxlbWVudFN1cHBvcnQpLGk9W107cmV0dXJuIDE+Yi5sZW5ndGg\/KGNvbnNvbGUubG9nKCJDb3VsZCBub3QgdmFsaWRhdGUgZWxlbWVudCIsYiksYik6KGYuZWFjaChmdW5jdGlvbigpe2ModGhpcyk\/aS5wdXNoKHRoaXMpOmQodGhpcyxnKGUse2ZpZWxkOmgodGhpcyl9KSl9KSxiLnJlZHVjdGlvbj1hKGkpLGIpfWZ1bmN0aW9uIGMoKXthLnZhbGlkaXR5LmlzVmFsaWRhdGluZygpJiYoYS52YWxpZGl0eS5yZXBvcnQuZXJyb3JzKyssYS52YWxpZGl0eS5yZXBvcnQudmFsaWQ9ITEpfWZ1bmN0aW9uIGQoYixkKXtjKCksYS52YWxpZGl0eS5vdXRwdXRzW2EudmFsaWRpdHkuc2V0dGluZ3Mub3V0cHV0TW9kZV0mJmEudmFsaWRpdHkub3V0cHV0c1thLnZhbGlkaXR5LnNldHRpbmdzLm91dHB1dE1vZGVdLnJhaXNlJiZhLnZhbGlkaXR5Lm91dHB1dHNbYS52YWxpZGl0eS5zZXR0aW5ncy5vdXRwdXRNb2RlXS5yYWlzZShhKGIpLGQpfWZ1bmN0aW9uIGUoYixkKXtjKCksYS52YWxpZGl0eS5vdXRwdXRzW2EudmFsaWRpdHkuc2V0dGluZ3Mub3V0cHV0TW9kZV0mJmEudmFsaWRpdHkub3V0cHV0c1thLnZhbGlkaXR5LnNldHRpbmdzLm91dHB1dE1vZGVdLnJhaXNlQWdncmVnYXRlJiZhLnZhbGlkaXR5Lm91dHB1dHNbYS52YWxpZGl0eS5zZXR0aW5ncy5vdXRwdXRNb2RlXS5yYWlzZUFnZ3JlZ2F0ZShiLGQpfWZ1bmN0aW9uIGYoYSl7dmFyIGI9MDtyZXR1cm4gYS5lYWNoKGZ1bmN0aW9uKCl7dmFyIGE9cGFyc2VGbG9hdCh0aGlzLnZhbHVlKTtiKz1pc05hTihhKT8wOmF9KSxifWZ1bmN0aW9uIGcoYSxiKXtmb3IodmFyIGMgaW4gYilhPWEucmVwbGFjZSgiI3siK2MrIn0iLGJbY10pO3JldHVybiBqKGEpfWZ1bmN0aW9uIGgoYil7dmFyIGM9YShiKSxkPWEudmFsaWRpdHkuc2V0dGluZ3MuZGVmYXVsdEZpZWxkTmFtZTtpZigidW5kZWZpbmVkIiE9dHlwZW9mIGMuYXR0cigidGl0bGUiKSYmYy5hdHRyKCJ0aXRsZSIpLmxlbmd0aClkPWMuYXR0cigidGl0bGUiKTtlbHNlIGlmKC9eKFtBLVowLTldW2Etel0qKSskLy50ZXN0KGIuaWQpKWQ9Yi5pZC5yZXBsYWNlKC8oW0EtWjAtOV0pW2Etel0qL2csIiAkJiIpO2Vsc2UgaWYoL15bYS16MC05X10qJC8udGVzdChiLmlkKSl7Zm9yKHZhciBlPWIuaWQuc3BsaXQoIl8iKSxmPTA7ZjxlLmxlbmd0aDsrK2YpZVtmXT1qKGVbZl0pO2Q9ZS5qb2luKCIgIil9cmV0dXJuIGR9ZnVuY3Rpb24gaihhKXtyZXR1cm4gYS5zdWJzdHJpbmc\/YS5zdWJzdHJpbmcoMCwxKS50b1VwcGVyQ2FzZSgpK2Euc3Vic3RyaW5nKDEsYS5sZW5ndGgpOmF9YS52YWxpZGl0eT17c2V0dGluZ3M6YS5leHRlbmQoe291dHB1dE1vZGU6ImxhYmVsIixjc3NDbGFzczoiZXJyb3IiLHNjcm9sbFRvOiExLG1vZGFsRXJyb3JzQ2xpY2thYmxlOiEwLGRlZmF1bHRGaWVsZE5hbWU6IlRoaXMgZmllbGQiLGVsZW1lbnRTdXBwb3J0OiI6dGV4dCwgW3R5cGU9dGVsXSwgW3R5cGU9ZW1haWxdLCBbdHlwZT1kYXRlXSwgOnBhc3N3b3JkLCB0ZXh0YXJlYSwgc2VsZWN0LCA6cmFkaW8sIDpjaGVja2JveCIsYXJnVG9TdHJpbmc6ZnVuY3Rpb24oYSl7cmV0dXJuIGEuZ2V0RGF0ZT9hLmdldE1vbnRoKCkrMSsiLyIrYS5nZXREYXRlKCkrIi8iK2EuZ2V0RnVsbFllYXIoKTphfX0se30pLHBhdHRlcm5zOntpbnRlZ2VyOi9eXGQrJC8sZGF0ZTovXigoMD9cZCl8KDFbMDEyXSkpXC8oWzAxMl0\/XGR8MzB8MzEpXC9cZHsxLDR9JC8sZW1haWw6L14oKChbYS16XXxcZHxbISNcJCUmJ1wqXCtcLVwvPVw\/XF5fYHtcfH1+XXxbXHUwMEEwLVx1RDdGRlx1RjkwMC1cdUZEQ0ZcdUZERjAtXHVGRkVGXSkrKFwuKFthLXpdfFxkfFshI1wkJSYnXCpcK1wtXC89XD9cXl9ge1x8fX5dfFtcdTAwQTAtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGRUZdKSspKil8KChceDIyKSgoKChceDIwfFx4MDkpKihceDBkXHgwYSkpPyhceDIwfFx4MDkpKyk\/KChbXHgwMS1ceDA4XHgwYlx4MGNceDBlLVx4MWZceDdmXXxceDIxfFtceDIzLVx4NWJdfFtceDVkLVx4N2VdfFtcdTAwQTAtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGRUZdKXwoXFwoW1x4MDEtXHgwOVx4MGJceDBjXHgwZC1ceDdmXXxbXHUwMEEwLVx1RDdGRlx1RjkwMC1cdUZEQ0ZcdUZERjAtXHVGRkVGXSkpKSkqKCgoXHgyMHxceDA5KSooXHgwZFx4MGEpKT8oXHgyMHxceDA5KSspPyhceDIyKSkpQCgoKFthLXpdfFxkfFtcdTAwQTAtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGRUZdKXwoKFthLXpdfFxkfFtcdTAwQTAtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGRUZdKShbYS16XXxcZHwtfFwufF98fnxbXHUwMEEwLVx1RDdGRlx1RjkwMC1cdUZEQ0ZcdUZERjAtXHVGRkVGXSkqKFthLXpdfFxkfFtcdTAwQTAtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGRUZdKSkpXC4pKygoW2Etel18W1x1MDBBMC1cdUQ3RkZcdUY5MDAtXHVGRENGXHVGREYwLVx1RkZFRl0pfCgoW2Etel18W1x1MDBBMC1cdUQ3RkZcdUY5MDAtXHVGRENGXHVGREYwLVx1RkZFRl0pKFthLXpdfFxkfC18XC58X3x+fFtcdTAwQTAtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGRUZdKSooW2Etel18W1x1MDBBMC1cdUQ3RkZcdUY5MDAtXHVGRENGXHVGREYwLVx1RkZFRl0pKSlcLj8kL2ksdXNkOi9eXCQ\/KFxkezEsM30sPyhcZHszfSw\/KSpcZHszfShcLlxkezAsMn0pP3xcZHsxLDN9KFwuXGR7MCwyfSk\/fFwuXGR7MSwyfT8pJC8sdXJsOi9eKGh0dHBzP3xmdHApOlwvXC8oKCgoW2Etel18XGR8LXxcLnxffH58W1x1MDBBMC1cdUQ3RkZcdUY5MDAtXHVGRENGXHVGREYwLVx1RkZFRl0pfCglW1xkYS1mXXsyfSl8WyFcJCYnXChcKVwqXCssOz1dfDopKkApPygoKFxkfFsxLTldXGR8MVxkXGR8MlswLTRdXGR8MjVbMC01XSlcLihcZHxbMS05XVxkfDFcZFxkfDJbMC00XVxkfDI1WzAtNV0pXC4oXGR8WzEtOV1cZHwxXGRcZHwyWzAtNF1cZHwyNVswLTVdKVwuKFxkfFsxLTldXGR8MVxkXGR8MlswLTRdXGR8MjVbMC01XSkpfCgoKFthLXpdfFxkfFtcdTAwQTAtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGRUZdKXwoKFthLXpdfFxkfFtcdTAwQTAtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGRUZdKShbYS16XXxcZHwtfFwufF98fnxbXHUwMEEwLVx1RDdGRlx1RjkwMC1cdUZEQ0ZcdUZERjAtXHVGRkVGXSkqKFthLXpdfFxkfFtcdTAwQTAtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGRUZdKSkpXC4pKygoW2Etel18W1x1MDBBMC1cdUQ3RkZcdUY5MDAtXHVGRENGXHVGREYwLVx1RkZFRl0pfCgoW2Etel18W1x1MDBBMC1cdUQ3RkZcdUY5MDAtXHVGRENGXHVGREYwLVx1RkZFRl0pKFthLXpdfFxkfC18XC58X3x+fFtcdTAwQTAtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGRUZdKSooW2Etel18W1x1MDBBMC1cdUQ3RkZcdUY5MDAtXHVGRENGXHVGREYwLVx1RkZFRl0pKSlcLj8pKDpcZCopPykoXC8oKChbYS16XXxcZHwtfFwufF98fnxbXHUwMEEwLVx1RDdGRlx1RjkwMC1cdUZEQ0ZcdUZERjAtXHVGRkVGXSl8KCVbXGRhLWZdezJ9KXxbIVwkJidcKFwpXCpcKyw7PV18OnxAKSsoXC8oKFthLXpdfFxkfC18XC58X3x+fFtcdTAwQTAtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGRUZdKXwoJVtcZGEtZl17Mn0pfFshXCQmJ1woXClcKlwrLDs9XXw6fEApKikqKT8pPyhcPygoKFthLXpdfFxkfC18XC58X3x+fFtcdTAwQTAtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGRUZdKXwoJVtcZGEtZl17Mn0pfFshXCQmJ1woXClcKlwrLDs9XXw6fEApfFtcdUUwMDAtXHVGOEZGXXxcL3xcPykqKT8oXCMoKChbYS16XXxcZHwtfFwufF98fnxbXHUwMEEwLVx1RDdGRlx1RjkwMC1cdUZEQ0ZcdUZERjAtXHVGRkVGXSl8KCVbXGRhLWZdezJ9KXxbIVwkJidcKFwpXCpcKyw7PV18OnxAKXxcL3xcPykqKT8kL2ksbnVtYmVyOi9eWystXT8oXGQrKFwuXGQqKT98XC5cZCspKFtFZV1cZCspPyQvLHppcDovXlxkezV9KC1cZHs0fSk\/JC8scGhvbmU6L15bMi05XVxkezJ9LVxkezN9LVxkezR9JC8sZ3VpZDovXihcez8oWzAtOWEtZkEtRl0pezh9LSgoWzAtOWEtZkEtRl0pezR9LSl7M30oWzAtOWEtZkEtRl0pezEyfVx9PykkLyx0aW1lMTI6L15bMDFdP1xkOlswLTVdXGQ\/XHM\/W2FBcFBdXC4\/W21NXVwuPyQvLHRpbWUyNDovXigyMHwyMXwyMnwyM3xbMDFdXGR8XGQpKChbOl1bMC01XVxkKXsxLDJ9KSQvLG5vbkh0bWw6L15bXjw+XSokL30sbWVzc2FnZXM6e2FyZWFjb2RlOiIje2ZpZWxkfSBhY2NlcHRzIG9ubHkgbG9jYWwgYXJlYSBjb2RlcyIscmVxdWlyZToiI3tmaWVsZH0gaXMgcmVxdWlyZWQuIixtYXRjaDoiI3tmaWVsZH0gaXMgaW4gYW4gaW52YWxpZCBmb3JtYXQuIixpbnRlZ2VyOiIje2ZpZWxkfSBtdXN0IGJlIGEgcG9zaXRpdmUsIHdob2xlIG51bWJlci4iLGRhdGU6IiN7ZmllbGR9IG11c3QgYmUgZm9ybWF0dGVkIGFzIGEgZGF0ZS4iLGVtYWlsOiIje2ZpZWxkfSBtdXN0IGJlIGZvcm1hdHRlZCBhcyBhbiBlbWFpbC4iLHVzZDoiI3tmaWVsZH0gbXVzdCBiZSBmb3JtYXR0ZWQgYXMgYSBVUyBEb2xsYXIgYW1vdW50LiIsdXJsOiIje2ZpZWxkfSBtdXN0IGJlIGZvcm1hdHRlZCBhcyBhIFVSTC4iLG51bWJlcjoiI3tmaWVsZH0gbXVzdCBiZSBmb3JtYXR0ZWQgYXMgYSBudW1iZXIuIix6aXA6IiN7ZmllbGR9IG11c3QgYmUgZm9ybWF0dGVkIGFzIGEgemlwY29kZSAjIyMjIyBvciAjIyMjIy0jIyMjLiIscGhvbmU6IiN7ZmllbGR9IG11c3QgYmUgZm9ybWF0dGVkIGFzIGEgcGhvbmUgbnVtYmVyICMjIy0jIyMtIyMjIy4iLGd1aWQ6IiN7ZmllbGR9IG11c3QgYmUgZm9ybWF0dGVkIGFzIGEgZ3VpZCBsaWtlIHszRjI1MDRFMC00Rjg5LTExRDMtOUEwQy0wMzA1RTgyQzMzMDF9LiIsdGltZTI0OiIje2ZpZWxkfSBtdXN0IGJlIGZvcm1hdHRlZCBhcyBhIDI0IGhvdXIgdGltZTogMjM6MDAuIix0aW1lMTI6IiN7ZmllbGR9IG11c3QgYmUgZm9ybWF0dGVkIGFzIGEgMTIgaG91ciB0aW1lOiAxMjowMCBBTS9QTSIsbGVzc1RoYW46IiN7ZmllbGR9IG11c3QgYmUgbGVzcyB0aGFuICN7bWF4fS4iLGxlc3NUaGFuT3JFcXVhbFRvOiIje2ZpZWxkfSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAje21heH0uIixncmVhdGVyVGhhbjoiI3tmaWVsZH0gbXVzdCBiZSBncmVhdGVyIHRoYW4gI3ttaW59LiIsZ3JlYXRlclRoYW5PckVxdWFsVG86IiN7ZmllbGR9IG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICN7bWlufS4iLHJhbmdlOiIje2ZpZWxkfSBtdXN0IGJlIGJldHdlZW4gI3ttaW59IGFuZCAje21heH0uIix0b29Mb25nOiIje2ZpZWxkfSBjYW5ub3QgYmUgbG9uZ2VyIHRoYW4gI3ttYXh9IGNoYXJhY3RlcnMuIix0b29TaG9ydDoiI3tmaWVsZH0gY2Fubm90IGJlIHNob3J0ZXIgdGhhbiAje21pbn0gY2hhcmFjdGVycy4iLG5vbkh0bWw6IiN7ZmllbGR9IGNhbm5vdCBjb250YWluIEhUTUwgY2hhcmFjdGVycy4iLGFscGhhYmV0OiIje2ZpZWxkfSBjb250YWlucyBkaXNhbGxvd2VkIGNoYXJhY3RlcnMuIixtaW5DaGFyQ2xhc3M6IiN7ZmllbGR9IGNhbm5vdCBoYXZlIG1vcmUgdGhhbiAje21pbn0gI3tjaGFyQ2xhc3N9IGNoYXJhY3RlcnMuIixtYXhDaGFyQ2xhc3M6IiN7ZmllbGR9IGNhbm5vdCBoYXZlIGxlc3MgdGhhbiAje21pbn0gI3tjaGFyQ2xhc3N9IGNoYXJhY3RlcnMuIixlcXVhbDoiVmFsdWVzIGRvbid0IG1hdGNoLiIsZGlzdGluY3Q6IkEgdmFsdWUgd2FzIHJlcGVhdGVkLiIsc3VtOiJWYWx1ZXMgZG9uJ3QgYWRkIHRvICN7c3VtfS4iLHN1bU1heDoiVGhlIHN1bSBvZiB0aGUgdmFsdWVzIG11c3QgYmUgbGVzcyB0aGFuICN7bWF4fS4iLHN1bU1pbjoiVGhlIHN1bSBvZiB0aGUgdmFsdWVzIG11c3QgYmUgZ3JlYXRlciB0aGFuICN7bWlufS4iLHJhZGlvQ2hlY2tlZDoiVGhlIHNlbGVjdGVkIHZhbHVlIGlzIG5vdCB2YWxpZC4iLGdlbmVyaWM6IkludmFsaWQuIn0sY2hhckNsYXNzZXM6e2FscGhhYmV0aWNhbDovXHcvZyxudW1lcmljOi9cZC9nLGFscGhhbnVtZXJpYzovW0EtWmEtejAtOV0vZyxzeW1ib2w6L1teQS1aYS16MC05XS9nfSxvdXRwdXRzOnt9LHNldHVwOmZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLnNldHRpbmdzPWEuZXh0ZW5kKHRoaXMuc2V0dGluZ3MsYiksdGhpc30scmVwb3J0Om51bGwsaXNWYWxpZGF0aW5nOmZ1bmN0aW9uKCl7cmV0dXJuISF0aGlzLnJlcG9ydH0sc3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLm91dHB1dHNbdGhpcy5zZXR0aW5ncy5vdXRwdXRNb2RlXSYmdGhpcy5vdXRwdXRzW3RoaXMuc2V0dGluZ3Mub3V0cHV0TW9kZV0uc3RhcnQmJnRoaXMub3V0cHV0c1t0aGlzLnNldHRpbmdzLm91dHB1dE1vZGVdLnN0YXJ0KCksdGhpcy5yZXBvcnQ9e2Vycm9yczowLHZhbGlkOiEwfX0sZW5kOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5yZXBvcnR8fHtlcnJvcnM6MCx2YWxpZDohMH07cmV0dXJuIHRoaXMucmVwb3J0PW51bGwsdGhpcy5vdXRwdXRzW3RoaXMuc2V0dGluZ3Mub3V0cHV0TW9kZV0mJnRoaXMub3V0cHV0c1t0aGlzLnNldHRpbmdzLm91dHB1dE1vZGVdLmVuZCYmdGhpcy5vdXRwdXRzW3RoaXMuc2V0dGluZ3Mub3V0cHV0TW9kZV0uZW5kKGEpLGF9LGNsZWFyOmZ1bmN0aW9uKCl7dGhpcy5zdGFydCgpLHRoaXMuZW5kKCl9fSxhLmZuLmV4dGVuZCh7dmFsaWRpdHk6ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2lmKCJmb3JtIj09dGhpcy50YWdOYW1lLnRvTG93ZXJDYXNlKCkpe3ZhciBjPW51bGw7InN0cmluZyI9PXR5cGVvZiBiP2M9ZnVuY3Rpb24oKXthKGIpLnJlcXVpcmUoKX06aXNGdW5jdGlvbihiKSYmKGM9YiksYiYmYSh0aGlzKS5vbigic3VibWl0IixmdW5jdGlvbigpe3JldHVybiBhLnZhbGlkaXR5LnN0YXJ0KCksYygpLGEudmFsaWRpdHkuZW5kKCkudmFsaWR9KX19KX0scmVxdWlyZTpmdW5jdGlvbihjKXtyZXR1cm4gYih0aGlzLGZ1bmN0aW9uKGIpe3ZhciBjPWEoYikudmFsKCksZD10cmltKGMpLmxlbmd0aDtyZXR1cm4gZH0sY3x8YS52YWxpZGl0eS5tZXNzYWdlcy5yZXF1aXJlKX0sbWF0Y2g6ZnVuY3Rpb24oYyxkKXtyZXR1cm4gZHx8KGQ9YS52YWxpZGl0eS5tZXNzYWdlcy5tYXRjaCwic3RyaW5nIj09dHlwZW9mIGMmJmEudmFsaWRpdHkubWVzc2FnZXNbY10mJihkPWEudmFsaWRpdHkubWVzc2FnZXNbY10pKSwic3RyaW5nIj09dHlwZW9mIGMmJihjPWEudmFsaWRpdHkucGF0dGVybnNbY10pLGIodGhpcyxpc0Z1bmN0aW9uKGMpP2Z1bmN0aW9uKGEpe3JldHVybiFhLnZhbHVlLmxlbmd0aHx8YyhhLnZhbHVlKX06ZnVuY3Rpb24oYSl7cmV0dXJuIGMuZ2xvYmFsJiYoYy5sYXN0SW5kZXg9MCksIWEudmFsdWUubGVuZ3RofHxjLnRlc3QoYS52YWx1ZSl9LGQpfSxyYW5nZTpmdW5jdGlvbihjLGUsZil7cmV0dXJuIGIodGhpcyxjLmdldFRpbWUmJmUuZ2V0VGltZT9mdW5jdGlvbihhKXt2YXIgYj1uZXcgRGF0ZShhLnZhbHVlKTtyZXR1cm4gYj49bmV3IERhdGUoYykmJmI8PW5ldyBEYXRlKGUpfTpjLnN1YnN0cmluZyYmZS5zdWJzdHJpbmcmJkJpZz9mdW5jdGlvbihhKXt2YXIgYj1uZXcgQmlnKGEudmFsdWUpO3JldHVybiBiLmdyZWF0ZXJUaGFuT3JFcXVhbFRvKG5ldyBCaWcoYykpJiZiLmxlc3NUaGFuT3JFcXVhbFRvKG5ldyBCaWcoZSkpfTpmdW5jdGlvbihhKXt2YXIgYj1wYXJzZUZsb2F0KGEudmFsdWUpO3JldHVybiBiPj1jJiZiPD1lfSxmfHxnKGEudmFsaWRpdHkubWVzc2FnZXMucmFuZ2Use21pbjphLnZhbGlkaXR5LnNldHRpbmdzLmFyZ1RvU3RyaW5nKGMpLG1heDphLnZhbGlkaXR5LnNldHRpbmdzLmFyZ1RvU3RyaW5nKGUpfSkpfSxncmVhdGVyVGhhbjpmdW5jdGlvbihjLGQpe3JldHVybiBiKHRoaXMsYy5nZXRUaW1lP2Z1bmN0aW9uKGEpe3JldHVybiBuZXcgRGF0ZShhLnZhbHVlKT5jfTpjLnN1YnN0cmluZyYmQmlnP2Z1bmN0aW9uKGEpe3JldHVybiBuZXcgQmlnKGEudmFsdWUpLmdyZWF0ZXJUaGFuKG5ldyBCaWcoYykpfTpmdW5jdGlvbihhKXtyZXR1cm4gcGFyc2VGbG9hdChhLnZhbHVlKT5jfSxkfHxnKGEudmFsaWRpdHkubWVzc2FnZXMuZ3JlYXRlclRoYW4se21pbjphLnZhbGlkaXR5LnNldHRpbmdzLmFyZ1RvU3RyaW5nKGMpfSkpfSxncmVhdGVyVGhhbk9yRXF1YWxUbzpmdW5jdGlvbihjLGQpe3JldHVybiBiKHRoaXMsYy5nZXRUaW1lP2Z1bmN0aW9uKGEpe3JldHVybiBuZXcgRGF0ZShhLnZhbHVlKT49Y306Yy5zdWJzdHJpbmcmJkJpZz9mdW5jdGlvbihhKXtyZXR1cm4gbmV3IEJpZyhhLnZhbHVlKS5ncmVhdGVyVGhhbk9yRXF1YWxUbyhuZXcgQmlnKGMpKX06ZnVuY3Rpb24oYSl7cmV0dXJuIHBhcnNlRmxvYXQoYS52YWx1ZSk+PWN9LGR8fGcoYS52YWxpZGl0eS5tZXNzYWdlcy5ncmVhdGVyVGhhbk9yRXF1YWxUbyx7bWluOmEudmFsaWRpdHkuc2V0dGluZ3MuYXJnVG9TdHJpbmcoYyl9KSl9LGxlc3NUaGFuOmZ1bmN0aW9uKGMsZCl7cmV0dXJuIGIodGhpcyxjLmdldFRpbWU\/ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyBEYXRlKGEudmFsdWUpPGN9OmMuc3Vic3RyaW5nJiZCaWc\/ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyBCaWcoYS52YWx1ZSkubGVzc1RoYW4obmV3IEJpZyhjKSl9OmZ1bmN0aW9uKGEpe3JldHVybiBwYXJzZUZsb2F0KGEudmFsdWUpPGN9LGR8fGcoYS52YWxpZGl0eS5tZXNzYWdlcy5sZXNzVGhhbix7bWF4OmEudmFsaWRpdHkuc2V0dGluZ3MuYXJnVG9TdHJpbmcoYyl9KSl9LGxlc3NUaGFuT3JFcXVhbFRvOmZ1bmN0aW9uKGMsZCl7cmV0dXJuIGIodGhpcyxjLmdldFRpbWU\/ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyBEYXRlKGEudmFsdWUpPD1jfTpjLnN1YnN0cmluZyYmQmlnP2Z1bmN0aW9uKGEpe3JldHVybiBuZXcgQmlnKGEudmFsdWUpLmxlc3NUaGFuT3JFcXVhbFRvKG5ldyBCaWcoYykpfTpmdW5jdGlvbihhKXtyZXR1cm4gcGFyc2VGbG9hdChhLnZhbHVlKTw9Y30sZHx8ZyhhLnZhbGlkaXR5Lm1lc3NhZ2VzLmxlc3NUaGFuT3JFcXVhbFRvLHttYXg6YS52YWxpZGl0eS5zZXR0aW5ncy5hcmdUb1N0cmluZyhjKX0pKX0sbWF4TGVuZ3RoOmZ1bmN0aW9uKGMsZCl7cmV0dXJuIGIodGhpcyxmdW5jdGlvbihhKXtyZXR1cm4gYS52YWx1ZS5sZW5ndGg8PWN9LGR8fGcoYS52YWxpZGl0eS5tZXNzYWdlcy50b29Mb25nLHttYXg6Y30pKX0sbWluTGVuZ3RoOmZ1bmN0aW9uKGMsZCl7cmV0dXJuIGIodGhpcyxmdW5jdGlvbihhKXtyZXR1cm4gYS52YWx1ZS5sZW5ndGg+PWN9LGR8fGcoYS52YWxpZGl0eS5tZXNzYWdlcy50b29TaG9ydCx7bWluOmN9KSl9LGFscGhhYmV0OmZ1bmN0aW9uKGMsZCl7dmFyIGU9W107cmV0dXJuIGIodGhpcyxmdW5jdGlvbihhKXtmb3IodmFyIGI9MDtiPGEudmFsdWUubGVuZ3RoOysrYilpZigtMT09Yy5pbmRleE9mKGEudmFsdWUuY2hhckF0KGIpKSlyZXR1cm4gZS5wdXNoKGEudmFsdWUuY2hhckF0KGIpKSwhMTtyZXR1cm4hMH0sZHx8ZyhhLnZhbGlkaXR5Lm1lc3NhZ2VzLmFscGhhYmV0LHtjaGFyczplLmpvaW4oIiwgIil9KSl9LG1pbkNoYXJDbGFzczpmdW5jdGlvbihjLGQsZSl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBjJiYoYz1jLnRvTG93ZXJDYXNlKCksYS52YWxpZGl0eS5jaGFyQ2xhc3Nlc1tjXSYmKGM9YS52YWxpZGl0eS5jaGFyQ2xhc3Nlc1tjXSkpLGIodGhpcyxmdW5jdGlvbihhKXtyZXR1cm4oYS52YWx1ZS5tYXRjaChjKXx8W10pLmxlbmd0aD49ZH0sZXx8ZyhhLnZhbGlkaXR5Lm1lc3NhZ2VzLm1pbkNoYXJDbGFzcyx7bWluOmQsY2hhckNsYXNzOmN9KSl9LG1heENoYXJDbGFzczpmdW5jdGlvbihjLGQsZSl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBjJiYoYz1jLnRvTG93ZXJDYXNlKCksYS52YWxpZGl0eS5jaGFyQ2xhc3Nlc1tjXSYmKGM9YS52YWxpZGl0eS5jaGFyQ2xhc3Nlc1tjXSkpLGIodGhpcyxmdW5jdGlvbihhKXtyZXR1cm4oYS52YWx1ZS5tYXRjaChjKXx8W10pLmxlbmd0aDw9ZH0sZXx8ZyhhLnZhbGlkaXR5Lm1lc3NhZ2VzLm1heENoYXJDbGFzcyx7bWF4OmQsY2hhckNsYXNzOmN9KSl9LHBhc3N3b3JkOmZ1bmN0aW9uKGIpe3JldHVybiBiPWEuZXh0ZW5kKHthbHBoYWJldDpudWxsLG1pbkxlbmd0aDowLG1heExlbmd0aDowLG1pblN5bWJvbDowLG1pbkFscGhhYmV0aWNhbDowLG1pbk51bWVyaWM6MCxtaW5BbHBoYU51bWVyaWM6MH0sYiksYi5hbHBoYWJldCYmdGhpcy5hbHBoYWJldChiLmFscGhhYmV0KSxiLm1pbkxlbmd0aCYmdGhpcy5taW5MZW5ndGgoYi5taW5MZW5ndGgpLGIubWF4TGVuZ3RoJiZ0aGlzLm1heExlbmd0aChiLm1heExlbmd0aCksYi5taW5TeW1ib2wmJnRoaXMubWluQ2hhckNsYXNzKCJzeW1ib2wiLGIubWluU3ltYm9sKSxiLm1pbkFscGhhYmV0aWNhbCYmdGhpcy5taW5DaGFyQ2xhc3MoImFscGhhYmV0aWNhbCIsYi5taW5BbHBoYWJldGljYWwpLGIubWluTnVtZXJpYyYmdGhpcy5taW5DaGFyQ2xhc3MoIm51bWVyaWMiLGIubWluTnVtZXJpYyksYi5taW5BbHBoYW51bWVyaWMmJnRoaXMubWluQ2hhckNsYXNzKCJhbHBoYW51bWVyaWMiLGIubWluQWxwaGFudW1lcmljKSx0aGlzfSxub25IdG1sOmZ1bmN0aW9uKGMpe3JldHVybiBiKHRoaXMsZnVuY3Rpb24oYil7cmV0dXJuIGEudmFsaWRpdHkucGF0dGVybnMubm9uSHRtbC50ZXN0KGIudmFsdWUpfSxjfHxhLnZhbGlkaXR5Lm1lc3NhZ2VzLm5vbkh0bWwpfSxlcXVhbDpmdW5jdGlvbihiLGMpe3ZhciBkPSh0aGlzLnJlZHVjdGlvbnx8dGhpcykuZmlsdGVyKGEudmFsaWRpdHkuc2V0dGluZ3MuZWxlbWVudFN1cHBvcnQpLGY9ZnVuY3Rpb24oYSl7cmV0dXJuIGF9LGc9YS52YWxpZGl0eS5tZXNzYWdlcy5lcXVhbDtpZihkLmxlbmd0aCl7aXNGdW5jdGlvbihiKT8oZj1iLCJzdHJpbmciPT10eXBlb2YgYyYmKGc9YykpOiJzdHJpbmciPT10eXBlb2YgYiYmKGc9Yik7dmFyIGg9YS5tYXAoZCxmdW5jdGlvbihhKXtyZXR1cm4gZihhLnZhbHVlKX0pLGo9aFswXSxrPSEwO2Zvcih2YXIgbCBpbiBoKWhbbF0hPWomJihrPSExKTtrfHwoZShkLGcpLHRoaXMucmVkdWN0aW9uPWEoW10pKX1yZXR1cm4gdGhpc30sZGlzdGluY3Q6ZnVuY3Rpb24oYixjKXt2YXIgZD0odGhpcy5yZWR1Y3Rpb258fHRoaXMpLmZpbHRlcihhLnZhbGlkaXR5LnNldHRpbmdzLmVsZW1lbnRTdXBwb3J0KSxmPWZ1bmN0aW9uKGEpe3JldHVybiBhfSxnPWEudmFsaWRpdHkubWVzc2FnZXMuZGlzdGluY3QsaD1bXSxpPSEwO2lmKGQubGVuZ3RoKXtpc0Z1bmN0aW9uKGIpPyhmPWIsInN0cmluZyI9PXR5cGVvZiBjJiYoZz1jKSk6InN0cmluZyI9PXR5cGVvZiBiJiYoZz1iKTtmb3IodmFyIGo9YS5tYXAoZCxmdW5jdGlvbihhKXtyZXR1cm4gZihhLnZhbHVlKX0pLGs9MDtrPGoubGVuZ3RoOysraylpZihqW2tdLmxlbmd0aCl7Zm9yKHZhciBsPTA7bDxoLmxlbmd0aDsrK2wpaFtsXT09altrXSYmKGk9ITEpO2gucHVzaChqW2tdKX1pfHwoZShkLGcpLHRoaXMucmVkdWN0aW9uPWEoW10pKX1yZXR1cm4gdGhpc30sc3VtOmZ1bmN0aW9uKGIsYyl7dmFyIGQ9KHRoaXMucmVkdWN0aW9ufHx0aGlzKS5maWx0ZXIoYS52YWxpZGl0eS5zZXR0aW5ncy5lbGVtZW50U3VwcG9ydCk7cmV0dXJuIGQubGVuZ3RoJiZiIT1mKGQpJiYoZShkLGN8fGcoYS52YWxpZGl0eS5tZXNzYWdlcy5zdW0se3N1bTpifSkpLHRoaXMucmVkdWN0aW9uPWEoW10pKSx0aGlzfSxzdW1NYXg6ZnVuY3Rpb24oYixjKXt2YXIgZD0odGhpcy5yZWR1Y3Rpb258fHRoaXMpLmZpbHRlcihhLnZhbGlkaXR5LnNldHRpbmdzLmVsZW1lbnRTdXBwb3J0KTtyZXR1cm4gZC5sZW5ndGgmJmI8ZihkKSYmKGUoZCxjfHxnKGEudmFsaWRpdHkubWVzc2FnZXMuc3VtTWF4LHttYXg6Yn0pKSx0aGlzLnJlZHVjdGlvbj1hKFtdKSksdGhpc30sc3VtTWluOmZ1bmN0aW9uKGIsYyl7dmFyIGQ9KHRoaXMucmVkdWN0aW9ufHx0aGlzKS5maWx0ZXIoYS52YWxpZGl0eS5zZXR0aW5ncy5lbGVtZW50U3VwcG9ydCk7cmV0dXJuIGQubGVuZ3RoJiZiPGYoZCkmJihlKGQsY3x8ZyhhLnZhbGlkaXR5Lm1lc3NhZ2VzLnN1bU1pbix7bWluOmJ9KSksdGhpcy5yZWR1Y3Rpb249YShbXSkpLHRoaXN9LHJhZGlvQ2hlY2tlZDpmdW5jdGlvbihiLGMpe3ZhciBkPSh0aGlzLnJlZHVjdGlvbnx8dGhpcykuZmlsdGVyKGEudmFsaWRpdHkuc2V0dGluZ3MuZWxlbWVudFN1cHBvcnQpO2QuaXMoIjpyYWRpbyIpJiZkLmZpbmQoIjpjaGVja2VkIikudmFsKCkhPWImJmUoZCxjfHxhLnZhbGlkaXR5Lm1lc3NhZ2VzLnJhZGlvQ2hlY2tlZCl9LHJhZGlvTm90Q2hlY2tlZDpmdW5jdGlvbihiLGMpe3ZhciBkPSh0aGlzLnJlZHVjdGlvbnx8dGhpcykuZmlsdGVyKGEudmFsaWRpdHkuc2V0dGluZ3MuZWxlbWVudFN1cHBvcnQpO2QuaXMoIjpyYWRpbyIpJiZkLmZpbHRlcigiOmNoZWNrZWQiKS52YWwoKT09YiYmZShkLGN8fGEudmFsaWRpdHkubWVzc2FnZXMucmFkaW9DaGVja2VkKX0sY2hlY2tib3hDaGVja2VkOmZ1bmN0aW9uKGIpe3ZhciBjPSh0aGlzLnJlZHVjdGlvbnx8dGhpcykuZmlsdGVyKGEudmFsaWRpdHkuc2V0dGluZ3MuZWxlbWVudFN1cHBvcnQpO2MuaXMoIjpjaGVja2JveCIpJiYhYy5pcygiOmNoZWNrZWQiKSYmKGUoYyxifHxhLnZhbGlkaXR5Lm1lc3NhZ2VzLnJhZGlvQ2hlY2tlZCksYy5wYXJlbnQoKS5hZGRDbGFzcygidmFsaWRpdHktZXJyb25lb3VzIikpfSxhc3NlcnQ6ZnVuY3Rpb24oYyxkKXt2YXIgZj10aGlzLnJlZHVjdGlvbnx8dGhpcztpZihmLmxlbmd0aCl7aWYoaXNGdW5jdGlvbihjKSlyZXR1cm4gYih0aGlzLGMsZHx8YS52YWxpZGl0eS5tZXNzYWdlcy5nZW5lcmljKTtjfHwoZShmLGR8fGEudmFsaWRpdHkubWVzc2FnZXMuZ2VuZXJpYyksdGhpcy5yZWR1Y3Rpb249YShbXSkpfXJldHVybiB0aGlzfX0pLGEuZm4uZXh0ZW5kKHt2YWxpZEFsbG9yTm9uZTpmdW5jdGlvbigpe3ZhciBiPSh0aGlzLnJlZHVjdGlvbnx8dGhpcykuZmlsdGVyKGEudmFsaWRpdHkuc2V0dGluZ3MuZWxlbWVudFN1cHBvcnQpLGM9ITA7cmV0dXJuIGIuZWFjaChmdW5jdGlvbigpe2lmKCIiIT1hKHRoaXMpLnZhbCgpKXJldHVybiBiLmVhY2goZnVuY3Rpb24oKXsiIj09YSh0aGlzKS52YWwoKSYmKGM9ITEsZCh0aGlzLGcoIiIse2ZpZWxkOmgodGhpcyl9KSkpfSksITF9KSx0aGlzfSxyZXF1aXJlV2l0aFdhdGVybWFyazpmdW5jdGlvbihjKXtyZXR1cm4gYih0aGlzLGZ1bmN0aW9uKGIpe3ZhciBjPWZ1bmN0aW9uKGEpe3JldHVybiAwPGEudHJpbSgpLmxlbmd0aH0sZD1hKGIpLmF0dHIoImFsdCIpLGU9YShiKS52YWwoKS50cmltKCk7cmV0dXJuIGQ\/ZCE9ZSYmYyhlKTpjKGUpfSxjfHxhLnZhbGlkaXR5Lm1lc3NhZ2VzLnJlcXVpcmUpfSxyZXF1aXJlUG9zdGFsQ29kZTpmdW5jdGlvbihjKXtyZXR1cm4gYih0aGlzLGZ1bmN0aW9uKGIpe3ZhciBjPWEoYikudmFsKCkucmVwbGFjZSgvXHMvZywiIikucmVwbGFjZSgvW15BLXowLTldL2csIjAiKS50b1VwcGVyQ2FzZSgpO2lmKDA9PWMubGVuZ3RoKXJldHVybiEwO2lmKDU+Yy5sZW5ndGgpcmV0dXJuITE7aWYoWmlwUmVnZXg9YS52YWxpZGl0eS5wYXR0ZXJucy56aXAsbnVsbCE9Yy5tYXRjaChaaXBSZWdleCkpcmV0dXJuITA7cmV0dXJuIENhbmFkYVBvc3RSZWdleD0vW0FCQ0VHSEpLTE1OUFJTVFZXWFlaXVswLTldW0FCQ0VHSEpLTE1OUFJTVFZXWFlaXVswLTldW0FCQ0VHSEpLTE1OUFJTVFZXWFlaXVswLTldLyxudWxsIT1jLm1hdGNoKENhbmFkYVBvc3RSZWdleCkmJihhKGIpLnZhbChjLnN1YnN0cmluZygwLDMpKyIgIitjLnN1YnN0cmluZygzLDYpKSwhMCl9LGN8fGEudmFsaWRpdHkubWVzc2FnZXMucmVxdWlyZSl9LHZhbGlkRW1haWxBZGRyZXNzOmZ1bmN0aW9uKGMpe3ZhciBkPXRoaXMsZT1bIi5jb20iLCIuY2EiLCIubmV0IiwiLmJpeiIsIi5xdWViZWMiLCIuY28iLCIuaW5mbyIsIi5tb2JpIiwiLm9yZyIsIi5pbmMiXTsxPT1hKCIjQURNSU5fR0VORVJBTF9CTE9DS19GUl9ET01BSU5fQ0hFQ0siKS5sZW5ndGgmJiIxIiE9YSgiI0FETUlOX0dFTkVSQUxfQkxPQ0tfRlJfRE9NQUlOX0NIRUNLIikudmFsKCkmJmUucHVzaCgiLmZyIik7dmFyIGY9Yih0aGlzLGZ1bmN0aW9uKGIpe3JldHVybiBydWxlPWEudmFsaWRpdHkucGF0dGVybnMuZW1haWwscnVsZS5nbG9iYWwmJihydWxlLmxhc3RJbmRleD0wKSwhYi52YWx1ZS5sZW5ndGh8fHJ1bGUudGVzdChiLnZhbHVlKX0sIiIpO3JldHVybiBmP2IodGhpcyxmdW5jdGlvbihiKXt2YXIgYz1hKGIpLnZhbCgpLnRvTG93ZXJDYXNlKCksZD0hMTtpZighYy5sZW5ndGgpcmV0dXJuITA7U3RyaW5nLnByb3RvdHlwZS5lbmRzV2l0aHx8KFN0cmluZy5wcm90b3R5cGUuZW5kc1dpdGg9ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5sZW5ndGgtYS5sZW5ndGg7cmV0dXJuIDA8PWImJnRoaXMubGFzdEluZGV4T2YoYSk9PT1ifSk7Zm9yKHZhciBmPTA7ZjxlLmxlbmd0aDtmKyspYy50b0xvd2VyQ2FzZSgpLmVuZHNXaXRoKGVbZl0pJiYoZD0hMCk7aWYoITE9PWQpcmV0dXJuITE7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBlbWFpbEhhbmRsZXIpe3ZhciBnPSEwO3JldHVybiBlbWFpbEhhbmRsZXIudmFsaWRhdGVFbWFpbChjKS5kb25lKGZ1bmN0aW9uKGEpeyJpbnZhbGlkIj09PWEuc3RhdHVzJiYoZz0hMSl9KSxnfXJldHVybiEwfSxjfHxhLnZhbGlkaXR5Lm1lc3NhZ2VzLmVtYWlsKTpjfHxhLnZhbGlkaXR5Lm1lc3NhZ2VzLmVtYWlsfSxyYWRpb09wdGlvbkNob3NlbjpmdW5jdGlvbihiKXt2YXIgYz0odGhpcy5yZWR1Y3Rpb258fHRoaXMpLmZpbHRlcihhLnZhbGlkaXR5LnNldHRpbmdzLmVsZW1lbnRTdXBwb3J0KSxkPXt9O2Zvcih2YXIgZiBpbiBjLmVhY2goZnVuY3Rpb24oKXt2YXIgYj1hKHRoaXMpLmF0dHIoIm5hbWUiKTsidW5kZWZpbmVkIj09dHlwZW9mIGRbYl0mJihkW2JdPVtdKSxkW2JdLnB1c2godGhpcyl9KSxkKTA9PWEoZFtmXSkuZmlsdGVyKCI6cmFkaW8iKS5maWx0ZXIoIjpjaGVja2VkIikubGVuZ3RoJiZlKGEoZFtmXSksYnx8YS52YWxpZGl0eS5tZXNzYWdlcy5yYWRpb0NoZWNrZWQpfSxvbmVPck1vcmVDaGVja2VkOmZ1bmN0aW9uKGIpe3ZhciBjPSh0aGlzLnJlZHVjdGlvbnx8dGhpcykuZmlsdGVyKGEudmFsaWRpdHkuc2V0dGluZ3MuZWxlbWVudFN1cHBvcnQpO2MuZWFjaChmdW5jdGlvbigpe3ZhciBkPWMuZmlsdGVyKGZ1bmN0aW9uKCl7cmV0dXJuISFhKHRoaXMpLmlzKCJbdHlwZT1jaGVja2JveF06Y2hlY2tlZCIpfSkubGVuZ3RoOzA9PWQmJihjLnBhcmVudHMoInVsIikuZmlyc3QoKS5hZGRDbGFzcygidmFsaWRpdHktZXJyb25lb3VzIiksZShjLGJ8fGEudmFsaWRpdHkubWVzc2FnZXMucmFkaW9DaGVja2VkKSl9KX0sdmFsaWRhdGVNb2JpbGU6ZnVuY3Rpb24oYyl7Zm9yKHZhciBkPSh0aGlzLnJlZHVjdGlvbnx8dGhpcykuZmlsdGVyKGEudmFsaWRpdHkuc2V0dGluZ3MuZWxlbWVudFN1cHBvcnQpLGU9ITAsZj0iIixnPWEoZCkubGVuZ3RoLGg9WzQzOCw1MTQsMjYzLDQ1MCw1NzksODE5LDI0OSw3MDUsMjI2LDUxOSwyODksMzY1LDkwNSw0MTYsNDM3LDY0NywzNDMsNjEzLDcwOSw4NzMsNDE4LDU4MSw1MDYsOTAyXSxqPTA7ajw9ZztqKyspaWYoajxnKWYrPWEoYShkKVtqXSkudmFsKCk7ZWxzZXtpZihmPWYucmVwbGFjZSgvW14wLTldKy9naSwiIiksMD09PWYubGVuZ3RoKXJldHVybiBiKGQsKCk9PiEwLGN8fGEudmFsaWRpdHkubWVzc2FnZXMucGhvbmUpOyIxIj09ZlswXSYmKGY9Zi5zdWJzdHJpbmcoMSkpO3ZhciBrPXBhcnNlSW50KGYuc3Vic3RyaW5nKDAsMykpO2EuYWpheCh7dXJsOiJodHRwczovL3Jlc3QuZDJjbWVkaWEuY2Evc2l0ZXMvc3ZjL3ZhbGlkYXRlUGhvbmVOdW1iZXIucGhwIix0eXBlOiJHRVQiLGFzeW5jOiExLHRpbWVvdXQ6MmUzLGRhdGFUeXBlOiJqc29uIixkYXRhOntwaG9uZTpmLG1vYmlsZToxLGFyZWFjb2RlOiJDQSJ9fSkuZG9uZShmdW5jdGlvbihmKXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIGYuaXNPaykhMT09PWYucGhvbmVOdW1iZXJJc1ZhbGlkJiYoZT0hMSk7ZWxzZSBpZigidW5kZWZpbmVkIiE9dHlwZW9mIGguaW5kZXhPZiYmLTE9PWguaW5kZXhPZihrKSlyZXR1cm4hMTtyZXR1cm4gYihkLGZ1bmN0aW9uKCl7cmV0dXJuIGV9LGN8fGEudmFsaWRpdHkubWVzc2FnZXMucGhvbmUpfSkuZmFpbChmdW5jdGlvbigpe3JldHVybiJ1bmRlZmluZWQiIT10eXBlb2YgaC5pbmRleE9mJiYtMT09aC5pbmRleE9mKGspJiYoZT0hMSksYihkLGZ1bmN0aW9uKCl7cmV0dXJuIGV9LGN8fGEudmFsaWRpdHkubWVzc2FnZXMucGhvbmUpfSl9fSx2YWxpZGF0ZVBob25lOmZ1bmN0aW9uKGMpe2Zvcih2YXIgZD0odGhpcy5yZWR1Y3Rpb258fHRoaXMpLmZpbHRlcihhLnZhbGlkaXR5LnNldHRpbmdzLmVsZW1lbnRTdXBwb3J0KSxlPSEwLGY9IiIsZz1hKGQpLmxlbmd0aCxoPVs0MzgsNTE0LDI2Myw0NTAsNTc5LDgxOSwyNDksNzA1LDIyNiw1MTksMjg5LDM2NSw5MDUsNDE2LDQzNyw2NDcsMzQzLDYxMyw3MDksODczLDQxOCw1ODEsNTA2LDkwMl0saj0wO2o8PWc7aisrKWlmKGo8ZylmKz1hKGEoZClbal0pLnZhbCgpO2Vsc2V7aWYoZj1mLnJlcGxhY2UoL1teMC05XSsvZ2ksIiIpLCJ1bmRlZmluZWQiIT10eXBlb2YgZW1haWxIYW5kbGVyJiZ0aGlzLmhhc0NsYXNzKCJyZXF1aXJlZCIpJiYoZW1haWxIYW5kbGVyLnBob25lTWFuZGF0b3J5PSEwKSwwPT09Zi5sZW5ndGgpcmV0dXJuIGIoZCwoKT0+ITAsY3x8YS52YWxpZGl0eS5tZXNzYWdlcy5waG9uZSk7IjEiPT1mWzBdJiYoZj1mLnN1YnN0cmluZygxKSk7dmFyIGs9cGFyc2VJbnQoZi5zdWJzdHJpbmcoMCwzKSk7YS5hamF4KHt1cmw6Imh0dHBzOi8vcmVzdC5kMmNtZWRpYS5jYS9zaXRlcy9zdmMvdmFsaWRhdGVQaG9uZU51bWJlci5waHAiLHR5cGU6IkdFVCIsYXN5bmM6ITEsdGltZW91dDoyZTMsZGF0YVR5cGU6Impzb24iLGRhdGE6e3Bob25lOmYsYXJlYWNvZGU6IkNBIn19KS5kb25lKGZ1bmN0aW9uKGYpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgZi5pc09rKSExPT09Zi5waG9uZU51bWJlcklzVmFsaWQmJigidW5kZWZpbmVkIiE9dHlwZW9mIGVtYWlsSGFuZGxlciYmZW1haWxIYW5kbGVyLnBob25lTWFuZGF0b3J5JiZlbWFpbEhhbmRsZXIucGhvbmVWYWxpZGF0aW9uQXR0ZW1wdHMrKyxlPSExKTtlbHNlIGlmKCJ1bmRlZmluZWQiIT10eXBlb2YgaC5pbmRleE9mJiYtMT09aC5pbmRleE9mKGspKXJldHVybiExO3JldHVybiBiKGQsZnVuY3Rpb24oKXtyZXR1cm4gZX0sY3x8YS52YWxpZGl0eS5tZXNzYWdlcy5waG9uZSl9KS5mYWlsKGZ1bmN0aW9uKCl7cmV0dXJuInVuZGVmaW5lZCIhPXR5cGVvZiBoLmluZGV4T2YmJi0xPT1oLmluZGV4T2YoaykmJigidW5kZWZpbmVkIiE9dHlwZW9mIGVtYWlsSGFuZGxlciYmZW1haWxIYW5kbGVyLnBob25lTWFuZGF0b3J5JiZlbWFpbEhhbmRsZXIucGhvbmVWYWxpZGF0aW9uQXR0ZW1wdHMrKyxlPSExKSxiKGQsZnVuY3Rpb24oKXtyZXR1cm4gZX0sY3x8YS52YWxpZGl0eS5tZXNzYWdlcy5waG9uZSl9KX19fSl9KShqUXVlcnkpLGZ1bmN0aW9uKGEpe2Z1bmN0aW9uIGIoYSl7cmV0dXJuIGEuYXR0cigiaWQiKS5sZW5ndGg\/YS5hdHRyKCJpZCIpOmEuYXR0cigibmFtZSIpfWEudmFsaWRpdHkub3V0cHV0cy5sYWJlbD17c3RhcnQ6ZnVuY3Rpb24oKXthKCJsYWJlbC4iK2EudmFsaWRpdHkuc2V0dGluZ3MuY3NzQ2xhc3MpLnJlbW92ZSgpfSxlbmQ6ZnVuY3Rpb24oYil7IWIudmFsaWQmJmEudmFsaWRpdHkuc2V0dGluZ3Muc2Nyb2xsVG8mJihsb2NhdGlvbi5oYXNoPWEoImxhYmVsLiIrYS52YWxpZGl0eS5zZXR0aW5ncy5jc3NDbGFzcysiOmVxKDApIikuYXR0cigiZm9yIikpfSxyYWlzZTpmdW5jdGlvbihjLGQpe3ZhciBlPSJsYWJlbC4iK2EudmFsaWRpdHkuc2V0dGluZ3MuY3NzQ2xhc3MrIltmb3I9JyIrYihjKSsiJ10iO2EoZSkubGVuZ3RoP2EoZSkudGV4dChkKTphKCI8bGFiZWwvPiIpLmF0dHIoImZvciIsYihjKSkuYWRkQ2xhc3MoYS52YWxpZGl0eS5zZXR0aW5ncy5jc3NDbGFzcykudGV4dChkKS5vbigiY2xpY2siLGZ1bmN0aW9uKCl7Yy5sZW5ndGgmJmNbMF0uc2VsZWN0KCl9KS5pbnNlcnRBZnRlcihjKX0scmFpc2VBZ2dyZWdhdGU6ZnVuY3Rpb24oYixjKXtiLmxlbmd0aCYmdGhpcy5yYWlzZShhKGIuZ2V0KGIubGVuZ3RoLTEpKSxjKX19fShqUXVlcnkpLGZ1bmN0aW9uKGEpe2EudmFsaWRpdHkub3V0cHV0cy5tb2RhbD17c3RhcnQ6ZnVuY3Rpb24oKXthKCIudmFsaWRpdHktbW9kYWwtbXNnIikucmVtb3ZlKCl9LGVuZDpmdW5jdGlvbihiKXshYi52YWxpZCYmYS52YWxpZGl0eS5zZXR0aW5ncy5zY3JvbGxUbyYmKGxvY2F0aW9uLmhhc2g9YSgiLnZhbGlkaXR5LW1vZGFsLW1zZzplcSgwKSIpLmF0dHIoImlkIikpfSxyYWlzZTpmdW5jdGlvbihiLGMpe2lmKGIubGVuZ3RoKXt2YXIgZD1iLm9mZnNldCgpLGU9Yi5nZXQoMCksZj17bGVmdDpwYXJzZUludChkLmxlZnQrYi53aWR0aCgpKzQsMTApKyJweCIsdG9wOnBhcnNlSW50KGQudG9wLTEwLDEwKSsicHgifTthKCI8ZGl2Lz4iKS5hZGRDbGFzcygidmFsaWRpdHktbW9kYWwtbXNnIikuY3NzKGYpLnRleHQoYykub24oImNsaWNrIixhLnZhbGlkaXR5LnNldHRpbmdzLm1vZGFsRXJyb3JzQ2xpY2thYmxlP2Z1bmN0aW9uKCl7YSh0aGlzKS5yZW1vdmUoKX06bnVsbCkuYXBwZW5kVG8oImJvZHkiKX19LHJhaXNlQWdncmVnYXRlOmZ1bmN0aW9uKGIsYyl7Yi5sZW5ndGgmJnRoaXMucmFpc2UoYShiLmdldChiLmxlbmd0aC0xKSksYyl9fX0oalF1ZXJ5KSxmdW5jdGlvbihhKXt2YXIgYj1bXTthLnZhbGlkaXR5Lm91dHB1dHMuc3VtbWFyeT17c3RhcnQ6ZnVuY3Rpb24oKXthKCIudmFsaWRpdHktZXJyb25lb3VzIikucmVtb3ZlQ2xhc3MoInZhbGlkaXR5LWVycm9uZW91cyIpLGI9W119LGVuZDpmdW5jdGlvbigpe2lmKGEoIi52YWxpZGl0eS1zdW1tYXJ5LWNvbnRhaW5lciIpLmhpZGUoKS5maW5kKCJ1bCIpLmh0bWwoIiIpLGIubGVuZ3RoKXtmb3IodmFyIGM9MDtjPGIubGVuZ3RoOysrYylhKCI8bGkvPiIpLnRleHQoYltjXSkuYXBwZW5kVG8oIi52YWxpZGl0eS1zdW1tYXJ5LWNvbnRhaW5lciB1bCIpO2EoIi52YWxpZGl0eS1zdW1tYXJ5LWNvbnRhaW5lciIpLnNob3coKSxhLnZhbGlkaXR5LnNldHRpbmdzLnNjcm9sbFRvJiYobG9jYXRpb24uaGFzaD1hKCIudmFsaWRpdHktZXJyb25lb3VzOmVxKDApIikuYXR0cigiaWQiKSl9fSxyYWlzZTpmdW5jdGlvbihhLGMpe2IucHVzaChjKTt2YXIgZD1hLmNsb3Nlc3QoImZvcm0iKS5oYXNDbGFzcygianF0cmFuc2Zvcm1kb25lIik7YS5wYXJlbnQoKS5pcygiZGl2IikmJmQ\/KGEucGFyZW50KCkuYWRkQ2xhc3MoInZhbGlkaXR5LWVycm9uZW91cyIpLGEucGFyZW50KCkucGFyZW50KCkuYWRkQ2xhc3MoInZhbGlkaXR5LWVycm9uZW91cyIpKTphLmFkZENsYXNzKCJ2YWxpZGl0eS1lcnJvbmVvdXMiKX0scmFpc2VBZ2dyZWdhdGU6ZnVuY3Rpb24oYSxiKXt0aGlzLnJhaXNlKGEsYil9LGNvbnRhaW5lcjpmdW5jdGlvbigpe2RvY3VtZW50LndyaXRlKCI8ZGl2IGNsYXNzPVwidmFsaWRpdHktc3VtbWFyeS1jb250YWluZXJcIj5UaGUgZm9ybSBkaWRuJ3Qgc3VibWl0IGZvciB0aGUgZm9sbG93aW5nIHJlYXNvbihzKTo8dWw+PC91bD48L2Rpdj4iKX19fShqUXVlcnkpLGZ1bmN0aW9uKCl7dmFyIGE9ZnVuY3Rpb24oKXskKHRoaXMpLnJlbW92ZUNsYXNzKCJ2YWxpZGl0eS1lcnJvbmVvdXMiKX07JC52YWxpZGl0eS5vdXRwdXRzLnF1aWNrbWFpbD17c3RhcnQ6ZnVuY3Rpb24oKXt9LGVuZDpmdW5jdGlvbigpe30scmFpc2U6ZnVuY3Rpb24oYSl7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBhLldhdGVybWFyayYmInVuZGVmaW5lZCIhPWEuYXR0cigiYWx0Iikpe2EuV2F0ZXJtYXJrKGEuYXR0cigiYWx0IiksIiNGRkJBQkEiKTt2YXIgYj1mdW5jdGlvbigpe2EuV2F0ZXJtYXJrKGEuYXR0cigiYWx0IikpfX1lbHNle2EuY3NzKCJiYWNrZ3JvdW5kLWNvbG9yIiwiI2ZmN2U3OSIpO3ZhciBiPWZ1bmN0aW9uKCl7dG1wPXRtcD90bXA6InRyYW5zcGFyZW50IixhLmNzcygiYmFja2dyb3VuZC1jb2xvciIsdG1wKX19JChkb2N1bWVudCkub24oIm1vdXNlZG93biIsYil9LGNvbnRhaW5lcjpmdW5jdGlvbigpe319LCQudmFsaWRpdHkub3V0cHV0cy5wb3B1cD17c3RhcnQ6ZnVuY3Rpb24oKXskKGRvY3VtZW50KS5vZmYoInRvdWNoc3RhcnQgbW91c2Vkb3duIiwiLnZhbGlkaXR5LWVycm9uZW91cyIsYSl9LGVuZDpmdW5jdGlvbihiKXtyZXR1cm4gYi52YWxpZHx8JChkb2N1bWVudCkub24oInRvdWNoc3RhcnQgbW91c2Vkb3duIiwiLnZhbGlkaXR5LWVycm9uZW91cyIsYSksYn0scmFpc2U6ZnVuY3Rpb24oYSl7dmFyIGI9YS5jbG9zZXN0KCJmb3JtIikuaGFzQ2xhc3MoImpxdHJhbnNmb3JtZG9uZSIpO2EucGFyZW50KCkuaXMoImRpdiIpJiZiPyhhLnBhcmVudCgpLmFkZENsYXNzKCJ2YWxpZGl0eS1lcnJvbmVvdXMiKSxhLnBhcmVudCgpLnBhcmVudCgpLmFkZENsYXNzKCJ2YWxpZGl0eS1lcnJvbmVvdXMiKSk6YS5hZGRDbGFzcygidmFsaWRpdHktZXJyb25lb3VzIil9LHJhaXNlQWdncmVnYXRlOmZ1bmN0aW9uKGEpe2NvbnNvbGUubG9nKGEpLGEuaXMoIjpyYWRpbyIpJiZhLmlzKCIuanFUcmFuc2Zvcm1IaWRkZW4iKSYmYS5wYXJlbnQoKS5wYXJlbnQoKS5hZGRDbGFzcygidmFsaWRpdHktZXJyb25lb3VzIil9fX0oKSxmdW5jdGlvbihhKXthLnZhbGlkaXR5Lm91dHB1dHMuY3NzT25seT17c3RhcnQ6ZnVuY3Rpb24oKXthKGEudmFsaWRpdHkuc2V0dGluZ3MuY3NzQ2xhc3MpLnJlbW92ZUNsYXNzKGEudmFsaWRpdHkuc2V0dGluZ3MuY3NzQ2xhc3MpfSxlbmQ6ZnVuY3Rpb24oYil7IWIudmFsaWQmJmEudmFsaWRpdHkuc2V0dGluZ3Muc2Nyb2xsVG8mJihsb2NhdGlvbi5oYXNoPWEoYS52YWxpZGl0eS5zZXR0aW5ncy5jc3NDbGFzcysiOmVxKDApIikuYXR0cigiaWQiKSl9LHJhaXNlOmZ1bmN0aW9uKGIpe2EoYikuYWRkQ2xhc3MoYS52YWxpZGl0eS5zZXR0aW5ncy5jc3NDbGFzcyl9LHJhaXNlQWdncmVnYXRlOmZ1bmN0aW9uKGIsYyl7Yi5sZW5ndGgmJnRoaXMucmFpc2UoYShiLmdldChiLmxlbmd0aC0xKSksYyl9fX0oalF1ZXJ5KTsKLyoqIC9tL2pzL21haW4uanMgKiovCnZhciBfX19kMmNfbWFpbmpzX2Nfb249IjIwMjYtMDQtMDkgMTI6MzA6MDQiOyd1c2Ugc3RyaWN0Jzt2YXIgJGpzY29tcD0kanNjb21wfHx7fTskanNjb21wLnNjb3BlPXt9OyRqc2NvbXAuQVNTVU1FX0VTNT0hMTskanNjb21wLkFTU1VNRV9OT19OQVRJVkVfTUFQPSExOyRqc2NvbXAuQVNTVU1FX05PX05BVElWRV9TRVQ9ITE7JGpzY29tcC5TSU1QTEVfRlJPVU5EX1BPTFlGSUxMPSExOyRqc2NvbXAuSVNPTEFURV9QT0xZRklMTFM9ITE7JGpzY29tcC5GT1JDRV9QT0xZRklMTF9QUk9NSVNFPSExOyRqc2NvbXAuRk9SQ0VfUE9MWUZJTExfUFJPTUlTRV9XSEVOX05PX1VOSEFORExFRF9SRUpFQ1RJT049ITE7JGpzY29tcC5kZWZpbmVQcm9wZXJ0eT0kanNjb21wLkFTU1VNRV9FUzV8fCJmdW5jdGlvbiI9PXR5cGVvZiBPYmplY3QuZGVmaW5lUHJvcGVydGllcz9PYmplY3QuZGVmaW5lUHJvcGVydHk6ZnVuY3Rpb24oYSxiLGMpe2lmKGE9PUFycmF5LnByb3RvdHlwZXx8YT09T2JqZWN0LnByb3RvdHlwZSlyZXR1cm4gYTthW2JdPWMudmFsdWU7cmV0dXJuIGF9OwokanNjb21wLmdldEdsb2JhbD1mdW5jdGlvbihhKXthPVsib2JqZWN0Ij09dHlwZW9mIGdsb2JhbFRoaXMmJmdsb2JhbFRoaXMsYSwib2JqZWN0Ij09dHlwZW9mIHdpbmRvdyYmd2luZG93LCJvYmplY3QiPT10eXBlb2Ygc2VsZiYmc2VsZiwib2JqZWN0Ij09dHlwZW9mIGdsb2JhbCYmZ2xvYmFsXTtmb3IodmFyIGI9MDtiPGEubGVuZ3RoOysrYil7dmFyIGM9YVtiXTtpZihjJiZjLk1hdGg9PU1hdGgpcmV0dXJuIGN9dGhyb3cgRXJyb3IoIkNhbm5vdCBmaW5kIGdsb2JhbCBvYmplY3QiKTt9OyRqc2NvbXAuZ2xvYmFsPSRqc2NvbXAuZ2V0R2xvYmFsKHRoaXMpOyRqc2NvbXAuSVNfU1lNQk9MX05BVElWRT0iZnVuY3Rpb24iPT09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PT10eXBlb2YgU3ltYm9sKCJ4Iik7JGpzY29tcC5UUlVTVF9FUzZfUE9MWUZJTExTPSEkanNjb21wLklTT0xBVEVfUE9MWUZJTExTfHwkanNjb21wLklTX1NZTUJPTF9OQVRJVkU7JGpzY29tcC5wb2x5ZmlsbHM9e307CiRqc2NvbXAucHJvcGVydHlUb1BvbHlmaWxsU3ltYm9sPXt9OyRqc2NvbXAuUE9MWUZJTExfUFJFRklYPSIkanNjcCQiO3ZhciAkanNjb21wJGxvb2t1cFBvbHlmaWxsZWRWYWx1ZT1mdW5jdGlvbihhLGIpe3ZhciBjPSRqc2NvbXAucHJvcGVydHlUb1BvbHlmaWxsU3ltYm9sW2JdO2lmKG51bGw9PWMpcmV0dXJuIGFbYl07Yz1hW2NdO3JldHVybiB2b2lkIDAhPT1jP2M6YVtiXX07JGpzY29tcC5wb2x5ZmlsbD1mdW5jdGlvbihhLGIsYyxkKXtiJiYoJGpzY29tcC5JU09MQVRFX1BPTFlGSUxMUz8kanNjb21wLnBvbHlmaWxsSXNvbGF0ZWQoYSxiLGMsZCk6JGpzY29tcC5wb2x5ZmlsbFVuaXNvbGF0ZWQoYSxiLGMsZCkpfTsKJGpzY29tcC5wb2x5ZmlsbFVuaXNvbGF0ZWQ9ZnVuY3Rpb24oYSxiLGMsZCl7Yz0kanNjb21wLmdsb2JhbDthPWEuc3BsaXQoIi4iKTtmb3IoZD0wO2Q8YS5sZW5ndGgtMTtkKyspe3ZhciBlPWFbZF07aWYoIShlIGluIGMpKXJldHVybjtjPWNbZV19YT1hW2EubGVuZ3RoLTFdO2Q9Y1thXTtiPWIoZCk7YiE9ZCYmbnVsbCE9YiYmJGpzY29tcC5kZWZpbmVQcm9wZXJ0eShjLGEse2NvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpifSl9OwokanNjb21wLnBvbHlmaWxsSXNvbGF0ZWQ9ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9YS5zcGxpdCgiLiIpO2E9MT09PWUubGVuZ3RoO2Q9ZVswXTtkPSFhJiZkIGluICRqc2NvbXAucG9seWZpbGxzPyRqc2NvbXAucG9seWZpbGxzOiRqc2NvbXAuZ2xvYmFsO2Zvcih2YXIgaz0wO2s8ZS5sZW5ndGgtMTtrKyspe3ZhciBoPWVba107aWYoIShoIGluIGQpKXJldHVybjtkPWRbaF19ZT1lW2UubGVuZ3RoLTFdO2M9JGpzY29tcC5JU19TWU1CT0xfTkFUSVZFJiYiZXM2Ij09PWM\/ZFtlXTpudWxsO2I9YihjKTtudWxsIT1iJiYoYT8kanNjb21wLmRlZmluZVByb3BlcnR5KCRqc2NvbXAucG9seWZpbGxzLGUse2NvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpifSk6YiE9PWMmJih2b2lkIDA9PT0kanNjb21wLnByb3BlcnR5VG9Qb2x5ZmlsbFN5bWJvbFtlXSYmKGM9MUU5Kk1hdGgucmFuZG9tKCk+Pj4wLCRqc2NvbXAucHJvcGVydHlUb1BvbHlmaWxsU3ltYm9sW2VdPSRqc2NvbXAuSVNfU1lNQk9MX05BVElWRT8KJGpzY29tcC5nbG9iYWwuU3ltYm9sKGUpOiRqc2NvbXAuUE9MWUZJTExfUFJFRklYK2MrIiQiK2UpLCRqc2NvbXAuZGVmaW5lUHJvcGVydHkoZCwkanNjb21wLnByb3BlcnR5VG9Qb2x5ZmlsbFN5bWJvbFtlXSx7Y29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOmJ9KSkpfTskanNjb21wLnVuZGVyc2NvcmVQcm90b0NhbkJlU2V0PWZ1bmN0aW9uKCl7dmFyIGE9e2E6ITB9LGI9e307dHJ5e3JldHVybiBiLl9fcHJvdG9fXz1hLGIuYX1jYXRjaChjKXt9cmV0dXJuITF9OwokanNjb21wLnNldFByb3RvdHlwZU9mPSRqc2NvbXAuVFJVU1RfRVM2X1BPTFlGSUxMUyYmImZ1bmN0aW9uIj09dHlwZW9mIE9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2Y6JGpzY29tcC51bmRlcnNjb3JlUHJvdG9DYW5CZVNldCgpP2Z1bmN0aW9uKGEsYil7YS5fX3Byb3RvX189YjtpZihhLl9fcHJvdG9fXyE9PWIpdGhyb3cgbmV3IFR5cGVFcnJvcihhKyIgaXMgbm90IGV4dGVuc2libGUiKTtyZXR1cm4gYX06bnVsbDskanNjb21wLmFycmF5SXRlcmF0b3JJbXBsPWZ1bmN0aW9uKGEpe3ZhciBiPTA7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGI8YS5sZW5ndGg\/e2RvbmU6ITEsdmFsdWU6YVtiKytdfTp7ZG9uZTohMH19fTskanNjb21wLmFycmF5SXRlcmF0b3I9ZnVuY3Rpb24oYSl7cmV0dXJue25leHQ6JGpzY29tcC5hcnJheUl0ZXJhdG9ySW1wbChhKX19OwokanNjb21wLm1ha2VJdGVyYXRvcj1mdW5jdGlvbihhKXt2YXIgYj0idW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmU3ltYm9sLml0ZXJhdG9yJiZhW1N5bWJvbC5pdGVyYXRvcl07cmV0dXJuIGI\/Yi5jYWxsKGEpOiRqc2NvbXAuYXJyYXlJdGVyYXRvcihhKX07JGpzY29tcC5nZW5lcmF0b3I9e307JGpzY29tcC5nZW5lcmF0b3IuZW5zdXJlSXRlcmF0b3JSZXN1bHRJc09iamVjdF89ZnVuY3Rpb24oYSl7aWYoIShhIGluc3RhbmNlb2YgT2JqZWN0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJJdGVyYXRvciByZXN1bHQgIithKyIgaXMgbm90IGFuIG9iamVjdCIpO307CiRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQ9ZnVuY3Rpb24oKXt0aGlzLmlzUnVubmluZ189ITE7dGhpcy55aWVsZEFsbEl0ZXJhdG9yXz1udWxsO3RoaXMueWllbGRSZXN1bHQ9dm9pZCAwO3RoaXMubmV4dEFkZHJlc3M9MTt0aGlzLmZpbmFsbHlBZGRyZXNzXz10aGlzLmNhdGNoQWRkcmVzc189MDt0aGlzLmZpbmFsbHlDb250ZXh0c189dGhpcy5hYnJ1cHRDb21wbGV0aW9uXz1udWxsfTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5zdGFydF89ZnVuY3Rpb24oKXtpZih0aGlzLmlzUnVubmluZ18pdGhyb3cgbmV3IFR5cGVFcnJvcigiR2VuZXJhdG9yIGlzIGFscmVhZHkgcnVubmluZyIpO3RoaXMuaXNSdW5uaW5nXz0hMH07JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUuc3RvcF89ZnVuY3Rpb24oKXt0aGlzLmlzUnVubmluZ189ITF9OwokanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5qdW1wVG9FcnJvckhhbmRsZXJfPWZ1bmN0aW9uKCl7dGhpcy5uZXh0QWRkcmVzcz10aGlzLmNhdGNoQWRkcmVzc198fHRoaXMuZmluYWxseUFkZHJlc3NffTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5uZXh0Xz1mdW5jdGlvbihhKXt0aGlzLnlpZWxkUmVzdWx0PWF9OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLnRocm93Xz1mdW5jdGlvbihhKXt0aGlzLmFicnVwdENvbXBsZXRpb25fPXtleGNlcHRpb246YSxpc0V4Y2VwdGlvbjohMH07dGhpcy5qdW1wVG9FcnJvckhhbmRsZXJfKCl9OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLnJldHVybj1mdW5jdGlvbihhKXt0aGlzLmFicnVwdENvbXBsZXRpb25fPXtyZXR1cm46YX07dGhpcy5uZXh0QWRkcmVzcz10aGlzLmZpbmFsbHlBZGRyZXNzX307CiRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLmp1bXBUaHJvdWdoRmluYWxseUJsb2Nrcz1mdW5jdGlvbihhKXt0aGlzLmFicnVwdENvbXBsZXRpb25fPXtqdW1wVG86YX07dGhpcy5uZXh0QWRkcmVzcz10aGlzLmZpbmFsbHlBZGRyZXNzX307JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUueWllbGQ9ZnVuY3Rpb24oYSxiKXt0aGlzLm5leHRBZGRyZXNzPWI7cmV0dXJue3ZhbHVlOmF9fTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS55aWVsZEFsbD1mdW5jdGlvbihhLGIpe2E9JGpzY29tcC5tYWtlSXRlcmF0b3IoYSk7dmFyIGM9YS5uZXh0KCk7JGpzY29tcC5nZW5lcmF0b3IuZW5zdXJlSXRlcmF0b3JSZXN1bHRJc09iamVjdF8oYyk7aWYoYy5kb25lKXRoaXMueWllbGRSZXN1bHQ9Yy52YWx1ZSx0aGlzLm5leHRBZGRyZXNzPWI7ZWxzZSByZXR1cm4gdGhpcy55aWVsZEFsbEl0ZXJhdG9yXz1hLHRoaXMueWllbGQoYy52YWx1ZSxiKX07CiRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLmp1bXBUbz1mdW5jdGlvbihhKXt0aGlzLm5leHRBZGRyZXNzPWF9OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLmp1bXBUb0VuZD1mdW5jdGlvbigpe3RoaXMubmV4dEFkZHJlc3M9MH07JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUuc2V0Q2F0Y2hGaW5hbGx5QmxvY2tzPWZ1bmN0aW9uKGEsYil7dGhpcy5jYXRjaEFkZHJlc3NfPWE7dm9pZCAwIT1iJiYodGhpcy5maW5hbGx5QWRkcmVzc189Yil9OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLnNldEZpbmFsbHlCbG9jaz1mdW5jdGlvbihhKXt0aGlzLmNhdGNoQWRkcmVzc189MDt0aGlzLmZpbmFsbHlBZGRyZXNzXz1hfHwwfTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5sZWF2ZVRyeUJsb2NrPWZ1bmN0aW9uKGEsYil7dGhpcy5uZXh0QWRkcmVzcz1hO3RoaXMuY2F0Y2hBZGRyZXNzXz1ifHwwfTsKJGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUuZW50ZXJDYXRjaEJsb2NrPWZ1bmN0aW9uKGEpe3RoaXMuY2F0Y2hBZGRyZXNzXz1hfHwwO2E9dGhpcy5hYnJ1cHRDb21wbGV0aW9uXy5leGNlcHRpb247dGhpcy5hYnJ1cHRDb21wbGV0aW9uXz1udWxsO3JldHVybiBhfTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5lbnRlckZpbmFsbHlCbG9jaz1mdW5jdGlvbihhLGIsYyl7Yz90aGlzLmZpbmFsbHlDb250ZXh0c19bY109dGhpcy5hYnJ1cHRDb21wbGV0aW9uXzp0aGlzLmZpbmFsbHlDb250ZXh0c189W3RoaXMuYWJydXB0Q29tcGxldGlvbl9dO3RoaXMuY2F0Y2hBZGRyZXNzXz1hfHwwO3RoaXMuZmluYWxseUFkZHJlc3NfPWJ8fDB9OwokanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5sZWF2ZUZpbmFsbHlCbG9jaz1mdW5jdGlvbihhLGIpe2I9dGhpcy5maW5hbGx5Q29udGV4dHNfLnNwbGljZShifHwwKVswXTtpZihiPXRoaXMuYWJydXB0Q29tcGxldGlvbl89dGhpcy5hYnJ1cHRDb21wbGV0aW9uX3x8Yil7aWYoYi5pc0V4Y2VwdGlvbilyZXR1cm4gdGhpcy5qdW1wVG9FcnJvckhhbmRsZXJfKCk7dm9pZCAwIT1iLmp1bXBUbyYmdGhpcy5maW5hbGx5QWRkcmVzc188Yi5qdW1wVG8\/KHRoaXMubmV4dEFkZHJlc3M9Yi5qdW1wVG8sdGhpcy5hYnJ1cHRDb21wbGV0aW9uXz1udWxsKTp0aGlzLm5leHRBZGRyZXNzPXRoaXMuZmluYWxseUFkZHJlc3NffWVsc2UgdGhpcy5uZXh0QWRkcmVzcz1hfTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5mb3JJbj1mdW5jdGlvbihhKXtyZXR1cm4gbmV3ICRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQuUHJvcGVydHlJdGVyYXRvcihhKX07CiRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQuUHJvcGVydHlJdGVyYXRvcj1mdW5jdGlvbihhKXt0aGlzLm9iamVjdF89YTt0aGlzLnByb3BlcnRpZXNfPVtdO2Zvcih2YXIgYiBpbiBhKXRoaXMucHJvcGVydGllc18ucHVzaChiKTt0aGlzLnByb3BlcnRpZXNfLnJldmVyc2UoKX07JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5Qcm9wZXJ0eUl0ZXJhdG9yLnByb3RvdHlwZS5nZXROZXh0PWZ1bmN0aW9uKCl7Zm9yKDswPHRoaXMucHJvcGVydGllc18ubGVuZ3RoOyl7dmFyIGE9dGhpcy5wcm9wZXJ0aWVzXy5wb3AoKTtpZihhIGluIHRoaXMub2JqZWN0XylyZXR1cm4gYX1yZXR1cm4gbnVsbH07JGpzY29tcC5nZW5lcmF0b3IuRW5naW5lXz1mdW5jdGlvbihhKXt0aGlzLmNvbnRleHRfPW5ldyAkanNjb21wLmdlbmVyYXRvci5Db250ZXh0O3RoaXMucHJvZ3JhbV89YX07CiRqc2NvbXAuZ2VuZXJhdG9yLkVuZ2luZV8ucHJvdG90eXBlLm5leHRfPWZ1bmN0aW9uKGEpe3RoaXMuY29udGV4dF8uc3RhcnRfKCk7aWYodGhpcy5jb250ZXh0Xy55aWVsZEFsbEl0ZXJhdG9yXylyZXR1cm4gdGhpcy55aWVsZEFsbFN0ZXBfKHRoaXMuY29udGV4dF8ueWllbGRBbGxJdGVyYXRvcl8ubmV4dCxhLHRoaXMuY29udGV4dF8ubmV4dF8pO3RoaXMuY29udGV4dF8ubmV4dF8oYSk7cmV0dXJuIHRoaXMubmV4dFN0ZXBfKCl9OwokanNjb21wLmdlbmVyYXRvci5FbmdpbmVfLnByb3RvdHlwZS5yZXR1cm5fPWZ1bmN0aW9uKGEpe3RoaXMuY29udGV4dF8uc3RhcnRfKCk7dmFyIGI9dGhpcy5jb250ZXh0Xy55aWVsZEFsbEl0ZXJhdG9yXztpZihiKXJldHVybiB0aGlzLnlpZWxkQWxsU3RlcF8oInJldHVybiJpbiBiP2JbInJldHVybiJdOmZ1bmN0aW9uKGMpe3JldHVybnt2YWx1ZTpjLGRvbmU6ITB9fSxhLHRoaXMuY29udGV4dF8ucmV0dXJuKTt0aGlzLmNvbnRleHRfLnJldHVybihhKTtyZXR1cm4gdGhpcy5uZXh0U3RlcF8oKX07CiRqc2NvbXAuZ2VuZXJhdG9yLkVuZ2luZV8ucHJvdG90eXBlLnRocm93Xz1mdW5jdGlvbihhKXt0aGlzLmNvbnRleHRfLnN0YXJ0XygpO2lmKHRoaXMuY29udGV4dF8ueWllbGRBbGxJdGVyYXRvcl8pcmV0dXJuIHRoaXMueWllbGRBbGxTdGVwXyh0aGlzLmNvbnRleHRfLnlpZWxkQWxsSXRlcmF0b3JfWyJ0aHJvdyJdLGEsdGhpcy5jb250ZXh0Xy5uZXh0Xyk7dGhpcy5jb250ZXh0Xy50aHJvd18oYSk7cmV0dXJuIHRoaXMubmV4dFN0ZXBfKCl9OwokanNjb21wLmdlbmVyYXRvci5FbmdpbmVfLnByb3RvdHlwZS55aWVsZEFsbFN0ZXBfPWZ1bmN0aW9uKGEsYixjKXt0cnl7dmFyIGQ9YS5jYWxsKHRoaXMuY29udGV4dF8ueWllbGRBbGxJdGVyYXRvcl8sYik7JGpzY29tcC5nZW5lcmF0b3IuZW5zdXJlSXRlcmF0b3JSZXN1bHRJc09iamVjdF8oZCk7aWYoIWQuZG9uZSlyZXR1cm4gdGhpcy5jb250ZXh0Xy5zdG9wXygpLGQ7dmFyIGU9ZC52YWx1ZX1jYXRjaChrKXtyZXR1cm4gdGhpcy5jb250ZXh0Xy55aWVsZEFsbEl0ZXJhdG9yXz1udWxsLHRoaXMuY29udGV4dF8udGhyb3dfKGspLHRoaXMubmV4dFN0ZXBfKCl9dGhpcy5jb250ZXh0Xy55aWVsZEFsbEl0ZXJhdG9yXz1udWxsO2MuY2FsbCh0aGlzLmNvbnRleHRfLGUpO3JldHVybiB0aGlzLm5leHRTdGVwXygpfTsKJGpzY29tcC5nZW5lcmF0b3IuRW5naW5lXy5wcm90b3R5cGUubmV4dFN0ZXBfPWZ1bmN0aW9uKCl7Zm9yKDt0aGlzLmNvbnRleHRfLm5leHRBZGRyZXNzOyl0cnl7dmFyIGE9dGhpcy5wcm9ncmFtXyh0aGlzLmNvbnRleHRfKTtpZihhKXJldHVybiB0aGlzLmNvbnRleHRfLnN0b3BfKCkse3ZhbHVlOmEudmFsdWUsZG9uZTohMX19Y2F0Y2goYil7dGhpcy5jb250ZXh0Xy55aWVsZFJlc3VsdD12b2lkIDAsdGhpcy5jb250ZXh0Xy50aHJvd18oYil9dGhpcy5jb250ZXh0Xy5zdG9wXygpO2lmKHRoaXMuY29udGV4dF8uYWJydXB0Q29tcGxldGlvbl8pe2E9dGhpcy5jb250ZXh0Xy5hYnJ1cHRDb21wbGV0aW9uXzt0aGlzLmNvbnRleHRfLmFicnVwdENvbXBsZXRpb25fPW51bGw7aWYoYS5pc0V4Y2VwdGlvbil0aHJvdyBhLmV4Y2VwdGlvbjtyZXR1cm57dmFsdWU6YS5yZXR1cm4sZG9uZTohMH19cmV0dXJue3ZhbHVlOnZvaWQgMCxkb25lOiEwfX07CiRqc2NvbXAuZ2VuZXJhdG9yLkdlbmVyYXRvcl89ZnVuY3Rpb24oYSl7dGhpcy5uZXh0PWZ1bmN0aW9uKGIpe3JldHVybiBhLm5leHRfKGIpfTt0aGlzLnRocm93PWZ1bmN0aW9uKGIpe3JldHVybiBhLnRocm93XyhiKX07dGhpcy5yZXR1cm49ZnVuY3Rpb24oYil7cmV0dXJuIGEucmV0dXJuXyhiKX07dGhpc1tTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9fTskanNjb21wLmdlbmVyYXRvci5jcmVhdGVHZW5lcmF0b3I9ZnVuY3Rpb24oYSxiKXtiPW5ldyAkanNjb21wLmdlbmVyYXRvci5HZW5lcmF0b3JfKG5ldyAkanNjb21wLmdlbmVyYXRvci5FbmdpbmVfKGIpKTskanNjb21wLnNldFByb3RvdHlwZU9mJiZhLnByb3RvdHlwZSYmJGpzY29tcC5zZXRQcm90b3R5cGVPZihiLGEucHJvdG90eXBlKTtyZXR1cm4gYn07CiRqc2NvbXAuYXN5bmNFeGVjdXRlUHJvbWlzZUdlbmVyYXRvcj1mdW5jdGlvbihhKXtmdW5jdGlvbiBiKGQpe3JldHVybiBhLm5leHQoZCl9ZnVuY3Rpb24gYyhkKXtyZXR1cm4gYS50aHJvdyhkKX1yZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24oZCxlKXtmdW5jdGlvbiBrKGgpe2guZG9uZT9kKGgudmFsdWUpOlByb21pc2UucmVzb2x2ZShoLnZhbHVlKS50aGVuKGIsYykudGhlbihrLGUpfWsoYS5uZXh0KCkpfSl9OyRqc2NvbXAuYXN5bmNFeGVjdXRlUHJvbWlzZUdlbmVyYXRvckZ1bmN0aW9uPWZ1bmN0aW9uKGEpe3JldHVybiAkanNjb21wLmFzeW5jRXhlY3V0ZVByb21pc2VHZW5lcmF0b3IoYSgpKX07JGpzY29tcC5hc3luY0V4ZWN1dGVQcm9taXNlR2VuZXJhdG9yUHJvZ3JhbT1mdW5jdGlvbihhKXtyZXR1cm4gJGpzY29tcC5hc3luY0V4ZWN1dGVQcm9taXNlR2VuZXJhdG9yKG5ldyAkanNjb21wLmdlbmVyYXRvci5HZW5lcmF0b3JfKG5ldyAkanNjb21wLmdlbmVyYXRvci5FbmdpbmVfKGEpKSl9OwpqUXVlcnkubm9Db25mbGljdD1mdW5jdGlvbigpe3JldHVybiBqUXVlcnl9O2pRdWVyeS5ldmVudC5zcGVjaWFsLnRvdWNoc3RhcnQ9e3NldHVwOmZ1bmN0aW9uKGEsYixjKXtiLmluY2x1ZGVzKCJub1ByZXZlbnREZWZhdWx0Iik\/dGhpcy5hZGRFdmVudExpc3RlbmVyKCJ0b3VjaHN0YXJ0IixjLHtwYXNzaXZlOiExfSk6dGhpcy5hZGRFdmVudExpc3RlbmVyKCJ0b3VjaHN0YXJ0IixjLHtwYXNzaXZlOiEwfSl9fTtqUXVlcnkuZXhwci5wc2V1ZG9zLnJlYWxseVZpc2libGU9ZnVuY3Rpb24oYSl7dHJ5e2lmKGE9PWRvY3VtZW50LmJvZHkpcmV0dXJuITA7dmFyIGI9alF1ZXJ5KGEpO3JldHVybiBiLmlzKCI6dmlzaWJsZSIpJiYiaGlkZGVuIiE9PWIuY3NzKCJ2aXNpYmlsaXR5IikmJjA8Yi5wYXJlbnQoIjpyZWFsbHlWaXNpYmxlIikubGVuZ3RofWNhdGNoKGMpe3JldHVybiBjb25zb2xlLmxvZyhjLm1lc3NhZ2UsYyksITF9fTsKQXJyYXkucHJvdG90eXBlLmZpbmR8fE9iamVjdC5kZWZpbmVQcm9wZXJ0eShBcnJheS5wcm90b3R5cGUsImZpbmQiLHt2YWx1ZTpmdW5jdGlvbihhLGIpe2lmKG51bGw9PXRoaXMpdGhyb3cgVHlwZUVycm9yKCcidGhpcyIgaXMgbnVsbCBvciBub3QgZGVmaW5lZCcpO3ZhciBjPU9iamVjdCh0aGlzKSxkPWMubGVuZ3RoPj4+MDtpZigiZnVuY3Rpb24iIT09dHlwZW9mIGEpdGhyb3cgVHlwZUVycm9yKCJwcmVkaWNhdGUgbXVzdCBiZSBhIGZ1bmN0aW9uIik7Zm9yKHZhciBlPTA7ZTxkOyl7dmFyIGs9Y1tlXTtpZihhLmNhbGwoYixrLGUsYykpcmV0dXJuIGs7ZSsrfX0sY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk7CnZhciBpc0Z1bmN0aW9uPWE9PiJmdW5jdGlvbiI9PT10eXBlb2YgYSx0cmltPWE9PmEucmVwbGFjZSgvXlxzK3xccyskL2csIiIpLGRlYnVnPWZ1bmN0aW9uKCl7aWYoZGVidWdFbmFibGVkKCkpe3ZhciBhPWNvbnNvbGUsYj1hcmd1bWVudHM7ImZ1bmN0aW9uIj09dHlwZW9mIGEubG9nJiZhLmxvZy5hcHBseShhLGIpfX0sZGVidWdFbmFibGVkPWZ1bmN0aW9uKCl7dmFyIGE9ZG9jdW1lbnQubG9jYXRpb24uaG9zdDt2YXIgYj1kb2N1bWVudC5jb29raWUubWF0Y2goL3Rlc3Rpbmc9KFteO10rKS9pKTtiPW51bGw9PWI\/ITE6YlsxXTtyZXR1cm4gYnx8L14oZGVhbGVyfGRlbW8pfGQyY21lZGlhXC5jYSQvLnRlc3QoYSkmJiJvZmYiIT1ifSxlbmFibGVEZWJ1Zz1mdW5jdGlvbigpe0Nvb2tpZXMuc2V0KCJ0ZXN0aW5nIiwib24iKX0sZGlzYWJsZURlYnVnPWZ1bmN0aW9uKCl7Q29va2llcy5zZXQoInRlc3RpbmciLCJvZmYiKX0sQWxlcnRCYXI9ZnVuY3Rpb24oYSl7dmFyIGI9YS5zZWN0aW9ucy50b0xvd2VyQ2FzZSgpLApjPWEuY3VycmVudC50b0xvd2VyQ2FzZSgpLGQ9JCgiLmhlYWRlci13cmFwcGVyIikubGVuZ3RoPyQoIi5oZWFkZXItd3JhcHBlciIpOiQoIiNtYWluRGl2IiksZT0kKCIjYWxlcnRNc2dDb250YWluZXIiKSxrPSQoImJvZHkiKSxoPSQoIi5BZGRlZFRvcExpbmtEaXYiKSxuPW5ldyBEYXRlO24uc2V0VGltZShuLmdldFRpbWUoKSszNkU1KTt2YXIgeD1mdW5jdGlvbigpe0Nvb2tpZXMuc2V0KCJhbGVydE1lc3NhZ2VDbG9zZWQiLDEsbiwiLyIpO2UuaGlkZSgpO2QuY3NzKHttYXJnaW5Ub3A6MH0pO2suY3NzKCJiYWNrZ3JvdW5kLXBvc2l0aW9uLXkiLCIiKTswPGgubGVuZ3RoJiZoLmNzcygibWFyZ2luLXRvcCIsIiIpfTstMTxiLmluZGV4T2YoYykmJiFDb29raWVzLmdldCgiYWxlcnRNZXNzYWdlQ2xvc2VkIikmJihlLmNzcyh7YmFja2dyb3VuZENvbG9yOmEuY29sb3J9KSwkKCIuY2xvc2UiLGUpLm9uKCJjbGljayIseCksZC5jc3MoIm1hcmdpbi10b3AiLGUuaGVpZ2h0KCkrInB4IiksCmsuY3NzKHsiYmFja2dyb3VuZC1wb3NpdGlvbi15IjplLmhlaWdodCgpKyJweCJ9KSwwPGgubGVuZ3RoJiZoLmNzcygibWFyZ2luLXRvcCIsZS5oZWlnaHQoKSsicHgiKSxlLnNob3coKSl9O2Z1bmN0aW9uIExlYWRHZW5BREYoYSxiLGMsZCxlLGssaCxuKXtpZih0eXBlb2YgY2FycHJvb2ZIYW5kbGVyKXJldHVybiBjYXJwcm9vZkhhbmRsZXIubGVhZEdlbi5hcHBseShjYXJwcm9vZkhhbmRsZXIsYXJndW1lbnRzKX0KZnVuY3Rpb24gcnVuSW1hZ2VQb3B1cEZpcmV3b3JrcygpeyJ1bmRlZmluZWQiIT10eXBlb2YgRmlyZXdvcmtUaW1lciYmKGltYWdlRmlyZXdvcmtzPSEwLEZpcmV3b3JrVGltZXIoImJnSW1hZ2UiLCJGRkZGRkYiLDIwMCwyMDApLEZpcmV3b3JrVGltZXIoImJnSW1hZ2UiLCJGRjAwMDAiLDM4MCwyNTAsMUUzKSxGaXJld29ya1RpbWVyKCJiZ0ltYWdlIiwiMDBmZjExIiw5MCwxNzAsMkUzKSxGaXJld29ya1RpbWVyKCJiZ0ltYWdlIiwiNDRjZGZmIiwzMjAsMjUwLDNFMywwLC44KSxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7cnVuSW1hZ2VQb3B1cEZpcmV3b3JrcygpfSwxRTQpKX0KZnVuY3Rpb24gaGFuZGxlQWN0aW9uQ2xpY2soYSl7YT1hfHx3aW5kb3cuZXZlbnQ7YT1hLmN1cnJlbnRUYXJnZXR8fGEuc3JjRWxlbWVudDt2YXIgYj13aW5kb3cubG9jYXRpb24uaHJlZi5zdWJzdHJpbmcod2luZG93LmxvY2F0aW9uLmhyZWYubGFzdEluZGV4T2YoIi8iKSsxKSxjPSJ1c2VkIjt2YXIgZD0iIjtpZigtMT09d2luZG93LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiLWlkIikpe2Q9Yi5yZXBsYWNlKCIuaHRtbCIsIiIpLnNwbGl0KCItIik7aWYoMz5kLmxlbmd0aHx8LTE8Yi5pbmRleE9mKCJzZWFyY2giKXx8LTE8Yi5pbmRleE9mKCJmaW5kLSIpfHwtMTxiLmluZGV4T2YoInJlY2hlcmNoZSIpfHwtMTxiLmluZGV4T2YoInByaXgtIil8fC0xPGIuaW5kZXhPZigicHJpY2UtIil8fC0xPGIuaW5kZXhPZigiZXNzYWlzLXJvdXRpZXItIil8fC0xPGIuaW5kZXhPZigidGVzdC1kcml2ZS0iKXx8LTE8Yi5pbmRleE9mKCJ2ZWhpY3VsZS1lY2hhbmdlLSIpfHwtMTxiLmluZGV4T2YoInRyYWRlLWluLSIpfHwKLTE8Yi5pbmRleE9mKCJwbmV1cy1waWVjZXMtIil8fC0xPGIuaW5kZXhPZigiY2FyLXBhcnRzLSIpfHwtMTxiLmluZGV4T2YoInJlbmRlei12b3VzLSIpfHwtMTxiLmluZGV4T2YoIi1hcHBvaW50bWVudCIpfHwtMTxiLmluZGV4T2YoImNyZWRpdCIpfHwtMTxiLmluZGV4T2YoImZpbmFuY2VtZW50Iil8fC0xPGIuaW5kZXhPZigicHJlLWFwcHJvIil8fC0xPGIuaW5kZXhPZigibmV3LXdlc3QiKXx8LTE8Yi5pbmRleE9mKCJjb25maWRlbnRpYWxpdGUiKXx8LTE8Yi5pbmRleE9mKCJwcml2YWN5LXBvbGljeSIpfHwtMTxiLmluZGV4T2YoInRlcm1lcy1ldC1jb25kaXRpb25zIil8fC0xPGIuaW5kZXhPZigidGVybXMtYW5kLWNvbmRpdGlvbnMiKSlkPSIuaHRtbCI7ZWxzZXt2YXIgZT0obmV3IERhdGUpLmdldEZ1bGxZZWFyKCk7InVuZGVmaW5lZCI9PXR5cGVvZiBkWzJdfHxlIT1kWzJdJiZlKzEhPWRbMl18fChjPSJuZXciKTtkPSIvIitifWQ9YS5nZXRBdHRyaWJ1dGUoInRhcmdldFVSSSIpLnJlcGxhY2UoIi5odG1sIiwKZCl9ZWxzZXtzd2l0Y2goYS5nZXRBdHRyaWJ1dGUoImFjdGlvbiIpKXtjYXNlICJUZXN0RHJpdmVBY3Rpb25Cb3giOmQ9JCgiI3Rlc3REcml2ZUZvbGRlciIpLnZhbCgpK2I7YnJlYWs7Y2FzZSAiUHJpY2VBY3Rpb25Cb3giOmQ9JCgiI3ByaWNlUmVxdWVzdEZvbGRlciIpLnZhbCgpK2I7YnJlYWs7Y2FzZSAiRXZhbEFjdGlvbkJveCI6ZD0kKCIjZXZhbENhckZvbGRlciIpLnZhbCgpK2I7YnJlYWs7Y2FzZSAiRmluYW5jZUFjdGlvbkJveCI6ZD0kKCIjRmluYW5jZUZvbGRlciIpLnZhbCgpK2I7YnJlYWs7ZGVmYXVsdDoidW5kZWZpbmVkIiE9dHlwZW9mICQoYSkuYXR0cigiZm9sZGVyIik\/ZD0kKGEpLmF0dHIoImZvbGRlciIpOiJ1bmRlZmluZWQiIT10eXBlb2YgJChhKS5hdHRyKCJ0YXJnZXR1cmkiKSYmKGQ9JChhKS5hdHRyKCJ0YXJnZXR1cmkiKSl9Q29va2llcy5zZXQoImZyb21kZXRhaWxzcGFnZSIsIjEiLG51bGwsIi8iKX1pZigidW5kZWZpbmVkIiE9dHlwZW9mIGQmJm51bGwhPQpkJiYwPGQubGVuZ3RoKXtiPWQyY21lZGlhLmh0bWxGaWxlKCExLCEwKTtlPWIuc3BsaXQoIi0iKTt2YXIgaz0iIixoPSIiLG49IiI7MDxlLmxlbmd0aCYmKGs9ZVswXSk7MTxlLmxlbmd0aCYmKGg9ZVsxXSk7MjxlLmxlbmd0aCYmKG49ZVsyXSk7MDxrLmxlbmd0aCYmMDxoLmxlbmd0aCYmMDxuLmxlbmd0aCYmIWlzTmFOKG4pJiY0PT1uLnRvU3RyaW5nKCkubGVuZ3RoJiYtMTxkLmluZGV4T2YoIi5odG0iKSYmKGU9YS5nZXRBdHRyaWJ1dGUoImZvbGRlciIpLGQ9InVuZGVmaW5lZCIhPXR5cGVvZiBlJiZudWxsIT1lP2U6ZC5zdWJzdHJpbmcoMCxkLmxhc3RJbmRleE9mKCIvIikrMSksZD1kLnJlcGxhY2UoIi5odG1sIiwiLyIpK2IrIi5odG1sIik7JChhKS5oYXNDbGFzcygidHJhZGVpbkxpbmsiKSYmKDA8YS5nZXRBdHRyaWJ1dGUoInRhcmdldFVSSSIpLmluZGV4T2YoInRyYWRlaW52YWx1ZXMiKXx8MDxhLmdldEF0dHJpYnV0ZSgidGFyZ2V0VVJJIikuaW5kZXhPZigiaW5zdGFudG9mZmVyLmFjY3UtdHJhZGUuY29tIikpPwpzaG93VHJhZGVJblBvcHVwKGEuZ2V0QXR0cmlidXRlKCJ0YXJnZXRVUkkiKSk6KCJuZXciPT1jJiYoZD1kLnJlcGxhY2UoIm9jY2FzaW9uIiwibmV1ZiIpLnJlcGxhY2UoInVzZWQiLCJuZXciKSksd2luZG93LmxvY2F0aW9uLmhyZWY9ZCl9fQpmdW5jdGlvbiBvcGVuRmluYW5jZU11bHRpc3RlcEZvcm1PbkN1cnJlbnRQYWdlKGEsYixjLGQsZSxrLGgpe2EucHJldmVudERlZmF1bHQoKTthLnN0b3BQcm9wYWdhdGlvbigpO2I\/JCgiI3BvcHVwbWFrZU11bHRpc3RlcEZvcm0iKS52YWwoYik6Ik5FV0NBUkRFVEFJTFMiPT0kKCJib2R5IikuYXR0cigiaWQiKT8kKCIjcG9wdXBtYWtlTXVsdGlzdGVwRm9ybSIpLnZhbCgkKCIuYnJhbmRlbWFpbCIpLnZhbCgpKToiY2FyZGV0YWlsLmh0bWwiPT0kKCIjUEFHRUlEIikudmFsKCkmJiQoIiNwb3B1cG1ha2VNdWx0aXN0ZXBGb3JtIikudmFsKCQoIiNwaG9uZW1ha2UiKS52YWwoKSk7Yz8kKCIjcG9wdXBtb2RlbE11bHRpc3RlcEZvcm0iKS52YWwoYyk6Ik5FV0NBUkRFVEFJTFMiPT0kKCJib2R5IikuYXR0cigiaWQiKT8kKCIjcG9wdXBtb2RlbE11bHRpc3RlcEZvcm0iKS52YWwoJCgiLm1vZGVsZW1haWwiKS52YWwoKSk6ImNhcmRldGFpbC5odG1sIj09JCgiI1BBR0VJRCIpLnZhbCgpJiYKJCgiI3BvcHVwbW9kZWxNdWx0aXN0ZXBGb3JtIikudmFsKCQoIiNwaG9uZW1vZGVsIikudmFsKCkpO2Q\/JCgiI3BvcHVweWVhck11bHRpc3RlcEZvcm0iKS52YWwoZCk6Ik5FV0NBUkRFVEFJTFMiPT0kKCJib2R5IikuYXR0cigiaWQiKT8kKCIjcG9wdXB5ZWFyTXVsdGlzdGVwRm9ybSIpLnZhbCgkKCIueWVhcmVtYWlsIikudmFsKCkpOiJjYXJkZXRhaWwuaHRtbCI9PSQoIiNQQUdFSUQiKS52YWwoKSYmJCgiI3BvcHVweWVhck11bHRpc3RlcEZvcm0iKS52YWwoJCgiI3Bob25lbXllYXIiKS52YWwoKSk7ZT8kKCIjcG9wdXBzdG9ja251bWJlck11bHRpc3RlcEZvcm0iKS52YWwoZSk6Ik5FV0NBUkRFVEFJTFMiPT0kKCJib2R5IikuYXR0cigiaWQiKT8kKCIjcG9wdXBzdG9ja251bWJlck11bHRpc3RlcEZvcm0iKS52YWwoIiIpOiJjYXJkZXRhaWwuaHRtbCI9PSQoIiNQQUdFSUQiKS52YWwoKSYmJCgiI3BvcHVwc3RvY2tudW1iZXJNdWx0aXN0ZXBGb3JtIikudmFsKCQoIiNwaG9uZXN0b2NrbnVtYmVyIikudmFsKCkpOwprPyQoIiN0b3BjYXJpZE11bHRpc3RlcEZvcm0iKS52YWwoayk6Ik5FV0NBUkRFVEFJTFMiPT0kKCJib2R5IikuYXR0cigiaWQiKSYmJCgiI3RvcGNhcmlkTXVsdGlzdGVwRm9ybSIpLnZhbCgiIik7aCYmKGguc2VuZFRvJiYkKCIjRklOQU5DRV9GT1JNX1NFTkRUT19FTUFJTCIpLnZhbChoLnNlbmRUbyksaC5zZW5kVG9BZGYmJiQoIiNGSU5BTkNFX0ZPUk1fU0VORFRPQURGX0VNQUlMIikudmFsKGguc2VuZFRvQWRmKSxoLmRlYWxlck5hbWUmJiQoIiNGSU5BTkNFX0ZPUk1fREVBTEVSTkFNRSIpLnZhbChoLmRlYWxlck5hbWUpKTthPSJmaW5hbmNlTXVsdGlzdGVwUG9wdXBDb250YWluZXIiOyQoIiNGaW5hbmNlX0Zvcm1UeXBlIikubGVuZ3RoJiYibXVsdGlzdGVwSW5zdGFudCI9PSQoIiNGaW5hbmNlX0Zvcm1UeXBlIikudmFsKCkmJiQoIiNmaW5hbmNlTXVsdGlzdGVwSW5zdGFudFBvcHVwQ29udGFpbmVyIikubGVuZ3RoJiYoYT0iZmluYW5jZU11bHRpc3RlcEluc3RhbnRQb3B1cENvbnRhaW5lciIpOwokKCIjIithKS5wb3B1cGl6ZSgpLnNldFRyaWdnZXIoImNsaWNrIikub3BlbigxKX1mdW5jdGlvbiBvcGVuU2hvd3Jvb21Db250YWN0UG9wdXAoYSxiLGMsZCl7YS5wcmV2ZW50RGVmYXVsdCgpO2Euc3RvcFByb3BhZ2F0aW9uKCk7ZW1haWxIYW5kbGVyLm1ha2U9YjskKCIjbGFzdHZpZXdlZG1ha2UiKS52YWwoYik7ZW1haWxIYW5kbGVyLm1vZGVsPWM7JCgiI2xhc3R2aWV3ZWRtb2RlbCIpLnZhbChjKTtlbWFpbEhhbmRsZXIueWVhcj1kOyQoIiNsYXN0dmlld2VkeWVhciIpLnZhbChkKTskKCIjY29udGFjdHBvcHVwIikucG9wdXBpemUoKS5zZXRUcmlnZ2VyKCJjbGljayIpLm9wZW4oKX12YXIgZDJjbWVkaWE9ZDJjbWVkaWF8fHt9OwpkMmNtZWRpYS5zY3JvbGxUbz1mdW5jdGlvbihhLGIsYyl7InVuZGVmaW5lZCI9PXR5cGVvZiBjJiYoYz0xRTMpOyJ1bmRlZmluZWQiPT10eXBlb2YgYiYmKGI9MCk7JCgiaHRtbCwgYm9keSIpLmFuaW1hdGUoe3Njcm9sbFRvcDokKGEpLm9mZnNldCgpLnRvcC1ifSxjKTtyZXR1cm4hMX07CmQyY21lZGlhLnVybD17X3Nhbml0aXplOiEwLGRlc2FuaXRpemU6ZnVuY3Rpb24oYSl7aWYoInN0cmluZyI9PT10eXBlb2YgYSlyZXR1cm4gYS5yZXBsYWNlKC9fL2csIi0iKTtpZigib2JqZWN0Ij09PXR5cGVvZiBhKXtmb3IodmFyIGIgaW4gYSlhW2JdPXRoaXMuZGVzYW5pdGl6ZShhW2JdKTtyZXR1cm4gYX19LGdlbmVyYXRlOmZ1bmN0aW9uKCl7dmFyIGE9IiI7dGhpcy5fc2FuaXRpemUmJihhcmd1bWVudHM9dGhpcy5zYW5pdGl6ZShhcmd1bWVudHMpKTtmb3IoaT0wO2k8YXJndW1lbnRzLmxlbmd0aC0xO2krKylhKz1hcmd1bWVudHNbaV0rIi0iO3JldHVybiBhK2FyZ3VtZW50c1tpXSsiLmh0bWwifSxwYXJzZTpmdW5jdGlvbigpe3VybD1kZWNvZGVVUklDb21wb25lbnQoZG9jdW1lbnQuVVJMKTtzdHJQYXJhbT11cmwuc3Vic3RyaW5nKHVybC5sYXN0SW5kZXhPZigiLyIpKTtvYmpQYXJhbT17bWFrZTpudWxsLG1vZGVsOm51bGwseWVhcjpudWxsLGlkOm51bGx9O2ZvdW5kPSExOwp2YXIgYTtudWxsIT0oYT1zdHJQYXJhbS5tYXRjaCgvXlwvKDIwWzAtOV17Mn18MTlbMC05XXsyfSktKFteLV0rLVteLVwuXSspKC4qXC5odG1sKS8pKSYmKHN0clBhcmFtPSIvIithWzJdKyItIithWzFdK2FbM10pO2E9c3RyUGFyYW0ubWF0Y2goL1wvKFteL10qKS0oLiopLShcZHs0fSkoLWlkKFxkKikpPy5odG1sLyk7Zm91bmR8fG51bGw9PT1hfHwob2JqUGFyYW0ubWFrZT1hWzFdLG9ialBhcmFtLm1vZGVsPWFbMl0sb2JqUGFyYW0ueWVhcj1hWzNdLG9ialBhcmFtLmlkPWFbNV0sZm91bmQ9ITApO2E9c3RyUGFyYW0ubWF0Y2goL1wvKFteL10qKS0oLiopLShcZHs0fSkoLWNcZCopPy5odG1sLyk7Zm91bmR8fG51bGw9PT1hfHwob2JqUGFyYW0ubWFrZT1hWzFdLG9ialBhcmFtLm1vZGVsPWFbMl0sb2JqUGFyYW0ueWVhcj1hWzNdLGZvdW5kPSEwKTthPXN0clBhcmFtLm1hdGNoKC9cLyhbXi9dKiktKFxkezR9KS5odG1sLyk7Zm91bmR8fG51bGw9PT1hfHwob2JqUGFyYW0ubWFrZT0KYVsxXSxvYmpQYXJhbS55ZWFyPWFbMl0sZm91bmQ9ITApO2E9c3RyUGFyYW0ubWF0Y2goL1wvKFteL10qKS0oW14uXSopLmh0bWwvKTtmb3VuZHx8bnVsbD09PWF8fChvYmpQYXJhbS5tYWtlPWFbMV0sb2JqUGFyYW0ubW9kZWw9YVsyXSxmb3VuZD0hMCk7YT1zdHJQYXJhbS5tYXRjaCgvXC8oW14vXSopLmh0bWwvKTtmb3VuZHx8bnVsbD09PWF8fChvYmpQYXJhbS5tYWtlPWFbMV0sZm91bmQ9ITApO3RoaXMuX3Nhbml0aXplJiYob2JqUGFyYW09dGhpcy5kZXNhbml0aXplKG9ialBhcmFtKSk7cmV0dXJuIG9ialBhcmFtfSxzYW5pdGl6ZTpmdW5jdGlvbihhKXtpZigic3RyaW5nIj09PXR5cGVvZiBhKXJldHVybiBhLnJlcGxhY2UoLy0vZywiXyIpLnJlcGxhY2UoL1snIl0vZywiIik7aWYoIm9iamVjdCI9PT10eXBlb2YgYSl7Zm9yKHZhciBiIGluIGEpYVtiXT10aGlzLnNhbml0aXplKGFbYl0pO3JldHVybiBhfX0sc2FuaXRpemVSZWZlcmVyOmZ1bmN0aW9uKGEpe3JldHVybiBhLnJlcGxhY2UoL1snImAoKTw+XFtcXXt9fCFdL2csCiIiKX19O2QyY21lZGlhLmdldEh0dHBUZXh0PWZ1bmN0aW9uKCl7cmV0dXJuImh0dHBzOiI9PWRvY3VtZW50LmxvY2F0aW9uLnByb3RvY29sJiYkKCIjdG9wZGVwbG95bWVudHR5cGUiKS5sZW5ndGgmJiJsaXZlIj09JCgiI3RvcGRlcGxveW1lbnR0eXBlIikudmFsKCk\/Imh0dHBzIjoiaHR0cCJ9O2QyY21lZGlhLmNhcGl0YWxpc2VGaXJzdExldHRlcj1mdW5jdGlvbihhKXtyZXR1cm4idW5kZWZpbmVkIj09dHlwZW9mIGE\/IiI6YS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSthLnNsaWNlKDEpfTtkMmNtZWRpYS5jYXBpdGFsaXNlRmlyc3RMZXR0ZXJPZkV2ZXJ5V29yZD1mdW5jdGlvbihhKXtyZXR1cm4idW5kZWZpbmVkIj09dHlwZW9mIGE\/IiI6YS5zcGxpdCgiICIpLnJlZHVjZShmdW5jdGlvbihiLGMpe2M9ZDJjbWVkaWEuY2FwaXRhbGlzZUZpcnN0TGV0dGVyKGMpO3JldHVybiBiP2IrIiAiK2M6Y30sIiIpfTsKZDJjbWVkaWEuc2FmZVN0cmluZz1mdW5jdGlvbihhKXt2YXIgYj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtiLnRleHRDb250ZW50PWE7cmV0dXJuIGIuaW5uZXJUZXh0fTsKZDJjbWVkaWEuaHRtbEZpbGU9ZnVuY3Rpb24oYSxiKXt2YXIgYz13aW5kb3cubG9jYXRpb24uc2VhcmNoLmxlbmd0aCYmLTE8d2luZG93LmxvY2F0aW9uLnNlYXJjaC5pbmRleE9mKCJwYXRoPSIpP3dpbmRvdy5sb2NhdGlvbi5zZWFyY2g6d2luZG93LmxvY2F0aW9uLnBhdGhuYW1lO2M9Yy5zdWJzdHJpbmcoYy5sYXN0SW5kZXhPZigiLyIpKzEpO2M9ZDJjbWVkaWEuc2FmZVN0cmluZyhjKTt0cnl7dmFyIGQ9ZGVjb2RlVVJJQ29tcG9uZW50KGMpfWNhdGNoKGspe3ZhciBlPXsiJUMwIjoiJkFncmF2ZTsiLCIlQzEiOiImQWFjdXRlOyIsIiVDMiI6IiZBY2lyYzsiLCIlQzMiOiImQXRpbGRlOyIsIiVDNCI6IiZBdW1sOyIsIiVDNSI6IiZBcmluZzsiLCIlQzYiOiImQUVsaWc7IiwiJUM3IjoiJkNjZWRpbDsiLCIlQzgiOiImRWdyYXZlOyIsIiVDOSI6IiZFYWN1dGU7IiwiJUNBIjoiJkVjaXJjOyIsIiVDQiI6IiZFdW1sOyIsIiVDQyI6IiZJZ3JhdmU7IiwiJUNEIjoiJklhY3V0ZTsiLCIlQ0UiOiImSWNpcmM7IiwKIiVDRiI6IiZJdW1sOyIsIiVEMCI6IiZFVEg7IiwiJUQxIjoiJk50aWxkZTsiLCIlRDIiOiImT2dyYXZlOyIsIiVEMyI6IiZPYWN1dGU7IiwiJUQ0IjoiJk9jaXJjOyIsIiVENSI6IiZPdGlsZGU7IiwiJUQ2IjoiJk91bWw7IiwiJUQ4IjoiJk9zbGFzaDsiLCIlRDkiOiImVWdyYXZlOyIsIiVEQSI6IiZVYWN1dGU7IiwiJURCIjoiJlVjaXJjOyIsIiVEQyI6IiZVdW1sOyIsIiVERCI6IiZZYWN1dGU7IiwiJURFIjoiJlRIT1JOOyIsIiVERiI6IiZzemxpZzsiLCIlRTAiOiImYWdyYXZlOyIsIiVFMSI6IiZhYWN1dGU7IiwiJUUyIjoiJmFjaXJjOyIsIiVFMyI6IiZhdGlsZGU7IiwiJUU0IjoiJmF1bWw7IiwiJUU1IjoiJmFyaW5nOyIsIiVFNiI6IiZhZWxpZzsiLCIlRTciOiImY2NlZGlsOyIsIiVFOCI6IiZlZ3JhdmU7IiwiJUU5IjoiJmVhY3V0ZTsiLCIlRUEiOiImZWNpcmM7IiwiJUVCIjoiJmV1bWw7IiwiJUVDIjoiJmlncmF2ZTsiLCIlRUQiOiImaWFjdXRlOyIsIiVFRSI6IiZpY2lyYzsiLAoiJUVGIjoiJml1bWw7IiwiJUYwIjoiJmV0aDsiLCIlRjEiOiImbnRpbGRlOyIsIiVGMiI6IiZvZ3JhdmU7IiwiJUYzIjoiJm9hY3V0ZTsiLCIlRjQiOiImb2NpcmM7IiwiJUY1IjoiJm90aWxkZTsiLCIlRjYiOiImb3VtbDsiLCIlRjciOiImZGl2aWRlOyIsIiVGOCI6IiZvc2xhc2g7IiwiJUY5IjoiJnVncmF2ZTsiLCIlRkEiOiImdWFjdXRlOyIsIiVGQiI6IiZ1Y2lyYzsiLCIlRkMiOiImdXVtbDsiLCIlRkQiOiImeWFjdXRlOyIsIiVGRSI6IiZ0aG9ybjsiLCIlRkYiOiImeXVtbDsifTtkPWMucmVwbGFjZSgvJVswLTlBLUZdezJ9L2lnLGZ1bmN0aW9uKGgpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgZVtoXSlyZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KGgpO3ZhciBuPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTtuLnRleHRDb250ZW50PWVbaF07cmV0dXJuIG4uaW5uZXJUZXh0fSl9ZD1kLnN1YnN0cmluZygwLGQuaW5kZXhPZigiLmh0bSIpKTthJiYoZD1kLnJlcGxhY2UoLyAvZywKIl8iKS5yZXBsYWNlKC8nL2csIiIpLnJlcGxhY2UoIi5odG1sIiwiIikpO251bGwhPShhPWQubWF0Y2goL14oMTlbMC05XXsyfXwyMFswLTldezJ9KS0oW14tXSstW14tXSspKC4qKSQvKSkmJihkPWFbMl0rIi0iK2FbMV0rYVszXSwiRU5HTElTSCI9PSgiRU5HTElTSCI9PSQoIiNhY3RpdmVzaXRlbGFuZ3VhZ2UiKS52YWwoKT8iRU5HTElTSCI6IkZSRU5DSCIpJiZiJiYoZD1hWzFdKyItIithWzJdK2FbM10pKTtyZXR1cm4gZH07ZDJjbWVkaWEuaXNIb21lcGFnZT1mdW5jdGlvbigpe3ZhciBhPXdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZTtyZXR1cm4iLyI9PWF8fCIvZW5nLyI9PWF8fCIvZnIvIj09YX07ZDJjbWVkaWEucGFnZURlcGFydG1lbnQ9ZnVuY3Rpb24oKXt2YXIgYT0kKCIjZGVmYXVsdERlcGFydG1lbnQiKS52YWwoKTtyZXR1cm4iT1RIRVIiPT1hJiZkMmNtZWRpYS5pc0hvbWVwYWdlKCk\/IkhPTUVQQUdFIjphfTsKdmFyIGpzX2QyY19nZXRfdmFsPWpzX2QyY19nZXRfdmFsfHxmdW5jdGlvbihhKXt0cnl7cmV0dXJuKGVsPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGEpKT9lbC52YWx1ZToiIn1jYXRjaChiKXtyZXR1cm4gY29uc29sZSYmY29uc29sZS5sb2cmJmNvbnNvbGUubG9nKCJTeXN0ZW0gZmFpbGVkIHdoaWxlIHJldHJpZXZpbmcgcmVwbGFjZW1lbnQgdmFsdWU6ICIrYi5tZXNzYWdlLGIpLGF9fTtTdHJpbmcucHJvdG90eXBlLm5vRDJDUmVwbGFjZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLnZhbHVlT2YoKX07CmQyY0JHQ2xpY2s9ZnVuY3Rpb24oYSl7dmFyIGI9dGhpczskLmV4dGVuZChiLGEpO3RoaXMuc2V0PWZ1bmN0aW9uKGMpeyJ1bmRlZmluZWQiPT10eXBlb2YgYyYmKGM9ITEpO3ZhciBkPWIuYmdJbWdVcmwsZT1iLmJnSW1nUGF0aCxrPWIuYmdJbWdGaXhlZCxoPWIuYmdJbWdSZXNwb25zaXZlLG49Yi5tYWtlLHg9ZG9jdW1lbnQubG9jYXRpb24ucGF0aG5hbWUucmVwbGFjZSgvLS9nLCIiKSx2PSQoIiNhY3RpdmVzaXRlbGFuZ3VhZ2UiKS52YWwoKT8kKCIjYWN0aXZlc2l0ZWxhbmd1YWdlIikudmFsKCkudG9Mb3dlckNhc2UoKToiZnJlbmNoIixmPSIiLGc9ITE7MCE9YyYmKG49Yy50b0xvd2VyQ2FzZSgpKTt2YXIgbT1jPSIiO24\/ZS5oYXNPd25Qcm9wZXJ0eShuKT8oYz1lW25dLG09a1tuXStoW25dLGc9ITApOmUuaGFzT3duUHJvcGVydHkoImFsbCIpPyhjPWUuYWxsLG09ay5hbGwraC5hbGwsZz0hMCk6ZS5oYXNPd25Qcm9wZXJ0eSh2KSYmKGM9ZVt2XSxtPWtbdl0raFt2XSk6ZS5oYXNPd25Qcm9wZXJ0eSh2KSYmCjA9PWcmJihjPWVbdl0sbT1rW3ZdK2hbdl0pO2MmJihiLmJnSW1nPWMuc3BsaXQoIi8iKS5wb3AoKSwkKCJib2R5IikuYXR0cigic3R5bGUiLCJiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJyIrYysiJyk7IGJhY2tncm91bmQtcG9zaXRpb246IHRvcCBjZW50ZXI7IGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7IittKSk7Zm9yKHZhciBsIGluIGQpe2lmKC0xIT14LmluZGV4T2YobCx4KSl7Zj1kW2xdO2JyZWFrfWlmKGw9PXYpe2Y9ZFtsXTticmVha319MD09Zi5sZW5ndGgmJihkLmhhc093blByb3BlcnR5KG4pP2Y9ZFtuXTpkLmhhc093blByb3BlcnR5KCJhbGwiKSYmKGY9ZC5hbGwpKTswPGYubGVuZ3RoJiYoZD0kKHdpbmRvdykud2lkdGgoKS8yLSQoIi53cmFwcGVyIikud2lkdGgoKS8yLGU9JCh3aW5kb3cpLndpZHRoKCkvMiskKCIud3JhcHBlciIpLndpZHRoKCkvMiwkKCIjYmdDbGljazEiKS5yZW1vdmUoKSwkKCIjYmdDbGljazIiKS5yZW1vdmUoKSwkKCJib2R5IikuYXBwZW5kKCI8ZGl2IGlkPSdiZ0NsaWNrMScgc3R5bGU9J3otaW5kZXg6MTAwO2N1cnNvcjpwb2ludGVyO3dpZHRoOiIrCmQrInB4O2hlaWdodDoxMDAlO3Bvc2l0aW9uOmZpeGVkO2xlZnQ6MHB4O3RvcDowcHg7Jz48L2Rpdj4iKSwkKCJib2R5IikuYXBwZW5kKCI8ZGl2IGlkPSdiZ0NsaWNrMicgc3R5bGU9J3otaW5kZXg6MTAwO2N1cnNvcjpwb2ludGVyO3dpZHRoOiIrZCsicHg7aGVpZ2h0OjEwMCU7cG9zaXRpb246Zml4ZWQ7bGVmdDoiK2UrInB4O3RvcDowcHg7Jz48L2Rpdj4iKSwkKCIjYmdDbGljazEiKS5vbigiY2xpY2siLGZ1bmN0aW9uKCl7Yi5yZWRpcmVjdChmKX0pLCQoIiNiZ0NsaWNrMiIpLm9uKCJjbGljayIsZnVuY3Rpb24oKXtiLnJlZGlyZWN0KGYpfSkpfTt0aGlzLnJlc2V0PWZ1bmN0aW9uKGMpe2Iuc2V0KCl9O3RoaXMucmVkaXJlY3Q9ZnVuY3Rpb24oYyl7ImxpdmUiPT1iLmRlcGxveW1lbnRUeXBlJiYoZ2FUcmFjaygiX3RyYWNrRXZlbnQiLCJDbGlxdWVzIiwiSW1hZ2UtZGUtZm9uZCIsYi5iZ0ltZywxKSwiZnVuY3Rpb24iPT10eXBlb2YgYi5kMmNFdmVudCYmYi5kMmNFdmVudC5jYWxsKGIsCmIuYmdJbWcpKTt3aW5kb3cub3BlbihjKX07JCh3aW5kb3cpLm9uKCJyZXNpemUiLGIucmVzZXQpO3JldHVybiB0aGlzfTt2YXIgaW5qZWN0R29vZ2xlTWFwc0tleT1mdW5jdGlvbihhKXtsZXQgYj1udWxsO3JldHVybiBmdW5jdGlvbihjKXtpZihiKXJldHVybiBjKGIpO2EuYWpheCgiL2FqYXgvZ2V0R29vZ2xlTWFwc0tleSIpLmRvbmUoZnVuY3Rpb24oZCl7Yj0oZC5rZXk\/ZC5rZXk6IiIpLnJlcGxhY2UoL1teQS16MC05Xy1dL2csIiIpO2MoYil9KX19KGpRdWVyeSk7CmZ1bmN0aW9uIHJoc1Byb21vSW1hZ2UoYSl7dmFyIGI9dGhpcztiLmRhdGE9YTt2YXIgYz1bXSxkPS0xO2E9d2luZG93LmxvY2F0aW9uO2E9ZGVjb2RlVVJJQ29tcG9uZW50KGEucGF0aG5hbWUrYS5zZWFyY2gpLnRvTG93ZXJDYXNlKCk7Zm9yKHNlYXJjaCBpbiBiLmRhdGEpaWYoImRlZmF1bHQiPT1zZWFyY2h8fC0xIT1hLmluZGV4T2YoZGVjb2RlVVJJQ29tcG9uZW50KChzZWFyY2grIiIpLnRvTG93ZXJDYXNlKCkpKSlmb3IoaT0wO2k8Yi5kYXRhW3NlYXJjaF0ubGVuZ3RoO2krKyljLnB1c2goYi5kYXRhW3NlYXJjaF1baV0pO2Iucm90YXRlPWZ1bmN0aW9uKCl7KytkPmMubGVuZ3RoLTEmJihkPTApO3ZhciBlPWNbZF0saz0kKCI8aW1nIC8+IikuYXR0cih7c3JjOmUuaSxzdHlsZToid2lkdGg6MTAwJTsgbWF4LXdpZHRoOjI4MHB4OyBib3JkZXItcmFkaXVzOiA1cHg7IGN1cnNvcjpwb2ludGVyOyIsYWx0OiIifSk7JCgiZGl2I3JpZ2h0UHJvbW9JbWFnZSIpLmh0bWwoayk7bnVsbCE9CmUudSYmMDxlLnUubGVuZ3RoJiYkKCJkaXYjcmlnaHRQcm9tb0ltYWdlIikuYXR0cigib25jbGljayIsIndpbmRvdy5sb2NhdGlvbiA9ICciK2UudSsiJyIpOyQoImRpdiNyaWdodFByb21vSW1hZ2UiKS5zaG93KCk7MSE9Yy5sZW5ndGgmJnNldFRpbWVvdXQoYi5yb3RhdGUsZS5kZWxheSl9OzA8Yy5sZW5ndGgmJmIucm90YXRlKCl9ZnVuY3Rpb24gY2xlYW5UZXh0KGEpe2E9YS5yZXBsYWNlKC9bXHg2MF0vZywiJyIpO2E9YS5yZXBsYWNlKC\/igJkvZywiJyIpO2E9YS5yZXBsYWNlKC9gL2csIiciKTtyZXR1cm4gYT1hLnJlcGxhY2UoL1tcdTIwMTld4oCZL2csIiciKX0KZnVuY3Rpb24gZW5jb2RlVGV4dChhKXt2YXIgYj1hO3RyeXtiPSQuYmFzZTY0LmVuY29kZShhKX1jYXRjaChrKXtjb25zb2xlLmxvZyhrLm1lc3NhZ2Usayk7YT0iIjtmb3IodmFyIGM9MDtjPGIubGVuZ3RoO2MrKyl7dmFyIGQ9Yi5jaGFyQXQoYyksZT1kLmNoYXJDb2RlQXQoMCk7aWYoNDc8ZSYmNTg+ZXx8NjQ8ZSYmOTE+ZXx8OTY8ZSYmMTIzPmUpYSs9ZDtlbHNlIHRyeXskLmJhc2U2NC5lbmNvZGUoZCksYSs9ZH1jYXRjaChoKXt9fWI9JC5iYXNlNjQuZW5jb2RlKGEpfXJldHVybiBifWZ1bmN0aW9uIGNsZWFuQW5kRW5jb2RlVGV4dChhKXt0cnl7dmFyIGI9IiI7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBhKXJldHVybiIiO2I9InN0cmluZyIhPXR5cGVvZiBhP2EudG9TdHJpbmcoKTphO2I9Y2xlYW5UZXh0KGIpO3JldHVybiBiPWVuY29kZVRleHQoYil9Y2F0Y2goYyl7cmV0dXJuIGNvbnNvbGUubG9nKGMubWVzc2FnZSxjKSxhfX0KZnVuY3Rpb24gRXhQaG9uZShhKXtzd2l0Y2goYS50eXBlKXtjYXNlICJtb3VzZWVudGVyIjokKCIuZXh0ZW5kZWRQaG9uZSIpLnNob3coKTticmVhaztjYXNlICJtb3VzZWxlYXZlIjokKCIuZXh0ZW5kZWRQaG9uZSIpLmhpZGUoKX19ZnVuY3Rpb24gZ2V0UmVzaXplZEltYWdlcygpe2RlYnVnRW5hYmxlZCgpO3JldHVybiExfWZ1bmN0aW9uIGNoYW5nZUhvbWVBY3Rpb25CYWNrSW1hZ2UoYSxiKXskKGEpLmNzcyh7YmFja2dyb3VuZDoidXJsKCIrYisiKSIsYmFja2dyb3VuZFJlcGVhdDoibm8tcmVwZWF0IixiYWNrZ3JvdW5kU2l6ZToiMjQwcHggMTIxcHgifSl9dmFyIF9fY3VycmVudFRocmVhc2hvbGQ7CmZ1bmN0aW9uIHRocmVhZGhvbGRTY3JvbGxQZXJjZW50KCl7X19jdXJyZW50VGhyZWFzaG9sZHx8KF9fY3VycmVudFRocmVhc2hvbGQ9KCQod2luZG93KS5oZWlnaHQoKSskKGRvY3VtZW50KS5zY3JvbGxUb3AoKSkvJChkb2N1bWVudCkuaGVpZ2h0KCksc2V0VGltZW91dCgiX19jdXJyZW50VGhyZWFzaG9sZCA9IG51bGwiLDMzMykpO3JldHVybiBfX2N1cnJlbnRUaHJlYXNob2xkfQpmdW5jdGlvbiB0aHJlc2hvbGRFeGVjKGEsYixjKXt2YXIgZD1udWxsO2M9Yz9jOltdO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBhKXt2YXIgZT1NYXRoLnJvdW5kKDFFNCphKS8xRTQ7MTxlJiYoZS89MTAwKTthPWZ1bmN0aW9uKCl7cmV0dXJuIGV9fXZhciBrPWZ1bmN0aW9uKCl7aWYodGhyZWFkaG9sZFNjcm9sbFBlcmNlbnQoKT5hKCkpe3RyeXtiLmFwcGx5KG51bGwsYyl9Y2F0Y2goaCl7Y29uc29sZS5sb2coaCl9ZD1jbGVhckludGVydmFsKGQpfX07JChmdW5jdGlvbigpe3NldFRpbWVvdXQoZnVuY3Rpb24oKXtkPXNldEludGVydmFsKGssMzMzKX0sMkUzKX0pfQpmdW5jdGlvbiBzY3JvbGx1cEV4ZWMoYSl7dmFyIGI9bnVsbCxjPTAsZD1mdW5jdGlvbigpeyQod2luZG93KS5vbigic2Nyb2xsIixmdW5jdGlvbihlKXtlPSQodGhpcykuc2Nyb2xsVG9wKCk7ZTxjJiYoYS5jYWxsKG51bGwpLGI9Y2xlYXJJbnRlcnZhbChiKSk7Yz1lfSl9OyQoZnVuY3Rpb24oKXtiPXNldEludGVydmFsKGQsMzMzKX0pfWZ1bmN0aW9uIGluVmlld0V4ZWMoYSxiKXt0aHJlc2hvbGRFeGVjKGZ1bmN0aW9uKCl7dmFyIGM9JChhKTt0cnl7cmV0dXJuIWMubGVuZ3RofHxjLmlzKCI6aGlkZGVuIil8fDA9PWMub2Zmc2V0KCkudG9wPy45NTpjLm9mZnNldCgpLnRvcC8kKGRvY3VtZW50KS5oZWlnaHQoKX1jYXRjaChkKXtyZXR1cm4uOTV9fSxiLFthXSl9dmFyIGx0X0lFOT0iZnVuY3Rpb24iIT10eXBlb2YgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcj8hMDohMSxsdF9JRTExPTA9PSFkb2N1bWVudC5hbGw7CmZ1bmN0aW9uIGlzSUUoKXt2YXIgYT1kb2N1bWVudC5kb2N1bWVudE1vZGU7dHJ5e2RvY3VtZW50LmRvY3VtZW50TW9kZT0iIn1jYXRjaChjKXt9dmFyIGI9Im51bWJlciI9PXR5cGVvZiBkb2N1bWVudC5kb2N1bWVudE1vZGV8fChuZXcgRnVuY3Rpb24oInJldHVybi8qQGNjX29uIUAqLyExIikpKCk7dHJ5e2RvY3VtZW50LmRvY3VtZW50TW9kZT1hfWNhdGNoKGMpe31yZXR1cm4gYn12YXIgdD0wO19fc3RhcnQ9ZnVuY3Rpb24oKXt0PShuZXcgRGF0ZSkuZ2V0VGltZSgpfTtfX3N0b3A9ZnVuY3Rpb24oKXt2YXIgYT0obmV3IERhdGUpLmdldFRpbWUoKTtjb25zb2xlLmxvZygidG9vayIsKGEtdCkvMUUzKX07dmFyIGFsZXJ0RmFsbGJhY2s9ITA7aWYoInVuZGVmaW5lZCI9PT10eXBlb2YgY29uc29sZXx8InVuZGVmaW5lZCI9PT10eXBlb2YgY29uc29sZS5sb2cpY29uc29sZT17fSxjb25zb2xlLmxvZz1hbGVydEZhbGxiYWNrP2Z1bmN0aW9uKGEpe306ZnVuY3Rpb24oKXt9OwpBcnJheS5wcm90b3R5cGUubWFwfHwoQXJyYXkucHJvdG90eXBlLm1hcD1mdW5jdGlvbihhLGIpe3ZhciBjLGQ7aWYobnVsbD09dGhpcyl0aHJvdyBuZXcgVHlwZUVycm9yKCIgdGhpcyBpcyBudWxsIG9yIG5vdCBkZWZpbmVkIik7dmFyIGU9T2JqZWN0KHRoaXMpLGs9ZS5sZW5ndGg+Pj4wO2lmKCJmdW5jdGlvbiIhPT10eXBlb2YgYSl0aHJvdyBuZXcgVHlwZUVycm9yKGErIiBpcyBub3QgYSBmdW5jdGlvbiIpOzE8YXJndW1lbnRzLmxlbmd0aCYmKGM9Yik7dmFyIGg9QXJyYXkoayk7Zm9yKGQ9MDtkPGs7KXtpZihkIGluIGUpe3ZhciBuPWVbZF07bj1hLmNhbGwoYyxuLGQsZSk7aFtkXT1ufWQrK31yZXR1cm4gaH0pO0FycmF5LnByb3RvdHlwZS5pbmRleE9mfHwoQXJyYXkucHJvdG90eXBlLmluZGV4T2Y9ZnVuY3Rpb24oYSxiKXtiPWJ8fDA7Zm9yKHZhciBjPXRoaXMubGVuZ3RoO2I8YztiKyspaWYodGhpc1tiXT09PWEpcmV0dXJuIGI7cmV0dXJuLTF9KTsKQXJyYXkucHJvdG90eXBlLnJlZHVjZXx8T2JqZWN0LmRlZmluZVByb3BlcnR5KEFycmF5LnByb3RvdHlwZSwicmVkdWNlIix7dmFsdWU6ZnVuY3Rpb24oYSl7aWYobnVsbD09PXRoaXMpdGhyb3cgbmV3IFR5cGVFcnJvcigiQXJyYXkucHJvdG90eXBlLnJlZHVjZSBjYWxsZWQgb24gbnVsbCBvciB1bmRlZmluZWQiKTtpZigiZnVuY3Rpb24iIT09dHlwZW9mIGEpdGhyb3cgbmV3IFR5cGVFcnJvcihhKyIgaXMgbm90IGEgZnVuY3Rpb24iKTt2YXIgYj1PYmplY3QodGhpcyksYz1iLmxlbmd0aD4+PjAsZD0wO2lmKDI8PWFyZ3VtZW50cy5sZW5ndGgpdmFyIGU9YXJndW1lbnRzWzFdO2Vsc2V7Zm9yKDtkPGMmJiEoZCBpbiBiKTspZCsrO2lmKGQ+PWMpdGhyb3cgbmV3IFR5cGVFcnJvcigiUmVkdWNlIG9mIGVtcHR5IGFycmF5IHdpdGggbm8gaW5pdGlhbCB2YWx1ZSIpO2U9YltkKytdfWZvcig7ZDxjOylkIGluIGImJihlPWEoZSxiW2RdLGQsYikpLGQrKztyZXR1cm4gZX19KTsKQXJyYXkucHJvdG90eXBlLmZvckVhY2h8fChBcnJheS5wcm90b3R5cGUuZm9yRWFjaD1mdW5jdGlvbihhKXt2YXIgYixjO2lmKG51bGw9PXRoaXMpdGhyb3cgbmV3IFR5cGVFcnJvcigidGhpcyBpcyBudWxsIG9yIG5vdCBkZWZpbmVkIik7dmFyIGQ9T2JqZWN0KHRoaXMpLGU9ZC5sZW5ndGg+Pj4wO2lmKCJmdW5jdGlvbiIhPT10eXBlb2YgYSl0aHJvdyBuZXcgVHlwZUVycm9yKGErIiBpcyBub3QgYSBmdW5jdGlvbiIpOzE8YXJndW1lbnRzLmxlbmd0aCYmKGI9YXJndW1lbnRzWzFdKTtmb3IoYz0wO2M8ZTspe2lmKGMgaW4gZCl7dmFyIGs9ZFtjXTthLmNhbGwoYixrLGMsZCl9YysrfX0pO2Z1bmN0aW9uIGdldERhdGFBdHRyaWJ1dGVzKGEpe3JldHVybiBhLmRhdGFzZXR8fFtdLnNsaWNlLmNhbGwoYS5hdHRyaWJ1dGVzKS5yZWR1Y2UoZnVuY3Rpb24oYixjKXtyZXR1cm4vXmRhdGEtLy50ZXN0KGMubmFtZSkmJihiW2MubmFtZS5zdWJzdHIoNSldPWMudmFsdWUpLGJ9LHt9KX0KZnVuY3Rpb24gZ2V0UGFyYW1ldGVyQnlOYW1lKGEpe2E9YS5yZXBsYWNlKC9bXFtdLywiXFxbIikucmVwbGFjZSgvW1xdXS8sIlxcXSIpO2E9KG5ldyBSZWdFeHAoIltcXD8mXSIrYSsiPShbXiYjXSopIikpLmV4ZWMobG9jYXRpb24uc2VhcmNoKTtyZXR1cm4gbnVsbD09YT8iIjpkZWNvZGVVUklDb21wb25lbnQoYVsxXS5yZXBsYWNlKC9cKy9nLCIgIikpfQpmdW5jdGlvbiBzaG93VHJhZGVJblBvcHVwKGEpe2lmKDA9PSQoIiN0cmFkZWluTGlua1BvcHVwQ29udGFpbmVyIikubGVuZ3RoKXt2YXIgYj0iNzUwcHgiLGM9IjU3MHB4IjsxPT0vTW9iaS8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSYmKGI9IjMwMHB4IixjPSI2MDBweCIpOyQoImJvZHkiKS5hcHBlbmQoJzxkaXYgaWQ9InRyYWRlaW5MaW5rUG9wdXBDb250YWluZXIiIHN0eWxlPSJ3aWR0aDogJytiKyI7IGhlaWdodDogIitjKyciPjxkaXYgY2xhc3M9ImNsb3NlLXJldmVhbC1tb2RhbCI+JiMyMTU7PC9kaXY+PGlmcmFtZSBzcmM9IicrYSsnIiBhbGxvd3RyYW5zcGFyZW5jeT0idHJ1ZSIgIGNsYXNzPSItdDAgLWwwIC13MTAwcCAtaDEwMHAiIGlkPSJ0cmFkZWluTGlua1BvcHVwSWZyYW1lIj48L2lmcmFtZT48L2Rpdj4nKX0kKCIjdHJhZGVpbkxpbmtQb3B1cENvbnRhaW5lciIpLnBvcHVwaXplKCkuc2V0VHJpZ2dlcigiY2xpY2siKS5vcGVuKCl9CmZ1bmN0aW9uIGN1cnJlbnRQcm9tb1JlZGlyZWN0KCl7ZXZlbnQucHJldmVudERlZmF1bHQoKTtzd2l0Y2goITApe2Nhc2UgImZ1bmN0aW9uIj09dHlwZW9mIHNob3dQb3B1cFdpZGdldDpzaG93UG9wdXBXaWRnZXQoKTticmVhaztjYXNlICJ1bmRlZmluZWQiIT10eXBlb2YgJCgiI1ZpZXdQcm9tb0FjdGlvbkJveExpbmsiKS5hdHRyKCJocmVmIik6JCgiI1ZpZXdQcm9tb0FjdGlvbkJveExpbmsiKVswXS5jbGljaygpO2JyZWFrO2Nhc2UgInVuZGVmaW5lZCIhPXR5cGVvZiAkKCIjcHJvbW90aW9uU2lkZVZCdXR0b24gYSIpLmF0dHIoImhyZWYiKTokKCIjcHJvbW90aW9uU2lkZVZCdXR0b24gYSIpWzBdLmNsaWNrKCk7YnJlYWs7Y2FzZSAidW5kZWZpbmVkIiE9dHlwZW9mICQoIiNWaWV3Q3VzdG9tUHJvbW9BY3Rpb25Cb3hMaW5rIikuYXR0cigiaHJlZiIpOiQoIiNWaWV3Q3VzdG9tUHJvbW9BY3Rpb25Cb3hMaW5rIilbMF0uY2xpY2soKX19CmZ1bmN0aW9uIHNob3dOZXdSZWJhdGVDb2RlUG9wdXAoKXswIT0kKCIjZGlzYWJsZVBvcHVwcyIpLmxlbmd0aCYmMCE9JCgiI2Rpc2FibGVQb3B1cHMiKS52YWwoKXx8JCgiI0ltYWdlUG9wdXBDb250YWluZXJfbmV3cmViYXRlIikucG9wdXBpemUoKS5zZXRUcmlnZ2VyKCJjbGljayIpLm9wZW4oKX1mdW5jdGlvbiBzaG93TmV3QmVzdFByaWNlVmRwUG9wdXAoKXswIT0kKCIjZGlzYWJsZVBvcHVwcyIpLmxlbmd0aCYmMCE9JCgiI2Rpc2FibGVQb3B1cHMiKS52YWwoKXx8JCgiI2Jlc3RQcmljZVZkcE5ld1BvcHVwQ29udGFpbmVyIikucG9wdXBpemUoKS5zZXRUcmlnZ2VyKCJjbGljayIpLm9wZW4oKX0KZnVuY3Rpb24gcHJpbnRfcHJvbW9fcHJldihhKXt2YXIgYj0hMSxjPSQoYSkucGFyZW50cygiLnByb21vcyIpO2E9Yy5maW5kKCIucHJvbW8tdGl0bGUiKS5odG1sKCk7dmFyIGQ9Yy5maW5kKCIucHJvbW8tZGVzYyIpLmh0bWwoKTtjPWMuZmluZCgiLnByb21vLWltYWdlIGltZyIpLmF0dHIoImRhdGEtcHJpbnQtc3JjIik7JCgiI3Byb21vVG9QcmludCIpLnJlbW92ZSgpOyQoIiNwcm9tb1RvUHJpbnRXcmFwIikucmVtb3ZlKCk7JCgiYm9keSIpLmFwcGVuZCgnPGRpdiBjbGFzcz0idG9wcmludCIgaWQ9InByb21vVG9QcmludCI+PGltZyBib3JkZXI9IjAiIHN0eWxlPSJ3aWR0aDoxMDAlOyIgc3JjPSInK2MrJyIgYWx0PSIiIGlkPSJwcm9tb0ltZyI+PGJyPjxicj48Yj4nK2ErIjwvYj48YnI+IitkKyI8L2Rpdj4iKTskKCIjcHJvbW9JbWciKS5vbigibG9hZCIsZnVuY3Rpb24oKXtifHwkKCIjcHJvbW9Ub1ByaW50IikucHJpbnRFbGVtZW50KCk7Yj0hMH0pO3NldFRpbWVvdXQoZnVuY3Rpb24oKXtifHwKJCgiI3Byb21vVG9QcmludCIpLnByaW50RWxlbWVudCgpO2I9ITB9LDFFMyk7cmV0dXJuITF9ZnVuY3Rpb24gZ2V0TXVsdGlwbGVBZGRyZXNzUGhvbmUoYSl7JCgiLm11bHRpQWRkcmVzc1Bob25lIikuc2xpZGVVcCgpO2E9JCgiLm11bHRpQWRkcmVzc1Bob25lIiwkKCQoYSkucGFyZW50KCkpKTskKGEpLmlzKCI6aGlkZGVuIik\/JChhKS5zbGlkZURvd24oKTokKGEpLnNsaWRlVXAoKX0KZnVuY3Rpb24gYWRkR2VuZXJhbFN0eWxlKCl7dmFyIGE9JCgiI0FETUlOX0dFTkVSQUxfQkdfQ09MT1IiKS52YWwoKSxiPSQoIiNkZWZhdWx0X2JsYWNrX3RleHQiKS52YWwoKTtpZigiIzAwMDAwMCIhPWJ8fCIjMDAwIiE9YikkKCIuVXNlZFZkcDJNb2JpbGUgI2JyZWFkY3J1bWJzIikuYWRkQ2xhc3MoInRleHRDb2xvciIpLCQoImkuZmEtZmFjZWJvb2stc3F1YXJlIikuYWRkQ2xhc3MoInRleHRDb2xvciIpLCQoIi51c2VkLWRldGFpbHMgLmRlZmF1bHQgZGl2OmZpcnN0IikuYWRkQ2xhc3MoInRleHRDb2xvciIpOyIjZmZmZmZmIiE9YiYmIiNmZmYiIT1ifHwkKCIuVXNlZFNycDJNb2JpbGUgLmRlZmF1bHQgLm1ha2VNb2RlbFllYXIiKS5hZGRDbGFzcygidGV4dENvbG9yVXNlZFNSUE1vYmlsZSIpOyIjZmZmZmZmIiE9YSYmKCQoIi5vbGQtZGV0YWlscy10ciIpLmFkZENsYXNzKCJiZ05vbmUiKSwkKCIjc3BlY1RpdGxlIikuYWRkQ2xhc3MoImJnTm9uZSIpLCQoIi5Vc2VkVmRwMk1vYmlsZSIpLmFkZENsYXNzKCJvdGhlckJHIikpfQpmdW5jdGlvbiBhcHBlbmRUcmFkZUJvb3N0QmFubmVyKCl7fWRvY1JlYWR5QXJyLnB1c2goKCk9PnthcHBlbmRUcmFkZUJvb3N0QmFubmVyKCk7YWRkR2VuZXJhbFN0eWxlKCl9KTsKalF1ZXJ5KGZ1bmN0aW9uKGEpe2EoIiNuYXYiKS5hZGRDbGFzcygibmF2Iik7KGZ1bmN0aW9uKCl7TENfQVBJPXdpbmRvdy5MQ19BUEl8fHt9O0xDX0FQSS5vbl90aWNrZXRfY3JlYXRlZD1mdW5jdGlvbihtKXt0cnl7KGZ1bmN0aW9uKGwpe251bGwhPWwmJihsPSc8aW1nIHNyYz0iaHR0cHM6Ly9zdGF0cy5kMmNtZWRpYS5jYS9zZXJ2aWNlL2NvbnRhY3QuZ2lmP3RjPScrKG0udGlja2V0X2lkKyImdT0iK2wpKyciIHN0eWxlPSJ3aWR0aDoxcHg7aGVpZ2h0OjFweDtyaWdodDoxMHB4O3RvcDoxMHB4O3Bvc2l0aW9uOmFic29sdXRlOyIgLz4nLGEoImJvZHkiKS5hcHBlbmQobCkpfSkoZnVuY3Rpb24oKXt2YXIgbD0idW5kZWZpbmVkIiE9PXR5cGVvZiB3aW5kb3cuYWN0aXZlUHJvZmlsZUlEP3dpbmRvdy5hY3RpdmVQcm9maWxlSUQ6bnVsbDtyZXR1cm4gbnVsbD09bD9Db29raWVzLmdldCgidXVpZCIpOmx9KCkpfWNhdGNoKGwpe319fSkoKTtpZigiZnVuY3Rpb24iPT10eXBlb2Ygb25Db25maXJtU3VibWl0KWEoIi5jb25maXJtX2h0bWwiKS5vbigic3VibWl0IiwKb25Db25maXJtU3VibWl0KTt0cnl7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBhKCIjc2xpZGVyLm5pdm9TbGlkZXIiKS5hdHRyKCJpZCIpKXt2YXIgYj0hMSxjPSExLGQ9ITEsZT0hMSxrPSExLGg9ITEsbj0xMDAseD0xPGEoIiNzbGlkZXIubml2b1NsaWRlciBhIikubGVuZ3RoPyEwOiExO2EoIiNiYW5uZXJfc2VhcmNoX2Jhcl9jb250YWluZXIiKS5sZW5ndGgmJihoPWs9ZT1kPWM9Yj0hMCxuPWEoIiNCQU5ORVJfU0VBUkNIX0JBUl9WSURFT19PUEFDSVRZIikubGVuZ3RoP2EoIiNCQU5ORVJfU0VBUkNIX0JBUl9WSURFT19PUEFDSVRZIikudmFsKCk6MTAwKTtkb2NSZWFkeUFyci5wdXNoKCgpPT57c2V0VGltZW91dChmdW5jdGlvbigpe2EoIiNzbGlkZXIubml2b1NsaWRlciIpLm5pdm9TbGlkZXIoe2VmZmVjdDoiZmFkZSIsYmVmb3JlQ2hhbmdlOmZ1bmN0aW9uKCl7YSgiI3BhcmFsbGF4V3JhcHBlciIpLmVubGxheCgpfSxhZnRlckNoYW5nZTpmdW5jdGlvbigpe2EoIiNzbGlkZXIubml2b1NsaWRlciIpLnRyaWdnZXIoIm5pdm9TbGlkZXJDaGFuZ2VkIil9LAphZnRlckxvYWQ6ZnVuY3Rpb24oKXthKCIjc2xpZGVyLm5pdm9TbGlkZXIiKS50cmlnZ2VyKCJuaXZvU2xpZGVyTG9hZGVkIik7YSgiI3BhcmFsbGF4V3JhcHBlciIpLmVubGxheCgpO2EoIiNiYW5uZXJfc2VhcmNoX2Jhcl9jb250YWluZXIiKS5sZW5ndGgmJihhKCIjc2xpZGVyLm5pdm9TbGlkZXIiKS5kYXRhKCJuaXZvOnZhcnMiKS5zdG9wLGEoIi5uaXZvLWNvbnRyb2xOYXYiKS5oaWRlKCksYSgiLm5pdm8tZGlyZWN0aW9uTmF2IikuaGlkZSgpLHRoaXMuc3RhcnRZb3V0dWJlKCkpfSxtYW51YWxBZHZhbmNlOmIsdmlkZW9Pbkxvb3A6YyxoaWRlQ29udHJvbDpkLGhpZGVJbmZvOmUsZnVsbFdpZHRoOmssbXV0ZVZpZGVvOmgsdmlkZW9CcmlnaHRuZXNzOm4sY29udHJvbE5hdjp4LGRpcmVjdGlvbk5hdjp4LHNob3dEaXNjbGFpbWVyOiEwfSl9LDVFMyl9KX1pZigidW5kZWZpbmVkIiE9dHlwZW9mIGEoIi5leHRlbmRlZFBob25lVHJpZ2dlciIpLmF0dHIoImlkIikpYSgiLmV4dGVuZGVkUGhvbmVUcmlnZ2VyIikub24oIm1vdXNlZW50ZXIiLApFeFBob25lKS5vbigibW91c2VsZWF2ZSIsRXhQaG9uZSk7dmFyIHY9ZnVuY3Rpb24oKXt9O2EoIi50cmFkZWluTGluayIpLm9uKCJjbGljayIsZnVuY3Rpb24oKXtpZihhKHRoaXMpLmF0dHIoInRhcmdldFVSSSIpJiY2PGEodGhpcykuYXR0cigidGFyZ2V0VVJJIikubGVuZ3RoKXJldHVybiBzaG93VHJhZGVJblBvcHVwKGEodGhpcykuYXR0cigidGFyZ2V0VVJJIikpLCExfSk7YSgiLnVwX21lbnUiKS5vbmUoIm1vdXNlb3ZlciIsdik7c2V0VGltZW91dCh2LDFFNCk7KGZ1bmN0aW9uKCl7aWYoMCE9YSgiI01haW5NZW51X05FVyIpLmxlbmd0aCl7dmFyIHE9YSgiLmltZ19tZW51LnVwX21lbnUgdWwubmF2ID4gbGkjTWFpbk1lbnVfTkVXID4gdWwuc3ViID4gbGkuZmlyc3RJdGVtIikscj0hMTswIT1xLmxlbmd0aCYmKGEoIiNNYWluTWVudV9ORVciKS5maW5kKCIucHJpY2UiKS5jc3MoImN1cnNvciIsInBvaW50ZXIiKS5vbigiY2xpY2siLGZ1bmN0aW9uKCl7dmFyIHA9YSh0aGlzKS5zaWJsaW5ncygpLmZpcnN0KCk7CndpbmRvdy5sb2NhdGlvbj1wLmF0dHIoImhyZWYiKX0pLGEoIiNNYWluTWVudV9ORVciKS5vbigibW91c2VlbnRlciIsZnVuY3Rpb24oKXtjbGVhclRpbWVvdXQocik7cS5hZGRDbGFzcygiaG92ZXIiKX0pLHEuc2libGluZ3MoKS5vbigibW91c2VlbnRlciIsZnVuY3Rpb24oKXtjbGVhclRpbWVvdXQocik7cS5yZW1vdmVDbGFzcygiaG92ZXIiKX0pLm9uKCJtb3VzZWxlYXZlIixmdW5jdGlvbigpe3I9c2V0VGltZW91dChmdW5jdGlvbigpe3EuYWRkQ2xhc3MoImhvdmVyIil9LDMwMCl9KSl9fSkoKTthKCJpbWdbZXJyb3JpbWddIikub24oImVycm9yIixmdW5jdGlvbigpe3ZhciBxPWEodGhpcyk7cS5hdHRyKCJzcmMiLHEuYXR0cigiZXJyb3JpbWciKSl9KTtjb25zdCBtPWEod2luZG93KSxsPWEoIi51cF9tZW51Iik7aWYobC5sZW5ndGgmJiFsLmhhc0NsYXNzKCJub2xvY2siKSl7bGV0IHE9bC5vZmZzZXQoKS50b3Ascj0hMTthKGRvY3VtZW50KS5vbigic2Nyb2xsIiwoKT0+e3J8fAood2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSgoKT0+e3ZhciBwPW0uc2Nyb2xsVG9wKCksdz1sLmhhc0NsYXNzKCJmaXhlZCIpO3cmJnA8cT9sLnJlbW92ZUNsYXNzKCJmaXhlZCIpOiF3JiZwPnEmJmwuYWRkQ2xhc3MoImZpeGVkIik7KHA9bC5oYXNDbGFzcygiZml4ZWQiKSkmJmEoIiNhbGVydE1zZ0NvbnRhaW5lciIpLmlzKCI6dmlzaWJsZSIpP2wuY3NzKHt0b3A6YSgiI2FsZXJ0TXNnQ29udGFpbmVyIikub3V0ZXJIZWlnaHQoKSsicHgifSk6bC5hdHRyKCJzdHlsZSIsIiIpO3c9YSgiLnB1bGxvdXRzLnNpZGVfdG9wOnZpc2libGUiKTtwJiYwPHcubGVuZ3RoPyh3LmZpbHRlcigiLnB1bGxvdXQtb3BlbmVkIikuY3NzKHt0b3A6bC5oZWlnaHQoKSsicHgifSksdy5maWx0ZXIoIi5wdWxsb3V0LWNsb3NlZCIpLmVhY2goZnVuY3Rpb24oKXt2YXIgej1hKHRoaXMpLEQ9Z2V0X3Bvdyh6LmF0dHIoImlkIikpOyF6LmRhdGEoInBvc1kiKSYmei5kYXRhKCJwb3NZIiwtRC5wb3NpdGlvbik7CkQ9ei5kYXRhKCJwb3NZIikrbC5oZWlnaHQoKTt6LmNzcyh7dG9wOkQrInB4In0pfSkpOih3LmZpbHRlcigiLnB1bGxvdXQtb3BlbmVkIikuY3NzKHt0b3A6MH0pLHcuZmlsdGVyKCIucHVsbG91dC1jbG9zZWQiKS5kYXRhKCJwb3NZIikmJncuZmlsdGVyKCIucHVsbG91dC1jbG9zZWQiKS5lYWNoKGZ1bmN0aW9uKCl7YSh0aGlzKS5jc3Moe3RvcDphKHRoaXMpLmRhdGEoInBvc1kiKSsicHgifSl9KSk7cj0hMX0pLHI9ITApfSl9dj1mdW5jdGlvbigpe2lmKDA9PWEoIiN0cmFkZWluQmFyRmxvYXQiKS5sZW5ndGgpe2EoImJvZHkiKS5hcHBlbmQoJzxkaXYgaWQ9InRyYWRlaW5CYXJGbG9hdCIgc3R5bGU9InRleHQtYWxpZ246Y2VudGVyO3Bvc2l0aW9uOiBmaXhlZDt3aWR0aDogMTAwJTt6LWluZGV4OiAxMDA7ZGlzcGxheTpub25lOyI+PC9kaXY+Jyk7YSgiI3RyYWRlSW5CYXIiKS5jbG9uZSghMCwhMCkuYXBwZW5kVG8oIiN0cmFkZWluQmFyRmxvYXQiKS50cmlnZ2VyKCJ0cmFkZUluQmFyLmNsb25lZCIpOwppZihhKCIjdHJhZGVJbkJhclN0aWNreUJvdHRvbSIpLmxlbmd0aCYmIjEiPT1hKCIjdHJhZGVJbkJhclN0aWNreUJvdHRvbSIpLnZhbCgpKXthKCIjdHJhZGVpbkJhckZsb2F0IikuY3NzKCJib3R0b20iLCItMnB4Iik7dmFyIHE9YSgiLmNlcnRpZmllZC1mb290ZXIiKS5oZWlnaHQoKSxyPWEoIiN0cmFkZWluQmFyRmxvYXQiKS5oZWlnaHQoKTthKCIuY2VydGlmaWVkLWZvb3RlciIpLmhlaWdodChxK3IpfWVsc2V7cT1hKCIjdHJhZGVpbkJhckZsb2F0Iik7cj1xLmNzczt2YXIgcD0iMSI9PWEoIiNtZW51TG9jayIpLnZhbCgpPzQ4OjA7MDxhKCIjYWxlcnRNc2dDb250YWluZXIiKS5sZW5ndGgmJmEoIiNhbGVydE1zZ0NvbnRhaW5lciIpLmlzKCI6dmlzaWJsZSIpJiYocCs9YSgiI2FsZXJ0TXNnQ29udGFpbmVyIikub3V0ZXJIZWlnaHQoKSk7ci5jYWxsKHEsInRvcCIscCl9YSgiI3RyYWRlaW5CYXJGbG9hdCAuLXBiMTAiKS5jc3Moe2Rpc3BsYXk6ImlubGluZS10YWJsZSIsd2lkdGg6YSgiI21haW5EaXYiKS53aWR0aCgpfSl9cT0KIm5ld2NhcmRldGFpbC5odG1sIj09YSgiI1BBR0VJRCIpLnZhbCgpfHwiY2FyZGV0YWlsLmh0bWwiPT1hKCIjUEFHRUlEIikudmFsKCk7cj0ibmV3Y2FyZGV0YWlsLmh0bWwiPT1hKCIjUEFHRUlEIikudmFsKCk\/ITA6ITE7cD0wPGEoIi5tYWluRGl2QWRqdXN0SGVhZGVyIikubGVuZ3RoPyEwOiExO2EoIiN0cmFkZUluQmFyIikuaXNJblZpZXdwb3J0KCl8fHE\/cT8ocj9hKCIubmV3VmRwQWN0aW9ucyIpLmlzQWJvdmVWaWV3cG9ydCgyMDApOmEoIi51c2VkVmRwQWN0aW9ucyIpLmlzQWJvdmVWaWV3cG9ydCgyMDApKT9hKCIjdHJhZGVpbkJhckZsb2F0IikuaGlkZSgpOmEoIiN0cmFkZWluQmFyRmxvYXQiKS5zaG93KCk6YSgiI3RyYWRlaW5CYXJGbG9hdCIpLmhpZGUoKToocCYmIWEoIiN0cmFkZUluQmFyIikuaXNBYm92ZVZpZXdwb3J0KDIwMCl8fCFwKSYmYSgiI3RyYWRlaW5CYXJGbG9hdCIpLnNob3coKTswPGEoIiNhbGVydE1zZ0NvbnRhaW5lciIpLmxlbmd0aCYmYSgiI2FsZXJ0TXNnQ29udGFpbmVyIikuaXMoIjpoaWRkZW4iKSYmCjQ4IT1hKCIjdHJhZGVpbkJhckZsb2F0IikuY3NzKCJ0b3AiKSYmYSgiI3RyYWRlSW5CYXJTdGlja3lCb3R0b20iKS5sZW5ndGgmJiIxIiE9YSgiI3RyYWRlSW5CYXJTdGlja3lCb3R0b20iKS52YWwoKSYmYSgiI3RyYWRlaW5CYXJGbG9hdCIpLmNzcygidG9wIiw0OCl9O2Z1bmN0aW9uIHUocSxyKXt2YXIgcD0wO3JldHVybiBmdW5jdGlvbigpe2NsZWFyVGltZW91dChwKTtwPXNldFRpbWVvdXQocSxyKX19aWYoYSgiI3RyYWRlSW5CYXIiKS5sZW5ndGgpYShkb2N1bWVudCkub24oInNjcm9sbCIsdSh2LDEwMCkpO3ZhciBmPWEoInVsLm5hdiA+IGxpID4gdWwgPiBsaSA+IHVsIik7Zi5lYWNoKGZ1bmN0aW9uKCl7YSh0aGlzKS5wYXJlbnQoKS5vbigibW91c2VlbnRlciIsZnVuY3Rpb24ocSl7YSgidWwiLHRoaXMpLnNjcm9sbFRvcCgwKX0pfSk7Zi5vbigiRE9NTW91c2VTY3JvbGwgbW91c2V3aGVlbCIsZnVuY3Rpb24ocSl7dmFyIHI9YSh0aGlzKSxwPXRoaXMuc2Nyb2xsVG9wLHc9dGhpcy5zY3JvbGxIZWlnaHQsCno9dz50aGlzLmNsaWVudEhlaWdodCxEPXIuaGVpZ2h0KCksQz1xLm9yaWdpbmFsRXZlbnQ7Qz0iRE9NTW91c2VTY3JvbGwiPT1xLnR5cGU\/LTQwKkMuZGV0YWlsOkMud2hlZWxEZWx0YTt2YXIgRT0wPEM7aWYoIXopcmV0dXJuITA7ej1mdW5jdGlvbihHKXtyLnNjcm9sbFRvcChHKTtxLnN0b3BQcm9wYWdhdGlvbigpO3EucHJldmVudERlZmF1bHQoKTtxLnJldHVyblZhbHVlPSExO3JldHVybiEwfTtyZXR1cm4hKCFFJiYtQz53LUQtcCYmeih3KXx8RSYmQz5wJiZ6KDApKX0pfWNhdGNoKG0pe2NvbnNvbGUubG9nKCJFcnJvciIsbSl9aWYoYSgiLnVwX21lbnUuaW1nX21lbnUiKS5sZW5ndGgpe2Y9YSgiLmltZ19zdHlsZV8xICNNYWluTWVudV9ORVciKS5jaGlsZHJlbigiLnN1YiIpO3ZhciBnPWYuZmluZCgiLmZpcnN0SXRlbSIpLmZpbmQoIi5zdWIiKTtmLmNoaWxkcmVuKCJsaSIpLm9uKHttb3VzZWVudGVyOmZ1bmN0aW9uKCl7IWEodGhpcykuaXMoIi5oYXNTdWIiKSYmZy5oaWRlKCl9LAptb3VzZWxlYXZlOmZ1bmN0aW9uKCl7IWEodGhpcykuaXMoIi5oYXNTdWIiKSYmZy5zaG93KCl9fSl9YSgiLm51bWVyaWMiKS5vbigia2V5cHJlc3MiLGZ1bmN0aW9uKG0pe2lmKDQ4Pm0ua2V5Q29kZXx8NTc8bS5rZXlDb2RlKW0ucmV0dXJuVmFsdWU9ITF9KTtpZigib250b3VjaHN0YXJ0ImluIHdpbmRvd3x8d2luZG93LkRvY3VtZW50VG91Y2gmJmRvY3VtZW50IGluc3RhbmNlb2YgRG9jdW1lbnRUb3VjaClhKCIubGVmdF9ib3ggYSIpLm9uKCJ0YXAiLGZ1bmN0aW9uKG0pe209YSh0aGlzKTtpZigicmFkaW8iIT1tLmF0dHIoInR5cGUiKSYmbS5hdHRyKCJvbmNsaWNrIikpcmV0dXJuIG0udHJpZ2dlcigiY2xpY2siKSwhMX0pLGEoIi5oYXNJdGVtcyA+IGEsIC5oYXNTdWIgPiBhIikub24oImNsaWNrIixmdW5jdGlvbihtKXtpZigiY2xpY2siIT1tLnR5cGUpcmV0dXJuITA7dmFyIGw9YSh0aGlzKS5kYXRhKCJjbGlja0NvdW50Iik7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBsfHwiMCI9PQpsKWEoIi5uYXYgbGkuaGFzSXRlbXMgYSwgLm5hdiBsaS5oYXNTdWIgYSIpLmRhdGEoImNsaWNrQ291bnQiLCIwIiksYSh0aGlzKS5kYXRhKCJjbGlja0NvdW50IiwiMSIpLG0ucHJldmVudERlZmF1bHQoKTtlbHNlIHJldHVybiBkb2N1bWVudC5sb2NhdGlvbj1hKHRoaXMpLmF0dHIoImhyZWYiKSxhKHRoaXMpLmRhdGEoImNsaWNrQ291bnQiLCIwIiksITB9KTthKCJkaXYuZ21hcC1wbGFjZWhvbGRlciIpLmVhY2goZnVuY3Rpb24oKXt2YXIgbT1hKHRoaXMpLGw9bS5kYXRhKCk7aW5qZWN0R29vZ2xlTWFwc0tleShmdW5jdGlvbih1KXt1PSJodHRwczovL3d3dy5nb29nbGUuY29tL21hcHMvZW1iZWQvdjEvcGxhY2U\/IitbInE9IitlbmNvZGVVUklDb21wb25lbnQobC5wbGFjZUlkKSwiem9vbT0iK2wuem9vbSwibGFuZ3VhZ2U9IitsLmxhbmd1YWdlLCJyZWdpb249Q0EiLCJrZXk9Iit1XS5qb2luKCImIik7bS5odG1sKCc8aWZyYW1lIHNyYz0iJyt1KyciIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjQwMCIgZnJhbWVib3JkZXI9IjAiIHN0eWxlPSJib3JkZXI6MCIgYWxsb3dmdWxsc2NyZWVuPjwvaWZyYW1lPicpfSl9KTsKdHJ5e2EoIi5hZGR0dCIpLmVhY2goZnVuY3Rpb24oKXt2YXIgbT1bIm9uQ2xvc2UiLCJvblllcyIsIm9uTm8iXSxsPWEodGhpcyksdT1sLmRhdGEoKSxxPXt9LHI7Zm9yKHIgaW4gdSlxW3JdPWZ1bmN0aW9uKHAsdyl7cmV0dXJuLTEhPW0uaW5kZXhPZihwKT9mdW5jdGlvbigpe2V2YWwodyl9Ond9KHIsdVtyXSk7bC5kYXJrVG9vbHRpcChxKX0pfWNhdGNoKG0pe2NvbnNvbGUubG9nKG0ubWVzc2FnZSxtKX19KTtmdW5jdGlvbiBjaGlsZE9mKGEsYil7Zm9yKDsidW5kZWZpbmVkIiE9PXR5cGVvZiBhJiZudWxsIT09YSYmKGE9YS5wYXJlbnROb2RlKSYmYSE9PWI7KTtyZXR1cm4hIWF9dmFyIE1lbnVIYW5kbGVyOwooZnVuY3Rpb24oKXt2YXIgYTtNZW51SGFuZGxlcj1mdW5jdGlvbiBjKCl7ZnVuY3Rpb24gZChmLGcpe2xldCBtPShnLm1vZGVsfHwiIikudHJpbSgpLGw9KGcudHJpbXx8IiIpLnRyaW0oKTtmPWYucmVwbGFjZSgiIyNNRU5VWUVBUiMjIixnLnllYXIpO20mJmwmJihtLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMobC50b0xvd2VyQ2FzZSgpKT9sPSIiOmwudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhtLnRvTG93ZXJDYXNlKCkpJiYobT0iIikpO3JldHVybiBmPWYucmVwbGFjZSgiIyNNRU5VTU9ERUwjIyIsbSkucmVwbGFjZSgiIyNNRU5VVFJJTSMjIixsKS5yZXBsYWNlKC8gKy9nLCIgIil9aWYoYSlyZXR1cm4gYTthPXRoaXM7dGhpcy5nZXRTcGVjVXJsPWZ1bmN0aW9uKCl7dmFyIGY9IkVOR0xJU0giPT0kKCIjYWN0aXZlc2l0ZWxhbmd1YWdlIikudmFsKCl8fCIwIj09PSQoIiNuZXdfdHJhbnNsYXRlZF90aXRsZXMiKS52YWwoKT8iZW4iOiJmciI7IjAiPT0kKCIjbXVsdGktbGFuZ3VhZ2UiKS52YWwoKSYmCihmPSJFTkdMSVNIIj09JCgiI2FjdGl2ZXNpdGVsYW5ndWFnZSIpLnZhbCgpPyJlbiI6ImZyIik7cmV0dXJuIi9qc29uL25ld2NhcnNkZXRhaWxzXyIrZisiLmpzb24ifTt0aGlzLm1lbnU9JCgiLm1lbnU1LCAubWVudTYsIC5tZW51NywgLm1lbnU4LCAubWVudTksIC5tZW51MTAiKTt0aGlzLnNwZWNzQWpheD0kLmdldCh0aGlzLmdldFNwZWNVcmwoKSk7dGhpcy5jYXJzPXtkZXRhaWxzOnt9LGZpbmRCeUlkOmZ1bmN0aW9uKGYpe3ZhciBnPXt9OyQuZWFjaCh0aGlzLmRldGFpbHMubWFrZXMsZnVuY3Rpb24obSxsKXskLmVhY2gobC5tb2RlbHMsZnVuY3Rpb24odSxxKXsxPT1xLmlzc2VyaWVzfHwxPT1xLmlzQ2xhc3M\/JC5lYWNoKHEuc3R5bGVzLGZ1bmN0aW9uKHIscCl7cC5pZD09ZiYmKGc9cCl9KTpxLmlkPT1mJiYoZz1xKX0pOyQuaXNFbXB0eU9iamVjdChnKX0pO3JldHVybiBnfX07dGhpcy5zcGVjc0FqYXguZG9uZShmdW5jdGlvbihmKXtjKCkuY2Fycy5kZXRhaWxzPWZ9KTt0aGlzLnBvc2l0aW9ucz0KZnVuY3Rpb24oZixnLG0pe3JldHVybnt0YXJnZXQ6JChnLmN1cnJlbnRUYXJnZXQpLHNlY29uZExldmVsTWVudTpudWxsLHdpbmRvd0hlaWdodDpudWxsLHNlY29uZExldmVsTWVudVRvcDpudWxsLHNlY29uZExldmVsTWVudUJvdHRvbTpudWxsLHN1Yk1lbnVJdGVtVG9wOm51bGwsc3ViTWVudUl0ZW1IZWlnaHQ6bnVsbCxzdWJNZW51SXRlbUJvdHRvbTpudWxsLGJvdHRvbUFsaWduOm51bGwsc3BlY3M6bnVsbCxzcGVjc1RvcDpudWxsLHNwZWNzSGVpZ2h0Om51bGwsc3BlY3NCb3R0b206bnVsbCxjdXN0b21TZWNvbmRMZXZlbE1lbnU6bnVsbCxyb3VuZDpmdW5jdGlvbihsKXtyZXR1cm4rKE1hdGgucm91bmQobCsiZSsyIikrImUtMiIpfSx1cGRhdGU6ZnVuY3Rpb24oKXt0aGlzLnNlY29uZExldmVsTWVudT0iZnVuY3Rpb24iPT10eXBlb2YgdGhpcy5jdXN0b21TZWNvbmRMZXZlbE1lbnU\/dGhpcy5jdXN0b21TZWNvbmRMZXZlbE1lbnUoKTp0aGlzLnRhcmdldC5maW5kKCJ1bC5zdWI6Zmlyc3QiKTsKdHJ5e3RoaXMud2luZG93SGVpZ2h0PSQod2luZG93KS5oZWlnaHQoKSx0aGlzLnNlY29uZExldmVsTWVudVRvcD10aGlzLnNlY29uZExldmVsTWVudS5wb3NpdGlvbigpLnRvcCx0aGlzLnNlY29uZExldmVsTWVudUhlaWdodD10aGlzLnNlY29uZExldmVsTWVudS5vdXRlckhlaWdodCgpLHRoaXMuc2Vjb25kTGV2ZWxNZW51Qm90dG9tPXRoaXMucm91bmQodGhpcy5zZWNvbmRMZXZlbE1lbnVUb3ArdGhpcy5zZWNvbmRMZXZlbE1lbnVIZWlnaHQpfWNhdGNoKGwpe310cnl7dGhpcy5zdWJNZW51SXRlbVRvcD0kKGYpLnBvc2l0aW9uKCkudG9wLHRoaXMuc3ViTWVudUl0ZW1IZWlnaHQ9JChmKS5vdXRlckhlaWdodCgpLHRoaXMuc3ViTWVudUl0ZW1Cb3R0b209dGhpcy5yb3VuZCh0aGlzLnN1Yk1lbnVJdGVtSGVpZ2h0K3RoaXMuc3ViTWVudUl0ZW1Ub3ApLHRoaXMuYm90dG9tQWxpZ249dGhpcy5yb3VuZCgkKGYpLnBhcmVudCgidWwiKS5vdXRlckhlaWdodCgpKyQoZikucGFyZW50KCJ1bCIpLm9mZnNldCgpLnRvcC0KdGhpcy5zZWNvbmRMZXZlbE1lbnVCb3R0b20pfWNhdGNoKGwpe310cnl7dGhpcy5zcGVjcz1tLHRoaXMuc3BlY3NUb3A9dGhpcy5zcGVjcy5wb3NpdGlvbigpLnRvcCx0aGlzLnNwZWNzSGVpZ2h0PXRoaXMuc3BlY3Mub3V0ZXJIZWlnaHQoKSx0aGlzLnNwZWNzQm90dG9tPXRoaXMucm91bmQodGhpcy5zcGVjc1RvcCt0aGlzLnNwZWNzSGVpZ2h0KX1jYXRjaChsKXt9fSxhZGp1c3RTZWNvbmRMZXZlbDpmdW5jdGlvbigpe2lmKC42NSp0aGlzLndpbmRvd0hlaWdodDx0aGlzLnNlY29uZExldmVsTWVudUhlaWdodCl7aWYodGhpcy5zZWNvbmRMZXZlbE1lbnUuaGFzQ2xhc3MoImxvY2F0aW9uLWRldGFpbHMiKSlyZXR1cm47dGhpcy5zZWNvbmRMZXZlbE1lbnUucmVtb3ZlQXR0cigic3R5bGUiKTt0aGlzLnNlY29uZExldmVsTWVudS5jc3MoImhlaWdodCIsLjY1KnRoaXMud2luZG93SGVpZ2h0KTt0aGlzLnNlY29uZExldmVsTWVudS5jc3MoeyJvdmVyZmxvdy15IjoiYXV0byIsd2lkdGg6IjQwMHB4IiwKcG9zaXRpb246InN0YXRpYyIsZGlyZWN0aW9uOiJydGwifSk7dGhpcy5zZWNvbmRMZXZlbE1lbnUuZmluZCgiPiBsaSIpLmNzcyh7ZGlyZWN0aW9uOiJsdHIifSk7aWYoMD09JChmKS5jaGlsZHJlbigiLm1haW5tZW51LXN1Ym1lbnUiKS5sZW5ndGgpe3ZhciBsPSQoIjxkaXYvPiIpO2wuYWRkQ2xhc3MoIm1haW5tZW51LXN1Ym1lbnUiKTtsLmRldGFjaCgpLmFwcGVuZCh0aGlzLnNlY29uZExldmVsTWVudSk7dGhpcy50YXJnZXQuYXBwZW5kKGwpfXRoaXMudXBkYXRlKCl9aWYodGhpcy5zZWNvbmRMZXZlbE1lbnVCb3R0b208dGhpcy5zdWJNZW51SXRlbVRvcCkkKGYpLmFkZENsYXNzKCJhbGlnbi1sZXZlbCIpLHRoaXMudXBkYXRlKCksbD10aGlzLnNlY29uZExldmVsTWVudUJvdHRvbTwkKGYpLnBhcmVudCgidWwiKS5vdXRlckhlaWdodCgpPyQoZikub3V0ZXJIZWlnaHQoKSskKGYpLnBvc2l0aW9uKCkudG9wLXRoaXMuc2Vjb25kTGV2ZWxNZW51SGVpZ2h0OiQoZikucGFyZW50KCJ1bCIpLm91dGVySGVpZ2h0KCkrCiQoZikucGFyZW50KCJ1bCIpLnBvc2l0aW9uKCkudG9wLXRoaXMuc2Vjb25kTGV2ZWxNZW51Qm90dG9tLHRoaXMuc2Vjb25kTGV2ZWxNZW51LmNzcygidHJhbnNmb3JtIiwidHJhbnNsYXRlWSgiK2wrInB4KSIpO2Vsc2UgaWYodGhpcy5zZWNvbmRMZXZlbE1lbnVCb3R0b20+dGhpcy5zdWJNZW51SXRlbVRvcCYmdGhpcy5zdWJNZW51SXRlbUJvdHRvbT50aGlzLnNlY29uZExldmVsTWVudUJvdHRvbSl7bD0wPnBhcnNlSW50KHRoaXMuc2Vjb25kTGV2ZWxNZW51LmNzcygibGVmdCIpLnJlcGxhY2UoInB4IiwiIikpPyJyaWdodCI6ImxlZnQiO3ZhciB1PXt0cmFuc2Zvcm06InRyYW5zbGF0ZVkoIitNYXRoLmFicyh0aGlzLnNlY29uZExldmVsTWVudUJvdHRvbS10aGlzLnN1Yk1lbnVJdGVtQm90dG9tKSt0aGlzLnNlY29uZExldmVsTWVudVRvcCsicHgpIn07InJpZ2h0IiE9bCYmKHVbbF09dGhpcy50YXJnZXQucG9zaXRpb24oKS5sZWZ0K3RoaXMudGFyZ2V0LndpZHRoKCkpO3RoaXMuc2Vjb25kTGV2ZWxNZW51LmNzcyh1KX1lbHNlIHRoaXMuc2Vjb25kTGV2ZWxNZW51VG9wPgp0aGlzLnN1Yk1lbnVJdGVtVG9wJiZ0aGlzLnNlY29uZExldmVsTWVudS5jc3MoInRyYW5zZm9ybSIsInRyYW5zbGF0ZVkoIit0aGlzLnN1Yk1lbnVJdGVtVG9wKyJweCkiKX0sYWRqdXN0SG9yaXpvbnRhbDpmdW5jdGlvbigpe3RoaXMuc2Vjb25kTGV2ZWxNZW51Lmhhc0NsYXNzKCJpbnZpc2libGUiKXx8dGhpcy5zZWNvbmRMZXZlbE1lbnUuYWRkQ2xhc3MoImludmlzaWJsZSIpO3ZhciBsPXRoaXMuaXNJblZpZXdwb3J0KHRoaXMuc2Vjb25kTGV2ZWxNZW51WzBdKSx1PTA+cGFyc2VJbnQodGhpcy5zZWNvbmRMZXZlbE1lbnUuY3NzKCJsZWZ0IikucmVwbGFjZSgicHgiLCIiKSk\/InJpZ2h0IjoibGVmdCI7bHx8ImxlZnQiIT09dXx8KHRoaXMuc2Vjb25kTGV2ZWxNZW51Lmhhc0NsYXNzKCJMMTAwIikmJnRoaXMuc2Vjb25kTGV2ZWxNZW51LnJlbW92ZUNsYXNzKCJMMTAwIiksdGhpcy5zZWNvbmRMZXZlbE1lbnUuYWRkQ2xhc3MoIlIxMDAiKSk7bD17fTtsW3VdPXRoaXMudGFyZ2V0LnBvc2l0aW9uKCkubGVmdCsKdGhpcy50YXJnZXQud2lkdGgoKTt0aGlzLnNlY29uZExldmVsTWVudS5jc3MobCk7dGhpcy5zZWNvbmRMZXZlbE1lbnUucmVtb3ZlQ2xhc3MoImludmlzaWJsZSIpfSxpc0luVmlld3BvcnQ6ZnVuY3Rpb24obCl7bD1sLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3JldHVybiAwPD1sLnRvcCYmMDw9bC5sZWZ0JiZsLmJvdHRvbTw9KHdpbmRvdy5pbm5lckhlaWdodHx8ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodCkmJmwucmlnaHQ8PSh3aW5kb3cuaW5uZXJXaWR0aHx8ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoKX19fTt0aGlzLm1lbnUub24oIm1vdXNlZW50ZXIgbW91c2VsZWF2ZSIsInVsLm5hdiA+IGxpIixmdW5jdGlvbihmKXt2YXIgZz1hLnBvc2l0aW9ucyh0aGlzLGYpO2cudXBkYXRlKCk7Zy5zZWNvbmRMZXZlbE1lbnVCb3R0b20tJCh3aW5kb3cpLnNjcm9sbFRvcCgpPmcud2luZG93SGVpZ2h0P2cuc2Vjb25kTGV2ZWxNZW51LmFkZENsYXNzKCJzbGltLXN1Ym1lbnUiKToKZy5zZWNvbmRMZXZlbE1lbnUucmVtb3ZlQ2xhc3MoInNsaW0tc3VibWVudSIpOyJtb3VzZWxlYXZlIiE9PWYudHlwZSYmKGY9JCh0aGlzKS5maW5kKCI+IHVsIiksZi5sZW5ndGgmJiFmLmRhdGEoImNhbGN1bGF0ZWQiKSYmKGc9JCh0aGlzKS5vdXRlcldpZHRoKCksZi5vdXRlcldpZHRoKCk8ZyYmZi5jc3MoIndpZHRoIixnKzEpLGYuZGF0YSgiY2FsY3VsYXRlZCIsITApKSl9KTt0aGlzLm1lbnUub24oIm1vdXNlZW50ZXIgbW91c2VsZWF2ZSIsIiNNYWluTWVudV9ORVcgPiB1bC5zdWIgPiBsaSIsZnVuY3Rpb24oZil7dmFyIGc9YS5wb3NpdGlvbnModGhpcyxmKTswIT0kKGYuY3VycmVudFRhcmdldCkuZmluZCgidWwuc3ViID4gbGkiKS5sZW5ndGgmJiJtb3VzZWxlYXZlIiE9Zi50eXBlJiYoZy51cGRhdGUoKSxnLmFkanVzdFNlY29uZExldmVsKCkpfSk7dGhpcy5tZW51Lm9uKCJtb3VzZWVudGVyIG1vdXNlbGVhdmUiLCIjTWFpbk1lbnVfREVBTEVSU0hJUFMgPiB1bC5zdWIgbGkubG9jYXRpb24tbmFtZXMiLApmdW5jdGlvbihmKXt2YXIgZz1hLnBvc2l0aW9ucyh0aGlzLGYpLG09JChmLmN1cnJlbnRUYXJnZXQpLmZpbmQoIi5sb2NhdGlvbi1kZXRhaWxzIik7Zy5jdXN0b21TZWNvbmRMZXZlbE1lbnU9ZnVuY3Rpb24oKXtyZXR1cm4gbX07MCE9JChmLmN1cnJlbnRUYXJnZXQpLmZpbmQoIi5sb2NhdGlvbi1kZXRhaWxzIikubGVuZ3RoJiYibW91c2VsZWF2ZSIhPWYudHlwZSYmKCQoZi5jdXJyZW50VGFyZ2V0KS5maW5kKCIubG9jYXRpb24tZGV0YWlscyIpLm9uKCJsYXp5bG9hZGVkIixmdW5jdGlvbihsKXtnLmN1c3RvbVNlY29uZExldmVsTWVudSgpLmF0dHIoInN0eWxlIixudWxsKTtnLnVwZGF0ZSgpO2cuYWRqdXN0SG9yaXpvbnRhbCgpO2cuYWRqdXN0U2Vjb25kTGV2ZWwoKX0pLGcuY3VzdG9tU2Vjb25kTGV2ZWxNZW51KCkuYXR0cigic3R5bGUiLG51bGwpLGcudXBkYXRlKCksZy5hZGp1c3RIb3Jpem9udGFsKCksZy5hZGp1c3RTZWNvbmRMZXZlbCgpKX0pO3RoaXMubWVudS5vbigibW91c2VlbnRlciBtb3VzZWxlYXZlIiwKJyNNYWluTWVudV9UQUJfQ09NTUVSQ0lBTCA+IHVsLnN1YiA+IFtkYXRhLWlkPSJTVUJfVEFCX0NPTU1FUkNJQUxfQ09NTUVSIl0nLGZ1bmN0aW9uKGYpe2Y9YS5wb3NpdGlvbnModGhpcyxmKTtmLnVwZGF0ZSgpO2YuYWRqdXN0U2Vjb25kTGV2ZWwoKX0pO2lmKCJmb3JkX2xpbmNvbG5fZXh0ZXJuYWwiPT0kKCIjREVBTEVSUEFSVFJFRElSRUNUVFlQRSIpLnZhbCgpJiYwPCQoIiNERUFMRVJCUkFORCIpLmxlbmd0aCYmJCgiI0RFQUxFUkJSQU5EIikudmFsKCkudG9Mb3dlckNhc2UoKS5pbmNsdWRlcygiZm9yZCIpJiYiIiE9JCgiI0RFQUxFUlBBQ09ERSIpLnZhbCgpKXt2YXIgZT0kKCJodG1sIikuYXR0cigibGFuZyIpLGs9JCgiI0RFQUxFUlBBQ09ERSIpLnZhbCgpLGg9ImVuIj09ZT8iL3JlcXVlc3RzL2Nhci1wYXJ0cy1hbmQtYWNjZXNzb3JpZXMuaHRtbCI6Ii9kZW1hbmRlcy9jb21tYW5kZS1waWVjZXMtYWNjZXNzb2lyZXMtYXV0b21vYmlsZXMuaHRtbCIsbj0iaHR0cHM6Ly9mb3JkYWNjZXNzLmNvbS9Gb3JkLmFzcHg\/bG9jYXRpb249IisKazt0aGlzLm1lbnUub24oIm1vdXNlZW50ZXIgbW91c2VsZWF2ZSIsIiNNYWluTWVudV9TRVJWSUNFIHVsLnN1YiBsaVtkYXRhLWlkPSdQSUVDRVMnXSIsZnVuY3Rpb24oKXt2YXIgZj0kKHRoaXMpO2Y9JCgiPiBhIixmKTtmLmF0dHIoImhyZWYiKT09aCYmKGYuYXR0cigiaHJlZiIsbiksZi5hdHRyKCJ0YXJnZXQiLCJfYmxhbmsiKSl9KX10aGlzLm1lbnUub24oIm1vdXNlZW50ZXIgbW91c2VsZWF2ZSIsIiNNYWluTWVudV9GSU5BTkNFID4gYSIsZnVuY3Rpb24oKXt2YXIgZj0kKHRoaXMpLGc9JCgiaHRtbCIpLmF0dHIoImxhbmciKSxtPSQoIiNERUFMRVJQQUNPREUiKS52YWwoKSxsPSQoIiNERUFMRVJCUkFORF9QUklNQVJZIikudmFsKCkudG9Mb3dlckNhc2UoKTsiZm9yZF9saW5jb2xuX2V4dGVybmFsIiE9JCgiI0ZJTkFOQ0VGT1JNVFlQRSIpLnZhbCgpfHwiZm9yZCIhPWwmJiJsaW5jb2xuIiE9bHx8IiI9PW18fChmLmF0dHIoImhyZWYiLCJmb3JkIj09bD8oImVuIj09Zz8iaHR0cHM6Ly93d3cuZm9yZC5jYS9maW5hbmNlL2FwcGx5LzE\/U291cmNlT2ZEYXRhPUNBRENGJmRlYWxlcklkPSI6CiJodHRwczovL2ZyLmZvcmQuY2EvZmluYW5jZS9hcHBseS8xP1NvdXJjZU9mRGF0YT1DQURDRiZkZWFsZXJJZD0iKSttOigiZW4iPT1nPyJodHRwczovL3d3dy5saW5jb2xuY2FuYWRhLmNvbS9maW5hbmNlL2FwcGx5LzE\/U291cmNlT2ZEYXRhPUNBRENMJmRlYWxlcklkPSI6Imh0dHBzOi8vZnIubGluY29sbmNhbmFkYS5jb20vZmluYW5jZS9hcHBseS8xP1NvdXJjZU9mRGF0YT1DQURDTCZkZWFsZXJJZD0iKSttKSxmLmF0dHIoInRhcmdldCIsIl9ibGFuayIpKX0pO3NldFRpbWVvdXQoZnVuY3Rpb24oKXtpZigwPCQoIiNkMmMtYm5wLWxpbmtydWxlcy10ZXh0YXJlYSIpLmxlbmd0aCYmIiIhPSQoIiNkMmMtYm5wLWxpbmtydWxlcy10ZXh0YXJlYSIpLnZhbCgpJiYiIyNMSU5LUlVMRVMjIyIhPSQoIiNkMmMtYm5wLWxpbmtydWxlcy10ZXh0YXJlYSIpLnZhbCgpKXtpZihkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCIuY3RhLXRwbCIpLmxlbmd0aCYmInVuZGVmaW5lZCIhPT10eXBlb2YgbmV3Y2FyRGV0YWlscyYmCiJ1bmRlZmluZWQiIT09dHlwZW9mIG5ld2NhckRldGFpbHMuYWN0aXZlTW9kZWwpe2lmKCExPT09KCJjb21tZXJjaWFsIj09bmV3Y2FyRGV0YWlscy5hY3RpdmVNb2RlbC5zZWN0aW9uPyEwOiExKSlyZXR1cm47ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiLmN0YS10cGwgYSIpLmZvckVhY2goKGYsZyk9PntnPWYuZ2V0QXR0cmlidXRlKCJocmVmIik7aWYoZy5pbmNsdWRlcygic2hvcC5mb3JkLmNhIikpe2xldCBtPSExO2cuaW5jbHVkZXMoInN1cGVyZHV0eSIpJiYobT1nLnJlcGxhY2UoIi9zdXBlcmR1dHkvIiwiL3N1cGVyZHV0eS1jb21tZXJjaWFsLyIpKTshMSE9PW0mJmYuc2V0QXR0cmlidXRlKCJocmVmIixtKX19KX1kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCIjY2xhc3Njb21tZXJjaWFsX2NvbnRhaW5lciIpLmxlbmd0aCYmZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiLmRpdkNhclNpbmdsZU91dGVyQm94IGEiKS5mb3JFYWNoKChmLGcpPT57Zz1mLmdldEF0dHJpYnV0ZSgiaHJlZiIpOwppZihnLmluY2x1ZGVzKCJzaG9wLmZvcmQuY2EiKSl7bGV0IG09ITE7Zy5pbmNsdWRlcygic3VwZXJkdXR5IikmJihtPWcucmVwbGFjZSgiL3N1cGVyZHV0eS8iLCIvc3VwZXJkdXR5LWNvbW1lcmNpYWwvIikpOyExIT09bSYmZi5zZXRBdHRyaWJ1dGUoImhyZWYiLG0pfX0pfX0sMkUzKTt0aGlzLm1lbnUub24oIm1vdXNlZW50ZXIgbW91c2VsZWF2ZSIsIiNNYWluTWVudV9ORVcgPiB1bC5zdWIgPiBsaSA+IHVsLnN1YiA+IGxpID4gdWwuc3ViID4gbGksICNNYWluTWVudV9ORVcgPiB1bC5zdWIgPiBsaSA+IC5tYWlubWVudS1zdWJtZW51ID4gdWwuc3ViID4gbGkgPiB1bC5zdWIgPiBsaSwgICNNYWluTWVudV9UQUJfQ09NTUVSQ0lBTCA+IHVsLnN1YiA+IGxpID4gdWwuc3ViID4gbGkgPiB1bC5zdWIgPiBsaSwgI01haW5NZW51X1RBQl9DT01NRVJDSUFMID4gdWwuc3ViID4gbGkgPiAubWFpbm1lbnUtc3VibWVudSA+IHVsLnN1YiA+IGxpID4gdWwuc3ViID4gbGkiLGZ1bmN0aW9uKGYpe2lmKCJtb3VzZWxlYXZlIiE9CmYudHlwZSl7dmFyIGc9JCh0aGlzKS5maW5kKCIubWVudS10ZWNoLXNwZWNzIik7MD09Zy5sZW5ndGgmJihnPSQoIiNtZW51LXNwZWNzLXRlbXBsYXRlIikuY2xvbmUoKSk7dmFyIG09dGhpcztpZigwPT0kKG0pLmNoaWxkcmVuKCIubWVudS10ZWNoLXNwZWNzIikubGVuZ3RoKXt2YXIgbD0kKG0pLmZpbmQoImE6bnRoLW9mLXR5cGUoMikiKS50ZXh0KCksdT0kKG0pLmZpbmQoImE6Zmlyc3QtY2hpbGQiKS5hdHRyKCJocmVmIikscT11Lmxhc3RJbmRleE9mKCIvIikrMTtjYXJMaW5rVHJpbW1lZD11LnN1YnN0cmluZyhxLHUubGVuZ3RoKTt2YXIgcj0kKCIjdHh0QnVpbGRBbmRQcmljZUZvbGRlclBhdGgiKS52YWwoKStjYXJMaW5rVHJpbW1lZDsoZnVuY3Rpb24oKXtpZigwPCQoIiNkMmMtYm5wLWxpbmtydWxlcy10ZXh0YXJlYSIpLmxlbmd0aCYmIiIhPSQoIiNkMmMtYm5wLWxpbmtydWxlcy10ZXh0YXJlYSIpLnZhbCgpJiYiIyNMSU5LUlVMRVMjIyIhPSQoIiNkMmMtYm5wLWxpbmtydWxlcy10ZXh0YXJlYSIpLnZhbCgpKXt2YXIgeT0KMDwkKG0pLmNsb3Nlc3QoImxpW2RhdGEtaWRePSdORVdfQ09NTUVSQ0lBTCddIikubGVuZ3RoPyEwOiExLEE9JCgiI2QyYy1ibnAtbGlua3J1bGVzLXRleHRhcmVhIikudmFsKCk7QT1KU09OLnBhcnNlKEEpO3ZhciBJPSQoImh0bWwiKS5hdHRyKCJsYW5nIiksQj1yLm1hdGNoKCJlbiI9PUk\/L1wvYnVpbGQtYW5kLXByaWNlXC8oXGR7NH0tKFx3KyktKFx3KykuKlwuaHRtbCkuKi86L1wvY29uZmlndXJhdGlvbi1ldC1wcml4XC8oKFx3KyktKFx3KyktXGR7NH0pLipcLmh0bWwvKSxKPUJbMF0sRj1CWzJdLnRvTG93ZXJDYXNlKCk7Qj1CWzNdLnRvTG93ZXJDYXNlKCkucmVwbGFjZUFsbCgiXyIsIiAiKTt5JiZCLmluY2x1ZGVzKCJzdXBlciBkdXR5IikmJihCPSJzdXBlciBkdXR5IGNvbW1lcmNpYWwiKTtpZigidW5kZWZpbmVkIiE9PXR5cGVvZiBBW0ZdJiYidW5kZWZpbmVkIj09PXR5cGVvZiBBW0ZdW0JdKWZvcih2YXIgSyBpbiBBW0ZdKWlmKHk9SyxCLmluY2x1ZGVzKHkpKXtCPXk7CmJyZWFrfSJ1bmRlZmluZWQiIT09dHlwZW9mIEFbRl0mJiJ1bmRlZmluZWQiIT09dHlwZW9mIEFbRl1bQl0mJigkKGcpLmZpbmQoIi5tZW51LXNwZWMtYm5wIikuYXR0cigidGFyZ2V0IiwiX2JsYW5rIikscj1yLnJlcGxhY2UoSixBW0ZdW0JdW0ldKSl9fSkoKTskKGcpLmZpbmQoIi5tZW51LXNwZWMtYm5wIikuYXR0cigiaHJlZiIscik7JChnKS5maW5kKCIubWVudS1zcGVjLWxpbmsiKS5hdHRyKCJocmVmIix1KTskKGcpLnJlbW92ZUF0dHIoImlkIik7JChnKS5jaGlsZHJlbigiLm1lbnUtc3BlY3MtdGl0bGUiKS5hcHBlbmQobCk7dmFyIHA9e307JC5pc0VtcHR5T2JqZWN0KGMoKS5jYXJzLmRldGFpbHMpPyQud2hlbihjKCkuc3BlY3NBamF4KS5kb25lKGZ1bmN0aW9uKHkpe3A9YygpLmNhcnMuZmluZEJ5SWQoJChtKS5kYXRhKCJtb2RlbGlkIikpfSk6cD1jKCkuY2Fycy5maW5kQnlJZCgkKG0pLmRhdGEoIm1vZGVsaWQiKSk7aWYoISQuaXNFbXB0eU9iamVjdChwKSl7dmFyIHc9YS5zaG91bGRVc2VGcmVuY2hOYW1lcygpPwpwLm5hbWU6cC5tb2RlbDtwLmhhc093blByb3BlcnR5KCJiYXNlX3N0eWxlIikmJihwPXAuYmFzZV9zdHlsZSx3PXAubW9kZWwpO3E9IkZSRU5DSCI9PSQoIiN0ZXh0TGFuZ3VhZ2UiKS52YWwoKT8iTi9EIjoiTi9BIjtsPSIiPT1wLmRpc3BsYWNlbWVudD9xOnAuZGlzcGxhY2VtZW50O3U9IiI9PXAuY2l0eUZ1ZWw\/cTpwLmNpdHlGdWVsO3E9IiI9PXAuaHd5RnVlbD9xOnAuaHd5RnVlbDt2YXIgej1wLm1zcnBBbGxJbixEPSQoZykuZmluZCgiLm1lbnUtc3BlYy1ibnAiKS50ZXh0KCkudHJpbSgpO0Q9RC5yZXBsYWNlKCIkTU9ERUwiLHcpO3c9YDxzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiPiR7ei50b0xvY2FsZVN0cmluZygpfTwvc3Bhbj5gO3o9JCgiI0FETUlOX05FV19ET05UX1NIT1dfUFJJQ0VfTU9ERUxTIikudmFsKCkuaW5jbHVkZXMocC5tb2RlbGlkKTtpZigwPCQobSkuY2hpbGRyZW4oIi5wcmljZSIpLmxlbmd0aCl7JChnKS5maW5kKCIubWVudS1zcGVjLXByaWNlIikudGV4dCgiIik7CnZhciBDPSQoJzxkaXYgY2xhc3M9InByaWNlIi8+JyksRT0kKCc8c3BhbiBjbGFzcz0icHJpY2VfYW10Ii8+JyksRz0kKCc8c3BhbiBjbGFzcz0icHJpY2Vfc2NyYXRjaGVkIi8+JyksSD0kKCc8c3BhbiBjbGFzcz0icHJpY2VfcHJvbW8iLz4nKTswPCQobSkuY2hpbGRyZW4oIi5wcmljZSIpLmNoaWxkcmVuKCIucHJpY2Utc2NyYXRjaCIpLmxlbmd0aD8oRy5odG1sKHcpLEUuYXBwZW5kKEcpLEUuY3NzKHsidGV4dC1kZWNvcmF0aW9uIjoibGluZS10aHJvdWdoIixjb2xvcjoicmVkIn0pKTpFLmh0bWwodyk7Qy5hcHBlbmQoRSk7MDwkKG0pLmNoaWxkcmVuKCIucHJpY2UiKS5jaGlsZHJlbigiLnByaWNlX3Byb21vIikubGVuZ3RoJiYoSC50ZXh0KCQobSkuY2hpbGRyZW4oIi5wcmljZSIpLmNoaWxkcmVuKCIucHJpY2VfcHJvbW8iKS50ZXh0KCkpLEguY3NzKHtjb2xvcjoicmVkIn0pLEMuYXBwZW5kKEgpKTskKGcpLmZpbmQoIi5tZW51LXNwZWMtcHJpY2UiKS5hcHBlbmQoQyl9ZWxzZSAkKGcpLmZpbmQoIi5tZW51LXNwZWMtcHJpY2UiKS5odG1sKHcpOwokKGcpLmZpbmQoIi5tZW51LXNwZWMtaHAiKS50ZXh0KHAuaHBBdFJQTSk7JChnKS5maW5kKCIubWVudS1zcGVjLXBvd2VyIikudGV4dChsKTskKGcpLmZpbmQoIi5tZW51LXNwZWMtZnVlbC1jaXR5IikudGV4dCh1KTskKGcpLmZpbmQoIi5tZW51LXNwZWMtZnVlbC1oaWdod2F5IikudGV4dChxKTskKGcpLmZpbmQoIi5tZW51LXNwZWMtZHJpdmV0cmFpbiIpLnRleHQocC5kcml2ZVRyYWluKTskKGcpLmZpbmQoIi5tZW51LXNwZWMtYm5wIikuY29udGVudHMoKS5maWx0ZXIoZnVuY3Rpb24oKXtyZXR1cm4gMz09dGhpcy5ub2RlVHlwZX0pLmxhc3QoKS5yZXBsYWNlV2l0aChEKTt6JiYoJChnKS5maW5kKCIubWVudS1zcGVjLWJucCIpLnJlbW92ZSgpLCQoZykuZmluZCgiLm1lbnUtc3BlYy1wcmljZSIpLnRleHQoJCgiI05FV19QUklDRV9URVhUIikudmFsKCkpKTskKGcpLmZpbmQoIi5tZW51LXByaWNlLXRleHQiKS50ZXh0KGQoJChnKS5maW5kKCIubWVudS1wcmljZS10ZXh0IikudGV4dCgpLApwKSk7NUU4PnAuaWQmJiQobSkuYXBwZW5kKGcuZmFkZUluKDIwMCkpO2w9bmV3IEN1c3RvbUV2ZW50KCJ0b3BuYXYtdGVjaC1zcGVjLWxvYWRlZCIse2RldGFpbDp7dGVtcGxhdGU6Z319KTtkb2N1bWVudC5kaXNwYXRjaEV2ZW50KGwpfX1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dmFyIHk9YS5wb3NpdGlvbnMobSxmLCQoZykpO3kudXBkYXRlKCk7dmFyIEE9JChtKS5wYXJlbnQoInVsLnN1YiIpLnBhcmVudCgpLnBhcmVudCgpO0Eub2Zmc2V0KCk7QS5vdXRlckhlaWdodCgpO3kuc3BlY3NCb3R0b208eS5zdWJNZW51SXRlbVRvcCYmJChnKS5jc3MoInRvcCIseS5zdWJNZW51SXRlbUJvdHRvbS15LnNwZWNzQm90dG9tKTt5LnN1Yk1lbnVJdGVtVG9wPHkuc3BlY3NCb3R0b20mJnkuc3ViTWVudUl0ZW1Cb3R0b20+eS5zcGVjc0JvdHRvbSYmJChnKS5jc3MoInRvcCIsJChnKS5wb3NpdGlvbigpLnRvcCsoeS5zdWJNZW51SXRlbUJvdHRvbS15LnNwZWNzQm90dG9tKSl9LDApO2RlbGV0ZSBwfX0pOwokKCcudXBfbWVudSBbaWRePSJNYWluTWVudV8iXS50b3A6bm90KC5pc09wZW4pJykub24oIm1vdXNlZW50ZXIiLGZ1bmN0aW9uKGYpeyQoZi5jdXJyZW50VGFyZ2V0KS5oYXNDbGFzcygiaXNPcGVuIil8fCQoJy51cF9tZW51IFtpZF49Ik1haW5NZW51XyJdLnRvcCcpLnJlbW92ZUNsYXNzKCJpc09wZW4iKX0pOyQoZG9jdW1lbnQpLm9uKCJjbGljayIsZnVuY3Rpb24oZil7Y2hpbGRPZihkb2N1bWVudC5hY3RpdmVFbGVtZW50LCQoIi51cF9tZW51IilbMF0pfHwkKCcudXBfbWVudSBbaWRePSJNYWluTWVudV8iXS50b3AnKS5yZW1vdmVDbGFzcygiaXNPcGVuIil9KTskKCIjTWFpbk1lbnVfQ09OVEFDVCIpLm9uKCJtb3VzZWVudGVyIG1vdXNlbGVhdmUiLGZ1bmN0aW9uKGYpe3ZhciBnPSQoIiNtZW51LW1hcC1saW5rIik7MD09Zy5sZW5ndGh8fDA8Zy5maW5kKCJpZnJhbWUiKS5sZW5ndGh8fGluamVjdEdvb2dsZU1hcHNLZXkoZnVuY3Rpb24obSl7bT0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9tYXBzL2VtYmVkL3YxL3BsYWNlPyIrClsicT0iK2VuY29kZVVSSUNvbXBvbmVudChnLmRhdGEoInBsYWNlSWQiKSksInpvb209IitnLmRhdGEoInpvb20iKSwibGFuZ3VhZ2U9IitnLmRhdGEoImxhbmd1YWdlIiksInJlZ2lvbj1DQSIsImtleT0iK21dLmpvaW4oIiYiKTtnLmFwcGVuZCgnPGlmcmFtZSBzcmM9IicrbSsnIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSI0MDAiIGZyYW1lYm9yZGVyPSIwIiBzdHlsZT0iYm9yZGVyOjAiIGFsbG93ZnVsbHNjcmVlbj48L2lmcmFtZT4nKX0pfSk7JCgiI01haW5NZW51X0ZJTkFOQ0UsICNNYWluTWVudV9DT05UQUNUIikub24oIm1vdXNlZW50ZXIgbW91c2VsZWF2ZSIsZnVuY3Rpb24oZil7dmFyIGc9Zi5jdXJyZW50VGFyZ2V0LmlkLG09JCgiIyIrZyk7MD09PSQoIiMiK2crIi5pc09wZW4iKS5sZW5ndGgmJiJtb3VzZWxlYXZlIiE9PWYudHlwZSYmbS5hZGRDbGFzcygiaXNPcGVuIik7aWYoIm1vdXNlbGVhdmUiPT09Zi50eXBlKXt2YXIgbD0kKCIuY3JlZGl0U2NvcmVQb3B1cEZvcm0iKVswXTsKZz0kKCIjIitnKyIgPiBhLnRvcF9saW5rIilbMF07KGwmJmYuZnJvbUVsZW1lbnQ9PT1sfHxnJiZmLmZyb21FbGVtZW50PT09ZykmJm0ucmVtb3ZlQ2xhc3MoImlzT3BlbiIpO2w9JChmLnRvRWxlbWVudCkuaGFzQ2xhc3MoImNhbC13cmFwcGVyIil8fCQoZi50b0VsZW1lbnQpLmNoaWxkcmVuKCkuaGFzQ2xhc3MoImNhbC13cmFwcGVyIil8fCQoZi50b0VsZW1lbnQpLmhhc0NsYXNzKCJuZWJDYWwiKXx8JChmLnRvRWxlbWVudCkuY2xvc2VzdCgiLm5lYkNhbCIpLmxlbmd0aDtnPSQoZi50b0VsZW1lbnQpLmhhc0NsYXNzKCJwYWMtY29udGFpbmVyIik7aWYoIShudWxsPT09Zi50b0VsZW1lbnR8fGNoaWxkT2YoZi50b0VsZW1lbnQsbVswXSl8fGNoaWxkT2YoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCxtWzBdKXx8bHx8Zyl8fGNoaWxkT2YoZi50b0VsZW1lbnQsJCgiLnVwX21lbnUiKVswXSkmJiFjaGlsZE9mKGYudG9FbGVtZW50LG1bMF0pKSQoIi5uZWJDYWwiKS5pcygiOnZpc2libGUiKSYmCihmPSQoIi5maW5hbmNlLW1lbnUtZnJlZWNyZWRpdCAuY3JlZGl0U2NvcmVCaXJ0aGRhdGUiKS5kYXRhKCJuZWJDYWwiKSkmJmYuaGlkZSgpLG0ucmVtb3ZlQ2xhc3MoImlzT3BlbiIpfX0pO2lmKCQoITApKXtlPSQoIi5tZW51NSAubmF2ID4gbGkiKTtrPWUubGVuZ3RoO3ZhciB4PSQoIiNNYWluTWVudV9DT05UQUNUIiksdj0tMTtlLmVhY2goZnVuY3Rpb24oZixnKXskKGcpLmlzKHgpJiYodj1mKX0pOy0xPHYmJi41PD12L2smJnguZmluZCgiLmNvbnRhY3R1cy1mb3JtLmNvbnRhY3Qtc2hvcnQiKS5jc3Moe3JpZ2h0OiJpbmhlcml0In0pfXRoaXMuc2hvdWxkVXNlRnJlbmNoTmFtZXM9ZnVuY3Rpb24oKXtyZXR1cm4iRlJFTkNIIj09JCgiI2FjdGl2ZXNpdGVsYW5ndWFnZSIpLnZhbCgpJiYiMSI9PT0kKCIjbmV3X3RyYW5zbGF0ZWRfdGl0bGVzIikudmFsKCl9O3RoaXMuc2V0TWVudUV4cHJlc3NGb3JtU2VsZWN0ZWRPcHRpb249ZnVuY3Rpb24oKXt2YXIgZj13aW5kb3cubG9jYXRpb24uaHJlZiwKZz0vdXNlZHxvY2Nhc2lvbi8udGVzdChmKSxtPS9uZXd8bmV1ZnMvLnRlc3QoZiksbD0vZmluYW5jZW1lbnR8Y3JlZGl0Ly50ZXN0KGYpLHU9L3NlcnZpY2V8YWNjZXNzb3JpZXN8dGlyZXxwbmV1c3xib2R5c2hvcHxib2R5LXNob3B8Y2Fyb3NzZXJpZS8udGVzdChmKTtmPSIiO20\/Zj0ibmV3IjpnP2Y9InVzZWQiOmw\/Zj0iZmluYW5jZSI6dSYmKGY9InNlcnZpY2UiKTsiIiE9ZiYmKGc9JCgiLm1lbnUgI3F1aWNrRW1haWxEZXBhcnRtZW50IiksJCgnIG9wdGlvblt2YWx1ZT0iJytmKyciXScsZykucHJvcCgic2VsZWN0ZWQiLCJzZWxlY3RlZCIpLG09JCgib3B0aW9uOnNlbGVjdGVkIixnKS5pbmRleCgpLGcucHJldigidWwiKS5maW5kKCJsaSIpLmVxKG0pLmZpbmQoImEiKS50cmlnZ2VyKCJjbGljayIpKX07c2V0VGltZW91dChmdW5jdGlvbigpe2Euc2V0TWVudUV4cHJlc3NGb3JtU2VsZWN0ZWRPcHRpb24oKX0sMTApO2NvbnNvbGUubG9nKCJNZW51SGFuZGxlciBpbml0IC0tIHRlc3QgcmVtb3ZlIGxhdGVyIik7CnRoaXMudHJhbnNsYXRlVGl0bGVzPWZ1bmN0aW9uKCl7cmV0dXJuICRqc2NvbXAuYXN5bmNFeGVjdXRlUHJvbWlzZUdlbmVyYXRvckZ1bmN0aW9uKGZ1bmN0aW9uKigpe3RyeXt2YXIgZj1kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCJbZGF0YS1tZW51LXRyYW5zbGF0ZV0iKTtpZihmKXt2YXIgZz1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJib2R5IikuY2xhc3NOYW1lLm1hdGNoKCJGUkVOQ0giKT8iZnIiOiJlbiIsbT0obmV3IFVSTChgL2pzL2pzb24vbWVudVRpdGxlc18ke2d9Lmpzb25gLHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4pKS5ocmVmO3Jlc3BvbnNlPXlpZWxkIGZldGNoKG0pO2lmKHRleHQ9eWllbGQgcmVzcG9uc2UudGV4dCgpKWlmKGRhdGE9SlNPTi5wYXJzZSh0ZXh0KSxmJiYwIT09ZGF0YS5sZW5ndGgpZm9yKGc9MDtnPGYubGVuZ3RoO2crKyl7dmFyIGw9ZltnXS5nZXRBdHRyaWJ1dGUoImRhdGEtbWVudS10cmFuc2xhdGUiKTtkYXRhW2xdJiZCYXNlNjQuaXNCYXNlNjQoZGF0YVtsXS50ZXh0KSYmCihmW2ddLnRleHRDb250ZW50PUJhc2U2NC5kZWNvZGUoZGF0YVtsXS50ZXh0KSl9fX1jYXRjaCh1KXtjb25zb2xlLmxvZyh1KX19KX07dGhpcy50cmFuc2xhdGVUaXRsZXMoKX19KSgpOyQoZnVuY3Rpb24oKXt3aW5kb3cubWVudUhhbmRsZXI9bmV3IE1lbnVIYW5kbGVyfSk7CnZhciBnZXRBY3RpdmVQYWdlPWZ1bmN0aW9uKCl7dmFyIGE9IiI7InVuZGVmaW5lZCI9PT10eXBlb2YgYWN0aXZlUGFnZSYmKGFjdGl2ZVBhZ2U9IiIpO3N3aXRjaChhY3RpdmVQYWdlKXtjYXNlICJIT01FUEFHRSI6YT0iQWNjdWVpbCI7YnJlYWs7Y2FzZSAiQ0FSREVUQUlMUyI6YT0iT2NjYXNpb24tVkRQIjticmVhaztjYXNlICJVU0VEQ0FSUyI6YT0iT2NjYXNpb24tU1JQIjticmVhaztjYXNlICJORVdDQVJTIjphPSJOZXVmLVNSUCI7YnJlYWs7Y2FzZSAiTkVXQ0FSREVUQUlMUyI6YT0iTmV1Zi1WRFAifXJldHVybiBhfSxzZW5kR29vZ2xlQW5hbHl0aWNCYW5uZXJDbGlja2VkRXZlbnQ9ZnVuY3Rpb24oYSxiKXtnYVRyYWNrKCJfdHJhY2tFdmVudCIsIkNsaXF1ZXMgQmFubmllcmUiLGEsYiwxKX07CiQoZG9jdW1lbnQpLm9uKCJjbGljayIsIiNob21lcGFnZS1iYW5uZXIgI3NsaWRlciA+IGEiLGZ1bmN0aW9uKGEpe2lmKGE9Z2V0QWN0aXZlUGFnZSgpKXt2YXIgYj0iIiE9JCh0aGlzKS5hdHRyKCJocmVmIik\/JCh0aGlzKS5hdHRyKCJocmVmIik6IlBvcHVwIjtzZW5kR29vZ2xlQW5hbHl0aWNCYW5uZXJDbGlja2VkRXZlbnQoYSxiKX19KTskKGRvY3VtZW50KS5vbigiY2xpY2siLCIjbW9iaWxlU2xpZGVyICNtb2JpbGVTbGlkZXIyID4gYSIsZnVuY3Rpb24oYSl7aWYoYT1nZXRBY3RpdmVQYWdlKCkpe3ZhciBiPSIiIT0kKHRoaXMpLmF0dHIoImhyZWYiKT8kKHRoaXMpLmF0dHIoImhyZWYiKToiUG9wdXAiO3NlbmRHb29nbGVBbmFseXRpY0Jhbm5lckNsaWNrZWRFdmVudChhLGIpfX0pOwokKGRvY3VtZW50KS5vbigiY2xpY2siLCIjdG9wQmFubmVySW1hZ2UiLGZ1bmN0aW9uKGEpeyhhPWdldEFjdGl2ZVBhZ2UoKSkmJnNlbmRHb29nbGVBbmFseXRpY0Jhbm5lckNsaWNrZWRFdmVudChhLCJQb3B1cCIpfSk7dmFyIGhvbWVQYWdlQmFubmVyVmlldz1bXTskKGRvY3VtZW50KS5vbigiY2xpY2siLCIjaG9tZXBhZ2UtYmFubmVyICNzbGlkZXIgPiBhIixmdW5jdGlvbihhKXsoYT1nZXRBY3RpdmVQYWdlKCkpJiYiQWNjdWVpbCI9PWEmJihhPSQoIiNzbGlkZXIiKS5kYXRhKCJuaXZvOnZhcnMiKS5jdXJyZW50U2xpZGUrMSxnYVRyYWNrKCJjLl90cmFja0V2ZW50IiwiSG9tZS1wYWdlIHNsaWRlciIsIkRlc2t0b3AtY2xpY2siLGEsMSkpfSk7CiQoZG9jdW1lbnQpLm9uKCJuaXZvU2xpZGVyQ2hhbmdlZCBuaXZvU2xpZGVyTG9hZGVkIiwiI2hvbWVwYWdlLWJhbm5lciAjc2xpZGVyIixmdW5jdGlvbihhKXshKGE9Z2V0QWN0aXZlUGFnZSgpKXx8IkFjY3VlaWwiIT1hfHw1MDA8JChkb2N1bWVudCkuc2Nyb2xsVG9wKCl8fChhPSQoIiNzbGlkZXIiKS5kYXRhKCJuaXZvOnZhcnMiKS5jdXJyZW50U2xpZGUrMSwwPiQuaW5BcnJheShhLGhvbWVQYWdlQmFubmVyVmlldykmJihob21lUGFnZUJhbm5lclZpZXcucHVzaChhKSxnYVRyYWNrKCJjLl90cmFja0V2ZW50IiwiSG9tZS1wYWdlIHNsaWRlciIsIkRlc2t0b3AtdmlldyIsYSwxKSkpfSk7CiQoZG9jdW1lbnQpLm9uKCJjbGljayIsIiNtb2JpbGVTbGlkZXIgI21vYmlsZVNsaWRlcjIgPiBhIixmdW5jdGlvbihhKXsoYT1nZXRBY3RpdmVQYWdlKCkpJiYiQWNjdWVpbCI9PWEmJihhPSQoIiNtb2JpbGVTbGlkZXIyIikuZGF0YSgibml2bzp2YXJzIikuY3VycmVudFNsaWRlKzEsZ2FUcmFjaygiYy5fdHJhY2tFdmVudCIsIkhvbWUtcGFnZSBzbGlkZXIiLCJNb2JpbGUtY2xpY2siLGEsMSkpfSk7CiQoZG9jdW1lbnQpLm9uKCJuaXZvU2xpZGVyQ2hhbmdlZCBuaXZvU2xpZGVyTG9hZGVkIiwiI21vYmlsZVNsaWRlciAjbW9iaWxlU2xpZGVyMiIsZnVuY3Rpb24oYSl7IShhPWdldEFjdGl2ZVBhZ2UoKSl8fCJBY2N1ZWlsIiE9YXx8MzUwPCQoZG9jdW1lbnQpLnNjcm9sbFRvcCgpfHwoYT0kKCIjbW9iaWxlU2xpZGVyMiIpLmRhdGEoIm5pdm86dmFycyIpLmN1cnJlbnRTbGlkZSsxLDA+JC5pbkFycmF5KGEsaG9tZVBhZ2VCYW5uZXJWaWV3KSYmKGhvbWVQYWdlQmFubmVyVmlldy5wdXNoKGEpLGdhVHJhY2soImMuX3RyYWNrRXZlbnQiLCJIb21lLXBhZ2Ugc2xpZGVyIiwiTW9iaWxlLXZpZXciLGEsMSkpKX0pOwpmdW5jdGlvbiB0aHJlc2hvbGRQb3B1cCgpe3ZhciBhPWdldFVybFZhcnMoKTtpZihudWxsPT1Db29raWVzLmdldCgicG9wdXBTaG93biIpfHwidW5kZWZpbmVkIiE9dHlwZW9mIGEuZGVidWcpc2hvd1BvcHVwV2lkZ2V0KHtkb05vdFJlZGlyZWN0OiEwfSksQ29va2llcy5zZXQoInBvcHVwU2hvd24iLCIxIiw5MCwiLyIpfWZ1bmN0aW9uIF9sb2NhbFN0b3JhZ2VTZXQoYSxiLGMpe2M9ODY0RTUqKGN8fDEpO2I9e3ZhbHVlOmIsZXhwaXJ5OihuZXcgRGF0ZSkuZ2V0VGltZSgpK2N9O2xvY2FsU3RvcmFnZS5zZXRJdGVtKGEsSlNPTi5zdHJpbmdpZnkoYikpfWZ1bmN0aW9uIF9sb2NhbFN0b3JhZ2VHZXQoYSl7dmFyIGI9bG9jYWxTdG9yYWdlLmdldEl0ZW0oYSk7aWYoIWIpcmV0dXJuIG51bGw7Yj1KU09OLnBhcnNlKGIpO3JldHVybihuZXcgRGF0ZSkuZ2V0VGltZSgpPmIuZXhwaXJ5Pyhsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShhKSxudWxsKTpiLnZhbHVlfQpmdW5jdGlvbiBfbG9jYWxTdG9yYWdlUmVtb3ZlKGEpe2lmKCFsb2NhbFN0b3JhZ2UuZ2V0SXRlbShhKSlyZXR1cm4gbnVsbDtsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShhKTtyZXR1cm4gbnVsbH1mdW5jdGlvbiBnZW5lcmF0ZVVuaXF1ZUlkKCl7cmV0dXJuImlkLSIrRGF0ZS5ub3coKSsiLSIrTWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc2xpY2UoMil9Y29uc3QgaW5pdFRvb2x0aXBzPSgpPT57dHJ5e2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIltkYXRhLXBvcHBlcl0iKS5mb3JFYWNoKGE9PntUb29sdGlwKGEpLmNyZWF0ZSgpfSl9Y2F0Y2goYSl7Y29uc29sZS5sb2coIlRvb2x0aXAgb2JqZWN0IG5vdCBmb3VuZCIpfX07CmZ1bmN0aW9uIGhhbmRsZUNvb2tpZUNvbnRlbnQoKXtkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCJbZGF0YS1jb29raWVoaWRlXSIpLmZvckVhY2goYT0+e2xldCBiPWEuZGF0YXNldC5jb29raWVoaWRlO2IubGVuZ3RoJiZDb29raWVzLmdldChiKSYmKGEuaGlkZGVuPSEwKX0pO2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIltkYXRhLWNvb2tpZXNob3ddIikuZm9yRWFjaChhPT57bGV0IGI9YS5kYXRhc2V0LmNvb2tpZXNob3c7Yi5sZW5ndGgmJkNvb2tpZXMuZ2V0KGIpJiYoYS5oaWRkZW49ITEpfSl9dmFyIHNpdGVQYWdlPXt9Owpjb25zdCBkb2NSZWFkeT1mdW5jdGlvbigpe19sb2NhbFN0b3JhZ2VHZXQoImQyYy11aWQiKXx8X2xvY2FsU3RvcmFnZVNldCgiZDJjLXVpZCIsZ2VuZXJhdGVVbmlxdWVJZCgpLDIpO2lmKCJjb21wbGV0ZSI9PT1kb2N1bWVudC5yZWFkeVN0YXRlKXtsZXQgYTtjb25zb2xlLmxvZygiR1NQRUVELURPQ1JFQURZIENPTVBMRVRFOiIrKERhdGUubm93KCktKG51bGwhPShhPXdpbmRvdy5nVGVzdFNwZWVkQ29ubik\/YTowKSkvMUUzKTtkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCIuc2tlbGV0b24tdHh0IikuZm9yRWFjaChiPT57Yi5jbGFzc0xpc3QudG9nZ2xlKCJza2VsZXRvbi10eHQiLCExKX0pO2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIi5za2VsZXRvbi1zbGlkZXIiKS5mb3JFYWNoKGI9PntiLmNsYXNzTGlzdC50b2dnbGUoInNrZWxldG9uLXNsaWRlciIsITEpfSk7d2luZG93LmdTa2VsZXRvbklzUmVtb3ZlZD0hMDtzaXRlUGFnZT17bmFtZToidW5kZWZpbmVkIiE9dHlwZW9mIHBhZ2U\/CnBhZ2U6IiIsaXNNb2JpbGU6IjEiPT0oZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImlzbW9iaWxlIil8fCIiKS52YWx1ZSxsYW5nOihkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYWN0aXZlc2l0ZWxhbmd1YWdlIil8fCIiKS52YWx1ZXx8IkZSRU5DSCJ9O2hhbmRsZUNvb2tpZUNvbnRlbnQoKTtpbml0VG9vbHRpcHMoKTtkb2NSZWFkeUFyci5mb3JFYWNoKGI9PmIoKSk7ZG9jUmVhZHlBcnI9W119ZWxzZXtsZXQgYTtpZigiaW50ZXJhY3RpdmUiPT09ZG9jdW1lbnQucmVhZHlTdGF0ZSYmd2luZG93LmdSZXNvdXJjZUxvYWRlckFuZEpxdWVyeUlzUmVhZHkmJiExPT09KG51bGwhPShhPXdpbmRvdy5nU2tlbGV0b25Jc1JlbW92ZWQpP2E6ITEpKXtsZXQgYjtjb25zb2xlLmxvZygiR1NQRUVELURPQ1JFQURZIElOVEVSQUNUSVZFOiIrKERhdGUubm93KCktKG51bGwhPShiPXdpbmRvdy5nVGVzdFNwZWVkQ29ubik\/YjowKSkvMUUzKTtkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCIuc2tlbGV0b24tdHh0IikuZm9yRWFjaChjPT4Ke2MuY2xhc3NMaXN0LnRvZ2dsZSgic2tlbGV0b24tdHh0IiwhMSl9KTtkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCIuc2tlbGV0b24tc2xpZGVyIikuZm9yRWFjaChjPT57Yy5jbGFzc0xpc3QudG9nZ2xlKCJza2VsZXRvbi1zbGlkZXIiLCExKX0pO3dpbmRvdy5nU2tlbGV0b25Jc1JlbW92ZWQ9ITB9c2V0VGltZW91dChkb2NSZWFkeSw1MCl9fTtkb2NSZWFkeSgpOwokKGZ1bmN0aW9uKCl7dmFyIGE9ITA7JCh3aW5kb3cpLm9uKCJzY3JvbGwiLGZ1bmN0aW9uKCl7dmFyIGQ9JChkb2N1bWVudCkuaGVpZ2h0KCksZT0kKHdpbmRvdykuaGVpZ2h0KCkrJCh3aW5kb3cpLnNjcm9sbFRvcCgpOy4wNT4oZC1lKS9kJiZhJiYoYT0hMSwidW5kZWZpbmVkIiE9PXR5cGVvZiBnYVRyYWNrJiZnYVRyYWNrKCJfdHJhY2tFdmVudCIsIkJvdHRvbSBvZiBwYWdlIHJlYWNoZWQiLCQoJ2lucHV0W25hbWU9InRhcmdldFBhZ2UiXScpLnZhbCgpLHdpbmRvdy5sb2NhdGlvbi5ocmVmLDEpKX0pOyQoIi5lbWJlZC1jb250YWluZXIteW91dHViZSIpLnBhcmVudCgiLndyYXBwZXIiKS5yZW1vdmVDbGFzcygid3JhcHBlciIpO2lmKCQoIiNpc0JyYW5kUGFnZSIpLmxlbmd0aCl7dmFyIGI9Z2V0VXJsVmFycygpO2lmKGIua3cmJi0xIT1iLmt3LnRvTG93ZXJDYXNlKCkuaW5kZXhPZigiY2FuYWRhIikpe3ZhciBjPSQoIiNhY3RpdmVzaXRlbGFuZ3VhZ2UiKSYmIkVOR0xJU0giPT0KJCgiI2FjdGl2ZXNpdGVsYW5ndWFnZSIpLnZhbCgpPyJlbiI6ImZyIjtiPSJlbiI9PWM\/IkhlcmUgd2Ugb2ZmZXIgdGhlIGJlc3QgcHJpY2VzIjoiSWNpIG9uIG9mZnJlIGxlcyBtZWlsbGV1cnMgcHJpeCI7Yz0iZW4iPT1jPyJvbiAiKyQoIiNpc0JyYW5kUGFnZSIpLnZhbCgpKyIncyBpbiBDYW5hZGEiOiQoIiNpc0JyYW5kUGFnZSIpLnZhbCgpKyIgYXUgQ2FuYWRhIjskKCIjZGVmYXVsdFRvcEJhbm5lclRpdGxlIikudGV4dChiKTskKCIjZGVmYXVsdFRvcEJhbm5lclRleHQiKS50ZXh0KGMpfX0kKCIjZmluYW5jZU11bHRpc3RlcFBvcHVwQ29udGFpbmVyIikubGVuZ3RoJiYoYj1nZXRVcmxWYXJzKCksYi5maW5hbmNlcG9wJiYieWVzIj09Yi5maW5hbmNlcG9wJiZzZXRUaW1lb3V0KCgpPT57JCgiI2ZpbmFuY2VNdWx0aXN0ZXBQb3B1cENvbnRhaW5lciIpLnBvcHVwaXplKCkub3BlbigpfSwxRTMpKTswPCQoIi50cmFkZXNpaS1yb290IikudGV4dCgpLmxlbmd0aD8kKCIudHJhZGVzaWktcm9vdCIpLmNzcygiei1pbmRleCIsCjFFMyk6c2V0VGltZW91dChmdW5jdGlvbigpeyQoIi50cmFkZXNpaS1yb290IikuY3NzKCJ6LWluZGV4IiwxRTMpfSwxRTMpfSk7ZnVuY3Rpb24gYWRkTWF4TGVuZ3RoKCl7JCgiOmlucHV0IikuZWFjaChmdW5jdGlvbigpe3ZhciBhPSQodGhpcykuYXR0cigidHlwZSIpLGI9JCh0aGlzKS5hdHRyKCJtYXhsZW5ndGgiKTtpZih2b2lkIDA9PWJ8fG51bGw9PWJ8fCIiPT1iKSJ0ZXh0Ij09YXx8InRlbCI9PWF8fCJlbWFpbCI9PWF8fCJ1cmwiPT1hPyQodGhpcykucHJvcCgibWF4bGVuZ3RoIiwyNTYpOiJudW1iZXIiPT1hJiYoJCh0aGlzKS5wcm9wKCJvbmlucHV0IiwidGhpcy52YWx1ZT10aGlzLnZhbHVlLnNsaWNlKDAsdGhpcy5tYXhsZW5ndGgpIiksJCh0aGlzKS5wcm9wKCJtYXhsZW5ndGgiLDI1NikpfSl9ZG9jUmVhZHlBcnIucHVzaCgoKT0+eyQoIi5yZXZlYWwtbW9kYWwiKS5vbigicG9wdXBpemVyLm9uT3BlbiIsZnVuY3Rpb24oKXthZGRNYXhMZW5ndGgoKX0pO2FkZE1heExlbmd0aCgpfSk7CihmdW5jdGlvbihhKXtmdW5jdGlvbiBiKGQsZSl7dGhpcy5lbD1kO3RoaXMuJGVsPWEoZCk7aWYodm9pZCAwPT09ZXx8Im9iamVjdCI9PT10eXBlb2YgZSl0aGlzLnNldHRpbmdzPWEuZXh0ZW5kKGMsZSk7dGhpcy5pbml0KCl9dmFyIGM9e2xhdDoiIixsb25nOiIiLHBvc3RhbDoiIixyYXRpbzouNjg4NSx3aWR0aDoiYXV0byJ9O2IucHJvdG90eXBlPXtpbml0OmZ1bmN0aW9uKCl7dmFyIGQ9dGhpcy4kZWwuaXMoIi5sYXp5bG9hZCIpPyJkYXRhLWltZ3NyYyI6InNyYyI7dGhpcy4kZWwuYXR0cihkLHRoaXMuZ2V0VXJsKCkpfSxpc1Zpc2libGU6ZnVuY3Rpb24oKXt2YXIgZD10aGlzLiRlbC5hdHRyKCJ3aWR0aCIpO3JldHVybiEoIjBweCI9PT10aGlzLiRlbC5hdHRyKCJoZWlnaHQiKXx8IjBweCI9PT1kKX0sZ2V0V2lkdGg6ZnVuY3Rpb24oKXt0aGlzLiRlbC5hdHRyKCJ3aWR0aCIpO3ZhciBkPTA7ImF1dG8iPT09dGhpcy5zZXR0aW5ncy53aWR0aHx8ImF1dG8iPT09dGhpcy4kZWwuZGF0YSgid2lkdGgiKT8KZD10aGlzLiRlbC5wYXJlbnQoKS5jc3MoIndpZHRoIik6aXNOYU4ocGFyc2VJbnQodGhpcy5zZXR0aW5ncy53aWR0aCkpP3ZvaWQgMCE9PXRoaXMuJGVsLmF0dHIoIndpZHRoIikmJihkPXRoaXMuJGVsLmF0dHIoIndpZHRoIikpOmQ9dGhpcy5zZXR0aW5ncy53aWR0aDt0aGlzLiRlbC5hdHRyKCJ3aWR0aCIsZCk7cmV0dXJuIHBhcnNlSW50KGQucmVwbGFjZSgicHgiLCIiKSl9LGdldEhlaWdodDpmdW5jdGlvbigpe3ZhciBkPSJhdXRvIj09PXRoaXMuc2V0dGluZ3Mud2lkdGh8fCJhdXRvIj09PXRoaXMuJGVsLmRhdGEoIndpZHRoIik\/TWF0aC5yb3VuZCh0aGlzLmdldFdpZHRoKCkqdGhpcy5zZXR0aW5ncy5yYXRpbykrInB4Ijp0aGlzLiRlbC5wYXJlbnQoKS5jc3MoImhlaWdodCIpO3RoaXMuJGVsLmF0dHIoImhlaWdodCIsZCk7cmV0dXJuIHBhcnNlSW50KGQucmVwbGFjZSgicHgiLCIiKSl9LGdldFVybDpmdW5jdGlvbigpe3ZhciBkPWdldERhdGFBdHRyaWJ1dGVzKHRoaXMuZWwpLAplPXRoaXMuZ2V0V2lkdGgoKSxrPXRoaXMuZ2V0SGVpZ2h0KCksaD1kLmxhdCsiLCIrZC5sb25nLG49ZC5oYXNPd25Qcm9wZXJ0eSgibWFya2VySWNvbiIpPyJpY29uOiIrZC5tYXJrZXJJY29uKyJ8IjoiIjtkPWEuZXh0ZW5kKHtzaXplOmUrIngiK2ssY2VudGVyOmgsem9vbToiMTIiLG1hcmtlcnM6bitofSxkKTtyZXR1cm4iaHR0cHM6Ly9tYXBzLmdvb2dsZWFwaXMuY29tL21hcHMvYXBpL3N0YXRpY21hcD8iK2EucGFyYW0oZCl9LGRlc3Ryb3k6ZnVuY3Rpb24oKXt0aGlzLiRlbC5yZW1vdmVEYXRhKCl9fTthLmZuLmdvb2dsZVN0YXRpY01hcD1mdW5jdGlvbihkKXt2YXIgZT1hcmd1bWVudHM7aWYoMT50aGlzLmxlbmd0aClyZXR1cm4gdGhpczt0aGlzLmVhY2goZnVuY3Rpb24oKXtpZighYS5kYXRhKHRoaXMsInBsdWdpbl9zdGF0aWNNYXAiKSlyZXR1cm4gYS5kYXRhKHRoaXMsInBsdWdpbl9zdGF0aWNNYXAiLG5ldyBiKHRoaXMsZCkpLHRoaXN9KTtpZigic3RyaW5nIj09PXR5cGVvZiBkJiYKIl8iIT09ZFswXSYmImluaXQiIT09ZCl7MTx0aGlzLmxlbmd0aCYmY29uc29sZS5sb2coImdvb2dsZVN0YXRpY01hcCB3YXJuaW5nIGNvZGUgMSIpO3ZhciBrPWEuZGF0YSh0aGlzLmZpcnN0KClbMF0sInBsdWdpbl9zdGF0aWNNYXAiKTtyZXR1cm4ga1tkXS5hcHBseShrLEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGUsMSkpfXJldHVybiB0aGlzfX0pKGpRdWVyeSk7ZnVuY3Rpb24gcGFyc2VRdWVyeShhKXtpZigxPmEubGVuZ3RoKXJldHVybnt9O2Zvcih2YXIgYj17fSxjPWEuc3BsaXQoIiYiKSxkPTA7ZDxjLmxlbmd0aDtkKyspYT1leHBsb2RlKGNbZF0sIj0iLDEpLGJbYVswXV09YVsxXTtyZXR1cm4gYn1mdW5jdGlvbiBkZWNvZGVTdHJpbmcoYSxiKXtpZigiIj09Ynx8InVuZGVmaW5lZCI9PWIpYj0xO2ZvcihpPTA7aTxiO2krKylhPWRlY29kZVVSSUNvbXBvbmVudChhKTtyZXR1cm4gYX0KZnVuY3Rpb24gZXhwbG9kZShhLGIsYyl7YT1hLnNwbGl0KGIpO2lmKGEubGVuZ3RoPD1jKXJldHVybiBhO2M9YS5zcGxpY2UoMCxjKTtjLnB1c2goYS5qb2luKGIpKTtyZXR1cm4gY31mdW5jdGlvbiBnZXRVcmxWYXJzKCl7dmFyIGE9d2luZG93LmxvY2F0aW9uLnNlYXJjaC5zdWJzdHJpbmcoMSk7cmV0dXJuIHBhcnNlUXVlcnkoYSl9ZnVuY3Rpb24gZ2V0Q29va2llKGEpe3JldHVybiBDb29raWVzLmdldChhKX1mdW5jdGlvbiBzZXRDb29raWUoYSxiLGMpe0Nvb2tpZXMuc2V0KGEsYixjLCIvIil9ZnVuY3Rpb24gZ2V0Q29va2llRDJjKGEpe3JldHVybiBDb29raWVzLmdldChhKX1mdW5jdGlvbiBzZXRDb29raWVEMmMoYSxiLGMpe0Nvb2tpZXMuc2V0KGEsYixjLCIvIil9ZnVuY3Rpb24gaXNTU0woKXtyZXR1cm4iaHR0cHM6Ij09PXdpbmRvdy5sb2NhdGlvbi5wcm90b2NvbH1mdW5jdGlvbiBzZXRTZXNzaW9uQ29va2llKGEsYil7Q29va2llcy5zZXQoYSxiLDAsIi8iKX0KZnVuY3Rpb24gaW5pdExDSShhLGIpe2lmKDIwPGIpcmV0dXJuIGI7Yj1iP2I6MDtpZigidW5kZWZpbmVkIj09dHlwZW9mIExDX0FQSXx8InVuZGVmaW5lZCI9PXR5cGVvZiBMQ19JbnZpdGUpc2V0VGltZW91dChmdW5jdGlvbigpe2luaXRMQ0koYSwrK2IpfSw1MDApO2Vsc2UgaWYoInVuZGVmaW5lZCIhPXR5cGVvZiBMQ19BUEkmJiJ1bmRlZmluZWQiIT10eXBlb2YgTENfSW52aXRlJiZhKXJldHVybiBMQ19BUEkuc2V0X2N1c3RvbV92YXJpYWJsZXMoYSl9ZnVuY3Rpb24gZ2V0UmVmZXJyZXJWYXJGdW5jdGlvbihhKXtyZXR1cm4gZnVuY3Rpb24oKXsiIj09YSYmKGE9ZG9jdW1lbnQucmVmZXJyZXIpO3ZhciBiPWEuaW5kZXhPZigiPyIpKzE7cmV0dXJuIDA8Yj8oYj1hLnNsaWNlKGIpLHBhcnNlUXVlcnkoYikpOnt9fX0KKGZ1bmN0aW9uKGEpe3ZhciBiPXtjYWxsYmFja3M6W10saGFzU2NyaXB0OmZ1bmN0aW9uKCl7dmFyIGU9YSgnaGVhZCBzY3JpcHRbc3JjKj0ibWFwcy5qcy5waHAiXScpO3JldHVybiAwPT1lLmxlbmd0aD8hMTovbWFwc1wuanMvLnRlc3QoZS5hdHRyKCJzcmMiKSl9LGxvYWQ6ZnVuY3Rpb24oZSl7aWYoYi5oYXNTY3JpcHQoKSkidW5kZWZpbmVkIj09PXR5cGVvZiBnb29nbGU\/Yi5jYWxsYmFja3MucHVzaChlKTplKCk7ZWxzZXtiLmNhbGxiYWNrcy5wdXNoKGUpO3RyeXt2YXIgaz0iRU5HTElTSCI9PWEoIiNhY3RpdmVzaXRlbGFuZ3VhZ2UiKS52YWwoKT8iZW4iOiJmciI7KGZ1bmN0aW9uKGgsbix4LHYsZil7aFtmXSYmaFtmXS5tYXBzfHwoaD1uLmNyZWF0ZUVsZW1lbnQoeCksbj1uLmdldEVsZW1lbnRzQnlUYWdOYW1lKHgpWzBdLGguc3JjPXYsaC5hc3luYz0hMSxkb2N1bWVudC5ib2R5LmFkZEV2ZW50TGlzdGVuZXIoImdvb2dsZU1hcHNMb2FkZWQiLGc9Pntmb3IoZz0wO2c8Yi5jYWxsYmFja3MubGVuZ3RoO2crKyliLmNhbGxiYWNrc1tnXS5jYWxsKCl9KSwKbi5wYXJlbnROb2RlLmluc2VydEJlZm9yZShoLG4pKX0pKHdpbmRvdyxkb2N1bWVudCwic2NyaXB0IiwiL2pzL21hcHMuanMucGhwP2xhbmc9IitrLCJnb29nbGUiKX1jYXRjaChoKXtjb25zb2xlLmxvZyhoKX19fX0sYz17YXV0b0NvbXBsZXRlOntjb21wb25lbnRSZXN0cmljdGlvbnM6e2NvdW50cnk6ImNhIn19LHJhZGl1czoxRTV9LGQ9ZnVuY3Rpb24oZSxrKXt2YXIgaD10aGlzO2guZWw9ZTtoLiRlbD1hKGUpO2guc2V0dGluZ3M9YS5leHRlbmQoYyxrKTtoLmFkZHJlc3M9e2NpdHk6IiIsc3RyZWV0X251bWJlcjoiIixzdHJlZXQ6IiIsc3VibG9jYWxpdHk6IiIscHJvdmluY2U6IiIsY291bnRyeToiIixwb3N0YWw6IiJ9O2guJGVsLm9uZSgiZm9jdXMiLGZ1bmN0aW9uKCl7aC5pbml0KCl9KX07ZC5wcm90b3R5cGU9e19jaGVja0Zvckdvb2dsZU1hcHM6ZnVuY3Rpb24oZSl7InVuZGVmaW5lZCI9PT10eXBlb2YgZ29vZ2xlfHwidW5kZWZpbmVkIj09PXR5cGVvZiBnb29nbGUubWFwcz8KYi5sb2FkKGUpOiJmdW5jdGlvbiI9PT10eXBlb2YgZSYmZS5jYWxsKCl9LGdldEFkZHJlc3M6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hZGRyZXNzfSxfc2V0QWRkcmVzczpmdW5jdGlvbihlKXt2YXIgaz10aGlzO2EuZWFjaChlLGZ1bmN0aW9uKGgsbil7c3dpdGNoKCEwKXtjYXNlIC0xPGEuaW5BcnJheSgic3RyZWV0X251bWJlciIsbi50eXBlcyk6ay5hZGRyZXNzLnN0cmVldF9udW1iZXI9bjticmVhaztjYXNlIC0xPGEuaW5BcnJheSgicm91dGUiLG4udHlwZXMpOmsuYWRkcmVzcy5zdHJlZXQ9bjticmVhaztjYXNlIC0xPGEuaW5BcnJheSgic3VibG9jYWxpdHkiLG4udHlwZXMpOmsuYWRkcmVzcy5zdWJsb2NhbGl0eT1uO2JyZWFrO2Nhc2UgLTE8YS5pbkFycmF5KCJsb2NhbGl0eSIsbi50eXBlcyk6Y2FzZSAtMTxhLmluQXJyYXkoImFkbWluaXN0cmF0aXZlX2FyZWFfbGV2ZWxfMyIsbi50eXBlcyk6IiI9PWsuYWRkcmVzcy5jaXR5JiYoay5hZGRyZXNzLmNpdHk9bik7YnJlYWs7CmNhc2UgLTE8YS5pbkFycmF5KCJhZG1pbmlzdHJhdGl2ZV9hcmVhX2xldmVsXzEiLG4udHlwZXMpOmsuYWRkcmVzcy5wcm92aW5jZT1uO2JyZWFrO2Nhc2UgLTE8YS5pbkFycmF5KCJjb3VudHJ5IixuLnR5cGVzKTprLmFkZHJlc3MuY291bnRyeT1uO2JyZWFrO2Nhc2UgLTE8YS5pbkFycmF5KCJwb3N0YWxfY29kZSIsbi50eXBlcyk6ay5hZGRyZXNzLnBvc3RhbD1ufX0pfSxfc2V0U2VhcmNoQm91bmRzOmZ1bmN0aW9uKGUsayxoKXtrPW5ldyBnb29nbGUubWFwcy5MYXRMbmcoayxoKTtrPW5ldyBnb29nbGUubWFwcy5DaXJjbGUoe2NlbnRlcjprLHJhZGl1czp0aGlzLnNldHRpbmdzLnJhZGl1c30pO2Uuc2V0Qm91bmRzKGsuZ2V0Qm91bmRzKCkpfSxpbml0OmZ1bmN0aW9uKCl7dmFyIGU9dGhpcztlLl9jaGVja0Zvckdvb2dsZU1hcHMoZnVuY3Rpb24oKXt2YXIgaz1uZXcgZ29vZ2xlLm1hcHMuR2VvY29kZXIsaD1uZXcgZ29vZ2xlLm1hcHMucGxhY2VzLkF1dG9jb21wbGV0ZShlLmVsLAplLnNldHRpbmdzLmF1dG9Db21wbGV0ZSk7ZS5zZXR0aW5ncy5oYXNPd25Qcm9wZXJ0eSgibGF0IikmJmUuc2V0dGluZ3MuaGFzT3duUHJvcGVydHkoImxvbmciKT8iIiE9PWUuc2V0dGluZ3MubGF0JiYiIiE9PWUuc2V0dGluZ3MubG9uZyYmZS5fc2V0U2VhcmNoQm91bmRzKGgsZS5zZXR0aW5ncy5sYXQsZS5zZXR0aW5ncy5sb25nKTplLnNldHRpbmdzLmhhc093blByb3BlcnR5KCJhZGRyZXNzIik\/ZS5zZXR0aW5ncy5hZGRyZXNzJiZrLmdlb2NvZGUoe2FkZHJlc3M6ZS5zZXR0aW5ncy5hZGRyZXNzfSxmdW5jdGlvbihuLHgpe2UuX3NldFNlYXJjaEJvdW5kcyhoLG5bMF0uZ2VvbWV0cnkubG9jYXRpb24ubGF0KCksblswXS5nZW9tZXRyeS5sb2NhdGlvbi5sbmcoKSl9KToidW5kZWZpbmVkIiE9PXR5cGVvZiBmb290ZXJNYXBBZGRyZXNzJiYwPGZvb3Rlck1hcEFkZHJlc3MubGVuZ3RoJiZrLmdlb2NvZGUoe2FkZHJlc3M6Zm9vdGVyTWFwQWRkcmVzc1swXS5hZGRyZXNzfSxmdW5jdGlvbihuLAp4KXtlLl9zZXRTZWFyY2hCb3VuZHMoaCxuWzBdLmdlb21ldHJ5LmxvY2F0aW9uLmxhdCgpLG5bMF0uZ2VvbWV0cnkubG9jYXRpb24ubG5nKCkpfSk7Z29vZ2xlLm1hcHMuZXZlbnQuYWRkTGlzdGVuZXIoaCwicGxhY2VfY2hhbmdlZCIsZnVuY3Rpb24oKXt2YXIgbj1oLmdldFBsYWNlKCk7ZS5fc2V0QWRkcmVzcyhuLmFkZHJlc3NfY29tcG9uZW50cyk7ZS4kZWwudmFsKG4uZm9ybWF0dGVkX2FkZHJlc3MpO249bmV3IEV2ZW50KCJpbnB1dCIpO2UuZWwuZGlzcGF0Y2hFdmVudChuKTtlLiRlbC50cmlnZ2VyKCJmb2N1cyIpfSl9KX19O2EuZm4uZ29vZ2xlUGxhY2VzPWZ1bmN0aW9uKGUpe3ZhciBrPWFyZ3VtZW50cztpZih2b2lkIDA9PT1lfHwib2JqZWN0Ij09PXR5cGVvZiBlKXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXthLmRhdGEodGhpcywicGx1Z2luX3BsYWNlcyIpfHxhLmRhdGEodGhpcywicGx1Z2luX3BsYWNlcyIsbmV3IGQodGhpcyxlKSl9KTtpZigic3RyaW5nIj09PXR5cGVvZiBlJiYKIl8iIT09ZVswXSYmImluaXQiIT09ZSl7dmFyIGg9YS5kYXRhKHRoaXNbMF0sInBsdWdpbl9wbGFjZXMiKTtyZXR1cm4gaFtlXS5hcHBseShoLEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGssMSkpfX19KShqUXVlcnkpOwpmdW5jdGlvbiBzaG93QmFubmVyUG9wdXAoYSl7dHJ5eyQoYSkuaGFzQ2xhc3MoInRyYWRlaW5MaW5rIikmJigwPGEuZ2V0QXR0cmlidXRlKCJ0YXJnZXRVUkkiKS5pbmRleE9mKCJ0cmFkZWludmFsdWVzIil8fDA8YS5nZXRBdHRyaWJ1dGUoInRhcmdldFVSSSIpLmluZGV4T2YoImluc3RhbnRvZmZlci5hY2N1LXRyYWRlLmNvbSIpKT9zaG93VHJhZGVJblBvcHVwKGEuZ2V0QXR0cmlidXRlKCJ0YXJnZXRVUkkiKSk6MDwkKCIjYmFubmVyUG9wdXBDb250YWluZXIiKS5sZW5ndGgmJiQoIiNiYW5uZXJQb3B1cENvbnRhaW5lciIpLnBvcHVwaXplKCkuc2V0VHJpZ2dlcigiY2xpY2siKS5vcGVuKCl9Y2F0Y2goYil7Y29uc29sZSYmY29uc29sZS5sb2cmJmNvbnNvbGUubG9nKCJVbmFibGUgdG8gZGlzcGxheSB0cmFkZWludmFsdWVzIGlmcmFtZS4gRXJyb3I6ICIrYi5tZXNzYWdlKX19CiQoZnVuY3Rpb24oKXswPCQoJ2lucHV0W2RhdGEtZ29vZ2xlLXBsYWNlcz0idHJ1ZSJdJykubGVuZ3RoJiYkKCdpbnB1dFtkYXRhLWdvb2dsZS1wbGFjZXM9InRydWUiXScpLmdvb2dsZVBsYWNlcygpOyJ1bmRlZmluZWQiIT09dHlwZW9mICQuZm4uZGFya1Rvb2x0aXAmJigkKCIjc29jaWFsX21lZGlhX2ljb25zX2RpdiBhLCAuZ1JhdGluZy1pY29uIikuZGFya1Rvb2x0aXAoe2dyYXZpdHk6Im5vcnRoIixvcGFjaXR5OjF9KSwkKCIuc29jaWFsLW1lZGlhLWljb25zIFtkYXRhLXRvb2x0aXBdIikuZGFya1Rvb2x0aXAoe2dyYXZpdHk6InNvdXRoIixvcGFjaXR5OjF9KSwkKCIjbWl0c3ViaXNoaUNlcnRpZmllZEZvb3RlciBhLnNvY2lhbC1tZWRpYV9faWNvbiwgI2h5dW5kYWlDZXJ0aWZpZWRGb290ZXIgYS5zb2NpYWwtbWVkaWFfX2ljb24iKS5kYXJrVG9vbHRpcCh7Z3Jhdml0eToic291dGgiLG9wYWNpdHk6MX0pKTt2YXIgYT0kKCIuZ3JheWJveC51c2VkRGV0YWlsc1Bob25lLCAuZ3JheWJveC5uZXdEZXRhaWxzUGhvbmUiKTsKMD09PWEuY2hpbGRyZW4oKS5sZW5ndGgmJjA9PT1hLnRleHQoKS50cmltKCkubGVuZ3RoJiZhLmhpZGUoKX0pOyQoIiNmaW5hbmNlQWx0RGlzcGxheSAuc3RlcDEgYmlnLnRleHQgYmlnIikuYXR0cigiZGF0YS1kZXBhcnRtZW50IiwiRmluYW5jZSIpOyQoIi5jcmVkaXRfbV9jYWxsdXNfd3JhcHBlciBhIikuYXR0cigiZGF0YS1kZXBhcnRtZW50IiwiRmluYW5jZSIpOwokKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpeyQoIiNkaXZDZXJ0aWZpY2F0aW9uLWNhcmd1cnVzLXdyYXBwZXIiKS5sZW5ndGgmJihlbGVtZW50VG9PYnNlcnZlPXdpbmRvdy5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZGl2Q2VydGlmaWNhdGlvbi1jYXJndXJ1cy13cmFwcGVyIikuY2hpbGRyZW5bMF0sb2JzZXJ2ZXI9bmV3IE11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24oYSxiKXtiPSQoIiNkaXZDZXJ0aWZpY2F0aW9uLWNhcmd1cnVzLXdyYXBwZXIiKTtsZXQgYz0kKCJzcGFuW2RhdGEtY2ctZXJyb3JdIixiKTtjb25zb2xlLmxvZygiRDJDRyIsYixjLGEpO2MubGVuZ3RoJiZiLnJlbW92ZSgpfSksb2JzZXJ2ZXIub2JzZXJ2ZShlbGVtZW50VG9PYnNlcnZlLHtjaGFyYWN0ZXJEYXRhOiExLGNoaWxkTGlzdDohMCxhdHRyaWJ1dGVzOiExfSkpfSk7JChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKXstMTx3aW5kb3cubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvbmV3LyIpfHwkKCIjbmV3LXZkcC1zcGVjLWJyb2NodXJlIikuaGlkZSgpfSk7CiQoZnVuY3Rpb24oKXskKCIjRm9vdGVyX0ZJTkFOQ0UgPiBhLCBhI0ZpbmFuY2VBY3Rpb25Cb3gsIGEjRmluYW5jZUFjdGlvbkJveExpbmsiKS5vbigibW91c2VlbnRlciBtb3VzZWxlYXZlIixmdW5jdGlvbigpe3ZhciBhPSQodGhpcyksYj0kKCJodG1sIikuYXR0cigibGFuZyIpO2lmKDA8JCgiI0RFQUxFUlBBQ09ERSIpLmxlbmd0aCl7dmFyIGM9JCgiI0RFQUxFUlBBQ09ERSIpLnZhbCgpLGQ9JCgiI0RFQUxFUkJSQU5EX1BSSU1BUlkiKS52YWwoKS50b0xvd2VyQ2FzZSgpO2lmKCJmb3JkX2xpbmNvbG5fZXh0ZXJuYWwiPT0kKCIjRklOQU5DRUZPUk1UWVBFIikudmFsKCkmJigiZm9yZCI9PWR8fCJsaW5jb2xuIj09ZCkmJiIiIT1jKXt2YXIgZT0oImVuIj09Yj8iaHR0cHM6Ly93d3cuZm9yZC5jYS9maW5hbmNlL2FwcGx5LzE\/U291cmNlT2ZEYXRhPUNBRENGJmRlYWxlcklkPSI6Imh0dHBzOi8vZnIuZm9yZC5jYS9maW5hbmNlL2FwcGx5LzE\/U291cmNlT2ZEYXRhPUNBRENGJmRlYWxlcklkPSIpKwpjO2I9KCJlbiI9PWI\/Imh0dHBzOi8vd3d3LmxpbmNvbG5jYW5hZGEuY29tL2ZpbmFuY2UvYXBwbHkvMT9Tb3VyY2VPZkRhdGE9Q0FEQ0wmZGVhbGVySWQ9IjoiaHR0cHM6Ly9mci5saW5jb2xuY2FuYWRhLmNvbS9maW5hbmNlL2FwcGx5LzE\/U291cmNlT2ZEYXRhPUNBRENMJmRlYWxlcklkPSIpK2M7YS5vZmYoImNsaWNrIik7YS5hdHRyKCJocmVmIiwiZm9yZCI9PWQ\/ZTpiKTthLmF0dHIoInRhcmdldCIsIl9ibGFuayIpfX19KX0pOwokKHdpbmRvdykub24oImxvYWQiLGZ1bmN0aW9uKCl7dHJ5e2lmKGdldFBhcmFtZXRlckJ5TmFtZSgicHJvbW8iKSl7dmFyIGE9MDxhY3RpdmF0ZWRQb3B1cERpdklELmxlbmd0aD9hY3RpdmF0ZWRQb3B1cERpdklEOiExO2lmKGEmJjA8YS5sZW5ndGgpe3ZhciBiPSQoIiMiK2EpLnBvcHVwaXplKHtwcmlvcml0eToxMDAsZW5kUG9wdXBRdWV1ZTohMH0pO3BvcHVwU3VwZXJ2aXNvci5yZWdpc3RlcihiKX19Im9iamVjdCI9PXR5cGVvZiBwb3B1cFN1cGVydmlzb3ImJnNldFRpbWVvdXQocG9wdXBTdXBlcnZpc29yLnNob3csNTAwKX1jYXRjaChjKXtjb25zb2xlLmxvZyhjKX19KTsKJChmdW5jdGlvbigpeyQoIi5uYXYgYSIpLm9uKCJjbGljayIsZnVuY3Rpb24oYSl7InVuZGVmaW5lZCIhPXR5cGVvZiBhY3RpdmVVc2VyUHJvZmlsZU1uZyYmInVuZGVmaW5lZCIhPXR5cGVvZiBhY3RpdmVVc2VyUHJvZmlsZU1uZy5sb2dQYWdlVmlld0V2ZW50JiYoKGE9JCh0aGlzKS5hdHRyKCJocmVmIikpJiYhUmVnRXhwKCJqYXZhc2NyaXB0OiIsImdpIikudGVzdChhKSYmYWN0aXZlVXNlclByb2ZpbGVNbmcubG9nUGFnZVZpZXdFdmVudChhLCJNRU5VX2NsaWNrZWRfVVJMIiksKGE9Ii8iPT1hPyJIb21lIjokKHRoaXMpLnRleHQoKSkmJmFjdGl2ZVVzZXJQcm9maWxlTW5nLmxvZ1BhZ2VWaWV3RXZlbnQoYSwiTUVOVV9jbGlja2VkX0lORk8iKSl9KX0pOwp2YXIgRDJDVXRpbHM9e0xhbmc6e2lzRU46ZnVuY3Rpb24oKXtyZXR1cm4hKCJmdW5jdGlvbiI9PT10eXBlb2YgJCYmJCgiQk9EWSIpLmhhc0NsYXNzKCJGUkVOQ0giKSl9LGdldFNob3J0TGFuZzpmdW5jdGlvbihhKXtyZXR1cm4gRDJDVXRpbHMuTGFuZy5pc0VOKCk\/YT8iRU4iOiJlbiI6YT8iRlIiOiJmciJ9fSxGb3JtYXQ6e3RvTnVtYmVyOmZ1bmN0aW9uKGEpe2E9YS50b1N0cmluZygpLnNwbGl0KCIuIik7Zm9yKHZhciBiPS8oXGQrKShcZHszfSkvO2IudGVzdChhWzBdKTspYVswXT1hWzBdLnJlcGxhY2UoYiwiJDEsJDIiKTtyZXR1cm4gYVswXX0sdG9QcmljZTpmdW5jdGlvbihhLGIpe3JldHVybiBiPyhiPUQyQ1V0aWxzLkxhbmcuaXNFTigpPyIiOiIgJCIsYCR7RDJDVXRpbHMuTGFuZy5pc0VOKCk\/IiQiOiIifSR7RDJDVXRpbHMuRm9ybWF0LnRvTnVtYmVyKGEpfSR7Yn1gKTpgPHNwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSI+JHtEMkNVdGlscy5Gb3JtYXQudG9OdW1iZXIoYSl9PC9zcGFuPmB9fSwKTnVtYmVyOntyb3VuZERvd246ZnVuY3Rpb24oYSl7dmFyIGI9Mj09PWFyZ3VtZW50cy5sZW5ndGg\/cGFyc2VJbnQoYXJndW1lbnRzWzFdKToxO3JldHVybiBNYXRoLmZsb29yKGEvYikqYn0scm91bmRVcDpmdW5jdGlvbihhKXt2YXIgYj0yPT09YXJndW1lbnRzLmxlbmd0aD9wYXJzZUludChhcmd1bWVudHNbMV0pOjE7cmV0dXJuIE1hdGguY2VpbChhL2IpKmJ9fSxBcnJheXM6e2ZpbmQ6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEubGVuZ3RoO2lmKDA8ZClmb3IodmFyIGU9MDtlPGQ7ZSsrKWlmKGFbZV1bYl09PWMpcmV0dXJuIGFbZV07cmV0dXJuLTF9fSxTdHJpbmc6e2NhcGl0YWxpemVGaXJzdExldHRlcjpmdW5jdGlvbihhKXtyZXR1cm4gU3RyaW5nKGEpLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpK1N0cmluZyhhKS5zbGljZSgxKX19LE1vYmlsZTp7aXNNb2JpbGU6ZnVuY3Rpb24oKXtyZXR1cm4gMDwkKCIjaXNNb2JpbGUiKS5sZW5ndGh9fX07CmZ1bmN0aW9uIHNldHVwRmluYW5jaW5nTGluayhhLGIpezQ4NT09KCQoIiNzaXRlSUQiKS52YWwoKXx8JCgiI3RvcHNpdGVpZCIpLnZhbCgpKSYmYi5jbGVhcmFuY2UmJjA8YS5sZW5ndGgmJihiPSQoIiNNYWluTWVudV9mNDgyYmFhYi1hYWM0LWVkYTYtNmI1Mi0zID4gYSIpLDA9PWIubGVuZ3RoJiYoYj0kKCIuQ0xFQVJBTkNFIikucGFyZW50KCkuZmluZCgiLnN1Ym1lbnVJdGVtOmZpcnN0LWNoaWxkIikpLDA8Yi5sZW5ndGgmJihiPWIuYXR0cigiaHJlZiIpLCIiIT09YiYmYS5hdHRyKCJocmVmIixiKSkpfXZhciBvcGVuV2luZG93cz1bXSx3aW5kb3dPcGVuT0c9d2luZG93Lm9wZW47CndpbmRvdy5vcGVuPWZ1bmN0aW9uKCl7dmFyIGE9d2luZG93T3Blbk9HLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxiPXt3aW5kb3c6YSxhcmdzOmFyZ3VtZW50c307b3BlbldpbmRvd3MucHVzaChiKTsidW5kZWZpbmVkIiE9PXR5cGVvZiBqUXVlcnkmJmpRdWVyeShkb2N1bWVudCkudHJpZ2dlcigid2luZG93Lm9wZW4iLGIpO3JldHVybiBhfTsKJChmdW5jdGlvbigpeyQoZG9jdW1lbnQpLm9uKCJ3aW5kb3cub3BlbiIsZnVuY3Rpb24oYSxiKXthPWIuYXJncztmb3IodmFyIGM9ITEsZD0wO2Q8YS5sZW5ndGg7ZCsrKWlmKC0xPGFbZF0uaW5kZXhPZigiY2FyZmF4Iil8fGFbZF0uaW5kZXhPZigiY2FycHJvb2YiKSl7Yz0hMDticmVha31pZihjKXthPXdpbmRvdy5zY3JlZW4uYXZhaWxIZWlnaHR8fHdpbmRvdy5pbm5lckhlaWdodHx8ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodHx8ZG9jdW1lbnQuYm9keS5jbGllbnRIZWlnaHQ7dHJ5e2Iud2luZG93LnJlc2l6ZVRvKGIud2luZG93Lm91dGVyV2lkdGgsTWF0aC5yb3VuZCguOTUqYSkpfWNhdGNoKGUpe319fSl9KTsKJChmdW5jdGlvbigpe3ZhciBhPSQoIi51cF9tZW51IiksYj0kKCIucHJvbW90aW9uU2lkZVZCdXR0b24iKSxjPSQoJyNzbGlkZWl0ID4gbGFiZWxbZm9yPSJvcGVuLWl0ZW0iXTpub3QoLnRleHQtdXMtYnRuKScpO2lmKGEubGVuZ3RoJiZiLmxlbmd0aCl7dmFyIGQ9ITEsZT1mdW5jdGlvbigpe3ZhciBrPSQod2luZG93KS5zY3JvbGxUb3AoKSxoPSQod2luZG93KS5oZWlnaHQoKTtrPWEub2Zmc2V0KCkudG9wK2Eub3V0ZXJIZWlnaHQoKSsxMDAtaztoPU1hdGgubWF4KGgvMixrKTtiLnBhcmVudCgpLmhhc0NsYXNzKCJzcGVjaWFsU2NoZWR1bGVDb250ZW50Iil8fCJzcGVjaWFsU2NoZWR1bGVDb250ZW50Ij09Yi5wYXJlbnQoKS5hdHRyKCJpZCIpfHxiLmNzcyh7cG9zaXRpb246ImZpeGVkIix0b3A6aCsicHgiLHRyYW5zZm9ybToidHJhbnNsYXRlWSgtNTAlKSIsdHJhbnNpdGlvbjoibm9uZSJ9KTtjLmxlbmd0aCYmKGg9YlswXS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5ib3R0b20sCmMuY3NzKHtwb3NpdGlvbjoiZml4ZWQiLHRvcDpoKzUrInB4In0pKTtkPSExfTskKHdpbmRvdykub24oInNjcm9sbCByZXNpemUiLGZ1bmN0aW9uKCl7ZHx8KHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZSksZD0hMCl9KTtzZXRUaW1lb3V0KGUsMTAwKX19KTtmdW5jdGlvbiByZXBsYWNlVXNlZFZlaGljbGVNb2RlbERpc3BsYXkoYSl7aWYoInN0cmluZyI9PT10eXBlb2YgYXx8YSBpbnN0YW5jZW9mIFN0cmluZykiZnVuY3Rpb24iPT09dHlwZW9mICQmJiQoIkJPRFkiKS5oYXNDbGFzcygiRlJFTkNIIil8fC0xIT09YS5pbmRleE9mKCJIeWJyaWRlIikmJihhPWEucmVwbGFjZSgiSHlicmlkZSIsIkh5YnJpZCIpKTtyZXR1cm4gYX0KJChmdW5jdGlvbigpe2lmKCQoIi5wYXlwYWxfYnV0dG9uX2h0bWwiKS5sZW5ndGgpe3ZhciBhPSQoIkJPRFkiKS5oYXNDbGFzcygiRlJFTkNIIik\/ImZyIjoiZW4iLGI9JCgiQk9EWSIpLmhhc0NsYXNzKCJGUkVOQ0giKT8iUsOpc2VydmV6LWxlIGF2ZWMgUGF5UGFsICEiOiJSZXNlcnZlIGl0ICB3aXRoIFBheVBhbCAhIjskKCIucGF5cGFsX2J1dHRvbl9odG1sIikuZmluZCgnaW5wdXRbdHlwZT0iaW1hZ2UiXVtuYW1lPSJzdWJtaXQiXScpLmF0dHIoInNyYyIsIi9pbWFnZXMvY29udGludWVfd2l0aF9wYXlwYWxfIithKyIucG5nIik7JCgiLnBheXBhbF9idXR0b25faHRtbCIpLmZpbmQoImZvcm0iKS5hdHRyKCJ0YXJnZXQiLCJwYXlwYWxJZnJhbWUiKTskKCIucGF5cGFsX2J1dHRvbl9odG1sIikuZmluZCgidGFibGUgdHI6Zmlyc3QgdGQiKS5jb250ZW50cygpLmZpbHRlcihmdW5jdGlvbigpe3JldHVybiAzPT10aGlzLm5vZGVUeXBlfSkuZmlyc3QoKS5yZXBsYWNlV2l0aChiKTskKCIucGF5cGFsX2J1dHRvbl9odG1sIGZvcm0iKS5maW5kKCdbbmFtZT0iaXRlbV9uYW1lIl0nKS5yZW1vdmUoKTsKJCgiLnBheXBhbF9idXR0b25faHRtbCBmb3JtIikuZmluZCgnW25hbWU9Iml0ZW1fbnVtYmVyIl0nKS5yZW1vdmUoKTthPSc8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJpdGVtX25hbWUiIHZhbHVlPSInKyQoIiNwaG9uZW1ha2UiKS52YWwoKSsiICIrJCgiI3Bob25lbW9kZWwiKS52YWwoKSsiICIrJCgiI3Bob25lbXllYXIiKS52YWwoKSsiIFN0b2NrKCMiKyQoIiNwaG9uZXN0b2NrbnVtYmVyIikudmFsKCkrJykiPic7JCgiLnBheXBhbF9idXR0b25faHRtbCBmb3JtIikuYXBwZW5kKGEpOyQoIi5wYXlwYWxfYnV0dG9uX2h0bWwiKS5maW5kKCdpbnB1dFt0eXBlPSJpbWFnZSJdW25hbWU9InN1Ym1pdCJdJykub24oImNsaWNrIixmdW5jdGlvbigpe2dhVHJhY2soImMuX3RyYWNrRXZlbnQiLCJDbGlxdWVzIFBheVBhbCIsIk9jY2FzaW9uIiwkKCIjaGlkZGVuRGVhbGVyTmFtZSIpLnZhbCgpKyItIiskKCIjcGhvbmVtYWtlIikudmFsKCkrIi0iKyQoIiNwaG9uZW1vZGVsIikudmFsKCkrCiItIiskKCIjcGhvbmVteWVhciIpLnZhbCgpKyItIiskKCIjcGhvbmVzdG9ja251bWJlciIpLnZhbCgpLDEpfSk7JCgiI3BheXBhbFBvcHVwIikuZGV0YWNoKCkuYXBwZW5kVG8oImJvZHkiKTskKCcucGF5cGFsX2J1dHRvbl9odG1sIGlucHV0W25hbWU9InN1Ym1pdCJdJykub24oImNsaWNrIixmdW5jdGlvbigpeyQoIiNwYXlwYWxQb3B1cCIpLnBvcHVwaXplKCkuc2V0VHJpZ2dlcigiY2xpY2siKS5vcGVuKCl9KTskKCIucGF5cGFsX2J1dHRvbl9odG1sIikuc2hvdygpfSQoIiN0ZXN0RHJpdmVUeXBlIikubGVuZ3RoJiYoIlZpcnR1YWwiPT0kKCIjdGVzdERyaXZlVHlwZSIpLnZhbCgpfHwiVmlydHVlbCI9PSQoIiN0ZXN0RHJpdmVUeXBlIikudmFsKCkpJiYkKCIucHJlZmVyZWRWaXJ0dWFsVG9vbCIpLnNob3coKX0pOwpmdW5jdGlvbiBwcmljZVJlcXVlc3RDb21tZW50VGV4dCgpe3ZhciBhPSQoIiNhY3RpdmVzaXRlbGFuZ3VhZ2UiKSxiPSQoIiNpc21vYmlsZSIpLGM9JCgiI3F1ZXN0aW9uc0NvbW1lbnRzIik7YT0iRU5HTElTSCI9PWEudmFsKCk\/IkhpLCBJJ2QgbGlrZSB0byBnZXQgeW91ciBiZXN0IHByaWNlIG9uIGEgMCAgIjoiQm9uam91ciwgaidhaW1lcmFpcyBhdm9pciB2b3RyZSBtZWlsbGV1cnMgcHJpeCBwb3VyIHVuICAgMCI7MDxiLmxlbmd0aCYmIjEiPT1iLnZhbCgpJiYwPGMubGVuZ3RoJiZjLnZhbCgpPT1hJiZjLnZhbCgiIil9JChmdW5jdGlvbigpe3ByaWNlUmVxdWVzdENvbW1lbnRUZXh0KCl9KTsKJChmdW5jdGlvbigpe3ZhciBhPSQoIiNmb290ZXIgLmljb24tdGV4dCBzcGFuW2l0ZW1wcm9wPSd0ZWxlcGhvbmUnXSBhLnBob25lLWxpbmsiKSxiPSQoIiNmb290ZXIgLmljb24tdGV4dCAuZmEtcGhvbmUiKTswPGEubGVuZ3RoJiYwPGIubGVuZ3RoJiYiIj09YS5odG1sKCkudHJpbSgpJiZiLmhpZGUoKX0pOwpmdW5jdGlvbiBwYWdlVmlld0NvdW50R29vZ2xlRXZlbnQoKXt2YXIgYT13aW5kb3cubG9jYXRpb24ucGF0aG5hbWUsYj0wLGM9c2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgiZDJjX1ZEUE1WIik7bnVsbCE9Yz8oYz1KU09OLnBhcnNlKGMpLGI9bnVsbCE9Y1thXT9jW2FdOjAsY1thXT1wYXJzZUludChiKSsxKTooYz17fSxjW2FdPTEpO2E9IjEiPT0kKCIjbmV3U2VjdGlvbk92ZXJyaWRlIikudmFsKCk\/Ik5FVyI6JCgiI2RlZmF1bHREZXBhcnRtZW50IikudmFsKCk7MD09Yj9nYVRyYWNrKCJjLl90cmFja0V2ZW50IiwiVkRQIG11bHRpcGxlIHZpZXdzIixhLCIxeCIsMSk6MT09Yj9nYVRyYWNrKCJjLl90cmFja0V2ZW50IiwiVkRQIG11bHRpcGxlIHZpZXdzIixhLCIyeCIsMSk6Z2FUcmFjaygiYy5fdHJhY2tFdmVudCIsIlZEUCBtdWx0aXBsZSB2aWV3cyIsYSwiM3grIiwxKTtzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKCJkMmNfVkRQTVYiLEpTT04uc3RyaW5naWZ5KGMpKX0KJC5mbi5pc0luVmlld3BvcnQ9ZnVuY3Rpb24oKXt2YXIgYT0kKHRoaXMpLm9mZnNldCgpLnRvcCxiPWErJCh0aGlzKS5vdXRlckhlaWdodCgpLGM9JCh3aW5kb3cpLnNjcm9sbFRvcCgpLGQ9YyskKHdpbmRvdykuaGVpZ2h0KCk7cmV0dXJuIGI+YyYmYTxkfTskLmZuLmlzQWJvdmVWaWV3cG9ydD1mdW5jdGlvbihhKXthPWF8fDA7dmFyIGI9JCh0aGlzKS5vZmZzZXQoKS50b3ArJCh0aGlzKS5vdXRlckhlaWdodCgpLGM9JCh3aW5kb3cpLnNjcm9sbFRvcCgpO3JldHVybiBiPmMrYX07ZnVuY3Rpb24gc2V0UG9wdXBPcGVuT25DbGljaygpeyQoIltkYXRhLXBvcHVwaWRdIikuZWFjaChmdW5jdGlvbigpe3ZhciBhPSQodGhpcykuYXR0cigiZGF0YS1wb3B1cGlkIik7JCh0aGlzKS5vbigiY2xpY2sgdGFwIixmdW5jdGlvbihiKXtiLnByZXZlbnREZWZhdWx0KCk7JCgiIyIrYSkucG9wdXBpemUoKS5zZXRUcmlnZ2VyKCJjbGljayIpLm9wZW4oKX0pfSl9CmZ1bmN0aW9uIGFkZERlYWxlckluc2lkZVNjcmlwdCgpe2lmKCQoIi5kZWFsZXItaW5zaWRlLWN0YS1hY3Rpb24tYm94IikubGVuZ3RoKXt2YXIgYT0kKCIuZGVhbGVyLWluc2lkZS1jdGEtYWN0aW9uLWJveCIpLmF0dHIoImRhdGEtaWREZWFsZXIiKSxiPSQoIi5kZWFsZXItaW5zaWRlLWN0YS1hY3Rpb24tYm94IikuYXR0cigiZGF0YS1sYW5nIiksYz0kKCIuZGVhbGVyLWluc2lkZS1jdGEtYWN0aW9uLWJveCIpLmF0dHIoImRhdGEtYnV0dG9uLXR5cGUiKSxkPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpO2Quc2V0QXR0cmlidXRlKCJ0eXBlIiwidGV4dC9qYXZhc2NyaXB0Iik7ZC5zZXRBdHRyaWJ1dGUoInNyYyIsImh0dHBzOi8vZGVhbGVyaW5zaWRlYXBwLmNvbS93aWRnZXRzL2RlYWxlcl9pbnNpZGVfY2FsbC5qcz9kZWFsZXJJZD0iK2ErIiZsYW5nPSIrYisiJmJ1dHRvblR5cGU9IitjKTtkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaGVhZCIpWzBdLmFwcGVuZENoaWxkKGQpfX0KJChmdW5jdGlvbigpe3NldFBvcHVwT3Blbk9uQ2xpY2soKTthZGREZWFsZXJJbnNpZGVTY3JpcHQoKX0pO2Z1bmN0aW9uIG1vdG9pbnNpZ2h0U2hvcEdvb2dsZU9wdGltaXplKCl7JCgiI2pzLW1vdG9pbnNpZ2h0U2hvcFBvcHVwQ29udGFpbmVyLWlucHV0IikubGVuZ3RoJiYkKCIuanMtbW90b2luc2lnaHRTaG9wUG9wdXBDb250YWluZXIiKS5sZW5ndGgmJiQoIi5qcy1tb3RvaW5zaWdodFNob3BQb3B1cENvbnRhaW5lciIpLmF0dHIoImRhdGEtbW90b2luc2lnaHRzaG9waWZyYW1ldXJsIiwkKCIjanMtbW90b2luc2lnaHRTaG9wUG9wdXBDb250YWluZXItaW5wdXQiKS52YWwoKSl9ZnVuY3Rpb24gaHRtbFRvTm9kZShhKXt2YXIgYj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtiLmlubmVySFRNTD1hLnRyaW0oKTtyZXR1cm4gYi5maXJzdEVsZW1lbnRDaGlsZH0KZnVuY3Rpb24gaHRtbFRvRG9jdW1lbnRGcmFnKGEpe3JldHVybiBkb2N1bWVudC5jcmVhdGVSYW5nZSgpLmNyZWF0ZUNvbnRleHR1YWxGcmFnbWVudChhKX1mdW5jdGlvbiBodG1sVG9FbGVtZW50cyhhKXt2YXIgYj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZW1wbGF0ZSIpO2IuaW5uZXJIVE1MPWE7cmV0dXJuIGIuY29udGVudC5jaGlsZE5vZGVzfQpjb25zdCB2aWV3UG9ydE9ic2VydmVyPWZ1bmN0aW9uKGEpe2xldCBiPSExLGM9ITEsZD01MDtjb25zdCBlPWs9PntrPWtbMF07bGV0IGg9LjAxPj1rLmludGVyc2VjdGlvblJhdGlvJiZrLmJvdW5kaW5nQ2xpZW50UmVjdC50b3A8ZDtjLmNsYXNzTGlzdC50b2dnbGUoInRvcC1maXhlZCIsaCk7ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiLnNtc0N0YUJ0biIpLmZvckVhY2gobj0+bi5oaWRkZW49IWgpO251bGwhPT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidG9hc3QtY29udGFpbmVyIikmJihkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidG9hc3QtY29udGFpbmVyIikuaGlkZGVuPSFoKX07cmV0dXJue29ic2VydmU6KCk9PntpZihhKXtkKz1hLm9mZnNldEhlaWdodCsxNjt2YXIgaz1hLmNsb3Nlc3QoIi5vYnNlcnZlZC13cmFwcGVyIil8fCExO2lmKCFrKXtsZXQgaD1odG1sVG9Ob2RlKCc8ZGl2IGNsYXNzPSJmaXhlZC13cmFwcGVyIj48L2Rpdj4nKTtrPWh0bWxUb05vZGUoJzxkaXYgY2xhc3M9Im9ic2VydmVkLXdyYXBwZXIiPjwvZGl2PicpOwphLmFmdGVyKGspO2suYXBwZW5kQ2hpbGQoaCk7aC5hcHBlbmRDaGlsZChhKTtrLnN0eWxlLmhlaWdodD1gJHtoLm9mZnNldEhlaWdodH1weGB9Yj1rO2M9Yi5xdWVyeVNlbGVjdG9yKCIuZml4ZWQtd3JhcHBlciIpOyhuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoZSx7cm9vdE1hcmdpbjpgLSR7ZH1weCAwcHggMHB4IDBweGAsdGhyZXNob2xkOlswLC4wMV19KSkub2JzZXJ2ZShiKX19fX07CmZ1bmN0aW9uIGQyY0Zvb3RlckRlbGV0ZUFsbENvb2tpZXMoYSl7bG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oImQyZmF2RGF0YSIpO2xvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCJmb3JtRmlsbERhdGEiKTtsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgiZmluYW5jZV9tdWx0aXN0ZXBfZm9ybV91c2VySWQiKTtsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgiZmluYW5jZV9tdWx0aXN0ZXAubGluZWFyX3N0ZXAiKTt2YXIgYj13aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsYz1iO2I9Yi5yZXBsYWNlKCJ3d3cuIiwiIik7dmFyIGQ9Yj1iLnJlcGxhY2UoIm0uIiwiIik7Yi5pbmNsdWRlcygiZDJjbWVkaWEuY2EiKSYmKGI9ImQyY21lZGlhLmNhIik7Zm9yKHZhciBlPWRvY3VtZW50LmNvb2tpZS5zcGxpdCgiOyIpLGs9MDtrPGUubGVuZ3RoO2srKyl7dmFyIGg9ZVtrXSxuPWguaW5kZXhPZigiPSIpO2g9LTE8bj9oLnN1YnN0cigwLG4pOmg7ImQyY19jb29raWVfY29uc2VudCIhPWgudHJpbSgpJiYiT3B0YW5vbkFsZXJ0Qm94Q2xvc2VkIiE9CmgudHJpbSgpJiYiT3B0YW5vbkNvbnNlbnQiIT1oLnRyaW0oKSYmKGg9aC50cmltKCksZG9jdW1lbnQuY29va2llPWgrIj07UGF0aD0vO2RvbWFpbj0uIitiKyI7ZXhwaXJlcz1UaHUsIDAxIEphbiAxOTcwIDAwOjAwOjAwIEdNVCIsZG9jdW1lbnQuY29va2llPWgrIj07UGF0aD0vO2RvbWFpbj0iK2IrIjtleHBpcmVzPVRodSwgMDEgSmFuIDE5NzAgMDA6MDA6MDAgR01UIixkb2N1bWVudC5jb29raWU9aCsiPTtQYXRoPS87ZG9tYWluPSIrYysiO2V4cGlyZXM9VGh1LCAwMSBKYW4gMTk3MCAwMDowMDowMCBHTVQiLGRvY3VtZW50LmNvb2tpZT1oKyI9O1BhdGg9Lztkb21haW49LiIrZCsiO2V4cGlyZXM9VGh1LCAwMSBKYW4gMTk3MCAwMDowMDowMCBHTVQiLGRvY3VtZW50LmNvb2tpZT1oKyI9O1BhdGg9Lztkb21haW49IitkKyI7ZXhwaXJlcz1UaHUsIDAxIEphbiAxOTcwIDAwOjAwOjAwIEdNVCIsZG9jdW1lbnQuY29va2llPWgrIj07UGF0aD0vO2RvbWFpbj0uZDJjbWVkaWEuY2E7ZXhwaXJlcz1UaHUsIDAxIEphbiAxOTcwIDAwOjAwOjAwIEdNVCIsCmRvY3VtZW50LmNvb2tpZT1oKyI9O1BhdGg9Lztkb21haW49ZDJjbWVkaWEuY2E7ZXhwaXJlcz1UaHUsIDAxIEphbiAxOTcwIDAwOjAwOjAwIEdNVCIsZG9jdW1lbnQuY29va2llPWgrIj07ZXhwaXJlcz1UaHUsIDAxIEphbiAxOTcwIDAwOjAwOjAwIEdNVCIsZG9jdW1lbnQuY29va2llPWgrIj07UGF0aD0vO2V4cGlyZXM9VGh1LCAwMSBKYW4gMTk3MCAwMDowMDowMCBHTVQiLGNvbnNvbGUubG9nKCJEMkRDIixoLGIpLGs9PXBhcnNlRmxvYXQoZS5sZW5ndGgpLTEmJigidW5kZWZpbmVkIj09PXR5cGVvZiBhJiYkKCIjZDJjRm9vdGVyQ29va2llRGVsZXRlIikucG9wdXBpemUoKS5zZXRUcmlnZ2VyKCJjbGljayIpLm9wZW4oKSxzZXRUaW1lb3V0KGQyY0Zvb3RlckRlbGV0ZUFsbENvb2tpZXNSZWZyZXNoLDJFMykpKX1yZXR1cm4hMH0KZnVuY3Rpb24gZDJjRm9vdGVyRGVsZXRlQWxsQ29va2llc1JlZnJlc2goKXt3aW5kb3cudG9wPT09d2luZG93LnNlbGYmJmxvY2F0aW9uLnJlbG9hZCgpfQpmdW5jdGlvbiBHb29nbGVDYXB0Y2hhKCl7dGhpcy5yZXNwb25zZVRva2VuPSIiO3RoaXMud2lkZ2V0SWQ9LTE7dGhpcy5wYXNzZWQ9ITE7dmFyIGE9JC5EZWZlcnJlZCgpLGI9dGhpcztfX2luaXQ9ZnVuY3Rpb24oKXt0cnl7aWYoIXdpbmRvdy5ncmVjYXB0Y2hhKXt2YXIgYz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKSxkPWRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJzY3JpcHQiKVswXTtjLnNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9yZWNhcHRjaGEvYXBpLmpzIjtkLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGMsZCl9fWNhdGNoKGUpe2NvbnNvbGUubG9nKGUpfX07X19sb2FkQ2FwdGNoYT1mdW5jdGlvbigpe2lmKCEoLTE8Yi53aWRnZXRJZCkpdHJ5e3ZhciBjPSJnb29nbGVXaWRnZXRfIitNYXRoLmZsb29yKDE2Nzc3MjE1Kk1hdGgucmFuZG9tKCkpLnRvU3RyaW5nKDE2KTskKCc8ZGl2IGlkPSInK2MrJyIgc3R5bGU9ImRpc3BsYXk6bm9uZSI+PC9kaXY+JykuYXBwZW5kVG8oImJvZHkiKTsKYi53aWRnZXRJZD1ncmVjYXB0Y2hhLnJlbmRlcihjLHtzaXRla2V5OiI2TGZwZEQwVUFBQUFBUGQ0UzdJa2U1RWR4MDF5M1lYZDVJLXUzZHhQIixjYWxsYmFjazpfX3N1Ym1pdENhcHRjaGEsImVycm9yLWNhbGxiYWNrIjpiLmZhaWwsc2l6ZToiaW52aXNpYmxlIn0pfWNhdGNoKGQpe2NvbnNvbGUubG9nKGQpfX07X19zdWJtaXRDYXB0Y2hhPWZ1bmN0aW9uKGMpe2IucmVzcG9uc2VUb2tlbj1jO2IucGFzc2VkPSEwO2EucmVzb2x2ZSgpfTtiLmdldFJlc3BvbnNlPWZ1bmN0aW9uKCl7dmFyIGM9JC5EZWZlcnJlZCgpO3dpbmRvdy5ncmVjYXB0Y2hhPyhfX2xvYWRDYXB0Y2hhKCksZ3JlY2FwdGNoYS5leGVjdXRlKGIud2lkZ2V0SWQpLGEuZG9uZShmdW5jdGlvbigpe2MucmVzb2x2ZShiLnJlc3BvbnNlVG9rZW4pfSkpOmMucmVzb2x2ZSgpO3JldHVybiBjfTtiLmZhaWw9ZnVuY3Rpb24oKXtjb25zb2xlLmxvZygiR1JDIEZhaWwiLGFyZ3VtZW50cyl9O19faW5pdCgpfQpmdW5jdGlvbiBnZXRMdXh1cnlUYXhBbW91bnQoYSl7dmFyIGI9MDsxRTU8YSYmKGI9LjEqYSxhPS4yKihhLTFFNSksYj1iPGE\/YjphKTtyZXR1cm4gTWF0aC5yb3VuZChiKX0KdmFyIHdvcmRzPVtdLHBhcnQsd29yZEluZGV4PTAsb2Zmc2V0PTAsbGVuPTEsZm9yd2FyZHM9ITAsc2tpcF9jb3VudD0wLHNraXBfZGVsYXk9MTUsc3BlZWQ9NzAsd29yZGZsaWNrPWZ1bmN0aW9uKGEsYil7d29yZHM9YTtsZW49d29yZHMubGVuZ3RoO3NldEludGVydmFsKGZ1bmN0aW9uKCl7Zm9yd2FyZHM\/b2Zmc2V0Pj13b3Jkc1t3b3JkSW5kZXhdLmxlbmd0aCYmKCsrc2tpcF9jb3VudCxza2lwX2NvdW50PT1za2lwX2RlbGF5JiYoZm9yd2FyZHM9ITEsc2tpcF9jb3VudD0wKSk6MD09b2Zmc2V0JiYoZm9yd2FyZHM9ITAsd29yZEluZGV4Kyssb2Zmc2V0PTAsd29yZEluZGV4Pj1sZW4mJih3b3JkSW5kZXg9MCkpO3BhcnQ9d29yZHNbd29yZEluZGV4XS5zdWJzdHIoMCxvZmZzZXQpOzA9PXNraXBfY291bnQmJihmb3J3YXJkcz9vZmZzZXQrKzpvZmZzZXQtLSk7Yi50ZXh0KHBhcnQpfSxzcGVlZCl9OwpmdW5jdGlvbiBpc0luVmlld3BvcnQoYSxiKXtiPXZvaWQgMD09PWI\/e306YjthPWEuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7bGV0IGM9aXNOdW1lcmljKGIudG9wKT9iLnRvcDowO2I9aXNOdW1lcmljKGIubGVmdCk\/Yi5sZWZ0OjA7cmV0dXJuIE1hdGguZmxvb3IoYS50b3ApPj1jJiZNYXRoLmZsb29yKGEubGVmdCk+PWImJk1hdGguZmxvb3IoYS5ib3R0b20pPD0od2luZG93LmlubmVySGVpZ2h0fHxkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0KSYmTWF0aC5mbG9vcihhLnJpZ2h0KTw9KHdpbmRvdy5pbm5lcldpZHRofHxkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGgpfWZ1bmN0aW9uIGlzTnVtZXJpYyhhKXtyZXR1cm4vXi0\/XGQrJC9nLnRlc3QoYSl9CmRvY1JlYWR5QXJyLnB1c2goKCk9Pntkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdbcm9sZT0iYnV0dG9uIl0nKS5mb3JFYWNoKGE9PnthLmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLGI9Pntjb25zdCBjPXZvaWQgMCE9PWIua2V5P2Iua2V5OmIua2V5Q29kZTtpZigiRW50ZXIiPT09Y3x8MTM9PT1jKWIucHJldmVudERlZmF1bHQoKSxhLmNsaWNrKCl9KX0pfSk7CigoKT0+e2xldCBhPWRvY3VtZW50LmNvb2tpZSxiPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoRG9jdW1lbnQucHJvdG90eXBlLCJjb29raWUiKTtPYmplY3QuZGVmaW5lUHJvcGVydHkoRG9jdW1lbnQucHJvdG90eXBlLCJfY29va2llIixiKTtPYmplY3QuZGVmaW5lUHJvcGVydHkoRG9jdW1lbnQucHJvdG90eXBlLCJjb29raWUiLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCxnZXQoKXtyZXR1cm4gdGhpcy5fY29va2llfSxzZXQoYyl7dmFyIGQ9Yy50cmltKCkuc3BsaXQoIjsiKTtsZXQgZT17fTt2YXIgaz0wO2Zvcih2YXIgaCBvZiBkKWQ9aC50cmltKCkuc3BsaXQoIj0iKSwwPT1rPyhlLm5hbWU9ZFswXSxlLnZhbHVlPWRbMV18fDApOiIiIT1kWzBdJiYoZVtkWzBdXT1kWzFdfHwwKSxrKys7az1lLm5hbWU7aD1lLmV4cGlyZXN8fDA7ZD1lLnBhdGh8fCIvIjtsZXQgbj1lLmRvbWFpbnx8IiI7ZS52YWx1ZSYmIiIhPWUudmFsdWUmJm51bGwhPWUudmFsdWUmJgp3aW5kb3cuQ29va2llTG9nZ2VyLmxvZyhrLGUudmFsdWUsaCxkLG4pO2M9dGhpcy5fY29va2llPWM7aWYoYyE9PWEpdHJ5e3RoaXMuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoImNvb2tpZWNoYW5nZSIse2RldGFpbDp7b2xkVmFsdWU6YSxuZXdWYWx1ZTpjfX0pKX1maW5hbGx5e2E9Y319fSl9KSgpO2RvY1JlYWR5QXJyLnB1c2goKCk9Pnt2YXIgYT1udWxsO2lmKHdpbmRvdy5sb2NhdGlvbi5oYXNoKXt0cnl7YT1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKGRlY29kZVVSSSh3aW5kb3cubG9jYXRpb24uaGFzaCkpfWNhdGNoKGIpe3JldHVybn1hJiYoYT1hLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCt3aW5kb3cuc2Nyb2xsWSx3aW5kb3cuc2Nyb2xsVG8oe3RvcDphLTIwLGJlaGF2aW9yOiJzbW9vdGgifSkpfX0pOwooZnVuY3Rpb24oKXtmdW5jdGlvbiBhKGMpe2RlYnVnKHtjb2xsZWN0OmN9KTtjPWMubmV3VVJMP25ldyBVUkwoYy5uZXdVUkwpOndpbmRvdy5sb2NhdGlvbjsiIiE9PWMuaGFzaCYmYy5oYXNoLnN1YnN0cmluZygxKS5zcGxpdCgiJiIpLm1hcChmdW5jdGlvbihkLGUsayl7dHJ5e3ZhciBbaCxuXT1kLnNwbGl0KCI9Iik7c3dpdGNoKGgpe2Nhc2UgInV0bV9lIjp2YXIgeD1hdG9iKG4pLnNwbGl0KCI6OiIpLHY9bnVsbCE9Z2V0Q29va2llKCJ1dG1fY2FtcGFpZ24iKSYmInVuZGVmaW5lZCIhPXR5cGVvZiBnZXRDb29raWUoInV0bV9jYW1wYWlnbiIpP2dldENvb2tpZSgidXRtX2NhbXBhaWduIik6eFsyXTt2JiZzZXRDb29raWUoInV0bV9jYW1wYWlnbiIsdiwxODApO3ZhciBmPW51bGwhPWdldENvb2tpZSgidXRtX3NvdXJjZSIpJiYidW5kZWZpbmVkIiE9dHlwZW9mIGdldENvb2tpZSgidXRtX3NvdXJjZSIpP2dldENvb2tpZSgidXRtX3NvdXJjZSIpOnhbM107ZiYmc2V0Q29va2llKCJ1dG1fc291cmNlIiwKZiwxODApO2JyZWFrO2Nhc2UgInV0bV9leCI6eD1hdG9iKG4pO3ZhciBnPW5ldyBVUkwoImh0dHBzOi8vIit3aW5kb3cubG9jYXRpb24uaG9zdCt4KTswPGcuc2VhcmNoUGFyYW1zLnNpemUmJmcuc2VhcmNoUGFyYW1zLmZvckVhY2goYil9cmV0dXJue2tleTpoLHZhbHVlOm59fWNhdGNoKG0pe2RlYnVnKG0pfX0pfWZ1bmN0aW9uIGIoYyxkKXt0cnl7c3dpdGNoKGQpe2Nhc2UgIkRpc3BsYXlTb3VyY2UiOmNhc2UgImdjbGlkIjpkZWJ1Zyh7a2V5OmQsY29va2llOmdldENvb2tpZShkKSx2YWx1ZTpjfSksbnVsbCE9Z2V0Q29va2llKGQpJiYiIiE9Z2V0Q29va2llKGQpfHxzZXRDb29raWUoZCxjLDE4MCl9fWNhdGNoKGUpe2RlYnVnKGUpfX13aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsYSwhMSk7d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImhhc2hjaGFuZ2UiLGEsITEpfSkoKTswPj0kKCIjc2hhcmVPbkZhY2Vib29rIikubGVuZ3RoJiYkKCJmb290ZXIiKS5wcmVwZW5kKCc8ZGl2IGlkPSJzaGFyZU9uRmFjZWJvb2siIGRhdGEtZXhwbGFpbj0iaG9uZGEvYWN1cmEgY2VydCB1c2VzIGd0bSwgaXQgaGFzIGEgYmluZCB0aGF0IHRocm93cyBhbiBlcnJvciBpZiB0aGlzIGlkIGRvZXMgbm90IGV4aXN0LiBjb2RlIGlzIGZyb20gZ3RtIHNpZGUuIj48L2Rpdj4nKTsKKGZ1bmN0aW9uKCl7ZnVuY3Rpb24gYSgpe2lmKCJ1bmRlZmluZWQiIT09dHlwZW9mICQuY29va2llKXtsZXQgYzt2YXIgYj1udWxsIT0oYz0kLmNvb2tpZSgiVGVydGlhcnlTb3VyY2UiKSk\/YzoiIjsiIiE9PWImJigkKCcqW2hyZWYqPSIkRkRUZXJ0aWFyeVNvdXJjZSJdJykuZWFjaChmdW5jdGlvbigpeyQodGhpcykuYXR0cigiaHJlZiIsJCh0aGlzKS5hdHRyKCJocmVmIikucmVwbGFjZSgiJEZEVGVydGlhcnlTb3VyY2UiLGIpKX0pLCQoJypbb25jbGljayo9IiRGRFRlcnRpYXJ5U291cmNlIl0nKS5lYWNoKGZ1bmN0aW9uKCl7JCh0aGlzKS5hdHRyKCJvbmNsaWNrIiwkKHRoaXMpLmF0dHIoIm9uY2xpY2siKS5yZXBsYWNlKCIkRkRUZXJ0aWFyeVNvdXJjZSIsYikpfSksJCgnKlt2YWx1ZSo9IiRGRFRlcnRpYXJ5U291cmNlIl0nKS5lYWNoKGZ1bmN0aW9uKCl7JCh0aGlzKS5hdHRyKCJ2YWx1ZSIsJCh0aGlzKS5hdHRyKCJ2YWx1ZSIpLnJlcGxhY2UoIiRGRFRlcnRpYXJ5U291cmNlIiwKYikpfSkpfX1hKCk7c2V0VGltZW91dChhLDFFMyk7c2V0VGltZW91dChhLDVFMyk7MDw9bmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRleE9mKCJNYWMiKSYmKCQoIi5sYW5ndWFnZUJhciAuZ1JhdGluZy1pY29uI2dSYXRpbmcgLnJhdGluZyIpLmFkZENsYXNzKCJtYXJnaW4tYm90dG9tLS00cHgiKSwkKCIubGFuZ3VhZ2VCYXIgLnNlcnZpY2UtaGVhZGVyLWZvcm0gYS5idG4gPiBzcGFuIikuYWRkQ2xhc3MoIm1hcmdpbi1ib3R0b20tLTRweCIpLCQoIi5sYW5ndWFnZUJhciAuZGVza3RvcF9sYW5nX2J1dHRvbl90ZXh0IikuYWRkQ2xhc3MoIm1hcmdpbi1ib3R0b20tLTRweCIpLCQoIi5sYW5ndWFnZUJhciAuZGVza3RvcF9sYW5nX2J1dHRvbl90ZXh0IikuY3NzKCJ0b3AiLCI1MiUiKSl9KSgpOwpmdW5jdGlvbiBhZGROb1RyYW5zbGF0ZUVtYWlsRGVmKCl7ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnW2lkKj0iZW1haWxCb2R5RGVmIl0sIFtpZCo9ImVtYWlsU3ViamVjdERlZiJdLCBbY2xhc3MqPSJlbWFpbFN1YmplY3QiXSwgW2NsYXNzKj0iZW1haWxCb2R5Il0sIFtjbGFzcyo9ImxlYWRFbWFpbCJdLCBbY2xhc3MqPSJlbWFpbC1kZWZpbml0aW9uIl0nKS5mb3JFYWNoKGE9PnthLnNldEF0dHJpYnV0ZSgidHJhbnNsYXRlIiwibm8iKX0pfWFkZE5vVHJhbnNsYXRlRW1haWxEZWYoKTtmdW5jdGlvbiB2d3MoKXtkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoIi0tdndzIixgJHt3aW5kb3cuaW5uZXJXaWR0aC8xMDAtKHdpbmRvdy5pbm5lcldpZHRoLWRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aCkvMTAwLzJ9cHhgKX12d3MoKTtsZXQgcm9fdndzPW5ldyBSZXNpemVPYnNlcnZlcigoKT0+e3Z3cygpfSk7cm9fdndzLm9ic2VydmUoZG9jdW1lbnQuYm9keSk7Ci8qKiAvbS9qcy9sYXp5c2l6ZXMubWluLmpzICoqLwovKiEgbGF6eXNpemVzIC0gdjQuMS41ICovCi8qISBtb2RpZmllZDogb2xpdmllckBkMmNtZWRpYS5jYSB0byBzdXBwb3J0IGRhdGEtaW1nc3JjIGJlY2F1c2Ugb2Ygb25lVHJ1c3QgYnJlYWtzIGxhenlsb2FkIG9uIGRhdGEtc3JjICovCiFmdW5jdGlvbihhLGIpe3ZhciBjPWIoYSxhLmRvY3VtZW50KTthLmxhenlTaXplcz1jLCJvYmplY3QiPT10eXBlb2YgbW9kdWxlJiZtb2R1bGUuZXhwb3J0cyYmKG1vZHVsZS5leHBvcnRzPWMpfSh3aW5kb3csZnVuY3Rpb24oYSxiKXsidXNlIHN0cmljdCI7aWYoYi5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKXt2YXIgYyxkLGU9Yi5kb2N1bWVudEVsZW1lbnQsZj1hLkRhdGUsZz1hLkhUTUxQaWN0dXJlRWxlbWVudCxoPSJhZGRFdmVudExpc3RlbmVyIixpPSJnZXRBdHRyaWJ1dGUiLGo9YVtoXSxrPWEuc2V0VGltZW91dCxsPWEucmVxdWVzdEFuaW1hdGlvbkZyYW1lfHxrLG09YS5yZXF1ZXN0SWRsZUNhbGxiYWNrLG49L15waWN0dXJlJC9pLG89WyJsb2FkIiwiZXJyb3IiLCJsYXp5aW5jbHVkZWQiLCJfbGF6eWxvYWRlZCJdLHA9e30scT1BcnJheS5wcm90b3R5cGUuZm9yRWFjaCxyPWZ1bmN0aW9uKGEsYil7cmV0dXJuIHBbYl18fChwW2JdPW5ldyBSZWdFeHAoIihcXHN8XikiK2IrIihcXHN8JCkiKSkscFtiXS50ZXN0KGFbaV0oImNsYXNzIil8fCIiKSYmcFtiXX0scz1mdW5jdGlvbihhLGIpe3IoYSxiKXx8YS5zZXRBdHRyaWJ1dGUoImNsYXNzIiwoYVtpXSgiY2xhc3MiKXx8IiIpLnRyaW0oKSsiICIrYil9LHQ9ZnVuY3Rpb24oYSxiKXt2YXIgYzsoYz1yKGEsYikpJiZhLnNldEF0dHJpYnV0ZSgiY2xhc3MiLChhW2ldKCJjbGFzcyIpfHwiIikucmVwbGFjZShjLCIgIikpfSx1PWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1jP2g6InJlbW92ZUV2ZW50TGlzdGVuZXIiO2MmJnUoYSxiKSxvLmZvckVhY2goZnVuY3Rpb24oYyl7YVtkXShjLGIpfSl9LHY9ZnVuY3Rpb24oYSxkLGUsZixnKXt2YXIgaD1iLmNyZWF0ZUV2ZW50KCJFdmVudCIpO3JldHVybiBlfHwoZT17fSksZS5pbnN0YW5jZT1jLGguaW5pdEV2ZW50KGQsIWYsIWcpLGguZGV0YWlsPWUsYS5kaXNwYXRjaEV2ZW50KGgpLGh9LHc9ZnVuY3Rpb24oYixjKXt2YXIgZTshZyYmKGU9YS5waWN0dXJlZmlsbHx8ZC5wZik\/KGMmJmMuc3JjJiYhYltpXSgic3Jjc2V0IikmJmIuc2V0QXR0cmlidXRlKCJzcmNzZXQiLGMuc3JjKSxlKHtyZWV2YWx1YXRlOiEwLGVsZW1lbnRzOltiXX0pKTpjJiZjLnNyYyYmKGIuc3JjPWMuc3JjKX0seD1mdW5jdGlvbihhLGIpe3JldHVybihnZXRDb21wdXRlZFN0eWxlKGEsbnVsbCl8fHt9KVtiXX0seT1mdW5jdGlvbihhLGIsYyl7Zm9yKGM9Y3x8YS5vZmZzZXRXaWR0aDtjPGQubWluU2l6ZSYmYiYmIWEuX2xhenlzaXplc1dpZHRoOyljPWIub2Zmc2V0V2lkdGgsYj1iLnBhcmVudE5vZGU7cmV0dXJuIGN9LHo9ZnVuY3Rpb24oKXt2YXIgYSxjLGQ9W10sZT1bXSxmPWQsZz1mdW5jdGlvbigpe3ZhciBiPWY7Zm9yKGY9ZC5sZW5ndGg\/ZTpkLGE9ITAsYz0hMTtiLmxlbmd0aDspYi5zaGlmdCgpKCk7YT0hMX0saD1mdW5jdGlvbihkLGUpe2EmJiFlP2QuYXBwbHkodGhpcyxhcmd1bWVudHMpOihmLnB1c2goZCksY3x8KGM9ITAsKGIuaGlkZGVuP2s6bCkoZykpKX07cmV0dXJuIGguX2xzRmx1c2g9ZyxofSgpLEE9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYj9mdW5jdGlvbigpe3ooYSl9OmZ1bmN0aW9uKCl7dmFyIGI9dGhpcyxjPWFyZ3VtZW50czt6KGZ1bmN0aW9uKCl7YS5hcHBseShiLGMpfSl9fSxCPWZ1bmN0aW9uKGEpe3ZhciBiLGM9MCxlPWQudGhyb3R0bGVEZWxheSxnPWQucmljVGltZW91dCxoPWZ1bmN0aW9uKCl7Yj0hMSxjPWYubm93KCksYSgpfSxpPW0mJmc+NDk\/ZnVuY3Rpb24oKXttKGgse3RpbWVvdXQ6Z30pLGchPT1kLnJpY1RpbWVvdXQmJihnPWQucmljVGltZW91dCl9OkEoZnVuY3Rpb24oKXtrKGgpfSwhMCk7cmV0dXJuIGZ1bmN0aW9uKGEpe3ZhciBkOyhhPSEwPT09YSkmJihnPTMzKSxifHwoYj0hMCxkPWUtKGYubm93KCktYyksZDwwJiYoZD0wKSxhfHxkPDk\/aSgpOmsoaSxkKSl9fSxDPWZ1bmN0aW9uKGEpe3ZhciBiLGMsZD05OSxlPWZ1bmN0aW9uKCl7Yj1udWxsLGEoKX0sZz1mdW5jdGlvbigpe3ZhciBhPWYubm93KCktYzthPGQ\/ayhnLGQtYSk6KG18fGUpKGUpfTtyZXR1cm4gZnVuY3Rpb24oKXtjPWYubm93KCksYnx8KGI9ayhnLGQpKX19OyFmdW5jdGlvbigpe3ZhciBiLGM9e2xhenlDbGFzczoibGF6eWxvYWQiLGxvYWRlZENsYXNzOiJsYXp5bG9hZGVkIixsb2FkaW5nQ2xhc3M6Imxhenlsb2FkaW5nIixwcmVsb2FkQ2xhc3M6ImxhenlwcmVsb2FkIixlcnJvckNsYXNzOiJsYXp5ZXJyb3IiLGF1dG9zaXplc0NsYXNzOiJsYXp5YXV0b3NpemVzIixzcmNBdHRyOiJkYXRhLWltZ3NyYyIsc3Jjc2V0QXR0cjoiZGF0YS1zcmNzZXQiLHNpemVzQXR0cjoiZGF0YS1zaXplcyIsbWluU2l6ZTo0MCxjdXN0b21NZWRpYTp7fSxpbml0OiEwLGV4cEZhY3RvcjoxLjUsaEZhYzouOCxsb2FkTW9kZToyLGxvYWRIaWRkZW46ITAscmljVGltZW91dDowLHRocm90dGxlRGVsYXk6MTI1fTtkPWEubGF6eVNpemVzQ29uZmlnfHxhLmxhenlzaXplc0NvbmZpZ3x8e307Zm9yKGIgaW4gYyliIGluIGR8fChkW2JdPWNbYl0pO2EubGF6eVNpemVzQ29uZmlnPWQsayhmdW5jdGlvbigpe2QuaW5pdCYmRigpfSl9KCk7dmFyIEQ9ZnVuY3Rpb24oKXt2YXIgZyxsLG0sbyxwLHksRCxGLEcsSCxJLEosSyxMLE09L15pbWckL2ksTj0vXmlmcmFtZSQvaSxPPSJvbnNjcm9sbCJpbiBhJiYhLyhnbGV8aW5nKWJvdC8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSxQPTAsUT0wLFI9MCxTPS0xLFQ9ZnVuY3Rpb24oYSl7Ui0tLGEmJmEudGFyZ2V0JiZ1KGEudGFyZ2V0LFQpLCghYXx8UjwwfHwhYS50YXJnZXQpJiYoUj0wKX0sVT1mdW5jdGlvbihhLGMpe3ZhciBkLGY9YSxnPSJoaWRkZW4iPT14KGIuYm9keSwidmlzaWJpbGl0eSIpfHwiaGlkZGVuIiE9eChhLnBhcmVudE5vZGUsInZpc2liaWxpdHkiKSYmImhpZGRlbiIhPXgoYSwidmlzaWJpbGl0eSIpO2ZvcihGLT1jLEkrPWMsRy09YyxIKz1jO2cmJihmPWYub2Zmc2V0UGFyZW50KSYmZiE9Yi5ib2R5JiZmIT1lOykoZz0oeChmLCJvcGFjaXR5Iil8fDEpPjApJiYidmlzaWJsZSIhPXgoZiwib3ZlcmZsb3ciKSYmKGQ9Zi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxnPUg+ZC5sZWZ0JiZHPGQucmlnaHQmJkk+ZC50b3AtMSYmRjxkLmJvdHRvbSsxKTtyZXR1cm4gZ30sVj1mdW5jdGlvbigpe3ZhciBhLGYsaCxqLGssbSxuLHAscSxyPWMuZWxlbWVudHM7aWYoKG89ZC5sb2FkTW9kZSkmJlI8OCYmKGE9ci5sZW5ndGgpKXtmPTAsUysrLG51bGw9PUsmJigiZXhwYW5kImluIGR8fChkLmV4cGFuZD1lLmNsaWVudEhlaWdodD41MDAmJmUuY2xpZW50V2lkdGg+NTAwPzUwMDozNzApLEo9ZC5leHBhbmQsSz1KKmQuZXhwRmFjdG9yKSxRPEsmJlI8MSYmUz4yJiZvPjImJiFiLmhpZGRlbj8oUT1LLFM9MCk6UT1vPjEmJlM+MSYmUjw2P0o6UDtmb3IoO2Y8YTtmKyspaWYocltmXSYmIXJbZl0uX2xhenlSYWNlKWlmKE8paWYoKHA9cltmXVtpXSgiZGF0YS1leHBhbmQiKSkmJihtPTEqcCl8fChtPVEpLHEhPT1tJiYoeT1pbm5lcldpZHRoK20qTCxEPWlubmVySGVpZ2h0K20sbj0tMSptLHE9bSksaD1yW2ZdLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLChJPWguYm90dG9tKT49biYmKEY9aC50b3ApPD1EJiYoSD1oLnJpZ2h0KT49bipMJiYoRz1oLmxlZnQpPD15JiYoSXx8SHx8R3x8RikmJihkLmxvYWRIaWRkZW58fCJoaWRkZW4iIT14KHJbZl0sInZpc2liaWxpdHkiKSkmJihsJiZSPDMmJiFwJiYobzwzfHxTPDQpfHxVKHJbZl0sbSkpKXtpZihiYShyW2ZdKSxrPSEwLFI+OSlicmVha31lbHNlIWsmJmwmJiFqJiZSPDQmJlM8NCYmbz4yJiYoZ1swXXx8ZC5wcmVsb2FkQWZ0ZXJMb2FkKSYmKGdbMF18fCFwJiYoSXx8SHx8R3x8Rnx8ImF1dG8iIT1yW2ZdW2ldKGQuc2l6ZXNBdHRyKSkpJiYoaj1nWzBdfHxyW2ZdKTtlbHNlIGJhKHJbZl0pO2omJiFrJiZiYShqKX19LFc9QihWKSxYPWZ1bmN0aW9uKGEpe3MoYS50YXJnZXQsZC5sb2FkZWRDbGFzcyksdChhLnRhcmdldCxkLmxvYWRpbmdDbGFzcyksdShhLnRhcmdldCxaKSx2KGEudGFyZ2V0LCJsYXp5bG9hZGVkIil9LFk9QShYKSxaPWZ1bmN0aW9uKGEpe1koe3RhcmdldDphLnRhcmdldH0pfSwkPWZ1bmN0aW9uKGEsYil7dHJ5e2EuY29udGVudFdpbmRvdy5sb2NhdGlvbi5yZXBsYWNlKGIpfWNhdGNoKGMpe2Euc3JjPWJ9fSxfPWZ1bmN0aW9uKGEpe3ZhciBiLGM9YVtpXShkLnNyY3NldEF0dHIpOyhiPWQuY3VzdG9tTWVkaWFbYVtpXSgiZGF0YS1tZWRpYSIpfHxhW2ldKCJtZWRpYSIpXSkmJmEuc2V0QXR0cmlidXRlKCJtZWRpYSIsYiksYyYmYS5zZXRBdHRyaWJ1dGUoInNyY3NldCIsYyl9LGFhPUEoZnVuY3Rpb24oYSxiLGMsZSxmKXt2YXIgZyxoLGosbCxvLHA7KG89dihhLCJsYXp5YmVmb3JldW52ZWlsIixiKSkuZGVmYXVsdFByZXZlbnRlZHx8KGUmJihjP3MoYSxkLmF1dG9zaXplc0NsYXNzKTphLnNldEF0dHJpYnV0ZSgic2l6ZXMiLGUpKSxoPWFbaV0oZC5zcmNzZXRBdHRyKSxnPWFbaV0oZC5zcmNBdHRyKSxmJiYoaj1hLnBhcmVudE5vZGUsbD1qJiZuLnRlc3Qoai5ub2RlTmFtZXx8IiIpKSxwPWIuZmlyZXNMb2FkfHwic3JjImluIGEmJihofHxnfHxsKSxvPXt0YXJnZXQ6YX0scCYmKHUoYSxULCEwKSxjbGVhclRpbWVvdXQobSksbT1rKFQsMjUwMCkscyhhLGQubG9hZGluZ0NsYXNzKSx1KGEsWiwhMCkpLGwmJnEuY2FsbChqLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJzb3VyY2UiKSxfKSxoP2Euc2V0QXR0cmlidXRlKCJzcmNzZXQiLGgpOmcmJiFsJiYoTi50ZXN0KGEubm9kZU5hbWUpPyQoYSxnKTphLnNyYz1nKSxmJiYoaHx8bCkmJncoYSx7c3JjOmd9KSksYS5fbGF6eVJhY2UmJmRlbGV0ZSBhLl9sYXp5UmFjZSx0KGEsZC5sYXp5Q2xhc3MpLHooZnVuY3Rpb24oKXsoIXB8fGEuY29tcGxldGUmJmEubmF0dXJhbFdpZHRoPjEpJiYocD9UKG8pOlItLSxYKG8pKX0sITApfSksYmE9ZnVuY3Rpb24oYSl7dmFyIGIsYz1NLnRlc3QoYS5ub2RlTmFtZSksZT1jJiYoYVtpXShkLnNpemVzQXR0cil8fGFbaV0oInNpemVzIikpLGY9ImF1dG8iPT1lOyghZiYmbHx8IWN8fCFhW2ldKCJzcmMiKSYmIWEuc3Jjc2V0fHxhLmNvbXBsZXRlfHxyKGEsZC5lcnJvckNsYXNzKXx8IXIoYSxkLmxhenlDbGFzcykpJiYoYj12KGEsImxhenl1bnZlaWxyZWFkIikuZGV0YWlsLGYmJkUudXBkYXRlRWxlbShhLCEwLGEub2Zmc2V0V2lkdGgpLGEuX2xhenlSYWNlPSEwLFIrKyxhYShhLGIsZixlLGMpKX0sY2E9ZnVuY3Rpb24oKXtpZighbCl7aWYoZi5ub3coKS1wPDk5OSlyZXR1cm4gdm9pZCBrKGNhLDk5OSk7dmFyIGE9QyhmdW5jdGlvbigpe2QubG9hZE1vZGU9MyxXKCl9KTtsPSEwLGQubG9hZE1vZGU9MyxXKCksaigic2Nyb2xsIixmdW5jdGlvbigpezM9PWQubG9hZE1vZGUmJihkLmxvYWRNb2RlPTIpLGEoKX0sITApfX07cmV0dXJue186ZnVuY3Rpb24oKXtwPWYubm93KCksYy5lbGVtZW50cz1iLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoZC5sYXp5Q2xhc3MpLGc9Yi5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKGQubGF6eUNsYXNzKyIgIitkLnByZWxvYWRDbGFzcyksTD1kLmhGYWMsaigic2Nyb2xsIixXLCEwKSxqKCJyZXNpemUiLFcsITApLGEuTXV0YXRpb25PYnNlcnZlcj9uZXcgTXV0YXRpb25PYnNlcnZlcihXKS5vYnNlcnZlKGUse2NoaWxkTGlzdDohMCxzdWJ0cmVlOiEwLGF0dHJpYnV0ZXM6ITB9KTooZVtoXSgiRE9NTm9kZUluc2VydGVkIixXLCEwKSxlW2hdKCJET01BdHRyTW9kaWZpZWQiLFcsITApLHNldEludGVydmFsKFcsOTk5KSksaigiaGFzaGNoYW5nZSIsVywhMCksWyJmb2N1cyIsIm1vdXNlb3ZlciIsImNsaWNrIiwibG9hZCIsInRyYW5zaXRpb25lbmQiLCJhbmltYXRpb25lbmQiLCJ3ZWJraXRBbmltYXRpb25FbmQiXS5mb3JFYWNoKGZ1bmN0aW9uKGEpe2JbaF0oYSxXLCEwKX0pLC9kJHxeYy8udGVzdChiLnJlYWR5U3RhdGUpP2NhKCk6KGooImxvYWQiLGNhKSxiW2hdKCJET01Db250ZW50TG9hZGVkIixXKSxrKGNhLDJlNCkpLGMuZWxlbWVudHMubGVuZ3RoPyhWKCksei5fbHNGbHVzaCgpKTpXKCl9LGNoZWNrRWxlbXM6Vyx1bnZlaWw6YmF9fSgpLEU9ZnVuY3Rpb24oKXt2YXIgYSxjPUEoZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGUsZixnO2lmKGEuX2xhenlzaXplc1dpZHRoPWQsZCs9InB4IixhLnNldEF0dHJpYnV0ZSgic2l6ZXMiLGQpLG4udGVzdChiLm5vZGVOYW1lfHwiIikpZm9yKGU9Yi5nZXRFbGVtZW50c0J5VGFnTmFtZSgic291cmNlIiksZj0wLGc9ZS5sZW5ndGg7ZjxnO2YrKyllW2ZdLnNldEF0dHJpYnV0ZSgic2l6ZXMiLGQpO2MuZGV0YWlsLmRhdGFBdHRyfHx3KGEsYy5kZXRhaWwpfSksZT1mdW5jdGlvbihhLGIsZCl7dmFyIGUsZj1hLnBhcmVudE5vZGU7ZiYmKGQ9eShhLGYsZCksZT12KGEsImxhenliZWZvcmVzaXplcyIse3dpZHRoOmQsZGF0YUF0dHI6ISFifSksZS5kZWZhdWx0UHJldmVudGVkfHwoZD1lLmRldGFpbC53aWR0aCkmJmQhPT1hLl9sYXp5c2l6ZXNXaWR0aCYmYyhhLGYsZSxkKSl9LGY9ZnVuY3Rpb24oKXt2YXIgYixjPWEubGVuZ3RoO2lmKGMpZm9yKGI9MDtiPGM7YisrKWUoYVtiXSl9LGc9QyhmKTtyZXR1cm57XzpmdW5jdGlvbigpe2E9Yi5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKGQuYXV0b3NpemVzQ2xhc3MpLGooInJlc2l6ZSIsZyl9LGNoZWNrRWxlbXM6Zyx1cGRhdGVFbGVtOmV9fSgpLEY9ZnVuY3Rpb24oKXtGLml8fChGLmk9ITAsRS5fKCksRC5fKCkpfTtyZXR1cm4gYz17Y2ZnOmQsYXV0b1NpemVyOkUsbG9hZGVyOkQsaW5pdDpGLHVQOncsYUM6cyxyQzp0LGhDOnIsZmlyZTp2LGdXOnksckFGOnp9fX0pOwovKkVPRiovOwovKiogL20vanMvanF1ZXJ5LXVpLWZhY3RvcnkvMS4xMy4yL2pxdWVyeS11aS5taW4uanMgKiovCi8qISBqUXVlcnkgVUkgLSB2MS4xMy4yIC0gMjAyNC0wMy0xMgoqIGh0dHA6Ly9qcXVlcnl1aS5jb20KKiBJbmNsdWRlczogd2lkZ2V0LmpzLCBqcXVlcnktcGF0Y2guanMsIGtleWNvZGUuanMsIHVuaXF1ZS1pZC5qcywgd2lkZ2V0cy9hY2NvcmRpb24uanMsIHdpZGdldHMvbW91c2UuanMsIHdpZGdldHMvc2xpZGVyLmpzLCBlZmZlY3QuanMKKiBDb3B5cmlnaHQgalF1ZXJ5IEZvdW5kYXRpb24gYW5kIG90aGVyIGNvbnRyaWJ1dG9yczsgTGljZW5zZWQgTUlUICovCgohZnVuY3Rpb24oZSl7InVzZSBzdHJpY3QiOyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ\/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\/Yyh3aW5kb3cubG9jYWxTdG9yYWdlLCEwKToic2Vzc2lvbiI9PT1iP2Mod2luZG93LnNlc3Npb25TdG9yYWdlLCExKTpjKHdpbmRvdy5sb2NhbFN0b3JhZ2UsITApfHxjKHdpbmRvdy5zZXNzaW9uU3RvcmFnZSwhMSl9LHJlbW92ZTpmdW5jdGlvbihhLGIpe2I9dm9pZCAwPT09Yj9udWxsOmI7ImxvY2FsIiE9PWImJm51bGwhPT1ifHx3aW5kb3cubG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oYSk7InNlc3Npb24iIT09YiYmbnVsbCE9PWJ8fHdpbmRvdy5zZXNzaW9uU3RvcmFnZS5yZW1vdmVJdGVtKGEpfX07CmNyZWF0ZURhdGFTdG9yZT1hPT57YT1hfHx7fTtpbml0PWM9Pk9iamVjdC5hc3NpZ24oe30sYyk7Y29uc3QgYj1pbml0KGEpO3JldHVybntzZXQ6ZnVuY3Rpb24oYyxkKXtiW2NdPU9iamVjdC5hc3NpZ24oe30sYltjXSxkKTtyZXR1cm4gYltjXX0sZ2V0OmZ1bmN0aW9uKGMsZCl7ZD12b2lkIDA9PT1kP251bGw6ZDtjPWMuc3BsaXQoIi4iKTtsZXQgZT1iO2Zvcihjb25zdCBmIG9mIGMpe2lmKHZvaWQgMD09PWVbZl0pcmV0dXJuIGQ7ZT1lW2ZdfXJldHVybiB2b2lkIDAhPT1lP2U6ZH0sZmV0Y2g6ZnVuY3Rpb24oYyl7cmV0dXJuICRqc2NvbXAuYXN5bmNFeGVjdXRlUHJvbWlzZUdlbmVyYXRvckZ1bmN0aW9uKGZ1bmN0aW9uKigpe3RyeXtjb25zdCBkPXlpZWxkIGZldGNoKGBodHRwczovLyR7Yi5kZWFsZXJJbmZvLmRvbWFpbn0vYWpheENvbnRyb2xsZXIvJHtjfWApO2lmKCFkLm9rKXRocm93IEVycm9yKCJOZXR3b3JrIHJlc3BvbnNlIHdhcyBub3Qgb2siKTtjb25zdCBlPXlpZWxkIGQuanNvbigpOwpiW2NdPWU7cmV0dXJuIGJbY119Y2F0Y2goZCl7dGhyb3cgRXJyb3IoYEZhaWxlZCB0byBmZXRjaCBmcm9tIHNlcnZlcjogJHtkLm1lc3NhZ2V9YCk7fX0pfSxkZWxldGU6ZnVuY3Rpb24oYyl7aWYoIWJbY10pdGhyb3cgRXJyb3IoIklEIG5vdCBmb3VuZCIpO2RlbGV0ZSBiW2NdO3JldHVybiEwfSxnZXRBbGw6ZnVuY3Rpb24oKXtyZXR1cm4gT2JqZWN0LmFzc2lnbih7fSxiKX19fTsKLyoqIC9tL2pzL2VtYWlsSGFuZGxlci5qcyAqKi8KdmFyIF9fX2QyY19lbWFpbEhhbmRsZXJqc19jX29uPSIyMDI2LTA0LTAyIDEyOjMwOjAzIjsndXNlIHN0cmljdCc7dmFyICRqc2NvbXA9JGpzY29tcHx8e307JGpzY29tcC5zY29wZT17fTskanNjb21wLkFTU1VNRV9FUzU9ITE7JGpzY29tcC5BU1NVTUVfTk9fTkFUSVZFX01BUD0hMTskanNjb21wLkFTU1VNRV9OT19OQVRJVkVfU0VUPSExOyRqc2NvbXAuU0lNUExFX0ZST1VORF9QT0xZRklMTD0hMTskanNjb21wLklTT0xBVEVfUE9MWUZJTExTPSExOyRqc2NvbXAuRk9SQ0VfUE9MWUZJTExfUFJPTUlTRT0hMTskanNjb21wLkZPUkNFX1BPTFlGSUxMX1BST01JU0VfV0hFTl9OT19VTkhBTkRMRURfUkVKRUNUSU9OPSExOyRqc2NvbXAuZGVmaW5lUHJvcGVydHk9JGpzY29tcC5BU1NVTUVfRVM1fHwiZnVuY3Rpb24iPT10eXBlb2YgT2JqZWN0LmRlZmluZVByb3BlcnRpZXM\/T2JqZWN0LmRlZmluZVByb3BlcnR5OmZ1bmN0aW9uKGUsZyxhKXtpZihlPT1BcnJheS5wcm90b3R5cGV8fGU9PU9iamVjdC5wcm90b3R5cGUpcmV0dXJuIGU7ZVtnXT1hLnZhbHVlO3JldHVybiBlfTsKJGpzY29tcC5nZXRHbG9iYWw9ZnVuY3Rpb24oZSl7ZT1bIm9iamVjdCI9PXR5cGVvZiBnbG9iYWxUaGlzJiZnbG9iYWxUaGlzLGUsIm9iamVjdCI9PXR5cGVvZiB3aW5kb3cmJndpbmRvdywib2JqZWN0Ij09dHlwZW9mIHNlbGYmJnNlbGYsIm9iamVjdCI9PXR5cGVvZiBnbG9iYWwmJmdsb2JhbF07Zm9yKHZhciBnPTA7ZzxlLmxlbmd0aDsrK2cpe3ZhciBhPWVbZ107aWYoYSYmYS5NYXRoPT1NYXRoKXJldHVybiBhfXRocm93IEVycm9yKCJDYW5ub3QgZmluZCBnbG9iYWwgb2JqZWN0Iik7fTskanNjb21wLmdsb2JhbD0kanNjb21wLmdldEdsb2JhbCh0aGlzKTskanNjb21wLklTX1NZTUJPTF9OQVRJVkU9ImZ1bmN0aW9uIj09PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT09dHlwZW9mIFN5bWJvbCgieCIpOyRqc2NvbXAuVFJVU1RfRVM2X1BPTFlGSUxMUz0hJGpzY29tcC5JU09MQVRFX1BPTFlGSUxMU3x8JGpzY29tcC5JU19TWU1CT0xfTkFUSVZFOyRqc2NvbXAucG9seWZpbGxzPXt9OwokanNjb21wLnByb3BlcnR5VG9Qb2x5ZmlsbFN5bWJvbD17fTskanNjb21wLlBPTFlGSUxMX1BSRUZJWD0iJGpzY3AkIjt2YXIgJGpzY29tcCRsb29rdXBQb2x5ZmlsbGVkVmFsdWU9ZnVuY3Rpb24oZSxnKXt2YXIgYT0kanNjb21wLnByb3BlcnR5VG9Qb2x5ZmlsbFN5bWJvbFtnXTtpZihudWxsPT1hKXJldHVybiBlW2ddO2E9ZVthXTtyZXR1cm4gdm9pZCAwIT09YT9hOmVbZ119OyRqc2NvbXAucG9seWZpbGw9ZnVuY3Rpb24oZSxnLGEsYil7ZyYmKCRqc2NvbXAuSVNPTEFURV9QT0xZRklMTFM\/JGpzY29tcC5wb2x5ZmlsbElzb2xhdGVkKGUsZyxhLGIpOiRqc2NvbXAucG9seWZpbGxVbmlzb2xhdGVkKGUsZyxhLGIpKX07CiRqc2NvbXAucG9seWZpbGxVbmlzb2xhdGVkPWZ1bmN0aW9uKGUsZyxhLGIpe2E9JGpzY29tcC5nbG9iYWw7ZT1lLnNwbGl0KCIuIik7Zm9yKGI9MDtiPGUubGVuZ3RoLTE7YisrKXt2YXIgZD1lW2JdO2lmKCEoZCBpbiBhKSlyZXR1cm47YT1hW2RdfWU9ZVtlLmxlbmd0aC0xXTtiPWFbZV07Zz1nKGIpO2chPWImJm51bGwhPWcmJiRqc2NvbXAuZGVmaW5lUHJvcGVydHkoYSxlLHtjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6Z30pfTsKJGpzY29tcC5wb2x5ZmlsbElzb2xhdGVkPWZ1bmN0aW9uKGUsZyxhLGIpe3ZhciBkPWUuc3BsaXQoIi4iKTtlPTE9PT1kLmxlbmd0aDtiPWRbMF07Yj0hZSYmYiBpbiAkanNjb21wLnBvbHlmaWxscz8kanNjb21wLnBvbHlmaWxsczokanNjb21wLmdsb2JhbDtmb3IodmFyIGM9MDtjPGQubGVuZ3RoLTE7YysrKXt2YXIgZj1kW2NdO2lmKCEoZiBpbiBiKSlyZXR1cm47Yj1iW2ZdfWQ9ZFtkLmxlbmd0aC0xXTthPSRqc2NvbXAuSVNfU1lNQk9MX05BVElWRSYmImVzNiI9PT1hP2JbZF06bnVsbDtnPWcoYSk7bnVsbCE9ZyYmKGU\/JGpzY29tcC5kZWZpbmVQcm9wZXJ0eSgkanNjb21wLnBvbHlmaWxscyxkLHtjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6Z30pOmchPT1hJiYodm9pZCAwPT09JGpzY29tcC5wcm9wZXJ0eVRvUG9seWZpbGxTeW1ib2xbZF0mJihhPTFFOSpNYXRoLnJhbmRvbSgpPj4+MCwkanNjb21wLnByb3BlcnR5VG9Qb2x5ZmlsbFN5bWJvbFtkXT0kanNjb21wLklTX1NZTUJPTF9OQVRJVkU\/CiRqc2NvbXAuZ2xvYmFsLlN5bWJvbChkKTokanNjb21wLlBPTFlGSUxMX1BSRUZJWCthKyIkIitkKSwkanNjb21wLmRlZmluZVByb3BlcnR5KGIsJGpzY29tcC5wcm9wZXJ0eVRvUG9seWZpbGxTeW1ib2xbZF0se2NvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpnfSkpKX07JGpzY29tcC51bmRlcnNjb3JlUHJvdG9DYW5CZVNldD1mdW5jdGlvbigpe3ZhciBlPXthOiEwfSxnPXt9O3RyeXtyZXR1cm4gZy5fX3Byb3RvX189ZSxnLmF9Y2F0Y2goYSl7fXJldHVybiExfTsKJGpzY29tcC5zZXRQcm90b3R5cGVPZj0kanNjb21wLlRSVVNUX0VTNl9QT0xZRklMTFMmJiJmdW5jdGlvbiI9PXR5cGVvZiBPYmplY3Quc2V0UHJvdG90eXBlT2Y\/T2JqZWN0LnNldFByb3RvdHlwZU9mOiRqc2NvbXAudW5kZXJzY29yZVByb3RvQ2FuQmVTZXQoKT9mdW5jdGlvbihlLGcpe2UuX19wcm90b19fPWc7aWYoZS5fX3Byb3RvX18hPT1nKXRocm93IG5ldyBUeXBlRXJyb3IoZSsiIGlzIG5vdCBleHRlbnNpYmxlIik7cmV0dXJuIGV9Om51bGw7JGpzY29tcC5hcnJheUl0ZXJhdG9ySW1wbD1mdW5jdGlvbihlKXt2YXIgZz0wO3JldHVybiBmdW5jdGlvbigpe3JldHVybiBnPGUubGVuZ3RoP3tkb25lOiExLHZhbHVlOmVbZysrXX06e2RvbmU6ITB9fX07JGpzY29tcC5hcnJheUl0ZXJhdG9yPWZ1bmN0aW9uKGUpe3JldHVybntuZXh0OiRqc2NvbXAuYXJyYXlJdGVyYXRvckltcGwoZSl9fTsKJGpzY29tcC5tYWtlSXRlcmF0b3I9ZnVuY3Rpb24oZSl7dmFyIGc9InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJlN5bWJvbC5pdGVyYXRvciYmZVtTeW1ib2wuaXRlcmF0b3JdO3JldHVybiBnP2cuY2FsbChlKTokanNjb21wLmFycmF5SXRlcmF0b3IoZSl9OyRqc2NvbXAuZ2VuZXJhdG9yPXt9OyRqc2NvbXAuZ2VuZXJhdG9yLmVuc3VyZUl0ZXJhdG9yUmVzdWx0SXNPYmplY3RfPWZ1bmN0aW9uKGUpe2lmKCEoZSBpbnN0YW5jZW9mIE9iamVjdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiSXRlcmF0b3IgcmVzdWx0ICIrZSsiIGlzIG5vdCBhbiBvYmplY3QiKTt9OwokanNjb21wLmdlbmVyYXRvci5Db250ZXh0PWZ1bmN0aW9uKCl7dGhpcy5pc1J1bm5pbmdfPSExO3RoaXMueWllbGRBbGxJdGVyYXRvcl89bnVsbDt0aGlzLnlpZWxkUmVzdWx0PXZvaWQgMDt0aGlzLm5leHRBZGRyZXNzPTE7dGhpcy5maW5hbGx5QWRkcmVzc189dGhpcy5jYXRjaEFkZHJlc3NfPTA7dGhpcy5maW5hbGx5Q29udGV4dHNfPXRoaXMuYWJydXB0Q29tcGxldGlvbl89bnVsbH07JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUuc3RhcnRfPWZ1bmN0aW9uKCl7aWYodGhpcy5pc1J1bm5pbmdfKXRocm93IG5ldyBUeXBlRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IHJ1bm5pbmciKTt0aGlzLmlzUnVubmluZ189ITB9OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLnN0b3BfPWZ1bmN0aW9uKCl7dGhpcy5pc1J1bm5pbmdfPSExfTsKJGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUuanVtcFRvRXJyb3JIYW5kbGVyXz1mdW5jdGlvbigpe3RoaXMubmV4dEFkZHJlc3M9dGhpcy5jYXRjaEFkZHJlc3NffHx0aGlzLmZpbmFsbHlBZGRyZXNzX307JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUubmV4dF89ZnVuY3Rpb24oZSl7dGhpcy55aWVsZFJlc3VsdD1lfTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS50aHJvd189ZnVuY3Rpb24oZSl7dGhpcy5hYnJ1cHRDb21wbGV0aW9uXz17ZXhjZXB0aW9uOmUsaXNFeGNlcHRpb246ITB9O3RoaXMuanVtcFRvRXJyb3JIYW5kbGVyXygpfTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5yZXR1cm49ZnVuY3Rpb24oZSl7dGhpcy5hYnJ1cHRDb21wbGV0aW9uXz17cmV0dXJuOmV9O3RoaXMubmV4dEFkZHJlc3M9dGhpcy5maW5hbGx5QWRkcmVzc199OwokanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5qdW1wVGhyb3VnaEZpbmFsbHlCbG9ja3M9ZnVuY3Rpb24oZSl7dGhpcy5hYnJ1cHRDb21wbGV0aW9uXz17anVtcFRvOmV9O3RoaXMubmV4dEFkZHJlc3M9dGhpcy5maW5hbGx5QWRkcmVzc199OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLnlpZWxkPWZ1bmN0aW9uKGUsZyl7dGhpcy5uZXh0QWRkcmVzcz1nO3JldHVybnt2YWx1ZTplfX07JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUueWllbGRBbGw9ZnVuY3Rpb24oZSxnKXtlPSRqc2NvbXAubWFrZUl0ZXJhdG9yKGUpO3ZhciBhPWUubmV4dCgpOyRqc2NvbXAuZ2VuZXJhdG9yLmVuc3VyZUl0ZXJhdG9yUmVzdWx0SXNPYmplY3RfKGEpO2lmKGEuZG9uZSl0aGlzLnlpZWxkUmVzdWx0PWEudmFsdWUsdGhpcy5uZXh0QWRkcmVzcz1nO2Vsc2UgcmV0dXJuIHRoaXMueWllbGRBbGxJdGVyYXRvcl89ZSx0aGlzLnlpZWxkKGEudmFsdWUsZyl9OwokanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5qdW1wVG89ZnVuY3Rpb24oZSl7dGhpcy5uZXh0QWRkcmVzcz1lfTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5qdW1wVG9FbmQ9ZnVuY3Rpb24oKXt0aGlzLm5leHRBZGRyZXNzPTB9OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLnNldENhdGNoRmluYWxseUJsb2Nrcz1mdW5jdGlvbihlLGcpe3RoaXMuY2F0Y2hBZGRyZXNzXz1lO3ZvaWQgMCE9ZyYmKHRoaXMuZmluYWxseUFkZHJlc3NfPWcpfTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5zZXRGaW5hbGx5QmxvY2s9ZnVuY3Rpb24oZSl7dGhpcy5jYXRjaEFkZHJlc3NfPTA7dGhpcy5maW5hbGx5QWRkcmVzc189ZXx8MH07JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUubGVhdmVUcnlCbG9jaz1mdW5jdGlvbihlLGcpe3RoaXMubmV4dEFkZHJlc3M9ZTt0aGlzLmNhdGNoQWRkcmVzc189Z3x8MH07CiRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLmVudGVyQ2F0Y2hCbG9jaz1mdW5jdGlvbihlKXt0aGlzLmNhdGNoQWRkcmVzc189ZXx8MDtlPXRoaXMuYWJydXB0Q29tcGxldGlvbl8uZXhjZXB0aW9uO3RoaXMuYWJydXB0Q29tcGxldGlvbl89bnVsbDtyZXR1cm4gZX07JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUuZW50ZXJGaW5hbGx5QmxvY2s9ZnVuY3Rpb24oZSxnLGEpe2E\/dGhpcy5maW5hbGx5Q29udGV4dHNfW2FdPXRoaXMuYWJydXB0Q29tcGxldGlvbl86dGhpcy5maW5hbGx5Q29udGV4dHNfPVt0aGlzLmFicnVwdENvbXBsZXRpb25fXTt0aGlzLmNhdGNoQWRkcmVzc189ZXx8MDt0aGlzLmZpbmFsbHlBZGRyZXNzXz1nfHwwfTsKJGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUubGVhdmVGaW5hbGx5QmxvY2s9ZnVuY3Rpb24oZSxnKXtnPXRoaXMuZmluYWxseUNvbnRleHRzXy5zcGxpY2UoZ3x8MClbMF07aWYoZz10aGlzLmFicnVwdENvbXBsZXRpb25fPXRoaXMuYWJydXB0Q29tcGxldGlvbl98fGcpe2lmKGcuaXNFeGNlcHRpb24pcmV0dXJuIHRoaXMuanVtcFRvRXJyb3JIYW5kbGVyXygpO3ZvaWQgMCE9Zy5qdW1wVG8mJnRoaXMuZmluYWxseUFkZHJlc3NfPGcuanVtcFRvPyh0aGlzLm5leHRBZGRyZXNzPWcuanVtcFRvLHRoaXMuYWJydXB0Q29tcGxldGlvbl89bnVsbCk6dGhpcy5uZXh0QWRkcmVzcz10aGlzLmZpbmFsbHlBZGRyZXNzX31lbHNlIHRoaXMubmV4dEFkZHJlc3M9ZX07JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUuZm9ySW49ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyAkanNjb21wLmdlbmVyYXRvci5Db250ZXh0LlByb3BlcnR5SXRlcmF0b3IoZSl9OwokanNjb21wLmdlbmVyYXRvci5Db250ZXh0LlByb3BlcnR5SXRlcmF0b3I9ZnVuY3Rpb24oZSl7dGhpcy5vYmplY3RfPWU7dGhpcy5wcm9wZXJ0aWVzXz1bXTtmb3IodmFyIGcgaW4gZSl0aGlzLnByb3BlcnRpZXNfLnB1c2goZyk7dGhpcy5wcm9wZXJ0aWVzXy5yZXZlcnNlKCl9OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQuUHJvcGVydHlJdGVyYXRvci5wcm90b3R5cGUuZ2V0TmV4dD1mdW5jdGlvbigpe2Zvcig7MDx0aGlzLnByb3BlcnRpZXNfLmxlbmd0aDspe3ZhciBlPXRoaXMucHJvcGVydGllc18ucG9wKCk7aWYoZSBpbiB0aGlzLm9iamVjdF8pcmV0dXJuIGV9cmV0dXJuIG51bGx9OyRqc2NvbXAuZ2VuZXJhdG9yLkVuZ2luZV89ZnVuY3Rpb24oZSl7dGhpcy5jb250ZXh0Xz1uZXcgJGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dDt0aGlzLnByb2dyYW1fPWV9OwokanNjb21wLmdlbmVyYXRvci5FbmdpbmVfLnByb3RvdHlwZS5uZXh0Xz1mdW5jdGlvbihlKXt0aGlzLmNvbnRleHRfLnN0YXJ0XygpO2lmKHRoaXMuY29udGV4dF8ueWllbGRBbGxJdGVyYXRvcl8pcmV0dXJuIHRoaXMueWllbGRBbGxTdGVwXyh0aGlzLmNvbnRleHRfLnlpZWxkQWxsSXRlcmF0b3JfLm5leHQsZSx0aGlzLmNvbnRleHRfLm5leHRfKTt0aGlzLmNvbnRleHRfLm5leHRfKGUpO3JldHVybiB0aGlzLm5leHRTdGVwXygpfTsKJGpzY29tcC5nZW5lcmF0b3IuRW5naW5lXy5wcm90b3R5cGUucmV0dXJuXz1mdW5jdGlvbihlKXt0aGlzLmNvbnRleHRfLnN0YXJ0XygpO3ZhciBnPXRoaXMuY29udGV4dF8ueWllbGRBbGxJdGVyYXRvcl87aWYoZylyZXR1cm4gdGhpcy55aWVsZEFsbFN0ZXBfKCJyZXR1cm4iaW4gZz9nWyJyZXR1cm4iXTpmdW5jdGlvbihhKXtyZXR1cm57dmFsdWU6YSxkb25lOiEwfX0sZSx0aGlzLmNvbnRleHRfLnJldHVybik7dGhpcy5jb250ZXh0Xy5yZXR1cm4oZSk7cmV0dXJuIHRoaXMubmV4dFN0ZXBfKCl9OwokanNjb21wLmdlbmVyYXRvci5FbmdpbmVfLnByb3RvdHlwZS50aHJvd189ZnVuY3Rpb24oZSl7dGhpcy5jb250ZXh0Xy5zdGFydF8oKTtpZih0aGlzLmNvbnRleHRfLnlpZWxkQWxsSXRlcmF0b3JfKXJldHVybiB0aGlzLnlpZWxkQWxsU3RlcF8odGhpcy5jb250ZXh0Xy55aWVsZEFsbEl0ZXJhdG9yX1sidGhyb3ciXSxlLHRoaXMuY29udGV4dF8ubmV4dF8pO3RoaXMuY29udGV4dF8udGhyb3dfKGUpO3JldHVybiB0aGlzLm5leHRTdGVwXygpfTsKJGpzY29tcC5nZW5lcmF0b3IuRW5naW5lXy5wcm90b3R5cGUueWllbGRBbGxTdGVwXz1mdW5jdGlvbihlLGcsYSl7dHJ5e3ZhciBiPWUuY2FsbCh0aGlzLmNvbnRleHRfLnlpZWxkQWxsSXRlcmF0b3JfLGcpOyRqc2NvbXAuZ2VuZXJhdG9yLmVuc3VyZUl0ZXJhdG9yUmVzdWx0SXNPYmplY3RfKGIpO2lmKCFiLmRvbmUpcmV0dXJuIHRoaXMuY29udGV4dF8uc3RvcF8oKSxiO3ZhciBkPWIudmFsdWV9Y2F0Y2goYyl7cmV0dXJuIHRoaXMuY29udGV4dF8ueWllbGRBbGxJdGVyYXRvcl89bnVsbCx0aGlzLmNvbnRleHRfLnRocm93XyhjKSx0aGlzLm5leHRTdGVwXygpfXRoaXMuY29udGV4dF8ueWllbGRBbGxJdGVyYXRvcl89bnVsbDthLmNhbGwodGhpcy5jb250ZXh0XyxkKTtyZXR1cm4gdGhpcy5uZXh0U3RlcF8oKX07CiRqc2NvbXAuZ2VuZXJhdG9yLkVuZ2luZV8ucHJvdG90eXBlLm5leHRTdGVwXz1mdW5jdGlvbigpe2Zvcig7dGhpcy5jb250ZXh0Xy5uZXh0QWRkcmVzczspdHJ5e3ZhciBlPXRoaXMucHJvZ3JhbV8odGhpcy5jb250ZXh0Xyk7aWYoZSlyZXR1cm4gdGhpcy5jb250ZXh0Xy5zdG9wXygpLHt2YWx1ZTplLnZhbHVlLGRvbmU6ITF9fWNhdGNoKGcpe3RoaXMuY29udGV4dF8ueWllbGRSZXN1bHQ9dm9pZCAwLHRoaXMuY29udGV4dF8udGhyb3dfKGcpfXRoaXMuY29udGV4dF8uc3RvcF8oKTtpZih0aGlzLmNvbnRleHRfLmFicnVwdENvbXBsZXRpb25fKXtlPXRoaXMuY29udGV4dF8uYWJydXB0Q29tcGxldGlvbl87dGhpcy5jb250ZXh0Xy5hYnJ1cHRDb21wbGV0aW9uXz1udWxsO2lmKGUuaXNFeGNlcHRpb24pdGhyb3cgZS5leGNlcHRpb247cmV0dXJue3ZhbHVlOmUucmV0dXJuLGRvbmU6ITB9fXJldHVybnt2YWx1ZTp2b2lkIDAsZG9uZTohMH19OwokanNjb21wLmdlbmVyYXRvci5HZW5lcmF0b3JfPWZ1bmN0aW9uKGUpe3RoaXMubmV4dD1mdW5jdGlvbihnKXtyZXR1cm4gZS5uZXh0XyhnKX07dGhpcy50aHJvdz1mdW5jdGlvbihnKXtyZXR1cm4gZS50aHJvd18oZyl9O3RoaXMucmV0dXJuPWZ1bmN0aW9uKGcpe3JldHVybiBlLnJldHVybl8oZyl9O3RoaXNbU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfX07JGpzY29tcC5nZW5lcmF0b3IuY3JlYXRlR2VuZXJhdG9yPWZ1bmN0aW9uKGUsZyl7Zz1uZXcgJGpzY29tcC5nZW5lcmF0b3IuR2VuZXJhdG9yXyhuZXcgJGpzY29tcC5nZW5lcmF0b3IuRW5naW5lXyhnKSk7JGpzY29tcC5zZXRQcm90b3R5cGVPZiYmZS5wcm90b3R5cGUmJiRqc2NvbXAuc2V0UHJvdG90eXBlT2YoZyxlLnByb3RvdHlwZSk7cmV0dXJuIGd9OwokanNjb21wLmFzeW5jRXhlY3V0ZVByb21pc2VHZW5lcmF0b3I9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gZyhiKXtyZXR1cm4gZS5uZXh0KGIpfWZ1bmN0aW9uIGEoYil7cmV0dXJuIGUudGhyb3coYil9cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKGIsZCl7ZnVuY3Rpb24gYyhmKXtmLmRvbmU\/YihmLnZhbHVlKTpQcm9taXNlLnJlc29sdmUoZi52YWx1ZSkudGhlbihnLGEpLnRoZW4oYyxkKX1jKGUubmV4dCgpKX0pfTskanNjb21wLmFzeW5jRXhlY3V0ZVByb21pc2VHZW5lcmF0b3JGdW5jdGlvbj1mdW5jdGlvbihlKXtyZXR1cm4gJGpzY29tcC5hc3luY0V4ZWN1dGVQcm9taXNlR2VuZXJhdG9yKGUoKSl9OyRqc2NvbXAuYXN5bmNFeGVjdXRlUHJvbWlzZUdlbmVyYXRvclByb2dyYW09ZnVuY3Rpb24oZSl7cmV0dXJuICRqc2NvbXAuYXN5bmNFeGVjdXRlUHJvbWlzZUdlbmVyYXRvcihuZXcgJGpzY29tcC5nZW5lcmF0b3IuR2VuZXJhdG9yXyhuZXcgJGpzY29tcC5nZW5lcmF0b3IuRW5naW5lXyhlKSkpfTsKdmFyIGVtYWlsSGFuZGxlcj1mdW5jdGlvbigpe3ZhciBlPWZ1bmN0aW9uKGIpe3RyeXtyZXR1cm4gd2luZG93LnRvcC5sb2NhdGlvbltiXX1jYXRjaChkKXtyZXR1cm4gd2luZG93LmxvY2F0aW9uW2JdfX0sZz1mdW5jdGlvbigpe3RoaXMuYWN0aW9uPWZ1bmN0aW9uKCl7fTt0aGlzLm5leHQ9bnVsbDt0aGlzLl9uZXh0Q2FsbGVkPSExfTtnLnByb3RvdHlwZT17ZXhldXRlOmZ1bmN0aW9uKCl7ImZ1bmN0aW9uIj09PXR5cGVvZiB0aGlzLmFjdGlvbiYmdGhpcy5hY3Rpb24uY2FsbCh0aGlzKX0sZ290b05leHQ6ZnVuY3Rpb24oKXt0aGlzLl9oYXNOZXh0KCkmJnRoaXMubmV4dC5leGV1dGUoKTt0aGlzLl9uZXh0Q2FsbGVkPSEwO3JldHVybiB0aGlzfSxzZXROZXh0OmZ1bmN0aW9uKGIpe3RoaXMubmV4dD1iO3JldHVybiB0aGlzfSxzZXRBY3Rpb246ZnVuY3Rpb24oYil7dGhpcy5hY3Rpb249YjtyZXR1cm4gdGhpc30sX2hhc05leHQ6ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbCE9PXRoaXMubmV4dCYmCiF0aGlzLl9uZXh0Q2FsbGVkfX07dmFyIGE9e3N1YmplY3Q6IiIsYm9keToiIixzZW5kVG86IiIsc2VuZFRvQURGRm9ybWF0OiIiLHNlbGVjdGVkU2VuZFRvOiIiLHNlbGVjdGVkU2VuZFRvQURGRm9ybWF0OiIiLHNlbmRGcm9tOiIiLHVzZXJFbWFpbDoiIix0cmFkZWluOiIiLHBvcHVwZGl2OiIiLHVzZXJGaXJzdE5hbWU6IiIsdXNlckxhc3ROYW1lOiIiLHVzZXJQaG9uZToiIixwaG9uZU1hbmRhdG9yeTowLHBob25lVmFsaWRhdGlvbkF0dGVtcHRzOjEsdXNlclBvc3RhbDoiIix1c2VyQWRkcmVzczoiIixiaXJ0aGRhdGU6IiIsdXNlckF0dGFjaG1lbnRQYXRoOiIiLG1haWxJRDoiZ2VuZXJpY01haWwiLGxlYWRJbnZva2VyOiJnZW5lcmljIixsZWFkSW52b2tlclNJRDoiIixpc0NUQTohMSxidXR0b25UZXh0OiIiLHJlc2V0Q2FsbGJhY2tzOmZ1bmN0aW9uKCl7JC5leHRlbmQoYSx7Y2FsbGJhY2s6bnVsbCxvbkR1cGxpY2F0ZVNlbmQ6ITEsb25BZnRlckNvbnNlbnQ6ITEsb25CZWZvcmVTaG93Q29uc2VudDohMX0pfSwKbWFrZToiIixtb2RlbDoiIix0cmltOiIiLHZpbjoiIixwcmljZTowLHllYXI6MCx2ZWhpY2xlVHlwZToiIixzdG9ja051bWJlcjoiIixwdXJjaGFzZV9pbnRlbnQ6IiIscHVyY2hhc2VfaW50ZW50X3NlY3Rpb246IiIsYWxsb3dfc2hhcmVfcGVyc29uYWxfZGF0YToiIixwcmVmZXJyZWRfY29udGFjdDoiIixjYXJpZDowLGNvbmRpdGlvbjoiVXNlZCIsbGFuZ3VhZ2U6IiIsaXNtb2JpbGVzaXRlOiJOTyIsaXNBbXA6Ik5PIixyZWZlcmVyOiIiLHBvcHVwT2ZmZXJUeXBlOiIiLHBhcnRpYWw6ITEsZnJvbUZhY2Vib29rOiExLHNraXBTZW5kaW5nOiExLGZyb21PbkxvYWQ6ITEscG9zdFN1Ym1pdENhbGxiYWNrOiIiLHJlc3VtZUFjdGl2aXR5OiEwLHN1Ym1pdERhdGE6IiIsc3VibWl0VHlwZToibm9ybWFsIixsYXN0Q2hlY2tzdW06IiIsY29uc2VudERlYWxlcjohMSxjb25zZW50T0VNOiExLGNvbnNlbnRUeXBlOiJJbXBsaWNpdCIsY29uc2VudEV4cGlyYXRpb246IiIsY29uc2VudERhdGU6IiIsCmNvbnNlbnRGcmVxdWVuY3k6LTEsY29uc2VudERldGFpbHNGUjoiIixjb25zZW50RGV0YWlsc0VOOiIiLGRldGFpbHNEZWZhdWx0czoiIixmcm9tQUE6MCxvd25lcklEOjAsZGVwYXJ0bWVudDoiIixza2lwR2V0RGVwOiExLGRlcGFydG1lbnRCeVN0b2NrOiExLGFza1B1cmNoYXNlSW50ZW50OiExLGxlYWRUaXRsZVVJVGV4dDoiIixsZWFkVGl0bGVUZXh0OiIiLGdlb2xvY19zdGF0dXM6IiIsZ2VvbG9jX2xhdDoiIixnZW9sb2NfbG9uZzoiIixnZW9sb2NfYWNjdXJhY3k6LTEsZ2VvbG9jX3RyYWNrX3N0cjoiIixnZW9sb2NfZW1haWxfc3RyOiIiLHRyYW5zcG9ydE9wdGlvbjoiIixjYXIyX21ha2U6IiIsY2FyMl9tb2RlbDoiIixjYXIyX3RyaW06IiIsY2FyMl95ZWFyOiIiLGNhcjJfY29sb3I6IiIsY2FyMl9vZG9tZXRlcjoiIixjYXIyX3ZpbjoiIixjYXIyX3RyYW5zbWlzc29uOiIiLGNhcjJfZHJpdmV0cmFpbjoiIixjYXIyX2Z1ZWx0eXBlOiIiLGNvbW1lbnRzOiIiLGdyZWNhcHRjaGFSZXNwb25zZVRva2VuOiIiLAppZ25vcmVDYXB0Y2hhOiExLGNvbnRhY3RJRDowLGNvbnRhY3RBZGRyZXNzOiIiLGNvbnRhY3RDaXR5OiIiLGNvbnRhY3RQcm92aW5jZToiIixjb250YWN0WmlwOiIiLGNvbnRhY3ROQVM6IiIsY29udGFjdEJpcnRoOiIiLGRlYWxlck5hbWU6IiIsZ2V0TmV3U2VxdWVuY2U6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IGd9LGNyZWF0ZUNoZWNrc3VtOmZ1bmN0aW9uKCl7Zm9yKHZhciBiPSIiLGQ9WyJtYWtlIiwibW9kZWwiLCJ5ZWFyIiwibWFpbElEIl0sYz0wO2M8ZC5sZW5ndGg7YysrKXt2YXIgZj1kW2NdLGs9YVtmXSxtPXR5cGVvZiBrO2lmKCJzdHJpbmciPT1tfHwibnVtYmVyIj09bSliKz1mKyI6IitrKyI7In1kPSIwMDAwMDAwMCA3NzA3MzA5NiBFRTBFNjEyQyA5OTA5NTFCQSAwNzZEQzQxOSA3MDZBRjQ4RiBFOTYzQTUzNSA5RTY0OTVBMyAwRURCODgzMiA3OURDQjhBNCBFMEQ1RTkxRSA5N0QyRDk4OCAwOUI2NEMyQiA3RUIxN0NCRCBFN0I4MkQwNyA5MEJGMUQ5MSAxREI3MTA2NCA2QUIwMjBGMiBGM0I5NzE0OCA4NEJFNDFERSAxQURBRDQ3RCA2RERERTRFQiBGNEQ0QjU1MSA4M0QzODVDNyAxMzZDOTg1NiA2NDZCQThDMCBGRDYyRjk3QSA4QTY1QzlFQyAxNDAxNUM0RiA2MzA2NkNEOSBGQTBGM0Q2MyA4RDA4MERGNSAzQjZFMjBDOCA0QzY5MTA1RSBENTYwNDFFNCBBMjY3NzE3MiAzQzAzRTREMSA0QjA0RDQ0NyBEMjBEODVGRCBBNTBBQjU2QiAzNUI1QThGQSA0MkIyOTg2QyBEQkJCQzlENiBBQ0JDRjk0MCAzMkQ4NkNFMyA0NURGNUM3NSBEQ0Q2MERDRiBBQkQxM0Q1OSAyNkQ5MzBBQyA1MURFMDAzQSBDOEQ3NTE4MCBCRkQwNjExNiAyMUI0RjRCNSA1NkIzQzQyMyBDRkJBOTU5OSBCOEJEQTUwRiAyODAyQjg5RSA1RjA1ODgwOCBDNjBDRDlCMiBCMTBCRTkyNCAyRjZGN0M4NyA1ODY4NEMxMSBDMTYxMURBQiBCNjY2MkQzRCA3NkRDNDE5MCAwMURCNzEwNiA5OEQyMjBCQyBFRkQ1MTAyQSA3MUIxODU4OSAwNkI2QjUxRiA5RkJGRTRBNSBFOEI4RDQzMyA3ODA3QzlBMiAwRjAwRjkzNCA5NjA5QTg4RSBFMTBFOTgxOCA3RjZBMERCQiAwODZEM0QyRCA5MTY0NkM5NyBFNjYzNUMwMSA2QjZCNTFGNCAxQzZDNjE2MiA4NTY1MzBEOCBGMjYyMDA0RSA2QzA2OTVFRCAxQjAxQTU3QiA4MjA4RjRDMSBGNTBGQzQ1NyA2NUIwRDlDNiAxMkI3RTk1MCA4QkJFQjhFQSBGQ0I5ODg3QyA2MkREMURERiAxNURBMkQ0OSA4Q0QzN0NGMyBGQkQ0NEM2NSA0REIyNjE1OCAzQUI1NTFDRSBBM0JDMDA3NCBENEJCMzBFMiA0QURGQTU0MSAzREQ4OTVENyBBNEQxQzQ2RCBEM0Q2RjRGQiA0MzY5RTk2QSAzNDZFRDlGQyBBRDY3ODg0NiBEQTYwQjhEMCA0NDA0MkQ3MyAzMzAzMURFNSBBQTBBNEM1RiBERDBEN0NDOSA1MDA1NzEzQyAyNzAyNDFBQSBCRTBCMTAxMCBDOTBDMjA4NiA1NzY4QjUyNSAyMDZGODVCMyBCOTY2RDQwOSBDRTYxRTQ5RiA1RURFRjkwRSAyOUQ5Qzk5OCBCMEQwOTgyMiBDN0Q3QThCNCA1OUIzM0QxNyAyRUI0MEQ4MSBCN0JENUMzQiBDMEJBNkNBRCBFREI4ODMyMCA5QUJGQjNCNiAwM0I2RTIwQyA3NEIxRDI5QSBFQUQ1NDczOSA5REQyNzdBRiAwNERCMjYxNSA3M0RDMTY4MyBFMzYzMEIxMiA5NDY0M0I4NCAwRDZENkEzRSA3QTZBNUFBOCBFNDBFQ0YwQiA5MzA5RkY5RCAwQTAwQUUyNyA3RDA3OUVCMSBGMDBGOTM0NCA4NzA4QTNEMiAxRTAxRjI2OCA2OTA2QzJGRSBGNzYyNTc1RCA4MDY1NjdDQiAxOTZDMzY3MSA2RTZCMDZFNyBGRUQ0MUI3NiA4OUQzMkJFMCAxMERBN0E1QSA2N0RENEFDQyBGOUI5REY2RiA4RUJFRUZGOSAxN0I3QkU0MyA2MEIwOEVENSBENkQ2QTNFOCBBMUQxOTM3RSAzOEQ4QzJDNCA0RkRGRjI1MiBEMUJCNjdGMSBBNkJDNTc2NyAzRkI1MDZERCA0OEIyMzY0QiBEODBEMkJEQSBBRjBBMUI0QyAzNjAzNEFGNiA0MTA0N0E2MCBERjYwRUZDMyBBODY3REY1NSAzMTZFOEVFRiA0NjY5QkU3OSBDQjYxQjM4QyBCQzY2ODMxQSAyNTZGRDJBMCA1MjY4RTIzNiBDQzBDNzc5NSBCQjBCNDcwMyAyMjAyMTZCOSA1NTA1MjYyRiBDNUJBM0JCRSBCMkJEMEIyOCAyQkI0NUE5MiA1Q0IzNkEwNCBDMkQ3RkZBNyBCNUQwQ0YzMSAyQ0Q5OUU4QiA1QkRFQUUxRCA5QjY0QzJCMCBFQzYzRjIyNiA3NTZBQTM5QyAwMjZEOTMwQSA5QzA5MDZBOSBFQjBFMzYzRiA3MjA3Njc4NSAwNTAwNTcxMyA5NUJGNEE4MiBFMkI4N0ExNCA3QkIxMkJBRSAwQ0I2MUIzOCA5MkQyOEU5QiBFNUQ1QkUwRCA3Q0RDRUZCNyAwQkRCREYyMSA4NkQzRDJENCBGMUQ0RTI0MiA2OEREQjNGOCAxRkRBODM2RSA4MUJFMTZDRCBGNkI5MjY1QiA2RkIwNzdFMSAxOEI3NDc3NyA4ODA4NUFFNiBGRjBGNkE3MCA2NjA2M0JDQSAxMTAxMEI1QyA4RjY1OUVGRiBGODYyQUU2OSA2MTZCRkZEMyAxNjZDQ0Y0NSBBMDBBRTI3OCBENzBERDJFRSA0RTA0ODM1NCAzOTAzQjNDMiBBNzY3MjY2MSBEMDYwMTZGNyA0OTY5NDc0RCAzRTZFNzdEQiBBRUQxNkE0QSBEOUQ2NUFEQyA0MERGMEI2NiAzN0Q4M0JGMCBBOUJDQUU1MyBERUJCOUVDNSA0N0IyQ0Y3RiAzMEI1RkZFOSBCREJERjIxQyBDQUJBQzI4QSA1M0IzOTMzMCAyNEI0QTNBNiBCQUQwMzYwNSBDREQ3MDY5MyA1NERFNTcyOSAyM0Q5NjdCRiBCMzY2N0EyRSBDNDYxNEFCOCA1RDY4MUIwMiAyQTZGMkI5NCBCNDBCQkUzNyBDMzBDOEVBMSA1QTA1REYxQiAyRDAyRUY4RCIuc3BsaXQoIiAiKS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHBhcnNlSW50KHQsCjE2KX0pO3ZhciBuPW5eLTE7Yz0wO2ZvcihmPWIubGVuZ3RoO2M8ZjtjKyspbj1uPj4+OF5kWyhuXmIuY2hhckNvZGVBdChjKSkmMjU1XTtyZXR1cm4obl4tMSk+Pj4wfSxzZXRNdWx0aURlYWxlckJvZHk6ZnVuY3Rpb24oYixkKXt2YXIgYz0kKCIjcG9zdExlYWRMYWJlbCIpLnZhbCgpOyJ1bmRlZmluZWQiIT09dHlwZW9mIGM\/KGM9Yy5yZXBsYWNlKCJ7JE1VTFRJREVBTEVSTkFNRX0iLGIpLnJlcGxhY2UoInskUE9TVF9MRUFEX0VNQUlMU30iLGQpLGEuYm9keT1hLmJvZHkucmVwbGFjZSgieyRERUFMRVJfU0VORFRPfSIsYyksYS5kZWFsZXJOYW1lPWIpOmEuYm9keT1hLmJvZHkucmVwbGFjZSgvPGJyXHM\/XC8+e1wkREVBTEVSX1NFTkRUT30oYnJccz9cLyk\/LywiIikucmVwbGFjZSgieyRERUFMRVJfU0VORFRPfSIsIiIpfSxzaG93Q29uc2VudDpmdW5jdGlvbihiLGQpe2EuZ2V0RW1haWxDb25zZW50KGZ1bmN0aW9uKGMpe3ZhciBmPWEuZ2V0TmV3U2VxdWVuY2UoKSxrPWEuZ2V0TmV3U2VxdWVuY2UoKTsKZi5zZXRBY3Rpb24oZnVuY3Rpb24oKXt2YXIgbT10aGlzLG49JCgiI211bHRpLWFkZHJlc3Mtc3VibWlzc2lvbiIpLHQ9bi5maW5kKCJzZWxlY3QiKSxyPSQoIi5kZWFsZXItc2VsZWN0LXdyYXBwZXIiKSx2PTExMTI7YS5oYXNTZWxlY3RlZE11bHRpQWRkcmVzcz0hMTtpZigoJCgiI2N1c3RvbUZvcm1fc2VuZHRvIikubGVuZ3RoJiYiIiE9JCgiI2N1c3RvbUZvcm1fc2VuZHRvIikudmFsKCl8fCQoIiNjdXN0b21Gb3JtX3NlbmR0b0FERiIpLmxlbmd0aCYmIiIhPSQoIiNjdXN0b21Gb3JtX3NlbmR0b0FERiIpLnZhbCgpKSYmMDw9JCgiI1BBR0VJRCIpLnZhbCgpLmluZGV4T2YoImdlbmVyaWNfIil8fDA9PW4ubGVuZ3RofHwwIT09YS5kZWFsZXJOYW1lLmxlbmd0aHx8IkpvYk9mZmVyIj09YS5tYWlsSUQmJiIiIT0kKCIjdGV4dFNlbmRUb0VtYWlsRGVmYXVsdCIpLnZhbCgpKXJldHVybiBtLmdvdG9OZXh0KCk7dmFyIHE9JCgiI1BPU1RfTEVBRF9TRU5EX1RPX0RFQUxFUl9UWVBFX1NFTEVDVCIpLmxlbmd0aD8KJCgiI1BPU1RfTEVBRF9TRU5EX1RPX0RFQUxFUl9UWVBFX1NFTEVDVCIpLnZhbCgpOiJsb2NhdGlvbiI7aWYoMDwkKCIjdGFyZ2V0UGFnZSIpLmxlbmd0aCYmIkNBUkRFVEFJTFMiPT09JCgiI3RhcmdldFBhZ2UiKS52YWwoKSYmImxvY2F0aW9uIj09PXF8fCgiIiE9PWEuc3RvY2tOdW1iZXJ8fGEuY2FyaWR8fGEuZ2V0U3RvY2tOdW1iZXIoKSkmJiJsb2NhdGlvbiI9PT1xKXJldHVybiBtLmdvdG9OZXh0KCk7JCgiI211bHRpLWRlYWxlci1tYXAiKS5sZW5ndGgmJihHb29nbGVNYXBzV3JhcHBlci5zZXRHb29nbGVNYXAoKSxxPSQoIiNmb290ZXJHb29nbGVNYXBab29tIikudmFsKCkscT0xPHBhcnNlSW50KHEpJiYxOD49cGFyc2VJbnQocSk\/cGFyc2VJbnQocSk6OSxxPW5ldyBHb29nbGVNYXBzV3JhcHBlcih7ZWxlbWVudDoibXVsdGktZGVhbGVyLW1hcCIsYWRkcmVzc2VzOiJ1bmRlZmluZWQiIT10eXBlb2YgZm9vdGVyTWFwQWRkcmVzc2VzP2Zvb3Rlck1hcEFkZHJlc3NlczpbXSx6b29tOnEsCm9uQWZ0ZXJNYXJrZXJDcmVhdGVkOmZ1bmN0aW9uKGgsbCl7dmFyIHU9JChgLmRlYWxlci1zZWxlY3Qtd3JhcHBlciBidXR0b25bZGF0YS1kZWFsZXJpZD0iJHtoLmRlYWxlcklkfSJdYCk7dS5vbigiY2xpY2siLGZ1bmN0aW9uKCl7Z29vZ2xlLm1hcHMuZXZlbnQudHJpZ2dlcihsLCJjbGljayIpfSk7bC5hZGRMaXN0ZW5lcigiY2xpY2siLGZ1bmN0aW9uKCl7JCgiLmRlYWxlci1zZWxlY3Qtd3JhcHBlciBidXR0b24iKS5yZW1vdmVDbGFzcygiZm9jdXNlZCIpO3ZhciB3PSQoJyNtdWx0aS1hZGRyZXNzLXN1Ym1pc3Npb24gc2VsZWN0W25hbWU9Im11bHRpX2RlYWxlcl9zZW5kVG8iXScpO3UubGVuZ3RoJiYodS5hZGRDbGFzcygiZm9jdXNlZCIpLHVbMF0uZm9jdXMoKSxtdWx0aURlYWxlclNlbGVjdC5zZXRTZWxlY3QodVswXSwhMSkpO2lmKHcubGVuZ3RoKXt2YXIgeD13LmZpbmQoYG9wdGlvbltkYXRhLWRlYWxlcmlkPSIke2guZGVhbGVySWR9Il1gKTt4Lmxlbmd0aCYmdy52YWwoeC52YWwoKSl9fSk7CiQoYCNtdWx0aS1hZGRyZXNzLXN1Ym1pc3Npb24gb3B0aW9uW2RhdGEtZGVhbGVyaWQ9IiR7aC5kZWFsZXJJZH0iXWApLmRhdGEoIm1hcmtlciIsbCl9LG9uQWZ0ZXJJbml0OmZ1bmN0aW9uKCl7InVuZGVmaW5lZCIhPXR5cGVvZiBmb290ZXJNYXBBZGRyZXNzZXMmJjAhPWZvb3Rlck1hcEFkZHJlc3Nlcy5sZW5ndGh8fCQoIiNtdWx0aS1kZWFsZXItbWFwIikuaGlkZSgpOyQoJyNtdWx0aS1hZGRyZXNzLXN1Ym1pc3Npb24gc2VsZWN0W25hbWU9Im11bHRpX2RlYWxlcl9zZW5kVG8iXScpLm9uKCJjaGFuZ2UiLGZ1bmN0aW9uKCl7dmFyIGg9JCh0aGlzKS5maW5kKCI6c2VsZWN0ZWQiKTtoLmxlbmd0aCYmZ29vZ2xlLm1hcHMuZXZlbnQudHJpZ2dlcihoLmRhdGEoIm1hcmtlciIpLCJjbGljayIpfSl9fSksJCgiI211bHRpLWRlYWxlci1tYXAiKS5zaG93KCkscS5pbml0KCkpO3Qub2ZmKCJmb2N1cyIpLm9uKCJmb2N1cyIsZnVuY3Rpb24oKXt0LnJlbW92ZUNsYXNzKCJ2YWxpZGl0eS1lcnJvbmVvdXMiKX0pOwp2YXIgcD1mdW5jdGlvbihoKXt2YXIgbD1hLmdldERlcCgpO2lmKCJKb2JPZmZlciI9PWEubWFpbElEKXN3aXRjaCgkKCIjam9ib2ZmZXJfZGVwYXJ0bWVudCIpLnZhbCgpKXtjYXNlICJTYWxlc25ldyI6bD0iTkVXIjticmVhaztjYXNlICJTYWxlc3VzZWQiOmw9IlVTRUQiO2JyZWFrO2Nhc2UgIlNlcnZpY2UiOmw9IlNFUlZJQ0UiO2JyZWFrO2Nhc2UgIlBhcnRzIjpsPSJQQVJUUyI7YnJlYWs7ZGVmYXVsdDpsPSJORVcifXZhciB1PSIiLHc9IiI7c3dpdGNoKGwpe2Nhc2UgIlVTRUQiOnU9aC5kYXRhKCJlbWFpbHVzZWQiKTt3PWguZGF0YSgiZW1haWxhZGZ1c2VkIik7YnJlYWs7Y2FzZSAiU0VSVklDRSI6dT1oLmRhdGEoImVtYWlsc2VydmljZSIpO3c9aC5kYXRhKCJlbWFpbGFkZnNlcnZpY2UiKTticmVhaztjYXNlICJQQVJUUyI6dT1oLmRhdGEoImVtYWlscGFydHMiKXx8aC5kYXRhKCJlbWFpbHNlcnZpY2UiKTt3PWguZGF0YSgiZW1haWxhZGZwYXJ0cyIpfHxoLmRhdGEoImVtYWlsYWRmc2VydmljZSIpOwpicmVhaztjYXNlICJGSU5BTkNFIjp1PWguZGF0YSgiZW1haWxmaW5hbmNlIiksdz1oLmRhdGEoImVtYWlsYWRmZmluYW5jZSIpfWEuc2VuZFRvPXV8fGguZGF0YSgiZW1haWwiKXx8aC5kYXRhKCJlbWFpbHVzZWQiKTthLnNlbGVjdGVkU2VuZFRvPXV8fGguZGF0YSgiZW1haWwiKXx8aC5kYXRhKCJlbWFpbHVzZWQiKTthLnNlbmRUb0FERkZvcm1hdD13fHxoLmRhdGEoImVtYWlsYWRmIil8fGguZGF0YSgiZW1haWxhZGZ1c2VkIik7YS5zZWxlY3RlZFNlbmRUb0FERkZvcm1hdD13fHxoLmRhdGEoImVtYWlsYWRmIil8fGguZGF0YSgiZW1haWxhZGZ1c2VkIik7YS5oYXNTZWxlY3RlZE11bHRpQWRkcmVzcz0hMDthLmRlYWxlcmlkPWguZGF0YSgiZGVhbGVyaWQiKTthLnNldE11bHRpRGVhbGVyQm9keShoLnRleHQoKS50cmltKCksYS5zZW5kVG8pfTskKCIjbXV0bGlBZGRyZXNzU3VibWl0Iikub2ZmKCJjbGljayIpLm9uKCJjbGljayIsZnVuY3Rpb24oKXtpZigiIj09PXQudmFsKCkpdC5hZGRDbGFzcygidmFsaWRpdHktZXJyb25lb3VzIiksCnIuYWRkQ2xhc3MoInZhbGlkaXR5LWVycm9uZW91cyIpO2Vsc2V7dmFyIGg9dC5maW5kKCI6c2VsZWN0ZWQiKTtwKGgpOyQoIi5yZXZlYWwtbW9kYWwtYmciKS5jc3MoInotaW5kZXgiLHYpO24udHJpZ2dlcigicmV2ZWFsOmNsb3NlIik7bS5nb3RvTmV4dCgpfX0pO2lmKCQoIi5tdWx0aS1hZGRyZXNzLXN1Ym1pc3Npb24tY2xvc2UiKS5sZW5ndGgpJCgiLm11bHRpLWFkZHJlc3Mtc3VibWlzc2lvbi1jbG9zZSIpLm9mZigiY2xpY2siKS5vbigiY2xpY2siLGZ1bmN0aW9uKCl7TGVhZHMmJk9iamVjdC5rZXlzKExlYWRzKS5mb3JFYWNoKGZ1bmN0aW9uKGgpeyJ1bmRlZmluZWQiIT09dHlwZW9mIExlYWRzW2hdLmxlYWRJZCYmTGVhZEhhbmRsZXIoKS5nZXRMZWFkKExlYWRzW2hdLmxlYWRJZCkuY2xvc2UoKX0pO3BvcHVwU3VwZXJ2aXNvciYmcG9wdXBTdXBlcnZpc29yLnBvcHVwcyYmcG9wdXBTdXBlcnZpc29yLnBvcHVwcy5mb3JFYWNoKGZ1bmN0aW9uKGgpe2gmJnR5cGVvZiBoLmlzQWN0aXZlKCkmJgpoLmNhbmNlbCgpfSk7JCgiLnJldmVhbC1tb2RhbC1iZyIpLmNzcygiei1pbmRleCIsdik7bi50cmlnZ2VyKCJyZXZlYWw6Y2xvc2UiKX0pO2lmKCIiIT09YS5tYWtlJiZtdWx0aURlYWxlclNlbGVjdCYmKHE9bXVsdGlEZWFsZXJTZWxlY3QuZmlsdGVyKHQpLHEuYnlNYWtlKGEubWFrZSkscT1xLmhhc09ubHlPbmUoKSkpcmV0dXJuIHAocSksbS5nb3RvTmV4dCgpO3IubGVuZ3RoJiYocT1yLmZpbmQoImJ1dHRvbiIpLnRvQXJyYXkoKSxxLmxlbmd0aCYmKHE9ZnVuY3Rpb24oaCl7Zm9yKGxldCBsPWgubGVuZ3RoLTE7MDxsO2wtLSl7Y29uc3QgdT1NYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqKGwrMSkpO1toW2xdLGhbdV1dPVtoW3VdLGhbbF1dfXJldHVybiBofShxKSxyLmZpbmQoImJ1dHRvbiIpLnJlbW92ZSgpLHIuYXBwZW5kKHEpKSk7bi5yZXZlYWwoe2FuaW1hdGlvbjoiZmFkZUFuZFBvcCIsYW5pbWF0aW9uc3BlZWQ6MzAwLGNsb3Nlb25iYWNrZ3JvdW5kY2xpY2s6ITEsZGlzbWlzc21vZGFsY2xhc3M6ImNsb3NlLXJldmVhbC1tb2RhbDIiLApjbG9zZW9uZXNjYXBlOiExfSk7dj0kKCIucmV2ZWFsLW1vZGFsLWJnIikuY3NzKCJ6LWluZGV4Iik7JCgiLnJldmVhbC1tb2RhbC1iZyIpLmNzcygiei1pbmRleCIscGFyc2VJbnQobi5jc3MoInotaW5kZXgiKSktMSl9KTtrLnNldEFjdGlvbihmdW5jdGlvbigpe3ZvaWQgMD09YiYmKGI9ITEpO3ZvaWQgMD09ZCYmKGQ9ITEpO3ZhciBtPSQoIiNhc1BvcFVwIiksbj0hMTsoYS5hc2tQdXJjaGFzZUludGVudHx8YS5zaG91bGREaXNwbGF5UHVyY2hhc2VJbnRlbnRDb250YWN0KCkpJiYwPCQoIiNhc1B1cmNoYXNlSW50ZW50IikubGVuZ3RoJiYobT0kKCIjYXNQdXJjaGFzZUludGVudCIpLG49ITApO2lmKDA8bS5sZW5ndGgpe2dldENvb2tpZSgidmlzaXRvcl9oYXNfZXhwbGljaXRfY29uc2VudCIpO3ZhciB0PXBhcnNlSW50KGdldENvb2tpZSgidmlzaXRvcl9oYXNfc2Vlbl9wb3B1cCIpLDEwKTtpc05hTih0KSYmKHQ9MCk7YS5za2lwU2VuZGluZz1iO2EuZnJvbU9uTG9hZD1kO2lmKGMuaGFzQ29uc2VudCl7c3dpdGNoKGEuc3VibWl0VHlwZSl7Y2FzZSAiaW5zdGFudFJlYmF0ZSI6Y2FzZSAic2NyYXRjaCI6cmVhbFN1Ym1pdFJlYmF0ZUNvdXBvbigpOwpicmVhaztkZWZhdWx0OiIiIT1hLnBvc3RTdWJtaXRDYWxsYmFjayYmZXZhbChhLnBvc3RTdWJtaXRDYWxsYmFjayl9YS5yZWFkeVRvU2VuZCgpfWVsc2V7c3dpdGNoKGEuc3VibWl0VHlwZSl7Y2FzZSAic2NyYXRjaCI6Y2FzZSAiaW5zdGFudFJlYmF0ZSI6Y2xvc2VQb3B1cFdpZGdldCgpfSJmdW5jdGlvbiI9PXR5cGVvZiBhLm9uQmVmb3JlU2hvd0NvbnNlbnQmJmEub25CZWZvcmVTaG93Q29uc2VudC5jYWxsKCk7aWYobilhLnNob3VsZERpc3BsYXlQdXJjaGFzZUludGVudENvbnRhY3QoKT9kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjYXNQdXJjaGFzZUludGVudCAuc3RlcENvbnRhY3QiKS5jbGFzc0xpc3QucmVtb3ZlKCJoaWRkZW4iKTpkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjYXNQdXJjaGFzZUludGVudCAuc3RlcENvbnRhY3QiKS5jbGFzc0xpc3QuYWRkKCJoaWRkZW4iKSwkKCIjZW1haWxDb25zZW50U3VibWl0Iikub24oImNsaWNrIixmdW5jdGlvbigpe3ZhciByPXt9O20uZmluZCgiZm9ybSIpLnNlcmlhbGl6ZUFycmF5KCkubWFwKHA9Pgp7cltwLm5hbWVdPXAudmFsdWV9KTskKCIjQUxMT1dfU0hBUkVfUEVSU09OQUxfSU5GTywgLnN0ZXBDb25zZW50IikuY3NzKHtib3JkZXI6Im5vbmUifSk7JCgiI0FMTE9XX1NIQVJFX1BFUlNPTkFMX0lORk9fVEVYVF9FUlJPUiIpLmhpZGUoKTtpZigxPT0kKCIjQUxMT1dfU0hBUkVfUEVSU09OQUxfSU5GTyIpLmlzKCI6dmlzaWJsZSIpJiYoIXIuc2hhcmVfcGVyc29uYWx8fCJubyI9PXIuc2hhcmVfcGVyc29uYWwpKXJldHVybiAkKCIjQUxMT1dfU0hBUkVfUEVSU09OQUxfSU5GTyIpLmNzcyh7Ym9yZGVyOiIxcHggc29saWQgcmVkIn0pLCQoIiNBTExPV19TSEFSRV9QRVJTT05BTF9JTkZPX1RFWFRfRVJST1IiKS5zaG93KCksITE7aWYoIXIuaGFzT3duUHJvcGVydHkoImNvbnNlbnQiKSlyZXR1cm4gJCgiLnN0ZXBDb25zZW50IikuY3NzKHtib3JkZXI6IjFweCBzb2xpZCByZWQifSksITE7dmFyIHY9e3B1cmNoYXNlX2ludGVudDotMSxzaGFyZV9wZXJzb25hbDoibm8iLHByZWZlcnJlZF9jb250YWN0OiIifTsKZm9yKHZhciBxIGluIHYpdi5oYXNPd25Qcm9wZXJ0eShxKSYmKHIuaGFzT3duUHJvcGVydHkocSk\/c2V0Q29va2llKHEscltxXSk6cltxXT12W3FdKTthLnB1cmNoYXNlX2ludGVudD1yLnB1cmNoYXNlX2ludGVudDthLmFsbG93X3NoYXJlX3BlcnNvbmFsX2RhdGE9ci5zaGFyZV9wZXJzb25hbDthLnByZWZlcnJlZF9jb250YWN0PXIucHJlZmVycmVkX2NvbnRhY3Q7dj0iLTEiIT1yLmNvbnNlbnQ7cT1yLmhhc093blByb3BlcnR5KCJjb25zZW50X29lbSIpJiYiMSI9PXIuY29uc2VudF9vZW07YS5zdWJtaXRDb25zZW50KHYscSwiY29tcGxleCIpO3JldHVybiExfSk7ZWxzZSAkKCIjY29uc2VudFN1Ym1pdCIpLm9uKCJjbGljayIsZnVuY3Rpb24ocil7ci5wcmV2ZW50RGVmYXVsdCgpO3I9ITE7JCgiLmRlYWxlckNvbnNlbnQiKS5jc3Moe2JvcmRlcjoibm9uZSJ9KTskKCIub2VtQ29uc2VudCIpLmNzcyh7Ym9yZGVyOiJub25lIn0pO3ZhciB2PXt9O20uZmluZCgiZm9ybSIpLnNlcmlhbGl6ZUFycmF5KCkubWFwKHA9Pgp7dltwLm5hbWVdPXAudmFsdWV9KTt2Lmhhc093blByb3BlcnR5KCJjb25zZW50Iil8fCgkKCIuZGVhbGVyQ29uc2VudCIpLmNzcyh7Ym9yZGVyOiIxcHggc29saWQgcmVkIn0pLHI9ITApO20uZmluZCgiZm9ybSAub2VtQ29uc2VudCIpLmxlbmd0aCYmIXYuaGFzT3duUHJvcGVydHkoImNvbnNlbnRfb2VtIikmJiQoIiNvZW1DZXJ0aWZpY2F0aW9uIikudmFsKCkmJihtLmZpbmQoImZvcm0gLm9lbUNvbnNlbnQiKS5jc3Moe2JvcmRlcjoiMXB4IHNvbGlkIHJlZCJ9KSxyPSEwKTtpZihyKXJldHVybiExO3I9Ii0xIiE9di5jb25zZW50O3ZhciBxPXYuaGFzT3duUHJvcGVydHkoImNvbnNlbnRfb2VtIikmJiIxIj09di5jb25zZW50X29lbTthLnN1Ym1pdENvbnNlbnQocixxKX0pO2EucHJlU2VuZEltcGxpY2l0KCk7bS5yZXZlYWwoe2FuaW1hdGlvbjoiZmFkZUFuZFBvcCIsYW5pbWF0aW9uc3BlZWQ6MzAwLGNsb3Nlb25iYWNrZ3JvdW5kY2xpY2s6ITEsZGlzbWlzc21vZGFsY2xhc3M6ImNsb3NlLXJldmVhbC1tb2RhbCIsCmNsb3Nlb25lc2NhcGU6ITF9KX19ZWxzZSIiPT1hLmNvbnNlbnREZXRhaWxzRU4mJnZvaWQgMCE9YS5kZXRhaWxzRGVmYXVsdHMuRU5HTElTSCYmdm9pZCAwIT1hLmRldGFpbHNEZWZhdWx0cy5GUkVOQ0gmJihhLmNvbnNlbnREZXRhaWxzRU49YS5kZXRhaWxzRGVmYXVsdHMuRU5HTElTSFsyXSxhLmNvbnNlbnREZXRhaWxzRlI9YS5kZXRhaWxzRGVmYXVsdHMuRlJFTkNIWzJdKSxiP3JlYWxTaG93UG9wdXBXaWRnZXQoZCk6YS5yZWFkeVRvU2VuZCgpfSk7Zi5zZXROZXh0KGspLmV4ZXV0ZSgpfSl9LGhpZGVDb25zZW50OmZ1bmN0aW9uKCl7dmFyIGI9JCgiI2FzUG9wVXA6dmlzaWJsZSIpOyQoIiNhc1B1cmNoYXNlSW50ZW50IikuaXMoIjp2aXNpYmxlIikmJiJoaWRkZW4iIT09JCgiI2FzUHVyY2hhc2VJbnRlbnQiKS5jc3MoInZpc2liaWxpdHkiKSYmKGI9JCgiI2FzUHVyY2hhc2VJbnRlbnQ6dmlzaWJsZSIpLGNvbXBsZXg9ITApOzA8Yi5sZW5ndGgmJmIudHJpZ2dlcigicmV2ZWFsOmNsb3NlIil9LApzYXZlQ29uc2VudDpmdW5jdGlvbihiLGQsYyxmKXskKCJib2R5IikuY3NzKCJvdmVyZmxvdyIsImF1dG8iKTthLmhpZGVDb25zZW50KCk7dm9pZCAwPT1jJiYoYz0iIik7dmFyIGs9Yj83MzA6MTgwO2Q9e2VtYWlsOmEudXNlckVtYWlsLGZpcnN0OmEudXNlckZpcnN0TmFtZSxsYXN0OmEudXNlckxhc3ROYW1lLHBob25lOmEudXNlclBob25lLHNpdGVJRDokKCIjc2l0ZUlEIikudmFsKCksZnJlcXVlbmN5OmI\/MTotMSxleHBsaWNpdDpiPzE6MCxleHBsaWNpdE9FTTpkPzE6MCxpbWc6YyxyZWZlcmVyOnZvaWQgMCE9ZG9jdW1lbnQucmVmZXJyZXI\/ZG9jdW1lbnQucmVmZXJyZXI6IiIsZnJvbToiRUgifTtpZih2b2lkIDAhPT1hLnByZWZlcnJlZF9jb250YWN0JiYiIiE9PWEucHJlZmVycmVkX2NvbnRhY3R8fHZvaWQgMCE9PWdldENvb2tpZSgicHJlZmVycmVkX2NvbnRhY3QiKSYmIiIhPT1nZXRDb29raWUoInByZWZlcnJlZF9jb250YWN0IikpYz1hLnByZWZlcnJlZF9jb250YWN0fHwKZ2V0Q29va2llKCJwcmVmZXJyZWRfY29udGFjdCIpLGM9eyJUw6lsw6lwaG9uZSI6IlBIT05FIixDb3VycmllbDoiRU1BSUwifVtjXXx8YyxudWxsIT09YyYmKGQuY29udGFjdFByZWZlcmVuY2U9Yy50b1VwcGVyQ2FzZSgpKTtzZXRDb29raWUoInZpc2l0b3JfZnJlcXVlbmN5X3ByZWZlcmVuY2UiLC0xLGspO3NldENvb2tpZSgidmlzaXRvcl9jb25zZW50X3ByZWZlcmVuY2UiLGI\/IkV4cGxpY2l0IjoiSW1wbGljaXQiLGspO3NldENvb2tpZSgidmlzaXRvcl9oYXNfZXhwbGljaXRfY29uc2VudCIsYj8ieWVzIjoibm8iLGspO3NldENvb2tpZSgidmlzaXRvcl9lbWFpbF9wcmVmZXJlbmNlIixkLmVtYWlsLDkwKTskKCIudWktbG9hZGVyLWJhY2tncm91bmQiKS5zaG93KCk7c2V0VGltZW91dChmdW5jdGlvbigpeyQoIi51aS1sb2FkZXItYmFja2dyb3VuZCIpLmhpZGUoKX0sNUUzKTskLmFqYXgoe3R5cGU6IlBPU1QiLHVybDoiL2FqYXgvdHJhY2tFbWFpbFByZWZlcmVuY2U\/d3N3aWR0aD0wIiwKZGF0YVR5cGU6Impzb24iLGRhdGE6ZCxjb21wbGV0ZTpmdW5jdGlvbihtKXt0cnl7dmFyIG49SlNPTi5wYXJzZShtLnJlc3BvbnNlVGV4dCk7YS5jb25zZW50RGV0YWlsc0VOPWJ0b2Eobi5kZXRhaWxDb25zZW50LkVOR0xJU0gpO2EuY29uc2VudERldGFpbHNGUj1idG9hKG4uZGV0YWlsQ29uc2VudC5GUkVOQ0gpfWNhdGNoKHQpe31hLnBvc3RTYXZlQ29uc2VudChiLGYpfX0pfSxwb3N0U2F2ZUNvbnNlbnQ6ZnVuY3Rpb24oYixkKXt2b2lkIDAhPWEuZGV0YWlsc0RlZmF1bHRzLkVOR0xJU0gmJnZvaWQgMCE9YS5kZXRhaWxzRGVmYXVsdHMuRlJFTkNIJiYoYj8oYS5jb25zZW50RGV0YWlsc0VOPWEuZGV0YWlsc0RlZmF1bHRzLkVOR0xJU0hbMV0sYS5jb25zZW50RGV0YWlsc0ZSPWEuZGV0YWlsc0RlZmF1bHRzLkZSRU5DSFsxXSk6KGEuY29uc2VudERldGFpbHNFTj1hLmRldGFpbHNEZWZhdWx0cy5FTkdMSVNIWzJdLGEuY29uc2VudERldGFpbHNGUj1hLmRldGFpbHNEZWZhdWx0cy5GUkVOQ0hbMl0pKTsKaWYoZCl7aWYoYS5pZ25vcmVDYXB0Y2hhP2EucmVhZHlUb1NlbmQoKTooYS5yZWNhcHRjaGEucmVzZXRUb2tlbigpLGEucmVjYXB0Y2hhLmdldFJlc3BvbnNlKCkuZG9uZShmdW5jdGlvbihjKXthLmdyZWNhcHRjaGFSZXNwb25zZVRva2VuPWM7YS5yZWFkeVRvU2VuZCgpfSkpLCJmdW5jdGlvbiI9PXR5cGVvZiBhLm9uQWZ0ZXJDb25zZW50KWEub25BZnRlckNvbnNlbnQoYil9ZWxzZSBhLmhpZGVDb25zZW50KCl9LHN1Ym1pdENvbnNlbnQ6ZnVuY3Rpb24oYixkLGMpe2EuY29uc2VudERlYWxlcj1iO2EuY29uc2VudE9FTT1kO2lmKGMmJiJjb21wbGV4Ij09Yyl7dmFyIGY9IiI7LTE9PWEucHVyY2hhc2VfaW50ZW50PyhjPSJQYXMgZGUgcmVwb25zZSIsZj0iTk9fQU5TV0VSIik6Yz1hLnB1cmNoYXNlX2ludGVudDtudWxsIT1jLm1hdGNoKC8zMC8pPyhjPSJNb2lucyBkZSAzMCBqb3VycyIsZj0iTFRfMzBfREFZUyIpOm51bGwhPWMubWF0Y2goLzMvKT8oYz0iTW9pbnMgZGUgMyBtb2lzIiwKZj0iTFRfM19NT05USFMiKTpudWxsIT1jLm1hdGNoKC82LykmJihudWxsIT1jLm1hdGNoKC9wbHVzfG92ZXJ8bW9yZS8pPyhjPSJQbHVzIGRlIDYgbW9pcyIsZj0iR1RfNl9NT05USFMiKTooYz0iTW9pbnMgZGUgNiBtb2lzIixmPSJMVF82X01PTlRIUyIpKTt2YXIgaz0iUmVwb25zZSAtICIrYS5wdXJjaGFzZV9pbnRlbnRfc2VjdGlvbi50b1VwcGVyQ2FzZSgpO2EubG9nRXZlbnQoIkludGVudGlvbnMgYWNoYXQ6ICIrYywiUFVSQ0hBU0VfSU5URU5UXyIrZik7InVuZGVmaW5lZCIhPT10eXBlb2YgZGVidWcmJmRlYnVnKFsiYi5fdHJhY2tFdmVudCIsIkludGVudGlvbnMgYWNoYXQiLGssYywxXSl9c3dpdGNoKGEuc3VibWl0VHlwZSl7Y2FzZSAic2NyYXRjaCI6Y2FzZSAiaW5zdGFudFJlYmF0ZSI6cmVhbFN1Ym1pdFJlYmF0ZUNvdXBvbigpO2JyZWFrO2RlZmF1bHQ6IiIhPWEucG9zdFN1Ym1pdENhbGxiYWNrJiZldmFsKGEucG9zdFN1Ym1pdENhbGxiYWNrKX0ic2NyYXRjaCI9PWEuc3VibWl0VHlwZSYmCnNob3dQb3B1cFdpZGdldCgpOyQoIiNsYXN0Q29uc2VudFBvcCIpLnZhbChiPyJFeHBsaWNpdCI6IkltcGxpY2l0Iik7YS5zYXZlQ29uc2VudChiLGQsIiIsITApfSxwcmVTZW5kQ2hlY2tzOmZ1bmN0aW9uKGIpe2I\/YS5yZWFkeVRvU2VuZCgpOmEuc2hvd0NvbnNlbnQoKX0sc2VuZE1haWw6ZnVuY3Rpb24oYil7cmV0dXJuICRqc2NvbXAuYXN5bmNFeGVjdXRlUHJvbWlzZUdlbmVyYXRvckZ1bmN0aW9uKGZ1bmN0aW9uKigpe2Euc3VibWl0VHlwZT0ibm9ybWFsIjtiPSJ1bmRlZmluZWQiIT10eXBlb2YgYj9iOiExO2EuaWdub3JlQ2FwdGNoYXx8KGEucmVjYXB0Y2hhLmxvYWQoKSwidW5kZWZpbmVkIiE9PWdyZWNhcHRjaGEmJi0xPGEucmVjYXB0Y2hhLndpZGdldElkJiYoeWllbGQgYS5yZWNhcHRjaGEuZ2V0UmVzcG9uc2UoKSkpO2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgJCgiI29uTGVhZFN1Ym1pdEdlb2xvYyIpLnZhbCgpfHwxIT0kKCIjb25MZWFkU3VibWl0R2VvbG9jIikudmFsKCl8fAoidW5kZWZpbmVkIj09dHlwZW9mIGdlb0xvY2F0b3J8fGEuc2tpcEdlb0xvYylhLnByZVNlbmRDaGVja3MoYik7ZWxzZXt2YXIgZD1uZXcgZ2VvTG9jYXRvcihmdW5jdGlvbihjKXthLmdlb2xvY19zdGF0dXM9Yy5nZW9sb2Nfc3RhdHVzOzE9PWMucmVzdWx0JiYoYS5nZW9sb2NfbGF0PWMubGF0aXR1ZGUsYS5nZW9sb2NfbG9uZz1jLmxvbmdpdHVkZSxhLmdlb2xvY19hY2N1cmFjeT1jLmFjY3VyYWN5LGEuZ2VvbG9jX3RyYWNrX3N0cj1jLmdlb2NvZGVfYWRkcmVzcyxhLmdlb2xvY19lbWFpbF9zdHI9Yy5nZW9jb2RlX2FkZHJlc3Nfc3RyLC0xPT1hLmJvZHkuaW5kZXhPZigiIyNHRU9MT0NBVElPTiMjIikmJihhLmJvZHk9dHJpbShhLmJvZHkpLnJlcGxhY2UoLzxicj4mbmJzcDsvZywiPGJyPiIpKyIjI0dFT0xPQ0FUSU9OIyMiKSwidW5kZWZpbmVkIiE9dHlwZW9mIGFjdGl2ZVVzZXJQcm9maWxlTW5nJiYidW5kZWZpbmVkIiE9dHlwZW9mIGFjdGl2ZVVzZXJQcm9maWxlTW5nLmxvZ1BhZ2VWaWV3RXZlbnQmJgphY3RpdmVVc2VyUHJvZmlsZU1uZy5sb2dQYWdlVmlld0V2ZW50KCJQT1NUQUxfQ09ERSIsYy5nZW9jb2RlX2FkZHJlc3Nfc3RyKSk7InVuZGVmaW5lZCI9PXR5cGVvZiAkKCIjbGVhZFNlbnQiKS52YWwoKSYmKGM9JCgiPGlucHV0PiIpLmF0dHIoe2lkOiJsZWFkU2VudCIsdHlwZToiaGlkZGVuIn0pLnZhbCgxKSwkKCIjZm9vdGVyRGl2IikuYXBwZW5kKGMpLGEucHJlU2VuZENoZWNrcyhiKSl9KTtkLnRyYWNrTG9jYXRpb25HQT0hMDtkLmdldExvY2F0aW9uKCl9fSl9LHNlbmRVc2VyRW1haWw6ZnVuY3Rpb24oYixkKXtzZW5kVG9EYXRhPXt9O3ZhciBjPWI9IiIsZj0iIixrPSIiO2ZvcihpIGluIGQpaWYoInN0cmluZyI9PXR5cGVvZiBpKXN3aXRjaChpLnRvTG93ZXJDYXNlKCkpe2Nhc2UgImVtYWlsdG8iOmM9ZFtpXTticmVhaztjYXNlICJlbWFpbGlkIjpiPWRbaV07YnJlYWs7Y2FzZSAiZGVhbGVyZW1haWwiOmY9ZFtpXTticmVhaztjYXNlICJkZWFsZXJwaG9uZSI6az1kW2ldO2JyZWFrOwpkZWZhdWx0OnNlbmRUb0RhdGFbaV09ZFtpXX1kPXt2YXJzOkpTT04uc3RyaW5naWZ5KHNlbmRUb0RhdGEpLHNpdGVpZDokKCIjdG9wc2l0ZWlkIikudmFsKCksbGFuZ3VhZ2U6JCgiI2FjdGl2ZXNpdGVsYW5ndWFnZSIpLnZhbCgpLGVtYWlsaWQ6YixlbWFpbHRvOmMsZGVhbGVyRW1haWw6ZixkZWFsZXJQaG9uZTprLHNvdXJjZVVSSTp3aW5kb3cubG9jYXRpb24uaHJlZn07JC5hamF4KHt0eXBlOiJQT1NUIix1cmw6Ii9hamF4L2FkZE1haWxUb1NlbmQ\/d3N3aWR0aD0wIixkYXRhOmR9KX0sZ2V0U3RvY2tOdW1iZXI6ZnVuY3Rpb24oKXtpZihhLnN0b2NrTnVtYmVyKXJldHVybiBhLnN0b2NrTnVtYmVyO2lmKDA8JCgiI2xhc3R2aWV3ZWRzdG9ja251bWJlciIpLmxlbmd0aCYmMDwkKCIjdGFyZ2V0UGFnZSIpLmxlbmd0aCYmWyJORVdDQVJERVRBSUxTIiwiQ0FSREVUQUlMUyIsIlBST01PIiwiVkVISUNMRUVWQUwiXS5pbmNsdWRlcygkKCIjdGFyZ2V0UGFnZSIpLnZhbCgpKSl7dmFyIGI9CiQoIiNsYXN0dmlld2Vkc3RvY2tudW1iZXIiKS52YWwoKTtpZigyPGIubGVuZ3RoKXt2YXIgZD1iLmluZGV4T2YoIihTdG9jayIpOy0xPGQmJihiPWIuc3Vic3RyKGQrNyksZD1iLmluZGV4T2YoIikiKSwtMTxkJiYoYj1iLnN1YnN0cigwLGQpLnRyaW0oKSkpO2IrPSIifWVsc2UgYj0iIn1lbHNlIGI9Z2V0UGFyYW1ldGVyQnlOYW1lKCJzdG9ja25vIil8fCIiO3JldHVybiBiLnRyaW0oKX0sZ2V0VlBEVXJsRnJvbVN0b2NrOmZ1bmN0aW9uKCl7dmFyIGI9IkVOR0xJU0giPT0kKCIjYWN0aXZlc2l0ZWxhbmd1YWdlIikudmFsKCk\/JCgiI2xhc3R2aWV3ZWR5ZWFyIikudmFsKCkrIiAiKyQoIiNsYXN0dmlld2VkbWFrZSIpLnZhbCgpKyIgIiskKCIjbGFzdHZpZXdlZG1vZGVsIikudmFsKCkrIiAiKyQoIiNsYXN0dmlld2Vkc3RvY2tudW1iZXIiKS52YWwoKTokKCIjbGFzdHZpZXdlZG1ha2UiKS52YWwoKSsiICIrJCgiI2xhc3R2aWV3ZWRtb2RlbCIpLnZhbCgpKyIgIiskKCIjbGFzdHZpZXdlZHllYXIiKS52YWwoKSsKIiAiKyQoIiNsYXN0dmlld2Vkc3RvY2tudW1iZXIiKS52YWwoKTt0cnl7dmFyIGQ9YS5nZXRTdG9ja051bWJlcigpLGM9IiIsZj0iRU5HTElTSCI9PSQoIiNhY3RpdmVzaXRlbGFuZ3VhZ2UiKS52YWwoKT8idXNlZCI6Im9jY2FzaW9uIixrPWUoImhyZWYiKSxtPWUoInByb3RvY29sIiksbj1rLnJlcGxhY2UobSsiLy8iLCIiKS5zcGxpdCgiLyIpLHQ9blswXSxyPWsuaW5kZXhPZigiLWlkIik7aWYoInVuZGVmaW5lZCI9PT10eXBlb2YgcGFnZXx8IkJVSUxEQU5EUFJJQ0UiIT1wYWdlJiYiTkVXQ0FSREVUQUlMUyIhPXBhZ2UpaWYoLTE8cil7dmFyIHY9cGFyc2VJbnQoay5zdWJzdHIociszKS5yZXBsYWNlKCIuaHRtbCIsIiIpLDEwKTtpZighaXNOYU4odikmJjA8dil7dmFyIHE9bltuLmxlbmd0aC0xXTstMTxxLmluZGV4T2YodikmJihjPSc8YSBocmVmPSInK20rIi8vIit0KyIvIitmKyIvIitxKyJcIiB0YXJnZXQ9J19ibGFuayc+IitiKyI8L2E+Iil9fWVsc2UiIiE9PWEudHJpbSYmCihiPSJFTkdMSVNIIj09JCgiI2FjdGl2ZXNpdGVsYW5ndWFnZSIpLnZhbCgpPyQoIiNsYXN0dmlld2VkeWVhciIpLnZhbCgpKyIgIiskKCIjbGFzdHZpZXdlZG1ha2UiKS52YWwoKSsiICIrJCgiI2xhc3R2aWV3ZWRtb2RlbCIpLnZhbCgpKyIgIithLnRyaW06JCgiI2xhc3R2aWV3ZWRtYWtlIikudmFsKCkrIiAiKyQoIiNsYXN0dmlld2VkbW9kZWwiKS52YWwoKSsiICIrYS50cmltKyIgIiskKCIjbGFzdHZpZXdlZHllYXIiKS52YWwoKSk7ZWxzZSIiIT09YS50cmltJiYoYj0iRU5HTElTSCI9PSQoIiNhY3RpdmVzaXRlbGFuZ3VhZ2UiKS52YWwoKT8kKCIjbGFzdHZpZXdlZHllYXIiKS52YWwoKSsiICIrJCgiI2xhc3R2aWV3ZWRtYWtlIikudmFsKCkrIiAiKyQoIiNsYXN0dmlld2VkbW9kZWwiKS52YWwoKSsiICIrYS50cmltOiQoIiNsYXN0dmlld2VkbWFrZSIpLnZhbCgpKyIgIiskKCIjbGFzdHZpZXdlZG1vZGVsIikudmFsKCkrIiAiK2EudHJpbSsiICIrJCgiI2xhc3R2aWV3ZWR5ZWFyIikudmFsKCkpLApjPSc8YSBocmVmPSInK2srIlwiIHRhcmdldD0nX2JsYW5rJz4iK2IrIjwvYT4iO2lmKCIiPT1jJiYyPGQubGVuZ3RoKXt2YXIgcD0kKCIjdG9wc2l0ZWlkIikudmFsKCksaD0iRU5HTElTSCI9PSQoIiNhY3RpdmVzaXRlbGFuZ3VhZ2UiKS52YWwoKT8iZW4iOiJmciI7JC5hamF4KHt0eXBlOiJHRVQiLGFzeW5jOiExLGRhdGFUeXBlOiJqc29uIix1cmw6Ii8iK2grIi9waHAvZ2V0VVJMRnJvbVN0b2NrLnBocD9zaXRlSUQ9IitwKyImc3RvY2s9IitkLHN1Y2Nlc3M6ZnVuY3Rpb24obCl7Im9iamVjdCI9PXR5cGVvZiBsJiZudWxsIT1sJiZ2b2lkIDAhPWwubWFrZSYmKGM9JzxhIGhyZWY9IicrbSsiLy8iK3QrIi8iK2YrIi8iKyhsLm1ha2UrIi0iK2wubW9kZWwrIi0iK2wueWVhcisiLWlkIitsLmlkKyIuaHRtbFwiIHRhcmdldD0nX2JsYW5rJz4iKStsLmZ1bGwrIjwvYT4iKX19KX0iIiE9YyYmKGI9Yyl9Y2F0Y2gobCl7Y29uc29sZS5sb2cobCl9cmV0dXJuIGJ9LHNldFNlbmRBbmREZXBhcnRtZW50T3ZlcnJpZGU6ZnVuY3Rpb24oYil7ZnVuY3Rpb24gZCh2LApxKXswPHYubGVuZ3RoJiYiIiE9PXYudmFsKCkmJihiLnNlbmRUbz12LnZhbCgpKTswPHEubGVuZ3RoJiYiIiE9PXEudmFsKCkmJihiLnNlbmRUb0FERkZvcm1hdD1xLnZhbCgpKX1pZigwIT0kKCIjaXNHZW5lcmljU2VhcmNoUGFnZSIpLmxlbmd0aCYmInRydWUiPT09JCgiI2lzR2VuZXJpY1NlYXJjaFBhZ2UiKS52YWwoKSl7c3dpdGNoKGEubWFpbElEKXtjYXNlICJtZW51U2VydmljZSI6Y2FzZSAibWVudUNvbnRhY3RVcyI6Y2FzZSAiaGVhZGVyU2VydmljZSI6cmV0dXJufXZhciBjPSQoIiNDVVNUT01fU0VORF9MRUFEIik7aWYoMCE9PWMubGVuZ3RoJiYwIT09Yy52YWwoKSYmIm51bGwiIT09Yy52YWwoKSl7Yi5kZXBhcnRtZW50PWMudmFsKCkudG9VcHBlckNhc2UoKTt2YXIgZj0kKCIjbmV3RW1haWwiKSxrPSQoIiNuZXdBZGZFbWFpbCIpLG09JCgiI3RleHRTZW5kVG9FbWFpbCIpLG49JCgiI3RleHRTZW5kVG9FbWFpbEFERiIpLHQ9JCgiI2ZpbmFuY2VFbWFpbCIpLHI9JCgiI2ZpbmFuY2VBZGZFbWFpbCIpOwpzd2l0Y2goYy52YWwoKSl7Y2FzZSAibmV3IjpkKGYsayk7YnJlYWs7Y2FzZSAidXNlZCI6ZChtLG4pO2JyZWFrO2Nhc2UgImZpbmFuY2UiOmQodCxyKX19fX0sZ2V0SnNvbk9iamVjdDpmdW5jdGlvbigpe2EucmVjYXB0Y2hhLnNldFJlc3BvbnNlKCk7IiI9PWEudHJpbSYmJCgiI3BvcHVwdHJpbSIpLmxlbmd0aCYmInskUE9QVVBUUklNfSIhPSQoIiNwb3B1cHRyaW0iKS52YWwoKSYmKGEudHJpbT0kKCIjcG9wdXB0cmltIikudmFsKCkpO3ZhciBiPXt9LGQ9ZnVuY3Rpb24oeil7dHJ5e3JldHVybiBkZWNvZGVVUklDb21wb25lbnQoKG51bGwhPUNvb2tpZXMuZ2V0KHopJiYidW5kZWZpbmVkIiE9dHlwZW9mIENvb2tpZXMuZ2V0KHopP2VzY2FwZShDb29raWVzLmdldCh6KSk6IiIpKyIiLnJlcGxhY2UoL1wrL2csIiUyMCIpKX1jYXRjaChDKXtyZXR1cm4obnVsbCE9Q29va2llcy5nZXQoeikmJiJ1bmRlZmluZWQiIT10eXBlb2YgQ29va2llcy5nZXQoeik\/ZXNjYXBlKENvb2tpZXMuZ2V0KHopKToKIiIpKyIiLnJlcGxhY2UoL1wrL2csIiUyMCIpfX0sYz1kKCJyZWxhbmNlSUQiKSxmPWQoInV0bV9zb3VyY2UiKSxrPWQoInV0bV9jYW1wYWlnbiIpLG09YS5kZWNvZGVVUkxSZWN1cnNpdmVseShkKCJ1dG1fa2V5d29yZCIpKSxuPWQoInV0bV9sYW5kaW5nX2Zvb3RlciIpLHQ9ZCgidXRtX3NvdXJjZV9yZXRhcmdldGluZyIpLHI9ZCgidXRtX2NhbXBhaWduX3JldGFyZ2V0aW5nIiksdj0iRU5HTElTSCI9PSQoIiNhY3RpdmVzaXRlbGFuZ3VhZ2UiKS52YWwoKT8iS2V5d29yZCI6Ik1vdC1jbCYjMjMzOyIscT0wPG0ubGVuZ3RoPyJbICIrdisiOiAiK20rIl0iOiIiLHA9MDxuLmxlbmd0aD8iW0Rlc3RpbmF0aW9uOiAiK2QyY21lZGlhLmdldEh0dHBUZXh0KCkrIjovLyIrd2luZG93LmxvY2F0aW9uLmhvc3QrbisiXSI6IltEZXN0aW5hdGlvbjogIitkMmNtZWRpYS5nZXRIdHRwVGV4dCgpKyI6Ly8iK3dpbmRvdy5sb2NhdGlvbi5ob3N0K24rIiAuXSI7dj1kKCJsb2NfaW50ZXJlc3QiKTtkPQpkKCJsb2NfcGh5c2ljYWwiKTt2YXIgaD12P2Bsb2NfaW50ZXJlc3Q9JHt2fWA6IiIsbD1kP2Bsb2NfcGh5c2ljYWw9JHtkfWA6IiIsdT0kKCJib2R5IikuaGFzQ2xhc3MoIkVOR0xJU0giKT8iT3JnYW5pYyI6Ik9yZ2FuaXF1ZSI7cT0wPGYubGVuZ3RoP2Ake2Z9IC0gJHtrfSAke3F9ICR7aH0gJHtsfWA6dTtwPWQyY21lZGlhLmNhcGl0YWxpc2VGaXJzdExldHRlck9mRXZlcnlXb3JkKHEpKyIgIitwO2w9IiI7aD1hLmdldFN0b2NrTnVtYmVyKCk7IiIhPWgmJihsPSIoU3RvY2s6IithLmdldFN0b2NrTnVtYmVyKCkrIikiKTt1PXtuZXc6IkVOR0xJU0giPT1zaXRlUGFnZS5sYW5nPyJuZXciOiJuZXVmIixuZXdpbnY6IkVOR0xJU0giPT1zaXRlUGFnZS5sYW5nPyJuZXciOiJuZXVmIix1c2VkOiJFTkdMSVNIIj09c2l0ZVBhZ2UubGFuZz8idXNlZCI6ImQnb2NjYXNpb24ifTthLmJvZHk9YS5ib2R5LnJlcGxhY2UoL3tcJFVUTURFVEFJTFN9L2cscCk7YS5ib2R5PWEuYm9keS5yZXBsYWNlKC97XCRVU0VSTkFNRX0vZywKYS51c2VyRmlyc3ROYW1lKTthLmJvZHk9YS5ib2R5LnJlcGxhY2UoL3tcJFVTRVJQT1NUQUx9L2csYS51c2VyUG9zdGFsLnRvVXBwZXJDYXNlKCkpO2EuYm9keT1hLmJvZHkucmVwbGFjZSgve1wkVVRNREVUQUlMU30vZywiIik7YS5ib2R5PWEuYm9keS5yZXBsYWNlKC97XCRGT09URVJ9L2csIiIpO2EuYm9keT1hLmJvZHkucmVwbGFjZSgve1wkRU1BSUxCVUlMREFORFBSSUNFfS9nLGEuYmFuZHBMaW5rKCkpO2EuYm9keT1hLmJvZHkucmVwbGFjZSgve1wkU1RPQ0tOVU1CRVJMQUJFTH0vZyxsKTthLmJvZHk9YS5ib2R5LnJlcGxhY2UoL3tcJFNUT0NLTlVNQkVSfS9nLGwpO2EuYm9keT1hLmJvZHkucmVwbGFjZSgve1wkVkVISUNMRV9DT05ESVRJT059L2csdVthLmNvbmRpdGlvbi50b0xvd2VyQ2FzZSgpXSk7aWYoIiIhPT1hLmJvZHkpe3ZhciB3PSQoJ2lucHV0W2RhdGEtZm9ydmFyPSJPVkVSV1JJVFRFUkRFQUxFUiJdJykudmFsKCkmJiQoJ2lucHV0W2RhdGEtZm9ydmFyPSJPVkVSV1JJVFRFUkRFQUxFUiJdJykubGVuZ3RoPwokKCdpbnB1dFtkYXRhLWZvcnZhcj0iT1ZFUldSSVRURVJERUFMRVIiXScpLnZhbCgpOiIiO2w9IiIhPSQoJ2lucHV0W2RhdGEtZm9ydmFyPSJERUFMRVIiXScpLnZhbCgpJiYkKCdpbnB1dFtkYXRhLWZvcnZhcj0iREVBTEVSIl0nKS5sZW5ndGg\/JCgnaW5wdXRbZGF0YS1mb3J2YXI9IkRFQUxFUiJdJykudmFsKCk6JCgiI2hpZGRlbkRlYWxlck5hbWUiKS52YWwoKTt3PXchPWwmJiIiIT13P3c6bDthLmRlYWxlck5hbWU9YS5kZWFsZXJOYW1lP2EuZGVhbGVyTmFtZTp3fWEuYm9keT1hLmJvZHkucmVwbGFjZSgieyRERUFMRVJOQU1FfSIsYS5kZWFsZXJOYW1lKTthLmJvZHk9YS5ib2R5LnJlcGxhY2UoInskQ1VTVE9NVkVISUNMRUlOVEVSRVNUfSIsYS5tYWtlKyIgIithLm1vZGVsKyIgIithLnllYXIpO2EubGVhZFJlcXVlc3RUeXBlJiYoYS5ib2R5PWEuYm9keS5yZXBsYWNlQWxsKCJ7JFJFUVVFU1R9IixhLmxlYWRSZXF1ZXN0VHlwZSksYS5zdWJqZWN0PWEuc3ViamVjdC5yZXBsYWNlQWxsKCJ7JFJFUVVFU1R9IiwKYS5sZWFkUmVxdWVzdFR5cGUpLGEubGVhZFJlcXVlc3RUeXBlPSIiKTtib2R5TG93ZXI9YS5ib2R5LnRvTG93ZXJDYXNlKCk7Zm9yKHU9MDstMTxib2R5TG93ZXIuaW5kZXhPZigicmVtb3ZlZW1wdHkiKTspe2w9Ym9keUxvd2VyLmluZGV4T2YoInJlbW92ZWVtcHR5Iik7aWYoLTE9PWwpYnJlYWs7cnBsRW5kPWJvZHlMb3dlci5pbmRleE9mKCI8YnI+IixsKTtycGxTdGFydD1ib2R5TG93ZXIubGFzdEluZGV4T2YoIjxicj4iLGwpO2lmKC0xPT1ycGxFbmR8fC0xPT1ycGxTdGFydClicmVhaztycGxTdHJpbmc9YS5ib2R5LnN1YnN0cmluZyhycGxTdGFydCxycGxFbmQpO2EuYm9keT1hLmJvZHkucmVwbGFjZShycGxTdHJpbmcsIiIpO2JvZHlMb3dlcj1hLmJvZHkudG9Mb3dlckNhc2UoKTt1Kys7aWYoNTA8dSlicmVha311PWEuZ2V0VlBEVXJsRnJvbVN0b2NrKCk7MD09dS50cmltKCkubGVuZ3RoJiYobD0kKCdpbnB1dFtuYW1lPSJzZWFyY2hlZHZlaGljbGUiXScpLmZpbHRlcigiOnZpc2libGU6Zmlyc3QiKSwKdT1sLmxlbmd0aD9sLnZhbCgpOiIiKTthLnBheW1lbnRWZWhpY2xlJiYwPGEucGF5bWVudFZlaGljbGUubGVuZ3RoJiYodT1hLnBheW1lbnRWZWhpY2xlKTsiIj09YS5jYXJpZCYmJCgiI3RvcGNhcmlkIikubGVuZ3RoJiYoYS5jYXJpZD0kKCIjdG9wY2FyaWQiKS52YWwoKSk7IiI9PWEudmluJiYkKCIjcGhvbmV2aW4iKS5sZW5ndGgmJihhLnZpbj0kKCIjcGhvbmV2aW4iKS52YWwoKSk7bD1hLmJvZHkuaW5kZXhPZigiPHNwYW4gaWQ9J3BoU0VBUkNIVkVISUNMRSc+Iik7aWYoLTE8bCl7dmFyIHg9YS5ib2R5LnN1YnN0cihsKzI3KS5pbmRleE9mKCI8L3NwYW4+Iik7LTE8eCYmKGEuYm9keT1hLmJvZHkuc3Vic3RyKDAsbCkrdSthLmJvZHkuc3Vic3RyKGwreCsyNys3KSl9YS5ib2R5PWEuYm9keS5yZXBsYWNlKC88c3BhbiBpZD0ncGhTRUFSQ0hWRUhJQ0xFJz4vZywiIik7YS5ib2R5PWEuYm9keS5yZXBsYWNlKC88XC9zcGFuPi9nLCIiKTthLmJvZHk9YS5ib2R5LnJlcGxhY2UoL3tcJFNFQVJDSEVEVkVISUNMRX0vZywKdSk7aWYoIjEiPT0kKCIjaGFzVkJEQ0VuYWJsZWQiKS52YWwoKSl7bD0iIjt1PTA7eD0iIjtDb29raWVzLmdldCgiRDJDVVVJRCIpO2Zvcih2YXIgeSBpbiBzZXNzaW9uU3RvcmFnZSlpZigwPT15LmluZGV4T2YoIlZEUE1WQk5QLSIpKXt2YXIgQj1zZXNzaW9uU3RvcmFnZS5nZXRJdGVtKHkpO0I+PXgmJih4PUIsbD15LnJlcGxhY2UoIlZEUE1WQk5QLSIsIiIpKX1pZigiIj09bCYmKHg9c2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgiZDJjX1ZEUE1WIiksbnVsbCE9eCkpZm9yKHkgaW4geD1KU09OLnBhcnNlKHgpLHgpQj14W3ldLDI8PUImJkI+dSYmKHU9QixsPXkpOyIiIT1sJiYtMT09YS5ib2R5LmluZGV4T2YoIltWQkRDLUhPVF0iKSYmLTE9PWEuYm9keS5pbmRleE9mKCJbVkJEQy1NWVNdIikmJih5PXdpbmRvdy5sb2NhdGlvbi5wcm90b2NvbCsiLy8iK3dpbmRvdy5sb2NhdGlvbi5ob3N0K2wsYS5ib2R5Kz0nW1ZCREMtSE9UXSA8YSBocmVmPSInK3krJyI+Jyt5KyI8L2E+Iil9eT0kKCIjY3VycmVudFN0YXR1cyIpLnZhbCgpOwp5PSJ1bmRlZmluZWQiPT10eXBlb2YgeT8idXNlZCI6eS50b0xvd2VyQ2FzZSgpO2w9JCgiI3NlbmRFbWFpbFRvQWxsRGVhbGVycyIpO2w9bC5sZW5ndGgmJjE9PWwudmFsKCk7bD0kKCIjaGFzTXVsdGlwbGVEZWFsZXJzIik7bD1sLmxlbmd0aCYmMT09bC52YWwoKTtsPSQoIiN0b3BjYXJpZCIpO2w9MDxsLmxlbmd0aD8kKCIjdG9wY2FyaWQiKS52YWwoKToiIjtsPSJ1bmRlZmluZWQiIT10eXBlb2YgJCgiI2JyYW5kRW1haWxBZGZPdmVycmlkZSIpLnZhbCgpPyQoIiNicmFuZEVtYWlsQWRmT3ZlcnJpZGUiKS52YWwoKToiIjt1PSJ1bmRlZmluZWQiIT10eXBlb2YgJCgiI2JyYW5kRW1haWxBZGZPdmVycmlkZSIpLnZhbCgpPyQoIiNicmFuZEVtYWlsQWRmT3ZlcnJpZGUiKS52YWwoKToiIjsidW5kZWZpbmVkIiE9dHlwZW9mICQoIiNuZXdTZWN0aW9uT3ZlcnJpZGUiKS52YWwoKSYmJCgiI25ld1NlY3Rpb25PdmVycmlkZSIpLnZhbCgpOyJ1bmRlZmluZWQiIT10eXBlb2YgJCgiI25ld1NlY3Rpb25FbWFpbCIpLnZhbCgpJiYKJCgiI25ld1NlY3Rpb25FbWFpbCIpLnZhbCgpOyJ1bmRlZmluZWQiIT10eXBlb2YgJCgiI25ld1NlY3Rpb25BZGZFbWFpbCIpLnZhbCgpJiYkKCIjbmV3U2VjdGlvbkFkZkVtYWlsIikudmFsKCk7c3dpdGNoKCEwKXtjYXNlIDU8bC5sZW5ndGgmJiJuZXciPT15JiYhYS5oYXNTZWxlY3RlZE11bHRpQWRkcmVzczphLnNlbmRUbz1sLGEuc2VuZFRvQURGRm9ybWF0PTU8dS5sZW5ndGg\/dTpsfWIubGFuZ3VhZ2U9JCgiI2FjdGl2ZXNpdGVsYW5ndWFnZSIpLnZhbCgpOyJmdW5jdGlvbiI9PXR5cGVvZiBjbGVhbkFuZEVuY29kZVRleHQ\/KGIuc3ViamVjdD1jbGVhbkFuZEVuY29kZVRleHQoYS5zdWJqZWN0KSxiLmJvZHk9Y2xlYW5BbmRFbmNvZGVUZXh0KGEuYm9keSkpOihiLnN1YmplY3Q9JC5iYXNlNjQuZW5jb2RlKGEuc3ViamVjdCksYi5ib2R5PSQuYmFzZTY0LmVuY29kZShhLmJvZHkpKTtjbGVhbkVtYWlsRGVsaW1pdGVyPWZ1bmN0aW9uKHope3ZhciBDPSIiOyJ1bmRlZmluZWQiIT10eXBlb2YgeiYmCm51bGwhPXomJnoubGVuZ3RoJiYoQz16LnNwbGl0KCI7Iikuam9pbigiLCIpKTtyZXR1cm4gQ307InVzZWRjYXJzLmh0bWwiPT0kKCIjUEFHRUlEIikudmFsKCkmJiJORVciPT1hLmdldERlcCgpJiZhLnNlbmRUbz09JCgiI1NJVEVVU0VERU1BSUwiKS52YWwoKSYmYS5zZW5kVG9BREZGb3JtYXQ9PSQoIiNTSVRFVVNFREVNQUlMQURGIikudmFsKCkmJihhLnNlbmRUbz0kKCIjU0lURU5FV0VNQUlMIikudmFsKCksYS5zZW5kVG9BREZGb3JtYXQ9JCgiI1NJVEVORVdFTUFJTEFERiIpLnZhbCgpKTtiLnNlbmRUbz1hLnNlbmRUbztiLnNlbmRUb0FERkZvcm1hdD1jbGVhbkVtYWlsRGVsaW1pdGVyKGEuc2VuZFRvQURGRm9ybWF0KTtiLnNlbGVjdGVkU2VuZFRvPWEuc2VsZWN0ZWRTZW5kVG87Yi5zZWxlY3RlZFNlbmRUb0FERkZvcm1hdD1hLnNlbGVjdGVkU2VuZFRvQURGRm9ybWF0O2IuZW1haWxMaXN0U3VmZml4PSIiOyQoIiNzaXRlY29tcGlsZWlkIikubGVuZ3RoJiYoYi5lbWFpbExpc3RTdWZmaXg9CiQoIiNzaXRlY29tcGlsZWlkIikudmFsKCkpO2IubGVhZEludm9rZXI9YS5sZWFkSW52b2tlcnx8ImdlbmVyaWMiO2IuZGlnaXRhbFJldGFpbFNJRD1hLmRpZ2l0YWxSZXRhaWxTSUR8fCIiO2IuY29uc2VudERlYWxlcj1hLmNvbnNlbnREZWFsZXI7Yi5jb25zZW50T0VNPWEuY29uc2VudE9FTTtiLnVzZXJFbWFpbD1hLnVzZXJFbWFpbDtiLnRyYWRlaW49YS50cmFkZWluO2IucG9wdXBkaXY9YS5wb3B1cGRpdjtiLnVzZXJBdHRhY2htZW50UGF0aD1hLnVzZXJBdHRhY2htZW50UGF0aDtiLnVzZXJGaXJzdE5hbWU9YS51c2VyRmlyc3ROYW1lO2IudXNlckxhc3ROYW1lPWEudXNlckxhc3ROYW1lO2IubGljZW5zZW51bT1hLmxpY2Vuc2VudW07Yi51c2VyUGhvbmU9YS51c2VyUGhvbmU7Yi5waG9uZVZhbGlkYXRpb25BdHRlbXB0cz1hLnBob25lVmFsaWRhdGlvbkF0dGVtcHRzO2IucGhvbmVNYW5kYXRvcnk9YS5waG9uZU1hbmRhdG9yeTtiLnVzZXJQb3N0YWw9YS51c2VyUG9zdGFsLnRvVXBwZXJDYXNlKCl8fAphLmNvbnRhY3RaaXAudG9VcHBlckNhc2UoKTtiLnVzZXJBZGRyZXNzPWEudXNlckFkZHJlc3N8fGEuY29udGFjdEFkZHJlc3M7Yi5wcm92aW5jZT1hLmNvbnRhY3RQcm92aW5jZTtiLmJpcnRoZGF0ZT1hLmJpcnRoZGF0ZTtiLnNlbmRGcm9tPWEuc2VuZEZyb207Yi5tYWlsSUQ9YS5tYWlsSUQ7Yi5pc0NUQT1hLmlzQ1RBO2IuYnV0dG9uVGV4dD1hLmJ1dHRvblRleHQ7Yi5mcm9tVVJMPXdpbmRvdy5sb2NhdGlvbi5ocmVmO2IubWFrZT1hLm1ha2V8fCIiO2IubW9kZWw9YS5tb2RlbHx8IiI7Yi50cmltPWEudHJpbXx8IiI7Yi52aW49YS52aW58fCIiO2IucHJpY2U9YS5wcmljZXx8IiI7Yi55ZWFyPWEueWVhcnx8IiI7Yi52ZWhpY2xlVHlwZT1hLnZlaGljbGVUeXBlfHwiIjtiLnN0b2NrTnVtYmVyPWg7Yi5jYXJpZD1hLmNhcmlkfHwiIjtiLmNvbmRpdGlvbj1hLmNvbmRpdGlvbjtiLmlzbW9iaWxlc2l0ZT1hLmlzbW9iaWxlc2l0ZTtiLmlzQW1wPSJOTyI7Yi5yZWZlcmVyPSQoIiN0b3ByZWZlcmVyIikudmFsKCk7CmIuc2l0ZWlkPSQoIiN0b3BzaXRlaWQiKS52YWwoKTtiLmRlYWxlcmlkPWEuZGVhbGVyaWR8fCIiO2Iub2VtQ2VydGlmaWNhdGlvbj0kKCIjb2VtQ2VydGlmaWNhdGlvbiIpLnZhbCgpfHxudWxsO2IudXRtX3NvdXJjZT1mO2IucmVsYW5jZUlEPWM7Yi51dG1fY2FtcGFpZ249aztiLnV0bV9rZXl3b3JkPW07Yi51dG1fbGFuZGluZz1uO2IudXRtX2RldGFpbHM9cTtiLnV0bV9zb3VyY2VfcmV0YXJnZXRpbmc9dDtiLnV0bV9jYW1wYWlnbl9yZXRhcmdldGluZz1yO2IubG9jX2ludGVyZXN0PXY7Yi5sb2NfcGh5c2ljYWw9ZDtiLnBvcHVwT2ZmZXJUeXBlPWEucG9wdXBPZmZlclR5cGU7Yi5mcm9tRmFjZWJvb2s9YS5mcm9tRmFjZWJvb2s7Yi5kZXRhaWxzRlI9YS5jb25zZW50RGV0YWlsc0ZSO2IuZGV0YWlsc0VOPWEuY29uc2VudERldGFpbHNFTjtiLmZyb21BQT1hLmZyb21BQTtiLm93bmVySUQ9YS5vd25lcklEO2IubGVhZFRpdGxlVUlUZXh0PWEubGVhZFRpdGxlVUlUZXh0O2Iuc21zPQphLnNtcztiLm9uQWZ0ZXJMZWFkQ3JlYXRlZD1hLm9uQWZ0ZXJMZWFkQ3JlYXRlZDtiLnRyYWRlaW5iYXJSZWdpc3RlclBhcnRpYWxJRD1hLnRyYWRlaW5iYXJSZWdpc3RlclBhcnRpYWxJRHx8IiI7InVuZGVmaW5lZCIhPT10eXBlb2YgY2xpZW50U3RvcmFnZSYmKCIiIT1hLnVzZXJGaXJzdE5hbWUmJmNsaWVudFN0b3JhZ2Uuc2V0KCJmaXJzdG5hbWUiLGEudXNlckZpcnN0TmFtZSksIiIhPWEudXNlckxhc3ROYW1lJiZjbGllbnRTdG9yYWdlLnNldCgibGFzdG5hbWUiLGEudXNlckxhc3ROYW1lKSwiIiE9YS51c2VyRW1haWwmJmNsaWVudFN0b3JhZ2Uuc2V0KCJlbWFpbCIsYS51c2VyRW1haWwpLCIiIT1hLnVzZXJQaG9uZSYmY2xpZW50U3RvcmFnZS5zZXQoInBob25lIixhLnVzZXJQaG9uZSkpO2IuY2hhdGJvdEJvb3N0SWQ9Z2V0Q29va2llRDJjKCJkMmNjaGF0Ym90aWQiKTtiLnN0eWxlaWQ9JCgiI3N0eWxlSWRJblVzZSIpLmxlbmd0aD8kKCIjc3R5bGVJZEluVXNlIikudmFsKCk6CiQoIiNhY3RpdmVTdHlsZUlEIikubGVuZ3RoPyQoIiNhY3RpdmVTdHlsZUlEIikudmFsKCk6IiI7InVuZGVmaW5lZCIhPT10eXBlb2Ygd2luZG93LmFkcF9mb3VyZXllc19pZCYmd2luZG93LmFkcF9mb3VyZXllc19pZD8oYi5Vbml0ZVdlYnNpdGVDdXN0b21lcklkPXdpbmRvdy5hZHBfZm91cmV5ZXNfaWQsY29uc29sZS5sb2coIkQyVUQgLSBlbWFpbEhhbmRsZXIgSlMgcGFzc2VkIix3aW5kb3cuYWRwX2ZvdXJleWVzX2lkKSk6Y29uc29sZS5sb2coIkQyVUQgLSBlbWFpbEhhbmRsZXIgSlMgLSB3aW5kb3cuYWRwX2ZvdXJleWVzX2lkIGlmIHdhcyB0cmlnZ2VyZWQiLHdpbmRvdy5hZHBfZm91cmV5ZXNfaWQpO2Eub25BZnRlckxlYWRDcmVhdGVkJiYoYi5vbkFmdGVyTGVhZENyZWF0ZWQuZnJvbT0iIixhLnNlbmRUbz1hLnNlbmRUb3x8IiIsYz1hLnNlbmRUby5zcGxpdCgiOyIpLGNbMF0udHJpbSgpLmxlbmd0aD9iLm9uQWZ0ZXJMZWFkQ3JlYXRlZC5mcm9tPWNbMF0udHJpbSgpOihjPQphLnNlbmRUb0FERkZvcm1hdC5zcGxpdCgiLCIpLGNbMF0udHJpbSgpLmxlbmd0aCYmKGIub25BZnRlckxlYWRDcmVhdGVkLmZyb209Y1swXS50cmltKCkpKSk7Yi51c2VyQWdlbnQ9JCgiI3R4dFVzZXJBZ2VudCIpLnZhbCgpO2IuZ3JlY2FwdGNoYVJlc3BvbnNlVG9rZW49YS5ncmVjYXB0Y2hhUmVzcG9uc2VUb2tlbjtiLmNvbnRhY3RJRD1hLmNvbnRhY3RJRDtiLmNvbnRhY3ROQVM9YS5jb250YWN0TkFTO2IuY29udGFjdEJpcnRoPWEuY29udGFjdEJpcnRoO2IuZGVhbGVyTmFtZT1hLmRlYWxlck5hbWU\/YS5kZWFsZXJOYW1lOnc7Yi5hbGxvd19zaGFyZV9wZXJzb25hbF9kYXRhPWEuYWxsb3dfc2hhcmVfcGVyc29uYWxfZGF0YTtiLnByZWZlcnJlZF9jb250YWN0PWEucHJlZmVycmVkX2NvbnRhY3Q7Yi51dG1kZXRhaWxzVG9SZXBsYWNlPXA7IiIhPWEuZ2VvbG9jX3N0YXR1cyYmKGIuZ2VvbG9jX3N0YXR1cz1hLmdlb2xvY19zdGF0dXMsYi5nZW9sb2NfbGF0PWEuZ2VvbG9jX2xhdCwKYi5nZW9sb2NfbG9uZz1hLmdlb2xvY19sb25nLGIuZ2VvbG9jX2FjY3VyYWN5PWEuZ2VvbG9jX2FjY3VyYWN5LCJmdW5jdGlvbiI9PXR5cGVvZiBjbGVhbkFuZEVuY29kZVRleHQ\/KGIuZ2VvbG9jX3RyYWNrX3N0cj1jbGVhbkFuZEVuY29kZVRleHQoYS5nZW9sb2NfdHJhY2tfc3RyKSxiLmdlb2xvY19lbWFpbF9zdHI9Y2xlYW5BbmRFbmNvZGVUZXh0KGEuZ2VvbG9jX2VtYWlsX3N0cikpOihiLmdlb2xvY190cmFja19zdHI9JC5iYXNlNjQuZW5jb2RlKGEuZ2VvbG9jX3RyYWNrX3N0ciksYi5nZW9sb2NfZW1haWxfc3RyPSQuYmFzZTY0LmVuY29kZShhLmdlb2xvY19lbWFpbF9zdHIpKSk7IiIhPWEuY2FyMl9tYWtlJiYoYi5jYXIyX21ha2U9YS5jYXIyX21ha2UsYi5jYXIyX21vZGVsPWEuY2FyMl9tb2RlbCxiLmNhcjJfdHJpbT1hLmNhcjJfdHJpbSxiLmNhcjJfeWVhcj1hLmNhcjJfeWVhcixiLmNhcjJfY29sb3I9YS5jYXIyX2NvbG9yLGIuY2FyMl9vZG9tZXRlcj1hLmNhcjJfb2RvbWV0ZXIsCmIuY2FyMl92aW49YS5jYXIyX3ZpbixiLmNhcjJfdHJhbnNtaXNzb249YS5jYXIyX3RyYW5zbWlzc29uLGIuY2FyMl9kcml2ZXRyYWluPWEuY2FyMl9kcml2ZXRyYWluLGIuY2FyMl9mdWVsdHlwZT1hLmNhcjJfZnVlbHR5cGUpO2Iuc2VydmljZURhdGUxPWEuc2VydmljZURhdGUxfHwiIjtiLnNlcnZpY2VEYXRlMj1hLnNlcnZpY2VEYXRlMnx8IiI7Yi53YWl0aW5nT25TaXRlPWEud2FpdGluZ09uU2l0ZXx8IiI7Yi5jb21tZW50cz1hLmNvbW1lbnRzO2Euc2tpcEdldERlcD9iLmRlcGFydG1lbnQ9YS5kZXBhcnRtZW50OihiLmRlcGFydG1lbnQ9YS5nZXREZXAoKSxhLmRlcGFydG1lbnQ9YS5nZXREZXAoKSk7aWYoIlVTRUQiPT1iLmRlcGFydG1lbnQmJjA9PWEuZGVwYXJ0bWVudEJ5U3RvY2spe3ZhciBBPSQoJ2lucHV0W25hbWU9InNlYXJjaGVkdmVoaWNsZSJdJykuZmlsdGVyKCI6dmlzaWJsZTpmaXJzdCIpLnZhbCgpO2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgQSYmKEE9QS5zcGxpdCgiKFN0b2NrIiksCkFbMV0pKXt2YXIgRT0iVVNFRCI7QT1BWzFdLnJlcGxhY2UoIikiLCIiKS5yZXBsYWNlKCI6IiwiIikucmVwbGFjZSgiIyIsIiIpLnRyaW0oKS50b0xvd2VyQ2FzZSgpOyQuYWpheCh7dHlwZToiR0VUIixhc3luYzohMSxkYXRhVHlwZToianNvbiIsdXJsOiIvanMvanNvbi91c2VkQnlQcmljZUFzYy5qc29uIixzdWNjZXNzOmZ1bmN0aW9uKHopeyQuZWFjaCh6LGZ1bmN0aW9uKEMsRCl7aWYoRC5zbi50b0xvd2VyQ2FzZSgpPT1BKXJldHVybiBFPSIxIj09RC5pc25ld3x8IjEiPT1ELmlzZGVtbz8iTkVXIjoiVVNFRCIsITF9KTthLmRlcGFydG1lbnRCeVN0b2NrPUV9fSl9fSIiIT09YS5kZXBhcnRtZW50QnlTdG9jayYmITEhPT1hLmRlcGFydG1lbnRCeVN0b2NrJiYoYi5kZXBhcnRtZW50PWEuZGVwYXJ0bWVudEJ5U3RvY2spOyFiLmRlcGFydG1lbnR8fCJuZXciPT1iLmRlcGFydG1lbnQudG9Mb3dlckNhc2UoKSYmInVzZWQiPT1iLmRlcGFydG1lbnQudG9Mb3dlckNhc2UoKT9iLmNvbmRpdGlvbj0KYi5kZXBhcnRtZW50JiYibmV3Ij09Yi5kZXBhcnRtZW50LnRvTG93ZXJDYXNlKCk\/Ik5ldyI6IlVzZWQiOmIuY29uZGl0aW9uPSQoIiNjdXJyZW50U3RhdHVzIikubGVuZ3RoPyQoIiNjdXJyZW50U3RhdHVzIikudmFsKCk6InVua25vd24iO2IuZGVwYXJ0bWVudC50b0xvd2VyQ2FzZSgpIT1iLmNvbmRpdGlvbi50b0xvd2VyQ2FzZSgpJiYoYi5jb25kaXRpb249Yi5kZXBhcnRtZW50LnRvTG93ZXJDYXNlKCkpO251bGwhPWEuY3JlZGl0RGF0YSYmKGIuY3JlZGl0RGF0YT1hLmNyZWRpdERhdGEpO251bGwhPWEuZGVhbGVyQXBwb2ludG1lbnREYXRhJiYoYi5kZWFsZXJBcHBvaW50bWVudERhdGE9YS5kZWFsZXJBcHBvaW50bWVudERhdGEpOzA8JCgiI3B1cmNoYXNlX2ludGVudF9hbnN3ZXIiKS5sZW5ndGgmJihiLnB1cmNoYXNlX2ludGVudD1hLnB1cmNoYXNlX2ludGVudCxiLnB1cmNoYXNlX2ludGVudF9hbnN3ZXI9JCgiI3B1cmNoYXNlX2ludGVudF9hbnN3ZXIiKS52YWwoKSxiLnB1cmNoYXNlX2ludGVudF9ub19hbnN3ZXI9CiQoIiNwdXJjaGFzZV9pbnRlbnRfbm9fYW5zd2VyIikudmFsKCkpO2IucHVyY2hhc2VfaW50ZW50PWEuYXNrUHVyY2hhc2VJbnRlbnQ\/Yi5wdXJjaGFzZV9pbnRlbnQ\/Yi5wdXJjaGFzZV9pbnRlbnQ6LTE6ITE7JCgiI2N1cnJlbnRJdGVtVHlwZSIpLmxlbmd0aD9iLml0ZW1UeXBlPSQoIiNjdXJyZW50SXRlbVR5cGUiKS52YWwoKTpiLml0ZW1UeXBlPSIiO2EuYm9keSs9Ilx4M2MhLS0gSlMgVW5pcXVlIGlkOiIrTWF0aC5yb3VuZCg1RTMqTWF0aC5yYW5kb20oKSkrIi0tXHgzZSI7cmV0dXJuIGJ9LGdldERlcDpmdW5jdGlvbigpe3ZhciBiPShuZXcgRGF0ZSkuZ2V0RnVsbFllYXIoKSxkPS9cYihuZXd8bmV1ZnxuZXVmc3xjb25maWd1cmF0aW9uLWV0LXByaXh8YnVpbGQtYW5kLXByaWNlfGRlbW9zfGRlbW9uc3RyYXRldXJzfGNsZWFyYW5jZSlcYi8udGVzdCh3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUpLGM9L1xiKHVzZWR8b2NjYXNpb24pXGIvLnRlc3Qod2luZG93LmxvY2F0aW9uLnBhdGhuYW1lKTsKaWYoInVuZGVmaW5lZCIhPT10eXBlb2Ygd2luZG93LmdVc2VkU3JwQXBweiYmInVuZGVmaW5lZCIhPT10eXBlb2Ygd2luZG93LmdVc2VkU3JwQXBwei5maWx0ZXJJbnRlcmZhY2UmJiJmdW5jdGlvbiI9PT10eXBlb2Ygd2luZG93LmdVc2VkU3JwQXBwei5maWx0ZXJJbnRlcmZhY2UuZ2V0Q3VycmVudEZpbHRlclN0YXRlKXt2YXIgZj13aW5kb3cuZ1VzZWRTcnBBcHB6LmZpbHRlckludGVyZmFjZS5nZXRDdXJyZW50RmlsdGVyU3RhdGUoImNhdGVnb3J5Iik7aWYoITEhPT1mJiZmLmxlbmd0aClpZigxPT09Zi5sZW5ndGgmJjM9PT1mWzBdLnZhbHVlKWQ9ITAsYz0hMTtlbHNle3ZhciBrLG09MCxuPTA7Zm9yKGs9MDtrIT09Zi5sZW5ndGg7aysrKWZba10ubnVtPm0mJihtPWZba10ubnVtLG49ZltrXS52YWx1ZSk7MT09PW58fDI9PT1uPyhkPSExLGM9ITApOjM9PT1uJiYoZD0hMCxjPSExKX19Zj0wO2s9JCgnaW5wdXRbbmFtZT0ic2VhcmNoZWR2ZWhpY2xlIl0nKS5maWx0ZXIoIjpyZWFsbHlWaXNpYmxlOmZpcnN0Iik7CjA8ay5sZW5ndGgmJihrPWsudmFsKCkubWF0Y2goLzE5WzAtOV17Mn18MjBbMC05XXsyfS9nKSxudWxsIT1rJiYoZj1wYXJzZUludChrWzBdKSkpO2Z8fChmPWEueWVhcik7c3dpdGNoKGEubWFpbElEKXtjYXNlICJUaXJlc1JlcXVlc3QiOmNhc2UgIlBhcnRzUmVxdWVzdCI6cmV0dXJuIlBBUlRTIjtjYXNlICJTZXJ2aWNlUmVxdWVzdCI6Y2FzZSAiUmVjYWxscyI6Y2FzZSAiQm9keVNob3AiOmNhc2UgIm1lbnVTZXJ2aWNlIjpjYXNlICJoZWFkZXJTZXJ2aWNlIjpjYXNlICJFc3RoZXRpY1JlcXVlc3QiOnJldHVybiJTRVJWSUNFIjtjYXNlICJDcmVkaXRSZXF1ZXN0IjpjYXNlICJDcmVkaXRSZXF1ZXN0TW9iaWxlIjpjYXNlICJEZWFsZXJUcmFjayI6Y2FzZSAiQ3JlZGl0TXVsdGlzdGVwUmVxdWVzdCI6Y2FzZSAiQ3JlZGl0TXVsdGlzdGVwUmVxdWVzdDJuZENoYW5jZSI6Y2FzZSAiQ3JlZGl0TXVsdGlzdGVwUmVxdWVzdEluc3RhbnQiOmNhc2UgIkNyZWRpdFNjb3JlIjpjYXNlICJDcmVkaXRBcHBDYXJkIjpyZXR1cm4iRklOQU5DRSI7CmNhc2UgIkpvYk9mZmVyIjpyZXR1cm4iSFIiO2Nhc2UgIm1lbnVDb250YWN0VXMiOmlmKCIiIT09YS5kZXBhcnRtZW50KXJldHVybiBhLmRlcGFydG1lbnQudG9VcHBlckNhc2UoKTtpZigidW5kZWZpbmVkIiE9PXR5cGVvZiBtYWlsUXVpY2tFbWFpbC5kZXBhcnRtZW50JiYiIiE9PW1haWxRdWlja0VtYWlsLmRlcGFydG1lbnQpcmV0dXJuIG1haWxRdWlja0VtYWlsLmRlcGFydG1lbnQudG9VcHBlckNhc2UoKX1pZigwPGYpe2lmKGMmJmY+PWIrMSlyZXR1cm4iTkVXIjtpZighZCYmIWMpe2lmKGY+PWItMSlyZXR1cm4iTkVXIjtpZihmPGItMSlyZXR1cm4iVVNFRCJ9fXJldHVybiJjYXJkZXRhaWwuaHRtbCI9PSQoIiNQQUdFSUQiKS52YWwoKT8kKCIjZGVmYXVsdERlcGFydG1lbnQiKS52YWwoKTpjPyJVU0VEIjpkPyJORVciOiIiIT09YS5kZXBhcnRtZW50P2EuZGVwYXJ0bWVudDoidW5kZWZpbmVkIiE9dHlwZW9mICQoIiNwb3B1cERlcGFydG1lbnQiKS5hdHRyKCJpZCIpJiYkKCIjcG9wdXBEZXBhcnRtZW50IikudmFsKCkubGVuZ3RoPwokKCIjcG9wdXBEZXBhcnRtZW50IikudmFsKCk6InVuZGVmaW5lZCIhPXR5cGVvZiAkKCIjZGVmYXVsdERlcGFydG1lbnQiKS5hdHRyKCJpZCIpJiYkKCIjZGVmYXVsdERlcGFydG1lbnQiKS52YWwoKS5sZW5ndGg\/JCgiI2RlZmF1bHREZXBhcnRtZW50IikudmFsKCk6IlVTRUQifSxyZWFkeVRvU2VuZDpmdW5jdGlvbigpe3ZhciBiPWEuY3JlYXRlQ2hlY2tzdW0oKTtpZihhLmxhc3RDaGVja3N1bT09YikiZnVuY3Rpb24iPT10eXBlb2YgYS5vbkR1cGxpY2F0ZVNlbmQ\/YS5vbkR1cGxpY2F0ZVNlbmQuY2FsbCgpOiJ1bmRlZmluZWQiIT09dHlwZW9mIGRlYnVnJiZkZWJ1ZygiQ1JDIE1hdGNoIixhLmxhc3RDaGVja3N1bSxiKTtlbHNle2EubGFzdENoZWNrc3VtPWI7JCgnaW5wdXRbZGF0YS1mb3J2YXI9Ik9WRVJXUklUVEVSREVBTEVSIl0nKS5sZW5ndGgmJiIiIT0kKCdpbnB1dFtkYXRhLWZvcnZhcj0iT1ZFUldSSVRURVJERUFMRVIiXScpLnZhbCgpJiYkKCdpbnB1dFtkYXRhLWZvcnZhcj0iREVBTEVSIl0nKS5sZW5ndGgmJgokKCdpbnB1dFtkYXRhLWZvcnZhcj0iT1ZFUldSSVRURVJERUFMRVIiXScpLnZhbCgpIT0kKCdpbnB1dFtkYXRhLWZvcnZhcj0iREVBTEVSIl0nKS52YWwoKSYmKGI9JCgiYm9keSIpLmhhc0NsYXNzKCJGUkVOQ0giKT8iQ29uY2Vzc2lvbiBv77+9IGVzdCBzaXR177+9IGxlIHbvv71oaWN1bGU6ICI6IkRlYWxlciB3aGVyZSB0aGUgdmVoaWNsZSBpcyBsb2NhdGVkOiAiLGIrPSQoJ2lucHV0W2RhdGEtZm9ydmFyPSJPVkVSV1JJVFRFUkRFQUxFUiJdJykudmFsKCksYS5ib2R5PWEuYm9keS5yZXBsYWNlKCJ7JERFQUxFUl9TRU5EVE99IixiKSk7MDwkKCIjaXNtb2JpbGUiKS5sZW5ndGgmJihhLmlzbW9iaWxlc2l0ZT0iWUVTIik7aWYoMD09YS5zdWJqZWN0Lmxlbmd0aHx8MD09YS5ib2R5Lmxlbmd0aClyZXR1cm4hMTthLmluamVjdEN0YUNvbXBsZXRlZERhdGEoKTtqc29uT2JqZWN0PWEuZ2V0SnNvbk9iamVjdCgpO2EuaWdub3JlQ2FwdGNoYXx8YS5yZWNhcHRjaGEucmVzZXRUb2tlbigpOwpiPW51bGw7Yj1KU09OLnN0cmluZ2lmeShqc29uT2JqZWN0KTt2YXIgZD1hLnBvcHVwT2ZmZXJUeXBlO2I9e2pzb246Yn07aWYoYS5wYXJ0aWFsKWIucGFydGlhbD0hMDtlbHNleyJ1bmRlZmluZWQiIT10eXBlb2YgZ3RhZyYmd2luZG93LmQyY19hd2NJZCYmd2luZG93LmQyY19hd2NMYWJlbCYmKCJsaXZlIj09ZGVwbG95bWVudFR5cGUudG9Mb3dlckNhc2UoKT9ndGFnKCJldmVudCIsImNvbnZlcnNpb24iLHtzZW5kX3RvOmQyY19hd2NJZCsiLyIrZDJjX2F3Y0xhYmVsfSk6Y29uc29sZS5sb2coImd0YWcoJ2V2ZW50JywnY29udmVyc2lvbicsIHsgJ3NlbmRfdG8nOiAiK2QyY19hd2NJZCsiLyIrZDJjX2F3Y0xhYmVsKyIgfSk7IikpO3ZhciBjPXttYWlsSUQ6YS5tYWlsSUQsbWFrZTphLm1ha2UsbW9kZWw6YS5tb2RlbCx5ZWFyOmEueWVhcix2aW46YS52aW4sY29uZGl0aW9uOmEuY29uZGl0aW9uLGRlcGFydG1lbnQ6YS5kZXBhcnRtZW50LHRyYWRlaW46YS50cmFkZWluLHBvcHVwT2ZmZXJUeXBlOmEucG9wdXBPZmZlclR5cGUsCmJvZHlUeXBlOmEudmVoaWNsZVR5cGUsc2FsZXNEZXB0OmEuc2FsZXNEZXB0LHBvcHVwRGl2OmEucG9wdXBkaXYsaXNDVEE6YS5pc0NUQSxidXR0b25UZXh0OmEuYnV0dG9uVGV4dH07alF1ZXJ5KCJib2R5IikudHJpZ2dlcigiZW1haWxIYW5kbGVyLnN1Ym1pdCIsYyl9JCgiLnVpLWxvYWRlci1iYWNrZ3JvdW5kIikuc2hvdygpO3NldFRpbWVvdXQoZnVuY3Rpb24oKXskKCIudWktbG9hZGVyLWJhY2tncm91bmQiKS5oaWRlKCl9LDVFMyk7JCgnaW5wdXRbbmFtZT0ibGVhZF9kZXBhcnRtZW50Il0nKS52YWwoanNvbk9iamVjdC5kZXBhcnRtZW50KTskKCdpbnB1dFtuYW1lPSJsZWFkVHlwZSJdJykudmFsKGEuc3ViamVjdC5yZXBsYWNlKC9bXG5ccl0vZywiICIpKTsiIiE9YS5sZWFkVGl0bGVUZXh0JiYoJCgnaW5wdXRbbmFtZT0ibGVhZFR5cGUiXScpLnZhbChhLmxlYWRUaXRsZVRleHQucmVwbGFjZSgvW1xuXHJdL2csIiAiKSksYS5sZWFkVGl0bGVUZXh0PSIiKTskKCdpbnB1dFtuYW1lPSJwYWdlSUQiXScpLnZhbCgkKCIjUEFHRUlEIikudmFsKCkpOwokKCdpbnB1dFtuYW1lPSJjdXJyZW50VVJMIl0nKS52YWwod2luZG93LmxvY2F0aW9uLmhyZWYpOyQoJ2lucHV0W25hbWU9ImlzRnVsbFdpZHRoIl0nKS52YWwoJCgiI2lzRnVsbFdpZHRoUGFnZU5ld1ZEUCIpLnZhbCgpKTskKCdpbnB1dFtuYW1lPSJkZWFsZXJOYW1lIl0nKS52YWwoJCgiI25ld1ZEUERlYWxlck5hbWUiKS52YWwoKSk7JCgnaW5wdXRbbmFtZT0iYnV0dG9uUG9zaXRpb24iXScpLnZhbCgkKCIjbmV3VkRQQnV0dG9uUG9zaXRpb24iKS52YWwoKSk7JCgnaW5wdXRbbmFtZT0iaXNNb2JpbGVOZXdWRFAiXScpLnZhbCgkKCIjaXNtb2JpbGUiKS52YWwoKSk7JCgnaW5wdXRbbmFtZT0iaXNDb25maXJtUG9wdXAiXScpLnZhbCgwKTsiY3JlZGl0U2NvcmVDb25maXJtUG9wdXBDb250YWluZXIiPT1hLnBvcHVwZGl2JiYkKCdpbnB1dFtuYW1lPSJpc0NvbmZpcm1Qb3B1cCJdJykudmFsKDEpOyQoJ2lucHV0W25hbWU9ImNvbmZpcm1fZW1haWwiXScpLnZhbChhLnVzZXJFbWFpbCk7CiQoJ2lucHV0W25hbWU9ImNvbmZpcm1fZmlyc3RfbmFtZSJdJykudmFsKGEudXNlckZpcnN0TmFtZSk7JCgnaW5wdXRbbmFtZT0iY29uZmlybV9sYXN0X25hbWUiXScpLnZhbChhLnVzZXJMYXN0TmFtZSk7JCgnaW5wdXRbbmFtZT0iY29uZmlybV9waG9uZV9udW1iZXIiXScpLnZhbChhLnVzZXJQaG9uZSk7Zm9ybUZpbGwuc2F2ZSh7ZW1haWw6YS51c2VyRW1haWwsZmlyc3ROYW1lOmEudXNlckZpcnN0TmFtZSxsYXN0TmFtZTphLnVzZXJMYXN0TmFtZSxwaG9uZTphLnVzZXJQaG9uZSxwb3N0YWw6YS51c2VyUG9zdGFsfSk7JC5hamF4KHt0eXBlOiJQT1NUIix1cmw6Ii9tYWlsL3NlbmRNYWlsRXgucGhwIixkYXRhOmIsYmVmb3JlU2VuZDpmdW5jdGlvbihmKXtmJiZmLm92ZXJyaWRlTWltZVR5cGUmJmYub3ZlcnJpZGVNaW1lVHlwZSgiYXBwbGljYXRpb24vanNvbjtjaGFyc2V0PVVURi04Iik7dHJ5e2xldCBrPSQoIm1ldGFbbmFtZT0nY3NyZi1kb21haW4tY2hlY2snXSIpO2subGVuZ3RoJiYKZi5zZXRSZXF1ZXN0SGVhZGVyKCJjc3JmLWRvbWFpbi1jaGVjayIsay5hdHRyKCJjb250ZW50IikpfWNhdGNoKGspe2NvbnNvbGUuZXJyb3IoZil9fSxzdWNjZXNzOmZ1bmN0aW9uKGYpe2EubG9nRm9ybVJlcXVlc3QoIkZvcm1TdWJtaXR0ZWQiLGEubWFpbElELGQpO2EucGFydGlhbD0hMTthLmxhc3RDaGVja3N1bT0hMTt2YXIgaz0iIjtrPSJzdHJpbmciPT10eXBlb2YgZj9KU09OLnBhcnNlKGYpOmY7YS5fX2xhc3RSZXR1cm49aztpZigib2JqZWN0Ij09dHlwZW9mIGt8fCJ1bmRlZmluZWQiIT10eXBlb2Ygay5sZWFkaWQpYS5fX2xlYWRpZD1rLmxlYWRpZDsiZnVuY3Rpb24iIT10eXBlb2YgYS5jYWxsYmFjayYmKGEuY2FsbGJhY2s9ZnVuY3Rpb24oKXt9KTtqUXVlcnkoImJvZHkiKS50cmlnZ2VyKCJlbWFpbEhhbmRsZXIuZW1haWxTZW50Iix7bWFpbElEOmEubWFpbElELG1ha2U6YS5tYWtlLG1vZGVsOmEubW9kZWwseWVhcjphLnllYXIsdmluOmEudmluLGNvbmRpdGlvbjphLmNvbmRpdGlvbiwKZGVwYXJ0bWVudDphLmRlcGFydG1lbnQsdHJhZGVpbjphLnRyYWRlaW4sc3VjY2VzczoiU1VDQ0VTUyI9PT1rLnN0YXR1cyxkZXRhaWw6e2NvbmZpcm1fZmlyc3RfbmFtZTphLnVzZXJGaXJzdE5hbWUsY29uZmlybV9sYXN0X25hbWU6YS51c2VyTGFzdE5hbWUsY29uZmlybV9lbWFpbDphLnVzZXJFbWFpbCxjb25maXJtX3Bob25lX251bWJlcjphLnVzZXJQaG9uZSx5ZWFyOmEueWVhcixtYWtlOmEubWFrZSxtb2RlbDphLm1vZGVsLGlkOmsubGVhZGlkLHZpbjphLnZpbixjb25kaXRpb246YS5jb25kaXRpb24sdmVyc2lvbjphLnZlcnNpb258fCIiLE5JVjphLnZpbix0cmltOmEudHJpbSxsZWFkVHlwZTphLmxlYWRUeXBlfHwiIixtYWlsSWQ6YS5tYWlsSUR9fSk7IlNVQ0NFU1MiPT1rLnN0YXR1cz8oYS5jYWxsYmFjayghMCksYS5tYWluUHJvbW8mJihmPW5ldyBDdXN0b21FdmVudCgidHJhY2tzdGVwLmNvbXBsZXRlIix7ZGV0YWlsOntzdGVwSWQ6Ik1haW5Qcm9tb0J0biJ9fSksZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChmKSkpOgphLmNhbGxiYWNrKCExKTthLmNhbGxiYWNrPW51bGx9LGZhaWx1cmU6ZnVuY3Rpb24oZil7YS5sb2dGb3JtUmVxdWVzdCgiRm9ybVN1Ym1pdHRlZEVtYWlsTm90U2VudCIsYS5tYWlsSUQsZCk7YWxlcnQoc2F2ZUhhbmRsZXIuZmFpbE1lc3NhZ2UrIlxuIitmKX0sc3RhdHVzQ29kZTp7NDA0OmZ1bmN0aW9uKCl7YWxlcnQoInBhZ2Ugbm90IGZvdW5kIil9fX0pO2EucG9wdXBPZmZlclR5cGU9IiJ9fSxpbmplY3RDdGFDb21wbGV0ZWREYXRhOmZ1bmN0aW9uKCl7bGV0IGI9IiIsZD0iIjt2YXIgYz0iIixmPWdldENvb2tpZUQyYygiYmFuZHBfY29uZmlnIiksaz0idW5kZWZpbmVkIiE9PXR5cGVvZiBmJiZudWxsIT09Zj9KU09OLnBhcnNlKGRlY29kZVVSSUNvbXBvbmVudChmKSk6SlNPTi5wYXJzZSgie30iKTtmPShtLG4pPT57bj1ufHwhMTtsZXQgdD1tLm9wdGlvbnMucmVkdWNlKCh3LHgpPT53K2Ake3h9PGJyPmAsIiIpLHI9IkVOR0xJU0giPT0kKCIjYWN0aXZlc2l0ZWxhbmd1YWdlIikudmFsKCk\/CiJWZWhpY2xlIGRldGFpbHMiOiJWw6loaWN1bGUgY29uZmlndXLDqSIsdj0iRU5HTElTSCI9PSQoIiNhY3RpdmVzaXRlbGFuZ3VhZ2UiKS52YWwoKT8iRmluYW5jaW5nIGRldGFpbHMiOiJEw6l0YWlscyBkdSBmaW5hbmNlbWVudCIscSxwLGg7bj1uPyIiOmAKCQkJCQkJPHU+JHt2fTo8L3U+PGJyPgoJCQkJCQkke251bGw9PW0\/dm9pZCAwOm51bGw9PShxPW0ucGF5bWVudCk\/dm9pZCAwOnEudG90YWx9PGJyPgoJCQkJCQkke251bGw9PW0\/dm9pZCAwOm51bGw9PShwPW0ucGF5bWVudCk\/dm9pZCAwOnAucmF0ZX08YnI+CgkJCQkJCSR7bnVsbD09bT92b2lkIDA6bnVsbD09KGg9bS5wYXltZW50KT92b2lkIDA6aC5hbW91bnR9PGJyPjxicj4KCQkJCQlgO2xldCBsLHU7cmV0dXJuYAoJCQkJCTx1PiR7cn06PC91Pjxicj4KCQkJCQkke251bGw9PW0\/dm9pZCAwOm0ubW9kZWx9PGJyPgoJCQkJCUV4dDogJHsobnVsbD09bT92b2lkIDA6bnVsbD09KGw9bS5jb2xvcnMpP3ZvaWQgMDpsLmV4dCl8fCIifSwgSW50OiAkeyhudWxsPT1tP3ZvaWQgMDpudWxsPT0odT1tLmNvbG9ycyk\/dm9pZCAwOnUuaW50KXx8IiJ9PGJyPgoJCQkJCSR7KG51bGw9PW0\/dm9pZCAwOm0uZHJpdmVUcmFpbil8fCIifTxicj4KCQkJCQkke3R9PGJyPgoJCQkJCSR7bn0KCQkJCWB9O2suYmFuZHAmJihiPWYoay5iYW5kcCkucmVwbGFjZSgvKFx0fFxuKSovZywiIikpO2lmKENvb2tpZXMuZ2V0KCJjdGFfZGF0YV92YWxpZCIpKXtjPUpTT04ucGFyc2UoX2xvY2FsU3RvcmFnZUdldCgicmV0YWlsX3RyYWNrX2RhdGEiKXx8Int9Iik7az0hIWMucGF5bWVudDtjLmJhbmRwJiYoYy5iYW5kcC5vcHRpb25zPWMuYmFuZHAub3B0aW9uc3x8W10sYj1mKGMuYmFuZHAsaykpO2lmKGspe2xldCBtLG4sdDtkPWAKCQkJCQkJPHU+JHsiRU5HTElTSCI9PSQoIiNhY3RpdmVzaXRlbGFuZ3VhZ2UiKS52YWwoKT8iVmVoaWNsZSBkZXRhaWxzIjoiRMOpdGFpbHMgZHUgZmluYW5jZW1lbnQifTo8L3U+PGJyPgoJCQkJCQkke251bGw9PWM\/dm9pZCAwOm51bGw9PShtPWMucGF5bWVudCk\/dm9pZCAwOm0ubGlzdFByaWNlfTxicj4KCQkJCQkJJHtudWxsPT1jP3ZvaWQgMDpudWxsPT0obj1jLnBheW1lbnQpP3ZvaWQgMDpuLnJhdGV9PGJyPgoJCQkJCQkke251bGw9PWM\/dm9pZCAwOm51bGw9PSh0PWMucGF5bWVudCk\/dm9pZCAwOnQucGF5bWVudH08YnI+CgkJCQkJYH1jPSJcblx0XHRcdFx0XHQ8YnI+XG5cdFx0XHRcdFx0PGJyPlxuXHRcdFx0XHRcdDx1PjxzdHJvbmc+VHJhbnNhY3Rpb24gQnVpbGRlcjo8L3N0cm9uZz48L3U+XG5cblx0XHRcdFx0In1pZihifHxkKWEuYm9keSs9KGMrYAoJCQkJCTxicj4KCQkJCQk8YnI+CgkJCQkJJHtifQoJCQkJCSR7ZH0KCQkJCWApLnJlcGxhY2UoL1xyP1xufFxyL2csIiIpfSxkZWNvZGVVUkxSZWN1cnNpdmVseTpmdW5jdGlvbihiKXtyZXR1cm4tMSE9Yi5pbmRleE9mKCIlIik\/YS5kZWNvZGVVUkxSZWN1cnNpdmVseShkZWNvZGVVUklDb21wb25lbnQodW5lc2NhcGUoYikpKTpifSx2YWxpZGF0ZUVtYWlsOmZ1bmN0aW9uKGIpe3JldHVybiAkLmFqYXgoe3R5cGU6IkdFVCIsdXJsOiIvYWpheC92YWxpZGF0ZUVtYWlsQWNjb3VudD93c3dpZHRoPTAmZW1haWw9IitiLGFzeW5jOiExfSl9LGdldFVVSUQ6ZnVuY3Rpb24oKXtyZXR1cm4idW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdy5hY3RpdmVQcm9maWxlSUQmJm51bGwhPXdpbmRvdy5hY3RpdmVQcm9maWxlSUQ\/d2luZG93LmFjdGl2ZVByb2ZpbGVJRDoidW5kZWZpbmVkIiE9dHlwZW9mIGFjdGl2ZVVzZXJQcm9maWxlTW5nJiZudWxsIT1hY3RpdmVVc2VyUHJvZmlsZU1uZy51aWQ\/YWN0aXZlVXNlclByb2ZpbGVNbmcudWlkOgoidW5kZWZpbmVkIiE9dHlwZW9mIENvb2tpZXMmJiJ1bmRlZmluZWQiIT1Db29raWVzLmdldCgidXVpZCIpJiZudWxsIT1Db29raWVzLmdldCgidXVpZCIpP0Nvb2tpZXMuZ2V0KCJ1dWlkIik6IiJ9LHNldENvbnRhY3RJbmZvOmZ1bmN0aW9uKCl7aWYoInVuZGVmaW5lZCIhPT10eXBlb2YgJC5mbi5nb29nbGVQbGFjZXMpe3ZhciBiPSQoJ2lucHV0W2RhdGEtZ29vZ2xlLXBsYWNlcz0idHJ1ZSJdJyk7MCE9Yi5sZW5ndGgmJihiPWIuZ29vZ2xlUGxhY2VzKCJnZXRBZGRyZXNzIiksIiIhPWIuY2l0eSYmIiI9PWEuY29udGFjdENpdHkmJihhLmNvbnRhY3RDaXR5PWIuY2l0eS5sb25nX25hbWUpLCIiIT1iLnN0cmVldCYmIiIhPWIuc3RyZWV0X251bWJlciYmIiI9PWEuY29udGFjdEFkZHJlc3MmJihhLmNvbnRhY3RBZGRyZXNzPWIuc3RyZWV0X251bWJlci5sb25nX25hbWUrIiAiK2Iuc3RyZWV0LmxvbmdfbmFtZSksIiIhPWIucHJvdmluY2UmJiIiPT1hLmNvbnRhY3RQcm92aW5jZSYmKGEuY29udGFjdFByb3ZpbmNlPQpiLnByb3ZpbmNlLnNob3J0X25hbWUpLCIiIT1iLnBvc3RhbCYmIiI9PWEuY29udGFjdFppcCYmKGEuY29udGFjdFppcD1iLnBvc3RhbC5sb25nX25hbWUpKX19LGdldExvbmdEYXRlVG9TaG9ydEZvcm1hdDpmdW5jdGlvbihiKXtpZigiIj09YilyZXR1cm4gYjtiPWIudG9Mb3dlckNhc2UoKTt2YXIgZD17amFudmllcjoiamFudWFyeSIsImbDqXZyaWVyIjoiZmVicnVhcnkiLG1hcnM6Im1hcmNoIixhdnJpbDoiYXByaWwiLG1haToibWF5IixqdWluOiJqdW5lIixqdWlsbGV0OiJqdWx5IiwiYW\/Du3QiOiJhdWd1c3QiLHNlcHRlbWJyZToic2VwdGVtYmVyIixvY3RvYnJlOiJvY3RvYmVyIixub3ZlbWJyZToibm92ZW1iZXIiLCJkw6ljZW1icmUiOiJkZWNlbWJlciJ9O2I9Yi5yZXBsYWNlKC9cYlxTK1xiL2lnLGZ1bmN0aW9uKGMpe3ZhciBmPWMudG9Mb3dlckNhc2UoKTtyZXR1cm4gZFtmXT9kW2ZdOmN9KTtyZXR1cm4obmV3IERhdGUoYikpLmZvcm1hdCgieXl5eS1NTS1kZCIpfSxnZXRFbWFpbENvbnNlbnQ6ZnVuY3Rpb24oYil7dmFyIGQ9Cm5ldyBEYXRlO2Euc2V0Q29udGFjdEluZm8oKTt2YXIgYz1hLmNvbnRhY3RCaXJ0aD9hLmNvbnRhY3RCaXJ0aDphLmdldExvbmdEYXRlVG9TaG9ydEZvcm1hdChhLmJpcnRoZGF0ZSk7JCgiLnVpLWxvYWRlci1iYWNrZ3JvdW5kIikuc2hvdygpO2dldERhdGE9e2VtYWlsOmEudXNlckVtYWlsLHBob25lOmEudXNlclBob25lLG5hbWU6YS51c2VyRmlyc3ROYW1lKyIgIithLnVzZXJMYXN0TmFtZSxhZGRyOmEuY29udGFjdEFkZHJlc3M\/YS5jb250YWN0QWRkcmVzczphLnVzZXJBZGRyZXNzLGNpdHk6YS5jb250YWN0Q2l0eSxwcm92aW5jZTphLmNvbnRhY3RQcm92aW5jZSx6aXA6YS5jb250YWN0WmlwP2EuY29udGFjdFppcDphLnVzZXJQb3N0YWwsbmFzOmEuY29udGFjdE5BUyxiaXJ0aDpjLHNpdGVJRDokKCIjc2l0ZUlEIikudmFsKCksVVVJRDphLmdldFVVSUQoKSx0czpkLmdldFRpbWUoKSxsYW5nOiQoIiNhY3RpdmVzaXRlbGFuZ3VhZ2UiKS52YWwoKSx1cGRhdGVJbXBsaWNpdDohMH07CiQuYWpheCh7dHlwZToiR0VUIix1cmw6Ii9hamF4L2dldEVtYWlsQ29uc2VudEZyb21DUk0\/d3N3aWR0aD0wIixkYXRhOmdldERhdGEsZGF0YVR5cGU6Impzb24ifSkuYWx3YXlzKGZ1bmN0aW9uKGYsayxtKXtmPWY\/Zjp7aGFzQ29uc2VudDohMX07JCgiLnVpLWxvYWRlci1iYWNrZ3JvdW5kIikuaGlkZSgpO3RyeXsidW5kZWZpbmVkIj09dHlwZW9mIGYmJiJ1bmRlZmluZWQiIT09dHlwZW9mIGRlYnVnJiZkZWJ1ZygiKioqKiBlcnJvciAqKioqIix7ZXJyb3I6Ik5vIERhdGEiLHRleHRTdGF0dXM6ayxydmFsdWU6Zix2OmdldERhdGEsdDoiL2FqYXgvZ2V0RW1haWxDb25zZW50RnJvbUNSTT93c3dpZHRoPTAifSksW1siY29uc2VudFR5cGUiLCJjb25zZW50VHlwZSJdLFsiY29uc2VudEV4cGlyYXRpb24iLCJleHBpcmF0aW9uIl0sWyJjb25zZW50RGF0ZSIsImRhdGUiXSxbImNvbnNlbnRGcmVxdWVuY3kiLCJmcmVxdWVuY3kiXSwKWyJjb25zZW50RGV0YWlsc0ZSIiwiZGV0YWlsc0ZSRU5DSCJdLFsiY29uc2VudERldGFpbHNFTiIsImRldGFpbHNFTkdMSVNIIl0sWyJkZXRhaWxzRGVmYXVsdHMiLCJkZXRhaWxzRGVmYXVsdHMiXSxbImNvbnRhY3RJRCIsInVpZCJdXS5tYXAoZnVuY3Rpb24obil7dmFyIHQ9blswXTtuPW5bMV07ZGVsZXRlIHZvaWQgMDthW3RdPXZvaWQgMCE9ZltuXT9mW25dOmFbdF19KX1jYXRjaChuKXsidW5kZWZpbmVkIiE9PXR5cGVvZiBkZWJ1ZyYmZGVidWcoIioqKiogZXJyb3IgKioqKiIse2Vycm9yOm4sdGV4dFN0YXR1czprLHJ2YWx1ZTpmLHY6Z2V0RGF0YSx0OiIvYWpheC9nZXRFbWFpbENvbnNlbnRGcm9tQ1JNP3dzd2lkdGg9MCJ9KX1iKGYpfSl9LGJhbmRwTGluazpmdW5jdGlvbihiKXtiPWZ1bmN0aW9uKHIpe3JldHVybiByLnJlcGxhY2UoLy0vZywiXyIpLnJlcGxhY2UoLycvZywiIil9O2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgQ29va2llcy5nZXQoImJhbmRwbGluayIpfHwKbnVsbD09Q29va2llcy5nZXQoImJhbmRwbGluayIpfHwidW5kZWZpbmVkIj09dHlwZW9mIENvb2tpZXMuZ2V0KCJzZXNzaWQiKXx8bnVsbD09Q29va2llcy5nZXQoInNlc3NpZCIpKXJldHVybiIiO3ZhciBkPUNvb2tpZXMuZ2V0KCJiYW5kcGxpbmsiKSxjPUNvb2tpZXMuZ2V0KCJzZXNzaWQiKTtpZigwPmQuaW5kZXhPZigifHx8IikpcmV0dXJuIiI7dmFyIGY9ZC5zcGxpdCgifHx8Iik7aWYoND5mLmxlbmd0aClyZXR1cm4iIjtkPShuZXcgU3RyaW5nKGZbMF0pKS5zcGxpdCgiLyIpO3ZhciBrPW5ldyBTdHJpbmcoZlsxXSksbT1uZXcgU3RyaW5nKGZbMl0pO2Y9bmV3IFN0cmluZyhmWzNdKTt2YXIgbj0kKCIjcG9wdXB0cmltIikubGVuZ3RoJiYieyRQT1BVUFRSSU19IiE9JCgiI3BvcHVwdHJpbSIpLnZhbCgpPyQoIiNwb3B1cHRyaW0iKS52YWwoKToiIix0PSI8YSBocmVmPSciK2QyY21lZGlhLmdldEh0dHBUZXh0KCkrIjovLyIrd2luZG93LmxvY2F0aW9uLmhvc3RuYW1lKyQoIiN0eHRCdWlsZEFuZFByaWNlRm9sZGVyUGF0aCIpLnZhbCgpOwoiRU5HTElTSCI9PSQoIiNhY3RpdmVzaXRlbGFuZ3VhZ2UiKS52YWwoKT8ocGFyc2VJbnQoZFsyXSksJCgiI1RYVE1PTlRIIitwYXJzZUludChkWzFdKS50b1N0cmluZygpKS52YWwoKSx0Kz1mKyItIitiKGspKyItIitiKG0pKyIuaHRtbD9zaWQ9IitjKyInIHRhcmdldD0nX2JsYW5rJz4iK2YrIiAiK2srIiAiK20rIiAiK24rIjwvYT4iKTooJCgiI1RYVE1PTlRIIitwYXJzZUludChkWzFdKS50b1N0cmluZygpKS52YWwoKSx0Kz1iKGspKyItIitiKG0pKyItIitmKyIuaHRtbD9zaWQ9IitjKyInIHRhcmdldD0nX2JsYW5rJz4iK2srIiAiK20rIiAiK24rIiAiK2YrIjwvYT4iKTtyZXR1cm4gdH0sbG9nRm9ybVJlcXVlc3Q6ZnVuY3Rpb24oYixkLGMpe3ZhciBmPU1hdGguZmxvb3IoOTk5OTk5OSpNYXRoLnJhbmRvbSgpKSxrPSQoIiN0b3BzaXRlaWQiKS5sZW5ndGg\/JCgiI3RvcHNpdGVpZCIpLnZhbCgpOiIwIixtPSQoIiN0b3BjYXJpZCIpLmxlbmd0aCYmMDwkKCIjdG9wY2FyaWQiKS52YWwoKS5sZW5ndGg\/CiQoIiN0b3BjYXJpZCIpLnZhbCgpOiIwIixuPUNvb2tpZXMuZ2V0KCJ1aWQiKT9Db29raWVzLmdldCgidWlkIik6IjAiLHQ9Q29va2llcy5nZXQoInV0bV9zb3VyY2UiKT9Db29raWVzLmdldCgidXRtX3NvdXJjZSIpOiIwIixyPUNvb2tpZXMuZ2V0KCJ1dG1fY2FtcGFpZ24iKT9Db29raWVzLmdldCgidXRtX2NhbXBhaWduIik6IjAiLHY9Q29va2llcy5nZXQoInV0bV9zb3VyY2VfcmV0YXJnZXRpbmciKT9Db29raWVzLmdldCgidXRtX3NvdXJjZV9yZXRhcmdldGluZyIpOiIwIixxPUNvb2tpZXMuZ2V0KCJ1dG1fY2FtcGFpZ25fcmV0YXJnZXRpbmciKT9Db29raWVzLmdldCgidXRtX2NhbXBhaWduX3JldGFyZ2V0aW5nIik6IjAiLHA9JCgiI3RvcGlzbW9iaWxlIikubGVuZ3RoJiYxPT0kKCIjdG9waXNtb2JpbGUiKS52YWwoKT8iWUVTIjoiTk8iLGg9JCgiI2FjdGl2ZXNpdGVsYW5ndWFnZSIpLmxlbmd0aD8kKCIjYWN0aXZlc2l0ZWxhbmd1YWdlIikudmFsKCk6IkZSRU5DSCIsbD12b2lkIDAhPT0KYSYmdm9pZCAwIT09YS5waG9uZU1hbmRhdG9yeT9hLnBob25lTWFuZGF0b3J5OjA7InVuZGVmaW5lZCIhPXR5cGVvZiBjJiZjfHwoYz0iMCIpO3I9ci5yZXBsYWNlKC9cdC9nLCIiKS5yZXBsYWNlKC9cbi9nLCIiKS5yZXBsYWNlKC9cci9nLCIiKS5yZXBsYWNlQWxsKCIlMEEiLCIiKS5yZXBsYWNlQWxsKCIlMDkiLCIiKS5yZXBsYWNlQWxsKCIlMEIiLCIiKS5yZXBsYWNlQWxsKCIlMDAiLCIiKS5yZXBsYWNlQWxsKCIlNUMiLCIiKS5yZXBsYWNlQWxsKCIlMEQiLCIiKTt0PXQucmVwbGFjZSgvXHQvZywiIikucmVwbGFjZSgvXG4vZywiIikucmVwbGFjZSgvXHIvZywiIikucmVwbGFjZUFsbCgiJTBBIiwiIikucmVwbGFjZUFsbCgiJTA5IiwiIikucmVwbGFjZUFsbCgiJTBCIiwiIikucmVwbGFjZUFsbCgiJTAwIiwiIikucmVwbGFjZUFsbCgiJTVDIiwiIikucmVwbGFjZUFsbCgiJTBEIiwiIik7Yj0iL3Byb3h5X3NhdWIvbG9nRm9ybVJlcXVlc3QvIitlbmNvZGVVUklDb21wb25lbnQoaykrCiIvIitlbmNvZGVVUklDb21wb25lbnQobSkrIi8iK2VuY29kZVVSSUNvbXBvbmVudChuKSsiLyIrZW5jb2RlVVJJQ29tcG9uZW50KHQpKyIvIitlbmNvZGVVUklDb21wb25lbnQocikrIi8iK2VuY29kZVVSSUNvbXBvbmVudChwKSsiLyIrZW5jb2RlVVJJQ29tcG9uZW50KGgpKyIvIitlbmNvZGVVUklDb21wb25lbnQodikrIi8iK2VuY29kZVVSSUNvbXBvbmVudChxKSsiLyIrZW5jb2RlVVJJQ29tcG9uZW50KGQpKyIvIitlbmNvZGVVUklDb21wb25lbnQoYikrIi8iK2VuY29kZVVSSUNvbXBvbmVudChjKSsiLyIrISFsKyIvIitlbmNvZGVVUklDb21wb25lbnQoZikrIi5naWYiOyQoImJvZHkiKS5hcHBlbmQoIjxpbWcgc3R5bGU9J3dpZHRoOjFweDtoZWlnaHQ6MXB4O3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MHB4O3RvcDowcHg7JyBzcmM9JyIrYisiJyBhbHQ9JycgLz4iKX0sZ2V0VXNlZEVtYWlsRm9yTXVsdGlwbGVEZWFsZXJzOmZ1bmN0aW9uKCl7dmFyIGI9ImZyIjsiRU5HTElTSCI9PQokKCIjYWN0aXZlc2l0ZWxhbmd1YWdlIikudmFsKCkmJihiPSJlbiIpO3VyaT0iLyIrYisiL3BocC9nZXREZWFsZXJzRW1haWxUby5waHA\/bWFrZT0iK2EubWFrZSsiJm1vZGVsPSIrYS5tb2RlbCsiJnllYXI9IithLnllYXIrIiZjYj0iK01hdGguZmxvb3IoOTk5OTk5OSpNYXRoLnJhbmRvbSgpKTskLmFqYXgoe3VybDp1cmksYXN5bmM6ITEsc3VjY2VzczpmdW5jdGlvbihkKXtkPWQuc3BsaXQoInx8fCIpOyJ1bmRlZmluZWQiIT10eXBlb2YgZFswXSYmMDxkWzBdLmxlbmd0aCYmKGEuc2VuZFRvPWRbMF0pOyJ1bmRlZmluZWQiIT10eXBlb2YgZFsxXSYmMDxkWzFdLmxlbmd0aCYmKGEuc2VuZFRvQURGRm9ybWF0PWRbMV0pfX0pfSxwcmVTZW5kSW1wbGljaXQ6ZnVuY3Rpb24oKXtpZihhLnBhcnRpYWwpcmV0dXJuITE7anNvbk9iamVjdD1hLmdldEpzb25PYmplY3QoKTt2YXIgYj17anNvbjpKU09OLnN0cmluZ2lmeShqc29uT2JqZWN0KSxwYXJ0aWFsOiEwfTskLmFqYXgoe3R5cGU6IlBPU1QiLAp1cmw6Ii9tYWlsL3NlbmRNYWlsRXgucGhwIixkYXRhOmIsYmVmb3JlU2VuZDpmdW5jdGlvbihkKXskKCdpbnB1dFtuYW1lPSJsZWFkX2RlcGFydG1lbnQiXScpLnZhbChqc29uT2JqZWN0LmRlcGFydG1lbnQpOyQoJ2lucHV0W25hbWU9ImxlYWRUeXBlIl0nKS52YWwoYS5zdWJqZWN0LnJlcGxhY2UoL1tcblxyXS9nLCIgIikpOyQoJ2lucHV0W25hbWU9InBhZ2VJRCJdJykudmFsKCQoIiNQQUdFSUQiKS52YWwoKSk7JCgnaW5wdXRbbmFtZT0iY3VycmVudFVSTCJdJykudmFsKHdpbmRvdy5sb2NhdGlvbi5ocmVmKTskKCdpbnB1dFtuYW1lPSJpc0Z1bGxXaWR0aCJdJykudmFsKCQoIiNpc0Z1bGxXaWR0aFBhZ2VOZXdWRFAiKS52YWwoKSk7JCgnaW5wdXRbbmFtZT0iZGVhbGVyTmFtZSJdJykudmFsKCQoIiNuZXdWRFBEZWFsZXJOYW1lIikudmFsKCkpOyQoJ2lucHV0W25hbWU9ImJ1dHRvblBvc2l0aW9uIl0nKS52YWwoJCgiI25ld1ZEUEJ1dHRvblBvc2l0aW9uIikudmFsKCkpOyQoJ2lucHV0W25hbWU9ImlzTW9iaWxlTmV3VkRQIl0nKS52YWwoJCgiI2lzbW9iaWxlIikudmFsKCkpOwpkJiZkLm92ZXJyaWRlTWltZVR5cGUmJmQub3ZlcnJpZGVNaW1lVHlwZSgiYXBwbGljYXRpb24vanNvbjtjaGFyc2V0PVVURi04Iik7dHJ5e2xldCBjPSQoIm1ldGFbbmFtZT0nY3NyZi1kb21haW4tY2hlY2snXSIpO2MubGVuZ3RoJiZkLnNldFJlcXVlc3RIZWFkZXIoImNzcmYtZG9tYWluLWNoZWNrIixjLmF0dHIoImNvbnRlbnQiKSl9Y2F0Y2goYyl7Y29uc29sZS5lcnJvcihkKX19LHN1Y2Nlc3M6ZnVuY3Rpb24oZCl7InVuZGVmaW5lZCIhPT10eXBlb2YgZGVidWcmJmRlYnVnKGQpfSxmYWlsdXJlOmZ1bmN0aW9uKGQpe2EubG9nRm9ybVJlcXVlc3QoIkZvcm1TdWJtaXR0ZWRFbWFpbE5vdFNlbnQiLGEubWFpbElELGEucG9wdXBPZmZlclR5cGUpOyJ1bmRlZmluZWQiIT09dHlwZW9mIGRlYnVnJiZkZWJ1ZyhzYXZlSGFuZGxlci5mYWlsTWVzc2FnZSxkKX0sc3RhdHVzQ29kZTp7NDA0OmZ1bmN0aW9uKCl7YWxlcnQoInBhZ2Ugbm90IGZvdW5kIil9fX0pfSxsb2dFdmVudDpmdW5jdGlvbihiLApkKXtkPWQ\/ZDphLm1haWxJRDtpZighYnx8IWQpcmV0dXJuInVuZGVmaW5lZCIhPT10eXBlb2YgZGVidWcmJmRlYnVnKCIhVU5MT0dHRUQgRVZFTlQhIixiLGQpLCExOyJ1bmRlZmluZWQiIT10eXBlb2YgYWN0aXZlVXNlclByb2ZpbGVNbmcmJiJ1bmRlZmluZWQiIT10eXBlb2YgYWN0aXZlVXNlclByb2ZpbGVNbmcubG9nUGFnZVZpZXdFdmVudD9hY3RpdmVVc2VyUHJvZmlsZU1uZy5sb2dQYWdlVmlld0V2ZW50KGIsZCk6InVuZGVmaW5lZCIhPT10eXBlb2YgZGVidWcmJmRlYnVnKCIhVU5MT0dHRUQgRVZFTlQhIixiLGQpfSxidWlsZENSTUtleTpmdW5jdGlvbigpe3ZhciBiPXBhcnNlSW50KCQoIiN0b3BzaXRlaWQiKS52YWwoKSwxMCksZD1hLmdldFVVSUQoKSxjPWdldENvb2tpZSgiZW1haWxGcm9tQXV0b0Fuc3dlciIpO2lmKCFpc05hTihiKSYmKCIiIT1jfHwiIiE9ZCkmJiJudW1iZXIiPT10eXBlb2YgYiYmMDxiKXt2YXIgZj1uZXcgRGF0ZSxrPWYuZ2V0TW9udGgoKSsxO2s9JC5iYXNlNjQuZW5jb2RlKGYuZ2V0RnVsbFllYXIoKSsKIi0iKygxMD5rPyIwIitrOmspKyItIisoMTA+Zi5nZXREYXRlKCk\/IjAiK2YuZ2V0RGF0ZSgpOmYuZ2V0RGF0ZSgpKSk7Zj1rLnN1YnN0cigwLDgpO2s9ay5zdWJzdHIoOCk7cmV0dXJuICQuYmFzZTY0LmVuY29kZShmKyQuYmFzZTY0LmVuY29kZShiKyI7IitkKyI7IitjKStrKX1yZXR1cm4iIn0sc2V0TWFrZU1vZGVsWWVhckZyb21MYXN0Vmlld2VkOmZ1bmN0aW9uKCl7dmFyIGI9JCgiI2xhc3R2aWV3ZWRtYWtlIikudmFsKCksZD0kKCIjbGFzdHZpZXdlZG1vZGVsIikudmFsKCksYz0kKCIjbGFzdHZpZXdlZHllYXIiKS52YWwoKTsidW5kZWZpbmVkIiE9PXR5cGVvZiBiJiYiIj09PWEubWFrZSYmKGEubWFrZT1iKTsidW5kZWZpbmVkIiE9PXR5cGVvZiBkJiYiIj09PWEubW9kZWwmJihhLm1vZGVsPWQpOyJ1bmRlZmluZWQiPT09dHlwZW9mIGN8fCIiIT09YS55ZWFyJiYwIT09YS55ZWFyfHwoYS55ZWFyPWMpfSxyZWNhcHRjaGE6e2FzazohMCx3aWRnZXRJZDotMSxza2lwQnlQYXNzOiExLApvbjokLkRlZmVycmVkKCksaXNEMkNMb2FkZWQ6ZnVuY3Rpb24oKXtyZXR1cm4gd2luZG93LmdyZWNhcHRjaGEmJiJ1bmRlZmluZWQiIT09dHlwZW9mIHdpbmRvdy5ncmVjYXB0Y2hhLkQyQ0xvYWRlZH0saW5pdDpmdW5jdGlvbigpe3RyeXsoZnVuY3Rpb24oYixkLGMsZixrKXtpZighYltrXXx8InVuZGVmaW5lZCI9PT10eXBlb2YgYltrXS5EMkNMb2FkZWQpe3ZhciBtPWQuY3JlYXRlRWxlbWVudChjKTtjPWQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoYylbMF07bS5zcmM9ZjtjLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKG0sYyk7bS5vbmxvYWQ9KCk9PntiW2tdJiYoYltrXS5EMkNMb2FkZWQ9ITApO2QuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoImdyZWNhcHRjaGEuZDJjbG9hZGVkIikpfX19KSh3aW5kb3csZG9jdW1lbnQsInNjcmlwdCIsImh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vcmVjYXB0Y2hhL2FwaS5qcyIsImdyZWNhcHRjaGEiKX1jYXRjaChiKXtjb25zb2xlLmxvZyhiKX19LGxvYWQ6ZnVuY3Rpb24oKXtpZighKC0xPAphLnJlY2FwdGNoYS53aWRnZXRJZCkpdHJ5eyQoJzxkaXYgaWQ9ImVtYWlsaGFuZGxlcl9yZWNhcHRjaGFXaWRnZXQiPjwvZGl2PicpLmFwcGVuZFRvKCJib2R5IiksYS5yZWNhcHRjaGEud2lkZ2V0SWQ9Z3JlY2FwdGNoYS5yZW5kZXIoImVtYWlsaGFuZGxlcl9yZWNhcHRjaGFXaWRnZXQiLHtzaXRla2V5OiI2TGZwZEQwVUFBQUFBUGQ0UzdJa2U1RWR4MDF5M1lYZDVJLXUzZHhQIixjYWxsYmFjazphLnJlY2FwdGNoYS5vblN1Ym1pdCwiZXJyb3ItY2FsbGJhY2siOmEucmVjYXB0Y2hhLm9uRmFpbCxzaXplOiJpbnZpc2libGUifSl9Y2F0Y2goYil7Y29uc29sZS5sb2coYil9fSxvblN1Ym1pdDpmdW5jdGlvbihiKXthLmdyZWNhcHRjaGFSZXNwb25zZVRva2VuPWI7YS5yZWNhcHRjaGEub24ucmVzb2x2ZShiKX0sb25GYWlsOmZ1bmN0aW9uKCl7Y29uc29sZS5sb2coIkdSQyBGYWlsIixhcmd1bWVudHMpfSxnZXRSZXNwb25zZTpmdW5jdGlvbigpe3JldHVybiBhLnJlY2FwdGNoYS5pc0QyQ0xvYWRlZCgpPwooYS5yZWNhcHRjaGEubG9hZCgpLGdyZWNhcHRjaGEuZXhlY3V0ZShhLnJlY2FwdGNoYS53aWRnZXRJZCksYS5yZWNhcHRjaGEub24pOiQuRGVmZXJyZWQoKS5yZXNvbHZlKCl9LHJlc2V0VG9rZW46ZnVuY3Rpb24oKXthLnJlY2FwdGNoYS5pc0QyQ0xvYWRlZCgpJiYoZ3JlY2FwdGNoYS5yZXNldChhLnJlY2FwdGNoYS53aWRnZXRJZCksYS5yZWNhcHRjaGEub249JC5EZWZlcnJlZCgpKX0sc2V0UmVzcG9uc2U6ZnVuY3Rpb24oKXt9fSxzYW5pdGl6ZUhUTUw6ZnVuY3Rpb24oYil7cmV0dXJuIGVuY29kZVVSSShiKX0sc2hvdWxkRGlzcGxheVB1cmNoYXNlSW50ZW50Q29udGFjdDooKT0+e2lmKG51bGw9PT1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjYXNQdXJjaGFzZUludGVudCIpfHxkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjYXNQdXJjaGFzZUludGVudCAuc3RlcENvbnRhY3QiKS5jbGFzc0xpc3QuY29udGFpbnMoImhpZGRlbiIpKXJldHVybiExO2xldCBiPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNhc1B1cmNoYXNlSW50ZW50IC5zdGVwQ29udGFjdCIpLmRhdGFzZXQuZGVwYXJ0bWVudHM7CmI9Yi5zcGxpdCgiOyIpO2lmKC0xPGIuaW5kZXhPZihhLmRlcGFydG1lbnQudG9Mb3dlckNhc2UoKSkpcmV0dXJuITA7dmFyIGQ9InVuZGVmaW5lZCIhPXR5cGVvZiBkb2N1bWVudC5sb2NhdGlvbi5wYXRobmFtZT9kb2N1bWVudC5sb2NhdGlvbi5wYXRobmFtZTpkb2N1bWVudC5sb2NhdGlvbi5ocmVmLm1hdGNoKC9bQS16XTpcL1wvW15cL10rXC8oW15cP10rKVw\/Py4qLylbMV07ZD1hLnNhbml0aXplSFRNTChkKTtsZXQgYz1PYmplY3QudmFsdWVzKE9iamVjdC5mcm9tRW50cmllcyhPYmplY3QuZW50cmllcyh7bmV3OlsibmV1ZiIsIm5ldyJdLHVzZWQ6WyJvY2Nhc2lvbiIsInVzZWQiXSxzZXJ2aWNlOlsic2VydmljZSIsImVudHJldGllbiIsIm1haW50ZW5hbmNlIiwicmVwYWlyIl0sZmluYW5jZTpbImZpbmFuY2VtZW50IiwiZmluYW5jZSIsImNyZWRpdCIsImxvYW4iXX0pLmZpbHRlcihmPT57W2ZdPWY7cmV0dXJuLTE8Yi5pbmRleE9mKGYpfSkpKS5mbGF0KCk7cmV0dXJuKG5ldyBSZWdFeHAoIigiKwpjLmpvaW4oInwiKSsiKSIpKS50ZXN0KGQudG9Mb3dlckNhc2UoKSl9fTtqUXVlcnkoZnVuY3Rpb24oYil7Yj1qc19kMmNfZ2V0X3ZhbCgiSVNWTSIpO3ZhciBkPWpzX2QyY19nZXRfdmFsKCJmZmRMMSIpLGM9anNfZDJjX2dldF92YWwoIkdSV0wiKS5zcGxpdCgiOyIpO2EuaWdub3JlQ2FwdGNoYT1ifHwtMSE9Yy5pbmRleE9mKGQpO2EuaWdub3JlQ2FwdGNoYXx8KGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImdyZWNhcHRjaGEuZDJjbG9hZGVkIixmdW5jdGlvbigpe3RyeXtncmVjYXB0Y2hhLnJlYWR5KGZ1bmN0aW9uKCl7YS5yZWNhcHRjaGEubG9hZCgpfSl9Y2F0Y2goZil7Y29uc29sZS5sb2coZil9fSksYS5yZWNhcHRjaGEuaW5pdCgpKX0pO2EucmVzZXRDYWxsYmFja3MoKTthLmFza1B1cmNoYXNlSW50ZW50PWZ1bmN0aW9uKGIpe3ZhciBkPSJ1bmRlaW5mZWQiIT10eXBlb2YgYi5wYXRobmFtZT9iLnBhdGhuYW1lOmIuaHJlZi5tYXRjaCgvW0Etel06XC9cL1teXC9dK1wvKFteXD9dKylcPz8uKi8pWzFdOwp2YXIgYz1SZWdFeHAoIihkZW1vbnN0cmF0ZXVyc3xkZW1vfGxpcXVpZGF0aW9ufGNsZWFyYW5jZXxwcm9tb3Rpb25zfG5ldWZ8bmV3fG9jY2FzaW9ufHVzZWR8Y3JlZGl0fGZpbmFuY2VtZW50KSIpO2I9e2RlbW9uc3RyYXRldXJzOiJkZW1vIixjbGVhcmFuY2U6ImxpcXVpZGF0aW9uIiwibmV3IjoibmV1ZiIscHJvbW90aW9uczoicHJvbW8iLHVzZWQ6Im9jY2FzaW9uIixjcmVkaXQ6ImZpbmFuY2VtZW50In07cmV0dXJuIGMudGVzdChkLnRvTG93ZXJDYXNlKCkpPyhkPWQubWF0Y2goYyksbnVsbCE9ZCYmKGEucHVyY2hhc2VfaW50ZW50X3NlY3Rpb249InVuZGVmaW5lZCIhPXR5cGVvZiBiW2RbMV1dP2JbZFsxXV06ZFsxXSksITApOiExfShkb2N1bWVudC5sb2NhdGlvbik7cmV0dXJuIGF9KCksZW1haWxUcmFja2luZz1mdW5jdGlvbigpe3ZhciBlPXticmFuZDoiIixtb2RlbDoiIix5ZWFyOiIiLGlzcHJvbW86ITEsaXNleHByZXNzOiExLGlzaG9tZXBhZ2U6ITEsc2VjdGlvbjoiIiwKdGV4dENhclNlY3Rpb25UeXBlOiJVU0VEIixpc01vYmlsZU5ld1ZEUDohMSxpc0Z1bGxXaWR0aDohMSxidXR0b25Qb3NpdGlvbjoiIixkZWFsZXJOYW1lOiIifSxnPWZ1bmN0aW9uKGMpe3ZhciBmPVtdLGs9Yy5icmFuZD9jLmJyYW5kOmVtYWlsSGFuZGxlci5tYWtlLG09Yy5tb2RlbD9jLm1vZGVsOmVtYWlsSGFuZGxlci5tb2RlbDtjPWMueWVhcj9jLnllYXI6ZW1haWxIYW5kbGVyLnllYXI7ay5sZW5ndGgmJmYucHVzaChrKTttLmxlbmd0aCYmZi5wdXNoKG0pO2MubGVuZ3RoJiZmLnB1c2goYyk7cmV0dXJuIGYuam9pbigiLSIpfSxhPWZ1bmN0aW9uKGMpe3ZhciBmPXsiaG9tZXBhZ2UuaHRtbCI6IkhvbWUtUGFnZSIsImNvbnRhY3R1cy5odG1sIjoiQ29udGFjdFVzIiwibmV3Y2FyZGV0YWlsLmh0bWwiOiJOZXctVkRQIiwibmV3Y2Fycy5odG1sIjoiTmV3LVNSUCIsImJ1aWxkYW5kcHJpY2UuaHRtbCI6Ik5ldy1CJlAiLCJyZXN1bWUtYnVpbGRhbmRwcmljZS5odG1sIjoiTmV3LUImUC1SZXN1bWUiLAoiY29tcGFyZU5ld1ZlaGljbGVzLmh0bWwiOiJOZXctQ29tcGFyZSIsInVzZWRjYXJzLmh0bWwiOiJVc2VkLVNSUCIsImNhcmRldGFpbC5odG1sIjoiVXNlZC1WRFAiLCJjcmVkaXQuaHRtbCI6IkRlbWFuZGVzIC0gRmluYW5jZW1lbnQiLCJkZWFsZXJ0cmFjay5odG1sIjoiRGVtYW5kZXMgLSBGaW5hbmNlbWVudCIsInByb21vdGlvbi5odG1sIjoiUHJvbW90aW9ucyIsInByb21vdGlvbnNhbGVzLmh0bWwiOiJQcm9tb3Rpb25zIiwicHJvbW90aW9uc2VydmljZS5odG1sIjoiUHJvbW90aW9ucyIsInBhcnRzUmVxdWVzdC5odG1sIjoiRGVtYW5kZXMgLSBQae+\/vWNlcyIsInNlcnZpY2VzLmh0bWwiOiJTZXJ2aWNlIiwic2VydmljZVJlcXVlc3QuaHRtbCI6IkRlbWFuZGVzIC0gUkRWIFNlcnZpY2UiLCJib2R5U2hvcC5odG1sIjoiRGVtYW5kZXMgLSBSRFYgQ2Fyb3NzZXJpZSIsInRpcmVzUmVxdWVzdC5odG1sIjoiRGVtYW5kZXMgLSBQbmV1cyIsIm91cnRlYW0uaHRtbCI6IlRlYW0iLCJ0ZXN0ZHJpdmUuaHRtbCI6IkRlbWFuZGVzIC0gRXNzYWlzLVJvdXRpZXItT2NjYXNpb24iLAoidGVzdGRyaXZlbmV3Lmh0bWwiOiJEZW1hbmRlcyAtIEVzc2Fpcy1Sb3V0aWVyLU5ldWYiLCJicm9jaHVyZXMuaHRtbCI6IkRlbWFuZGVzIC0gQnJvY2h1cmVzIiwiam9ib2ZmZXIuaHRtbCI6IkRlbWFuZGVzIC0gRW1wbG9pcyIsIm1ha2VvZmZlcm5ldy5odG1sIjoiRGVtYW5kZXMgLSBPZmZyZSAtIE5ldWYiLCJtYWtlb2ZmZXIuaHRtbCI6IkRlbWFuZGVzIC0gT2ZmcmUgLSBPY2Nhc2lvbiIsInByaWNlcmVxdWVzdG5ldy5odG1sIjoiRGVtYW5kZXMgLSBQcml4IC0gTmV1ZiIsInByaWNlcmVxdWVzdC5odG1sIjoiRGVtYW5kZXMgLSBQcml4IC0gT2NjYXNpb24iLCJmaW5kY2FyLmh0bWwiOiJEZW1hbmRlcyAtIFJlY2hlcmNoZSBPY2Nhc2lvbiIsInRyYWRlaW5uZXcuaHRtbCI6IkRlbWFuZGVzIC0gRWNoYW5nZSBOZXVmIiwidHJhZGVpbi5odG1sIjoiRGVtYW5kZXMgLSBFY2hhbmdlIE9jY2FzaW9uIn0saz0tMSE9KGMuY3VycmVudFVSTHx8IiIpLmluZGV4T2YoInN0ZXA9cmVzdW1lIiksCm09LTEhPShjLmN1cnJlbnRVUkx8fCIiKS5pbmRleE9mKCJzdGVwPW9wdGlvbnMiKTsiYnVpbGRhbmRwcmljZS5odG1sIj09Yy5wYWdlSUQmJihrfHxtKSYmKGMucGFnZUlEPSJyZXN1bWUtYnVpbGRhbmRwcmljZS5odG1sIik7cmV0dXJuInVuZGVmaW5lZCIhPXR5cGVvZiBmW2MucGFnZUlEXT9mW2MucGFnZUlEXToiT3RoZXIifSxiPWZ1bmN0aW9uKGMpe3ZhciBmPSJEZW1hbmRlcyIsaz1jLmJyYW5kP2MuYnJhbmQ6ZW1haWxIYW5kbGVyLm1ha2UsbT1jLm1vZGVsP2MubW9kZWw6ZW1haWxIYW5kbGVyLm1vZGVsO2MuaXNwcm9tbyYmKGYrPSItUHJvbW90aW9uIik7MDxrLmxlbmd0aCYmMDxtLmxlbmd0aCYmIWMuaXNob21lcGFnZT9mPWMuaXNwcm9tbz9mKygiLSIrZyhjKSk6ZitbIiIsayxtLGMuc2VjdGlvbl0uam9pbigiLSIpOmMuaXNwcm9tbyYmYy5pc2hvbWVwYWdlJiYoZis9Ii1JbmRleCIpOyIxIj09Yy5pc2V4cHJlc3MmJihjLnRleHRDYXJTZWN0aW9uVHlwZSYmKGY9IkRlbWFuZGVzLUV4cHJlc3MiKSwKZis9Ii0iK2coYyksZis9Ii0iK2Muc2VjdGlvbik7cmV0dXJuIGZ9LGQ9ZnVuY3Rpb24oYyl7dmFyIGY9MTIwMDx3aW5kb3cuc2NyZWVuLmF2YWlsV2lkdGg\/Ij4xMjAwcHggLSAiLmlzRnVsbFdpZHRoOiI8MTIwMHB4IC0gTm9ybWFsIFZEUCI7W2YsYy5idXR0b25Qb3NpdGlvbl0uam9pbigiLSIpO2M9W2MuZGVhbGVyTmFtZSxmLCJMZWFkIl0uam9pbigiLSIpO2dhVHJhY2soImMiLCJOZXctVkRQLURlc2t0b3AtTGF5b3V0LUNSIixhY3Rpb24sYywxKX07dGhpcy50cmFjaz1mdW5jdGlvbihjKXtpZihnZXRDb29raWUoImxlYWRTZW5kIikpcmV0dXJuIGRlYnVnKCJsZWFkIHNlbnQiKTtzZXRDb29raWUoImxlYWRTZW5kIiwhMCwxKTtjPSQuZXh0ZW5kKHt9LGUsYyk7Yy5jdXJyZW50VVJMPWMuY3VycmVudFVSTD9jLmN1cnJlbnRVUkw6d2luZG93LmxvY2F0aW9uLmhyZWY7Yy5pc3Byb21vPSIxIj09Yy5pc3Byb21vO2MuaXNob21lcGFnZT0iMSI9PWMuaXNob21lcGFnZTt2YXIgZj1hKGMpOwpnYVRyYWNrKCIiLCJDb3VycmllbHMiLGMubGFiZWwsYihjKSwxKTtnYVRyYWNrKCJjIiwiQ291cnJpZWxzLWRlcHQiLGMuZGVwYXJ0bWVudCxnKGMpLDEpO2dhVHJhY2soImMiLCJDb3VycmllbHMtcGFnZSIsZixjLmxlYWRUeXBlLDEpO2MuaXNNb2JpbGVOZXdWRFAmJiJOZXctVkRQIj09ZiYmZChjKTt0cnl7ZDJjX2dhQWNjb3VudHMuYWxsLm1hcChmdW5jdGlvbihrKXtndGFnKCJjb25maWciLGsse3BhZ2VfcGF0aDoiL2NvbmZpcm1hdGlvbi5odG1sIn0pfSksZ3RhZygiY29uZmlnIiwiRy1aNVE4WjVDN0tGIix7cGFnZV9wYXRoOiIvY29uZmlybWF0aW9uLmh0bWwifSl9Y2F0Y2goayl7ZGVidWcoayl9fTtyZXR1cm4gdGhpc30oKSxnZXRNYWlsU2VudEhhbmRsZXI9ZnVuY3Rpb24oZSl7dmFyIGc9e3RpbWVvdXRDYWxsYmFjazpudWxsLHRpbWVvdXQ6bnVsbH07Zy5pZFRvQWRkPWU\/ZToiIjskKCIjZW1haWxTdWNjZXNzTWVzc2FnZSIpLmZpbmQoIi5kZWZhdWx0U3VjY2VzcyIpLnNob3coKTsKJCgiI2VtYWlsU3VjY2Vzc01lc3NhZ2UiKS5maW5kKCIuc2VydmljZVN1Y2Nlc3MiKS5oaWRlKCk7JCgiI2VtYWlsU3VjY2Vzc01lc3NhZ2UiK2UpLmxlbmd0aHx8KGU9IiIsZy5pZFRvQWRkPSIiLCJTRVJWSUNFIiE9ZW1haWxIYW5kbGVyLmRlcGFydG1lbnQmJiJQQVJUUyIhPWVtYWlsSGFuZGxlci5kZXBhcnRtZW50KXx8KCQoIiNlbWFpbFN1Y2Nlc3NNZXNzYWdlIikuZmluZCgiLmRlZmF1bHRTdWNjZXNzIikuaGlkZSgpLCQoIiNlbWFpbFN1Y2Nlc3NNZXNzYWdlIikuZmluZCgiLnNlcnZpY2VTdWNjZXNzIikuc2hvdygpKTtnLnNob3dTdWNjZXNzPWZ1bmN0aW9uKCl7Z2V0Q29va2llKCJwcmV2ZW50RHVwbGljYXRlQ3JlZGl0U2NvcmUiKXx8Z2V0Q29va2llKCJjcmVkaXRTY29yZUNvbmZpcm1Qb3B1cFNob3duIil8fGdldENvb2tpZSgiY3JlZGl0U2NvcmVFbWJlZGRlZEZpbGxlZCIpfHwiIiE9ZW1haWxIYW5kbGVyLnVzZXJQaG9uZSYmIiIhPWVtYWlsSGFuZGxlci51c2VyQWRkcmVzcyYmCiIiIT1lbWFpbEhhbmRsZXIuYmlydGhkYXRlfHwibmV3IiE9ZW1haWxIYW5kbGVyLmRlcGFydG1lbnQudG9Mb3dlckNhc2UoKSYmInVzZWQiIT1lbWFpbEhhbmRsZXIuZGVwYXJ0bWVudC50b0xvd2VyQ2FzZSgpfHwhJCgiI2NyZWRpdFNjb3JlQ29uZmlybVBvcHVwQ29udGFpbmVyIikubGVuZ3RofHwiVHJhZGVJbkJhclBvcHVwQ29udGFpbmVyIj09ZW1haWxIYW5kbGVyLnBvcHVwZGl2PygkKCIjZW1haWxTdWNjZXNzTWVzc2FnZSIrZSkucGFyZW50KCkuaXMoImJvZHkiKXx8JCgiI2VtYWlsU3VjY2Vzc01lc3NhZ2UiK2UpLmFwcGVuZFRvKCJib2R5IiksJCgiI2VtYWlsU3VjY2Vzc01lc3NhZ2UiK2UpLnJldmVhbCh7YW5pbWF0aW9uOiJmYWRlQW5kUG9wIixhbmltYXRpb25zcGVlZDozMDAsY2xvc2VvbmJhY2tncm91bmRjbGljazohMSxkaXNtaXNzbW9kYWxjbGFzczoiY2xvc2UtcmV2ZWFsLW1vZGFsIn0pLCQoIiNlbWFpbFN1Y2Nlc3NNZXNzYWdlIitlKyIgLmNvbmZpcm1fc3VjY2Vzc0NvbnRpbnVlIikub24oImNsaWNrIiwKZy5jbG9zZVN1Y2Nlc3MpKTokKCIjY3JlZGl0U2NvcmVDb25maXJtUG9wdXBDb250YWluZXIiKS5wb3B1cGl6ZSgpLnNldFRyaWdnZXIoImNsaWNrIikub3BlbigxKTskKCIudWktbG9hZGVyLWJhY2tncm91bmQiKS5oaWRlKCk7JCgiI2VtYWlsbXNnZnJtIitnLmlkVG9BZGQpLnRyaWdnZXIoInN1Ym1pdCIpfTtnLmNsb3NlU3VjY2Vzcz1mdW5jdGlvbigpeyQoIiNlbWFpbFN1Y2Nlc3NNZXNzYWdlIitnLmlkVG9BZGQpLnRyaWdnZXIoInJldmVhbDpjbG9zZSIpO251bGwhPWcudGltZW91dENhbGxiYWNrJiZnLnRpbWVvdXRDYWxsYmFjaygpO3JldHVybiExfTtnLnNob3dGYWlsPWZ1bmN0aW9uKCl7JCgiI2VtYWlsRmFpbE1lc3NhZ2UiK2cuaWRUb0FkZCkucmV2ZWFsKHthbmltYXRpb246ImZhZGVBbmRQb3AiLGFuaW1hdGlvbnNwZWVkOjMwMCxjbG9zZW9uYmFja2dyb3VuZGNsaWNrOiExLGRpc21pc3Ntb2RhbGNsYXNzOiJjbG9zZS1yZXZlYWwtbW9kYWwifSk7JCgiI2VtYWlsRmFpbE1lc3NhZ2UiKwplKyIgLmNvbmZpcm1fZmFpbENvbnRpbnVlIikub24oImNsaWNrIixmdW5jdGlvbigpeyQoIiNlbWFpbEZhaWxNZXNzYWdlIitlKS50cmlnZ2VyKCJyZXZlYWw6Y2xvc2UiKX0pOyQoIi51aS1sb2FkZXItYmFja2dyb3VuZCIpLmhpZGUoKX07cmV0dXJuIGd9LG1haWxTZW50SGFuZGxlcj1uZXcgZ2V0TWFpbFNlbnRIYW5kbGVyKCIiKTtmdW5jdGlvbiBzdG9yYWdlQXZhaWxhYmxlKGUpe3RyeXt2YXIgZz13aW5kb3dbZV07Zy5zZXRJdGVtKCJfX3N0b3JhZ2VfdGVzdF9fIiwiX19zdG9yYWdlX3Rlc3RfXyIpO2cucmVtb3ZlSXRlbSgiX19zdG9yYWdlX3Rlc3RfXyIpO3JldHVybiEwfWNhdGNoKGEpe3JldHVybiBhIGluc3RhbmNlb2YgRE9NRXhjZXB0aW9uJiYoMjI9PT1hLmNvZGV8fDEwMTQ9PT1hLmNvZGV8fCJRdW90YUV4Y2VlZGVkRXJyb3IiPT09YS5uYW1lfHwiTlNfRVJST1JfRE9NX1FVT1RBX1JFQUNIRUQiPT09YS5uYW1lKSYmZyYmMCE9PWcubGVuZ3RofX0KdmFyIGZvcm1GaWxsPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcyxnPXN0b3JhZ2VBdmFpbGFibGUoImxvY2FsU3RvcmFnZSIpLGE9bnVsbCxiPSEwLGQ9W10sYz17bmFtZTpbImlucHV0Lm5hbWUiLCdpbnB1dFtuYW1lPSJuYW1lIl0nXSxwb3N0YWw6WyJpbnB1dC5wb3N0YWwiLCdpbnB1dFtuYW1lPSJwb3N0YWwiXSddLGZpcnN0TmFtZTonaW5wdXQuZmlyc3ROYW1lIGlucHV0LmZpcnN0bmFtZSBpbnB1dFtuYW1lPSJmaXJzdG5hbWUiXSBpbnB1dFtuYW1lPSJmaXJzdE5hbWUiXSBpbnB1dCNmaXJzdG5hbWUgaW5wdXQjZmlyc3ROYW1lIGlucHV0I21pbmlfZm5hbWUnLnNwbGl0KCIgIiksbGFzdE5hbWU6J2lucHV0Lmxhc3ROYW1lIGlucHV0Lmxhc3RuYW1lIGlucHV0W25hbWU9Imxhc3RuYW1lIl0gaW5wdXRbbmFtZT0ibGFzdE5hbWUiXSBpbnB1dCNsYXN0bmFtZSBpbnB1dCNsYXN0TmFtZSBpbnB1dCNtaW5pX2xuYW1lJy5zcGxpdCgiICIpLHBob25lOlsiaW5wdXQucGhvbmUiLCdpbnB1dFtuYW1lPSJwaG9uZSJdJywKJ2lucHV0W25hbWU9InBob25lTnVtYmVyIl0nLCJpbnB1dCNtaW5pX3Bob25lIiwnW3R5cGU9InRlbCJdJ10sZW1haWw6WyJpbnB1dC5lbWFpbCIsJ2lucHV0W25hbWU9ImVtYWlsIl0nLCdpbnB1dFtuYW1lPSJlbWFpbEFkZHJlc3MiXScsImlucHV0I21pbmlfZW1haWwiXX0sZj1mdW5jdGlvbihwKXtpZighZylyZXR1cm4hMTt2YXIgaD1sb2NhbFN0b3JhZ2UuZ2V0SXRlbSgiZm9ybUZpbGxEYXRhIik7aWYobnVsbD09PWgpcmV0dXJuITE7JC5hamF4KHt0eXBlOiJQT1NUIix1cmw6Ii9wcm94eV9zZDJjL3NlcnZpY2UvZDJjLmVuY3J5cHRpb24uZ2V0IixkYXRhOntkYXRhOmh9fSkuZG9uZShmdW5jdGlvbihsKXtpZihsJiYiZnVuY3Rpb24iPT09dHlwZW9mIHApdHJ5e3AoSlNPTi5wYXJzZShsLmRhdGEpKX1jYXRjaCh1KXtjb25zb2xlLmxvZyh1KX19KX0saz1mdW5jdGlvbigpe2I9ITA7YT1udWxsO2QuZm9yRWFjaChmdW5jdGlvbihwKXtwLmZpbGxlZD0hMX0pfSxtPWZ1bmN0aW9uKHApe3EoInVzZXIubG9hZGVkIiwKZnVuY3Rpb24oKXtpZighbihwKSl7ZC5wdXNoKHtzY29wZTpwLGZpbGxlZDohMH0pO2Zvcih2YXIgaCBpbiBjKWEuaGFzT3duUHJvcGVydHkoaCkmJnAuZmluZCgkKGNbaF0uam9pbigiLCIpKSkudmFsKGFbaF0pO3IoImZvcm0uZmlsbGVkIil9fSk7bnVsbD09PWEmJmI\/KGI9ITEsZihmdW5jdGlvbihoKXtoLnBvc3RhbD1oLnBvc3RhbC50b1VwcGVyQ2FzZSgpO2guZmlyc3ROYW1lPWguZmlyc3ROYW1lLnRyaW0oKTtoLmxhc3ROYW1lPWgubGFzdE5hbWUudHJpbSgpO2VtYWlsSGFuZGxlci51c2VyUG9zdGFsPWgucG9zdGFsO2VtYWlsSGFuZGxlci51c2VyRW1haWw9aC5lbWFpbDtlbWFpbEhhbmRsZXIudXNlckZpcnN0TmFtZT1oLmZpcnN0TmFtZTtlbWFpbEhhbmRsZXIudXNlckxhc3ROYW1lPWgubGFzdE5hbWU7ZW1haWxIYW5kbGVyLnVzZXJQaG9uZT1oLnBob25lO2gubmFtZT0oaC5maXJzdE5hbWUrIiAiK2gubGFzdE5hbWUpLnRyaW0oKTthPWg7cigidXNlci5sb2FkZWQiKX0pKToKYSYmcigidXNlci5sb2FkZWQiKX0sbj1mdW5jdGlvbihwKXtyZXR1cm4oX3Njb3BlPWQuZmluZChmdW5jdGlvbihoKXtpZihoLnNjb3BlLmlzKHApKXJldHVybiBofSkpP19zY29wZS5maWxsZWQ6ITF9LHQ9W10scj1mdW5jdGlvbihwKXt2YXIgaD1bXS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKTtpZih0W3BdKXt2YXIgbD10W3BdLnNsaWNlKCk7dmFyIHU9bC5sZW5ndGg7Zm9yKGk9MDtpPHU7aSsrKWxbaV0uYXBwbHkodGhpcyxoKX19LHY9ZnVuY3Rpb24ocCxoKXt0W3BdfHwodFtwXT1bXSk7dFtwXS5wdXNoKGgpfSxxPWZ1bmN0aW9uKHAsaCl7dihwLGZ1bmN0aW9uIHUoKXt0W3BdLnNwbGljZSh0W3BdLmluZGV4T2YodSksMSk7aC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9KX07JChmdW5jdGlvbigpe2cmJigkKGRvY3VtZW50KS5vbigicG9wdXBpemVyLm9uT3BlbiIsZnVuY3Rpb24ocCxoKXtwPWgudGFyZ2V0P2gudGFyZ2V0OiQoaCk7bShwKX0pLCQoZG9jdW1lbnQpLm9uKCJwb3B1cGl6ZXIub25DbG9zZSIsCmZ1bmN0aW9uKHAsaCl7fSksJCgiZm9ybSIpLmVhY2goZnVuY3Rpb24ocCxoKXttKCQoaCkpfSkpfSk7cmV0dXJuIGU9e3NhdmU6ZnVuY3Rpb24ocCl7aWYoIWcpcmV0dXJuITE7YSYmIiI9PT1wLnBvc3RhbCYmKHAucG9zdGFsPWEucG9zdGFsKTskLmFqYXgoe3R5cGU6IlBPU1QiLHVybDoiL3Byb3h5X3NkMmMvc2VydmljZS9kMmMuZW5jcnlwdGlvbi5zZXQiLGRhdGE6e2RhdGE6SlNPTi5zdHJpbmdpZnkocCl9fSkuZG9uZShmdW5jdGlvbihoKXtoJiYobG9jYWxTdG9yYWdlLnNldEl0ZW0oImZvcm1GaWxsRGF0YSIsaC5kYXRhKSxrKCkpfSl9fX0oKTsKLyoqIC9tL2pzL2poYXNodGFibGUuanMgKiovCnZhciBfX19kMmNfamhhc2h0YWJsZWpzX2Nfb249IjIwMjUtMDUtMjMgMTc6MDc6MDciOyd1c2Ugc3RyaWN0Jzt2YXIgX19fZDJjX2poYXNodGFibGVqc19jX29uPSIyMDI0LTAxLTMxIDE0OjM1OjE5IjsidXNlIHN0cmljdCI7X19fZDJjX2poYXNodGFibGVqc19jX29uPSIyMDIzLTAxLTEyIDExOjMzOjQ5IjsidXNlIHN0cmljdCI7X19fZDJjX2poYXNodGFibGVqc19jX29uPSIyMDIzLTAxLTEyIDEwOjQzOjMzIjsidXNlIHN0cmljdCI7X19fZDJjX2poYXNodGFibGVqc19jX29uPSIyMDIxLTEyLTE1IDEyOjQwOjEzIjsidXNlIHN0cmljdCI7CnZhciBIYXNodGFibGU9ZnVuY3Rpb24oKXtmdW5jdGlvbiB1KGEpe2lmKCJzdHJpbmciPT10eXBlb2YgYSlyZXR1cm4gYTtpZigiZnVuY3Rpb24iPT10eXBlb2YgYS5oYXNoQ29kZSlyZXR1cm4gYT1hLmhhc2hDb2RlKCksInN0cmluZyI9PXR5cGVvZiBhP2E6dShhKTtpZigiZnVuY3Rpb24iPT10eXBlb2YgYS50b1N0cmluZylyZXR1cm4gYS50b1N0cmluZygpO3RyeXtyZXR1cm4gU3RyaW5nKGEpfWNhdGNoKGMpe3JldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoYSl9fWZ1bmN0aW9uIEIoYSxjKXtyZXR1cm4gYS5lcXVhbHMoYyl9ZnVuY3Rpb24gQyhhLGMpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBjLmVxdWFscz9jLmVxdWFscyhhKTphPT09Y31mdW5jdGlvbiB2KGEpe3JldHVybiBmdW5jdGlvbihjKXtpZihudWxsPT09Yyl0aHJvdyBFcnJvcigibnVsbCBpcyBub3QgYSB2YWxpZCAiK2EpO2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgYyl0aHJvdyBFcnJvcihhKwoiIG11c3Qgbm90IGJlIHVuZGVmaW5lZCIpO319ZnVuY3Rpb24gcShhLGMsaCxkKXt0aGlzWzBdPWE7dGhpcy5lbnRyaWVzPVtdO3RoaXMuYWRkRW50cnkoYyxoKTtudWxsIT09ZCYmKHRoaXMuZ2V0RXF1YWxpdHlGdW5jdGlvbj1mdW5jdGlvbigpe3JldHVybiBkfSl9ZnVuY3Rpb24gcihhKXtyZXR1cm4gZnVuY3Rpb24oYyl7Zm9yKHZhciBoPXRoaXMuZW50cmllcy5sZW5ndGgsZCxrPXRoaXMuZ2V0RXF1YWxpdHlGdW5jdGlvbihjKTtoLS07KWlmKGQ9dGhpcy5lbnRyaWVzW2hdLGsoYyxkWzBdKSlzd2l0Y2goYSl7Y2FzZSAwOnJldHVybiEwO2Nhc2UgMTpyZXR1cm4gZDtjYXNlIDI6cmV0dXJuW2gsZFsxXV19cmV0dXJuITF9fWZ1bmN0aW9uIHcoYSl7cmV0dXJuIGZ1bmN0aW9uKGMpe2Zvcih2YXIgaD1jLmxlbmd0aCxkPTAsaz10aGlzLmVudHJpZXMubGVuZ3RoO2Q8azsrK2QpY1toK2RdPXRoaXMuZW50cmllc1tkXVthXX19ZnVuY3Rpb24gbShhLGMpe3JldHVybihhPWFbY10pJiYKYSBpbnN0YW5jZW9mIHE\/YTpudWxsfWZ1bmN0aW9uIHgoYSxjKXt2YXIgaD10aGlzLGQ9W10saz17fSxuPSJmdW5jdGlvbiI9PXR5cGVvZiBhP2E6dSxEPSJmdW5jdGlvbiI9PXR5cGVvZiBjP2M6bnVsbDt0aGlzLnB1dD1mdW5jdGlvbihiLGUpe3AoYik7eShlKTt2YXIgZj1uKGIpLGcsbD1udWxsOyhnPW0oayxmKSk\/KGY9Zy5nZXRFbnRyeUZvcktleShiKSk\/KGw9ZlsxXSxmWzFdPWUpOmcuYWRkRW50cnkoYixlKTooZz1uZXcgcShmLGIsZSxEKSxkW2QubGVuZ3RoXT1nLGtbZl09Zyk7cmV0dXJuIGx9O3RoaXMuZ2V0PWZ1bmN0aW9uKGIpe3AoYik7dmFyIGU9bihiKTtpZihlPW0oayxlKSlpZihiPWUuZ2V0RW50cnlGb3JLZXkoYikpcmV0dXJuIGJbMV07cmV0dXJuIG51bGx9O3RoaXMuY29udGFpbnNLZXk9ZnVuY3Rpb24oYil7cChiKTt2YXIgZT1uKGIpO3JldHVybihlPW0oayxlKSk\/ZS5jb250YWluc0tleShiKTohMX07dGhpcy5jb250YWluc1ZhbHVlPWZ1bmN0aW9uKGIpe3koYik7CmZvcih2YXIgZT1kLmxlbmd0aDtlLS07KWlmKGRbZV0uY29udGFpbnNWYWx1ZShiKSlyZXR1cm4hMDtyZXR1cm4hMX07dGhpcy5jbGVhcj1mdW5jdGlvbigpe2QubGVuZ3RoPTA7az17fX07dGhpcy5pc0VtcHR5PWZ1bmN0aW9uKCl7cmV0dXJuIWQubGVuZ3RofTt2YXIgdD1mdW5jdGlvbihiKXtyZXR1cm4gZnVuY3Rpb24oKXtmb3IodmFyIGU9W10sZj1kLmxlbmd0aDtmLS07KWRbZl1bYl0oZSk7cmV0dXJuIGV9fTt0aGlzLmtleXM9dCgia2V5cyIpO3RoaXMudmFsdWVzPXQoInZhbHVlcyIpO3RoaXMuZW50cmllcz10KCJnZXRFbnRyaWVzIik7dGhpcy5yZW1vdmU9ZnVuY3Rpb24oYil7cChiKTt2YXIgZT1uKGIpLGY9bnVsbCxnPW0oayxlKTtpZihnJiYoZj1nLnJlbW92ZUVudHJ5Rm9yS2V5KGIpLG51bGwhPT1mJiYhZy5lbnRyaWVzLmxlbmd0aCkpe2E6e2ZvcihiPWQubGVuZ3RoO2ItLTspaWYoZz1kW2JdLGU9PT1nWzBdKWJyZWFrIGE7Yj1udWxsfXooZCxiKTtkZWxldGUga1tlXX1yZXR1cm4gZn07CnRoaXMuc2l6ZT1mdW5jdGlvbigpe2Zvcih2YXIgYj0wLGU9ZC5sZW5ndGg7ZS0tOyliKz1kW2VdLmVudHJpZXMubGVuZ3RoO3JldHVybiBifTt0aGlzLmVhY2g9ZnVuY3Rpb24oYil7Zm9yKHZhciBlPWguZW50cmllcygpLGY9ZS5sZW5ndGgsZztmLS07KWc9ZVtmXSxiKGdbMF0sZ1sxXSl9O3RoaXMucHV0QWxsPWZ1bmN0aW9uKGIsZSl7Yj1iLmVudHJpZXMoKTtmb3IodmFyIGYsZyxsLEE9Yi5sZW5ndGgsRT0iZnVuY3Rpb24iPT10eXBlb2YgZTtBLS07KWY9YltBXSxnPWZbMF0sZj1mWzFdLEUmJihsPWguZ2V0KGcpKSYmKGY9ZShnLGwsZikpLGgucHV0KGcsZil9O3RoaXMuY2xvbmU9ZnVuY3Rpb24oKXt2YXIgYj1uZXcgeChhLGMpO2IucHV0QWxsKGgpO3JldHVybiBifX12YXIgej0iZnVuY3Rpb24iPT10eXBlb2YgQXJyYXkucHJvdG90eXBlLnNwbGljZT9mdW5jdGlvbihhLGMpe2Euc3BsaWNlKGMsMSl9OmZ1bmN0aW9uKGEsYyl7dmFyIGg7aWYoYz09PWEubGVuZ3RoLTEpYS5sZW5ndGg9CmM7ZWxzZXt2YXIgZD1hLnNsaWNlKGMrMSk7YS5sZW5ndGg9Yzt2YXIgaz0wO2ZvcihoPWQubGVuZ3RoO2s8aDsrK2spYVtjK2tdPWRba119fSxwPXYoImtleSIpLHk9digidmFsdWUiKTtxLnByb3RvdHlwZT17Z2V0RXF1YWxpdHlGdW5jdGlvbjpmdW5jdGlvbihhKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgYS5lcXVhbHM\/QjpDfSxnZXRFbnRyeUZvcktleTpyKDEpLGdldEVudHJ5QW5kSW5kZXhGb3JLZXk6cigyKSxyZW1vdmVFbnRyeUZvcktleTpmdW5jdGlvbihhKXtyZXR1cm4oYT10aGlzLmdldEVudHJ5QW5kSW5kZXhGb3JLZXkoYSkpPyh6KHRoaXMuZW50cmllcyxhWzBdKSxhWzFdKTpudWxsfSxhZGRFbnRyeTpmdW5jdGlvbihhLGMpe3RoaXMuZW50cmllc1t0aGlzLmVudHJpZXMubGVuZ3RoXT1bYSxjXX0sa2V5czp3KDApLHZhbHVlczp3KDEpLGdldEVudHJpZXM6ZnVuY3Rpb24oYSl7Zm9yKHZhciBjPWEubGVuZ3RoLGg9MCxkPXRoaXMuZW50cmllcy5sZW5ndGg7aDxkOysraClhW2MrCmhdPXRoaXMuZW50cmllc1toXS5zbGljZSgwKX0sY29udGFpbnNLZXk6cigwKSxjb250YWluc1ZhbHVlOmZ1bmN0aW9uKGEpe2Zvcih2YXIgYz10aGlzLmVudHJpZXMubGVuZ3RoO2MtLTspaWYoYT09PXRoaXMuZW50cmllc1tjXVsxXSlyZXR1cm4hMDtyZXR1cm4hMX19O3JldHVybiB4fSgpOwovKiogL20vanMvbmV3Y2Fycy5qcyAqKi8KdmFyIF9fX2QyY19uZXdjYXJzanNfY19vbj0iMjAyNi0wMS0xMiAxMDoxNDoxMiI7J3VzZSBzdHJpY3QnO3ZhciAkanNjb21wPSRqc2NvbXB8fHt9OyRqc2NvbXAuc2NvcGU9e307JGpzY29tcC5BU1NVTUVfRVM1PSExOyRqc2NvbXAuQVNTVU1FX05PX05BVElWRV9NQVA9ITE7JGpzY29tcC5BU1NVTUVfTk9fTkFUSVZFX1NFVD0hMTskanNjb21wLlNJTVBMRV9GUk9VTkRfUE9MWUZJTEw9ITE7JGpzY29tcC5JU09MQVRFX1BPTFlGSUxMUz0hMTskanNjb21wLkZPUkNFX1BPTFlGSUxMX1BST01JU0U9ITE7JGpzY29tcC5GT1JDRV9QT0xZRklMTF9QUk9NSVNFX1dIRU5fTk9fVU5IQU5ETEVEX1JFSkVDVElPTj0hMTskanNjb21wLmRlZmluZVByb3BlcnR5PSRqc2NvbXAuQVNTVU1FX0VTNXx8ImZ1bmN0aW9uIj09dHlwZW9mIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzP09iamVjdC5kZWZpbmVQcm9wZXJ0eTpmdW5jdGlvbihhLGIsZSl7aWYoYT09QXJyYXkucHJvdG90eXBlfHxhPT1PYmplY3QucHJvdG90eXBlKXJldHVybiBhO2FbYl09ZS52YWx1ZTtyZXR1cm4gYX07CiRqc2NvbXAuZ2V0R2xvYmFsPWZ1bmN0aW9uKGEpe2E9WyJvYmplY3QiPT10eXBlb2YgZ2xvYmFsVGhpcyYmZ2xvYmFsVGhpcyxhLCJvYmplY3QiPT10eXBlb2Ygd2luZG93JiZ3aW5kb3csIm9iamVjdCI9PXR5cGVvZiBzZWxmJiZzZWxmLCJvYmplY3QiPT10eXBlb2YgZ2xvYmFsJiZnbG9iYWxdO2Zvcih2YXIgYj0wO2I8YS5sZW5ndGg7KytiKXt2YXIgZT1hW2JdO2lmKGUmJmUuTWF0aD09TWF0aClyZXR1cm4gZX10aHJvdyBFcnJvcigiQ2Fubm90IGZpbmQgZ2xvYmFsIG9iamVjdCIpO307JGpzY29tcC5nbG9iYWw9JGpzY29tcC5nZXRHbG9iYWwodGhpcyk7JGpzY29tcC5JU19TWU1CT0xfTkFUSVZFPSJmdW5jdGlvbiI9PT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09PXR5cGVvZiBTeW1ib2woIngiKTskanNjb21wLlRSVVNUX0VTNl9QT0xZRklMTFM9ISRqc2NvbXAuSVNPTEFURV9QT0xZRklMTFN8fCRqc2NvbXAuSVNfU1lNQk9MX05BVElWRTskanNjb21wLnBvbHlmaWxscz17fTsKJGpzY29tcC5wcm9wZXJ0eVRvUG9seWZpbGxTeW1ib2w9e307JGpzY29tcC5QT0xZRklMTF9QUkVGSVg9IiRqc2NwJCI7dmFyICRqc2NvbXAkbG9va3VwUG9seWZpbGxlZFZhbHVlPWZ1bmN0aW9uKGEsYil7dmFyIGU9JGpzY29tcC5wcm9wZXJ0eVRvUG9seWZpbGxTeW1ib2xbYl07aWYobnVsbD09ZSlyZXR1cm4gYVtiXTtlPWFbZV07cmV0dXJuIHZvaWQgMCE9PWU\/ZTphW2JdfTskanNjb21wLnBvbHlmaWxsPWZ1bmN0aW9uKGEsYixlLGcpe2ImJigkanNjb21wLklTT0xBVEVfUE9MWUZJTExTPyRqc2NvbXAucG9seWZpbGxJc29sYXRlZChhLGIsZSxnKTokanNjb21wLnBvbHlmaWxsVW5pc29sYXRlZChhLGIsZSxnKSl9OwokanNjb21wLnBvbHlmaWxsVW5pc29sYXRlZD1mdW5jdGlvbihhLGIsZSxnKXtlPSRqc2NvbXAuZ2xvYmFsO2E9YS5zcGxpdCgiLiIpO2ZvcihnPTA7ZzxhLmxlbmd0aC0xO2crKyl7dmFyIGg9YVtnXTtpZighKGggaW4gZSkpcmV0dXJuO2U9ZVtoXX1hPWFbYS5sZW5ndGgtMV07Zz1lW2FdO2I9YihnKTtiIT1nJiZudWxsIT1iJiYkanNjb21wLmRlZmluZVByb3BlcnR5KGUsYSx7Y29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOmJ9KX07CiRqc2NvbXAucG9seWZpbGxJc29sYXRlZD1mdW5jdGlvbihhLGIsZSxnKXt2YXIgaD1hLnNwbGl0KCIuIik7YT0xPT09aC5sZW5ndGg7Zz1oWzBdO2c9IWEmJmcgaW4gJGpzY29tcC5wb2x5ZmlsbHM\/JGpzY29tcC5wb2x5ZmlsbHM6JGpzY29tcC5nbG9iYWw7Zm9yKHZhciBuPTA7bjxoLmxlbmd0aC0xO24rKyl7dmFyIHQ9aFtuXTtpZighKHQgaW4gZykpcmV0dXJuO2c9Z1t0XX1oPWhbaC5sZW5ndGgtMV07ZT0kanNjb21wLklTX1NZTUJPTF9OQVRJVkUmJiJlczYiPT09ZT9nW2hdOm51bGw7Yj1iKGUpO251bGwhPWImJihhPyRqc2NvbXAuZGVmaW5lUHJvcGVydHkoJGpzY29tcC5wb2x5ZmlsbHMsaCx7Y29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOmJ9KTpiIT09ZSYmKHZvaWQgMD09PSRqc2NvbXAucHJvcGVydHlUb1BvbHlmaWxsU3ltYm9sW2hdJiYoZT0xRTkqTWF0aC5yYW5kb20oKT4+PjAsJGpzY29tcC5wcm9wZXJ0eVRvUG9seWZpbGxTeW1ib2xbaF09JGpzY29tcC5JU19TWU1CT0xfTkFUSVZFPwokanNjb21wLmdsb2JhbC5TeW1ib2woaCk6JGpzY29tcC5QT0xZRklMTF9QUkVGSVgrZSsiJCIraCksJGpzY29tcC5kZWZpbmVQcm9wZXJ0eShnLCRqc2NvbXAucHJvcGVydHlUb1BvbHlmaWxsU3ltYm9sW2hdLHtjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6Yn0pKSl9OyRqc2NvbXAudW5kZXJzY29yZVByb3RvQ2FuQmVTZXQ9ZnVuY3Rpb24oKXt2YXIgYT17YTohMH0sYj17fTt0cnl7cmV0dXJuIGIuX19wcm90b19fPWEsYi5hfWNhdGNoKGUpe31yZXR1cm4hMX07CiRqc2NvbXAuc2V0UHJvdG90eXBlT2Y9JGpzY29tcC5UUlVTVF9FUzZfUE9MWUZJTExTJiYiZnVuY3Rpb24iPT10eXBlb2YgT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZjokanNjb21wLnVuZGVyc2NvcmVQcm90b0NhbkJlU2V0KCk\/ZnVuY3Rpb24oYSxiKXthLl9fcHJvdG9fXz1iO2lmKGEuX19wcm90b19fIT09Yil0aHJvdyBuZXcgVHlwZUVycm9yKGErIiBpcyBub3QgZXh0ZW5zaWJsZSIpO3JldHVybiBhfTpudWxsOyRqc2NvbXAuYXJyYXlJdGVyYXRvckltcGw9ZnVuY3Rpb24oYSl7dmFyIGI9MDtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gYjxhLmxlbmd0aD97ZG9uZTohMSx2YWx1ZTphW2IrK119Ontkb25lOiEwfX19OyRqc2NvbXAuYXJyYXlJdGVyYXRvcj1mdW5jdGlvbihhKXtyZXR1cm57bmV4dDokanNjb21wLmFycmF5SXRlcmF0b3JJbXBsKGEpfX07CiRqc2NvbXAubWFrZUl0ZXJhdG9yPWZ1bmN0aW9uKGEpe3ZhciBiPSJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZTeW1ib2wuaXRlcmF0b3ImJmFbU3ltYm9sLml0ZXJhdG9yXTtyZXR1cm4gYj9iLmNhbGwoYSk6JGpzY29tcC5hcnJheUl0ZXJhdG9yKGEpfTskanNjb21wLmdlbmVyYXRvcj17fTskanNjb21wLmdlbmVyYXRvci5lbnN1cmVJdGVyYXRvclJlc3VsdElzT2JqZWN0Xz1mdW5jdGlvbihhKXtpZighKGEgaW5zdGFuY2VvZiBPYmplY3QpKXRocm93IG5ldyBUeXBlRXJyb3IoIkl0ZXJhdG9yIHJlc3VsdCAiK2ErIiBpcyBub3QgYW4gb2JqZWN0Iik7fTsKJGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dD1mdW5jdGlvbigpe3RoaXMuaXNSdW5uaW5nXz0hMTt0aGlzLnlpZWxkQWxsSXRlcmF0b3JfPW51bGw7dGhpcy55aWVsZFJlc3VsdD12b2lkIDA7dGhpcy5uZXh0QWRkcmVzcz0xO3RoaXMuZmluYWxseUFkZHJlc3NfPXRoaXMuY2F0Y2hBZGRyZXNzXz0wO3RoaXMuZmluYWxseUNvbnRleHRzXz10aGlzLmFicnVwdENvbXBsZXRpb25fPW51bGx9OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLnN0YXJ0Xz1mdW5jdGlvbigpe2lmKHRoaXMuaXNSdW5uaW5nXyl0aHJvdyBuZXcgVHlwZUVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBydW5uaW5nIik7dGhpcy5pc1J1bm5pbmdfPSEwfTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5zdG9wXz1mdW5jdGlvbigpe3RoaXMuaXNSdW5uaW5nXz0hMX07CiRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLmp1bXBUb0Vycm9ySGFuZGxlcl89ZnVuY3Rpb24oKXt0aGlzLm5leHRBZGRyZXNzPXRoaXMuY2F0Y2hBZGRyZXNzX3x8dGhpcy5maW5hbGx5QWRkcmVzc199OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLm5leHRfPWZ1bmN0aW9uKGEpe3RoaXMueWllbGRSZXN1bHQ9YX07JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUudGhyb3dfPWZ1bmN0aW9uKGEpe3RoaXMuYWJydXB0Q29tcGxldGlvbl89e2V4Y2VwdGlvbjphLGlzRXhjZXB0aW9uOiEwfTt0aGlzLmp1bXBUb0Vycm9ySGFuZGxlcl8oKX07JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUucmV0dXJuPWZ1bmN0aW9uKGEpe3RoaXMuYWJydXB0Q29tcGxldGlvbl89e3JldHVybjphfTt0aGlzLm5leHRBZGRyZXNzPXRoaXMuZmluYWxseUFkZHJlc3NffTsKJGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUuanVtcFRocm91Z2hGaW5hbGx5QmxvY2tzPWZ1bmN0aW9uKGEpe3RoaXMuYWJydXB0Q29tcGxldGlvbl89e2p1bXBUbzphfTt0aGlzLm5leHRBZGRyZXNzPXRoaXMuZmluYWxseUFkZHJlc3NffTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS55aWVsZD1mdW5jdGlvbihhLGIpe3RoaXMubmV4dEFkZHJlc3M9YjtyZXR1cm57dmFsdWU6YX19OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLnlpZWxkQWxsPWZ1bmN0aW9uKGEsYil7YT0kanNjb21wLm1ha2VJdGVyYXRvcihhKTt2YXIgZT1hLm5leHQoKTskanNjb21wLmdlbmVyYXRvci5lbnN1cmVJdGVyYXRvclJlc3VsdElzT2JqZWN0XyhlKTtpZihlLmRvbmUpdGhpcy55aWVsZFJlc3VsdD1lLnZhbHVlLHRoaXMubmV4dEFkZHJlc3M9YjtlbHNlIHJldHVybiB0aGlzLnlpZWxkQWxsSXRlcmF0b3JfPWEsdGhpcy55aWVsZChlLnZhbHVlLGIpfTsKJGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUuanVtcFRvPWZ1bmN0aW9uKGEpe3RoaXMubmV4dEFkZHJlc3M9YX07JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUuanVtcFRvRW5kPWZ1bmN0aW9uKCl7dGhpcy5uZXh0QWRkcmVzcz0wfTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5zZXRDYXRjaEZpbmFsbHlCbG9ja3M9ZnVuY3Rpb24oYSxiKXt0aGlzLmNhdGNoQWRkcmVzc189YTt2b2lkIDAhPWImJih0aGlzLmZpbmFsbHlBZGRyZXNzXz1iKX07JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUuc2V0RmluYWxseUJsb2NrPWZ1bmN0aW9uKGEpe3RoaXMuY2F0Y2hBZGRyZXNzXz0wO3RoaXMuZmluYWxseUFkZHJlc3NfPWF8fDB9OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLmxlYXZlVHJ5QmxvY2s9ZnVuY3Rpb24oYSxiKXt0aGlzLm5leHRBZGRyZXNzPWE7dGhpcy5jYXRjaEFkZHJlc3NfPWJ8fDB9OwokanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5lbnRlckNhdGNoQmxvY2s9ZnVuY3Rpb24oYSl7dGhpcy5jYXRjaEFkZHJlc3NfPWF8fDA7YT10aGlzLmFicnVwdENvbXBsZXRpb25fLmV4Y2VwdGlvbjt0aGlzLmFicnVwdENvbXBsZXRpb25fPW51bGw7cmV0dXJuIGF9OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLmVudGVyRmluYWxseUJsb2NrPWZ1bmN0aW9uKGEsYixlKXtlP3RoaXMuZmluYWxseUNvbnRleHRzX1tlXT10aGlzLmFicnVwdENvbXBsZXRpb25fOnRoaXMuZmluYWxseUNvbnRleHRzXz1bdGhpcy5hYnJ1cHRDb21wbGV0aW9uX107dGhpcy5jYXRjaEFkZHJlc3NfPWF8fDA7dGhpcy5maW5hbGx5QWRkcmVzc189Ynx8MH07CiRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLmxlYXZlRmluYWxseUJsb2NrPWZ1bmN0aW9uKGEsYil7Yj10aGlzLmZpbmFsbHlDb250ZXh0c18uc3BsaWNlKGJ8fDApWzBdO2lmKGI9dGhpcy5hYnJ1cHRDb21wbGV0aW9uXz10aGlzLmFicnVwdENvbXBsZXRpb25ffHxiKXtpZihiLmlzRXhjZXB0aW9uKXJldHVybiB0aGlzLmp1bXBUb0Vycm9ySGFuZGxlcl8oKTt2b2lkIDAhPWIuanVtcFRvJiZ0aGlzLmZpbmFsbHlBZGRyZXNzXzxiLmp1bXBUbz8odGhpcy5uZXh0QWRkcmVzcz1iLmp1bXBUbyx0aGlzLmFicnVwdENvbXBsZXRpb25fPW51bGwpOnRoaXMubmV4dEFkZHJlc3M9dGhpcy5maW5hbGx5QWRkcmVzc199ZWxzZSB0aGlzLm5leHRBZGRyZXNzPWF9OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLmZvckluPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcgJGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5Qcm9wZXJ0eUl0ZXJhdG9yKGEpfTsKJGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5Qcm9wZXJ0eUl0ZXJhdG9yPWZ1bmN0aW9uKGEpe3RoaXMub2JqZWN0Xz1hO3RoaXMucHJvcGVydGllc189W107Zm9yKHZhciBiIGluIGEpdGhpcy5wcm9wZXJ0aWVzXy5wdXNoKGIpO3RoaXMucHJvcGVydGllc18ucmV2ZXJzZSgpfTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LlByb3BlcnR5SXRlcmF0b3IucHJvdG90eXBlLmdldE5leHQ9ZnVuY3Rpb24oKXtmb3IoOzA8dGhpcy5wcm9wZXJ0aWVzXy5sZW5ndGg7KXt2YXIgYT10aGlzLnByb3BlcnRpZXNfLnBvcCgpO2lmKGEgaW4gdGhpcy5vYmplY3RfKXJldHVybiBhfXJldHVybiBudWxsfTskanNjb21wLmdlbmVyYXRvci5FbmdpbmVfPWZ1bmN0aW9uKGEpe3RoaXMuY29udGV4dF89bmV3ICRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQ7dGhpcy5wcm9ncmFtXz1hfTsKJGpzY29tcC5nZW5lcmF0b3IuRW5naW5lXy5wcm90b3R5cGUubmV4dF89ZnVuY3Rpb24oYSl7dGhpcy5jb250ZXh0Xy5zdGFydF8oKTtpZih0aGlzLmNvbnRleHRfLnlpZWxkQWxsSXRlcmF0b3JfKXJldHVybiB0aGlzLnlpZWxkQWxsU3RlcF8odGhpcy5jb250ZXh0Xy55aWVsZEFsbEl0ZXJhdG9yXy5uZXh0LGEsdGhpcy5jb250ZXh0Xy5uZXh0Xyk7dGhpcy5jb250ZXh0Xy5uZXh0XyhhKTtyZXR1cm4gdGhpcy5uZXh0U3RlcF8oKX07CiRqc2NvbXAuZ2VuZXJhdG9yLkVuZ2luZV8ucHJvdG90eXBlLnJldHVybl89ZnVuY3Rpb24oYSl7dGhpcy5jb250ZXh0Xy5zdGFydF8oKTt2YXIgYj10aGlzLmNvbnRleHRfLnlpZWxkQWxsSXRlcmF0b3JfO2lmKGIpcmV0dXJuIHRoaXMueWllbGRBbGxTdGVwXygicmV0dXJuImluIGI\/YlsicmV0dXJuIl06ZnVuY3Rpb24oZSl7cmV0dXJue3ZhbHVlOmUsZG9uZTohMH19LGEsdGhpcy5jb250ZXh0Xy5yZXR1cm4pO3RoaXMuY29udGV4dF8ucmV0dXJuKGEpO3JldHVybiB0aGlzLm5leHRTdGVwXygpfTsKJGpzY29tcC5nZW5lcmF0b3IuRW5naW5lXy5wcm90b3R5cGUudGhyb3dfPWZ1bmN0aW9uKGEpe3RoaXMuY29udGV4dF8uc3RhcnRfKCk7aWYodGhpcy5jb250ZXh0Xy55aWVsZEFsbEl0ZXJhdG9yXylyZXR1cm4gdGhpcy55aWVsZEFsbFN0ZXBfKHRoaXMuY29udGV4dF8ueWllbGRBbGxJdGVyYXRvcl9bInRocm93Il0sYSx0aGlzLmNvbnRleHRfLm5leHRfKTt0aGlzLmNvbnRleHRfLnRocm93XyhhKTtyZXR1cm4gdGhpcy5uZXh0U3RlcF8oKX07CiRqc2NvbXAuZ2VuZXJhdG9yLkVuZ2luZV8ucHJvdG90eXBlLnlpZWxkQWxsU3RlcF89ZnVuY3Rpb24oYSxiLGUpe3RyeXt2YXIgZz1hLmNhbGwodGhpcy5jb250ZXh0Xy55aWVsZEFsbEl0ZXJhdG9yXyxiKTskanNjb21wLmdlbmVyYXRvci5lbnN1cmVJdGVyYXRvclJlc3VsdElzT2JqZWN0XyhnKTtpZighZy5kb25lKXJldHVybiB0aGlzLmNvbnRleHRfLnN0b3BfKCksZzt2YXIgaD1nLnZhbHVlfWNhdGNoKG4pe3JldHVybiB0aGlzLmNvbnRleHRfLnlpZWxkQWxsSXRlcmF0b3JfPW51bGwsdGhpcy5jb250ZXh0Xy50aHJvd18obiksdGhpcy5uZXh0U3RlcF8oKX10aGlzLmNvbnRleHRfLnlpZWxkQWxsSXRlcmF0b3JfPW51bGw7ZS5jYWxsKHRoaXMuY29udGV4dF8saCk7cmV0dXJuIHRoaXMubmV4dFN0ZXBfKCl9OwokanNjb21wLmdlbmVyYXRvci5FbmdpbmVfLnByb3RvdHlwZS5uZXh0U3RlcF89ZnVuY3Rpb24oKXtmb3IoO3RoaXMuY29udGV4dF8ubmV4dEFkZHJlc3M7KXRyeXt2YXIgYT10aGlzLnByb2dyYW1fKHRoaXMuY29udGV4dF8pO2lmKGEpcmV0dXJuIHRoaXMuY29udGV4dF8uc3RvcF8oKSx7dmFsdWU6YS52YWx1ZSxkb25lOiExfX1jYXRjaChiKXt0aGlzLmNvbnRleHRfLnlpZWxkUmVzdWx0PXZvaWQgMCx0aGlzLmNvbnRleHRfLnRocm93XyhiKX10aGlzLmNvbnRleHRfLnN0b3BfKCk7aWYodGhpcy5jb250ZXh0Xy5hYnJ1cHRDb21wbGV0aW9uXyl7YT10aGlzLmNvbnRleHRfLmFicnVwdENvbXBsZXRpb25fO3RoaXMuY29udGV4dF8uYWJydXB0Q29tcGxldGlvbl89bnVsbDtpZihhLmlzRXhjZXB0aW9uKXRocm93IGEuZXhjZXB0aW9uO3JldHVybnt2YWx1ZTphLnJldHVybixkb25lOiEwfX1yZXR1cm57dmFsdWU6dm9pZCAwLGRvbmU6ITB9fTsKJGpzY29tcC5nZW5lcmF0b3IuR2VuZXJhdG9yXz1mdW5jdGlvbihhKXt0aGlzLm5leHQ9ZnVuY3Rpb24oYil7cmV0dXJuIGEubmV4dF8oYil9O3RoaXMudGhyb3c9ZnVuY3Rpb24oYil7cmV0dXJuIGEudGhyb3dfKGIpfTt0aGlzLnJldHVybj1mdW5jdGlvbihiKXtyZXR1cm4gYS5yZXR1cm5fKGIpfTt0aGlzW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc319OyRqc2NvbXAuZ2VuZXJhdG9yLmNyZWF0ZUdlbmVyYXRvcj1mdW5jdGlvbihhLGIpe2I9bmV3ICRqc2NvbXAuZ2VuZXJhdG9yLkdlbmVyYXRvcl8obmV3ICRqc2NvbXAuZ2VuZXJhdG9yLkVuZ2luZV8oYikpOyRqc2NvbXAuc2V0UHJvdG90eXBlT2YmJmEucHJvdG90eXBlJiYkanNjb21wLnNldFByb3RvdHlwZU9mKGIsYS5wcm90b3R5cGUpO3JldHVybiBifTsKJGpzY29tcC5hc3luY0V4ZWN1dGVQcm9taXNlR2VuZXJhdG9yPWZ1bmN0aW9uKGEpe2Z1bmN0aW9uIGIoZyl7cmV0dXJuIGEubmV4dChnKX1mdW5jdGlvbiBlKGcpe3JldHVybiBhLnRocm93KGcpfXJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihnLGgpe2Z1bmN0aW9uIG4odCl7dC5kb25lP2codC52YWx1ZSk6UHJvbWlzZS5yZXNvbHZlKHQudmFsdWUpLnRoZW4oYixlKS50aGVuKG4saCl9bihhLm5leHQoKSl9KX07JGpzY29tcC5hc3luY0V4ZWN1dGVQcm9taXNlR2VuZXJhdG9yRnVuY3Rpb249ZnVuY3Rpb24oYSl7cmV0dXJuICRqc2NvbXAuYXN5bmNFeGVjdXRlUHJvbWlzZUdlbmVyYXRvcihhKCkpfTskanNjb21wLmFzeW5jRXhlY3V0ZVByb21pc2VHZW5lcmF0b3JQcm9ncmFtPWZ1bmN0aW9uKGEpe3JldHVybiAkanNjb21wLmFzeW5jRXhlY3V0ZVByb21pc2VHZW5lcmF0b3IobmV3ICRqc2NvbXAuZ2VuZXJhdG9yLkdlbmVyYXRvcl8obmV3ICRqc2NvbXAuZ2VuZXJhdG9yLkVuZ2luZV8oYSkpKX07CmxldCAkanNjb21wJG9wdGNoYWluJHRtcDE5MzczODk4NTkkMDsKbmV3Q2Fycz17aXNNb2JpbGU6IjEiPT09KG51bGw9PSgkanNjb21wJG9wdGNoYWluJHRtcDE5MzczODk4NTkkMD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaXNNb2JpbGUiKSk\/dm9pZCAwOiRqc2NvbXAkb3B0Y2hhaW4kdG1wMTkzNzM4OTg1OSQwLnZhbHVlKSxjb250YWluZXI6ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm5ld2NhckNvbnRhaW5lciIpLHJlc2l6ZU1haW5XaW5kb3c6ZnVuY3Rpb24oKXtpZighbmV3Q2Fycy5pc01vYmlsZSl7dmFyIGE9JCgiI3JpZ2h0U2lkZSIpLmhlaWdodCgpLTM1LGI9JCgiI25ld2NhckNvbnRhaW5lciIpLmhlaWdodCgpOyFpc05hTihhKSYmIWlzTmFOKGIpJiZhPmImJigkKCIjbmV3Y2FyQ29udGFpbmVyIikuaGVpZ2h0KGEpLCQoIiNmb290ZXJEaXYiKS5jc3MoInBhZGRpbmciLCIwcHgiKSl9fSxzZXRQYXltZW50VG9vbHRpcHM6KCk9PntuZXdDYXJzLmlzTW9iaWxlPyQoIi5kaXZDYXJzQm94V3JhcHBlciIpLmVhY2goZnVuY3Rpb24oKXskKHRoaXMpLmZpbmQoIi5kaXZDYXJTaW5nbGVPdXRlckJveCAuZGl2Q2FyUGF5bWVudENvbnRhaW5lciAucGF5bWVudEluZm9CdWJibGUgLnBheW1lbnRUb29sdGlwIikuZWFjaChmdW5jdGlvbigpe3RyeXt2YXIgYT0kKHRoaXMpLmF0dHIoImRhdGEtdG9vbHRpcCIpOwokKHRoaXMpLmRhcmtUb29sdGlwKHtjb250ZW50OmEsZ3Jhdml0eToiZWFzdCIsdGhlbWU6ImxpZ2h0Iix0cmlnZ2VyOiJjbGljayIsYW5pbWF0aW9uOiJmbGlwSW4ifSl9Y2F0Y2goYil7fX0pfSk6JCgiLmRpdkNhcnNCb3hXcmFwcGVyIikuZWFjaChmdW5jdGlvbigpeyQodGhpcykuZmluZCgiLmRpdkNhclNpbmdsZU91dGVyQm94Iikub24oIm1vdXNlZW50ZXIgbW91c2VsZWF2ZSIsZnVuY3Rpb24oYSl7dHJ5e2lmKCQodGhpcykuZGF0YSgidG9vbHRpcENyZWF0ZWQiKSlyZXR1cm4hMTskKHRoaXMpLmRhdGEoInRvb2x0aXBDcmVhdGVkIiwxKTskKHRoaXMpLmZpbmQoIi5kaXZDYXJQYXltZW50Q29udGFpbmVyVG9vbHRpcCIpLmRhcmtUb29sdGlwKHtncmF2aXR5OiJ3ZXN0Iix0aGVtZToibGlnaHQiLHRyaWdnZXI6ImhvdmVyIixhbmltYXRpb246ImZsaXBJbiJ9KX1jYXRjaChiKXt9fSl9KX0sbmV3Q2Fyc0ZpbHRlcjooKT0+e2Z1bmN0aW9uIGEoKXt2YXIgYz0kKCIuZGl2Q2F0ZWdvcnlCb3hXcmFwcGVyIikubWFwKGZ1bmN0aW9uKGQsCmYpe3JldHVybiBwYXJzZUludCgkKGYpLmF0dHIoIm5iVmlzaWJsZSIpKX0pLmdldCgpLnJlZHVjZShmdW5jdGlvbihkLGYpe3JldHVybiBkK2Z9LDApO3JldHVybntmaWx0ZXJzOntzdGF0dXM6Ik5ldyIsYm9keVN0eWxlOiQoImlucHV0OmNoZWNrZWQuZmlsdGVyQ2hlY2suY2F0ZWdvcnkiKS5tYXAoZnVuY3Rpb24oZCxmKXtyZXR1cm4gJChmKS52YWwoKX0pLmdldCgpLGZ1ZWxUeXBlOiQoImlucHV0OmNoZWNrZWQuZmlsdGVyQ2hlY2suZnVlbHR5cGUiKS5tYXAoZnVuY3Rpb24oZCxmKXtyZXR1cm4gJChmKS5kYXRhKCJlc3NlbmNlIil9KS5nZXQoKSxkcml2ZVRyYWluOiQoImlucHV0OmNoZWNrZWQuZmlsdGVyQ2hlY2suZHJpdmV0cmFpbiIpLm1hcChmdW5jdGlvbihkLGYpe3JldHVybiAkKGYpLmRhdGEoImRyaXZldHJhaW4iKX0pLmdldCgpLG1heFByaWNlOnAubWF4LG1pblByaWNlOnAubWlufSx2ZWhpY2xlQ291bnQ6Y319dmFyIGI9ITE7dHJ5eyJ1bmRlZmluZWQiPT1qUXVlcnkuYnJvd3Nlci5tc2llPwpiPSEwOjk8PXBhcnNlSW50KGpRdWVyeS5icm93c2VyLnZlcnNpb24sMTApJiYoYj0hMCl9Y2F0Y2goYyl7fWlmKCJ1bmRlZmluZWQiPT10eXBlb2YgYm94QmxvY2tzfHwxPmJveEJsb2Nrcy5sZW5ndGgpYj0hMTstMTx3aW5kb3cubG9jYXRpb24uaHJlZi5pbmRleE9mKCJjYW1pb25zLWNvbW1lcmNpYXV4IikmJihiPSExKTtpZihiKXt2YXIgZT1uZXdDYXJzLmdldEZpbHRlcigpO2I9Z2V0VXJsVmFycygpO3ZhciBnPWIuaGFzT3duUHJvcGVydHkoImJvZHkiKSxoPWIuaGFzT3duUHJvcGVydHkoImZ1ZWwiKTtuZXdDYXJzLmNvbnRhaW5lci5xdWVyeVNlbGVjdG9yQWxsKCIuZmlsdGVyQ2hlY2siKS5mb3JFYWNoKGM9PntnJiZjLmNsYXNzTGlzdC5jb250YWlucygiY2F0ZWdvcnkiKXx8aCYmYy5jbGFzc0xpc3QuY29udGFpbnMoImZ1ZWx0eXBlIil8fChjLmNoZWNrZWQ9IWUuaGFzT3duUHJvcGVydHkoYy5pZCl8fCEwPT09ZVtjLmlkXSl9KTskKCIjZmlsdGVyTWFpbkJveCIpLnNob3coKTsKZm9yKHZhciBuIGluIGJveEJsb2Nrcyl7Yj0wO2Zvcih2YXIgdCBpbiBib3hCbG9ja3Nbbl0pYisrOyQoIiNjbGFzcyIrbisiX2NvbnRhaW5lciIpLmF0dHIoIm5iVmlzaWJsZSIsYil9JCgiLmZpbHRlckNoZWNrIikub24oImNsaWNrIixmdW5jdGlvbigpe3ZhciBjPSQodGhpcyk7bmV3Q2Fycy5zZXRGaWx0ZXIoYy5hdHRyKCJpZCIpLGMuaXMoIjpjaGVja2VkIikpO3NldFRpbWVvdXQoeCwxMDApO2lmKGMuaGFzQ2xhc3MoImNhdGVnb3J5Iikpe3ZhciBkPWMudmFsKCk7c2V0VGltZW91dChmdW5jdGlvbigpe0IoZCl9LDEwMCl9fSk7JCgiLnJhZGlvU29ydCIpLm9uKCJjbGljayIsZnVuY3Rpb24oKXtDKCQodGhpcykudmFsKCkpfSk7JCgiLmZpbHRlclNwYW4iKS5vbigiY2xpY2siLGZ1bmN0aW9uKCl7dmFyIGM9JCh0aGlzKTtuZXdDYXJzLnNldEZpbHRlcigiZmlsdGVyU3BhbiIsYy5hdHRyKCJyZWwiKSk7Yz0iIyIrYy5hdHRyKCJyZWwiKTskKGMpLnRyaWdnZXIoImNsaWNrIil9KTsKdmFyIHk9IiIsdz0iIixHPWZ1bmN0aW9uKGMsZCl7cmV0dXJuIGMuY29uc289PWQuY29uc28\/MDpjLmNvbnNvPmQuY29uc28\/MTotMX0sSD1mdW5jdGlvbihjLGQpe3JldHVybiBjLmNvbnNvPT1kLmNvbnNvPzA6Yy5jb25zbz5kLmNvbnNvPy0xOjF9LEk9ZnVuY3Rpb24oYyxkKXtyZXR1cm4gYy5wcmljZT09ZC5wcmljZT8wOmMucHJpY2U+ZC5wcmljZT8xOi0xfSxKPWZ1bmN0aW9uKGMsZCl7cmV0dXJuIGMucHJpY2U9PWQucHJpY2U\/MDpjLnByaWNlPmQucHJpY2U\/LTE6MX0sSz1mdW5jdGlvbihjLGQpe3JldHVybiBjLmNhck1vZGVsPT1kLmNhck1vZGVsP2MueWVhcj5kLnllYXI\/LTE6Yy55ZWFyPGQueWVhcj8xOjA6Yy5jYXJNb2RlbD5kLmNhck1vZGVsPzE6LTF9LEM9ZnVuY3Rpb24oYyxkKXt3PSJ1bmRlZmluZWQiIT09dHlwZW9mIGQ\/ZDp5PT1jPyJBc2MiPT13PyJEZXNjIjoiQXNjIjoiQXNjIjt5PWM7bmV3Q2Fycy5zZXRGaWx0ZXIoInNvcnRCeSIseSk7bmV3Q2Fycy5zZXRGaWx0ZXIoInNvcnREaXIiLAp3KTtmb3IodmFyIGYgaW4gYm94QmxvY2tzKXtjPTE7ZD1bXTtmb3IodmFyIG0gaW4gYm94QmxvY2tzW2ZdKXt2YXIgbD1ib3hCbG9ja3NbZl1bbV07bC52aXNpYmxlJiYoZFtkLmxlbmd0aF09bCl9c3dpdGNoKHkpe2Nhc2UgInByaWNlIjoiQXNjIj09dz9kLnNvcnQoSSk6ZC5zb3J0KEopO2JyZWFrO2Nhc2UgIm1vZGVsIjpkLnNvcnQoSyk7YnJlYWs7Y2FzZSAiY29uc28iOiJBc2MiPT13P2Quc29ydChHKTpkLnNvcnQoSCl9ZC5zb3J0KGZ1bmN0aW9uKGssdSl7cmV0dXJuIGsuc3BlY2lhbE9yZGVyPT11LnNwZWNpYWxPcmRlcj8wOmsuc3BlY2lhbE9yZGVyPnUuc3BlY2lhbE9yZGVyPzE6LTF9KTtmb3IobD0wO2w8ZC5sZW5ndGg7bCsrKWRbbF0udmlzaWJsZSYmKGRbbF0ucG9zaXRpb24hPWwrMSYmKGRbbF0ucG9zaXRpb249bCsxLEEoZiwiZmJ4XyIrZisiXyIrZFtsXS5pZCwibW92ZSIsbCsxKSksYysrKX19LEw9ZnVuY3Rpb24oKXtmb3IodmFyIGMgaW4gYm94QmxvY2tzKXt2YXIgZD0KMSxmO2ZvcihmIGluIGJveEJsb2Nrc1tjXSl7dmFyIG09Ym94QmxvY2tzW2NdW2ZdO20udmlzaWJsZSYmbS5wb3NpdGlvbiE9ZCYmKG0ucG9zaXRpb249ZCxBKGMsZiwibW92ZSIsZCkpO0EoYyxmLG0udmlzaWJsZT8ic2hvdyI6ImhpZGUiKTttLnZpc2libGUmJmQrK30kKCIjY2xhc3MiK2MrIl9jb250YWluZXIiKS5hdHRyKCJuYlZpc2libGUiLGQtMSl9fSxEPWZ1bmN0aW9uKGMsZCl7Zm9yKHZhciBmPTAsbT0xO208ZDttKyspe3ZhciBsPSQoIiMiK2MrbSk7MDxsLmxlbmd0aCYmbC5wcm9wKCJjaGVja2VkIikmJihmKz1NYXRoLnBvdygyLG0tMSkpfXJldHVybiBmfSx4PWZ1bmN0aW9uKCl7dmFyIGM9RCgiZmlsdGVyRXNzZW5jZUNoZWNrIiw2KSxkPUQoImZpbHRlckRyaXZlVHJhaW5DaGVjayIsNCksZj1bXSxtPVtdOyQoIi5maWx0ZXJDaGVjay5jYXRlZ29yeSIpLmVhY2goZnVuY3Rpb24oKXskKHRoaXMpLmlzKCI6Y2hlY2tlZCIpJiZmLnB1c2goJCh0aGlzKS52YWwoKSl9KTt2YXIgbD0KITE7MDwkKCIuZmlsdGVyQ2hlY2suY2FyTWFrZSIpLmxlbmd0aCYmKCQoIi5maWx0ZXJDaGVjay5jYXJNYWtlIikuZWFjaChmdW5jdGlvbigpeyQodGhpcykuaXMoIjpjaGVja2VkIikmJm0ucHVzaCgkKHRoaXMpLnZhbCgpKX0pLGw9ITApO2Zvcih2YXIgayBpbiBib3hCbG9ja3Mpe3ZhciB1PTAscTtmb3IocSBpbiBib3hCbG9ja3Nba10pe3ZhciBNPXBhcnNlSW50KGJveEJsb2Nrc1trXVtxXS5mdWVsLDEwKSx2PSExO3Y9KHY9KHY9KHY9KHY9IShwYXJzZUludChib3hCbG9ja3Nba11bcV0uZHJpdmV0cmFpbiwxMCkmZCkpfHwhKE0mYykpfHwhKCFib3hCbG9ja3Nba11bcV0uY2FyQ2F0ZWdvcnl8fC0xPCQuaW5BcnJheShib3hCbG9ja3Nba11bcV0uY2FyQ2F0ZWdvcnksZikpKXx8ISghMT09PWx8fC0xPCQuaW5BcnJheShib3hCbG9ja3Nba11bcV0uY2FyTWFrZSxtKSYmbCkpfHwhKDA9PWJveEJsb2Nrc1trXVtxXS5wcmljZXx8Ym94QmxvY2tzW2tdW3FdLnByaWNlPD1wLm1heCYmCmJveEJsb2Nrc1trXVtxXS5wcmljZT49cC5taW4pO2JveEJsb2Nrc1trXVtxXS52aXNpYmxlPSF2O2JveEJsb2Nrc1trXVtxXS52aXNpYmxlJiZ1Kyt9JCgiI2NsYXNzIitrKyJfY29udGFpbmVyIikuYXR0cigibmJWaXNpYmxlIix1KTtCKGspfUwoKTsiMSI9PT0kKCJib2R5IikuZGF0YSgiZmlsdGVyczpsb2FkIikmJiQoImJvZHkiKS50cmlnZ2VyKCQuZXh0ZW5kKHt0eXBlOiJmaWx0ZXJzOmNoYW5nZSJ9LGEoKSkpfSxCPWZ1bmN0aW9uKGMpe3ZhciBkPSQoIiNjbGFzcyIrYysiX2NvbnRhaW5lciIpO2lmKDA8ZC5sZW5ndGgpe3ZhciBmPSQoIiNzaG93Q2xhc3NfIitjKTswPT09Zi5sZW5ndGgmJihmPSQoJ2lucHV0W2RhdGEtZXNzZW5jZT0iJytjKyciXScpKTtmPWYuaXMoIjpjaGVja2VkIik7MDxwYXJzZUludChkLmF0dHIoIm5iVmlzaWJsZSIpLDEwKT8oZiYmKGQuYXR0cigic3RhdGUiLCJvcGVuIiksZC5mYWRlSW4oNjAwKSxuZXdDYXJzLmlzTW9iaWxlfHwoZj1NYXRoLmNlaWwocGFyc2VJbnQoZC5hdHRyKCJuYlZpc2libGUiKSwKMTApLzMpLCQoIi5DTEFTU18iK2MpLmFuaW1hdGUoe2hlaWdodDpyLmhlaWdodCpmKyJweCJ9LDYwMCkpLGY9ITApLGZ8fEUoZCkpOkUoZCl9fSxFPWZ1bmN0aW9uKGMpe2MuYXR0cigic3RhdGUiLCJjbG9zZSIpO2MuZmFkZU91dCg2MDApO3JldHVybiEwfSxBPWZ1bmN0aW9uKGMsZCxmLG0sbCl7aWYoImhpZGUiPT1mKSQoIiMiK2QpLmFuaW1hdGUoe29wYWNpdHk6MH0sNjAwLGZ1bmN0aW9uKCl7JCh0aGlzKS5hdHRyKCJpcy1ib3gtdmlzaWJsZSIsMCkuY3NzKCJ2aXNpYmlsaXR5IiwiaGlkZGVuIil9KSxib3hCbG9ja3NbY11bZF0udmlzaWJsZT0hMSxzaXRlUGFnZS5pc01vYmlsZSYmKG5ld0NhcnMuY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoYCMke2R9YCkuaGlkZGVuPSEwKTtlbHNlIGlmKCJzaG93Ij09ZikkKCIjIitkKS5jc3MoInZpc2liaWxpdHkiLCJ2aXNpYmxlIikuYW5pbWF0ZSh7b3BhY2l0eToxfSw2MDAsZnVuY3Rpb24oKXskKHRoaXMpLmF0dHIoImlzLWJveC12aXNpYmxlIiwKMSl9KSxib3hCbG9ja3NbY11bZF0udmlzaWJsZT0hMCxzaXRlUGFnZS5pc01vYmlsZSYmKG5ld0NhcnMuY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoYCMke2R9YCkuaGlkZGVuPSExKTtlbHNlIGlmKCFzaXRlUGFnZS5pc01vYmlsZSl7dmFyIGs9JCgiLmRpdkNhdGVnb3JpZXNCb3hXcmFwcGVyIikud2lkdGgoKTtjPU1hdGguZmxvb3Ioay9yLndpZHRoKTtmPWJveFBvc2l0aW9uc1tkXTtrPU1hdGguZmxvb3Ioay9jKTtjPXtsZWZ0OiIrPSIrKChtLTEpJWMqay0oZi0xKSVjKmspKyJweCIsdG9wOiIrPSIrKE1hdGguZmxvb3IoKG0tMSkvYykqci5oZWlnaHQtTWF0aC5mbG9vcigoZi0xKS9jKSpyLmhlaWdodCkrInB4In07dm9pZCAwPT1sPyQoIiMiK2QpLmFkZENsYXNzKCJNb3ZpbmdCb3giKS5hbmltYXRlKGMsNjAwLGZ1bmN0aW9uKCl7JCh0aGlzKS5yZW1vdmVDbGFzcygiTW92aW5nQm94Iil9KTokKCIjIitkKS5hZGRDbGFzcygiTW92aW5nQm94IikuYW5pbWF0ZShjLDYwMCxmdW5jdGlvbigpeyQodGhpcykucmVtb3ZlQ2xhc3MoIk1vdmluZ0JveCIpOwpldmFsKGwpfSk7Ym94UG9zaXRpb25zW2RdPW19fSxGPWZ1bmN0aW9uKCl7dmFyIGM9e3dpZHRoOjAsaGVpZ2h0OjB9OyQoJy5kaXZDYXJTaW5nbGVPdXRlckJveFtpcy1ib3gtdmlzaWJsZT0iMSJdOmZpcnN0JykuZWFjaChmdW5jdGlvbigpe2Mud2lkdGg9JCh0aGlzKS5vdXRlcldpZHRoKCEwKTtjLmhlaWdodD0kKHRoaXMpLm91dGVySGVpZ2h0KCEwKX0pO3JldHVybiBjfSx6PTk2MDskKCIuZGl2Q2FyU2luZ2xlT3V0ZXJCb3giKS5hdHRyKCJpcy1ib3gtdmlzaWJsZSIsMSk7dmFyIHI9RigpOzA8JCgiQk9EWS5pc0Z1bGxXaWR0aFBhZ2UiKS5sZW5ndGgmJjA8JCgiQk9EWS5pc1BhZ2VGdWxsV2lkdGhFbmFibGVkIikubGVuZ3RoJiYoMTMwMDx3aW5kb3cuaW5uZXJXaWR0aCYmKHo9MTIwMCksJCh3aW5kb3cpLm9uKCJyZXNpemUiLGZ1bmN0aW9uKCl7dmFyIGM9ejt6PTEzMDA8d2luZG93LmlubmVyV2lkdGg\/MTIwMDo5NjA7YyE9eiYmc2V0VGltZW91dChmdW5jdGlvbigpe04oKX0pfSkpOwp2YXIgTj1mdW5jdGlvbigpe3ZhciBjPXI7cj1GKCk7JCgiLmRpdkNhcnNCb3hXcmFwcGVyIikuZWFjaChmdW5jdGlvbigpe3ZhciBkPTA7JCh0aGlzKS5maW5kKCIuZGl2Q2FyU2luZ2xlT3V0ZXJCb3giKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIGY9cGFyc2VJbnQoJCh0aGlzKS5jc3MoInRvcCIpKSxtPXBhcnNlSW50KCQodGhpcykuY3NzKCJsZWZ0IikpOzA9PT1mJiYwPT09bXx8JCh0aGlzKS5jc3Moe3RvcDpyLmhlaWdodCooZi9wYXJzZUludChjLmhlaWdodCkpKyJweCJ9KS5jc3Moe2xlZnQ6ci53aWR0aCoobS9wYXJzZUludChjLndpZHRoKSkrInB4In0pOzE9PT1wYXJzZUludCgkKHRoaXMpLmF0dHIoImlzLWJveC12aXNpYmxlIikpJiZkKyt9KTtkJiYkKHRoaXMpLmNzcyh7aGVpZ2h0Ok1hdGguZmxvb3IoZC8zKSpyLmhlaWdodCsoZCUzP3IuaGVpZ2h0OjApKyJweCJ9KX0pfSxwPXttaW46MCxtYXg6MUU2fTsoZnVuY3Rpb24oKXt2YXIgYz0kKCIjcHJpY2VSYW5nZVNsaWRlckZpbHRlckNvbnRhaW5lciIpOwppZigwPGMubGVuZ3RoKXt2YXIgZD1jLmZpbmQoImRpdi5yYW5nZS1zbGlkZXIiKTtpZigwPGQubGVuZ3RoKXt2YXIgZj1udWxsLG09ZnVuY3Rpb24obCxrKXtwPXttaW46RDJDVXRpbHMuTnVtYmVyLnJvdW5kRG93bihrLnZhbHVlc1swXSwxRTMpLG1heDpEMkNVdGlscy5OdW1iZXIucm91bmRVcChrLnZhbHVlc1sxXSwxRTMpfTtudWxsIT09bCYmbmV3Q2Fycy5zZXRGaWx0ZXIoInNldFNob3dlZFZhbHVlcyIscC5taW4rIjoiK3AubWF4KTtjLmZpbmQoInNwYW4ucHJpY2UtbWluIikudGV4dChwLm1pbi50b0xvY2FsZVN0cmluZygpKTtjLmZpbmQoInNwYW4ucHJpY2UtbWF4IikudGV4dChwLm1heC50b0xvY2FsZVN0cmluZygpKTtjbGVhclRpbWVvdXQoZik7Zj1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7eCgpfSw1MDApfTtwPXttaW46RDJDVXRpbHMuTnVtYmVyLnJvdW5kRG93bihkLmF0dHIoImF0dHItcHJpY2UtbWluIikpLG1heDpEMkNVdGlscy5OdW1iZXIucm91bmREb3duKGQuYXR0cigiYXR0ci1wcmljZS1tYXgiKSl9OwpkLnNsaWRlcih7cmFuZ2U6ITAsbWluOnAubWluLG1heDpwLm1heCxzbGlkZTptLGNoYW5nZTptLGNyZWF0ZTpmdW5jdGlvbihsLGspe2w9bmV3Q2Fycy5nZXRGaWx0ZXIoKTtrPVtwLm1pbixwLm1heF07InN0cmluZyI9PT10eXBlb2YgbC5zZXRTaG93ZWRWYWx1ZXMmJihrPWwuc2V0U2hvd2VkVmFsdWVzLnNwbGl0KCI6IikpO2Quc2xpZGVyKCJ2YWx1ZXMiLGspO20obnVsbCx7dmFsdWVzOmt9KTtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7JCgiYm9keSIpLnRyaWdnZXIoJC5leHRlbmQoe3R5cGU6ImZpbHRlcnM6bG9hZCJ9LGEoKSkpfSwzRTMpfX0pfX19KSgpO3NldFRpbWVvdXQoZnVuY3Rpb24oKXt2YXIgYz0kKCIjc29ydEJ5Iik7dmFyIGQ9JCgiI3NvcnREaXIiKSxmPSJtb2RlbCI7dmFyIG09IkFzYyI7dmFyIGw9e21vZGVsOiJyYWRpb01vZGxlIixwcmljZToicmFkaW9QcmljZSIsY29uc286InJhZGlvQ29uc28ifTtjLmxlbmd0aCYmZC5sZW5ndGgmJihmPWMudmFsKCksbT1kLnZhbCgpKTsKZSYmInVuZGVmaW5lZCIhPT10eXBlb2YgbFtlLnNvcnRCeV0\/KGM9ZS5zb3J0QnksbT1lLnNvcnREaXIpOmM9Zjt0cnl7dmFyIGs9JCgiIyIrbFtjXSk7ay5sZW5ndGgmJmsucHJvcCgiY2hlY2tlZCIsImNoZWNrZWQiKTtDKGMsbSl9Y2F0Y2godSl7fX0sNTAwKTtpZigkKCIjdG9nZ2xlRmlsdGVyQnRuIikubGVuZ3RoKSQoIiN0b2dnbGVGaWx0ZXJCdG4iKS5vbigiY2xpY2sgdGFwIixmdW5jdGlvbigpeyQoIiNzaWRlU2lkZWJhckZpbHRlciIpLmxlbmd0aCYmKCQoIiNzaWRlU2lkZWJhckZpbHRlciIpLmhhc0NsYXNzKCJvcGVuIik\/JCgiI3NpZGVTaWRlYmFyRmlsdGVyIikucmVtb3ZlQ2xhc3MoIm9wZW4iKTokKCIjc2lkZVNpZGViYXJGaWx0ZXIiKS5hZGRDbGFzcygib3BlbiIpKX0pO2lmKCQoIiNjbG9zZVNpZGViYXJCdG4iKS5sZW5ndGgpJCgiI2Nsb3NlU2lkZWJhckJ0biIpLm9uKCJjbGljayB0YXAiLGZ1bmN0aW9uKCl7JCgiI3NpZGVTaWRlYmFyRmlsdGVyIikubGVuZ3RoJiYKJCgiI3NpZGVTaWRlYmFyRmlsdGVyIikuaGFzQ2xhc3MoIm9wZW4iKSYmJCgiI3NpZGVTaWRlYmFyRmlsdGVyIikucmVtb3ZlQ2xhc3MoIm9wZW4iKX0pOyQoIi5zZWxlY3RUb2dnbGVXcmFwcGVyQ2FyTWFrZSIpLmxlbmd0aCYmKCQoIiNzZWxlY3RBbGxCdG5DYXJNYWtlIikub24oImNsaWNrIHRhcCIsZnVuY3Rpb24oKXskKCIuZmlsdGVyQ2hlY2suY2FyTWFrZSIpLnByb3AoImNoZWNrZWQiLCEwKTtzZXRUaW1lb3V0KHgsMTAwKX0pLCQoIiN1bnNlbGVjdEFsbEJ0bkNhck1ha2UiKS5vbigiY2xpY2sgdGFwIixmdW5jdGlvbigpeyQoIi5maWx0ZXJDaGVjay5jYXJNYWtlIikucHJvcCgiY2hlY2tlZCIsITEpO3NldFRpbWVvdXQoeCwxMDApfSkpfX0sc2V0RmlsdGVyOihhLGIpPT57dmFyIGU9e30sZz1fbG9jYWxTdG9yYWdlR2V0KCJuZXdTdnBGaWx0ZXIiKTtudWxsIT1nJiYib2JqZWN0IiE9dHlwZW9mIGcmJihlPUpTT04ucGFyc2UoZykpO2c9d2luZG93LmxvY2F0aW9uLnBhdGhuYW1lOwp2b2lkIDA9PWVbZ10mJihlW2ddPXt9KTtlW2ddW2FdPWI7X2xvY2FsU3RvcmFnZVNldCgibmV3U3ZwRmlsdGVyIixKU09OLnN0cmluZ2lmeShlKSl9LGdldEZpbHRlcjooKT0+e2xldCBhPSExO3ZhciBiPV9sb2NhbFN0b3JhZ2VHZXQoIm5ld1N2cEZpbHRlciIpO2xldCBlPXt9O251bGwhPWImJiJvYmplY3QiIT10eXBlb2YgYiYmKGU9SlNPTi5wYXJzZShiKSk7Yj13aW5kb3cubG9jYXRpb24ucGF0aG5hbWU7dm9pZCAwIT1lW2JdJiYoYT1lW2JdKTtyZXR1cm4gYX0sc2V0UHJpY2VUb29sVGlwczooKT0+e25ld0NhcnMuaXNNb2JpbGV8fGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIi5jYXJQcmljZUluaXRpYWxUb29sVGlwSWNvbiIpLmZvckVhY2goYT0+e2xldCBiPWEuZGF0YXNldC50b29sdGlwOyQoYSkuZGFya1Rvb2x0aXAoe2NvbnRlbnQ6YixncmF2aXR5OiJ3ZXN0Iix0aGVtZToibGlnaHQiLHRyaWdnZXI6ImhvdmVyIixhbmltYXRpb246ImZsaXBJbiJ9KX0pfSxzZXRFdmVudHM6KCk9Pgp7bmV3Q2Fycy5pc01vYmlsZXx8KCQoImltZ1tlcnJvcmltZ10iKS5vbigiZXJyb3IiLGZ1bmN0aW9uKCl7dGhpcy5zcmM9JCh0aGlzKS5hdHRyKCJlcnJvcmltZyIpfSksJCgiaW1nW211bHRpaW1nPXRydWVdIikuZWFjaChmdW5jdGlvbigpeyQodGhpcykub24oIm1vdXNlb3ZlciIsZnVuY3Rpb24oKXskKHRoaXMpLmF0dHIoInNyYyIsJCh0aGlzKS5hdHRyKCJjb2xvcmltZyIpKX0pOyQodGhpcykub24oIm1vdXNlb3V0IixmdW5jdGlvbigpeyQodGhpcykuYXR0cigic3JjIiwkKHRoaXMpLmF0dHIoImJsYWNraW1nIikpfSl9KSl9LGdldEludmVudG9yeURhdGE6KCk9Pntjb25zdCBhPShiLGUpPT57bGV0IGc9IkZSRU5DSCI9PWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNhY3RpdmVzaXRlbGFuZ3VhZ2UiKS52YWx1ZT8iZnIiOiJlbiI7ZmV0Y2goYC8ke2d9L2FqYXgvZ2V0SW52ZW50b3J5RGF0YWAse21ldGhvZDoiUE9TVCIsaGVhZGVyczp7QWNjZXB0OiJhcHBsaWNhdGlvbi9qc29uIiwKIkNvbnRlbnQtVHlwZSI6ImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDsiLGNoYXJzZXQ6IlVURi04In0sYm9keTpuZXcgVVJMU2VhcmNoUGFyYW1zKGIpfSkudGhlbihoPT57aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBoJiYhMD09PWgub2smJjIwMD09aC5zdGF0dXMpcmV0dXJuIGguanNvbigpfSkudGhlbihoPT57aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBoLnN0YXR1cyYmInN1Y2Nlc3MiPT1oLnN0YXR1cyl7bGV0IG49aC5jb3VudDtoPWgudXJsO2xldCB0PWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNpblN0b2NrTGFiZWwiKS52YWx1ZTswPG4mJihlLnBhcmVudE5vZGUuaW5zZXJ0QWRqYWNlbnRIVE1MKCJiZWZvcmVlbmQiLGA8YSBocmVmPSIke2h9Ij4ke259ICR7dH08L2E+YCksZS5wYXJlbnROb2RlLmhpZGRlbj0hMSl9fSkuY2F0Y2goZnVuY3Rpb24oaCl7fSl9O2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2lucHV0W2RhdGEtdHlwZT0iaW52ZGF0YSJdJykuZm9yRWFjaChiPT4Ke2Eoe21ha2U6Yi5kYXRhc2V0Lm1ha2UsbW9kZWw6Yi5kYXRhc2V0Lm1vZGVsLHllYXI6Yi5kYXRhc2V0LnllYXIsc3R5bGVpZHM6Yi5kYXRhc2V0LnN0eWxlaWRzLGh5YnJpZDpiLmRhdGFzZXQuaHlicmlkfSxiKX0pfSxnZXRQYXltZW50RGF0YTooKT0+e2NvbnN0IGE9KGIsZSxnKT0+JGpzY29tcC5hc3luY0V4ZWN1dGVQcm9taXNlR2VuZXJhdG9yRnVuY3Rpb24oZnVuY3Rpb24qKCl7dHJ5e2NvbnN0IGg9eWllbGQoeWllbGQgZmV0Y2goYC8ke2VuY29kZVVSSUNvbXBvbmVudChnKX0vYWpheC9nZXRTaG93cm9vbVBheW1lbnRIdG1sYCx7bWV0aG9kOiJQT1NUIixoZWFkZXJzOntBY2NlcHQ6ImFwcGxpY2F0aW9uL2pzb24iLCJDb250ZW50LVR5cGUiOiJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7IixjaGFyc2V0OiJVVEYtOCJ9LGJvZHk6bmV3IFVSTFNlYXJjaFBhcmFtcyhiKX0pKS5qc29uKCk7ZS5wYXJlbnROb2RlLnF1ZXJ5U2VsZWN0b3IoIi5za2VsZXRvbi1ibG9jayIpLmhpZGRlbj0KITA7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBoLnN0YXR1cyYmInN1Y2Nlc3MiPT1oLnN0YXR1cyl7bGV0IG49aC5jb250ZW50OzA8bi5sZW5ndGgmJihlLnBhcmVudE5vZGUuaW5zZXJ0QWRqYWNlbnRIVE1MKCJiZWZvcmVlbmQiLG4pLGUucGFyZW50Tm9kZS5oaWRkZW49ITEpfX1jYXRjaChoKXt9fSk7ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnaW5wdXRbZGF0YS10eXBlPSJwYXltZW50ZGF0YSJdJykuZm9yRWFjaChiPT57bGV0IGU9IkZSRU5DSCI9PWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNhY3RpdmVzaXRlbGFuZ3VhZ2UiKS52YWx1ZT8iZnIiOiJlbiI7YSh7c3R5bGVpZDpiLmRhdGFzZXQuc3R5bGVpZCx0aXRsZTpiLmRhdGFzZXQudGl0bGUsaHJlZjpiLmRhdGFzZXQuaHJlZixsaW5rU3R5bGU6Yi5kYXRhc2V0LmxpbmtzdHlsZSxsaW5rQ2xhc3M6Yi5kYXRhc2V0LmxpbmtjbGFzcyxjb250YWluZXJDbGFzczpiLmRhdGFzZXQuY29udGFpbmVyY2xhc3MscHJvbW9UZXh0OmIuZGF0YXNldC5wcm9tb3RleHQsCmxhbmc6ZX0sYixlKX0pfX07JCh3aW5kb3cpLm9uKCJsb2FkIixmdW5jdGlvbigpe25ld0NhcnMucmVzaXplTWFpbldpbmRvdygpfSk7ZG9jUmVhZHlBcnIucHVzaCgoKT0+e25ld0NhcnMuZ2V0UGF5bWVudERhdGEoKTtuZXdDYXJzLnNldFBheW1lbnRUb29sdGlwcygpO25ld0NhcnMuc2V0RXZlbnRzKCk7bmV3Q2Fycy5uZXdDYXJzRmlsdGVyKCk7bmV3Q2Fycy5zZXRQcmljZVRvb2xUaXBzKCk7bmV3Q2Fycy5nZXRJbnZlbnRvcnlEYXRhKCl9KTsKLyoqIC9tL2pzL2pxdWVyeS51aS50b3VjaC1wdW5jaC5taW4uanMgKiovCi8qIQogKiBqUXVlcnkgVUkgVG91Y2ggUHVuY2ggMC4yLjMKICoKICogQ29weXJpZ2h0IDIwMTHigJMyMDE0LCBEYXZlIEZ1cmZlcm8KICogRHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIG9yIEdQTCBWZXJzaW9uIDIgbGljZW5zZXMuCiAqCiAqIERlcGVuZHM6CiAqICBqcXVlcnkudWkud2lkZ2V0LmpzCiAqICBqcXVlcnkudWkubW91c2UuanMKICovCiFmdW5jdGlvbihhKXtmdW5jdGlvbiBmKGEsYil7aWYoIShhLm9yaWdpbmFsRXZlbnQudG91Y2hlcy5sZW5ndGg+MSkpe2EucHJldmVudERlZmF1bHQoKTt2YXIgYz1hLm9yaWdpbmFsRXZlbnQuY2hhbmdlZFRvdWNoZXNbMF0sZD1kb2N1bWVudC5jcmVhdGVFdmVudCgiTW91c2VFdmVudHMiKTtkLmluaXRNb3VzZUV2ZW50KGIsITAsITAsd2luZG93LDEsYy5zY3JlZW5YLGMuc2NyZWVuWSxjLmNsaWVudFgsYy5jbGllbnRZLCExLCExLCExLCExLDAsbnVsbCksYS50YXJnZXQuZGlzcGF0Y2hFdmVudChkKX19aWYoYS5zdXBwb3J0LnRvdWNoPSJvbnRvdWNoZW5kImluIGRvY3VtZW50LGEuc3VwcG9ydC50b3VjaCl7dmFyIGUsYj1hLnVpLm1vdXNlLnByb3RvdHlwZSxjPWIuX21vdXNlSW5pdCxkPWIuX21vdXNlRGVzdHJveTtiLl90b3VjaFN0YXJ0PWZ1bmN0aW9uKGEpe3ZhciBiPXRoaXM7IWUmJmIuX21vdXNlQ2FwdHVyZShhLm9yaWdpbmFsRXZlbnQuY2hhbmdlZFRvdWNoZXNbMF0pJiYoZT0hMCxiLl90b3VjaE1vdmVkPSExLGYoYSwibW91c2VvdmVyIiksZihhLCJtb3VzZW1vdmUiKSxmKGEsIm1vdXNlZG93biIpKX0sYi5fdG91Y2hNb3ZlPWZ1bmN0aW9uKGEpe2UmJih0aGlzLl90b3VjaE1vdmVkPSEwLGYoYSwibW91c2Vtb3ZlIikpfSxiLl90b3VjaEVuZD1mdW5jdGlvbihhKXtlJiYoZihhLCJtb3VzZXVwIiksZihhLCJtb3VzZW91dCIpLHRoaXMuX3RvdWNoTW92ZWR8fGYoYSwiY2xpY2siKSxlPSExKX0sYi5fbW91c2VJbml0PWZ1bmN0aW9uKCl7dmFyIGI9dGhpcztiLmVsZW1lbnQub24oe3RvdWNoc3RhcnQ6YS5wcm94eShiLCJfdG91Y2hTdGFydCIpLHRvdWNobW92ZTphLnByb3h5KGIsIl90b3VjaE1vdmUiKSx0b3VjaGVuZDphLnByb3h5KGIsIl90b3VjaEVuZCIpfSksYy5jYWxsKGIpfSxiLl9tb3VzZURlc3Ryb3k9ZnVuY3Rpb24oKXt2YXIgYj10aGlzO2IuZWxlbWVudC5vZmYoe3RvdWNoc3RhcnQ6YS5wcm94eShiLCJfdG91Y2hTdGFydCIpLHRvdWNobW92ZTphLnByb3h5KGIsIl90b3VjaE1vdmUiKSx0b3VjaGVuZDphLnByb3h5KGIsIl90b3VjaEVuZCIpfSksZC5jYWxsKGIpfX19KGpRdWVyeSk7LypFT0YqLzsKLyoqIC9tL2pzL3BheW1lbnRDYWxjdWxhdG9yLmpzICoqLwp2YXIgX19fZDJjX3BheW1lbnRDYWxjdWxhdG9yanNfY19vbj0iMjAyNi0wNC0wNiAxMjozMDowMyI7J3VzZSBzdHJpY3QnO2Z1bmN0aW9uIHBvcHVwQ2FsY3VsYXRvckluaXRpYWxpemVkKCl7ZnVuY3Rpb24gYSgpe2MmJmMuYWJvcnQoKTtjYWxjVXBkYXRlUGF5bWVudFhociYmKGNhbGNVcGRhdGVQYXltZW50WGhyLmFib3J0KCksY2FsY1VwZGF0ZVBheW1lbnRYaHI9bnVsbCk7dmFyIGQ9KCQoImJvZHkiKS5oYXNDbGFzcygiRU5HTElTSCIpPyIvZW4iOiIvZnIiKSsiL2FqYXgvZ2V0UGF5bWVudERhdGFGb3JTdHlsZUlEP3dzd2lkdGg9MCIsYj1nZXRQb3BDb250YWluU2V0dGluZ3MoKSxnPWdldE9wdGlvbnNBbW91bnQoYikscj1nZXRBY2Nlc3Nvcmllc0Ftb3VudChiKTtsZXQgbT1nZXRTZWxlY3RlZEFjY2Vzc29yaWVzKGIpO3ZhciBuPWdldFByb3RlY3Rpb25QbGFuc0Ftb3VudChiKSxwPWIuaGFzT3duUHJvcGVydHkoIm5vVHJpbVNlbGVjdCIpJiYidHJ1ZSI9PWIubm9UcmltU2VsZWN0fHwidXNlZGNhcnMuaHRtbCI9PSQoIiNQQUdFSUQiKS52YWwoKXx8CiJjYXJkZXRhaWwuaHRtbCI9PSQoIiNQQUdFSUQiKS52YWwoKSx3PWIuaGFzT3duUHJvcGVydHkoInN0b2NrTnVtYmVyIik\/Yi5zdG9ja051bWJlcjoiIix5PWIuaGFzT3duUHJvcGVydHkoInZpbiIpP2IudmluOiIiLHQ9cGFyc2VJbnQoJCgiI3BheW1lbnRDYWxjdWxhdG9yRG93blBheW1lbnQiKS52YWwoKXx8MCk7aWYocCYmIXcpe3ZhciB2PWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwaG9uZXN0b2NrbnVtYmVyIik7diYmKHc9di52YWx1ZXx8IiIpfXAmJiF5JiYodj1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicGhvbmV2aW4iKSkmJih5PXYudmFsdWV8fCIiKTtwJiYhYi5zdHlsZWlkJiYodj1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYWN0aXZlU3R5bGVJRCIpKSYmKGIuc3R5bGVpZD12LnZhbHVlfHxiLnN0eWxlaWQpO2lmKCJjYXNoIj09JCgiI3BheW1lbnRDYWxjdWxhdG9yUGF5bWVudFR5cGUgLmFjdGl2ZVBheW1lbnRUeXBlIikuYXR0cigiZGF0YS10eXBlIikpZW5hYmxlQ2FzaE9wdGlvbigpOwplbHNle3Y9cGFyc2VJbnQoJCgiLnBheW1lbnRDYWxjdWxhdG9yVHJhZGVJblZhbHVlIikudmFsKCl8fDApK3Q7dmFyIEE9W107ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiLmNvbmRpdGlvbmFsLXJlYmF0ZS1jaGVja2JveCIpLmZvckVhY2goZnVuY3Rpb24ocSl7cS5jaGVja2VkJiYocT1xLmdldEF0dHJpYnV0ZSgiZGF0YS1jb25kaXRpb25hbC1yZWJhdGUtaWQiKSkmJkEucHVzaChxKX0pO3ZhciB4PW51bGw7Q29va2llcy5nZXQoInBheW1lbnRDYWxjdWxhdG9yU2VsZWN0ZWRPcHRpb25zIikmJih4PUNvb2tpZXMuZ2V0KCJwYXltZW50Q2FsY3VsYXRvclNlbGVjdGVkT3B0aW9ucyIpLnNwbGl0KCItIikpO3ZhciB6PSQoIiNwYXltZW50Q2FsY3VsYXRvckttQWxsb3dhbmNlIikudmFsKCk7IXomJngmJnhbM10mJih6PXhbM10pO3ZhciBmPSQoIiNwYXltZW50Q2FsY3VsYXRvclBheW1lbnRUeXBlIC5hY3RpdmVQYXltZW50VHlwZSIpLmF0dHIoImRhdGEtdHlwZSIpOyFmJiZ4JiYKeFswXSYmKGY9eFswXSk7ISQoIiNwYXltZW50Q2FsY3VsYXRvckludGVydmFsIikudmFsKCkmJngmJnhbMl0mJiQoIiNwYXltZW50Q2FsY3VsYXRvckludGVydmFsIikudmFsKHhbMl0pO2M9JC5hamF4KHt1cmw6ZCx0eXBlOiJQT1NUIixkYXRhVHlwZToiSlNPTiIsZGF0YTp7c3R5bGVpZDpiLnN0eWxlaWQscGF5bWVudFR5cGU6Zixkb3ducGF5bWVudDp2LG9wdGlvbnNBbW91bnQ6ZyxwYXltZW50RnJlcXVlbmN5OiQoIiNwYXltZW50Q2FsY3VsYXRvckludGVydmFsIikudmFsKCksa21BbGxvd2FuY2U6eixvcHRpb25zOmcsaXNJbnZlbnRvcnk6cCxzbjp3LHZpbjp5LGNvbmRpdGlvbmFsUmViYXRlSWRzOkEuam9pbigiLCIpLGFjY2Vzc29yaWVzOnIsc2VsZWN0ZWRBY2Nlc3NvcmllczptLHByb3RlY3Rpb25QbGFuczpufSxzdWNjZXNzOmZ1bmN0aW9uKHEpe3EuY3VycmVudFBheW1lbnQmJnEuY3VycmVudFBheW1lbnQubGVuZ3RoJiYoJCgiI3BheW1lbnRDYWxjdWxhdG9yRG93blBheW1lbnQiKS52YWwodCksCmY9ImxlYXNlIj09PWY\/ImxlYXNpbmciOiJmaW5hbmNlIj09PWY\/ImZpbmFuY2luZyI6ZiwiY2FzaCI9PT1mJiYoJCgiI3BheW1lbnRDYWxjdWxhdG9yUGF5bWVudENvbnRhaW5lciIpLmhpZGUoKSwkKCIjcGF5bWVudENhbGN1bGF0b3JQYXltZW50Q29udGFpbmVyV2l0aFRheGVzIikuaGlkZSgpKSxxLmN1cnJlbnRQYXltZW50JiYwIT09cS5jdXJyZW50UGF5bWVudC5sZW5ndGh8fCJjYXNoIj09PWY\/KCQoIiNwYXltZW50Q2FsY3VsYXRvckVycm9yTWVzc2FnZSIpLmhpZGUoKSwkKCIjcGF5bWVudENhbGN1bGF0b3JEb3duUGF5bWVudEVycm9yTWVzc2FnZSIpLmhpZGUoKSwkKCIjcGF5bWVudENhbGN1bGF0b3JEb3duUGF5bWVudEVycm9yTWVzc2FnZUZpbmFuY2UiKS5oaWRlKCksJCgiI3BheW1lbnRDYWxjdWxhdG9yRG93blBheW1lbnRFcnJvck1lc3NhZ2VMZWFzZSIpLmhpZGUoKSwkKCIjcGF5bWVudENhbGN1bGF0b3JPcHRpb25Db250YWluZXIiKS5zaG93KCksJCgiI3BheW1lbnRDYWxjdWxhdG9yTm90aWNlQ29udGFpbmVyIikucHJvcCgiaGlkZGVuIiwKITEpLHEuY3VycmVudFBheW1lbnQmJjA8cS5jdXJyZW50UGF5bWVudC5sZW5ndGgmJigkKCIjcGF5bWVudENhbGN1bGF0b3JJbnRlcnZhbCIpLnZhbChxLmN1cnJlbnRQYXltZW50WzBdLmludGVydmFsKSxmPWZ8fCgibGVhc2UiPT09cS5jdXJyZW50UGF5bWVudFswXS50eXBlPyJsZWFzaW5nIjoiZmluYW5jaW5nIikpKTooJCgiI3BheW1lbnRDYWxjdWxhdG9yT3B0aW9uQ29udGFpbmVyIikuaGlkZSgpLCQoIiNwYXltZW50Q2FsY3VsYXRvclBheW1lbnRDb250YWluZXIiKS5oaWRlKCksJCgiI3BheW1lbnRDYWxjdWxhdG9yUGF5bWVudENvbnRhaW5lcldpdGhUYXhlcyIpLmhpZGUoKSwkKCIjcGF5bWVudENhbGN1bGF0b3JOb3RpY2VDb250YWluZXIiKS5wcm9wKCJoaWRkZW4iLCEwKSwkKCIjcGF5bWVudENhbGN1bGF0b3JFcnJvck1lc3NhZ2UiKS5zaG93KCkpLHNob3dIaWRlUGF5bWVudFNlY3Rpb24ocSxmKSwwPj0kKCIjcGF5bWVudENhbGN1bGF0b3JLbUFsbG93YW5jZSBvcHRpb24iKS5sZW5ndGgmJgpwb3B1bGF0ZUxlYXNlS01BbGxvd2FuY2VEcm9wZG93bihxKSwibGVhc2luZyI9PWY\/JCgiLnBheW1lbnRDYWxjdWxhdG9yS21BbGxvd2FuY2VDb250YWluZXIiKS5zaG93KCk6JCgiLnBheW1lbnRDYWxjdWxhdG9yS21BbGxvd2FuY2VDb250YWluZXIiKS5oaWRlKCksZ2V0Q2FzaFByaWNlQmxvY2socSksImNhc2giPT09Zj9lbmFibGVDYXNoT3B0aW9uKCk6KHEuY3VycmVudFBheW1lbnQmJnEuY3VycmVudFBheW1lbnQubGVuZ3RoJiZzaG93UGF5bWVudHMocS5jdXJyZW50UGF5bWVudCxxLnBheW1lbnRGZWVzLHEubWFrZWlkLHEpLHNldFRpbWVvdXQoZnVuY3Rpb24oKXt2YXIgaz0kKCcjcGF5bWVudENhbGN1bGF0b3JDb250YWluZXIgaW5wdXRbbmFtZT0ic2VsZWN0ZWRQYXltZW50Il06Y2hlY2tlZCcpO2subGVuZ3RoJiYiTkVXQ0FSUyIhPSgkKCIjdGFyZ2V0UGFnZSIpLnZhbCgpfHwhMSkmJiJVU0VEQ0FSUyIhPSgkKCIjdGFyZ2V0UGFnZSIpLnZhbCgpfHwhMSkmJihrPXtjdXJyZW50UGF5bWVudDprLmF0dHIoImRhdGEtcmVhbHBheW1lbnQiKSwKY3VycmVudFJhdGU6ay5hdHRyKCJkYXRhLXJhdGUiKSxwYXltZW50VGVybTprLnZhbCgpLHBheW1lbnRUeXBlOiQoIiNwYXltZW50Q2FsY3VsYXRvclBheW1lbnRUeXBlIC5hY3RpdmVQYXltZW50VHlwZSIpLmF0dHIoImRhdGEtdHlwZSIpLHBheW1lbnRJbnRlcnZhbDokKCIjcGF5bWVudENhbGN1bGF0b3JJbnRlcnZhbCIpLnZhbCgpLHBheW1lbnREb3duUGF5bWVudDpwYXJzZUludCgkKCIucGF5bWVudENhbGN1bGF0b3JUcmFkZUluVmFsdWUiKS52YWwoKXx8MCkrcGFyc2VJbnQoJCgiI3BheW1lbnRDYWxjdWxhdG9yRG93blBheW1lbnQiKS52YWwoKXx8MCksdG90YWxJbnRlcmVzdDprLmF0dHIoImRhdGEtdG90YWxpbnRlcmVzdCIpLGx1eGVUYXhBbW91bnQ6ay5hdHRyKCJkYXRhLWx1eGVUYXhBbW91bnQiKSxyYXRlVHlwZTprLmF0dHIoImRhdGEtcmF0ZXR5cGUiKSxlZmZlY3RpdmVSYXRlOmsuYXR0cigiZGF0YS1lZmZlY3RpdmVSYXRlIiksdG90YWxDb3N0OmsuYXR0cigiZGF0YS10b3RhbENvc3QiKX0sCmNoYW5nZVBhZ2VQYXltZW50VmFsdWUoaykpfSwyNTApKSl9LGVycm9yOmZ1bmN0aW9uKHEsayx1KXtjb25zb2xlLmVycm9yKCJsb2FkUGF5bWVudHM6OiBQYXltZW50IGNhbGN1bGF0aW9uIGVycm9yOiIsayx1KX19KX19dmFyIGM9bnVsbDskKCIjcGF5bWVudENhbGN1bGF0b3JJbnRlcnZhbCIpLm9uKCJjaGFuZ2UiLGZ1bmN0aW9uKCl7YSgpfSk7JCgiI3BheW1lbnRDYWxjdWxhdG9yUGF5bWVudFR5cGUgbGkiKS5vbigiY2xpY2siLGZ1bmN0aW9uKGQpeyQoIiNwYXltZW50Q2FsY3VsYXRvclBheW1lbnRUeXBlIGxpIikucmVtb3ZlQ2xhc3MoImFjdGl2ZVBheW1lbnRUeXBlIik7dmFyIGI9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI3BheW1lbnRDYWxjdWxhdG9yQ29udGFpbmVyIC5jYWxjLXBheW1lbnQtY2FzaCIpOyQodGhpcykuYWRkQ2xhc3MoImFjdGl2ZVBheW1lbnRUeXBlIik7c3dpdGNoKCEwKXtjYXNlICJsZWFzaW5nIj09PSQodGhpcykuYXR0cigiZGF0YS10eXBlIik6Yi5oaWRkZW49CiEwOyQoIi5wYXltZW50Q2FsY3VsYXRvckttQWxsb3dhbmNlQ29udGFpbmVyIikuc2hvdygpOyQoIi5wYXltZW50Q2FsY3VsYXRvcklucHV0Q29udGFpbmVyIikuc2hvdygpO2JyZWFrO2Nhc2UgImZpbmFuY2luZyI9PT0kKHRoaXMpLmF0dHIoImRhdGEtdHlwZSIpOmIuaGlkZGVuPSEwOyQoIi5wYXltZW50Q2FsY3VsYXRvckttQWxsb3dhbmNlQ29udGFpbmVyIikuaGlkZSgpOyQoIi5wYXltZW50Q2FsY3VsYXRvcklucHV0Q29udGFpbmVyIikuc2hvdygpO2JyZWFrO2Nhc2UgImNhc2giPT09JCh0aGlzKS5hdHRyKCJkYXRhLXR5cGUiKTpiLmhpZGRlbj0hMSwkKCIucGF5bWVudENhbGN1bGF0b3JJbnB1dENvbnRhaW5lciIpLmhpZGUoKSwkKCIjcGF5bWVudENhbGN1bGF0b3JQYXltZW50Q29udGFpbmVyIikuaGlkZSgpLCQoIiNwYXltZW50Q2FsY3VsYXRvclBheW1lbnRDb250YWluZXJXaXRoVGF4ZXMiKS5oaWRlKCksbnVsbCE9PUNvb2tpZXMuZ2V0KCJwYXltZW50Q2FsY3VsYXRvclNlbGVjdGVkT3B0aW9ucyIpJiYKKGI9Q29va2llcy5nZXQoInBheW1lbnRDYWxjdWxhdG9yU2VsZWN0ZWRPcHRpb25zIikuc3BsaXQoIi0iKSxiWzBdPSJjYXNoIixDb29raWVzLnNldCgicGF5bWVudENhbGN1bGF0b3JTZWxlY3RlZE9wdGlvbnMiLGIuam9pbigiLSIpLG51bGwsIi8iKSksd2luZG93LnBheW1lbnRTZWxlY3RDaGFuZ2VkPSEwLCJ1bmRlZmluZWQiIT09dHlwZW9mIG1vZGVsQ29uZmlnJiYiZnVuY3Rpb24iPT09dHlwZW9mIG1vZGVsQ29uZmlnLnNldEJOUFZpZXcmJm1vZGVsQ29uZmlnLnNldEJOUFZpZXcoITAsImNhc2giKX1sZXQgZzsxIT0obnVsbD09ZD92b2lkIDA6bnVsbD09KGc9ZC5kZXRhaWwpP3ZvaWQgMDpnLmlzRmlyc3RSdW4pJiYkKCIjcGF5bWVudENhbGN1bGF0b3JEb3duUGF5bWVudCIpLnRyaWdnZXIoImJsdXIiKX0pOyQoIiNwYXltZW50Q2FsY3VsYXRvckttQWxsb3dhbmNlIikub24oImNoYW5nZSIsZnVuY3Rpb24oKXthKCl9KTskKCIjcGF5bWVudENhbGN1bGF0b3JEb3duUGF5bWVudCIpLm9uKCJibHVyIiwKZnVuY3Rpb24oKXtsZXQgZD1wYXJzZUludCgkKHRoaXMpLnZhbCgpLnJlcGxhY2UoL1teXGRdL2csIiIpKXx8MDtpZigibGVhc2luZyI9PT0kKCIjcGF5bWVudENhbGN1bGF0b3JQYXltZW50VHlwZSAuYWN0aXZlUGF5bWVudFR5cGUiKS5hdHRyKCJkYXRhLXR5cGUiKSl7dmFyIGI9cGFyc2VJbnQoJCgiI21heERvd25QYXltZW50Rm9yVHJpbSIpLnZhbCgpKXx8MDswPGImJmQ+YiYmKGQ9Yil9ZWxzZSBiPXBhcnNlSW50KCQoIiNtYXhEb3duUGF5bWVudEZpbmFuY2VGb3JUcmltIikudmFsKCkpfHwwLDA8YiYmZD5iJiYoZD1iKTskKHRoaXMpLnZhbChkKTthKCl9KTskKCIucGF5bWVudENhbGN1bGF0b3JUcmFkZUluVmFsdWUiKS5vbigiYmx1ciIsZnVuY3Rpb24oKXtsZXQgZD1wYXJzZUludCgkKHRoaXMpLmF0dHIoIm1heCIpKXx8MCxiPXBhcnNlSW50KCQodGhpcykudmFsKCkpfHwwO2I9Yj5kP2Q6YjskKHRoaXMpLnZhbChiKTtfbG9jYWxTdG9yYWdlU2V0KCJ0cmFkZWluX2N1cnJlbnRfdmFsdWUiLApKU09OLnN0cmluZ2lmeSh7dmFsdWU6Yn0pLDEpO2EoKX0pOyQoIiNwYXltZW50Q2FsY3VsYXRvckluY2x1ZGVUYXhDaGVjayIpLm9uKCJjaGFuZ2UiLGZ1bmN0aW9uKCl7JCh0aGlzKS5pcygiOmNoZWNrZWQiKT8oJCgiI3BheW1lbnRDYWxjdWxhdG9yUGF5bWVudENvbnRhaW5lciIpLmhpZGUoKSwkKCIjcGF5bWVudENhbGN1bGF0b3JQYXltZW50Q29udGFpbmVyV2l0aFRheGVzIikuc2hvdygpLCQoIi5wYXltZW50Q2FsY3VsYXRvclRheGVJbmNsdWRlZCIpLnNob3coKSwkKCIucGF5bWVudENhbGN1bGF0b3JUYXhlTm90SW5jbHVkZWQiKS5oaWRlKCkpOigkKCIjcGF5bWVudENhbGN1bGF0b3JQYXltZW50Q29udGFpbmVyV2l0aFRheGVzIikuaGlkZSgpLCQoIiNwYXltZW50Q2FsY3VsYXRvclBheW1lbnRDb250YWluZXIiKS5zaG93KCksJCgiLnBheW1lbnRDYWxjdWxhdG9yVGF4ZUluY2x1ZGVkIikuaGlkZSgpLCQoIi5wYXltZW50Q2FsY3VsYXRvclRheGVOb3RJbmNsdWRlZCIpLnNob3coKSl9KTsKJCgiI3BheW1lbnRDYWxjdWxhdG9yQ2FsbFRvQWN0aW9uQ29udGFpbmVyIGEiKS5vbigiY2xpY2siLGZ1bmN0aW9uKCl7Z2V0UG9wQ29udGFpblNldHRpbmdzKCkuYWxyZWFkeUluaXQ9ITA7d2luZG93LnBheW1lbnRTZWxlY3RDaGFuZ2VkJiYod2luZG93LnRlbXBQYXltZW50U2VsZWN0Q2hhbmdlZD0hMCk7d2luZG93LnBheW1lbnRTZWxlY3RDaGFuZ2VkPSExO3ZvaWQgMCE9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiLnZlaGljbGVDb25maWd1cmF0b3JEUiIpJiYidW5kZWZpbmVkIiE9PXR5cGVvZiBtb2RlbENvbmZpZyYmbW9kZWxDb25maWcuY2hhbmdlUGF5bWVudFBsYW5Qb3B1cCgpOyQoIiNwYXltZW50Q2FsY3VsYXRvclBvcHVwQ29udGFpbmVyIikucG9wdXBpemUoKS5jbG9zZSgpfSk7JCgiI3BheW1lbnRDYWxjdWxhdG9yUG9wdXBDb250YWluZXIgLmNsb3NlLXJldmVhbC1tb2RhbCIpLm9uKCJjbGljayIsZnVuY3Rpb24oKXt2b2lkIDAhPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi52ZWhpY2xlQ29uZmlndXJhdG9yRFIiKSYmCiJ1bmRlZmluZWQiIT09dHlwZW9mIG1vZGVsQ29uZmlnJiZtb2RlbENvbmZpZy5jaGFuZ2VQYXltZW50UGxhblBvcHVwKCl9KTskKCIjcGF5bWVudENhbGN1bGF0b3JUcmltU2VsZWN0Iikub24oImNoYW5nZSIsZnVuY3Rpb24oKXt2YXIgZD1nZXRQb3BDb250YWluU2V0dGluZ3MoKTtkLnN0eWxlaWQ9JCh0aGlzKS52YWwoKTskKCIjYWN0aXZlU3R5bGVJRCIpLmxlbmd0aCYmJCgiI2FjdGl2ZVN0eWxlSUQiKS52YWwoZC5zdHlsZWlkKTtwYXltZW50Q2FsY3VsYXRvclBvcHVwSW5pdCgpO3VwZGF0ZVVybChkKX0pOyQoImJvZHkiKS5vbigiY2xpY2sgdGFwIiwiI3BheW1lbnRDYWxjdWxhdG9yQ29udGFpbmVyIC5maW5hbmNpbmctb3B0aW9uLnBheW1lbnRDYWxjdWxhdG9yUGF5bWVudFdyYXBwZXIgKiIsZnVuY3Rpb24oKXskKHRoaXMpLmZpbmQoJ2lucHV0W25hbWU9InNlbGVjdGVkUGF5bWVudCJdJykucHJvcCgiY2hlY2tlZCIsImNoZWNrZWQiKS50cmlnZ2VyKCJjaGFuZ2UiKX0pOwokKCJib2R5Iikub24oImNoYW5nZSIsJyNwYXltZW50Q2FsY3VsYXRvckNvbnRhaW5lciBpbnB1dFtuYW1lPSJzZWxlY3RlZFBheW1lbnQiXScsZnVuY3Rpb24oKXt2YXIgZD0kKHRoaXMpLnZhbCgpLGI9JCh0aGlzKS5hdHRyKCJkYXRhLXJhdGV0eXBlIik7JCgnaW5wdXRbbmFtZT0ic2VsZWN0ZWRQYXltZW50V2l0aFRheGVzIl1bdmFsdWU9IicrZCsnIl1bZGF0YS1yYXRldHlwZT0iJytiKyciXScpLnByb3AoImNoZWNrZWQiLCEwKTskKCIjcGF5bWVudENhbGN1bGF0b3JDb250YWluZXIgLmZpbmFuY2luZy1vcHRpb24iKS5yZW1vdmVDbGFzcygic2VsZWN0ZWQiKTskKCdpbnB1dFtuYW1lPSJzZWxlY3RlZFBheW1lbnRXaXRoVGF4ZXMiXVt2YWx1ZT0iJytkKyciXVtkYXRhLXJhdGV0eXBlPSInK2IrJyJdJykuY2xvc2VzdCgiLmZpbmFuY2luZy1vcHRpb24iKS5hZGRDbGFzcygic2VsZWN0ZWQiKTskKHRoaXMpLmNsb3Nlc3QoIi5maW5hbmNpbmctb3B0aW9uIikuYWRkQ2xhc3MoInNlbGVjdGVkIil9KTsKJCgiYm9keSIpLm9uKCJjaGFuZ2UiLCcjcGF5bWVudENhbGN1bGF0b3JDb250YWluZXIgaW5wdXRbbmFtZT0ic2VsZWN0ZWRQYXltZW50V2l0aFRheGVzIl0nLGZ1bmN0aW9uKCl7dmFyIGQ9JCh0aGlzKS52YWwoKSxiPSQodGhpcykuYXR0cigiZGF0YS1yYXRldHlwZSIpOyQoJ2lucHV0W25hbWU9InNlbGVjdGVkUGF5bWVudCJdW3ZhbHVlPSInK2QrJyJdW2RhdGEtcmF0ZXR5cGU9IicrYisnIl0nKS5wcm9wKCJjaGVja2VkIiwhMCkudHJpZ2dlcigiY2hhbmdlIil9KTt2YXIgZT0hMTskKCJib2R5Iikub24oImNoYW5nZSIsJyNwYXltZW50Q2FsY3VsYXRvckNvbnRhaW5lciBpbnB1dFtuYW1lPSJzZWxlY3RlZFBheW1lbnQiXScsZnVuY3Rpb24oKXt2YXIgZD1nZXRQb3BDb250YWluU2V0dGluZ3MoKSxiPSQoIiNwYXltZW50Q2FsY3VsYXRvclBheW1lbnRUeXBlIC5hY3RpdmVQYXltZW50VHlwZSIpLmF0dHIoImRhdGEtdHlwZSIpLGc9JCh0aGlzKS52YWwoKSxyPSQoIiNwYXltZW50Q2FsY3VsYXRvckludGVydmFsIikudmFsKCksCm09JCgiI3BheW1lbnRDYWxjdWxhdG9yS21BbGxvd2FuY2UiKS52YWwoKSxuPSQoIiNwYXltZW50Q2FsY3VsYXRvckRvd25QYXltZW50IikudmFsKCk\/JCgiI3BheW1lbnRDYWxjdWxhdG9yRG93blBheW1lbnQiKS52YWwoKTowLHA9JCgiLnBheW1lbnRDYWxjdWxhdG9yVHJhZGVJblZhbHVlIikudmFsKCk\/JCgiLnBheW1lbnRDYWxjdWxhdG9yVHJhZGVJblZhbHVlIikudmFsKCk6MDtuPXBhcnNlSW50KG4pK3BhcnNlSW50KHApO249bi50b0ZpeGVkKDApO3A9YisiLSIrZysiLSIrcisiLSIrbSsiLSIrbjtwIT1Db29raWVzLmdldCgicGF5bWVudENhbGN1bGF0b3JTZWxlY3RlZE9wdGlvbnMiKSYmbnVsbCE9Q29va2llcy5nZXQoInBheW1lbnRDYWxjdWxhdG9yU2VsZWN0ZWRPcHRpb25zIikmJih3aW5kb3cucGF5bWVudFNlbGVjdENoYW5nZWQ9ITAsdm9pZCAwIT1Db29raWVzLmdldCgicGF5bWVudENhbGN1bGF0b3JTZWxlY3RlZE9wdGlvbnMiKS5zcGxpdCgiLSIpWzBdJiYidW5kZWZpbmVkIiE9CnR5cGVvZiBtb2RlbENvbmZpZyYmdm9pZCAwIT1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIudmVoaWNsZUNvbmZpZ3VyYXRvckRSIikmJihlPSEwLG1vZGVsQ29uZmlnLnNldEJOUFZpZXcoZSxiKSksbnVsbCE9Q29va2llcy5nZXQoInBheW1lbnRDYWxjdWxhdG9yU2VsZWN0ZWRPcHRpb25zIikmJkNvb2tpZXMuc2V0KCJwcmV2aW91c3BheW1lbnRDYWxjdWxhdG9yU2VsZWN0ZWRPcHRpb25zIixDb29raWVzLmdldCgicGF5bWVudENhbGN1bGF0b3JTZWxlY3RlZE9wdGlvbnMiKSxudWxsLCIvIikpO2V8fCJ1bmRlZmluZWQiPT10eXBlb2YgbW9kZWxDb25maWd8fCJ1bmRlZmluZWQiPT09dHlwZW9mIG1vZGVsQ29uZmlnfHx2b2lkIDA9PWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi52ZWhpY2xlQ29uZmlndXJhdG9yRFIiKXx8bW9kZWxDb25maWcuc2hvdWxkUmVsb2FkQk5QVmlld09uUGF5bWVudENoYW5nZShlLGIpO0Nvb2tpZXMuc2V0KCJwYXltZW50Q2FsY3VsYXRvclNlbGVjdGVkT3B0aW9ucyIsCnAsbnVsbCwiLyIpO3ZhciB3PSQoImJvZHkiKS5oYXNDbGFzcygiRU5HTElTSCIpPyJtb250aHMiOiJtb2lzIix5PSQoImJvZHkiKS5oYXNDbGFzcygiRU5HTElTSCIpPyIkIituKyIgZG93biBwYXltZW50IjpuKyIgJCBjb21wdGFudCI7cD0kKCJib2R5IikuaGFzQ2xhc3MoIkVOR0xJU0giKT8icGVyIHdlZWsgZm9yIjoicGFyIHNlbWFpbmUgcG91ciI7c3dpdGNoKHIpe2Nhc2UgIndlZWtseSI6cD0kKCJib2R5IikuaGFzQ2xhc3MoIkVOR0xJU0giKT8icGVyIHdlZWsgZm9yIjoicGFyIHNlbWFpbmUgcG91ciI7YnJlYWs7Y2FzZSAiYml3ZWVrbHkiOnA9JCgiYm9keSIpLmhhc0NsYXNzKCJFTkdMSVNIIik\/InBlciAyIHdlZWtzIGZvciI6InBhciAyIHNlbWFpbmVzIHBvdXIiO2JyZWFrO2Nhc2UgInNlbWltb250aGx5IjpwPSQoImJvZHkiKS5oYXNDbGFzcygiRU5HTElTSCIpPyJ0d2ljZSBhIG1vbnRoIGZvciI6IjIgZm9pcyBwYXIgbW9pcyBwb3VyIjticmVhaztjYXNlICJtb250aGx5IjpwPQokKCJib2R5IikuaGFzQ2xhc3MoIkVOR0xJU0giKT8icGVyIG1vbnRoIGZvciI6InBhciBtb2lzIHBvdXIifW09ImxlYXNpbmciPT09Yj9tKyJrbSI6IiI7dmFyIHQ9JCgiYm9keSIpLmhhc0NsYXNzKCJFTkdMSVNIIik\/ImxlYXNpbmciPT09Yj8iTGVhc2luZyI6IkZpbmFuY2luZyI6ImxlYXNpbmciPT09Yj8iTG9jYXRpb24iOiJGaW5hbmNlbWVudCI7ZC52ZWhpY2xlSW5mbyYmKGVtYWlsSGFuZGxlci5wYXltZW50VmVoaWNsZT1kLnZlaGljbGVJbmZvLm1ha2UrIiAiKyhkLnZlaGljbGVJbmZvLm1vZGVsfHxkLnZlaGljbGVJbmZvLkNGTW9kZWxOYW1lKSsiICIrZC52ZWhpY2xlSW5mby5DRlN0eWxlTmFtZSxlbWFpbEhhbmRsZXIucGF5bWVudFZlaGljbGU9JCgiYm9keSIpLmhhc0NsYXNzKCJFTkdMSVNIIik\/ZC52ZWhpY2xlSW5mby55ZWFyKyIgIitlbWFpbEhhbmRsZXIucGF5bWVudFZlaGljbGU6ZW1haWxIYW5kbGVyLnBheW1lbnRWZWhpY2xlKyIgIitkLnZlaGljbGVJbmZvLnllYXIsCmVtYWlsSGFuZGxlci5wYXltZW50VmVoaWNsZSs9IigiK3QrIiAiK3ArIiAiK2crIiAiK3crIi4gIit5KyIuICIrbSsiKSIsZW1haWxIYW5kbGVyLm1ha2U9ZC52ZWhpY2xlSW5mby5tYWtlLGVtYWlsSGFuZGxlci5tb2RlbD1kLnZlaGljbGVJbmZvLm1vZGVsfHxkLnZlaGljbGVJbmZvLkNGTW9kZWxOYW1lLGVtYWlsSGFuZGxlci50cmltPWQudmVoaWNsZUluZm8uQ0ZTdHlsZU5hbWUsZW1haWxIYW5kbGVyLnllYXI9ZC52ZWhpY2xlSW5mby55ZWFyKTtpZigiTkVXQ0FSUyIhPT0oJCgiI3RhcmdldFBhZ2UiKS52YWwoKXx8ITEpJiYiVVNFRENBUlMiIT09KCQoIiN0YXJnZXRQYWdlIikudmFsKCl8fCExKSl7cD0kKHRoaXMpLmF0dHIoImRhdGEtcmVhbHBheW1lbnQiKTtkPSQodGhpcykuYXR0cigiZGF0YS1yYXRlIik7bT0kKHRoaXMpLmF0dHIoImRhdGEtdG90YWxpbnRlcmVzdCIpO3c9JCh0aGlzKS5hdHRyKCJkYXRhLWx1eGVUYXhBbW91bnQiKTt5PSQodGhpcykuYXR0cigiZGF0YS1lZmZlY3RpdmVSYXRlIik7CnQ9JCh0aGlzKS5hdHRyKCJkYXRhLXJhdGV0eXBlIik7dmFyIHY9JCh0aGlzKS5hdHRyKCJkYXRhLXRvdGFsQ29zdCIpO2NoYW5nZVBhZ2VQYXltZW50VmFsdWUoe2N1cnJlbnRQYXltZW50OnAsY3VycmVudFJhdGU6ZCxwYXltZW50VGVybTpnLHBheW1lbnRUeXBlOmIscGF5bWVudEludGVydmFsOnIscGF5bWVudERvd25QYXltZW50Om4sdG90YWxJbnRlcmVzdDptLGx1eGVUYXhBbW91bnQ6dyxyYXRlVHlwZTp0LGVmZmVjdGl2ZVJhdGU6eSx0b3RhbENvc3Q6dn0pfXk9IiIhPSQoIiNkaXNjbGFpbWVyUHJpY2VUZXh0IikudmFsKCk\/JCgiI2Rpc2NsYWltZXJQcmljZVRleHQiKS52YWwoKToiK3R4IjtpZigkKCIuYm5wX3BheW1lbnRfY29udGFpbmVyIikubGVuZ3RoKXt3PSQoIiNhY3RpdmVzaXRlbGFuZ3VhZ2UiKS52YWwoKXx8IkZSRU5DSCI7cD0kKHRoaXMpLmF0dHIoImRhdGEtcmVhbHBheW1lbnQiKTtkPSQodGhpcykuYXR0cigiZGF0YS1yYXRlIik7bT0iMSI9PSQoIiNyb3VuZFBheW1lbnQiKS52YWwoKT8KMDoyO3Q9cGFyc2VGbG9hdChwKS50b0ZpeGVkKG0pO3Q9dC5yZXBsYWNlKC9cLihbMC05XSopLyxmdW5jdGlvbihBLHgpe3JldHVybic8c3VwIGNsYXNzPSJwZCI+Jyt4KyI8L3N1cD4ifSk7cD0kKCIjSU5URVJWQUxfU0hPUlRfV0VFS0xZIikudmFsKCk7bT01Mjtzd2l0Y2gocil7Y2FzZSAid2Vla2x5IjpwPSQoIiNJTlRFUlZBTF9TSE9SVF9XRUVLTFkiKS52YWwoKTttPTUyO2JyZWFrO2Nhc2UgImJpd2Vla2x5IjpwPSQoIiNJTlRFUlZBTF9TSE9SVF9CSVdFRUtMWSIpLnZhbCgpO209MjY7YnJlYWs7Y2FzZSAic2VtaW1vbnRobHkiOnA9JCgiI0lOVEVSVkFMX1NIT1JUX1NFTUlNT05USExZIikudmFsKCk7bT0yNDticmVhaztjYXNlICJtb250aGx5IjpwPSQoIiNJTlRFUlZBTF9TSE9SVF9NT05USExZIikudmFsKCksbT0xMn1yPXkrIi8iK3A7IjEiPT0kKCIjcGF5bWVudENhbGN1bGF0b3JTdHJpa2VQYXltZW50IikudmFsKCkmJiJibHVyIj09PSQoIiNwYXltZW50Q2FsY3VsYXRvclN0cmlrZVBheW1lbnRPcHRpb24iKS52YWwoKSYmCih0PSc8c3BhbiBjbGFzcz0iYmx1ci1wcmljZSI+Jyt0KyI8L3NwYW4+Iik7cD1EMkNVdGlscy5Gb3JtYXQudG9QcmljZSh0KTtuPUQyQ1V0aWxzLkZvcm1hdC50b1ByaWNlKG4pKygiRU5HTElTSCI9PT13PyIgZG93biI6IiBjb21wdGFudCIpO2I9ImZpbmFuY2luZyI9PT1iPyJFTkdMSVNIIj09PXc\/ZysiIG1vbnRocyBmaW4uIjoiRmluLiAiK2crIiBtb2lzIjoiRU5HTElTSCI9PT13P2crIiBtb250aHMgbGVhc2UiOiJMb2MuICIrZysiIG1vaXMiO2Q9cGFyc2VGbG9hdChkKS50b0ZpeGVkKDIpKyIlIjt3PWIrIiAvICIrbisiIEAgIitkKyI6IjsxPT0kKCIjaXNEUlNpdGUiKS5sZW5ndGgmJiIxIj09JCgiI2lzRFJTaXRlIikudmFsKCkmJihnPXBhcnNlSW50KHBhcnNlSW50KGcpLzEyKm0pLG09c3RvcmUuZ2V0KCJpMThuIikuUEFZTUVOVFMudG9Mb3dlckNhc2UoKSx3PWIrIiAvICIrZysiICIrbSsiIC8gIituKyIgQCAiK2QrIjoiKTskKCIuYm5wX3BheW1lbnRfY29udGFpbmVyIC5icC1wYXltZW50LWRlc2MiKS5odG1sKHcpOwokKCIuYm5wX3BheW1lbnRfY29udGFpbmVyIC5icC1wYXltZW50LWFtb3VudCIpLmh0bWwocCk7JCgiLmJucF9wYXltZW50X2NvbnRhaW5lciAuYnAtdGF4LXR4dCIpLnRleHQocik7Zz0kKHRoaXMpLmNsb3Nlc3QoIi5wYXltZW50Q2FsY3VsYXRvclBheW1lbnRXcmFwcGVyQ29udGFpbmVyIik7IjEiPT0kKCIjaXNtb2JpbGUiKS52YWwoKSYmKGc9JCh0aGlzKS5jbG9zZXN0KCIucGF5bWVudENhbGN1bGF0b3JQYXltZW50V3JhcHBlckNvbnRhaW5lciIpLmZpbmQoIi5wYXltZW50VG9vbHRpcCIpKTtnPWcuYXR0cigiZGF0YS10b29sdGlwIik7Zz1TdHJpbmcoZykucmVwbGFjZSgvJi9nLCImYW1wOyIpLnJlcGxhY2UoLzwvZywiJmx0OyIpLnJlcGxhY2UoLz4vZywiJmd0OyIpLnJlcGxhY2UoLyIvZywiJnF1b3Q7Iik7Y2hhbmdlQm5QVG9vbFRpcE1lc3NhZ2UoZyk7InVuZGVmaW5lZCIhPT10eXBlb2YgbW9kZWxDb25maWcmJihtb2RlbENvbmZpZy5zYXZlQ29uZmlnKCksbW9kZWxDb25maWcuY2FsY3VsYXRlQWNjUGF5bWVudHMoKSl9fSk7CiQoImJvZHkiKS5vbigiY2hhbmdlIiwiLmNvbmRpdGlvbmFsLXJlYmF0ZS1jaGVja2JveCIsZnVuY3Rpb24oKXtpZigkKCIjcGF5bWVudENhbGN1bGF0b3JQb3B1cENvbnRhaW5lciIpLmlzKCI6dmlzaWJsZSIpfHwkKCIjcGF5bWVudENhbGN1bGF0b3JDb250YWluZXIiKS5pcygiOnZpc2libGUiKSkiY2FzaCI9PT0kKCIjcGF5bWVudENhbGN1bGF0b3JQYXltZW50VHlwZSAuYWN0aXZlUGF5bWVudFR5cGUiKS5hdHRyKCJkYXRhLXR5cGUiKT9jYWxjVXBkYXRlUGF5bWVudEluZm8oKTphKCl9KX1mdW5jdGlvbiBlc2NhcGVIVE1MKGEpe3JldHVybiBTdHJpbmcoYSkucmVwbGFjZSgvJi9nLCImYW1wOyIpLnJlcGxhY2UoLzwvZywiJmx0OyIpLnJlcGxhY2UoLz4vZywiJmd0OyIpLnJlcGxhY2UoLyIvZywiJnF1b3Q7IikucmVwbGFjZSgvJy9nLCImIzM5OyIpfQp2YXIgY3RhUGF5bWVudFRleHRGcj1bXSxjdGFQYXltZW50VGV4dEVuPVtdLGNhbGNDdXJQYXltZW50PXt9LGN0YVBheW1lbnRWYWx1ZXM9W10sY2FzaFByaWNlRm9yUGFnZT1udWxsLGNhbGNVcGRhdGVQYXltZW50WGhyPW51bGw7CmZ1bmN0aW9uIHVwZGF0ZVVybChhKXt0cnl7aWYoIWEudmVoaWNsZUluZm8pcmV0dXJuO3ZhciBjPWEudmVoaWNsZUluZm8sZT0idW5kZWZpbmVkIiE9dHlwZW9mIG5ld2NhckRldGFpbHM\/bmV3Y2FyRGV0YWlscy5hY3RpdmVNb2RlbC5zdHlsZXM6Yy5tb2RlbEpTT04uc3R5bGVzLGQ9d2luZG93LnBhcmVudC5sb2NhdGlvbi5ocmVmLnNwbGl0KCIvIikuc2xpY2UoMCwtMSkuam9pbigiLyIpLGI9ZS5maWx0ZXIoZnVuY3Rpb24oZyl7cmV0dXJuIGcuaWQ9PWEuc3R5bGVpZH0pLnBvcCgpfWNhdGNoKGcpe2NvbnNvbGUuZXJyb3IoZyk7cmV0dXJufWImJihlPWIuZW5nbGlzaFRyaW18fCIiLGM9Z2V0Q3VycmVudFZlaGljbGVQYXRoKGMpKyItIitlLnJlcGxhY2UoL1xzfC0vZywiICIpLGUubGVuZ3RoJiZ3aW5kb3cucGFyZW50Lmhpc3RvcnkucHVzaFN0YXRlKHt9LCIiLGQrIi8iK2MrIi5odG1sIikpfQpmdW5jdGlvbiBjaGFuZ2VCblBUb29sVGlwTWVzc2FnZShhKXthPSc8c3BhbiBjbGFzcz0icGF5bWVudFRvb2x0aXAgZmFsIGZhLWluZm8tY2lyY2xlIiBkYXRhLXRvb2x0aXA9IicrYSsnIj48L3NwYW4+JzskKCIucGF5bWVudEluZm9CdWJibGVCblAiKS5odG1sKGEpO3RyeXt2YXIgYz0kKCIucGF5bWVudEluZm9CdWJibGVCblAgLnBheW1lbnRUb29sdGlwIikuYXR0cigiZGF0YS10b29sdGlwIik7JCgiLnBheW1lbnRJbmZvQnViYmxlQm5QIC5wYXltZW50VG9vbHRpcCIpLmRhcmtUb29sdGlwKHtjb250ZW50OmMsZ3Jhdml0eToic291dGgiLHRoZW1lOiJsaWdodCIsdHJpZ2dlcjoiaG92ZXIiLGFuaW1hdGlvbjoiZmFkZUluIn0pfWNhdGNoKGUpe319CmZ1bmN0aW9uIHBvcHVwaXplck9uQ2xvc2UoYSxjKXsicGF5bWVudENhbGN1bGF0b3JQb3B1cENvbnRhaW5lciIhPT1hLmN1cnJlbnRUYXJnZXQucGFyZW50RWxlbWVudC5pZCYmKHdpbmRvdy50ZW1wUGF5bWVudFNlbGVjdENoYW5nZWQmJih3aW5kb3cudGVtcFBheW1lbnRTZWxlY3RDaGFuZ2VkPSExLHdpbmRvdy5wYXltZW50U2VsZWN0Q2hhbmdlZD0hMCksJCgiI3BheW1lbnRDYWxjdWxhdG9yUG9wdXBDb250YWluZXIiKS5wb3B1cGl6ZSgpLm9wZW4oMSksJCgiLnJldmVhbC1tb2RhbCIpLm9mZigicG9wdXBpemVyLmNsb3NlIixwb3B1cGl6ZXJPbkNsb3NlKSl9CmZ1bmN0aW9uIGdldFBvcENvbnRhaW5TZXR0aW5ncygpe3ZhciBhPSQoIiNwYXltZW50Q2FsY3VsYXRvclBvcHVwQ29udGFpbmVyIikuZGF0YSgicG9wdXBTZXR0aW5ncyIpO2Eubm9Nb3RvaW5zaWdodExlYXNlUGF5bWVudHM9ITE7YS5ub01vdG9pbnNpZ2h0RmluYW5jZVBheW1lbnRzPSExO2lmKCJ1bmRlZmluZWQiPT09dHlwZW9mIGEpcmV0dXJuITE7InVuZGVmaW5lZCIhPXR5cGVvZiBzZWFyY2hEZXRhaWxzJiZzZWFyY2hEZXRhaWxzLnZlaGljbGU\/KGEucGF5bWVudFR5cGU9IjEiPT0oc2VhcmNoRGV0YWlscy52ZWhpY2xlLm5vTW90b2luc2lnaHRMZWFzZVBheW1lbnRzfHwhMSk\/ImZpbmFuY2UiOmEucGF5bWVudFR5cGUsYS5wYXltZW50VHlwZT0iMSI9PShzZWFyY2hEZXRhaWxzLnZlaGljbGUubm9Nb3RvaW5zaWdodFBheW1lbnR8fCExKT8ibGVhc2UiOmEucGF5bWVudFR5cGUsYS5ub01vdG9pbnNpZ2h0TGVhc2VQYXltZW50cz0iMSI9PShzZWFyY2hEZXRhaWxzLnZlaGljbGUubm9Nb3RvaW5zaWdodExlYXNlUGF5bWVudHN8fAohMSk\/ITA6ITEsYS5ub01vdG9pbnNpZ2h0RmluYW5jZVBheW1lbnRzPSIxIj09KHNlYXJjaERldGFpbHMudmVoaWNsZS5ub01vdG9pbnNpZ2h0UGF5bWVudHx8ITEpPyEwOiExKTooYS5wYXltZW50VHlwZT0iMSI9PShhLm5vTGVhc2V8fCExKT8iZmluYW5jZSI6YS5wYXltZW50VHlwZSxhLnBheW1lbnRUeXBlPSIxIj09KGEubm9GaW5hbmNlfHwhMSk\/ImxlYXNlIjphLnBheW1lbnRUeXBlLGEubm9Nb3RvaW5zaWdodExlYXNlUGF5bWVudHM9IjEiPT0oYS5ub0xlYXNlfHwhMSk\/ITA6ITEsYS5ub01vdG9pbnNpZ2h0RmluYW5jZVBheW1lbnRzPSIxIj09KGEubm9GaW5hbmNlfHwhMSk\/ITA6ITEpO3JldHVybiBhfQpmdW5jdGlvbiBjaGFuZ2VQYWdlUGF5bWVudFZhbHVlKGEpe3ZhciBjPWEuY3VycmVudFBheW1lbnQsZT1hLmN1cnJlbnRSYXRlLGQ9YS5wYXltZW50VGVybSxiPWEucGF5bWVudFR5cGUsZz1hLnBheW1lbnRJbnRlcnZhbCxyPWEucGF5bWVudERvd25QYXltZW50LG09YS50b3RhbEludGVyZXN0LG49YS5sdXhlVGF4QW1vdW50LHA9YS5yYXRlVHlwZSx3PWEuZWZmZWN0aXZlUmF0ZSx5PWEudG90YWxDb3N0LHQ9JCgiYm9keSIpLmhhc0NsYXNzKCJFTkdMSVNIIik\/IkVOR0xJU0giOiJGUkVOQ0giLHY9Z2V0UG9wQ29udGFpblNldHRpbmdzKCksQT0iMSI9PSQoIiNwYXltZW50Q2FsY3VsYXRvclJvdW5kUGF5bWVudCIpLnZhbCgpPzA6Mix4PTI9PUE\/TWF0aC5mbG9vcihwYXJzZUZsb2F0KGMpKS50b0ZpeGVkKDApOnBhcnNlRmxvYXQoYykudG9GaXhlZCgwKTtjPXBhcnNlRmxvYXQoYykudG9GaXhlZChBKTtBPWMuc3BsaXQoIi4iKVsxXXx8IiI7Yz1jLnJlcGxhY2UoL1wuKFswLTldKikvLApmdW5jdGlvbihCLEUpe3JldHVybic8c3VwIGNsYXNzPSJwZCI+JytFKyI8L3N1cD4ifSk7IjEiPT0kKCIjcGF5bWVudENhbGN1bGF0b3JTdHJpa2VQYXltZW50IikudmFsKCkmJiJibHVyIj09PSQoIiNwYXltZW50Q2FsY3VsYXRvclN0cmlrZVBheW1lbnRPcHRpb24iKS52YWwoKSYmKGM9JzxzcGFuIGNsYXNzPSJibHVyLXByaWNlIj4nK2MrIjwvc3Bhbj4iKTt2YXIgej1EMkNVdGlscy5Gb3JtYXQudG9QcmljZShjKSxmPWMrIiQiLHE9IiQiK2Msaz0ibGVhc2luZyI9PT1iPyJMb2NhdGlvbiI6IkZpbmFuY2VtZW50Iix1PSJsZWFzaW5nIj09PWI\/IkxlYXNpbmciOiJGaW5hbmNpbmciLGw9ZSsiJSIsaD0iIiE9JCgiI2Rpc2NsYWltZXJQcmljZVRleHQiKS52YWwoKT8kKCIjZGlzY2xhaW1lclByaWNlVGV4dCIpLnZhbCgpOiIrdHgiLEQ9aCsiL21vaXMiLEM9aCsiL210aCI7c3dpdGNoKGcpe2Nhc2UgIndlZWtseSI6RD1oKyIvc2VtIjtDPWgrIi93ZWVrIjticmVhaztjYXNlICJiaXdlZWtseSI6RD0KaCsiLzJzZW0iO0M9aCsiLzJ3ZWVrIjticmVhaztjYXNlICJzZW1pbW9udGhseSI6RD1oKyIvYmltZW5zdWVsIjtDPWgrIi9zZW1pbW9udGhseSI7YnJlYWs7ZGVmYXVsdDpEPWgrIi9tb2lzIixDPWgrIi9tb250aCJ9dmFyIEY9IjEiPT0kKCIjcGF5bWVudENhbGN1bGF0b3JTdHJpa2VQYXltZW50IikudmFsKCk\/InNjcmF0Y2giPT09JCgiI3BheW1lbnRDYWxjdWxhdG9yU3RyaWtlUGF5bWVudE9wdGlvbiIpLnZhbCgpPyJzdHJpa2UtcHJpY2UtYmxhY2siOiIiOiIiO2g9RDJDVXRpbHMuRm9ybWF0LnRvUHJpY2UocikrIiBjb21wdGFudCI7dmFyIEo9RDJDVXRpbHMuRm9ybWF0LnRvUHJpY2UocikrIiBkb3duIHBheW1lbnQiO3I9aysiICIrZCsiIG1vaXMiO3U9dSsiICIrZCsiIG1vbnRocyI7ej0nPHNwYW4gY2xhc3M9InR4dC1wYXltZW50ICcrRisnIj4nK3orJzwvc3Bhbj4gQCA8c3BhbiBjbGFzcz0idHh0LXBheW1lbnQiPicrbCsiPC9zcGFuPiI7MDx3LWUmJih6Kz1mb3JtYXRFZmZlY3RpdmVSYXRlVGV4dCh3LAonIGNsYXNzPSJ0eHQtcGF5bWVudCIgJykpO3c9KCJFTkdMSVNIIj09PXQ\/QzpEKSsiICIrKCJFTkdMSVNIIj09PXQ\/SjpoKSsoIjEiPT0kKCIjaXNtb2JpbGUiKS52YWwoKT8iIjonIDxzcGFuIHN0eWxlPSJmb250LXdlaWdodDo3MDA7Y29sb3I6IzAwMDsiIGNsYXNzPSJ2ZHBJbmZvVG9vbHRpcCBmYXIgZmEtaW5mby1jaXJjbGUiPjwvc3Bhbj4nKTskKCIucGF5bWVudFdyYXBwZXIgLnBheW1lbnRMaW5lMiwgLnBheW1lbnRXcmFwcGVyTW9iaWxlVkRQIC5wYXltZW50TGluZTEiKS5odG1sKCJFTkdMSVNIIj09PXQ\/dTpyKTskKCIucGF5bWVudFdyYXBwZXIgLnBheW1lbnRMaW5lMSwgLnBheW1lbnRXcmFwcGVyTW9iaWxlVkRQIC5wYXltZW50TGluZTIiKS5odG1sKHopOyQoIi5wYXltZW50V3JhcHBlciAucGF5bWVudExpbmUzLCAucGF5bWVudFdyYXBwZXJNb2JpbGVWRFAgLnBheW1lbnRMaW5lMyIpLmh0bWwodyk7aD16PSIiO2NhbGNDdXJQYXltZW50LmN1cnJlbnRQYXltZW50JiYKY2FsY0N1clBheW1lbnQuY3VycmVudFBheW1lbnQubGVuZ3RoJiYoaD1jYWxjQ3VyUGF5bWVudC5jdXJyZW50UGF5bWVudFswXS50b3RhbCx6PWBBZmZpY2jDg8KpIMODwqAgJHtofSRgLGg9YExpc3RlZCBhdCAkJHtofWApO2N0YVBheW1lbnRUZXh0RnI9W2Ake2Z9ICR7RH1gLGAke3J9IEAgJHtsfWAsYCR7en1gXTtjdGFQYXltZW50VGV4dEVuPVtgJHtxfSAke0N9YCxgJHt1fSBAICR7bH1gLGAke2h9YF07Y3RhUGF5bWVudFZhbHVlcz1bYS5jdXJyZW50UGF5bWVudCxlLGQsZ107d2luZG93LnBhcmVudC5BTVAmJndpbmRvdy5wYXJlbnQuQU1QLnNldFN0YXRlKHtTU1JfU1RBVEU6e2xlYXNlVGVybVRleHQ6IkVOR0xJU0giPT09dD91OnIsbGVhc2VQYXltZW50VHh0OngsbGVhc2VQYXltZW50RGVjaW1hbDpBLGxlYXNlUmF0ZTpsLGxlYXNlVGF4VGV4dDp3fX0pO2NhbGNDdXJQYXltZW50LmN1clRlcm09ZDtjYWxjQ3VyUGF5bWVudC5jdXJSYXRlPWU7Y2FsY0N1clBheW1lbnQuY3VySW50ZXJ2YWw9Cmc7Y2FsY0N1clBheW1lbnQudGF4VGV4dEZyPUQ7Y2FsY0N1clBheW1lbnQudGF4VGV4dEVuPUM7YT0oJCgiYm9keSIpLmhhc0NsYXNzKCJFTkdMSVNIIik\/Ii9lbiI6Ii9mciIpKyIvYWpheC9nZXRQYXltZW50VG9vbHRpcEJ5U3R5bGVJRD93c3dpZHRoPTAiO2I9ImxlYXNpbmciPT1iPyJsZWFzZSI6ImZpbmFuY2UiO3Q9Z2V0T3B0aW9uc0Ftb3VudCh2KTt4PXYuaGFzT3duUHJvcGVydHkoIm5vVHJpbVNlbGVjdCIpJiYidHJ1ZSI9PXYubm9UcmltU2VsZWN0fHwidXNlZGNhcnMuaHRtbCI9PT0kKCIjUEFHRUlEIikudmFsKCl8fCJjYXJkZXRhaWwuaHRtbCI9PT0kKCIjUEFHRUlEIikudmFsKCk7QT12Lmhhc093blByb3BlcnR5KCJzdG9ja051bWJlciIpP3Yuc3RvY2tOdW1iZXI6IiI7Zj12Lmhhc093blByb3BlcnR5KCJ2aW4iKT92LnZpbjoiIjtxPWdldEFjY2Vzc29yaWVzQW1vdW50KHYpO2w9Z2V0U2VsZWN0ZWRBY2Nlc3Nvcmllcyh2KTtEPWdldFByb3RlY3Rpb25QbGFuc0Ftb3VudCh2KTsKbGV0IEw9W107ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiLmNvbmRpdGlvbmFsLXJlYmF0ZS1jaGVja2JveCIpLmZvckVhY2goZnVuY3Rpb24oQil7Qi5jaGVja2VkJiYoQj1CLmdldEF0dHJpYnV0ZSgiZGF0YS1jb25kaXRpb25hbC1yZWJhdGUtaWQiKSkmJkwucHVzaChCKX0pO3gmJiFBJiYoQz1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicGhvbmVzdG9ja251bWJlciIpKSYmKEE9Qy52YWx1ZXx8IiIpO3gmJiFmJiYoQz1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicGhvbmV2aW4iKSkmJihmPUMudmFsdWV8fCIiKTskLmFqYXgoe3VybDphLHR5cGU6IlBPU1QiLGRhdGFUeXBlOiJIVE1MIixkYXRhOntzdHlsZWlkOnYuc3R5bGVpZCx0eXBlOmIscGF5bWVudDpwYXJzZUZsb2F0KGMpLHRlcm06cGFyc2VJbnQoZCkscmF0ZTpwYXJzZUZsb2F0KGUpLGludGVydmFsOmcsb3B0aW9uczp0LHRvdGFsSW50ZXJlc3Q6bSxpc0ludmVudG9yeTp4LHNuOkEsdmluOmYsbHV4ZVRheEFtb3VudDpuLApyYXRlX3R5cGU6cCx0b3RhbENvc3Q6eSxjb25kaXRpb25hbFJlYmF0ZUlkczpMLmpvaW4oIiwiKSxhY2Nlc3NvcmllczpxLHNlbGVjdGVkQWNjZXNzb3JpZXM6bCxwcm90ZWN0aW9uUGxhbnM6RH0sYmVmb3JlU2VuZDpmdW5jdGlvbihCKXt0cnl7bGV0IEU9JCgibWV0YVtuYW1lPSdjc3JmLWRvbWFpbi1jaGVjayddIik7RS5sZW5ndGgmJkIuc2V0UmVxdWVzdEhlYWRlcigiY3NyZi1kb21haW4tY2hlY2siLEUuYXR0cigiY29udGVudCIpKX1jYXRjaChFKXtjb25zb2xlLmVycm9yKEIpfX0sc3VjY2VzczpmdW5jdGlvbihCKXskKCIjZGFya3Rvb2x0aXAtcGF5bWVudFdyYXBwZXIsICNkYXJrdG9vbHRpcC12ZHBQYXltZW50VG9vbHRpcCwgI2Rhcmt0b29sdGlwLXZkcEluZm9Ub29sdGlwLCAjZGFya3Rvb2x0aXAtdmRwVXNlZEluZm9Ub29sdGlwIikucmVtb3ZlKCk7dmFyIEU9JCgiLm5ld1ZkcEFjdGlvbnMiKS5oYXNDbGFzcygid2VzdCIpPyJ3ZXN0IjokKCIudXNlZFZkcEFjdGlvbnMiKS5oYXNDbGFzcygid2VzdCIpPwoid2VzdCI6ImVhc3QiOyQoIi52ZHBQYXltZW50VG9vbHRpcCwgLnBheW1lbnRXcmFwcGVyIC52ZHBJbmZvVG9vbHRpcCwgLnBheW1lbnRXcmFwcGVyIC52ZHBVc2VkSW5mb1Rvb2x0aXAiKS5kYXJrVG9vbHRpcCh7Y29udGVudDpCLGdyYXZpdHk6RSx0aGVtZToibGlnaHQiLHRyaWdnZXI6ImhvdmVyIixhbmltYXRpb246ImZsaXBJbiJ9KX19KX0KZnVuY3Rpb24gZ2V0Q3VycmVudFZlaGljbGVQYXRoKGEpe3ZhciBjPVtkMmNtZWRpYS51cmwuc2FuaXRpemUoYS5tYWtlKSxkMmNtZWRpYS51cmwuc2FuaXRpemUoYS5tb2RlbCksZDJjbWVkaWEudXJsLnNhbml0aXplKGEueWVhcildLmpvaW4oIi0iKTsiRU5HTElTSCI9PT0oJCgiI2FjdGl2ZXNpdGVsYW5ndWFnZSIpLnZhbCgpfHwiRlJFTkNIIikmJihjPVtkMmNtZWRpYS51cmwuc2FuaXRpemUoYS5tYWtlKSxkMmNtZWRpYS51cmwuc2FuaXRpemUoYS5tb2RlbCksZDJjbWVkaWEudXJsLnNhbml0aXplKGEueWVhcildLmpvaW4oIi0iKSk7cmV0dXJuIGN9CmZ1bmN0aW9uIHNob3dQYXltZW50cyhhLGMsZSxkKXskKCIjcGF5bWVudENhbGN1bGF0b3JQYXltZW50Q29udGFpbmVyIikuaHRtbCgiIik7JCgiI3BheW1lbnRDYWxjdWxhdG9yUGF5bWVudENvbnRhaW5lcldpdGhUYXhlcyIpLmh0bWwoIiIpO3ZhciBiPSIxIj09JCgiI3BheW1lbnRDYWxjdWxhdG9yUm91bmRQYXltZW50IikudmFsKCk\/MDoyOyIxIj09JCgiI3BheW1lbnRDYWxjdWxhdG9yU3RyaWtlUGF5bWVudCIpLnZhbCgpJiYkKCIjcGF5bWVudENhbGN1bGF0b3JTdHJpa2VQYXltZW50T3B0aW9uIikudmFsKCk7dmFyIGc9W10scj0kKCIjb2VtQ2VydGlmaWNhdGlvbiIpLnZhbCgpfHwwOyJmaW5hbmNlIj09YVswXS50eXBlJiZhWzBdLmRvd25wYXltZW50PmQubWF4RG93bkZpbmFuY2U\/KCQoIiNwYXltZW50Q2FsY3VsYXRvckRvd25QYXltZW50RXJyb3JNZXNzYWdlIikuc2hvdygpLCQoIiNwYXltZW50Q2FsY3VsYXRvckRvd25QYXltZW50RXJyb3JNZXNzYWdlRmluYW5jZSIpLnNob3coKSwKJCgiI3BheW1lbnRDYWxjdWxhdG9yRG93blBheW1lbnRFcnJvck1lc3NhZ2VMZWFzZSIpLmhpZGUoKSwkKCIjcGF5bWVudENhbGN1bGF0b3JQYXltZW50Q29udGFpbmVyIikuaGlkZSgpLCQoIiNwYXltZW50Q2FsY3VsYXRvclBheW1lbnRDb250YWluZXJXaXRoVGF4ZXMiKS5oaWRlKCksJCgiI3BheW1lbnRDYWxjdWxhdG9yTm90aWNlQ29udGFpbmVyIikucHJvcCgiaGlkZGVuIiwhMCkpOiJsZWFzZSI9PWFbMF0udHlwZSYmYVswXS5kb3ducGF5bWVudD5kLm1heERvd24\/KCQoIiNwYXltZW50Q2FsY3VsYXRvckRvd25QYXltZW50RXJyb3JNZXNzYWdlIikuc2hvdygpLCQoIiNwYXltZW50Q2FsY3VsYXRvckRvd25QYXltZW50RXJyb3JNZXNzYWdlRmluYW5jZSIpLmhpZGUoKSwkKCIjcGF5bWVudENhbGN1bGF0b3JEb3duUGF5bWVudEVycm9yTWVzc2FnZUxlYXNlIikuc2hvdygpLCQoIiNwYXltZW50Q2FsY3VsYXRvclBheW1lbnRDb250YWluZXIiKS5oaWRlKCksJCgiI3BheW1lbnRDYWxjdWxhdG9yUGF5bWVudENvbnRhaW5lcldpdGhUYXhlcyIpLmhpZGUoKSwKJCgiI3BheW1lbnRDYWxjdWxhdG9yTm90aWNlQ29udGFpbmVyIikucHJvcCgiaGlkZGVuIiwhMCkpOigkKCIjcGF5bWVudENhbGN1bGF0b3JEb3duUGF5bWVudEVycm9yTWVzc2FnZSIpLmhpZGUoKSwkKCIjcGF5bWVudENhbGN1bGF0b3JEb3duUGF5bWVudEVycm9yTWVzc2FnZUZpbmFuY2UiKS5oaWRlKCksJCgiI3BheW1lbnRDYWxjdWxhdG9yRG93blBheW1lbnRFcnJvck1lc3NhZ2VMZWFzZSIpLmhpZGUoKSwkKCIjcGF5bWVudENhbGN1bGF0b3JOb3RpY2VDb250YWluZXIiKS5wcm9wKCJoaWRkZW4iLCExKSwkKCIjcGF5bWVudENhbGN1bGF0b3JJbmNsdWRlVGF4Q2hlY2siKS5pcygiOmNoZWNrZWQiKT8oJCgiI3BheW1lbnRDYWxjdWxhdG9yUGF5bWVudENvbnRhaW5lcldpdGhUYXhlcyIpLnNob3coKSwkKCIjcGF5bWVudENhbGN1bGF0b3JQYXltZW50Q29udGFpbmVyIikuaGlkZSgpKTooJCgiI3BheW1lbnRDYWxjdWxhdG9yUGF5bWVudENvbnRhaW5lciIpLnNob3coKSwkKCIjcGF5bWVudENhbGN1bGF0b3JQYXltZW50Q29udGFpbmVyV2l0aFRheGVzIikuaGlkZSgpKSk7CjU8YS5sZW5ndGg\/YS5mb3JFYWNoKGZ1bmN0aW9uKGspeygwPT1rLnRlcm0lMTJ8fDY0PT1rLnRlcm18fDQwPT1lJiY1MT09ay50ZXJtfHwyMD09ZSYmWzI3LDMwLDM5LDQyXS5pbmNsdWRlcyhrLnRlcm0pfHxbMTYsMjFdLmluY2x1ZGVzKGUpfHw0Mj09ay50ZXJtJiYxMDE0PT1yfHxbMzAsNDJdLmluY2x1ZGVzKGsudGVybSkmJls0NzE1NjIsNDcxNTYzLDQ3MTU2NF0uaW5jbHVkZXMocGFyc2VJbnQoc2V0dGluZ3Muc3R5bGVpZCkpfHwyNz09ay50ZXJtJiYyNz09ZXx8NTI9PWsudGVybSYmMzk9PWUpJiZnLnB1c2goayl9KTpnPWE7dmFyIG09e30sbj0hMTtnLmZvckVhY2goZnVuY3Rpb24oayx1KXtPYmplY3QuaGFzT3duKG0say50ZXJtKT9uPSEwOm1bay50ZXJtXT17fTttW2sudGVybV1bay5yYXRlX3R5cGVdPXV9KTt2YXIgcD1bXSx3PSExLHk9ITE7Q29va2llcy5nZXQoInBheW1lbnRDYWxjdWxhdG9yU2VsZWN0ZWRPcHRpb25zIikmJih3PUNvb2tpZXMuZ2V0KCJwYXltZW50Q2FsY3VsYXRvclNlbGVjdGVkT3B0aW9ucyIpLnNwbGl0KCItIilbMV18fAohMSx5PUNvb2tpZXMuZ2V0KCJwYXltZW50Q2FsY3VsYXRvclNlbGVjdGVkT3B0aW9ucyIpLnNwbGl0KCItIilbMF18fCExKTtpZihhWzBdJiYibGVhc2UiPT1hWzBdLnR5cGUmJiJ1bmRlZmluZWQiIT09dHlwZW9mIGFbMF0ua21fYWxsb3dhbmNlKXt2YXIgdD0wPGQuY3VycmVudFBheW1lbnRbMF0ua21fYWxsb3dhbmNlP2QuY3VycmVudFBheW1lbnRbMF0ua21fYWxsb3dhbmNlOjJFNDskKCIjcGF5bWVudENhbGN1bGF0b3JLbUFsbG93YW5jZSIpLnZhbCh0KX1sZXQgdj1kLnRvdGFsSW5jZW50aXZlLEE9bj8kKCIjTE9XRVNUUEFZTUVOVF9MQUJFTCIpLnZhbCgpOiIiLHg9bj8kKCIjTE9XRVNUUkFURV9MQUJFTCIpLnZhbCgpOiIiO3ZhciB6PTA7JCgiI3BheW1lbnRDYWxjdWxhdG9yTm90aWNlQ29udGFpbmVyIC5qcy10ZW1wS21BbGxvd2VkIikucmVtb3ZlKCk7JC5lYWNoKGcsZnVuY3Rpb24oayx1KXtpZighcC5pbmNsdWRlcyh1LnRlcm0pKXtwLnB1c2godS50ZXJtKTt2YXIgbD0KInN0YW5kYXJkIj09dS5yYXRlX3R5cGV8fDI+T2JqZWN0LmtleXMobVt1LnRlcm1dKS5sZW5ndGg\/dTpnW21bdS50ZXJtXS5zdGFuZGFyZF0saD0yPT1PYmplY3Qua2V5cyhtW3UudGVybV0pLmxlbmd0aD9nW21bdS50ZXJtXS5zdWJ2ZW50ZWRdOiExLEQ9Mj09T2JqZWN0LmtleXMobVt1LnRlcm1dKS5sZW5ndGg\/bVt1LnRlcm1dLnN1YnZlbnRlZDohMSxDPXUudGVybSxGPXUuZG93bnBheW1lbnQudG9GaXhlZCgwKSxKPWwucGF5bWVudC50b0ZpeGVkKGIpLEw9bC5wYXltZW50LnRvRml4ZWQoYik7Sj1KLnJlcGxhY2UoL1wuKFswLTldKikvLGZ1bmN0aW9uKE8sSyl7cmV0dXJuJzxzdXAgY2xhc3M9InBkIj4nK0srIjwvc3VwPiJ9KTt2YXIgQj1sLnBheW1lbnRXaXRoVGF4ZXMudG9GaXhlZChiKSxFPWwucGF5bWVudFdpdGhUYXhlcy50b0ZpeGVkKGIpO0I9Qi5yZXBsYWNlKC9cLihbMC05XSopLyxmdW5jdGlvbihPLEspe3JldHVybic8c3VwIGNsYXNzPSJwZCI+JytLKyI8L3N1cD4ifSk7CnZhciBUPWwucmF0ZSxkYT0icGF5bWVudCIraztrPSJwYXltZW50IitrKyJ3aXRoVGF4ZXMiO0M9JCgiYm9keSIpLmhhc0NsYXNzKCJFTkdMSVNIIik\/IjxzcGFuPiIrQysiPC9zcGFuPiBtb250aCI6IjxzcGFuPiIrQysiPC9zcGFuPiBtb2lzIjtGPWA8c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIj4ke0Z9PC9zcGFuPmArKCQoImJvZHkiKS5oYXNDbGFzcygiRU5HTElTSCIpPyIgZG93biBwYXltZW50IjoiIGNvbXB0YW50Iik7dmFyIFU9IiIhPSQoIiNkaXNjbGFpbWVyUHJpY2VUZXh0IikudmFsKCk\/IjxkaXY+IiskKCIjZGlzY2xhaW1lclByaWNlVGV4dCIpLnZhbCgpKyI8L2Rpdj4iOiIrdHgiLE09bC5jYWxjdWxhdGVkRWZmZWN0aXZlUmF0ZT9sLmNhbGN1bGF0ZWRFZmZlY3RpdmVSYXRlOjAsUD0iIjswPHBhcnNlRmxvYXQoTSktbC5yYXRlJiYoUCs9Zm9ybWF0RWZmZWN0aXZlUmF0ZVRleHQoTSwiIiwnY2xhc3M9Ii1mczEwIicpKTt2YXIgVj1sLnRvdGFsT2JsaWdhdGlvbkFtb3VudD8KbC50b3RhbE9ibGlnYXRpb25BbW91bnQ6MCxXPSdkYXRhLXRvb2x0aXA9IicrbC50b29sdGlwKyciJyxYPSdkYXRhLXRvb2x0aXA9IicrbC50b29sdGlwV2l0aFRheGVzKyciJyxHLGVhPW51bGwhPShHPWwubTJkX2ZpbmFuY2UpP0c6djtHPSJzaW5nbGUtY29sdW1uIjt1PXcmJnc9PXUudGVybSYmeSYmeT09JCgiI3BheW1lbnRDYWxjdWxhdG9yUGF5bWVudFR5cGUgLmFjdGl2ZVBheW1lbnRUeXBlIikuYXR0cigiZGF0YS10eXBlIik\/ImNoZWNrZWQiOiIiO3ZhciBRPSJzbWFsbC1ib3giLEg9IiIsST0iIjtpZihoKXtHPSJsZWZ0LXNlY3Rpb24iO1E9IiI7SD1oLnBheW1lbnQudG9GaXhlZChiKTtsZXQgTz1oLnBheW1lbnQudG9GaXhlZChiKTtIPUgucmVwbGFjZSgvXC4oWzAtOV0qKS8sZnVuY3Rpb24oZmEsUil7cmV0dXJuJzxzdXAgY2xhc3M9InBkIj4nK1IrIjwvc3VwPiJ9KTtJPWgucGF5bWVudFdpdGhUYXhlcy50b0ZpeGVkKGIpO2xldCBLPWgucGF5bWVudFdpdGhUYXhlcy50b0ZpeGVkKGIpOwpJPUkucmVwbGFjZSgvXC4oWzAtOV0qKS8sZnVuY3Rpb24oZmEsUil7cmV0dXJuJzxzdXAgY2xhc3M9InBkIj4nK1IrIjwvc3VwPiJ9KTt2YXIgWT1oLnJhdGUudG9GaXhlZCgyKSxoYT0icGF5bWVudCIrRDtEPSJwYXltZW50IitEKyJ3aXRoVGF4ZXMiO2xldCBOPWguY2FsY3VsYXRlZEVmZmVjdGl2ZVJhdGU\/aC5jYWxjdWxhdGVkRWZmZWN0aXZlUmF0ZTowLFM9IiI7MDxwYXJzZUZsb2F0KE4pLWgucmF0ZSYmKFMrPWZvcm1hdEVmZmVjdGl2ZVJhdGVUZXh0KE4sIiIsJ2NsYXNzPSItZnMxMCInKSk7bGV0IFo9aC50b3RhbE9ibGlnYXRpb25BbW91bnQ\/aC50b3RhbE9ibGlnYXRpb25BbW91bnQ6MCxhYT0nZGF0YS10b29sdGlwPSInK2gudG9vbHRpcCsnIicsYmE9J2RhdGEtdG9vbHRpcD0iJytoLnRvb2x0aXBXaXRoVGF4ZXMrJyInLGNhPWgubTJkX2ZpbmFuY2U7SD0nXHQ8ZGl2IGlkPSInK2hhKyciIGNsYXNzPSJyaWdodC1zZWN0aW9uIHBheW1lbnRDYWxjdWxhdG9yUGF5bWVudFdyYXBwZXJDb250YWluZXIiICcrCmFhKyc+XHRcdDxkaXYgY2xhc3M9Imxvd2VzdC1yYXRlIj4nK1krJyUgPGkgY2xhc3M9ImZhcyBmYS1pbmZvLWNpcmNsZSBpbmZvLWljb24gcGF5bWVudFRvb2x0aXAgcmlnaHRUb29sdGlwIiAnK2FhKyI+PC9pPiIrUysnPC9kaXY+XHRcdDxkaXYgY2xhc3M9ImFjdHVhbC1wYXltZW50Ij48c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIj4nK0grJzwvc3Bhbj48L2Rpdj5cdFx0PGRpdiBjbGFzcz0iZGV0YWlsc1RheCI+JytVKyc8L2Rpdj5cdFx0PGRpdiBjbGFzcz0icmFkaW8tY29udGFpbmVyIj5cdFx0XHQ8aW5wdXRcdFx0XHRcdFx0dHlwZT0icmFkaW8iXHRcdFx0XHRcdG5hbWU9InNlbGVjdGVkUGF5bWVudCJcdFx0XHRcdFx0dmFsdWU9IicraC50ZXJtKyciXHRcdFx0XHRcdGRhdGEtYmFzZXBheW1lbnQ9IicraC5wYXltZW50KyciXHRcdFx0XHRcdGRhdGEtcmVhbHBheW1lbnQ9IicraC5wYXltZW50KyciXHRcdFx0XHRcdGRhdGEtcmF0ZXR5cGU9IicraC5yYXRlX3R5cGUrJyJcdFx0XHRcdFx0ZGF0YS1kaXNwbGF5ZWRwYXltZW50PSInKwpPKyciXHRcdFx0XHRcdGRhdGEtcmVzaWR1YWw9IicraC5yZXNpZHVhbCsnIlx0XHRcdFx0XHRkYXRhLXRvdGFsaW50ZXJlc3Q9IicraC50b3RhbEludGVyZXN0KyciXHRcdFx0XHRcdGRhdGEtbHV4ZVRheEFtb3VudD0iJytoLmx1eGVUYXhBbW91bnQrJyJcdFx0XHRcdFx0ZGF0YS1lZmZlY3RpdmVSYXRlPSInK04rJyJcdFx0XHRcdFx0ZGF0YS10b3RhbENvc3Q9IicrWisnIlx0XHRcdFx0XHRkYXRhLXJhdGU9IicraC5yYXRlKyciICAgICAgICAgICAgICAgICBkYXRhLXJlc2lkdWFsPSInK2gucmVzaWR1YWxWYWx1ZSsnIiAgICAgICAgICAgICAgICAgZGF0YS10b3RhbGluY2VudGl2ZT0iJytjYSsnIiAgICAgICAgICAgICAgICAgZGF0YS1nc3Q9IjAiICAgICAgICAgICAgICAgICBkYXRhLWhzdD0iMCIgICAgICAgICAgICAgICAgIGRhdGEtcHN0PSIwIlx0XHRcdFx0Plx0XHRcdDxsYWJlbD4nK3grIjwvbGFiZWw+XHRcdDwvZGl2Plx0PC9kaXY+IjtJPSdcdDxkaXYgaWQ9IicrRCsKJyIgY2xhc3M9InJpZ2h0LXNlY3Rpb24gcGF5bWVudENhbGN1bGF0b3JQYXltZW50V3JhcHBlckNvbnRhaW5lciIgJytiYSsnPlx0XHQ8ZGl2IGNsYXNzPSJsb3dlc3QtcmF0ZSI+JytZKyclIDxpIGNsYXNzPSJmYXMgZmEtaW5mby1jaXJjbGUgaW5mby1pY29uIHBheW1lbnRUb29sdGlwIHJpZ2h0VG9vbHRpcCIgJytiYSsiPjwvaT4iK1MrJzwvZGl2Plx0XHQ8ZGl2IGNsYXNzPSJhY3R1YWwtcGF5bWVudCI+PHNwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSI+JytJKyc8L3NwYW4+PC9kaXY+XHRcdDxkaXYgY2xhc3M9InJhZGlvLWNvbnRhaW5lciI+XHRcdFx0PGlucHV0XHRcdFx0XHRcdHR5cGU9InJhZGlvIlx0XHRcdFx0XHRuYW1lPSJzZWxlY3RlZFBheW1lbnRXaXRoVGF4ZXMiXHRcdFx0XHRcdHZhbHVlPSInK2gudGVybSsnIlx0XHRcdFx0XHRkYXRhLWJhc2VwYXltZW50PSInK2gucGF5bWVudCsnIlx0XHRcdFx0XHRkYXRhLXJlYWxwYXltZW50PSInK2gucGF5bWVudFdpdGhUYXhlcysKJyJcdFx0XHRcdFx0ZGF0YS1yYXRldHlwZT0iJytoLnJhdGVfdHlwZSsnIlx0XHRcdFx0XHRkYXRhLWRpc3BsYXllZHBheW1lbnQ9IicrSysnIlx0XHRcdFx0XHRkYXRhLXJlc2lkdWFsPSInK2gucmVzaWR1YWxXaXRoVGF4ZXMrJyJcdFx0XHRcdFx0ZGF0YS10b3RhbGludGVyZXN0PSInK2gudG90YWxJbnRlcmVzdFdpdGhUYXhlcysnIlx0XHRcdFx0XHRkYXRhLWx1eGVUYXhBbW91bnQ9IicraC5sdXhlVGF4QW1vdW50KyciXHRcdFx0XHRcdGRhdGEtZWZmZWN0aXZlUmF0ZT0iJytOKyciXHRcdFx0XHRcdGRhdGEtdG90YWxDb3N0PSInK1orJyJcdFx0XHRcdFx0ZGF0YS1yYXRlPSInK2gucmF0ZSsnIiAgICAgICAgICAgICAgICAgZGF0YS1yZXNpZHVhbD0iJytoLnJlc2lkdWFsVmFsdWVXaXRoVGF4ZXMrJyIgICAgICAgICAgICAgICAgIGRhdGEtdG90YWxpbmNlbnRpdmU9IicrY2ErJyIgICAgICAgICAgICAgICAgIGRhdGEtZ3N0PSInK2guZ3N0KyciICAgICAgICAgICAgICAgICBkYXRhLWhzdD0iJysKaC5oc3QrJyIgICAgICAgICAgICAgICAgIGRhdGEtcHN0PSInK2gucHN0KyciXHRcdFx0XHQ+XHRcdFx0PGxhYmVsPicreCsiPC9sYWJlbD5cdFx0PC9kaXY+XHQ8L2Rpdj4ifWg9JzxkaXYgY2xhc3M9ImZpbmFuY2luZy1vcHRpb24gcGF5bWVudENhbGN1bGF0b3JQYXltZW50V3JhcHBlciAnK1ErJyI+XHQ8ZGl2IGNsYXNzPSJ0ZXJtIj4nK0MrJzwvZGl2Plx0PGRpdiBjbGFzcz0iZG93bi1wYXltZW50Ij4nK0YrJzwvZGl2Plx0PGRpdiBjbGFzcz0ic2VwYXJhdG9yUGF5Ij48L2Rpdj5cdDxkaXYgY2xhc3M9ImNvbnRlbnQtY29udGFpbmVyIj5cdFx0PGRpdiBpZD0iJytkYSsnIiBjbGFzcz0iJytHKycgcGF5bWVudENhbGN1bGF0b3JQYXltZW50V3JhcHBlckNvbnRhaW5lciIgJytXKyc+XHRcdFx0PGRpdiBjbGFzcz0ibG93ZXN0LXBheW1lbnQiPjxzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiPicrSisnPC9zcGFuPiA8aSBjbGFzcz0iZmFzIGZhLWluZm8tY2lyY2xlIGluZm8taWNvbiBwYXltZW50VG9vbHRpcCBsZWZ0VG9vbHRpcCIgJysKVysnPjwvaT48L2Rpdj5cdFx0XHQ8ZGl2IGNsYXNzPSJkZXRhaWxzVGF4Ij4nK1UrJzwvZGl2Plx0XHRcdDxkaXYgY2xhc3M9ImFjdHVhbC1yYXRlIj4nK1QrIiUgIitQKyc8L2Rpdj5cdFx0XHQ8ZGl2IGNsYXNzPSJyYWRpby1jb250YWluZXIiPlx0XHRcdFx0PGlucHV0IFx0XHRcdFx0XHR0eXBlPSJyYWRpbyJcdFx0XHRcdFx0Jyt1KydcdFx0XHRcdFx0bmFtZT0ic2VsZWN0ZWRQYXltZW50Ilx0XHRcdFx0XHR2YWx1ZT0iJytsLnRlcm0rJyJcdFx0XHRcdFx0ZGF0YS1iYXNlcGF5bWVudD0iJytsLnBheW1lbnQrJyJcdFx0XHRcdFx0ZGF0YS1yZWFscGF5bWVudD0iJytsLnBheW1lbnQrJyJcdFx0XHRcdFx0ZGF0YS1yYXRldHlwZT0iJytsLnJhdGVfdHlwZSsnIlx0XHRcdFx0XHRkYXRhLWRpc3BsYXllZHBheW1lbnQ9IicrTCsnIlx0XHRcdFx0XHRkYXRhLXJlc2lkdWFsPSInK2wucmVzaWR1YWwrJyJcdFx0XHRcdFx0ZGF0YS10b3RhbGludGVyZXN0PSInK2wudG90YWxJbnRlcmVzdCsKJyJcdFx0XHRcdFx0ZGF0YS1sdXhlVGF4QW1vdW50PSInK2wubHV4ZVRheEFtb3VudCsnIlx0XHRcdFx0XHRkYXRhLWVmZmVjdGl2ZVJhdGU9IicrTSsnIlx0XHRcdFx0XHRkYXRhLXRvdGFsQ29zdD0iJytWKyciXHRcdFx0XHRcdGRhdGEtcmF0ZT0iJytsLnJhdGUrJyIgICAgICAgICAgICAgICAgIGRhdGEtcmVzaWR1YWw9IicrbC5yZXNpZHVhbFZhbHVlKyciICAgICAgICAgICAgICAgICBkYXRhLXRvdGFsaW5jZW50aXZlPSInK2VhKyciICAgICAgICAgICAgICAgICBkYXRhLWdzdD0iMCIgICAgICAgICAgICAgICAgIGRhdGEtaHN0PSIwIiAgICAgICAgICAgICAgICAgZGF0YS1wc3Q9IjAiXHRcdFx0XHQ+XHRcdFx0XHQ8bGFiZWw+JytBKyI8L2xhYmVsPlx0XHRcdDwvZGl2Plx0XHQ8L2Rpdj4iK0grIlx0PC9kaXY+PC9kaXY+IjtCPSc8ZGl2IGNsYXNzPSJmaW5hbmNpbmctb3B0aW9uIHBheW1lbnRDYWxjdWxhdG9yUGF5bWVudFdyYXBwZXIgJytRKyciPlx0PGRpdiBjbGFzcz0idGVybSI+JysKQysnPC9kaXY+XHQ8ZGl2IGNsYXNzPSJkb3duLXBheW1lbnQiPicrRisnPC9kaXY+XHQ8ZGl2IGNsYXNzPSJzZXBhcmF0b3JQYXkiPjwvZGl2Plx0PGRpdiBjbGFzcz0iY29udGVudC1jb250YWluZXIiPlx0XHQ8ZGl2IGlkPSInK2srJyIgY2xhc3M9IicrRysnIHBheW1lbnRDYWxjdWxhdG9yUGF5bWVudFdyYXBwZXJDb250YWluZXIiICcrWCsnPlx0XHRcdDxkaXYgY2xhc3M9Imxvd2VzdC1wYXltZW50Ij48c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIj4nK0IrJzwvc3Bhbj4gPGkgY2xhc3M9ImZhcyBmYS1pbmZvLWNpcmNsZSBpbmZvLWljb24gcGF5bWVudFRvb2x0aXAgbGVmdFRvb2x0aXAiICcrWCsnPjwvaT48L2Rpdj5cdFx0XHQ8ZGl2IGNsYXNzPSJhY3R1YWwtcmF0ZSI+JytUKyIlICIrUCsnPC9kaXY+XHRcdFx0PGRpdiBjbGFzcz0icmFkaW8tY29udGFpbmVyIj5cdFx0XHRcdDxpbnB1dCBcdFx0XHRcdFx0dHlwZT0icmFkaW8iXHRcdFx0XHRcdCcrdSsnXHRcdFx0XHRcdG5hbWU9InNlbGVjdGVkUGF5bWVudFdpdGhUYXhlcyJcdFx0XHRcdFx0dmFsdWU9IicrCmwudGVybSsnIlx0XHRcdFx0XHRkYXRhLWJhc2VwYXltZW50PSInK2wucGF5bWVudCsnIlx0XHRcdFx0XHRkYXRhLXJlYWxwYXltZW50PSInK2wucGF5bWVudFdpdGhUYXhlcysnIlx0XHRcdFx0XHRkYXRhLXJhdGV0eXBlPSInK2wucmF0ZV90eXBlKyciXHRcdFx0XHRcdGRhdGEtZGlzcGxheWVkcGF5bWVudD0iJytFKyciXHRcdFx0XHRcdGRhdGEtcmVzaWR1YWw9IicrbC5yZXNpZHVhbCsnIlx0XHRcdFx0XHRkYXRhLXRvdGFsaW50ZXJlc3Q9IicrbC50b3RhbEludGVyZXN0KyciXHRcdFx0XHRcdGRhdGEtbHV4ZVRheEFtb3VudD0iJytsLmx1eGVUYXhBbW91bnQrJyJcdFx0XHRcdFx0ZGF0YS1lZmZlY3RpdmVSYXRlPSInK00rJyJcdFx0XHRcdFx0ZGF0YS10b3RhbENvc3Q9IicrVisnIlx0XHRcdFx0XHRkYXRhLXJhdGU9IicrbC5yYXRlKyciICAgICAgICAgICAgICAgICBkYXRhLXJlc2lkdWFsPSInK2wucmVzaWR1YWxWYWx1ZVdpdGhUYXhlcysnIiAgICAgICAgICAgICAgICAgZGF0YS10b3RhbGluY2VudGl2ZT0iJysKdisnIiAgICAgICAgICAgICAgICAgZGF0YS1nc3Q9IicrbC5nc3QrJyIgICAgICAgICAgICAgICAgIGRhdGEtaHN0PSInK2wuaHN0KyciICAgICAgICAgICAgICAgICBkYXRhLXBzdD0iJytsLnBzdCsnIlx0XHRcdFx0Plx0XHRcdFx0PGxhYmVsPicrQSsiPC9sYWJlbD5cdFx0XHQ8L2Rpdj5cdFx0PC9kaXY+IitJKyJcdDwvZGl2PjwvZGl2PiI7MD09bC5wYXltZW50V2l0aFRheGVzJiYoQj0iIik7JCgiI3BheW1lbnRDYWxjdWxhdG9yUGF5bWVudENvbnRhaW5lciIpLmFwcGVuZChoKTskKCIjcGF5bWVudENhbGN1bGF0b3JQYXltZW50Q29udGFpbmVyV2l0aFRheGVzIikuYXBwZW5kKEIpO3orK319KTt0PSQoJyNwYXltZW50Q2FsY3VsYXRvckNvbnRhaW5lciBpbnB1dFtuYW1lPSJzZWxlY3RlZFBheW1lbnQiXVtjaGVja2VkXScpLmxlbmd0aD8kKCcjcGF5bWVudENhbGN1bGF0b3JDb250YWluZXIgaW5wdXRbbmFtZT0ic2VsZWN0ZWRQYXltZW50Il1bY2hlY2tlZF0nKVswXTokKCcjcGF5bWVudENhbGN1bGF0b3JDb250YWluZXIgaW5wdXRbbmFtZT0ic2VsZWN0ZWRQYXltZW50Il0nKS5sYXN0KClbMF07CiQodCkucHJvcCgiY2hlY2tlZCIsImNoZWNrZWQiKS50cmlnZ2VyKCJjaGFuZ2UiKTt0PXBheW1lbnRDYWxjdWxhdG9yRm9ybWF0TnVtYmVyKGFbMF0udG90YWwudG9GaXhlZCgwKSk7JCgiI3BheW1lbnRDYWxjdWxhdG9yTm90aWNlVG90YWwiKS50ZXh0KHQpOyJsZWFzZSI9PWFbMF0udHlwZT8odD1wYXltZW50Q2FsY3VsYXRvckZvcm1hdE51bWJlcihhWzBdLmttX2FsbG93YW5jZS50b0ZpeGVkKDApKSwkKCIjcGF5bWVudENhbGN1bGF0b3JOb3RpY2VLTSIpLnRleHQodCksJCgiLnBheW1lbnRDYWxjdWxhdG9yTm90aWNlQ2FzaCIpLnByb3AoImhpZGRlbiIsITApLCQoIiNwYXltZW50Q2FsY3VsYXRvck5vdGljZUxlYXNlIikuc2hvdygpLCQoIi5wYXltZW50Q2FsY3VsYXRvck5vdGljZUZpbmFuY2UiKS5oaWRlKCkpOigkKCIjcGF5bWVudENhbGN1bGF0b3JOb3RpY2VMZWFzZSIpLmhpZGUoKSwkKCIucGF5bWVudENhbGN1bGF0b3JOb3RpY2VDYXNoIikucHJvcCgiaGlkZGVuIiwhMCksCiQoIi5wYXltZW50Q2FsY3VsYXRvck5vdGljZUZpbmFuY2UiKS5zaG93KCkpOyQoIi5wYXltZW50Q2FsY3VsYXRvckNvbW1vbk5vdGljZSIpLnNob3coKTskKCIjcGF5bWVudENhbGN1bGF0b3JJbmNsdWRlVGF4Q2hlY2siKS5pcygiOmNoZWNrZWQiKT8oJCgiLnBheW1lbnRDYWxjdWxhdG9yVGF4ZUluY2x1ZGVkIikuc2hvdygpLCQoIi5wYXltZW50Q2FsY3VsYXRvclRheGVOb3RJbmNsdWRlZCIpLmhpZGUoKSk6KCQoIi5wYXltZW50Q2FsY3VsYXRvclRheGVJbmNsdWRlZCIpLmhpZGUoKSwkKCIucGF5bWVudENhbGN1bGF0b3JUYXhlTm90SW5jbHVkZWQiKS5zaG93KCkpOzA8Yz8oYz1wYXltZW50Q2FsY3VsYXRvckZvcm1hdE51bWJlcihjLnRvRml4ZWQoMCkpLCQoIiNwYXltZW50Q2FsY3VsYXRvck5vdGljZUZlZXMiKS50ZXh0KGMpLCQoIiNwYXltZW50Q2FsY3VsYXRvck5vdGljZUluY2x1ZGVkRmVlcyIpLnNob3coKSk6JCgiI3BheW1lbnRDYWxjdWxhdG9yTm90aWNlSW5jbHVkZWRGZWVzIikuaGlkZSgpOwokKCIjcGF5bWVudENhbGN1bGF0b3JDdXN0b21GZWVzICNwYXltZW50Q2FsY3VsYXRvckN1c3RvbUZlZXNMaXN0IikuZW1wdHkoKTtpZihkLmN1c3RvbUZlZXMubGVuZ3RoKXt2YXIgZj0iPHVsPiI7JC5lYWNoKGQuY3VzdG9tRmVlcyxmdW5jdGlvbihrLHUpe2s9JCgiYm9keSIpLmhhc0NsYXNzKCJFTkdMSVNIIik\/KG5ldyBUZXh0RGVjb2RlcikuZGVjb2RlKFVpbnQ4QXJyYXkuZnJvbShhdG9iKHUuZGVzY0VuKSxsPT5sLmNoYXJDb2RlQXQoMCkpKToobmV3IFRleHREZWNvZGVyKS5kZWNvZGUoVWludDhBcnJheS5mcm9tKGF0b2IodS5kZXNjRnIpLGw9PmwuY2hhckNvZGVBdCgwKSkpO3U9cGF5bWVudENhbGN1bGF0b3JGb3JtYXROdW1iZXIodS5hbW91bnQudG9GaXhlZCgwKSk7dT1EMkNVdGlscy5Gb3JtYXQudG9QcmljZSh1KTtmKz0iPGxpPiIraysiIDogIit1KyI8L2xpPiJ9KTtmKz0iPC91bD4iOyQoIiNwYXltZW50Q2FsY3VsYXRvckN1c3RvbUZlZXMgI3BheW1lbnRDYWxjdWxhdG9yQ3VzdG9tRmVlc0xpc3QiKS5hcHBlbmQoZik7CiQoIiNwYXltZW50Q2FsY3VsYXRvckN1c3RvbUZlZXMiKS5zaG93KCl9ZWxzZSAkKCIjcGF5bWVudENhbGN1bGF0b3JDdXN0b21GZWVzIikuaGlkZSgpO2M9ImxlYXNlIj09YVswXS50eXBlPygkKCIjcGF5bWVudENhbGN1bGF0b3JMZWFzZVRleHQiKS52YWwoKXx8IiIpLnRvTG93ZXJDYXNlKCk6KCQoIiNwYXltZW50Q2FsY3VsYXRvckZpbmFuY2VUZXh0IikudmFsKCl8fCIiKS50b0xvd2VyQ2FzZSgpOyQoIiNwYXltZW50Q2FsY3VsYXRvck5vdGljZVR5cGUiKS50ZXh0KGMpOzA8YVswXS5yZWJhdGU\/KGE9JCgiYm9keSIpLmhhc0NsYXNzKCJFTkdMSVNIIik\/IiQiK2FbMF0ucmViYXRlOmFbMF0ucmViYXRlKyIgJCIsJCgiI3BheW1lbnRDYWxjdWxhdG9yTm90aWNlUmViYXRlIikudGV4dChhKSwkKCIjcGF5bWVudENhbGN1bGF0b3JOb3RpY2VJbmNsdWRlZFJlYmF0ZXMiKS5zaG93KCkpOiQoIiNwYXltZW50Q2FsY3VsYXRvck5vdGljZUluY2x1ZGVkUmViYXRlcyIpLmhpZGUoKTtpZihkLmNvbmRpdGlvbmFsUmViYXRlcyYmCjA8ZC5jb25kaXRpb25hbFJlYmF0ZXMubGVuZ3RoKXt2YXIgcT0iIjtkLmNvbmRpdGlvbmFsUmViYXRlcy5mb3JFYWNoKGZ1bmN0aW9uKGspe3ZhciB1PXBheW1lbnRDYWxjdWxhdG9yRm9ybWF0TnVtYmVyKGsuYW1vdW50LnRvU3RyaW5nKCkpO3ErPSI8bGk+IitrLm5hbWUrIjogLSIrRDJDVXRpbHMuRm9ybWF0LnRvUHJpY2UodSkrIjwvbGk+In0pO3EmJiQoIiNwYXltZW50Q2FsY3VsYXRvck5vdGljZUluY2x1ZGVkUmViYXRlcyIpLmFmdGVyKCc8ZGl2IGlkPSJwYXltZW50Q2FsY3VsYXRvck5vdGljZUNvbmRpdGlvbmFsUmViYXRlcyIgY2xhc3M9InBheW1lbnRDYWxjdWxhdG9yTm90aWNlU2VjdGlvbiI+PHN0cm9uZz4nKygkKCJib2R5IikuaGFzQ2xhc3MoIkVOR0xJU0giKT8iU2VsZWN0ZWQgQ29uZGl0aW9uYWwgUmViYXRlczoiOiJSYWJhaXMgY29uZGl0aW9ubmVscyBzw4PCqWxlY3Rpb25uw4PCqXM6IikrIjwvc3Ryb25nPjx1bD4iK3ErIjwvdWw+PC9kaXY+Iil9ZWxzZSAkKCIjcGF5bWVudENhbGN1bGF0b3JOb3RpY2VDb25kaXRpb25hbFJlYmF0ZXMiKS5yZW1vdmUoKTsKc2V0UGF5bWVudENhbGN1bGF0b3JQb3B1cFRvb2x0aXAoKX0KZnVuY3Rpb24gc2V0UGF5bWVudENhbGN1bGF0b3JQb3B1cFRvb2x0aXAoKXtpZigiMSI9PSQoIiNpc21vYmlsZSIpLnZhbCgpKSQoIiNwYXltZW50Q2FsY3VsYXRvckNvbnRhaW5lciAucGF5bWVudENhbGN1bGF0b3JQYXltZW50V3JhcHBlciAucGF5bWVudENhbGN1bGF0b3JQYXltZW50V3JhcHBlckNvbnRhaW5lciAucGF5bWVudFRvb2x0aXAiKS5lYWNoKGZ1bmN0aW9uKGMpe3RyeXt2YXIgZT0kKHRoaXMpLmF0dHIoImRhdGEtdG9vbHRpcCIpLGQ9JCh0aGlzKS5oYXNDbGFzcygibGVmdFRvb2x0aXAiKT8id2VzdCI6ImVhc3QiOyQodGhpcykuZGFya1Rvb2x0aXAoe2NvbnRlbnQ6ZSxncmF2aXR5OmQsdGhlbWU6ImxpZ2h0Iix0cmlnZ2VyOiJjbGljayIsYW5pbWF0aW9uOiJmbGlwSW4ifSl9Y2F0Y2goYil7fX0pO2Vsc2V7Zm9yKHZhciBhPTA7NT5hO2ErKykkKCIjZGFya3Rvb2x0aXAtcGF5bWVudCIrYSkubGVuZ3RoJiYoJCgiI2Rhcmt0b29sdGlwLXBheW1lbnQiK2EpLnJlbW92ZSgpLAokKCIjZGFya3Rvb2x0aXAtcGF5bWVudCIrYSsid2l0aFRheGVzIikucmVtb3ZlKCkpOyQoIiNwYXltZW50Q2FsY3VsYXRvckNvbnRhaW5lciAucGF5bWVudENhbGN1bGF0b3JQYXltZW50V3JhcHBlciAucGF5bWVudENhbGN1bGF0b3JQYXltZW50V3JhcHBlckNvbnRhaW5lciIpLmVhY2goZnVuY3Rpb24oKXt0cnl7dmFyIGM9JCh0aGlzKS5hdHRyKCJkYXRhLXRvb2x0aXAiKSxlPSQodGhpcykuZmluZCgiLnBheW1lbnRUb29sdGlwIiksZD0iZWFzdCI7ZS5oYXNDbGFzcygibGVmdFRvb2x0aXAiKT9kPSJ3ZXN0IjplLmhhc0NsYXNzKCJyaWdodFRvb2x0aXAiKSYmKGQ9ImVhc3QiKTskKHRoaXMpLmRhcmtUb29sdGlwKHtjb250ZW50OmMsZ3Jhdml0eTpkLHRoZW1lOiJsaWdodCIsdHJpZ2dlcjoiaG92ZXIifSl9Y2F0Y2goYil7fX0pfX0KZnVuY3Rpb24gc2V0UGF5bWVudENhbGN1bGF0b3JWZWhpY2xlSW5mbyhhKXt2YXIgYz1nZXRQb3BDb250YWluU2V0dGluZ3MoKTtjLnZlaGljbGVJbmZvPWE7JCgiI3BheW1lbnRDYWxjdWxhdG9yVmVoaWNsZUluZm9ZZWFyIikudGV4dChhLnllYXIpO3ZhciBlPWEuQ0ZNb2RlbE5hbWV8fGEubW9kZWwsZD1hLm1ha2UudG9VcHBlckNhc2UoKSsiICIrZS50b1VwcGVyQ2FzZSgpOyJNRVJDRURFUy1CRU5aIiE9YS5tYWtlLnRvVXBwZXJDYXNlKCl8fC9cYnNwcmludGVyXGIvaS50ZXN0KGUpfHwoZD1hLm1ha2UudG9VcHBlckNhc2UoKSk7aWYoImJ1aWxkYW5kcHJpY2UuaHRtbCI9PSQoIiNQQUdFSUQiKS52YWwoKXx8Yy5oYXNPd25Qcm9wZXJ0eSgibm9UcmltU2VsZWN0IikmJiJ0cnVlIj09Yy5ub1RyaW1TZWxlY3R8fCJ1c2VkY2Fycy5odG1sIj09JCgiI1BBR0VJRCIpLnZhbCgpfHwiY2FyZGV0YWlsLmh0bWwiPT0kKCIjUEFHRUlEIikudmFsKCkpZCs9IiAiK2EuQ0ZTdHlsZU5hbWUudG9VcHBlckNhc2UoKSwKJCgiI3BheW1lbnRDYWxjdWxhdG9yVHJpbVNlbGVjdCIpLmhpZGUoKTskKCIjcGF5bWVudENhbGN1bGF0b3JWZWhpY2xlSW5mb01ha2VNb2RlbFRyaW0iKS50ZXh0KGQpO2U9YS5tYWtlKyJ8fHwiK2UrInx8fCIrYS55ZWFyO2MuaGFzT3duUHJvcGVydHkoInN0b2NrTnVtYmVyIikmJihlKz0ifHx8KFN0b2NrOiIrYy5zdG9ja051bWJlcisiKSIpO0Nvb2tpZXMuc2V0KCJsYXN0dmlld2VkdmVoaWNsZSIsZSxudWxsLCIvIik7YS5pbWFnZXNbMF0mJihlPShhLmltYWdlc1swXSsiIikucmVwbGFjZSgvaHR0cChzPyk6XC9cL21lZGlhLihjaHJvbWVkYXRhfGNhcmJvb2spLmNvbVwvTWVkaWFHYWxsZXJ5XC9tZWRpYVwvLywiLy9jYXJpbWFnZXMuZDJjbWVkaWEuY2EvbmV3Y2Fycy9jYiVDQi8lTUFLRS8lTU9ERUwvJVlFQVIvIikucmVwbGFjZSgiJUNCIixNYXRoLnJvdW5kKDk5Kk1hdGgucmFuZG9tKCkpKzFFNSkucmVwbGFjZSgiJU1BS0UiLGEubWFrZS5yZXBsYWNlKCItIiwiXyIpKS5yZXBsYWNlKCIlTU9ERUwiLAphLm1vZGVsLnJlcGxhY2UoIi0iLCJfIikpLnJlcGxhY2UoIiVZRUFSIixhLnllYXIpLCQoIiNwYXltZW50Q2FsY3VsYXRvclZlaGljbGVJbWFnZURpdiIpLmh0bWwoJzxpbWcgaWQ9InBheW1lbnRDYWxjdWxhdG9yVmVoaWNsZUltYWdlIiBzcmM9IicrZS5yZXBsYWNlKC8mL2csIiZhbXA7IikucmVwbGFjZSgvPC9nLCImbHQ7IikucmVwbGFjZSgvPi9nLCImZ3Q7IikucmVwbGFjZSgvIi9nLCImcXVvdDsiKS5yZXBsYWNlKC8nL2csIiYjMDM5OyIpKyciIGNsYXNzPSJwYXltZW50Q2FsY3VsYXRvclZlaGljbGVJbWFnZSI+JykpOyQoIiNwYXltZW50Q2FsY3VsYXRvclRyaW1TZWxlY3Qgb3B0aW9uIikucmVtb3ZlKCk7KCJ1bmRlZmluZWQiIT10eXBlb2YgbmV3Y2FyRGV0YWlscz9uZXdjYXJEZXRhaWxzLmFsbFN0eWxlczphLm1vZGVsSlNPTi5zdHlsZXMpLmZvckVhY2goZnVuY3Rpb24oYil7JCgiI3BheW1lbnRDYWxjdWxhdG9yVHJpbVNlbGVjdCIpLmFwcGVuZChuZXcgT3B0aW9uKGIuQ0ZTdHlsZU5hbWUsCmIuaWQpKX0pOyQoIiNwYXltZW50Q2FsY3VsYXRvclRyaW1TZWxlY3QiKS52YWwoYy5zdHlsZWlkKTtjYWxjVXBkYXRlUGF5bWVudEluZm8oKX0KZnVuY3Rpb24gY2FsY1VwZGF0ZVN0eWxlSW5mbyhhKXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIG5ld2NhckRldGFpbHMmJm5ld2NhckRldGFpbHMuYWN0aXZlTW9kZWwpe3ZhciBjPW5ld2NhckRldGFpbHMuYWxsU3R5bGVzLmZpbHRlcihmdW5jdGlvbihkKXtyZXR1cm4gZC5pZD09YX0pWzBdO2M9Y3x8bmV3Y2FyRGV0YWlscy5hY3RpdmVNb2RlbC5zdHlsZXNbMF07Yy5tYWtlPW5ld2NhckRldGFpbHMuYWN0aXZlTW9kZWwubWFrZTtjLm1vZGVsPW5ld2NhckRldGFpbHMuYWN0aXZlTW9kZWwubW9kZWw7Yy5pbWFnZXM9bmV3Y2FyRGV0YWlscy5hY3RpdmVNb2RlbC5pbWFnZXM7c2V0UGF5bWVudENhbGN1bGF0b3JWZWhpY2xlSW5mbyhjKX1lbHNle2M9c2V0dGluZ3MuaGFzT3duUHJvcGVydHkoInN0b2NrTnVtYmVyIik\/c2V0dGluZ3Muc3RvY2tOdW1iZXI6IiI7dmFyIGU9KCQoImJvZHkiKS5oYXNDbGFzcygiRU5HTElTSCIpPyIvZW4iOiIvZnIiKSsiL2FqYXgvZ2V0VmVoaWNsZUpzb25CeVN0eWxlSUQ\/d3N3aWR0aD0wIjsKJC5hamF4KHt1cmw6ZSx0eXBlOiJQT1NUIixkYXRhVHlwZToiSlNPTiIsZGF0YTp7c3R5bGVpZDphLHZlaGljbGVpZDpjfSxzdWNjZXNzOmZ1bmN0aW9uKGQpe3NldFBheW1lbnRDYWxjdWxhdG9yVmVoaWNsZUluZm8oZCl9fSl9fQpmdW5jdGlvbiBwYXltZW50Q2FsY3VsYXRvclBvcHVwSW5pdCgpe3ZhciBhPWdldFBvcENvbnRhaW5TZXR0aW5ncygpOyQoIiNwYXltZW50Q2FsY3VsYXRvclBheW1lbnRUeXBlIGxpIikucmVtb3ZlQ2xhc3MoImFjdGl2ZVBheW1lbnRUeXBlIik7JCgiI3BheW1lbnRDYWxjdWxhdG9ySXNOZXdQb3B1cEVuYWJsZWQiKS52YWwoKTsiIiE9YS5wcm9tb0J1dHRvblRleHQmJiIxIiE9PUNvb2tpZXMuZ2V0KCJwb3B1cEZvcm1GaWxsZWQiKSYmJCgiI3BheW1lbnRDYWxjdWxhdG9ySXNOZXdQb3B1cEVuYWJsZWQiKS52YWwoKT8oLTEhPT1hLnByb21vQnV0dG9uVGV4dC5pbmRleE9mKCI8YnIiKSYmKGEucHJvbW9CdXR0b25UZXh0PWEucHJvbW9CdXR0b25UZXh0LnN1YnN0cigwLGEucHJvbW9CdXR0b25UZXh0LmluZGV4T2YoIjxiciIpKSksJCgiI3BheW1lbnRDYWxjdWxhdG9yQ2FsbFRvQWN0aW9uQ29udGFpbmVyIGEiKS5odG1sKGEucHJvbW9CdXR0b25UZXh0KSwkKCIjcGF5bWVudENhbGN1bGF0b3JDYWxsVG9BY3Rpb25Db250YWluZXIiKS5zaG93KCkpOgokKCIjcGF5bWVudENhbGN1bGF0b3JDYWxsVG9BY3Rpb25Db250YWluZXIiKS5oaWRlKCk7bGV0IGM9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI3BheW1lbnRDYWxjdWxhdG9yUGF5bWVudFR5cGUgbGlbZGF0YS10eXBlPSJsZWFzaW5nIl0nKSxlPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNwYXltZW50Q2FsY3VsYXRvclBheW1lbnRUeXBlIGxpW2RhdGEtdHlwZT0iZmluYW5jaW5nIl0nKSxkPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNwYXltZW50Q2FsY3VsYXRvclBheW1lbnRUeXBlIGxpW2RhdGEtdHlwZT0iY2FzaCJdJyk7Yy5oaWRkZW49IjEiPT0oYS5ub01vdG9pbnNpZ2h0TGVhc2VQYXltZW50c3x8ITEpO2UuaGlkZGVuPSIxIj09KGEubm9Nb3RvaW5zaWdodEZpbmFuY2VQYXltZW50c3x8ITEpO2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNwYXltZW50Q2FsY3VsYXRvckNvbnRhaW5lciAuY2FsYy1wYXltZW50LWNhc2giKS5oaWRkZW49ITA7c2V0VGltZW91dCgoKT0+e2lmKF9sb2NhbFN0b3JhZ2VHZXQoInRyYWRlaW5fc3VibWl0X2RhdGEiKSYmCiIiPT0kKCIjcGF5bWVudFRyYWRlSW5WYWx1ZSIpLnZhbCgpKXt2YXIgYj1KU09OLnBhcnNlKF9sb2NhbFN0b3JhZ2VHZXQoInRyYWRlaW5fc3VibWl0X2RhdGEiKSk7JCgiI3BheW1lbnRUcmFkZUluVmFsdWUiKS52YWwoYi52YWx1ZSk7X2xvY2FsU3RvcmFnZUdldCgidHJhZGVpbl9jdXJyZW50X3ZhbHVlIikmJihiPUpTT04ucGFyc2UoX2xvY2FsU3RvcmFnZUdldCgidHJhZGVpbl9jdXJyZW50X3ZhbHVlIikpLCQoIiNwYXltZW50VHJhZGVJblZhbHVlIikuYXR0cigiZGF0YS1jdXJyZW50IixiLnZhbHVlKSl9aWYoIiIhPSQoIiNwYXltZW50VHJhZGVJblZhbHVlIikudmFsKCkmJjA8JCgiI3BheW1lbnRUcmFkZUluVmFsdWUiKS52YWwoKSl7Yj1wYXJzZUludCgkKCIjcGF5bWVudFRyYWRlSW5WYWx1ZSIpLnZhbCgpKXx8MDt2YXIgZz1wYXJzZUludCgkKCIjcGF5bWVudFRyYWRlSW5WYWx1ZSIpLmF0dHIoImRhdGEtY3VycmVudCIpKXx8YjskKCIucGF5bWVudENhbGN1bGF0b3JUcmFkZUluVmFsdWUiKS52YWwoZyk7CiQoIi5wYXltZW50Q2FsY3VsYXRvclRyYWRlSW5WYWx1ZSIpLmF0dHIoIm1heCIsYik7JCgiLnBheW1lbnRDYWxjdWxhdG9yVHJhZGVJbkJ1dHRvbiIpLmhpZGUoKTskKCIucGF5bWVudENhbGN1bGF0b3JUcmFkZUluVmFsdWUiKS5zaG93KCl9ZWxzZSAkKCIucGF5bWVudENhbGN1bGF0b3JUcmFkZUluVmFsdWUiKS52YWwoIiIpLCQoIi5wYXltZW50Q2FsY3VsYXRvclRyYWRlSW5CdXR0b24iKS5zaG93KCksJCgiLnBheW1lbnRDYWxjdWxhdG9yVHJhZGVJblZhbHVlIikuaGlkZSgpOyQoIi5wYXltZW50Q2FsY3VsYXRvclRyYWRlSW5WYWx1ZSIpLnRyaWdnZXIoImJsdXIiKTtpZigidW5kZWZpbmVkIiE9dHlwZW9mIEN0YVRyYWNrJiZDdGFUcmFjay5nZXRUcmFja1N0ZXAoIlBheW1lbnRDYWxjdWxhdG9yQWN0aW9uQm94Iikpe2xldCByPW5ldyBDdXN0b21FdmVudCgidHJhY2tzdGVwLmNvbXBsZXRlIix7ZGV0YWlsOntzdGVwSWQ6IlBheW1lbnRDYWxjdWxhdG9yQWN0aW9uQm94Iixmb3JjZVVwZGF0ZTohMCwKb25Db21wbGV0ZTpuPT57bi5kYXRhc2V0LmNvbXBsX3R4dF9mcj1uLmRhdGFzZXQuaW5pdF9jb21wbF90eHRfZnIucmVwbGFjZSgieyRQQVlNRU5UUkFURX0iLGN0YVBheW1lbnRUZXh0RnJbMF0pLnJlcGxhY2UoInskUEFZTUVOVFlQRX0iLGN0YVBheW1lbnRUZXh0RnJbMV0pO24uZGF0YXNldC5jb21wbF90eHRfZW49bi5kYXRhc2V0LmluaXRfY29tcGxfdHh0X2VuLnJlcGxhY2UoInskUEFZTUVOVFJBVEV9IixjdGFQYXltZW50VGV4dEVuWzBdKS5yZXBsYWNlKCJ7JFBBWU1FTlRZUEV9IixjdGFQYXltZW50VGV4dEVuWzFdKTtuPXtwYXltZW50Ont9fTtfbG9jYWxTdG9yYWdlR2V0KCJyZXRhaWxfdHJhY2tfZGF0YSIpJiYobj1KU09OLnBhcnNlKF9sb2NhbFN0b3JhZ2VHZXQoInJldGFpbF90cmFja19kYXRhIikpKTtsZXQgcD0iRlJFTkNIIj09PSQoIiNhY3RpdmVzaXRlbGFuZ3VhZ2UiKS52YWwoKT9jdGFQYXltZW50VGV4dEZyOmN0YVBheW1lbnRUZXh0RW47bi5wYXltZW50PXtsaXN0UHJpY2U6cFsyXXx8CiIiLHBheW1lbnQ6cFswXXx8IiIscmF0ZTpwWzFdfHwiIixwYXltZW50VmFsdWU6Y3RhUGF5bWVudFZhbHVlc3x8W119O19sb2NhbFN0b3JhZ2VTZXQoInJldGFpbF90cmFja19kYXRhIixKU09OLnN0cmluZ2lmeShuKSwzMCk7Q29va2llcy5zZXQoImN0YV9kYXRhX3ZhbGlkIiwxLDEsIi8iKX19fSk7Yj1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjcGF5bWVudENhbGN1bGF0b3JDYWxsVG9BY3Rpb25Db250YWluZXIgYSIpO2IuaW5uZXJUZXh0PSJFTkdMSVNIIj09JCgiI2FjdGl2ZXNpdGVsYW5ndWFnZSIpLnZhbCgpPyJDb25maXJtIjoiQ29uZmlybWVyIjtiLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIixuPT57bi5wcmV2ZW50RGVmYXVsdCgpO249ImNhc2giPT09JCgiI3BheW1lbnRDYWxjdWxhdG9yUGF5bWVudFR5cGUgLmFjdGl2ZVBheW1lbnRUeXBlIikuYXR0cigiZGF0YS10eXBlIik7JCgiI3BheW1lbnRDYWxjdWxhdG9yUGF5bWVudENvbnRhaW5lciIpLmlzKCI6aGlkZGVuIikmJgohbnx8ZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChyKTskKCIjcGF5bWVudENhbGN1bGF0b3JQb3B1cENvbnRhaW5lciIpLnBvcHVwaXplKCkuY2xvc2UoKX0pO2c9bj0+e249ImNhc2giPT09JCgiI3BheW1lbnRDYWxjdWxhdG9yUGF5bWVudFR5cGUgLmFjdGl2ZVBheW1lbnRUeXBlIikuYXR0cigiZGF0YS10eXBlIik7JCgiI3BheW1lbnRDYWxjdWxhdG9yUGF5bWVudENvbnRhaW5lciIpLmlzKCI6aGlkZGVuIikmJiFufHxkb2N1bWVudC5kaXNwYXRjaEV2ZW50KHIpfTtsZXQgbT1hLnBheW1lbnRUeXBlO0Nvb2tpZXMuZ2V0KCJwYXltZW50Q2FsY3VsYXRvclNlbGVjdGVkT3B0aW9ucyIpJiYoYj1Db29raWVzLmdldCgicGF5bWVudENhbGN1bGF0b3JTZWxlY3RlZE9wdGlvbnMiKS5zcGxpdCgiLSIpLG09InVuZGVmaW5lZCIhPWJbMF0\/YlswXTptLG09ImxlYXNpbmciPT09bT8ibGVhc2UiOiJmaW5hbmNpbmciPT09bT8iZmluYW5jZSI6bSk7ImxlYXNlIj09bSYmYz9jLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJjbGljayIsCntkZXRhaWw6e2lzRmlyc3RSdW46ITB9fSkpOiJmaW5hbmNlIj09bSYmZT9lLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJjbGljayIse2RldGFpbDp7aXNGaXJzdFJ1bjohMH19KSk6ZC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgiY2xpY2siLHtkZXRhaWw6e2lzRmlyc3RSdW46ITB9fSkpOyQoIi5yZXZlYWwtbW9kYWwiKS5vZmYoInBvcHVwaXplci5jbG9zZSIsZykub24oInBvcHVwaXplci5jbG9zZSIsZyk7JCgiI3BheW1lbnRDYWxjdWxhdG9yQ2FsbFRvQWN0aW9uQ29udGFpbmVyIikuc2hvdygpfX0sMTAwKTtjYWxjVXBkYXRlU3R5bGVJbmZvKGEuc3R5bGVpZCl9CmZ1bmN0aW9uIGNhbGNVcGRhdGVQYXltZW50SW5mbygpe3ZhciBhPWdldFBvcENvbnRhaW5TZXR0aW5ncygpLGM9KCQoImJvZHkiKS5oYXNDbGFzcygiRU5HTElTSCIpPyIvZW4iOiIvZnIiKSsiL2FqYXgvZ2V0UGF5bWVudERhdGFGb3JTdHlsZUlEP3dzd2lkdGg9MCIsZT1hLnBheW1lbnRUeXBlLGQ9MCxiPXBhcnNlSW50KCQoIi5wYXltZW50Q2FsY3VsYXRvclRyYWRlSW5WYWx1ZSIpLnZhbCgpfHwwKSxnPW51bGwscj1udWxsLG09Z2V0T3B0aW9uc0Ftb3VudChhKSxuPWdldEFjY2Vzc29yaWVzQW1vdW50KGEpLHA9Z2V0U2VsZWN0ZWRBY2Nlc3NvcmllcyhhKSx3PWdldFByb3RlY3Rpb25QbGFuc0Ftb3VudChhKSx5PWEuaGFzT3duUHJvcGVydHkoIm5vVHJpbVNlbGVjdCIpJiYidHJ1ZSI9PWEubm9UcmltU2VsZWN0fHwidXNlZGNhcnMuaHRtbCI9PSQoIiNQQUdFSUQiKS52YWwoKXx8ImNhcmRldGFpbC5odG1sIj09JCgiI1BBR0VJRCIpLnZhbCgpLAp0PSExLHY9YS5oYXNPd25Qcm9wZXJ0eSgic3RvY2tOdW1iZXIiKT9hLnN0b2NrTnVtYmVyOiIiLEE9YS5oYXNPd25Qcm9wZXJ0eSgidmluIik\/YS52aW46IiI7aWYoeSYmIXYpe3ZhciB4PWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwaG9uZXN0b2NrbnVtYmVyIik7eCYmKHY9eC52YWx1ZXx8IiIpfXkmJiFBJiYoeD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicGhvbmV2aW4iKSkmJihBPXgudmFsdWV8fCIiKTt5JiYhYS5zdHlsZWlkJiYoeD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYWN0aXZlU3R5bGVJRCIpKSYmKGEuc3R5bGVpZD14LnZhbHVlfHxhLnN0eWxlaWQpO0Nvb2tpZXMuZ2V0KCJwYXltZW50Q2FsY3VsYXRvclNlbGVjdGVkT3B0aW9ucyIpJiYocj1Db29raWVzLmdldCgicGF5bWVudENhbGN1bGF0b3JTZWxlY3RlZE9wdGlvbnMiKS5zcGxpdCgiLSIpLGU9InVuZGVmaW5lZCIhPXJbMF0\/clswXTplLHQ9clsxXSxkPXBhcnNlSW50KHJbNF0pLWIsZD0wPmQ\/MDpkLGc9CnJbMl0scj1yWzNdKTthLm5vTW90b2luc2lnaHRMZWFzZVBheW1lbnRzJiYibGVhc2UiPT1lJiYoZT0iZmluYW5jZSIsdD0hMSxkPTAscj1nPW51bGwpO2Eubm9Nb3RvaW5zaWdodEZpbmFuY2VQYXltZW50cyYmWyJmaW5hbmNlIiwiZmluYW5jaW5nIl0uaW5jbHVkZXMoZSkmJihlPSJsZWFzZSIsdD0hMSxkPTAscj1nPW51bGwpO2xldCB6PVtdO2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIi5jb25kaXRpb25hbC1yZWJhdGUtY2hlY2tib3giKS5mb3JFYWNoKGZ1bmN0aW9uKGYpe2YuY2hlY2tlZCYmKGY9Zi5nZXRBdHRyaWJ1dGUoImRhdGEtY29uZGl0aW9uYWwtcmViYXRlLWlkIikpJiZ6LnB1c2goZil9KTtjYWxjVXBkYXRlUGF5bWVudFhocj0kLmFqYXgoe3VybDpjLHR5cGU6IlBPU1QiLGRhdGFUeXBlOiJKU09OIixkYXRhOntzdHlsZWlkOmEuc3R5bGVpZCxwYXltZW50VHlwZTplLGRvd25wYXltZW50OmIrZCxvcHRpb25zQW1vdW50Om0scGF5bWVudEZyZXF1ZW5jeTpnLGttQWxsb3dhbmNlOnIsCmlzSW52ZW50b3J5Onksb3B0aW9uczptLHNuOnYsdmluOkEsY29uZGl0aW9uYWxSZWJhdGVJZHM6ei5qb2luKCIsIiksYWNjZXNzb3JpZXM6bixzZWxlY3RlZEFjY2Vzc29yaWVzOnAscHJvdGVjdGlvblBsYW5zOnd9LHN1Y2Nlc3M6ZnVuY3Rpb24oZil7Zi5zZWxlY3RlZFRlcm09dDskKCIjbWF4RG93blBheW1lbnRGb3JUcmltIikudmFsKGYubWF4RG93bik7JCgiI21heERvd25QYXltZW50RmluYW5jZUZvclRyaW0iKS52YWwoZi5tYXhEb3duRmluYW5jZSk7JCgiI3BheW1lbnRDYWxjdWxhdG9yS21BbGxvd2FuY2Ugb3B0aW9uIikucmVtb3ZlKCk7JCgiI3BheW1lbnRDYWxjdWxhdG9yRG93blBheW1lbnQiKS52YWwoZCk7ZT0ibGVhc2UiPT09ZT8ibGVhc2luZyI6ImZpbmFuY2UiPT09ZT8iZmluYW5jaW5nIjplOyJjYXNoIj09PWUmJigkKCIjcGF5bWVudENhbGN1bGF0b3JQYXltZW50Q29udGFpbmVyIikuaGlkZSgpLCQoIiNwYXltZW50Q2FsY3VsYXRvclBheW1lbnRDb250YWluZXJXaXRoVGF4ZXMiKS5oaWRlKCkpOwpmLmN1cnJlbnRQYXltZW50JiYwIT09Zi5jdXJyZW50UGF5bWVudC5sZW5ndGh8fCJjYXNoIj09PWU\/KCQoIiNwYXltZW50Q2FsY3VsYXRvckVycm9yTWVzc2FnZSIpLmhpZGUoKSwkKCIjcGF5bWVudENhbGN1bGF0b3JEb3duUGF5bWVudEVycm9yTWVzc2FnZSIpLmhpZGUoKSwkKCIjcGF5bWVudENhbGN1bGF0b3JEb3duUGF5bWVudEVycm9yTWVzc2FnZUZpbmFuY2UiKS5oaWRlKCksJCgiI3BheW1lbnRDYWxjdWxhdG9yRG93blBheW1lbnRFcnJvck1lc3NhZ2VMZWFzZSIpLmhpZGUoKSwkKCIjcGF5bWVudENhbGN1bGF0b3JPcHRpb25Db250YWluZXIiKS5zaG93KCksJCgiI3BheW1lbnRDYWxjdWxhdG9yTm90aWNlQ29udGFpbmVyIikucHJvcCgiaGlkZGVuIiwhMSksZi5jdXJyZW50UGF5bWVudCYmMDxmLmN1cnJlbnRQYXltZW50Lmxlbmd0aCYmKCQoIiNwYXltZW50Q2FsY3VsYXRvckludGVydmFsIikudmFsKGYuY3VycmVudFBheW1lbnRbMF0uaW50ZXJ2YWwpLGU9ZXx8KCJsZWFzZSI9PT0KZi5jdXJyZW50UGF5bWVudFswXS50eXBlPyJsZWFzaW5nIjoiZmluYW5jaW5nIikpKTooJCgiI3BheW1lbnRDYWxjdWxhdG9yT3B0aW9uQ29udGFpbmVyIikuaGlkZSgpLCQoIiNwYXltZW50Q2FsY3VsYXRvclBheW1lbnRDb250YWluZXIiKS5oaWRlKCksJCgiI3BheW1lbnRDYWxjdWxhdG9yUGF5bWVudENvbnRhaW5lcldpdGhUYXhlcyIpLmhpZGUoKSwkKCIjcGF5bWVudENhbGN1bGF0b3JOb3RpY2VDb250YWluZXIiKS5wcm9wKCJoaWRkZW4iLCEwKSwkKCIjcGF5bWVudENhbGN1bGF0b3JFcnJvck1lc3NhZ2UiKS5zaG93KCkpO3Nob3dIaWRlUGF5bWVudFNlY3Rpb24oZixlKTtwb3B1bGF0ZUxlYXNlS01BbGxvd2FuY2VEcm9wZG93bihmKTsibGVhc2luZyI9PWU\/JCgiLnBheW1lbnRDYWxjdWxhdG9yS21BbGxvd2FuY2VDb250YWluZXIiKS5zaG93KCk6JCgiLnBheW1lbnRDYWxjdWxhdG9yS21BbGxvd2FuY2VDb250YWluZXIiKS5oaWRlKCk7Z2V0Q2FzaFByaWNlQmxvY2soZik7CiJjYXNoIj09PWU\/ZW5hYmxlQ2FzaE9wdGlvbigpOmYuY3VycmVudFBheW1lbnQmJmYuY3VycmVudFBheW1lbnQubGVuZ3RoJiYoY2FsY0N1clBheW1lbnQ9ZixzaG93UGF5bWVudHMoZi5jdXJyZW50UGF5bWVudCxmLnBheW1lbnRGZWVzLGYubWFrZWlkLGYpKX0sZXJyb3I6ZnVuY3Rpb24oZixxLGspeyJhYm9ydCIhPT1xJiZjb25zb2xlLmVycm9yKCJjYWxjVXBkYXRlUGF5bWVudEluZm86OiBQYXltZW50IGNhbGN1bGF0aW9uIGVycm9yOiIscSxrKX19KX0KZnVuY3Rpb24gZW5hYmxlQ2FzaE9wdGlvbigpeyQoIiNwYXltZW50Q2FsY3VsYXRvclBheW1lbnRUeXBlIGxpIikucmVtb3ZlQ2xhc3MoImFjdGl2ZVBheW1lbnRUeXBlIik7JCgiI3BheW1lbnRDYWxjdWxhdG9yUGF5bWVudFR5cGUgbGlbZGF0YS10eXBlPSdjYXNoJ10iKS5hZGRDbGFzcygiYWN0aXZlUGF5bWVudFR5cGUiKTskKCIucGF5bWVudENhbGN1bGF0b3JJbnB1dENvbnRhaW5lciIpLmhpZGUoKTskKCIjcGF5bWVudENhbGN1bGF0b3JQYXltZW50Q29udGFpbmVyIikuaGlkZSgpOyQoIiNwYXltZW50Q2FsY3VsYXRvclBheW1lbnRDb250YWluZXJXaXRoVGF4ZXMiKS5oaWRlKCk7JCgiI3BheW1lbnRDYWxjdWxhdG9yTm90aWNlTGVhc2UiKS5oaWRlKCk7JCgiLnBheW1lbnRDYWxjdWxhdG9yTm90aWNlRmluYW5jZSIpLmhpZGUoKTskKCIjcGF5bWVudENhbGN1bGF0b3JDdXN0b21GZWVzIikuaGlkZSgpOyQoIi5wYXltZW50Q2FsY3VsYXRvckNvbW1vbk5vdGljZSIpLmhpZGUoKTsKJCgiI3BheW1lbnRDYWxjdWxhdG9yTm90aWNlSW5jbHVkZWRGZWVzIikuaGlkZSgpOyQoIi5wYXltZW50Q2FsY3VsYXRvck5vdGljZUNhc2giKS5wcm9wKCJoaWRkZW4iLCExKTskKCIjcGF5bWVudENhbGN1bGF0b3JFcnJvck1lc3NhZ2UiKS5oaWRlKCk7JCgiI3BheW1lbnRDYWxjdWxhdG9yRG93blBheW1lbnRFcnJvck1lc3NhZ2UiKS5oaWRlKCk7JCgiI3BheW1lbnRDYWxjdWxhdG9yRG93blBheW1lbnRFcnJvck1lc3NhZ2VGaW5hbmNlIikuaGlkZSgpOyQoIiNwYXltZW50Q2FsY3VsYXRvckRvd25QYXltZW50RXJyb3JNZXNzYWdlTGVhc2UiKS5oaWRlKCk7JCgiI3BheW1lbnRDYWxjdWxhdG9yT3B0aW9uQ29udGFpbmVyIikuc2hvdygpO2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNwYXltZW50Q2FsY3VsYXRvckNvbnRhaW5lciAuY2FsYy1wYXltZW50LWNhc2giKS5oaWRkZW49ITE7JCgiI3BheW1lbnRDYWxjdWxhdG9yTm90aWNlQ29udGFpbmVyIikucHJvcCgiaGlkZGVuIiwhMSk7CjE9PSQoIiNpc0RSU2l0ZSIpLmxlbmd0aCYmIjEiPT0kKCIjaXNEUlNpdGUiKS52YWwoKSYmY2hhbmdlUGFnZUNhc2hWYWx1ZSgpfQpmdW5jdGlvbiBjaGFuZ2VQYWdlQ2FzaFZhbHVlKCl7aWYobnVsbCE9PWNhc2hQcmljZUZvclBhZ2Upe3ZhciBhPSQoImJvZHkiKS5oYXNDbGFzcygiRU5HTElTSCIpPyJFTkdMSVNIIjoiRlJFTkNIIixjPXBheW1lbnRDYWxjdWxhdG9yRm9ybWF0TnVtYmVyKGNhc2hQcmljZUZvclBhZ2UudG9TdHJpbmcoKSksZT1zdG9yZS5nZXQoImkxOG4iKS5ERUZBVUxUX1BBWU1FTlRfQ0FTSCxkPSc8c3BhbiBjbGFzcz0idHh0LXBheW1lbnQgZm9ybWF0LXByaWNlIj4nK2MrIjwvc3Bhbj4iLGI9c3RvcmUuZ2V0KCJpMThuIikuTEFCRUxfQkVGT1JFX1RBWEVTLnRvTG93ZXJDYXNlKCk7JCgiLnBheW1lbnRXcmFwcGVyIC5wYXltZW50TGluZTIsIC5wYXltZW50V3JhcHBlck1vYmlsZVZEUCAucGF5bWVudExpbmUxIikuaHRtbChlKTskKCIucGF5bWVudFdyYXBwZXIgLnBheW1lbnRMaW5lMSwgLnBheW1lbnRXcmFwcGVyTW9iaWxlVkRQIC5wYXltZW50TGluZTIiKS5odG1sKGQpOyQoIi5wYXltZW50V3JhcHBlciAucGF5bWVudExpbmUzLCAucGF5bWVudFdyYXBwZXJNb2JpbGVWRFAgLnBheW1lbnRMaW5lMyIpLmh0bWwoYik7CmE9IkVOR0xJU0giPT09YT8iJCIrYzpjKyIgJCI7Y3RhUGF5bWVudFRleHRGcj1bYSwiQ29tcHRhbnQiLCIiXTtjdGFQYXltZW50VGV4dEVuPVthLCJDYXNoIiwiIl07Y3RhUGF5bWVudFZhbHVlcz1bY2FzaFByaWNlRm9yUGFnZSwwLDAsImNhc2giXTskKCIuYm5wX3BheW1lbnRfY29udGFpbmVyIikubGVuZ3RoJiYoJCgiLmJucF9wYXltZW50X2NvbnRhaW5lciIpLmhpZGUoKSwkKCIucGF5bWVudEluZm9CdWJibGVCblAiKS5oaWRlKCkpOyQoIiNkYXJrdG9vbHRpcC1wYXltZW50V3JhcHBlciwgI2Rhcmt0b29sdGlwLXZkcFBheW1lbnRUb29sdGlwLCAjZGFya3Rvb2x0aXAtdmRwSW5mb1Rvb2x0aXAsICNkYXJrdG9vbHRpcC12ZHBVc2VkSW5mb1Rvb2x0aXAiKS5yZW1vdmUoKTskKCIudmRwUGF5bWVudFRvb2x0aXAsIC5wYXltZW50V3JhcHBlciAudmRwSW5mb1Rvb2x0aXAsIC5wYXltZW50V3JhcHBlciAudmRwVXNlZEluZm9Ub29sdGlwIikuZGFya1Rvb2x0aXAoe29wYWNpdHk6MH0pfX0KZnVuY3Rpb24gZ2V0Q2FzaFByaWNlQmxvY2soYSl7dmFyIGM9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI3BheW1lbnRDYWxjdWxhdG9yUG9wdXBDb250YWluZXIiKSxlPWdldFBvcENvbnRhaW5TZXR0aW5ncygpLGQ9ZS5oYXNPd25Qcm9wZXJ0eSgibm9UcmltU2VsZWN0IikmJiJ0cnVlIj09ZS5ub1RyaW1TZWxlY3R8fCJ1c2VkY2Fycy5odG1sIj09JCgiI1BBR0VJRCIpLnZhbCgpfHwiY2FyZGV0YWlsLmh0bWwiPT0kKCIjUEFHRUlEIikudmFsKCksYj0kKCIjYWN0aXZlc2l0ZWxhbmd1YWdlIikudmFsKCl8fCJGUkVOQ0giO2xldCBnPXBhcnNlSW50KGEub3JpZ2luYWxQcmljZXx8ZS52ZWhpY2xlSW5mbyYmZS52ZWhpY2xlSW5mby5tc3JwQWxsSW58fDApO3ZhciByPXBheW1lbnRDYWxjdWxhdG9yRm9ybWF0TnVtYmVyKGcudG9TdHJpbmcoKSk7bGV0IG09Yy5xdWVyeVNlbGVjdG9yKCIuY2FsYy1wYXltZW50LWNhc2giKTt2YXIgbj0iMSI9PWMucXVlcnlTZWxlY3RvcigiI2Rpc3BsYXlCcmVha2Rvd24iKS52YWx1ZTsKbGV0IHA9IjEiPT1jLnF1ZXJ5U2VsZWN0b3IoIiNoaWRlUmViYXRlcyIpLnZhbHVlO3ZhciB3PSIxIj09Yy5xdWVyeVNlbGVjdG9yKCIjc2NyYXRjaE9yaWdpbmFsUHJpY2UiKS52YWx1ZTtsZXQgeT0iRU5HTElTSCI9PWI\/IlN0YXJ0aW5nIGF0Ijoiw4AgcGFydGlyIGRlIjtjPSJFTkdMSVNIIj09Yj8iWW91ciBwcmljZSI6IlZvdHJlIHByaXgiO2QmJih5PSQoIiNORVdJTlZfUFJJQ0VfTEFCRUxfT1JJR0lOQUwiKS52YWwoKSxjPSQoIiNORVdJTlZfUFJJQ0VfTEFCRUxfRklOQUwiKS52YWwoKSxlLnZlaGljbGVJbmZvJiZ5LnJlcGxhY2UoInskTUFLRX0iLGUudmVoaWNsZUluZm8ubWFrZSkucmVwbGFjZSgieyRNT0RFTH0iLGUudmVoaWNsZUluZm8uQ0ZNb2RlbE5hbWUpLnJlcGxhY2UoInskVkVSU0lPTn0iLGUudmVoaWNsZUluZm8uQ0ZTdHlsZU5hbWUpLnJlcGxhY2UoInskWUVBUn0iLGUudmVoaWNsZUluZm8ueWVhcikpO2xldCB0PSJFTkdMSVNIIj09Yj8iZGVzY0VuIjoiZGVzY0ZyIjsKJCgiI3BheW1lbnRDYWxjdWxhdG9yTm90aWNlVG90YWwiKS5odG1sKGcpO2U9dyYmYS5wcmljZUFtZW5kZW1lbnRzJiYwPmEucHJpY2VBbWVuZGVtZW50cy50b3RhbD8ic3RyaWtlLXByaWNlIjoiIjtyPWAKCQk8ZGl2IGNsYXNzPSJwcmljZVJvdyI+CgkJCTxzcGFuIGNsYXNzPSJwcmljZU5hbWUiPiR7biYmIXA\/Yzp5fTwvc3Bhbj4KCQkJPHNwYW4gY2xhc3M9InByaWNlLXZhbHVlICR7ImZvcm1hdC1wcmljZSJ9ICR7ZX0iPiR7cn08L3NwYW4+CgkJPC9kaXY+YDtpZigwPT0oYS5wcmljZUFtZW5kZW1lbnRzfHxbXSkubGVuZ3RoKW0uaW5uZXJIVE1MPXI7ZWxzZXt3PShhLnByaWNlQW1lbmRlbWVudHMuZmVlc0xpc3R8fFtdKS5yZWR1Y2UoKHosZik9PntpZigwPT1mLmFtb3VudClyZXR1cm4gejtsZXQgcT1wYXltZW50Q2FsY3VsYXRvckZvcm1hdE51bWJlcihmLmFtb3VudC50b1N0cmluZygpKTtyZXR1cm4geis9YAoJCQk8ZGl2IGNsYXNzPSJwcmljZVJvdyI+CgkJCQk8c3BhbiBjbGFzcz0icHJpY2VOYW1lIj4keyhuZXcgVGV4dERlY29kZXIpLmRlY29kZShVaW50OEFycmF5LmZyb20oYXRvYihmW3RdKSxrPT5rLmNoYXJDb2RlQXQoMCkpKX08L3NwYW4+CgkJCQk8c3BhbiBjbGFzcz0icHJpY2UtdmFsdWUgJHsiZm9ybWF0LXByaWNlIn0iPiR7cX08L3NwYW4+CgkJCTwvZGl2PgoJCWB9LCIiKTt2YXIgdj0oYS5wcmljZUFtZW5kZW1lbnRzLmluY2VudGl2ZXNMaXN0fHxbXSkucmVkdWNlKCh6LGYpPT57aWYoMD09Zi5hbW91bnQpcmV0dXJuIHo7bGV0IHE9cGF5bWVudENhbGN1bGF0b3JGb3JtYXROdW1iZXIoZi5hbW91bnQudG9TdHJpbmcoKSk7cmV0dXJuIHorPWAKCQkJPGRpdiBjbGFzcz0icHJpY2VSb3ciPgoJCQkJPHNwYW4gY2xhc3M9InByaWNlTmFtZSI+JHsobmV3IFRleHREZWNvZGVyKS5kZWNvZGUoVWludDhBcnJheS5mcm9tKGF0b2IoZlt0XSksaz0+ay5jaGFyQ29kZUF0KDApKSl9PC9zcGFuPgoJCQkJPHNwYW4gY2xhc3M9InByaWNlLXZhbHVlICR7ImZvcm1hdC1wcmljZSJ9Ij4tJHtxfTwvc3Bhbj4KCQkJPC9kaXY+CgkJYH0sIiIpO2Q9KGEucHJpY2VBbWVuZGVtZW50cy5wb3N0VGF4SW5jZW50aXZlc0xpc3R8fFtdKS5yZWR1Y2UoKHosZik9PntpZigwPT1mLmFtb3VudClyZXR1cm4gejtsZXQgcT1wYXltZW50Q2FsY3VsYXRvckZvcm1hdE51bWJlcihmLmFtb3VudC50b1N0cmluZygpKTtyZXR1cm4geis9YAoJCQk8ZGl2IGNsYXNzPSJwcmljZVJvdyI+CgkJCQk8c3BhbiBjbGFzcz0icHJpY2VOYW1lIj4keyhuZXcgVGV4dERlY29kZXIpLmRlY29kZShVaW50OEFycmF5LmZyb20oYXRvYihmW3RdKSxrPT5rLmNoYXJDb2RlQXQoMCkpKX08L3NwYW4+CgkJCQk8c3BhbiBjbGFzcz0icHJpY2UtdmFsdWUgJHsiZm9ybWF0LXByaWNlIn0iPi0ke3F9PC9zcGFuPgoJCQk8L2Rpdj4KCQlgfSwiIik7dmFyIEE9Zy0oYS5wcmljZUFtZW5kZW1lbnRzLnRvdGFsRmVlfHwwKSsoYS5wcmljZUFtZW5kZW1lbnRzLnRvdGFsUmViYXRlfHwwKSx4PTA8KGEucHJpY2VBbWVuZGVtZW50cy5jb25kaXRpb25hbFJlYmF0ZXNUb3RhbHx8MCk7Yj14JiZhLnByaWNlQW1lbmRlbWVudHMuZmluYWxQcmljZT9hLnByaWNlQW1lbmRlbWVudHMuZmluYWxQcmljZTpnO1siTkVXQ0FSUyIsIk5FV0NBUkRFVEFJTFMiXS5pbmNsdWRlcyhzaXRlUGFnZS5uYW1lKXx8KEE9Zy0oYS5wcmljZUFtZW5kZW1lbnRzLnRvdGFsRmVlfHwwKSsoYS5wcmljZUFtZW5kZW1lbnRzLnRvdGFsUmViYXRlfHwwKSxiPXgmJmEucHJpY2VBbWVuZGVtZW50cy5maW5hbFByaWNlP2EucHJpY2VBbWVuZGVtZW50cy5maW5hbFByaWNlOmcpO2Nhc2hQcmljZUZvclBhZ2U9YjtBPXBheW1lbnRDYWxjdWxhdG9yRm9ybWF0TnVtYmVyKEEudG9TdHJpbmcoKSk7Yj1wYXltZW50Q2FsY3VsYXRvckZvcm1hdE51bWJlcihiLnRvU3RyaW5nKCkpOwphPXcubGVuZ3RofHx2Lmxlbmd0aDtuPW4mJiFwJiZhP2AKCQk8ZGl2IGNsYXNzPSJwcmljZVJvdyI+CgkJCTxzcGFuIGNsYXNzPSJwcmljZU5hbWUiPiR7eX08L3NwYW4+CgkJCTxzcGFuIGNsYXNzPSJwcmljZS12YWx1ZSAkeyJmb3JtYXQtcHJpY2UifSAke2V9Ij4ke0F9PC9zcGFuPgoJCTwvZGl2PmArdyt2OiIiO2EmJihyPWAKCQkJPGRpdiBjbGFzcz0icHJpY2VSb3ciPgoJCQkJPHNwYW4gY2xhc3M9InByaWNlTmFtZSI+JHtjfTwvc3Bhbj4KCQkJCTxzcGFuIGNsYXNzPSIkeyIiIT1uPyJwcmljZUZpbmFsIjoiIn0gJHsiZm9ybWF0LXByaWNlIn0iPiR7Yn08L3NwYW4+CgkJCTwvZGl2PmApO20uaW5uZXJIVE1MPW4rcitkfX0KZnVuY3Rpb24gZ2V0T3B0aW9uc0Ftb3VudChhKXt2YXIgYz1hLnBheW1lbnRPcHRpb25zP2EucGF5bWVudE9wdGlvbnM6MDthLmhhc093blByb3BlcnR5KCJub1RyaW1TZWxlY3QiKSYmInRydWUiPT1hLm5vVHJpbVNlbGVjdHx8InVzZWRjYXJzLmh0bWwiPT0kKCIjUEFHRUlEIikudmFsKCl8fCQoIiNQQUdFSUQiKS52YWwoKTthPWEuY29uc2lkZXJJbnZlbnRvcnk\/YS5jb25zaWRlckludmVudG9yeToiMCI7dmFyIGU9InVuZGVmaW5lZCIhPXR5cGVvZiBtb2RlbENvbmZpZyYmImZ1bmN0aW9uIj09PXR5cGVvZiBtb2RlbENvbmZpZy5nZXRTZWxlY3RlZFN0eWxlO2lmKGV8fGEmJmUpYz1tb2RlbENvbmZpZy5nZXRTZWxlY3RlZFN0eWxlKCkuc2VsZWN0ZWRPcHRpb25zVG90YWwsYT1wYXJzZUludChtb2RlbENvbmZpZy5nZXRTZWxlY3RlZFN0eWxlKCkuZGVmYXVsdE9wdGlvbkFtb3VudCksMDxhJiYoYy09YSxjPU1hdGgubWF4KDAsYykpO3JldHVybiBjfHwwfQpmdW5jdGlvbiBnZXRBY2Nlc3Nvcmllc0Ftb3VudChhKXt2YXIgYz0wO2EuaGFzT3duUHJvcGVydHkoIm5vVHJpbVNlbGVjdCIpJiYidHJ1ZSI9PWEubm9UcmltU2VsZWN0fHwidXNlZGNhcnMuaHRtbCI9PSQoIiNQQUdFSUQiKS52YWwoKXx8JCgiI1BBR0VJRCIpLnZhbCgpO2E9YS5jb25zaWRlckludmVudG9yeT9hLmNvbnNpZGVySW52ZW50b3J5OiIwIjt2YXIgZT0idW5kZWZpbmVkIiE9dHlwZW9mIG1vZGVsQ29uZmlnJiYiZnVuY3Rpb24iPT09dHlwZW9mIG1vZGVsQ29uZmlnLmdldFNlbGVjdGVkU3R5bGU7KGV8fGEmJmUpJiZ2b2lkIDAhPW1vZGVsQ29uZmlnLmdldFNlbGVjdGVkU3R5bGUoKS5zZWxlY3RlZEFjY1RvdGFsJiYoYz1tb2RlbENvbmZpZy5nZXRTZWxlY3RlZFN0eWxlKCkuc2VsZWN0ZWRBY2NUb3RhbCk7cmV0dXJuIGN8fDB9CmZ1bmN0aW9uIGdldFNlbGVjdGVkQWNjZXNzb3JpZXMoYSl7dmFyIGM9IiI7YT1hLmNvbnNpZGVySW52ZW50b3J5P2EuY29uc2lkZXJJbnZlbnRvcnk6IjAiO3ZhciBlPSJ1bmRlZmluZWQiIT10eXBlb2YgbW9kZWxDb25maWcmJiJmdW5jdGlvbiI9PT10eXBlb2YgbW9kZWxDb25maWcuZ2V0U2VsZWN0ZWRTdHlsZTsoZXx8YSYmZSkmJnZvaWQgMCE9bW9kZWxDb25maWcuZ2V0U2VsZWN0ZWRTdHlsZSgpLnNlbGVjdGVkQWNjSWRzJiYoYz1tb2RlbENvbmZpZy5nZXRTZWxlY3RlZFN0eWxlKCkuc2VsZWN0ZWRBY2NJZHMuam9pbigiLCIpKTtyZXR1cm4gY3x8IiJ9CmZ1bmN0aW9uIGdldFByb3RlY3Rpb25QbGFuc0Ftb3VudChhKXt2YXIgYz0wO2EuaGFzT3duUHJvcGVydHkoIm5vVHJpbVNlbGVjdCIpJiYidHJ1ZSI9PWEubm9UcmltU2VsZWN0fHwidXNlZGNhcnMuaHRtbCI9PSQoIiNQQUdFSUQiKS52YWwoKXx8JCgiI1BBR0VJRCIpLnZhbCgpO2E9YS5jb25zaWRlckludmVudG9yeT9hLmNvbnNpZGVySW52ZW50b3J5OiIwIjt2YXIgZT0idW5kZWZpbmVkIiE9dHlwZW9mIG1vZGVsQ29uZmlnJiYiZnVuY3Rpb24iPT09dHlwZW9mIG1vZGVsQ29uZmlnLmdldFNlbGVjdGVkU3R5bGU7KGV8fGEmJmUpJiZ2b2lkIDAhPW1vZGVsQ29uZmlnLmdldFNlbGVjdGVkU3R5bGUoKS5zZWxlY3RlZFByb3RlY3Rpb25QbGFuVG90YWwmJihjPW1vZGVsQ29uZmlnLmdldFNlbGVjdGVkU3R5bGUoKS5zZWxlY3RlZFByb3RlY3Rpb25QbGFuVG90YWwpO3JldHVybiBjfHwwfQpmdW5jdGlvbiBwYXltZW50Q2FsY3VsYXRvckZvcm1hdE51bWJlcihhKXtyZXR1cm4gYS5yZXBsYWNlKC9cQig\/PShcZHszfSkrKD8hXGQpKS9nLCIsIil9ZnVuY3Rpb24gcGF5bWVudENhbGN1bGF0b3JDbGlja2VkVHJpZ2dlcihhLGMpeyQoYSkudHJpZ2dlcigicGF5bWVudENhbGN1bGF0b3IuY2xpY2siLHtvcmlnRXZlbnQ6Y30pO2E9bmV3IEV2ZW50KCJwYXltZW50Q2FsY3VsYXRvci5jbGljayIpO2RvY3VtZW50LmRpc3BhdGNoRXZlbnQoYSl9ZnVuY3Rpb24gcGF5bWVudENhbGN1bGF0b3JDbGlja2VkTmV3VkRQVHJpZ2dlcihhLGMpe3ZhciBlPSQoIiNwb3B1cG1ha2UiKS52YWwoKSxkPSQoIiNwb3B1cG1vZGVsIikudmFsKCksYj0kKCIjcG9wdXB5ZWFyIikudmFsKCk7Z2FUcmFjaygiX3RyYWNrRXZlbnQiLCJOZXctVkRQLU91dGJvdW5kLWNsaWNrcyIsIkNhbGN1bGF0cmljZSIsZSsiLSIrZCsiLSIrYik7cGF5bWVudENhbGN1bGF0b3JDbGlja2VkVHJpZ2dlcihhLGMpfQpmdW5jdGlvbiBmb3JtYXRFZmZlY3RpdmVSYXRlVGV4dChhLGMsZSl7ZT12b2lkIDA9PT1lPyIiOmU7YT0iPHNwYW4gIitjKyI+IithKyI8L3NwYW4+JSI7YT0iRU5HTElTSCI9PWFjdGl2ZUxhbmc\/YSsiIEFQUiI6IlRhdXggIithO3JldHVybiAkKCIjaXNtb2JpbGUiKS52YWwoKT8iPGJyLz48ZGl2ICIrZSsiPigiK2ErIik8L2Rpdj4iOiIgPGRpdiAiK2UrIj4oICIrYSsiICk8L2Rpdj4ifQpmdW5jdGlvbiBwb3B1bGF0ZUxlYXNlS01BbGxvd2FuY2VEcm9wZG93bihhKXt0cnl7aWYoYS5sZWFzZSYmMDxhLmxlYXNlLmxlbmd0aCl7dmFyIGM9W107YS5sZWFzZS5mb3JFYWNoKGZ1bmN0aW9uKGQpey0xPT0kLmluQXJyYXkoZC5rbV9hbGxvd2FuY2UsYykmJmMucHVzaChkLmttX2FsbG93YW5jZSl9KTtjLmZvckVhY2goZnVuY3Rpb24oZCl7dmFyIGI9cGF5bWVudENhbGN1bGF0b3JGb3JtYXROdW1iZXIoZC50b0ZpeGVkKDApKTskKCIjcGF5bWVudENhbGN1bGF0b3JLbUFsbG93YW5jZSIpLmFwcGVuZChuZXcgT3B0aW9uKGIrIiBrbSIsZCkpfSk7dmFyIGU9MkU0O2EuY3VycmVudFBheW1lbnRbMF0mJiJ1bmRlZmluZWQiIT09dHlwZW9mIGEuY3VycmVudFBheW1lbnRbMF0ua21fYWxsb3dhbmNlJiYoZT0wPGEuY3VycmVudFBheW1lbnRbMF0ua21fYWxsb3dhbmNlP2EuY3VycmVudFBheW1lbnRbMF0ua21fYWxsb3dhbmNlOjJFNCk7JCgiI3BheW1lbnRDYWxjdWxhdG9yS21BbGxvd2FuY2UiKS52YWwoZSl9fWNhdGNoKGQpe2NvbnNvbGUuZXJyb3IoIkVycm9yIHBvcHVsYXRpbmcgbGVhc2Uga20gYWxsb3dhbmNlIGRyb3Bkb3duIGluIHRoZSBmdW5jdGlvbiBwb3B1bGF0ZUxlYXNlS01BbGxvd2FuY2VEcm9wZG93bjogIiwKZCl9fQpmdW5jdGlvbiBzaG93SGlkZVBheW1lbnRTZWN0aW9uKGEsYyl7JCgiI3BheW1lbnRDYWxjdWxhdG9yUGF5bWVudFR5cGUgbGkiKS5yZW1vdmVDbGFzcygiYWN0aXZlUGF5bWVudFR5cGUiKTswPCQoIiNwYXltZW50Q2FsY3VsYXRvclBheW1lbnRUeXBlIGxpW2RhdGEtdHlwZT0nIitjKyInXSIpLmxlbmd0aCYmJCgiI3BheW1lbnRDYWxjdWxhdG9yUGF5bWVudFR5cGUgbGlbZGF0YS10eXBlPSciK2MrIiddIikuYWRkQ2xhc3MoImFjdGl2ZVBheW1lbnRUeXBlIik7ImNhc2giIT09YyYmKHZvaWQgMCE9YS5maW5hbmNlJiYwPT09YS5maW5hbmNlLmxlbmd0aD8kKCIjcGF5bWVudENhbGN1bGF0b3JQYXltZW50VHlwZUZpbmFuY2UiKS5oaWRlKCk6JCgiI3BheW1lbnRDYWxjdWxhdG9yUGF5bWVudFR5cGVGaW5hbmNlIikuc2hvdygpLHZvaWQgMCE9YS5sZWFzZSYmMD09PWEubGVhc2UubGVuZ3RoPyQoIiNwYXltZW50Q2FsY3VsYXRvclBheW1lbnRUeXBlTGVhc2UiKS5oaWRlKCk6JCgiI3BheW1lbnRDYWxjdWxhdG9yUGF5bWVudFR5cGVMZWFzZSIpLnNob3coKSl9OwovKiogL20vanMvdmFuaWxsYWpzL2ltYXNrLm1pbi5qcyAqKi8KIWZ1bmN0aW9uKHQsZSl7Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzJiYidW5kZWZpbmVkIiE9dHlwZW9mIG1vZHVsZT9lKGV4cG9ydHMpOiJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ\/ZGVmaW5lKFsiZXhwb3J0cyJdLGUpOmUoKHQ9InVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWxUaGlzP2dsb2JhbFRoaXM6dHx8c2VsZikuSU1hc2s9e30pfSh0aGlzLChmdW5jdGlvbih0KXsidXNlIHN0cmljdCI7dmFyIGU9InVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWxUaGlzP2dsb2JhbFRoaXM6InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3c\/d2luZG93OiJ1bmRlZmluZWQiIT10eXBlb2YgZ2xvYmFsP2dsb2JhbDoidW5kZWZpbmVkIiE9dHlwZW9mIHNlbGY\/c2VsZjp7fSxuPWZ1bmN0aW9uKHQpe3JldHVybiB0JiZ0Lk1hdGg9PU1hdGgmJnR9LGk9bigib2JqZWN0Ij09dHlwZW9mIGdsb2JhbFRoaXMmJmdsb2JhbFRoaXMpfHxuKCJvYmplY3QiPT10eXBlb2Ygd2luZG93JiZ3aW5kb3cpfHxuKCJvYmplY3QiPT10eXBlb2Ygc2VsZiYmc2VsZil8fG4oIm9iamVjdCI9PXR5cGVvZiBlJiZlKXx8ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30oKXx8RnVuY3Rpb24oInJldHVybiB0aGlzIikoKSxyPXt9LHU9ZnVuY3Rpb24odCl7dHJ5e3JldHVybiEhdCgpfWNhdGNoKHQpe3JldHVybiEwfX0scz0hdSgoZnVuY3Rpb24oKXtyZXR1cm4gNyE9T2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LDEse2dldDpmdW5jdGlvbigpe3JldHVybiA3fX0pWzFdfSkpLGE9IXUoKGZ1bmN0aW9uKCl7dmFyIHQ9ZnVuY3Rpb24oKXt9LmJpbmQoKTtyZXR1cm4iZnVuY3Rpb24iIT10eXBlb2YgdHx8dC5oYXNPd25Qcm9wZXJ0eSgicHJvdG90eXBlIil9KSksbz1hLGw9RnVuY3Rpb24ucHJvdG90eXBlLmNhbGwsaD1vP2wuYmluZChsKTpmdW5jdGlvbigpe3JldHVybiBsLmFwcGx5KGwsYXJndW1lbnRzKX0sYz17fSxmPXt9LnByb3BlcnR5SXNFbnVtZXJhYmxlLHA9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcixkPXAmJiFmLmNhbGwoezE6Mn0sMSk7Yy5mPWQ\/ZnVuY3Rpb24odCl7dmFyIGU9cCh0aGlzLHQpO3JldHVybiEhZSYmZS5lbnVtZXJhYmxlfTpmO3ZhciB2LGcsaz1mdW5jdGlvbih0LGUpe3JldHVybntlbnVtZXJhYmxlOiEoMSZ0KSxjb25maWd1cmFibGU6ISgyJnQpLHdyaXRhYmxlOiEoNCZ0KSx2YWx1ZTplfX0seT1hLG09RnVuY3Rpb24ucHJvdG90eXBlLGI9bS5iaW5kLF89bS5jYWxsLEE9eSYmYi5iaW5kKF8sXyksQz15P2Z1bmN0aW9uKHQpe3JldHVybiB0JiZBKHQpfTpmdW5jdGlvbih0KXtyZXR1cm4gdCYmZnVuY3Rpb24oKXtyZXR1cm4gXy5hcHBseSh0LGFyZ3VtZW50cyl9fSxFPUMsRj1FKHt9LnRvU3RyaW5nKSxTPUUoIiIuc2xpY2UpLHc9ZnVuY3Rpb24odCl7cmV0dXJuIFMoRih0KSw4LC0xKX0sQj1DLEQ9dSx4PXcsTT1pLk9iamVjdCxPPUIoIiIuc3BsaXQpLFA9RCgoZnVuY3Rpb24oKXtyZXR1cm4hTSgieiIpLnByb3BlcnR5SXNFbnVtZXJhYmxlKDApfSkpP2Z1bmN0aW9uKHQpe3JldHVybiJTdHJpbmciPT14KHQpP08odCwiIik6TSh0KX06TSxUPWkuVHlwZUVycm9yLEk9ZnVuY3Rpb24odCl7aWYobnVsbD09dCl0aHJvdyBUKCJDYW4ndCBjYWxsIG1ldGhvZCBvbiAiK3QpO3JldHVybiB0fSxqPVAsUj1JLFY9ZnVuY3Rpb24odCl7cmV0dXJuIGooUih0KSl9LEw9ZnVuY3Rpb24odCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHR9LE49TCxVPWZ1bmN0aW9uKHQpe3JldHVybiJvYmplY3QiPT10eXBlb2YgdD9udWxsIT09dDpOKHQpfSx6PWkscT1MLEg9ZnVuY3Rpb24odCl7cmV0dXJuIHEodCk\/dDp2b2lkIDB9LFk9ZnVuY3Rpb24odCxlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aDwyP0goelt0XSk6elt0XSYmelt0XVtlXX0sWj1DKHt9LmlzUHJvdG90eXBlT2YpLEc9WSgibmF2aWdhdG9yIiwidXNlckFnZW50Iil8fCIiLEs9aSwkPUcsVz1LLnByb2Nlc3MsWD1LLkRlbm8sSj1XJiZXLnZlcnNpb25zfHxYJiZYLnZlcnNpb24sUT1KJiZKLnY4O1EmJihnPSh2PVEuc3BsaXQoIi4iKSlbMF0+MCYmdlswXTw0PzE6Kyh2WzBdK3ZbMV0pKSwhZyYmJCYmKCEodj0kLm1hdGNoKC9FZGdlXC8oXGQrKS8pKXx8dlsxXT49NzQpJiYodj0kLm1hdGNoKC9DaHJvbWVcLyhcZCspLykpJiYoZz0rdlsxXSk7dmFyIHR0PWcsZXQ9dSxudD0hIU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMmJiFldCgoZnVuY3Rpb24oKXt2YXIgdD1TeW1ib2woKTtyZXR1cm4hU3RyaW5nKHQpfHwhKE9iamVjdCh0KWluc3RhbmNlb2YgU3ltYm9sKXx8IVN5bWJvbC5zaGFtJiZ0dCYmdHQ8NDF9KSksaXQ9bnQmJiFTeW1ib2wuc2hhbSYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3IscnQ9WSx1dD1MLHN0PVosYXQ9aXQsb3Q9aS5PYmplY3QsbHQ9YXQ\/ZnVuY3Rpb24odCl7cmV0dXJuInN5bWJvbCI9PXR5cGVvZiB0fTpmdW5jdGlvbih0KXt2YXIgZT1ydCgiU3ltYm9sIik7cmV0dXJuIHV0KGUpJiZzdChlLnByb3RvdHlwZSxvdCh0KSl9LGh0PWkuU3RyaW5nLGN0PUwsZnQ9ZnVuY3Rpb24odCl7dHJ5e3JldHVybiBodCh0KX1jYXRjaCh0KXtyZXR1cm4iT2JqZWN0In19LHB0PWkuVHlwZUVycm9yLGR0PWZ1bmN0aW9uKHQpe2lmKGN0KHQpKXJldHVybiB0O3Rocm93IHB0KGZ0KHQpKyIgaXMgbm90IGEgZnVuY3Rpb24iKX0sdnQ9aCxndD1MLGt0PVUseXQ9aS5UeXBlRXJyb3IsbXQ9e2V4cG9ydHM6e319LGJ0PWksX3Q9T2JqZWN0LmRlZmluZVByb3BlcnR5LEF0PWZ1bmN0aW9uKHQsZSl7dHJ5e190KGJ0LHQse3ZhbHVlOmUsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSl9Y2F0Y2gobil7YnRbdF09ZX1yZXR1cm4gZX0sQ3Q9QXQsRXQ9Il9fY29yZS1qc19zaGFyZWRfXyIsRnQ9aVtFdF18fEN0KEV0LHt9KSxTdD1GdDsobXQuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3JldHVybiBTdFt0XXx8KFN0W3RdPXZvaWQgMCE9PWU\/ZTp7fSl9KSgidmVyc2lvbnMiLFtdKS5wdXNoKHt2ZXJzaW9uOiIzLjIxLjAiLG1vZGU6Imdsb2JhbCIsY29weXJpZ2h0OiKpIDIwMTQtMjAyMiBEZW5pcyBQdXNoa2FyZXYgKHpsb2lyb2NrLnJ1KSIsbGljZW5zZToiaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvYmxvYi92My4yMS4wL0xJQ0VOU0UiLHNvdXJjZToiaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMifSk7dmFyIHd0PUksQnQ9aS5PYmplY3QsRHQ9ZnVuY3Rpb24odCl7cmV0dXJuIEJ0KHd0KHQpKX0seHQ9RHQsTXQ9Qyh7fS5oYXNPd25Qcm9wZXJ0eSksT3Q9T2JqZWN0Lmhhc093bnx8ZnVuY3Rpb24odCxlKXtyZXR1cm4gTXQoeHQodCksZSl9LFB0PUMsVHQ9MCxJdD1NYXRoLnJhbmRvbSgpLGp0PVB0KDEuLnRvU3RyaW5nKSxSdD1mdW5jdGlvbih0KXtyZXR1cm4iU3ltYm9sKCIrKHZvaWQgMD09PXQ\/IiI6dCkrIilfIitqdCgrK1R0K0l0LDM2KX0sVnQ9aSxMdD1tdC5leHBvcnRzLE50PU90LFV0PVJ0LHp0PW50LHF0PWl0LEh0PUx0KCJ3a3MiKSxZdD1WdC5TeW1ib2wsWnQ9WXQmJll0LmZvcixHdD1xdD9ZdDpZdCYmWXQud2l0aG91dFNldHRlcnx8VXQsS3Q9ZnVuY3Rpb24odCl7aWYoIU50KEh0LHQpfHwhenQmJiJzdHJpbmciIT10eXBlb2YgSHRbdF0pe3ZhciBlPSJTeW1ib2wuIit0O3p0JiZOdChZdCx0KT9IdFt0XT1ZdFt0XTpIdFt0XT1xdCYmWnQ\/WnQoZSk6R3QoZSl9cmV0dXJuIEh0W3RdfSwkdD1oLFd0PVUsWHQ9bHQsSnQ9ZnVuY3Rpb24odCxlKXt2YXIgbj10W2VdO3JldHVybiBudWxsPT1uP3ZvaWQgMDpkdChuKX0sUXQ9ZnVuY3Rpb24odCxlKXt2YXIgbixpO2lmKCJzdHJpbmciPT09ZSYmZ3Qobj10LnRvU3RyaW5nKSYmIWt0KGk9dnQobix0KSkpcmV0dXJuIGk7aWYoZ3Qobj10LnZhbHVlT2YpJiYha3QoaT12dChuLHQpKSlyZXR1cm4gaTtpZigic3RyaW5nIiE9PWUmJmd0KG49dC50b1N0cmluZykmJiFrdChpPXZ0KG4sdCkpKXJldHVybiBpO3Rocm93IHl0KCJDYW4ndCBjb252ZXJ0IG9iamVjdCB0byBwcmltaXRpdmUgdmFsdWUiKX0sdGU9S3QsZWU9aS5UeXBlRXJyb3IsbmU9dGUoInRvUHJpbWl0aXZlIiksaWU9ZnVuY3Rpb24odCxlKXtpZighV3QodCl8fFh0KHQpKXJldHVybiB0O3ZhciBuLGk9SnQodCxuZSk7aWYoaSl7aWYodm9pZCAwPT09ZSYmKGU9ImRlZmF1bHQiKSxuPSR0KGksdCxlKSwhV3Qobil8fFh0KG4pKXJldHVybiBuO3Rocm93IGVlKCJDYW4ndCBjb252ZXJ0IG9iamVjdCB0byBwcmltaXRpdmUgdmFsdWUiKX1yZXR1cm4gdm9pZCAwPT09ZSYmKGU9Im51bWJlciIpLFF0KHQsZSl9LHJlPWx0LHVlPWZ1bmN0aW9uKHQpe3ZhciBlPWllKHQsInN0cmluZyIpO3JldHVybiByZShlKT9lOmUrIiJ9LHNlPVUsYWU9aS5kb2N1bWVudCxvZT1zZShhZSkmJnNlKGFlLmNyZWF0ZUVsZW1lbnQpLGxlPWZ1bmN0aW9uKHQpe3JldHVybiBvZT9hZS5jcmVhdGVFbGVtZW50KHQpOnt9fSxoZT0hcyYmIXUoKGZ1bmN0aW9uKCl7cmV0dXJuIDchPU9iamVjdC5kZWZpbmVQcm9wZXJ0eShsZSgiZGl2IiksImEiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gN319KS5hfSkpLGNlPXMsZmU9aCxwZT1jLGRlPWssdmU9VixnZT11ZSxrZT1PdCx5ZT1oZSxtZT1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO3IuZj1jZT9tZTpmdW5jdGlvbih0LGUpe2lmKHQ9dmUodCksZT1nZShlKSx5ZSl0cnl7cmV0dXJuIG1lKHQsZSl9Y2F0Y2godCl7fWlmKGtlKHQsZSkpcmV0dXJuIGRlKCFmZShwZS5mLHQsZSksdFtlXSl9O3ZhciBiZT17fSxfZT1zJiZ1KChmdW5jdGlvbigpe3JldHVybiA0MiE9T2JqZWN0LmRlZmluZVByb3BlcnR5KChmdW5jdGlvbigpe30pLCJwcm90b3R5cGUiLHt2YWx1ZTo0Mix3cml0YWJsZTohMX0pLnByb3RvdHlwZX0pKSxBZT1pLENlPVUsRWU9QWUuU3RyaW5nLEZlPUFlLlR5cGVFcnJvcixTZT1mdW5jdGlvbih0KXtpZihDZSh0KSlyZXR1cm4gdDt0aHJvdyBGZShFZSh0KSsiIGlzIG5vdCBhbiBvYmplY3QiKX0sd2U9cyxCZT1oZSxEZT1fZSx4ZT1TZSxNZT11ZSxPZT1pLlR5cGVFcnJvcixQZT1PYmplY3QuZGVmaW5lUHJvcGVydHksVGU9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcixJZT0iZW51bWVyYWJsZSIsamU9ImNvbmZpZ3VyYWJsZSIsUmU9IndyaXRhYmxlIjtiZS5mPXdlP0RlP2Z1bmN0aW9uKHQsZSxuKXtpZih4ZSh0KSxlPU1lKGUpLHhlKG4pLCJmdW5jdGlvbiI9PXR5cGVvZiB0JiYicHJvdG90eXBlIj09PWUmJiJ2YWx1ZSJpbiBuJiZSZSBpbiBuJiYhbi53cml0YWJsZSl7dmFyIGk9VGUodCxlKTtpJiZpLndyaXRhYmxlJiYodFtlXT1uLnZhbHVlLG49e2NvbmZpZ3VyYWJsZTpqZSBpbiBuP24uY29uZmlndXJhYmxlOmkuY29uZmlndXJhYmxlLGVudW1lcmFibGU6SWUgaW4gbj9uLmVudW1lcmFibGU6aS5lbnVtZXJhYmxlLHdyaXRhYmxlOiExfSl9cmV0dXJuIFBlKHQsZSxuKX06UGU6ZnVuY3Rpb24odCxlLG4pe2lmKHhlKHQpLGU9TWUoZSkseGUobiksQmUpdHJ5e3JldHVybiBQZSh0LGUsbil9Y2F0Y2godCl7fWlmKCJnZXQiaW4gbnx8InNldCJpbiBuKXRocm93IE9lKCJBY2Nlc3NvcnMgbm90IHN1cHBvcnRlZCIpO3JldHVybiJ2YWx1ZSJpbiBuJiYodFtlXT1uLnZhbHVlKSx0fTt2YXIgVmU9YmUsTGU9ayxOZT1zP2Z1bmN0aW9uKHQsZSxuKXtyZXR1cm4gVmUuZih0LGUsTGUoMSxuKSl9OmZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gdFtlXT1uLHR9LFVlPXtleHBvcnRzOnt9fSx6ZT1MLHFlPUZ0LEhlPUMoRnVuY3Rpb24udG9TdHJpbmcpO3plKHFlLmluc3BlY3RTb3VyY2UpfHwocWUuaW5zcGVjdFNvdXJjZT1mdW5jdGlvbih0KXtyZXR1cm4gSGUodCl9KTt2YXIgWWUsWmUsR2UsS2U9cWUuaW5zcGVjdFNvdXJjZSwkZT1MLFdlPUtlLFhlPWkuV2Vha01hcCxKZT0kZShYZSkmJi9uYXRpdmUgY29kZS8udGVzdChXZShYZSkpLFFlPW10LmV4cG9ydHMsdG49UnQsZW49UWUoImtleXMiKSxubj17fSxybj1KZSx1bj1pLHNuPUMsYW49VSxvbj1OZSxsbj1PdCxobj1GdCxjbj1mdW5jdGlvbih0KXtyZXR1cm4gZW5bdF18fChlblt0XT10bih0KSl9LGZuPW5uLHBuPSJPYmplY3QgYWxyZWFkeSBpbml0aWFsaXplZCIsZG49dW4uVHlwZUVycm9yLHZuPXVuLldlYWtNYXA7aWYocm58fGhuLnN0YXRlKXt2YXIgZ249aG4uc3RhdGV8fChobi5zdGF0ZT1uZXcgdm4pLGtuPXNuKGduLmdldCkseW49c24oZ24uaGFzKSxtbj1zbihnbi5zZXQpO1llPWZ1bmN0aW9uKHQsZSl7aWYoeW4oZ24sdCkpdGhyb3cgbmV3IGRuKHBuKTtyZXR1cm4gZS5mYWNhZGU9dCxtbihnbix0LGUpLGV9LFplPWZ1bmN0aW9uKHQpe3JldHVybiBrbihnbix0KXx8e319LEdlPWZ1bmN0aW9uKHQpe3JldHVybiB5bihnbix0KX19ZWxzZXt2YXIgYm49Y24oInN0YXRlIik7Zm5bYm5dPSEwLFllPWZ1bmN0aW9uKHQsZSl7aWYobG4odCxibikpdGhyb3cgbmV3IGRuKHBuKTtyZXR1cm4gZS5mYWNhZGU9dCxvbih0LGJuLGUpLGV9LFplPWZ1bmN0aW9uKHQpe3JldHVybiBsbih0LGJuKT90W2JuXTp7fX0sR2U9ZnVuY3Rpb24odCl7cmV0dXJuIGxuKHQsYm4pfX12YXIgX249e3NldDpZZSxnZXQ6WmUsaGFzOkdlLGVuZm9yY2U6ZnVuY3Rpb24odCl7cmV0dXJuIEdlKHQpP1plKHQpOlllKHQse30pfSxnZXR0ZXJGb3I6ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciBuO2lmKCFhbihlKXx8KG49WmUoZSkpLnR5cGUhPT10KXRocm93IGRuKCJJbmNvbXBhdGlibGUgcmVjZWl2ZXIsICIrdCsiIHJlcXVpcmVkIik7cmV0dXJuIG59fX0sQW49cyxDbj1PdCxFbj1GdW5jdGlvbi5wcm90b3R5cGUsRm49QW4mJk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IsU249Q24oRW4sIm5hbWUiKSx3bj1TbiYmInNvbWV0aGluZyI9PT1mdW5jdGlvbigpe30ubmFtZSxCbj1TbiYmKCFBbnx8QW4mJkZuKEVuLCJuYW1lIikuY29uZmlndXJhYmxlKSxEbj1pLHhuPUwsTW49T3QsT249TmUsUG49QXQsVG49S2UsSW49e0VYSVNUUzpTbixQUk9QRVI6d24sQ09ORklHVVJBQkxFOkJufS5DT05GSUdVUkFCTEUsam49X24uZ2V0LFJuPV9uLmVuZm9yY2UsVm49U3RyaW5nKFN0cmluZykuc3BsaXQoIlN0cmluZyIpOyhVZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxuLGkpe3ZhciByLHU9ISFpJiYhIWkudW5zYWZlLHM9ISFpJiYhIWkuZW51bWVyYWJsZSxhPSEhaSYmISFpLm5vVGFyZ2V0R2V0LG89aSYmdm9pZCAwIT09aS5uYW1lP2kubmFtZTplO3huKG4pJiYoIlN5bWJvbCgiPT09U3RyaW5nKG8pLnNsaWNlKDAsNykmJihvPSJbIitTdHJpbmcobykucmVwbGFjZSgvXlN5bWJvbFwoKFteKV0qKVwpLywiJDEiKSsiXSIpLCghTW4obiwibmFtZSIpfHxJbiYmbi5uYW1lIT09bykmJk9uKG4sIm5hbWUiLG8pLChyPVJuKG4pKS5zb3VyY2V8fChyLnNvdXJjZT1Wbi5qb2luKCJzdHJpbmciPT10eXBlb2Ygbz9vOiIiKSkpLHQhPT1Ebj8odT8hYSYmdFtlXSYmKHM9ITApOmRlbGV0ZSB0W2VdLHM\/dFtlXT1uOk9uKHQsZSxuKSk6cz90W2VdPW46UG4oZSxuKX0pKEZ1bmN0aW9uLnByb3RvdHlwZSwidG9TdHJpbmciLChmdW5jdGlvbigpe3JldHVybiB4bih0aGlzKSYmam4odGhpcykuc291cmNlfHxUbih0aGlzKX0pKTt2YXIgTG49e30sTm49TWF0aC5jZWlsLFVuPU1hdGguZmxvb3Isem49ZnVuY3Rpb24odCl7dmFyIGU9K3Q7cmV0dXJuIGUhPWV8fDA9PT1lPzA6KGU+MD9VbjpObikoZSl9LHFuPXpuLEhuPU1hdGgubWF4LFluPU1hdGgubWluLFpuPXpuLEduPU1hdGgubWluLEtuPWZ1bmN0aW9uKHQpe3JldHVybiB0PjA\/R24oWm4odCksOTAwNzE5OTI1NDc0MDk5MSk6MH0sJG49S24sV249VixYbj1mdW5jdGlvbih0LGUpe3ZhciBuPXFuKHQpO3JldHVybiBuPDA\/SG4obitlLDApOlluKG4sZSl9LEpuPWZ1bmN0aW9uKHQpe3JldHVybiAkbih0Lmxlbmd0aCl9LFFuPWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihlLG4saSl7dmFyIHIsdT1XbihlKSxzPUpuKHUpLGE9WG4oaSxzKTtpZih0JiZuIT1uKXtmb3IoO3M+YTspaWYoKHI9dVthKytdKSE9cilyZXR1cm4hMH1lbHNlIGZvcig7cz5hO2ErKylpZigodHx8YSBpbiB1KSYmdVthXT09PW4pcmV0dXJuIHR8fGF8fDA7cmV0dXJuIXQmJi0xfX0sdGk9e2luY2x1ZGVzOlFuKCEwKSxpbmRleE9mOlFuKCExKX0sZWk9T3Qsbmk9VixpaT10aS5pbmRleE9mLHJpPW5uLHVpPUMoW10ucHVzaCksc2k9ZnVuY3Rpb24odCxlKXt2YXIgbixpPW5pKHQpLHI9MCx1PVtdO2ZvcihuIGluIGkpIWVpKHJpLG4pJiZlaShpLG4pJiZ1aSh1LG4pO2Zvcig7ZS5sZW5ndGg+cjspZWkoaSxuPWVbcisrXSkmJih+aWkodSxuKXx8dWkodSxuKSk7cmV0dXJuIHV9LGFpPVsiY29uc3RydWN0b3IiLCJoYXNPd25Qcm9wZXJ0eSIsImlzUHJvdG90eXBlT2YiLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsInRvTG9jYWxlU3RyaW5nIiwidG9TdHJpbmciLCJ2YWx1ZU9mIl0sb2k9c2ksbGk9YWkuY29uY2F0KCJsZW5ndGgiLCJwcm90b3R5cGUiKTtMbi5mPU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzfHxmdW5jdGlvbih0KXtyZXR1cm4gb2kodCxsaSl9O3ZhciBoaT17fTtoaS5mPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM7dmFyIGNpPVksZmk9TG4scGk9aGksZGk9U2Usdmk9QyhbXS5jb25jYXQpLGdpPWNpKCJSZWZsZWN0Iiwib3duS2V5cyIpfHxmdW5jdGlvbih0KXt2YXIgZT1maS5mKGRpKHQpKSxuPXBpLmY7cmV0dXJuIG4\/dmkoZSxuKHQpKTplfSxraT1PdCx5aT1naSxtaT1yLGJpPWJlLF9pPXUsQWk9TCxDaT0vI3xcLnByb3RvdHlwZVwuLyxFaT1mdW5jdGlvbih0LGUpe3ZhciBuPVNpW0ZpKHQpXTtyZXR1cm4gbj09Qml8fG4hPXdpJiYoQWkoZSk\/X2koZSk6ISFlKX0sRmk9RWkubm9ybWFsaXplPWZ1bmN0aW9uKHQpe3JldHVybiBTdHJpbmcodCkucmVwbGFjZShDaSwiLiIpLnRvTG93ZXJDYXNlKCl9LFNpPUVpLmRhdGE9e30sd2k9RWkuTkFUSVZFPSJOIixCaT1FaS5QT0xZRklMTD0iUCIsRGk9RWkseGk9aSxNaT1yLmYsT2k9TmUsUGk9VWUuZXhwb3J0cyxUaT1BdCxJaT1mdW5jdGlvbih0LGUsbil7Zm9yKHZhciBpPXlpKGUpLHI9YmkuZix1PW1pLmYscz0wO3M8aS5sZW5ndGg7cysrKXt2YXIgYT1pW3NdO2tpKHQsYSl8fG4mJmtpKG4sYSl8fHIodCxhLHUoZSxhKSl9fSxqaT1EaSxSaT1mdW5jdGlvbih0LGUpe3ZhciBuLGkscix1LHMsYT10LnRhcmdldCxvPXQuZ2xvYmFsLGw9dC5zdGF0O2lmKG49bz94aTpsP3hpW2FdfHxUaShhLHt9KTooeGlbYV18fHt9KS5wcm90b3R5cGUpZm9yKGkgaW4gZSl7aWYodT1lW2ldLHI9dC5ub1RhcmdldEdldD8ocz1NaShuLGkpKSYmcy52YWx1ZTpuW2ldLCFqaShvP2k6YSsobD8iLiI6IiMiKStpLHQuZm9yY2VkKSYmdm9pZCAwIT09cil7aWYodHlwZW9mIHU9PXR5cGVvZiByKWNvbnRpbnVlO0lpKHUscil9KHQuc2hhbXx8ciYmci5zaGFtKSYmT2kodSwic2hhbSIsITApLFBpKG4saSx1LHQpfX0sVmk9c2ksTGk9YWksTmk9T2JqZWN0LmtleXN8fGZ1bmN0aW9uKHQpe3JldHVybiBWaSh0LExpKX0sVWk9cyx6aT1DLHFpPWgsSGk9dSxZaT1OaSxaaT1oaSxHaT1jLEtpPUR0LCRpPVAsV2k9T2JqZWN0LmFzc2lnbixYaT1PYmplY3QuZGVmaW5lUHJvcGVydHksSmk9emkoW10uY29uY2F0KSxRaT0hV2l8fEhpKChmdW5jdGlvbigpe2lmKFVpJiYxIT09V2koe2I6MX0sV2koWGkoe30sImEiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe1hpKHRoaXMsImIiLHt2YWx1ZTozLGVudW1lcmFibGU6ITF9KX19KSx7YjoyfSkpLmIpcmV0dXJuITA7dmFyIHQ9e30sZT17fSxuPVN5bWJvbCgpLGk9ImFiY2RlZmdoaWprbG1ub3BxcnN0IjtyZXR1cm4gdFtuXT03LGkuc3BsaXQoIiIpLmZvckVhY2goKGZ1bmN0aW9uKHQpe2VbdF09dH0pKSw3IT1XaSh7fSx0KVtuXXx8WWkoV2koe30sZSkpLmpvaW4oIiIpIT1pfSkpP2Z1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPUtpKHQpLGk9YXJndW1lbnRzLmxlbmd0aCxyPTEsdT1aaS5mLHM9R2kuZjtpPnI7KWZvcih2YXIgYSxvPSRpKGFyZ3VtZW50c1tyKytdKSxsPXU\/SmkoWWkobyksdShvKSk6WWkobyksaD1sLmxlbmd0aCxjPTA7aD5jOylhPWxbYysrXSxVaSYmIXFpKHMsbyxhKXx8KG5bYV09b1thXSk7cmV0dXJuIG59OldpLHRyPVFpO1JpKHt0YXJnZXQ6Ik9iamVjdCIsc3RhdDohMCxmb3JjZWQ6T2JqZWN0LmFzc2lnbiE9PXRyfSx7YXNzaWduOnRyfSk7dmFyIGVyPXt9O2VyW0t0KCJ0b1N0cmluZ1RhZyIpXT0ieiI7dmFyIG5yPWksaXI9IltvYmplY3Qgel0iPT09U3RyaW5nKGVyKSxycj1MLHVyPXcsc3I9S3QoInRvU3RyaW5nVGFnIiksYXI9bnIuT2JqZWN0LG9yPSJBcmd1bWVudHMiPT11cihmdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHN9KCkpLGxyPWlyP3VyOmZ1bmN0aW9uKHQpe3ZhciBlLG4saTtyZXR1cm4gdm9pZCAwPT09dD8iVW5kZWZpbmVkIjpudWxsPT09dD8iTnVsbCI6InN0cmluZyI9PXR5cGVvZihuPWZ1bmN0aW9uKHQsZSl7dHJ5e3JldHVybiB0W2VdfWNhdGNoKHQpe319KGU9YXIodCksc3IpKT9uOm9yP3VyKGUpOiJPYmplY3QiPT0oaT11cihlKSkmJnJyKGUuY2FsbGVlKT8iQXJndW1lbnRzIjppfSxocj1pLlN0cmluZyxjcj1mdW5jdGlvbih0KXtpZigiU3ltYm9sIj09PWxyKHQpKXRocm93IFR5cGVFcnJvcigiQ2Fubm90IGNvbnZlcnQgYSBTeW1ib2wgdmFsdWUgdG8gYSBzdHJpbmciKTtyZXR1cm4gaHIodCl9LGZyPXpuLHByPWNyLGRyPUksdnI9aS5SYW5nZUVycm9yLGdyPWZ1bmN0aW9uKHQpe3ZhciBlPXByKGRyKHRoaXMpKSxuPSIiLGk9ZnIodCk7aWYoaTwwfHxpPT0xLzApdGhyb3cgdnIoIldyb25nIG51bWJlciBvZiByZXBldGl0aW9ucyIpO2Zvcig7aT4wOyhpPj4+PTEpJiYoZSs9ZSkpMSZpJiYobis9ZSk7cmV0dXJuIG59O1JpKHt0YXJnZXQ6IlN0cmluZyIscHJvdG86ITB9LHtyZXBlYXQ6Z3J9KTt2YXIga3I9Qyx5cj1Lbixtcj1jcixicj1JLF9yPWtyKGdyKSxBcj1rcigiIi5zbGljZSksQ3I9TWF0aC5jZWlsLEVyPWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihlLG4saSl7dmFyIHIsdSxzPW1yKGJyKGUpKSxhPXlyKG4pLG89cy5sZW5ndGgsbD12b2lkIDA9PT1pPyIgIjptcihpKTtyZXR1cm4gYTw9b3x8IiI9PWw\/czooKHU9X3IobCxDcigocj1hLW8pL2wubGVuZ3RoKSkpLmxlbmd0aD5yJiYodT1Bcih1LDAscikpLHQ\/cyt1OnUrcyl9fSxGcj17c3RhcnQ6RXIoITEpLGVuZDpFcighMCl9LFNyPS9WZXJzaW9uXC8xMCg\/OlwuXGQrKXsxLDJ9KD86IFtcdy4vXSspPyg\/OiBNb2JpbGVcL1x3Kyk\/IFNhZmFyaVwvLy50ZXN0KEcpLHdyPUZyLnN0YXJ0O1JpKHt0YXJnZXQ6IlN0cmluZyIscHJvdG86ITAsZm9yY2VkOlNyfSx7cGFkU3RhcnQ6ZnVuY3Rpb24odCl7cmV0dXJuIHdyKHRoaXMsdCxhcmd1bWVudHMubGVuZ3RoPjE\/YXJndW1lbnRzWzFdOnZvaWQgMCl9fSk7dmFyIEJyPUZyLmVuZDtmdW5jdGlvbiBEcih0KXtyZXR1cm4gRHI9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I\/ZnVuY3Rpb24odCl7cmV0dXJuIHR5cGVvZiB0fTpmdW5jdGlvbih0KXtyZXR1cm4gdCYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmdC5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmdCE9PVN5bWJvbC5wcm90b3R5cGU\/InN5bWJvbCI6dHlwZW9mIHR9LERyKHQpfWZ1bmN0aW9uIHhyKHQsZSl7aWYoISh0IGluc3RhbmNlb2YgZSkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gTXIodCxlKXtmb3IodmFyIG49MDtuPGUubGVuZ3RoO24rKyl7dmFyIGk9ZVtuXTtpLmVudW1lcmFibGU9aS5lbnVtZXJhYmxlfHwhMSxpLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gaSYmKGkud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGkua2V5LGkpfX1mdW5jdGlvbiBPcih0LGUsbil7cmV0dXJuIGUmJk1yKHQucHJvdG90eXBlLGUpLG4mJk1yKHQsbiksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksdH1mdW5jdGlvbiBQcih0LGUpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBlJiZudWxsIT09ZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiIpO3QucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZSYmZS5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTp0LHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxlJiZJcih0LGUpfWZ1bmN0aW9uIFRyKHQpe3JldHVybiBUcj1PYmplY3Quc2V0UHJvdG90eXBlT2Y\/T2JqZWN0LmdldFByb3RvdHlwZU9mOmZ1bmN0aW9uKHQpe3JldHVybiB0Ll9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKHQpfSxUcih0KX1mdW5jdGlvbiBJcih0LGUpe3JldHVybiBJcj1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQuX19wcm90b19fPWUsdH0sSXIodCxlKX1mdW5jdGlvbiBqcih0LGUpe2lmKG51bGw9PXQpcmV0dXJue307dmFyIG4saSxyPWZ1bmN0aW9uKHQsZSl7aWYobnVsbD09dClyZXR1cm57fTt2YXIgbixpLHI9e30sdT1PYmplY3Qua2V5cyh0KTtmb3IoaT0wO2k8dS5sZW5ndGg7aSsrKW49dVtpXSxlLmluZGV4T2Yobik+PTB8fChyW25dPXRbbl0pO3JldHVybiByfSh0LGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciB1PU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHModCk7Zm9yKGk9MDtpPHUubGVuZ3RoO2krKyluPXVbaV0sZS5pbmRleE9mKG4pPj0wfHxPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwodCxuKSYmKHJbbl09dFtuXSl9cmV0dXJuIHJ9ZnVuY3Rpb24gUnIodCxlKXtpZihlJiYoIm9iamVjdCI9PXR5cGVvZiBlfHwiZnVuY3Rpb24iPT10eXBlb2YgZSkpcmV0dXJuIGU7aWYodm9pZCAwIT09ZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZCIpO3JldHVybiBmdW5jdGlvbih0KXtpZih2b2lkIDA9PT10KXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIHR9KHQpfWZ1bmN0aW9uIFZyKHQpe3ZhciBlPWZ1bmN0aW9uKCl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBSZWZsZWN0fHwhUmVmbGVjdC5jb25zdHJ1Y3QpcmV0dXJuITE7aWYoUmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3JldHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSwoZnVuY3Rpb24oKXt9KSkpLCEwfWNhdGNoKHQpe3JldHVybiExfX0oKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbixpPVRyKHQpO2lmKGUpe3ZhciByPVRyKHRoaXMpLmNvbnN0cnVjdG9yO249UmVmbGVjdC5jb25zdHJ1Y3QoaSxhcmd1bWVudHMscil9ZWxzZSBuPWkuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBScih0aGlzLG4pfX1mdW5jdGlvbiBMcih0LGUpe2Zvcig7IU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LGUpJiZudWxsIT09KHQ9VHIodCkpOyk7cmV0dXJuIHR9ZnVuY3Rpb24gTnIoKXtyZXR1cm4gTnI9InVuZGVmaW5lZCIhPXR5cGVvZiBSZWZsZWN0JiZSZWZsZWN0LmdldD9SZWZsZWN0LmdldDpmdW5jdGlvbih0LGUsbil7dmFyIGk9THIodCxlKTtpZihpKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGksZSk7cmV0dXJuIHIuZ2V0P3IuZ2V0LmNhbGwoYXJndW1lbnRzLmxlbmd0aDwzP3Q6bik6ci52YWx1ZX19LE5yLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBVcih0LGUsbixpKXtyZXR1cm4gVXI9InVuZGVmaW5lZCIhPXR5cGVvZiBSZWZsZWN0JiZSZWZsZWN0LnNldD9SZWZsZWN0LnNldDpmdW5jdGlvbih0LGUsbixpKXt2YXIgcix1PUxyKHQsZSk7aWYodSl7aWYoKHI9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih1LGUpKS5zZXQpcmV0dXJuIHIuc2V0LmNhbGwoaSxuKSwhMDtpZighci53cml0YWJsZSlyZXR1cm4hMX1pZihyPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoaSxlKSl7aWYoIXIud3JpdGFibGUpcmV0dXJuITE7ci52YWx1ZT1uLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShpLGUscil9ZWxzZSFmdW5jdGlvbih0LGUsbil7ZSBpbiB0P09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGUse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTp0W2VdPW59KGksZSxuKTtyZXR1cm4hMH0sVXIodCxlLG4saSl9ZnVuY3Rpb24genIodCxlLG4saSxyKXtpZighVXIodCxlLG4saXx8dCkmJnIpdGhyb3cgbmV3IEVycm9yKCJmYWlsZWQgdG8gc2V0IHByb3BlcnR5Iik7cmV0dXJuIG59ZnVuY3Rpb24gcXIodCxlKXtyZXR1cm4gZnVuY3Rpb24odCl7aWYoQXJyYXkuaXNBcnJheSh0KSlyZXR1cm4gdH0odCl8fGZ1bmN0aW9uKHQsZSl7dmFyIG49bnVsbD09dD9udWxsOiJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZ0W1N5bWJvbC5pdGVyYXRvcl18fHRbIkBAaXRlcmF0b3IiXTtpZihudWxsPT1uKXJldHVybjt2YXIgaSxyLHU9W10scz0hMCxhPSExO3RyeXtmb3Iobj1uLmNhbGwodCk7IShzPShpPW4ubmV4dCgpKS5kb25lKSYmKHUucHVzaChpLnZhbHVlKSwhZXx8dS5sZW5ndGghPT1lKTtzPSEwKTt9Y2F0Y2godCl7YT0hMCxyPXR9ZmluYWxseXt0cnl7c3x8bnVsbD09bi5yZXR1cm58fG4ucmV0dXJuKCl9ZmluYWxseXtpZihhKXRocm93IHJ9fXJldHVybiB1fSh0LGUpfHxmdW5jdGlvbih0LGUpe2lmKCF0KXJldHVybjtpZigic3RyaW5nIj09dHlwZW9mIHQpcmV0dXJuIEhyKHQsZSk7dmFyIG49T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpLnNsaWNlKDgsLTEpOyJPYmplY3QiPT09biYmdC5jb25zdHJ1Y3RvciYmKG49dC5jb25zdHJ1Y3Rvci5uYW1lKTtpZigiTWFwIj09PW58fCJTZXQiPT09bilyZXR1cm4gQXJyYXkuZnJvbSh0KTtpZigiQXJndW1lbnRzIj09PW58fC9eKD86VWl8SSludCg\/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk\/QXJyYXkkLy50ZXN0KG4pKXJldHVybiBIcih0LGUpfSh0LGUpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9ZnVuY3Rpb24gSHIodCxlKXsobnVsbD09ZXx8ZT50Lmxlbmd0aCkmJihlPXQubGVuZ3RoKTtmb3IodmFyIG49MCxpPW5ldyBBcnJheShlKTtuPGU7bisrKWlbbl09dFtuXTtyZXR1cm4gaX1SaSh7dGFyZ2V0OiJTdHJpbmciLHByb3RvOiEwLGZvcmNlZDpTcn0se3BhZEVuZDpmdW5jdGlvbih0KXtyZXR1cm4gQnIodGhpcyx0LGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwKX19KSxSaSh7Z2xvYmFsOiEwfSx7Z2xvYmFsVGhpczppfSk7dmFyIFlyPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXt4cih0aGlzLHQpLE9iamVjdC5hc3NpZ24odGhpcyx7aW5zZXJ0ZWQ6IiIscmF3SW5zZXJ0ZWQ6IiIsc2tpcDohMSx0YWlsU2hpZnQ6MH0sZSl9cmV0dXJuIE9yKHQsW3trZXk6ImFnZ3JlZ2F0ZSIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucmF3SW5zZXJ0ZWQrPXQucmF3SW5zZXJ0ZWQsdGhpcy5za2lwPXRoaXMuc2tpcHx8dC5za2lwLHRoaXMuaW5zZXJ0ZWQrPXQuaW5zZXJ0ZWQsdGhpcy50YWlsU2hpZnQrPXQudGFpbFNoaWZ0LHRoaXN9fSx7a2V5OiJvZmZzZXQiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRhaWxTaGlmdCt0aGlzLmluc2VydGVkLmxlbmd0aH19XSksdH0oKTtmdW5jdGlvbiBacih0KXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHR8fHQgaW5zdGFuY2VvZiBTdHJpbmd9dmFyIEdyPSJOT05FIixLcj0iTEVGVCIsJHI9IkZPUkNFX0xFRlQiLFdyPSJSSUdIVCIsWHI9IkZPUkNFX1JJR0hUIjtmdW5jdGlvbiBKcih0KXtyZXR1cm4gdC5yZXBsYWNlKC8oWy4qKz9ePSE6JHt9KCl8W1xdXC9cXF0pL2csIlxcJDEiKX1mdW5jdGlvbiBRcih0KXtyZXR1cm4gQXJyYXkuaXNBcnJheSh0KT90Olt0LG5ldyBZcl19ZnVuY3Rpb24gdHUodCxlKXtpZihlPT09dClyZXR1cm4hMDt2YXIgbixpPUFycmF5LmlzQXJyYXkoZSkscj1BcnJheS5pc0FycmF5KHQpO2lmKGkmJnIpe2lmKGUubGVuZ3RoIT10Lmxlbmd0aClyZXR1cm4hMTtmb3Iobj0wO248ZS5sZW5ndGg7bisrKWlmKCF0dShlW25dLHRbbl0pKXJldHVybiExO3JldHVybiEwfWlmKGkhPXIpcmV0dXJuITE7aWYoZSYmdCYmIm9iamVjdCI9PT1EcihlKSYmIm9iamVjdCI9PT1Ecih0KSl7dmFyIHU9ZSBpbnN0YW5jZW9mIERhdGUscz10IGluc3RhbmNlb2YgRGF0ZTtpZih1JiZzKXJldHVybiBlLmdldFRpbWUoKT09dC5nZXRUaW1lKCk7aWYodSE9cylyZXR1cm4hMTt2YXIgYT1lIGluc3RhbmNlb2YgUmVnRXhwLG89dCBpbnN0YW5jZW9mIFJlZ0V4cDtpZihhJiZvKXJldHVybiBlLnRvU3RyaW5nKCk9PXQudG9TdHJpbmcoKTtpZihhIT1vKXJldHVybiExO3ZhciBsPU9iamVjdC5rZXlzKGUpO2ZvcihuPTA7bjxsLmxlbmd0aDtuKyspaWYoIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LGxbbl0pKXJldHVybiExO2ZvcihuPTA7bjxsLmxlbmd0aDtuKyspaWYoIXR1KHRbbFtuXV0sZVtsW25dXSkpcmV0dXJuITE7cmV0dXJuITB9cmV0dXJuISghZXx8IXR8fCJmdW5jdGlvbiIhPXR5cGVvZiBlfHwiZnVuY3Rpb24iIT10eXBlb2YgdCkmJmUudG9TdHJpbmcoKT09PXQudG9TdHJpbmcoKX12YXIgZXU9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUsbixpLHIpe2Zvcih4cih0aGlzLHQpLHRoaXMudmFsdWU9ZSx0aGlzLmN1cnNvclBvcz1uLHRoaXMub2xkVmFsdWU9aSx0aGlzLm9sZFNlbGVjdGlvbj1yO3RoaXMudmFsdWUuc2xpY2UoMCx0aGlzLnN0YXJ0Q2hhbmdlUG9zKSE9PXRoaXMub2xkVmFsdWUuc2xpY2UoMCx0aGlzLnN0YXJ0Q2hhbmdlUG9zKTspLS10aGlzLm9sZFNlbGVjdGlvbi5zdGFydH1yZXR1cm4gT3IodCxbe2tleToic3RhcnRDaGFuZ2VQb3MiLGdldDpmdW5jdGlvbigpe3JldHVybiBNYXRoLm1pbih0aGlzLmN1cnNvclBvcyx0aGlzLm9sZFNlbGVjdGlvbi5zdGFydCl9fSx7a2V5OiJpbnNlcnRlZENvdW50IixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jdXJzb3JQb3MtdGhpcy5zdGFydENoYW5nZVBvc319LHtrZXk6Imluc2VydGVkIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy52YWx1ZS5zdWJzdHIodGhpcy5zdGFydENoYW5nZVBvcyx0aGlzLmluc2VydGVkQ291bnQpfX0se2tleToicmVtb3ZlZENvdW50IixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gTWF0aC5tYXgodGhpcy5vbGRTZWxlY3Rpb24uZW5kLXRoaXMuc3RhcnRDaGFuZ2VQb3N8fHRoaXMub2xkVmFsdWUubGVuZ3RoLXRoaXMudmFsdWUubGVuZ3RoLDApfX0se2tleToicmVtb3ZlZCIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub2xkVmFsdWUuc3Vic3RyKHRoaXMuc3RhcnRDaGFuZ2VQb3MsdGhpcy5yZW1vdmVkQ291bnQpfX0se2tleToiaGVhZCIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudmFsdWUuc3Vic3RyaW5nKDAsdGhpcy5zdGFydENoYW5nZVBvcyl9fSx7a2V5OiJ0YWlsIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy52YWx1ZS5zdWJzdHJpbmcodGhpcy5zdGFydENoYW5nZVBvcyt0aGlzLmluc2VydGVkQ291bnQpfX0se2tleToicmVtb3ZlRGlyZWN0aW9uIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4hdGhpcy5yZW1vdmVkQ291bnR8fHRoaXMuaW5zZXJ0ZWRDb3VudD9Hcjp0aGlzLm9sZFNlbGVjdGlvbi5lbmQhPT10aGlzLmN1cnNvclBvcyYmdGhpcy5vbGRTZWxlY3Rpb24uc3RhcnQhPT10aGlzLmN1cnNvclBvc3x8dGhpcy5vbGRTZWxlY3Rpb24uZW5kIT09dGhpcy5vbGRTZWxlY3Rpb24uc3RhcnQ\/S3I6V3J9fV0pLHR9KCksbnU9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0\/YXJndW1lbnRzWzBdOiIiLG49YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0\/YXJndW1lbnRzWzFdOjAsaT1hcmd1bWVudHMubGVuZ3RoPjI\/YXJndW1lbnRzWzJdOnZvaWQgMDt4cih0aGlzLHQpLHRoaXMudmFsdWU9ZSx0aGlzLmZyb209bix0aGlzLnN0b3A9aX1yZXR1cm4gT3IodCxbe2tleToidG9TdHJpbmciLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudmFsdWV9fSx7a2V5OiJleHRlbmQiLHZhbHVlOmZ1bmN0aW9uKHQpe3RoaXMudmFsdWUrPVN0cmluZyh0KX19LHtrZXk6ImFwcGVuZFRvIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdC5hcHBlbmQodGhpcy50b1N0cmluZygpLHt0YWlsOiEwfSkuYWdncmVnYXRlKHQuX2FwcGVuZFBsYWNlaG9sZGVyKCkpfX0se2tleToic3RhdGUiLGdldDpmdW5jdGlvbigpe3JldHVybnt2YWx1ZTp0aGlzLnZhbHVlLGZyb206dGhpcy5mcm9tLHN0b3A6dGhpcy5zdG9wfX0sc2V0OmZ1bmN0aW9uKHQpe09iamVjdC5hc3NpZ24odGhpcyx0KX19LHtrZXk6InVuc2hpZnQiLHZhbHVlOmZ1bmN0aW9uKHQpe2lmKCF0aGlzLnZhbHVlLmxlbmd0aHx8bnVsbCE9dCYmdGhpcy5mcm9tPj10KXJldHVybiIiO3ZhciBlPXRoaXMudmFsdWVbMF07cmV0dXJuIHRoaXMudmFsdWU9dGhpcy52YWx1ZS5zbGljZSgxKSxlfX0se2tleToic2hpZnQiLHZhbHVlOmZ1bmN0aW9uKCl7aWYoIXRoaXMudmFsdWUubGVuZ3RoKXJldHVybiIiO3ZhciB0PXRoaXMudmFsdWVbdGhpcy52YWx1ZS5sZW5ndGgtMV07cmV0dXJuIHRoaXMudmFsdWU9dGhpcy52YWx1ZS5zbGljZSgwLC0xKSx0fX1dKSx0fSgpO2Z1bmN0aW9uIGl1KHQpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp7fTtyZXR1cm4gbmV3IGl1LklucHV0TWFzayh0LGUpfXZhciBydT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7eHIodGhpcyx0KSx0aGlzLl92YWx1ZT0iIix0aGlzLl91cGRhdGUoT2JqZWN0LmFzc2lnbih7fSx0LkRFRkFVTFRTLGUpKSx0aGlzLmlzSW5pdGlhbGl6ZWQ9ITB9cmV0dXJuIE9yKHQsW3trZXk6InVwZGF0ZU9wdGlvbnMiLHZhbHVlOmZ1bmN0aW9uKHQpe09iamVjdC5rZXlzKHQpLmxlbmd0aCYmdGhpcy53aXRoVmFsdWVSZWZyZXNoKHRoaXMuX3VwZGF0ZS5iaW5kKHRoaXMsdCkpfX0se2tleToiX3VwZGF0ZSIsdmFsdWU6ZnVuY3Rpb24odCl7T2JqZWN0LmFzc2lnbih0aGlzLHQpfX0se2tleToic3RhdGUiLGdldDpmdW5jdGlvbigpe3JldHVybntfdmFsdWU6dGhpcy52YWx1ZX19LHNldDpmdW5jdGlvbih0KXt0aGlzLl92YWx1ZT10Ll92YWx1ZX19LHtrZXk6InJlc2V0Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuX3ZhbHVlPSIifX0se2tleToidmFsdWUiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl92YWx1ZX0sc2V0OmZ1bmN0aW9uKHQpe3RoaXMucmVzb2x2ZSh0KX19LHtrZXk6InJlc29sdmUiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnJlc2V0KCksdGhpcy5hcHBlbmQodCx7aW5wdXQ6ITB9LCIiKSx0aGlzLmRvQ29tbWl0KCksdGhpcy52YWx1ZX19LHtrZXk6InVubWFza2VkVmFsdWUiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnZhbHVlfSxzZXQ6ZnVuY3Rpb24odCl7dGhpcy5yZXNldCgpLHRoaXMuYXBwZW5kKHQse30sIiIpLHRoaXMuZG9Db21taXQoKX19LHtrZXk6InR5cGVkVmFsdWUiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmRvUGFyc2UodGhpcy52YWx1ZSl9LHNldDpmdW5jdGlvbih0KXt0aGlzLnZhbHVlPXRoaXMuZG9Gb3JtYXQodCl9fSx7a2V5OiJyYXdJbnB1dFZhbHVlIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5leHRyYWN0SW5wdXQoMCx0aGlzLnZhbHVlLmxlbmd0aCx7cmF3OiEwfSl9LHNldDpmdW5jdGlvbih0KXt0aGlzLnJlc2V0KCksdGhpcy5hcHBlbmQodCx7cmF3OiEwfSwiIiksdGhpcy5kb0NvbW1pdCgpfX0se2tleToiaXNDb21wbGV0ZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuITB9fSx7a2V5OiJpc0ZpbGxlZCIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXNDb21wbGV0ZX19LHtrZXk6Im5lYXJlc3RJbnB1dFBvcyIsdmFsdWU6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdH19LHtrZXk6ImV4dHJhY3RJbnB1dCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06MCxlPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp0aGlzLnZhbHVlLmxlbmd0aDtyZXR1cm4gdGhpcy52YWx1ZS5zbGljZSh0LGUpfX0se2tleToiZXh0cmFjdFRhaWwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0\/YXJndW1lbnRzWzBdOjAsZT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06dGhpcy52YWx1ZS5sZW5ndGg7cmV0dXJuIG5ldyBudSh0aGlzLmV4dHJhY3RJbnB1dCh0LGUpLHQpfX0se2tleToiYXBwZW5kVGFpbCIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIFpyKHQpJiYodD1uZXcgbnUoU3RyaW5nKHQpKSksdC5hcHBlbmRUbyh0aGlzKX19LHtrZXk6Il9hcHBlbmRDaGFyUmF3Iix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdD8odGhpcy5fdmFsdWUrPXQsbmV3IFlyKHtpbnNlcnRlZDp0LHJhd0luc2VydGVkOnR9KSk6bmV3IFlyfX0se2tleToiX2FwcGVuZENoYXIiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlLG49YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0\/YXJndW1lbnRzWzFdOnt9LGk9YXJndW1lbnRzLmxlbmd0aD4yP2FyZ3VtZW50c1syXTp2b2lkIDAscj10aGlzLnN0YXRlLHU9UXIodGhpcy5kb1ByZXBhcmUodCxuKSkscz1xcih1LDIpO2lmKHQ9c1swXSwoZT0oZT1zWzFdKS5hZ2dyZWdhdGUodGhpcy5fYXBwZW5kQ2hhclJhdyh0LG4pKSkuaW5zZXJ0ZWQpe3ZhciBhLG89ITEhPT10aGlzLmRvVmFsaWRhdGUobik7aWYobyYmbnVsbCE9aSl7dmFyIGw9dGhpcy5zdGF0ZTshMD09PXRoaXMub3ZlcndyaXRlJiYoYT1pLnN0YXRlLGkudW5zaGlmdCh0aGlzLnZhbHVlLmxlbmd0aCkpO3ZhciBoPXRoaXMuYXBwZW5kVGFpbChpKTsobz1oLnJhd0luc2VydGVkPT09aS50b1N0cmluZygpKSYmaC5pbnNlcnRlZHx8InNoaWZ0IiE9PXRoaXMub3ZlcndyaXRlfHwodGhpcy5zdGF0ZT1sLGE9aS5zdGF0ZSxpLnNoaWZ0KCksbz0oaD10aGlzLmFwcGVuZFRhaWwoaSkpLnJhd0luc2VydGVkPT09aS50b1N0cmluZygpKSxvJiZoLmluc2VydGVkJiYodGhpcy5zdGF0ZT1sKX1vfHwoZT1uZXcgWXIsdGhpcy5zdGF0ZT1yLGkmJmEmJihpLnN0YXRlPWEpKX1yZXR1cm4gZX19LHtrZXk6Il9hcHBlbmRQbGFjZWhvbGRlciIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IFlyfX0se2tleToiX2FwcGVuZEVhZ2VyIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBuZXcgWXJ9fSx7a2V5OiJhcHBlbmQiLHZhbHVlOmZ1bmN0aW9uKHQsZSxuKXtpZighWnIodCkpdGhyb3cgbmV3IEVycm9yKCJ2YWx1ZSBzaG91bGQgYmUgc3RyaW5nIik7dmFyIGk9bmV3IFlyLHI9WnIobik\/bmV3IG51KFN0cmluZyhuKSk6bjtlJiZlLnRhaWwmJihlLl9iZWZvcmVUYWlsU3RhdGU9dGhpcy5zdGF0ZSk7Zm9yKHZhciB1PTA7dTx0Lmxlbmd0aDsrK3UpaS5hZ2dyZWdhdGUodGhpcy5fYXBwZW5kQ2hhcih0W3VdLGUscikpO3JldHVybiBudWxsIT1yJiYoaS50YWlsU2hpZnQrPXRoaXMuYXBwZW5kVGFpbChyKS50YWlsU2hpZnQpLHRoaXMuZWFnZXImJm51bGwhPWUmJmUuaW5wdXQmJnQmJmkuYWdncmVnYXRlKHRoaXMuX2FwcGVuZEVhZ2VyKCkpLGl9fSx7a2V5OiJyZW1vdmUiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0\/YXJndW1lbnRzWzBdOjAsZT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06dGhpcy52YWx1ZS5sZW5ndGg7cmV0dXJuIHRoaXMuX3ZhbHVlPXRoaXMudmFsdWUuc2xpY2UoMCx0KSt0aGlzLnZhbHVlLnNsaWNlKGUpLG5ldyBZcn19LHtrZXk6IndpdGhWYWx1ZVJlZnJlc2giLHZhbHVlOmZ1bmN0aW9uKHQpe2lmKHRoaXMuX3JlZnJlc2hpbmd8fCF0aGlzLmlzSW5pdGlhbGl6ZWQpcmV0dXJuIHQoKTt0aGlzLl9yZWZyZXNoaW5nPSEwO3ZhciBlPXRoaXMucmF3SW5wdXRWYWx1ZSxuPXRoaXMudmFsdWUsaT10KCk7cmV0dXJuIHRoaXMucmF3SW5wdXRWYWx1ZT1lLHRoaXMudmFsdWUmJnRoaXMudmFsdWUhPT1uJiYwPT09bi5pbmRleE9mKHRoaXMudmFsdWUpJiZ0aGlzLmFwcGVuZChuLnNsaWNlKHRoaXMudmFsdWUubGVuZ3RoKSx7fSwiIiksZGVsZXRlIHRoaXMuX3JlZnJlc2hpbmcsaX19LHtrZXk6InJ1bklzb2xhdGVkIix2YWx1ZTpmdW5jdGlvbih0KXtpZih0aGlzLl9pc29sYXRlZHx8IXRoaXMuaXNJbml0aWFsaXplZClyZXR1cm4gdCh0aGlzKTt0aGlzLl9pc29sYXRlZD0hMDt2YXIgZT10aGlzLnN0YXRlLG49dCh0aGlzKTtyZXR1cm4gdGhpcy5zdGF0ZT1lLGRlbGV0ZSB0aGlzLl9pc29sYXRlZCxufX0se2tleToiZG9QcmVwYXJlIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06e307cmV0dXJuIHRoaXMucHJlcGFyZT90aGlzLnByZXBhcmUodCx0aGlzLGUpOnR9fSx7a2V5OiJkb1ZhbGlkYXRlIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4oIXRoaXMudmFsaWRhdGV8fHRoaXMudmFsaWRhdGUodGhpcy52YWx1ZSx0aGlzLHQpKSYmKCF0aGlzLnBhcmVudHx8dGhpcy5wYXJlbnQuZG9WYWxpZGF0ZSh0KSl9fSx7a2V5OiJkb0NvbW1pdCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmNvbW1pdCYmdGhpcy5jb21taXQodGhpcy52YWx1ZSx0aGlzKX19LHtrZXk6ImRvRm9ybWF0Iix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5mb3JtYXQ\/dGhpcy5mb3JtYXQodCx0aGlzKTp0fX0se2tleToiZG9QYXJzZSIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucGFyc2U\/dGhpcy5wYXJzZSh0LHRoaXMpOnR9fSx7a2V5OiJzcGxpY2UiLHZhbHVlOmZ1bmN0aW9uKHQsZSxuLGkpe3ZhciByLHU9dCtlLHM9dGhpcy5leHRyYWN0VGFpbCh1KTt0aGlzLmVhZ2VyJiYoaT1mdW5jdGlvbih0KXtzd2l0Y2godCl7Y2FzZSBLcjpyZXR1cm4gJHI7Y2FzZSBXcjpyZXR1cm4gWHI7ZGVmYXVsdDpyZXR1cm4gdH19KGkpLHI9dGhpcy5leHRyYWN0SW5wdXQoMCx1LHtyYXc6ITB9KSk7dmFyIGE9dGhpcy5uZWFyZXN0SW5wdXRQb3ModCxlPjEmJjAhPT10JiYhdGhpcy5lYWdlcj9HcjppKSxvPW5ldyBZcih7dGFpbFNoaWZ0OmEtdH0pLmFnZ3JlZ2F0ZSh0aGlzLnJlbW92ZShhKSk7aWYodGhpcy5lYWdlciYmaSE9PUdyJiZyPT09dGhpcy5yYXdJbnB1dFZhbHVlKWlmKGk9PT0kcilmb3IodmFyIGw7cj09PXRoaXMucmF3SW5wdXRWYWx1ZSYmKGw9dGhpcy52YWx1ZS5sZW5ndGgpOylvLmFnZ3JlZ2F0ZShuZXcgWXIoe3RhaWxTaGlmdDotMX0pKS5hZ2dyZWdhdGUodGhpcy5yZW1vdmUobC0xKSk7ZWxzZSBpPT09WHImJnMudW5zaGlmdCgpO3JldHVybiBvLmFnZ3JlZ2F0ZSh0aGlzLmFwcGVuZChuLHtpbnB1dDohMH0scykpfX0se2tleToibWFza0VxdWFscyIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMubWFzaz09PXR9fV0pLHR9KCk7ZnVuY3Rpb24gdXUodCl7aWYobnVsbD09dCl0aHJvdyBuZXcgRXJyb3IoIm1hc2sgcHJvcGVydHkgc2hvdWxkIGJlIGRlZmluZWQiKTtyZXR1cm4gdCBpbnN0YW5jZW9mIFJlZ0V4cD9pdS5NYXNrZWRSZWdFeHA6WnIodCk\/aXUuTWFza2VkUGF0dGVybjp0IGluc3RhbmNlb2YgRGF0ZXx8dD09PURhdGU\/aXUuTWFza2VkRGF0ZTp0IGluc3RhbmNlb2YgTnVtYmVyfHwibnVtYmVyIj09dHlwZW9mIHR8fHQ9PT1OdW1iZXI\/aXUuTWFza2VkTnVtYmVyOkFycmF5LmlzQXJyYXkodCl8fHQ9PT1BcnJheT9pdS5NYXNrZWREeW5hbWljOml1Lk1hc2tlZCYmdC5wcm90b3R5cGUgaW5zdGFuY2VvZiBpdS5NYXNrZWQ\/dDp0IGluc3RhbmNlb2YgaXUuTWFza2VkP3QuY29uc3RydWN0b3I6dCBpbnN0YW5jZW9mIEZ1bmN0aW9uP2l1Lk1hc2tlZEZ1bmN0aW9uOihjb25zb2xlLndhcm4oIk1hc2sgbm90IGZvdW5kIGZvciBtYXNrIix0KSxpdS5NYXNrZWQpfWZ1bmN0aW9uIHN1KHQpe2lmKGl1Lk1hc2tlZCYmdCBpbnN0YW5jZW9mIGl1Lk1hc2tlZClyZXR1cm4gdDt2YXIgZT0odD1PYmplY3QuYXNzaWduKHt9LHQpKS5tYXNrO2lmKGl1Lk1hc2tlZCYmZSBpbnN0YW5jZW9mIGl1Lk1hc2tlZClyZXR1cm4gZTt2YXIgbj11dShlKTtpZighbil0aHJvdyBuZXcgRXJyb3IoIk1hc2tlZCBjbGFzcyBpcyBub3QgZm91bmQgZm9yIHByb3ZpZGVkIG1hc2ssIGFwcHJvcHJpYXRlIG1vZHVsZSBuZWVkcyB0byBiZSBpbXBvcnQgbWFudWFsbHkgYmVmb3JlIGNyZWF0aW5nIG1hc2suIik7cmV0dXJuIG5ldyBuKHQpfXJ1LkRFRkFVTFRTPXtmb3JtYXQ6ZnVuY3Rpb24odCl7cmV0dXJuIHR9LHBhcnNlOmZ1bmN0aW9uKHQpe3JldHVybiB0fX0saXUuTWFza2VkPXJ1LGl1LmNyZWF0ZU1hc2s9c3U7dmFyIGF1PVsibWFzayJdLG91PXswOi9cZC8sYTovW1x1MDA0MS1cdTAwNUFcdTAwNjEtXHUwMDdBXHUwMEFBXHUwMEI1XHUwMEJBXHUwMEMwLVx1MDBENlx1MDBEOC1cdTAwRjZcdTAwRjgtXHUwMkMxXHUwMkM2LVx1MDJEMVx1MDJFMC1cdTAyRTRcdTAyRUNcdTAyRUVcdTAzNzAtXHUwMzc0XHUwMzc2XHUwMzc3XHUwMzdBLVx1MDM3RFx1MDM4Nlx1MDM4OC1cdTAzOEFcdTAzOENcdTAzOEUtXHUwM0ExXHUwM0EzLVx1MDNGNVx1MDNGNy1cdTA0ODFcdTA0OEEtXHUwNTI3XHUwNTMxLVx1MDU1Nlx1MDU1OVx1MDU2MS1cdTA1ODdcdTA1RDAtXHUwNUVBXHUwNUYwLVx1MDVGMlx1MDYyMC1cdTA2NEFcdTA2NkVcdTA2NkZcdTA2NzEtXHUwNkQzXHUwNkQ1XHUwNkU1XHUwNkU2XHUwNkVFXHUwNkVGXHUwNkZBLVx1MDZGQ1x1MDZGRlx1MDcxMFx1MDcxMi1cdTA3MkZcdTA3NEQtXHUwN0E1XHUwN0IxXHUwN0NBLVx1MDdFQVx1MDdGNFx1MDdGNVx1MDdGQVx1MDgwMC1cdTA4MTVcdTA4MUFcdTA4MjRcdTA4MjhcdTA4NDAtXHUwODU4XHUwOEEwXHUwOEEyLVx1MDhBQ1x1MDkwNC1cdTA5MzlcdTA5M0RcdTA5NTBcdTA5NTgtXHUwOTYxXHUwOTcxLVx1MDk3N1x1MDk3OS1cdTA5N0ZcdTA5ODUtXHUwOThDXHUwOThGXHUwOTkwXHUwOTkzLVx1MDlBOFx1MDlBQS1cdTA5QjBcdTA5QjJcdTA5QjYtXHUwOUI5XHUwOUJEXHUwOUNFXHUwOURDXHUwOUREXHUwOURGLVx1MDlFMVx1MDlGMFx1MDlGMVx1MEEwNS1cdTBBMEFcdTBBMEZcdTBBMTBcdTBBMTMtXHUwQTI4XHUwQTJBLVx1MEEzMFx1MEEzMlx1MEEzM1x1MEEzNVx1MEEzNlx1MEEzOFx1MEEzOVx1MEE1OS1cdTBBNUNcdTBBNUVcdTBBNzItXHUwQTc0XHUwQTg1LVx1MEE4RFx1MEE4Ri1cdTBBOTFcdTBBOTMtXHUwQUE4XHUwQUFBLVx1MEFCMFx1MEFCMlx1MEFCM1x1MEFCNS1cdTBBQjlcdTBBQkRcdTBBRDBcdTBBRTBcdTBBRTFcdTBCMDUtXHUwQjBDXHUwQjBGXHUwQjEwXHUwQjEzLVx1MEIyOFx1MEIyQS1cdTBCMzBcdTBCMzJcdTBCMzNcdTBCMzUtXHUwQjM5XHUwQjNEXHUwQjVDXHUwQjVEXHUwQjVGLVx1MEI2MVx1MEI3MVx1MEI4M1x1MEI4NS1cdTBCOEFcdTBCOEUtXHUwQjkwXHUwQjkyLVx1MEI5NVx1MEI5OVx1MEI5QVx1MEI5Q1x1MEI5RVx1MEI5Rlx1MEJBM1x1MEJBNFx1MEJBOC1cdTBCQUFcdTBCQUUtXHUwQkI5XHUwQkQwXHUwQzA1LVx1MEMwQ1x1MEMwRS1cdTBDMTBcdTBDMTItXHUwQzI4XHUwQzJBLVx1MEMzM1x1MEMzNS1cdTBDMzlcdTBDM0RcdTBDNThcdTBDNTlcdTBDNjBcdTBDNjFcdTBDODUtXHUwQzhDXHUwQzhFLVx1MEM5MFx1MEM5Mi1cdTBDQThcdTBDQUEtXHUwQ0IzXHUwQ0I1LVx1MENCOVx1MENCRFx1MENERVx1MENFMFx1MENFMVx1MENGMVx1MENGMlx1MEQwNS1cdTBEMENcdTBEMEUtXHUwRDEwXHUwRDEyLVx1MEQzQVx1MEQzRFx1MEQ0RVx1MEQ2MFx1MEQ2MVx1MEQ3QS1cdTBEN0ZcdTBEODUtXHUwRDk2XHUwRDlBLVx1MERCMVx1MERCMy1cdTBEQkJcdTBEQkRcdTBEQzAtXHUwREM2XHUwRTAxLVx1MEUzMFx1MEUzMlx1MEUzM1x1MEU0MC1cdTBFNDZcdTBFODFcdTBFODJcdTBFODRcdTBFODdcdTBFODhcdTBFOEFcdTBFOERcdTBFOTQtXHUwRTk3XHUwRTk5LVx1MEU5Rlx1MEVBMS1cdTBFQTNcdTBFQTVcdTBFQTdcdTBFQUFcdTBFQUJcdTBFQUQtXHUwRUIwXHUwRUIyXHUwRUIzXHUwRUJEXHUwRUMwLVx1MEVDNFx1MEVDNlx1MEVEQy1cdTBFREZcdTBGMDBcdTBGNDAtXHUwRjQ3XHUwRjQ5LVx1MEY2Q1x1MEY4OC1cdTBGOENcdTEwMDAtXHUxMDJBXHUxMDNGXHUxMDUwLVx1MTA1NVx1MTA1QS1cdTEwNURcdTEwNjFcdTEwNjVcdTEwNjZcdTEwNkUtXHUxMDcwXHUxMDc1LVx1MTA4MVx1MTA4RVx1MTBBMC1cdTEwQzVcdTEwQzdcdTEwQ0RcdTEwRDAtXHUxMEZBXHUxMEZDLVx1MTI0OFx1MTI0QS1cdTEyNERcdTEyNTAtXHUxMjU2XHUxMjU4XHUxMjVBLVx1MTI1RFx1MTI2MC1cdTEyODhcdTEyOEEtXHUxMjhEXHUxMjkwLVx1MTJCMFx1MTJCMi1cdTEyQjVcdTEyQjgtXHUxMkJFXHUxMkMwXHUxMkMyLVx1MTJDNVx1MTJDOC1cdTEyRDZcdTEyRDgtXHUxMzEwXHUxMzEyLVx1MTMxNVx1MTMxOC1cdTEzNUFcdTEzODAtXHUxMzhGXHUxM0EwLVx1MTNGNFx1MTQwMS1cdTE2NkNcdTE2NkYtXHUxNjdGXHUxNjgxLVx1MTY5QVx1MTZBMC1cdTE2RUFcdTE3MDAtXHUxNzBDXHUxNzBFLVx1MTcxMVx1MTcyMC1cdTE3MzFcdTE3NDAtXHUxNzUxXHUxNzYwLVx1MTc2Q1x1MTc2RS1cdTE3NzBcdTE3ODAtXHUxN0IzXHUxN0Q3XHUxN0RDXHUxODIwLVx1MTg3N1x1MTg4MC1cdTE4QThcdTE4QUFcdTE4QjAtXHUxOEY1XHUxOTAwLVx1MTkxQ1x1MTk1MC1cdTE5NkRcdTE5NzAtXHUxOTc0XHUxOTgwLVx1MTlBQlx1MTlDMS1cdTE5QzdcdTFBMDAtXHUxQTE2XHUxQTIwLVx1MUE1NFx1MUFBN1x1MUIwNS1cdTFCMzNcdTFCNDUtXHUxQjRCXHUxQjgzLVx1MUJBMFx1MUJBRVx1MUJBRlx1MUJCQS1cdTFCRTVcdTFDMDAtXHUxQzIzXHUxQzRELVx1MUM0Rlx1MUM1QS1cdTFDN0RcdTFDRTktXHUxQ0VDXHUxQ0VFLVx1MUNGMVx1MUNGNVx1MUNGNlx1MUQwMC1cdTFEQkZcdTFFMDAtXHUxRjE1XHUxRjE4LVx1MUYxRFx1MUYyMC1cdTFGNDVcdTFGNDgtXHUxRjREXHUxRjUwLVx1MUY1N1x1MUY1OVx1MUY1Qlx1MUY1RFx1MUY1Ri1cdTFGN0RcdTFGODAtXHUxRkI0XHUxRkI2LVx1MUZCQ1x1MUZCRVx1MUZDMi1cdTFGQzRcdTFGQzYtXHUxRkNDXHUxRkQwLVx1MUZEM1x1MUZENi1cdTFGREJcdTFGRTAtXHUxRkVDXHUxRkYyLVx1MUZGNFx1MUZGNi1cdTFGRkNcdTIwNzFcdTIwN0ZcdTIwOTAtXHUyMDlDXHUyMTAyXHUyMTA3XHUyMTBBLVx1MjExM1x1MjExNVx1MjExOS1cdTIxMURcdTIxMjRcdTIxMjZcdTIxMjhcdTIxMkEtXHUyMTJEXHUyMTJGLVx1MjEzOVx1MjEzQy1cdTIxM0ZcdTIxNDUtXHUyMTQ5XHUyMTRFXHUyMTgzXHUyMTg0XHUyQzAwLVx1MkMyRVx1MkMzMC1cdTJDNUVcdTJDNjAtXHUyQ0U0XHUyQ0VCLVx1MkNFRVx1MkNGMlx1MkNGM1x1MkQwMC1cdTJEMjVcdTJEMjdcdTJEMkRcdTJEMzAtXHUyRDY3XHUyRDZGXHUyRDgwLVx1MkQ5Nlx1MkRBMC1cdTJEQTZcdTJEQTgtXHUyREFFXHUyREIwLVx1MkRCNlx1MkRCOC1cdTJEQkVcdTJEQzAtXHUyREM2XHUyREM4LVx1MkRDRVx1MkREMC1cdTJERDZcdTJERDgtXHUyRERFXHUyRTJGXHUzMDA1XHUzMDA2XHUzMDMxLVx1MzAzNVx1MzAzQlx1MzAzQ1x1MzA0MS1cdTMwOTZcdTMwOUQtXHUzMDlGXHUzMEExLVx1MzBGQVx1MzBGQy1cdTMwRkZcdTMxMDUtXHUzMTJEXHUzMTMxLVx1MzE4RVx1MzFBMC1cdTMxQkFcdTMxRjAtXHUzMUZGXHUzNDAwLVx1NERCNVx1NEUwMC1cdTlGQ0NcdUEwMDAtXHVBNDhDXHVBNEQwLVx1QTRGRFx1QTUwMC1cdUE2MENcdUE2MTAtXHVBNjFGXHVBNjJBXHVBNjJCXHVBNjQwLVx1QTY2RVx1QTY3Ri1cdUE2OTdcdUE2QTAtXHVBNkU1XHVBNzE3LVx1QTcxRlx1QTcyMi1cdUE3ODhcdUE3OEItXHVBNzhFXHVBNzkwLVx1QTc5M1x1QTdBMC1cdUE3QUFcdUE3RjgtXHVBODAxXHVBODAzLVx1QTgwNVx1QTgwNy1cdUE4MEFcdUE4MEMtXHVBODIyXHVBODQwLVx1QTg3M1x1QTg4Mi1cdUE4QjNcdUE4RjItXHVBOEY3XHVBOEZCXHVBOTBBLVx1QTkyNVx1QTkzMC1cdUE5NDZcdUE5NjAtXHVBOTdDXHVBOTg0LVx1QTlCMlx1QTlDRlx1QUEwMC1cdUFBMjhcdUFBNDAtXHVBQTQyXHVBQTQ0LVx1QUE0Qlx1QUE2MC1cdUFBNzZcdUFBN0FcdUFBODAtXHVBQUFGXHVBQUIxXHVBQUI1XHVBQUI2XHVBQUI5LVx1QUFCRFx1QUFDMFx1QUFDMlx1QUFEQi1cdUFBRERcdUFBRTAtXHVBQUVBXHVBQUYyLVx1QUFGNFx1QUIwMS1cdUFCMDZcdUFCMDktXHVBQjBFXHVBQjExLVx1QUIxNlx1QUIyMC1cdUFCMjZcdUFCMjgtXHVBQjJFXHVBQkMwLVx1QUJFMlx1QUMwMC1cdUQ3QTNcdUQ3QjAtXHVEN0M2XHVEN0NCLVx1RDdGQlx1RjkwMC1cdUZBNkRcdUZBNzAtXHVGQUQ5XHVGQjAwLVx1RkIwNlx1RkIxMy1cdUZCMTdcdUZCMURcdUZCMUYtXHVGQjI4XHVGQjJBLVx1RkIzNlx1RkIzOC1cdUZCM0NcdUZCM0VcdUZCNDBcdUZCNDFcdUZCNDNcdUZCNDRcdUZCNDYtXHVGQkIxXHVGQkQzLVx1RkQzRFx1RkQ1MC1cdUZEOEZcdUZEOTItXHVGREM3XHVGREYwLVx1RkRGQlx1RkU3MC1cdUZFNzRcdUZFNzYtXHVGRUZDXHVGRjIxLVx1RkYzQVx1RkY0MS1cdUZGNUFcdUZGNjYtXHVGRkJFXHVGRkMyLVx1RkZDN1x1RkZDQS1cdUZGQ0ZcdUZGRDItXHVGRkQ3XHVGRkRBLVx1RkZEQ10vLCIqIjovLi99LGx1PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXt4cih0aGlzLHQpO3ZhciBuPWUubWFzayxpPWpyKGUsYXUpO3RoaXMubWFza2VkPXN1KHttYXNrOm59KSxPYmplY3QuYXNzaWduKHRoaXMsaSl9cmV0dXJuIE9yKHQsW3trZXk6InJlc2V0Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuaXNGaWxsZWQ9ITEsdGhpcy5tYXNrZWQucmVzZXQoKX19LHtrZXk6InJlbW92ZSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06MCxlPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp0aGlzLnZhbHVlLmxlbmd0aDtyZXR1cm4gMD09PXQmJmU+PTE\/KHRoaXMuaXNGaWxsZWQ9ITEsdGhpcy5tYXNrZWQucmVtb3ZlKHQsZSkpOm5ldyBZcn19LHtrZXk6InZhbHVlIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tYXNrZWQudmFsdWV8fCh0aGlzLmlzRmlsbGVkJiYhdGhpcy5pc09wdGlvbmFsP3RoaXMucGxhY2Vob2xkZXJDaGFyOiIiKX19LHtrZXk6InVubWFza2VkVmFsdWUiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1hc2tlZC51bm1hc2tlZFZhbHVlfX0se2tleToiaXNDb21wbGV0ZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEJvb2xlYW4odGhpcy5tYXNrZWQudmFsdWUpfHx0aGlzLmlzT3B0aW9uYWx9fSx7a2V5OiJfYXBwZW5kQ2hhciIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0\/YXJndW1lbnRzWzFdOnt9O2lmKHRoaXMuaXNGaWxsZWQpcmV0dXJuIG5ldyBZcjt2YXIgbj10aGlzLm1hc2tlZC5zdGF0ZSxpPXRoaXMubWFza2VkLl9hcHBlbmRDaGFyKHQsZSk7cmV0dXJuIGkuaW5zZXJ0ZWQmJiExPT09dGhpcy5kb1ZhbGlkYXRlKGUpJiYoaS5pbnNlcnRlZD1pLnJhd0luc2VydGVkPSIiLHRoaXMubWFza2VkLnN0YXRlPW4pLGkuaW5zZXJ0ZWR8fHRoaXMuaXNPcHRpb25hbHx8dGhpcy5sYXp5fHxlLmlucHV0fHwoaS5pbnNlcnRlZD10aGlzLnBsYWNlaG9sZGVyQ2hhciksaS5za2lwPSFpLmluc2VydGVkJiYhdGhpcy5pc09wdGlvbmFsLHRoaXMuaXNGaWxsZWQ9Qm9vbGVhbihpLmluc2VydGVkKSxpfX0se2tleToiYXBwZW5kIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0O3JldHVybih0PXRoaXMubWFza2VkKS5hcHBlbmQuYXBwbHkodCxhcmd1bWVudHMpfX0se2tleToiX2FwcGVuZFBsYWNlaG9sZGVyIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PW5ldyBZcjtyZXR1cm4gdGhpcy5pc0ZpbGxlZHx8dGhpcy5pc09wdGlvbmFsfHwodGhpcy5pc0ZpbGxlZD0hMCx0Lmluc2VydGVkPXRoaXMucGxhY2Vob2xkZXJDaGFyKSx0fX0se2tleToiX2FwcGVuZEVhZ2VyIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBuZXcgWXJ9fSx7a2V5OiJleHRyYWN0VGFpbCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdDtyZXR1cm4odD10aGlzLm1hc2tlZCkuZXh0cmFjdFRhaWwuYXBwbHkodCxhcmd1bWVudHMpfX0se2tleToiYXBwZW5kVGFpbCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdDtyZXR1cm4odD10aGlzLm1hc2tlZCkuYXBwZW5kVGFpbC5hcHBseSh0LGFyZ3VtZW50cyl9fSx7a2V5OiJleHRyYWN0SW5wdXQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0\/YXJndW1lbnRzWzBdOjAsZT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06dGhpcy52YWx1ZS5sZW5ndGgsbj1hcmd1bWVudHMubGVuZ3RoPjI\/YXJndW1lbnRzWzJdOnZvaWQgMDtyZXR1cm4gdGhpcy5tYXNrZWQuZXh0cmFjdElucHV0KHQsZSxuKX19LHtrZXk6Im5lYXJlc3RJbnB1dFBvcyIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0\/YXJndW1lbnRzWzFdOkdyLG49MCxpPXRoaXMudmFsdWUubGVuZ3RoLHI9TWF0aC5taW4oTWF0aC5tYXgodCxuKSxpKTtzd2l0Y2goZSl7Y2FzZSBLcjpjYXNlICRyOnJldHVybiB0aGlzLmlzQ29tcGxldGU\/cjpuO2Nhc2UgV3I6Y2FzZSBYcjpyZXR1cm4gdGhpcy5pc0NvbXBsZXRlP3I6aTtkZWZhdWx0OnJldHVybiByfX19LHtrZXk6ImRvVmFsaWRhdGUiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQsZTtyZXR1cm4odD10aGlzLm1hc2tlZCkuZG9WYWxpZGF0ZS5hcHBseSh0LGFyZ3VtZW50cykmJighdGhpcy5wYXJlbnR8fChlPXRoaXMucGFyZW50KS5kb1ZhbGlkYXRlLmFwcGx5KGUsYXJndW1lbnRzKSl9fSx7a2V5OiJkb0NvbW1pdCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLm1hc2tlZC5kb0NvbW1pdCgpfX0se2tleToic3RhdGUiLGdldDpmdW5jdGlvbigpe3JldHVybnttYXNrZWQ6dGhpcy5tYXNrZWQuc3RhdGUsaXNGaWxsZWQ6dGhpcy5pc0ZpbGxlZH19LHNldDpmdW5jdGlvbih0KXt0aGlzLm1hc2tlZC5zdGF0ZT10Lm1hc2tlZCx0aGlzLmlzRmlsbGVkPXQuaXNGaWxsZWR9fV0pLHR9KCksaHU9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe3hyKHRoaXMsdCksT2JqZWN0LmFzc2lnbih0aGlzLGUpLHRoaXMuX3ZhbHVlPSIiLHRoaXMuaXNGaXhlZD0hMH1yZXR1cm4gT3IodCxbe2tleToidmFsdWUiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl92YWx1ZX19LHtrZXk6InVubWFza2VkVmFsdWUiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmlzVW5tYXNraW5nP3RoaXMudmFsdWU6IiJ9fSx7a2V5OiJyZXNldCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLl9pc1Jhd0lucHV0PSExLHRoaXMuX3ZhbHVlPSIifX0se2tleToicmVtb3ZlIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTowLGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0\/YXJndW1lbnRzWzFdOnRoaXMuX3ZhbHVlLmxlbmd0aDtyZXR1cm4gdGhpcy5fdmFsdWU9dGhpcy5fdmFsdWUuc2xpY2UoMCx0KSt0aGlzLl92YWx1ZS5zbGljZShlKSx0aGlzLl92YWx1ZXx8KHRoaXMuX2lzUmF3SW5wdXQ9ITEpLG5ldyBZcn19LHtrZXk6Im5lYXJlc3RJbnB1dFBvcyIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0\/YXJndW1lbnRzWzFdOkdyLG49MCxpPXRoaXMuX3ZhbHVlLmxlbmd0aDtzd2l0Y2goZSl7Y2FzZSBLcjpjYXNlICRyOnJldHVybiBuO2RlZmF1bHQ6cmV0dXJuIGl9fX0se2tleToiZXh0cmFjdElucHV0Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTowLGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0\/YXJndW1lbnRzWzFdOnRoaXMuX3ZhbHVlLmxlbmd0aCxuPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTp7fTtyZXR1cm4gbi5yYXcmJnRoaXMuX2lzUmF3SW5wdXQmJnRoaXMuX3ZhbHVlLnNsaWNlKHQsZSl8fCIifX0se2tleToiaXNDb21wbGV0ZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuITB9fSx7a2V5OiJpc0ZpbGxlZCIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEJvb2xlYW4odGhpcy5fdmFsdWUpfX0se2tleToiX2FwcGVuZENoYXIiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp7fSxuPW5ldyBZcjtpZih0aGlzLl92YWx1ZSlyZXR1cm4gbjt2YXIgaT10aGlzLmNoYXI9PT10LHI9aSYmKHRoaXMuaXNVbm1hc2tpbmd8fGUuaW5wdXR8fGUucmF3KSYmIXRoaXMuZWFnZXImJiFlLnRhaWw7cmV0dXJuIHImJihuLnJhd0luc2VydGVkPXRoaXMuY2hhciksdGhpcy5fdmFsdWU9bi5pbnNlcnRlZD10aGlzLmNoYXIsdGhpcy5faXNSYXdJbnB1dD1yJiYoZS5yYXd8fGUuaW5wdXQpLG59fSx7a2V5OiJfYXBwZW5kRWFnZXIiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2FwcGVuZENoYXIodGhpcy5jaGFyKX19LHtrZXk6Il9hcHBlbmRQbGFjZWhvbGRlciIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD1uZXcgWXI7cmV0dXJuIHRoaXMuX3ZhbHVlfHwodGhpcy5fdmFsdWU9dC5pbnNlcnRlZD10aGlzLmNoYXIpLHR9fSx7a2V5OiJleHRyYWN0VGFpbCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV18fHRoaXMudmFsdWUubGVuZ3RoLG5ldyBudSgiIil9fSx7a2V5OiJhcHBlbmRUYWlsIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gWnIodCkmJih0PW5ldyBudShTdHJpbmcodCkpKSx0LmFwcGVuZFRvKHRoaXMpfX0se2tleToiYXBwZW5kIix2YWx1ZTpmdW5jdGlvbih0LGUsbil7dmFyIGk9dGhpcy5fYXBwZW5kQ2hhcih0WzBdLGUpO3JldHVybiBudWxsIT1uJiYoaS50YWlsU2hpZnQrPXRoaXMuYXBwZW5kVGFpbChuKS50YWlsU2hpZnQpLGl9fSx7a2V5OiJkb0NvbW1pdCIsdmFsdWU6ZnVuY3Rpb24oKXt9fSx7a2V5OiJzdGF0ZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJue192YWx1ZTp0aGlzLl92YWx1ZSxfaXNSYXdJbnB1dDp0aGlzLl9pc1Jhd0lucHV0fX0sc2V0OmZ1bmN0aW9uKHQpe09iamVjdC5hc3NpZ24odGhpcyx0KX19XSksdH0oKSxjdT1bImNodW5rcyJdLGZ1PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTpbXSxuPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTowO3hyKHRoaXMsdCksdGhpcy5jaHVua3M9ZSx0aGlzLmZyb209bn1yZXR1cm4gT3IodCxbe2tleToidG9TdHJpbmciLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2h1bmtzLm1hcChTdHJpbmcpLmpvaW4oIiIpfX0se2tleToiZXh0ZW5kIix2YWx1ZTpmdW5jdGlvbihlKXtpZihTdHJpbmcoZSkpe1pyKGUpJiYoZT1uZXcgbnUoU3RyaW5nKGUpKSk7dmFyIG49dGhpcy5jaHVua3NbdGhpcy5jaHVua3MubGVuZ3RoLTFdLGk9biYmKG4uc3RvcD09PWUuc3RvcHx8bnVsbD09ZS5zdG9wKSYmZS5mcm9tPT09bi5mcm9tK24udG9TdHJpbmcoKS5sZW5ndGg7aWYoZSBpbnN0YW5jZW9mIG51KWk\/bi5leHRlbmQoZS50b1N0cmluZygpKTp0aGlzLmNodW5rcy5wdXNoKGUpO2Vsc2UgaWYoZSBpbnN0YW5jZW9mIHQpe2lmKG51bGw9PWUuc3RvcClmb3IodmFyIHI7ZS5jaHVua3MubGVuZ3RoJiZudWxsPT1lLmNodW5rc1swXS5zdG9wOykocj1lLmNodW5rcy5zaGlmdCgpKS5mcm9tKz1lLmZyb20sdGhpcy5leHRlbmQocik7ZS50b1N0cmluZygpJiYoZS5zdG9wPWUuYmxvY2tJbmRleCx0aGlzLmNodW5rcy5wdXNoKGUpKX19fX0se2tleToiYXBwZW5kVG8iLHZhbHVlOmZ1bmN0aW9uKGUpe2lmKCEoZSBpbnN0YW5jZW9mIGl1Lk1hc2tlZFBhdHRlcm4pKXJldHVybiBuZXcgbnUodGhpcy50b1N0cmluZygpKS5hcHBlbmRUbyhlKTtmb3IodmFyIG49bmV3IFlyLGk9MDtpPHRoaXMuY2h1bmtzLmxlbmd0aCYmIW4uc2tpcDsrK2kpe3ZhciByPXRoaXMuY2h1bmtzW2ldLHU9ZS5fbWFwUG9zVG9CbG9jayhlLnZhbHVlLmxlbmd0aCkscz1yLnN0b3AsYT12b2lkIDA7aWYobnVsbCE9cyYmKCF1fHx1LmluZGV4PD1zKSYmKChyIGluc3RhbmNlb2YgdHx8ZS5fc3RvcHMuaW5kZXhPZihzKT49MCkmJm4uYWdncmVnYXRlKGUuX2FwcGVuZFBsYWNlaG9sZGVyKHMpKSxhPXIgaW5zdGFuY2VvZiB0JiZlLl9ibG9ja3Nbc10pLGEpe3ZhciBvPWEuYXBwZW5kVGFpbChyKTtvLnNraXA9ITEsbi5hZ2dyZWdhdGUobyksZS5fdmFsdWUrPW8uaW5zZXJ0ZWQ7dmFyIGw9ci50b1N0cmluZygpLnNsaWNlKG8ucmF3SW5zZXJ0ZWQubGVuZ3RoKTtsJiZuLmFnZ3JlZ2F0ZShlLmFwcGVuZChsLHt0YWlsOiEwfSkpfWVsc2Ugbi5hZ2dyZWdhdGUoZS5hcHBlbmQoci50b1N0cmluZygpLHt0YWlsOiEwfSkpfXJldHVybiBufX0se2tleToic3RhdGUiLGdldDpmdW5jdGlvbigpe3JldHVybntjaHVua3M6dGhpcy5jaHVua3MubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC5zdGF0ZX0pKSxmcm9tOnRoaXMuZnJvbSxzdG9wOnRoaXMuc3RvcCxibG9ja0luZGV4OnRoaXMuYmxvY2tJbmRleH19LHNldDpmdW5jdGlvbihlKXt2YXIgbj1lLmNodW5rcyxpPWpyKGUsY3UpO09iamVjdC5hc3NpZ24odGhpcyxpKSx0aGlzLmNodW5rcz1uLm1hcCgoZnVuY3Rpb24oZSl7dmFyIG49ImNodW5rcyJpbiBlP25ldyB0Om5ldyBudTtyZXR1cm4gbi5zdGF0ZT1lLG59KSl9fSx7a2V5OiJ1bnNoaWZ0Iix2YWx1ZTpmdW5jdGlvbih0KXtpZighdGhpcy5jaHVua3MubGVuZ3RofHxudWxsIT10JiZ0aGlzLmZyb20+PXQpcmV0dXJuIiI7Zm9yKHZhciBlPW51bGwhPXQ\/dC10aGlzLmZyb206dCxuPTA7bjx0aGlzLmNodW5rcy5sZW5ndGg7KXt2YXIgaT10aGlzLmNodW5rc1tuXSxyPWkudW5zaGlmdChlKTtpZihpLnRvU3RyaW5nKCkpe2lmKCFyKWJyZWFrOysrbn1lbHNlIHRoaXMuY2h1bmtzLnNwbGljZShuLDEpO2lmKHIpcmV0dXJuIHJ9cmV0dXJuIiJ9fSx7a2V5OiJzaGlmdCIsdmFsdWU6ZnVuY3Rpb24oKXtpZighdGhpcy5jaHVua3MubGVuZ3RoKXJldHVybiIiO2Zvcih2YXIgdD10aGlzLmNodW5rcy5sZW5ndGgtMTswPD10Oyl7dmFyIGU9dGhpcy5jaHVua3NbdF0sbj1lLnNoaWZ0KCk7aWYoZS50b1N0cmluZygpKXtpZighbilicmVhazstLXR9ZWxzZSB0aGlzLmNodW5rcy5zcGxpY2UodCwxKTtpZihuKXJldHVybiBufXJldHVybiIifX1dKSx0fSgpLHB1PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlLG4pe3hyKHRoaXMsdCksdGhpcy5tYXNrZWQ9ZSx0aGlzLl9sb2c9W107dmFyIGk9ZS5fbWFwUG9zVG9CbG9jayhuKXx8KG48MD97aW5kZXg6MCxvZmZzZXQ6MH06e2luZGV4OnRoaXMubWFza2VkLl9ibG9ja3MubGVuZ3RoLG9mZnNldDowfSkscj1pLm9mZnNldCx1PWkuaW5kZXg7dGhpcy5vZmZzZXQ9cix0aGlzLmluZGV4PXUsdGhpcy5vaz0hMX1yZXR1cm4gT3IodCxbe2tleToiYmxvY2siLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1hc2tlZC5fYmxvY2tzW3RoaXMuaW5kZXhdfX0se2tleToicG9zIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tYXNrZWQuX2Jsb2NrU3RhcnRQb3ModGhpcy5pbmRleCkrdGhpcy5vZmZzZXR9fSx7a2V5OiJzdGF0ZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJue2luZGV4OnRoaXMuaW5kZXgsb2Zmc2V0OnRoaXMub2Zmc2V0LG9rOnRoaXMub2t9fSxzZXQ6ZnVuY3Rpb24odCl7T2JqZWN0LmFzc2lnbih0aGlzLHQpfX0se2tleToicHVzaFN0YXRlIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuX2xvZy5wdXNoKHRoaXMuc3RhdGUpfX0se2tleToicG9wU3RhdGUiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fbG9nLnBvcCgpO3JldHVybiB0aGlzLnN0YXRlPXQsdH19LHtrZXk6ImJpbmRCbG9jayIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmJsb2NrfHwodGhpcy5pbmRleDwwJiYodGhpcy5pbmRleD0wLHRoaXMub2Zmc2V0PTApLHRoaXMuaW5kZXg+PXRoaXMubWFza2VkLl9ibG9ja3MubGVuZ3RoJiYodGhpcy5pbmRleD10aGlzLm1hc2tlZC5fYmxvY2tzLmxlbmd0aC0xLHRoaXMub2Zmc2V0PXRoaXMuYmxvY2sudmFsdWUubGVuZ3RoKSl9fSx7a2V5OiJfcHVzaExlZnQiLHZhbHVlOmZ1bmN0aW9uKHQpe2Zvcih0aGlzLnB1c2hTdGF0ZSgpLHRoaXMuYmluZEJsb2NrKCk7MDw9dGhpcy5pbmRleDstLXRoaXMuaW5kZXgsdGhpcy5vZmZzZXQ9KG51bGw9PT0oZT10aGlzLmJsb2NrKXx8dm9pZCAwPT09ZT92b2lkIDA6ZS52YWx1ZS5sZW5ndGgpfHwwKXt2YXIgZTtpZih0KCkpcmV0dXJuIHRoaXMub2s9ITB9cmV0dXJuIHRoaXMub2s9ITF9fSx7a2V5OiJfcHVzaFJpZ2h0Iix2YWx1ZTpmdW5jdGlvbih0KXtmb3IodGhpcy5wdXNoU3RhdGUoKSx0aGlzLmJpbmRCbG9jaygpO3RoaXMuaW5kZXg8dGhpcy5tYXNrZWQuX2Jsb2Nrcy5sZW5ndGg7Kyt0aGlzLmluZGV4LHRoaXMub2Zmc2V0PTApaWYodCgpKXJldHVybiB0aGlzLm9rPSEwO3JldHVybiB0aGlzLm9rPSExfX0se2tleToicHVzaExlZnRCZWZvcmVGaWxsZWQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcztyZXR1cm4gdGhpcy5fcHVzaExlZnQoKGZ1bmN0aW9uKCl7aWYoIXQuYmxvY2suaXNGaXhlZCYmdC5ibG9jay52YWx1ZSlyZXR1cm4gdC5vZmZzZXQ9dC5ibG9jay5uZWFyZXN0SW5wdXRQb3ModC5vZmZzZXQsJHIpLDAhPT10Lm9mZnNldHx8dm9pZCAwfSkpfX0se2tleToicHVzaExlZnRCZWZvcmVJbnB1dCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3JldHVybiB0aGlzLl9wdXNoTGVmdCgoZnVuY3Rpb24oKXtpZighdC5ibG9jay5pc0ZpeGVkKXJldHVybiB0Lm9mZnNldD10LmJsb2NrLm5lYXJlc3RJbnB1dFBvcyh0Lm9mZnNldCxLciksITB9KSl9fSx7a2V5OiJwdXNoTGVmdEJlZm9yZVJlcXVpcmVkIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXM7cmV0dXJuIHRoaXMuX3B1c2hMZWZ0KChmdW5jdGlvbigpe2lmKCEodC5ibG9jay5pc0ZpeGVkfHx0LmJsb2NrLmlzT3B0aW9uYWwmJiF0LmJsb2NrLnZhbHVlKSlyZXR1cm4gdC5vZmZzZXQ9dC5ibG9jay5uZWFyZXN0SW5wdXRQb3ModC5vZmZzZXQsS3IpLCEwfSkpfX0se2tleToicHVzaFJpZ2h0QmVmb3JlRmlsbGVkIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXM7cmV0dXJuIHRoaXMuX3B1c2hSaWdodCgoZnVuY3Rpb24oKXtpZighdC5ibG9jay5pc0ZpeGVkJiZ0LmJsb2NrLnZhbHVlKXJldHVybiB0Lm9mZnNldD10LmJsb2NrLm5lYXJlc3RJbnB1dFBvcyh0Lm9mZnNldCxYciksdC5vZmZzZXQhPT10LmJsb2NrLnZhbHVlLmxlbmd0aHx8dm9pZCAwfSkpfX0se2tleToicHVzaFJpZ2h0QmVmb3JlSW5wdXQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcztyZXR1cm4gdGhpcy5fcHVzaFJpZ2h0KChmdW5jdGlvbigpe2lmKCF0LmJsb2NrLmlzRml4ZWQpcmV0dXJuIHQub2Zmc2V0PXQuYmxvY2submVhcmVzdElucHV0UG9zKHQub2Zmc2V0LEdyKSwhMH0pKX19LHtrZXk6InB1c2hSaWdodEJlZm9yZVJlcXVpcmVkIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXM7cmV0dXJuIHRoaXMuX3B1c2hSaWdodCgoZnVuY3Rpb24oKXtpZighKHQuYmxvY2suaXNGaXhlZHx8dC5ibG9jay5pc09wdGlvbmFsJiYhdC5ibG9jay52YWx1ZSkpcmV0dXJuIHQub2Zmc2V0PXQuYmxvY2submVhcmVzdElucHV0UG9zKHQub2Zmc2V0LEdyKSwhMH0pKX19XSksdH0oKSxkdT1mdW5jdGlvbih0KXtQcihuLHQpO3ZhciBlPVZyKG4pO2Z1bmN0aW9uIG4oKXtyZXR1cm4geHIodGhpcyxuKSxlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1yZXR1cm4gT3Iobixbe2tleToiX3VwZGF0ZSIsdmFsdWU6ZnVuY3Rpb24odCl7dC5tYXNrJiYodC52YWxpZGF0ZT1mdW5jdGlvbihlKXtyZXR1cm4gZS5zZWFyY2godC5tYXNrKT49MH0pLE5yKFRyKG4ucHJvdG90eXBlKSwiX3VwZGF0ZSIsdGhpcykuY2FsbCh0aGlzLHQpfX1dKSxufShydSk7aXUuTWFza2VkUmVnRXhwPWR1O3ZhciB2dT1bIl9ibG9ja3MiXSxndT1mdW5jdGlvbih0KXtQcihuLHQpO3ZhciBlPVZyKG4pO2Z1bmN0aW9uIG4oKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06e307cmV0dXJuIHhyKHRoaXMsbiksdC5kZWZpbml0aW9ucz1PYmplY3QuYXNzaWduKHt9LG91LHQuZGVmaW5pdGlvbnMpLGUuY2FsbCh0aGlzLE9iamVjdC5hc3NpZ24oe30sbi5ERUZBVUxUUyx0KSl9cmV0dXJuIE9yKG4sW3trZXk6Il91cGRhdGUiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0\/YXJndW1lbnRzWzBdOnt9O3QuZGVmaW5pdGlvbnM9T2JqZWN0LmFzc2lnbih7fSx0aGlzLmRlZmluaXRpb25zLHQuZGVmaW5pdGlvbnMpLE5yKFRyKG4ucHJvdG90eXBlKSwiX3VwZGF0ZSIsdGhpcykuY2FsbCh0aGlzLHQpLHRoaXMuX3JlYnVpbGRNYXNrKCl9fSx7a2V5OiJfcmVidWlsZE1hc2siLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPXRoaXMuZGVmaW5pdGlvbnM7dGhpcy5fYmxvY2tzPVtdLHRoaXMuX3N0b3BzPVtdLHRoaXMuX21hc2tlZEJsb2Nrcz17fTt2YXIgaT10aGlzLm1hc2s7aWYoaSYmZSlmb3IodmFyIHI9ITEsdT0hMSxzPTA7czxpLmxlbmd0aDsrK3Mpe2lmKHRoaXMuYmxvY2tzKWlmKCJjb250aW51ZSI9PT1mdW5jdGlvbigpe3ZhciBlPWkuc2xpY2Uocyksbj1PYmplY3Qua2V5cyh0LmJsb2NrcykuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gMD09PWUuaW5kZXhPZih0KX0pKTtuLnNvcnQoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUubGVuZ3RoLXQubGVuZ3RofSkpO3ZhciByPW5bMF07aWYocil7dmFyIHU9c3UoT2JqZWN0LmFzc2lnbih7cGFyZW50OnQsbGF6eTp0LmxhenksZWFnZXI6dC5lYWdlcixwbGFjZWhvbGRlckNoYXI6dC5wbGFjZWhvbGRlckNoYXIsb3ZlcndyaXRlOnQub3ZlcndyaXRlfSx0LmJsb2Nrc1tyXSkpO3JldHVybiB1JiYodC5fYmxvY2tzLnB1c2godSksdC5fbWFza2VkQmxvY2tzW3JdfHwodC5fbWFza2VkQmxvY2tzW3JdPVtdKSx0Ll9tYXNrZWRCbG9ja3Nbcl0ucHVzaCh0Ll9ibG9ja3MubGVuZ3RoLTEpKSxzKz1yLmxlbmd0aC0xLCJjb250aW51ZSJ9fSgpKWNvbnRpbnVlO3ZhciBhPWlbc10sbz1hIGluIGU7aWYoYSE9PW4uU1RPUF9DSEFSKWlmKCJ7IiE9PWEmJiJ9IiE9PWEpaWYoIlsiIT09YSYmIl0iIT09YSl7aWYoYT09PW4uRVNDQVBFX0NIQVIpe2lmKCsrcywhKGE9aVtzXSkpYnJlYWs7bz0hMX12YXIgbD1vP25ldyBsdSh7cGFyZW50OnRoaXMsbGF6eTp0aGlzLmxhenksZWFnZXI6dGhpcy5lYWdlcixwbGFjZWhvbGRlckNoYXI6dGhpcy5wbGFjZWhvbGRlckNoYXIsbWFzazplW2FdLGlzT3B0aW9uYWw6dX0pOm5ldyBodSh7Y2hhcjphLGVhZ2VyOnRoaXMuZWFnZXIsaXNVbm1hc2tpbmc6cn0pO3RoaXMuX2Jsb2Nrcy5wdXNoKGwpfWVsc2UgdT0hdTtlbHNlIHI9IXI7ZWxzZSB0aGlzLl9zdG9wcy5wdXNoKHRoaXMuX2Jsb2Nrcy5sZW5ndGgpfX19LHtrZXk6InN0YXRlIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gT2JqZWN0LmFzc2lnbih7fSxOcihUcihuLnByb3RvdHlwZSksInN0YXRlIix0aGlzKSx7X2Jsb2Nrczp0aGlzLl9ibG9ja3MubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC5zdGF0ZX0pKX0pfSxzZXQ6ZnVuY3Rpb24odCl7dmFyIGU9dC5fYmxvY2tzLGk9anIodCx2dSk7dGhpcy5fYmxvY2tzLmZvckVhY2goKGZ1bmN0aW9uKHQsbil7cmV0dXJuIHQuc3RhdGU9ZVtuXX0pKSx6cihUcihuLnByb3RvdHlwZSksInN0YXRlIixpLHRoaXMsITApfX0se2tleToicmVzZXQiLHZhbHVlOmZ1bmN0aW9uKCl7TnIoVHIobi5wcm90b3R5cGUpLCJyZXNldCIsdGhpcykuY2FsbCh0aGlzKSx0aGlzLl9ibG9ja3MuZm9yRWFjaCgoZnVuY3Rpb24odCl7cmV0dXJuIHQucmVzZXQoKX0pKX19LHtrZXk6ImlzQ29tcGxldGUiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9ibG9ja3MuZXZlcnkoKGZ1bmN0aW9uKHQpe3JldHVybiB0LmlzQ29tcGxldGV9KSl9fSx7a2V5OiJpc0ZpbGxlZCIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2Jsb2Nrcy5ldmVyeSgoZnVuY3Rpb24odCl7cmV0dXJuIHQuaXNGaWxsZWR9KSl9fSx7a2V5OiJpc0ZpeGVkIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYmxvY2tzLmV2ZXJ5KChmdW5jdGlvbih0KXtyZXR1cm4gdC5pc0ZpeGVkfSkpfX0se2tleToiaXNPcHRpb25hbCIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2Jsb2Nrcy5ldmVyeSgoZnVuY3Rpb24odCl7cmV0dXJuIHQuaXNPcHRpb25hbH0pKX19LHtrZXk6ImRvQ29tbWl0Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuX2Jsb2Nrcy5mb3JFYWNoKChmdW5jdGlvbih0KXtyZXR1cm4gdC5kb0NvbW1pdCgpfSkpLE5yKFRyKG4ucHJvdG90eXBlKSwiZG9Db21taXQiLHRoaXMpLmNhbGwodGhpcyl9fSx7a2V5OiJ1bm1hc2tlZFZhbHVlIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYmxvY2tzLnJlZHVjZSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdCtlLnVubWFza2VkVmFsdWV9KSwiIil9LHNldDpmdW5jdGlvbih0KXt6cihUcihuLnByb3RvdHlwZSksInVubWFza2VkVmFsdWUiLHQsdGhpcywhMCl9fSx7a2V5OiJ2YWx1ZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2Jsb2Nrcy5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQrZS52YWx1ZX0pLCIiKX0sc2V0OmZ1bmN0aW9uKHQpe3pyKFRyKG4ucHJvdG90eXBlKSwidmFsdWUiLHQsdGhpcywhMCl9fSx7a2V5OiJhcHBlbmRUYWlsIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gTnIoVHIobi5wcm90b3R5cGUpLCJhcHBlbmRUYWlsIix0aGlzKS5jYWxsKHRoaXMsdCkuYWdncmVnYXRlKHRoaXMuX2FwcGVuZFBsYWNlaG9sZGVyKCkpfX0se2tleToiX2FwcGVuZEVhZ2VyIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0LGU9bmV3IFlyLG49bnVsbD09PSh0PXRoaXMuX21hcFBvc1RvQmxvY2sodGhpcy52YWx1ZS5sZW5ndGgpKXx8dm9pZCAwPT09dD92b2lkIDA6dC5pbmRleDtpZihudWxsPT1uKXJldHVybiBlO3RoaXMuX2Jsb2Nrc1tuXS5pc0ZpbGxlZCYmKytuO2Zvcih2YXIgaT1uO2k8dGhpcy5fYmxvY2tzLmxlbmd0aDsrK2kpe3ZhciByPXRoaXMuX2Jsb2Nrc1tpXS5fYXBwZW5kRWFnZXIoKTtpZighci5pbnNlcnRlZClicmVhaztlLmFnZ3JlZ2F0ZShyKX1yZXR1cm4gZX19LHtrZXk6Il9hcHBlbmRDaGFyUmF3Iix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06e30sbj10aGlzLl9tYXBQb3NUb0Jsb2NrKHRoaXMudmFsdWUubGVuZ3RoKSxpPW5ldyBZcjtpZighbilyZXR1cm4gaTtmb3IodmFyIHI9bi5pbmRleDs7KytyKXt2YXIgdSxzPXRoaXMuX2Jsb2Nrc1tyXTtpZighcylicmVhazt2YXIgYT1zLl9hcHBlbmRDaGFyKHQsT2JqZWN0LmFzc2lnbih7fSxlLHtfYmVmb3JlVGFpbFN0YXRlOm51bGw9PT0odT1lLl9iZWZvcmVUYWlsU3RhdGUpfHx2b2lkIDA9PT11P3ZvaWQgMDp1Ll9ibG9ja3Nbcl19KSksbz1hLnNraXA7aWYoaS5hZ2dyZWdhdGUoYSksb3x8YS5yYXdJbnNlcnRlZClicmVha31yZXR1cm4gaX19LHtrZXk6ImV4dHJhY3RUYWlsIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMsZT1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06MCxuPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp0aGlzLnZhbHVlLmxlbmd0aCxpPW5ldyBmdTtyZXR1cm4gZT09PW58fHRoaXMuX2ZvckVhY2hCbG9ja3NJblJhbmdlKGUsbiwoZnVuY3Rpb24oZSxuLHIsdSl7dmFyIHM9ZS5leHRyYWN0VGFpbChyLHUpO3Muc3RvcD10Ll9maW5kU3RvcEJlZm9yZShuKSxzLmZyb209dC5fYmxvY2tTdGFydFBvcyhuKSxzIGluc3RhbmNlb2YgZnUmJihzLmJsb2NrSW5kZXg9biksaS5leHRlbmQocyl9KSksaX19LHtrZXk6ImV4dHJhY3RJbnB1dCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06MCxlPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp0aGlzLnZhbHVlLmxlbmd0aCxuPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTp7fTtpZih0PT09ZSlyZXR1cm4iIjt2YXIgaT0iIjtyZXR1cm4gdGhpcy5fZm9yRWFjaEJsb2Nrc0luUmFuZ2UodCxlLChmdW5jdGlvbih0LGUscix1KXtpKz10LmV4dHJhY3RJbnB1dChyLHUsbil9KSksaX19LHtrZXk6Il9maW5kU3RvcEJlZm9yZSIsdmFsdWU6ZnVuY3Rpb24odCl7Zm9yKHZhciBlLG49MDtuPHRoaXMuX3N0b3BzLmxlbmd0aDsrK24pe3ZhciBpPXRoaXMuX3N0b3BzW25dO2lmKCEoaTw9dCkpYnJlYWs7ZT1pfXJldHVybiBlfX0se2tleToiX2FwcGVuZFBsYWNlaG9sZGVyIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLG49bmV3IFlyO2lmKHRoaXMubGF6eSYmbnVsbD09dClyZXR1cm4gbjt2YXIgaT10aGlzLl9tYXBQb3NUb0Jsb2NrKHRoaXMudmFsdWUubGVuZ3RoKTtpZighaSlyZXR1cm4gbjt2YXIgcj1pLmluZGV4LHU9bnVsbCE9dD90OnRoaXMuX2Jsb2Nrcy5sZW5ndGg7cmV0dXJuIHRoaXMuX2Jsb2Nrcy5zbGljZShyLHUpLmZvckVhY2goKGZ1bmN0aW9uKGkpe2lmKCFpLmxhenl8fG51bGwhPXQpe3ZhciByPW51bGwhPWkuX2Jsb2Nrcz9baS5fYmxvY2tzLmxlbmd0aF06W10sdT1pLl9hcHBlbmRQbGFjZWhvbGRlci5hcHBseShpLHIpO2UuX3ZhbHVlKz11Lmluc2VydGVkLG4uYWdncmVnYXRlKHUpfX0pKSxufX0se2tleToiX21hcFBvc1RvQmxvY2siLHZhbHVlOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0iIixuPTA7bjx0aGlzLl9ibG9ja3MubGVuZ3RoOysrbil7dmFyIGk9dGhpcy5fYmxvY2tzW25dLHI9ZS5sZW5ndGg7aWYodDw9KGUrPWkudmFsdWUpLmxlbmd0aClyZXR1cm57aW5kZXg6bixvZmZzZXQ6dC1yfX19fSx7a2V5OiJfYmxvY2tTdGFydFBvcyIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2Jsb2Nrcy5zbGljZSgwLHQpLnJlZHVjZSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdCtlLnZhbHVlLmxlbmd0aH0pLDApfX0se2tleToiX2ZvckVhY2hCbG9ja3NJblJhbmdlIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06dGhpcy52YWx1ZS5sZW5ndGgsbj1hcmd1bWVudHMubGVuZ3RoPjI\/YXJndW1lbnRzWzJdOnZvaWQgMCxpPXRoaXMuX21hcFBvc1RvQmxvY2sodCk7aWYoaSl7dmFyIHI9dGhpcy5fbWFwUG9zVG9CbG9jayhlKSx1PXImJmkuaW5kZXg9PT1yLmluZGV4LHM9aS5vZmZzZXQsYT1yJiZ1P3Iub2Zmc2V0OnRoaXMuX2Jsb2Nrc1tpLmluZGV4XS52YWx1ZS5sZW5ndGg7aWYobih0aGlzLl9ibG9ja3NbaS5pbmRleF0saS5pbmRleCxzLGEpLHImJiF1KXtmb3IodmFyIG89aS5pbmRleCsxO288ci5pbmRleDsrK28pbih0aGlzLl9ibG9ja3Nbb10sbywwLHRoaXMuX2Jsb2Nrc1tvXS52YWx1ZS5sZW5ndGgpO24odGhpcy5fYmxvY2tzW3IuaW5kZXhdLHIuaW5kZXgsMCxyLm9mZnNldCl9fX19LHtrZXk6InJlbW92ZSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06MCxlPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp0aGlzLnZhbHVlLmxlbmd0aCxpPU5yKFRyKG4ucHJvdG90eXBlKSwicmVtb3ZlIix0aGlzKS5jYWxsKHRoaXMsdCxlKTtyZXR1cm4gdGhpcy5fZm9yRWFjaEJsb2Nrc0luUmFuZ2UodCxlLChmdW5jdGlvbih0LGUsbixyKXtpLmFnZ3JlZ2F0ZSh0LnJlbW92ZShuLHIpKX0pKSxpfX0se2tleToibmVhcmVzdElucHV0UG9zIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06R3I7aWYoIXRoaXMuX2Jsb2Nrcy5sZW5ndGgpcmV0dXJuIDA7dmFyIG49bmV3IHB1KHRoaXMsdCk7aWYoZT09PUdyKXJldHVybiBuLnB1c2hSaWdodEJlZm9yZUlucHV0KCk\/bi5wb3M6KG4ucG9wU3RhdGUoKSxuLnB1c2hMZWZ0QmVmb3JlSW5wdXQoKT9uLnBvczp0aGlzLnZhbHVlLmxlbmd0aCk7aWYoZT09PUtyfHxlPT09JHIpe2lmKGU9PT1Lcil7aWYobi5wdXNoUmlnaHRCZWZvcmVGaWxsZWQoKSxuLm9rJiZuLnBvcz09PXQpcmV0dXJuIHQ7bi5wb3BTdGF0ZSgpfWlmKG4ucHVzaExlZnRCZWZvcmVJbnB1dCgpLG4ucHVzaExlZnRCZWZvcmVSZXF1aXJlZCgpLG4ucHVzaExlZnRCZWZvcmVGaWxsZWQoKSxlPT09S3Ipe2lmKG4ucHVzaFJpZ2h0QmVmb3JlSW5wdXQoKSxuLnB1c2hSaWdodEJlZm9yZVJlcXVpcmVkKCksbi5vayYmbi5wb3M8PXQpcmV0dXJuIG4ucG9zO2lmKG4ucG9wU3RhdGUoKSxuLm9rJiZuLnBvczw9dClyZXR1cm4gbi5wb3M7bi5wb3BTdGF0ZSgpfXJldHVybiBuLm9rP24ucG9zOmU9PT0kcj8wOihuLnBvcFN0YXRlKCksbi5vaz9uLnBvczoobi5wb3BTdGF0ZSgpLG4ub2s\/bi5wb3M6MCkpfXJldHVybiBlPT09V3J8fGU9PT1Ycj8obi5wdXNoUmlnaHRCZWZvcmVJbnB1dCgpLG4ucHVzaFJpZ2h0QmVmb3JlUmVxdWlyZWQoKSxuLnB1c2hSaWdodEJlZm9yZUZpbGxlZCgpP24ucG9zOmU9PT1Ycj90aGlzLnZhbHVlLmxlbmd0aDoobi5wb3BTdGF0ZSgpLG4ub2s\/bi5wb3M6KG4ucG9wU3RhdGUoKSxuLm9rP24ucG9zOnRoaXMubmVhcmVzdElucHV0UG9zKHQsS3IpKSkpOnR9fSx7a2V5OiJtYXNrZWRCbG9jayIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMubWFza2VkQmxvY2tzKHQpWzBdfX0se2tleToibWFza2VkQmxvY2tzIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLG49dGhpcy5fbWFza2VkQmxvY2tzW3RdO3JldHVybiBuP24ubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gZS5fYmxvY2tzW3RdfSkpOltdfX1dKSxufShydSk7Z3UuREVGQVVMVFM9e2xhenk6ITAscGxhY2Vob2xkZXJDaGFyOiJfIn0sZ3UuU1RPUF9DSEFSPSJgIixndS5FU0NBUEVfQ0hBUj0iXFwiLGd1LklucHV0RGVmaW5pdGlvbj1sdSxndS5GaXhlZERlZmluaXRpb249aHUsaXUuTWFza2VkUGF0dGVybj1ndTt2YXIga3U9ZnVuY3Rpb24odCl7UHIobix0KTt2YXIgZT1WcihuKTtmdW5jdGlvbiBuKCl7cmV0dXJuIHhyKHRoaXMsbiksZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9cmV0dXJuIE9yKG4sW3trZXk6Il9tYXRjaEZyb20iLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1heExlbmd0aC1TdHJpbmcodGhpcy5mcm9tKS5sZW5ndGh9fSx7a2V5OiJfdXBkYXRlIix2YWx1ZTpmdW5jdGlvbih0KXt0PU9iamVjdC5hc3NpZ24oe3RvOnRoaXMudG98fDAsZnJvbTp0aGlzLmZyb218fDAsbWF4TGVuZ3RoOnRoaXMubWF4TGVuZ3RofHwwfSx0KTt2YXIgZT1TdHJpbmcodC50bykubGVuZ3RoO251bGwhPXQubWF4TGVuZ3RoJiYoZT1NYXRoLm1heChlLHQubWF4TGVuZ3RoKSksdC5tYXhMZW5ndGg9ZTtmb3IodmFyIGk9U3RyaW5nKHQuZnJvbSkucGFkU3RhcnQoZSwiMCIpLHI9U3RyaW5nKHQudG8pLnBhZFN0YXJ0KGUsIjAiKSx1PTA7dTxyLmxlbmd0aCYmclt1XT09PWlbdV07KSsrdTt0Lm1hc2s9ci5zbGljZSgwLHUpLnJlcGxhY2UoLzAvZywiXFwwIikrIjAiLnJlcGVhdChlLXUpLE5yKFRyKG4ucHJvdG90eXBlKSwiX3VwZGF0ZSIsdGhpcykuY2FsbCh0aGlzLHQpfX0se2tleToiaXNDb21wbGV0ZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIE5yKFRyKG4ucHJvdG90eXBlKSwiaXNDb21wbGV0ZSIsdGhpcykmJkJvb2xlYW4odGhpcy52YWx1ZSl9fSx7a2V5OiJib3VuZGFyaWVzIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT0iIixuPSIiLGk9cXIodC5tYXRjaCgvXihcRCopKFxkKikoXEQqKS8pfHxbXSwzKSxyPWlbMV0sdT1pWzJdO3JldHVybiB1JiYoZT0iMCIucmVwZWF0KHIubGVuZ3RoKSt1LG49IjkiLnJlcGVhdChyLmxlbmd0aCkrdSksW2U9ZS5wYWRFbmQodGhpcy5tYXhMZW5ndGgsIjAiKSxuPW4ucGFkRW5kKHRoaXMubWF4TGVuZ3RoLCI5IildfX0se2tleToiZG9QcmVwYXJlIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZSxpPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp7fSxyPVFyKE5yKFRyKG4ucHJvdG90eXBlKSwiZG9QcmVwYXJlIix0aGlzKS5jYWxsKHRoaXMsdC5yZXBsYWNlKC9cRC9nLCIiKSxpKSksdT1xcihyLDIpO2lmKHQ9dVswXSxlPXVbMV0sIXRoaXMuYXV0b2ZpeHx8IXQpcmV0dXJuIHQ7dmFyIHM9U3RyaW5nKHRoaXMuZnJvbSkucGFkU3RhcnQodGhpcy5tYXhMZW5ndGgsIjAiKSxhPVN0cmluZyh0aGlzLnRvKS5wYWRTdGFydCh0aGlzLm1heExlbmd0aCwiMCIpLG89dGhpcy52YWx1ZSt0O2lmKG8ubGVuZ3RoPnRoaXMubWF4TGVuZ3RoKXJldHVybiIiO3ZhciBsPXRoaXMuYm91bmRhcmllcyhvKSxoPXFyKGwsMiksYz1oWzBdLGY9aFsxXTtyZXR1cm4gTnVtYmVyKGYpPHRoaXMuZnJvbT9zW28ubGVuZ3RoLTFdOk51bWJlcihjKT50aGlzLnRvPyJwYWQiPT09dGhpcy5hdXRvZml4JiZvLmxlbmd0aDx0aGlzLm1heExlbmd0aD9bIiIsZS5hZ2dyZWdhdGUodGhpcy5hcHBlbmQoc1tvLmxlbmd0aC0xXSt0LGkpKV06YVtvLmxlbmd0aC0xXTp0fX0se2tleToiZG9WYWxpZGF0ZSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdCxlPXRoaXMudmFsdWUsaT1lLnNlYXJjaCgvW14wXS8pO2lmKC0xPT09aSYmZS5sZW5ndGg8PXRoaXMuX21hdGNoRnJvbSlyZXR1cm4hMDtmb3IodmFyIHI9dGhpcy5ib3VuZGFyaWVzKGUpLHU9cXIociwyKSxzPXVbMF0sYT11WzFdLG89YXJndW1lbnRzLmxlbmd0aCxsPW5ldyBBcnJheShvKSxoPTA7aDxvO2grKylsW2hdPWFyZ3VtZW50c1toXTtyZXR1cm4gdGhpcy5mcm9tPD1OdW1iZXIoYSkmJk51bWJlcihzKTw9dGhpcy50byYmKHQ9TnIoVHIobi5wcm90b3R5cGUpLCJkb1ZhbGlkYXRlIix0aGlzKSkuY2FsbC5hcHBseSh0LFt0aGlzXS5jb25jYXQobCkpfX1dKSxufShndSk7aXUuTWFza2VkUmFuZ2U9a3U7dmFyIHl1PWZ1bmN0aW9uKHQpe1ByKG4sdCk7dmFyIGU9VnIobik7ZnVuY3Rpb24gbih0KXtyZXR1cm4geHIodGhpcyxuKSxlLmNhbGwodGhpcyxPYmplY3QuYXNzaWduKHt9LG4uREVGQVVMVFMsdCkpfXJldHVybiBPcihuLFt7a2V5OiJfdXBkYXRlIix2YWx1ZTpmdW5jdGlvbih0KXt0Lm1hc2s9PT1EYXRlJiZkZWxldGUgdC5tYXNrLHQucGF0dGVybiYmKHQubWFzaz10LnBhdHRlcm4pO3ZhciBlPXQuYmxvY2tzO3QuYmxvY2tzPU9iamVjdC5hc3NpZ24oe30sbi5HRVRfREVGQVVMVF9CTE9DS1MoKSksdC5taW4mJih0LmJsb2Nrcy5ZLmZyb209dC5taW4uZ2V0RnVsbFllYXIoKSksdC5tYXgmJih0LmJsb2Nrcy5ZLnRvPXQubWF4LmdldEZ1bGxZZWFyKCkpLHQubWluJiZ0Lm1heCYmdC5ibG9ja3MuWS5mcm9tPT09dC5ibG9ja3MuWS50byYmKHQuYmxvY2tzLm0uZnJvbT10Lm1pbi5nZXRNb250aCgpKzEsdC5ibG9ja3MubS50bz10Lm1heC5nZXRNb250aCgpKzEsdC5ibG9ja3MubS5mcm9tPT09dC5ibG9ja3MubS50byYmKHQuYmxvY2tzLmQuZnJvbT10Lm1pbi5nZXREYXRlKCksdC5ibG9ja3MuZC50bz10Lm1heC5nZXREYXRlKCkpKSxPYmplY3QuYXNzaWduKHQuYmxvY2tzLHRoaXMuYmxvY2tzLGUpLE9iamVjdC5rZXlzKHQuYmxvY2tzKS5mb3JFYWNoKChmdW5jdGlvbihlKXt2YXIgbj10LmJsb2Nrc1tlXTshKCJhdXRvZml4ImluIG4pJiYiYXV0b2ZpeCJpbiB0JiYobi5hdXRvZml4PXQuYXV0b2ZpeCl9KSksTnIoVHIobi5wcm90b3R5cGUpLCJfdXBkYXRlIix0aGlzKS5jYWxsKHRoaXMsdCl9fSx7a2V5OiJkb1ZhbGlkYXRlIix2YWx1ZTpmdW5jdGlvbigpe2Zvcih2YXIgdCxlPXRoaXMuZGF0ZSxpPWFyZ3VtZW50cy5sZW5ndGgscj1uZXcgQXJyYXkoaSksdT0wO3U8aTt1Kyspclt1XT1hcmd1bWVudHNbdV07cmV0dXJuKHQ9TnIoVHIobi5wcm90b3R5cGUpLCJkb1ZhbGlkYXRlIix0aGlzKSkuY2FsbC5hcHBseSh0LFt0aGlzXS5jb25jYXQocikpJiYoIXRoaXMuaXNDb21wbGV0ZXx8dGhpcy5pc0RhdGVFeGlzdCh0aGlzLnZhbHVlKSYmbnVsbCE9ZSYmKG51bGw9PXRoaXMubWlufHx0aGlzLm1pbjw9ZSkmJihudWxsPT10aGlzLm1heHx8ZTw9dGhpcy5tYXgpKX19LHtrZXk6ImlzRGF0ZUV4aXN0Iix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5mb3JtYXQodGhpcy5wYXJzZSh0LHRoaXMpLHRoaXMpLmluZGV4T2YodCk+PTB9fSx7a2V5OiJkYXRlIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50eXBlZFZhbHVlfSxzZXQ6ZnVuY3Rpb24odCl7dGhpcy50eXBlZFZhbHVlPXR9fSx7a2V5OiJ0eXBlZFZhbHVlIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pc0NvbXBsZXRlP05yKFRyKG4ucHJvdG90eXBlKSwidHlwZWRWYWx1ZSIsdGhpcyk6bnVsbH0sc2V0OmZ1bmN0aW9uKHQpe3pyKFRyKG4ucHJvdG90eXBlKSwidHlwZWRWYWx1ZSIsdCx0aGlzLCEwKX19LHtrZXk6Im1hc2tFcXVhbHMiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0PT09RGF0ZXx8TnIoVHIobi5wcm90b3R5cGUpLCJtYXNrRXF1YWxzIix0aGlzKS5jYWxsKHRoaXMsdCl9fV0pLG59KGd1KTt5dS5ERUZBVUxUUz17cGF0dGVybjoiZHsufWBtey59YFkiLGZvcm1hdDpmdW5jdGlvbih0KXtyZXR1cm4gdD9bU3RyaW5nKHQuZ2V0RGF0ZSgpKS5wYWRTdGFydCgyLCIwIiksU3RyaW5nKHQuZ2V0TW9udGgoKSsxKS5wYWRTdGFydCgyLCIwIiksdC5nZXRGdWxsWWVhcigpXS5qb2luKCIuIik6IiJ9LHBhcnNlOmZ1bmN0aW9uKHQpe3ZhciBlPXFyKHQuc3BsaXQoIi4iKSwzKSxuPWVbMF0saT1lWzFdLHI9ZVsyXTtyZXR1cm4gbmV3IERhdGUocixpLTEsbil9fSx5dS5HRVRfREVGQVVMVF9CTE9DS1M9ZnVuY3Rpb24oKXtyZXR1cm57ZDp7bWFzazprdSxmcm9tOjEsdG86MzEsbWF4TGVuZ3RoOjJ9LG06e21hc2s6a3UsZnJvbToxLHRvOjEyLG1heExlbmd0aDoyfSxZOnttYXNrOmt1LGZyb206MTkwMCx0bzo5OTk5fX19LGl1Lk1hc2tlZERhdGU9eXU7dmFyIG11PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe3hyKHRoaXMsdCl9cmV0dXJuIE9yKHQsW3trZXk6InNlbGVjdGlvblN0YXJ0IixnZXQ6ZnVuY3Rpb24oKXt2YXIgdDt0cnl7dD10aGlzLl91bnNhZmVTZWxlY3Rpb25TdGFydH1jYXRjaCh0KXt9cmV0dXJuIG51bGwhPXQ\/dDp0aGlzLnZhbHVlLmxlbmd0aH19LHtrZXk6InNlbGVjdGlvbkVuZCIsZ2V0OmZ1bmN0aW9uKCl7dmFyIHQ7dHJ5e3Q9dGhpcy5fdW5zYWZlU2VsZWN0aW9uRW5kfWNhdGNoKHQpe31yZXR1cm4gbnVsbCE9dD90OnRoaXMudmFsdWUubGVuZ3RofX0se2tleToic2VsZWN0Iix2YWx1ZTpmdW5jdGlvbih0LGUpe2lmKG51bGwhPXQmJm51bGwhPWUmJih0IT09dGhpcy5zZWxlY3Rpb25TdGFydHx8ZSE9PXRoaXMuc2VsZWN0aW9uRW5kKSl0cnl7dGhpcy5fdW5zYWZlU2VsZWN0KHQsZSl9Y2F0Y2godCl7fX19LHtrZXk6Il91bnNhZmVTZWxlY3QiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7fX0se2tleToiaXNBY3RpdmUiLGdldDpmdW5jdGlvbigpe3JldHVybiExfX0se2tleToiYmluZEV2ZW50cyIsdmFsdWU6ZnVuY3Rpb24odCl7fX0se2tleToidW5iaW5kRXZlbnRzIix2YWx1ZTpmdW5jdGlvbigpe319XSksdH0oKTtpdS5NYXNrRWxlbWVudD1tdTt2YXIgYnU9ZnVuY3Rpb24odCl7UHIobix0KTt2YXIgZT1WcihuKTtmdW5jdGlvbiBuKHQpe3ZhciBpO3JldHVybiB4cih0aGlzLG4pLChpPWUuY2FsbCh0aGlzKSkuaW5wdXQ9dCxpLl9oYW5kbGVycz17fSxpfXJldHVybiBPcihuLFt7a2V5OiJyb290RWxlbWVudCIsZ2V0OmZ1bmN0aW9uKCl7dmFyIHQsZSxuO3JldHVybiBudWxsIT09KHQ9bnVsbD09PShlPShuPXRoaXMuaW5wdXQpLmdldFJvb3ROb2RlKXx8dm9pZCAwPT09ZT92b2lkIDA6ZS5jYWxsKG4pKSYmdm9pZCAwIT09dD90OmRvY3VtZW50fX0se2tleToiaXNBY3RpdmUiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmlucHV0PT09dGhpcy5yb290RWxlbWVudC5hY3RpdmVFbGVtZW50fX0se2tleToiX3Vuc2FmZVNlbGVjdGlvblN0YXJ0IixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pbnB1dC5zZWxlY3Rpb25TdGFydH19LHtrZXk6Il91bnNhZmVTZWxlY3Rpb25FbmQiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmlucHV0LnNlbGVjdGlvbkVuZH19LHtrZXk6Il91bnNhZmVTZWxlY3QiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dGhpcy5pbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSh0LGUpfX0se2tleToidmFsdWUiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmlucHV0LnZhbHVlfSxzZXQ6ZnVuY3Rpb24odCl7dGhpcy5pbnB1dC52YWx1ZT10fX0se2tleToiYmluZEV2ZW50cyIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztPYmplY3Qua2V5cyh0KS5mb3JFYWNoKChmdW5jdGlvbihpKXtyZXR1cm4gZS5fdG9nZ2xlRXZlbnRIYW5kbGVyKG4uRVZFTlRTX01BUFtpXSx0W2ldKX0pKX19LHtrZXk6InVuYmluZEV2ZW50cyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzO09iamVjdC5rZXlzKHRoaXMuX2hhbmRsZXJzKS5mb3JFYWNoKChmdW5jdGlvbihlKXtyZXR1cm4gdC5fdG9nZ2xlRXZlbnRIYW5kbGVyKGUpfSkpfX0se2tleToiX3RvZ2dsZUV2ZW50SGFuZGxlciIsdmFsdWU6ZnVuY3Rpb24odCxlKXt0aGlzLl9oYW5kbGVyc1t0XSYmKHRoaXMuaW5wdXQucmVtb3ZlRXZlbnRMaXN0ZW5lcih0LHRoaXMuX2hhbmRsZXJzW3RdKSxkZWxldGUgdGhpcy5faGFuZGxlcnNbdF0pLGUmJih0aGlzLmlucHV0LmFkZEV2ZW50TGlzdGVuZXIodCxlKSx0aGlzLl9oYW5kbGVyc1t0XT1lKX19XSksbn0obXUpO2J1LkVWRU5UU19NQVA9e3NlbGVjdGlvbkNoYW5nZToia2V5ZG93biIsaW5wdXQ6ImlucHV0Iixkcm9wOiJkcm9wIixjbGljazoiY2xpY2siLGZvY3VzOiJmb2N1cyIsY29tbWl0OiJibHVyIn0saXUuSFRNTE1hc2tFbGVtZW50PWJ1O3ZhciBfdT1mdW5jdGlvbih0KXtQcihuLHQpO3ZhciBlPVZyKG4pO2Z1bmN0aW9uIG4oKXtyZXR1cm4geHIodGhpcyxuKSxlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1yZXR1cm4gT3Iobixbe2tleToiX3Vuc2FmZVNlbGVjdGlvblN0YXJ0IixnZXQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnJvb3RFbGVtZW50LGU9dC5nZXRTZWxlY3Rpb24mJnQuZ2V0U2VsZWN0aW9uKCksbj1lJiZlLmFuY2hvck9mZnNldCxpPWUmJmUuZm9jdXNPZmZzZXQ7cmV0dXJuIG51bGw9PWl8fG51bGw9PW58fG48aT9uOml9fSx7a2V5OiJfdW5zYWZlU2VsZWN0aW9uRW5kIixnZXQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnJvb3RFbGVtZW50LGU9dC5nZXRTZWxlY3Rpb24mJnQuZ2V0U2VsZWN0aW9uKCksbj1lJiZlLmFuY2hvck9mZnNldCxpPWUmJmUuZm9jdXNPZmZzZXQ7cmV0dXJuIG51bGw9PWl8fG51bGw9PW58fG4+aT9uOml9fSx7a2V5OiJfdW5zYWZlU2VsZWN0Iix2YWx1ZTpmdW5jdGlvbih0LGUpe2lmKHRoaXMucm9vdEVsZW1lbnQuY3JlYXRlUmFuZ2Upe3ZhciBuPXRoaXMucm9vdEVsZW1lbnQuY3JlYXRlUmFuZ2UoKTtuLnNldFN0YXJ0KHRoaXMuaW5wdXQuZmlyc3RDaGlsZHx8dGhpcy5pbnB1dCx0KSxuLnNldEVuZCh0aGlzLmlucHV0Lmxhc3RDaGlsZHx8dGhpcy5pbnB1dCxlKTt2YXIgaT10aGlzLnJvb3RFbGVtZW50LHI9aS5nZXRTZWxlY3Rpb24mJmkuZ2V0U2VsZWN0aW9uKCk7ciYmKHIucmVtb3ZlQWxsUmFuZ2VzKCksci5hZGRSYW5nZShuKSl9fX0se2tleToidmFsdWUiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmlucHV0LnRleHRDb250ZW50fSxzZXQ6ZnVuY3Rpb24odCl7dGhpcy5pbnB1dC50ZXh0Q29udGVudD10fX1dKSxufShidSk7aXUuSFRNTENvbnRlbnRlZGl0YWJsZU1hc2tFbGVtZW50PV91O3ZhciBBdT1bIm1hc2siXSxDdT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSxuKXt4cih0aGlzLHQpLHRoaXMuZWw9ZSBpbnN0YW5jZW9mIG11P2U6ZS5pc0NvbnRlbnRFZGl0YWJsZSYmIklOUFVUIiE9PWUudGFnTmFtZSYmIlRFWFRBUkVBIiE9PWUudGFnTmFtZT9uZXcgX3UoZSk6bmV3IGJ1KGUpLHRoaXMubWFza2VkPXN1KG4pLHRoaXMuX2xpc3RlbmVycz17fSx0aGlzLl92YWx1ZT0iIix0aGlzLl91bm1hc2tlZFZhbHVlPSIiLHRoaXMuX3NhdmVTZWxlY3Rpb249dGhpcy5fc2F2ZVNlbGVjdGlvbi5iaW5kKHRoaXMpLHRoaXMuX29uSW5wdXQ9dGhpcy5fb25JbnB1dC5iaW5kKHRoaXMpLHRoaXMuX29uQ2hhbmdlPXRoaXMuX29uQ2hhbmdlLmJpbmQodGhpcyksdGhpcy5fb25Ecm9wPXRoaXMuX29uRHJvcC5iaW5kKHRoaXMpLHRoaXMuX29uRm9jdXM9dGhpcy5fb25Gb2N1cy5iaW5kKHRoaXMpLHRoaXMuX29uQ2xpY2s9dGhpcy5fb25DbGljay5iaW5kKHRoaXMpLHRoaXMuYWxpZ25DdXJzb3I9dGhpcy5hbGlnbkN1cnNvci5iaW5kKHRoaXMpLHRoaXMuYWxpZ25DdXJzb3JGcmllbmRseT10aGlzLmFsaWduQ3Vyc29yRnJpZW5kbHkuYmluZCh0aGlzKSx0aGlzLl9iaW5kRXZlbnRzKCksdGhpcy51cGRhdGVWYWx1ZSgpLHRoaXMuX29uQ2hhbmdlKCl9cmV0dXJuIE9yKHQsW3trZXk6Im1hc2siLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1hc2tlZC5tYXNrfSxzZXQ6ZnVuY3Rpb24odCl7aWYoIXRoaXMubWFza0VxdWFscyh0KSlpZih0IGluc3RhbmNlb2YgaXUuTWFza2VkfHx0aGlzLm1hc2tlZC5jb25zdHJ1Y3RvciE9PXV1KHQpKXt2YXIgZT1zdSh7bWFzazp0fSk7ZS51bm1hc2tlZFZhbHVlPXRoaXMubWFza2VkLnVubWFza2VkVmFsdWUsdGhpcy5tYXNrZWQ9ZX1lbHNlIHRoaXMubWFza2VkLnVwZGF0ZU9wdGlvbnMoe21hc2s6dH0pfX0se2tleToibWFza0VxdWFscyIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU7cmV0dXJuIG51bGw9PXR8fChudWxsPT09KGU9dGhpcy5tYXNrZWQpfHx2b2lkIDA9PT1lP3ZvaWQgMDplLm1hc2tFcXVhbHModCkpfX0se2tleToidmFsdWUiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl92YWx1ZX0sc2V0OmZ1bmN0aW9uKHQpe3RoaXMubWFza2VkLnZhbHVlPXQsdGhpcy51cGRhdGVDb250cm9sKCksdGhpcy5hbGlnbkN1cnNvcigpfX0se2tleToidW5tYXNrZWRWYWx1ZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3VubWFza2VkVmFsdWV9LHNldDpmdW5jdGlvbih0KXt0aGlzLm1hc2tlZC51bm1hc2tlZFZhbHVlPXQsdGhpcy51cGRhdGVDb250cm9sKCksdGhpcy5hbGlnbkN1cnNvcigpfX0se2tleToidHlwZWRWYWx1ZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWFza2VkLnR5cGVkVmFsdWV9LHNldDpmdW5jdGlvbih0KXt0aGlzLm1hc2tlZC50eXBlZFZhbHVlPXQsdGhpcy51cGRhdGVDb250cm9sKCksdGhpcy5hbGlnbkN1cnNvcigpfX0se2tleToiX2JpbmRFdmVudHMiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5lbC5iaW5kRXZlbnRzKHtzZWxlY3Rpb25DaGFuZ2U6dGhpcy5fc2F2ZVNlbGVjdGlvbixpbnB1dDp0aGlzLl9vbklucHV0LGRyb3A6dGhpcy5fb25Ecm9wLGNsaWNrOnRoaXMuX29uQ2xpY2ssZm9jdXM6dGhpcy5fb25Gb2N1cyxjb21taXQ6dGhpcy5fb25DaGFuZ2V9KX19LHtrZXk6Il91bmJpbmRFdmVudHMiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5lbCYmdGhpcy5lbC51bmJpbmRFdmVudHMoKX19LHtrZXk6Il9maXJlRXZlbnQiLHZhbHVlOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1hcmd1bWVudHMubGVuZ3RoLG49bmV3IEFycmF5KGU+MT9lLTE6MCksaT0xO2k8ZTtpKyspbltpLTFdPWFyZ3VtZW50c1tpXTt2YXIgcj10aGlzLl9saXN0ZW5lcnNbdF07ciYmci5mb3JFYWNoKChmdW5jdGlvbih0KXtyZXR1cm4gdC5hcHBseSh2b2lkIDAsbil9KSl9fSx7a2V5OiJzZWxlY3Rpb25TdGFydCIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2N1cnNvckNoYW5naW5nP3RoaXMuX2NoYW5naW5nQ3Vyc29yUG9zOnRoaXMuZWwuc2VsZWN0aW9uU3RhcnR9fSx7a2V5OiJjdXJzb3JQb3MiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9jdXJzb3JDaGFuZ2luZz90aGlzLl9jaGFuZ2luZ0N1cnNvclBvczp0aGlzLmVsLnNlbGVjdGlvbkVuZH0sc2V0OmZ1bmN0aW9uKHQpe3RoaXMuZWwmJnRoaXMuZWwuaXNBY3RpdmUmJih0aGlzLmVsLnNlbGVjdCh0LHQpLHRoaXMuX3NhdmVTZWxlY3Rpb24oKSl9fSx7a2V5OiJfc2F2ZVNlbGVjdGlvbiIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLnZhbHVlIT09dGhpcy5lbC52YWx1ZSYmY29uc29sZS53YXJuKCJFbGVtZW50IHZhbHVlIHdhcyBjaGFuZ2VkIG91dHNpZGUgb2YgbWFzay4gU3luY3Jvbml6ZSBtYXNrIHVzaW5nIGBtYXNrLnVwZGF0ZVZhbHVlKClgIHRvIHdvcmsgcHJvcGVybHkuIiksdGhpcy5fc2VsZWN0aW9uPXtzdGFydDp0aGlzLnNlbGVjdGlvblN0YXJ0LGVuZDp0aGlzLmN1cnNvclBvc319fSx7a2V5OiJ1cGRhdGVWYWx1ZSIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLm1hc2tlZC52YWx1ZT10aGlzLmVsLnZhbHVlLHRoaXMuX3ZhbHVlPXRoaXMubWFza2VkLnZhbHVlfX0se2tleToidXBkYXRlQ29udHJvbCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLm1hc2tlZC51bm1hc2tlZFZhbHVlLGU9dGhpcy5tYXNrZWQudmFsdWUsbj10aGlzLnVubWFza2VkVmFsdWUhPT10fHx0aGlzLnZhbHVlIT09ZTt0aGlzLl91bm1hc2tlZFZhbHVlPXQsdGhpcy5fdmFsdWU9ZSx0aGlzLmVsLnZhbHVlIT09ZSYmKHRoaXMuZWwudmFsdWU9ZSksbiYmdGhpcy5fZmlyZUNoYW5nZUV2ZW50cygpfX0se2tleToidXBkYXRlT3B0aW9ucyIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5tYXNrLG49anIodCxBdSksaT0hdGhpcy5tYXNrRXF1YWxzKGUpLHI9IXR1KHRoaXMubWFza2VkLG4pO2kmJih0aGlzLm1hc2s9ZSksciYmdGhpcy5tYXNrZWQudXBkYXRlT3B0aW9ucyhuKSwoaXx8cikmJnRoaXMudXBkYXRlQ29udHJvbCgpfX0se2tleToidXBkYXRlQ3Vyc29yIix2YWx1ZTpmdW5jdGlvbih0KXtudWxsIT10JiYodGhpcy5jdXJzb3JQb3M9dCx0aGlzLl9kZWxheVVwZGF0ZUN1cnNvcih0KSl9fSx7a2V5OiJfZGVsYXlVcGRhdGVDdXJzb3IiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7dGhpcy5fYWJvcnRVcGRhdGVDdXJzb3IoKSx0aGlzLl9jaGFuZ2luZ0N1cnNvclBvcz10LHRoaXMuX2N1cnNvckNoYW5naW5nPXNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7ZS5lbCYmKGUuY3Vyc29yUG9zPWUuX2NoYW5naW5nQ3Vyc29yUG9zLGUuX2Fib3J0VXBkYXRlQ3Vyc29yKCkpfSksMTApfX0se2tleToiX2ZpcmVDaGFuZ2VFdmVudHMiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5fZmlyZUV2ZW50KCJhY2NlcHQiLHRoaXMuX2lucHV0RXZlbnQpLHRoaXMubWFza2VkLmlzQ29tcGxldGUmJnRoaXMuX2ZpcmVFdmVudCgiY29tcGxldGUiLHRoaXMuX2lucHV0RXZlbnQpfX0se2tleToiX2Fib3J0VXBkYXRlQ3Vyc29yIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuX2N1cnNvckNoYW5naW5nJiYoY2xlYXJUaW1lb3V0KHRoaXMuX2N1cnNvckNoYW5naW5nKSxkZWxldGUgdGhpcy5fY3Vyc29yQ2hhbmdpbmcpfX0se2tleToiYWxpZ25DdXJzb3IiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5jdXJzb3JQb3M9dGhpcy5tYXNrZWQubmVhcmVzdElucHV0UG9zKHRoaXMubWFza2VkLm5lYXJlc3RJbnB1dFBvcyh0aGlzLmN1cnNvclBvcyxLcikpfX0se2tleToiYWxpZ25DdXJzb3JGcmllbmRseSIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLnNlbGVjdGlvblN0YXJ0PT09dGhpcy5jdXJzb3JQb3MmJnRoaXMuYWxpZ25DdXJzb3IoKX19LHtrZXk6Im9uIix2YWx1ZTpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLl9saXN0ZW5lcnNbdF18fCh0aGlzLl9saXN0ZW5lcnNbdF09W10pLHRoaXMuX2xpc3RlbmVyc1t0XS5wdXNoKGUpLHRoaXN9fSx7a2V5OiJvZmYiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7aWYoIXRoaXMuX2xpc3RlbmVyc1t0XSlyZXR1cm4gdGhpcztpZighZSlyZXR1cm4gZGVsZXRlIHRoaXMuX2xpc3RlbmVyc1t0XSx0aGlzO3ZhciBuPXRoaXMuX2xpc3RlbmVyc1t0XS5pbmRleE9mKGUpO3JldHVybiBuPj0wJiZ0aGlzLl9saXN0ZW5lcnNbdF0uc3BsaWNlKG4sMSksdGhpc319LHtrZXk6Il9vbklucHV0Iix2YWx1ZTpmdW5jdGlvbih0KXtpZih0aGlzLl9pbnB1dEV2ZW50PXQsdGhpcy5fYWJvcnRVcGRhdGVDdXJzb3IoKSwhdGhpcy5fc2VsZWN0aW9uKXJldHVybiB0aGlzLnVwZGF0ZVZhbHVlKCk7dmFyIGU9bmV3IGV1KHRoaXMuZWwudmFsdWUsdGhpcy5jdXJzb3JQb3MsdGhpcy52YWx1ZSx0aGlzLl9zZWxlY3Rpb24pLG49dGhpcy5tYXNrZWQucmF3SW5wdXRWYWx1ZSxpPXRoaXMubWFza2VkLnNwbGljZShlLnN0YXJ0Q2hhbmdlUG9zLGUucmVtb3ZlZC5sZW5ndGgsZS5pbnNlcnRlZCxlLnJlbW92ZURpcmVjdGlvbikub2Zmc2V0LHI9bj09PXRoaXMubWFza2VkLnJhd0lucHV0VmFsdWU\/ZS5yZW1vdmVEaXJlY3Rpb246R3IsdT10aGlzLm1hc2tlZC5uZWFyZXN0SW5wdXRQb3MoZS5zdGFydENoYW5nZVBvcytpLHIpO3IhPT1HciYmKHU9dGhpcy5tYXNrZWQubmVhcmVzdElucHV0UG9zKHUsR3IpKSx0aGlzLnVwZGF0ZUNvbnRyb2woKSx0aGlzLnVwZGF0ZUN1cnNvcih1KSxkZWxldGUgdGhpcy5faW5wdXRFdmVudH19LHtrZXk6Il9vbkNoYW5nZSIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLnZhbHVlIT09dGhpcy5lbC52YWx1ZSYmdGhpcy51cGRhdGVWYWx1ZSgpLHRoaXMubWFza2VkLmRvQ29tbWl0KCksdGhpcy51cGRhdGVDb250cm9sKCksdGhpcy5fc2F2ZVNlbGVjdGlvbigpfX0se2tleToiX29uRHJvcCIsdmFsdWU6ZnVuY3Rpb24odCl7dC5wcmV2ZW50RGVmYXVsdCgpLHQuc3RvcFByb3BhZ2F0aW9uKCl9fSx7a2V5OiJfb25Gb2N1cyIsdmFsdWU6ZnVuY3Rpb24odCl7dGhpcy5hbGlnbkN1cnNvckZyaWVuZGx5KCl9fSx7a2V5OiJfb25DbGljayIsdmFsdWU6ZnVuY3Rpb24odCl7dGhpcy5hbGlnbkN1cnNvckZyaWVuZGx5KCl9fSx7a2V5OiJkZXN0cm95Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuX3VuYmluZEV2ZW50cygpLHRoaXMuX2xpc3RlbmVycy5sZW5ndGg9MCxkZWxldGUgdGhpcy5lbH19XSksdH0oKTtpdS5JbnB1dE1hc2s9Q3U7dmFyIEV1PWZ1bmN0aW9uKHQpe1ByKG4sdCk7dmFyIGU9VnIobik7ZnVuY3Rpb24gbigpe3JldHVybiB4cih0aGlzLG4pLGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiBPcihuLFt7a2V5OiJfdXBkYXRlIix2YWx1ZTpmdW5jdGlvbih0KXt0LmVudW0mJih0Lm1hc2s9IioiLnJlcGVhdCh0LmVudW1bMF0ubGVuZ3RoKSksTnIoVHIobi5wcm90b3R5cGUpLCJfdXBkYXRlIix0aGlzKS5jYWxsKHRoaXMsdCl9fSx7a2V5OiJkb1ZhbGlkYXRlIix2YWx1ZTpmdW5jdGlvbigpe2Zvcih2YXIgdCxlPXRoaXMsaT1hcmd1bWVudHMubGVuZ3RoLHI9bmV3IEFycmF5KGkpLHU9MDt1PGk7dSsrKXJbdV09YXJndW1lbnRzW3VdO3JldHVybiB0aGlzLmVudW0uc29tZSgoZnVuY3Rpb24odCl7cmV0dXJuIHQuaW5kZXhPZihlLnVubWFza2VkVmFsdWUpPj0wfSkpJiYodD1OcihUcihuLnByb3RvdHlwZSksImRvVmFsaWRhdGUiLHRoaXMpKS5jYWxsLmFwcGx5KHQsW3RoaXNdLmNvbmNhdChyKSl9fV0pLG59KGd1KTtpdS5NYXNrZWRFbnVtPUV1O3ZhciBGdT1mdW5jdGlvbih0KXtQcihuLHQpO3ZhciBlPVZyKG4pO2Z1bmN0aW9uIG4odCl7cmV0dXJuIHhyKHRoaXMsbiksZS5jYWxsKHRoaXMsT2JqZWN0LmFzc2lnbih7fSxuLkRFRkFVTFRTLHQpKX1yZXR1cm4gT3Iobixbe2tleToiX3VwZGF0ZSIsdmFsdWU6ZnVuY3Rpb24odCl7TnIoVHIobi5wcm90b3R5cGUpLCJfdXBkYXRlIix0aGlzKS5jYWxsKHRoaXMsdCksdGhpcy5fdXBkYXRlUmVnRXhwcygpfX0se2tleToiX3VwZGF0ZVJlZ0V4cHMiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9Il4iKyh0aGlzLmFsbG93TmVnYXRpdmU\/IlsrfFxcLV0\/IjoiIiksZT0odGhpcy5zY2FsZT8iKCIrSnIodGhpcy5yYWRpeCkrIlxcZHswLCIrdGhpcy5zY2FsZSsifSk\/IjoiIikrIiQiO3RoaXMuX251bWJlclJlZ0V4cElucHV0PW5ldyBSZWdFeHAodCsiKDB8KFsxLTldK1xcZCopKT8iK2UpLHRoaXMuX251bWJlclJlZ0V4cD1uZXcgUmVnRXhwKHQrIlxcZCoiK2UpLHRoaXMuX21hcFRvUmFkaXhSZWdFeHA9bmV3IFJlZ0V4cCgiWyIrdGhpcy5tYXBUb1JhZGl4Lm1hcChKcikuam9pbigiIikrIl0iLCJnIiksdGhpcy5fdGhvdXNhbmRzU2VwYXJhdG9yUmVnRXhwPW5ldyBSZWdFeHAoSnIodGhpcy50aG91c2FuZHNTZXBhcmF0b3IpLCJnIil9fSx7a2V5OiJfcmVtb3ZlVGhvdXNhbmRzU2VwYXJhdG9ycyIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHQucmVwbGFjZSh0aGlzLl90aG91c2FuZHNTZXBhcmF0b3JSZWdFeHAsIiIpfX0se2tleToiX2luc2VydFRob3VzYW5kc1NlcGFyYXRvcnMiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQuc3BsaXQodGhpcy5yYWRpeCk7cmV0dXJuIGVbMF09ZVswXS5yZXBsYWNlKC9cQig\/PShcZHszfSkrKD8hXGQpKS9nLHRoaXMudGhvdXNhbmRzU2VwYXJhdG9yKSxlLmpvaW4odGhpcy5yYWRpeCl9fSx7a2V5OiJkb1ByZXBhcmUiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlO3Q9dC5yZXBsYWNlKHRoaXMuX21hcFRvUmFkaXhSZWdFeHAsdGhpcy5yYWRpeCk7Zm9yKHZhciBpPXRoaXMuX3JlbW92ZVRob3VzYW5kc1NlcGFyYXRvcnModCkscj1hcmd1bWVudHMubGVuZ3RoLHU9bmV3IEFycmF5KHI+MT9yLTE6MCkscz0xO3M8cjtzKyspdVtzLTFdPWFyZ3VtZW50c1tzXTt2YXIgYT1RcigoZT1OcihUcihuLnByb3RvdHlwZSksImRvUHJlcGFyZSIsdGhpcykpLmNhbGwuYXBwbHkoZSxbdGhpcyxpXS5jb25jYXQodSkpKSxvPXFyKGEsMiksbD1vWzBdLGg9b1sxXTtyZXR1cm4gdCYmIWkmJihoLnNraXA9ITApLFtsLGhdfX0se2tleToiX3NlcGFyYXRvcnNDb3VudCIsdmFsdWU6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdJiZhcmd1bWVudHNbMV0sbj0wLGk9MDtpPHQ7KytpKXRoaXMuX3ZhbHVlLmluZGV4T2YodGhpcy50aG91c2FuZHNTZXBhcmF0b3IsaSk9PT1pJiYoKytuLGUmJih0Kz10aGlzLnRob3VzYW5kc1NlcGFyYXRvci5sZW5ndGgpKTtyZXR1cm4gbn19LHtrZXk6Il9zZXBhcmF0b3JzQ291bnRGcm9tU2xpY2UiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0\/YXJndW1lbnRzWzBdOnRoaXMuX3ZhbHVlO3JldHVybiB0aGlzLl9zZXBhcmF0b3JzQ291bnQodGhpcy5fcmVtb3ZlVGhvdXNhbmRzU2VwYXJhdG9ycyh0KS5sZW5ndGgsITApfX0se2tleToiZXh0cmFjdElucHV0Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTowLGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0\/YXJndW1lbnRzWzFdOnRoaXMudmFsdWUubGVuZ3RoLGk9YXJndW1lbnRzLmxlbmd0aD4yP2FyZ3VtZW50c1syXTp2b2lkIDAscj10aGlzLl9hZGp1c3RSYW5nZVdpdGhTZXBhcmF0b3JzKHQsZSksdT1xcihyLDIpO3JldHVybiB0PXVbMF0sZT11WzFdLHRoaXMuX3JlbW92ZVRob3VzYW5kc1NlcGFyYXRvcnMoTnIoVHIobi5wcm90b3R5cGUpLCJleHRyYWN0SW5wdXQiLHRoaXMpLmNhbGwodGhpcyx0LGUsaSkpfX0se2tleToiX2FwcGVuZENoYXJSYXciLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp7fTtpZighdGhpcy50aG91c2FuZHNTZXBhcmF0b3IpcmV0dXJuIE5yKFRyKG4ucHJvdG90eXBlKSwiX2FwcGVuZENoYXJSYXciLHRoaXMpLmNhbGwodGhpcyx0LGUpO3ZhciBpPWUudGFpbCYmZS5fYmVmb3JlVGFpbFN0YXRlP2UuX2JlZm9yZVRhaWxTdGF0ZS5fdmFsdWU6dGhpcy5fdmFsdWUscj10aGlzLl9zZXBhcmF0b3JzQ291bnRGcm9tU2xpY2UoaSk7dGhpcy5fdmFsdWU9dGhpcy5fcmVtb3ZlVGhvdXNhbmRzU2VwYXJhdG9ycyh0aGlzLnZhbHVlKTt2YXIgdT1OcihUcihuLnByb3RvdHlwZSksIl9hcHBlbmRDaGFyUmF3Iix0aGlzKS5jYWxsKHRoaXMsdCxlKTt0aGlzLl92YWx1ZT10aGlzLl9pbnNlcnRUaG91c2FuZHNTZXBhcmF0b3JzKHRoaXMuX3ZhbHVlKTt2YXIgcz1lLnRhaWwmJmUuX2JlZm9yZVRhaWxTdGF0ZT9lLl9iZWZvcmVUYWlsU3RhdGUuX3ZhbHVlOnRoaXMuX3ZhbHVlLGE9dGhpcy5fc2VwYXJhdG9yc0NvdW50RnJvbVNsaWNlKHMpO3JldHVybiB1LnRhaWxTaGlmdCs9KGEtcikqdGhpcy50aG91c2FuZHNTZXBhcmF0b3IubGVuZ3RoLHUuc2tpcD0hdS5yYXdJbnNlcnRlZCYmdD09PXRoaXMudGhvdXNhbmRzU2VwYXJhdG9yLHV9fSx7a2V5OiJfZmluZFNlcGFyYXRvckFyb3VuZCIsdmFsdWU6ZnVuY3Rpb24odCl7aWYodGhpcy50aG91c2FuZHNTZXBhcmF0b3Ipe3ZhciBlPXQtdGhpcy50aG91c2FuZHNTZXBhcmF0b3IubGVuZ3RoKzEsbj10aGlzLnZhbHVlLmluZGV4T2YodGhpcy50aG91c2FuZHNTZXBhcmF0b3IsZSk7aWYobjw9dClyZXR1cm4gbn1yZXR1cm4tMX19LHtrZXk6Il9hZGp1c3RSYW5nZVdpdGhTZXBhcmF0b3JzIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMuX2ZpbmRTZXBhcmF0b3JBcm91bmQodCk7bj49MCYmKHQ9bik7dmFyIGk9dGhpcy5fZmluZFNlcGFyYXRvckFyb3VuZChlKTtyZXR1cm4gaT49MCYmKGU9aSt0aGlzLnRob3VzYW5kc1NlcGFyYXRvci5sZW5ndGgpLFt0LGVdfX0se2tleToicmVtb3ZlIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTowLGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0\/YXJndW1lbnRzWzFdOnRoaXMudmFsdWUubGVuZ3RoLG49dGhpcy5fYWRqdXN0UmFuZ2VXaXRoU2VwYXJhdG9ycyh0LGUpLGk9cXIobiwyKTt0PWlbMF0sZT1pWzFdO3ZhciByPXRoaXMudmFsdWUuc2xpY2UoMCx0KSx1PXRoaXMudmFsdWUuc2xpY2UoZSkscz10aGlzLl9zZXBhcmF0b3JzQ291bnQoci5sZW5ndGgpO3RoaXMuX3ZhbHVlPXRoaXMuX2luc2VydFRob3VzYW5kc1NlcGFyYXRvcnModGhpcy5fcmVtb3ZlVGhvdXNhbmRzU2VwYXJhdG9ycyhyK3UpKTt2YXIgYT10aGlzLl9zZXBhcmF0b3JzQ291bnRGcm9tU2xpY2Uocik7cmV0dXJuIG5ldyBZcih7dGFpbFNoaWZ0OihhLXMpKnRoaXMudGhvdXNhbmRzU2VwYXJhdG9yLmxlbmd0aH0pfX0se2tleToibmVhcmVzdElucHV0UG9zIix2YWx1ZTpmdW5jdGlvbih0LGUpe2lmKCF0aGlzLnRob3VzYW5kc1NlcGFyYXRvcilyZXR1cm4gdDtzd2l0Y2goZSl7Y2FzZSBHcjpjYXNlIEtyOmNhc2UgJHI6dmFyIG49dGhpcy5fZmluZFNlcGFyYXRvckFyb3VuZCh0LTEpO2lmKG4+PTApe3ZhciBpPW4rdGhpcy50aG91c2FuZHNTZXBhcmF0b3IubGVuZ3RoO2lmKHQ8aXx8dGhpcy52YWx1ZS5sZW5ndGg8PWl8fGU9PT0kcilyZXR1cm4gbn1icmVhaztjYXNlIFdyOmNhc2UgWHI6dmFyIHI9dGhpcy5fZmluZFNlcGFyYXRvckFyb3VuZCh0KTtpZihyPj0wKXJldHVybiByK3RoaXMudGhvdXNhbmRzU2VwYXJhdG9yLmxlbmd0aH1yZXR1cm4gdH19LHtrZXk6ImRvVmFsaWRhdGUiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPSh0LmlucHV0P3RoaXMuX251bWJlclJlZ0V4cElucHV0OnRoaXMuX251bWJlclJlZ0V4cCkudGVzdCh0aGlzLl9yZW1vdmVUaG91c2FuZHNTZXBhcmF0b3JzKHRoaXMudmFsdWUpKTtpZihlKXt2YXIgaT10aGlzLm51bWJlcjtlPWUmJiFpc05hTihpKSYmKG51bGw9PXRoaXMubWlufHx0aGlzLm1pbj49MHx8dGhpcy5taW48PXRoaXMubnVtYmVyKSYmKG51bGw9PXRoaXMubWF4fHx0aGlzLm1heDw9MHx8dGhpcy5udW1iZXI8PXRoaXMubWF4KX1yZXR1cm4gZSYmTnIoVHIobi5wcm90b3R5cGUpLCJkb1ZhbGlkYXRlIix0aGlzKS5jYWxsKHRoaXMsdCl9fSx7a2V5OiJkb0NvbW1pdCIsdmFsdWU6ZnVuY3Rpb24oKXtpZih0aGlzLnZhbHVlKXt2YXIgdD10aGlzLm51bWJlcixlPXQ7bnVsbCE9dGhpcy5taW4mJihlPU1hdGgubWF4KGUsdGhpcy5taW4pKSxudWxsIT10aGlzLm1heCYmKGU9TWF0aC5taW4oZSx0aGlzLm1heCkpLGUhPT10JiYodGhpcy51bm1hc2tlZFZhbHVlPVN0cmluZyhlKSk7dmFyIGk9dGhpcy52YWx1ZTt0aGlzLm5vcm1hbGl6ZVplcm9zJiYoaT10aGlzLl9ub3JtYWxpemVaZXJvcyhpKSksdGhpcy5wYWRGcmFjdGlvbmFsWmVyb3MmJnRoaXMuc2NhbGU+MCYmKGk9dGhpcy5fcGFkRnJhY3Rpb25hbFplcm9zKGkpKSx0aGlzLl92YWx1ZT1pfU5yKFRyKG4ucHJvdG90eXBlKSwiZG9Db21taXQiLHRoaXMpLmNhbGwodGhpcyl9fSx7a2V5OiJfbm9ybWFsaXplWmVyb3MiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX3JlbW92ZVRob3VzYW5kc1NlcGFyYXRvcnModCkuc3BsaXQodGhpcy5yYWRpeCk7cmV0dXJuIGVbMF09ZVswXS5yZXBsYWNlKC9eKFxEKikoMCopKFxkKikvLChmdW5jdGlvbih0LGUsbixpKXtyZXR1cm4gZStpfSkpLHQubGVuZ3RoJiYhL1xkJC8udGVzdChlWzBdKSYmKGVbMF09ZVswXSsiMCIpLGUubGVuZ3RoPjEmJihlWzFdPWVbMV0ucmVwbGFjZSgvMCokLywiIiksZVsxXS5sZW5ndGh8fChlLmxlbmd0aD0xKSksdGhpcy5faW5zZXJ0VGhvdXNhbmRzU2VwYXJhdG9ycyhlLmpvaW4odGhpcy5yYWRpeCkpfX0se2tleToiX3BhZEZyYWN0aW9uYWxaZXJvcyIsdmFsdWU6ZnVuY3Rpb24odCl7aWYoIXQpcmV0dXJuIHQ7dmFyIGU9dC5zcGxpdCh0aGlzLnJhZGl4KTtyZXR1cm4gZS5sZW5ndGg8MiYmZS5wdXNoKCIiKSxlWzFdPWVbMV0ucGFkRW5kKHRoaXMuc2NhbGUsIjAiKSxlLmpvaW4odGhpcy5yYWRpeCl9fSx7a2V5OiJ1bm1hc2tlZFZhbHVlIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcmVtb3ZlVGhvdXNhbmRzU2VwYXJhdG9ycyh0aGlzLl9ub3JtYWxpemVaZXJvcyh0aGlzLnZhbHVlKSkucmVwbGFjZSh0aGlzLnJhZGl4LCIuIil9LHNldDpmdW5jdGlvbih0KXt6cihUcihuLnByb3RvdHlwZSksInVubWFza2VkVmFsdWUiLHQucmVwbGFjZSgiLiIsdGhpcy5yYWRpeCksdGhpcywhMCl9fSx7a2V5OiJ0eXBlZFZhbHVlIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gTnVtYmVyKHRoaXMudW5tYXNrZWRWYWx1ZSl9LHNldDpmdW5jdGlvbih0KXt6cihUcihuLnByb3RvdHlwZSksInVubWFza2VkVmFsdWUiLFN0cmluZyh0KSx0aGlzLCEwKX19LHtrZXk6Im51bWJlciIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHlwZWRWYWx1ZX0sc2V0OmZ1bmN0aW9uKHQpe3RoaXMudHlwZWRWYWx1ZT10fX0se2tleToiYWxsb3dOZWdhdGl2ZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2lnbmVkfHxudWxsIT10aGlzLm1pbiYmdGhpcy5taW48MHx8bnVsbCE9dGhpcy5tYXgmJnRoaXMubWF4PDB9fV0pLG59KHJ1KTtGdS5ERUZBVUxUUz17cmFkaXg6IiwiLHRob3VzYW5kc1NlcGFyYXRvcjoiIixtYXBUb1JhZGl4OlsiLiJdLHNjYWxlOjIsc2lnbmVkOiExLG5vcm1hbGl6ZVplcm9zOiEwLHBhZEZyYWN0aW9uYWxaZXJvczohMX0saXUuTWFza2VkTnVtYmVyPUZ1O3ZhciBTdT1mdW5jdGlvbih0KXtQcihuLHQpO3ZhciBlPVZyKG4pO2Z1bmN0aW9uIG4oKXtyZXR1cm4geHIodGhpcyxuKSxlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1yZXR1cm4gT3Iobixbe2tleToiX3VwZGF0ZSIsdmFsdWU6ZnVuY3Rpb24odCl7dC5tYXNrJiYodC52YWxpZGF0ZT10Lm1hc2spLE5yKFRyKG4ucHJvdG90eXBlKSwiX3VwZGF0ZSIsdGhpcykuY2FsbCh0aGlzLHQpfX1dKSxufShydSk7aXUuTWFza2VkRnVuY3Rpb249U3U7dmFyIHd1PVsiY29tcGlsZWRNYXNrcyIsImN1cnJlbnRNYXNrUmVmIiwiY3VycmVudE1hc2siXSxCdT1mdW5jdGlvbih0KXtQcihuLHQpO3ZhciBlPVZyKG4pO2Z1bmN0aW9uIG4odCl7dmFyIGk7cmV0dXJuIHhyKHRoaXMsbiksKGk9ZS5jYWxsKHRoaXMsT2JqZWN0LmFzc2lnbih7fSxuLkRFRkFVTFRTLHQpKSkuY3VycmVudE1hc2s9bnVsbCxpfXJldHVybiBPcihuLFt7a2V5OiJfdXBkYXRlIix2YWx1ZTpmdW5jdGlvbih0KXtOcihUcihuLnByb3RvdHlwZSksIl91cGRhdGUiLHRoaXMpLmNhbGwodGhpcyx0KSwibWFzayJpbiB0JiYodGhpcy5jb21waWxlZE1hc2tzPUFycmF5LmlzQXJyYXkodC5tYXNrKT90Lm1hc2subWFwKChmdW5jdGlvbih0KXtyZXR1cm4gc3UodCl9KSk6W10pfX0se2tleToiX2FwcGVuZENoYXJSYXciLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp7fSxuPXRoaXMuX2FwcGx5RGlzcGF0Y2godCxlKTtyZXR1cm4gdGhpcy5jdXJyZW50TWFzayYmbi5hZ2dyZWdhdGUodGhpcy5jdXJyZW50TWFzay5fYXBwZW5kQ2hhcih0LGUpKSxufX0se2tleToiX2FwcGx5RGlzcGF0Y2giLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0\/YXJndW1lbnRzWzBdOiIiLGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0\/YXJndW1lbnRzWzFdOnt9LG49ZS50YWlsJiZudWxsIT1lLl9iZWZvcmVUYWlsU3RhdGU\/ZS5fYmVmb3JlVGFpbFN0YXRlLl92YWx1ZTp0aGlzLnZhbHVlLGk9dGhpcy5yYXdJbnB1dFZhbHVlLHI9ZS50YWlsJiZudWxsIT1lLl9iZWZvcmVUYWlsU3RhdGU\/ZS5fYmVmb3JlVGFpbFN0YXRlLl9yYXdJbnB1dFZhbHVlOmksdT1pLnNsaWNlKHIubGVuZ3RoKSxzPXRoaXMuY3VycmVudE1hc2ssYT1uZXcgWXIsbz1zJiZzLnN0YXRlO2lmKHRoaXMuY3VycmVudE1hc2s9dGhpcy5kb0Rpc3BhdGNoKHQsT2JqZWN0LmFzc2lnbih7fSxlKSksdGhpcy5jdXJyZW50TWFzaylpZih0aGlzLmN1cnJlbnRNYXNrIT09cyl7aWYodGhpcy5jdXJyZW50TWFzay5yZXNldCgpLHIpe3ZhciBsPXRoaXMuY3VycmVudE1hc2suYXBwZW5kKHIse3JhdzohMH0pO2EudGFpbFNoaWZ0PWwuaW5zZXJ0ZWQubGVuZ3RoLW4ubGVuZ3RofXUmJihhLnRhaWxTaGlmdCs9dGhpcy5jdXJyZW50TWFzay5hcHBlbmQodSx7cmF3OiEwLHRhaWw6ITB9KS50YWlsU2hpZnQpfWVsc2UgdGhpcy5jdXJyZW50TWFzay5zdGF0ZT1vO3JldHVybiBhfX0se2tleToiX2FwcGVuZFBsYWNlaG9sZGVyIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX2FwcGx5RGlzcGF0Y2guYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiB0aGlzLmN1cnJlbnRNYXNrJiZ0LmFnZ3JlZ2F0ZSh0aGlzLmN1cnJlbnRNYXNrLl9hcHBlbmRQbGFjZWhvbGRlcigpKSx0fX0se2tleToiX2FwcGVuZEVhZ2VyIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX2FwcGx5RGlzcGF0Y2guYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiB0aGlzLmN1cnJlbnRNYXNrJiZ0LmFnZ3JlZ2F0ZSh0aGlzLmN1cnJlbnRNYXNrLl9hcHBlbmRFYWdlcigpKSx0fX0se2tleToiZG9EaXNwYXRjaCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0\/YXJndW1lbnRzWzFdOnt9O3JldHVybiB0aGlzLmRpc3BhdGNoKHQsdGhpcyxlKX19LHtrZXk6ImRvVmFsaWRhdGUiLHZhbHVlOmZ1bmN0aW9uKCl7Zm9yKHZhciB0LGUsaT1hcmd1bWVudHMubGVuZ3RoLHI9bmV3IEFycmF5KGkpLHU9MDt1PGk7dSsrKXJbdV09YXJndW1lbnRzW3VdO3JldHVybih0PU5yKFRyKG4ucHJvdG90eXBlKSwiZG9WYWxpZGF0ZSIsdGhpcykpLmNhbGwuYXBwbHkodCxbdGhpc10uY29uY2F0KHIpKSYmKCF0aGlzLmN1cnJlbnRNYXNrfHwoZT10aGlzLmN1cnJlbnRNYXNrKS5kb1ZhbGlkYXRlLmFwcGx5KGUscikpfX0se2tleToicmVzZXQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ7bnVsbD09PSh0PXRoaXMuY3VycmVudE1hc2spfHx2b2lkIDA9PT10fHx0LnJlc2V0KCksdGhpcy5jb21waWxlZE1hc2tzLmZvckVhY2goKGZ1bmN0aW9uKHQpe3JldHVybiB0LnJlc2V0KCl9KSl9fSx7a2V5OiJ2YWx1ZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY3VycmVudE1hc2s\/dGhpcy5jdXJyZW50TWFzay52YWx1ZToiIn0sc2V0OmZ1bmN0aW9uKHQpe3pyKFRyKG4ucHJvdG90eXBlKSwidmFsdWUiLHQsdGhpcywhMCl9fSx7a2V5OiJ1bm1hc2tlZFZhbHVlIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jdXJyZW50TWFzaz90aGlzLmN1cnJlbnRNYXNrLnVubWFza2VkVmFsdWU6IiJ9LHNldDpmdW5jdGlvbih0KXt6cihUcihuLnByb3RvdHlwZSksInVubWFza2VkVmFsdWUiLHQsdGhpcywhMCl9fSx7a2V5OiJ0eXBlZFZhbHVlIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jdXJyZW50TWFzaz90aGlzLmN1cnJlbnRNYXNrLnR5cGVkVmFsdWU6IiJ9LHNldDpmdW5jdGlvbih0KXt2YXIgZT1TdHJpbmcodCk7dGhpcy5jdXJyZW50TWFzayYmKHRoaXMuY3VycmVudE1hc2sudHlwZWRWYWx1ZT10LGU9dGhpcy5jdXJyZW50TWFzay51bm1hc2tlZFZhbHVlKSx0aGlzLnVubWFza2VkVmFsdWU9ZX19LHtrZXk6ImlzQ29tcGxldGUiLGdldDpmdW5jdGlvbigpe3ZhciB0O3JldHVybiBCb29sZWFuKG51bGw9PT0odD10aGlzLmN1cnJlbnRNYXNrKXx8dm9pZCAwPT09dD92b2lkIDA6dC5pc0NvbXBsZXRlKX19LHtrZXk6ImlzRmlsbGVkIixnZXQ6ZnVuY3Rpb24oKXt2YXIgdDtyZXR1cm4gQm9vbGVhbihudWxsPT09KHQ9dGhpcy5jdXJyZW50TWFzayl8fHZvaWQgMD09PXQ\/dm9pZCAwOnQuaXNGaWxsZWQpfX0se2tleToicmVtb3ZlIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0LGU9bmV3IFlyO3RoaXMuY3VycmVudE1hc2smJmUuYWdncmVnYXRlKCh0PXRoaXMuY3VycmVudE1hc2spLnJlbW92ZS5hcHBseSh0LGFyZ3VtZW50cykpLmFnZ3JlZ2F0ZSh0aGlzLl9hcHBseURpc3BhdGNoKCkpO3JldHVybiBlfX0se2tleToic3RhdGUiLGdldDpmdW5jdGlvbigpe3JldHVybiBPYmplY3QuYXNzaWduKHt9LE5yKFRyKG4ucHJvdG90eXBlKSwic3RhdGUiLHRoaXMpLHtfcmF3SW5wdXRWYWx1ZTp0aGlzLnJhd0lucHV0VmFsdWUsY29tcGlsZWRNYXNrczp0aGlzLmNvbXBpbGVkTWFza3MubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC5zdGF0ZX0pKSxjdXJyZW50TWFza1JlZjp0aGlzLmN1cnJlbnRNYXNrLGN1cnJlbnRNYXNrOnRoaXMuY3VycmVudE1hc2smJnRoaXMuY3VycmVudE1hc2suc3RhdGV9KX0sc2V0OmZ1bmN0aW9uKHQpe3ZhciBlPXQuY29tcGlsZWRNYXNrcyxpPXQuY3VycmVudE1hc2tSZWYscj10LmN1cnJlbnRNYXNrLHU9anIodCx3dSk7dGhpcy5jb21waWxlZE1hc2tzLmZvckVhY2goKGZ1bmN0aW9uKHQsbil7cmV0dXJuIHQuc3RhdGU9ZVtuXX0pKSxudWxsIT1pJiYodGhpcy5jdXJyZW50TWFzaz1pLHRoaXMuY3VycmVudE1hc2suc3RhdGU9ciksenIoVHIobi5wcm90b3R5cGUpLCJzdGF0ZSIsdSx0aGlzLCEwKX19LHtrZXk6ImV4dHJhY3RJbnB1dCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdDtyZXR1cm4gdGhpcy5jdXJyZW50TWFzaz8odD10aGlzLmN1cnJlbnRNYXNrKS5leHRyYWN0SW5wdXQuYXBwbHkodCxhcmd1bWVudHMpOiIifX0se2tleToiZXh0cmFjdFRhaWwiLHZhbHVlOmZ1bmN0aW9uKCl7Zm9yKHZhciB0LGUsaT1hcmd1bWVudHMubGVuZ3RoLHI9bmV3IEFycmF5KGkpLHU9MDt1PGk7dSsrKXJbdV09YXJndW1lbnRzW3VdO3JldHVybiB0aGlzLmN1cnJlbnRNYXNrPyh0PXRoaXMuY3VycmVudE1hc2spLmV4dHJhY3RUYWlsLmFwcGx5KHQscik6KGU9TnIoVHIobi5wcm90b3R5cGUpLCJleHRyYWN0VGFpbCIsdGhpcykpLmNhbGwuYXBwbHkoZSxbdGhpc10uY29uY2F0KHIpKX19LHtrZXk6ImRvQ29tbWl0Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuY3VycmVudE1hc2smJnRoaXMuY3VycmVudE1hc2suZG9Db21taXQoKSxOcihUcihuLnByb3RvdHlwZSksImRvQ29tbWl0Iix0aGlzKS5jYWxsKHRoaXMpfX0se2tleToibmVhcmVzdElucHV0UG9zIix2YWx1ZTpmdW5jdGlvbigpe2Zvcih2YXIgdCxlLGk9YXJndW1lbnRzLmxlbmd0aCxyPW5ldyBBcnJheShpKSx1PTA7dTxpO3UrKylyW3VdPWFyZ3VtZW50c1t1XTtyZXR1cm4gdGhpcy5jdXJyZW50TWFzaz8odD10aGlzLmN1cnJlbnRNYXNrKS5uZWFyZXN0SW5wdXRQb3MuYXBwbHkodCxyKTooZT1OcihUcihuLnByb3RvdHlwZSksIm5lYXJlc3RJbnB1dFBvcyIsdGhpcykpLmNhbGwuYXBwbHkoZSxbdGhpc10uY29uY2F0KHIpKX19LHtrZXk6Im92ZXJ3cml0ZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY3VycmVudE1hc2s\/dGhpcy5jdXJyZW50TWFzay5vdmVyd3JpdGU6TnIoVHIobi5wcm90b3R5cGUpLCJvdmVyd3JpdGUiLHRoaXMpfSxzZXQ6ZnVuY3Rpb24odCl7Y29uc29sZS53YXJuKCcib3ZlcndyaXRlIiBvcHRpb24gaXMgbm90IGF2YWlsYWJsZSBpbiBkeW5hbWljIG1hc2ssIHVzZSB0aGlzIG9wdGlvbiBpbiBzaWJsaW5ncycpfX0se2tleToiZWFnZXIiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmN1cnJlbnRNYXNrP3RoaXMuY3VycmVudE1hc2suZWFnZXI6TnIoVHIobi5wcm90b3R5cGUpLCJlYWdlciIsdGhpcyl9LHNldDpmdW5jdGlvbih0KXtjb25zb2xlLndhcm4oJyJlYWdlciIgb3B0aW9uIGlzIG5vdCBhdmFpbGFibGUgaW4gZHluYW1pYyBtYXNrLCB1c2UgdGhpcyBvcHRpb24gaW4gc2libGluZ3MnKX19LHtrZXk6Im1hc2tFcXVhbHMiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiBBcnJheS5pc0FycmF5KHQpJiZ0aGlzLmNvbXBpbGVkTWFza3MuZXZlcnkoKGZ1bmN0aW9uKGUsbil7dmFyIGk7cmV0dXJuIGUubWFza0VxdWFscyhudWxsPT09KGk9dFtuXSl8fHZvaWQgMD09PWk\/dm9pZCAwOmkubWFzayl9KSl9fV0pLG59KHJ1KTtCdS5ERUZBVUxUUz17ZGlzcGF0Y2g6ZnVuY3Rpb24odCxlLG4pe2lmKGUuY29tcGlsZWRNYXNrcy5sZW5ndGgpe3ZhciBpPWUucmF3SW5wdXRWYWx1ZSxyPWUuY29tcGlsZWRNYXNrcy5tYXAoKGZ1bmN0aW9uKGUscil7cmV0dXJuIGUucmVzZXQoKSxlLmFwcGVuZChpLHtyYXc6ITB9KSxlLmFwcGVuZCh0LG4pLHt3ZWlnaHQ6ZS5yYXdJbnB1dFZhbHVlLmxlbmd0aCxpbmRleDpyfX0pKTtyZXR1cm4gci5zb3J0KChmdW5jdGlvbih0LGUpe3JldHVybiBlLndlaWdodC10LndlaWdodH0pKSxlLmNvbXBpbGVkTWFza3NbclswXS5pbmRleF19fX0saXUuTWFza2VkRHluYW1pYz1CdTt2YXIgRHU9e01BU0tFRDoidmFsdWUiLFVOTUFTS0VEOiJ1bm1hc2tlZFZhbHVlIixUWVBFRDoidHlwZWRWYWx1ZSJ9O2Z1bmN0aW9uIHh1KHQpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTpEdS5NQVNLRUQsbj1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06RHUuTUFTS0VELGk9c3UodCk7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBpLnJ1bklzb2xhdGVkKChmdW5jdGlvbihpKXtyZXR1cm4gaVtlXT10LGlbbl19KSl9fWZ1bmN0aW9uIE11KHQpe2Zvcih2YXIgZT1hcmd1bWVudHMubGVuZ3RoLG49bmV3IEFycmF5KGU+MT9lLTE6MCksaT0xO2k8ZTtpKyspbltpLTFdPWFyZ3VtZW50c1tpXTtyZXR1cm4geHUuYXBwbHkodm9pZCAwLG4pKHQpfWl1LlBJUEVfVFlQRT1EdSxpdS5jcmVhdGVQaXBlPXh1LGl1LnBpcGU9TXU7dHJ5e2dsb2JhbFRoaXMuSU1hc2s9aXV9Y2F0Y2godCl7fXQuSFRNTENvbnRlbnRlZGl0YWJsZU1hc2tFbGVtZW50PV91LHQuSFRNTE1hc2tFbGVtZW50PWJ1LHQuSW5wdXRNYXNrPUN1LHQuTWFza0VsZW1lbnQ9bXUsdC5NYXNrZWQ9cnUsdC5NYXNrZWREYXRlPXl1LHQuTWFza2VkRHluYW1pYz1CdSx0Lk1hc2tlZEVudW09RXUsdC5NYXNrZWRGdW5jdGlvbj1TdSx0Lk1hc2tlZE51bWJlcj1GdSx0Lk1hc2tlZFBhdHRlcm49Z3UsdC5NYXNrZWRSYW5nZT1rdSx0Lk1hc2tlZFJlZ0V4cD1kdSx0LlBJUEVfVFlQRT1EdSx0LmNyZWF0ZU1hc2s9c3UsdC5jcmVhdGVQaXBlPXh1LHQuZGVmYXVsdD1pdSx0LnBpcGU9TXUsT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pfSkpOw0KLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW1hc2subWluLmpzLm1hcDsKLyoqIC9tL2pzL3ZhbmlsbGFqcy9mb3JtLmpzICoqLwp2YXIgX19fZDJjX2Zvcm1qc19jX29uPSIyMDI1LTA1LTIzIDE3OjA1OjIwIjsndXNlIHN0cmljdCc7dmFyIF9fX2QyY19mb3JtanNfY19vbj0iMjAyNC0wMS0zMSAxNDozMzowOSI7InVzZSBzdHJpY3QiO19fX2QyY19mb3JtanNfY19vbj0iMjAyMy0wNC0yNyAxMDozMDo0OSI7InVzZSBzdHJpY3QiOwpjb25zdCBGb3JtPWZ1bmN0aW9uKCl7dGhpcy5NQVNLUz17cGhvbmU6IjAwMCAwMDAtMDAwMCIsc2luOiIwMDAgMDAwIDAwMCIscG9zdGFsQ29kZToiYTBhIDBhMCJ9O3RoaXMubWFzaz0oYSxiKT0+e2E9ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChhKTthLmxlbmd0aCYmYS5mb3JFYWNoKGM9PntJTWFzayhjLGIpfSl9O3RoaXMubWFza051bWJlcj0oYSxiKT0+e2xldCBjPXttYXNrOk51bWJlcixtaW46MH07YiYmKGMubWF4PWIpO3RoaXMubWFzayhhLGMpfTt0aGlzLm1hc2tQaG9uZT1hPT57dGhpcy5tYXNrKGEse21hc2s6W3ttYXNrOnRoaXMuTUFTS1MucGhvbmV9LHttYXNrOmAxICR7dGhpcy5NQVNLUy5waG9uZX1gfV19KX07dGhpcy5tYXNrUG9zdGFsQ29kZT1hPT57dGhpcy5tYXNrKGEse21hc2s6dGhpcy5NQVNLUy5wb3N0YWxDb2RlLHByZXBhcmU6Yj0+Yi50b1VwcGVyQ2FzZSgpfSl9fTsKLyoqIC9tL2pzL2dlbmVyaWNNYWlsLmpzICoqLwp2YXIgX19fZDJjX2dlbmVyaWNNYWlsanNfY19vbj0iMjAyNS0wNS0yMyAxNzoxMDoxNSI7J3VzZSBzdHJpY3QnO3ZhciBfX19kMmNfZ2VuZXJpY01haWxqc19jX29uPSIyMDI0LTExLTI4IDEwOjMwOjExIjsidXNlIHN0cmljdCI7CkdlbmVyaWNNYWlsPWZ1bmN0aW9uKHYpe2Z1bmN0aW9uIG0oYyl7Yz1jLnRvU3RyaW5nKCk7cmV0dXJuIGMucmVwbGFjZSgvPFwvP1tePl0rPi9naSwiIil9dmFyIGI9dGhpcztiLm1haWxJRD12O2IuZW1haWxTZW50PWZ1bmN0aW9uKGMpe21haWxTZW50SGFuZGxlcj1nZXRNYWlsU2VudEhhbmRsZXIoYi5tYWlsSUQpO2M\/KCJ1bmRlZmluZWQiIT10eXBlb2YgbWFpbFNlbnRIYW5kbGVyJiYobWFpbFNlbnRIYW5kbGVyLnRpbWVvdXRDYWxsYmFjaz1iLm1zZ1NlbnRGaW5pc2hlZEhhbmRsZXIsbWFpbFNlbnRIYW5kbGVyLnNob3dTdWNjZXNzKCkpLGIuY2xlYXJGb3JtKCkpOiJ1bmRlZmluZWQiIT10eXBlb2YgbWFpbFNlbnRIYW5kbGVyJiYobWFpbFNlbnRIYW5kbGVyLnRpbWVvdXRDYWxsYmFjaz1iLm1zZ1NlbnRGaW5pc2hlZEhhbmRsZXIsbWFpbFNlbnRIYW5kbGVyLnNob3dGYWlsKCkpfTtiLmNsZWFyRm9ybT1mdW5jdGlvbigpe3ZhciBjPWIuanFTY29wZTtpZigidW5kZWZpbmVkIj09PQp0eXBlb2YgY3x8IiI9PWMpaWYoJCgiLklubmVyQm94TGF5ZXIiKS5sZW5ndGgpYz0iLklubmVyQm94TGF5ZXIiO2Vsc2UgcmV0dXJuOyQoIi5qcVRyYW5zZm9ybUlucHV0V3JhcHBlciBpbnB1dCwgLmpxVHJhbnNmb3JtVGV4dGFyZWEgdGV4dGFyZWEiLGMpLmVhY2goZnVuY3Rpb24oKXskKHRoaXMpLnZhbCgiIik7JCh0aGlzKS5hdHRyKCJwbGFjZWhvbGRlciIsJCh0aGlzKS5hdHRyKCJhbHQiKSl9KTskKCIjZm9vdGVyRGl2ICNsZWFkU2VudCIpLnJlbW92ZSgpfTtiLm1zZ1NlbnRGaW5pc2hlZEhhbmRsZXI9ZnVuY3Rpb24oKXt9O2IuYmFuZHBMaW5rPWZ1bmN0aW9uKGMpe3JldHVybiBlbWFpbEhhbmRsZXIuYmFuZHBMaW5rKGMpfTtiLnNhdmU9ZnVuY3Rpb24oYyl7InVuZGVmaW5lZCIhPT10eXBlb2YgZGVidWcmJmRlYnVnKGMpO2lmKCFiLl92YWxpZGF0ZUZpZWxkcygpKXJldHVybiAkKCJodG1sLCBib2R5IikuYW5pbWF0ZSh7c2Nyb2xsVG9wOiQoIi52YWxpZGl0eS1lcnJvbmVvdXM6Zmlyc3QiKS5vZmZzZXQoKS50b3AtCjEwMH0sMkUzKSwhMTtiLnByZXBhcmUoKTtlbWFpbEhhbmRsZXIuc2VuZE1haWwoKX07Yi5wcmVwYXJlPWZ1bmN0aW9uKCl7dmFyIGM9ZnVuY3Rpb24oaCl7eD0oaCsiIikuc3BsaXQoIi4iKTt4MT14WzBdO3gyPTE8eC5sZW5ndGg\/Ii4iK3hbMV06IiI7Zm9yKGg9LyhcZCspKFxkezN9KS87aC50ZXN0KHgxKTspeDE9eDEucmVwbGFjZShoLCIkMSwkMiIpO3JldHVybiB4MSt4Mn0sZz1iLmpxU2NvcGU\/Yi5qcVNjb3BlOiIuSW5uZXJCb3hMYXllciIsaz0iIixhPSIiLGU9IiIsZD0iIixmPSIiO2s9MDwkKCIjZW1haWxTdWJqZWN0RGVmXyIrYi5tYWlsSUQsZykubGVuZ3RoPyQoIiNlbWFpbFN1YmplY3REZWZfIitiLm1haWxJRCxnKS50ZXh0KCk6MDwkKCIjZW1haWxTdWJqZWN0RGVmIixnKS5sZW5ndGg\/JCgiI2VtYWlsU3ViamVjdERlZiIsZykudGV4dCgpOiQoIiNlbWFpbFN1YmplY3REZWYiKS50ZXh0KCk7YT0wPCQoIiNlbWFpbEJvZHlEZWZfIitiLm1haWxJRCxnKS5sZW5ndGg\/JCgiI2VtYWlsQm9keURlZl8iKwpiLm1haWxJRCxnKS5odG1sKCk6JCgiI2VtYWlsQm9keURlZiIsZykubGVuZ3RoPyQoIiNlbWFpbEJvZHlEZWYiLGcpLmh0bWwoKTokKCIjZW1haWxCb2R5RGVmIikuaHRtbCgpO3ZhciBsPSJ1bmRlZmluZWQiIT10eXBlb2YgJCgiI3RleHRJc0RlbW8iKS5hdHRyKCJpZCIpJiYiMSI9PSQoIiN0ZXh0SXNEZW1vIikudmFsKCk\/ITA6ITE7InVuZGVmaW5lZCIhPXR5cGVvZiBtYWlsUXVpY2tFbWFpbCYmbnVsbCE9bWFpbFF1aWNrRW1haWwmJiJzdHJpbmciPT09dHlwZW9mIG1haWxRdWlja0VtYWlsLm1lc3NhZ2UmJihlbWFpbEhhbmRsZXIuY29tbWVudHM9bWFpbFF1aWNrRW1haWwubWVzc2FnZSk7c3dpdGNoKGIubWFpbElEKXtjYXNlICJRdWlja0VtYWlsIjpjYXNlICJRdWlja0VtYWlsTmV3SW52ZW50b3J5IjpjYXNlICJtZW51Q29udGFjdFVzIjplbWFpbEhhbmRsZXIucG9wdXBkaXY9InF1aWNrRW1haWxGb3JtIjttYWlsUXVpY2tFbWFpbC5hc3NpZ25WYWx1ZXMoKTthPWEucmVwbGFjZSgve1wkTkFNRX0vZywKZDJjbWVkaWEuY2FwaXRhbGlzZUZpcnN0TGV0dGVyT2ZFdmVyeVdvcmQobWFpbFF1aWNrRW1haWwubmFtZSkpLnJlcGxhY2UoL3tcJEVNQUlMfS9nLG1haWxRdWlja0VtYWlsLmVtYWlsKTthPWEucmVwbGFjZSgve1wkRU1BSUxQSE9ORX0vZyxtYWlsUXVpY2tFbWFpbC5waG9uZSkucmVwbGFjZSgve1wkTUVTU0FHRX0vZyxtYWlsUXVpY2tFbWFpbC5tZXNzYWdlKTthPWEucmVwbGFjZSgve1wkRU1BSUxNQUtFfS9nLG1haWxRdWlja0VtYWlsLm1ha2UpLnJlcGxhY2UoL3tcJEVNQUlMTU9ERUx9L2csbWFpbFF1aWNrRW1haWwubW9kZWwpO2E9YS5yZXBsYWNlKC97XCRFTUFJTFlFQVJ9L2csbWFpbFF1aWNrRW1haWwueWVhcikucmVwbGFjZSgve1wkU1RPQ0tOVU1CRVJ9L2csbWFpbFF1aWNrRW1haWwuc3RvY2tOdW1iZXIpO2E9YS5yZXBsYWNlKC97XCRERVBBUlRNRU5UMn0vZyxtYWlsUXVpY2tFbWFpbC5kZXBhcnRtZW50KTthPWEucmVwbGFjZSgvQ2l0eTovZywiIik7InVuZGVmaW5lZCIhPQp0eXBlb2YgbWFpbFF1aWNrRW1haWwucm9hZFRlc3QmJm51bGwhPW1haWxRdWlja0VtYWlsLnJvYWRUZXN0JiYoYT1hLnJlcGxhY2UoL3tcJEVNQUlMUk9BRFRFU1R9L2csbWFpbFF1aWNrRW1haWwucm9hZFRlc3QpLnJlcGxhY2UoL3tcJEVNQUlMQ0FSRH0vZyxtYWlsUXVpY2tFbWFpbC5naWZ0Q2FyZCkpO2VtYWlsSGFuZGxlci51c2VyRW1haWw9bWFpbFF1aWNrRW1haWwuZW1haWw7ZW1haWxIYW5kbGVyLnVzZXJGaXJzdE5hbWU9bWFpbFF1aWNrRW1haWwubmFtZTtlbWFpbEhhbmRsZXIudXNlclBob25lPW1haWxRdWlja0VtYWlsLnBob25lO2U9bWFpbFF1aWNrRW1haWwubWVzc2FnZTtlbWFpbEhhbmRsZXIudHJpbT0kKCIjZXhwcmVzc2NhcnRyaW0iKS52YWwoKTtlbWFpbEhhbmRsZXIudmluPSQoIiNleHByZXNzY2FydmluIikudmFsKCk7ZW1haWxIYW5kbGVyLnByaWNlPSQoIiNleHByZXNzY2FycHJpY2UiKS52YWwoKTtlbWFpbEhhbmRsZXIubWFrZT0kKCIjZXhwcmVzc2Nhcm1ha2UiKS52YWwoKTsKZW1haWxIYW5kbGVyLm1vZGVsPSQoIiNleHByZXNzY2FybW9kZWwiKS52YWwoKTtlbWFpbEhhbmRsZXIueWVhcj0kKCIjZXhwcmVzc2NhcnllYXIiKS52YWwoKTtlbWFpbEhhbmRsZXIuc3RvY2tOdW1iZXI9bWFpbFF1aWNrRW1haWwuc3RvY2tOdW1iZXI7InVuZGVmaW5lZCI9PXR5cGVvZiAkKCIjZXhwcmVzc2NhcmlkIikuYXR0cigiaWQiKT9lbWFpbEhhbmRsZXIuY2FyaWQ9IiI6ZW1haWxIYW5kbGVyLmNhcmlkPSQoIiNleHByZXNzY2FyaWQiKS52YWwoKTskKCJpbnB1dC5sYWJlbGVtYWlsIikudmFsKCJEZW1hbmRlcy1FeHByZXNzIik7JCgiaW5wdXQuaXNleHByZXNzIikudmFsKCIxIik7InVuZGVmaW5lZCIhPXR5cGVvZiBzZWFyY2hFbmdpbmUmJigkKCJpbnB1dC5icmFuZGVtYWlsIikudmFsKG1haWxRdWlja0VtYWlsLm1ha2UpLCQoImlucHV0Lm1vZGVsZW1haWwiKS52YWwobWFpbFF1aWNrRW1haWwubW9kZWwpLCQoImlucHV0LnllYXJlbWFpbCIpLnZhbChtYWlsUXVpY2tFbWFpbC55ZWFyKSk7CiJ1bmRlZmluZWQiIT10eXBlb2YgJCgiI2V4cHJlc3NjYXJpZCIpLmF0dHIoImlkIik\/MDwkKCIjZXhwcmVzc2NhcmlkIikudmFsKCkubGVuZ3RoP2VtYWlsSGFuZGxlci5jb25kaXRpb249IlVzZWQiOmVtYWlsSGFuZGxlci5jb25kaXRpb249MDxtYWlsUXVpY2tFbWFpbC5tYWtlLmxlbmd0aD8iTmV3IjoiVW5rbm93biI6ZW1haWxIYW5kbGVyLmNvbmRpdGlvbj0iVW5rbm93biI7IiIhPT1tYWlsUXVpY2tFbWFpbC5kZXBhcnRtZW50JiYoZW1haWxIYW5kbGVyLmRlcGFydG1lbnQ9bWFpbFF1aWNrRW1haWwuZGVwYXJ0bWVudCk7ZD1tYWlsUXVpY2tFbWFpbC5nZXRTZW5kVG8oKTtmPW1haWxRdWlja0VtYWlsLmdldFNlbmRUb0FkZigpO2JyZWFrO2Nhc2UgIlJlYmF0ZUNvdXBvblByb21vIjptYWlsUXVpY2tFbWFpbC5hc3NpZ25WYWx1ZXMoKTtlPW1haWxRdWlja0VtYWlsLm1lc3NhZ2U7YT1hLnJlcGxhY2UoL3tcJE5BTUV9L2csZDJjbWVkaWEuY2FwaXRhbGlzZUZpcnN0TGV0dGVyT2ZFdmVyeVdvcmQobWFpbFF1aWNrRW1haWwubmFtZSkpLnJlcGxhY2UoL3tcJEVNQUlMfS9nLAptYWlsUXVpY2tFbWFpbC5lbWFpbCk7YT1hLnJlcGxhY2UoL3tcJEVNQUlMUEhPTkV9L2csbWFpbFF1aWNrRW1haWwucGhvbmUpLnJlcGxhY2UoL3tcJE1FU1NBR0V9L2csbWFpbFF1aWNrRW1haWwubWVzc2FnZSk7YT1hLnJlcGxhY2UoL3tcJENPVVBPTk1BS0V9L2csJCgiI2NvdXBvbm1ha2UiKS52YWwoKSkucmVwbGFjZSgve1wkQ09VUE9OTU9ERUx9L2csJCgiI2NvdXBvbm1vZGVsIikudmFsKCkpO2E9YS5yZXBsYWNlKC97XCRDT1VQT05ZRUFSfS9nLCQoIiNjb3Vwb255ZWFyIikudmFsKCkpLnJlcGxhY2UoL3tcJENPVVBPTlNUT0NLTlVNQkVSfS9nLCQoIiNjb3Vwb25zdG9ja251bWJlciIpLnZhbCgpKTthPWEucmVwbGFjZSgve1wkQ09VUE9OVkFMVUV9L2csJCgiI2NvdXBvblZhbHVlIikudmFsKCkrIiQiKS5yZXBsYWNlKC97XCRQUklDRX0vZywkKCIjdmVoaWNsZU9yaWdQcmljZSIpLnZhbCgpKyIkIik7ZW1haWxIYW5kbGVyLm1ha2U9JCgiI2NvdXBvbm1ha2UiKS52YWwoKTsKZW1haWxIYW5kbGVyLm1vZGVsPSQoIiNjb3Vwb25tb2RlbCIpLnZhbCgpO2VtYWlsSGFuZGxlci55ZWFyPSQoIiNjb3Vwb255ZWFyIikudmFsKCk7ZW1haWxIYW5kbGVyLnVzZXJFbWFpbD1tYWlsUXVpY2tFbWFpbC5lbWFpbDtlbWFpbEhhbmRsZXIudXNlckZpcnN0TmFtZT1tYWlsUXVpY2tFbWFpbC5uYW1lO2VtYWlsSGFuZGxlci51c2VyUGhvbmU9bWFpbFF1aWNrRW1haWwucGhvbmU7ZW1haWxIYW5kbGVyLnRyaW09JCgiI2NvdXBvbnZlaGljbGV0cmltIikudmFsKCk7ZW1haWxIYW5kbGVyLnZpbj0kKCIjY291cG9udmVoaWNsZXZpbiIpLnZhbCgpO2VtYWlsSGFuZGxlci5wcmljZT0kKCIjdmVoaWNsZU9yaWdQcmljZSIpLnZhbCgpO2VtYWlsSGFuZGxlci5zdG9ja051bWJlcj0kKCIjY291cG9uc3RvY2tudW1iZXIiKS52YWwoKTtlbWFpbEhhbmRsZXIuY2FyaWQ9JCgiI2NvdXBvbnZlaGljbGVpZCIpLnZhbCgpOyQoImlucHV0LmxhYmVsZW1haWwiKS52YWwoIlJlYmF0ZUNvdXBvblByb21vIik7CiJ1bmRlZmluZWQiIT10eXBlb2Ygc2VhcmNoRW5naW5lJiYoJCgiaW5wdXQuYnJhbmRlbWFpbCIpLnZhbCgkKCIjY291cG9ubWFrZSIpLnZhbCgpKSwkKCJpbnB1dC5tb2RlbGVtYWlsIikudmFsKCQoIiNjb3Vwb25tb2RlbCIpLnZhbCgpKSwkKCJpbnB1dC55ZWFyZW1haWwiKS52YWwoJCgiI2NvdXBvbnllYXIiKS52YWwoKSkpO2VtYWlsSGFuZGxlci5jb25kaXRpb249IlVzZWQiO2IuZW1haWxTZW50PWZ1bmN0aW9uKGgpeyQoIi5jbG9zZS1yZXZlYWwtbW9kYWwiKS50cmlnZ2VyKCJjbGljayIpfTticmVhaztjYXNlICJDYXJwcm9vZk1haWwiOmVtYWlsSGFuZGxlci5wb3B1cGRpdj0iY2FycHJvb2ZNYWluRGl2IjtrPSQoIiNlbWFpbFN1YmplY3REZWYyIikudGV4dCgpO2E9JCgiI2VtYWlsQm9keURlZjIiKS5odG1sKCk7JCgiaW5wdXQubGFiZWxlbWFpbCIpLnZhbCgiRGVtYW5kZXMtQ2FyUHJvb2YiKTskKCJpbnB1dC5pc2V4cHJlc3MiKS52YWwoIjAiKTskKCJpbnB1dC5icmFuZGVtYWlsIikudmFsKGNhcnByb29mSGFuZGxlci5tYWtlKTsKJCgiaW5wdXQubW9kZWxlbWFpbCIpLnZhbChjYXJwcm9vZkhhbmRsZXIubW9kZWwpOyQoImlucHV0LnllYXJlbWFpbCIpLnZhbChjYXJwcm9vZkhhbmRsZXIueWVhcik7YT1hLnJlcGxhY2UoL3tcJE5BTUV9L2csZDJjbWVkaWEuY2FwaXRhbGlzZUZpcnN0TGV0dGVyT2ZFdmVyeVdvcmQoY2FycHJvb2ZIYW5kbGVyLm5hbWUpKS5yZXBsYWNlKC97XCRFTUFJTH0vZyxjYXJwcm9vZkhhbmRsZXIuZW1haWwpO2E9YS5yZXBsYWNlKC97XCRFTUFJTE1BS0V9L2csY2FycHJvb2ZIYW5kbGVyLm1ha2UpLnJlcGxhY2UoL3tcJEVNQUlMTU9ERUx9L2csY2FycHJvb2ZIYW5kbGVyLm1vZGVsKS5yZXBsYWNlKC97XCRFTUFJTFlFQVJ9L2csY2FycHJvb2ZIYW5kbGVyLnllYXIpO2E9YS5yZXBsYWNlKC97XCRDT0xPUn0vZyxjYXJwcm9vZkhhbmRsZXIuY29sb3IpLnJlcGxhY2UoL3tcJFNUT0NLTlVNQkVSfS9nLGNhcnByb29mSGFuZGxlci5zdG9ja051bWJlcikucmVwbGFjZSgve1wkRU1BSUxQSE9ORX0vZywKY2FycHJvb2ZIYW5kbGVyLnBob25lKTtlbWFpbEhhbmRsZXIudXNlckVtYWlsPWNhcnByb29mSGFuZGxlci5lbWFpbDtlbWFpbEhhbmRsZXIudXNlckZpcnN0TmFtZT1jYXJwcm9vZkhhbmRsZXIubmFtZTtlbWFpbEhhbmRsZXIudXNlclBob25lPWNhcnByb29mSGFuZGxlci5waG9uZTtlbWFpbEhhbmRsZXIubWFrZT1jYXJwcm9vZkhhbmRsZXIubWFrZTtlbWFpbEhhbmRsZXIubW9kZWw9Y2FycHJvb2ZIYW5kbGVyLm1vZGVsO2VtYWlsSGFuZGxlci55ZWFyPWNhcnByb29mSGFuZGxlci55ZWFyO2VtYWlsSGFuZGxlci50cmltPSQoIiNjYXJwcm9vZmNhcnRyaW0iKS52YWwoKTtlbWFpbEhhbmRsZXIudmluPSQoIiNjYXJwcm9vZmNhcnZpbiIpLnZhbCgpO2VtYWlsSGFuZGxlci5wcmljZT0kKCIjY2FycHJvb2ZjYXJwcmljZSIpLnZhbCgpO2VtYWlsSGFuZGxlci5zdG9ja051bWJlcj1jYXJwcm9vZkhhbmRsZXIuc3RvY2tOdW1iZXI7ZW1haWxIYW5kbGVyLmNhcmlkPSQoIiNjYXJwcm9vZmNhcmlkIikudmFsKCk7CmQ9Y2FycHJvb2ZIYW5kbGVyLnNlbmRUby5sZW5ndGgmJiIiIT1jYXJwcm9vZkhhbmRsZXIuc2VuZFRvP2NhcnByb29mSGFuZGxlci5zZW5kVG86JCgiI3RleHRTZW5kVG9FbWFpbCIpLmxlbmd0aD8kKCIjdGV4dFNlbmRUb0VtYWlsIikudmFsKCk6IiI7Zj1jYXJwcm9vZkhhbmRsZXIuc2VuZFRvQWRmLmxlbmd0aCYmIiIhPWNhcnByb29mSGFuZGxlci5zZW5kVG9BZGY\/Y2FycHJvb2ZIYW5kbGVyLnNlbmRUb0FkZjokKCIjdGV4dFNlbmRUb0VtYWlsQURGIikubGVuZ3RoPyQoIiN0ZXh0U2VuZFRvRW1haWxBREYiKS52YWwoKToiIjtlbWFpbEhhbmRsZXIuZGVhbGVyTmFtZT1jYXJwcm9vZkhhbmRsZXIuZGVhbGVyTmFtZTticmVhaztjYXNlICJDdXN0b21lclJhdGluZyI6ZW1haWxIYW5kbGVyLnBvcHVwZGl2PSJDdXN0b21lclJhdGluZyI7bWFpbFJhdGluZy5hc3NpZ25WYWx1ZXMoKTthPWEucmVwbGFjZSgve1wkUkFUSU5HTUVTU0FHRX0vZyxtYWlsUmF0aW5nLm1lc3NhZ2UpLnJlcGxhY2UoL3tcJExOQU1FfS9nLApkMmNtZWRpYS5jYXBpdGFsaXNlRmlyc3RMZXR0ZXJPZkV2ZXJ5V29yZChtYWlsUmF0aW5nLnVzZXJMYXN0TmFtZSkpLnJlcGxhY2UoL3tcJEZOQU1FfS9nLGQyY21lZGlhLmNhcGl0YWxpc2VGaXJzdExldHRlck9mRXZlcnlXb3JkKG1haWxSYXRpbmcudXNlckZpcnN0TmFtZSkpLnJlcGxhY2UoL3tcJEVNQUlMfS9nLG1haWxSYXRpbmcudXNlckVtYWlsKS5yZXBsYWNlKC97XCRQSE9ORX0vZyxtYWlsUmF0aW5nLnVzZXJQaG9uZSkucmVwbGFjZSgve1wkUkFUSU5HU1RBUlN9L2csbWFpbFJhdGluZy5yYXRpbmcpLnJlcGxhY2UoL3tcJENMSUVOVE5BTUV9L2csbWFpbFJhdGluZy51c2VyRmlyc3ROYW1lKyIgIittYWlsUmF0aW5nLnVzZXJMYXN0TmFtZSk7az1rLnJlcGxhY2UoL3tcJENMSUVOVE5BTUV9L2csbWFpbFJhdGluZy51c2VyRmlyc3ROYW1lKyIgIittYWlsUmF0aW5nLnVzZXJMYXN0TmFtZSk7ZW1haWxIYW5kbGVyLnZpbj0iIjtlbWFpbEhhbmRsZXIucHJpY2U9MDtlbWFpbEhhbmRsZXIuc3RvY2tOdW1iZXI9CiIiO2VtYWlsSGFuZGxlci5jYXJpZD0iIjtlbWFpbEhhbmRsZXIuY29uZGl0aW9uPSJVbmtub3duIjtlbWFpbEhhbmRsZXIudXNlckZpcnN0TmFtZT1tYWlsUmF0aW5nLnVzZXJGaXJzdE5hbWU7ZW1haWxIYW5kbGVyLnVzZXJMYXN0TmFtZT1tYWlsUmF0aW5nLnVzZXJMYXN0TmFtZTtlbWFpbEhhbmRsZXIudXNlclBob25lPW1haWxSYXRpbmcudXNlclBob25lO2VtYWlsSGFuZGxlci51c2VyRW1haWw9bWFpbFJhdGluZy51c2VyRW1haWw7ZD1tYWlsUmF0aW5nLnNlbmRUbztmPSIgICI7YnJlYWs7Y2FzZSAiaGVhZGVyU2VydmljZSI6ZW1haWxIYW5kbGVyLnBvcHVwZGl2PSJtZW51U2VydmljZSI7c2VydmljZUZvcm1faGVhZGVyU2VydmljZS5zZXRFbWFpbFNlbnRDYWxsYmFjaygpO2E9c2VydmljZUZvcm1faGVhZGVyU2VydmljZS5zZXRFbWFpbEhhbmRsZXJWYWx1ZXNBbmRCb2R5KGEpO2Q9c2VydmljZUZvcm1faGVhZGVyU2VydmljZS5nZXRTZW5kVG8oKTtrKz0iIEV4cHJlc3MiOwpicmVhaztjYXNlICJtZW51U2VydmljZSI6ZW1haWxIYW5kbGVyLnBvcHVwZGl2PSJtZW51U2VydmljZSI7c2VydmljZUZvcm1fbWVudVNlcnZpY2Uuc2V0RW1haWxTZW50Q2FsbGJhY2soKTthPXNlcnZpY2VGb3JtX21lbnVTZXJ2aWNlLnNldEVtYWlsSGFuZGxlclZhbHVlc0FuZEJvZHkoYSk7ZD1zZXJ2aWNlRm9ybV9tZW51U2VydmljZS5nZXRTZW5kVG8oKTtrKz0iIEV4cHJlc3MiO2JyZWFrO2RlZmF1bHQ6IiI9PWQmJiJ1bmRlZmluZWQiIT10eXBlb2YgJCgiI3RleHRTZW5kVG9FbWFpbCIpLmF0dHIoImlkIikmJihkPSQoIiN0ZXh0U2VuZFRvRW1haWwiKS52YWwoKSk7IiI9PWYmJiJ1bmRlZmluZWQiIT10eXBlb2YgJCgiI3RleHRTZW5kVG9FbWFpbEFERiIpLmF0dHIoImlkIikmJjM8JCgiI3RleHRTZW5kVG9FbWFpbEFERiIpLnZhbCgpLmxlbmd0aCYmKGY9JCgiI3RleHRTZW5kVG9FbWFpbEFERiIpLnZhbCgpKTsidW5kZWZpbmVkIiE9dHlwZW9mIG1haWxWZWhpY2xlV2lkZ2V0JiYKKG1haWxWZWhpY2xlV2lkZ2V0LmFzc2lnblZhbHVlcygpLGE9YS5yZXBsYWNlKC97XCRFTUFJTE1BS0V9L2csbWFpbFZlaGljbGVXaWRnZXQubWFrZSkucmVwbGFjZSgve1wkRU1BSUxNT0RFTH0vZyxtYWlsVmVoaWNsZVdpZGdldC5tb2RlbCkucmVwbGFjZSgve1wkRU1BSUxZRUFSfS9nLG1haWxWZWhpY2xlV2lkZ2V0LnllYXIpLnJlcGxhY2UoL3tcJENPTE9SfS9nLG1haWxWZWhpY2xlV2lkZ2V0LmNvbG9yKS5yZXBsYWNlKC97XCRFTUFJTFNUT0NLTlVNQkVSfS9nLG1haWxWZWhpY2xlV2lkZ2V0LnN0b2NrTnVtYmVyKS5yZXBsYWNlKC97XCRTVE9DS05VTUJFUn0vZyxtYWlsVmVoaWNsZVdpZGdldC5zdG9ja051bWJlcikucmVwbGFjZSgve1wkRlJPTVlFQVJ9L2csbWFpbFZlaGljbGVXaWRnZXQuZnJvbVllYXIpLnJlcGxhY2UoL3tcJFRPWUVBUn0vZyxtYWlsVmVoaWNsZVdpZGdldC50b1llYXIpLnJlcGxhY2UoL3tcJElOVEVOVElPTn0vZyxtYWlsVmVoaWNsZVdpZGdldC5pbnRlbnRpb24pLnJlcGxhY2UoL3tcJFBMQVRFU30vZywKbWFpbFZlaGljbGVXaWRnZXQucGxhdGVzKS5yZXBsYWNlKC97XCRWSU59L2csbWFpbFZlaGljbGVXaWRnZXQudmluKSxtYWlsVmVoaWNsZVdpZGdldC5vZG9tb3RlciYmKGE9YS5yZXBsYWNlKC97XCRLTX0vZyxjKG1haWxWZWhpY2xlV2lkZ2V0Lm9kb21vdGVyKSkpLCQoImlucHV0LmJyYW5kZW1haWwiKS5sZW5ndGgmJiQoImlucHV0LmJyYW5kZW1haWwiKS52YWwobWFpbFZlaGljbGVXaWRnZXQubWFrZSksJCgiaW5wdXQubW9kZWxlbWFpbCIpLmxlbmd0aCYmJCgiaW5wdXQubW9kZWxlbWFpbCIpLnZhbChtYWlsVmVoaWNsZVdpZGdldC5tb2RlbCksJCgiaW5wdXQueWVhcmVtYWlsIikubGVuZ3RoJiYkKCJpbnB1dC55ZWFyZW1haWwiKS52YWwobWFpbFZlaGljbGVXaWRnZXQueWVhciksZW1haWxIYW5kbGVyLm1ha2U9bWFpbFZlaGljbGVXaWRnZXQubWFrZSxlbWFpbEhhbmRsZXIubW9kZWw9bWFpbFZlaGljbGVXaWRnZXQubW9kZWwsZW1haWxIYW5kbGVyLnllYXI9bWFpbFZlaGljbGVXaWRnZXQueWVhciwKZW1haWxIYW5kbGVyLnRyaW09JCgiI2NhcnRyaW0iKS52YWwoKSxlbWFpbEhhbmRsZXIudmluPW1haWxWZWhpY2xlV2lkZ2V0LnZpbixlbWFpbEhhbmRsZXIucHJpY2U9JCgiI2NhcnByaWNlIikudmFsKCksZW1haWxIYW5kbGVyLnN0b2NrTnVtYmVyPW1haWxWZWhpY2xlV2lkZ2V0LnN0b2NrTnVtYmVyLGVtYWlsSGFuZGxlci5jYXJpZD0kKCIjY2FyaWQiKS52YWwoKSwwPCQoIiNjYXJpZCIpLnZhbCgpLmxlbmd0aHx8ZW1haWxIYW5kbGVyLnllYXI8KG5ldyBEYXRlKS5nZXRGdWxsWWVhcigpP2VtYWlsSGFuZGxlci5jb25kaXRpb249IlVzZWQiOmVtYWlsSGFuZGxlci5jb25kaXRpb249MDxtYWlsVmVoaWNsZVdpZGdldC5tYWtlLmxlbmd0aD8iTmV3IjoiVW5rbm93biIpO2E9YS5yZXBsYWNlKC97XCRQTEFURVN9L2csIiIpOyJ1bmRlZmluZWQiIT10eXBlb2YgbWFpbFZlaGljbGVXaWRnZXRFeCYmJCgiI3ZlaGljbGVTZWxlY3RGb3JtRXgiKS5sZW5ndGgmJihtYWlsVmVoaWNsZVdpZGdldEV4LmFzc2lnblZhbHVlcygpLAphPWEucmVwbGFjZSgve1wkTUFLRUVYfS9nLG1haWxWZWhpY2xlV2lkZ2V0RXgubWFrZSkucmVwbGFjZSgve1wkTU9ERUxFWH0vZyxtYWlsVmVoaWNsZVdpZGdldEV4Lm1vZGVsKS5yZXBsYWNlKC97XCRZRUFSRVh9L2csbWFpbFZlaGljbGVXaWRnZXRFeC55ZWFyKS5yZXBsYWNlKC97XCRDT0xPUkVYfS9nLG1haWxWZWhpY2xlV2lkZ2V0RXguY29sb3IpLnJlcGxhY2UoL3tcJFRSSU1FWH0vZyxtYWlsVmVoaWNsZVdpZGdldEV4LnRyaW0pLnJlcGxhY2UoL3tcJFRSQU5TTUlTU0lPTn0vZyxtYWlsVmVoaWNsZVdpZGdldEV4LnRyYW5zbWlzc2lvbikucmVwbGFjZSgve1wkS019L2csYyhtYWlsVmVoaWNsZVdpZGdldEV4Lm9kb21vdGVyKSkucmVwbGFjZSgve1wkVklORVh9L2csbWFpbFZlaGljbGVXaWRnZXRFeC52aW4pLnJlcGxhY2UoL3tcJERSSVZFVFJBSU59L2csbWFpbFZlaGljbGVXaWRnZXRFeC5kcml2ZXRyYWluKS5yZXBsYWNlKC97XCRHQVN9L2csbWFpbFZlaGljbGVXaWRnZXRFeC5mdWVsKSwKJCgiaW5wdXQuYnJhbmRlbWFpbCIpLmxlbmd0aCYmMDxtYWlsVmVoaWNsZVdpZGdldEV4Lm1ha2UubGVuZ3RoJiYkKCJpbnB1dC5icmFuZGVtYWlsIikudmFsKG1haWxWZWhpY2xlV2lkZ2V0RXgubWFrZSksJCgiaW5wdXQubW9kZWxlbWFpbCIpLmxlbmd0aCYmMDxtYWlsVmVoaWNsZVdpZGdldEV4Lm1vZGVsLmxlbmd0aCYmJCgiaW5wdXQubW9kZWxlbWFpbCIpLnZhbChtYWlsVmVoaWNsZVdpZGdldEV4Lm1vZGVsKSwkKCJpbnB1dC55ZWFyZW1haWwiKS5sZW5ndGgmJjA8bWFpbFZlaGljbGVXaWRnZXRFeC5tYWtlLmxlbmd0aCYmJCgiaW5wdXQueWVhcmVtYWlsIikudmFsKG1haWxWZWhpY2xlV2lkZ2V0RXgueWVhciksZW1haWxIYW5kbGVyLm1ha2U9bWFpbFZlaGljbGVXaWRnZXRFeC5tYWtlLGVtYWlsSGFuZGxlci5tb2RlbD1tYWlsVmVoaWNsZVdpZGdldEV4Lm1vZGVsLGVtYWlsSGFuZGxlci55ZWFyPW1haWxWZWhpY2xlV2lkZ2V0RXgueWVhcixlbWFpbEhhbmRsZXIudHJpbT1tYWlsVmVoaWNsZVdpZGdldEV4LnRyaW0sCiJ1bmRlZmluZWQiIT10eXBlb2YgZW1haWxIYW5kbGVyLmlzVHJhZGVJbkJhcnx8IlByaWNlVmVoaWNsZSIhPWIubWFpbElEJiYiUHJpY2VWZWhpY2xlTmV3IiE9Yi5tYWlsSUQmJiJFc3RoZXRpY1JlcXVlc3QiIT1iLm1haWxJRHx8KGVtYWlsSGFuZGxlci5tYWtlPW1haWxWZWhpY2xlV2lkZ2V0Lm1ha2UsZW1haWxIYW5kbGVyLm1vZGVsPW1haWxWZWhpY2xlV2lkZ2V0Lm1vZGVsLGVtYWlsSGFuZGxlci55ZWFyPW1haWxWZWhpY2xlV2lkZ2V0LnllYXIsZW1haWxIYW5kbGVyLnRyaW09bWFpbFZlaGljbGVXaWRnZXQudHJpbSwiUHJpY2VWZWhpY2xlIiE9Yi5tYWlsSUQmJiJQcmljZVZlaGljbGVOZXciIT1iLm1haWxJRCl8fChlbWFpbEhhbmRsZXIuY2FyMl9tYWtlPW1haWxWZWhpY2xlV2lkZ2V0RXgubWFrZSxlbWFpbEhhbmRsZXIuY2FyMl9tb2RlbD1tYWlsVmVoaWNsZVdpZGdldEV4Lm1vZGVsLGVtYWlsSGFuZGxlci5jYXIyX3RyaW09bWFpbFZlaGljbGVXaWRnZXRFeC50cmltLAplbWFpbEhhbmRsZXIuY2FyMl95ZWFyPW1haWxWZWhpY2xlV2lkZ2V0RXgueWVhcixlbWFpbEhhbmRsZXIuY2FyMl9jb2xvcj1tYWlsVmVoaWNsZVdpZGdldEV4LmNvbG9yLGVtYWlsSGFuZGxlci5jYXIyX29kb21ldGVyPWMobWFpbFZlaGljbGVXaWRnZXRFeC5vZG9tb3RlciksZW1haWxIYW5kbGVyLmNhcjJfdmluPW1haWxWZWhpY2xlV2lkZ2V0RXgudmluLGVtYWlsSGFuZGxlci5jYXIyX3RyYW5zbWlzc29uPW1haWxWZWhpY2xlV2lkZ2V0RXgudHJhbnNtaXNzaW9uLGVtYWlsSGFuZGxlci5jYXIyX2RyaXZldHJhaW49bWFpbFZlaGljbGVXaWRnZXRFeC5kcml2ZXRyYWluLGVtYWlsSGFuZGxlci5jYXIyX2Z1ZWx0eXBlPW1haWxWZWhpY2xlV2lkZ2V0RXguZnVlbCxhPWEucmVwbGFjZSgve1wkVFJBREVJTkxPV30vZywiTi9BIiksYT1hLnJlcGxhY2UoL3tcJFRSQURFSU5ISUdIfS9nLCJOL0EiKSxhPWEucmVwbGFjZSgve1wkVFJBREVJTkFWR30vZywiTi9BIikpLGVtYWlsSGFuZGxlci52aW49CiIiLGVtYWlsSGFuZGxlci5wcmljZT0wLGVtYWlsSGFuZGxlci5zdG9ja051bWJlcj0iIixlbWFpbEhhbmRsZXIuY2FyaWQ9IiIsMDwkKCIjY2FyaWQiKS52YWwoKS5sZW5ndGg\/ZW1haWxIYW5kbGVyLmNvbmRpdGlvbj0iVXNlZCI6ZW1haWxIYW5kbGVyLmNvbmRpdGlvbj0wPG1haWxWZWhpY2xlV2lkZ2V0RXgubWFrZS5sZW5ndGg\/Ik5ldyI6IlVua25vd24iKTtpZigidW5kZWZpbmVkIiE9dHlwZW9mICQoIiNzZXJ2aWNlUGFja2FnZXMiKS5wcm9wKCJpZCIpKXt2YXIgbj0hMSxyPSIiOyQoImlucHV0LnNlbGVjdGVkU2VydmljZSIpLmVhY2goZnVuY3Rpb24oaCxwKXtoPSQocCk7aC5pcygiOmNoZWNrZWQiKSYmKHIrPSI8YnI+IitoLnZhbCgpLG49ITApfSk7biYmKHI9Ijxicj48YnI+PHU+IiskKCIjc2VsZWN0ZWRTZXJ2aWNlc1RpdGxlIikudmFsKCkrIjwvdT4iK3IpO2E9YS5yZXBsYWNlKC97XCRTRUxFQ1RFRFNFUlZJQ0VTfS9nLHIpfSJ1bmRlZmluZWQiIT10eXBlb2YgbWFpbFVzZXJJbmZvJiYKKG1haWxVc2VySW5mby5hc3NpZ25WYWx1ZXMoKSxhPWEucmVwbGFjZSgve1wkRk5BTUV9L2csZDJjbWVkaWEuY2FwaXRhbGlzZUZpcnN0TGV0dGVyT2ZFdmVyeVdvcmQobWFpbFVzZXJJbmZvLmZpcnN0TmFtZSkpLnJlcGxhY2UoL3tcJExOQU1FfS9nLGQyY21lZGlhLmNhcGl0YWxpc2VGaXJzdExldHRlck9mRXZlcnlXb3JkKG1haWxVc2VySW5mby5sYXN0TmFtZSkpLnJlcGxhY2UoL3tcJEVNQUlMUEhPTkV9L2csbWFpbFVzZXJJbmZvLnBob25lKS5yZXBsYWNlKC97XCRFTUFJTH0vZyxtYWlsVXNlckluZm8uZW1haWwpKTsidW5kZWZpbmVkIiE9dHlwZW9mIG1haWxKb2JPZmZlciYmKG1haWxKb2JPZmZlci5hc3NpZ25WYWx1ZXMoKSxkPSQoIiN0ZXh0U2VuZFRvRW1haWwiKS52YWwoKSxmPSQoIiN0ZXh0U2VuZFRvRW1haWxBREYiKS52YWwoKSxhPWEucmVwbGFjZSgve1wkSk9CUE9TVH0vZyxtKGQyY21lZGlhLmNhcGl0YWxpc2VGaXJzdExldHRlck9mRXZlcnlXb3JkKG1haWxKb2JPZmZlci5qb2JQb3NpdG9uKSkpLnJlcGxhY2UoL3tcJEpPQkRFUEFSVE1FTlR9L2csCm0oZDJjbWVkaWEuY2FwaXRhbGlzZUZpcnN0TGV0dGVyT2ZFdmVyeVdvcmQobWFpbEpvYk9mZmVyLmpvYkRlcGFydG1lbnQpKSkucmVwbGFjZSgve1wkSk9CTVNHfS9nLG0obWFpbEpvYk9mZmVyLmpvYk1lc3NhZ2UpKSk7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBtYWlsVXNlckFkZHJlc3Mpe21haWxVc2VyQWRkcmVzcy5hc3NpZ25WYWx1ZXMoKTt2YXIgcT10cmltKG1haWxVc2VyQWRkcmVzcy5hZGRyZXNzQXBwKyIgIittYWlsVXNlckFkZHJlc3MuYWRkcmVzc051bWJlcisiICIrbWFpbFVzZXJBZGRyZXNzLmFkZHJlc3NTdHJlZXQpO2E9YS5yZXBsYWNlKC97XCRDVVJSRU5UQUREUkVTU30vZyxtKHEpKS5yZXBsYWNlKC97XCRDVVJSRU5UQ0lUWX0vZyxtKG1haWxVc2VyQWRkcmVzcy5jaXR5KSkucmVwbGFjZSgve1wkQ1VSUkVOVFBST1ZJTkNFfS9nLG0obWFpbFVzZXJBZGRyZXNzLnByb3ZpbmNlKSkucmVwbGFjZSgve1wkQ1VSUkVOVFBPU1RBTENPREV9L2csbShtYWlsVXNlckFkZHJlc3MucG9zdGFsQ29kZSkpfSJ1bmRlZmluZWQiIT0KdHlwZW9mIG1haWxTY2hlZHVsZSYmKG1haWxTY2hlZHVsZS5hc3NpZ25WYWx1ZXMoKSxhPWEucmVwbGFjZSgve1wkREFURTF9L2csbWFpbFNjaGVkdWxlLmZpcnN0Q2hvaWNlKS5yZXBsYWNlKC97XCREQVRFMn0vZyxtYWlsU2NoZWR1bGUuc2Vjb25kQ2hvaWNlKS5yZXBsYWNlKC97XCRXQUlUSU5HT05TSVRFfS9nLG1haWxTY2hlZHVsZS53YWl0aW5nT25TaXRlKS5yZXBsYWNlKC97XCRUUkFOU1BPUlRPUFRJT059L2csbWFpbFNjaGVkdWxlLmdldFRyYW5zcG9ydE9wdGlvblRleHQoKSksZW1haWxIYW5kbGVyLnNlcnZpY2VEYXRlMT1tYWlsU2NoZWR1bGUuZmlyc3RDaG9pY2UsZW1haWxIYW5kbGVyLnNlcnZpY2VEYXRlMj1tYWlsU2NoZWR1bGUuc2Vjb25kQ2hvaWNlLGVtYWlsSGFuZGxlci53YWl0aW5nT25TaXRlPW1haWxTY2hlZHVsZS53YWl0aW5nT25TaXRlLGVtYWlsSGFuZGxlci50cmFuc3BvcnRPcHRpb249bWFpbFNjaGVkdWxlLnRyYW5zcG9ydE9wdGlvbik7dmFyIHQ9cT0iIiwKdT0iIjsidW5kZWZpbmVkIiE9dHlwZW9mICQoIiNmaW5hbmNlT3B0aW9uRGl2IikuYXR0cigiaWQiKSYmKCJjaGVja2VkIj09JCgiI2ZpbmFuY2VPcHRpb25EaXYgaW5wdXQiKS5hdHRyKCJjaGVja2VkIik\/cT0kKCIjdGV4dENhc2giKS52YWwoKToocT0iY2hlY2tlZCI9PSQoIiNmaW5hbmNlT3B0aW9uRGl2MiBpbnB1dCIpLmF0dHIoImNoZWNrZWQiKT8kKCIjdGV4dEZpbmFuY2UiKS52YWwoKTokKCIjdGV4dExlYXNlIikudmFsKCksdT0kKCIjZmluYW5jZVRlcm1TZWxlY3QiKS52YWwoKSksInVuZGVmaW5lZCIhPXR5cGVvZiAkKCIjdmVoaWNsZU9mZmVyIikuYXR0cigiaWQiKSYmKHQ9IiQiK2MoJCgiI3ZlaGljbGVPZmZlciIpLnZhbCgpKSksYT1hLnJlcGxhY2UoL3tcJFBBWU1FTlR9L2cscSkucmVwbGFjZSgve1wkUEFZTUVOVFRFUk19L2csdSkucmVwbGFjZSgve1wkT0ZGRVJ9L2csdCkpOyJ1bmRlZmluZWQiIT10eXBlb2YgJCgiI3F1ZXN0aW9uc0NvbW1lbnRzIikuYXR0cigiaWQiKSYmCihlPW0oJCgiI3F1ZXN0aW9uc0NvbW1lbnRzIikudmFsKCkpLGE9YS5yZXBsYWNlKC97XCRRVUVTVElPTlN9L2csZSksZW1haWxIYW5kbGVyLmNvbW1lbnRzPWUpOyJ1bmRlZmluZWQiIT10eXBlb2YgJCgiI3JlcXVlc3RUeXBlIikuYXR0cigiaWQiKSYmKGE9YS5yZXBsYWNlKC97XCRERU1BTkRFfS9nLCQoIiNyZXF1ZXN0VHlwZSIpLnZhbCgpKSl9JCgiI3Rlc3REcml2ZVR5cGUiKS5sZW5ndGgmJihhPWEucmVwbGFjZSgve1wkVEVTVERSSVZFVFlQRX0vZywkKCIjdGVzdERyaXZlVHlwZSIpLnZhbCgpKSxhPSJWaXJ0dWFsIj09JCgiI3Rlc3REcml2ZVR5cGUiKS52YWwoKXx8IlZpcnR1ZWwiPT0kKCIjdGVzdERyaXZlVHlwZSIpLnZhbCgpP2EucmVwbGFjZSgve1wkVEVTVERSSVZFVklSVFVBTH0vZywkKCIjcHJlZmVyZWRWaXJ0dWFsVG9vbCIpLnZhbCgpKTphLnJlcGxhY2UoL3tcJFRFU1REUklWRVZJUlRVQUx9L2csIk4vQSIpKTskKGcpLmZpbmQoIiNzZXJ2aWNlRW1haWxzU2VsZWN0IikubGVuZ3RoPwplbWFpbEhhbmRsZXIuZGVhbGVyTmFtZT0kKGcpLmZpbmQoIiNzZXJ2aWNlRW1haWxzU2VsZWN0IikuZmluZCgiOnNlbGVjdGVkIikuaHRtbCgpOiIxIj09JCgiI2lzTW9iaWxlIikudmFsKCkmJiQoIiNzZXJ2aWNlRW1haWxzU2VsZWN0IikubGVuZ3RoJiYoZW1haWxIYW5kbGVyLmRlYWxlck5hbWU9JCgiI3NlcnZpY2VFbWFpbHNTZWxlY3QiKS5maW5kKCI6c2VsZWN0ZWQiKS5odG1sKCkpO2VtYWlsSGFuZGxlci5kZWFsZXJOYW1lJiYoYT1hLnJlcGxhY2UoInskREVBTEVSTkFNRX0iLGVtYWlsSGFuZGxlci5kZWFsZXJOYW1lKSk7YT1hLnJlcGxhY2UoL3tcJChEQVRFWzEyXSl9L2csZnVuY3Rpb24oaCxwKXtoPSQoJ2lucHV0W25hbWU9IicrcC50b0xvd2VyQ2FzZSgpKyciXScsZyk7cmV0dXJuIDA8aC5sZW5ndGg\/KG5ldyBEYXRlKGgudmFsKCkpKS5kYXRlRm9ybWF0KCJZLW0tZCBIOmkiKToiIn0pO2M9IiI7MDwkKCIjbGFzdHZpZXdlZG1ha2UiKS52YWwoKS5sZW5ndGgmJihjPSQoIiNsYXN0dmlld2VkbWFrZSIpLnZhbCgpKwoiICIrJCgiI2xhc3R2aWV3ZWRtb2RlbCIpLnZhbCgpKyIgIiskKCIjbGFzdHZpZXdlZHllYXIiKS52YWwoKSsiICIrJCgiI2xhc3R2aWV3ZWRzdG9ja251bWJlciIpLnZhbCgpKTthPWEucmVwbGFjZSgieyRMQVNUVkVISUNMRVZJRVdFRH0iLGMpO2E9YS5yZXBsYWNlKFJlZ0V4cCgie1xcJChRVUVTVElPTlN8TUVTU0FHRXxSQVRJTkdNRVNTQUdFfEVNQUlMUEhPTkV8RU1BSUxNQUtFfEVNQUlMTU9ERUx8RU1BSUxZRUFSfFBBWU1FTlR8UEFZTUVOVFRFUk18T0ZGRVJ8U1RPQ0tOVU1CRVJ8Q09MT1J8Rk5BTUV8TE5BTUV8RU1BSUx8S018VklORVh8U0VMRUNURURTRVJWSUNFU3xFTUFJTENJVFl8UExBVEVTfERBVEUxfERBVEUyfFRSQU5TUE9SVE9QVElPTil9IiwiZyIpLCIiKTthPWEucmVwbGFjZSgve1wkRU1BSUxCVUlMREFORFBSSUNFfS9nLGIuYmFuZHBMaW5rKCkpOyIiPT1kJiYidW5kZWZpbmVkIiE9dHlwZW9mICQoIiNleHByZXNzU2VuZFRvRW1haWwiKS5hdHRyKCJpZCIpJiYKKGQ9bCYmInVuZGVmaW5lZCIhPXR5cGVvZiAkKCIjZXhwcmVzc1NlbmRUb0VtYWlsTkVXIikuYXR0cigiaWQiKSYmMDwkKCIjZXhwcmVzc1NlbmRUb0VtYWlsTkVXIikudmFsKCkubGVuZ3RoPyQoIiNleHByZXNzU2VuZFRvRW1haWxORVciKS52YWwoKTokKCIjZXhwcmVzc1NlbmRUb0VtYWlsIikudmFsKCkpO2lmKCIiPT1mJiYidW5kZWZpbmVkIiE9dHlwZW9mICQoIiNleHByZXNzU2VuZFRvRW1haWxBREYiKS5hdHRyKCJpZCIpKWlmKGwmJiJ1bmRlZmluZWQiIT10eXBlb2YgJCgiI2V4cHJlc3NTZW5kVG9FbWFpbEFERk5FVyIpLmF0dHIoImlkIikmJjA8JCgiI2V4cHJlc3NTZW5kVG9FbWFpbEFERk5FVyIpLnZhbCgpLmxlbmd0aClmPSQoIiNleHByZXNzU2VuZFRvRW1haWxBREZORVciKS52YWwoKTtlbHNlIGlmKCJzZXJ2aWNlIj09ZW1haWxIYW5kbGVyLmRlcGFydG1lbnQudG9Mb3dlckNhc2UoKXx8YiYmKCJtZW51U2VydmljZSI9PWIubWFpbElEfHwiaGVhZGVyU2VydmljZSI9PQpiLm1haWxJRCkpZj0kKCIjZXhwcmVzc1NlbmRUb0VtYWlsQURGU0VSVklDRSIpLnZhbCgpOyIiPT1kJiYkKCIjZXhwcmVzc0luRGVtbyIpLmxlbmd0aCYmIjEiPT0kKCIjZXhwcmVzc0luRGVtbyIpLnZhbCgpJiYoZW1haWxIYW5kbGVyLmNvbmRpdGlvbj0iTmV3IiwwPCQoIiNleHByZXNzU2VuZFRvRW1haWxORVciKS52YWwoKS5sZW5ndGgmJihkPSQoIiNleHByZXNzU2VuZFRvRW1haWxORVciKS52YWwoKSkpOyJRdWlja0VtYWlsIj09Yi5tYWlsSUQmJiJ1bmRlZmluZWQiIT09dHlwZW9mIGUmJjA8ZS5sZW5ndGgmJjA8JCgiI3NlcnZpY2VFbWFpbCIpLmxlbmd0aCYmMDwkKCIjc2VydmljZUFkZkVtYWlsIikubGVuZ3RoJiYodGVybXM9InJhcHBlbDtzZXJ2aWNlO2h1aWxlO3BpZWNlcztwae+\/vWNlcztwbmV1czt0cmFuc21pc3Npb247YWNjZXNzb2lyZXM7YWx0ZXJuYXRldXI7YW50aXJvdWlsbGU7YW50aS1yb3VpbGxlO2JhdHRlcmllO2JhdGVyaWU7cu+\/vXBhcmF0aW9uO3BlaW50dXJlO2ZyZWlucztkaXNxdWVzO2NhcnJvc3NlcmllO2NhdGFseXNldXI7Y2hvYztkZW1hcnJldXI777+9Y2hhcHBlbWVudDttb3RldXI7ZXNzdWllLWdsYWNlO2Vzc3VpLWdsYWNlOyBmZXV4O2NsaWdub3RhbnQ7a2xheG9uO2ZpbHRyZTtob3Jsb2dlO3JhZGlvO3RvaXQtb3V2cmFudDsgbWFnOyBtYWdzO23vv71jYW5pcXVlO211ZmZsZXI7bmF2aWdhdGlvbjtvcmRpbmF0ZXVyOyBwaGFyZXM7bHVtae+\/vXJlcztsdW1pZXJlO3Byb2Js77+9bWU7cHJvYmxlbWU7cmVjYWxsO3BhcnRzO3RpcmU7YWNjZXNzb3JpZXM7YWx0ZXJuYXRvcjtydXN0cHJvb2Zpbmc7YmF0dGVyeTtyZXBhaXI7cGFpbnQ7YnJha2U7ZGlza3M7IGJvZHk7c3RhcnRlcjtleGhhdXN0O2VuZ2luZTt3aXBlcjt3aXBlcnM7IGZsYXNoOyBsaWdodDtmbGFzaGVyO2ZsYXNoZXJzOyBob3JuO2ZpbHRlcjtjbG9jaztyb29mO21lY2FuaWM7Y29tcHV0ZXI7ZWN1O3Byb2JsZW0iLnNwbGl0KCI7IiksCm1hdGNoZWRUZXJtcz1bXSwkLmVhY2godGVybXMsZnVuY3Rpb24oaCxwKXtpZigtMTxlLmluZGV4T2YocCkpcmV0dXJuIGQ9JCgiI3NlcnZpY2VFbWFpbCIpLnZhbCgpLGY9JCgiI3NlcnZpY2VBZGZFbWFpbCIpLnZhbCgpLCExfSkpO2VtYWlsSGFuZGxlci5zdWJqZWN0PWs7ZW1haWxIYW5kbGVyLmJvZHk9YTtlbWFpbEhhbmRsZXIuc2VuZFRvPWQ7ZW1haWxIYW5kbGVyLnNlbmRGcm9tPSIiO2VtYWlsSGFuZGxlci5tYWlsSUQ9Yi5tYWlsSUQ7ZW1haWxIYW5kbGVyLmNhbGxiYWNrPWIuZW1haWxTZW50OyJ1bmRlZmluZWQiIT10eXBlb2YgbWFpbFVzZXJJbmZvJiYibWVudUNvbnRhY3RVcyIhPWVtYWlsSGFuZGxlci5tYWlsSUQmJiJtZW51U2VydmljZSIhPWVtYWlsSGFuZGxlci5tYWlsSUQmJihlbWFpbEhhbmRsZXIudXNlckVtYWlsPW1haWxVc2VySW5mby5lbWFpbCxlbWFpbEhhbmRsZXIudXNlckZpcnN0TmFtZT1tYWlsVXNlckluZm8uZmlyc3ROYW1lLGVtYWlsSGFuZGxlci51c2VyTGFzdE5hbWU9Cm1haWxVc2VySW5mby5sYXN0TmFtZSxlbWFpbEhhbmRsZXIudXNlclBob25lPW1haWxVc2VySW5mby5waG9uZSk7InVuZGVmaW5lZCIhPXR5cGVvZiBtYWlsSm9iT2ZmZXImJihlbWFpbEhhbmRsZXIudXNlckF0dGFjaG1lbnRQYXRoPW1haWxKb2JPZmZlci5qb2JGaWxlKTtlbWFpbEhhbmRsZXIuc2VuZFRvQURGRm9ybWF0PWY7LTEhPWVtYWlsSGFuZGxlci5ib2R5LnRvTG93ZXJDYXNlKCkuaW5kZXhPZigidGVzdEBkMmNtZWRpYS5jYSIpJiYkKCJpbnB1dC50ZXN0bW9kZSIpLnZhbCgiMSIpOyQoZykuZmluZCgiI3NlcnZpY2VFbWFpbHNTZWxlY3QiKS5sZW5ndGg\/ZW1haWxIYW5kbGVyLnNlbmRUbz0kKGcpLmZpbmQoIiNzZXJ2aWNlRW1haWxzU2VsZWN0IikudmFsKCk6IjEiPT0kKCIjaXNNb2JpbGUiKS52YWwoKSYmJCgiI3NlcnZpY2VFbWFpbHNTZWxlY3QiKS5sZW5ndGgmJihlbWFpbEhhbmRsZXIuc2VuZFRvPSQoIiNzZXJ2aWNlRW1haWxzU2VsZWN0IikudmFsKCkpfTtiLl92YWxpZGF0ZUZpZWxkcz0KZnVuY3Rpb24oYyl7dmFyIGc9ITEsaz0kKCIjTWlzc2luZ1ZhbGlkYXRpb25Nc2ciKS5odG1sKCksYT10aGlzLmpxU2NvcGU7aWYoIiNxdWlja0VtYWlsRm9ybSI9PWEpcmV0dXJuITA7JC52YWxpZGl0eS5zdGFydCgpO3ZhciBlPSIuSW5uZXJCb3hMYXllciI7MDwkKCIubWFpbl9sZWZ0X2JveCIpLmxlbmd0aCYmKGU9Ii5tYWluX2xlZnRfYm94Iik7YT1iLmpxU2NvcGU\/Yi5qcVNjb3BlOmU7MT4kKGEpLmxlbmd0aCYmKGE9IiNuZXdkZXRhaWxzIik7MT4kKGEpLmxlbmd0aCYmKGE9Ii5uZXctZGV0YWlscyIpOzE+JChhKS5sZW5ndGgmJihhPSJib2R5Iik7InVuZGVmaW5lZCIhPT10eXBlb2YgZGVidWcmJmRlYnVnKGMpO2M9JChhKS5maW5kKCIucmVxdWlyZWQsLnZhbGlkYXRlIik7JChhKS5maW5kKCJpbnB1dDpub3QoOmhpZGRlbiksIHRleHRhcmVhIikubm9uSHRtbCgpO2MuZmlsdGVyKCIucmVxdWlyZWQiKS5lYWNoKGZ1bmN0aW9uKCl7JCh0aGlzKS5yZXF1aXJlKCkubm9uSHRtbCgpfSk7CmMuZmlsdGVyKCIucmVxdWlyZWQtcGhvbmUiKS5lYWNoKGZ1bmN0aW9uKCl7JCh0aGlzKS5yZXF1aXJlKCkudmFsaWRhdGVQaG9uZSgpfSk7Yy5maWx0ZXIoIi5waG9uZTpub3QoLnJlcXVpcmVkLXBob25lKSIpLmVhY2goKGwsbik9PnskKG4pLnZhbGlkYXRlUGhvbmUoKX0pO2U9JCgiI3Bob25lMSwjcGhvbmUyLCNwaG9uZTMiLGEpLmZpbHRlcigiOnZpc2libGUiKTtpZigwPGUubGVuZ3RoKXt2YXIgZCxmO2xldCBsLG47MDwoZVswXS52YWx1ZSsobnVsbCE9KGw9bnVsbD09KGQ9ZVsxXSk\/dm9pZCAwOmQudmFsdWUpP2w6IiIpKyhudWxsIT0obj1udWxsPT0oZj1lWzJdKT92b2lkIDA6Zi52YWx1ZSk\/bjoiIikpLmxlbmd0aCYmJChlKS52YWxpZGF0ZVBob25lKCl9Yy5maWx0ZXIoIi56aXAiKS5lYWNoKGZ1bmN0aW9uKCl7KCQodGhpcykuaXMoIi5yZXF1aXJlZCIpfHwwIT0kKHRoaXMpLnZhbCgpLmxlbmd0aCkmJiQodGhpcykucmVxdWlyZVBvc3RhbENvZGUoKX0pOzE9PSQoIi52aW4iKS5sZW5ndGgmJgooJCgiLnZpbiIpLmlzKCIucmVxdWlyZWQiKSYmJCgiLnZpbiIpLnJlcXVpcmUoKS5ub25IdG1sKCksMDwkKCIudmluIikudmFsKCkubGVuZ3RoJiYkKCIudmluIikubWluTGVuZ3RoKDE3KSk7MT09JCgiLnZpbkV4IikubGVuZ3RoJiYoJCgiLnZpbkV4IikuaXMoIi5yZXF1aXJlZCIpJiYkKCIudmluRXgiKS5yZXF1aXJlKCkubm9uSHRtbCgpLDA8JCgiLnZpbkV4IikudmFsKCkubGVuZ3RoJiYkKCIudmluRXgiKS5taW5MZW5ndGgoMTcpKTtjLmZpbHRlcigiLmVtYWlsIikuZWFjaChmdW5jdGlvbigpeygkKHRoaXMpLmlzKCIucmVxdWlyZWQiKXx8MCE9JCh0aGlzKS52YWwoKS5sZW5ndGgpJiYkKHRoaXMpLnZhbGlkRW1haWxBZGRyZXNzKCl9KTskKGEpLmZpbmQoIi52YWxpZGF0ZS1ncm91cCIpLmVhY2goZnVuY3Rpb24oKXt2YXIgbD0kKHRoaXMpLnZhbCgpOyQobCxhKS52YWxpZEFsbG9yTm9uZSgpfSk7Yy5maWx0ZXIoIi51cGxvYWQiKS5lYWNoKGZ1bmN0aW9uKCl7ISQodGhpcykuaXMoIi5yZXF1aXJlZCIpJiYKMD09JCh0aGlzKS52YWwoKS5sZW5ndGh8fCIiIT0kKHRoaXMpLnZhbCgpfHwoJCgiI3VwbG9hZFN0YXR1cyIpLmNzcygiY29sb3IiLCJyZWQiKSwkKCIjdXBsb2FkU3RhdHVzIikuaHRtbCgkKCIjZmlsZVVwbG9hZFJlcXVlc3QiKS52YWwoKSksJCgiI3VwbG9hZFN0YXR1cyIpLnNob3coKSl9KTtkPSQudmFsaWRpdHkucmVwb3J0LmVycm9yczskKCIjZW1haWwiKS5tYXRjaCgiZW1haWwiKTskLnZhbGlkaXR5LnJlcG9ydC5lcnJvcnM+ZCYmKGY9JCgiI01pc3NpbmdWYWxpZGF0aW9uTXNnIikudGV4dCgpKyIuPGJyLz4iKyQoIiNlbWFpbEVycm9yTXNnIiwiI3VzZXJJbmZvRm9ybSIpLnZhbCgpKyIuIiwwPT1kJiYoZj0kKCIjZW1haWxFcnJvck1zZyIsIiN1c2VySW5mb0Zvcm0iKS52YWwoKSksJCgiI01pc3NpbmdWYWxpZGF0aW9uTXNnIikuaHRtbChmKSk7InVuZGVmaW5lZCIhPXR5cGVvZiBtYWlsVXNlckluZm8mJiJmdW5jdGlvbiI9PXR5cGVvZiBtYWlsVXNlckluZm8uYWRkZWRWYWxpZGF0aW9uJiYKbWFpbFVzZXJJbmZvLmFkZGVkVmFsaWRhdGlvbihhKTskLnZhbGlkaXR5LmVuZCgpLnZhbGlkP2c9ITA6KCQoIiNNaXNzaW5nVmFsaWRhdGlvbk1zZyIpLnNob3coKSwkKCIjTWlzc2luZ1ZhbGlkYXRpb25Nc2ciKS5jZW50ZXIoKSwkKGRvY3VtZW50KS5vbmUoIm1vdXNlZG93biIsZnVuY3Rpb24obCl7JC52YWxpZGl0eS5jbGVhcigpOyQoIiNNaXNzaW5nVmFsaWRhdGlvbk1zZyIpLmhpZGUoKTskKCIjTWlzc2luZ1ZhbGlkYXRpb25Nc2ciKS5odG1sKGspfSkpO3JldHVybiBnfX07dmFyIG1haWxQYWdlPW5ldyBHZW5lcmljTWFpbDsKJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKXswPCQoIiN0b3Bpc21vYmlsZSIpLmxlbmd0aCYmMTwkKCIjdG9waXNtb2JpbGUiKS52YWwoKSYmKG1haWxQYWdlLmpxU2NvcGU9Ii5uZXctZGV0YWlscyIpOyQoIiNzZW5kRW1haWxGb3JtIGJ1dHRvbiIpLm9uKCJjbGljayB0YXAiLG1haWxQYWdlLnNhdmUpOyQoIiNzZW5kRW1haWxGb3JtU3VibWl0Iikub24oImNsaWNrIHRhcCIsbWFpbFBhZ2Uuc2F2ZSk7bWFpbFBhZ2UubWFpbElEPSQoIiN0ZXh0U2F2ZU1haWxJRCIpLnZhbCgpOyQudmFsaWRpdHkuc2V0dXAoe291dHB1dE1vZGU6InN1bW1hcnkiLHNjcm9sbFRvOiExfSk7alF1ZXJ5LmZuLmNlbnRlcj1mdW5jdGlvbigpeyQoImlzbW9iaWxlIikmJjA8JCgiI3NlbmRFbWFpbEZvcm1TdWJtaXQiKS5sZW5ndGg\/dGhpcy5jc3Moe3Bvc2l0aW9uOiJhYnNvbHV0ZSIsbGVmdDooJCh3aW5kb3cpLndpZHRoKCktJCgiI01pc3NpbmdWYWxpZGF0aW9uTXNnIikub3V0ZXJXaWR0aCgpKS8yLAp0b3A6JCgiI3NlbmRFbWFpbEZvcm1TdWJtaXQiKS5wb3NpdGlvbigpLnRvcC0xMH0pOnRoaXMuY3NzKHtwb3NpdGlvbjoiYWJzb2x1dGUiLGxlZnQ6KCQod2luZG93KS53aWR0aCgpLSQoIiNjb250YWluZXIiKS5vdXRlcldpZHRoKCkpLzIsdG9wOigkKHdpbmRvdykuaGVpZ2h0KCktJCgiI2NvbnRhaW5lciIpLm91dGVySGVpZ2h0KCkpLzJ9KTtyZXR1cm4gdGhpc307InVuZGVmaW5lZCIhPXR5cGVvZiBtYWlsUGFnZS5tYWlsSUQmJmVtYWlsSGFuZGxlci5sb2dGb3JtUmVxdWVzdCgiRm9ybUxvYWRlZCIsbWFpbFBhZ2UubWFpbElEKX0pOwovKiogL20vanMvcG9wdXBpemVyLmpzICoqLwp2YXIgX19fZDJjX3BvcHVwaXplcmpzX2Nfb249IjIwMjYtMDEtMTMgMTY6MzA6MDYiOyd1c2Ugc3RyaWN0Jztpc1NjcmF0Y2hBbmRTYXZlPSJ1bmRlZmluZWQiPT10eXBlb2YgaXNTY3JhdGNoQW5kU2F2ZT8iIjppc1NjcmF0Y2hBbmRTYXZlO3BvcHVwV2lkZ2V0X3BhZ2VWaWV3c0luY3JlbWVudGVkPSJ1bmRlZmluZWQiPT10eXBlb2YgcG9wdXBXaWRnZXRfcGFnZVZpZXdzSW5jcmVtZW50ZWQ\/IiI6cG9wdXBXaWRnZXRfcGFnZVZpZXdzSW5jcmVtZW50ZWQ7c2hvd1BvcHVwV2lkZ2V0PSJmdW5jdGlvbiIhPXR5cGVvZiBzaG93UG9wdXBXaWRnZXQ\/ZnVuY3Rpb24oKXt9OnNob3dQb3B1cFdpZGdldDthY3RpdmF0ZVBvcHVwQmVmb3JlTG9hZD0iZnVuY3Rpb24iIT10eXBlb2YgYWN0aXZhdGVQb3B1cEJlZm9yZUxvYWQ\/ZnVuY3Rpb24oKXt9OmFjdGl2YXRlUG9wdXBCZWZvcmVMb2FkOwp2YXIgcG9wdXBJc1N1Ym1pdHRpbmc9ITEsQ1BvcHVwU3VwZXJ2aXNvcj1mdW5jdGlvbigpe3ZhciBjPXRoaXM7Yy5vbmxvYWRRdWV1ZT1bXTtjLmluZGV4PTA7Yy5pc0FuaW1hdGluZz0hMTtjLnBvcHVwcz1bXTtjLnJlZ2lzdGVyPWZ1bmN0aW9uKGEpe3ZhciBrPTA7MDxOdW1iZXIoYS5zZXR0aW5ncy5zaG93b25sb2FkKSYmITAhPT1hLnNldHRpbmdzLnNob3dvbmxvYWQmJihrPWEuc2V0dGluZ3Muc2hvd29ubG9hZCk7dmFyIGI9MTsxPGEuc2V0dGluZ3MucHJpb3JpdHkmJihiPWEuc2V0dGluZ3MucHJpb3JpdHkpOzEhPUNvb2tpZXMuZ2V0KCJub3VzZWRjdGEiKXx8InVzZWRjYXJzLmh0bWwiIT0kKCIjUEFHRUlEIikudmFsKCkmJiJjYXJkZXRhaWwuaHRtbCIhPSQoIiNQQUdFSUQiKS52YWwoKT9jLm9ubG9hZFF1ZXVlLnB1c2goe3BvcHVwOmEsZGVsYXk6ayxwcmlvcml0eTpifSk6Y29uc29sZS5sb2coIk5vdCBzaG93aW5nIHBvcHVwIG9ubG9hZCwgYmVjYXVzZSBpdHMgYSB1c2VkIHBhZ2UgYW5kIHRoZSBjb29raWUgbm91c2VkY3RhIGlzIHNldCIpfTsKYy5yZXBvc2l0aW9uPWZ1bmN0aW9uKCl7aWYoIShwb3B1cGl6ZXJBY3RpdmUoKXx8InVuZGVmaW5lZCIhPXR5cGVvZiBtb2RlbENvbmZpZyYmbW9kZWxDb25maWcuaXNBY3RpdmUmJm1vZGVsQ29uZmlnLmlzQWN0aXZlKCkpKXJldHVybiAkKCJib2R5IikuY3NzKCJvdmVyZmxvdyIsImF1dG8iKSwhMTtpZihjLmlzQW5pbWF0aW5nKXJldHVybiExO3ZhciBhPSJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93LmlubmVySGVpZ2h0P3dpbmRvdy5pbm5lckhlaWdodDokKHdpbmRvdykuaGVpZ2h0KCksaz0kKGRvY3VtZW50KS5zY3JvbGxUb3AoKSxiPS9Nb2JpLy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpPzU6MjA7JCgiLnJldmVhbC1tb2RhbCIpLmVhY2goZnVuY3Rpb24oZCxmKXtkPSQodGhpcyk7aWYoInZpc2libGUiPT1kLmNzcygidmlzaWJpbGl0eSIpKXtmPWQub2Zmc2V0KCkudG9wO3ZhciBoPWQub3V0ZXJIZWlnaHQoKSxsPWYraDtpZihhPGgrYnx8bmF2aWdhdG9yLnVzZXJBZ2VudC5tYXRjaCgvKGlQaG9uZXxpUG9kKS9nKSl7aWYoJCgiYm9keSIpLmNzcygib3ZlcmZsb3ciLAoiYXV0byIpLGs+bHx8aythPGYpZj1rK2IsYy5pc0FuaW1hdGluZz0hMCxkLmFuaW1hdGUoe3RvcDpmKyJweCJ9LDIwMCxmdW5jdGlvbigpe2MuaXNBbmltYXRpbmc9ITF9KX1lbHNlIGY9aysoYS1oKS8yLGY9ZjxiP2I6ZixjLmlzQW5pbWF0aW5nPSEwLGQuYW5pbWF0ZSh7dG9wOmYrInB4In0sMjAwLGZ1bmN0aW9uKCl7Yy5pc0FuaW1hdGluZz0hMX0pfX0pfTtjLnNob3c9ZnVuY3Rpb24oKXtpZighKDA8JCgiI2Rpc2FibGVQb3B1cHMiKS5sZW5ndGgmJiIxIj09JCgiI2Rpc2FibGVQb3B1cHMiKS52YWwoKSkmJihjLm9ubG9hZFF1ZXVlLnNvcnQoZnVuY3Rpb24oYSxrKXtpZihhLnByaW9yaXR5PmsucHJpb3JpdHkpcmV0dXJuIDE7aWYoYS5wcmlvcml0eTxrLnByaW9yaXR5KXJldHVybi0xO2lmKGEucHJpb3JpdHk9PWsucHJpb3JpdHkpcmV0dXJuIGEuZGVsYXk8ay5kZWxheT8xOi0xfSksKCJCVUlMREFORFBSSUNFIiE9cGFnZXx8Ii0xIiE9d2luZG93LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigic3RlcD1yZXN1bWUiKSkmJgowPGMub25sb2FkUXVldWUubGVuZ3RoKSl7Zm9yKGtleSBpbiBjLm9ubG9hZFF1ZXVlKWlmKDE9PWMub25sb2FkUXVldWVba2V5XS5wb3B1cC5zZXR0aW5ncy5lbmRQb3B1cFF1ZXVlKXJldHVybiBjLm9ubG9hZFF1ZXVlW2tleV0ucG9wdXAub3BlbihjLm9ubG9hZFF1ZXVlW2tleV0uZGVsYXkpLCExO2ZvcihrZXkgaW4gYy5vbmxvYWRRdWV1ZSljLm9ubG9hZFF1ZXVlW2tleV0ucG9wdXAub3BlbihjLm9ubG9hZFF1ZXVlW2tleV0uZGVsYXkpfX07dmFyIG09ZnVuY3Rpb24oKXtpZihwb3B1cGl6ZXJBY3RpdmUoKSlyZXR1cm4gc2V0VGltZW91dChtLDUwMCksITE7c2V0VGltZW91dChmdW5jdGlvbigpe2lmKHBvcHVwaXplckFjdGl2ZSgpKXJldHVybiBtKCk7JC5wb3N0TWVzc2FnZSgiY2xvc2VQb3B1cCIsIioiLHdpbmRvdy5wYXJlbnQpfSwxRTMpfTtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7MDwkKCIjYXV0b2F1YmFpbmVfcG9wdXAiKS5sZW5ndGgmJiJmYWxzZSIhPSQoIiNhdXRvYXViYWluZV9wb3B1cCIpLnZhbCgpJiYKbSgpfSw1RTMpfSxwb3B1cFN1cGVydmlzb3I9bmV3IENQb3B1cFN1cGVydmlzb3IscG9wdXBpemVyQWN0aXZlPWZ1bmN0aW9uKCl7aWYocG9wdXBpemVyQ29uZmlnLnBvcHVwT3BlbilyZXR1cm4hMDt2YXIgYz0hMTskKCIucmV2ZWFsLW1vZGFsLCAucmV2ZWFsLW1vZGVsLWRvLW5vdC1zaG93IikuZWFjaChmdW5jdGlvbigpe2lmKDEhPWMpe3ZhciBtPSQodGhpcyk7aWYoIW0uaXMoIjpoaWRkZW4iKSlzd2l0Y2gobS5jc3MoInZpc2liaWxpdHkiKSl7Y2FzZSAidW5kZWZpbmVkIjpjYXNlICJ2aXNpYmxlIjpjPSEwfX19KTtpZigkKCIucHBfb3ZlcmxheSIpLmlzKCI6dmlzaWJsZSIpfHxkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIubW9kYWwtb3ZlcmxheSIpKWM9ITA7cmV0dXJuIGN9LHBvcHVwaXplckNvbmZpZz17fTskLmV4dGVuZCghMCxwb3B1cGl6ZXJDb25maWcse3BvcHVwT3BlbjohMX0pOwp2YXIgcG9wdXBpemVyPWZ1bmN0aW9uKGMsbSl7dmFyIGE9dGhpcyxrPSJhdXRvIjtjP2EudGFyZ2V0PWM6Yz1hLnRhcmdldDthLnNldHRpbmdzPW07YS5zZXRUcmlnZ2VyPWZ1bmN0aW9uKGIpe2s9InN0cmluZyI9PXR5cGVvZiBiJiYiY2xpY2siPT1iLnRvTG93ZXJDYXNlKCk\/ImNsaWNrIjoiYXV0byI7YS5zZXR0aW5ncy50cmlnZ2VyPWs7cmV0dXJuIGF9O2EuaW5pdD1mdW5jdGlvbigpe3ZhciBiPSJmdW5jdGlvbiI9PXR5cGVvZiBhLnNldHRpbmdzLm9uQmVmb3JlSW5pdGlhbGl6ZSxkPSJmdW5jdGlvbiI9PXR5cGVvZiBhLnNldHRpbmdzLm9uQWZ0ZXJJbml0aWFsaXplO2lmKGEuaXNDb250ZW50TG9hZGVkKCl8fCFiJiYhZCl7aWYoYil7dmFyIGY9YS5zZXR0aW5ncy5vbkJlZm9yZUluaXRpYWxpemUuY2FsbChjLGEpO2lmKDA9PWYpcmV0dXJufWI9ITE7aWYoYS5zZXR0aW5ncy50aHJlc2hvbGQmJmEuc2V0dGluZ3MubWFpbnBvcHVwKXthLnNldHRpbmdzLnNob3dvbmxvYWQ9ITE7CmlmKCJmdW5jdGlvbiI9PXR5cGVvZiBhLnNldHRpbmdzLm9uQWZ0ZXJJbml0aWFsaXplJiYoYj0hMCxmPWEuc2V0dGluZ3Mub25BZnRlckluaXRpYWxpemUuY2FsbChjLGEpLDA9PWYpKXthLnNhdmVTZXR0aW5ncygpO3JldHVybn10aHJlc2hvbGRFeGVjKGEuc2V0dGluZ3MudGhyZXNob2xkVmFsdWUvMTAwLGEuZXhlY09wZW4pfWlmKGEuc2V0dGluZ3Muc2Nyb2xsdXAmJmEuc2V0dGluZ3MubWFpbnBvcHVwKXthLnNldHRpbmdzLnNob3dvbmxvYWQ9ITE7aWYoZCYmKGI9ITAsZj1hLnNldHRpbmdzLm9uQWZ0ZXJJbml0aWFsaXplLmNhbGwoYyxhKSwwPT1mKSl7YS5zYXZlU2V0dGluZ3MoKTtyZXR1cm59c2Nyb2xsdXBFeGVjKGEuZXhlY09wZW4pfWMuYWRkQ2xhc3MoInJldmVhbC1tb2RhbCIpOyJ1bmRlZmluZWQiIT10eXBlb2YgYS5zZXR0aW5ncy5hZGRlZENsYXNzZXMmJjA8YS5zZXR0aW5ncy5hZGRlZENsYXNzZXMubGVuZ3RoJiZjLmFkZENsYXNzKGEuc2V0dGluZ3MuYWRkZWRDbGFzc2VzKTsKJCgiZm9ybSIsYykub24oInN1Ym1pdCIsYS5zdWJtaXQpO2Y9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIik7YS5zZXR0aW5ncy5hbmltYXRpb24mJmYuZ2V0Q29udGV4dCYmKCJ1bmRlZmluZWQiIT10eXBlb2YgYS5zZXR0aW5ncy5hbmltYXRpb24uZWZmZWN0JiYoYS5zZXR0aW5ncy5yZXZlYWwuYW5pbWF0aW9uPSJleHRlcm5hbEFuaW1hdGlvbiIsYy5hZGRDbGFzcyhhLnNldHRpbmdzLmFuaW1hdGlvbi5lZmZlY3QpKSwidW5kZWZpbmVkIiE9dHlwZW9mIGEuc2V0dGluZ3MuYW5pbWF0aW9uLnNwZWVkJiZjLmFkZENsYXNzKGEuc2V0dGluZ3MuYW5pbWF0aW9uLnNwZWVkKSk7YS5zZXR0aW5ncy5pbml0aWFsaXplZD0hMDtjLnRyaWdnZXIoInBvcHVwaXplci5pbml0aWFsaXplZCIsYSk7aWYoZCYmIWImJihmPWEuc2V0dGluZ3Mub25BZnRlckluaXRpYWxpemUuY2FsbChjLGEpLDA9PWYpKXthLnNhdmVTZXR0aW5ncygpO3JldHVybn1hLnNhdmVTZXR0aW5ncygpO2Q9JCgiI2hpZGRlblNraXBPbmxvYWRQcmludHNjcmVlbiIpOwppZigwPGQubGVuZ3RoJiYiRE9fU0tJUF9QT1BVUCI9PWQudmFsKCkpcmV0dXJuITE7IWEuc2V0dGluZ3Muc2hvd29ubG9hZHx8bnVsbCE9Q29va2llcy5nZXQoInBvcHVwRm9ybUZpbGxlZCIpfHxudWxsIT1Db29raWVzLmdldChhLnNldHRpbmdzLmNvb2tpZU5hbWUpfHwxIT1hLnNldHRpbmdzLmNsb3NlQnV0dG9uJiYwIT1hLnNldHRpbmdzLmNsb3NlQnV0dG9ufHwoLTEhPXdpbmRvdy5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9yZXF1ZXN0LyIpfHwtMSE9d2luZG93LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2RlbWFuZGVzLyIpKSYmLTE9PWEuc2V0dGluZ3MubmFtZS5pbmRleE9mKCJpbWFnZVBvcHVwIil8fHBvcHVwU3VwZXJ2aXNvci5yZWdpc3RlcihhKTskKGRvY3VtZW50KS5vZmYoImNsaWNrIiwiLiIrbS5yZXZlYWwuZGlzbWlzc21vZGFsY2xhc3MpLm9uKCJjbGljayIsIi4iK20ucmV2ZWFsLmRpc21pc3Ntb2RhbGNsYXNzLGZ1bmN0aW9uKGgpe2MudHJpZ2dlcigicG9wdXBpemVyLmNsb3NlIiwKYyl9KTskKGRvY3VtZW50KS5vZmYoImtleXVwIikub24oImtleXVwIixmdW5jdGlvbihoKXsyNz09PWgud2hpY2gmJmMudHJpZ2dlcigicG9wdXBpemVyLmNsb3NlIixjKX0pOyJ1bmRlZmluZWQiIT09dHlwZW9mIGEuc2V0dGluZ3MuZm9ybS5mcm9tQUEmJihlbWFpbEhhbmRsZXIuZnJvbUFBPWEuc2V0dGluZ3MuZm9ybS5mcm9tQUEpO3JldHVybiBhfWEubG9hZChhLmluaXQpfTthLm9uT3Blbj1mdW5jdGlvbigpe2EuaXNDb250ZW50TG9hZGVkKCl8fGEubG9hZCgpO2lmKCJhdXRvIj09ayYmbnVsbCE9Q29va2llcy5nZXQoYS5zZXR0aW5ncy5jb29raWVOYW1lKSlyZXR1cm4hMTtjLmZpbmQoIi5wb3B1cGl6ZXJCb2R5Iikuc2hvdygpO2lmKG51bGwhPUNvb2tpZXMuZ2V0KCJwb3B1cEZvcm1GaWxsZWQiKXx8bnVsbCE9Q29va2llcy5nZXQoYS5zZXR0aW5ncy5jb29raWVOYW1lKSljLmZpbmQoIi5jbG9zZS1yZXZlYWwtbW9kYWwiKS5yZW1vdmVDbGFzcygibW9kYWwtY2xvc2UtaGlkZSIpLApjLmZpbmQoIi5jbG9zZS1yZXZlYWwtbW9kYWwiKS5zaG93KCk7YS5jcmVhdGVDb25maXJtRm9ybSgpO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBhLnNldHRpbmdzLm9uQmVmb3JlT3BlbiYmMD09YS5zZXR0aW5ncy5vbkJlZm9yZU9wZW4uY2FsbChjLGEpKXJldHVybiExO3ZhciBiPSIvcG9wdXAtIithLnRhcmdldC5maW5kKCIuZW1haWxTdWJqZWN0IikudGV4dCgpLnJlcGxhY2UoL1tcblxyXS9nLCIgIik7YS50YXJnZXQuZmluZCgiI2ltYWdlUG9wdXBMZWFkVHlwZSIpLmxlbmd0aCYmKGI9Ii9wb3B1cC0iK2EudGFyZ2V0LmZpbmQoIiNpbWFnZVBvcHVwTGVhZFR5cGUiKS5hdHRyKCJkYXRhLXRyYW5zbGF0ZWQiKS5yZXBsYWNlKC9bXG5ccl0vZywiICIpKTthLnRhcmdldC5maW5kKCIjcGF5bWVudENhbGN1bGF0b3JDb250YWluZXIiKS5sZW5ndGgmJihiPSQoImJvZHkiKS5oYXNDbGFzcygiRlJFTkNIIik\/Ii9uZXVmcy9jYWxjdWxhdHJpY2UtcHJldC1hdXRvLXBvcHVwLmh0bWwiOiIvbmV3L2Nhci1sb2FuLWNhbGN1bGF0b3ItcG9wdXAuaHRtbCIpOwpnYVBhZ2VWaWV3KGIpO2dhNFBhZ2VWaWV3KGIpO2EubG9nRXZlbnQoInBvcHVwLm9wZW4iKTsibGl2ZSI9PSQoIiN0b3BkZXBsb3ltZW50dHlwZSIpLnZhbCgpJiZnYVRyYWNrKCJjLl90cmFja0V2ZW50IiwiUG9wdXAtTGF1bmNoZWQiLGEuc2V0dGluZ3MubmFtZSx3aW5kb3cubG9jYXRpb24uaHJlZiwxKTthLnNldHRpbmdzLmNvdW50ZG93biYmYS5pbml0Q291bnRkb3duKCk7Yy5kYXRhKCJvcGVuIiwhMCk7cG9wdXBpemVyQ29uZmlnLnBvcHVwT3Blbj0hMDsib25PcGVuIj09YS5zZXR0aW5ncy5jb29raWVDcmVhdGUmJmEuc2V0Q29va2llKCk7Yj1jLmZpbmQoImZvcm0iKS5maXJzdCgpO2IuZmluZCgnaW5wdXQgW3R5cGU9InRleHQiXScpLmVhY2goZnVuY3Rpb24oKXskKHRoaXMpLm9mZigiZm9jdXMgYmx1ciBjaGFuZ2UiKS5jc3MoImNvbG9yIiwiIzAwMCIpOyQodGhpcykuYXR0cigicGxhY2Vob2xkZXIiLCQodGhpcykuYXR0cigiYWx0IikpfSk7dmFyIGQ9bmV3IEZvcm07ZC5tYXNrUGhvbmUoYy5maW5kKCJmb3JtIikuc2VsZWN0b3IrCiIgaW5wdXQucGhvbmUiKTtkLm1hc2tQaG9uZShjLmZpbmQoImZvcm0iKS5zZWxlY3RvcisiIGlucHV0Lm1vYmlsZSIpOzA8Yi5maW5kKCIucGhvbmUucmVxdWlyZWQiKS5sZW5ndGg\/ZW1haWxIYW5kbGVyLnBob25lTWFuZGF0b3J5PTE6ZW1haWxIYW5kbGVyLnBob25lTWFuZGF0b3J5PTA7YS5zZXR0aW5ncy5mb3JtLmVtYWlsaWQmJmVtYWlsSGFuZGxlci5sb2dGb3JtUmVxdWVzdCgiRm9ybUxvYWRlZCIsYS5zZXR0aW5ncy5mb3JtLmVtYWlsaWQsYS5zZXR0aW5ncy5mb3JtLm9mZmVydHlwZSk7YS5zZXR0aW5ncy5yZXZlYWwuY2xvc2VkPWEub25DbG9zZTtjLnJldmVhbChhLnNldHRpbmdzLnJldmVhbCk7JCgiI2Zsb2F0UHJvbW9Ub3BCdG5Db250YWluZXIiKS5oaWRlKCk7JCgiI2NvbnRhaW5lckZsQiIpLmhpZGUoKTskKCIjdG9hc3QtY29udGFpbmVyIikuaGlkZSgpOyQoIiNhbGVydE1zZ0NvbnRhaW5lciIpLmhpZGUoKTthLnNldHRpbmdzLmZvcm0uT0tCdXR0b25DbGFzcyYmKGI9CmEuc2V0dGluZ3MuZm9ybS5PS0J1dHRvbkNsYXNzLCIuIj09YlswXSYmKGI9Yi5zdWJzdHJpbmcoMSkpLCQoIi4iK2IsYykub2ZmKCJjbGljayIpLm9uKCJjbGljayIsYS5zdWJtaXQpKTthLnNldHRpbmdzLmZvcm0uQ2FuY2VsQnV0dG9uQ2xhc3MmJihiPWEuc2V0dGluZ3MuZm9ybS5DYW5jZWxCdXR0b25DbGFzcywiLiI9PWJbMF0mJihiPWIuc3Vic3RyaW5nKDEpKSwkKCIuIitiLGMpLm9mZigiY2xpY2siKS5vbigiY2xpY2siLGEuY2FuY2VsKSk7Yy50cmlnZ2VyKCJwb3B1cGl6ZXIub25PcGVuIixhKX07YS5vbkNsb3NlPWZ1bmN0aW9uKCl7Yy5kYXRhKCJvcGVuIiwhMSk7cG9wdXBpemVyQ29uZmlnLnBvcHVwT3Blbj0hMTthLnNldHRpbmdzLnN1Ym1pdHRlZHx8YS5sb2dFdmVudCgicG9wdXAuY2FuY2VsIik7c2V0VGltZW91dChmdW5jdGlvbigpeyQoIiN0b2FzdC1jb250YWluZXIiKS5zaG93KCl9LDUwMCk7c2V0VGltZW91dChmdW5jdGlvbigpeyQoIi5yZXZlYWwtbW9kYWwtYmciKS5sZW5ndGgmJgokKCIucmV2ZWFsLW1vZGFsLWJnIikucmVtb3ZlKCl9LDFFMyk7Yy50cmlnZ2VyKCJwb3B1cGl6ZXIub25DbG9zZSIsYSk7ImZ1bmN0aW9uIj09dHlwZW9mIGEuc2V0dGluZ3Mub25DbG9zZSYmYS5zZXR0aW5ncy5vbkNsb3NlLmNhbGwoYyxhKX07YS5zdWJtaXQ9ZnVuY3Rpb24oKXtpZihwb3B1cElzU3VibWl0dGluZylyZXR1cm4hMTtwb3B1cElzU3VibWl0dGluZz0hMDtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7cG9wdXBJc1N1Ym1pdHRpbmc9ITF9LDNFMyk7dmFyIGI9Yy5maW5kKCJmb3JtIikuZmlyc3QoKSxkPVtdLGY9IiIsaD0iIixsPVtdLHA9W10sZz0hMCx0PSIiLHo9IiIsQT0iIjtpZigiZnVuY3Rpb24iPT10eXBlb2YgYS5zZXR0aW5ncy5vbkJlZm9yZVZhbGlkYXRpb24pc3dpdGNoKGEuc2V0dGluZ3Mub25CZWZvcmVWYWxpZGF0aW9uLmNhbGwoYixjLGEpKXtjYXNlICExOmNhc2UgMDpyZXR1cm4gcG9wdXBJc1N1Ym1pdHRpbmc9ITE7Y2FzZSAtMTpnPSExfWlmKGcpeyQudmFsaWRpdHkuc2V0dXAoe291dHB1dE1vZGU6InBvcHVwIiwKc2Nyb2xsVG86ITF9KS5zdGFydCgpO2IuZmluZCgiaW5wdXQ6bm90KDpoaWRkZW4pLCB0ZXh0YXJlYSIpLm5vbkh0bWwoKTtiLmZpbmQoImlucHV0LnJlcXVpcmVkLCBzZWxlY3QucmVxdWlyZWQsIHRleHRhcmVhLnJlcXVpcmVkIikucmVxdWlyZSgpO3ZhciB2PSExLEI9ITEsdz0hMTtiLmZpbmQoImlucHV0IikuZmlsdGVyKCIucmVxUmFkaW8iKS5yYWRpb09wdGlvbkNob3NlbigpO2IuZmluZCgiaW5wdXQiKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIGU9JCh0aGlzKTtlLmhhc0NsYXNzKCJlbWFpbCIpJiYoZS5oYXNDbGFzcygicmVxdWlyZWQiKXx8MDxlLnZhbCgpLmxlbmd0aCkmJih3PSEwKTtpZihlLmhhc0NsYXNzKCJwaG9uZSIpfHxlLmhhc0NsYXNzKCJtb2JpbGUiKSlpZihCPSEwLGUuaGFzQ2xhc3MoInJlcXVpcmVkIil8fDA8ZS52YWwoKS5sZW5ndGgpdj0hMH0pOzA9PXYmJjA9PXcmJihCP3Y9ITA6dz0hMCk7Yi5maW5kKCJpbnB1dCIpLmVhY2goZnVuY3Rpb24oKXt2YXIgZT0kKHRoaXMpOwplLmhhc0NsYXNzKCJlbWFpbCIpJiZlLnZhbGlkRW1haWxBZGRyZXNzKCk7ZS5oYXNDbGFzcygicGhvbmUiKSYmZS52YWxpZGF0ZVBob25lKCk7ZS5oYXNDbGFzcygibW9iaWxlIikmJmUudmFsaWRhdGVNb2JpbGUoKX0pOzE+Yy5maW5kKCIuTWlzc2luZ1ZhbGlkYXRpb25Nc2ciKS5sZW5ndGgmJmMuYXBwZW5kKCc8ZGl2IGNsYXNzPSJNaXNzaW5nVmFsaWRhdGlvbk1zZyI+PC9kaXY+Jyk7aWYoISQudmFsaWRpdHkuZW5kKCkudmFsaWQpcmV0dXJuICQoIi5NaXNzaW5nVmFsaWRhdGlvbk1zZyIsYykuc2hvdygpLCQoZG9jdW1lbnQpLm9uKCJtb3VzZWRvd24iLGZ1bmN0aW9uKGUpeyQoIi5NaXNzaW5nVmFsaWRhdGlvbk1zZyIsYykuaGlkZSgpOyQodGhpcykub2ZmKGUpfSksYS5sb2dFdmVudCgicG9wdXAudmFsaWRhdGlvbkZhaWxlZCIpLHBvcHVwSXNTdWJtaXR0aW5nPSExfWlmKCJmdW5jdGlvbiI9PXR5cGVvZiBhLnNldHRpbmdzLm9uQmVmb3Jlc3VibWl0KXtnPSEwO3RyeXtnPWEuc2V0dGluZ3Mub25CZWZvcmVzdWJtaXQuY2FsbChjLAphKX1jYXRjaChlKXtjb25zb2xlLmxvZygiT24gYmVmb3JlIHN1Ym1pdCBmYWlsZWQsIHJldHVybmluZyB0cnVlLiIsZSl9aWYoMD09ZylyZXR1cm4gYS5zZXR0aW5ncy5jbG9zZU9uU3VibWl0JiZhLmNsb3NlKCksITF9YS5sb2dFdmVudCgicG9wdXAuc3VibWl0Iik7Yi5maW5kKCJpbnB1dCIpLmVhY2goZnVuY3Rpb24oKXt2YXIgZT0kKHRoaXMpOyhlLmhhc0NsYXNzKCJlbWFpbCIpfHwiZW1haWwiPT09ZS5hdHRyKCJ0eXBlIikpJiZkLnB1c2goZS52YWwoKSk7ZS5oYXNDbGFzcygicG9zdGFsIikmJihmPWUudmFsKCkpO2UuaGFzQ2xhc3MoInRyYWRlaW4iKSYmKGg9ZS52YWwoKSk7KGUuaGFzQ2xhc3MoInBob25lIil8fGUuaGFzQ2xhc3MoIm1vYmlsZSIpfHwidGVsIj09PWUuYXR0cigidHlwZSIpKSYmcC5wdXNoKGUudmFsKCkpOyJ1bmRlZmluZWQiPT10eXBlb2YgZS5hdHRyKCJuYW1lIikmJmUuYXR0cigibmFtZSIsIiIpOyhlLmhhc0NsYXNzKCJuYW1lIil8fCJuYW1lIj09ZS5hdHRyKCJuYW1lIikudG9Mb3dlckNhc2UoKSkmJgpsLnB1c2goZS52YWwoKSk7KGUuaGFzQ2xhc3MoImZpcnN0bmFtZSIpfHwiZmlyc3RuYW1lIj09ZS5hdHRyKCJuYW1lIikudG9Mb3dlckNhc2UoKSkmJmwudW5zaGlmdChlLnZhbCgpKTsoZS5oYXNDbGFzcygibGFzdG5hbWUiKXx8Imxhc3RuYW1lIj09ZS5hdHRyKCJuYW1lIikudG9Mb3dlckNhc2UoKSkmJmwucHVzaChlLnZhbCgpKTtpZihlLmhhc0NsYXNzKCJjb21tZW50Iil8fCJjb21tZW50Ij09ZS5hdHRyKCJuYW1lIikudG9Mb3dlckNhc2UoKSl0PWUudmFsKCk7aWYoZS5oYXNDbGFzcygiYWRkcmVzcyIpfHwiYWRkcmVzcyI9PWUuYXR0cigibmFtZSIpLnRvTG93ZXJDYXNlKCkpej1lLnZhbCgpO2lmKGUuaGFzQ2xhc3MoImJpcnRoZGF0ZSIpfHwiYmlydGhkYXRlIj09ZS5hdHRyKCJuYW1lIikudG9Mb3dlckNhc2UoKSlBPWUudmFsKCl9KTtnPWIuc2VyaWFsaXplQXJyYXkoKTt2YXIgeD0kKCIuZW1haWxCb2R5IixjKS5odG1sKCkrIiIsdT0kKCIuZW1haWxTdWJqZWN0IixjKS5odG1sKCkrCiIiOyJQcmljZVZlaGljbGUiPT1hLnNldHRpbmdzLmZvcm0uZW1haWxpZCYmMD09Yi5maW5kKCJbbmFtZT1ub0NCQl0iKS52YWwoKSYmIlNNUyI9PWIuZmluZCgiI3RyYWRlSW5CYXJTbXNPckVtYWlsU21zOmNoZWNrZWQiKS52YWwoKSYmKHUrPSIgKFNNUykiKTt2YXIgcT1bXTtbXS5wdXNoLmFwcGx5KHEsZyk7W10ucHVzaC5hcHBseShxLGEuZ2xvYmFsUmVwbGFjZW1lbnRzKCkpOyQuZWFjaChxLGZ1bmN0aW9uKCl7dmFyIGU9bmV3IFJlZ0V4cCgie1xcJCIrdGhpcy5uYW1lLnRvVXBwZXJDYXNlKCkrIn0iLCJnIiksbj10aGlzLnZhbHVlOyJTRUFSQ0hFRFZFSElDTEUiPT10aGlzLm5hbWUudG9VcHBlckNhc2UoKSYmKG49IjxzcGFuIGlkPSdwaFNFQVJDSFZFSElDTEUnPiIrbisiPC9zcGFuPiIpO3g9eC5yZXBsYWNlKGUsbik7dT11LnJlcGxhY2UoZSx0aGlzLnZhbHVlKX0pO2c9e3NlbmRUbzphLnNldHRpbmdzLmZvcm0uc2VuZFRvLHNlbmRUb0FERkZvcm1hdDphLnNldHRpbmdzLmZvcm0uc2VuZFRvQURGLApjb25kaXRpb246YS5zZXR0aW5ncy52ZWhpY2xlU3RhdGUsbWFpbElEOmEuc2V0dGluZ3MuZm9ybS5lbWFpbGlkLHN1YmplY3Q6dSxib2R5OngsdXNlclBvc3RhbDpmLGFkZHJlc3M6eixiaXJ0aGRhdGU6QSx0cmFkZWluOmgscG9wdXBkaXY6IiIsdXNlckVtYWlsOmQuam9pbigiOyIpLHVzZXJOYW1lOmwuam9pbigiICIpLHVzZXJQaG9uZTpwLmpvaW4oIiwiKSxzbXM6YS5zZXR0aW5ncy5mb3JtLnNtcyxwb3B1cE9mZmVyVHlwZTphLnNldHRpbmdzLmZvcm0ub2ZmZXJ0eXBlLGNvbW1lbnRzOnR9OyQuZXh0ZW5kKCEwLGVtYWlsSGFuZGxlcixnKTsic3RyaW5nIj09dHlwZW9mIGVtYWlsSGFuZGxlci51c2VyTmFtZSYmKGc9ZW1haWxIYW5kbGVyLnVzZXJOYW1lLnNwbGl0KCIgIiksZW1haWxIYW5kbGVyLnVzZXJGaXJzdE5hbWU9Zy5zaGlmdCgpLGVtYWlsSGFuZGxlci51c2VyTGFzdE5hbWU9Zy5qb2luKCIgIikpO2VtYWlsSGFuZGxlci5wb3B1cGRpdj1hLnRhcmdldC5hdHRyKCJpZCIpOwppZihhLnNldHRpbmdzLmZpbGxmbGFnKXZhciBDPWZ1bmN0aW9uKCl7Q29va2llcy5zZXQoInBvcHVwRm9ybUZpbGxlZCIsIjEiLDkwLCIvIik7Yy50cmlnZ2VyKCJwb3B1cGl6ZXIuZm9ybUZpbGxlZCIsYSl9O2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBlbWFpbEhhbmRsZXIuY2FsbGJhY2smJjA8ZW1haWxIYW5kbGVyLmNhbGxiYWNrLmxlbmd0aCl2YXIgRD1lbWFpbEhhbmRsZXIuY2FsbGJhY2s7dmFyIEU9ZnVuY3Rpb24oKXtyZXR1cm4hMH07ImZ1bmN0aW9uIj09dHlwZW9mIGEuc2V0dGluZ3Mub25BZnRlcnN1Ym1pdCYmKEU9YS5zZXR0aW5ncy5vbkFmdGVyc3VibWl0KTtlbWFpbEhhbmRsZXIub25CZWZvcmVTaG93Q29uc2VudD1mdW5jdGlvbigpe2MuY3NzKHtvcGFjaXR5OjEsdmlzaWJpbGl0eToiaGlkZGVuIn0pO2VtYWlsSGFuZGxlci5vbkJlZm9yZVNob3dDb25zZW50PSExfTtlbWFpbEhhbmRsZXIub25BZnRlckNvbnNlbnQ9ZnVuY3Rpb24oZSl7YS5zZXR0aW5ncy5jbG9zZU9uU3VibWl0PwphLmNsb3NlKCk6Yy5yZXZlYWwoYS5zZXR0aW5ncy5yZXZlYWwpO2VtYWlsSGFuZGxlci5vbkJlZm9yZVNob3dDb25zZW50PSExO2VtYWlsSGFuZGxlci5vbkFmdGVyQ29uc2VudD0hMX07ZW1haWxIYW5kbGVyLm9uRHVwbGljYXRlU2VuZD1mdW5jdGlvbigpe2Euc2V0dGluZ3MuY2xvc2VPblN1Ym1pdCYmYS5jbG9zZSgpO2VtYWlsSGFuZGxlci5yZXNldENhbGxiYWNrcygpfTtlbWFpbEhhbmRsZXIuY2FsbGJhY2s9ZnVuY3Rpb24oZSl7dmFyIG49ITE7YS5zZXR0aW5ncy5mb3JtLnNob3dFbWFpbENvbmZpcm1hdGlvbiYmKG49Z2V0TWFpbFNlbnRIYW5kbGVyKCJfIitjLmF0dHIoImlkIikpLG4udGltZW91dENhbGxiYWNrPWZ1bmN0aW9uKCl7Yi50cmlnZ2VyKCJyZXNldCIpfSk7dmFyIEY9YS5zZXR0aW5ncy5jbG9zZU9uU3VibWl0O2lmKGUpYS5sb2dFdmVudCgicG9wdXAubGVhZF9zZW50IiksMD09RS5jYWxsKGMsYSkmJihGPSExKSwiZnVuY3Rpb24iPT10eXBlb2YgQyYmQygpLCJmdW5jdGlvbiI9PQp0eXBlb2YgRCYmRCgpLCJvblN1Ym1pdCI9PWEuc2V0dGluZ3MuY29va2llQ3JlYXRlJiZhLnNldENvb2tpZSgpLEYmJiJoaWRkZW4iIT1jLmNzcygidmlzaWJpbGl0eSIpJiZhLmNsb3NlKCJDT05TRU5UIiksYS5zZXR0aW5ncy5tYWlucG9wdXAmJihlbWFpbEhhbmRsZXIubWFpblByb21vPSEwKSxuP24uc2hvd1N1Y2Nlc3MoKTowPCQoImZvcm0jIitjLmF0dHIoImlkIikrIl9jb25maXJtIikubGVuZ3RoJiYkKCJmb3JtIyIrYy5hdHRyKCJpZCIpKyJfY29uZmlybSIpLnRyaWdnZXIoInN1Ym1pdCIpO2Vsc2V7bnx8KG49Z2V0TWFpbFNlbnRIYW5kbGVyKCkpO3RyeXtuLnNob3dGYWlsKCl9Y2F0Y2goRyl7fX1zZXRUaW1lb3V0KGVtYWlsSGFuZGxlci5yZXNldENhbGxiYWNrcygpLDFFMyl9O2Euc2F2ZVNldHRpbmdzKHtzdWJtaXR0ZWQ6ITB9KTtpZigiZnVuY3Rpb24iPT10eXBlb2YgYS5zZXR0aW5ncy5vbkJlZm9yZVNlbmRNYWlsJiYwPT1hLnNldHRpbmdzLm9uQmVmb3JlU2VuZE1haWwuY2FsbChjLAphKSlyZXR1cm4hMTthLnNldERlZmF1bHRBREYoKTsiZnVuY3Rpb24iPT10eXBlb2YgYS5zZXR0aW5ncy5vbkFERiYmKGc9YS5zZXR0aW5ncy5vbkFERi5jYWxsKGMsYSksIm9iamVjdCI9PXR5cGVvZiBnJiYkLmV4dGVuZChhLnNldHRpbmdzLkFERixnKSk7Zz0ibWFrZSBtb2RlbCB5ZWFyIHN0b2NrTnVtYmVyIHRyaW0gdmluIHByaWNlIGNhcmlkIi5zcGxpdCgiICIpO3E9YS5zZXR0aW5ncy5BREY7Zm9yKHZhciB5PTA7eTxnLmxlbmd0aDt5Kyspe3ZhciByPWdbeV07ZW1haWxIYW5kbGVyW3JdPSIiIT1lbWFpbEhhbmRsZXJbcl0\/ZW1haWxIYW5kbGVyW3JdOnFbcl0\/cVtyXTplbWFpbEhhbmRsZXJbcl19ZW1haWxIYW5kbGVyLmJvZHk9YS5jbGVhbkJsYW5rVmFyaWFibGVzKGVtYWlsSGFuZGxlci5ib2R5KTthLnNob3dQdXJjaGFzZUludGVudFBvcHVwKCl8fGVtYWlsSGFuZGxlci5zZW5kTWFpbChhLnNldHRpbmdzLmJ5cGFzc0NvbnNlbnQpO3JldHVybiEwfTthLnNob3dQdXJjaGFzZUludGVudFBvcHVwPQpmdW5jdGlvbigpe2lmKGEuc2V0dGluZ3MucHVyY2hhc2VJbnRlbnRQb3B1cCl7dmFyIGI9JCgiI2ludGVyc3RpdGlhbFZlaGljbGVJbnRlbnQiKTtpZigxPmIubGVuZ3RofHxudWxsIT1Db29raWVzLmdldCgicHVyY2hhc2VfaW50ZW50IikpcmV0dXJuITE7Z2FUcmFjaygiX3RyYWNrRXZlbnQiLCJJbnRlbnRpb25zIGQnYWNoYXQiLCJQb3B1cCB2dXMiLGEuc2V0dGluZ3MuZ29vZ2xlVHJhY2tpbmcubGFiZWwsMSk7Yy5jc3Moe29wYWNpdHk6MSx2aXNpYmlsaXR5OiJoaWRkZW4ifSk7Yi5maW5kKCJmb3JtIikub24oInN1Ym1pdCIsZnVuY3Rpb24oKXt2YXIgZD0kKHRoaXMpLGY9ZC5maW5kKCJpbnB1dCIpOyQudmFsaWRpdHkuc2V0dXAoe291dHB1dE1vZGU6InBvcHVwIn0pLnN0YXJ0KCk7ZC5maW5kKCJpbnB1dDpub3QoOmhpZGRlbiksIHRleHRhcmVhIikubm9uSHRtbCgpO2YuZmlsdGVyKCIucmVxdWlyZWQiKS5yZXF1aXJlKCkubm9uSHRtbCgpO2YuZmlsdGVyKCIucmVxUmFkaW8iKS5yYWRpb09wdGlvbkNob3NlbigpOwppZigkLnZhbGlkaXR5LmVuZCgpLnZhbGlkKXtiLnRyaWdnZXIoInJldmVhbDpjbG9zZSIpO3ZhciBoPXtwdXJjaGFzZV9pbnRlbnQ6ITB9O2Quc2VyaWFsaXplQXJyYXkoKS5tYXAoZnVuY3Rpb24obCxwLGcpe2hbbC5uYW1lXT1sLnZhbHVlfSk7Q29va2llcy5zZXQoInB1cmNoYXNlX2ludGVudCIsaC5wdXJjaGFzZV9pbnRlbnQsMzAsIi8iKTtnYVRyYWNrKCJfdHJhY2tFdmVudCIsIkludGVudGlvbnMgZCdhY2hhdCIsIlJlcG9uc2VzIixoLnB1cmNoYXNlX2ludGVudCwxKTtlbWFpbEhhbmRsZXIuc2VuZE1haWwoYS5zZXR0aW5ncy5ieXBhc3NDb25zZW50KX1yZXR1cm4hMX0pO2IucmV2ZWFsKHtjbG9zZV9vbl9iYWNrZ3JvdW5kX2NsaWNrOiExLGRpc21pc3NfbW9kYWxfY2xhc3M6Il9fTlVMTF9fIn0pO3JldHVybiEwfXJldHVybiExfTthLmdsb2JhbFJlcGxhY2VtZW50cz1mdW5jdGlvbigpe3ZhciBiPVtdOyQoImlucHV0W3R5cGU9aGlkZGVuXSIpLmVhY2goZnVuY3Rpb24oKXt2YXIgZz0KJCh0aGlzKS5hdHRyKCJuYW1lIik7Zz0idW5kZWZpbmVkIiE9dHlwZW9mIGc\/ZzokKHRoaXMpLmF0dHIoImlkIik7aWYoIWcpcmV0dXJuITA7dmFyIHQ9ITE7ImVtYWlsYnVpbGRhbmRwcmljZSI9PWcudG9Mb3dlckNhc2UoKSYmIiI9PSQodGhpcykudmFsKCkucmVwbGFjZSgvIC9nLCIiKSYmKHQ9ITApO3R8fCgiYnJhbmQiPT1nLnRvTG93ZXJDYXNlKCkmJmIucHVzaCh7bmFtZToibWFrZSIsdmFsdWU6JCh0aGlzKS52YWwoKX0pLGIucHVzaCh7bmFtZTpnLHZhbHVlOiQodGhpcykudmFsKCl9KSl9KTt2YXIgZD0iIjtpZigwPCQoIiNsYXN0dmlld2VkbWFrZSIpLmxlbmd0aCYmMDwkKCIjbGFzdHZpZXdlZG1ha2UiKS52YWwoKS5sZW5ndGgpe3ZhciBmPSQoIiNsYXN0dmlld2Vkc3RvY2tudW1iZXIiKS52YWwoKTtkPSQoIiNsYXN0dmlld2VkbWFrZSIpLnZhbCgpO3ZhciBoPSQoIiNsYXN0dmlld2VkbW9kZWwiKS52YWwoKSxsPSQoIiNsYXN0dmlld2VkeWVhciIpLnZhbCgpLHA9JCgiI2xhc3R2aWV3ZWR0cmltIikudmFsKCl8fAoiIjtkPWQrIiAiK2grIiAiK2wrKHAubGVuZ3RoPyIgIitwOiIiKTtkKz0wPGYubGVuZ3RoPyIgKFN0b2NrIyAiK2YrIikiOiIifWIucHVzaCh7bmFtZToiTEFTVFZFSElDTEVWSUVXRUQiLHZhbHVlOmR9KTtyZXR1cm4gYn07YS5jbGVhbkJsYW5rVmFyaWFibGVzPWZ1bmN0aW9uKGIpe3ZhciBkPWIucmVwbGFjZSgve1wkUVVFU1RJT05TfS9nLCIiKS5yZXBsYWNlKC97XCRNRVNTQUdFfS9nLCIiKS5yZXBsYWNlKC97XCRFTUFJTFBIT05FfS9nLCIiKS5yZXBsYWNlKC97XCRFTUFJTE1BS0V9L2csIiIpLnJlcGxhY2UoL3tcJEVNQUlMTU9ERUx9L2csIiIpLnJlcGxhY2UoL3tcJEVNQUlMWUVBUn0vZywiIikucmVwbGFjZSgve1wkUEFZTUVOVH0vZywiIikucmVwbGFjZSgve1wkUEFZTUVOVFRFUk19L2csIiIpLnJlcGxhY2UoL3tcJE9GRkVSfS9nLCIiKS5yZXBsYWNlKC97XCRTVE9DS05VTUJFUn0vZywiIikucmVwbGFjZSgve1wkQ09MT1J9L2csIiIpLnJlcGxhY2UoL3tcJEZOQU1FfS9nLAoiIikucmVwbGFjZSgve1wkTE5BTUV9L2csIiIpLnJlcGxhY2UoL3tcJEVNQUlMfS9nLCIiKS5yZXBsYWNlKC97XCRVU0VSUEhPTkV9L2csIiIpO21haWxQYWdlJiZiLnJlcGxhY2UoL3tcJEVNQUlMQlVJTERBTkRQUklDRX0vZyxtYWlsUGFnZS5iYW5kcExpbmsoKSk7cmV0dXJuIGR9O2EuY2FuY2VsPWZ1bmN0aW9uKCl7YS5jbG9zZSgiQ0FOQ0VMIil9O2Eub3Blbj1mdW5jdGlvbihiKXtpZigxPT1jLmRhdGEoIm9wZW4iKSlyZXR1cm4hMTsib2JqZWN0Ij09dHlwZW9mIGImJi0xIT0iY2xpY2sgdGFwIi5pbmRleE9mKGIudHlwZS50b0xvd2VyQ2FzZSgpKSYmKGs9ImNsaWNrIik7aWYoIWlzTmFOKGIpKXJldHVybiBzZXRUaW1lb3V0KGEub3BlbiwxRTMqYik7aWYoIWEuaXNDb250ZW50TG9hZGVkKCkpcmV0dXJuIGEubG9hZChhLm9wZW4pO2lmKCJ1bmRlZmluZWQiIT09dHlwZW9mIHdpbmRvdy5uZXdWRFBWaWRlb0lzUGxheWluZyYmMT09d2luZG93Lm5ld1ZEUFZpZGVvSXNQbGF5aW5nJiYKImNsaWNrIiE9a3x8YS5pc0FjdGl2ZSgpKXJldHVybiBhLm9wZW4oNSk7YS5vbk9wZW4oKTtyZXR1cm4gYX07YS5leGVjT3Blbj1mdW5jdGlvbigpe251bGw9PUNvb2tpZXMuZ2V0KCJwb3B1cFNob3duRXhlYyIpJiYoQ29va2llcy5zZXQoInBvcHVwU2hvd25FeGVjIiwiMSIsbnVsbCx3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUpLGEub3BlbigwKSl9O2EuaW5pdENvdW50ZG93bj1mdW5jdGlvbigpe3RyeXt2YXIgYj1uZXcgRGF0ZSgxRTMqYS5zZXR0aW5ncy5jb3VudGRvd24pO2lmKDA8Yy5maW5kKCIuY291bnRkb3duIikubGVuZ3RoKXt2YXIgZD1jLmZpbmQoIi5jb3VudGRvd24iKSxmPW5ldyBEYXRlLGg9Yi5nZXRUaW1lKCktZi5nZXRUaW1lKCk7aWYoMDxoKXt2YXIgbD1bTWF0aC5mbG9vcihoLzg2NEU1KSxNYXRoLmZsb29yKGglODY0RTUvMzZFNSksTWF0aC5mbG9vcihoJTg2NEU1JTM2RTUvNkU0KSxNYXRoLmZsb29yKGglODY0RTUlMzZFNSU2RTQvMUUzKV07Zm9yKGI9MDtiPApsLmxlbmd0aDtiKyspbFtiXT05PGxbYl0\/bFtiXS50b1N0cmluZygpOiIwIitsW2JdO3ZhciBwPWwuam9pbigiOiIpO2QuY291bnRkb3duKHtzdGFydFRpbWU6cCxpbWFnZToiL2ltYWdlcy9kaWdpdHNfc21hbGwucG5nIixkaWdpdFdpZHRoOjI5LGRpZ2l0SGVpZ2h0OjQzfSl9ZWxzZSBkLmhpZGUoKX19Y2F0Y2goZyl7InVuZGVmaW5lZCIhPT10eXBlb2YgZGVidWcmJihkZWJ1ZyhnKSxkZWJ1ZygiSW52YWxpZCBkYXRlICIsYS5zZXR0aW5ncy5jb3VudGRvd24pKX19O2EuY2xvc2U9ZnVuY3Rpb24oYil7aWYoIkNBTkNFTCI9PWImJiJmdW5jdGlvbiI9PXR5cGVvZiBhLnNldHRpbmdzLm9uQmVmb3JlQ2FuY2VsKXt2YXIgZD1hLnNldHRpbmdzLm9uQmVmb3JlQ2FuY2VsLmNhbGwoYyxhKTtpZigwPT1kKXJldHVybiExfWlmKCJmdW5jdGlvbiI9PXR5cGVvZiBhLnNldHRpbmdzLm9uQmVmb3JlQ2xvc2UmJihkPWEuc2V0dGluZ3Mub25CZWZvcmVDbG9zZS5jYWxsKGMsYSxiKSwwPT1kKSlyZXR1cm4hMTsKYy50cmlnZ2VyKCJyZXZlYWw6Y2xvc2UiKX07YS5pc0FjdGl2ZT1mdW5jdGlvbigpe3JldHVybiBwb3B1cGl6ZXJBY3RpdmUoKX07YS5zZXRDb29raWU9ZnVuY3Rpb24oKXtDb29raWVzLnNldChhLnNldHRpbmdzLmNvb2tpZU5hbWUsIjEiLGEuc2V0dGluZ3MuY29va2llRHVyYXRpb24sIi8iKTt2YXIgYj1hLnNldHRpbmdzLmNvb2tpZU5hbWUudG9Mb3dlckNhc2UoKTtpZigicmViYXRlc2hvd24iPT1ifHwicmViYXRlb3RoZXJzaG93biI9PWImJiJ1c2VkIj09JCgiI2N1cnJlbnRTdGF0dXMiKS52YWwoKSliPW5ldyBEYXRlLGIuc2V0VGltZShiLmdldFRpbWUoKSsxOEU0KSxDb29raWVzLnNldCgidXNlZFNsaWRlclBvcHVwRGlzcGxheWVkIiwiMSIsYiwiLyIpfTthLnNhdmVTZXR0aW5ncz1mdW5jdGlvbihiKXtiPSJ1bmRlZmluZWQiPT10eXBlb2YgYj97fTpiO2I9Im9iamVjdCIhPXR5cGVvZiBiP3t1c2VyRGVmaW5lZE5vbk9iamVjdDpifTpiO2MuZGF0YSgicG9wdXBTZXR0aW5ncyIsCiQuZXh0ZW5kKCEwLGEuc2V0dGluZ3MsYikpfTthLnNldERlZmF1bHRBREY9ZnVuY3Rpb24oKXt2YXIgYj0kKCIjcG9wdXBtYWtlIikudmFsKCksZD0kKCIjcG9wdXBtb2RlbCIpLnZhbCgpLGY9JCgiI3BvcHVweWVhciIpLnZhbCgpOzA8JCgiaW5wdXQuYnJhbmRlbWFpbCIpLnZhbCgpLmxlbmd0aCYmMDwkKCJpbnB1dC5tb2RlbGVtYWlsIikudmFsKCkubGVuZ3RoJiYwPCQoImlucHV0LnllYXJlbWFpbCIpLnZhbCgpLmxlbmd0aCYmKGI9JCgiaW5wdXQuYnJhbmRlbWFpbCIpLnZhbCgpLGQ9JCgiaW5wdXQubW9kZWxlbWFpbCIpLnZhbCgpLGY9JCgiaW5wdXQueWVhcmVtYWlsIikudmFsKCkpO2Euc2V0dGluZ3MuQURGPXttYWtlOmIsbW9kZWw6ZCx5ZWFyOmYsc3RvY2tOdW1iZXI6JCgiI3BvcHVwc3RvY2tudW1iZXIiKS52YWwoKX19O2EubG9nRXZlbnQ9ZnVuY3Rpb24oYil7dmFyIGQ9YS5zZXR0aW5ncy5mb3JtO2Q9ZC5vZmZlcnR5cGU\/ZC5vZmZlcnR5cGU6IkVNQUlMSURfIitkLmVtYWlsaWQ7CmlmKCFiKXJldHVybiExOyQoYS50YXJnZXQpLnRyaWdnZXIoYik7aWYoInBvcHVwLmxlYWRfc2VudCI9PWIpe3ZhciBmPWsucmVwbGFjZSgvKF5bYS16XXsxfSkvZyxmdW5jdGlvbihsKXtyZXR1cm4gbC50b1VwcGVyQ2FzZSgpfSksaD1kMmNtZWRpYS5wYWdlRGVwYXJ0bWVudCgpO2dhVHJhY2soImMuX3RyYWNrRXZlbnQiLCJQb3B1cC1sZWFkcyIsZixoLDEpfSJ1bmRlZmluZWQiIT10eXBlb2YgYWN0aXZlVXNlclByb2ZpbGVNbmcmJiJ1bmRlZmluZWQiIT10eXBlb2YgYWN0aXZlVXNlclByb2ZpbGVNbmcubG9nUGFnZVZpZXdFdmVudD8oInVuZGVmaW5lZCIhPT10eXBlb2YgZGVidWcmJmRlYnVnKCJMb2cgRXZlbnQiLGIsZCxhKSxhY3RpdmVVc2VyUHJvZmlsZU1uZy5sb2dQYWdlVmlld0V2ZW50KGIsZCkpOiJ1bmRlZmluZWQiIT09dHlwZW9mIGRlYnVnJiZkZWJ1ZygiIVVOTE9HR0VEIEVWRU5UISIsYixkKX07YS5pc0NvbnRlbnRMb2FkZWQ9ZnVuY3Rpb24oKXtpZighYS50YXJnZXRbMF0uaGFzQXR0cmlidXRlKCJkYXRhLWxhenlsb2FkaWQiKSlyZXR1cm4hMDsKdmFyIGI9MD09PWEudGFyZ2V0Lmh0bWwoKS50cmltKCkubGVuZ3RoLGQ9YS5zZXR0aW5ncy5jb250ZW50TG9hZGVkfHwhMTtyZXR1cm4hYiYmZH07YS5sb2FkPWZ1bmN0aW9uKGIpe2EuaXNDb250ZW50TG9hZGVkKCk\/KGEuc2V0dGluZ3MuY29udGVudExvYWRlZD0hMCxiKCkpOiQuYWpheCh7dHlwZToiR0VUIixjYWNoZTohMCx1cmw6KCJFTkdMSVNIIj09PSQoIiNhY3RpdmVzaXRlbGFuZ3VhZ2UiKS52YWwoKT8iL2VuIjoiL2ZyIikrIi9hamF4L2dldFBvcHVwQ29udGVudCIsZGF0YTp7d3N3aWR0aDoiMCIsXzphLnNldHRpbmdzLmlkZW50LGlkOmEudGFyZ2V0LmRhdGEoImxhenlsb2FkaWQiKSxtYWtlOiQoIiNsYXN0dmlld2VkbWFrZSIpLnZhbCgpfHwiIixtb2RlbDokKCIjbGFzdHZpZXdlZG1vZGVsIikudmFsKCl8fCIiLHllYXI6JCgiI2xhc3R2aWV3ZWR5ZWFyIikudmFsKCl8fCIiLHRyaW06JCgiI2xhc3R2aWV3ZWR0cmltIikudmFsKCl8fCIiLApzdG9ja051bWJlcjokKCIjbGFzdHZpZXdlZHN0b2NrbnVtYmVyIikudmFsKCl8fCIiLHZlaGljbGVJZDokKCIjdG9wY2FyaWQiKS52YWwoKXx8MH0sc3VjY2VzczpmdW5jdGlvbihkKXthLnRhcmdldC5odG1sKGQpO2Euc2V0dGluZ3MuY29udGVudExvYWRlZD0hMDsiZnVuY3Rpb24iPT09dHlwZW9mIGFkZE5vVHJhbnNsYXRlRW1haWxEZWYmJmFkZE5vVHJhbnNsYXRlRW1haWxEZWYoKTtiKCl9fSl9O2EuY3JlYXRlQ29uZmlybUZvcm09ZnVuY3Rpb24oKXt2YXIgYj1hLnRhcmdldC5hdHRyKCJpZCIpKyJfY29uZmlybSI7MT4kKCIjY29uZmlybV9mb3JtcyIpLmxlbmd0aCYmJCgiYm9keSIpLmFwcGVuZCgkKCI8ZGl2PjwvZGl2PiIpLmF0dHIoImlkIiwiY29uZmlybV9mb3JtcyIpKTtpZigxPiQoIiMiK2IpLmxlbmd0aCYmYS5zZXR0aW5ncy5jb25maXJtRm9ybSYmMCE9PWEuc2V0dGluZ3MuY29uZmlybUZvcm0ubGVuZ3RoKXtiPSQoIjxmb3JtPjwvZm9ybT4iKS5hdHRyKCJpZCIsYikuYXR0cigibWV0aG9kIiwKIlBPU1QiKS5hdHRyKCJhY3Rpb24iLCIvY29uZmlybWF0aW9uLmh0bWwiKS5hdHRyKCJ0YXJnZXQiLCJpZnJhbWVndHJhY2siKTt2YXIgZD0kKCIjYXV0b2F1YmFpbmVfcG9wdXAiKTtkPVt7bmFtZToiZ3RhZ19jb252ZXJzaW9uIix2YWx1ZToiZ3RhZyJ9LHtuYW1lOiJsZWFkX2RlcGFydG1lbnQiLHZhbHVlOiIifSx7bmFtZToibGVhZFR5cGUiLHZhbHVlOiIifSx7bmFtZToicGFnZUlEIix2YWx1ZToiIn0se25hbWU6ImN1cnJlbnRVUkwiLHZhbHVlOiIifSx7bmFtZToiYnV0dG9uUG9zaXRpb24iLHZhbHVlOiIifSx7bmFtZToiZGVhbGVyTmFtZSIsdmFsdWU6IiJ9LHtuYW1lOiJpc0Z1bGxXaWR0aCIsdmFsdWU6IiJ9LHtuYW1lOiJpc01vYmlsZU5ld1ZEUCIsdmFsdWU6IiJ9LHtuYW1lOiJ0ZXN0bW9kZSIsdmFsdWU6IjAiLGNsYXNzOiJ0ZXN0bW9kZSJ9LHtuYW1lOiJmcm9tQXV0b0F1YmFpbmUiLHZhbHVlOjA8ZC5sZW5ndGgmJiJmYWxzZSIhPWQudmFsKCl9XTtbXS5wdXNoLmFwcGx5KGQsCmEuc2V0dGluZ3MuY29uZmlybUZvcm0pO2Zvcih2YXIgZj0wO2Y8ZC5sZW5ndGg7ZisrKSQoIjxpbnB1dCAvPiIpLmF0dHIoInR5cGUiLCJoaWRkZW4iKS5hdHRyKGRbZl0pLmFwcGVuZFRvKGIpOyQoIiNjb25maXJtX2Zvcm1zIikuYXBwZW5kKGIpO2Iub24oInN1Ym1pdCIsb25Db25maXJtU3VibWl0KX0xPiQoIiNndHJhY2tGcmFtZSIpLmxlbmd0aCYmJCgiPGlmcmFtZT48L2lmcmFtZT4iKS5hdHRyKHt3aWR0aDoxLGhlaWdodDoxLGZyYW1lQm9yZGVyOjAsaWQ6Imd0cmFja0ZyYW1lIixuYW1lOiJpZnJhbWVndHJhY2siLHN0eWxlOiJ3aWR0aDogMXB4OyBoZWlnaHQ6IDFweDsifSkuYXBwZW5kVG8oIiNjb25maXJtX2Zvcm1zIil9O3JldHVybiBhfTsKalF1ZXJ5KGZ1bmN0aW9uKGMpe3ZhciBtPWMoIiNzaXRlY29tcGlsZWlkIikubGVuZ3RoP2MoIiNzaXRlY29tcGlsZWlkIikudmFsKCk6TWF0aC5yb3VuZCgxRTcqTWF0aC5yYW5kb20oKSkudG9TdHJpbmcoMTYpO2MuZm4ucG9wdXBpemU9ZnVuY3Rpb24oYSl7YT1hP2E6e307dmFyIGs9e3JldmVhbDp7YW5pbWF0aW9uOiJmYWRlQW5kUG9wIixhbmltYXRpb25zcGVlZDozMDAsY2xvc2VvbmJhY2tncm91bmRjbGljazohMSxkaXNtaXNzbW9kYWxjbGFzczoiY2xvc2UtcmV2ZWFsLW1vZGFsIn0sZm9ybTp7ZW1haWxpZDowLG9mZmVydHlwZTowLG5hbWU6MCxzZW5kVG86MCxzZW5kVG9BREY6MCxPS0J1dHRvbkNsYXNzOiJzdWJtaXRCdG4iLENhbmNlbEJ1dHRvbkNsYXNzOiJjYW5jZWxCdG4iLHNob3dFbWFpbENvbmZpcm1hdGlvbjohMX0sQURGOnttYWtlOiIiLG1vZGVsOiIiLHllYXI6IiIsc3RvY2tOdW1iZXI6IiJ9LGlkZW50Om0sZW5kUG9wdXBRdWV1ZTohMSxwcmlvcml0eToxLGFuaW1hdGlvbjohMSwKbm90cmFuc2Zvcm06ITEsZmlsbGZsYWc6ITEsc3VibWl0dGVkOiExLHNob3dvbmxvYWQ6ITEsY29va2llTmFtZTohMSxjb29raWVEdXJhdGlvbjo2MCxjbG9zZU9uU3VibWl0OiEwLGFkZGVkQ2xhc3NlczoiIn07aWYoMT09dGhpcy5sZW5ndGgpe3ZhciBiPXRoaXMuZGF0YSgicG9wdXBTZXR0aW5ncyIpP3RoaXMuZGF0YSgicG9wdXBTZXR0aW5ncyIpOnt9O3NldHRpbmdzPXt9O2MuZXh0ZW5kKCEwLHNldHRpbmdzLGssYixhKTshc2V0dGluZ3MuY29va2llTmFtZSYmMDx0aGlzLmF0dHIoImlkIikubGVuZ3RoJiYoc2V0dGluZ3MuY29va2llTmFtZT0iY3BwXyIrdGhpcy5hdHRyKCJpZCIpKTshc2V0dGluZ3MubmFtZSYmMDx0aGlzLmF0dHIoImlkIikubGVuZ3RoJiYoc2V0dGluZ3MubmFtZT10aGlzLmF0dHIoImlkIikucmVwbGFjZSgvQ29udGFpbmVyXGIvLCIiKSk7dGhpcy5kYXRhKCJwb3B1cFNldHRpbmdzIixzZXR0aW5ncyk7YT1uZXcgcG9wdXBpemVyKHRoaXMsc2V0dGluZ3MpOwpzZXR0aW5ncy5pbml0aWFsaXplZHx8KGEuaW5pdCgpLHBvcHVwU3VwZXJ2aXNvci5wb3B1cHMucHVzaChhKSk7cmV0dXJuIGF9cG9wdXBzPVtdO3RoaXMuZWFjaChmdW5jdGlvbigpe3BvcHVwcy5wdXNoKGModGhpcykucG9wdXBpemUoKSl9KTtyZXR1cm4gcG9wdXBzfTtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dmFyIGE9bnVsbDtjKHdpbmRvdykub24oInRvdWNobW92ZSwgb25zY3JvbGwsIHNjcm9sbCBtb3VzZXdoZWVsIHJlc2l6ZSIsZnVuY3Rpb24oayl7Y2xlYXJUaW1lb3V0KGEpO2E9c2V0VGltZW91dChwb3B1cFN1cGVydmlzb3IucmVwb3NpdGlvbiwxRTMpfSl9LDFFMyl9KTsKLyoqIC9tL2pzL3Z0aXAuanMgKiovCnZhciBfX19kMmNfdnRpcGpzX2Nfb249IjIwMjUtMDUtMjMgMTc6MTA6NDciOyd1c2Ugc3RyaWN0Jzt2YXIgX19fZDJjX3Z0aXBqc19jX29uPSIyMDI0LTAzLTI1IDEyOjM1OjM5IjsidXNlIHN0cmljdCI7CnRoaXMudnRpcD1mdW5jdGlvbigpe3RoaXMueE9mZnNldD0tMTA7dGhpcy55T2Zmc2V0PTEwOyQoIi52dGlwIikub2ZmKCkub24oImhvdmVyIixmdW5jdGlvbihhKXt0aGlzLnQ9dGhpcy50aXRsZTt0aGlzLnRpdGxlPSIiO3RoaXMudG9wPWEucGFnZVkreU9mZnNldDt0aGlzLmxlZnQ9YS5wYWdlWCt4T2Zmc2V0OyQoImJvZHkiKS5hcHBlbmQoJzxwIGlkPSJ2dGlwIiBzdHlsZT0iei1pbmRleDoxMDAwMDA7Ij48aW1nIGlkPSJ2dGlwQXJyb3ciIC8+Jyt0aGlzLnQrIjwvcD4iKTskKCJwI3Z0aXAgI3Z0aXBBcnJvdyIpLmF0dHIoInNyYyIsIi9pbWFnZXMvc2NyYXRjaC92dGlwX2Fycm93LnBuZyIpOyQoInAjdnRpcCIpLmNzcygidG9wIix0aGlzLnRvcCsicHgiKS5jc3MoImxlZnQiLHRoaXMubGVmdCsicHgiKS5mYWRlSW4oInNsb3ciKX0sZnVuY3Rpb24oKXt0aGlzLnRpdGxlPXRoaXMudDskKCJwI3Z0aXAiKS5mYWRlT3V0KCJzbG93IikucmVtb3ZlKCl9KS5vbigibW91c2Vtb3ZlIiwKZnVuY3Rpb24oYSl7dGhpcy50b3A9YS5wYWdlWSt5T2Zmc2V0O3RoaXMubGVmdD1hLnBhZ2VYK3hPZmZzZXQ7JCgicCN2dGlwIikuY3NzKCJ0b3AiLHRoaXMudG9wKyJweCIpLmNzcygibGVmdCIsdGhpcy5sZWZ0KyJweCIpfSl9O2pRdWVyeShkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oYSl7dnRpcCgpfSk7Ci8qKiAvbS9qcy93U2NyYXRjaFBhZC5qcyAqKi8KdmFyIF9fX2QyY193U2NyYXRjaFBhZGpzX2Nfb249IjIwMjUtMDUtMjMgMTc6MTM6MzciOyd1c2Ugc3RyaWN0Jzt2YXIgX19fZDJjX3dTY3JhdGNoUGFkanNfY19vbj0iMjAyNC0wNC0xMiAxODozMDowNiI7InVzZSBzdHJpY3QiOwooZnVuY3Rpb24oZCl7ZnVuY3Rpb24gaChiLGEpe3RoaXMuc3A9bnVsbDt0aGlzLnNldHRpbmdzPWI7dGhpcy4kZWxlbT1hO3RoaXMuZW5hYmxlZD0hMDt0aGlzLnNjcmF0Y2g9ITE7dGhpcy5jdHg9dGhpcy5jYW52YXM9bnVsbDtyZXR1cm4gdGhpc31kLmZuLndTY3JhdGNoUGFkPWZ1bmN0aW9uKGIsYSl7aWYoImVuYWJsZSI9PWIpZCh0aGlzKS5kYXRhKCJfd1NjcmF0Y2hQYWQiKS5lbmFibGUoKTtlbHNle2lmKCJvYmplY3QiPT09dHlwZW9mIGIpYT1iO2Vsc2UgaWYoInN0cmluZyI9PXR5cGVvZiBiKXt2YXIgYz1bXSxmPXRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBlPWQodGhpcykuZGF0YSgiX3dTY3JhdGNoUGFkIik7ZSYmKCJyZXNldCI9PT1iP2UucmVzZXQoKToiY2xlYXIiPT09Yj9lLmNsZWFyKCk6ImVuYWJsZWQiPT09Yj9lLmVuYWJsZWQ9ITA9PT1hOnZvaWQgMCE9PWQuZm4ud1NjcmF0Y2hQYWQuZGVmYXVsdFNldHRpbmdzW2JdJiYodm9pZCAwIT09YT9lLnNldHRpbmdzW2JdPQphOmMucHVzaChlLnNldHRpbmdzW2JdKSkpfSk7cmV0dXJuIDE9PT1jLmxlbmd0aD9jWzBdOjA8Yy5sZW5ndGg\/YzpmfWE9ZC5leHRlbmQoe30sZC5mbi53U2NyYXRjaFBhZC5kZWZhdWx0U2V0dGluZ3MsYXx8e30pO3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZT1kKHRoaXMpLGc9alF1ZXJ5LmV4dGVuZCghMCx7fSxhKTtpZighZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIikuZ2V0Q29udGV4dCl7dmFyIGs9IkJyb3dzZXIgZG9lcyBub3Qgc3VwcG9ydCBIVE1MNSBjYW52YXMsIHBsZWFzZSB1cGdyYWRlIHRvIGEgbW9yZSBtb2Rlcm4gYnJvd3Nlci4iO2QoIiN0ZXh0RG9lc05vdFN1cHBvcnRIVE1MNSIpLmxlbmd0aCYmKGs9ZCgiI3RleHREb2VzTm90U3VwcG9ydEhUTUw1IikudmFsKCkpO2UuY3NzKCJwYWRkaW5nLXRvcCIsIjYwcHgiKTtlLmNzcygiaGVpZ2h0IiwiNTVweCIpO2UuaHRtbChrKTsidW5kZWZpbmVkIiE9dHlwZW9mIGcuaWRUb0FkZCYmZCgiI2Jsb2NrYWdlIisKZy5pZFRvQWRkKS5sZW5ndGgmJmQoIiNibG9ja2FnZSIrZy5pZFRvQWRkKS5jc3MoInRvcCIscGFyc2VJbnQoZCgiI2Jsb2NrYWdlIitnLmlkVG9BZGQpLmNzcygidG9wIikpKzMwKyJweCIpO3JldHVybiExfWc9bmV3IGgoZyxlKTtlLmFwcGVuZChnLmdlbmVyYXRlKCkpO2cucGl4ZWxzPWcuY2FudmFzLndpZHRoKmcuY2FudmFzLmhlaWdodDtlLmRhdGEoIl93U2NyYXRjaFBhZCIsZyk7Zy5pbml0KCl9KX19O2QuZm4ud1NjcmF0Y2hQYWQuZGVmYXVsdFNldHRpbmdzPXt3aWR0aDo2MDAsaGVpZ2h0OjExNSxpbWFnZToiL2ltYWdlcy9zY3JhdGNoL3NsaWRlMi5wbmciLGltYWdlMjoiL2ltYWdlcy9wb3B1cHMvc3R5bGUyL3NjcmF0Y2gucG5nIixpbWFnZURpc2FibGVkOiIvaW1hZ2VzL3BvcHVwcy9zdHlsZTIvc2NyYXRjaF9kaXNhYmxlZC5wbmciLGNvbG9yOiIjMzM2Njk5IixvdmVybGF5OiJub25lIixzaXplOjMwLHJlYWx0aW1lUGVyY2VudDohMSxzY3JhdGNoRG93bjpudWxsLHNjcmF0Y2hVcDpudWxsLApzY3JhdGNoTW92ZTpudWxsLGN1cnNvcjpudWxsLGlkVG9BZGQ6IiIsYmFja2dyb3VuZENvbG9yOiIjMDEwYTI4IixlbmFibGVkOiEwfTtoLnByb3RvdHlwZT17Z2VuZXJhdGU6ZnVuY3Rpb24oKXt0aGlzLmNhbnZhcz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKTt0aGlzLmN0eD10aGlzLmNhbnZhcy5nZXRDb250ZXh0KCIyZCIpO3RoaXMuc3A9ZCgiPGRpdj48L2Rpdj4iKS5jc3Moe3Bvc2l0aW9uOiJyZWxhdGl2ZSJ9KS5hcHBlbmQoZCh0aGlzLmNhbnZhcykuYXR0cigid2lkdGgiLHRoaXMuc2V0dGluZ3Mud2lkdGgrInB4IikuYXR0cigiaGVpZ2h0Iix0aGlzLnNldHRpbmdzLmhlaWdodCsicHgiKS5hdHRyKCJzdHlsZSIsInBvc2l0aW9uOmFic29sdXRlO2xlZnQ6LTJweDt0b3A6LTFweDt6LWluZGV4OjE7IikpO3RoaXMuc2V0dGluZ3MuZW5hYmxlZCYmdGhpcy5lbmFibGUoKTtyZXR1cm4gdGhpcy5zcH0sZW5hYmxlOmZ1bmN0aW9uKCl7dGhpcy5kcmF3SW1hZ2UodGhpcy5zZXR0aW5ncy5pbWFnZTIsCiEwKTt0aGlzLmJpbmRCcm93c2VyKCk7dGhpcy5iaW5kTW9iaWxlKHRoaXMuc3ApfSxiaW5kQnJvd3NlcjpmdW5jdGlvbihiKXt2YXIgYT10aGlzO2QodGhpcy5jYW52YXMpLm9uKCJtb3VzZWRvd24iLGZ1bmN0aW9uKGMpe2lmKCFhLmVuYWJsZWQpcmV0dXJuITA7Yy5wcmV2ZW50RGVmYXVsdCgpO2Muc3RvcFByb3BhZ2F0aW9uKCk7YS5jYW52YXNfb2Zmc2V0PWQoYS5jYW52YXMpLm9mZnNldCgpO2Euc2NyYXRjaD0hMDthLnNjcmF0Y2hGdW5jKGMsYSwiRG93biIpfSkub24oIm1vdXNlbW92ZSIsZnVuY3Rpb24oYyl7Yy5wcmV2ZW50RGVmYXVsdCgpO2Muc3RvcFByb3BhZ2F0aW9uKCk7YS5zY3JhdGNoJiZhLnNjcmF0Y2hGdW5jKGMsYSwiTW92ZSIpfSkub24oIm1vdXNldXAiLGZ1bmN0aW9uKGMpe2MucHJldmVudERlZmF1bHQoKTtjLnN0b3BQcm9wYWdhdGlvbigpO2Euc2NyYXRjaCYmKGEuc2NyYXRjaD0hMSxhLnNjcmF0Y2hGdW5jKGMsYSwiVXAiKSl9KX0sYmluZE1vYmlsZTpmdW5jdGlvbihiKXtiLm9uKCJ0b3VjaHN0YXJ0IHRvdWNobW92ZSB0b3VjaGVuZCB0b3VjaGNhbmNlbCIsCmZ1bmN0aW9uKCl7dmFyIGE9ZXZlbnQuY2hhbmdlZFRvdWNoZXNbMF07c3dpdGNoKGV2ZW50LnR5cGUpe2Nhc2UgInRvdWNoc3RhcnQiOnZhciBjPSJtb3VzZWRvd24iO2JyZWFrO2Nhc2UgInRvdWNobW92ZSI6Yz0ibW91c2Vtb3ZlIjticmVhaztjYXNlICJ0b3VjaGVuZCI6Yz0ibW91c2V1cCI7YnJlYWs7ZGVmYXVsdDpyZXR1cm59dmFyIGY9ZG9jdW1lbnQuY3JlYXRlRXZlbnQoIk1vdXNlRXZlbnQiKTtmLmluaXRNb3VzZUV2ZW50KGMsITAsITAsd2luZG93LDEsYS5zY3JlZW5YLGEuc2NyZWVuWSxhLmNsaWVudFgsYS5jbGllbnRZLCExLCExLCExLCExLDAsbnVsbCk7YS50YXJnZXQuZGlzcGF0Y2hFdmVudChmKTtldmVudC5wcmV2ZW50RGVmYXVsdCgpfSl9LGluaXQ6ZnVuY3Rpb24oKXt0aGlzLnNwLmNzcygid2lkdGgiLHRoaXMuc2V0dGluZ3Mud2lkdGgtMik7dGhpcy5zcC5jc3MoImhlaWdodCIsdGhpcy5zZXR0aW5ncy5oZWlnaHQtMik7dGhpcy5zcC5jc3MoImN1cnNvciIsdGhpcy5zZXR0aW5ncy5jdXJzb3I\/Cid1cmwoIicrdGhpcy5zZXR0aW5ncy5jdXJzb3IrJyIpLCBkZWZhdWx0JzoiZGVmYXVsdCIpO2QodGhpcy5jYW52YXMpLmNzcyh7Y3Vyc29yOnRoaXMuc2V0dGluZ3MuY3Vyc29yPyd1cmwoIicrdGhpcy5zZXR0aW5ncy5jdXJzb3IrJyIpLCBkZWZhdWx0JzoiZGVmYXVsdCJ9KTt0aGlzLmNhbnZhcy53aWR0aD10aGlzLnNldHRpbmdzLndpZHRoO3RoaXMuY2FudmFzLmhlaWdodD10aGlzLnNldHRpbmdzLmhlaWdodDt0aGlzLnBpeGVscz10aGlzLmNhbnZhcy53aWR0aCp0aGlzLmNhbnZhcy5oZWlnaHQ7dGhpcy5zZXR0aW5ncy5pbWFnZTI\/KHRoaXMuZHJhd0ltYWdlKHRoaXMuc2V0dGluZ3MuaW1hZ2UyKSx0aGlzLnNldHRpbmdzLmVuYWJsZWR8fHRoaXMuZHJhd0ltYWdlKHRoaXMuc2V0dGluZ3MuaW1hZ2VEaXNhYmxlZCwhMCkpOigibm9uZSIhPXRoaXMuc2V0dGluZ3Mub3ZlcmxheT8odGhpcy5zZXR0aW5ncy5pbWFnZSYmdGhpcy5kcmF3SW1hZ2UodGhpcy5zZXR0aW5ncy5pbWFnZSksCnRoaXMuY3R4Lmdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbj10aGlzLnNldHRpbmdzLm92ZXJsYXkpOnRoaXMuc2V0QmdJbWFnZSgpLHRoaXMuY3R4LmZpbGxTdHlsZT10aGlzLnNldHRpbmdzLmNvbG9yLHRoaXMuY3R4LmJlZ2luUGF0aCgpLHRoaXMuY3R4LnJlY3QoMCwwLHRoaXMuc2V0dGluZ3Mud2lkdGgsdGhpcy5zZXR0aW5ncy5oZWlnaHQpLHRoaXMuY3R4LmZpbGwoKSl9LHJlc2V0OmZ1bmN0aW9uKCl7dGhpcy5jdHguZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uPSJzb3VyY2Utb3ZlciI7dGhpcy5pbml0KCl9LGNsZWFyOmZ1bmN0aW9uKCl7dGhpcy5jdHguY2xlYXJSZWN0KDAsMCx0aGlzLnNldHRpbmdzLndpZHRoLHRoaXMuc2V0dGluZ3MuaGVpZ2h0KX0sc2V0QmdJbWFnZTpmdW5jdGlvbigpe3RoaXMuc2V0dGluZ3MuaW1hZ2UmJih0aGlzLnNwLmFkZENsYXNzKCJzY3JhdGNoRGl2VGV4dCIpLHRoaXMuc3AuY3NzKCJiYWNrZ3JvdW5kLWNvbG9yIix0aGlzLnNldHRpbmdzLmJhY2tncm91bmRDb2xvciksCnRoaXMuc3AuYXBwZW5kKCI8ZGl2IGlkPSdzY3JhdGNoRGl2VGV4dCIrdGhpcy5zZXR0aW5ncy5pZFRvQWRkKyInIHN0eWxlPSd0ZXh0LWFsaWduOmNlbnRlcjtmb250LXNpemU6MzBweDtjb2xvcjojZmZmO21hcmdpbi1sZWZ0OjBweDtwYWRkaW5nLWxlZnQ6MTBweDtwYWRkaW5nLXJpZ2h0OjEwcHg7cG9zaXRpb246YWJzb2x1dGU7dG9wOjIwcHg7ei1pbmRleDowOyc+IitkKCIjc2NyYXRjaElucHV0VGV4dCIrdGhpcy5zZXR0aW5ncy5pZFRvQWRkKS52YWwoKSsiPC9kaXY+IikpfSxkcmF3SW1hZ2U6ZnVuY3Rpb24oYixhKXt2YXIgYz10aGlzLGY9bmV3IEltYWdlO2Yuc3JjPWI7ZChmKS5vbigibG9hZCIsZnVuY3Rpb24oKXtjLmN0eC5kcmF3SW1hZ2UoZiwwLDApOyJ1bmRlZmluZWQiIT10eXBlb2YgYSYmYXx8Yy5zZXRCZ0ltYWdlKCl9KX0sc2NyYXRjaEZ1bmM6ZnVuY3Rpb24oYixhLGMpe2IucGFnZVg9TWF0aC5mbG9vcihiLnBhZ2VYLWEuY2FudmFzX29mZnNldC5sZWZ0KTtiLnBhZ2VZPQpNYXRoLmZsb29yKGIucGFnZVktYS5jYW52YXNfb2Zmc2V0LnRvcCk7YVsic2NyYXRjaCIrY10oYixhKTsodGhpcy5zZXR0aW5ncy5yZWFsdGltZVBlcmNlbnR8fCJVcCI9PWMpJiZhLnNldHRpbmdzWyJzY3JhdGNoIitjXSYmYS5zZXR0aW5nc1sic2NyYXRjaCIrY10uYXBwbHkoYSxbYixhLnNjcmF0Y2hQZXJjZW50YWdlKGEpXSl9LHNjcmF0Y2hQZXJjZW50YWdlOmZ1bmN0aW9uKGIpe2Zvcih2YXIgYT0wLGM9Yi5jdHguZ2V0SW1hZ2VEYXRhKDAsMCxiLmNhbnZhcy53aWR0aCxiLmNhbnZhcy5oZWlnaHQpLGY9MCxlPWMuZGF0YS5sZW5ndGg7ZjxlO2YrPTQpMD09Yy5kYXRhW2ZdJiYwPT1jLmRhdGFbZisxXSYmMD09Yy5kYXRhW2YrMl0mJjA9PWMuZGF0YVtmKzNdJiZhKys7cmV0dXJuIGEvYi5waXhlbHMqMTAwfSxzY3JhdGNoRG93bjpmdW5jdGlvbihiLGEpe2EuY3R4Lmdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbj0iZGVzdGluYXRpb24tb3V0IjthLmN0eC5saW5lSm9pbj0icm91bmQiOwphLmN0eC5saW5lQ2FwPSJyb3VuZCI7YS5jdHguc3Ryb2tlU3R5bGU9YS5zZXR0aW5ncy5jb2xvcjthLmN0eC5saW5lV2lkdGg9YS5zZXR0aW5ncy5zaXplO2EuY3R4LmJlZ2luUGF0aCgpO2EuY3R4LmFyYyhiLnBhZ2VYLGIucGFnZVksYS5zZXR0aW5ncy5zaXplLzIsMCwyKk1hdGguUEksITApO2EuY3R4LmNsb3NlUGF0aCgpO2EuY3R4LmZpbGwoKTthLmN0eC5iZWdpblBhdGgoKTthLmN0eC5tb3ZlVG8oYi5wYWdlWCxiLnBhZ2VZKX0sc2NyYXRjaE1vdmU6ZnVuY3Rpb24oYixhKXthLmN0eC5saW5lVG8oYi5wYWdlWCxiLnBhZ2VZKTthLmN0eC5zdHJva2UoKX0sc2NyYXRjaFVwOmZ1bmN0aW9uKGIsYSl7YS5jdHguY2xvc2VQYXRoKCl9fX0pKGpRdWVyeSk7Ci8qKiAvbS9qcy9zd2ZzdG9yZS5qcyAqKi8KdmFyIF9fX2QyY19zd2ZzdG9yZWpzX2Nfb249IjIwMjUtMDUtMjMgMTc6MTI6MjEiOyd1c2Ugc3RyaWN0Jzt2YXIgX19fZDJjX3N3ZnN0b3JlanNfY19vbj0iMjAyNC0wMS0zMSAxNDozNzo1MyI7InVzZSBzdHJpY3QiO19fX2QyY19zd2ZzdG9yZWpzX2Nfb249IjIwMjMtMDEtMTIgMTE6MzU6MTgiOyJ1c2Ugc3RyaWN0IjtfX19kMmNfc3dmc3RvcmVqc19jX29uPSIyMDIzLTAxLTEyIDEwOjQ0OjU4IjsidXNlIHN0cmljdCI7X19fZDJjX3N3ZnN0b3JlanNfY19vbj0iMjAyMS0xMi0xNSAxMjo0MjozMSI7InVzZSBzdHJpY3QiOwooZnVuY3Rpb24oKXtmdW5jdGlvbiBnKGEpe2lmKCJmdW5jdGlvbiI9PT10eXBlb2YgYSl0aHJvdyJTd2ZTdG9yZSBFcnJvcjogRnVuY3Rpb25zIGNhbm5vdCBiZSB1c2VkIGFzIGtleXMgb3IgdmFsdWVzLiI7fXZhciBoPTAsbT0vW15hLXowLTlfXS9naTt3aW5kb3cuU3dmU3RvcmU9ZnVuY3Rpb24oYSl7ZnVuY3Rpb24gZShkKXt2YXIgYj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGIpO2IuaWQ9IlN3ZlN0b3JlXyIrYS5uYW1lc3BhY2UrIl8iK2grKztkfHwoYi5zdHlsZS5wb3NpdGlvbj0iYWJzb2x1dGUiLGIuc3R5bGUudG9wPSItMjAwMHB4IixiLnN0eWxlLmxlZnQ9Ii0yMDAwcHgiKTtyZXR1cm4gYn1hPWF8fHt9O3ZhciBmPXtzd2ZfdXJsOiJzdG9yYWdlLnN3ZiIsbmFtZXNwYWNlOiJzd2ZzdG9yZSIscGF0aDpudWxsLGRlYnVnOiExLHRpbWVvdXQ6MTAsb25yZWFkeTpudWxsLG9uZXJyb3I6bnVsbH07Zm9yKGMgaW4gZilmLmhhc093blByb3BlcnR5KGMpJiYKKGEuaGFzT3duUHJvcGVydHkoYyl8fChhW2NdPWZbY10pKTthLm5hbWVzcGFjZT1hLm5hbWVzcGFjZS5yZXBsYWNlKG0sIl8iKTtpZih3aW5kb3cuU3dmU3RvcmVbYS5uYW1lc3BhY2VdKXRocm93IlRoZXJlIGlzIGFscmVhZHkgYW4gaW5zdGFuY2Ugb2YgU3dmU3RvcmUgdXNpbmcgdGhlICciK2EubmFtZXNwYWNlKyInIG5hbWVzcGFjZS4gVXNlIHRoYXQgaW5zdGFuY2Ugb3Igc3BlY2lmeSBhbiBhbHRlcm5hdGUgbmFtZXNwYWNlIGluIHRoZSBjb25maWcuIjt0aGlzLmNvbmZpZz1hO2lmKGEuZGVidWcpe2lmKCJ1bmRlZmluZWQiPT09dHlwZW9mIGNvbnNvbGUpe3ZhciBuPWUoITApO3dpbmRvdy5jb25zb2xlPXtsb2c6ZnVuY3Rpb24oZCl7dmFyIGI9ZSghMCk7Yi5pbm5lckhUTUw9ZDtuLmFwcGVuZENoaWxkKGIpfX19dGhpcy5sb2c9ZnVuY3Rpb24oZCxiLGspe2I9InN3ZlN0b3JlIj09PWI\/InN3ZiI6YjtpZigidW5kZWZpbmVkIiE9PXR5cGVvZiBjb25zb2xlW2RdKWNvbnNvbGVbZF0oIlN3ZlN0b3JlIC0gIisKYS5uYW1lc3BhY2UrIiAoIitiKyIpOiAiK2spO2Vsc2UgY29uc29sZS5sb2coIlN3ZlN0b3JlIC0gIithLm5hbWVzcGFjZSsiOiAiK2QrIiAoIitiKyIpOiAiK2spfX1lbHNlIHRoaXMubG9nPWZ1bmN0aW9uKCl7fTt0aGlzLmxvZygiaW5mbyIsImpzIiwiSW5pdGlhbGl6aW5nLi4uIik7U3dmU3RvcmVbYS5uYW1lc3BhY2VdPXRoaXM7Zj1lKGEuZGVidWcpO3ZhciBjPSJTd2ZTdG9yZV8iK2EubmFtZXNwYWNlKyJfIitoKyssbD0ibG9nZm49U3dmU3RvcmUuIithLm5hbWVzcGFjZSsiLmxvZyZhbXA7b25sb2FkPVN3ZlN0b3JlLiIrYS5uYW1lc3BhY2UrIi5vbmxvYWQmYW1wO29uZXJyb3I9U3dmU3RvcmUuIithLm5hbWVzcGFjZSsiLm9uZXJyb3ImYW1wOyIrKGEucGF0aD8iTFNPUGF0aD0iK2EucGF0aCsiJmFtcDsiOiIiKSsiTFNPTmFtZT0iK2EubmFtZXNwYWNlO2YuaW5uZXJIVE1MPSc8b2JqZWN0IGhlaWdodD0iMTAwIiB3aWR0aD0iNTAwIiBjb2RlYmFzZT0iaHR0cHM6Ly9kb3dubG9hZC5tYWNyb21lZGlhLmNvbS9wdWIvc2hvY2t3YXZlL2NhYnMvZmxhc2gvc3dmbGFzaC5jYWIiIGlkPSInKwpjKyciIGNsYXNzaWQ9ImNsc2lkOkQyN0NEQjZFLUFFNkQtMTFjZi05NkI4LTQ0NDU1MzU0MDAwMCI+ICAgIDxwYXJhbSB2YWx1ZT0iJythLnN3Zl91cmwrJyIgbmFtZT0ibW92aWUiPiAgPHBhcmFtIHZhbHVlPSInK2wrJyIgbmFtZT0iRmxhc2hWYXJzIj4gICA8cGFyYW0gdmFsdWU9ImFsd2F5cyIgbmFtZT0iYWxsb3dTY3JpcHRBY2Nlc3MiPiAgPGVtYmVkIGhlaWdodD0iMzc1IiBhbGlnbj0ibWlkZGxlIiB3aWR0aD0iNTAwIiBwbHVnaW5zcGFnZT0iaHR0cHM6Ly93d3cubWFjcm9tZWRpYS5jb20vZ28vZ2V0Zmxhc2hwbGF5ZXIiIGZsYXNodmFycz0iJytsKyciIHR5cGU9ImFwcGxpY2F0aW9uL3gtc2hvY2t3YXZlLWZsYXNoIiBhbGxvd3NjcmlwdGFjY2Vzcz0iYWx3YXlzIiBxdWFsaXR5PSJoaWdoIiBsb29wPSJmYWxzZSIgcGxheT0idHJ1ZSIgbmFtZT0iJytjKyciIGJnY29sb3I9IiNmZmZmZmYiIHNyYz0iJythLnN3Zl91cmwrJyI+PC9vYmplY3Q+Jzt0aGlzLnN3Zj1kb2N1bWVudFtjXXx8CndpbmRvd1tjXTt0aGlzLl90aW1lb3V0PXNldFRpbWVvdXQoZnVuY3Rpb24oKXtTd2ZTdG9yZVthLm5hbWVzcGFjZV0ubG9nKCJlcnJvciIsImpzIiwiVGltZW91dCByZWFjaGVkLCBhc3N1bWluZyAiK2Euc3dmX3VybCsiIGZhaWxlZCB0byBsb2FkIGFuZCBmaXJpbmcgdGhlIG9uZXJyb3IgY2FsbGJhY2suIik7aWYoYS5vbmVycm9yKWEub25lcnJvcigpfSwxRTMqYS50aW1lb3V0KX07U3dmU3RvcmUucHJvdG90eXBlPXt2ZXJzaW9uOiIxLjkiLHJlYWR5OiExLHNldDpmdW5jdGlvbihhLGUpe3RoaXMuX2NoZWNrUmVhZHkoKTtnKGEpO2coZSk7dGhpcy5zd2Yuc2V0KGEsZSl9LGdldDpmdW5jdGlvbihhKXt0aGlzLl9jaGVja1JlYWR5KCk7ZyhhKTtyZXR1cm4gdGhpcy5zd2YuZ2V0KGEpfSxnZXRBbGw6ZnVuY3Rpb24oKXt0aGlzLl9jaGVja1JlYWR5KCk7dmFyIGE9dGhpcy5zd2YuZ2V0QWxsKCk7YS5fX2ZsYXNoQnVnRml4JiZkZWxldGUgYS5fX2ZsYXNoQnVnRml4O3JldHVybiBhfSwKY2xlYXI6ZnVuY3Rpb24oYSl7dGhpcy5fY2hlY2tSZWFkeSgpO2coYSk7dGhpcy5zd2YuY2xlYXIoYSl9LF9jaGVja1JlYWR5OmZ1bmN0aW9uKCl7aWYoIXRoaXMucmVhZHkpdGhyb3ciU3dmU3RvcmUgaXMgbm90IHlldCBmaW5pc2hlZCBpbml0aWFsaXppbmcuIFBhc3MgYSBjb25maWcub25yZWFkeSBjYWxsYmFjayBvciB3YWl0IHVudGlsIHRoaXMucmVhZHkgaXMgdHJ1ZSBiZWZvcmUgdHJ5aW5nIHRvIHVzZSBhIFN3ZlN0b3JlIGluc3RhbmNlLiI7fSxvbmxvYWQ6ZnVuY3Rpb24oKXt2YXIgYT10aGlzO3NldFRpbWVvdXQoZnVuY3Rpb24oKXtjbGVhclRpbWVvdXQoYS5fdGltZW91dCk7YS5yZWFkeT0hMDthLnNldCgiX19mbGFzaEJ1Z0ZpeCIsIjEiKTtpZihhLmNvbmZpZy5vbnJlYWR5KWEuY29uZmlnLm9ucmVhZHkoKX0sMCl9LG9uZXJyb3I6ZnVuY3Rpb24oKXtjbGVhclRpbWVvdXQodGhpcy5fdGltZW91dCk7aWYodGhpcy5jb25maWcub25lcnJvcil0aGlzLmNvbmZpZy5vbmVycm9yKCl9fX0pKCk7Ci8qKiAvbS9qcy9qcXVlcnkuY291bnRkb3duLmpzICoqLwp2YXIgX19fZDJjX2pxdWVyeWNvdW50ZG93bmpzX2Nfb249IjIwMjUtMDUtMjMgMTc6MDk6MzIiOyd1c2Ugc3RyaWN0Jzt2YXIgX19fZDJjX2pxdWVyeWNvdW50ZG93bmpzX2Nfb249IjIwMjQtMDEtMzEgMTQ6MzY6MTIiOyJ1c2Ugc3RyaWN0IjtfX19kMmNfanF1ZXJ5Y291bnRkb3duanNfY19vbj0iMjAyMy0wMS0xMiAxMTo0MDoyNSI7InVzZSBzdHJpY3QiO19fX2QyY19qcXVlcnljb3VudGRvd25qc19jX29uPSIyMDIzLTAxLTEyIDEwOjUwOjEwIjsidXNlIHN0cmljdCI7X19fZDJjX2pxdWVyeWNvdW50ZG93bmpzX2Nfb249IjIwMjEtMTItMTUgMTI6NTA6MzUiOyJ1c2Ugc3RyaWN0IjsKalF1ZXJ5LmZuLmNvdW50ZG93bj1mdW5jdGlvbihoKXtpZigxPHRoaXMubGVuZ3RoKXJldHVybiAkKHRoaXMpLmVhY2goZnVuY3Rpb24oKXskKHRoaXMpLmNvdW50ZG93bihoKX0pLHRoaXM7aWYodGhpcy5kYXRhKCJjb3VudGluZyIpKXJldHVybiB0aGlzO3RoaXMuZGF0YSgiY291bnRpbmciLCEwKTt2YXIgYT17c3RlcFRpbWU6NjAsZm9ybWF0OiJkZDpoaDptbTpzcyIsc3RhcnRUaW1lOiIwMToxMjozMjo1NSIsZGlnaXRJbWFnZXM6NixkaWdpdFdpZHRoOjUzLGRpZ2l0SGVpZ2h0Ojc3LHRpbWVyRW5kOmZ1bmN0aW9uKCl7fSxpbWFnZToiZGlnaXRzLnBuZyJ9LGM9W10sZj1mdW5jdGlvbihiLGQpe3JldHVybiB2b2lkIDAhPT1kP2NbYl0uY3NzKHttYXJnaW5Ub3A6ZCsicHgifSk6cGFyc2VJbnQoY1tiXS5jc3MoIm1hcmdpblRvcCIpLnJlcGxhY2UoInB4IiwiIikpfSxrPWZ1bmN0aW9uKGIpe2NbYl0uX2RpZ2l0SW5pdGlhbD0tKGNbYl0uX19tYXgqYS5kaWdpdEhlaWdodCphLmRpZ2l0SW1hZ2VzKTsKcmV0dXJuIGZ1bmN0aW9uIGUoKXttdG9wPWYoYikrYS5kaWdpdEhlaWdodDtpZihtdG9wPT1hLmRpZ2l0SGVpZ2h0KWlmKGYoYixjW2JdLl9kaWdpdEluaXRpYWwpLDA8YilrKGItMSkoKSwwPGImJnZvaWQgMCE9PWNbYl0uX19jb25kbWF4JiZjW2ItMV0uX2RpZ2l0SW5pdGlhbD09ZihiLTEpJiZmKGIsLShjW2JdLl9fY29uZG1heCphLmRpZ2l0SGVpZ2h0KmEuZGlnaXRJbWFnZXMpKTtlbHNle2NsZWFySW50ZXJ2YWwobCk7Zm9yKHZhciBnPTA7ZzxjLmxlbmd0aDtnKyspZihnLDApO2EudGltZXJFbmQoKX1lbHNlIGYoYixtdG9wKSwwIT1mKGIpL2EuZGlnaXRIZWlnaHQlYS5kaWdpdEltYWdlcyYmc2V0VGltZW91dChlLGEuc3RlcFRpbWUpLDA9PW10b3AmJihjW2JdLl9faXNtYXg9ITApfX07JC5leHRlbmQoYSxoKTt0aGlzLmNzcyh7aGVpZ2h0OmEuZGlnaXRIZWlnaHQsb3ZlcmZsb3c6ImhpZGRlbiJ9KTsoZnVuY3Rpb24oYil7Zm9yKHZhciBkPTAsZT0wO2U8YS5zdGFydFRpbWUubGVuZ3RoO2UrKyl7aWYoMDw9CnBhcnNlSW50KGEuc3RhcnRUaW1lW2VdKSl7ZWxlbT0kKCc8ZGl2IGlkPSJjbnRfJytlKyciIGNsYXNzPSJjbnREaWdpdCIgLz4nKS5jc3Moe2hlaWdodDphLmRpZ2l0SGVpZ2h0KmEuZGlnaXRJbWFnZXMqMTAsZmxvYXQ6ImxlZnQiLGJhY2tncm91bmQ6InVybCgnIithLmltYWdlKyInKSIsd2lkdGg6YS5kaWdpdFdpZHRofSk7Yy5wdXNoKGVsZW0pO2YoZCwtKHBhcnNlSW50KGEuc3RhcnRUaW1lW2VdKSphLmRpZ2l0SGVpZ2h0KmEuZGlnaXRJbWFnZXMpKTtjW2RdLl9fbWF4PTk7c3dpdGNoKGEuZm9ybWF0W2VdKXtjYXNlICJoIjpjW2RdLl9fbWF4PTA9PWQlMj8yOjk7MD09ZCUyJiYoY1tkXS5fX2NvbmRtYXg9NCk7YnJlYWs7Y2FzZSAiZCI6Y1tkXS5fX21heD05O2JyZWFrO2Nhc2UgIm0iOmNhc2UgInMiOmNbZF0uX19tYXg9MD09ZCUyPzU6OX0rK2R9ZWxzZSBlbGVtPSQoJzxkaXYgY2xhc3M9ImNudFNlcGFyYXRvciIvPicpLmNzcyh7ZmxvYXQ6ImxlZnQifSkudGV4dChhLnN0YXJ0VGltZVtlXSk7CmIuYXBwZW5kKGVsZW0pfX0pKHRoaXMpO3ZhciBsPXNldEludGVydmFsKGsoYy5sZW5ndGgtMSksMUUzKX07Ci8qKiAvbS9qcy9kYXRlVXRpbHMuanMgKiovCnZhciBfX19kMmNfZGF0ZVV0aWxzanNfY19vbj0iMjAyNS0wNS0yMyAxNzowOTo0NiI7J3VzZSBzdHJpY3QnO3ZhciBfX19kMmNfZGF0ZVV0aWxzanNfY19vbj0iMjAyNC0wMS0zMSAxNDozNjowMSI7InVzZSBzdHJpY3QiO19fX2QyY19kYXRlVXRpbHNqc19jX29uPSIyMDIzLTAxLTEyIDExOjM0OjMzIjsidXNlIHN0cmljdCI7X19fZDJjX2RhdGVVdGlsc2pzX2Nfb249IjIwMjMtMDEtMTIgMTA6NDQ6MTQiOyJ1c2Ugc3RyaWN0IjtfX19kMmNfZGF0ZVV0aWxzanNfY19vbj0iMjAyMS0xMi0xNSAxMjo0MToyMyI7InVzZSBzdHJpY3QiO0RhdGUucHJvdG90eXBlLmFtb3VudEJldHdlZW49ZnVuY3Rpb24oYSxiLGMsZCl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBhfHxudWxsPT1hfHwidW5kZWZpbmVkIj09dHlwZW9mIGJ8fG51bGw9PWIpcmV0dXJuIG51bGw7YT1hLmdldFRpbWUoKTtiPWIuZ2V0VGltZSgpO3JldHVybiBNYXRoLmZsb29yKChiLWEtZCkvYyl9OwovKiogL20vanMvcG9wdXAuanMgKiovCnZhciBfX19kMmNfcG9wdXBqc19jX29uPSIyMDI1LTA1LTIzIDE3OjExOjI3IjsndXNlIHN0cmljdCc7dmFyIF9fX2QyY19wb3B1cGpzX2Nfb249IjIwMjQtMDMtMTUgMTA6MzA6MTAiOyJ1c2Ugc3RyaWN0Ijt2YXIgYWN0aXZhdGVkUG9wdXBEaXZJRD0iIixtYWluUG9wdXBEaXZJRD0iIixwb3B1cE9uQWZ0ZXJTdWJtaXRDbG9zZT0hMSxpc1BvcHVwSW5pdGlhbGl6ZWQ9ITE7CmZ1bmN0aW9uIHNob3dQb3B1cFdpZGdldChhLGI9ITApe3ZhciBjPSExPT09Yj8hMTohMDtpZihpc1Ntc1RleHRVc0Zvcm0oKSYmYilyZXR1cm4gc2hvd1Ntc1RleHRVc0Zvcm0oYyksITE7aWYoITE9PT1pc1BvcHVwSW5pdGlhbGl6ZWQpcmV0dXJuITE7YT1hP2E6e307c2V0dGluZ3M9e3Nob3dNYWluUG9wdXA6ITEsZG9Ob3RSZWRpcmVjdDohMSxldmVudFR5cGU6ImNsaWNrIixkZWxheTohMX07JC5leHRlbmQoc2V0dGluZ3MsYSk7YT1zZXR0aW5ncy5kb05vdFJlZGlyZWN0O2I9c2V0dGluZ3MuZXZlbnRUeXBlO2M9c2V0dGluZ3MuZGVsYXk7dmFyIGQ9MDxhY3RpdmF0ZWRQb3B1cERpdklELmxlbmd0aD9hY3RpdmF0ZWRQb3B1cERpdklEOiExOyEwPT09c2V0dGluZ3Muc2hvd01haW5Qb3B1cCYmMDxtYWluUG9wdXBEaXZJRC5sZW5ndGgmJihkPW1haW5Qb3B1cERpdklEKTtpZihkJiYwPGQubGVuZ3RoKSQoIiMiK2QpLnBvcHVwaXplKCkuc2V0VHJpZ2dlcihiKS5vcGVuKGMpO2Vsc2UgaWYoImZ1bmN0aW9uIj09PQp0eXBlb2Ygc2hvd1BvcHVwV2lkZ2V0T0xEKXNob3dQb3B1cFdpZGdldE9MRCghMSk7ZWxzZSBpZighMT09PWEpMDwkKCIjcHJvbW9TZWN0aW9ubmFibGVkIikubGVuZ3RoJiYiMCIhPSQoIiNwcm9tb1NlY3Rpb25uYWJsZWQiKS52YWwoKT93aW5kb3cubG9jYXRpb24uaHJlZj0iRU5HTElTSCI9PSQoIiNhY3RpdmVzaXRlbGFuZ3VhZ2UiKS52YWwoKT8iL291ci1wcm9tb3Rpb25zLmh0bWwiOiIvcHJvbW90aW9ucy5odG1sIjp3aW5kb3cubG9jYXRpb24uaHJlZj0iLyI7ZWxzZSByZXR1cm4hMX1mdW5jdGlvbiBwb3B1cFBvc3RNZXNzYWdlT25BdXRvYXViYWluZSgpe3NldFRpbWVvdXQoZnVuY3Rpb24oKXskLnBvc3RNZXNzYWdlKCJjbG9zZVBvcHVwIiwiKiIscGFyZW50KX0sMUUzKX0KZnVuY3Rpb24gcG9wdXBEZWZhdWx0T25BZnRlckluaXRpYWxpemUoYSxiLGMsZCxlLGYsZyl7aXNQb3B1cEluaXRpYWxpemVkPSEwO2MmJihtYWluUG9wdXBEaXZJRD1mK2QpO3JldHVybiBiPT1hJiZjfHwicmVzZXQiPT1iJiZjPyhhY3RpdmF0ZWRQb3B1cERpdklEPWYrZCwidXNlZGNhcnMuaHRtbCIhPWV8fGc\/Im5ld2NhcnMuaHRtbCIhPWV8fGc\/ITA6KGNvbnNvbGUubG9nKCJwb3B1cC5qcyBwb3B1cERlZmF1bHRPbkFmdGVySW5pdGlhbGl6ZSAtIG5ld2NhcnMgcmV0dXJucyBmYWxzZS4gUG9wdXAgbWF5IGJlIGNhbmNlbGxlZC4iKSwhMSk6KHRoaXMuY29uc29sZSYmInVuZGVmaW5lZCIhPT10eXBlb2YgY29uc29sZS5sb2cmJmNvbnNvbGUubG9nKCJwb3B1cC5qcyBwb3B1cERlZmF1bHRPbkFmdGVySW5pdGlhbGl6ZSAtIHVzZWRjYXJzICByZXR1cm5zIGZhbHNlLiBQb3B1cCBtYXkgYmUgY2FuY2VsbGVkLiIpLCExKSk6ITF9CmZ1bmN0aW9uIHBvcHVwY2xvc2VQREYoYSxiKXskKCIjcG9wdXBkaXZwZGYiK2EpLmxlbmd0aCYmJCgiI3BvcHVwZGl2cGRmIithKS5jc3MoImRpc3BsYXkiLCJub25lIik7JCgiI3BvcHVwZGlmcGRmbW9kYWwiKS5sZW5ndGgmJiQoIiNwb3B1cGRpZnBkZm1vZGFsIikucmVtb3ZlKCk7JCgiI3BvcHVwZGl2cGRmaWZyYW1lIikubGVuZ3RoJiYkKCIjcG9wdXBkaXZwZGZpZnJhbWUiKS5yZW1vdmUoKTtiJiZwb3B1cFBvc3RNZXNzYWdlT25BdXRvYXViYWluZSgpfWZ1bmN0aW9uIHByaW50UERGSUZyYW1lKCl7d2luZG93LmZyYW1lcy5wb3B1cGRpdnBkZmlmcmFtZS5wcmludE1lKCl9ZnVuY3Rpb24gcG9wdXBUcmltKGEpe3JldHVybiBhLnJlcGxhY2UoL15ccyt8XHMrJC9nbSwiIil9CmZ1bmN0aW9uIHNob3dQb3B1cFdpZGdldEFkZFZlaGljbGUoYSl7JCgnaW5wdXRbbmFtZT0ic2VhcmNoZWR2ZWhpY2xlIl0nKS5lYWNoKGZ1bmN0aW9uKCl7JCh0aGlzKS52YWwoYSl9KTtzaG93UG9wdXBXaWRnZXQoKX1mdW5jdGlvbiBzaG93U3BlY2lhbFNjaGVkdWxlT25sb2FkKCl7dmFyIGE9JCgiI3NwZWNpYWxTY2hlZHVsZSIpOzA8YS5sZW5ndGgmJmEucG9wdXBpemUoe3Nob3dvbmxvYWQ6ITAsY29va2llTmFtZToic3BTY2hlZHVsZURpc3BsYXllZCIsY29va2llQ3JlYXRlOiJvbk9wZW4iLGNsb3NlQnV0dG9uOiEwfSl9ZnVuY3Rpb24gc2hvd1NwZWNpYWxTY2hlZHVsZSgpeyQoIiNzcGVjaWFsU2NoZWR1bGUiKS5wb3B1cGl6ZSgpLnNldFRyaWdnZXIoImNsaWNrIikub3BlbigpfWZ1bmN0aW9uIHNob3dUcmFkZUJvb3N0UG9wdXAoKXskKCIjVHJhZGVJbkJhclBvcHVwQ29udGFpbmVyIikucG9wdXBpemUoKS5zZXRUcmlnZ2VyKCJjbGljayIpLm9wZW4oKX0KZnVuY3Rpb24gaXNTbXNUZXh0VXNGb3JtKCl7bGV0IGE9WyJuZXdjYXJkZXRhaWwuaHRtbCIsIm5ld2NhcnMuaHRtbCJdLGI9WyJjYXJkZXRhaWwuaHRtbCIsInVzZWRjYXJzLmh0bWwiXTtyZXR1cm4iMSI9PSQoIiNEaXNjb3VudFBvcHVwTmV3UmViYXRlU2hvd1RleHRVcyIpLnZhbCgpJiZhLmluY2x1ZGVzKCQoIiNQQUdFSUQiKS52YWwoKSl8fCIxIj09JCgiI0Rpc2NvdW50UG9wdXBVc2VkUmViYXRlU2hvd1RleHRVcyIpLnZhbCgpJiZiLmluY2x1ZGVzKCQoIiNQQUdFSUQiKS52YWwoKSk\/ITA6ITF9ZnVuY3Rpb24gc2hvd1Ntc1RleHRVc0Zvcm0oYT0hMCl7JCgiI2lzTW9iaWxlIikubGVuZ3RoJiYiMSI9PSQoIiNpc01vYmlsZSIpLnZhbCgpJiYhMSE9PWE\/ZGVhbGVyTGluZVNtcygpOmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNzbGlkZWl0ICNvcGVuLWl0ZW0iKS5jaGVja2VkPSEwfTsKLyoqIC9tL2pzL21vdG9pbnNpZ2h0U2hvcFBvcHVwLmpzICoqLwp2YXIgX19fZDJjX21vdG9pbnNpZ2h0U2hvcFBvcHVwanNfY19vbj0iMjAyNS0wNS0yMyAxNzoxMDozOSI7J3VzZSBzdHJpY3QnO3ZhciBfX19kMmNfbW90b2luc2lnaHRTaG9wUG9wdXBqc19jX29uPSIyMDI0LTAxLTMxIDE0OjM3OjUwIjsidXNlIHN0cmljdCI7X19fZDJjX21vdG9pbnNpZ2h0U2hvcFBvcHVwanNfY19vbj0iMjAyMy0wMS0xMiAxMTozNjoyOSI7InVzZSBzdHJpY3QiO19fX2QyY19tb3RvaW5zaWdodFNob3BQb3B1cGpzX2Nfb249IjIwMjMtMDEtMTIgMTA6NDY6MTIiOyJ1c2Ugc3RyaWN0IjtfX19kMmNfbW90b2luc2lnaHRTaG9wUG9wdXBqc19jX29uPSIyMDIxLTEyLTE1IDEyOjQ0OjI3IjsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbW90b2luc2lnaHRTaG9wSW5pdCgpe30KZnVuY3Rpb24gbW90b2luc2lnaHRTaG9wT3Blbigpe2lmKCQoIiNtb3RvY29tbWVyY2UtdmVoaWNsZS1saW5rIikubGVuZ3RoKXt2YXIgYT0iIjtzd2l0Y2goITApe2Nhc2UgISEkKCIjbW90b2NvbW1lcmNlLXZlaGljbGUtbGluayIpLmF0dHIoImhyZWYiKTphPSQoIiNtb3RvY29tbWVyY2UtdmVoaWNsZS1saW5rIikuYXR0cigiaHJlZiIpO2JyZWFrO2Nhc2UgISEkKCIuanMtbW90b2luc2lnaHRTaG9wUG9wdXBDb250YWluZXIiKS5hdHRyKCJkYXRhLW1vdG9pbnNpZ2h0c2hvcGlmcmFtZXVybCIpOmE9JCgiLmpzLW1vdG9pbnNpZ2h0U2hvcFBvcHVwQ29udGFpbmVyIikuYXR0cigiZGF0YS1tb3RvaW5zaWdodHNob3BpZnJhbWV1cmwiKTticmVhaztjYXNlICEhJCgiLmpzLW1vdG9pbnNpZ2h0U2hvcFBvcHVwQ29udGFpbmVyIGEiKS5hdHRyKCJkYXRhLW1vdG9pbnNpZ2h0c2hvcGlmcmFtZXVybCIpOmE9JCgiLmpzLW1vdG9pbnNpZ2h0U2hvcFBvcHVwQ29udGFpbmVyIGEiKS5hdHRyKCJkYXRhLW1vdG9pbnNpZ2h0c2hvcGlmcmFtZXVybCIpOwpicmVhaztjYXNlICQoIiNtb3RvaW5zaWdodHNob3BzY3JpcHR1cmwiKSYmMDwkKCIjbW90b2luc2lnaHRzaG9wc2NyaXB0dXJsIikubGVuZ3RoOmE9JCgiI21vdG9pbnNpZ2h0c2hvcHNjcmlwdHVybCIpLnZhbCgpLnJlcGxhY2UoImludGVncmF0aW9uL2ludGVncmF0aW9uLmpzIiwic2VhcmNoLz9jb25kaXRpb249VXNlZCIpLCIxIj09KCQoIiNuZXdTZWN0aW9uT3ZlcnJpZGUiKS52YWwoKXx8MCkmJihhPSQoIiNtb3RvaW5zaWdodHNob3BzY3JpcHR1cmwiKS52YWwoKS5yZXBsYWNlKCJpbnRlZ3JhdGlvbi9pbnRlZ3JhdGlvbi5qcyIsInNlYXJjaC8iKSl9JCgiI21vdG9pbnNpZ2h0c2hvcGlmcmFtZSIpLnJlbW92ZSgpOyIiIT1hJiYwPT0kKCIjbW90b2luc2lnaHRzaG9waWZyYW1lIikubGVuZ3RoJiYkKCIjbW90b2luc2lnaHRzaG9waWZyYW1lY29udGFpbmVyIikuYXBwZW5kKCc8aWZyYW1lIGlkPSJtb3RvaW5zaWdodHNob3BpZnJhbWUiIHNyYz0iJythKyciIGFsbG93dHJhbnNwYXJlbmN5PSJ0cnVlIiBzdHlsZT0idG9wOjBweDtsZWZ0OjBweDt3aWR0aDoxMDAlO2hlaWdodDoxMDAlO3otaW5kZXg6MTAwMTsiPjwvaWZyYW1lPicpfX0KZnVuY3Rpb24gc2V0Q3VycmVudE1vdG9jb21tZXJjZUlmcmFtZVVybChhKXskKCIjbW90b2NvbW1lcmNlLXZlaGljbGUtbGluayIpLmF0dHIoImhyZWYiLGEpfTsKLyoqIC9tL2pzL2QyY19zaGlmdF9kaWdpdGFsLmpzICoqLwp2YXIgX19fZDJjX2QyY3NoaWZ0ZGlnaXRhbGpzX2Nfb249IjIwMjYtMDQtMDIgMTQ6MzA6MDMiOyd1c2Ugc3RyaWN0Jztkb2N1bWVudC5ib2R5LmFkZEV2ZW50TGlzdGVuZXIoImZpbHRlcnM6bG9hZCIsbj0+JCgiYm9keSIpLnRyaWdnZXIobi5kZXRhaWwpLCExKTtkb2N1bWVudC5ib2R5LmFkZEV2ZW50TGlzdGVuZXIoImZpbHRlcnM6Y2hhbmdlIixuPT4kKCJib2R5IikudHJpZ2dlcihuLmRldGFpbCksITEpOwokLndpZGdldCgiZDJjLmluVmlld3BvcnQiLHtvcHRpb25zOntvYnNlcnZlcjp7dGhyZXNob2xkOlsuNV19LGRpc2Nvbm5lY3RBZnRlclZpc2libGU6ITEsd2FpdEZvcjoiIix2aXNpYmxlOmZ1bmN0aW9uKCl7fSxub3RWaXNpYmxlOmZ1bmN0aW9uKCl7fX0sX29ic2VydmVyOm51bGwsX2NoaWxkT2JzZXJ2ZXJzOltdLF9jaGlsZFZpc2libGU6W10sX2NyZWF0ZTpmdW5jdGlvbigpe3ZhciBuPXRoaXM7InVuZGVmaW5lZCIhPXR5cGVvZiBJbnRlcnNlY3Rpb25PYnNlcnZlciYmKHRoaXMuX3NldENoaWxkT2JzZXJ2ZXJzKCksdGhpcy5fb2JzZXJ2ZXI9bmV3IEludGVyc2VjdGlvbk9ic2VydmVyKGZ1bmN0aW9uKHYpe3Y9dlswXTtpZihuLmlzVmlzaWJsZSh2KSlpZigwPT09bi5vcHRpb25zLndhaXRGb3IubGVuZ3RoKW4ub25WaXNpYmxlKCk7ZWxzZSBpZihuLl9hcmVDaGlsZHJlblZpc2liaWxlKCkpbi5vblZpc2libGUoKTtlbHNlIG4ub3B0aW9ucy5ub3RWaXNpYmxlKHYudGFyZ2V0KTsKZWxzZSBuLm9wdGlvbnMubm90VmlzaWJsZSh2LnRhcmdldCl9LG4ub3B0aW9ucy5vYnNlcnZlciksdGhpcy5fb2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLmVsZW1lbnRbMF0pKX0sX2FyZUNoaWxkcmVuVmlzaWJpbGU6ZnVuY3Rpb24oKXtyZXR1cm4gMD09PXRoaXMub3B0aW9ucy53YWl0Rm9yLmxlbmd0aD8hMDowPHRoaXMuZWxlbWVudC5maW5kKHRoaXMub3B0aW9ucy53YWl0Rm9yKS5maWx0ZXIoZnVuY3Rpb24obix2KXtyZXR1cm4iaGlkZGVuIj09PXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHYpLnZpc2liaWxpdHk\/ITE6ISEodi5vZmZzZXRXaWR0aHx8di5vZmZzZXRIZWlnaHR8fHYuZ2V0Q2xpZW50UmVjdHMoKS5sZW5ndGgpfSkubGVuZ3RofSxpc1Zpc2libGU6ZnVuY3Rpb24obil7aWYoIW4uaXNJbnRlcnNlY3RpbmcpcmV0dXJuITE7bj13aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSgkKG4udGFyZ2V0KVswXSk7cmV0dXJuLTE8WyJoaWRkZW4iLCJjb2xsYXBzZSJdLmluZGV4T2Yobi52aXNpYmlsaXR5KT8KITE6ITB9LF9zZXRDaGlsZE9ic2VydmVyczpmdW5jdGlvbigpe3ZhciBuPXRoaXM7JCh0aGlzLmVsZW1lbnQpLmF0dHIoImlkIik7MCE9PW4ub3B0aW9ucy53YWl0Rm9yLmxlbmd0aCYmJCh0aGlzLmVsZW1lbnQpLmZpbmQobi5vcHRpb25zLndhaXRGb3IpLmVhY2goZnVuY3Rpb24odixCKXtuLl9jaGlsZE9ic2VydmVyc1t2XT1uZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24oeil7aWYobi5pc1Zpc2libGUoelswXSkpbi5vblZpc2libGUoKX0pO24uX2NoaWxkT2JzZXJ2ZXJzW3ZdLm9ic2VydmUoQil9KX0sb25WaXNpYmxlOmZ1bmN0aW9uKCl7dGhpcy5vcHRpb25zLnZpc2libGUodGhpcy5lbGVtZW50KTt0aGlzLm9wdGlvbnMuZGlzY29ubmVjdEFmdGVyVmlzaWJsZSYmdGhpcy5kZXN0cm95KCl9LGRlc3Ryb3k6ZnVuY3Rpb24oKXtudWxsIT09dGhpcy5fb2JzZXJ2ZXImJih0aGlzLl9vYnNlcnZlci5kaXNjb25uZWN0KCksdGhpcy5fb2JzZXJ2ZXI9bnVsbCk7dGhpcy5fY2hpbGRPYnNlcnZlcnMuZm9yRWFjaChmdW5jdGlvbihuKXtudWxsIT09Cm4mJm4uZGlzY29ubmVjdCgpfSk7dGhpcy5fY2hpbGRPYnNlcnZlcnM9W107JC5XaWRnZXQucHJvdG90eXBlLmRlc3Ryb3kuY2FsbCh0aGlzKX19KTt2YXIgZDJzZERlbGF5U2VhcmNoPWZ1bmN0aW9uKCl7dmFyIG49MDtyZXR1cm4gZnVuY3Rpb24odixCKXtjbGVhclRpbWVvdXQobik7bj1zZXRUaW1lb3V0KHYsQil9fSgpOwpmdW5jdGlvbiBEMlNEKG4sdixCKXtmdW5jdGlvbiB6KCl7RygpO2xldCBiPXNldEludGVydmFsKGZ1bmN0aW9uKCl7bnVsbCE9PUUoKSYmKGNsZWFySW50ZXJ2YWwoYiksJCh5LnBhZ2VWaWV3KCkpLHNldFRpbWVvdXQoZnVuY3Rpb24oKXtIKCl9LDEwMCkpfSwxRTMpfWZ1bmN0aW9uIEkoKXtsZXQgYj0hMSxmPSExLHA9e30scj0iT3RoZXIiLGE9ZG9jdW1lbnQuY29va2llLnJlcGxhY2UoLzsgL2csIjsiKS5zcGxpdCgiOyIpO2ZvcihpPTA7aTxhLmxlbmd0aDtpKyspe2xldCBsPWFbaV0uc3BsaXQoIj0iKTtwW2xbMF1dPWxbMV19T2JqZWN0Lmhhc093bihwLCJ1dG1fc291cmNlIikmJihiPXAudXRtX3NvdXJjZS50b0xvd2VyQ2FzZSgpKTtPYmplY3QuaGFzT3duKHAsInV0bV9tZWRpdW0iKSYmKGY9cC51dG1fbWVkaXVtLnRvTG93ZXJDYXNlKCkpOyExIT09YiYmITEhPT1mJiYoImdvb2dsZSIhPWImJiJiaW5nIiE9Ynx8ImNwYyIhPWY\/Imdvb2dsZSIhPWImJiJiaW5nIiE9Ynx8ImRpc3BsYXkiIT0KZj8iZmFjZWJvb2siPT1iJiYiZGlzcGxheSI9PWY\/cj0iUGFpZCBTb2NpYWwiOiExIT09YiYmITE9PT1mJiYocj0iT3JnYW5pYyBTZWFyY2giKTpyPSJQYWlkIERpc3BsYXkiOnI9IlBhaWQgU2VhcmNoIik7JCgiI2RpZ2l0YWxfZGF0YV9pbmZvIGlucHV0W25hbWU9dHJhZmZpY190eXBlXSIpLnZhbChyKTtyZXR1cm4gcn1mdW5jdGlvbiBKKGIpe2I9Yi50b0xvd2VyQ2FzZSgpO2xldCBmPSExO3N3aXRjaChiKXtjYXNlICJidWljayI6Zj0iYnUiO2JyZWFrO2Nhc2UgImNhZGlsbGFjIjpmPSJjYSI7YnJlYWs7Y2FzZSAiY2hldnJvbGV0IjpmPSJjaCI7YnJlYWs7Y2FzZSAiZ21jIjpmPSJnbSJ9cmV0dXJuIGZ9ZnVuY3Rpb24gRygpe2gubGlicmFyeS5sb2FkZWR8fChmdW5jdGlvbihiLGYscCxyLGEsbCl7Yi5TaGlmdEFuYWx5dGljc09iamVjdD1hO2JbYV09YlthXXx8ZnVuY3Rpb24oKXsoYlthXS5xPWJbYV0ucXx8W10pLnB1c2goYXJndW1lbnRzKX07YlthXS5sPTEqbmV3IERhdGU7Cmw9Zi5jcmVhdGVFbGVtZW50KHApO2wuYXN5bmM9MTtsLnNyYz1yO2YuYm9keS5pbnNlcnRCZWZvcmUobCxmLmJvZHkuZmlyc3RDaGlsZCl9KHdpbmRvdyxkb2N1bWVudCwic2NyaXB0IixoLmxpYnJhcnkubGlicmFyeUpTLCJzZCIpLHNkKCJjcmVhdGUiLGgubGlicmFyeS5jbGllbnRJRCxoLmxpYnJhcnkucmV0YWlsZXJJRCxoLmxpYnJhcnkucHJvdmlkZXJJRCksaC5saWJyYXJ5LmxvYWRlZD0hMCxkZWJ1ZygiU0QgOjogTGlicmFyeSBpbmplY3RlZCIsaC5saWJyYXJ5KSl9ZnVuY3Rpb24gRSgpe3ZhciBiPW51bGw7c3dpdGNoKCQoIiNvZW1DZXJ0aWZpY2F0aW9uIikudmFsKCkpe2Nhc2UgIjEwMjAiOmI9ImZlcnJhcmluYSI7YnJlYWs7Y2FzZSAiMTAxOCI6Yj0iZ21jYSI7YnJlYWs7Y2FzZSAiMTAxNyI6Yj0iZ21jYSI7YnJlYWs7Y2FzZSAiMTAxNiI6Yj0ibWFzZXJhdGkiO2JyZWFrO2Nhc2UgIjEwMTUiOmI9ImxleHVzY2EiO2JyZWFrO2Nhc2UgIjEwMTQiOmI9InN0ZWxsYW50aXNjYSI7CmJyZWFrO2Nhc2UgIjEwMTkiOmI9InN0ZWxsYW50aXNjYSI7YnJlYWs7Y2FzZSAiMTAxMiI6Yj0idG95b3RhY2EiO2JyZWFrO2Nhc2UgIjEwMTEiOmI9Im5jaSI7YnJlYWs7Y2FzZSAiMTAxMCI6Yj0ibmNpIjticmVhaztjYXNlICIxMDA5IjpiPSJ2d2NhIjticmVhaztjYXNlICIxMDA4IjpiPSJtYXpkYWNhIjticmVhaztjYXNlICIxMDA3IjpiPSJqbHJjYSI7YnJlYWs7Y2FzZSAiMTAwNiI6Yj0iamxyY2EiO2JyZWFrO2Nhc2UgIjEwMDQiOmI9ImtpYWNhIn1pZihudWxsPT09YilyZXR1cm4gbnVsbDtiPWA7ICR7ZG9jdW1lbnQuY29va2llfWAuc3BsaXQoYDsgJHsiX3NkYToiK2IrIjpUMzpzZXNzaW9uIn09YCk7cmV0dXJuIDI9PT1iLmxlbmd0aD8oYj1iLnBvcCgpLnNwbGl0KCI7Iikuc2hpZnQoKSk\/YjpudWxsOm51bGx9ZnVuY3Rpb24gSCgpe3ZhciBiPWguQUNUSU9OX01BUC5oYXNPd25Qcm9wZXJ0eShoLnBhZ2VEYXRhLnBhZ2VUeXBlKT9oLkFDVElPTl9NQVBbaC5wYWdlRGF0YS5wYWdlVHlwZV06Cnt9O2I9JC5leHRlbmQoITAse30saC5BQ1RJT05fTUFQWyJkZWZhdWx0Il0sYik7JC5lYWNoKGIsZnVuY3Rpb24oZixwKXtpZihoLmlzRFImJmguZHJCbGFja2xpc3QuaW5jbHVkZXMoZikpcmV0dXJuITA7c3dpdGNoKGYpe2Nhc2UgImZvcm0iOiQuZWFjaChwLGZ1bmN0aW9uKHIsYSl7SyhyLGEpfSk7YnJlYWs7Y2FzZSAibGlzdGVuIjokLmVhY2gocCxmdW5jdGlvbihyLGEpeyQoZG9jdW1lbnQpLm9uKHIsbD0+e3kuc2VuZChhLHt9KShsKX0pfSk7YnJlYWs7ZGVmYXVsdDoib2JqZWN0Ij09PXR5cGVvZiBwP0YoZixwLm5hbWUscCk6RihmLHAse30pfX0pO0woKX1mdW5jdGlvbiBGKGIsZixwKXtpZighaC5pc0RSfHwhaC5kckJsYWNrbGlzdC5pbmNsdWRlcyhiKSkkKGRvY3VtZW50LmJvZHkpLm9uKCJjbGljayIsYix5LnNlbmQoZixwKSl9ZnVuY3Rpb24gTShiKXtiPWIuc3BsaXQoIiwiKS5tYXAoZnVuY3Rpb24ocil7cmV0dXJuIHIudHJpbSgpfSk7aWYoMT09PWIubGVuZ3RoKXJldHVybiEwOwp2YXIgZj0hMCxwO2ZvcihwIGluIGIpaWYoMD09PSQoYltwXSkubGVuZ3RoKXtmPSExO2JyZWFrfXJldHVybiBmfWZ1bmN0aW9uIEwoKXsidW5kZWZpbmVkIiE9PXR5cGVvZiBMZWFkQ29uZmlncyYmT2JqZWN0LnZhbHVlcyhMZWFkQ29uZmlncykuZm9yRWFjaChiPT57Y29uc3QgZj0kKGAjZm9ybSR7Yi5uYW1lfWApO2lmKDA8Zi5sZW5ndGgpe2xldCBwPWYuZmluZCgiaW5wdXRbbmFtZT0nbWFpbElEJ10iKS52YWwoKTtpZihoLmlzRFImJmguZHJCbGFja2xpc3QuaW5jbHVkZXMocCkpcmV0dXJuITA7eS5mb3JtKGYse2Rpc3BsYXlUeXBlOiJtb2RhbCJ9LHttYWlsSWQ6cCxwYXNzaXZlU3VibWl0OiExLGxlYWQ6Yn0pfX0pfWZ1bmN0aW9uIEsoYixmKXtpZihoLmlzRFImJmguZHJCbGFja2xpc3QuaW5jbHVkZXMoYikpcmV0dXJuITA7bGV0IHA9ITE7InVuZGVmaW5lZCIhPT10eXBlb2YgZi5zZXR0aW5ncyYmInVuZGVmaW5lZCIhPT10eXBlb2YgZi5zZXR0aW5ncy5oYXNNdWx0aXBsZUZvcm1zT25QYWdlJiYKITA9PT1mLnNldHRpbmdzLmhhc011bHRpcGxlRm9ybXNPblBhZ2UmJihwPSEwKTtpZihNKGIpJiYoIm1vZGFsIiE9PWYuZGlzcGxheVR5cGV8fCIxIiE9JCgiI2lzbW9iaWxlIikudmFsKCkpKXt2YXIgcj1mLnNldHRpbmdzfHx7fTtkZWxldGUgZi5zZXR0aW5ncztpZighMT09PXApeS5mb3JtKGIsZixyKTtlbHNlIGlmKHIuaGFzT3duUHJvcGVydHkoImZvcm1TaG93bkNsaWNrIikpe2xldCBhPXIuZm9ybVNob3duQ2xpY2s7JChyLmZvcm1TaG93bkNsaWNrKS5lYWNoKGZ1bmN0aW9uKGwscSl7Y29uc29sZS5sb2coIkQyU0QgYWRkaW5nIHJlY3Vyc2l2ZSBmb3JtIGxpc3RlbmVyIGZvcjoiLGIpOyQocSkuYXR0cigiZGF0YS1sZWFkLXJhbmQiLE1hdGgucmFuZG9tKCkqKG5ldyBEYXRlKS5nZXRUaW1lKCkpO3IuZm9ybVNob3duQ2xpY2s9ci5mb3JtU2hvd25DbGljaysnW2RhdGEtbGVhZC1yYW5kPSInKyQocSkuYXR0cigiZGF0YS1sZWFkLXJhbmQiKSsnIl0nO3kuZm9ybShiLGYscik7CnIuZm9ybVNob3duQ2xpY2s9YX0pfWVsc2UgJChiKS5lYWNoKGZ1bmN0aW9uKGEsbCl7JChsKS5hdHRyKCJkYXRhLWxlYWQtcmFuZCIsTWF0aC5yYW5kb20oKSoobmV3IERhdGUpLmdldFRpbWUoKSk7YT1iKydbZGF0YS1sZWFkLXJhbmQ9IicrJChsKS5hdHRyKCJkYXRhLWxlYWQtcmFuZCIpKyciXSc7eS5mb3JtKGEsZixyKX0pfX1mdW5jdGlvbiBOKGIpe2NvbnN0IGY9bmV3IEZvcm1EYXRhO2Zvcihjb25zdCBwIGluIGIpIm9iamVjdCI9PT10eXBlb2YgYltwXT9mLmFwcGVuZChwLEpTT04uc3RyaW5naWZ5KGJbcF0pKTpmLmFwcGVuZChwLGJbcF0pO2ZldGNoKGAvJHtEMkNVdGlscy5MYW5nLmdldFNob3J0TGFuZygpfS9hamF4L2xvZ0pTRGVidWc\/d3N3aWR0aD0wYCx7bWV0aG9kOiJQT1NUIixib2R5OmZ9KS50aGVuKHA9Pntjb25zb2xlLmxvZyhwKX0pfWNvbnNvbGUubG9nKCJEMlNEIHN0YXJ0aW5nLi4uIixuLHYpO3ZhciBoPXRoaXM7aC5saWJyYXJ5PQokLmV4dGVuZCghMCxuLHtsb2FkZWQ6ITF9KTtoLnBhZ2VEYXRhPXY7aC5zZXR0aW5ncz1CO2guaXNEUlRhZ2dpbmc9aC5wYWdlRGF0YS5HRU5FUkFMX0VOQUJMRV9UUkFOU0FDVElPTl9CVUlMREVSO2guaXNEUlBhZ2V0eXBlPSJWZWhpY2xlIERldGFpbHMiPT09aC5wYWdlRGF0YS5wYWdlVHlwZXx8Ik1vZGVsIFNob3dyb29tIj09PWgucGFnZURhdGEucGFnZVR5cGU7aC5kclN1cHByZXNzUGFnZXZpZXc9aC5pc0RSVGFnZ2luZyYmaC5pc0RSUGFnZXR5cGU7aC5pc0RSPWZ1bmN0aW9uKCl7bGV0IGI9ITEsZj0kKCIjb2VtQ2VydGlmaWNhdGlvbiIpLnZhbCgpO1sxMDE0LDEwMTldLmluY2x1ZGVzKHBhcnNlSW50KGYpKSYmKGI9ITApO3JldHVybiBoLmlzRFJUYWdnaW5nJiZoLmlzRFJQYWdldHlwZSYmYn0oKTtoLmRyQmxhY2tsaXN0PSJjcmVkaXQubXVsdGlzdGVwcG9wdXAuc3RhcnQ7ZGVhbGVyQXBwb2ludG1lbnQuc3RhcnQ7Y3JlZGl0Lm11bHRpc3RlcHBvcHVwLnN0YXJ0O1ByaWNlVmVoaWNsZTtQcmljZVZlaGljbGVBY2N1dHJhZGU7UHJpY2VWZWhpY2xlTmV3O01vbnRobHlQYXltZW50cztNb250aGx5UGF5bWVudHNfTkVXO0RlYWxlckFwcG9pbnRtZW50O0NyZWRpdEJvb3N0TXVsdGk7Q3JlZGl0UmVxdWVzdF9TaG9ydDtDcmVkaXRTY29yZTtUZXN0IERyaXZlO0NyZWRpdE11bHRpc3RlcFJlcXVlc3Q7VHJhZGUgSW47I2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm07I2Zvcm1EZWFsZXJBcHBvaW50bWVudDsjVHJhZGVJbkJhclBvcHVwQ29udGFpbmVyOy5zY3JhdGNoYW5kc2F2ZV9lbWJlZGRlZF9mb3JtIC5zY3JhdGNoYW5kc2F2ZV9lbWJlZGRlZF9zdGVwMjsubXVsdGlmb3JtX2VtYmVkZGVkX2Zvcm07I1RyYWRlSW5CYXJQb3B1cENvbnRhaW5lcjsjbW9udGhseVBheW1lbnRzUG9wdXBDb250YWluZXI7YSNGaW5hbmNlQWN0aW9uQm94X3BvcHVwLCBkaXYuY2FyTGluayA+IGRpdi5idG4tZmluYW5jZS1uZXdpbnY7Lm11bHRpZm9ybV9lbWJlZGRlZF9mb3JtIi5zcGxpdCgiOyIpOwp2YXIgQz0hMSxEPSExO249d2luZG93LmxvY2F0aW9uLmhyZWY7aWYobi5pbmNsdWRlcygiZmlyc3QtZXZlci1tYXpkYS1jeC03MCIpfHxuLmluY2x1ZGVzKCJ0b3V0LW5vdXZlYXUtbWF6ZGEtY3gtNzAiKSloLnBhZ2VEYXRhLnBhZ2VUeXBlPSJjeC03MCI7bi5pbmNsdWRlcygibGV4dXNvZnZhdWdoYW4uY29tIikmJihuLmluY2x1ZGVzKCJ3aGVlbHMtdGlyZXMtY2VudHJlLmh0bWwiKSYmKGgucGFnZURhdGEucGFnZVR5cGU9IlRpcmVzIiksbi5pbmNsdWRlcygic2hvcC1hY2Nlc3Nvcmllcy5odG1sIikmJihoLnBhZ2VEYXRhLnBhZ2VUeXBlPSJBY2Nlc3NvcmllcyIpLG4uaW5jbHVkZXMoImxleHVzLW1haW50ZW5hbmNlLXNjaGVkdWxlLmh0bWwiKSYmKGgucGFnZURhdGEucGFnZVR5cGU9Ik1haW50ZW5hbmNlIE1lbnUiKSk7MTAxNj09JCgiI29lbUNlcnRpZmljYXRpb24iKS52YWwoKSYmKG4uaW5jbHVkZXMoIm1hc2VyYXRpLW1jMjAtZW4uaHRtbCIpJiYoaC5wYWdlRGF0YS5wYWdlVHlwZT0KIk1vZGVsIFNob3dyb29tIiksbi5pbmNsdWRlcygibWFzZXJhdGktZ3JlY2FsZS1lbi5odG1sIikmJihoLnBhZ2VEYXRhLnBhZ2VUeXBlPSJNb2RlbCBTaG93cm9vbSIpLG4uaW5jbHVkZXMoIm1hc2VyYXRpLWd0Mi1zdHJhZGFsZS1lbi5odG1sIikmJihoLnBhZ2VEYXRhLnBhZ2VUeXBlPSJNb2RlbCBTaG93cm9vbSIpLG4uaW5jbHVkZXMoIm1hc2VyYXRpLWdyYW5jYWJyaW8tZW4uaHRtbCIpJiYoaC5wYWdlRGF0YS5wYWdlVHlwZT0iTW9kZWwgU2hvd3Jvb20iKSxuLmluY2x1ZGVzKCJtYXNlcmF0aS1ncmFudHVyaXNtby1mb2xnb3JlLWVuLmh0bWwiKSYmKGgucGFnZURhdGEucGFnZVR5cGU9Ik1vZGVsIFNob3dyb29tIiksbi5pbmNsdWRlcygicHJlb3JkZXItMjAyNS1ncmVjYWxlLWZvbGdvcmUuaHRtbCIpJiYoaC5wYWdlRGF0YS5wYWdlVHlwZT0iQ3VzdG9tIERlYWxlciBDb250ZW50Iiksbi5pbmNsdWRlcygicHJlb3JkZXItMjAyNS1ncmFuY2FicmlvLWZvbGdvcmUuaHRtbCIpJiYKKGgucGFnZURhdGEucGFnZVR5cGU9IkN1c3RvbSBEZWFsZXIgQ29udGVudCIpLG4uaW5jbHVkZXMoInByZW9yZGVyLTIwMjUtZ3JhbnR1cmlzbW8tZm9sZ29yZS5odG1sIikmJihoLnBhZ2VEYXRhLnBhZ2VUeXBlPSJDdXN0b20gRGVhbGVyIENvbnRlbnQiKSxuLmluY2x1ZGVzKCJyZWNhbGxzL3JlY2FsbHMuaHRtbCIpJiYoaC5wYWdlRGF0YS5wYWdlVHlwZT0iQ3VzdG9tIERlYWxlciBDb250ZW50IiksZGVidWcoIkQyU0QgTWFzZXJhdGkgUGFnZVR5cGUgT3ZlcnJpZGU6ICIraC5wYWdlRGF0YS5wYWdlVHlwZSkpOyIiPT0kKCIjb2VtQ2VydGlmaWNhdGlvbiIpLnZhbCgpJiYobj0kKCIjREVBTEVSQlJBTkRfUFJJTUFSWSIpLnZhbCgpLCIiIT1uJiYobj1KKG4pLCExIT09biYmKGgucGFnZURhdGEucGFnZUJyYW5kPW4pKSk7aC5BQ1RJT05fTUFQPXsiZGVmYXVsdCI6eydhW2hyZWYqPSJ0ZWwiXTpub3QoW2hyZWYqPSJ7JCJdKSc6ImNsaWNrVG9DYWxsIiwnYVtocmVmKj0iZ29vZ2xlIl1baHJlZio9Im1hcHMiXSc6ImdldERpcmVjdGlvbnMiLAonI2FsZXJ0TXNnQ29udGVudCBhW2hyZWYqPSJzZXJ2aWNlIl0nOiJzY2hlZHVsZVNlcnZpY2VDbGljayIsJy5oZWFkZXItbWVudSBhW2hyZWYqPSJzZXJ2aWNlIl0nOiJzY2hlZHVsZVNlcnZpY2VDbGljayIsZm9ybTp7IiNUcmFkZUluQmFyUG9wdXBDb250YWluZXIiOntkaXNwbGF5VHlwZToiaW4tcGFnZSJ9LCJmb3JtI3F1aWNrRW1haWxGb3JtIjp7Zm9ybVR5cGU6IkdlbmVyYWwgQ29udGFjdCIsZGlzcGxheVR5cGU6ImluLXBhZ2UifSwiZm9ybS52aXNpdENvbnRhY3RGb3JtIjp7Zm9ybVR5cGU6IkdlbmVyYWwgQ29udGFjdCIsZGlzcGxheVR5cGU6Im1vZGFsIn0sIiNmaW5hbmNlX211bHRpc3RlcF9mb3JtIjp7Zm9ybVR5cGU6IkZpbmFuY2UiLGRpc3BsYXlUeXBlOiJpbi1wYWdlIixzZXR0aW5nczp7Zm9ybVNob3duQ2xpY2s6ImEjRmluYW5jZUFjdGlvbkJveF9wb3B1cCwgZGl2LmNhckxpbmsgPiBkaXYuYnRuLWZpbmFuY2UtbmV3aW52IixtYWlsSWQ6IkNyZWRpdE11bHRpc3RlcFJlcXVlc3QifX19LApsaXN0ZW46eyJ0eXBlYWhlYWQ6YXN5bmNyZWNlaXZlIjoidHlwZWRTZWFyY2gifX0sSG9tZTp7IiNob21lcGFnZS1iYW5uZXIgI3NsaWRlciI6e25hbWU6ImNhcm91c2VsQ2xpY2siLGNvbnRhaW5lclVzZWQ6ITB9LCIjbW9iaWxlU2xpZGVyMiI6e25hbWU6ImNhcm91c2VsQ2xpY2siLGNvbnRhaW5lclVzZWQ6ITB9LCIudmVoaWNsZUNhcm91c2VsIGxpIjoiY2Fyb3VzZWxDbGljayIsIiNuZXdDYXJTbGlkZXIgbGkiOiJjYXJvdXNlbENsaWNrIiwnbWFpbiBhW2hyZWYqPSJzZXJ2aWNlIl0nOiJzY2hlZHVsZVNlcnZpY2VDbGljayIsZm9ybTp7IiNtYWlsRXhwcmVzc1JlcXVlc3QiOntmb3JtVHlwZToiR2VuZXJhbCBDb250YWN0IixkaXNwbGF5VHlwZToiaW4tcGFnZSJ9fX0sU2hvd3Jvb206eycjdG9wQmFubmVySW1hZ2Vbb25jbGljayo9InNlcnZpY2UiXSc6InNjaGVkdWxlU2VydmljZUNsaWNrIixsaXN0ZW46eyJmaWx0ZXJzOmNoYW5nZSI6ImZpbHRlclNlYXJjaCIsImZpbHRlcnM6bG9hZCI6ImZpbHRlclNlYXJjaCJ9fSwKIk1vZGVsIFNob3dyb29tIjp7JyN0b3BCYW5uZXJJbWFnZVtvbmNsaWNrKj0ic2VydmljZSJdJzoic2NoZWR1bGVTZXJ2aWNlQ2xpY2siLCIjcHJpbnRTcGVjcyI6ImJyb2NodXJlRG93bmxvYWQiLGZvcm06eyIjZm9ybURlYWxlckFwcG9pbnRtZW50Ijp7ZGlzcGxheVR5cGU6ImluLXBhZ2UifSwiLmNvbnRhY3R1c19lbWJlZGRlZF9mb3JtIjp7ZGlzcGxheVR5cGU6ImluLXBhZ2UifSwiI1RyYWRlSW5CYXJQb3B1cENvbnRhaW5lciI6e2Rpc3BsYXlUeXBlOiJpbi1wYWdlIixmb3JtVHlwZToiVHJhZGUgSW4ifSwiLnNjcmF0Y2hhbmRzYXZlX2VtYmVkZGVkX2Zvcm0gLnNjcmF0Y2hhbmRzYXZlX2VtYmVkZGVkX3N0ZXAyIjp7ZGlzcGxheVR5cGU6ImluLXBhZ2UifSwiLnBheW1lbnRDYWxjdWxhdG9yVkRQIjp7ZGlzcGxheVR5cGU6ImluLXBhZ2UifSwiLm11bHRpZm9ybV9lbWJlZGRlZF9mb3JtIjp7Zm9ybVR5cGU6IkdldCBBIFF1b3RlIixkaXNwbGF5VHlwZToiaW4tcGFnZSIsc2V0dGluZ3M6e2Zvcm1TaG93bkNsaWNrOiJmb3JtLm11bHRpZm9ybV9lbWJlZGRlZF9mb3JtICNtdWx0aWZvcm1fZW1iZWRkZWRfYnRuXzEifX19fSwKIlZlaGljbGUgTGlzdGluZyI6eycjdG9wQmFubmVySW1hZ2Vbb25jbGljayo9InNlcnZpY2UiXSc6InNjaGVkdWxlU2VydmljZUNsaWNrIixsaXN0ZW46eyJmaWx0ZXJzOmNoYW5nZSI6ImZpbHRlclNlYXJjaCIsImZpbHRlcnM6bG9hZCI6ImZpbHRlclNlYXJjaCJ9LGZvcm06eyIuY29udGFjdEZvcm0gZm9ybS5kMmNmb3JtIjp7Zm9ybVR5cGU6IkRpc2NvdmVyIE9mZmVyIixkaXNwbGF5VHlwZToiaW4tcGFnZSIsc2V0dGluZ3M6e2Zvcm1TaG93bkNsaWNrOidkaXYuYnV0dExpbmtbZGF0YS1sZWFkLXRyaWdnZXI9IkRpc2NvdmVyT2ZmZXIiXScsaGFzTXVsdGlwbGVGb3Jtc09uUGFnZTohMCxwYXJlbnRFbGVtZW50OiIuY2FyQm94V3JhcHBlciJ9fSwiI2xvYW5jYWxjdWxhdG9yIjp7Zm9ybVR5cGU6IlBheW1lbnQgQ2FsY3VsYXRvciIsZGlzcGxheVR5cGU6ImluLXBhZ2UiLHNldHRpbmdzOntmb3JtU2hvd25DbGljazoiZGl2LmxvYW5DYWxjdWxhdG9yVHJpZ2dlciA+IHNwYW4ifX0sCiIuY3JlZGl0U2NvcmVQb3B1cENvbnRhaW5lckVtYmVkZGVkIC5kMmNmb3JtIjp7Zm9ybVR5cGU6IkZpbmFuY2UiLGRpc3BsYXlUeXBlOiJpbi1wYWdlIixzZXR0aW5nczp7aGFzTXVsdGlwbGVGb3Jtc09uUGFnZTohMH19fX0sIlZlaGljbGUgRGV0YWlscyI6eycjdG9wQmFubmVySW1hZ2Vbb25jbGljayo9InNlcnZpY2UiXSc6InNjaGVkdWxlU2VydmljZUNsaWNrIiwiLmpDYXJvdXNlbExpdGUgbGkiOiJjYXJvdXNlbENsaWNrIiwiI3ByaW50U3BlY3MiOiJicm9jaHVyZURvd25sb2FkIixmb3JtOnsiI21vbnRobHlQYXltZW50c1BvcHVwQ29udGFpbmVyIjp7ZGlzcGxheVR5cGU6Im1vZGFsIn0sIiNmb3JtRGVhbGVyQXBwb2ludG1lbnQiOntkaXNwbGF5VHlwZToiaW4tcGFnZSJ9LCIuY29udGFjdHVzX2VtYmVkZGVkX2Zvcm0iOntkaXNwbGF5VHlwZToiaW4tcGFnZSJ9LCIjZnJtUmViYXRlX2ltYWdlcG9wdXBfYXZhaWxhYmlsaXR5dXNlZCI6e2Rpc3BsYXlUeXBlOiJpbi1wYWdlIiwKZm9ybVR5cGU6IlJlcXVlc3QgTW9yZSBJbmZvIn0sIi5zY3JhdGNoYW5kc2F2ZV9lbWJlZGRlZF9mb3JtIC5zY3JhdGNoYW5kc2F2ZV9lbWJlZGRlZF9zdGVwMiI6e2Rpc3BsYXlUeXBlOiJpbi1wYWdlIn0sIi5tdWx0aWZvcm1fZW1iZWRkZWRfZm9ybSI6e2Rpc3BsYXlUeXBlOiJpbi1wYWdlIn0sIiNUcmFkZUluQmFyUG9wdXBDb250YWluZXIiOntkaXNwbGF5VHlwZToiaW4tcGFnZSIsZm9ybVR5cGU6IlRyYWRlIEluIn19fSwiVGVzdCBEcml2ZSI6e2Zvcm06eyIjdXNlckluZm9Gb3JtLCAjc2VuZEVtYWlsRm9ybSwgI3ZlaGljbGVTZWxlY3RGb3JtLCAjbWFpbFF1ZXN0aW9uQ29tbWVudEZvcm0iOntmb3JtVHlwZToiQm9vayBBIFRlc3QgRHJpdmUiLGRpc3BsYXlUeXBlOiJpbi1wYWdlIn0sIiN2ZWhpY2xlU2VsZWN0Rm9ybSwgLm5ldy1kZXRhaWxzIC5tYWlsd2lkZ2V0LS1mb3JtLCAubmV3LWRldGFpbHMgI3NlbmRFbWFpbEZvcm1TdWJtaXQiOntmb3JtVHlwZToiQm9vayBBIFRlc3QgRHJpdmUiLApkaXNwbGF5VHlwZToiaW4tcGFnZSJ9fX0sRmluYW5jZTp7Zm9ybTp7IiNtaW5pZm9ybSI6e2Zvcm1UeXBlOiJGaW5hbmNlIixkaXNwbGF5VHlwZToiaW4tcGFnZSIsc2V0dGluZ3M6e2lnbm9yZVN1Ym1pdDoiMSIhPT0kKCJpbnB1dFtuYW1lPSdBRE1JTl9DUkVESVRfU0VORE5PV19DSEVDSyddIikudmFsKCl9fX19LFNlcnZpY2U6eyIjU2VjdGlvbl9STkRaIGEuc2VydmljZS1saW5rLCAjU2VjdGlvbl9STkRaIC51c2VkX2RldGFpbHNfYnRuIGEiOiJzY2hlZHVsZVNlcnZpY2VDbGljayIsIiNTZWN0aW9uX0JPRFkgYS5zZXJ2aWNlLWxpbmssICNTZWN0aW9uX0JPRFkgLnVzZWRfZGV0YWlsc19idG4gYSI6InNjaGVkdWxlU2VydmljZUNsaWNrIiwiI1NlY3Rpb25fR0FSQUdFIGEuc2VydmljZS1saW5rLCAjU2VjdGlvbl9HQVJBR0UgLnVzZWRfZGV0YWlsc19idG4gYSI6InNjaGVkdWxlU2VydmljZUNsaWNrIixmb3JtOnsiI3VzZXJJbmZvRm9ybSwgI3VzZXJBZHJlc3NGb3JtLCAjc2VuZEVtYWlsRm9ybSwgI3ZlaGljbGVTZWxlY3RGb3JtIjp7Zm9ybVR5cGU6IlJlY2FsbHMiLApkaXNwbGF5VHlwZToiaW4tcGFnZSJ9LCIjdmVoaWNsZVNlbGVjdEZvcm0sIC5uZXctZGV0YWlscyAubWFpbHdpZGdldC0tZm9ybSwgLm5ldy1kZXRhaWxzICNzZW5kRW1haWxGb3JtU3VibWl0Ijp7Zm9ybVR5cGU6IlJlY2FsbHMiLGRpc3BsYXlUeXBlOiJpbi1wYWdlIn19fSwiU2NoZWR1bGUgU2VydmljZSI6e2Zvcm06eyIjdXNlckluZm9Gb3JtLCAjc2VuZEVtYWlsRm9ybSwgI3ZlaGljbGVTZWxlY3RGb3JtLCAjbWFpbFF1ZXN0aW9uQ29tbWVudEZvcm0sICNtYWlsU2NoZWR1bGVGb3JtIjp7Zm9ybVR5cGU6IlNjaGVkdWxlIFNlcnZpY2UiLGRpc3BsYXlUeXBlOiJpbi1wYWdlIn0sIiN2ZWhpY2xlU2VsZWN0Rm9ybSwgLm5ldy1kZXRhaWxzIC5tYWlsd2lkZ2V0LS1mb3JtLCAubmV3LWRldGFpbHMgI3NlbmRFbWFpbEZvcm1TdWJtaXQiOntmb3JtVHlwZToiU2NoZWR1bGUgU2VydmljZSIsZGlzcGxheVR5cGU6ImluLXBhZ2UifX19LCJUaXJlIFN0b3JlIjp7Zm9ybTp7IiN1c2VySW5mb0Zvcm0sICNzZW5kRW1haWxGb3JtLCAjdmVoaWNsZVNlbGVjdEZvcm0sICNtYWlsUXVlc3Rpb25Db21tZW50Rm9ybSI6e2Zvcm1UeXBlOiJQYXJ0cyIsCmRpc3BsYXlUeXBlOiJpbi1wYWdlIn0sIiN2ZWhpY2xlU2VsZWN0Rm9ybSwgLm5ldy1kZXRhaWxzIC5tYWlsd2lkZ2V0LS1mb3JtLCAubmV3LWRldGFpbHMgI3NlbmRFbWFpbEZvcm1TdWJtaXQiOntmb3JtVHlwZToiUGFydHMiLGRpc3BsYXlUeXBlOiJpbi1wYWdlIn19fSxQYXJ0czp7Zm9ybTp7IiN1c2VySW5mb0Zvcm0sICNzZW5kRW1haWxGb3JtLCAjdmVoaWNsZVNlbGVjdEZvcm0sICNtYWlsUXVlc3Rpb25Db21tZW50Rm9ybSI6e2Zvcm1UeXBlOiJQYXJ0cyIsZGlzcGxheVR5cGU6ImluLXBhZ2UifSwiI3ZlaGljbGVTZWxlY3RGb3JtLCAubmV3LWRldGFpbHMgLm1haWx3aWRnZXQtLWZvcm0sIC5uZXctZGV0YWlscyAjc2VuZEVtYWlsRm9ybVN1Ym1pdCI6e2Zvcm1UeXBlOiJQYXJ0cyIsZGlzcGxheVR5cGU6ImluLXBhZ2UifX19LCJEZWFsZXIgU3BlY2lhbHMiOnsiI3NlcnZpY2UgLnByb21vcyAucHJvbW8tbGluay1pdGVtIGEsICNzZXJ2aWNlIC5wcm9tb3MgLnByb21vLWltYWdlIGEiOiJzZXJ2aWNlT2ZmZXJDbGljayIsCiIuZGl2Q2F0ZWdvcnlCb3hXcmFwcGVyOm5vdCgjc2VydmljZSkgLnByb21vcyAucHJvbW8tbGluay1pdGVtIGEsIC5kaXZDYXRlZ29yeUJveFdyYXBwZXI6bm90KCNzZXJ2aWNlKSAucHJvbW9zIC5wcm9tby1pbWFnZSBhIjoib2ZmZXJDbGljayIsIi5wcm9tby1jYXJkLW9lbSBoMiwgLnByb21vLWNhcmQtb2VtIGltZywgLnByb21vLWNhcmQtb2VtIC5wcm9tby1vZW0tcGF5bWVudCwgLnByb21vLWNhcmQtb2VtIGEuYnRuIjoib2ZmZXJDbGljayIsJyN0b3BCYW5uZXJJbWFnZVtvbmNsaWNrKj0ic2VydmljZSJdJzoic2NoZWR1bGVTZXJ2aWNlQ2xpY2siLGZvcm06eyIjcHJvbW9wb3B1cC5wcm9tb3BvcHVwIGZvcm0uZDJjZm9ybSI6e2Zvcm1UeXBlOiJTcGVjaWFscyIsZGlzcGxheVR5cGU6Im1vZGFsIixzZXR0aW5nczp7Zm9ybVNob3duQ2xpY2s6ImEucHJvbW8tYnRuIn19fSxsaXN0ZW46eyJwcm9tb3BvcHVwLXN1Ym1pdCI6InByb21vcG9wdXBTdWJtaXNzaW9uIn19LCJDb250YWN0IFVzIjp7Zm9ybTp7IiNjb250YWN0X2Zvcm0zIjp7ZGlzcGxheVR5cGU6ImluLXBhZ2UifX19LAoiQWJvdXQgVXMiOntmb3JtOnsiI3NlbmRFbWFpbFBvcHVwRm9ybSI6e2Rpc3BsYXlUeXBlOiJtb2RhbCJ9fX0sQnJvY2h1cmU6e2Zvcm06eyIjdmVoaWNsZVNlbGVjdEZvcm0sICN1c2VySW5mb0Zvcm0sICNzZW5kRW1haWxGb3JtLCAjbWFpbFF1ZXN0aW9uQ29tbWVudEZvcm0iOntkaXNwbGF5VHlwZToiaW4tcGFnZSJ9fX0sIlRyYWRlIEluIjp7Zm9ybTp7IiN2ZWhpY2xlU2VsZWN0Rm9ybUV4LCAjbWFpbFF1ZXN0aW9uQ29tbWVudEZvcm0sICN1c2VySW5mb0Zvcm0sICNzZW5kRW1haWxGb3JtLCAjdmVoaWNsZVNlbGVjdEZvcm0iOntmb3JtVHlwZToiVHJhZGUgSW4iLGRpc3BsYXlUeXBlOiJpbi1wYWdlIn19fSxPdGhlcjp7Zm9ybTp7ImZvcm0uY3VzdG9tZm9ybSI6e2Zvcm1UeXBlOiJEZWFsZXIgQ3VzdG9tIixkaXNwbGF5VHlwZToiaW4tcGFnZSJ9LCIjdXNlckluZm9Gb3JtLCAjc2VuZEVtYWlsRm9ybSwgI21haWxKb2JPZmZlckZvcm0sICNyZXN1bWV1cGxvYWQiOntmb3JtVHlwZToiRW1wbG95bWVudCIsCmRpc3BsYXlUeXBlOiJpbi1wYWdlIn0sIiN2ZWhpY2xlU2VsZWN0Rm9ybSwgI21haWxGaW5hbmNlRm9ybSwgI21haWxRdWVzdGlvbkNvbW1lbnRGb3JtLCAjdXNlckluZm9Gb3JtLCAjc2VuZEVtYWlsRm9ybSI6e2Rpc3BsYXlUeXBlOiJpbi1wYWdlIn19fSwiQ3VzdG9tIERlYWxlciBDb250ZW50Ijp7Zm9ybTp7ImZvcm0uY3VzdG9tZm9ybSI6e2Zvcm1UeXBlOiJEZWFsZXIgQ3VzdG9tIixkaXNwbGF5VHlwZToiaW4tcGFnZSJ9LCJmb3JtLmN1c3RvbWZvcm1fX3YzIjp7Zm9ybVR5cGU6IkRlYWxlciBDdXN0b20iLGRpc3BsYXlUeXBlOiJpbi1wYWdlIn19fX07dmFyIHk9bmV3IGZ1bmN0aW9uKCl7dmFyIGI9dGhpcztiLnN0YXRpY0RhdGE9aC5wYWdlRGF0YTtiLnZpZXdlZEZvcm1zPVtdO2IuaW5pdGlhdGlvbkZvcm1zPVtdO2Iuc3VibWl0dGVkRm9ybXM9W107Yi5mb3JtPWZ1bmN0aW9uKGYscCxyKXt2YXIgYT17Zm9ybTpmPyQoZik6ITEsZGF0YTpwLHNldHRpbmdzOnIsdmlld2VkOiExLAppbml0aWF0ZWQ6ITEsc3VibWl0dGVkOiExLHN1Ym1pdEJ0bkNsaWNrZWQ6ITEsaG9va2VkOiExLGVtYWlsSGFuZGxlckhvb2tlZDohMSx1aWQ6TWF0aC5yYW5kb20oKSoobmV3IERhdGUpLmdldFRpbWUoKSxhZGRMaXN0ZW5lcnM6ZnVuY3Rpb24oKXt0cnl7aWYoIWEuaG9va2VkKXthLmhvb2tlZD0hMDt2YXIgbD1be3NlbGVjdG9yOiIuanFUcmFuc2Zvcm1TZWxlY3RXcmFwcGVyID4gdWwgPiBsaSA+IGEiLGV2ZW50TmFtZToiY2xpY2sifSx7c2VsZWN0b3I6InNlbGVjdCIsZXZlbnROYW1lOiJjaGFuZ2UgY2xpY2sifSx7c2VsZWN0b3I6ImxhYmVsLGxpLGEsaSIsZXZlbnROYW1lOiJjbGljayJ9LHtzZWxlY3RvcjoiaW5wdXQiLGV2ZW50TmFtZToiY2hhbmdlIGtleXVwIHBhc3RlIn0se3NlbGVjdG9yOiJ0ZXh0YXJlYSIsZXZlbnROYW1lOiJjaGFuZ2Uga2V5dXAgcGFzdGUifSx7c2VsZWN0b3I6ImJ1dHRvbiIsZXZlbnROYW1lOiJjaGFuZ2Uga2V5dXAgY2xpY2sifV07aWYoIWguaXNEUnx8CiFoLmRyQmxhY2tsaXN0LmluY2x1ZGVzKGEuZGF0YS5mb3JtVHlwZSkpeyJ1bmRlZmluZWQiIT10eXBlb2YgYS5zZXR0aW5ncy5mb3JtSW50ZXJhY3RDbGljayYmbC5wdXNoKHtzZWxlY3RvcjphLnNldHRpbmdzLmZvcm1JbnRlcmFjdENsaWNrLGV2ZW50TmFtZToiY2hhbmdlIGtleXVwIGNsaWNrIn0pO2ZvcihsZXQgcT0wO3E8bC5sZW5ndGg7cSsrKXtsZXQgdD1sW3FdLGc9LTEhPT10LmV2ZW50TmFtZS5pbmRleE9mKCIgIik\/dC5ldmVudE5hbWUuc3BsaXQoIiAiKTpbdC5ldmVudE5hbWVdLGQ9ZnVuY3Rpb24oKXthLmludGVyYWN0KCk7aWYobnVsbCE9ZyYmInVuZGVmaW5lZCIhPXR5cGVvZiBnLmxlbmd0aCYmMDxnLmxlbmd0aClmb3IobGV0IGM9MDtjPGcubGVuZ3RoO2MrKylhLmZvcm0uZmluZCh0LnNlbGVjdG9yKS5vZmYoZ1tjXSxkKX07Zm9yKGxldCBjPTA7YzxnLmxlbmd0aDtjKyspYS5mb3JtLmZpbmQodC5zZWxlY3Rvcikub24oZ1tjXSxkKTthLmZvcm0uZmluZCh0LnNlbGVjdG9yKS5vbigiYmx1ciIsCmZ1bmN0aW9uKCl7ITAhPT1DJiZhLmZpZWxkSW50ZXJhY3Rpb24odGhpcyl9KX1pZigidW5kZWZpbmVkIiE9dHlwZW9mIHIuc3VibWl0RXZlbnROYW1lKSQoZG9jdW1lbnQuYm9keSkub24oci5zdWJtaXRFdmVudE5hbWUsZnVuY3Rpb24oKXthLnNlbnQoKX0pO2EuZm9ybS5maW5kKCcuYnRuLWRlZmF1bHQsIGFbY2xhc3MqPSJzdWJtaXQiXSwgYnV0dG9uW2NsYXNzKj0ic3VibWl0Il0sIGlucHV0OnN1Ym1pdCwgaW5wdXRbY2xhc3MqPSJzdWJtaXQiXSwgYSNzZW5kRW1haWxGb3JtU3VibWl0LCBhI3RyYWRlSW5CYXJQb3B1cFN1Ym1pdCwgYnV0dG9uW3R5cGU9InN1Ym1pdCJdJykub24oImNsaWNrIixhLnN1Ym1pdCk7YS5mb3JtLmZpbHRlcihmdW5jdGlvbihxLHQpe3Q9JCh0KTtyZXR1cm4gdC5oYXNDbGFzcygiYnRuLWRlZmF1bHQiKXx8dC5pcygiaW5wdXQ6c3VibWl0Iil8fHQuaXMoImEjc2VuZEVtYWlsRm9ybVN1Ym1pdCIpfHx0LmlzKCJhI3RyYWRlSW5CYXJQb3B1cFN1Ym1pdCIpfHwKKHQuaXMoImlucHV0Iil8fHQuaXMoImEiKXx8dC5pcygiYnV0dG9uIikpJiZ0LmlzKCdbY2xhc3MqPSJzdWJtaXQiXScpfSkub24oImNsaWNrIixhLnN1Ym1pdCl9fX1jYXRjaChxKXtkZWJ1ZygiRXJyb3IgaW5qZWN0aW5nIGhvb2tzLCBub3QgZ29vZCBmb3IgdGFnZ2luZzogJXMiLHEubWVzc2FnZSl9fSxsaXN0ZW46ZnVuY3Rpb24oKXsidW5kZWZpbmVkIiE9PXR5cGVvZiBhLmZvcm0uZGF0YSgibWFpbGV4cHJlc3Mtd2lkZ2V0IikmJihhLnNldHRpbmdzLm1haWxJZD1hLmZvcm0uZGF0YSgibWFpbGV4cHJlc3Mtd2lkZ2V0Iikuc2V0dGluZ3MuZW1haWxJZCk7ImluLXBhZ2UiPT09YS5kYXRhLmRpc3BsYXlUeXBlP2EuZm9ybS5lYWNoKGZ1bmN0aW9uKHQsZyl7JChnKS5pblZpZXdwb3J0KHtvYnNlcnZlcjp7dGhyZXNob2xkOlsuNV19LHZpc2libGU6YS52aWV3LGRpc2Nvbm5lY3RBZnRlclZpc2libGU6ITAsd2FpdEZvcjoiaW5wdXQ6bm90KDpoaWRkZW4pLCB0ZXh0YXJlYSwgc2VsZWN0In0pfSk6CmEuZm9ybS5pblZpZXdwb3J0KHtvYnNlcnZlcjp7dGhyZXNob2xkOlsxXX0sdmlzaWJsZTphLnZpZXcsZGlzY29ubmVjdEFmdGVyVmlzaWJsZTohMCx3YWl0Rm9yOiJpbnB1dDpub3QoOmhpZGRlbiksIHRleHRhcmVhLCBzZWxlY3QifSk7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiByLmZvcm1TaG93bkNsaWNrKWZvcih2YXIgbD1yLmZvcm1TaG93bkNsaWNrLmluZGV4T2YoIiwiKT9yLmZvcm1TaG93bkNsaWNrLnNwbGl0KCIsIik6W3IuZm9ybVNob3duQ2xpY2tdLHE9MDtxPGwubGVuZ3RoO3ErKykkKChuZXcgU3RyaW5nKGxbcV0pKS50cmltKCkpLm9uKCJjbGljayIsZnVuY3Rpb24oKXthLnZpZXcoKTsidW5kZWZpbmVkIiE9dHlwZW9mIHIubWFpbElkJiZiLnZpZXdlZEZvcm1zLnB1c2goci5tYWlsSWQpfSk7YS5zZXR0aW5ncy5oYXNPd25Qcm9wZXJ0eSgiaWdub3JlU3VibWl0IikmJmEuc2V0dGluZ3MuaWdub3JlU3VibWl0fHwoYS5lbWFpbEhhbmRsZXJIb29rZWQ9ITAsJCgiYm9keSIpLm9uKCJlbWFpbEhhbmRsZXIuZW1haWxTZW50IiwKZnVuY3Rpb24oKXthLnNlbnQoKX0pKX0sdmlldzpmdW5jdGlvbigpeyJ1bmRlZmluZWQiIT09dHlwZW9mIGEuc2V0dGluZ3MmJiEwPT09YS5zZXR0aW5ncy5oYXNNdWx0aXBsZUZvcm1zT25QYWdlJiYidW5kZWZpbmVkIiE9PXR5cGVvZiBhLnNldHRpbmdzLmZvcm1TaG93bkNsaWNrJiYoYS5mb3JtPSQoYS5zZXR0aW5ncy5mb3JtU2hvd25DbGljaykuY2xvc2VzdChhLnNldHRpbmdzLnBhcmVudEVsZW1lbnQsImZvcm0iKSxhLmluaXRpYXRlZD0hMSxhLnN1Ym1pdHRlZD0hMSxhLnN1Ym1pdEJ0bkNsaWNrZWQ9ITEsYS5ob29rZWQ9ITEpO2lmKDA8YS5mb3JtLmxlbmd0aCYmMDwkKCIjbWluaWZvcm0iKS5sZW5ndGgmJiJmaW5hbmNlX211bHRpc3RlcF9mb3JtIj09JChhLmZvcm0pLmF0dHIoImlkIikpYS5pbml0aWF0ZWQ9ITAsYS5ob29rZWQ9ITAsYS52aWV3ZWQ9ITA7ZWxzZSBpZihhLmhvb2tlZHx8YS5hZGRMaXN0ZW5lcnMoKSwhMCE9PWEudmlld2VkKXtpZigidW5kZWZpbmVkIiE9CnR5cGVvZiBhLnNldHRpbmdzLm1haWxJZCl7aWYoLTEhPT1iLnZpZXdlZEZvcm1zLmluZGV4T2YoYS5zZXR0aW5ncy5tYWlsSWQpKXthLnZpZXdlZD0hMDtyZXR1cm59Yi52aWV3ZWRGb3Jtcy5wdXNoKGEuc2V0dGluZ3MubWFpbElkKX1pZigtMSE9PWIudmlld2VkRm9ybXMuaW5kZXhPZihhLnVpZCkpYS52aWV3ZWQ9ITA7ZWxzZXthLnZpZXdlZD0hMDtiLnZpZXdlZEZvcm1zLnB1c2goYS51aWQpO3ZhciBsPXtpbmZvOmEuc2V0dGluZ3MsZXZlbnQ6YS5kYXRhfTskLmV4dGVuZCghMCxsLHtpbmZvOnt0YXJnZXQ6YS5mb3JtfX0pO2w9QS5idWlsZChiLnN0YXRpY0RhdGEucGFnZVR5cGUsImZvcm1TaG93biIsbCk7ZGVidWcoIlNEIDo6IGZvcm1TaG93biAiK2EuZm9ybS5zZWxlY3RvcixsKTshMCE9PUMmJihkZWJ1ZygiU0QgOjogdmlldyBmb3JtU2hvd24iLGwpLHNkKCJkYXRhTGF5ZXIiLGwpLHNkKCJzZW5kIikpO2EuZGF0YS5mb3JtVHlwZT1sLmZvcm1UeXBlfX19LGludGVyYWN0OmZ1bmN0aW9uKCl7aWYoITAhPT0KYS5pbml0aWF0ZWQpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgYS5zZXR0aW5ncy5tYWlsSWQpe2lmKC0xIT09Yi5pbml0aWF0aW9uRm9ybXMuaW5kZXhPZihhLnNldHRpbmdzLm1haWxJZCkpe2EuaW5pdGlhdGVkPSEwO2Eudmlld2VkPSEwO3JldHVybn1iLmluaXRpYXRpb25Gb3Jtcy5wdXNoKGEuc2V0dGluZ3MubWFpbElkKX1jb25zb2xlLmxvZygiRDJEUiBmb3JtSW5pdCIsYSk7aWYoIWguaXNEUnx8IWguZHJCbGFja2xpc3QuaW5jbHVkZXMoYS5kYXRhLmZvcm1UeXBlKSlpZigtMSE9PWIuaW5pdGlhdGlvbkZvcm1zLmluZGV4T2YoYS51aWQpKWEuaW5pdGlhdGVkPSEwLGEudmlld2VkPSEwO2Vsc2V7YS52aWV3ZWR8fGEudmlldygpO2EuaW5pdGlhdGVkPSEwO2IuaW5pdGlhdGlvbkZvcm1zLnB1c2goYS51aWQpO3ZhciBsPXtpbmZvOmEuc2V0dGluZ3MsZXZlbnQ6YS5kYXRhfTskLmV4dGVuZCghMCxsLHtpbmZvOnt0YXJnZXQ6YS5mb3JtfX0pO2w9QS5idWlsZChiLnN0YXRpY0RhdGEucGFnZVR5cGUsCiJmb3JtSW5pdGlhdGlvbiIsbCk7ZGVidWcoIlNEIDo6IGZvcm1Jbml0aWF0aW9uICIrYS5mb3JtLnNlbGVjdG9yLGwpO3NkKCJkYXRhTGF5ZXIiLGwpO3NkKCJzZW5kIil9fX0sZmllbGRJbnRlcmFjdGlvbjpmdW5jdGlvbihsKXtpZighaC5pc0RSVGFnZ2luZ3x8IWguaXNEUlBhZ2V0eXBlKXt2YXIgcT17aW5mbzphLnNldHRpbmdzLGV2ZW50OmEuZGF0YX07JC5leHRlbmQoITAscSx7aW5mbzp7dGFyZ2V0OmEuZm9ybX19KTtxPUEuYnVpbGQoYi5zdGF0aWNEYXRhLnBhZ2VUeXBlLCJmb3JtRmllbGRJbnRlcmFjdGlvbiIscSk7bD1udWxsIT1sLmdldEF0dHJpYnV0ZSgibmFtZSIpP2wuZ2V0QXR0cmlidXRlKCJuYW1lIik6bC5nZXRBdHRyaWJ1dGUoImlkIik7cS5mb3JtRmllbGROYW1lPWw7ZGVidWcoIlNEIDo6IGZvcm1GaWVsZEludGVyYWN0aW9uICIrYS5mb3JtLnNlbGVjdG9yLHEpO3NkKCJkYXRhTGF5ZXIiLHEpO3NkKCJzZW5kIil9fSxzZW50OmZ1bmN0aW9uKCl7dmFyIGw9ITE7CmxldCBxPXt9O2NvbnNvbGUubG9nKCJEMkRSIGZvcm1TdWIiLGEpO2lmKCFoLmlzRFJ8fCFoLmRyQmxhY2tsaXN0LmluY2x1ZGVzKGEuZGF0YS5mb3JtVHlwZSkpaWYoInVuZGVmaW5lZCIhPXR5cGVvZiBhLnNldHRpbmdzLm1haWxJZCYmIkNyZWRpdE11bHRpc3RlcFJlcXVlc3QiPT1hLnNldHRpbmdzLm1haWxJZCYmMDwkKCIjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSIpLmxlbmd0aCYmJCgiI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0iKS5pcygiOnZpc2libGUiKSYmKGw9ITApLChsfHwidW5kZWZpbmVkIj09dHlwZW9mIGEuc2V0dGluZ3MucGFzc2l2ZVN1Ym1pdHx8ITAhPT1hLnNldHRpbmdzLnBhc3NpdmVTdWJtaXQpJiYobHx8IWEuc3VibWl0dGVkJiZhLmluaXRpYXRlZCkmJiEwIT09Qyl7YS5zdWJtaXR0ZWQ9ITA7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBhLnNldHRpbmdzLm1haWxJZCl7aWYoLTEhPT1iLnN1Ym1pdHRlZEZvcm1zLmluZGV4T2YoYS5zZXR0aW5ncy5tYWlsSWQpKXJldHVybjsKYi5zdWJtaXR0ZWRGb3Jtcy5wdXNoKGEuc2V0dGluZ3MubWFpbElkKX0kLmV4dGVuZCghMCxxLHtpbmZvOnt0YXJnZXQ6YS5mb3JtLGVtYWlsSGFuZGxlcn19KTsidW5kZWZpbmVkIj09dHlwZW9mIHEuZXZlbnQmJihxLmV2ZW50PXt9LCJDcmVkaXRNdWx0aXN0ZXBSZXF1ZXN0Ij09YS5zZXR0aW5ncy5tYWlsSWQmJihxLmV2ZW50LmZvcm1UeXBlPWEuZGF0YS5mb3JtVHlwZSkpO2lmKCEoIkZpbmFuY2UiPT12LnBhZ2VUeXBlJiYwPCQoIiNtaW5pZm9ybSIpLmxlbmd0aCYmInVuZGVmaW5lZCIhPT10eXBlb2YgcS5pbmZvLmVtYWlsSGFuZGxlciYmInVuZGVmaW5lZCIhPT10eXBlb2YgcS5pbmZvLmVtYWlsSGFuZGxlci5tYWlsSUQmJiJnZW5lcmljTWFpbCI9PXEuaW5mby5lbWFpbEhhbmRsZXIubWFpbElEJiYiZmluYW5jZW1lbnQiPT1xLmluZm8uZW1haWxIYW5kbGVyLnB1cmNoYXNlX2ludGVudF9zZWN0aW9uKSl7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBxLmluZm8uZW1haWxIYW5kbGVyKXtpZigiRmluYW5jZSI9PQpxLmV2ZW50LmZvcm1UeXBlJiYiTGVhZDogUmVxdWVzdCBmb3IgY29udGFjdCI9PXEuaW5mby5lbWFpbEhhbmRsZXIuc3ViamVjdClyZXR1cm47IkxlYWQ6IFRyYWRlLWluIHJlcXVlc3QiPT1xLmluZm8uZW1haWxIYW5kbGVyLnN1YmplY3QudHJpbSgpJiYocS5ldmVudC5mb3JtVHlwZT0iVHJhZGUgSW4iKTsiMTAxNyI9PSQoIiNvZW1DZXJ0aWZpY2F0aW9uIikudmFsKCkmJnEuaW5mby5lbWFpbEhhbmRsZXIuc3ViamVjdC5pbmNsdWRlcygiUmVxdWVzdCBmb3IgYmVzdCBvZmZlciIpJiYocS5ldmVudC5mb3JtVHlwZT0iR2V0IEEgUXVvdGUiKX1sPUEuYnVpbGQoYi5zdGF0aWNEYXRhLnBhZ2VUeXBlLCJmb3JtU3VibWlzc2lvbiIscSk7ZGVidWcoIlNEIDo6IGZvcm1TdWJtaXNzaW9uICIrYS5mb3JtLnNlbGVjdG9yLGwpO3NkKCJkYXRhTGF5ZXIiLGwpO3NkKCJzZW5kIil9fX0sc3VibWl0OmZ1bmN0aW9uKCl7YS5zdWJtaXRCdG5DbGlja2VkPSEwOyExPT09YS5lbWFpbEhhbmRsZXJIb29rZWQmJgphLnNlbnQoKX19O2EubGlzdGVuKCl9O2IucGFnZVZpZXc9ZnVuY3Rpb24oZil7aWYoITEhPT1mfHwhMCE9PXRoaXMucGFnZVZpZXdTdWJtaXR0ZWQpaWYoY29uc29sZS5sb2coIkQyU0QgcGFnZVZpZXc6IixoKSwhaC5kclN1cHByZXNzUGFnZXZpZXcpe3RoaXMucGFnZVZpZXdTdWJtaXR0ZWQ9ITA7dmFyIHA9e2hhbmRsZXI6ZnVuY3Rpb24oKXsxPT0kKCIjSVNWTSIpLnZhbCgpP3Auc2VuZCgpOiJ1bmRlZmluZWQiIT10eXBlb2YgYWN0aXZlVXNlclByb2ZpbGVNbmcmJiJ1bmRlZmluZWQiIT10eXBlb2YgYWN0aXZlVXNlclByb2ZpbGVNbmcucmVnaXN0ZXJDYWxsYmFjaz9hY3RpdmVVc2VyUHJvZmlsZU1uZy5yZWdpc3RlckNhbGxiYWNrKCgpPT57ZGVidWcoIlNEIDo6IC0gaW4gc2Vzc2lvbklEIGNhbGxiYWNrIik7cC5zZW5kKCl9KTpjb25zb2xlLmVycm9yKCJhY3RpdmVVc2VyUHJvZmlsZU1uZy5yZWdpc3RlckNhbGxiYWNrIGlzIG5vdCBkZWZpbmVkIil9LHNlbmQ6ZnVuY3Rpb24oKXt2YXIgcj0KQS5idWlsZChiLnN0YXRpY0RhdGEucGFnZVR5cGUsInBhZ2V2aWV3Iix7fSk7ci5kZWFsZXJCQUM9JCgiI2RpZ2l0YWxfZGF0YV9pbmZvIGlucHV0W25hbWU9J2RlYWxlckJBQyddIikudmFsKCk7Y29uc29sZS5kZWJ1ZygiU0QgOjogcGFnZXZpZXciLHIpOyIiIT09ci5wYWdlVHlwZSYmbnVsbCE9PXIucGFnZVR5cGUmJiJ1bmRlZmluZWQiIT09dHlwZW9mIHIucGFnZVR5cGV8fE4oe21lc3NhZ2U6IlNoaWZ0RGlnaXRhbCBQYWdlVHlwZSBpcyBlbXB0eSIsZGF0YTp7cGFnZURhdGE6Yi5zdGF0aWNEYXRhLGRhdGFfbGF5ZXI6cn19KTtzZCgiZGF0YUxheWVyIixyKTtzZCgic2VuZCIsInBhZ2V2aWV3Iil9fTtyZXR1cm4gcC5oYW5kbGVyfX07Yi5zZW5kPWZ1bmN0aW9uKGYscCl7dmFyIHI9e2V2ZW50VHlwZTpmLGRhdGE6cCxoYW5kbGVyOmZ1bmN0aW9uKGEpe3ZhciBsPXtpbmZvOnt0YXJnZXQ6YS5jdXJyZW50VGFyZ2V0fSxldmVudDpyLmRhdGF9O2lmKHIuZGF0YS5jb250YWluZXJVc2VkJiYKKGwuaW5mby50YXJnZXQ9YS50YXJnZXQsISQoYS50YXJnZXQpLnBhcmVudCgpLmlzKGEuY3VycmVudFRhcmdldCkpKXJldHVybjt2YXIgcT1hLnR5cGU7cSs9IiIhPT1hLm5hbWVzcGFjZT8iLiIrYS5uYW1lc3BhY2U6IiI7c3dpdGNoKHEpe2Nhc2UgImZpbHRlcnM6Y2hhbmdlIjpjYXNlICJmaWx0ZXJzOmxvYWQiOiQoImJvZHkiKS5kYXRhKHEsIjEiKTtkb2N1bWVudC5ib2R5LmRhdGFzZXRbcV09IjEiO2lmKCJTaG93cm9vbSI9PT1oLnBhZ2VEYXRhLnBhZ2VUeXBlKWwuaW5mby5maWx0ZXJzPWEuZmlsdGVycyxsLmluZm8udmVoaWNsZUNvdW50PWEudmVoaWNsZUNvdW50O2Vsc2V7bC5pbmZvLmZpbHRlcnM9YS5maWx0ZXJEYXRhLmZpbHRlclNlYXJjaDtsLmluZm8udmVoaWNsZUNvdW50PWEuZmlsdGVyRGF0YS5jb3VudFNlYXJjaFJlc3VsdHM7aWYoMDxhLmZpbHRlckRhdGEuZmlsdGVyU2VhcmNoLnN0YXR1cy5sZW5ndGgpe2xldCB0PWEuZmlsdGVyRGF0YS5maWx0ZXJTZWFyY2guc3RhdHVzWzBdLApnPSQoIi5kaXZTY29wZWZsdENlcnRpZmllZElkIC5ub3RhZ3MuZXhjZXJ0aWZpZWQiKTsiQ1BPIiE9PXQmJjA8Zy5sZW5ndGgmJmcuaGFzQ2xhc3MoInNlbGVjdGVkIikmJihhLmZpbHRlckRhdGEuZmlsdGVyU2VhcmNoLnN0YXR1cz1bIkNQTyJdKX1pZigiIiE9PWEuZmlsdGVyRGF0YS50eXBlZFNlYXJjaCl7ZDJzZERlbGF5U2VhcmNoKGZ1bmN0aW9uKCl7Yi5wYWdlVmlldyghMCkoKTtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Yi5zZW5kTm93KGYsbCk7Yi5zZW5kTm93KCJ0eXBlZFNlYXJjaCIse2luZm86e3RhcmdldDphLmN1cnJlbnRUYXJnZXR9LGV2ZW50Ont0eXBlZFNlYXJjaDphLmZpbHRlckRhdGEudHlwZWRTZWFyY2h9fSwyNTApfSl9LDNFMyk7cmV0dXJufWlmKCJmaWx0ZXJzOmNoYW5nZSI9PXEpe2IucGFnZVZpZXcoITApKCk7ZDJzZERlbGF5U2VhcmNoKGZ1bmN0aW9uKCl7Yi5zZW5kTm93KGYsbCl9LDUwMCk7cmV0dXJufX1icmVhaztjYXNlICJ0eXBlYWhlYWQ6YXN5bmNyZWNlaXZlIjpsLmluZm8udGFyZ2V0PQphLnRhcmdldH1iLnNlbmROb3coZixsKX19O3JldHVybiByLmhhbmRsZXJ9O2Iuc2VuZE5vdz1mdW5jdGlvbihmLHApe3A9QS5idWlsZChiLnN0YXRpY0RhdGEucGFnZVR5cGUsZixwKTtkZWJ1ZygiU0QgOjogc2VuZGluZyBzZW5kTm93ICIrZixwKTtzZCgiZGF0YUxheWVyIixwKTtzZCgic2VuZCIpfTtyZXR1cm4gYn0sQT1uZXcgZnVuY3Rpb24oKXtmdW5jdGlvbiBiKCl7bGV0IGQ9e3Nlc3Npb25JZDpFKCl9O2VtYWlsSGFuZGxlci51c2VyUG9zdGFsJiYoZC51c2VyWmlwQ29kZT1lbWFpbEhhbmRsZXIudXNlclBvc3RhbCk7cmV0dXJuIGR9ZnVuY3Rpb24gZihkLGMpe2M9e3N0YXR1czpxKCJ2ZWhpY2xlRGV0YWlscy5zdGF0dXMiLGcuZGF0YUNvbnRhaW5lci5maW5kKCJpbnB1dFtuYW1lPXN0YXR1c10iKS52YWwoKSwiIiksdHJpbToiIixlbmdpbmU6Zy5kYXRhQ29udGFpbmVyLmZpbmQoImlucHV0W25hbWU9ZW5naW5lXSIpLnZhbCgpLHRyYW5zbWlzc2lvbjpxKCJ2ZWhpY2xlRGV0YWlscy50cmFuc21pc3Npb24iLApnLmRhdGFDb250YWluZXIuZmluZCgiaW5wdXRbbmFtZT10cmFuc21pc3Npb25dIikudmFsKCksIiIpLGludGVyaW9yQ29sb3I6Zy5kYXRhQ29udGFpbmVyLmZpbmQoImlucHV0W25hbWU9aW50Q29sb3JdIikudmFsKCksZXh0ZXJpb3JDb2xvcjpnLmRhdGFDb250YWluZXIuZmluZCgiaW5wdXRbbmFtZT1leHRDb2xvcl0iKS52YWwoKSxkcml2ZVRyYWluOmcuZGF0YUNvbnRhaW5lci5maW5kKCJpbnB1dFtuYW1lPWRyaXZlVHJhaW5dIikudmFsKCksZnVlbFR5cGU6cSgidmVoaWNsZURldGFpbHMuZnVlbFR5cGUiLGcuZGF0YUNvbnRhaW5lci5maW5kKCJpbnB1dFtuYW1lPWZ1ZWxUeXBlXSIpLnZhbCgpLCJHYXNvbGluZSIpLG1zcnA6IjAiLGRpc3BsYXllZFByaWNlOiIwIix2aW46IiJ9O2QmJigiZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSI9PT1kLmF0dHIoImlkIikmJi0xPT09WyJWZWhpY2xlIERldGFpbHMiLCJNb2RlbCBTaG93cm9vbSJdLmluZGV4T2YoZy5zdGF0aWNEYXRhLnBhZ2VUeXBlKT8KJC5leHRlbmQoITAsYyx7bWFrZTokKCIjcG9wdXBtYWtlTXVsdGlzdGVwRm9ybSIpLnZhbCgpLG1vZGVsOiQoIiNwb3B1cG1vZGVsTXVsdGlzdGVwRm9ybSIpLnZhbCgpLHllYXI6JCgiI3BvcHVweWVhck11bHRpc3RlcEZvcm0iKS52YWwoKSx2aW46IiJ9KTooJC5leHRlbmQoITAsYyx7bWFrZTpkLmZpbmQoIiNicmFuZFNlbGVjdCIpLnZhbCgpLG1vZGVsOmQuZmluZCgiI21vZGVsU2VsZWN0IikudmFsKCkseWVhcjpkLmZpbmQoIiN5ZWFyU2VsZWN0IikudmFsKCksdmluOmQuZmluZCgiI3Zpbk51bWJlciIpLnZhbCgpfHwiIn0pLGQuZmluZCgic2VsZWN0W25hbWU9Y29sb3JTZWxlY3RdIikmJihjLmV4dGVyaW9yQ29sb3I9ZC5maW5kKCJzZWxlY3RbbmFtZT1jb2xvclNlbGVjdF0iKS52YWwoKSkpKTtjLmhhc093blByb3BlcnR5KCJtb2RlbCIpJiYiIiE9PWMubW9kZWx8fCQuZXh0ZW5kKCEwLGMse21ha2U6Zy5kYXRhQ29udGFpbmVyLmZpbmQoImlucHV0W25hbWU9bWFrZV0iKS52YWwoKSwKbW9kZWw6Zy5kYXRhQ29udGFpbmVyLmZpbmQoImlucHV0W25hbWU9bW9kZWxdIikudmFsKCkseWVhcjpnLmRhdGFDb250YWluZXIuZmluZCgiaW5wdXRbbmFtZT15ZWFyXSIpLnZhbCgpLHRyaW06Zy5kYXRhQ29udGFpbmVyLmZpbmQoImlucHV0W25hbWU9dHJpbV0iKS52YWwoKSx2aW46Zy5kYXRhQ29udGFpbmVyLmZpbmQoImlucHV0W25hbWU9dmluXSIpLnZhbCgpLGRpc3BsYXllZFByaWNlOmcuZGF0YUNvbnRhaW5lci5maW5kKCJpbnB1dFtuYW1lPWRpc3BsYXllZFByaWNlXSIpLnZhbCgpLG1zcnA6Zy5kYXRhQ29udGFpbmVyLmZpbmQoImlucHV0W25hbWU9bXNycF0iKS52YWwoKX0pO2Zvcih2YXIgayBpbiBjKWlmKGMuaGFzT3duUHJvcGVydHkoaykmJiJ1bmRlZmluZWQiIT09dHlwZW9mIGNba10pe2lmKDA9PT1jW2tdLmluZGV4T2YoInskIil8fCItMSI9PT1jW2tdKWNba109ImRpc3BsYXllZFByaWNlIj09PWs\/IjAiOiIiO3RyeXtpZigib2JqZWN0Ij09dHlwZW9mIHdpbmRvdy5fX3ZkcEpTT04mJgoobnVsbD09Y1trXXx8MD09Y1trXS5sZW5ndGgpKXN3aXRjaChrKXtjYXNlICJ0cmltIjoidW5kZWZpbmVkIj09dHlwZW9mIHdpbmRvdy5fX3ZkcEpTT04uY2ZzdHlsZW5hbWU\/InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3cuX192ZHBKU09OLnZlcnNpb24mJihjW2tdPXdpbmRvdy5fX3ZkcEpTT04udmVyc2lvbi5mdWxsfHwiIik6Y1trXT13aW5kb3cuX192ZHBKU09OLmNmc3R5bGVuYW1lfHwiIjticmVhaztjYXNlICJlbmdpbmUiOmNba109d2luZG93Ll9fdmRwSlNPTi5lbmdpbmVUeXBlfHx3aW5kb3cuX192ZHBKU09OLmVuZ2luZXx8IiI7YnJlYWs7Y2FzZSAiZHJpdmVUcmFpbiI6Y1trXT13aW5kb3cuX192ZHBKU09OLmNmZHJpdmV0cmFpbnx8d2luZG93Ll9fdmRwSlNPTi5kcml2ZXRyYWlufHwiIjticmVhaztjYXNlICJ0cmFuc21pc3Npb24iOmlmKHdpbmRvdy5fX3ZkcEpTT04udHJhbnNtaXNzaW9uKWNba109d2luZG93Ll9fdmRwSlNPTi50cmFuc21pc3Npb247ZWxzZSBpZigidW5kZWZpbmVkIiE9CnR5cGVvZiB3aW5kb3cuX192ZHBKU09OLmNhdF9tZWNoYW5pY2FscyYmMDx0eXBlb2Ygd2luZG93Ll9fdmRwSlNPTi5jYXRfbWVjaGFuaWNhbHMubGVuZ3RoKWZvcihkPTA7ZDx3aW5kb3cuX192ZHBKU09OLmNhdF9tZWNoYW5pY2Fscy5sZW5ndGg7ZCsrKTEzPT13aW5kb3cuX192ZHBKU09OLmNhdF9tZWNoYW5pY2Fsc1tkXS5pZCYmKGNba109d2luZG93Ll9fdmRwSlNPTi5jYXRfbWVjaGFuaWNhbHNbZF0udmFsdWUpO2Vsc2UgY1trXT0iMCI9PSh3aW5kb3cuX192ZHBKU09OLmF1dG9tYXRpY3RyYW58fCIiKT8iTWFudWFsIjoiQXV0b21hdGljIjticmVhaztjYXNlICJpbnRlcmlvckNvbG9yIjpjW2tdPXdpbmRvdy5fX3ZkcEpTT04uY29sb3I\/d2luZG93Ll9fdmRwSlNPTi5jb2xvci5pbnRlcmlvcjoiIjticmVhaztjYXNlICJleHRlcmlvckNvbG9yIjpjW2tdPXdpbmRvdy5fX3ZkcEpTT04uY29sb3I\/d2luZG93Ll9fdmRwSlNPTi5jb2xvci5leHRlcmlvcjoiIn19Y2F0Y2gobSl7ZGVidWcoIlVuZXhwZWN0ZWQgZXJyb3IgdHJ5aW5nIGJlc3QgY2FzZSBmaWxsZXIgZGF0YS0tJXMiLAptLm1lc3NhZ2UpfX1rPWM7Zm9yKHZhciBlIGluIGspbnVsbCE9PWtbZV0mJnZvaWQgMCE9PWtbZV18fGRlbGV0ZSBrW2VdO3JldHVybiBrfWZ1bmN0aW9uIHAoZCxjLGspe2lmKGMuZm9ybVR5cGUpdmFyIGU9Yy5mb3JtVHlwZTtlbHNle2U9ay5tYWlsSWQ7dmFyIG09ITE7ZT1lfHwkKCJpbnB1dFtpZCo9TWFpbElEXSIpLnZhbCgpO3N3aXRjaChlKXtjYXNlICJCb2R5U2hvcCI6Y2FzZSAiRXN0aGV0aWNSZXF1ZXN0IjpjYXNlICJQb3BVcE90aGVyU2VydmljZSI6Y2FzZSAiUmVjYWxscyI6Y2FzZSAiaGVhZGVyU2VydmljZSI6Y2FzZSAibWVudVNlcnZpY2UiOm09Zy5GT1JNX1RZUEUuU0VSVklDRTticmVhaztjYXNlICJTZXJ2aWNlUmVxdWVzdCI6bT1nLkZPUk1fVFlQRS5TQ0hFRFVMRV9TRVJWSUNFO2JyZWFrO2Nhc2UgIlBhcnRzUmVxdWVzdCI6bT1nLkZPUk1fVFlQRS5QQVJUUzticmVhaztjYXNlICJUaXJlc1JlcXVlc3QiOm09Zy5GT1JNX1RZUEUuVElSRVM7YnJlYWs7Y2FzZSAiVGVzdERyaXZlIjpjYXNlICJUZXN0RHJpdmVOZXciOm09CmcuRk9STV9UWVBFLlRFU1RfRFJJVkU7YnJlYWs7Y2FzZSAiUHJpY2VSZXF1ZXN0TmV3IjpjYXNlICJQcmljZVZlaGljbGVOZXciOmNhc2UgIlByaWNlVmVoaWNsZSI6Y2FzZSAiUHJpY2VSZXF1ZXN0IjpjYXNlICJRdWlja0VtYWlsTmV3SW52ZW50b3J5IjpjYXNlICJwb3BVcFdpZGdldEFBIjpjYXNlICJQb3BVcE90aGVyVXNlZENhcnMiOmNhc2UgIlZJUFJlcXVlc3QiOmNhc2UgIlJlc2VydmVJdE5vd05ldyI6Y2FzZSAiUmVzZXJ2ZUl0Tm93IjpjYXNlICJTcGVjc1JlcXVlc3ROZXciOmNhc2UgIlZJUFJlcXVlc3ROZXciOmNhc2UgIkJlc3RQcmljZVJlcXVlc3ROZXciOmNhc2UgIlNwZWNzUmVxdWVzdCI6bT1nLkZPUk1fVFlQRS5HRVRfUFJJQ0U7YnJlYWs7Y2FzZSAiUmViYXRlQ291cG9uTmV3IjpjYXNlICJSZWJhdGVDb3Vwb25OZXdCTlAiOmNhc2UgIlJlYmF0ZUNvdXBvbk5ld0ludmVudG9yeSI6Y2FzZSAiUmViYXRlQ291cG9uTmV3U2xpZGVyIjpjYXNlICJQb3BVcE90aGVyUHJvbW8iOmNhc2UgIlByb21vUG9wdXAiOmNhc2UgIlJlYmF0ZUNvdXBvblVzZWRTbGlkZXIiOmNhc2UgIlJlYmF0ZUNvdXBvbiI6Y2FzZSAiQmVzdHByaWNlR3VhcmFudGVlIjpjYXNlICJQb3BVcEluc3RhbnRSZWJhdGUiOmNhc2UgIlBvcFVwSW5zdGFudFJlYmF0ZTMiOm09CmcuRk9STV9UWVBFLlNQRUNJQUxfT0ZGRVI7YnJlYWs7Y2FzZSAiQ3JlZGl0TXVsdGlzdGVwUmVxdWVzdCI6Y2FzZSAiQ3JlZGl0UmVxdWVzdCI6Y2FzZSAiQ3JlZGl0UmVxdWVzdE1vYmlsZSI6Y2FzZSAiQ3JlZGl0U2NvcmUiOmNhc2UgIlBvcFVwT3RoZXJGaW5hbmNlIjpjYXNlICJBREZDcmVkc2lpLmNvbSI6Y2FzZSAiTXVsdGlGb3JtX1NNU191c2VkIjpjYXNlICJNdWx0aUZvcm0iOmNhc2UgIk11bHRpRm9ybV9TTVMiOmNhc2UgIk1vbnRobHlQYXltZW50cyI6Y2FzZSAiTW9udGhseVBheW1lbnRzX1NNUyI6Y2FzZSAiRmluYW5jZUFjdGlvbkJveF9wb3B1cCI6bT1nLkZPUk1fVFlQRS5DUkVESVQ7YnJlYWs7Y2FzZSAiTWFrZU9mZmVyTmV3IjpjYXNlICJNYWtlT2ZmZXIiOm09Zy5GT1JNX1RZUEUuTUFLRV9PRkZFUjticmVhaztjYXNlICJQb3BVcE90aGVyTmV3Q2FycyI6Y2FzZSAiQnJvY2h1cmVzIjpjYXNlICJDb250YWN0VmlzaXRSZXF1ZXN0TmV3IjpjYXNlICJDb250YWN0VmlzaXRSZXF1ZXN0IjpjYXNlICJSZXR1cm5WaXNpdG9yTmV3IjpjYXNlICJDYXJwcm9vZk1haWwiOmNhc2UgIlBob3RvUmVxdWVzdCI6Y2FzZSAiUmV0dXJuVmlzaXRvciI6bT0KZy5GT1JNX1RZUEUuTU9SRV9JTkZPO2JyZWFrO2Nhc2UgIkJsYWNrYm9va1ZEUCI6Y2FzZSAiQmxhY2tCb29rTGVhZCI6Y2FzZSAiU2VsbENhciI6bT1nLkZPUk1fVFlQRS5UUkFERV9JTjticmVhaztjYXNlICJCdWlsZEFuZFByaWNlQXV0b0Fuc3dlciI6Y2FzZSAiQnVpbGRBbmRQcmljZV9TYXZlIjpjYXNlICJCdWlsZEFuZFByaWNlX1N0b2NrIjpjYXNlICJBdmFpbGFiaWxpdHlVc2VkIjpjYXNlICJGaW5kVmVoaWNsZSI6bT1nLkZPUk1fVFlQRS5TSE9XUk9PTTticmVhaztjYXNlICJDb250YWN0VXNSZXF1ZXN0IjpjYXNlICJDb250YWN0UmVxdWVzdCI6Y2FzZSAiRGlyZWN0aW9uUmVxdWVzdCI6Y2FzZSAibWVudUNvbnRhY3RVcyI6Y2FzZSAiUG9wVXBPdGhlckNvbnRhY3RVcyI6Y2FzZSAiUG9wVXBPdGhlckhvbWVwYWdlIjpjYXNlICJEZWFsZXJBcHBvaW50bWVudCI6bT1nLkZPUk1fVFlQRS5DT05UQUNUX1VTfWRlYnVnKCJGb3JtIFR5cGUgYnkgbWFpbElEIDogIix7bWFpbElkOmUsCmZvcm1UeXBlOm19KTtlPW07ZXx8KGU9d2luZG93LmxvY2F0aW9uLnBhdGhuYW1lLG09ITEsdChlLFsiZXNzYWlzLXJvdXRpZXItbmV1ZiIsInRlc3QtZHJpdmUtbmV3IiwidGVzdGRyaXZlIl0pP209Zy5GT1JNX1RZUEUuVEVTVF9EUklWRTp0KGUsWyJjb21tYW5kZS1kZS1waWVjZXMiLCJjb21tYW5kZS1kZS1wbmV1cy1waWVjZXMtYXV0b21vYmlsZXMiLCJjYXItcGFydHMtIiwicGFydHMtYW5kLWFjY2Vzc29yaWVzIl0pP209Zy5GT1JNX1RZUEUuUEFSVFM6dChlLFsiY29udGFjdHVzIiwiY29udGFjdGV6Il0pP209Zy5GT1JNX1RZUEUuQ09OVEFDVF9VUzp0KGUsIi9uZXVmcy8gL25ldy8gY29uZmlndXJhdGlvbi1ldC1wcml4IGJ1aWxkLWFuZC1wcmljZSBvZmZyZS1uZXVmIG9mZmVyLW5ldy8gcHJpeC1uZXVmIHByaWNlLW5ldyIuc3BsaXQoIiAiKSk\/bT1nLkZPUk1fVFlQRS5HRVRfUFJJQ0U6dChlLCIvb2NjYXNpb24vIC91c2VkLyB1c2VkY2FycyBpbnZlbnRvcnkuaHRtbCBpbnZlbnRhaXJlLmh0bWwgbW9pbnMtZGUtIGxlc3MtdGhhbi0gZmluZC11c2VkLWNhciBvZmZyZS1vY2Nhc2lvbiBvZmZlci11c2VkIHJlY2hlcmNoZS12ZWhpY3VsZS1vY2Nhc2lvbiIuc3BsaXQoIiAiKSk\/Cm09Zy5GT1JNX1RZUEUuU0hPV1JPT006dChlLFsiZmluYW5jZSIsImNyZWRpdCJdKT9tPWcuRk9STV9UWVBFLkNSRURJVDp0KGUsWyJlbXBsb3ltZW50LyIsIi9lbXBsb2lzIiwiYXV0by1qb2JzIiwiZW1wbG9pcy1hdXRvbW9iaWxlIl0pJiYobT1nLkZPUk1fVFlQRS5FTVBMT1lNRU5UKSxkZWJ1ZygiRm9ybSBUeXBlIGJ5IFVSTCA6ICIse3VybDplLGZvcm1UeXBlOm19KSxlPW0pO2V8fChlPWcuRk9STV9UWVBFLkNPTlRBQ1RfVVMpfWU9e2Zvcm1UeXBlOmV9O251bGw9PT1jLmZvcm1UeXBlJiZkZWxldGUgYy5mb3JtVHlwZTttPWYoay50YXJnZXR8fG51bGwsZS5mb3JtVHlwZSk7IkdlbmVyYWwgQ29udGFjdCIhPT1lLmZvcm1UeXBlJiZtLmhhc093blByb3BlcnR5KCJtb2RlbCIpJiYiIiE9PW0ubW9kZWwmJiJ7JE1PREVMfSIhPT1tLm1vZGVsJiYkLmV4dGVuZCghMCxlLHtmb3JtVmVoaWNsZTptfSk7ImZvcm1TdWJtaXNzaW9uIj09PWQmJihkPWsuZW1haWxIYW5kbGVyLCQuZXh0ZW5kKCEwLAplLHtsZWFkSWQ6KGQuX19sZWFkaWR8fCIiKSsiXyIrRGF0ZS5ub3coKSxsZWFkVHlwZToibGVhZCIsZm9ybU9wdGluOnEoImZvcm1PcHRpbiIsZC5jb25zZW50VHlwZSwiaW4taW1wbGljaXQiKSxwcmVmQ29udGFjdDpkLnVzZXJQaG9uZT8icGhvbmUiOiJlbWFpbCJ9KSwiVHJhZGUgSW4iPT09ZS5mb3JtVHlwZSYmJC5leHRlbmQoITAsZSx7dHJhZGVJbjp7eWVhcjokKGsudGFyZ2V0KS5maW5kKCIjdHJhZGluWWVhclNlbGVjdCwgI3RyYWRlSW5CYXJQb3B1cFllYXIiKS52YWwoKSxtYWtlOiQoay50YXJnZXQpLmZpbmQoIiNicmFuZFNlbGVjdEV4LCAjdHJhZGVJbkJhclBvcHVwTWFrZSIpLnZhbCgpLG1vZGVsOiQoay50YXJnZXQpLmZpbmQoIiNtb2RlbFNlbGVjdEV4LCAjdHJhZGVJbkJhclBvcHVwTW9kZWwiKS52YWwoKX19KSk7JC5leHRlbmQoITAsZSxjKTtyZXR1cm4gZX1mdW5jdGlvbiByKGQpe3ZhciBjPXtjb3VudFNlYXJjaFJlc3VsdHM6ZC52ZWhpY2xlQ291bnR8fDAsZmlsdGVyU2VhcmNoOntzdGF0dXM6Ik1peGVkIiwKbWFrZToiQWxsIixtb2RlbDoiQWxsIixjb2xvcjoiQWxsIixkcml2ZVRyYWluOiJBbGwiLHRyaW06IkFsbCIsYm9keVN0eWxlOiJBbGwiLGZlYXR1cmVzOiJBbGwiLHllYXI6IkFsbCIsbWluUHJpY2U6bnVsbCxtYXhQcmljZTpudWxsfX07ZD0kLmV4dGVuZCh7fSxkLmZpbHRlcnMpO2lmKGQuaGFzT3duUHJvcGVydHkoIm1pblllYXIiKSYmZC5oYXNPd25Qcm9wZXJ0eSgibWF4WWVhciIpJiYwIT09ZC5tYXhZZWFyJiYwIT09ZC5taW5ZZWFyKXt2YXIgaz1kLm1pblllYXIsZT1BcnJheShkLm1heFllYXItaysxKS5maWxsKCkubWFwKGZ1bmN0aW9uKHcseCl7cmV0dXJuIGsreH0pO2MuZmlsdGVyU2VhcmNoLnllYXI9ZS5qb2luKCJ8Iik7ZGVsZXRlIGQubWF4WWVhcjtkZWxldGUgZC5taW5ZZWFyfWNvbnNvbGUubG9nKCJEMlNEIEZpbHRlclNlYXJjaCIsZCk7ZC5oYXNPd25Qcm9wZXJ0eSgic3RhdHVzIik\/LTE8ZC5zdGF0dXMuaW5kZXhPZigiY2VydGlmaWVkIik\/ZC5zdGF0dXM9IkNQTyI6CkFycmF5LmlzQXJyYXkoZC5zdGF0dXMpJiYoLTE8ZC5zdGF0dXMuaW5kZXhPZigiQ1BPIik\/ZC5zdGF0dXM9IkNQTyI6ZC5zdGF0dXM9MT09PWQuc3RhdHVzLmxlbmd0aD9kLnN0YXR1c1swXToiTWl4ZWQiKTpkLnN0YXR1cz0iTWl4ZWQiO2NvbnNvbGUubG9nKCJEMlNEIEZpbHRlclNlYXJjaCBBIixkKTskKCIjZGlnaXRhbF9kYXRhX2luZm8gaW5wdXRbbmFtZT1zdGF0dXNdIikudmFsKGQuc3RhdHVzKTtmb3IodmFyIG0gaW4gZClpZihkLmhhc093blByb3BlcnR5KG0pKWlmKGU9Zy5FTlVNLmZpbHRlclNlYXJjaC5oYXNPd25Qcm9wZXJ0eShtKSxkW21daW5zdGFuY2VvZiBBcnJheSl7dmFyIHU9ZFttXTswIT09dS5sZW5ndGgmJihlJiYodT11Lm1hcChmdW5jdGlvbih3KXtyZXR1cm4gcSgiZmlsdGVyU2VhcmNoLiIrbSx3LHcpfSkpLGMuZmlsdGVyU2VhcmNoW21dPXUuam9pbigifCIpKX1lbHNlIHU9ZFttXSwwIT09dSYmIiIhPT11JiYoZSYmKHU9cSgiZmlsdGVyU2VhcmNoLiIrbSwKdSwiIikpLGMuZmlsdGVyU2VhcmNoW21dPXUpO2NvbnNvbGUubG9nKCJEMlNEIEZpbHRlclNlYXJjaCBCIixjKTtyZXR1cm4gY31mdW5jdGlvbiBhKGQpe2Q9IkEiPT09ZFswXS50YWdOYW1lP2Q6ZC5maW5kKCJhIik7aWYoZC5hdHRyKCJ0aXRsZSIpKXt2YXIgYz1kLmF0dHIoInRpdGxlIik7cmV0dXJuLTE8Yy5pbmRleE9mKCItYmFubmVyMCIpfHxkLmRhdGEoIm9lbWJhbm5lciIpPyhjPW5ldyBEYXRlLGQ9Yy50b0xvY2FsZVN0cmluZygiZGVmYXVsdCIse21vbnRoOiJsb25nIn0pLGM9Yy5nZXRGdWxsWWVhcigpLGAke2gubGlicmFyeS5jbGllbnRJRH1fJHtkfV8ke2N9X01vbnRobHlfT2ZmZXJgKTpjfXJldHVybihjPWQuYXR0cigiaHJlZiIpKSYmLTE8Yy5pbmRleE9mKCJqYXZhc2NyaXB0OiIpJiZkLmZpbmQoImltZyIpLmF0dHIoImFsdCIpP2QuZmluZCgiaW1nIikuYXR0cigiYWx0Iik6Y31mdW5jdGlvbiBsKGQsYyl7bGV0IGs9Yy5jbG9zZXN0KCJkaXYucHJvbW9zIik7az0wPT09CmsubGVuZ3RoP2MuY2xvc2VzdCgiZGl2LnByb21vLWNhcmQtb2VtIik6aztjPXtvZmZlck5hbWU6KGsuZmluZCgiLnByb21vLXRpdGxlIikubGVuZ3RoP2suZmluZCgiLnByb21vLXRpdGxlIikudGV4dCgpOmsuZmluZCgiaDIiKS50ZXh0KCkpLnJlcGxhY2UoLyhcdHxcbnxccikvZywiIil9O2suZGF0YSgiZXhwaXJlIikmJihjLm9mZmVyRXhwaXJlPWsuZGF0YSgiZXhwaXJlIikpOyJvZmZlckNsaWNrIj09PWQmJmsuZGF0YSgibW9kZWwiKSYmKCQuZXh0ZW5kKCEwLGMse29mZmVyQ2F0ZWdvcnk6InZlaGljbGUiLHZlaGljbGVNb2RlbDprLmRhdGEoIm1vZGVsIiksdmVoaWNsZVllYXI6ay5kYXRhKCJ5ZWFyIil9KSxrLmF0dHIoImdyb3VwdGFiIikmJihjLnZlaGljbGVDYXRlZ29yeT1rLmF0dHIoImdyb3VwdGFiIikpKTtyZXR1cm4gY31mdW5jdGlvbiBxKGQsYyxrKXt2YXIgZT1nLkVOVU0sbT1nLkVOVU1fQUxULHU9Zy5OT1RfQ0FQSVRBTElTRSx3PWQuc3BsaXQoIi4iKSx4O2Zvcih4IGluIHcpe2lmKCFlLmhhc093blByb3BlcnR5KHdbeF0pKWJyZWFrOwplPWVbd1t4XV07bT1tLmhhc093blByb3BlcnR5KHdbeF0pP21bd1t4XV06bTt1PXUuaGFzT3duUHJvcGVydHkod1t4XSk\/dVt3W3hdXTp1fWlmKCEoZSBpbnN0YW5jZW9mIEFycmF5KSlyZXR1cm4gZGVidWcoIkludmFsaWQgRW51bSBrZXkgcHJvdmlkZWQiLHtrZXk6ZCxlbnVtOmcuRU5VTX0pLGs\/azpjO209PT1nLkVOVU1fQUxUJiYobT1udWxsKTt3PWM7dSBpbnN0YW5jZW9mIEFycmF5JiYtMSE9dS5pbmRleE9mKGMpfHwodz1jLnRvTG93ZXJDYXNlKCksdz13LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpK3cuc2xpY2UoMSkpO2lmKC0xPGUuaW5kZXhPZih3KSlyZXR1cm4gZVtlLmluZGV4T2YodyldO2lmKG51bGwhPT1tJiZtLmhhc093blByb3BlcnR5KGMpKXJldHVybiBtW2NdO2lmKC0xPGcuRU5VTV9QQVJUSUFMLmluZGV4T2YoZCkmJihlPU9iamVjdC5rZXlzKG0pLmZpbHRlcihPPT4tMTxjLmluZGV4T2YoTykpKSlyZXR1cm4gbVtlWzBdXTtkZWJ1ZygiRW51bSB2YWx1ZSBub3QgZm91bmQsIHVzaW5nIGRlZmF1bHQgaW5zdGVhZCIsCntrZXk6ZCx2YWx1ZTpjLGRlZmF1bHQ6a30pO3JldHVybiBrfWZ1bmN0aW9uIHQoZCxjKXt2YXIgaz0hMSxlO2ZvcihlIGluIGMpaWYoLTE8ZC5pbmRleE9mKGNbZV0pKXtrPSEwO2JyZWFrfXJldHVybiBrfXZhciBnPXRoaXM7Zy5kYXRhQ29udGFpbmVyPSQoIiNkaWdpdGFsX2RhdGFfaW5mbyIpO2cuc3RhdGljRGF0YT1oLnBhZ2VEYXRhO2cuRU5VTT17dmVoaWNsZURldGFpbHM6e3N0YXR1czpbIk5ldyIsIlVzZWQiLCJDUE8iXSxmdWVsVHlwZTpbIkdhc29saW5lIiwiRGllc2VsIiwiRWxlY3RyaWMiLCJIeWJyaWQiXSx0cmFuc21pc3Npb246WyJBdXRvbWF0aWMiLCJNYW51YWwiXX0sZmlsdGVyU2VhcmNoOntzdGF0dXM6WyJOZXciLCJVc2VkIiwiQ1BPIiwiTWl4ZWQiXSxmdWVsVHlwZTpbIkdhc29saW5lIiwiRGllc2VsIiwiRWxlY3RyaWMiLCJIeWJyaWQiXX0sZm9ybU9wdGluOlsiaW4taW1wbGljaXQiLCJpbi1leHBsaWNpdCIsIm91dCJdLGxlYWRUeXBlOlsibGVhZCIsImhhbmRyYWlzZXIiLAoibGVhZHxoYW5kcmFpc2VyIl0sZGlzcGxheVR5cGU6WyJpbi1wYWdlIiwibW9kYWwiXSxwcmVmQ29udGFjdDpbInBob25lIiwiZW1haWwiLCJ0ZXh0Iiwib3RoZXIiXSxjbGlja1RvQ2FsbERlcGFydG1lbnQ6WyJTYWxlcyIsIlNlcnZpY2UiLCJQYXJ0cyIsIk90aGVyIl19O2cuRU5VTV9BTFQ9e2Zvcm1PcHRpbjp7SW1wbGljaXQ6ImluLWltcGxpY2l0IixFeHBsaWNpdDoiaW4tZXhwbGljaXQifSxjbGlja1RvQ2FsbERlcGFydG1lbnQ6e05ldzoiU2FsZXMiLFVzZWQ6IlNhbGVzIixTYWxlc3VzZWQ6IlNhbGVzIixTYWxlc25ldzoiU2FsZXMiLFNhbGVzcGFyYzoiU2FsZXMiLFNhbGVzdHJ1Y2s6IlNhbGVzIixCb2R5OiJTZXJ2aWNlIixRdWlja2xhbmU6IlNlcnZpY2UifSxmaWx0ZXJTZWFyY2g6e3N0YXR1czp7IlVzZWQgdmVoaWNsZXMiOiJVc2VkIix1c2VkOiJVc2VkIiwiVsOpaGljdWxlcyBkJ29jY2FzaW9uIjoiVXNlZCIsImQnb2NjYXNpb24iOiJVc2VkIixvY2Nhc2lvbjoiVXNlZCIsCiJOZXcgSW52ZW50b3J5IjoiTmV3IiwibmV3IjoiTmV3IiwiVsOpaGljdWxlcyBuZXVmcyI6Ik5ldyIsbmV1ZjoiTmV3In0sZnVlbFR5cGU6e0dhczoiR2Fzb2xpbmUifX0sdmVoaWNsZURldGFpbHM6e2Z1ZWxUeXBlOntHYXM6Ikdhc29saW5lIixVbmxlYWRlZDoiR2Fzb2xpbmUiLCLDiWxlY3RyaXF1ZSI6IkVsZWN0cmljIixFbGVjdHJpcXVlOiJFbGVjdHJpYyIsSHlicmlkZToiSHlicmlkIiwiTi5ELiI6Ikdhc29saW5lIiwiTi5BLiI6Ikdhc29saW5lIiwieyRDQVJGVUVMVFlQRX0iOiJHYXNvbGluZSJ9LHN0YXR1czp7IlVzZWQgdmVoaWNsZXMiOiJVc2VkIix1c2VkOiJVc2VkIiwiVsOpaGljdWxlcyBkJ29jY2FzaW9uIjoiVXNlZCIsImQnb2NjYXNpb24iOiJVc2VkIixvY2Nhc2lvbjoiVXNlZCIsIk5ldyBJbnZlbnRvcnkiOiJOZXciLCJuZXciOiJOZXciLCJWw6loaWN1bGVzIG5ldWZzIjoiTmV3IixuZXVmOiJOZXcifSx0cmFuc21pc3Npb246e0F1dG9tYXRpcXVlOiJBdXRvbWF0aWMiLApNYW51ZWxsZToiTWFudWFsIixhdXRvbWF0aWM6IkF1dG9tYXRpYyIsbWFudWFsOiJNYW51YWwifX19O2cuRU5VTV9QQVJUSUFMPVsidmVoaWNsZURldGFpbHMudHJhbnNtaXNzaW9uIl07Zy5OT1RfQ0FQSVRBTElTRT17dmVoaWNsZURldGFpbHM6e3N0YXR1czpbIkNQTyJdfSxmaWx0ZXJTZWFyY2g6e3N0YXR1czpbIkNQTyJdfSxsZWFkVHlwZTpbImxlYWQiLCJoYW5kcmFpc2VyIiwibGVhZHxoYW5kcmFpc2VyIl0sZGlzcGxheVR5cGU6WyJpbi1wYWdlIiwibW9kYWwiXSxwcmVmQ29udGFjdDpbInBob25lIiwiZW1haWwiLCJ0ZXh0Iiwib3RoZXIiXX07Zy5GT1JNX1RZUEU9e0dFVF9QUklDRToiR2V0IGEgUXVvdGUiLFFVT1RFOiJHZXQgYSBRdW90ZSIsTUFLRV9PRkZFUjoiTWFrZSBhbiBPZmZlciIsTU9SRV9JTkZPOiJSZXF1ZXN0IE1vcmUgSW5mb3JtYXRpb24iLENPTlRBQ1RfVVM6IkdlbmVyYWwgQ29udGFjdCIsU1BFQ0lBTF9PRkZFUjoiU3BlY2lhbHMiLFRFU1RfRFJJVkU6IlRlc3QgRHJpdmUiLApUUkFERV9JTjoiVHJhZGUgSW4iLFNFUlZJQ0U6IkJvb2sgQSBTZXJ2aWNlIixTQ0hFRFVMRV9TRVJWSUNFOiJTY2hlZHVsZSBTZXJ2aWNlIixQQVJUUzoiUGFydHMiLEVNUExPWU1FTlQ6IkVtcGxveW1lbnQiLENSRURJVDoiUGF5bWVudCBFc3RpbWF0b3IiLFNIT1dST09NOiJWZWhpY2xlIEZpbmRlciIsQ1VTVE9NOiJEZWFsZXIgQ3VzdG9tIixSRUNBTExTOiJSZWNhbGxzIixUSVJFUzoiUGFydHMifTtnLmJ1aWxkPWZ1bmN0aW9uKGQsYyxrKXtsZXQgZT17fSxtPWsuaW5mb3x8e30sdT0kKG0udGFyZ2V0KTsicGFnZXZpZXciIT09YyYmJC5leHRlbmQoITAsZSx7ZXZlbnRzOmN9KTtpZigiZmlsdGVyU2VhcmNoIiE9PWN8fCEwIT09RCl7c3dpdGNoKGMpe2Nhc2UgInBhZ2V2aWV3IjokLmV4dGVuZCghMCxlLGcuc3RhdGljRGF0YSxiKCkpO2UudHJhZmZpY1R5cGU9JCgiI2RpZ2l0YWxfZGF0YV9pbmZvIGlucHV0W25hbWU9dHJhZmZpY190eXBlXSIpLnZhbCgpOy0xPFsiVmVoaWNsZSBEZXRhaWxzIiwKIk1vZGVsIFNob3dyb29tIl0uaW5kZXhPZihkKSYmJC5leHRlbmQoITAsZSx7dmVoaWNsZURldGFpbHM6ZihudWxsKX0pO2JyZWFrO2Nhc2UgImNsaWNrVG9DYWxsIjokLmV4dGVuZCghMCxlLHtjbGlja1RvQ2FsbERlcGFydG1lbnQ6cSgiY2xpY2tUb0NhbGxEZXBhcnRtZW50IiwkKG0udGFyZ2V0fHwiIikuZGF0YSgiZGVwYXJ0bWVudCIpLCJPdGhlciIpfSk7YnJlYWs7Y2FzZSAiZm9ybVN1Ym1pc3Npb24iOmNhc2UgImZvcm1TaG93biI6Y2FzZSAiZm9ybUluaXRpYXRpb24iOmNhc2UgImZvcm1GaWVsZEludGVyYWN0aW9uIjokLmV4dGVuZCghMCxlLHAoYyxrLmV2ZW50LGsuaW5mbykpO2JyZWFrO2Nhc2UgInByb21vcG9wdXBCaW5kSW5pdCI6ZS5ldmVudHM9ImZvcm1Jbml0aWF0aW9uIjskKCIjcHJvbW9wb3B1cCBmb3JtLmQyY2Zvcm0iKS5wcm9wKCJpZCIsInByb21vcG9wdXAtZm9ybSIpOyQuZXh0ZW5kKCEwLGUscCgiZm9ybUluaXRpYXRpb24iLHtmb3JtVHlwZToiU3BlY2lhbHMiLApkaXNwbGF5VHlwZToibW9kYWwifSx7ZW1haWxIYW5kbGVyOntfX2xlYWRpZDoiU3BlY2lhbHMiLGNvbnNlbnRUeXBlOiIifSx0YXJnZXQ6JCgiI3Byb21vcG9wdXAgZm9ybS5kMmNmb3JtIiksbWFpbElkOiJQcm9tb1BvcHVwIn0pKTticmVhaztjYXNlICJwcm9tb3BvcHVwU3VibWlzc2lvbiI6ZS5ldmVudHM9ImZvcm1TdWJtaXNzaW9uIjskKCIjcHJvbW9wb3B1cCBmb3JtLmQyY2Zvcm0iKS5wcm9wKCJpZCIsInByb21vcG9wdXAtZm9ybSIpOyQuZXh0ZW5kKCEwLGUscCgiZm9ybVN1Ym1pc3Npb24iLHtmb3JtVHlwZToiU3BlY2lhbHMiLGRpc3BsYXlUeXBlOiJtb2RhbCJ9LHtlbWFpbEhhbmRsZXI6e19fbGVhZGlkOiJTcGVjaWFscyIsY29uc2VudFR5cGU6IiJ9LHRhcmdldDokKCIjcHJvbW9wb3B1cCBmb3JtLmQyY2Zvcm0iKSxtYWlsSWQ6IlByb21vUG9wdXAifSkpO2JyZWFrO2Nhc2UgImZpbHRlclNlYXJjaCI6JC5leHRlbmQoITAsZSxyKG0pKTtEPSEwO3NldFRpbWVvdXQoKCk9Pgp7RD0hMX0sM0UzKTticmVhaztjYXNlICJ0eXBlZFNlYXJjaCI6ZD1rLmV2ZW50LnR5cGVkU2VhcmNoP2suZXZlbnQudHlwZWRTZWFyY2g6dS52YWwoKTskLmV4dGVuZCghMCxlLHt0eXBlZFNlYXJjaENvbnRlbnQ6ZC50cmltKCkuc3BsaXQoIiAiKS5qb2luKCJ8Iil9KTticmVhaztjYXNlICJjYXJvdXNlbENsaWNrIjokLmV4dGVuZCghMCxlLHtjYXJvdXNlbENsaWNrOnthc3NldFBvc2l0aW9uOnUuaW5kZXgoKSxhc3NldE5hbWU6YSh1KX19KTticmVhaztjYXNlICJicm9jaHVyZURvd25sb2FkIjokLmV4dGVuZCghMCxlLHticm9jaHVyZU5hbWU6JCgiI3BvcHVwVGVjaFNwZWNzRGl2ICNwcmludFBhZ2UiKS5hdHRyKCJocmVmIil9KTticmVhaztjYXNlICJzZXJ2aWNlT2ZmZXJDbGljayI6Y2FzZSAib2ZmZXJDbGljayI6ZVtjXT1sKGMsdSk7YnJlYWs7ZGVmYXVsdDokLmV4dGVuZCghMCxlLGsuZXZlbnQpfTA8PVsiZm9ybVN1Ym1pc3Npb24iXS5pbmRleE9mKGMpJiYoQz0hMCxzZXRUaW1lb3V0KCgpPT4Ke0M9ITF9LDVFMykpO3JldHVybiBlfX07cmV0dXJuIGd9OyhmdW5jdGlvbigpe2NvbnNvbGUuZGVidWcoIlNEIDo6IFVzZXIgaGFzIGNvbnNlbnRlZCB0byB0cmFja2luZywgaW5pdGlhbGl6aW5nIHNoaWZ0IGRpZ2l0YWwiKTtJKCk7bGV0IGI9JCgiI2RpZ2l0YWxfZGF0YV9pbmZvIGlucHV0W25hbWU9c3RhdHVzXSIpO2lmKCJ7JFNEVkVISUNMRVNUQVRVU30iPT1iLnZhbCgpKXt2YXIgZj13aW5kb3cubG9jYXRpb24ucGF0aG5hbWUudG9Mb3dlckNhc2UoKTtiLnZhbCgvdXNlZC8udGVzdChmKXx8L29jY2FzaW9uLy50ZXN0KGYpPyJVc2VkIjoiTmV3Iik7IlVzZWQiPT1iLnZhbCgpJiYwPCQoIiN0b3BjYXJpZCIpLmxlbmd0aCYmIiIhPSQoIiN0b3BjYXJpZCIpLnZhbCgpPyhmPSIvanMvanNvbi8iKyQoIiN0b3BjYXJpZCIpLnZhbCgpKyIuanNvbiIsJC5nZXQoZikuZG9uZShmdW5jdGlvbihwKXtwPXAubWFrZWNlcnQrIiI7IjIxIiE9cCYmIjAiIT1wJiZiLnZhbCgiQ1BPIik7eigpfSkuZmFpbChmdW5jdGlvbigpe3ooKX0pKToKeigpfWVsc2UgeigpfSkoKX07Ci8qKiAvbS9qcy9kMmNfZGlnaXRhbF9yZXRhaWxfc2hpZnQuanMgKiovCnZhciBfX19kMmNfZDJjZGlnaXRhbHJldGFpbHNoaWZ0anNfY19vbj0iMjAyNi0wNC0wMSAxMjozMDowMyI7J3VzZSBzdHJpY3QnO2Z1bmN0aW9uIEQyRFIobixwLHEpe2NvbnNvbGUubG9nKCJEMkRSIFN0YXJ0aW5nIFJvdW5kIDIuLi4iLG4scCxxKTt2YXIgZD10aGlzO2QubGlicmFyeT0kLmV4dGVuZCghMCxuLHtsb2FkZWQ6ITF9KTtkLnBhZ2VEYXRhPXA7ZC5zZXR0aW5ncz1xO2QuZHJJbml0aWFsQ2xpY2s9ITE7dmFyIGw9ZC5sYXN0RHJUYWI9ITEsaD17fSx0PVsiVmVoaWNsZSBEZXRhaWxzIiwiTW9kZWwgU2hvd3Jvb20iXSxlPXtwYWdlVHlwZToiRGlnaXRhbCBSZXRhaWxpbmciLGRpZ1JldDp7cHJpY2VVbmxvY2tlZDohMCxkZWFsSWQ6IiIscHJvdmlkZXI6IkQyQ01FRElBIix2ZWhpY2xlWWVhcjokKCIjZGlnaXRhbF9kYXRhX2luZm8gPiBpbnB1dFtuYW1lPSd5ZWFyJ10iKS52YWwoKSx2ZWhpY2xlTWFrZTokKCIjZGlnaXRhbF9kYXRhX2luZm8gPiBpbnB1dFtuYW1lPSdtYWtlJ10iKS52YWwoKSx2ZWhpY2xlTW9kZWw6JCgiI2RpZ2l0YWxfZGF0YV9pbmZvID4gaW5wdXRbbmFtZT0nbW9kZWwnXSIpLnZhbCgpLAp2ZWhpY2xlVmluOiQoIiNkaWdpdGFsX2RhdGFfaW5mbyA+IGlucHV0W25hbWU9J3ZpbiddIikudmFsKCksdmVoaWNsZVN0YXR1czokKCIjZGlnaXRhbF9kYXRhX2luZm8gPiBpbnB1dFtuYW1lPSdzdGF0dXMnXSIpLnZhbCgpfSxldmVudHM6IiJ9LHU9e2RyVHJhZGVJblN0YXJ0OiIjdHJhZGVJbkJhciwgI1RyYWRlSW5CYXJQb3B1cENvbnRhaW5lciBzZWxlY3QsICNUcmFkZUluQmFyUG9wdXBDb250YWluZXIgaW5wdXQiLGRyQXBwdFNjaGVkU3RhcnQ6IiNsZWFkRGVhbGVyQXBwb2ludG1lbnQgaW5wdXQsICNsZWFkRGVhbGVyQXBwb2ludG1lbnQgLmZsYXRwaWNrci1kYXksICNtb2RhbERlYWxlckFwcG9pbnRtZW50IGlucHV0LCAjbW9kYWxEZWFsZXJBcHBvaW50bWVudCAuZmxhdHBpY2tyLWRheSIsZHJMZWFkRm9ybVN0YXJ0OiIjbXVsdGlmb3JtX2VtYmVkZGVkX2J0bl8xIixkclByZVFTaG93bjoiI0ZpbmFuY2VBY3Rpb25Cb3hfcG9wdXAiLGRyUHJlUVN0YXJ0OiIjcGF5bWVudENhbGN1bGF0b3JDb250YWluZXIgaW5wdXQsICNmaW5hbmNlTXVsdGlzdGVwSW5zdGFudFBvcHVwQ29udGFpbmVyIGlucHV0IiwKZHJQYXltZW50Q2FsY1N0YXJ0OiIjcGF5bWVudENhbGN1bGF0b3JQb3B1cENvbnRhaW5lciBpbnB1dCwgI3BheW1lbnRDYWxjdWxhdG9yUG9wdXBDb250YWluZXIgc2VsZWN0LCAjcGF5bWVudENhbGN1bGF0b3JQb3B1cENvbnRhaW5lciB0ZXh0YXJlYSJ9LHY9e2RyQWRkVG9DYXJ0OiIjYnVpbGRPcHRpb25zQ29udGVudCAuc2VsZWN0b3JJbnB1dCwgLnByb3RlY3Rpb25wbGFuLWFjdGlvbiA+IGJ1dHRvbiwgLmFjYy1jYXJkIC5hY2MtYWN0aW9uID4gYnV0dG9uLCAuYnVpbGRPcHRpb24gLnNlbGVjdG9ySW5wdXQiLGRyQWNjZXNzb3JpZXNTaG93bjonLnZlaGljbGVDb25maWd1cmF0b3JEUiBidXR0b25bZGF0YS1zdGVwPSJvcHRpb25zIl0sIC52ZWhpY2xlQ29uZmlndXJhdG9yRFIgYnV0dG9uW2RhdGEtc3RlcD0iYWNjZXNzb3JpZXMiXScsZHJUcmFkZUluU2hvd246IiN0cmFkZUluQmFyTmV3VkRQQnV0dG9uLCAjdHJhZGVJbkJ0biIsZHJGaVNob3duOicudmVoaWNsZUNvbmZpZ3VyYXRvckRSIGJ1dHRvbltkYXRhLXN0ZXA9InByb3RlY3Rpb25wbGFuIl0nLApkclBheW1lbnRDYWxjRmluaXNoOiIjcGF5bWVudENhbGN1bGF0b3JDYWxsVG9BY3Rpb25Db250YWluZXIgYS5wcm9tb0JUTiIsZDJjX2RyQWRkRmluaXNoOiIjYnVpbGRBbmRQcmljZURSVGFiID4gYnV0dG9uIixkclByZVFTaG93bjoiI01vbnRobHlQYXltZW50c0J0biIsZHJQYXltZW50Q2FsY1Nob3duOiIucGF5bWVudENhbGN1bGF0b3JWRFAifSx3PXtkclBheW1lbnRDYWxjU2hvd246ImNyZWRpdC5tdWx0aXN0ZXBwb3B1cC5zdGFydCIsZHJBcHB0U2NoZWRTaG93bjoiZGVhbGVyQXBwb2ludG1lbnQuc3RhcnQifSxyPXtkclRyYWRlSW5TaG93bjoiI3RyYWRlSW5CYXIiLGRyQWNjZXNzb3JpZXNTaG93bjoiI2J1aWxkT3B0aW9uc0NvbnRlbnQiLGRyTGVhZEZvcm1TaG93bjoiI211bHRpZm9ybV9lbWJlZGRlZCJ9O3NlbGYuYmluZEV2ZW50cz1mdW5jdGlvbigpeyQuZWFjaCh1LGZ1bmN0aW9uKGEsYil7YT1zZWxmLnNwZWNTZWxlY3QoYixhKTtjb25zb2xlLmxvZygiRDJEUiBTaW5nbGUgTWFwIFN0YXJ0IiwKYSxiKTskKGRvY3VtZW50KS5vbigiY2xpY2siLGIsZnVuY3Rpb24oKXtpZighMD09PWhbYV0pcmV0dXJuITA7bGV0IGM9c2VsZi5idWlsZERhdGFMYXllcihhLCQodGhpcykpO3NlbGYuc2VuZChjLCQoYikpO2hbYV09ITB9KX0pOyQuZWFjaCh2LGZ1bmN0aW9uKGEsYil7YT1zZWxmLnNwZWNTZWxlY3QoYixhKTtjb25zb2xlLmxvZygiRDJEUiBNdWx0aXBsZSBNYXAgU3RhcnQiLGEsYik7JChkb2N1bWVudCkub24oImNsaWNrIixiLGZ1bmN0aW9uKCl7aWYoITA9PT1sKXJldHVybiEwO2xldCBjPXNlbGYuYnVpbGREYXRhTGF5ZXIoYSwkKHRoaXMpKTtzZWxmLnNlbmQoYywkKGIpKTtzZWxmLmV2ZW50TG9ja2VyKDUwMCl9KX0pOyQuZWFjaCh3LGZ1bmN0aW9uKGEsYil7JChkb2N1bWVudCkub24oYixmdW5jdGlvbigpe2lmKHNlbGYuZXZlbnRMb2dnZXIoYSkpcmV0dXJuITA7bGV0IGM9c2VsZi5idWlsZERhdGFMYXllcihhLCExKTtzZWxmLnNlbmQoYywhMSl9KX0pO2NvbnNvbGUubG9nKCJEMkRSIFZpc2libGUgTWFwIFN0YXJ0IiwKcik7JC5lYWNoKHIsZnVuY3Rpb24oYSxiKXtjb25zdCBjPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYik7aWYoIWMpcmV0dXJuITA7JChkb2N1bWVudCkub24oInNjcm9sbCByZXNpemUgbG9hZCIsJChiKSxmdW5jdGlvbigpe2lmKHNlbGYuZXZlbnRMb2dnZXIoYSkpcmV0dXJuITA7dmFyIGY9Yy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTswPD1mLnRvcCYmMDw9Zi5sZWZ0JiZmLmJvdHRvbTw9KHdpbmRvdy5pbm5lckhlaWdodHx8ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodCkmJmYucmlnaHQ8PSh3aW5kb3cuaW5uZXJXaWR0aHx8ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoKSYmKGY9c2VsZi5idWlsZERhdGFMYXllcihhLCExKSxzZWxmLnNlbmQoZiwhMSkpfSl9KTskKGRvY3VtZW50KS5vbigiZW1haWxIYW5kbGVyLmVtYWlsU2VudCIsZnVuY3Rpb24oYSxiKXthPXNlbGYuYnVpbGRFbWFpbERhdGFMYXllcihiKTshMT09PSFhJiZzZWxmLnNlbmQoYSwKITEpfSl9O3NlbGYuc2V0RGVhbElkPWZ1bmN0aW9uKGE9ITEpe2xldCBiPWxvY2FsU3RvcmFnZS5nZXRJdGVtKCJkMmRyX2RlYWxJZCIpO2ImJiFhP2UuZGlnUmV0LmRlYWxJZD1iOihhPU1hdGguZmxvb3IoMUUxMSs5RTExKk1hdGgucmFuZG9tKCkpLnRvU3RyaW5nKCksbG9jYWxTdG9yYWdlLnNldEl0ZW0oImQyZHJfZGVhbElkIixhKSxlLmRpZ1JldC5kZWFsSWQ9YSl9O3NlbGYuZXZlbnRMb2NrZXI9ZnVuY3Rpb24oYSl7bD0hMDtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7bD0hMX0sYSl9O3NlbGYuZXZlbnRMb2dnZXI9ZnVuY3Rpb24oYSl7aWYoaFthXSlyZXR1cm4hMDtoW2FdPSEwO3JldHVybiExfTtzZWxmLmJ1aWxkRGF0YUxheWVyPWZ1bmN0aW9uKGEsYil7ImRyQWNjZXNzb3JpZXNTaG93biI9PWF8fCJkckZpU2hvd24iPT1hP2QubGFzdERyVGFiPSJkckFjY2Vzc29yaWVzU2hvd24iPT1hPyJkckFjY2Vzc29yaWVzRmluaXNoIjoiZHJGaUZpbmlzaCI6ImQyY19kckFkZEZpbmlzaCI9PQphJiYoITEhPT1kLmxhc3REclRhYiYmKGE9ZC5sYXN0RHJUYWIpLGQubGFzdERyVGFiPSExKTtlLmV2ZW50cz1hO3N3aXRjaChhKXtjYXNlICJkckluaXRpYWxDbGljayI6YiYmKGUuZGlnUmV0LmNsaWNrVGV4dD1iLnRleHQoKS50cmltKCkpO2JyZWFrO2Nhc2UgImRySW1wcmVzc2lvbiI6YiYmKGUuZGlnUmV0LmltcHJlc3Npb25UZXh0PWIudGV4dCgpLnRyaW0oKSk7YnJlYWs7Y2FzZSAiZHJBY2Nlc3Nvcmllc1Nob3duIjpjYXNlICJkckFjY2Vzc29yaWVzRmluaXNoIjpjYXNlICJkclBheW1lbnRDYWxjU2hvd24iOmNhc2UgImRyUGF5bWVudENhbGNJbnRlcmFjdGlvbiI6Y2FzZSAiZHJQYXltZW50Q2FsY0ZpbmlzaCI6Y2FzZSAiZHJBcHB0U2NoZWRTaG93biI6Y2FzZSAiZHJBcHB0U2NoZWRTdGFydCI6Y2FzZSAiZHJBcHB0U2NoZWRGaW5pc2giOmNhc2UgImRyUHJlUVNob3duIjpjYXNlICJkclByZVFTdGFydCI6Y2FzZSAiZHJQcmVRRmluaXNoIjpjYXNlICJkckNyZWRpdEFwcFNob3duIjpjYXNlICJkckNyZWRpdEFwcFN0YXJ0IjpjYXNlICJkckNyZWRpdEFwcEZpbmlzaCI6ZS5kaWdSZXQuZGVhbFR5cGU9CiJGaW5hbmNlIjticmVhaztjYXNlICJkck9mZmVyQWRkZWQiOmUuZGlnUmV0LmRlYWxUeXBlPSJGaW5hbmNlIjtlLmRpZ1JldC5vZmZlck5hbWU9IlNlbmQgTWUgWW91ciBPZmZlciI7ZS5kaWdSZXQub2ZmZXJUeXBlPSJGaW5hbmNlIjticmVhaztjYXNlICJkckFkZFRvQ2FydCI6YT0iYWNjZXNzb3JpZXMiPT0kKCIjYnVpbGRBbmRQcmljZURSVGFiID4gYnV0dG9uLmJ0bi1ibGFjayIpLmF0dHIoImRhdGEtc3RlcCIpPyJBY2Nlc3NvcmllcyI6IkZJIjtsZXQgYz0iIjsidW5kZWZpbmVkIiE9PXR5cGVvZiBiLnByb3AoInZhbHVlIik\/Yz1iLnZhbCgpOjA8Yi5jbG9zZXN0KCIuYWNjLWNhcmQiKT8oYj1iLmNsb3Nlc3QoIi5hY2MtY2FyZCIpLGM9JCgiLmFjYy1kZXNjIC5wcmljZURpdiIsYikudGV4dCgpKTowPGIuY2xvc2VzdCgiLmJ1aWxkT3B0aW9uQ2F0ZWdvcnkiKSYmKGI9Yi5jbG9zZXN0KCIuYnVpbGRPcHRpb25DYXRlZ29yeSIpLGM9JCgiLm1haW5UZXh0IixiKS50ZXh0KCkpOwplLmRpZ1JldC5hZGRPbk5hbWU9YztlLmRpZ1JldC5hZGRPblR5cGU9YX1yZXR1cm4gZX07c2VsZi5idWlsZEVtYWlsRGF0YUxheWVyPWZ1bmN0aW9uKGEpe2xldCBiPWU7Yi5kaWdSZXQudmVoaWNsZVllYXI9YS55ZWFyO2IuZGlnUmV0LnZlaGljbGVNYWtlPWEubWFrZTtiLmRpZ1JldC52ZWhpY2xlTW9kZWw9YS5tb2RlbDtiLmRpZ1JldC52ZWhpY2xlVmluPWEudmluO2IuZGlnUmV0LnZlaGljbGVTdGF0dXM9YS5jb25kaXRpb247c3dpdGNoKGEubWFpbElEKXtjYXNlICJQcmljZVZlaGljbGUiOmNhc2UgIlByaWNlVmVoaWNsZUFjY3V0cmFkZSI6Y2FzZSAiUHJpY2VWZWhpY2xlTmV3IjpjYXNlICJUcmFkZS1pbiI6Y2FzZSAiVHJhZGUtaW4gcmVxdWVzdCI6Y2FzZSAicHJpY2V2ZWhpY2xlbmV3IjpjYXNlICJwcmljZXZlaGljbGV1c2VkIjpjYXNlICJwcmljZXZlaGljbGUiOmIuZXZlbnRzPXNlbGYuc3BlY1NlbGVjdChhLm1haWxJRCwiZHJUcmFkZUluRmluaXNoIik7YnJlYWs7Y2FzZSAiTW9udGhseVBheW1lbnRzIjpjYXNlICJNb250aGx5UGF5bWVudHNfTkVXIjpiLmV2ZW50cz0KImRyUHJlUUZpbmlzaCI7YnJlYWs7Y2FzZSAiRGVhbGVyQXBwb2ludG1lbnQiOmIuZXZlbnRzPSJkckFwcHRTY2hlZEZpbmlzaCI7YnJlYWs7Y2FzZSAiQ3JlZGl0Qm9vc3RNdWx0aSI6Y2FzZSAiQ3JlZGl0TXVsdGlzdGVwUmVxdWVzdEluc3RhbnQiOmIuZXZlbnRzPSJkclByZVFGaW5pc2giO2JyZWFrO2Nhc2UgIlJlcXVlc3QgZm9yIGJlc3Qgb2ZmZXIgLSBTTVMiOmNhc2UgIkNyZWRpdE11bHRpc3RlcFJlcXVlc3QiOmIuZXZlbnRzPSJkclBheW1lbnRDYWxjRmluaXNoIjticmVhaztjYXNlICJDcmVkaXRSZXF1ZXN0X1Nob3J0IjpjYXNlICJDcmVkaXRTY29yZSI6Yi5ldmVudHM9ImRyQ3JlZGl0QXBwRmluaXNoIjticmVhaztjYXNlICJNdWx0aUZvcm1fU01TIjpiLmV2ZW50cz0iZHJMZWFkRm9ybUZpbmlzaCI7YnJlYWs7Y2FzZSAiU2F2ZUJ1aWxkIjpiLmV2ZW50cz0iZHJEcm9wU2F2ZSI7Yi5kaWdSZXQuZGVhbFR5cGU9IkZpbmFuY2UiO2JyZWFrO2RlZmF1bHQ6Yj0hMX1yZXR1cm4gYn07CnNlbGYudHJpZ2dlckZvbGxvd3VwRXZlbnQ9ZnVuY3Rpb24oYSxiKXt9O3NlbGYuc3BlY1NlbGVjdD1mdW5jdGlvbihhLGIpe2xldCBjPSQoIiNvZW1DZXJ0aWZpY2F0aW9uIikudmFsKCk7YS5pbmNsdWRlcygiI21vbnRobHlQYXltZW50c1BvcHVwQ29udGFpbmVyIGlucHV0IikmJihhPSIjbW9udGhseVBheW1lbnRzUG9wdXBDb250YWluZXIgaW5wdXQiKTthLmluY2x1ZGVzKCIjcGF5bWVudENhbGN1bGF0b3JQb3B1cENvbnRhaW5lciBpbnB1dCIpJiYoYT0iI3BheW1lbnRDYWxjdWxhdG9yUG9wdXBDb250YWluZXIgaW5wdXQiKTtzd2l0Y2goYSl7Y2FzZSAiTW9udGhseVBheW1lbnRzIjpjYXNlICJNb250aGx5UGF5bWVudHNfTkVXIjoxMDA5PT1jJiYoYj0iZHJQYXltZW50Q2FsY0ZpbmlzaCIpO2JyZWFrO2Nhc2UgIiNNb250aGx5UGF5bWVudHNCdG4iOjEwMDk9PWMmJihiPSJkclBheW1lbnRDYWxjU2hvd24iKTticmVhaztjYXNlICIjbW9udGhseVBheW1lbnRzUG9wdXBDb250YWluZXIgaW5wdXQiOjEwMDk9PQpjJiYoYj0iZHJQYXltZW50Q2FsY1N0YXJ0Iik7YnJlYWs7Y2FzZSAiLnBheW1lbnRDYWxjdWxhdG9yVkRQIjoxMDE0PT1jJiYoYj0iZHJQcmVRU2hvd24iKTticmVhaztjYXNlICIjcGF5bWVudENhbGN1bGF0b3JQb3B1cENvbnRhaW5lciBpbnB1dCI6MTAxND09YyYmKGI9ImRyUHJlUVN0YXJ0Iik7YnJlYWs7Y2FzZSAiI3BheW1lbnRDYWxjdWxhdG9yQ2FsbFRvQWN0aW9uQ29udGFpbmVyIGEucHJvbW9CVE4iOjEwMTQ9PWMmJihiPSJkclByZVFGaW5pc2giKX1yZXR1cm4gYn07c2VsZi5wYWdlVmlldz1mdW5jdGlvbigpe2UuZXZlbnRzPSJwYWdldmlldyI7c2VsZi5zZW5kKGUsITEpfTtzZWxmLmltcHJlc3Npb249ZnVuY3Rpb24oYSl7ZS5ldmVudHM9ImRySW1wcmVzc2lvbiI7c2VsZi5zZW5kKGUsITEpfTtzZWxmLnNlbmQ9ZnVuY3Rpb24oYSxiKXtsZXQgYz1hLmV2ZW50cztjb25zb2xlLmxvZygiRDJEUiAtIFNlbmRpbmcgdG8gZGF0YUxheWVyIixhLGEuZXZlbnRzKTshMT09PWQuZHJJbml0aWFsQ2xpY2smJgoiZHJJbXByZXNzaW9uIiE9PWMmJiJwYWdldmlldyIhPT1jJiYoZC5kckluaXRpYWxDbGljaz0hMCxiPXNlbGYuYnVpbGREYXRhTGF5ZXIoImRySW5pdGlhbENsaWNrIixiKSxzZCgiZGF0YUxheWVyIixiKSxzZCgic2VuZCIpKTtzZCgiZGF0YUxheWVyIixhKTtzZCgic2VuZCIpO3NlbGYuc2V0RGVhbElkKCEwKTtzZWxmLnRyaWdnZXJGb2xsb3d1cEV2ZW50KGMsYSl9O3NlbGYuaW5qZWN0U0Q9ZnVuY3Rpb24oKXtkLmxpYnJhcnkubG9hZGVkfHwoZnVuY3Rpb24oYSxiLGMsZixnLGssbSl7YS5TaGlmdEFuYWx5dGljc09iamVjdD1nO2FbZ109YVtnXXx8ZnVuY3Rpb24oKXsoYVtnXS5xPWFbZ10ucXx8W10pLnB1c2goYXJndW1lbnRzKX07YVtnXS5sPTEqbmV3IERhdGU7az1iLmNyZWF0ZUVsZW1lbnQoYyk7bT1iLmdldEVsZW1lbnRzQnlUYWdOYW1lKGMpWzBdO2suYXN5bmM9MTtrLnNyYz1mO20ucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoayxtKX0od2luZG93LGRvY3VtZW50LCJzY3JpcHQiLApkLmxpYnJhcnkubGlicmFyeUpTLCJzZCIpLHNkKCJjcmVhdGUiLGQubGlicmFyeS5jbGllbnRJRCxkLmxpYnJhcnkucmV0YWlsZXJJRCxkLmxpYnJhcnkucHJvdmlkZXJJRCksZC5saWJyYXJ5LmxvYWRlZD0hMCl9O3NldFRpbWVvdXQoZnVuY3Rpb24oKXtjb25zdCBhPWRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJzY3JpcHQiKTtmb3IobGV0IGI9MDtiPGEubGVuZ3RoO2IrKylhW2JdLnNyYy5pbmNsdWRlcygic2hpZnRkaWdpdGFsYXBwcy5pbyIpJiYoZC5saWJyYXJ5LmxvYWRlZD0hMCk7dC5pbmNsdWRlcyhkLnBhZ2VEYXRhLnBhZ2VUeXBlKSYmITA9PT1kLnBhZ2VEYXRhLkdFTkVSQUxfRU5BQkxFX1RSQU5TQUNUSU9OX0JVSUxERVImJihzZWxmLmluamVjdFNEKCksc2VsZi5zZXREZWFsSWQoITApLHNlbGYuYmluZEV2ZW50cygpLHNldFRpbWVvdXQoZnVuY3Rpb24oKXtzZWxmLnBhZ2VWaWV3KCl9LDUwMCksc2V0VGltZW91dChmdW5jdGlvbigpe3NlbGYuaW1wcmVzc2lvbigpfSwKNjAwKSxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7JChkb2N1bWVudCkudHJpZ2dlcigic2Nyb2xsIil9LDc1MCkpfSwxMjUwKX07Ci8qKiAvbS9qcy9kMmNfYXNjX2dhNC5qcyAqKi8KdmFyIF9fX2QyY19kMmNhc2NnYTRqc19jX29uPSIyMDI2LTA0LTE2IDEzOjMwOjA0IjsndXNlIHN0cmljdCc7dmFyIGFzY1RvcENhckRldGFpbHM9ITEsYXNjTGFzdFNlYXJjaEZpbHRlclNvcnQ9ITEsYXNjTGFzdEZpbHRlckNsaWNrPSExLGFzY0xhc3RDdGFDbGljaz0hMTtmdW5jdGlvbiBkMmFzY1B1YmxpY2F0aW9uRGF0ZShkKXtpZigiIj09ZClyZXR1cm4iIjt2YXIgZz1uZXcgRGF0ZShkKTtkPSIiKyhnLmdldE1vbnRoKCkrMSk7dmFyIGs9IiIrZy5nZXREYXRlKCk7Zz1nLmdldEZ1bGxZZWFyKCk7MTA+cGFyc2VGbG9hdChkKSYmKGQ9IjAiK2QpOzEwPnBhcnNlRmxvYXQoaykmJihrPSIwIitrKTtyZXR1cm5bZCxrLGddLmpvaW4oIi8iKX1mdW5jdGlvbiBlbnN1cmVUcnV0aHkoZCl7cmV0dXJuIGQ\/ZDoiIn0KZnVuY3Rpb24gYXNjVXBkYXRlVG9wQ2FyRGF0YShkKXtpZighMSE9PWQpe2xldCBnPWQyYXNjUHVibGljYXRpb25EYXRlKGVuc3VyZVRydXRoeShkLmRhdGVfbGlzdGluZykpLGs9ZC5tYWtlY2VydCsiIjthc2NUb3BDYXJEZXRhaWxzPXtpdGVtX2lkOmVuc3VyZVRydXRoeShkLk5JViksaXRlbV9udW1iZXI6ZW5zdXJlVHJ1dGh5KGQuaWQpLGl0ZW1fcHJpY2U6ZW5zdXJlVHJ1dGh5KGQucHJpY2UpLGl0ZW1fY29uZGl0aW9uOmVuc3VyZVRydXRoeShkLnZjYXRlZ29yeSkudG9Mb3dlckNhc2UoKSxpdGVtX3llYXI6ZW5zdXJlVHJ1dGh5KGQueWVhcikudG9Mb3dlckNhc2UoKSxpdGVtX21ha2U6ZW5zdXJlVHJ1dGh5KGQubWFrZSkudG9Mb3dlckNhc2UoKSxpdGVtX21vZGVsOmVuc3VyZVRydXRoeShkLm1vZGVsKS50b0xvd2VyQ2FzZSgpLGl0ZW1fdmFyaWFudDplbnN1cmVUcnV0aHkoZC52ZXJzaW9uKS50b0xvd2VyQ2FzZSgpLGl0ZW1fY29sb3I6ZW5zdXJlVHJ1dGh5KGQuY29sb3IpLnRvTG93ZXJDYXNlKCksCml0ZW1fdHlwZTplbnN1cmVUcnV0aHkoZC5ib2R5VHlwZUlEKS50b0xvd2VyQ2FzZSgpLGl0ZW1fY2F0ZWdvcnk6ZW5zdXJlVHJ1dGh5KCIiKSxpdGVtX2Z1ZWxfdHlwZTplbnN1cmVUcnV0aHkoZC52Y2FyYnVyYW50KS50b0xvd2VyQ2FzZSgpLGl0ZW1faW52ZW50b3J5X2RhdGU6ZW5zdXJlVHJ1dGh5KGcpfTsiMjEiIT1rJiYiMCIhPWsmJmQyYXNjLnNldFZlaGljbGVTdGF0dXMoIkNQTyIpfWVsc2UgZD0kKCIjYXNjX2RpZ2l0YWxfZGF0YV9pbmZvIiksYXNjVG9wQ2FyRGV0YWlscz17aXRlbV9jb25kaXRpb246Im5ldyIsaXRlbV95ZWFyOiQoImlucHV0W25hbWU9J3llYXInXSIsZCkudmFsKCksaXRlbV9tYWtlOiQoImlucHV0W25hbWU9J21ha2UnXSIsZCkudmFsKCksaXRlbV9tb2RlbDokKCJpbnB1dFtuYW1lPSdtb2RlbCddIixkKS52YWwoKSxpdGVtX3R5cGU6JCgiaW5wdXRbbmFtZT0ndmVoaWNsZUNhdGVnb3J5J10iLGQpLnZhbCgpfTtjb25zb2xlLmxvZygiR0E0IGFzY1RvcENhckRldGFpbHMiLAphc2NUb3BDYXJEZXRhaWxzKX0KZnVuY3Rpb24gZDJhc2NSZXNvbHZlUGFnZUlkKGQpe2Q9ZC5yZXBsYWNlKC88XC8\/W14+XSsoPnwkKS9nLCIiKTtpZihkLmluY2x1ZGVzKCJzaTp2bHMiKSlyZXR1cm4ic2VhcmNoIGludmVudG9yeSI7aWYoZC5pbmNsdWRlcygiOnNpOnZlaGljbGUgZGV0YWlscyIpfHxkLmluY2x1ZGVzKCJ2ZWhpY2xlIikpcmV0dXJuInZkcCI7aWYoZC5pbmNsdWRlcygiY3VzdG9tOiIpKXJldHVybiJibG9nIjtpZihkLmluY2x1ZGVzKCJmaW5hbmNlIikpcmV0dXJuImNyZWRpdCI7aWYoZC5pbmNsdWRlcygic2VydmljZTpyZXF1ZXN0IGFwcG9pbnRtZW50IikpcmV0dXJuInJlcXVlc3QgYXBwb2ludG1lbnQiO2lmKGQuaW5jbHVkZXMoInNlcnZpY2U6b3JkZXIgcGFydHMiKSlyZXR1cm4ib3JkZXIgcGFydHMiO2lmKGQuaW5jbHVkZXMoImFib3V0IHVzOmNvbnRhY3QgdXMiKSlyZXR1cm4iY29udGFjdCB1cyI7aWYoZC5pbmNsdWRlcygiVU5LTk9XTiIpKXtpZigvYnVpbGQtYW5kLXByaWNlLy50ZXN0KHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSl8fC9jb25maWd1cmF0aW9uLWV0LXByaXgvLnRlc3Qod2luZG93LmxvY2F0aW9uLnBhdGhuYW1lKSlyZXR1cm4iYnVpbGQgYW5kIHByaWNlIjsKaWYoL3ByaWNlLW5ldy8udGVzdCh3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUpfHwvcHJpeC1uZXVmLy50ZXN0KHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSkpcmV0dXJuInByaWNlIHJlcXVlc3QiO2lmKC9icm9jaHVyZXMvLnRlc3Qod2luZG93LmxvY2F0aW9uLnBhdGhuYW1lKSlyZXR1cm4iYnJvY2h1cmUiO2lmKC9hdXRvLWpvYnMvLnRlc3Qod2luZG93LmxvY2F0aW9uLnBhdGhuYW1lKXx8L2VtcGxvaXMtYXV0b21vYmlsZS8udGVzdCh3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUpKXJldHVybiJqb2JzIjtpZigvb3VydGVhbS8udGVzdCh3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUpfHwvZXF1aXBlLy50ZXN0KHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSkpcmV0dXJuIm91ciB0ZWFtIn1yZXR1cm4gZH0KZnVuY3Rpb24gZDJhc2NSZXNvbHZlTGVhZFR5cGUoZCxnKXtnPWcudG9Mb3dlckNhc2UoKTtsZXQgaz17fTtmb3IodmFyIGwgaW4gZClrW2wudG9Mb3dlckNhc2UoKV09ZFtsXTtsPSQoImh0bWwiKS5hdHRyKCJsYW5nIik7ZD0iIjtsPSJlbiI9PWwudG9Mb3dlckNhc2UoKXx8ImVuZyI9PWwudG9Mb3dlckNhc2UoKT8iRU5HTElTSCI6IkZSRU5DSCI7dm9pZCAwIT09a1tnXSYmdm9pZCAwIT09a1tnXVtsXSYmKGQ9a1tnXVtsXSk7cmV0dXJuIGR9CmZ1bmN0aW9uIEQyQVNDKGQpe2QucGFnZUlkT3JnPWQucGFnZUlkO2QucGFnZUlkPWQyYXNjUmVzb2x2ZVBhZ2VJZChkLnBhZ2VJZCk7ZC5kZWFsZXJfbmFtZT0kKCIjaGlkZGVuRGVhbGVyTmFtZSIpLnZhbCgpO3ZhciBnPXtzdG9yZV9uYW1lOmQuZGVhbGVyX25hbWUudG9Mb3dlckNhc2UoKSxvZW1fY29kZTpkLnBhQ29kZSxvZW1fYnJhbmQ6ZC5jbGllbnQsYWZmaWxpYXRpb246IiIsbGFuZ3VhZ2U6ZC51c2VyTGFuZ3VhZ2UsY3VycmVuY3k6ImNhZCIscGFnZV90eXBlOmQucGFnZUlkLGl0ZW1zOltdLGV2ZW50czpbXSxtZWFzdXJlbWVudF9pZHM6WyJHLTZHRVoyV1dUM0wiXSxwbGF0Zm9ybV9jdXN0b206IiJ9LGs9e2FzY19jbGlja190b19jYWxsOlsiYS5waG9uZS1saW5rIiwiYS5waG9uZS1hY3Rpb24iXSxhc2NfY3RhX2ludGVyYWN0aW9uOiIudi1jYXJkIGE6bm90KC5waG9uZS1saW5rKTsubGVmdF9ib3ggYTsjZm9vdGVyIGE7I3NjcmF0Y2hhbmRzYXZlX2VtYmVkZGVkX2J0bl8xOyNQdWxsb3V0X0J1aWxkLWFuZC1QcmljZTsjbmV3VmRwRnVsbHdpZHRoVmlkZW9JZnJhbWUiLnNwbGl0KCI7IiksCmFzY19jdGFfaW50ZXJhY3Rpb246IiNwcm9tb0Rpc2NvdmVyQnV0dG9uIC5kaXZDYXJQYXltZW50Q2FsY3VsYXRvciAjc2NyYXRjaGFuZHNhdmVfZW1iZWRkZWQgLmxvYW5DYWxjdWxhdG9yVHJpZ2dlciAub2ZmZXItYnRuIC5jdFByb21vIC50cmFkZUluQmFyX2J0biIuc3BsaXQoIiAiKSxhc2NfY3RhX2ludGVyYWN0aW9uOlsiLm5ld1ZkcEFjdGlvbnMgYSIsIi5jdGEtdHBsIGEiXSxhc2NfY29tbV9lbmdhZ2VtZW50OlsiLnRleHQtdXMtYnRuIl0sYXNjX2Zvcm1fZW5nYWdlbWVudDpbImlucHV0Iiwic2VsZWN0IiwidGV4dGFyZWEiXSxhc2NfbWVkaWFfaW50ZXJhY3Rpb246WyIjbmV3VmRwRnVsbHdpZHRoVmlkZW9JZnJhbWUiLCJpbWciXSxhc2NfbWVudV9pbnRlcmFjdGlvbjpbIi51cF9tZW51IGEiXSxhc2NfZWxlbWVudF9jb25maWd1cmF0aW9uOlsiLmxhbmd1YWdlQmFyIGEiXX0sbD0hMTtjb25zb2xlLmxvZygiRDJBU0MgTG9hZGluZy4uLiIsZCk7dmFyIGg9bmV3IGZ1bmN0aW9uKCl7dmFyIGU9CnRoaXM7ZS5zZXRWZWhpY2xlU3RhdHVzPWZ1bmN0aW9uKGIpe2xldCBhPSQoIiNhc2NfZGlnaXRhbF9kYXRhX2luZm8gaW5wdXRbbmFtZT12ZWhpY2xlU3RhdHVzXSIpO2lmKCIiIT0kKCIjYXNjX2RpZ2l0YWxfZGF0YV9pbmZvIGlucHV0W25hbWU9J21ha2UnXSIpLnZhbCgpKXtsZXQgYz13aW5kb3cubG9jYXRpb24ucGF0aG5hbWUudG9Mb3dlckNhc2UoKTthLnZhbCgvdXNlZC8udGVzdChjKXx8L29jY2FzaW9uLy50ZXN0KGMpPyJVc2VkIjoiTmV3Iil9ITEhPT1iJiZhLnZhbChiKX07ZS5zZXREaWdpdGFsRGF0YT1mdW5jdGlvbihiLGEpe2xldCBjPWUuYWRkRXZlbnQoYixhKTtpZighMT09PWMpcmV0dXJuITE7dm9pZCAwIT09Yy5mb3JtX25hbWUmJihjLmZvcm1fbmFtZT1jLmZvcm1fbmFtZS5yZXBsYWNlKCJtZW5zdWFsaXQ\/cyIsIm1lbnN1YWxpdGVzIiksYy5mb3JtX25hbWU9Yy5mb3JtX25hbWUucmVwbGFjZSgidj9oaWN1bGUiLCJ2ZWhpY3VsZSIpLGMuZm9ybV9uYW1lPWMuZm9ybV9uYW1lLnJlcGxhY2UoIj90YXBlcyIsCiJldGFwZXMiKSxjLmZvcm1fbmFtZT0iRDJDICIrYy5mb3JtX25hbWUpO3ZvaWQgMCE9PWMuZm9ybV9sYW5nJiYoYy5mb3JtX2xhbmc9ZS5zdGFuZGFyZGl6ZUZvcm1MYW5nKGMuZm9ybV9sYW5nKSk7Zy5ldmVudHMudW5zaGlmdChKU09OLnN0cmluZ2lmeSh7bmFtZTpiLHBhcmFtczpjfSkpOyJ2ZHAiPT1jLnBhZ2VfdHlwZSYmKGMucGFnZV90eXBlPSJpdGVtIik7InNob3dyb29tIj09Yy5wYWdlX3R5cGUmJihjLnBhZ2VfdHlwZT0iaXRlbSIpOyJzZWFyY2ggaW52ZW50b3J5Ij09Yy5wYWdlX3R5cGUmJihjLnBhZ2VfdHlwZT0iaXRlbWxpc3QiKTtsZXQgZj1lLmdldEV2ZW50VHlwZShiKTtlLnJlcG9ydChmLGIsYyxnKTsiYXNjX2Zvcm1fc3VibWlzc2lvbiI9PWImJihlLnNldERpZ2l0YWxEYXRhKCJhc2NfZm9ybV9zdWJtaXNzaW9uX3NhbGVzIixhKSxlLnNldERpZ2l0YWxEYXRhKCJEMkNfRm9ybV9zdWJtaXNzaW9uX3NhbGVzIixhKSxlLnNldERpZ2l0YWxEYXRhKCJEMkNfTGVhZHMiLAphKSxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7YXNjTGFzdEN0YUNsaWNrPSExfSwxMjUwKSk7ImFzY19jb21tX3N1Ym1pc3Npb24iPT1iJiZlLnNldERpZ2l0YWxEYXRhKCJhc2NfY29tbV9zdWJtaXNzaW9uX3NhbGVzIixhKX07ZS5nZXRFdmVudFR5cGU9ZnVuY3Rpb24oYil7bGV0IGE9ImVuZ2FnZW1lbnQiO3N3aXRjaChiKXtjYXNlICJhc2NfZm9ybV9zdWJtaXNzaW9uIjpjYXNlICJhc2NfZm9ybV9zdWJtaXNzaW9uX3BhcnRzIjpjYXNlICJhc2NfZm9ybV9zdWJtaXNzaW9uX3NhbGVzX2FwcHQiOmNhc2UgImFzY19mb3JtX3N1Ym1pc3Npb25fc2FsZXMiOmNhc2UgImFzY19mb3JtX3N1Ym1pc3Npb25fc2VydmljZSI6YT0iY29udmVyc2lvbiJ9cmV0dXJuIGF9O2UuYmluZEVsZW1lbnRzPWZ1bmN0aW9uKGIsYSl7JC5lYWNoKGEsZnVuY3Rpb24oYyxmKXskKGYpLmVhY2goZnVuY3Rpb24oKXtjb25zdCBtPSQodGhpcyksbj0iYXNjX2Zvcm1fZW5nYWdlbWVudCI9PWI\/ImJsdXIiOiJjbGljayI7CiQodGhpcykub24obixmdW5jdGlvbigpe2guc2V0RGlnaXRhbERhdGEoYixtKX0pfSl9KX07ZS5hZGRFdmVudD1mdW5jdGlvbihiLGEpe3ZhciBjPXtldmVudF9vd25lcjoiZDJjIixwYWdlX3R5cGU6ZC5wYWdlSWQscGFnZV91cmw6d2luZG93LmxvY2F0aW9uLmhyZWYsZXZlbnRfbGFiZWw6YixldmVudF9jYXRlZ29yeTokKCIjYXNjX2RpZ2l0YWxfZGF0YV9pbmZvIGlucHV0W25hbWU9dmVoaWNsZVN0YXR1c10iKS52YWwoKX0sZj0hMSE9PWFzY0xhc3RDdGFDbGljaz9lLkN0YVRleHRQYXJzZXIoYXNjTGFzdEN0YUNsaWNrKToiIjtzd2l0Y2goYil7Y2FzZSAiYXNjX3BhZ2V2aWV3IjpicmVhaztjYXNlICJhc2NfY2xpY2tfdG9fY2FsbCI6Zj1hLmhhc0NsYXNzKCJwaG9uZS1saW5rIik\/YS50ZXh0KCk6YS5hdHRyKCJocmVmIik7Zj1mLnJlcGxhY2UoL1teMC05XCtdL2csIiIpO2M9T2JqZWN0LmFzc2lnbih7fSxjLHtjb21tX3Bob25lX251bWJlcjpmLGRlcGFydG1lbnQ6ZS5nZXREMmNEZXBhcnRtZW50KGEpLAphZmZpbGlhdGlvbjoiIn0pO2JyZWFrO2Nhc2UgImFzY19jdGFfaW50ZXJhY3Rpb24iOmY9ZS5DdGFUZXh0UGFyc2VyKGEpO2UuaXNDdGFDbGljayhhKSYmKGFzY0xhc3RDdGFDbGljaz1hKTtjPU9iamVjdC5hc3NpZ24oe30sYyx7ZWxlbWVudF90ZXh0OmYsZWxlbWVudF9vcmRlcjoiIixlbGVtZW50X2NvbG9yOiIiLGVsZW1lbnRfdHlwZTplLmdldEVsZW1lbnRUeXBlKGEpLGV2ZW50X2FjdGlvbjoiIixldmVuX2FjdGlvbl9yZXN1bHQ6YS5hdHRyKCJocmVmIik\/InJlZGlyZWN0IjoicG9wdXAiLGxpbmtfdXJsOmEuYXR0cigiaHJlZiIpP2EuYXR0cigiaHJlZiIpOiIifSk7YnJlYWs7Y2FzZSAiYXNjX2Zvcm1fZW5nYWdlbWVudCI6Zj1lLmdldExlYWRUeXBlRm9ybU5hbWUoYSk7aWYoITE9PT1mKXJldHVybiExO2xldCBtPWUuYXNjVGV4dFJlcGxhY2VyKGEudmFsKCkpLG49ZS5nZXREMmNEZXBhcnRtZW50KGEpO2NvbnNvbGUubG9nKCJEMkFTQyBGb3JtIEVuZ2FnZW1lbnQgRGV0ZWN0ZWQiLApmLG4sYSk7Yz1PYmplY3QuYXNzaWduKHt9LGMse2VsZW1lbnRfdGV4dDptLGNvbW1fdHlwZToiZm9ybSIsY29tbV9zdGF0dXM6InN0YXJ0IixkZXBhcnRtZW50Om4sZm9ybV9uYW1lOmYsZm9ybV90eXBlOmUuZ2V0Rm9ybVR5cGUoYSksZm9ybV9sYW5nOiQoImlucHV0W25hbWU9J2xhbmcnXSIpLnZhbCgpLGZvcm1fZGVwdDpufSk7YnJlYWs7Y2FzZSAiYXNjX2Zvcm1fc3VibWlzc2lvbiI6Yz1PYmplY3QuYXNzaWduKHt9LGMse2NvbW1fdHlwZToiZm9ybSIsY29tbV9vdXRjb21lOiJjbG9zZSIsc3VibWlzc2lvbl9pZDoiIixlbGVtZW50X3RleHQ6InN1Ym1pdCIsY3RhX3RleHQ6ZixjdXN0b21lcl9waG9uZTphLmNvbmZpcm1fcGhvbmVfbnVtYmVyLGN1c3RvbWVyX2VtYWlsOmEuY29uZmlybV9lbWFpbCxkZXBhcnRtZW50OmUuZ2V0RDJjRGVwYXJ0bWVudChhKSxmb3JtX25hbWU6YS5sZWFkVHlwZSxmb3JtX3R5cGU6ZS5nZXRGb3JtVHlwZShhKSxmb3JtX2xhbmc6JCgiaW5wdXRbbmFtZT0nbGFuZyddIikudmFsKCksCmZvcm1fZGVwdDplLmdldEQyY0RlcGFydG1lbnQoYSl9KTticmVhaztjYXNlICJhc2NfZm9ybV9zdWJtaXNzaW9uX3BhcnRzIjpjYXNlICJhc2NfZm9ybV9zdWJtaXNzaW9uX3NhbGVzIjpjYXNlICJhc2NfZm9ybV9zdWJtaXNzaW9uX3NhbGVzX2FwcHQiOmNhc2UgImFzY19mb3JtX3N1Ym1pc3Npb25fc2VydmljZSI6Y2FzZSAiYXNjX2Zvcm1fc3VibWlzc2lvbl9zZXJ2aWNlX2FwcHQiOmNhc2UgIkQyQ19MZWFkcyI6Y29uc29sZS5sb2coIkQyQVNDIEVtYWlsIFNlbnQgLSBEYXRhIDIiLGEpO2EuY29uZmlybV9waG9uZV9udW1iZXI9dm9pZCAwPT09YS5jb25maXJtX3Bob25lX251bWJlcj8iIjphLmNvbmZpcm1fcGhvbmVfbnVtYmVyO2EuY29uZmlybV9lbWFpbD12b2lkIDA9PT1hLmNvbmZpcm1fZW1haWw\/IiI6YS5jb25maXJtX2VtYWlsO2M9T2JqZWN0LmFzc2lnbih7fSxjLHtjb21tX3R5cGU6ImZvcm0iLGNvbW1fb3V0Y29tZTplLmdldEZvcm1PdXRjb21lKGIpLHN1Ym1pc3Npb25faWQ6IiIsCmVsZW1lbnRfdGV4dDplLmFzY1RleHRSZXBsYWNlcigic3VibWl0IiksY3RhX3RleHQ6ZixjdXN0b21lcl9waG9uZTphLmNvbmZpcm1fcGhvbmVfbnVtYmVyLGN1c3RvbWVyX2VtYWlsOmEuY29uZmlybV9lbWFpbCxkZXBhcnRtZW50OmUuZ2V0RDJjRGVwYXJ0bWVudChhKSxmb3JtX25hbWU6YS5sZWFkVHlwZSxmb3JtX3R5cGU6ZS5nZXRGb3JtVHlwZShhKSxmb3JtX2xhbmc6JCgiaW5wdXRbbmFtZT0nbGFuZyddIikudmFsKCksZm9ybV9kZXB0OmUuZ2V0RDJjRGVwYXJ0bWVudChhKX0pO2JyZWFrO2Nhc2UgIkQyQ19Gb3JtX3N1Ym1pc3Npb25fc2FsZXMiOmM9e2Zvcm1fZmlsbGVkOiJZZXMifTticmVhaztjYXNlICJhc2NfZWxlbWVudF9jb25maWd1cmF0aW9uIjpjPXZvaWQgMCE9PWEuZXZlbnRfYWN0aW9uP09iamVjdC5hc3NpZ24oe30sYyx7ZXZlbnRfYWN0aW9uX3Jlc3VsdDphLmV2ZW50X2FjdGlvbl9yZXN1bHQsZXZlbnRfYWN0aW9uOmEuZXZlbnRfYWN0aW9uLHByb2R1Y3RfbmFtZToiIiwKZWxlbWVudF9zdGF0ZTphLmZpbHRlckluZm8uc3RhdGUsZWxlbWVudF90eXBlOiJzZWFyY2giPT1hLmV2ZW50X2FjdGlvbj8iZmlsdGVyIjoic29ydCIsZWxlbWVudF9zdWJ0eXBlOmEuZmlsdGVySW5mby50eXBlLGVsZW1lbnRfdGl0bGU6YS5maWx0ZXJJbmZvLmxhYmVsLGVsZW1lbnRfdGV4dDphLmZpbHRlckluZm8udGl0bGUsZWxlbWVudF92YWx1ZTphLmZpbHRlckluZm8udmFsdWUsZWxlbWVudF9jb2xvcjoiIixlbGVtZW50X3Bvc2l0aW9uOiIiLGVsZW1lbnRfb3JkZXI6IiJ9KTpPYmplY3QuYXNzaWduKHt9LGMse2V2ZW50X2FjdGlvbl9yZXN1bHQ6Imxhbmd1YWdlIixldmVudF9hY3Rpb246ImNsaWNrIixwcm9kdWN0X25hbWU6IiIsZWxlbWVudF9zdGF0ZTowLGVsZW1lbnRfdHlwZToibGFuZ3VhZ2UgdG9nZ2xlLCIsZWxlbWVudF9zdWJ0eXBlOiJidXR0b24iLGVsZW1lbnRfdGl0bGU6ZS5hc2NUZXh0UmVwbGFjZXIoYS50ZXh0KCkpLGVsZW1lbnRfdGV4dDplLmFzY1RleHRSZXBsYWNlcihhLnRleHQoKSksCmVsZW1lbnRfdmFsdWU6ZS5hc2NUZXh0UmVwbGFjZXIoYS50ZXh0KCkpLGVsZW1lbnRfY29sb3I6IiIsZWxlbWVudF9wb3NpdGlvbjoiIixlbGVtZW50X29yZGVyOiIifSk7YnJlYWs7Y2FzZSAiYXNjX21lZGlhX2ludGVyYWN0aW9uIjpjPU9iamVjdC5hc3NpZ24oe30sYyx7ZXZlbnRfYWN0aW9uX3Jlc3VsdDoiIixhZmZpbGlhdGlvbjoiIixtZWRpYV90eXBlOiIiLGxpbmtfdXJsOiIiLGNyZWF0aXZlX25hbWU6IiJ9KTticmVhaztjYXNlICJhc2NfbWVudV9pbnRlcmFjdGlvbiI6Yz1PYmplY3QuYXNzaWduKHt9LGMse2VsZW1lbnRfdGV4dDplLmFzY1RleHRSZXBsYWNlcihhLnRleHQoKSksZWxlbWVudF9zdWJ0eXBlOiJtZWdhX21lbnUiLGVsZW1lbnRfdHlwZTphLmNsb3Nlc3QoImxpIikuYXR0cigiZGF0YS1pZCIpLGV2ZW50X2FjdGlvbjoiY2xpY2sifSk7YnJlYWs7Y2FzZSAiYXNjX3JldGFpbF9wcm9jZXNzIjpjPU9iamVjdC5hc3NpZ24oe30sYyx7Zmxvd19uYW1lOiJmaW5hbmNlIiwKZWxlbWVudF90aXRsZToiIixmbG93X291dGNvbWU6InByb2NlZWQiLGl0ZW1fcGF5bWVudDoiZmluYW5jZSIsZmxvd19zdGFnZToiIn0pO2JyZWFrO2Nhc2UgImFzY19zcGVjaWFsX29mZmVyIjpjPU9iamVjdC5hc3NpZ24oe30sYyx7cHJvbW90aW9uX25hbWU6JCgiaDI6Zmlyc3QtY2hpbGQiLGEpLmxlbmd0aD9lLmFzY1RleHRSZXBsYWNlcigkKCJoMjpmaXJzdC1jaGlsZCIsYSkudGV4dCgpKToiRGVhbGVyIFByb21vIixkZXBhcnRtZW50OmUuZ2V0RDJjRGVwYXJ0bWVudChhKSxwcm9kdWN0X25hbWU6IiIsZWxlbWVudF9wb3NpdGlvbjoiZmxvYXRpbmciLGZsb3dfb3V0Y29tZToic3RhcnQifSk7YnJlYWs7Y2FzZSAiYXNjX2NvbW1fZW5nYWdlbWVudCI6Yz1PYmplY3QuYXNzaWduKHt9LGMse2NvbW1fc3RhdHVzOiJzdGFydCIsY29tbV90eXBlOiJzbXMiLHByb2R1Y3RfbmFtZToiZDJjX3RleHQiLGV2ZW50X293bmVyOiJkMmMifSk7YnJlYWs7Y2FzZSAiYXNjX2NvbW1fc3VibWlzc2lvbiI6Yz0KT2JqZWN0LmFzc2lnbih7fSxjLHtjb21tX3R5cGU6ImNoYXQiLGFmZmlsaWF0aW9uOiJuYXRpdmUiLGRlcGFydG1lbnQ6ZS5nZXREMmNEZXBhcnRtZW50KGEpLGFmZmlsaWF0aW9uX2lkOiJtdWx0aS11c2VyIixjb21tX3N0YXR1czoiY3JtX3VwZGF0ZSJ9KTticmVhaztjYXNlICJhc2NfY29tbV9zdWJtaXNzaW9uX3NhbGVzIjpjPU9iamVjdC5hc3NpZ24oe30sYyx7Y29tbV90eXBlOiJjaGF0IixhZmZpbGlhdGlvbjoibmF0aXZlIixkZXBhcnRtZW50OmUuZ2V0RDJjRGVwYXJ0bWVudChhKSxhZmZpbGlhdGlvbl9pZDoibXVsdGktdXNlciIsY29tbV9zdGF0dXM6ImNybV91cGRhdGUiLGVsZW1lbnRfcG9zaXRpb246InBvcC11cCJ9KTticmVhaztkZWZhdWx0OnJldHVybiBjb25zb2xlLmxvZygiRDJBU0MgRVJST1IoQ09ERTowMDEpIixiLGEpLCExfSExIT09YXNjVG9wQ2FyRGV0YWlscyYmIkQyQ19Gb3JtX3N1Ym1pc3Npb25fc2FsZXMiIT1iJiYoYz1PYmplY3QuYXNzaWduKHt9LGMsCmFzY1RvcENhckRldGFpbHMpKTtjb25zb2xlLmxvZygiR0E0IEZpbmFsIERpZ2l0YWwgRGF0YSIsYyk7cmV0dXJuIGN9O2UuaXNDdGFDbGljaz1mdW5jdGlvbihiKXtsZXQgYT0hMTtiIGluc3RhbmNlb2YgalF1ZXJ5JiYoMDxiLmNsb3Nlc3QoIi5uZXdWZHBBY3Rpb25zIikubGVuZ3RoJiYoYT0hMCksMDxiLmNsb3Nlc3QoIi5jdGEtdHBsIikubGVuZ3RoJiYoYT0hMCksInByb21vRGlzY292ZXJCdXR0b24iPT1iLmF0dHIoImlkIikmJihhPSEwKSxiLmhhc0NsYXNzKCJkaXZDYXJQYXltZW50Q2FsY3VsYXRvciIpJiYoYT0hMCksMDxiLmNsb3Nlc3QoIi5kaXZDYXJQYXltZW50Q2FsY3VsYXRvciIpLmxlbmd0aCYmKGE9ITApLDA8Yi5jbG9zZXN0KCIjc2NyYXRjaGFuZHNhdmVfZW1iZWRkZWQiKS5sZW5ndGgmJihhPSEwKSwic2NyYXRjaGFuZHNhdmVfZW1iZWRkZWQiPT1iLmF0dHIoImlkIikmJihhPSEwKSxiLmhhc0NsYXNzKCJsb2FuQ2FsY3VsYXRvclRyaWdnZXIiKSYmKGE9ITApLAowPGIuY2xvc2VzdCgiLmxvYW5DYWxjdWxhdG9yVHJpZ2dlciIpLmxlbmd0aCYmKGE9ITApLGIuaGFzQ2xhc3MoImN0UHJvbW8iKSYmKGE9ITApLDA8Yi5jbG9zZXN0KCIuY3RQcm9tbyIpLmxlbmd0aCYmKGE9ITApLGIuaGFzQ2xhc3MoIm9mZmVyLWJ0biIpJiYoYT0hMCksMDxiLmNsb3Nlc3QoIi5vZmZlci1idG4iKS5sZW5ndGgmJihhPSEwKSxiLmhhc0NsYXNzKCJ0cmFkZUluQmFyX2J0biIpJiYoYT0hMCksMDxiLmNsb3Nlc3QoIi50cmFkZUluQmFyX2J0biIpLmxlbmd0aCYmKGE9ITApLCJUUkFERUlOIj09Yi5hdHRyKCJkYXRhLWlkIikmJihhPSEwKSk7cmV0dXJuIGF9O2Uuc3RhbmRhcmRpemVGb3JtTGFuZz1mdW5jdGlvbihiKXt2b2lkIDA9PT1iJiYkKCJodG1sIikuYXR0cigibGFuZyIpO2I9Yi50b0xvd2VyQ2FzZSgpOyJlbmciPT1iJiYoYj0iZW4iKTsiZW5nbGlzaCI9PWImJihiPSJlbiIpOyJmcm4iPT1iJiYoYj0iZnIiKTsiZnJlbmNoIj09YiYmKGI9ImZyIik7ImVuIiE9CmImJiJmciIhPWImJihiPSJlbiIpO3JldHVybiBifTtlLkN0YVRleHRQYXJzZXI9ZnVuY3Rpb24oYil7ZC5wYWdlSWQudG9Mb3dlckNhc2UoKTtsZXQgYT13aW5kb3cubG9jYXRpb24ucGF0aG5hbWUudG9Mb3dlckNhc2UoKSxjPSIiO2lmKC9uZXdcL2ludmVudG9yeVwvc2VhcmNoLy50ZXN0KGEpfHwvbmV1ZnNcL2ludmVudGFpcmVcL3JlY2hlcmNoZS8udGVzdChhKSljKz0iRDJDIENUQU0gLSBOZXcgSW52ZW50b3J5IFNSUDogIjtlbHNlIGlmKC9uZXdcL2ludmVudG9yeS8udGVzdChhKXx8L25ldWZzXC9pbnZlbnRhaXJlLy50ZXN0KGEpKWMrPSJEMkMgQ1RBTSAtIE5ldyBJbnZlbnRvcnkgVkRQOiAiO2Vsc2UgaWYoL25ldy8udGVzdChhKXx8L25ldWZzLy50ZXN0KGEpKWMrPSJEMkMgQ1RBTSAtIE5ldyBTaG93Um9vbSBWRFA6ICI7ZWxzZSBpZigvdXNlZC8udGVzdChhKXx8L29jY2FzaW9uLy50ZXN0KGEpKWMrPSJEMkMgQ1RBTSAtIFVzZWQgSW52ZW50b3J5IFZEUDogIjtyZXR1cm4gYysKZS5hc2NUZXh0UmVwbGFjZXIoYi50ZXh0KCkpfTtlLmdldExlYWRUeXBlRm9ybU5hbWU9ZnVuY3Rpb24oYil7bGV0IGE9MDxiLmNsb3Nlc3QoImZvcm0iKS5sZW5ndGg\/Yi5jbG9zZXN0KCJmb3JtIikuYXR0cigiaWQiKTpiLmF0dHIoImlkIiksYz0hMTtkLnBhZ2VJZC5pbmNsdWRlcygib3JkZXIgcGFydHMiKSYmKGM9IlBhcnRzUmVxdWVzdCIpO2QucGFnZUlkLmluY2x1ZGVzKCJ0ZXN0IGRyaXZlIikmJihjPSJUZXN0RHJpdmUiKTtkLnBhZ2VJZC5pbmNsdWRlcygicHJpY2UgcmVxdWVzdCIpJiYoYz0iUHJpY2VSZXF1ZXN0Iik7ZC5wYWdlSWQuaW5jbHVkZXMoImJyb2NodXJlIikmJihjPSJCcm9jaHVyZXNSZXF1ZXN0Iik7ZC5wYWdlSWQuaW5jbHVkZXMoInJlcXVlc3QgYXBwb2ludG1lbnQiKSYmKGM9IlNlcnZpY2VSZXF1ZXN0Iik7ZC5wYWdlSWQuaW5jbHVkZXMoInRpcmVzIikmJihjPSJUaXJlc1JlcXVlc3QiKTtkLnBhZ2VJZC5pbmNsdWRlcygiYm9keSBzaG9wIikmJihjPSJCb2R5U2hvcCIpOwpkLnBhZ2VJZC5pbmNsdWRlcygicmVjYWxsIikmJihjPSJSZWNhbGxzIik7aWYoYiBpbnN0YW5jZW9mIGpRdWVyeSYmKDA8Yi5jbG9zZXN0KCIuZGl2U3BhbkZpbHRlcnMiKS5sZW5ndGh8fDA8Yi5jbG9zZXN0KCIjYmFubmVyX3NlYXJjaF9iYXJfY29udGFpbmVyIikubGVuZ3RoKSlyZXR1cm4hMTtiPWUuZm9ybURhdGFCeUlkKGIpO3JldHVybiExIT09Yj9iLmZvcm1OYW1lOiExIT09Yz9kMmFzY1Jlc29sdmVMZWFkVHlwZShkLmZvcm1NYXAsYyk6IlVOS05PV046ICIrYX07ZS5mb3JtRGF0YUJ5SWQ9ZnVuY3Rpb24oYil7aWYoYiBpbnN0YW5jZW9mIGpRdWVyeSl7bGV0IGE9MDxiLmNsb3Nlc3QoImZvcm0iKS5sZW5ndGg\/Yi5jbG9zZXN0KCJmb3JtIikuYXR0cigiaWQiKTpiLmF0dHIoImlkIik7dm9pZCAwPT09YSYmKDA8Yi5jbG9zZXN0KCIjY29udGFjdHBvcHVwIikubGVuZ3RoJiYoYT0iUmVxdWVzdCBmb3IgY29udGFjdCIpLDA8Yi5jbG9zZXN0KCIuY3JlZGl0U2NvcmVJbnB1dCIpLmxlbmd0aCYmCihhPSJjcmVkaXRTY29yZSIpLDA8Yi5jbG9zZXN0KCIjc2NyYXRjaEFuZFNhdmVQb3B1cENvbnRhaW5lcl9ibnAiKS5sZW5ndGgmJihhPSJSZWJhdGVDb3Vwb25OZXdCTlAiKSwwPGIuY2xvc2VzdCgiLnNjcmF0Y2hhbmRzYXZlX3RleHQiKS5sZW5ndGgmJihhPSJSZWJhdGVDb3Vwb24iKSk7aWYoZC5wYWdlSWQuaW5jbHVkZXMoInNob3dyb29tOmNvbXBhcmUiKSYmdm9pZCAwIT09YSYmYS5pbmNsdWRlcygiZmVhdHVyZWRQcm9kdWN0XyIpKXJldHVybntmb3JtVHlwZToicmVzZWFyY2giLGZvcm1OYW1lOiJDb21wYXJlRm9ybSJ9O2lmKDA8Yi5jbG9zZXN0KCIjbXVsdGlmb3JtX2VtYmVkZGVkIikubGVuZ3RoJiYwPGIuY2xvc2VzdCgiI211bHRpZm9ybV9lbWJlZGRlZCIpLmZpbmQoIi5tdWx0aWZvcm1fZW1iZWRkZWRfc3RlcDEiKS5sZW5ndGgpcmV0dXJue2Zvcm1UeXBlOiJjb25zdW1lcl9jb250YWN0Iixmb3JtTmFtZToiRGlzY292ZXJPZmZlciJ9O3N3aXRjaChhKXtjYXNlICJtaW5pZm9ybSI6Y2FzZSAiZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSI6cmV0dXJue2Zvcm1UeXBlOiJmaW5hbmNlX2NyZWRpdCIsCmZvcm1OYW1lOiJDcmVkaXRNdWx0aXN0ZXBSZXF1ZXN0In07Y2FzZSAibG9hbi1mb3JtIjpyZXR1cm57Zm9ybVR5cGU6ImZpbmFuY2VfY3JlZGl0Iixmb3JtTmFtZToiUHJpY2VSZXF1ZXN0In07Y2FzZSAiZm9ybURlYWxlckFwcG9pbnRtZW50IjpyZXR1cm57Zm9ybVR5cGU6ImNvbnN1bWVyX2NvbnRhY3QiLGZvcm1OYW1lOiJEZWFsZXJBcHBvaW50bWVudCJ9O2Nhc2UgIlNsaWRlV2lkZ2V0Rm9ybSI6cmV0dXJue2Zvcm1UeXBlOiJjb25zdW1lcl9jb250YWN0Iixmb3JtTmFtZToiU2xpZGVXaWRnZXRGb3JtIn07Y2FzZSAiY3JlZGl0U2NvcmUiOnJldHVybntmb3JtVHlwZToiZmluYW5jZV9jcmVkaXQiLGZvcm1OYW1lOiJDcmVkaXRSZXF1ZXN0X1Nob3J0In07Y2FzZSAiUmViYXRlQ291cG9uTmV3Qk5QIjpyZXR1cm57Zm9ybVR5cGU6InByZS1vcmRlciIsZm9ybU5hbWU6IlJlYmF0ZUNvdXBvbk5ld0JOUCJ9O2Nhc2UgImJhbm5lcl9zZWFyY2hfYmFyX3NlbGVjdF9ib2R5IjpyZXR1cm57Zm9ybVR5cGU6ImNvbnN1bWVyX2NvbnRhY3QiLApmb3JtTmFtZToiQmFubmVyRm9ybSJ9O2Nhc2UgInBheW1lbnRDYWxjdWxhdG9ySW50ZXJ2YWwiOmNhc2UgInBheW1lbnRDYWxjdWxhdG9yVHJpbVNlbGVjdCI6Y2FzZSAicGF5bWVudENhbGN1bGF0b3JLbUFsbG93YW5jZSI6Y2FzZSAicGF5bWVudENhbGN1bGF0b3JEb3duUGF5bWVudCI6cmV0dXJue2Zvcm1UeXBlOiJmaW5hbmNlX2NyZWRpdCIsZm9ybU5hbWU6Ik1vbnRobHlQYXltZW50cyJ9O2Nhc2UgImNvbnRhY3RfZm9ybSI6Y2FzZSAiY29udGFjdF9mb3JtMiI6Y2FzZSAiY29udGFjdF9mb3JtMyI6Y2FzZSAiUmVxdWVzdCBmb3IgY29udGFjdCI6cmV0dXJue2Zvcm1UeXBlOiJjb25zdW1lcl9jb250YWN0Iixmb3JtTmFtZToiQ29udGFjdFJlcXVlc3QifTtjYXNlICJxdWlja0VtYWlsRm9ybSI6Y2FzZSAibWFpbEV4cHJlc3NSZXF1ZXN0IjpyZXR1cm57Zm9ybVR5cGU6ImNvbnN1bWVyX2NvbnRhY3QiLGZvcm1OYW1lOiJRdWlja0VtYWlsIn07Y2FzZSAidHJhZGluTWFrZSI6Y2FzZSAidHJhZGluWWVhciI6Y2FzZSAidHJhZGluTW9kZWwiOmNhc2UgInRyYWRpblRyaW0iOmNhc2UgInRyYWRlSW5CYXJQb3B1cEZvcm0iOmNhc2UgIlNlbGxDYXJGb3JtIjpyZXR1cm57Zm9ybVR5cGU6InJlc2VhcmNoIiwKZm9ybU5hbWU6IlByaWNlVmVoaWNsZSJ9fWlmKDA8Yi5jbG9zZXN0KCIuc2NyYXRjaGJvZHkiKS5sZW5ndGh8fDA8Yi5jbG9zZXN0KCIuc2NyYXRjaGJvZHkxIikubGVuZ3RofHwwPGIuY2xvc2VzdCgiLnNjcmF0Y2hib2R5MiIpLmxlbmd0aHx8MDxiLmNsb3Nlc3QoIi5zY3JhdGNoYm9keTMiKS5sZW5ndGgpcmV0dXJue2Zvcm1UeXBlOiJjb25zdW1lcl9jb250YWN0Iixmb3JtTmFtZToiUmViYXRlQ291cG9uTmV3In07aWYoMDxiLmNsb3Nlc3QoIiNtb250aGx5UGF5bWVudHNQb3B1cENvbnRhaW5lciIpLmxlbmd0aClyZXR1cm57Zm9ybVR5cGU6ImZpbmFuY2VfY3JlZGl0Iixmb3JtTmFtZToiTW9udGhseVBheW1lbnRzIn19cmV0dXJuITF9O2UuY29tbVN1YkRhdGFQYXJzZXI9ZnVuY3Rpb24oYixhKXtsZXQgYz17Zm9ybV9uYW1lOiIiLGZvcm1fdHlwZToiIixmb3JtX2RlcHQ6IiIsZm9ybV9sYW5nOiIifTsvYXNjX2NvbW1fc3VibWlzc2lvbi8udGVzdChiKSYmIlNsaWRlV2lkZ2V0Rm9ybSI9PQphLmNsb3Nlc3QoImZvcm0iKS5hdHRyKCJpZCIpJiYoYy5mb3JtX25hbWU9IkxlYWQ6IENoYXQgU3VibWlzc2lvbiIpO3JldHVybiBjfTtlLmFzY1RleHRSZXBsYWNlcj1mdW5jdGlvbihiKXtiPWIucmVwbGFjZSgvKFxyXG58XG58XHJ8XHQpL2dtLCIiKTtiPWIucmVwbGFjZSgvPFwvP1tePl0rKD58JCkvZywiIik7cmV0dXJuIGI9Yi50cmltKCl9O2UuaGFzaFRleHQ9ZnVuY3Rpb24oYil7Yj0obmV3IFRleHRFbmNvZGVyKS5lbmNvZGUoYi50cmltKCkudG9Mb3dlckNhc2UoKSk7cmV0dXJuIGNyeXB0by5zdWJ0bGUuZGlnZXN0KCJTSEEtMjU2IixiKS50aGVuKGE9PkFycmF5LmZyb20obmV3IFVpbnQ4QXJyYXkoYSkpLm1hcChjPT5jLnRvU3RyaW5nKDE2KS5wYWRTdGFydCgyLCIwIikpLmpvaW4oIiIpKX07ZS5nZXRGb3JtT3V0Y29tZT1mdW5jdGlvbihiKXtzd2l0Y2goYil7Y2FzZSAiYXNjX2Zvcm1fc3VibWlzc2lvbl9wYXJ0cyI6Y2FzZSAiYXNjX2Zvcm1fc3VibWlzc2lvbl9zYWxlcyI6Y2FzZSAiYXNjX2Zvcm1fc3VibWlzc2lvbl9zZXJ2aWNlIjpjYXNlICJEMkNfTGVhZHMiOnJldHVybiJjcm1fdXBkYXRlIjsKY2FzZSAiYXNjX2Zvcm1fc3VibWlzc2lvbl9zYWxlc19hcHB0IjpjYXNlICJhc2NfZm9ybV9zdWJtaXNzaW9uX3NlcnZpY2VfYXBwdCI6cmV0dXJuImFwcHRfYm9va2VkIn19O2UuZ2V0RDJjRGVwYXJ0bWVudD1mdW5jdGlvbihiKXtsZXQgYT1kLnBhZ2VJZC50b0xvd2VyQ2FzZSgpLGM9d2luZG93LmxvY2F0aW9uLnBhdGhuYW1lLnRvTG93ZXJDYXNlKCksZj0iT1RIRVIiOy9uZXVmcy8udGVzdChjKSYmKGY9Ik5FVyIpOy9uZXcvLnRlc3QoYykmJihmPSJORVciKTsvb2NjYXNpb24vLnRlc3QoYykmJihmPSJVU0VEIik7L3VzZWQvLnRlc3QoYykmJihmPSJVU0VEIik7YS5pbmNsdWRlcygiZmluYW5jZSIpJiYoZj0iRklOQU5DRSIpO2EuaW5jbHVkZXMoInJlcXVlc3QgYXBwb2ludG1lbnQiKSYmKGY9IlNFUlZJQ0UiKTthLmluY2x1ZGVzKCJwYXJ0cyIpJiYoZj0iU0VSVklDRSIpO2EuaW5jbHVkZXMoInRpcmVzIikmJihmPSJTRVJWSUNFIik7YS5pbmNsdWRlcygiYm9keSBzaG9wIikmJgooZj0iU0VSVklDRSIpO2EuaW5jbHVkZXMoImZpbmFuY2UgZGVwYXJ0bWVudCIpJiYoZj0iRklOQU5DRSIpO2EuaW5jbHVkZXMoImNyZWRpdCIpJiYoZj0iRklOQU5DRSIpO2EuaW5jbHVkZXMoImNvbnRhY3QgdXMiKSYmKGY9IlNBTEVTIik7YS5pbmNsdWRlcygicmVjYWxsIikmJihmPSJTRVJWSUNFIik7YiBpbnN0YW5jZW9mIGpRdWVyeSYmKDA8Yi5jbG9zZXN0KCIjZmluYW5jZU11bHRpc3RlcFBvcHVwQ29udGFpbmVyIikubGVuZ3RoJiYoZj0iRklOQU5DRSIpLCJmaW5hbmNlTXVsdGlzdGVwUG9wdXBDb250YWluZXIiPT1iLmF0dHIoImlkIikmJihmPSJGSU5BTkNFIiksMDxiLmNsb3Nlc3QoIiNTZWxsQ2FyRm9ybSIpLmxlbmd0aCYmKGY9IkZJTkFOQ0UiKSx2b2lkIDAhPT1iLmF0dHIoImRhdGEtZGVwYXJ0bWVudCIpJiYoZj1iLmF0dHIoImRhdGEtZGVwYXJ0bWVudCIpKSk7cmV0dXJuIGZ9O2UuZ2V0Rm9ybVR5cGU9ZnVuY3Rpb24oYil7bGV0IGE9ZC5wYWdlSWQudG9Mb3dlckNhc2UoKTsKaWYoYS5pbmNsdWRlcygicmVxdWVzdCBhcHBvaW50bWVudCIpKXJldHVybiJzZXJ2aWNlX2FwcG9pbnRtZW50IjtpZihhLmluY2x1ZGVzKCJvcmRlciBwYXJ0cyIpfHxhLmluY2x1ZGVzKCJvcmRlciB0aXJlcyIpKXJldHVybiJwYXJ0cyI7aWYoYS5pbmNsdWRlcygiYm9keSBzaG9wIikpcmV0dXJuImJvZHlfc2hvcCI7aWYoYS5pbmNsdWRlcygiZmluYW5jZSBkZXBhcnRtZW50Iil8fGEuaW5jbHVkZXMoImNyZWRpdCIpKXJldHVybiJjcmVkaXQiO2I9ZS5mb3JtRGF0YUJ5SWQoYik7cmV0dXJuITEhPT1iP2IuZm9ybVR5cGU6ImNvbnN1bWVyX2NvbnRhY3QifTtlLmdldEVsZW1lbnRUeXBlPWZ1bmN0aW9uKGIpe3JldHVybiJ0b3BCYW5uZXJJbWFnZSI9PWIuYXR0cigiaWQiKXx8MDxiLmNsb3Nlc3QoIiN0b3BCYW5uZXJJbWFnZSIpLmxlbmd0aD8iYmFubmVyIjowPGIuY2xvc2VzdCgiLmhlYWRlci1pbWFnZS13cmFwcGVyIikubGVuZ3RoPyJoZWFkZXIiOjA8Yi5jbG9zZXN0KCIubGFuZ3VhZ2VCYXIiKS5sZW5ndGg\/CiJhY2Nlc3NpYmlsaXR5X3Rvb2wiOjA8Yi5oYXMoIi5kZWFsZXJNYXBMaW5rIikubGVuZ3RoPyJtYXAiOjA8Yi5jbG9zZXN0KCIuc2xpZGVzIikubGVuZ3RoPyJnYWxsZXJ5IjowPGIuY2xvc2VzdCgiLnVzZWRWZHBBY3Rpb25zIikubGVuZ3RoPyJkaWdpdGFsX3JldGFpbGluZ190b29sIjoiUHVsbG91dF9CdWlsZC1hbmQtUHJpY2UiPT1iLmF0dHIoIi51c2VkVmRwQWN0aW9ucyIpPyJiYW5uZXIiOiJuZXdWZHBGdWxsd2lkdGhWaWRlb0lmcmFtZSI9PWIuYXR0cigiLnVzZWRWZHBBY3Rpb25zIik\/InZpZGVvIjoiZGlnaXRhbF9yZXRhaWxpbmcifTtlLmdldFZlaGljbGVKU09OPWZ1bmN0aW9uKGIsYSl7JC5nZXQoIi9qcy9qc29uLyIrYisiLmpzb24iKS5kb25lKGZ1bmN0aW9uKGMpe2MuaXRlbV9udW1iZXI9YjtpZigiIiE9YSYmdm9pZCAwIT09YSl3aW5kb3dbYV0oYyk7cmV0dXJuIGN9KX07ZS5yZXBvcnQ9ZnVuY3Rpb24oYixhLGMsZil7aWYodm9pZCAwPT09ZC5zdWJfZ2E0fHwiTiI9PQpkLnN1Yl9nYTQpYz1PYmplY3QuYXNzaWduKHt9LGMse3NlbmRfdG86IkctWjVROFo1QzdLRiJ9KTtpZighMD09PWwmJiJhc2NfZm9ybV9lbmdhZ2VtZW50Ij09YSlyZXR1cm4hMTtndGFnKCJldmVudCIsYSxjKTtsPSEwO3NldFRpbWVvdXQoZnVuY3Rpb24oKXtsPSExfSwxRTMpfTtyZXR1cm4gZX07c2V0VGltZW91dChmdW5jdGlvbigpe2guc2V0VmVoaWNsZVN0YXR1cyghMSk7InZkcCI9PWQucGFnZUlkJiYoMDwkKCIjdG9wY2FyaWQiKS5sZW5ndGgmJiIiIT0kKCIjdG9wY2FyaWQiKS52YWwoKSYmIjAiIT0kKCIjdG9wY2FyaWQiKS52YWwoKT9oLmdldFZlaGljbGVKU09OKCQoIiN0b3BjYXJpZCIpLnZhbCgpLCJhc2NVcGRhdGVUb3BDYXJEYXRhIik6YXNjVXBkYXRlVG9wQ2FyRGF0YSghMSkpO3NldFRpbWVvdXQoZnVuY3Rpb24oKXskKGZ1bmN0aW9uKGIpe2guc2V0RGlnaXRhbERhdGEoImFzY19wYWdldmlldyIse30pfSl9LDFFMyk7JC5lYWNoKGssZnVuY3Rpb24oYixhKXtoLmJpbmRFbGVtZW50cyhiLAphKX0sITEpOyQoIi5yZXZlYWwtbW9kYWwiKS5vbmUoInBvcHVwaXplci5vbk9wZW4iLGZ1bmN0aW9uKGIpe2guc2V0RGlnaXRhbERhdGEoImFzY19zcGVjaWFsX29mZmVyIiwkKGIudGFyZ2V0KSk7aC5iaW5kRWxlbWVudHMoImFzY19mb3JtX2VuZ2FnZW1lbnQiLFskKGIudGFyZ2V0KS5maW5kKCJmb3JtIGlucHV0LCBmb3JtIHNlbGVjdCwgZm9ybSB0ZXh0YXJlYSIpXSl9KTtzZXRUaW1lb3V0KCgpPT57JCgiYVtkYXRhLWxlYWQtdHJpZ2dlcj0nRGVhbGVyQXBwb2ludG1lbnQnXSIpLm9uKCJjbGljayIsZnVuY3Rpb24oKXtoLnNldERpZ2l0YWxEYXRhKCJhc2Nfc3BlY2lhbF9vZmZlciIsJCgiI21vZGFsRGVhbGVyQXBwb2ludG1lbnQiKSl9KTskKCJhW2RhdGEtbGVhZC10cmlnZ2VyPSdQYXlwYWxQYXltZW50J10iKS5vbigiY2xpY2siLGZ1bmN0aW9uKCl7aC5zZXREaWdpdGFsRGF0YSgiYXNjX3NwZWNpYWxfb2ZmZXIiLCQoIiNtb2RhbFBheXBhbFBheW1lbnQiKSl9KX0sMUUzKTsKMDwkKCIjZmx0U29ydElkIikubGVuZ3RoJiYoYXNjTGFzdFNlYXJjaEZpbHRlclNvcnQ9JCgiI2ZsdFNvcnRJZCAuZGl2QWN0aW9uV3JhcHBlciAuZGl2TGFiZWwiKS5odG1sKCkpO2lmKCJ1bmRlZmluZWQiIT09dHlwZW9mIHdpbmRvdy5BYnN0cmFjdFVzZWRTcnBPYmplY3Qpe3ZhciBlPW5ldyBBYnN0cmFjdFVzZWRTcnBPYmplY3Qoe25hbWU6ImQyY19ob25kYV9ndG0ifSk7ZS5hZGRVc2VkU3JwRXZlbnRPYnNlcnZlcigicHJveHkiLGZ1bmN0aW9uKGIpe2lmKCJ1bmRlZmluZWQiIT09dHlwZW9mIGIuY21kJiYicmVxdWVzdCI9PT1iLmNtZCYmITEhPT1iLmRhdGEpe2xldCBhPWIuZGF0YS5maWx0ZXJTdGF0ZS5maWx0ZXJTZWFyY2g7c2V0VGltZW91dChmdW5jdGlvbigpe2EucmVzdWx0cz1iLmRhdGEuZmlsdGVyU3RhdGUuY291bnRTZWFyY2hSZXN1bHRzO2EudHlwZWRTZWFyY2g9Yi5kYXRhLmZpbHRlclN0YXRlLnR5cGVkU2VhcmNoO2EuZXZlbnRfYWN0aW9uX3Jlc3VsdD0ic2VhcmNoIjsKYS5ldmVudF9hY3Rpb249InNlYXJjaCI7YS5maWx0ZXJJbmZvPWFzY0xhc3RGaWx0ZXJDbGljazthc2NMYXN0RmlsdGVyQ2xpY2s9ITE7T2JqZWN0LmtleXMoYSkuaW5jbHVkZXMoInNvcnQiKSYmYXNjTGFzdFNlYXJjaEZpbHRlclNvcnQhPWEuc29ydFswXSYmKGFzY0xhc3RTZWFyY2hGaWx0ZXJTb3J0PWEuc29ydFswXSxhLmV2ZW50X2FjdGlvbj0ic29ydCIpO2guc2V0RGlnaXRhbERhdGEoImFzY19lbGVtZW50X2NvbmZpZ3VyYXRpb24iLGEpfSwxMDApfX0pO2UuaW5pdFVzZWRTcnBPYnNlcnZlcigpfSQoZG9jdW1lbnQpLm9uKCJ1c2VkU3JwRmlsdGVycy5vbkNoYW5nZSIsImJvZHkiLChiLGEpPT57Yj0kKCIjIithLmlkKTtiPSQoIi5mbHRUaXRsZSIsYikudGV4dCgpO2xldCBjPWEudmFsdWU7dmFyIGY9IiI7bGV0IG09InRleHRfc2VhcmNoIjthLnZhbHVlJiZhLnZhbHVlLnRvU3RyaW5nKCkuaW5jbHVkZXMoIjo6Iik\/KG09ImJ1dHRvbiIsZj1hLnZhbHVlLnNwbGl0KCI6OiIpLAphLnZhbHVlPWZbMF0sZj1mWzFdKTphLnZhbHVlJiZhLnZhbHVlLnRvU3RyaW5nKCkuaW5jbHVkZXMoIiwiKSYmKG09InJhbmdlX3NsaWRlciIpO2FzY0xhc3RGaWx0ZXJDbGljaz17aWQ6YS5pZCx0aXRsZTphLmxhYmVsLHZhbHVlOmEudmFsdWUsb3JnX3ZhbHVlOmMsc3RhdGU6Zix0eXBlOm0sbGFiZWw6Yn19KTskKCJib2R5Iikub24oImVtYWlsSGFuZGxlci5lbWFpbFNlbnQiLGZ1bmN0aW9uKGIsYSl7Y29uc29sZS5sb2coIkQyQVNDIEVtYWlsIFNlbnQgVHJpZ2dlciIsYixhKTtpZih2b2lkIDAhPT1hLmRldGFpbC5sZWFkVHlwZSl7Yj1hLmRldGFpbC5sZWFkVHlwZTtpZihiLmluY2x1ZGVzKCJMZWFkOiBSZXF1ZXN0IGZvciBmaW5hbmNpbmcgKE11bHRpc3RlcCkiKXx8Yi5pbmNsdWRlcygiTGVhZCA6IERlbWFuZGUgZGUgZmluYW5jZW1lbnQgKFBsdXMiKSlyZXR1cm4hMTtiLmluY2x1ZGVzKCJMZWFkIDogRGVtYW5kZSBkZSB2YWxldXIiKSYmKGI9IkxlYWQgOiBEZW1hbmRlIGRlIHZhbGV1ciBkJ2VjaGFuZ2UiKTsKYi50cmltKCk7YS5kZXRhaWwubGVhZFR5cGU9Yn12b2lkIDAhPT1hLmRldGFpbC5sZWFkVHlwZSYmIiIhPWEuZGV0YWlsLmxlYWRUeXBlfHx2b2lkIDA9PT1hLmRldGFpbC5tYWlsSWR8fChhLmRldGFpbC5sZWFkVHlwZT1kMmFzY1Jlc29sdmVMZWFkVHlwZShkLmZvcm1NYXAsYS5kZXRhaWwubWFpbElkKSk7YS5kZXRhaWwubGVhZE5hbWVBcnI9ZC5mb3JtTWFwO3ZvaWQgMD09PWEuZGV0YWlsLmNvbmZpcm1fZW1haWwmJihhLmRldGFpbC5jb25maXJtX2VtYWlsPSIiKTt2b2lkIDA9PT1hLmRldGFpbC5jb25maXJtX3Bob25lX251bWJlciYmKGEuZGV0YWlsLmNvbmZpcm1fcGhvbmVfbnVtYmVyPSIiKTtQcm9taXNlLmFsbChbaC5oYXNoVGV4dChhLmRldGFpbC5jb25maXJtX2VtYWlsKSxoLmhhc2hUZXh0KGEuZGV0YWlsLmNvbmZpcm1fcGhvbmVfbnVtYmVyKV0pLnRoZW4oYz0+e3ZhciBbZixtXT1jO2EuZGV0YWlsLmNvbmZpcm1fZW1haWw9ZjthLmRldGFpbC5jb25maXJtX3Bob25lX251bWJlcj0KbX0pO3ZvaWQgMCE9PWFzY1RvcENhckRldGFpbHMubWFrZSYmIiIhPWFzY1RvcENhckRldGFpbHMubWFrZXx8dm9pZCAwPT09YS5kZXRhaWwubWFrZXx8IiI9PWEuZGV0YWlsLm1ha2V8fChhLmRldGFpbC52Y2F0ZWdvcnk9YS5kZXRhaWwuY29uZGl0aW9uLGEuZGV0YWlsLnZlcnNpb249YS5kZXRhaWwudHJpbSxhLmRldGFpbC5ib2R5VHlwZUlEPWEuZGV0YWlsLnRyaW0sYS5kZXRhaWwuY29sb3I9IiIsYS5kZXRhaWwudmNhcmJ1cmFudD0iIixhLmRldGFpbC5kYXRlX2xpc3Rpbmc9IiIsYXNjVXBkYXRlVG9wQ2FyRGF0YShhLmRldGFpbCkpO3NldFRpbWVvdXQoZnVuY3Rpb24oKXtoLnNldERpZ2l0YWxEYXRhKCJhc2NfZm9ybV9zdWJtaXNzaW9uIixhLmRldGFpbCl9LDI1MCl9KTskKCIjU2xpZGVXaWRnZXRGb3JtIGEuYnRuLWRlZmF1bHQiKS5vbigiY2xpY2siLGZ1bmN0aW9uKCl7bGV0IGI9ZDJhc2NSZXNvbHZlTGVhZFR5cGUoZC5mb3JtTWFwLCJTbGlkZVdpZGdldEZvcm0iKTtoLnNldERpZ2l0YWxEYXRhKCJhc2NfZm9ybV9zdWJtaXNzaW9uIiwKe2RlcGFydG1lbnQ6InNhbGVzIixsZWFkVHlwZTpiLGN1cnJlbnRVUkw6IiJ9KX0pOyQoZG9jdW1lbnQpLm9uKCJmb3JtLnN0ZXAiLCIjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSIsZnVuY3Rpb24oYil7aC5zZXREaWdpdGFsRGF0YSgiYXNjX3JldGFpbF9wcm9jZXNzIixiKX0pOyQoZG9jdW1lbnQpLm9uKCJtdWx0aUZvcm1GaW5hbmNlU3VibWl0Iixkb2N1bWVudC5ib2R5LGZ1bmN0aW9uKGIpe2I9ZDJhc2NSZXNvbHZlTGVhZFR5cGUoZC5mb3JtTWFwLCJDcmVkaXRNdWx0aXN0ZXBSZXF1ZXN0Iik7aC5zZXREaWdpdGFsRGF0YSgiYXNjX2Zvcm1fc3VibWlzc2lvbiIse2RlcGFydG1lbnQ6ImZpbmFuY2UiLGxlYWRUeXBlOmIsY3VycmVudFVSTDoiIn0pfSl9LDFFMyk7d2luZG93LmQyYXNjPWg7d2luZG93LmQyYXNjRGF0YU1hcD1nfTsKLyoqIC9tL2pzL2pxdWVyeS5yZXZlYWwuanMgKiovCnZhciBfX19kMmNfanF1ZXJ5cmV2ZWFsanNfY19vbj0iMjAyNS0wNS0yMyAxNzowNjo0MiI7J3VzZSBzdHJpY3QnO3ZhciBfX19kMmNfanF1ZXJ5cmV2ZWFsanNfY19vbj0iMjAyNC0wNS0xNCAxMDozMDowNSI7InVzZSBzdHJpY3QiOwooZnVuY3Rpb24oYil7YigiYm9keSIpLm9uKCJjbGljayIsImFbZGF0YS1yZXZlYWwtaWRdIixmdW5jdGlvbihhKXthLnByZXZlbnREZWZhdWx0KCk7YT1iKHRoaXMpLmF0dHIoImRhdGEtcmV2ZWFsLWlkIik7YigiIyIrYSkucmV2ZWFsKGIodGhpcykuZGF0YSgpKX0pO2IuZm4ucmV2ZWFsPWZ1bmN0aW9uKGEpe2E9Yi5leHRlbmQoe30se2FuaW1hdGlvbjoiZmFkZUFuZFBvcCIsYW5pbWF0aW9uc3BlZWQ6MzAwLGNsb3Nlb25iYWNrZ3JvdW5kY2xpY2s6ITAsZGlzbWlzc21vZGFsY2xhc3M6ImNsb3NlLXJldmVhbC1tb2RhbCIsY2xvc2VvbmVzY2FwZTohMH0sYSk7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2Z1bmN0aW9uIGYoKXsib2JqZWN0Ij09dHlwZW9mIHBvcHVwU3VwZXJ2aXNvciYmc2V0VGltZW91dChwb3B1cFN1cGVydmlzb3IucmVwb3NpdGlvbiwxRTMpO2c9ITF9dmFyIGM9Yih0aGlzKSxoPXBhcnNlSW50KGMuY3NzKCJ0b3AiKSksbT1jLmhlaWdodCgpK2gsZz0hMSwKZD1iKCIucmV2ZWFsLW1vZGFsLWJnIik7MD09ZC5sZW5ndGgmJihkPWIoJzxkaXYgY2xhc3M9InJldmVhbC1tb2RhbC1iZyIgLz4nKS5pbnNlcnRBZnRlcihjKSk7Yy5vbigicmV2ZWFsOm9wZW4iLGZ1bmN0aW9uKCl7dmFyIGs9InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3cuaW5uZXJIZWlnaHQ\/d2luZG93LmlubmVySGVpZ2h0OmIod2luZG93KS5oZWlnaHQoKSxuPWIoYykub3V0ZXJIZWlnaHQoKTtiKGMpLm9mZnNldCgpO2IoZG9jdW1lbnQpLnNjcm9sbFRvcCgpO3ZhciBsPS9Nb2JpLy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpPzU6MjAsZT0oay1uKS8yK2w7ZT1lPGx8fGs8bj9sOmU7MDxiKCIjZDJjX2JvZHlDb250ZW50IikubGVuZ3RoJiYoZS09YigiI2QyY19ib2R5Q29udGVudCIpLm9mZnNldCgpLnRvcCk7MDxiKCIuc2xvdE1hY2hpbmVDb250YWluZXIiKS5sZW5ndGgmJmIoIi5zbG90TWFjaGluZUNvbnRhaW5lciIpLnNob3coKTtkLm9mZigiY2xpY2subW9kYWxFdmVudCIpOwpiKCIuIithLmRpc21pc3Ntb2RhbGNsYXNzKS5vZmYoImNsaWNrLm1vZGFsRXZlbnQiKTtnfHwoZz0hMCwiZmFkZUFuZFBvcCI9PWEuYW5pbWF0aW9uJiYoYy5jc3Moe3RvcDpiKGRvY3VtZW50KS5zY3JvbGxUb3AoKS1tLG9wYWNpdHk6MCx2aXNpYmlsaXR5OiJ2aXNpYmxlIn0pLGQuZmFkZUluKGEuYW5pbWF0aW9uc3BlZWQvMiksYy5kZWxheShhLmFuaW1hdGlvbnNwZWVkLzIpLmFuaW1hdGUoe3RvcDpiKGRvY3VtZW50KS5zY3JvbGxUb3AoKStlKyJweCIsb3BhY2l0eToxfSxhLmFuaW1hdGlvbnNwZWVkLGYoKSkpLCJmYWRlIj09YS5hbmltYXRpb24mJihjLmNzcyh7b3BhY2l0eTowLHZpc2liaWxpdHk6InZpc2libGUiLHRvcDpiKGRvY3VtZW50KS5zY3JvbGxUb3AoKStlfSksZC5mYWRlSW4oYS5hbmltYXRpb25zcGVlZC8yKSxjLmRlbGF5KGEuYW5pbWF0aW9uc3BlZWQvMikuYW5pbWF0ZSh7b3BhY2l0eToxfSxhLmFuaW1hdGlvbnNwZWVkLGYoKSkpLCJub25lIj09YS5hbmltYXRpb24mJgooYy5jc3Moe3Zpc2liaWxpdHk6InZpc2libGUiLHRvcDpiKGRvY3VtZW50KS5zY3JvbGxUb3AoKStlfSksZC5jc3Moe2Rpc3BsYXk6ImJsb2NrIn0pLGYoKSksImV4dGVybmFsQW5pbWF0aW9uIj09YS5hbmltYXRpb24mJihjLmNzcyh7dmlzaWJpbGl0eToidmlzaWJsZSIsdG9wOmIoZG9jdW1lbnQpLnNjcm9sbFRvcCgpK2UsZGlzcGxheToibm9uZSJ9KS5zaG93KCksZC5jc3Moe2Rpc3BsYXk6ImJsb2NrIn0pLGYoKSkpO2Mub2ZmKCJyZXZlYWw6b3BlbiIpfSk7Yy5vbigicmV2ZWFsOmNsb3NlIixmdW5jdGlvbigpe2IoImJvZHkiKS5jc3MoIm92ZXJmbG93IiwiYXV0byIpO2IoIi5zbG90TWFjaGluZUNvbnRhaW5lciIpLmhpZGUoKTtpZighZyYmKGc9ITAsImZhZGVBbmRQb3AiPT1hLmFuaW1hdGlvbiYmKGQuZGVsYXkoYS5hbmltYXRpb25zcGVlZCkuZmFkZU91dChhLmFuaW1hdGlvbnNwZWVkKSxjLmFuaW1hdGUoe3RvcDpiKGRvY3VtZW50KS5zY3JvbGxUb3AoKS1tKyJweCIsb3BhY2l0eTowfSwKYS5hbmltYXRpb25zcGVlZC8yLGZ1bmN0aW9uKCl7Yy5jc3Moe3RvcDpoLG9wYWNpdHk6MSx2aXNpYmlsaXR5OiJoaWRkZW4ifSk7ZigpfSkpLCJmYWRlIj09YS5hbmltYXRpb24mJihkLmRlbGF5KGEuYW5pbWF0aW9uc3BlZWQpLmZhZGVPdXQoYS5hbmltYXRpb25zcGVlZCksYy5hbmltYXRlKHtvcGFjaXR5OjB9LGEuYW5pbWF0aW9uc3BlZWQsZnVuY3Rpb24oKXtjLmNzcyh7b3BhY2l0eToxLHZpc2liaWxpdHk6ImhpZGRlbiIsdG9wOmh9KTtmKCl9KSksIm5vbmUiPT1hLmFuaW1hdGlvbiYmKGMuY3NzKHt2aXNpYmlsaXR5OiJoaWRkZW4iLHRvcDpofSksZC5jc3Moe2Rpc3BsYXk6Im5vbmUifSkpLCJleHRlcm5hbEFuaW1hdGlvbiI9PWEuYW5pbWF0aW9uKSljLmhpZGUoKS5vbmUoImFuaW1hdGlvbkVuZCIsZnVuY3Rpb24oKXtiKHRoaXMpLmNzcyh7dmlzaWJpbGl0eToiaGlkZGVuIix0b3A6aCxkaXNwbGF5OiJub25lIn0pO2QuY3NzKHtkaXNwbGF5OiJub25lIn0pfSk7Yy5vZmYoInJldmVhbDpjbG9zZSIpOwoidW5kZWZpbmVkIiE9dHlwZW9mIGEuY2xvc2VkJiZhLmNsb3NlZCgpfSk7Yy50cmlnZ2VyKCJyZXZlYWw6b3BlbiIpO2IoIi4iK2EuZGlzbWlzc21vZGFsY2xhc3MpLm9uKCJjbGljay5tb2RhbEV2ZW50IHRvdWNoc3RhcnQiLGZ1bmN0aW9uKCl7Yy50cmlnZ2VyKCJyZXZlYWw6Y2xvc2UiKX0pO2EuY2xvc2VvbmJhY2tncm91bmRjbGljayYmKGQuY3NzKHtjdXJzb3I6InBvaW50ZXIifSksZC5vbigiY2xpY2subW9kYWxFdmVudCIsZnVuY3Rpb24oKXtjLnRyaWdnZXIoInJldmVhbDpjbG9zZSIpfSkpO2lmKGEuY2xvc2VvbmVzY2FwZSliKCJib2R5Iikub24oImtleXVwIixmdW5jdGlvbihrKXsyNz09PWsud2hpY2gmJmMudHJpZ2dlcigicmV2ZWFsOmNsb3NlIil9KX0pfX0pKGpRdWVyeSk7Ci8qKiAvbS9qcy9wcm9tb19keW5hbWljX2ZpbGVfZnIuanMgKiovCihmdW5jdGlvbigpe30pOwovKiogL20vanMvdHJhZGVJbkJhci5qcyAqKi8KdmFyIF9fX2QyY190cmFkZUluQmFyanNfY19vbj0iMjAyNi0wMS0yNyAxMDozMDowOSI7J3VzZSBzdHJpY3QnO2Z1bmN0aW9uIHRyYWRlSW5CYXJJbml0aWFsaXplKCl7Zm9yKHZhciBwPSQoJ3NlbGVjdFtuYW1lPSJ0cmFkaW5NYWtlIl0nKSxrPSQoJ3NlbGVjdFtuYW1lPSJ0cmFkaW5Nb2RlbCJdJyksbD0kKCdzZWxlY3RbbmFtZT0idHJhZGluVHJpbSJdJykscT0kKCdzZWxlY3RbbmFtZT0idHJhZGluWWVhciJdJyksZz0kKCdpbnB1dFtuYW1lPSJ0cmFkaW5WaW4iXScpLHU9e30sdz0obmV3IERhdGUpLmdldEZ1bGxZZWFyKCk7MTk5OTx3O3ctLSk7cC5vbigiZm9jdXMiLGZ1bmN0aW9uKCl7cC5jc3MoImJhY2tncm91bmQiLCIjZmZmZmZmIil9KTtrLm9uKCJmb2N1cyIsZnVuY3Rpb24oKXtrLmNzcygiYmFja2dyb3VuZCIsIiNmZmZmZmYiKX0pO2wub24oImZvY3VzIixmdW5jdGlvbigpe2wuY3NzKCJiYWNrZ3JvdW5kIiwiI2ZmZmZmZiIpfSk7cS5vbigiZm9jdXMiLGZ1bmN0aW9uKCl7cS5jc3MoImJhY2tncm91bmQiLCIjZmZmZmZmIil9KTt2YXIgaD0kKCJib2R5IikuaGFzQ2xhc3MoIkVOR0xJU0giKT8KIkVOR0xJU0giOiJGUkVOQ0giLEE9JzxvcHRpb24gdmFsdWU9IiI+JysoIkVOR0xJU0giPT1oPyJNb2RlbCI6Ik1vZCZlZ3JhdmU7bGUiKSsiPC9vcHRpb24+IixEPSc8b3B0aW9uIHZhbHVlPSIiPicrKCJFTkdMSVNIIj09aD8iVHJpbSI6IlZlcnNpb24iKSsiPC9vcHRpb24+IixGPSc8b3B0aW9uIHZhbHVlPSIiPicrKCJFTkdMSVNIIj09aD8iWWVhciI6IkFubiZlYWN1dGU7ZSIpKyI8L29wdGlvbj4iOyQoZG9jdW1lbnQpLm9uKCJ0cmFkZUluQmFyLmNsb25lZCIsZnVuY3Rpb24oKXtwPSQoJ3NlbGVjdFtuYW1lPSJ0cmFkaW5NYWtlIl0nKTtrPSQoJ3NlbGVjdFtuYW1lPSJ0cmFkaW5Nb2RlbCJdJyk7bD0kKCdzZWxlY3RbbmFtZT0idHJhZGluVHJpbSJdJyk7cT0kKCdzZWxlY3RbbmFtZT0idHJhZGluWWVhciJdJyk7Zz0kKCdpbnB1dFtuYW1lPSJ0cmFkaW5WaW4iXScpO3AudmFsKHAudmFsKCkpO3EudmFsKHEudmFsKCkpO2sudmFsKGsudmFsKCkpO2wudmFsKGwudmFsKCkpfSk7CnAub24oImNoYW5nZSIsZnVuY3Rpb24oKXtwLnZhbCgkKHRoaXMpLnZhbCgpKTtxLmVtcHR5KCk7ay5lbXB0eSgpO2wuZW1wdHkoKTsiIiE9dGhpcy52YWx1ZSYmJC5hamF4KHt0eXBlOiJQT1NUIix1cmw6KCJFTkdMSVNIIj09aD8iL2VuLyI6Ii9mci8iKSsiL2FqYXgvZ2V0VHJhZGVJbkJhckRhdGE\/d3N3aWR0aD0wIixkYXRhVHlwZToianNvbiIsZGF0YTp7bGFuZ3VhZ2U6aCxtYWtlOnRoaXMudmFsdWV9LHN1Y2Nlc3M6ZnVuY3Rpb24oYil7dT1iO3EuYXBwZW5kKEYpO2Zvcih2YXIgZiBpbiBiKXEuYXBwZW5kKCc8b3B0aW9uIHZhbHVlPSInK2YrJyI+JytmKyI8L29wdGlvbj4iKTtnJiZnLmZpcnN0KCkmJiIiIT1nLmZpcnN0KCkuYXR0cigidmluWWVhciIpJiYocS52YWwoZy5maXJzdCgpLmF0dHIoInZpblllYXIiKSkscS5maXJzdCgpLnRyaWdnZXIoImNoYW5nZSIpKX19KX0pO3Eub24oImNoYW5nZSIsZnVuY3Rpb24oKXt2YXIgYj0kKHRoaXMpLnZhbCgpLApmPXAudmFsKCk7cS52YWwoJCh0aGlzKS52YWwoKSk7ay5lbXB0eSgpO2wuZW1wdHkoKTtpZigxIT0kKCJpbnB1dFtuYW1lPW5vQ0JCXSIpLnZhbCgpKSQuYWpheCh7dHlwZToiUE9TVCIsdXJsOigiRU5HTElTSCI9PWg\/Ii9lbi8iOiIvZnIvIikrIi9hamF4L2dldFRyYWRlSW5CYXJNb2RlbD93c3dpZHRoPTAiLGRhdGFUeXBlOiJqc29uIixkYXRhOntsYW5ndWFnZTpoLG1ha2U6Zix5ZWFyOmJ9LHN1Y2Nlc3M6ZnVuY3Rpb24oYSl7Y29uc29sZS5sb2coYSk7ay5hcHBlbmQoQSk7Zm9yKHZhciBkPTA7ZDxhLmxlbmd0aDtkKyspe3ZhciBjPWFbZF0ubmFtZTtrLmFwcGVuZCgnPG9wdGlvbiB2YWx1ZT0iJytjKyciPicrYysiPC9vcHRpb24+Iil9ZyYmZy5maXJzdCgpJiYiIiE9Zy5maXJzdCgpLmF0dHIoInZpbk1vZGVsIikmJihrLnZhbChnLmZpcnN0KCkuYXR0cigidmluTW9kZWwiKSksay5maXJzdCgpLnRyaWdnZXIoImNoYW5nZSIpKTtnLmZpcnN0KCkuYXR0cigidmluWWVhciIsCiIiKTtnLmZpcnN0KCkuYXR0cigidmluTW9kZWwiLCIiKX19KTtlbHNlIGlmKDE9PSQoImlucHV0W25hbWU9aXNBY2N1dHJhZGVdIikudmFsKCkpJC5hamF4KHt0eXBlOiJQT1NUIix1cmw6KCJFTkdMSVNIIj09aD8iL2VuLyI6Ii9mci8iKSsiL2FqYXgvZ2V0VHJhZGVJbk1uZ01vZGVsP3dzd2lkdGg9MCIsZGF0YVR5cGU6Impzb24iLGRhdGE6e2xhbmd1YWdlOmgsbWFrZTpmLHllYXI6Yn0sc3VjY2VzczpmdW5jdGlvbihhKXtjb25zb2xlLmxvZyhhKTtrLmFwcGVuZChBKTtmb3IodmFyIGQ9MDtkPGEubGVuZ3RoO2QrKyl7dmFyIGM9YVtkXS5uYW1lO2suYXBwZW5kKCc8b3B0aW9uIHZhbHVlPSInK2MrJyI+JytjKyI8L29wdGlvbj4iKX1nJiZnLmZpcnN0KCkmJiIiIT1nLmZpcnN0KCkuYXR0cigidmluTW9kZWwiKSYmKGsudmFsKGcuZmlyc3QoKS5hdHRyKCJ2aW5Nb2RlbCIpKSxrLmZpcnN0KCkudHJpZ2dlcigiY2hhbmdlIikpO2cuZmlyc3QoKS5hdHRyKCJ2aW5ZZWFyIiwKIiIpO2cuZmlyc3QoKS5hdHRyKCJ2aW5Nb2RlbCIsIiIpfX0pO2Vsc2UgaWYoMDxPYmplY3Qua2V5cyh1KS5sZW5ndGgmJiIiIT10aGlzLnZhbHVlKXtrLmFwcGVuZChBKTtmPXt9O2Zvcih2YXIgZT0wO2U8dVtiXS5sZW5ndGg7ZSsrKSJ1bmRlZmluZWQiPT10eXBlb2YgZlt1W2JdW2VdLm1vZGVsXSYmKGsuYXBwZW5kKCc8b3B0aW9uIHZhbHVlPSInK3VbYl1bZV0ubW9kZWwrJyI+Jyt1W2JdW2VdLm1vZGVsKyI8L29wdGlvbj4iKSxmW3VbYl1bZV0ubW9kZWxdPXVbYl1bZV0ubW9kZWwpfX0pO2sub24oImNoYW5nZSIsZnVuY3Rpb24oYil7dmFyIGY9cC52YWwoKTtiPXEudmFsKCk7dmFyIGU9JCh0aGlzKS52YWwoKTtrLnZhbCgkKHRoaXMpLnZhbCgpKTtsLmVtcHR5KCk7aWYoMSE9JCgiaW5wdXRbbmFtZT1ub0NCQl0iKS52YWwoKSkkLmFqYXgoe3R5cGU6IlBPU1QiLHVybDooIkVOR0xJU0giPT1oPyIvZW4vIjoiL2ZyLyIpKyIvYWpheC9nZXRUcmFkZUluQmFyVHJpbT93c3dpZHRoPTAiLApkYXRhVHlwZToianNvbiIsZGF0YTp7bGFuZ3VhZ2U6aCxtYWtlOmYsbW9kZWw6ZSx5ZWFyOmJ9LHN1Y2Nlc3M6ZnVuY3Rpb24oYSl7Y29uc29sZS5sb2coYSk7bC5hcHBlbmQoJzxvcHRpb24gdmFsdWU9IiI+JysoIkVOR0xJU0giPT1oPyJUcmltIjoiVmVyc2lvbiIpKyI8L29wdGlvbj4iKTtmb3IodmFyIGQ9MCxjPTA7YzxhLmxlbmd0aDtjKyspe3ZhciBtPWFbY10uc3R5bGUrIiAiK2FbY10uc2VyaWVzLHg9YVtjXS51dmM7ZCsrO2wuYXBwZW5kKCc8b3B0aW9uIGRhdGEtc3R5bGVpZD0iJyt4KyciIHZhbHVlPSInK20rJyI+JyttKyI8L29wdGlvbj4iKX0xPT1kJiYkKCJvcHRpb246ZXEoMSkiLGwpLnByb3AoInNlbGVjdGVkIiwic2VsZWN0ZWQiKX19KTtlbHNlIGlmKDE9PSQoImlucHV0W25hbWU9aXNBY2N1dHJhZGVdIikudmFsKCkpJC5hamF4KHt0eXBlOiJQT1NUIix1cmw6KCJFTkdMSVNIIj09aD8iL2VuLyI6Ii9mci8iKSsiL2FqYXgvZ2V0VHJhZGVJbk1uZ1RyaW0\/d3N3aWR0aD0wIiwKZGF0YVR5cGU6Impzb24iLGRhdGE6e2xhbmd1YWdlOmgsbWFrZTpmLG1vZGVsOmUseWVhcjpifSxzdWNjZXNzOmZ1bmN0aW9uKGEpe2NvbnNvbGUubG9nKGEpO2wuYXBwZW5kKCc8b3B0aW9uIHZhbHVlPSIiPicrKCJFTkdMSVNIIj09aD8iVHJpbSI6IlZlcnNpb24iKSsiPC9vcHRpb24+Iik7Zm9yKHZhciBkPTAsYz0wO2M8YS5sZW5ndGg7YysrKXt2YXIgbT1hW2NdLm5hbWUseD1hW2NdLmlkO2QrKztsLmFwcGVuZCgnPG9wdGlvbiBkYXRhLXN0eWxlaWQ9IicreCsnIiB2YWx1ZT0iJyttKyciPicrbSsiPC9vcHRpb24+Iil9MT09ZCYmJCgib3B0aW9uOmVxKDEpIixsKS5wcm9wKCJzZWxlY3RlZCIsITApfX0pO2Vsc2UgaWYoMDxPYmplY3Qua2V5cyh1KS5sZW5ndGgmJiIiIT10aGlzLnZhbHVlKXtsLmFwcGVuZChEKTtmb3IoZT1mPTA7ZTx1W2JdLmxlbmd0aDtlKyspdVtiXVtlXS5tb2RlbD09dGhpcy52YWx1ZSYmKGYrKyxsLmFwcGVuZCgnPG9wdGlvbiBkYXRhLXN0eWxlaWQ9IicrCnVbYl1bZV0uc3R5bGVpZCsnIiB2YWx1ZT0iJyt1W2JdW2VdLnRyaW0rJyI+Jyt1W2JdW2VdLnRyaW0rIjwvb3B0aW9uPiIpKTsxPT1mJiYkKCJvcHRpb246ZXEoMSkiLGwpLnByb3AoInNlbGVjdGVkIiwic2VsZWN0ZWQiKX19KTtsLm9uKCJjaGFuZ2UiLGZ1bmN0aW9uKCl7bC52YWwoJCh0aGlzKS52YWwoKSl9KTt2YXIgQj0hMTtpZigxIT0kKCJpbnB1dFtuYW1lPW5vQ0JCXSIpLnZhbCgpKWcub24oImtleXVwIixmdW5jdGlvbigpe2cudmFsKCQodGhpcykudmFsKCkpOyQodGhpcykudmFsKCkmJjE3PD0kKHRoaXMpLnZhbCgpLmxlbmd0aCYmIUImJihCPSEwLCQuYWpheCh7dHlwZToiUE9TVCIsdXJsOigkKCJib2R5IikuaGFzQ2xhc3MoIkVOR0xJU0giKT8iL2VuLyI6Ii9mci8iKSsiL2FqYXgvZ2V0VHJhZGVJbkJhclZhbHVlP3dzd2lkdGg9MCIsZGF0YVR5cGU6Impzb24iLGRhdGE6e3ZpbjokKHRoaXMpLnZhbCgpLHByb3ZpbmNlOiQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9ImRlYWxlclByb3ZpbmNlVHJhZGVJbiJdJykudmFsKCl9LApzdWNjZXNzOmZ1bmN0aW9uKGIpe2ImJmIubW9kZWwmJmIubW9kZWxfeWVhcj8oZy5maXJzdCgpLmF0dHIoInZpbk1vZGVsIixiLm1vZGVsKSxnLmZpcnN0KCkuYXR0cigidmluWWVhciIsYi5tb2RlbF95ZWFyKSxwLnZhbChiLm1ha2UpLHAuZmlyc3QoKS50cmlnZ2VyKCJjaGFuZ2UiKSxyZW1vdmVSZWRXYXJuaW5nTWVzc2FnZSgpLHN3aXRjaFRvVmVoaWNsZUFuZEZvY3VzVHJpbSgpKTphZGRSZWRXYXJuaW5nTWVzc2FnZSgkKCJib2R5IikuaGFzQ2xhc3MoIkVOR0xJU0giKT8iVW5yZWNvZ25pemVkIFZJTiI6Ik5JViBub24gcmVjb25udSIpfSxjb21wbGV0ZTpmdW5jdGlvbihiKXtCPSExfX0pKX0pO2Vsc2UgaWYoMT09JCgiaW5wdXRbbmFtZT1pc0FjY3V0cmFkZV0iKS52YWwoKSlnLm9uKCJrZXl1cCIsZnVuY3Rpb24oKXtnLnZhbCgkKHRoaXMpLnZhbCgpKTskKHRoaXMpLnZhbCgpJiYxNzw9JCh0aGlzKS52YWwoKS5sZW5ndGgmJiFCJiYoQj0hMCwkLmFqYXgoe3R5cGU6IlBPU1QiLAp1cmw6KCQoImJvZHkiKS5oYXNDbGFzcygiRU5HTElTSCIpPyIvZW4vIjoiL2ZyLyIpKyIvYWpheC9nZXRUcmFkZUluTW5nVmluP3dzd2lkdGg9MCIsZGF0YVR5cGU6Impzb24iLGRhdGE6e3ZpbjokKHRoaXMpLnZhbCgpLHByb3ZpbmNlOiQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9ImRlYWxlclByb3ZpbmNlVHJhZGVJbiJdJykudmFsKCl9LHN1Y2Nlc3M6ZnVuY3Rpb24oYil7YiYmYi5tb2RlbCYmYi55ZWFyPyhnLmZpcnN0KCkuYXR0cigidmluTW9kZWwiLGIubW9kZWwpLGcuZmlyc3QoKS5hdHRyKCJ2aW5ZZWFyIixiLnllYXIpLHAudmFsKGIubWFrZSkscC5maXJzdCgpLnRyaWdnZXIoImNoYW5nZSIpLHJlbW92ZVJlZFdhcm5pbmdNZXNzYWdlKCksc3dpdGNoVG9WZWhpY2xlQW5kRm9jdXNUcmltKCkpOmFkZFJlZFdhcm5pbmdNZXNzYWdlKCQoImJvZHkiKS5oYXNDbGFzcygiRU5HTElTSCIpPyJVbnJlY29nbml6ZWQgVklOIjoiTklWIG5vbiByZWNvbm51Iil9LApjb21wbGV0ZTpmdW5jdGlvbihiKXtCPSExfX0pKX0pO3c9Z2V0VXJsVmFycygpO2Zvcih2YXIgRz1PYmplY3Qua2V5cyh3KSxIPUcubGVuZ3RoLEk9e307SC0tOyl7dmFyIEo9R1tIXTtJW0oudG9Mb3dlckNhc2UoKV09d1tKXX13PUk7dy50bWFrZSYmdy50bW9kZWwmJncudHllYXImJnNldFRpbWVvdXQoZnVuY3Rpb24oKXtsYXVuY2hUcmFkZUluUG9wdXAoImF1dG9tYXRpYyIpfSwxRTMpO3dbInRyYWRlLWZ1bGwiXSYmc2V0VGltZW91dChmdW5jdGlvbigpe2xhdW5jaFRyYWRlSW5Qb3B1cCgiYXV0b21hdGljIil9LDFFMyk7JCgiLnRyYWRlSW5CYXJfYnRuIikub24oImNsaWNrIixmdW5jdGlvbihiKXtiPSExOyIiPT1wLnZhbCgpJiYocC5jc3MoImJhY2tncm91bmQiLCIjRkY3RTc5IiksYj0hMCk7aWYoIiI9PWsudmFsKCl8fG51bGw9PWsudmFsKCkpay5jc3MoImJhY2tncm91bmQiLCIjRkY3RTc5IiksYj0hMDtpZigiIj09bC52YWwoKXx8bnVsbD09bC52YWwoKSlsLmNzcygiYmFja2dyb3VuZCIsCiIjRkY3RTc5IiksYj0hMDtpZigiIj09cS52YWwoKXx8bnVsbD09cS52YWwoKSlxLmNzcygiYmFja2dyb3VuZCIsIiNGRjdFNzkiKSxiPSEwOzA9PWImJmxhdW5jaFRyYWRlSW5Qb3B1cCgidHJhZGVpbmJhciIpfSk7aWYoIjEiPT0kKCIjaXNNb2JpbGUiKS52YWwoKXx8IiI9PXAudmFsKCl8fCJ1bmRlZmluZWQiPT09dHlwZW9mIHAudmFsKCl8fCIiPT1rLnZhbCgpfHwiIj09cS52YWwoKSl7dmFyIHk9JCgiI3RyYWRlSW5CYXJQb3B1cE1ha2UiKSxyPSQoIiN0cmFkZUluQmFyUG9wdXBNb2RlbCIpLHY9JCgiI3RyYWRlSW5CYXJQb3B1cFRyaW0iKSx6PSQoIiN0cmFkZUluQmFyUG9wdXBZZWFyIiksbj0kKCIjdHJhZGVJbkJhclBvcHVwTml2IiksdD17fSxFPWQyY21lZGlhLmNhcGl0YWxpc2VGaXJzdExldHRlcih3LnRtb2RlbD93LnRtb2RlbC50b0xvd2VyQ2FzZSgpOiIiKSxDPXcudHllYXI7aWYoMCE9JCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iQ0JCTU9ERUxTRUxFQ1QiXScpLnZhbCgpKSQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIC5uaXZNYWtlTW9kZWxTZWxlY3QiKS5vbigiY2hhbmdlIiwKZnVuY3Rpb24oKXsidmluIj09JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gLm5pdk1ha2VNb2RlbFNlbGVjdDpjaGVja2VkIikudmFsKCk\/KCQoIiN0cmFkZUluQmFyUG9wdXBNYWtlRGl2Q29udGFpbmVyIikuaGlkZSgpLCQoIiN0cmFkZUluQmFyUG9wdXBNb2RlbERpdkNvbnRhaW5lciIpLmhpZGUoKSwkKCIjdHJhZGVJbkJhclBvcHVwWWVhckRpdkNvbnRhaW5lciIpLmhpZGUoKSwkKCIjdHJhZGVJbkJhclBvcHVwTml2RGl2Q29udGFpbmVyIikuY3NzKCJkaXNwbGF5IiwiaW5saW5lLWJsb2NrIikpOigkKCIjdHJhZGVJbkJhclBvcHVwTml2RGl2Q29udGFpbmVyIikuaGlkZSgpLCQoIiN0cmFkZUluQmFyUG9wdXBNYWtlRGl2Q29udGFpbmVyIikuY3NzKCJkaXNwbGF5IiwiaW5saW5lLWJsb2NrIiksJCgiI3RyYWRlSW5CYXJQb3B1cE1vZGVsRGl2Q29udGFpbmVyIikuY3NzKCJkaXNwbGF5IiwiaW5saW5lLWJsb2NrIiksJCgiI3RyYWRlSW5CYXJQb3B1cFllYXJEaXZDb250YWluZXIiKS5jc3MoImRpc3BsYXkiLAoiaW5saW5lLWJsb2NrIikpOyJ1bmRlZmluZWQiIT09dHlwZW9mIHRyYWRlaW5wb3B1cGQyYyYmdHJhZGVpbnBvcHVwZDJjLnRyYWRlSW5Cb3R0b21Mb2dvSGVpZ3QoKX0pO3kub24oImNoYW5nZSIsZnVuY3Rpb24oKXt5LnZhbCgkKHRoaXMpLnZhbCgpKTt6LmVtcHR5KCk7ci5lbXB0eSgpO3YuZW1wdHkoKTsiIiE9dGhpcy52YWx1ZSYmJC5hamF4KHt0eXBlOiJQT1NUIix1cmw6KCJFTkdMSVNIIj09aD8iL2VuLyI6Ii9mci8iKSsiL2FqYXgvZ2V0VHJhZGVJbkJhckRhdGE\/d3N3aWR0aD0wIixkYXRhVHlwZToianNvbiIsZGF0YTp7bGFuZ3VhZ2U6aCxtYWtlOnRoaXMudmFsdWV9LHN1Y2Nlc3M6ZnVuY3Rpb24oYil7dD1iO3ouYXBwZW5kKEYpOyIiIT1uLmF0dHIoInZpblllYXIiKSYmKEM9bi5hdHRyKCJ2aW5ZZWFyIikpO2Zvcih2YXIgZiBpbiBiKWI9IiIsQyYmKGI9Zj09Qz8nc2VsZWN0ZWQ9InNlbGVjdGVkIic6IiIpLHouYXBwZW5kKCI8b3B0aW9uICIrCmIrJyB2YWx1ZT0iJytmKyciPicrZisiPC9vcHRpb24+Iik7QyYmKHoudHJpZ2dlcigiY2hhbmdlIiksQz0hMSl9fSl9KTt6Lm9uKCJjaGFuZ2UiLGZ1bmN0aW9uKCl7ei52YWwoJCh0aGlzKS52YWwoKSk7ci5lbXB0eSgpO3YuZW1wdHkoKTt2YXIgYj0kKHRoaXMpLnZhbCgpLGY9eS52YWwoKTtpZigxIT0kKCJpbnB1dFtuYW1lPW5vQ0JCXSIpLnZhbCgpKSQuYWpheCh7dHlwZToiUE9TVCIsdXJsOigiRU5HTElTSCI9PWg\/Ii9lbi8iOiIvZnIvIikrIi9hamF4L2dldFRyYWRlSW5CYXJNb2RlbD93c3dpZHRoPTAiLGRhdGFUeXBlOiJqc29uIixkYXRhOntsYW5ndWFnZTpoLG1ha2U6Zix5ZWFyOmJ9LHN1Y2Nlc3M6ZnVuY3Rpb24oZCl7Y29uc29sZS5sb2coZCk7ci5hcHBlbmQoQSk7Zm9yKHZhciBjPTA7YzxkLmxlbmd0aDtjKyspe3ZhciBtPWRbY10ubmFtZTtyLmFwcGVuZCgnPG9wdGlvbiB2YWx1ZT0iJyttKyciPicrbSsiPC9vcHRpb24+Iil9IiIhPQpuLmF0dHIoInZpbk1vZGVsIikmJihyLnZhbChuLmF0dHIoInZpbk1vZGVsIikpLHIudHJpZ2dlcigiY2hhbmdlIikpO24uYXR0cigidmluWWVhciIsIiIpO24uYXR0cigidmluTW9kZWwiLCIiKX19KTtlbHNlIGlmKDE9PSQoImlucHV0W25hbWU9aXNBY2N1dHJhZGVdIikudmFsKCkpJC5hamF4KHt0eXBlOiJQT1NUIix1cmw6KCJFTkdMSVNIIj09aD8iL2VuLyI6Ii9mci8iKSsiL2FqYXgvZ2V0VHJhZGVJbk1uZ01vZGVsP3dzd2lkdGg9MCIsZGF0YVR5cGU6Impzb24iLGRhdGE6e2xhbmd1YWdlOmgsbWFrZTpmLHllYXI6Yn0sc3VjY2VzczpmdW5jdGlvbihkKXtjb25zb2xlLmxvZyhkKTtyLmFwcGVuZChBKTtmb3IodmFyIGM9MDtjPGQubGVuZ3RoO2MrKyl7dmFyIG09ZFtjXS5uYW1lO3IuYXBwZW5kKCc8b3B0aW9uIHZhbHVlPSInK20rJyI+JyttKyI8L29wdGlvbj4iKX0iIiE9bi5hdHRyKCJ2aW5Nb2RlbCIpJiYoci52YWwobi5hdHRyKCJ2aW5Nb2RlbCIpKSwKci50cmlnZ2VyKCJjaGFuZ2UiKSk7bi5hdHRyKCJ2aW5ZZWFyIiwiIik7bi5hdHRyKCJ2aW5Nb2RlbCIsIiIpfX0pO2Vsc2UgaWYoMDxPYmplY3Qua2V5cyh0KS5sZW5ndGgmJiIiIT10aGlzLnZhbHVlKXtyLmFwcGVuZChBKTtmPXt9O2Zvcih2YXIgZT0wO2U8dFtiXS5sZW5ndGg7ZSsrKWlmKCJ1bmRlZmluZWQiPT10eXBlb2YgZlt0W2JdW2VdLm1vZGVsXSl7dmFyIGE9IiI7RSYmKGE9dFtiXVtlXS5tb2RlbD09RT8nc2VsZWN0ZWQ9InNlbGVjdGVkIic6IiIpO3IuYXBwZW5kKCI8b3B0aW9uICIrYSsnIHZhbHVlPSInK3RbYl1bZV0ubW9kZWwrJyI+Jyt0W2JdW2VdLm1vZGVsKyI8L29wdGlvbj4iKTtmW3RbYl1bZV0ubW9kZWxdPXRbYl1bZV0ubW9kZWx9RSYmKHIudHJpZ2dlcigiY2hhbmdlIiksRT0hMSl9fSk7ci5vbigiY2hhbmdlIixmdW5jdGlvbigpe3IudmFsKCQodGhpcykudmFsKCkpO3YuZW1wdHkoKTt2YXIgYj16LnZhbCgpLGY9eS52YWwoKSxlPSQodGhpcykudmFsKCk7CmlmKDEhPSQoImlucHV0W25hbWU9bm9DQkJdIikudmFsKCkpJC5hamF4KHt0eXBlOiJQT1NUIix1cmw6KCJFTkdMSVNIIj09aD8iL2VuLyI6Ii9mci8iKSsiL2FqYXgvZ2V0VHJhZGVJbkJhclRyaW0\/d3N3aWR0aD0wIixkYXRhVHlwZToianNvbiIsZGF0YTp7bGFuZ3VhZ2U6aCxtYWtlOmYsbW9kZWw6ZSx5ZWFyOmJ9LHN1Y2Nlc3M6ZnVuY3Rpb24oYSl7Y29uc29sZS5sb2coYSk7di5hcHBlbmQoRCk7Zm9yKHZhciBkPTAsYz0wO2M8YS5sZW5ndGg7YysrKXt2YXIgbT1hW2NdLnN0eWxlKyIgIithW2NdLnNlcmllcyx4PWFbY10udXZjO2QrKzt2LmFwcGVuZCgnPG9wdGlvbiBkYXRhLXN0eWxlaWQ9IicreCsnIiB2YWx1ZT0iJyttKyciPicrbSsiPC9vcHRpb24+Iil9MT09ZCYmJCgib3B0aW9uOmVxKDEpIix2KS5wcm9wKCJzZWxlY3RlZCIsInNlbGVjdGVkIil9fSk7ZWxzZSBpZigxPT0kKCJpbnB1dFtuYW1lPWlzQWNjdXRyYWRlXSIpLnZhbCgpKSQuYWpheCh7dHlwZToiUE9TVCIsCnVybDooIkVOR0xJU0giPT1oPyIvZW4vIjoiL2ZyLyIpKyIvYWpheC9nZXRUcmFkZUluTW5nVHJpbT93c3dpZHRoPTAiLGRhdGFUeXBlOiJqc29uIixkYXRhOntsYW5ndWFnZTpoLG1ha2U6Zixtb2RlbDplLHllYXI6Yn0sc3VjY2VzczpmdW5jdGlvbihhKXtjb25zb2xlLmxvZyhhKTt2LmFwcGVuZChEKTtmb3IodmFyIGQ9MCxjPTA7YzxhLmxlbmd0aDtjKyspe3ZhciBtPWFbY10ubmFtZSx4PWFbY10uaWQ7ZCsrO3YuYXBwZW5kKCc8b3B0aW9uIGRhdGEtc3R5bGVpZD0iJyt4KyciIHZhbHVlPSInK20rJyI+JyttKyI8L29wdGlvbj4iKX0xPT1kJiYkKCJvcHRpb246ZXEoMSkiLHYpLnByb3AoInNlbGVjdGVkIiwhMCl9fSk7ZWxzZSBpZigwPE9iamVjdC5rZXlzKHQpLmxlbmd0aCYmIiIhPXRoaXMudmFsdWUpe3YuYXBwZW5kKEQpO2ZvcihlPWY9MDtlPHRbYl0ubGVuZ3RoO2UrKyl0W2JdW2VdLm1vZGVsPT10aGlzLnZhbHVlJiYoZisrLHYuYXBwZW5kKCc8b3B0aW9uIGRhdGEtc3R5bGVpZD0iJysKdFtiXVtlXS5zdHlsZWlkKyciIHZhbHVlPSInK3RbYl1bZV0udHJpbSsnIj4nK3RbYl1bZV0udHJpbSsiPC9vcHRpb24+IikpOzE9PWYmJiQoIm9wdGlvbjplcSgxKSIsdikucHJvcCgic2VsZWN0ZWQiLCJzZWxlY3RlZCIpfX0pO2lmKDEhPSQoImlucHV0W25hbWU9bm9DQkJdIikudmFsKCl8fDE9PSQoImlucHV0W25hbWU9aXNBY2N1dHJhZGVdIikudmFsKCkpezEhPSQoImlucHV0W25hbWU9bm9DQkJdIikudmFsKCk\/KHYub24oImNoYW5nZSIsZnVuY3Rpb24oKXskLmFqYXgoe3R5cGU6IlBPU1QiLHVybDooJCgiYm9keSIpLmhhc0NsYXNzKCJFTkdMSVNIIik\/Ii9lbi8iOiIvZnIvIikrIi9hamF4L2dldFRyYWRlSW5CYXJWYWx1ZT93c3dpZHRoPTAiLGRhdGFUeXBlOiJqc29uIixkYXRhOnt1dmM6JCh0aGlzKS5maW5kKCI6Y2hlY2tlZCIpLmF0dHIoImRhdGEtc3R5bGVpZCIpLHByb3ZpbmNlOiQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9ImRlYWxlclByb3ZpbmNlVHJhZGVJbiJdJykudmFsKCl9LApzdWNjZXNzOmZ1bmN0aW9uKGEpe2NvbnNvbGUubG9nKGEpOyQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIHNlbGVjdFtuYW1lPSJWRUhJQ0xFT1BUSU9OUyJdJykuZmluZCgib3B0aW9uIikucmVtb3ZlKCk7aWYoYS5hZGRfZGVkdWN0X2xpc3QubGVuZ3RoKXtmb3IodmFyIGQ9MDtkPGEuYWRkX2RlZHVjdF9saXN0Lmxlbmd0aDtkKyspJCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gc2VsZWN0W25hbWU9IlZFSElDTEVPUFRJT05TIl0nKS5hcHBlbmQoJzxvcHRpb24gdmFsdWU9IicrYS5hZGRfZGVkdWN0X2xpc3RbZF0udW9jKyciPicrYS5hZGRfZGVkdWN0X2xpc3RbZF0ubmFtZSsiPC9vcHRpb24+Iik7JCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gc2VsZWN0W25hbWU9IlZFSElDTEVPUFRJT05TIl0nKS5tdWx0aXNlbGVjdCh7aGVhZGVyOiExLG5vbmVTZWxlY3RlZFRleHQ6Ik9wdGlvbnMiLHNlbGVjdGVkVGV4dDpmdW5jdGlvbihjLG0seCl7cmV0dXJuICQoImJvZHkiKS5oYXNDbGFzcygiRU5HTElTSCIpPwpjKyIgIiskKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJtdWx0aXNlbGVjdGVkVGV4dFZhbHVlIl0nKS52YWwoKTpjKyIgIiskKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJtdWx0aXNlbGVjdGVkVGV4dFZhbHVlIl0nKS52YWwoKSsoMTxjPyJzIjoiIil9LGNsYXNzZXM6InRyYWRlSW5CYXJNdWx0aXNlbGVjdCJ9KS5tdWx0aXNlbGVjdCgicmVmcmVzaCIpOyQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIC5vcGVuVmVoaWNsZU9wdGlvbnMiKS5oaWRlKCk7JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gLm11bHRpc2VsZWN0VmVoaWNsZU9wdGlvbnMiKS5zaG93KCl9ZWxzZSAkKCIjdHJhZGVJbkJhclBvcHVwRm9ybSAubXVsdGlzZWxlY3RWZWhpY2xlT3B0aW9ucyIpLmhpZGUoKSwkKCIjdHJhZGVJbkJhclBvcHVwRm9ybSAub3BlblZlaGljbGVPcHRpb25zIikuc2hvdygpfX0pfSksbi5vbigicGFzdGUiLGZ1bmN0aW9uKCl7bGV0IGE9JCh0aGlzKTtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7YS50cmlnZ2VyKCJrZXl1cCIpfSwKMjAwKX0pLG4ub24oImtleXVwIixmdW5jdGlvbigpeyQodGhpcykudmFsKCkmJjE3PD0kKHRoaXMpLnZhbCgpLmxlbmd0aCYmJC5hamF4KHt0eXBlOiJQT1NUIix1cmw6KCQoImJvZHkiKS5oYXNDbGFzcygiRU5HTElTSCIpPyIvZW4vIjoiL2ZyLyIpKyIvYWpheC9nZXRUcmFkZUluQmFyVmFsdWU\/d3N3aWR0aD0wIixkYXRhVHlwZToianNvbiIsZGF0YTp7dmluOiQodGhpcykudmFsKCkscHJvdmluY2U6JCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iZGVhbGVyUHJvdmluY2VUcmFkZUluIl0nKS52YWwoKX0sc3VjY2VzczpmdW5jdGlvbihhKXthJiZhLm1vZGVsJiZhLm1vZGVsX3llYXI\/KG4uZmlyc3QoKS5hdHRyKCJ2aW5Nb2RlbCIsYS5tb2RlbCksbi5maXJzdCgpLmF0dHIoInZpblllYXIiLGEubW9kZWxfeWVhcikseS52YWwoYS5tYWtlKSx5LmZpcnN0KCkudHJpZ2dlcigiY2hhbmdlIiksZigpLGUoKSk6YigkKCJib2R5IikuaGFzQ2xhc3MoIkVOR0xJU0giKT8KIlVucmVjb2duaXplZCBWSU4iOiJOSVYgbm9uIHJlY29ubnUiKX19KX0pKToxPT0kKCJpbnB1dFtuYW1lPWlzQWNjdXRyYWRlXSIpLnZhbCgpJiYodi5vbigiY2hhbmdlIixmdW5jdGlvbigpeyQuYWpheCh7dHlwZToiUE9TVCIsdXJsOigkKCJib2R5IikuaGFzQ2xhc3MoIkVOR0xJU0giKT8iL2VuLyI6Ii9mci8iKSsiL2FqYXgvZ2V0VHJhZGVJbk1uZ09wdGlvbnM\/d3N3aWR0aD0wIixkYXRhVHlwZToianNvbiIsZGF0YTp7aWQ6JCh0aGlzKS5maW5kKCI6Y2hlY2tlZCIpLmF0dHIoImRhdGEtc3R5bGVpZCIpLHByb3ZpbmNlOiQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9ImRlYWxlclByb3ZpbmNlVHJhZGVJbiJdJykudmFsKCl9LHN1Y2Nlc3M6ZnVuY3Rpb24oYSl7Y29uc29sZS5sb2coYSk7JCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gc2VsZWN0W25hbWU9IlZFSElDTEVPUFRJT05TIl0nKS5maW5kKCJvcHRpb24iKS5yZW1vdmUoKTtpZihhLmxlbmd0aCl7Zm9yKHZhciBkPQowO2Q8YS5sZW5ndGg7ZCsrKSQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIHNlbGVjdFtuYW1lPSJWRUhJQ0xFT1BUSU9OUyJdJykuYXBwZW5kKCc8b3B0aW9uIHZhbHVlPSInK2FbZF0uaWQrJyI+JythW2RdLm5hbWUrIjwvb3B0aW9uPiIpOyQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIHNlbGVjdFtuYW1lPSJWRUhJQ0xFT1BUSU9OUyJdJykubXVsdGlzZWxlY3Qoe2hlYWRlcjohMSxub25lU2VsZWN0ZWRUZXh0OiJPcHRpb25zIixzZWxlY3RlZFRleHQ6ZnVuY3Rpb24oYyxtLHgpe3JldHVybiAkKCJib2R5IikuaGFzQ2xhc3MoIkVOR0xJU0giKT9jKyIgIiskKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJtdWx0aXNlbGVjdGVkVGV4dFZhbHVlIl0nKS52YWwoKTpjKyIgIiskKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJtdWx0aXNlbGVjdGVkVGV4dFZhbHVlIl0nKS52YWwoKSsoMTxjPyJzIjoiIil9LGNsYXNzZXM6InRyYWRlSW5CYXJNdWx0aXNlbGVjdCJ9KS5tdWx0aXNlbGVjdCgicmVmcmVzaCIpOwokKCIjdHJhZGVJbkJhclBvcHVwRm9ybSAub3BlblZlaGljbGVPcHRpb25zIikuaGlkZSgpOyQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIC5tdWx0aXNlbGVjdFZlaGljbGVPcHRpb25zIikuc2hvdygpfWVsc2UgJCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gLm11bHRpc2VsZWN0VmVoaWNsZU9wdGlvbnMiKS5oaWRlKCksJCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gLm9wZW5WZWhpY2xlT3B0aW9ucyIpLnNob3coKX19KX0pLG4ub24oInBhc3RlIixmdW5jdGlvbigpe2xldCBhPSQodGhpcyk7c2V0VGltZW91dChmdW5jdGlvbigpe2EudHJpZ2dlcigia2V5dXAiKX0sMjAwKX0pLG4ub24oImtleXVwIixmdW5jdGlvbigpeyQodGhpcykudmFsKCkmJjE3PD0kKHRoaXMpLnZhbCgpLmxlbmd0aCYmJC5hamF4KHt0eXBlOiJQT1NUIix1cmw6KCQoImJvZHkiKS5oYXNDbGFzcygiRU5HTElTSCIpPyIvZW4vIjoiL2ZyLyIpKyIvYWpheC9nZXRUcmFkZUluTW5nVmluP3dzd2lkdGg9MCIsCmRhdGFUeXBlOiJqc29uIixkYXRhOnt2aW46JCh0aGlzKS52YWwoKSxwcm92aW5jZTokKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJkZWFsZXJQcm92aW5jZVRyYWRlSW4iXScpLnZhbCgpfSxzdWNjZXNzOmZ1bmN0aW9uKGEpe2EmJmEubW9kZWwmJmEueWVhcj8obi5maXJzdCgpLmF0dHIoInZpbk1vZGVsIixhLm1vZGVsKSxuLmZpcnN0KCkuYXR0cigidmluWWVhciIsYS55ZWFyKSx5LnZhbChhLm1ha2UpLHkuZmlyc3QoKS50cmlnZ2VyKCJjaGFuZ2UiKSxmKCksZSgpKTpiKCQoImJvZHkiKS5oYXNDbGFzcygiRU5HTElTSCIpPyJVbnJlY29nbml6ZWQgVklOIjoiTklWIG5vbiByZWNvbm51Iil9fSl9KSk7ZnVuY3Rpb24gYihhKXt2YXIgZD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidHJhZGVJbkJhclBvcHVwTml2RGl2Q29udGFpbmVyIik7aWYoZCl7dmFyIGM9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZFdhcm5pbmdNZXNzYWdlIik7YyYmYy5yZW1vdmUoKTsKYz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7Yy5pZD0icmVkV2FybmluZ01lc3NhZ2UiO2MudGV4dENvbnRlbnQ9YTtjLnN0eWxlLmNvbG9yPSJyZWQiO2Muc3R5bGUucG9zaXRpb249ImFic29sdXRlIjtjLnN0eWxlLnRvcD0iNTAlIjtjLnN0eWxlLnJpZ2h0PSI4cHgiO2Muc3R5bGUubWFyZ2luVG9wPSI0cHgiO2Muc3R5bGUuZm9udFNpemU9IjExcHgiO2Muc3R5bGUudHJhbnNmb3JtPSJ0cmFuc2xhdGVZKC01MCUpIjtkLnN0eWxlLnBvc2l0aW9uPSJyZWxhdGl2ZSI7ZC5hcHBlbmRDaGlsZChjKX19ZnVuY3Rpb24gZigpe3ZhciBhPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWRXYXJuaW5nTWVzc2FnZSIpO2EmJmEucmVtb3ZlKCl9ZnVuY3Rpb24gZSgpe3ZhciBhPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJuaXZNYWtlTW9kZWxTZWxlY3RNb2RlbCIpO2EmJmEuY2xpY2soKTsoYT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidHJhZGVJbkJhclBvcHVwVHJpbSIpKSYmCmEuZm9jdXMoKX19fX07Ci8qKiAvbS9qcy90cmFkZWlucG9wdXAuanMgKiovCnZhciBfX19kMmNfdHJhZGVpbnBvcHVwanNfY19vbj0iMjAyNi0wNC0xMyAxNTozMDowNCI7J3VzZSBzdHJpY3QnO3ZhciB0cmFkZWlucG9wdXBkMmM9e2luaXQ6ZnVuY3Rpb24oKXt9LG9uQmVmb3JlU3VibWl0OmZ1bmN0aW9uKGEpe2VtYWlsSGFuZGxlci5kZXBhcnRtZW50PSJORVciO2VtYWlsSGFuZGxlci5jb25kaXRpb249Im5ldyI7YS5zZXR0aW5ncy52ZWhpY2xlU3RhdGU9Im5ldyI7aWYoInVzZWRjYXJzLmh0bWwiPT0kKCIjUEFHRUlEIikudmFsKCl8fCIwIj09JCgiaW5wdXRbbmFtZT10cmFkZUluSGFzTmV3RGVwXSIpLnZhbCgpKWVtYWlsSGFuZGxlci5kZXBhcnRtZW50PSJVU0VEIixlbWFpbEhhbmRsZXIuY29uZGl0aW9uPSJ1c2VkIixhLnNldHRpbmdzLnZlaGljbGVTdGF0ZT0idXNlZCI7ZW1haWxIYW5kbGVyLm1ha2U9JCgiI2xhc3R2aWV3ZWRtYWtlIikudmFsKCk7ZW1haWxIYW5kbGVyLm1vZGVsPSQoIiNsYXN0dmlld2VkbW9kZWwiKS52YWwoKTtlbWFpbEhhbmRsZXIueWVhcj0kKCIjbGFzdHZpZXdlZHllYXIiKS52YWwoKTskKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJFTUFJTE1BS0UiXScpLnZhbCgkKCIjbGFzdHZpZXdlZG1ha2UiKS52YWwoKSk7CiQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9IkVNQUlMTU9ERUwiXScpLnZhbCgkKCIjbGFzdHZpZXdlZG1vZGVsIikudmFsKCkpOyQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9IkVNQUlMWUVBUiJdJykudmFsKCQoIiNsYXN0dmlld2VkeWVhciIpLnZhbCgpKTskKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJTVE9DS05VTUJFUiJdJykudmFsKCQoIiNsYXN0dmlld2Vkc3RvY2tudW1iZXIiKS52YWwoKSk7JCgiI3ZlaGljbGVjb2xvciIpLmxlbmd0aCYmJCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iQ09MT1IiXScpLnZhbCgkKCIjdmVoaWNsZWNvbG9yIikudmFsKCkpOyQoIiN0cmFkZUluQmFyUG9wdXBNYWtlIikuaGFzQ2xhc3MoInJlcXVpcmVkIikmJiIiIT0kKCIjdHJhZGVJbkJhclBvcHVwTWFrZSIpLnZhbCgpJiYoJCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iTUFLRUVYIl0nKS52YWwoJCgiI3RyYWRlSW5CYXJQb3B1cE1ha2UiKS52YWwoKSksCmVtYWlsSGFuZGxlci5jYXIyX21ha2U9JCgiI3RyYWRlSW5CYXJQb3B1cE1ha2UiKS52YWwoKSk7JCgiI3RyYWRlSW5CYXJQb3B1cE1vZGVsIikuaGFzQ2xhc3MoInJlcXVpcmVkIikmJiIiIT0kKCIjdHJhZGVJbkJhclBvcHVwTW9kZWwiKS52YWwoKSYmKCQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9Ik1PREVMRVgiXScpLnZhbCgkKCIjdHJhZGVJbkJhclBvcHVwTW9kZWwiKS52YWwoKSksZW1haWxIYW5kbGVyLmNhcjJfbW9kZWw9JCgiI3RyYWRlSW5CYXJQb3B1cE1vZGVsIikudmFsKCkpOyQoIiN0cmFkZUluQmFyUG9wdXBUcmltIikuaGFzQ2xhc3MoInJlcXVpcmVkIikmJiIiIT0kKCIjdHJhZGVJbkJhclBvcHVwVHJpbSIpLnZhbCgpJiYoJCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iVFJJTUVYIl0nKS52YWwoJCgiI3RyYWRlSW5CYXJQb3B1cFRyaW0iKS52YWwoKSksJCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0idHJhZGVpbmJhclN0eWxlaWQiXScpLnZhbCgkKCIjdHJhZGVJbkJhclBvcHVwVHJpbSBvcHRpb246c2VsZWN0ZWQiKS5hdHRyKCJkYXRhLXN0eWxlaWQiKSksCmVtYWlsSGFuZGxlci5jYXIyX3RyaW09JCgiI3RyYWRlSW5CYXJQb3B1cFRyaW0iKS52YWwoKSk7JCgiI3RyYWRlSW5CYXJQb3B1cFllYXIiKS5oYXNDbGFzcygicmVxdWlyZWQiKSYmIiIhPSQoIiN0cmFkZUluQmFyUG9wdXBZZWFyIikudmFsKCkmJigkKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJZRUFSRVgiXScpLnZhbCgkKCIjdHJhZGVJbkJhclBvcHVwWWVhciIpLnZhbCgpKSxlbWFpbEhhbmRsZXIuY2FyMl95ZWFyPSQoIiN0cmFkZUluQmFyUG9wdXBZZWFyIikudmFsKCkpOyQoIiN0cmFkZUluQmFyUG9wdXBOaXYiKS5sZW5ndGgmJiIiIT0kKCIjdHJhZGVJbkJhclBvcHVwTml2IikudmFsKCkmJiQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9IlZJTkVYIl0nKS52YWwoJCgiI3RyYWRlSW5CYXJQb3B1cE5pdiIpLnZhbCgpKTskKCIjVHJhZGVJbkJhclBvcHVwQ29udGFpbmVyIikuZmluZCgnaW5wdXRbbmFtZT0idHJhZGVpbmJhclJlZ2lzdGVyUGFydGlhbElEIl0nKS5sZW5ndGgmJgooZW1haWxIYW5kbGVyLnRyYWRlaW5iYXJSZWdpc3RlclBhcnRpYWxJRD0kKCIjVHJhZGVJbkJhclBvcHVwQ29udGFpbmVyIikuZmluZCgnaW5wdXRbbmFtZT0idHJhZGVpbmJhclJlZ2lzdGVyUGFydGlhbElEIl0nKS52YWwoKSk7ZW1haWxIYW5kbGVyLmNhcjJfb2RvbWV0ZXI9JCgiI3JlYmF0ZU1pbGVhZ2VfdHJhZGVJbkJhclBvcHVwIikudmFsKCk7YS5zZXR0aW5ncy5jbG9zZU9uU3VibWl0PSExO2lmKCEkKCJpbnB1dFtuYW1lPXRyYWRlSW5CYXJTbXNPckVtYWlsXTpjaGVja2VkIikubGVuZ3RoJiYwPT0kKCJpbnB1dFtuYW1lPXRyYWRlSW5WYWx1ZUNCQkNhbGxlZF0iKS52YWwoKSYmMSE9JCgiaW5wdXRbbmFtZT1ub0NCQl0iKS52YWwoKSlyZXR1cm4gdGhpcy5vbkJlZm9yZVN1Ym1pdENCQkNhbGwoYSksITE7aWYoISQoImlucHV0W25hbWU9dHJhZGVJbkJhclNtc09yRW1haWxdOmNoZWNrZWQiKS5sZW5ndGgmJjA9PSQoImlucHV0W25hbWU9dHJhZGVJblZhbHVlQ0JCQ2FsbGVkXSIpLnZhbCgpJiYKMT09JCgiaW5wdXRbbmFtZT1pc0FjY3V0cmFkZV0iKS52YWwoKSlyZXR1cm4gdGhpcy5vbkJlZm9yZVN1Ym1pdEFjY3V0cmFkZUNhbGwoYSksITE7aWYoJCgiaW5wdXRbbmFtZT10cmFkZUluQmFyU21zT3JFbWFpbF06Y2hlY2tlZCIpLmxlbmd0aCYmMT09JCgiaW5wdXRbbmFtZT10cmFkZUluVmFsdWVDQkJDYWxsZWRdIikudmFsKCkmJjE9PSQoImlucHV0W25hbWU9dHJhZGVJblZhbHVlQ0JCQXZhaWxhYmxlVmFsdWVzXSIpLnZhbCgpJiYxIT0kKCJpbnB1dFtuYW1lPW5vQ0JCXSIpLnZhbCgpKXRoaXMub25CZWZvcmVTdWJtaXRDQkJNZXNzYWdlKGEpO2Vsc2UgaWYoJCgiaW5wdXRbbmFtZT10cmFkZUluQmFyU21zT3JFbWFpbF06Y2hlY2tlZCIpLmxlbmd0aCYmMT09JCgiaW5wdXRbbmFtZT10cmFkZUluVmFsdWVDQkJDYWxsZWRdIikudmFsKCkmJjE9PSQoImlucHV0W25hbWU9dHJhZGVJblZhbHVlQ0JCQXZhaWxhYmxlVmFsdWVzXSIpLnZhbCgpJiYxPT0kKCJpbnB1dFtuYW1lPWlzQWNjdXRyYWRlXSIpLnZhbCgpKXRoaXMub25CZWZvcmVTdWJtaXRBY2N1dHJhZGVNZXNzYWdlKGEpOwppZigiMSI9PT0kKCJpbnB1dFtuYW1lPXN0ZXAzYWN0aXZlXSIpLnZhbCgpJiYiMCI9PT0kKCJpbnB1dFtuYW1lPXN0ZXAzZG9uZV0iKS52YWwoKSlyZXR1cm4gdGhpcy5pbml0VHJhZGVJblN0ZXAzKCksITE7YS5zZXR0aW5ncy5jbG9zZU9uU3VibWl0PSEwfSxvbkFmdGVyU3VibWl0OmZ1bmN0aW9uKGEpeyQoImJvZHkiKS50cmlnZ2VyKCJUcmFkZUluQmFyUG9wdXBXaWRnZXRfb25TdWJtaXQiLFtdKTthPSQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9ZGVmYXVsdFN1Ym1pdE1lc2FnZV0iKS52YWwoKTswPT0kKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPXRyYWRlSW5WYWx1ZUNCQkF2YWlsYWJsZVZhbHVlc10iKS52YWwoKSYmMSE9JCgiaW5wdXRbbmFtZT1ub0NCQl0iKS52YWwoKSYmKGE9JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT1ub1ZhbHVlU3VibWl0TWVzYWdlXSIpLnZhbCgpKTtsZXQgaz0kKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPXRyYWRlSW5Mb3ddIikudmFsKCl8fAowLGQ9JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT10cmFkZUluSGlnaF0iKS52YWwoKXx8MCxiPSQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9dHJhZGVJbkF2Z10iKS52YWwoKXx8MDt2YXIgYz0kKCJib2R5IikuaGFzQ2xhc3MoIkVOR0xJU0giKT8kKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJZRUFSRVgiXScpLnZhbCgpKyIgIiskKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJNQUtFRVgiXScpLnZhbCgpKyIgIiskKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJNT0RFTEVYIl0nKS52YWwoKTokKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJNQUtFRVgiXScpLnZhbCgpKyIgIiskKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJNT0RFTEVYIl0nKS52YWwoKSsiICIrJCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iWUVBUkVYIl0nKS52YWwoKTtpZigxPT0KJCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT1SRUFMVElNRUVTVElNQVRFXSIpLnZhbCgpKXt2YXIgaD0kKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJDQkJTSU5HTEVWQUxVRSJdJykudmFsKCk7bGV0IGU9JzxzcGFuIHN0eWxlPSJ0ZXh0LWFsaWduOmNlbnRlcjtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjE2cHg7Ij48YnI+JytjKyI8L3NwYW4+IixuPSIiOyQoImJvZHkiKS5oYXNDbGFzcygiRU5HTElTSCIpPyIxIj09aD9lKz0iPGJyPkVzdGltYXRlZCBWYWx1ZTogJCIrYjooZSs9Ijxicj5NaW5pbXVtIEVzdGltYXRlZCBWYWx1ZTogJCIrayxlKz0iPGJyPk1heGltdW0gRXN0aW1hdGVkIFZhbHVlOiAkIitkKToiMSI9PWg\/ZSs9Ijxicj5WYWxldXIgZXN0aW3DqWU6ICIrYisiJCI6KGUrPSI8YnI+VmFsZXVyIGVzdGltw6llIG1pbmltYWxlOiAiK2srIiQiLGUrPSI8YnI+VmFsZXVyIGVzdGltw6llIG1heGltYWxlOiAiK2QrIiQiKTtuKz0nPGRpdiBzdHlsZT0iZm9udC1zaXplOjEycHg7bWFyZ2luLXRvcDoxMHB4OyI+JysKJCgiaW5wdXRbbmFtZT10cmFkZUluTXNnRGlzY2xhaW1lclRleHQxXSIpLnZhbCgpKyQoImlucHV0W25hbWU9dHJhZGVJbk1zZ0Rpc2NsYWltZXJUZXh0Ml0iKS52YWwoKSsiPC9kaXY+IjthKz0nPGRpdiBzdHlsZT0idGV4dC1hbGlnbjpjZW50ZXI7Zm9udC13ZWlnaHQ6Ym9sZDtmb250LXNpemU6MjBweDsiPicrZSsiPC9kaXY+IitufSQoIiNlbWFpbFN1Y2Nlc3NNZXNzYWdlX1RyYWRlSW5CYXJQb3B1cENvbnRhaW5lciBwIikuaHRtbCgiPGJyPiIrYSk7bGV0IGc9aXNOYU4ocGFyc2VJbnQoYikpP2Q6Yjtpc05hTihwYXJzZUludChnKSl8fChhPW5ldyBDdXN0b21FdmVudCgidHJhY2tzdGVwLmNvbXBsZXRlIix7ZGV0YWlsOntzdGVwSWQ6IlRyYWRlSW5BY3Rpb25Cb3giLG9uQ29tcGxldGU6ZT0+e2UuZGF0YXNldC5jb21wbF90eHRfZnI9ZS5kYXRhc2V0LmNvbXBsX3R4dF9mci5yZXBsYWNlKCJ7JFRSQURFQ0FSfSIsYykucmVwbGFjZSgieyRUUkFERVZBTH0iLGcpO2UuZGF0YXNldC5jb21wbF90eHRfZW49CmUuZGF0YXNldC5jb21wbF90eHRfZW4ucmVwbGFjZSgieyRUUkFERUNBUn0iLGMpLnJlcGxhY2UoInskVFJBREVWQUx9IixnKTt2YXIgbj17eWVhcjokKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPVlFQVJFWF0iKS52YWwoKSxtYWtlOiQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9TUFLRUVYXSIpLnZhbCgpLG1vZGVsOiQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9TU9ERUxFWF0iKS52YWwoKSx0cmltOiQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9VFJJTUVYXSIpLnZhbCgpLHZhbHVlOnBhcnNlSW50KGcucmVwbGFjZSgiLCIsIiIpKX07X2xvY2FsU3RvcmFnZVNldCgidHJhZGVpbl9zdWJtaXRfZGF0YSIsSlNPTi5zdHJpbmdpZnkobiksMSk7aWYoMT5wYXJzZUludChnKSl7bj0kKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPXplcm9WYWx1ZU1lc3NhZ2VFbl0iKS52YWwoKTtsZXQgcj0kKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPXplcm9WYWx1ZU1lc3NhZ2VGcl0iKS52YWwoKTsKZS5kYXRhc2V0LmNvbXBsX3R4dF9mcj1gJHtjfSB8ICR7cn1gO2UuZGF0YXNldC5jb21wbF90eHRfZW49YCR7Y30gfCAke259YH19LGZvcmNlVXBkYXRlOiEwfX0pLGRvY3VtZW50LmRpc3BhdGNoRXZlbnQoYSkpOyQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIFtuYW1lPXRyYWRlSW5BdmddIikudmFsKDApOyQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIFtuYW1lPXRyYWRlSW5Mb3ddIikudmFsKDApOyQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIFtuYW1lPXRyYWRlSW5IaWdoXSIpLnZhbCgwKTskKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBbbmFtZT10cmFkZUluVmFsdWVDQkJBdmFpbGFibGVWYWx1ZXNdIikudmFsKDApOyQoIi50cmFkZUluQmFyU3RlcDEiKS5zaG93KCk7JCgiLnRyYWRlSW5CYXJTdGVwMlRpdGxlIikudGV4dCgkKCIudHJhZGVJbkJhclN0ZXAyVGl0bGUiKS50ZXh0KCkucmVwbGFjZSgiICIrYywiIikpOyQoImlucHV0W25hbWU9dHJhZGVJbkJhclNtc09yRW1haWxdIikucmVtb3ZlQ2xhc3MoInJlcVJhZGlvIik7CiQoIi50cmFkZUluQmFyU3RlcDIiKS5oaWRlKCk7JCgiaW5wdXRbbmFtZT10cmFkZUluVmFsdWVDQkJDYWxsZWRdIikudmFsKDApOyQoImlucHV0W25hbWU9dHJhZGVJbkJhclNtc09yRW1haWxdOmNoZWNrZWQiKS5wcm9wKCJjaGVja2VkIiwhMSk7JCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gc2VsZWN0W25hbWU9IlZFSElDTEVPUFRJT05TIl0nKS5maW5kKCJvcHRpb24iKS5yZW1vdmUoKTskKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJRVUVTVElPTlMiXScpLnZhbCgiIil9LG9uQmVmb3JlT3BlbjpmdW5jdGlvbigpe2Zvcih2YXIgYT1nZXRVcmxWYXJzKCksaz1PYmplY3Qua2V5cyhhKSxkPWsubGVuZ3RoLGI9e307ZC0tOyl7dmFyIGM9a1tkXTtiW2MudG9Mb3dlckNhc2UoKV09YVtjXX1hPWI7dmFyIGg9JCgnc2VsZWN0W25hbWU9InRyYWRpbk1ha2UiXScpLnZhbCgpPyQoJ3NlbGVjdFtuYW1lPSJ0cmFkaW5NYWtlIl0nKS52YWwoKTpkMmNtZWRpYS5jYXBpdGFsaXNlRmlyc3RMZXR0ZXIoYS50bWFrZT8KYS50bWFrZS50b0xvd2VyQ2FzZSgpOiIiKSxnPSQoJ3NlbGVjdFtuYW1lPSJ0cmFkaW5Nb2RlbCJdJykudmFsKCk\/JCgnc2VsZWN0W25hbWU9InRyYWRpbk1vZGVsIl0nKS52YWwoKTpkMmNtZWRpYS5jYXBpdGFsaXNlRmlyc3RMZXR0ZXIoYS50bW9kZWw\/YS50bW9kZWwudG9Mb3dlckNhc2UoKToiIik7az0kKCdzZWxlY3RbbmFtZT0idHJhZGluVHJpbSJdJykudmFsKCk\/JCgnc2VsZWN0W25hbWU9InRyYWRpblRyaW0iXScpLnZhbCgpOiIgIjtkPSQoJ3NlbGVjdFtuYW1lPSJ0cmFkaW5UcmltIl0nKS52YWwoKT8kKCdzZWxlY3RbbmFtZT0idHJhZGluVHJpbSJdIG9wdGlvbjpzZWxlY3RlZCcpLmF0dHIoImRhdGEtc3R5bGVpZCIpOiIgIjt2YXIgZT0kKCdzZWxlY3RbbmFtZT0idHJhZGluWWVhciJdJykudmFsKCk\/JCgnc2VsZWN0W25hbWU9InRyYWRpblllYXIiXScpLnZhbCgpOmEudHllYXI7YT0kKCdpbnB1dFtuYW1lPSJ0cmFkaW5WaW4iXScpLnZhbCgpPyQoJ2lucHV0W25hbWU9InRyYWRpblZpbiJdJykudmFsKCk6CiIiOyQoInRyYWRlSW5TZWxlY3RlZE1ha2UiKS52YWwoaCk7JCgidHJhZGVJblNlbGVjdGVkTW9kZWwiKS52YWwoZyk7JCgidHJhZGVJblNlbGVjdGVkVHJpbSIpLnZhbChrKTskKCJ0cmFkZUluU2VsZWN0ZWRZZWFyIikudmFsKGUpOyQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9Ik1BS0VFWCJdJykudmFsKGgpOyQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9Ik1PREVMRVgiXScpLnZhbChnKTskKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJUUklNRVgiXScpLnZhbChrKTskKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJZRUFSRVgiXScpLnZhbChlKTskKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJ0cmFkZWluYmFyU3R5bGVpZCJdJykudmFsKGQpOyQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9IlZJTkVYIl0nKS52YWwoYSk7aWYoInVuZGVmaW5lZCIhPT10eXBlb2YgY2xpZW50U3RvcmFnZSl7dmFyIG47CmE9bnVsbCE9KG49Y2xpZW50U3RvcmFnZS5nZXQoImZpcnN0bmFtZSIpKT9uOiIiO3ZhciByO249bnVsbCE9KHI9Y2xpZW50U3RvcmFnZS5nZXQoImxhc3RuYW1lIikpP3I6IiI7cj1hKygiIiE9bj8iICIrY2xpZW50U3RvcmFnZS5nZXQoImxhc3RuYW1lIik6IiIpOyQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9IkZOQU1FIl0nKS52YWwocik7dmFyIGY7JCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iRU1BSUxQSE9ORSJdJykudmFsKG51bGwhPShmPWNsaWVudFN0b3JhZ2UuZ2V0KCJwaG9uZSIpKT9mOiIiKTt2YXIgdTskKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJFTUFJTCJdJykudmFsKG51bGwhPSh1PWNsaWVudFN0b3JhZ2UuZ2V0KCJlbWFpbCIpKT91OiIiKX1lbWFpbEhhbmRsZXIuY2FyMl9tYWtlPWg7ZW1haWxIYW5kbGVyLmNhcjJfbW9kZWw9ZztlbWFpbEhhbmRsZXIuY2FyMl90cmltPWs7ZW1haWxIYW5kbGVyLmNhcjJfeWVhcj0KZTtlbWFpbEhhbmRsZXIuY2FyMl9vZG9tZXRlcj0kKCIjcmViYXRlTWlsZWFnZV90cmFkZUluQmFyUG9wdXAiKS52YWwoKTtlbWFpbEhhbmRsZXIuZGVwYXJ0bWVudD0iTkVXIjtpZigidXNlZGNhcnMuaHRtbCI9PSQoIiNQQUdFSUQiKS52YWwoKXx8IjAiPT0kKCJpbnB1dFtuYW1lPXRyYWRlSW5IYXNOZXdEZXBdIikudmFsKCkpZW1haWxIYW5kbGVyLmRlcGFydG1lbnQ9IlVTRUQiO2Y9JCgiYm9keSIpLmhhc0NsYXNzKCJFTkdMSVNIIik\/IiAiK2UrIiAiK2grIiAiK2c6IiAiK2grIiAiK2crIiAiK2U7JCgiI3RyYWRlSW5CYXJQb3B1cFNlbGVjdGVkVmVoaWNsZSIpLmh0bWwoZik7Q29va2llcy5nZXQoInBvcHVwUGFnZVZpZXdzIil8fENvb2tpZXMuc2V0KCJwb3B1cFBhZ2VWaWV3cyIsIjAiLG51bGwsIi8iKTtpZigiMSI9PSQoIiNpc01vYmlsZSIpLnZhbCgpfHwiIj09aHx8IiI9PWd8fCIiPT1lKXsiMSIhPSQoIiNpc01vYmlsZSIpLnZhbCgpJiYoJCgiI1RyYWRlSW5CYXJQb3B1cENvbnRhaW5lciIpLmNzcygiaGVpZ2h0IiwKIjY4MHB4IiksJCgiI3RyYWRlSW5CYXJQb3B1cF9mb3JtVyIpLmNzcygiaGVpZ2h0IiwiNjgwcHgiKSk7JCgiI3RyYWRlSW5CYXJQb3B1cE1ha2UiKS5hZGRDbGFzcygicmVxdWlyZWQiKTskKCIjdHJhZGVJbkJhclBvcHVwTWFrZSIpLmVtcHR5KCk7JCgiI3RyYWRlSW5CYXJQb3B1cE1vZGVsIikuYWRkQ2xhc3MoInJlcXVpcmVkIik7JCgiI3RyYWRlSW5CYXJQb3B1cE1vZGVsIikuZW1wdHkoKTskKCIjdHJhZGVJbkJhclBvcHVwWWVhciIpLmFkZENsYXNzKCJyZXF1aXJlZCIpOyQoIiN0cmFkZUluQmFyUG9wdXBZZWFyIikuZW1wdHkoKTsidmluIiE9JCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iQ0JCTU9ERUxTRUxFQ1QiXScpLnZhbCgpPygkKCIjdHJhZGVJbkJhclBvcHVwTWFrZURpdkNvbnRhaW5lciIpLmNzcygiZGlzcGxheSIsImlubGluZS1ibG9jayIpLCQoIiN0cmFkZUluQmFyUG9wdXBNb2RlbERpdkNvbnRhaW5lciIpLmNzcygiZGlzcGxheSIsImlubGluZS1ibG9jayIpLAokKCIjdHJhZGVJbkJhclBvcHVwWWVhckRpdkNvbnRhaW5lciIpLmNzcygiZGlzcGxheSIsImlubGluZS1ibG9jayIpKTokKCIjdHJhZGVJbkJhclBvcHVwTml2RGl2Q29udGFpbmVyIikuY3NzKCJkaXNwbGF5IiwiaW5saW5lLWJsb2NrIik7MCE9JCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iQ0JCTU9ERUxTRUxFQ1QiXScpLnZhbCgpJiYoJCgnLm5pdk1ha2VNb2RlbFNlbGVjdENvbnRhaW5lciAubml2TWFrZU1vZGVsU2VsZWN0W3ZhbHVlPSInKyQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9IkNCQk1PREVMU0VMRUNUIl0nKS52YWwoKSsnIl0nKS5wcm9wKCJjaGVja2VkIiwhMCksJCgiLm5pdk1ha2VNb2RlbFNlbGVjdENvbnRhaW5lciIpLnNob3coKSk7JCgiI3RyYWRlSW5CYXJQb3B1cFRyaW1EaXZDb250YWluZXIiKS5jc3MoImRpc3BsYXkiLCJpbmxpbmUtYmxvY2siKTskKCIjdHJhZGVJbkJhclBvcHVwVHJpbSIpLmFkZENsYXNzKCJyZXF1aXJlZCIpOwokKCIjdHJhZGVJbkJhclBvcHVwVHJpbSIpLmVtcHR5KCk7Zj0kKCJib2R5IikuaGFzQ2xhc3MoIkVOR0xJU0giKT8iIHRyYWRlLWluISI6IiDDqWNoYW5nZSEiOyQoIiN0cmFkZUluQmFyUG9wdXBTZWxlY3RlZFZlaGljbGUiKS5odG1sKGYpOyQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIC5uaXZNYWtlTW9kZWxTZWxlY3QiKS5sZW5ndGgmJiQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIC5uaXZNYWtlTW9kZWxTZWxlY3QiKS50cmlnZ2VyKCJjaGFuZ2UiKTt2YXIgcT0kKCJib2R5IikuaGFzQ2xhc3MoIkVOR0xJU0giKT8iRU5HTElTSCI6IkZSRU5DSCI7JC5hamF4KHt0eXBlOiJQT1NUIix1cmw6KCJFTkdMSVNIIj09cT8iL2VuLyI6Ii9mci8iKSsiL2FqYXgvZ2V0VHJhZGVJbkJhckRhdGE\/d3N3aWR0aD0wIixkYXRhVHlwZToianNvbiIsZGF0YTp7bGFuZ3VhZ2U6cX0sc3VjY2VzczpmdW5jdGlvbihtKXskKCIjdHJhZGVJbkJhclBvcHVwTWFrZSIpLmFwcGVuZCgnPG9wdGlvbiB2YWx1ZT0iIj4nKwooIkVOR0xJU0giPT1xPyJNYWtlIjoiTWFycXVlIikrIjwvb3B0aW9uPiIpO2Zvcih2YXIgbD0wO2w8bS5sZW5ndGg7bCsrKXt2YXIgcD1tW2xdLm1ha2UudG9Mb3dlckNhc2UoKT09aC50b0xvd2VyQ2FzZSgpPydzZWxlY3RlZD0ic2VsZWN0ZWQiJzoiIjtsZXQgdD0xPT0kKCJpbnB1dFtuYW1lPWlzQWNjdXRyYWRlXSIpLnZhbCgpP21bbF0ubWFrZS50b1VwcGVyQ2FzZSgpOm1bbF0ubWFrZTskKCIjdHJhZGVJbkJhclBvcHVwTWFrZSIpLmFwcGVuZCgiPG9wdGlvbiAiK3ArJyB2YWx1ZT0iJyt0KyciPicrbVtsXS5tYWtlKyI8L29wdGlvbj4iKX0kKCIjdHJhZGVJbkJhclBvcHVwTWFrZSIpLnRyaWdnZXIoImNoYW5nZSIpOyQoIiN0cmFkZUluQmFyUG9wdXBOaXYiKS5sZW5ndGgmJiQoIiN0cmFkZUluQmFyUG9wdXBOaXYiKS50cmlnZ2VyKCJrZXl1cCIpfX0pfWVsc2UiICI9PWs\/KCQoIiN0cmFkZUluQmFyUG9wdXBUcmltRGl2Q29udGFpbmVyIikuY3NzKCJkaXNwbGF5IiwiaW5saW5lLWJsb2NrIiksCiQoIiN0cmFkZUluQmFyUG9wdXBUcmltIikuYWRkQ2xhc3MoInJlcXVpcmVkIiksJCgiI3RyYWRlSW5CYXJQb3B1cFRyaW0iKS5lbXB0eSgpLHE9JCgiYm9keSIpLmhhc0NsYXNzKCJFTkdMSVNIIik\/IkVOR0xJU0giOiJGUkVOQ0giLDEhPSQoImlucHV0W25hbWU9bm9DQkJdIikudmFsKCk\/JC5hamF4KHt0eXBlOiJQT1NUIix1cmw6KCJFTkdMSVNIIj09cT8iL2VuLyI6Ii9mci8iKSsiL2FqYXgvZ2V0VHJhZGVJbkJhclRyaW0\/d3N3aWR0aD0wIixkYXRhVHlwZToianNvbiIsZGF0YTp7bGFuZ3VhZ2U6cSxtYWtlOmgsbW9kZWw6Zyx5ZWFyOmV9LHN1Y2Nlc3M6ZnVuY3Rpb24obSl7JCgiI3RyYWRlSW5CYXJQb3B1cFRyaW0iKS5hcHBlbmQoJzxvcHRpb24gdmFsdWU9IiI+JysoIkVOR0xJU0giPT1xPyJUcmltIjoiVmVyc2lvbiIpKyI8L29wdGlvbj4iKTtmb3IodmFyIGw9MDtsPG0ubGVuZ3RoO2wrKyl7dmFyIHA9bVtsXS5zdHlsZSsiICIrbVtsXS5zZXJpZXMsCnQ9bVtsXS51dmM7JCgiI3RyYWRlSW5CYXJQb3B1cFRyaW0iKS5hcHBlbmQoJzxvcHRpb24gZGF0YS1zdHlsZWlkPSInK3QrJyIgdmFsdWU9IicrcCsnIj4nK3ArIjwvb3B0aW9uPiIpfX19KToxPT0kKCJpbnB1dFtuYW1lPWlzQWNjdXRyYWRlXSIpLnZhbCgpPyQuYWpheCh7dHlwZToiUE9TVCIsdXJsOigiRU5HTElTSCI9PXE\/Ii9lbi8iOiIvZnIvIikrIi9hamF4L2dldFRyYWRlSW5NbmdUcmltP3dzd2lkdGg9MCIsZGF0YVR5cGU6Impzb24iLGRhdGE6e2xhbmd1YWdlOnEsbWFrZTpoLG1vZGVsOmcseWVhcjplfSxzdWNjZXNzOmZ1bmN0aW9uKG0peyQoIiN0cmFkZUluQmFyUG9wdXBUcmltIikuYXBwZW5kKCc8b3B0aW9uIHZhbHVlPSIiPicrKCJFTkdMSVNIIj09cT8iVHJpbSI6IlZlcnNpb24iKSsiPC9vcHRpb24+Iik7Zm9yKHZhciBsPTA7bDxtLmxlbmd0aDtsKyspe3ZhciBwPW1bbF0ubmFtZSx0PW1bbF0uaWQ7JCgiI3RyYWRlSW5CYXJQb3B1cFRyaW0iKS5hcHBlbmQoJzxvcHRpb24gZGF0YS1zdHlsZWlkPSInKwp0KyciIHZhbHVlPSInK3ArJyI+JytwKyI8L29wdGlvbj4iKX19fSk6JC5hamF4KHt0eXBlOiJQT1NUIix1cmw6KCJFTkdMSVNIIj09cT8iL2VuLyI6Ii9mci8iKSsiL2FqYXgvZ2V0VHJhZGVJbkJhckRhdGE\/d3N3aWR0aD0wIixkYXRhVHlwZToianNvbiIsZGF0YTp7bGFuZ3VhZ2U6cSxtYWtlOmh9LHN1Y2Nlc3M6ZnVuY3Rpb24obSl7JCgiI3RyYWRlSW5CYXJQb3B1cFRyaW0iKS5hcHBlbmQoJzxvcHRpb24gdmFsdWU9IiI+JysoIkVOR0xJU0giPT1xPyJUcmltIjoiVmVyc2lvbiIpKyI8L29wdGlvbj4iKTtmb3IodmFyIGw9MDtsPG1bZV0ubGVuZ3RoO2wrKyltW2VdW2xdLm1vZGVsLnRvTG93ZXJDYXNlKCk9PWcudG9Mb3dlckNhc2UoKSYmJCgiI3RyYWRlSW5CYXJQb3B1cFRyaW0iKS5hcHBlbmQoJzxvcHRpb24gdmFsdWU9IicrbVtlXVtsXS50cmltKyciPicrbVtlXVtsXS50cmltKyI8L29wdGlvbj4iKX19KSk6KCQoIiN0cmFkZUluQmFyUG9wdXBNYWtlRGl2Q29udGFpbmVyIikuaGlkZSgpLAokKCIjdHJhZGVJbkJhclBvcHVwTWFrZSIpLnJlbW92ZUNsYXNzKCJyZXF1aXJlZCIpLCQoIiN0cmFkZUluQmFyUG9wdXBNb2RlbERpdkNvbnRhaW5lciIpLmhpZGUoKSwkKCIjdHJhZGVJbkJhclBvcHVwTW9kZWwiKS5yZW1vdmVDbGFzcygicmVxdWlyZWQiKSwkKCIjdHJhZGVJbkJhclBvcHVwWWVhckRpdkNvbnRhaW5lciIpLmhpZGUoKSwkKCIjdHJhZGVJbkJhclBvcHVwWWVhciIpLnJlbW92ZUNsYXNzKCJyZXF1aXJlZCIpLCQoIiN0cmFkZUluQmFyUG9wdXBUcmltRGl2Q29udGFpbmVyIikuaGlkZSgpLCQoIiN0cmFkZUluQmFyUG9wdXBUcmltIikucmVtb3ZlQ2xhc3MoInJlcXVpcmVkIiksMSE9JCgiaW5wdXRbbmFtZT1ub0NCQl0iKS52YWwoKT8oJCgiLm5pdk1ha2VNb2RlbFNlbGVjdENvbnRhaW5lciIpLmhpZGUoKSwkKCIjdHJhZGVJbkJhclBvcHVwTml2RGl2Q29udGFpbmVyIikuaGlkZSgpLCQuYWpheCh7dHlwZToiUE9TVCIsdXJsOigkKCJib2R5IikuaGFzQ2xhc3MoIkVOR0xJU0giKT8KIi9lbi8iOiIvZnIvIikrIi9hamF4L2dldFRyYWRlSW5CYXJWYWx1ZT93c3dpZHRoPTAiLGRhdGFUeXBlOiJqc29uIixkYXRhOnt1dmM6JCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0idHJhZGVpbmJhclN0eWxlaWQiXScpLnZhbCgpLHByb3ZpbmNlOiQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9ImRlYWxlclByb3ZpbmNlVHJhZGVJbiJdJykudmFsKCl9LHN1Y2Nlc3M6ZnVuY3Rpb24obSl7JCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gc2VsZWN0W25hbWU9IlZFSElDTEVPUFRJT05TIl0nKS5maW5kKCJvcHRpb24iKS5yZW1vdmUoKTskKCIjdHJhZGVJbkJhclBvcHVwRm9ybSAubXVsdGlzZWxlY3RWZWhpY2xlT3B0aW9ucyIpLmhpZGUoKTskKCIjdHJhZGVJbkJhclBvcHVwRm9ybSAub3BlblZlaGljbGVPcHRpb25zIikuc2hvdygpfX0pKToxPT0kKCJpbnB1dFtuYW1lPWlzQWNjdXRyYWRlXSIpLnZhbCgpJiYoJCgiLm5pdk1ha2VNb2RlbFNlbGVjdENvbnRhaW5lciIpLmhpZGUoKSwKJCgiI3RyYWRlSW5CYXJQb3B1cE5pdkRpdkNvbnRhaW5lciIpLmhpZGUoKSwkLmFqYXgoe3R5cGU6IlBPU1QiLHVybDooJCgiYm9keSIpLmhhc0NsYXNzKCJFTkdMSVNIIik\/Ii9lbi8iOiIvZnIvIikrIi9hamF4L2dldFRyYWRlSW5NbmdPcHRpb25zP3dzd2lkdGg9MCIsZGF0YVR5cGU6Impzb24iLGRhdGE6e2lkOiQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9InRyYWRlaW5iYXJTdHlsZWlkIl0nKS52YWwoKSxwcm92aW5jZTokKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJkZWFsZXJQcm92aW5jZVRyYWRlSW4iXScpLnZhbCgpfSxzdWNjZXNzOmZ1bmN0aW9uKG0peyQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIHNlbGVjdFtuYW1lPSJWRUhJQ0xFT1BUSU9OUyJdJykuZmluZCgib3B0aW9uIikucmVtb3ZlKCk7JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gLm11bHRpc2VsZWN0VmVoaWNsZU9wdGlvbnMiKS5oaWRlKCk7JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gLm9wZW5WZWhpY2xlT3B0aW9ucyIpLnNob3coKX19KSkpOwphPWdldFVybFZhcnMoKTtmPWEuaGFzT3duUHJvcGVydHkoInRyYWRlLXZhbHVlIikmJiJ5ZXMiPT1hWyJ0cmFkZS12YWx1ZSJdO3U9YS5oYXNPd25Qcm9wZXJ0eSgidHJhZGUtdmFsdWUiKSYmIm5vIj09YVsidHJhZGUtdmFsdWUiXTtyPSQoJ2lucHV0W25hbWU9IkNCQkNoZWNrVXNlciJdJykubGVuZ3RoP2F0b2IoJCgnaW5wdXRbbmFtZT0iQ0JCQ2hlY2tVc2VyIl0nKS52YWwoKSk6IiI7dXx8IjY2LjEzMC4xMDcuMTU3IiE9ciYmMSE9Q29va2llcy5nZXQoIkQyQ1VVSUQiKSYmIWZ8fDE9PSQoImlucHV0W25hbWU9bm9DQkJdIikudmFsKCl8fCgkKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJGTkFNRSJdJykuaGlkZSgpLCQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9IkVNQUlMUEhPTkUiXScpLmhpZGUoKSwkKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJFTUFJTCJdJykuaGlkZSgpLCQoIi50cmFkZUluQmFyRGVhbGVyTWVzc2FnZSIpLnNob3coKSk7CiQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIFtuYW1lPSJFTUFJTFBIT05FIl0nKS5lYWNoKChtLGwpPT57SU1hc2sobCx7bWFzazpbe21hc2s6IjAwMCAwMDAtMDAwMCJ9LHttYXNrOiIxIDAwMCAwMDAtMDAwMCJ9XX0pfSk7JCgiI3RyYWRlSW5CYXJQb3B1cF9mb3JtVyAudHJhZGVJbkRpc2NsYWltZXIgLnRyYWRlSW5EaXNjbGFpbWVyU2hvcnQiKS5vbigiY2xpY2siLGZ1bmN0aW9uKCl7bGV0IG09JCh0aGlzKS5maW5kKCIudHJhZGVJbkRpc2NsYWltZXJDb250ZW50IikuaHRtbCgpOyQoIi50cmFkZUluRGlzY2xhaW1lckRyYXdlciAudHJhZGVJbkRpc2NsYWltZXJDb250ZW50IikuZW1wdHkoKS5odG1sKG0pOyQoIi50cmFkZUluRGlzY2xhaW1lckRyYXdlciIpLnNob3coKS5hZGRDbGFzcygib3BlbiIpfSk7JCgiI1RyYWRlSW5CYXJQb3B1cENvbnRhaW5lciAudHJhZGVJbkRpc2NsYWltZXJDbG9zZSIpLm9uKCJjbGljayIsZnVuY3Rpb24oKXskKCIudHJhZGVJbkRpc2NsYWltZXJEcmF3ZXIiKS5yZW1vdmVDbGFzcygib3BlbiIpLmhpZGUoKX0pOwp0aGlzLnRyYWRlSW5Cb3R0b21Mb2dvSGVpZ3QoKX0sb25CZWZvcmVWYWxpZGF0aW9uOmZ1bmN0aW9uKGEpe3ZhciBrPWdldFVybFZhcnMoKTthPWsuaGFzT3duUHJvcGVydHkoInRyYWRlLXZhbHVlIikmJiJ5ZXMiPT1rWyJ0cmFkZS12YWx1ZSJdO2s9ay5oYXNPd25Qcm9wZXJ0eSgidHJhZGUtdmFsdWUiKSYmIm5vIj09a1sidHJhZGUtdmFsdWUiXTt2YXIgZD0kKCdpbnB1dFtuYW1lPSJDQkJDaGVja1VzZXIiXScpLmxlbmd0aD9hdG9iKCQoJ2lucHV0W25hbWU9IkNCQkNoZWNrVXNlciJdJykudmFsKCkpOiIiO2lmKCFrJiYoIjY2LjEzMC4xMDcuMTU3Ij09ZHx8MT09Q29va2llcy5nZXQoIkQyQ1VVSUQiKXx8YSkmJjEhPSQoImlucHV0W25hbWU9bm9DQkJdIikudmFsKCkpeyQoIiNyZWJhdGVNaWxlYWdlX3RyYWRlSW5CYXJQb3B1cCIpLnJlbW92ZUNsYXNzKCJ2YWxpZGl0eS1lcnJvbmVvdXMiKTskKCIjdHJhZGVJbkJhclBvcHVwTWFrZSIpLmhhc0NsYXNzKCJyZXF1aXJlZCIpJiYKIiIhPSQoIiN0cmFkZUluQmFyUG9wdXBNYWtlIikudmFsKCkmJiQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9Ik1BS0VFWCJdJykudmFsKCQoIiN0cmFkZUluQmFyUG9wdXBNYWtlIikudmFsKCkpOyQoIiN0cmFkZUluQmFyUG9wdXBNb2RlbCIpLmhhc0NsYXNzKCJyZXF1aXJlZCIpJiYiIiE9JCgiI3RyYWRlSW5CYXJQb3B1cE1vZGVsIikudmFsKCkmJiQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9Ik1PREVMRVgiXScpLnZhbCgkKCIjdHJhZGVJbkJhclBvcHVwTW9kZWwiKS52YWwoKSk7JCgiI3RyYWRlSW5CYXJQb3B1cFRyaW0iKS5oYXNDbGFzcygicmVxdWlyZWQiKSYmIiIhPSQoIiN0cmFkZUluQmFyUG9wdXBUcmltIikudmFsKCkmJigkKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJUUklNRVgiXScpLnZhbCgkKCIjdHJhZGVJbkJhclBvcHVwVHJpbSIpLnZhbCgpKSwkKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJ0cmFkZWluYmFyU3R5bGVpZCJdJykudmFsKCQoIiN0cmFkZUluQmFyUG9wdXBUcmltIG9wdGlvbjpzZWxlY3RlZCIpLmF0dHIoImRhdGEtc3R5bGVpZCIpKSk7CiQoIiN0cmFkZUluQmFyUG9wdXBZZWFyIikuaGFzQ2xhc3MoInJlcXVpcmVkIikmJiIiIT0kKCIjdHJhZGVJbkJhclBvcHVwWWVhciIpLnZhbCgpJiYkKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJZRUFSRVgiXScpLnZhbCgkKCIjdHJhZGVJbkJhclBvcHVwWWVhciIpLnZhbCgpKTtpZigxPiQoIiNyZWJhdGVNaWxlYWdlX3RyYWRlSW5CYXJQb3B1cCIpLnZhbCgpKXJldHVybiAkKCIjcmViYXRlTWlsZWFnZV90cmFkZUluQmFyUG9wdXAiKS5hZGRDbGFzcygidmFsaWRpdHktZXJyb25lb3VzIiksITE7YT0kKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBzZWxlY3RbbmFtZT0iVkVISUNMRU9QVElPTlMiXScpLmZpbmQoIm9wdGlvbjpzZWxlY3RlZCIpLm1hcChmdW5jdGlvbigpe3JldHVybiB0aGlzLnZhbHVlfSkuZ2V0KCkuam9pbigiLCAiKTt2YXIgYj0kKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBzZWxlY3RbbmFtZT0iVkVISUNMRU9QVElPTlMiXScpLmZpbmQoIm9wdGlvbjpzZWxlY3RlZCIpLm1hcChmdW5jdGlvbigpe3JldHVybiB0aGlzLnRleHR9KS5nZXQoKS5qb2luKCIsICIpOwprPSQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9IktNIl0nKS52YWwoKTskLmFqYXgoe3R5cGU6IlBPU1QiLHVybDooJCgiYm9keSIpLmhhc0NsYXNzKCJFTkdMSVNIIik\/Ii9lbi8iOiIvZnIvIikrIi9hamF4L2dldFRyYWRlSW5CYXJWYWx1ZT93c3dpZHRoPTAiLGRhdGFUeXBlOiJqc29uIixkYXRhOnt1dmM6JCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0idHJhZGVpbmJhclN0eWxlaWQiXScpLnZhbCgpLG9wdGlvbnM6YSx2ZWhpY2xlS006ayxwcm92aW5jZTokKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJkZWFsZXJQcm92aW5jZVRyYWRlSW4iXScpLnZhbCgpfSxzdWNjZXNzOmZ1bmN0aW9uKGMpe3ZhciBoPWMuY2FuYWRpYW5fdHJhZGVpbl92YWx1ZXx8Yy5iYXNlX3RyYWRlaW5fYXZnfHwwLGc9Yy5jYW5hZGlhbl90cmFkZWluX2xvd3x8Yy5iYXNlX3RyYWRlaW5fcm91Z2h8fDA7Yz1jLmNhbmFkaWFuX3RyYWRlaW5faGlnaHx8CmMuYmFzZV90cmFkZWluX2NsZWFufHwwO2g9IiQiK0QyQ1V0aWxzLkZvcm1hdC50b051bWJlcihoKTtnPSIkIitEMkNVdGlscy5Gb3JtYXQudG9OdW1iZXIoZyk7Yz0iJCIrRDJDVXRpbHMuRm9ybWF0LnRvTnVtYmVyKGMpO3ZhciBlPSQoImJvZHkiKS5oYXNDbGFzcygiRU5HTElTSCIpPyQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9IllFQVJFWCJdJykudmFsKCkrIiAiKyQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9Ik1BS0VFWCJdJykudmFsKCkrIiAiKyQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9Ik1PREVMRVgiXScpLnZhbCgpKyIgIiskKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJUUklNRVgiXScpLnZhbCgpOiQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9Ik1BS0VFWCJdJykudmFsKCkrIiAiKyQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9Ik1PREVMRVgiXScpLnZhbCgpKyIgIisKJCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iWUVBUkVYIl0nKS52YWwoKSsiICIrJCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iVFJJTUVYIl0nKS52YWwoKTtiJiYoZSs9IiAoIitiKyIpIik7JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gLnRyYWRlSW5CYXJEZWFsZXJTdGVwIC50cmFkZUluQmFyRGVhbGVyU3RlcE1ha2VNb2RlbFllYXIiKS50ZXh0KGUpOyIxIj09JCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iQ0JCU0lOR0xFVkFMVUUiXScpLnZhbCgpPygkKCIjdHJhZGVJbkJhclBvcHVwRm9ybSAudHJhZGVJbkJhckRlYWxlclN0ZXAgLnRyYWRlSW5CYXJDQkJNaW5WYWx1ZSIpLnBhcmVudCgpLmhpZGUoKSwkKCIjdHJhZGVJbkJhclBvcHVwRm9ybSAudHJhZGVJbkJhckRlYWxlclN0ZXAgLnRyYWRlSW5CYXJDQkJNYXhWYWx1ZSIpLnBhcmVudCgpLmhpZGUoKSk6JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gLnRyYWRlSW5CYXJEZWFsZXJTdGVwIC50cmFkZUluQmFyQ0JCQXZnVmFsdWUiKS5wYXJlbnQoKS5oaWRlKCk7CiQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIC50cmFkZUluQmFyRGVhbGVyU3RlcCAudHJhZGVJbkJhckNCQk1pblZhbHVlIikudGV4dChnKTskKCIjdHJhZGVJbkJhclBvcHVwRm9ybSAudHJhZGVJbkJhckRlYWxlclN0ZXAgLnRyYWRlSW5CYXJDQkJNYXhWYWx1ZSIpLnRleHQoYyk7JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gLnRyYWRlSW5CYXJEZWFsZXJTdGVwIC50cmFkZUluQmFyQ0JCQXZnVmFsdWUiKS50ZXh0KGgpOyQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIC50cmFkZUluQmFyRGVhbGVyU3RlcCIpLnNob3coKX19KTtyZXR1cm4hMX19LG9uQmVmb3JlU3VibWl0Q0JCQ2FsbDpmdW5jdGlvbihhKXt2YXIgaz0kKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBzZWxlY3RbbmFtZT0iVkVISUNMRU9QVElPTlMiXScpLmZpbmQoIm9wdGlvbjpzZWxlY3RlZCIpLm1hcChmdW5jdGlvbigpe3JldHVybiB0aGlzLnZhbHVlfSkuZ2V0KCkuam9pbigiLCAiKSxkPSQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIHNlbGVjdFtuYW1lPSJWRUhJQ0xFT1BUSU9OUyJdJykuZmluZCgib3B0aW9uOnNlbGVjdGVkIikubWFwKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudGV4dH0pLmdldCgpLmpvaW4oIiwgIik7CiIiIT1kJiYkKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJRVUVTVElPTlMiXScpLnZhbChkKTtkPSQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9IktNIl0nKS52YWwoKTskLmFqYXgoe3R5cGU6IlBPU1QiLHVybDooJCgiYm9keSIpLmhhc0NsYXNzKCJFTkdMSVNIIik\/Ii9lbi8iOiIvZnIvIikrIi9hamF4L2dldFRyYWRlSW5CYXJWYWx1ZT93c3dpZHRoPTAiLGRhdGFUeXBlOiJqc29uIixkYXRhOnt1dmM6JCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0idHJhZGVpbmJhclN0eWxlaWQiXScpLnZhbCgpLG9wdGlvbnM6ayx2ZWhpY2xlS006ZCxwcm92aW5jZTokKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJkZWFsZXJQcm92aW5jZVRyYWRlSW4iXScpLnZhbCgpfSxzdWNjZXNzOmZ1bmN0aW9uKGIpe3ZhciBjPWIuY2FuYWRpYW5fdHJhZGVpbl92YWx1ZXx8Yi5iYXNlX3RyYWRlaW5fYXZnfHwKMCxoPWIuY2FuYWRpYW5fdHJhZGVpbl9sb3d8fGIuYmFzZV90cmFkZWluX3JvdWdofHwwO2I9Yi5jYW5hZGlhbl90cmFkZWluX2hpZ2h8fGIuYmFzZV90cmFkZWluX2NsZWFufHwwO3ZhciBnPSQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9IkNCQkFEREVEVkFMVUUiXScpLnZhbCgpLGU9JCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iQ0JCQURERURWQUxVRU1BS0VTIl0nKS52YWwoKSxuPSQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9IkNCQkFEREVEVkFMVUVUWVBFIl0nKS52YWwoKSxyPSQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9IkNCQlNJTkdMRVZBTFVFIl0nKS52YWwoKTswIT1nJiYiIiE9ZSYmLTE8ZS5zcGxpdCgiOyIpLmluZGV4T2YoJCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iTUFLRUVYIl0nKS52YWwoKSkmJigiY2FzaCI9PW4\/KGMrPXBhcnNlSW50KGcpLGgrPXBhcnNlSW50KGcpLGIrPQpwYXJzZUludChnKSk6InBlcmNlbnRhZ2UiPT1uJiYoZz0xK2cvMTAwLGMqPWcsaCo9ZyxiKj1nKSk7JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gW25hbWU9dHJhZGVJbkF2Z10iKS5hdHRyKCJkYXRhLWF2ZyIsYyk7aWYoJCgiaW5wdXRbbmFtZT1maW5hbmNlVHJhZGVJbk1ha2VdIikubGVuZ3RoKXtnPSQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9WUVBUkVYXSIpLnZhbCgpO2U9JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT1NQUtFRVhdIikudmFsKCk7bj0kKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPU1PREVMRVhdIikudmFsKCk7bGV0IGw9JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT1UUklNRVhdIikudmFsKCk7JCgiaW5wdXRbbmFtZT1maW5hbmNlVHJhZGVJbk1ha2VdIikudmFsKGUpOyQoImlucHV0W25hbWU9ZmluYW5jZVRyYWRlSW5Nb2RlbF0iKS52YWwobik7JCgiaW5wdXRbbmFtZT1maW5hbmNlVHJhZGVJblllYXJdIikudmFsKGcpOwokKCJpbnB1dFtuYW1lPWZpbmFuY2VUcmFkZUluVHJpbV0iKS52YWwobCk7JCgiaW5wdXRbbmFtZT1maW5hbmNlVHJhZGVJblZhbHVlXSIpLnZhbCgkKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPXRyYWRlSW5BdmddIikuYXR0cigiZGF0YS1hdmciKSk7JCgiI3BheW1lbnRUcmFkZUluVmFsdWUiKS52YWwoJCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT10cmFkZUluQXZnXSIpLmF0dHIoImRhdGEtYXZnIikpOyQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9dHJhZGVJbkF2Z10iKS5hdHRyKCJkYXRhLWF2ZyIsIiIpfWlmKDE9PWEuc2V0dGluZ3MuZm9ybXVsdGlzdGVwKXtsZXQgbD1pc05hTihwYXJzZUludChjKSk\/MDpjO2w9RDJDVXRpbHMuRm9ybWF0LnRvTnVtYmVyKGwpO2VtYWlsSGFuZGxlci51c2VyRW1haWw9JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT1FTUFJTF0iKS52YWwoKTtlbWFpbEhhbmRsZXIudXNlclBob25lPQokKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPUVNQUlMUEhPTkVdIikudmFsKCk7dmFyIGY7Yz1udWxsIT0oZj0kKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPUZOQU1FXSIpLnZhbCgpKT9mOiIiO3ZhciB1O2Y9bnVsbCE9KHU9Yy5zcGxpdCgiICIpWzBdKT91OiIiO3ZhciBxO3U9bnVsbCE9KHE9Yy5zcGxpdCgiICIpWzFdKT9xOiIiO2VtYWlsSGFuZGxlci51c2VyRmlyc3ROYW1lPWY7ZW1haWxIYW5kbGVyLnVzZXJMYXN0TmFtZT11O3ZhciBtPSQoImJvZHkiKS5oYXNDbGFzcygiRU5HTElTSCIpPyQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9IllFQVJFWCJdJykudmFsKCkrIiAiKyQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9Ik1BS0VFWCJdJykudmFsKCkrIiAiKyQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9Ik1PREVMRVgiXScpLnZhbCgpOiQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9Ik1BS0VFWCJdJykudmFsKCkrCiIgIiskKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJNT0RFTEVYIl0nKS52YWwoKSsiICIrJCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iWUVBUkVYIl0nKS52YWwoKTtpc05hTihwYXJzZUludChsKSl8fChxPW5ldyBDdXN0b21FdmVudCgidHJhY2tzdGVwLmNvbXBsZXRlIix7ZGV0YWlsOntzdGVwSWQ6IlRyYWRlSW5BY3Rpb25Cb3giLG9uQ29tcGxldGU6cD0+e3AuZGF0YXNldC5jb21wbF90eHRfZnI9cC5kYXRhc2V0LmNvbXBsX3R4dF9mci5yZXBsYWNlKCJ7JFRSQURFQ0FSfSIsbSkucmVwbGFjZSgieyRUUkFERVZBTH0iLGwpO3AuZGF0YXNldC5jb21wbF90eHRfZW49cC5kYXRhc2V0LmNvbXBsX3R4dF9lbi5yZXBsYWNlKCJ7JFRSQURFQ0FSfSIsbSkucmVwbGFjZSgieyRUUkFERVZBTH0iLGwpO3ZhciB0PXt5ZWFyOiQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9WUVBUkVYXSIpLnZhbCgpLG1ha2U6JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT1NQUtFRVhdIikudmFsKCksCm1vZGVsOiQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9TU9ERUxFWF0iKS52YWwoKSx0cmltOiQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9VFJJTUVYXSIpLnZhbCgpLHZhbHVlOnBhcnNlSW50KGwucmVwbGFjZSgiLCIsIiIpKX07X2xvY2FsU3RvcmFnZVNldCgidHJhZGVpbl9zdWJtaXRfZGF0YSIsSlNPTi5zdHJpbmdpZnkodCksMSk7aWYoMT5wYXJzZUludChsKSl7dD0kKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPXplcm9WYWx1ZU1lc3NhZ2VFbl0iKS52YWwoKTtsZXQgdj0kKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPXplcm9WYWx1ZU1lc3NhZ2VGcl0iKS52YWwoKTtwLmRhdGFzZXQuY29tcGxfdHh0X2ZyPWAke219IHwgJHt2fWA7cC5kYXRhc2V0LmNvbXBsX3R4dF9lbj1gJHttfSB8ICR7dH1gfX0sZm9yY2VVcGRhdGU6ITB9fSksZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChxKSk7YS5zZXR0aW5ncy5mb3JtdWx0aXN0ZXA9CiExO2EuY2xvc2UoKX1lbHNlICQoImlucHV0W25hbWU9dHJhZGVJblZhbHVlQ0JCQ2FsbGVkXSIpLnZhbCgxKSwiMSI9PXI\/Yj1oPSJyZW1vdmVlbXB0eSI6Yz0icmVtb3ZlZW1wdHkiLDA8aHx8MDxifHwwPGM\/KCQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIFtuYW1lPXRyYWRlSW5BdmddIikudmFsKEQyQ1V0aWxzLkZvcm1hdC50b051bWJlcihjKSksJCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gW25hbWU9dHJhZGVJbkxvd10iKS52YWwoRDJDVXRpbHMuRm9ybWF0LnRvTnVtYmVyKGgpKSwkKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBbbmFtZT10cmFkZUluSGlnaF0iKS52YWwoRDJDVXRpbHMuRm9ybWF0LnRvTnVtYmVyKGIpKSwkKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBbbmFtZT10cmFkZUluVmFsdWVDQkJBdmFpbGFibGVWYWx1ZXNdIikudmFsKDEpLHRyYWRlaW5wb3B1cGQyYy5pbml0VHJhZGVJblN0ZXAyKGEpLHBvcHVwSXNTdWJtaXR0aW5nPSExKToocG9wdXBJc1N1Ym1pdHRpbmc9ITEsCiQoImlucHV0W25hbWU9c3RlcDNkb25lXSIpLnZhbCgxKSwkKCIudHJhZGVJbkJhclBvcHVwU3VibWl0IikudHJpZ2dlcigiY2xpY2siKSl9fSl9LG9uQmVmb3JlU3VibWl0QWNjdXRyYWRlQ2FsbDpmdW5jdGlvbihhKXt2YXIgaz0kKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBzZWxlY3RbbmFtZT0iVkVISUNMRU9QVElPTlMiXScpLmZpbmQoIm9wdGlvbjpzZWxlY3RlZCIpLm1hcChmdW5jdGlvbigpe3JldHVybiB0aGlzLnZhbHVlfSkuZ2V0KCkuam9pbigiLCAiKSxkPSQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIHNlbGVjdFtuYW1lPSJWRUhJQ0xFT1BUSU9OUyJdJykuZmluZCgib3B0aW9uOnNlbGVjdGVkIikubWFwKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudGV4dH0pLmdldCgpLmpvaW4oIiwgIik7IiIhPWQmJiQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9IlFVRVNUSU9OUyJdJykudmFsKGQpO2Q9JCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iS00iXScpLnZhbCgpOwp2YXIgYj0kKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBzZWxlY3RbbmFtZT0iQ09MT1JFWCJdJykuZmluZCgib3B0aW9uOnNlbGVjdGVkIikuYXR0cigiZGF0YS1pZCIpOyQuYWpheCh7dHlwZToiUE9TVCIsdXJsOigkKCJib2R5IikuaGFzQ2xhc3MoIkVOR0xJU0giKT8iL2VuLyI6Ii9mci8iKSsiL2FqYXgvZ2V0VHJhZGVJbk1uZ1ZhbHVlP3dzd2lkdGg9MCIsZGF0YVR5cGU6Impzb24iLGRhdGE6e2lkOiQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9InRyYWRlaW5iYXJTdHlsZWlkIl0nKS52YWwoKSxvcHRpb25zOmssa206ZCxjb2xvcjpiLHByb3ZpbmNlOiQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9ImRlYWxlclByb3ZpbmNlVHJhZGVJbiJdJykudmFsKCl9LHN1Y2Nlc3M6ZnVuY3Rpb24oYyl7dmFyIGg9Yy5hdmd8fDAsZz1jLmxvd3x8MDtjPWMuaGlnaHx8MDt2YXIgZT0kKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJDQkJBRERFRFZBTFVFIl0nKS52YWwoKSwKbj0kKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJDQkJBRERFRFZBTFVFTUFLRVMiXScpLnZhbCgpLHI9JCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iQ0JCQURERURWQUxVRVRZUEUiXScpLnZhbCgpLGY9JCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iQ0JCU0lOR0xFVkFMVUUiXScpLnZhbCgpOzAhPWUmJiIiIT1uJiYtMTxuLnNwbGl0KCI7IikuaW5kZXhPZigkKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJNQUtFRVgiXScpLnZhbCgpKSYmKCJjYXNoIj09cj8oaCs9cGFyc2VJbnQoZSksZys9cGFyc2VJbnQoZSksYys9cGFyc2VJbnQoZSkpOiJwZXJjZW50YWdlIj09ciYmKGU9MStlLzEwMCxoKj1lLGcqPWUsYyo9ZSkpOyQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIFtuYW1lPXRyYWRlSW5BdmddIikuYXR0cigiZGF0YS1hdmciLGgpO2lmKCQoImlucHV0W25hbWU9ZmluYW5jZVRyYWRlSW5NYWtlXSIpLmxlbmd0aCl7ZT0KJCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT1ZRUFSRVhdIikudmFsKCk7bj0kKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPU1BS0VFWF0iKS52YWwoKTtyPSQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9TU9ERUxFWF0iKS52YWwoKTtsZXQgcD0kKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPVRSSU1FWF0iKS52YWwoKTskKCJpbnB1dFtuYW1lPWZpbmFuY2VUcmFkZUluTWFrZV0iKS52YWwobik7JCgiaW5wdXRbbmFtZT1maW5hbmNlVHJhZGVJbk1vZGVsXSIpLnZhbChyKTskKCJpbnB1dFtuYW1lPWZpbmFuY2VUcmFkZUluWWVhcl0iKS52YWwoZSk7JCgiaW5wdXRbbmFtZT1maW5hbmNlVHJhZGVJblRyaW1dIikudmFsKHApOyQoImlucHV0W25hbWU9ZmluYW5jZVRyYWRlSW5WYWx1ZV0iKS52YWwoJCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT10cmFkZUluQXZnXSIpLmF0dHIoImRhdGEtYXZnIikpOyQoIiNwYXltZW50VHJhZGVJblZhbHVlIikudmFsKCQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9dHJhZGVJbkF2Z10iKS5hdHRyKCJkYXRhLWF2ZyIpKTsKJCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT10cmFkZUluQXZnXSIpLmF0dHIoImRhdGEtYXZnIiwiIil9aWYoMT09YS5zZXR0aW5ncy5mb3JtdWx0aXN0ZXApe2xldCBwPWlzTmFOKHBhcnNlSW50KGgpKT8wOmg7cD1EMkNVdGlscy5Gb3JtYXQudG9OdW1iZXIocCk7ZW1haWxIYW5kbGVyLnVzZXJFbWFpbD0kKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPUVNQUlMXSIpLnZhbCgpO2VtYWlsSGFuZGxlci51c2VyUGhvbmU9JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT1FTUFJTFBIT05FXSIpLnZhbCgpO3ZhciB1O2g9bnVsbCE9KHU9JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT1GTkFNRV0iKS52YWwoKSk\/dToiIjt2YXIgcTt1PW51bGwhPShxPWguc3BsaXQoIiAiKVswXSk\/cToiIjt2YXIgbTtxPW51bGwhPShtPWguc3BsaXQoIiAiKVsxXSk\/bToiIjtlbWFpbEhhbmRsZXIudXNlckZpcnN0TmFtZT11O2VtYWlsSGFuZGxlci51c2VyTGFzdE5hbWU9CnE7dmFyIGw9JCgiYm9keSIpLmhhc0NsYXNzKCJFTkdMSVNIIik\/JCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iWUVBUkVYIl0nKS52YWwoKSsiICIrJCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iTUFLRUVYIl0nKS52YWwoKSsiICIrJCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iTU9ERUxFWCJdJykudmFsKCk6JCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iTUFLRUVYIl0nKS52YWwoKSsiICIrJCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iTU9ERUxFWCJdJykudmFsKCkrIiAiKyQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9IllFQVJFWCJdJykudmFsKCk7aXNOYU4ocGFyc2VJbnQocCkpfHwobT1uZXcgQ3VzdG9tRXZlbnQoInRyYWNrc3RlcC5jb21wbGV0ZSIse2RldGFpbDp7c3RlcElkOiJUcmFkZUluQWN0aW9uQm94IixvbkNvbXBsZXRlOnQ9Pnt0LmRhdGFzZXQuY29tcGxfdHh0X2ZyPQp0LmRhdGFzZXQuY29tcGxfdHh0X2ZyLnJlcGxhY2UoInskVFJBREVDQVJ9IixsKS5yZXBsYWNlKCJ7JFRSQURFVkFMfSIscCk7dC5kYXRhc2V0LmNvbXBsX3R4dF9lbj10LmRhdGFzZXQuY29tcGxfdHh0X2VuLnJlcGxhY2UoInskVFJBREVDQVJ9IixsKS5yZXBsYWNlKCJ7JFRSQURFVkFMfSIscCk7dmFyIHY9e3llYXI6JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT1ZRUFSRVhdIikudmFsKCksbWFrZTokKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPU1BS0VFWF0iKS52YWwoKSxtb2RlbDokKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPU1PREVMRVhdIikudmFsKCksdHJpbTokKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPVRSSU1FWF0iKS52YWwoKSx2YWx1ZTpwYXJzZUludChwLnJlcGxhY2UoIiwiLCIiKSl9O19sb2NhbFN0b3JhZ2VTZXQoInRyYWRlaW5fc3VibWl0X2RhdGEiLEpTT04uc3RyaW5naWZ5KHYpLDEpO2lmKDE+CnBhcnNlSW50KHApKXt2PSQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9emVyb1ZhbHVlTWVzc2FnZUVuXSIpLnZhbCgpO2xldCB3PSQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9emVyb1ZhbHVlTWVzc2FnZUZyXSIpLnZhbCgpO3QuZGF0YXNldC5jb21wbF90eHRfZnI9YCR7bH0gfCAke3d9YDt0LmRhdGFzZXQuY29tcGxfdHh0X2VuPWAke2x9IHwgJHt2fWB9fSxmb3JjZVVwZGF0ZTohMH19KSxkb2N1bWVudC5kaXNwYXRjaEV2ZW50KG0pKTthLnNldHRpbmdzLmZvcm11bHRpc3RlcD0hMTthLmNsb3NlKCl9ZWxzZSAkKCJpbnB1dFtuYW1lPXRyYWRlSW5WYWx1ZUNCQkNhbGxlZF0iKS52YWwoMSksIjEiPT1mP2M9Zz0icmVtb3ZlZW1wdHkiOmg9InJlbW92ZWVtcHR5IiwwPGd8fDA8Y3x8MDxoPygkKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBbbmFtZT10cmFkZUluQXZnXSIpLnZhbChEMkNVdGlscy5Gb3JtYXQudG9OdW1iZXIoaCkpLCQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIFtuYW1lPXRyYWRlSW5Mb3ddIikudmFsKEQyQ1V0aWxzLkZvcm1hdC50b051bWJlcihnKSksCiQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIFtuYW1lPXRyYWRlSW5IaWdoXSIpLnZhbChEMkNVdGlscy5Gb3JtYXQudG9OdW1iZXIoYykpLCQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIFtuYW1lPXRyYWRlSW5WYWx1ZUNCQkF2YWlsYWJsZVZhbHVlc10iKS52YWwoMSksdHJhZGVpbnBvcHVwZDJjLmluaXRUcmFkZUluU3RlcDIoYSksdHJhZGVpbnBvcHVwZDJjLnNldEhlaWdodE1vYmlsZSgyKSx0cmFkZWlucG9wdXBkMmMudHJhZGVJbkJvdHRvbUxvZ29IZWlndCgpLHBvcHVwSXNTdWJtaXR0aW5nPSExKToocG9wdXBJc1N1Ym1pdHRpbmc9ITEsJCgiaW5wdXRbbmFtZT1zdGVwM2RvbmVdIikudmFsKDEpLCQoIi50cmFkZUluQmFyUG9wdXBTdWJtaXQiKS50cmlnZ2VyKCJjbGljayIpKX19KX0sb25CZWZvcmVTdWJtaXRDQkJNZXNzYWdlOmZ1bmN0aW9uKGEpeyQoIiN0cmFkZUluQmFyUG9wdXBTdWJtaXQiKS5wcm9wKCJkaXNhYmxlZCIsITApOyQoIiN0cmFkZUluQmFyUG9wdXBTdWJtaXQiKS5wYXJlbnQoKS5oaWRlKCk7CmE9JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT1FTUFJTF0iKS52YWwoKTt2YXIgaz0kKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPUVNQUlMUEhPTkVdIikudmFsKCksZD0kKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPVlFQVJFWF0iKS52YWwoKSxiPSQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9TUFLRUVYXSIpLnZhbCgpLGM9JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT1NT0RFTEVYXSIpLnZhbCgpOyQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9VFJJTUVYXSIpLnZhbCgpO3ZhciBoPSQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9dHJhZGVJbkF2Z10iKS52YWwoKSxnPSQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9dHJhZGVJbkxvd10iKS52YWwoKSxlPSQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9dHJhZGVJbkhpZ2hdIikudmFsKCk7ZD0KJCgiYm9keSIpLmhhc0NsYXNzKCJFTkdMSVNIIik\/ZCsiICIrYisiICIrYzpiKyIgIitjKyIgIitkO2I9JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT1kZWFsZXJOYW1lVHJhZGVJbl0iKS52YWwoKTtjPSQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9IkNCQlNJTkdMRVZBTFVFIl0nKS52YWwoKTt2YXIgbj0iIjtpZigiU01TIj09JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT10cmFkZUluQmFyU21zT3JFbWFpbF06Y2hlY2tlZCIpLnZhbCgpKXZhciByPSJTTVMiLGY9IjEiPT1jPyQoImJvZHkiKS5oYXNDbGFzcygiRU5HTElTSCIpPyJUaGUgQ2FuYWRpYW4gQmxhY2sgQm9vayBlc3RpbWF0ZWQgdHJhZGUgdmFsdWUgZm9yIHlvdXIgIitkKyIgaXMgJCIraCsiLiBXZSdsbCBjb250YWN0IHlvdSBzaG9ydGx5IHRvIGRpc2N1c3MuICIrYisiICIrJCgiaW5wdXRbbmFtZT10cmFkZUluTXNnRGlzY2xhaW1lclRleHQxXSIpLnZhbCgpKyQoImlucHV0W25hbWU9dHJhZGVJbk1zZ0Rpc2NsYWltZXJUZXh0Ml0iKS52YWwoKToKIkxhIHZhbGV1ciBkJ8OpY2hhbmdlIGVzdGltw6llIENhbmFkaWFuIEJsYWNrIEJvb2sgcG91ciB2b3RyZSAiK2QrIiBlc3QgJCIraCsiLiBOb3VzIGNvbW11bmlxdWVyb25zIGF2ZWMgdm91cyBzb3VzIHBldSBwb3VyIGVuIGRpc2N1dGVyLiAiK2IrIiAiKyQoImlucHV0W25hbWU9dHJhZGVJbk1zZ0Rpc2NsYWltZXJUZXh0MV0iKS52YWwoKSskKCJpbnB1dFtuYW1lPXRyYWRlSW5Nc2dEaXNjbGFpbWVyVGV4dDJdIikudmFsKCk6JCgiYm9keSIpLmhhc0NsYXNzKCJFTkdMSVNIIik\/IlRoZSBDYW5hZGlhbiBCbGFjayBCb29rIGVzdGltYXRlZCB0cmFkZSB2YWx1ZSBmb3IgeW91ciAiK2QrIiBpcyBiZXR3ZWVuICQiK2crIiBhbmQgJCIrZSsiLiBXZSdsbCBjb250YWN0IHlvdSBzaG9ydGx5IHRvIGRpc2N1c3MuICIrYisiICIrJCgiaW5wdXRbbmFtZT10cmFkZUluTXNnRGlzY2xhaW1lclRleHQxXSIpLnZhbCgpKyQoImlucHV0W25hbWU9dHJhZGVJbk1zZ0Rpc2NsYWltZXJUZXh0Ml0iKS52YWwoKToKIkxhIHZhbGV1ciBkJ8OpY2hhbmdlIGVzdGltw6llIENhbmFkaWFuIEJsYWNrIEJvb2sgcG91ciB2b3RyZSAiK2QrIiBzZSBzaXR1ZSBlbnRyZSAkIitnKyIgZXQgJCIrZSsiLiBOb3VzIGNvbW11bmlxdWVyb25zIGF2ZWMgdm91cyBzb3VzIHBldSBwb3VyIGVuIGRpc2N1dGVyLiAiK2IrIiAiKyQoImlucHV0W25hbWU9dHJhZGVJbk1zZ0Rpc2NsYWltZXJUZXh0MV0iKS52YWwoKSskKCJpbnB1dFtuYW1lPXRyYWRlSW5Nc2dEaXNjbGFpbWVyVGV4dDJdIikudmFsKCk7ZWxzZSByPSJFTUFJTCIsbj0kKCJib2R5IikuaGFzQ2xhc3MoIkVOR0xJU0giKT8iSU1QT1JUQU5UOiBZb3VyIHRyYWRlIHZhbHVlIGZvciB5b3VyICIrZDoiSU1QT1JUQU5UOiBMYSB2YWxldXIgZCfDqWNoYW5nZSBkZSB2b3RyZSAiK2QsJCgiYm9keSIpLmhhc0NsYXNzKCJFTkdMSVNIIik\/KGY9IkhpICIrJCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT1GTkFNRV0iKS52YWwoKSsiLDxicj48YnI+IixmPQpmKygiRm9sbG93aW5nIHVwIG9uIHlvdXIgcmVjZW50IHRyYWRlIGVzdGltYXRlIHJlcXVlc3QgZm9yIGEgIitkKyIsIGhlcmUgaXMgdGhlIGVzdGltYXRlIGZyb20gdGhlIENhbmFkaWFuIEJsYWNrIEJvb2s6PGJyPjxicj4iKSsoJCgiaW5wdXRbbmFtZT10cmFkZUluTXNnRGlzY2xhaW1lclRleHQxXSIpLnZhbCgpKyQoImlucHV0W25hbWU9dHJhZGVJbk1zZ0Rpc2NsYWltZXJUZXh0Ml0iKS52YWwoKSsiPGJyPjxicj4iKSxmPSIxIj09Yz9mKygiRXN0aW1hdGVkIFZhbHVlOiAkIitoKyI8YnI+Iik6ZisoIk1pbmltdW0gRXN0aW1hdGVkIFZhbHVlOiAkIitnKyI8YnI+TWF4aW11bSBFc3RpbWF0ZWQgVmFsdWU6ICQiKSsoZSsiPGJyPiIpLGYrPSIoQWNjb3JkaW5nIHRvIENhbmFkaWFuIEJsYWNrIEJvb2ssIGxlc3MgcmVjb25kaXRpb25pbmcgY29zdHMsIGlmIGFwcGxpY2FibGUpPGJyPjxicj4iLGYrPSJBIHJlcHJlc2VudGF0aXZlIHdpbGwgY29udGFjdCB5b3Ugc2hvcnRseSB0byBleHBsYWluIHRoZSBkZXRhaWxzIG9mIHRoZSB2YWx1ZXMuPGJyPjxicj4iLApmKz0iVGhhbmtzIGZvciB0cnVzdGluZyAiK2IrIiE8YnI+PGJyPiIpOihmPSJCb25qb3VyICIrJCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT1GTkFNRV0iKS52YWwoKSsiLDxicj48YnI+IixmPWYrKCJTdWl0ZSDDoCB2b3RyZSBkZW1hbmRlIGQnZXN0aW1hdGlvbiBkZSBsYSB2YWxldXIgZGUgdm90cmUgw6ljaGFuZ2UgcG91ciB1biAiK2QrIiwgdm9pY2kgbCfDqXZhbHVhdGlvbiBkZSB2b3RyZSB2w6loaWN1bGUgc2Vsb24gbGUgQ2FuYWRpYW4gQmxhY2sgQm9vazo8YnI+PGJyPiIpKygkKCJpbnB1dFtuYW1lPXRyYWRlSW5Nc2dEaXNjbGFpbWVyVGV4dDFdIikudmFsKCkrJCgiaW5wdXRbbmFtZT10cmFkZUluTXNnRGlzY2xhaW1lclRleHQyXSIpLnZhbCgpKyI8YnI+PGJyPiIpLGY9IjEiPT1jP2YrKCJWYWxldXIgZXN0aW3DqWU6ICQiK2grIjxicj4iKTpmKygiVmFsZXVyIGVzdGltw6llIG1pbmltYWxlOiAkIitnKyI8YnI+VmFsZXVyIGVzdGltw6llIG1heGltYWxlOiAkIikrCihlKyI8YnI+IiksZis9IihTZWxvbiBsZSBDYW5hZGlhbiBCbGFjayBCb29rLCBtb2lucyBsZXMgY2\/Du3RzIGRlIHJlY29uZGl0aW9ubmVtZW50IHNpIGFwcGxpY2FibGUpPGJyPjxicj4iLGYrPSJVbiBjb25zZWlsbGVyIGVudHJlcmEgZW4gY29tbXVuaWNhdGlvbiBzb3VzIHBldSBhdmVjIHZvdXMgYWZpbiBkZSBkaXNjdXRlciBkZSBjZXR0ZSB2YWxldXIgZXQgdm91cyBlbiBleHBsaXF1ZXIgbGVzIGTDqXRhaWxzLjxicj48YnI+IixmKz0iTWVyY2kgZGUgZmFpcmUgY29uZmlhbmNlIMOgICIrYisiITxicj48YnI+Iik7Zj1idG9hKGYpO249YnRvYShuKTtlbWFpbEhhbmRsZXIub25BZnRlckxlYWRDcmVhdGVkPXthY3Rpb246cixzdWJqZWN0Om4sbWVzc2FnZTpmLGVtYWlsOmEscGhvbmU6a319LG9uQmVmb3JlU3VibWl0QWNjdXRyYWRlTWVzc2FnZTpmdW5jdGlvbihhKXskKCIjdHJhZGVJbkJhclBvcHVwU3VibWl0IikucHJvcCgiZGlzYWJsZWQiLCEwKTskKCIjdHJhZGVJbkJhclBvcHVwU3VibWl0IikucGFyZW50KCkuaGlkZSgpOwphPSQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9RU1BSUxdIikudmFsKCk7dmFyIGs9JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT1FTUFJTFBIT05FXSIpLnZhbCgpLGQ9JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT1ZRUFSRVhdIikudmFsKCksYj0kKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPU1BS0VFWF0iKS52YWwoKSxjPSQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9TU9ERUxFWF0iKS52YWwoKTskKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPVRSSU1FWF0iKS52YWwoKTt2YXIgaD0kKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPXRyYWRlSW5BdmddIikudmFsKCksZz0kKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPXRyYWRlSW5Mb3ddIikudmFsKCksZT0kKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPXRyYWRlSW5IaWdoXSIpLnZhbCgpO2Q9CiQoImJvZHkiKS5oYXNDbGFzcygiRU5HTElTSCIpP2QrIiAiK2IrIiAiK2M6YisiICIrYysiICIrZDtiPSQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9ZGVhbGVyTmFtZVRyYWRlSW5dIikudmFsKCk7Yz0kKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJDQkJTSU5HTEVWQUxVRSJdJykudmFsKCk7dmFyIG49IiI7aWYoIlNNUyI9PSQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9dHJhZGVJbkJhclNtc09yRW1haWxdOmNoZWNrZWQiKS52YWwoKSl2YXIgcj0iU01TIixmPSIxIj09Yz8kKCJib2R5IikuaGFzQ2xhc3MoIkVOR0xJU0giKT8iQWNjdS1UcmFkZSBlc3RpbWF0ZWQgdHJhZGUgdmFsdWUgZm9yIHlvdXIgIitkKyIgaXMgJCIraCsiLiBXZSdsbCBjb250YWN0IHlvdSBzaG9ydGx5IHRvIGRpc2N1c3MuICIrYisiICIrJCgiaW5wdXRbbmFtZT10cmFkZUluTXNnRGlzY2xhaW1lclRleHQxXSIpLnZhbCgpKyQoImlucHV0W25hbWU9dHJhZGVJbk1zZ0Rpc2NsYWltZXJUZXh0Ml0iKS52YWwoKToKIkxhIHZhbGV1ciBkJ8OpY2hhbmdlIEFjY3UtVHJhZGUgZXN0aW3DqWUgcG91ciB2b3RyZSAiK2QrIiBlc3QgJCIraCsiLiBOb3VzIGNvbW11bmlxdWVyb25zIGF2ZWMgdm91cyBzb3VzIHBldSBwb3VyIGVuIGRpc2N1dGVyLiAiK2IrIiAiKyQoImlucHV0W25hbWU9dHJhZGVJbk1zZ0Rpc2NsYWltZXJUZXh0MV0iKS52YWwoKSskKCJpbnB1dFtuYW1lPXRyYWRlSW5Nc2dEaXNjbGFpbWVyVGV4dDJdIikudmFsKCk6JCgiYm9keSIpLmhhc0NsYXNzKCJFTkdMSVNIIik\/IkFjY3UtVHJhZGUgZXN0aW1hdGVkIHRyYWRlIHZhbHVlIGZvciB5b3VyICIrZCsiIGlzIGJldHdlZW4gJCIrZysiIGFuZCAkIitlKyIuIFdlJ2xsIGNvbnRhY3QgeW91IHNob3J0bHkgdG8gZGlzY3Vzcy4gIitiKyIgIiskKCJpbnB1dFtuYW1lPXRyYWRlSW5Nc2dEaXNjbGFpbWVyVGV4dDFdIikudmFsKCkrJCgiaW5wdXRbbmFtZT10cmFkZUluTXNnRGlzY2xhaW1lclRleHQyXSIpLnZhbCgpOiJMYSB2YWxldXIgZCfDqWNoYW5nZSBBY2N1LVRyYWRlIGVzdGltw6llIHBvdXIgdm90cmUgIisKZCsiIHNlIHNpdHVlIGVudHJlICQiK2crIiBldCAkIitlKyIuIE5vdXMgY29tbXVuaXF1ZXJvbnMgYXZlYyB2b3VzIHNvdXMgcGV1IHBvdXIgZW4gZGlzY3V0ZXIuICIrYisiICIrJCgiaW5wdXRbbmFtZT10cmFkZUluTXNnRGlzY2xhaW1lclRleHQxXSIpLnZhbCgpKyQoImlucHV0W25hbWU9dHJhZGVJbk1zZ0Rpc2NsYWltZXJUZXh0Ml0iKS52YWwoKTtlbHNlIHI9IkVNQUlMIixuPSQoImJvZHkiKS5oYXNDbGFzcygiRU5HTElTSCIpPyJJTVBPUlRBTlQ6IFlvdXIgdHJhZGUgdmFsdWUgZm9yIHlvdXIgIitkOiJJTVBPUlRBTlQ6IExhIHZhbGV1ciBkJ8OpY2hhbmdlIGRlIHZvdHJlICIrZCwkKCJib2R5IikuaGFzQ2xhc3MoIkVOR0xJU0giKT8oZj0iSGkgIiskKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPUZOQU1FXSIpLnZhbCgpKyIsPGJyPjxicj4iLGY9ZisoIkZvbGxvd2luZyB1cCBvbiB5b3VyIHJlY2VudCB0cmFkZSBlc3RpbWF0ZSByZXF1ZXN0IGZvciBhICIrCmQrIiwgaGVyZSBpcyB0aGUgZXN0aW1hdGUgZnJvbSBBY2N1LVRyYWRlOjxicj48YnI+IikrKCQoImlucHV0W25hbWU9dHJhZGVJbk1zZ0Rpc2NsYWltZXJUZXh0MV0iKS52YWwoKSskKCJpbnB1dFtuYW1lPXRyYWRlSW5Nc2dEaXNjbGFpbWVyVGV4dDJdIikudmFsKCkrIjxicj48YnI+IiksZj0iMSI9PWM\/ZisoIkVzdGltYXRlZCBWYWx1ZTogJCIraCsiPGJyPiIpOmYrKCJNaW5pbXVtIEVzdGltYXRlZCBWYWx1ZTogJCIrZysiPGJyPk1heGltdW0gRXN0aW1hdGVkIFZhbHVlOiAkIikrKGUrIjxicj4iKSxmKz0iKEFjY29yZGluZyB0byBBY2N1LVRyYWRlLCBsZXNzIHJlY29uZGl0aW9uaW5nIGNvc3RzLCBpZiBhcHBsaWNhYmxlKTxicj48YnI+IixmKz0iQSByZXByZXNlbnRhdGl2ZSB3aWxsIGNvbnRhY3QgeW91IHNob3J0bHkgdG8gZXhwbGFpbiB0aGUgZGV0YWlscyBvZiB0aGUgdmFsdWVzLjxicj48YnI+IixmKz0iVGhhbmtzIGZvciB0cnVzdGluZyAiK2IrIiE8YnI+PGJyPiIpOgooZj0iQm9uam91ciAiKyQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9Rk5BTUVdIikudmFsKCkrIiw8YnI+PGJyPiIsZj1mKygiU3VpdGUgw6Agdm90cmUgZGVtYW5kZSBkJ2VzdGltYXRpb24gZGUgbGEgdmFsZXVyIGRlIHZvdHJlIMOpY2hhbmdlIHBvdXIgdW4gIitkKyIsIHZvaWNpIGwnw6l2YWx1YXRpb24gZGUgdm90cmUgdsOpaGljdWxlIHNlbG9uIEFjY3UtVHJhZGU6PGJyPjxicj4iKSsoJCgiaW5wdXRbbmFtZT10cmFkZUluTXNnRGlzY2xhaW1lclRleHQxXSIpLnZhbCgpKyQoImlucHV0W25hbWU9dHJhZGVJbk1zZ0Rpc2NsYWltZXJUZXh0Ml0iKS52YWwoKSsiPGJyPjxicj4iKSxmPSIxIj09Yz9mKygiVmFsZXVyIGVzdGltw6llOiAkIitoKyI8YnI+Iik6ZisoIlZhbGV1ciBlc3RpbcOpZSBtaW5pbWFsZTogJCIrZysiPGJyPlZhbGV1ciBlc3RpbcOpZSBtYXhpbWFsZTogJCIpKyhlKyI8YnI+IiksZis9IihTZWxvbiBBY2N1LVRyYWRlLCBtb2lucyBsZXMgY2\/Du3RzIGRlIHJlY29uZGl0aW9ubmVtZW50IHNpIGFwcGxpY2FibGUpPGJyPjxicj4iLApmKz0iVW4gY29uc2VpbGxlciBlbnRyZXJhIGVuIGNvbW11bmljYXRpb24gc291cyBwZXUgYXZlYyB2b3VzIGFmaW4gZGUgZGlzY3V0ZXIgZGUgY2V0dGUgdmFsZXVyIGV0IHZvdXMgZW4gZXhwbGlxdWVyIGxlcyBkw6l0YWlscy48YnI+PGJyPiIsZis9Ik1lcmNpIGRlIGZhaXJlIGNvbmZpYW5jZSDDoCAiK2IrIiE8YnI+PGJyPiIpO2Y9YnRvYShmKTtuPWJ0b2Eobik7ZW1haWxIYW5kbGVyLm9uQWZ0ZXJMZWFkQ3JlYXRlZD17YWN0aW9uOnIsc3ViamVjdDpuLG1lc3NhZ2U6ZixlbWFpbDphLHBob25lOmt9fSxpbml0VHJhZGVJblN0ZXAxOmZ1bmN0aW9uKCl7JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gW25hbWU9dHJhZGVJbkF2Z10iKS52YWwoMCk7JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gW25hbWU9dHJhZGVJbkxvd10iKS52YWwoMCk7JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gW25hbWU9dHJhZGVJbkhpZ2hdIikudmFsKDApOyQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIFtuYW1lPXRyYWRlSW5WYWx1ZUNCQkF2YWlsYWJsZVZhbHVlc10iKS52YWwoMCk7CiQoImlucHV0W25hbWU9dHJhZGVJbkJhclNtc09yRW1haWxdIikucmVtb3ZlQ2xhc3MoInJlcVJhZGlvIik7JCgiaW5wdXRbbmFtZT10cmFkZUluVmFsdWVDQkJDYWxsZWRdIikudmFsKDApOyQoImlucHV0W25hbWU9dHJhZGVJbkJhclNtc09yRW1haWxdOmNoZWNrZWQiKS5wcm9wKCJjaGVja2VkIiwhMSk7JCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gc2VsZWN0W25hbWU9IlZFSElDTEVPUFRJT05TIl0nKS5maW5kKCJvcHRpb24iKS5yZW1vdmUoKTskKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJRVUVTVElPTlMiXScpLnZhbCgiIik7JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gLnRyYWRlSW5CYXJTdGVwMSIpLnNob3coKTskKCIjdHJhZGVJbkJhclBvcHVwRm9ybSAudHJhZGVJbkJhclN0ZXAyIikuaGlkZSgpOyQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIC50cmFkZUluQmFyU3RlcDMiKS5oaWRlKCk7JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gLnRyYWRlSW5CYXJTdGVwNCIpLmhpZGUoKTsKJCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gLnRyYWRlSW5CYXJTdGVwNSIpLmhpZGUoKTskKCIjdHJhZGVJbkJhclBvcHVwRm9ybSAudHJhZGVJbkJhclN0ZXA2IikuaGlkZSgpOyQoIiN0cmFkZUluQmFyUG9wdXBGb3JtICN0cmFkZUluQmFyUG9wdXBTdWJtaXQiKS5wYXJlbnQoKS5zaG93KCk7JCgiI3RyYWRlSW5CYXJQb3B1cF9mb3JtVyAjdHJhZGVJbkJhclBvcHVwX2xpbmUxIikuc2hvdygpO3RoaXMuc2V0SGVpZ2h0TW9iaWxlKDEpOyQoIiN0cmFkZUluQmFyUG9wdXBfZm9ybVcgLnRyYWRlSW5EaXNjbGFpbWVyIikuc2hvdygpO3RoaXMudHJhZGVJbkJvdHRvbUxvZ29IZWlndCgpfSxpbml0VHJhZGVJblN0ZXAyOmZ1bmN0aW9uKGEpe3ZhciBrPSQoIiNUcmFkZUluQmFyUG9wdXBDb250YWluZXIiKS5maW5kKCJmb3JtIikuZmlyc3QoKS5zZXJpYWxpemVBcnJheSgpLGQ9JCgiI1RyYWRlSW5CYXJQb3B1cENvbnRhaW5lciIpLmZpbmQoIi5lbWFpbEJvZHkiKS5odG1sKCkrIiIsYj0kKCIjVHJhZGVJbkJhclBvcHVwQ29udGFpbmVyIikuZmluZCgiLmVtYWlsU3ViamVjdCIpLmh0bWwoKSsKIiIsYz1bXTtbXS5wdXNoLmFwcGx5KGMsayk7JC5lYWNoKGMsZnVuY3Rpb24oKXt2YXIgaD1uZXcgUmVnRXhwKCJ7XFwkIit0aGlzLm5hbWUudG9VcHBlckNhc2UoKSsifSIsImciKSxnPXRoaXMudmFsdWU7IlNFQVJDSEVEVkVISUNMRSI9PXRoaXMubmFtZS50b1VwcGVyQ2FzZSgpJiYoZz0iPHNwYW4gaWQ9J3BoU0VBUkNIVkVISUNMRSc+IitnKyI8L3NwYW4+Iik7ZD1kLnJlcGxhY2UoaCxnKTtiPWIucmVwbGFjZShoLHRoaXMudmFsdWUpfSk7ZW1haWxIYW5kbGVyLnN1YmplY3Q9YjtlbWFpbEhhbmRsZXIuYm9keT1kO2VtYWlsSGFuZGxlci5zZW5kVG89YS5zZXR0aW5ncy5mb3JtLnNlbmRUbztlbWFpbEhhbmRsZXIuc2VuZFRvQURGRm9ybWF0PWEuc2V0dGluZ3MuZm9ybS5zZW5kVG9BREY7ZW1haWxIYW5kbGVyLm1haWxJRD1hLnNldHRpbmdzLmZvcm0uZW1haWxpZDthPSQoIiNUcmFkZUluQmFyUG9wdXBDb250YWluZXIiKS5maW5kKCdpbnB1dFtuYW1lPSJGTkFNRSJdJykudmFsKCkuc3BsaXQoIiAiKTsKZW1haWxIYW5kbGVyLnVzZXJGaXJzdE5hbWU9YS5zaGlmdCgpO2VtYWlsSGFuZGxlci51c2VyTGFzdE5hbWU9YS5qb2luKCIgIik7ZW1haWxIYW5kbGVyLnVzZXJQaG9uZT0kKCIjVHJhZGVJbkJhclBvcHVwQ29udGFpbmVyIikuZmluZCgnaW5wdXRbbmFtZT0iRU1BSUxQSE9ORSJdJykudmFsKCk7ZW1haWxIYW5kbGVyLnVzZXJFbWFpbD0kKCIjVHJhZGVJbkJhclBvcHVwQ29udGFpbmVyIikuZmluZCgnaW5wdXRbbmFtZT0iRU1BSUwiXScpLnZhbCgpO2E9ZW1haWxIYW5kbGVyLmdldEpzb25PYmplY3QoKTtlbWFpbEhhbmRsZXIuc3ViamVjdD0iIjtlbWFpbEhhbmRsZXIuYm9keT0iIjtrPSQoImJvZHkiKS5oYXNDbGFzcygiRU5HTElTSCIpPyJFTkdMSVNIIjoiRlJFTkNIIjskLmFqYXgoe3R5cGU6IlBPU1QiLHVybDooIkVOR0xJU0giPT1rPyIvZW4vIjoiL2ZyLyIpKyIvYWpheC9yZWdpc3RlclRyYWRlTGVhZD93c3dpZHRoPTAiLGRhdGFUeXBlOiJqc29uIiwKZGF0YTphLHN1Y2Nlc3M6ZnVuY3Rpb24oaCl7aC5wYXJ0aWFsTGVhZElEJiYkKCIjVHJhZGVJbkJhclBvcHVwQ29udGFpbmVyIikuZmluZCgnaW5wdXRbbmFtZT0idHJhZGVpbmJhclJlZ2lzdGVyUGFydGlhbElEIl0nKS52YWwoaC5wYXJ0aWFsTGVhZElEKX19KTskKCIudHJhZGVJbkJhclN0ZXAxIikuaGlkZSgpOyQoIiN0cmFkZUluQmFyUG9wdXBfZm9ybVcgLnRyYWRlSW5EaXNjbGFpbWVyIikuaGlkZSgpO2E9JCgiYm9keSIpLmhhc0NsYXNzKCJFTkdMSVNIIik\/JCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iWUVBUkVYIl0nKS52YWwoKSsiICIrJCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iTUFLRUVYIl0nKS52YWwoKSsiICIrJCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iTU9ERUxFWCJdJykudmFsKCk6JCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iTUFLRUVYIl0nKS52YWwoKSsiICIrJCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iTU9ERUxFWCJdJykudmFsKCkrCiIgIiskKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJZRUFSRVgiXScpLnZhbCgpOyQoIi50cmFkZUluQmFyU3RlcDJUaXRsZSIpLnRleHQoJCgiLnRyYWRlSW5CYXJTdGVwMlRpdGxlIikudGV4dCgpKyIgIithKTskKCJpbnB1dFtuYW1lPXRyYWRlSW5CYXJTbXNPckVtYWlsXSIpLmFkZENsYXNzKCJyZXFSYWRpbyIpOyQoIi50cmFkZUluQmFyU3RlcDIiKS5zaG93KCl9LGluaXRUcmFkZUluU3RlcDM6ZnVuY3Rpb24oKXtwb3B1cElzU3VibWl0dGluZz0hMTskKCIjdHJhZGVJblN0ZXAzWWVzIikub24oImNsaWNrIixmdW5jdGlvbigpe3RyYWRlaW5wb3B1cGQyYy50cmFkZUluU3RlcDNZZXMoKTtyZXR1cm4hMX0pOyQoIiN0cmFkZUluQmFyUG9wdXBGb3JtICN0cmFkZUluQmFyUG9wdXBTdWJtaXQiKS5wYXJlbnQoKS5oaWRlKCk7JCgiI3RyYWRlSW5CYXJQb3B1cF9mb3JtVyAudHJhZGVJbkRpc2NsYWltZXIiKS5oaWRlKCk7JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gLnRyYWRlSW5CYXJTdGVwMSIpLmhpZGUoKTsKJCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gLnRyYWRlSW5CYXJTdGVwMiIpLmhpZGUoKTskKCIjdHJhZGVJbkJhclBvcHVwRm9ybSAudHJhZGVJbkJhclN0ZXAzIikuc2hvdygpOyQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIC50cmFkZUluQmFyU3RlcDQiKS5oaWRlKCk7JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gLnRyYWRlSW5CYXJTdGVwNSIpLmhpZGUoKTskKCIjdHJhZGVJbkJhclBvcHVwRm9ybSAudHJhZGVJbkJhclN0ZXA2IikuaGlkZSgpO3RoaXMuc2V0SGVpZ2h0TW9iaWxlKDMpOyQoImlucHV0W25hbWU9c3RlcDNkb25lXSIpLnZhbCgxKTt0aGlzLnRyYWRlSW5Cb3R0b21Mb2dvSGVpZ3QoKX0sdHJhZGVJblN0ZXAzWWVzOmZ1bmN0aW9uKCl7dGhpcy5pbml0VHJhZGVJblN0ZXA0KCl9LGluaXRUcmFkZUluU3RlcDQ6ZnVuY3Rpb24oKXskKCIjdHJhZGVJbkJhclBvcHVwRm9ybSAjdHJhZGVJbkJhclBvcHVwU3VibWl0IikucGFyZW50KCkuaGlkZSgpOyQoIiN0cmFkZUluQmFyUG9wdXBfZm9ybVcgLnRyYWRlSW5EaXNjbGFpbWVyIikuaGlkZSgpOwokKCIjdHJhZGVJbkJhclBvcHVwRm9ybSAudHJhZGVJbkJhclN0ZXAxIikuaGlkZSgpOyQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIC50cmFkZUluQmFyU3RlcDIiKS5oaWRlKCk7JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gLnRyYWRlSW5CYXJTdGVwMyIpLmhpZGUoKTskKCIjdHJhZGVJbkJhclBvcHVwRm9ybSAudHJhZGVJbkJhclN0ZXA0Iikuc2hvdygpOyQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIC50cmFkZUluQmFyU3RlcDUiKS5oaWRlKCk7JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gLnRyYWRlSW5CYXJTdGVwNiIpLmhpZGUoKTt0aGlzLnNldEhlaWdodE1vYmlsZSg0KTskKCIjdHJhZGVJblN0ZXA0WWVzIikub24oImNsaWNrIixmdW5jdGlvbigpe2lmKCIiPT0kKCIjdHJhZGVJbktleVNlbGVjdCIpLnZhbCgpKXJldHVybiAkKCIjdHJhZGVJbktleVNlbGVjdCIpLmFkZENsYXNzKCJ2YWxpZGl0eS1lcnJvbmVvdXMiKSwhMTt0cmFkZWlucG9wdXBkMmMudHJhZGVJblN0ZXA0Q29udGludWUoKTsKcmV0dXJuITF9KTskKCIjdHJhZGVJbktleVNlbGVjdCIpLm9uKCJjaGFuZ2UiLGZ1bmN0aW9uKCl7JCgiI3RyYWRlSW5LZXlTZWxlY3QiKS5yZW1vdmVDbGFzcygidmFsaWRpdHktZXJyb25lb3VzIil9KTt0aGlzLnRyYWRlSW5Cb3R0b21Mb2dvSGVpZ3QoKX0sdHJhZGVJblN0ZXA0Q29udGludWU6ZnVuY3Rpb24oKXsiIj09JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT1WSU5FWF0iKS52YWwoKT90aGlzLmluaXRUcmFkZUluU3RlcDUoKTp0aGlzLmluaXRUcmFkZUluU3RlcDYoKX0saW5pdFRyYWRlSW5TdGVwNTpmdW5jdGlvbigpeyQoIiN0cmFkZUluQmFyUG9wdXBGb3JtICN0cmFkZUluQmFyUG9wdXBTdWJtaXQiKS5wYXJlbnQoKS5oaWRlKCk7JCgiI3RyYWRlSW5CYXJQb3B1cF9mb3JtVyAudHJhZGVJbkRpc2NsYWltZXIiKS5oaWRlKCk7JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gLnRyYWRlSW5CYXJTdGVwMSIpLmhpZGUoKTskKCIjdHJhZGVJbkJhclBvcHVwRm9ybSAudHJhZGVJbkJhclN0ZXAyIikuaGlkZSgpOwokKCIjdHJhZGVJbkJhclBvcHVwRm9ybSAudHJhZGVJbkJhclN0ZXAzIikuaGlkZSgpOyQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIC50cmFkZUluQmFyU3RlcDQiKS5oaWRlKCk7JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gLnRyYWRlSW5CYXJTdGVwNSIpLnNob3coKTskKCIjdHJhZGVJbkJhclBvcHVwRm9ybSAudHJhZGVJbkJhclN0ZXA2IikuaGlkZSgpO3RoaXMuc2V0SGVpZ2h0TW9iaWxlKDUpOyQoIiN0cmFkZUluU3RlcDVZZXMiKS5vbigiY2xpY2siLGZ1bmN0aW9uKCl7dHJhZGVpbnBvcHVwZDJjLnRyYWRlSW5TdGVwNUNvbnRpbnVlKCk7cmV0dXJuITF9KTt0aGlzLnRyYWRlSW5Cb3R0b21Mb2dvSGVpZ3QoKX0sdHJhZGVJblN0ZXA1Q29udGludWU6ZnVuY3Rpb24oKXskKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPVZJTkVYXSIpLnZhbCgkKCIjdHJhZGVJbkJhclBvcHVwRm9ybSAjc3RlcDVWaW4iKS52YWwoKSk7dGhpcy5pbml0VHJhZGVJblN0ZXA2KCl9LGluaXRUcmFkZUluU3RlcDY6ZnVuY3Rpb24oKXskKCIjdHJhZGVJbkJhclBvcHVwX2Zvcm1XICN0cmFkZUluQmFyUG9wdXBfbGluZTEiKS5oaWRlKCk7CiQoIiN0cmFkZUluQmFyUG9wdXBGb3JtICN0cmFkZUluQmFyUG9wdXBTdWJtaXQiKS5wYXJlbnQoKS5oaWRlKCk7JCgiI3RyYWRlSW5CYXJQb3B1cF9mb3JtVyAudHJhZGVJbkRpc2NsYWltZXIiKS5oaWRlKCk7JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gLnRyYWRlSW5CYXJTdGVwMSIpLmhpZGUoKTskKCIjdHJhZGVJbkJhclBvcHVwRm9ybSAudHJhZGVJbkJhclN0ZXAyIikuaGlkZSgpOyQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIC50cmFkZUluQmFyU3RlcDMiKS5oaWRlKCk7JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gLnRyYWRlSW5CYXJTdGVwNCIpLmhpZGUoKTskKCIjdHJhZGVJbkJhclBvcHVwRm9ybSAudHJhZGVJbkJhclN0ZXA1IikuaGlkZSgpOyQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIC50cmFkZUluQmFyU3RlcDYiKS5zaG93KCk7dGhpcy5zZXRIZWlnaHRNb2JpbGUoNik7dGhpcy5pbml0SW1hZ2VVcGxvYWQoKTskKCIjdHJhZGVJblN0ZXA2WWVzIikub24oImNsaWNrIixmdW5jdGlvbigpeyQoIiN0cmFkZUluU3RlcDZZZXMiKS5oaWRlKCk7CnRyYWRlaW5wb3B1cGQyYy51cGxvYWRJbWFnZXNUb0JhY2tlbmQoKX0pO3RoaXMudHJhZGVJbkJvdHRvbUxvZ29IZWlndCgpfSxpbml0SW1hZ2VVcGxvYWQ6ZnVuY3Rpb24oKXtkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCIjdHJhZGVJbkJhclBvcHVwRm9ybSAudXBsb2FkLWFyZWEiKS5mb3JFYWNoKGE9Pntjb25zdCBrPWEucXVlcnlTZWxlY3RvcignaW5wdXRbdHlwZT0iZmlsZSJdJyksZD1hLnF1ZXJ5U2VsZWN0b3IoIi5wbGFjZWhvbGRlciIpLGI9YS5xdWVyeVNlbGVjdG9yKCIuZGVsZXRlLWJ0biIpLGM9YS5xdWVyeVNlbGVjdG9yKCIuYWRkLWljb24iKSxoPWEuZGF0YXNldC5vdmVybGF5O2gmJihhLnN0eWxlLmJhY2tncm91bmRJbWFnZT1gdXJsKCR7aH0pYCk7YS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsKCk9PntrLnZhbHVlfHxrLmNsaWNrKCl9KTtrLmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZSIsZz0+e2lmKChnPWcudGFyZ2V0LmZpbGVzWzBdKSYmZy50eXBlLnN0YXJ0c1dpdGgoImltYWdlLyIpKXtjb25zdCBlPQpuZXcgRmlsZVJlYWRlcjtlLm9ubG9hZD0oKT0+e2Quc3JjPWUucmVzdWx0O2Quc3R5bGUuZGlzcGxheT0iYmxvY2siO2Euc3R5bGUuYmFja2dyb3VuZEltYWdlPSJub25lIjtiLnN0eWxlLmRpc3BsYXk9ImJsb2NrIjtjLnN0eWxlLmRpc3BsYXk9Im5vbmUifTtlLnJlYWRBc0RhdGFVUkwoZyl9ZWxzZSBrLnZhbHVlPSIifSk7Yi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsZz0+e2cuc3RvcFByb3BhZ2F0aW9uKCk7ay52YWx1ZT0iIjtkLnNyYz0iIjtkLnN0eWxlLmRpc3BsYXk9Im5vbmUiO2Euc3R5bGUuYmFja2dyb3VuZEltYWdlPWB1cmwoJHtofSlgO2Iuc3R5bGUuZGlzcGxheT0ibm9uZSI7Yy5zdHlsZS5kaXNwbGF5PSJmbGV4IjtyZXR1cm4hMX0pO2Iuc3R5bGUuZGlzcGxheT0ibm9uZSI7ZC5zdHlsZS5kaXNwbGF5PSJub25lIn0pfSx1cGxvYWRJbWFnZXNUb0JhY2tlbmQ6ZnVuY3Rpb24oKXt2YXIgYT1kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCIjdHJhZGVJbkJhclBvcHVwRm9ybSAudXBsb2FkLWFyZWEiKTsKY29uc3Qgaz1uZXcgRm9ybURhdGE7bGV0IGQ9ITE7YS5mb3JFYWNoKGI9PntiPWIucXVlcnlTZWxlY3RvcignaW5wdXRbdHlwZT0iZmlsZSJdJyk7MDxiLmZpbGVzLmxlbmd0aCYmYi5maWxlc1swXS50eXBlLnN0YXJ0c1dpdGgoImltYWdlLyIpJiYoay5hcHBlbmQoImltYWdlc1tdIixiLmZpbGVzWzBdLGIuZ2V0QXR0cmlidXRlKCJkYXRhLW5hbWUiKSksZD0hMCl9KTtkPyhhPSQoImJvZHkiKS5oYXNDbGFzcygiRU5HTElTSCIpPyJFTkdMSVNIIjoiRlJFTkNIIiwkLmFqYXgoe3R5cGU6IlBPU1QiLHVybDooIkVOR0xJU0giPT1hPyIvZW4vIjoiL2ZyLyIpKyIvYWpheC91cGxvYWRUcmFkZUluSW1hZ2VzIixjb250ZW50VHlwZTohMSxwcm9jZXNzRGF0YTohMSxkYXRhOmssc3VjY2VzczpmdW5jdGlvbihiKXtpZihiLmxlbmd0aCl7JGRhdGFPYmo9SlNPTi5wYXJzZShiKTskaW1hZ2VFeFZhbHVlPSIiO2ZvcihiPTA7YjwkZGF0YU9iai5sZW5ndGg7YisrKSRpbWFnZUV4VmFsdWUrPSRkYXRhT2JqW2JdLmZpbGVuYW1lKwoiIDogIiskZGF0YU9ialtiXS5maWxlVXJsKyIgXG4iOyQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9IlRSQURFSU5JTUFHRUVYIl0nKS52YWwoJGltYWdlRXhWYWx1ZSl9JCgiLnRyYWRlSW5CYXJQb3B1cFN1Ym1pdCIpLnRyaWdnZXIoImNsaWNrIil9fSkpOiQoIi50cmFkZUluQmFyUG9wdXBTdWJtaXQiKS50cmlnZ2VyKCJjbGljayIpfSxzZXRIZWlnaHRNb2JpbGUoYSl7aWYoIjEiPT0kKCIjaXNtb2JpbGUiKS52YWwoKSlzd2l0Y2goYSl7Y2FzZSAyOiQoIiNUcmFkZUluQmFyUG9wdXBDb250YWluZXIiKS5jc3MoImhlaWdodCIsIjU0MHB4Iik7JCgiI3RyYWRlSW5CYXJQb3B1cF9mb3JtVyIpLmNzcygiaGVpZ2h0IiwiNTMwcHgiKTticmVhaztjYXNlIDM6JCgiI1RyYWRlSW5CYXJQb3B1cENvbnRhaW5lciIpLmNzcygiaGVpZ2h0IiwiNjAwcHgiKTskKCIjdHJhZGVJbkJhclBvcHVwX2Zvcm1XIikuY3NzKCJoZWlnaHQiLCI1OTBweCIpO2JyZWFrO2Nhc2UgNDokKCIjVHJhZGVJbkJhclBvcHVwQ29udGFpbmVyIikuY3NzKCJoZWlnaHQiLAoiNTQwcHgiKTskKCIjdHJhZGVJbkJhclBvcHVwX2Zvcm1XIikuY3NzKCJoZWlnaHQiLCI1MzBweCIpO2JyZWFrO2Nhc2UgNTokKCIjVHJhZGVJbkJhclBvcHVwQ29udGFpbmVyIikuY3NzKCJoZWlnaHQiLCI1MzBweCIpOyQoIiN0cmFkZUluQmFyUG9wdXBfZm9ybVciKS5jc3MoImhlaWdodCIsIjUyMHB4Iik7YnJlYWs7Y2FzZSA2OiQoIiNUcmFkZUluQmFyUG9wdXBDb250YWluZXIiKS5jc3MoImhlaWdodCIsIjc1MHB4Iik7JCgiI3RyYWRlSW5CYXJQb3B1cF9mb3JtVyIpLmNzcygiaGVpZ2h0IiwiNzQwcHgiKTticmVhaztkZWZhdWx0OiQoIiNUcmFkZUluQmFyUG9wdXBDb250YWluZXIiKS5jc3MoImhlaWdodCIsIjk4MHB4IiksJCgiI3RyYWRlSW5CYXJQb3B1cF9mb3JtVyIpLmNzcygiaGVpZ2h0IiwiOTcwcHgiKX19LHRyYWRlSW5Cb3R0b21Mb2dvSGVpZ3Q6ZnVuY3Rpb24oKXtpZigkKCIudHJhZGVJbkJvdHRvbUxvZ28iKS5sZW5ndGgpe3ZhciBhPSQoIiN0cmFkZUluQmFyUG9wdXBfZm9ybVciKTsKbGV0IGs9JCgiLnRyYWRlSW5Cb3R0b21Mb2dvIiksZD0kKCIjdHJhZGVJbkJhclBvcHVwX2Zvcm1XIC50cmFkZUluRGlzY2xhaW1lciIpLGI9JCgiI2lzTW9iaWxlIikubGVuZ3RoJiYiMSI9PSQoIiNpc01vYmlsZSIpLnZhbCgpLGM9JCgiLm5pdk1ha2VNb2RlbFNlbGVjdENvbnRhaW5lciIpLmlzKCI6dmlzaWJsZSIpO2E9YS5pbm5lckhlaWdodCgpLWsucG9zaXRpb24oKS50b3A7ZC5sZW5ndGgmJmQuaXMoIjp2aXNpYmxlIikmJihhLT1kLm91dGVySGVpZ2h0KCEwKSsoYj8wOmM\/MTA6MzApKTskKCIudHJhZGVJbkJvdHRvbUxvZ28iKS5oZWlnaHQoYSsicHgiKX19fTsKLyoqIC9tL2pzL2pxdWVyeS5wcmV0dHlQaG90bzIuanMgKiovCnZhciBfX19kMmNfanF1ZXJ5cHJldHR5UGhvdG8yanNfY19vbj0iMjAyNS0wNS0yMyAxNzoxMTo0MyI7J3VzZSBzdHJpY3QnO3ZhciBfX19kMmNfanF1ZXJ5cHJldHR5UGhvdG8yanNfY19vbj0iMjAyNC0wMy0yNSAxMjozMzozMyI7InVzZSBzdHJpY3QiOwooZnVuY3Rpb24oYSl7ZnVuY3Rpb24geSgpe3ZhciBlPWxvY2F0aW9uLmhyZWY7cmV0dXJuIGhhc2h0YWc9LTEhPT1lLmluZGV4T2YoIiNwcmV0dHlQaG90byIpP2RlY29kZVVSSShlLnN1YnN0cmluZyhlLmluZGV4T2YoIiNwcmV0dHlQaG90byIpKzEsZS5sZW5ndGgpKTohMX1mdW5jdGlvbiBsKGUscCl7ZT1lLnJlcGxhY2UoL1tcW10vLCJcXFsiKS5yZXBsYWNlKC9bXF1dLywiXFxdIik7ZT0obmV3IFJlZ0V4cCgiW1xcPyZdIitlKyI9KFteJiNdKikiKSkuZXhlYyhwKTtyZXR1cm4gbnVsbD09ZT8iIjplWzFdfWEucHJldHR5UGhvdG89e3ZlcnNpb246IjMuMS41In07YS5mbi5wcmV0dHlQaG90bz1mdW5jdGlvbihlKXtmdW5jdGlvbiBwKCl7YSgiLnBwX2xvYWRlckljb24iKS5oaWRlKCk7cHJvamVjdGVkVG9wPXNjcm9sbF9wb3Muc2Nyb2xsVG9wKyhrLzItZC5jb250YWluZXJIZWlnaHQvMik7MD5wcm9qZWN0ZWRUb3AmJihwcm9qZWN0ZWRUb3A9MCk7JHBwdC5mYWRlVG8oYi5hbmltYXRpb25fc3BlZWQsCjEpOyRwcF9waWNfaG9sZGVyLmZpbmQoIi5wcF9jb250ZW50IikuYW5pbWF0ZSh7aGVpZ2h0OmQuY29udGVudEhlaWdodCx3aWR0aDpkLmNvbnRlbnRXaWR0aH0sYi5hbmltYXRpb25fc3BlZWQpOyRwcF9waWNfaG9sZGVyLmFuaW1hdGUoe3RvcDpwcm9qZWN0ZWRUb3AsbGVmdDowPmgvMi1kLmNvbnRhaW5lcldpZHRoLzI\/MDpoLzItZC5jb250YWluZXJXaWR0aC8yLHdpZHRoOmQuY29udGFpbmVyV2lkdGh9LGIuYW5pbWF0aW9uX3NwZWVkLGZ1bmN0aW9uKCl7JHBwX3BpY19ob2xkZXIuZmluZCgiLnBwX2hvdmVyQ29udGFpbmVyLCNmdWxsUmVzSW1hZ2UiKS5oZWlnaHQoZC5oZWlnaHQpLndpZHRoKGQud2lkdGgpOyRwcF9waWNfaG9sZGVyLmZpbmQoIi5wcF9mYWRlIikuZmFkZUluKGIuYW5pbWF0aW9uX3NwZWVkKTtpc1NldCYmImltYWdlIj09dChwcF9pbWFnZXNbc2V0X3Bvc2l0aW9uXSk\/JHBwX3BpY19ob2xkZXIuZmluZCgiLnBwX2hvdmVyQ29udGFpbmVyIikuc2hvdygpOiRwcF9waWNfaG9sZGVyLmZpbmQoIi5wcF9ob3ZlckNvbnRhaW5lciIpLmhpZGUoKTsKYi5hbGxvd19leHBhbmQmJihkLnJlc2l6ZWQ\/YSgiYS5wcF9leHBhbmQsYS5wcF9jb250cmFjdCIpLnNob3coKTphKCJhLnBwX2V4cGFuZCIpLmhpZGUoKSk7IWIuYXV0b3BsYXlfc2xpZGVzaG93fHxxfHx1fHxhLnByZXR0eVBob3RvLnN0YXJ0U2xpZGVzaG93KCk7Yi5jaGFuZ2VwaWN0dXJlY2FsbGJhY2soKTt1PSEwfSk7aXNTZXQmJmIub3ZlcmxheV9nYWxsZXJ5JiYiaW1hZ2UiPT10KHBwX2ltYWdlc1tzZXRfcG9zaXRpb25dKT8oaXRlbVdpZHRoPTU3LG5hdldpZHRoPSJmYWNlYm9vayI9PWIudGhlbWV8fCJwcF9kZWZhdWx0Ij09Yi50aGVtZT81MDozMCxpdGVtc1BlclBhZ2U9TWF0aC5mbG9vcigoZC5jb250YWluZXJXaWR0aC0xMDAtbmF2V2lkdGgpL2l0ZW1XaWR0aCksaXRlbXNQZXJQYWdlPWl0ZW1zUGVyUGFnZTxwcF9pbWFnZXMubGVuZ3RoP2l0ZW1zUGVyUGFnZTpwcF9pbWFnZXMubGVuZ3RoLHRvdGFsUGFnZT1NYXRoLmNlaWwocHBfaW1hZ2VzLmxlbmd0aC9pdGVtc1BlclBhZ2UpLQoxLDA9PXRvdGFsUGFnZT8obmF2V2lkdGg9MCwkcHBfZ2FsbGVyeS5maW5kKCIucHBfYXJyb3dfbmV4dCwucHBfYXJyb3dfcHJldmlvdXMiKS5oaWRlKCkpOiRwcF9nYWxsZXJ5LmZpbmQoIi5wcF9hcnJvd19uZXh0LC5wcF9hcnJvd19wcmV2aW91cyIpLnNob3coKSxnYWxsZXJ5V2lkdGg9aXRlbXNQZXJQYWdlKml0ZW1XaWR0aCxmdWxsR2FsbGVyeVdpZHRoPXBwX2ltYWdlcy5sZW5ndGgqaXRlbVdpZHRoLCRwcF9nYWxsZXJ5LmNzcygibWFyZ2luLWxlZnQiLC0oZ2FsbGVyeVdpZHRoLzIrbmF2V2lkdGgvMikpLmZpbmQoImRpdjpmaXJzdCIpLndpZHRoKGdhbGxlcnlXaWR0aCs1KS5maW5kKCJ1bCIpLndpZHRoKGZ1bGxHYWxsZXJ5V2lkdGgpLmZpbmQoImxpLnNlbGVjdGVkIikucmVtb3ZlQ2xhc3MoInNlbGVjdGVkIiksZ29Ub1BhZ2U9TWF0aC5mbG9vcihzZXRfcG9zaXRpb24vaXRlbXNQZXJQYWdlKTx0b3RhbFBhZ2U\/TWF0aC5mbG9vcihzZXRfcG9zaXRpb24vaXRlbXNQZXJQYWdlKToKdG90YWxQYWdlLGEucHJldHR5UGhvdG8uY2hhbmdlR2FsbGVyeVBhZ2UoZ29Ub1BhZ2UpLCRwcF9nYWxsZXJ5X2xpLmZpbHRlcigiOmVxKCIrc2V0X3Bvc2l0aW9uKyIpIikuYWRkQ2xhc3MoInNlbGVjdGVkIikpOiRwcF9waWNfaG9sZGVyLmZpbmQoIi5wcF9jb250ZW50Iikub2ZmKCJtb3VzZWVudGVyIG1vdXNlbGVhdmUiKTtlLmFqYXhjYWxsYmFjaygpfWZ1bmN0aW9uIHooYyl7JHBwX3BpY19ob2xkZXIuZmluZCgiI3BwX2Z1bGxfcmVzIG9iamVjdCwjcHBfZnVsbF9yZXMgZW1iZWQiKS5jc3MoInZpc2liaWxpdHkiLCJoaWRkZW4iKTskcHBfcGljX2hvbGRlci5maW5kKCIucHBfZmFkZSIpLmZhZGVPdXQoYi5hbmltYXRpb25fc3BlZWQsZnVuY3Rpb24oKXthKCIucHBfbG9hZGVySWNvbiIpLnNob3coKTtjKCl9KX1mdW5jdGlvbiBHKGMpezE8Yz9hKCIucHBfbmF2Iikuc2hvdygpOmEoIi5wcF9uYXYiKS5oaWRlKCl9ZnVuY3Rpb24gZyhjLGYpe3Jlc2l6ZWQ9ITE7QShjLGYpO2ltYWdlV2lkdGg9CmM7aW1hZ2VIZWlnaHQ9ZjtpZigobT5ofHxuPmspJiZkb3Jlc2l6ZSYmYi5hbGxvd19yZXNpemUmJiFyKXtyZXNpemVkPSEwO2ZvcihmaXR0aW5nPSExOyFmaXR0aW5nOyltPmg\/KGltYWdlV2lkdGg9aC01MCxpbWFnZUhlaWdodD1mL2MqaW1hZ2VXaWR0aCk6bj5rPyhpbWFnZUhlaWdodD1rLTUwLGltYWdlV2lkdGg9Yy9mKmltYWdlSGVpZ2h0KTpmaXR0aW5nPSEwLG49aW1hZ2VIZWlnaHQsbT1pbWFnZVdpZHRoOyhtPmh8fG4+aykmJmcobSxuKTtBKGltYWdlV2lkdGgsaW1hZ2VIZWlnaHQpfXJldHVybnt3aWR0aDpNYXRoLmZsb29yKGltYWdlV2lkdGgpLGhlaWdodDpNYXRoLmZsb29yKGltYWdlSGVpZ2h0KSxjb250YWluZXJIZWlnaHQ6TWF0aC5mbG9vcihuKSxjb250YWluZXJXaWR0aDpNYXRoLmZsb29yKG0pKzIqYi5ob3Jpem9udGFsX3BhZGRpbmcsY29udGVudEhlaWdodDpNYXRoLmZsb29yKHYpLGNvbnRlbnRXaWR0aDpNYXRoLmZsb29yKEIpLHJlc2l6ZWR9fWZ1bmN0aW9uIEEoYywKZil7Yz1wYXJzZUZsb2F0KGMpO2Y9cGFyc2VGbG9hdChmKTskcHBfZGV0YWlscz0kcHBfcGljX2hvbGRlci5maW5kKCIucHBfZGV0YWlscyIpOyRwcF9kZXRhaWxzLndpZHRoKGMpO2RldGFpbHNIZWlnaHQ9cGFyc2VGbG9hdCgkcHBfZGV0YWlscy5jc3MoIm1hcmdpblRvcCIpKStwYXJzZUZsb2F0KCRwcF9kZXRhaWxzLmNzcygibWFyZ2luQm90dG9tIikpOyRwcF9kZXRhaWxzPSRwcF9kZXRhaWxzLmNsb25lKCkuYWRkQ2xhc3MoYi50aGVtZSkud2lkdGgoYykuYXBwZW5kVG8oYSgiYm9keSIpKS5jc3Moe3Bvc2l0aW9uOiJhYnNvbHV0ZSIsdG9wOi0xRTR9KTtkZXRhaWxzSGVpZ2h0Kz0kcHBfZGV0YWlscy5oZWlnaHQoKTtkZXRhaWxzSGVpZ2h0PTM0Pj1kZXRhaWxzSGVpZ2h0PzM2OmRldGFpbHNIZWlnaHQ7JHBwX2RldGFpbHMucmVtb3ZlKCk7JHBwX3RpdGxlPSRwcF9waWNfaG9sZGVyLmZpbmQoIi5wcHQiKTskcHBfdGl0bGUud2lkdGgoYyk7dGl0bGVIZWlnaHQ9cGFyc2VGbG9hdCgkcHBfdGl0bGUuY3NzKCJtYXJnaW5Ub3AiKSkrCnBhcnNlRmxvYXQoJHBwX3RpdGxlLmNzcygibWFyZ2luQm90dG9tIikpOyRwcF90aXRsZT0kcHBfdGl0bGUuY2xvbmUoKS5hcHBlbmRUbyhhKCJib2R5IikpLmNzcyh7cG9zaXRpb246ImFic29sdXRlIix0b3A6LTFFNH0pO3RpdGxlSGVpZ2h0Kz0kcHBfdGl0bGUuaGVpZ2h0KCk7JHBwX3RpdGxlLnJlbW92ZSgpO3Y9ZitkZXRhaWxzSGVpZ2h0O0I9YztuPXYrdGl0bGVIZWlnaHQrJHBwX3BpY19ob2xkZXIuZmluZCgiLnBwX3RvcCIpLmhlaWdodCgpKyRwcF9waWNfaG9sZGVyLmZpbmQoIi5wcF9ib3R0b20iKS5oZWlnaHQoKTttPWN9ZnVuY3Rpb24gdChjKXtyZXR1cm4gYy5tYXRjaCgveW91dHViZVwuY29tXC93YXRjaC9pKXx8Yy5tYXRjaCgveW91dHVcLmJlL2kpPyJ5b3V0dWJlIjpjLm1hdGNoKC92aW1lb1wuY29tL2kpPyJ2aW1lbyI6Yy5tYXRjaCgvXC5tcDQvaSk\/Im1wNCI6Yy5tYXRjaCgvYXZ1M2QvaSk\/ImF2dTNkIjpjLm1hdGNoKC9cYi5tb3ZcYi9pKT8icXVpY2t0aW1lIjoKYy5tYXRjaCgvXGIuc3dmXGIvaSk\/ImZsYXNoIjpjLm1hdGNoKC9cYmlmcmFtZT10cnVlXGIvaSk\/ImlmcmFtZSI6Yy5tYXRjaCgvXGJhamF4PXRydWVcYi9pKT8iYWpheCI6Yy5tYXRjaCgvXGJjdXN0b209dHJ1ZVxiL2kpPyJjdXN0b20iOiIjIj09Yy5zdWJzdHIoMCwxKT8iaW5saW5lIjoiaW1hZ2UifWZ1bmN0aW9uIHcoKXtkb3Jlc2l6ZSYmInVuZGVmaW5lZCIhPXR5cGVvZiAkcHBfcGljX2hvbGRlciYmKHNjcm9sbF9wb3M9QygpLGNvbnRlbnRIZWlnaHQ9JHBwX3BpY19ob2xkZXIuaGVpZ2h0KCksY29udGVudHdpZHRoPSRwcF9waWNfaG9sZGVyLndpZHRoKCkscHJvamVjdGVkVG9wPWsvMitzY3JvbGxfcG9zLnNjcm9sbFRvcC1jb250ZW50SGVpZ2h0LzIsMD5wcm9qZWN0ZWRUb3AmJihwcm9qZWN0ZWRUb3A9MCksY29udGVudEhlaWdodD5rfHwkcHBfcGljX2hvbGRlci5jc3Moe3RvcDpwcm9qZWN0ZWRUb3AsbGVmdDpoLzIrc2Nyb2xsX3Bvcy5zY3JvbGxMZWZ0LWNvbnRlbnR3aWR0aC8KMn0pKX1mdW5jdGlvbiBDKCl7aWYoc2VsZi5wYWdlWU9mZnNldClyZXR1cm57c2Nyb2xsVG9wOnNlbGYucGFnZVlPZmZzZXQsc2Nyb2xsTGVmdDpzZWxmLnBhZ2VYT2Zmc2V0fTtpZihkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQmJmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3ApcmV0dXJue3Njcm9sbFRvcDpkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG9wLHNjcm9sbExlZnQ6ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbExlZnR9O2lmKGRvY3VtZW50LmJvZHkpcmV0dXJue3Njcm9sbFRvcDpkb2N1bWVudC5ib2R5LnNjcm9sbFRvcCxzY3JvbGxMZWZ0OmRvY3VtZW50LmJvZHkuc2Nyb2xsTGVmdH19ZnVuY3Rpb24gRChjKXtiLnNvY2lhbF90b29scyYmKGZhY2Vib29rX2xpa2VfbGluaz1iLnNvY2lhbF90b29scy5yZXBsYWNlKCJ7bG9jYXRpb25faHJlZn0iLGVuY29kZVVSSUNvbXBvbmVudChsb2NhdGlvbi5ocmVmKSkpO2IubWFya3VwPWIubWFya3VwLnJlcGxhY2UoIntwcF9zb2NpYWx9IiwKIiIpO2EoImJvZHkiKS5hcHBlbmQoYi5tYXJrdXApOyRwcF9waWNfaG9sZGVyPWEoIi5wcF9waWNfaG9sZGVyIik7JHBwdD1hKCIucHB0Iik7JHBwX292ZXJsYXk9YSgiZGl2LnBwX292ZXJsYXkiKTtpZihpc1NldCYmYi5vdmVybGF5X2dhbGxlcnkpe2N1cnJlbnRHYWxsZXJ5UGFnZT0wO3RvSW5qZWN0PSIiO2ZvcihjPTA7YzxwcF9pbWFnZXMubGVuZ3RoO2MrKylwcF9pbWFnZXNbY10ubWF0Y2goL1xiKGpwZ3xqcGVnfHBuZ3xnaWYpXGIvZ2kpPyhjbGFzc25hbWU9IiIsaW1nX3NyYz1wcF9pbWFnZXNbY10pOihjbGFzc25hbWU9ImRlZmF1bHQiLGltZ19zcmM9IiIpLHRvSW5qZWN0Kz0iPGxpIGNsYXNzPSciK2NsYXNzbmFtZSsiJz48YSBocmVmPScjJz48aW1nIHNyYz0nIitpbWdfc3JjKyInIHdpZHRoPSc1MCcgYWx0PScnIC8+PC9hPjwvbGk+Ijt0b0luamVjdD1iLmdhbGxlcnlfbWFya3VwLnJlcGxhY2UoL3tnYWxsZXJ5fS9nLHRvSW5qZWN0KTskcHBfcGljX2hvbGRlci5maW5kKCIjcHBfZnVsbF9yZXMiKS5hZnRlcih0b0luamVjdCk7CiRwcF9nYWxsZXJ5PWEoIi5wcF9waWNfaG9sZGVyIC5wcF9nYWxsZXJ5Iik7JHBwX2dhbGxlcnlfbGk9JHBwX2dhbGxlcnkuZmluZCgibGkiKTskcHBfZ2FsbGVyeS5maW5kKCIucHBfYXJyb3dfbmV4dCIpLm9uKCJjbGljayIsZnVuY3Rpb24oKXthLnByZXR0eVBob3RvLmNoYW5nZUdhbGxlcnlQYWdlKCJuZXh0Iik7YS5wcmV0dHlQaG90by5zdG9wU2xpZGVzaG93KCk7cmV0dXJuITF9KTskcHBfZ2FsbGVyeS5maW5kKCIucHBfYXJyb3dfcHJldmlvdXMiKS5vbigiY2xpY2siLGZ1bmN0aW9uKCl7YS5wcmV0dHlQaG90by5jaGFuZ2VHYWxsZXJ5UGFnZSgicHJldmlvdXMiKTthLnByZXR0eVBob3RvLnN0b3BTbGlkZXNob3coKTtyZXR1cm4hMX0pOyRwcF9waWNfaG9sZGVyLmZpbmQoIi5wcF9jb250ZW50Iikub24oImhvdmVyIixmdW5jdGlvbigpeyRwcF9waWNfaG9sZGVyLmZpbmQoIi5wcF9nYWxsZXJ5Om5vdCguZGlzYWJsZWQpIikuZmFkZUluKCl9LGZ1bmN0aW9uKCl7JHBwX3BpY19ob2xkZXIuZmluZCgiLnBwX2dhbGxlcnk6bm90KC5kaXNhYmxlZCkiKS5mYWRlT3V0KCl9KTsKaXRlbVdpZHRoPTU3OyRwcF9nYWxsZXJ5X2xpLmVhY2goZnVuY3Rpb24oZil7YSh0aGlzKS5maW5kKCJhIikub24oImNsaWNrIixmdW5jdGlvbigpe2EucHJldHR5UGhvdG8uY2hhbmdlUGFnZShmKTthLnByZXR0eVBob3RvLnN0b3BTbGlkZXNob3coKTtyZXR1cm4hMX0pfSl9Yi5zbGlkZXNob3cmJigkcHBfcGljX2hvbGRlci5maW5kKCIucHBfbmF2IikucHJlcGVuZCgnPGEgaHJlZj0iIyIgY2xhc3M9InBwX3BsYXkiPlBsYXk8L2E+JyksJHBwX3BpY19ob2xkZXIuZmluZCgiLnBwX25hdiAucHBfcGxheSIpLm9uKCJjbGljayIsZnVuY3Rpb24oKXthLnByZXR0eVBob3RvLnN0YXJ0U2xpZGVzaG93KCk7cmV0dXJuITF9KSk7JHBwX3BpY19ob2xkZXIuYXR0cigiY2xhc3MiLCJwcF9waWNfaG9sZGVyICIrYi50aGVtZSk7JHBwX292ZXJsYXkuY3NzKHtvcGFjaXR5OjAsaGVpZ2h0OmEoZG9jdW1lbnQpLmhlaWdodCgpLHdpZHRoOmEod2luZG93KS53aWR0aCgpfSkub24oImNsaWNrIixmdW5jdGlvbigpe2IubW9kYWx8fAphLnByZXR0eVBob3RvLmNsb3NlKCl9KTthKCJhLnBwX2Nsb3NlIikub24oImNsaWNrIixmdW5jdGlvbigpe2EucHJldHR5UGhvdG8uY2xvc2UoKTtyZXR1cm4hMX0pO2lmKGIuYWxsb3dfZXhwYW5kKWEoImEucHBfZXhwYW5kIikub24oImNsaWNrIixmdW5jdGlvbihmKXthKHRoaXMpLmhhc0NsYXNzKCJwcF9leHBhbmQiKT8oYSh0aGlzKS5yZW1vdmVDbGFzcygicHBfZXhwYW5kIikuYWRkQ2xhc3MoInBwX2NvbnRyYWN0IiksZG9yZXNpemU9ITEpOihhKHRoaXMpLnJlbW92ZUNsYXNzKCJwcF9jb250cmFjdCIpLmFkZENsYXNzKCJwcF9leHBhbmQiKSxkb3Jlc2l6ZT0hMCk7eihmdW5jdGlvbigpe2EucHJldHR5UGhvdG8ub3BlbigpfSk7cmV0dXJuITF9KTskcHBfcGljX2hvbGRlci5maW5kKCIucHBfcHJldmlvdXMsIC5wcF9uYXYgLnBwX2Fycm93X3ByZXZpb3VzIikub24oImNsaWNrIixmdW5jdGlvbigpe2EucHJldHR5UGhvdG8uY2hhbmdlUGFnZSgicHJldmlvdXMiKTthLnByZXR0eVBob3RvLnN0b3BTbGlkZXNob3coKTsKcmV0dXJuITF9KTskcHBfcGljX2hvbGRlci5maW5kKCIucHBfbmV4dCwgLnBwX25hdiAucHBfYXJyb3dfbmV4dCIpLm9uKCJjbGljayIsZnVuY3Rpb24oKXthLnByZXR0eVBob3RvLmNoYW5nZVBhZ2UoIm5leHQiKTthLnByZXR0eVBob3RvLnN0b3BTbGlkZXNob3coKTtyZXR1cm4hMX0pO3coKX1lPWpRdWVyeS5leHRlbmQoe2hvb2s6InJlbCIsYW5pbWF0aW9uX3NwZWVkOiJmYXN0IixhamF4Y2FsbGJhY2s6ZnVuY3Rpb24oKXt9LHNsaWRlc2hvdzo1RTMsYXV0b3BsYXlfc2xpZGVzaG93OiExLG9wYWNpdHk6Ljgsc2hvd190aXRsZTohMCxhbGxvd19yZXNpemU6ITAsYWxsb3dfZXhwYW5kOiEwLGRlZmF1bHRfd2lkdGg6NTAwLGRlZmF1bHRfaGVpZ2h0OjM0NCxjb3VudGVyX3NlcGFyYXRvcl9sYWJlbDoiLyIsdGhlbWU6InBwX2RlZmF1bHQiLGhvcml6b250YWxfcGFkZGluZzoyMCxoaWRlZmxhc2g6ITEsd21vZGU6Im9wYXF1ZSIsYXV0b3BsYXk6ITAsbW9kYWw6ITEsZGVlcGxpbmtpbmc6ITAsCm92ZXJsYXlfZ2FsbGVyeTohMCxvdmVybGF5X2dhbGxlcnlfbWF4OjMwLGtleWJvYXJkX3Nob3J0Y3V0czohMCxjaGFuZ2VwaWN0dXJlY2FsbGJhY2s6ZnVuY3Rpb24oKXt9LGNhbGxiYWNrOmZ1bmN0aW9uKCl7fSxpZTZfZmFsbGJhY2s6ITAsbWFya3VwOic8ZGl2IGNsYXNzPSJwcF9waWNfaG9sZGVyIj4gICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHB0Ij4mbmJzcDs8L2Rpdj4gICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHBfdG9wIj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InBwX2xlZnQiPjwvZGl2PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHBfbWlkZGxlIj48L2Rpdj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InBwX3JpZ2h0Ij48L2Rpdj4gICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+ICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InBwX2NvbnRlbnRfY29udGFpbmVyIj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InBwX2xlZnQiPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9InBwX2V4cGFuZCIgdGl0bGU9IkV4cGFuZCB0aGUgaW1hZ2UiPkV4cGFuZDwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InBwX3JpZ2h0Ij4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcF9jb250ZW50Ij4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHBfbG9hZGVySWNvbiI+PC9kaXY+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InBwX2ZhZGUiPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9InBwX2Nsb3NlIiBocmVmPSIjIj5DbG9zZTwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InBwX2hvdmVyQ29udGFpbmVyIGpxdWVyeXBwMiI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9InBwX25leHQiIGhyZWY9IiMiPm5leHQ8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9InBwX3ByZXZpb3VzIiBocmVmPSIjIj5wcmV2aW91czwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0icHBfZnVsbF9yZXMiPjwvZGl2PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHBfZGV0YWlscyI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9InBwX2Rlc2NyaXB0aW9uIj48L3A+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHBfc29jaWFsIj57cHBfc29jaWFsfTwvZGl2PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+ICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InBwX2JvdHRvbSI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcF9sZWZ0Ij48L2Rpdj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InBwX21pZGRsZSI+PC9kaXY+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcF9yaWdodCI+PC9kaXY+ICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PiAgICAgICAgICAgICAgICAgICAgIDwvZGl2PiAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InBwX292ZXJsYXkiPjwvZGl2PicsCmdhbGxlcnlfbWFya3VwOic8ZGl2IGNsYXNzPSJwcF9nYWxsZXJ5Ij4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjIiBjbGFzcz0icHBfYXJyb3dfcHJldmlvdXMiPlByZXZpb3VzPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtnYWxsZXJ5fSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIGNsYXNzPSJwcF9hcnJvd19uZXh0Ij5OZXh0PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+JyxpbWFnZV9tYXJrdXA6JzxpbWcgaWQ9ImZ1bGxSZXNJbWFnZSIgc3JjPSJ7cGF0aH0iIC8+JyxmbGFzaF9tYXJrdXA6JzxvYmplY3QgY2xhc3NpZD0iY2xzaWQ6RDI3Q0RCNkUtQUU2RC0xMWNmLTk2QjgtNDQ0NTUzNTQwMDAwIiB3aWR0aD0ie3dpZHRofSIgaGVpZ2h0PSJ7aGVpZ2h0fSI+PHBhcmFtIG5hbWU9Indtb2RlIiB2YWx1ZT0ie3dtb2RlfSIgLz48cGFyYW0gbmFtZT0iYWxsb3dmdWxsc2NyZWVuIiB2YWx1ZT0idHJ1ZSIgLz48cGFyYW0gbmFtZT0iYWxsb3dzY3JpcHRhY2Nlc3MiIHZhbHVlPSJhbHdheXMiIC8+PHBhcmFtIG5hbWU9Im1vdmllIiB2YWx1ZT0ie3BhdGh9IiAvPjxlbWJlZCBzcmM9IntwYXRofSIgdHlwZT0iYXBwbGljYXRpb24veC1zaG9ja3dhdmUtZmxhc2giIGFsbG93ZnVsbHNjcmVlbj0idHJ1ZSIgYWxsb3dzY3JpcHRhY2Nlc3M9ImFsd2F5cyIgd2lkdGg9Int3aWR0aH0iIGhlaWdodD0ie2hlaWdodH0iIHdtb2RlPSJ7d21vZGV9Ij48L2VtYmVkPjwvb2JqZWN0PicsCnF1aWNrdGltZV9tYXJrdXA6JzxvYmplY3QgY2xhc3NpZD0iY2xzaWQ6MDJCRjI1RDUtOEMxNy00QjIzLUJDODAtRDM0ODhBQkREQzZCIiBjb2RlYmFzZT0iaHR0cDovL3d3dy5hcHBsZS5jb20vcXRhY3RpdmV4L3F0cGx1Z2luLmNhYiIgaGVpZ2h0PSJ7aGVpZ2h0fSIgd2lkdGg9Int3aWR0aH0iPjxwYXJhbSBuYW1lPSJzcmMiIHZhbHVlPSJ7cGF0aH0iPjxwYXJhbSBuYW1lPSJhdXRvcGxheSIgdmFsdWU9InthdXRvcGxheX0iPjxwYXJhbSBuYW1lPSJ0eXBlIiB2YWx1ZT0idmlkZW8vcXVpY2t0aW1lIj48ZW1iZWQgc3JjPSJ7cGF0aH0iIGhlaWdodD0ie2hlaWdodH0iIHdpZHRoPSJ7d2lkdGh9IiBhdXRvcGxheT0ie2F1dG9wbGF5fSIgdHlwZT0idmlkZW8vcXVpY2t0aW1lIiBwbHVnaW5zcGFnZT0iaHR0cDovL3d3dy5hcHBsZS5jb20vcXVpY2t0aW1lL2Rvd25sb2FkLyI+PC9lbWJlZD48L29iamVjdD4nLGlmcmFtZV9tYXJrdXA6JzxpZnJhbWUgc3JjID0ie3BhdGh9IiB3aWR0aD0ie3dpZHRofSIgaGVpZ2h0PSJ7aGVpZ2h0fSIgZnJhbWVib3JkZXI9Im5vIj48L2lmcmFtZT4nLAppbmxpbmVfbWFya3VwOic8ZGl2IGNsYXNzPSJwcF9pbmxpbmUiPntjb250ZW50fTwvZGl2PicsbXA0X21hcmt1cDonPHZpZGVvIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IiIgcHJlbG9hZD0iYXV0byIgYXV0b3BsYXkgY29udHJvbHM9IiIgaWQ9InBsYXllciIgc3R5bGU9IndpZHRoOiAxMDAlOyI+PHNvdXJjZSB0eXBlPSJ2aWRlby9tcDQiIHNyYz0ie3BhdGh9Ij48L3NvdXJjZT48L3ZpZGVvPicsY3VzdG9tX21hcmt1cDoiIixzb2NpYWxfdG9vbHM6JzxkaXYgY2xhc3M9InR3aXR0ZXIiPjxhIGhyZWY9Imh0dHA6Ly90d2l0dGVyLmNvbS9zaGFyZSIgY2xhc3M9InR3aXR0ZXItc2hhcmUtYnV0dG9uIiBkYXRhLWNvdW50PSJub25lIj5Ud2VldDwvYT48c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwOi8vcGxhdGZvcm0udHdpdHRlci5jb20vd2lkZ2V0cy5qcyI+XHgzYy9zY3JpcHQ+PC9kaXY+PGRpdiBjbGFzcz0iZmFjZWJvb2siPjxpZnJhbWUgc3JjPSIvL3d3dy5mYWNlYm9vay5jb20vcGx1Z2lucy9saWtlLnBocD9sb2NhbGU9ZW5fVVMmaHJlZj17bG9jYXRpb25faHJlZn0mYW1wO2xheW91dD1idXR0b25fY291bnQmYW1wO3Nob3dfZmFjZXM9dHJ1ZSZhbXA7d2lkdGg9NTAwJmFtcDthY3Rpb249bGlrZSZhbXA7Zm9udCZhbXA7Y29sb3JzY2hlbWU9bGlnaHQmYW1wO2hlaWdodD0yMyIgc2Nyb2xsaW5nPSJubyIgZnJhbWVib3JkZXI9IjAiIHN0eWxlPSJib3JkZXI6bm9uZTsgb3ZlcmZsb3c6aGlkZGVuOyB3aWR0aDo1MDBweDsgaGVpZ2h0OjIzcHg7IiBhbGxvd1RyYW5zcGFyZW5jeT0idHJ1ZSI+PC9pZnJhbWU+PC9kaXY+J30sCmUpO3ZhciBiPXt9LHg9dGhpcyxyPSExLGQsdSx2LEIsbixtLGs9YSh3aW5kb3cpLmhlaWdodCgpLGg9YSh3aW5kb3cpLndpZHRoKCkscTtkb3Jlc2l6ZT0hMDtzY3JvbGxfcG9zPUMoKTthKHdpbmRvdykub2ZmKCJyZXNpemUucHJldHR5cGhvdG8iKS5vbigicmVzaXplLnByZXR0eXBob3RvIixmdW5jdGlvbigpe3coKTtrPWEod2luZG93KS5oZWlnaHQoKTtoPWEod2luZG93KS53aWR0aCgpOyJ1bmRlZmluZWQiIT10eXBlb2YgJHBwX292ZXJsYXkmJiRwcF9vdmVybGF5LmhlaWdodChhKGRvY3VtZW50KS5oZWlnaHQoKSkud2lkdGgoaCl9KTtpZihlLmtleWJvYXJkX3Nob3J0Y3V0cylhKGRvY3VtZW50KS5vZmYoImtleWRvd24ucHJldHR5cGhvdG8iKS5vbigia2V5ZG93bi5wcmV0dHlwaG90byIsZnVuY3Rpb24oYyl7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiAkcHBfcGljX2hvbGRlciYmJHBwX3BpY19ob2xkZXIuaXMoIjp2aXNpYmxlIikpc3dpdGNoKGMua2V5Q29kZSl7Y2FzZSAzNzphLnByZXR0eVBob3RvLmNoYW5nZVBhZ2UoInByZXZpb3VzIik7CmMucHJldmVudERlZmF1bHQoKTticmVhaztjYXNlIDM5OmEucHJldHR5UGhvdG8uY2hhbmdlUGFnZSgibmV4dCIpO2MucHJldmVudERlZmF1bHQoKTticmVhaztjYXNlIDI3OmIubW9kYWx8fGEucHJldHR5UGhvdG8uY2xvc2UoKSxjLnByZXZlbnREZWZhdWx0KCl9fSk7YS5wcmV0dHlQaG90by5pbml0aWFsaXplPWZ1bmN0aW9uKCl7Yj1lOyJwcF9kZWZhdWx0Ij09Yi50aGVtZSYmKGIuaG9yaXpvbnRhbF9wYWRkaW5nPTE2KTt0aGVSZWw9YSh0aGlzKS5hdHRyKGIuaG9vayk7Z2FsbGVyeVJlZ0V4cD0vXFsoPzouKilcXS87cHBfaW1hZ2VzPShpc1NldD1nYWxsZXJ5UmVnRXhwLmV4ZWModGhlUmVsKT8hMDohMSk\/alF1ZXJ5Lm1hcCh4LGZ1bmN0aW9uKGMsZil7aWYoLTEhPWEoYykuYXR0cihiLmhvb2spLmluZGV4T2YodGhlUmVsKSlyZXR1cm4gYShjKS5hdHRyKCJocmVmIil9KTphLm1ha2VBcnJheShhKHRoaXMpLmF0dHIoImhyZWYiKSk7cHBfdGl0bGVzPWlzU2V0P2pRdWVyeS5tYXAoeCwKZnVuY3Rpb24oYyxmKXtpZigtMSE9YShjKS5hdHRyKGIuaG9vaykuaW5kZXhPZih0aGVSZWwpKXJldHVybiBhKGMpLmZpbmQoImltZyIpLmF0dHIoImFsdCIpP2EoYykuZmluZCgiaW1nIikuYXR0cigiYWx0Iik6IiJ9KTphLm1ha2VBcnJheShhKHRoaXMpLmZpbmQoImltZyIpLmF0dHIoImFsdCIpKTtwcF9kZXNjcmlwdGlvbnM9aXNTZXQ\/alF1ZXJ5Lm1hcCh4LGZ1bmN0aW9uKGMsZil7aWYoLTEhPWEoYykuYXR0cihiLmhvb2spLmluZGV4T2YodGhlUmVsKSlyZXR1cm4gYShjKS5hdHRyKCJ0aXRsZSIpP2EoYykuYXR0cigidGl0bGUiKToiIn0pOmEubWFrZUFycmF5KGEodGhpcykuYXR0cigidGl0bGUiKSk7cHBfaW1hZ2VzLmxlbmd0aD5iLm92ZXJsYXlfZ2FsbGVyeV9tYXgmJihiLm92ZXJsYXlfZ2FsbGVyeT0hMSk7c2V0X3Bvc2l0aW9uPWpRdWVyeS5pbkFycmF5KGEodGhpcykuYXR0cigiaHJlZiIpLHBwX2ltYWdlcyk7cmVsX2luZGV4PWlzU2V0P3NldF9wb3NpdGlvbjphKCJhWyIrCmIuaG9vaysiXj0nIit0aGVSZWwrIiddIikuaW5kZXgoYSh0aGlzKSk7RCh0aGlzKTtpZihiLmFsbG93X3Jlc2l6ZSlhKHdpbmRvdykub24oInNjcm9sbC5wcmV0dHlwaG90byIsZnVuY3Rpb24oKXt3KCl9KTthLnByZXR0eVBob3RvLm9wZW4oKTtyZXR1cm4hMX07YS5wcmV0dHlQaG90by5vcGVuPWZ1bmN0aW9uKGMsZixFLEYpeyJ1bmRlZmluZWQiPT10eXBlb2YgYiYmKGI9ZSxwcF9pbWFnZXM9YS5tYWtlQXJyYXkoYykscHBfdGl0bGVzPWY\/YS5tYWtlQXJyYXkoZik6YS5tYWtlQXJyYXkoIiIpLHBwX2Rlc2NyaXB0aW9ucz1FP2EubWFrZUFycmF5KEUpOmEubWFrZUFycmF5KCIiKSxpc1NldD0xPHBwX2ltYWdlcy5sZW5ndGg\/ITA6ITEsc2V0X3Bvc2l0aW9uPUY\/RjowLEQoYy50YXJnZXQpKTtiLmhpZGVmbGFzaCYmYSgib2JqZWN0LGVtYmVkLGlmcmFtZVtzcmMqPXlvdXR1YmVdLGlmcmFtZVtzcmMqPXZpbWVvXSIpLmNzcygidmlzaWJpbGl0eSIsImhpZGRlbiIpO0coYShwcF9pbWFnZXMpLmxlbmd0aCk7CmEoIi5wcF9sb2FkZXJJY29uIikuc2hvdygpO2IuZGVlcGxpbmtpbmcmJiJ1bmRlZmluZWQiIT10eXBlb2YgdGhlUmVsJiYobG9jYXRpb24uaGFzaD10aGVSZWwrIi8iK3JlbF9pbmRleCsiLyIpO2Iuc29jaWFsX3Rvb2xzJiYoZmFjZWJvb2tfbGlrZV9saW5rPWIuc29jaWFsX3Rvb2xzLnJlcGxhY2UoIntsb2NhdGlvbl9ocmVmfSIsZW5jb2RlVVJJQ29tcG9uZW50KGxvY2F0aW9uLmhyZWYpKSwkcHBfcGljX2hvbGRlci5maW5kKCIucHBfc29jaWFsIikuaHRtbChmYWNlYm9va19saWtlX2xpbmspKTskcHB0LmlzKCI6aGlkZGVuIikmJiRwcHQuY3NzKCJvcGFjaXR5IiwwKS5zaG93KCk7JHBwX292ZXJsYXkuc2hvdygpLmZhZGVUbyhiLmFuaW1hdGlvbl9zcGVlZCxiLm9wYWNpdHkpOyRwcF9waWNfaG9sZGVyLmZpbmQoIi5jdXJyZW50VGV4dEhvbGRlciIpLnRleHQoc2V0X3Bvc2l0aW9uKzErYi5jb3VudGVyX3NlcGFyYXRvcl9sYWJlbCthKHBwX2ltYWdlcykubGVuZ3RoKTsidW5kZWZpbmVkIiE9CnR5cGVvZiBwcF9kZXNjcmlwdGlvbnNbc2V0X3Bvc2l0aW9uXSYmIiIhPXBwX2Rlc2NyaXB0aW9uc1tzZXRfcG9zaXRpb25dPyRwcF9waWNfaG9sZGVyLmZpbmQoIi5wcF9kZXNjcmlwdGlvbiIpLnNob3coKS5odG1sKHVuZXNjYXBlKHBwX2Rlc2NyaXB0aW9uc1tzZXRfcG9zaXRpb25dKSk6JHBwX3BpY19ob2xkZXIuZmluZCgiLnBwX2Rlc2NyaXB0aW9uIikuaGlkZSgpO21vdmllX3dpZHRoPXBhcnNlRmxvYXQobCgid2lkdGgiLHBwX2ltYWdlc1tzZXRfcG9zaXRpb25dKSk\/bCgid2lkdGgiLHBwX2ltYWdlc1tzZXRfcG9zaXRpb25dKTpiLmRlZmF1bHRfd2lkdGgudG9TdHJpbmcoKTttb3ZpZV9oZWlnaHQ9cGFyc2VGbG9hdChsKCJoZWlnaHQiLHBwX2ltYWdlc1tzZXRfcG9zaXRpb25dKSk\/bCgiaGVpZ2h0IixwcF9pbWFnZXNbc2V0X3Bvc2l0aW9uXSk6Yi5kZWZhdWx0X2hlaWdodC50b1N0cmluZygpO3I9ITE7LTEhPW1vdmllX2hlaWdodC5pbmRleE9mKCIlIikmJihtb3ZpZV9oZWlnaHQ9CnBhcnNlRmxvYXQoYSh3aW5kb3cpLmhlaWdodCgpKnBhcnNlRmxvYXQobW92aWVfaGVpZ2h0KS8xMDAtMTUwKSxyPSEwKTstMSE9bW92aWVfd2lkdGguaW5kZXhPZigiJSIpJiYobW92aWVfd2lkdGg9cGFyc2VGbG9hdChhKHdpbmRvdykud2lkdGgoKSpwYXJzZUZsb2F0KG1vdmllX3dpZHRoKS8xMDAtMTUwKSxyPSEwKTskcHBfcGljX2hvbGRlci5mYWRlSW4oZnVuY3Rpb24oKXtiLnNob3dfdGl0bGUmJiIiIT1wcF90aXRsZXNbc2V0X3Bvc2l0aW9uXSYmInVuZGVmaW5lZCIhPXR5cGVvZiBwcF90aXRsZXNbc2V0X3Bvc2l0aW9uXT8kcHB0Lmh0bWwodW5lc2NhcGUocHBfdGl0bGVzW3NldF9wb3NpdGlvbl0pKTokcHB0Lmh0bWwoIiZuYnNwOyIpO2ltZ1ByZWxvYWRlcj0iIjtza2lwSW5qZWN0aW9uPSExO3N3aXRjaCh0KHBwX2ltYWdlc1tzZXRfcG9zaXRpb25dKSl7Y2FzZSAiaW1hZ2UiOmltZ1ByZWxvYWRlcj1uZXcgSW1hZ2U7bmV4dEltYWdlPW5ldyBJbWFnZTtpc1NldCYmc2V0X3Bvc2l0aW9uPAphKHBwX2ltYWdlcykubGVuZ3RoLTEmJihuZXh0SW1hZ2Uuc3JjPXBwX2ltYWdlc1tzZXRfcG9zaXRpb24rMV0pO3ByZXZJbWFnZT1uZXcgSW1hZ2U7aXNTZXQmJnBwX2ltYWdlc1tzZXRfcG9zaXRpb24tMV0mJihwcmV2SW1hZ2Uuc3JjPXBwX2ltYWdlc1tzZXRfcG9zaXRpb24tMV0pOyRwcF9waWNfaG9sZGVyLmZpbmQoIiNwcF9mdWxsX3JlcyIpWzBdLmlubmVySFRNTD1iLmltYWdlX21hcmt1cC5yZXBsYWNlKC97cGF0aH0vZyxwcF9pbWFnZXNbc2V0X3Bvc2l0aW9uXSk7aW1nUHJlbG9hZGVyLm9ubG9hZD1mdW5jdGlvbigpe2Q9ZyhpbWdQcmVsb2FkZXIud2lkdGgsaW1nUHJlbG9hZGVyLmhlaWdodCk7cCgpfTtpbWdQcmVsb2FkZXIub25lcnJvcj1mdW5jdGlvbigpe2FsZXJ0KCJJbWFnZSBjYW5ub3QgYmUgbG9hZGVkLiBNYWtlIHN1cmUgdGhlIHBhdGggaXMgY29ycmVjdCBhbmQgaW1hZ2UgZXhpc3QuIik7YS5wcmV0dHlQaG90by5jbG9zZSgpfTtpbWdQcmVsb2FkZXIuc3JjPXBwX2ltYWdlc1tzZXRfcG9zaXRpb25dOwpicmVhaztjYXNlICJ5b3V0dWJlIjpkPWcobW92aWVfd2lkdGgsbW92aWVfaGVpZ2h0KTttb3ZpZV9pZD1sKCJ2IixwcF9pbWFnZXNbc2V0X3Bvc2l0aW9uXSk7IiI9PW1vdmllX2lkJiYobW92aWVfaWQ9cHBfaW1hZ2VzW3NldF9wb3NpdGlvbl0uc3BsaXQoInlvdXR1LmJlLyIpLG1vdmllX2lkPW1vdmllX2lkWzFdLDA8bW92aWVfaWQuaW5kZXhPZigiPyIpJiYobW92aWVfaWQ9bW92aWVfaWQuc3Vic3RyKDAsbW92aWVfaWQuaW5kZXhPZigiPyIpKSksMDxtb3ZpZV9pZC5pbmRleE9mKCImIikmJihtb3ZpZV9pZD1tb3ZpZV9pZC5zdWJzdHIoMCxtb3ZpZV9pZC5pbmRleE9mKCImIikpKSk7bW92aWU9Imh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL2VtYmVkLyIrbW92aWVfaWQ7bCgicmVsIixwcF9pbWFnZXNbc2V0X3Bvc2l0aW9uXSk\/bW92aWUrPSI\/cmVsPSIrbCgicmVsIixwcF9pbWFnZXNbc2V0X3Bvc2l0aW9uXSk6bW92aWUrPSI\/cmVsPTEiO2IuYXV0b3BsYXkmJihtb3ZpZSs9IiZhdXRvcGxheT0xIik7CnRvSW5qZWN0PWIuaWZyYW1lX21hcmt1cC5yZXBsYWNlKC97d2lkdGh9L2csZC53aWR0aCkucmVwbGFjZSgve2hlaWdodH0vZyxkLmhlaWdodCkucmVwbGFjZSgve3dtb2RlfS9nLGIud21vZGUpLnJlcGxhY2UoL3twYXRofS9nLG1vdmllKTticmVhaztjYXNlICJ2aW1lbyI6ZD1nKG1vdmllX3dpZHRoLG1vdmllX2hlaWdodCk7bW92aWVfaWQ9cHBfaW1hZ2VzW3NldF9wb3NpdGlvbl07bW92aWU9Imh0dHA6Ly9wbGF5ZXIudmltZW8uY29tL3ZpZGVvLyIrbW92aWVfaWQubWF0Y2goL2h0dHAocz8pOlwvXC8od3d3XC4pP3ZpbWVvLmNvbVwvKFxkKykvKVszXSsiP3RpdGxlPTAmYW1wO2J5bGluZT0wJmFtcDtwb3J0cmFpdD0wIjtiLmF1dG9wbGF5JiYobW92aWUrPSImYXV0b3BsYXk9MTsiKTt2aW1lb193aWR0aD1kLndpZHRoKyIvZW1iZWQvP21vb2dfd2lkdGg9IitkLndpZHRoO3RvSW5qZWN0PWIuaWZyYW1lX21hcmt1cC5yZXBsYWNlKC97d2lkdGh9L2csdmltZW9fd2lkdGgpLnJlcGxhY2UoL3toZWlnaHR9L2csCmQuaGVpZ2h0KS5yZXBsYWNlKC97cGF0aH0vZyxtb3ZpZSk7YnJlYWs7Y2FzZSAibXA0IjpkPWcobW92aWVfd2lkdGgsbW92aWVfaGVpZ2h0KTttb3ZpZV91cmw9cHBfaW1hZ2VzW3NldF9wb3NpdGlvbl07dG9JbmplY3Q9Yi5tcDRfbWFya3VwLnJlcGxhY2UoL3twYXRofS9nLG1vdmllX3VybCk7YnJlYWs7Y2FzZSAicXVpY2t0aW1lIjpkPWcobW92aWVfd2lkdGgsbW92aWVfaGVpZ2h0KTtkLmhlaWdodCs9MTU7ZC5jb250ZW50SGVpZ2h0Kz0xNTtkLmNvbnRhaW5lckhlaWdodCs9MTU7dG9JbmplY3Q9Yi5xdWlja3RpbWVfbWFya3VwLnJlcGxhY2UoL3t3aWR0aH0vZyxkLndpZHRoKS5yZXBsYWNlKC97aGVpZ2h0fS9nLGQuaGVpZ2h0KS5yZXBsYWNlKC97d21vZGV9L2csYi53bW9kZSkucmVwbGFjZSgve3BhdGh9L2cscHBfaW1hZ2VzW3NldF9wb3NpdGlvbl0pLnJlcGxhY2UoL3thdXRvcGxheX0vZyxiLmF1dG9wbGF5KTticmVhaztjYXNlICJmbGFzaCI6ZD1nKG1vdmllX3dpZHRoLAptb3ZpZV9oZWlnaHQpO2ZsYXNoX3ZhcnM9cHBfaW1hZ2VzW3NldF9wb3NpdGlvbl07Zmxhc2hfdmFycz1mbGFzaF92YXJzLnN1YnN0cmluZyhwcF9pbWFnZXNbc2V0X3Bvc2l0aW9uXS5pbmRleE9mKCJmbGFzaHZhcnMiKSsxMCxwcF9pbWFnZXNbc2V0X3Bvc2l0aW9uXS5sZW5ndGgpO2ZpbGVuYW1lPXBwX2ltYWdlc1tzZXRfcG9zaXRpb25dO2ZpbGVuYW1lPWZpbGVuYW1lLnN1YnN0cmluZygwLGZpbGVuYW1lLmluZGV4T2YoIj8iKSk7dG9JbmplY3Q9Yi5mbGFzaF9tYXJrdXAucmVwbGFjZSgve3dpZHRofS9nLGQud2lkdGgpLnJlcGxhY2UoL3toZWlnaHR9L2csZC5oZWlnaHQpLnJlcGxhY2UoL3t3bW9kZX0vZyxiLndtb2RlKS5yZXBsYWNlKC97cGF0aH0vZyxmaWxlbmFtZSsiPyIrZmxhc2hfdmFycyk7YnJlYWs7Y2FzZSAiaWZyYW1lIjpkPWcobW92aWVfd2lkdGgsbW92aWVfaGVpZ2h0KTtmcmFtZV91cmw9cHBfaW1hZ2VzW3NldF9wb3NpdGlvbl07ZnJhbWVfdXJsPWZyYW1lX3VybC5zdWJzdHIoMCwKZnJhbWVfdXJsLmluZGV4T2YoImlmcmFtZSIpLTEpO3RvSW5qZWN0PWIuaWZyYW1lX21hcmt1cC5yZXBsYWNlKC97d2lkdGh9L2csZC53aWR0aCkucmVwbGFjZSgve2hlaWdodH0vZyxkLmhlaWdodCkucmVwbGFjZSgve3BhdGh9L2csZnJhbWVfdXJsKTticmVhaztjYXNlICJhamF4Ijpkb3Jlc2l6ZT0hMTtkPWcobW92aWVfd2lkdGgsbW92aWVfaGVpZ2h0KTtza2lwSW5qZWN0aW9uPWRvcmVzaXplPSEwO2EuZ2V0KHBwX2ltYWdlc1tzZXRfcG9zaXRpb25dLGZ1bmN0aW9uKEgpe3RvSW5qZWN0PWIuaW5saW5lX21hcmt1cC5yZXBsYWNlKC97Y29udGVudH0vZyxIKTskcHBfcGljX2hvbGRlci5maW5kKCIjcHBfZnVsbF9yZXMiKVswXS5pbm5lckhUTUw9dG9JbmplY3Q7cCgpfSk7YnJlYWs7Y2FzZSAiY3VzdG9tIjpkPWcobW92aWVfd2lkdGgsbW92aWVfaGVpZ2h0KTt0b0luamVjdD1iLmN1c3RvbV9tYXJrdXA7YnJlYWs7Y2FzZSAiaW5saW5lIjpteUNsb25lPWEocHBfaW1hZ2VzW3NldF9wb3NpdGlvbl0pLmNsb25lKCkuYXBwZW5kKCc8YnIgY2xlYXI9ImFsbCIgLz4nKS5jc3Moe3dpZHRoOmIuZGVmYXVsdF93aWR0aH0pLndyYXBJbm5lcignPGRpdiBpZD0icHBfZnVsbF9yZXMiPjxkaXYgY2xhc3M9InBwX2lubGluZSI+PC9kaXY+PC9kaXY+JykuYXBwZW5kVG8oYSgiYm9keSIpKS5zaG93KCksCmRvcmVzaXplPSExLGQ9ZyhhKG15Q2xvbmUpLndpZHRoKCksYShteUNsb25lKS5oZWlnaHQoKSksZG9yZXNpemU9ITAsYShteUNsb25lKS5yZW1vdmUoKSx0b0luamVjdD1iLmlubGluZV9tYXJrdXAucmVwbGFjZSgve2NvbnRlbnR9L2csYShwcF9pbWFnZXNbc2V0X3Bvc2l0aW9uXSkuaHRtbCgpKX1pbWdQcmVsb2FkZXJ8fHNraXBJbmplY3Rpb258fCgkcHBfcGljX2hvbGRlci5maW5kKCIjcHBfZnVsbF9yZXMiKVswXS5pbm5lckhUTUw9dG9JbmplY3QscCgpKX0pO3JldHVybiExfTthLnByZXR0eVBob3RvLmNoYW5nZVBhZ2U9ZnVuY3Rpb24oYyl7Y3VycmVudEdhbGxlcnlQYWdlPTA7InByZXZpb3VzIj09Yz8oc2V0X3Bvc2l0aW9uLS0sMD5zZXRfcG9zaXRpb24mJihzZXRfcG9zaXRpb249YShwcF9pbWFnZXMpLmxlbmd0aC0xKSk6Im5leHQiPT1jPyhzZXRfcG9zaXRpb24rKyxzZXRfcG9zaXRpb24+YShwcF9pbWFnZXMpLmxlbmd0aC0xJiYoc2V0X3Bvc2l0aW9uPTApKTpzZXRfcG9zaXRpb249CmM7cmVsX2luZGV4PXNldF9wb3NpdGlvbjtkb3Jlc2l6ZXx8KGRvcmVzaXplPSEwKTtiLmFsbG93X2V4cGFuZCYmYSgiLnBwX2NvbnRyYWN0IikucmVtb3ZlQ2xhc3MoInBwX2NvbnRyYWN0IikuYWRkQ2xhc3MoInBwX2V4cGFuZCIpO3ooZnVuY3Rpb24oKXthLnByZXR0eVBob3RvLm9wZW4oKX0pfTthLnByZXR0eVBob3RvLmNoYW5nZUdhbGxlcnlQYWdlPWZ1bmN0aW9uKGMpeyJuZXh0Ij09Yz8oY3VycmVudEdhbGxlcnlQYWdlKyssY3VycmVudEdhbGxlcnlQYWdlPnRvdGFsUGFnZSYmKGN1cnJlbnRHYWxsZXJ5UGFnZT0wKSk6InByZXZpb3VzIj09Yz8oY3VycmVudEdhbGxlcnlQYWdlLS0sMD5jdXJyZW50R2FsbGVyeVBhZ2UmJihjdXJyZW50R2FsbGVyeVBhZ2U9dG90YWxQYWdlKSk6Y3VycmVudEdhbGxlcnlQYWdlPWM7c2xpZGVfc3BlZWQ9Im5leHQiPT1jfHwicHJldmlvdXMiPT1jP2IuYW5pbWF0aW9uX3NwZWVkOjA7c2xpZGVfdG89Y3VycmVudEdhbGxlcnlQYWdlKml0ZW1zUGVyUGFnZSoKaXRlbVdpZHRoOyRwcF9nYWxsZXJ5LmZpbmQoInVsIikuYW5pbWF0ZSh7bGVmdDotc2xpZGVfdG99LHNsaWRlX3NwZWVkKX07YS5wcmV0dHlQaG90by5zdGFydFNsaWRlc2hvdz1mdW5jdGlvbigpeyJ1bmRlZmluZWQiPT10eXBlb2YgcT8oJHBwX3BpY19ob2xkZXIuZmluZCgiLnBwX3BsYXkiKS5vZmYoImNsaWNrIikucmVtb3ZlQ2xhc3MoInBwX3BsYXkiKS5hZGRDbGFzcygicHBfcGF1c2UiKS5vbigiY2xpY2siLGZ1bmN0aW9uKCl7YS5wcmV0dHlQaG90by5zdG9wU2xpZGVzaG93KCk7cmV0dXJuITF9KSxxPXNldEludGVydmFsKGEucHJldHR5UGhvdG8uc3RhcnRTbGlkZXNob3csYi5zbGlkZXNob3cpKTphLnByZXR0eVBob3RvLmNoYW5nZVBhZ2UoIm5leHQiKX07YS5wcmV0dHlQaG90by5zdG9wU2xpZGVzaG93PWZ1bmN0aW9uKCl7JHBwX3BpY19ob2xkZXIuZmluZCgiLnBwX3BhdXNlIikub2ZmKCJjbGljayIpLnJlbW92ZUNsYXNzKCJwcF9wYXVzZSIpLmFkZENsYXNzKCJwcF9wbGF5Iikub24oImNsaWNrIiwKZnVuY3Rpb24oKXthLnByZXR0eVBob3RvLnN0YXJ0U2xpZGVzaG93KCk7cmV0dXJuITF9KTtjbGVhckludGVydmFsKHEpO3E9dm9pZCAwfTthLnByZXR0eVBob3RvLmNsb3NlPWZ1bmN0aW9uKCl7JHBwX292ZXJsYXkuaXMoIjphbmltYXRlZCIpfHwoYS5wcmV0dHlQaG90by5zdG9wU2xpZGVzaG93KCksJHBwX3BpY19ob2xkZXIuc3RvcCgpLmZpbmQoIm9iamVjdCxlbWJlZCIpLmNzcygidmlzaWJpbGl0eSIsImhpZGRlbiIpLGEoImRpdi5wcF9waWNfaG9sZGVyLGRpdi5wcHQsLnBwX2ZhZGUiKS5mYWRlT3V0KGIuYW5pbWF0aW9uX3NwZWVkLGZ1bmN0aW9uKCl7YSh0aGlzKS5yZW1vdmUoKX0pLCRwcF9vdmVybGF5LmZhZGVPdXQoYi5hbmltYXRpb25fc3BlZWQsZnVuY3Rpb24oKXtiLmhpZGVmbGFzaCYmYSgib2JqZWN0LGVtYmVkLGlmcmFtZVtzcmMqPXlvdXR1YmVdLGlmcmFtZVtzcmMqPXZpbWVvXSIpLmNzcygidmlzaWJpbGl0eSIsInZpc2libGUiKTthKHRoaXMpLnJlbW92ZSgpOwphKHdpbmRvdykub2ZmKCJzY3JvbGwucHJldHR5cGhvdG8iKTstMSE9PWxvY2F0aW9uLmhyZWYuaW5kZXhPZigiI3ByZXR0eVBob3RvIikmJihsb2NhdGlvbi5oYXNoPSJwcmV0dHlQaG90byIpO2IuY2FsbGJhY2soKTtkb3Jlc2l6ZT0hMDt1PSExO2RlbGV0ZSBifSkpfTshcHBfYWxyZWFkeUluaXRpYWxpemVkJiZ5KCkmJihwcF9hbHJlYWR5SW5pdGlhbGl6ZWQ9ITAsaGFzaFJlbD1oYXNoSW5kZXg9eSgpLGhhc2hJbmRleD1oYXNoSW5kZXguc3Vic3RyaW5nKGhhc2hJbmRleC5pbmRleE9mKCIvIikrMSxoYXNoSW5kZXgubGVuZ3RoLTEpLGhhc2hSZWw9aGFzaFJlbC5zdWJzdHJpbmcoMCxoYXNoUmVsLmluZGV4T2YoIi8iKSksc2V0VGltZW91dChmdW5jdGlvbigpe2EoImFbIitlLmhvb2srIl49JyIraGFzaFJlbCsiJ106ZXEoIitoYXNoSW5kZXgrIikiKS50cmlnZ2VyKCJjbGljayIpfSw1MCkpO3JldHVybiB0aGlzLm9mZigiY2xpY2sucHJldHR5cGhvdG8iKS5vbigiY2xpY2sucHJldHR5cGhvdG8iLAphLnByZXR0eVBob3RvLmluaXRpYWxpemUpfX0pKGpRdWVyeSk7dmFyIHBwX2FscmVhZHlJbml0aWFsaXplZD0hMTsKLyoqIC9tL2pzL2pxdWVyeS50cmFuc2l0aW9uLm1pbi5qcyAqKi8KLyohCiAqIGpRdWVyeSBUcmFuc2l0IC0gQ1NTMyB0cmFuc2l0aW9ucyBhbmQgdHJhbnNmb3JtYXRpb25zCiAqIENvcHlyaWdodChjKSAyMDExIFJpY28gU3RhLiBDcnV6IDxyaWNvQHJpY29zdGFjcnV6LmNvbT4KICogTUlUIExpY2Vuc2VkLgogKgogKiBodHRwOi8vcmljb3N0YWNydXouY29tL2pxdWVyeS50cmFuc2l0CiAqIGh0dHA6Ly9naXRodWIuY29tL3JzdGFjcnV6L2pxdWVyeS50cmFuc2l0CiAqLwooZnVuY3Rpb24oZCl7ZnVuY3Rpb24gayhhKXt2YXIgYj1bIk1veiIsIldlYmtpdCIsIk8iLCJtcyJdLGM9YS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSthLnN1YnN0cigxKTtpZihhIGluIGkuc3R5bGUpcmV0dXJuIGE7Zm9yKGE9MDthPGIubGVuZ3RoOysrYSl7dmFyIGQ9YlthXStjO2lmKGQgaW4gaS5zdHlsZSlyZXR1cm4gZH19ZnVuY3Rpb24gaihhKXsic3RyaW5nIj09PXR5cGVvZiBhJiZ0aGlzLnBhcnNlKGEpO3JldHVybiB0aGlzfWZ1bmN0aW9uIHAoYSxiLGMpeyEwPT09Yj9hLnF1ZXVlKGMpOmI\/YS5xdWV1ZShiLGMpOmMoKX1mdW5jdGlvbiBtKGEpe3ZhciBiPVtdO2QuZWFjaChhLGZ1bmN0aW9uKGEpe2E9ZC5jYW1lbENhc2UoYSk7YT1kLnRyYW5zaXQucHJvcGVydHlNYXBbYV18fGE7YT1yKGEpOy0xPT09ZC5pbkFycmF5KGEsYikmJmIucHVzaChhKX0pO3JldHVybiBifWZ1bmN0aW9uIHEoYSxiLGMsZSl7YT1tKGEpO2QuY3NzRWFzZVtjXSYmKGM9ZC5jc3NFYXNlW2NdKTsKdmFyIGg9IiIrbihiKSsiICIrYzswPHBhcnNlSW50KGUsMTApJiYoaCs9IiAiK24oZSkpO3ZhciBmPVtdO2QuZWFjaChhLGZ1bmN0aW9uKGEsYil7Zi5wdXNoKGIrIiAiK2gpfSk7cmV0dXJuIGYuam9pbigiLCAiKX1mdW5jdGlvbiBmKGEsYil7Ynx8KGQuY3NzTnVtYmVyW2FdPSEwKTtkLnRyYW5zaXQucHJvcGVydHlNYXBbYV09ZS50cmFuc2Zvcm07ZC5jc3NIb29rc1thXT17Z2V0OmZ1bmN0aW9uKGIpe3JldHVybihkKGIpLmNzcygidHJhbnNmb3JtIil8fG5ldyBqKS5nZXQoYSl9LHNldDpmdW5jdGlvbihiLGUpe3ZhciBoPWQoYikuY3NzKCJ0cmFuc2Zvcm0iKXx8bmV3IGo7aC5zZXRGcm9tU3RyaW5nKGEsZSk7ZChiKS5jc3Moe3RyYW5zZm9ybTpofSl9fX1mdW5jdGlvbiByKGEpe3JldHVybiBhLnJlcGxhY2UoLyhbQS1aXSkvZyxmdW5jdGlvbihhKXtyZXR1cm4iLSIrYS50b0xvd2VyQ2FzZSgpfSl9ZnVuY3Rpb24gZyhhLGIpe3JldHVybiJzdHJpbmciPT09dHlwZW9mIGEmJiFhLm1hdGNoKC9eW1wtMC05XC5dKyQvKT8KYToiIithK2J9ZnVuY3Rpb24gbihhKXtkLmZ4LnNwZWVkc1thXSYmKGE9ZC5meC5zcGVlZHNbYV0pO3JldHVybiBnKGEsIm1zIil9ZC50cmFuc2l0PXt2ZXJzaW9uOiIwLjEuMyIscHJvcGVydHlNYXA6e21hcmdpbkxlZnQ6Im1hcmdpbiIsbWFyZ2luUmlnaHQ6Im1hcmdpbiIsbWFyZ2luQm90dG9tOiJtYXJnaW4iLG1hcmdpblRvcDoibWFyZ2luIixwYWRkaW5nTGVmdDoicGFkZGluZyIscGFkZGluZ1JpZ2h0OiJwYWRkaW5nIixwYWRkaW5nQm90dG9tOiJwYWRkaW5nIixwYWRkaW5nVG9wOiJwYWRkaW5nIn0sZW5hYmxlZDohMCx1c2VUcmFuc2l0aW9uRW5kOiExfTt2YXIgaT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSxlPXt9LHM9LTE8bmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpLmluZGV4T2YoImNocm9tZSIpO2UudHJhbnNpdGlvbj1rKCJ0cmFuc2l0aW9uIik7ZS50cmFuc2l0aW9uRGVsYXk9aygidHJhbnNpdGlvbkRlbGF5Iik7ZS50cmFuc2Zvcm09aygidHJhbnNmb3JtIik7CmUudHJhbnNmb3JtT3JpZ2luPWsoInRyYW5zZm9ybU9yaWdpbiIpO2kuc3R5bGVbZS50cmFuc2Zvcm1dPSIiO2kuc3R5bGVbZS50cmFuc2Zvcm1dPSJyb3RhdGVZKDkwZGVnKSI7ZS50cmFuc2Zvcm0zZD0iIiE9PWkuc3R5bGVbZS50cmFuc2Zvcm1dO2QuZXh0ZW5kKGQuc3VwcG9ydCxlKTt2YXIgbz1lLnRyYW5zaXRpb25FbmQ9e01velRyYW5zaXRpb246InRyYW5zaXRpb25lbmQiLE9UcmFuc2l0aW9uOiJvVHJhbnNpdGlvbkVuZCIsV2Via2l0VHJhbnNpdGlvbjoid2Via2l0VHJhbnNpdGlvbkVuZCIsbXNUcmFuc2l0aW9uOiJNU1RyYW5zaXRpb25FbmQifVtlLnRyYW5zaXRpb25dfHxudWxsLGk9bnVsbDtkLmNzc0Vhc2U9e19kZWZhdWx0OiJlYXNlIiwiaW4iOiJlYXNlLWluIixvdXQ6ImVhc2Utb3V0IiwiaW4tb3V0IjoiZWFzZS1pbi1vdXQiLHNuYXA6ImN1YmljLWJlemllcigwLDEsLjUsMSkifTtkLmNzc0hvb2tzLnRyYW5zZm9ybT17Z2V0OmZ1bmN0aW9uKGEpe3JldHVybiBkKGEpLmRhdGEoInRyYW5zZm9ybSIpfSwKc2V0OmZ1bmN0aW9uKGEsYil7dmFyIGM9YjtjIGluc3RhbmNlb2Yganx8KGM9bmV3IGooYykpO2Euc3R5bGVbZS50cmFuc2Zvcm1dPSJXZWJraXRUcmFuc2Zvcm0iPT09ZS50cmFuc2Zvcm0mJiFzP2MudG9TdHJpbmcoITApOmMudG9TdHJpbmcoKTtkKGEpLmRhdGEoInRyYW5zZm9ybSIsYyl9fTtkLmNzc0hvb2tzLnRyYW5zZm9ybU9yaWdpbj17Z2V0OmZ1bmN0aW9uKGEpe3JldHVybiBhLnN0eWxlW2UudHJhbnNmb3JtT3JpZ2luXX0sc2V0OmZ1bmN0aW9uKGEsYil7YS5zdHlsZVtlLnRyYW5zZm9ybU9yaWdpbl09Yn19O2QuY3NzSG9va3MudHJhbnNpdGlvbj17Z2V0OmZ1bmN0aW9uKGEpe3JldHVybiBhLnN0eWxlW2UudHJhbnNpdGlvbl19LHNldDpmdW5jdGlvbihhLGIpe2Euc3R5bGVbZS50cmFuc2l0aW9uXT1ifX07Zigic2NhbGUiKTtmKCJ0cmFuc2xhdGUiKTtmKCJyb3RhdGUiKTtmKCJyb3RhdGVYIik7Zigicm90YXRlWSIpO2YoInJvdGF0ZTNkIik7ZigicGVyc3BlY3RpdmUiKTsKZigic2tld1giKTtmKCJza2V3WSIpO2YoIngiLCEwKTtmKCJ5IiwhMCk7ai5wcm90b3R5cGU9e3NldEZyb21TdHJpbmc6ZnVuY3Rpb24oYSxiKXt2YXIgYz0ic3RyaW5nIj09PXR5cGVvZiBiP2Iuc3BsaXQoIiwiKTpiLmNvbnN0cnVjdG9yPT09QXJyYXk\/YjpbYl07Yy51bnNoaWZ0KGEpO2oucHJvdG90eXBlLnNldC5hcHBseSh0aGlzLGMpfSxzZXQ6ZnVuY3Rpb24oYSl7dmFyIGI9QXJyYXkucHJvdG90eXBlLnNsaWNlLmFwcGx5KGFyZ3VtZW50cyxbMV0pO3RoaXMuc2V0dGVyW2FdP3RoaXMuc2V0dGVyW2FdLmFwcGx5KHRoaXMsYik6dGhpc1thXT1iLmpvaW4oIiwiKX0sZ2V0OmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmdldHRlclthXT90aGlzLmdldHRlclthXS5hcHBseSh0aGlzKTp0aGlzW2FdfHwwfSxzZXR0ZXI6e3JvdGF0ZTpmdW5jdGlvbihhKXt0aGlzLnJvdGF0ZT1nKGEsImRlZyIpfSxyb3RhdGVYOmZ1bmN0aW9uKGEpe3RoaXMucm90YXRlWD1nKGEsImRlZyIpfSxyb3RhdGVZOmZ1bmN0aW9uKGEpe3RoaXMucm90YXRlWT0KZyhhLCJkZWciKX0sc2NhbGU6ZnVuY3Rpb24oYSxiKXt2b2lkIDA9PT1iJiYoYj1hKTt0aGlzLnNjYWxlPWErIiwiK2J9LHNrZXdYOmZ1bmN0aW9uKGEpe3RoaXMuc2tld1g9ZyhhLCJkZWciKX0sc2tld1k6ZnVuY3Rpb24oYSl7dGhpcy5za2V3WT1nKGEsImRlZyIpfSxwZXJzcGVjdGl2ZTpmdW5jdGlvbihhKXt0aGlzLnBlcnNwZWN0aXZlPWcoYSwicHgiKX0seDpmdW5jdGlvbihhKXt0aGlzLnNldCgidHJhbnNsYXRlIixhLG51bGwpfSx5OmZ1bmN0aW9uKGEpe3RoaXMuc2V0KCJ0cmFuc2xhdGUiLG51bGwsYSl9LHRyYW5zbGF0ZTpmdW5jdGlvbihhLGIpe3ZvaWQgMD09PXRoaXMuX3RyYW5zbGF0ZVgmJih0aGlzLl90cmFuc2xhdGVYPTApO3ZvaWQgMD09PXRoaXMuX3RyYW5zbGF0ZVkmJih0aGlzLl90cmFuc2xhdGVZPTApO251bGwhPT1hJiYodGhpcy5fdHJhbnNsYXRlWD1nKGEsInB4IikpO251bGwhPT1iJiYodGhpcy5fdHJhbnNsYXRlWT1nKGIsInB4IikpO3RoaXMudHJhbnNsYXRlPQp0aGlzLl90cmFuc2xhdGVYKyIsIit0aGlzLl90cmFuc2xhdGVZfX0sZ2V0dGVyOnt4OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3RyYW5zbGF0ZVh8fDB9LHk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fdHJhbnNsYXRlWXx8MH0sc2NhbGU6ZnVuY3Rpb24oKXt2YXIgYT0odGhpcy5zY2FsZXx8IjEsMSIpLnNwbGl0KCIsIik7YVswXSYmKGFbMF09cGFyc2VGbG9hdChhWzBdKSk7YVsxXSYmKGFbMV09cGFyc2VGbG9hdChhWzFdKSk7cmV0dXJuIGFbMF09PT1hWzFdP2FbMF06YX0scm90YXRlM2Q6ZnVuY3Rpb24oKXtmb3IodmFyIGE9KHRoaXMucm90YXRlM2R8fCIwLDAsMCwwZGVnIikuc3BsaXQoIiwiKSxiPTA7Mz49YjsrK2IpYVtiXSYmKGFbYl09cGFyc2VGbG9hdChhW2JdKSk7YVszXSYmKGFbM109ZyhhWzNdLCJkZWciKSk7cmV0dXJuIGF9fSxwYXJzZTpmdW5jdGlvbihhKXt2YXIgYj10aGlzO2EucmVwbGFjZSgvKFthLXpBLVowLTldKylcKCguKj8pXCkvZyxmdW5jdGlvbihhLGQsCmUpe2Iuc2V0RnJvbVN0cmluZyhkLGUpfSl9LHRvU3RyaW5nOmZ1bmN0aW9uKGEpe3ZhciBiPVtdLGM7Zm9yKGMgaW4gdGhpcylpZih0aGlzLmhhc093blByb3BlcnR5KGMpJiYoZS50cmFuc2Zvcm0zZHx8ISgicm90YXRlWCI9PT1jfHwicm90YXRlWSI9PT1jfHwicGVyc3BlY3RpdmUiPT09Y3x8InRyYW5zZm9ybU9yaWdpbiI9PT1jKSkpIl8iIT09Y1swXSYmKGEmJiJzY2FsZSI9PT1jP2IucHVzaChjKyIzZCgiK3RoaXNbY10rIiwxKSIpOmEmJiJ0cmFuc2xhdGUiPT09Yz9iLnB1c2goYysiM2QoIit0aGlzW2NdKyIsMCkiKTpiLnB1c2goYysiKCIrdGhpc1tjXSsiKSIpKTtyZXR1cm4gYi5qb2luKCIgIil9fTtkLmZuLnRyYW5zaXRpb249ZC5mbi50cmFuc2l0PWZ1bmN0aW9uKGEsYixjLGYpe3ZhciBoPXRoaXMsZz0wLGk9ITA7ImZ1bmN0aW9uIj09PXR5cGVvZiBiJiYoZj1iLGI9dm9pZCAwKTsiZnVuY3Rpb24iPT09dHlwZW9mIGMmJihmPWMsYz12b2lkIDApOyJ1bmRlZmluZWQiIT09CnR5cGVvZiBhLmVhc2luZyYmKGM9YS5lYXNpbmcsZGVsZXRlIGEuZWFzaW5nKTsidW5kZWZpbmVkIiE9PXR5cGVvZiBhLmR1cmF0aW9uJiYoYj1hLmR1cmF0aW9uLGRlbGV0ZSBhLmR1cmF0aW9uKTsidW5kZWZpbmVkIiE9PXR5cGVvZiBhLmNvbXBsZXRlJiYoZj1hLmNvbXBsZXRlLGRlbGV0ZSBhLmNvbXBsZXRlKTsidW5kZWZpbmVkIiE9PXR5cGVvZiBhLnF1ZXVlJiYoaT1hLnF1ZXVlLGRlbGV0ZSBhLnF1ZXVlKTsidW5kZWZpbmVkIiE9PXR5cGVvZiBhLmRlbGF5JiYoZz1hLmRlbGF5LGRlbGV0ZSBhLmRlbGF5KTsidW5kZWZpbmVkIj09PXR5cGVvZiBiJiYoYj1kLmZ4LnNwZWVkcy5fZGVmYXVsdCk7InVuZGVmaW5lZCI9PT10eXBlb2YgYyYmKGM9ZC5jc3NFYXNlLl9kZWZhdWx0KTt2YXIgYj1uKGIpLGo9cShhLGIsYyxnKSxsPWQudHJhbnNpdC5lbmFibGVkJiZlLnRyYW5zaXRpb24\/cGFyc2VJbnQoYiwxMCkrcGFyc2VJbnQoZywxMCk6MDtpZigwPT09bClyZXR1cm4gcChoLGksZnVuY3Rpb24oYil7aC5jc3MoYSk7CmYmJmYuYXBwbHkoaCk7YiYmYigpfSksaDt2YXIgaz17fSxtPWZ1bmN0aW9uKGIpe3ZhciBjPWZhbHNlLGc9ZnVuY3Rpb24oKXtjJiZoLm9mZihvLGcpO2w+MCYmaC5lYWNoKGZ1bmN0aW9uKCl7dGhpcy5zdHlsZVtlLnRyYW5zaXRpb25dPWtbdGhpc118fG51bGx9KTt0eXBlb2YgZj09PSJmdW5jdGlvbiImJmYuYXBwbHkoaCk7dHlwZW9mIGI9PT0iZnVuY3Rpb24iJiZiKCl9O2lmKGw+MCYmbyYmZC50cmFuc2l0LnVzZVRyYW5zaXRpb25FbmQpe2M9dHJ1ZTtoLm9uKG8sZyl9ZWxzZSB3aW5kb3cuc2V0VGltZW91dChnLGwpO2guZWFjaChmdW5jdGlvbigpe2w+MCYmKHRoaXMuc3R5bGVbZS50cmFuc2l0aW9uXT1qKTtkKHRoaXMpLmNzcyhhKX0pfTtwKGgsaSxmdW5jdGlvbihhKXt2YXIgYj0wO2UudHJhbnNpdGlvbj09PSJNb3pUcmFuc2l0aW9uIiYmYjwyNSYmKGI9MjUpO3dpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7bShhKX0sYil9KTtyZXR1cm4gdGhpc307ZC50cmFuc2l0LmdldFRyYW5zaXRpb25WYWx1ZT0KcX0pKGpRdWVyeSk7LypFT0YqLzsKLyoqIC9tL2pzL2pxdWVyeS50b3VjaFN3aXBlLm1pbi5qcyAqKi8KKGZ1bmN0aW9uKGcpe2cuZm4uc3dpcGU9ZnVuY3Rpb24obSl7aWYoIXRoaXMpcmV0dXJuIGZhbHNlO3ZhciBiPXtmaW5nZXJzOjEsdGhyZXNob2xkOjc1LHN3aXBlOm51bGwsc3dpcGVMZWZ0Om51bGwsc3dpcGVSaWdodDpudWxsLHN3aXBlVXA6bnVsbCxzd2lwZURvd246bnVsbCxzd2lwZVN0YXR1czpudWxsLGNsaWNrOm51bGwsdHJpZ2dlck9uVG91Y2hFbmQ6dHJ1ZSxhbGxvd1BhZ2VTY3JvbGw6ImF1dG8ifSxwPSJsZWZ0Iix2PSJyaWdodCIsdz0idXAiLHg9ImRvd24iLHk9Im5vbmUiLHo9Imhvcml6b250YWwiLEE9InZlcnRpY2FsIixHPSJhdXRvIixIPSJzdGFydCIsQj0ibW92ZSIscT0iZW5kIixuPSJjYW5jZWwiLGQ9Im9udG91Y2hzdGFydCJpbiB3aW5kb3csQz1kPyJ0b3VjaHN0YXJ0IjoibW91c2Vkb3duIixyPWQ\/InRvdWNobW92ZSI6Im1vdXNlbW92ZSIscz1kPyJ0b3VjaGVuZCI6Im1vdXNldXAiLGM9InN0YXJ0IjtpZihtLmFsbG93UGFnZVNjcm9sbD09dW5kZWZpbmVkJiYNCihtLnN3aXBlIT11bmRlZmluZWR8fG0uc3dpcGVTdGF0dXMhPXVuZGVmaW5lZCkpbS5hbGxvd1BhZ2VTY3JvbGw9eTttJiZnLmV4dGVuZChiLG0pO3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtmdW5jdGlvbiBEKGEpe3ZhciBlPWQ\/YS50b3VjaGVzWzBdOmE7Yz1IO2lmKGQpaz1hLnRvdWNoZXMubGVuZ3RoO2Rpc3RhbmNlPTA7ZGlyZWN0aW9uPW51bGw7aWYoaz09Yi5maW5nZXJzfHwhZCl7aC54PWYueD1lLnBhZ2VYO2gueT1mLnk9ZS5wYWdlWTtiLnN3aXBlU3RhdHVzJiZvKGEsYyl9ZWxzZSBsKGEpO2lmKGQpe2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIocix0KTtkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKHMsdSl9ZWxzZXtnKGRvY3VtZW50KS5vbihyLHQpO2coZG9jdW1lbnQpLm9uKHMsdSl9fWZ1bmN0aW9uIHQoYSl7aWYoIShjPT1xfHxjPT1uKSl7dmFyIGU9ZD9hLnRvdWNoZXNbMF06YTtmLng9ZS5wYWdlWDtmLnk9ZS5wYWdlWTtkaXJlY3Rpb249RSgpO2lmKGQpaz0NCmEudG91Y2hlcy5sZW5ndGg7Yz1CO2U9ZGlyZWN0aW9uO2lmKGIuYWxsb3dQYWdlU2Nyb2xsPT15KWEucHJldmVudERlZmF1bHQoKTtlbHNle3ZhciBpPWIuYWxsb3dQYWdlU2Nyb2xsPT1HO3N3aXRjaChlKXtjYXNlIHA6aWYoYi5zd2lwZUxlZnQmJml8fCFpJiZiLmFsbG93UGFnZVNjcm9sbCE9eilhLnByZXZlbnREZWZhdWx0KCk7YnJlYWs7Y2FzZSB2OmlmKGIuc3dpcGVSaWdodCYmaXx8IWkmJmIuYWxsb3dQYWdlU2Nyb2xsIT16KWEucHJldmVudERlZmF1bHQoKTticmVhaztjYXNlIHc6aWYoYi5zd2lwZVVwJiZpfHwhaSYmYi5hbGxvd1BhZ2VTY3JvbGwhPUEpYS5wcmV2ZW50RGVmYXVsdCgpO2JyZWFrO2Nhc2UgeDppZihiLnN3aXBlRG93biYmaXx8IWkmJmIuYWxsb3dQYWdlU2Nyb2xsIT1BKWEucHJldmVudERlZmF1bHQoKX19aWYoaz09Yi5maW5nZXJzfHwhZCl7ZGlzdGFuY2U9RigpO2Iuc3dpcGVTdGF0dXMmJm8oYSxjLGRpcmVjdGlvbixkaXN0YW5jZSk7aWYoIWIudHJpZ2dlck9uVG91Y2hFbmQpaWYoZGlzdGFuY2U+PQ0KYi50aHJlc2hvbGQpe2M9cTtvKGEsYyk7bChhKX19ZWxzZXtjPW47byhhLGMpO2woYSl9fX1mdW5jdGlvbiB1KGEpe2EucHJldmVudERlZmF1bHQoKTtkaXN0YW5jZT1GKCk7ZGlyZWN0aW9uPUUoKTtpZihiLnRyaWdnZXJPblRvdWNoRW5kKXtjPXE7aWYoKGs9PWIuZmluZ2Vyc3x8IWQpJiZmLnghPTApZGlzdGFuY2U+PWIudGhyZXNob2xkfHwoYz1uKTtlbHNlIGM9bjtvKGEsYyk7bChhKX1lbHNlIGlmKGM9PUIpe2M9bjtvKGEsYyk7bChhKX1pZihkKXtkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKHIsdCk7ZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihzLHUpfWVsc2V7Zyhkb2N1bWVudCkub2ZmKHIsdCk7Zyhkb2N1bWVudCkub2ZmKHMsdSl9fWZ1bmN0aW9uIGwoKXtrPTA7aC54PTA7aC55PTA7Zi54PTA7Zi55PTB9ZnVuY3Rpb24gbyhhLGUpe2lmKGIuc3dpcGVTdGF0dXMpYi5zd2lwZVN0YXR1cy5jYWxsKGosYSxlLGRpcmVjdGlvbnx8bnVsbCxkaXN0YW5jZXx8DQowKTtpZihlPT1uKWlmKGIuY2xpY2smJihrPT0xfHwhZCkmJihpc05hTihkaXN0YW5jZSl8fGRpc3RhbmNlPT0wKSliLmNsaWNrLmNhbGwoaixhLGEudGFyZ2V0KTtpZihlPT1xKXtiLnN3aXBlJiZiLnN3aXBlLmNhbGwoaixhLGRpcmVjdGlvbixkaXN0YW5jZSk7c3dpdGNoKGRpcmVjdGlvbil7Y2FzZSBwOmIuc3dpcGVMZWZ0JiZiLnN3aXBlTGVmdC5jYWxsKGosYSxkaXJlY3Rpb24sZGlzdGFuY2UpO2JyZWFrO2Nhc2UgdjpiLnN3aXBlUmlnaHQmJmIuc3dpcGVSaWdodC5jYWxsKGosYSxkaXJlY3Rpb24sZGlzdGFuY2UpO2JyZWFrO2Nhc2UgdzpiLnN3aXBlVXAmJmIuc3dpcGVVcC5jYWxsKGosYSxkaXJlY3Rpb24sZGlzdGFuY2UpO2JyZWFrO2Nhc2UgeDpiLnN3aXBlRG93biYmYi5zd2lwZURvd24uY2FsbChqLGEsZGlyZWN0aW9uLGRpc3RhbmNlKX19fWZ1bmN0aW9uIEYoKXtyZXR1cm4gTWF0aC5yb3VuZChNYXRoLnNxcnQoTWF0aC5wb3coZi54LWgueCwyKStNYXRoLnBvdyhmLnktDQpoLnksMikpKX1mdW5jdGlvbiBFKCl7dmFyIGE7YT1NYXRoLnJvdW5kKE1hdGguYXRhbjIoZi55LWgueSxoLngtZi54KSoxODAvTWF0aC5QSSk7aWYoYTwwKWE9MzYwLU1hdGguYWJzKGEpO2E9YTtyZXR1cm4gYTw9NDUmJmE+PTA\/cDphPD0zNjAmJmE+PTMxNT9wOmE+PTEzNSYmYTw9MjI1P3Y6YT40NSYmYTwxMzU\/eDp3fXZhciBqPWcodGhpcyksaz0wLGg9e3g6MCx5OjB9LGY9e3g6MCx5OjB9O2lmKGQpe3RoaXMuYWRkRXZlbnRMaXN0ZW5lcihDLEQpO2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoInRvdWNoY2FuY2VsIixsKX1lbHNle2oub24oQyxEKTtnKGRvY3VtZW50KS5vbigidG91Y2hjYW5jZWwiLGwpfX0pfX0pKGpRdWVyeSk7LypFT0YqLzsKLyoqIC9tL2pzL3BhZ2ViYW5uZXIuanMgKiovCnZhciBfX19kMmNfcGFnZWJhbm5lcmpzX2Nfb249IjIwMjYtMDEtMTMgMTM6MzA6MDMiOyd1c2Ugc3RyaWN0JztmdW5jdGlvbiBQYWdlQmFubmVyKGEpe25ldyBQYWdlQmFubmVyc0Nhcm91c2VsKGEpfQpmdW5jdGlvbiBtb3RvaW5zaWdodEJhbm5lclZhcmlhYmxlUmVwbGFjZW1lbnQoKXtpZigkKCIuanMtbW90b2luc2lnaHRTaG9wUG9wdXBDb250YWluZXIiKS5sZW5ndGgpaWYoJCgiI25ld1NlY3Rpb25PdmVycmlkZSIpLmxlbmd0aCYmIjEiPT0kKCIjbmV3U2VjdGlvbk92ZXJyaWRlIikudmFsKCkpaWYoJCgiI01PVE9JTlNJR0hUX1NIT1BJTkdfVE9PTF9TRUxFQ1QiKS5sZW5ndGgmJiJ0YWIiPT0kKCIjTU9UT0lOU0lHSFRfU0hPUElOR19UT09MX1NFTEVDVCIpLnZhbCgpKXt2YXIgYT0kKCIjanMtbW90b2luc2lnaHRTaG9wUG9wdXBDb250YWluZXItaW5wdXQiKS52YWwoKTskKCJkaXYjdG9wQmFubmVySW1hZ2UiKS5hdHRyKCJvbmNsaWNrIiwid2luZG93Lm9wZW4oJyIrYSsiJywgJ19ibGFuaycpIikuYXR0cigib250YXAiLCJ3aW5kb3cub3BlbignIithKyInLCAnX2JsYW5rJykiKX1lbHNlICQoImRpdiN0b3BCYW5uZXJJbWFnZSIpLmF0dHIoIm9uY2xpY2siLCIkKCcjbW90b2luc2lnaHRTaG9wUG9wdXBDb250YWluZXInKS5wb3B1cGl6ZSgpLnNldFRyaWdnZXIoJ2NsaWNrJykub3BlbigpO3JldHVybiBmYWxzZTsiKS5hdHRyKCJvbnRhcCIsCiIkKCcjbW90b2luc2lnaHRTaG9wUG9wdXBDb250YWluZXInKS5wb3B1cGl6ZSgpLnNldFRyaWdnZXIoJ2NsaWNrJykub3BlbigpO3JldHVybiBmYWxzZTsiKTtlbHNlICQoIiNNT1RPSU5TSUdIVF9TSE9QSU5HX1RPT0xfVVNFRF9TRUxFQ1QiKS5sZW5ndGgmJiJ0YWIiPT0kKCIjTU9UT0lOU0lHSFRfU0hPUElOR19UT09MX1VTRURfU0VMRUNUIikudmFsKCk\/KGE9JCgiI2pzLW1vdG9pbnNpZ2h0U2hvcFBvcHVwQ29udGFpbmVyLWlucHV0IikudmFsKCksJCgiZGl2I3RvcEJhbm5lckltYWdlIikuYXR0cigib25jbGljayIsIndpbmRvdy5vcGVuKCciK2ErIicsICdfYmxhbmsnKSIpLmF0dHIoIm9udGFwIiwid2luZG93Lm9wZW4oJyIrYSsiJywgJ19ibGFuaycpIikpOiQoImRpdiN0b3BCYW5uZXJJbWFnZSIpLmF0dHIoIm9uY2xpY2siLCIkKCcjbW90b2luc2lnaHRTaG9wUG9wdXBDb250YWluZXInKS5wb3B1cGl6ZSgpLnNldFRyaWdnZXIoJ2NsaWNrJykub3BlbigpO3JldHVybiBmYWxzZTsiKS5hdHRyKCJvbnRhcCIsCiIkKCcjbW90b2luc2lnaHRTaG9wUG9wdXBDb250YWluZXInKS5wb3B1cGl6ZSgpLnNldFRyaWdnZXIoJ2NsaWNrJykub3BlbigpO3JldHVybiBmYWxzZTsiKTtlbHNlICQoIiNuZXdTZWN0aW9uT3ZlcnJpZGUiKS5sZW5ndGgmJiIxIj09JCgiI25ld1NlY3Rpb25PdmVycmlkZSIpLnZhbCgpPyQoIiNNT1RPSU5TSUdIVF9TSE9QSU5HX1RPT0xfU0VMRUNUIikubGVuZ3RoJiYidGFiIj09JCgiI01PVE9JTlNJR0hUX1NIT1BJTkdfVE9PTF9TRUxFQ1QiKS52YWwoKT8oYT0kKCIjbW90b2luc2lnaHRzaG9wc2NyaXB0dXJsIikudmFsKCksYT1hLnJlcGxhY2UoImludGVncmF0aW9uL2ludGVncmF0aW9uLmpzIiwic2VhcmNoLyIpLCQoImRpdiN0b3BCYW5uZXJJbWFnZSIpLmF0dHIoIm9uY2xpY2siLCJ3aW5kb3cub3BlbignIithKyInLCAnX2JsYW5rJykiKS5hdHRyKCJvbnRhcCIsIndpbmRvdy5vcGVuKCciK2ErIicsICdfYmxhbmsnKSIpKTokKCJkaXYjdG9wQmFubmVySW1hZ2UiKS5hdHRyKCJvbmNsaWNrIiwKIiQoJyNtb3RvaW5zaWdodFNob3BQb3B1cENvbnRhaW5lcicpLnBvcHVwaXplKCkuc2V0VHJpZ2dlcignY2xpY2snKS5vcGVuKCk7cmV0dXJuIGZhbHNlOyIpLmF0dHIoIm9udGFwIiwiJCgnI21vdG9pbnNpZ2h0U2hvcFBvcHVwQ29udGFpbmVyJykucG9wdXBpemUoKS5zZXRUcmlnZ2VyKCdjbGljaycpLm9wZW4oKTtyZXR1cm4gZmFsc2U7Iik6JCgiI01PVE9JTlNJR0hUX1NIT1BJTkdfVE9PTF9VU0VEX1NFTEVDVCIpLmxlbmd0aCYmInRhYiI9PSQoIiNNT1RPSU5TSUdIVF9TSE9QSU5HX1RPT0xfVVNFRF9TRUxFQ1QiKS52YWwoKT8oYT0kKCIjbW90b2luc2lnaHRzaG9wc2NyaXB0dXJsIikudmFsKCksYT1hLnJlcGxhY2UoImludGVncmF0aW9uL2ludGVncmF0aW9uLmpzIiwic2VhcmNoLz9jb25kaXRpb249VXNlZCIpLCQoImRpdiN0b3BCYW5uZXJJbWFnZSIpLmF0dHIoIm9uY2xpY2siLCJ3aW5kb3cub3BlbignIithKyInLCAnX2JsYW5rJykiKS5hdHRyKCJvbnRhcCIsIndpbmRvdy5vcGVuKCciKwphKyInLCAnX2JsYW5rJykiKSk6JCgiZGl2I3RvcEJhbm5lckltYWdlIikuYXR0cigib25jbGljayIsIiQoJyNtb3RvaW5zaWdodFNob3BQb3B1cENvbnRhaW5lcicpLnBvcHVwaXplKCkuc2V0VHJpZ2dlcignY2xpY2snKS5vcGVuKCk7cmV0dXJuIGZhbHNlOyIpLmF0dHIoIm9udGFwIiwiJCgnI21vdG9pbnNpZ2h0U2hvcFBvcHVwQ29udGFpbmVyJykucG9wdXBpemUoKS5zZXRUcmlnZ2VyKCdjbGljaycpLm9wZW4oKTtyZXR1cm4gZmFsc2U7Iil9CmNsYXNzIFBhZ2VCYW5uZXJzQ2Fyb3VzZWx7Y29uc3RydWN0b3IoYSl7aWYoInVuZGVmaW5lZCIhPT10eXBlb2YgYSl7dGhpcy5pc0ludmVudG9yeVBhZ2UmJiJ1bmRlZmluZWQiIT09dHlwZW9mIGEubmV3SW52ZW50b3J5JiYoYT1hLm5ld0ludmVudG9yeSk7dmFyIGUsYjt0aGlzLmRhdGE9bnVsbCE9KGI9bnVsbD09KGU9YSk\/dm9pZCAwOmUuYmFubmVycyk\/YjphO3ZhciBjLGQ7dGhpcy5jb25maWc9bnVsbCE9KGQ9bnVsbD09KGM9YSk\/dm9pZCAwOmMuY29uZmlnKT9kOmE7dGhpcy5iYW5uZXJzPVtdO3RoaXMuaW5kZXg9LTE7dGhpcy5pbml0aWFsaXplZD0hMTt0aGlzLnRpbWVvdXRJRD1udWxsO3RoaXMuaW5pdCgpfX1nZXQgaXNJbnZlbnRvcnlQYWdlKCl7cmV0dXJuIlVTRUQiPT1zdG9yZS5nZXQoImNvbnRleHQiKS5zZWN0aW9uJiYibmV3aW52Ij09c3RvcmUuZ2V0KCJjb250ZXh0IikuY2F0ZWdvcnl8fC0xPHdpbmRvdy5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9uZXVmcy9pbnZlbnRhaXJlLyIpfHwKLTE8d2luZG93LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2ludmVudGFpcmUuaHRtbCIpfHwtMTx3aW5kb3cubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvbmV3L2ludmVudG9yeS8iKXx8LTE8d2luZG93LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2ludmVudG9yeS5odG1sIil9Z2V0IGN1cnJlbnRQYXRoKCl7cmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudCh3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUrd2luZG93LmxvY2F0aW9uLnNlYXJjaCkudG9Mb3dlckNhc2UoKX1nZXQgJHRvcEJhbm5lckltYWdlKCl7cmV0dXJuICQoImRpdiN0b3BCYW5uZXJJbWFnZSIpfWluaXQoKXtpZighdGhpcy5pbml0aWFsaXplZCl7dmFyIGE9e30sZT17fSxiPVtdLGM9MDtmb3IodmFyIGQgaW4gdGhpcy5kYXRhKSJodG1sNSI9PT1kfHx0aGlzLl9pc0tleXdvcmRJblBhdGgoZCl8fHRoaXMuX2lzS2V5d29yZEluQ29va2llKGQpfHwkKCJib2R5IikuaGFzQ2xhc3MoInRlbXBsYXRlNSIpJiYoIm5ldWZzIj09PQpkfHwibmV3Ij09PWQpPyJodG1sNSI9PT1kJiYidW5kZWZpbmVkIiE9PXR5cGVvZiBuZXdjYXJEZXRhaWxzJiYidW5kZWZpbmVkIiE9PXR5cGVvZiBuZXdjYXJEZXRhaWxzLnNsaWRlck9iamVjdCYmbnVsbCE9bmV3Y2FyRGV0YWlscy5zbGlkZXJPYmplY3QmJjM+bmV3Y2FyRGV0YWlscy5zbGlkZXJPYmplY3QudG90YWxTbGlkZXMoKXx8JC5lYWNoKHRoaXMuZGF0YVtkXSwoZyxmKT0+e2M9cGFyc2VJbnQoZyk7LTE9PT1iLmluZGV4T2YoYyk\/KGIucHVzaChjKSxhW2NdPWYpOmFbYys1MF09Zn0pOiJkZWZhdWx0Ij09PWR8fHRoaXMuX2lzS2V5d29yZEluUGF0aChkKXx8dGhpcy5faXNLZXl3b3JkSW5Db29raWUoZCk\/JC5lYWNoKHRoaXMuZGF0YVtkXSwoZyxmKT0+e2FbMF09ZjtiLnB1c2goMCl9KToic3RhdGljYmFubmVycyI9PT1kJiYkLmVhY2godGhpcy5kYXRhW2RdLChnLGYpPT57Yz1wYXJzZUludChnKTstMT09PWIuaW5kZXhPZihjKSYmKGIucHVzaChjKSxhW2NdPWYpO2VbZ109CmZ9KTt2YXIgaD0hMDskLmVhY2goYSwoZyxmKT0+eyJkZWZhdWx0IiE9Zi5pJiYoaD0hMSl9KTt0aGlzLmJhbm5lcnM9W107JC5lYWNoKGEsKGcsZik9PnsidW5kZWZpbmVkIiE9PXR5cGVvZiBmJiYoImRlZmF1bHQiPT09Zi5pJiYhMD09PWh8fCJkZWZhdWx0IiE9PWYuaSkmJnRoaXMuYmFubmVycy5wdXNoKGYpfSk7MD09PXRoaXMuYmFubmVycy5sZW5ndGgmJjA8T2JqZWN0LmtleXMoZSkubGVuZ3RoJiYkLmVhY2goZSwoZyxmKT0+eyJ1bmRlZmluZWQiIT09dHlwZW9mIGYmJnRoaXMuYmFubmVycy5wdXNoKGYpfSk7ZD0kKCIjaXNNb2JpbGUiKTswPGQubGVuZ3RoJiYxPT09ZC52YWwoKSYmKCQoImRpdiN0b3BCYW5uZXJJbWFnZSIpLmFkZENsYXNzKCItbXQxMCIpLCQoJ1tpZCo9ImhlYWRlclByb21vRmxvYXRCdXR0b25JbkJvZHkiXScpLmhpZGUoKSk7dGhpcy5pbml0aWFsaXplZD0hMDswPE9iamVjdC5rZXlzKHRoaXMuYmFubmVycykubGVuZ3RoP3RoaXMucm90YXRlKCk6dGhpcy5jbGVhckFzcGVjdFJhdGlvKCl9fWNsZWFyQXNwZWN0UmF0aW8oKXtsZXQgYT0KJCgiZGl2I3RvcEJhbm5lckltYWdlIik7YS5sZW5ndGgmJmEuY3NzKCJhc3BlY3QtcmF0aW8iLCIiKX1zdG9wKCl7Y2xlYXJUaW1lb3V0KHRoaXMudGltZW91dElEKX1zdGFydChhKXt0aGlzLmluaXRpYWxpemVkJiYodGhpcy50aW1lb3V0SUQ9c2V0VGltZW91dCgoKT0+dGhpcy5yb3RhdGUoKSxhKSl9cm90YXRlKCl7aWYoImZ1bmN0aW9uIj09PXR5cGVvZiBwb3B1cGl6ZXJBY3RpdmUmJnBvcHVwaXplckFjdGl2ZSgpKXNldFRpbWVvdXQoKCk9PnRoaXMucm90YXRlKCksM0UzKTtlbHNle3ZhciBhPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIi5kYXJrLXRvb2x0aXAiKTtpZihhLmxlbmd0aCl7bGV0IGM9ITE7YS5mb3JFYWNoKGQ9Pnsibm9uZSIhPXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGQsbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgiZGlzcGxheSIpJiYoYz0hMCl9KTtpZighMD09PWMpe3NldFRpbWVvdXQoKCk9PnRoaXMucm90YXRlKCksMkUzKTtyZXR1cm59fWE9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI3RvcEJhbm5lckltYWdlIik7CmlmKCExPT09aXNJblZpZXdwb3J0KGEse3RvcDotMzUwfSkpdGhpcy5zdGFydCgzRTMpO2Vsc2V7dGhpcy5pbmRleCsrO3RoaXMuaW5kZXg+PU9iamVjdC5rZXlzKHRoaXMuYmFubmVycykubGVuZ3RoJiYodGhpcy5pbmRleD0wKTt2YXIgZT0kKCJkaXYjdG9wQmFubmVySW1hZ2UiKSxiPXRoaXMuYmFubmVyc1t0aGlzLmluZGV4XTtpZihiJiYiaHRtbDUiPT09Yi5pKXthPTA7bGV0IGM9MT09PWIudT90aGlzLmNvbmZpZy5jMTp0aGlzLmNvbmZpZy5jMl8xLGQ9Mj09PWIudT90aGlzLmNvbmZpZy5jMjp0aGlzLmNvbmZpZy5jMl8yO2UuaHRtbCgiIikuaGlkZSgpO2xldCBoPSQoIiNwcm9tb19idG5fdHlwZSIpLnZhbCgpO3ZvaWQgMD09PWgmJihoPSJiZXN0b2ZmZXJfYW5pbWF0ZSIpO2xldCBnPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpO2cuaWQ9Imd3ZGJhbm5lciI7Zy5zdHlsZS53aWR0aD0iOTMwcHgiO2cuc3R5bGUuaGVpZ2h0PSIyMDBweCI7Zy5zZXRBdHRyaWJ1dGUoInNjcm9sbGluZyIsCiJubyIpO2cuc2V0QXR0cmlidXRlKCJmcmFtZWJvcmRlciIsIjAiKTsiaW52ZW50b3J5Ij09PWIubyYmMTA8JCgiI3VzZWRJbnZlbnRvcnlOZXdQYWdlIikuaHRtbCgpLmxlbmd0aCYmIUNvb2tpZXMuZ2V0KCJpbnZlbnRvcnlOZXdQb3B1cFNob3duIikmJihhPTEpO2xldCBmPSQoIiNwb3B1cG1ha2UiKS52YWwoKS5yZXBsYWNlKC8tfFxzL2csIl8iKSxrPSQoIiN0ZXh0TW9kZWxPdmVycmlkZSIpLnZhbCgpO2s9KGs\/azokKCIjcG9wdXBtb2RlbCIpLnZhbCgpKS5yZXBsYWNlKC8tfFxzL2csIl8iKTtsZXQgbT0kKCIjcG9wdXB5ZWFyIikudmFsKCksbD0kKCIjc3R5bGVpZCIpLnZhbCgpO2w9MDxwYXJzZUludChsKT8iLWlkIitsOiIiOyQoImJvZHkiKS5oYXNDbGFzcygiRU5HTElTSCIpP2cuc3JjPWAvZ3dkYmFubmVyLyR7bX0tJHtmfS0ke2t9JHtsfS5odG1sP3B0eXBlPSR7aH0mYzE9JHtjfSZjMj0ke2R9JnQ9JHtiLnV9Jm89JHthfWA6Zy5zcmM9YC9nd2RiYW5uZXIvJHtmfS0ke2t9LSR7bX0ke2x9Lmh0bWw\/cHR5cGU9JHtofSZjMT0ke2N9JmMyPSR7ZH0mdD0ke2IudX0mbz0ke2F9YDsKZS5odG1sKGcpLmZhZGVJbigic2xvdyIpfWVsc2UgaWYoYiYmImRlZmF1bHQiPT09Yi5pKWUuaHRtbCgiIikuaGlkZSgpLmh0bWwoYi5oKS5mYWRlSW4oInNsb3ciKS5hdHRyKCJvbmNsaWNrIixlLmZpbmQoInRhYmxlIikuYXR0cigib25jbGljayIpKS5hdHRyKCJvbnRhcCIsZS5maW5kKCJ0YWJsZSIpLmF0dHIoIm9uY2xpY2siKSk7ZWxzZSAkKCc8aW1nIGZldGNocHJpb3JpdHk9ImhpZ2giIGFsdD0iIiBzdHlsZT0id2lkdGg6MTAwJTtjdXJzb3I6cG9pbnRlcjsiIHNyYz0iJytiLmkrJyI+Jykub24oImxvYWQiLGM9PntlLmh0bWwoIiIpLmhpZGUoKTskKGMuY3VycmVudFRhcmdldCkuYXBwZW5kVG8oImRpdiN0b3BCYW5uZXJJbWFnZSIpO3RoaXMuX3Byb2Nlc3NEaXNjbGFpbWVyKGIpO251bGwhPWIudSYmMDxiLnUubGVuZ3RoPy0xPGIudS5pbmRleE9mKCJ0cmFkZWludmFsdWVzLmNhIil8fC0xPGIudS5pbmRleE9mKCJpbnN0YW50b2ZmZXIuYWNjdS10cmFkZS5jb20iKT8kKGMuY3VycmVudFRhcmdldCkuYXR0cigib25jbGljayIsCiJzaG93VHJhZGVJblBvcHVwKCciK2IudSsiJykiKS5hdHRyKCJvbnRhcCIsInNob3dUcmFkZUluUG9wdXAoJyIrYi51KyInKSIpOi0xPGIudS50b0xvd2VyQ2FzZSgpLmluZGV4T2YoIiR0cmFkZWJvb3N0Iik\/JChjLmN1cnJlbnRUYXJnZXQpLmF0dHIoIm9uY2xpY2siLCJyZXR1cm4gbGF1bmNoVHJhZGVJblBvcHVwKCdiYW5uZXInKTsiKS5hdHRyKCJvbnRhcCIsInJldHVybiBsYXVuY2hUcmFkZUluUG9wdXAoJ2Jhbm5lcicpOyIpOi0xPGIudS50b0xvd2VyQ2FzZSgpLmluZGV4T2YoIiRjcmVkaXRzY29yZSIpPyQoYy5jdXJyZW50VGFyZ2V0KS5hdHRyKCJvbmNsaWNrIiwiJCgnI2NyZWRpdFNjb3JlUG9wdXBDb250YWluZXInKS5wb3B1cGl6ZSgpLnNldFRyaWdnZXIoJ2NsaWNrJykub3BlbigpO3JldHVybiBmYWxzZTsiKS5hdHRyKCJvbnRhcCIsIiQoJyNjcmVkaXRTY29yZVBvcHVwQ29udGFpbmVyJykucG9wdXBpemUoKS5zZXRUcmlnZ2VyKCdjbGljaycpLm9wZW4oKTtyZXR1cm4gZmFsc2U7Iik6Ci0xPGIudS50b0xvd2VyQ2FzZSgpLmluZGV4T2YoIiRtdWx0aXN0ZXBmaW5hbmNlIik\/JChjLmN1cnJlbnRUYXJnZXQpLmF0dHIoIm9uY2xpY2siLCIkKCcjZmluYW5jZU11bHRpc3RlcFBvcHVwQ29udGFpbmVyJykucG9wdXBpemUoKS5zZXRUcmlnZ2VyKCdjbGljaycpLm9wZW4oKTtyZXR1cm4gZmFsc2U7IikuYXR0cigib250YXAiLCIkKCcjZmluYW5jZU11bHRpc3RlcFBvcHVwQ29udGFpbmVyJykucG9wdXBpemUoKS5zZXRUcmlnZ2VyKCdjbGljaycpLm9wZW4oKTtyZXR1cm4gZmFsc2U7Iik6LTE8Yi51LnRvTG93ZXJDYXNlKCkuaW5kZXhPZigiJGNyZWRpdGJvb3N0Iik\/JChjLmN1cnJlbnRUYXJnZXQpLmF0dHIoIm9uY2xpY2siLCIkKCcjY3JlZGl0Qm9vc3RNdWx0aVBvcHVwQ29udGFpbmVyJykucG9wdXBpemUoKS5zZXRUcmlnZ2VyKCdjbGljaycpLm9wZW4oKTtyZXR1cm4gZmFsc2U7IikuYXR0cigib250YXAiLCIkKCcjY3JlZGl0Qm9vc3RNdWx0aVBvcHVwQ29udGFpbmVyJykucG9wdXBpemUoKS5zZXRUcmlnZ2VyKCdjbGljaycpLm9wZW4oKTtyZXR1cm4gZmFsc2U7Iik6Ci0xPGIudS5pbmRleE9mKCIkbW90b2luc2lnaHRzaG9wIik\/JCgiI21vdG9pbnNpZ2h0U2hvcFBvcHVwQ29udGFpbmVyIikubGVuZ3RoJiZtb3RvaW5zaWdodEJhbm5lclZhcmlhYmxlUmVwbGFjZW1lbnQoKTotMTxiLnUudG9Mb3dlckNhc2UoKS5pbmRleE9mKCIkc2VydmljZWFwdCIpPyQoYy5jdXJyZW50VGFyZ2V0KS5hdHRyKCJvbmNsaWNrIiwiTGVhZEhhbmRsZXIoKS5nZXRMZWFkKCdEZWFsZXJBcHBvaW50bWVudCcpLmRpc3BsYXkoKTtyZXR1cm4gZmFsc2U7IikuYXR0cigib250YXAiLCJMZWFkSGFuZGxlcigpLmdldExlYWQoJ0RlYWxlckFwcG9pbnRtZW50JykuZGlzcGxheSgpO3JldHVybiBmYWxzZTsiKTotMTxiLnUudG9Mb3dlckNhc2UoKS5pbmRleE9mKCJqYXZhc2NyaXB0OnZvaWQiKT8kKGMuY3VycmVudFRhcmdldCkuYXR0cigib25jbGljayIsYi51KS5hdHRyKCJvbnRhcCIsYi51KTowPT09Yi51LmluZGV4T2YoIi8iKXx8LTE8Yi51LmluZGV4T2Yod2luZG93LmxvY2F0aW9uLmhvc3QpPwokKGMuY3VycmVudFRhcmdldCkuYXR0cigib25jbGljayIsIndpbmRvdy5sb2NhdGlvbiA9ICciK2IudSsiJyIpOiQoYy5jdXJyZW50VGFyZ2V0KS5hdHRyKCJvbmNsaWNrIiwid2luZG93Lm9wZW4oJyIrYi51KyInLCAnX2JsYW5rJykiKTokKGMuY3VycmVudFRhcmdldCkuYXR0cigib25jbGljayIsInNob3dQb3B1cFdpZGdldCgpIikuYXR0cigib250YXAiLCJzaG93UG9wdXBXaWRnZXQoKSIpO2UuZmFkZUluKCJzbG93Iil9KTsyPk9iamVjdC5rZXlzKHRoaXMuYmFubmVycykubGVuZ3RofHx0aGlzLnN0YXJ0KGIudCl9fX1faXNLZXl3b3JkSW5QYXRoKGEpe3JldHVybi0xIT09dGhpcy5jdXJyZW50UGF0aC5pbmRleE9mKGRlY29kZVVSSUNvbXBvbmVudChhKyIiKS50b0xvd2VyQ2FzZSgpKX1faXNLZXl3b3JkSW5Db29raWUoYSl7bGV0IGU9Q29va2llcy5nZXQoImQyY29mZmVyIik7cmV0dXJuIGUmJihlPWUudG9Mb3dlckNhc2UoKSwtMSE9PWUuaW5kZXhPZihhLnRvTG93ZXJDYXNlKCkpKT8KITA6ITF9X3Byb2Nlc3NEaXNjbGFpbWVyKGEpe2lmKGEuaGFzT3duUHJvcGVydHkoImQiKSYmMCE9PWEuZC5sZW5ndGgpe3ZhciBlPXtmcjp7c2hvdzoiQWZmaWNoZXIgbGVzIG1vZGFsaXTDqXMgZXQgY29uZGl0aW9ucyBnw6luw6lyYWxlcyIsaGlkZToiTWFzcXVlciBsZXMgbW9kYWxpdMOpcyBldCBjb25kaXRpb25zIGfDqW7DqXJhbGVzIn0sZW46e3Nob3c6IlZpZXcgVGVybXMgYW5kIENvbmRpdGlvbnMiLGhpZGU6IkhpZGUgVGVybXMgYW5kIENvbmRpdGlvbnMifX0sYj0iMSI9PT0kKCIjaXNtb2JpbGUiKS52YWwoKSxjPSQoJzxkaXYgY2xhc3M9InRvcEJhbm5lckltYWdlLS1kaXNjbGFpbWVyLWNvbnRhaW5lciI+PGkgY2xhc3M9ImZhcyBmYS10aW1lcyBmYS0yeCI+PC9pPjxkaXY+PC9kaXY+PC9kaXY+JyksZD0kKGA8ZGl2IGNsYXNzPSJ0b3BCYW5uZXJJbWFnZS0tZGlzY2xhaW1lci1jb250cm9sIj48YnV0dG9uIHR5cGU9ImJ1dHRvbiI+JHtlW0QyQ1V0aWxzLkxhbmcuZ2V0U2hvcnRMYW5nKCExKV0uc2hvd308L2J1dHRvbj48L2Rpdj5gKTsKYy5maW5kKCJkaXYiKS5hcHBlbmQoYS5kKTt0aGlzLiR0b3BCYW5uZXJJbWFnZS5hcHBlbmQoYyk7dGhpcy4kdG9wQmFubmVySW1hZ2UuYXBwZW5kKGQpO2lmKGIpZC5vbigiY2xpY2siLCgpPT57Yy5pcygiOnZpc2libGUiKT8oZC5maW5kKCJidXR0b24iKS50ZXh0KGVbRDJDVXRpbHMuTGFuZy5nZXRTaG9ydExhbmcoITEpXS5zaG93KSxjLmZhZGVPdXQoKSx0aGlzLnN0YXJ0KGEudCkpOihkLmZpbmQoImJ1dHRvbiIpLnRleHQoZVtEMkNVdGlscy5MYW5nLmdldFNob3J0TGFuZyghMSldLmhpZGUpLGMuZmFkZUluKCksdGhpcy5zdG9wKCkpfSk7ZWxzZSBkLm9uKCJjbGljayIsKCk9PntjLnNob3coKTt0aGlzLnN0b3AoKX0pLGMuZmluZCgiaSIpLm9uKCJjbGljayIsKCk9PntjLmhpZGUoKTt0aGlzLnN0YXJ0KGEudCl9KX19fTsKLyoqIC9tL2pzL2Jhc2U2NC5qcyAqKi8KdmFyIF9fX2QyY19iYXNlNjRqc19jX29uPSIyMDI1LTA1LTIzIDE3OjA2OjA4IjsndXNlIHN0cmljdCc7dmFyIF9fX2QyY19iYXNlNjRqc19jX29uPSIyMDI0LTA3LTA4IDEwOjMwOjA1IjsidXNlIHN0cmljdCI7CnZhciBCYXNlNjQ9e19rZXlTdHI6IkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky89IixfYjY0VGVzdDpSZWdFeHAoIl4oPzpbQS1aYS16MC05Ky9dezR9KSooPzpbQS1aYS16MC05Ky9dezJ9PT18W0EtWmEtejAtOSsvXXszfT0pPyQiKSxlbmNvZGU6ZnVuY3Rpb24oYSl7dmFyIGQ9IiIsYz0wO2ZvcihhPUJhc2U2NC5fdXRmOF9lbmNvZGUoYSk7YzxhLmxlbmd0aDspe3ZhciBiPWEuY2hhckNvZGVBdChjKyspLGU9YS5jaGFyQ29kZUF0KGMrKyksZj1hLmNoYXJDb2RlQXQoYysrKSxnPWI+PjI7Yj0oYiYzKTw8NHxlPj40O3ZhciBoPShlJjE1KTw8MnxmPj42LGs9ZiY2Mztpc05hTihlKT9oPWs9NjQ6aXNOYU4oZikmJihrPTY0KTtkPWQrdGhpcy5fa2V5U3RyLmNoYXJBdChnKSt0aGlzLl9rZXlTdHIuY2hhckF0KGIpK3RoaXMuX2tleVN0ci5jaGFyQXQoaCkrdGhpcy5fa2V5U3RyLmNoYXJBdChrKX1yZXR1cm4gZH0sZGVjb2RlOmZ1bmN0aW9uKGEpe3ZhciBkPQoiIixjPTA7Zm9yKGE9YS5yZXBsYWNlKC9bXkEtWmEtejAtOVwrXC89XS9nLCIiKTtjPGEubGVuZ3RoOyl7dmFyIGI9dGhpcy5fa2V5U3RyLmluZGV4T2YoYS5jaGFyQXQoYysrKSksZT10aGlzLl9rZXlTdHIuaW5kZXhPZihhLmNoYXJBdChjKyspKSxmPXRoaXMuX2tleVN0ci5pbmRleE9mKGEuY2hhckF0KGMrKykpLGc9dGhpcy5fa2V5U3RyLmluZGV4T2YoYS5jaGFyQXQoYysrKSk7Yj1iPDwyfGU+PjQ7ZT0oZSYxNSk8PDR8Zj4+Mjt2YXIgaD0oZiYzKTw8NnxnO2QrPVN0cmluZy5mcm9tQ2hhckNvZGUoYik7NjQhPWYmJihkKz1TdHJpbmcuZnJvbUNoYXJDb2RlKGUpKTs2NCE9ZyYmKGQrPVN0cmluZy5mcm9tQ2hhckNvZGUoaCkpfXJldHVybiBCYXNlNjQuX3V0ZjhfZGVjb2RlKGQpfSxfdXRmOF9lbmNvZGU6ZnVuY3Rpb24oYSl7dmFyIGQ9IiI7YT1hLnJlcGxhY2UoL1xyXG4vZywiXG4iKTtmb3IodmFyIGM9MDtjPGEubGVuZ3RoO2MrKyl7dmFyIGI9YS5jaGFyQ29kZUF0KGMpOzEyOD4KYj9kKz1TdHJpbmcuZnJvbUNoYXJDb2RlKGIpOigxMjc8YiYmMjA0OD5iP2QrPVN0cmluZy5mcm9tQ2hhckNvZGUoYj4+NnwxOTIpOihkKz1TdHJpbmcuZnJvbUNoYXJDb2RlKGI+PjEyfDIyNCksZCs9U3RyaW5nLmZyb21DaGFyQ29kZShiPj42JjYzfDEyOCkpLGQrPVN0cmluZy5mcm9tQ2hhckNvZGUoYiY2M3wxMjgpKX1yZXR1cm4gZH0sX3V0ZjhfZGVjb2RlOmZ1bmN0aW9uKGEpe2Zvcih2YXIgZD0iIixjPTAsYixlLGY7YzxhLmxlbmd0aDspYj1hLmNoYXJDb2RlQXQoYyksMTI4PmI\/KGQrPVN0cmluZy5mcm9tQ2hhckNvZGUoYiksYysrKToxOTE8YiYmMjI0PmI\/KGU9YS5jaGFyQ29kZUF0KGMrMSksZCs9U3RyaW5nLmZyb21DaGFyQ29kZSgoYiYzMSk8PDZ8ZSY2MyksYys9Mik6KGU9YS5jaGFyQ29kZUF0KGMrMSksZj1hLmNoYXJDb2RlQXQoYysyKSxkKz1TdHJpbmcuZnJvbUNoYXJDb2RlKChiJjE1KTw8MTJ8KGUmNjMpPDw2fGYmNjMpLGMrPTMpO3JldHVybiBkfSx3aGl0ZUxpc3Q6ZnVuY3Rpb24oKXtyZXR1cm5bInRyYWlsZXJzIl19LAppc0Jhc2U2NDpmdW5jdGlvbihhKXtyZXR1cm4gQmFzZTY0LndoaXRlTGlzdCgpLmluY2x1ZGVzKGEudG9Mb3dlckNhc2UoKSl8fCJ1bmRlZmluZWQiPT09dHlwZW9mIGF8fCIiPT09YXx8IiI9PT1hLnRyaW0oKXx8ND49YS5sZW5ndGg\/ITE6QmFzZTY0LmVuY29kZShCYXNlNjQuZGVjb2RlKGEpKT09YX19OwovKiogL20vanMvZDJjdGNrL3Vwcm9maWxlLmZpbmFsLm1pbi5qcyAqKi8KYWN0aXZlVXNlclByb2ZpbGVNbmc9e29ucmVhZHk6bnVsbCxvbm5vdGZvdW5kOm51bGwsZGlzYWJsZWQ6ITEsdWlkOm51bGwsYWN0aXZlU3RlcDowLHN3ZlN0b3JlOiExLHJlZ2lzdGVyZWRQYWdlVmlld3M6bnVsbCxyZWdpc3RlcmVkRXZlbnRzOm51bGwsc2Vzc2lvbmlkOm51bGwscmVnaXN0ZXJlZENhbGxiYWNrczpudWxsLHJlZ2lzdGVyZWRTZXNzaW9uQ2FsbGJhY2tzOm51bGwscGFnZVZpZXdDb3VudDpudWxsLF9fcHJvcGVydGllczpudWxsLGpxdWVyeUFjdGl2ZTohMCxpc0QyQ1NpdGU6ITAsX19yZXNldFY6OSxyZXNldFNlY29uZFBhc3M6ITEsX19vdXRwdXREaXZNc2c6ITEsX19vdXRwdXRDb25zb2xlTXNnOiExLGFqYXhNbmc6e2FzeW5jOiEwLF9sYXN0WDpudWxsLHg6ZnVuY3Rpb24oKXt0cnl7aWYoInVuZGVmaW5lZCIhPT10eXBlb2YgWE1MSHR0cFJlcXVlc3QpcmV0dXJuIG5ldyBYTUxIdHRwUmVxdWVzdDtmb3IodmFyIGE9WyJNU1hNTDIuWG1sSHR0cC41LjAiLAoJCQkiTVNYTUwyLlhtbEh0dHAuNC4wIiwiTVNYTUwyLlhtbEh0dHAuMy4wIiwiTVNYTUwyLlhtbEh0dHAuMi4wIiwiTWljcm9zb2Z0LlhtbEh0dHAiXSxiLGQ9MDtkPGEubGVuZ3RoO2QrKyl0cnl7Yj1uZXcgQWN0aXZlWE9iamVjdChhW2RdKTticmVha31jYXRjaChjKXt9fWNhdGNoKGMpe31yZXR1cm4gYn0sX3NlbmQ6ZnVuY3Rpb24oYSxiLGQsYyxlLGgpe3RyeXt2YXIgZj10aGlzLngoKTt0aGlzLl9sYXN0WD1mO2Yub3BlbihkLGEsZSk7dHJ5e2YuYWRkRXZlbnRMaXN0ZW5lcigiZXJyb3IiLGZ1bmN0aW9uKHEpeyJ1bmRlZmluZWQiIT10eXBlb2YgaCYmbnVsbCE9aCYmaChmLGYuc3RhdHVzVGV4dCxFcnJvcihmLnJlc3BvbnNlVGV4dCkpfSl9Y2F0Y2gocSl7fWYub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKCl7ND09Zi5yZWFkeVN0YXRlP2IoZi5yZXNwb25zZVRleHQpOiJ1bmRlZmluZWQiIT10eXBlb2YgaCYmbnVsbCE9aCYmaChmLGYuc3RhdHVzVGV4dCxFcnJvcihmLnJlc3BvbnNlVGV4dCkpfTsKCQkJIlBPU1QiPT1kJiZmLnNldFJlcXVlc3RIZWFkZXIoIkNvbnRlbnQtdHlwZSIsImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIpO2Yuc2VuZChjKX1jYXRjaChxKXsidW5kZWZpbmVkIiE9dHlwZW9mIGgmJm51bGwhPWgmJmgoZiwidW5rbm93biIscSl9fSxhamF4OmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXM7dHJ5e2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgYS50eXBlJiYoYS50eXBlPSJHRVQiKSwidW5kZWZpbmVkIj09dHlwZW9mIGEuZGF0YSYmKGEuZGF0YT17fSksd2luZG93LmpRdWVyeSYmInVuZGVmaW5lZCIhPXR5cGVvZiAkLmFqYXgpJC5hamF4KGEpLmRvbmUoZnVuY3Rpb24oYyl7InVuZGVmaW5lZCIhPXR5cGVvZiBhLmRvbmUmJmEuZG9uZShjKX0pLmZhaWwoZnVuY3Rpb24oYyxlLGgpeyJ1bmRlZmluZWQiIT10eXBlb2YgYS5mYWlsJiZhLmZhaWwoYyxlLGgpfSkuYWx3YXlzKGZ1bmN0aW9uKCl7InVuZGVmaW5lZCIhPXR5cGVvZiBhLmFsd2F5cyYmYS5hbHdheXMoKX0pLmRvbmUoZnVuY3Rpb24oYyl7InVuZGVmaW5lZCIhPQoJCXR5cGVvZiBhLnN1Y2Nlc3MmJmEuc3VjY2VzcyhjKX0pLmFsd2F5cyhmdW5jdGlvbihjLGUpeyJ1bmRlZmluZWQiIT10eXBlb2YgYS5jb21wbGV0ZSYmYS5jb21wbGV0ZShiLl9sYXN0WCwidW5kZWZpbmVkIiE9dHlwZW9mIGIuX2xhc3RYLnN0YXR1c1RleHQ\/Yi5fbGFzdFguc3RhdHVzVGV4dDoiIil9KTtlbHNle3ZhciBkPWIuX2dldDsicG9zdCI9PWEudHlwZS50b0xvd2VyQ2FzZSgpJiYoZD1iLl9wb3N0KTtkKGEudXJsLGEuZGF0YSxmdW5jdGlvbihjKXsidW5kZWZpbmVkIiE9dHlwZW9mIGEuZG9uZSYmYS5kb25lKGMpOyJ1bmRlZmluZWQiIT10eXBlb2YgYS5zdWNjZXNzJiZhLnN1Y2Nlc3MoYyk7InVuZGVmaW5lZCIhPXR5cGVvZiBhLmNvbXBsZXRlJiZhLmNvbXBsZXRlKCk7InVuZGVmaW5lZCIhPXR5cGVvZiBhLmFsd2F5cyYmYS5hbHdheXMoKX0sYi5hc3luYyxmdW5jdGlvbihjLGUsaCl7InVuZGVmaW5lZCIhPXR5cGVvZiBhLmZhaWwmJmEuZmFpbChjLGUsaCl9KX19Y2F0Y2goYyl7Y29uc29sZSYmCgkJY29uc29sZS5sb2cmJmNvbnNvbGUubG9nKCJVbmV4cGVjdGVkIGVycm9yIGFjY2Vzc2luZyBhamF4TW5nLmdldDogJXMiLGMubWVzc2FnZSl9fSxfZ2V0OmZ1bmN0aW9uKGEsYixkLGMsZSl7dmFyIGg9W10sZjtmb3IoZiBpbiBiKWgucHVzaChlbmNvZGVVUklDb21wb25lbnQoZikrIj0iK2VuY29kZVVSSUNvbXBvbmVudChiW2ZdKSk7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBjfHxudWxsPT1jKWM9ITA7YWN0aXZlVXNlclByb2ZpbGVNbmcuYWpheE1uZy5fc2VuZChhKyI\/IitoLmpvaW4oIiYiKSxkLCJHRVQiLG51bGwsYyxlKX0sX3Bvc3Q6ZnVuY3Rpb24oYSxiLGQsYyxlKXt2YXIgaD1bXSxmO2ZvcihmIGluIGIpaC5wdXNoKGVuY29kZVVSSUNvbXBvbmVudChmKSsiPSIrZW5jb2RlVVJJQ29tcG9uZW50KGJbZl0pKTtpZigidW5kZWZpbmVkIj09dHlwZW9mIGN8fG51bGw9PWMpYz0hMDthY3RpdmVVc2VyUHJvZmlsZU1uZy5hamF4TW5nLl9zZW5kKGEsZCwiUE9TVCIsaC5qb2luKCImIiksCgkJCWMsZSl9LGdldFNjcmlwdDpmdW5jdGlvbihhLGIpe3RyeXtpZih3aW5kb3cualF1ZXJ5JiYidW5kZWZpbmVkIiE9dHlwZW9mICQuZ2V0U2NyaXB0KSQuZ2V0U2NyaXB0KGEsYik7ZWxzZXt2YXIgZD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKSxjPWRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJzY3JpcHQiKVswXTtkLmFzeW5jPTE7ZC5vbmxvYWQ9ZC5vbnJlYWR5c3RhdGVjaGFuZ2U9ZnVuY3Rpb24oZSxoKXtpZihofHwhZC5yZWFkeVN0YXRlfHwvbG9hZGVkfGNvbXBsZXRlLy50ZXN0KGQucmVhZHlTdGF0ZSkpZC5vbmxvYWQ9ZC5vbnJlYWR5c3RhdGVjaGFuZ2U9bnVsbCxkPXZvaWQgMCwhaCYmYiYmc2V0VGltZW91dChiLDApfTtkLnNyYz1hO2MucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoZCxjKX19Y2F0Y2goZSl7Y29uc29sZSYmY29uc29sZS5sb2cmJmNvbnNvbGUubG9nKCJVbmV4cGVjdGVkIGVycm9yIHJldHJpZXZpbmcganMgc2NyaXB0LiBUaGlzIHNob3VsZCBuZXZlciBoYXBwZW46ICVzIiwKCQkJZS5tZXNzYWdlKX19fSxjb29raWVNbmc6e3JlYWRDb29raWVWYWx1ZTpmdW5jdGlvbihhKXt2YXIgYj1udWxsO3RyeXtpZih3aW5kb3cualF1ZXJ5JiYidW5kZWZpbmVkIiE9dHlwZW9mICQuY29va2llKWI9JC5jb29raWUoYSksInVuZGVmaW5lZCI9PXR5cGVvZiBiJiYoYj1udWxsKTtlbHNle2ErPSI9Ijtmb3IodmFyIGQ9ZG9jdW1lbnQuY29va2llLnNwbGl0KCI7IiksYz0wO2M8ZC5sZW5ndGg7YysrKXtmb3IodmFyIGU9ZFtjXTsiICI9PWUuY2hhckF0KDApOyllPWUuc3Vic3RyaW5nKDEsZS5sZW5ndGgpO2lmKDA9PWUuaW5kZXhPZihhKSl7Yj1lLnN1YnN0cmluZyhhLmxlbmd0aCxlLmxlbmd0aCk7YnJlYWt9fX19Y2F0Y2goaCl7Y29uc29sZSYmY29uc29sZS5sb2cmJmNvbnNvbGUubG9nKCJVbmV4cGVjdGVkIGVycm9yIHJlYWRpbmcgY29va2llOiAlcyIsaC5tZXNzYWdlKX1yZXR1cm4gYn0sc2V0Q29va2llVmFsdWU6ZnVuY3Rpb24oYSxiLGQsYyl7dHJ5e2lmKCEwIT09dGhpcy5kaXNhYmxlZCl7aWYoInVuZGVmaW5lZCI9PQoJCQl0eXBlb2YgZHx8bnVsbD09ZClkPSIvIjtpZigidW5kZWZpbmVkIj09dHlwZW9mIGN8fG51bGw9PWMpYz0wOyJ1bmRlZmluZWQiPT10eXBlb2YgYiYmKGI9bnVsbCk7dmFyIGU9bmV3IERhdGU7ZS5zZXRUaW1lKGUuZ2V0VGltZSgpKzg2NEU1KmMpO3dpbmRvdy5qUXVlcnkmJiJ1bmRlZmluZWQiIT10eXBlb2YgJC5jb29raWU\/JC5jb29raWUoYSxiLHtwYXRoOmQsc2VjdXJlOiEwLGV4cGlyZXM6MD09Yz8iIjplfSk6KGV4cGlyZXM9MCE9Yz8iOyBleHBpcmVzPSIrZS50b0dNVFN0cmluZygpOiIiLGRvY3VtZW50LmNvb2tpZT1hKyI9IitiK2V4cGlyZXMrIjsgc2VjdXJlOyBwYXRoPSIrZCxiJiZhY3RpdmVVc2VyUHJvZmlsZU1uZy5jb29raWVNbmcubG9nQ29va2llKGEsYixjLGQpKX19Y2F0Y2goaCl7Y29uc29sZSYmY29uc29sZS5sb2cmJmNvbnNvbGUubG9nKCJVbmV4cGVjdGVkIGVycm9yIHNldHRpbmcgY29va2llOiAlcyIsaC5tZXNzYWdlKX19LGRlbGV0ZUNvb2tpZTpmdW5jdGlvbihhKXt0cnl7d2luZG93LmpRdWVyeSYmCgkJInVuZGVmaW5lZCIhPXR5cGVvZiAkLmNvb2tpZT8oJC5jb29raWUoYSxudWxsKSwkLmNvb2tpZShhLG51bGwse3BhdGg6Ii8ifSkpOnRoaXMuc2V0Q29va2llVmFsdWUoYSxudWxsLC0xKX1jYXRjaChiKXtjb25zb2xlJiZjb25zb2xlLmxvZyYmY29uc29sZS5sb2coIlVuZXhwZWN0ZWQgZXJyb3IgZGVsZXRpbmcgY29va2llOiAlcyIsYi5tZXNzYWdlKX19LGxvZ0Nvb2tpZTpmdW5jdGlvbihhLGIsZCxjLGUpeyJ1bmRlZmluZWQiPT09dHlwZW9mIGUmJihlPTUpOyJ1bmRlZmluZWQiPT09dHlwZW9mIHdpbmRvdy5Db29raWVMb2dnZXI\/ZSYmc2V0VGltZW91dChmdW5jdGlvbigpe2FjdGl2ZVVzZXJQcm9maWxlTW5nLmNvb2tpZU1uZy5sb2dDb29raWUoYSxiLGQsYyxlLTEpfSwxMDApOndpbmRvdy5Db29raWVMb2dnZXIubG9nKGEsYixkLGMpfX0sX191c2VQcm94eTpmdW5jdGlvbigpe3JldHVybiExPT09dGhpcy5pc0QyQ1NpdGU\/ITE6ITB9LF9pc0JvdDpmdW5jdGlvbigpe3JldHVybi9ib3R8Z29vZ2xlYm90fGNyYXdsZXJ8c3BpZGVyfHJvYm90fGNyYXdsaW5nL2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KT8KCQkhMDohMX0sZ2V0U3RhdHNVUkk6ZnVuY3Rpb24oKXt2YXIgYT0iL3Byb3h5X3NkMmMvIjt0cnl7ITE9PT1hY3RpdmVVc2VyUHJvZmlsZU1uZy5pc0QyQ1NpdGUmJihhPSJodHRwOi8vc3RhdHMuZDJjbWVkaWEuY2EvIiwiaHR0cHM6Ij09d2luZG93LmxvY2F0aW9uLnByb3RvY29sJiYoYT0iaHR0cHM6Ly9zc2xzdGF0cy5kMmNtZWRpYS5jYS8iKSl9Y2F0Y2goYil7Y29uc29sZSYmY29uc29sZS5sb2cmJmNvbnNvbGUubG9nKCJVbmV4cGVjdGVkIGVycm9yIGNhdWdodCBpbiBnZXRTdGF0c1VSSTogJXMiLGIubWVzc2FnZSksYT0iaHR0cHM6Ly9zc2xzdGF0cy5kMmNtZWRpYS5jYS8ifXJldHVybiBhfSxnZXRGUFVSSTpmdW5jdGlvbigpe2lmKCEwPT09dGhpcy5kaXNhYmxlZClyZXR1cm4iIjt2YXIgYT0iL2pzL2QyY3Rjay9mcHJpbnQudjIubWluLmpzIjt0cnl7YT0hMT09PWFjdGl2ZVVzZXJQcm9maWxlTW5nLmlzRDJDU2l0ZT9udWxsIT13aW5kb3cubG9jYXRpb24mJiJ1bmRlZmluZWQiIT0KCXR5cGVvZiB3aW5kb3cubG9jYXRpb24uaHJlZiYmLTEhPXdpbmRvdy5sb2NhdGlvbi5ocmVmLmluZGV4T2YoImNybTIuZDJjbWVkaWEuY2EiKT8iaHR0cHM6Ly9jcm0yLmQyY21lZGlhLmNhL2Fzc2V0cy9qcy9kMmN0Y2svZnByaW50LnYyLmpzIjoiaHR0cHM6Ly93d3cuYXV0b2F1YmFpbmUuY29tL2pzL2QyY3Rjay9mcHJpbnQudjIubWluLmpzIjohMD09PXRoaXMuX19vdXRwdXREaXZNc2c\/Ii9qcy9kMmN0Y2svZnByaW50LnYyLmpzIjoiL2pzL2QyY3Rjay9mcHJpbnQudjIubWluLmpzIn1jYXRjaChiKXtjb25zb2xlJiZjb25zb2xlLmxvZyYmY29uc29sZS5sb2coIlVuZXhwZWN0ZWQgZXJyb3IgY2F1Z2h0IGluIGdldEZQVVJJOiAlcyIsYi5tZXNzYWdlKSxhPSIvanMvZDJjdGNrL2ZwcmludC52Mi5taW4uanMifXJldHVybiBhfSxnZXRTZXNzaW9uSUQ6ZnVuY3Rpb24oKXtpZihudWxsIT1hY3RpdmVVc2VyUHJvZmlsZU1uZy5zZXNzaW9uaWQpcmV0dXJuIGFjdGl2ZVVzZXJQcm9maWxlTW5nLnNlc3Npb25pZDsKCQl2YXIgYT13aW5kb3cuYWN0aXZlU2Vzc2lvbklEO2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgYXx8bnVsbD09YXx8MD09YSlyZXR1cm4gYWN0aXZlVXNlclByb2ZpbGVNbmcuc2Vzc2lvbmlkPXdpbmRvdy5hY3RpdmVTZXNzaW9uSUQsYWN0aXZlVXNlclByb2ZpbGVNbmcuc2Vzc2lvbmlkO2E9YWN0aXZlVXNlclByb2ZpbGVNbmcuY29va2llTW5nLnJlYWRDb29raWVWYWx1ZSgidXNpZCIpO3JldHVybiBudWxsIT1hPyhhY3RpdmVVc2VyUHJvZmlsZU1uZy5zZXNzaW9uaWQ9YSxhY3RpdmVVc2VyUHJvZmlsZU1uZy5zZXNzaW9uaWQpOjB9LHJlZ2lzdGVyQ2FsbGJhY2s6ZnVuY3Rpb24oYSl7aWYoITA9PT10aGlzLmRpc2FibGVkKXtpZihudWxsIT1hKXRyeXthKCl9Y2F0Y2goYil7fXJldHVybiExfW51bGw9PWFjdGl2ZVVzZXJQcm9maWxlTW5nLnJlZ2lzdGVyZWRDYWxsYmFja3MmJihhY3RpdmVVc2VyUHJvZmlsZU1uZy5yZWdpc3RlcmVkQ2FsbGJhY2tzPVtdKTsidW5kZWZpbmVkIiE9dHlwZW9mIGFjdGl2ZVVzZXJQcm9maWxlTW5nLnVpZCYmCgludWxsIT1hY3RpdmVVc2VyUHJvZmlsZU1uZy51aWQmJiJub25lIiE9YWN0aXZlVXNlclByb2ZpbGVNbmcudWlkP2EoKTphY3RpdmVVc2VyUHJvZmlsZU1uZy5yZWdpc3RlcmVkQ2FsbGJhY2tzLnB1c2goYSl9LHJlZ2lzdGVyU2Vzc2lvbkNhbGxiYWNrOmZ1bmN0aW9uKGEpe2lmKCEwPT09dGhpcy5kaXNhYmxlZCl7aWYobnVsbCE9YSl0cnl7YSgpfWNhdGNoKGIpe31yZXR1cm4hMX1udWxsPT1hY3RpdmVVc2VyUHJvZmlsZU1uZy5yZWdpc3RlcmVkU2Vzc2lvbkNhbGxiYWNrcyYmKGFjdGl2ZVVzZXJQcm9maWxlTW5nLnJlZ2lzdGVyZWRTZXNzaW9uQ2FsbGJhY2tzPVtdKTsidW5kZWZpbmVkIiE9dHlwZW9mIGFjdGl2ZVVzZXJQcm9maWxlTW5nLnNlc3Npb25pZCYmbnVsbCE9YWN0aXZlVXNlclByb2ZpbGVNbmcuc2Vzc2lvbmlkJiYwIT1hY3RpdmVVc2VyUHJvZmlsZU1uZy5zZXNzaW9uaWQ\/YSgpOmFjdGl2ZVVzZXJQcm9maWxlTW5nLnJlZ2lzdGVyZWRTZXNzaW9uQ2FsbGJhY2tzLnB1c2goYSl9LAoJX19ub3RpZnlVVUlEOmZ1bmN0aW9uKCl7dHJ5e2lmKCEwPT09dGhpcy5kaXNhYmxlZCl7dHJ5e2IoKX1jYXRjaChkKXt9cmV0dXJuITF9aWYobnVsbCE9YWN0aXZlVXNlclByb2ZpbGVNbmcucmVnaXN0ZXJlZENhbGxiYWNrcyl7Zm9yKHZhciBhPTA7YTxhY3RpdmVVc2VyUHJvZmlsZU1uZy5yZWdpc3RlcmVkQ2FsbGJhY2tzLmxlbmd0aDthKyspe3ZhciBiPWFjdGl2ZVVzZXJQcm9maWxlTW5nLnJlZ2lzdGVyZWRDYWxsYmFja3NbYV07YigpfWFjdGl2ZVVzZXJQcm9maWxlTW5nLnJlZ2lzdGVyZWRDYWxsYmFja3M9bnVsbH19Y2F0Y2goZCl7Y29uc29sZSYmY29uc29sZS5sb2cmJmNvbnNvbGUubG9nKCJVbmV4cGVjdGVkIGVycm9yIGNhdWdodCBpbiBfX25vdGlmeVVVSUQ6ICVzIixkLm1lc3NhZ2UpfX0sX19ub3RpZnlTZXNzaW9uSUQ6ZnVuY3Rpb24oKXtpZighMD09PXRoaXMuZGlzYWJsZWQpcmV0dXJuITE7dmFyIGE9YWN0aXZlVXNlclByb2ZpbGVNbmcuZ2V0U2Vzc2lvbklEKCk7CgkJaWYoInVuZGVmaW5lZCI9PXR5cGVvZiBhfHxudWxsPT1hfHwiMCI9PWF8fDA9PWEpdmFyIGI9c2V0SW50ZXJ2YWwoZnVuY3Rpb24oKXt0cnl7bnVsbD09YWN0aXZlVXNlclByb2ZpbGVNbmcucmVnaXN0ZXJlZFNlc3Npb25DYWxsYmFja3M\/Y2xlYXJJbnRlcnZhbChiKTowIT09YWN0aXZlVXNlclByb2ZpbGVNbmcuZ2V0U2Vzc2lvbklEKCkmJihjbGVhckludGVydmFsKGIpLGFjdGl2ZVVzZXJQcm9maWxlTW5nLl9fbm90aWZ5U2Vzc2lvbklEKCkpfWNhdGNoKGQpe2NvbnNvbGUmJmNvbnNvbGUubG9nJiZjb25zb2xlLmxvZygiTm90aWZ5IHNlc3Npb25pZCBmYWlsZWQgd2l0aDogJXMiLGQubWVzc2FnZSl9fSw1MDApO2lmKG51bGwhPWFjdGl2ZVVzZXJQcm9maWxlTW5nLnJlZ2lzdGVyZWRTZXNzaW9uQ2FsbGJhY2tzKXRyeXtmb3IoYT0wO2E8YWN0aXZlVXNlclByb2ZpbGVNbmcucmVnaXN0ZXJlZFNlc3Npb25DYWxsYmFja3MubGVuZ3RoO2ErKykoMCxhY3RpdmVVc2VyUHJvZmlsZU1uZy5yZWdpc3RlcmVkU2Vzc2lvbkNhbGxiYWNrc1thXSkoKTsKCQkJYWN0aXZlVXNlclByb2ZpbGVNbmcucmVnaXN0ZXJlZFNlc3Npb25DYWxsYmFja3M9bnVsbH1jYXRjaChkKXtjb25zb2xlJiZjb25zb2xlLmxvZyYmY29uc29sZS5sb2coIlVuZXhwZWN0ZWQgZXJyb3IgY2F1Z2h0IGluIF9fbm90aWZ5U2Vzc2lvbklEOiAlcyIsZC5tZXNzYWdlKX19LGxvZ01zZzpmdW5jdGlvbihhKXt0cnl7aWYoITA9PT10aGlzLmRpc2FibGVkKXJldHVybiExOyEwPT09dGhpcy5fX291dHB1dERpdk1zZyYmJChkb2N1bWVudC5ib2R5KS5hcHBlbmQoIjxkaXY+IithKyI8L2Rpdj4iKTshMD09PXRoaXMuX19vdXRwdXRDb25zb2xlTXNnJiZjb25zb2xlJiZjb25zb2xlLmxvZyYmY29uc29sZS5sb2coYSl9Y2F0Y2goYil7Y29uc29sZSYmY29uc29sZS5sb2cmJmNvbnNvbGUubG9nKCJVbmV4cGVjdGVkIGVycm9yIGNhdWdodCBpbiBtZXNzYWdlIGxvZ2dpbmcuIEhvdyBpcm9uaWM6ICVzIixiLm1lc3NhZ2UpfX0sY2hlY2tTY2hlZHVsZWRSZXNldDpmdW5jdGlvbigpe3ZhciBhPQoJCSExO3RyeXtpZighMD09PWFjdGl2ZVVzZXJQcm9maWxlTW5nLmRpc2FibGVkKXJldHVybiExO3ZhciBiPWFjdGl2ZVVzZXJQcm9maWxlTW5nLmNvb2tpZU1uZy5yZWFkQ29va2llVmFsdWUoInV1aWRfcnN0Iik7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBifHxudWxsPT1iKWI9MDtiIT10aGlzLl9fcmVzZXRWJiYoYT0hMCxhY3RpdmVVc2VyUHJvZmlsZU1uZy5jb29raWVNbmcuc2V0Q29va2llVmFsdWUoInV1aWRfcnN0Iix0aGlzLl9fcmVzZXRWLCIvIiw0RTMpKX1jYXRjaChkKXt0aGlzLmxvZ01zZygiVW5leHBlY3RlZCBlcnJvciBpbiBzY2hlZHVsZWQgcmVzZXQgY2hlY2s6ICIrZC5tZXNzYWdlKX1yZXR1cm4gYX0sZ2V0QWN0aXZlUHJvZmlsZWlkOmZ1bmN0aW9uKCl7aWYobnVsbCE9dGhpcy51aWQpcmV0dXJuIG51bGw9PXdpbmRvdy5hY3RpdmVQcm9maWxlSUQmJih3aW5kb3cuYWN0aXZlUHJvZmlsZUlEPXRoaXMudWlkKSx0aGlzLnVpZDtpZighMD09PWFjdGl2ZVVzZXJQcm9maWxlTW5nLmRpc2FibGVkKXJldHVybiBudWxsOwoJCXZhciBhPXRoaXMuY29va2llTW5nLnJlYWRDb29raWVWYWx1ZSgidXVpZCIpO2lmKG51bGwhPWEmJjA8YS5sZW5ndGgpcmV0dXJuIHRoaXMuYWN0aXZlUHJvZmlsZUlEPXRoaXMudWlkPWEsdGhpcy5fX2ZpcmVSZWFkeUV2ZW50KCksdGhpcy51aWQ7YT1hY3RpdmVVc2VyUHJvZmlsZU1uZy5jb29raWVNbmcucmVhZENvb2tpZVZhbHVlKCJ1dWlkX3ZsZDMiKTtpZihudWxsIT1hJiYwIT1hLmxlbmd0aCl7YWN0aXZlVXNlclByb2ZpbGVNbmcuX19sb2FkVXNlckRhdGFDb29raWUoKTthY3RpdmVVc2VyUHJvZmlsZU1uZy5lbnN1cmVWYWxpZElEKCk7aWYobnVsbCE9YWN0aXZlVXNlclByb2ZpbGVNbmcudWlkKXJldHVybiBhY3RpdmVVc2VyUHJvZmlsZU1uZy51aWQ7YWN0aXZlVXNlclByb2ZpbGVNbmcuX19sb2FkTG9jYWxTdG9yYWdlQ29va2llKCk7YWN0aXZlVXNlclByb2ZpbGVNbmcuZW5zdXJlVmFsaWRJRCgpO2lmKG51bGwhPWFjdGl2ZVVzZXJQcm9maWxlTW5nLnVpZClyZXR1cm4gYWN0aXZlVXNlclByb2ZpbGVNbmcudWlkOwoJCQlhY3RpdmVVc2VyUHJvZmlsZU1uZy5fX2xvYWRHbG9iYWxTdG9yYWdlQ29va2llKCk7YWN0aXZlVXNlclByb2ZpbGVNbmcuZW5zdXJlVmFsaWRJRCgpO2lmKG51bGwhPWFjdGl2ZVVzZXJQcm9maWxlTW5nLnVpZClyZXR1cm4gYWN0aXZlVXNlclByb2ZpbGVNbmcudWlkO2FjdGl2ZVVzZXJQcm9maWxlTW5nLl9fbG9hZFNlc3Npb25TdG9yYWdlQ29va2llKCk7YWN0aXZlVXNlclByb2ZpbGVNbmcuZW5zdXJlVmFsaWRJRCgpO2lmKG51bGwhPWFjdGl2ZVVzZXJQcm9maWxlTW5nLnVpZClyZXR1cm4gYWN0aXZlVXNlclByb2ZpbGVNbmcudWlkO2FjdGl2ZVVzZXJQcm9maWxlTW5nLl9fbG9hZEZyb21Mb2NhbERCKCk7YWN0aXZlVXNlclByb2ZpbGVNbmcuZW5zdXJlVmFsaWRJRCgpO2lmKG51bGwhPWFjdGl2ZVVzZXJQcm9maWxlTW5nLnVpZClyZXR1cm4gYWN0aXZlVXNlclByb2ZpbGVNbmcudWlkO2FjdGl2ZVVzZXJQcm9maWxlTW5nLl9fbG9hZEZMVkNvb2tpZSgpfWVsc2Ugc2V0VGltZW91dCgiYWN0aXZlVXNlclByb2ZpbGVNbmcuX19jb250aW51ZUxvYWQoMykiLAoJCQk1MDApO3JldHVybiBudWxsfSxlbnN1cmVWYWxpZElEOmZ1bmN0aW9uKCl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBhY3RpdmVVc2VyUHJvZmlsZU1uZ3x8InN0cmluZyI9PXR5cGVvZiBhY3RpdmVVc2VyUHJvZmlsZU1uZy51aWQmJjA9PWFjdGl2ZVVzZXJQcm9maWxlTW5nLnVpZC5sZW5ndGgpYWN0aXZlVXNlclByb2ZpbGVNbmcudWlkPW51bGx9LHNldEFjdGl2ZVByb2ZpbGVpZDpmdW5jdGlvbigpe2lmKG51bGw9PWFjdGl2ZVVzZXJQcm9maWxlTW5nLnVpZHx8ITA9PT1hY3RpdmVVc2VyUHJvZmlsZU1uZy5kaXNhYmxlZClyZXR1cm4hMTthY3RpdmVVc2VyUHJvZmlsZU1uZy5zZXREQkNvb2tpZSgpO2FjdGl2ZVVzZXJQcm9maWxlTW5nLnNldFBOR0Nvb2tpZSgpO2FjdGl2ZVVzZXJQcm9maWxlTW5nLnNldEVUYWdDb29raWUoKTthY3RpdmVVc2VyUHJvZmlsZU1uZy5zZXRVc2VyRGF0YUNvb2tpZSgpO2FjdGl2ZVVzZXJQcm9maWxlTW5nLnNldExvY2FsU3RvcmFnZUNvb2tpZSgpO2FjdGl2ZVVzZXJQcm9maWxlTW5nLnNldEdsb2JhbFN0b3JhZ2VDb29raWUoKTsKCQlhY3RpdmVVc2VyUHJvZmlsZU1uZy5zZXRTZXNzaW9uU3RvcmFnZUNvb2tpZSgpO2FjdGl2ZVVzZXJQcm9maWxlTW5nLnNldEZMVkNvb2tpZSgpO2FjdGl2ZVVzZXJQcm9maWxlTW5nLl9fbm90aWZ5VVVJRCgpfSxfX2NvbnRpbnVlTG9hZDpmdW5jdGlvbihhKXtpZighMD09PWFjdGl2ZVVzZXJQcm9maWxlTW5nLmRpc2FibGVkKXJldHVybiExO2FjdGl2ZVVzZXJQcm9maWxlTW5nLmVuc3VyZVZhbGlkSUQoKTtpZihudWxsIT1hY3RpdmVVc2VyUHJvZmlsZU1uZy51aWQpYWN0aXZlVXNlclByb2ZpbGVNbmcuX19maXJlUmVhZHlFdmVudCgpO2Vsc2Ugc3dpdGNoKGEpe2Nhc2UgMTphY3RpdmVVc2VyUHJvZmlsZU1uZy5fX2xvYWRFVGFnQ29va2llKCk7YnJlYWs7Y2FzZSAyOmFjdGl2ZVVzZXJQcm9maWxlTW5nLl9fbG9hZFBOR0Nvb2tpZSgpO2JyZWFrO2RlZmF1bHQ6YWN0aXZlVXNlclByb2ZpbGVNbmcuX19maXJlTm90Rm91bmQoKX19LF9fZmlyZVJlYWR5RXZlbnQ6ZnVuY3Rpb24oKXtpZihudWxsIT0KCQlhY3RpdmVVc2VyUHJvZmlsZU1uZy5vbnJlYWR5KWFjdGl2ZVVzZXJQcm9maWxlTW5nLm9ucmVhZHkoYWN0aXZlVXNlclByb2ZpbGVNbmcudWlkKTthY3RpdmVVc2VyUHJvZmlsZU1uZy5fX25vdGlmeVVVSUQoKX0sX19maXJlTm90Rm91bmQ6ZnVuY3Rpb24oKXtpZihudWxsIT1hY3RpdmVVc2VyUHJvZmlsZU1uZy5vbm5vdGZvdW5kKWFjdGl2ZVVzZXJQcm9maWxlTW5nLm9ubm90Zm91bmQoKX0sc2V0RkxWQ29va2llOmZ1bmN0aW9uKCl7aWYobnVsbCE9YWN0aXZlVXNlclByb2ZpbGVNbmcudWlkJiYibm9uZSIhPWFjdGl2ZVVzZXJQcm9maWxlTW5nLnVpZCl7aWYoITA9PT1hY3RpdmVVc2VyUHJvZmlsZU1uZy5kaXNhYmxlZClyZXR1cm4hMTt0cnl7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBuYXZpZ2F0b3IucGx1Z2lucyYmIm9iamVjdCI9PXR5cGVvZiBuYXZpZ2F0b3IucGx1Z2luc1siU2hvY2t3YXZlIEZsYXNoIl18fHdpbmRvdy5BY3RpdmVYT2JqZWN0JiYwIT1uZXcgQWN0aXZlWE9iamVjdCgiU2hvY2t3YXZlRmxhc2guU2hvY2t3YXZlRmxhc2giKSl7aWYoIWFjdGl2ZVVzZXJQcm9maWxlTW5nLnN3ZlN0b3JlJiYKCQkoYWN0aXZlVXNlclByb2ZpbGVNbmcuc3dmU3RvcmU9ITAsInVuZGVmaW5lZCI9PXR5cGVvZiBTd2ZTdG9yZSkpe2FjdGl2ZVVzZXJQcm9maWxlTW5nLmFqYXhNbmcuZ2V0U2NyaXB0KCIvanMvc3dmc3RvcmUuanMiLGFjdGl2ZVVzZXJQcm9maWxlTW5nLnNldEZMVkNvb2tpZSk7cmV0dXJufXRyeXt2YXIgYT1uZXcgU3dmU3RvcmUoe25hbWVzcGFjZToidXByb2ZpbGUiLHN3Zl91cmw6Ii9mbGFzaC9zdG9yYWdlLnN3ZiIsb25yZWFkeTpmdW5jdGlvbigpe2Euc2V0KCJ1aWQiLGFjdGl2ZVVzZXJQcm9maWxlTW5nLnVpZCl9LG9uZXJyb3I6ZnVuY3Rpb24oKXt9fSl9Y2F0Y2goYil7InVuZGVmaW5lZCIhPXR5cGVvZiBjb25zb2xlJiZudWxsIT1jb25zb2xlJiZjb25zb2xlLmxvZyYmY29uc29sZS5sb2coIlVuYWJsZSB0byBzZXQgRkxWIENvb2tpZS4gRXJyb3I6ICIrYi5tZXNzYWdlKX19fWNhdGNoKGIpeyJ1bmRlZmluZWQiIT10eXBlb2YgY29uc29sZSYmbnVsbCE9Y29uc29sZSYmY29uc29sZS5sb2cmJgoJY29uc29sZS5sb2coIk1BSU46IFVuYWJsZSB0byBzZXQgRkxWIENvb2tpZS4gRXJyb3I6ICIrYi5tZXNzYWdlKX19fSxfX2xvYWRGTFZDb29raWU6ZnVuY3Rpb24oKXtpZihudWxsPT1hY3RpdmVVc2VyUHJvZmlsZU1uZy51aWQpe2lmKCEwPT09YWN0aXZlVXNlclByb2ZpbGVNbmcuZGlzYWJsZWQpcmV0dXJuITE7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBuYXZpZ2F0b3IucGx1Z2lucyYmIm9iamVjdCI9PXR5cGVvZiBuYXZpZ2F0b3IucGx1Z2luc1siU2hvY2t3YXZlIEZsYXNoIl18fHdpbmRvdy5BY3RpdmVYT2JqZWN0JiYwIT1uZXcgQWN0aXZlWE9iamVjdCgiU2hvY2t3YXZlRmxhc2guU2hvY2t3YXZlRmxhc2giKSl7aWYoIWFjdGl2ZVVzZXJQcm9maWxlTW5nLnN3ZlN0b3JlJiYoYWN0aXZlVXNlclByb2ZpbGVNbmcuc3dmU3RvcmU9ITAsInVuZGVmaW5lZCI9PXR5cGVvZiBTd2ZTdG9yZSkpe2FjdGl2ZVVzZXJQcm9maWxlTW5nLmFqYXhNbmcuZ2V0U2NyaXB0KCIvanMvc3dmc3RvcmUuanMiLAoJCWFjdGl2ZVVzZXJQcm9maWxlTW5nLl9fbG9hZEZMVkNvb2tpZSk7cmV0dXJufXRyeXt2YXIgYT1uZXcgU3dmU3RvcmUoe25hbWVzcGFjZToidXByb2ZpbGUiLHN3Zl91cmw6Ii9mbGFzaC9zdG9yYWdlLnN3ZiIsb25yZWFkeTpmdW5jdGlvbigpe3ZhciBiPWEuZ2V0KCJ1aWQiKTsidW5kZWZpbmVkIiE9dHlwZW9mIGImJm51bGwhPWImJihhY3RpdmVVc2VyUHJvZmlsZU1uZy51aWQ9Yik7YWN0aXZlVXNlclByb2ZpbGVNbmcuX19jb250aW51ZUxvYWQoMSl9LG9uZXJyb3I6ZnVuY3Rpb24oKXthY3RpdmVVc2VyUHJvZmlsZU1uZy5fX2NvbnRpbnVlTG9hZCgxKX19KX1jYXRjaChiKXt9fWVsc2UgYWN0aXZlVXNlclByb2ZpbGVNbmcuX19jb250aW51ZUxvYWQoMSl9fSxfX2xvYWRGcm9tTG9jYWxEQjpmdW5jdGlvbigpe2lmKG51bGw9PWFjdGl2ZVVzZXJQcm9maWxlTW5nLnVpZCl7aWYoITA9PT1hY3RpdmVVc2VyUHJvZmlsZU1uZy5kaXNhYmxlZClyZXR1cm4hMTt0cnl7d2luZG93Lm9wZW5EYXRhYmFzZSYmCglkYXRhYmFzZS50cmFuc2FjdGlvbihmdW5jdGlvbihhKXthLmV4ZWN1dGVTcWwoIlNFTEVDVCB2YWx1ZSBGUk9NIHVwcm9maWxlIFdIRVJFIG5hbWU9PyIsWyJ1aWQiXSxmdW5jdGlvbihiLGQpezE8PWQucm93cy5sZW5ndGgmJihhY3RpdmVVc2VyUHJvZmlsZU1uZy51aWQ9ZC5yb3dzLml0ZW0oMCkudmFsdWUpfSxmdW5jdGlvbihiLGQpe30pfSl9Y2F0Y2goYSl7fX19LHNldERCQ29va2llOmZ1bmN0aW9uKCl7aWYobnVsbCE9YWN0aXZlVXNlclByb2ZpbGVNbmcudWlkJiYibm9uZSIhPWFjdGl2ZVVzZXJQcm9maWxlTW5nLnVpZCl7aWYoITA9PT1hY3RpdmVVc2VyUHJvZmlsZU1uZy5kaXNhYmxlZClyZXR1cm4hMTt0cnl7aWYod2luZG93Lm9wZW5EYXRhYmFzZSl7dmFyIGE9d2luZG93Lm9wZW5EYXRhYmFzZSgic3FsaXRlX3Vwcm9maWxlIiwiIiwidXByb2ZpbGUiLDEwNDg1NzYpOyJ1bmRlZmluZWQiIT10eXBlb2YgdmFsdWUmJmEudHJhbnNhY3Rpb24oZnVuY3Rpb24oYil7Yi5leGVjdXRlU3FsKCJDUkVBVEUgVEFCTEUgSUYgTk9UIEVYSVNUUyB1cHJvZmlsZShpZCBJTlRFR0VSIE5PVCBOVUxMIFBSSU1BUlkgS0VZIEFVVE9JTkNSRU1FTlQsIHVpZCBURVhUIE5PVCBOVUxMLCB2YWx1ZSBURVhUIE5PVCBOVUxMLCBVTklRVUUgKHVpZCkpIiwKCQlbXSxmdW5jdGlvbihkLGMpe30sZnVuY3Rpb24oZCxjKXt9KTtiLmV4ZWN1dGVTcWwoIklOU0VSVCBPUiBSRVBMQUNFIElOVE8gdXByb2ZpbGUodWlkLCB2YWx1ZSkgVkFMVUVTKD8sID8pIixbInVpZCIsYWN0aXZlVXNlclByb2ZpbGVNbmcudWlkXSxmdW5jdGlvbihkLGMpe30sZnVuY3Rpb24oZCxjKXt9KX0pfX1jYXRjaChiKXt9fX0sX19sb2FkUE5HQ29va2llOmZ1bmN0aW9uKCl7aWYobnVsbD09YWN0aXZlVXNlclByb2ZpbGVNbmcudWlkKXtpZighMD09PWFjdGl2ZVVzZXJQcm9maWxlTW5nLmRpc2FibGVkKXJldHVybiExO3RyeXtpZihkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKS5nZXRDb250ZXh0KXt2YXIgYT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKTthLnN0eWxlLnZpc2liaWxpdHk9ImhpZGRlbiI7YS5zdHlsZS5wb3NpdGlvbj0iYWJzb2x1dGUiO2Eud2lkdGg9MjAwO2EuaGVpZ2h0PTE7dmFyIGI9YS5nZXRDb250ZXh0KCIyZCIpLGQ9bmV3IEltYWdlOwoJCWQuc3R5bGUudmlzaWJpbGl0eT0iaGlkZGVuIjtkLnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSI7ZC5zcmM9Ii9pbWFnZXNfYXBpL2QyY2lnY2FjaGUxLnBuZyI7ZC5vbmVycm9yPWZ1bmN0aW9uKCl7YWN0aXZlVXNlclByb2ZpbGVNbmcuX19jb250aW51ZUxvYWQoMyl9O2Qub25sb2FkPWZ1bmN0aW9uKCl7dHJ5e2IuZHJhd0ltYWdlKGQsMCwwKTtmb3IodmFyIGM9Yi5nZXRJbWFnZURhdGEoMCwwLDIwMCwxKS5kYXRhLGU9IiIsaD0wLGY9Yy5sZW5ndGg7aDxmJiYwIT1jW2hdO2grPTQpe2UrPVN0cmluZy5mcm9tQ2hhckNvZGUoY1toXSk7aWYoMD09Y1toKzFdKWJyZWFrO2UrPVN0cmluZy5mcm9tQ2hhckNvZGUoY1toKzFdKTtpZigwPT1jW2grMl0pYnJlYWs7ZSs9U3RyaW5nLmZyb21DaGFyQ29kZShjW2grMl0pfTA8ZS5sZW5ndGgmJihhY3RpdmVVc2VyUHJvZmlsZU1uZy51aWQ9ZSl9Y2F0Y2gocSl7fWFjdGl2ZVVzZXJQcm9maWxlTW5nLl9fY29udGludWVMb2FkKDMpfX19Y2F0Y2goYyl7fX19LAoJc2V0UE5HQ29va2llOmZ1bmN0aW9uKCl7aWYobnVsbCE9YWN0aXZlVXNlclByb2ZpbGVNbmcudWlkJiYibm9uZSIhPWFjdGl2ZVVzZXJQcm9maWxlTW5nLnVpZCl7aWYoITA9PT1hY3RpdmVVc2VyUHJvZmlsZU1uZy5kaXNhYmxlZClyZXR1cm4hMTt2YXIgYT1uZXcgSW1hZ2U7YS5zdHlsZS52aXNpYmlsaXR5PSJoaWRkZW4iO2Euc3R5bGUucG9zaXRpb249ImFic29sdXRlIjthLnNyYz0iL2ltYWdlc19hcGkvZDJjaWdjYWNoZTEucG5nP3ZhbD0iK2FjdGl2ZVVzZXJQcm9maWxlTW5nLnVpZH19LF9fbG9hZEVUYWdDb29raWU6ZnVuY3Rpb24oKXtpZihudWxsPT1hY3RpdmVVc2VyUHJvZmlsZU1uZy51aWQpe2lmKCEwPT09YWN0aXZlVXNlclByb2ZpbGVNbmcuZGlzYWJsZWQpcmV0dXJuITE7dGhpcy5hamF4TW5nLmFqYXgoe3VybDoiL2ltYWdlc19hcGkvZDJjaWdjYWNoZTIucG5nIix0eXBlOiJHRVQiLHN1Y2Nlc3M6ZnVuY3Rpb24oYSl7YWN0aXZlVXNlclByb2ZpbGVNbmcudWlkPWF9LAoJCWNvbXBsZXRlOmZ1bmN0aW9uKGEsYil7YWN0aXZlVXNlclByb2ZpbGVNbmcuX19jb250aW51ZUxvYWQoMil9fSl9fSxzZXRFVGFnQ29va2llOmZ1bmN0aW9uKCl7aWYobnVsbCE9YWN0aXZlVXNlclByb2ZpbGVNbmcudWlkJiYibm9uZSIhPWFjdGl2ZVVzZXJQcm9maWxlTW5nLnVpZCl7aWYoITA9PT1hY3RpdmVVc2VyUHJvZmlsZU1uZy5kaXNhYmxlZClyZXR1cm4hMTt2YXIgYT1uZXcgSW1hZ2U7YS5zdHlsZS52aXNpYmlsaXR5PSJoaWRkZW4iO2Euc3R5bGUucG9zaXRpb249ImFic29sdXRlIjthLnNyYz0iL2ltYWdlc19hcGkvZDJjaWdjYWNoZTIucG5nP3ZhbD0iK2FjdGl2ZVVzZXJQcm9maWxlTW5nLnVpZH19LF9fbG9hZFVzZXJEYXRhQ29va2llOmZ1bmN0aW9uKCl7aWYobnVsbD09YWN0aXZlVXNlclByb2ZpbGVNbmcudWlkKXtpZighMD09PWFjdGl2ZVVzZXJQcm9maWxlTW5nLmRpc2FibGVkKXJldHVybiExO3RyeXt2YXIgYT10aGlzLmNyZWF0ZUVsZW0oImRpdiIsInVzZXJkYXRhX2VsIiwKCQkxKTthLnN0eWxlLmJlaGF2aW9yPSJ1cmwoI2RlZmF1bHQjdXNlckRhdGEpIjthLmxvYWQoInVpZCIpO2FjdGl2ZVVzZXJQcm9maWxlTW5nLnVpZD1hLmdldEF0dHJpYnV0ZSgidWlkIil9Y2F0Y2goYil7fX19LHNldFVzZXJEYXRhQ29va2llOmZ1bmN0aW9uKCl7aWYobnVsbCE9YWN0aXZlVXNlclByb2ZpbGVNbmcudWlkJiYibm9uZSIhPWFjdGl2ZVVzZXJQcm9maWxlTW5nLnVpZCl7aWYoITA9PT1hY3RpdmVVc2VyUHJvZmlsZU1uZy5kaXNhYmxlZClyZXR1cm4hMTt0cnl7dmFyIGE9dGhpcy5jcmVhdGVFbGVtKCJkaXYiLCJ1c2VyZGF0YV9lbCIsMSk7YS5zdHlsZS5iZWhhdmlvcj0idXJsKCNkZWZhdWx0I3VzZXJEYXRhKSI7YS5zZXRBdHRyaWJ1dGUoInVpZCIsYWN0aXZlVXNlclByb2ZpbGVNbmcudWlkKTthLnNhdmUoInVpZCIpfWNhdGNoKGIpe319fSxfX2xvYWRMb2NhbFN0b3JhZ2VDb29raWU6ZnVuY3Rpb24oKXtpZihudWxsPT1hY3RpdmVVc2VyUHJvZmlsZU1uZy51aWQpe2lmKCEwPT09CgkJYWN0aXZlVXNlclByb2ZpbGVNbmcuZGlzYWJsZWQpcmV0dXJuITE7dHJ5e3dpbmRvdy5sb2NhbFN0b3JhZ2UmJihhY3RpdmVVc2VyUHJvZmlsZU1uZy51aWQ9bG9jYWxTdG9yYWdlLmdldEl0ZW0oInVpZCIpKX1jYXRjaChhKXt9fX0sc2V0TG9jYWxTdG9yYWdlQ29va2llOmZ1bmN0aW9uKCl7aWYobnVsbCE9YWN0aXZlVXNlclByb2ZpbGVNbmcudWlkJiYibm9uZSIhPWFjdGl2ZVVzZXJQcm9maWxlTW5nLnVpZCl7aWYoITA9PT1hY3RpdmVVc2VyUHJvZmlsZU1uZy5kaXNhYmxlZClyZXR1cm4hMTt0cnl7d2luZG93LmxvY2FsU3RvcmFnZSYmbG9jYWxTdG9yYWdlLnNldEl0ZW0oInVpZCIsYWN0aXZlVXNlclByb2ZpbGVNbmcudWlkKX1jYXRjaChhKXt9fX0sX19sb2FkR2xvYmFsU3RvcmFnZUNvb2tpZTpmdW5jdGlvbigpe2lmKG51bGw9PWFjdGl2ZVVzZXJQcm9maWxlTW5nLnVpZCl7aWYoITA9PT1hY3RpdmVVc2VyUHJvZmlsZU1uZy5kaXNhYmxlZClyZXR1cm4hMTt0cnl7aWYod2luZG93Lmdsb2JhbFN0b3JhZ2UpcmV0dXJuIHRoaXMuZ2V0SG9zdCgpLAoJCWV2YWwoImFjdGl2ZVVzZXJQcm9maWxlTW5nLnVpZCA9IGdsb2JhbFN0b3JhZ2VbaG9zdF0udWlkIil9Y2F0Y2goYSl7fX19LHNldEdsb2JhbFN0b3JhZ2VDb29raWU6ZnVuY3Rpb24oKXtpZihudWxsIT1hY3RpdmVVc2VyUHJvZmlsZU1uZy51aWQmJiJub25lIiE9YWN0aXZlVXNlclByb2ZpbGVNbmcudWlkKXtpZighMD09PWFjdGl2ZVVzZXJQcm9maWxlTW5nLmRpc2FibGVkKXJldHVybiExO3RyeXt3aW5kb3cuZ2xvYmFsU3RvcmFnZSYmKHRoaXMuZ2V0SG9zdCgpLGV2YWwoImdsb2JhbFN0b3JhZ2VbaG9zdF0udWlkID0gYWN0aXZlVXNlclByb2ZpbGVNbmcudWlkIikpfWNhdGNoKGEpe319fSxfX2xvYWRTZXNzaW9uU3RvcmFnZUNvb2tpZTpmdW5jdGlvbigpe2lmKG51bGw9PWFjdGl2ZVVzZXJQcm9maWxlTW5nLnVpZCl7aWYoITA9PT1hY3RpdmVVc2VyUHJvZmlsZU1uZy5kaXNhYmxlZClyZXR1cm4hMTt0cnl7d2luZG93LnNlc3Npb25TdG9yYWdlJiYoYWN0aXZlVXNlclByb2ZpbGVNbmcudWlkPQoJCXdpbmRvdy5zZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCJ1aWQiKSl9Y2F0Y2goYSl7fX19LHNldFNlc3Npb25TdG9yYWdlQ29va2llOmZ1bmN0aW9uKCl7aWYobnVsbCE9YWN0aXZlVXNlclByb2ZpbGVNbmcudWlkJiYibm9uZSIhPWFjdGl2ZVVzZXJQcm9maWxlTW5nLnVpZCl7aWYoITA9PT1hY3RpdmVVc2VyUHJvZmlsZU1uZy5kaXNhYmxlZClyZXR1cm4hMTt0cnl7d2luZG93LnNlc3Npb25TdG9yYWdlJiZ3aW5kb3cuc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSgidWlkIixhY3RpdmVVc2VyUHJvZmlsZU1uZy51aWQpfWNhdGNoKGEpe319fSxyZWdpc3RlclBhZ2VWaWV3OmZ1bmN0aW9uKCl7aWYoITA9PT1hY3RpdmVVc2VyUHJvZmlsZU1uZy5kaXNhYmxlZClyZXR1cm4hMDtudWxsPT1hY3RpdmVVc2VyUHJvZmlsZU1uZy5yZWdpc3RlcmVkUGFnZVZpZXdzJiYoYWN0aXZlVXNlclByb2ZpbGVNbmcucmVnaXN0ZXJlZFBhZ2VWaWV3cz1bXSk7Zm9yKHZhciBhPTA7YTxhY3RpdmVVc2VyUHJvZmlsZU1uZy5yZWdpc3RlcmVkUGFnZVZpZXdzLmxlbmd0aDthKyspaWYod2luZG93LmxvY2F0aW9uLmhyZWY9PQoJCWFjdGl2ZVVzZXJQcm9maWxlTW5nLnJlZ2lzdGVyZWRQYWdlVmlld3NbYV0pcmV0dXJuITE7YWN0aXZlVXNlclByb2ZpbGVNbmcucmVnaXN0ZXJlZFBhZ2VWaWV3cy5wdXNoKHdpbmRvdy5sb2NhdGlvbi5ocmVmKTtyZXR1cm4hMH0scmVnaXN0ZXJQYWdlVmlld0V2ZW50OmZ1bmN0aW9uKGEsYixkKXtpZighMD09PWFjdGl2ZVVzZXJQcm9maWxlTW5nLmRpc2FibGVkKXJldHVybiEwO2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgZHx8bnVsbD09ZClkPSIiO2E9YSsifHx8IitiKyJ8fHwiK2Q7bnVsbD09YWN0aXZlVXNlclByb2ZpbGVNbmcucmVnaXN0ZXJlZEV2ZW50cyYmKGFjdGl2ZVVzZXJQcm9maWxlTW5nLnJlZ2lzdGVyZWRFdmVudHM9W10pO2ZvcihiPTA7YjxhY3RpdmVVc2VyUHJvZmlsZU1uZy5yZWdpc3RlcmVkRXZlbnRzLmxlbmd0aDtiKyspaWYoYT09YWN0aXZlVXNlclByb2ZpbGVNbmcucmVnaXN0ZXJlZEV2ZW50c1tiXSlyZXR1cm4hMTthY3RpdmVVc2VyUHJvZmlsZU1uZy5yZWdpc3RlcmVkRXZlbnRzLnB1c2goYSk7CgkJcmV0dXJuITB9LGxvZ1BhZ2VWaWV3RXZlbnQ6ZnVuY3Rpb24oYSxiLGQpe2lmKCFhY3RpdmVVc2VyUHJvZmlsZU1uZy5faXNCb3QoKSl7aWYoITA9PT1hY3RpdmVVc2VyUHJvZmlsZU1uZy5kaXNhYmxlZClyZXR1cm4hMTtpZihhY3RpdmVVc2VyUHJvZmlsZU1uZy5yZWdpc3RlclBhZ2VWaWV3RXZlbnQoYSxiKSl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBkfHxudWxsPT1kKWQ9IiI7aWYobnVsbD09YWN0aXZlVXNlclByb2ZpbGVNbmcuc2Vzc2lvbmlkfHwwPT1hY3RpdmVVc2VyUHJvZmlsZU1uZy5zZXNzaW9uaWQpYWN0aXZlVXNlclByb2ZpbGVNbmcucmVnaXN0ZXJTZXNzaW9uQ2FsbGJhY2soZnVuY3Rpb24oKXthY3RpdmVVc2VyUHJvZmlsZU1uZy5sb2dQYWdlVmlld0V2ZW50KGEsYixkKX0pO2Vsc2V7dmFyIGM9MDtpZigidW5kZWZpbmVkIj09dHlwZW9mIHdpbmRvdy5sYXN0Vmlld0lEKXt2YXIgZT1hY3RpdmVVc2VyUHJvZmlsZU1uZy5jb29raWVNbmcucmVhZENvb2tpZVZhbHVlKCJ1dmlldyIpOwoJCW51bGwhPWUmJihjPWUpfWVsc2UgYz13aW5kb3cubGFzdFBhZ2VWaWV3SUQ7InVuZGVmaW5lZCI9PXR5cGVvZiBjfHxudWxsPT1jfHwwPT1jP2NvbnNvbGUmJmNvbnNvbGUubG9nJiZjb25zb2xlLmxvZygiVW5hYmxlIHRvIGlkZW50aWZ5IGxhc3QgdmlldyBpZCIpOihlPWFjdGl2ZVVzZXJQcm9maWxlTW5nLmdldFN0YXRzVVJJKCksYz17c2lkOmFjdGl2ZVVzZXJQcm9maWxlTW5nLmdldFNlc3Npb25JRCgpLGFjdGlvbjoiZXZlbnQiLHZpZXdpZDpjLGV2ZW50OmEsZWNhdGVnb3J5OmIsYWRkZWRJbmZvOiJ1bmRlZmluZWQiIT10eXBlb2YgZD9kOiIifSxhY3RpdmVVc2VyUHJvZmlsZU1uZy5hamF4TW5nLmFqYXgoe3VybDplKyJzZXJ2aWNlL3Nlc3Npb25NbmcucGhwIix0eXBlOiJQT1NUIixkYXRhOmN9KSl9fX19LGxvZ1BhZ2VWaWV3RXg6ZnVuY3Rpb24oKXt0cnl7aWYoIWFjdGl2ZVVzZXJQcm9maWxlTW5nLl9pc0JvdCgpJiZhY3RpdmVVc2VyUHJvZmlsZU1uZy5yZWdpc3RlclBhZ2VWaWV3KCkpe2lmKCEwPT09CgkJYWN0aXZlVXNlclByb2ZpbGVNbmcuZGlzYWJsZWQpcmV0dXJuITE7dmFyIGE9bnVsbDsidW5kZWZpbmVkIiE9dHlwZW9mIGdldFVybFZhcnMmJihhPWdldFVybFZhcnMoKSk7Z2V0Q3VzdG9tVlJCPWZ1bmN0aW9uKGssdyl7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBjdXN0b21fdmFyaWFibGVzJiZudWxsIT1jdXN0b21fdmFyaWFibGVzKWZvcih2YXIgdSBpbiBjdXN0b21fdmFyaWFibGVzKXtpZih1Lm5hbWU9PWspcmV0dXJuIHUudmFsdWV9ZWxzZSByZXR1cm4gd307Z2V0Q0tWYWx1ZT1mdW5jdGlvbihrLHcpe3ZhciB1PWdldEN1c3RvbVZSQihrLG51bGwpO2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgdSYmbnVsbCE9dSlyZXR1cm4gdTt1PWFjdGl2ZVVzZXJQcm9maWxlTW5nLmNvb2tpZU1uZy5yZWFkQ29va2llVmFsdWUoayk7cmV0dXJuInVuZGVmaW5lZCI9PXR5cGVvZiB1fHxudWxsPT11P251bGw9PWF8fCJ1bmRlZmluZWQiPT10eXBlb2YgYVtrXT8idW5kZWZpbmVkIj09dHlwZW9mIHc\/CgkJIiI6dzphW2tdOnV9O2dldFVSTFZhbHVlPWZ1bmN0aW9uKGssdyl7az1rLnJlcGxhY2UoL1tcW10vLCJcXFsiKS5yZXBsYWNlKC9bXF1dLywiXFxdIik7az0obmV3IFJlZ0V4cCgiW1xcPyZdIitrKyI9KFteJiNdKikiKSkuZXhlYyh3aW5kb3cubG9jYXRpb24uaHJlZik7az1udWxsPT1rP251bGw6a1sxXTtyZXR1cm4idW5kZWZpbmVkIj09dHlwZW9mIGt8fG51bGw9PWt8fDA9PWsudG9TdHJpbmcoKS5sZW5ndGg\/dzprfTt2YXIgYj0iIixkPTAsYz0iRlJFTkNIIixlPWRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJzY3JpcHQiKSxoPWZ1bmN0aW9uKGspe3ZhciB3PXttYWtlOiIiLG1vZGVsOiIiLHllYXI6IiIscHJpY2U6MCxzaXRlaWQ6MCxkZWFsZXJpZDowLGxhbmd1YWdlOiJGUkVOQ0gifTtpZighaylyZXR1cm4gdztrPWsuc3BsaXQoL1s7Jl0vKTtmb3IodmFyIHU9MDt1PGsubGVuZ3RoO3UrKyl7dmFyIEI9a1t1XS5zcGxpdCgiPSIpO2lmKEImJjI9PUIubGVuZ3RoKXt2YXIgRT0KCQl1bmVzY2FwZShCWzBdKTtCPXVuZXNjYXBlKEJbMV0pO0I9Qi5yZXBsYWNlKC9cKy9nLCIgIik7d1tFXT1CfX1yZXR1cm4gd307aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBlJiZudWxsIT1lKWZvcih2YXIgZj0wO2Y8ZS5sZW5ndGg7ZisrKXt2YXIgcT1lW2ZdO2lmKC0xIT1xLnNyYy5pbmRleE9mKCIvdXBsaWdodC5qcz8iKSl7dmFyIHA9cS5zcmMucmVwbGFjZSgvXlteXD9dK1w\/Py8sIiIpLHk9aChwKTt2YXIgbD15Lm1ha2U7dmFyIEM9eS5tb2RlbDtiPXkueWVhcjt2YXIgQT15LnNpdGVpZDt2YXIgej15LmRlYWxlcmlkO2Q9eS5wcmljZTtjPXkubGFuZ3VhZ2U7YnJlYWt9fXZhciBtPWFjdGl2ZVVzZXJQcm9maWxlTW5nLmdldFNlc3Npb25JRCgpO2U9MDtpZigidW5kZWZpbmVkIj09bXx8MD09bSl7bT0wO3ZhciByPWFjdGl2ZVVzZXJQcm9maWxlTW5nLmNvb2tpZU1uZy5yZWFkQ29va2llVmFsdWUoInVzaWRfdG1wIik7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiByfHxudWxsPT1yKXt2YXIgeD0KCQluZXcgRGF0ZTt4LnNldFRpbWUoeC5nZXRUaW1lKCkrNzJFNSk7dmFyIGc9IjsgZXhwaXJlcz0iK3gudG9HTVRTdHJpbmcoKTtkb2N1bWVudC5jb29raWU9InVzaWRfdG1wPTEiK2crIjsgcGF0aD0vIn1lbHNlIGU9ITB9dmFyIG49d2luZG93LmxvY2F0aW9uLmhyZWY7aWYoLTE8bi5pbmRleE9mKCJzdGVwPXJlc3VtZSIpKXt2YXIgdD1hY3RpdmVVc2VyUHJvZmlsZU1uZy5jb29raWVNbmcucmVhZENvb2tpZVZhbHVlKCJzZXNzaWQiKTtuKz0iJnNlc3NpZD0iKygidW5kZWZpbmVkIiE9dHlwZW9mIHR8fG51bGwhPXQ\/dDoiTlVMTCIpfXZhciB2PXtzaWQ6bSx1dWlkOndpbmRvdy5hY3RpdmVQcm9maWxlSUQsc2l0ZWlkOkEsZGVhbGVyaWQ6eix1dG1Tb3VyY2U6Z2V0VVJMVmFsdWUoInV0bV9zb3VyY2UiLCIiKSx1dG1DYW1wYWlnbjpnZXRVUkxWYWx1ZSgidXRtX2NhbXBhaWduIiwib3JnYW5pYyIpLHV0bUtleXdvcmQ6Z2V0Q0tWYWx1ZSgidXRtX2tleXdvcmQiKSx1dG1MYW5kaW5nOmdldENLVmFsdWUoInV0bV9sYW5kaW5nIiksCgkJdXRtU291cmNlUmV0YXJnZXRpbmc6Z2V0Q0tWYWx1ZSgidXRtX3NvdXJjZV9yZXRhcmdldGluZyIpLHV0bUNhbXBhaWduUmV0YXJnZXRpbmc6Z2V0Q0tWYWx1ZSgidXRtX2NhbXBhaWduX3JldGFyZ2V0aW5nIiksbWFrZTpsLG1vZGVsOkMseWVhcjppc05hTihiKT8obmV3IERhdGUpLmdldEZ1bGxZZWFyKCk6YixsYW5ndWFnZTpjLHBhZ2U6InVuZGVmaW5lZCI9PXR5cGVvZiB3aW5kb3cuYWN0aXZlUGFnZT8iIjp3aW5kb3cuYWN0aXZlUGFnZSxwcmljZTpkLHNsb29rdXA6ZSxocmVmOm59LEQ9YWN0aXZlVXNlclByb2ZpbGVNbmcuZ2V0U3RhdHNVUkkoKTt2PUpTT04uc3RyaW5naWZ5KHYpO3Y9di5yZXBsYWNlQWxsKCIvIiwiXFwvIik7dGhpcy5hamF4TW5nLmFqYXgoe3VybDpEKyJzZXJ2aWNlL3Nlc3Npb25NbmcucGhwIixkYXRhOnYsZG9uZTpmdW5jdGlvbihrKXt0cnl7aWYoInN0cmluZyI9PXR5cGVvZiBrJiYoaz1KU09OLnBhcnNlKGspKSwidW5kZWZpbmVkIiE9dHlwZW9mIGsmJgoJCW51bGwhPWsmJihrLmNvbnN0cnVjdG9yPT1bXS5jb25zdHJ1Y3Rvcnx8ay5jb25zdHJ1Y3Rvcj09e30uY29uc3RydWN0b3IpKXttPWsuc2Vzc2lvbmlkO2xhc3RWaWV3SUQ9ay52aWV3aWQ7YWN0aXZlVXNlclByb2ZpbGVNbmcuX2xvYWRQcm9wZXJ0aWVzKGsucHJvcGVydGllcyk7d2luZG93LmFjdGl2ZVNlc3Npb25JRD1tO3dpbmRvdy5sYXN0UGFnZVZpZXdJRD1sYXN0Vmlld0lEO2FjdGl2ZVVzZXJQcm9maWxlTW5nLnNlc3Npb25pZD1tO3ZhciB3PW5ldyBEYXRlO3cuc2V0VGltZSh3LmdldFRpbWUoKSs3MkU1KTt2YXIgdT0iOyBleHBpcmVzPSIrdy50b0dNVFN0cmluZygpO2RvY3VtZW50LmNvb2tpZT0idXNpZD0iK20rdSsiOyBwYXRoPS8iO2RvY3VtZW50LmNvb2tpZT0idXZpZXc9IitsYXN0Vmlld0lEK3UrIjsgcGF0aD0vIjthY3RpdmVVc2VyUHJvZmlsZU1uZy5fZGVsZXRlQ29va2llKCJ1c2lkX3RtcCIpO2FjdGl2ZVVzZXJQcm9maWxlTW5nLl9fbm90aWZ5U2Vzc2lvbklEKCl9fWNhdGNoKEIpe310cnl7bnVsbCE9CgkJc2l0ZVdlYnNvY2tldExpc3RlbmVyLnNpdGVpZCYmc2l0ZVdlYnNvY2tldExpc3RlbmVyLmNvbm5lY3QoKX1jYXRjaChCKXt9fX0pfX1jYXRjaChrKXtjb25zb2xlJiZjb25zb2xlLmxvZyYmY29uc29sZS5sb2coIlVuYWJsZSB0byBzdGF0IHBhZ2UgZHVlIHRvIGVycm9yOiAiK2subWVzc2FnZSl9fSxsb2dQYWdlVmlldzpmdW5jdGlvbigpe3RyeXtpZighYWN0aXZlVXNlclByb2ZpbGVNbmcuX2lzQm90KCkmJmFjdGl2ZVVzZXJQcm9maWxlTW5nLnJlZ2lzdGVyUGFnZVZpZXcoKSl7aWYoITA9PT1hY3RpdmVVc2VyUHJvZmlsZU1uZy5kaXNhYmxlZClyZXR1cm4hMTtpZighMT09PWFjdGl2ZVVzZXJQcm9maWxlTW5nLmpxdWVyeUFjdGl2ZSlyZXR1cm4gdGhpcy5sb2dQYWdlVmlld0V4KCk7dmFyIGE9ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInNjcmlwdCIpO2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgYSYmbnVsbCE9YSlmb3IodmFyIGI9MDtiPGEubGVuZ3RoO2IrKylpZigtMSE9CgkJYVtiXS5zcmMuaW5kZXhPZigiL3VwbGlnaHQuanM\/IikpcmV0dXJuIHRoaXMubG9nUGFnZVZpZXdFeCgpO3ZhciBkPW51bGw7InVuZGVmaW5lZCIhPXR5cGVvZiBnZXRVcmxWYXJzJiYoZD1nZXRVcmxWYXJzKCkpO2dldEN1c3RvbVZSQj1mdW5jdGlvbihnLG4pe2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgY3VzdG9tX3ZhcmlhYmxlcyYmbnVsbCE9Y3VzdG9tX3ZhcmlhYmxlcylmb3IodmFyIHQgaW4gY3VzdG9tX3ZhcmlhYmxlcyl7aWYodC5uYW1lPT1nKXJldHVybiB0LnZhbHVlfWVsc2UgcmV0dXJuIG59O2dldENLVmFsdWU9ZnVuY3Rpb24oZyxuKXt2YXIgdD1udWxsO3RyeXt2YXIgdj1nZXRDdXN0b21WUkIoZyxudWxsKTsidW5kZWZpbmVkIiE9dHlwZW9mIHYmJm51bGwhPXYmJih0PXYpO2lmKG51bGw9PXQmJih0PWFjdGl2ZVVzZXJQcm9maWxlTW5nLmNvb2tpZU1uZy5yZWFkQ29va2llVmFsdWUoZyksbnVsbD09dCkpe2lmKG51bGw9PWR8fCJ1bmRlZmluZWQiPT10eXBlb2YgZFtnXSlyZXR1cm4idW5kZWZpbmVkIj09Cgl0eXBlb2Ygbj8iIjpuO3Q9ZFtnXX19Y2F0Y2goRCl7Y29uc29sZSYmY29uc29sZS5sb2cmJmNvbnNvbGUubG9nKCJVbmV4cGVjdGVkIGVycm9yIHJldHJpZXZpbmcgY2tWYWx1ZSAtLSAlcyIsRC5tZXNzYWdlKX1yZXR1cm4gdH07Z2V0VVJMVmFsdWU9ZnVuY3Rpb24oZyxuKXtnPWcucmVwbGFjZSgvW1xbXS8sIlxcWyIpLnJlcGxhY2UoL1tcXV0vLCJcXF0iKTtnPShuZXcgUmVnRXhwKCJbXFw\/Jl0iK2crIj0oW14mI10qKSIpKS5leGVjKHdpbmRvdy5sb2NhdGlvbi5ocmVmKTtnPW51bGw9PWc\/bnVsbDpnWzFdO3JldHVybiJ1bmRlZmluZWQiPT10eXBlb2YgZ3x8bnVsbD09Z3x8MD09Zy50b1N0cmluZygpLmxlbmd0aD9uOmd9O2E9ZnVuY3Rpb24oKXtpZighMT09PWFjdGl2ZVVzZXJQcm9maWxlTW5nLmpxdWVyeUFjdGl2ZSlyZXR1cm5bXTt2YXIgZz1bXTt0cnl7dmFyIG49W10sdD1mdW5jdGlvbihrLHcpe3JldHVybiJ1bmRlZmluZWQiIT10eXBlb2YgJCgiIyIraykuYXR0cigiaWQiKSYmCgkoaz0kKCIjIitrKS52YWwoKSwic3RyaW5nIj09dHlwZW9mIGsmJjA8ay5sZW5ndGgmJi0xPT1rLmluZGV4T2YoIiMjIikpP2s6d307bi5wdXNoKCJwb3B1cCIpO24ucHVzaCgicGhvbmUiKTtuLnB1c2goImxhc3R2aWV3ZWQiKTtuLnB1c2goImV4cHJlc3NjYXIiKTtmb3IodmFyIHY9MDt2PG4ubGVuZ3RoO3YrKyl7dmFyIEQ9dChuW3ZdKyJtYWtlIixudWxsKTtpZihudWxsIT1EKXtnLnB1c2goRCk7Zy5wdXNoKHQoblt2XSsibW9kZWwiLG51bGwpKTtnLnB1c2godChuW3ZdKyJ5ZWFyIixudWxsKSk7YnJlYWt9fX1jYXRjaChrKXtnPVtdLGcucHVzaCgiIiksZy5wdXNoKCIiKSxnLnB1c2goIiIpfTA9PWcubGVuZ3RoJiZnLnB1c2goIiIpOzE9PWcubGVuZ3RoJiZnLnB1c2goIiIpOzI9PWcubGVuZ3RoJiZnLnB1c2goIiIpO3JldHVybiBnfTt2YXIgYz1iPSIiLGU9IiI7dHJ5e3ZhciBoPWEoKTtiPTA8aC5sZW5ndGg\/aFswXTpiO2M9MTxoLmxlbmd0aD9oWzFdOmM7ZT0yPGgubGVuZ3RoPwoJCWhbMl06ZX1jYXRjaChnKXtlPWM9Yj0iIn10cnl7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBzZWFyY2hDcml0ZXJpYSYmbnVsbCE9c2VhcmNoQ3JpdGVyaWEpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgYnx8bnVsbD09Ynx8MD09Yi5sZW5ndGgpYj0tMT09c2VhcmNoQ3JpdGVyaWEubWFrZT8iIjpzZWFyY2hDcml0ZXJpYS5tYWtlO2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgY3x8bnVsbD09Y3x8MD09Yy5sZW5ndGgpYz0tMT09c2VhcmNoQ3JpdGVyaWEubW9kZWw\/IiI6c2VhcmNoQ3JpdGVyaWEubW9kZWw7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBlfHxudWxsPT1lfHwwPT1lLmxlbmd0aCllPS0xPT1zZWFyY2hDcml0ZXJpYS55ZWFyPyIiOnNlYXJjaENyaXRlcmlhLnllYXJ9aWYobnVsbD09Ynx8MD09Yi5sZW5ndGgpInVuZGVmaW5lZCIhPXR5cGVvZiBtYWtlJiZudWxsIT1tYWtlJiYwPG1ha2UubGVuZ3RoJiYiMCIhPW1ha2U\/Yj1tYWtlOihiPSQoIiNwb3B1cG1ha2UiKS52YWwoKSwidW5kZWZpbmVkIj09Cgl0eXBlb2YgYiYmKGI9JCgiI2FjdGl2ZU1ha2UiKS52YWwoKSksInVuZGVmaW5lZCI9PXR5cGVvZiBiJiYoYj0kKCIjY2FyTWFrZSIpLnZhbCgpKSwidW5kZWZpbmVkIj09dHlwZW9mIGImJihiPSQoJ2lucHV0W25hbWU9Im1ha2UiXScpLnZhbCgpKSwidW5kZWZpbmVkIj09dHlwZW9mIGImJihiPWdldENLVmFsdWUoIm1ha2UiLCIiKSkpO2lmKG51bGw9PWN8fDA9PWMubGVuZ3RoKSJ1bmRlZmluZWQiIT10eXBlb2YgbW9kZWwmJm51bGwhPW1vZGVsJiYwPG1vZGVsLmxlbmd0aCYmIjAiIT1tb2RlbD9jPW1vZGVsOihjPSQoIiNwb3B1cG1vZGVsIikudmFsKCksInVuZGVmaW5lZCI9PXR5cGVvZiBjJiYoYz0kKCIjYWN0aXZlTW9kZWwiKS52YWwoKSksInVuZGVmaW5lZCI9PXR5cGVvZiBjJiYoYz0kKCIjY2FyTW9kZWwiKS52YWwoKSksInVuZGVmaW5lZCI9PXR5cGVvZiBjJiYoYz0kKCdpbnB1dFtuYW1lPSJtb2RlbCJdJykudmFsKCkpLCJ1bmRlZmluZWQiPT10eXBlb2YgYyYmKGM9Z2V0Q0tWYWx1ZSgibW9kZWwiLAoJCSIiKSkpO2lmKG51bGw9PWV8fDA9PWUubGVuZ3RoKSJ1bmRlZmluZWQiIT10eXBlb2YgeWVhciYmbnVsbCE9eWVhciYmIWlzTmFOKHllYXIpJiYwPHllYXIubGVuZ3RoJiYiMCIhPXllYXI\/ZT15ZWFyOihlPSQoIiNwb3B1cHllYXIiKS52YWwoKSwidW5kZWZpbmVkIj09dHlwZW9mIGUmJihlPSQoIiNhY3RpdmVZZWFyIikudmFsKCkpLCJ1bmRlZmluZWQiPT10eXBlb2YgZSYmKGU9JCgiI2NhclllYXIiKS52YWwoKSksInVuZGVmaW5lZCI9PXR5cGVvZiBlJiYoZT0kKCIjeWVhciIpLnZhbCgpKSwidW5kZWZpbmVkIj09dHlwZW9mIGUmJihlPSQoJ2lucHV0W25hbWU9InltYXhUZXh0Il0nKS52YWwoKSksInVuZGVmaW5lZCI9PXR5cGVvZiBlJiYoZT0kKCdpbnB1dFtuYW1lPSJ5bWluVGV4dCJdJykudmFsKCkpLCJ1bmRlZmluZWQiPT10eXBlb2YgZSYmKGU9Z2V0Q0tWYWx1ZSgieWVhciIsKG5ldyBEYXRlKS5nZXRGdWxsWWVhcigpKSkpfWNhdGNoKGcpe2NvbnNvbGUmJmNvbnNvbGUubG9nJiYKCWNvbnNvbGUubG9nKCJVbmV4cGVjdGVkIGVycm9yIGlkZW50aWZ5aW5nIG1ha2UtbW9kZWwteWVhcjogIitnLm1lc3NhZ2UpLG51bGw9PWImJihiPSIiKSxudWxsPT1jJiYoYz0iIiksbnVsbD09ZSYmKGU9IiIpfXZhciBmPTA7aWYoITEhPT1hY3RpdmVVc2VyUHJvZmlsZU1uZy5qcXVlcnlBY3RpdmUpe2lmKCJVU0VEQ0FSUyI9PXdpbmRvdy5hY3RpdmVQYWdlKXt2YXIgcT0wOyQoImRpdi5ib3gxNzAgZGl2Lm1haW5fcGljYm94IGRpdi5ib3gyX2RldGFpbHNfbWlkIGRpdi5ib3gyX2RldGFpbHNfdGV4dCBzcGFuIikuZWFjaChmdW5jdGlvbigpe3ZhciBnPSQodGhpcykudGV4dCgpOy0xIT1nLmluZGV4T2YoIiQiKSYmKHErKyxmKz1wYXJzZUludChnLnJlcGxhY2UoIiQiLCIiKS5yZXBsYWNlKCIsIiwiIikpKX0pO2Y9MDxxP2YvcTowO2lzTmFOKGYpJiYoZj0wKX0wIT1mJiYhaXNOYU4oZil8fCJ1bmRlZmluZWQiPT10eXBlb2YgJCgiI2N1cnJlbnRDYXJQcmljZSIpLmF0dHIoImlkIil8fAoJKGY9cGFyc2VJbnQoJCgiI2N1cnJlbnRDYXJQcmljZSIpLnZhbCgpLnJlcGxhY2UoIiQiLCIiKS5yZXBsYWNlKCIsIiwiIikpKTswIT1mJiYhaXNOYU4oZil8fCJ1bmRlZmluZWQiPT10eXBlb2YgJCgiI2NhcnByaWNlIikuYXR0cigiaWQiKXx8KGY9cGFyc2VJbnQoJCgiI2NhcnByaWNlIikudmFsKCkucmVwbGFjZSgiJCIsIiIpLnJlcGxhY2UoIiwiLCIiKSkpOzAhPWYmJiFpc05hTihmKXx8InVuZGVmaW5lZCI9PXR5cGVvZiAkKCIjY2FyUHJpY2UiKS5hdHRyKCJpZCIpfHwoZj1wYXJzZUludCgkKCIjY2FyUHJpY2UiKS52YWwoKS5yZXBsYWNlKCIkIiwiIikucmVwbGFjZSgiLCIsIiIpKSk7MCE9ZiYmIWlzTmFOKGYpfHwidW5kZWZpbmVkIj09dHlwZW9mICQoIiNleHByZXNzY2FycHJpY2UiKS5hdHRyKCJpZCIpfHwoZj1wYXJzZUludCgkKCIjZXhwcmVzc2NhcnByaWNlIikudmFsKCkucmVwbGFjZSgiJCIsIiIpLnJlcGxhY2UoIiwiLCIiKSkpOzAhPWYmJiFpc05hTihmKXx8InVuZGVmaW5lZCI9PQoJdHlwZW9mICQoIiNjYXJwcm9vZmNhcnByaWNlIikuYXR0cigiaWQiKXx8KGY9cGFyc2VJbnQoJCgiI2NhcnByb29mY2FycHJpY2UiKS52YWwoKS5yZXBsYWNlKCIkIiwiIikucmVwbGFjZSgiLCIsIiIpKSk7MCE9ZiYmIWlzTmFOKGYpfHwidW5kZWZpbmVkIj09dHlwZW9mICQoIiNzZWFyY2hSZXN1bHRzQXZnUHJpY2UiKS5hdHRyKCJpZCIpfHwoZj1wYXJzZUludCgkKCIjc2VhcmNoUmVzdWx0c0F2Z1ByaWNlIikudmFsKCkucmVwbGFjZSgiJCIsIiIpLnJlcGxhY2UoIiwiLCIiKSkpOzAhPWYmJiFpc05hTihmKXx8InVuZGVmaW5lZCI9PXR5cGVvZiAkKCdpbnB1dFtuYW1lPSJwbWluIl0nKS5hdHRyKCJpZCIpfHwoZj1wYXJzZUludCgkKCdpbnB1dFtuYW1lPSJwbWluIl0nKS52YWwoKS5yZXBsYWNlKCIkIiwiIikucmVwbGFjZSgiLCIsIiIpKSk7MCE9ZiYmIWlzTmFOKGYpfHwidW5kZWZpbmVkIj09dHlwZW9mICQoJ2lucHV0W25hbWU9InBtYXgiXScpLmF0dHIoImlkIil8fChmPXBhcnNlSW50KCQoJ2lucHV0W25hbWU9InBtYXgiXScpLnZhbCgpLnJlcGxhY2UoIiQiLAoJCSIiKS5yZXBsYWNlKCIsIiwiIikpKTswIT1mJiYhaXNOYU4oZil8fCJ1bmRlZmluZWQiPT10eXBlb2YgJCgiI2NhclByaWNlIikuYXR0cigiaWQiKXx8KGY9JCgiI2NhclByaWNlIikuaGFzQ2xhc3MoImJveDJfZGV0YWlsc190ZXh0MjUiKT9wYXJzZUludCgkKCIjY2FyUHJpY2UiKS5jaGlsZHJlbigiOmZpcnN0IikudGV4dCgpLnJlcGxhY2UoIiQiLCIiKS5yZXBsYWNlKCIsIiwiIikpOnBhcnNlSW50KCQoIiNjYXJQcmljZSIpLnRleHQoKS5yZXBsYWNlKCIkIiwiIikucmVwbGFjZSgiLCIsIiIpKSk7aXNOYU4oZikmJihmPTApO3ZhciBwPTAseT0wOyJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93LmFjdGl2ZVNpdGVJRCYmbnVsbCE9d2luZG93LmFjdGl2ZVNpdGVJRCYmMCE9d2luZG93LmFjdGl2ZVNpdGVJRD9wPXdpbmRvdy5hY3RpdmVTaXRlSUQ6KHA9JCgiI3NpdGVJRCIpLnZhbCgpLCJ1bmRlZmluZWQiPT10eXBlb2YgcCYmKHA9JCgiI3RvcHNpdGVpZCIpLnZhbCgpKSwidW5kZWZpbmVkIj09Cgl0eXBlb2YgcCYmKHA9MCkpOyJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93LmFjdGl2ZURlYWxlcklEJiYoeT13aW5kb3cuYWN0aXZlU2l0ZUlEKTt2YXIgbD1hY3RpdmVVc2VyUHJvZmlsZU1uZy5nZXRTZXNzaW9uSUQoKSxDPTA7aWYoInVuZGVmaW5lZCI9PWx8fDA9PWx8fCIwIj09bClpZihsPTAsInVuZGVmaW5lZCI9PXR5cGVvZiAkLmNvb2tpZSgidXNpZF90bXAiKSl7dmFyIEE9bmV3IERhdGU7QS5zZXRUaW1lKEEuZ2V0VGltZSgpKzcyRTUpO3ZhciB6PSI7IGV4cGlyZXM9IitBLnRvR01UU3RyaW5nKCk7ZG9jdW1lbnQuY29va2llPSJ1c2lkX3RtcD0xIit6KyI7IHBhdGg9LyJ9ZWxzZSBDPSEwO3ZhciBtPXdpbmRvdy5sb2NhdGlvbi5ocmVmOy0xPG0uaW5kZXhPZigic3RlcD1yZXN1bWUiKSYmKG0rPSImc2Vzc2lkPSIrKCJ1bmRlZmluZWQiIT10eXBlb2YgJC5jb29raWUoInNlc3NpZCIpPyQuY29va2llKCJzZXNzaWQiKToiTlVMTCIpKX12YXIgcj17c2lkOmwsdXVpZDphY3RpdmVVc2VyUHJvZmlsZU1uZy5nZXRBY3RpdmVQcm9maWxlaWQoKSwKCQlzaXRlaWQ6cCxkZWFsZXJpZDp5LHV0bVNvdXJjZTpnZXRVUkxWYWx1ZSgidXRtX3NvdXJjZSIsIiIpLHV0bUNhbXBhaWduOmdldFVSTFZhbHVlKCJ1dG1fY2FtcGFpZ24iLCJvcmdhbmljIiksdXRtS2V5d29yZDpnZXRDS1ZhbHVlKCJ1dG1fa2V5d29yZCIpLHV0bUxhbmRpbmc6Z2V0Q0tWYWx1ZSgidXRtX2xhbmRpbmciKSx1dG1Tb3VyY2VSZXRhcmdldGluZzpnZXRDS1ZhbHVlKCJ1dG1fc291cmNlX3JldGFyZ2V0aW5nIiksdXRtQ2FtcGFpZ25SZXRhcmdldGluZzpnZXRDS1ZhbHVlKCJ1dG1fY2FtcGFpZ25fcmV0YXJnZXRpbmciKSxtYWtlOmIsbW9kZWw6Yyx5ZWFyOmlzTmFOKGUpPyhuZXcgRGF0ZSkuZ2V0RnVsbFllYXIoKTplLGxhbmd1YWdlOiQoIiNhY3RpdmVzaXRlbGFuZ3VhZ2UiKS52YWwoKSxwYWdlOiJ1bmRlZmluZWQiPT10eXBlb2Ygd2luZG93LmFjdGl2ZVBhZ2U\/IiI6d2luZG93LmFjdGl2ZVBhZ2UscHJpY2U6ZixzbG9va3VwOkMsaHJlZjptfSx4PWFjdGl2ZVVzZXJQcm9maWxlTW5nLmdldFN0YXRzVVJJKCk7CgkJcj1KU09OLnN0cmluZ2lmeShyKTtyPXIucmVwbGFjZUFsbCgiLyIsIlxcLyIpO3RoaXMuYWpheE1uZy5hamF4KHt0eXBlOiJQT1NUIix1cmw6eCsic2VydmljZS9zZXNzaW9uTW5nLnBocCIsY29udGVudFR5cGU6ImFwcGxpY2F0aW9uL2pzb247IGNoYXJzZXQ9dXRmLTgiLGRhdGE6cixkb25lOmZ1bmN0aW9uKGcpeyJzdHJpbmciPT10eXBlb2YgZyYmKGc9SlNPTi5wYXJzZShnKSk7InVuZGVmaW5lZCI9PXR5cGVvZiBnfHxudWxsPT1nfHxnLmNvbnN0cnVjdG9yIT1bXS5jb25zdHJ1Y3RvciYmZy5jb25zdHJ1Y3RvciE9e30uY29uc3RydWN0b3J8fChsPWcuc2Vzc2lvbmlkLGxhc3RWaWV3SUQ9Zy52aWV3aWQsYWN0aXZlVXNlclByb2ZpbGVNbmcuX2xvYWRQcm9wZXJ0aWVzKGcucHJvcGVydGllcyksd2luZG93LmFjdGl2ZVNlc3Npb25JRD1sLHdpbmRvdy5sYXN0UGFnZVZpZXdJRD1sYXN0Vmlld0lELGFjdGl2ZVVzZXJQcm9maWxlTW5nLnNlc3Npb25pZD1sLGFjdGl2ZVVzZXJQcm9maWxlTW5nLmNvb2tpZU1uZy5zZXRDb29raWVWYWx1ZSgidXNpZCIsCgkJCQlsLCIvIiwyKSxhY3RpdmVVc2VyUHJvZmlsZU1uZy5jb29raWVNbmcuc2V0Q29va2llVmFsdWUoInV2aWV3IixsYXN0Vmlld0lELCIvIiwyKSxhY3RpdmVVc2VyUHJvZmlsZU1uZy5jb29raWVNbmcuZGVsZXRlQ29va2llKCJ1c2lkX3RtcCIpLGFjdGl2ZVVzZXJQcm9maWxlTW5nLl9fbm90aWZ5U2Vzc2lvbklEKCkpfSxmYWlsOmZ1bmN0aW9uKGcsbix0KXtjb25zb2xlJiZjb25zb2xlLmxvZyYmY29uc29sZS5sb2coIlVuYWJsZSB0byBsb2cgcGFnZSB2aWV3LiBFcnJvcjogIit0Lm1lc3NhZ2UpfSxhbHdheXM6ZnVuY3Rpb24oKXt9fSl9fWNhdGNoKGcpe2NvbnNvbGUmJmNvbnNvbGUubG9nJiZjb25zb2xlLmxvZygiVW5hYmxlIHRvIHN0YXQgcGFnZSBkdWUgdG8gZXJyb3I6ICIrZy5tZXNzYWdlKX19LF9sb2FkUHJvcGVydGllczpmdW5jdGlvbihhKXt0cnl7InVuZGVmaW5lZCIhPXR5cGVvZiBhJiZudWxsIT1hJiYoYWN0aXZlVXNlclByb2ZpbGVNbmcuX19wcm9wZXJ0aWVzPWEsYWN0aXZlVXNlclByb2ZpbGVNbmcucGFnZVZpZXdDb3VudD0KCQlhLnBhZ2V2aWV3cyl9Y2F0Y2goYil7fX0sZ2V0UHJvcGVydHk6ZnVuY3Rpb24oYSxiKXtyZXR1cm4idW5kZWZpbmVkIj09dHlwZW9mIGFjdGl2ZVVzZXJQcm9maWxlTW5nLl9fcHJvcGVydGllc3x8bnVsbD09YWN0aXZlVXNlclByb2ZpbGVNbmcuX19wcm9wZXJ0aWVzP251bGw6InVuZGVmaW5lZCI9PXR5cGVvZiBhY3RpdmVVc2VyUHJvZmlsZU1uZy5fX3Byb3BlcnRpZXNbYV0\/InVuZGVmaW5lZCIhPXR5cGVvZiBiP2I6IiI6YWN0aXZlVXNlclByb2ZpbGVNbmcuX19wcm9wZXJ0aWVzW2FdfSxhZGRQcm9wZXJ0eTpmdW5jdGlvbihhLGIsZCl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBhfHxudWxsPT1hfHwwPT1hLmxlbmd0aHx8InVuZGVmaW5lZCI9PXR5cGVvZiBifHxudWxsPT1ifHwidW5kZWZpbmVkIj09dHlwZW9mIHdpbmRvdy5hY3RpdmVQcm9maWxlSUQpcmV0dXJuIG51bGw7InVuZGVmaW5lZCI9PXR5cGVvZiBkJiYoZD0iVVBEQVRFIik7YWN0aXZlVXNlclByb2ZpbGVNbmcuZ2V0U3RhdHNVUkkoKTsKCQl0aGlzLmFqYXhNbmcuYWpheCh7dHlwZToiR0VUIixhY3Rpb246ImFkZHByb3BlcnR5Iix1dWlkOmFjdGl2ZVVzZXJQcm9maWxlTW5nLmdldEFjdGl2ZVByb2ZpbGVpZCgpLHNpZDphY3RpdmVVc2VyUHJvZmlsZU1uZy5nZXRTZXNzaW9uSUQoKSxwbmFtZTphLHB2YWx1ZTpiLHBtb2RlOmR9KTtyZXR1cm4hMH0sdGFnQnJvd3NlcjpmdW5jdGlvbihhLGIpe3RyeXt2YXIgZD1hLGM9dGhpcztpZighMD09PWFjdGl2ZVVzZXJQcm9maWxlTW5nLmRpc2FibGVkKXJldHVybiExO2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgYXx8bnVsbD09YSlkPWZ1bmN0aW9uKGgpe3RyeXt2YXIgZj1uZXcgU3RyaW5nKGgpO2Y9Zi50cmltKCk7aWYoMDxmLmxlbmd0aCl7Yy5sb2dNc2coIlRhZ2dlZCB3aXRoIHV1aWQgPT4gIitmKTt2YXIgcT1jLmdldEFjdGl2ZVByb2ZpbGVpZCgpO2FjdGl2ZVVzZXJQcm9maWxlTW5nLnVpZD1mLnRyaW0oKTtudWxsIT1xJiYidW5kZWZpbmVkIiE9dHlwZW9mIHEubGVuZ3RoJiYKCTA8cS5sZW5ndGgmJmFjdGl2ZVVzZXJQcm9maWxlTW5nLnVpZCE9cSYmYy5jb29raWVNbmcuc2V0Q29va2llVmFsdWUoInV1aWRfdjEiLHEsIi8iLDE4MCk7Yy5jb29raWVNbmcuc2V0Q29va2llVmFsdWUoInV1aWQiLGFjdGl2ZVVzZXJQcm9maWxlTW5nLnVpZCwiLyIsNUUzKTtjLmNvb2tpZU1uZy5zZXRDb29raWVWYWx1ZSgidXVpZF92bGQzIiwhMCwiLyIsNUUzKTtjLnNldEFjdGl2ZVByb2ZpbGVpZCgpfX1jYXRjaChwKXtjLmxvZ01zZygiVW5leHBlY3RlZCBlcnJvciByZXR1cm5lZCBmcm9tIHRhZ2dpbmc6ICIrcC5tZXNzYWdlKX19O3RoaXMubG9nTXNnKCJHZW5lcmF0aW5nIGZpbmdlcnByaW50Iik7dmFyIGU9dGhpcy5nZXRGUFVSSSgpO2MuYWpheE1uZy5nZXRTY3JpcHQoZSxmdW5jdGlvbigpe3RyeXt2YXIgaD1mdW5jdGlvbihsKXt0cnl7Yy5sb2dNc2coIkZpbmdlcnByaW50ZWQ6ICIrbCk7dmFyIEM9Yy5nZXRBY3RpdmVQcm9maWxlaWQoKSxBPWVuY29kZVVSSSh3aW5kb3cubG9jYXRpb24ub3JpZ2luKTsKCQlpZigidW5kZWZpbmVkIj09dHlwZW9mIGx8fG51bGw9PWwpcmV0dXJuITE7dmFyIHo9ITE7YWN0aXZlVXNlclByb2ZpbGVNbmcuaXNEMkNTaXRlJiYzPT13aW5kb3cuYWN0aXZlU2l0ZUlEJiYoej0hMCk7Yy5jb29raWVNbmcuc2V0Q29va2llVmFsdWUoInV1ZnAiLGwsIi8iLDVFMyk7dmFyIG09e2Q6QSxmcDE6bC5zdWJzdHJpbmcoMCw4KSxmcDI6bC5zdWJzdHJpbmcoOCwxNiksZnAzOmwuc3Vic3RyaW5nKDE2LDI0KSxmcDQ6bC5zdWJzdHJpbmcoMjQsMzIpLHVpZDpDLGFjdGlvbjoidXBncmFkZWZwIixkYm06eix2OmFjdGl2ZVVzZXJQcm9maWxlTW5nLl9fcmVzZXRWfSxyPWFjdGl2ZVVzZXJQcm9maWxlTW5nLmdldFN0YXRzVVJJKCk7Yy5sb2dNc2cocisic2VydmljZS9kMmMudXBncmFkZS52Ni5mcC5qcyIpO2MubG9nTXNnKEpTT04uc3RyaW5naWZ5KG0pKTtjLmFqYXhNbmcuYWpheCh7dXJsOnIrInNlcnZpY2UvZDJjLnVwZ3JhZGUudjYuZnAuanMiLHR5cGU6IkdFVCIsZGF0YTptLAoJCQlkb25lOmZ1bmN0aW9uKHgpe3RyeXtjLmxvZ01zZygiVVVJRCBhZnRlciB1cHJvZmlsZSB1cGRhdGU6ICIreCksInVuZGVmaW5lZCIhPXR5cGVvZiBkJiZudWxsIT1kP2QoeCk6Yy5jb29raWVNbmcuc2V0Q29va2llVmFsdWUoInV1aWQiLHgsIi8iLDVFMyksInVuZGVmaW5lZCIhPXR5cGVvZiBiJiZudWxsIT1iJiZiKCl9Y2F0Y2goZyl7fX19KX1jYXRjaCh4KXtjLmxvZ01zZygiVW5leHBlY3RlZCBlcnJvciBleGVjdXRpbmcgdGFnTWUgc3RlcDogIit4Lm1lc3NhZ2UpfX0sZj0hMTt0cnl7bmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRleE9mKCJXaW4iKSxuYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoIk1hYyIpLG5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZigiTGludXgiKSxuYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoIkFuZHJvaWQiKSwtMSE9bmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRleE9mKCJsaWtlIE1hYyIpJiYoZj0hMCksbG9jYXRpb24ucHJvdG9jb2wuaW5kZXhPZigiaHR0cHMiKX1jYXRjaChsKXt9dmFyIHE9CgkJe3ByZXByb2Nlc3NvcjpudWxsLGF1ZGlvOnt0aW1lb3V0OjFFMyxleGNsdWRlSU9TMTE6Zn0sZm9udHM6e3N3ZkNvbnRhaW5lcklkOiJkY3RrZGl2ZnAyIixzd2ZQYXRoOiJmbGFzaC9jb21waWxlZC9Gb250TGlzdC5zd2YiLHVzZXJEZWZpbmVkRm9udHM6W10sZXh0ZW5kZWRKc0ZvbnRzOiExfSxzY3JlZW46e2RldGVjdFNjcmVlbk9yaWVudGF0aW9uOiEwfSxwbHVnaW5zOntzb3J0UGx1Z2luc0ZvcjpbL3BhbGVtb29uL2ldLGV4Y2x1ZGVJRTohMX0sZXh0cmFDb21wb25lbnRzOltdLE5PVF9BVkFJTEFCTEU6Im5vdCBhdmFpbGFibGUiLEVSUk9SOiJlcnJvciIsRVhDTFVERUQ6ImV4Y2x1ZGVkIn0scD0hMTtudWxsIT13aW5kb3cmJm51bGwhPXdpbmRvdy5sb2NhdGlvbiYmInVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3cubG9jYXRpb24uaHJlZiYmKC0xPHdpbmRvdy5sb2NhdGlvbi5ocmVmLmluZGV4T2YoImQyY2RlYnVnPTEiKXx8LTEhPXdpbmRvdy5sb2NhdGlvbi5ocmVmLmluZGV4T2YoImNybTIuZDJjbWVkaWEuY2EiKSkmJgoJKHA9ITApO3ZhciB5PWZ1bmN0aW9uKGwpe3RyeXt2YXIgQz1mdW5jdGlvbih6KXt6PXoubWFwKGZ1bmN0aW9uKG0pe3ZhciByPSIiO3RyeXtzd2l0Y2gocCYmY29uc29sZS5sb2cobS5rZXkudG9Mb3dlckNhc2UoKSksbS5rZXkudG9Mb3dlckNhc2UoKSl7Y2FzZSAiY2FudmFzIjpjYXNlICJ3ZWJnbCI6Y2FzZSAiYWRibG9jayI6cj0iIjticmVhaztjYXNlICJ1c2VyYWdlbnQiOmlmKDA8bS52YWx1ZS5sZW5ndGgmJi0xIT1tLnZhbHVlLmluZGV4T2YoIiAiKSlmb3IodmFyIHg9bS52YWx1ZS5zcGxpdCgiICIpLGc9MDtnPHgubGVuZ3RoO2crKyl7dmFyIG49eFtnXTtpZigtMSE9bi5pbmRleE9mKCIvIikpe3ZhciB0PW4uc3BsaXQoIi8iKTtyKz10WzBdfWVsc2UtMT09bi5pbmRleE9mKCIuIikmJihyKz1uKX1wJiZjb25zb2xlLmxvZygiVXNlciBBZ2VudCAtLSAiK3IpO2JyZWFrO2RlZmF1bHQ6InVuZGVmaW5lZCIhPXR5cGVvZiBBcnJheS5pc0FycmF5JiZBcnJheS5pc0FycmF5KG0udmFsdWUpfHwKCW0udmFsdWUuY29uc3RydWN0b3I9PT1BcnJheT8obS52YWx1ZS5zb3J0KCkscj1tLnZhbHVlLmpvaW4oKSk6cj1tLnZhbHVlfX1jYXRjaCh2KXtjb25zb2xlJiZjb25zb2xlLmxvZyYmY29uc29sZS5sb2coIkZQIEZhaWxlZCAtLSAlcyAtICVvIix2Lm1lc3NhZ2UsbSl9aWYoInVuZGVmaW5lZCI9PXR5cGVvZiByfHxudWxsPT1yKXI9IiI7cmV0dXJuIHJ9KTt6LnNvcnQoKTtyZXR1cm4gen0obCk7cCYmY29uc29sZS5sb2coInRvIGhhc2g6ICVvIixDKTt2YXIgQT1GaW5nZXJwcmludDIueDY0aGFzaDEyOChDLmpvaW4oIiIpLDMxKTtwJiZjb25zb2xlLmxvZygiRlAgPT4gJXMiLEEpO2goQSk7Yy5sb2dNc2coIkZpbmdlcnByaW50OiAiK0EpfWNhdGNoKHope2NvbnNvbGUmJmNvbnNvbGUubG9nJiZjb25zb2xlLmxvZygiRlAyIEZhaWxlZCAtLSAlcyIsei5tZXNzYWdlKX19O3dpbmRvdy5yZXF1ZXN0SWRsZUNhbGxiYWNrP3JlcXVlc3RJZGxlQ2FsbGJhY2soZnVuY3Rpb24oKXt0cnl7RmluZ2VycHJpbnQyLmdldChxLAoJCXkpfWNhdGNoKGwpe2MubG9nTXNnKCIxLlVuYWJsZSB0byBpbnN0YW50aWF0ZSBGUDIuIEVycm9yOiAiK2wubWVzc2FnZSl9fSk6c2V0VGltZW91dChmdW5jdGlvbigpe3RyeXtGaW5nZXJwcmludDIuZ2V0KHEseSl9Y2F0Y2gobCl7Yy5sb2dNc2coIjIuVW5hYmxlIHRvIGluc3RhbnRpYXRlIEZQMi4gRXJyb3I6ICIrbC5tZXNzYWdlKX19LDUwMCl9Y2F0Y2gobCl7Yy5sb2dNc2coIlVuZXhwZWN0ZWQgZXJyb3IgZXhlY3V0aW5nIGZpcnN0IHN0ZXA6ICIrbC5tZXNzYWdlKX19KX1jYXRjaChoKXtjLmxvZ01zZygiVW5leHBlY3RlZCBlcnJvciBleGVjdXRpbmcgZmlyc3Qgc3RlcDogIitoLm1lc3NhZ2UpfX0sdXBkYXRlRlA6ZnVuY3Rpb24oKXt0cnl7aWYoITA9PT1hY3RpdmVVc2VyUHJvZmlsZU1uZy5kaXNhYmxlZClyZXR1cm4hMTt0aGlzLmxvZ01zZygiU3RhcnRpbmcgU2FmYXJpIFJ1biIpO2lmKCExPT09dGhpcy5yZXNldFNlY29uZFBhc3Mpe3RoaXMucmVzZXRTZWNvbmRQYXNzPQoJCSEwO3RoaXMubG9nTXNnKCJTdGFydGluZyBmaXJzdCBwYXNzIik7dmFyIGE9dGhpcy5jb29raWVNbmcucmVhZENvb2tpZVZhbHVlKCJ1dWlkIiksYj10aGlzLmNvb2tpZU1uZy5yZWFkQ29va2llVmFsdWUoInV1aWRfaW9zXzIiKTt0aGlzLmxvZ01zZygiVVVJRC4gIithKyIgLS0gSU9TUkVTRVQuICIrYik7bnVsbD09YXx8bnVsbD09Yj8odGhpcy5sb2dNc2coIkRyb3BwaW5nIHJlc2V0IGNvb2tpZSIpLHRoaXMuY29va2llTW5nLnNldENvb2tpZVZhbHVlKCJ1dWlkX2lvc18yIiwxLCIvIiw1RTMpLHRoaXMudGFnQnJvd3NlcihudWxsKSk6KHRoaXMubG9nTXNnKCJTZWNvbmQgcGFzcywgbm90aGluZyB0byBkbyIpLHdpbmRvdy5fX19kMmNDVEtNZXRob2QoKSl9ZWxzZSB3aW5kb3cuX19fZDJjQ1RLTWV0aG9kKCl9Y2F0Y2goZCl7dGhpcy5sb2dNc2coIlVuZXhwZWN0ZWQgZXJyb3IgdXBkYXRpbmcgbW9iaWxlIGNvb2tpZTogIitkLm1lc3NhZ2UpfX19Owp3aW5kb3cuX19fZDJjQ1RLTWV0aG9kPWZ1bmN0aW9uKCl7dHJ5e2lmKCFhY3RpdmVVc2VyUHJvZmlsZU1uZy5faXNCb3QoKSYmITAhPT1hY3RpdmVVc2VyUHJvZmlsZU1uZy5kaXNhYmxlZCl7YWN0aXZlVXNlclByb2ZpbGVNbmcuanF1ZXJ5QWN0aXZlPXdpbmRvdy5qUXVlcnk\/ITA6ITE7dmFyIGE9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRvcHNpdGVpZCIpO2lmKG51bGw9PWF8fCJ1bmRlZmluZWQiPT10eXBlb2YgYS52YWx1ZXx8aXNOYU4oYS52YWx1ZSkpYWN0aXZlVXNlclByb2ZpbGVNbmcubG9nTXNnKCJMb2FkaW5nIGZwc3lzdGVtIG9uIG5vbiBkMmMgd2Vic2l0ZSIpLGFjdGl2ZVVzZXJQcm9maWxlTW5nLmlzRDJDU2l0ZT0hMTtlbHNlIHRyeXt3aW5kb3cuYWN0aXZlU2l0ZUlEPXBhcnNlSW50KGEudmFsdWUpfWNhdGNoKHApe3dpbmRvdy5hY3RpdmVTaXRlSUQ9dm9pZCAwfXZhciBiPWFjdGl2ZVVzZXJQcm9maWxlTW5nLmNoZWNrU2NoZWR1bGVkUmVzZXQoKSxkPWFjdGl2ZVVzZXJQcm9maWxlTW5nLmNvb2tpZU1uZy5yZWFkQ29va2llVmFsdWUoInVzaWQiKTsKCWlmKCJ1bmRlZmluZWQiPT10eXBlb2Ygd2luZG93LmFjdGl2ZVNlc3Npb25JRHx8bnVsbD09d2luZG93LmFjdGl2ZVNlc3Npb25JRCl3aW5kb3cuYWN0aXZlU2Vzc2lvbklEPTA7bnVsbD09ZHx8aXNOYU4oZCl8fCh3aW5kb3cuYWN0aXZlU2Vzc2lvbklEPWQpO2FjdGl2ZVVzZXJQcm9maWxlTW5nLmNvb2tpZU1uZy5kZWxldGVDb29raWUoInV1aWRfdmxkIik7dmFyIGM9YWN0aXZlVXNlclByb2ZpbGVNbmcuZ2V0U3RhdHNVUkkoKSxlPWZ1bmN0aW9uKCl7dHJ5eyJ1bmRlZmluZWQiPT10eXBlb2Ygd2luZG93LnN0YXRFeGVjdXRlZCYmKCJ1bmRlZmluZWQiIT10eXBlb2YgYWN0aXZlVXNlclByb2ZpbGVNbmcmJm51bGwhPWFjdGl2ZVVzZXJQcm9maWxlTW5nJiYidW5kZWZpbmVkIiE9dHlwZW9mIGFjdGl2ZVVzZXJQcm9maWxlTW5nLmxvZ1BhZ2VWaWV3PyhhY3RpdmVVc2VyUHJvZmlsZU1uZy5sb2dQYWdlVmlldygpLHdpbmRvdy5zdGF0RXhlY3V0ZWQ9ITApOmFjdGl2ZVVzZXJQcm9maWxlTW5nLmFqYXhNbmcuYWpheCh7dXJsOmMrCgkJCSJzZXJ2aWNlL3Nlc3Npb25NbmcucGhwIix0eXBlOiJHRVQiLGRhdGE6e2FjdGlvbjoidW5rbm93biIsbXNnOiIxLkVpdGhlciBhY3RpdmVVc2VyUHJvZmlsZU1uZyBpcyBub3QgZGVmaW5lZCBvciBsb2dQYWdlVmlldyBpcyBub3QgZGVmaW5lZCJ9fSkpfWNhdGNoKHApe2FjdGl2ZVVzZXJQcm9maWxlTW5nLmxvZ01zZyhwLm1lc3NhZ2UpLGFjdGl2ZVVzZXJQcm9maWxlTW5nLmFqYXhNbmcuYWpheCh7dXJsOmMrInNlcnZpY2Uvc2Vzc2lvbk1uZy5waHAiLHR5cGU6IkdFVCIsZGF0YTp7YWN0aW9uOiJ1bmtub3duIixtc2c6cC5tZXNzYWdlfX0pfX0saD1hY3RpdmVVc2VyUHJvZmlsZU1uZy5jb29raWVNbmcucmVhZENvb2tpZVZhbHVlKCJ1dWlkIiksZj1udWxsPT1ofHwwPT1oLmxlbmd0aD8hMTohMDtoPWFjdGl2ZVVzZXJQcm9maWxlTW5nLmNvb2tpZU1uZy5yZWFkQ29va2llVmFsdWUoInV1aWRfdmxkMyIpO3ZhciBxPW51bGw9PWh8fDA9PWgubGVuZ3RoPyExOiEwO2lmKCFiJiZmJiYKCQlxKXthY3RpdmVVc2VyUHJvZmlsZU1uZy5yZWdpc3RlckNhbGxiYWNrKGUpO2lmKCJ1bmRlZmluZWQiPT10eXBlb2Ygd2luZG93LmFjdGl2ZVByb2ZpbGVJRHx8bnVsbD09d2luZG93LmFjdGl2ZVByb2ZpbGVJRCl3aW5kb3cuYWN0aXZlUHJvZmlsZUlEPWFjdGl2ZVVzZXJQcm9maWxlTW5nLmdldEFjdGl2ZVByb2ZpbGVpZCgpO2FjdGl2ZVVzZXJQcm9maWxlTW5nLl9fbm90aWZ5VVVJRCgpfWVsc2UgYWN0aXZlVXNlclByb2ZpbGVNbmcuc2Vzc2lvbmlkPW51bGwsd2luZG93LmFjdGl2ZVNlc3Npb25JRD1udWxsLGFjdGl2ZVVzZXJQcm9maWxlTW5nLnRhZ0Jyb3dzZXIobnVsbCxmdW5jdGlvbigpe2FjdGl2ZVVzZXJQcm9maWxlTW5nLnJlZ2lzdGVyQ2FsbGJhY2soZSl9KX19Y2F0Y2gocCl7Yz1hY3RpdmVVc2VyUHJvZmlsZU1uZy5nZXRTdGF0c1VSSSgpLGFjdGl2ZVVzZXJQcm9maWxlTW5nLmFqYXhNbmcuX2dldChjKyJzZXJ2aWNlL3Nlc3Npb25NbmcucGhwP2FjdGlvbj11bmtub3duJm1zZz0yLiIrCgllbmNvZGVVUklDb21wb25lbnQocC5tZXNzYWdlKSksY29uc29sZSYmY29uc29sZS5sb2cmJmNvbnNvbGUubG9nKCIxLiBVbmV4cGVjdGVkIGVycm9yIG9jY3VyZWQgbG9hZGluZyB1cHJvZmlsZS5maW5hbC5qcy4gRXJyb3I6ICIrcC5tZXNzYWdlKX19Owp0cnl7bGV0IGE9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI2Rpc2FibGVJbnRlcm5hbFNlc3Npb24iKTtpZihudWxsIT1hJiYiMSI9PWEudmFsdWUpe2FjdGl2ZVVzZXJQcm9maWxlTW5nLmRpc2FibGVkPSEwO2FjdGl2ZVVzZXJQcm9maWxlTW5nLnVpZD1udWxsO2xldCBiPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiN0b3BzaXRlaWQiKTtudWxsIT1iJiYoYj1wYXJzZUludChiLnZhbHVlKSk7aXNOYU4oYil8fDIzNSE9Yj8oYWN0aXZlVXNlclByb2ZpbGVNbmcuY29va2llTW5nLmRlbGV0ZUNvb2tpZSgidXVpZCIpLGFjdGl2ZVVzZXJQcm9maWxlTW5nLmNvb2tpZU1uZy5kZWxldGVDb29raWUoInVpZCIpLGFjdGl2ZVVzZXJQcm9maWxlTW5nLmNvb2tpZU1uZy5kZWxldGVDb29raWUoInV1aWRfcnN0IiksYWN0aXZlVXNlclByb2ZpbGVNbmcuY29va2llTW5nLmRlbGV0ZUNvb2tpZSgidXNpZCIpLGFjdGl2ZVVzZXJQcm9maWxlTW5nLmNvb2tpZU1uZy5kZWxldGVDb29raWUoInV2aWV3IiksCglhY3RpdmVVc2VyUHJvZmlsZU1uZy5jb29raWVNbmcuZGVsZXRlQ29va2llKCJ1c2lkIiksYWN0aXZlVXNlclByb2ZpbGVNbmcuY29va2llTW5nLmRlbGV0ZUNvb2tpZSgidXNpZF90bXAiKSxhY3RpdmVVc2VyUHJvZmlsZU1uZy5jb29raWVNbmcuZGVsZXRlQ29va2llKCJ1dWlkX3YxIiksYWN0aXZlVXNlclByb2ZpbGVNbmcuY29va2llTW5nLmRlbGV0ZUNvb2tpZSgidXVpZF92bGQzIiksYWN0aXZlVXNlclByb2ZpbGVNbmcuY29va2llTW5nLmRlbGV0ZUNvb2tpZSgidXVmcCIpLGFjdGl2ZVVzZXJQcm9maWxlTW5nLmNvb2tpZU1uZy5kZWxldGVDb29raWUoInV1aWRfaW9zXzIiKSk6Y29uc29sZS5sb2coImJ5cGFzc2luZyBjb29raWUgcHVyZ2UiKX1lbHNlImxvYWRpbmciIT1kb2N1bWVudC5yZWFkeVN0YXRlP3dpbmRvdy5fX19kMmNDVEtNZXRob2QoKTpkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyP2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLHdpbmRvdy5fX19kMmNDVEtNZXRob2QpOgoJZG9jdW1lbnQuYXR0YWNoRXZlbnQoIm9ucmVhZHlzdGF0ZWNoYW5nZSIsZnVuY3Rpb24oKXsiY29tcGxldGUiPT1kb2N1bWVudC5yZWFkeVN0YXRlJiZ3aW5kb3cuX19fZDJjQ1RLTWV0aG9kKCl9KX1jYXRjaChhKXtjb25zb2xlJiZjb25zb2xlLmxvZyYmY29uc29sZS5sb2coIjUuIFVuZXhwZWN0ZWQgZXJyb3Igb2NjdXJlZCBsb2FkaW5nIHVwcm9maWxlLmZpbmFsLmpzLiBFcnJvcjogIithLm1lc3NhZ2UpfTsKLyoqIC9tL2pzL2tjLmZhYi5qcyAqKi8KdmFyIF9fX2QyY19rY2ZhYmpzX2Nfb249IjIwMjUtMDUtMjMgMTc6MDM6MTgiOyd1c2Ugc3RyaWN0Jzt2YXIgX19fZDJjX2tjZmFianNfY19vbj0iMjAyNC0wMy0yNSAxMjozMDoxOCI7InVzZSBzdHJpY3QiOwooZnVuY3Rpb24oYSl7YS5rY3x8KGEua2M9e30pO2Eua2MuZmFiPWZ1bmN0aW9uKGgsZSxsKXt2YXIgYj10aGlzO2IuJGVsPWEoaCk7Yi5lbD1oO2IuJGVsLmRhdGEoImtjLmZhYiIsYik7dmFyIGYsaztiLmluaXQ9ZnVuY3Rpb24oKXtpZigidW5kZWZpbmVkIj09PXR5cGVvZiBlfHxudWxsPT09ZSllPVt7dXJsOm51bGwsYmdjb2xvcjoicmVkIixpY29uOiIrIn0se3VybDoiaHR0cDovL3d3dy5leGFtcGxlLmNvbSIsYmdjb2xvcjoib3JhbmdlIixpY29uOiIrIn0se3VybDoiaHR0cDovL3d3dy5leGFtcGxlLmNvbSIsYmdjb2xvcjoieWVsbG93IixpY29uOiIrIn1dO2IubGlua3M9ZTtpZigwPGIubGlua3MubGVuZ3RoKXttYWluX2J0bj1iLmxpbmtzWzBdO2NvbG9yX3N0eWxlPW1haW5fYnRuLmNvbG9yPyJjb2xvcjoiK21haW5fYnRuLmNvbG9yKyI7IjoiIjtiZ19jb2xvcl9zdHlsZT1tYWluX2J0bi5iZ2NvbG9yPyJiYWNrZ3JvdW5kLWNvbG9yOiIrbWFpbl9idG4uYmdjb2xvcisiOyI6CiIiO21haW5fYnRuX2RvbT0iPGJ1dHRvbiBkYXRhLWxpbmstaHJlZj0nIisobWFpbl9idG4udXJsP21haW5fYnRuLnVybDoiIikrIicgZGF0YS1saW5rLXRhcmdldD0nIisobWFpbl9idG4udGFyZ2V0P21haW5fYnRuLnRhcmdldDoiIikrIicgY2xhc3M9J2tjX2ZhYl9tYWluX2J0bicgc3R5bGU9JyIrYmdfY29sb3Jfc3R5bGUrIic+PHNwYW4gc3R5bGU9JyIrY29sb3Jfc3R5bGUrIic+IittYWluX2J0bi5pY29uKyI8L3NwYW4+PC9idXR0b24+IjtzdWJfZmFiX2J0bnNfZG9tPSIiO2IubGlua3Muc2hpZnQoKTtmb3IodmFyIGM9MDtjPGIubGlua3MubGVuZ3RoO2MrKyljb2xvcl9zdHlsZT1iLmxpbmtzW2NdLmNvbG9yPyJjb2xvcjoiK2IubGlua3NbY10uY29sb3IrIjsiOiIiLGJnX2NvbG9yX3N0eWxlPWIubGlua3NbY10uYmdjb2xvcj8iYmFja2dyb3VuZC1jb2xvcjoiK2IubGlua3NbY10uYmdjb2xvcisiOyI6IiIsc3ViX2ZhYl9idG5zX2RvbSs9IjxkaXY+PGJ1dHRvbiBkYXRhLWxpbmstdGl0bGU9JyIrCmIubGlua3NbY10udGl0bGUrIicgZGF0YS1saW5rLWhyZWY9JyIrKGIubGlua3NbY10udXJsP2IubGlua3NbY10udXJsOiIiKSsiJyBkYXRhLWxpbmstdGFyZ2V0PSciKyhiLmxpbmtzW2NdLnRhcmdldD9iLmxpbmtzW2NdLnRhcmdldDoiIikrIicgY2xhc3M9J3N1Yl9mYWJfYnRuJyBzdHlsZT0nIitiZ19jb2xvcl9zdHlsZSsiJz48c3BhbiBzdHlsZT0nIitjb2xvcl9zdHlsZSsiJz4iK2IubGlua3NbY10uaWNvbisiPC9zcGFuPjwvYnV0dG9uPjwvZGl2PiI7c3ViX2ZhYl9idG5zX2RvbT0iPGRpdiBjbGFzcz0nc3ViX2ZhYl9idG5zX3dyYXBwZXInPiIrc3ViX2ZhYl9idG5zX2RvbSsiPC9kaXY+IjtiLiRlbC5hcHBlbmQoc3ViX2ZhYl9idG5zX2RvbSkuYXBwZW5kKG1haW5fYnRuX2RvbSl9ZWxzZSJ1bmRlZmluZWQiPT10eXBlb2YgY29uc29sZSYmKHdpbmRvdy5jb25zb2xlPXtsb2c6ZnVuY3Rpb24oZyl7YWxlcnQoZyl9fSksY29uc29sZS5sb2coIkludmFsaWQgbGlua3MgYXJyYXkgcGFyYW0iKTsKYi5vcHRpb25zPWEuZXh0ZW5kKHt9LGEua2MuZmFiLmRlZmF1bHRPcHRpb25zLGwpO2Y9Yi4kZWwuZmluZCgiLmtjX2ZhYl9tYWluX2J0biIpO2s9Yi4kZWwuZmluZCgiLnN1Yl9mYWJfYnRuc193cmFwcGVyIik7Zi5vbigiY2xpY2siLGZ1bmN0aW9uKGcpezA8YSh0aGlzKS5hdHRyKCJkYXRhLWxpbmstaHJlZiIpLmxlbmd0aCYmKGEodGhpcykuYXR0cigiZGF0YS1saW5rLXRhcmdldCIpP3dpbmRvdy5vcGVuKGEodGhpcykuYXR0cigiZGF0YS1saW5rLWhyZWYiKSxhKHRoaXMpLmF0dHIoImRhdGEtbGluay10YXJnZXQiKSk6d2luZG93LmxvY2F0aW9uLmhyZWY9YSh0aGlzKS5hdHRyKCJkYXRhLWxpbmstaHJlZiIpKTtrLnRvZ2dsZUNsYXNzKCJzaG93Iik7MDxhKCIua2NfZmFiX292ZXJsYXkiKS5sZW5ndGg\/KGEoIi5rY19mYWJfb3ZlcmxheSIpLnJlbW92ZSgpLGYudHJpZ2dlcigiYmx1ciIpKTooZi50cmlnZ2VyKCJmb2N1cyIpLGEoImJvZHkiKS5hcHBlbmQoJzxkaXYgY2xhc3M9ImtjX2ZhYl9vdmVybGF5IiA+PC9kaXY+JyksCmEoImJvZHkiKS5vbigidG91Y2hzdGFydCIsZnVuY3Rpb24oKXtmLnRyaWdnZXIoImJsdXIiKX0pKTswIT09YSh0aGlzKS5maW5kKCIuaW5rIikubGVuZ3RoJiZhKHRoaXMpLmZpbmQoIi5pbmsiKS5yZW1vdmUoKTthKHRoaXMpLnByZXBlbmQoIjxzcGFuIGNsYXNzPSdpbmsnPjwvc3Bhbj4iKTtpbms9YSh0aGlzKS5maW5kKCIuaW5rIik7aW5rLmhlaWdodCgpfHxpbmsud2lkdGgoKXx8KGQ9TWF0aC5tYXgoYSh0aGlzKS5vdXRlcldpZHRoKCksYSh0aGlzKS5vdXRlckhlaWdodCgpKSxpbmsuY3NzKHtoZWlnaHQ6ZCx3aWR0aDpkfSkpO3g9Zy5wYWdlWC1hKHRoaXMpLm9mZnNldCgpLmxlZnQtaW5rLndpZHRoKCkvMjt5PWcucGFnZVktYSh0aGlzKS5vZmZzZXQoKS50b3AtaW5rLmhlaWdodCgpLzI7aW5rLmNzcyh7dG9wOnkrInB4IixsZWZ0OngrInB4In0pLmFkZENsYXNzKCJhbmltYXRlIil9KTtrLmZpbmQoIi5zdWJfZmFiX2J0biIpLm9uKCJtb3VzZWRvd24iLGZ1bmN0aW9uKGcpezA8CmEodGhpcykuYXR0cigiZGF0YS1saW5rLWhyZWYiKS5sZW5ndGgmJihhKHRoaXMpLmF0dHIoImRhdGEtbGluay10YXJnZXQiKT93aW5kb3cub3BlbihhKHRoaXMpLmF0dHIoImRhdGEtbGluay1ocmVmIiksYSh0aGlzKS5hdHRyKCJkYXRhLWxpbmstdGFyZ2V0IikpOndpbmRvdy5sb2NhdGlvbi5ocmVmPWEodGhpcykuYXR0cigiZGF0YS1saW5rLWhyZWYiKSl9KTtmLmZvY3Vzb3V0KGZ1bmN0aW9uKCl7ay5yZW1vdmVDbGFzcygic2hvdyIpO292ZXJsYXk9YSgiLmtjX2ZhYl9vdmVybGF5Iik7b3ZlcmxheS5yZW1vdmUoKTthKCJib2R5Iikub2ZmKCJ0b3VjaHN0YXJ0Iil9KX07Yi5pbml0KCl9O2Eua2MuZmFiLmRlZmF1bHRPcHRpb25zPXt9O2EuZm4ua2NfZmFiPWZ1bmN0aW9uKGgsZSl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe25ldyBhLmtjLmZhYih0aGlzLGgsZSl9KX19KShqUXVlcnkpOwovKiogL20vanMvb3BlbmhvdXJzLmpzICoqLwp2YXIgX19fZDJjX29wZW5ob3Vyc2pzX2Nfb249IjIwMjUtMDUtMjMgMTc6MTE6MDMiOyd1c2Ugc3RyaWN0Jzt2YXIgX19fZDJjX29wZW5ob3Vyc2pzX2Nfb249IjIwMjUtMDMtMTggMTQ6MzA6MDgiOyJ1c2Ugc3RyaWN0IjsKdmFyIE9wZW5Ib3Vycz1mdW5jdGlvbihiKXtmdW5jdGlvbiBjKGQpe3ZhciBlPSQodGhpcykuc2libGluZ3MoIi5leHBhbmRhYmxlX2NvbnRlbnQiKS5lcSgwKS5oYXNDbGFzcygib3Blbl9ob3Vyc19tYXBfYWN0aXZlIik7JChkLmN1cnJlbnRUYXJnZXQpLmZpbmQoIi5tYXBfb3Blbl9ob3Vyc19leHBhbmRfYXJyb3ciKS50b2dnbGVDbGFzcygiZXhwYW5kZWQiKTskKHRoaXMpLnBhcmVudHMoYS5vcHRpb25zLmNvbnRhaW5lcikuZmluZCgiLm9wZW5faG91cnNfbWFwX2FjdGl2ZSIpLnNsaWRlVG9nZ2xlKCJzbG93Iik7JCh0aGlzKS5wYXJlbnRzKGEub3B0aW9ucy5jb250YWluZXIpLmZpbmQoIi5vcGVuX2hvdXJzX21hcF9hY3RpdmUiKS5yZW1vdmVDbGFzcygib3Blbl9ob3Vyc19tYXBfYWN0aXZlIik7ZXx8KCQodGhpcykuc2libGluZ3MoIi5leHBhbmRhYmxlX2NvbnRlbnQiKS5lcSgwKS5zbGlkZVRvZ2dsZSgic2xvdyIpLCQodGhpcykuc2libGluZ3MoIi5leHBhbmRhYmxlX2NvbnRlbnQiKS5lcSgwKS5hZGRDbGFzcygib3Blbl9ob3Vyc19tYXBfYWN0aXZlIikpfQp2YXIgYT10aGlzO2Eub3B0aW9ucz1iO2EuJGNvbnRhaW5lcj0kKGEub3B0aW9ucy5jb250YWluZXIpO2EuaW5pdD1mdW5jdGlvbigpe2EuJGNvbnRhaW5lci5maW5kKCIubWFwX29wZW5faG91cnNfZXhwYW5kIikub24oImNsaWNrIGF1dG9fb3BlbiIsYyk7MDxhLiRjb250YWluZXIuZmluZCgiLm1hcF9vcGVuX2hvdXJzX2V4cGFuZC5kZWZhdWx0X29wZW5lZCIpLmxlbmd0aD9hLiRjb250YWluZXIuZmluZCgiLm1hcF9vcGVuX2hvdXJzX2V4cGFuZC5kZWZhdWx0X29wZW5lZCIpLnRyaWdnZXIoImF1dG9fb3BlbiIpOjIhPSQoIi5leHBhbmRhYmxlX2NvbnRlbnQiKS5sZW5ndGh8fDA8JCgiLmV4cGFuZGFibGVfY29udGVudCIpLmZpbmQoIi52aXNpdENvbnRhY3RIZWFkZXIiKS5sZW5ndGg\/YS5vcHRpb25zLmhhc093blByb3BlcnR5KCJhdXRvT3BlbiIpJiYhYS5vcHRpb25zLmF1dG9PcGVufHxhLiRjb250YWluZXIuZmluZCgiLm1hcF9vcGVuX2hvdXJzX2V4cGFuZCIpLmZpcnN0KCkudHJpZ2dlcigiYXV0b19vcGVuIik6CiQoIi5leHBhbmRhYmxlX2NvbnRlbnQiKS5zbGlkZVRvZ2dsZSgic2xvdyIpLmFkZENsYXNzKCJvcGVuX2hvdXJzX21hcF9hY3RpdmUiKX07cmV0dXJuIGF9OwovKiogL20vanMvZ29vZ2xlbWFwcy5qcyAqKi8KdmFyIF9fX2QyY19nb29nbGVtYXBzanNfY19vbj0iMjAyNi0wMS0xMiAxMDoxNDo1NCI7J3VzZSBzdHJpY3QnO2NsYXNzIEdvb2dsZU1hcHNXcmFwcGVye2NvbnN0cnVjdG9yKGEpe3RoaXMucHJldmlvdXNJbmZvV2luZG93PSExO3RoaXMub3B0aW9ucz17ZWxlbWVudDphJiZhLmVsZW1lbnQ\/YS5lbGVtZW50OiIiLGNlbnRlcjphJiZhLmNlbnRlcj9hLmNlbnRlcjp7bGF0OjQ1LjQ2NzI3Nyxsbmc6LTczLjgzNDUyNn0sY2VudGVyT2Zmc2V0OmEmJmEuY2VudGVyT2Zmc2V0P2EuY2VudGVyT2Zmc2V0Ont4OjAseTowfSx6b29tOmEmJmEuem9vbT9hLnpvb206OSxhZGRyZXNzZXM6YSYmYS5hZGRyZXNzZXM\/YS5hZGRyZXNzZXM6W10sb25CZWZvcmVJbml0OmEmJmEub25CZWZvcmVJbml0P2Eub25CZWZvcmVJbml0OmZ1bmN0aW9uKCl7fSxvbkFmdGVySW5pdDphJiZhLm9uQWZ0ZXJJbml0P2Eub25BZnRlckluaXQ6ZnVuY3Rpb24oKXt9LG9uQWZ0ZXJNYXJrZXJDcmVhdGVkOmEmJmEub25BZnRlck1hcmtlckNyZWF0ZWQ\/YS5vbkFmdGVyTWFya2VyQ3JlYXRlZDpmdW5jdGlvbigpe319fXN0YXRpYyBzZXRHb29nbGVNYXAoKXt2YXIgYT0KMCxlPWZ1bmN0aW9uKCl7Z29vZ2xlLm1hcHMuTWFwLnByb3RvdHlwZS5zZXRDZW50ZXJXaXRoT2Zmc2V0PWZ1bmN0aW9uKGssZyxsKXt2YXIgYz10aGlzLGI9bmV3IGdvb2dsZS5tYXBzLk92ZXJsYXlWaWV3O2Iub25BZGQ9ZnVuY3Rpb24oKXt2YXIgZj10aGlzLmdldFByb2plY3Rpb24oKSxkPWYuZnJvbUxhdExuZ1RvQ29udGFpbmVyUGl4ZWwoayk7ZC54Kz1nO2QueSs9bDtjLnNldENlbnRlcihmLmZyb21Db250YWluZXJQaXhlbFRvTGF0TG5nKGQpKX07Yi5kcmF3PWZ1bmN0aW9uKCl7fTtiLnNldE1hcCh0aGlzKX19O2lmKCJ1bmRlZmluZWQiIT09dHlwZW9mIGdvb2dsZSllKCk7ZWxzZSB2YXIgaD1zZXRJbnRlcnZhbChmdW5jdGlvbigpezQ+YT8idW5kZWZpbmVkIiE9PXR5cGVvZiBnb29nbGU\/KGNsZWFySW50ZXJ2YWwoaCksZSgpKTphKys6Y2xlYXJJbnRlcnZhbChoKX0sMUUzKX1pbml0KCl7dmFyIGE9dGhpcyxlPWEub3B0aW9ucy5jZW50ZXJPZmZzZXQueD9hLm9wdGlvbnMuY2VudGVyT2Zmc2V0Lng6CjAsaD1hLm9wdGlvbnMuY2VudGVyT2Zmc2V0Lnk\/YS5vcHRpb25zLmNlbnRlck9mZnNldC55OjAsaz1uZXcgZ29vZ2xlLm1hcHMuTGF0TG5nQm91bmRzO2Eub3B0aW9ucy5vbkJlZm9yZUluaXQoKTtpZihhLm9wdGlvbnMuYWRkcmVzc2VzLmxlbmd0aCl7dmFyIGc9YS5vcHRpb25zLmNlbnRlcixsPW5ldyBnb29nbGUubWFwcy5HZW9jb2RlcixjPW5ldyBnb29nbGUubWFwcy5NYXAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYS5vcHRpb25zLmVsZW1lbnQpLHt6b29tOmEub3B0aW9ucy56b29tLGNlbnRlcjphLm9wdGlvbnMuY2VudGVyLG1hcFR5cGVJZDpnb29nbGUubWFwcy5NYXBUeXBlSWQuUk9BRE1BUCxnZXN0dXJlSGFuZGxpbmc6ImdyZWVkeSIsc2Nyb2xsd2hlZWw6ITEsbWFwVHlwZUNvbnRyb2w6ITF9KTtnb29nbGUubWFwcy5ldmVudC5hZGRMaXN0ZW5lck9uY2UoYywiaWRsZSIsZnVuY3Rpb24oKXthLm9wdGlvbnMuYWRkcmVzc2VzLm1hcChmdW5jdGlvbihiLGYsZCl7Zj1mdW5jdGlvbihuLApxKXt0cnl7aWYocT09Z29vZ2xlLm1hcHMuR2VvY29kZXJTdGF0dXMuT0spe2suZXh0ZW5kKG5bMF0uZ2VvbWV0cnkubG9jYXRpb24pO2MuZml0Qm91bmRzKGspO2Muc2V0Wm9vbShhLm9wdGlvbnMuem9vbSk7Zz1jLmdldEJvdW5kcygpLmdldENlbnRlcigpO2Muc2V0Q2VudGVyV2l0aE9mZnNldChnLGUsaCk7dmFyIHA9bmV3IGdvb2dsZS5tYXBzLkluZm9XaW5kb3coe2NvbnRlbnQ6Yi5pbmZvd2luZG93fSksbT1uZXcgZ29vZ2xlLm1hcHMuTWFya2VyKHttYXA6Yyxwb3NpdGlvbjpuWzBdLmdlb21ldHJ5LmxvY2F0aW9uLHRpdGxlOmIudGl0bGUsaWNvbjpiLmljb259KTttLmFkZExpc3RlbmVyKCJjbGljayIsZnVuY3Rpb24oKXthLnByZXZpb3VzSW5mb1dpbmRvdyYmYS5wcmV2aW91c0luZm9XaW5kb3cuY2xvc2UoKTthLnByZXZpb3VzSW5mb1dpbmRvdz1wO3Aub3BlbihjLG0pfSk7YS5vcHRpb25zLm9uQWZ0ZXJNYXJrZXJDcmVhdGVkKGIsbSl9fWNhdGNoKHIpe2NvbnNvbGUubG9nKHIpfX07CmEuaGFzTGF0KGIpJiZhLmhhc0xuZyhiKT8oZD1uZXcgZ29vZ2xlLm1hcHMuTGF0TG5nKE51bWJlcihiLmdlb21ldHJ5LmxvY2F0aW9uLmxhdCksTnVtYmVyKGIuZ2VvbWV0cnkubG9jYXRpb24ubG5nKSksZihbe2dlb21ldHJ5Ontsb2NhdGlvbjpkfX1dLCJPSyIpKTpsLmdlb2NvZGUoe2FkZHJlc3M6Yi5hZGRyZXNzfSxmKX0pfSk7Z29vZ2xlLm1hcHMuZXZlbnQuYWRkRG9tTGlzdGVuZXIod2luZG93LCJyZXNpemUiLGZ1bmN0aW9uKCl7Yy5zZXRDZW50ZXJXaXRoT2Zmc2V0KGcsZSxoKX0pfWEub3B0aW9ucy5vbkFmdGVySW5pdCgpfV9oYXNMYXRMbmdQcm9wKGEsZSl7cmV0dXJuIGEuaGFzT3duUHJvcGVydHkoImdlb21ldHJ5IikmJmEuZ2VvbWV0cnkuaGFzT3duUHJvcGVydHkoImxvY2F0aW9uIikmJmEuZ2VvbWV0cnkubG9jYXRpb24uaGFzT3duUHJvcGVydHkoZSkmJiJmYWxzZSIhPWEuZ2VvbWV0cnkubG9jYXRpb25bZV0\/ITA6ITF9aGFzTGF0KGEpe3JldHVybiB0aGlzLl9oYXNMYXRMbmdQcm9wKGEsCiJsYXQiKX1oYXNMbmcoYSl7cmV0dXJuIHRoaXMuX2hhc0xhdExuZ1Byb3AoYSwibG5nIil9fTsKLyoqIC9tL2pzL2Zvb3RlcldpZGdldF9NLmpzICoqLwp2YXIgX19fZDJjX2Zvb3RlcldpZGdldE1qc19jX29uPSIyMDI2LTAxLTEyIDEwOjEzOjE2IjsndXNlIHN0cmljdCc7dmFyIHRyYWNrRm9vdGVyTWFwTG9hZD1mdW5jdGlvbigpe3ZhciBhPSQoIiN0YXJnZXRQYWdlIikudmFsKCk7InVuZGVmaW5lZCI9PWEmJihhPSJVTktOT1dOIik7Z2FUcmFjaygiYy5fdHJhY2tFdmVudCIsIkZvb3Rlci1NYXAtTG9hZCIsIk1vYmlsZSIsYSwxKX07CmluVmlld0V4ZWMoIiNmb290ZXJHb29nbGVNYXAiLGZ1bmN0aW9uKCl7aWYoJCgiI2Zvb3Rlckdvb2dsZU1hcCIpLmxlbmd0aCl0cnl7R29vZ2xlTWFwc1dyYXBwZXIuc2V0R29vZ2xlTWFwKCk7dmFyIGE9JCgiI2Zvb3Rlckdvb2dsZU1hcFpvb20iKS52YWwoKSxjPTE8cGFyc2VJbnQoYSkmJjE4Pj1wYXJzZUludChhKT9wYXJzZUludChhKTo5O3dpbmRvdy5mb290ZXJHb29nbGVNYXBPYmplY3Q9bmV3IEdvb2dsZU1hcHNXcmFwcGVyKHtlbGVtZW50OiJmb290ZXJHb29nbGVNYXAiLGFkZHJlc3NlczoidW5kZWZpbmVkIiE9dHlwZW9mIGZvb3Rlck1hcEFkZHJlc3Nlcz9mb290ZXJNYXBBZGRyZXNzZXM6W10sem9vbTpjLG9uQmVmb3JlSW5pdDpmdW5jdGlvbigpe3RyYWNrRm9vdGVyTWFwTG9hZCgpfSxvbkFmdGVySW5pdDpmdW5jdGlvbigpeyJ1bmRlZmluZWQiIT10eXBlb2YgZm9vdGVyTWFwQWRkcmVzc2VzJiYwIT1mb290ZXJNYXBBZGRyZXNzZXMubGVuZ3RofHwkKCIjZm9vdGVyR29vZ2xlTWFwIikuaGlkZSgpfX0pOwp3aW5kb3cuZm9vdGVyR29vZ2xlTWFwT2JqZWN0LmluaXQoKX1jYXRjaChiKXtjb25zb2xlLmxvZyhiKX19KTtpblZpZXdFeGVjKCIjZm9vdGVyR29vZ2xlTWFwSWZyYW1lIixmdW5jdGlvbigpe3RyYWNrRm9vdGVyTWFwTG9hZCgpfSk7CiQoZnVuY3Rpb24oKXtmdW5jdGlvbiBhKCl7InVuZGVmaW5lZCIhPT10eXBlb2Ygd2luZG93LmZvb3Rlckdvb2dsZU1hcE9iamVjdD93aW5kb3cuZm9vdGVyR29vZ2xlTWFwT2JqZWN0LmNhbGN1bGF0ZUFuZERpc3BsYXlSb3V0ZSgpOihjb25zb2xlLmxvZygiSUNJIiksc2V0VGltZW91dChhLDUwMCkpfWluVmlld0V4ZWMoIiNtYXBfb3Blbl9ob3VycyIsZnVuY3Rpb24oKXsobmV3IE9wZW5Ib3Vycyh7Y29udGFpbmVyOiIjbWFwX29wZW5faG91cnMiLGF1dG9PcGVuOiEwfSkpLmluaXQoKX0pOyQoImRpdiNwaG9uZU51bWJlckRpdiBsaSBhIikub24oImNsaWNrIixmdW5jdGlvbigpeyJ1bmRlZmluZWQiIT10eXBlb2YgYWN0aXZlVXNlclByb2ZpbGVNbmcmJiJ1bmRlZmluZWQiIT10eXBlb2YgYWN0aXZlVXNlclByb2ZpbGVNbmcubG9nUGFnZVZpZXdFdmVudCYmYWN0aXZlVXNlclByb2ZpbGVNbmcubG9nUGFnZVZpZXdFdmVudCgicGhvbmUuY2FsbCIsJCh0aGlzKS5hdHRyKCJocmVmIikucmVwbGFjZSgidGVsOiIsCiIiKSl9KTskKCIjZGlyZWN0aW9uc0J1dHRvbkhlYWRlciIpLm9uKCJjbGljayIsZnVuY3Rpb24oYyl7Yy5wcmV2ZW50RGVmYXVsdCgpOyQoImh0bWwsIGJvZHkiKS5hbmltYXRlKHtzY3JvbGxUb3A6JCgiI2Zvb3Rlckdvb2dsZU1hcEhvdXJzIikub2Zmc2V0KCkudG9wfSwyRTMpO2EoKX0pfSk7CndpbmRvdy5vbmxvYWQ9ZnVuY3Rpb24oKXsoZnVuY3Rpb24oKXt2YXIgYT17bmV3X2dlb2xvYzohMSx1c2VyQ29vcmQ6ITEscmVzdWx0OiExLHByZXZfZ2VvbG9jOkNvb2tpZXMuZ2V0KCJnZW9sb2NQcm9jZXNzZWQiKT9KU09OLnBhcnNlKENvb2tpZXMuZ2V0KCJnZW9sb2NQcm9jZXNzZWQiKSk6ITEsZGVhbGVyX3Zpc2l0ZWQ6Q29va2llcy5nZXQoImRlYWxlclZpc2l0ZWQiKT9KU09OLnBhcnNlKENvb2tpZXMuZ2V0KCJkZWFsZXJWaXNpdGVkIikpOiExLGRlYWxlckFkZHJlc3M6IiIsZ2V0UHJldkxvY2F0aW9uOmZ1bmN0aW9uKCl7cmV0dXJuIENvb2tpZXMuZ2V0KCJnZW9sb2NQcm9jZXNzZWQiKT9KU09OLnBhcnNlKENvb2tpZXMuZ2V0KCJnZW9sb2NQcm9jZXNzZWQiKSk6ITF9LHByb2Nlc3NVc2VyTG9jYXRpb246ZnVuY3Rpb24oYil7YS5uZXdfZ2VvbG9jPWI7c3dpdGNoKCEwKXtjYXNlIDA9PWEucHJldl9nZW9sb2N8fGEucHJldl9nZW9sb2MuYWNjZXB0ZWQhPWIucmVzdWx0OmEubmV3X2dlb2xvYy5sb2NhdGlvbl9zdHI9CjE9PWIucmVzdWx0P2IuZ2VvY29kZV9hZGRyZXNzX3N0cisiKCIrYi5hY2N1cmFjeSsiKSI6Ikdlb2xvY2F0aW9uIHJlZnVzZWQiO2EubmV3X2dlb2xvYy5kZXNjcmlwdGlvbj0xPT1iLnJlc3VsdD8iQUNDRVBURUQiOiIiO2EudXNlckNvb3JkPXtsYXQ6Yi5sYXRpdHVkZSwibG9uZyI6Yi5sb25naXR1ZGV9O2EuY29tcGFyZVRvRGVhbGVyTG9jYXRpb24oKTticmVhaztjYXNlIDE9PWEucHJldl9nZW9sb2MuYWNjZXB0ZWQmJjE9PWIucmVzdWx0OnZhciBkPXtsYXQ6YS5wcmV2X2dlb2xvYy5sYXRpdHVkZSwibG9uZyI6YS5wcmV2X2dlb2xvYy5sb25naXR1ZGV9O2EudXNlckNvb3JkPXtsYXQ6Yi5sYXRpdHVkZSwibG9uZyI6Yi5sb25naXR1ZGV9OzIwMDxjLmdldERpc3RhbmNlKGQsYS51c2VyQ29vcmQpJiYoYS5uZXdfZ2VvbG9jLmRlc2NyaXB0aW9uPSJVUERBVEVEIixhLm5ld19nZW9sb2MubG9jYXRpb25fc3RyPWIuZ2VvY29kZV9hZGRyZXNzX3N0cisiKCIrYi5hY2N1cmFjeSsiKSIsCmEuY29tcGFyZVRvRGVhbGVyTG9jYXRpb24oKSl9fSxjb21wYXJlVG9EZWFsZXJMb2NhdGlvbjpmdW5jdGlvbihiKXsib2JqZWN0Ij09dHlwZW9mIGImJmIubGF0JiZiLmxvbmc\/MjAxPmMuZ2V0RGlzdGFuY2UoYS51c2VyQ29vcmQsYik\/MD09YS5kZWFsZXJfdmlzaXRlZCYmKGEubmV3X2dlb2xvYy5sb2NhdGlvbl9zdHI9YS5kZWFsZXJBZGRyZXNzKyIoIithLm5ld19nZW9sb2MuYWNjdXJhY3krIikiLGEubmV3X2dlb2xvYy5kZXNjcmlwdGlvbj0iREVBTEVSX0xPQ0FUSU9OIixhLmxvZ1BhZ2VFdmVudChhLm5ld19nZW9sb2MubG9jYXRpb25fc3RyKSxiPW5ldyBEYXRlLGIuc2V0SG91cnMoMjMsNTksNTksMCksQ29va2llcy5zZXQoImRlYWxlclZpc2l0ZWQiLDEsYiwiLyIpKTowPT1hLnByZXZfZ2VvbG9jJiZhLmxvZ1BhZ2VFdmVudChhLm5ld19nZW9sb2MubG9jYXRpb25fc3RyKTphLmdldERlYWxlckNvb3JkKCl9LGdldERlYWxlckNvb3JkOmZ1bmN0aW9uKCl7YS5kZWFsZXJBZGRyZXNzPQokKCdtZXRhW25hbWU9Imdlby5wbGFjZW5hbWUiXScpLnByb3AoImNvbnRlbnQiKTtjLmdldEFkZHJlc3NDb29yZChhLmRlYWxlckFkZHJlc3MsYS5jb21wYXJlVG9EZWFsZXJMb2NhdGlvbil9LGxvZ1BhZ2VFdmVudDpmdW5jdGlvbihiKXtiJiYwPGIubGVuZ3RoJiYxPT1hLm5ld19nZW9sb2MucmVzdWx0JiYidW5kZWZpbmVkIiE9dHlwZW9mIGFjdGl2ZVVzZXJQcm9maWxlTW5nJiYidW5kZWZpbmVkIiE9dHlwZW9mIGFjdGl2ZVVzZXJQcm9maWxlTW5nLmxvZ1BhZ2VWaWV3RXZlbnQmJihiPWEubmV3X2dlb2xvYy5kZXNjcmlwdGlvbisiOiAiK2IsYWN0aXZlVXNlclByb2ZpbGVNbmcubG9nUGFnZVZpZXdFdmVudCgiVFJBQ0tfR0VPTE9DIixiKSk7Z2V0VVVJRD1mdW5jdGlvbigpe3JldHVybiJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93LmFjdGl2ZVByb2ZpbGVJRCYmbnVsbCE9d2luZG93LmFjdGl2ZVByb2ZpbGVJRD93aW5kb3cuYWN0aXZlUHJvZmlsZUlEOiJ1bmRlZmluZWQiIT0KdHlwZW9mIGFjdGl2ZVVzZXJQcm9maWxlTW5nJiZudWxsIT1hY3RpdmVVc2VyUHJvZmlsZU1uZy51aWQ\/YWN0aXZlVXNlclByb2ZpbGVNbmcudWlkOiJ1bmRlZmluZWQiIT10eXBlb2YgQ29va2llcyYmInVuZGVmaW5lZCIhPUNvb2tpZXMuZ2V0KCJ1dWlkIikmJm51bGwhPUNvb2tpZXMuZ2V0KCJ1dWlkIik\/Q29va2llcy5nZXQoInV1aWQiKToiIn07Yj0idW5kZWZpbmVkIiE9dHlwZW9mIENvb2tpZXMmJiJ1bmRlZmluZWQiIT10eXBlb2YgQ29va2llcy5nZXQoInVzaWQiKSYmbnVsbCE9Q29va2llcy5nZXQoInVzaWQiKT9Db29raWVzLmdldCgidXNpZCIpOjA7dmFyIGQ9Z2V0VVVJRCgpLGU9JCgiI3NpdGVJRCIpLnZhbCgpOyQuYWpheCh7dHlwZToiUE9TVCIsdXJsOiJodHRwczovL3Jlc3QuZDJjbWVkaWEuY2EvZ2VvbG9jVHJhY2tpbmcvc2l0ZXZpc2l0b3IiLGRhdGE6e3V1aWQ6ZCxzZXNzaW9uaWQ6YixzaXRlSUQ6ZSxzdGF0dXM6YS5uZXdfZ2VvbG9jLmdlb2xvY19zdGF0dXMsCmRlc2M6YS5uZXdfZ2VvbG9jLmRlc2NyaXB0aW9uLGxhdGl0dWRlOmEubmV3X2dlb2xvYy5sYXRpdHVkZSxsb25naXR1ZGU6YS5uZXdfZ2VvbG9jLmxvbmdpdHVkZSxwb3N0YWxfY29kZTphLm5ld19nZW9sb2MucG9zdGFsX2NvZGUsYWNjdXJhY3k6YS5uZXdfZ2VvbG9jLmFjY3VyYWN5LGFkZHJlc3M6YS5uZXdfZ2VvbG9jLmdlb2NvZGVfYWRkcmVzc19zdHIsbG9jYXRpb25fc3RyOmEubmV3X2dlb2xvYy5sb2NhdGlvbl9zdHIsZ2VvbG9jX2RhdGU6YS5uZXdfZ2VvbG9jLmdlb2xvY19kYXRlfSxzdWNjZXNzOmZ1bmN0aW9uKGYpe30sZmFpbHVyZTpmdW5jdGlvbihmKXt9fSl9fTtpZigidW5kZWZpbmVkIiE9dHlwZW9mICQoIiNhc2tWaXNpdG9yR2VvbG9jIikudmFsKCkmJjE9PSQoIiNhc2tWaXNpdG9yR2VvbG9jIikudmFsKCkmJiJ1bmRlZmluZWQiIT10eXBlb2YgZ2VvTG9jYXRvcil7dmFyIGM9bmV3IGdlb0xvY2F0b3IoYS5wcm9jZXNzVXNlckxvY2F0aW9uKTtjLmZvcmNlR2VvbG9jQXR0ZW1wdD0KITA7Yy5nZXRMb2NhdGlvbigpfX0pKCl9OyQoZnVuY3Rpb24oKXskKCIuY0V4cGVuZExpc3QgQlVUVE9OIikub24oImNsaWNrIixmdW5jdGlvbigpe3ZhciBhPSQodGhpcykuY2xvc2VzdCgiZGl2LmNGb290ZXJDYXJMaW5rcyIpO2EubGVuZ3RoJiYoYS5oYXNDbGFzcygiY0xpc3RFeHBlbmRlZCIpfHxhLmFkZENsYXNzKCJjTGlzdEV4cGVuZGVkIikuZmluZCgiLmNFeHBlbmRMaXN0IikuaGlkZSgpKX0pfSk7Ci8qKiAvbS9qcy90b2FzdHIuanMgKiovCnZhciBfX19kMmNfdG9hc3RyanNfY19vbj0iMjAyNS0wNS0yMyAxNzoxMjowOSI7J3VzZSBzdHJpY3QnO3ZhciBfX19kMmNfdG9hc3RyanNfY19vbj0iMjAyNC0wMy0yNiAxMjozMDoxNSI7InVzZSBzdHJpY3QiOwooZnVuY3Rpb24oeil7eihbImpxdWVyeSJdLGZ1bmN0aW9uKGQpe3JldHVybiBmdW5jdGlvbigpe2Z1bmN0aW9uIG4oYSxjKXthfHwoYT1sKCkpO2Y9ZCgiIyIrYS5jb250YWluZXJJZCk7aWYoZi5sZW5ndGgpcmV0dXJuIGY7YyYmKGY9ZCgiPGRpdi8+IikuYXR0cigiaWQiLGEuY29udGFpbmVySWQpLmFkZENsYXNzKGEucG9zaXRpb25DbGFzcykuYXR0cigiYXJpYS1saXZlIiwicG9saXRlIikuYXR0cigicm9sZSIsImFsZXJ0IikuY3NzKCJjb2xvciIsYS5jb2xvciksZi5hcHBlbmRUbyhkKGEudGFyZ2V0KSkpO3JldHVybiBmfWZ1bmN0aW9uIEEoYSxjLGUpe2U9ZSYmZS5mb3JjZT9lLmZvcmNlOiExO3JldHVybiBhJiYoZXx8MD09PWQoIjpmb2N1cyIsYSkubGVuZ3RoKT8oYVtjLmhpZGVNZXRob2RdKHtkdXJhdGlvbjpjLmhpZGVEdXJhdGlvbixlYXNpbmc6Yy5oaWRlRWFzaW5nLGNvbXBsZXRlOmZ1bmN0aW9uKCl7dShhKX19KSwhMCk6ITF9ZnVuY3Rpb24gRSgpe3JldHVybnt0YXBUb0Rpc21pc3M6ITAsCnRvYXN0Q2xhc3M6InRvYXN0Iixjb250YWluZXJJZDoidG9hc3QtY29udGFpbmVyIixkZWJ1ZzohMSxzaG93TWV0aG9kOiJmYWRlSW4iLHNob3dEdXJhdGlvbjozMDAsc2hvd0Vhc2luZzoic3dpbmciLG9uU2hvd246ZnVuY3Rpb24oKXtkKCIudHJhZGVJbkJhck1vYmlsZUJ1dHRvbiIpLmFkZENsYXNzKCJ3aXRoVG9hc3RlciIpO2QoIi5wcm9tb1RvcEJ0bi5mbG9hdGluZyIpLmFkZENsYXNzKCJ3aXRoVG9hc3RlciIpfSxoaWRlTWV0aG9kOiJmYWRlT3V0IixoaWRlRHVyYXRpb246MUUzLGhpZGVFYXNpbmc6InN3aW5nIixvbkhpZGRlbjpmdW5jdGlvbigpe2QoIi50cmFkZUluQmFyTW9iaWxlQnV0dG9uIikucmVtb3ZlQ2xhc3MoIndpdGhUb2FzdGVyIik7ZCgiLnByb21vVG9wQnRuLmZsb2F0aW5nIikucmVtb3ZlQ2xhc3MoIndpdGhUb2FzdGVyIil9LG9uQ2xvc2U6ZnVuY3Rpb24oKXtkKCIudHJhZGVJbkJhck1vYmlsZUJ1dHRvbiIpLnJlbW92ZUNsYXNzKCJ3aXRoVG9hc3RlciIpOwpkKCIucHJvbW9Ub3BCdG4uZmxvYXRpbmciKS5yZW1vdmVDbGFzcygid2l0aFRvYXN0ZXIiKX0sZXh0ZW5kZWRUaW1lT3V0OjFFMyxpY29uQ2xhc3Nlczp7ZXJyb3I6InRvYXN0LWVycm9yIixpbmZvOiJ0b2FzdC1pbmZvIixzdWNjZXNzOiJ0b2FzdC1zdWNjZXNzIix3YXJuaW5nOiJ0b2FzdC13YXJuaW5nIn0saWNvbkNsYXNzOiJ0b2FzdC1pbmZvIixjb2xvcjoiI0ZGRiIsYmdDb2xvcjoiIixwb3NpdGlvbkNsYXNzOiJ0b2FzdC10b3AtcmlnaHQiLHRpbWVPdXQ6NUUzLHRpdGxlQ2xhc3M6InRvYXN0LXRpdGxlIixtZXNzYWdlQ2xhc3M6InRvYXN0LW1lc3NhZ2UiLHRhcmdldDoiYm9keSIsY2xvc2VIdG1sOic8YnV0dG9uIHR5cGU9ImJ1dHRvbiI+JnRpbWVzOzwvYnV0dG9uPicsbmV3ZXN0T25Ub3A6ITAscHJldmVudER1cGxpY2F0ZXM6ITEscHJvZ3Jlc3NCYXI6ITF9fWZ1bmN0aW9uIHIoYSl7ZnVuY3Rpb24gYyhrKXtpZighZCgiOmZvY3VzIixnKS5sZW5ndGh8fGspcmV0dXJuIGNsZWFyVGltZW91dChoLmludGVydmFsSWQpLApnW2IuaGlkZU1ldGhvZF0oe2R1cmF0aW9uOmIuaGlkZUR1cmF0aW9uLGVhc2luZzpiLmhpZGVFYXNpbmcsY29tcGxldGU6ZnVuY3Rpb24oKXt1KGcpO2lmKGIub25IaWRkZW4mJiJoaWRkZW4iIT09bS5zdGF0ZSliLm9uSGlkZGVuKCk7bS5zdGF0ZT0iaGlkZGVuIjttLmVuZFRpbWU9bmV3IERhdGU7cCYmcChtKX19KX1mdW5jdGlvbiBlKCl7aWYoMDxiLnRpbWVPdXR8fDA8Yi5leHRlbmRlZFRpbWVPdXQpdj1zZXRUaW1lb3V0KGMsYi5leHRlbmRlZFRpbWVPdXQpLGgubWF4SGlkZVRpbWU9cGFyc2VGbG9hdChiLmV4dGVuZGVkVGltZU91dCksaC5oaWRlRXRhPShuZXcgRGF0ZSkuZ2V0VGltZSgpK2gubWF4SGlkZVRpbWV9ZnVuY3Rpb24gRigpe2NsZWFyVGltZW91dCh2KTtoLmhpZGVFdGE9MDtnLnN0b3AoITAsITApW2Iuc2hvd01ldGhvZF0oe2R1cmF0aW9uOmIuc2hvd0R1cmF0aW9uLGVhc2luZzpiLnNob3dFYXNpbmd9KX1mdW5jdGlvbiBHKCl7dmFyIGs9KGguaGlkZUV0YS0obmV3IERhdGUpLmdldFRpbWUoKSkvCmgubWF4SGlkZVRpbWUqMTAwO3cud2lkdGgoaysiJSIpfXZhciBiPWwoKSx4PWEuaWNvbkNsYXNzfHxiLmljb25DbGFzczsidW5kZWZpbmVkIiE9PXR5cGVvZiBhLm9wdGlvbnNPdmVycmlkZSYmKGI9ZC5leHRlbmQoYixhLm9wdGlvbnNPdmVycmlkZSkseD1hLm9wdGlvbnNPdmVycmlkZS5pY29uQ2xhc3N8fHgpO2E6e2lmKGIucHJldmVudER1cGxpY2F0ZXMpaWYoYS5tZXNzYWdlPT09eSl7dmFyIHE9ITA7YnJlYWsgYX1lbHNlIHk9YS5tZXNzYWdlO3E9ITF9aWYoIXEpe0IrKztmPW4oYiwhMCk7dmFyIHY9bnVsbCxnPWQoIjxkaXYvPiIpO3E9ZCgiPGRpdi8+Iik7dmFyIEM9ZCgiPGRpdi8+Iiksdz1kKCI8ZGl2Lz4iKSx0PWQoYi5jbG9zZUh0bWwpLGg9e2ludGVydmFsSWQ6bnVsbCxoaWRlRXRhOm51bGwsbWF4SGlkZVRpbWU6bnVsbH0sbT17dG9hc3RJZDpCLHN0YXRlOiJ2aXNpYmxlIixzdGFydFRpbWU6bmV3IERhdGUsb3B0aW9uczpiLG1hcDphfTs2PGIuYmdDb2xvci5sZW5ndGgmJgpnLmNzcygiYmFja2dyb3VuZC1jb2xvciIsYi5iZ0NvbG9yKTthLmljb25DbGFzcyYmZy5hZGRDbGFzcyhiLnRvYXN0Q2xhc3MpLmFkZENsYXNzKHgpO2EudGl0bGUmJihxLmFwcGVuZChhLnRpdGxlKS5hZGRDbGFzcyhiLnRpdGxlQ2xhc3MpLGcuYXBwZW5kKHEpKTthLm1lc3NhZ2UmJihDLmFwcGVuZChhLm1lc3NhZ2UpLmFkZENsYXNzKGIubWVzc2FnZUNsYXNzKSxnLmFwcGVuZChDKSk7Yi5jbG9zZUJ1dHRvbiYmKHQuYWRkQ2xhc3MoInRvYXN0LWNsb3NlLWJ1dHRvbiIpLmF0dHIoInJvbGUiLCJidXR0b24iKSxnLnByZXBlbmQodCkpO2IucHJvZ3Jlc3NCYXImJih3LmFkZENsYXNzKCJ0b2FzdC1wcm9ncmVzcyIpLGcucHJlcGVuZCh3KSk7Yi5uZXdlc3RPblRvcD9mLnByZXBlbmQoZyk6Zi5hcHBlbmQoZyk7Zy5oaWRlKCk7Z1tiLnNob3dNZXRob2RdKHtkdXJhdGlvbjpiLnNob3dEdXJhdGlvbixlYXNpbmc6Yi5zaG93RWFzaW5nLGNvbXBsZXRlOmIub25TaG93bn0pOzA8Yi50aW1lT3V0JiYKKHY9c2V0VGltZW91dChjLGIudGltZU91dCksaC5tYXhIaWRlVGltZT1wYXJzZUZsb2F0KGIudGltZU91dCksaC5oaWRlRXRhPShuZXcgRGF0ZSkuZ2V0VGltZSgpK2gubWF4SGlkZVRpbWUsYi5wcm9ncmVzc0JhciYmKGguaW50ZXJ2YWxJZD1zZXRJbnRlcnZhbChHLDEwKSkpOyhmdW5jdGlvbigpe2cub24oIm1vdXNlZW50ZXIiLEYpLm9uKCJtb3VzZWxlYXZlIixlKTtpZighYi5vbmNsaWNrJiZiLnRhcFRvRGlzbWlzcylnLm9uKCJjbGljayIsYyk7aWYoYi5jbG9zZUJ1dHRvbiYmdCl0Lm9uKCJjbGljayIsZnVuY3Rpb24oayl7ay5zdG9wUHJvcGFnYXRpb24\/ay5zdG9wUHJvcGFnYXRpb24oKTp2b2lkIDAhPT1rLmNhbmNlbEJ1YmJsZSYmITAhPT1rLmNhbmNlbEJ1YmJsZSYmKGsuY2FuY2VsQnViYmxlPSEwKTtpZigiZnVuY3Rpb24iPT10eXBlb2YgYi5vbkNsb3NlKWIub25DbG9zZSgpO2MoITApfSk7aWYoYi5vbmNsaWNrKWcub24oImNsaWNrIixmdW5jdGlvbigpe2Iub25jbGljaygpOwpjKCl9KX0pKCk7cCYmcChtKTtiLmRlYnVnJiZjb25zb2xlJiZjb25zb2xlLmxvZyhtKTtyZXR1cm4gZ319ZnVuY3Rpb24gbCgpe3JldHVybiBkLmV4dGVuZCh7fSxFKCksRC5vcHRpb25zKX1mdW5jdGlvbiB1KGEpe2Z8fChmPW4oKSk7YS5pcygiOnZpc2libGUiKXx8KGEucmVtb3ZlKCksMD09PWYuY2hpbGRyZW4oKS5sZW5ndGgmJihmLnJlbW92ZSgpLHk9dm9pZCAwKSl9dmFyIGYscCxCPTAsRD17Y2xlYXI6ZnVuY3Rpb24oYSxjKXt2YXIgZT1sKCk7Znx8bihlKTtpZighQShhLGUsYykpZm9yKGE9Zi5jaGlsZHJlbigpLGM9YS5sZW5ndGgtMTswPD1jO2MtLSlBKGQoYVtjXSksZSl9LHJlbW92ZTpmdW5jdGlvbihhKXt2YXIgYz1sKCk7Znx8bihjKTthJiYwPT09ZCgiOmZvY3VzIixhKS5sZW5ndGg\/dShhKTpmLmNoaWxkcmVuKCkubGVuZ3RoJiZmLnJlbW92ZSgpfSxlcnJvcjpmdW5jdGlvbihhLGMsZSl7cmV0dXJuIHIoe3R5cGU6ImVycm9yIixpY29uQ2xhc3M6bCgpLmljb25DbGFzc2VzLmVycm9yLAptZXNzYWdlOmEsb3B0aW9uc092ZXJyaWRlOmUsdGl0bGU6Y30pfSxnZXRDb250YWluZXI6bixpbmZvOmZ1bmN0aW9uKGEsYyxlKXtyZXR1cm4gcih7dHlwZToiaW5mbyIsaWNvbkNsYXNzOmwoKS5pY29uQ2xhc3Nlcy5pbmZvLG1lc3NhZ2U6YSxvcHRpb25zT3ZlcnJpZGU6ZSx0aXRsZTpjfSl9LG9wdGlvbnM6e30sc3Vic2NyaWJlOmZ1bmN0aW9uKGEpe3A9YX0sc3VjY2VzczpmdW5jdGlvbihhLGMsZSl7cmV0dXJuIHIoe3R5cGU6InN1Y2Nlc3MiLGljb25DbGFzczpsKCkuaWNvbkNsYXNzZXMuc3VjY2VzcyxtZXNzYWdlOmEsb3B0aW9uc092ZXJyaWRlOmUsdGl0bGU6Y30pfSx2ZXJzaW9uOiIyLjEuMSIsd2FybmluZzpmdW5jdGlvbihhLGMsZSl7cmV0dXJuIHIoe3R5cGU6Indhcm5pbmciLGljb25DbGFzczpsKCkuaWNvbkNsYXNzZXMud2FybmluZyxtZXNzYWdlOmEsb3B0aW9uc092ZXJyaWRlOmUsdGl0bGU6Y30pfX0seTtyZXR1cm4gRH0oKX0pfSkoImZ1bmN0aW9uIj09PXR5cGVvZiBkZWZpbmUmJgpkZWZpbmUuYW1kP2RlZmluZTpmdW5jdGlvbih6LGQpeyJ1bmRlZmluZWQiIT09dHlwZW9mIG1vZHVsZSYmbW9kdWxlLmV4cG9ydHM\/bW9kdWxlLmV4cG9ydHM9ZChyZXF1aXJlKCJqcXVlcnkiKSk6d2luZG93LnRvYXN0cj1kKHdpbmRvdy5qUXVlcnkpfSk7Ci8qKiAvbS9qcy9kZWFsZXJTbXNOdW1iZXIuanMgKiovCnZhciBfX19kMmNfZGVhbGVyU21zTnVtYmVyanNfY19vbj0iMjAyNi0wMy0xMiAxNjozMDowMyI7J3VzZSBzdHJpY3QnO3dpbmRvdy5kZWFsZXJTbXNOdW1iZXI9d2luZG93LmRlYWxlclNtc051bWJlcnx8bmV3IGZ1bmN0aW9uKCl7dGhpcy5fbmFtZT0iZGVhbGVyU21zTnVtYmVyIjt0aGlzLl9yaWQ9MDt0aGlzLl9vYnM9W107dGhpcy5fYnVpbGRRdWVyeT1mdW5jdGlvbihhLGMpe2M9InN0cmluZyI9PT10eXBlb2YgYz9jOigkKCJib2R5LkVOR0xJU0giKS5sZW5ndGg\/Ii9lbi8iOiIvZnIvIikrImFqYXgvZ2V0RGVhbGVyU21zTnVtYmVyIjt2YXIgYixkPXt3c3dpZHRoOiIwIn0sZz1bIlVVSUQiLCJtZXNzYWdlVHlwZSJdO2MrPSI\/Ijtmb3IoYiBpbiBnKWlmKCJ1bmRlZmluZWQiPT09dHlwZW9mIGFbZ1tiXV18fCIiPT1hW2dbYl1dKXJldHVybiB0aGlzLl9vbkVycm9yKCdtYW5kYXRvcnkgZmllbGQgaXMgbWlzc2luZyAiJytnW2JdKyciJyksITE7Zm9yKGIgaW4gYSlhLmhhc093blByb3BlcnR5KGIpJiYoZFtiXT1hW2JdKTtmb3IoYiBpbiBkKWQuaGFzT3duUHJvcGVydHkoYikmJgooYys9IiYiK2IrIj0iK2VuY29kZVVSSUNvbXBvbmVudChkW2JdKSk7cmV0dXJuIGN9O3RoaXMuX29uRXJyb3I9ZnVuY3Rpb24oYSl7Y29uc29sZS5lcnJvcih0aGlzLl9uYW1lLGEpfTt0aGlzLl9ub3RpZnlPYnNlcnZlcj1mdW5jdGlvbihhLGMpe3RoaXMuX29ic1thXShjKTtkZWxldGUgdGhpcy5fb2JzW2FdfTt0aGlzLl9kb1JlcXVlc3Q9ZnVuY3Rpb24oYSxjKXt2YXIgYj10aGlzLl9vblJlc3BvbnNlLmJpbmQodGhpcyk7JC5hamF4KHtjYjpiLHJpZDpjLHR5cGU6IkdFVCIsY2FjaGU6ITEsYXN5bmM6ITAsZGF0YVR5cGU6Impzb24iLHVybDphfSkuZG9uZShmdW5jdGlvbihkKXt0aGlzLmNiKHRoaXMucmlkLG51bGw9PT1kPyExOmQsITEpfSkuZmFpbChmdW5jdGlvbihkLGcpe3RoaXMuY2IodGhpcy5yaWQsITEsZyl9KX07dGhpcy5fb25SZXNwb25zZT1mdW5jdGlvbihhLGMsYil7aWYoITEhPT1iKXRoaXMuX29uRXJyb3IoInJlc3BvbnNlIGVycm9yOiAiK2IpO2Vsc2UgdHJ5eyExPT09CmM\/dGhpcy5fb25FcnJvcigiLmRhdGEgZXF1YWwgZmFsc2UiKToidW5kZWZpbmVkIiE9PXR5cGVvZiBjLnN1Y2Nlc3MmJiEwIT09Yy5zdWNjZXNzPyh0aGlzLl9vbkVycm9yKCIuZGF0YSBlcnJvcjogIitjLmVycm9yTWVzc2FnZSksYz0hMSk6KGI9ITEsInN0cmluZyIhPT10eXBlb2YgYy5kYXRhLm51bWJlciYmKHRoaXMuX29uRXJyb3IoIi5kYXRhIGludmFsaWQgc21zIG51bWJlciIpLGI9ITApLCJzdHJpbmciIT09dHlwZW9mIGMuZGF0YS5tZXNzYWdlJiYodGhpcy5fb25FcnJvcigiLm1lc3NhZ2UgaW52YWxpZCBzbXMgbWVzc2FnZSIpLGI9ITApLGM9Yj8hMTp7c21zbnVtYmVyOmMuZGF0YS5udW1iZXIsc21zbWVzc2FnZTpjLmRhdGEubWVzc2FnZSxzbXNjb2RlOmMuZGF0YS5zbXNDb2RlfSl9Y2F0Y2goZCl7dGhpcy5fb25FcnJvcigiLmRhdGEgZXhjZXB0aW9uOiIrZCksYz0hMX10aGlzLl9ub3RpZnlPYnNlcnZlcihhLGMpfTt0aGlzLl9hZGRPYnNlcnZlcj1mdW5jdGlvbihhKXtpZigiZnVuY3Rpb24iPT09CnR5cGVvZiBhKXt2YXIgYz10aGlzLl9yaWQrKzt0aGlzLl9vYnNbY109YTtyZXR1cm4gY310aGlzLl9vbkVycm9yKCJpcyBub3QgYSB2YWxpZCBjYWxsYmFjayBmdW5jdGlvbiIpO3JldHVybiExfTt0aGlzLl9hZGRDb21tb25WYWx1ZXNUb0RhdGE9ZnVuY3Rpb24oYSxjLGIpeyJvYmplY3QiIT09dHlwZW9mIGImJihiPXt9KTtiLlVVSUQ9YTtiLnNlc3Npb25JZD1jO2IudGVjaG5vbG9neT0iSFRNTCI7Yi51cmw9d2luZG93LmxvY2F0aW9uLmhyZWY7YT1nZXRDb29raWUoImdjbGlkIik\/Z2V0Q29va2llKCJnY2xpZCIpOiIiO251bGwhPT1hJiYidW5kZWZpbmVkIiE9PWEmJiIiIT09YSYmITEhPT1hJiYoYi5nb29nbGVDbGlja0lkPWEpO2E9Z2V0R2FDbGllbnRJZCgpO251bGwhPT1hJiYidW5kZWZpbmVkIiE9PWEmJiIiIT09YSYmITEhPT1hJiYoYi5nYUNsaWVudElkPWEpO2E9JCgiI3RleHRTZW5kVG9FbWFpbCIpLmxlbmd0aD8kKCIjdGV4dFNlbmRUb0VtYWlsIikudmFsKCk6IiI7IiIhPT0KYSYmKGIuc2VuZFRvRW1haWw9YSk7YT0kKCIjdGV4dFNlbmRUb0VtYWlsQURGIikubGVuZ3RoPyQoIiN0ZXh0U2VuZFRvRW1haWxBREYiKS52YWwoKToiIjsiIiE9PWEmJihiLnNlbmRUb0VtYWlsQWRmPWEpO2E9JCgnaW5wdXRbZGF0YS1mb3J2YXI9Ik9WRVJXUklUVEVSREVBTEVSIl0nKS5sZW5ndGg\/JCgnaW5wdXRbZGF0YS1mb3J2YXI9Ik9WRVJXUklUVEVSREVBTEVSIl0nKS52YWwoKToiIjsiIiE9PWEmJihiLmRlYWxlck5hbWU9YSk7bGV0IGQ9Yi5tYWtlLnRvTG93ZXJDYXNlKCk7aWYoJCgiI211bHRpLWFkZHJlc3Mtc3VibWlzc2lvbiIpLmxlbmd0aCYmIiIhPT1kJiYiY2FyZGV0YWlsLmh0bWwiIT0kKCIjUEFHRUlEIikudmFsKCkpe2E9JCgiI211bHRpLWFkZHJlc3Mtc3VibWlzc2lvbiIpLmZpbmQoInNlbGVjdCIpO2xldCBnPWVtYWlsSGFuZGxlci5nZXREZXAoKTthLmZpbmQoIm9wdGlvbltkYXRhLWJyYW5kc10iKS5lYWNoKGZ1bmN0aW9uKGUsZil7ZT0kKGYpLmRhdGEoImJyYW5kcyIpLnRvTG93ZXJDYXNlKCk7CmlmKCIiIT1lJiZlLnNwbGl0KCIsIikuaW5jbHVkZXMoZCkpe2xldCBoPWU9IiIsaz1mLnRleHQ7c3dpdGNoKGcpe2Nhc2UgIlVTRUQiOmU9JChmKS5kYXRhKCJlbWFpbHVzZWQiKTtoPSQoZikuZGF0YSgiZW1haWxhZGZ1c2VkIik7YnJlYWs7Y2FzZSAiU0VSVklDRSI6ZT0kKGYpLmRhdGEoImVtYWlsc2VydmljZSIpO2g9JChmKS5kYXRhKCJlbWFpbGFkZnNlcnZpY2UiKTticmVhaztjYXNlICJQQVJUUyI6ZT0kKGYpLmRhdGEoImVtYWlscGFydHMiKXx8JChmKS5kYXRhKCJlbWFpbHNlcnZpY2UiKTtoPSQoZikuZGF0YSgiZW1haWxhZGZwYXJ0cyIpfHwkKGYpLmRhdGEoImVtYWlsYWRmc2VydmljZSIpO2JyZWFrO2Nhc2UgIkZJTkFOQ0UiOmU9JChmKS5kYXRhKCJlbWFpbGZpbmFuY2UiKTtoPSQoZikuZGF0YSgiZW1haWxhZGZmaW5hbmNlIik7YnJlYWs7Y2FzZSAiTkVXIjplPSQoZikuZGF0YSgiZW1haWwiKSxoPSQoZikuZGF0YSgiZW1haWxhZGYiKX1pZigiIiE9PWV8fCIiIT09aCliLnNlbmRUb0VtYWlsPQplLGIuc2VuZFRvRW1haWxBZGY9aCxiLmRlYWxlck5hbWU9a319KX1hPSQoIiNDQU1QQUlHTklEIikubGVuZ3RoPyQoIiNDQU1QQUlHTklEIikudmFsKCk6IiI7IiIhPT1hJiYoYi5jYW1wYWlnbklkPWEpO2NvbnNvbGUubG9nKHRoaXMuX25hbWUrIi5kYXRhIixiKTtyZXR1cm4gYn07dGhpcy5faW5pdD1mdW5jdGlvbihhLGMsYixkLGcpe3ZhciBlO2lmKCExPT09KGE9dGhpcy5fYnVpbGRRdWVyeSh0aGlzLl9hZGRDb21tb25WYWx1ZXNUb0RhdGEoYSxjLGIpLGcpKXx8ITE9PT0oZT10aGlzLl9hZGRPYnNlcnZlcihkKSkpcmV0dXJuITE7c2V0VGltZW91dCh0aGlzLl9kb1JlcXVlc3QuYmluZCh0aGlzLGEsZSkpfTt0aGlzLmdldFNtc051bWJlcj1mdW5jdGlvbihhLGMsYil7aWYoIm9iamVjdCI9PT10eXBlb2Ygd2luZG93LmFjdGl2ZVVzZXJQcm9maWxlTW5nKWFjdGl2ZVVzZXJQcm9maWxlTW5nLnJlZ2lzdGVyQ2FsbGJhY2sodGhpcy5faW5pdC5iaW5kKHRoaXMsd2luZG93LmFjdGl2ZVVzZXJQcm9maWxlTW5nLnVpZCwKd2luZG93LmFjdGl2ZVVzZXJQcm9maWxlTW5nLmdldFNlc3Npb25JRCgpLGEsYyxiKSk7ZWxzZSByZXR1cm4gdGhpcy5fb25FcnJvcignImFjdGl2ZVVzZXJQcm9maWxlTW5nIiBpcyBub3QgYW4gb2JqZWN0JyksITE7cmV0dXJuITB9fTsKLyoqIC9tL2pzL2Zhdm9yaXRlcy5qcyAqKi8KdmFyIF9fX2QyY19mYXZvcml0ZXNqc19jX29uPSIyMDI1LTA1LTIzIDE3OjEwOjAzIjsndXNlIHN0cmljdCc7dmFyIF9fX2QyY19mYXZvcml0ZXNqc19jX29uPSIyMDI1LTAxLTA5IDA5OjMwOjA0IjsidXNlIHN0cmljdCI7CmZ1bmN0aW9uIEQyRkFWKCl7ZnVuY3Rpb24gcCgpe3ZhciBhPW5ldyBEYXRlO3JldHVybiBhLmdldEZ1bGxZZWFyKCkrIi0iKygxMD5hLmdldE1vbnRoKCkrMT8iMCIrKGEuZ2V0TW9udGgoKSsxKTphLmdldE1vbnRoKCkrMSkrIi0iKygxMD5hLmdldERhdGUoKT8iMCIrYS5nZXREYXRlKCk6YS5nZXREYXRlKCkpKyIgIisoMTA+YS5nZXRIb3VycygpPyIwIithLmdldEhvdXJzKCk6YS5nZXRIb3VycygpKSsiOiIrKDEwPmEuZ2V0TWludXRlcygpPyIwIithLmdldE1pbnV0ZXMoKTphLmdldE1pbnV0ZXMoKSkrIjoiKygxMD5hLmdldFNlY29uZHMoKT8iMCIrYS5nZXRTZWNvbmRzKCk6YS5nZXRTZWNvbmRzKCkpfWZ1bmN0aW9uIHUoYSl7dmFyIGI9W10sZD0xMDAsYztmb3IoYyBpbiBhKXt2YXIgZz0tLWQrIl8iK2FbY10uY3JlYXRlZDtiW2ddPWFbY119cmV0dXJuIGJ9ZnVuY3Rpb24gayhhKXtpZih2b2lkIDA9PT1hfHwiIj09YSlyZXR1cm4hMTtnYVRyYWNrKCJfdHJhY2tFdmVudCIsIkZhdm9yaXRlcyIsCmEsd2luZG93LmxvY2F0aW9uLmhyZWYsMSk7cmV0dXJuITB9dmFyIGw9JCgiYm9keSIpLmhhc0NsYXNzKCJFTkdMSVNIIik\/ImVuIjoiZnIiLG49MDwkKCIjaXNtb2JpbGUiKS5sZW5ndGgmJiIxIj09JCgiI2lzbW9iaWxlIikudmFsKCk\/Im1vYmlsZSI6ImRlc2t0b3AiLHQ9bmV3IGZ1bmN0aW9uKCl7c2VsZi5jcmVhdGVMb2NhbFN0b3JhZ2U9ZnVuY3Rpb24oKXtudWxsPT09Q29va2llcy5nZXQoImQyZmF2RGF0YSIpJiYoZDJmYXZEYXRhT2JqPXtjcmVhdGVkOnAoKSxvcmlnaW5hbFRpbWV6b25lOkludGwuRGF0ZVRpbWVGb3JtYXQoKS5yZXNvbHZlZE9wdGlvbnMoKS50aW1lWm9uZSxmYXZvcml0ZXM6e30sZmF2Q291bnQ6MH0sc2V0Q29va2llKCJkMmZhdkRhdGEiLEpTT04uc3RyaW5naWZ5KGQyZmF2RGF0YU9iaikpKX07c2VsZi5nZXRWZWhpY2xlSnNvbj1mdW5jdGlvbihhKXtpZih2b2lkIDA9PT1hKXJldHVybiExOyQuZ2V0KCIvanMvanNvbi8iK2ErIi5qc29uIikuZG9uZShmdW5jdGlvbihiKXtpZih2b2lkIDAhPT0KYi5pbWFnZXNbMF0pe3ZhciBkPUpTT04ucGFyc2UoQ29va2llcy5nZXQoImQyZmF2RGF0YSIpKTtkLmZhdm9yaXRlc1tpZF0uaW1hZ2U9Yi5pbWFnZXNbMF07c2V0Q29va2llKCJkMmZhdkRhdGEiLEpTT04uc3RyaW5naWZ5KGQpKTsiIiE9Y2FsbGJhY2smJnZvaWQgMCE9PWNhbGxiYWNrJiZzZWxmLmJpbmROYXZpZ2F0aW9uKCl9fSl9O3NlbGYuYmluZE5hdmlnYXRpb249ZnVuY3Rpb24oKXt2YXIgYT1KU09OLnBhcnNlKENvb2tpZXMuZ2V0KCJkMmZhdkRhdGEiKSksYj1hLmZhdkNvdW50LGQ9MDxiPyEwOiExLGM9ImVuIj09bD8hMD09PWQ\/Ik15IGZhdm9yaXRlcyI6IllvdSBoYXZlIG5vIGZhdm9yaXRlcyB5ZXQhIjohMD09PWQ\/Ik1lcyBmYXZvcmlzIjoiVm91cyBuJ2F2ZXogcGFzIGVuY29yZSBkZSBmYXZvcmlzISIsZz0kKCIuZDJjLWZhdnMtbmF2LXdyYXBwZXIgLmQyYy1mYXZzLW5hdi1kcm9wZG93bi13cmFwcGVyIC5kMmMtZmF2cy1uYXYtZHJvcGRvd24taW5uZXJCb3giKSxoPQokKCIuZDJjLWZhdnMtbmF2LWRkLXdyYXBwZXIgLnN1Ym1lbnVJdGVtQ29udGFpbmVyICNpdGVtX0ZBVk9SSVRFIik7YT11KGEuZmF2b3JpdGVzKTtnLmh0bWwoIiIpO2guaHRtbCgiIik7aWYoITA9PT1kKWZvcih2YXIgZSBpbiBhKXt2YXIgZj0iIixtPSIiLHE9dm9pZCAwIT09YVtlXS5zaWQmJmFbZV0uc2lkPyIjIithW2VdLnNpZDoiIixyPXZvaWQgMCE9PWFbZV0uaW1hZ2U\/JzxpbWcgc3JjPSInK2FbZV0uaW1hZ2UrJyIgLz4nOiIiOyJtb2JpbGUiPT1uPyhtKz0nPHNwYW4gY2xhc3M9Ii1tMCI+XG48YSBjbGFzcz0ic3VibWVudS1pdGVtIGZsZXgtYm94IGZsZXgtYmV0d2VlbiAtYnQgLS1zLTUgRkFWT1JJVEUiIGhyZWY9IicrYVtlXS51cmwrJyIgdGFyZ2V0PSIiIG9uY2xpY2s9IiI+XG48c3BhbiBjbGFzcz0iLXBoIj4nKygiZW4iPT1sP2FbZV0udGl0bGU6YVtlXS50aXRsZV9mcikrJzwvc3Bhbj5cbjxzcGFuIHJvbGU9ImJ1dHRvbiIgdGFiaW5kZXg9IjAiIGNsYXNzPSItcCAtLXMtNSI+XG48c3ZnIGNsYXNzPSJpY29uIj48dXNlIHhsaW5rOmhyZWY9IiNpY29uLWNoZXZyb24tcmlnaHQiPjwvdXNlPjwvc3ZnPlxuPC9zcGFuPlxuPC9hPlxuPC9zcGFuPlxuJywKaC5wcmVwZW5kKG0pKTooZis9JzxhIGhyZWY9IicrYVtlXS51cmwrJyI+JyxmKz0nPGRpdiBjbGFzcz0iZDJjLWZhdnMtbmF2LWRyb3Bkb3duLWl0ZW0iPicsZis9cixmKz0iPGRpdj4iLGYrPSJlbiI9PWw\/YVtlXS50aXRsZTphW2VdLnRpdGxlX2ZyLGYrPSI8L2Rpdj4iLGYrPSc8ZGl2IHN0eWxlPSJkaXNwbGF5OmJsb2NrOyI+PC9kaXY+JywiIiE9cSYmKGYrPSc8ZGl2IGNsYXNzPSJkMmMtZmF2cy1uYXYtZHJvcGRvd24taXRlbS1zdWIgJysoIiIhPXI\/Imhhc0NhckltYWdlIjoiIikrJyI+JyxmKz0iIitxLGYrPSI8L2Rpdj4iKSxmKz0iPC9kaXY+IixmKz0iPC9hPiIsZy5wcmVwZW5kKGYpKX0iZGVza3RvcCI9PW4mJjA8JCgiI2tpYVNoaWZ0Q2VydGlmaWVkRm9vdGVyIikubGVuZ3RoJiYhJCgiLmxhbmd1YWdlQmFyIGRpdi5kMmMtZmF2cy1uYXYtd3JhcHBlciIpLmhhc0NsYXNzKCJpc0tpYVNoaWZ0IikmJiQoIi5sYW5ndWFnZUJhciwgLmxhbmd1YWdlQmFyIGRpdi5kMmMtZmF2cy1uYXYtd3JhcHBlciIpLmFkZENsYXNzKCJpc0tpYVNoaWZ0Iik7CiQoIi5kMmMtZmF2cy1uYXYtd3JhcHBlciIpLmF0dHIoInRpdGxlIixjKTshMD09PWQ\/KCQoIi5kMmMtZmF2cy1uYXYtd3JhcHBlciwgLmQyYy1mYXZzLW5hdi1kZC13cmFwcGVyIikucmVtb3ZlQ2xhc3MoImQyYy1mYXZzLW5hdi1kaXNhYmxlZCIpLCQoIi5idXJnZXItbWVudSB1bCBsaSBkaXYuZDJjLWZhdnMtbmF2LXdyYXBwZXIgPiBzcGFuIikuaHRtbCgiICgiK2IrIikiKSwkKCIubGFuZ3VhZ2VCYXIgZGl2LmQyYy1mYXZzLW5hdi13cmFwcGVyIC5mYXYtbmF2LWNvdW50IikuaHRtbChiKSwkKCIubGFuZ3VhZ2VCYXIgZGl2LmQyYy1mYXZzLW5hdi13cmFwcGVyIikuYWRkQ2xhc3MoImZhdi1uYXYtaGFzLXZlaGljbGVzIikpOigkKCIuYnVyZ2VyLW1lbnUgdWwgbGkgZGl2LmQyYy1mYXZzLW5hdi13cmFwcGVyID4gc3BhbiIpLmh0bWwoIiIpLCQoIi5sYW5ndWFnZUJhciBkaXYuZDJjLWZhdnMtbmF2LXdyYXBwZXIgLmZhdi1uYXYtY291bnQiKS5odG1sKCIiKSwkKCIubGFuZ3VhZ2VCYXIgZGl2LmQyYy1mYXZzLW5hdi13cmFwcGVyIikucmVtb3ZlQ2xhc3MoImZhdi1uYXYtaGFzLXZlaGljbGVzIiksCiQoIi5kMmMtZmF2cy1uYXYtd3JhcHBlciwgLmQyYy1mYXZzLW5hdi1kZC13cmFwcGVyIikuYWRkQ2xhc3MoImQyYy1mYXZzLW5hdi1kaXNhYmxlZCIpKTskKCIuZDJjLWZhdnMtbmF2LXdyYXBwZXIuZmF2LW5hdi1oYXMtdmVoaWNsZXMiKS5vZmYoIm1vdXNlZW50ZXIiKS5vbigibW91c2VlbnRlciIsZnVuY3Rpb24oKXtrKCJGYXZvcml0ZS1TdW1tYXJ5LVZpZXdlZCIpfSk7JCgiLmQyYy1mYXZzLW5hdi1kZC13cmFwcGVyOm5vdCguZDJjLWZhdnMtbmF2LWRpc2FibGVkKSAubWVudUV4cGFuZCIpLm9mZigiY2xpY2siKS5vbigiY2xpY2siLGZ1bmN0aW9uKCl7JCgiLmQyYy1mYXZzLW5hdi1kZC13cmFwcGVyIC5zdWJtZW51SXRlbUNvbnRhaW5lciIpLmlzKCI6dmlzaWJsZSIpfHxrKCJGYXZvcml0ZS1TdW1tYXJ5LVZpZXdlZCIpfSk7JCgiLmQyYy1mYXZzLW5hdi1kcm9wZG93bi1pdGVtLCAuZDJjLWZhdnMtbmF2LWRkLXdyYXBwZXIgLnN1Ym1lbnVJdGVtIikub2ZmKCJjbGljayIpLm9uKCJjbGljayIsCmZ1bmN0aW9uKCl7aygiRmF2b3JpdGUtU3VtbWFyeS1DbGlja2VkIil9KX07c2VsZi5iaW5kVHJpZ2dlcnM9ZnVuY3Rpb24oKXskKCIuZDJjLWZhdnMtdHJpZ2dlci13cmFwcGVyIikuZWFjaChmdW5jdGlvbihhKXt2YXIgYj0kKHRoaXMpLmF0dHIoImRhdGEtbWFrZSIpLGQ9JCh0aGlzKS5hdHRyKCJkYXRhLW1vZGVsIiksYz0kKHRoaXMpLmF0dHIoImRhdGEteWVhciIpLGc9JCh0aGlzKS5hdHRyKCJkYXRhLXRyaW0iKSxoPSQodGhpcykuYXR0cigiZGF0YS1jYXJpZCIpO2E9YysiICIrYisiICIrZCsoZz8iICIrZzoiIikucmVwbGFjZSgvKFxyXG58XG58XHJ8XHQpL2dtLCIiKTtnPWIrIiAiK2QrKGc\/IiAiK2c6IiIpLnJlcGxhY2UoLyhcclxufFxufFxyfFx0KS9nbSwiIikrIiAiK2M7Yj0oYysiLSIrYisiLSIrZCsodm9pZCAwIT09aCYmIiIhPWg\/Ii0iK2g6IiIpKS5yZXBsYWNlKC8gL2csIi0iKS50b0xvd2VyQ2FzZSgpOyQodGhpcykuYWRkQ2xhc3MoYik7JCh0aGlzKS5odG1sKCc8c3BhbiBjbGFzcz0iZmEtbGF5ZXJzIj5cbiAgICA8aSBjbGFzcz0iZmEgZmEtaGVhcnQiPjwvaT5cbiAgICA8aSBjbGFzcz0iZmFyIGZhLWhlYXJ0Ij48L2k+XG4gPC9zcGFuPicpOwokKHRoaXMpLmF0dHIoInRpdGxlIiwiZW4iPT1sPyJNeSBmYXZvcml0ZXMiOiJNZXMgZmF2b3JpcyIpOyQodGhpcykuYXR0cigiZGF0YS1jbGFzcyIsYik7JCh0aGlzKS5hdHRyKCJkYXRhLXRpdGxlIixhKTskKHRoaXMpLmF0dHIoImRhdGEtdGl0bGUtZnIiLGcpOyQodGhpcykub24oImNsaWNrIixmdW5jdGlvbigpe2NvbnNvbGUubG9nKCJEMkZBViAtIFJlY29yZCBGYXYiLCQodGhpcykpO3NlbGYucmVjb3JkRmF2b3JpdGUoJCh0aGlzKSl9KX0pLnByb21pc2UoKS5kb25lKGZ1bmN0aW9uKCl7c2VsZi5zZXRJY29ucygpfSl9O3NlbGYucmVjb3JkRmF2b3JpdGU9ZnVuY3Rpb24oYSl7dmFyIGI9SlNPTi5wYXJzZShDb29raWVzLmdldCgiZDJmYXZEYXRhIikpfHx7ZmF2b3JpdGVzOnt9fTtpZigwPGEuc2libGluZ3MoImEiKS5sZW5ndGgpdmFyIGQ9YS5zaWJsaW5ncygiYSIpLmF0dHIoImhyZWYiKTtlbHNlIGlmKDA8YS5jbG9zZXN0KCIuZGl2Q2FyU2luZ2xlT3V0ZXJCb3giKS5sZW5ndGgpe3ZhciBjPQphLmNsb3Nlc3QoIi5kaXZDYXJTaW5nbGVPdXRlckJveCIpO2Q9JCgiLmRpdkNhclRpdGxlQ29udGFpbmVyID4gYSIsYykuYXR0cigiaHJlZiIpfWVsc2UgZD13aW5kb3cubG9jYXRpb24uaHJlZjt2YXIgZz0wPGEuY2xvc2VzdCgiLmNhckJveElubmVyIikuaGFzKCIuY2FyUHJpY2UiKS5sZW5ndGg\/JCgiLmNhclByaWNlIixhLmNsb3Nlc3QoIi5jYXJCb3hJbm5lciIpKS50ZXh0KCk6MDxhLmNsb3Nlc3QoIi5kaXZDYXJTaW5nbGVPdXRlckJveCIpLmhhcygiLmRpdk5ld0NhclN0YXJ0UHJpY2UgPiBzcGFuIikubGVuZ3RoPyQoIi5kaXZOZXdDYXJTdGFydFByaWNlID4gc3BhbiIsYS5jbG9zZXN0KCIuZGl2Q2FyU2luZ2xlT3V0ZXJCb3giKSkuaHRtbCgpOiQoIiNjYXJQcmljZSIpLnRleHQoKTtpZigwPGEuY2xvc2VzdCgiLmNhckJveElubmVyIikuaGFzKCIuY2FySW1hZ2UiKS5sZW5ndGgpYz0kKCIuY2FySW1hZ2UgPiBhID4gaW1nIixhLmNsb3Nlc3QoIi5jYXJCb3hJbm5lciIpKS5hdHRyKCJzcmMiKTsKZWxzZSBpZigwPGEuY2xvc2VzdCgiLmRpdkNhclNpbmdsZU91dGVyQm94IikuaGFzKCIuZGl2Q2FySW1hZ2VDb250YWluZXIgPiBhID4gaW1nIikubGVuZ3RoKWM9JCgiLmRpdkNhckltYWdlQ29udGFpbmVyID4gYSA+IGltZyIsYS5jbG9zZXN0KCIuZGl2Q2FyU2luZ2xlT3V0ZXJCb3giKSkuYXR0cigic3JjIik7ZWxzZSBpZihjPSQoIi5TbGlkZXJPdXRlckJveCAuc2xpZGVyLW1haW4gLnNsaWRlcyAuc2xpZGU6Zmlyc3QtY2hpbGQiKS5hdHRyKCJkYXRhLWltYWdlIiksIiI9PWN8fHZvaWQgMD09PWMpYz0kKCIuU2xpZGVyT3V0ZXJCb3ggLnNsaWRlci1tYWluIC5zbGlkZXMgLnNsaWRlOmZpcnN0LWNoaWxkIGEgaW1nIikuYXR0cigic3JjIik7Zz1nLnJlcGxhY2UoLyhcclxufFxufFxyfFx0fFwkKS9nbSwiIik7dmFyIGg9YS5hdHRyKCJkYXRhLWNsYXNzIiksZT1hLmF0dHIoImRhdGEtc3RvY2tpZCIpLGY9MDtpZigieyRDQVJTVE9DS05VTUJFUn0iPT1lfHx2b2lkIDA9PT1lKWU9CiIiO2EuaGFzQ2xhc3MoImQyYy1mYXZzLXNlbGVjdGVkIik\/KGRlbGV0ZSBiLmZhdm9yaXRlc1toXSxrKCJGYXZvcml0ZS1SZW1vdmVkIikpOihiLmZhdm9yaXRlc1toXT17aWQ6aCxjcmVhdGVkOnAoKSx0aXRsZTphLmF0dHIoImRhdGEtdGl0bGUiKSx0aXRsZV9mcjphLmF0dHIoImRhdGEtdGl0bGUtZnIiKSx5ZWFyOmEuYXR0cigiZGF0YS15ZWFyIiksbWFrZTphLmF0dHIoImRhdGEtbWFrZSIpLG1vZGVsOmEuYXR0cigiZGF0YS1tb2RlbCIpLHNpZDplLHVybDpkLHByaWNlOmcsdmlkOmEuYXR0cigiZGF0YS1jYXJpZCIpLGltYWdlOmN9LGsoIkZhdm9yaXRlLUFkZGVkIikpO2Zvcih2YXIgbSBpbiBiLmZhdm9yaXRlcyliLmZhdm9yaXRlcy5oYXNPd25Qcm9wZXJ0eShtKSYmKytmO2IuZmF2Q291bnQ9ZjtzZXRDb29raWUoImQyZmF2RGF0YSIsSlNPTi5zdHJpbmdpZnkoYikpO3NlbGYuc2V0SWNvbnMoKX07c2VsZi5zZXRJY29ucz1mdW5jdGlvbigpe2lmKENvb2tpZXMuZ2V0KCJkMmZhdkRhdGEiKSl7dmFyIGE9CkpTT04ucGFyc2UoQ29va2llcy5nZXQoImQyZmF2RGF0YSIpKTskKCIuZDJjLWZhdnMtdHJpZ2dlci13cmFwcGVyIikucmVtb3ZlQ2xhc3MoImQyYy1mYXZzLXNlbGVjdGVkIik7Zm9yKHZhciBiIGluIGEuZmF2b3JpdGVzKWEuZmF2b3JpdGVzLmhhc093blByb3BlcnR5KGIpJiYwPCQoIi4iK2IpLmxlbmd0aCYmJCgiLmQyYy1mYXZzLXRyaWdnZXItd3JhcHBlci4iK2IpLmNsb3Nlc3QoIi5kMmMtZmF2cy10cmlnZ2VyLXdyYXBwZXIiKS5hZGRDbGFzcygiZDJjLWZhdnMtc2VsZWN0ZWQiKTtzZWxmLmJpbmROYXZpZ2F0aW9uKCl9fTtyZXR1cm4gc2VsZn07c2V0VGltZW91dChmdW5jdGlvbigpeyQoZnVuY3Rpb24oKXt0LmNyZWF0ZUxvY2FsU3RvcmFnZSgpO2lmKCJtb2JpbGUiPT1uKXt2YXIgYT0kKCIjU2l0ZXNfUGFnZV9HZW5lcmFsX01lbnVfQlROIikudmFsKCk7YT0nPGxpIGNsYXNzPSJkMmMtZmF2cy1uYXYtZGQtd3JhcHBlciI+XHRcdFxuPGEgY2xhc3M9IkZBVk9SSVRFIG1lbnUtaXRlbSBmbGV4LWJveCBkMmMtZmF2cy1uYXYtd3JhcHBlciIgaHJlZj0iIyIgb25jbGljaz0iIj5cbjxpIGNsYXNzPSJmYSBmYS1oZWFydCI+PC9pPlxuPHNwYW4gY2xhc3M9InNocmluay1ncm93Ij4nKwooImVuIj09bD8iTXkgZmF2b3JpdGVzIjoiTWVzIGZhdm9yaXMiKSsnPC9zcGFuPlxuPHNwYW4gcm9sZT0iYnV0dG9uIiB0YWJpbmRleD0iMCIgY2xhc3M9Im1lbnVFeHBhbmQgLXAgLS1zLTUiIGFyaWEtbGFiZWw9IicrYSsnIj5cbjxzdmcgY2xhc3M9Imljb24iPjx1c2UgeGxpbms6aHJlZj0iI2ljb24tY2hldnJvbi1kb3duIj48L3VzZT48L3N2Zz5cbjwvc3Bhbj5cbjwvYT5cbjxkaXYgY2xhc3M9InN1Ym1lbnVJdGVtQ29udGFpbmVyIiBzdHlsZT0iZGlzcGxheTpub25lOyI+XG48c3RhY2stbGMgaWQ9Iml0ZW1fRkFWT1JJVEUiIGNsYXNzPSItLXMtOSI+PC9zdGFjay1sYz5cbjwvZGl2PlxuPC9saT4nOyQoIi5idXJnZXItbWVudS1jb250YWluZXIgbmF2ID4gdWwiKS5hcHBlbmQoYSk7JCgiLmJ1cmdlci1tZW51LWNvbnRhaW5lciAuZDJjLWZhdnMtbmF2LWRkLXdyYXBwZXIgYS5kMmMtZmF2cy1uYXYtd3JhcHBlciwgLmJ1cmdlci1tZW51LWNvbnRhaW5lciAuZDJjLWZhdnMtbmF2LWRkLXdyYXBwZXIgLm1lbnVFeHBhbmQiKS5vbigiY2xpY2siLApmdW5jdGlvbihiKXtiLnByZXZlbnREZWZhdWx0KCk7Yj0kKHRoaXMpLmNsb3Nlc3QoIi5kMmMtZmF2cy1uYXYtZGQtd3JhcHBlciIpO2IuaGFzQ2xhc3MoImQyYy1mYXZzLW5hdi1kaXNhYmxlZCIpfHx0b2dnbGVTdWJtZW51cygkKCIubWVudUV4cGFuZCIsYikpfSl9c2VsZi5iaW5kVHJpZ2dlcnMoKTswPCQoIi5sc3RXcmFwcGVyIikubGVuZ3RoJiYidW5kZWZpbmVkIiE9PXR5cGVvZiB3aW5kb3cuQWJzdHJhY3RVc2VkU3JwT2JqZWN0JiYoYT1uZXcgQWJzdHJhY3RVc2VkU3JwT2JqZWN0KHtuYW1lOiJkMmNfZmF2b3JpdGVzIn0pLGEuYWRkVXNlZFNycEV2ZW50T2JzZXJ2ZXIoInByb3h5IixmdW5jdGlvbihiKXsidW5kZWZpbmVkIiE9PXR5cGVvZiBiLmNtZCYmInJlcXVlc3QiPT09Yi5jbWQmJnNlbGYuYmluZFRyaWdnZXJzKCl9KSxhLmluaXRVc2VkU3JwT2JzZXJ2ZXIoKSl9KX0sMUUzKTt3aW5kb3cuZDJmYXY9dH1EMkZBVigpOwovKiogL20vanMvZ2VvTG9jYXRpb24uanMgKiovCnZhciBfX19kMmNfZ2VvTG9jYXRpb25qc19jX29uPSIyMDI1LTA1LTIzIDE3OjEwOjI0IjsndXNlIHN0cmljdCc7dmFyIF9fX2QyY19nZW9Mb2NhdGlvbmpzX2Nfb249IjIwMjUtMDItMjYgMDk6MzA6MTEiOyJ1c2Ugc3RyaWN0IjsKdmFyIGdlb0xvY2F0b3I9ZnVuY3Rpb24oZil7dmFyIGE9dGhpczthLm1hcHNBUElLZXk9bnVsbDthLnVzZUhUTUw1PSEwO2EuZ2VvY29kZUxvY2F0aW9uPSEwO2EuYXR0ZW1wdFBhZ2VOdW09MDthLnRyYWNrTG9jYXRpb25HQT0hMTthLmZvcmNlR2VvbG9jQXR0ZW1wdD0hMTthLnNob3dQb2ludGVyTWVzc2FnZT0hMDthLnRpbWVvdXRzPVtdO2EuYnJvd3Nlcj0iIjthLmlzTW9iaWxlPSIxIj09JCgiI2lzbW9iaWxlIikudmFsKCk7YS5nZW9sb2NTdGF0dXNlcz17T0s6IlNVQ0NFU1MiLFJFRlVTRUQ6IlJFRlVTRUQiLENPT0tJRV9BQ0NFUFRFRDoiUFJFX0FDQ0VQVEVEIixDT09LSUVfUkVGVVNFRDoiUFJFX1JFRlVTRUQiLENBTkNFTEVEOiJDQU5DRUxFRCIsRkFJTDoiRkFJTEVEIn07YS5nZW9sb2NFcnJvcnM9e0lOVkFMSURfUkVTUE9OU0U6IklOVkFMSURfUkVTUE9OU0UiLENPTk5FQ1RJT05fRkFJTEVEOiJDT05ORUNUSU9OX0ZBSUxFRCIsR0VPTE9DX0ZBSUxFRDoiR0VPTE9DX0ZBSUxFRCIsCkdFT0xPQ19SRUZVU0VEOiJHRU9MT0NfUkVGVVNFRCIsR0VPQ09ERV9GQUlMRUQ6IkdFT0NPREVfRkFJTEVEIn07YS5nZW9sb2NSZXN1bHQ9e3Jlc3VsdDowLGdlb2xvY19kYXRlOiIiLGdlb2xvY19zdGF0dXM6YS5nZW9sb2NTdGF0dXNlcy5GQUlMLGdlb2NvZGVfc3RhdHVzOjAsbGF0aXR1ZGU6MCxsb25naXR1ZGU6MCxhY2N1cmFjeTowLHBvc3RhbF9jb2RlOiIiLGdlb2NvZGVfYWRkcmVzczoiIixnZW9jb2RlX2FkZHJlc3Nfc3RyOiIifTthLmdlb2xvY0NhbGxiYWNrPWZ1bmN0aW9uKCl7ZihhLmdlb2xvY1Jlc3VsdCk7Zj1mdW5jdGlvbigpe2NvbnNvbGUubG9nKCJHZW8gY2FsbGJhY2sgYWxyZWFkeSBmaXJlZC4iKX19O2EuX2luaXQ9ZnVuY3Rpb24oKXthLmlzTW9iaWxlJiYoYS5zaG93UG9pbnRlck1lc3NhZ2U9ITEpO2lmKDA8YS5hdHRlbXB0UGFnZU51bSl7dmFyIGI9bnVsbCE9Q29va2llcy5nZXQoImdlb2xvY1BhZ2VWaWV3cyIpP3BhcnNlSW50KENvb2tpZXMuZ2V0KCJnZW9sb2NQYWdlVmlld3MiKSkrCjE6MTtDb29raWVzLnNldCgiZ2VvbG9jUGFnZVZpZXdzIixiPGEuYXR0ZW1wdFBhZ2VOdW0\/YjowLG51bGwsIi8iKTtpZihiPGEuYXR0ZW1wdFBhZ2VOdW0pcmV0dXJuIGEuZ2VvbG9jUmVzdWx0LnJlc3VsdD0wLGEuZ2VvbG9jUmVzdWx0LnN0YXR1cz1hLmdlb2xvY1N0YXR1c2VzLkNBTkNFTEVELGEuZ2VvbG9jQ2FsbGJhY2soKSwhMX1pZighYS5mb3JjZUdlb2xvY0F0dGVtcHQmJkNvb2tpZXMuZ2V0KCJnZW9sb2NQcm9jZXNzZWQiKSlyZXR1cm4gYj1KU09OLnBhcnNlKENvb2tpZXMuZ2V0KCJnZW9sb2NQcm9jZXNzZWQiKSksIjEiPT1iLmFjY2VwdGVkPyhhLmdlb2xvY1Jlc3VsdC5yZXN1bHQ9MSxhLmdlb2xvY1Jlc3VsdC5nZW9sb2NfZGF0ZT1iLmdlb2xvY19kYXRlLGEuZ2VvbG9jUmVzdWx0Lmdlb2xvY19zdGF0dXM9YS5nZW9sb2NTdGF0dXNlcy5DT09LSUVfQUNDRVBURUQsYS5nZW9sb2NSZXN1bHQubGF0aXR1ZGU9Yi5sYXRpdGl1ZGUsYS5nZW9sb2NSZXN1bHQubG9uZ2l0dWRlPQpiLmxvbmdpdHVkZSxhLmdlb2xvY1Jlc3VsdC5nZW9jb2RlX2FkZHJlc3M9Yi5hZGRyZXNzLGEuZ2VvbG9jUmVzdWx0Lmdlb2NvZGVfYWRkcmVzc19zdHI9Yi5hZGRyZXNzX3N0cik6KGEuZ2VvbG9jUmVzdWx0LnJlc3VsdD0wLGEuZ2VvbG9jUmVzdWx0LnN0YXR1cz1hLmdlb2xvY1N0YXR1c2VzLkNPT0tJRV9SRUZVU0VEKSxhLmdlb2xvY0NhbGxiYWNrKCksITE7aWYoImh0dHBzOiIhPWxvY2F0aW9uLnByb3RvY29sKXJldHVybiBhLmdlb2xvY1Jlc3VsdC5yZXN1bHQ9MCxhLmdlb2xvY1Jlc3VsdC5zdGF0dXM9YS5nZW9sb2NTdGF0dXNlcy5DQU5DRUxFRCxhLmdlb2xvY0NhbGxiYWNrKCksITE7aWYobHRfSUU5fHwhbmF2aWdhdG9yLmdlb2xvY2F0aW9uKWEudXNlSFRNTDU9ITE7bmF2aWdhdG9yLmJyb3dzZXI9ZnVuY3Rpb24oKXt2YXIgYz1uYXZpZ2F0b3IudXNlckFnZW50LGQ9Yy5tYXRjaCgvKG9wZXJhfGNocm9tZXxzYWZhcml8ZmlyZWZveHxtc2llfHRyaWRlbnQoPz1cLykpXC8\/XHMqKFxkKykvaSl8fApbXTtpZigvdHJpZGVudC9pLnRlc3QoZFsxXSkpe3ZhciBlPS9cYnJ2WyA6XSsoXGQrKS9nLmV4ZWMoYyl8fFtdO3JldHVybiJJRXhwbG9yZXIgIisoZVsxXXx8IiIpfWlmKCJDaHJvbWUiPT09ZFsxXSYmKGU9Yy5tYXRjaCgvXGJPUFJcLyhcZCspLyksbnVsbCE9ZSkpcmV0dXJuIk9wZXJhICIrZVsxXTtkPWRbMl0\/W2RbMV0sZFsyXV06W25hdmlnYXRvci5hcHBOYW1lLG5hdmlnYXRvci5hcHBWZXJzaW9uLCItPyJdO251bGwhPShlPWMubWF0Y2goL3ZlcnNpb25cLyhcZCspL2kpKSYmZC5zcGxpY2UoMSwxLGVbMV0pO3JldHVybiBkLmpvaW4oIiAiKX0oKTthLmJyb3dzZXI9bmF2aWdhdG9yLmJyb3dzZXI7cmV0dXJuITB9O2EuaGFuZGxlTG9jYXRpb25TdWNjZXNzPWZ1bmN0aW9uKCl7dmFyIGI9IkxhdGl0dWRlOiAiK2EuZ2VvbG9jUmVzdWx0LmxhdGl0dWRlKyI7IExvbmdpdHVkZTogIithLmdlb2xvY1Jlc3VsdC5sb25naXR1ZGU7Mzw9YS5nZW9sb2NSZXN1bHQucG9zdGFsX2NvZGUubGVuZ3RoJiYKKGI9YS5nZW9sb2NSZXN1bHQucG9zdGFsX2NvZGUpO2EudHJhY2tMb2NhdGlvbigiR2VvbG9jYXRpb24iLCJBY2NlcHRlZCIsYik7YS5nZW9sb2NSZXN1bHQuZ2VvbG9jX2RhdGU9KG5ldyBEYXRlKS5nZXRUaW1lKCk7Yj1uZXcgRGF0ZTtiLnNldEhvdXJzKDIzLDU5LDU5LDApO0Nvb2tpZXMuc2V0KCJnZW9sb2NQcm9jZXNzZWQiLEpTT04uc3RyaW5naWZ5KHthY2NlcHRlZDoxLGdlb2xvY19kYXRlOmEuZ2VvbG9jUmVzdWx0Lmdlb2xvY19kYXRlLGxhdGl0dWRlOmEuZ2VvbG9jUmVzdWx0LmxhdGl0dWRlLGxvbmdpdHVkZTphLmdlb2xvY1Jlc3VsdC5sb25naXR1ZGUscG9zdGFsX2NvZGU6YS5nZW9sb2NSZXN1bHQucG9zdGFsX2NvZGUsYWNjdXJhY3k6YS5nZW9sb2NSZXN1bHQuYWNjdXJhY3ksYWRkcmVzczphLmdlb2xvY1Jlc3VsdC5nZW9jb2RlX2FkZHJlc3MsYWRkcmVzc19zdHI6YS5nZW9sb2NSZXN1bHQuZ2VvY29kZV9hZGRyZXNzX3N0cn0pLGIsIi8iKTthLmdlb2xvY0NhbGxiYWNrKCl9OwphLmhhbmRsZUxvY2F0aW9uRXJyb3I9ZnVuY3Rpb24oYixjKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIGN8fG51bGw9PWMpYz0iIjthLmdlb2xvY1Jlc3VsdC5yZXN1bHQ9MDthLmdlb2xvY1Jlc3VsdC5nZW9sb2NfZGF0ZT0obmV3IERhdGUpLmdldFRpbWUoKTthLmdlb2xvY1Jlc3VsdC5nZW9sb2Nfc3RhdHVzPWEuZ2VvbG9jU3RhdHVzZXMuRkFJTDtzd2l0Y2goYil7Y2FzZSBhLmdlb2xvY0Vycm9ycy5JTlZBTElEX1JFU1BPTlNFOmM9Ikdlb2xvYyBlcnJvciBtZXNhZ2U6IEludmFsaWQgcmVzcG9uc2UgZGF0YSI7YnJlYWs7Y2FzZSBhLmdlb2xvY0Vycm9ycy5DT05ORUNUSU9OX0ZBSUxFRDpjPSJHZW9sb2MgZXJyb3IgbWVzYWdlOiBDb25lY3Rpb24gZmFpbGVkIjticmVhaztjYXNlIGEuZ2VvbG9jRXJyb3JzLkdFT0xPQ19SRUZVU0VEOmEuZ2VvbG9jUmVzdWx0Lmdlb2xvY19zdGF0dXM9YS5nZW9sb2NTdGF0dXNlcy5SRUZVU0VEO2JyZWFrO2Nhc2UgYS5nZW9sb2NFcnJvcnMuR0VPTE9DX0ZBSUxFRDpicmVhazsKY2FzZSBhLmdlb2xvY0Vycm9ycy5HRU9DT0RFX0ZBSUxFRDpjPSJHZW9sb2MgZXJyb3IgbWVzYWdlOiBJbnZhbGlkIHJlc3BvbnNlIGRhdGEiO2JyZWFrO2RlZmF1bHQ6Yz0iVW5rbm93biBlcnJvciBvY3VycmVkIn1hLnRyYWNrTG9jYXRpb24oIkdlb2xvY2F0aW9uIiwiRmFpbGVkIixjKTthLmdlb2xvY0NhbGxiYWNrKCl9O2EuZ2V0TG9jYXRpb249ZnVuY3Rpb24oKXthLl9pbml0KCkmJigwPT1hLnVzZUhUTUw1P2EuZ2V0R29vZ2xlU2VydmljZUxvY2F0aW9uKCk6YS5nZXRIVE1MNUxvY2F0aW9uKCkpfTthLmdldEdvb2dsZVNlcnZpY2VMb2NhdGlvbj1mdW5jdGlvbigpe2EuaGFuZGxlTG9jYXRpb25TdWNjZXNzKCk7cmV0dXJuITF9O2EuZ2V0SFRNTDVMb2NhdGlvbj1mdW5jdGlvbigpe2Euc2hvd0dlb2xvY01zZygpO25hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24oZnVuY3Rpb24oYil7YS5oaWRlR2VvbG9jTXNnKCk7YS5jbGVhclNldFRpbWVvdXRzKCk7CmEuZ2VvbG9jUmVzdWx0LnJlc3VsdD0xO2EuZ2VvbG9jUmVzdWx0Lmdlb2xvY19zdGF0dXM9YS5nZW9sb2NTdGF0dXNlcy5PSzthLmdlb2xvY1Jlc3VsdC5sYXRpdHVkZT1iLmNvb3Jkcy5sYXRpdHVkZTthLmdlb2xvY1Jlc3VsdC5sb25naXR1ZGU9Yi5jb29yZHMubG9uZ2l0dWRlO2EuZ2VvbG9jUmVzdWx0LmFjY3VyYWN5PWIuY29vcmRzLmFjY3VyYWN5O2lmKDEhPWEuZ2VvY29kZUxvY2F0aW9uKXJldHVybiBhLmhhbmRsZUxvY2F0aW9uU3VjY2VzcygpLCExO2EubGF0TG9uZ0dlb2NvZGUoYi5jb29yZHMubGF0aXR1ZGUsYi5jb29yZHMubG9uZ2l0dWRlKX0sZnVuY3Rpb24oYil7Y29uc29sZS5sb2coYik7dmFyIGM9Ikdlb2xvYyBlcnJvciBjb2RlOiAiK2IuY29kZSsiLCBnZW9sb2MgZXJyb3IgbWVzYWdlOiAiK2IubWVzc2FnZTthLmhpZGVHZW9sb2NNc2coKTthLmNsZWFyU2V0VGltZW91dHMoKTtDb29raWVzLnNldCgiZ2VvbG9jUHJvY2Vzc2VkIixKU09OLnN0cmluZ2lmeSh7YWNjZXB0ZWQ6MH0pLAoxLCIvIik7dmFyIGQ9YS5nZW9sb2NFcnJvcnMuR0VPTE9DX1JFRlVTRUQ7MSE9cGFyc2VJbnQoYi5jb2RlKSYmKGQ9YS5nZW9sb2NFcnJvcnMuR0VPTE9DX0ZBSUxFRCk7YS5oYW5kbGVMb2NhdGlvbkVycm9yKGQsYyl9LHt0aW1lb3V0OjI1RTN9KX07YS5sYXRMb25nR2VvY29kZT1mdW5jdGlvbihiLGMpe2EuZ2VvbG9jUmVzdWx0Lmdlb2NvZGVfYWRkcmVzcz1iKyJ8IitjO2EuZ2VvbG9jUmVzdWx0Lmdlb2NvZGVfYWRkcmVzc19zdHI9IkxhdGl0dWRlOiAiK2IrIjsgTG9uZ2l0dWRlOiAiK2M7YS5oYW5kbGVMb2NhdGlvblN1Y2Nlc3MoKX07YS50cmFja1Bvc3RhbD1mdW5jdGlvbigpe2lmKCRjb29raWU9Q29va2llcy5nZXQoIkhUTUw1R2VvIikpaWYoJGNvb2tpZT1KU09OLnBhcnNlKCRjb29raWUpLCRjb29raWUucG9zdGFsX2NvZGUpcmV0dXJuO2lmKCJ1bmRlZmluZWQiIT09dHlwZW9mIGEuZ2VvbG9jUmVzdWx0LnBvc3RhbF9jb2RlJiYiIiE9PWEuZ2VvbG9jUmVzdWx0LnBvc3RhbF9jb2RlKXt2YXIgYj0KYS5nZW9sb2NSZXN1bHQucG9zdGFsX2NvZGUrInwiK2EuZ2VvbG9jUmVzdWx0LmFjY3VyYWN5OyJ1bmRlZmluZWQiIT10eXBlb2YgYWN0aXZlVXNlclByb2ZpbGVNbmcmJiJ1bmRlZmluZWQiIT10eXBlb2YgYWN0aXZlVXNlclByb2ZpbGVNbmcubG9nUGFnZVZpZXdFdmVudD8oInVuZGVmaW5lZCIhPT10eXBlb2YgZGVidWcmJmRlYnVnKCJMb2cgRXZlbnQiLGEuZ2VvbG9jUmVzdWx0LnBvc3RhbF9jb2RlLCJIVE1MNUdlby5wb3N0YWwiKSxhY3RpdmVVc2VyUHJvZmlsZU1uZy5sb2dQYWdlVmlld0V2ZW50KGIsIkhUTUw1R2VvLnBvc3RhbCIpKToidW5kZWZpbmVkIiE9PXR5cGVvZiBkZWJ1ZyYmZGVidWcoIiFVTkxPR0dFRCBFVkVOVCEiLGEuZ2VvbG9jUmVzdWx0LnBvc3RhbF9jb2RlLCJIVE1MNUdlby5wb3N0YWwiKTtiPW5ldyBEYXRlO2Iuc2V0SG91cnMoMjMsNTksNTksMCk7Q29va2llcy5zZXQoIkhUTUw1R2VvIixKU09OLnN0cmluZ2lmeSh7cG9zdGFsX2NvZGU6MX0pLGIsIi8iKX19OwphLmdldEFkZHJlc3NDb29yZD1mdW5jdGlvbihiLGMpe3JldHVybiExfTthLnRyYWNrTG9jYXRpb249ZnVuY3Rpb24oYixjLGQpe2lmKCFhLnRyYWNrTG9jYXRpb25HQSlyZXR1cm4hMX07YS5jbGVhclNldFRpbWVvdXRzPWZ1bmN0aW9uKCl7Zm9yKHZhciBiPTA7YjxhLnRpbWVvdXRzLmxlbmd0aDtiKyspY2xlYXJUaW1lb3V0KGEudGltZW91dHNbYl0pO2EudGltZW91dHM9W119O2Euc2hvd0dlb2xvY01zZz1mdW5jdGlvbigpe2lmKCFhLnNob3dQb2ludGVyTWVzc2FnZSlyZXR1cm4hMTthLmNsZWFyU2V0VGltZW91dHMoKTt2YXIgYj1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Z2VvbG9jRmFpbCgpfSwzRTQpO2EudGltZW91dHMucHVzaChiKTtpZigtMTxhLmJyb3dzZXIuaW5kZXhPZigiRmlyZWZveCIpfHwtMTxhLmJyb3dzZXIuaW5kZXhPZigiSUUiKSkkKCIuZ2VvbG9jLW1vZGFsLWJnIikub2ZmKCJjbGljayIpLm9uKCJjbGljayIsZnVuY3Rpb24oKXtnZW9sb2NGYWlsKCk7Y2xlYXJUaW1lb3V0KGIpfSksCiQoIiNnZW9sb2NhdGlvbk1zZyIpLm9mZigiY2xpY2siKS5vbigiY2xpY2siLGZ1bmN0aW9uKCl7Z2VvbG9jRmFpbCgpO2NsZWFyVGltZW91dChiKX0pLCQoIiNnZW9sb2NhdGlvbk1zZ0lFIikub2ZmKCJjbGljayIpLm9uKCJjbGljayIsZnVuY3Rpb24oKXtnZW9sb2NGYWlsKCk7Y2xlYXJUaW1lb3V0KGIpfSk7dmFyIGM9Imdlb2xvY2F0aW9uTXNnIixkPSEwLGU9e3RvcDoiMCIsbGVmdDoiMCJ9O3N3aXRjaCghMCl7Y2FzZSAtMTxhLmJyb3dzZXIuaW5kZXhPZigiSUUiKTplPXtib3R0b206IjBweCIsbGVmdDoiNDMlIn07Yz0iZ2VvbG9jYXRpb25Nc2dJRSI7YnJlYWs7Y2FzZSAtMTxhLmJyb3dzZXIuaW5kZXhPZigiRmlyZWZveCIpOmU9e3RvcDoiOTBweCIsbGVmdDoiNXB4In07JCgiaW1nLmJ1dHRvbl9wb2ludGVyIikuY3NzKCJsZWZ0IiwiNzVweCIpOyQoImltZy5idXR0b25fcG9pbnRlciIpLmNzcygidG9wIiwiMzVweCIpOy0xPT0kKCIjdHh0VXNlckFnZW50IikudmFsKCkuaW5kZXhPZigiV2luZG93cyIpJiYKJCgiaW1nLmJ1dHRvbl9wb2ludGVyIikuY3NzKCJsZWZ0IiwiMTc1cHgiKTticmVhaztjYXNlIC0xPGEuYnJvd3Nlci5pbmRleE9mKCJDaHJvbWUiKTplPXt0b3A6IjY1cHgiLGxlZnQ6IjBweCJ9OyQoImltZy5idXR0b25fcG9pbnRlciIpLmNzcygibGVmdCIsIjIxMHB4Iik7LTE9PSQoIiN0eHRVc2VyQWdlbnQiKS52YWwoKS5pbmRleE9mKCJXaW5kb3dzIikmJihlPXt0b3A6Ijc1cHgiLGxlZnQ6IjUwcHgifSwkKCJpbWcuYnV0dG9uX3BvaW50ZXIiKS5jc3MoImxlZnQiLCIyNDBweCIpKTticmVhaztjYXNlIC0xPGEuYnJvd3Nlci5pbmRleE9mKCJTYWZhcmkiKTplPXt0b3A6IjUxNXB4IixsZWZ0OiIzNSUifTtkPSEwO2JyZWFrO2Nhc2UgLTE8YS5icm93c2VyLmluZGV4T2YoIk9wZXJhIik6ZT17dG9wOiIwIixsZWZ0OiIwIn07ZD0hMTticmVhaztkZWZhdWx0OmU9e3RvcDoiMCIsbGVmdDoiMCJ9LGQ9ITF9ZCYmKCJ1bmRlZmluZWQiIT10eXBlb2YgJCgiLnJldmVhbC1tb2RhbC1iZyIpLnZhbCgpJiYKImJsb2NrIj09JCgiLnJldmVhbC1tb2RhbC1iZyIpLmNzcygiZGlzcGxheSIpJiYkKCIucmV2ZWFsLW1vZGFsLWJnIikuaGlkZSgpLCQoIi5nZW9sb2MtbW9kYWwtYmciKS5zaG93KCksJCgiIyIrYykuY3NzKGUpLCQoIiMiK2MpLnNob3coKSwidW5kZWZpbmVkIj09dHlwZW9mIHNpdGVTZWN0aW9uJiYoc2l0ZVNlY3Rpb249IlVOREVGSU5FRCIpLGEudHJhY2tMb2NhdGlvbigiR2VvbG9jYXRpb24iLCJTZWN0aW9uLSIrc2l0ZVNlY3Rpb24sIiIpKX07YS5oaWRlR2VvbG9jTXNnPWZ1bmN0aW9uKGIpe2lmKCFhLnNob3dQb2ludGVyTWVzc2FnZSlyZXR1cm4hMTtpZigidW5kZWZpbmVkIj09dHlwZW9mIGJ8fG51bGw9PWIpYj0hMTskKCIuZ2VvbG9jLW1vZGFsLWJnIikuaGlkZSgpO2J8fCgkKCIjZ2VvbG9jYXRpb25Nc2ciKS5oaWRlKCksJCgiI2dlb2xvY2F0aW9uTXNnSUUiKS5oaWRlKCkpfTthLmdlb2xvY0ZhaWw9ZnVuY3Rpb24oKXstMTxhLmJyb3dzZXIuaW5kZXhPZigiSUUiKSYmCmxvY2F0aW9uLnJlbG9hZCgpO292ZXJsYXlPbmx5PSEwO2lmKC0xPGEuYnJvd3Nlci5pbmRleE9mKCJGaXJlZm94Iil8fC0xPGEuYnJvd3Nlci5pbmRleE9mKCJJRSIpKW92ZXJsYXlPbmx5PSExO2EuaGlkZUdlb2xvY01zZyhvdmVybGF5T25seSk7cmV0dXJuITF9O2EuZ2V0RGlzdGFuY2U9ZnVuY3Rpb24oYixjLGQpe3JldHVybiBhLmdldERpc3RhbmNlSGF2ZXJzaW5lKGIsYyl9O2EuZ2V0RGlzdGFuY2VIYXZlcnNpbmU9ZnVuY3Rpb24oYixjKXt2YXIgZD0oYy5sYXQtYi5sYXQpKk1hdGguUEkvMTgwLGU9KGMubG9uZy1iLmxvbmcpKk1hdGguUEkvMTgwO2I9TWF0aC5zaW4oZC8yKSpNYXRoLnNpbihkLzIpK01hdGguY29zKGIubGF0Kk1hdGguUEkvMTgwKSpNYXRoLmNvcyhjLmxhdCpNYXRoLlBJLzE4MCkqTWF0aC5zaW4oZS8yKSpNYXRoLnNpbihlLzIpO3JldHVybigxMjc1NjI3NCpNYXRoLmF0YW4yKE1hdGguc3FydChiKSxNYXRoLnNxcnQoMS1iKSkpLnRvRml4ZWQoMil9O2EuZ2V0RGlzdGFuY2VHbWFwcz0KZnVuY3Rpb24oYixjKXtyZXR1cm4gYS5nZXREaXN0YW5jZUhhdmVyc2luZShiLGMpfX07Ci8qKiAvbS9qcy9wcmludFRoaXMuanMgKiovCnZhciBfX19kMmNfcHJpbnRUaGlzanNfY19vbj0iMjAyNS0wNS0yMyAxNzoxMTo0MCI7J3VzZSBzdHJpY3QnO3ZhciBfX19kMmNfcHJpbnRUaGlzanNfY19vbj0iMjAyNC0wNy0zMCAxMDozMDowOCI7InVzZSBzdHJpY3QiOwooZnVuY3Rpb24oYyl7ZnVuY3Rpb24gcihkLGUpe2UmJmQuYXBwZW5kKGUuanF1ZXJ5P2UuY2xvbmUoKTplKX1mdW5jdGlvbiB0KGQsZSxrKXt2YXIgZj1lLmNsb25lKGsuZm9ybVZhbHVlcyk7ay5mb3JtVmFsdWVzJiZ1KGUsZiwic2VsZWN0LCB0ZXh0YXJlYSIpO2sucmVtb3ZlU2NyaXB0cyYmZi5maW5kKCJzY3JpcHQiKS5yZW1vdmUoKTtrLnByaW50Q29udGFpbmVyP2YuYXBwZW5kVG8oZCk6Zi5lYWNoKGZ1bmN0aW9uKCl7Yyh0aGlzKS5jaGlsZHJlbigpLmFwcGVuZFRvKGQpfSl9ZnVuY3Rpb24gdShkLGUsayl7dmFyIGY9ZC5maW5kKGspO2UuZmluZChrKS5lYWNoKGZ1bmN0aW9uKGcscSl7YyhxKS52YWwoZi5lcShnKS52YWwoKSl9KX12YXIgYTtjLmZuLnByaW50VGhpcz1mdW5jdGlvbihkKXthPWMuZXh0ZW5kKHt9LGMuZm4ucHJpbnRUaGlzLmRlZmF1bHRzLGQpO3ZhciBlPXRoaXMgaW5zdGFuY2VvZiBqUXVlcnk\/dGhpczpjKHRoaXMpO2Q9InByaW50VGhpcy0iKyhuZXcgRGF0ZSkuZ2V0VGltZSgpOwppZih3aW5kb3cubG9jYXRpb24uaG9zdG5hbWUhPT1kb2N1bWVudC5kb21haW4mJm5hdmlnYXRvci51c2VyQWdlbnQubWF0Y2goL21zaWUvaSkpe3ZhciBrPSdqYXZhc2NyaXB0OmRvY3VtZW50LndyaXRlKCI8aGVhZD48c2NyaXB0PmRvY3VtZW50LmRvbWFpbj1cXCInK2RvY3VtZW50LmRvbWFpbisnXFwiO1x4M2Mvc2NyaXB0PjwvaGVhZD48Ym9keT48L2JvZHk+IiknLGY9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaWZyYW1lIik7Zi5uYW1lPSJwcmludElmcmFtZSI7Zi5pZD1kO2YuY2xhc3NOYW1lPSJNU0lFIjtkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGYpO2Yuc3JjPWt9ZWxzZSBjKCI8aWZyYW1lIGlkPSciK2QrIicgbmFtZT0ncHJpbnRJZnJhbWUnIC8+IikuYXBwZW5kVG8oImJvZHkiKTt2YXIgZz1jKCIjIitkKTthLmRlYnVnfHxnLmNzcyh7cG9zaXRpb246ImFic29sdXRlIix3aWR0aDoiMHB4IixoZWlnaHQ6IjBweCIsbGVmdDoiLTYwMHB4Iix0b3A6Ii02MDBweCJ9KTsKc2V0VGltZW91dChmdW5jdGlvbigpe2Z1bmN0aW9uIHEoYixwKXtiPWIuZ2V0KDApO2I9Yi5jb250ZW50V2luZG93fHxiLmNvbnRlbnREb2N1bWVudHx8YjtiPWIuZG9jdW1lbnR8fGIuY29udGVudERvY3VtZW50fHxiO2Iub3BlbigpO2Iud3JpdGUocCk7Yi5jbG9zZSgpfWEuZG9jdHlwZVN0cmluZyYmcShnLGEuZG9jdHlwZVN0cmluZyk7dmFyIG09Zy5jb250ZW50cygpLGw9bS5maW5kKCJoZWFkIiksbj1tLmZpbmQoImJvZHkiKSxoPWMoImJhc2UiKTtoPSEwPT09YS5iYXNlJiYwPGgubGVuZ3RoP2guYXR0cigiaHJlZiIpOiJzdHJpbmciPT09dHlwZW9mIGEuYmFzZT9hLmJhc2U6ZG9jdW1lbnQubG9jYXRpb24ucHJvdG9jb2wrIi8vIitkb2N1bWVudC5sb2NhdGlvbi5ob3N0O2wuYXBwZW5kKCc8YmFzZSBocmVmPSInK2grJyI+Jyk7YS5pbXBvcnRDU1MmJmMoImxpbmtbcmVsPXN0eWxlc2hlZXRdIikuZWFjaChmdW5jdGlvbigpe3ZhciBiPWModGhpcykuYXR0cigiaHJlZiIpO2lmKGIpe3ZhciBwPQpjKHRoaXMpLmF0dHIoIm1lZGlhIil8fCJhbGwiO2wuYXBwZW5kKCI8bGluayB0eXBlPSd0ZXh0L2NzcycgcmVsPSdzdHlsZXNoZWV0JyBocmVmPSciK2IrIicgbWVkaWE9JyIrcCsiJy8+Iil9fSk7YS5pbXBvcnRTdHlsZSYmYygic3R5bGUiKS5lYWNoKGZ1bmN0aW9uKCl7bC5hcHBlbmQodGhpcy5vdXRlckhUTUwpfSk7YS5wYWdlVGl0bGUmJmwuYXBwZW5kKCI8dGl0bGU+IithLnBhZ2VUaXRsZSsiPC90aXRsZT4iKTthLmxvYWRDU1MmJihBcnJheS5pc0FycmF5KGEubG9hZENTUyk\/alF1ZXJ5LmVhY2goYS5sb2FkQ1NTLGZ1bmN0aW9uKGIscCl7bC5hcHBlbmQoIjxsaW5rIHR5cGU9J3RleHQvY3NzJyByZWw9J3N0eWxlc2hlZXQnIGhyZWY9JyIrdGhpcysiJy8+Iil9KTpsLmFwcGVuZCgiPGxpbmsgdHlwZT0ndGV4dC9jc3MnIHJlbD0nc3R5bGVzaGVldCcgaHJlZj0nIithLmxvYWRDU1MrIicvPiIpKTtpZihoPWEuY29weVRhZ0NsYXNzZXMpaD0hMD09PWg\/ImJoIjpoLC0xIT09aC5pbmRleE9mKCJiIikmJgpuLmFkZENsYXNzKGMoImJvZHkiKVswXS5jbGFzc05hbWUpLC0xIT09aC5pbmRleE9mKCJoIikmJm0uZmluZCgiaHRtbCIpLmFkZENsYXNzKGMoImh0bWwiKVswXS5jbGFzc05hbWUpO3IobixhLmhlYWRlcik7aWYoYS5jYW52YXMpe3ZhciB2PTA7ZS5maW5kKCJjYW52YXMiKS5hZGRCYWNrKCJjYW52YXMiKS5lYWNoKGZ1bmN0aW9uKCl7Yyh0aGlzKS5hdHRyKCJkYXRhLXByaW50dGhpcyIsdisrKX0pfXQobixlLGEpO2EuY2FudmFzJiZuLmZpbmQoImNhbnZhcyIpLmVhY2goZnVuY3Rpb24oKXt2YXIgYj1jKHRoaXMpLmRhdGEoInByaW50dGhpcyIpO2I9YygnW2RhdGEtcHJpbnR0aGlzPSInK2IrJyJdJyk7dGhpcy5nZXRDb250ZXh0KCIyZCIpLmRyYXdJbWFnZShiWzBdLDAsMCk7Yi5yZW1vdmVEYXRhKCJwcmludHRoaXMiKX0pO2EucmVtb3ZlSW5saW5lJiYoaXNGdW5jdGlvbihjLnJlbW92ZUF0dHIpP20uZmluZCgiYm9keSAqIikucmVtb3ZlQXR0cigic3R5bGUiKTptLmZpbmQoImJvZHkgKiIpLmF0dHIoInN0eWxlIiwKIiIpKTtyKG4sYS5mb290ZXIpO3NldFRpbWVvdXQoZnVuY3Rpb24oKXtnLmhhc0NsYXNzKCJNU0lFIik\/KHdpbmRvdy5mcmFtZXMucHJpbnRJZnJhbWUudHJpZ2dlcigiZm9jdXMiKSxsLmFwcGVuZCgiPHNjcmlwdD4gIHdpbmRvdy5wcmludCgpOyBceDNjL3NjcmlwdD4iKSk6ZG9jdW1lbnQucXVlcnlDb21tYW5kU3VwcG9ydGVkKCJwcmludCIpP2dbMF0uY29udGVudFdpbmRvdy5kb2N1bWVudC5leGVjQ29tbWFuZCgicHJpbnQiLCExLG51bGwpOihnWzBdLmNvbnRlbnRXaW5kb3cudHJpZ2dlcigiZm9jdXMiKSxnWzBdLmNvbnRlbnRXaW5kb3cucHJpbnQoKSk7YS5kZWJ1Z3x8c2V0VGltZW91dChmdW5jdGlvbigpe2cucmVtb3ZlKCl9LDFFMyl9LGEucHJpbnREZWxheSl9LDMzMyl9O2MuZm4ucHJpbnRUaGlzLmRlZmF1bHRzPXtkZWJ1ZzohMSxpbXBvcnRDU1M6ITAsaW1wb3J0U3R5bGU6ITEscHJpbnRDb250YWluZXI6ITAsbG9hZENTUzoiIixwYWdlVGl0bGU6IiIscmVtb3ZlSW5saW5lOiExLApwcmludERlbGF5OjMzMyxoZWFkZXI6bnVsbCxmb290ZXI6bnVsbCxmb3JtVmFsdWVzOiEwLGNhbnZhczohMSxiYXNlOiExLGRvY3R5cGVTdHJpbmc6IjwhRE9DVFlQRSBodG1sPiIscmVtb3ZlU2NyaXB0czohMSxjb3B5VGFnQ2xhc3NlczohMX19KShqUXVlcnkpOwovKiogL20vanMvbXVsdGlEZWFsZXJTZWxlY3QuanMgKiovCnZhciBfX19kMmNfbXVsdGlEZWFsZXJTZWxlY3Rqc19jX29uPSIyMDI2LTAyLTEzIDEzOjMwOjExIjsndXNlIHN0cmljdCc7dmFyIG11bHRpRGVhbGVyU2VsZWN0PXtzZXRTZWxlY3Q6ZnVuY3Rpb24oZCxnKXtpZihkKXtkLnBhcmVudEVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgidmFsaWRpdHktZXJyb25lb3VzIik7dmFyIGE9ZC5wYXJlbnRFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ3NlbGVjdFtuYW1lPSJtdWx0aV9kZWFsZXJfc2VuZFRvIl0nKTthJiYoYS52YWx1ZT1kLmRhdGFzZXQudmFsdWUsInVuZGVmaW5lZCI9PT10eXBlb2YgZyYmYS5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgiY2hhbmdlIikpKX19LGZpbHRlcjpkPT57ZnVuY3Rpb24gZygpe2EmJjA8YS5sZW5ndGgmJihhLmZpbmQoIm9wdGlvbltkYXRhLWJyYW5kc10iKS5zaG93KCksYS5maW5kKCJvcHRpb25bZGF0YS1icmFuZHNdIikucHJvcCgiZGlzYWJsZWQiLCExKSl9bGV0IGE9ZDtyZXR1cm57c2hvd0FsbDpnLGJ5TWFrZTpiPT57aWYoYSYmMDxhLmxlbmd0aCYmKGcoKSxiJiYic3RyaW5nIj09PXR5cGVvZiBiJiYiIiE9PQpiLnRyaW0oKSkpe2I9Yi50cmltKCkudG9Mb3dlckNhc2UoKTt2YXIgZT0hMSxrPWZ1bmN0aW9uKGMpe2M9PT1iJiYoZT0hMCk7cmV0dXJuIGM9PT1ifSxmPTA7YS5maW5kKCJvcHRpb25bZGF0YS1icmFuZHNdIikuZWFjaChmdW5jdGlvbihjLGgpe2M9JChoKS5kYXRhKCJicmFuZHMiKS50b0xvd2VyQ2FzZSgpOyIiPT09Yz8oJChoKS5oaWRlKCksJChoKS5wcm9wKCJkaXNhYmxlZCIsITApLGYrKyk6Yy50b0xvd2VyQ2FzZSgpLnNwbGl0KCIsIikuc29tZShrKXx8ImFsbCI9PT1jfHwoJChoKS5oaWRlKCksJChoKS5wcm9wKCJkaXNhYmxlZCIsITApLGYrKyl9KTtlJiYoYS5maW5kKCdvcHRpb25bZGF0YS1icmFuZHM9ImFsbCJdJykuaGlkZSgpLGEuZmluZCgnb3B0aW9uW2RhdGEtYnJhbmRzPSJhbGwiXScpLnByb3AoImRpc2FibGVkIiwhMCkpO2EuZmluZCgib3B0aW9uW2RhdGEtYnJhbmRzXSIpLmxlbmd0aD09PWYmJmcoKX19LGhhc09ubHlPbmU6KCk9PntpZighKGEmJjA8YS5sZW5ndGgpKXJldHVybiExOwp2YXIgYj0wLGU9bnVsbDthLmZpbmQoIm9wdGlvbltkYXRhLWJyYW5kc10iKS5lYWNoKGZ1bmN0aW9uKGssZil7Im5vbmUiIT09JChmKS5jc3MoImRpc3BsYXkiKSYmKGIrKyxlPSQoZikpfSk7cmV0dXJuIDE9PT1iJiZudWxsIT09ZT9lOiExfX19fTsKLyoqIC9tL2pzL3NjcmF0Y2hhbmRzYXZlX20uanMgKiovCnZhciBfX19kMmNfc2NyYXRjaGFuZHNhdmVtanNfY19vbj0iMjAyNi0wMS0xMiAxMDoxNDozNSI7J3VzZSBzdHJpY3QnO3ZhciBpc01vdXNlRG93bj0hMSxzY3JhdGNoSnNGbGFzaEFycmF5PVtdO2Z1bmN0aW9uIHNjcmF0Y2hKc0ZsYXNoQ2FsbGJhY2soYSxrLGwpeyJ1bmRlZmluZWQiIT09dHlwZW9mIGw\/KGE9d2luZG93W2FdLCJmdW5jdGlvbiI9PT10eXBlb2YgYSYmYShsLHNjcmF0Y2hKc0ZsYXNoQXJyYXlba10pKToobD13aW5kb3dbYV0sImZ1bmN0aW9uIj09PXR5cGVvZiBsJiZsKHNjcmF0Y2hKc0ZsYXNoQXJyYXlba10pKX0KZnVuY3Rpb24gY3JlYXRlU2NyYXRjaENhcmQoYSl7ZnVuY3Rpb24gaygpe2NsZWFyVGltZW91dChhLnJlc2l6ZVRyaWdnZXIpO2EucmVzaXplVHJpZ2dlcj1zZXRUaW1lb3V0KGwsMTAwKX1mdW5jdGlvbiBsKCl7d2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoInJlc2l6ZSIsbCk7RSghMSk7Y3JlYXRlU2NyYXRjaENhcmQoYSl9ZnVuY3Rpb24gQSgpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgYS5mb3JlZ3JvdW5kfHxhLmhhc0VuZGVkKXJldHVybiExOyIjIiE9PWEuZm9yZWdyb3VuZC5jaGFyQXQoMCl8fDQhPWEuZm9yZWdyb3VuZC5sZW5ndGgmJjchPWEuZm9yZWdyb3VuZC5sZW5ndGg\/KGUudG9wSW1hZ2UuY3Jvc3NPcmlnaW49ImFub255bW91cyIsZS50b3BJbWFnZS5zcmM9YS5mb3JlZ3JvdW5kLGUudG9wSW1hZ2Uub25sb2FkPWZ1bmN0aW9uKCl7InVuZGVmaW5lZCIhPT10eXBlb2YgYS5zY3JhdGNoZWRPdmVybGF5PyhnLmRyYXdJbWFnZShlLnRvcEltYWdlLDAsMCxwLHEpLGcuZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uPQoiZGVzdGluYXRpb24tb3V0IixnLmRyYXdJbWFnZShhLnNjcmF0Y2hlZE92ZXJsYXksMCwwLHAscSkpOmcuZHJhd0ltYWdlKGUudG9wSW1hZ2UsMCwwLHAscSk7SygpfSk6KGcuZmlsbFN0eWxlPWEuZm9yZWdyb3VuZCxnLmZpbGxSZWN0KDAsMCxwLHEpLCJ1bmRlZmluZWQiIT09dHlwZW9mIGEuc2NyYXRjaGVkT3ZlcmxheSYmKGcuZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uPSJkZXN0aW5hdGlvbi1vdXQiLGcuZHJhd0ltYWdlKGEuc2NyYXRjaGVkT3ZlcmxheSwwLDAscCxxKSksSygpKTsidW5kZWZpbmVkIiE9dHlwZW9mIGEucGVyY2VudCYmKGUuZW5kQXQ9YS5wZXJjZW50KTsidW5kZWZpbmVkIiE9dHlwZW9mIGEuY29pbj8oZS5jb2luSW1hZ2Uuc3JjPWEuY29pbixlLmNvaW5JbWFnZS5vbmxvYWQ9ZnVuY3Rpb24oKXtGPTEqZS5jb2luSW1hZ2Uud2lkdGg7Rz0xKmUuY29pbkltYWdlLmhlaWdodDtoLnN0eWxlLndpZHRoPUYrInB4IjtoLnN0eWxlLmhlaWdodD1HKyJweCI7aC5zdHlsZS5iYWNrZ3JvdW5kPQondXJsKCInK2EuY29pbisnIikgbm8tcmVwZWF0IGxlZnQgdG9wJztoLnN0eWxlLmJhY2tncm91bmRTaXplPSIxMDAlIjtmLnN0eWxlLmN1cnNvcj0ibm9uZSI7aC5zdHlsZS5wb3NpdGlvbj0iYWJzb2x1dGUiO2guc3R5bGUuZGlzcGxheT0ibm9uZSI7aC5zdHlsZS56SW5kZXg9Ijk5OTk5OSI7aC5zdHlsZS50b3A9MDtoLnN0eWxlLmxlZnQ9MDtoLnN0eWxlLnBvaW50ZXJFdmVudHM9Im5vbmUiO0goaCl9KTpjLnN0eWxlLmN1cnNvcj1lLmRlZmF1bHRDdXJzb3I7InVuZGVmaW5lZCIhPXR5cGVvZiBhLnRoaWNrbmVzcyYmKGUudGhpY2tuZXNzPWEudGhpY2tuZXNzKTsidW5kZWZpbmVkIiE9dHlwZW9mIGEuY291bnRlciYmKGUuY291bnRlcj1hLmNvdW50ZXIseD13aW5kb3dbYS5jb3VudGVyXSk7ZG9jdW1lbnQuYm9keS5hZGRFdmVudExpc3RlbmVyKCJ0b3VjaHN0YXJ0IixmdW5jdGlvbigpe0w9ITB9LCExKTtjLmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsbik7Yy5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW1vdmUiLApuKTtkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZXVwIix0KTtjLmFkZEV2ZW50TGlzdGVuZXIoInRvdWNoc3RhcnQiLG4pO2MuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2htb3ZlIixuKTtkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJ0b3VjaGVuZCIsdCk7Yy5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW92ZXIiLEIpO2MuYWRkRXZlbnRMaXN0ZW5lcigibW91c2VvdXQiLEMpO2MuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vtb3ZlIixEKX1mdW5jdGlvbiB2KGIpe2Zvcih2YXIgZD0wLG09MDtiOylkKz1iLm9mZnNldExlZnQrYi5jbGllbnRMZWZ0LG0rPWIub2Zmc2V0VG9wK2IuY2xpZW50VG9wLGI9Yi5vZmZzZXRQYXJlbnQ7cmV0dXJue3g6ZCx5Om19fWZ1bmN0aW9uIEsoKXt3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigicmVzaXplIixrKTtmLmFwcGVuZENoaWxkKGMpO2YuYXBwZW5kQ2hpbGQoaCk7Zi5zdHlsZS5iYWNrZ3JvdW5kPSd1cmwoIicrYS5iYWNrZ3JvdW5kKyciKSBjZW50ZXIgY2VudGVyIG5vLXJlcGVhdCc7CmYuc3R5bGUuYmFja2dyb3VuZFNpemU9IjEwMCUifWZ1bmN0aW9uIG4oYil7dmFyIGQ9ITE7aWYoInRvdWNobW92ZSI9PWIudHlwZSliLnByZXZlbnREZWZhdWx0KCksZD0hMTtlbHNlIGlmKCJtb3VzZWRvd24iPT1iLnR5cGV8fCJ0b3VjaHN0YXJ0Ij09Yi50eXBlKWQ9aXNNb3VzZURvd249ITA7TSghMCk7aWYoaXNNb3VzZURvd24pe3ZhciBtPXYoZik7dmFyIHU9Yi5wYWdlWC1tLng7dmFyIHI9Yi5wYWdlWS1tLnk7aWYoInRvdWNobW92ZSI9PWIudHlwZXx8InRvdWNoc3RhcnQiPT1iLnR5cGUpTj0yMCxyPWIudG91Y2hlc1swXSx1PXIucGFnZVgtbS54LHI9ci5wYWdlWS1tLnk7Zy5zYXZlKCk7Zy5nbG9iYWxDb21wb3NpdGVPcGVyYXRpb249ImRlc3RpbmF0aW9uLW91dCI7Zy5iZWdpblBhdGgoKTtnLmFyYyh1LHIsMSplLnRoaWNrbmVzcywwLDIqTWF0aC5QSSwhMSk7Zy5jbG9zZVBhdGgoKTtnLmZpbGxTdHlsZT0icmdiYSgwLCAwLCAwLCAxKSI7Zy5maWxsKCk7Zy5yZXN0b3JlKCk7CmlmKCJ0b3VjaG1vdmUiPT1iLnR5cGV8fCJ0b3VjaHN0YXJ0Ij09Yi50eXBlfHwidG91Y2hlbmQiPT1iLnR5cGUpYy5zdHlsZS5tYXJnaW5SaWdodD0iMXB4IixjLnN0eWxlLm1hcmdpblJpZ2h0PSIwcHgiO3BhcnNlSW50KE0oZCkpPj1lLmVuZEF0JiZFKCEwKX19ZnVuY3Rpb24gRShiKXtjLnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsbik7Yy5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZW1vdmUiLG4pO2RvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNldXAiLHQpO2MucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2VvdmVyIixCKTtjLnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNlb3V0IixDKTtjLnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNlbW92ZSIsRCk7Yy5yZW1vdmVFdmVudExpc3RlbmVyKCJ0b3VjaHN0YXJ0IixuKTtjLnJlbW92ZUV2ZW50TGlzdGVuZXIoInRvdWNobW92ZSIsbik7ZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigidG91Y2hlbmQiLAp0KTtmLmFkZEV2ZW50TGlzdGVuZXIoInRvdWNobW92ZSIsZnVuY3Rpb24oZCl7ZC5wcmV2ZW50RGVmYXVsdCgpO3JldHVybiExfSk7YiYmIWEuaGFzRW5kZWQ\/KGEuaGFzRW5kZWQ9ITAsZi5zdHlsZS5zZXRQcm9wZXJ0eSgiY3Vyc29yIiwiZGVmYXVsdCIsImltcG9ydGFudCIpLGMuc3R5bGUuc2V0UHJvcGVydHkoImN1cnNvciIsImRlZmF1bHQiLCJpbXBvcnRhbnQiKSxoLnN0eWxlLmRpc3BsYXk9Im5vbmUiLGRlbGV0ZSBhLnNjcmF0Y2hlZE92ZXJsYXksZi5pbm5lckhUTUw9IiIsMCE9ZS5jb3VudGVyJiYiZnVuY3Rpb24iPT09dHlwZW9mIHgmJngoeSxhKSxiPXdpbmRvd1thLmNhbGxiYWNrXXx8YS5jYWxsYmFjaywiZnVuY3Rpb24iPT09dHlwZW9mIGImJmIoYSkpOmJ8fGEuaGFzRW5kZWR8fChhLnNjcmF0Y2hlZE92ZXJsYXk9TygpLGYuc3R5bGUuYmFja2dyb3VuZEltYWdlPSJub25lIixmLmlubmVySFRNTD0iIil9ZnVuY3Rpb24gTShiKXtpZigwPT1QKyslTnx8Yil7Yj0wO2Zvcih2YXIgZD0KZy5nZXRJbWFnZURhdGEoMCwwLHAscSkuZGF0YSxtPTAsdT1kLmxlbmd0aC0yMDttPHU7bSs9ODApMDxkW21dJiZiKys7InVuZGVmaW5lZCI9PT10eXBlb2YgSSYmKEk9cCpxLzIwLWIpO3k9KDEwMC1iLyhwKnEvMjAtSSkqMTAwKS50b0ZpeGVkKDIpfTAhPWUuY291bnRlciYmImZ1bmN0aW9uIj09PXR5cGVvZiB4JiYwPHkmJngoeSxhKTtyZXR1cm4geX1mdW5jdGlvbiBPKCl7dmFyIGI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIik7Yi53aWR0aD1wO2IuaGVpZ2h0PXE7dmFyIGQ9Yi5nZXRDb250ZXh0KCIyZCIpO2QudHJhbnNsYXRlKDAsMCk7ZC5maWxsU3R5bGU9InJnYmEoMTAsIDExLCAxMiwgMjAwKSI7ZC5maWxsUmVjdCgwLDAscCxxKTtkLmdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbj0iZGVzdGluYXRpb24tb3V0IjtkLmRyYXdJbWFnZShjLDAsMCxwLHEpO3JldHVybiBifWZ1bmN0aW9uIHQoKXtpc01vdXNlRG93bj0hMX1mdW5jdGlvbiBCKGIpe0x8fChoLnN0eWxlLmRpc3BsYXk9CiJibG9jayIpfWZ1bmN0aW9uIEMoYil7aC5zdHlsZS5kaXNwbGF5PSJub25lIn1mdW5jdGlvbiBEKGIpe3ZhciBkPXYoZik7aC5zdHlsZS5sZWZ0PWIucGFnZVgtZC54LUYvMisicHgiO2guc3R5bGUudG9wPWIucGFnZVktZC55LUcvMisicHgifWZ1bmN0aW9uIEgoYil7Yi5zdHlsZS5zZXRQcm9wZXJ0eSgiLWtodG1sLXVzZXItc2VsZWN0Iiwibm9uZSIsImltcG9ydGFudCIpO2Iuc3R5bGUuc2V0UHJvcGVydHkoIi13ZWJraXQtdXNlci1zZWxlY3QiLCJub25lIiwiaW1wb3J0YW50Iik7Yi5zdHlsZS5zZXRQcm9wZXJ0eSgiLW1vei11c2VyLXNlbGVjdCIsIi1tb3otbm9uZSIsImltcG9ydGFudCIpO2Iuc3R5bGUuc2V0UHJvcGVydHkoIi1tcy11c2VyLXNlbGVjdCIsIm5vbmUiLCJpbXBvcnRhbnQiKTtiLnN0eWxlLnNldFByb3BlcnR5KCJ1c2VyLXNlbGVjdCIsIm5vbmUiLCJpbXBvcnRhbnQiKTtiLnN0eWxlLnNldFByb3BlcnR5KCItd2Via2l0LXRvdWNoLWNhbGxvdXQiLCJub25lIiwKImltcG9ydGFudCIpO2Iuc3R5bGUuc2V0UHJvcGVydHkoIi1tcy10b3VjaC1hY3Rpb24iLCJub25lIiwiaW1wb3J0YW50Iil9ZnVuY3Rpb24gdygpe2Muc3R5bGUuc2V0UHJvcGVydHkoImN1cnNvciIsImRlZmF1bHQiLCJpbXBvcnRhbnQiKTtkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJ0b3VjaHN0YXJ0Iix3KTtkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJ0b3VjaG1vdmUiLHcpO2RvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoInRvdWNoZW5kIix3KX12YXIgZT17dG9wSW1hZ2U6bmV3IEltYWdlLGJvdHRvbUltYWdlOm5ldyBJbWFnZSxjb2luSW1hZ2U6bmV3IEltYWdlLHRoaWNrbmVzczoyMCxlbmRBdDo5MCxkZWZhdWx0Q3Vyc29yOiJwb2ludGVyIixjb3VudGVyOiExfSx5PTAsUD0wLHgscD0iMjMwcHgiLHE9IjQxMHB4IixJLEw9ITEsTj0xMDsidW5kZWZpbmVkIj09PXR5cGVvZiBhLnJlc2l6ZVRyaWdnZXImJmEucmVzaXplVHJpZ2dlcjsidW5kZWZpbmVkIj09PQp0eXBlb2YgYS5oYXNFbmRlZCYmKGEuaGFzRW5kZWQ9ITEpOyJ1bmRlZmluZWQiIT09dHlwZW9mIGEud2lkdGgmJiJ1bmRlZmluZWQiIT09dHlwZW9mIGEuaGVpZ2h0JiYocD1hLndpZHRoLHE9YS5oZWlnaHQpO2lmKCF3aW5kb3cuSFRNTENhbnZhc0VsZW1lbnR8fDE9PWEuZmxhc2gpe2lmKCJ1bmRlZmluZWQiIT09dHlwZW9mIGEuZmxhc2hQYXRoKXJldHVybiJ1bmRlZmluZWQiIT10eXBlb2YgYS5iYWNrZ3JvdW5kJiYoZS5ib3R0b21JbWFnZS5vbmxvYWQ9ZnVuY3Rpb24oKXt2YXIgYj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJvYmplY3QiKTtiLnR5cGU9ImFwcGxpY2F0aW9uL3gtc2hvY2t3YXZlLWZsYXNoIjtiLmRhdGE9YS5mbGFzaFBhdGg7InVuZGVmaW5lZCIhPT10eXBlb2YgYS5jb250YWluZXImJjAhPWEuY29udGFpbmVyLm9mZnNldFdpZHRoKmEuY29udGFpbmVyLm9mZnNldEhlaWdodD8oYi53aWR0aD1hLmNvbnRhaW5lci5vZmZzZXRXaWR0aCxiLmhlaWdodD1hLmNvbnRhaW5lci5vZmZzZXRIZWlnaHQpOgooYi53aWR0aD1lLmJvdHRvbUltYWdlLndpZHRoLGIuaGVpZ2h0PWUuYm90dG9tSW1hZ2UuaGVpZ2h0KTt2YXIgZD0iYmFja2dyb3VuZEltYWdlPSIrYS5iYWNrZ3JvdW5kKyImZm9yZWdyb3VuZEltYWdlPSIrYS5mb3JlZ3JvdW5kLG09c2NyYXRjaEpzRmxhc2hBcnJheS5sZW5ndGg7c2NyYXRjaEpzRmxhc2hBcnJheS5wdXNoKGEpO2QrPSImaW5pdD0iK207ZD0idW5kZWZpbmVkIiE9PXR5cGVvZiBhLmNvaW4\/ZCsoIiZjb2luPSIrYS5jb2luKTpkKygiJmN1cnNvcj0iK2UuZGVmYXVsdEN1cnNvcik7ZD0idW5kZWZpbmVkIiE9PXR5cGVvZiBhLnRoaWNrbmVzcz9kKygiJnRoaWNrbmVzcz0iK2EudGhpY2tuZXNzKTpkKygiJnRoaWNrbmVzcz0iK2UudGhpY2tuZXNzKTtkPSJ1bmRlZmluZWQiIT10eXBlb2YgYS5wZXJjZW50P2QrKCImcGVyY2VudD0iK2EucGVyY2VudCk6ZCsoIiZwZXJjZW50PSIrZS5lbmRBdCk7InVuZGVmaW5lZCIhPXR5cGVvZiBhLmNvdW50ZXImJihkKz0iJmNvdW50ZXI9IisKYS5jb3VudGVyKTsidW5kZWZpbmVkIiE9dHlwZW9mIGEuY2FsbGJhY2smJihkKz0iJmNhbGxiYWNrPSIrYS5jYWxsYmFjayk7bT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJwYXJhbSIpO20ubmFtZT0ibW92aWUiO20udmFsdWU9YS5mbGFzaFBhdGg7dmFyIHU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgicGFyYW0iKTt1Lm5hbWU9IkZsYXNoVmFycyI7dS52YWx1ZT1kO3ZhciByPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInBhcmFtIik7ci5uYW1lPSJGbGFzaENvbnRlbnQiO3IudmFsdWU9YS5mbGFzaFBhdGg7dmFyIHo9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZW1iZWQiKTt6LnNyYz1hLmZsYXNoUGF0aDt6LndpZHRoPWIud2lkdGg7ei5oZWlnaHQ9Yi5oZWlnaHQ7ei50eXBlPSJhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaCI7LTEhPW5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKS5pbmRleE9mKCJtc2llIik\/YS5jb250YWluZXIuaW5uZXJIVE1MPSc8b2JqZWN0IHR5cGU9ImFwcGxpY2F0aW9uL3gtc2hvY2t3YXZlLWZsYXNoIiBkYXRhPSInKwphLmZsYXNoUGF0aCsnIiB3aWR0aD0iJytiLndpZHRoKyciIGhlaWdodD0iJytiLmhlaWdodCsnIiA+PHBhcmFtIG5hbWU9Im1vdmllIiB2YWx1ZT0iJythLmZsYXNoUGF0aCsnIiAvPjxwYXJhbSBuYW1lPSJGbGFzaFZhcnMiIHZhbHVlPSInK2QrJyIgLz48L29iamVjdD4nOihiLmFwcGVuZENoaWxkKG0pLGIuYXBwZW5kQ2hpbGQodSksYi5hcHBlbmRDaGlsZChyKSxiLmFwcGVuZENoaWxkKHopLGEuY29udGFpbmVyLmFwcGVuZENoaWxkKGIpKTthLmxvY2tlZD0hMDthLmNvbnRhaW5lci5sb2NrPWZ1bmN0aW9uKEopeyJ1bmRlZmluZWQiPT09dHlwZW9mIEomJihKPWEubG9ja2VkKTthLmxvY2tlZD0hYS5sb2NrZWQ7Yi5sb2NrKEopfTthLmNvbnRhaW5lci5yZXN0YXJ0PWZ1bmN0aW9uKCl7Yi5yZXN0YXJ0KCl9O2EuY29udGFpbmVyLmNsZWFuPWZ1bmN0aW9uKCl7Yi5jbGVhbigpfX0sZS5ib3R0b21JbWFnZS5zcmM9YS5iYWNrZ3JvdW5kKSwhMTtmLmlubmVySFRNTD0iWW91ciBicm93c2VyIGRvZXMgbm90IHN1cHBvcnQgSFRNTDUgY2FudmFzIHRhZy4ifWlmKCJ1bmRlZmluZWQiIT0KdHlwZW9mIGEuY29udGFpbmVyKXt2YXIgZj1hLmNvbnRhaW5lcjtwPWYub2Zmc2V0V2lkdGg7cT1mLm9mZnNldEhlaWdodDtmLnN0eWxlLnNldFByb3BlcnR5KCJwb3NpdGlvbiIsInJlbGF0aXZlIiwiaW1wb3J0YW50Iik7Zi5zdHlsZS5zZXRQcm9wZXJ0eSgicGFkZGluZyIsIjAiLCJpbXBvcnRhbnQiKTtIKGYpfWVsc2UgcmV0dXJuITE7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBhLmJhY2tncm91bmR8fGEuaGFzRW5kZWQpcmV0dXJuITE7ZS5ib3R0b21JbWFnZS5vbmxvYWQ9ZnVuY3Rpb24oKXtmLnN0eWxlLndpZHRoPSIyMzBweCI7Zi5zdHlsZS5oZWlnaHQ9IjQxMHB4IjtjLndpZHRoPXA7Yy5oZWlnaHQ9cTtIKGMpO0EoKX07ZS5ib3R0b21JbWFnZS5zcmM9YS5iYWNrZ3JvdW5kO3ZhciBjPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpO2MuY2xhc3NOYW1lPSJzY3JhdGNoY2FyZC1PdmVybGF5IjtjLnN0eWxlLnBvc2l0aW9uPSJyZWxhdGl2ZSI7Yy5zdHlsZS56SW5kZXg9CiIxIjtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7JCgiLnNjcmF0Y2hBbmRTYXZlTW9iaWxlVGV4dFdyYXBwZXIiKS5zaG93KCl9LDUwMCk7dmFyIGc9Yy5nZXRDb250ZXh0KCIyZCIpO2cudHJhbnNsYXRlKDAsMCk7dmFyIGg9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7aC5jbGFzc05hbWU9InNjcmF0Y2hjYXJkLUN1cnNvciI7dmFyIEY9MCxHPTA7ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2hzdGFydCIsdyk7ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2htb3ZlIix3KTtkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJ0b3VjaGVuZCIsdyk7YS5sb2NrZWQ9ITE7YS5jb250YWluZXIubG9jaz1mdW5jdGlvbihiKXsidW5kZWZpbmVkIiE9PXR5cGVvZiBiJiYoYS5sb2NrZWQ9IWIpO2EubG9ja2VkPyhjLmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsbiksYy5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW1vdmUiLG4pLGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNldXAiLAp0KSxjLmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlb3ZlciIsQiksYy5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW91dCIsQyksYy5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW1vdmUiLEQpLGMuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2hzdGFydCIsbiksYy5hZGRFdmVudExpc3RlbmVyKCJ0b3VjaG1vdmUiLG4pLGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoInRvdWNoZW5kIix0KSwidW5kZWZpbmVkIj09dHlwZW9mIGEuY29pbiYmKGMuc3R5bGUuY3Vyc29yPWUuZGVmYXVsdEN1cnNvcikpOihjLnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsbiksYy5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZW1vdmUiLG4pLGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNldXAiLHQpLGMucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2VvdmVyIixCKSxjLnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNlb3V0IixDKSxjLnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNlbW92ZSIsRCksCmMucmVtb3ZlRXZlbnRMaXN0ZW5lcigidG91Y2hzdGFydCIsbiksYy5yZW1vdmVFdmVudExpc3RlbmVyKCJ0b3VjaG1vdmUiLG4pLGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoInRvdWNoZW5kIix0KSxjLnN0eWxlLmN1cnNvcj0iZGVmYXVsdCIpO2EubG9ja2VkPSFhLmxvY2tlZH07YS5jb250YWluZXIucmVzdGFydD1mdW5jdGlvbigpe2EuaGFzRW5kZWQ9ITE7RSghMSk7YS5zY3JhdGNoZWRPdmVybGF5PXZvaWQgMDt3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigicmVzaXplIixsKTtjcmVhdGVTY3JhdGNoQ2FyZChhKX07YS5jb250YWluZXIuY2xlYW49ZnVuY3Rpb24oKXthLmhhc0VuZGVkPSEwO2EuY29udGFpbmVyLmxvY2soITApO2RlbGV0ZSBhLnNjcmF0Y2hlZE92ZXJsYXk7Zi5pbm5lckhUTUw9IiI7Zi5zdHlsZS5zZXRQcm9wZXJ0eSgiY3Vyc29yIiwiZGVmYXVsdCIpfX0KZnVuY3Rpb24gZ2VuZXJhdGVTY3JhdGNoKGEpe2x0X0lFOT9zY3JhdGNoRW5kQ2FsbGJhY2soITApOnNldFNjcmF0Y2goYSl9CmZ1bmN0aW9uIHNldFNjcmF0Y2goYSl7dmFyIGs9JCgiI1NjcmF0Y2hQYWRNb2JpbGUiK2ErIiAuc2NyYXRjaENvbnRhaW5lckltZ01vYmlsZSIpO2s9ay5hdHRyKCJzcmMiKT9rLmF0dHIoInNyYyIpOmsuYXR0cigiZGF0YS1pbWdzcmMiKTt2YXIgbD0ic2NyYXRjaEVuZENhbGxiYWNrIjsiMSI9PT0kKCIjc2NyYXRjaEZpcnN0RW5hYmxlZCIrYSkudmFsKCkmJihsPWZ1bmN0aW9uKCl7c2V0VGltZW91dChmdW5jdGlvbigpe3Nob3dTY3JhdGNoQW5kU2F2ZUZvcm0oYSwhMCl9LDFFMyl9KTtjcmVhdGVTY3JhdGNoQ2FyZCh7Y29udGFpbmVyOmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzY3JhdGNoQ29udGFpbmVyTW9iaWxlIithKSxiYWNrZ3JvdW5kOmssZm9yZWdyb3VuZDoiL2ltYWdlcy9zY3JhdGNoL3NjcmF0Y2gtZm9yZWdyb3VuZF9tLnBuZyIscGVyY2VudDo3NSxjb2luOiIvaW1hZ2VzL3NjcmF0Y2gvY29pbjIucG5nIix0aGlja25lc3M6MjAsY2FsbGJhY2s6bCxmbGFzaFBhdGg6Ii9mbGFzaC9zY3JhdGNoY2FyZC5zd2YifSl9CmZ1bmN0aW9uIHNob3dTY3JhdGNoQW5kU2F2ZUZvcm0oYSxrKXtpZihrfHwiMSIhPT0kKCIjc2NyYXRjaEZpcnN0RW5hYmxlZCIrYSkudmFsKCkpayYmIjEiPT09JCgiI3NjcmF0Y2hGaXJzdEVuYWJsZWQiK2EpLnZhbCgpJiYkKCIuc2NyYXRjaHNhdmVfX21vYmlsZS5zY3JhdGNoLWZpcnN0IikuYWRkQ2xhc3MoInNjcmF0Y2hlZCIpLENvb2tpZXMuZ2V0KCJzY3JhdGNoYW5kc2F2ZSIpJiYoJCgiLmJ1dHRvblR3byIpLmhpZGUoKSwkKCJpbnB1dC5pbnB1dCIsIi5mb3JtdGFibGUiKS5wcm9wKCJkaXNhYmxlZCIsITApLCQoIi5zbGlkZXJTY3JhdGNoRG9uZSIpLnNob3coKSksJCgiZm9ybVtuYW1lPSdzY3JhdGNoQW5kU2F2ZUZvcm0nXSIpLnNob3coKX0KZnVuY3Rpb24gc2NyYXRjaEVuZENhbGxiYWNrKGEpeyQoJ1tpZCo9InNjcmF0Y2hBbmRTYXZlUG9wdXBDb250YWluZXJfIl0gLmNsb3NlLXJldmVhbC1tb2RhbCcpLnRyaWdnZXIoImNsaWNrIik7Q29va2llcy5zZXQoInNsaWRlclNjcmF0Y2hXb24iLDEsbnVsbCwiLyIpOyEwIT09YSYmKGdldENvb2tpZSgiY3JlZGl0U2NvcmVDb25maXJtUG9wdXBTaG93biIpfHxnZXRDb29raWUoImNyZWRpdFNjb3JlRW1iZWRkZWRGaWxsZWQiKXx8IiIhPWVtYWlsSGFuZGxlci51c2VyUGhvbmUmJiIiIT1lbWFpbEhhbmRsZXIuYWRkcmVzcyYmIiIhPWVtYWlsSGFuZGxlci5iaXJ0aGRhdGV8fCEkKCIjY3JlZGl0U2NvcmVDb25maXJtUG9wdXBDb250YWluZXIiKS5sZW5ndGg\/JCgiI3NjcmF0Y2hXaW5uZXJNc2dNb2JpbGUiKS5yZXZlYWwoe2FuaW1hdGlvbjoiZmFkZUFuZFBvcCIsYW5pbWF0aW9uc3BlZWQ6MzAwLGNsb3Nlb25iYWNrZ3JvdW5kY2xpY2s6ITEsZGlzbWlzc21vZGFsY2xhc3M6ImNsb3NlLXJldmVhbC1tb2RhbCIsCmNsb3Nlb25lc2NhcGU6ITF9KTokKCIjY3JlZGl0U2NvcmVDb25maXJtUG9wdXBDb250YWluZXIiKS5wb3B1cGl6ZSgpLnNldFRyaWdnZXIoImNsaWNrIikub3BlbigxKSl9CnZhciBzY3JhdGNoU2F2ZU1vYmlsZT17b25BZnRlckluaXRpYWxpemU6ZnVuY3Rpb24oYSxrLGwsQSx2KXsidW5kZWZpbmVkIiE9PXR5cGVvZiAkKCIjbmV3U2VjdGlvbk92ZXJyaWRlIikudmFsKCkmJiIxIj09PSQoIiNuZXdTZWN0aW9uT3ZlcnJpZGUiKS52YWwoKSYmImNhcmRldGFpbC5odG1sIj09PUEmJiJuZXciPT09bCYmKGEuc2V0dGluZ3MuZm9ybS5lbWFpbGlkPSJSZWJhdGVDb3Vwb25OZXdJbnZlbnRvcnkiKTtDb29raWVzLmdldCgic2NyYXRjaGFuZHNhdmUiKSYmKCQoIi5zY3JhdGNoYnRuIikuaGlkZSgpLCQoImlucHV0LmlucHV0IiwiLmZvcm10YWJsZSIpLnByb3AoImRpc2FibGVkIiwhMCksJCgiLnNsaWRlclNjcmF0Y2hEb25lIikuc2hvdygpKTtyZXR1cm4gcG9wdXBEZWZhdWx0T25BZnRlckluaXRpYWxpemUobCx2LnRvQWN0aXZlLHYubWFpblBvcHVwLGssQSwic2NyYXRjaEFuZFNhdmVQb3B1cENvbnRhaW5lciIsdi5zaG93T25HZW5lcmFsU1JQKX0sb25CZWZvcmVPcGVuOmZ1bmN0aW9uKGEpe2dlbmVyYXRlU2NyYXRjaChhKTsKQ29va2llcy5nZXQoInBvcHVwUGFnZVZpZXdzIil8fENvb2tpZXMuc2V0KCJwb3B1cFBhZ2VWaWV3cyIsIjAiLG51bGwsIi8iKTskKCIjcG9wdXBEZXBhcnRtZW50IikubGVuZ3RofHwkKGRvY3VtZW50LmJvZHkpLmFwcGVuZCgnPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9InBvcHVwRGVwYXJ0bWVudCIgdmFsdWU9IiIgLz4nKTtyZXR1cm4hMH0sb25CZWZvcmVWYWxpZGF0aW9uOmZ1bmN0aW9uKCl7cmV0dXJuImRlbW8iPT09JCgiI3JlYmF0ZUVtYWlsX25ldyIpLnZhbCgpJiYiZGVtbyI9PT0kKCIjcmViYXRlTmFtZV9uZXciKS52YWwoKT8tMToxfSxvbkJlZm9yZVN1Ym1pdDpmdW5jdGlvbigpeyQoImh0bWwsYm9keSIpLmFuaW1hdGUoe3Njcm9sbFRvcDowfSwwKTskKCJmb3JtW25hbWU9J3NjcmF0Y2hBbmRTYXZlRm9ybSddIikuaGlkZSgpfSxvbkFmdGVyU3VibWl0OmZ1bmN0aW9uKGEpeyIxIj09PSQoIiNzY3JhdGNoRmlyc3RFbmFibGVkIithKS52YWwoKT9zY3JhdGNoRW5kQ2FsbGJhY2soKToKJCgiLnNsaWRlci1vdmVybGF5IikuaGlkZSgpO0Nvb2tpZXMuc2V0KCJzY3JhdGNoYW5kc2F2ZSIsIjEiLDcsIi8iKX0sb25CZWZvcmVTZW5kTWFpbDpmdW5jdGlvbigpeyQoIi5zbGlkZXItb3ZlcmxheSIpLnJlbW92ZUF0dHIoIm9uY2xpY2siKS5yZW1vdmVBdHRyKCJvbnRvdWNoc3RhcnQiKX0sb25DbG9zZTpmdW5jdGlvbihhLGssbCl7ImZhbHNlIiE9bCYmIkNPTlNFTlQiIT09ayYmcG9wdXBQb3N0TWVzc2FnZU9uQXV0b2F1YmFpbmUoKTskKCIjc2NyYXRjaENvbnRhaW5lck1vYmlsZSIrYSkuZmluZCgiLnNjcmF0Y2hjYXJkLU92ZXJsYXkiKS5yZW1vdmUoKTskKCIjc2NyYXRjaENvbnRhaW5lck1vYmlsZSIrYSkuZmluZCgiLnNjcmF0Y2hjYXJkLUN1cnNvciIpLnJlbW92ZSgpOyQoIiNwb3B1cERlcGFydG1lbnQiKS5yZW1vdmUoKX19OwovKiogL20vanMvbmViQ2FsL25lYkRhdGVGbi5qcyAqKi8KdmFyIF9fX2QyY19uZWJEYXRlRm5qc19jX29uPSIyMDI1LTA1LTIzIDE3OjA0OjI0IjsndXNlIHN0cmljdCc7dmFyIF9fX2QyY19uZWJEYXRlRm5qc19jX29uPSIyMDI0LTAxLTMxIDE0OjMxOjU3IjsidXNlIHN0cmljdCI7X19fZDJjX25lYkRhdGVGbmpzX2Nfb249IjIwMjMtMDEtMTIgMTE6MzI6MjMiOyJ1c2Ugc3RyaWN0IjtfX19kMmNfbmViRGF0ZUZuanNfY19vbj0iMjAyMy0wMS0xMiAxMDo0MjoxNiI7InVzZSBzdHJpY3QiO19fX2QyY19uZWJEYXRlRm5qc19jX29uPSIyMDIxLTEyLTE1IDEyOjM4OjM5IjsidXNlIHN0cmljdCI7Y29uc3QgbmViRGF0ZUZuPXt9OwokKCJib2R5IikuaGFzQ2xhc3MoIkZSRU5DSCIpPyQubmViTGFuZz17bW9udGhOYW1lczoiSmFudmllciBGJmVhY3V0ZTt2cmllciBNYXJzIEF2cmlsIE1haSBKdWluIEp1aWxsZXQgQW8mdWNpcmM7dCBTZXB0ZW1icmUgT2N0b2JyZSBOb3ZlbWJyZSBEJmVhY3V0ZTtjZW1icmUiLnNwbGl0KCIgIiksbW9udGhOYW1lc1Nob3J0OiJKYW52LiBGJmVhY3V0ZTt2ci4gTWFycyBBdnIuIE1haSBKdWluIEp1aWwuIEFvJnVjaXJjO3QgU2VwdC4gT2N0LiBOb3YuIEQmZWFjdXRlO2MuIi5zcGxpdCgiICIpLGRheU5hbWVzOiJEaW1hbmNoZSBMdW5kaSBNYXJkaSBNZXJjcmVkaSBKZXVkaSBWZW5kcmVkaSBTYW1lZGkiLnNwbGl0KCIgIiksZGF5TmFtZXNTaG9ydDoiRGltIEx1biBNYXIgTWVyIEpldSBWZW4gU2FtIi5zcGxpdCgiICIpLGRheU5hbWVzTWluOiJEaSBMdSBNYSBNZSBKZSBWZSBTYSIuc3BsaXQoIiAiKSx3ZWVrSGVhZGVyOiJTbSIsZGF0ZUZvcm1hdDoieS1NLWQiLGZpcnN0RGF5OjEsCmlzUlRMOiExLHNob3dNb250aEFmdGVyWWVhcjohMSx5ZWFyU3VmZml4OiIiLGludmFsaWREYXRlRm9ybWF0OiJpbnZhbGlkX2RhdGUifTokLm5lYkxhbmc9e21vbnRoTmFtZXM6IkphbnVhcnkgRmVicnVhcnkgTWFyY2ggQXByaWwgTWF5IEp1bmUgSnVseSBBdWd1c3QgU2VwdGVtYmVyIE9jdG9iZXIgTm92ZW1iZXIgRGVjZW1iZXIiLnNwbGl0KCIgIiksbW9udGhOYW1lc1Nob3J0OiJKYW4uIEZlYi4gTWFyLiBBcHIuIE1heSBKdW4uIEp1bC4gQXVnLiBTZXB0LiBPY3QuIE5vdi4gRGVjLiIuc3BsaXQoIiAiKSxkYXlOYW1lczoiU3VuZGF5IE1vbmRheSBUdWVzZGF5IFdlZG5lc2RheSBUaHVyc2RheSBGcmlkYXkgU2F0dXJkYXkiLnNwbGl0KCIgIiksZGF5TmFtZXNTaG9ydDoiU3VuIE1vbiBUdWUgV2VkIFRodSBGcmkgU2F0Ii5zcGxpdCgiICIpLGRheU5hbWVzTWluOiJTdSBNbyBUdSBXZSBUaCBGciBTYSIuc3BsaXQoIiAiKSx3ZWVrSGVhZGVyOiJTbSIsZGF0ZUZvcm1hdDoieS1NLWQiLApmaXJzdERheToxLGlzUlRMOiExLHNob3dNb250aEFmdGVyWWVhcjohMSx5ZWFyU3VmZml4OiIiLGludmFsaWREYXRlRm9ybWF0OiJpbnZhbGlkX2RhdGUifTtEYXRlLkxaPWZ1bmN0aW9uKGEpe3JldHVybigwPmF8fDk8YT8iIjoiMCIpK2F9O25lYkRhdGVGbi5MWj1mdW5jdGlvbihhKXtyZXR1cm4oMD5hfHw5PGE\/IiI6IjAiKSthfTtEYXRlLnByZWZlckFtZXJpY2FuRm9ybWF0PSEwO25lYkRhdGVGbi5jbGVhclRpbWU9ZnVuY3Rpb24oYSl7YSBpbnN0YW5jZW9mIERhdGUmJihhLnNldEhvdXJzKDApLGEuc2V0TWludXRlcygwKSxhLnNldFNlY29uZHMoMCksYS5zZXRNaWxsaXNlY29uZHMoMCkpO3JldHVybiBhfTsKRGF0ZS5wcm90b3R5cGUudG9NeXNxbEZvcm1hdD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmdldEZ1bGxZZWFyKCkrIi0iK0RhdGUuTFooMSt0aGlzLmdldE1vbnRoKCkpKyItIitEYXRlLkxaKHRoaXMuZ2V0RGF0ZSgpKSsiICIrRGF0ZS5MWih0aGlzLmdldEhvdXJzKCkpKyI6IitEYXRlLkxaKHRoaXMuZ2V0TWludXRlcygpKSsiOiIrRGF0ZS5MWih0aGlzLmdldFNlY29uZHMoKSl9O0RhdGUucHJvdG90eXBlLmlzTGVhcFllYXI9ZnVuY3Rpb24oKXtyZXR1cm4gMjk9PShuZXcgRGF0ZSh0aGlzLmdldEZ1bGxZZWFyKCksMSwyOSkpLmdldERhdGUoKX07RGF0ZS5wcm90b3R5cGUuZ2V0TGFzdERheU9mTW9udGhDYWw9ZnVuY3Rpb24oKXtyZXR1cm4obmV3IERhdGUodGhpcy5nZXRGdWxsWWVhcigpLHRoaXMuZ2V0TW9udGgoKSsxLDApKS5nZXREYXRlKCl9O0RhdGUucHJvdG90eXBlLnNldERheT1mdW5jdGlvbihhKXt0aGlzLnNldERhdGUoYSk7cmV0dXJuIHRoaXN9OwpEYXRlLnByb3RvdHlwZS5zZXRNb249ZnVuY3Rpb24oYSl7dGhpcy5zZXRNb250aChhKTtyZXR1cm4gdGhpc307RGF0ZS5wcm90b3R5cGUuc2V0WWVhcj1mdW5jdGlvbihhKXt0aGlzLnNldEZ1bGxZZWFyKGEpO3JldHVybiB0aGlzfTtEYXRlLnByb3RvdHlwZS5hZGREYXk9ZnVuY3Rpb24oYSl7dGhpcy5zZXREYXRlKHRoaXMuZ2V0RGF0ZSgpK2EpO3JldHVybiB0aGlzfTtEYXRlLnByb3RvdHlwZS5hZGRNb249ZnVuY3Rpb24oYSl7dGhpcy5zZXRNb250aCh0aGlzLmdldE1vbnRoKCkrYSk7cmV0dXJuIHRoaXN9O0RhdGUucHJvdG90eXBlLmFkZFllYXI9ZnVuY3Rpb24oYSl7dGhpcy5zZXRGdWxsWWVhcih0aGlzLmdldEZ1bGxZZWFyKCkrYSk7cmV0dXJuIHRoaXN9O0RhdGUucGFyc2VEYXRlVGltZT1mdW5jdGlvbihhKXthPWEuc3BsaXQoL1stIDpdLyk7cmV0dXJuIG5ldyBEYXRlKGFbMF0sYVsxXS0xLGFbMl0sYVszXSxhWzRdLGFbNV0pfTsKbmViRGF0ZUZuLnBhcnNlU3RyaW5nPWZ1bmN0aW9uKGEsZSl7aWYoInVuZGVmaW5lZCI9PT10eXBlb2YgZXx8bnVsbD09PWV8fCIiPT09ZSl7ZT1bIk0vZC95IiwiTS1kLXkiLCJNLmQueSIsIk0vZCIsIk0tZCJdO3ZhciBjPVsiZC9NL3kiLCJkLU0teSIsImQuTS55IiwiZC9NIiwiZC1NIl07ZT1bInktTS1kO01NTSBkLCB5O01NTSBkLHk7eS1NTU0tZDtkLU1NTS15O01NTSBkO01NTS1kO2QtTU1NIi5zcGxpdCgiOyIpLERhdGUucHJlZmVyQW1lcmljYW5Gb3JtYXQ\/ZTpjLERhdGUucHJlZmVyQW1lcmljYW5Gb3JtYXQ\/YzplXTtmb3IoYz0wO2M8ZS5sZW5ndGg7YysrKWZvcih2YXIgaD1lW2NdLGs9MDtrPGgubGVuZ3RoO2srKyl7dmFyIG49bmViRGF0ZUZuLnBhcnNlU3RyaW5nKGEsaFtrXSk7aWYobnVsbCE9PW4pcmV0dXJuIG59cmV0dXJuIG51bGx9dGhpcy5pc0ludGVnZXI9ZnVuY3Rpb24odSl7Zm9yKHZhciBxPTA7cTx1Lmxlbmd0aDtxKyspaWYoLTE9PSIxMjM0NTY3ODkwIi5pbmRleE9mKHUuY2hhckF0KHEpKSlyZXR1cm4hMTsKcmV0dXJuITB9O3RoaXMuZ2V0SW50PWZ1bmN0aW9uKHUscSx5LHcpe2Zvcig7dz49eTt3LS0pe3ZhciB4PXUuc3Vic3RyaW5nKHEscSt3KTtpZih4Lmxlbmd0aDx5KWJyZWFrO2lmKHRoaXMuaXNJbnRlZ2VyKHgpKXJldHVybiB4fXJldHVybiBudWxsfTthKz0iIjtlKz0iIjtoPWM9MDt2YXIgbT0iIixiPSIiLGw9KG5ldyBEYXRlKS5nZXRGdWxsWWVhcigpLGc9MSxkPTEsZj0wLHI9MCx0PTAsdj0iIjttPVtdO2ZvcihiPTA7aDxlLmxlbmd0aDspe209ZS5jaGFyQXQoaCk7Zm9yKGI9IiI7ZS5jaGFyQXQoaCk9PW0mJmg8ZS5sZW5ndGg7KWIrPWUuY2hhckF0KGgrKyk7aWYoInl5eXkiPT1ifHwieXkiPT1ifHwieSI9PWIpeyJ5eXl5Ij09YiYmKG49az00KTsieXkiPT1iJiYobj1rPTIpOyJ5Ij09YiYmKGs9MixuPTQpO2w9dGhpcy5nZXRJbnQoYSxjLGssbik7aWYobnVsbD09PWwpcmV0dXJuIG51bGw7Yys9bC5sZW5ndGg7Mj09bC5sZW5ndGgmJihsPTcwPGw\/MTkwMCsobC0wKToyRTMrCihsLTApKX1lbHNlIGlmKCJNTU0iPT1ifHwiTk5OIj09Yil7Zz0wO209Ik1NTSI9PWI\/JC5uZWJMYW5nLm1vbnRoTmFtZXMuY29uY2F0KCQubmViTGFuZy5tb250aE5hbWVzU2hvcnQpOiQubmViTGFuZy5tb250aE5hbWVzU2hvcnQ7Zm9yKGI9MDtiPG0ubGVuZ3RoO2IrKyl7dmFyIHA9bVtiXTtpZihhLnN1YnN0cmluZyhjLGMrcC5sZW5ndGgpLnRvTG93ZXJDYXNlKCk9PXAudG9Mb3dlckNhc2UoKSl7Zz1iJTEyKzE7Yys9cC5sZW5ndGg7YnJlYWt9fWlmKDE+Z3x8MTI8ZylyZXR1cm4gbnVsbH1lbHNlIGlmKCJFRSI9PWJ8fCJFIj09Yilmb3IobT0iRUUiPT1iPyQubmViTGFuZy5kYXlOYW1lczokLm5lYkxhbmcuZGF5TmFtZXNTaG9ydCxiPTA7YjxtLmxlbmd0aDtiKyspe2lmKHA9bVtiXSxhLnN1YnN0cmluZyhjLGMrcC5sZW5ndGgpLnRvTG93ZXJDYXNlKCk9PXAudG9Mb3dlckNhc2UoKSl7Yys9cC5sZW5ndGg7YnJlYWt9fWVsc2UgaWYoIk1NIj09Ynx8Ik0iPT1iKXtnPXRoaXMuZ2V0SW50KGEsCmMsYi5sZW5ndGgsMik7aWYobnVsbD09PWd8fDE+Z3x8MTI8ZylyZXR1cm4gbnVsbDtjKz1nLmxlbmd0aH1lbHNlIGlmKCJkZCI9PWJ8fCJkIj09Yil7ZD10aGlzLmdldEludChhLGMsYi5sZW5ndGgsMik7aWYobnVsbD09PWR8fDE+ZHx8MzE8ZClyZXR1cm4gbnVsbDtjKz1kLmxlbmd0aH1lbHNlIGlmKCJoaCI9PWJ8fCJoIj09Yil7Zj10aGlzLmdldEludChhLGMsYi5sZW5ndGgsMik7aWYobnVsbD09PWZ8fDE+Znx8MTI8ZilyZXR1cm4gbnVsbDtjKz1mLmxlbmd0aH1lbHNlIGlmKCJISCI9PWJ8fCJIIj09Yil7Zj10aGlzLmdldEludChhLGMsYi5sZW5ndGgsMik7aWYobnVsbD09PWZ8fDA+Znx8MjM8ZilyZXR1cm4gbnVsbDtjKz1mLmxlbmd0aH1lbHNlIGlmKCJLSyI9PWJ8fCJLIj09Yil7Zj10aGlzLmdldEludChhLGMsYi5sZW5ndGgsMik7aWYobnVsbD09PWZ8fDA+Znx8MTE8ZilyZXR1cm4gbnVsbDtjKz1mLmxlbmd0aDtmKyt9ZWxzZSBpZigia2siPT1ifHwiayI9PWIpe2Y9dGhpcy5nZXRJbnQoYSwKYyxiLmxlbmd0aCwyKTtpZihudWxsPT09Znx8MT5mfHwyNDxmKXJldHVybiBudWxsO2MrPWYubGVuZ3RoO2YtLX1lbHNlIGlmKCJtbSI9PWJ8fCJtIj09Yil7cj10aGlzLmdldEludChhLGMsYi5sZW5ndGgsMik7aWYobnVsbD09PXJ8fDA+cnx8NTk8cilyZXR1cm4gbnVsbDtjKz1yLmxlbmd0aH1lbHNlIGlmKCJzcyI9PWJ8fCJzIj09Yil7dD10aGlzLmdldEludChhLGMsYi5sZW5ndGgsMik7aWYobnVsbD09PXR8fDA+dHx8NTk8dClyZXR1cm4gbnVsbDtjKz10Lmxlbmd0aH1lbHNlIGlmKCJhIj09Yil7aWYoImFtIj09YS5zdWJzdHJpbmcoYyxjKzIpLnRvTG93ZXJDYXNlKCkpdj0iQU0iO2Vsc2UgaWYoInBtIj09YS5zdWJzdHJpbmcoYyxjKzIpLnRvTG93ZXJDYXNlKCkpdj0iUE0iO2Vsc2UgcmV0dXJuIG51bGw7Yys9Mn1lbHNle2lmKGEuc3Vic3RyaW5nKGMsYytiLmxlbmd0aCkhPWIpcmV0dXJuIG51bGw7Yys9Yi5sZW5ndGh9fWlmKGMhPWEubGVuZ3RoKXJldHVybiBudWxsO2lmKDI9PQpnKWlmKDA9PT1sJTQmJjAhPT1sJTEwMHx8MD09PWwlNDAwKXtpZigyOTxkKXJldHVybiBudWxsfWVsc2UgaWYoMjg8ZClyZXR1cm4gbnVsbDtpZigzMDxkJiYoND09Z3x8Nj09Z3x8OT09Z3x8MTE9PWcpKXJldHVybiBudWxsOzEyPmYmJiJQTSI9PXY\/Zj1mLTArMTI6MTE8ZiYmIkFNIj09diYmKGYtPTEyKTtyZXR1cm4gbmV3IERhdGUobCxnLTEsZCxmLHIsdCl9O0RhdGUuaXNWYWxpZD1mdW5jdGlvbihhLGUpe3JldHVybiBudWxsIT09bmViRGF0ZUZuLnBhcnNlU3RyaW5nKGEsZSl9O0RhdGUucHJvdG90eXBlLmRpZmY9ZnVuY3Rpb24oYSl7cmV0dXJuIG51bGw9PT1hPyExOnRoaXMuZ2V0VGltZSgpPT1hLmdldFRpbWUoKT8wOnRoaXMuZ2V0VGltZSgpPmEuZ2V0VGltZSgpPy0xOjF9OwpEYXRlLnByb3RvdHlwZS5mb3JtYXQ9ZnVuY3Rpb24oYSl7YSs9IiI7dmFyIGU9IiIsYz0wLGg9dGhpcy5nZXRGdWxsWWVhcigpKyIiLGs9dGhpcy5nZXRNb250aCgpKzEsbj10aGlzLmdldERhdGUoKSxtPXRoaXMuZ2V0RGF5KCksYj10aGlzLmdldEhvdXJzKCksbD10aGlzLmdldE1pbnV0ZXMoKSxnPXRoaXMuZ2V0U2Vjb25kcygpLGQ9e307ND5oLmxlbmd0aCYmKGg9IiIrKCtoKzE5MDApKTtkLnk9IiIraDtkLnl5eXk9aDtkLnl5PWguc3Vic3RyaW5nKDIsNCk7ZC5NPWs7ZC5NTT1EYXRlLkxaKGspO2QuTU1NPSQubmViTGFuZy5tb250aE5hbWVzW2stMV07ZC5OTk49JC5uZWJMYW5nLm1vbnRoTmFtZXNTaG9ydFtrLTFdO2QuZD1uO2QuZGQ9RGF0ZS5MWihuKTtkLkU9JC5uZWJMYW5nLmRheU5hbWVzU2hvcnRbbV07ZC5FRT0kLm5lYkxhbmcuZGF5TmFtZXNbbV07ZC5IPWI7ZC5ISD1EYXRlLkxaKGIpO2QuaD0wPT09Yj8xMjoxMjxiP2ItMTI6YjtkLmhoPURhdGUuTFooZC5oKTtkLks9CmQuaC0xO2Quaz1kLkgrMTtkLktLPURhdGUuTFooZC5LKTtkLmtrPURhdGUuTFooZC5rKTtkLmE9MTE8Yj8iUE0iOiJBTSI7ZC5tPWw7ZC5tbT1EYXRlLkxaKGwpO2Qucz1nO2ZvcihkLnNzPURhdGUuTFooZyk7YzxhLmxlbmd0aDspe2g9YS5jaGFyQXQoYyk7Zm9yKGs9IiI7YS5jaGFyQXQoYyk9PWgmJmM8YS5sZW5ndGg7KWsrPWEuY2hhckF0KGMrKyk7ZT0idW5kZWZpbmVkIiE9dHlwZW9mIGRba10\/ZStkW2tdOmUra31yZXR1cm4gZX07CkRhdGUucHJvdG90eXBlLmFkZD1mdW5jdGlvbihhLGUpe2lmKCJ1bmRlZmluZWQiPT09dHlwZW9mIGF8fG51bGw9PT1hfHwidW5kZWZpbmVkIj09PXR5cGVvZiBlfHxudWxsPT09ZSlyZXR1cm4gdGhpcztlPStlO2lmKCJ5Ij09YSl0aGlzLnNldEZ1bGxZZWFyKHRoaXMuZ2V0RnVsbFllYXIoKStlKTtlbHNlIGlmKCJNIj09YSl0aGlzLnNldE1vbnRoKHRoaXMuZ2V0TW9udGgoKStlKTtlbHNlIGlmKCJkIj09YSl0aGlzLnNldERhdGUodGhpcy5nZXREYXRlKCkrZSk7ZWxzZSBpZigidyI9PWEpZm9yKGE9MDxlPzE6LTE7MCE9PWU7KXtmb3IodGhpcy5hZGQoImQiLGEpOzA9PT10aGlzLmdldERheSgpfHw2PT09dGhpcy5nZXREYXkoKTspdGhpcy5hZGQoImQiLGEpO2UtPWF9ZWxzZSJoIj09YT90aGlzLnNldEhvdXJzKHRoaXMuZ2V0SG91cnMoKStlKToibSI9PWE\/dGhpcy5zZXRNaW51dGVzKHRoaXMuZ2V0TWludXRlcygpK2UpOiJzIj09YSYmdGhpcy5zZXRTZWNvbmRzKHRoaXMuZ2V0U2Vjb25kcygpKwplKTtyZXR1cm4gdGhpc307RGF0ZS5wcm90b3R5cGUuY2xvbmU9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IERhdGUodGhpcy5nZXRUaW1lKCkpfTsKLyoqIC9tL2pzL25lYkNhbC9uZWJDYWwuanMgKiovCnZhciBfX19kMmNfbmViQ2FsanNfY19vbj0iMjAyNS0wNS0yMyAxNzowNDoyMiI7J3VzZSBzdHJpY3QnO3ZhciBfX19kMmNfbmViQ2FsanNfY19vbj0iMjAyNC0wNC0xNiAxMTozMDowNyI7InVzZSBzdHJpY3QiOwooZnVuY3Rpb24oZSl7ZS5uZWJDYWw9ZnVuY3Rpb24oaCxnKXt2YXIgbD17c2xpZGVEdXJhdGlvbjo1MDAsZmFkZUR1cmF0aW9uOjIwMCx0b2dnbGVEdXJhdGlvbjoyMDAscHJlZmlsbDohMSxkZWZhdWx0RGF0ZTp2b2lkIDAsbGlua1dpdGhJbnB1dDohMCxrZXlOYXZpZ2F0aW9uOiEwLHRoZW1lOiJkZWZhdWx0IixkZWZhdWx0VmlldzoibW9udGgiLHN0YXJ0TW9uZGF5OiExLGFsd2F5c1Nob3c6ITEsaW5qZWN0SW5zaWRlVGFyZ2V0OiExLGZvcm1hdDoieXl5eS1NTS1kZCIsYWxpZ25YOiJtaWRkbGUiLGFsaWduWToiYm90dG9tIixvZmZzZXRYOjIwLG9mZnNldFk6MCxwb3J0cmFpdDohMCxwaWNrYWJsZTohMCx0b2dnbGVyOnZvaWQgMCxkaXNhbGxvd1VzZXJJbnB1dDohMSxtaW5EYXRlOnZvaWQgMCxtYXhEYXRlOnZvaWQgMCxleGNsdWRlZFdlZWtkYXlzOnZvaWQgMCxleGNsdWRlZERhdGVzOnZvaWQgMCxjcmVhdGVIaWRkZW5JbnB1dDohMSxoaWRkZW5JbnB1dE5hbWU6ImRhdGUiLGhpZGRlbklucHV0Rm9ybWF0OiIldCIsCm9uU2VsZWN0OiExLG9uVmlld0NoYW5nZTohMX0sYT10aGlzO2Eub3B0aW9ucz17fTthLnRhcmdldD1lKGgpO2EuaW5pdD1mdW5jdGlvbigpe2Eub3B0aW9ucz1lLmV4dGVuZCh7fSxsLGcpO2EudG9kYXk9bmViRGF0ZUZuLmNsZWFyVGltZShuZXcgRGF0ZSk7YS50cmFuc2l0aW9uaW5nPSExO3ZvaWQgMCE9PWEub3B0aW9ucy5kZWZhdWx0RGF0ZT9hLnNlbGVjdGVkRGF0ZT1uZWJEYXRlRm4uY2xlYXJUaW1lKG5lYkRhdGVGbi5wYXJzZVN0cmluZyhhLm9wdGlvbnMuZGVmYXVsdERhdGUpKTphLm9wdGlvbnMubGlua1dpdGhJbnB1dCYmdm9pZCAwIT09YS50YXJnZXQudmFsKCkmJjAhPT1hLnRhcmdldC52YWwoKSYmKGEuc2VsZWN0ZWREYXRlPW5lYkRhdGVGbi5jbGVhclRpbWUobmViRGF0ZUZuLnBhcnNlU3RyaW5nKGEudGFyZ2V0LnZhbCgpKSkpO2lmKHZvaWQgMD09PWEuc2VsZWN0ZWREYXRlfHxudWxsPT09YS5zZWxlY3RlZERhdGUpYS5zZWxlY3RlZERhdGU9YS50b2RheS5jbG9uZSgpOwphLmVsZW1lbnQ9ZSgnPGRpdiBjbGFzcz0ibmViQ2FsICcrYS5vcHRpb25zLnRoZW1lKyciIHN0eWxlPSJkaXNwbGF5OiAnKyhhLm9wdGlvbnMuYWx3YXlzU2hvdz8iYmxvY2siOiJub25lIikrJyI+PGRpdiBjbGFzcz0iY2FsLXdyYXBwZXIiPjxkaXYgY2xhc3M9ImNhbC1oZWFkZXIiPjxkaXYgY2xhc3M9ImNhbC1hcnJvdy1sZWZ0Ij48L2Rpdj48ZGl2IGNsYXNzPSJjYWwtYXJyb3ctcmlnaHQiPjwvZGl2PjxkaXYgY2xhc3M9ImNhbC1sYWJlbCBjYWwtY2xpY2thYmxlIj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPSJjYWwtYm9keSI+PGRpdiBjbGFzcz0iY2FsLWlubmVyIj48ZGl2IGNsYXNzPSJjYWwtY29udGFpbmVyIGEiPjwvZGl2PjxkaXYgY2xhc3M9ImNhbC1jb250YWluZXIgYiI+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz0iY2FsLWZvb3RlciI+PC9kaXY+PC9kaXY+PC9kaXY+Jyk7YS5vcHRpb25zLmluamVjdEluc2lkZVRhcmdldD8oYS5lbGVtZW50LmFkZENsYXNzKCJpbmxpbmUiKSwKYS5lbGVtZW50LmFwcGVuZFRvKGEudGFyZ2V0KSk6KGEuZWxlbWVudC5hcHBlbmRUbyhlKCJib2R5IikpLGEucG9zaXRpb24oKSxlKHdpbmRvdykub24oInJlc2l6ZSIsYS5wb3NpdGlvbikpO2EuY3VycmVudENvbnRhaW5lcj1hLmVsZW1lbnQuZmluZCgiLmNhbC1jb250YWluZXIuYSIpLmNzcygiei1pbmRleCIsOTk5KTthLnRlbXBDb250YWluZXI9YS5lbGVtZW50LmZpbmQoIi5jYWwtY29udGFpbmVyLmIiKS5jc3MoInotaW5kZXgiLDk5OCk7YS5oZWFkZXI9YS5lbGVtZW50LmZpbmQoIi5jYWwtaGVhZGVyIik7YS5sYWJlbD1hLmhlYWRlci5maW5kKCIuY2FsLWxhYmVsIik7YS5hcnJvd0xlZnQ9YS5oZWFkZXIuZmluZCgiLmNhbC1hcnJvdy1sZWZ0Iik7YS5hcnJvd1JpZ2h0PWEuaGVhZGVyLmZpbmQoIi5jYWwtYXJyb3ctcmlnaHQiKTthLmxhYmVsLm9uKCJjbGljayIsYS5sZXZlbFVwKTthLmFycm93TGVmdC5vbigiY2xpY2siLGEuc2xpZGVMZWZ0KTthLmFycm93UmlnaHQub24oImNsaWNrIiwKYS5zbGlkZVJpZ2h0KTt2b2lkIDAhPT1hLm9wdGlvbnMubWluRGF0ZSYmKGEub3B0aW9ucy5taW5EYXRlPW5lYkRhdGVGbi5jbGVhclRpbWUobmViRGF0ZUZuLnBhcnNlU3RyaW5nKGEub3B0aW9ucy5taW5EYXRlKSkpO3ZvaWQgMCE9PWEub3B0aW9ucy5tYXhEYXRlJiYoYS5vcHRpb25zLm1heERhdGU9bmViRGF0ZUZuLmNsZWFyVGltZShuZWJEYXRlRm4ucGFyc2VTdHJpbmcoYS5vcHRpb25zLm1heERhdGUpKSk7aWYodm9pZCAwIT09YS5vcHRpb25zLmV4Y2x1ZGVkRGF0ZXMpe3ZhciBiPVtdO2Eub3B0aW9ucy5leGNsdWRlZERhdGVzLmVhY2goZnVuY3Rpb24oYyl7Yi5pbmNsdWRlKGEuZm9ybWF0KG5lYkRhdGVGbi5jbGVhclRpbWUobmViRGF0ZUZuLnBhcnNlU3RyaW5nKGMpKSwiJXQiKSl9KTthLm9wdGlvbnMuZXhjbHVkZWREYXRlcz1ifWEub3B0aW9ucy5jcmVhdGVIaWRkZW5JbnB1dCYmKGEuaGlkZGVuSW5wdXQ9KG5ldyBFbGVtZW50KCJpbnB1dCIse3R5cGU6ImhpZGRlbiIsCm5hbWU6YS5vcHRpb25zLmhpZGRlbklucHV0TmFtZX0pKS5hcHBlbmRUbyhhLnRhcmdldCkpOyFhLm9wdGlvbnMuZGlzYWxsb3dVc2VySW5wdXQmJmEub3B0aW9ucy5saW5rV2l0aElucHV0JiYiaW5wdXQiPT1hLnRhcmdldC5hdHRyKCJ0YWciKSYmYS50YXJnZXQuYWRkRXZlbnQoImtleXVwIixmdW5jdGlvbigpe2Euc2V0RGF0ZShhLnRhcmdldC5hdHRyKCJ2YWx1ZSIpLCExKX0pO3ZvaWQgMCE9PWEub3B0aW9ucy50b2dnbGVyJiYoYS5vcHRpb25zLnRvZ2dsZXI9ZShhLm9wdGlvbnMudG9nZ2xlcikpOyh2b2lkIDAhPT1hLm9wdGlvbnMudG9nZ2xlcj9hLm9wdGlvbnMudG9nZ2xlcjphLnRhcmdldCkub24oImZvY3VzIixhLnNob3cpLm9uKCJjbGljayIsYS5zaG93KTtpZighYS5vcHRpb25zLmFsd2F5c1Nob3cpZShkb2N1bWVudCkub24oIm1vdXNlZG93biIsYS5vdXRzaWRlQ2xpY2spOyJJTlBVVCI9PWEudGFyZ2V0LnByb3AoInRhZ05hbWUiKSYmKGEudGFyZ2V0LnRyaWdnZXIoImtleWRvd24iLAphLm9uS2V5RG93biksYS50YXJnZXQudHJpZ2dlcigia2V5dXAiLGEub25LZXlVcCksYS5vcHRpb25zLmRpc2FsbG93VXNlcklucHV0JiZhLnRhcmdldC5hZGRFdmVudCgiY29udGV4dG1lbnUiLCRsYW1iZGEoITEpKSk7YS5zZWxlY3RlZERhdGU9YS5jb3JyZWN0RGF0ZShhLnNlbGVjdGVkRGF0ZSk7YS5vcHRpb25zLnByZWZpbGwmJmEucGljaygpO2Eudmlld0RhdGU9bmViRGF0ZUZuLmNsZWFyVGltZShhLnNlbGVjdGVkRGF0ZS5jbG9uZSgpLnNldERheSgxKSk7YS52aWV3PWEub3B0aW9ucy5kZWZhdWx0VmlldzthLnJlbmRlcigpfTthLnJlbmRlcj1mdW5jdGlvbigpe2EuY3VycmVudENvbnRhaW5lci5lbXB0eSgpO3N3aXRjaChhLnZpZXcpe2Nhc2UgImRlY2FkZSI6YS5yZW5kZXJEZWNhZGUoKTticmVhaztjYXNlICJ5ZWFyIjphLnJlbmRlclllYXIoKTticmVhaztkZWZhdWx0OmEucmVuZGVyTW9udGgoKX1yZXR1cm4gYX07YS5yZW5kZXJNb250aD1mdW5jdGlvbigpe2Eudmlldz0KIm1vbnRoIjthLmN1cnJlbnRDb250YWluZXIuZW1wdHkoKS5hZGRDbGFzcygiY2FsLW1vbnRoIik7YS5vcHRpb25zLnBpY2thYmxlJiZhLmN1cnJlbnRDb250YWluZXIuYWRkQ2xhc3MoImNhbC1waWNrYWJsZSIpO3ZhciBiPWUubmViTGFuZyxjPWEudmlld0RhdGUuZ2V0RGF5KCktKGEub3B0aW9ucy5zdGFydE1vbmRheT8xOjApOy0xPT1jJiYoYz02KTthLmxhYmVsLmh0bWwoYi5tb250aE5hbWVzW2Eudmlld0RhdGUuZ2V0TW9udGgoKV0rIiAiK2Eudmlld0RhdGUuZm9ybWF0KCJ5eXl5IikpO2Zvcih2YXIgZD1lKCI8ZGl2PjwvZGl2PiIpLmFkZENsYXNzKCJjYWwtcm93IikuYXBwZW5kVG8oYS5jdXJyZW50Q29udGFpbmVyKSxmPWEub3B0aW9ucy5zdGFydE1vbmRheT8xOjA7ZjwoYS5vcHRpb25zLnN0YXJ0TW9uZGF5Pzg6Nyk7ZisrKXt2YXIgaz1lKCI8ZGl2PjwvZGl2PiIpLmh0bWwoYi5kYXlOYW1lc1Nob3J0W2Eub3B0aW9ucy5zdGFydE1vbmRheSYmNz09Zj8wOmZdKS5hcHBlbmRUbyhkKTsKay5odG1sKGsuaHRtbCgpKX1kPWUoIjxkaXY+PC9kaXY+IikuYWRkQ2xhc3MoImNhbC1yb3ciKS5hcHBlbmRUbyhhLmN1cnJlbnRDb250YWluZXIpO2I9YS52aWV3RGF0ZS5jbG9uZSgpLmFkZCgiTSIsLTEpLmdldExhc3REYXlPZk1vbnRoQ2FsKCk7Zm9yKGY9MDtmPGM7ZisrKWEuaW5qZWN0RGF5KGQsYS52aWV3RGF0ZS5jbG9uZSgpLmFkZCgiTSIsLTEpLnNldERheShiLShjLWYpKzEpLCEwKTtmb3IoZj0xO2Y8PWEudmlld0RhdGUuZ2V0TGFzdERheU9mTW9udGhDYWwoKTtmKyspYS5pbmplY3REYXkoZCxhLnZpZXdEYXRlLmNsb25lKCkuc2V0RGF5KGYpKSw3PT1kLmNoaWxkcmVuKCkubGVuZ3RoJiYoZD1lKCI8ZGl2PjwvZGl2PiIpLmFkZENsYXNzKCJjYWwtcm93IikuYXBwZW5kVG8oYS5jdXJyZW50Q29udGFpbmVyKSk7Yj04LWQuY2hpbGRyZW4oKS5sZW5ndGg7Yz1hLnZpZXdEYXRlLmNsb25lKCkuYWRkKCJNIiwxKS5zZXREYXkoMSk7Zm9yKGY9MTtmPGI7ZisrKWEuaW5qZWN0RGF5KGQsCmMuY2xvbmUoKS5zZXREYXkoZiksITApO2ZvcihiPWEuY3VycmVudENvbnRhaW5lci5maW5kKCIuY2FsLXJvdyIpLmxlbmd0aDs3PmI7YisrKWZvcihkPWUoIjxkaXY+PC9kaXY+IikuYWRkQ2xhc3MoImNhbC1yb3ciKS5hcHBlbmRUbyhhLmN1cnJlbnRDb250YWluZXIpLGs9MDs3Pms7aysrKWEuaW5qZWN0RGF5KGQsYy5jbG9uZSgpLnNldERheShmKSwhMCksZisrO2EucmVuZGVyQWZ0ZXIoKX07YS5pbmplY3REYXk9ZnVuY3Rpb24oYixjLGQpe2I9ZSgiPGRpdj48L2Rpdj4iKS5odG1sKGMuZ2V0RGF0ZSgpKS5hcHBlbmRUbyhiKTtiLmRhdGEoImRhdGUiLGMpO2QmJmIuYWRkQ2xhc3MoImNhbC1vdXRzaWRlIik7aWYodm9pZCAwIT09YS5vcHRpb25zLm1pbkRhdGUmJmEub3B0aW9ucy5taW5EYXRlPmN8fHZvaWQgMCE9PWEub3B0aW9ucy5tYXhEYXRlJiZhLm9wdGlvbnMubWF4RGF0ZTxjfHx2b2lkIDAhPT1hLm9wdGlvbnMuZXhjbHVkZWRXZWVrZGF5cyYmYS5vcHRpb25zLmV4Y2x1ZGVkV2Vla2RheXMuY29udGFpbnMoYy5mb3JtYXQoIkUiKS50b0ludCgpKXx8CnZvaWQgMCE9PWEub3B0aW9ucy5leGNsdWRlZERhdGVzJiZhLm9wdGlvbnMuZXhjbHVkZWREYXRlcy5jb250YWlucyhhLmZvcm1hdChjLCIldCIpKSliLmFkZENsYXNzKCJjYWwtbm9uLXNlbGVjdGFibGUiKTtlbHNlIGlmKGEub3B0aW9ucy5waWNrYWJsZSliLm9uKCJjbGljayIsYS5waWNrKTtjLmZvcm1hdCgiZCIpPT1hLnRvZGF5LmZvcm1hdCgiZCIpJiZiLmFkZENsYXNzKCJjYWwtdG9kYXkiKTtkfHxjLmZvcm1hdCgiZCIpIT1hLnNlbGVjdGVkRGF0ZS5mb3JtYXQoImQiKXx8Yi5hZGRDbGFzcygiY2FsLXNlbGVjdGVkIil9O2EucmVuZGVyWWVhcj1mdW5jdGlvbigpe2Eudmlldz0ieWVhciI7YS5jdXJyZW50Q29udGFpbmVyLmFkZENsYXNzKCJjYWwteWVhci1kZWNhZGUgIisoYS5vcHRpb25zLnBvcnRyYWl0PyJjYWwtcG9ydHJhaXQiOiJjYWwtbGFuZHNjYXBlIikpO3ZhciBiPWUubmViTGFuZy5tb250aE5hbWVzU2hvcnQ7YS5sYWJlbC5odG1sKGEudmlld0RhdGUuZm9ybWF0KCJ5eXl5IikpOwpmb3IodmFyIGM9ZSgiPGRpdj48L2Rpdj4iKS5hZGRDbGFzcygiY2FsLXJvdyIpLmFwcGVuZFRvKGEuY3VycmVudENvbnRhaW5lciksZD0xOzEzPmQ7ZCsrKXt2YXIgZj1lKCI8ZGl2PjwvZGl2PiIpLmh0bWwoYltkLTFdKS5hcHBlbmRUbyhjKSxrPWEudmlld0RhdGUuY2xvbmUoKS5zZXRNb24oZC0xKTtmLmRhdGEoImRhdGUiLGspO2lmKHZvaWQgMCE9PWEub3B0aW9ucy5taW5EYXRlJiZhLm9wdGlvbnMubWluRGF0ZS5jbG9uZSgpLnNldERheSgxKT5rfHx2b2lkIDAhPT1hLm9wdGlvbnMubWF4RGF0ZSYmYS5vcHRpb25zLm1heERhdGUuY2xvbmUoKS5zZXREYXkoMSk8aylmLmFkZENsYXNzKCJjYWwtbm9uLXNlbGVjdGFibGUiKTtlbHNlIGYub24oImNsaWNrIixhLmxldmVsRG93bik7ZC0xPT1hLnRvZGF5LmdldE1vbnRoKCkmJmEudmlld0RhdGUuZ2V0RnVsbFllYXIoKT09YS50b2RheS5nZXRGdWxsWWVhcigpJiZmLmFkZENsYXNzKCJjYWwtdG9kYXkiKTtkLTE9PWEuc2VsZWN0ZWREYXRlLmdldE1vbnRoKCkmJgphLnZpZXdEYXRlLmdldEZ1bGxZZWFyKCk9PWEuc2VsZWN0ZWREYXRlLmdldEZ1bGxZZWFyKCkmJmYuYWRkQ2xhc3MoImNhbC1zZWxlY3RlZCIpO2QlKGEub3B0aW9ucy5wb3J0cmFpdD8zOjQpfHwxMj09ZHx8KGM9ZSgiPGRpdj48L2Rpdj4iKS5hZGRDbGFzcygiY2FsLXJvdyIpLmFwcGVuZFRvKGEuY3VycmVudENvbnRhaW5lcikpfWEucmVuZGVyQWZ0ZXIoKX07YS5yZW5kZXJEZWNhZGU9ZnVuY3Rpb24oKXthLmxhYmVsLnJlbW92ZUNsYXNzKCJjYWwtY2xpY2thYmxlIik7YS52aWV3PSJkZWNhZGUiO2EuY3VycmVudENvbnRhaW5lci5hZGRDbGFzcygiY2FsLXllYXItZGVjYWRlICIrKGEub3B0aW9ucy5wb3J0cmFpdD8iY2FsLXBvcnRyYWl0IjoiY2FsLWxhbmRzY2FwZSIpKTt2YXIgYjtmb3IoYj1wYXJzZUludChhLnZpZXdEYXRlLmZvcm1hdCgieXl5eSIpKTtiJTEyOyliLS07YS5sYWJlbC5odG1sKGIrIiAmIzE1MDsgIisoYisxMSkpO2Zvcih2YXIgYz1lKCI8ZGl2PjwvZGl2PiIpLmFkZENsYXNzKCJjYWwtcm93IikuYXBwZW5kVG8oYS5jdXJyZW50Q29udGFpbmVyKSwKZD1iO2Q8YisxMjtkKyspe3ZhciBmPWUoIjxkaXY+PC9kaXY+IikuaHRtbChkKS5hcHBlbmRUbyhjKSxrPWEudmlld0RhdGUuY2xvbmUoKS5zZXRZZWFyKGQpO2YuZGF0YSgiZGF0ZSIsayk7aWYodm9pZCAwIT09YS5vcHRpb25zLm1pbkRhdGUmJmEub3B0aW9ucy5taW5EYXRlLmdldEZ1bGxZZWFyKCk+ZHx8dm9pZCAwIT09YS5vcHRpb25zLm1heERhdGUmJmEub3B0aW9ucy5tYXhEYXRlLmdldEZ1bGxZZWFyKCk8ZClmLmFkZENsYXNzKCJjYWwtbm9uLXNlbGVjdGFibGUiKTtlbHNlIGYub24oImNsaWNrIixhLmxldmVsRG93bik7ZD09YS50b2RheS5nZXRGdWxsWWVhcigpJiZmLmFkZENsYXNzKCJjYWwtdG9kYXkiKTtkPT1hLnNlbGVjdGVkRGF0ZS5nZXRGdWxsWWVhcigpJiZmLmFkZENsYXNzKCJjYWwtc2VsZWN0ZWQiKTsoZCsxKSUoYS5vcHRpb25zLnBvcnRyYWl0PzM6NCl8fGQ9PWIrMTF8fChjPWUoIjxkaXY+PC9kaXY+IikuYWRkQ2xhc3MoImNhbC1yb3ciKS5hcHBlbmRUbyhhLmN1cnJlbnRDb250YWluZXIpKX1hLnJlbmRlckFmdGVyKCl9OwphLnJlbmRlckFmdGVyPWZ1bmN0aW9uKCl7Zm9yKHZhciBiPWEuY3VycmVudENvbnRhaW5lci5maW5kKCIuY2FsLXJvdyIpLGM9MDtjPGIubGVuZ3RoO2MrKyllKGJbY10pLmFkZENsYXNzKCJjYWwtcm93ICIrImFiY2RlZmciLnNwbGl0KCIiKVtjXSsiICIrKGMlMj8iY2FsLWV2ZW4iOiJjYWwtb2RkIikpO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBhLm9wdGlvbnMub25WaWV3Q2hhbmdlKWEub3B0aW9ucy5vblZpZXdDaGFuZ2UoYS52aWV3LGEuc2VsZWN0ZWREYXRlLGEudmlld0RhdGUpfTthLnNsaWRlTGVmdD1mdW5jdGlvbigpe2EudHJhbnNpdGlvbmluZyYmKGEudGVtcENvbnRhaW5lci5jc3Moe2xlZnQ6MH0pLnN0b3AoKSxhLnRlbXBDb250YWluZXIuY3NzKHtsZWZ0OjB9KS5zdG9wKCksYS50cmFuc2l0aW9uaW5nPSExKTthLnN3aXRjaENvbnRhaW5lcnMoKTtzd2l0Y2goYS52aWV3KXtjYXNlICJtb250aCI6YS52aWV3RGF0ZS5hZGQoIk0iLC0xKTticmVhaztjYXNlICJ5ZWFyIjphLnZpZXdEYXRlLmFkZCgieSIsCi0xKTticmVhaztjYXNlICJkZWNhZGUiOmEudmlld0RhdGUuc2V0RnVsbFllYXIoYS52aWV3RGF0ZS5nZXRGdWxsWWVhcigpLTEyKX1hLnJlbmRlcigpO2EudHJhbnNpdGlvbmluZz0hMDthLmN1cnJlbnRDb250YWluZXIuY3NzKHtsZWZ0Oi1hLmN1cnJlbnRDb250YWluZXIud2lkdGgoKX0pLmFuaW1hdGUoe2xlZnQ6MH0sYS5vcHRpb25zLnNsaWRlRHVyYXRpb24pO2EudGVtcENvbnRhaW5lci5jc3Moe2xlZnQ6MH0pLmFuaW1hdGUoe2xlZnQ6YS50ZW1wQ29udGFpbmVyLndpZHRoKCl9LGEub3B0aW9ucy5zbGlkZUR1cmF0aW9uLGZ1bmN0aW9uKCl7ZSh0aGlzKS5jc3Moe2xlZnQ6MH0pO2EudHJhbnNpdGlvbmluZz0hMX0pfTthLnNsaWRlUmlnaHQ9ZnVuY3Rpb24oKXthLnRyYW5zaXRpb25pbmcmJihhLnRlbXBDb250YWluZXIuY3NzKHtsZWZ0OjB9KS5zdG9wKCksYS50ZW1wQ29udGFpbmVyLmNzcyh7bGVmdDowfSkuc3RvcCgpLGEudHJhbnNpdGlvbmluZz0hMSk7YS5zd2l0Y2hDb250YWluZXJzKCk7CnN3aXRjaChhLnZpZXcpe2Nhc2UgIm1vbnRoIjphLnZpZXdEYXRlLmFkZCgiTSIsMSk7YnJlYWs7Y2FzZSAieWVhciI6YS52aWV3RGF0ZS5hZGQoInkiLDEpO2JyZWFrO2Nhc2UgImRlY2FkZSI6YS52aWV3RGF0ZS5zZXRGdWxsWWVhcihhLnZpZXdEYXRlLmdldEZ1bGxZZWFyKCkrMTIpfWEucmVuZGVyKCk7YS50cmFuc2l0aW9uaW5nPSEwO2EuY3VycmVudENvbnRhaW5lci5jc3Moe2xlZnQ6YS5jdXJyZW50Q29udGFpbmVyLndpZHRoKCl9KS5hbmltYXRlKHtsZWZ0OjB9LGEub3B0aW9ucy5zbGlkZUR1cmF0aW9uKTthLnRlbXBDb250YWluZXIuY3NzKHtsZWZ0OjB9KS5hbmltYXRlKHtsZWZ0Oi1hLnRlbXBDb250YWluZXIud2lkdGgoKX0sYS5vcHRpb25zLnNsaWRlRHVyYXRpb24sZnVuY3Rpb24oKXtlKHRoaXMpLmNzcyh7bGVmdDowfSk7YS50cmFuc2l0aW9uaW5nPSExfSl9O2EubGV2ZWxEb3duPWZ1bmN0aW9uKGIpe2lmKCFhLnRyYW5zaXRpb25pbmcpe2Euc3dpdGNoQ29udGFpbmVycygpOwphLnZpZXdEYXRlPWUoYi50YXJnZXQpLmRhdGEoImRhdGUiKTtzd2l0Y2goYS52aWV3KXtjYXNlICJ5ZWFyIjphLnJlbmRlck1vbnRoKCk7YnJlYWs7Y2FzZSAiZGVjYWRlIjphLnJlbmRlclllYXIoKX1hLnRyYW5zaXRpb25pbmc9ITA7YS5jdXJyZW50Q29udGFpbmVyLmZhZGVJbihhLm9wdGlvbnMuZmFkZUR1cmF0aW9uLGZ1bmN0aW9uKCl7YS50cmFuc2l0aW9uaW5nPSExfSk7YS50ZW1wQ29udGFpbmVyLmZhZGVPdXQoYS5vcHRpb25zLmZhZGVEdXJhdGlvbil9fTthLmxldmVsVXA9ZnVuY3Rpb24oKXtpZigiZGVjYWRlIiE9YS52aWV3JiYhYS50cmFuc2l0aW9uaW5nKXthLnN3aXRjaENvbnRhaW5lcnMoKTtzd2l0Y2goYS52aWV3KXtjYXNlICJtb250aCI6YS5yZW5kZXJZZWFyKCk7YnJlYWs7Y2FzZSAieWVhciI6YS5yZW5kZXJEZWNhZGUoKX1hLnRyYW5zaXRpb25pbmc9ITA7YS5jdXJyZW50Q29udGFpbmVyLmZhZGVJbihhLm9wdGlvbnMuZmFkZUR1cmF0aW9uLGZ1bmN0aW9uKCl7YS50cmFuc2l0aW9uaW5nPQohMX0pO2EudGVtcENvbnRhaW5lci5mYWRlT3V0KGEub3B0aW9ucy5mYWRlRHVyYXRpb24pfX07YS5jaGFuZ2VWaWV3PWZ1bmN0aW9uKGIpe2lmKCFhLnRyYW5zaXRpb25pbmcmJmIhPWEudmlldyl7YS5zd2l0Y2hDb250YWluZXJzKCk7c3dpdGNoKGIpe2Nhc2UgIm1vbnRoIjphLnJlbmRlck1vbnRoKCk7YnJlYWs7Y2FzZSAieWVhciI6YS5yZW5kZXJZZWFyKCk7YnJlYWs7Y2FzZSAiZGVjYWRlIjphLnJlbmRlckRlY2FkZSgpfWEudHJhbnNpdGlvbmluZz0hMDthLmN1cnJlbnRDb250YWluZXIuZmFkZUluKGEub3B0aW9ucy5mYWRlRHVyYXRpb24sZnVuY3Rpb24oKXthLnRyYW5zaXRpb25pbmc9ITF9KTthLnRlbXBDb250YWluZXIuZmFkZU91dChhLm9wdGlvbnMuZmFkZUR1cmF0aW9uKX19O2EudXBkYXRlTWluRGF0ZT1mdW5jdGlvbihiKXtpZighYS50cmFuc2l0aW9uaW5nJiYoYj1uZWJEYXRlRm4ucGFyc2VTdHJpbmcoYiksbnVsbCE9PWIpKXthLm9wdGlvbnMubWluRGF0ZT1uZWJEYXRlRm4uY2xlYXJUaW1lKGIpOwphLnN3aXRjaENvbnRhaW5lcnMoKTtzd2l0Y2goYS52aWV3KXtjYXNlICJtb250aCI6YS5yZW5kZXJNb250aCgpO2JyZWFrO2Nhc2UgInllYXIiOmEucmVuZGVyWWVhcigpO2JyZWFrO2Nhc2UgImRlY2FkZSI6YS5yZW5kZXJEZWNhZGUoKX1hLnRyYW5zaXRpb25pbmc9ITA7YS5jdXJyZW50Q29udGFpbmVyLmZhZGVJbihhLm9wdGlvbnMuZmFkZUR1cmF0aW9uLGZ1bmN0aW9uKCl7YS50cmFuc2l0aW9uaW5nPSExfSk7YS50ZW1wQ29udGFpbmVyLmZhZGVPdXQoYS5vcHRpb25zLmZhZGVEdXJhdGlvbil9fTthLnVwZGF0ZU1heERhdGU9ZnVuY3Rpb24oYil7aWYoIWEudHJhbnNpdGlvbmluZyYmKGI9bmViRGF0ZUZuLnBhcnNlU3RyaW5nKGIpLG51bGwhPT1iKSl7YS5vcHRpb25zLm1heERhdGU9bmViRGF0ZUZuLmNsZWFyVGltZShiKTthLnN3aXRjaENvbnRhaW5lcnMoKTtzd2l0Y2goYS52aWV3KXtjYXNlICJtb250aCI6YS5yZW5kZXJNb250aCgpO2JyZWFrO2Nhc2UgInllYXIiOmEucmVuZGVyWWVhcigpOwpicmVhaztjYXNlICJkZWNhZGUiOmEucmVuZGVyRGVjYWRlKCl9YS50cmFuc2l0aW9uaW5nPSEwO2EuY3VycmVudENvbnRhaW5lci5mYWRlSW4oYS5vcHRpb25zLmZhZGVEdXJhdGlvbixmdW5jdGlvbigpe2EudHJhbnNpdGlvbmluZz0hMX0pO2EudGVtcENvbnRhaW5lci5mYWRlT3V0KGEub3B0aW9ucy5mYWRlRHVyYXRpb24pfX07YS5zd2l0Y2hDb250YWluZXJzPWZ1bmN0aW9uKCl7YS5jdXJyZW50Q29udGFpbmVyPWEuY3VycmVudENvbnRhaW5lci5oYXNDbGFzcygiYSIpP2EuZWxlbWVudC5maW5kKCIuY2FsLWNvbnRhaW5lci5iIik6YS5lbGVtZW50LmZpbmQoIi5jYWwtY29udGFpbmVyLmEiKTthLnRlbXBDb250YWluZXI9YS50ZW1wQ29udGFpbmVyLmhhc0NsYXNzKCJhIik\/YS5lbGVtZW50LmZpbmQoIi5jYWwtY29udGFpbmVyLmIiKTphLmVsZW1lbnQuZmluZCgiLmNhbC1jb250YWluZXIuYSIpO2EuY3VycmVudENvbnRhaW5lci5lbXB0eSgpLnJlbW92ZUNsYXNzKCJjYWwtbW9udGggY2FsLXllYXItZGVjYWRlICIrCihhLm9wdGlvbnMucG9ydHJhaXQ\/ImNhbC1wb3J0cmFpdCI6ImNhbC1sYW5kc2NhcGUiKSkuY3NzKHtvcGFjaXR5OjEsZGlzcGxheToiYmxvY2siLCJ6LWluZGV4Ijo5OTl9KTthLnRlbXBDb250YWluZXIuY3NzKCJ6LWluZGV4Iiw5OTgpO2EubGFiZWwuYWRkQ2xhc3MoImNhbC1jbGlja2FibGUiKTthLmFycm93TGVmdC5jc3MoInZpc2liaWxpdHkiLCJ2aXNpYmxlIik7YS5hcnJvd1JpZ2h0LmNzcygidmlzaWJpbGl0eSIsInZpc2libGUiKX07YS5wb3NpdGlvbj1mdW5jdGlvbigpe3ZhciBiPWEudGFyZ2V0LmdldENvb3JkaW5hdGVzKCk7c3dpdGNoKGEub3B0aW9ucy5hbGlnblgpe2Nhc2UgImxlZnQiOnZhciBjPWIubGVmdDticmVhaztjYXNlICJtaWRkbGUiOmM9Yi5sZWZ0K2Iud2lkdGgvMi1hLmVsZW1lbnQud2lkdGgoKS8yO2JyZWFrO2RlZmF1bHQ6Y2FzZSAicmlnaHQiOmM9Yi5sZWZ0K2Iud2lkdGh9c3dpdGNoKGEub3B0aW9ucy5hbGlnblkpe2Nhc2UgImJvdHRvbSI6Yj1iLnRvcCsKYi5oZWlnaHQ7YnJlYWs7Y2FzZSAidG9wIjpiPWIudG9wLWEuZWxlbWVudC5nZXRIZWlnaHQoKTticmVhaztkZWZhdWx0OmNhc2UgImNlaWxpbmciOmI9Yi50b3B9Yys9cGFyc2VJbnQoYS5vcHRpb25zLm9mZnNldFgpO2IrPXBhcnNlSW50KGEub3B0aW9ucy5vZmZzZXRZKTthLmVsZW1lbnQuY3NzKHt0b3A6YixsZWZ0OmN9KX07YS5zaG93PWZ1bmN0aW9uKCl7YS52aXNpYmxlfHxhLm9wdGlvbnMuYWx3YXlzU2hvd3x8KGEudmlzaWJsZT0hMCxhLmVsZW1lbnQuZmFkZUluKGEub3B0aW9ucy50b2dnbGVEdXJhdGlvbiksYS5wb3NpdGlvbigpKX07YS5oaWRlPWZ1bmN0aW9uKCl7YS52aXNpYmxlJiYhYS5vcHRpb25zLmFsd2F5c1Nob3cmJihhLnZpc2libGU9ITEsYS5lbGVtZW50LmZhZGVPdXQoYS5vcHRpb25zLnRvZ2dsZUR1cmF0aW9uKSl9O2EudG9nZ2xlPWZ1bmN0aW9uKCl7YS52aXNpYmxlP2EuaGlkZSgpOmEuc2hvdygpfTthLm91dHNpZGVDbGljaz1mdW5jdGlvbihiKXtpZihhLnZpc2libGUpe3ZhciBjPQphLmVsZW1lbnQuZ2V0Q29vcmRpbmF0ZXMoKSxkPWEudGFyZ2V0LmdldENvb3JkaW5hdGVzKCk7KGIucGFnZVg8Yy5sZWZ0fHxiLnBhZ2VYPmMubGVmdCtjLndpZHRofHxiLnBhZ2VZPGMudG9wfHxiLnBhZ2VZPmMudG9wK2MuaGVpZ2h0KSYmKGIucGFnZVg8ZC5sZWZ0fHxiLnBhZ2VYPmQubGVmdCtkLndpZHRofHxiLnBhZ2VZPGQudG9wfHxiLnBhZ2VZPmQudG9wK2QuaGVpZ2h0KSYmYS5oaWRlKCl9fTthLnBpY2s9ZnVuY3Rpb24oYil7dm9pZCAwIT09YiYmKGEuc2VsZWN0ZWREYXRlPWUoYi50YXJnZXQpLmRhdGEoImRhdGUiKSxhLmVsZW1lbnQuZmluZCgiLmNhbC1zZWxlY3RlZCIpLnJlbW92ZUNsYXNzKCJjYWwtc2VsZWN0ZWQiKSxlKGIudGFyZ2V0KS5hZGRDbGFzcygiY2FsLXNlbGVjdGVkIiksZShiLnRhcmdldCkuaGFzQ2xhc3MoImNhbC1vdXRzaWRlIik\/YS5vcHRpb25zLmFsd2F5c1Nob3c\/MDxhLnNlbGVjdGVkRGF0ZS5kaWZmKGEudmlld0RhdGUpP2Euc2xpZGVMZWZ0KCk6CmEuc2xpZGVSaWdodCgpOihhLnZpZXdEYXRlPWEuc2VsZWN0ZWREYXRlLmNsb25lKCkuc2V0RGF5KDEpLHNldFRpbWVvdXQoYS5yZW5kZXIsMzAwKSk6c2V0VGltZW91dChhLmhpZGUsMTUwKSk7Yj1hLmZvcm1hdChhLnNlbGVjdGVkRGF0ZSk7Yj1lKCI8dGV4dGFyZWEgLz4iKS5odG1sKGIpLnRleHQoKTtpZighYS5vcHRpb25zLmluamVjdEluc2lkZVRhcmdldClzd2l0Y2goYS50YXJnZXQucHJvcCgidGFnTmFtZSIpLnRvTG93ZXJDYXNlKCkpe2Nhc2UgImlucHV0IjphLnRhcmdldC52YWwoYik7YnJlYWs7ZGVmYXVsdDphLnRhcmdldC5odG1sKGIpfXZvaWQgMCE9PWEuaGlkZGVuSW5wdXQmJmEuaGlkZGVuSW5wdXQuc2V0KCJ2YWx1ZSIsYS5mb3JtYXQoYS5zZWxlY3RlZERhdGUsYS5vcHRpb25zLmhpZGRlbklucHV0Rm9ybWF0KSk7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGEub3B0aW9ucy5vblNlbGVjdClhLm9wdGlvbnMub25TZWxlY3QoYS5zZWxlY3RlZERhdGUpO3JldHVybiBhfTsKYS5mb3JtYXQ9ZnVuY3Rpb24oYixjKXt2b2lkIDA9PT1jJiYoYz10aGlzLm9wdGlvbnMuZm9ybWF0KTtpZih2b2lkIDAhPT1iKXJldHVybiBjPWMucmVwbGFjZSgvJShbYS16JV0pL2dpLGZ1bmN0aW9uKGQsZil7c3dpdGNoKGYpe2Nhc2UgIkQiOnJldHVybiBiLmdldCgiZGF0ZSIpO2Nhc2UgIm4iOnJldHVybiBiLmdldCgibW8iKSsxO2Nhc2UgInQiOnJldHVybiBwYXJzZUludChiLmdldFRpbWUoKS8xRTMpfXJldHVybiIlIitmfSksYi5mb3JtYXQoYyl9O2Eub25LZXlEb3duPWZ1bmN0aW9uKGIpe2lmKGEub3B0aW9ucy5rZXlOYXZpZ2F0aW9uKXt2YXIgYz1hLnNlbGVjdGVkRGF0ZS5jbG9uZSgpLGQ9ITAsZj0hMTtzd2l0Y2goYi53aGljaCl7Y2FzZSAzNzpjLmFkZCgiZCIsLTEpO2Y9ITA7ZD0hMTticmVhaztjYXNlIDM5OmMuYWRkKCJkIiwxKTtmPSEwO2JyZWFrO2Nhc2UgMzg6Yy5hZGQoIk0iLC0xKTtmPSEwO2Q9ITE7YnJlYWs7Y2FzZSA0MDpjLmFkZCgiTSIsMSk7Zj0hMDticmVhazsKY2FzZSA5OnNldFRpbWVvdXQoYS5oaWRlLDE1MCl9ZiYmKGM9YS5jb3JyZWN0RGF0ZShjLGQpLDAhPT1hLnNlbGVjdGVkRGF0ZS5kaWZmKGMpJiZhLnNldERhdGUoYykpfWlmKGEub3B0aW9ucy5kaXNhbGxvd1VzZXJJbnB1dClyZXR1cm4hMX07YS5vbktleVVwPWZ1bmN0aW9uKCl7L15cZHs0fS1cZHsyfS1cZHsyfSQvLnRlc3QoYS50YXJnZXQudmFsKCkpJiYoYS5zZXREYXRlKG5lYkRhdGVGbi5wYXJzZVN0cmluZyhhLnRhcmdldC52YWwoKSkpLGEudGFyZ2V0LnJlbW92ZUNsYXNzKCJpbnZhbGlkSW5wdXQgdG9vbHRpcCIpLnJlbW92ZUF0dHIoInRpdGxlIikpOy9eXGR7Mn0tLy50ZXN0KGEudGFyZ2V0LnZhbCgpKXx8L15cZHs0fS0oMVszLTldfChbMi05XVswLTldKSkvLnRlc3QoYS50YXJnZXQudmFsKCkpP2EudGFyZ2V0LmFkZENsYXNzKCJpbnZhbGlkSW5wdXQiKS5hdHRyKCJ0aXRsZSIsZS5uZWJMYW5nLmludmFsaWREYXRlRm9ybWF0KS50b29sdGlwKHt0b29sdGlwQ2xhc3M6ImFsYnVtX3Rvb2x0aXAiLApwb3NpdGlvbjp7bXk6ImNlbnRlciB0b3ArMzAiLGF0OiIifSxzaG93OntlZmZlY3Q6ImZhZGVJbiIsZHVyYXRpb246NTAwfSxjbG9zZTpmdW5jdGlvbigpe2UodGhpcykucmVtb3ZlKCl9fSk6YS50YXJnZXQucmVtb3ZlQ2xhc3MoImludmFsaWRJbnB1dCB0b29sdGlwIikucmVtb3ZlQXR0cigidGl0bGUiKX07YS5jb3JyZWN0RGF0ZT1mdW5jdGlvbihiLGMpe3ZvaWQgMD09PWMmJihjPSEwKTt2b2lkIDAhPT1hLm9wdGlvbnMubWluRGF0ZSYmMDxiLmRpZmYoYS5vcHRpb25zLm1pbkRhdGUpP2I9YS5vcHRpb25zLm1pbkRhdGUuY2xvbmUoKTp2b2lkIDAhPT1hLm9wdGlvbnMubWF4RGF0ZSYmMD5iLmRpZmYoYS5vcHRpb25zLm1heERhdGUpJiYoYj1hLm9wdGlvbnMubWF4RGF0ZS5jbG9uZSgpKTtmb3IodmFyIGQ9MDt2b2lkIDAhPT1hLm9wdGlvbnMuZXhjbHVkZWRXZWVrZGF5cyYmYS5vcHRpb25zLmV4Y2x1ZGVkV2Vla2RheXMuY29udGFpbnMoYi5mb3JtYXQoIkUiKS50b0ludCgpKXx8CnZvaWQgMCE9PWEub3B0aW9ucy5taW5EYXRlJiYwPGIuZGlmZihhLm9wdGlvbnMubWluRGF0ZSl8fHZvaWQgMCE9PWEub3B0aW9ucy5tYXhEYXRlJiYwPmIuZGlmZihhLm9wdGlvbnMubWF4RGF0ZSl8fHZvaWQgMCE9PWEub3B0aW9ucy5leGNsdWRlZERhdGVzJiZhLm9wdGlvbnMuZXhjbHVkZWREYXRlcy5jb250YWlucyhhLmZvcm1hdChiLCIldCIpKTspe2lmKDMxPT1kKWM9IWM7ZWxzZSBpZig2Mj09ZCl7Yj1hLm9wdGlvbnMubWluRGF0ZS5jbG9uZSgpO2JyZWFrfWM\/Yi5hZGQoImQiLDEpOmIuYWRkKCJkIiwtMSk7ZCsrfXJldHVybiBifTthLnNldERhdGU9ZnVuY3Rpb24oYixjKXt2b2lkIDA9PT1jJiYoYz0hMCk7Yj1uZWJEYXRlRm4uY2xlYXJUaW1lKCJkYXRlIj09dHlwZW9mIGI\/YjpuZWJEYXRlRm4ucGFyc2VTdHJpbmcoYikpO251bGwhPT1iJiYoYS5zZWxlY3RlZERhdGU9YS5jb3JyZWN0RGF0ZShiKSxhLnZpZXdEYXRlPWEuc2VsZWN0ZWREYXRlLmNsb25lKCkuc2V0RGF5KDEpLAphLnJlbmRlcigpLGMmJmEucGljaygpKTtyZXR1cm4gYX07YS5nZXREYXRlPWZ1bmN0aW9uKCl7cmV0dXJuIGEuc2VsZWN0ZWREYXRlfTthLmluaXQoKX07ZS5mbi5uZWJDYWw9ZnVuY3Rpb24oaCxnKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7aWYodm9pZCAwPT09ZSh0aGlzKS5kYXRhKCJuZWJDYWwiKSl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBofHwib2JqZWN0Ij09dHlwZW9mIGgpe3ZhciBsPW5ldyBlLm5lYkNhbCh0aGlzLGgpO2UodGhpcykuZGF0YSgibmViQ2FsIixsKX19ZWxzZSBzd2l0Y2goaCl7Y2FzZSAiY2hhbmdlVmlldyI6aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBnKWJyZWFrO2UodGhpcykuZGF0YSgibmViQ2FsIikuY2hhbmdlVmlldyhnKTticmVhaztjYXNlICJtaW5EYXRlIjppZigidW5kZWZpbmVkIj09dHlwZW9mIGcpYnJlYWs7ZSh0aGlzKS5kYXRhKCJuZWJDYWwiKS51cGRhdGVNaW5EYXRlKGcpO2JyZWFrO2Nhc2UgIm1heERhdGUiOmlmKCJ1bmRlZmluZWQiPT0KdHlwZW9mIGcpYnJlYWs7ZSh0aGlzKS5kYXRhKCJuZWJDYWwiKS51cGRhdGVNYXhEYXRlKGcpO2JyZWFrO2Nhc2UgInNldERhdGUiOmlmKCJ1bmRlZmluZWQiPT10eXBlb2YgZylicmVhaztlKHRoaXMpLmRhdGEoIm5lYkNhbCIpLnNldERhdGUoZyk7YnJlYWs7Y2FzZSAicmVwb3NpdGlvbiI6ZSh0aGlzKS5kYXRhKCJuZWJDYWwiKS5wb3NpdGlvbigpfX0pfTtlLmZuLmdldENvb3JkaW5hdGVzPWZ1bmN0aW9uKGgpe2g9ZSh0aGlzKS5vZmZzZXQoKTt2YXIgZz1lKHRoaXMpLndpZHRoKCksbD1lKHRoaXMpLmhlaWdodCgpLGE9ZSh3aW5kb3cpLndpZHRoKCktaC5sZWZ0LWcsYj1lKHdpbmRvdykuaGVpZ2h0KCktaC50b3AtbDtyZXR1cm57dG9wOmgudG9wLGxlZnQ6aC5sZWZ0LHdpZHRoOmcsaGVpZ2h0OmwscmlnaHQ6YSxib3R0b206Yn19fSkoalF1ZXJ5KTsKLyoqIC9tL2pzL3Z1ZS92dWUubWluLmpzICoqLwovKiENCiAqIFZ1ZS5qcyB2Mi42LjExDQogKiAoYykgMjAxNC0yMDE5IEV2YW4gWW91DQogKiBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuDQogKi8NCiFmdW5jdGlvbihlLHQpeyJvYmplY3QiPT10eXBlb2YgZXhwb3J0cyYmInVuZGVmaW5lZCIhPXR5cGVvZiBtb2R1bGU\/bW9kdWxlLmV4cG9ydHM9dCgpOiJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ\/ZGVmaW5lKHQpOihlPWV8fHNlbGYpLlZ1ZT10KCl9KHRoaXMsZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7dmFyIGU9T2JqZWN0LmZyZWV6ZSh7fSk7ZnVuY3Rpb24gdChlKXtyZXR1cm4gbnVsbD09ZX1mdW5jdGlvbiBuKGUpe3JldHVybiBudWxsIT1lfWZ1bmN0aW9uIHIoZSl7cmV0dXJuITA9PT1lfWZ1bmN0aW9uIGkoZSl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBlfHwibnVtYmVyIj09dHlwZW9mIGV8fCJzeW1ib2wiPT10eXBlb2YgZXx8ImJvb2xlYW4iPT10eXBlb2YgZX1mdW5jdGlvbiBvKGUpe3JldHVybiBudWxsIT09ZSYmIm9iamVjdCI9PXR5cGVvZiBlfXZhciBhPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7ZnVuY3Rpb24gcyhlKXtyZXR1cm4iW29iamVjdCBPYmplY3RdIj09PWEuY2FsbChlKX1mdW5jdGlvbiBjKGUpe3ZhciB0PXBhcnNlRmxvYXQoU3RyaW5nKGUpKTtyZXR1cm4gdD49MCYmTWF0aC5mbG9vcih0KT09PXQmJmlzRmluaXRlKGUpfWZ1bmN0aW9uIHUoZSl7cmV0dXJuIG4oZSkmJiJmdW5jdGlvbiI9PXR5cGVvZiBlLnRoZW4mJiJmdW5jdGlvbiI9PXR5cGVvZiBlLmNhdGNofWZ1bmN0aW9uIGwoZSl7cmV0dXJuIG51bGw9PWU\/IiI6QXJyYXkuaXNBcnJheShlKXx8cyhlKSYmZS50b1N0cmluZz09PWE\/SlNPTi5zdHJpbmdpZnkoZSxudWxsLDIpOlN0cmluZyhlKX1mdW5jdGlvbiBmKGUpe3ZhciB0PXBhcnNlRmxvYXQoZSk7cmV0dXJuIGlzTmFOKHQpP2U6dH1mdW5jdGlvbiBwKGUsdCl7Zm9yKHZhciBuPU9iamVjdC5jcmVhdGUobnVsbCkscj1lLnNwbGl0KCIsIiksaT0wO2k8ci5sZW5ndGg7aSsrKW5bcltpXV09ITA7cmV0dXJuIHQ\/ZnVuY3Rpb24oZSl7cmV0dXJuIG5bZS50b0xvd2VyQ2FzZSgpXX06ZnVuY3Rpb24oZSl7cmV0dXJuIG5bZV19fXZhciBkPXAoInNsb3QsY29tcG9uZW50IiwhMCksdj1wKCJrZXkscmVmLHNsb3Qsc2xvdC1zY29wZSxpcyIpO2Z1bmN0aW9uIGgoZSx0KXtpZihlLmxlbmd0aCl7dmFyIG49ZS5pbmRleE9mKHQpO2lmKG4+LTEpcmV0dXJuIGUuc3BsaWNlKG4sMSl9fXZhciBtPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7ZnVuY3Rpb24geShlLHQpe3JldHVybiBtLmNhbGwoZSx0KX1mdW5jdGlvbiBnKGUpe3ZhciB0PU9iamVjdC5jcmVhdGUobnVsbCk7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiB0W25dfHwodFtuXT1lKG4pKX19dmFyIF89Ly0oXHcpL2csYj1nKGZ1bmN0aW9uKGUpe3JldHVybiBlLnJlcGxhY2UoXyxmdW5jdGlvbihlLHQpe3JldHVybiB0P3QudG9VcHBlckNhc2UoKToiIn0pfSksJD1nKGZ1bmN0aW9uKGUpe3JldHVybiBlLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpK2Uuc2xpY2UoMSl9KSx3PS9cQihbQS1aXSkvZyxDPWcoZnVuY3Rpb24oZSl7cmV0dXJuIGUucmVwbGFjZSh3LCItJDEiKS50b0xvd2VyQ2FzZSgpfSk7dmFyIHg9RnVuY3Rpb24ucHJvdG90eXBlLmJpbmQ\/ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5iaW5kKHQpfTpmdW5jdGlvbihlLHQpe2Z1bmN0aW9uIG4obil7dmFyIHI9YXJndW1lbnRzLmxlbmd0aDtyZXR1cm4gcj9yPjE\/ZS5hcHBseSh0LGFyZ3VtZW50cyk6ZS5jYWxsKHQsbik6ZS5jYWxsKHQpfXJldHVybiBuLl9sZW5ndGg9ZS5sZW5ndGgsbn07ZnVuY3Rpb24gayhlLHQpe3Q9dHx8MDtmb3IodmFyIG49ZS5sZW5ndGgtdCxyPW5ldyBBcnJheShuKTtuLS07KXJbbl09ZVtuK3RdO3JldHVybiByfWZ1bmN0aW9uIEEoZSx0KXtmb3IodmFyIG4gaW4gdCllW25dPXRbbl07cmV0dXJuIGV9ZnVuY3Rpb24gTyhlKXtmb3IodmFyIHQ9e30sbj0wO248ZS5sZW5ndGg7bisrKWVbbl0mJkEodCxlW25dKTtyZXR1cm4gdH1mdW5jdGlvbiBTKGUsdCxuKXt9dmFyIFQ9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiExfSxFPWZ1bmN0aW9uKGUpe3JldHVybiBlfTtmdW5jdGlvbiBOKGUsdCl7aWYoZT09PXQpcmV0dXJuITA7dmFyIG49byhlKSxyPW8odCk7aWYoIW58fCFyKXJldHVybiFuJiYhciYmU3RyaW5nKGUpPT09U3RyaW5nKHQpO3RyeXt2YXIgaT1BcnJheS5pc0FycmF5KGUpLGE9QXJyYXkuaXNBcnJheSh0KTtpZihpJiZhKXJldHVybiBlLmxlbmd0aD09PXQubGVuZ3RoJiZlLmV2ZXJ5KGZ1bmN0aW9uKGUsbil7cmV0dXJuIE4oZSx0W25dKX0pO2lmKGUgaW5zdGFuY2VvZiBEYXRlJiZ0IGluc3RhbmNlb2YgRGF0ZSlyZXR1cm4gZS5nZXRUaW1lKCk9PT10LmdldFRpbWUoKTtpZihpfHxhKXJldHVybiExO3ZhciBzPU9iamVjdC5rZXlzKGUpLGM9T2JqZWN0LmtleXModCk7cmV0dXJuIHMubGVuZ3RoPT09Yy5sZW5ndGgmJnMuZXZlcnkoZnVuY3Rpb24obil7cmV0dXJuIE4oZVtuXSx0W25dKX0pfWNhdGNoKGUpe3JldHVybiExfX1mdW5jdGlvbiBqKGUsdCl7Zm9yKHZhciBuPTA7bjxlLmxlbmd0aDtuKyspaWYoTihlW25dLHQpKXJldHVybiBuO3JldHVybi0xfWZ1bmN0aW9uIEQoZSl7dmFyIHQ9ITE7cmV0dXJuIGZ1bmN0aW9uKCl7dHx8KHQ9ITAsZS5hcHBseSh0aGlzLGFyZ3VtZW50cykpfX12YXIgTD0iZGF0YS1zZXJ2ZXItcmVuZGVyZWQiLE09WyJjb21wb25lbnQiLCJkaXJlY3RpdmUiLCJmaWx0ZXIiXSxJPVsiYmVmb3JlQ3JlYXRlIiwiY3JlYXRlZCIsImJlZm9yZU1vdW50IiwibW91bnRlZCIsImJlZm9yZVVwZGF0ZSIsInVwZGF0ZWQiLCJiZWZvcmVEZXN0cm95IiwiZGVzdHJveWVkIiwiYWN0aXZhdGVkIiwiZGVhY3RpdmF0ZWQiLCJlcnJvckNhcHR1cmVkIiwic2VydmVyUHJlZmV0Y2giXSxGPXtvcHRpb25NZXJnZVN0cmF0ZWdpZXM6T2JqZWN0LmNyZWF0ZShudWxsKSxzaWxlbnQ6ITEscHJvZHVjdGlvblRpcDohMSxkZXZ0b29sczohMSxwZXJmb3JtYW5jZTohMSxlcnJvckhhbmRsZXI6bnVsbCx3YXJuSGFuZGxlcjpudWxsLGlnbm9yZWRFbGVtZW50czpbXSxrZXlDb2RlczpPYmplY3QuY3JlYXRlKG51bGwpLGlzUmVzZXJ2ZWRUYWc6VCxpc1Jlc2VydmVkQXR0cjpULGlzVW5rbm93bkVsZW1lbnQ6VCxnZXRUYWdOYW1lc3BhY2U6UyxwYXJzZVBsYXRmb3JtVGFnTmFtZTpFLG11c3RVc2VQcm9wOlQsYXN5bmM6ITAsX2xpZmVjeWNsZUhvb2tzOkl9LFA9L2EtekEtWlx1MDBCN1x1MDBDMC1cdTAwRDZcdTAwRDgtXHUwMEY2XHUwMEY4LVx1MDM3RFx1MDM3Ri1cdTFGRkZcdTIwMEMtXHUyMDBEXHUyMDNGLVx1MjA0MFx1MjA3MC1cdTIxOEZcdTJDMDAtXHUyRkVGXHUzMDAxLVx1RDdGRlx1RjkwMC1cdUZEQ0ZcdUZERjAtXHVGRkZELztmdW5jdGlvbiBSKGUsdCxuLHIpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohIXIsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfSl9dmFyIEg9bmV3IFJlZ0V4cCgiW14iK1Auc291cmNlKyIuJF9cXGRdIik7dmFyIEIsVT0iX19wcm90b19fImlue30sej0idW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdyxWPSJ1bmRlZmluZWQiIT10eXBlb2YgV1hFbnZpcm9ubWVudCYmISFXWEVudmlyb25tZW50LnBsYXRmb3JtLEs9ViYmV1hFbnZpcm9ubWVudC5wbGF0Zm9ybS50b0xvd2VyQ2FzZSgpLEo9eiYmd2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKSxxPUomJi9tc2llfHRyaWRlbnQvLnRlc3QoSiksVz1KJiZKLmluZGV4T2YoIm1zaWUgOS4wIik+MCxaPUomJkouaW5kZXhPZigiZWRnZS8iKT4wLEc9KEomJkouaW5kZXhPZigiYW5kcm9pZCIpLEomJi9pcGhvbmV8aXBhZHxpcG9kfGlvcy8udGVzdChKKXx8ImlvcyI9PT1LKSxYPShKJiYvY2hyb21lXC9cZCsvLnRlc3QoSiksSiYmL3BoYW50b21qcy8udGVzdChKKSxKJiZKLm1hdGNoKC9maXJlZm94XC8oXGQrKS8pKSxZPXt9LndhdGNoLFE9ITE7aWYoeil0cnl7dmFyIGVlPXt9O09iamVjdC5kZWZpbmVQcm9wZXJ0eShlZSwicGFzc2l2ZSIse2dldDpmdW5jdGlvbigpe1E9ITB9fSksd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInRlc3QtcGFzc2l2ZSIsbnVsbCxlZSl9Y2F0Y2goZSl7fXZhciB0ZT1mdW5jdGlvbigpe3JldHVybiB2b2lkIDA9PT1CJiYoQj0heiYmIVYmJiJ1bmRlZmluZWQiIT10eXBlb2YgZ2xvYmFsJiYoZ2xvYmFsLnByb2Nlc3MmJiJzZXJ2ZXIiPT09Z2xvYmFsLnByb2Nlc3MuZW52LlZVRV9FTlYpKSxCfSxuZT16JiZ3aW5kb3cuX19WVUVfREVWVE9PTFNfR0xPQkFMX0hPT0tfXztmdW5jdGlvbiByZShlKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgZSYmL25hdGl2ZSBjb2RlLy50ZXN0KGUudG9TdHJpbmcoKSl9dmFyIGllLG9lPSJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZyZShTeW1ib2wpJiYidW5kZWZpbmVkIiE9dHlwZW9mIFJlZmxlY3QmJnJlKFJlZmxlY3Qub3duS2V5cyk7aWU9InVuZGVmaW5lZCIhPXR5cGVvZiBTZXQmJnJlKFNldCk\/U2V0OmZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe3RoaXMuc2V0PU9iamVjdC5jcmVhdGUobnVsbCl9cmV0dXJuIGUucHJvdG90eXBlLmhhcz1mdW5jdGlvbihlKXtyZXR1cm4hMD09PXRoaXMuc2V0W2VdfSxlLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oZSl7dGhpcy5zZXRbZV09ITB9LGUucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dGhpcy5zZXQ9T2JqZWN0LmNyZWF0ZShudWxsKX0sZX0oKTt2YXIgYWU9UyxzZT0wLGNlPWZ1bmN0aW9uKCl7dGhpcy5pZD1zZSsrLHRoaXMuc3Vicz1bXX07Y2UucHJvdG90eXBlLmFkZFN1Yj1mdW5jdGlvbihlKXt0aGlzLnN1YnMucHVzaChlKX0sY2UucHJvdG90eXBlLnJlbW92ZVN1Yj1mdW5jdGlvbihlKXtoKHRoaXMuc3VicyxlKX0sY2UucHJvdG90eXBlLmRlcGVuZD1mdW5jdGlvbigpe2NlLnRhcmdldCYmY2UudGFyZ2V0LmFkZERlcCh0aGlzKX0sY2UucHJvdG90eXBlLm5vdGlmeT1mdW5jdGlvbigpe2Zvcih2YXIgZT10aGlzLnN1YnMuc2xpY2UoKSx0PTAsbj1lLmxlbmd0aDt0PG47dCsrKWVbdF0udXBkYXRlKCl9LGNlLnRhcmdldD1udWxsO3ZhciB1ZT1bXTtmdW5jdGlvbiBsZShlKXt1ZS5wdXNoKGUpLGNlLnRhcmdldD1lfWZ1bmN0aW9uIGZlKCl7dWUucG9wKCksY2UudGFyZ2V0PXVlW3VlLmxlbmd0aC0xXX12YXIgcGU9ZnVuY3Rpb24oZSx0LG4scixpLG8sYSxzKXt0aGlzLnRhZz1lLHRoaXMuZGF0YT10LHRoaXMuY2hpbGRyZW49bix0aGlzLnRleHQ9cix0aGlzLmVsbT1pLHRoaXMubnM9dm9pZCAwLHRoaXMuY29udGV4dD1vLHRoaXMuZm5Db250ZXh0PXZvaWQgMCx0aGlzLmZuT3B0aW9ucz12b2lkIDAsdGhpcy5mblNjb3BlSWQ9dm9pZCAwLHRoaXMua2V5PXQmJnQua2V5LHRoaXMuY29tcG9uZW50T3B0aW9ucz1hLHRoaXMuY29tcG9uZW50SW5zdGFuY2U9dm9pZCAwLHRoaXMucGFyZW50PXZvaWQgMCx0aGlzLnJhdz0hMSx0aGlzLmlzU3RhdGljPSExLHRoaXMuaXNSb290SW5zZXJ0PSEwLHRoaXMuaXNDb21tZW50PSExLHRoaXMuaXNDbG9uZWQ9ITEsdGhpcy5pc09uY2U9ITEsdGhpcy5hc3luY0ZhY3Rvcnk9cyx0aGlzLmFzeW5jTWV0YT12b2lkIDAsdGhpcy5pc0FzeW5jUGxhY2Vob2xkZXI9ITF9LGRlPXtjaGlsZDp7Y29uZmlndXJhYmxlOiEwfX07ZGUuY2hpbGQuZ2V0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY29tcG9uZW50SW5zdGFuY2V9LE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHBlLnByb3RvdHlwZSxkZSk7dmFyIHZlPWZ1bmN0aW9uKGUpe3ZvaWQgMD09PWUmJihlPSIiKTt2YXIgdD1uZXcgcGU7cmV0dXJuIHQudGV4dD1lLHQuaXNDb21tZW50PSEwLHR9O2Z1bmN0aW9uIGhlKGUpe3JldHVybiBuZXcgcGUodm9pZCAwLHZvaWQgMCx2b2lkIDAsU3RyaW5nKGUpKX1mdW5jdGlvbiBtZShlKXt2YXIgdD1uZXcgcGUoZS50YWcsZS5kYXRhLGUuY2hpbGRyZW4mJmUuY2hpbGRyZW4uc2xpY2UoKSxlLnRleHQsZS5lbG0sZS5jb250ZXh0LGUuY29tcG9uZW50T3B0aW9ucyxlLmFzeW5jRmFjdG9yeSk7cmV0dXJuIHQubnM9ZS5ucyx0LmlzU3RhdGljPWUuaXNTdGF0aWMsdC5rZXk9ZS5rZXksdC5pc0NvbW1lbnQ9ZS5pc0NvbW1lbnQsdC5mbkNvbnRleHQ9ZS5mbkNvbnRleHQsdC5mbk9wdGlvbnM9ZS5mbk9wdGlvbnMsdC5mblNjb3BlSWQ9ZS5mblNjb3BlSWQsdC5hc3luY01ldGE9ZS5hc3luY01ldGEsdC5pc0Nsb25lZD0hMCx0fXZhciB5ZT1BcnJheS5wcm90b3R5cGUsZ2U9T2JqZWN0LmNyZWF0ZSh5ZSk7WyJwdXNoIiwicG9wIiwic2hpZnQiLCJ1bnNoaWZ0Iiwic3BsaWNlIiwic29ydCIsInJldmVyc2UiXS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3ZhciB0PXllW2VdO1IoZ2UsZSxmdW5jdGlvbigpe2Zvcih2YXIgbj1bXSxyPWFyZ3VtZW50cy5sZW5ndGg7ci0tOyluW3JdPWFyZ3VtZW50c1tyXTt2YXIgaSxvPXQuYXBwbHkodGhpcyxuKSxhPXRoaXMuX19vYl9fO3N3aXRjaChlKXtjYXNlInB1c2giOmNhc2UidW5zaGlmdCI6aT1uO2JyZWFrO2Nhc2Uic3BsaWNlIjppPW4uc2xpY2UoMil9cmV0dXJuIGkmJmEub2JzZXJ2ZUFycmF5KGkpLGEuZGVwLm5vdGlmeSgpLG99KX0pO3ZhciBfZT1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhnZSksYmU9ITA7ZnVuY3Rpb24gJGUoZSl7YmU9ZX12YXIgd2U9ZnVuY3Rpb24oZSl7dmFyIHQ7dGhpcy52YWx1ZT1lLHRoaXMuZGVwPW5ldyBjZSx0aGlzLnZtQ291bnQ9MCxSKGUsIl9fb2JfXyIsdGhpcyksQXJyYXkuaXNBcnJheShlKT8oVT8odD1nZSxlLl9fcHJvdG9fXz10KTpmdW5jdGlvbihlLHQsbil7Zm9yKHZhciByPTAsaT1uLmxlbmd0aDtyPGk7cisrKXt2YXIgbz1uW3JdO1IoZSxvLHRbb10pfX0oZSxnZSxfZSksdGhpcy5vYnNlcnZlQXJyYXkoZSkpOnRoaXMud2FsayhlKX07ZnVuY3Rpb24gQ2UoZSx0KXt2YXIgbjtpZihvKGUpJiYhKGUgaW5zdGFuY2VvZiBwZSkpcmV0dXJuIHkoZSwiX19vYl9fIikmJmUuX19vYl9fIGluc3RhbmNlb2Ygd2U\/bj1lLl9fb2JfXzpiZSYmIXRlKCkmJihBcnJheS5pc0FycmF5KGUpfHxzKGUpKSYmT2JqZWN0LmlzRXh0ZW5zaWJsZShlKSYmIWUuX2lzVnVlJiYobj1uZXcgd2UoZSkpLHQmJm4mJm4udm1Db3VudCsrLG59ZnVuY3Rpb24geGUoZSx0LG4scixpKXt2YXIgbz1uZXcgY2UsYT1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsdCk7aWYoIWF8fCExIT09YS5jb25maWd1cmFibGUpe3ZhciBzPWEmJmEuZ2V0LGM9YSYmYS5zZXQ7cyYmIWN8fDIhPT1hcmd1bWVudHMubGVuZ3RofHwobj1lW3RdKTt2YXIgdT0haSYmQ2Uobik7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7dmFyIHQ9cz9zLmNhbGwoZSk6bjtyZXR1cm4gY2UudGFyZ2V0JiYoby5kZXBlbmQoKSx1JiYodS5kZXAuZGVwZW5kKCksQXJyYXkuaXNBcnJheSh0KSYmZnVuY3Rpb24gZSh0KXtmb3IodmFyIG49dm9pZCAwLHI9MCxpPXQubGVuZ3RoO3I8aTtyKyspKG49dFtyXSkmJm4uX19vYl9fJiZuLl9fb2JfXy5kZXAuZGVwZW5kKCksQXJyYXkuaXNBcnJheShuKSYmZShuKX0odCkpKSx0fSxzZXQ6ZnVuY3Rpb24odCl7dmFyIHI9cz9zLmNhbGwoZSk6bjt0PT09cnx8dCE9dCYmciE9cnx8cyYmIWN8fChjP2MuY2FsbChlLHQpOm49dCx1PSFpJiZDZSh0KSxvLm5vdGlmeSgpKX19KX19ZnVuY3Rpb24ga2UoZSx0LG4pe2lmKEFycmF5LmlzQXJyYXkoZSkmJmModCkpcmV0dXJuIGUubGVuZ3RoPU1hdGgubWF4KGUubGVuZ3RoLHQpLGUuc3BsaWNlKHQsMSxuKSxuO2lmKHQgaW4gZSYmISh0IGluIE9iamVjdC5wcm90b3R5cGUpKXJldHVybiBlW3RdPW4sbjt2YXIgcj1lLl9fb2JfXztyZXR1cm4gZS5faXNWdWV8fHImJnIudm1Db3VudD9uOnI\/KHhlKHIudmFsdWUsdCxuKSxyLmRlcC5ub3RpZnkoKSxuKTooZVt0XT1uLG4pfWZ1bmN0aW9uIEFlKGUsdCl7aWYoQXJyYXkuaXNBcnJheShlKSYmYyh0KSllLnNwbGljZSh0LDEpO2Vsc2V7dmFyIG49ZS5fX29iX187ZS5faXNWdWV8fG4mJm4udm1Db3VudHx8eShlLHQpJiYoZGVsZXRlIGVbdF0sbiYmbi5kZXAubm90aWZ5KCkpfX13ZS5wcm90b3R5cGUud2Fsaz1mdW5jdGlvbihlKXtmb3IodmFyIHQ9T2JqZWN0LmtleXMoZSksbj0wO248dC5sZW5ndGg7bisrKXhlKGUsdFtuXSl9LHdlLnByb3RvdHlwZS5vYnNlcnZlQXJyYXk9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTAsbj1lLmxlbmd0aDt0PG47dCsrKUNlKGVbdF0pfTt2YXIgT2U9Ri5vcHRpb25NZXJnZVN0cmF0ZWdpZXM7ZnVuY3Rpb24gU2UoZSx0KXtpZighdClyZXR1cm4gZTtmb3IodmFyIG4scixpLG89b2U\/UmVmbGVjdC5vd25LZXlzKHQpOk9iamVjdC5rZXlzKHQpLGE9MDthPG8ubGVuZ3RoO2ErKykiX19vYl9fIiE9PShuPW9bYV0pJiYocj1lW25dLGk9dFtuXSx5KGUsbik\/ciE9PWkmJnMocikmJnMoaSkmJlNlKHIsaSk6a2UoZSxuLGkpKTtyZXR1cm4gZX1mdW5jdGlvbiBUZShlLHQsbil7cmV0dXJuIG4\/ZnVuY3Rpb24oKXt2YXIgcj0iZnVuY3Rpb24iPT10eXBlb2YgdD90LmNhbGwobixuKTp0LGk9ImZ1bmN0aW9uIj09dHlwZW9mIGU\/ZS5jYWxsKG4sbik6ZTtyZXR1cm4gcj9TZShyLGkpOml9OnQ\/ZT9mdW5jdGlvbigpe3JldHVybiBTZSgiZnVuY3Rpb24iPT10eXBlb2YgdD90LmNhbGwodGhpcyx0aGlzKTp0LCJmdW5jdGlvbiI9PXR5cGVvZiBlP2UuY2FsbCh0aGlzLHRoaXMpOmUpfTp0OmV9ZnVuY3Rpb24gRWUoZSx0KXt2YXIgbj10P2U\/ZS5jb25jYXQodCk6QXJyYXkuaXNBcnJheSh0KT90Olt0XTplO3JldHVybiBuP2Z1bmN0aW9uKGUpe2Zvcih2YXIgdD1bXSxuPTA7bjxlLmxlbmd0aDtuKyspLTE9PT10LmluZGV4T2YoZVtuXSkmJnQucHVzaChlW25dKTtyZXR1cm4gdH0obik6bn1mdW5jdGlvbiBOZShlLHQsbixyKXt2YXIgaT1PYmplY3QuY3JlYXRlKGV8fG51bGwpO3JldHVybiB0P0EoaSx0KTppfU9lLmRhdGE9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBuP1RlKGUsdCxuKTp0JiYiZnVuY3Rpb24iIT10eXBlb2YgdD9lOlRlKGUsdCl9LEkuZm9yRWFjaChmdW5jdGlvbihlKXtPZVtlXT1FZX0pLE0uZm9yRWFjaChmdW5jdGlvbihlKXtPZVtlKyJzIl09TmV9KSxPZS53YXRjaD1mdW5jdGlvbihlLHQsbixyKXtpZihlPT09WSYmKGU9dm9pZCAwKSx0PT09WSYmKHQ9dm9pZCAwKSwhdClyZXR1cm4gT2JqZWN0LmNyZWF0ZShlfHxudWxsKTtpZighZSlyZXR1cm4gdDt2YXIgaT17fTtmb3IodmFyIG8gaW4gQShpLGUpLHQpe3ZhciBhPWlbb10scz10W29dO2EmJiFBcnJheS5pc0FycmF5KGEpJiYoYT1bYV0pLGlbb109YT9hLmNvbmNhdChzKTpBcnJheS5pc0FycmF5KHMpP3M6W3NdfXJldHVybiBpfSxPZS5wcm9wcz1PZS5tZXRob2RzPU9lLmluamVjdD1PZS5jb21wdXRlZD1mdW5jdGlvbihlLHQsbixyKXtpZighZSlyZXR1cm4gdDt2YXIgaT1PYmplY3QuY3JlYXRlKG51bGwpO3JldHVybiBBKGksZSksdCYmQShpLHQpLGl9LE9lLnByb3ZpZGU9VGU7dmFyIGplPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHZvaWQgMD09PXQ\/ZTp0fTtmdW5jdGlvbiBEZShlLHQsbil7aWYoImZ1bmN0aW9uIj09dHlwZW9mIHQmJih0PXQub3B0aW9ucyksZnVuY3Rpb24oZSx0KXt2YXIgbj1lLnByb3BzO2lmKG4pe3ZhciByLGksbz17fTtpZihBcnJheS5pc0FycmF5KG4pKWZvcihyPW4ubGVuZ3RoO3ItLTspInN0cmluZyI9PXR5cGVvZihpPW5bcl0pJiYob1tiKGkpXT17dHlwZTpudWxsfSk7ZWxzZSBpZihzKG4pKWZvcih2YXIgYSBpbiBuKWk9blthXSxvW2IoYSldPXMoaSk\/aTp7dHlwZTppfTtlLnByb3BzPW99fSh0KSxmdW5jdGlvbihlLHQpe3ZhciBuPWUuaW5qZWN0O2lmKG4pe3ZhciByPWUuaW5qZWN0PXt9O2lmKEFycmF5LmlzQXJyYXkobikpZm9yKHZhciBpPTA7aTxuLmxlbmd0aDtpKyspcltuW2ldXT17ZnJvbTpuW2ldfTtlbHNlIGlmKHMobikpZm9yKHZhciBvIGluIG4pe3ZhciBhPW5bb107cltvXT1zKGEpP0Eoe2Zyb206b30sYSk6e2Zyb206YX19fX0odCksZnVuY3Rpb24oZSl7dmFyIHQ9ZS5kaXJlY3RpdmVzO2lmKHQpZm9yKHZhciBuIGluIHQpe3ZhciByPXRbbl07ImZ1bmN0aW9uIj09dHlwZW9mIHImJih0W25dPXtiaW5kOnIsdXBkYXRlOnJ9KX19KHQpLCF0Ll9iYXNlJiYodC5leHRlbmRzJiYoZT1EZShlLHQuZXh0ZW5kcyxuKSksdC5taXhpbnMpKWZvcih2YXIgcj0wLGk9dC5taXhpbnMubGVuZ3RoO3I8aTtyKyspZT1EZShlLHQubWl4aW5zW3JdLG4pO3ZhciBvLGE9e307Zm9yKG8gaW4gZSljKG8pO2ZvcihvIGluIHQpeShlLG8pfHxjKG8pO2Z1bmN0aW9uIGMocil7dmFyIGk9T2Vbcl18fGplO2Fbcl09aShlW3JdLHRbcl0sbixyKX1yZXR1cm4gYX1mdW5jdGlvbiBMZShlLHQsbixyKXtpZigic3RyaW5nIj09dHlwZW9mIG4pe3ZhciBpPWVbdF07aWYoeShpLG4pKXJldHVybiBpW25dO3ZhciBvPWIobik7aWYoeShpLG8pKXJldHVybiBpW29dO3ZhciBhPSQobyk7cmV0dXJuIHkoaSxhKT9pW2FdOmlbbl18fGlbb118fGlbYV19fWZ1bmN0aW9uIE1lKGUsdCxuLHIpe3ZhciBpPXRbZV0sbz0heShuLGUpLGE9bltlXSxzPVBlKEJvb2xlYW4saS50eXBlKTtpZihzPi0xKWlmKG8mJiF5KGksImRlZmF1bHQiKSlhPSExO2Vsc2UgaWYoIiI9PT1hfHxhPT09QyhlKSl7dmFyIGM9UGUoU3RyaW5nLGkudHlwZSk7KGM8MHx8czxjKSYmKGE9ITApfWlmKHZvaWQgMD09PWEpe2E9ZnVuY3Rpb24oZSx0LG4pe2lmKCF5KHQsImRlZmF1bHQiKSlyZXR1cm47dmFyIHI9dC5kZWZhdWx0O2lmKGUmJmUuJG9wdGlvbnMucHJvcHNEYXRhJiZ2b2lkIDA9PT1lLiRvcHRpb25zLnByb3BzRGF0YVtuXSYmdm9pZCAwIT09ZS5fcHJvcHNbbl0pcmV0dXJuIGUuX3Byb3BzW25dO3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiByJiYiRnVuY3Rpb24iIT09SWUodC50eXBlKT9yLmNhbGwoZSk6cn0ocixpLGUpO3ZhciB1PWJlOyRlKCEwKSxDZShhKSwkZSh1KX1yZXR1cm4gYX1mdW5jdGlvbiBJZShlKXt2YXIgdD1lJiZlLnRvU3RyaW5nKCkubWF0Y2goL15ccypmdW5jdGlvbiAoXHcrKS8pO3JldHVybiB0P3RbMV06IiJ9ZnVuY3Rpb24gRmUoZSx0KXtyZXR1cm4gSWUoZSk9PT1JZSh0KX1mdW5jdGlvbiBQZShlLHQpe2lmKCFBcnJheS5pc0FycmF5KHQpKXJldHVybiBGZSh0LGUpPzA6LTE7Zm9yKHZhciBuPTAscj10Lmxlbmd0aDtuPHI7bisrKWlmKEZlKHRbbl0sZSkpcmV0dXJuIG47cmV0dXJuLTF9ZnVuY3Rpb24gUmUoZSx0LG4pe2xlKCk7dHJ5e2lmKHQpZm9yKHZhciByPXQ7cj1yLiRwYXJlbnQ7KXt2YXIgaT1yLiRvcHRpb25zLmVycm9yQ2FwdHVyZWQ7aWYoaSlmb3IodmFyIG89MDtvPGkubGVuZ3RoO28rKyl0cnl7aWYoITE9PT1pW29dLmNhbGwocixlLHQsbikpcmV0dXJufWNhdGNoKGUpe0JlKGUsciwiZXJyb3JDYXB0dXJlZCBob29rIil9fUJlKGUsdCxuKX1maW5hbGx5e2ZlKCl9fWZ1bmN0aW9uIEhlKGUsdCxuLHIsaSl7dmFyIG87dHJ5eyhvPW4\/ZS5hcHBseSh0LG4pOmUuY2FsbCh0KSkmJiFvLl9pc1Z1ZSYmdShvKSYmIW8uX2hhbmRsZWQmJihvLmNhdGNoKGZ1bmN0aW9uKGUpe3JldHVybiBSZShlLHIsaSsiIChQcm9taXNlL2FzeW5jKSIpfSksby5faGFuZGxlZD0hMCl9Y2F0Y2goZSl7UmUoZSxyLGkpfXJldHVybiBvfWZ1bmN0aW9uIEJlKGUsdCxuKXtpZihGLmVycm9ySGFuZGxlcil0cnl7cmV0dXJuIEYuZXJyb3JIYW5kbGVyLmNhbGwobnVsbCxlLHQsbil9Y2F0Y2godCl7dCE9PWUmJlVlKHQsbnVsbCwiY29uZmlnLmVycm9ySGFuZGxlciIpfVVlKGUsdCxuKX1mdW5jdGlvbiBVZShlLHQsbil7aWYoIXomJiFWfHwidW5kZWZpbmVkIj09dHlwZW9mIGNvbnNvbGUpdGhyb3cgZTtjb25zb2xlLmVycm9yKGUpfXZhciB6ZSxWZT0hMSxLZT1bXSxKZT0hMTtmdW5jdGlvbiBxZSgpe0plPSExO3ZhciBlPUtlLnNsaWNlKDApO0tlLmxlbmd0aD0wO2Zvcih2YXIgdD0wO3Q8ZS5sZW5ndGg7dCsrKWVbdF0oKX1pZigidW5kZWZpbmVkIiE9dHlwZW9mIFByb21pc2UmJnJlKFByb21pc2UpKXt2YXIgV2U9UHJvbWlzZS5yZXNvbHZlKCk7emU9ZnVuY3Rpb24oKXtXZS50aGVuKHFlKSxHJiZzZXRUaW1lb3V0KFMpfSxWZT0hMH1lbHNlIGlmKHF8fCJ1bmRlZmluZWQiPT10eXBlb2YgTXV0YXRpb25PYnNlcnZlcnx8IXJlKE11dGF0aW9uT2JzZXJ2ZXIpJiYiW29iamVjdCBNdXRhdGlvbk9ic2VydmVyQ29uc3RydWN0b3JdIiE9PU11dGF0aW9uT2JzZXJ2ZXIudG9TdHJpbmcoKSl6ZT0idW5kZWZpbmVkIiE9dHlwZW9mIHNldEltbWVkaWF0ZSYmcmUoc2V0SW1tZWRpYXRlKT9mdW5jdGlvbigpe3NldEltbWVkaWF0ZShxZSl9OmZ1bmN0aW9uKCl7c2V0VGltZW91dChxZSwwKX07ZWxzZXt2YXIgWmU9MSxHZT1uZXcgTXV0YXRpb25PYnNlcnZlcihxZSksWGU9ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoU3RyaW5nKFplKSk7R2Uub2JzZXJ2ZShYZSx7Y2hhcmFjdGVyRGF0YTohMH0pLHplPWZ1bmN0aW9uKCl7WmU9KFplKzEpJTIsWGUuZGF0YT1TdHJpbmcoWmUpfSxWZT0hMH1mdW5jdGlvbiBZZShlLHQpe3ZhciBuO2lmKEtlLnB1c2goZnVuY3Rpb24oKXtpZihlKXRyeXtlLmNhbGwodCl9Y2F0Y2goZSl7UmUoZSx0LCJuZXh0VGljayIpfWVsc2UgbiYmbih0KX0pLEplfHwoSmU9ITAsemUoKSksIWUmJiJ1bmRlZmluZWQiIT10eXBlb2YgUHJvbWlzZSlyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24oZSl7bj1lfSl9dmFyIFFlPW5ldyBpZTtmdW5jdGlvbiBldChlKXshZnVuY3Rpb24gZSh0LG4pe3ZhciByLGk7dmFyIGE9QXJyYXkuaXNBcnJheSh0KTtpZighYSYmIW8odCl8fE9iamVjdC5pc0Zyb3plbih0KXx8dCBpbnN0YW5jZW9mIHBlKXJldHVybjtpZih0Ll9fb2JfXyl7dmFyIHM9dC5fX29iX18uZGVwLmlkO2lmKG4uaGFzKHMpKXJldHVybjtuLmFkZChzKX1pZihhKWZvcihyPXQubGVuZ3RoO3ItLTspZSh0W3JdLG4pO2Vsc2UgZm9yKGk9T2JqZWN0LmtleXModCkscj1pLmxlbmd0aDtyLS07KWUodFtpW3JdXSxuKX0oZSxRZSksUWUuY2xlYXIoKX12YXIgdHQ9ZyhmdW5jdGlvbihlKXt2YXIgdD0iJiI9PT1lLmNoYXJBdCgwKSxuPSJ+Ij09PShlPXQ\/ZS5zbGljZSgxKTplKS5jaGFyQXQoMCkscj0iISI9PT0oZT1uP2Uuc2xpY2UoMSk6ZSkuY2hhckF0KDApO3JldHVybntuYW1lOmU9cj9lLnNsaWNlKDEpOmUsb25jZTpuLGNhcHR1cmU6cixwYXNzaXZlOnR9fSk7ZnVuY3Rpb24gbnQoZSx0KXtmdW5jdGlvbiBuKCl7dmFyIGU9YXJndW1lbnRzLHI9bi5mbnM7aWYoIUFycmF5LmlzQXJyYXkocikpcmV0dXJuIEhlKHIsbnVsbCxhcmd1bWVudHMsdCwidi1vbiBoYW5kbGVyIik7Zm9yKHZhciBpPXIuc2xpY2UoKSxvPTA7bzxpLmxlbmd0aDtvKyspSGUoaVtvXSxudWxsLGUsdCwidi1vbiBoYW5kbGVyIil9cmV0dXJuIG4uZm5zPWUsbn1mdW5jdGlvbiBydChlLG4saSxvLGEscyl7dmFyIGMsdSxsLGY7Zm9yKGMgaW4gZSl1PWVbY10sbD1uW2NdLGY9dHQoYyksdCh1KXx8KHQobCk\/KHQodS5mbnMpJiYodT1lW2NdPW50KHUscykpLHIoZi5vbmNlKSYmKHU9ZVtjXT1hKGYubmFtZSx1LGYuY2FwdHVyZSkpLGkoZi5uYW1lLHUsZi5jYXB0dXJlLGYucGFzc2l2ZSxmLnBhcmFtcykpOnUhPT1sJiYobC5mbnM9dSxlW2NdPWwpKTtmb3IoYyBpbiBuKXQoZVtjXSkmJm8oKGY9dHQoYykpLm5hbWUsbltjXSxmLmNhcHR1cmUpfWZ1bmN0aW9uIGl0KGUsaSxvKXt2YXIgYTtlIGluc3RhbmNlb2YgcGUmJihlPWUuZGF0YS5ob29rfHwoZS5kYXRhLmhvb2s9e30pKTt2YXIgcz1lW2ldO2Z1bmN0aW9uIGMoKXtvLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxoKGEuZm5zLGMpfXQocyk\/YT1udChbY10pOm4ocy5mbnMpJiZyKHMubWVyZ2VkKT8oYT1zKS5mbnMucHVzaChjKTphPW50KFtzLGNdKSxhLm1lcmdlZD0hMCxlW2ldPWF9ZnVuY3Rpb24gb3QoZSx0LHIsaSxvKXtpZihuKHQpKXtpZih5KHQscikpcmV0dXJuIGVbcl09dFtyXSxvfHxkZWxldGUgdFtyXSwhMDtpZih5KHQsaSkpcmV0dXJuIGVbcl09dFtpXSxvfHxkZWxldGUgdFtpXSwhMH1yZXR1cm4hMX1mdW5jdGlvbiBhdChlKXtyZXR1cm4gaShlKT9baGUoZSldOkFycmF5LmlzQXJyYXkoZSk\/ZnVuY3Rpb24gZShvLGEpe3ZhciBzPVtdO3ZhciBjLHUsbCxmO2ZvcihjPTA7YzxvLmxlbmd0aDtjKyspdCh1PW9bY10pfHwiYm9vbGVhbiI9PXR5cGVvZiB1fHwobD1zLmxlbmd0aC0xLGY9c1tsXSxBcnJheS5pc0FycmF5KHUpP3UubGVuZ3RoPjAmJihzdCgodT1lKHUsKGF8fCIiKSsiXyIrYykpWzBdKSYmc3QoZikmJihzW2xdPWhlKGYudGV4dCt1WzBdLnRleHQpLHUuc2hpZnQoKSkscy5wdXNoLmFwcGx5KHMsdSkpOmkodSk\/c3QoZik\/c1tsXT1oZShmLnRleHQrdSk6IiIhPT11JiZzLnB1c2goaGUodSkpOnN0KHUpJiZzdChmKT9zW2xdPWhlKGYudGV4dCt1LnRleHQpOihyKG8uX2lzVkxpc3QpJiZuKHUudGFnKSYmdCh1LmtleSkmJm4oYSkmJih1LmtleT0iX192bGlzdCIrYSsiXyIrYysiX18iKSxzLnB1c2godSkpKTtyZXR1cm4gc30oZSk6dm9pZCAwfWZ1bmN0aW9uIHN0KGUpe3JldHVybiBuKGUpJiZuKGUudGV4dCkmJiExPT09ZS5pc0NvbW1lbnR9ZnVuY3Rpb24gY3QoZSx0KXtpZihlKXtmb3IodmFyIG49T2JqZWN0LmNyZWF0ZShudWxsKSxyPW9lP1JlZmxlY3Qub3duS2V5cyhlKTpPYmplY3Qua2V5cyhlKSxpPTA7aTxyLmxlbmd0aDtpKyspe3ZhciBvPXJbaV07aWYoIl9fb2JfXyIhPT1vKXtmb3IodmFyIGE9ZVtvXS5mcm9tLHM9dDtzOyl7aWYocy5fcHJvdmlkZWQmJnkocy5fcHJvdmlkZWQsYSkpe25bb109cy5fcHJvdmlkZWRbYV07YnJlYWt9cz1zLiRwYXJlbnR9aWYoIXMmJiJkZWZhdWx0ImluIGVbb10pe3ZhciBjPWVbb10uZGVmYXVsdDtuW29dPSJmdW5jdGlvbiI9PXR5cGVvZiBjP2MuY2FsbCh0KTpjfX19cmV0dXJuIG59fWZ1bmN0aW9uIHV0KGUsdCl7aWYoIWV8fCFlLmxlbmd0aClyZXR1cm57fTtmb3IodmFyIG49e30scj0wLGk9ZS5sZW5ndGg7cjxpO3IrKyl7dmFyIG89ZVtyXSxhPW8uZGF0YTtpZihhJiZhLmF0dHJzJiZhLmF0dHJzLnNsb3QmJmRlbGV0ZSBhLmF0dHJzLnNsb3Qsby5jb250ZXh0IT09dCYmby5mbkNvbnRleHQhPT10fHwhYXx8bnVsbD09YS5zbG90KShuLmRlZmF1bHR8fChuLmRlZmF1bHQ9W10pKS5wdXNoKG8pO2Vsc2V7dmFyIHM9YS5zbG90LGM9bltzXXx8KG5bc109W10pOyJ0ZW1wbGF0ZSI9PT1vLnRhZz9jLnB1c2guYXBwbHkoYyxvLmNoaWxkcmVufHxbXSk6Yy5wdXNoKG8pfX1mb3IodmFyIHUgaW4gbiluW3VdLmV2ZXJ5KGx0KSYmZGVsZXRlIG5bdV07cmV0dXJuIG59ZnVuY3Rpb24gbHQoZSl7cmV0dXJuIGUuaXNDb21tZW50JiYhZS5hc3luY0ZhY3Rvcnl8fCIgIj09PWUudGV4dH1mdW5jdGlvbiBmdCh0LG4scil7dmFyIGksbz1PYmplY3Qua2V5cyhuKS5sZW5ndGg+MCxhPXQ\/ISF0LiRzdGFibGU6IW8scz10JiZ0LiRrZXk7aWYodCl7aWYodC5fbm9ybWFsaXplZClyZXR1cm4gdC5fbm9ybWFsaXplZDtpZihhJiZyJiZyIT09ZSYmcz09PXIuJGtleSYmIW8mJiFyLiRoYXNOb3JtYWwpcmV0dXJuIHI7Zm9yKHZhciBjIGluIGk9e30sdCl0W2NdJiYiJCIhPT1jWzBdJiYoaVtjXT1wdChuLGMsdFtjXSkpfWVsc2UgaT17fTtmb3IodmFyIHUgaW4gbil1IGluIGl8fChpW3VdPWR0KG4sdSkpO3JldHVybiB0JiZPYmplY3QuaXNFeHRlbnNpYmxlKHQpJiYodC5fbm9ybWFsaXplZD1pKSxSKGksIiRzdGFibGUiLGEpLFIoaSwiJGtleSIscyksUihpLCIkaGFzTm9ybWFsIixvKSxpfWZ1bmN0aW9uIHB0KGUsdCxuKXt2YXIgcj1mdW5jdGlvbigpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg\/bi5hcHBseShudWxsLGFyZ3VtZW50cyk6bih7fSk7cmV0dXJuKGU9ZSYmIm9iamVjdCI9PXR5cGVvZiBlJiYhQXJyYXkuaXNBcnJheShlKT9bZV06YXQoZSkpJiYoMD09PWUubGVuZ3RofHwxPT09ZS5sZW5ndGgmJmVbMF0uaXNDb21tZW50KT92b2lkIDA6ZX07cmV0dXJuIG4ucHJveHkmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse2dldDpyLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSkscn1mdW5jdGlvbiBkdChlLHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBlW3RdfX1mdW5jdGlvbiB2dChlLHQpe3ZhciByLGksYSxzLGM7aWYoQXJyYXkuaXNBcnJheShlKXx8InN0cmluZyI9PXR5cGVvZiBlKWZvcihyPW5ldyBBcnJheShlLmxlbmd0aCksaT0wLGE9ZS5sZW5ndGg7aTxhO2krKylyW2ldPXQoZVtpXSxpKTtlbHNlIGlmKCJudW1iZXIiPT10eXBlb2YgZSlmb3Iocj1uZXcgQXJyYXkoZSksaT0wO2k8ZTtpKyspcltpXT10KGkrMSxpKTtlbHNlIGlmKG8oZSkpaWYob2UmJmVbU3ltYm9sLml0ZXJhdG9yXSl7cj1bXTtmb3IodmFyIHU9ZVtTeW1ib2wuaXRlcmF0b3JdKCksbD11Lm5leHQoKTshbC5kb25lOylyLnB1c2godChsLnZhbHVlLHIubGVuZ3RoKSksbD11Lm5leHQoKX1lbHNlIGZvcihzPU9iamVjdC5rZXlzKGUpLHI9bmV3IEFycmF5KHMubGVuZ3RoKSxpPTAsYT1zLmxlbmd0aDtpPGE7aSsrKWM9c1tpXSxyW2ldPXQoZVtjXSxjLGkpO3JldHVybiBuKHIpfHwocj1bXSksci5faXNWTGlzdD0hMCxyfWZ1bmN0aW9uIGh0KGUsdCxuLHIpe3ZhciBpLG89dGhpcy4kc2NvcGVkU2xvdHNbZV07bz8obj1ufHx7fSxyJiYobj1BKEEoe30sciksbikpLGk9byhuKXx8dCk6aT10aGlzLiRzbG90c1tlXXx8dDt2YXIgYT1uJiZuLnNsb3Q7cmV0dXJuIGE\/dGhpcy4kY3JlYXRlRWxlbWVudCgidGVtcGxhdGUiLHtzbG90OmF9LGkpOml9ZnVuY3Rpb24gbXQoZSl7cmV0dXJuIExlKHRoaXMuJG9wdGlvbnMsImZpbHRlcnMiLGUpfHxFfWZ1bmN0aW9uIHl0KGUsdCl7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSk\/LTE9PT1lLmluZGV4T2YodCk6ZSE9PXR9ZnVuY3Rpb24gZ3QoZSx0LG4scixpKXt2YXIgbz1GLmtleUNvZGVzW3RdfHxuO3JldHVybiBpJiZyJiYhRi5rZXlDb2Rlc1t0XT95dChpLHIpOm8\/eXQobyxlKTpyP0MocikhPT10OnZvaWQgMH1mdW5jdGlvbiBfdChlLHQsbixyLGkpe2lmKG4paWYobyhuKSl7dmFyIGE7QXJyYXkuaXNBcnJheShuKSYmKG49TyhuKSk7dmFyIHM9ZnVuY3Rpb24obyl7aWYoImNsYXNzIj09PW98fCJzdHlsZSI9PT1vfHx2KG8pKWE9ZTtlbHNle3ZhciBzPWUuYXR0cnMmJmUuYXR0cnMudHlwZTthPXJ8fEYubXVzdFVzZVByb3AodCxzLG8pP2UuZG9tUHJvcHN8fChlLmRvbVByb3BzPXt9KTplLmF0dHJzfHwoZS5hdHRycz17fSl9dmFyIGM9YihvKSx1PUMobyk7YyBpbiBhfHx1IGluIGF8fChhW29dPW5bb10saSYmKChlLm9ufHwoZS5vbj17fSkpWyJ1cGRhdGU6IitvXT1mdW5jdGlvbihlKXtuW29dPWV9KSl9O2Zvcih2YXIgYyBpbiBuKXMoYyl9ZWxzZTtyZXR1cm4gZX1mdW5jdGlvbiBidChlLHQpe3ZhciBuPXRoaXMuX3N0YXRpY1RyZWVzfHwodGhpcy5fc3RhdGljVHJlZXM9W10pLHI9bltlXTtyZXR1cm4gciYmIXQ\/cjood3Qocj1uW2VdPXRoaXMuJG9wdGlvbnMuc3RhdGljUmVuZGVyRm5zW2VdLmNhbGwodGhpcy5fcmVuZGVyUHJveHksbnVsbCx0aGlzKSwiX19zdGF0aWNfXyIrZSwhMSkscil9ZnVuY3Rpb24gJHQoZSx0LG4pe3JldHVybiB3dChlLCJfX29uY2VfXyIrdCsobj8iXyIrbjoiIiksITApLGV9ZnVuY3Rpb24gd3QoZSx0LG4pe2lmKEFycmF5LmlzQXJyYXkoZSkpZm9yKHZhciByPTA7cjxlLmxlbmd0aDtyKyspZVtyXSYmInN0cmluZyIhPXR5cGVvZiBlW3JdJiZDdChlW3JdLHQrIl8iK3Isbik7ZWxzZSBDdChlLHQsbil9ZnVuY3Rpb24gQ3QoZSx0LG4pe2UuaXNTdGF0aWM9ITAsZS5rZXk9dCxlLmlzT25jZT1ufWZ1bmN0aW9uIHh0KGUsdCl7aWYodClpZihzKHQpKXt2YXIgbj1lLm9uPWUub24\/QSh7fSxlLm9uKTp7fTtmb3IodmFyIHIgaW4gdCl7dmFyIGk9bltyXSxvPXRbcl07bltyXT1pP1tdLmNvbmNhdChpLG8pOm99fWVsc2U7cmV0dXJuIGV9ZnVuY3Rpb24ga3QoZSx0LG4scil7dD10fHx7JHN0YWJsZTohbn07Zm9yKHZhciBpPTA7aTxlLmxlbmd0aDtpKyspe3ZhciBvPWVbaV07QXJyYXkuaXNBcnJheShvKT9rdChvLHQsbik6byYmKG8ucHJveHkmJihvLmZuLnByb3h5PSEwKSx0W28ua2V5XT1vLmZuKX1yZXR1cm4gciYmKHQuJGtleT1yKSx0fWZ1bmN0aW9uIEF0KGUsdCl7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKz0yKXt2YXIgcj10W25dOyJzdHJpbmciPT10eXBlb2YgciYmciYmKGVbdFtuXV09dFtuKzFdKX1yZXR1cm4gZX1mdW5jdGlvbiBPdChlLHQpe3JldHVybiJzdHJpbmciPT10eXBlb2YgZT90K2U6ZX1mdW5jdGlvbiBTdChlKXtlLl9vPSR0LGUuX249ZixlLl9zPWwsZS5fbD12dCxlLl90PWh0LGUuX3E9TixlLl9pPWosZS5fbT1idCxlLl9mPW10LGUuX2s9Z3QsZS5fYj1fdCxlLl92PWhlLGUuX2U9dmUsZS5fdT1rdCxlLl9nPXh0LGUuX2Q9QXQsZS5fcD1PdH1mdW5jdGlvbiBUdCh0LG4saSxvLGEpe3ZhciBzLGM9dGhpcyx1PWEub3B0aW9uczt5KG8sIl91aWQiKT8ocz1PYmplY3QuY3JlYXRlKG8pKS5fb3JpZ2luYWw9bzoocz1vLG89by5fb3JpZ2luYWwpO3ZhciBsPXIodS5fY29tcGlsZWQpLGY9IWw7dGhpcy5kYXRhPXQsdGhpcy5wcm9wcz1uLHRoaXMuY2hpbGRyZW49aSx0aGlzLnBhcmVudD1vLHRoaXMubGlzdGVuZXJzPXQub258fGUsdGhpcy5pbmplY3Rpb25zPWN0KHUuaW5qZWN0LG8pLHRoaXMuc2xvdHM9ZnVuY3Rpb24oKXtyZXR1cm4gYy4kc2xvdHN8fGZ0KHQuc2NvcGVkU2xvdHMsYy4kc2xvdHM9dXQoaSxvKSksYy4kc2xvdHN9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJzY29wZWRTbG90cyIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGZ0KHQuc2NvcGVkU2xvdHMsdGhpcy5zbG90cygpKX19KSxsJiYodGhpcy4kb3B0aW9ucz11LHRoaXMuJHNsb3RzPXRoaXMuc2xvdHMoKSx0aGlzLiRzY29wZWRTbG90cz1mdCh0LnNjb3BlZFNsb3RzLHRoaXMuJHNsb3RzKSksdS5fc2NvcGVJZD90aGlzLl9jPWZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBpPVB0KHMsZSx0LG4scixmKTtyZXR1cm4gaSYmIUFycmF5LmlzQXJyYXkoaSkmJihpLmZuU2NvcGVJZD11Ll9zY29wZUlkLGkuZm5Db250ZXh0PW8pLGl9OnRoaXMuX2M9ZnVuY3Rpb24oZSx0LG4scil7cmV0dXJuIFB0KHMsZSx0LG4scixmKX19ZnVuY3Rpb24gRXQoZSx0LG4scixpKXt2YXIgbz1tZShlKTtyZXR1cm4gby5mbkNvbnRleHQ9bixvLmZuT3B0aW9ucz1yLHQuc2xvdCYmKChvLmRhdGF8fChvLmRhdGE9e30pKS5zbG90PXQuc2xvdCksb31mdW5jdGlvbiBOdChlLHQpe2Zvcih2YXIgbiBpbiB0KWVbYihuKV09dFtuXX1TdChUdC5wcm90b3R5cGUpO3ZhciBqdD17aW5pdDpmdW5jdGlvbihlLHQpe2lmKGUuY29tcG9uZW50SW5zdGFuY2UmJiFlLmNvbXBvbmVudEluc3RhbmNlLl9pc0Rlc3Ryb3llZCYmZS5kYXRhLmtlZXBBbGl2ZSl7dmFyIHI9ZTtqdC5wcmVwYXRjaChyLHIpfWVsc2V7KGUuY29tcG9uZW50SW5zdGFuY2U9ZnVuY3Rpb24oZSx0KXt2YXIgcj17X2lzQ29tcG9uZW50OiEwLF9wYXJlbnRWbm9kZTplLHBhcmVudDp0fSxpPWUuZGF0YS5pbmxpbmVUZW1wbGF0ZTtuKGkpJiYoci5yZW5kZXI9aS5yZW5kZXIsci5zdGF0aWNSZW5kZXJGbnM9aS5zdGF0aWNSZW5kZXJGbnMpO3JldHVybiBuZXcgZS5jb21wb25lbnRPcHRpb25zLkN0b3Iocil9KGUsV3QpKS4kbW91bnQodD9lLmVsbTp2b2lkIDAsdCl9fSxwcmVwYXRjaDpmdW5jdGlvbih0LG4pe3ZhciByPW4uY29tcG9uZW50T3B0aW9uczshZnVuY3Rpb24odCxuLHIsaSxvKXt2YXIgYT1pLmRhdGEuc2NvcGVkU2xvdHMscz10LiRzY29wZWRTbG90cyxjPSEhKGEmJiFhLiRzdGFibGV8fHMhPT1lJiYhcy4kc3RhYmxlfHxhJiZ0LiRzY29wZWRTbG90cy4ka2V5IT09YS4ka2V5KSx1PSEhKG98fHQuJG9wdGlvbnMuX3JlbmRlckNoaWxkcmVufHxjKTt0LiRvcHRpb25zLl9wYXJlbnRWbm9kZT1pLHQuJHZub2RlPWksdC5fdm5vZGUmJih0Ll92bm9kZS5wYXJlbnQ9aSk7aWYodC4kb3B0aW9ucy5fcmVuZGVyQ2hpbGRyZW49byx0LiRhdHRycz1pLmRhdGEuYXR0cnN8fGUsdC4kbGlzdGVuZXJzPXJ8fGUsbiYmdC4kb3B0aW9ucy5wcm9wcyl7JGUoITEpO2Zvcih2YXIgbD10Ll9wcm9wcyxmPXQuJG9wdGlvbnMuX3Byb3BLZXlzfHxbXSxwPTA7cDxmLmxlbmd0aDtwKyspe3ZhciBkPWZbcF0sdj10LiRvcHRpb25zLnByb3BzO2xbZF09TWUoZCx2LG4sdCl9JGUoITApLHQuJG9wdGlvbnMucHJvcHNEYXRhPW59cj1yfHxlO3ZhciBoPXQuJG9wdGlvbnMuX3BhcmVudExpc3RlbmVyczt0LiRvcHRpb25zLl9wYXJlbnRMaXN0ZW5lcnM9cixxdCh0LHIsaCksdSYmKHQuJHNsb3RzPXV0KG8saS5jb250ZXh0KSx0LiRmb3JjZVVwZGF0ZSgpKX0obi5jb21wb25lbnRJbnN0YW5jZT10LmNvbXBvbmVudEluc3RhbmNlLHIucHJvcHNEYXRhLHIubGlzdGVuZXJzLG4sci5jaGlsZHJlbil9LGluc2VydDpmdW5jdGlvbihlKXt2YXIgdCxuPWUuY29udGV4dCxyPWUuY29tcG9uZW50SW5zdGFuY2U7ci5faXNNb3VudGVkfHwoci5faXNNb3VudGVkPSEwLFl0KHIsIm1vdW50ZWQiKSksZS5kYXRhLmtlZXBBbGl2ZSYmKG4uX2lzTW91bnRlZD8oKHQ9cikuX2luYWN0aXZlPSExLGVuLnB1c2godCkpOlh0KHIsITApKX0sZGVzdHJveTpmdW5jdGlvbihlKXt2YXIgdD1lLmNvbXBvbmVudEluc3RhbmNlO3QuX2lzRGVzdHJveWVkfHwoZS5kYXRhLmtlZXBBbGl2ZT9mdW5jdGlvbiBlKHQsbil7aWYobiYmKHQuX2RpcmVjdEluYWN0aXZlPSEwLEd0KHQpKSlyZXR1cm47aWYoIXQuX2luYWN0aXZlKXt0Ll9pbmFjdGl2ZT0hMDtmb3IodmFyIHI9MDtyPHQuJGNoaWxkcmVuLmxlbmd0aDtyKyspZSh0LiRjaGlsZHJlbltyXSk7WXQodCwiZGVhY3RpdmF0ZWQiKX19KHQsITApOnQuJGRlc3Ryb3koKSl9fSxEdD1PYmplY3Qua2V5cyhqdCk7ZnVuY3Rpb24gTHQoaSxhLHMsYyxsKXtpZighdChpKSl7dmFyIGY9cy4kb3B0aW9ucy5fYmFzZTtpZihvKGkpJiYoaT1mLmV4dGVuZChpKSksImZ1bmN0aW9uIj09dHlwZW9mIGkpe3ZhciBwO2lmKHQoaS5jaWQpJiZ2b2lkIDA9PT0oaT1mdW5jdGlvbihlLGkpe2lmKHIoZS5lcnJvcikmJm4oZS5lcnJvckNvbXApKXJldHVybiBlLmVycm9yQ29tcDtpZihuKGUucmVzb2x2ZWQpKXJldHVybiBlLnJlc29sdmVkO3ZhciBhPUh0O2EmJm4oZS5vd25lcnMpJiYtMT09PWUub3duZXJzLmluZGV4T2YoYSkmJmUub3duZXJzLnB1c2goYSk7aWYocihlLmxvYWRpbmcpJiZuKGUubG9hZGluZ0NvbXApKXJldHVybiBlLmxvYWRpbmdDb21wO2lmKGEmJiFuKGUub3duZXJzKSl7dmFyIHM9ZS5vd25lcnM9W2FdLGM9ITAsbD1udWxsLGY9bnVsbDthLiRvbigiaG9vazpkZXN0cm95ZWQiLGZ1bmN0aW9uKCl7cmV0dXJuIGgocyxhKX0pO3ZhciBwPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0wLG49cy5sZW5ndGg7dDxuO3QrKylzW3RdLiRmb3JjZVVwZGF0ZSgpO2UmJihzLmxlbmd0aD0wLG51bGwhPT1sJiYoY2xlYXJUaW1lb3V0KGwpLGw9bnVsbCksbnVsbCE9PWYmJihjbGVhclRpbWVvdXQoZiksZj1udWxsKSl9LGQ9RChmdW5jdGlvbih0KXtlLnJlc29sdmVkPUJ0KHQsaSksYz9zLmxlbmd0aD0wOnAoITApfSksdj1EKGZ1bmN0aW9uKHQpe24oZS5lcnJvckNvbXApJiYoZS5lcnJvcj0hMCxwKCEwKSl9KSxtPWUoZCx2KTtyZXR1cm4gbyhtKSYmKHUobSk\/dChlLnJlc29sdmVkKSYmbS50aGVuKGQsdik6dShtLmNvbXBvbmVudCkmJihtLmNvbXBvbmVudC50aGVuKGQsdiksbihtLmVycm9yKSYmKGUuZXJyb3JDb21wPUJ0KG0uZXJyb3IsaSkpLG4obS5sb2FkaW5nKSYmKGUubG9hZGluZ0NvbXA9QnQobS5sb2FkaW5nLGkpLDA9PT1tLmRlbGF5P2UubG9hZGluZz0hMDpsPXNldFRpbWVvdXQoZnVuY3Rpb24oKXtsPW51bGwsdChlLnJlc29sdmVkKSYmdChlLmVycm9yKSYmKGUubG9hZGluZz0hMCxwKCExKSl9LG0uZGVsYXl8fDIwMCkpLG4obS50aW1lb3V0KSYmKGY9c2V0VGltZW91dChmdW5jdGlvbigpe2Y9bnVsbCx0KGUucmVzb2x2ZWQpJiZ2KG51bGwpfSxtLnRpbWVvdXQpKSkpLGM9ITEsZS5sb2FkaW5nP2UubG9hZGluZ0NvbXA6ZS5yZXNvbHZlZH19KHA9aSxmKSkpcmV0dXJuIGZ1bmN0aW9uKGUsdCxuLHIsaSl7dmFyIG89dmUoKTtyZXR1cm4gby5hc3luY0ZhY3Rvcnk9ZSxvLmFzeW5jTWV0YT17ZGF0YTp0LGNvbnRleHQ6bixjaGlsZHJlbjpyLHRhZzppfSxvfShwLGEscyxjLGwpO2E9YXx8e30sJG4oaSksbihhLm1vZGVsKSYmZnVuY3Rpb24oZSx0KXt2YXIgcj1lLm1vZGVsJiZlLm1vZGVsLnByb3B8fCJ2YWx1ZSIsaT1lLm1vZGVsJiZlLm1vZGVsLmV2ZW50fHwiaW5wdXQiOyh0LmF0dHJzfHwodC5hdHRycz17fSkpW3JdPXQubW9kZWwudmFsdWU7dmFyIG89dC5vbnx8KHQub249e30pLGE9b1tpXSxzPXQubW9kZWwuY2FsbGJhY2s7bihhKT8oQXJyYXkuaXNBcnJheShhKT8tMT09PWEuaW5kZXhPZihzKTphIT09cykmJihvW2ldPVtzXS5jb25jYXQoYSkpOm9baV09c30oaS5vcHRpb25zLGEpO3ZhciBkPWZ1bmN0aW9uKGUscixpKXt2YXIgbz1yLm9wdGlvbnMucHJvcHM7aWYoIXQobykpe3ZhciBhPXt9LHM9ZS5hdHRycyxjPWUucHJvcHM7aWYobihzKXx8bihjKSlmb3IodmFyIHUgaW4gbyl7dmFyIGw9Qyh1KTtvdChhLGMsdSxsLCEwKXx8b3QoYSxzLHUsbCwhMSl9cmV0dXJuIGF9fShhLGkpO2lmKHIoaS5vcHRpb25zLmZ1bmN0aW9uYWwpKXJldHVybiBmdW5jdGlvbih0LHIsaSxvLGEpe3ZhciBzPXQub3B0aW9ucyxjPXt9LHU9cy5wcm9wcztpZihuKHUpKWZvcih2YXIgbCBpbiB1KWNbbF09TWUobCx1LHJ8fGUpO2Vsc2UgbihpLmF0dHJzKSYmTnQoYyxpLmF0dHJzKSxuKGkucHJvcHMpJiZOdChjLGkucHJvcHMpO3ZhciBmPW5ldyBUdChpLGMsYSxvLHQpLHA9cy5yZW5kZXIuY2FsbChudWxsLGYuX2MsZik7aWYocCBpbnN0YW5jZW9mIHBlKXJldHVybiBFdChwLGksZi5wYXJlbnQscyk7aWYoQXJyYXkuaXNBcnJheShwKSl7Zm9yKHZhciBkPWF0KHApfHxbXSx2PW5ldyBBcnJheShkLmxlbmd0aCksaD0wO2g8ZC5sZW5ndGg7aCsrKXZbaF09RXQoZFtoXSxpLGYucGFyZW50LHMpO3JldHVybiB2fX0oaSxkLGEscyxjKTt2YXIgdj1hLm9uO2lmKGEub249YS5uYXRpdmVPbixyKGkub3B0aW9ucy5hYnN0cmFjdCkpe3ZhciBtPWEuc2xvdDthPXt9LG0mJihhLnNsb3Q9bSl9IWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1lLmhvb2t8fChlLmhvb2s9e30pLG49MDtuPER0Lmxlbmd0aDtuKyspe3ZhciByPUR0W25dLGk9dFtyXSxvPWp0W3JdO2k9PT1vfHxpJiZpLl9tZXJnZWR8fCh0W3JdPWk\/TXQobyxpKTpvKX19KGEpO3ZhciB5PWkub3B0aW9ucy5uYW1lfHxsO3JldHVybiBuZXcgcGUoInZ1ZS1jb21wb25lbnQtIitpLmNpZCsoeT8iLSIreToiIiksYSx2b2lkIDAsdm9pZCAwLHZvaWQgMCxzLHtDdG9yOmkscHJvcHNEYXRhOmQsbGlzdGVuZXJzOnYsdGFnOmwsY2hpbGRyZW46Y30scCl9fX1mdW5jdGlvbiBNdChlLHQpe3ZhciBuPWZ1bmN0aW9uKG4scil7ZShuLHIpLHQobixyKX07cmV0dXJuIG4uX21lcmdlZD0hMCxufXZhciBJdD0xLEZ0PTI7ZnVuY3Rpb24gUHQoZSxhLHMsYyx1LGwpe3JldHVybihBcnJheS5pc0FycmF5KHMpfHxpKHMpKSYmKHU9YyxjPXMscz12b2lkIDApLHIobCkmJih1PUZ0KSxmdW5jdGlvbihlLGksYSxzLGMpe2lmKG4oYSkmJm4oYS5fX29iX18pKXJldHVybiB2ZSgpO24oYSkmJm4oYS5pcykmJihpPWEuaXMpO2lmKCFpKXJldHVybiB2ZSgpO0FycmF5LmlzQXJyYXkocykmJiJmdW5jdGlvbiI9PXR5cGVvZiBzWzBdJiYoKGE9YXx8e30pLnNjb3BlZFNsb3RzPXtkZWZhdWx0OnNbMF19LHMubGVuZ3RoPTApO2M9PT1GdD9zPWF0KHMpOmM9PT1JdCYmKHM9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTA7dDxlLmxlbmd0aDt0KyspaWYoQXJyYXkuaXNBcnJheShlW3RdKSlyZXR1cm4gQXJyYXkucHJvdG90eXBlLmNvbmNhdC5hcHBseShbXSxlKTtyZXR1cm4gZX0ocykpO3ZhciB1LGw7aWYoInN0cmluZyI9PXR5cGVvZiBpKXt2YXIgZjtsPWUuJHZub2RlJiZlLiR2bm9kZS5uc3x8Ri5nZXRUYWdOYW1lc3BhY2UoaSksdT1GLmlzUmVzZXJ2ZWRUYWcoaSk\/bmV3IHBlKEYucGFyc2VQbGF0Zm9ybVRhZ05hbWUoaSksYSxzLHZvaWQgMCx2b2lkIDAsZSk6YSYmYS5wcmV8fCFuKGY9TGUoZS4kb3B0aW9ucywiY29tcG9uZW50cyIsaSkpP25ldyBwZShpLGEscyx2b2lkIDAsdm9pZCAwLGUpOkx0KGYsYSxlLHMsaSl9ZWxzZSB1PUx0KGksYSxlLHMpO3JldHVybiBBcnJheS5pc0FycmF5KHUpP3U6bih1KT8obihsKSYmZnVuY3Rpb24gZShpLG8sYSl7aS5ucz1vOyJmb3JlaWduT2JqZWN0Ij09PWkudGFnJiYobz12b2lkIDAsYT0hMCk7aWYobihpLmNoaWxkcmVuKSlmb3IodmFyIHM9MCxjPWkuY2hpbGRyZW4ubGVuZ3RoO3M8YztzKyspe3ZhciB1PWkuY2hpbGRyZW5bc107bih1LnRhZykmJih0KHUubnMpfHxyKGEpJiYic3ZnIiE9PXUudGFnKSYmZSh1LG8sYSl9fSh1LGwpLG4oYSkmJmZ1bmN0aW9uKGUpe28oZS5zdHlsZSkmJmV0KGUuc3R5bGUpO28oZS5jbGFzcykmJmV0KGUuY2xhc3MpfShhKSx1KTp2ZSgpfShlLGEscyxjLHUpfXZhciBSdCxIdD1udWxsO2Z1bmN0aW9uIEJ0KGUsdCl7cmV0dXJuKGUuX19lc01vZHVsZXx8b2UmJiJNb2R1bGUiPT09ZVtTeW1ib2wudG9TdHJpbmdUYWddKSYmKGU9ZS5kZWZhdWx0KSxvKGUpP3QuZXh0ZW5kKGUpOmV9ZnVuY3Rpb24gVXQoZSl7cmV0dXJuIGUuaXNDb21tZW50JiZlLmFzeW5jRmFjdG9yeX1mdW5jdGlvbiB6dChlKXtpZihBcnJheS5pc0FycmF5KGUpKWZvcih2YXIgdD0wO3Q8ZS5sZW5ndGg7dCsrKXt2YXIgcj1lW3RdO2lmKG4ocikmJihuKHIuY29tcG9uZW50T3B0aW9ucyl8fFV0KHIpKSlyZXR1cm4gcn19ZnVuY3Rpb24gVnQoZSx0KXtSdC4kb24oZSx0KX1mdW5jdGlvbiBLdChlLHQpe1J0LiRvZmYoZSx0KX1mdW5jdGlvbiBKdChlLHQpe3ZhciBuPVJ0O3JldHVybiBmdW5jdGlvbiByKCl7bnVsbCE9PXQuYXBwbHkobnVsbCxhcmd1bWVudHMpJiZuLiRvZmYoZSxyKX19ZnVuY3Rpb24gcXQoZSx0LG4pe1J0PWUscnQodCxufHx7fSxWdCxLdCxKdCxlKSxSdD12b2lkIDB9dmFyIFd0PW51bGw7ZnVuY3Rpb24gWnQoZSl7dmFyIHQ9V3Q7cmV0dXJuIFd0PWUsZnVuY3Rpb24oKXtXdD10fX1mdW5jdGlvbiBHdChlKXtmb3IoO2UmJihlPWUuJHBhcmVudCk7KWlmKGUuX2luYWN0aXZlKXJldHVybiEwO3JldHVybiExfWZ1bmN0aW9uIFh0KGUsdCl7aWYodCl7aWYoZS5fZGlyZWN0SW5hY3RpdmU9ITEsR3QoZSkpcmV0dXJufWVsc2UgaWYoZS5fZGlyZWN0SW5hY3RpdmUpcmV0dXJuO2lmKGUuX2luYWN0aXZlfHxudWxsPT09ZS5faW5hY3RpdmUpe2UuX2luYWN0aXZlPSExO2Zvcih2YXIgbj0wO248ZS4kY2hpbGRyZW4ubGVuZ3RoO24rKylYdChlLiRjaGlsZHJlbltuXSk7WXQoZSwiYWN0aXZhdGVkIil9fWZ1bmN0aW9uIFl0KGUsdCl7bGUoKTt2YXIgbj1lLiRvcHRpb25zW3RdLHI9dCsiIGhvb2siO2lmKG4pZm9yKHZhciBpPTAsbz1uLmxlbmd0aDtpPG87aSsrKUhlKG5baV0sZSxudWxsLGUscik7ZS5faGFzSG9va0V2ZW50JiZlLiRlbWl0KCJob29rOiIrdCksZmUoKX12YXIgUXQ9W10sZW49W10sdG49e30sbm49ITEscm49ITEsb249MDt2YXIgYW49MCxzbj1EYXRlLm5vdztpZih6JiYhcSl7dmFyIGNuPXdpbmRvdy5wZXJmb3JtYW5jZTtjbiYmImZ1bmN0aW9uIj09dHlwZW9mIGNuLm5vdyYmc24oKT5kb2N1bWVudC5jcmVhdGVFdmVudCgiRXZlbnQiKS50aW1lU3RhbXAmJihzbj1mdW5jdGlvbigpe3JldHVybiBjbi5ub3coKX0pfWZ1bmN0aW9uIHVuKCl7dmFyIGUsdDtmb3IoYW49c24oKSxybj0hMCxRdC5zb3J0KGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuaWQtdC5pZH0pLG9uPTA7b248UXQubGVuZ3RoO29uKyspKGU9UXRbb25dKS5iZWZvcmUmJmUuYmVmb3JlKCksdD1lLmlkLHRuW3RdPW51bGwsZS5ydW4oKTt2YXIgbj1lbi5zbGljZSgpLHI9UXQuc2xpY2UoKTtvbj1RdC5sZW5ndGg9ZW4ubGVuZ3RoPTAsdG49e30sbm49cm49ITEsZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTA7dDxlLmxlbmd0aDt0KyspZVt0XS5faW5hY3RpdmU9ITAsWHQoZVt0XSwhMCl9KG4pLGZ1bmN0aW9uKGUpe3ZhciB0PWUubGVuZ3RoO2Zvcig7dC0tOyl7dmFyIG49ZVt0XSxyPW4udm07ci5fd2F0Y2hlcj09PW4mJnIuX2lzTW91bnRlZCYmIXIuX2lzRGVzdHJveWVkJiZZdChyLCJ1cGRhdGVkIil9fShyKSxuZSYmRi5kZXZ0b29scyYmbmUuZW1pdCgiZmx1c2giKX12YXIgbG49MCxmbj1mdW5jdGlvbihlLHQsbixyLGkpe3RoaXMudm09ZSxpJiYoZS5fd2F0Y2hlcj10aGlzKSxlLl93YXRjaGVycy5wdXNoKHRoaXMpLHI\/KHRoaXMuZGVlcD0hIXIuZGVlcCx0aGlzLnVzZXI9ISFyLnVzZXIsdGhpcy5sYXp5PSEhci5sYXp5LHRoaXMuc3luYz0hIXIuc3luYyx0aGlzLmJlZm9yZT1yLmJlZm9yZSk6dGhpcy5kZWVwPXRoaXMudXNlcj10aGlzLmxhenk9dGhpcy5zeW5jPSExLHRoaXMuY2I9bix0aGlzLmlkPSsrbG4sdGhpcy5hY3RpdmU9ITAsdGhpcy5kaXJ0eT10aGlzLmxhenksdGhpcy5kZXBzPVtdLHRoaXMubmV3RGVwcz1bXSx0aGlzLmRlcElkcz1uZXcgaWUsdGhpcy5uZXdEZXBJZHM9bmV3IGllLHRoaXMuZXhwcmVzc2lvbj0iIiwiZnVuY3Rpb24iPT10eXBlb2YgdD90aGlzLmdldHRlcj10Oih0aGlzLmdldHRlcj1mdW5jdGlvbihlKXtpZighSC50ZXN0KGUpKXt2YXIgdD1lLnNwbGl0KCIuIik7cmV0dXJuIGZ1bmN0aW9uKGUpe2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXtpZighZSlyZXR1cm47ZT1lW3Rbbl1dfXJldHVybiBlfX19KHQpLHRoaXMuZ2V0dGVyfHwodGhpcy5nZXR0ZXI9UykpLHRoaXMudmFsdWU9dGhpcy5sYXp5P3ZvaWQgMDp0aGlzLmdldCgpfTtmbi5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKCl7dmFyIGU7bGUodGhpcyk7dmFyIHQ9dGhpcy52bTt0cnl7ZT10aGlzLmdldHRlci5jYWxsKHQsdCl9Y2F0Y2goZSl7aWYoIXRoaXMudXNlcil0aHJvdyBlO1JlKGUsdCwnZ2V0dGVyIGZvciB3YXRjaGVyICInK3RoaXMuZXhwcmVzc2lvbisnIicpfWZpbmFsbHl7dGhpcy5kZWVwJiZldChlKSxmZSgpLHRoaXMuY2xlYW51cERlcHMoKX1yZXR1cm4gZX0sZm4ucHJvdG90eXBlLmFkZERlcD1mdW5jdGlvbihlKXt2YXIgdD1lLmlkO3RoaXMubmV3RGVwSWRzLmhhcyh0KXx8KHRoaXMubmV3RGVwSWRzLmFkZCh0KSx0aGlzLm5ld0RlcHMucHVzaChlKSx0aGlzLmRlcElkcy5oYXModCl8fGUuYWRkU3ViKHRoaXMpKX0sZm4ucHJvdG90eXBlLmNsZWFudXBEZXBzPWZ1bmN0aW9uKCl7Zm9yKHZhciBlPXRoaXMuZGVwcy5sZW5ndGg7ZS0tOyl7dmFyIHQ9dGhpcy5kZXBzW2VdO3RoaXMubmV3RGVwSWRzLmhhcyh0LmlkKXx8dC5yZW1vdmVTdWIodGhpcyl9dmFyIG49dGhpcy5kZXBJZHM7dGhpcy5kZXBJZHM9dGhpcy5uZXdEZXBJZHMsdGhpcy5uZXdEZXBJZHM9bix0aGlzLm5ld0RlcElkcy5jbGVhcigpLG49dGhpcy5kZXBzLHRoaXMuZGVwcz10aGlzLm5ld0RlcHMsdGhpcy5uZXdEZXBzPW4sdGhpcy5uZXdEZXBzLmxlbmd0aD0wfSxmbi5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKCl7dGhpcy5sYXp5P3RoaXMuZGlydHk9ITA6dGhpcy5zeW5jP3RoaXMucnVuKCk6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5pZDtpZihudWxsPT10blt0XSl7aWYodG5bdF09ITAscm4pe2Zvcih2YXIgbj1RdC5sZW5ndGgtMTtuPm9uJiZRdFtuXS5pZD5lLmlkOyluLS07UXQuc3BsaWNlKG4rMSwwLGUpfWVsc2UgUXQucHVzaChlKTtubnx8KG5uPSEwLFllKHVuKSl9fSh0aGlzKX0sZm4ucHJvdG90eXBlLnJ1bj1mdW5jdGlvbigpe2lmKHRoaXMuYWN0aXZlKXt2YXIgZT10aGlzLmdldCgpO2lmKGUhPT10aGlzLnZhbHVlfHxvKGUpfHx0aGlzLmRlZXApe3ZhciB0PXRoaXMudmFsdWU7aWYodGhpcy52YWx1ZT1lLHRoaXMudXNlcil0cnl7dGhpcy5jYi5jYWxsKHRoaXMudm0sZSx0KX1jYXRjaChlKXtSZShlLHRoaXMudm0sJ2NhbGxiYWNrIGZvciB3YXRjaGVyICInK3RoaXMuZXhwcmVzc2lvbisnIicpfWVsc2UgdGhpcy5jYi5jYWxsKHRoaXMudm0sZSx0KX19fSxmbi5wcm90b3R5cGUuZXZhbHVhdGU9ZnVuY3Rpb24oKXt0aGlzLnZhbHVlPXRoaXMuZ2V0KCksdGhpcy5kaXJ0eT0hMX0sZm4ucHJvdG90eXBlLmRlcGVuZD1mdW5jdGlvbigpe2Zvcih2YXIgZT10aGlzLmRlcHMubGVuZ3RoO2UtLTspdGhpcy5kZXBzW2VdLmRlcGVuZCgpfSxmbi5wcm90b3R5cGUudGVhcmRvd249ZnVuY3Rpb24oKXtpZih0aGlzLmFjdGl2ZSl7dGhpcy52bS5faXNCZWluZ0Rlc3Ryb3llZHx8aCh0aGlzLnZtLl93YXRjaGVycyx0aGlzKTtmb3IodmFyIGU9dGhpcy5kZXBzLmxlbmd0aDtlLS07KXRoaXMuZGVwc1tlXS5yZW1vdmVTdWIodGhpcyk7dGhpcy5hY3RpdmU9ITF9fTt2YXIgcG49e2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLGdldDpTLHNldDpTfTtmdW5jdGlvbiBkbihlLHQsbil7cG4uZ2V0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXNbdF1bbl19LHBuLnNldD1mdW5jdGlvbihlKXt0aGlzW3RdW25dPWV9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLG4scG4pfWZ1bmN0aW9uIHZuKGUpe2UuX3dhdGNoZXJzPVtdO3ZhciB0PWUuJG9wdGlvbnM7dC5wcm9wcyYmZnVuY3Rpb24oZSx0KXt2YXIgbj1lLiRvcHRpb25zLnByb3BzRGF0YXx8e30scj1lLl9wcm9wcz17fSxpPWUuJG9wdGlvbnMuX3Byb3BLZXlzPVtdO2UuJHBhcmVudCYmJGUoITEpO3ZhciBvPWZ1bmN0aW9uKG8pe2kucHVzaChvKTt2YXIgYT1NZShvLHQsbixlKTt4ZShyLG8sYSksbyBpbiBlfHxkbihlLCJfcHJvcHMiLG8pfTtmb3IodmFyIGEgaW4gdClvKGEpOyRlKCEwKX0oZSx0LnByb3BzKSx0Lm1ldGhvZHMmJmZ1bmN0aW9uKGUsdCl7ZS4kb3B0aW9ucy5wcm9wcztmb3IodmFyIG4gaW4gdCllW25dPSJmdW5jdGlvbiIhPXR5cGVvZiB0W25dP1M6eCh0W25dLGUpfShlLHQubWV0aG9kcyksdC5kYXRhP2Z1bmN0aW9uKGUpe3ZhciB0PWUuJG9wdGlvbnMuZGF0YTtzKHQ9ZS5fZGF0YT0iZnVuY3Rpb24iPT10eXBlb2YgdD9mdW5jdGlvbihlLHQpe2xlKCk7dHJ5e3JldHVybiBlLmNhbGwodCx0KX1jYXRjaChlKXtyZXR1cm4gUmUoZSx0LCJkYXRhKCkiKSx7fX1maW5hbGx5e2ZlKCl9fSh0LGUpOnR8fHt9KXx8KHQ9e30pO3ZhciBuPU9iamVjdC5rZXlzKHQpLHI9ZS4kb3B0aW9ucy5wcm9wcyxpPShlLiRvcHRpb25zLm1ldGhvZHMsbi5sZW5ndGgpO2Zvcig7aS0tOyl7dmFyIG89bltpXTtyJiZ5KHIsbyl8fChhPXZvaWQgMCwzNiE9PShhPShvKyIiKS5jaGFyQ29kZUF0KDApKSYmOTUhPT1hJiZkbihlLCJfZGF0YSIsbykpfXZhciBhO0NlKHQsITApfShlKTpDZShlLl9kYXRhPXt9LCEwKSx0LmNvbXB1dGVkJiZmdW5jdGlvbihlLHQpe3ZhciBuPWUuX2NvbXB1dGVkV2F0Y2hlcnM9T2JqZWN0LmNyZWF0ZShudWxsKSxyPXRlKCk7Zm9yKHZhciBpIGluIHQpe3ZhciBvPXRbaV0sYT0iZnVuY3Rpb24iPT10eXBlb2Ygbz9vOm8uZ2V0O3J8fChuW2ldPW5ldyBmbihlLGF8fFMsUyxobikpLGkgaW4gZXx8bW4oZSxpLG8pfX0oZSx0LmNvbXB1dGVkKSx0LndhdGNoJiZ0LndhdGNoIT09WSYmZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4gaW4gdCl7dmFyIHI9dFtuXTtpZihBcnJheS5pc0FycmF5KHIpKWZvcih2YXIgaT0wO2k8ci5sZW5ndGg7aSsrKV9uKGUsbixyW2ldKTtlbHNlIF9uKGUsbixyKX19KGUsdC53YXRjaCl9dmFyIGhuPXtsYXp5OiEwfTtmdW5jdGlvbiBtbihlLHQsbil7dmFyIHI9IXRlKCk7ImZ1bmN0aW9uIj09dHlwZW9mIG4\/KHBuLmdldD1yP3luKHQpOmduKG4pLHBuLnNldD1TKToocG4uZ2V0PW4uZ2V0P3ImJiExIT09bi5jYWNoZT95bih0KTpnbihuLmdldCk6Uyxwbi5zZXQ9bi5zZXR8fFMpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQscG4pfWZ1bmN0aW9uIHluKGUpe3JldHVybiBmdW5jdGlvbigpe3ZhciB0PXRoaXMuX2NvbXB1dGVkV2F0Y2hlcnMmJnRoaXMuX2NvbXB1dGVkV2F0Y2hlcnNbZV07aWYodClyZXR1cm4gdC5kaXJ0eSYmdC5ldmFsdWF0ZSgpLGNlLnRhcmdldCYmdC5kZXBlbmQoKSx0LnZhbHVlfX1mdW5jdGlvbiBnbihlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gZS5jYWxsKHRoaXMsdGhpcyl9fWZ1bmN0aW9uIF9uKGUsdCxuLHIpe3JldHVybiBzKG4pJiYocj1uLG49bi5oYW5kbGVyKSwic3RyaW5nIj09dHlwZW9mIG4mJihuPWVbbl0pLGUuJHdhdGNoKHQsbixyKX12YXIgYm49MDtmdW5jdGlvbiAkbihlKXt2YXIgdD1lLm9wdGlvbnM7aWYoZS5zdXBlcil7dmFyIG49JG4oZS5zdXBlcik7aWYobiE9PWUuc3VwZXJPcHRpb25zKXtlLnN1cGVyT3B0aW9ucz1uO3ZhciByPWZ1bmN0aW9uKGUpe3ZhciB0LG49ZS5vcHRpb25zLHI9ZS5zZWFsZWRPcHRpb25zO2Zvcih2YXIgaSBpbiBuKW5baV0hPT1yW2ldJiYodHx8KHQ9e30pLHRbaV09bltpXSk7cmV0dXJuIHR9KGUpO3ImJkEoZS5leHRlbmRPcHRpb25zLHIpLCh0PWUub3B0aW9ucz1EZShuLGUuZXh0ZW5kT3B0aW9ucykpLm5hbWUmJih0LmNvbXBvbmVudHNbdC5uYW1lXT1lKX19cmV0dXJuIHR9ZnVuY3Rpb24gd24oZSl7dGhpcy5faW5pdChlKX1mdW5jdGlvbiBDbihlKXtlLmNpZD0wO3ZhciB0PTE7ZS5leHRlbmQ9ZnVuY3Rpb24oZSl7ZT1lfHx7fTt2YXIgbj10aGlzLHI9bi5jaWQsaT1lLl9DdG9yfHwoZS5fQ3Rvcj17fSk7aWYoaVtyXSlyZXR1cm4gaVtyXTt2YXIgbz1lLm5hbWV8fG4ub3B0aW9ucy5uYW1lLGE9ZnVuY3Rpb24oZSl7dGhpcy5faW5pdChlKX07cmV0dXJuKGEucHJvdG90eXBlPU9iamVjdC5jcmVhdGUobi5wcm90b3R5cGUpKS5jb25zdHJ1Y3Rvcj1hLGEuY2lkPXQrKyxhLm9wdGlvbnM9RGUobi5vcHRpb25zLGUpLGEuc3VwZXI9bixhLm9wdGlvbnMucHJvcHMmJmZ1bmN0aW9uKGUpe3ZhciB0PWUub3B0aW9ucy5wcm9wcztmb3IodmFyIG4gaW4gdClkbihlLnByb3RvdHlwZSwiX3Byb3BzIixuKX0oYSksYS5vcHRpb25zLmNvbXB1dGVkJiZmdW5jdGlvbihlKXt2YXIgdD1lLm9wdGlvbnMuY29tcHV0ZWQ7Zm9yKHZhciBuIGluIHQpbW4oZS5wcm90b3R5cGUsbix0W25dKX0oYSksYS5leHRlbmQ9bi5leHRlbmQsYS5taXhpbj1uLm1peGluLGEudXNlPW4udXNlLE0uZm9yRWFjaChmdW5jdGlvbihlKXthW2VdPW5bZV19KSxvJiYoYS5vcHRpb25zLmNvbXBvbmVudHNbb109YSksYS5zdXBlck9wdGlvbnM9bi5vcHRpb25zLGEuZXh0ZW5kT3B0aW9ucz1lLGEuc2VhbGVkT3B0aW9ucz1BKHt9LGEub3B0aW9ucyksaVtyXT1hLGF9fWZ1bmN0aW9uIHhuKGUpe3JldHVybiBlJiYoZS5DdG9yLm9wdGlvbnMubmFtZXx8ZS50YWcpfWZ1bmN0aW9uIGtuKGUsdCl7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSk\/ZS5pbmRleE9mKHQpPi0xOiJzdHJpbmciPT10eXBlb2YgZT9lLnNwbGl0KCIsIikuaW5kZXhPZih0KT4tMToobj1lLCJbb2JqZWN0IFJlZ0V4cF0iPT09YS5jYWxsKG4pJiZlLnRlc3QodCkpO3ZhciBufWZ1bmN0aW9uIEFuKGUsdCl7dmFyIG49ZS5jYWNoZSxyPWUua2V5cyxpPWUuX3Zub2RlO2Zvcih2YXIgbyBpbiBuKXt2YXIgYT1uW29dO2lmKGEpe3ZhciBzPXhuKGEuY29tcG9uZW50T3B0aW9ucyk7cyYmIXQocykmJk9uKG4sbyxyLGkpfX19ZnVuY3Rpb24gT24oZSx0LG4scil7dmFyIGk9ZVt0XTshaXx8ciYmaS50YWc9PT1yLnRhZ3x8aS5jb21wb25lbnRJbnN0YW5jZS4kZGVzdHJveSgpLGVbdF09bnVsbCxoKG4sdCl9IWZ1bmN0aW9uKHQpe3QucHJvdG90eXBlLl9pbml0PWZ1bmN0aW9uKHQpe3ZhciBuPXRoaXM7bi5fdWlkPWJuKyssbi5faXNWdWU9ITAsdCYmdC5faXNDb21wb25lbnQ\/ZnVuY3Rpb24oZSx0KXt2YXIgbj1lLiRvcHRpb25zPU9iamVjdC5jcmVhdGUoZS5jb25zdHJ1Y3Rvci5vcHRpb25zKSxyPXQuX3BhcmVudFZub2RlO24ucGFyZW50PXQucGFyZW50LG4uX3BhcmVudFZub2RlPXI7dmFyIGk9ci5jb21wb25lbnRPcHRpb25zO24ucHJvcHNEYXRhPWkucHJvcHNEYXRhLG4uX3BhcmVudExpc3RlbmVycz1pLmxpc3RlbmVycyxuLl9yZW5kZXJDaGlsZHJlbj1pLmNoaWxkcmVuLG4uX2NvbXBvbmVudFRhZz1pLnRhZyx0LnJlbmRlciYmKG4ucmVuZGVyPXQucmVuZGVyLG4uc3RhdGljUmVuZGVyRm5zPXQuc3RhdGljUmVuZGVyRm5zKX0obix0KTpuLiRvcHRpb25zPURlKCRuKG4uY29uc3RydWN0b3IpLHR8fHt9LG4pLG4uX3JlbmRlclByb3h5PW4sbi5fc2VsZj1uLGZ1bmN0aW9uKGUpe3ZhciB0PWUuJG9wdGlvbnMsbj10LnBhcmVudDtpZihuJiYhdC5hYnN0cmFjdCl7Zm9yKDtuLiRvcHRpb25zLmFic3RyYWN0JiZuLiRwYXJlbnQ7KW49bi4kcGFyZW50O24uJGNoaWxkcmVuLnB1c2goZSl9ZS4kcGFyZW50PW4sZS4kcm9vdD1uP24uJHJvb3Q6ZSxlLiRjaGlsZHJlbj1bXSxlLiRyZWZzPXt9LGUuX3dhdGNoZXI9bnVsbCxlLl9pbmFjdGl2ZT1udWxsLGUuX2RpcmVjdEluYWN0aXZlPSExLGUuX2lzTW91bnRlZD0hMSxlLl9pc0Rlc3Ryb3llZD0hMSxlLl9pc0JlaW5nRGVzdHJveWVkPSExfShuKSxmdW5jdGlvbihlKXtlLl9ldmVudHM9T2JqZWN0LmNyZWF0ZShudWxsKSxlLl9oYXNIb29rRXZlbnQ9ITE7dmFyIHQ9ZS4kb3B0aW9ucy5fcGFyZW50TGlzdGVuZXJzO3QmJnF0KGUsdCl9KG4pLGZ1bmN0aW9uKHQpe3QuX3Zub2RlPW51bGwsdC5fc3RhdGljVHJlZXM9bnVsbDt2YXIgbj10LiRvcHRpb25zLHI9dC4kdm5vZGU9bi5fcGFyZW50Vm5vZGUsaT1yJiZyLmNvbnRleHQ7dC4kc2xvdHM9dXQobi5fcmVuZGVyQ2hpbGRyZW4saSksdC4kc2NvcGVkU2xvdHM9ZSx0Ll9jPWZ1bmN0aW9uKGUsbixyLGkpe3JldHVybiBQdCh0LGUsbixyLGksITEpfSx0LiRjcmVhdGVFbGVtZW50PWZ1bmN0aW9uKGUsbixyLGkpe3JldHVybiBQdCh0LGUsbixyLGksITApfTt2YXIgbz1yJiZyLmRhdGE7eGUodCwiJGF0dHJzIixvJiZvLmF0dHJzfHxlLG51bGwsITApLHhlKHQsIiRsaXN0ZW5lcnMiLG4uX3BhcmVudExpc3RlbmVyc3x8ZSxudWxsLCEwKX0obiksWXQobiwiYmVmb3JlQ3JlYXRlIiksZnVuY3Rpb24oZSl7dmFyIHQ9Y3QoZS4kb3B0aW9ucy5pbmplY3QsZSk7dCYmKCRlKCExKSxPYmplY3Qua2V5cyh0KS5mb3JFYWNoKGZ1bmN0aW9uKG4pe3hlKGUsbix0W25dKX0pLCRlKCEwKSl9KG4pLHZuKG4pLGZ1bmN0aW9uKGUpe3ZhciB0PWUuJG9wdGlvbnMucHJvdmlkZTt0JiYoZS5fcHJvdmlkZWQ9ImZ1bmN0aW9uIj09dHlwZW9mIHQ\/dC5jYWxsKGUpOnQpfShuKSxZdChuLCJjcmVhdGVkIiksbi4kb3B0aW9ucy5lbCYmbi4kbW91bnQobi4kb3B0aW9ucy5lbCl9fSh3biksZnVuY3Rpb24oZSl7dmFyIHQ9e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9kYXRhfX0sbj17Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3Byb3BzfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCIkZGF0YSIsdCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCIkcHJvcHMiLG4pLGUucHJvdG90eXBlLiRzZXQ9a2UsZS5wcm90b3R5cGUuJGRlbGV0ZT1BZSxlLnByb3RvdHlwZS4kd2F0Y2g9ZnVuY3Rpb24oZSx0LG4pe2lmKHModCkpcmV0dXJuIF9uKHRoaXMsZSx0LG4pOyhuPW58fHt9KS51c2VyPSEwO3ZhciByPW5ldyBmbih0aGlzLGUsdCxuKTtpZihuLmltbWVkaWF0ZSl0cnl7dC5jYWxsKHRoaXMsci52YWx1ZSl9Y2F0Y2goZSl7UmUoZSx0aGlzLCdjYWxsYmFjayBmb3IgaW1tZWRpYXRlIHdhdGNoZXIgIicrci5leHByZXNzaW9uKyciJyl9cmV0dXJuIGZ1bmN0aW9uKCl7ci50ZWFyZG93bigpfX19KHduKSxmdW5jdGlvbihlKXt2YXIgdD0vXmhvb2s6LztlLnByb3RvdHlwZS4kb249ZnVuY3Rpb24oZSxuKXt2YXIgcj10aGlzO2lmKEFycmF5LmlzQXJyYXkoZSkpZm9yKHZhciBpPTAsbz1lLmxlbmd0aDtpPG87aSsrKXIuJG9uKGVbaV0sbik7ZWxzZShyLl9ldmVudHNbZV18fChyLl9ldmVudHNbZV09W10pKS5wdXNoKG4pLHQudGVzdChlKSYmKHIuX2hhc0hvb2tFdmVudD0hMCk7cmV0dXJuIHJ9LGUucHJvdG90eXBlLiRvbmNlPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcztmdW5jdGlvbiByKCl7bi4kb2ZmKGUsciksdC5hcHBseShuLGFyZ3VtZW50cyl9cmV0dXJuIHIuZm49dCxuLiRvbihlLHIpLG59LGUucHJvdG90eXBlLiRvZmY9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzO2lmKCFhcmd1bWVudHMubGVuZ3RoKXJldHVybiBuLl9ldmVudHM9T2JqZWN0LmNyZWF0ZShudWxsKSxuO2lmKEFycmF5LmlzQXJyYXkoZSkpe2Zvcih2YXIgcj0wLGk9ZS5sZW5ndGg7cjxpO3IrKyluLiRvZmYoZVtyXSx0KTtyZXR1cm4gbn12YXIgbyxhPW4uX2V2ZW50c1tlXTtpZighYSlyZXR1cm4gbjtpZighdClyZXR1cm4gbi5fZXZlbnRzW2VdPW51bGwsbjtmb3IodmFyIHM9YS5sZW5ndGg7cy0tOylpZigobz1hW3NdKT09PXR8fG8uZm49PT10KXthLnNwbGljZShzLDEpO2JyZWFrfXJldHVybiBufSxlLnByb3RvdHlwZS4kZW1pdD1mdW5jdGlvbihlKXt2YXIgdD10aGlzLl9ldmVudHNbZV07aWYodCl7dD10Lmxlbmd0aD4xP2sodCk6dDtmb3IodmFyIG49ayhhcmd1bWVudHMsMSkscj0nZXZlbnQgaGFuZGxlciBmb3IgIicrZSsnIicsaT0wLG89dC5sZW5ndGg7aTxvO2krKylIZSh0W2ldLHRoaXMsbix0aGlzLHIpfXJldHVybiB0aGlzfX0od24pLGZ1bmN0aW9uKGUpe2UucHJvdG90eXBlLl91cGRhdGU9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLHI9bi4kZWwsaT1uLl92bm9kZSxvPVp0KG4pO24uX3Zub2RlPWUsbi4kZWw9aT9uLl9fcGF0Y2hfXyhpLGUpOm4uX19wYXRjaF9fKG4uJGVsLGUsdCwhMSksbygpLHImJihyLl9fdnVlX189bnVsbCksbi4kZWwmJihuLiRlbC5fX3Z1ZV9fPW4pLG4uJHZub2RlJiZuLiRwYXJlbnQmJm4uJHZub2RlPT09bi4kcGFyZW50Ll92bm9kZSYmKG4uJHBhcmVudC4kZWw9bi4kZWwpfSxlLnByb3RvdHlwZS4kZm9yY2VVcGRhdGU9ZnVuY3Rpb24oKXt0aGlzLl93YXRjaGVyJiZ0aGlzLl93YXRjaGVyLnVwZGF0ZSgpfSxlLnByb3RvdHlwZS4kZGVzdHJveT1mdW5jdGlvbigpe3ZhciBlPXRoaXM7aWYoIWUuX2lzQmVpbmdEZXN0cm95ZWQpe1l0KGUsImJlZm9yZURlc3Ryb3kiKSxlLl9pc0JlaW5nRGVzdHJveWVkPSEwO3ZhciB0PWUuJHBhcmVudDshdHx8dC5faXNCZWluZ0Rlc3Ryb3llZHx8ZS4kb3B0aW9ucy5hYnN0cmFjdHx8aCh0LiRjaGlsZHJlbixlKSxlLl93YXRjaGVyJiZlLl93YXRjaGVyLnRlYXJkb3duKCk7Zm9yKHZhciBuPWUuX3dhdGNoZXJzLmxlbmd0aDtuLS07KWUuX3dhdGNoZXJzW25dLnRlYXJkb3duKCk7ZS5fZGF0YS5fX29iX18mJmUuX2RhdGEuX19vYl9fLnZtQ291bnQtLSxlLl9pc0Rlc3Ryb3llZD0hMCxlLl9fcGF0Y2hfXyhlLl92bm9kZSxudWxsKSxZdChlLCJkZXN0cm95ZWQiKSxlLiRvZmYoKSxlLiRlbCYmKGUuJGVsLl9fdnVlX189bnVsbCksZS4kdm5vZGUmJihlLiR2bm9kZS5wYXJlbnQ9bnVsbCl9fX0od24pLGZ1bmN0aW9uKGUpe1N0KGUucHJvdG90eXBlKSxlLnByb3RvdHlwZS4kbmV4dFRpY2s9ZnVuY3Rpb24oZSl7cmV0dXJuIFllKGUsdGhpcyl9LGUucHJvdG90eXBlLl9yZW5kZXI9ZnVuY3Rpb24oKXt2YXIgZSx0PXRoaXMsbj10LiRvcHRpb25zLHI9bi5yZW5kZXIsaT1uLl9wYXJlbnRWbm9kZTtpJiYodC4kc2NvcGVkU2xvdHM9ZnQoaS5kYXRhLnNjb3BlZFNsb3RzLHQuJHNsb3RzLHQuJHNjb3BlZFNsb3RzKSksdC4kdm5vZGU9aTt0cnl7SHQ9dCxlPXIuY2FsbCh0Ll9yZW5kZXJQcm94eSx0LiRjcmVhdGVFbGVtZW50KX1jYXRjaChuKXtSZShuLHQsInJlbmRlciIpLGU9dC5fdm5vZGV9ZmluYWxseXtIdD1udWxsfXJldHVybiBBcnJheS5pc0FycmF5KGUpJiYxPT09ZS5sZW5ndGgmJihlPWVbMF0pLGUgaW5zdGFuY2VvZiBwZXx8KGU9dmUoKSksZS5wYXJlbnQ9aSxlfX0od24pO3ZhciBTbj1bU3RyaW5nLFJlZ0V4cCxBcnJheV0sVG49e0tlZXBBbGl2ZTp7bmFtZToia2VlcC1hbGl2ZSIsYWJzdHJhY3Q6ITAscHJvcHM6e2luY2x1ZGU6U24sZXhjbHVkZTpTbixtYXg6W1N0cmluZyxOdW1iZXJdfSxjcmVhdGVkOmZ1bmN0aW9uKCl7dGhpcy5jYWNoZT1PYmplY3QuY3JlYXRlKG51bGwpLHRoaXMua2V5cz1bXX0sZGVzdHJveWVkOmZ1bmN0aW9uKCl7Zm9yKHZhciBlIGluIHRoaXMuY2FjaGUpT24odGhpcy5jYWNoZSxlLHRoaXMua2V5cyl9LG1vdW50ZWQ6ZnVuY3Rpb24oKXt2YXIgZT10aGlzO3RoaXMuJHdhdGNoKCJpbmNsdWRlIixmdW5jdGlvbih0KXtBbihlLGZ1bmN0aW9uKGUpe3JldHVybiBrbih0LGUpfSl9KSx0aGlzLiR3YXRjaCgiZXhjbHVkZSIsZnVuY3Rpb24odCl7QW4oZSxmdW5jdGlvbihlKXtyZXR1cm4ha24odCxlKX0pfSl9LHJlbmRlcjpmdW5jdGlvbigpe3ZhciBlPXRoaXMuJHNsb3RzLmRlZmF1bHQsdD16dChlKSxuPXQmJnQuY29tcG9uZW50T3B0aW9ucztpZihuKXt2YXIgcj14bihuKSxpPXRoaXMuaW5jbHVkZSxvPXRoaXMuZXhjbHVkZTtpZihpJiYoIXJ8fCFrbihpLHIpKXx8byYmciYma24obyxyKSlyZXR1cm4gdDt2YXIgYT10aGlzLmNhY2hlLHM9dGhpcy5rZXlzLGM9bnVsbD09dC5rZXk\/bi5DdG9yLmNpZCsobi50YWc\/Ijo6IituLnRhZzoiIik6dC5rZXk7YVtjXT8odC5jb21wb25lbnRJbnN0YW5jZT1hW2NdLmNvbXBvbmVudEluc3RhbmNlLGgocyxjKSxzLnB1c2goYykpOihhW2NdPXQscy5wdXNoKGMpLHRoaXMubWF4JiZzLmxlbmd0aD5wYXJzZUludCh0aGlzLm1heCkmJk9uKGEsc1swXSxzLHRoaXMuX3Zub2RlKSksdC5kYXRhLmtlZXBBbGl2ZT0hMH1yZXR1cm4gdHx8ZSYmZVswXX19fTshZnVuY3Rpb24oZSl7dmFyIHQ9e2dldDpmdW5jdGlvbigpe3JldHVybiBGfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsImNvbmZpZyIsdCksZS51dGlsPXt3YXJuOmFlLGV4dGVuZDpBLG1lcmdlT3B0aW9uczpEZSxkZWZpbmVSZWFjdGl2ZTp4ZX0sZS5zZXQ9a2UsZS5kZWxldGU9QWUsZS5uZXh0VGljaz1ZZSxlLm9ic2VydmFibGU9ZnVuY3Rpb24oZSl7cmV0dXJuIENlKGUpLGV9LGUub3B0aW9ucz1PYmplY3QuY3JlYXRlKG51bGwpLE0uZm9yRWFjaChmdW5jdGlvbih0KXtlLm9wdGlvbnNbdCsicyJdPU9iamVjdC5jcmVhdGUobnVsbCl9KSxlLm9wdGlvbnMuX2Jhc2U9ZSxBKGUub3B0aW9ucy5jb21wb25lbnRzLFRuKSxmdW5jdGlvbihlKXtlLnVzZT1mdW5jdGlvbihlKXt2YXIgdD10aGlzLl9pbnN0YWxsZWRQbHVnaW5zfHwodGhpcy5faW5zdGFsbGVkUGx1Z2lucz1bXSk7aWYodC5pbmRleE9mKGUpPi0xKXJldHVybiB0aGlzO3ZhciBuPWsoYXJndW1lbnRzLDEpO3JldHVybiBuLnVuc2hpZnQodGhpcyksImZ1bmN0aW9uIj09dHlwZW9mIGUuaW5zdGFsbD9lLmluc3RhbGwuYXBwbHkoZSxuKToiZnVuY3Rpb24iPT10eXBlb2YgZSYmZS5hcHBseShudWxsLG4pLHQucHVzaChlKSx0aGlzfX0oZSksZnVuY3Rpb24oZSl7ZS5taXhpbj1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5vcHRpb25zPURlKHRoaXMub3B0aW9ucyxlKSx0aGlzfX0oZSksQ24oZSksZnVuY3Rpb24oZSl7TS5mb3JFYWNoKGZ1bmN0aW9uKHQpe2VbdF09ZnVuY3Rpb24oZSxuKXtyZXR1cm4gbj8oImNvbXBvbmVudCI9PT10JiZzKG4pJiYobi5uYW1lPW4ubmFtZXx8ZSxuPXRoaXMub3B0aW9ucy5fYmFzZS5leHRlbmQobikpLCJkaXJlY3RpdmUiPT09dCYmImZ1bmN0aW9uIj09dHlwZW9mIG4mJihuPXtiaW5kOm4sdXBkYXRlOm59KSx0aGlzLm9wdGlvbnNbdCsicyJdW2VdPW4sbik6dGhpcy5vcHRpb25zW3QrInMiXVtlXX19KX0oZSl9KHduKSxPYmplY3QuZGVmaW5lUHJvcGVydHkod24ucHJvdG90eXBlLCIkaXNTZXJ2ZXIiLHtnZXQ6dGV9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkod24ucHJvdG90eXBlLCIkc3NyQ29udGV4dCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLiR2bm9kZSYmdGhpcy4kdm5vZGUuc3NyQ29udGV4dH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkod24sIkZ1bmN0aW9uYWxSZW5kZXJDb250ZXh0Iix7dmFsdWU6VHR9KSx3bi52ZXJzaW9uPSIyLjYuMTEiO3ZhciBFbj1wKCJzdHlsZSxjbGFzcyIpLE5uPXAoImlucHV0LHRleHRhcmVhLG9wdGlvbixzZWxlY3QscHJvZ3Jlc3MiKSxqbj1mdW5jdGlvbihlLHQsbil7cmV0dXJuInZhbHVlIj09PW4mJk5uKGUpJiYiYnV0dG9uIiE9PXR8fCJzZWxlY3RlZCI9PT1uJiYib3B0aW9uIj09PWV8fCJjaGVja2VkIj09PW4mJiJpbnB1dCI9PT1lfHwibXV0ZWQiPT09biYmInZpZGVvIj09PWV9LERuPXAoImNvbnRlbnRlZGl0YWJsZSxkcmFnZ2FibGUsc3BlbGxjaGVjayIpLExuPXAoImV2ZW50cyxjYXJldCx0eXBpbmcscGxhaW50ZXh0LW9ubHkiKSxNbj1mdW5jdGlvbihlLHQpe3JldHVybiBIbih0KXx8ImZhbHNlIj09PXQ\/ImZhbHNlIjoiY29udGVudGVkaXRhYmxlIj09PWUmJkxuKHQpP3Q6InRydWUifSxJbj1wKCJhbGxvd2Z1bGxzY3JlZW4sYXN5bmMsYXV0b2ZvY3VzLGF1dG9wbGF5LGNoZWNrZWQsY29tcGFjdCxjb250cm9scyxkZWNsYXJlLGRlZmF1bHQsZGVmYXVsdGNoZWNrZWQsZGVmYXVsdG11dGVkLGRlZmF1bHRzZWxlY3RlZCxkZWZlcixkaXNhYmxlZCxlbmFibGVkLGZvcm1ub3ZhbGlkYXRlLGhpZGRlbixpbmRldGVybWluYXRlLGluZXJ0LGlzbWFwLGl0ZW1zY29wZSxsb29wLG11bHRpcGxlLG11dGVkLG5vaHJlZixub3Jlc2l6ZSxub3NoYWRlLG5vdmFsaWRhdGUsbm93cmFwLG9wZW4scGF1c2VvbmV4aXQscmVhZG9ubHkscmVxdWlyZWQscmV2ZXJzZWQsc2NvcGVkLHNlYW1sZXNzLHNlbGVjdGVkLHNvcnRhYmxlLHRyYW5zbGF0ZSx0cnVlc3BlZWQsdHlwZW11c3RtYXRjaCx2aXNpYmxlIiksRm49Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiLFBuPWZ1bmN0aW9uKGUpe3JldHVybiI6Ij09PWUuY2hhckF0KDUpJiYieGxpbmsiPT09ZS5zbGljZSgwLDUpfSxSbj1mdW5jdGlvbihlKXtyZXR1cm4gUG4oZSk\/ZS5zbGljZSg2LGUubGVuZ3RoKToiIn0sSG49ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PWV8fCExPT09ZX07ZnVuY3Rpb24gQm4oZSl7Zm9yKHZhciB0PWUuZGF0YSxyPWUsaT1lO24oaS5jb21wb25lbnRJbnN0YW5jZSk7KShpPWkuY29tcG9uZW50SW5zdGFuY2UuX3Zub2RlKSYmaS5kYXRhJiYodD1VbihpLmRhdGEsdCkpO2Zvcig7bihyPXIucGFyZW50KTspciYmci5kYXRhJiYodD1Vbih0LHIuZGF0YSkpO3JldHVybiBmdW5jdGlvbihlLHQpe2lmKG4oZSl8fG4odCkpcmV0dXJuIHpuKGUsVm4odCkpO3JldHVybiIifSh0LnN0YXRpY0NsYXNzLHQuY2xhc3MpfWZ1bmN0aW9uIFVuKGUsdCl7cmV0dXJue3N0YXRpY0NsYXNzOnpuKGUuc3RhdGljQ2xhc3MsdC5zdGF0aWNDbGFzcyksY2xhc3M6bihlLmNsYXNzKT9bZS5jbGFzcyx0LmNsYXNzXTp0LmNsYXNzfX1mdW5jdGlvbiB6bihlLHQpe3JldHVybiBlP3Q\/ZSsiICIrdDplOnR8fCIifWZ1bmN0aW9uIFZuKGUpe3JldHVybiBBcnJheS5pc0FycmF5KGUpP2Z1bmN0aW9uKGUpe2Zvcih2YXIgdCxyPSIiLGk9MCxvPWUubGVuZ3RoO2k8bztpKyspbih0PVZuKGVbaV0pKSYmIiIhPT10JiYociYmKHIrPSIgIikscis9dCk7cmV0dXJuIHJ9KGUpOm8oZSk\/ZnVuY3Rpb24oZSl7dmFyIHQ9IiI7Zm9yKHZhciBuIGluIGUpZVtuXSYmKHQmJih0Kz0iICIpLHQrPW4pO3JldHVybiB0fShlKToic3RyaW5nIj09dHlwZW9mIGU\/ZToiIn12YXIgS249e3N2ZzoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLG1hdGg6Imh0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aC9NYXRoTUwifSxKbj1wKCJodG1sLGJvZHksYmFzZSxoZWFkLGxpbmssbWV0YSxzdHlsZSx0aXRsZSxhZGRyZXNzLGFydGljbGUsYXNpZGUsZm9vdGVyLGhlYWRlcixoMSxoMixoMyxoNCxoNSxoNixoZ3JvdXAsbmF2LHNlY3Rpb24sZGl2LGRkLGRsLGR0LGZpZ2NhcHRpb24sZmlndXJlLHBpY3R1cmUsaHIsaW1nLGxpLG1haW4sb2wscCxwcmUsdWwsYSxiLGFiYnIsYmRpLGJkbyxicixjaXRlLGNvZGUsZGF0YSxkZm4sZW0saSxrYmQsbWFyayxxLHJwLHJ0LHJ0YyxydWJ5LHMsc2FtcCxzbWFsbCxzcGFuLHN0cm9uZyxzdWIsc3VwLHRpbWUsdSx2YXIsd2JyLGFyZWEsYXVkaW8sbWFwLHRyYWNrLHZpZGVvLGVtYmVkLG9iamVjdCxwYXJhbSxzb3VyY2UsY2FudmFzLHNjcmlwdCxub3NjcmlwdCxkZWwsaW5zLGNhcHRpb24sY29sLGNvbGdyb3VwLHRhYmxlLHRoZWFkLHRib2R5LHRkLHRoLHRyLGJ1dHRvbixkYXRhbGlzdCxmaWVsZHNldCxmb3JtLGlucHV0LGxhYmVsLGxlZ2VuZCxtZXRlcixvcHRncm91cCxvcHRpb24sb3V0cHV0LHByb2dyZXNzLHNlbGVjdCx0ZXh0YXJlYSxkZXRhaWxzLGRpYWxvZyxtZW51LG1lbnVpdGVtLHN1bW1hcnksY29udGVudCxlbGVtZW50LHNoYWRvdyx0ZW1wbGF0ZSxibG9ja3F1b3RlLGlmcmFtZSx0Zm9vdCIpLHFuPXAoInN2ZyxhbmltYXRlLGNpcmNsZSxjbGlwcGF0aCxjdXJzb3IsZGVmcyxkZXNjLGVsbGlwc2UsZmlsdGVyLGZvbnQtZmFjZSxmb3JlaWduT2JqZWN0LGcsZ2x5cGgsaW1hZ2UsbGluZSxtYXJrZXIsbWFzayxtaXNzaW5nLWdseXBoLHBhdGgscGF0dGVybixwb2x5Z29uLHBvbHlsaW5lLHJlY3Qsc3dpdGNoLHN5bWJvbCx0ZXh0LHRleHRwYXRoLHRzcGFuLHVzZSx2aWV3IiwhMCksV249ZnVuY3Rpb24oZSl7cmV0dXJuIEpuKGUpfHxxbihlKX07ZnVuY3Rpb24gWm4oZSl7cmV0dXJuIHFuKGUpPyJzdmciOiJtYXRoIj09PWU\/Im1hdGgiOnZvaWQgMH12YXIgR249T2JqZWN0LmNyZWF0ZShudWxsKTt2YXIgWG49cCgidGV4dCxudW1iZXIscGFzc3dvcmQsc2VhcmNoLGVtYWlsLHRlbCx1cmwiKTtmdW5jdGlvbiBZbihlKXtpZigic3RyaW5nIj09dHlwZW9mIGUpe3ZhciB0PWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoZSk7cmV0dXJuIHR8fGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpfXJldHVybiBlfXZhciBRbj1PYmplY3QuZnJlZXplKHtjcmVhdGVFbGVtZW50OmZ1bmN0aW9uKGUsdCl7dmFyIG49ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChlKTtyZXR1cm4ic2VsZWN0IiE9PWU\/bjoodC5kYXRhJiZ0LmRhdGEuYXR0cnMmJnZvaWQgMCE9PXQuZGF0YS5hdHRycy5tdWx0aXBsZSYmbi5zZXRBdHRyaWJ1dGUoIm11bHRpcGxlIiwibXVsdGlwbGUiKSxuKX0sY3JlYXRlRWxlbWVudE5TOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhLbltlXSx0KX0sY3JlYXRlVGV4dE5vZGU6ZnVuY3Rpb24oZSl7cmV0dXJuIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGUpfSxjcmVhdGVDb21tZW50OmZ1bmN0aW9uKGUpe3JldHVybiBkb2N1bWVudC5jcmVhdGVDb21tZW50KGUpfSxpbnNlcnRCZWZvcmU6ZnVuY3Rpb24oZSx0LG4pe2UuaW5zZXJ0QmVmb3JlKHQsbil9LHJlbW92ZUNoaWxkOmZ1bmN0aW9uKGUsdCl7ZS5yZW1vdmVDaGlsZCh0KX0sYXBwZW5kQ2hpbGQ6ZnVuY3Rpb24oZSx0KXtlLmFwcGVuZENoaWxkKHQpfSxwYXJlbnROb2RlOmZ1bmN0aW9uKGUpe3JldHVybiBlLnBhcmVudE5vZGV9LG5leHRTaWJsaW5nOmZ1bmN0aW9uKGUpe3JldHVybiBlLm5leHRTaWJsaW5nfSx0YWdOYW1lOmZ1bmN0aW9uKGUpe3JldHVybiBlLnRhZ05hbWV9LHNldFRleHRDb250ZW50OmZ1bmN0aW9uKGUsdCl7ZS50ZXh0Q29udGVudD10fSxzZXRTdHlsZVNjb3BlOmZ1bmN0aW9uKGUsdCl7ZS5zZXRBdHRyaWJ1dGUodCwiIil9fSksZXI9e2NyZWF0ZTpmdW5jdGlvbihlLHQpe3RyKHQpfSx1cGRhdGU6ZnVuY3Rpb24oZSx0KXtlLmRhdGEucmVmIT09dC5kYXRhLnJlZiYmKHRyKGUsITApLHRyKHQpKX0sZGVzdHJveTpmdW5jdGlvbihlKXt0cihlLCEwKX19O2Z1bmN0aW9uIHRyKGUsdCl7dmFyIHI9ZS5kYXRhLnJlZjtpZihuKHIpKXt2YXIgaT1lLmNvbnRleHQsbz1lLmNvbXBvbmVudEluc3RhbmNlfHxlLmVsbSxhPWkuJHJlZnM7dD9BcnJheS5pc0FycmF5KGFbcl0pP2goYVtyXSxvKTphW3JdPT09byYmKGFbcl09dm9pZCAwKTplLmRhdGEucmVmSW5Gb3I\/QXJyYXkuaXNBcnJheShhW3JdKT9hW3JdLmluZGV4T2Yobyk8MCYmYVtyXS5wdXNoKG8pOmFbcl09W29dOmFbcl09b319dmFyIG5yPW5ldyBwZSgiIix7fSxbXSkscnI9WyJjcmVhdGUiLCJhY3RpdmF0ZSIsInVwZGF0ZSIsInJlbW92ZSIsImRlc3Ryb3kiXTtmdW5jdGlvbiBpcihlLGkpe3JldHVybiBlLmtleT09PWkua2V5JiYoZS50YWc9PT1pLnRhZyYmZS5pc0NvbW1lbnQ9PT1pLmlzQ29tbWVudCYmbihlLmRhdGEpPT09bihpLmRhdGEpJiZmdW5jdGlvbihlLHQpe2lmKCJpbnB1dCIhPT1lLnRhZylyZXR1cm4hMDt2YXIgcixpPW4ocj1lLmRhdGEpJiZuKHI9ci5hdHRycykmJnIudHlwZSxvPW4ocj10LmRhdGEpJiZuKHI9ci5hdHRycykmJnIudHlwZTtyZXR1cm4gaT09PW98fFhuKGkpJiZYbihvKX0oZSxpKXx8cihlLmlzQXN5bmNQbGFjZWhvbGRlcikmJmUuYXN5bmNGYWN0b3J5PT09aS5hc3luY0ZhY3RvcnkmJnQoaS5hc3luY0ZhY3RvcnkuZXJyb3IpKX1mdW5jdGlvbiBvcihlLHQscil7dmFyIGksbyxhPXt9O2ZvcihpPXQ7aTw9cjsrK2kpbihvPWVbaV0ua2V5KSYmKGFbb109aSk7cmV0dXJuIGF9dmFyIGFyPXtjcmVhdGU6c3IsdXBkYXRlOnNyLGRlc3Ryb3k6ZnVuY3Rpb24oZSl7c3IoZSxucil9fTtmdW5jdGlvbiBzcihlLHQpeyhlLmRhdGEuZGlyZWN0aXZlc3x8dC5kYXRhLmRpcmVjdGl2ZXMpJiZmdW5jdGlvbihlLHQpe3ZhciBuLHIsaSxvPWU9PT1ucixhPXQ9PT1ucixzPXVyKGUuZGF0YS5kaXJlY3RpdmVzLGUuY29udGV4dCksYz11cih0LmRhdGEuZGlyZWN0aXZlcyx0LmNvbnRleHQpLHU9W10sbD1bXTtmb3IobiBpbiBjKXI9c1tuXSxpPWNbbl0scj8oaS5vbGRWYWx1ZT1yLnZhbHVlLGkub2xkQXJnPXIuYXJnLGZyKGksInVwZGF0ZSIsdCxlKSxpLmRlZiYmaS5kZWYuY29tcG9uZW50VXBkYXRlZCYmbC5wdXNoKGkpKTooZnIoaSwiYmluZCIsdCxlKSxpLmRlZiYmaS5kZWYuaW5zZXJ0ZWQmJnUucHVzaChpKSk7aWYodS5sZW5ndGgpe3ZhciBmPWZ1bmN0aW9uKCl7Zm9yKHZhciBuPTA7bjx1Lmxlbmd0aDtuKyspZnIodVtuXSwiaW5zZXJ0ZWQiLHQsZSl9O28\/aXQodCwiaW5zZXJ0IixmKTpmKCl9bC5sZW5ndGgmJml0KHQsInBvc3RwYXRjaCIsZnVuY3Rpb24oKXtmb3IodmFyIG49MDtuPGwubGVuZ3RoO24rKylmcihsW25dLCJjb21wb25lbnRVcGRhdGVkIix0LGUpfSk7aWYoIW8pZm9yKG4gaW4gcyljW25dfHxmcihzW25dLCJ1bmJpbmQiLGUsZSxhKX0oZSx0KX12YXIgY3I9T2JqZWN0LmNyZWF0ZShudWxsKTtmdW5jdGlvbiB1cihlLHQpe3ZhciBuLHIsaT1PYmplY3QuY3JlYXRlKG51bGwpO2lmKCFlKXJldHVybiBpO2ZvcihuPTA7bjxlLmxlbmd0aDtuKyspKHI9ZVtuXSkubW9kaWZpZXJzfHwoci5tb2RpZmllcnM9Y3IpLGlbbHIocildPXIsci5kZWY9TGUodC4kb3B0aW9ucywiZGlyZWN0aXZlcyIsci5uYW1lKTtyZXR1cm4gaX1mdW5jdGlvbiBscihlKXtyZXR1cm4gZS5yYXdOYW1lfHxlLm5hbWUrIi4iK09iamVjdC5rZXlzKGUubW9kaWZpZXJzfHx7fSkuam9pbigiLiIpfWZ1bmN0aW9uIGZyKGUsdCxuLHIsaSl7dmFyIG89ZS5kZWYmJmUuZGVmW3RdO2lmKG8pdHJ5e28obi5lbG0sZSxuLHIsaSl9Y2F0Y2gocil7UmUocixuLmNvbnRleHQsImRpcmVjdGl2ZSAiK2UubmFtZSsiICIrdCsiIGhvb2siKX19dmFyIHByPVtlcixhcl07ZnVuY3Rpb24gZHIoZSxyKXt2YXIgaT1yLmNvbXBvbmVudE9wdGlvbnM7aWYoIShuKGkpJiYhMT09PWkuQ3Rvci5vcHRpb25zLmluaGVyaXRBdHRyc3x8dChlLmRhdGEuYXR0cnMpJiZ0KHIuZGF0YS5hdHRycykpKXt2YXIgbyxhLHM9ci5lbG0sYz1lLmRhdGEuYXR0cnN8fHt9LHU9ci5kYXRhLmF0dHJzfHx7fTtmb3IobyBpbiBuKHUuX19vYl9fKSYmKHU9ci5kYXRhLmF0dHJzPUEoe30sdSkpLHUpYT11W29dLGNbb10hPT1hJiZ2cihzLG8sYSk7Zm9yKG8gaW4ocXx8WikmJnUudmFsdWUhPT1jLnZhbHVlJiZ2cihzLCJ2YWx1ZSIsdS52YWx1ZSksYyl0KHVbb10pJiYoUG4obyk\/cy5yZW1vdmVBdHRyaWJ1dGVOUyhGbixSbihvKSk6RG4obyl8fHMucmVtb3ZlQXR0cmlidXRlKG8pKX19ZnVuY3Rpb24gdnIoZSx0LG4pe2UudGFnTmFtZS5pbmRleE9mKCItIik+LTE\/aHIoZSx0LG4pOkluKHQpP0huKG4pP2UucmVtb3ZlQXR0cmlidXRlKHQpOihuPSJhbGxvd2Z1bGxzY3JlZW4iPT09dCYmIkVNQkVEIj09PWUudGFnTmFtZT8idHJ1ZSI6dCxlLnNldEF0dHJpYnV0ZSh0LG4pKTpEbih0KT9lLnNldEF0dHJpYnV0ZSh0LE1uKHQsbikpOlBuKHQpP0huKG4pP2UucmVtb3ZlQXR0cmlidXRlTlMoRm4sUm4odCkpOmUuc2V0QXR0cmlidXRlTlMoRm4sdCxuKTpocihlLHQsbil9ZnVuY3Rpb24gaHIoZSx0LG4pe2lmKEhuKG4pKWUucmVtb3ZlQXR0cmlidXRlKHQpO2Vsc2V7aWYocSYmIVcmJiJURVhUQVJFQSI9PT1lLnRhZ05hbWUmJiJwbGFjZWhvbGRlciI9PT10JiYiIiE9PW4mJiFlLl9faWVwaCl7dmFyIHI9ZnVuY3Rpb24odCl7dC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKSxlLnJlbW92ZUV2ZW50TGlzdGVuZXIoImlucHV0IixyKX07ZS5hZGRFdmVudExpc3RlbmVyKCJpbnB1dCIsciksZS5fX2llcGg9ITB9ZS5zZXRBdHRyaWJ1dGUodCxuKX19dmFyIG1yPXtjcmVhdGU6ZHIsdXBkYXRlOmRyfTtmdW5jdGlvbiB5cihlLHIpe3ZhciBpPXIuZWxtLG89ci5kYXRhLGE9ZS5kYXRhO2lmKCEodChvLnN0YXRpY0NsYXNzKSYmdChvLmNsYXNzKSYmKHQoYSl8fHQoYS5zdGF0aWNDbGFzcykmJnQoYS5jbGFzcykpKSl7dmFyIHM9Qm4ociksYz1pLl90cmFuc2l0aW9uQ2xhc3NlcztuKGMpJiYocz16bihzLFZuKGMpKSkscyE9PWkuX3ByZXZDbGFzcyYmKGkuc2V0QXR0cmlidXRlKCJjbGFzcyIscyksaS5fcHJldkNsYXNzPXMpfX12YXIgZ3IsX3IsYnIsJHIsd3IsQ3IseHI9e2NyZWF0ZTp5cix1cGRhdGU6eXJ9LGtyPS9bXHcpLitcLV8kXF1dLztmdW5jdGlvbiBBcihlKXt2YXIgdCxuLHIsaSxvLGE9ITEscz0hMSxjPSExLHU9ITEsbD0wLGY9MCxwPTAsZD0wO2ZvcihyPTA7cjxlLmxlbmd0aDtyKyspaWYobj10LHQ9ZS5jaGFyQ29kZUF0KHIpLGEpMzk9PT10JiY5MiE9PW4mJihhPSExKTtlbHNlIGlmKHMpMzQ9PT10JiY5MiE9PW4mJihzPSExKTtlbHNlIGlmKGMpOTY9PT10JiY5MiE9PW4mJihjPSExKTtlbHNlIGlmKHUpNDc9PT10JiY5MiE9PW4mJih1PSExKTtlbHNlIGlmKDEyNCE9PXR8fDEyND09PWUuY2hhckNvZGVBdChyKzEpfHwxMjQ9PT1lLmNoYXJDb2RlQXQoci0xKXx8bHx8Znx8cCl7c3dpdGNoKHQpe2Nhc2UgMzQ6cz0hMDticmVhaztjYXNlIDM5OmE9ITA7YnJlYWs7Y2FzZSA5NjpjPSEwO2JyZWFrO2Nhc2UgNDA6cCsrO2JyZWFrO2Nhc2UgNDE6cC0tO2JyZWFrO2Nhc2UgOTE6ZisrO2JyZWFrO2Nhc2UgOTM6Zi0tO2JyZWFrO2Nhc2UgMTIzOmwrKzticmVhaztjYXNlIDEyNTpsLS19aWYoNDc9PT10KXtmb3IodmFyIHY9ci0xLGg9dm9pZCAwO3Y+PTAmJiIgIj09PShoPWUuY2hhckF0KHYpKTt2LS0pO2gmJmtyLnRlc3QoaCl8fCh1PSEwKX19ZWxzZSB2b2lkIDA9PT1pPyhkPXIrMSxpPWUuc2xpY2UoMCxyKS50cmltKCkpOm0oKTtmdW5jdGlvbiBtKCl7KG98fChvPVtdKSkucHVzaChlLnNsaWNlKGQscikudHJpbSgpKSxkPXIrMX1pZih2b2lkIDA9PT1pP2k9ZS5zbGljZSgwLHIpLnRyaW0oKTowIT09ZCYmbSgpLG8pZm9yKHI9MDtyPG8ubGVuZ3RoO3IrKylpPU9yKGksb1tyXSk7cmV0dXJuIGl9ZnVuY3Rpb24gT3IoZSx0KXt2YXIgbj10LmluZGV4T2YoIigiKTtpZihuPDApcmV0dXJuJ19mKCInK3QrJyIpKCcrZSsiKSI7dmFyIHI9dC5zbGljZSgwLG4pLGk9dC5zbGljZShuKzEpO3JldHVybidfZigiJytyKyciKSgnK2UrKCIpIiE9PWk\/IiwiK2k6aSl9ZnVuY3Rpb24gU3IoZSx0KXtjb25zb2xlLmVycm9yKCJbVnVlIGNvbXBpbGVyXTogIitlKX1mdW5jdGlvbiBUcihlLHQpe3JldHVybiBlP2UubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBlW3RdfSkuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBlfSk6W119ZnVuY3Rpb24gRXIoZSx0LG4scixpKXsoZS5wcm9wc3x8KGUucHJvcHM9W10pKS5wdXNoKFJyKHtuYW1lOnQsdmFsdWU6bixkeW5hbWljOml9LHIpKSxlLnBsYWluPSExfWZ1bmN0aW9uIE5yKGUsdCxuLHIsaSl7KGk\/ZS5keW5hbWljQXR0cnN8fChlLmR5bmFtaWNBdHRycz1bXSk6ZS5hdHRyc3x8KGUuYXR0cnM9W10pKS5wdXNoKFJyKHtuYW1lOnQsdmFsdWU6bixkeW5hbWljOml9LHIpKSxlLnBsYWluPSExfWZ1bmN0aW9uIGpyKGUsdCxuLHIpe2UuYXR0cnNNYXBbdF09bixlLmF0dHJzTGlzdC5wdXNoKFJyKHtuYW1lOnQsdmFsdWU6bn0scikpfWZ1bmN0aW9uIERyKGUsdCxuLHIsaSxvLGEscyl7KGUuZGlyZWN0aXZlc3x8KGUuZGlyZWN0aXZlcz1bXSkpLnB1c2goUnIoe25hbWU6dCxyYXdOYW1lOm4sdmFsdWU6cixhcmc6aSxpc0R5bmFtaWNBcmc6byxtb2RpZmllcnM6YX0scykpLGUucGxhaW49ITF9ZnVuY3Rpb24gTHIoZSx0LG4pe3JldHVybiBuPyJfcCgiK3QrJywiJytlKyciKSc6ZSt0fWZ1bmN0aW9uIE1yKHQsbixyLGksbyxhLHMsYyl7dmFyIHU7KGk9aXx8ZSkucmlnaHQ\/Yz9uPSIoIituKyIpPT09J2NsaWNrJz8nY29udGV4dG1lbnUnOigiK24rIikiOiJjbGljayI9PT1uJiYobj0iY29udGV4dG1lbnUiLGRlbGV0ZSBpLnJpZ2h0KTppLm1pZGRsZSYmKGM\/bj0iKCIrbisiKT09PSdjbGljayc\/J21vdXNldXAnOigiK24rIikiOiJjbGljayI9PT1uJiYobj0ibW91c2V1cCIpKSxpLmNhcHR1cmUmJihkZWxldGUgaS5jYXB0dXJlLG49THIoIiEiLG4sYykpLGkub25jZSYmKGRlbGV0ZSBpLm9uY2Usbj1McigifiIsbixjKSksaS5wYXNzaXZlJiYoZGVsZXRlIGkucGFzc2l2ZSxuPUxyKCImIixuLGMpKSxpLm5hdGl2ZT8oZGVsZXRlIGkubmF0aXZlLHU9dC5uYXRpdmVFdmVudHN8fCh0Lm5hdGl2ZUV2ZW50cz17fSkpOnU9dC5ldmVudHN8fCh0LmV2ZW50cz17fSk7dmFyIGw9UnIoe3ZhbHVlOnIudHJpbSgpLGR5bmFtaWM6Y30scyk7aSE9PWUmJihsLm1vZGlmaWVycz1pKTt2YXIgZj11W25dO0FycmF5LmlzQXJyYXkoZik\/bz9mLnVuc2hpZnQobCk6Zi5wdXNoKGwpOnVbbl09Zj9vP1tsLGZdOltmLGxdOmwsdC5wbGFpbj0hMX1mdW5jdGlvbiBJcihlLHQsbil7dmFyIHI9RnIoZSwiOiIrdCl8fEZyKGUsInYtYmluZDoiK3QpO2lmKG51bGwhPXIpcmV0dXJuIEFyKHIpO2lmKCExIT09bil7dmFyIGk9RnIoZSx0KTtpZihudWxsIT1pKXJldHVybiBKU09OLnN0cmluZ2lmeShpKX19ZnVuY3Rpb24gRnIoZSx0LG4pe3ZhciByO2lmKG51bGwhPShyPWUuYXR0cnNNYXBbdF0pKWZvcih2YXIgaT1lLmF0dHJzTGlzdCxvPTAsYT1pLmxlbmd0aDtvPGE7bysrKWlmKGlbb10ubmFtZT09PXQpe2kuc3BsaWNlKG8sMSk7YnJlYWt9cmV0dXJuIG4mJmRlbGV0ZSBlLmF0dHJzTWFwW3RdLHJ9ZnVuY3Rpb24gUHIoZSx0KXtmb3IodmFyIG49ZS5hdHRyc0xpc3Qscj0wLGk9bi5sZW5ndGg7cjxpO3IrKyl7dmFyIG89bltyXTtpZih0LnRlc3Qoby5uYW1lKSlyZXR1cm4gbi5zcGxpY2UociwxKSxvfX1mdW5jdGlvbiBScihlLHQpe3JldHVybiB0JiYobnVsbCE9dC5zdGFydCYmKGUuc3RhcnQ9dC5zdGFydCksbnVsbCE9dC5lbmQmJihlLmVuZD10LmVuZCkpLGV9ZnVuY3Rpb24gSHIoZSx0LG4pe3ZhciByPW58fHt9LGk9ci5udW1iZXIsbz0iJCR2IjtyLnRyaW0mJihvPSIodHlwZW9mICQkdiA9PT0gJ3N0cmluZyc\/ICQkdi50cmltKCk6ICQkdikiKSxpJiYobz0iX24oIitvKyIpIik7dmFyIGE9QnIodCxvKTtlLm1vZGVsPXt2YWx1ZToiKCIrdCsiKSIsZXhwcmVzc2lvbjpKU09OLnN0cmluZ2lmeSh0KSxjYWxsYmFjazoiZnVuY3Rpb24gKCQkdikgeyIrYSsifSJ9fWZ1bmN0aW9uIEJyKGUsdCl7dmFyIG49ZnVuY3Rpb24oZSl7aWYoZT1lLnRyaW0oKSxncj1lLmxlbmd0aCxlLmluZGV4T2YoIlsiKTwwfHxlLmxhc3RJbmRleE9mKCJdIik8Z3ItMSlyZXR1cm4oJHI9ZS5sYXN0SW5kZXhPZigiLiIpKT4tMT97ZXhwOmUuc2xpY2UoMCwkciksa2V5OiciJytlLnNsaWNlKCRyKzEpKyciJ306e2V4cDplLGtleTpudWxsfTtfcj1lLCRyPXdyPUNyPTA7Zm9yKDshenIoKTspVnIoYnI9VXIoKSk\/SnIoYnIpOjkxPT09YnImJktyKGJyKTtyZXR1cm57ZXhwOmUuc2xpY2UoMCx3ciksa2V5OmUuc2xpY2Uod3IrMSxDcil9fShlKTtyZXR1cm4gbnVsbD09PW4ua2V5P2UrIj0iK3Q6IiRzZXQoIituLmV4cCsiLCAiK24ua2V5KyIsICIrdCsiKSJ9ZnVuY3Rpb24gVXIoKXtyZXR1cm4gX3IuY2hhckNvZGVBdCgrKyRyKX1mdW5jdGlvbiB6cigpe3JldHVybiAkcj49Z3J9ZnVuY3Rpb24gVnIoZSl7cmV0dXJuIDM0PT09ZXx8Mzk9PT1lfWZ1bmN0aW9uIEtyKGUpe3ZhciB0PTE7Zm9yKHdyPSRyOyF6cigpOylpZihWcihlPVVyKCkpKUpyKGUpO2Vsc2UgaWYoOTE9PT1lJiZ0KyssOTM9PT1lJiZ0LS0sMD09PXQpe0NyPSRyO2JyZWFrfX1mdW5jdGlvbiBKcihlKXtmb3IodmFyIHQ9ZTshenIoKSYmKGU9VXIoKSkhPT10Oyk7fXZhciBxcixXcj0iX19yIixacj0iX19jIjtmdW5jdGlvbiBHcihlLHQsbil7dmFyIHI9cXI7cmV0dXJuIGZ1bmN0aW9uIGkoKXtudWxsIT09dC5hcHBseShudWxsLGFyZ3VtZW50cykmJlFyKGUsaSxuLHIpfX12YXIgWHI9VmUmJiEoWCYmTnVtYmVyKFhbMV0pPD01Myk7ZnVuY3Rpb24gWXIoZSx0LG4scil7aWYoWHIpe3ZhciBpPWFuLG89dDt0PW8uX3dyYXBwZXI9ZnVuY3Rpb24oZSl7aWYoZS50YXJnZXQ9PT1lLmN1cnJlbnRUYXJnZXR8fGUudGltZVN0YW1wPj1pfHxlLnRpbWVTdGFtcDw9MHx8ZS50YXJnZXQub3duZXJEb2N1bWVudCE9PWRvY3VtZW50KXJldHVybiBvLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19cXIuYWRkRXZlbnRMaXN0ZW5lcihlLHQsUT97Y2FwdHVyZTpuLHBhc3NpdmU6cn06bil9ZnVuY3Rpb24gUXIoZSx0LG4scil7KHJ8fHFyKS5yZW1vdmVFdmVudExpc3RlbmVyKGUsdC5fd3JhcHBlcnx8dCxuKX1mdW5jdGlvbiBlaShlLHIpe2lmKCF0KGUuZGF0YS5vbil8fCF0KHIuZGF0YS5vbikpe3ZhciBpPXIuZGF0YS5vbnx8e30sbz1lLmRhdGEub258fHt9O3FyPXIuZWxtLGZ1bmN0aW9uKGUpe2lmKG4oZVtXcl0pKXt2YXIgdD1xPyJjaGFuZ2UiOiJpbnB1dCI7ZVt0XT1bXS5jb25jYXQoZVtXcl0sZVt0XXx8W10pLGRlbGV0ZSBlW1dyXX1uKGVbWnJdKSYmKGUuY2hhbmdlPVtdLmNvbmNhdChlW1pyXSxlLmNoYW5nZXx8W10pLGRlbGV0ZSBlW1pyXSl9KGkpLHJ0KGksbyxZcixRcixHcixyLmNvbnRleHQpLHFyPXZvaWQgMH19dmFyIHRpLG5pPXtjcmVhdGU6ZWksdXBkYXRlOmVpfTtmdW5jdGlvbiByaShlLHIpe2lmKCF0KGUuZGF0YS5kb21Qcm9wcyl8fCF0KHIuZGF0YS5kb21Qcm9wcykpe3ZhciBpLG8sYT1yLmVsbSxzPWUuZGF0YS5kb21Qcm9wc3x8e30sYz1yLmRhdGEuZG9tUHJvcHN8fHt9O2ZvcihpIGluIG4oYy5fX29iX18pJiYoYz1yLmRhdGEuZG9tUHJvcHM9QSh7fSxjKSkscylpIGluIGN8fChhW2ldPSIiKTtmb3IoaSBpbiBjKXtpZihvPWNbaV0sInRleHRDb250ZW50Ij09PWl8fCJpbm5lckhUTUwiPT09aSl7aWYoci5jaGlsZHJlbiYmKHIuY2hpbGRyZW4ubGVuZ3RoPTApLG89PT1zW2ldKWNvbnRpbnVlOzE9PT1hLmNoaWxkTm9kZXMubGVuZ3RoJiZhLnJlbW92ZUNoaWxkKGEuY2hpbGROb2Rlc1swXSl9aWYoInZhbHVlIj09PWkmJiJQUk9HUkVTUyIhPT1hLnRhZ05hbWUpe2EuX3ZhbHVlPW87dmFyIHU9dChvKT8iIjpTdHJpbmcobyk7aWkoYSx1KSYmKGEudmFsdWU9dSl9ZWxzZSBpZigiaW5uZXJIVE1MIj09PWkmJnFuKGEudGFnTmFtZSkmJnQoYS5pbm5lckhUTUwpKXsodGk9dGl8fGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpKS5pbm5lckhUTUw9Ijxzdmc+IitvKyI8L3N2Zz4iO2Zvcih2YXIgbD10aS5maXJzdENoaWxkO2EuZmlyc3RDaGlsZDspYS5yZW1vdmVDaGlsZChhLmZpcnN0Q2hpbGQpO2Zvcig7bC5maXJzdENoaWxkOylhLmFwcGVuZENoaWxkKGwuZmlyc3RDaGlsZCl9ZWxzZSBpZihvIT09c1tpXSl0cnl7YVtpXT1vfWNhdGNoKGUpe319fX1mdW5jdGlvbiBpaShlLHQpe3JldHVybiFlLmNvbXBvc2luZyYmKCJPUFRJT04iPT09ZS50YWdOYW1lfHxmdW5jdGlvbihlLHQpe3ZhciBuPSEwO3RyeXtuPWRvY3VtZW50LmFjdGl2ZUVsZW1lbnQhPT1lfWNhdGNoKGUpe31yZXR1cm4gbiYmZS52YWx1ZSE9PXR9KGUsdCl8fGZ1bmN0aW9uKGUsdCl7dmFyIHI9ZS52YWx1ZSxpPWUuX3ZNb2RpZmllcnM7aWYobihpKSl7aWYoaS5udW1iZXIpcmV0dXJuIGYocikhPT1mKHQpO2lmKGkudHJpbSlyZXR1cm4gci50cmltKCkhPT10LnRyaW0oKX1yZXR1cm4gciE9PXR9KGUsdCkpfXZhciBvaT17Y3JlYXRlOnJpLHVwZGF0ZTpyaX0sYWk9ZyhmdW5jdGlvbihlKXt2YXIgdD17fSxuPS86KC4rKS87cmV0dXJuIGUuc3BsaXQoLzsoPyFbXihdKlwpKS9nKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe2lmKGUpe3ZhciByPWUuc3BsaXQobik7ci5sZW5ndGg+MSYmKHRbclswXS50cmltKCldPXJbMV0udHJpbSgpKX19KSx0fSk7ZnVuY3Rpb24gc2koZSl7dmFyIHQ9Y2koZS5zdHlsZSk7cmV0dXJuIGUuc3RhdGljU3R5bGU\/QShlLnN0YXRpY1N0eWxlLHQpOnR9ZnVuY3Rpb24gY2koZSl7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSk\/TyhlKToic3RyaW5nIj09dHlwZW9mIGU\/YWkoZSk6ZX12YXIgdWksbGk9L14tLS8sZmk9L1xzKiFpbXBvcnRhbnQkLyxwaT1mdW5jdGlvbihlLHQsbil7aWYobGkudGVzdCh0KSllLnN0eWxlLnNldFByb3BlcnR5KHQsbik7ZWxzZSBpZihmaS50ZXN0KG4pKWUuc3R5bGUuc2V0UHJvcGVydHkoQyh0KSxuLnJlcGxhY2UoZmksIiIpLCJpbXBvcnRhbnQiKTtlbHNle3ZhciByPXZpKHQpO2lmKEFycmF5LmlzQXJyYXkobikpZm9yKHZhciBpPTAsbz1uLmxlbmd0aDtpPG87aSsrKWUuc3R5bGVbcl09bltpXTtlbHNlIGUuc3R5bGVbcl09bn19LGRpPVsiV2Via2l0IiwiTW96IiwibXMiXSx2aT1nKGZ1bmN0aW9uKGUpe2lmKHVpPXVpfHxkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKS5zdHlsZSwiZmlsdGVyIiE9PShlPWIoZSkpJiZlIGluIHVpKXJldHVybiBlO2Zvcih2YXIgdD1lLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpK2Uuc2xpY2UoMSksbj0wO248ZGkubGVuZ3RoO24rKyl7dmFyIHI9ZGlbbl0rdDtpZihyIGluIHVpKXJldHVybiByfX0pO2Z1bmN0aW9uIGhpKGUscil7dmFyIGk9ci5kYXRhLG89ZS5kYXRhO2lmKCEodChpLnN0YXRpY1N0eWxlKSYmdChpLnN0eWxlKSYmdChvLnN0YXRpY1N0eWxlKSYmdChvLnN0eWxlKSkpe3ZhciBhLHMsYz1yLmVsbSx1PW8uc3RhdGljU3R5bGUsbD1vLm5vcm1hbGl6ZWRTdHlsZXx8by5zdHlsZXx8e30sZj11fHxsLHA9Y2koci5kYXRhLnN0eWxlKXx8e307ci5kYXRhLm5vcm1hbGl6ZWRTdHlsZT1uKHAuX19vYl9fKT9BKHt9LHApOnA7dmFyIGQ9ZnVuY3Rpb24oZSx0KXt2YXIgbixyPXt9O2lmKHQpZm9yKHZhciBpPWU7aS5jb21wb25lbnRJbnN0YW5jZTspKGk9aS5jb21wb25lbnRJbnN0YW5jZS5fdm5vZGUpJiZpLmRhdGEmJihuPXNpKGkuZGF0YSkpJiZBKHIsbik7KG49c2koZS5kYXRhKSkmJkEocixuKTtmb3IodmFyIG89ZTtvPW8ucGFyZW50OylvLmRhdGEmJihuPXNpKG8uZGF0YSkpJiZBKHIsbik7cmV0dXJuIHJ9KHIsITApO2ZvcihzIGluIGYpdChkW3NdKSYmcGkoYyxzLCIiKTtmb3IocyBpbiBkKShhPWRbc10pIT09ZltzXSYmcGkoYyxzLG51bGw9PWE\/IiI6YSl9fXZhciBtaT17Y3JlYXRlOmhpLHVwZGF0ZTpoaX0seWk9L1xzKy87ZnVuY3Rpb24gZ2koZSx0KXtpZih0JiYodD10LnRyaW0oKSkpaWYoZS5jbGFzc0xpc3QpdC5pbmRleE9mKCIgIik+LTE\/dC5zcGxpdCh5aSkuZm9yRWFjaChmdW5jdGlvbih0KXtyZXR1cm4gZS5jbGFzc0xpc3QuYWRkKHQpfSk6ZS5jbGFzc0xpc3QuYWRkKHQpO2Vsc2V7dmFyIG49IiAiKyhlLmdldEF0dHJpYnV0ZSgiY2xhc3MiKXx8IiIpKyIgIjtuLmluZGV4T2YoIiAiK3QrIiAiKTwwJiZlLnNldEF0dHJpYnV0ZSgiY2xhc3MiLChuK3QpLnRyaW0oKSl9fWZ1bmN0aW9uIF9pKGUsdCl7aWYodCYmKHQ9dC50cmltKCkpKWlmKGUuY2xhc3NMaXN0KXQuaW5kZXhPZigiICIpPi0xP3Quc3BsaXQoeWkpLmZvckVhY2goZnVuY3Rpb24odCl7cmV0dXJuIGUuY2xhc3NMaXN0LnJlbW92ZSh0KX0pOmUuY2xhc3NMaXN0LnJlbW92ZSh0KSxlLmNsYXNzTGlzdC5sZW5ndGh8fGUucmVtb3ZlQXR0cmlidXRlKCJjbGFzcyIpO2Vsc2V7Zm9yKHZhciBuPSIgIisoZS5nZXRBdHRyaWJ1dGUoImNsYXNzIil8fCIiKSsiICIscj0iICIrdCsiICI7bi5pbmRleE9mKHIpPj0wOyluPW4ucmVwbGFjZShyLCIgIik7KG49bi50cmltKCkpP2Uuc2V0QXR0cmlidXRlKCJjbGFzcyIsbik6ZS5yZW1vdmVBdHRyaWJ1dGUoImNsYXNzIil9fWZ1bmN0aW9uIGJpKGUpe2lmKGUpe2lmKCJvYmplY3QiPT10eXBlb2YgZSl7dmFyIHQ9e307cmV0dXJuITEhPT1lLmNzcyYmQSh0LCRpKGUubmFtZXx8InYiKSksQSh0LGUpLHR9cmV0dXJuInN0cmluZyI9PXR5cGVvZiBlPyRpKGUpOnZvaWQgMH19dmFyICRpPWcoZnVuY3Rpb24oZSl7cmV0dXJue2VudGVyQ2xhc3M6ZSsiLWVudGVyIixlbnRlclRvQ2xhc3M6ZSsiLWVudGVyLXRvIixlbnRlckFjdGl2ZUNsYXNzOmUrIi1lbnRlci1hY3RpdmUiLGxlYXZlQ2xhc3M6ZSsiLWxlYXZlIixsZWF2ZVRvQ2xhc3M6ZSsiLWxlYXZlLXRvIixsZWF2ZUFjdGl2ZUNsYXNzOmUrIi1sZWF2ZS1hY3RpdmUifX0pLHdpPXomJiFXLENpPSJ0cmFuc2l0aW9uIix4aT0iYW5pbWF0aW9uIixraT0idHJhbnNpdGlvbiIsQWk9InRyYW5zaXRpb25lbmQiLE9pPSJhbmltYXRpb24iLFNpPSJhbmltYXRpb25lbmQiO3dpJiYodm9pZCAwPT09d2luZG93Lm9udHJhbnNpdGlvbmVuZCYmdm9pZCAwIT09d2luZG93Lm9ud2Via2l0dHJhbnNpdGlvbmVuZCYmKGtpPSJXZWJraXRUcmFuc2l0aW9uIixBaT0id2Via2l0VHJhbnNpdGlvbkVuZCIpLHZvaWQgMD09PXdpbmRvdy5vbmFuaW1hdGlvbmVuZCYmdm9pZCAwIT09d2luZG93Lm9ud2Via2l0YW5pbWF0aW9uZW5kJiYoT2k9IldlYmtpdEFuaW1hdGlvbiIsU2k9IndlYmtpdEFuaW1hdGlvbkVuZCIpKTt2YXIgVGk9ej93aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lP3dpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUuYmluZCh3aW5kb3cpOnNldFRpbWVvdXQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGUoKX07ZnVuY3Rpb24gRWkoZSl7VGkoZnVuY3Rpb24oKXtUaShlKX0pfWZ1bmN0aW9uIE5pKGUsdCl7dmFyIG49ZS5fdHJhbnNpdGlvbkNsYXNzZXN8fChlLl90cmFuc2l0aW9uQ2xhc3Nlcz1bXSk7bi5pbmRleE9mKHQpPDAmJihuLnB1c2godCksZ2koZSx0KSl9ZnVuY3Rpb24gamkoZSx0KXtlLl90cmFuc2l0aW9uQ2xhc3NlcyYmaChlLl90cmFuc2l0aW9uQ2xhc3Nlcyx0KSxfaShlLHQpfWZ1bmN0aW9uIERpKGUsdCxuKXt2YXIgcj1NaShlLHQpLGk9ci50eXBlLG89ci50aW1lb3V0LGE9ci5wcm9wQ291bnQ7aWYoIWkpcmV0dXJuIG4oKTt2YXIgcz1pPT09Q2k\/QWk6U2ksYz0wLHU9ZnVuY3Rpb24oKXtlLnJlbW92ZUV2ZW50TGlzdGVuZXIocyxsKSxuKCl9LGw9ZnVuY3Rpb24odCl7dC50YXJnZXQ9PT1lJiYrK2M+PWEmJnUoKX07c2V0VGltZW91dChmdW5jdGlvbigpe2M8YSYmdSgpfSxvKzEpLGUuYWRkRXZlbnRMaXN0ZW5lcihzLGwpfXZhciBMaT0vXGIodHJhbnNmb3JtfGFsbCkoLHwkKS87ZnVuY3Rpb24gTWkoZSx0KXt2YXIgbixyPXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGUpLGk9KHJba2krIkRlbGF5Il18fCIiKS5zcGxpdCgiLCAiKSxvPShyW2tpKyJEdXJhdGlvbiJdfHwiIikuc3BsaXQoIiwgIiksYT1JaShpLG8pLHM9KHJbT2krIkRlbGF5Il18fCIiKS5zcGxpdCgiLCAiKSxjPShyW09pKyJEdXJhdGlvbiJdfHwiIikuc3BsaXQoIiwgIiksdT1JaShzLGMpLGw9MCxmPTA7cmV0dXJuIHQ9PT1DaT9hPjAmJihuPUNpLGw9YSxmPW8ubGVuZ3RoKTp0PT09eGk\/dT4wJiYobj14aSxsPXUsZj1jLmxlbmd0aCk6Zj0obj0obD1NYXRoLm1heChhLHUpKT4wP2E+dT9DaTp4aTpudWxsKT9uPT09Q2k\/by5sZW5ndGg6Yy5sZW5ndGg6MCx7dHlwZTpuLHRpbWVvdXQ6bCxwcm9wQ291bnQ6ZixoYXNUcmFuc2Zvcm06bj09PUNpJiZMaS50ZXN0KHJba2krIlByb3BlcnR5Il0pfX1mdW5jdGlvbiBJaShlLHQpe2Zvcig7ZS5sZW5ndGg8dC5sZW5ndGg7KWU9ZS5jb25jYXQoZSk7cmV0dXJuIE1hdGgubWF4LmFwcGx5KG51bGwsdC5tYXAoZnVuY3Rpb24odCxuKXtyZXR1cm4gRmkodCkrRmkoZVtuXSl9KSl9ZnVuY3Rpb24gRmkoZSl7cmV0dXJuIDFlMypOdW1iZXIoZS5zbGljZSgwLC0xKS5yZXBsYWNlKCIsIiwiLiIpKX1mdW5jdGlvbiBQaShlLHIpe3ZhciBpPWUuZWxtO24oaS5fbGVhdmVDYikmJihpLl9sZWF2ZUNiLmNhbmNlbGxlZD0hMCxpLl9sZWF2ZUNiKCkpO3ZhciBhPWJpKGUuZGF0YS50cmFuc2l0aW9uKTtpZighdChhKSYmIW4oaS5fZW50ZXJDYikmJjE9PT1pLm5vZGVUeXBlKXtmb3IodmFyIHM9YS5jc3MsYz1hLnR5cGUsdT1hLmVudGVyQ2xhc3MsbD1hLmVudGVyVG9DbGFzcyxwPWEuZW50ZXJBY3RpdmVDbGFzcyxkPWEuYXBwZWFyQ2xhc3Msdj1hLmFwcGVhclRvQ2xhc3MsaD1hLmFwcGVhckFjdGl2ZUNsYXNzLG09YS5iZWZvcmVFbnRlcix5PWEuZW50ZXIsZz1hLmFmdGVyRW50ZXIsXz1hLmVudGVyQ2FuY2VsbGVkLGI9YS5iZWZvcmVBcHBlYXIsJD1hLmFwcGVhcix3PWEuYWZ0ZXJBcHBlYXIsQz1hLmFwcGVhckNhbmNlbGxlZCx4PWEuZHVyYXRpb24saz1XdCxBPVd0LiR2bm9kZTtBJiZBLnBhcmVudDspaz1BLmNvbnRleHQsQT1BLnBhcmVudDt2YXIgTz0hay5faXNNb3VudGVkfHwhZS5pc1Jvb3RJbnNlcnQ7aWYoIU98fCR8fCIiPT09JCl7dmFyIFM9TyYmZD9kOnUsVD1PJiZoP2g6cCxFPU8mJnY\/djpsLE49TyYmYnx8bSxqPU8mJiJmdW5jdGlvbiI9PXR5cGVvZiAkPyQ6eSxMPU8mJnd8fGcsTT1PJiZDfHxfLEk9ZihvKHgpP3guZW50ZXI6eCksRj0hMSE9PXMmJiFXLFA9QmkoaiksUj1pLl9lbnRlckNiPUQoZnVuY3Rpb24oKXtGJiYoamkoaSxFKSxqaShpLFQpKSxSLmNhbmNlbGxlZD8oRiYmamkoaSxTKSxNJiZNKGkpKTpMJiZMKGkpLGkuX2VudGVyQ2I9bnVsbH0pO2UuZGF0YS5zaG93fHxpdChlLCJpbnNlcnQiLGZ1bmN0aW9uKCl7dmFyIHQ9aS5wYXJlbnROb2RlLG49dCYmdC5fcGVuZGluZyYmdC5fcGVuZGluZ1tlLmtleV07biYmbi50YWc9PT1lLnRhZyYmbi5lbG0uX2xlYXZlQ2ImJm4uZWxtLl9sZWF2ZUNiKCksaiYmaihpLFIpfSksTiYmTihpKSxGJiYoTmkoaSxTKSxOaShpLFQpLEVpKGZ1bmN0aW9uKCl7amkoaSxTKSxSLmNhbmNlbGxlZHx8KE5pKGksRSksUHx8KEhpKEkpP3NldFRpbWVvdXQoUixJKTpEaShpLGMsUikpKX0pKSxlLmRhdGEuc2hvdyYmKHImJnIoKSxqJiZqKGksUikpLEZ8fFB8fFIoKX19fWZ1bmN0aW9uIFJpKGUscil7dmFyIGk9ZS5lbG07bihpLl9lbnRlckNiKSYmKGkuX2VudGVyQ2IuY2FuY2VsbGVkPSEwLGkuX2VudGVyQ2IoKSk7dmFyIGE9YmkoZS5kYXRhLnRyYW5zaXRpb24pO2lmKHQoYSl8fDEhPT1pLm5vZGVUeXBlKXJldHVybiByKCk7aWYoIW4oaS5fbGVhdmVDYikpe3ZhciBzPWEuY3NzLGM9YS50eXBlLHU9YS5sZWF2ZUNsYXNzLGw9YS5sZWF2ZVRvQ2xhc3MscD1hLmxlYXZlQWN0aXZlQ2xhc3MsZD1hLmJlZm9yZUxlYXZlLHY9YS5sZWF2ZSxoPWEuYWZ0ZXJMZWF2ZSxtPWEubGVhdmVDYW5jZWxsZWQseT1hLmRlbGF5TGVhdmUsZz1hLmR1cmF0aW9uLF89ITEhPT1zJiYhVyxiPUJpKHYpLCQ9ZihvKGcpP2cubGVhdmU6Zyksdz1pLl9sZWF2ZUNiPUQoZnVuY3Rpb24oKXtpLnBhcmVudE5vZGUmJmkucGFyZW50Tm9kZS5fcGVuZGluZyYmKGkucGFyZW50Tm9kZS5fcGVuZGluZ1tlLmtleV09bnVsbCksXyYmKGppKGksbCksamkoaSxwKSksdy5jYW5jZWxsZWQ\/KF8mJmppKGksdSksbSYmbShpKSk6KHIoKSxoJiZoKGkpKSxpLl9sZWF2ZUNiPW51bGx9KTt5P3koQyk6QygpfWZ1bmN0aW9uIEMoKXt3LmNhbmNlbGxlZHx8KCFlLmRhdGEuc2hvdyYmaS5wYXJlbnROb2RlJiYoKGkucGFyZW50Tm9kZS5fcGVuZGluZ3x8KGkucGFyZW50Tm9kZS5fcGVuZGluZz17fSkpW2Uua2V5XT1lKSxkJiZkKGkpLF8mJihOaShpLHUpLE5pKGkscCksRWkoZnVuY3Rpb24oKXtqaShpLHUpLHcuY2FuY2VsbGVkfHwoTmkoaSxsKSxifHwoSGkoJCk\/c2V0VGltZW91dCh3LCQpOkRpKGksYyx3KSkpfSkpLHYmJnYoaSx3KSxffHxifHx3KCkpfX1mdW5jdGlvbiBIaShlKXtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIGUmJiFpc05hTihlKX1mdW5jdGlvbiBCaShlKXtpZih0KGUpKXJldHVybiExO3ZhciByPWUuZm5zO3JldHVybiBuKHIpP0JpKEFycmF5LmlzQXJyYXkocik\/clswXTpyKTooZS5fbGVuZ3RofHxlLmxlbmd0aCk+MX1mdW5jdGlvbiBVaShlLHQpeyEwIT09dC5kYXRhLnNob3cmJlBpKHQpfXZhciB6aT1mdW5jdGlvbihlKXt2YXIgbyxhLHM9e30sYz1lLm1vZHVsZXMsdT1lLm5vZGVPcHM7Zm9yKG89MDtvPHJyLmxlbmd0aDsrK28pZm9yKHNbcnJbb11dPVtdLGE9MDthPGMubGVuZ3RoOysrYSluKGNbYV1bcnJbb11dKSYmc1tycltvXV0ucHVzaChjW2FdW3JyW29dXSk7ZnVuY3Rpb24gbChlKXt2YXIgdD11LnBhcmVudE5vZGUoZSk7bih0KSYmdS5yZW1vdmVDaGlsZCh0LGUpfWZ1bmN0aW9uIGYoZSx0LGksbyxhLGMsbCl7aWYobihlLmVsbSkmJm4oYykmJihlPWNbbF09bWUoZSkpLGUuaXNSb290SW5zZXJ0PSFhLCFmdW5jdGlvbihlLHQsaSxvKXt2YXIgYT1lLmRhdGE7aWYobihhKSl7dmFyIGM9bihlLmNvbXBvbmVudEluc3RhbmNlKSYmYS5rZWVwQWxpdmU7aWYobihhPWEuaG9vaykmJm4oYT1hLmluaXQpJiZhKGUsITEpLG4oZS5jb21wb25lbnRJbnN0YW5jZSkpcmV0dXJuIGQoZSx0KSx2KGksZS5lbG0sbykscihjKSYmZnVuY3Rpb24oZSx0LHIsaSl7Zm9yKHZhciBvLGE9ZTthLmNvbXBvbmVudEluc3RhbmNlOylpZihhPWEuY29tcG9uZW50SW5zdGFuY2UuX3Zub2RlLG4obz1hLmRhdGEpJiZuKG89by50cmFuc2l0aW9uKSl7Zm9yKG89MDtvPHMuYWN0aXZhdGUubGVuZ3RoOysrbylzLmFjdGl2YXRlW29dKG5yLGEpO3QucHVzaChhKTticmVha312KHIsZS5lbG0saSl9KGUsdCxpLG8pLCEwfX0oZSx0LGksbykpe3ZhciBmPWUuZGF0YSxwPWUuY2hpbGRyZW4sbT1lLnRhZztuKG0pPyhlLmVsbT1lLm5zP3UuY3JlYXRlRWxlbWVudE5TKGUubnMsbSk6dS5jcmVhdGVFbGVtZW50KG0sZSksZyhlKSxoKGUscCx0KSxuKGYpJiZ5KGUsdCksdihpLGUuZWxtLG8pKTpyKGUuaXNDb21tZW50KT8oZS5lbG09dS5jcmVhdGVDb21tZW50KGUudGV4dCksdihpLGUuZWxtLG8pKTooZS5lbG09dS5jcmVhdGVUZXh0Tm9kZShlLnRleHQpLHYoaSxlLmVsbSxvKSl9fWZ1bmN0aW9uIGQoZSx0KXtuKGUuZGF0YS5wZW5kaW5nSW5zZXJ0KSYmKHQucHVzaC5hcHBseSh0LGUuZGF0YS5wZW5kaW5nSW5zZXJ0KSxlLmRhdGEucGVuZGluZ0luc2VydD1udWxsKSxlLmVsbT1lLmNvbXBvbmVudEluc3RhbmNlLiRlbCxtKGUpPyh5KGUsdCksZyhlKSk6KHRyKGUpLHQucHVzaChlKSl9ZnVuY3Rpb24gdihlLHQscil7bihlKSYmKG4ocik\/dS5wYXJlbnROb2RlKHIpPT09ZSYmdS5pbnNlcnRCZWZvcmUoZSx0LHIpOnUuYXBwZW5kQ2hpbGQoZSx0KSl9ZnVuY3Rpb24gaChlLHQsbil7aWYoQXJyYXkuaXNBcnJheSh0KSlmb3IodmFyIHI9MDtyPHQubGVuZ3RoOysrcilmKHRbcl0sbixlLmVsbSxudWxsLCEwLHQscik7ZWxzZSBpKGUudGV4dCkmJnUuYXBwZW5kQ2hpbGQoZS5lbG0sdS5jcmVhdGVUZXh0Tm9kZShTdHJpbmcoZS50ZXh0KSkpfWZ1bmN0aW9uIG0oZSl7Zm9yKDtlLmNvbXBvbmVudEluc3RhbmNlOyllPWUuY29tcG9uZW50SW5zdGFuY2UuX3Zub2RlO3JldHVybiBuKGUudGFnKX1mdW5jdGlvbiB5KGUsdCl7Zm9yKHZhciByPTA7cjxzLmNyZWF0ZS5sZW5ndGg7KytyKXMuY3JlYXRlW3JdKG5yLGUpO24obz1lLmRhdGEuaG9vaykmJihuKG8uY3JlYXRlKSYmby5jcmVhdGUobnIsZSksbihvLmluc2VydCkmJnQucHVzaChlKSl9ZnVuY3Rpb24gZyhlKXt2YXIgdDtpZihuKHQ9ZS5mblNjb3BlSWQpKXUuc2V0U3R5bGVTY29wZShlLmVsbSx0KTtlbHNlIGZvcih2YXIgcj1lO3I7KW4odD1yLmNvbnRleHQpJiZuKHQ9dC4kb3B0aW9ucy5fc2NvcGVJZCkmJnUuc2V0U3R5bGVTY29wZShlLmVsbSx0KSxyPXIucGFyZW50O24odD1XdCkmJnQhPT1lLmNvbnRleHQmJnQhPT1lLmZuQ29udGV4dCYmbih0PXQuJG9wdGlvbnMuX3Njb3BlSWQpJiZ1LnNldFN0eWxlU2NvcGUoZS5lbG0sdCl9ZnVuY3Rpb24gXyhlLHQsbixyLGksbyl7Zm9yKDtyPD1pOysrcilmKG5bcl0sbyxlLHQsITEsbixyKX1mdW5jdGlvbiBiKGUpe3ZhciB0LHIsaT1lLmRhdGE7aWYobihpKSlmb3Iobih0PWkuaG9vaykmJm4odD10LmRlc3Ryb3kpJiZ0KGUpLHQ9MDt0PHMuZGVzdHJveS5sZW5ndGg7Kyt0KXMuZGVzdHJveVt0XShlKTtpZihuKHQ9ZS5jaGlsZHJlbikpZm9yKHI9MDtyPGUuY2hpbGRyZW4ubGVuZ3RoOysrciliKGUuY2hpbGRyZW5bcl0pfWZ1bmN0aW9uICQoZSx0LHIpe2Zvcig7dDw9cjsrK3Qpe3ZhciBpPWVbdF07bihpKSYmKG4oaS50YWcpPyh3KGkpLGIoaSkpOmwoaS5lbG0pKX19ZnVuY3Rpb24gdyhlLHQpe2lmKG4odCl8fG4oZS5kYXRhKSl7dmFyIHIsaT1zLnJlbW92ZS5sZW5ndGgrMTtmb3Iobih0KT90Lmxpc3RlbmVycys9aTp0PWZ1bmN0aW9uKGUsdCl7ZnVuY3Rpb24gbigpezA9PS0tbi5saXN0ZW5lcnMmJmwoZSl9cmV0dXJuIG4ubGlzdGVuZXJzPXQsbn0oZS5lbG0saSksbihyPWUuY29tcG9uZW50SW5zdGFuY2UpJiZuKHI9ci5fdm5vZGUpJiZuKHIuZGF0YSkmJncocix0KSxyPTA7cjxzLnJlbW92ZS5sZW5ndGg7KytyKXMucmVtb3ZlW3JdKGUsdCk7bihyPWUuZGF0YS5ob29rKSYmbihyPXIucmVtb3ZlKT9yKGUsdCk6dCgpfWVsc2UgbChlLmVsbSl9ZnVuY3Rpb24gQyhlLHQscixpKXtmb3IodmFyIG89cjtvPGk7bysrKXt2YXIgYT10W29dO2lmKG4oYSkmJmlyKGUsYSkpcmV0dXJuIG99fWZ1bmN0aW9uIHgoZSxpLG8sYSxjLGwpe2lmKGUhPT1pKXtuKGkuZWxtKSYmbihhKSYmKGk9YVtjXT1tZShpKSk7dmFyIHA9aS5lbG09ZS5lbG07aWYocihlLmlzQXN5bmNQbGFjZWhvbGRlcikpbihpLmFzeW5jRmFjdG9yeS5yZXNvbHZlZCk\/TyhlLmVsbSxpLG8pOmkuaXNBc3luY1BsYWNlaG9sZGVyPSEwO2Vsc2UgaWYocihpLmlzU3RhdGljKSYmcihlLmlzU3RhdGljKSYmaS5rZXk9PT1lLmtleSYmKHIoaS5pc0Nsb25lZCl8fHIoaS5pc09uY2UpKSlpLmNvbXBvbmVudEluc3RhbmNlPWUuY29tcG9uZW50SW5zdGFuY2U7ZWxzZXt2YXIgZCx2PWkuZGF0YTtuKHYpJiZuKGQ9di5ob29rKSYmbihkPWQucHJlcGF0Y2gpJiZkKGUsaSk7dmFyIGg9ZS5jaGlsZHJlbix5PWkuY2hpbGRyZW47aWYobih2KSYmbShpKSl7Zm9yKGQ9MDtkPHMudXBkYXRlLmxlbmd0aDsrK2Qpcy51cGRhdGVbZF0oZSxpKTtuKGQ9di5ob29rKSYmbihkPWQudXBkYXRlKSYmZChlLGkpfXQoaS50ZXh0KT9uKGgpJiZuKHkpP2ghPT15JiZmdW5jdGlvbihlLHIsaSxvLGEpe2Zvcih2YXIgcyxjLGwscD0wLGQ9MCx2PXIubGVuZ3RoLTEsaD1yWzBdLG09clt2XSx5PWkubGVuZ3RoLTEsZz1pWzBdLGI9aVt5XSx3PSFhO3A8PXYmJmQ8PXk7KXQoaCk\/aD1yWysrcF06dChtKT9tPXJbLS12XTppcihoLGcpPyh4KGgsZyxvLGksZCksaD1yWysrcF0sZz1pWysrZF0pOmlyKG0sYik\/KHgobSxiLG8saSx5KSxtPXJbLS12XSxiPWlbLS15XSk6aXIoaCxiKT8oeChoLGIsbyxpLHkpLHcmJnUuaW5zZXJ0QmVmb3JlKGUsaC5lbG0sdS5uZXh0U2libGluZyhtLmVsbSkpLGg9clsrK3BdLGI9aVstLXldKTppcihtLGcpPyh4KG0sZyxvLGksZCksdyYmdS5pbnNlcnRCZWZvcmUoZSxtLmVsbSxoLmVsbSksbT1yWy0tdl0sZz1pWysrZF0pOih0KHMpJiYocz1vcihyLHAsdikpLHQoYz1uKGcua2V5KT9zW2cua2V5XTpDKGcscixwLHYpKT9mKGcsbyxlLGguZWxtLCExLGksZCk6aXIobD1yW2NdLGcpPyh4KGwsZyxvLGksZCkscltjXT12b2lkIDAsdyYmdS5pbnNlcnRCZWZvcmUoZSxsLmVsbSxoLmVsbSkpOmYoZyxvLGUsaC5lbG0sITEsaSxkKSxnPWlbKytkXSk7cD52P18oZSx0KGlbeSsxXSk\/bnVsbDppW3krMV0uZWxtLGksZCx5LG8pOmQ+eSYmJChyLHAsdil9KHAsaCx5LG8sbCk6bih5KT8obihlLnRleHQpJiZ1LnNldFRleHRDb250ZW50KHAsIiIpLF8ocCxudWxsLHksMCx5Lmxlbmd0aC0xLG8pKTpuKGgpPyQoaCwwLGgubGVuZ3RoLTEpOm4oZS50ZXh0KSYmdS5zZXRUZXh0Q29udGVudChwLCIiKTplLnRleHQhPT1pLnRleHQmJnUuc2V0VGV4dENvbnRlbnQocCxpLnRleHQpLG4odikmJm4oZD12Lmhvb2spJiZuKGQ9ZC5wb3N0cGF0Y2gpJiZkKGUsaSl9fX1mdW5jdGlvbiBrKGUsdCxpKXtpZihyKGkpJiZuKGUucGFyZW50KSllLnBhcmVudC5kYXRhLnBlbmRpbmdJbnNlcnQ9dDtlbHNlIGZvcih2YXIgbz0wO288dC5sZW5ndGg7KytvKXRbb10uZGF0YS5ob29rLmluc2VydCh0W29dKX12YXIgQT1wKCJhdHRycyxjbGFzcyxzdGF0aWNDbGFzcyxzdGF0aWNTdHlsZSxrZXkiKTtmdW5jdGlvbiBPKGUsdCxpLG8pe3ZhciBhLHM9dC50YWcsYz10LmRhdGEsdT10LmNoaWxkcmVuO2lmKG89b3x8YyYmYy5wcmUsdC5lbG09ZSxyKHQuaXNDb21tZW50KSYmbih0LmFzeW5jRmFjdG9yeSkpcmV0dXJuIHQuaXNBc3luY1BsYWNlaG9sZGVyPSEwLCEwO2lmKG4oYykmJihuKGE9Yy5ob29rKSYmbihhPWEuaW5pdCkmJmEodCwhMCksbihhPXQuY29tcG9uZW50SW5zdGFuY2UpKSlyZXR1cm4gZCh0LGkpLCEwO2lmKG4ocykpe2lmKG4odSkpaWYoZS5oYXNDaGlsZE5vZGVzKCkpaWYobihhPWMpJiZuKGE9YS5kb21Qcm9wcykmJm4oYT1hLmlubmVySFRNTCkpe2lmKGEhPT1lLmlubmVySFRNTClyZXR1cm4hMX1lbHNle2Zvcih2YXIgbD0hMCxmPWUuZmlyc3RDaGlsZCxwPTA7cDx1Lmxlbmd0aDtwKyspe2lmKCFmfHwhTyhmLHVbcF0saSxvKSl7bD0hMTticmVha31mPWYubmV4dFNpYmxpbmd9aWYoIWx8fGYpcmV0dXJuITF9ZWxzZSBoKHQsdSxpKTtpZihuKGMpKXt2YXIgdj0hMTtmb3IodmFyIG0gaW4gYylpZighQShtKSl7dj0hMCx5KHQsaSk7YnJlYWt9IXYmJmMuY2xhc3MmJmV0KGMuY2xhc3MpfX1lbHNlIGUuZGF0YSE9PXQudGV4dCYmKGUuZGF0YT10LnRleHQpO3JldHVybiEwfXJldHVybiBmdW5jdGlvbihlLGksbyxhKXtpZighdChpKSl7dmFyIGMsbD0hMSxwPVtdO2lmKHQoZSkpbD0hMCxmKGkscCk7ZWxzZXt2YXIgZD1uKGUubm9kZVR5cGUpO2lmKCFkJiZpcihlLGkpKXgoZSxpLHAsbnVsbCxudWxsLGEpO2Vsc2V7aWYoZCl7aWYoMT09PWUubm9kZVR5cGUmJmUuaGFzQXR0cmlidXRlKEwpJiYoZS5yZW1vdmVBdHRyaWJ1dGUoTCksbz0hMCkscihvKSYmTyhlLGkscCkpcmV0dXJuIGsoaSxwLCEwKSxlO2M9ZSxlPW5ldyBwZSh1LnRhZ05hbWUoYykudG9Mb3dlckNhc2UoKSx7fSxbXSx2b2lkIDAsYyl9dmFyIHY9ZS5lbG0saD11LnBhcmVudE5vZGUodik7aWYoZihpLHAsdi5fbGVhdmVDYj9udWxsOmgsdS5uZXh0U2libGluZyh2KSksbihpLnBhcmVudCkpZm9yKHZhciB5PWkucGFyZW50LGc9bShpKTt5Oyl7Zm9yKHZhciBfPTA7XzxzLmRlc3Ryb3kubGVuZ3RoOysrXylzLmRlc3Ryb3lbX10oeSk7aWYoeS5lbG09aS5lbG0sZyl7Zm9yKHZhciB3PTA7dzxzLmNyZWF0ZS5sZW5ndGg7Kyt3KXMuY3JlYXRlW3ddKG5yLHkpO3ZhciBDPXkuZGF0YS5ob29rLmluc2VydDtpZihDLm1lcmdlZClmb3IodmFyIEE9MTtBPEMuZm5zLmxlbmd0aDtBKyspQy5mbnNbQV0oKX1lbHNlIHRyKHkpO3k9eS5wYXJlbnR9bihoKT8kKFtlXSwwLDApOm4oZS50YWcpJiZiKGUpfX1yZXR1cm4gayhpLHAsbCksaS5lbG19bihlKSYmYihlKX19KHtub2RlT3BzOlFuLG1vZHVsZXM6W21yLHhyLG5pLG9pLG1pLHo\/e2NyZWF0ZTpVaSxhY3RpdmF0ZTpVaSxyZW1vdmU6ZnVuY3Rpb24oZSx0KXshMCE9PWUuZGF0YS5zaG93P1JpKGUsdCk6dCgpfX06e31dLmNvbmNhdChwcil9KTtXJiZkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJzZWxlY3Rpb25jaGFuZ2UiLGZ1bmN0aW9uKCl7dmFyIGU9ZG9jdW1lbnQuYWN0aXZlRWxlbWVudDtlJiZlLnZtb2RlbCYmWGkoZSwiaW5wdXQiKX0pO3ZhciBWaT17aW5zZXJ0ZWQ6ZnVuY3Rpb24oZSx0LG4scil7InNlbGVjdCI9PT1uLnRhZz8oci5lbG0mJiFyLmVsbS5fdk9wdGlvbnM\/aXQobiwicG9zdHBhdGNoIixmdW5jdGlvbigpe1ZpLmNvbXBvbmVudFVwZGF0ZWQoZSx0LG4pfSk6S2koZSx0LG4uY29udGV4dCksZS5fdk9wdGlvbnM9W10ubWFwLmNhbGwoZS5vcHRpb25zLFdpKSk6KCJ0ZXh0YXJlYSI9PT1uLnRhZ3x8WG4oZS50eXBlKSkmJihlLl92TW9kaWZpZXJzPXQubW9kaWZpZXJzLHQubW9kaWZpZXJzLmxhenl8fChlLmFkZEV2ZW50TGlzdGVuZXIoImNvbXBvc2l0aW9uc3RhcnQiLFppKSxlLmFkZEV2ZW50TGlzdGVuZXIoImNvbXBvc2l0aW9uZW5kIixHaSksZS5hZGRFdmVudExpc3RlbmVyKCJjaGFuZ2UiLEdpKSxXJiYoZS52bW9kZWw9ITApKSl9LGNvbXBvbmVudFVwZGF0ZWQ6ZnVuY3Rpb24oZSx0LG4pe2lmKCJzZWxlY3QiPT09bi50YWcpe0tpKGUsdCxuLmNvbnRleHQpO3ZhciByPWUuX3ZPcHRpb25zLGk9ZS5fdk9wdGlvbnM9W10ubWFwLmNhbGwoZS5vcHRpb25zLFdpKTtpZihpLnNvbWUoZnVuY3Rpb24oZSx0KXtyZXR1cm4hTihlLHJbdF0pfSkpKGUubXVsdGlwbGU\/dC52YWx1ZS5zb21lKGZ1bmN0aW9uKGUpe3JldHVybiBxaShlLGkpfSk6dC52YWx1ZSE9PXQub2xkVmFsdWUmJnFpKHQudmFsdWUsaSkpJiZYaShlLCJjaGFuZ2UiKX19fTtmdW5jdGlvbiBLaShlLHQsbil7SmkoZSx0LG4pLChxfHxaKSYmc2V0VGltZW91dChmdW5jdGlvbigpe0ppKGUsdCxuKX0sMCl9ZnVuY3Rpb24gSmkoZSx0LG4pe3ZhciByPXQudmFsdWUsaT1lLm11bHRpcGxlO2lmKCFpfHxBcnJheS5pc0FycmF5KHIpKXtmb3IodmFyIG8sYSxzPTAsYz1lLm9wdGlvbnMubGVuZ3RoO3M8YztzKyspaWYoYT1lLm9wdGlvbnNbc10saSlvPWoocixXaShhKSk+LTEsYS5zZWxlY3RlZCE9PW8mJihhLnNlbGVjdGVkPW8pO2Vsc2UgaWYoTihXaShhKSxyKSlyZXR1cm4gdm9pZChlLnNlbGVjdGVkSW5kZXghPT1zJiYoZS5zZWxlY3RlZEluZGV4PXMpKTtpfHwoZS5zZWxlY3RlZEluZGV4PS0xKX19ZnVuY3Rpb24gcWkoZSx0KXtyZXR1cm4gdC5ldmVyeShmdW5jdGlvbih0KXtyZXR1cm4hTih0LGUpfSl9ZnVuY3Rpb24gV2koZSl7cmV0dXJuIl92YWx1ZSJpbiBlP2UuX3ZhbHVlOmUudmFsdWV9ZnVuY3Rpb24gWmkoZSl7ZS50YXJnZXQuY29tcG9zaW5nPSEwfWZ1bmN0aW9uIEdpKGUpe2UudGFyZ2V0LmNvbXBvc2luZyYmKGUudGFyZ2V0LmNvbXBvc2luZz0hMSxYaShlLnRhcmdldCwiaW5wdXQiKSl9ZnVuY3Rpb24gWGkoZSx0KXt2YXIgbj1kb2N1bWVudC5jcmVhdGVFdmVudCgiSFRNTEV2ZW50cyIpO24uaW5pdEV2ZW50KHQsITAsITApLGUuZGlzcGF0Y2hFdmVudChuKX1mdW5jdGlvbiBZaShlKXtyZXR1cm4hZS5jb21wb25lbnRJbnN0YW5jZXx8ZS5kYXRhJiZlLmRhdGEudHJhbnNpdGlvbj9lOllpKGUuY29tcG9uZW50SW5zdGFuY2UuX3Zub2RlKX12YXIgUWk9e21vZGVsOlZpLHNob3c6e2JpbmQ6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXQudmFsdWUsaT0obj1ZaShuKSkuZGF0YSYmbi5kYXRhLnRyYW5zaXRpb24sbz1lLl9fdk9yaWdpbmFsRGlzcGxheT0ibm9uZSI9PT1lLnN0eWxlLmRpc3BsYXk\/IiI6ZS5zdHlsZS5kaXNwbGF5O3ImJmk\/KG4uZGF0YS5zaG93PSEwLFBpKG4sZnVuY3Rpb24oKXtlLnN0eWxlLmRpc3BsYXk9b30pKTplLnN0eWxlLmRpc3BsYXk9cj9vOiJub25lIn0sdXBkYXRlOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10LnZhbHVlOyFyIT0hdC5vbGRWYWx1ZSYmKChuPVlpKG4pKS5kYXRhJiZuLmRhdGEudHJhbnNpdGlvbj8obi5kYXRhLnNob3c9ITAscj9QaShuLGZ1bmN0aW9uKCl7ZS5zdHlsZS5kaXNwbGF5PWUuX192T3JpZ2luYWxEaXNwbGF5fSk6UmkobixmdW5jdGlvbigpe2Uuc3R5bGUuZGlzcGxheT0ibm9uZSJ9KSk6ZS5zdHlsZS5kaXNwbGF5PXI\/ZS5fX3ZPcmlnaW5hbERpc3BsYXk6Im5vbmUiKX0sdW5iaW5kOmZ1bmN0aW9uKGUsdCxuLHIsaSl7aXx8KGUuc3R5bGUuZGlzcGxheT1lLl9fdk9yaWdpbmFsRGlzcGxheSl9fX0sZW89e25hbWU6U3RyaW5nLGFwcGVhcjpCb29sZWFuLGNzczpCb29sZWFuLG1vZGU6U3RyaW5nLHR5cGU6U3RyaW5nLGVudGVyQ2xhc3M6U3RyaW5nLGxlYXZlQ2xhc3M6U3RyaW5nLGVudGVyVG9DbGFzczpTdHJpbmcsbGVhdmVUb0NsYXNzOlN0cmluZyxlbnRlckFjdGl2ZUNsYXNzOlN0cmluZyxsZWF2ZUFjdGl2ZUNsYXNzOlN0cmluZyxhcHBlYXJDbGFzczpTdHJpbmcsYXBwZWFyQWN0aXZlQ2xhc3M6U3RyaW5nLGFwcGVhclRvQ2xhc3M6U3RyaW5nLGR1cmF0aW9uOltOdW1iZXIsU3RyaW5nLE9iamVjdF19O2Z1bmN0aW9uIHRvKGUpe3ZhciB0PWUmJmUuY29tcG9uZW50T3B0aW9ucztyZXR1cm4gdCYmdC5DdG9yLm9wdGlvbnMuYWJzdHJhY3Q\/dG8oenQodC5jaGlsZHJlbikpOmV9ZnVuY3Rpb24gbm8oZSl7dmFyIHQ9e30sbj1lLiRvcHRpb25zO2Zvcih2YXIgciBpbiBuLnByb3BzRGF0YSl0W3JdPWVbcl07dmFyIGk9bi5fcGFyZW50TGlzdGVuZXJzO2Zvcih2YXIgbyBpbiBpKXRbYihvKV09aVtvXTtyZXR1cm4gdH1mdW5jdGlvbiBybyhlLHQpe2lmKC9cZC1rZWVwLWFsaXZlJC8udGVzdCh0LnRhZykpcmV0dXJuIGUoImtlZXAtYWxpdmUiLHtwcm9wczp0LmNvbXBvbmVudE9wdGlvbnMucHJvcHNEYXRhfSl9dmFyIGlvPWZ1bmN0aW9uKGUpe3JldHVybiBlLnRhZ3x8VXQoZSl9LG9vPWZ1bmN0aW9uKGUpe3JldHVybiJzaG93Ij09PWUubmFtZX0sYW89e25hbWU6InRyYW5zaXRpb24iLHByb3BzOmVvLGFic3RyYWN0OiEwLHJlbmRlcjpmdW5jdGlvbihlKXt2YXIgdD10aGlzLG49dGhpcy4kc2xvdHMuZGVmYXVsdDtpZihuJiYobj1uLmZpbHRlcihpbykpLmxlbmd0aCl7dmFyIHI9dGhpcy5tb2RlLG89blswXTtpZihmdW5jdGlvbihlKXtmb3IoO2U9ZS5wYXJlbnQ7KWlmKGUuZGF0YS50cmFuc2l0aW9uKXJldHVybiEwfSh0aGlzLiR2bm9kZSkpcmV0dXJuIG87dmFyIGE9dG8obyk7aWYoIWEpcmV0dXJuIG87aWYodGhpcy5fbGVhdmluZylyZXR1cm4gcm8oZSxvKTt2YXIgcz0iX190cmFuc2l0aW9uLSIrdGhpcy5fdWlkKyItIjthLmtleT1udWxsPT1hLmtleT9hLmlzQ29tbWVudD9zKyJjb21tZW50IjpzK2EudGFnOmkoYS5rZXkpPzA9PT1TdHJpbmcoYS5rZXkpLmluZGV4T2Yocyk\/YS5rZXk6cythLmtleTphLmtleTt2YXIgYz0oYS5kYXRhfHwoYS5kYXRhPXt9KSkudHJhbnNpdGlvbj1ubyh0aGlzKSx1PXRoaXMuX3Zub2RlLGw9dG8odSk7aWYoYS5kYXRhLmRpcmVjdGl2ZXMmJmEuZGF0YS5kaXJlY3RpdmVzLnNvbWUob28pJiYoYS5kYXRhLnNob3c9ITApLGwmJmwuZGF0YSYmIWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQua2V5PT09ZS5rZXkmJnQudGFnPT09ZS50YWd9KGEsbCkmJiFVdChsKSYmKCFsLmNvbXBvbmVudEluc3RhbmNlfHwhbC5jb21wb25lbnRJbnN0YW5jZS5fdm5vZGUuaXNDb21tZW50KSl7dmFyIGY9bC5kYXRhLnRyYW5zaXRpb249QSh7fSxjKTtpZigib3V0LWluIj09PXIpcmV0dXJuIHRoaXMuX2xlYXZpbmc9ITAsaXQoZiwiYWZ0ZXJMZWF2ZSIsZnVuY3Rpb24oKXt0Ll9sZWF2aW5nPSExLHQuJGZvcmNlVXBkYXRlKCl9KSxybyhlLG8pO2lmKCJpbi1vdXQiPT09cil7aWYoVXQoYSkpcmV0dXJuIHU7dmFyIHAsZD1mdW5jdGlvbigpe3AoKX07aXQoYywiYWZ0ZXJFbnRlciIsZCksaXQoYywiZW50ZXJDYW5jZWxsZWQiLGQpLGl0KGYsImRlbGF5TGVhdmUiLGZ1bmN0aW9uKGUpe3A9ZX0pfX1yZXR1cm4gb319fSxzbz1BKHt0YWc6U3RyaW5nLG1vdmVDbGFzczpTdHJpbmd9LGVvKTtmdW5jdGlvbiBjbyhlKXtlLmVsbS5fbW92ZUNiJiZlLmVsbS5fbW92ZUNiKCksZS5lbG0uX2VudGVyQ2ImJmUuZWxtLl9lbnRlckNiKCl9ZnVuY3Rpb24gdW8oZSl7ZS5kYXRhLm5ld1Bvcz1lLmVsbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKX1mdW5jdGlvbiBsbyhlKXt2YXIgdD1lLmRhdGEucG9zLG49ZS5kYXRhLm5ld1BvcyxyPXQubGVmdC1uLmxlZnQsaT10LnRvcC1uLnRvcDtpZihyfHxpKXtlLmRhdGEubW92ZWQ9ITA7dmFyIG89ZS5lbG0uc3R5bGU7by50cmFuc2Zvcm09by5XZWJraXRUcmFuc2Zvcm09InRyYW5zbGF0ZSgiK3IrInB4LCIraSsicHgpIixvLnRyYW5zaXRpb25EdXJhdGlvbj0iMHMifX1kZWxldGUgc28ubW9kZTt2YXIgZm89e1RyYW5zaXRpb246YW8sVHJhbnNpdGlvbkdyb3VwOntwcm9wczpzbyxiZWZvcmVNb3VudDpmdW5jdGlvbigpe3ZhciBlPXRoaXMsdD10aGlzLl91cGRhdGU7dGhpcy5fdXBkYXRlPWZ1bmN0aW9uKG4scil7dmFyIGk9WnQoZSk7ZS5fX3BhdGNoX18oZS5fdm5vZGUsZS5rZXB0LCExLCEwKSxlLl92bm9kZT1lLmtlcHQsaSgpLHQuY2FsbChlLG4scil9fSxyZW5kZXI6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PXRoaXMudGFnfHx0aGlzLiR2bm9kZS5kYXRhLnRhZ3x8InNwYW4iLG49T2JqZWN0LmNyZWF0ZShudWxsKSxyPXRoaXMucHJldkNoaWxkcmVuPXRoaXMuY2hpbGRyZW4saT10aGlzLiRzbG90cy5kZWZhdWx0fHxbXSxvPXRoaXMuY2hpbGRyZW49W10sYT1ubyh0aGlzKSxzPTA7czxpLmxlbmd0aDtzKyspe3ZhciBjPWlbc107Yy50YWcmJm51bGwhPWMua2V5JiYwIT09U3RyaW5nKGMua2V5KS5pbmRleE9mKCJfX3ZsaXN0IikmJihvLnB1c2goYyksbltjLmtleV09YywoYy5kYXRhfHwoYy5kYXRhPXt9KSkudHJhbnNpdGlvbj1hKX1pZihyKXtmb3IodmFyIHU9W10sbD1bXSxmPTA7ZjxyLmxlbmd0aDtmKyspe3ZhciBwPXJbZl07cC5kYXRhLnRyYW5zaXRpb249YSxwLmRhdGEucG9zPXAuZWxtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLG5bcC5rZXldP3UucHVzaChwKTpsLnB1c2gocCl9dGhpcy5rZXB0PWUodCxudWxsLHUpLHRoaXMucmVtb3ZlZD1sfXJldHVybiBlKHQsbnVsbCxvKX0sdXBkYXRlZDpmdW5jdGlvbigpe3ZhciBlPXRoaXMucHJldkNoaWxkcmVuLHQ9dGhpcy5tb3ZlQ2xhc3N8fCh0aGlzLm5hbWV8fCJ2IikrIi1tb3ZlIjtlLmxlbmd0aCYmdGhpcy5oYXNNb3ZlKGVbMF0uZWxtLHQpJiYoZS5mb3JFYWNoKGNvKSxlLmZvckVhY2godW8pLGUuZm9yRWFjaChsbyksdGhpcy5fcmVmbG93PWRvY3VtZW50LmJvZHkub2Zmc2V0SGVpZ2h0LGUuZm9yRWFjaChmdW5jdGlvbihlKXtpZihlLmRhdGEubW92ZWQpe3ZhciBuPWUuZWxtLHI9bi5zdHlsZTtOaShuLHQpLHIudHJhbnNmb3JtPXIuV2Via2l0VHJhbnNmb3JtPXIudHJhbnNpdGlvbkR1cmF0aW9uPSIiLG4uYWRkRXZlbnRMaXN0ZW5lcihBaSxuLl9tb3ZlQ2I9ZnVuY3Rpb24gZShyKXtyJiZyLnRhcmdldCE9PW58fHImJiEvdHJhbnNmb3JtJC8udGVzdChyLnByb3BlcnR5TmFtZSl8fChuLnJlbW92ZUV2ZW50TGlzdGVuZXIoQWksZSksbi5fbW92ZUNiPW51bGwsamkobix0KSl9KX19KSl9LG1ldGhvZHM6e2hhc01vdmU6ZnVuY3Rpb24oZSx0KXtpZighd2kpcmV0dXJuITE7aWYodGhpcy5faGFzTW92ZSlyZXR1cm4gdGhpcy5faGFzTW92ZTt2YXIgbj1lLmNsb25lTm9kZSgpO2UuX3RyYW5zaXRpb25DbGFzc2VzJiZlLl90cmFuc2l0aW9uQ2xhc3Nlcy5mb3JFYWNoKGZ1bmN0aW9uKGUpe19pKG4sZSl9KSxnaShuLHQpLG4uc3R5bGUuZGlzcGxheT0ibm9uZSIsdGhpcy4kZWwuYXBwZW5kQ2hpbGQobik7dmFyIHI9TWkobik7cmV0dXJuIHRoaXMuJGVsLnJlbW92ZUNoaWxkKG4pLHRoaXMuX2hhc01vdmU9ci5oYXNUcmFuc2Zvcm19fX19O3duLmNvbmZpZy5tdXN0VXNlUHJvcD1qbix3bi5jb25maWcuaXNSZXNlcnZlZFRhZz1Xbix3bi5jb25maWcuaXNSZXNlcnZlZEF0dHI9RW4sd24uY29uZmlnLmdldFRhZ05hbWVzcGFjZT1abix3bi5jb25maWcuaXNVbmtub3duRWxlbWVudD1mdW5jdGlvbihlKXtpZigheilyZXR1cm4hMDtpZihXbihlKSlyZXR1cm4hMTtpZihlPWUudG9Mb3dlckNhc2UoKSxudWxsIT1HbltlXSlyZXR1cm4gR25bZV07dmFyIHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChlKTtyZXR1cm4gZS5pbmRleE9mKCItIik+LTE\/R25bZV09dC5jb25zdHJ1Y3Rvcj09PXdpbmRvdy5IVE1MVW5rbm93bkVsZW1lbnR8fHQuY29uc3RydWN0b3I9PT13aW5kb3cuSFRNTEVsZW1lbnQ6R25bZV09L0hUTUxVbmtub3duRWxlbWVudC8udGVzdCh0LnRvU3RyaW5nKCkpfSxBKHduLm9wdGlvbnMuZGlyZWN0aXZlcyxRaSksQSh3bi5vcHRpb25zLmNvbXBvbmVudHMsZm8pLHduLnByb3RvdHlwZS5fX3BhdGNoX189ej96aTpTLHduLnByb3RvdHlwZS4kbW91bnQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZnVuY3Rpb24oZSx0LG4pe3ZhciByO3JldHVybiBlLiRlbD10LGUuJG9wdGlvbnMucmVuZGVyfHwoZS4kb3B0aW9ucy5yZW5kZXI9dmUpLFl0KGUsImJlZm9yZU1vdW50Iikscj1mdW5jdGlvbigpe2UuX3VwZGF0ZShlLl9yZW5kZXIoKSxuKX0sbmV3IGZuKGUscixTLHtiZWZvcmU6ZnVuY3Rpb24oKXtlLl9pc01vdW50ZWQmJiFlLl9pc0Rlc3Ryb3llZCYmWXQoZSwiYmVmb3JlVXBkYXRlIil9fSwhMCksbj0hMSxudWxsPT1lLiR2bm9kZSYmKGUuX2lzTW91bnRlZD0hMCxZdChlLCJtb3VudGVkIikpLGV9KHRoaXMsZT1lJiZ6P1luKGUpOnZvaWQgMCx0KX0seiYmc2V0VGltZW91dChmdW5jdGlvbigpe0YuZGV2dG9vbHMmJm5lJiZuZS5lbWl0KCJpbml0Iix3bil9LDApO3ZhciBwbz0vXHtceygoPzoufFxyP1xuKSs\/KVx9XH0vZyx2bz0vWy0uKis\/XiR7fSgpfFtcXVwvXFxdL2csaG89ZyhmdW5jdGlvbihlKXt2YXIgdD1lWzBdLnJlcGxhY2Uodm8sIlxcJCYiKSxuPWVbMV0ucmVwbGFjZSh2bywiXFwkJiIpO3JldHVybiBuZXcgUmVnRXhwKHQrIigoPzoufFxcbikrPykiK24sImciKX0pO3ZhciBtbz17c3RhdGljS2V5czpbInN0YXRpY0NsYXNzIl0sdHJhbnNmb3JtTm9kZTpmdW5jdGlvbihlLHQpe3Qud2Fybjt2YXIgbj1GcihlLCJjbGFzcyIpO24mJihlLnN0YXRpY0NsYXNzPUpTT04uc3RyaW5naWZ5KG4pKTt2YXIgcj1JcihlLCJjbGFzcyIsITEpO3ImJihlLmNsYXNzQmluZGluZz1yKX0sZ2VuRGF0YTpmdW5jdGlvbihlKXt2YXIgdD0iIjtyZXR1cm4gZS5zdGF0aWNDbGFzcyYmKHQrPSJzdGF0aWNDbGFzczoiK2Uuc3RhdGljQ2xhc3MrIiwiKSxlLmNsYXNzQmluZGluZyYmKHQrPSJjbGFzczoiK2UuY2xhc3NCaW5kaW5nKyIsIiksdH19O3ZhciB5byxnbz17c3RhdGljS2V5czpbInN0YXRpY1N0eWxlIl0sdHJhbnNmb3JtTm9kZTpmdW5jdGlvbihlLHQpe3Qud2Fybjt2YXIgbj1GcihlLCJzdHlsZSIpO24mJihlLnN0YXRpY1N0eWxlPUpTT04uc3RyaW5naWZ5KGFpKG4pKSk7dmFyIHI9SXIoZSwic3R5bGUiLCExKTtyJiYoZS5zdHlsZUJpbmRpbmc9cil9LGdlbkRhdGE6ZnVuY3Rpb24oZSl7dmFyIHQ9IiI7cmV0dXJuIGUuc3RhdGljU3R5bGUmJih0Kz0ic3RhdGljU3R5bGU6IitlLnN0YXRpY1N0eWxlKyIsIiksZS5zdHlsZUJpbmRpbmcmJih0Kz0ic3R5bGU6KCIrZS5zdHlsZUJpbmRpbmcrIiksIiksdH19LF9vPWZ1bmN0aW9uKGUpe3JldHVybih5bz15b3x8ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IikpLmlubmVySFRNTD1lLHlvLnRleHRDb250ZW50fSxibz1wKCJhcmVhLGJhc2UsYnIsY29sLGVtYmVkLGZyYW1lLGhyLGltZyxpbnB1dCxpc2luZGV4LGtleWdlbixsaW5rLG1ldGEscGFyYW0sc291cmNlLHRyYWNrLHdiciIpLCRvPXAoImNvbGdyb3VwLGRkLGR0LGxpLG9wdGlvbnMscCx0ZCx0Zm9vdCx0aCx0aGVhZCx0cixzb3VyY2UiKSx3bz1wKCJhZGRyZXNzLGFydGljbGUsYXNpZGUsYmFzZSxibG9ja3F1b3RlLGJvZHksY2FwdGlvbixjb2wsY29sZ3JvdXAsZGQsZGV0YWlscyxkaWFsb2csZGl2LGRsLGR0LGZpZWxkc2V0LGZpZ2NhcHRpb24sZmlndXJlLGZvb3Rlcixmb3JtLGgxLGgyLGgzLGg0LGg1LGg2LGhlYWQsaGVhZGVyLGhncm91cCxocixodG1sLGxlZ2VuZCxsaSxtZW51aXRlbSxtZXRhLG9wdGdyb3VwLG9wdGlvbixwYXJhbSxycCxydCxzb3VyY2Usc3R5bGUsc3VtbWFyeSx0Ym9keSx0ZCx0Zm9vdCx0aCx0aGVhZCx0aXRsZSx0cix0cmFjayIpLENvPS9eXHMqKFteXHMiJzw+XC89XSspKD86XHMqKD0pXHMqKD86IihbXiJdKikiK3wnKFteJ10qKScrfChbXlxzIic9PD5gXSspKSk\/Lyx4bz0vXlxzKigoPzp2LVtcdy1dKzp8QHw6fCMpXFtbXj1dK1xdW15ccyInPD5cLz1dKikoPzpccyooPSlccyooPzoiKFteIl0qKSIrfCcoW14nXSopJyt8KFteXHMiJz08PmBdKykpKT8vLGtvPSJbYS16QS1aX11bXFwtXFwuMC05X2EtekEtWiIrUC5zb3VyY2UrIl0qIixBbz0iKCg\/OiIra28rIlxcOik\/IitrbysiKSIsT289bmV3IFJlZ0V4cCgiXjwiK0FvKSxTbz0vXlxzKihcLz8pPi8sVG89bmV3IFJlZ0V4cCgiXjxcXC8iK0FvKyJbXj5dKj4iKSxFbz0vXjwhRE9DVFlQRSBbXj5dKz4vaSxObz0vXjwhXC0tLyxqbz0vXjwhXFsvLERvPXAoInNjcmlwdCxzdHlsZSx0ZXh0YXJlYSIsITApLExvPXt9LE1vPXsiJmx0OyI6IjwiLCImZ3Q7IjoiPiIsIiZxdW90OyI6JyInLCImYW1wOyI6IiYiLCImIzEwOyI6IlxuIiwiJiM5OyI6Ilx0IiwiJiMzOTsiOiInIn0sSW89LyYoPzpsdHxndHxxdW90fGFtcHwjMzkpOy9nLEZvPS8mKD86bHR8Z3R8cXVvdHxhbXB8IzM5fCMxMHwjOSk7L2csUG89cCgicHJlLHRleHRhcmVhIiwhMCksUm89ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZSYmUG8oZSkmJiJcbiI9PT10WzBdfTtmdW5jdGlvbiBIbyhlLHQpe3ZhciBuPXQ\/Rm86SW87cmV0dXJuIGUucmVwbGFjZShuLGZ1bmN0aW9uKGUpe3JldHVybiBNb1tlXX0pfXZhciBCbyxVbyx6byxWbyxLbyxKbyxxbyxXbyxabz0vXkB8XnYtb246LyxHbz0vXnYtfF5AfF46fF4jLyxYbz0vKFtcc1xTXSo\/KVxzKyg\/OmlufG9mKVxzKyhbXHNcU10qKS8sWW89LywoW14sXH1cXV0qKSg\/OiwoW14sXH1cXV0qKSk\/JC8sUW89L15cKHxcKSQvZyxlYT0vXlxbLipcXSQvLHRhPS86KC4qKSQvLG5hPS9eOnxeXC58XnYtYmluZDovLHJhPS9cLlteLlxdXSsoPz1bXlxdXSokKS9nLGlhPS9edi1zbG90KDp8JCl8XiMvLG9hPS9bXHJcbl0vLGFhPS9ccysvZyxzYT1nKF9vKSxjYT0iX2VtcHR5XyI7ZnVuY3Rpb24gdWEoZSx0LG4pe3JldHVybnt0eXBlOjEsdGFnOmUsYXR0cnNMaXN0OnQsYXR0cnNNYXA6bWEodCkscmF3QXR0cnNNYXA6e30scGFyZW50Om4sY2hpbGRyZW46W119fWZ1bmN0aW9uIGxhKGUsdCl7Qm89dC53YXJufHxTcixKbz10LmlzUHJlVGFnfHxULHFvPXQubXVzdFVzZVByb3B8fFQsV289dC5nZXRUYWdOYW1lc3BhY2V8fFQ7dC5pc1Jlc2VydmVkVGFnO3pvPVRyKHQubW9kdWxlcywidHJhbnNmb3JtTm9kZSIpLFZvPVRyKHQubW9kdWxlcywicHJlVHJhbnNmb3JtTm9kZSIpLEtvPVRyKHQubW9kdWxlcywicG9zdFRyYW5zZm9ybU5vZGUiKSxVbz10LmRlbGltaXRlcnM7dmFyIG4scixpPVtdLG89ITEhPT10LnByZXNlcnZlV2hpdGVzcGFjZSxhPXQud2hpdGVzcGFjZSxzPSExLGM9ITE7ZnVuY3Rpb24gdShlKXtpZihsKGUpLHN8fGUucHJvY2Vzc2VkfHwoZT1mYShlLHQpKSxpLmxlbmd0aHx8ZT09PW58fG4uaWYmJihlLmVsc2VpZnx8ZS5lbHNlKSYmZGEobix7ZXhwOmUuZWxzZWlmLGJsb2NrOmV9KSxyJiYhZS5mb3JiaWRkZW4paWYoZS5lbHNlaWZ8fGUuZWxzZSlhPWUsKHU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5sZW5ndGg7Zm9yKDt0LS07KXtpZigxPT09ZVt0XS50eXBlKXJldHVybiBlW3RdO2UucG9wKCl9fShyLmNoaWxkcmVuKSkmJnUuaWYmJmRhKHUse2V4cDphLmVsc2VpZixibG9jazphfSk7ZWxzZXtpZihlLnNsb3RTY29wZSl7dmFyIG89ZS5zbG90VGFyZ2V0fHwnImRlZmF1bHQiJzsoci5zY29wZWRTbG90c3x8KHIuc2NvcGVkU2xvdHM9e30pKVtvXT1lfXIuY2hpbGRyZW4ucHVzaChlKSxlLnBhcmVudD1yfXZhciBhLHU7ZS5jaGlsZHJlbj1lLmNoaWxkcmVuLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4hZS5zbG90U2NvcGV9KSxsKGUpLGUucHJlJiYocz0hMSksSm8oZS50YWcpJiYoYz0hMSk7Zm9yKHZhciBmPTA7ZjxLby5sZW5ndGg7ZisrKUtvW2ZdKGUsdCl9ZnVuY3Rpb24gbChlKXtpZighYylmb3IodmFyIHQ7KHQ9ZS5jaGlsZHJlbltlLmNoaWxkcmVuLmxlbmd0aC0xXSkmJjM9PT10LnR5cGUmJiIgIj09PXQudGV4dDspZS5jaGlsZHJlbi5wb3AoKX1yZXR1cm4gZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4scixpPVtdLG89dC5leHBlY3RIVE1MLGE9dC5pc1VuYXJ5VGFnfHxULHM9dC5jYW5CZUxlZnRPcGVuVGFnfHxULGM9MDtlOyl7aWYobj1lLHImJkRvKHIpKXt2YXIgdT0wLGw9ci50b0xvd2VyQ2FzZSgpLGY9TG9bbF18fChMb1tsXT1uZXcgUmVnRXhwKCIoW1xcc1xcU10qPykoPC8iK2wrIltePl0qPikiLCJpIikpLHA9ZS5yZXBsYWNlKGYsZnVuY3Rpb24oZSxuLHIpe3JldHVybiB1PXIubGVuZ3RoLERvKGwpfHwibm9zY3JpcHQiPT09bHx8KG49bi5yZXBsYWNlKC88IVwtLShbXHNcU10qPyktLT4vZywiJDEiKS5yZXBsYWNlKC88IVxbQ0RBVEFcWyhbXHNcU10qPyldXT4vZywiJDEiKSksUm8obCxuKSYmKG49bi5zbGljZSgxKSksdC5jaGFycyYmdC5jaGFycyhuKSwiIn0pO2MrPWUubGVuZ3RoLXAubGVuZ3RoLGU9cCxBKGwsYy11LGMpfWVsc2V7dmFyIGQ9ZS5pbmRleE9mKCI8Iik7aWYoMD09PWQpe2lmKE5vLnRlc3QoZSkpe3ZhciB2PWUuaW5kZXhPZigiLS1ceDNlIik7aWYodj49MCl7dC5zaG91bGRLZWVwQ29tbWVudCYmdC5jb21tZW50KGUuc3Vic3RyaW5nKDQsdiksYyxjK3YrMyksQyh2KzMpO2NvbnRpbnVlfX1pZihqby50ZXN0KGUpKXt2YXIgaD1lLmluZGV4T2YoIl0+Iik7aWYoaD49MCl7QyhoKzIpO2NvbnRpbnVlfX12YXIgbT1lLm1hdGNoKEVvKTtpZihtKXtDKG1bMF0ubGVuZ3RoKTtjb250aW51ZX12YXIgeT1lLm1hdGNoKFRvKTtpZih5KXt2YXIgZz1jO0MoeVswXS5sZW5ndGgpLEEoeVsxXSxnLGMpO2NvbnRpbnVlfXZhciBfPXgoKTtpZihfKXtrKF8pLFJvKF8udGFnTmFtZSxlKSYmQygxKTtjb250aW51ZX19dmFyIGI9dm9pZCAwLCQ9dm9pZCAwLHc9dm9pZCAwO2lmKGQ+PTApe2ZvcigkPWUuc2xpY2UoZCk7IShUby50ZXN0KCQpfHxPby50ZXN0KCQpfHxOby50ZXN0KCQpfHxqby50ZXN0KCQpfHwodz0kLmluZGV4T2YoIjwiLDEpKTwwKTspZCs9dywkPWUuc2xpY2UoZCk7Yj1lLnN1YnN0cmluZygwLGQpfWQ8MCYmKGI9ZSksYiYmQyhiLmxlbmd0aCksdC5jaGFycyYmYiYmdC5jaGFycyhiLGMtYi5sZW5ndGgsYyl9aWYoZT09PW4pe3QuY2hhcnMmJnQuY2hhcnMoZSk7YnJlYWt9fWZ1bmN0aW9uIEModCl7Yys9dCxlPWUuc3Vic3RyaW5nKHQpfWZ1bmN0aW9uIHgoKXt2YXIgdD1lLm1hdGNoKE9vKTtpZih0KXt2YXIgbixyLGk9e3RhZ05hbWU6dFsxXSxhdHRyczpbXSxzdGFydDpjfTtmb3IoQyh0WzBdLmxlbmd0aCk7IShuPWUubWF0Y2goU28pKSYmKHI9ZS5tYXRjaCh4byl8fGUubWF0Y2goQ28pKTspci5zdGFydD1jLEMoclswXS5sZW5ndGgpLHIuZW5kPWMsaS5hdHRycy5wdXNoKHIpO2lmKG4pcmV0dXJuIGkudW5hcnlTbGFzaD1uWzFdLEMoblswXS5sZW5ndGgpLGkuZW5kPWMsaX19ZnVuY3Rpb24gayhlKXt2YXIgbj1lLnRhZ05hbWUsYz1lLnVuYXJ5U2xhc2g7byYmKCJwIj09PXImJndvKG4pJiZBKHIpLHMobikmJnI9PT1uJiZBKG4pKTtmb3IodmFyIHU9YShuKXx8ISFjLGw9ZS5hdHRycy5sZW5ndGgsZj1uZXcgQXJyYXkobCkscD0wO3A8bDtwKyspe3ZhciBkPWUuYXR0cnNbcF0sdj1kWzNdfHxkWzRdfHxkWzVdfHwiIixoPSJhIj09PW4mJiJocmVmIj09PWRbMV0\/dC5zaG91bGREZWNvZGVOZXdsaW5lc0ZvckhyZWY6dC5zaG91bGREZWNvZGVOZXdsaW5lcztmW3BdPXtuYW1lOmRbMV0sdmFsdWU6SG8odixoKX19dXx8KGkucHVzaCh7dGFnOm4sbG93ZXJDYXNlZFRhZzpuLnRvTG93ZXJDYXNlKCksYXR0cnM6ZixzdGFydDplLnN0YXJ0LGVuZDplLmVuZH0pLHI9biksdC5zdGFydCYmdC5zdGFydChuLGYsdSxlLnN0YXJ0LGUuZW5kKX1mdW5jdGlvbiBBKGUsbixvKXt2YXIgYSxzO2lmKG51bGw9PW4mJihuPWMpLG51bGw9PW8mJihvPWMpLGUpZm9yKHM9ZS50b0xvd2VyQ2FzZSgpLGE9aS5sZW5ndGgtMTthPj0wJiZpW2FdLmxvd2VyQ2FzZWRUYWchPT1zO2EtLSk7ZWxzZSBhPTA7aWYoYT49MCl7Zm9yKHZhciB1PWkubGVuZ3RoLTE7dT49YTt1LS0pdC5lbmQmJnQuZW5kKGlbdV0udGFnLG4sbyk7aS5sZW5ndGg9YSxyPWEmJmlbYS0xXS50YWd9ZWxzZSJiciI9PT1zP3Quc3RhcnQmJnQuc3RhcnQoZSxbXSwhMCxuLG8pOiJwIj09PXMmJih0LnN0YXJ0JiZ0LnN0YXJ0KGUsW10sITEsbixvKSx0LmVuZCYmdC5lbmQoZSxuLG8pKX1BKCl9KGUse3dhcm46Qm8sZXhwZWN0SFRNTDp0LmV4cGVjdEhUTUwsaXNVbmFyeVRhZzp0LmlzVW5hcnlUYWcsY2FuQmVMZWZ0T3BlblRhZzp0LmNhbkJlTGVmdE9wZW5UYWcsc2hvdWxkRGVjb2RlTmV3bGluZXM6dC5zaG91bGREZWNvZGVOZXdsaW5lcyxzaG91bGREZWNvZGVOZXdsaW5lc0ZvckhyZWY6dC5zaG91bGREZWNvZGVOZXdsaW5lc0ZvckhyZWYsc2hvdWxkS2VlcENvbW1lbnQ6dC5jb21tZW50cyxvdXRwdXRTb3VyY2VSYW5nZTp0Lm91dHB1dFNvdXJjZVJhbmdlLHN0YXJ0OmZ1bmN0aW9uKGUsbyxhLGwsZil7dmFyIHA9ciYmci5uc3x8V28oZSk7cSYmInN2ZyI9PT1wJiYobz1mdW5jdGlvbihlKXtmb3IodmFyIHQ9W10sbj0wO248ZS5sZW5ndGg7bisrKXt2YXIgcj1lW25dO3lhLnRlc3Qoci5uYW1lKXx8KHIubmFtZT1yLm5hbWUucmVwbGFjZShnYSwiIiksdC5wdXNoKHIpKX1yZXR1cm4gdH0obykpO3ZhciBkLHY9dWEoZSxvLHIpO3AmJih2Lm5zPXApLCJzdHlsZSIhPT0oZD12KS50YWcmJigic2NyaXB0IiE9PWQudGFnfHxkLmF0dHJzTWFwLnR5cGUmJiJ0ZXh0L2phdmFzY3JpcHQiIT09ZC5hdHRyc01hcC50eXBlKXx8dGUoKXx8KHYuZm9yYmlkZGVuPSEwKTtmb3IodmFyIGg9MDtoPFZvLmxlbmd0aDtoKyspdj1Wb1toXSh2LHQpfHx2O3N8fCghZnVuY3Rpb24oZSl7bnVsbCE9RnIoZSwidi1wcmUiKSYmKGUucHJlPSEwKX0odiksdi5wcmUmJihzPSEwKSksSm8odi50YWcpJiYoYz0hMCkscz9mdW5jdGlvbihlKXt2YXIgdD1lLmF0dHJzTGlzdCxuPXQubGVuZ3RoO2lmKG4pZm9yKHZhciByPWUuYXR0cnM9bmV3IEFycmF5KG4pLGk9MDtpPG47aSsrKXJbaV09e25hbWU6dFtpXS5uYW1lLHZhbHVlOkpTT04uc3RyaW5naWZ5KHRbaV0udmFsdWUpfSxudWxsIT10W2ldLnN0YXJ0JiYocltpXS5zdGFydD10W2ldLnN0YXJ0LHJbaV0uZW5kPXRbaV0uZW5kKTtlbHNlIGUucHJlfHwoZS5wbGFpbj0hMCl9KHYpOnYucHJvY2Vzc2VkfHwocGEodiksZnVuY3Rpb24oZSl7dmFyIHQ9RnIoZSwidi1pZiIpO2lmKHQpZS5pZj10LGRhKGUse2V4cDp0LGJsb2NrOmV9KTtlbHNle251bGwhPUZyKGUsInYtZWxzZSIpJiYoZS5lbHNlPSEwKTt2YXIgbj1GcihlLCJ2LWVsc2UtaWYiKTtuJiYoZS5lbHNlaWY9bil9fSh2KSxmdW5jdGlvbihlKXtudWxsIT1GcihlLCJ2LW9uY2UiKSYmKGUub25jZT0hMCl9KHYpKSxufHwobj12KSxhP3Uodik6KHI9dixpLnB1c2godikpfSxlbmQ6ZnVuY3Rpb24oZSx0LG4pe3ZhciBvPWlbaS5sZW5ndGgtMV07aS5sZW5ndGgtPTEscj1pW2kubGVuZ3RoLTFdLHUobyl9LGNoYXJzOmZ1bmN0aW9uKGUsdCxuKXtpZihyJiYoIXF8fCJ0ZXh0YXJlYSIhPT1yLnRhZ3x8ci5hdHRyc01hcC5wbGFjZWhvbGRlciE9PWUpKXt2YXIgaSx1LGwsZj1yLmNoaWxkcmVuO2lmKGU9Y3x8ZS50cmltKCk\/InNjcmlwdCI9PT0oaT1yKS50YWd8fCJzdHlsZSI9PT1pLnRhZz9lOnNhKGUpOmYubGVuZ3RoP2E\/ImNvbmRlbnNlIj09PWEmJm9hLnRlc3QoZSk\/IiI6IiAiOm8\/IiAiOiIiOiIiKWN8fCJjb25kZW5zZSIhPT1hfHwoZT1lLnJlcGxhY2UoYWEsIiAiKSksIXMmJiIgIiE9PWUmJih1PWZ1bmN0aW9uKGUsdCl7dmFyIG49dD9obyh0KTpwbztpZihuLnRlc3QoZSkpe2Zvcih2YXIgcixpLG8sYT1bXSxzPVtdLGM9bi5sYXN0SW5kZXg9MDtyPW4uZXhlYyhlKTspeyhpPXIuaW5kZXgpPmMmJihzLnB1c2gobz1lLnNsaWNlKGMsaSkpLGEucHVzaChKU09OLnN0cmluZ2lmeShvKSkpO3ZhciB1PUFyKHJbMV0udHJpbSgpKTthLnB1c2goIl9zKCIrdSsiKSIpLHMucHVzaCh7IkBiaW5kaW5nIjp1fSksYz1pK3JbMF0ubGVuZ3RofXJldHVybiBjPGUubGVuZ3RoJiYocy5wdXNoKG89ZS5zbGljZShjKSksYS5wdXNoKEpTT04uc3RyaW5naWZ5KG8pKSkse2V4cHJlc3Npb246YS5qb2luKCIrIiksdG9rZW5zOnN9fX0oZSxVbykpP2w9e3R5cGU6MixleHByZXNzaW9uOnUuZXhwcmVzc2lvbix0b2tlbnM6dS50b2tlbnMsdGV4dDplfToiICI9PT1lJiZmLmxlbmd0aCYmIiAiPT09ZltmLmxlbmd0aC0xXS50ZXh0fHwobD17dHlwZTozLHRleHQ6ZX0pLGwmJmYucHVzaChsKX19LGNvbW1lbnQ6ZnVuY3Rpb24oZSx0LG4pe2lmKHIpe3ZhciBpPXt0eXBlOjMsdGV4dDplLGlzQ29tbWVudDohMH07ci5jaGlsZHJlbi5wdXNoKGkpfX19KSxufWZ1bmN0aW9uIGZhKGUsdCl7dmFyIG4scjsocj1JcihuPWUsImtleSIpKSYmKG4ua2V5PXIpLGUucGxhaW49IWUua2V5JiYhZS5zY29wZWRTbG90cyYmIWUuYXR0cnNMaXN0Lmxlbmd0aCxmdW5jdGlvbihlKXt2YXIgdD1JcihlLCJyZWYiKTt0JiYoZS5yZWY9dCxlLnJlZkluRm9yPWZ1bmN0aW9uKGUpe3ZhciB0PWU7Zm9yKDt0Oyl7aWYodm9pZCAwIT09dC5mb3IpcmV0dXJuITA7dD10LnBhcmVudH1yZXR1cm4hMX0oZSkpfShlKSxmdW5jdGlvbihlKXt2YXIgdDsidGVtcGxhdGUiPT09ZS50YWc\/KHQ9RnIoZSwic2NvcGUiKSxlLnNsb3RTY29wZT10fHxGcihlLCJzbG90LXNjb3BlIikpOih0PUZyKGUsInNsb3Qtc2NvcGUiKSkmJihlLnNsb3RTY29wZT10KTt2YXIgbj1JcihlLCJzbG90Iik7biYmKGUuc2xvdFRhcmdldD0nIiInPT09bj8nImRlZmF1bHQiJzpuLGUuc2xvdFRhcmdldER5bmFtaWM9ISghZS5hdHRyc01hcFsiOnNsb3QiXSYmIWUuYXR0cnNNYXBbInYtYmluZDpzbG90Il0pLCJ0ZW1wbGF0ZSI9PT1lLnRhZ3x8ZS5zbG90U2NvcGV8fE5yKGUsInNsb3QiLG4sZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5yYXdBdHRyc01hcFsiOiIrdF18fGUucmF3QXR0cnNNYXBbInYtYmluZDoiK3RdfHxlLnJhd0F0dHJzTWFwW3RdfShlLCJzbG90IikpKTtpZigidGVtcGxhdGUiPT09ZS50YWcpe3ZhciByPVByKGUsaWEpO2lmKHIpe3ZhciBpPXZhKHIpLG89aS5uYW1lLGE9aS5keW5hbWljO2Uuc2xvdFRhcmdldD1vLGUuc2xvdFRhcmdldER5bmFtaWM9YSxlLnNsb3RTY29wZT1yLnZhbHVlfHxjYX19ZWxzZXt2YXIgcz1QcihlLGlhKTtpZihzKXt2YXIgYz1lLnNjb3BlZFNsb3RzfHwoZS5zY29wZWRTbG90cz17fSksdT12YShzKSxsPXUubmFtZSxmPXUuZHluYW1pYyxwPWNbbF09dWEoInRlbXBsYXRlIixbXSxlKTtwLnNsb3RUYXJnZXQ9bCxwLnNsb3RUYXJnZXREeW5hbWljPWYscC5jaGlsZHJlbj1lLmNoaWxkcmVuLmZpbHRlcihmdW5jdGlvbihlKXtpZighZS5zbG90U2NvcGUpcmV0dXJuIGUucGFyZW50PXAsITB9KSxwLnNsb3RTY29wZT1zLnZhbHVlfHxjYSxlLmNoaWxkcmVuPVtdLGUucGxhaW49ITF9fX0oZSksZnVuY3Rpb24oZSl7InNsb3QiPT09ZS50YWcmJihlLnNsb3ROYW1lPUlyKGUsIm5hbWUiKSl9KGUpLGZ1bmN0aW9uKGUpe3ZhciB0Oyh0PUlyKGUsImlzIikpJiYoZS5jb21wb25lbnQ9dCk7bnVsbCE9RnIoZSwiaW5saW5lLXRlbXBsYXRlIikmJihlLmlubGluZVRlbXBsYXRlPSEwKX0oZSk7Zm9yKHZhciBpPTA7aTx6by5sZW5ndGg7aSsrKWU9em9baV0oZSx0KXx8ZTtyZXR1cm4gZnVuY3Rpb24oZSl7dmFyIHQsbixyLGksbyxhLHMsYyx1PWUuYXR0cnNMaXN0O2Zvcih0PTAsbj11Lmxlbmd0aDt0PG47dCsrKWlmKHI9aT11W3RdLm5hbWUsbz11W3RdLnZhbHVlLEdvLnRlc3QocikpaWYoZS5oYXNCaW5kaW5ncz0hMCwoYT1oYShyLnJlcGxhY2UoR28sIiIpKSkmJihyPXIucmVwbGFjZShyYSwiIikpLG5hLnRlc3Qocikpcj1yLnJlcGxhY2UobmEsIiIpLG89QXIobyksKGM9ZWEudGVzdChyKSkmJihyPXIuc2xpY2UoMSwtMSkpLGEmJihhLnByb3AmJiFjJiYiaW5uZXJIdG1sIj09PShyPWIocikpJiYocj0iaW5uZXJIVE1MIiksYS5jYW1lbCYmIWMmJihyPWIocikpLGEuc3luYyYmKHM9QnIobywiJGV2ZW50IiksYz9NcihlLCcidXBkYXRlOiIrKCcrcisiKSIscyxudWxsLCExLDAsdVt0XSwhMCk6KE1yKGUsInVwZGF0ZToiK2IocikscyxudWxsLCExLDAsdVt0XSksQyhyKSE9PWIocikmJk1yKGUsInVwZGF0ZToiK0MocikscyxudWxsLCExLDAsdVt0XSkpKSksYSYmYS5wcm9wfHwhZS5jb21wb25lbnQmJnFvKGUudGFnLGUuYXR0cnNNYXAudHlwZSxyKT9FcihlLHIsbyx1W3RdLGMpOk5yKGUscixvLHVbdF0sYyk7ZWxzZSBpZihaby50ZXN0KHIpKXI9ci5yZXBsYWNlKFpvLCIiKSwoYz1lYS50ZXN0KHIpKSYmKHI9ci5zbGljZSgxLC0xKSksTXIoZSxyLG8sYSwhMSwwLHVbdF0sYyk7ZWxzZXt2YXIgbD0ocj1yLnJlcGxhY2UoR28sIiIpKS5tYXRjaCh0YSksZj1sJiZsWzFdO2M9ITEsZiYmKHI9ci5zbGljZSgwLC0oZi5sZW5ndGgrMSkpLGVhLnRlc3QoZikmJihmPWYuc2xpY2UoMSwtMSksYz0hMCkpLERyKGUscixpLG8sZixjLGEsdVt0XSl9ZWxzZSBOcihlLHIsSlNPTi5zdHJpbmdpZnkobyksdVt0XSksIWUuY29tcG9uZW50JiYibXV0ZWQiPT09ciYmcW8oZS50YWcsZS5hdHRyc01hcC50eXBlLHIpJiZFcihlLHIsInRydWUiLHVbdF0pfShlKSxlfWZ1bmN0aW9uIHBhKGUpe3ZhciB0O2lmKHQ9RnIoZSwidi1mb3IiKSl7dmFyIG49ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5tYXRjaChYbyk7aWYoIXQpcmV0dXJuO3ZhciBuPXt9O24uZm9yPXRbMl0udHJpbSgpO3ZhciByPXRbMV0udHJpbSgpLnJlcGxhY2UoUW8sIiIpLGk9ci5tYXRjaChZbyk7aT8obi5hbGlhcz1yLnJlcGxhY2UoWW8sIiIpLnRyaW0oKSxuLml0ZXJhdG9yMT1pWzFdLnRyaW0oKSxpWzJdJiYobi5pdGVyYXRvcjI9aVsyXS50cmltKCkpKTpuLmFsaWFzPXI7cmV0dXJuIG59KHQpO24mJkEoZSxuKX19ZnVuY3Rpb24gZGEoZSx0KXtlLmlmQ29uZGl0aW9uc3x8KGUuaWZDb25kaXRpb25zPVtdKSxlLmlmQ29uZGl0aW9ucy5wdXNoKHQpfWZ1bmN0aW9uIHZhKGUpe3ZhciB0PWUubmFtZS5yZXBsYWNlKGlhLCIiKTtyZXR1cm4gdHx8IiMiIT09ZS5uYW1lWzBdJiYodD0iZGVmYXVsdCIpLGVhLnRlc3QodCk\/e25hbWU6dC5zbGljZSgxLC0xKSxkeW5hbWljOiEwfTp7bmFtZTonIicrdCsnIicsZHluYW1pYzohMX19ZnVuY3Rpb24gaGEoZSl7dmFyIHQ9ZS5tYXRjaChyYSk7aWYodCl7dmFyIG49e307cmV0dXJuIHQuZm9yRWFjaChmdW5jdGlvbihlKXtuW2Uuc2xpY2UoMSldPSEwfSksbn19ZnVuY3Rpb24gbWEoZSl7Zm9yKHZhciB0PXt9LG49MCxyPWUubGVuZ3RoO248cjtuKyspdFtlW25dLm5hbWVdPWVbbl0udmFsdWU7cmV0dXJuIHR9dmFyIHlhPS9eeG1sbnM6TlNcZCsvLGdhPS9eTlNcZCs6LztmdW5jdGlvbiBfYShlKXtyZXR1cm4gdWEoZS50YWcsZS5hdHRyc0xpc3Quc2xpY2UoKSxlLnBhcmVudCl9dmFyIGJhPVttbyxnbyx7cHJlVHJhbnNmb3JtTm9kZTpmdW5jdGlvbihlLHQpe2lmKCJpbnB1dCI9PT1lLnRhZyl7dmFyIG4scj1lLmF0dHJzTWFwO2lmKCFyWyJ2LW1vZGVsIl0pcmV0dXJuO2lmKChyWyI6dHlwZSJdfHxyWyJ2LWJpbmQ6dHlwZSJdKSYmKG49SXIoZSwidHlwZSIpKSxyLnR5cGV8fG58fCFyWyJ2LWJpbmQiXXx8KG49IigiK3JbInYtYmluZCJdKyIpLnR5cGUiKSxuKXt2YXIgaT1GcihlLCJ2LWlmIiwhMCksbz1pPyImJigiK2krIikiOiIiLGE9bnVsbCE9RnIoZSwidi1lbHNlIiwhMCkscz1GcihlLCJ2LWVsc2UtaWYiLCEwKSxjPV9hKGUpO3BhKGMpLGpyKGMsInR5cGUiLCJjaGVja2JveCIpLGZhKGMsdCksYy5wcm9jZXNzZWQ9ITAsYy5pZj0iKCIrbisiKT09PSdjaGVja2JveCciK28sZGEoYyx7ZXhwOmMuaWYsYmxvY2s6Y30pO3ZhciB1PV9hKGUpO0ZyKHUsInYtZm9yIiwhMCksanIodSwidHlwZSIsInJhZGlvIiksZmEodSx0KSxkYShjLHtleHA6IigiK24rIik9PT0ncmFkaW8nIitvLGJsb2NrOnV9KTt2YXIgbD1fYShlKTtyZXR1cm4gRnIobCwidi1mb3IiLCEwKSxqcihsLCI6dHlwZSIsbiksZmEobCx0KSxkYShjLHtleHA6aSxibG9jazpsfSksYT9jLmVsc2U9ITA6cyYmKGMuZWxzZWlmPXMpLGN9fX19XTt2YXIgJGEsd2EsQ2E9e2V4cGVjdEhUTUw6ITAsbW9kdWxlczpiYSxkaXJlY3RpdmVzOnttb2RlbDpmdW5jdGlvbihlLHQsbil7dmFyIHI9dC52YWx1ZSxpPXQubW9kaWZpZXJzLG89ZS50YWcsYT1lLmF0dHJzTWFwLnR5cGU7aWYoZS5jb21wb25lbnQpcmV0dXJuIEhyKGUscixpKSwhMTtpZigic2VsZWN0Ij09PW8pIWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj0ndmFyICQkc2VsZWN0ZWRWYWwgPSBBcnJheS5wcm90b3R5cGUuZmlsdGVyLmNhbGwoJGV2ZW50LnRhcmdldC5vcHRpb25zLGZ1bmN0aW9uKG8pe3JldHVybiBvLnNlbGVjdGVkfSkubWFwKGZ1bmN0aW9uKG8pe3ZhciB2YWwgPSAiX3ZhbHVlIiBpbiBvID8gby5fdmFsdWUgOiBvLnZhbHVlO3JldHVybiAnKyhuJiZuLm51bWJlcj8iX24odmFsKSI6InZhbCIpKyJ9KTsiO3I9cisiICIrQnIodCwiJGV2ZW50LnRhcmdldC5tdWx0aXBsZSA\/ICQkc2VsZWN0ZWRWYWwgOiAkJHNlbGVjdGVkVmFsWzBdIiksTXIoZSwiY2hhbmdlIixyLG51bGwsITApfShlLHIsaSk7ZWxzZSBpZigiaW5wdXQiPT09byYmImNoZWNrYm94Ij09PWEpIWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uJiZuLm51bWJlcixpPUlyKGUsInZhbHVlIil8fCJudWxsIixvPUlyKGUsInRydWUtdmFsdWUiKXx8InRydWUiLGE9SXIoZSwiZmFsc2UtdmFsdWUiKXx8ImZhbHNlIjtFcihlLCJjaGVja2VkIiwiQXJyYXkuaXNBcnJheSgiK3QrIik\/X2koIit0KyIsIitpKyIpPi0xIisoInRydWUiPT09bz8iOigiK3QrIikiOiI6X3EoIit0KyIsIitvKyIpIikpLE1yKGUsImNoYW5nZSIsInZhciAkJGE9Iit0KyIsJCRlbD0kZXZlbnQudGFyZ2V0LCQkYz0kJGVsLmNoZWNrZWQ\/KCIrbysiKTooIithKyIpO2lmKEFycmF5LmlzQXJyYXkoJCRhKSl7dmFyICQkdj0iKyhyPyJfbigiK2krIikiOmkpKyIsJCRpPV9pKCQkYSwkJHYpO2lmKCQkZWwuY2hlY2tlZCl7JCRpPDAmJigiK0JyKHQsIiQkYS5jb25jYXQoWyQkdl0pIikrIil9ZWxzZXskJGk+LTEmJigiK0JyKHQsIiQkYS5zbGljZSgwLCQkaSkuY29uY2F0KCQkYS5zbGljZSgkJGkrMSkpIikrIil9fWVsc2V7IitCcih0LCIkJGMiKSsifSIsbnVsbCwhMCl9KGUscixpKTtlbHNlIGlmKCJpbnB1dCI9PT1vJiYicmFkaW8iPT09YSkhZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4mJm4ubnVtYmVyLGk9SXIoZSwidmFsdWUiKXx8Im51bGwiO0VyKGUsImNoZWNrZWQiLCJfcSgiK3QrIiwiKyhpPXI\/Il9uKCIraSsiKSI6aSkrIikiKSxNcihlLCJjaGFuZ2UiLEJyKHQsaSksbnVsbCwhMCl9KGUscixpKTtlbHNlIGlmKCJpbnB1dCI9PT1vfHwidGV4dGFyZWEiPT09bykhZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUuYXR0cnNNYXAudHlwZSxpPW58fHt9LG89aS5sYXp5LGE9aS5udW1iZXIscz1pLnRyaW0sYz0hbyYmInJhbmdlIiE9PXIsdT1vPyJjaGFuZ2UiOiJyYW5nZSI9PT1yP1dyOiJpbnB1dCIsbD0iJGV2ZW50LnRhcmdldC52YWx1ZSI7cyYmKGw9IiRldmVudC50YXJnZXQudmFsdWUudHJpbSgpIiksYSYmKGw9Il9uKCIrbCsiKSIpO3ZhciBmPUJyKHQsbCk7YyYmKGY9ImlmKCRldmVudC50YXJnZXQuY29tcG9zaW5nKXJldHVybjsiK2YpLEVyKGUsInZhbHVlIiwiKCIrdCsiKSIpLE1yKGUsdSxmLG51bGwsITApLChzfHxhKSYmTXIoZSwiYmx1ciIsIiRmb3JjZVVwZGF0ZSgpIil9KGUscixpKTtlbHNlIGlmKCFGLmlzUmVzZXJ2ZWRUYWcobykpcmV0dXJuIEhyKGUscixpKSwhMTtyZXR1cm4hMH0sdGV4dDpmdW5jdGlvbihlLHQpe3QudmFsdWUmJkVyKGUsInRleHRDb250ZW50IiwiX3MoIit0LnZhbHVlKyIpIix0KX0saHRtbDpmdW5jdGlvbihlLHQpe3QudmFsdWUmJkVyKGUsImlubmVySFRNTCIsIl9zKCIrdC52YWx1ZSsiKSIsdCl9fSxpc1ByZVRhZzpmdW5jdGlvbihlKXtyZXR1cm4icHJlIj09PWV9LGlzVW5hcnlUYWc6Ym8sbXVzdFVzZVByb3A6am4sY2FuQmVMZWZ0T3BlblRhZzokbyxpc1Jlc2VydmVkVGFnOlduLGdldFRhZ05hbWVzcGFjZTpabixzdGF0aWNLZXlzOmZ1bmN0aW9uKGUpe3JldHVybiBlLnJlZHVjZShmdW5jdGlvbihlLHQpe3JldHVybiBlLmNvbmNhdCh0LnN0YXRpY0tleXN8fFtdKX0sW10pLmpvaW4oIiwiKX0oYmEpfSx4YT1nKGZ1bmN0aW9uKGUpe3JldHVybiBwKCJ0eXBlLHRhZyxhdHRyc0xpc3QsYXR0cnNNYXAscGxhaW4scGFyZW50LGNoaWxkcmVuLGF0dHJzLHN0YXJ0LGVuZCxyYXdBdHRyc01hcCIrKGU\/IiwiK2U6IiIpKX0pO2Z1bmN0aW9uIGthKGUsdCl7ZSYmKCRhPXhhKHQuc3RhdGljS2V5c3x8IiIpLHdhPXQuaXNSZXNlcnZlZFRhZ3x8VCxmdW5jdGlvbiBlKHQpe3Quc3RhdGljPWZ1bmN0aW9uKGUpe2lmKDI9PT1lLnR5cGUpcmV0dXJuITE7aWYoMz09PWUudHlwZSlyZXR1cm4hMDtyZXR1cm4hKCFlLnByZSYmKGUuaGFzQmluZGluZ3N8fGUuaWZ8fGUuZm9yfHxkKGUudGFnKXx8IXdhKGUudGFnKXx8ZnVuY3Rpb24oZSl7Zm9yKDtlLnBhcmVudDspe2lmKCJ0ZW1wbGF0ZSIhPT0oZT1lLnBhcmVudCkudGFnKXJldHVybiExO2lmKGUuZm9yKXJldHVybiEwfXJldHVybiExfShlKXx8IU9iamVjdC5rZXlzKGUpLmV2ZXJ5KCRhKSkpfSh0KTtpZigxPT09dC50eXBlKXtpZighd2EodC50YWcpJiYic2xvdCIhPT10LnRhZyYmbnVsbD09dC5hdHRyc01hcFsiaW5saW5lLXRlbXBsYXRlIl0pcmV0dXJuO2Zvcih2YXIgbj0wLHI9dC5jaGlsZHJlbi5sZW5ndGg7bjxyO24rKyl7dmFyIGk9dC5jaGlsZHJlbltuXTtlKGkpLGkuc3RhdGljfHwodC5zdGF0aWM9ITEpfWlmKHQuaWZDb25kaXRpb25zKWZvcih2YXIgbz0xLGE9dC5pZkNvbmRpdGlvbnMubGVuZ3RoO288YTtvKyspe3ZhciBzPXQuaWZDb25kaXRpb25zW29dLmJsb2NrO2Uocykscy5zdGF0aWN8fCh0LnN0YXRpYz0hMSl9fX0oZSksZnVuY3Rpb24gZSh0LG4pe2lmKDE9PT10LnR5cGUpe2lmKCh0LnN0YXRpY3x8dC5vbmNlKSYmKHQuc3RhdGljSW5Gb3I9biksdC5zdGF0aWMmJnQuY2hpbGRyZW4ubGVuZ3RoJiYoMSE9PXQuY2hpbGRyZW4ubGVuZ3RofHwzIT09dC5jaGlsZHJlblswXS50eXBlKSlyZXR1cm4gdm9pZCh0LnN0YXRpY1Jvb3Q9ITApO2lmKHQuc3RhdGljUm9vdD0hMSx0LmNoaWxkcmVuKWZvcih2YXIgcj0wLGk9dC5jaGlsZHJlbi5sZW5ndGg7cjxpO3IrKyllKHQuY2hpbGRyZW5bcl0sbnx8ISF0LmZvcik7aWYodC5pZkNvbmRpdGlvbnMpZm9yKHZhciBvPTEsYT10LmlmQ29uZGl0aW9ucy5sZW5ndGg7bzxhO28rKyllKHQuaWZDb25kaXRpb25zW29dLmJsb2NrLG4pfX0oZSwhMSkpfXZhciBBYT0vXihbXHckX10rfFwoW14pXSo\/XCkpXHMqPT58XmZ1bmN0aW9uKD86XHMrW1x3JF0rKT9ccypcKC8sT2E9L1woW14pXSo\/XCk7KiQvLFNhPS9eW0EtWmEtel8kXVtcdyRdKig\/OlwuW0EtWmEtel8kXVtcdyRdKnxcWydbXiddKj8nXXxcWyJbXiJdKj8iXXxcW1xkK118XFtbQS1aYS16XyRdW1x3JF0qXSkqJC8sVGE9e2VzYzoyNyx0YWI6OSxlbnRlcjoxMyxzcGFjZTozMix1cDozOCxsZWZ0OjM3LHJpZ2h0OjM5LGRvd246NDAsZGVsZXRlOls4LDQ2XX0sRWE9e2VzYzpbIkVzYyIsIkVzY2FwZSJdLHRhYjoiVGFiIixlbnRlcjoiRW50ZXIiLHNwYWNlOlsiICIsIlNwYWNlYmFyIl0sdXA6WyJVcCIsIkFycm93VXAiXSxsZWZ0OlsiTGVmdCIsIkFycm93TGVmdCJdLHJpZ2h0OlsiUmlnaHQiLCJBcnJvd1JpZ2h0Il0sZG93bjpbIkRvd24iLCJBcnJvd0Rvd24iXSxkZWxldGU6WyJCYWNrc3BhY2UiLCJEZWxldGUiLCJEZWwiXX0sTmE9ZnVuY3Rpb24oZSl7cmV0dXJuImlmKCIrZSsiKXJldHVybiBudWxsOyJ9LGphPXtzdG9wOiIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IixwcmV2ZW50OiIkZXZlbnQucHJldmVudERlZmF1bHQoKTsiLHNlbGY6TmEoIiRldmVudC50YXJnZXQgIT09ICRldmVudC5jdXJyZW50VGFyZ2V0IiksY3RybDpOYSgiISRldmVudC5jdHJsS2V5Iiksc2hpZnQ6TmEoIiEkZXZlbnQuc2hpZnRLZXkiKSxhbHQ6TmEoIiEkZXZlbnQuYWx0S2V5IiksbWV0YTpOYSgiISRldmVudC5tZXRhS2V5IiksbGVmdDpOYSgiJ2J1dHRvbicgaW4gJGV2ZW50ICYmICRldmVudC5idXR0b24gIT09IDAiKSxtaWRkbGU6TmEoIididXR0b24nIGluICRldmVudCAmJiAkZXZlbnQuYnV0dG9uICE9PSAxIikscmlnaHQ6TmEoIididXR0b24nIGluICRldmVudCAmJiAkZXZlbnQuYnV0dG9uICE9PSAyIil9O2Z1bmN0aW9uIERhKGUsdCl7dmFyIG49dD8ibmF0aXZlT246Ijoib246IixyPSIiLGk9IiI7Zm9yKHZhciBvIGluIGUpe3ZhciBhPUxhKGVbb10pO2Vbb10mJmVbb10uZHluYW1pYz9pKz1vKyIsIithKyIsIjpyKz0nIicrbysnIjonK2ErIiwifXJldHVybiByPSJ7IityLnNsaWNlKDAsLTEpKyJ9IixpP24rIl9kKCIrcisiLFsiK2kuc2xpY2UoMCwtMSkrIl0pIjpuK3J9ZnVuY3Rpb24gTGEoZSl7aWYoIWUpcmV0dXJuImZ1bmN0aW9uKCl7fSI7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4iWyIrZS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIExhKGUpfSkuam9pbigiLCIpKyJdIjt2YXIgdD1TYS50ZXN0KGUudmFsdWUpLG49QWEudGVzdChlLnZhbHVlKSxyPVNhLnRlc3QoZS52YWx1ZS5yZXBsYWNlKE9hLCIiKSk7aWYoZS5tb2RpZmllcnMpe3ZhciBpPSIiLG89IiIsYT1bXTtmb3IodmFyIHMgaW4gZS5tb2RpZmllcnMpaWYoamFbc10pbys9amFbc10sVGFbc10mJmEucHVzaChzKTtlbHNlIGlmKCJleGFjdCI9PT1zKXt2YXIgYz1lLm1vZGlmaWVycztvKz1OYShbImN0cmwiLCJzaGlmdCIsImFsdCIsIm1ldGEiXS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIWNbZV19KS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIiRldmVudC4iK2UrIktleSJ9KS5qb2luKCJ8fCIpKX1lbHNlIGEucHVzaChzKTtyZXR1cm4gYS5sZW5ndGgmJihpKz1mdW5jdGlvbihlKXtyZXR1cm4iaWYoISRldmVudC50eXBlLmluZGV4T2YoJ2tleScpJiYiK2UubWFwKE1hKS5qb2luKCImJiIpKyIpcmV0dXJuIG51bGw7In0oYSkpLG8mJihpKz1vKSwiZnVuY3Rpb24oJGV2ZW50KXsiK2krKHQ\/InJldHVybiAiK2UudmFsdWUrIigkZXZlbnQpIjpuPyJyZXR1cm4gKCIrZS52YWx1ZSsiKSgkZXZlbnQpIjpyPyJyZXR1cm4gIitlLnZhbHVlOmUudmFsdWUpKyJ9In1yZXR1cm4gdHx8bj9lLnZhbHVlOiJmdW5jdGlvbigkZXZlbnQpeyIrKHI\/InJldHVybiAiK2UudmFsdWU6ZS52YWx1ZSkrIn0ifWZ1bmN0aW9uIE1hKGUpe3ZhciB0PXBhcnNlSW50KGUsMTApO2lmKHQpcmV0dXJuIiRldmVudC5rZXlDb2RlIT09Iit0O3ZhciBuPVRhW2VdLHI9RWFbZV07cmV0dXJuIl9rKCRldmVudC5rZXlDb2RlLCIrSlNPTi5zdHJpbmdpZnkoZSkrIiwiK0pTT04uc3RyaW5naWZ5KG4pKyIsJGV2ZW50LmtleSwiK0pTT04uc3RyaW5naWZ5KHIpKyIpIn12YXIgSWE9e29uOmZ1bmN0aW9uKGUsdCl7ZS53cmFwTGlzdGVuZXJzPWZ1bmN0aW9uKGUpe3JldHVybiJfZygiK2UrIiwiK3QudmFsdWUrIikifX0sYmluZDpmdW5jdGlvbihlLHQpe2Uud3JhcERhdGE9ZnVuY3Rpb24obil7cmV0dXJuIl9iKCIrbisiLCciK2UudGFnKyInLCIrdC52YWx1ZSsiLCIrKHQubW9kaWZpZXJzJiZ0Lm1vZGlmaWVycy5wcm9wPyJ0cnVlIjoiZmFsc2UiKSsodC5tb2RpZmllcnMmJnQubW9kaWZpZXJzLnN5bmM\/Iix0cnVlIjoiIikrIikifX0sY2xvYWs6U30sRmE9ZnVuY3Rpb24oZSl7dGhpcy5vcHRpb25zPWUsdGhpcy53YXJuPWUud2Fybnx8U3IsdGhpcy50cmFuc2Zvcm1zPVRyKGUubW9kdWxlcywidHJhbnNmb3JtQ29kZSIpLHRoaXMuZGF0YUdlbkZucz1UcihlLm1vZHVsZXMsImdlbkRhdGEiKSx0aGlzLmRpcmVjdGl2ZXM9QShBKHt9LElhKSxlLmRpcmVjdGl2ZXMpO3ZhciB0PWUuaXNSZXNlcnZlZFRhZ3x8VDt0aGlzLm1heWJlQ29tcG9uZW50PWZ1bmN0aW9uKGUpe3JldHVybiEhZS5jb21wb25lbnR8fCF0KGUudGFnKX0sdGhpcy5vbmNlSWQ9MCx0aGlzLnN0YXRpY1JlbmRlckZucz1bXSx0aGlzLnByZT0hMX07ZnVuY3Rpb24gUGEoZSx0KXt2YXIgbj1uZXcgRmEodCk7cmV0dXJue3JlbmRlcjoid2l0aCh0aGlzKXtyZXR1cm4gIisoZT9SYShlLG4pOidfYygiZGl2IiknKSsifSIsc3RhdGljUmVuZGVyRm5zOm4uc3RhdGljUmVuZGVyRm5zfX1mdW5jdGlvbiBSYShlLHQpe2lmKGUucGFyZW50JiYoZS5wcmU9ZS5wcmV8fGUucGFyZW50LnByZSksZS5zdGF0aWNSb290JiYhZS5zdGF0aWNQcm9jZXNzZWQpcmV0dXJuIEhhKGUsdCk7aWYoZS5vbmNlJiYhZS5vbmNlUHJvY2Vzc2VkKXJldHVybiBCYShlLHQpO2lmKGUuZm9yJiYhZS5mb3JQcm9jZXNzZWQpcmV0dXJuIHphKGUsdCk7aWYoZS5pZiYmIWUuaWZQcm9jZXNzZWQpcmV0dXJuIFVhKGUsdCk7aWYoInRlbXBsYXRlIiE9PWUudGFnfHxlLnNsb3RUYXJnZXR8fHQucHJlKXtpZigic2xvdCI9PT1lLnRhZylyZXR1cm4gZnVuY3Rpb24oZSx0KXt2YXIgbj1lLnNsb3ROYW1lfHwnImRlZmF1bHQiJyxyPXFhKGUsdCksaT0iX3QoIituKyhyPyIsIityOiIiKSxvPWUuYXR0cnN8fGUuZHluYW1pY0F0dHJzP0dhKChlLmF0dHJzfHxbXSkuY29uY2F0KGUuZHluYW1pY0F0dHJzfHxbXSkubWFwKGZ1bmN0aW9uKGUpe3JldHVybntuYW1lOmIoZS5uYW1lKSx2YWx1ZTplLnZhbHVlLGR5bmFtaWM6ZS5keW5hbWljfX0pKTpudWxsLGE9ZS5hdHRyc01hcFsidi1iaW5kIl07IW8mJiFhfHxyfHwoaSs9IixudWxsIik7byYmKGkrPSIsIitvKTthJiYoaSs9KG8\/IiI6IixudWxsIikrIiwiK2EpO3JldHVybiBpKyIpIn0oZSx0KTt2YXIgbjtpZihlLmNvbXBvbmVudCluPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10LmlubGluZVRlbXBsYXRlP251bGw6cWEodCxuLCEwKTtyZXR1cm4iX2MoIitlKyIsIitWYSh0LG4pKyhyPyIsIityOiIiKSsiKSJ9KGUuY29tcG9uZW50LGUsdCk7ZWxzZXt2YXIgcjsoIWUucGxhaW58fGUucHJlJiZ0Lm1heWJlQ29tcG9uZW50KGUpKSYmKHI9VmEoZSx0KSk7dmFyIGk9ZS5pbmxpbmVUZW1wbGF0ZT9udWxsOnFhKGUsdCwhMCk7bj0iX2MoJyIrZS50YWcrIiciKyhyPyIsIityOiIiKSsoaT8iLCIraToiIikrIikifWZvcih2YXIgbz0wO288dC50cmFuc2Zvcm1zLmxlbmd0aDtvKyspbj10LnRyYW5zZm9ybXNbb10oZSxuKTtyZXR1cm4gbn1yZXR1cm4gcWEoZSx0KXx8InZvaWQgMCJ9ZnVuY3Rpb24gSGEoZSx0KXtlLnN0YXRpY1Byb2Nlc3NlZD0hMDt2YXIgbj10LnByZTtyZXR1cm4gZS5wcmUmJih0LnByZT1lLnByZSksdC5zdGF0aWNSZW5kZXJGbnMucHVzaCgid2l0aCh0aGlzKXtyZXR1cm4gIitSYShlLHQpKyJ9IiksdC5wcmU9biwiX20oIisodC5zdGF0aWNSZW5kZXJGbnMubGVuZ3RoLTEpKyhlLnN0YXRpY0luRm9yPyIsdHJ1ZSI6IiIpKyIpIn1mdW5jdGlvbiBCYShlLHQpe2lmKGUub25jZVByb2Nlc3NlZD0hMCxlLmlmJiYhZS5pZlByb2Nlc3NlZClyZXR1cm4gVWEoZSx0KTtpZihlLnN0YXRpY0luRm9yKXtmb3IodmFyIG49IiIscj1lLnBhcmVudDtyOyl7aWYoci5mb3Ipe249ci5rZXk7YnJlYWt9cj1yLnBhcmVudH1yZXR1cm4gbj8iX28oIitSYShlLHQpKyIsIit0Lm9uY2VJZCsrKyIsIituKyIpIjpSYShlLHQpfXJldHVybiBIYShlLHQpfWZ1bmN0aW9uIFVhKGUsdCxuLHIpe3JldHVybiBlLmlmUHJvY2Vzc2VkPSEwLGZ1bmN0aW9uIGUodCxuLHIsaSl7aWYoIXQubGVuZ3RoKXJldHVybiBpfHwiX2UoKSI7dmFyIG89dC5zaGlmdCgpO3JldHVybiBvLmV4cD8iKCIrby5leHArIik\/IithKG8uYmxvY2spKyI6IitlKHQsbixyLGkpOiIiK2Eoby5ibG9jayk7ZnVuY3Rpb24gYShlKXtyZXR1cm4gcj9yKGUsbik6ZS5vbmNlP0JhKGUsbik6UmEoZSxuKX19KGUuaWZDb25kaXRpb25zLnNsaWNlKCksdCxuLHIpfWZ1bmN0aW9uIHphKGUsdCxuLHIpe3ZhciBpPWUuZm9yLG89ZS5hbGlhcyxhPWUuaXRlcmF0b3IxPyIsIitlLml0ZXJhdG9yMToiIixzPWUuaXRlcmF0b3IyPyIsIitlLml0ZXJhdG9yMjoiIjtyZXR1cm4gZS5mb3JQcm9jZXNzZWQ9ITAsKHJ8fCJfbCIpKyIoKCIraSsiKSxmdW5jdGlvbigiK28rYStzKyIpe3JldHVybiAiKyhufHxSYSkoZSx0KSsifSkifWZ1bmN0aW9uIFZhKGUsdCl7dmFyIG49InsiLHI9ZnVuY3Rpb24oZSx0KXt2YXIgbj1lLmRpcmVjdGl2ZXM7aWYoIW4pcmV0dXJuO3ZhciByLGksbyxhLHM9ImRpcmVjdGl2ZXM6WyIsYz0hMTtmb3Iocj0wLGk9bi5sZW5ndGg7cjxpO3IrKyl7bz1uW3JdLGE9ITA7dmFyIHU9dC5kaXJlY3RpdmVzW28ubmFtZV07dSYmKGE9ISF1KGUsbyx0Lndhcm4pKSxhJiYoYz0hMCxzKz0ne25hbWU6Iicrby5uYW1lKyciLHJhd05hbWU6Iicrby5yYXdOYW1lKyciJysoby52YWx1ZT8iLHZhbHVlOigiK28udmFsdWUrIiksZXhwcmVzc2lvbjoiK0pTT04uc3RyaW5naWZ5KG8udmFsdWUpOiIiKSsoby5hcmc\/Iixhcmc6Iisoby5pc0R5bmFtaWNBcmc\/by5hcmc6JyInK28uYXJnKyciJyk6IiIpKyhvLm1vZGlmaWVycz8iLG1vZGlmaWVyczoiK0pTT04uc3RyaW5naWZ5KG8ubW9kaWZpZXJzKToiIikrIn0sIil9aWYoYylyZXR1cm4gcy5zbGljZSgwLC0xKSsiXSJ9KGUsdCk7ciYmKG4rPXIrIiwiKSxlLmtleSYmKG4rPSJrZXk6IitlLmtleSsiLCIpLGUucmVmJiYobis9InJlZjoiK2UucmVmKyIsIiksZS5yZWZJbkZvciYmKG4rPSJyZWZJbkZvcjp0cnVlLCIpLGUucHJlJiYobis9InByZTp0cnVlLCIpLGUuY29tcG9uZW50JiYobis9J3RhZzoiJytlLnRhZysnIiwnKTtmb3IodmFyIGk9MDtpPHQuZGF0YUdlbkZucy5sZW5ndGg7aSsrKW4rPXQuZGF0YUdlbkZuc1tpXShlKTtpZihlLmF0dHJzJiYobis9ImF0dHJzOiIrR2EoZS5hdHRycykrIiwiKSxlLnByb3BzJiYobis9ImRvbVByb3BzOiIrR2EoZS5wcm9wcykrIiwiKSxlLmV2ZW50cyYmKG4rPURhKGUuZXZlbnRzLCExKSsiLCIpLGUubmF0aXZlRXZlbnRzJiYobis9RGEoZS5uYXRpdmVFdmVudHMsITApKyIsIiksZS5zbG90VGFyZ2V0JiYhZS5zbG90U2NvcGUmJihuKz0ic2xvdDoiK2Uuc2xvdFRhcmdldCsiLCIpLGUuc2NvcGVkU2xvdHMmJihuKz1mdW5jdGlvbihlLHQsbil7dmFyIHI9ZS5mb3J8fE9iamVjdC5rZXlzKHQpLnNvbWUoZnVuY3Rpb24oZSl7dmFyIG49dFtlXTtyZXR1cm4gbi5zbG90VGFyZ2V0RHluYW1pY3x8bi5pZnx8bi5mb3J8fEthKG4pfSksaT0hIWUuaWY7aWYoIXIpZm9yKHZhciBvPWUucGFyZW50O287KXtpZihvLnNsb3RTY29wZSYmby5zbG90U2NvcGUhPT1jYXx8by5mb3Ipe3I9ITA7YnJlYWt9by5pZiYmKGk9ITApLG89by5wYXJlbnR9dmFyIGE9T2JqZWN0LmtleXModCkubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBKYSh0W2VdLG4pfSkuam9pbigiLCIpO3JldHVybiJzY29wZWRTbG90czpfdShbIithKyJdIisocj8iLG51bGwsdHJ1ZSI6IiIpKyghciYmaT8iLG51bGwsZmFsc2UsIitmdW5jdGlvbihlKXt2YXIgdD01MzgxLG49ZS5sZW5ndGg7Zm9yKDtuOyl0PTMzKnReZS5jaGFyQ29kZUF0KC0tbik7cmV0dXJuIHQ+Pj4wfShhKToiIikrIikifShlLGUuc2NvcGVkU2xvdHMsdCkrIiwiKSxlLm1vZGVsJiYobis9Im1vZGVsOnt2YWx1ZToiK2UubW9kZWwudmFsdWUrIixjYWxsYmFjazoiK2UubW9kZWwuY2FsbGJhY2srIixleHByZXNzaW9uOiIrZS5tb2RlbC5leHByZXNzaW9uKyJ9LCIpLGUuaW5saW5lVGVtcGxhdGUpe3ZhciBvPWZ1bmN0aW9uKGUsdCl7dmFyIG49ZS5jaGlsZHJlblswXTtpZihuJiYxPT09bi50eXBlKXt2YXIgcj1QYShuLHQub3B0aW9ucyk7cmV0dXJuImlubGluZVRlbXBsYXRlOntyZW5kZXI6ZnVuY3Rpb24oKXsiK3IucmVuZGVyKyJ9LHN0YXRpY1JlbmRlckZuczpbIityLnN0YXRpY1JlbmRlckZucy5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuImZ1bmN0aW9uKCl7IitlKyJ9In0pLmpvaW4oIiwiKSsiXX0ifX0oZSx0KTtvJiYobis9bysiLCIpfXJldHVybiBuPW4ucmVwbGFjZSgvLCQvLCIiKSsifSIsZS5keW5hbWljQXR0cnMmJihuPSJfYigiK24rJywiJytlLnRhZysnIiwnK0dhKGUuZHluYW1pY0F0dHJzKSsiKSIpLGUud3JhcERhdGEmJihuPWUud3JhcERhdGEobikpLGUud3JhcExpc3RlbmVycyYmKG49ZS53cmFwTGlzdGVuZXJzKG4pKSxufWZ1bmN0aW9uIEthKGUpe3JldHVybiAxPT09ZS50eXBlJiYoInNsb3QiPT09ZS50YWd8fGUuY2hpbGRyZW4uc29tZShLYSkpfWZ1bmN0aW9uIEphKGUsdCl7dmFyIG49ZS5hdHRyc01hcFsic2xvdC1zY29wZSJdO2lmKGUuaWYmJiFlLmlmUHJvY2Vzc2VkJiYhbilyZXR1cm4gVWEoZSx0LEphLCJudWxsIik7aWYoZS5mb3ImJiFlLmZvclByb2Nlc3NlZClyZXR1cm4gemEoZSx0LEphKTt2YXIgcj1lLnNsb3RTY29wZT09PWNhPyIiOlN0cmluZyhlLnNsb3RTY29wZSksaT0iZnVuY3Rpb24oIityKyIpe3JldHVybiAiKygidGVtcGxhdGUiPT09ZS50YWc\/ZS5pZiYmbj8iKCIrZS5pZisiKT8iKyhxYShlLHQpfHwidW5kZWZpbmVkIikrIjp1bmRlZmluZWQiOnFhKGUsdCl8fCJ1bmRlZmluZWQiOlJhKGUsdCkpKyJ9IixvPXI\/IiI6Iixwcm94eTp0cnVlIjtyZXR1cm4ie2tleToiKyhlLnNsb3RUYXJnZXR8fCciZGVmYXVsdCInKSsiLGZuOiIraStvKyJ9In1mdW5jdGlvbiBxYShlLHQsbixyLGkpe3ZhciBvPWUuY2hpbGRyZW47aWYoby5sZW5ndGgpe3ZhciBhPW9bMF07aWYoMT09PW8ubGVuZ3RoJiZhLmZvciYmInRlbXBsYXRlIiE9PWEudGFnJiYic2xvdCIhPT1hLnRhZyl7dmFyIHM9bj90Lm1heWJlQ29tcG9uZW50KGEpPyIsMSI6IiwwIjoiIjtyZXR1cm4iIisocnx8UmEpKGEsdCkrc312YXIgYz1uP2Z1bmN0aW9uKGUsdCl7Zm9yKHZhciBuPTAscj0wO3I8ZS5sZW5ndGg7cisrKXt2YXIgaT1lW3JdO2lmKDE9PT1pLnR5cGUpe2lmKFdhKGkpfHxpLmlmQ29uZGl0aW9ucyYmaS5pZkNvbmRpdGlvbnMuc29tZShmdW5jdGlvbihlKXtyZXR1cm4gV2EoZS5ibG9jayl9KSl7bj0yO2JyZWFrfSh0KGkpfHxpLmlmQ29uZGl0aW9ucyYmaS5pZkNvbmRpdGlvbnMuc29tZShmdW5jdGlvbihlKXtyZXR1cm4gdChlLmJsb2NrKX0pKSYmKG49MSl9fXJldHVybiBufShvLHQubWF5YmVDb21wb25lbnQpOjAsdT1pfHxaYTtyZXR1cm4iWyIrby5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIHUoZSx0KX0pLmpvaW4oIiwiKSsiXSIrKGM\/IiwiK2M6IiIpfX1mdW5jdGlvbiBXYShlKXtyZXR1cm4gdm9pZCAwIT09ZS5mb3J8fCJ0ZW1wbGF0ZSI9PT1lLnRhZ3x8InNsb3QiPT09ZS50YWd9ZnVuY3Rpb24gWmEoZSx0KXtyZXR1cm4gMT09PWUudHlwZT9SYShlLHQpOjM9PT1lLnR5cGUmJmUuaXNDb21tZW50PyhyPWUsIl9lKCIrSlNPTi5zdHJpbmdpZnkoci50ZXh0KSsiKSIpOiJfdigiKygyPT09KG49ZSkudHlwZT9uLmV4cHJlc3Npb246WGEoSlNPTi5zdHJpbmdpZnkobi50ZXh0KSkpKyIpIjt2YXIgbixyfWZ1bmN0aW9uIEdhKGUpe2Zvcih2YXIgdD0iIixuPSIiLHI9MDtyPGUubGVuZ3RoO3IrKyl7dmFyIGk9ZVtyXSxvPVhhKGkudmFsdWUpO2kuZHluYW1pYz9uKz1pLm5hbWUrIiwiK28rIiwiOnQrPSciJytpLm5hbWUrJyI6JytvKyIsIn1yZXR1cm4gdD0ieyIrdC5zbGljZSgwLC0xKSsifSIsbj8iX2QoIit0KyIsWyIrbi5zbGljZSgwLC0xKSsiXSkiOnR9ZnVuY3Rpb24gWGEoZSl7cmV0dXJuIGUucmVwbGFjZSgvXHUyMDI4L2csIlxcdTIwMjgiKS5yZXBsYWNlKC9cdTIwMjkvZywiXFx1MjAyOSIpfW5ldyBSZWdFeHAoIlxcYiIrImRvLGlmLGZvcixsZXQsbmV3LHRyeSx2YXIsY2FzZSxlbHNlLHdpdGgsYXdhaXQsYnJlYWssY2F0Y2gsY2xhc3MsY29uc3Qsc3VwZXIsdGhyb3csd2hpbGUseWllbGQsZGVsZXRlLGV4cG9ydCxpbXBvcnQscmV0dXJuLHN3aXRjaCxkZWZhdWx0LGV4dGVuZHMsZmluYWxseSxjb250aW51ZSxkZWJ1Z2dlcixmdW5jdGlvbixhcmd1bWVudHMiLnNwbGl0KCIsIikuam9pbigiXFxifFxcYiIpKyJcXGIiKTtmdW5jdGlvbiBZYShlLHQpe3RyeXtyZXR1cm4gbmV3IEZ1bmN0aW9uKGUpfWNhdGNoKG4pe3JldHVybiB0LnB1c2goe2VycjpuLGNvZGU6ZX0pLFN9fWZ1bmN0aW9uIFFhKGUpe3ZhciB0PU9iamVjdC5jcmVhdGUobnVsbCk7cmV0dXJuIGZ1bmN0aW9uKG4scixpKXsocj1BKHt9LHIpKS53YXJuO2RlbGV0ZSByLndhcm47dmFyIG89ci5kZWxpbWl0ZXJzP1N0cmluZyhyLmRlbGltaXRlcnMpK246bjtpZih0W29dKXJldHVybiB0W29dO3ZhciBhPWUobixyKSxzPXt9LGM9W107cmV0dXJuIHMucmVuZGVyPVlhKGEucmVuZGVyLGMpLHMuc3RhdGljUmVuZGVyRm5zPWEuc3RhdGljUmVuZGVyRm5zLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gWWEoZSxjKX0pLHRbb109c319dmFyIGVzLHRzLG5zPShlcz1mdW5jdGlvbihlLHQpe3ZhciBuPWxhKGUudHJpbSgpLHQpOyExIT09dC5vcHRpbWl6ZSYma2Eobix0KTt2YXIgcj1QYShuLHQpO3JldHVybnthc3Q6bixyZW5kZXI6ci5yZW5kZXIsc3RhdGljUmVuZGVyRm5zOnIuc3RhdGljUmVuZGVyRm5zfX0sZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCh0LG4pe3ZhciByPU9iamVjdC5jcmVhdGUoZSksaT1bXSxvPVtdO2lmKG4pZm9yKHZhciBhIGluIG4ubW9kdWxlcyYmKHIubW9kdWxlcz0oZS5tb2R1bGVzfHxbXSkuY29uY2F0KG4ubW9kdWxlcykpLG4uZGlyZWN0aXZlcyYmKHIuZGlyZWN0aXZlcz1BKE9iamVjdC5jcmVhdGUoZS5kaXJlY3RpdmVzfHxudWxsKSxuLmRpcmVjdGl2ZXMpKSxuKSJtb2R1bGVzIiE9PWEmJiJkaXJlY3RpdmVzIiE9PWEmJihyW2FdPW5bYV0pO3Iud2Fybj1mdW5jdGlvbihlLHQsbil7KG4\/bzppKS5wdXNoKGUpfTt2YXIgcz1lcyh0LnRyaW0oKSxyKTtyZXR1cm4gcy5lcnJvcnM9aSxzLnRpcHM9byxzfXJldHVybntjb21waWxlOnQsY29tcGlsZVRvRnVuY3Rpb25zOlFhKHQpfX0pKENhKSxycz0obnMuY29tcGlsZSxucy5jb21waWxlVG9GdW5jdGlvbnMpO2Z1bmN0aW9uIGlzKGUpe3JldHVybih0cz10c3x8ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IikpLmlubmVySFRNTD1lPyc8YSBocmVmPSJcbiIvPic6JzxkaXYgYT0iXG4iLz4nLHRzLmlubmVySFRNTC5pbmRleE9mKCImIzEwOyIpPjB9dmFyIG9zPSEheiYmaXMoITEpLGFzPSEheiYmaXMoITApLHNzPWcoZnVuY3Rpb24oZSl7dmFyIHQ9WW4oZSk7cmV0dXJuIHQmJnQuaW5uZXJIVE1MfSksY3M9d24ucHJvdG90eXBlLiRtb3VudDtyZXR1cm4gd24ucHJvdG90eXBlLiRtb3VudD1mdW5jdGlvbihlLHQpe2lmKChlPWUmJlluKGUpKT09PWRvY3VtZW50LmJvZHl8fGU9PT1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpcmV0dXJuIHRoaXM7dmFyIG49dGhpcy4kb3B0aW9ucztpZighbi5yZW5kZXIpe3ZhciByPW4udGVtcGxhdGU7aWYocilpZigic3RyaW5nIj09dHlwZW9mIHIpIiMiPT09ci5jaGFyQXQoMCkmJihyPXNzKHIpKTtlbHNle2lmKCFyLm5vZGVUeXBlKXJldHVybiB0aGlzO3I9ci5pbm5lckhUTUx9ZWxzZSBlJiYocj1mdW5jdGlvbihlKXtpZihlLm91dGVySFRNTClyZXR1cm4gZS5vdXRlckhUTUw7dmFyIHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7cmV0dXJuIHQuYXBwZW5kQ2hpbGQoZS5jbG9uZU5vZGUoITApKSx0LmlubmVySFRNTH0oZSkpO2lmKHIpe3ZhciBpPXJzKHIse291dHB1dFNvdXJjZVJhbmdlOiExLHNob3VsZERlY29kZU5ld2xpbmVzOm9zLHNob3VsZERlY29kZU5ld2xpbmVzRm9ySHJlZjphcyxkZWxpbWl0ZXJzOm4uZGVsaW1pdGVycyxjb21tZW50czpuLmNvbW1lbnRzfSx0aGlzKSxvPWkucmVuZGVyLGE9aS5zdGF0aWNSZW5kZXJGbnM7bi5yZW5kZXI9byxuLnN0YXRpY1JlbmRlckZucz1hfX1yZXR1cm4gY3MuY2FsbCh0aGlzLGUsdCl9LHduLmNvbXBpbGU9cnMsd259KTsKLyoqIC9tL2pzL3Z1ZS92dWUtdGhlLW1hc2suanMgKiovCnZhciBfX19kMmNfdnVldGhlbWFza2pzX2Nfb249IjIwMjUtMDUtMjMgMTc6MDU6MzgiOyd1c2Ugc3RyaWN0Jzt2YXIgX19fZDJjX3Z1ZXRoZW1hc2tqc19jX29uPSIyMDI0LTAxLTMxIDE0OjMzOjE1IjsidXNlIHN0cmljdCI7X19fZDJjX3Z1ZXRoZW1hc2tqc19jX29uPSIyMDIzLTAxLTEyIDExOjQwOjU1IjsidXNlIHN0cmljdCI7X19fZDJjX3Z1ZXRoZW1hc2tqc19jX29uPSIyMDIzLTAxLTEyIDEwOjUwOjQxIjsidXNlIHN0cmljdCI7X19fZDJjX3Z1ZXRoZW1hc2tqc19jX29uPSIyMDIxLTEyLTE1IDEyOjUxOjI0IjsidXNlIHN0cmljdCI7CihmdW5jdGlvbihoLGMpeyJvYmplY3QiPT10eXBlb2YgZXhwb3J0cyYmIm9iamVjdCI9PXR5cGVvZiBtb2R1bGU\/bW9kdWxlLmV4cG9ydHM9YygpOiJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ\/ZGVmaW5lKFtdLGMpOiJvYmplY3QiPT10eXBlb2YgZXhwb3J0cz9leHBvcnRzLlZ1ZVRoZU1hc2s9YygpOmguVnVlVGhlTWFzaz1jKCl9KSh0aGlzLGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKGgpe2Z1bmN0aW9uIGMoZCl7aWYoYVtkXSlyZXR1cm4gYVtkXS5leHBvcnRzO3ZhciBlPWFbZF09e2k6ZCxsOiExLGV4cG9ydHM6e319O3JldHVybiBoW2RdLmNhbGwoZS5leHBvcnRzLGUsZS5leHBvcnRzLGMpLGUubD0hMCxlLmV4cG9ydHN9dmFyIGE9e307cmV0dXJuIGMubT1oLGMuYz1hLGMuaT1mdW5jdGlvbihkKXtyZXR1cm4gZH0sYy5kPWZ1bmN0aW9uKGQsZSxsKXtjLm8oZCxlKXx8T2JqZWN0LmRlZmluZVByb3BlcnR5KGQsZSx7Y29uZmlndXJhYmxlOiExLGVudW1lcmFibGU6ITAsCmdldDpsfSl9LGMubj1mdW5jdGlvbihkKXt2YXIgZT1kJiZkLl9fZXNNb2R1bGU\/ZnVuY3Rpb24oKXtyZXR1cm4gZC5kZWZhdWx0fTpmdW5jdGlvbigpe3JldHVybiBkfTtyZXR1cm4gYy5kKGUsImEiLGUpLGV9LGMubz1mdW5jdGlvbihkLGUpe3JldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZCxlKX0sYy5wPSIuIixjKGMucz0xMCl9KFtmdW5jdGlvbihoLGMpe2guZXhwb3J0cz17IiMiOntwYXR0ZXJuOi9cZC99LFg6e3BhdHRlcm46L1swLTlhLXpBLVpdL30sUzp7cGF0dGVybjovW2EtekEtWl0vfSxBOntwYXR0ZXJuOi9bYS16QS1aXS8sdHJhbnNmb3JtOmZ1bmN0aW9uKGEpe3JldHVybiBhLnRvTG9jYWxlVXBwZXJDYXNlKCl9fSxhOntwYXR0ZXJuOi9bYS16QS1aXS8sdHJhbnNmb3JtOmZ1bmN0aW9uKGEpe3JldHVybiBhLnRvTG9jYWxlTG93ZXJDYXNlKCl9fSwiISI6e2VzY2FwZTohMH19fSxmdW5jdGlvbihoLGMsYSl7ZnVuY3Rpb24gZChiKXt2YXIgZj0KZG9jdW1lbnQuY3JlYXRlRXZlbnQoIkV2ZW50Iik7cmV0dXJuIGYuaW5pdEV2ZW50KGIsITAsITApLGZ9dmFyIGU9YSgyKTtoPWEoMCk7dmFyIGw9YS5uKGgpO2MuYT1mdW5jdGlvbihiLGYpe3ZhciBnPWYudmFsdWU7aWYoKEFycmF5LmlzQXJyYXkoZyl8fCJzdHJpbmciPT10eXBlb2YgZykmJihnPXttYXNrOmcsdG9rZW5zOmwuYX0pLCJJTlBVVCIhPT1iLnRhZ05hbWUudG9Mb2NhbGVVcHBlckNhc2UoKSl7Zj1iLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJpbnB1dCIpO2lmKDEhPT1mLmxlbmd0aCl0aHJvdyBFcnJvcigidi1tYXNrIGRpcmVjdGl2ZSByZXF1aXJlcyAxIGlucHV0LCBmb3VuZCAiK2YubGVuZ3RoKTtiPWZbMF19Yi5vbmlucHV0PWZ1bmN0aW9uKG0pe2lmKG0uaXNUcnVzdGVkKXt2YXIgaz1iLnNlbGVjdGlvbkVuZDttPWIudmFsdWVbay0xXTtmb3IoYi52YWx1ZT1hLmkoZS5hKShiLnZhbHVlLGcubWFzaywhMCxnLnRva2Vucyk7azxiLnZhbHVlLmxlbmd0aCYmYi52YWx1ZS5jaGFyQXQoay0KMSkhPT1tOylrKys7Yj09PWRvY3VtZW50LmFjdGl2ZUVsZW1lbnQmJihiLnNldFNlbGVjdGlvblJhbmdlKGssayksc2V0VGltZW91dChmdW5jdGlvbigpe2Iuc2V0U2VsZWN0aW9uUmFuZ2UoayxrKX0sMCkpO2IuZGlzcGF0Y2hFdmVudChkKCJpbnB1dCIpKX19O2Y9YS5pKGUuYSkoYi52YWx1ZSxnLm1hc2ssITAsZy50b2tlbnMpO2YhPT1iLnZhbHVlJiYoYi52YWx1ZT1mLGIuZGlzcGF0Y2hFdmVudChkKCJpbnB1dCIpKSl9fSxmdW5jdGlvbihoLGMsYSl7dmFyIGQ9YSg2KSxlPWEoNSk7Yy5hPWZ1bmN0aW9uKGwsYil7dmFyIGY9ISgyPGFyZ3VtZW50cy5sZW5ndGgmJnZvaWQgMCE9PWFyZ3VtZW50c1syXSl8fGFyZ3VtZW50c1syXSxnPWFyZ3VtZW50c1szXTtyZXR1cm4gQXJyYXkuaXNBcnJheShiKT9hLmkoZS5hKShkLmEsYixnKShsLGIsZixnKTphLmkoZC5hKShsLGIsZixnKX19LGZ1bmN0aW9uKGgsYyxhKXtmdW5jdGlvbiBkKGcpe2cuY29tcG9uZW50KGIuYS5uYW1lLGIuYSk7CmcuZGlyZWN0aXZlKCJtYXNrIixsLmEpfU9iamVjdC5kZWZpbmVQcm9wZXJ0eShjLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTtoPWEoMCk7dmFyIGU9YS5uKGgpLGw9YSgxKTtoPWEoNyk7dmFyIGI9YS5uKGgpO2EuZChjLCJUaGVNYXNrIixmdW5jdGlvbigpe3JldHVybiBiLmF9KTthLmQoYywibWFzayIsZnVuY3Rpb24oKXtyZXR1cm4gbC5hfSk7YS5kKGMsInRva2VucyIsZnVuY3Rpb24oKXtyZXR1cm4gZS5hfSk7YS5kKGMsInZlcnNpb24iLGZ1bmN0aW9uKCl7cmV0dXJuIGZ9KTt2YXIgZj0iMC4xMS4xIjtjLmRlZmF1bHQ9ZDsidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdyYmd2luZG93LlZ1ZSYmd2luZG93LlZ1ZS51c2UoZCl9LGZ1bmN0aW9uKGgsYyxhKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoYywiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7aD1hKDEpO3ZhciBkPWEoMCksZT1hLm4oZCksbD1hKDIpO2MuZGVmYXVsdD17bmFtZToiVGhlTWFzayIscHJvcHM6e3ZhbHVlOltTdHJpbmcsCk51bWJlcl0sbWFzazp7dHlwZTpbU3RyaW5nLEFycmF5XSxyZXF1aXJlZDohMH0sbWFza2VkOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0sdG9rZW5zOnt0eXBlOk9iamVjdCxkZWZhdWx0OmZ1bmN0aW9uKCl7cmV0dXJuIGUuYX19fSxkaXJlY3RpdmVzOnttYXNrOmguYX0sZGF0YTpmdW5jdGlvbigpe3JldHVybntsYXN0VmFsdWU6bnVsbCxkaXNwbGF5OnRoaXMudmFsdWV9fSx3YXRjaDp7dmFsdWU6ZnVuY3Rpb24oYil7YiE9PXRoaXMubGFzdFZhbHVlJiYodGhpcy5kaXNwbGF5PWIpfSxtYXNrZWQ6ZnVuY3Rpb24oKXt0aGlzLnJlZnJlc2godGhpcy5kaXNwbGF5KX19LGNvbXB1dGVkOntjb25maWc6ZnVuY3Rpb24oKXtyZXR1cm57bWFzazp0aGlzLm1hc2ssdG9rZW5zOnRoaXMudG9rZW5zLG1hc2tlZDp0aGlzLm1hc2tlZH19fSxtZXRob2RzOntvbklucHV0OmZ1bmN0aW9uKGIpe2IuaXNUcnVzdGVkfHx0aGlzLnJlZnJlc2goYi50YXJnZXQudmFsdWUpfSxyZWZyZXNoOmZ1bmN0aW9uKGIpe3RoaXMuZGlzcGxheT0KYjtiPWEuaShsLmEpKGIsdGhpcy5tYXNrLHRoaXMubWFza2VkLHRoaXMudG9rZW5zKTtiIT09dGhpcy5sYXN0VmFsdWUmJih0aGlzLmxhc3RWYWx1ZT1iLHRoaXMuJGVtaXQoImlucHV0IixiKSl9fX19LGZ1bmN0aW9uKGgsYyxhKXtjLmE9ZnVuY3Rpb24oZCxlLGwpe3JldHVybiBlPWUuc29ydChmdW5jdGlvbihiLGYpe3JldHVybiBiLmxlbmd0aC1mLmxlbmd0aH0pLGZ1bmN0aW9uKGIsZil7Zm9yKHZhciBnPSEoMjxhcmd1bWVudHMubGVuZ3RoJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0pfHxhcmd1bWVudHNbMl0sbT0wO208ZS5sZW5ndGg7KXt2YXIgaz1lW21dO20rKzt2YXIgbj1lW21dO2lmKCEobiYmZChiLG4sITAsbCkubGVuZ3RoPmsubGVuZ3RoKSlyZXR1cm4gZChiLGssZyxsKX1yZXR1cm4iIn19fSxmdW5jdGlvbihoLGMsYSl7Yy5hPWZ1bmN0aW9uKGQsZSl7dmFyIGw9ISgyPGFyZ3VtZW50cy5sZW5ndGgmJnZvaWQgMCE9PWFyZ3VtZW50c1syXSl8fGFyZ3VtZW50c1syXSxiPQphcmd1bWVudHNbM107ZD1kfHwiIjtlPWV8fCIiO2Zvcih2YXIgZj0wLGc9MCxtPSIiO2Y8ZS5sZW5ndGgmJmc8ZC5sZW5ndGg7KXt2YXIgaz1lW2ZdLG49YltrXSxwPWRbZ107biYmIW4uZXNjYXBlPyhuLnBhdHRlcm4udGVzdChwKSYmKG0rPW4udHJhbnNmb3JtP24udHJhbnNmb3JtKHApOnAsZisrKSxnKyspOihuJiZuLmVzY2FwZSYmKGYrKyxrPWVbZl0pLGwmJihtKz1rKSxwPT09ayYmZysrLGYrKyl9Zm9yKGc9IiI7ZjxlLmxlbmd0aCYmbDspe2s9ZVtmXTtpZihiW2tdKXtnPSIiO2JyZWFrfWcrPWs7ZisrfXJldHVybiBtK2d9fSxmdW5jdGlvbihoLGMsYSl7Yz1hKDgpKGEoNCksYSg5KSxudWxsLG51bGwpO2guZXhwb3J0cz1jLmV4cG9ydHN9LGZ1bmN0aW9uKGgsYyl7aC5leHBvcnRzPWZ1bmN0aW9uKGEsZCxlLGwpe3ZhciBiLGY9YT1hfHx7fSxnPXR5cGVvZiBhLmRlZmF1bHQ7Im9iamVjdCIhPT1nJiYiZnVuY3Rpb24iIT09Z3x8KGI9YSxmPWEuZGVmYXVsdCk7YT0iZnVuY3Rpb24iPT0KdHlwZW9mIGY\/Zi5vcHRpb25zOmY7aWYoZCYmKGEucmVuZGVyPWQucmVuZGVyLGEuc3RhdGljUmVuZGVyRm5zPWQuc3RhdGljUmVuZGVyRm5zKSxlJiYoYS5fc2NvcGVJZD1lKSxsKXt2YXIgbT1hLmNvbXB1dGVkfHwoYS5jb21wdXRlZD17fSk7T2JqZWN0LmtleXMobCkuZm9yRWFjaChmdW5jdGlvbihrKXt2YXIgbj1sW2tdO21ba109ZnVuY3Rpb24oKXtyZXR1cm4gbn19KX1yZXR1cm57ZXNNb2R1bGU6YixleHBvcnRzOmYsb3B0aW9uczphfX19LGZ1bmN0aW9uKGgsYyl7aC5leHBvcnRzPXtyZW5kZXI6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLiRjcmVhdGVFbGVtZW50O3JldHVybih0aGlzLl9zZWxmLl9jfHxhKSgiaW5wdXQiLHtkaXJlY3RpdmVzOlt7bmFtZToibWFzayIscmF3TmFtZToidi1tYXNrIix2YWx1ZTp0aGlzLmNvbmZpZyxleHByZXNzaW9uOiJjb25maWcifV0sYXR0cnM6e3R5cGU6InRleHQifSxkb21Qcm9wczp7dmFsdWU6dGhpcy5kaXNwbGF5fSxvbjp7aW5wdXQ6dGhpcy5vbklucHV0fX0pfSwKc3RhdGljUmVuZGVyRm5zOltdfX0sZnVuY3Rpb24oaCxjLGEpe2guZXhwb3J0cz1hKDMpfV0pfSk7Ci8qKiAvbS9qcy9maW5hbmNlX211bHRpc3RlcC5qcyAqKi8KdmFyIF9fX2QyY19maW5hbmNlbXVsdGlzdGVwanNfY19vbj0iMjAyNi0wNC0xMyAwOTozMDowNyI7J3VzZSBzdHJpY3QnO3ZhciAkanNjb21wPSRqc2NvbXB8fHt9OyRqc2NvbXAuc2NvcGU9e307JGpzY29tcC5BU1NVTUVfRVM1PSExOyRqc2NvbXAuQVNTVU1FX05PX05BVElWRV9NQVA9ITE7JGpzY29tcC5BU1NVTUVfTk9fTkFUSVZFX1NFVD0hMTskanNjb21wLlNJTVBMRV9GUk9VTkRfUE9MWUZJTEw9ITE7JGpzY29tcC5JU09MQVRFX1BPTFlGSUxMUz0hMTskanNjb21wLkZPUkNFX1BPTFlGSUxMX1BST01JU0U9ITE7JGpzY29tcC5GT1JDRV9QT0xZRklMTF9QUk9NSVNFX1dIRU5fTk9fVU5IQU5ETEVEX1JFSkVDVElPTj0hMTskanNjb21wLmRlZmluZVByb3BlcnR5PSRqc2NvbXAuQVNTVU1FX0VTNXx8ImZ1bmN0aW9uIj09dHlwZW9mIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzP09iamVjdC5kZWZpbmVQcm9wZXJ0eTpmdW5jdGlvbihiLGgsbSl7aWYoYj09QXJyYXkucHJvdG90eXBlfHxiPT1PYmplY3QucHJvdG90eXBlKXJldHVybiBiO2JbaF09bS52YWx1ZTtyZXR1cm4gYn07CiRqc2NvbXAuZ2V0R2xvYmFsPWZ1bmN0aW9uKGIpe2I9WyJvYmplY3QiPT10eXBlb2YgZ2xvYmFsVGhpcyYmZ2xvYmFsVGhpcyxiLCJvYmplY3QiPT10eXBlb2Ygd2luZG93JiZ3aW5kb3csIm9iamVjdCI9PXR5cGVvZiBzZWxmJiZzZWxmLCJvYmplY3QiPT10eXBlb2YgZ2xvYmFsJiZnbG9iYWxdO2Zvcih2YXIgaD0wO2g8Yi5sZW5ndGg7KytoKXt2YXIgbT1iW2hdO2lmKG0mJm0uTWF0aD09TWF0aClyZXR1cm4gbX10aHJvdyBFcnJvcigiQ2Fubm90IGZpbmQgZ2xvYmFsIG9iamVjdCIpO307JGpzY29tcC5nbG9iYWw9JGpzY29tcC5nZXRHbG9iYWwodGhpcyk7JGpzY29tcC5JU19TWU1CT0xfTkFUSVZFPSJmdW5jdGlvbiI9PT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09PXR5cGVvZiBTeW1ib2woIngiKTskanNjb21wLlRSVVNUX0VTNl9QT0xZRklMTFM9ISRqc2NvbXAuSVNPTEFURV9QT0xZRklMTFN8fCRqc2NvbXAuSVNfU1lNQk9MX05BVElWRTskanNjb21wLnBvbHlmaWxscz17fTsKJGpzY29tcC5wcm9wZXJ0eVRvUG9seWZpbGxTeW1ib2w9e307JGpzY29tcC5QT0xZRklMTF9QUkVGSVg9IiRqc2NwJCI7dmFyICRqc2NvbXAkbG9va3VwUG9seWZpbGxlZFZhbHVlPWZ1bmN0aW9uKGIsaCl7dmFyIG09JGpzY29tcC5wcm9wZXJ0eVRvUG9seWZpbGxTeW1ib2xbaF07aWYobnVsbD09bSlyZXR1cm4gYltoXTttPWJbbV07cmV0dXJuIHZvaWQgMCE9PW0\/bTpiW2hdfTskanNjb21wLnBvbHlmaWxsPWZ1bmN0aW9uKGIsaCxtLG4pe2gmJigkanNjb21wLklTT0xBVEVfUE9MWUZJTExTPyRqc2NvbXAucG9seWZpbGxJc29sYXRlZChiLGgsbSxuKTokanNjb21wLnBvbHlmaWxsVW5pc29sYXRlZChiLGgsbSxuKSl9OwokanNjb21wLnBvbHlmaWxsVW5pc29sYXRlZD1mdW5jdGlvbihiLGgsbSxuKXttPSRqc2NvbXAuZ2xvYmFsO2I9Yi5zcGxpdCgiLiIpO2ZvcihuPTA7bjxiLmxlbmd0aC0xO24rKyl7dmFyIHE9YltuXTtpZighKHEgaW4gbSkpcmV0dXJuO209bVtxXX1iPWJbYi5sZW5ndGgtMV07bj1tW2JdO2g9aChuKTtoIT1uJiZudWxsIT1oJiYkanNjb21wLmRlZmluZVByb3BlcnR5KG0sYix7Y29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOmh9KX07CiRqc2NvbXAucG9seWZpbGxJc29sYXRlZD1mdW5jdGlvbihiLGgsbSxuKXt2YXIgcT1iLnNwbGl0KCIuIik7Yj0xPT09cS5sZW5ndGg7bj1xWzBdO249IWImJm4gaW4gJGpzY29tcC5wb2x5ZmlsbHM\/JGpzY29tcC5wb2x5ZmlsbHM6JGpzY29tcC5nbG9iYWw7Zm9yKHZhciB2PTA7djxxLmxlbmd0aC0xO3YrKyl7dmFyIHk9cVt2XTtpZighKHkgaW4gbikpcmV0dXJuO249blt5XX1xPXFbcS5sZW5ndGgtMV07bT0kanNjb21wLklTX1NZTUJPTF9OQVRJVkUmJiJlczYiPT09bT9uW3FdOm51bGw7aD1oKG0pO251bGwhPWgmJihiPyRqc2NvbXAuZGVmaW5lUHJvcGVydHkoJGpzY29tcC5wb2x5ZmlsbHMscSx7Y29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOmh9KTpoIT09bSYmKHZvaWQgMD09PSRqc2NvbXAucHJvcGVydHlUb1BvbHlmaWxsU3ltYm9sW3FdJiYobT0xRTkqTWF0aC5yYW5kb20oKT4+PjAsJGpzY29tcC5wcm9wZXJ0eVRvUG9seWZpbGxTeW1ib2xbcV09JGpzY29tcC5JU19TWU1CT0xfTkFUSVZFPwokanNjb21wLmdsb2JhbC5TeW1ib2wocSk6JGpzY29tcC5QT0xZRklMTF9QUkVGSVgrbSsiJCIrcSksJGpzY29tcC5kZWZpbmVQcm9wZXJ0eShuLCRqc2NvbXAucHJvcGVydHlUb1BvbHlmaWxsU3ltYm9sW3FdLHtjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6aH0pKSl9OyRqc2NvbXAudW5kZXJzY29yZVByb3RvQ2FuQmVTZXQ9ZnVuY3Rpb24oKXt2YXIgYj17YTohMH0saD17fTt0cnl7cmV0dXJuIGguX19wcm90b19fPWIsaC5hfWNhdGNoKG0pe31yZXR1cm4hMX07CiRqc2NvbXAuc2V0UHJvdG90eXBlT2Y9JGpzY29tcC5UUlVTVF9FUzZfUE9MWUZJTExTJiYiZnVuY3Rpb24iPT10eXBlb2YgT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZjokanNjb21wLnVuZGVyc2NvcmVQcm90b0NhbkJlU2V0KCk\/ZnVuY3Rpb24oYixoKXtiLl9fcHJvdG9fXz1oO2lmKGIuX19wcm90b19fIT09aCl0aHJvdyBuZXcgVHlwZUVycm9yKGIrIiBpcyBub3QgZXh0ZW5zaWJsZSIpO3JldHVybiBifTpudWxsOyRqc2NvbXAuYXJyYXlJdGVyYXRvckltcGw9ZnVuY3Rpb24oYil7dmFyIGg9MDtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gaDxiLmxlbmd0aD97ZG9uZTohMSx2YWx1ZTpiW2grK119Ontkb25lOiEwfX19OyRqc2NvbXAuYXJyYXlJdGVyYXRvcj1mdW5jdGlvbihiKXtyZXR1cm57bmV4dDokanNjb21wLmFycmF5SXRlcmF0b3JJbXBsKGIpfX07CiRqc2NvbXAubWFrZUl0ZXJhdG9yPWZ1bmN0aW9uKGIpe3ZhciBoPSJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZTeW1ib2wuaXRlcmF0b3ImJmJbU3ltYm9sLml0ZXJhdG9yXTtyZXR1cm4gaD9oLmNhbGwoYik6JGpzY29tcC5hcnJheUl0ZXJhdG9yKGIpfTskanNjb21wLmdlbmVyYXRvcj17fTskanNjb21wLmdlbmVyYXRvci5lbnN1cmVJdGVyYXRvclJlc3VsdElzT2JqZWN0Xz1mdW5jdGlvbihiKXtpZighKGIgaW5zdGFuY2VvZiBPYmplY3QpKXRocm93IG5ldyBUeXBlRXJyb3IoIkl0ZXJhdG9yIHJlc3VsdCAiK2IrIiBpcyBub3QgYW4gb2JqZWN0Iik7fTsKJGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dD1mdW5jdGlvbigpe3RoaXMuaXNSdW5uaW5nXz0hMTt0aGlzLnlpZWxkQWxsSXRlcmF0b3JfPW51bGw7dGhpcy55aWVsZFJlc3VsdD12b2lkIDA7dGhpcy5uZXh0QWRkcmVzcz0xO3RoaXMuZmluYWxseUFkZHJlc3NfPXRoaXMuY2F0Y2hBZGRyZXNzXz0wO3RoaXMuZmluYWxseUNvbnRleHRzXz10aGlzLmFicnVwdENvbXBsZXRpb25fPW51bGx9OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLnN0YXJ0Xz1mdW5jdGlvbigpe2lmKHRoaXMuaXNSdW5uaW5nXyl0aHJvdyBuZXcgVHlwZUVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBydW5uaW5nIik7dGhpcy5pc1J1bm5pbmdfPSEwfTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5zdG9wXz1mdW5jdGlvbigpe3RoaXMuaXNSdW5uaW5nXz0hMX07CiRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLmp1bXBUb0Vycm9ySGFuZGxlcl89ZnVuY3Rpb24oKXt0aGlzLm5leHRBZGRyZXNzPXRoaXMuY2F0Y2hBZGRyZXNzX3x8dGhpcy5maW5hbGx5QWRkcmVzc199OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLm5leHRfPWZ1bmN0aW9uKGIpe3RoaXMueWllbGRSZXN1bHQ9Yn07JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUudGhyb3dfPWZ1bmN0aW9uKGIpe3RoaXMuYWJydXB0Q29tcGxldGlvbl89e2V4Y2VwdGlvbjpiLGlzRXhjZXB0aW9uOiEwfTt0aGlzLmp1bXBUb0Vycm9ySGFuZGxlcl8oKX07JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUucmV0dXJuPWZ1bmN0aW9uKGIpe3RoaXMuYWJydXB0Q29tcGxldGlvbl89e3JldHVybjpifTt0aGlzLm5leHRBZGRyZXNzPXRoaXMuZmluYWxseUFkZHJlc3NffTsKJGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUuanVtcFRocm91Z2hGaW5hbGx5QmxvY2tzPWZ1bmN0aW9uKGIpe3RoaXMuYWJydXB0Q29tcGxldGlvbl89e2p1bXBUbzpifTt0aGlzLm5leHRBZGRyZXNzPXRoaXMuZmluYWxseUFkZHJlc3NffTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS55aWVsZD1mdW5jdGlvbihiLGgpe3RoaXMubmV4dEFkZHJlc3M9aDtyZXR1cm57dmFsdWU6Yn19OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLnlpZWxkQWxsPWZ1bmN0aW9uKGIsaCl7Yj0kanNjb21wLm1ha2VJdGVyYXRvcihiKTt2YXIgbT1iLm5leHQoKTskanNjb21wLmdlbmVyYXRvci5lbnN1cmVJdGVyYXRvclJlc3VsdElzT2JqZWN0XyhtKTtpZihtLmRvbmUpdGhpcy55aWVsZFJlc3VsdD1tLnZhbHVlLHRoaXMubmV4dEFkZHJlc3M9aDtlbHNlIHJldHVybiB0aGlzLnlpZWxkQWxsSXRlcmF0b3JfPWIsdGhpcy55aWVsZChtLnZhbHVlLGgpfTsKJGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUuanVtcFRvPWZ1bmN0aW9uKGIpe3RoaXMubmV4dEFkZHJlc3M9Yn07JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUuanVtcFRvRW5kPWZ1bmN0aW9uKCl7dGhpcy5uZXh0QWRkcmVzcz0wfTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5zZXRDYXRjaEZpbmFsbHlCbG9ja3M9ZnVuY3Rpb24oYixoKXt0aGlzLmNhdGNoQWRkcmVzc189Yjt2b2lkIDAhPWgmJih0aGlzLmZpbmFsbHlBZGRyZXNzXz1oKX07JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUuc2V0RmluYWxseUJsb2NrPWZ1bmN0aW9uKGIpe3RoaXMuY2F0Y2hBZGRyZXNzXz0wO3RoaXMuZmluYWxseUFkZHJlc3NfPWJ8fDB9OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLmxlYXZlVHJ5QmxvY2s9ZnVuY3Rpb24oYixoKXt0aGlzLm5leHRBZGRyZXNzPWI7dGhpcy5jYXRjaEFkZHJlc3NfPWh8fDB9OwokanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5lbnRlckNhdGNoQmxvY2s9ZnVuY3Rpb24oYil7dGhpcy5jYXRjaEFkZHJlc3NfPWJ8fDA7Yj10aGlzLmFicnVwdENvbXBsZXRpb25fLmV4Y2VwdGlvbjt0aGlzLmFicnVwdENvbXBsZXRpb25fPW51bGw7cmV0dXJuIGJ9OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLmVudGVyRmluYWxseUJsb2NrPWZ1bmN0aW9uKGIsaCxtKXttP3RoaXMuZmluYWxseUNvbnRleHRzX1ttXT10aGlzLmFicnVwdENvbXBsZXRpb25fOnRoaXMuZmluYWxseUNvbnRleHRzXz1bdGhpcy5hYnJ1cHRDb21wbGV0aW9uX107dGhpcy5jYXRjaEFkZHJlc3NfPWJ8fDA7dGhpcy5maW5hbGx5QWRkcmVzc189aHx8MH07CiRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLmxlYXZlRmluYWxseUJsb2NrPWZ1bmN0aW9uKGIsaCl7aD10aGlzLmZpbmFsbHlDb250ZXh0c18uc3BsaWNlKGh8fDApWzBdO2lmKGg9dGhpcy5hYnJ1cHRDb21wbGV0aW9uXz10aGlzLmFicnVwdENvbXBsZXRpb25ffHxoKXtpZihoLmlzRXhjZXB0aW9uKXJldHVybiB0aGlzLmp1bXBUb0Vycm9ySGFuZGxlcl8oKTt2b2lkIDAhPWguanVtcFRvJiZ0aGlzLmZpbmFsbHlBZGRyZXNzXzxoLmp1bXBUbz8odGhpcy5uZXh0QWRkcmVzcz1oLmp1bXBUbyx0aGlzLmFicnVwdENvbXBsZXRpb25fPW51bGwpOnRoaXMubmV4dEFkZHJlc3M9dGhpcy5maW5hbGx5QWRkcmVzc199ZWxzZSB0aGlzLm5leHRBZGRyZXNzPWJ9OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLmZvckluPWZ1bmN0aW9uKGIpe3JldHVybiBuZXcgJGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5Qcm9wZXJ0eUl0ZXJhdG9yKGIpfTsKJGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5Qcm9wZXJ0eUl0ZXJhdG9yPWZ1bmN0aW9uKGIpe3RoaXMub2JqZWN0Xz1iO3RoaXMucHJvcGVydGllc189W107Zm9yKHZhciBoIGluIGIpdGhpcy5wcm9wZXJ0aWVzXy5wdXNoKGgpO3RoaXMucHJvcGVydGllc18ucmV2ZXJzZSgpfTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LlByb3BlcnR5SXRlcmF0b3IucHJvdG90eXBlLmdldE5leHQ9ZnVuY3Rpb24oKXtmb3IoOzA8dGhpcy5wcm9wZXJ0aWVzXy5sZW5ndGg7KXt2YXIgYj10aGlzLnByb3BlcnRpZXNfLnBvcCgpO2lmKGIgaW4gdGhpcy5vYmplY3RfKXJldHVybiBifXJldHVybiBudWxsfTskanNjb21wLmdlbmVyYXRvci5FbmdpbmVfPWZ1bmN0aW9uKGIpe3RoaXMuY29udGV4dF89bmV3ICRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQ7dGhpcy5wcm9ncmFtXz1ifTsKJGpzY29tcC5nZW5lcmF0b3IuRW5naW5lXy5wcm90b3R5cGUubmV4dF89ZnVuY3Rpb24oYil7dGhpcy5jb250ZXh0Xy5zdGFydF8oKTtpZih0aGlzLmNvbnRleHRfLnlpZWxkQWxsSXRlcmF0b3JfKXJldHVybiB0aGlzLnlpZWxkQWxsU3RlcF8odGhpcy5jb250ZXh0Xy55aWVsZEFsbEl0ZXJhdG9yXy5uZXh0LGIsdGhpcy5jb250ZXh0Xy5uZXh0Xyk7dGhpcy5jb250ZXh0Xy5uZXh0XyhiKTtyZXR1cm4gdGhpcy5uZXh0U3RlcF8oKX07CiRqc2NvbXAuZ2VuZXJhdG9yLkVuZ2luZV8ucHJvdG90eXBlLnJldHVybl89ZnVuY3Rpb24oYil7dGhpcy5jb250ZXh0Xy5zdGFydF8oKTt2YXIgaD10aGlzLmNvbnRleHRfLnlpZWxkQWxsSXRlcmF0b3JfO2lmKGgpcmV0dXJuIHRoaXMueWllbGRBbGxTdGVwXygicmV0dXJuImluIGg\/aFsicmV0dXJuIl06ZnVuY3Rpb24obSl7cmV0dXJue3ZhbHVlOm0sZG9uZTohMH19LGIsdGhpcy5jb250ZXh0Xy5yZXR1cm4pO3RoaXMuY29udGV4dF8ucmV0dXJuKGIpO3JldHVybiB0aGlzLm5leHRTdGVwXygpfTsKJGpzY29tcC5nZW5lcmF0b3IuRW5naW5lXy5wcm90b3R5cGUudGhyb3dfPWZ1bmN0aW9uKGIpe3RoaXMuY29udGV4dF8uc3RhcnRfKCk7aWYodGhpcy5jb250ZXh0Xy55aWVsZEFsbEl0ZXJhdG9yXylyZXR1cm4gdGhpcy55aWVsZEFsbFN0ZXBfKHRoaXMuY29udGV4dF8ueWllbGRBbGxJdGVyYXRvcl9bInRocm93Il0sYix0aGlzLmNvbnRleHRfLm5leHRfKTt0aGlzLmNvbnRleHRfLnRocm93XyhiKTtyZXR1cm4gdGhpcy5uZXh0U3RlcF8oKX07CiRqc2NvbXAuZ2VuZXJhdG9yLkVuZ2luZV8ucHJvdG90eXBlLnlpZWxkQWxsU3RlcF89ZnVuY3Rpb24oYixoLG0pe3RyeXt2YXIgbj1iLmNhbGwodGhpcy5jb250ZXh0Xy55aWVsZEFsbEl0ZXJhdG9yXyxoKTskanNjb21wLmdlbmVyYXRvci5lbnN1cmVJdGVyYXRvclJlc3VsdElzT2JqZWN0XyhuKTtpZighbi5kb25lKXJldHVybiB0aGlzLmNvbnRleHRfLnN0b3BfKCksbjt2YXIgcT1uLnZhbHVlfWNhdGNoKHYpe3JldHVybiB0aGlzLmNvbnRleHRfLnlpZWxkQWxsSXRlcmF0b3JfPW51bGwsdGhpcy5jb250ZXh0Xy50aHJvd18odiksdGhpcy5uZXh0U3RlcF8oKX10aGlzLmNvbnRleHRfLnlpZWxkQWxsSXRlcmF0b3JfPW51bGw7bS5jYWxsKHRoaXMuY29udGV4dF8scSk7cmV0dXJuIHRoaXMubmV4dFN0ZXBfKCl9OwokanNjb21wLmdlbmVyYXRvci5FbmdpbmVfLnByb3RvdHlwZS5uZXh0U3RlcF89ZnVuY3Rpb24oKXtmb3IoO3RoaXMuY29udGV4dF8ubmV4dEFkZHJlc3M7KXRyeXt2YXIgYj10aGlzLnByb2dyYW1fKHRoaXMuY29udGV4dF8pO2lmKGIpcmV0dXJuIHRoaXMuY29udGV4dF8uc3RvcF8oKSx7dmFsdWU6Yi52YWx1ZSxkb25lOiExfX1jYXRjaChoKXt0aGlzLmNvbnRleHRfLnlpZWxkUmVzdWx0PXZvaWQgMCx0aGlzLmNvbnRleHRfLnRocm93XyhoKX10aGlzLmNvbnRleHRfLnN0b3BfKCk7aWYodGhpcy5jb250ZXh0Xy5hYnJ1cHRDb21wbGV0aW9uXyl7Yj10aGlzLmNvbnRleHRfLmFicnVwdENvbXBsZXRpb25fO3RoaXMuY29udGV4dF8uYWJydXB0Q29tcGxldGlvbl89bnVsbDtpZihiLmlzRXhjZXB0aW9uKXRocm93IGIuZXhjZXB0aW9uO3JldHVybnt2YWx1ZTpiLnJldHVybixkb25lOiEwfX1yZXR1cm57dmFsdWU6dm9pZCAwLGRvbmU6ITB9fTsKJGpzY29tcC5nZW5lcmF0b3IuR2VuZXJhdG9yXz1mdW5jdGlvbihiKXt0aGlzLm5leHQ9ZnVuY3Rpb24oaCl7cmV0dXJuIGIubmV4dF8oaCl9O3RoaXMudGhyb3c9ZnVuY3Rpb24oaCl7cmV0dXJuIGIudGhyb3dfKGgpfTt0aGlzLnJldHVybj1mdW5jdGlvbihoKXtyZXR1cm4gYi5yZXR1cm5fKGgpfTt0aGlzW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc319OyRqc2NvbXAuZ2VuZXJhdG9yLmNyZWF0ZUdlbmVyYXRvcj1mdW5jdGlvbihiLGgpe2g9bmV3ICRqc2NvbXAuZ2VuZXJhdG9yLkdlbmVyYXRvcl8obmV3ICRqc2NvbXAuZ2VuZXJhdG9yLkVuZ2luZV8oaCkpOyRqc2NvbXAuc2V0UHJvdG90eXBlT2YmJmIucHJvdG90eXBlJiYkanNjb21wLnNldFByb3RvdHlwZU9mKGgsYi5wcm90b3R5cGUpO3JldHVybiBofTsKJGpzY29tcC5hc3luY0V4ZWN1dGVQcm9taXNlR2VuZXJhdG9yPWZ1bmN0aW9uKGIpe2Z1bmN0aW9uIGgobil7cmV0dXJuIGIubmV4dChuKX1mdW5jdGlvbiBtKG4pe3JldHVybiBiLnRocm93KG4pfXJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihuLHEpe2Z1bmN0aW9uIHYoeSl7eS5kb25lP24oeS52YWx1ZSk6UHJvbWlzZS5yZXNvbHZlKHkudmFsdWUpLnRoZW4oaCxtKS50aGVuKHYscSl9dihiLm5leHQoKSl9KX07JGpzY29tcC5hc3luY0V4ZWN1dGVQcm9taXNlR2VuZXJhdG9yRnVuY3Rpb249ZnVuY3Rpb24oYil7cmV0dXJuICRqc2NvbXAuYXN5bmNFeGVjdXRlUHJvbWlzZUdlbmVyYXRvcihiKCkpfTskanNjb21wLmFzeW5jRXhlY3V0ZVByb21pc2VHZW5lcmF0b3JQcm9ncmFtPWZ1bmN0aW9uKGIpe3JldHVybiAkanNjb21wLmFzeW5jRXhlY3V0ZVByb21pc2VHZW5lcmF0b3IobmV3ICRqc2NvbXAuZ2VuZXJhdG9yLkdlbmVyYXRvcl8obmV3ICRqc2NvbXAuZ2VuZXJhdG9yLkVuZ2luZV8oYikpKX07CmZ1bmN0aW9uIGluaXRpYWxpemVGaW5hbmNlTXVsdGlTdGVwKGIpe2Z1bmN0aW9uIGgoZCl7c3dpdGNoKGQpe2Nhc2UgIkVtYWlsIHByb3ZpZGVkIjpjYXNlICJQaG9uZSBwcm92aWRlZCI6T3x8KCQoIiNmaW5hbmNlX211bHRpc3RlcF9mb3JtIixiKS50cmlnZ2VyKCJwb3B1cGl6ZXIuc3VibWl0dGVkIiksTz0hMCl9ImZ1bmN0aW9uIj09PXR5cGVvZiBnYVRyYWNrJiZnYVRyYWNrKCJfdHJhY2tFdmVudCIsIlVzZWQtU1JQLUZpbmFuY2UtUG9wdXAiLGQsd2luZG93LmxvY2F0aW9uLmhyZWYsMSl9ZnVuY3Rpb24gbShkKXskLmFqYXgoe3VybDoiLyIrdysiL2FqYXgvZ2V0QmFubmVyU2VhcmNoQmFyTWFrZXM\/d3N3aWR0aD0wIixkYXRhVHlwZToiSlNPTiIsZGF0YTp7dHlwZTpkLnRvTG93ZXJDYXNlKCl9LHN1Y2Nlc3M6ZnVuY3Rpb24oYyl7JCgiI2ZpbmFuY2VNdWx0aXN0ZXBNYWtlIixiKS5odG1sKCQoIiNmaW5hbmNlTXVsdGlzdGVwTWFrZSBvcHRpb246Zmlyc3QiLApiKVswXS5vdXRlckhUTUwpOyQoIiNmaW5hbmNlTXVsdGlzdGVwTW9kZWwiLGIpLmh0bWwoJCgiI2ZpbmFuY2VNdWx0aXN0ZXBNb2RlbCBvcHRpb246Zmlyc3QiLGIpWzBdLm91dGVySFRNTCk7JCgiI2ZpbmFuY2VNdWx0aXN0ZXBUcmltIixiKS5odG1sKCQoIiNmaW5hbmNlTXVsdGlzdGVwVHJpbSBvcHRpb246Zmlyc3QiLGIpWzBdLm91dGVySFRNTCk7JC5lYWNoKGMsZnVuY3Rpb24oZSxmKXskKCIjZmluYW5jZU11bHRpc3RlcE1ha2UiLGIpLmFwcGVuZCgnPG9wdGlvbiB2YWx1ZT0iJytmLm1ha2UrJyI+JytmLnRpdGxlMisiPC9vcHRpb24+Iil9KX19KX1mdW5jdGlvbiBuKGQsYyl7JC5hamF4KHt1cmw6Ii8iK3crIi9hamF4L2dldEJhbm5lclNlYXJjaEJhck1vZGVscz93c3dpZHRoPTAiLGRhdGFUeXBlOiJKU09OIixkYXRhOnttYWtlOmJ0b2EoYyksdHlwZTpkLnRvTG93ZXJDYXNlKCl9LHN1Y2Nlc3M6ZnVuY3Rpb24oZSl7JCgiI2ZpbmFuY2VNdWx0aXN0ZXBNb2RlbCIsCmIpLmh0bWwoJCgiI2ZpbmFuY2VNdWx0aXN0ZXBNb2RlbCBvcHRpb246Zmlyc3QiLGIpWzBdLm91dGVySFRNTCk7JCgiI2ZpbmFuY2VNdWx0aXN0ZXBUcmltIixiKS5odG1sKCQoIiNmaW5hbmNlTXVsdGlzdGVwVHJpbSBvcHRpb246Zmlyc3QiLGIpWzBdLm91dGVySFRNTCk7JC5lYWNoKGUsZnVuY3Rpb24oZixnKXskKCIjZmluYW5jZU11bHRpc3RlcE1vZGVsIixiKS5hcHBlbmQoJzxvcHRpb24gZGF0YS1tb2RlbD0iJytnLm1vZGVsTmFtZSsnIiBkYXRhLXllYXI9IicrZy55ZWFyKyciIHZhbHVlPSInK2cudGl0bGUyKyciPicrZy50aXRsZTIrIjwvb3B0aW9uPiIpfSl9fSl9ZnVuY3Rpb24gcShkLGMsZSl7JC5hamF4KHt1cmw6Ii8iK3crIi9hamF4L2dldE5ld1RyaW1zP3dzd2lkdGg9MCIsZGF0YVR5cGU6IkpTT04iLGRhdGE6e21ha2U6ZCxtb2RlbDpjLHllYXI6ZX0sc3VjY2VzczpmdW5jdGlvbihmKXskKCIjZmluYW5jZU11bHRpc3RlcFRyaW0iLApiKS5odG1sKCQoIiNmaW5hbmNlTXVsdGlzdGVwVHJpbSBvcHRpb246Zmlyc3QiLGIpWzBdLm91dGVySFRNTCk7JC5lYWNoKGYsZnVuY3Rpb24oZyxsKXskKCIjZmluYW5jZU11bHRpc3RlcFRyaW0iLGIpLmFwcGVuZCgnPG9wdGlvbiBkYXRhLXByaWNlPSInK2wucHJpY2UrJyIgZGF0YS1zdHlsZWlkPSInK2wuc3R5bGVpZCsnIiB2YWx1ZT0iJytsLnRyaW0rJyI+JytsLnRyaW0rIjwvb3B0aW9uPiIpfSl9fSl9ZnVuY3Rpb24gdihkLGMpeyQuYWpheCh7dXJsOiIvIit3KyIvYWpheC9nZXRJbnZlbnRvcnlUcmltcz93c3dpZHRoPTAiLGRhdGFUeXBlOiJKU09OIixkYXRhOnttYWtlOmQsbW9kZWw6Y30sc3VjY2VzczpmdW5jdGlvbihlKXskKCIjZmluYW5jZU11bHRpc3RlcFRyaW0iLGIpLmh0bWwoJCgiI2ZpbmFuY2VNdWx0aXN0ZXBUcmltIG9wdGlvbjpmaXJzdCIsYilbMF0ub3V0ZXJIVE1MKTskLmVhY2goZSxmdW5jdGlvbihmLGcpeyQoIiNmaW5hbmNlTXVsdGlzdGVwVHJpbSIsCmIpLmFwcGVuZCgnPG9wdGlvbiBkYXRhLXByaWNlPSInK2cub3JpZ2luYWxwcmljZSsnIiBkYXRhLXZlaGljbGVpZD0iJytnLnZlaGljbGVpZCsnIiBkYXRhLXllYXI9IicrZy55ZWFyKyciIGRhdGEtaXNuZXc9IicrZy5pc25ldysnIiBkYXRhLWlzZGVtbz0iJytnLmRlbW8rJyIgZGF0YS1zdG9ja251bWJlcj0iJytnLnN0b2NrbnVtYmVyKyciIGRhdGEtbWlsZWFnZT0iJytnLm1pbGVhZ2UrJyIgZGF0YS1zdHlsZWlkPSInK2cuc3R5bGVpZCsnIiB2YWx1ZT0iJytnLnRyaW0rJyI+JytnLnRpdGxlKyI8L29wdGlvbj4iKX0pfX0pfWZ1bmN0aW9uIHkoZCl7JC5hamF4KHt1cmw6Ii8iK3crIi9hamF4L2dldFVzZWRDYWxjdWxhdG9ySFRNTD93c3dpZHRoPTAiLGRhdGFUeXBlOiJKU09OIixkYXRhOntjYXJpZDpkfSxzdWNjZXNzOmZ1bmN0aW9uKGMpe2MudmFsaWQ\/KCQoIiNmaW5hbmNlTXVsdGlzdGVwVXNlZENhbGN1bGF0b3IiLGIpLmh0bWwoYy5odG1sKSwKJCgiI2ZpbmFuY2VNdWx0aXN0ZXBVc2VkQ2FsY3VsYXRvciIsYikuZmluZCgiLmNhbGMtZm9ybSIpLmZpbmQoIi51c2VkQ2FsY3VsYXRvckRvd25QYXltZW50IikuYWZ0ZXIoJCgiLmZpbmFuY2VNdWx0aXN0ZXBVc2VkQ2FsY3VsYXRvclRyYWRlSW4iLGIpLmh0bWwoKSksVygpLCQoIiNmaW5hbmNlTXVsdGlzdGVwVXNlZENhbGN1bGF0b3IgLnBheW1lbnRDYWxjdWxhdG9yVHJhZGVJbkZpbmFsIikudmFsKGEuZm9ybWRhdGEudHJhZGVJblZhbHVlKSwkKCIjZmluYW5jZU11bHRpc3RlcFVzZWRDYWxjdWxhdG9yIC5wYXltZW50Q2FsY3VsYXRvclRyYWRlSW5GaW5hbCIpLmF0dHIoIm1heCIsYS5mb3JtZGF0YS50cmFkZUluVmFsdWUpLCQoIiNmaW5hbmNlTXVsdGlzdGVwVXNlZENhbGN1bGF0b3IiLGIpLnNob3coKSk6KGEuZm9ybWRhdGEubm9QYXltZW50PSEwLCQoIiNmaW5hbmNlTXVsdGlzdGVwVXNlZENhbGN1bGF0b3IiLGIpLmhpZGUoKSxhLm5leHQoITApKX19KX1mdW5jdGlvbiBXKCl7JCgiLmZpbmFuY2VNdWx0aXN0ZXBVc2VkQ2FsY3VsYXRvciAuZG93bnBheW1lbnQiKS5vbigiYmx1ciIsCmZ1bmN0aW9uKCl7QygpfSk7JCgiLmZpbmFuY2VNdWx0aXN0ZXBVc2VkQ2FsY3VsYXRvciAubm9PZk1vbnRocyIpLm9uKCJjaGFuZ2UiLGZ1bmN0aW9uKCl7dmFyIGQ9JCh0aGlzKS5maW5kKCJvcHRpb246c2VsZWN0ZWQiKTskKCIuZmluYW5jZU11bHRpc3RlcFVzZWRDYWxjdWxhdG9yIC5pbnRlcmVzdHJhdGUiKS52YWwoZC5hdHRyKCJkYXRhLXJhdGUiKSk7QygpfSk7JCgiLmZpbmFuY2VNdWx0aXN0ZXBVc2VkQ2FsY3VsYXRvciAucGF5bWVudEZyZXF1ZW5jeSIpLm9uKCJjaGFuZ2UiLGZ1bmN0aW9uKCl7QygpfSk7QygpfWZ1bmN0aW9uIEMoKXt2YXIgZD1wYXJzZUZsb2F0KCQoIi5maW5hbmNlTXVsdGlzdGVwVXNlZENhbGN1bGF0b3IgLmludGVyZXN0cmF0ZSIsYikudmFsKCkucmVwbGFjZSgiLCIsIi4iKSkudG9GaXhlZCgyKS8xMDAsYz1wYXJzZUZsb2F0KCQoIi5maW5hbmNlTXVsdGlzdGVwVXNlZENhbGN1bGF0b3IgLm5vT2ZNb250aHMiLGIpLnZhbCgpKS8xMixlPXBhcnNlRmxvYXQoJCgiLmZpbmFuY2VNdWx0aXN0ZXBVc2VkQ2FsY3VsYXRvciAubG9hbmFtb3VudCIsCmIpLnZhbCgpKS50b0ZpeGVkKDIpOyQoIi5maW5hbmNlTXVsdGlzdGVwVXNlZENhbGN1bGF0b3IgLmZlZWFtb3VudCIsYikubGVuZ3RoJiYoZT1wYXJzZUZsb2F0KGUpK3BhcnNlRmxvYXQoJCgiLmZpbmFuY2VNdWx0aXN0ZXBVc2VkQ2FsY3VsYXRvciAuZmVlYW1vdW50IixiKS52YWwoKS5yZXBsYWNlKCIsIiwiIikpKTsxPT0kKCIjdXNldGF4ZXMiLGIpLnZhbCgpJiYoZSo9cGFyc2VGbG9hdCgkKCIjdGF4ZXMiKS52YWwoKSkudG9GaXhlZCgyKS8xMDArMSk7MDwkKCIuZmluYW5jZU11bHRpc3RlcFVzZWRDYWxjdWxhdG9yIC5kb3ducGF5bWVudCIsYikudmFsKCkmJihlLT1wYXJzZUZsb2F0KCQoIi5maW5hbmNlTXVsdGlzdGVwVXNlZENhbGN1bGF0b3IgLmRvd25wYXltZW50IixiKS52YWwoKSkudG9GaXhlZCgyKSk7dmFyIGY9IiIsZz0xMjtzd2l0Y2goJCgiLmZpbmFuY2VNdWx0aXN0ZXBVc2VkQ2FsY3VsYXRvciAucGF5bWVudEZyZXF1ZW5jeSIsYikudmFsKCkpe2Nhc2UgIndlZWsiOmc9CjUyO2Y9JCgiI3dlZWtUZXh0IikudmFsKCk7YnJlYWs7Y2FzZSAiMndlZWtzIjpnPTI2O2Y9JCgiIzJ3ZWVrc1RleHQiKS52YWwoKTticmVhaztjYXNlICJtb250aGx5IjpmPSQoIiNtb250aGx5VGV4dCIpLnZhbCgpO2c9MTI7YnJlYWs7Y2FzZSAiYmltb250aGx5IjpmPSQoIiNiaW1vbnRobHlUZXh0IikudmFsKCksZz0yNH1jKj1nOzA8ZD8oZC89ZyxnPU1hdGgucG93KGQrMSxjKSxlKj1kKmcvKGctMSkpOmUvPWM7ZT1NYXRoLnJvdW5kKDEwMCplKS8xMDA7aXNOYU4oZSkmJihlPTApOyQoIi5maW5hbmNlTXVsdGlzdGVwVXNlZENhbGN1bGF0b3IgLm91dHB1dHByaWNlIixiKS52YWwoIiQiK2UpOyQoIi5maW5hbmNlTXVsdGlzdGVwVXNlZENhbGN1bGF0b3IgLm91dHB1dHByaWNlLXR4dCIsYikuaHRtbCgiJCIrZSk7Zj0kKCIjZXN0aW1kYXRlZFBheW1lbnRUZXh0IixiKS52YWwoKS5yZXBsYWNlKCIjI0ZSRVFVRU5DWSMjIixmKTskKCIuZmluYW5jZU11bHRpc3RlcFVzZWRDYWxjdWxhdG9yIC5lc3RpbWF0ZWRUZXh0IiwKYikuaHRtbCgiPHN0cm9uZz4iK2YrIjwvc3Ryb25nPiIpO2Y9JCgiYm9keSIpLmhhc0NsYXNzKCJGUkVOQ0giKT8iRmluYW5jZW1lbnQiOiJGaW5hbmNpbmciO2EuZm9ybWRhdGEucGF5bWVudFR5cGU9ZjthLmZvcm1kYXRhLnBheW1lbnRUeXBlUmVhbD0iZmluYW5jaW5nIjthLmZvcm1kYXRhLnBheW1lbnRUZXJtPSQoIi5maW5hbmNlTXVsdGlzdGVwVXNlZENhbGN1bGF0b3IgLm5vT2ZNb250aHMiLGIpLnZhbCgpO2EuZm9ybWRhdGEucGF5bWVudFZhbHVlPWU7YS5mb3JtZGF0YS5wYXltZW50RG93blBheW1lbnQ9JCgiLmZpbmFuY2VNdWx0aXN0ZXBVc2VkQ2FsY3VsYXRvciAuZG93bnBheW1lbnQiLGIpLnZhbCgpfHwwO2EuZm9ybWRhdGEucGF5bWVudEludGVydmFsPSQoIi5maW5hbmNlTXVsdGlzdGVwVXNlZENhbGN1bGF0b3IgLnBheW1lbnRGcmVxdWVuY3kiLGIpLnZhbCgpO2EuZm9ybWRhdGEucGF5bWVudFJhdGU9JCgiLmZpbmFuY2VNdWx0aXN0ZXBVc2VkQ2FsY3VsYXRvciAuaW50ZXJlc3RyYXRlIiwKYikudmFsKCk7YS5mb3JtZGF0YS52ZWhpY2xlSW5pdGlhbFByaWNlPXBhcnNlSW50KCQoIi5maW5hbmNlTXVsdGlzdGVwVXNlZENhbGN1bGF0b3IgLmxvYW5hbW91bnQiLGIpLnZhbCgpKTtmPXBhcnNlSW50KCQoIi5maW5hbmNlTXVsdGlzdGVwVXNlZENhbGN1bGF0b3IgLmZlZWFtb3VudCIsYikudmFsKCkucmVwbGFjZSgiLCIsIiIpKTthLmZvcm1kYXRhLnZlaGljbGVGaW5hbFByaWNlPXBhcnNlSW50KCQoIi5maW5hbmNlTXVsdGlzdGVwVXNlZENhbGN1bGF0b3IgLmxvYW5hbW91bnQiLGIpLnZhbCgpKStmO2EuZm9ybWRhdGEucGF5bWVudFRvdGFsRmVlPWY7ay5jaGVja1ZhbGlkaXR5KCl9ZnVuY3Rpb24gUCgpeyIxIj09JCgiI0ZJTkFOQ0VfTVVMVElTVEVQX2lzSW5zdGFudCIsYikudmFsKCkmJigkKGIpLmZpbmQoIi5jb25maXJtYXRpb25UaXRsZSIpLmhpZGUoKSwkKGIpLmZpbmQoIi5jb25maXJtYXRpb25UZXh0Iikuc2hvdygpLCQoYikuZmluZCgiLmNyZWRpdERlY2lzaW9uIikuaHRtbCgiIiksCiQoYikuZmluZCgiLmNyZWRpdERlY2lzaW9uIikuaGlkZSgpKTtpZihfbG9jYWxTdG9yYWdlR2V0KCJ0cmFkZWluX3N1Ym1pdF9kYXRhIikmJiIiPT0kKCJpbnB1dFtuYW1lPWZpbmFuY2VUcmFkZUluTWFrZV0iKS52YWwoKSl7dmFyIGQ9SlNPTi5wYXJzZShfbG9jYWxTdG9yYWdlR2V0KCJ0cmFkZWluX3N1Ym1pdF9kYXRhIikpOyQoImlucHV0W25hbWU9ZmluYW5jZVRyYWRlSW5NYWtlXSIpLnZhbChkLm1ha2UpOyQoImlucHV0W25hbWU9ZmluYW5jZVRyYWRlSW5Nb2RlbF0iKS52YWwoZC5tb2RlbCk7JCgiaW5wdXRbbmFtZT1maW5hbmNlVHJhZGVJblllYXJdIikudmFsKGQueWVhcik7JCgiaW5wdXRbbmFtZT1maW5hbmNlVHJhZGVJblRyaW1dIikudmFsKGQudHJpbSk7JCgiaW5wdXRbbmFtZT1maW5hbmNlVHJhZGVJblZhbHVlXSIpLnZhbChkLnZhbHVlKTtfbG9jYWxTdG9yYWdlR2V0KCJ0cmFkZWluX2N1cnJlbnRfdmFsdWUiKSYmKGQ9SlNPTi5wYXJzZShfbG9jYWxTdG9yYWdlR2V0KCJ0cmFkZWluX2N1cnJlbnRfdmFsdWUiKSksCiQoImlucHV0W25hbWU9ZmluYW5jZVRyYWRlSW5WYWx1ZV0iKS5hdHRyKCJkYXRhLWN1cnJlbnQiLGQudmFsdWUpKX1hLnNob3dFcnJvcj0hMTthLnB1c2hQYXJ0aWFsPSExO2suc2V0RGVwYXJ0bWVudCgpO2suc2V0VHJhZGVJbigpO2lmKGsudXNlcklkKCkpJC5hamF4KHt1cmw6Ii8iK3crIi9hamF4L2dldEZpbmFuY2VNdWx0aXN0ZXBVc2VySWRBbmREYXRhP3dzd2lkdGg9MCIsZGF0YVR5cGU6IkpTT04iLHR5cGU6IlBPU1QiLGRhdGE6e3VzZXJJZDprLnVzZXJJZCgpLGRvbWFpbjpRLHNpdGVJZDokKCIjc2l0ZUlEIikudmFsKCl8fCQoIiN0b3BzaXRlaWQiKS52YWwoKSxsYW5nOiQoIiNhY3RpdmVzaXRlbGFuZ3VhZ2UiKS52YWwoKSxlbWFpbEhhbmRsZXJKc29uT2JqZWN0OkpTT04uc3RyaW5naWZ5KEopfSxzdWNjZXNzOmZ1bmN0aW9uKGcpe2cuSUR8fChnLklEPS0xKTtrLnVzZXJJZChnLklEKTtnLmRhdGEmJihhLmZvcm1kYXRhPUpTT04ucGFyc2UoZy5kYXRhKSk7CiIiIT1lbWFpbEhhbmRsZXIudXNlckZpcnN0TmFtZSYmInVuZGVmaW5lZCIhPWVtYWlsSGFuZGxlci51c2VyRmlyc3ROYW1lJiZhLmZvcm1kYXRhLmZpcnN0TmFtZSE9ZW1haWxIYW5kbGVyLnVzZXJGaXJzdE5hbWUmJihhLmZvcm1kYXRhLmZpcnN0TmFtZT1lbWFpbEhhbmRsZXIudXNlckZpcnN0TmFtZSk7IiIhPWVtYWlsSGFuZGxlci51c2VyTGFzdE5hbWUmJiJ1bmRlZmluZWQiIT1lbWFpbEhhbmRsZXIudXNlckxhc3ROYW1lJiZhLmZvcm1kYXRhLmxhc3ROYW1lIT1lbWFpbEhhbmRsZXIudXNlckxhc3ROYW1lJiYoYS5mb3JtZGF0YS5sYXN0TmFtZT1lbWFpbEhhbmRsZXIudXNlckxhc3ROYW1lKTsiIiE9ZW1haWxIYW5kbGVyLnVzZXJFbWFpbCYmInVuZGVmaW5lZCIhPWVtYWlsSGFuZGxlci51c2VyRW1haWwmJmEuZm9ybWRhdGEuZW1haWxBZGRyZXNzIT1lbWFpbEhhbmRsZXIudXNlckVtYWlsJiYoYS5mb3JtZGF0YS5lbWFpbEFkZHJlc3M9ZW1haWxIYW5kbGVyLnVzZXJFbWFpbCk7CiIiIT1lbWFpbEhhbmRsZXIudXNlclBob25lJiYidW5kZWZpbmVkIiE9ZW1haWxIYW5kbGVyLnVzZXJQaG9uZSYmYS5mb3JtZGF0YS5waG9uZU51bWJlciE9ZW1haWxIYW5kbGVyLnVzZXJQaG9uZSYmKGEuZm9ybWRhdGEucGhvbmVOdW1iZXI9ZW1haWxIYW5kbGVyLnVzZXJQaG9uZSwkKCIjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSIsYikuZmluZCgnaW5wdXRbbmFtZT0icGhvbmVOdW1iZXIiXScpLnZhbChhLmZvcm1kYXRhLnBob25lTnVtYmVyKSk7aWYoInVuZGVmaW5lZCIhPT10eXBlb2YgY2xpZW50U3RvcmFnZSl7bGV0IGw7YS5mb3JtZGF0YS5maXJzdE5hbWU9bnVsbCE9KGw9ay5nZXRDbGllbnRTdG9yYWdlRGF0YSgiZmlyc3RuYW1lIikpP2w6YS5mb3JtZGF0YS5maXJzdE5hbWU7bGV0IHA7YS5mb3JtZGF0YS5sYXN0TmFtZT1udWxsIT0ocD1rLmdldENsaWVudFN0b3JhZ2VEYXRhKCJsYXN0bmFtZSIpKT9wOmEuZm9ybWRhdGEubGFzdE5hbWU7bGV0IHI7YS5mb3JtZGF0YS5lbWFpbEFkZHJlc3M9Cm51bGwhPShyPWsuZ2V0Q2xpZW50U3RvcmFnZURhdGEoImVtYWlsIikpP3I6YS5mb3JtZGF0YS5lbWFpbEFkZHJlc3M7bGV0IHQ7YS5mb3JtZGF0YS5waG9uZU51bWJlcj1udWxsIT0odD1rLmdldENsaWVudFN0b3JhZ2VEYXRhKCJwaG9uZSIpKT90OmEuZm9ybWRhdGEucGhvbmVOdW1iZXI7JCgiI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0iLGIpLmZpbmQoJ2lucHV0W25hbWU9InBob25lTnVtYmVyIl0nKS52YWwoYS5mb3JtZGF0YS5waG9uZU51bWJlcil9MD09YS5mb3JtZGF0YS5hZGRyZXNzX3llYXJzJiYwPT1hLmZvcm1kYXRhLmFkZHJlc3NfbW9udGhzJiYoYS5mb3JtZGF0YS5hZGRyZXNzPSIiKTtnLnN0ZXAmJihhLnN0ZXA9TnVtYmVyKGcuc3RlcCksYS5uZXh0U3RlcD1hLm5leHRTdGVwRGVmYXVsdFZhbHVlc1sic3RlcCIrZy5zdGVwXSk7JChkb2N1bWVudCkudHJpZ2dlcigiY3JlZGl0Lm11bHRpc3RlcC5zaG93Iik7JCgiI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0iLGIpLnNob3coKTsKay5zZXRDdXJyZW50TWFrZU1vZGVsWWVhcigpO2sub25TaG93RnVuY3Rpb25Ub1J1bigpO2EuZmlyc3RTdGVwPSExfSxjb21wbGV0ZTpmdW5jdGlvbihnKXtpZighZy5kYXRhKXJldHVybiBrLnVzZXJJZCgtMSksbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oImZpbmFuY2VfbXVsdGlzdGVwLmxpbmVhcl9zdGVwIiksUCgpfX0pO2Vsc2V7YS5wdXNoUGFydGlhbD0hMTsiIiE9ZW1haWxIYW5kbGVyLnVzZXJGaXJzdE5hbWUmJiJ1bmRlZmluZWQiIT1lbWFpbEhhbmRsZXIudXNlckZpcnN0TmFtZSYmKGEuZm9ybWRhdGEuZmlyc3ROYW1lPWVtYWlsSGFuZGxlci51c2VyRmlyc3ROYW1lKTsiIiE9ZW1haWxIYW5kbGVyLnVzZXJMYXN0TmFtZSYmInVuZGVmaW5lZCIhPWVtYWlsSGFuZGxlci51c2VyTGFzdE5hbWUmJihhLmZvcm1kYXRhLmxhc3ROYW1lPWVtYWlsSGFuZGxlci51c2VyTGFzdE5hbWUpOyIiIT1lbWFpbEhhbmRsZXIudXNlckVtYWlsJiYidW5kZWZpbmVkIiE9ZW1haWxIYW5kbGVyLnVzZXJFbWFpbCYmCihhLmZvcm1kYXRhLmVtYWlsQWRkcmVzcz1lbWFpbEhhbmRsZXIudXNlckVtYWlsKTsiIiE9ZW1haWxIYW5kbGVyLnVzZXJQaG9uZSYmInVuZGVmaW5lZCIhPWVtYWlsSGFuZGxlci51c2VyUGhvbmUmJihhLmZvcm1kYXRhLnBob25lTnVtYmVyPWVtYWlsSGFuZGxlci51c2VyUGhvbmUsJCgiI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0iLGIpLmZpbmQoJ2lucHV0W25hbWU9InBob25lTnVtYmVyIl0nKS52YWwoYS5mb3JtZGF0YS5waG9uZU51bWJlcikpO2lmKCJ1bmRlZmluZWQiIT09dHlwZW9mIGNsaWVudFN0b3JhZ2Upe3ZhciBjO2EuZm9ybWRhdGEuZmlyc3ROYW1lPW51bGwhPShjPWsuZ2V0Q2xpZW50U3RvcmFnZURhdGEoImZpcnN0bmFtZSIpKT9jOmEuZm9ybWRhdGEuZmlyc3ROYW1lO3ZhciBlO2EuZm9ybWRhdGEubGFzdE5hbWU9bnVsbCE9KGU9ay5nZXRDbGllbnRTdG9yYWdlRGF0YSgibGFzdG5hbWUiKSk\/ZTphLmZvcm1kYXRhLmxhc3ROYW1lO3ZhciBmO2EuZm9ybWRhdGEuZW1haWxBZGRyZXNzPQpudWxsIT0oZj1rLmdldENsaWVudFN0b3JhZ2VEYXRhKCJlbWFpbCIpKT9mOmEuZm9ybWRhdGEuZW1haWxBZGRyZXNzO2xldCBnO2EuZm9ybWRhdGEucGhvbmVOdW1iZXI9bnVsbCE9KGc9ay5nZXRDbGllbnRTdG9yYWdlRGF0YSgicGhvbmUiKSk\/ZzphLmZvcm1kYXRhLnBob25lTnVtYmVyOyQoIiNmaW5hbmNlX211bHRpc3RlcF9mb3JtIixiKS5maW5kKCdpbnB1dFtuYW1lPSJwaG9uZU51bWJlciJdJykudmFsKGEuZm9ybWRhdGEucGhvbmVOdW1iZXIpfSQoJyNtaW5pZm9ybSBbbmFtZT0ibXVsdGlfZGVhbGVyX3NlbmRUbyJdJykubGVuZ3RoJiYiIiE9JCgnI21pbmlmb3JtIFtuYW1lPSJtdWx0aV9kZWFsZXJfc2VuZFRvIl0nKS52YWwoKSYmKGEuZm9ybWRhdGEubXVsdGlGcm9tTWluaT0hMCk7JCgiI21heF9idWRnZXQiKS5sZW5ndGgmJihhLnB1c2hQYXJ0aWFsPSEwLGM9IiIsZT1wYXJzZUZsb2F0KCQoIiNtYXhfYnVkZ2V0IikudmFsKCkucmVwbGFjZSgvW14wLTkuLV0rL2csIiIpKSwKYz1rLmdldEN1cnJlbnRCdWRnZXQoZSksIjEiPT11JiZpc05hTihlKSYmKGM9IiIpLGEuZm9ybWRhdGEuYnVkZ2V0PWMpOyQoIi50cmFjay1wcm9ncmVzcyIpLmxlbmd0aCYmKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCJ0cmFkZWluX3N1Ym1pdF9kYXRhIikmJihhLmZvcm1kYXRhLmN1cnJlbnRseURyaXZpbmc9IkZJTkFOQ0VfRk9STV9BTFJFQURZX0RSSVZJTkdfVFJBREUiKSxjPWxvY2FsU3RvcmFnZS5nZXRJdGVtKCJyZXRhaWxfdHJhY2tfZGF0YSIpLChjPUpTT04ucGFyc2UoYykpJiZjLnZhbHVlJiYoYz1KU09OLnBhcnNlKGMudmFsdWUpKSYmYy5wYXltZW50JiZjLnBheW1lbnQucGF5bWVudFZhbHVlJiYoZT1jLnBheW1lbnQucGF5bWVudFZhbHVlLGM9ZVswXSxlPWVbM10sZj0iIixjPSJtb250aGx5Ij09ZT9wYXJzZUZsb2F0KGMpOiJ3ZWVrbHkiPT1lPzUyKnBhcnNlRmxvYXQoYykvMTI6InNlbWltb250aGx5Ij09ZT8yNCpwYXJzZUZsb2F0KGMpLzEyOjI2KnBhcnNlRmxvYXQoYykvCjEyLGY9ay5nZXRDdXJyZW50QnVkZ2V0KGMpLGEuZm9ybWRhdGEuYnVkZ2V0PWYpKTtkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdbbmFtZT0iYnVkZ2V0Il0rbGFiZWwnKS5mb3JFYWNoKGc9PntnLmlubmVySFRNTD1nLmlubmVySFRNTC5yZXBsYWNlKC8oXCRcZHszLDR9fFxkezMsNH1cJCkvZyxsPT5EMkNVdGlscy5Gb3JtYXQudG9QcmljZShsLnJlcGxhY2UoL1wkL2csIiIpKSl9KTskKGRvY3VtZW50KS50cmlnZ2VyKCJjcmVkaXQubXVsdGlzdGVwLnNob3ciKTskKCIjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSIsYikuc2hvdygpOzA9PWEuc3RlcCYmKCQoIiNmaW5hbmNlX211bHRpc3RlcF9mb3JtX25leHRfYnRuIixiKS5oaWRlKCksJCgiI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0iLGIpLm9mZigiY2xpY2subm9CdXR0b24iLCJpbnB1dFt0eXBlPXJhZGlvXSIpLCQoIiNmaW5hbmNlX211bHRpc3RlcF9mb3JtIixiKS5vbigiY2xpY2subm9CdXR0b24iLCJpbnB1dFt0eXBlPXJhZGlvXSIsCmZ1bmN0aW9uKCl7c2V0VGltZW91dChmdW5jdGlvbigpe2EubmV4dCgpfSwxRTMpfSkpO2suc2V0Q3VycmVudE1ha2VNb2RlbFllYXIoKX19dmFyIHo9JCgiI0ZJTkFOQ0VfTVVMVElTVEVQX1BIT05FX1BPU0lUSU9OX0NIRUNLIikudmFsKCksSz0kKCIjRklOQU5DRV9NVUxUSVNURVBfUEhPTkVfUE9TSVRJT05fU0VMRUNUIikudmFsKCksRD0kKCIjQURNSU5fTUFOREFUT1JZX0NSRURJVF9CVVJFQVVfQ0hFQ0siKS52YWwoKSxBPSQoIiNBU0tfRk9SX1NJTl9DSEVDSyIpLnZhbCgpLE89ITEsdT0kKCIjRklOQU5DRV9NVUxUSVNURVBfaXNTZWNvbmRDaGFuY2UiLGIpLnZhbCgpLHg9JCgiI0ZJTkFOQ0VfTVVMVElTVEVQX2lzSW5zdGFudCIsYikudmFsKCksRT0kKCIjRklOQU5DRV9NVUxUSVNURVBfaXNWd0RSIixiKS52YWwoKSxMPTEsTT1bMSwyLDMsNiw3LDEzLDE0LDE1XSxGPVt7ZnVuYzoidmFsaWRhdGVOb3RFbXB0eSIsdmFsdWU6ImVtcGxveW1lbnRTdGF0dXMifV0sUj1bXSxTPQpbe2Z1bmM6InZhbGlkYXRlTm90RW1wdHkiLHZhbHVlOiJmaXJzdE5hbWUifSx7ZnVuYzoidmFsaWRhdGVOb3RFbXB0eSIsdmFsdWU6Imxhc3ROYW1lIn0se2Z1bmM6InZhbGlkYXRlTmFtZSIsdmFsdWU6IiJ9XSxUPVt7ZnVuYzoidmFsaWRhdGVOb3RFbXB0eSIsdmFsdWU6ImFkZHJlc3MifV0sVT1be2Z1bmM6InZhbGlkYXRlTm90RW1wdHkiLHZhbHVlOiJyZW50T3JPd24ifSx7ZnVuYzoidmFsaWRhdGVJc051bWJlciIsdmFsdWU6Im1vbnRobHlQYXltZW50In0se2Z1bmM6InZhbGlkYXRlTW9udGhseVBheW1lbnQiLHZhbHVlOiJtb250aGx5UGF5bWVudCJ9XSxCPXtzdGVwMDoxLHN0ZXAxOjIsc3RlcDI6MyxzdGVwMzoiMCI9PXo\/NDoiYmVmb3JlIj09Sz8xOTo0LHN0ZXA0OiIwIj09ej81OiJiZWZvcmUiPT1LPzU6MTksc3RlcDU6NixzdGVwNjo3LHN0ZXA3Ojgsc3RlcDg6OSxzdGVwOToxMSxzdGVwMTA6MTEsc3RlcDExOjEyLHN0ZXAxMjoxMyxzdGVwMTM6MTYsc3RlcDE0OjE2LHN0ZXAxNToxNiwKc3RlcDE2OjE3LHN0ZXAxNzoiMCI9PXo\/MTk6MD09RD8iMCI9PUE\/IjEiPT11PzIzOiJkb25lIjoyMjoyMCxzdGVwMTg6IjAiPT16PzA9PUQ\/IjAiPT1BPyIxIj09dT8yMzoiZG9uZSI6MjI6MjA6ImJlZm9yZSI9PUs\/NDo1LHN0ZXAxOToxOCxzdGVwMjA6IjAiPT1BPyIxIj09dT8yMzoiZG9uZSI6MjIsc3RlcDIyOiIxIj09dT8yMzoiZG9uZSIsc3RlcDIzOiJkb25lIn07b3B0aW9uYWxTdGVwcz1bXTsiMSI9PXUmJihvcHRpb25hbFN0ZXBzPVsyM10sIjAiPT1BJiYob3B0aW9uYWxTdGVwcz1bMjIsMjNdKSxNPVsxLDIsMyw2LDcsMTQsMTVdLEY9W3tmdW5jOiJ2YWxpZGF0ZU5vdEVtcHR5Iix2YWx1ZToiZW1wbG95bWVudFN0YXR1cyJ9LHtmdW5jOiJ2YWxpZGF0ZU5vdEVtcHR5Iix2YWx1ZToiZW1wbG95bWVudEFkZGVkSW5mbyJ9LHtmdW5jOiJ2YWxpZGF0ZUVtcGxveWVySW5mbyIsdmFsdWU6IiJ9LHtmdW5jOiJ2YWxpZGF0ZU5vdEVtcHR5RW1wbG95ZXJTdGF0dXNUaW1lIix2YWx1ZToiIn1dLApCPXtzdGVwMDoxLHN0ZXAxOjIsc3RlcDI6MyxzdGVwMzoxOCxzdGVwNDoxOSxzdGVwNTo2LHN0ZXA2Ojcsc3RlcDc6OCxzdGVwODo5LHN0ZXA5OjIyLHN0ZXAxMDoxMSxzdGVwMTE6MTIsc3RlcDEyOjEzLHN0ZXAxMzoxNixzdGVwMTQ6MTYsc3RlcDE1OjE2LHN0ZXAxNjoyMyxzdGVwMTg6NSxzdGVwMTk6MTEsc3RlcDIwOiJkb25lIixzdGVwMjI6NCxzdGVwMjM6MD09RD8iZG9uZSI6MjB9KTsiMSI9PXgmJihvcHRpb25hbFN0ZXBzPVsyMl0sTD0yNCxNPVsxLDIsMyw2LDcsMTQsMTVdLEY9W3tmdW5jOiJ2YWxpZGF0ZU5vdEVtcHR5Iix2YWx1ZToiZW1wbG95bWVudFN0YXR1cyJ9LHtmdW5jOiJ2YWxpZGF0ZUVtcGxveW1lbnRBZGRlZEluZm8iLHZhbHVlOiJlbXBsb3ltZW50QWRkZWRJbmZvIn0se2Z1bmM6InZhbGlkYXRlRW1wbG95ZXJJbmZvIix2YWx1ZToiIn0se2Z1bmM6InZhbGlkYXRlTm90RW1wdHlFbXBsb3llclN0YXR1c1RpbWUiLHZhbHVlOiIifSx7ZnVuYzoidmFsaWRhdGVBZGRyZXNzRW1wbG95ZXIiLAp2YWx1ZToiYWRkcmVzc0VtcGxveWVyIn1dLFI9W3tmdW5jOiJ2YWxpZGF0ZUVtcGxveW1lbnRBZGRlZEluZm8iLHZhbHVlOiJlbXBsb3ltZW50QWRkZWRJbmZvMiJ9LHtmdW5jOiJ2YWxpZGF0ZUVtcGxveWVySW5mbzIiLHZhbHVlOiIifSx7ZnVuYzoidmFsaWRhdGVOb3RFbXB0eUVtcGxveWVyU3RhdHVzVGltZTIiLHZhbHVlOiIifSx7ZnVuYzoidmFsaWRhdGVBZGRyZXNzRW1wbG95ZXIyIix2YWx1ZToiYWRkcmVzc0VtcGxveWVyMiJ9XSxTPVt7ZnVuYzoidmFsaWRhdGVOb3RFbXB0eSIsdmFsdWU6ImZpcnN0TmFtZSJ9LHtmdW5jOiJ2YWxpZGF0ZU5vdEVtcHR5Iix2YWx1ZToibGFzdE5hbWUifSx7ZnVuYzoidmFsaWRhdGVOb3RFbXB0eSIsdmFsdWU6InRpdGxlIn0se2Z1bmM6InZhbGlkYXRlTmFtZSIsdmFsdWU6IiJ9XSxUPVt7ZnVuYzoidmFsaWRhdGVBZGRyZXNzIix2YWx1ZToiYWRkcmVzcyJ9XSxCPXtzdGVwMDoyNCxzdGVwMjQ6MjUsc3RlcDI1OjQsc3RlcDQ6MTksc3RlcDE5OjE4LApzdGVwMTg6NSxzdGVwNTo4LHN0ZXA4Ojksc3RlcDk6MTEsc3RlcDExOjEyLHN0ZXAxMjoxMyxzdGVwMjc6Mjgsc3RlcDI4OjEzLHN0ZXAxMzoxNixzdGVwMTQ6MTYsc3RlcDE1OjE2LHN0ZXAxNjoxNyxzdGVwMTc6MjIsc3RlcDI5OjIyLHN0ZXAyMjowPT1EPzI2OjIwLHN0ZXAyMDoyNixzdGVwMjY6ImRvbmUifSwiMSI9PUUmJihGPVt7ZnVuYzoidmFsaWRhdGVOb3RFbXB0eSIsdmFsdWU6ImVtcGxveW1lbnRTdGF0dXMifSx7ZnVuYzoidmFsaWRhdGVFbXBsb3ltZW50QWRkZWRJbmZvVlciLHZhbHVlOiJlbXBsb3ltZW50QWRkZWRJbmZvIn0se2Z1bmM6InZhbGlkYXRlRW1wbG95ZXJJbmZvVlciLHZhbHVlOiIifSx7ZnVuYzoidmFsaWRhdGVOb3RFbXB0eUVtcGxveWVyU3RhdHVzVGltZVZXIix2YWx1ZToiIn0se2Z1bmM6InZhbGlkYXRlQWRkcmVzc0VtcGxveWVyVlciLHZhbHVlOiJhZGRyZXNzRW1wbG95ZXIifV0sQi5zdGVwMjI9MzAsQi5zdGVwMzA9ImRvbmUiLCJRQyI9PSQoIiNGSU5BTkNFX01VTFRJU1RFUF9EZWFsZXJQcm92aW5jZSIsCmIpLnZhbCgpJiYoVT1be2Z1bmM6InZhbGlkYXRlTm90RW1wdHkiLHZhbHVlOiJyZW50T3JPd24ifSx7ZnVuYzoidmFsaWRhdGVJc051bWJlciIsdmFsdWU6Im1vbnRobHlQYXltZW50In0se2Z1bmM6InZhbGlkYXRlTW9udGhseVBheW1lbnQiLHZhbHVlOiJtb250aGx5UGF5bWVudCJ9LHtmdW5jOiJ2YWxpZGF0ZUlzTnVtYmVyIix2YWx1ZToibW9udGhseURpc2J1cnNlbWVudCJ9LHtmdW5jOiJ2YWxpZGF0ZU1vbnRobHlQYXltZW50Iix2YWx1ZToibW9udGhseURpc2J1cnNlbWVudCJ9XSkpKTt2YXIgYT1uZXcgVnVlKHtlbDokKCIjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSIsYilbMF0sZGF0YTpmdW5jdGlvbigpe3JldHVybntjb250ZXh0OmIsYWpheFByb2Nlc3M6ITEsdXNlcklkOiIiLGNvbnZlcnNpb25TdWJtaXR0ZWQ6ITEsc2hvd0ljb246ITAscHVzaFBhcnRpYWw6ITEsY3VycmVudERlcHQ6Ik5FVyIsaW5pdFZlaGljbGVTZWxlY3Rpb25GaXJzdDohMCxzdGVwOjAsbmV4dFN0ZXA6TCwKZmlyc3RTdGVwOiEwLGNhbGN1bGF0b3JGdW5jdGlvbnM6IiIsY3JlZGl0RGVjaXNpb25IVE1MOiIiLGZvcm1kYXRhOnt2ZWhpY2xlVHlwZToiIixidWRnZXQ6IiIsY3VycmVudGx5RHJpdmluZzoiIixlbWFpbEFkZHJlc3M6IiIsY3JlZGl0UmF0aW5nOiIiLGRvd25PcHRpb25zOiIiLGJpcnRoZGF0ZVllYXI6IiIsYmlydGhkYXRlTW9udGg6IiIsYmlydGhkYXRlRGF5OiIiLGFkZHJlc3M6IiIsc3BsaXRBZGRyZXNzOltdLGFkZHJlc3NfeWVhcnM6MCxhZGRyZXNzX21vbnRoczowLGFkZHJlc3MyOiIiLHNwbGl0QWRkcmVzczI6W10sYWRkcmVzczJfeWVhcnM6MCxhZGRyZXNzMl9tb250aHM6MCxhZGRyZXNzRW1wbG95ZXI6IiIsc3BsaXRBZGRyZXNzRW1wbG95ZXI6W10scmVudE9yT3duOiIiLG1vbnRobHlQYXltZW50OjAsbW9udGhseURpc2J1cnNlbWVudDowLGVtcGxveW1lbnRTdGF0dXM6IiIsZW1wbG95bWVudEFkZGVkSW5mbzoiIixlbXBsb3llck5hbWU6IiIsZW1wbG95ZXJQaG9uZToiIiwKZW1wbG95bWVudFN0YXR1c1llYXI6MCxlbXBsb3ltZW50U3RhdHVzTW9udGg6MCxlbXBsb3ltZW50QWRkZWRJbmZvMjoiIixlbXBsb3llck5hbWUyOiIiLGVtcGxveWVyUGhvbmUyOiIiLGVtcGxveW1lbnRTdGF0dXNZZWFyMjowLGVtcGxveW1lbnRTdGF0dXNNb250aDI6MCxhZGRyZXNzRW1wbG95ZXIyOiIiLHNwbGl0QWRkcmVzc0VtcGxveWVyMjpbXSx3b3JraW5nV2hpbGVJblNjaG9vbDoiIixvdGhlckVtcGxveW1lbnRTdGF0dXM6IiIsbW9udGhseUluY29tZTowLG1vbnRobHlJbmNvbWVfeWVhcnM6MCxtb250aGx5SW5jb21lX21vbnRoczowLHRpdGxlOiIiLGZpcnN0TmFtZToiIixsYXN0TmFtZToiIixwaG9uZU51bWJlcjoiIixjdXJyZW50TWFrZToiIixjdXJyZW50TW9kZWw6IiIsY3VycmVudE1vZGVsVGV4dDoiIixjdXJyZW50WWVhcjoiIixjdXJyZW50U3RvY2tOdW1iZXI6IiIsY3VycmVudE1pbGVhZ2U6MTAsY3VycmVudFRyaW06IiIsY3VycmVudFN0eWxlaWQ6IiIsY3VycmVudENhcklkOiIiLApwYXltZW50VHlwZToiIixwYXltZW50VHlwZVJlYWw6IiIscGF5bWVudFRlcm06IiIscGF5bWVudFJhdGVUeXBlOiIiLHBheW1lbnRWYWx1ZToiIixiYXNlcGF5bWVudDoiIixwYXltZW50VG90YWxJbmNlbnRpdmU6MCxwYXltZW50VG90YWxGZWU6MCxwYXltZW50R1NUOjAscGF5bWVudEhTVDowLHBheW1lbnRQU1Q6MCxwYXltZW50RG93blBheW1lbnQ6MCxwYXltZW50S21BbGxvd2FuY2U6MCxwYXltZW50SW50ZXJ2YWw6IiIscGF5bWVudFJhdGU6IiIscGF5bWVudFJlc2lkdWFsVmFsdWU6MCxub1BheW1lbnQ6ITEsbXVsdGlfZGVhbGVyX3NlbmRUbzoiIixjcmVkaXRCdXJlYXVDcmVkaXQ6Ik5PIixTSU46IiIsYWRkZWRJbmZvOiIiLHZlaGljbGVTYWxlc0RlcHQ6Im90aGVyIix2ZWhpY2xlUHJpY2U6IiIsdmVoaWNsZVRyYW5zbWlzc2lvbjoiIix2ZWhpY2xlVHJpbToiIix2ZWhpY2xlQ29sb3I6IiIsaW5pdGlhbFRpdGxlU2hvdzohMCxtdWx0aUZyb21NaW5pOiExLHRyYWRlSW5NYWtlOiIiLAp0cmFkZUluTW9kZWw6IiIsdHJhZGVJblllYXI6IiIsdHJhZGVJblRyaW06IiIsdHJhZGVJblZhbHVlOiIiLHZlaGljbGVJbml0aWFsUHJpY2U6IiIsdmVoaWNsZUZpbmFsUHJpY2U6IiIscGF5bWVudEZlZXNMaXN0OltdLHBheW1lbnRJbmNlbnRpdmVzTGlzdDpbXSxjcmVkaXRBcHBsaWNhdGlvbklkOiIiLGNvbnNlbnRBY2NvdW50TW9uaXRvcmluZzoiIixjb25zZW50Q3JlZGl0QXNzZXNzbWVudDoiIixjb25zZW50UGlwZWRhOiIiLGNvbnNlbnRDYXNsOiIiLGNvbnNlbnRWVzoiIn0sbmV4dFN0ZXBEZWZhdWx0VmFsdWVzOkIsdmFsaWRhdGlvblJ1bGVzOntzdGVwMTpbe2Z1bmM6InZhbGlkYXRlTm90RW1wdHkiLHZhbHVlOiJ2ZWhpY2xlVHlwZSJ9XSxzdGVwMjpbe2Z1bmM6InZhbGlkYXRlTm90RW1wdHkiLHZhbHVlOiJidWRnZXQifV0sc3RlcDM6W3tmdW5jOiJ2YWxpZGF0ZU5vdEVtcHR5Iix2YWx1ZToiY3VycmVudGx5RHJpdmluZyJ9XSxzdGVwNDpbe2Z1bmM6InZhbGlkYXRlTm90RW1wdHkiLAp2YWx1ZToiZW1haWxBZGRyZXNzIn0se2Z1bmM6InZhbGlkYXRlRW1haWwiLHZhbHVlOiJlbWFpbEFkZHJlc3MifV0sc3RlcDU6W3tmdW5jOiJ2YWxpZGF0ZU5vdEVtcHR5Iix2YWx1ZToibXVsdGlfZGVhbGVyX3NlbmRUbyJ9XSxzdGVwNjpbe2Z1bmM6InZhbGlkYXRlTm90RW1wdHkiLHZhbHVlOiJjcmVkaXRSYXRpbmcifV0sc3RlcDc6W3tmdW5jOiJ2YWxpZGF0ZU5vdEVtcHR5Iix2YWx1ZToiZG93bk9wdGlvbnMifV0sc3RlcDg6W3tmdW5jOiJ2YWxpZGF0ZUJpcnRoZGF0ZSIsdmFsdWU6IiJ9XSxzdGVwOTpULHN0ZXAxMTpbe2Z1bmM6InZhbGlkYXRlTm90RW1wdHlBZGRyZXNzVGltZSIsdmFsdWU6IiJ9XSxzdGVwMTI6VSxzdGVwMTM6RixzdGVwMTQ6W3tmdW5jOiJ2YWxpZGF0ZU5vdEVtcHR5Iix2YWx1ZToid29ya2luZ1doaWxlSW5TY2hvb2wifV0sc3RlcDE1Olt7ZnVuYzoidmFsaWRhdGVOb3RFbXB0eSIsdmFsdWU6Im90aGVyRW1wbG95bWVudFN0YXR1cyJ9XSxzdGVwMTY6W3tmdW5jOiJ2YWxpZGF0ZU1vcmVUaGFuWmVybyIsCnZhbHVlOiJtb250aGx5SW5jb21lIn0se2Z1bmM6InZhbGlkYXRlTW9udGhseUluY29tZSIsdmFsdWU6Im1vbnRobHlJbmNvbWUifV0sc3RlcDE3Olt7ZnVuYzoidmFsaWRhdGVOb3RFbXB0eU1vbnRobHlJbmNvbWVUaW1lIix2YWx1ZToiIn1dLHN0ZXAxODpTLHN0ZXAxOTpbe2Z1bmM6InZhbGlkYXRlUGhvbmVOdW1iZXIiLHZhbHVlOiJwaG9uZU51bWJlciJ9XSxzdGVwMjA6W3tmdW5jOiJ2YWxpZGF0ZUNoZWNrZWRDcmVkaXRCdXJlYXUiLHZhbHVlOiJjcmVkaXRCdXJlYXVDcmVkaXQifV0sc3RlcDIyOlt7ZnVuYzoidmFsaWRhdGVTSU4iLHZhbHVlOiJTSU4ifV0sc3RlcDI0Olt7ZnVuYzoidmFsaWRhdGVWZWhpY2xlIix2YWx1ZToiIn1dLHN0ZXAyNTpbe2Z1bmM6InZhbGlkYXRlUGF5bWVudCIsdmFsdWU6IiJ9XSxzdGVwMjY6W3tmdW5jOiJ2YWxpZGF0ZUNvbnNlbnQiLHZhbHVlOiIifV0sc3RlcDI3Olt7ZnVuYzoidmFsaWRhdGVBZGRyZXNzMiIsdmFsdWU6ImFkZHJlc3MyIn1dLApzdGVwMjg6W3tmdW5jOiJ2YWxpZGF0ZU5vdEVtcHR5QWRkcmVzczJUaW1lIix2YWx1ZToiIn1dLHN0ZXAyOTpSLHN0ZXAzMDpbe2Z1bmM6InZhbGlkYXRlQ29uc2VudHMiLHZhbHVlOiIifV19LG9uU2hvd0Z1bmN0aW9uOntzdGVwMjpbe2Z1bmM6InN0ZXAyVmlld2VkVHJhY2sifV0sc3RlcDQ6W3tmdW5jOiJlbWFpbFN0ZXBWaWV3ZWRUcmFjayJ9LHtmdW5jOiJpbml0RW1haWwifV0sc3RlcDY6W10sc3RlcDc6W10sc3RlcDg6W3tmdW5jOiJpbml0QmlydGhkYXRlQ2hhbmdlIn1dLHN0ZXA5Olt7ZnVuYzoiaW5pdEdvb2dsZUF1dG9jb21wbGV0ZSJ9XSxzdGVwMjc6W3tmdW5jOiJpbml0R29vZ2xlQXV0b2NvbXBsZXRlMiJ9XSxzdGVwMTM6W3tmdW5jOiJpbml0R29vZ2xlQXV0b2NvbXBsZXRlRW1wbG95ZXIifV0sc3RlcDU6W3tmdW5jOiJpbml0U2VsZWN0TXVsdGlEZWFsZXIifV0sc3RlcDE5Olt7ZnVuYzoicGhvbmVTdGVwVmlld2VkVHJhY2sifSx7ZnVuYzoiaW5pdFBob25lIn1dLHN0ZXAyNDpbe2Z1bmM6ImluaXRWZWhpY2xlU2VsZWN0aW9uIn1dLApzdGVwMjU6W3tmdW5jOiJpbml0Q2FsY3VsYXRvciJ9XSxzdGVwMjY6W3tmdW5jOiJpbml0Q29uc2VudCJ9XSxzdGVwMjk6W3tmdW5jOiJpbml0R29vZ2xlQXV0b2NvbXBsZXRlRW1wbG95ZXIyIn1dfSxub0NvbmZpcm1CdXR0b25TdGVwczpNLHNob3dFcnJvcjohMCxzZWNvbmRDaGFuY2VTdGVwVG9Ta2lwOlsxLDIsMyw2LDddLG9wdGlvbmFsU3RlcDpvcHRpb25hbFN0ZXBzfX0sbWV0aG9kczp7bmV4dDpmdW5jdGlvbihkKXtkfHwodGhpcy5zaG93RXJyb3I9ITAsdGhpcy5mb3JtZGF0YS5pbml0aWFsVGl0bGVTaG93PSExLHRoaXMucHVzaFBhcnRpYWw9ITApO2lmKHRoaXMudmFsaWRhdGlvblJ1bGVzLmhhc093blByb3BlcnR5KCJzdGVwIit0aGlzLnN0ZXApKWZvcih2YXIgYz0wO2M8dGhpcy52YWxpZGF0aW9uUnVsZXNbInN0ZXAiK3RoaXMuc3RlcF0ubGVuZ3RoO2MrKylpZihrW3RoaXMudmFsaWRhdGlvblJ1bGVzWyJzdGVwIit0aGlzLnN0ZXBdW2NdLmZ1bmNdKHRoaXMuZm9ybWRhdGFbdGhpcy52YWxpZGF0aW9uUnVsZXNbInN0ZXAiKwp0aGlzLnN0ZXBdW2NdLnZhbHVlXSkpJCgiI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm1fZXJyb3IiLGIpLmh0bWwoIiIpLCQoJ1tuYW1lPSInK3RoaXMudmFsaWRhdGlvblJ1bGVzWyJzdGVwIit0aGlzLnN0ZXBdW2NdLnZhbHVlKyciXScsYikuY3NzKCJib3JkZXItY29sb3IiLCIiKTtlbHNle3RoaXMuc2hvd0Vycm9yJiYoJCgiIyIrdGhpcy52YWxpZGF0aW9uUnVsZXNbInN0ZXAiK3RoaXMuc3RlcF1bY10udmFsdWUrIkVycm9yTXNnIixiKS5sZW5ndGgmJiQoIiNmaW5hbmNlX211bHRpc3RlcF9mb3JtX2Vycm9yIixiKS5odG1sKCQoIiMiK3RoaXMudmFsaWRhdGlvblJ1bGVzWyJzdGVwIit0aGlzLnN0ZXBdW2NdLnZhbHVlKyJFcnJvck1zZyIsYikudmFsKCkpLCQoJ1tuYW1lPSInK3RoaXMudmFsaWRhdGlvblJ1bGVzWyJzdGVwIit0aGlzLnN0ZXBdW2NdLnZhbHVlKyciXScsYikuY3NzKCJib3JkZXItY29sb3IiLCJ2YXIoLS1sYWJlbC1yZXF1aXJlZC1jb2xvcikiKSk7cmV0dXJufWZvcih0aGlzLnNob3dFcnJvcj0KITE7ay5pc05leHRTdGVwRmlsbGVkKCk7KTtpZigyMSE9dGhpcy5zdGVwKXs0PT10aGlzLnN0ZXAmJiIiIT1hLmZvcm1kYXRhLmVtYWlsQWRkcmVzcyYmay5lbWFpbFByb3ZpZGVkVHJhY2soKTsxOT09dGhpcy5zdGVwJiYiIiE9YS5mb3JtZGF0YS5waG9uZU51bWJlciYmay5waG9uZVByb3ZpZGVkVHJhY2soKTtpZig5PT10aGlzLnN0ZXApdHJ5e3ZhciBlPSQoJyNmaW5hbmNlX211bHRpc3RlcF9mb3JtIGlucHV0W25hbWU9ImFkZHJlc3MiXScsYiksZj1lLmdvb2dsZVBsYWNlcygiZ2V0QWRkcmVzcyIpLGc9InVuZGVmaW5lZCIhPT10eXBlb2YgZi5wb3N0YWwubG9uZ19uYW1lP2YucG9zdGFsLmxvbmdfbmFtZTplLnZhbCgpO2VtYWlsSGFuZGxlci51c2VyUG9zdGFsPWc7InVuZGVmaW5lZCIhPXR5cGVvZiBhY3RpdmVVc2VyUHJvZmlsZU1uZyYmInVuZGVmaW5lZCIhPXR5cGVvZiBhY3RpdmVVc2VyUHJvZmlsZU1uZy5sb2dQYWdlVmlld0V2ZW50JiYiIiE9ZyYmKCJ1bmRlZmluZWQiIT09CnR5cGVvZiBkZWJ1ZyYmZGVidWcoIkxvZyBFdmVudCIsZywiVXNlckZvcm0ucG9zdGFsIiksYWN0aXZlVXNlclByb2ZpbGVNbmcubG9nUGFnZVZpZXdFdmVudChnLCJVc2VyRm9ybS5wb3N0YWwiKSl9Y2F0Y2gobCl7Y29uc29sZS5sb2cobCl9NDw9dGhpcy5zdGVwJiYhdGhpcy5jb252ZXJzaW9uU3VibWl0dGVkJiYodGhpcy5jb252ZXJzaW9uU3VibWl0dGVkPSEwLGM9JCgiI2ZpbmFuY2VNdWx0aXN0ZXBQb3B1cENvbnRhaW5lcl9jb25maXJtIiksMD09PWMubGVuZ3RoJiYoYz0kKCIjZ2VuZXJpY19mb3JtX2NvbmZpcm0iKSksYy5maW5kKCdpbnB1dFtuYW1lPSJsZWFkVHlwZSJdJykudmFsKCQodGhpcy5jb250ZXh0KS5maW5kKCIuZW1haWxTdWJqZWN0IikudGV4dCgpLnJlcGxhY2UoL1tcblxyXS9nLCIgIikpLGMuZmluZCgnaW5wdXRbbmFtZT0ibGVhZF9kZXBhcnRtZW50Il0nKS52YWwoIkZJTkFOQ0UiKSxjLmZpbmQoJ2lucHV0W25hbWU9InBhZ2VJRCJdJykudmFsKCQoIiNQQUdFSUQiKS52YWwoKSksCmMuZmluZCgnaW5wdXRbbmFtZT0iY3VycmVudFVSTCJdJykudmFsKHdpbmRvdy5sb2NhdGlvbi5ocmVmKSxjLmZpbmQoJ2lucHV0W25hbWU9ImlzRnVsbFdpZHRoIl0nKS52YWwoJCgiI2lzRnVsbFdpZHRoUGFnZU5ld1ZEUCIpLnZhbCgpKSxjLmZpbmQoJ2lucHV0W25hbWU9ImRlYWxlck5hbWUiXScpLnZhbCgkKCIjbmV3VkRQRGVhbGVyTmFtZSIpLnZhbCgpKSxjLmZpbmQoJ2lucHV0W25hbWU9ImJ1dHRvblBvc2l0aW9uIl0nKS52YWwoJCgiI25ld1ZEUEJ1dHRvblBvc2l0aW9uIikudmFsKCkpLGMuZmluZCgnaW5wdXRbbmFtZT0iaXNNb2JpbGVOZXdWRFAiXScpLnZhbCgkKCIjaXNtb2JpbGUiKS52YWwoKSksYy50cmlnZ2VyKCJzdWJtaXQiKSwiZnVuY3Rpb24iPT09dHlwZW9mIHdpbmRvdy50cmFja0NvbnZlcnNpb24mJndpbmRvdy50cmFja0NvbnZlcnNpb24oKSk7MCE9dGhpcy5zdGVwJiYodGhpcy5zaG93SWNvbj0hMSk7dGhpcy5zdGVwPXRoaXMubmV4dFN0ZXA7bG9jYWxTdG9yYWdlLmdldEl0ZW0oImZpbmFuY2VfbXVsdGlzdGVwLmxhc3Rfc3RlcCIpOwpkfHwoYS5maXJzdFN0ZXA\/YS5maXJzdFN0ZXA9ITE6ay5zdGVwVHJpZ2dlcighMCkpOygiIiE9dGhpcy5mb3JtZGF0YS5lbWFpbEFkZHJlc3MmJigiMCI9PSQoIiNGSU5BTkNFX01VTFRJU1RFUF9QSE9ORV9QT1NJVElPTl9DSEVDSyIpLnZhbCgpfHwiYWZ0ZXIiPT0kKCIjRklOQU5DRV9NVUxUSVNURVBfUEhPTkVfUE9TSVRJT05fU0VMRUNUIikudmFsKCkpfHwiIiE9dGhpcy5mb3JtZGF0YS5waG9uZU51bWJlciYmIjEiPT0kKCIjRklOQU5DRV9NVUxUSVNURVBfUEhPTkVfUE9TSVRJT05fQ0hFQ0siKS52YWwoKSYmImJlZm9yZSI9PSQoIiNGSU5BTkNFX01VTFRJU1RFUF9QSE9ORV9QT1NJVElPTl9TRUxFQ1QiKS52YWwoKSkmJmsubXVsdGlEZWFsZXJGb3JtU3RhdHVzKCkmJnRoaXMucHVzaFBhcnRpYWwmJigiMSI9PSQoIiNmaW5hbmNlX211bHRpc3RlcF9mb3JtICNPUEVORURGUk9NSU1BR0VQT1BVUCIsYikudmFsKCk\/JCgiI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gI09QRU5FREZST01JTUFHRVBPUFVQIiwKYikudmFsKCIwIik6ay5wdXNoRGF0YVRvU2VydmVyKCkpO2suc2V0Q2xpZW50U3RvcmFnZURhdGFWYWx1ZXMoKTt0aGlzLm5leHRTdGVwPXRoaXMubmV4dFN0ZXBEZWZhdWx0VmFsdWVzWyJzdGVwIit0aGlzLnN0ZXBdOzA8PXRoaXMub3B0aW9uYWxTdGVwLmluZGV4T2YoYS5zdGVwKT8kKCIjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybV9uZXh0X2J0biBidXR0b24iLGIpLmFkZENsYXNzKCJpc1ZhbGlkIik6JCgiI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm1fbmV4dF9idG4gYnV0dG9uIixiKS5yZW1vdmVDbGFzcygiaXNWYWxpZCIpO2sub25TaG93RnVuY3Rpb25Ub1J1bigpOzA8PXRoaXMubm9Db25maXJtQnV0dG9uU3RlcHMuaW5kZXhPZih0aGlzLnN0ZXApPygkKCIjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybV9uZXh0X2J0biIsYikuaGlkZSgpLCQoIiNmaW5hbmNlX211bHRpc3RlcF9mb3JtIixiKS5vZmYoImNsaWNrLm5vQnV0dG9uIiwiaW5wdXRbdHlwZT1yYWRpb10iKSwkKCIjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSIsCmIpLm9uKCJjbGljay5ub0J1dHRvbiIsImlucHV0W3R5cGU9cmFkaW9dIixmdW5jdGlvbigpe3NldFRpbWVvdXQoZnVuY3Rpb24oKXthLm5leHQoKX0sMUUzKX0pKTooJCgiI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm1fbmV4dF9idG4iLGIpLnNob3coKSwkKCIjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSIsYikub2ZmKCJjbGljay5ub0J1dHRvbiIsImlucHV0W3R5cGU9cmFkaW9dIikpOyJkb25lIj09dGhpcy5zdGVwJiYoIjEiPT14PyIxIj09RT9rLmNyZWRpdEFwcFN1bWlzc2lvbigpOmsucm91dGVPbmVDYWxsKCk6ay5zZW5kRW1haWwoKSl9fSxnZXRMaW5lYXJzdGVwOmZ1bmN0aW9uKGQpe3ZhciBjPWxvY2FsU3RvcmFnZS5nZXRJdGVtKCJmaW5hbmNlX211bHRpc3RlcC5saW5lYXJfc3RlcCIpO2M9cGFyc2VJbnQoYz9jOjApO2lmKDA9PWN8fGlzTmFOKGMpKWM9MTtkJiYoYys9MSxsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgiZmluYW5jZV9tdWx0aXN0ZXAubGluZWFyX3N0ZXAiLGMpKTtyZXR1cm4gY319fSksCnc9IkVOR0xJU0giPT0kKCIjYWN0aXZlc2l0ZWxhbmd1YWdlIikudmFsKCk\/ImVuIjoiZnIiLEo9ZW1haWxIYW5kbGVyLmdldEpzb25PYmplY3QoKTt6PXdpbmRvdy5sb2NhdGlvbjt2YXIgUT16LnByb3RvY29sKyIvLyIrei5ob3N0LGs9e2lzTmV4dFN0ZXBGaWxsZWQ6ZnVuY3Rpb24oKXtpZigiMSI9PXgmJiIxIj09RSYmWzE5LDQsMzBdLmluY2x1ZGVzKGEubmV4dFN0ZXApKXJldHVybiExO2lmKCIxIj09dSYmMDw9YS5zZWNvbmRDaGFuY2VTdGVwVG9Ta2lwLmluZGV4T2YoYS5uZXh0U3RlcCkpcmV0dXJuIGEubmV4dFN0ZXA9YS5uZXh0U3RlcERlZmF1bHRWYWx1ZXNbInN0ZXAiK2EubmV4dFN0ZXBdLCEwO2lmKCgiMSI9PXV8fCIxIj09eCkmJjA8PWEub3B0aW9uYWxTdGVwLmluZGV4T2YoYS5uZXh0U3RlcCkpcmV0dXJuITE7aWYoYS52YWxpZGF0aW9uUnVsZXMuaGFzT3duUHJvcGVydHkoInN0ZXAiK2EubmV4dFN0ZXApKXtmb3IodmFyIGQ9MDtkPGEudmFsaWRhdGlvblJ1bGVzWyJzdGVwIisKYS5uZXh0U3RlcF0ubGVuZ3RoO2QrKylpZigha1thLnZhbGlkYXRpb25SdWxlc1sic3RlcCIrYS5uZXh0U3RlcF1bZF0uZnVuY10oYS5mb3JtZGF0YVthLnZhbGlkYXRpb25SdWxlc1sic3RlcCIrYS5uZXh0U3RlcF1bZF0udmFsdWVdKSlyZXR1cm4hMTthLm5leHRTdGVwPWEubmV4dFN0ZXBEZWZhdWx0VmFsdWVzWyJzdGVwIithLm5leHRTdGVwXTtyZXR1cm4hMH19LHZhbGlkYXRlTm90RW1wdHk6ZnVuY3Rpb24oZCl7cmV0dXJuIiIhPWQmJiJ1bmRlZmluZWQiIT09dHlwZW9mIGR9LHZhbGlkYXRlTmFtZTpmdW5jdGlvbigpe3ZhciBkPS9eW0Etelx1MDBCRi1cdTFGRkZcdTJDMDAtXHVEN0ZGICctXSskLztsZXQgYz1kLnRlc3QoYS5mb3JtZGF0YS5maXJzdE5hbWUpO2Q9ZC50ZXN0KGEuZm9ybWRhdGEubGFzdE5hbWUpO2MmJmQ\/KCQoJ1tuYW1lPSJmaXJzdE5hbWUiXScsYikuY3NzKCJib3JkZXItY29sb3IiLCIiKSwkKCdbbmFtZT0iZmlyc3ROYW1lIl0nLGIpLmNzcygiYm9yZGVyLWJvdHRvbS13aWR0aCIsCiIiKSwkKCdbbmFtZT0ibGFzdE5hbWUiXScsYikuY3NzKCJib3JkZXItY29sb3IiLCIiKSwkKCdbbmFtZT0ibGFzdE5hbWUiXScsYikuY3NzKCJib3JkZXItYm90dG9tLXdpZHRoIiwiIiksJCgiI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm1fZXJyb3IiLGIpLmh0bWwoIiIpKTooY3x8KCQoJ1tuYW1lPSJmaXJzdE5hbWUiXScsYikuY3NzKCJib3JkZXItY29sb3IiLCIjYzgzZTNlIiksJCgnW25hbWU9ImZpcnN0TmFtZSJdJyxiKS5jc3MoImJvcmRlci1ib3R0b20td2lkdGgiLCI1cHgiKSksZHx8KCQoJ1tuYW1lPSJsYXN0TmFtZSJdJyxiKS5jc3MoImJvcmRlci1jb2xvciIsIiNjODNlM2UiKSwkKCdbbmFtZT0ibGFzdE5hbWUiXScsYikuY3NzKCJib3JkZXItYm90dG9tLXdpZHRoIiwiNXB4IikpLCQoIiNmaW5hbmNlX211bHRpc3RlcF9mb3JtX2Vycm9yIixiKS5odG1sKCQoIiNmaXJzdE5hbWVFcnJvck1zZyIpLnZhbCgpKSk7cmV0dXJuIGMmJmR9LHZhbGlkYXRlSXNOdW1iZXI6ZnVuY3Rpb24oZCl7cmV0dXJuIDA8PQpkfSx2YWxpZGF0ZU1vbnRobHlJbmNvbWU6ZnVuY3Rpb24oZCl7cmV0dXJuIDk5OTk5OT49ZH0sdmFsaWRhdGVNb250aGx5UGF5bWVudDpmdW5jdGlvbihkKXtyZXR1cm4gOTk5OTk+PWR9LHZhbGlkYXRlQWRkcmVzczpmdW5jdGlvbihkKXtyZXR1cm4gMDxhLmZvcm1kYXRhLmFkZHJlc3NfeWVhcnN8fDA8YS5mb3JtZGF0YS5hZGRyZXNzX21vbnRocz8hMDoiIiE9ZCYmKGQ9JCgnI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gaW5wdXRbZGF0YS1nb29nbGUtcGxhY2VzLWN1c3RvbT0idHJ1ZSJdW25hbWU9ImFkZHJlc3MiXScsYikuZ29vZ2xlUGxhY2VzKCJnZXRBZGRyZXNzIiksIiIhPWQuY2l0eSYmIiIhPWQuc3RyZWV0KT8oYS5mb3JtZGF0YS5zcGxpdEFkZHJlc3M9ZCwhMCk6ITF9LHZhbGlkYXRlQWRkcmVzczI6ZnVuY3Rpb24oZCl7cmV0dXJuIDA8YS5mb3JtZGF0YS5hZGRyZXNzMl95ZWFyc3x8MDxhLmZvcm1kYXRhLmFkZHJlc3MyX21vbnRocz8hMDoiIiE9ZCYmKGQ9JCgnI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gaW5wdXRbZGF0YS1nb29nbGUtcGxhY2VzLWN1c3RvbT0idHJ1ZSJdW25hbWU9ImFkZHJlc3MyIl0nLApiKS5nb29nbGVQbGFjZXMoImdldEFkZHJlc3MiKSwiIiE9ZC5jaXR5JiYiIiE9ZC5zdHJlZXQpPyhhLmZvcm1kYXRhLnNwbGl0QWRkcmVzczI9ZCwhMCk6ITF9LHZhbGlkYXRlQWRkcmVzc0VtcGxveWVyOmZ1bmN0aW9uKGQpe2lmKCJGSU5BTkNFX0ZPUk1fRU1QTE9ZTUVOVF9TVEFUVVNfRU1QTE9ZRUQiIT1hLmZvcm1kYXRhLmVtcGxveW1lbnRTdGF0dXMpcmV0dXJuITA7aWYoIiIhPWQpe2lmKCJ1bmRlZmluZWQiIT09YS5mb3JtZGF0YS5zcGxpdEFkZHJlc3NFbXBsb3llciYmbnVsbCE9PWEuZm9ybWRhdGEuc3BsaXRBZGRyZXNzRW1wbG95ZXImJiJvYmplY3QiPT09dHlwZW9mIGEuZm9ybWRhdGEuc3BsaXRBZGRyZXNzRW1wbG95ZXImJiJjaXR5ImluIGEuZm9ybWRhdGEuc3BsaXRBZGRyZXNzRW1wbG95ZXImJiIiIT09YS5mb3JtZGF0YS5zcGxpdEFkZHJlc3NFbXBsb3llci5jaXR5KXJldHVybiEwO2suaW5pdEdvb2dsZUF1dG9jb21wbGV0ZUVtcGxveWVyKCk7ZD0kKCcjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSBpbnB1dFtkYXRhLWdvb2dsZS1wbGFjZXMtY3VzdG9tPSJ0cnVlIl1bbmFtZT0iYWRkcmVzc0VtcGxveWVyIl0nLApiKS5nb29nbGVQbGFjZXMoImdldEFkZHJlc3MiKTtpZigiIiE9ZC5jaXR5JiYiIiE9ZC5zdHJlZXQpcmV0dXJuIGEuZm9ybWRhdGEuc3BsaXRBZGRyZXNzRW1wbG95ZXI9ZCwhMH1yZXR1cm4hMX0sdmFsaWRhdGVBZGRyZXNzRW1wbG95ZXJWVzpmdW5jdGlvbihkKXt2YXIgYz1hLmZvcm1kYXRhLmVtcGxveW1lbnRTdGF0dXM7aWYoIkZJTkFOQ0VfRk9STV9FTVBMT1lNRU5UX1NUQVRVU19FTVBMT1lFRF9GVUxMIiE9YyYmIkZJTkFOQ0VfRk9STV9FTVBMT1lNRU5UX1NUQVRVU19FTVBMT1lFRF9QQVJUIiE9YylyZXR1cm4hMDtpZigiIiE9ZCl7aWYoInVuZGVmaW5lZCIhPT1hLmZvcm1kYXRhLnNwbGl0QWRkcmVzc0VtcGxveWVyJiZudWxsIT09YS5mb3JtZGF0YS5zcGxpdEFkZHJlc3NFbXBsb3llciYmIm9iamVjdCI9PT10eXBlb2YgYS5mb3JtZGF0YS5zcGxpdEFkZHJlc3NFbXBsb3llciYmImNpdHkiaW4gYS5mb3JtZGF0YS5zcGxpdEFkZHJlc3NFbXBsb3llciYmIiIhPT1hLmZvcm1kYXRhLnNwbGl0QWRkcmVzc0VtcGxveWVyLmNpdHkpcmV0dXJuITA7CmsuaW5pdEdvb2dsZUF1dG9jb21wbGV0ZUVtcGxveWVyKCk7ZD0kKCcjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSBpbnB1dFtkYXRhLWdvb2dsZS1wbGFjZXMtY3VzdG9tPSJ0cnVlIl1bbmFtZT0iYWRkcmVzc0VtcGxveWVyIl0nLGIpLmdvb2dsZVBsYWNlcygiZ2V0QWRkcmVzcyIpO2lmKCIiIT1kLmNpdHkmJiIiIT1kLnN0cmVldClyZXR1cm4gYS5mb3JtZGF0YS5zcGxpdEFkZHJlc3NFbXBsb3llcj1kLCEwfXJldHVybiExfSx2YWxpZGF0ZUFkZHJlc3NFbXBsb3llcjI6ZnVuY3Rpb24oZCl7aWYoIiIhPWQpe2lmKCJ1bmRlZmluZWQiIT09YS5mb3JtZGF0YS5zcGxpdEFkZHJlc3NFbXBsb3llcjImJm51bGwhPT1hLmZvcm1kYXRhLnNwbGl0QWRkcmVzc0VtcGxveWVyMiYmIm9iamVjdCI9PT10eXBlb2YgYS5mb3JtZGF0YS5zcGxpdEFkZHJlc3NFbXBsb3llcjImJiJjaXR5ImluIGEuZm9ybWRhdGEuc3BsaXRBZGRyZXNzRW1wbG95ZXIyJiYiIiE9PWEuZm9ybWRhdGEuc3BsaXRBZGRyZXNzRW1wbG95ZXIyLmNpdHkpcmV0dXJuITA7CmsuaW5pdEdvb2dsZUF1dG9jb21wbGV0ZUVtcGxveWVyMigpO2Q9JCgnI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gaW5wdXRbZGF0YS1nb29nbGUtcGxhY2VzLWN1c3RvbT0idHJ1ZSJdW25hbWU9ImFkZHJlc3NFbXBsb3llcjIiXScsYikuZ29vZ2xlUGxhY2VzKCJnZXRBZGRyZXNzIik7aWYoIiIhPWQuY2l0eSYmIiIhPWQuc3RyZWV0KXJldHVybiBhLmZvcm1kYXRhLnNwbGl0QWRkcmVzc0VtcGxveWVyMj1kLCEwfXJldHVybiExfSx2YWxpZGF0ZVN0YXR1c1RpbWU6ZnVuY3Rpb24oZCl7aWYoIiIhPWQmJjEwPT1kLmxlbmd0aClyZXR1cm4gZD1kLnNwbGl0KCIvIiksbmV3IERhdGUoK2RbMl0sZFsxXS0xLCtkWzBdKTxuZXcgRGF0ZX0sdmFsaWRhdGVFbXBsb3ltZW50QWRkZWRJbmZvOmZ1bmN0aW9uKGQpe3ZhciBjPWEuZm9ybWRhdGEuZW1wbG95bWVudFN0YXR1cztyZXR1cm4iRklOQU5DRV9GT1JNX0VNUExPWU1FTlRfU1RBVFVTX0VNUExPWUVEIj09Y3x8IkZJTkFOQ0VfRk9STV9FTVBMT1lNRU5UX1NUQVRVU19TRUxGRU1QTE9ZRUQiPT0KY3x8IkZJTkFOQ0VfRk9STV9FTVBMT1lNRU5UX1NUQVRVU19TVFVERU5UIj09Y3x8IkZJTkFOQ0VfRk9STV9FTVBMT1lNRU5UX1NUQVRVU19PVEhFUiI9PWM\/IiIhPT1kJiYidW5kZWZpbmVkIiE9PXR5cGVvZiBkOiEwfSx2YWxpZGF0ZUVtcGxveW1lbnRBZGRlZEluZm9WVzpmdW5jdGlvbihkKXt2YXIgYz1hLmZvcm1kYXRhLmVtcGxveW1lbnRTdGF0dXM7cmV0dXJuIkZJTkFOQ0VfRk9STV9FTVBMT1lNRU5UX1NUQVRVU19FTVBMT1lFRF9GVUxMIj09Y3x8IkZJTkFOQ0VfRk9STV9FTVBMT1lNRU5UX1NUQVRVU19FTVBMT1lFRF9QQVJUIj09Y3x8IkZJTkFOQ0VfRk9STV9FTVBMT1lNRU5UX1NUQVRVU19SRVRJUkVEIj09Y3x8IkZJTkFOQ0VfRk9STV9FTVBMT1lNRU5UX1NUQVRVU19TRUxGRU1QTE9ZRUQiPT1jPyIiIT09ZCYmInVuZGVmaW5lZCIhPT10eXBlb2YgZDohMH0sdmFsaWRhdGVFbXBsb3llckluZm86ZnVuY3Rpb24oKXtyZXR1cm4iRklOQU5DRV9GT1JNX0VNUExPWU1FTlRfU1RBVFVTX0VNUExPWUVEIj09CmEuZm9ybWRhdGEuZW1wbG95bWVudFN0YXR1cz8iIiE9PWEuZm9ybWRhdGEuZW1wbG95ZXJOYW1lJiYidW5kZWZpbmVkIiE9PXR5cGVvZiBhLmZvcm1kYXRhLmVtcGxveWVyTmFtZSYmay52YWxpZGF0ZVBob25lTnVtYmVyRW1wbG95ZXIoYS5mb3JtZGF0YS5lbXBsb3llclBob25lKTohMH0sdmFsaWRhdGVFbXBsb3llckluZm9WVzpmdW5jdGlvbigpe3ZhciBkPWEuZm9ybWRhdGEuZW1wbG95bWVudFN0YXR1cztyZXR1cm4iRklOQU5DRV9GT1JNX0VNUExPWU1FTlRfU1RBVFVTX0VNUExPWUVEX0ZVTEwiPT1kfHwiRklOQU5DRV9GT1JNX0VNUExPWU1FTlRfU1RBVFVTX0VNUExPWUVEX1BBUlQiPT1kPyIiIT09YS5mb3JtZGF0YS5lbXBsb3llck5hbWUmJiJ1bmRlZmluZWQiIT09dHlwZW9mIGEuZm9ybWRhdGEuZW1wbG95ZXJOYW1lJiZrLnZhbGlkYXRlUGhvbmVOdW1iZXJFbXBsb3llcihhLmZvcm1kYXRhLmVtcGxveWVyUGhvbmUpOiEwfSx2YWxpZGF0ZUVtcGxveWVySW5mbzI6ZnVuY3Rpb24oKXtyZXR1cm4iIiE9PQphLmZvcm1kYXRhLmVtcGxveWVyTmFtZTImJiJ1bmRlZmluZWQiIT09dHlwZW9mIGEuZm9ybWRhdGEuZW1wbG95ZXJOYW1lMiYmay52YWxpZGF0ZVBob25lTnVtYmVyRW1wbG95ZXIyKGEuZm9ybWRhdGEuZW1wbG95ZXJQaG9uZTIpfSx2YWxpZGF0ZUVtYWlsOmZ1bmN0aW9uKGQpeyQudmFsaWRpdHkuc2V0dXAoe291dHB1dE1vZGU6ImNzc09ubHkiLHNjcm9sbFRvOiExfSkuc3RhcnQoKTskKCIjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSIsYikuZmluZCgnaW5wdXRbbmFtZT0iZW1haWxBZGRyZXNzIl0nKS52YWxpZEVtYWlsQWRkcmVzcygpO3JldHVybiAkLnZhbGlkaXR5LmVuZCgpLnZhbGlkfSx2YWxpZGF0ZUJpcnRoZGF0ZTpmdW5jdGlvbigpe3ZhciBkPWEuZm9ybWRhdGEuYmlydGhkYXRlWWVhcixjPWEuZm9ybWRhdGEuYmlydGhkYXRlTW9udGgsZT1hLmZvcm1kYXRhLmJpcnRoZGF0ZURheTtpZigzMTxlfHwxMjxjfHwxOTAwPmR8fDA+PWV8fDA+PWN8fCIiPT1kfHwiIj09Y3x8IiI9PQplfHw0PmQubGVuZ3RoKXJldHVybiExO2Q9MTg8PWsuY2FsY3VsYXRlQWdlKG5ldyBEYXRlKGQsYy0xLGUpLG5ldyBEYXRlKTthLnNob3dFcnJvciYmKGQ\/JCgiI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm1fZXJyb3IiLGIpLmh0bWwoIiIpOiQoIiNmaW5hbmNlX211bHRpc3RlcF9mb3JtX2Vycm9yIixiKS5odG1sKCQoIiNiaXJ0aGRhdGVFcnJvck1zZyIpLnZhbCgpKSk7cmV0dXJuIGR9LGNhbGN1bGF0ZUFnZTpmdW5jdGlvbihkLGMpe3ZhciBlPWMuZ2V0RnVsbFllYXIoKSxmPWMuZ2V0TW9udGgoKTtjPWMuZ2V0RGF0ZSgpO3ZhciBnPWQuZ2V0RnVsbFllYXIoKSxsPWQuZ2V0TW9udGgoKTtkPWQuZ2V0RGF0ZSgpO2UtPWc7Zi09bDtpZigwPmZ8fDA9PWYmJjA+Yy1kKWU9cGFyc2VJbnQoZSktMTtyZXR1cm4gZX0saGFzVXNlcjpmdW5jdGlvbigpe3JldHVybiEhbG9jYWxTdG9yYWdlLmdldEl0ZW0oImZpbmFuY2VfbXVsdGlzdGVwX2Zvcm1fdXNlcklkIil9LHVzZXJJZDpmdW5jdGlvbihkKXtkJiYKKC0xPT1kPyhsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgiZmluYW5jZV9tdWx0aXN0ZXBfZm9ybV91c2VySWQiKSxhLnVzZXJJZD0hMSk6KGxvY2FsU3RvcmFnZS5zZXRJdGVtKCJmaW5hbmNlX211bHRpc3RlcF9mb3JtX3VzZXJJZCIsZCksYS51c2VySWQ9ZCkpO2EudXNlcklkfHwoYS51c2VySWQ9bG9jYWxTdG9yYWdlLmdldEl0ZW0oImZpbmFuY2VfbXVsdGlzdGVwX2Zvcm1fdXNlcklkIikpO3JldHVybiBhLnVzZXJJZH0scHVzaERhdGFUb1NlcnZlcjpmdW5jdGlvbigpe2lmKCFhLmFqYXhQcm9jZXNzKXthLmFqYXhQcm9jZXNzPSEwO2suc2V0VHJhZGVJbigpO3ZhciBkPWEuZm9ybWRhdGEsYz1hLnN0ZXAsZT0kKGIpLmZpbmQoIi5lbWFpbFN1YmplY3QiKSxmPSQoYikuZmluZCgiLmVtYWlsQm9keSIpO2U9ZS50ZXh0KCk\/ZS50ZXh0KCk6IiI7Zj1mLmh0bWwoKT9mLmh0bWwoKToiIjt2YXIgZz0kKCIjY3VycmVudFN0YXR1cyIpLnZhbCgpO2VtYWlsSGFuZGxlci5ib2R5PWY7ZW1haWxIYW5kbGVyLnN1YmplY3Q9CmU7ay5zZXRFbWFpbEhhbmRsZXJTZW5kKCk7ZW1haWxIYW5kbGVyLm1haWxJRD0iQ3JlZGl0TXVsdGlzdGVwUmVxdWVzdCI7IjEiPT11JiYoZW1haWxIYW5kbGVyLm1haWxJRD0iQ3JlZGl0TXVsdGlzdGVwUmVxdWVzdDJuZENoYW5jZSIpOyIxIj09eCYmKGVtYWlsSGFuZGxlci5tYWlsSUQ9IkNyZWRpdE11bHRpc3RlcFJlcXVlc3RJbnN0YW50Iik7ZW1haWxIYW5kbGVyLmRlcGFydG1lbnQ9IkZJTkFOQ0UiO2VtYWlsSGFuZGxlci5pc21vYmlsZXNpdGU9MT09JCgiI2lzbW9iaWxlIikudmFsKCk\/IllFUyI6Ik5PIjtlbWFpbEhhbmRsZXIuY29uZGl0aW9uPSJ1bmRlZmluZWQiPT10eXBlb2YgZz8idXNlZCI6Zy50b0xvd2VyQ2FzZSgpO2VtYWlsSGFuZGxlci5jcmVkaXREYXRhPWQ7Sj1lbWFpbEhhbmRsZXIuZ2V0SnNvbk9iamVjdCgpOyQuYWpheCh7dXJsOiIvIit3KyIvYWpheC9zZXRGaW5hbmNlTXVsdGlzdGVwRGF0YT93c3dpZHRoPTAiLGRhdGFUeXBlOiJKU09OIiwKdHlwZToiUE9TVCIsZGF0YTp7dXNlcklkOmsudXNlcklkKCksZm9ybWRhdGE6ZCxzdGVwOmMsZG9tYWluOlEsc2l0ZUlkOiQoIiNzaXRlSUQiKS52YWwoKXx8JCgiI3RvcHNpdGVpZCIpLnZhbCgpLGxhbmc6JCgiI2FjdGl2ZXNpdGVsYW5ndWFnZSIpLnZhbCgpLGVtYWlsSGFuZGxlckpzb25PYmplY3Q6SlNPTi5zdHJpbmdpZnkoSil9LHN1Y2Nlc3M6ZnVuY3Rpb24obCl7bC5JRCYmbC5pZENoYW5nZWQmJmsudXNlcklkKGwuSUQpfSxjb21wbGV0ZTpmdW5jdGlvbihsKXthLmFqYXhQcm9jZXNzPSExfX0pfX0sb25TaG93RnVuY3Rpb25Ub1J1bjpmdW5jdGlvbigpe2lmKGEub25TaG93RnVuY3Rpb24uaGFzT3duUHJvcGVydHkoInN0ZXAiK2Euc3RlcCkmJiJ1bmRlZmluZWQiIT10eXBlb2YgYS5vblNob3dGdW5jdGlvblsic3RlcCIrYS5zdGVwXS5sZW5ndGgpZm9yKHZhciBkPTA7ZDxhLm9uU2hvd0Z1bmN0aW9uWyJzdGVwIithLnN0ZXBdLmxlbmd0aDtkKyspa1thLm9uU2hvd0Z1bmN0aW9uWyJzdGVwIisKYS5zdGVwXVtkXS5mdW5jXSgpfSxpbml0R29vZ2xlQXV0b2NvbXBsZXRlOmZ1bmN0aW9uKCl7dmFyIGQ9JCgnI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gaW5wdXRbZGF0YS1nb29nbGUtcGxhY2VzLWN1c3RvbT0idHJ1ZSJdW25hbWU9ImFkZHJlc3MiXScsYilbMF0sYz1uZXcgTXV0YXRpb25PYnNlcnZlcihmdW5jdGlvbigpe2MuZGlzY29ubmVjdCgpOyQoJyNmaW5hbmNlX211bHRpc3RlcF9mb3JtIGlucHV0W2RhdGEtZ29vZ2xlLXBsYWNlcy1jdXN0b209InRydWUiXVtuYW1lPSJhZGRyZXNzIl0nLGIpLmF0dHIoImF1dG9jb21wbGV0ZSIsIm5ldy1wYXNzd29yZCIpfSk7Yy5vYnNlcnZlKGQse2F0dHJpYnV0ZXM6ITAsYXR0cmlidXRlRmlsdGVyOlsiYXV0b2NvbXBsZXRlIl19KTtkPSQoIiNGSU5BTkNFX01VTFRJU1RFUF9kZWFsZXJMYXQiKS52YWwoKTt2YXIgZT0kKCIjRklOQU5DRV9NVUxUSVNURVBfZGVhbGVyTG9uZyIpLnZhbCgpO2Q9e2xhdDpkLGxvbmc6ZSxyYWRpdXM6MkU1fTsKJCgnI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gaW5wdXRbZGF0YS1nb29nbGUtcGxhY2VzLWN1c3RvbT0idHJ1ZSJdW25hbWU9ImFkZHJlc3MiXScsYikuZ29vZ2xlUGxhY2VzKGQpfSxpbml0R29vZ2xlQXV0b2NvbXBsZXRlMjpmdW5jdGlvbigpe3ZhciBkPSQoJyNmaW5hbmNlX211bHRpc3RlcF9mb3JtIGlucHV0W2RhdGEtZ29vZ2xlLXBsYWNlcy1jdXN0b209InRydWUiXVtuYW1lPSJhZGRyZXNzMiJdJyxiKVswXSxjPW5ldyBNdXRhdGlvbk9ic2VydmVyKGZ1bmN0aW9uKCl7Yy5kaXNjb25uZWN0KCk7JCgnI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gaW5wdXRbZGF0YS1nb29nbGUtcGxhY2VzLWN1c3RvbT0idHJ1ZSJdW25hbWU9ImFkZHJlc3MyIl0nLGIpLmF0dHIoImF1dG9jb21wbGV0ZSIsIm5ldy1wYXNzd29yZCIpfSk7Yy5vYnNlcnZlKGQse2F0dHJpYnV0ZXM6ITAsYXR0cmlidXRlRmlsdGVyOlsiYXV0b2NvbXBsZXRlIl19KTtkPSQoIiNGSU5BTkNFX01VTFRJU1RFUF9kZWFsZXJMYXQiKS52YWwoKTsKdmFyIGU9JCgiI0ZJTkFOQ0VfTVVMVElTVEVQX2RlYWxlckxvbmciKS52YWwoKTtkPXtsYXQ6ZCxsb25nOmUscmFkaXVzOjJFNX07JCgnI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gaW5wdXRbZGF0YS1nb29nbGUtcGxhY2VzLWN1c3RvbT0idHJ1ZSJdW25hbWU9ImFkZHJlc3MyIl0nLGIpLmdvb2dsZVBsYWNlcyhkKX0saW5pdEdvb2dsZUF1dG9jb21wbGV0ZUVtcGxveWVyOmZ1bmN0aW9uKCl7dmFyIGQ9JCgnI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gaW5wdXRbZGF0YS1nb29nbGUtcGxhY2VzLWN1c3RvbT0idHJ1ZSJdW25hbWU9ImFkZHJlc3NFbXBsb3llciJdJyxiKVswXSxjPW5ldyBNdXRhdGlvbk9ic2VydmVyKGZ1bmN0aW9uKCl7Yy5kaXNjb25uZWN0KCk7JCgnI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gaW5wdXRbZGF0YS1nb29nbGUtcGxhY2VzLWN1c3RvbT0idHJ1ZSJdW25hbWU9ImFkZHJlc3NFbXBsb3llciJdJyxiKS5hdHRyKCJhdXRvY29tcGxldGUiLCJuZXctcGFzc3dvcmQiKX0pOwpjLm9ic2VydmUoZCx7YXR0cmlidXRlczohMCxhdHRyaWJ1dGVGaWx0ZXI6WyJhdXRvY29tcGxldGUiXX0pO2Q9JCgiI0ZJTkFOQ0VfTVVMVElTVEVQX2RlYWxlckxhdCIpLnZhbCgpO3ZhciBlPSQoIiNGSU5BTkNFX01VTFRJU1RFUF9kZWFsZXJMb25nIikudmFsKCk7ZD17bGF0OmQsbG9uZzplLHJhZGl1czoyRTV9OyQoJyNmaW5hbmNlX211bHRpc3RlcF9mb3JtIGlucHV0W2RhdGEtZ29vZ2xlLXBsYWNlcy1jdXN0b209InRydWUiXVtuYW1lPSJhZGRyZXNzRW1wbG95ZXIiXScsYikuZ29vZ2xlUGxhY2VzKGQpfSxpbml0R29vZ2xlQXV0b2NvbXBsZXRlRW1wbG95ZXIyOmZ1bmN0aW9uKCl7dmFyIGQ9JCgnI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gaW5wdXRbZGF0YS1nb29nbGUtcGxhY2VzLWN1c3RvbT0idHJ1ZSJdW25hbWU9ImFkZHJlc3NFbXBsb3llcjIiXScsYilbMF0sYz1uZXcgTXV0YXRpb25PYnNlcnZlcihmdW5jdGlvbigpe2MuZGlzY29ubmVjdCgpOyQoJyNmaW5hbmNlX211bHRpc3RlcF9mb3JtIGlucHV0W2RhdGEtZ29vZ2xlLXBsYWNlcy1jdXN0b209InRydWUiXVtuYW1lPSJhZGRyZXNzRW1wbG95ZXIyIl0nLApiKS5hdHRyKCJhdXRvY29tcGxldGUiLCJuZXctcGFzc3dvcmQiKX0pO2Mub2JzZXJ2ZShkLHthdHRyaWJ1dGVzOiEwLGF0dHJpYnV0ZUZpbHRlcjpbImF1dG9jb21wbGV0ZSJdfSk7ZD0kKCIjRklOQU5DRV9NVUxUSVNURVBfZGVhbGVyTGF0IikudmFsKCk7dmFyIGU9JCgiI0ZJTkFOQ0VfTVVMVElTVEVQX2RlYWxlckxvbmciKS52YWwoKTtkPXtsYXQ6ZCxsb25nOmUscmFkaXVzOjJFNX07JCgnI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gaW5wdXRbZGF0YS1nb29nbGUtcGxhY2VzLWN1c3RvbT0idHJ1ZSJdW25hbWU9ImFkZHJlc3NFbXBsb3llcjIiXScsYikuZ29vZ2xlUGxhY2VzKGQpfSxpbml0QmlydGhkYXRlQ2hhbmdlOmZ1bmN0aW9uKCl7JCgiLmZpbmFuY2VfbXVsdGlzdGVwX2JpcnRoZGF0ZV9pbnB1dF9kaXYgaW5wdXQiKS5vbigia2V5dXAiLGZ1bmN0aW9uKCl7JCh0aGlzKS52YWwoKS5sZW5ndGg9PSQodGhpcykuYXR0cigibWF4bGVuZ3RoIikmJiQodGhpcykucGFyZW50KCkubmV4dCgiLmZpbmFuY2VfbXVsdGlzdGVwX2JpcnRoZGF0ZV9pbnB1dF9kaXYiKS5maW5kKCJpbnB1dCIpLnRyaWdnZXIoImZvY3VzIil9KX0sCnZhbGlkYXRlTm90RW1wdHlFbXBsb3llclN0YXR1c1RpbWU6ZnVuY3Rpb24oKXtpZig3MDxhLmZvcm1kYXRhLmVtcGxveW1lbnRTdGF0dXNZZWFyKXJldHVybiBhLnNob3dFcnJvciYmKCQoJ1tuYW1lPSJlbXBsb3ltZW50U3RhdHVzWWVhciJdJykuY3NzKCJib3JkZXItY29sb3IiLCIjYzgzZTNlIiksJCgnW25hbWU9ImVtcGxveW1lbnRTdGF0dXNZZWFyIl0nKS5jc3MoImJvcmRlci1ib3R0b20td2lkdGgiLCI1cHgiKSwkKCIjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybV9lcnJvciIsYikuaHRtbCgkKCIjYWRkcmVzc1RpbWVzRXJyb3JNc2ciKS52YWwoKSkpLCExO2lmKDEyPGEuZm9ybWRhdGEuZW1wbG95bWVudFN0YXR1c01vbnRoKXJldHVybiBhLnNob3dFcnJvciYmKCQoJ1tuYW1lPSJlbXBsb3ltZW50U3RhdHVzTW9udGgiXScpLmNzcygiYm9yZGVyLWNvbG9yIiwiI2M4M2UzZSIpLCQoJ1tuYW1lPSJlbXBsb3ltZW50U3RhdHVzTW9udGgiXScpLmNzcygiYm9yZGVyLWJvdHRvbS13aWR0aCIsCiI1cHgiKSwkKCIjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybV9lcnJvciIsYikuaHRtbCgkKCIjYWRkcmVzc1RpbWVzRXJyb3JNc2ciKS52YWwoKSkpLCExO2lmKDA+PWEuZm9ybWRhdGEuZW1wbG95bWVudFN0YXR1c1llYXImJjA+PWEuZm9ybWRhdGEuZW1wbG95bWVudFN0YXR1c01vbnRoKXJldHVybiBhLnNob3dFcnJvciYmKCQoJ1tuYW1lPSJlbXBsb3ltZW50U3RhdHVzWWVhciJdJykuY3NzKCJib3JkZXItY29sb3IiLCIjYzgzZTNlIiksJCgnW25hbWU9ImVtcGxveW1lbnRTdGF0dXNNb250aCJdJykuY3NzKCJib3JkZXItY29sb3IiLCIjYzgzZTNlIiksJCgnW25hbWU9ImVtcGxveW1lbnRTdGF0dXNZZWFyIl0nKS5jc3MoImJvcmRlci1ib3R0b20td2lkdGgiLCI1cHgiKSwkKCdbbmFtZT0iZW1wbG95bWVudFN0YXR1c01vbnRoIl0nKS5jc3MoImJvcmRlci1ib3R0b20td2lkdGgiLCI1cHgiKSwkKCIjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybV9lcnJvciIsYikuaHRtbCgkKCIjYWRkcmVzc1RpbWVzRXJyb3JNc2ciKS52YWwoKSkpLAohMTthLnNob3dFcnJvciYmKCQoJ1tuYW1lPSJlbXBsb3ltZW50U3RhdHVzWWVhciJdJykuY3NzKCJib3JkZXItY29sb3IiLCIiKSwkKCdbbmFtZT0iZW1wbG95bWVudFN0YXR1c01vbnRoIl0nKS5jc3MoImJvcmRlci1jb2xvciIsIiIpLCQoJ1tuYW1lPSJlbXBsb3ltZW50U3RhdHVzWWVhciJdJykuY3NzKCJib3JkZXItYm90dG9tLXdpZHRoIiwiIiksJCgnW25hbWU9ImVtcGxveW1lbnRTdGF0dXNNb250aCJdJykuY3NzKCJib3JkZXItYm90dG9tLXdpZHRoIiwiIiksJCgiI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm1fZXJyb3IiLGIpLmh0bWwoIiIpKTsiMSI9PXgmJig2MD4xMipwYXJzZUludChhLmZvcm1kYXRhLmVtcGxveW1lbnRTdGF0dXNZZWFyKStwYXJzZUludChhLmZvcm1kYXRhLmVtcGxveW1lbnRTdGF0dXNNb250aCk\/YS5uZXh0U3RlcERlZmF1bHRWYWx1ZXMuc3RlcDE3PTI5OmEubmV4dFN0ZXBEZWZhdWx0VmFsdWVzLnN0ZXAxNz0yMik7cmV0dXJuITB9LHZhbGlkYXRlTm90RW1wdHlFbXBsb3llclN0YXR1c1RpbWVWVzpmdW5jdGlvbigpe2lmKCJGSU5BTkNFX0ZPUk1fRU1QTE9ZTUVOVF9TVEFUVVNfVU5FTVBMT1lFRCI9PQphLmZvcm1kYXRhLmVtcGxveW1lbnRTdGF0dXN8fCJGSU5BTkNFX0ZPUk1fRU1QTE9ZTUVOVF9TVEFUVVNfU1RVREVOVCI9PWEuZm9ybWRhdGEuZW1wbG95bWVudFN0YXR1cylyZXR1cm4hMDtpZig3MDxhLmZvcm1kYXRhLmVtcGxveW1lbnRTdGF0dXNZZWFyKXJldHVybiBhLnNob3dFcnJvciYmKCQoJ1tuYW1lPSJlbXBsb3ltZW50U3RhdHVzWWVhciJdJykuY3NzKCJib3JkZXItY29sb3IiLCIjYzgzZTNlIiksJCgnW25hbWU9ImVtcGxveW1lbnRTdGF0dXNZZWFyIl0nKS5jc3MoImJvcmRlci1ib3R0b20td2lkdGgiLCI1cHgiKSwkKCIjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybV9lcnJvciIsYikuaHRtbCgkKCIjYWRkcmVzc1RpbWVzRXJyb3JNc2ciKS52YWwoKSkpLCExO2lmKDEyPGEuZm9ybWRhdGEuZW1wbG95bWVudFN0YXR1c01vbnRoKXJldHVybiBhLnNob3dFcnJvciYmKCQoJ1tuYW1lPSJlbXBsb3ltZW50U3RhdHVzTW9udGgiXScpLmNzcygiYm9yZGVyLWNvbG9yIiwiI2M4M2UzZSIpLAokKCdbbmFtZT0iZW1wbG95bWVudFN0YXR1c01vbnRoIl0nKS5jc3MoImJvcmRlci1ib3R0b20td2lkdGgiLCI1cHgiKSwkKCIjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybV9lcnJvciIsYikuaHRtbCgkKCIjYWRkcmVzc1RpbWVzRXJyb3JNc2ciKS52YWwoKSkpLCExO2lmKDA+PWEuZm9ybWRhdGEuZW1wbG95bWVudFN0YXR1c1llYXImJjA+PWEuZm9ybWRhdGEuZW1wbG95bWVudFN0YXR1c01vbnRoKXJldHVybiBhLnNob3dFcnJvciYmKCQoJ1tuYW1lPSJlbXBsb3ltZW50U3RhdHVzWWVhciJdJykuY3NzKCJib3JkZXItY29sb3IiLCIjYzgzZTNlIiksJCgnW25hbWU9ImVtcGxveW1lbnRTdGF0dXNNb250aCJdJykuY3NzKCJib3JkZXItY29sb3IiLCIjYzgzZTNlIiksJCgnW25hbWU9ImVtcGxveW1lbnRTdGF0dXNZZWFyIl0nKS5jc3MoImJvcmRlci1ib3R0b20td2lkdGgiLCI1cHgiKSwkKCdbbmFtZT0iZW1wbG95bWVudFN0YXR1c01vbnRoIl0nKS5jc3MoImJvcmRlci1ib3R0b20td2lkdGgiLAoiNXB4IiksJCgiI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm1fZXJyb3IiLGIpLmh0bWwoJCgiI2FkZHJlc3NUaW1lc0Vycm9yTXNnIikudmFsKCkpKSwhMTthLnNob3dFcnJvciYmKCQoJ1tuYW1lPSJlbXBsb3ltZW50U3RhdHVzWWVhciJdJykuY3NzKCJib3JkZXItY29sb3IiLCIiKSwkKCdbbmFtZT0iZW1wbG95bWVudFN0YXR1c01vbnRoIl0nKS5jc3MoImJvcmRlci1jb2xvciIsIiIpLCQoJ1tuYW1lPSJlbXBsb3ltZW50U3RhdHVzWWVhciJdJykuY3NzKCJib3JkZXItYm90dG9tLXdpZHRoIiwiIiksJCgnW25hbWU9ImVtcGxveW1lbnRTdGF0dXNNb250aCJdJykuY3NzKCJib3JkZXItYm90dG9tLXdpZHRoIiwiIiksJCgiI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm1fZXJyb3IiLGIpLmh0bWwoIiIpKTsiMSI9PXgmJig2MD4xMipwYXJzZUludChhLmZvcm1kYXRhLmVtcGxveW1lbnRTdGF0dXNZZWFyKStwYXJzZUludChhLmZvcm1kYXRhLmVtcGxveW1lbnRTdGF0dXNNb250aCk\/YS5uZXh0U3RlcERlZmF1bHRWYWx1ZXMuc3RlcDE3PQoyOTphLm5leHRTdGVwRGVmYXVsdFZhbHVlcy5zdGVwMTc9MjIpO3JldHVybiEwfSx2YWxpZGF0ZU5vdEVtcHR5RW1wbG95ZXJTdGF0dXNUaW1lMjpmdW5jdGlvbigpe2lmKDcwPGEuZm9ybWRhdGEuZW1wbG95bWVudFN0YXR1c1llYXIyKXJldHVybiBhLnNob3dFcnJvciYmKCQoJ1tuYW1lPSJlbXBsb3ltZW50U3RhdHVzWWVhcjIiXScpLmNzcygiYm9yZGVyLWNvbG9yIiwiI2M4M2UzZSIpLCQoJ1tuYW1lPSJlbXBsb3ltZW50U3RhdHVzWWVhcjIiXScpLmNzcygiYm9yZGVyLWJvdHRvbS13aWR0aCIsIjVweCIpLCQoIiNmaW5hbmNlX211bHRpc3RlcF9mb3JtX2Vycm9yIixiKS5odG1sKCQoIiNhZGRyZXNzVGltZXNFcnJvck1zZyIpLnZhbCgpKSksITE7aWYoMTI8YS5mb3JtZGF0YS5lbXBsb3ltZW50U3RhdHVzTW9udGgyKXJldHVybiBhLnNob3dFcnJvciYmKCQoJ1tuYW1lPSJlbXBsb3ltZW50U3RhdHVzTW9udGgyIl0nKS5jc3MoImJvcmRlci1jb2xvciIsIiNjODNlM2UiKSwkKCdbbmFtZT0iZW1wbG95bWVudFN0YXR1c01vbnRoMiJdJykuY3NzKCJib3JkZXItYm90dG9tLXdpZHRoIiwKIjVweCIpLCQoIiNmaW5hbmNlX211bHRpc3RlcF9mb3JtX2Vycm9yIixiKS5odG1sKCQoIiNhZGRyZXNzVGltZXNFcnJvck1zZyIpLnZhbCgpKSksITE7aWYoMD49YS5mb3JtZGF0YS5lbXBsb3ltZW50U3RhdHVzWWVhcjImJjA+PWEuZm9ybWRhdGEuZW1wbG95bWVudFN0YXR1c01vbnRoMilyZXR1cm4gYS5zaG93RXJyb3ImJigkKCdbbmFtZT0iZW1wbG95bWVudFN0YXR1c1llYXIyIl0nKS5jc3MoImJvcmRlci1jb2xvciIsIiNjODNlM2UiKSwkKCdbbmFtZT0iZW1wbG95bWVudFN0YXR1c01vbnRoMiJdJykuY3NzKCJib3JkZXItY29sb3IiLCIjYzgzZTNlIiksJCgnW25hbWU9ImVtcGxveW1lbnRTdGF0dXNZZWFyMiJdJykuY3NzKCJib3JkZXItYm90dG9tLXdpZHRoIiwiNXB4IiksJCgnW25hbWU9ImVtcGxveW1lbnRTdGF0dXNNb250aDIiXScpLmNzcygiYm9yZGVyLWJvdHRvbS13aWR0aCIsIjVweCIpLCQoIiNmaW5hbmNlX211bHRpc3RlcF9mb3JtX2Vycm9yIixiKS5odG1sKCQoIiNhZGRyZXNzVGltZXNFcnJvck1zZyIpLnZhbCgpKSksCiExO2Euc2hvd0Vycm9yJiYoJCgnW25hbWU9ImVtcGxveW1lbnRTdGF0dXNZZWFyMiJdJykuY3NzKCJib3JkZXItY29sb3IiLCIiKSwkKCdbbmFtZT0iZW1wbG95bWVudFN0YXR1c01vbnRoMiJdJykuY3NzKCJib3JkZXItY29sb3IiLCIiKSwkKCdbbmFtZT0iZW1wbG95bWVudFN0YXR1c1llYXIyIl0nKS5jc3MoImJvcmRlci1ib3R0b20td2lkdGgiLCIiKSwkKCdbbmFtZT0iZW1wbG95bWVudFN0YXR1c01vbnRoMiJdJykuY3NzKCJib3JkZXItYm90dG9tLXdpZHRoIiwiIiksJCgiI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm1fZXJyb3IiLGIpLmh0bWwoIiIpKTtyZXR1cm4hMH0sdmFsaWRhdGVOb3RFbXB0eUFkZHJlc3NUaW1lOmZ1bmN0aW9uKCl7aWYoNzA8YS5mb3JtZGF0YS5hZGRyZXNzX3llYXJzKXJldHVybiBhLnNob3dFcnJvciYmKCQoJ1tuYW1lPSJhZGRyZXNzX3llYXJzIl0nKS5jc3MoImJvcmRlci1jb2xvciIsIiNjODNlM2UiKSwkKCdbbmFtZT0iYWRkcmVzc195ZWFycyJdJykuY3NzKCJib3JkZXItYm90dG9tLXdpZHRoIiwKIjVweCIpLCQoIiNmaW5hbmNlX211bHRpc3RlcF9mb3JtX2Vycm9yIixiKS5odG1sKCQoIiNhZGRyZXNzVGltZXNFcnJvck1zZyIpLnZhbCgpKSksITE7aWYoMTI8YS5mb3JtZGF0YS5hZGRyZXNzX21vbnRocylyZXR1cm4gYS5zaG93RXJyb3ImJigkKCdbbmFtZT0iYWRkcmVzc19tb250aHMiXScpLmNzcygiYm9yZGVyLWNvbG9yIiwiI2M4M2UzZSIpLCQoJ1tuYW1lPSJhZGRyZXNzX21vbnRocyJdJykuY3NzKCJib3JkZXItYm90dG9tLXdpZHRoIiwiNXB4IiksJCgiI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm1fZXJyb3IiLGIpLmh0bWwoJCgiI2FkZHJlc3NUaW1lc0Vycm9yTXNnIikudmFsKCkpKSwhMTtpZigwPj1hLmZvcm1kYXRhLmFkZHJlc3NfeWVhcnMmJjA+PWEuZm9ybWRhdGEuYWRkcmVzc19tb250aHMpcmV0dXJuIGEuc2hvd0Vycm9yJiYoJCgnW25hbWU9ImFkZHJlc3NfeWVhcnMiXScpLmNzcygiYm9yZGVyLWNvbG9yIiwiI2M4M2UzZSIpLCQoJ1tuYW1lPSJhZGRyZXNzX21vbnRocyJdJykuY3NzKCJib3JkZXItY29sb3IiLAoiI2M4M2UzZSIpLCQoJ1tuYW1lPSJhZGRyZXNzX3llYXJzIl0nKS5jc3MoImJvcmRlci1ib3R0b20td2lkdGgiLCI1cHgiKSwkKCdbbmFtZT0iYWRkcmVzc19tb250aHMiXScpLmNzcygiYm9yZGVyLWJvdHRvbS13aWR0aCIsIjVweCIpLCQoIiNmaW5hbmNlX211bHRpc3RlcF9mb3JtX2Vycm9yIixiKS5odG1sKCQoIiNhZGRyZXNzVGltZXNFcnJvck1zZyIpLnZhbCgpKSksITE7YS5zaG93RXJyb3ImJigkKCdbbmFtZT0iYWRkcmVzc195ZWFycyJdJykuY3NzKCJib3JkZXItY29sb3IiLCIiKSwkKCdbbmFtZT0iYWRkcmVzc19tb250aHMiXScpLmNzcygiYm9yZGVyLWNvbG9yIiwiIiksJCgnW25hbWU9ImFkZHJlc3NfeWVhcnMiXScpLmNzcygiYm9yZGVyLWJvdHRvbS13aWR0aCIsIiIpLCQoJ1tuYW1lPSJhZGRyZXNzX21vbnRocyJdJykuY3NzKCJib3JkZXItYm90dG9tLXdpZHRoIiwiIiksJCgiI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm1fZXJyb3IiLGIpLmh0bWwoIiIpKTsiMSI9PXgmJgooMjQ+MTIqcGFyc2VJbnQoYS5mb3JtZGF0YS5hZGRyZXNzX3llYXJzKStwYXJzZUludChhLmZvcm1kYXRhLmFkZHJlc3NfbW9udGhzKT9hLm5leHRTdGVwRGVmYXVsdFZhbHVlcy5zdGVwMTI9Mjc6YS5uZXh0U3RlcERlZmF1bHRWYWx1ZXMuc3RlcDEyPTEzKTtyZXR1cm4hMH0sdmFsaWRhdGVDb25zZW50czpmdW5jdGlvbigpe3JldHVybigiUUMiIT0kKCIjRklOQU5DRV9NVUxUSVNURVBfRGVhbGVyUHJvdmluY2UiLGIpLnZhbCgpfHxhLmZvcm1kYXRhLmNvbnNlbnRBY2NvdW50TW9uaXRvcmluZyYmYS5mb3JtZGF0YS5jb25zZW50Q3JlZGl0QXNzZXNzbWVudCkmJmEuZm9ybWRhdGEuY29uc2VudFZXPyEwOiExfSx2YWxpZGF0ZU5vdEVtcHR5QWRkcmVzczJUaW1lOmZ1bmN0aW9uKCl7aWYoNzA8YS5mb3JtZGF0YS5hZGRyZXNzMl95ZWFycylyZXR1cm4gYS5zaG93RXJyb3ImJigkKCdbbmFtZT0iYWRkcmVzczJfeWVhcnMiXScpLmNzcygiYm9yZGVyLWNvbG9yIiwiI2M4M2UzZSIpLCQoJ1tuYW1lPSJhZGRyZXNzMl95ZWFycyJdJykuY3NzKCJib3JkZXItYm90dG9tLXdpZHRoIiwKIjVweCIpLCQoIiNmaW5hbmNlX211bHRpc3RlcF9mb3JtX2Vycm9yIixiKS5odG1sKCQoIiNhZGRyZXNzVGltZXNFcnJvck1zZyIpLnZhbCgpKSksITE7aWYoMTI8YS5mb3JtZGF0YS5hZGRyZXNzMl9tb250aHMpcmV0dXJuIGEuc2hvd0Vycm9yJiYoJCgnW25hbWU9ImFkZHJlc3MyX21vbnRocyJdJykuY3NzKCJib3JkZXItY29sb3IiLCIjYzgzZTNlIiksJCgnW25hbWU9ImFkZHJlc3MyX21vbnRocyJdJykuY3NzKCJib3JkZXItYm90dG9tLXdpZHRoIiwiNXB4IiksJCgiI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm1fZXJyb3IiLGIpLmh0bWwoJCgiI2FkZHJlc3NUaW1lc0Vycm9yTXNnIikudmFsKCkpKSwhMTtpZigwPj1hLmZvcm1kYXRhLmFkZHJlc3MyX3llYXJzJiYwPj1hLmZvcm1kYXRhLmFkZHJlc3MyX21vbnRocylyZXR1cm4gYS5zaG93RXJyb3ImJigkKCdbbmFtZT0iYWRkcmVzczJfeWVhcnMiXScpLmNzcygiYm9yZGVyLWNvbG9yIiwiI2M4M2UzZSIpLCQoJ1tuYW1lPSJhZGRyZXNzMl9tb250aHMiXScpLmNzcygiYm9yZGVyLWNvbG9yIiwKIiNjODNlM2UiKSwkKCdbbmFtZT0iYWRkcmVzczJfeWVhcnMiXScpLmNzcygiYm9yZGVyLWJvdHRvbS13aWR0aCIsIjVweCIpLCQoJ1tuYW1lPSJhZGRyZXNzMl9tb250aHMiXScpLmNzcygiYm9yZGVyLWJvdHRvbS13aWR0aCIsIjVweCIpLCQoIiNmaW5hbmNlX211bHRpc3RlcF9mb3JtX2Vycm9yIixiKS5odG1sKCQoIiNhZGRyZXNzMlRpbWVzRXJyb3JNc2ciKS52YWwoKSkpLCExO2Euc2hvd0Vycm9yJiYoJCgnW25hbWU9ImFkZHJlc3MyX3llYXJzIl0nKS5jc3MoImJvcmRlci1jb2xvciIsIiIpLCQoJ1tuYW1lPSJhZGRyZXNzMl9tb250aHMiXScpLmNzcygiYm9yZGVyLWNvbG9yIiwiIiksJCgnW25hbWU9ImFkZHJlc3MyX3llYXJzIl0nKS5jc3MoImJvcmRlci1ib3R0b20td2lkdGgiLCIiKSwkKCdbbmFtZT0iYWRkcmVzczJfbW9udGhzIl0nKS5jc3MoImJvcmRlci1ib3R0b20td2lkdGgiLCIiKSwkKCIjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybV9lcnJvciIsYikuaHRtbCgiIikpOwpyZXR1cm4hMH0sdmFsaWRhdGVOb3RFbXB0eU1vbnRobHlJbmNvbWVUaW1lOmZ1bmN0aW9uKCl7aWYoNzA8YS5mb3JtZGF0YS5tb250aGx5SW5jb21lX3llYXJzKXJldHVybiBhLnNob3dFcnJvciYmKCQoJ1tuYW1lPSJtb250aGx5SW5jb21lX3llYXJzIl0nKS5jc3MoImJvcmRlci1jb2xvciIsIiNjODNlM2UiKSwkKCdbbmFtZT0ibW9udGhseUluY29tZV95ZWFycyJdJykuY3NzKCJib3JkZXItYm90dG9tLXdpZHRoIiwiNXB4IiksJCgiI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm1fZXJyb3IiLGIpLmh0bWwoJCgiI21vbnRobHlJbmNvbWVUaW1lc0Vycm9yTXNnIikudmFsKCkpKSwhMTtpZigxMjxhLmZvcm1kYXRhLm1vbnRobHlJbmNvbWVfbW9udGhzKXJldHVybiBhLnNob3dFcnJvciYmKCQoJ1tuYW1lPSJtb250aGx5SW5jb21lX21vbnRocyJdJykuY3NzKCJib3JkZXItY29sb3IiLCIjYzgzZTNlIiksJCgnW25hbWU9Im1vbnRobHlJbmNvbWVfbW9udGhzIl0nKS5jc3MoImJvcmRlci1ib3R0b20td2lkdGgiLAoiNXB4IiksJCgiI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm1fZXJyb3IiLGIpLmh0bWwoJCgiI21vbnRobHlJbmNvbWVUaW1lc0Vycm9yTXNnIikudmFsKCkpKSwhMTtpZigwPj1hLmZvcm1kYXRhLm1vbnRobHlJbmNvbWVfeWVhcnMmJjA+PWEuZm9ybWRhdGEubW9udGhseUluY29tZV9tb250aHMpcmV0dXJuIGEuc2hvd0Vycm9yJiYoJCgnW25hbWU9Im1vbnRobHlJbmNvbWVfeWVhcnMiXScpLmNzcygiYm9yZGVyLWNvbG9yIiwiI2M4M2UzZSIpLCQoJ1tuYW1lPSJtb250aGx5SW5jb21lX21vbnRocyJdJykuY3NzKCJib3JkZXItY29sb3IiLCIjYzgzZTNlIiksJCgnW25hbWU9Im1vbnRobHlJbmNvbWVfeWVhcnMiXScpLmNzcygiYm9yZGVyLWJvdHRvbS13aWR0aCIsIjVweCIpLCQoJ1tuYW1lPSJtb250aGx5SW5jb21lX21vbnRocyJdJykuY3NzKCJib3JkZXItYm90dG9tLXdpZHRoIiwiNXB4IiksJCgiI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm1fZXJyb3IiLGIpLmh0bWwoJCgiI21vbnRobHlJbmNvbWVUaW1lc0Vycm9yTXNnIikudmFsKCkpKSwKITE7YS5zaG93RXJyb3ImJigkKCdbbmFtZT0ibW9udGhseUluY29tZV95ZWFycyJdJykuY3NzKCJib3JkZXItY29sb3IiLCIiKSwkKCdbbmFtZT0ibW9udGhseUluY29tZV9tb250aHMiXScpLmNzcygiYm9yZGVyLWNvbG9yIiwiIiksJCgnW25hbWU9Im1vbnRobHlJbmNvbWVfeWVhcnMiXScpLmNzcygiYm9yZGVyLWJvdHRvbS13aWR0aCIsIiIpLCQoJ1tuYW1lPSJtb250aGx5SW5jb21lX21vbnRocyJdJykuY3NzKCJib3JkZXItYm90dG9tLXdpZHRoIiwiIiksJCgiI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm1fZXJyb3IiLGIpLmh0bWwoIiIpKTtyZXR1cm4hMH0sdmFsaWRhdGVQaG9uZU51bWJlcjpmdW5jdGlvbihkKXtyZXR1cm4gZCYmKHBob25lPWQucmVwbGFjZSgiKCIsIiIpLnJlcGxhY2UoIikiLCIiKS5yZXBsYWNlKCIgIiwiIikucmVwbGFjZSgiLSIsIiIpLDEwPT1waG9uZS5sZW5ndGgpPygkLnZhbGlkaXR5LnNldHVwKHtvdXRwdXRNb2RlOiJwb3B1cCIsc2Nyb2xsVG86ITF9KS5zdGFydCgpLAokKCIjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSIsYikuZmluZCgnaW5wdXRbbmFtZT0icGhvbmVOdW1iZXIiXScpLnZhbGlkYXRlUGhvbmUoKSwkLnZhbGlkaXR5LmVuZCgpLnZhbGlkKTohMX0sdmFsaWRhdGVQaG9uZU51bWJlckVtcGxveWVyOmZ1bmN0aW9uKGQpe3JldHVybiBkJiYocGhvbmU9ZC5yZXBsYWNlKCIoIiwiIikucmVwbGFjZSgiKSIsIiIpLnJlcGxhY2UoIiAiLCIiKS5yZXBsYWNlKCItIiwiIiksMTA9PXBob25lLmxlbmd0aCk\/KCQudmFsaWRpdHkuc2V0dXAoe291dHB1dE1vZGU6InBvcHVwIixzY3JvbGxUbzohMX0pLnN0YXJ0KCksJCgiI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0iLGIpLmZpbmQoImlucHV0LmVtcGxveWVyUGhvbmUiKS52YWxpZGF0ZVBob25lKCksJC52YWxpZGl0eS5lbmQoKS52YWxpZCk6ITF9LHZhbGlkYXRlUGhvbmVOdW1iZXJFbXBsb3llcjI6ZnVuY3Rpb24oZCl7cmV0dXJuIGQmJihwaG9uZT1kLnJlcGxhY2UoIigiLCIiKS5yZXBsYWNlKCIpIiwKIiIpLnJlcGxhY2UoIiAiLCIiKS5yZXBsYWNlKCItIiwiIiksMTA9PXBob25lLmxlbmd0aCk\/KCQudmFsaWRpdHkuc2V0dXAoe291dHB1dE1vZGU6InBvcHVwIixzY3JvbGxUbzohMX0pLnN0YXJ0KCksJCgiI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0iLGIpLmZpbmQoImlucHV0LmVtcGxveWVyUGhvbmUyIikudmFsaWRhdGVQaG9uZSgpLCQudmFsaWRpdHkuZW5kKCkudmFsaWQpOiExfSx2YWxpZGF0ZVNJTjpmdW5jdGlvbihkKXtyZXR1cm4oIjEiPT11JiYiMCI9PUF8fCIxIj09eCkmJiIiPT1kJiYwPD1hLm9wdGlvbmFsU3RlcC5pbmRleE9mKDIyKXx8ZCYmKHNpbj1kLnJlcGxhY2VBbGwoIiAiLCIiKSw5PT1zaW4ubGVuZ3RoKT8hMDohMX0sdmFsaWRhdGVWZWhpY2xlOmZ1bmN0aW9uKCl7dmFyIGQ9ITE7c3dpdGNoKGEuY3VycmVudERlcHQpe2Nhc2UgIlVTRUQiOmQ9IiIhPWEuZm9ybWRhdGEuY3VycmVudE1ha2UmJiIiIT1hLmZvcm1kYXRhLmN1cnJlbnRNb2RlbCYmIiIhPWEuZm9ybWRhdGEuY3VycmVudFllYXImJgoiIiE9YS5mb3JtZGF0YS5jdXJyZW50U3RvY2tOdW1iZXImJiIiIT1hLmZvcm1kYXRhLmN1cnJlbnRUcmltJiYiIiE9YS5mb3JtZGF0YS5jdXJyZW50Q2FySWQ7YnJlYWs7Y2FzZSAiTkVXSU5WIjpkPSIiIT1hLmZvcm1kYXRhLmN1cnJlbnRNYWtlJiYiIiE9YS5mb3JtZGF0YS5jdXJyZW50TW9kZWwmJiIiIT1hLmZvcm1kYXRhLmN1cnJlbnRZZWFyJiYiIiE9YS5mb3JtZGF0YS5jdXJyZW50U3RvY2tOdW1iZXImJiIiIT1hLmZvcm1kYXRhLmN1cnJlbnRUcmltJiYiIiE9YS5mb3JtZGF0YS5jdXJyZW50Q2FySWQmJiIiIT1hLmZvcm1kYXRhLmN1cnJlbnRTdHlsZWlkO2JyZWFrO2Nhc2UgIk5FVyI6ZD0iIiE9YS5mb3JtZGF0YS5jdXJyZW50TWFrZSYmIiIhPWEuZm9ybWRhdGEuY3VycmVudE1vZGVsJiYiIiE9YS5mb3JtZGF0YS5jdXJyZW50WWVhciYmIiIhPWEuZm9ybWRhdGEuY3VycmVudFN0eWxlaWQmJiIiIT1hLmZvcm1kYXRhLmN1cnJlbnRUcmltfXJldHVybiBkfSxpbml0VmVoaWNsZVNlbGVjdGlvbjpmdW5jdGlvbigpe2EuaW5pdFZlaGljbGVTZWxlY3Rpb25GaXJzdCYmCigkKCdpbnB1dFtuYW1lPSJmaW5hbmNlTXVsdGlzdGVwRGVwdCJdJyxiKS5vbigiY2hhbmdlIixmdW5jdGlvbigpe2xldCBkPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ2ZWhpY2xlU2VsZWN0aW9uV3JhcHBlciIpO2QucmVwbGFjZVdpdGgoZC5jbG9uZU5vZGUoITApKTtrLmluaXRWZWhpY2xlU2VsZWN0aW9uKCl9KSxhLmluaXRWZWhpY2xlU2VsZWN0aW9uRmlyc3Q9ITEpOyQoIiNmaW5hbmNlTXVsdGlzdGVwTWFrZSIsYikub2ZmKCJjaGFuZ2UiKTskKCIjZmluYW5jZU11bHRpc3RlcE1vZGVsIixiKS5vZmYoImNoYW5nZSIpOyQoIiNmaW5hbmNlTXVsdGlzdGVwVHJpbSIsYikub2ZmKCJjaGFuZ2UiKTsiVVNFRCI9PWEuY3VycmVudERlcHR8fCJORVdJTlYiPT1hLmN1cnJlbnREZXB0PyhtKCJuZXdpbnYiKSwkKCIjZmluYW5jZU11bHRpc3RlcE1ha2UiLGIpLm9uKCJjaGFuZ2UiLGZ1bmN0aW9uKCl7IiIhPSQoIiNmaW5hbmNlTXVsdGlzdGVwTWFrZSIsYikudmFsKCkmJihhLmZvcm1kYXRhLmN1cnJlbnRNb2RlbD0KIiIsYS5mb3JtZGF0YS5jdXJyZW50TW9kZWxUZXh0PSIiLGEuZm9ybWRhdGEuY3VycmVudFRyaW09IiIsYS5mb3JtZGF0YS5jdXJyZW50WWVhcj0iIixhLmZvcm1kYXRhLmN1cnJlbnRTdHlsZWlkPSIiLGEuZm9ybWRhdGEudmVoaWNsZVByaWNlPSIiLGEuZm9ybWRhdGEuY3VycmVudENhcklkPSIiLGEuZm9ybWRhdGEuY3VycmVudFN0b2NrTnVtYmVyPSIiLGEuZm9ybWRhdGEuY3VycmVudE1pbGVhZ2U9MTAsay5jaGVja1ZhbGlkaXR5KCksbigibmV3aW52IiwkKCIjZmluYW5jZU11bHRpc3RlcE1ha2UiLGIpLnZhbCgpKSl9KSwkKCIjZmluYW5jZU11bHRpc3RlcE1vZGVsIixiKS5vbigiY2hhbmdlIixmdW5jdGlvbigpeyIiIT0kKCIjZmluYW5jZU11bHRpc3RlcE1ha2UiLGIpLnZhbCgpJiYiIiE9JCgiI2ZpbmFuY2VNdWx0aXN0ZXBNb2RlbCIsYikudmFsKCkmJihhLmZvcm1kYXRhLmN1cnJlbnRUcmltPSIiLGEuZm9ybWRhdGEuY3VycmVudFllYXI9IiIsYS5mb3JtZGF0YS5jdXJyZW50U3R5bGVpZD0KIiIsYS5mb3JtZGF0YS52ZWhpY2xlUHJpY2U9IiIsYS5mb3JtZGF0YS5jdXJyZW50Q2FySWQ9IiIsYS5mb3JtZGF0YS5jdXJyZW50U3RvY2tOdW1iZXI9IiIsYS5mb3JtZGF0YS5jdXJyZW50TWlsZWFnZT0xMCxrLmNoZWNrVmFsaWRpdHkoKSx2KCQoIiNmaW5hbmNlTXVsdGlzdGVwTWFrZSIsYikudmFsKCksJCgiI2ZpbmFuY2VNdWx0aXN0ZXBNb2RlbCBvcHRpb246c2VsZWN0ZWQiLGIpLmF0dHIoImRhdGEtbW9kZWwiKSkpfSksJCgiI2ZpbmFuY2VNdWx0aXN0ZXBUcmltIixiKS5vbigiY2hhbmdlIixmdW5jdGlvbigpe2EuZm9ybWRhdGEuY3VycmVudE1ha2U9JCgiI2ZpbmFuY2VNdWx0aXN0ZXBNYWtlIixiKS52YWwoKTthLmZvcm1kYXRhLmN1cnJlbnRNb2RlbD0kKCIjZmluYW5jZU11bHRpc3RlcE1vZGVsIG9wdGlvbjpzZWxlY3RlZCIsYikuYXR0cigiZGF0YS1tb2RlbCIpO2EuZm9ybWRhdGEuY3VycmVudFRyaW09JCgiI2ZpbmFuY2VNdWx0aXN0ZXBUcmltIixiKS52YWwoKTthLmZvcm1kYXRhLmN1cnJlbnRZZWFyPQokKCIjZmluYW5jZU11bHRpc3RlcFRyaW0gb3B0aW9uOnNlbGVjdGVkIixiKS5hdHRyKCJkYXRhLXllYXIiKTthLmZvcm1kYXRhLmN1cnJlbnRTdHlsZWlkPSQoIiNmaW5hbmNlTXVsdGlzdGVwVHJpbSBvcHRpb246c2VsZWN0ZWQiLGIpLmF0dHIoImRhdGEtc3R5bGVpZCIpO2EuZm9ybWRhdGEudmVoaWNsZVByaWNlPSQoIiNmaW5hbmNlTXVsdGlzdGVwVHJpbSBvcHRpb246c2VsZWN0ZWQiLGIpLmF0dHIoImRhdGEtcHJpY2UiKTthLmZvcm1kYXRhLmN1cnJlbnRDYXJJZD0kKCIjZmluYW5jZU11bHRpc3RlcFRyaW0gb3B0aW9uOnNlbGVjdGVkIixiKS5hdHRyKCJkYXRhLXZlaGljbGVpZCIpO2EuZm9ybWRhdGEuY3VycmVudFN0b2NrTnVtYmVyPSQoIiNmaW5hbmNlTXVsdGlzdGVwVHJpbSBvcHRpb246c2VsZWN0ZWQiLGIpLmF0dHIoImRhdGEtc3RvY2tudW1iZXIiKTthLmZvcm1kYXRhLmN1cnJlbnRNaWxlYWdlPSQoIiNmaW5hbmNlTXVsdGlzdGVwVHJpbSBvcHRpb246c2VsZWN0ZWQiLApiKS5hdHRyKCJkYXRhLW1pbGVhZ2UiKTt2YXIgZD0kKCIjZmluYW5jZU11bHRpc3RlcFRyaW0gb3B0aW9uOnNlbGVjdGVkIixiKS5hdHRyKCJkYXRhLWlzbmV3IiksYz0kKCIjZmluYW5jZU11bHRpc3RlcFRyaW0gb3B0aW9uOnNlbGVjdGVkIixiKS5hdHRyKCJkYXRhLWlzZGVtbyIpJiYiMSI9PSQoJ2lucHV0W25hbWU9IkZJTkFOQ0VfREVNT0FTTkVXIl0nLGIpLnZhbCgpO2EuY3VycmVudERlcHQ9IjEiPT1kfHxjPyJORVdJTlYiOiJVU0VEIjtrLmNoZWNrVmFsaWRpdHkoKX0pKToobShhLmN1cnJlbnREZXB0KSwkKCIjZmluYW5jZU11bHRpc3RlcE1ha2UiLGIpLm9uKCJjaGFuZ2UiLGZ1bmN0aW9uKCl7IiIhPSQoIiNmaW5hbmNlTXVsdGlzdGVwTWFrZSIsYikudmFsKCkmJihhLmZvcm1kYXRhLmN1cnJlbnRNb2RlbD0iIixhLmZvcm1kYXRhLmN1cnJlbnRNb2RlbFRleHQ9IiIsYS5mb3JtZGF0YS5jdXJyZW50WWVhcj0iIixhLmZvcm1kYXRhLmN1cnJlbnRUcmltPSIiLGEuZm9ybWRhdGEuY3VycmVudE1pbGVhZ2U9CjEwLGEuZm9ybWRhdGEuY3VycmVudFN0eWxlaWQ9IiIsYS5mb3JtZGF0YS52ZWhpY2xlUHJpY2U9IiIsay5jaGVja1ZhbGlkaXR5KCksbihhLmN1cnJlbnREZXB0LCQoIiNmaW5hbmNlTXVsdGlzdGVwTWFrZSIsYikudmFsKCkpKX0pLCQoIiNmaW5hbmNlTXVsdGlzdGVwTW9kZWwiLGIpLm9uKCJjaGFuZ2UiLGZ1bmN0aW9uKCl7IiIhPSQoIiNmaW5hbmNlTXVsdGlzdGVwTWFrZSIsYikudmFsKCkmJiIiIT0kKCIjZmluYW5jZU11bHRpc3RlcE1vZGVsIixiKS52YWwoKSYmKGEuZm9ybWRhdGEuY3VycmVudFllYXI9IiIsYS5mb3JtZGF0YS5jdXJyZW50VHJpbT0iIixhLmZvcm1kYXRhLmN1cnJlbnRNaWxlYWdlPTEwLGEuZm9ybWRhdGEuY3VycmVudFN0eWxlaWQ9IiIsYS5mb3JtZGF0YS52ZWhpY2xlUHJpY2U9IiIsay5jaGVja1ZhbGlkaXR5KCkscSgkKCIjZmluYW5jZU11bHRpc3RlcE1ha2UiLGIpLnZhbCgpLCQoIiNmaW5hbmNlTXVsdGlzdGVwTW9kZWwgb3B0aW9uOnNlbGVjdGVkIiwKYikuYXR0cigiZGF0YS1tb2RlbCIpLCQoIiNmaW5hbmNlTXVsdGlzdGVwTW9kZWwgb3B0aW9uOnNlbGVjdGVkIixiKS5hdHRyKCJkYXRhLXllYXIiKSkpfSksJCgiI2ZpbmFuY2VNdWx0aXN0ZXBUcmltIixiKS5vbigiY2hhbmdlIixmdW5jdGlvbigpe2EuZm9ybWRhdGEuY3VycmVudE1ha2U9JCgiI2ZpbmFuY2VNdWx0aXN0ZXBNYWtlIixiKS52YWwoKTthLmZvcm1kYXRhLmN1cnJlbnRNb2RlbD0kKCIjZmluYW5jZU11bHRpc3RlcE1vZGVsIG9wdGlvbjpzZWxlY3RlZCIsYikuYXR0cigiZGF0YS1tb2RlbCIpO2EuZm9ybWRhdGEuY3VycmVudFllYXI9JCgiI2ZpbmFuY2VNdWx0aXN0ZXBNb2RlbCBvcHRpb246c2VsZWN0ZWQiLGIpLmF0dHIoImRhdGEteWVhciIpO2EuZm9ybWRhdGEuY3VycmVudFRyaW09JCgiI2ZpbmFuY2VNdWx0aXN0ZXBUcmltIixiKS52YWwoKTthLmZvcm1kYXRhLmN1cnJlbnRNaWxlYWdlPTEwO2EuZm9ybWRhdGEuY3VycmVudFN0eWxlaWQ9JCgiI2ZpbmFuY2VNdWx0aXN0ZXBUcmltIG9wdGlvbjpzZWxlY3RlZCIsCmIpLmF0dHIoImRhdGEtc3R5bGVpZCIpO2EuZm9ybWRhdGEudmVoaWNsZVByaWNlPSQoIiNmaW5hbmNlTXVsdGlzdGVwVHJpbSBvcHRpb246c2VsZWN0ZWQiLGIpLmF0dHIoImRhdGEtcHJpY2UiKTtrLmNoZWNrVmFsaWRpdHkoKX0pKX0sdmFsaWRhdGVQYXltZW50OmZ1bmN0aW9uKCl7cmV0dXJuIiIhPWEuZm9ybWRhdGEucGF5bWVudFR5cGUmJiIiIT1hLmZvcm1kYXRhLnBheW1lbnRUZXJtJiYiIiE9YS5mb3JtZGF0YS5wYXltZW50SW50ZXJ2YWwmJiIiIT1hLmZvcm1kYXRhLnBheW1lbnRWYWx1ZSYmIiIhPWEuZm9ybWRhdGEucGF5bWVudFJhdGV8fGEuZm9ybWRhdGEubm9QYXltZW50fSxpbml0Q2FsY3VsYXRvcjpmdW5jdGlvbigpe3ZhciBkPSQoImJvZHkiKS5oYXNDbGFzcygiRlJFTkNIIik\/IiBzdXIgY2UgIithLmZvcm1kYXRhLmN1cnJlbnRNYWtlKyIgIithLmZvcm1kYXRhLmN1cnJlbnRNb2RlbCsiICIrYS5mb3JtZGF0YS5jdXJyZW50WWVhcjoiIG9uIHRoaXMgIithLmZvcm1kYXRhLmN1cnJlbnRZZWFyKwoiICIrYS5mb3JtZGF0YS5jdXJyZW50TWFrZSsiICIrYS5mb3JtZGF0YS5jdXJyZW50TW9kZWw7JCgiI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gLm11bHRpc3RlcFBheW1lbnRWZWhpY2xlIixiKS50ZXh0KGQpO2lmKCJORVciPT1hLmN1cnJlbnREZXB0fHwiTkVXSU5WIj09YS5jdXJyZW50RGVwdCl7JCgiI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm1fZXJyb3IiLGIpLmh0bWwoIiIpO2EuY2FsY3VsYXRvckZ1bmN0aW9ucz1uZXcgY2FsY3VsYXRvckZ1bmN0aW9ucygiIyIrYlswXS5pZCsiICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIik7ZD0iTkVXSU5WIj09YS5jdXJyZW50RGVwdDtsZXQgZT0iZmluYW5jaW5nIixmPTAsZz0wLGw9JCgnaW5wdXRbbmFtZT0iQURNSU5fU0hPV19MT1dFU1RfUEFZTUVOVF9JTlRFUlZBTCJdJykudmFsKCk7dmFyIGM9MkU0O0Nvb2tpZXMuZ2V0KCJwYXltZW50Q2FsY3VsYXRvclNlbGVjdGVkT3B0aW9ucyIpJiYoYz1Db29raWVzLmdldCgicGF5bWVudENhbGN1bGF0b3JTZWxlY3RlZE9wdGlvbnMiKS5zcGxpdCgiLSIpLAplPSJ1bmRlZmluZWQiIT1jWzBdP2NbMF06ZSxmPWNbMV0sZz1wYXJzZUludChjWzRdKXx8MCxsPWNbMl0sYz1jWzNdKTthLmNhbGN1bGF0b3JGdW5jdGlvbnMuaW5pdChhLmZvcm1kYXRhLmN1cnJlbnRTdHlsZWlkLGUsZywwLGwsYyxkLGEuZm9ybWRhdGEuY3VycmVudFN0b2NrTnVtYmVyKTskKCJib2R5Iikub2ZmKCJjaGFuZ2UiLCIjIitiWzBdLmlkKycgI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gLnBheW1lbnRDYWxjdWxhdG9yUGF5bWVudFNlbGVjdCBpbnB1dFtuYW1lPSJzZWxlY3RlZFBheW1lbnQiXSwgIycrYlswXS5pZCsnICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIC5wYXltZW50Q2FsY3VsYXRvclBheW1lbnRTZWxlY3QgaW5wdXRbbmFtZT0ic2VsZWN0ZWRQYXltZW50V2l0aFRheGVzIl0nKTskKCJib2R5Iikub2ZmKCJub1BheW1lbnQiLCIjIitiWzBdLmlkKyIgI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0iKTskKCJib2R5Iikub2ZmKCJwYXltZW50c1JlYWR5IiwiIyIrYlswXS5pZCsKIiAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSIpOyQoImJvZHkiKS5vbigibm9QYXltZW50IiwiIyIrYlswXS5pZCsiICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIixmdW5jdGlvbigpe2EuZm9ybWRhdGEubm9QYXltZW50PSEwO2EubmV4dCghMCl9KTskKCJib2R5Iikub24oImNoYW5nZSIsIiMiK2JbMF0uaWQrJyAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSAucGF5bWVudENhbGN1bGF0b3JQYXltZW50U2VsZWN0IGlucHV0W25hbWU9InNlbGVjdGVkUGF5bWVudCJdLCAjJytiWzBdLmlkKycgI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gLnBheW1lbnRDYWxjdWxhdG9yUGF5bWVudFNlbGVjdCBpbnB1dFtuYW1lPSJzZWxlY3RlZFBheW1lbnRXaXRoVGF4ZXMiXScsZnVuY3Rpb24oKXt2YXIgcD0iZmluYW5jaW5nIj09YS5jYWxjdWxhdG9yRnVuY3Rpb25zLnBheW1lbnRUeXBlPyQoImJvZHkiKS5oYXNDbGFzcygiRlJFTkNIIik\/IkZpbmFuY2VtZW50IjoiRmluYW5jaW5nIjoibGVhc2luZyI9PQphLmNhbGN1bGF0b3JGdW5jdGlvbnMucGF5bWVudFR5cGU\/JCgiYm9keSIpLmhhc0NsYXNzKCJGUkVOQ0giKT8iTG9jYXRpb24iOiJMZWFzaW5nIjoiIjthLmZvcm1kYXRhLnBheW1lbnRUeXBlPXA7YS5mb3JtZGF0YS5wYXltZW50VHlwZVJlYWw9YS5jYWxjdWxhdG9yRnVuY3Rpb25zLnBheW1lbnRUeXBlO2EuZm9ybWRhdGEucGF5bWVudFRlcm09JCh0aGlzKS52YWwoKTthLmZvcm1kYXRhLnBheW1lbnRSYXRlVHlwZT0kKHRoaXMpLmF0dHIoImRhdGEtcmF0ZXR5cGUiKTtwPSQodGhpcykuY2xvc2VzdCgiLmZpbmFuY2VNdWx0aXN0ZXBOZXdDYWxjdWxhdG9yIikuZmluZCgnLnBheW1lbnRDYWxjdWxhdG9yUGF5bWVudFNlbGVjdCBpbnB1dFtuYW1lPSJzZWxlY3RlZFBheW1lbnRXaXRoVGF4ZXMiXVt2YWx1ZT0iJythLmZvcm1kYXRhLnBheW1lbnRUZXJtKyciXVtkYXRhLXJhdGV0eXBlPSInK2EuZm9ybWRhdGEucGF5bWVudFJhdGVUeXBlKyciXScpO3ZhciByO2EuZm9ybWRhdGEucGF5bWVudFJlc2lkdWFsVmFsdWU9Cm51bGwhPShyPXAuYXR0cigiZGF0YS1yZXNpZHVhbCIpKT9yOiQodGhpcykuYXR0cigiZGF0YS1yZXNpZHVhbCIpO3ZhciB0O2EuZm9ybWRhdGEucGF5bWVudFZhbHVlPW51bGwhPSh0PXAuYXR0cigiZGF0YS1yZWFscGF5bWVudCIpKT90OiQodGhpcykuYXR0cigiZGF0YS1yZWFscGF5bWVudCIpO3ZhciBHO2EuZm9ybWRhdGEuYmFzZXBheW1lbnQ9bnVsbCE9KEc9cC5hdHRyKCJkYXRhLWJhc2VwYXltZW50IikpP0c6JCh0aGlzKS5hdHRyKCJkYXRhLWJhc2VwYXltZW50Iik7YS5mb3JtZGF0YS5wYXltZW50VG90YWxJbmNlbnRpdmU9cC5hdHRyKCJkYXRhLXRvdGFsaW5jZW50aXZlIik7YS5mb3JtZGF0YS5wYXltZW50R1NUPXAuYXR0cigiZGF0YS1nc3QiKTthLmZvcm1kYXRhLnBheW1lbnRIU1Q9cC5hdHRyKCJkYXRhLWhzdCIpO2EuZm9ybWRhdGEucGF5bWVudFBTVD1wLmF0dHIoImRhdGEtcHN0Iik7YS5mb3JtZGF0YS52ZWhpY2xlSW5pdGlhbFByaWNlPXAuYXR0cigiZGF0YS1pbml0aWFsUHJpY2UiKTsKYS5mb3JtZGF0YS52ZWhpY2xlRmluYWxQcmljZT1wLmF0dHIoImRhdGEtZmluYWxQcmljZSIpO3ZhciBIO2EuZm9ybWRhdGEucGF5bWVudEZlZXNMaXN0PW51bGwhPShIPUpTT04ucGFyc2UoYXRvYihwLmF0dHIoImRhdGEtZmVlc0xpc3QiKSkpKT9IOltdO3I9MDtmb3IodmFyIE4gb2YgYS5mb3JtZGF0YS5wYXltZW50RmVlc0xpc3Qpcis9Ti5hbW91bnR8fDA7YS5mb3JtZGF0YS5wYXltZW50VG90YWxGZWU9cjt2YXIgSTthLmZvcm1kYXRhLnBheW1lbnRJbmNlbnRpdmVzTGlzdD1udWxsIT0oST1KU09OLnBhcnNlKGF0b2IocC5hdHRyKCJkYXRhLWluY2VudGl2ZXNMaXN0IikpKSk\/STpbXTthLmZvcm1kYXRhLnBheW1lbnREb3duUGF5bWVudD1hLmNhbGN1bGF0b3JGdW5jdGlvbnMuZG93bnBheW1lbnR8fDA7YS5mb3JtZGF0YS5wYXltZW50S21BbGxvd2FuY2U9YS5jYWxjdWxhdG9yRnVuY3Rpb25zLmttQWxsb3dhbmNlO2EuZm9ybWRhdGEucGF5bWVudEludGVydmFsPWEuY2FsY3VsYXRvckZ1bmN0aW9ucy5wYXltZW50RnJlcXVlbmN5OwphLmZvcm1kYXRhLnBheW1lbnRSYXRlPSQodGhpcykuYXR0cigiZGF0YS1yYXRlIik7YS5mb3JtZGF0YS50cmFkZUluVmFsdWU9YS5jYWxjdWxhdG9yRnVuY3Rpb25zLnRyYWRlSW5WYWx1ZTtyPShwYXJzZUludChhLmZvcm1kYXRhLnBheW1lbnREb3duUGF5bWVudCl8fDApKyhwYXJzZUludChhLmZvcm1kYXRhLnRyYWRlSW5WYWx1ZSl8fDApO0Nvb2tpZXMuc2V0KCJwYXltZW50Q2FsY3VsYXRvclNlbGVjdGVkT3B0aW9ucyIsYS5mb3JtZGF0YS5wYXltZW50VHlwZVJlYWwrIi0iK2EuZm9ybWRhdGEucGF5bWVudFRlcm0rIi0iK2EuZm9ybWRhdGEucGF5bWVudEludGVydmFsKyItIithLmZvcm1kYXRhLnBheW1lbnRLbUFsbG93YW5jZSsiLSIrcixudWxsLCIvIik7Ik5FV0NBUlMiIT0oJCgiI3RhcmdldFBhZ2UiKS52YWwoKXx8ITEpJiYiVVNFRENBUlMiIT0oJCgiI3RhcmdldFBhZ2UiKS52YWwoKXx8ITEpJiYiZnVuY3Rpb24iPT10eXBlb2YgY2hhbmdlUGFnZVBheW1lbnRWYWx1ZSYmCihJPSQodGhpcykuYXR0cigiZGF0YS1yZWFscGF5bWVudCIpLE49JCh0aGlzKS5hdHRyKCJkYXRhLXRvdGFsaW50ZXJlc3QiKSxwPSQodGhpcykuYXR0cigiZGF0YS1sdXhlVGF4QW1vdW50Iikscj1yLnRvRml4ZWQoMCksdD0kKHRoaXMpLmF0dHIoImRhdGEtcmF0ZXR5cGUiKSxHPSQodGhpcykuYXR0cigiZGF0YS1lZmZlY3RpdmVSYXRlIiksSD0kKHRoaXMpLmF0dHIoImRhdGEtdG90YWxDb3N0IiksY2hhbmdlUGFnZVBheW1lbnRWYWx1ZSh7Y3VycmVudFBheW1lbnQ6SSxjdXJyZW50UmF0ZTphLmZvcm1kYXRhLnBheW1lbnRSYXRlLHBheW1lbnRUZXJtOmEuZm9ybWRhdGEucGF5bWVudFRlcm0scGF5bWVudFR5cGU6YS5mb3JtZGF0YS5wYXltZW50VHlwZVJlYWwscGF5bWVudEludGVydmFsOmEuZm9ybWRhdGEucGF5bWVudEludGVydmFsLHBheW1lbnREb3duUGF5bWVudDpyLHRvdGFsSW50ZXJlc3Q6TixsdXhlVGF4QW1vdW50OnAscmF0ZVR5cGU6dCxlZmZlY3RpdmVSYXRlOkcsdG90YWxDb3N0Okh9KSwKJCgiIyIrYlswXS5pZCsiICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIikudHJpZ2dlcigicGF5bWVudENoYW5nZWQiKSk7ay5jaGVja1ZhbGlkaXR5KCl9KTskKCJib2R5Iikub24oInBheW1lbnRzUmVhZHkiLCIjIitiWzBdLmlkKyIgI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0iLGZ1bmN0aW9uKCl7Zj1hLmZvcm1kYXRhLnBheW1lbnRUZXJtP2EuZm9ybWRhdGEucGF5bWVudFRlcm06Zj9mOjA7MCE9ZiYmMDwkKCIjIitiWzBdLmlkKycgI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gLnBheW1lbnRDYWxjdWxhdG9yUGF5bWVudFNlbGVjdCBpbnB1dFtuYW1lPSJzZWxlY3RlZFBheW1lbnQiXVt2YWx1ZT0iJytmKyciXScpLmxlbmd0aD8kKCIjIitiWzBdLmlkKycgI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gLnBheW1lbnRDYWxjdWxhdG9yUGF5bWVudFNlbGVjdCBpbnB1dFtuYW1lPSJzZWxlY3RlZFBheW1lbnQiXVt2YWx1ZT0iJytmKyciXScpLmF0dHIoImNoZWNrZWQiLCJjaGVja2VkIikudHJpZ2dlcigiY2hhbmdlIik6CihhLmZvcm1kYXRhLnBheW1lbnRUeXBlPSIiLGEuZm9ybWRhdGEucGF5bWVudFR5cGVSZWFsPSIiLGEuZm9ybWRhdGEucGF5bWVudFRlcm09IiIsYS5mb3JtZGF0YS5wYXltZW50UmF0ZVR5cGU9IiIsYS5mb3JtZGF0YS5wYXltZW50UmVzaWR1YWxWYWx1ZT0iIixhLmZvcm1kYXRhLnBheW1lbnRWYWx1ZT0iIixhLmZvcm1kYXRhLnZlaGljbGVJbml0aWFsUHJpY2U9IiIsYS5mb3JtZGF0YS52ZWhpY2xlRmluYWxQcmljZT0iIixhLmZvcm1kYXRhLnBheW1lbnRGZWVzTGlzdD1bXSxhLmZvcm1kYXRhLnBheW1lbnRJbmNlbnRpdmVzTGlzdD1bXSxhLmZvcm1kYXRhLmJhc2VwYXltZW50PSIiLGEuZm9ybWRhdGEucGF5bWVudFRvdGFsSW5jZW50aXZlPTAsYS5mb3JtZGF0YS5wYXltZW50VG90YWxGZWU9MCxhLmZvcm1kYXRhLnBheW1lbnRHU1Q9MCxhLmZvcm1kYXRhLnBheW1lbnRIU1Q9MCxhLmZvcm1kYXRhLnBheW1lbnRQU1Q9MCxhLmZvcm1kYXRhLnBheW1lbnREb3duUGF5bWVudD0wLAphLmZvcm1kYXRhLnBheW1lbnRLbUFsbG93YW5jZT0wLGEuZm9ybWRhdGEucGF5bWVudEludGVydmFsPSIiLGEuZm9ybWRhdGEucGF5bWVudFJhdGU9IiIsYS5mb3JtZGF0YS50cmFkZUluVmFsdWU9IiIsay5jaGVja1ZhbGlkaXR5KCkpOyQoIi5maW5hbmNlTXVsdGlzdGVwTmV3Q2FsY3VsYXRvciIsYikuc2hvdygpfSk7c2V0VGltZW91dCgoKT0+e2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgQ3RhVHJhY2smJkN0YVRyYWNrLmdldFRyYWNrU3RlcCgiUGF5bWVudENhbGN1bGF0b3JBY3Rpb25Cb3giKSl7bGV0IHA9bmV3IEN1c3RvbUV2ZW50KCJ0cmFja3N0ZXAuY29tcGxldGUiLHtkZXRhaWw6e3N0ZXBJZDoiUGF5bWVudENhbGN1bGF0b3JBY3Rpb25Cb3giLGZvcmNlVXBkYXRlOiEwLG9uQ29tcGxldGU6cj0+e3IuZGF0YXNldC5jb21wbF90eHRfZnI9ci5kYXRhc2V0LmluaXRfY29tcGxfdHh0X2ZyLnJlcGxhY2UoInskUEFZTUVOVFJBVEV9IixjdGFQYXltZW50VGV4dEZyWzBdKS5yZXBsYWNlKCJ7JFBBWU1FTlRZUEV9IiwKY3RhUGF5bWVudFRleHRGclsxXSk7ci5kYXRhc2V0LmNvbXBsX3R4dF9lbj1yLmRhdGFzZXQuaW5pdF9jb21wbF90eHRfZW4ucmVwbGFjZSgieyRQQVlNRU5UUkFURX0iLGN0YVBheW1lbnRUZXh0RW5bMF0pLnJlcGxhY2UoInskUEFZTUVOVFlQRX0iLGN0YVBheW1lbnRUZXh0RW5bMV0pO3I9e3BheW1lbnQ6e319O19sb2NhbFN0b3JhZ2VHZXQoInJldGFpbF90cmFja19kYXRhIikmJihyPUpTT04ucGFyc2UoX2xvY2FsU3RvcmFnZUdldCgicmV0YWlsX3RyYWNrX2RhdGEiKSkpO2xldCB0PSJGUkVOQ0giPT09JCgiI2FjdGl2ZXNpdGVsYW5ndWFnZSIpLnZhbCgpP2N0YVBheW1lbnRUZXh0RnI6Y3RhUGF5bWVudFRleHRFbjtyLnBheW1lbnQ9e2xpc3RQcmljZTp0WzJdfHwiIixwYXltZW50OnRbMF18fCIiLHJhdGU6dFsxXXx8IiIscGF5bWVudFZhbHVlOmN0YVBheW1lbnRWYWx1ZXN8fFtdfTtfbG9jYWxTdG9yYWdlU2V0KCJyZXRhaWxfdHJhY2tfZGF0YSIsSlNPTi5zdHJpbmdpZnkociksCjMwKTtDb29raWVzLnNldCgiY3RhX2RhdGFfdmFsaWQiLDEsMSwiLyIpfX19KTskKCIjIitiWzBdLmlkKyIgI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0iKS5vbigicGF5bWVudENoYW5nZWQiLGZ1bmN0aW9uKCl7ZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChwKX0pfX0sMTAwKX1lbHNlICQoIiNmaW5hbmNlX211bHRpc3RlcF9mb3JtX2Vycm9yIixiKS5odG1sKCIiKSx5KGEuZm9ybWRhdGEuY3VycmVudENhcklkKX0saW5pdEVtYWlsOmZ1bmN0aW9uKCl7ay5jaGVja1ZhbGlkaXR5KCl9LGluaXRQaG9uZTpmdW5jdGlvbigpe2suY2hlY2tWYWxpZGl0eSgpfSxpbml0Q29uc2VudDpmdW5jdGlvbigpe2xldCBkPSIvIit3KyIvbXVsdGlzdGVwSW5zdGFudENvbnNlbnQuaHRtbCI7JCgiI2ZpbmFuY2VfbXVsdGlzdGVwX2NvbnNlbnRfdGV4dF9kaXYiLGIpLmF0dHIoInNyYyIsZCk7d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLGZ1bmN0aW9uKGMpeyhjLm9yaWdpbj13aW5kb3cubG9jYXRpb24ub3JpZ2luKSYmCiJjb25zZW50SWZyYW1lQm90dG9tIj09PWMuZGF0YSYmJCgiI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm1fbmV4dF9idXR0b25fY29uc2VudCIsYikuYWRkQ2xhc3MoImlzVmFsaWQiKX0sITEpfSx2YWxpZGF0ZUNvbnNlbnQ6ZnVuY3Rpb24oKXtpZigkKCIjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybV9uZXh0X2J1dHRvbl9jb25zZW50IixiKS5oYXNDbGFzcygiaXNWYWxpZCIpKXJldHVybiBhLmZvcm1kYXRhLmNyZWRpdEJ1cmVhdUNyZWRpdD0kKCIjd29ya2luZ1doaWxlSW5TY2hvb2xfeWVzIixiKS5hdHRyKCJkYXRhLXRyYW5zbGF0ZWRWYWx1ZSIpLCEwO2EuZm9ybWRhdGEuY3JlZGl0QnVyZWF1Q3JlZGl0PSQoIiN3b3JraW5nV2hpbGVJblNjaG9vbF9ubyIsYikuYXR0cigiZGF0YS10cmFuc2xhdGVkVmFsdWUiKTtyZXR1cm4hMX0sdmFsaWRhdGVDaGVja2VkQ3JlZGl0QnVyZWF1OmZ1bmN0aW9uKGQpe2lmKCQoIiNmaW5hbmNlX211bHRpc3RlcF9mb3JtIiwKYikuZmluZCgnaW5wdXRbbmFtZT0iY3JlZGl0QnVyZWF1Q29uc2VudCJdJykuaXMoIjpjaGVja2VkIikpcmV0dXJuIGEuZm9ybWRhdGEuY3JlZGl0QnVyZWF1Q3JlZGl0PSQoIiN3b3JraW5nV2hpbGVJblNjaG9vbF95ZXMiLGIpLmF0dHIoImRhdGEtdHJhbnNsYXRlZFZhbHVlIiksITA7YS5mb3JtZGF0YS5jcmVkaXRCdXJlYXVDcmVkaXQ9JCgiI3dvcmtpbmdXaGlsZUluU2Nob29sX25vIixiKS5hdHRyKCJkYXRhLXRyYW5zbGF0ZWRWYWx1ZSIpO3JldHVybiExfSx2YWxpZGF0ZU1vcmVUaGFuWmVybzpmdW5jdGlvbihkKXtyZXR1cm4gMDxkfSxzZW5kRW1haWw6ZnVuY3Rpb24oKXt2YXIgZD0kKGIpLmZpbmQoIi5lbWFpbFN1YmplY3QiKSxjPSQoYikuZmluZCgiLmVtYWlsQm9keSIpO2Q9ZC50ZXh0KCk\/ZC50ZXh0KCk6IiI7Yz1jLmh0bWwoKT9jLmh0bWwoKToiIjtpZihkJiZjKXt2YXIgZT0kKCdbdmFsdWU9IicrYS5mb3JtZGF0YS5lbXBsb3ltZW50U3RhdHVzKyciJykuYXR0cigiZGF0YS10cmFuc2xhdGVkVmFsdWUiKTsKIiIhPWEuZm9ybWRhdGEuZW1wbG95bWVudEFkZGVkSW5mbyYmKGUrPSIgKCIrYS5mb3JtZGF0YS5lbXBsb3ltZW50QWRkZWRJbmZvKyIpIik7Yz1jLnJlcGxhY2UoInskQk9EWVRZUEV9IixhLmZvcm1kYXRhLnZlaGljbGVUeXBlPyQoJ1t2YWx1ZT0iJythLmZvcm1kYXRhLnZlaGljbGVUeXBlKyciJykuYXR0cigiZGF0YS10cmFuc2xhdGVkVmFsdWUiKToicmVtb3ZlZW1wdHkiKTtjPWMucmVwbGFjZSgieyRUSVRMRX0iLGEuZm9ybWRhdGEudGl0bGU\/YS5mb3JtZGF0YS50aXRsZToicmVtb3ZlZW1wdHkiKTtjPWMucmVwbGFjZSgieyRGSVJTVE5BTUV9IixhLmZvcm1kYXRhLmZpcnN0TmFtZSk7Yz1jLnJlcGxhY2UoInskTEFTVE5BTUV9IixhLmZvcm1kYXRhLmxhc3ROYW1lKTtjPWMucmVwbGFjZSgieyRFTUFJTH0iLGEuZm9ybWRhdGEuZW1haWxBZGRyZXNzKTtjPWMucmVwbGFjZSgieyRQSE9ORU5VTUJFUn0iLGEuZm9ybWRhdGEucGhvbmVOdW1iZXIpO2M9Yy5yZXBsYWNlKCJ7JEJJUlRIREFZfSIsCmEuZm9ybWRhdGEuYmlydGhkYXRlRGF5KyIvIithLmZvcm1kYXRhLmJpcnRoZGF0ZU1vbnRoKyIvIithLmZvcm1kYXRhLmJpcnRoZGF0ZVllYXIpO2M9Yy5yZXBsYWNlKCJ7JEJVREdFVH0iLGEuZm9ybWRhdGEuYnVkZ2V0PyQoJ1t2YWx1ZT0iJythLmZvcm1kYXRhLmJ1ZGdldCsnIicpLmF0dHIoImRhdGEtdHJhbnNsYXRlZFZhbHVlIik6InJlbW92ZWVtcHR5Iik7Yz1jLnJlcGxhY2UoInskQ1VSUkVOVExZRFJJVklOR30iLGEuZm9ybWRhdGEuY3VycmVudGx5RHJpdmluZz8kKCdbdmFsdWU9IicrYS5mb3JtZGF0YS5jdXJyZW50bHlEcml2aW5nKyciJykuYXR0cigiZGF0YS10cmFuc2xhdGVkVmFsdWUiKToicmVtb3ZlZW1wdHkiKTtjPWMucmVwbGFjZSgieyRDVVJSRU5URVNUSU1BVEVEQ1JFRElUUkFUSU5HfSIsYS5mb3JtZGF0YS5jcmVkaXRSYXRpbmc\/JCgnW3ZhbHVlPSInK2EuZm9ybWRhdGEuY3JlZGl0UmF0aW5nKyciJykuYXR0cigiZGF0YS10cmFuc2xhdGVkVmFsdWUiKToicmVtb3ZlZW1wdHkiKTsKYz1jLnJlcGxhY2UoInskSU5URVJFU1RFRERPV05PUFRJT059IixhLmZvcm1kYXRhLmRvd25PcHRpb25zPyQoJ1t2YWx1ZT0iJythLmZvcm1kYXRhLmRvd25PcHRpb25zKyciJykuYXR0cigiZGF0YS10cmFuc2xhdGVkVmFsdWUiKToicmVtb3ZlZW1wdHkiKTtjPWMucmVwbGFjZSgieyRDVVJSRU5UQUREUkVTU30iLGEuZm9ybWRhdGEuYWRkcmVzcyk7Yz1jLnJlcGxhY2UoInskQ1VSUkVOVFJFU0lERU5DRVRZUEV9IiwkKCdbdmFsdWU9IicrYS5mb3JtZGF0YS5yZW50T3JPd24rJyInKS5hdHRyKCJkYXRhLXRyYW5zbGF0ZWRWYWx1ZSIpKTtjPWMucmVwbGFjZSgieyRDVVJSRU5UT0NDVVBBVElPTkxFTkdUSH0iLGEuZm9ybWRhdGEuYWRkcmVzc195ZWFycysiICIrJCgiI0ZJTkFOQ0VfRk9STV9BRERSRVNTX1RJTUVTX1lFQVJTIikudmFsKCkrIiAiK2EuZm9ybWRhdGEuYWRkcmVzc19tb250aHMrIiAiKyQoIiNGSU5BTkNFX0ZPUk1fQUREUkVTU19USU1FU19NT05USFMiKS52YWwoKSk7CnZhciBmPSQoIiNGSU5BTkNFX01VTFRJU1RFUF9EZWFsZXJQcm92aW5jZSIsYikudmFsKCk7Yz1FJiYiUUMiPT1mP2MucmVwbGFjZSgieyRDVVJSRU5UTU9OVEhMWVJFTlR9IiwiJCIrYS5mb3JtZGF0YS5tb250aGx5UGF5bWVudCsiIC0tIERpc2J1cnNlbWVudDogJCIrYS5mb3JtZGF0YS5tb250aGx5RGlzYnVyc2VtZW50KTpjLnJlcGxhY2UoInskQ1VSUkVOVE1PTlRITFlSRU5UfSIsIiQiK2EuZm9ybWRhdGEubW9udGhseVBheW1lbnQpO2M9Yy5yZXBsYWNlKCJ7JENVUlJFTlRPQ0NVUEFUSU9OfSIsZSk7Yz1jLnJlcGxhY2UoInskV09SS0lOR1dISUxFSU5TQ0hPT0x9IiwiIiE9YS5mb3JtZGF0YS53b3JraW5nV2hpbGVJblNjaG9vbD8kKCdbdmFsdWU9IicrYS5mb3JtZGF0YS53b3JraW5nV2hpbGVJblNjaG9vbCsnIicpLmF0dHIoImRhdGEtdHJhbnNsYXRlZFZhbHVlIik6InJlbW92ZWVtcHR5Iik7Yz1jLnJlcGxhY2UoInskQ1VSUkVOVElOQ09NRVNPVVJDRX0iLCIiIT1hLmZvcm1kYXRhLm90aGVyRW1wbG95bWVudFN0YXR1cz8KJCgnW3ZhbHVlPSInK2EuZm9ybWRhdGEub3RoZXJFbXBsb3ltZW50U3RhdHVzKyciJykuYXR0cigiZGF0YS10cmFuc2xhdGVkVmFsdWUiKToicmVtb3ZlZW1wdHkiKTtjPWMucmVwbGFjZSgieyRDVVJSRU5UTU9OVExZSU5DT01FfSIsIiQiK2EuZm9ybWRhdGEubW9udGhseUluY29tZSk7Yz1jLnJlcGxhY2UoInskQ1VSUkVOVE1PTlRITFlJTkNPTUVMRU5HVEh9IixhLmZvcm1kYXRhLm1vbnRobHlJbmNvbWVfeWVhcnMrIiAiKyQoIiNGSU5BTkNFX0ZPUk1fTU9OVEhMWV9JTkNPTUVfVElNRVNfWUVBUlMiKS52YWwoKSsiICIrYS5mb3JtZGF0YS5tb250aGx5SW5jb21lX21vbnRocysiICIrJCgiI0ZJTkFOQ0VfRk9STV9NT05USExZX0lOQ09NRV9USU1FU19NT05USFMiKS52YWwoKSk7IiIhPWEuZm9ybWRhdGEuYWRkcmVzczI\/KGM9Yy5yZXBsYWNlKCJ7JFBSRVZJT1VTQUREUkVTU30iLGEuZm9ybWRhdGEuYWRkcmVzczIpLGM9Yy5yZXBsYWNlKCJ7JFBSRVZJT1VTT0NDVVBBVElPTkxFTkdUSH0iLAphLmZvcm1kYXRhLmFkZHJlc3MyX3llYXJzKyIgIiskKCIjRklOQU5DRV9GT1JNX0FERFJFU1NfVElNRVNfWUVBUlMiKS52YWwoKSsiICIrYS5mb3JtZGF0YS5hZGRyZXNzMl9tb250aHMrIiAiKyQoIiNGSU5BTkNFX0ZPUk1fQUREUkVTU19USU1FU19NT05USFMiKS52YWwoKSksYz1jLnJlcGxhY2UoIiMjUFJFVklPVVNBRERSRVNTSU5GT1NUQVJUIyMiLCIiKSxjPWMucmVwbGFjZSgiIyNQUkVWSU9VU0FERFJFU1NJTkZPRU5EIyMiLCIiKSk6Yz1jLnJlcGxhY2UoLyMjUFJFVklPVVNBRERSRVNTSU5GT1NUQVJUIyNbXHNcU10qIyNQUkVWSU9VU0FERFJFU1NJTkZPRU5EIyMvLCIiKTtjPWMucmVwbGFjZSgieyRDVVJSRU5UTUFLRX0iLCIiIT1hLmZvcm1kYXRhLmN1cnJlbnRNYWtlP2EuZm9ybWRhdGEuY3VycmVudE1ha2U6InJlbW92ZWVtcHR5Iik7Yz1jLnJlcGxhY2UoInskQ1VSUkVOVE1PREVMfSIsIiIhPWEuZm9ybWRhdGEuY3VycmVudE1vZGVsP2EuZm9ybWRhdGEuY3VycmVudE1vZGVsOgoicmVtb3ZlZW1wdHkiKTtjPWMucmVwbGFjZSgieyRDVVJSRU5UWUVBUn0iLCIiIT1hLmZvcm1kYXRhLmN1cnJlbnRZZWFyP2EuZm9ybWRhdGEuY3VycmVudFllYXI6InJlbW92ZWVtcHR5Iik7Yz1jLnJlcGxhY2UoInskQ1VSUkVOVFNUT0NLTlVNQkVSfSIsIiIhPWEuZm9ybWRhdGEuY3VycmVudFN0b2NrTnVtYmVyP2EuZm9ybWRhdGEuY3VycmVudFN0b2NrTnVtYmVyOiJyZW1vdmVlbXB0eSIpO2M9Yy5yZXBsYWNlKCJ7JGNyZWRpdEJ1cmVhdUNyZWRpdH0iLCIiIT1hLmZvcm1kYXRhLmNyZWRpdEJ1cmVhdUNyZWRpdD9hLmZvcm1kYXRhLmNyZWRpdEJ1cmVhdUNyZWRpdDoiTk8iKTtjPWMucmVwbGFjZSgieyRTSU59IiwiIiE9YS5mb3JtZGF0YS5TSU4\/YS5mb3JtZGF0YS5TSU46InJlbW92ZWVtcHR5Iik7Yz1jLnJlcGxhY2UoInskQURERURJTkZPfSIsIiIhPWEuZm9ybWRhdGEuYWRkZWRJbmZvP2EuZm9ybWRhdGEuYWRkZWRJbmZvOiJyZW1vdmVlbXB0eSIpO2M9Yy5yZXBsYWNlKCJ7JEVNUExPWUVSfSIsCiIiIT1hLmZvcm1kYXRhLmVtcGxveWVyTmFtZT9hLmZvcm1kYXRhLmVtcGxveWVyTmFtZToicmVtb3ZlZW1wdHkiKTtjPWMucmVwbGFjZSgieyRFTVBMT1lFUlBIT05FfSIsIiIhPWEuZm9ybWRhdGEuZW1wbG95ZXJQaG9uZT9hLmZvcm1kYXRhLmVtcGxveWVyUGhvbmU6InJlbW92ZWVtcHR5Iik7Yz1jLnJlcGxhY2UoInskRU1QTE9ZRU1FTlRTVEFUVVNUSU1FfSIsYS5mb3JtZGF0YS5lbXBsb3ltZW50U3RhdHVzWWVhcisiICIrJCgiI0ZJTkFOQ0VfRk9STV9NT05USExZX0lOQ09NRV9USU1FU19ZRUFSUyIpLnZhbCgpKyIgIithLmZvcm1kYXRhLmVtcGxveW1lbnRTdGF0dXNNb250aCsiICIrJCgiI0ZJTkFOQ0VfRk9STV9NT05USExZX0lOQ09NRV9USU1FU19NT05USFMiKS52YWwoKSk7Yz1jLnJlcGxhY2UoInskRU1QTE9ZRVJBRERSRVNTfSIsIiIhPWEuZm9ybWRhdGEuYWRkcmVzc0VtcGxveWVyP2EuZm9ybWRhdGEuYWRkcmVzc0VtcGxveWVyOiJyZW1vdmVlbXB0eSIpO2M9Yy5yZXBsYWNlKCJ7JENPTlNFTlRBQ0NPVU5UTU9OSVRPUklOR30iLAoiIiE9YS5mb3JtZGF0YS5jb25zZW50QWNjb3VudE1vbml0b3Jpbmc\/MT09YS5mb3JtZGF0YS5jb25zZW50QWNjb3VudE1vbml0b3Jpbmc\/IllFUyI6Ik5PIjoicmVtb3ZlZW1wdHkiKTtjPWMucmVwbGFjZSgieyRDT05TRU5UQ1JFRElUQVNTRVNTTUVOVH0iLCIiIT1hLmZvcm1kYXRhLmNvbnNlbnRDcmVkaXRBc3Nlc3NtZW50PzE9PWEuZm9ybWRhdGEuY29uc2VudENyZWRpdEFzc2Vzc21lbnQ\/IllFUyI6Ik5PIjoicmVtb3ZlZW1wdHkiKTtjPWMucmVwbGFjZSgieyRDT05TRU5UUElQRURBfSIsIiIhPWEuZm9ybWRhdGEuY29uc2VudFBpcGVkYT8xPT1hLmZvcm1kYXRhLmNvbnNlbnRQaXBlZGE\/IllFUyI6Ik5PIjoicmVtb3ZlZW1wdHkiKTtjPWMucmVwbGFjZSgieyRDT05TRU5UQ0FTTH0iLCIiIT1hLmZvcm1kYXRhLmNvbnNlbnRDYXNsPzE9PWEuZm9ybWRhdGEuY29uc2VudENhc2w\/IllFUyI6Ik5PIjoicmVtb3ZlZW1wdHkiKTsiIiE9YS5mb3JtZGF0YS5lbXBsb3llck5hbWUyPyhlPQokKCdbdmFsdWU9IkZJTkFOQ0VfRk9STV9FTVBMT1lNRU5UX1NUQVRVU19FTVBMT1lFRCJdJykuYXR0cigiZGF0YS10cmFuc2xhdGVkVmFsdWUiKSwiIiE9YS5mb3JtZGF0YS5lbXBsb3ltZW50QWRkZWRJbmZvMiYmKGUrPSIgKCIrYS5mb3JtZGF0YS5lbXBsb3ltZW50QWRkZWRJbmZvMisiKSIpLGM9Yy5yZXBsYWNlKCJ7JFBSRVZJT1VTT0NDVVBBVElPTn0iLGUpLGM9Yy5yZXBsYWNlKCJ7JFBSRVZJT1VTRU1QTE9ZRVJ9IiwiIiE9YS5mb3JtZGF0YS5lbXBsb3llck5hbWUyP2EuZm9ybWRhdGEuZW1wbG95ZXJOYW1lMjoicmVtb3ZlZW1wdHkiKSxjPWMucmVwbGFjZSgieyRQUkVWSU9VU0VNUExPWUVSUEhPTkV9IiwiIiE9YS5mb3JtZGF0YS5lbXBsb3llclBob25lMj9hLmZvcm1kYXRhLmVtcGxveWVyUGhvbmUyOiJyZW1vdmVlbXB0eSIpLGM9Yy5yZXBsYWNlKCJ7JFBSRVZJT1VTRU1QTE9ZRU1FTlRTVEFUVVNUSU1FfSIsYS5mb3JtZGF0YS5lbXBsb3ltZW50U3RhdHVzWWVhcjIrIiAiKwokKCIjRklOQU5DRV9GT1JNX01PTlRITFlfSU5DT01FX1RJTUVTX1lFQVJTIikudmFsKCkrIiAiK2EuZm9ybWRhdGEuZW1wbG95bWVudFN0YXR1c01vbnRoMisiICIrJCgiI0ZJTkFOQ0VfRk9STV9NT05USExZX0lOQ09NRV9USU1FU19NT05USFMiKS52YWwoKSksYz1jLnJlcGxhY2UoInskUFJFVklPVVNFTVBMT1lFUkFERFJFU1N9IiwiIiE9YS5mb3JtZGF0YS5hZGRyZXNzRW1wbG95ZXIyP2EuZm9ybWRhdGEuYWRkcmVzc0VtcGxveWVyMjoicmVtb3ZlZW1wdHkiKSxjPWMucmVwbGFjZSgiIyNQUkVWSU9VU09DQ1VQQVRJT05TVEFSVCMjIiwiIiksYz1jLnJlcGxhY2UoIiMjUFJFVklPVVNPQ0NVUEFUSU9ORU5EIyMiLCIiKSk6Yz1jLnJlcGxhY2UoLyMjUFJFVklPVVNPQ0NVUEFUSU9OU1RBUlQjI1tcc1xTXSojI1BSRVZJT1VTT0NDVVBBVElPTkVORCMjLywiIik7Yz1jLnJlcGxhY2UoInskUEFZTUVOVFRZUEV9IiwiIiE9YS5mb3JtZGF0YS5wYXltZW50VHlwZT9hLmZvcm1kYXRhLnBheW1lbnRUeXBlOgoicmVtb3ZlZW1wdHkiKTtjPWMucmVwbGFjZSgieyRQQVlNRU5UVEVSTX0iLCIiIT1hLmZvcm1kYXRhLnBheW1lbnRUZXJtP2EuZm9ybWRhdGEucGF5bWVudFRlcm06InJlbW92ZWVtcHR5Iik7Yz1jLnJlcGxhY2UoInskUEFZTUVOVERPV05QQVlNRU5UfSIsIiIhPWEuZm9ybWRhdGEucGF5bWVudERvd25QYXltZW50P2EuZm9ybWRhdGEucGF5bWVudERvd25QYXltZW50OiJyZW1vdmVlbXB0eSIpO2M9Yy5yZXBsYWNlKCJ7JFBBWU1FTlRJTlRFUlZBTH0iLCIiIT1hLmZvcm1kYXRhLnBheW1lbnRJbnRlcnZhbD9hLmZvcm1kYXRhLnBheW1lbnRJbnRlcnZhbDoicmVtb3ZlZW1wdHkiKTtjPWMucmVwbGFjZSgieyRQQVlNRU5US01BTExPV0FOQ0V9IiwiIiE9YS5mb3JtZGF0YS5wYXltZW50S21BbGxvd2FuY2U\/YS5mb3JtZGF0YS5wYXltZW50S21BbGxvd2FuY2U6InJlbW92ZWVtcHR5Iik7Yz1jLnJlcGxhY2UoInskUEFZTUVOVFZBTFVFfSIsIiIhPWEuZm9ybWRhdGEucGF5bWVudFZhbHVlPwphLmZvcm1kYXRhLnBheW1lbnRWYWx1ZToicmVtb3ZlZW1wdHkiKTtjPWMucmVwbGFjZSgieyRQQVlNRU5UUkFURX0iLCIiIT1hLmZvcm1kYXRhLnBheW1lbnRSYXRlP2EuZm9ybWRhdGEucGF5bWVudFJhdGU6InJlbW92ZWVtcHR5Iik7Yz1jLnJlcGxhY2UoInskTk9QQVlNRU5UfSIsYS5mb3JtZGF0YS5ub1BheW1lbnQ\/IiI6InJlbW92ZWVtcHR5Iik7Yz1jLnJlcGxhY2UoInskQ1JFRElUREVDSVNJT059IixhLmNyZWRpdERlY2lzaW9uSFRNTD9hLmNyZWRpdERlY2lzaW9uSFRNTDoicmVtb3ZlZW1wdHkiKTsiIiE9YS5mb3JtZGF0YS50cmFkZUluVmFsdWU\/KGM9Yy5yZXBsYWNlKCJ7JFRSQURFTUFLRX0iLGEuZm9ybWRhdGEudHJhZGVJbk1ha2UpLGM9Yy5yZXBsYWNlKCJ7JFRSQURFTU9ERUx9IixhLmZvcm1kYXRhLnRyYWRlSW5Nb2RlbCksYz1jLnJlcGxhY2UoInskVFJBREVZRUFSfSIsYS5mb3JtZGF0YS50cmFkZUluVHJpbSksYz1jLnJlcGxhY2UoInskVFJBREVUUklNfSIsYS5mb3JtZGF0YS50cmFkZUluWWVhciksCmM9Yy5yZXBsYWNlKCJ7JFRSQURFVkFMVUV9IixhLmZvcm1kYXRhLnRyYWRlSW5WYWx1ZSksYz1jLnJlcGxhY2UoIiMjVFJBREVJTklORk9TVEFSVCMjIiwiIiksYz1jLnJlcGxhY2UoIiMjVFJBREVJTklORk9FTkQjIyIsIiIpKTpjPWMucmVwbGFjZSgvIyNUUkFERUlOSU5GT1NUQVJUIyNbXHNcU10qIyNUUkFERUlOSU5GT0VORCMjLywiIik7Yz1rLmVtYWlsQm9keUZvck11bHRpRGVhbGVyKGMpO2JvZHlMb3dlcj1jLnRvTG93ZXJDYXNlKCk7Zm9yKGU9MDstMTxib2R5TG93ZXIuaW5kZXhPZigicmVtb3ZlZW1wdHkiKTspe3Bvcz1ib2R5TG93ZXIuaW5kZXhPZigicmVtb3ZlZW1wdHkiKTtpZigtMT09cG9zKWJyZWFrO3JwbEVuZD1ib2R5TG93ZXIuaW5kZXhPZigiPGJyPiIscG9zKTtycGxTdGFydD1ib2R5TG93ZXIubGFzdEluZGV4T2YoIjxicj4iLHBvcyk7aWYoLTE9PXJwbEVuZHx8LTE9PXJwbFN0YXJ0KWJyZWFrO3JwbFN0cmluZz1jLnN1YnN0cmluZyhycGxTdGFydCxycGxFbmQpOwpjPWMucmVwbGFjZShycGxTdHJpbmcsIiIpO2JvZHlMb3dlcj1jLnRvTG93ZXJDYXNlKCk7ZSsrO2lmKDUwPGUpYnJlYWt9ZW1haWxIYW5kbGVyLnN1YmplY3Q9ZDtlbWFpbEhhbmRsZXIuYm9keT1jO2suc2V0RW1haWxIYW5kbGVyU2VuZCgpO2VtYWlsSGFuZGxlci5tYWlsSUQ9IkNyZWRpdE11bHRpc3RlcFJlcXVlc3QiOyIxIj09dSYmKGVtYWlsSGFuZGxlci5tYWlsSUQ9IkNyZWRpdE11bHRpc3RlcFJlcXVlc3QybmRDaGFuY2UiKTsiMSI9PXgmJihlbWFpbEhhbmRsZXIubWFpbElEPSJDcmVkaXRNdWx0aXN0ZXBSZXF1ZXN0SW5zdGFudCIpO2VtYWlsSGFuZGxlci5kZXBhcnRtZW50PSJGSU5BTkNFIjtlbWFpbEhhbmRsZXIuaXNtb2JpbGVzaXRlPTE9PSQoIiNpc21vYmlsZSIpPyJZRVMiOiJOTyI7ZW1haWxIYW5kbGVyLnVzZXJFbWFpbD1hLmZvcm1kYXRhLmVtYWlsQWRkcmVzcztlbWFpbEhhbmRsZXIudXNlckZpcnN0TmFtZT1hLmZvcm1kYXRhLmZpcnN0TmFtZTtlbWFpbEhhbmRsZXIudXNlckxhc3ROYW1lPQphLmZvcm1kYXRhLmxhc3ROYW1lO2VtYWlsSGFuZGxlci51c2VyUGhvbmU9YS5mb3JtZGF0YS5waG9uZU51bWJlcjtlbWFpbEhhbmRsZXIuY29udGFjdEFkZHJlc3M9YS5mb3JtZGF0YS5hZGRyZXNzO2VtYWlsSGFuZGxlci5jb250YWN0QmlydGg9YS5mb3JtZGF0YS5iaXJ0aGRhdGVEYXkrIi8iK2EuZm9ybWRhdGEuYmlydGhkYXRlTW9udGgrIi8iK2EuZm9ybWRhdGEuYmlydGhkYXRlWWVhcjtlbWFpbEhhbmRsZXIuc2FsZXNEZXB0PWEuZm9ybWRhdGEudmVoaWNsZVNhbGVzRGVwdDtlbWFpbEhhbmRsZXIubWFrZT1hLmZvcm1kYXRhLmN1cnJlbnRNYWtlO2VtYWlsSGFuZGxlci5tb2RlbD1hLmZvcm1kYXRhLmN1cnJlbnRNb2RlbDtlbWFpbEhhbmRsZXIueWVhcj1hLmZvcm1kYXRhLmN1cnJlbnRZZWFyO2VtYWlsSGFuZGxlci5zdG9ja051bWJlcj1hLmZvcm1kYXRhLmN1cnJlbnRTdG9ja051bWJlcjtlbWFpbEhhbmRsZXIuZGVwYXJ0bWVudEJ5U3RvY2s9ITE7ZW1haWxIYW5kbGVyLnNraXBHZW9Mb2M9CiEwO2VtYWlsSGFuZGxlci5wYXJ0aWFsPSExO2VtYWlsSGFuZGxlci5jYWxsYmFjaz1mdW5jdGlvbihnKXtnP2suc2V0RmluYW5jZUZvcm1TdGF0dXNUb1NlbnQoKTpjb25zb2xlLmxvZyhnKX07ZW1haWxIYW5kbGVyLnNlbmRNYWlsKCExKX19LHNldEZpbmFuY2VGb3JtU3RhdHVzVG9TZW50OmZ1bmN0aW9uKCl7JC5hamF4KHt1cmw6Ii8iK3crIi9hamF4L3NldEZpbmFuY2VNdWx0aXN0ZXBEYXRhU3RhdHVzVG9TZW50P3dzd2lkdGg9MCIsZGF0YVR5cGU6IkpTT04iLHR5cGU6IlBPU1QiLGRhdGE6e3VzZXJJZDprLnVzZXJJZCgpfSxzdWNjZXNzOmZ1bmN0aW9uKGQpe2xldCBjPW5ldyBDdXN0b21FdmVudCgidHJhY2tzdGVwLmNvbXBsZXRlIix7ZGV0YWlsOntzdGVwSWQ6IkZpbmFuY2VBY3Rpb25Cb3gifX0pO2RvY3VtZW50LmRpc3BhdGNoRXZlbnQoYyk7aWYoIlNVQ0NFU1MiPT1kfHxudWxsPT09ZClhLnN0ZXA9MjEsay51c2VySWQoLTEpLGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCJmaW5hbmNlX211bHRpc3RlcC5saW5lYXJfc3RlcCIpLAokKGRvY3VtZW50LmJvZHkpLnRyaWdnZXIoIm11bHRpRm9ybUZpbmFuY2VTdWJtaXQiKX19KX0scmVzZXRGb3JtOmZ1bmN0aW9uKCl7YS5mb3JtZGF0YT17dmVoaWNsZVR5cGU6IiIsYnVkZ2V0OiIiLGN1cnJlbnRseURyaXZpbmc6IiIsZW1haWxBZGRyZXNzOiIiLGNyZWRpdFJhdGluZzoiIixkb3duT3B0aW9uczoiIixiaXJ0aGRhdGVZZWFyOiIiLGJpcnRoZGF0ZU1vbnRoOiIiLGJpcnRoZGF0ZURheToiIixhZGRyZXNzOiIiLHNwbGl0QWRkcmVzczpbXSxhZGRyZXNzX3llYXJzOjAsYWRkcmVzc19tb250aHM6MCxhZGRyZXNzMjoiIixzcGxpdEFkZHJlc3MyOltdLGFkZHJlc3MyX3llYXJzOjAsYWRkcmVzczJfbW9udGhzOjAsYWRkcmVzc0VtcGxveWVyOiIiLHNwbGl0QWRkcmVzc0VtcGxveWVyOltdLHJlbnRPck93bjoiIixtb250aGx5UGF5bWVudDowLG1vbnRobHlEaXNidXJzZW1lbnQ6MCxlbXBsb3ltZW50U3RhdHVzOiIiLGVtcGxveW1lbnRBZGRlZEluZm86IiIsZW1wbG95ZXJOYW1lOiIiLAplbXBsb3llclBob25lOiIiLGVtcGxveW1lbnRTdGF0dXNZZWFyOjAsZW1wbG95bWVudFN0YXR1c01vbnRoOjAsZW1wbG95bWVudEFkZGVkSW5mbzI6IiIsZW1wbG95ZXJOYW1lMjoiIixlbXBsb3llclBob25lMjoiIixlbXBsb3ltZW50U3RhdHVzWWVhcjI6MCxlbXBsb3ltZW50U3RhdHVzTW9udGgyOjAsYWRkcmVzc0VtcGxveWVyMjoiIixzcGxpdEFkZHJlc3NFbXBsb3llcjI6W10sd29ya2luZ1doaWxlSW5TY2hvb2w6IiIsb3RoZXJFbXBsb3ltZW50U3RhdHVzOiIiLG1vbnRobHlJbmNvbWU6MCxtb250aGx5SW5jb21lX3llYXJzOjAsbW9udGhseUluY29tZV9tb250aHM6MCx0aXRsZToiIixmaXJzdE5hbWU6IiIsbGFzdE5hbWU6IiIscGhvbmVOdW1iZXI6IiIsY3VycmVudE1ha2U6IiIsY3VycmVudE1vZGVsOiIiLGN1cnJlbnRNb2RlbFRleHQ6IiIsY3VycmVudFllYXI6IiIsY3VycmVudFN0b2NrTnVtYmVyOiIiLGN1cnJlbnRNaWxlYWdlOjEwLGN1cnJlbnRUcmltOiIiLGN1cnJlbnRTdHlsZWlkOiIiLApjdXJyZW50Q2FySWQ6IiIscGF5bWVudFR5cGU6IiIscGF5bWVudFR5cGVSZWFsOiIiLHBheW1lbnRUZXJtOiIiLHBheW1lbnRSYXRlVHlwZToiIixwYXltZW50VmFsdWU6IiIsYmFzZXBheW1lbnQ6IiIscGF5bWVudFRvdGFsSW5jZW50aXZlOjAscGF5bWVudFRvdGFsRmVlOjAscGF5bWVudEdTVDowLHBheW1lbnRIU1Q6MCxwYXltZW50UFNUOjAscGF5bWVudERvd25QYXltZW50OjAscGF5bWVudEttQWxsb3dhbmNlOjAscGF5bWVudEludGVydmFsOiIiLHBheW1lbnRSYXRlOiIiLHBheW1lbnRSZXNpZHVhbFZhbHVlOjAsbm9QYXltZW50OiExLG11bHRpX2RlYWxlcl9zZW5kVG86IiIsY3JlZGl0QnVyZWF1Q3JlZGl0OiJOTyIsU0lOOiIiLGFkZGVkSW5mbzoiIix2ZWhpY2xlU2FsZXNEZXB0OiJvdGhlciIsdmVoaWNsZVByaWNlOiIiLHZlaGljbGVUcmFuc21pc3Npb246IiIsdmVoaWNsZVRyaW06IiIsdmVoaWNsZUNvbG9yOiIiLGluaXRpYWxUaXRsZVNob3c6ITAsbXVsdGlGcm9tTWluaTohMSwKdHJhZGVJbk1ha2U6IiIsdHJhZGVJbk1vZGVsOiIiLHRyYWRlSW5ZZWFyOiIiLHRyYWRlSW5UcmltOiIiLHRyYWRlSW5WYWx1ZToiIn19LGNyZWRpdEFwcFN1bWlzc2lvbjpmdW5jdGlvbigpe3ZhciBkPWEuZm9ybWRhdGEsYz0kKCIjc2l0ZUlEIikudmFsKCl8fCQoIiN0b3BzaXRlaWQiKS52YWwoKTtkLnNpdGVJZD1jO2QuY3VycmVudERlcHQ9YS5jdXJyZW50RGVwdDskKCIubXVsdGlzdGVwSW5zdGFudFNwaW5uZXIiKS5zaG93KCk7YS5mb3JtZGF0YS5jcmVkaXRCdXJlYXVDcmVkaXQ9IllFUyI7YS5zdGVwPTIxOyQuYWpheCh7dXJsOiIvIit3K2AvYWpheC9zdWJtaXRDcmVkaXRBcHBsaWNhdGlvbj93c3dpZHRoPSR7ZW5jb2RlVVJJQ29tcG9uZW50KCIwIil9YCxkYXRhVHlwZToiSlNPTiIsdHlwZToiUE9TVCIsZGF0YTpkLHN1Y2Nlc3M6ZnVuY3Rpb24oZSl7bGV0IGYsZyxsPWUuYXBwbGljYXRpb25JZDtpZihlLmVycm9yKWY9JCgiI0ZJTkFOQ0VfRk9STV9WV0NSRURJVF9WV0VSUk9SX01TR19VU0VSIiwKYikudmFsKCksZz0kKCIjRklOQU5DRV9GT1JNX1ZXQ1JFRElUX0VSUk9SX01TR19MRUFEIixiKS52YWwoKSxhLmNyZWRpdERlY2lzaW9uSFRNTD1nO2Vsc2UgaWYobCl7aWYoZj0kKCIjRklOQU5DRV9GT1JNX1ZXQ1JFRElUX0FQUFJPVkFMX01TRyIsYikudmFsKCkrIjxicj48YnI+IitsLGY9Zi5yZXBsYWNlKCIjI1VTRVJFTUFJTCMjIixkLmVtYWlsQWRkcmVzcyksZz0kKCIjRklOQU5DRV9GT1JNX1ZXQ1JFRElUX1NVQ0NFU1NfTVNHX0xFQUQiLGIpLnZhbCgpKyI8c3Ryb25nPiIrbCsiPC9zdHJvbmc+IixhLmNyZWRpdERlY2lzaW9uSFRNTD1nLGEuY3JlZGl0QXBwbGljYXRpb25JZD1sLGUuYXBwbGljYXRpb25TdGF0dXMmJmUuYXBwbGljYXRpb25TdGF0dXMuc3RhdHVzKXN3aXRjaChlLmFwcGxpY2F0aW9uU3RhdHVzLnN0YXR1cyl7Y2FzZSAiQXBwcm92ZWQiOiQoIiNGSU5BTkNFX0ZPUk1fVldDUkVESVRfQVBQUk9WQUxfTVNHIixiKS52YWwoKTticmVhaztjYXNlICJQZW5kaW5nIjokKCIjRklOQU5DRV9GT1JNX1ZXQ1JFRElUX1BFTkRJTkdfTVNHIiwKYikudmFsKCk7YnJlYWs7ZGVmYXVsdDokKCIjRklOQU5DRV9GT1JNX1ZXQ1JFRElUX05PQVBQUk9WQUxfTVNHIixiKS52YWwoKX19ZWxzZSBmPSQoIiNGSU5BTkNFX0ZPUk1fVldDUkVESVRfVldFUlJPUl9NU0dfVVNFUiIsYikudmFsKCksZz0kKCIjRklOQU5DRV9GT1JNX1ZXQ1JFRElUX0VSUk9SX01TR19MRUFEIixiKS52YWwoKSxhLmNyZWRpdERlY2lzaW9uSFRNTD1nOyQoYikuZmluZCgiLmNvbmZpcm1hdGlvblRpdGxlIikuaGlkZSgpOyQoYikuZmluZCgiLmNvbmZpcm1hdGlvblRleHQiKS5oaWRlKCk7JChiKS5maW5kKCIuY3JlZGl0RGVjaXNpb24iKS5odG1sKGYpOyQoYikuZmluZCgiLmNyZWRpdERlY2lzaW9uIikuc2hvdygpOyQoIi5tdWx0aXN0ZXBJbnN0YW50U3Bpbm5lciIpLmhpZGUoKTtrLnNlbmRFbWFpbCgpfX0pfSxyb3V0ZU9uZUNhbGw6ZnVuY3Rpb24oKXt2YXIgZD1hLmZvcm1kYXRhLGM9JCgiI3NpdGVJRCIpLnZhbCgpfHwkKCIjdG9wc2l0ZWlkIikudmFsKCk7CmQuc2l0ZUlkPWM7ZC5jdXJyZW50RGVwdD1hLmN1cnJlbnREZXB0OyQoIi5tdWx0aXN0ZXBJbnN0YW50U3Bpbm5lciIpLnNob3coKTthLnN0ZXA9MjE7KGZ1bmN0aW9uKGUpe3JldHVybiBuZXcgUHJvbWlzZSgoZixnKT0+JGpzY29tcC5hc3luY0V4ZWN1dGVQcm9taXNlR2VuZXJhdG9yRnVuY3Rpb24oZnVuY3Rpb24qKCl7ZT1lKyI\/Y2I9IisyMDM4MzQ3NDkzKk1hdGgucmFuZG9tKCk7bGV0IGw9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7bC5zZXRBdHRyaWJ1dGUoInNyYyIsZSk7bC5zZXRBdHRyaWJ1dGUoImFzeW5jIiwiZmFsc2UiKTtsZXQgcD1kb2N1bWVudC5oZWFkO3AuaW5zZXJ0QmVmb3JlKGwscC5maXJzdEVsZW1lbnRDaGlsZCk7bC5hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwoKT0+e2YoKX0sITEpfSkpfSkoIi9qcy9yb3V0ZTFIYW5kbGVyLmpzIikudGhlbigoKT0+e2xldCBlPW5ldyByb3V0ZTFFdmVudEhhbmRsZXIoITEpO2Uub24oImNvbm5lY3RlZCIsKGYsCmcpPT57Y29uc29sZS5sb2coIkNvbm5lY3RlZCIpfSk7ZS5vbigicmVhZHkiLChmLGcpPT57Y29uc29sZS5sb2coIlJlYWR5Iik7ZS5yZXF1ZXN0Q3JlZGl0Q2hlY2soZCl9KTtlLm9uKCJlcnJvciIsKGYsZyk9Pntjb25zb2xlLmxvZygiRXJyb3I6ICVvIixmKTtlLmNsb3NlKCk7ay5zZXRDcmVkaXREZWNpc2lvbihmLm1lc3NhZ2UpOyQoIi5tdWx0aXN0ZXBJbnN0YW50U3Bpbm5lciIpLmhpZGUoKTtrLnNlbmRFbWFpbCgpfSk7ZS5vbigiY3JlZGl0Q2hlY2tDb21wbGV0ZSIsKGYsZyk9Pntjb25zb2xlLmxvZygiQ3JlZGl0IENoZWNrIENvbXBsZXRlOiAlbyIsZik7ZS5jbG9zZSgpO2suc2V0Q3JlZGl0RGVjaXNpb24oZik7JCgiLm11bHRpc3RlcEluc3RhbnRTcGlubmVyIikuaGlkZSgpO2suc2VuZEVtYWlsKCl9KTtlLm9uKCJ3YWl0aW5nT25Sb3V0ZTEiLChmLGcpPT57Y29uc29sZS5sb2coIldhaXRpbmcgb24gUm91dGUgMTogJW8iLGYpfSl9KX0sc2V0Q3JlZGl0RGVjaXNpb246ZnVuY3Rpb24oZCl7dmFyIGMsCmU9IiI7aWYoZC5qc29uKXt2YXIgZj0iYXBwcm92ZWQiPT1kLmpzb24uc3RhdHVzPyJBcHByb3ZlZCI6IkRlbmllZCI7dmFyIGc9bnVsbCE9KGM9ZC5qc29uLmlkKT9jOiIiO3ZhciBsO2M9bnVsbCE9KGw9ZC5qc29uLmxlbmRlcik\/bDoiIjtkLmpzb24uZXJyb3Jtc2cmJiJObyBwYXltZW50Ij09ZC5qc29uLmVycm9ybXNnJiYoZj1kLmpzb24uZXJyb3Jtc2csYz1nPSIiKTtlPWQuanNvbi5lcnJvcm1zZ31lbHNlIGlmKGQuc3RhdGUpe2Y9IkRlbmllZCI7dmFyIHA7Zz1udWxsIT0ocD1kLnN0YXRlLmlkKT9wOiIiO2M9IiI7ZC5lcnJvcm1zZyYmIk5vIHBheW1lbnQiPT1kLmVycm9ybXNnJiYoZj1kLmVycm9ybXNnLGM9Zz0iIik7ZT1kLmVycm9ybXNnP2QuZXJyb3Jtc2c6ZC5lcnJvcn1lbHNlIGY9IkRlbmllZCIsYz1nPSIiOyJBcHByb3ZlZCIhPWY\/KGw9JCgiI0ZJTkFOQ0VfRk9STV9ST1VURU9ORV9OT0FQUFJPVkFMX01TRyIpLnZhbCgpLCJObyBwYXltZW50Ij09Zj8oZj0iRU5HTElTSCI9PQokKCIjYWN0aXZlc2l0ZWxhbmd1YWdlIikudmFsKCk\/ZjoiUGFzIGRlIHBhaWVtZW50IixsPWwucmVwbGFjZSgiJFJvdXRlT25lSUQiLCIiKS5yZXBsYWNlKCIkRXJyb3JDb2RlIixmKSk6bD1nP2wucmVwbGFjZSgiJFJvdXRlT25lSUQiLGcpLnJlcGxhY2UoIiRFcnJvckNvZGUiLGUpOmwucmVwbGFjZSgiJFJvdXRlT25lSUQiLCIiKS5yZXBsYWNlKCIkRXJyb3JDb2RlIixlKSk6KGw9JCgiI0ZJTkFOQ0VfRk9STV9ST1VURU9ORV9BUFBST1ZBTF9NU0ciKS52YWwoKSxsPWwucmVwbGFjZSgiJE1ha2UiLGEuZm9ybWRhdGEuY3VycmVudE1ha2UpLGw9bC5yZXBsYWNlKCIkTW9kZWwiLGEuZm9ybWRhdGEuY3VycmVudE1vZGVsVGV4dCksbD1sLnJlcGxhY2UoIiRZZWFyIixhLmZvcm1kYXRhLmN1cnJlbnRZZWFyKSxsPWwucmVwbGFjZSgiJFZlcnNpb24iLGEuZm9ybWRhdGEuY3VycmVudFRyaW0pLGw9bC5yZXBsYWNlKCIkTGVuZGVyIixjKSxsPWwucmVwbGFjZSgiJFJlZmVyZW5jZUlEIiwKZyksZj0kKCdpbnB1dFtkYXRhLWZvcnZhcj0iT1ZFUldSSVRURVJERUFMRVIiXScpLnZhbCgpJiYkKCdpbnB1dFtkYXRhLWZvcnZhcj0iT1ZFUldSSVRURVJERUFMRVIiXScpLmxlbmd0aD8kKCdpbnB1dFtkYXRhLWZvcnZhcj0iT1ZFUldSSVRURVJERUFMRVIiXScpLnZhbCgpOiIiLHA9IiIhPSQoJ2lucHV0W2RhdGEtZm9ydmFyPSJERUFMRVIiXScpLnZhbCgpJiYkKCdpbnB1dFtkYXRhLWZvcnZhcj0iREVBTEVSIl0nKS5sZW5ndGg\/JCgnaW5wdXRbZGF0YS1mb3J2YXI9IkRFQUxFUiJdJykudmFsKCk6JCgiI2hpZGRlbkRlYWxlck5hbWUiKS52YWwoKSxmPWYhPXAmJiIiIT1mP2Y6cCxsPWwucmVwbGFjZSgiJERlYWxlck5hbWUiLGYpLGw9IiIhPWEuZm9ybWRhdGEuY3VycmVudFN0b2NrTnVtYmVyP2wucmVwbGFjZSgiJFN0b2NrIixhLmZvcm1kYXRhLmN1cnJlbnRTdG9ja051bWJlcik6bC5yZXBsYWNlKCIoU3RvY2sgJFN0b2NrKSIsIiIpLGY9IkVOR0xJU0giPT0kKCIjYWN0aXZlc2l0ZWxhbmd1YWdlIikudmFsKCk\/CiJBcHByb3ZlZCI6IkFwcHJvdXbDqSIpO2MmJihmKz0iICIrYyk7ZyYmKGYrPSIgKCIrZysiKSIpO2UmJihmKz0iXG4iK2UpO2c9W107ZC5yb3V0ZTFpZCYmZy5wdXNoKGQucm91dGUxaWQpO2Quc3RhdGUmJmQuc3RhdGUuaWQmJmcucHVzaChkLnN0YXRlLmlkKTtpZihkLmhpc3RvcnkpZm9yKGU9MDtlPGQuaGlzdG9yeS5sZW5ndGg7ZSsrKWQuaGlzdG9yeVtlXS5pZCYmZy5wdXNoKGQuaGlzdG9yeVtlXS5pZCk7ZW1haWxIYW5kbGVyLm9uQWZ0ZXJMZWFkQ3JlYXRlZD17YWN0aW9uOiJST1VURU9ORSIsY29udmVyc2F0aW9uSWRzOmd9O2EuY3JlZGl0RGVjaXNpb25IVE1MPWY7JChiKS5maW5kKCIuY29uZmlybWF0aW9uVGl0bGUiKS5oaWRlKCk7JChiKS5maW5kKCIuY29uZmlybWF0aW9uVGV4dCIpLmhpZGUoKTskKGIpLmZpbmQoIi5jcmVkaXREZWNpc2lvbiIpLnRleHQobCk7JChiKS5maW5kKCIuY3JlZGl0RGVjaXNpb24iKS5zaG93KCl9LHNldEN1cnJlbnRNYWtlTW9kZWxZZWFyOmZ1bmN0aW9uKCl7aWYoIjEiPT0KJCgiI0ZJTkFOQ0VfTVVMVElTVEVQX2lzSW5zdGFudCIsYikudmFsKCkpe2Euc3RlcD0wO2EubmV4dFN0ZXA9TDthLmZvcm1kYXRhLm5vUGF5bWVudD0hMTthLmNhbGN1bGF0b3JGdW5jdGlvbnM9bnVsbDthLmZvcm1kYXRhLnBheW1lbnRUeXBlPSIiO2EuZm9ybWRhdGEucGF5bWVudFR5cGVSZWFsPSIiO2EuZm9ybWRhdGEucGF5bWVudFRlcm09IiI7YS5mb3JtZGF0YS5wYXltZW50UmF0ZVR5cGU9IiI7YS5mb3JtZGF0YS5wYXltZW50UmVzaWR1YWxWYWx1ZT0iIjthLmZvcm1kYXRhLnBheW1lbnRWYWx1ZT0iIjthLmZvcm1kYXRhLnZlaGljbGVJbml0aWFsUHJpY2U9IiI7YS5mb3JtZGF0YS52ZWhpY2xlRmluYWxQcmljZT0iIjthLmZvcm1kYXRhLnBheW1lbnRGZWVzTGlzdD1bXTthLmZvcm1kYXRhLnBheW1lbnRJbmNlbnRpdmVzTGlzdD1bXTthLmZvcm1kYXRhLmJhc2VwYXltZW50PSIiO2EuZm9ybWRhdGEucGF5bWVudFRvdGFsSW5jZW50aXZlPTA7YS5mb3JtZGF0YS5wYXltZW50VG90YWxGZWU9CjA7YS5mb3JtZGF0YS5wYXltZW50R1NUPTA7YS5mb3JtZGF0YS5wYXltZW50SFNUPTA7YS5mb3JtZGF0YS5wYXltZW50UFNUPTA7YS5mb3JtZGF0YS5wYXltZW50RG93blBheW1lbnQ9MDthLmZvcm1kYXRhLnRyYWRlSW5WYWx1ZT0iIjthLmZvcm1kYXRhLnBheW1lbnRLbUFsbG93YW5jZT0wO2EuZm9ybWRhdGEucGF5bWVudEludGVydmFsPSIiO2EuZm9ybWRhdGEucGF5bWVudFJhdGU9IiI7dmFyIGQ9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZpbmFuY2VNdWx0aXN0ZXBOZXdDYWxjdWxhdG9yIik7ZC5yZXBsYWNlV2l0aChkLmNsb25lTm9kZSghMCkpfWEuZm9ybWRhdGEuY3VycmVudE1ha2U9JCgiI3BvcHVwbWFrZU11bHRpc3RlcEZvcm0iKS5sZW5ndGg\/JCgiI3BvcHVwbWFrZU11bHRpc3RlcEZvcm0iKS52YWwoKTphLmZvcm1kYXRhLmN1cnJlbnRNYWtlO2EuZm9ybWRhdGEuY3VycmVudE1vZGVsPSQoIiNwb3B1cG1vZGVsTXVsdGlzdGVwRm9ybSIpLmxlbmd0aD8kKCIjcG9wdXBtb2RlbE11bHRpc3RlcEZvcm0iKS52YWwoKToKYS5mb3JtZGF0YS5jdXJyZW50TW9kZWw7YS5mb3JtZGF0YS5jdXJyZW50WWVhcj0kKCIjcG9wdXB5ZWFyTXVsdGlzdGVwRm9ybSIpLmxlbmd0aCYmMCE9JCgiI3BvcHVweWVhck11bHRpc3RlcEZvcm0iKS52YWwoKT8kKCIjcG9wdXB5ZWFyTXVsdGlzdGVwRm9ybSIpLnZhbCgpOmEuZm9ybWRhdGEuY3VycmVudFllYXI7YS5mb3JtZGF0YS5jdXJyZW50U3RvY2tOdW1iZXI9JCgiI3BvcHVwc3RvY2tudW1iZXJNdWx0aXN0ZXBGb3JtIikubGVuZ3RoPyQoIiNwb3B1cHN0b2NrbnVtYmVyTXVsdGlzdGVwRm9ybSIpLnZhbCgpOmEuZm9ybWRhdGEuY3VycmVudFN0b2NrTnVtYmVyO3ZhciBjPSQoIiN0b3BjYXJpZE11bHRpc3RlcEZvcm0iKS52YWwoKTswPT1wYXJzZUludChjKSYmKGM9IiIpO2lmKCIiIT1hLmZvcm1kYXRhLmN1cnJlbnRNYWtlJiYiIiE9YS5mb3JtZGF0YS5jdXJyZW50TW9kZWwmJiIiIT1hLmZvcm1kYXRhLmN1cnJlbnRZZWFyfHwiIiE9YylpZihjKSQuZ2V0SlNPTigiL2pzL2pzb24vIisKYysiLmpzb24iLGZ1bmN0aW9uKGYpe2EuZm9ybWRhdGEudmVoaWNsZVNhbGVzRGVwdD0idXNlZCI7YS5jdXJyZW50RGVwdD0iVVNFRCI7aWYoZi5pc25ld3x8Zi5kZW1vJiYiMSI9PSQoJ2lucHV0W25hbWU9IkZJTkFOQ0VfREVNT0FTTkVXIl0nLGIpLnZhbCgpKWEuZm9ybWRhdGEudmVoaWNsZVNhbGVzRGVwdD0ibmV3IixhLmN1cnJlbnREZXB0PSJORVdJTlYiLGEuZm9ybWRhdGEuY3VycmVudFN0eWxlaWQ9Zi5zdHlsZUlkOzA8Zi5tYWtlY2VydCYmKGEuZm9ybWRhdGEudmVoaWNsZVNhbGVzRGVwdD0iY3BvIik7dmFyIGc9KGYudHJhbnNtaXNzaW9uRU4rIiIpLm1hdGNoKC8oYXV0b21hdGljfG1hbnVhbCkvaSk7Zz1nP2dbMF06IiI7YS5mb3JtZGF0YS52ZWhpY2xlQ29sb3I9Zi5jb2xvckVOO2EuZm9ybWRhdGEudmVoaWNsZVByaWNlPWYub3JpZ2luYWxQcmljZTthLmZvcm1kYXRhLnZlaGljbGVUYW5zbWlzc2lvbj1nO2EuZm9ybWRhdGEudmVoaWNsZVRyaW09Zi52ZXJzaW9uO2EuZm9ybWRhdGEuY3VycmVudFRyaW09CmYudmVyc2lvbjthLmZvcm1kYXRhLmN1cnJlbnRDYXJJZD1jO2EuZm9ybWRhdGEuY3VycmVudE1pbGVhZ2U9Zi5taWxlcztzd2l0Y2goZi5ib2R5VHlwZUlEKXtjYXNlICJTVVYiOmEuZm9ybWRhdGEudmVoaWNsZVR5cGU9IkJPRFlUWVBFX1NVViI7YnJlYWs7Y2FzZSAiVFJVQ0siOmEuZm9ybWRhdGEudmVoaWNsZVR5cGU9IkJPRFlUWVBFX1RSVUNLIjticmVhaztjYXNlICJNSU5JVkFOIjphLmZvcm1kYXRhLnZlaGljbGVUeXBlPSJCT0RZVFlQRV9NSU5JVkFOIjticmVhaztkZWZhdWx0OmEuZm9ybWRhdGEudmVoaWNsZVR5cGU9IkJPRFlUWVBFX0NBUiJ9MD09YS5zdGVwJiZhLm5leHQoITApO2sucG9wdXBMYXVuY2hlZFRyYWNrKCl9KTtlbHNle2EuZm9ybWRhdGEudmVoaWNsZVNhbGVzRGVwdD0ibmV3IjtkPSJFTkdMSVNIIj09JCgiI2FjdGl2ZXNpdGVsYW5ndWFnZSIpLnZhbCgpPyItZW4iOiItZnIiO3VybD0iL2pzb24vIithLmZvcm1kYXRhLmN1cnJlbnRNYWtlLnJlcGxhY2UoIi0iLAoiXyIpLnJlcGxhY2UoIiAiLCJfIikrIi0iK2EuZm9ybWRhdGEuY3VycmVudE1vZGVsLnJlcGxhY2UoIi0iLCJfIikucmVwbGFjZSgiICIsIl8iKSsiLSIrYS5mb3JtZGF0YS5jdXJyZW50WWVhcitkKyIuanNvbiI7aWYoIkJNVyI9PWEuZm9ybWRhdGEuY3VycmVudE1ha2V8fCJNZXJjZWRlcy1CZW56Ij09YS5mb3JtZGF0YS5jdXJyZW50TWFrZSl7dmFyIGU9JCgiI3RleHRNb2RlbE92ZXJyaWRlIikubGVuZ3RoJiYkKCIjdGV4dE1vZGVsT3ZlcnJpZGUiKS52YWwoKS5sZW5ndGg\/JCgiI3RleHRNb2RlbE92ZXJyaWRlIikudmFsKCk6YS5mb3JtZGF0YS5jdXJyZW50TW9kZWw7dXJsPSIvanNvbi8iK2EuZm9ybWRhdGEuY3VycmVudE1ha2UucmVwbGFjZSgiLSIsIl8iKS5yZXBsYWNlKCIgIiwiXyIpKyItIitlLnJlcGxhY2UoIi0iLCJfIikucmVwbGFjZSgiICIsIl8iKSsiLSIrYS5mb3JtZGF0YS5jdXJyZW50WWVhcitkKyIuanNvbiJ9MDw9YS5mb3JtZGF0YS5jdXJyZW50TW9kZWwuaW5kZXhPZigiaHlicmlkIikmJgooZT0kKCdpbnB1dFtkYXRhLWZvcnZhcj0iTU9ERUxGT1JFTUFJTCJdJykubGVuZ3RoJiYkKCdpbnB1dFtkYXRhLWZvcnZhcj0iTU9ERUxGT1JFTUFJTCJdJykudmFsKCkubGVuZ3RoPyQoJ2lucHV0W2RhdGEtZm9ydmFyPSJNT0RFTEZPUkVNQUlMIl0nKS52YWwoKTphLmZvcm1kYXRhLmN1cnJlbnRNb2RlbCx1cmw9Ii9qc29uLyIrYS5mb3JtZGF0YS5jdXJyZW50TWFrZS5yZXBsYWNlKCItIiwiXyIpKyItIitlLnJlcGxhY2UoIi0iLCJfIikrIi0iK2EuZm9ybWRhdGEuY3VycmVudFllYXIrZCsiLmpzb24iKTskKCIucGF5bWVudENhbGN1bGF0b3JWRFAiKS5sZW5ndGg\/YS5mb3JtZGF0YS5jdXJyZW50U3R5bGVpZD0kKCIucGF5bWVudENhbGN1bGF0b3JWRFAiKS5hdHRyKCJkYXRhLXN0eWxlaWQiKTokKCIucGF5bWVudENhbGNCdG4iKS5sZW5ndGg\/YS5mb3JtZGF0YS5jdXJyZW50U3R5bGVpZD0kKCIucGF5bWVudENhbGNCdG4iKS5hdHRyKCJkYXRhLXN0eWxlaWQiKTokKCIjYWN0aXZlU3R5bGVJRCIpLmxlbmd0aCYmCihhLmZvcm1kYXRhLmN1cnJlbnRTdHlsZWlkPSQoIiNhY3RpdmVTdHlsZUlEIikudmFsKCkpOyQuZ2V0SlNPTih1cmwpLmRvbmUoZnVuY3Rpb24oZil7aWYoZil7c3dpdGNoKGYuc2VjdGlvbil7Y2FzZSAic3V2IjphLmZvcm1kYXRhLnZlaGljbGVUeXBlPSJCT0RZVFlQRV9TVVYiO2JyZWFrO2Nhc2UgInRydWNrcyI6YS5mb3JtZGF0YS52ZWhpY2xlVHlwZT0iQk9EWVRZUEVfVFJVQ0siO2JyZWFrO2Nhc2UgIm1pbml2YW5zIjphLmZvcm1kYXRhLnZlaGljbGVUeXBlPSJCT0RZVFlQRV9NSU5JVkFOIjticmVhaztkZWZhdWx0OmEuZm9ybWRhdGEudmVoaWNsZVR5cGU9IkJPRFlUWVBFX0NBUiJ9IiIhPWEuZm9ybWRhdGEuY3VycmVudFN0eWxlaWQmJmYuc3R5bGVzLmZvckVhY2goZnVuY3Rpb24oZyl7Zy5pZD09YS5mb3JtZGF0YS5jdXJyZW50U3R5bGVpZCYmKGEuZm9ybWRhdGEuY3VycmVudFRyaW09IiIhPWcudHJpbT9nLnRyaW06Zy5DRlN0eWxlTmFtZSxhLmZvcm1kYXRhLnZlaGljbGVQcmljZT0KZy5tc3JwQWxsSW4pfSl9fSkuYWx3YXlzKGZ1bmN0aW9uKCl7MD09YS5zdGVwJiYoYS5uZXh0KCEwKSxrLnBvcHVwTGF1bmNoZWRUcmFjaygpKX0pfWVsc2UiIiE9YS5mb3JtZGF0YS5lbWFpbEFkZHJlc3MmJjIxIT1hLnN0ZXAmJiIxIiE9JCgiI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gI09QRU5FREZST01JTUFHRVBPUFVQIixiKS52YWwoKSYmYS5wdXNoUGFydGlhbCYmay5wdXNoRGF0YVRvU2VydmVyKCksLTE9PWEub3B0aW9uYWxTdGVwLmluZGV4T2YoYS5zdGVwKSYmYS5uZXh0KCEwKSxrLnBvcHVwTGF1bmNoZWRUcmFjaygpfSxnZXRDbGllbnRTdG9yYWdlRGF0YTpmdW5jdGlvbihkKXtsZXQgYz0iIjsidW5kZWZpbmVkIiE9PXR5cGVvZiBjbGllbnRTdG9yYWdlJiYoYz1jbGllbnRTdG9yYWdlLmdldChkKSk7cmV0dXJuIGN9LHNldENsaWVudFN0b3JhZ2VEYXRhOmZ1bmN0aW9uKGQsYyl7InVuZGVmaW5lZCIhPT10eXBlb2YgY2xpZW50U3RvcmFnZSYmY2xpZW50U3RvcmFnZS5zZXQoZCwKYyl9LHNldENsaWVudFN0b3JhZ2VEYXRhVmFsdWVzOmZ1bmN0aW9uKCl7InVuZGVmaW5lZCIhPT10eXBlb2YgY2xpZW50U3RvcmFnZSYmKCIiIT09YS5mb3JtZGF0YS5maXJzdE5hbWUmJmsuc2V0Q2xpZW50U3RvcmFnZURhdGEoImZpcnN0bmFtZSIsYS5mb3JtZGF0YS5maXJzdE5hbWUpLCIiIT09YS5mb3JtZGF0YS5sYXN0TmFtZSYmay5zZXRDbGllbnRTdG9yYWdlRGF0YSgibGFzdG5hbWUiLGEuZm9ybWRhdGEubGFzdE5hbWUpLCIiIT09YS5mb3JtZGF0YS5lbWFpbEFkZHJlc3MmJmsuc2V0Q2xpZW50U3RvcmFnZURhdGEoImVtYWlsIixhLmZvcm1kYXRhLmVtYWlsQWRkcmVzcyksIiIhPT1hLmZvcm1kYXRhLnBob25lTnVtYmVyJiZrLnNldENsaWVudFN0b3JhZ2VEYXRhKCJwaG9uZSIsYS5mb3JtZGF0YS5waG9uZU51bWJlcikpfSxzZXREZXBhcnRtZW50OmZ1bmN0aW9uKCl7dmFyIGQ9ZW1haWxIYW5kbGVyLmdldERlcCgpO2lmKCJORVciIT1kfHwiTkVXSU5WIiE9ZHx8IlVTRUQiIT0KZClkPSJORVciO2EuY3VycmVudERlcHQ9ZDsiTkVXIiE9ZHx8ImNhcmRldGFpbC5odG1sIiE9JCgiI1BBR0VJRCIpLnZhbCgpJiYidXNlZGNhcnMuaHRtbCIhPSQoIiNQQUdFSUQiKS52YWwoKXx8KGEuY3VycmVudERlcHQ9Ik5FV0lOViIpfSxzZXRUcmFkZUluOmZ1bmN0aW9uKCl7YS5mb3JtZGF0YS50cmFkZUluTWFrZT0kKGIpLmZpbmQoJ2lucHV0W25hbWU9ImZpbmFuY2VUcmFkZUluTWFrZSJdJykudmFsKCk7YS5mb3JtZGF0YS50cmFkZUluTW9kZWw9JChiKS5maW5kKCdpbnB1dFtuYW1lPSJmaW5hbmNlVHJhZGVJbk1vZGVsIl0nKS52YWwoKTthLmZvcm1kYXRhLnRyYWRlSW5ZZWFyPSQoYikuZmluZCgnaW5wdXRbbmFtZT0iZmluYW5jZVRyYWRlSW5ZZWFyIl0nKS52YWwoKTthLmZvcm1kYXRhLnRyYWRlSW5UcmltPSQoYikuZmluZCgnaW5wdXRbbmFtZT0iZmluYW5jZVRyYWRlSW5UcmltIl0nKS52YWwoKTtsZXQgZD0kKGIpLmZpbmQoJ2lucHV0W25hbWU9ImZpbmFuY2VUcmFkZUluVmFsdWUiXScpLnZhbCgpLApjPSQoYikuZmluZCgnaW5wdXRbbmFtZT0iZmluYW5jZVRyYWRlSW5WYWx1ZSJdJykuYXR0cigiZGF0YS1jdXJyZW50Iik7YyYmIiI9PWEuZm9ybWRhdGEudHJhZGVJblZhbHVlP2EuZm9ybWRhdGEudHJhZGVJblZhbHVlPWM6IiI9PWEuZm9ybWRhdGEudHJhZGVJblZhbHVlJiYoYS5mb3JtZGF0YS50cmFkZUluVmFsdWU9ZCk7IiIhPWEuZm9ybWRhdGEudHJhZGVJblZhbHVlJiYoJCgiLnBheW1lbnRDYWxjdWxhdG9yVHJhZGVJbkZpbmFsIixiKS52YWwoYS5mb3JtZGF0YS50cmFkZUluVmFsdWUpLCQoIi5wYXltZW50Q2FsY3VsYXRvclRyYWRlSW5GaW5hbCIsYikuYXR0cigibWF4IixkKSwkKCIucGF5bWVudENhbGN1bGF0b3JUcmFkZUluRmluYWwiLGIpLnNob3coKSwkKCIucGF5bWVudENhbGN1bGF0b3JUcmFkZUluSW5pdGlhbCIsYikuaGlkZSgpKX0sZ2V0Q3VycmVudEJ1ZGdldDpmdW5jdGlvbihkKXtyZXR1cm4iMSI9PSQoJ2lucHV0W25hbWU9IkZJTkFOQ0VfTVVMVElTVEVQX0hJR0hfQlVER0VUX0NIRUNLIl0nKS52YWwoKT8KNTAwPj1kPyJGSU5BTkNFX0ZPUk1fQlVER0VUX1VOREVSXzUwMCI6Njc2PD1kJiY4NTA+PWQ\/IkZJTkFOQ0VfRk9STV9CVURHRVRfQkVUV0VFTl82NzZfQU5EXzg1MCI6ODUxPD1kJiYxMTAwPj1kPyJGSU5BTkNFX0ZPUk1fQlVER0VUX0JFVFdFRU5fODUxX0FORF8xMTAwIjoxMzUwPGQ\/IkZJTkFOQ0VfRk9STV9CVURHRVRfT1ZFUl8xMzUxIjo1MDE8PWQmJjY3NT49ZD8iRklOQU5DRV9GT1JNX0JVREdFVF9CRVRXRUVOXzUwMV9BTkRfNjc1IjoiRklOQU5DRV9GT1JNX0JVREdFVF9CRVRXRUVOXzExMDFfQU5EXzEzNTAiOiIxIj09JCgnaW5wdXRbbmFtZT0iRklOQU5DRV9NVUxUSVNURVBfVkVSWUhJR0hfQlVER0VUX0NIRUNLIl0nKS52YWwoKT85MDA+PWQ\/IkZJTkFOQ0VfRk9STV9CVURHRVRfVU5ERVJfOTAwIjoxMTUxPD1kJiYxNDAwPj1kPyJGSU5BTkNFX0ZPUk1fQlVER0VUX0JFVFdFRU5fMTE1MV9BTkRfMTQwMCI6MTQwMTw9ZCYmMTY1MD49ZD8iRklOQU5DRV9GT1JNX0JVREdFVF9CRVRXRUVOXzE0MDFfQU5EXzE2NTAiOgoxOTAwPGQ\/IkZJTkFOQ0VfRk9STV9CVURHRVRfT1ZFUl8xOTAxIjo5MDE8PWQmJjExNTA+PWQ\/IkZJTkFOQ0VfRk9STV9CVURHRVRfQkVUV0VFTl85MDFfQU5EXzExNTAiOiJGSU5BTkNFX0ZPUk1fQlVER0VUX0JFVFdFRU5fMTY1MV9BTkRfMTkwMCI6MzUwPj1kPyJGSU5BTkNFX0ZPUk1fQlVER0VUX1VOREVSXzM1MCI6NjAxPD1kJiY3NTA+PWQ\/IkZJTkFOQ0VfRk9STV9CVURHRVRfQkVUV0VFTl82MDFfQU5EXzc1MCI6NzUxPD1kJiY5MDA+PWQ\/IkZJTkFOQ0VfRk9STV9CVURHRVRfQkVUV0VFTl83NTFfQU5EXzkwMCI6OTAwPGQ\/IkZJTkFOQ0VfRk9STV9CVURHRVRfT1ZFUl85MDEiOjM1MTw9ZCYmNDc1Pj1kPyJGSU5BTkNFX0ZPUk1fQlVER0VUX0JFVFdFRU5fMzUxX0FORF80NzUiOiJGSU5BTkNFX0ZPUk1fQlVER0VUX0JFVFdFRU5fNDc2X0FORF82MDAifSxzZXRFbWFpbEhhbmRsZXJTZW5kOmZ1bmN0aW9uKCl7aWYoMD09YS5mb3JtZGF0YS5tdWx0aUZyb21NaW5pfHwiZmFsc2UiPT0KYS5mb3JtZGF0YS5tdWx0aUZyb21NaW5pKWVtYWlsSGFuZGxlci5zZW5kVG89JCgiI0ZJTkFOQ0VfRk9STV9TRU5EVE9fRU1BSUwiLGIpLnZhbCgpLGVtYWlsSGFuZGxlci5zZW5kVG9BREZGb3JtYXQ9JCgiI0ZJTkFOQ0VfRk9STV9TRU5EVE9BREZfRU1BSUwiLGIpLnZhbCgpLGVtYWlsSGFuZGxlci5kZWFsZXJOYW1lPSIiIT0kKCIjRklOQU5DRV9GT1JNX0RFQUxFUk5BTUUiLGIpLnZhbCgpPyQoIiNGSU5BTkNFX0ZPUk1fREVBTEVSTkFNRSIsYikudmFsKCk6ZW1haWxIYW5kbGVyLmRlYWxlck5hbWU7ZW1haWxIYW5kbGVyLnZlaGljbGVUeXBlPWEuZm9ybWRhdGEudmVoaWNsZVR5cGU7ZW1haWxIYW5kbGVyLmNhcmlkPWEuZm9ybWRhdGEuY3VycmVudENhcklkO2lmKC0xPT09Wy0xLCItMSIsIiJdLmluZGV4T2YoYS5mb3JtZGF0YS5tdWx0aV9kZWFsZXJfc2VuZFRvKSl7dmFyIGQ9JCgiI211bHRpc3RlcC1tdWx0aWFkZHJlc3MiLGIpLmZpbmQoInNlbGVjdCIpLmZpbmQoIjpzZWxlY3RlZCIpOwplbWFpbEhhbmRsZXIuc2VuZFRvPWQuZGF0YSgiZW1haWxmaW5hbmNlIil8fGQuZGF0YSgiZW1haWwiKTtlbWFpbEhhbmRsZXIuc2VsZWN0ZWRTZW5kVG89ZC5kYXRhKCJlbWFpbGZpbmFuY2UiKXx8ZC5kYXRhKCJlbWFpbCIpO2VtYWlsSGFuZGxlci5zZW5kVG9BREZGb3JtYXQ9ZC5kYXRhKCJlbWFpbGFkZmZpbmFuY2UiKXx8ZC5kYXRhKCJlbWFpbGFkZiIpO2VtYWlsSGFuZGxlci5zZWxlY3RlZFNlbmRUb0FERkZvcm1hdD1kLmRhdGEoImVtYWlsYWRmZmluYW5jZSIpfHxkLmRhdGEoImVtYWlsYWRmIik7ZW1haWxIYW5kbGVyLmRlYWxlck5hbWU9ZC50ZXh0KCk7ZW1haWxIYW5kbGVyLmhhc1NlbGVjdGVkTXVsdGlBZGRyZXNzPSEwfX0saW5pdFNlbGVjdE11bHRpRGVhbGVyOmZ1bmN0aW9uKCl7dmFyIGQ9JCgiI211bHRpLWFkZHJlc3Mtc3VibWlzc2lvbiIpO2lmKDA9PT1kLmxlbmd0aClhLmZvcm1kYXRhLm11bHRpX2RlYWxlcl9zZW5kVG89LTEsYS5uZXh0KCEwKTtlbHNle3ZhciBjPQokKCIjUE9TVF9MRUFEX1NFTkRfVE9fREVBTEVSX1RZUEVfU0VMRUNUIikubGVuZ3RoPyQoIiNQT1NUX0xFQURfU0VORF9UT19ERUFMRVJfVFlQRV9TRUxFQ1QiKS52YWwoKToibG9jYXRpb24iOygwPCQoIiN0YXJnZXRQYWdlIikubGVuZ3RoJiYiQ0FSREVUQUlMUyI9PT0kKCIjdGFyZ2V0UGFnZSIpLnZhbCgpfHwiIiE9JCgiI3BvcHVwc3RvY2tudW1iZXJNdWx0aXN0ZXBGb3JtIikudmFsKCkmJiIxIj09JCgiI0ZJTkFOQ0VfRk9STV9BRE1JTl9TSE9XUEhZU0lDQUxBRERSRVNTX0NIRUNLIikudmFsKCkpJiYibG9jYXRpb24iPT1jPyhhLmZvcm1kYXRhLm11bHRpX2RlYWxlcl9zZW5kVG89LTEsYS5uZXh0KCEwKSk6IiI9PT0kKCIjbXVsdGlzdGVwLW11bHRpYWRkcmVzcyIsYikudGV4dCgpLnRyaW0oKSYmKCQoIiNtdWx0aXN0ZXAtbXVsdGlhZGRyZXNzIixiKS5hcHBlbmQoZC5odG1sKCkpLCIiIT09YS5mb3JtZGF0YS5jdXJyZW50TWFrZSYmInVuZGVmaW5lZCIhPT10eXBlb2YgbXVsdGlEZWFsZXJTZWxlY3QmJgooZD0kKCIjbXVsdGlzdGVwLW11bHRpYWRkcmVzcyIsYikuZmluZCgic2VsZWN0IiksbXVsdGlEZWFsZXJTZWxlY3QuZmlsdGVyKGQpLmJ5TWFrZShhLmZvcm1kYXRhLmN1cnJlbnRNYWtlKSksJCgiI211bHRpc3RlcC1tdWx0aWFkZHJlc3MiLGIpLmZpbmQoInNlbGVjdCIpLm9uKCJjaGFuZ2UiLGZ1bmN0aW9uKCl7JCh0aGlzKS5jc3MoImJvcmRlci1jb2xvciIsIiIpO2EuZm9ybWRhdGEubXVsdGlfZGVhbGVyX3NlbmRUbz0kKHRoaXMpLnZhbCgpO2suY2hlY2tWYWxpZGl0eSgpfSkpfX0sbXVsdGlEZWFsZXJGb3JtU3RhdHVzOmZ1bmN0aW9uKCl7cmV0dXJuIDA9PT0kKCIjbXVsdGktYWRkcmVzcy1zdWJtaXNzaW9uIikubGVuZ3RoPyEwOiIiIT09YS5mb3JtZGF0YS5tdWx0aV9kZWFsZXJfc2VuZFRvfSxlbWFpbEJvZHlGb3JNdWx0aURlYWxlcjpmdW5jdGlvbihkKXtpZigwPT09JCgiI211bHRpLWFkZHJlc3Mtc3VibWlzc2lvbiIpLmxlbmd0aClyZXR1cm4gZDt2YXIgYz0kKCIjbXVsdGlzdGVwLW11bHRpYWRkcmVzcyIsCmIpLmZpbmQoInNlbGVjdCA6c2VsZWN0ZWQiKSxlPSQoIiNwb3N0TGVhZExhYmVsIikudmFsKCk7InVuZGVmaW5lZCIhPT10eXBlb2YgZSYmYy5sZW5ndGg\/KGU9ZS5yZXBsYWNlKCJ7JE1VTFRJREVBTEVSTkFNRX0iLGMudGV4dCgpKS5yZXBsYWNlKCJ7JFBPU1RfTEVBRF9FTUFJTFN9IiwiIiksZD1kLnJlcGxhY2UoInskREVBTEVSX1NFTkRUT30iLGUpKTokKCdpbnB1dFtkYXRhLWZvcnZhcj0iT1ZFUldSSVRURVJERUFMRVIiXScpLmxlbmd0aCYmIiIhPSQoJ2lucHV0W2RhdGEtZm9ydmFyPSJPVkVSV1JJVFRFUkRFQUxFUiJdJykudmFsKCkmJiQoJ2lucHV0W2RhdGEtZm9ydmFyPSJERUFMRVIiXScpLmxlbmd0aCYmJCgnaW5wdXRbZGF0YS1mb3J2YXI9Ik9WRVJXUklUVEVSREVBTEVSIl0nKS52YWwoKSE9JCgnaW5wdXRbZGF0YS1mb3J2YXI9IkRFQUxFUiJdJykudmFsKCk\/KGM9JCgiYm9keSIpLmhhc0NsYXNzKCJGUkVOQ0giKT8iQ29uY2Vzc2lvbiBv77+9IGVzdCBzaXR177+9IGxlIHbvv71oaWN1bGU6ICI6CiJEZWFsZXIgd2hlcmUgdGhlIHZlaGljbGUgaXMgbG9jYXRlZDogIixjKz0kKCdpbnB1dFtkYXRhLWZvcnZhcj0iT1ZFUldSSVRURVJERUFMRVIiXScpLnZhbCgpLGQ9ZC5yZXBsYWNlKCJ7JERFQUxFUl9TRU5EVE99IixjKSk6ZD1kLnJlcGxhY2UoLzxiclxzP1wvPntcJERFQUxFUl9TRU5EVE99KGJyXHM\/XC8pPy8sIiIpLnJlcGxhY2UoInskREVBTEVSX1NFTkRUT30iLCIiKTtyZXR1cm4gZH0sY2hlY2tWYWxpZGl0eTpmdW5jdGlvbigpe2lmKGEudmFsaWRhdGlvblJ1bGVzLmhhc093blByb3BlcnR5KCJzdGVwIithLnN0ZXApKWZvcih2YXIgZD0wO2Q8YS52YWxpZGF0aW9uUnVsZXNbInN0ZXAiK2Euc3RlcF0ubGVuZ3RoO2QrKylpZihrW2EudmFsaWRhdGlvblJ1bGVzWyJzdGVwIithLnN0ZXBdW2RdLmZ1bmNdKGEuZm9ybWRhdGFbYS52YWxpZGF0aW9uUnVsZXNbInN0ZXAiK2Euc3RlcF1bZF0udmFsdWVdKSkkKCIjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybV9uZXh0X2J0biBidXR0b24jZmluYW5jZV9tdWx0aXN0ZXBfZm9ybV9uZXh0X2J1dHRvbiIsCmIpLmFkZENsYXNzKCJpc1ZhbGlkIiksJCgiI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm1fbmV4dF9idG4gYnV0dG9uI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm1fbmV4dF9idXR0b25fY29uc2VudFZXIixiKS5hZGRDbGFzcygiaXNWYWxpZCIpO2Vsc2V7JCgiI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm1fbmV4dF9idG4gYnV0dG9uI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm1fbmV4dF9idXR0b24iLGIpLnJlbW92ZUNsYXNzKCJpc1ZhbGlkIik7JCgiI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm1fbmV4dF9idG4gYnV0dG9uI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm1fbmV4dF9idXR0b25fY29uc2VudFZXIixiKS5yZW1vdmVDbGFzcygiaXNWYWxpZCIpO2JyZWFrfWVsc2UgJCgiI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm1fbmV4dF9idG4gYnV0dG9uI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm1fbmV4dF9idXR0b24iLGIpLmFkZENsYXNzKCJpc1ZhbGlkIiksJCgiI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm1fbmV4dF9idG4gYnV0dG9uI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm1fbmV4dF9idXR0b25fY29uc2VudFZXIiwKYikuYWRkQ2xhc3MoImlzVmFsaWQiKX0scG9wdXBMYXVuY2hlZFRyYWNrOmZ1bmN0aW9uKCl7aCgiUG9wdXAgbGF1bmNoZWQiKTshay51c2VySWQoKSYmYS5maXJzdFN0ZXAmJmxvY2FsU3RvcmFnZS5zZXRJdGVtKCJmaW5hbmNlX211bHRpc3RlcC5saW5lYXJfc3RlcCIsMSk7ay5zdGVwVHJpZ2dlcighMSl9LHN0ZXAyVmlld2VkVHJhY2s6ZnVuY3Rpb24oKXtoKCJTdGVwIDIgdmlld2VkIil9LGVtYWlsU3RlcFZpZXdlZFRyYWNrOmZ1bmN0aW9uKCl7aCgiRW1haWwgc3RlcCB2aWV3ZWQiKX0scGhvbmVTdGVwVmlld2VkVHJhY2s6ZnVuY3Rpb24oKXtoKCJQaG9uZSBzdGVwIHZpZXdlZCIpfSxlbWFpbFByb3ZpZGVkVHJhY2s6ZnVuY3Rpb24oKXtoKCJFbWFpbCBwcm92aWRlZCIpfSxwaG9uZVByb3ZpZGVkVHJhY2s6ZnVuY3Rpb24oKXtoKCJQaG9uZSBwcm92aWRlZCIpfSxzdGVwVHJpZ2dlcjpmdW5jdGlvbihkKXtkPXtzdGVwOmEuZ2V0TGluZWFyc3RlcChkKSxtYWtlOmEuZm9ybWRhdGEuY3VycmVudE1ha2UsCm1vZGVsOmEuZm9ybWRhdGEuY3VycmVudE1vZGVsLHllYXI6YS5mb3JtZGF0YS5jdXJyZW50WWVhcixib2R5VHlwZTphLmZvcm1kYXRhLnZlaGljbGVUeXBlLHNhbGVzRGVwdDphLmZvcm1kYXRhLnZlaGljbGVTYWxlc0RlcHQsdmVoaWNsZUNvbG9yOmEuZm9ybWRhdGEudmVoaWNsZUNvbG9yLHZlaGljbGVQcmljZTphLmZvcm1kYXRhLnZlaGljbGVQcmljZSx2ZWhpY2xlVGFuc21pc3Npb246YS5mb3JtZGF0YS52ZWhpY2xlVGFuc21pc3Npb24sdmVoaWNsZVRyaW06YS5mb3JtZGF0YS52ZWhpY2xlVHJpbX07JCgiI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0iLGIpLnRyaWdnZXIoImZvcm0uc3RlcCIsZCk7YS5maXJzdFN0ZXA9ITF9fTt3aW5kb3cuYXBwVGVzdD1hO3ZhciBWOyQoIiNmaW5hbmNlX211bHRpc3RlcF9mb3JtIGlucHV0LCAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSBzZWxlY3QsICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIHRleHRhcmVhIikub24oImNoYW5nZSBpbnB1dCIsZnVuY3Rpb24oKXtjbGVhclRpbWVvdXQoVik7ClY9c2V0VGltZW91dChrLmNoZWNrVmFsaWRpdHksNTAwKX0pOyQoJyNmaW5hbmNlX211bHRpc3RlcF9mb3JtIGlucHV0W3R5cGU9Im51bWJlciJdJykub24oImZvY3VzIixmdW5jdGlvbigpeyQodGhpcykudHJpZ2dlcigic2VsZWN0Iil9KTtyZXR1cm57c3RhcnQ6UCxoYXNVc2VyOmsuaGFzVXNlcn19CiQoZnVuY3Rpb24oKXskKGRvY3VtZW50KS5vbigicmV2ZWFsOm9wZW4iLCIjZmluYW5jZU11bHRpc3RlcFBvcHVwQ29udGFpbmVyIixmdW5jdGlvbigpeyQoZG9jdW1lbnQpLnRyaWdnZXIoImNyZWRpdC5tdWx0aXN0ZXBwb3B1cC5zdGFydCIpfSk7JChkb2N1bWVudCkub24oInJldmVhbDpvcGVuIiwiI2ZpbmFuY2VNdWx0aXN0ZXBJbnN0YW50UG9wdXBDb250YWluZXIiLGZ1bmN0aW9uKCl7JChkb2N1bWVudCkudHJpZ2dlcigiY3JlZGl0Lm11bHRpc3RlcHBvcHVwLnN0YXJ0Iil9KTskKGRvY3VtZW50KS5vbigiY2xpY2siLCIjZmluYW5jZU11bHRpc3RlcEluc3RhbnRQb3B1cENvbnRhaW5lciAjZHJWaWV3RGlzY2xhaW1lckxpbmsiLGZ1bmN0aW9uKCl7JCgiI2ZpbmFuY2VNdWx0aXN0ZXBJbnN0YW50UG9wdXBDb250YWluZXIgI2RyRGlzY2xhaW1lckRyYXdlciIpLnNob3coKTskKCIjZmluYW5jZU11bHRpc3RlcEluc3RhbnRQb3B1cENvbnRhaW5lciAjZHJEaXNjbGFpbWVyRHJhd2VyIikuYWRkQ2xhc3MoIm9wZW4iKX0pOwokKGRvY3VtZW50KS5vbigiY2xpY2siLCIjZmluYW5jZU11bHRpc3RlcEluc3RhbnRQb3B1cENvbnRhaW5lciAuY2xvc2VEUkRpc2NsYWltZXJEcmF3ZXIiLGZ1bmN0aW9uKCl7JCgiI2ZpbmFuY2VNdWx0aXN0ZXBJbnN0YW50UG9wdXBDb250YWluZXIgI2RyRGlzY2xhaW1lckRyYXdlciIpLnJlbW92ZUNsYXNzKCJvcGVuIik7JCgiI2ZpbmFuY2VNdWx0aXN0ZXBJbnN0YW50UG9wdXBDb250YWluZXIgI2RyRGlzY2xhaW1lckRyYXdlciIpLmhpZGUoKX0pfSk7Ci8qKiAvbS9qcy9jYWxjdWxhdG9yRnVuY3Rpb25zLmpzICoqLwp2YXIgX19fZDJjX2NhbGN1bGF0b3JGdW5jdGlvbnNqc19jX29uPSIyMDI2LTAyLTIwIDExOjMwOjE4IjsndXNlIHN0cmljdCc7Y2xhc3MgY2FsY3VsYXRvckZ1bmN0aW9uc3tjb25zdHJ1Y3RvcihhKXt0aGlzLnBhcmVudD1hO3RoaXMucGFyZW50TmFtZT10aGlzLnBhcmVudC5yZXBsYWNlKCIjIiwiIik7dGhpcy5zZXRUcmlnZ2VycygpfWluaXQoYSxlLGIsZixtLGcsaCxwLG4pe3ZhciBxPXRoaXMucGFyZW50O3RoaXMuc3R5bGVpZD1hO3RoaXMucGF5bWVudFR5cGU9ZTt0aGlzLnRyYWRlSW5WYWx1ZT0kKHErIiAucGF5bWVudENhbGN1bGF0b3JUcmFkZUluRmluYWwiKS52YWwoKT9wYXJzZUludCgkKHErIiAucGF5bWVudENhbGN1bGF0b3JUcmFkZUluRmluYWwiKS52YWwoKSk6MDt0aGlzLmRvd25wYXltZW50PTA+Yi10aGlzLnRyYWRlSW5WYWx1ZT8wOmItdGhpcy50cmFkZUluVmFsdWU7dGhpcy5vcHRpb25zQW1vdW50PWY7dGhpcy5wYXltZW50RnJlcXVlbmN5PW07dGhpcy5rbUFsbG93YW5jZT1nO3RoaXMuaXNJbnZlbnRvcnk9aD9oOiExO3RoaXMuc249cD9wOiIiO3RoaXMudmluPW4\/Cm46IiI7dGhpcy5sb2FkUGF5bWVudHMoITApfXNldEluaXRpYWxWaWV3KGEpe3ZhciBlPXRoaXMucGFyZW50LGI9dGhpczskKGUrIiAucGF5bWVudENhbGN1bGF0b3JLbUFsbG93YW5jZSBvcHRpb24iKS5yZW1vdmUoKTskKGUrIiAucGF5bWVudENhbGN1bGF0b3JEb3duUGF5bWVudCIpLnZhbCh0aGlzLmRvd25wYXltZW50KTskKGUrIiAucGF5bWVudENhbGN1bGF0b3JJbnRlcnZhbCIpLnZhbChhLmN1cnJlbnRQYXltZW50WzBdLmludGVydmFsKTtsZXQgZj0ibGVhc2UiPT1hLmN1cnJlbnRQYXltZW50WzBdLnR5cGU\/ImxlYXNpbmciOiJmaW5hbmNpbmciOyQoZSsiIC5wYXltZW50Q2FsY3VsYXRvclBheW1lbnRUeXBlIGxpIikucmVtb3ZlQ2xhc3MoImFjdGl2ZVBheW1lbnRUeXBlIik7JChlKyIgLnBheW1lbnRDYWxjdWxhdG9yUGF5bWVudFR5cGUgbGlbZGF0YS10eXBlPSciK2YrIiddIikuYWRkQ2xhc3MoImFjdGl2ZVBheW1lbnRUeXBlIik7MD09YS5maW5hbmNlLmxlbmd0aD8kKGUrCiIgLnBheW1lbnRDYWxjdWxhdG9yUGF5bWVudFR5cGVGaW5hbmNlIikuaGlkZSgpOiQoZSsiIC5wYXltZW50Q2FsY3VsYXRvclBheW1lbnRUeXBlRmluYW5jZSIpLnNob3coKTtpZigwPT1hLmxlYXNlLmxlbmd0aCkkKGUrIiAucGF5bWVudENhbGN1bGF0b3JQYXltZW50VHlwZUxlYXNlIikuaGlkZSgpO2Vsc2V7JChlKyIgLnBheW1lbnRDYWxjdWxhdG9yUGF5bWVudFR5cGVMZWFzZSIpLnNob3coKTtsZXQgZz1bXTthLmxlYXNlLmZvckVhY2goZnVuY3Rpb24oaCl7LTE9PSQuaW5BcnJheShoLmttX2FsbG93YW5jZSxnKSYmZy5wdXNoKGgua21fYWxsb3dhbmNlKX0pO2cuZm9yRWFjaChmdW5jdGlvbihoKXtsZXQgcD1iLnBheW1lbnRDYWxjdWxhdG9yRm9ybWF0TnVtYmVyKGgudG9GaXhlZCgwKSk7JChlKyIgLnBheW1lbnRDYWxjdWxhdG9yS21BbGxvd2FuY2UiKS5hcHBlbmQobmV3IE9wdGlvbihwKyIga20iLGgpKX0pO3ZhciBtPTJFNDthLmN1cnJlbnRQYXltZW50WzBdJiYidW5kZWZpbmVkIiE9PQp0eXBlb2YgYS5jdXJyZW50UGF5bWVudFswXS5rbV9hbGxvd2FuY2UmJihtPTA8YS5jdXJyZW50UGF5bWVudFswXS5rbV9hbGxvd2FuY2U\/YS5jdXJyZW50UGF5bWVudFswXS5rbV9hbGxvd2FuY2U6MkU0KTskKGUrIiAucGF5bWVudENhbGN1bGF0b3JLbUFsbG93YW5jZSIpLnZhbChtKX10aGlzLmttQWxsb3dhbmNlPSQoZSsiIC5wYXltZW50Q2FsY3VsYXRvckttQWxsb3dhbmNlIikudmFsKCk7ImxlYXNpbmciPT1mPyQoZSsiIC5wYXltZW50Q2FsY3VsYXRvckttQWxsb3dhbmNlQ29udGFpbmVyIikuc2hvdygpOiQoZSsiIC5wYXltZW50Q2FsY3VsYXRvckttQWxsb3dhbmNlQ29udGFpbmVyIikuaGlkZSgpOyQoImJvZHkiKS5vbigiY2xpY2sgdGFwIixlKyIgLmZpbmFuY2luZy1vcHRpb24ucGF5bWVudENhbGN1bGF0b3JQYXltZW50V3JhcHBlciAqIixmdW5jdGlvbigpeyQodGhpcykuZmluZCgnaW5wdXRbbmFtZT0ic2VsZWN0ZWRQYXltZW50Il0nKS5wcm9wKCJjaGVja2VkIiwiY2hlY2tlZCIpLnRyaWdnZXIoImNoYW5nZSIpfSk7CiQoImJvZHkiKS5vbigiY2hhbmdlIixlKycgaW5wdXRbbmFtZT0ic2VsZWN0ZWRQYXltZW50Il0nLGZ1bmN0aW9uKCl7dmFyIGc9JCh0aGlzKS52YWwoKSxoPSQodGhpcykuYXR0cigiZGF0YS1yYXRldHlwZSIpOyQoZSsiIC5maW5hbmNpbmctb3B0aW9uIikucmVtb3ZlQ2xhc3MoInNlbGVjdGVkIik7JCgnaW5wdXRbbmFtZT0ic2VsZWN0ZWRQYXltZW50V2l0aFRheGVzIl1bdmFsdWU9IicrZysnIl1bZGF0YS1yYXRldHlwZT0iJytoKyciXScpLmNsb3Nlc3QoIi5maW5hbmNpbmctb3B0aW9uIikuYWRkQ2xhc3MoInNlbGVjdGVkIik7JCgnaW5wdXRbbmFtZT0ic2VsZWN0ZWRQYXltZW50V2l0aFRheGVzIl1bdmFsdWU9IicrZysnIl1bZGF0YS1yYXRldHlwZT0iJytoKyciXScpLnByb3AoImNoZWNrZWQiLCEwKTskKHRoaXMpLmNsb3Nlc3QoIi5maW5hbmNpbmctb3B0aW9uIikuYWRkQ2xhc3MoInNlbGVjdGVkIil9KTskKCJib2R5Iikub24oImNoYW5nZSIsZSsnIGlucHV0W25hbWU9InNlbGVjdGVkUGF5bWVudFdpdGhUYXhlcyJdJywKZnVuY3Rpb24oKXt2YXIgZz0kKHRoaXMpLnZhbCgpLGg9JCh0aGlzKS5hdHRyKCJkYXRhLXJhdGV0eXBlIik7JChlKyIgLmZpbmFuY2luZy1vcHRpb24iKS5yZW1vdmVDbGFzcygic2VsZWN0ZWQiKTskKCdpbnB1dFtuYW1lPSJzZWxlY3RlZFBheW1lbnQiXVt2YWx1ZT0iJytnKyciXVtkYXRhLXJhdGV0eXBlPSInK2grJyJdJykuY2xvc2VzdCgiLmZpbmFuY2luZy1vcHRpb24iKS5hZGRDbGFzcygic2VsZWN0ZWQiKTskKCdpbnB1dFtuYW1lPSJzZWxlY3RlZFBheW1lbnQiXVt2YWx1ZT0iJytnKyciXVtkYXRhLXJhdGV0eXBlPSInK2grJyJdJykucHJvcCgiY2hlY2tlZCIsITApOyQodGhpcykuY2xvc2VzdCgiLmZpbmFuY2luZy1vcHRpb24iKS5hZGRDbGFzcygic2VsZWN0ZWQiKX0pfXNldFRyaWdnZXJzKCl7dmFyIGE9dGhpcy5wYXJlbnQsZT10aGlzOyQoYSsiIC5wYXltZW50Q2FsY3VsYXRvclBheW1lbnRUeXBlIGxpIikub2ZmKCJjbGljayIpOyQoYSsiIC5wYXltZW50Q2FsY3VsYXRvckluY2x1ZGVUYXhDaGVjayIpLm9mZigiY2hhbmdlIik7CiQoYSsiIC5wYXltZW50Q2FsY3VsYXRvckludGVydmFsIikub2ZmKCJjaGFuZ2UiKTskKGErIiAucGF5bWVudENhbGN1bGF0b3JLbUFsbG93YW5jZSIpLm9mZigiY2hhbmdlIik7JChhKyIgLnBheW1lbnRDYWxjdWxhdG9yRG93blBheW1lbnQiKS5vZmYoImJsdXIiKTskKGErIiAucGF5bWVudENhbGN1bGF0b3JUcmFkZUluRmluYWwiKS5vZmYoImJsdXIiKTskKGErIiAucGF5bWVudENhbGN1bGF0b3JQYXltZW50VHlwZSBsaSIpLm9uKCJjbGljayIsZnVuY3Rpb24oKXskKGErIiAucGF5bWVudENhbGN1bGF0b3JQYXltZW50VHlwZSBsaSIpLnJlbW92ZUNsYXNzKCJhY3RpdmVQYXltZW50VHlwZSIpOyQodGhpcykuYWRkQ2xhc3MoImFjdGl2ZVBheW1lbnRUeXBlIik7ZS5wYXltZW50VHlwZT0kKHRoaXMpLmF0dHIoImRhdGEtdHlwZSIpOyJsZWFzaW5nIj09JCh0aGlzKS5hdHRyKCJkYXRhLXR5cGUiKT8kKGErIiAucGF5bWVudENhbGN1bGF0b3JLbUFsbG93YW5jZUNvbnRhaW5lciIpLnNob3coKToKJChhKyIgLnBheW1lbnRDYWxjdWxhdG9yS21BbGxvd2FuY2VDb250YWluZXIiKS5oaWRlKCk7ZS5sb2FkUGF5bWVudHMoKX0pOyQoYSsiIC5wYXltZW50Q2FsY3VsYXRvckluY2x1ZGVUYXhDaGVjayIpLm9uKCJjaGFuZ2UiLGZ1bmN0aW9uKCl7JCh0aGlzKS5pcygiOmNoZWNrZWQiKT8oJChhKyIgLnBheW1lbnRDYWxjdWxhdG9yUGF5bWVudENvbnRhaW5lciIpLmhpZGUoKSwkKGErIiAucGF5bWVudENhbGN1bGF0b3JQYXltZW50Q29udGFpbmVyV2l0aFRheGVzIikuc2hvdygpKTooJChhKyIgLnBheW1lbnRDYWxjdWxhdG9yUGF5bWVudENvbnRhaW5lcldpdGhUYXhlcyIpLmhpZGUoKSwkKGErIiAucGF5bWVudENhbGN1bGF0b3JQYXltZW50Q29udGFpbmVyIikuc2hvdygpKX0pOyQoYSsiIC5wYXltZW50Q2FsY3VsYXRvckluY2x1ZGVUYXhDaGVjayIpLnRyaWdnZXIoImNoYW5nZSIpOyQoYSsiIC5wYXltZW50Q2FsY3VsYXRvckludGVydmFsIikub24oImNoYW5nZSIsZnVuY3Rpb24oKXtlLnBheW1lbnRGcmVxdWVuY3k9CiQodGhpcykudmFsKCk7ZS5sb2FkUGF5bWVudHMoKX0pOyQoYSsiIC5wYXltZW50Q2FsY3VsYXRvckttQWxsb3dhbmNlIikub24oImNoYW5nZSIsZnVuY3Rpb24oKXtlLmttQWxsb3dhbmNlPSQodGhpcykudmFsKCk7ZS5sb2FkUGF5bWVudHMoKX0pOyQoYSsiIC5wYXltZW50Q2FsY3VsYXRvckRvd25QYXltZW50Iikub24oImJsdXIiLGZ1bmN0aW9uKCl7bGV0IGI9cGFyc2VJbnQoJCh0aGlzKS52YWwoKSk\/cGFyc2VJbnQoJCh0aGlzKS52YWwoKSk6MDtlLmRvd25wYXltZW50PWI7ZS5sb2FkUGF5bWVudHMoKX0pOyQoYSsiIC5wYXltZW50Q2FsY3VsYXRvclRyYWRlSW5GaW5hbCIpLm9uKCJibHVyIixmdW5jdGlvbigpe2xldCBiPXBhcnNlSW50KCQodGhpcykuYXR0cigibWF4IikpfHwwLGY9cGFyc2VJbnQoJCh0aGlzKS52YWwoKSl8fDA7Zj1mPmI\/YjpmOyQodGhpcykudmFsKGYpO2UudHJhZGVJblZhbHVlPWY7X2xvY2FsU3RvcmFnZVNldCgidHJhZGVpbl9jdXJyZW50X3ZhbHVlIiwKSlNPTi5zdHJpbmdpZnkoe3ZhbHVlOmZ9KSwxKTtlLmxvYWRQYXltZW50cygpfSl9bG9hZFBheW1lbnRzKGEpe2E9YT9hOiExO2xldCBlPSgkKCJib2R5IikuaGFzQ2xhc3MoIkVOR0xJU0giKT8iL2VuIjoiL2ZyIikrIi9hamF4L2dldFBheW1lbnREYXRhRm9yU3R5bGVJRD93c3dpZHRoPTAiO3ZhciBiPXRoaXM7Yi50cmFkZUluVmFsdWU9cGFyc2VJbnQoJChiLnBhcmVudCsiIC5wYXltZW50Q2FsY3VsYXRvclRyYWRlSW5GaW5hbCIpLnZhbCgpPyQoYi5wYXJlbnQrIiAucGF5bWVudENhbGN1bGF0b3JUcmFkZUluRmluYWwiKS52YWwoKTowKTskLmFqYXgoe3VybDplLHR5cGU6IlBPU1QiLGRhdGFUeXBlOiJKU09OIixkYXRhOntzdHlsZWlkOmIuc3R5bGVpZCxwYXltZW50VHlwZTpiLnBheW1lbnRUeXBlLGRvd25wYXltZW50OmIuZG93bnBheW1lbnQrYi50cmFkZUluVmFsdWUsb3B0aW9uc0Ftb3VudDpiLm9wdGlvbnNBbW91bnQscGF5bWVudEZyZXF1ZW5jeTpiLnBheW1lbnRGcmVxdWVuY3ksCmttQWxsb3dhbmNlOmIua21BbGxvd2FuY2Usb3B0aW9uczpiLm9wdGlvbnNBbW91bnQsaXNJbnZlbnRvcnk6Yi5pc0ludmVudG9yeSxzbjpiLnNuLHZpbjpiLnZpbixmb3JjZVRheGVzOiEwfSxzdWNjZXNzOmZ1bmN0aW9uKGYpe2YuY3VycmVudFBheW1lbnQmJmYuY3VycmVudFBheW1lbnQubGVuZ3RoPyhhJiZiLnNldEluaXRpYWxWaWV3KGYpLCJ1bmRlZmluZWQiIT09dHlwZW9mIGNhbGNDdXJQYXltZW50JiYoY2FsY0N1clBheW1lbnQ9ZiksYi5zaG93UGF5bWVudHMoZi5jdXJyZW50UGF5bWVudCxmLnBheW1lbnRGZWVzLGYubWFrZWlkLGYpLCQoImJvZHkgIitiLnBhcmVudCkudHJpZ2dlcigicGF5bWVudHNSZWFkeSIpKTokKCJib2R5ICIrYi5wYXJlbnQpLnRyaWdnZXIoIm5vUGF5bWVudCIpfX0pfXNob3dQYXltZW50cyhhLGUsYixmKXt2YXIgbT10aGlzOyQobS5wYXJlbnQrIiAucGF5bWVudENhbGN1bGF0b3JQYXltZW50Q29udGFpbmVyIikuaHRtbCgiIik7JChtLnBhcmVudCsKIiAucGF5bWVudENhbGN1bGF0b3JQYXltZW50Q29udGFpbmVyV2l0aFRheGVzIikuaHRtbCgiIik7bGV0IGc9IjEiPT0kKCIjcGF5bWVudENhbGN1bGF0b3JSb3VuZFBheW1lbnQiKS52YWwoKT8wOjI7IjEiPT0kKCIjcGF5bWVudENhbGN1bGF0b3JTdHJpa2VQYXltZW50IikudmFsKCkmJiQoIiNwYXltZW50Q2FsY3VsYXRvclN0cmlrZVBheW1lbnRPcHRpb24iKS52YWwoKTtsZXQgaD1bXSxwPSQoIiNvZW1DZXJ0aWZpY2F0aW9uIikudmFsKCl8fDA7NTxhLmxlbmd0aD9hLmZvckVhY2goZnVuY3Rpb24oayl7KDA9PWsudGVybSUxMnx8NjQ9PWsudGVybXx8NDA9PWImJjUxPT1rLnRlcm18fDIwPT1iJiZbMjcsMzAsMzksNDJdLmluY2x1ZGVzKGsudGVybSl8fFsxNiwyMV0uaW5jbHVkZXMoYil8fDQyPT1rLnRlcm0mJjEwMTQ9PXB8fFszMCw0Ml0uaW5jbHVkZXMoay50ZXJtKSYmWzQ3MTU2Miw0NzE1NjMsNDcxNTY0XS5pbmNsdWRlcyhwYXJzZUludChzZXR0aW5ncy5zdHlsZWlkKSl8fAoyNz09ay50ZXJtJiYyNz09Ynx8NTI9PWsudGVybSYmMzk9PWIpJiZoLnB1c2goayl9KTpoPWE7dmFyIG49e30scT0hMTtoLmZvckVhY2goZnVuY3Rpb24oayxsKXtPYmplY3QuaGFzT3duKG4say50ZXJtKT9xPSEwOm5bay50ZXJtXT17fTtuW2sudGVybV1bay5yYXRlX3R5cGVdPWx9KTt2YXIgSD1bXTthWzBdJiYibGVhc2UiPT1hWzBdLnR5cGUmJiJ1bmRlZmluZWQiIT09dHlwZW9mIGFbMF0ua21fYWxsb3dhbmNlJiYoYT0wPGFbMF0ua21fYWxsb3dhbmNlP2FbMF0ua21fYWxsb3dhbmNlOjJFNCwkKG0ucGFyZW50KyIgLnBheW1lbnRDYWxjdWxhdG9yS21BbGxvd2FuY2UiKS52YWwoYSksdGhpcy5rbUFsbG93YW5jZT0kKG0ucGFyZW50KyIgLnBheW1lbnRDYWxjdWxhdG9yS21BbGxvd2FuY2UiKS52YWwoKSk7bGV0IEk9Zi50b3RhbEluY2VudGl2ZSxKPXE\/JCgiI0xPV0VTVFBBWU1FTlRfTEFCRUwiKS52YWwoKToiIixLPXE\/JCgiI0xPV0VTVFJBVEVfTEFCRUwiKS52YWwoKToiIiwKVj0wOyQuZWFjaChoLGZ1bmN0aW9uKGssbCl7aWYoIUguaW5jbHVkZXMobC50ZXJtKSl7SC5wdXNoKGwudGVybSk7dmFyIGQ9InN0YW5kYXJkIj09bC5yYXRlX3R5cGV8fDI+T2JqZWN0LmtleXMobltsLnRlcm1dKS5sZW5ndGg\/bDpoW25bbC50ZXJtXS5zdGFuZGFyZF0sYz0yPT1PYmplY3Qua2V5cyhuW2wudGVybV0pLmxlbmd0aD9oW25bbC50ZXJtXS5zdWJ2ZW50ZWRdOiExLHg9Mj09T2JqZWN0LmtleXMobltsLnRlcm1dKS5sZW5ndGg\/bltsLnRlcm1dLnN1YnZlbnRlZDohMSx2PWwudGVybSx5PWwuZG93bnBheW1lbnQudG9GaXhlZCgwKSxCPWQucGF5bWVudC50b0ZpeGVkKGcpLFc9ZC5wYXltZW50LnRvRml4ZWQoZyk7Qj1CLnJlcGxhY2UoL1wuKFswLTldKikvLGZ1bmN0aW9uKEMsdyl7cmV0dXJuJzxzdXAgY2xhc3M9InBkIj4nK3crIjwvc3VwPiJ9KTtsPWQucGF5bWVudFdpdGhUYXhlcy50b0ZpeGVkKGcpO3ZhciBYPWQucGF5bWVudFdpdGhUYXhlcy50b0ZpeGVkKGcpO2w9CmwucmVwbGFjZSgvXC4oWzAtOV0qKS8sZnVuY3Rpb24oQyx3KXtyZXR1cm4nPHN1cCBjbGFzcz0icGQiPicrdysiPC9zdXA+In0pO3ZhciBMPWQucmF0ZSxZPSJwYXltZW50IitrO2s9InBheW1lbnQiK2srIndpdGhUYXhlcyI7dj0kKCJib2R5IikuaGFzQ2xhc3MoIkVOR0xJU0giKT8iPHNwYW4+Iit2KyI8L3NwYW4+IG1vbnRoIjoiPHNwYW4+Iit2KyI8L3NwYW4+IG1vaXMiO3k9YDxzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiPiR7eX08L3NwYW4+YCsoJCgiYm9keSIpLmhhc0NsYXNzKCJFTkdMSVNIIik\/IiBkb3duIHBheW1lbnQiOiIgY29tcHRhbnQiKTt2YXIgTT0iIiE9JCgiI2Rpc2NsYWltZXJQcmljZVRleHQiKS52YWwoKT8iPGRpdj4iKyQoIiNkaXNjbGFpbWVyUHJpY2VUZXh0IikudmFsKCkrIjwvZGl2PiI6Iit0eCIsej1kLmNhbGN1bGF0ZWRFZmZlY3RpdmVSYXRlP2QuY2FsY3VsYXRlZEVmZmVjdGl2ZVJhdGU6MCxEPSIiOzA8cGFyc2VGbG9hdCh6KS1kLnJhdGUmJihEKz0KbS5mb3JtYXRFZmZlY3RpdmVSYXRlVGV4dENhbGMoeiwiIiwnY2xhc3M9Ii1mczEwIicpKTt2YXIgTj1kLnRvdGFsT2JsaWdhdGlvbkFtb3VudD9kLnRvdGFsT2JsaWdhdGlvbkFtb3VudDowLE89J2RhdGEtdG9vbHRpcD0iJytkLnRvb2x0aXArJyInLFA9J2RhdGEtdG9vbHRpcD0iJytkLnRvb2x0aXBXaXRoVGF4ZXMrJyInLHIsWj1udWxsIT0ocj1kLm0yZF9maW5hbmNlKT9yOkk7cj0ic2luZ2xlLWNvbHVtbiI7dmFyIEU9InNtYWxsLWJveCIsdD0iIix1PSIiO2lmKGMpe3I9ImxlZnQtc2VjdGlvbiI7RT0iIjt0PWMucGF5bWVudC50b0ZpeGVkKGcpO2xldCBDPWMucGF5bWVudC50b0ZpeGVkKGcpO3Q9dC5yZXBsYWNlKC9cLihbMC05XSopLyxmdW5jdGlvbihhYSxGKXtyZXR1cm4nPHN1cCBjbGFzcz0icGQiPicrRisiPC9zdXA+In0pO3U9Yy5wYXltZW50V2l0aFRheGVzLnRvRml4ZWQoZyk7bGV0IHc9Yy5wYXltZW50V2l0aFRheGVzLnRvRml4ZWQoZyk7dT11LnJlcGxhY2UoL1wuKFswLTldKikvLApmdW5jdGlvbihhYSxGKXtyZXR1cm4nPHN1cCBjbGFzcz0icGQiPicrRisiPC9zdXA+In0pO3ZhciBRPWMucmF0ZS50b0ZpeGVkKDIpLGJhPSJwYXltZW50Iit4O3g9InBheW1lbnQiK3grIndpdGhUYXhlcyI7bGV0IEE9Yy5jYWxjdWxhdGVkRWZmZWN0aXZlUmF0ZT9jLmNhbGN1bGF0ZWRFZmZlY3RpdmVSYXRlOjAsRz0iIjswPHBhcnNlRmxvYXQoQSktYy5yYXRlJiYoRys9bS5mb3JtYXRFZmZlY3RpdmVSYXRlVGV4dENhbGMoQSwiIiwnY2xhc3M9Ii1mczEwIicpKTtsZXQgUj1jLnRvdGFsT2JsaWdhdGlvbkFtb3VudD9jLnRvdGFsT2JsaWdhdGlvbkFtb3VudDowLFM9J2RhdGEtdG9vbHRpcD0iJytjLnRvb2x0aXArJyInLFQ9J2RhdGEtdG9vbHRpcD0iJytjLnRvb2x0aXBXaXRoVGF4ZXMrJyInLFU9Yy5tMmRfZmluYW5jZTt0PSdcdDxkaXYgaWQ9IicrYmErJyIgY2xhc3M9InJpZ2h0LXNlY3Rpb24gcGF5bWVudENhbGN1bGF0b3JQYXltZW50V3JhcHBlckNvbnRhaW5lciIgJytTKyc+XHRcdDxkaXYgY2xhc3M9Imxvd2VzdC1yYXRlIj4nKwpRKyclIDxpIGNsYXNzPSJmYXMgZmEtaW5mby1jaXJjbGUgaW5mby1pY29uIHBheW1lbnRUb29sdGlwIHJpZ2h0VG9vbHRpcCIgJytTKyI+PC9pPiIrRysnPC9kaXY+XHRcdDxkaXYgY2xhc3M9ImFjdHVhbC1wYXltZW50Ij48c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIj4nK3QrJzwvc3Bhbj48L2Rpdj5cdFx0PGRpdiBjbGFzcz0iZGV0YWlsc1RheCI+JytNKyc8L2Rpdj5cdFx0PGRpdiBjbGFzcz0icmFkaW8tY29udGFpbmVyIHBheW1lbnRDYWxjdWxhdG9yUGF5bWVudFNlbGVjdCI+XHRcdFx0PGlucHV0XHRcdFx0XHRcdHR5cGU9InJhZGlvIlx0XHRcdFx0XHRuYW1lPSJzZWxlY3RlZFBheW1lbnQiXHRcdFx0XHRcdHZhbHVlPSInK2MudGVybSsnIlx0XHRcdFx0XHRkYXRhLWJhc2VwYXltZW50PSInK2MucGF5bWVudCsnIlx0XHRcdFx0XHRkYXRhLXJlYWxwYXltZW50PSInK2MucGF5bWVudCsnIlx0XHRcdFx0XHRkYXRhLXJhdGV0eXBlPSInK2MucmF0ZV90eXBlKyciXHRcdFx0XHRcdGRhdGEtZGlzcGxheWVkcGF5bWVudD0iJysKQysnIlx0XHRcdFx0XHRkYXRhLXJlc2lkdWFsPSInK2MucmVzaWR1YWwrJyJcdFx0XHRcdFx0ZGF0YS10b3RhbGludGVyZXN0PSInK2MudG90YWxJbnRlcmVzdCsnIlx0XHRcdFx0XHRkYXRhLWx1eGVUYXhBbW91bnQ9IicrYy5sdXhlVGF4QW1vdW50KyciXHRcdFx0XHRcdGRhdGEtZWZmZWN0aXZlUmF0ZT0iJytBKyciXHRcdFx0XHRcdGRhdGEtdG90YWxDb3N0PSInK1IrJyJcdFx0XHRcdFx0ZGF0YS1yYXRlPSInK2MucmF0ZSsnIiAgICAgICAgICAgICAgICAgZGF0YS1yZXNpZHVhbD0iJytjLnJlc2lkdWFsVmFsdWUrJyIgICAgICAgICAgICAgICAgIGRhdGEtdG90YWxpbmNlbnRpdmU9IicrVSsnIiAgICAgICAgICAgICAgICAgZGF0YS1pbml0aWFsUHJpY2U9IicrYy5pbml0aWFsUHJpY2UrJyIgICAgICAgICAgICAgICAgIGRhdGEtZmluYWxQcmljZT0iJytjLmZpbmFsUHJpY2UrJyIgICAgICAgICAgICAgICAgIGRhdGEtZmVlc0xpc3Q9IicrYnRvYShKU09OLnN0cmluZ2lmeShjLmZlZXNMaXN0KSkrCiciICAgICAgICAgICAgICAgICBkYXRhLWluY2VudGl2ZXNMaXN0PSInK2J0b2EoSlNPTi5zdHJpbmdpZnkoYy5pbmNlbnRpdmVzTGlzdCkpKyciICAgICAgICAgICAgICAgICBkYXRhLWdzdD0iMCIgICAgICAgICAgICAgICAgIGRhdGEtaHN0PSIwIiAgICAgICAgICAgICAgICAgZGF0YS1wc3Q9IjAiXHRcdFx0XHQ+XHRcdFx0PGxhYmVsIGNsYXNzPSJmaW5hbmNlQ2FsYyI+JytLKyI8L2xhYmVsPlx0XHQ8L2Rpdj5cdDwvZGl2PiI7dT0nXHQ8ZGl2IGlkPSInK3grJyIgY2xhc3M9InJpZ2h0LXNlY3Rpb24gcGF5bWVudENhbGN1bGF0b3JQYXltZW50V3JhcHBlckNvbnRhaW5lciIgJytUKyc+XHRcdDxkaXYgY2xhc3M9Imxvd2VzdC1yYXRlIj4nK1ErJyUgPGkgY2xhc3M9ImZhcyBmYS1pbmZvLWNpcmNsZSBpbmZvLWljb24gcGF5bWVudFRvb2x0aXAgcmlnaHRUb29sdGlwIiAnK1QrIj48L2k+IitHKyc8L2Rpdj5cdFx0PGRpdiBjbGFzcz0iYWN0dWFsLXBheW1lbnQiPjxzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiPicrCnUrJzwvc3Bhbj48L2Rpdj5cdFx0PGRpdiBjbGFzcz0icmFkaW8tY29udGFpbmVyIHBheW1lbnRDYWxjdWxhdG9yUGF5bWVudFNlbGVjdCI+XHRcdFx0PGlucHV0XHRcdFx0XHRcdHR5cGU9InJhZGlvIlx0XHRcdFx0XHRuYW1lPSJzZWxlY3RlZFBheW1lbnRXaXRoVGF4ZXMiXHRcdFx0XHRcdHZhbHVlPSInK2MudGVybSsnIlx0XHRcdFx0XHRkYXRhLWJhc2VwYXltZW50PSInK2MucGF5bWVudCsnIlx0XHRcdFx0XHRkYXRhLXJlYWxwYXltZW50PSInK2MucGF5bWVudFdpdGhUYXhlcysnIlx0XHRcdFx0XHRkYXRhLXJhdGV0eXBlPSInK2MucmF0ZV90eXBlKyciXHRcdFx0XHRcdGRhdGEtZGlzcGxheWVkcGF5bWVudD0iJyt3KyciXHRcdFx0XHRcdGRhdGEtcmVzaWR1YWw9IicrYy5yZXNpZHVhbFdpdGhUYXhlcysnIlx0XHRcdFx0XHRkYXRhLXRvdGFsaW50ZXJlc3Q9IicrYy50b3RhbEludGVyZXN0V2l0aFRheGVzKyciXHRcdFx0XHRcdGRhdGEtbHV4ZVRheEFtb3VudD0iJytjLmx1eGVUYXhBbW91bnQrCiciXHRcdFx0XHRcdGRhdGEtZWZmZWN0aXZlUmF0ZT0iJytBKyciXHRcdFx0XHRcdGRhdGEtdG90YWxDb3N0PSInK1IrJyJcdFx0XHRcdFx0ZGF0YS1yYXRlPSInK2MucmF0ZSsnIiAgICAgICAgICAgICAgICAgZGF0YS1yZXNpZHVhbD0iJytjLnJlc2lkdWFsVmFsdWVXaXRoVGF4ZXMrJyIgICAgICAgICAgICAgICAgIGRhdGEtdG90YWxpbmNlbnRpdmU9IicrVSsnIiAgICAgICAgICAgICAgICAgZGF0YS1pbml0aWFsUHJpY2U9IicrYy5pbml0aWFsUHJpY2UrJyIgICAgICAgICAgICAgICAgIGRhdGEtZmluYWxQcmljZT0iJytjLmZpbmFsUHJpY2UrJyIgICAgICAgICAgICAgICAgIGRhdGEtZmVlc0xpc3Q9IicrYnRvYShKU09OLnN0cmluZ2lmeShjLmZlZXNMaXN0KSkrJyIgICAgICAgICAgICAgICAgIGRhdGEtaW5jZW50aXZlc0xpc3Q9IicrYnRvYShKU09OLnN0cmluZ2lmeShjLmluY2VudGl2ZXNMaXN0KSkrJyIgICAgICAgICAgICAgICAgIGRhdGEtZ3N0PSInK2MuZ3N0KyciICAgICAgICAgICAgICAgICBkYXRhLWhzdD0iJysKYy5oc3QrJyIgICAgICAgICAgICAgICAgIGRhdGEtcHN0PSInK2MucHN0KyciXHRcdFx0XHQ+XHRcdFx0PGxhYmVsIGNsYXNzPSJmaW5hbmNlQ2FsYyI+JytLKyI8L2xhYmVsPlx0XHQ8L2Rpdj5cdDwvZGl2PiJ9Yz0nPGRpdiBjbGFzcz0iZmluYW5jaW5nLW9wdGlvbiBwYXltZW50Q2FsY3VsYXRvclBheW1lbnRXcmFwcGVyICcrRSsnIj5cdDxkaXYgY2xhc3M9InRlcm0iPicrdisnPC9kaXY+XHQ8ZGl2IGNsYXNzPSJkb3duLXBheW1lbnQiPicreSsnPC9kaXY+XHQ8ZGl2IGNsYXNzPSJzZXBhcmF0b3JQYXkiPjwvZGl2Plx0PGRpdiBjbGFzcz0iY29udGVudC1jb250YWluZXIiPlx0XHQ8ZGl2IGlkPSInK1krJyIgY2xhc3M9IicrcisnIHBheW1lbnRDYWxjdWxhdG9yUGF5bWVudFdyYXBwZXJDb250YWluZXIiICcrTysnPlx0XHRcdDxkaXYgY2xhc3M9Imxvd2VzdC1wYXltZW50Ij48c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIj4nK0IrJzwvc3Bhbj4gPGkgY2xhc3M9ImZhcyBmYS1pbmZvLWNpcmNsZSBpbmZvLWljb24gcGF5bWVudFRvb2x0aXAgbGVmdFRvb2x0aXAiICcrCk8rJz48L2k+PC9kaXY+XHRcdFx0PGRpdiBjbGFzcz0iZGV0YWlsc1RheCI+JytNKyc8L2Rpdj5cdFx0XHQ8ZGl2IGNsYXNzPSJhY3R1YWwtcmF0ZSI+JytMKyIlICIrRCsnPC9kaXY+XHRcdFx0PGRpdiBjbGFzcz0icmFkaW8tY29udGFpbmVyIHBheW1lbnRDYWxjdWxhdG9yUGF5bWVudFNlbGVjdCI+XHRcdFx0XHQ8aW5wdXQgXHRcdFx0XHRcdHR5cGU9InJhZGlvIlx0XHRcdFx0XHRcdFx0XHRcdFx0bmFtZT0ic2VsZWN0ZWRQYXltZW50Ilx0XHRcdFx0XHR2YWx1ZT0iJytkLnRlcm0rJyJcdFx0XHRcdFx0ZGF0YS1iYXNlcGF5bWVudD0iJytkLnBheW1lbnQrJyJcdFx0XHRcdFx0ZGF0YS1yZWFscGF5bWVudD0iJytkLnBheW1lbnQrJyJcdFx0XHRcdFx0ZGF0YS1yYXRldHlwZT0iJytkLnJhdGVfdHlwZSsnIlx0XHRcdFx0XHRkYXRhLWRpc3BsYXllZHBheW1lbnQ9IicrVysnIlx0XHRcdFx0XHRkYXRhLXJlc2lkdWFsPSInK2QucmVzaWR1YWwrJyJcdFx0XHRcdFx0ZGF0YS10b3RhbGludGVyZXN0PSInKwpkLnRvdGFsSW50ZXJlc3QrJyJcdFx0XHRcdFx0ZGF0YS1sdXhlVGF4QW1vdW50PSInK2QubHV4ZVRheEFtb3VudCsnIlx0XHRcdFx0XHRkYXRhLWVmZmVjdGl2ZVJhdGU9IicreisnIlx0XHRcdFx0XHRkYXRhLXRvdGFsQ29zdD0iJytOKyciXHRcdFx0XHRcdGRhdGEtcmF0ZT0iJytkLnJhdGUrJyIgICAgICAgICAgICAgICAgIGRhdGEtcmVzaWR1YWw9IicrZC5yZXNpZHVhbFZhbHVlKyciICAgICAgICAgICAgICAgICBkYXRhLXRvdGFsaW5jZW50aXZlPSInK1orJyIgICAgICAgICAgICAgICAgIGRhdGEtaW5pdGlhbFByaWNlPSInK2QuaW5pdGlhbFByaWNlKyciICAgICAgICAgICAgICAgICBkYXRhLWZpbmFsUHJpY2U9IicrZC5maW5hbFByaWNlKyciICAgICAgICAgICAgICAgICBkYXRhLWZlZXNMaXN0PSInK2J0b2EoSlNPTi5zdHJpbmdpZnkoZC5mZWVzTGlzdCkpKyciICAgICAgICAgICAgICAgICBkYXRhLWluY2VudGl2ZXNMaXN0PSInK2J0b2EoSlNPTi5zdHJpbmdpZnkoZC5pbmNlbnRpdmVzTGlzdCkpKwonIiAgICAgICAgICAgICAgICAgZGF0YS1nc3Q9IjAiICAgICAgICAgICAgICAgICBkYXRhLWhzdD0iMCIgICAgICAgICAgICAgICAgIGRhdGEtcHN0PSIwIlx0XHRcdFx0Plx0XHRcdFx0PGxhYmVsIGNsYXNzPSJmaW5hbmNlQ2FsYyI+JytKKyI8L2xhYmVsPlx0XHRcdDwvZGl2Plx0XHQ8L2Rpdj4iK3QrIlx0PC9kaXY+PC9kaXY+IjtkPSc8ZGl2IGNsYXNzPSJmaW5hbmNpbmctb3B0aW9uIHBheW1lbnRDYWxjdWxhdG9yUGF5bWVudFdyYXBwZXIgJytFKyciPlx0PGRpdiBjbGFzcz0idGVybSI+Jyt2Kyc8L2Rpdj5cdDxkaXYgY2xhc3M9ImRvd24tcGF5bWVudCI+Jyt5Kyc8L2Rpdj5cdDxkaXYgY2xhc3M9InNlcGFyYXRvclBheSI+PC9kaXY+XHQ8ZGl2IGNsYXNzPSJjb250ZW50LWNvbnRhaW5lciI+XHRcdDxkaXYgaWQ9IicraysnIiBjbGFzcz0iJytyKycgcGF5bWVudENhbGN1bGF0b3JQYXltZW50V3JhcHBlckNvbnRhaW5lciIgJytQKyc+XHRcdFx0PGRpdiBjbGFzcz0ibG93ZXN0LXBheW1lbnQiPjxzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiPicrCmwrJzwvc3Bhbj4gPGkgY2xhc3M9ImZhcyBmYS1pbmZvLWNpcmNsZSBpbmZvLWljb24gcGF5bWVudFRvb2x0aXAgbGVmdFRvb2x0aXAiICcrUCsnPjwvaT48L2Rpdj5cdFx0XHQ8ZGl2IGNsYXNzPSJhY3R1YWwtcmF0ZSI+JytMKyIlICIrRCsnPC9kaXY+XHRcdFx0PGRpdiBjbGFzcz0icmFkaW8tY29udGFpbmVyIHBheW1lbnRDYWxjdWxhdG9yUGF5bWVudFNlbGVjdCI+XHRcdFx0XHQ8aW5wdXQgXHRcdFx0XHRcdHR5cGU9InJhZGlvIlx0XHRcdFx0XHRcdFx0XHRcdFx0bmFtZT0ic2VsZWN0ZWRQYXltZW50V2l0aFRheGVzIlx0XHRcdFx0XHR2YWx1ZT0iJytkLnRlcm0rJyJcdFx0XHRcdFx0ZGF0YS1iYXNlcGF5bWVudD0iJytkLnBheW1lbnQrJyJcdFx0XHRcdFx0ZGF0YS1yZWFscGF5bWVudD0iJytkLnBheW1lbnRXaXRoVGF4ZXMrJyJcdFx0XHRcdFx0ZGF0YS1yYXRldHlwZT0iJytkLnJhdGVfdHlwZSsnIlx0XHRcdFx0XHRkYXRhLWRpc3BsYXllZHBheW1lbnQ9IicrWCsnIlx0XHRcdFx0XHRkYXRhLXJlc2lkdWFsPSInKwpkLnJlc2lkdWFsKyciXHRcdFx0XHRcdGRhdGEtdG90YWxpbnRlcmVzdD0iJytkLnRvdGFsSW50ZXJlc3QrJyJcdFx0XHRcdFx0ZGF0YS1sdXhlVGF4QW1vdW50PSInK2QubHV4ZVRheEFtb3VudCsnIlx0XHRcdFx0XHRkYXRhLWVmZmVjdGl2ZVJhdGU9IicreisnIlx0XHRcdFx0XHRkYXRhLXRvdGFsQ29zdD0iJytOKyciXHRcdFx0XHRcdGRhdGEtcmF0ZT0iJytkLnJhdGUrJyIgICAgICAgICAgICAgICAgIGRhdGEtcmVzaWR1YWw9IicrZC5yZXNpZHVhbFZhbHVlV2l0aFRheGVzKyciICAgICAgICAgICAgICAgICBkYXRhLXRvdGFsaW5jZW50aXZlPSInK0krJyIgICAgICAgICAgICAgICAgIGRhdGEtaW5pdGlhbFByaWNlPSInK2QuaW5pdGlhbFByaWNlKyciICAgICAgICAgICAgICAgICBkYXRhLWZpbmFsUHJpY2U9IicrZC5maW5hbFByaWNlKyciICAgICAgICAgICAgICAgICBkYXRhLWZlZXNMaXN0PSInK2J0b2EoSlNPTi5zdHJpbmdpZnkoZC5mZWVzTGlzdCkpKyciICAgICAgICAgICAgICAgICBkYXRhLWluY2VudGl2ZXNMaXN0PSInKwpidG9hKEpTT04uc3RyaW5naWZ5KGQuaW5jZW50aXZlc0xpc3QpKSsnIiAgICAgICAgICAgICAgICAgZGF0YS1nc3Q9IicrZC5nc3QrJyIgICAgICAgICAgICAgICAgIGRhdGEtaHN0PSInK2QuaHN0KyciICAgICAgICAgICAgICAgICBkYXRhLXBzdD0iJytkLnBzdCsnIlx0XHRcdFx0Plx0XHRcdFx0PGxhYmVsIGNsYXNzPSJmaW5hbmNlQ2FsYyI+JytKKyI8L2xhYmVsPlx0XHRcdDwvZGl2Plx0XHQ8L2Rpdj4iK3UrIlx0PC9kaXY+PC9kaXY+IjskKG0ucGFyZW50KyIgLnBheW1lbnRDYWxjdWxhdG9yUGF5bWVudENvbnRhaW5lciIpLmFwcGVuZChjKTskKG0ucGFyZW50KyIgLnBheW1lbnRDYWxjdWxhdG9yUGF5bWVudENvbnRhaW5lcldpdGhUYXhlcyIpLmFwcGVuZChkKTtWKyt9fSk7bS5zZXRQYXltZW50Q2FsY3VsYXRvclBvcHVwVG9vbHRpcCgpfXNldFBheW1lbnRDYWxjdWxhdG9yUG9wdXBUb29sdGlwKCl7dmFyIGE9dGhpcy5wYXJlbnQsZT10aGlzLnBhcmVudE5hbWU7aWYoIjEiPT0KJCgiI2lzbW9iaWxlIikudmFsKCkpJChhKyIgLnBheW1lbnRDYWxjdWxhdG9yUGF5bWVudFdyYXBwZXIgLnBheW1lbnRDYWxjdWxhdG9yUGF5bWVudFdyYXBwZXJDb250YWluZXIgLnBheW1lbnRUb29sdGlwIikuZWFjaChmdW5jdGlvbihmKXt0cnl7dmFyIG09JCh0aGlzKS5hdHRyKCJkYXRhLXRvb2x0aXAiKSxnPSQodGhpcykuaGFzQ2xhc3MoImxlZnRUb29sdGlwIik\/Indlc3QiOiJlYXN0IjskKHRoaXMpLmRhcmtUb29sdGlwKHtjb250ZW50Om0sZ3Jhdml0eTpnLHRoZW1lOiJsaWdodCIsdHJpZ2dlcjoiY2xpY2siLGFuaW1hdGlvbjoiZmxpcEluIn0pfWNhdGNoKGgpe319KTtlbHNle2Zvcih2YXIgYj0wOzU+YjtiKyspJCgiI2Rhcmt0b29sdGlwLSIrZSsicGF5bWVudCIrYikubGVuZ3RoJiYoJCgiI2Rhcmt0b29sdGlwLSIrZSsicGF5bWVudCIrYikucmVtb3ZlKCksJCgiI2Rhcmt0b29sdGlwLSIrZSsicGF5bWVudCIrYisid2l0aFRheGVzIikucmVtb3ZlKCkpOyQoYSsiIC5wYXltZW50Q2FsY3VsYXRvclBheW1lbnRXcmFwcGVyIC5wYXltZW50Q2FsY3VsYXRvclBheW1lbnRXcmFwcGVyQ29udGFpbmVyIikuZWFjaChmdW5jdGlvbigpe3RyeXt2YXIgZj0KJCh0aGlzKS5hdHRyKCJkYXRhLXRvb2x0aXAiKTskKHRoaXMpLmRhcmtUb29sdGlwKHtjb250ZW50OmYsZ3Jhdml0eToibm9ydGgiLHRoZW1lOiJsaWdodCIsdHJpZ2dlcjoiaG92ZXIiLGFuaW1hdGlvbjoibm9uZSJ9KX1jYXRjaChtKXt9fSl9fXBheW1lbnRDYWxjdWxhdG9yRm9ybWF0TnVtYmVyKGEpe3JldHVybiBhLnJlcGxhY2UoL1xCKD89KFxkezN9KSsoPyFcZCkpL2csIiwiKX1mb3JtYXRFZmZlY3RpdmVSYXRlVGV4dENhbGMoYSxlLGIpe2I9dm9pZCAwPT09Yj8iIjpiO2E9IjxzcGFuICIrZSsiPiIrYSsiPC9zcGFuPiUiO2E9IkVOR0xJU0giPT1hY3RpdmVMYW5nP2ErIiBBUFIiOiJUYXV4ICIrYTtyZXR1cm4gJCgiI2lzbW9iaWxlIikudmFsKCk\/Ijxici8+PGRpdiAiK2IrIj4oIithKyIpPC9kaXY+IjoiIDxkaXYgIitiKyI+KCAiK2ErIiApPC9kaXY+In19OwovKiogL20vanMvY29udGFjdFBvcHVwLmpzICoqLwp2YXIgX19fZDJjX2NvbnRhY3RQb3B1cGpzX2Nfb249IjIwMjYtMDEtMTIgMTA6MTM6NDYiOyd1c2Ugc3RyaWN0Jzt2YXIgY29udGFjdFBvcHVwPXtwb3B1cDokKCIjY29udGFjdHBvcHVwIiksb3B0aW9uczp7dHlwZToiIn0sc2V0Q29uZmlnOmZ1bmN0aW9uKGEpe2NvbnRhY3RQb3B1cC5vcHRpb25zPSQuZXh0ZW5kKHt9LGNvbnRhY3RQb3B1cC5vcHRpb25zLGEpO3JldHVybiBjb250YWN0UG9wdXB9LGluaXQ6ZnVuY3Rpb24oKXtjb250YWN0UG9wdXAuc2V0Q29uZmlnKHt0eXBlOnNlbGYuc2V0dGluZ3MuZm9ybS50eXBlfSk7Y29udGFjdFBvcHVwLnBvcHVwLnBvcHVwaXplKHtvbkJlZm9yZVNlbmRNYWlsOmNvbnRhY3RQb3B1cC5vbkJlZm9yZVNlbmRNYWlsfSkub3BlbigpO3JldHVybiBjb250YWN0UG9wdXB9LG9uQmVmb3JlU2VuZE1haWw6ZnVuY3Rpb24oYSl7Y29udGFjdFBvcHVwLnNldEVtYWlsSGFuZGxlckZyb21BZGRyZXNzZXMoKTtlbWFpbEhhbmRsZXIuY29uZGl0aW9uPWNvbnRhY3RQb3B1cC5nZXRDb25kaXRpb24oKTtlbWFpbEhhbmRsZXIuZGVwYXJ0bWVudD1jb250YWN0UG9wdXAuZ2V0VHlwZSgpLnRvVXBwZXJDYXNlKCk7CiJCTlAiPT1lbWFpbEhhbmRsZXIuZGVwYXJ0bWVudCYmKGVtYWlsSGFuZGxlci5kZXBhcnRtZW50PSJORVciKTtlbWFpbEhhbmRsZXIuc2tpcEdldERlcD0hMDtlbWFpbEhhbmRsZXIuYm9keT1lbWFpbEhhbmRsZXIuYm9keS5yZXBsYWNlKCJ7JE5BTUV9IixlbWFpbEhhbmRsZXIudXNlckZpcnN0TmFtZSsiICIrZW1haWxIYW5kbGVyLnVzZXJMYXN0TmFtZSl9LGdldENvbmRpdGlvbjpmdW5jdGlvbigpe3N3aXRjaChjb250YWN0UG9wdXAuZ2V0VHlwZSgpKXtjYXNlICJibnAiOmNhc2UgIm5ldyI6Y2FzZSAibWFudWZhY3R1cmVyIjpyZXR1cm4ibmV3IjtkZWZhdWx0OnJldHVybiJ1c2VkIn19LGdldFR5cGU6ZnVuY3Rpb24oKXtyZXR1cm4gY29udGFjdFBvcHVwLm9wdGlvbnMudHlwZX0sc2V0RW1haWxIYW5kbGVyRnJvbUFkZHJlc3NlczpmdW5jdGlvbigpe3ZhciBhPWNvbnRhY3RQb3B1cC5nZXRUeXBlKCk7dHJ5e3ZhciBiPWNvbnRhY3RQb3B1cC5nZXRFbWFpbHMoYSk7IiI9PT1iLnNlbmRUbyYmCiIiPT09Yi5zZW5kVG9BREYmJihiPWNvbnRhY3RQb3B1cC5nZXRFbWFpbHMoInVzZWQiKSk7dmFyIGM9Yi5zZW5kVG8sZD1iLnNlbmRUb0FERjsiIj09PWMmJiIiPT09ZCYmY29uc29sZS5sb2coIldhcm5pbmc6IGJvdGggZW1haWwgYW5kIEFERiBhZGRyZXNzZXMgYXJlIGVtcHR5ISIpO2lmKCQoIiNjdXN0b21Gb3JtX29yaWdpbmFsc2VuZHRvIikubGVuZ3RoJiYiT3RoZXIiPT0kKCIjY3VzdG9tRm9ybV9vcmlnaW5hbHNlbmR0byIpLnZhbCgpKXt2YXIgZT0kKCIjY3VzdG9tRm9ybV9zZW5kdG8iKS52YWwoKSxmPSQoIiNjdXN0b21Gb3JtX3NlbmR0b0FERiIpLnZhbCgpO2lmKCIiIT09ZXx8IiIhPT1mKWM9ZSxkPWZ9ZW1haWxIYW5kbGVyLnNlbmRUbz1jO2VtYWlsSGFuZGxlci5zZW5kVG9BREZGb3JtYXQ9ZH1jYXRjaChnKXtjb25zb2xlLmxvZyhnKX1yZXR1cm4gY29udGFjdFBvcHVwfSxnZXRFbWFpbHM6ZnVuY3Rpb24oYSl7dmFyIGI9JCgiI2hpZGRlbkNvbnRhY3Rwb3B1cCIpOwoiYm5wIj09YSYmKGE9Im5ldyIpO3ZhciBjPWIuZmluZCgiI2VtYWlsXyIrYSkudmFsKCk7YT1iLmZpbmQoIiNlbWFpbEFERl8iK2EpLnZhbCgpO3JldHVybntzZW5kVG86YyxzZW5kVG9BREY6YX19fSxpbml0Q29udGFjdHBvcHVwPWZ1bmN0aW9uKGEpe2EucHJldmVudERlZmF1bHQoKTtjb250YWN0UG9wdXAuaW5pdCgpfSxjb250YWN0UG9wdXBTdWJtaXQ9ZnVuY3Rpb24oKXskKCIjY29udGFjdHBvcHVwIikucG9wdXBpemUoKS5zdWJtaXQoKX0sY29udGFjdFBvcHVwQ2xvc2U9ZnVuY3Rpb24oKXskKCIjY29udGFjdHBvcHVwIikucG9wdXBpemUoKS5jbG9zZSgpfTsKLyoqIC9tL2pzL3ZhbmlsbGFqcy9tb2RhbC5qcyAqKi8KdmFyIF9fX2QyY19tb2RhbGpzX2Nfb249IjIwMjYtMDItMjcgMTU6MzA6MDMiOyd1c2Ugc3RyaWN0Jztjb25zdCBNb2RhbHM9e30sTW9kYWw9ZnVuY3Rpb24oaCxiKXtsZXQgYz17fTtjb25zdCBuPXt0aXRsZTpoLGNvbnRlbnRUeXBlOiJub2RlIixjb250ZW50U3JjOiIiLGFmdGVySW5pdDooKT0+e319O2xldCBrPSIiO2NvbnN0IGU9aHRtbFRvTm9kZSgnPGRpdiBjbGFzcz0ibW9kYWwtb3ZlcmxheSI+PC9kaXY+JyksbD1mdW5jdGlvbihhKXthLm9uY2xpY2s9KCk9PmYoImNhbmNlbCIpfSxwPWZ1bmN0aW9uKCl7KGMucXVlcnlTZWxlY3RvcigiLm9rYXkiKXx8ITEpLm9uY2xpY2s9KCk9PmYoIm9rYXkiKTtjb25zdCBhPWMucXVlcnlTZWxlY3RvckFsbCgiLmNhbmNlbCIpfHwhMTsxPGEubGVuZ3RoPyQuZWFjaChhLGZ1bmN0aW9uKGQsZyl7bChnKX0pOmEmJmwoYVswXSl9LG09ZnVuY3Rpb24oYSl7IkVzY2FwZSI9PWEua2V5JiYoYS5wcmV2ZW50RGVmYXVsdCgpLGEuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCksZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigia2V5dXAiLAptLHtjYXB0dXJlOiEwfSksZigpKX0sZj1hPT57YT1hfHwiIjtzd2l0Y2goYSl7Y2FzZSAiY2FuY2VsIjoiZnVuY3Rpb24iPT10eXBlb2YgYi5vbkJlZm9yZUNhbmNlbCYmYi5vbkJlZm9yZUNhbmNlbC5jYWxsKCk7YnJlYWs7Y2FzZSAib2theSI6ImZ1bmN0aW9uIj09dHlwZW9mIGIub25CZWZvcmVTYXZlJiZiLm9uQmVmb3JlU2F2ZS5jYWxsKCl9ImZ1bmN0aW9uIj09dHlwZW9mIGIub25CZWZvcmVDbG9zZSYmYi5vbkJlZm9yZUNsb3NlLmNhbGwoYSk7ZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvd1k9ImF1dG8iO2MuY2xhc3NMaXN0LnRvZ2dsZSgiaXMtYWN0aXZlIiwhMSk7ZS5wYXJlbnROb2RlJiYoZS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGUpLGsuZm9jdXMoKSl9O2I9T2JqZWN0LmFzc2lnbihuLGIpOyhmdW5jdGlvbigpe2NvbnN0IGE9K25ldyBEYXRlO3ZhciBkPSIiO3N3aXRjaChiLmNvbnRlbnRUeXBlKXtjYXNlICJub2RlIjpkPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGIuY29udGVudFNyYyk7CmQuaGlkZGVuPSExO2JyZWFrO2Nhc2UgImlmcmFtZSI6ZD1odG1sVG9Ob2RlKGA8ZGl2IGNsYXNzPSJpZnJhbWUtd3JhcHBlciI+CgkJCQkJCQkJPGlmcmFtZQoJCQkJCQkJCQlzcmM9IiR7Yi5jb250ZW50U3JjfSIKCQkJCQkJCQkJZnJhbWVib3JkZXI9IjAiCgkJCQkJCQkJCWFsbG93ZnVsbHNjcmVlbj0idHJ1ZSIKCQkJCQkJCQkJd2Via2l0YWxsb3dmdWxsc2NyZWVuPSJ0cnVlIgoJCQkJCQkJCQltb3phbGxvd2Z1bGxzY3JlZW49InRydWUiCgkJCQkJCQkJPjwvaWZyYW1lPgoJCQkJCQkJPC9kaXY+YCl9bGV0IGc9IiI7Yi5zaG93WWVzTm9CdXR0b25zJiYoZz1gPGRpdiBjbGFzcz0ibW9kYWwtZm9vdGVyIC1wIC0tczUgZmxleC1iZXR3ZWVuIj4KCQkJCTxkaXY+CgkJCQkJPHNwYW4gY2xhc3M9IiAtbXQyIG1haW5UZXh0IC1ib2xkIj4ke2IuYnV0dG9uVGV4dHx8IiJ9PC9zcGFuPgoJCQkJPC9kaXY+CgkJCQk8ZGl2PgoJCQkJCTxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIGNhbmNlbCIgZGF0YS1kaXNtaXNzPSJtb2RhbCI+JHtiLm5vQnV0dG9ufHwiTm8ifTwvYnV0dG9uPgoJCQkJCTxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIGJ0bi1tYWluMiBva2F5IiBkYXRhLWRpc21pc3M9Im1vZGFsIj4ke2IueWVzQnV0dG9ufHwiWWVzIn08L2J1dHRvbj4KCQkJCTwvZGl2PmApO2M9aHRtbFRvTm9kZShgCgkJCTxib3gtbGMgY2xhc3M9Im1vZGFsLXdyYXBwZXIgLWJnLXdoaXRlIC0tczAiPgoJCQkJPHN0YWNrLWxjIGNsYXNzPSItLXMwIj4KCQkJCQk8ZGl2IGNsYXNzPSJtb2RhbC1oZWFkZXIgZmxleC1iZXR3ZWVuIC1wIC0tczUiPgoJCQkJCQk8ZGl2IGNsYXNzPSJtb2RhbC10aXRsZSB0eHQtdXBwZXIgLWZzLWwgLWJvbGQiPgoJCQkJCQkJJHtiLnRpdGxlfQoJCQkJCQk8L2Rpdj4KCQkJCQkJPGRpdiBjbGFzcz0ibW9kYWwtY29udHJvbCI+CgkJCQkJCQk8YnV0dG9uIHRpdGxlPSJjbG9zZSIgY2xhc3M9IngtY2xvc2UgY2FuY2VsIj48L2J1dHRvbj4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibW9kYWwtYm9keSIgaWQ9InEtJHthfSI+CgoJCQkJCTwvZGl2PgoJCQkJCSR7Z30KCQkJCTwvc3RhY2stbGM+CgkJCTwvYm94LWxjPgoJCWApO2MuaWQ9YG1vZGFsJHtofWA7Yy5zZXRBdHRyaWJ1dGUoInJvbGUiLCJkaWFsb2ciKTtjLnNldEF0dHJpYnV0ZSgiYXJpYS1sYWJlbGxlZGJ5IixgcS0ke2F9YCk7Yy5xdWVyeVNlbGVjdG9yKCIubW9kYWwtYm9keSIpLmFwcGVuZENoaWxkKGQpO2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoYyk7ZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvd1k9ImhpZGRlbiI7Yi5hZnRlckluaXQoKTtwKCl9KSgpO3JldHVybntkaXNwbGF5OmZ1bmN0aW9uKCl7az1kb2N1bWVudC5hY3RpdmVFbGVtZW50O2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZSk7ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigia2V5dXAiLG0se2NhcHR1cmU6ITB9KTtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Yy5jbGFzc0xpc3QudG9nZ2xlKCJpcy1hY3RpdmUiLCEwKX0sMSl9LGNsb3NlOmZ9fTsKLyoqIC9tL2pzL3ZhbmlsbGFqcy9sZWFkLmpzICoqLwp2YXIgX19fZDJjX2xlYWRqc19jX29uPSIyMDI2LTA0LTAyIDEzOjMwOjAzIjsndXNlIHN0cmljdCc7dmFyICRqc2NvbXA9JGpzY29tcHx8e307JGpzY29tcC5zY29wZT17fTskanNjb21wLkFTU1VNRV9FUzU9ITE7JGpzY29tcC5BU1NVTUVfTk9fTkFUSVZFX01BUD0hMTskanNjb21wLkFTU1VNRV9OT19OQVRJVkVfU0VUPSExOyRqc2NvbXAuU0lNUExFX0ZST1VORF9QT0xZRklMTD0hMTskanNjb21wLklTT0xBVEVfUE9MWUZJTExTPSExOyRqc2NvbXAuRk9SQ0VfUE9MWUZJTExfUFJPTUlTRT0hMTskanNjb21wLkZPUkNFX1BPTFlGSUxMX1BST01JU0VfV0hFTl9OT19VTkhBTkRMRURfUkVKRUNUSU9OPSExOyRqc2NvbXAuZGVmaW5lUHJvcGVydHk9JGpzY29tcC5BU1NVTUVfRVM1fHwiZnVuY3Rpb24iPT10eXBlb2YgT2JqZWN0LmRlZmluZVByb3BlcnRpZXM\/T2JqZWN0LmRlZmluZVByb3BlcnR5OmZ1bmN0aW9uKGIsYSxjKXtpZihiPT1BcnJheS5wcm90b3R5cGV8fGI9PU9iamVjdC5wcm90b3R5cGUpcmV0dXJuIGI7YlthXT1jLnZhbHVlO3JldHVybiBifTsKJGpzY29tcC5nZXRHbG9iYWw9ZnVuY3Rpb24oYil7Yj1bIm9iamVjdCI9PXR5cGVvZiBnbG9iYWxUaGlzJiZnbG9iYWxUaGlzLGIsIm9iamVjdCI9PXR5cGVvZiB3aW5kb3cmJndpbmRvdywib2JqZWN0Ij09dHlwZW9mIHNlbGYmJnNlbGYsIm9iamVjdCI9PXR5cGVvZiBnbG9iYWwmJmdsb2JhbF07Zm9yKHZhciBhPTA7YTxiLmxlbmd0aDsrK2Epe3ZhciBjPWJbYV07aWYoYyYmYy5NYXRoPT1NYXRoKXJldHVybiBjfXRocm93IEVycm9yKCJDYW5ub3QgZmluZCBnbG9iYWwgb2JqZWN0Iik7fTskanNjb21wLmdsb2JhbD0kanNjb21wLmdldEdsb2JhbCh0aGlzKTskanNjb21wLklTX1NZTUJPTF9OQVRJVkU9ImZ1bmN0aW9uIj09PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT09dHlwZW9mIFN5bWJvbCgieCIpOyRqc2NvbXAuVFJVU1RfRVM2X1BPTFlGSUxMUz0hJGpzY29tcC5JU09MQVRFX1BPTFlGSUxMU3x8JGpzY29tcC5JU19TWU1CT0xfTkFUSVZFOyRqc2NvbXAucG9seWZpbGxzPXt9OwokanNjb21wLnByb3BlcnR5VG9Qb2x5ZmlsbFN5bWJvbD17fTskanNjb21wLlBPTFlGSUxMX1BSRUZJWD0iJGpzY3AkIjt2YXIgJGpzY29tcCRsb29rdXBQb2x5ZmlsbGVkVmFsdWU9ZnVuY3Rpb24oYixhKXt2YXIgYz0kanNjb21wLnByb3BlcnR5VG9Qb2x5ZmlsbFN5bWJvbFthXTtpZihudWxsPT1jKXJldHVybiBiW2FdO2M9YltjXTtyZXR1cm4gdm9pZCAwIT09Yz9jOmJbYV19OyRqc2NvbXAucG9seWZpbGw9ZnVuY3Rpb24oYixhLGMsZSl7YSYmKCRqc2NvbXAuSVNPTEFURV9QT0xZRklMTFM\/JGpzY29tcC5wb2x5ZmlsbElzb2xhdGVkKGIsYSxjLGUpOiRqc2NvbXAucG9seWZpbGxVbmlzb2xhdGVkKGIsYSxjLGUpKX07CiRqc2NvbXAucG9seWZpbGxVbmlzb2xhdGVkPWZ1bmN0aW9uKGIsYSxjLGUpe2M9JGpzY29tcC5nbG9iYWw7Yj1iLnNwbGl0KCIuIik7Zm9yKGU9MDtlPGIubGVuZ3RoLTE7ZSsrKXt2YXIgaD1iW2VdO2lmKCEoaCBpbiBjKSlyZXR1cm47Yz1jW2hdfWI9YltiLmxlbmd0aC0xXTtlPWNbYl07YT1hKGUpO2EhPWUmJm51bGwhPWEmJiRqc2NvbXAuZGVmaW5lUHJvcGVydHkoYyxiLHtjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6YX0pfTsKJGpzY29tcC5wb2x5ZmlsbElzb2xhdGVkPWZ1bmN0aW9uKGIsYSxjLGUpe3ZhciBoPWIuc3BsaXQoIi4iKTtiPTE9PT1oLmxlbmd0aDtlPWhbMF07ZT0hYiYmZSBpbiAkanNjb21wLnBvbHlmaWxscz8kanNjb21wLnBvbHlmaWxsczokanNjb21wLmdsb2JhbDtmb3IodmFyIHE9MDtxPGgubGVuZ3RoLTE7cSsrKXt2YXIgcj1oW3FdO2lmKCEociBpbiBlKSlyZXR1cm47ZT1lW3JdfWg9aFtoLmxlbmd0aC0xXTtjPSRqc2NvbXAuSVNfU1lNQk9MX05BVElWRSYmImVzNiI9PT1jP2VbaF06bnVsbDthPWEoYyk7bnVsbCE9YSYmKGI\/JGpzY29tcC5kZWZpbmVQcm9wZXJ0eSgkanNjb21wLnBvbHlmaWxscyxoLHtjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6YX0pOmEhPT1jJiYodm9pZCAwPT09JGpzY29tcC5wcm9wZXJ0eVRvUG9seWZpbGxTeW1ib2xbaF0mJihjPTFFOSpNYXRoLnJhbmRvbSgpPj4+MCwkanNjb21wLnByb3BlcnR5VG9Qb2x5ZmlsbFN5bWJvbFtoXT0kanNjb21wLklTX1NZTUJPTF9OQVRJVkU\/CiRqc2NvbXAuZ2xvYmFsLlN5bWJvbChoKTokanNjb21wLlBPTFlGSUxMX1BSRUZJWCtjKyIkIitoKSwkanNjb21wLmRlZmluZVByb3BlcnR5KGUsJGpzY29tcC5wcm9wZXJ0eVRvUG9seWZpbGxTeW1ib2xbaF0se2NvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTphfSkpKX07JGpzY29tcC51bmRlcnNjb3JlUHJvdG9DYW5CZVNldD1mdW5jdGlvbigpe3ZhciBiPXthOiEwfSxhPXt9O3RyeXtyZXR1cm4gYS5fX3Byb3RvX189YixhLmF9Y2F0Y2goYyl7fXJldHVybiExfTsKJGpzY29tcC5zZXRQcm90b3R5cGVPZj0kanNjb21wLlRSVVNUX0VTNl9QT0xZRklMTFMmJiJmdW5jdGlvbiI9PXR5cGVvZiBPYmplY3Quc2V0UHJvdG90eXBlT2Y\/T2JqZWN0LnNldFByb3RvdHlwZU9mOiRqc2NvbXAudW5kZXJzY29yZVByb3RvQ2FuQmVTZXQoKT9mdW5jdGlvbihiLGEpe2IuX19wcm90b19fPWE7aWYoYi5fX3Byb3RvX18hPT1hKXRocm93IG5ldyBUeXBlRXJyb3IoYisiIGlzIG5vdCBleHRlbnNpYmxlIik7cmV0dXJuIGJ9Om51bGw7JGpzY29tcC5hcnJheUl0ZXJhdG9ySW1wbD1mdW5jdGlvbihiKXt2YXIgYT0wO3JldHVybiBmdW5jdGlvbigpe3JldHVybiBhPGIubGVuZ3RoP3tkb25lOiExLHZhbHVlOmJbYSsrXX06e2RvbmU6ITB9fX07JGpzY29tcC5hcnJheUl0ZXJhdG9yPWZ1bmN0aW9uKGIpe3JldHVybntuZXh0OiRqc2NvbXAuYXJyYXlJdGVyYXRvckltcGwoYil9fTsKJGpzY29tcC5tYWtlSXRlcmF0b3I9ZnVuY3Rpb24oYil7dmFyIGE9InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJlN5bWJvbC5pdGVyYXRvciYmYltTeW1ib2wuaXRlcmF0b3JdO3JldHVybiBhP2EuY2FsbChiKTokanNjb21wLmFycmF5SXRlcmF0b3IoYil9OyRqc2NvbXAuZ2VuZXJhdG9yPXt9OyRqc2NvbXAuZ2VuZXJhdG9yLmVuc3VyZUl0ZXJhdG9yUmVzdWx0SXNPYmplY3RfPWZ1bmN0aW9uKGIpe2lmKCEoYiBpbnN0YW5jZW9mIE9iamVjdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiSXRlcmF0b3IgcmVzdWx0ICIrYisiIGlzIG5vdCBhbiBvYmplY3QiKTt9OwokanNjb21wLmdlbmVyYXRvci5Db250ZXh0PWZ1bmN0aW9uKCl7dGhpcy5pc1J1bm5pbmdfPSExO3RoaXMueWllbGRBbGxJdGVyYXRvcl89bnVsbDt0aGlzLnlpZWxkUmVzdWx0PXZvaWQgMDt0aGlzLm5leHRBZGRyZXNzPTE7dGhpcy5maW5hbGx5QWRkcmVzc189dGhpcy5jYXRjaEFkZHJlc3NfPTA7dGhpcy5maW5hbGx5Q29udGV4dHNfPXRoaXMuYWJydXB0Q29tcGxldGlvbl89bnVsbH07JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUuc3RhcnRfPWZ1bmN0aW9uKCl7aWYodGhpcy5pc1J1bm5pbmdfKXRocm93IG5ldyBUeXBlRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IHJ1bm5pbmciKTt0aGlzLmlzUnVubmluZ189ITB9OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLnN0b3BfPWZ1bmN0aW9uKCl7dGhpcy5pc1J1bm5pbmdfPSExfTsKJGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUuanVtcFRvRXJyb3JIYW5kbGVyXz1mdW5jdGlvbigpe3RoaXMubmV4dEFkZHJlc3M9dGhpcy5jYXRjaEFkZHJlc3NffHx0aGlzLmZpbmFsbHlBZGRyZXNzX307JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUubmV4dF89ZnVuY3Rpb24oYil7dGhpcy55aWVsZFJlc3VsdD1ifTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS50aHJvd189ZnVuY3Rpb24oYil7dGhpcy5hYnJ1cHRDb21wbGV0aW9uXz17ZXhjZXB0aW9uOmIsaXNFeGNlcHRpb246ITB9O3RoaXMuanVtcFRvRXJyb3JIYW5kbGVyXygpfTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5yZXR1cm49ZnVuY3Rpb24oYil7dGhpcy5hYnJ1cHRDb21wbGV0aW9uXz17cmV0dXJuOmJ9O3RoaXMubmV4dEFkZHJlc3M9dGhpcy5maW5hbGx5QWRkcmVzc199OwokanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5qdW1wVGhyb3VnaEZpbmFsbHlCbG9ja3M9ZnVuY3Rpb24oYil7dGhpcy5hYnJ1cHRDb21wbGV0aW9uXz17anVtcFRvOmJ9O3RoaXMubmV4dEFkZHJlc3M9dGhpcy5maW5hbGx5QWRkcmVzc199OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLnlpZWxkPWZ1bmN0aW9uKGIsYSl7dGhpcy5uZXh0QWRkcmVzcz1hO3JldHVybnt2YWx1ZTpifX07JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUueWllbGRBbGw9ZnVuY3Rpb24oYixhKXtiPSRqc2NvbXAubWFrZUl0ZXJhdG9yKGIpO3ZhciBjPWIubmV4dCgpOyRqc2NvbXAuZ2VuZXJhdG9yLmVuc3VyZUl0ZXJhdG9yUmVzdWx0SXNPYmplY3RfKGMpO2lmKGMuZG9uZSl0aGlzLnlpZWxkUmVzdWx0PWMudmFsdWUsdGhpcy5uZXh0QWRkcmVzcz1hO2Vsc2UgcmV0dXJuIHRoaXMueWllbGRBbGxJdGVyYXRvcl89Yix0aGlzLnlpZWxkKGMudmFsdWUsYSl9OwokanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5qdW1wVG89ZnVuY3Rpb24oYil7dGhpcy5uZXh0QWRkcmVzcz1ifTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5qdW1wVG9FbmQ9ZnVuY3Rpb24oKXt0aGlzLm5leHRBZGRyZXNzPTB9OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLnNldENhdGNoRmluYWxseUJsb2Nrcz1mdW5jdGlvbihiLGEpe3RoaXMuY2F0Y2hBZGRyZXNzXz1iO3ZvaWQgMCE9YSYmKHRoaXMuZmluYWxseUFkZHJlc3NfPWEpfTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5zZXRGaW5hbGx5QmxvY2s9ZnVuY3Rpb24oYil7dGhpcy5jYXRjaEFkZHJlc3NfPTA7dGhpcy5maW5hbGx5QWRkcmVzc189Ynx8MH07JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUubGVhdmVUcnlCbG9jaz1mdW5jdGlvbihiLGEpe3RoaXMubmV4dEFkZHJlc3M9Yjt0aGlzLmNhdGNoQWRkcmVzc189YXx8MH07CiRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLmVudGVyQ2F0Y2hCbG9jaz1mdW5jdGlvbihiKXt0aGlzLmNhdGNoQWRkcmVzc189Ynx8MDtiPXRoaXMuYWJydXB0Q29tcGxldGlvbl8uZXhjZXB0aW9uO3RoaXMuYWJydXB0Q29tcGxldGlvbl89bnVsbDtyZXR1cm4gYn07JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUuZW50ZXJGaW5hbGx5QmxvY2s9ZnVuY3Rpb24oYixhLGMpe2M\/dGhpcy5maW5hbGx5Q29udGV4dHNfW2NdPXRoaXMuYWJydXB0Q29tcGxldGlvbl86dGhpcy5maW5hbGx5Q29udGV4dHNfPVt0aGlzLmFicnVwdENvbXBsZXRpb25fXTt0aGlzLmNhdGNoQWRkcmVzc189Ynx8MDt0aGlzLmZpbmFsbHlBZGRyZXNzXz1hfHwwfTsKJGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUubGVhdmVGaW5hbGx5QmxvY2s9ZnVuY3Rpb24oYixhKXthPXRoaXMuZmluYWxseUNvbnRleHRzXy5zcGxpY2UoYXx8MClbMF07aWYoYT10aGlzLmFicnVwdENvbXBsZXRpb25fPXRoaXMuYWJydXB0Q29tcGxldGlvbl98fGEpe2lmKGEuaXNFeGNlcHRpb24pcmV0dXJuIHRoaXMuanVtcFRvRXJyb3JIYW5kbGVyXygpO3ZvaWQgMCE9YS5qdW1wVG8mJnRoaXMuZmluYWxseUFkZHJlc3NfPGEuanVtcFRvPyh0aGlzLm5leHRBZGRyZXNzPWEuanVtcFRvLHRoaXMuYWJydXB0Q29tcGxldGlvbl89bnVsbCk6dGhpcy5uZXh0QWRkcmVzcz10aGlzLmZpbmFsbHlBZGRyZXNzX31lbHNlIHRoaXMubmV4dEFkZHJlc3M9Yn07JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUuZm9ySW49ZnVuY3Rpb24oYil7cmV0dXJuIG5ldyAkanNjb21wLmdlbmVyYXRvci5Db250ZXh0LlByb3BlcnR5SXRlcmF0b3IoYil9OwokanNjb21wLmdlbmVyYXRvci5Db250ZXh0LlByb3BlcnR5SXRlcmF0b3I9ZnVuY3Rpb24oYil7dGhpcy5vYmplY3RfPWI7dGhpcy5wcm9wZXJ0aWVzXz1bXTtmb3IodmFyIGEgaW4gYil0aGlzLnByb3BlcnRpZXNfLnB1c2goYSk7dGhpcy5wcm9wZXJ0aWVzXy5yZXZlcnNlKCl9OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQuUHJvcGVydHlJdGVyYXRvci5wcm90b3R5cGUuZ2V0TmV4dD1mdW5jdGlvbigpe2Zvcig7MDx0aGlzLnByb3BlcnRpZXNfLmxlbmd0aDspe3ZhciBiPXRoaXMucHJvcGVydGllc18ucG9wKCk7aWYoYiBpbiB0aGlzLm9iamVjdF8pcmV0dXJuIGJ9cmV0dXJuIG51bGx9OyRqc2NvbXAuZ2VuZXJhdG9yLkVuZ2luZV89ZnVuY3Rpb24oYil7dGhpcy5jb250ZXh0Xz1uZXcgJGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dDt0aGlzLnByb2dyYW1fPWJ9OwokanNjb21wLmdlbmVyYXRvci5FbmdpbmVfLnByb3RvdHlwZS5uZXh0Xz1mdW5jdGlvbihiKXt0aGlzLmNvbnRleHRfLnN0YXJ0XygpO2lmKHRoaXMuY29udGV4dF8ueWllbGRBbGxJdGVyYXRvcl8pcmV0dXJuIHRoaXMueWllbGRBbGxTdGVwXyh0aGlzLmNvbnRleHRfLnlpZWxkQWxsSXRlcmF0b3JfLm5leHQsYix0aGlzLmNvbnRleHRfLm5leHRfKTt0aGlzLmNvbnRleHRfLm5leHRfKGIpO3JldHVybiB0aGlzLm5leHRTdGVwXygpfTsKJGpzY29tcC5nZW5lcmF0b3IuRW5naW5lXy5wcm90b3R5cGUucmV0dXJuXz1mdW5jdGlvbihiKXt0aGlzLmNvbnRleHRfLnN0YXJ0XygpO3ZhciBhPXRoaXMuY29udGV4dF8ueWllbGRBbGxJdGVyYXRvcl87aWYoYSlyZXR1cm4gdGhpcy55aWVsZEFsbFN0ZXBfKCJyZXR1cm4iaW4gYT9hWyJyZXR1cm4iXTpmdW5jdGlvbihjKXtyZXR1cm57dmFsdWU6Yyxkb25lOiEwfX0sYix0aGlzLmNvbnRleHRfLnJldHVybik7dGhpcy5jb250ZXh0Xy5yZXR1cm4oYik7cmV0dXJuIHRoaXMubmV4dFN0ZXBfKCl9OwokanNjb21wLmdlbmVyYXRvci5FbmdpbmVfLnByb3RvdHlwZS50aHJvd189ZnVuY3Rpb24oYil7dGhpcy5jb250ZXh0Xy5zdGFydF8oKTtpZih0aGlzLmNvbnRleHRfLnlpZWxkQWxsSXRlcmF0b3JfKXJldHVybiB0aGlzLnlpZWxkQWxsU3RlcF8odGhpcy5jb250ZXh0Xy55aWVsZEFsbEl0ZXJhdG9yX1sidGhyb3ciXSxiLHRoaXMuY29udGV4dF8ubmV4dF8pO3RoaXMuY29udGV4dF8udGhyb3dfKGIpO3JldHVybiB0aGlzLm5leHRTdGVwXygpfTsKJGpzY29tcC5nZW5lcmF0b3IuRW5naW5lXy5wcm90b3R5cGUueWllbGRBbGxTdGVwXz1mdW5jdGlvbihiLGEsYyl7dHJ5e3ZhciBlPWIuY2FsbCh0aGlzLmNvbnRleHRfLnlpZWxkQWxsSXRlcmF0b3JfLGEpOyRqc2NvbXAuZ2VuZXJhdG9yLmVuc3VyZUl0ZXJhdG9yUmVzdWx0SXNPYmplY3RfKGUpO2lmKCFlLmRvbmUpcmV0dXJuIHRoaXMuY29udGV4dF8uc3RvcF8oKSxlO3ZhciBoPWUudmFsdWV9Y2F0Y2gocSl7cmV0dXJuIHRoaXMuY29udGV4dF8ueWllbGRBbGxJdGVyYXRvcl89bnVsbCx0aGlzLmNvbnRleHRfLnRocm93XyhxKSx0aGlzLm5leHRTdGVwXygpfXRoaXMuY29udGV4dF8ueWllbGRBbGxJdGVyYXRvcl89bnVsbDtjLmNhbGwodGhpcy5jb250ZXh0XyxoKTtyZXR1cm4gdGhpcy5uZXh0U3RlcF8oKX07CiRqc2NvbXAuZ2VuZXJhdG9yLkVuZ2luZV8ucHJvdG90eXBlLm5leHRTdGVwXz1mdW5jdGlvbigpe2Zvcig7dGhpcy5jb250ZXh0Xy5uZXh0QWRkcmVzczspdHJ5e3ZhciBiPXRoaXMucHJvZ3JhbV8odGhpcy5jb250ZXh0Xyk7aWYoYilyZXR1cm4gdGhpcy5jb250ZXh0Xy5zdG9wXygpLHt2YWx1ZTpiLnZhbHVlLGRvbmU6ITF9fWNhdGNoKGEpe3RoaXMuY29udGV4dF8ueWllbGRSZXN1bHQ9dm9pZCAwLHRoaXMuY29udGV4dF8udGhyb3dfKGEpfXRoaXMuY29udGV4dF8uc3RvcF8oKTtpZih0aGlzLmNvbnRleHRfLmFicnVwdENvbXBsZXRpb25fKXtiPXRoaXMuY29udGV4dF8uYWJydXB0Q29tcGxldGlvbl87dGhpcy5jb250ZXh0Xy5hYnJ1cHRDb21wbGV0aW9uXz1udWxsO2lmKGIuaXNFeGNlcHRpb24pdGhyb3cgYi5leGNlcHRpb247cmV0dXJue3ZhbHVlOmIucmV0dXJuLGRvbmU6ITB9fXJldHVybnt2YWx1ZTp2b2lkIDAsZG9uZTohMH19OwokanNjb21wLmdlbmVyYXRvci5HZW5lcmF0b3JfPWZ1bmN0aW9uKGIpe3RoaXMubmV4dD1mdW5jdGlvbihhKXtyZXR1cm4gYi5uZXh0XyhhKX07dGhpcy50aHJvdz1mdW5jdGlvbihhKXtyZXR1cm4gYi50aHJvd18oYSl9O3RoaXMucmV0dXJuPWZ1bmN0aW9uKGEpe3JldHVybiBiLnJldHVybl8oYSl9O3RoaXNbU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfX07JGpzY29tcC5nZW5lcmF0b3IuY3JlYXRlR2VuZXJhdG9yPWZ1bmN0aW9uKGIsYSl7YT1uZXcgJGpzY29tcC5nZW5lcmF0b3IuR2VuZXJhdG9yXyhuZXcgJGpzY29tcC5nZW5lcmF0b3IuRW5naW5lXyhhKSk7JGpzY29tcC5zZXRQcm90b3R5cGVPZiYmYi5wcm90b3R5cGUmJiRqc2NvbXAuc2V0UHJvdG90eXBlT2YoYSxiLnByb3RvdHlwZSk7cmV0dXJuIGF9OwokanNjb21wLmFzeW5jRXhlY3V0ZVByb21pc2VHZW5lcmF0b3I9ZnVuY3Rpb24oYil7ZnVuY3Rpb24gYShlKXtyZXR1cm4gYi5uZXh0KGUpfWZ1bmN0aW9uIGMoZSl7cmV0dXJuIGIudGhyb3coZSl9cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKGUsaCl7ZnVuY3Rpb24gcShyKXtyLmRvbmU\/ZShyLnZhbHVlKTpQcm9taXNlLnJlc29sdmUoci52YWx1ZSkudGhlbihhLGMpLnRoZW4ocSxoKX1xKGIubmV4dCgpKX0pfTskanNjb21wLmFzeW5jRXhlY3V0ZVByb21pc2VHZW5lcmF0b3JGdW5jdGlvbj1mdW5jdGlvbihiKXtyZXR1cm4gJGpzY29tcC5hc3luY0V4ZWN1dGVQcm9taXNlR2VuZXJhdG9yKGIoKSl9OyRqc2NvbXAuYXN5bmNFeGVjdXRlUHJvbWlzZUdlbmVyYXRvclByb2dyYW09ZnVuY3Rpb24oYil7cmV0dXJuICRqc2NvbXAuYXN5bmNFeGVjdXRlUHJvbWlzZUdlbmVyYXRvcihuZXcgJGpzY29tcC5nZW5lcmF0b3IuR2VuZXJhdG9yXyhuZXcgJGpzY29tcC5nZW5lcmF0b3IuRW5naW5lXyhiKSkpfTsKY29uc3QgTGVhZD1mdW5jdGlvbihiKXtjb25zdCBhPU9iamVjdC5hc3NpZ24oe30sYiksYz1hLmxlYWRJZHx8YS5uYW1lO2I9YS5sZWFkTm9kZTtjb25zdCBlPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJmb3JtIitjKTtsZXQgaD0hMSxxPWUucXVlcnlTZWxlY3RvcigiLmxlYWRFbWFpbCBbZGF0YS1zdWJqZWN0XSIpLmlubmVyVGV4dCxyPWUucXVlcnlTZWxlY3RvcigiLmxlYWRFbWFpbCBbZGF0YS1ib2R5XSIpLmlubmVySFRNTCx6PWEudHJpZ2dlcixrPXt9O2NvbnN0IEE9KCk9PntBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKGUuZWxlbWVudHMsZD0+e2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgZC5hdHRyaWJ1dGVzLm5hbWUpe3ZhciBmPWQuYXR0cmlidXRlcy5uYW1lLnZhbHVlfHwhMTtzd2l0Y2goITApe2Nhc2UgWyJuYW1lIl0uaW5jbHVkZXMoZi50b0xvd2VyQ2FzZSgpKTpjYXNlIFsiZmlyc3RuYW1lIl0uaW5jbHVkZXMoZi50b0xvd2VyQ2FzZSgpKTpjYXNlIFsibGFzdG5hbWUiXS5pbmNsdWRlcyhmLnRvTG93ZXJDYXNlKCkpOmNhc2UgImVtYWlsIj09CmYudG9Mb3dlckNhc2UoKTpjYXNlICJkYXRhIj09ZjpicmVhaztjYXNlICJwaG9uZSI9PWYudG9Mb3dlckNhc2UoKTpjYXNlICJ0ZWwiPT1kLnR5cGU6SU1hc2soZCx7bWFzazpbe21hc2s6IjAwMCAwMDAtMDAwMCJ9LHttYXNrOiIxIDAwMCAwMDAtMDAwMCJ9XX0pfX19KTsidW5kZWZpbmVkIiE9PXR5cGVvZiBjbGllbnRTdG9yYWdlJiZBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKGUuZWxlbWVudHMsZD0+e2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgZC5hdHRyaWJ1dGVzLm5hbWUpe3ZhciBmPWQuYXR0cmlidXRlcy5uYW1lLnZhbHVlfHwhMTtzd2l0Y2goITApe2Nhc2UgWyJuYW1lIl0uaW5jbHVkZXMoZi50b0xvd2VyQ2FzZSgpKTp2YXIgZztmPW51bGwhPShnPWNsaWVudFN0b3JhZ2UuZ2V0KCJmaXJzdG5hbWUiKSk\/ZzoiIjt2YXIgbDtnPW51bGwhPShsPWNsaWVudFN0b3JhZ2UuZ2V0KCJsYXN0bmFtZSIpKT9sOiIiO2w9ZisoIiIhPWc\/IiAiK2NsaWVudFN0b3JhZ2UuZ2V0KCJsYXN0bmFtZSIpOgoiIik7ZC52YWx1ZT1sO2JyZWFrO2Nhc2UgWyJmaXJzdG5hbWUiXS5pbmNsdWRlcyhmLnRvTG93ZXJDYXNlKCkpOmxldCBtO2QudmFsdWU9bnVsbCE9KG09Y2xpZW50U3RvcmFnZS5nZXQoImZpcnN0bmFtZSIpKT9tOiIiO2JyZWFrO2Nhc2UgWyJsYXN0bmFtZSJdLmluY2x1ZGVzKGYudG9Mb3dlckNhc2UoKSk6bGV0IG47ZC52YWx1ZT1udWxsIT0obj1jbGllbnRTdG9yYWdlLmdldCgibGFzdG5hbWUiKSk\/bjoiIjticmVhaztjYXNlICJlbWFpbCI9PWYudG9Mb3dlckNhc2UoKTpsZXQgcDtkLnZhbHVlPW51bGwhPShwPWNsaWVudFN0b3JhZ2UuZ2V0KCJlbWFpbCIpKT9wOiIiO2JyZWFrO2Nhc2UgInBob25lIj09Zi50b0xvd2VyQ2FzZSgpOmxldCB1O2QudmFsdWU9bnVsbCE9KHU9Y2xpZW50U3RvcmFnZS5nZXQoInBob25lIikpP3U6IiJ9fX0pfSxFPSgpPT57aWYoaClyZXR1cm4hMTtoPSEwO0IoKS50aGVuKGQ9PntpZighZClyZXR1cm4gdigicG9wdXAudmFsaWRhdGlvbkZhaWxlZCIpLApoPSExO2EudmFsaWRhdGVkPSEwO0MoKTtEKCl9KX0sQz0oKT0+e0FycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwoZS5lbGVtZW50cyxkPT57aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBkLmF0dHJpYnV0ZXMubmFtZSl7dmFyIGY9ZC5hdHRyaWJ1dGVzLm5hbWUudmFsdWV8fCExO2lmKGYpc3dpdGNoKGtbZl09ZC52YWx1ZSwhMCl7Y2FzZSBbIm5hbWUiXS5pbmNsdWRlcyhmLnRvTG93ZXJDYXNlKCkpOmQ9ZC52YWx1ZS5zcGxpdCgiICIpO2sudXNlckZpcnN0TmFtZSs9ZC5zaGlmdCgpO2sudXNlckxhc3ROYW1lKz1kLmpvaW4oIiAiKTticmVhaztjYXNlIFsiZmlyc3RuYW1lIl0uaW5jbHVkZXMoZi50b0xvd2VyQ2FzZSgpKTprLnVzZXJGaXJzdE5hbWUrPWQudmFsdWU7YnJlYWs7Y2FzZSBbImxhc3RuYW1lIl0uaW5jbHVkZXMoZi50b0xvd2VyQ2FzZSgpKTprLnVzZXJMYXN0TmFtZSs9ZC52YWx1ZTticmVhaztjYXNlICJlbWFpbCI9PWYudG9Mb3dlckNhc2UoKTprLnVzZXJFbWFpbD0KZC52YWx1ZTticmVhaztjYXNlICJwaG9uZSI9PWYudG9Mb3dlckNhc2UoKTpjYXNlICJ0ZWwiPT1kLnR5cGU6SU1hc2soZCx7bWFzazpbe21hc2s6IjAwMCAwMDAtMDAwMCJ9LHttYXNrOiIxIDAwMCAwMDAtMDAwMCJ9XX0pO2sudXNlclBob25lPWQudmFsdWU7YnJlYWs7Y2FzZSAiZGF0YSI9PWY6Zm9yKGxldCBnIGluIGQuZGF0YXNldClrW2cucmVwbGFjZSgvLS4vZyxsPT5sWzFdLnRvVXBwZXJDYXNlKCkpXT1kLmRhdGFzZXRbZ119fX0pfSxEPSgpPT57aWYoITE9PT1hLm9uQmVmb3JlU3VibWl0KGEpKXJldHVybiBhLmNsb3NlT25TdWJtaXQmJnQoKSwhMTt2YXIgZD14KHdpbmRvdy5sb2NhdGlvbi5ocmVmKTtpZihDb29raWVzLmdldChhLmxlYWRJZCtkKSlyZXR1cm4gaD0hMSx5KCEwKSwhMTtGKCk7digicG9wdXAuc3VibWl0Iik7bGV0IGY7aWYoIkRpZ2l0YWxSZXRhaWwiPT0obnVsbD09KGY9ayk\/dm9pZCAwOmYuaW52b2tlcikpe2Q9Y2xpZW50U3RvcmFnZS5nZXQoImNsaWVudFN0b3JhZ2UiKXx8Cnt9O2xldCBuLHA7ay5sZWFkSW52b2tlclNJRD1HKChudWxsPT1kP3ZvaWQgMDpudWxsPT0obj1kLmNvbnRhY3QpP3ZvaWQgMDpuLmVtYWlsKSsobnVsbD09ZD92b2lkIDA6bnVsbD09KHA9ZC5jb250YWN0KT92b2lkIDA6cC5waG9uZSkpO2VtYWlsSGFuZGxlci5sZWFkSW52b2tlcj0iRGlnaXRhbFJldGFpbCI7ZW1haWxIYW5kbGVyLmRpZ2l0YWxSZXRhaWxTSUQ9ay5sZWFkSW52b2tlclNJRH12YXIgZztxPShudWxsPT0oZz1lLnF1ZXJ5U2VsZWN0b3IoIi5sZWFkRW1haWwgW2RhdGEtc3ViamVjdF0iKSk\/dm9pZCAwOmcuaW5uZXJUZXh0KXx8cTtsZXQgbDtyPShudWxsPT0obD1lLnF1ZXJ5U2VsZWN0b3IoIi5sZWFkRW1haWwgW2RhdGEtYm9keV0iKSk\/dm9pZCAwOmwuaW5uZXJIVE1MKXx8cjtlbWFpbEhhbmRsZXIuYm9keT1IKCk7ZW1haWxIYW5kbGVyLnN1YmplY3Q9cTtPYmplY3QuYXNzaWduKGVtYWlsSGFuZGxlcixrKTsic3RyaW5nIj09dHlwZW9mIGVtYWlsSGFuZGxlci51c2VyTmFtZSYmCihnPWVtYWlsSGFuZGxlci51c2VyTmFtZS5zcGxpdCgiICIpLGVtYWlsSGFuZGxlci51c2VyRmlyc3ROYW1lPWcuc2hpZnQoKSxlbWFpbEhhbmRsZXIudXNlckxhc3ROYW1lPWcuam9pbigiICIpKTtlbWFpbEhhbmRsZXIub25CZWZvcmVTaG93Q29uc2VudD1mdW5jdGlvbigpe2VtYWlsSGFuZGxlci5vbkJlZm9yZVNob3dDb25zZW50PSExfTtlbWFpbEhhbmRsZXIub25BZnRlckNvbnNlbnQ9ZnVuY3Rpb24obil7ZW1haWxIYW5kbGVyLm9uQmVmb3JlU2hvd0NvbnNlbnQ9ITE7ZW1haWxIYW5kbGVyLm9uQWZ0ZXJDb25zZW50PSExfTtlbWFpbEhhbmRsZXIub25EdXBsaWNhdGVTZW5kPWZ1bmN0aW9uKCl7ZW1haWxIYW5kbGVyLnJlc2V0Q2FsbGJhY2tzKCl9O2VtYWlsSGFuZGxlci5jYWxsYmFjaz1mdW5jdGlvbihuKXt2YXIgcD0hMTthLnNob3dFbWFpbENvbmZpcm1hdGlvbiYmKHA9Z2V0TWFpbFNlbnRIYW5kbGVyKCJfIithLm5hbWUpLHAudGltZW91dENhbGxiYWNrPWZ1bmN0aW9uKCl7ZS5yZXNldCgpfSk7CmlmKG4pdigicG9wdXAubGVhZF9zZW50IiksImZ1bmN0aW9uIj09dHlwZW9mIG9yaWdpbmFsQ2FsbGJhY2smJm9yaWdpbmFsQ2FsbGJhY2suY2FsbCgpLCJvblN1Ym1pdCI9PWEuY29va2llQ3JlYXRlJiZDb29raWVzLnNldChhLmNvb2tpZU5hbWUsIjEiLGEuY29va2llRHVyYXRpb24sIi8iKSxhLnN1Ym1pdEZsYWcmJkNvb2tpZXMuc2V0KCJwb3B1cEZvcm1GaWxsZWQiLCIxIiwxLCIvIiksYS5jbG9zZU9uU3VibWl0JiZ0KCJDT05TRU5UIikscD9wLnNob3dTdWNjZXNzKCk6MDwkKGBmb3JtI2Zvcm0ke2EubmFtZX1fY29uZmlybWApLmxlbmd0aCYmJChgZm9ybSNmb3JtJHthLm5hbWV9X2NvbmZpcm1gKS50cmlnZ2VyKCJzdWJtaXQiKTtlbHNle3B8fChwPWdldE1haWxTZW50SGFuZGxlcigpKTt0cnl7cC5zaG93RmFpbCgpfWNhdGNoKHUpe319eShuKTt3KCk7c2V0VGltZW91dChlbWFpbEhhbmRsZXIucmVzZXRDYWxsYmFja3MoKSwxRTMpO24mJihuPXgod2luZG93LmxvY2F0aW9uLmhyZWYpLApDb29raWVzLnNldChhLmxlYWRJZCtuLCIxIiwxLCIvIikpfTthLnN1Ym1pdHRlZD0hMDtpZigiZnVuY3Rpb24iPT10eXBlb2YgYS5vbkJlZm9yZVNlbmRNYWlsJiYwPT1hLm9uQmVmb3JlU2VuZE1haWwuY2FsbCgpKXJldHVybiExO2xldCBtPXt9OyJmdW5jdGlvbiI9PXR5cGVvZiBhLm9uQURGJiYobT1hLm9uQURGLmNhbGwoKSk7Im1ha2UgbW9kZWwgeWVhciBzdG9ja051bWJlciB0cmltIHZpbiBwcmljZSBjYXJpZCIuc3BsaXQoIiAiKS5mb3JFYWNoKG49PntlbWFpbEhhbmRsZXJbbl09bVtuXXx8ZW1haWxIYW5kbGVyW25dfSk7YS5wdXJjaGFzZUludGVudFBvcHVwfHxlbWFpbEhhbmRsZXIuc2VuZE1haWwoYS5ieXBhc3NDb25zZW50KTtyZXR1cm4hMH0sdz0oKT0+e2s9e3VzZXJGaXJzdE5hbWU6IiIsdXNlckxhc3ROYW1lOiIiLHVzZXJFbWFpbDoiIix1c2VyUGhvbmU6IiJ9O2g9ITF9LEI9ZnVuY3Rpb24oKXtyZXR1cm4gJGpzY29tcC5hc3luY0V4ZWN1dGVQcm9taXNlR2VuZXJhdG9yRnVuY3Rpb24oZnVuY3Rpb24qKCl7aWYoYS5za2lwVmFsaWRhdGlvbilyZXR1cm4hMDsKY29uc3QgZD1uZXcgUHJpc3RpbmUoZSx7Y2xhc3NUbzoiZm9ybS1sYWJlbCIsZXJyb3JDbGFzczoiaW52YWxpZCJ9LCExKTtsZXQgZj1lLnF1ZXJ5U2VsZWN0b3IoJ1tuYW1lPSJwaG9uZW51bSJdJyksZz0hMCxsPSEwO2lmKGYucmVxdWlyZWR8fGYudmFsdWUpZz1udWxsLGc9eWllbGQgSShmLnZhbHVlKTtudWxsPT09Zz8oZC5hZGRWYWxpZGF0b3IoZixmdW5jdGlvbihtKXttPW0ucmVwbGFjZSgvW14wLTldKy9naSwiIik7IjEiPT1tWzBdJiYobT1tLnN1YnN0cmluZygxKSk7bT1wYXJzZUludChtLnN1YnN0cmluZygwLDMpKTtyZXR1cm4gZz1bNDM4LDUxNCwyNjMsNDUwLDU3OSw4MTksMjQ5LDcwNSwyMjYsNTE5LDI4OSwzNjUsOTA1LDQxNiw0MzcsNjQ3LDM0Myw2MTMsNzA5LDg3Myw0MTgsNTgxLDUwNiw5MDJdLmluY2x1ZGVzKG0pfSwiRW50ZXIgYSB2YWxpZCBwaG9uZSBudW1iZXIiLDUsITEpLGw9ZC52YWxpZGF0ZSgpKToobD1kLnZhbGlkYXRlKCkmJmcsZi5wYXJlbnRFbGVtZW50LmNsYXNzTGlzdC50b2dnbGUoImludmFsaWQiLAohZykpO2YucmVxdWlyZWQmJiFnJiYidW5kZWZpbmVkIiE9dHlwZW9mIGVtYWlsSGFuZGxlciYmKGVtYWlsSGFuZGxlci5waG9uZVZhbGlkYXRpb25BdHRlbXB0cysrLGVtYWlsSGFuZGxlci5waG9uZU1hbmRhdG9yeT0hMCk7cmV0dXJuIGx9KX0sST1kPT4kanNjb21wLmFzeW5jRXhlY3V0ZVByb21pc2VHZW5lcmF0b3JGdW5jdGlvbihmdW5jdGlvbiooKXtsZXQgZj1udWxsO2Q9ZC5yZXBsYWNlKC9bXjAtOV0rL2dpLCIiKTt5aWVsZCBheGlvcy5nZXQoIi9wcm94eV9yZDJjL3NpdGVzL3N2Yy92YWxpZGF0ZVBob25lTnVtYmVyLnBocCIse3RpbWVvdXQ6MkUzLGRhdGFUeXBlOiJqc29uIixwYXJhbXM6e3Bob25lOmR9LHJlc3BvbnNlVHlwZToianNvbiJ9KS50aGVuKGZ1bmN0aW9uKGcpeyJ1bmRlZmluZWQiIT09dHlwZW9mIGcuZGF0YS5pc09rJiYoZj1nLmRhdGEucGhvbmVOdW1iZXJJc1ZhbGlkKX0pLmNhdGNoKGZ1bmN0aW9uKGcpe30pO3JldHVybiBmfSksRj0oKT0+e2NvbnN0IGQ9CmRvY3VtZW50LmZvcm1zLmVtYWlsbXNnZnJtfHwhMTtpZighZClyZXR1cm4hMTtkLnF1ZXJ5U2VsZWN0b3IoJ1tuYW1lPSJsYWJlbCInKS52YWx1ZT1gJHthLnR5cGV9ICgke2suY29uZGl0aW9ufSlgO2QucXVlcnlTZWxlY3RvcignW25hbWU9InNlY3Rpb24iJykudmFsdWU9ay5jb25kaXRpb259LHg9ZD0+Wy4uLmRdLnJlZHVjZSgoZixnKT0+TWF0aC5pbXVsKDMxLGYpK2cuY2hhckNvZGVBdCgwKXwwLDApLEg9ZnVuY3Rpb24oKXtsZXQgZD1yLGY9e25hbWU6WyJNTkFNRSJdLHBob25lbnVtOlsiTVBIT05FIiwiUEhPTkUiXSxlbWFpbDpbIk1NQUlMIl19O09iamVjdC5rZXlzKGspLmZvckVhY2goZz0+e3ZhciBsPW5ldyBSZWdFeHAoIntcXCQiK2cudG9VcHBlckNhc2UoKSsifSIsImciKTtkPWQucmVwbGFjZShsLGtbZ10pO2ZbZ10mJihsPW5ldyBSZWdFeHAoIntcXCQoIitmW2ddLmpvaW4oInwiKSsiKX0iLCJnIiksZD1kLnJlcGxhY2UobCxrW2ddKSl9KTtyZXR1cm4gZH0sdj1mdW5jdGlvbihkKXt2YXIgZj0KYS50eXBlO2lmKCFkKXJldHVybiExO2lmKCJwb3B1cC5sZWFkX3NlbnQiPT1kKXt2YXIgZz0iY2xpY2siLnJlcGxhY2UoLyheW2Etel17MX0pL2csZnVuY3Rpb24obSl7cmV0dXJuIG0udG9VcHBlckNhc2UoKX0pLGw9ZDJjbWVkaWEucGFnZURlcGFydG1lbnQoKTtnYVRyYWNrKCJjLl90cmFja0V2ZW50IiwiUG9wdXAtbGVhZHMiLGcsbCwxKX0idW5kZWZpbmVkIiE9dHlwZW9mIGFjdGl2ZVVzZXJQcm9maWxlTW5nJiYidW5kZWZpbmVkIiE9dHlwZW9mIGFjdGl2ZVVzZXJQcm9maWxlTW5nLmxvZ1BhZ2VWaWV3RXZlbnQ\/KCJ1bmRlZmluZWQiIT09dHlwZW9mIGRlYnVnJiZkZWJ1ZygiTG9nIEV2ZW50IixkLGYsc2VsZiksYWN0aXZlVXNlclByb2ZpbGVNbmcubG9nUGFnZVZpZXdFdmVudChkLGYpKToidW5kZWZpbmVkIiE9PXR5cGVvZiBkZWJ1ZyYmZGVidWcoIiFVTkxPR0dFRCBFVkVOVCEiLGQsZil9LHQ9KCk9PnthLm9uQmVmb3JlQ2xvc2UoYSk7dygpO01vZGFsc1tjXSYmTW9kYWxzW2NdLmNsb3NlKCl9LAp5PWQ9PnthLm9uQWZ0ZXJTdWJtaXQoYSxkKTthLmNsb3NlT25TdWJtaXQmJmQmJnQoKTtkJiZlLnJlc2V0KCl9LEc9ZD0+e2xldCBmPTA7aWYoMD09ZC5sZW5ndGgpcmV0dXJuIGY7Zm9yKGxldCBnPTAsbD1kLmxlbmd0aDtnPGw7ZysrKXtsZXQgbT1kLmNoYXJDb2RlQXQoZyk7Zj0oZjw8NSktZittO2Z8PTB9cmV0dXJuIE1hdGguYWJzKGYpfTsoKCk9PnskKGUpLnRyaWdnZXIoInBvcHVwaXplci5vbk9wZW4iLCQoZSkpO3coKTtBKCk7ZS5vbnN1Ym1pdD1kPT57ZC5wcmV2ZW50RGVmYXVsdCgpO0UoKX07YS5vbkJlZm9yZU9wZW4oYSl9KSgpO3JldHVybntsZWFkSWQ6YyxsZWFkTm9kZTpiLHRyaWdnZXI6eixkaXNwbGF5OigpPT57YS5kaXNwbGF5P2EuZGlzcGxheShhKTooYS5jb250ZW50U3JjPWBsZWFkJHtjfWAsTW9kYWxzW2NdfHwoTW9kYWxzW2NdPW5ldyBNb2RhbChjLGEpKSxNb2RhbHNbY10uZGlzcGxheSgpKX0sY2xvc2U6dH19LExlYWRIYW5kbGVyPWZ1bmN0aW9uKCl7Y29uc3QgYj0Ke29uQmVmb3JlT3BlbjooKT0+e30sb25CZWZvcmVWYWxpZGF0aW9uOigpPT57fSxvbkJlZm9yZVN1Ym1pdDooKT0+e30sb25BZnRlclN1Ym1pdDooKT0+e30sb25CZWZvcmVDYW5jZWw6KCk9Pnt9LG9uQmVmb3JlQ2xvc2U6KCk9Pnt9LG9uQ2xvc2U6KCk9Pnt9LGZvcm06e2VtYWlsaWQ6bnVsbCxvZmZlcnR5cGU6bnVsbCxuYW1lOm51bGwsc2VuZFRvOm51bGwsc2VuZFRvQURGOm51bGwsT0tCdXR0b25DbGFzczoic3VibWl0QnRuIixDYW5jZWxCdXR0b25DbGFzczoiY2FuY2VsQnRuIixzaG93RW1haWxDb25maXJtYXRpb246ITEsZnJvbUFBOiExfSxnZXRJZFN1ZmZpeDphPT5NYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqRGF0ZS5ub3coKSksbW9kZToic3RhdGljIix0cmlnZ2VyOiJhdXRvIixkZWxheTohMSxkaXNwbGF5OiExLHN1Ym1pdHRlZDohMSxjbG9zZU9uU3VibWl0OiEwLHN1Ym1pdEZsYWc6ITEsYnlwYXNzQ29uc2VudDohMSxzaG93RW1haWxDb25maXJtYXRpb246ITAscHVyY2hhc2VJbnRlbnRQb3B1cDohMX07CmluaXQ9KCk9PnsidW5kZWZpbmVkIiE9PXR5cGVvZiB3aW5kb3cuQWJzdHJhY3RVc2VkU3JwT2JqZWN0JiYobmV3IEFic3RyYWN0VXNlZFNycE9iamVjdCh7bmFtZToiVmlld0Rpc2NvdmVyQnRuSGFuZGxlciJ9KSkuYWRkVXNlZFNycEV2ZW50T2JzZXJ2ZXIoImNvbnRlbnQiLGFkZExlYWRFdmVudHMpLmluaXRVc2VkU3JwT2JzZXJ2ZXIoKTthZGRMZWFkRXZlbnRzKCl9O2FkZExlYWRFdmVudHM9KCk9Pntkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCJbZGF0YS1sZWFkLXRyaWdnZXJdIikuZm9yRWFjaChhPT57dGhpcy5pbml0TGVhZFRyaWdnZXIoYSl9KX07dGhpcy5pbml0TGVhZFRyaWdnZXI9YT0+e2EuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLGM9PntjLnN0b3BQcm9wYWdhdGlvbigpO2M9YS5kYXRhc2V0LmxlYWRUcmlnZ2VyO2xldCBlPWEuZGF0YXNldC5sZWFkaWR8fCExO0xlYWRDb25maWdzW2NdLnRyaWdnZXI9YTtjPXRoaXMuZ2V0TGVhZChjLGUpO2MuZGlzcGxheSgpOwphLmRhdGFzZXQubGVhZGlkPWMubGVhZElkfSl9O3RoaXMuZ2V0TGVhZD0oYSxjKT0+e2lmKCEoYz1MZWFkc1tjfHxhXSkpe3tjPWE7bGV0IGU9T2JqZWN0LmFzc2lnbih7fSxiKTtPYmplY3QuYXNzaWduKGUsTGVhZENvbmZpZ3NbYV0pO2NvbnN0IGg9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYGxlYWQke2F9YCk7aD8oYT1oLCJzdGF0aWMiIT1lLm1vZGUmJihjPWAke2UubmFtZX1fJHtlLmdldElkU3VmZml4KGUpfWAsYT1oLmNsb25lTm9kZSghMCksYS5zZXRBdHRyaWJ1dGUoImlkIiwibGVhZCIrYyksYS5xdWVyeVNlbGVjdG9yKCJmb3JtIikuc2V0QXR0cmlidXRlKCJpZCIsImZvcm0iK2MpLGRvY3VtZW50LmJvZHkuYXBwZW5kKGEpKSxlLmxlYWRJZD1jLGUubGVhZE5vZGU9YSxMZWFkc1tjXT1uZXcgTGVhZChlKSxjPUxlYWRzW2NdKTpjPSExfX1yZXR1cm4gY307cmV0dXJue2luaXQsaW5pdExlYWRUcmlnZ2VyLGdldExlYWR9fTt2YXIgTGVhZHM9TGVhZHN8fHt9O2RvY1JlYWR5QXJyLnB1c2goTGVhZEhhbmRsZXIoKS5pbml0KTsKLyoqIC9tL2pzL3ZhbmlsbGFqcy9heGlvcy5taW4uanMgKiovCiFmdW5jdGlvbihlLHQpeyJvYmplY3QiPT10eXBlb2YgZXhwb3J0cyYmIm9iamVjdCI9PXR5cGVvZiBtb2R1bGU\/bW9kdWxlLmV4cG9ydHM9dCgpOiJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ\/ZGVmaW5lKFtdLHQpOiJvYmplY3QiPT10eXBlb2YgZXhwb3J0cz9leHBvcnRzLmF4aW9zPXQoKTplLmF4aW9zPXQoKX0odGhpcywoZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oZSl7dmFyIHQ9e307ZnVuY3Rpb24gbihyKXtpZih0W3JdKXJldHVybiB0W3JdLmV4cG9ydHM7dmFyIG89dFtyXT17aTpyLGw6ITEsZXhwb3J0czp7fX07cmV0dXJuIGVbcl0uY2FsbChvLmV4cG9ydHMsbyxvLmV4cG9ydHMsbiksby5sPSEwLG8uZXhwb3J0c31yZXR1cm4gbi5tPWUsbi5jPXQsbi5kPWZ1bmN0aW9uKGUsdCxyKXtuLm8oZSx0KXx8T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7ZW51bWVyYWJsZTohMCxnZXQ6cn0pfSxuLnI9ZnVuY3Rpb24oZSl7InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJlN5bWJvbC50b1N0cmluZ1RhZyYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsU3ltYm9sLnRvU3RyaW5nVGFnLHt2YWx1ZToiTW9kdWxlIn0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KX0sbi50PWZ1bmN0aW9uKGUsdCl7aWYoMSZ0JiYoZT1uKGUpKSw4JnQpcmV0dXJuIGU7aWYoNCZ0JiYib2JqZWN0Ij09dHlwZW9mIGUmJmUmJmUuX19lc01vZHVsZSlyZXR1cm4gZTt2YXIgcj1PYmplY3QuY3JlYXRlKG51bGwpO2lmKG4ucihyKSxPYmplY3QuZGVmaW5lUHJvcGVydHkociwiZGVmYXVsdCIse2VudW1lcmFibGU6ITAsdmFsdWU6ZX0pLDImdCYmInN0cmluZyIhPXR5cGVvZiBlKWZvcih2YXIgbyBpbiBlKW4uZChyLG8sZnVuY3Rpb24odCl7cmV0dXJuIGVbdF19LmJpbmQobnVsbCxvKSk7cmV0dXJuIHJ9LG4ubj1mdW5jdGlvbihlKXt2YXIgdD1lJiZlLl9fZXNNb2R1bGU\/ZnVuY3Rpb24oKXtyZXR1cm4gZS5kZWZhdWx0fTpmdW5jdGlvbigpe3JldHVybiBlfTtyZXR1cm4gbi5kKHQsImEiLHQpLHR9LG4ubz1mdW5jdGlvbihlLHQpe3JldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSx0KX0sbi5wPSIiLG4obi5zPTExKX0oW2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigzKSxvPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7ZnVuY3Rpb24gaShlKXtyZXR1cm4iW29iamVjdCBBcnJheV0iPT09by5jYWxsKGUpfWZ1bmN0aW9uIHMoZSl7cmV0dXJuIHZvaWQgMD09PWV9ZnVuY3Rpb24gYShlKXtyZXR1cm4gbnVsbCE9PWUmJiJvYmplY3QiPT10eXBlb2YgZX1mdW5jdGlvbiB1KGUpe2lmKCJbb2JqZWN0IE9iamVjdF0iIT09by5jYWxsKGUpKXJldHVybiExO3ZhciB0PU9iamVjdC5nZXRQcm90b3R5cGVPZihlKTtyZXR1cm4gbnVsbD09PXR8fHQ9PT1PYmplY3QucHJvdG90eXBlfWZ1bmN0aW9uIGMoZSl7cmV0dXJuIltvYmplY3QgRnVuY3Rpb25dIj09PW8uY2FsbChlKX1mdW5jdGlvbiBmKGUsdCl7aWYobnVsbCE9ZSlpZigib2JqZWN0IiE9dHlwZW9mIGUmJihlPVtlXSksaShlKSlmb3IodmFyIG49MCxyPWUubGVuZ3RoO248cjtuKyspdC5jYWxsKG51bGwsZVtuXSxuLGUpO2Vsc2UgZm9yKHZhciBvIGluIGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsbykmJnQuY2FsbChudWxsLGVbb10sbyxlKX1lLmV4cG9ydHM9e2lzQXJyYXk6aSxpc0FycmF5QnVmZmVyOmZ1bmN0aW9uKGUpe3JldHVybiJbb2JqZWN0IEFycmF5QnVmZmVyXSI9PT1vLmNhbGwoZSl9LGlzQnVmZmVyOmZ1bmN0aW9uKGUpe3JldHVybiBudWxsIT09ZSYmIXMoZSkmJm51bGwhPT1lLmNvbnN0cnVjdG9yJiYhcyhlLmNvbnN0cnVjdG9yKSYmImZ1bmN0aW9uIj09dHlwZW9mIGUuY29uc3RydWN0b3IuaXNCdWZmZXImJmUuY29uc3RydWN0b3IuaXNCdWZmZXIoZSl9LGlzRm9ybURhdGE6ZnVuY3Rpb24oZSl7cmV0dXJuInVuZGVmaW5lZCIhPXR5cGVvZiBGb3JtRGF0YSYmZSBpbnN0YW5jZW9mIEZvcm1EYXRhfSxpc0FycmF5QnVmZmVyVmlldzpmdW5jdGlvbihlKXtyZXR1cm4idW5kZWZpbmVkIiE9dHlwZW9mIEFycmF5QnVmZmVyJiZBcnJheUJ1ZmZlci5pc1ZpZXc\/QXJyYXlCdWZmZXIuaXNWaWV3KGUpOmUmJmUuYnVmZmVyJiZlLmJ1ZmZlciBpbnN0YW5jZW9mIEFycmF5QnVmZmVyfSxpc1N0cmluZzpmdW5jdGlvbihlKXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGV9LGlzTnVtYmVyOmZ1bmN0aW9uKGUpe3JldHVybiJudW1iZXIiPT10eXBlb2YgZX0saXNPYmplY3Q6YSxpc1BsYWluT2JqZWN0OnUsaXNVbmRlZmluZWQ6cyxpc0RhdGU6ZnVuY3Rpb24oZSl7cmV0dXJuIltvYmplY3QgRGF0ZV0iPT09by5jYWxsKGUpfSxpc0ZpbGU6ZnVuY3Rpb24oZSl7cmV0dXJuIltvYmplY3QgRmlsZV0iPT09by5jYWxsKGUpfSxpc0Jsb2I6ZnVuY3Rpb24oZSl7cmV0dXJuIltvYmplY3QgQmxvYl0iPT09by5jYWxsKGUpfSxpc0Z1bmN0aW9uOmMsaXNTdHJlYW06ZnVuY3Rpb24oZSl7cmV0dXJuIGEoZSkmJmMoZS5waXBlKX0saXNVUkxTZWFyY2hQYXJhbXM6ZnVuY3Rpb24oZSl7cmV0dXJuInVuZGVmaW5lZCIhPXR5cGVvZiBVUkxTZWFyY2hQYXJhbXMmJmUgaW5zdGFuY2VvZiBVUkxTZWFyY2hQYXJhbXN9LGlzU3RhbmRhcmRCcm93c2VyRW52OmZ1bmN0aW9uKCl7cmV0dXJuKCJ1bmRlZmluZWQiPT10eXBlb2YgbmF2aWdhdG9yfHwiUmVhY3ROYXRpdmUiIT09bmF2aWdhdG9yLnByb2R1Y3QmJiJOYXRpdmVTY3JpcHQiIT09bmF2aWdhdG9yLnByb2R1Y3QmJiJOUyIhPT1uYXZpZ2F0b3IucHJvZHVjdCkmJigidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdyYmInVuZGVmaW5lZCIhPXR5cGVvZiBkb2N1bWVudCl9LGZvckVhY2g6ZixtZXJnZTpmdW5jdGlvbiBlKCl7dmFyIHQ9e307ZnVuY3Rpb24gbihuLHIpe3UodFtyXSkmJnUobik\/dFtyXT1lKHRbcl0sbik6dShuKT90W3JdPWUoe30sbik6aShuKT90W3JdPW4uc2xpY2UoKTp0W3JdPW59Zm9yKHZhciByPTAsbz1hcmd1bWVudHMubGVuZ3RoO3I8bztyKyspZihhcmd1bWVudHNbcl0sbik7cmV0dXJuIHR9LGV4dGVuZDpmdW5jdGlvbihlLHQsbil7cmV0dXJuIGYodCwoZnVuY3Rpb24odCxvKXtlW29dPW4mJiJmdW5jdGlvbiI9PXR5cGVvZiB0P3IodCxuKTp0fSkpLGV9LHRyaW06ZnVuY3Rpb24oZSl7cmV0dXJuIGUudHJpbT9lLnRyaW0oKTplLnJlcGxhY2UoL15ccyt8XHMrJC9nLCIiKX0sc3RyaXBCT006ZnVuY3Rpb24oZSl7cmV0dXJuIDY1Mjc5PT09ZS5jaGFyQ29kZUF0KDApJiYoZT1lLnNsaWNlKDEpKSxlfX19LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigwKSxvPW4oMTcpLGk9big1KSxzPXsiQ29udGVudC1UeXBlIjoiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIn07ZnVuY3Rpb24gYShlLHQpeyFyLmlzVW5kZWZpbmVkKGUpJiZyLmlzVW5kZWZpbmVkKGVbIkNvbnRlbnQtVHlwZSJdKSYmKGVbIkNvbnRlbnQtVHlwZSJdPXQpfXZhciB1LGM9e3RyYW5zaXRpb25hbDp7c2lsZW50SlNPTlBhcnNpbmc6ITAsZm9yY2VkSlNPTlBhcnNpbmc6ITAsY2xhcmlmeVRpbWVvdXRFcnJvcjohMX0sYWRhcHRlcjooKCJ1bmRlZmluZWQiIT10eXBlb2YgWE1MSHR0cFJlcXVlc3R8fCJ1bmRlZmluZWQiIT10eXBlb2YgcHJvY2VzcyYmIltvYmplY3QgcHJvY2Vzc10iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHByb2Nlc3MpKSYmKHU9big2KSksdSksdHJhbnNmb3JtUmVxdWVzdDpbZnVuY3Rpb24oZSx0KXtyZXR1cm4gbyh0LCJBY2NlcHQiKSxvKHQsIkNvbnRlbnQtVHlwZSIpLHIuaXNGb3JtRGF0YShlKXx8ci5pc0FycmF5QnVmZmVyKGUpfHxyLmlzQnVmZmVyKGUpfHxyLmlzU3RyZWFtKGUpfHxyLmlzRmlsZShlKXx8ci5pc0Jsb2IoZSk\/ZTpyLmlzQXJyYXlCdWZmZXJWaWV3KGUpP2UuYnVmZmVyOnIuaXNVUkxTZWFyY2hQYXJhbXMoZSk\/KGEodCwiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkO2NoYXJzZXQ9dXRmLTgiKSxlLnRvU3RyaW5nKCkpOnIuaXNPYmplY3QoZSl8fHQmJiJhcHBsaWNhdGlvbi9qc29uIj09PXRbIkNvbnRlbnQtVHlwZSJdPyhhKHQsImFwcGxpY2F0aW9uL2pzb24iKSxmdW5jdGlvbihlLHQsbil7aWYoci5pc1N0cmluZyhlKSl0cnl7cmV0dXJuKHR8fEpTT04ucGFyc2UpKGUpLHIudHJpbShlKX1jYXRjaChlKXtpZigiU3ludGF4RXJyb3IiIT09ZS5uYW1lKXRocm93IGV9cmV0dXJuKG58fEpTT04uc3RyaW5naWZ5KShlKX0oZSkpOmV9XSx0cmFuc2Zvcm1SZXNwb25zZTpbZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy50cmFuc2l0aW9uYWx8fGMudHJhbnNpdGlvbmFsLG49dCYmdC5zaWxlbnRKU09OUGFyc2luZyxvPXQmJnQuZm9yY2VkSlNPTlBhcnNpbmcscz0hbiYmImpzb24iPT09dGhpcy5yZXNwb25zZVR5cGU7aWYoc3x8byYmci5pc1N0cmluZyhlKSYmZS5sZW5ndGgpdHJ5e3JldHVybiBKU09OLnBhcnNlKGUpfWNhdGNoKGUpe2lmKHMpe2lmKCJTeW50YXhFcnJvciI9PT1lLm5hbWUpdGhyb3cgaShlLHRoaXMsIkVfSlNPTl9QQVJTRSIpO3Rocm93IGV9fXJldHVybiBlfV0sdGltZW91dDowLHhzcmZDb29raWVOYW1lOiJYU1JGLVRPS0VOIix4c3JmSGVhZGVyTmFtZToiWC1YU1JGLVRPS0VOIixtYXhDb250ZW50TGVuZ3RoOi0xLG1heEJvZHlMZW5ndGg6LTEsdmFsaWRhdGVTdGF0dXM6ZnVuY3Rpb24oZSl7cmV0dXJuIGU+PTIwMCYmZTwzMDB9LGhlYWRlcnM6e2NvbW1vbjp7QWNjZXB0OiJhcHBsaWNhdGlvbi9qc29uLCB0ZXh0L3BsYWluLCAqLyoifX19O3IuZm9yRWFjaChbImRlbGV0ZSIsImdldCIsImhlYWQiXSwoZnVuY3Rpb24oZSl7Yy5oZWFkZXJzW2VdPXt9fSkpLHIuZm9yRWFjaChbInBvc3QiLCJwdXQiLCJwYXRjaCJdLChmdW5jdGlvbihlKXtjLmhlYWRlcnNbZV09ci5tZXJnZShzKX0pKSxlLmV4cG9ydHM9Y30sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3RoaXMubWVzc2FnZT1lfXIucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIkNhbmNlbCIrKHRoaXMubWVzc2FnZT8iOiAiK3RoaXMubWVzc2FnZToiIil9LHIucHJvdG90eXBlLl9fQ0FOQ0VMX189ITAsZS5leHBvcnRzPXJ9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKCl7Zm9yKHZhciBuPW5ldyBBcnJheShhcmd1bWVudHMubGVuZ3RoKSxyPTA7cjxuLmxlbmd0aDtyKyspbltyXT1hcmd1bWVudHNbcl07cmV0dXJuIGUuYXBwbHkodCxuKX19fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oMCk7ZnVuY3Rpb24gbyhlKXtyZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KGUpLnJlcGxhY2UoLyUzQS9naSwiOiIpLnJlcGxhY2UoLyUyNC9nLCIkIikucmVwbGFjZSgvJTJDL2dpLCIsIikucmVwbGFjZSgvJTIwL2csIisiKS5yZXBsYWNlKC8lNUIvZ2ksIlsiKS5yZXBsYWNlKC8lNUQvZ2ksIl0iKX1lLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LG4pe2lmKCF0KXJldHVybiBlO3ZhciBpO2lmKG4paT1uKHQpO2Vsc2UgaWYoci5pc1VSTFNlYXJjaFBhcmFtcyh0KSlpPXQudG9TdHJpbmcoKTtlbHNle3ZhciBzPVtdO3IuZm9yRWFjaCh0LChmdW5jdGlvbihlLHQpe251bGwhPWUmJihyLmlzQXJyYXkoZSk\/dCs9IltdIjplPVtlXSxyLmZvckVhY2goZSwoZnVuY3Rpb24oZSl7ci5pc0RhdGUoZSk\/ZT1lLnRvSVNPU3RyaW5nKCk6ci5pc09iamVjdChlKSYmKGU9SlNPTi5zdHJpbmdpZnkoZSkpLHMucHVzaChvKHQpKyI9IitvKGUpKX0pKSl9KSksaT1zLmpvaW4oIiYiKX1pZihpKXt2YXIgYT1lLmluZGV4T2YoIiMiKTstMSE9PWEmJihlPWUuc2xpY2UoMCxhKSksZSs9KC0xPT09ZS5pbmRleE9mKCI\/Iik\/Ij8iOiImIikraX1yZXR1cm4gZX19LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxuLHIsbyl7cmV0dXJuIGUuY29uZmlnPXQsbiYmKGUuY29kZT1uKSxlLnJlcXVlc3Q9cixlLnJlc3BvbnNlPW8sZS5pc0F4aW9zRXJyb3I9ITAsZS50b0pTT049ZnVuY3Rpb24oKXtyZXR1cm57bWVzc2FnZTp0aGlzLm1lc3NhZ2UsbmFtZTp0aGlzLm5hbWUsZGVzY3JpcHRpb246dGhpcy5kZXNjcmlwdGlvbixudW1iZXI6dGhpcy5udW1iZXIsZmlsZU5hbWU6dGhpcy5maWxlTmFtZSxsaW5lTnVtYmVyOnRoaXMubGluZU51bWJlcixjb2x1bW5OdW1iZXI6dGhpcy5jb2x1bW5OdW1iZXIsc3RhY2s6dGhpcy5zdGFjayxjb25maWc6dGhpcy5jb25maWcsY29kZTp0aGlzLmNvZGUsc3RhdHVzOnRoaXMucmVzcG9uc2UmJnRoaXMucmVzcG9uc2Uuc3RhdHVzP3RoaXMucmVzcG9uc2Uuc3RhdHVzOm51bGx9fSxlfX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDApLG89bigxOCksaT1uKDE5KSxzPW4oNCksYT1uKDIwKSx1PW4oMjMpLGM9bigyNCksZj1uKDcpLGw9bigxKSxwPW4oMik7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24odCxuKXt2YXIgZCxoPWUuZGF0YSxtPWUuaGVhZGVycyx2PWUucmVzcG9uc2VUeXBlO2Z1bmN0aW9uIHkoKXtlLmNhbmNlbFRva2VuJiZlLmNhbmNlbFRva2VuLnVuc3Vic2NyaWJlKGQpLGUuc2lnbmFsJiZlLnNpZ25hbC5yZW1vdmVFdmVudExpc3RlbmVyKCJhYm9ydCIsZCl9ci5pc0Zvcm1EYXRhKGgpJiZkZWxldGUgbVsiQ29udGVudC1UeXBlIl07dmFyIGc9bmV3IFhNTEh0dHBSZXF1ZXN0O2lmKGUuYXV0aCl7dmFyIGI9ZS5hdXRoLnVzZXJuYW1lfHwiIix4PWUuYXV0aC5wYXNzd29yZD91bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoZS5hdXRoLnBhc3N3b3JkKSk6IiI7bS5BdXRob3JpemF0aW9uPSJCYXNpYyAiK2J0b2EoYisiOiIreCl9dmFyIHc9YShlLmJhc2VVUkwsZS51cmwpO2Z1bmN0aW9uIEUoKXtpZihnKXt2YXIgcj0iZ2V0QWxsUmVzcG9uc2VIZWFkZXJzImluIGc\/dShnLmdldEFsbFJlc3BvbnNlSGVhZGVycygpKTpudWxsLGk9e2RhdGE6diYmInRleHQiIT09diYmImpzb24iIT09dj9nLnJlc3BvbnNlOmcucmVzcG9uc2VUZXh0LHN0YXR1czpnLnN0YXR1cyxzdGF0dXNUZXh0Omcuc3RhdHVzVGV4dCxoZWFkZXJzOnIsY29uZmlnOmUscmVxdWVzdDpnfTtvKChmdW5jdGlvbihlKXt0KGUpLHkoKX0pLChmdW5jdGlvbihlKXtuKGUpLHkoKX0pLGkpLGc9bnVsbH19aWYoZy5vcGVuKGUubWV0aG9kLnRvVXBwZXJDYXNlKCkscyh3LGUucGFyYW1zLGUucGFyYW1zU2VyaWFsaXplciksITApLGcudGltZW91dD1lLnRpbWVvdXQsIm9ubG9hZGVuZCJpbiBnP2cub25sb2FkZW5kPUU6Zy5vbnJlYWR5c3RhdGVjaGFuZ2U9ZnVuY3Rpb24oKXtnJiY0PT09Zy5yZWFkeVN0YXRlJiYoMCE9PWcuc3RhdHVzfHxnLnJlc3BvbnNlVVJMJiYwPT09Zy5yZXNwb25zZVVSTC5pbmRleE9mKCJmaWxlOiIpKSYmc2V0VGltZW91dChFKX0sZy5vbmFib3J0PWZ1bmN0aW9uKCl7ZyYmKG4oZigiUmVxdWVzdCBhYm9ydGVkIixlLCJFQ09OTkFCT1JURUQiLGcpKSxnPW51bGwpfSxnLm9uZXJyb3I9ZnVuY3Rpb24oKXtuKGYoIk5ldHdvcmsgRXJyb3IiLGUsbnVsbCxnKSksZz1udWxsfSxnLm9udGltZW91dD1mdW5jdGlvbigpe3ZhciB0PWUudGltZW91dD8idGltZW91dCBvZiAiK2UudGltZW91dCsibXMgZXhjZWVkZWQiOiJ0aW1lb3V0IGV4Y2VlZGVkIixyPWUudHJhbnNpdGlvbmFsfHxsLnRyYW5zaXRpb25hbDtlLnRpbWVvdXRFcnJvck1lc3NhZ2UmJih0PWUudGltZW91dEVycm9yTWVzc2FnZSksbihmKHQsZSxyLmNsYXJpZnlUaW1lb3V0RXJyb3I\/IkVUSU1FRE9VVCI6IkVDT05OQUJPUlRFRCIsZykpLGc9bnVsbH0sci5pc1N0YW5kYXJkQnJvd3NlckVudigpKXt2YXIgUz0oZS53aXRoQ3JlZGVudGlhbHN8fGModykpJiZlLnhzcmZDb29raWVOYW1lP2kucmVhZChlLnhzcmZDb29raWVOYW1lKTp2b2lkIDA7UyYmKG1bZS54c3JmSGVhZGVyTmFtZV09Uyl9InNldFJlcXVlc3RIZWFkZXIiaW4gZyYmci5mb3JFYWNoKG0sKGZ1bmN0aW9uKGUsdCl7dm9pZCAwPT09aCYmImNvbnRlbnQtdHlwZSI9PT10LnRvTG93ZXJDYXNlKCk\/ZGVsZXRlIG1bdF06Zy5zZXRSZXF1ZXN0SGVhZGVyKHQsZSl9KSksci5pc1VuZGVmaW5lZChlLndpdGhDcmVkZW50aWFscyl8fChnLndpdGhDcmVkZW50aWFscz0hIWUud2l0aENyZWRlbnRpYWxzKSx2JiYianNvbiIhPT12JiYoZy5yZXNwb25zZVR5cGU9ZS5yZXNwb25zZVR5cGUpLCJmdW5jdGlvbiI9PXR5cGVvZiBlLm9uRG93bmxvYWRQcm9ncmVzcyYmZy5hZGRFdmVudExpc3RlbmVyKCJwcm9ncmVzcyIsZS5vbkRvd25sb2FkUHJvZ3Jlc3MpLCJmdW5jdGlvbiI9PXR5cGVvZiBlLm9uVXBsb2FkUHJvZ3Jlc3MmJmcudXBsb2FkJiZnLnVwbG9hZC5hZGRFdmVudExpc3RlbmVyKCJwcm9ncmVzcyIsZS5vblVwbG9hZFByb2dyZXNzKSwoZS5jYW5jZWxUb2tlbnx8ZS5zaWduYWwpJiYoZD1mdW5jdGlvbihlKXtnJiYobighZXx8ZSYmZS50eXBlP25ldyBwKCJjYW5jZWxlZCIpOmUpLGcuYWJvcnQoKSxnPW51bGwpfSxlLmNhbmNlbFRva2VuJiZlLmNhbmNlbFRva2VuLnN1YnNjcmliZShkKSxlLnNpZ25hbCYmKGUuc2lnbmFsLmFib3J0ZWQ\/ZCgpOmUuc2lnbmFsLmFkZEV2ZW50TGlzdGVuZXIoImFib3J0IixkKSkpLGh8fChoPW51bGwpLGcuc2VuZChoKX0pKX19LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9big1KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LG4sbyxpKXt2YXIgcz1uZXcgRXJyb3IoZSk7cmV0dXJuIHIocyx0LG4sbyxpKX19LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiEoIWV8fCFlLl9fQ0FOQ0VMX18pfX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDApO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3Q9dHx8e307dmFyIG49e307ZnVuY3Rpb24gbyhlLHQpe3JldHVybiByLmlzUGxhaW5PYmplY3QoZSkmJnIuaXNQbGFpbk9iamVjdCh0KT9yLm1lcmdlKGUsdCk6ci5pc1BsYWluT2JqZWN0KHQpP3IubWVyZ2Uoe30sdCk6ci5pc0FycmF5KHQpP3Quc2xpY2UoKTp0fWZ1bmN0aW9uIGkobil7cmV0dXJuIHIuaXNVbmRlZmluZWQodFtuXSk\/ci5pc1VuZGVmaW5lZChlW25dKT92b2lkIDA6byh2b2lkIDAsZVtuXSk6byhlW25dLHRbbl0pfWZ1bmN0aW9uIHMoZSl7aWYoIXIuaXNVbmRlZmluZWQodFtlXSkpcmV0dXJuIG8odm9pZCAwLHRbZV0pfWZ1bmN0aW9uIGEobil7cmV0dXJuIHIuaXNVbmRlZmluZWQodFtuXSk\/ci5pc1VuZGVmaW5lZChlW25dKT92b2lkIDA6byh2b2lkIDAsZVtuXSk6byh2b2lkIDAsdFtuXSl9ZnVuY3Rpb24gdShuKXtyZXR1cm4gbiBpbiB0P28oZVtuXSx0W25dKTpuIGluIGU\/byh2b2lkIDAsZVtuXSk6dm9pZCAwfXZhciBjPXt1cmw6cyxtZXRob2Q6cyxkYXRhOnMsYmFzZVVSTDphLHRyYW5zZm9ybVJlcXVlc3Q6YSx0cmFuc2Zvcm1SZXNwb25zZTphLHBhcmFtc1NlcmlhbGl6ZXI6YSx0aW1lb3V0OmEsdGltZW91dE1lc3NhZ2U6YSx3aXRoQ3JlZGVudGlhbHM6YSxhZGFwdGVyOmEscmVzcG9uc2VUeXBlOmEseHNyZkNvb2tpZU5hbWU6YSx4c3JmSGVhZGVyTmFtZTphLG9uVXBsb2FkUHJvZ3Jlc3M6YSxvbkRvd25sb2FkUHJvZ3Jlc3M6YSxkZWNvbXByZXNzOmEsbWF4Q29udGVudExlbmd0aDphLG1heEJvZHlMZW5ndGg6YSx0cmFuc3BvcnQ6YSxodHRwQWdlbnQ6YSxodHRwc0FnZW50OmEsY2FuY2VsVG9rZW46YSxzb2NrZXRQYXRoOmEscmVzcG9uc2VFbmNvZGluZzphLHZhbGlkYXRlU3RhdHVzOnV9O3JldHVybiByLmZvckVhY2goT2JqZWN0LmtleXMoZSkuY29uY2F0KE9iamVjdC5rZXlzKHQpKSwoZnVuY3Rpb24oZSl7dmFyIHQ9Y1tlXXx8aSxvPXQoZSk7ci5pc1VuZGVmaW5lZChvKSYmdCE9PXV8fChuW2VdPW8pfSkpLG59fSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz17dmVyc2lvbjoiMC4yNC4wIn19LGZ1bmN0aW9uKGUsdCxuKXtlLmV4cG9ydHM9bigxMil9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigwKSxvPW4oMyksaT1uKDEzKSxzPW4oOSk7dmFyIGE9ZnVuY3Rpb24gZSh0KXt2YXIgbj1uZXcgaSh0KSxhPW8oaS5wcm90b3R5cGUucmVxdWVzdCxuKTtyZXR1cm4gci5leHRlbmQoYSxpLnByb3RvdHlwZSxuKSxyLmV4dGVuZChhLG4pLGEuY3JlYXRlPWZ1bmN0aW9uKG4pe3JldHVybiBlKHModCxuKSl9LGF9KG4oMSkpO2EuQXhpb3M9aSxhLkNhbmNlbD1uKDIpLGEuQ2FuY2VsVG9rZW49bigyNiksYS5pc0NhbmNlbD1uKDgpLGEuVkVSU0lPTj1uKDEwKS52ZXJzaW9uLGEuYWxsPWZ1bmN0aW9uKGUpe3JldHVybiBQcm9taXNlLmFsbChlKX0sYS5zcHJlYWQ9bigyNyksYS5pc0F4aW9zRXJyb3I9bigyOCksZS5leHBvcnRzPWEsZS5leHBvcnRzLmRlZmF1bHQ9YX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDApLG89big0KSxpPW4oMTQpLHM9bigxNSksYT1uKDkpLHU9bigyNSksYz11LnZhbGlkYXRvcnM7ZnVuY3Rpb24gZihlKXt0aGlzLmRlZmF1bHRzPWUsdGhpcy5pbnRlcmNlcHRvcnM9e3JlcXVlc3Q6bmV3IGkscmVzcG9uc2U6bmV3IGl9fWYucHJvdG90eXBlLnJlcXVlc3Q9ZnVuY3Rpb24oZSl7InN0cmluZyI9PXR5cGVvZiBlPyhlPWFyZ3VtZW50c1sxXXx8e30pLnVybD1hcmd1bWVudHNbMF06ZT1lfHx7fSwoZT1hKHRoaXMuZGVmYXVsdHMsZSkpLm1ldGhvZD9lLm1ldGhvZD1lLm1ldGhvZC50b0xvd2VyQ2FzZSgpOnRoaXMuZGVmYXVsdHMubWV0aG9kP2UubWV0aG9kPXRoaXMuZGVmYXVsdHMubWV0aG9kLnRvTG93ZXJDYXNlKCk6ZS5tZXRob2Q9ImdldCI7dmFyIHQ9ZS50cmFuc2l0aW9uYWw7dm9pZCAwIT09dCYmdS5hc3NlcnRPcHRpb25zKHQse3NpbGVudEpTT05QYXJzaW5nOmMudHJhbnNpdGlvbmFsKGMuYm9vbGVhbiksZm9yY2VkSlNPTlBhcnNpbmc6Yy50cmFuc2l0aW9uYWwoYy5ib29sZWFuKSxjbGFyaWZ5VGltZW91dEVycm9yOmMudHJhbnNpdGlvbmFsKGMuYm9vbGVhbil9LCExKTt2YXIgbj1bXSxyPSEwO3RoaXMuaW50ZXJjZXB0b3JzLnJlcXVlc3QuZm9yRWFjaCgoZnVuY3Rpb24odCl7ImZ1bmN0aW9uIj09dHlwZW9mIHQucnVuV2hlbiYmITE9PT10LnJ1bldoZW4oZSl8fChyPXImJnQuc3luY2hyb25vdXMsbi51bnNoaWZ0KHQuZnVsZmlsbGVkLHQucmVqZWN0ZWQpKX0pKTt2YXIgbyxpPVtdO2lmKHRoaXMuaW50ZXJjZXB0b3JzLnJlc3BvbnNlLmZvckVhY2goKGZ1bmN0aW9uKGUpe2kucHVzaChlLmZ1bGZpbGxlZCxlLnJlamVjdGVkKX0pKSwhcil7dmFyIGY9W3Msdm9pZCAwXTtmb3IoQXJyYXkucHJvdG90eXBlLnVuc2hpZnQuYXBwbHkoZixuKSxmPWYuY29uY2F0KGkpLG89UHJvbWlzZS5yZXNvbHZlKGUpO2YubGVuZ3RoOylvPW8udGhlbihmLnNoaWZ0KCksZi5zaGlmdCgpKTtyZXR1cm4gb31mb3IodmFyIGw9ZTtuLmxlbmd0aDspe3ZhciBwPW4uc2hpZnQoKSxkPW4uc2hpZnQoKTt0cnl7bD1wKGwpfWNhdGNoKGUpe2QoZSk7YnJlYWt9fXRyeXtvPXMobCl9Y2F0Y2goZSl7cmV0dXJuIFByb21pc2UucmVqZWN0KGUpfWZvcig7aS5sZW5ndGg7KW89by50aGVuKGkuc2hpZnQoKSxpLnNoaWZ0KCkpO3JldHVybiBvfSxmLnByb3RvdHlwZS5nZXRVcmk9ZnVuY3Rpb24oZSl7cmV0dXJuIGU9YSh0aGlzLmRlZmF1bHRzLGUpLG8oZS51cmwsZS5wYXJhbXMsZS5wYXJhbXNTZXJpYWxpemVyKS5yZXBsYWNlKC9eXD8vLCIiKX0sci5mb3JFYWNoKFsiZGVsZXRlIiwiZ2V0IiwiaGVhZCIsIm9wdGlvbnMiXSwoZnVuY3Rpb24oZSl7Zi5wcm90b3R5cGVbZV09ZnVuY3Rpb24odCxuKXtyZXR1cm4gdGhpcy5yZXF1ZXN0KGEobnx8e30se21ldGhvZDplLHVybDp0LGRhdGE6KG58fHt9KS5kYXRhfSkpfX0pKSxyLmZvckVhY2goWyJwb3N0IiwicHV0IiwicGF0Y2giXSwoZnVuY3Rpb24oZSl7Zi5wcm90b3R5cGVbZV09ZnVuY3Rpb24odCxuLHIpe3JldHVybiB0aGlzLnJlcXVlc3QoYShyfHx7fSx7bWV0aG9kOmUsdXJsOnQsZGF0YTpufSkpfX0pKSxlLmV4cG9ydHM9Zn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDApO2Z1bmN0aW9uIG8oKXt0aGlzLmhhbmRsZXJzPVtdfW8ucHJvdG90eXBlLnVzZT1mdW5jdGlvbihlLHQsbil7cmV0dXJuIHRoaXMuaGFuZGxlcnMucHVzaCh7ZnVsZmlsbGVkOmUscmVqZWN0ZWQ6dCxzeW5jaHJvbm91czohIW4mJm4uc3luY2hyb25vdXMscnVuV2hlbjpuP24ucnVuV2hlbjpudWxsfSksdGhpcy5oYW5kbGVycy5sZW5ndGgtMX0sby5wcm90b3R5cGUuZWplY3Q9ZnVuY3Rpb24oZSl7dGhpcy5oYW5kbGVyc1tlXSYmKHRoaXMuaGFuZGxlcnNbZV09bnVsbCl9LG8ucHJvdG90eXBlLmZvckVhY2g9ZnVuY3Rpb24oZSl7ci5mb3JFYWNoKHRoaXMuaGFuZGxlcnMsKGZ1bmN0aW9uKHQpe251bGwhPT10JiZlKHQpfSkpfSxlLmV4cG9ydHM9b30sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDApLG89bigxNiksaT1uKDgpLHM9bigxKSxhPW4oMik7ZnVuY3Rpb24gdShlKXtpZihlLmNhbmNlbFRva2VuJiZlLmNhbmNlbFRva2VuLnRocm93SWZSZXF1ZXN0ZWQoKSxlLnNpZ25hbCYmZS5zaWduYWwuYWJvcnRlZCl0aHJvdyBuZXcgYSgiY2FuY2VsZWQiKX1lLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIHUoZSksZS5oZWFkZXJzPWUuaGVhZGVyc3x8e30sZS5kYXRhPW8uY2FsbChlLGUuZGF0YSxlLmhlYWRlcnMsZS50cmFuc2Zvcm1SZXF1ZXN0KSxlLmhlYWRlcnM9ci5tZXJnZShlLmhlYWRlcnMuY29tbW9ufHx7fSxlLmhlYWRlcnNbZS5tZXRob2RdfHx7fSxlLmhlYWRlcnMpLHIuZm9yRWFjaChbImRlbGV0ZSIsImdldCIsImhlYWQiLCJwb3N0IiwicHV0IiwicGF0Y2giLCJjb21tb24iXSwoZnVuY3Rpb24odCl7ZGVsZXRlIGUuaGVhZGVyc1t0XX0pKSwoZS5hZGFwdGVyfHxzLmFkYXB0ZXIpKGUpLnRoZW4oKGZ1bmN0aW9uKHQpe3JldHVybiB1KGUpLHQuZGF0YT1vLmNhbGwoZSx0LmRhdGEsdC5oZWFkZXJzLGUudHJhbnNmb3JtUmVzcG9uc2UpLHR9KSwoZnVuY3Rpb24odCl7cmV0dXJuIGkodCl8fCh1KGUpLHQmJnQucmVzcG9uc2UmJih0LnJlc3BvbnNlLmRhdGE9by5jYWxsKGUsdC5yZXNwb25zZS5kYXRhLHQucmVzcG9uc2UuaGVhZGVycyxlLnRyYW5zZm9ybVJlc3BvbnNlKSkpLFByb21pc2UucmVqZWN0KHQpfSkpfX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDApLG89bigxKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LG4pe3ZhciBpPXRoaXN8fG87cmV0dXJuIHIuZm9yRWFjaChuLChmdW5jdGlvbihuKXtlPW4uY2FsbChpLGUsdCl9KSksZX19LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigwKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtyLmZvckVhY2goZSwoZnVuY3Rpb24obixyKXtyIT09dCYmci50b1VwcGVyQ2FzZSgpPT09dC50b1VwcGVyQ2FzZSgpJiYoZVt0XT1uLGRlbGV0ZSBlW3JdKX0pKX19LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9big3KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LG4pe3ZhciBvPW4uY29uZmlnLnZhbGlkYXRlU3RhdHVzO24uc3RhdHVzJiZvJiYhbyhuLnN0YXR1cyk\/dChyKCJSZXF1ZXN0IGZhaWxlZCB3aXRoIHN0YXR1cyBjb2RlICIrbi5zdGF0dXMsbi5jb25maWcsbnVsbCxuLnJlcXVlc3QsbikpOmUobil9fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oMCk7ZS5leHBvcnRzPXIuaXNTdGFuZGFyZEJyb3dzZXJFbnYoKT97d3JpdGU6ZnVuY3Rpb24oZSx0LG4sbyxpLHMpe3ZhciBhPVtdO2EucHVzaChlKyI9IitlbmNvZGVVUklDb21wb25lbnQodCkpLHIuaXNOdW1iZXIobikmJmEucHVzaCgiZXhwaXJlcz0iK25ldyBEYXRlKG4pLnRvR01UU3RyaW5nKCkpLHIuaXNTdHJpbmcobykmJmEucHVzaCgicGF0aD0iK28pLHIuaXNTdHJpbmcoaSkmJmEucHVzaCgiZG9tYWluPSIraSksITA9PT1zJiZhLnB1c2goInNlY3VyZSIpLGRvY3VtZW50LmNvb2tpZT1hLmpvaW4oIjsgIil9LHJlYWQ6ZnVuY3Rpb24oZSl7dmFyIHQ9ZG9jdW1lbnQuY29va2llLm1hdGNoKG5ldyBSZWdFeHAoIihefDtcXHMqKSgiK2UrIik9KFteO10qKSIpKTtyZXR1cm4gdD9kZWNvZGVVUklDb21wb25lbnQodFszXSk6bnVsbH0scmVtb3ZlOmZ1bmN0aW9uKGUpe3RoaXMud3JpdGUoZSwiIixEYXRlLm5vdygpLTg2NGU1KX19Ont3cml0ZTpmdW5jdGlvbigpe30scmVhZDpmdW5jdGlvbigpe3JldHVybiBudWxsfSxyZW1vdmU6ZnVuY3Rpb24oKXt9fX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDIxKSxvPW4oMjIpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3JldHVybiBlJiYhcih0KT9vKGUsdCk6dH19LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybi9eKFthLXpdW2EtelxkXCtcLVwuXSo6KT9cL1wvL2kudGVzdChlKX19LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQ\/ZS5yZXBsYWNlKC9cLyskLywiIikrIi8iK3QucmVwbGFjZSgvXlwvKy8sIiIpOmV9fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oMCksbz1bImFnZSIsImF1dGhvcml6YXRpb24iLCJjb250ZW50LWxlbmd0aCIsImNvbnRlbnQtdHlwZSIsImV0YWciLCJleHBpcmVzIiwiZnJvbSIsImhvc3QiLCJpZi1tb2RpZmllZC1zaW5jZSIsImlmLXVubW9kaWZpZWQtc2luY2UiLCJsYXN0LW1vZGlmaWVkIiwibG9jYXRpb24iLCJtYXgtZm9yd2FyZHMiLCJwcm94eS1hdXRob3JpemF0aW9uIiwicmVmZXJlciIsInJldHJ5LWFmdGVyIiwidXNlci1hZ2VudCJdO2UuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdCxuLGkscz17fTtyZXR1cm4gZT8oci5mb3JFYWNoKGUuc3BsaXQoIlxuIiksKGZ1bmN0aW9uKGUpe2lmKGk9ZS5pbmRleE9mKCI6IiksdD1yLnRyaW0oZS5zdWJzdHIoMCxpKSkudG9Mb3dlckNhc2UoKSxuPXIudHJpbShlLnN1YnN0cihpKzEpKSx0KXtpZihzW3RdJiZvLmluZGV4T2YodCk+PTApcmV0dXJuO3NbdF09InNldC1jb29raWUiPT09dD8oc1t0XT9zW3RdOltdKS5jb25jYXQoW25dKTpzW3RdP3NbdF0rIiwgIituOm59fSkpLHMpOnN9fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oMCk7ZS5leHBvcnRzPXIuaXNTdGFuZGFyZEJyb3dzZXJFbnYoKT9mdW5jdGlvbigpe3ZhciBlLHQ9Lyhtc2llfHRyaWRlbnQpL2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSxuPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKTtmdW5jdGlvbiBvKGUpe3ZhciByPWU7cmV0dXJuIHQmJihuLnNldEF0dHJpYnV0ZSgiaHJlZiIscikscj1uLmhyZWYpLG4uc2V0QXR0cmlidXRlKCJocmVmIixyKSx7aHJlZjpuLmhyZWYscHJvdG9jb2w6bi5wcm90b2NvbD9uLnByb3RvY29sLnJlcGxhY2UoLzokLywiIik6IiIsaG9zdDpuLmhvc3Qsc2VhcmNoOm4uc2VhcmNoP24uc2VhcmNoLnJlcGxhY2UoL15cPy8sIiIpOiIiLGhhc2g6bi5oYXNoP24uaGFzaC5yZXBsYWNlKC9eIy8sIiIpOiIiLGhvc3RuYW1lOm4uaG9zdG5hbWUscG9ydDpuLnBvcnQscGF0aG5hbWU6Ii8iPT09bi5wYXRobmFtZS5jaGFyQXQoMCk\/bi5wYXRobmFtZToiLyIrbi5wYXRobmFtZX19cmV0dXJuIGU9byh3aW5kb3cubG9jYXRpb24uaHJlZiksZnVuY3Rpb24odCl7dmFyIG49ci5pc1N0cmluZyh0KT9vKHQpOnQ7cmV0dXJuIG4ucHJvdG9jb2w9PT1lLnByb3RvY29sJiZuLmhvc3Q9PT1lLmhvc3R9fSgpOmZ1bmN0aW9uKCl7cmV0dXJuITB9fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oMTApLnZlcnNpb24sbz17fTtbIm9iamVjdCIsImJvb2xlYW4iLCJudW1iZXIiLCJmdW5jdGlvbiIsInN0cmluZyIsInN5bWJvbCJdLmZvckVhY2goKGZ1bmN0aW9uKGUsdCl7b1tlXT1mdW5jdGlvbihuKXtyZXR1cm4gdHlwZW9mIG49PT1lfHwiYSIrKHQ8MT8ibiAiOiIgIikrZX19KSk7dmFyIGk9e307by50cmFuc2l0aW9uYWw9ZnVuY3Rpb24oZSx0LG4pe2Z1bmN0aW9uIG8oZSx0KXtyZXR1cm4iW0F4aW9zIHYiK3IrIl0gVHJhbnNpdGlvbmFsIG9wdGlvbiAnIitlKyInIit0KyhuPyIuICIrbjoiIil9cmV0dXJuIGZ1bmN0aW9uKG4scixzKXtpZighMT09PWUpdGhyb3cgbmV3IEVycm9yKG8ociwiIGhhcyBiZWVuIHJlbW92ZWQiKyh0PyIgaW4gIit0OiIiKSkpO3JldHVybiB0JiYhaVtyXSYmKGlbcl09ITAsY29uc29sZS53YXJuKG8ociwiIGhhcyBiZWVuIGRlcHJlY2F0ZWQgc2luY2UgdiIrdCsiIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5lYXIgZnV0dXJlIikpKSwhZXx8ZShuLHIscyl9fSxlLmV4cG9ydHM9e2Fzc2VydE9wdGlvbnM6ZnVuY3Rpb24oZSx0LG4pe2lmKCJvYmplY3QiIT10eXBlb2YgZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJvcHRpb25zIG11c3QgYmUgYW4gb2JqZWN0Iik7Zm9yKHZhciByPU9iamVjdC5rZXlzKGUpLG89ci5sZW5ndGg7by0tID4wOyl7dmFyIGk9cltvXSxzPXRbaV07aWYocyl7dmFyIGE9ZVtpXSx1PXZvaWQgMD09PWF8fHMoYSxpLGUpO2lmKCEwIT09dSl0aHJvdyBuZXcgVHlwZUVycm9yKCJvcHRpb24gIitpKyIgbXVzdCBiZSAiK3UpfWVsc2UgaWYoITAhPT1uKXRocm93IEVycm9yKCJVbmtub3duIG9wdGlvbiAiK2kpfX0sdmFsaWRhdG9yczpvfX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDIpO2Z1bmN0aW9uIG8oZSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiZXhlY3V0b3IgbXVzdCBiZSBhIGZ1bmN0aW9uLiIpO3ZhciB0O3RoaXMucHJvbWlzZT1uZXcgUHJvbWlzZSgoZnVuY3Rpb24oZSl7dD1lfSkpO3ZhciBuPXRoaXM7dGhpcy5wcm9taXNlLnRoZW4oKGZ1bmN0aW9uKGUpe2lmKG4uX2xpc3RlbmVycyl7dmFyIHQscj1uLl9saXN0ZW5lcnMubGVuZ3RoO2Zvcih0PTA7dDxyO3QrKyluLl9saXN0ZW5lcnNbdF0oZSk7bi5fbGlzdGVuZXJzPW51bGx9fSkpLHRoaXMucHJvbWlzZS50aGVuPWZ1bmN0aW9uKGUpe3ZhciB0LHI9bmV3IFByb21pc2UoKGZ1bmN0aW9uKGUpe24uc3Vic2NyaWJlKGUpLHQ9ZX0pKS50aGVuKGUpO3JldHVybiByLmNhbmNlbD1mdW5jdGlvbigpe24udW5zdWJzY3JpYmUodCl9LHJ9LGUoKGZ1bmN0aW9uKGUpe24ucmVhc29ufHwobi5yZWFzb249bmV3IHIoZSksdChuLnJlYXNvbikpfSkpfW8ucHJvdG90eXBlLnRocm93SWZSZXF1ZXN0ZWQ9ZnVuY3Rpb24oKXtpZih0aGlzLnJlYXNvbil0aHJvdyB0aGlzLnJlYXNvbn0sby5wcm90b3R5cGUuc3Vic2NyaWJlPWZ1bmN0aW9uKGUpe3RoaXMucmVhc29uP2UodGhpcy5yZWFzb24pOnRoaXMuX2xpc3RlbmVycz90aGlzLl9saXN0ZW5lcnMucHVzaChlKTp0aGlzLl9saXN0ZW5lcnM9W2VdfSxvLnByb3RvdHlwZS51bnN1YnNjcmliZT1mdW5jdGlvbihlKXtpZih0aGlzLl9saXN0ZW5lcnMpe3ZhciB0PXRoaXMuX2xpc3RlbmVycy5pbmRleE9mKGUpOy0xIT09dCYmdGhpcy5fbGlzdGVuZXJzLnNwbGljZSh0LDEpfX0sby5zb3VyY2U9ZnVuY3Rpb24oKXt2YXIgZTtyZXR1cm57dG9rZW46bmV3IG8oKGZ1bmN0aW9uKHQpe2U9dH0pKSxjYW5jZWw6ZX19LGUuZXhwb3J0cz1vfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIGUuYXBwbHkobnVsbCx0KX19fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4ib2JqZWN0Ij09dHlwZW9mIGUmJiEwPT09ZS5pc0F4aW9zRXJyb3J9fV0pfSkpOwovLyMgc291cmNlTWFwcGluZ1VSTD1heGlvcy5taW4ubWFwOwovKiogL20vanMvdmFuaWxsYWpzL3ByaXN0aW5lLm1pbi5qcyAqKi8KIWZ1bmN0aW9uKGUscil7Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzJiYidW5kZWZpbmVkIiE9dHlwZW9mIG1vZHVsZT9tb2R1bGUuZXhwb3J0cz1yKCk6ImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUocik6KGU9InVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWxUaGlzP2dsb2JhbFRoaXM6ZXx8c2VsZikuUHJpc3RpbmU9cigpfSh0aGlzLChmdW5jdGlvbigpeyJ1c2Ugc3RyaWN0Ijt2YXIgZT17ZW46e3JlcXVpcmVkOiJUaGlzIGZpZWxkIGlzIHJlcXVpcmVkIixlbWFpbDoiVGhpcyBmaWVsZCByZXF1aXJlcyBhIHZhbGlkIGUtbWFpbCBhZGRyZXNzIixudW1iZXI6IlRoaXMgZmllbGQgcmVxdWlyZXMgYSBudW1iZXIiLGludGVnZXI6IlRoaXMgZmllbGQgcmVxdWlyZXMgYW4gaW50ZWdlciB2YWx1ZSIsdXJsOiJUaGlzIGZpZWxkIHJlcXVpcmVzIGEgdmFsaWQgd2Vic2l0ZSBVUkwiLHRlbDoiVGhpcyBmaWVsZCByZXF1aXJlcyBhIHZhbGlkIHRlbGVwaG9uZSBudW1iZXIiLG1heGxlbmd0aDoiVGhpcyBmaWVsZHMgbGVuZ3RoIG11c3QgYmUgPCAkezF9IixtaW5sZW5ndGg6IlRoaXMgZmllbGRzIGxlbmd0aCBtdXN0IGJlID4gJHsxfSIsbWluOiJNaW5pbXVtIHZhbHVlIGZvciB0aGlzIGZpZWxkIGlzICR7MX0iLG1heDoiTWF4aW11bSB2YWx1ZSBmb3IgdGhpcyBmaWVsZCBpcyAkezF9IixwYXR0ZXJuOiJQbGVhc2UgbWF0Y2ggdGhlIHJlcXVlc3RlZCBmb3JtYXQiLGVxdWFsczoiVGhlIHR3byBmaWVsZHMgZG8gbm90IG1hdGNoIn19O2Z1bmN0aW9uIHIoZSl7dmFyIHI9YXJndW1lbnRzO3JldHVybiB0aGlzLnJlcGxhY2UoL1wkeyhbXnt9XSopfS9nLChmdW5jdGlvbihlLHQpe3JldHVybiByW3RdfSkpfWZ1bmN0aW9uIHQoZSl7cmV0dXJuIGUucHJpc3RpbmUuc2VsZi5mb3JtLnF1ZXJ5U2VsZWN0b3JBbGwoJ2lucHV0W25hbWU9IicrZS5nZXRBdHRyaWJ1dGUoIm5hbWUiKSsnIl06Y2hlY2tlZCcpLmxlbmd0aH12YXIgbj17Y2xhc3NUbzoiZm9ybS1ncm91cCIsZXJyb3JDbGFzczoiaGFzLWRhbmdlciIsc3VjY2Vzc0NsYXNzOiJoYXMtc3VjY2VzcyIsZXJyb3JUZXh0UGFyZW50OiJmb3JtLWdyb3VwIixlcnJvclRleHRUYWc6ImRpdiIsZXJyb3JUZXh0Q2xhc3M6InRleHQtaGVscCJ9LGk9WyJyZXF1aXJlZCIsIm1pbiIsIm1heCIsIm1pbmxlbmd0aCIsIm1heGxlbmd0aCIsInBhdHRlcm4iXSxzPS9eKChbXjw+KClcW1xdXFwuLDs6XHNAIl0rKFwuW148PigpXFtcXVxcLiw7OlxzQCJdKykqKXwoIi4rIikpQCgoXFtbMC05XXsxLDN9XC5bMC05XXsxLDN9XC5bMC05XXsxLDN9XC5bMC05XXsxLDN9XSl8KChbYS16QS1aXC0wLTldK1wuKStbYS16QS1aXXsyLH0pKSQvLGE9Ly1tZXNzYWdlKD86LShbYS16XXsyfSg\/Ol9bQS1aXXsyfSk\/KSk\/LyxvPSJlbiIsbD17fSx1PWZ1bmN0aW9uKGUscil7ci5uYW1lPWUsdm9pZCAwPT09ci5wcmlvcml0eSYmKHIucHJpb3JpdHk9MSksbFtlXT1yfTtmdW5jdGlvbiBmKHQscyx1KXt2YXIgZj10aGlzO2Z1bmN0aW9uIGMoZSxyLHQsbil7dmFyIGk9bFt0XTtpZihpJiYoZS5wdXNoKGkpLG4pKXt2YXIgcz0icGF0dGVybiI9PT10P1tuXTpuLnNwbGl0KCIsIik7cy51bnNoaWZ0KG51bGwpLHJbdF09c319ZnVuY3Rpb24gcCh0KXtmb3IodmFyIG49W10saT0hMCxzPTA7dC52YWxpZGF0b3JzW3NdO3MrKyl7dmFyIGE9dC52YWxpZGF0b3JzW3NdLGw9dC5wYXJhbXNbYS5uYW1lXT90LnBhcmFtc1thLm5hbWVdOltdO2lmKGxbMF09dC5pbnB1dC52YWx1ZSwhYS5mbi5hcHBseSh0LmlucHV0LGwpJiYoaT0hMSwiZnVuY3Rpb24iPT10eXBlb2YgYS5tc2c\/bi5wdXNoKGEubXNnKHQuaW5wdXQudmFsdWUsbCkpOiJzdHJpbmciPT10eXBlb2YgYS5tc2c\/bi5wdXNoKHIuYXBwbHkoYS5tc2csbCkpOmEubXNnPT09T2JqZWN0KGEubXNnKSYmYS5tc2dbb10\/bi5wdXNoKHIuYXBwbHkoYS5tc2dbb10sbCkpOnQubWVzc2FnZXNbb10mJnQubWVzc2FnZXNbb11bYS5uYW1lXT9uLnB1c2goci5hcHBseSh0Lm1lc3NhZ2VzW29dW2EubmFtZV0sbCkpOmVbb10mJmVbb11bYS5uYW1lXSYmbi5wdXNoKHIuYXBwbHkoZVtvXVthLm5hbWVdLGwpKSwhMD09PWEuaGFsdCkpYnJlYWt9cmV0dXJuIHQuZXJyb3JzPW4saX1mdW5jdGlvbiBtKGUpe2lmKGUuZXJyb3JFbGVtZW50cylyZXR1cm4gZS5lcnJvckVsZW1lbnRzO3ZhciByPWZ1bmN0aW9uKGUscil7Zm9yKDsoZT1lLnBhcmVudEVsZW1lbnQpJiYhZS5jbGFzc0xpc3QuY29udGFpbnMocik7KTtyZXR1cm4gZX0oZS5pbnB1dCxmLmNvbmZpZy5jbGFzc1RvKSx0PW51bGwsbj1udWxsO3JldHVybih0PWYuY29uZmlnLmNsYXNzVG89PT1mLmNvbmZpZy5lcnJvclRleHRQYXJlbnQ\/cjpyLnF1ZXJ5U2VsZWN0b3IoIi4iK2YuY29uZmlnLmVycm9yVGV4dFBhcmVudCkpJiYoKG49dC5xdWVyeVNlbGVjdG9yKCIucHJpc3RpbmUtZXJyb3IiKSl8fCgobj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KGYuY29uZmlnLmVycm9yVGV4dFRhZykpLmNsYXNzTmFtZT0icHJpc3RpbmUtZXJyb3IgIitmLmNvbmZpZy5lcnJvclRleHRDbGFzcyx0LmFwcGVuZENoaWxkKG4pLG4ucHJpc3RpbmVEaXNwbGF5PW4uc3R5bGUuZGlzcGxheSkpLGUuZXJyb3JFbGVtZW50cz1bcixuXX1mdW5jdGlvbiBkKGUpe3ZhciByPW0oZSksdD1yWzBdLG49clsxXTt0JiYodC5jbGFzc0xpc3QucmVtb3ZlKGYuY29uZmlnLnN1Y2Nlc3NDbGFzcyksdC5jbGFzc0xpc3QuYWRkKGYuY29uZmlnLmVycm9yQ2xhc3MpKSxuJiYobi5pbm5lckhUTUw9ZS5lcnJvcnMuam9pbigiPGJyLz4iKSxuLnN0eWxlLmRpc3BsYXk9bi5wcmlzdGluZURpc3BsYXl8fCIiKX1mdW5jdGlvbiBoKGUpe3ZhciByPWZ1bmN0aW9uKGUpe3ZhciByPW0oZSksdD1yWzBdLG49clsxXTtyZXR1cm4gdCYmKHQuY2xhc3NMaXN0LnJlbW92ZShmLmNvbmZpZy5lcnJvckNsYXNzKSx0LmNsYXNzTGlzdC5yZW1vdmUoZi5jb25maWcuc3VjY2Vzc0NsYXNzKSksbiYmKG4uaW5uZXJIVE1MPSIiLG4uc3R5bGUuZGlzcGxheT0ibm9uZSIpLHJ9KGUpWzBdO3ImJnIuY2xhc3NMaXN0LmFkZChmLmNvbmZpZy5zdWNjZXNzQ2xhc3MpfXJldHVybiBmdW5jdGlvbihlLHIsdCl7ZS5zZXRBdHRyaWJ1dGUoIm5vdmFsaWRhdGUiLCJ0cnVlIiksZi5mb3JtPWUsZi5jb25maWc9ZnVuY3Rpb24oZSxyKXtmb3IodmFyIHQgaW4gcil0IGluIGV8fChlW3RdPXJbdF0pO3JldHVybiBlfShyfHx7fSxuKSxmLmxpdmU9ISghMT09PXQpLGYuZmllbGRzPUFycmF5LmZyb20oZS5xdWVyeVNlbGVjdG9yQWxsKCJpbnB1dDpub3QoW3R5cGVePWhpZGRlbl0pOm5vdChbdHlwZV49c3VibWl0XSksIHNlbGVjdCwgdGV4dGFyZWEiKSkubWFwKGZ1bmN0aW9uKGUpe3ZhciByPVtdLHQ9e30sbj17fTtyZXR1cm5bXS5mb3JFYWNoLmNhbGwoZS5hdHRyaWJ1dGVzLChmdW5jdGlvbihlKXtpZigvXmRhdGEtcHJpc3RpbmUtLy50ZXN0KGUubmFtZSkpe3ZhciBzPWUubmFtZS5zdWJzdHIoMTQpLG89cy5tYXRjaChhKTtpZihudWxsIT09byl7dmFyIGw9dm9pZCAwPT09b1sxXT8iZW4iOm9bMV07cmV0dXJuIG4uaGFzT3duUHJvcGVydHkobCl8fChuW2xdPXt9KSx2b2lkKG5bbF1bcy5zbGljZSgwLHMubGVuZ3RoLW9bMF0ubGVuZ3RoKV09ZS52YWx1ZSl9InR5cGUiPT09cyYmKHM9ZS52YWx1ZSksYyhyLHQscyxlLnZhbHVlKX1lbHNlfmkuaW5kZXhPZihlLm5hbWUpP2Mocix0LGUubmFtZSxlLnZhbHVlKToidHlwZSI9PT1lLm5hbWUmJmMocix0LGUudmFsdWUpfSkpLHIuc29ydCgoZnVuY3Rpb24oZSxyKXtyZXR1cm4gci5wcmlvcml0eS1lLnByaW9yaXR5fSkpLGYubGl2ZSYmZS5hZGRFdmVudExpc3RlbmVyKH5bInJhZGlvIiwiY2hlY2tib3giXS5pbmRleE9mKGUuZ2V0QXR0cmlidXRlKCJ0eXBlIikpPyJjaGFuZ2UiOiJpbnB1dCIsZnVuY3Rpb24oZSl7Zi52YWxpZGF0ZShlLnRhcmdldCl9LmJpbmQoZikpLGUucHJpc3RpbmU9e2lucHV0OmUsdmFsaWRhdG9yczpyLHBhcmFtczp0LG1lc3NhZ2VzOm4sc2VsZjpmfX0uYmluZChmKSl9KHQscyx1KSxmLnZhbGlkYXRlPWZ1bmN0aW9uKGUscil7cj1lJiYhMD09PXJ8fCEwPT09ZTt2YXIgdD1mLmZpZWxkczshMCE9PWUmJiExIT09ZSYmKGUgaW5zdGFuY2VvZiBIVE1MRWxlbWVudD90PVtlLnByaXN0aW5lXTooZSBpbnN0YW5jZW9mIE5vZGVMaXN0fHxlIGluc3RhbmNlb2Yod2luZG93LiR8fEFycmF5KXx8ZSBpbnN0YW5jZW9mIEFycmF5KSYmKHQ9QXJyYXkuZnJvbShlKS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiBlLnByaXN0aW5lfSkpKSk7Zm9yKHZhciBuPSEwLGk9MDt0W2ldO2krKyl7dmFyIHM9dFtpXTtwKHMpPyFyJiZoKHMpOihuPSExLCFyJiZkKHMpKX1yZXR1cm4gbn0sZi5nZXRFcnJvcnM9ZnVuY3Rpb24oZSl7aWYoIWUpe2Zvcih2YXIgcj1bXSx0PTA7dDxmLmZpZWxkcy5sZW5ndGg7dCsrKXt2YXIgbj1mLmZpZWxkc1t0XTtuLmVycm9ycy5sZW5ndGgmJnIucHVzaCh7aW5wdXQ6bi5pbnB1dCxlcnJvcnM6bi5lcnJvcnN9KX1yZXR1cm4gcn1yZXR1cm4gZS50YWdOYW1lJiYic2VsZWN0Ij09PWUudGFnTmFtZS50b0xvd2VyQ2FzZSgpP2UucHJpc3RpbmUuZXJyb3JzOmUubGVuZ3RoP2VbMF0ucHJpc3RpbmUuZXJyb3JzOmUucHJpc3RpbmUuZXJyb3JzfSxmLmFkZFZhbGlkYXRvcj1mdW5jdGlvbihlLHIsdCxuLGkpe2UgaW5zdGFuY2VvZiBIVE1MRWxlbWVudD8oZS5wcmlzdGluZS52YWxpZGF0b3JzLnB1c2goe2ZuOnIsbXNnOnQscHJpb3JpdHk6bixoYWx0Oml9KSxlLnByaXN0aW5lLnZhbGlkYXRvcnMuc29ydCgoZnVuY3Rpb24oZSxyKXtyZXR1cm4gci5wcmlvcml0eS1lLnByaW9yaXR5fSkpKTpjb25zb2xlLndhcm4oIlRoZSBwYXJhbWV0ZXIgZWxlbSBtdXN0IGJlIGEgZG9tIGVsZW1lbnQiKX0sZi5hZGRFcnJvcj1mdW5jdGlvbihlLHIpeyhlPWUubGVuZ3RoP2VbMF06ZSkucHJpc3RpbmUuZXJyb3JzLnB1c2gociksZChlLnByaXN0aW5lKX0sZi5yZXNldD1mdW5jdGlvbigpe2Zvcih2YXIgZT0wO2YuZmllbGRzW2VdO2UrKylmLmZpZWxkc1tlXS5lcnJvckVsZW1lbnRzPW51bGw7QXJyYXkuZnJvbShmLmZvcm0ucXVlcnlTZWxlY3RvckFsbCgiLnByaXN0aW5lLWVycm9yIikpLm1hcCgoZnVuY3Rpb24oZSl7ZS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGUpfSkpLEFycmF5LmZyb20oZi5mb3JtLnF1ZXJ5U2VsZWN0b3JBbGwoIi4iK2YuY29uZmlnLmNsYXNzVG8pKS5tYXAoKGZ1bmN0aW9uKGUpe2UuY2xhc3NMaXN0LnJlbW92ZShmLmNvbmZpZy5zdWNjZXNzQ2xhc3MpLGUuY2xhc3NMaXN0LnJlbW92ZShmLmNvbmZpZy5lcnJvckNsYXNzKX0pKX0sZi5kZXN0cm95PWZ1bmN0aW9uKCl7Zi5yZXNldCgpLGYuZmllbGRzLmZvckVhY2goKGZ1bmN0aW9uKGUpe2RlbGV0ZSBlLmlucHV0LnByaXN0aW5lfSkpLGYuZmllbGRzPVtdfSxmLnNldEdsb2JhbENvbmZpZz1mdW5jdGlvbihlKXtuPWV9LGZ9cmV0dXJuIHUoInRleHQiLHtmbjpmdW5jdGlvbihlKXtyZXR1cm4hMH0scHJpb3JpdHk6MH0pLHUoInJlcXVpcmVkIix7Zm46ZnVuY3Rpb24oZSl7cmV0dXJuInJhZGlvIj09PXRoaXMudHlwZXx8ImNoZWNrYm94Ij09PXRoaXMudHlwZT90KHRoaXMpOnZvaWQgMCE9PWUmJiIiIT09ZX0scHJpb3JpdHk6OTksaGFsdDohMH0pLHUoImVtYWlsIix7Zm46ZnVuY3Rpb24oZSl7cmV0dXJuIWV8fHMudGVzdChlKX19KSx1KCJudW1iZXIiLHtmbjpmdW5jdGlvbihlKXtyZXR1cm4hZXx8IWlzTmFOKHBhcnNlRmxvYXQoZSkpfSxwcmlvcml0eToyfSksdSgiaW50ZWdlciIse2ZuOmZ1bmN0aW9uKGUpe3JldHVybiFlfHwvXlxkKyQvLnRlc3QoZSl9fSksdSgibWlubGVuZ3RoIix7Zm46ZnVuY3Rpb24oZSxyKXtyZXR1cm4hZXx8ZS5sZW5ndGg+PXBhcnNlSW50KHIpfX0pLHUoIm1heGxlbmd0aCIse2ZuOmZ1bmN0aW9uKGUscil7cmV0dXJuIWV8fGUubGVuZ3RoPD1wYXJzZUludChyKX19KSx1KCJtaW4iLHtmbjpmdW5jdGlvbihlLHIpe3JldHVybiFlfHwoImNoZWNrYm94Ij09PXRoaXMudHlwZT90KHRoaXMpPj1wYXJzZUludChyKTpwYXJzZUZsb2F0KGUpPj1wYXJzZUZsb2F0KHIpKX19KSx1KCJtYXgiLHtmbjpmdW5jdGlvbihlLHIpe3JldHVybiFlfHwoImNoZWNrYm94Ij09PXRoaXMudHlwZT90KHRoaXMpPD1wYXJzZUludChyKTpwYXJzZUZsb2F0KGUpPD1wYXJzZUZsb2F0KHIpKX19KSx1KCJwYXR0ZXJuIix7Zm46ZnVuY3Rpb24oZSxyKXt2YXIgdD1yLm1hdGNoKG5ldyBSZWdFeHAoIl4vKC4qPykvKFtnaW15XSopJCIpKTtyZXR1cm4hZXx8bmV3IFJlZ0V4cCh0WzFdLHRbMl0pLnRlc3QoZSl9fSksdSgiZXF1YWxzIix7Zm46ZnVuY3Rpb24oZSxyKXt2YXIgdD1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKHIpO3JldHVybiB0JiYoIWUmJiF0LnZhbHVlfHx0LnZhbHVlPT09ZSl9fSksZi5hZGRWYWxpZGF0b3I9ZnVuY3Rpb24oZSxyLHQsbixpKXt1KGUse2ZuOnIsbXNnOnQscHJpb3JpdHk6bixoYWx0Oml9KX0sZi5hZGRNZXNzYWdlcz1mdW5jdGlvbihyLHQpe3ZhciBuPWUuaGFzT3duUHJvcGVydHkocik\/ZVtyXTplW3JdPXt9O09iamVjdC5rZXlzKHQpLmZvckVhY2goKGZ1bmN0aW9uKGUscil7bltlXT10W2VdfSkpfSxmLnNldExvY2FsZT1mdW5jdGlvbihlKXtvPWV9LGZ9KSk7CgovL0V4dGVuc2lvbgovLyBBIHZhbGlkYXRvciB0byBjaGVjayBpZiB0aGUgaW5wdXQgdmFsdWUgaXMgd2l0aGluIGEgc3BlY2lmaWVkIHJhbmdlCi8vIFRoZSBnbG9iYWwgdmFsaWRhdG9yIG11c3QgYmUgYWRkZWQgYmVmb3JlIGNyZWF0aW5nIHRoZSBwcmlzdGluZSBpbnN0YW5jZQoKLy8gUHJpc3RpbmUuYWRkVmFsaWRhdG9yKCJwaG9uZSIsIGZ1bmN0aW9uKHBob25lKSB7CgovLyAJdmFyIFZhbGlkQXJlYUNvZGVzID0gWwovLyAJCTQzOCw1MTQsMjYzLDQ1MCw1NzksODE5LDI0OSw3MDUsMjI2LAovLyAJCTUxOSwyODksMzY1LDkwNSw0MTYsNDM3LDY0NywzNDMsCi8vIAkJNjEzLDcwOSw4NzMsNDE4LDU4MSw1MDYsOTAyCi8vIAldOwoKLy8gCXBob25lID0gcGhvbmUucmVwbGFjZSgvW14wLTldKy9naSwgJycpOwovLyAJaWYodHlwZW9mIGVtYWlsSGFuZGxlciE9J3VuZGVmaW5lZCcgJiYgdGhpcy5oYXNDbGFzcygncmVxdWlyZWQnKSkgewovLyAJCWVtYWlsSGFuZGxlci5waG9uZU1hbmRhdG9yeT10cnVlOwovLyAJfQovLyAJaWYoIHBob25lWzBdID09ICcxJyApewovLyAJCXBob25lID0gcGhvbmUuc3Vic3RyaW5nKCAxICk7Ci8vIAl9CgovLyAJdmFyIGFyZWFDb2RlID0gcGFyc2VJbnQoIHBob25lLnN1YnN0cmluZygwLDMpICk7CgovLyAJYXhpb3MuZ2V0KCdodHRwczovL2F1dG9hdWJhaW5lLmNvbS9zZXJ2aWNlcy92YWxpZGF0ZVBob25lTnVtYmVyLnBocCcsewovLyAJCXRpbWVvdXQ6MjAwMCwKLy8gCQlkYXRhVHlwZTogJ2pzb24nLAovLyAJCXBhcmFtczoge3Bob25lOiBwaG9uZX0sCi8vIAkJcmVzcG9uc2VUeXBlOiAnanNvbicKLy8gCX0pCi8vIAkudGhlbihmdW5jdGlvbihyZXMpIHsKCi8vIAkJaWYgKHR5cGVvZiByZXMuaXNPayAhPT0gJ3VuZGVmaW5lZCcpewovLyAJCQlpZiAocmVzLnBob25lTnVtYmVySXNWYWxpZCA9PT0gZmFsc2UpIHsKLy8gCQkJCS8vY29uc29sZS5sb2coJ3Bob25lICcrcGhvbmUrJyBpcyBpbnZhbGlkJyk7Ci8vIAkJCQlpZih0eXBlb2YgZW1haWxIYW5kbGVyIT0ndW5kZWZpbmVkJyAmJiBlbWFpbEhhbmRsZXIucGhvbmVNYW5kYXRvcnkgKSB7Ci8vIAkJCQkJZW1haWxIYW5kbGVyLnBob25lVmFsaWRhdGlvbkF0dGVtcHRzKys7Ci8vIAkJCQl9Ci8vIAkJCQlyZXR1cm4gdHJ1ZTsKLy8gCQkJfQovLyAJCQl9IGVsc2UgewovLyAJCQkvL3ZhbGlkYXRlIGFyZWFjb2RlIGF0IGxlYXN0Ci8vIAkJCWlmKCB0eXBlb2YgVmFsaWRBcmVhQ29kZXMuaW5kZXhPZiAhPSAndW5kZWZpbmVkJyAmJglWYWxpZEFyZWFDb2Rlcy5pbmRleE9mKCBhcmVhQ29kZSApID09IC0xICl7Ci8vIAkJCQlyZXR1cm4gZmFsc2U7Ci8vIAkJCX0KLy8gCQl9CgovLyAJfSkKLy8gCS5jYXRjaChmdW5jdGlvbihlcnJvcikgewovLyAJCS8vIHZhbGlkYXRlIGFyZWFjb2RlIGF0IGxlYXN0Ci8vIAkJaWYoIHR5cGVvZiBWYWxpZEFyZWFDb2Rlcy5pbmRleE9mICE9ICd1bmRlZmluZWQnICYmCVZhbGlkQXJlYUNvZGVzLmluZGV4T2YoIGFyZWFDb2RlICkgPT0gLTEgKXsKLy8gCQlpZih0eXBlb2YgZW1haWxIYW5kbGVyIT0ndW5kZWZpbmVkJwkmJiBlbWFpbEhhbmRsZXIucGhvbmVNYW5kYXRvcnkpIGVtYWlsSGFuZGxlci5waG9uZVZhbGlkYXRpb25BdHRlbXB0cysrOwovLyAJCQlyZXR1cm4gZmFsc2U7Ci8vIAkJfQovLyAJCS8vY29uc29sZS5sb2coInZhbGlkaXR5IHZhbGlkYXRlUGhvbmVOdW1iZXIgbmV0d29yayBlcnJvciIpOwoKLy8gCQlyZXR1cm4gZmFsc2U7Ci8vIAl9KTsKCgoKLy8gfSwgIlRoZSB2YWx1ZSAoJHswfSkgbXVzdCBiZSBiZXR3ZWVuICR7MX0gYW5kICR7Mn0iLCA1LCBmYWxzZSk7Ci8qKiAvbS9qcy92YW5pbGxhanMvZmxhdHBpY2tyLm1pbi5qcyAqKi8KLyogZmxhdHBpY2tyIHY0LjYuOSwsIEBsaWNlbnNlIE1JVCAqLwohZnVuY3Rpb24oZSx0KXsib2JqZWN0Ij09dHlwZW9mIGV4cG9ydHMmJiJ1bmRlZmluZWQiIT10eXBlb2YgbW9kdWxlP21vZHVsZS5leHBvcnRzPXQoKToiZnVuY3Rpb24iPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZSh0KTooZT0idW5kZWZpbmVkIiE9dHlwZW9mIGdsb2JhbFRoaXM\/Z2xvYmFsVGhpczplfHxzZWxmKS5mbGF0cGlja3I9dCgpfSh0aGlzLChmdW5jdGlvbigpeyJ1c2Ugc3RyaWN0Ijt2YXIgZT1mdW5jdGlvbigpe3JldHVybihlPU9iamVjdC5hc3NpZ258fGZ1bmN0aW9uKGUpe2Zvcih2YXIgdCxuPTEsYT1hcmd1bWVudHMubGVuZ3RoO248YTtuKyspZm9yKHZhciBpIGluIHQ9YXJndW1lbnRzW25dKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LGkpJiYoZVtpXT10W2ldKTtyZXR1cm4gZX0pLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07ZnVuY3Rpb24gdCgpe2Zvcih2YXIgZT0wLHQ9MCxuPWFyZ3VtZW50cy5sZW5ndGg7dDxuO3QrKyllKz1hcmd1bWVudHNbdF0ubGVuZ3RoO3ZhciBhPUFycmF5KGUpLGk9MDtmb3IodD0wO3Q8bjt0KyspZm9yKHZhciBvPWFyZ3VtZW50c1t0XSxyPTAsbD1vLmxlbmd0aDtyPGw7cisrLGkrKylhW2ldPW9bcl07cmV0dXJuIGF9dmFyIG49WyJvbkNoYW5nZSIsIm9uQ2xvc2UiLCJvbkRheUNyZWF0ZSIsIm9uRGVzdHJveSIsIm9uS2V5RG93biIsIm9uTW9udGhDaGFuZ2UiLCJvbk9wZW4iLCJvblBhcnNlQ29uZmlnIiwib25SZWFkeSIsIm9uVmFsdWVVcGRhdGUiLCJvblllYXJDaGFuZ2UiLCJvblByZUNhbGVuZGFyUG9zaXRpb24iXSxhPXtfZGlzYWJsZTpbXSxhbGxvd0lucHV0OiExLGFsbG93SW52YWxpZFByZWxvYWQ6ITEsYWx0Rm9ybWF0OiJGIGosIFkiLGFsdElucHV0OiExLGFsdElucHV0Q2xhc3M6ImZvcm0tY29udHJvbCBpbnB1dCIsYW5pbWF0ZToib2JqZWN0Ij09dHlwZW9mIHdpbmRvdyYmLTE9PT13aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRleE9mKCJNU0lFIiksYXJpYURhdGVGb3JtYXQ6IkYgaiwgWSIsYXV0b0ZpbGxEZWZhdWx0VGltZTohMCxjbGlja09wZW5zOiEwLGNsb3NlT25TZWxlY3Q6ITAsY29uanVuY3Rpb246IiwgIixkYXRlRm9ybWF0OiJZLW0tZCIsZGVmYXVsdEhvdXI6MTIsZGVmYXVsdE1pbnV0ZTowLGRlZmF1bHRTZWNvbmRzOjAsZGlzYWJsZTpbXSxkaXNhYmxlTW9iaWxlOiExLGVuYWJsZVNlY29uZHM6ITEsZW5hYmxlVGltZTohMSxlcnJvckhhbmRsZXI6ZnVuY3Rpb24oZSl7cmV0dXJuInVuZGVmaW5lZCIhPXR5cGVvZiBjb25zb2xlJiZjb25zb2xlLndhcm4oZSl9LGdldFdlZWs6ZnVuY3Rpb24oZSl7dmFyIHQ9bmV3IERhdGUoZS5nZXRUaW1lKCkpO3Quc2V0SG91cnMoMCwwLDAsMCksdC5zZXREYXRlKHQuZ2V0RGF0ZSgpKzMtKHQuZ2V0RGF5KCkrNiklNyk7dmFyIG49bmV3IERhdGUodC5nZXRGdWxsWWVhcigpLDAsNCk7cmV0dXJuIDErTWF0aC5yb3VuZCgoKHQuZ2V0VGltZSgpLW4uZ2V0VGltZSgpKS84NjRlNS0zKyhuLmdldERheSgpKzYpJTcpLzcpfSxob3VySW5jcmVtZW50OjEsaWdub3JlZEZvY3VzRWxlbWVudHM6W10saW5saW5lOiExLGxvY2FsZToiZGVmYXVsdCIsbWludXRlSW5jcmVtZW50OjUsbW9kZToic2luZ2xlIixtb250aFNlbGVjdG9yVHlwZToiZHJvcGRvd24iLG5leHRBcnJvdzoiPHN2ZyB2ZXJzaW9uPScxLjEnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZycgeG1sbnM6eGxpbms9J2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsnIHZpZXdCb3g9JzAgMCAxNyAxNyc+PGc+PC9nPjxwYXRoIGQ9J00xMy4yMDcgOC40NzJsLTcuODU0IDcuODU0LTAuNzA3LTAuNzA3IDcuMTQ2LTcuMTQ2LTcuMTQ2LTcuMTQ4IDAuNzA3LTAuNzA3IDcuODU0IDcuODU0eicgLz48L3N2Zz4iLG5vQ2FsZW5kYXI6ITEsbm93Om5ldyBEYXRlLG9uQ2hhbmdlOltdLG9uQ2xvc2U6W10sb25EYXlDcmVhdGU6W10sb25EZXN0cm95OltdLG9uS2V5RG93bjpbXSxvbk1vbnRoQ2hhbmdlOltdLG9uT3BlbjpbXSxvblBhcnNlQ29uZmlnOltdLG9uUmVhZHk6W10sb25WYWx1ZVVwZGF0ZTpbXSxvblllYXJDaGFuZ2U6W10sb25QcmVDYWxlbmRhclBvc2l0aW9uOltdLHBsdWdpbnM6W10scG9zaXRpb246ImF1dG8iLHBvc2l0aW9uRWxlbWVudDp2b2lkIDAscHJldkFycm93OiI8c3ZnIHZlcnNpb249JzEuMScgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB4bWxuczp4bGluaz0naHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluaycgdmlld0JveD0nMCAwIDE3IDE3Jz48Zz48L2c+PHBhdGggZD0nTTUuMjA3IDguNDcxbDcuMTQ2IDcuMTQ3LTAuNzA3IDAuNzA3LTcuODUzLTcuODU0IDcuODU0LTcuODUzIDAuNzA3IDAuNzA3LTcuMTQ3IDcuMTQ2eicgLz48L3N2Zz4iLHNob3J0aGFuZEN1cnJlbnRNb250aDohMSxzaG93TW9udGhzOjEsc3RhdGljOiExLHRpbWVfMjRocjohMSx3ZWVrTnVtYmVyczohMSx3cmFwOiExfSxpPXt3ZWVrZGF5czp7c2hvcnRoYW5kOlsiU3VuIiwiTW9uIiwiVHVlIiwiV2VkIiwiVGh1IiwiRnJpIiwiU2F0Il0sbG9uZ2hhbmQ6WyJTdW5kYXkiLCJNb25kYXkiLCJUdWVzZGF5IiwiV2VkbmVzZGF5IiwiVGh1cnNkYXkiLCJGcmlkYXkiLCJTYXR1cmRheSJdfSxtb250aHM6e3Nob3J0aGFuZDpbIkphbiIsIkZlYiIsIk1hciIsIkFwciIsIk1heSIsIkp1biIsIkp1bCIsIkF1ZyIsIlNlcCIsIk9jdCIsIk5vdiIsIkRlYyJdLGxvbmdoYW5kOlsiSmFudWFyeSIsIkZlYnJ1YXJ5IiwiTWFyY2giLCJBcHJpbCIsIk1heSIsIkp1bmUiLCJKdWx5IiwiQXVndXN0IiwiU2VwdGVtYmVyIiwiT2N0b2JlciIsIk5vdmVtYmVyIiwiRGVjZW1iZXIiXX0sZGF5c0luTW9udGg6WzMxLDI4LDMxLDMwLDMxLDMwLDMxLDMxLDMwLDMxLDMwLDMxXSxmaXJzdERheU9mV2VlazowLG9yZGluYWw6ZnVuY3Rpb24oZSl7dmFyIHQ9ZSUxMDA7aWYodD4zJiZ0PDIxKXJldHVybiJ0aCI7c3dpdGNoKHQlMTApe2Nhc2UgMTpyZXR1cm4ic3QiO2Nhc2UgMjpyZXR1cm4ibmQiO2Nhc2UgMzpyZXR1cm4icmQiO2RlZmF1bHQ6cmV0dXJuInRoIn19LHJhbmdlU2VwYXJhdG9yOiIgdG8gIix3ZWVrQWJicmV2aWF0aW9uOiJXayIsc2Nyb2xsVGl0bGU6IlNjcm9sbCB0byBpbmNyZW1lbnQiLHRvZ2dsZVRpdGxlOiJDbGljayB0byB0b2dnbGUiLGFtUE06WyJBTSIsIlBNIl0seWVhckFyaWFMYWJlbDoiWWVhciIsbW9udGhBcmlhTGFiZWw6Ik1vbnRoIixob3VyQXJpYUxhYmVsOiJIb3VyIixtaW51dGVBcmlhTGFiZWw6Ik1pbnV0ZSIsdGltZV8yNGhyOiExfSxvPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHZvaWQgMD09PXQmJih0PTIpLCgiMDAwIitlKS5zbGljZSgtMSp0KX0scj1mdW5jdGlvbihlKXtyZXR1cm4hMD09PWU\/MTowfTtmdW5jdGlvbiBsKGUsdCl7dmFyIG47cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGE9dGhpcztjbGVhclRpbWVvdXQobiksbj1zZXRUaW1lb3V0KChmdW5jdGlvbigpe3JldHVybiBlLmFwcGx5KGEsYXJndW1lbnRzKX0pLHQpfX12YXIgYz1mdW5jdGlvbihlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIEFycmF5P2U6W2VdfTtmdW5jdGlvbiBkKGUsdCxuKXtpZighMD09PW4pcmV0dXJuIGUuY2xhc3NMaXN0LmFkZCh0KTtlLmNsYXNzTGlzdC5yZW1vdmUodCl9ZnVuY3Rpb24gcyhlLHQsbil7dmFyIGE9d2luZG93LmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoZSk7cmV0dXJuIHQ9dHx8IiIsbj1ufHwiIixhLmNsYXNzTmFtZT10LHZvaWQgMCE9PW4mJihhLnRleHRDb250ZW50PW4pLGF9ZnVuY3Rpb24gdShlKXtmb3IoO2UuZmlyc3RDaGlsZDspZS5yZW1vdmVDaGlsZChlLmZpcnN0Q2hpbGQpfWZ1bmN0aW9uIGYoZSx0KXtyZXR1cm4gdChlKT9lOmUucGFyZW50Tm9kZT9mKGUucGFyZW50Tm9kZSx0KTp2b2lkIDB9ZnVuY3Rpb24gbShlLHQpe3ZhciBuPXMoImRpdiIsIm51bUlucHV0V3JhcHBlciIpLGE9cygiaW5wdXQiLCJudW1JbnB1dCAiK2UpLGk9cygic3BhbiIsImFycm93VXAiKSxvPXMoInNwYW4iLCJhcnJvd0Rvd24iKTtpZigtMT09PW5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZigiTVNJRSA5LjAiKT9hLnR5cGU9Im51bWJlciI6KGEudHlwZT0idGV4dCIsYS5wYXR0ZXJuPSJcXGQqIiksdm9pZCAwIT09dClmb3IodmFyIHIgaW4gdClhLnNldEF0dHJpYnV0ZShyLHRbcl0pO3JldHVybiBuLmFwcGVuZENoaWxkKGEpLG4uYXBwZW5kQ2hpbGQoaSksbi5hcHBlbmRDaGlsZChvKSxufWZ1bmN0aW9uIGcoZSl7dHJ5e3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBlLmNvbXBvc2VkUGF0aD9lLmNvbXBvc2VkUGF0aCgpWzBdOmUudGFyZ2V0fWNhdGNoKHQpe3JldHVybiBlLnRhcmdldH19dmFyIHA9ZnVuY3Rpb24oKXt9LGg9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBuLm1vbnRoc1t0PyJzaG9ydGhhbmQiOiJsb25naGFuZCJdW2VdfSx2PXtEOnAsRjpmdW5jdGlvbihlLHQsbil7ZS5zZXRNb250aChuLm1vbnRocy5sb25naGFuZC5pbmRleE9mKHQpKX0sRzpmdW5jdGlvbihlLHQpe2Uuc2V0SG91cnMocGFyc2VGbG9hdCh0KSl9LEg6ZnVuY3Rpb24oZSx0KXtlLnNldEhvdXJzKHBhcnNlRmxvYXQodCkpfSxKOmZ1bmN0aW9uKGUsdCl7ZS5zZXREYXRlKHBhcnNlRmxvYXQodCkpfSxLOmZ1bmN0aW9uKGUsdCxuKXtlLnNldEhvdXJzKGUuZ2V0SG91cnMoKSUxMisxMipyKG5ldyBSZWdFeHAobi5hbVBNWzFdLCJpIikudGVzdCh0KSkpfSxNOmZ1bmN0aW9uKGUsdCxuKXtlLnNldE1vbnRoKG4ubW9udGhzLnNob3J0aGFuZC5pbmRleE9mKHQpKX0sUzpmdW5jdGlvbihlLHQpe2Uuc2V0U2Vjb25kcyhwYXJzZUZsb2F0KHQpKX0sVTpmdW5jdGlvbihlLHQpe3JldHVybiBuZXcgRGF0ZSgxZTMqcGFyc2VGbG9hdCh0KSl9LFc6ZnVuY3Rpb24oZSx0LG4pe3ZhciBhPXBhcnNlSW50KHQpLGk9bmV3IERhdGUoZS5nZXRGdWxsWWVhcigpLDAsMis3KihhLTEpLDAsMCwwLDApO3JldHVybiBpLnNldERhdGUoaS5nZXREYXRlKCktaS5nZXREYXkoKStuLmZpcnN0RGF5T2ZXZWVrKSxpfSxZOmZ1bmN0aW9uKGUsdCl7ZS5zZXRGdWxsWWVhcihwYXJzZUZsb2F0KHQpKX0sWjpmdW5jdGlvbihlLHQpe3JldHVybiBuZXcgRGF0ZSh0KX0sZDpmdW5jdGlvbihlLHQpe2Uuc2V0RGF0ZShwYXJzZUZsb2F0KHQpKX0saDpmdW5jdGlvbihlLHQpe2Uuc2V0SG91cnMocGFyc2VGbG9hdCh0KSl9LGk6ZnVuY3Rpb24oZSx0KXtlLnNldE1pbnV0ZXMocGFyc2VGbG9hdCh0KSl9LGo6ZnVuY3Rpb24oZSx0KXtlLnNldERhdGUocGFyc2VGbG9hdCh0KSl9LGw6cCxtOmZ1bmN0aW9uKGUsdCl7ZS5zZXRNb250aChwYXJzZUZsb2F0KHQpLTEpfSxuOmZ1bmN0aW9uKGUsdCl7ZS5zZXRNb250aChwYXJzZUZsb2F0KHQpLTEpfSxzOmZ1bmN0aW9uKGUsdCl7ZS5zZXRTZWNvbmRzKHBhcnNlRmxvYXQodCkpfSx1OmZ1bmN0aW9uKGUsdCl7cmV0dXJuIG5ldyBEYXRlKHBhcnNlRmxvYXQodCkpfSx3OnAseTpmdW5jdGlvbihlLHQpe2Uuc2V0RnVsbFllYXIoMmUzK3BhcnNlRmxvYXQodCkpfX0sRD17RDoiKFxcdyspIixGOiIoXFx3KykiLEc6IihcXGRcXGR8XFxkKSIsSDoiKFxcZFxcZHxcXGQpIixKOiIoXFxkXFxkfFxcZClcXHcrIixLOiIiLE06IihcXHcrKSIsUzoiKFxcZFxcZHxcXGQpIixVOiIoLispIixXOiIoXFxkXFxkfFxcZCkiLFk6IihcXGR7NH0pIixaOiIoLispIixkOiIoXFxkXFxkfFxcZCkiLGg6IihcXGRcXGR8XFxkKSIsaToiKFxcZFxcZHxcXGQpIixqOiIoXFxkXFxkfFxcZCkiLGw6IihcXHcrKSIsbToiKFxcZFxcZHxcXGQpIixuOiIoXFxkXFxkfFxcZCkiLHM6IihcXGRcXGR8XFxkKSIsdToiKC4rKSIsdzoiKFxcZFxcZHxcXGQpIix5OiIoXFxkezJ9KSJ9LHc9e1o6ZnVuY3Rpb24oZSl7cmV0dXJuIGUudG9JU09TdHJpbmcoKX0sRDpmdW5jdGlvbihlLHQsbil7cmV0dXJuIHQud2Vla2RheXMuc2hvcnRoYW5kW3cudyhlLHQsbildfSxGOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gaCh3Lm4oZSx0LG4pLTEsITEsdCl9LEc6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBvKHcuaChlLHQsbikpfSxIOmZ1bmN0aW9uKGUpe3JldHVybiBvKGUuZ2V0SG91cnMoKSl9LEo6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdm9pZCAwIT09dC5vcmRpbmFsP2UuZ2V0RGF0ZSgpK3Qub3JkaW5hbChlLmdldERhdGUoKSk6ZS5nZXREYXRlKCl9LEs6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdC5hbVBNW3IoZS5nZXRIb3VycygpPjExKV19LE06ZnVuY3Rpb24oZSx0KXtyZXR1cm4gaChlLmdldE1vbnRoKCksITAsdCl9LFM6ZnVuY3Rpb24oZSl7cmV0dXJuIG8oZS5nZXRTZWNvbmRzKCkpfSxVOmZ1bmN0aW9uKGUpe3JldHVybiBlLmdldFRpbWUoKS8xZTN9LFc6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBuLmdldFdlZWsoZSl9LFk6ZnVuY3Rpb24oZSl7cmV0dXJuIG8oZS5nZXRGdWxsWWVhcigpLDQpfSxkOmZ1bmN0aW9uKGUpe3JldHVybiBvKGUuZ2V0RGF0ZSgpKX0saDpmdW5jdGlvbihlKXtyZXR1cm4gZS5nZXRIb3VycygpJTEyP2UuZ2V0SG91cnMoKSUxMjoxMn0saTpmdW5jdGlvbihlKXtyZXR1cm4gbyhlLmdldE1pbnV0ZXMoKSl9LGo6ZnVuY3Rpb24oZSl7cmV0dXJuIGUuZ2V0RGF0ZSgpfSxsOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQud2Vla2RheXMubG9uZ2hhbmRbZS5nZXREYXkoKV19LG06ZnVuY3Rpb24oZSl7cmV0dXJuIG8oZS5nZXRNb250aCgpKzEpfSxuOmZ1bmN0aW9uKGUpe3JldHVybiBlLmdldE1vbnRoKCkrMX0sczpmdW5jdGlvbihlKXtyZXR1cm4gZS5nZXRTZWNvbmRzKCl9LHU6ZnVuY3Rpb24oZSl7cmV0dXJuIGUuZ2V0VGltZSgpfSx3OmZ1bmN0aW9uKGUpe3JldHVybiBlLmdldERheSgpfSx5OmZ1bmN0aW9uKGUpe3JldHVybiBTdHJpbmcoZS5nZXRGdWxsWWVhcigpKS5zdWJzdHJpbmcoMil9fSxiPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29uZmlnLG49dm9pZCAwPT09dD9hOnQsbz1lLmwxMG4scj12b2lkIDA9PT1vP2k6byxsPWUuaXNNb2JpbGUsYz12b2lkIDAhPT1sJiZsO3JldHVybiBmdW5jdGlvbihlLHQsYSl7dmFyIGk9YXx8cjtyZXR1cm4gdm9pZCAwPT09bi5mb3JtYXREYXRlfHxjP3Quc3BsaXQoIiIpLm1hcCgoZnVuY3Rpb24odCxhLG8pe3JldHVybiB3W3RdJiYiXFwiIT09b1thLTFdP3dbdF0oZSxpLG4pOiJcXCIhPT10P3Q6IiJ9KSkuam9pbigiIik6bi5mb3JtYXREYXRlKGUsdCxpKX19LEM9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb25maWcsbj12b2lkIDA9PT10P2E6dCxvPWUubDEwbixyPXZvaWQgMD09PW8\/aTpvO3JldHVybiBmdW5jdGlvbihlLHQsaSxvKXtpZigwPT09ZXx8ZSl7dmFyIGwsYz1vfHxyLGQ9ZTtpZihlIGluc3RhbmNlb2YgRGF0ZSlsPW5ldyBEYXRlKGUuZ2V0VGltZSgpKTtlbHNlIGlmKCJzdHJpbmciIT10eXBlb2YgZSYmdm9pZCAwIT09ZS50b0ZpeGVkKWw9bmV3IERhdGUoZSk7ZWxzZSBpZigic3RyaW5nIj09dHlwZW9mIGUpe3ZhciBzPXR8fChufHxhKS5kYXRlRm9ybWF0LHU9U3RyaW5nKGUpLnRyaW0oKTtpZigidG9kYXkiPT09dSlsPW5ldyBEYXRlLGk9ITA7ZWxzZSBpZigvWiQvLnRlc3QodSl8fC9HTVQkLy50ZXN0KHUpKWw9bmV3IERhdGUoZSk7ZWxzZSBpZihuJiZuLnBhcnNlRGF0ZSlsPW4ucGFyc2VEYXRlKGUscyk7ZWxzZXtsPW4mJm4ubm9DYWxlbmRhcj9uZXcgRGF0ZSgobmV3IERhdGUpLnNldEhvdXJzKDAsMCwwLDApKTpuZXcgRGF0ZSgobmV3IERhdGUpLmdldEZ1bGxZZWFyKCksMCwxLDAsMCwwLDApO2Zvcih2YXIgZj12b2lkIDAsbT1bXSxnPTAscD0wLGg9IiI7ZzxzLmxlbmd0aDtnKyspe3ZhciB3PXNbZ10sYj0iXFwiPT09dyxDPSJcXCI9PT1zW2ctMV18fGI7aWYoRFt3XSYmIUMpe2grPURbd107dmFyIE09bmV3IFJlZ0V4cChoKS5leGVjKGUpO00mJihmPSEwKSYmbVsiWSIhPT13PyJwdXNoIjoidW5zaGlmdCJdKHtmbjp2W3ddLHZhbDpNWysrcF19KX1lbHNlIGJ8fChoKz0iLiIpO20uZm9yRWFjaCgoZnVuY3Rpb24oZSl7dmFyIHQ9ZS5mbixuPWUudmFsO3JldHVybiBsPXQobCxuLGMpfHxsfSkpfWw9Zj9sOnZvaWQgMH19aWYobCBpbnN0YW5jZW9mIERhdGUmJiFpc05hTihsLmdldFRpbWUoKSkpcmV0dXJuITA9PT1pJiZsLnNldEhvdXJzKDAsMCwwLDApLGw7bi5lcnJvckhhbmRsZXIobmV3IEVycm9yKCJJbnZhbGlkIGRhdGUgcHJvdmlkZWQ6ICIrZCkpfX19O2Z1bmN0aW9uIE0oZSx0LG4pe3JldHVybiB2b2lkIDA9PT1uJiYobj0hMCksITEhPT1uP25ldyBEYXRlKGUuZ2V0VGltZSgpKS5zZXRIb3VycygwLDAsMCwwKS1uZXcgRGF0ZSh0LmdldFRpbWUoKSkuc2V0SG91cnMoMCwwLDAsMCk6ZS5nZXRUaW1lKCktdC5nZXRUaW1lKCl9dmFyIHk9ODY0ZTU7ZnVuY3Rpb24geChlKXt2YXIgdD1lLmRlZmF1bHRIb3VyLG49ZS5kZWZhdWx0TWludXRlLGE9ZS5kZWZhdWx0U2Vjb25kcztpZih2b2lkIDAhPT1lLm1pbkRhdGUpe3ZhciBpPWUubWluRGF0ZS5nZXRIb3VycygpLG89ZS5taW5EYXRlLmdldE1pbnV0ZXMoKSxyPWUubWluRGF0ZS5nZXRTZWNvbmRzKCk7dDxpJiYodD1pKSx0PT09aSYmbjxvJiYobj1vKSx0PT09aSYmbj09PW8mJmE8ciYmKGE9ZS5taW5EYXRlLmdldFNlY29uZHMoKSl9aWYodm9pZCAwIT09ZS5tYXhEYXRlKXt2YXIgbD1lLm1heERhdGUuZ2V0SG91cnMoKSxjPWUubWF4RGF0ZS5nZXRNaW51dGVzKCk7KHQ9TWF0aC5taW4odCxsKSk9PT1sJiYobj1NYXRoLm1pbihjLG4pKSx0PT09bCYmbj09PWMmJihhPWUubWF4RGF0ZS5nZXRTZWNvbmRzKCkpfXJldHVybntob3Vyczp0LG1pbnV0ZXM6bixzZWNvbmRzOmF9fSJmdW5jdGlvbiIhPXR5cGVvZiBPYmplY3QuYXNzaWduJiYoT2JqZWN0LmFzc2lnbj1mdW5jdGlvbihlKXtmb3IodmFyIHQ9W10sbj0xO248YXJndW1lbnRzLmxlbmd0aDtuKyspdFtuLTFdPWFyZ3VtZW50c1tuXTtpZighZSl0aHJvdyBUeXBlRXJyb3IoIkNhbm5vdCBjb252ZXJ0IHVuZGVmaW5lZCBvciBudWxsIHRvIG9iamVjdCIpO2Zvcih2YXIgYT1mdW5jdGlvbih0KXt0JiZPYmplY3Qua2V5cyh0KS5mb3JFYWNoKChmdW5jdGlvbihuKXtyZXR1cm4gZVtuXT10W25dfSkpfSxpPTAsbz10O2k8by5sZW5ndGg7aSsrKXt2YXIgcj1vW2ldO2Eocil9cmV0dXJuIGV9KTtmdW5jdGlvbiBFKHAsdil7dmFyIHc9e2NvbmZpZzplKGUoe30sYSksVC5kZWZhdWx0Q29uZmlnKSxsMTBuOml9O2Z1bmN0aW9uIEUoZSl7cmV0dXJuIGUuYmluZCh3KX1mdW5jdGlvbiBrKCl7dmFyIGU9dy5jb25maWc7ITE9PT1lLndlZWtOdW1iZXJzJiYxPT09ZS5zaG93TW9udGhzfHwhMCE9PWUubm9DYWxlbmRhciYmd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSgoZnVuY3Rpb24oKXtpZih2b2lkIDAhPT13LmNhbGVuZGFyQ29udGFpbmVyJiYody5jYWxlbmRhckNvbnRhaW5lci5zdHlsZS52aXNpYmlsaXR5PSJoaWRkZW4iLHcuY2FsZW5kYXJDb250YWluZXIuc3R5bGUuZGlzcGxheT0iYmxvY2siKSx2b2lkIDAhPT13LmRheXNDb250YWluZXIpe3ZhciB0PSh3LmRheXMub2Zmc2V0V2lkdGgrMSkqZS5zaG93TW9udGhzO3cuZGF5c0NvbnRhaW5lci5zdHlsZS53aWR0aD10KyJweCIsdy5jYWxlbmRhckNvbnRhaW5lci5zdHlsZS53aWR0aD10Kyh2b2lkIDAhPT13LndlZWtXcmFwcGVyP3cud2Vla1dyYXBwZXIub2Zmc2V0V2lkdGg6MCkrInB4Iix3LmNhbGVuZGFyQ29udGFpbmVyLnN0eWxlLnJlbW92ZVByb3BlcnR5KCJ2aXNpYmlsaXR5Iiksdy5jYWxlbmRhckNvbnRhaW5lci5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgiZGlzcGxheSIpfX0pKX1mdW5jdGlvbiBJKGUpe2lmKDA9PT13LnNlbGVjdGVkRGF0ZXMubGVuZ3RoKXt2YXIgdD12b2lkIDA9PT13LmNvbmZpZy5taW5EYXRlfHxNKG5ldyBEYXRlLHcuY29uZmlnLm1pbkRhdGUpPj0wP25ldyBEYXRlOm5ldyBEYXRlKHcuY29uZmlnLm1pbkRhdGUuZ2V0VGltZSgpKSxuPXgody5jb25maWcpO3Quc2V0SG91cnMobi5ob3VycyxuLm1pbnV0ZXMsbi5zZWNvbmRzLHQuZ2V0TWlsbGlzZWNvbmRzKCkpLHcuc2VsZWN0ZWREYXRlcz1bdF0sdy5sYXRlc3RTZWxlY3RlZERhdGVPYmo9dH12b2lkIDAhPT1lJiYiYmx1ciIhPT1lLnR5cGUmJmZ1bmN0aW9uKGUpe2UucHJldmVudERlZmF1bHQoKTt2YXIgdD0ia2V5ZG93biI9PT1lLnR5cGUsbj1nKGUpLGE9bjt2b2lkIDAhPT13LmFtUE0mJm49PT13LmFtUE0mJih3LmFtUE0udGV4dENvbnRlbnQ9dy5sMTBuLmFtUE1bcih3LmFtUE0udGV4dENvbnRlbnQ9PT13LmwxMG4uYW1QTVswXSldKTt2YXIgaT1wYXJzZUZsb2F0KGEuZ2V0QXR0cmlidXRlKCJtaW4iKSksbD1wYXJzZUZsb2F0KGEuZ2V0QXR0cmlidXRlKCJtYXgiKSksYz1wYXJzZUZsb2F0KGEuZ2V0QXR0cmlidXRlKCJzdGVwIikpLGQ9cGFyc2VJbnQoYS52YWx1ZSwxMCkscz1lLmRlbHRhfHwodD8zOD09PWUud2hpY2g\/MTotMTowKSx1PWQrYypzO2lmKHZvaWQgMCE9PWEudmFsdWUmJjI9PT1hLnZhbHVlLmxlbmd0aCl7dmFyIGY9YT09PXcuaG91ckVsZW1lbnQsbT1hPT09dy5taW51dGVFbGVtZW50O3U8aT8odT1sK3UrcighZikrKHIoZikmJnIoIXcuYW1QTSkpLG0mJmoodm9pZCAwLC0xLHcuaG91ckVsZW1lbnQpKTp1PmwmJih1PWE9PT13LmhvdXJFbGVtZW50P3UtbC1yKCF3LmFtUE0pOmksbSYmaih2b2lkIDAsMSx3LmhvdXJFbGVtZW50KSksdy5hbVBNJiZmJiYoMT09PWM\/dStkPT09MjM6TWF0aC5hYnModS1kKT5jKSYmKHcuYW1QTS50ZXh0Q29udGVudD13LmwxMG4uYW1QTVtyKHcuYW1QTS50ZXh0Q29udGVudD09PXcubDEwbi5hbVBNWzBdKV0pLGEudmFsdWU9byh1KX19KGUpO3ZhciBhPXcuX2lucHV0LnZhbHVlO1MoKSxiZSgpLHcuX2lucHV0LnZhbHVlIT09YSYmdy5fZGVib3VuY2VkQ2hhbmdlKCl9ZnVuY3Rpb24gUygpe2lmKHZvaWQgMCE9PXcuaG91ckVsZW1lbnQmJnZvaWQgMCE9PXcubWludXRlRWxlbWVudCl7dmFyIGUsdCxuPShwYXJzZUludCh3LmhvdXJFbGVtZW50LnZhbHVlLnNsaWNlKC0yKSwxMCl8fDApJTI0LGE9KHBhcnNlSW50KHcubWludXRlRWxlbWVudC52YWx1ZSwxMCl8fDApJTYwLGk9dm9pZCAwIT09dy5zZWNvbmRFbGVtZW50PyhwYXJzZUludCh3LnNlY29uZEVsZW1lbnQudmFsdWUsMTApfHwwKSU2MDowO3ZvaWQgMCE9PXcuYW1QTSYmKGU9bix0PXcuYW1QTS50ZXh0Q29udGVudCxuPWUlMTIrMTIqcih0PT09dy5sMTBuLmFtUE1bMV0pKTt2YXIgbz12b2lkIDAhPT13LmNvbmZpZy5taW5UaW1lfHx3LmNvbmZpZy5taW5EYXRlJiZ3Lm1pbkRhdGVIYXNUaW1lJiZ3LmxhdGVzdFNlbGVjdGVkRGF0ZU9iaiYmMD09PU0ody5sYXRlc3RTZWxlY3RlZERhdGVPYmosdy5jb25maWcubWluRGF0ZSwhMCk7aWYodm9pZCAwIT09dy5jb25maWcubWF4VGltZXx8dy5jb25maWcubWF4RGF0ZSYmdy5tYXhEYXRlSGFzVGltZSYmdy5sYXRlc3RTZWxlY3RlZERhdGVPYmomJjA9PT1NKHcubGF0ZXN0U2VsZWN0ZWREYXRlT2JqLHcuY29uZmlnLm1heERhdGUsITApKXt2YXIgbD12b2lkIDAhPT13LmNvbmZpZy5tYXhUaW1lP3cuY29uZmlnLm1heFRpbWU6dy5jb25maWcubWF4RGF0ZTsobj1NYXRoLm1pbihuLGwuZ2V0SG91cnMoKSkpPT09bC5nZXRIb3VycygpJiYoYT1NYXRoLm1pbihhLGwuZ2V0TWludXRlcygpKSksYT09PWwuZ2V0TWludXRlcygpJiYoaT1NYXRoLm1pbihpLGwuZ2V0U2Vjb25kcygpKSl9aWYobyl7dmFyIGM9dm9pZCAwIT09dy5jb25maWcubWluVGltZT93LmNvbmZpZy5taW5UaW1lOncuY29uZmlnLm1pbkRhdGU7KG49TWF0aC5tYXgobixjLmdldEhvdXJzKCkpKT09PWMuZ2V0SG91cnMoKSYmYTxjLmdldE1pbnV0ZXMoKSYmKGE9Yy5nZXRNaW51dGVzKCkpLGE9PT1jLmdldE1pbnV0ZXMoKSYmKGk9TWF0aC5tYXgoaSxjLmdldFNlY29uZHMoKSkpfU8obixhLGkpfX1mdW5jdGlvbiBfKGUpe3ZhciB0PWV8fHcubGF0ZXN0U2VsZWN0ZWREYXRlT2JqO3QmJk8odC5nZXRIb3VycygpLHQuZ2V0TWludXRlcygpLHQuZ2V0U2Vjb25kcygpKX1mdW5jdGlvbiBPKGUsdCxuKXt2b2lkIDAhPT13LmxhdGVzdFNlbGVjdGVkRGF0ZU9iaiYmdy5sYXRlc3RTZWxlY3RlZERhdGVPYmouc2V0SG91cnMoZSUyNCx0LG58fDAsMCksdy5ob3VyRWxlbWVudCYmdy5taW51dGVFbGVtZW50JiYhdy5pc01vYmlsZSYmKHcuaG91ckVsZW1lbnQudmFsdWU9byh3LmNvbmZpZy50aW1lXzI0aHI\/ZTooMTIrZSklMTIrMTIqcihlJTEyPT0wKSksdy5taW51dGVFbGVtZW50LnZhbHVlPW8odCksdm9pZCAwIT09dy5hbVBNJiYody5hbVBNLnRleHRDb250ZW50PXcubDEwbi5hbVBNW3IoZT49MTIpXSksdm9pZCAwIT09dy5zZWNvbmRFbGVtZW50JiYody5zZWNvbmRFbGVtZW50LnZhbHVlPW8obikpKX1mdW5jdGlvbiBGKGUpe3ZhciB0PWcoZSksbj1wYXJzZUludCh0LnZhbHVlKSsoZS5kZWx0YXx8MCk7KG4vMWUzPjF8fCJFbnRlciI9PT1lLmtleSYmIS9bXlxkXS8udGVzdChuLnRvU3RyaW5nKCkpKSYmUShuKX1mdW5jdGlvbiBBKGUsdCxuLGEpe3JldHVybiB0IGluc3RhbmNlb2YgQXJyYXk\/dC5mb3JFYWNoKChmdW5jdGlvbih0KXtyZXR1cm4gQShlLHQsbixhKX0pKTplIGluc3RhbmNlb2YgQXJyYXk\/ZS5mb3JFYWNoKChmdW5jdGlvbihlKXtyZXR1cm4gQShlLHQsbixhKX0pKTooZS5hZGRFdmVudExpc3RlbmVyKHQsbixhKSx2b2lkIHcuX2hhbmRsZXJzLnB1c2goe3JlbW92ZTpmdW5jdGlvbigpe3JldHVybiBlLnJlbW92ZUV2ZW50TGlzdGVuZXIodCxuKX19KSl9ZnVuY3Rpb24gTigpe3BlKCJvbkNoYW5nZSIpfWZ1bmN0aW9uIFAoZSx0KXt2YXIgbj12b2lkIDAhPT1lP3cucGFyc2VEYXRlKGUpOncubGF0ZXN0U2VsZWN0ZWREYXRlT2JqfHwody5jb25maWcubWluRGF0ZSYmdy5jb25maWcubWluRGF0ZT53Lm5vdz93LmNvbmZpZy5taW5EYXRlOncuY29uZmlnLm1heERhdGUmJncuY29uZmlnLm1heERhdGU8dy5ub3c\/dy5jb25maWcubWF4RGF0ZTp3Lm5vdyksYT13LmN1cnJlbnRZZWFyLGk9dy5jdXJyZW50TW9udGg7dHJ5e3ZvaWQgMCE9PW4mJih3LmN1cnJlbnRZZWFyPW4uZ2V0RnVsbFllYXIoKSx3LmN1cnJlbnRNb250aD1uLmdldE1vbnRoKCkpfWNhdGNoKGUpe2UubWVzc2FnZT0iSW52YWxpZCBkYXRlIHN1cHBsaWVkOiAiK24sdy5jb25maWcuZXJyb3JIYW5kbGVyKGUpfXQmJncuY3VycmVudFllYXIhPT1hJiYocGUoIm9uWWVhckNoYW5nZSIpLEsoKSksIXR8fHcuY3VycmVudFllYXI9PT1hJiZ3LmN1cnJlbnRNb250aD09PWl8fHBlKCJvbk1vbnRoQ2hhbmdlIiksdy5yZWRyYXcoKX1mdW5jdGlvbiBZKGUpe3ZhciB0PWcoZSk7fnQuY2xhc3NOYW1lLmluZGV4T2YoImFycm93IikmJmooZSx0LmNsYXNzTGlzdC5jb250YWlucygiYXJyb3dVcCIpPzE6LTEpfWZ1bmN0aW9uIGooZSx0LG4pe3ZhciBhPWUmJmcoZSksaT1ufHxhJiZhLnBhcmVudE5vZGUmJmEucGFyZW50Tm9kZS5maXJzdENoaWxkLG89aGUoImluY3JlbWVudCIpO28uZGVsdGE9dCxpJiZpLmRpc3BhdGNoRXZlbnQobyl9ZnVuY3Rpb24gSChlLHQsbixhKXt2YXIgaT1YKHQsITApLG89cygic3BhbiIsImZsYXRwaWNrci1kYXkgIitlLHQuZ2V0RGF0ZSgpLnRvU3RyaW5nKCkpO3JldHVybiBvLmRhdGVPYmo9dCxvLiRpPWEsby5zZXRBdHRyaWJ1dGUoImFyaWEtbGFiZWwiLHcuZm9ybWF0RGF0ZSh0LHcuY29uZmlnLmFyaWFEYXRlRm9ybWF0KSksLTE9PT1lLmluZGV4T2YoImhpZGRlbiIpJiYwPT09TSh0LHcubm93KSYmKHcudG9kYXlEYXRlRWxlbT1vLG8uY2xhc3NMaXN0LmFkZCgidG9kYXkiKSxvLnNldEF0dHJpYnV0ZSgiYXJpYS1jdXJyZW50IiwiZGF0ZSIpKSxpPyhvLnRhYkluZGV4PS0xLHZlKHQpJiYoby5jbGFzc0xpc3QuYWRkKCJzZWxlY3RlZCIpLHcuc2VsZWN0ZWREYXRlRWxlbT1vLCJyYW5nZSI9PT13LmNvbmZpZy5tb2RlJiYoZChvLCJzdGFydFJhbmdlIix3LnNlbGVjdGVkRGF0ZXNbMF0mJjA9PT1NKHQsdy5zZWxlY3RlZERhdGVzWzBdLCEwKSksZChvLCJlbmRSYW5nZSIsdy5zZWxlY3RlZERhdGVzWzFdJiYwPT09TSh0LHcuc2VsZWN0ZWREYXRlc1sxXSwhMCkpLCJuZXh0TW9udGhEYXkiPT09ZSYmby5jbGFzc0xpc3QuYWRkKCJpblJhbmdlIikpKSk6by5jbGFzc0xpc3QuYWRkKCJmbGF0cGlja3ItZGlzYWJsZWQiKSwicmFuZ2UiPT09dy5jb25maWcubW9kZSYmZnVuY3Rpb24oZSl7cmV0dXJuISgicmFuZ2UiIT09dy5jb25maWcubW9kZXx8dy5zZWxlY3RlZERhdGVzLmxlbmd0aDwyKSYmKE0oZSx3LnNlbGVjdGVkRGF0ZXNbMF0pPj0wJiZNKGUsdy5zZWxlY3RlZERhdGVzWzFdKTw9MCl9KHQpJiYhdmUodCkmJm8uY2xhc3NMaXN0LmFkZCgiaW5SYW5nZSIpLHcud2Vla051bWJlcnMmJjE9PT13LmNvbmZpZy5zaG93TW9udGhzJiYicHJldk1vbnRoRGF5IiE9PWUmJm4lNz09MSYmdy53ZWVrTnVtYmVycy5pbnNlcnRBZGphY2VudEhUTUwoImJlZm9yZWVuZCIsIjxzcGFuIGNsYXNzPSdmbGF0cGlja3ItZGF5Jz4iK3cuY29uZmlnLmdldFdlZWsodCkrIjwvc3Bhbj4iKSxwZSgib25EYXlDcmVhdGUiLG8pLG99ZnVuY3Rpb24gTChlKXtlLmZvY3VzKCksInJhbmdlIj09PXcuY29uZmlnLm1vZGUmJmFlKGUpfWZ1bmN0aW9uIFcoZSl7Zm9yKHZhciB0PWU+MD8wOncuY29uZmlnLnNob3dNb250aHMtMSxuPWU+MD93LmNvbmZpZy5zaG93TW9udGhzOi0xLGE9dDthIT1uO2ErPWUpZm9yKHZhciBpPXcuZGF5c0NvbnRhaW5lci5jaGlsZHJlblthXSxvPWU+MD8wOmkuY2hpbGRyZW4ubGVuZ3RoLTEscj1lPjA\/aS5jaGlsZHJlbi5sZW5ndGg6LTEsbD1vO2whPXI7bCs9ZSl7dmFyIGM9aS5jaGlsZHJlbltsXTtpZigtMT09PWMuY2xhc3NOYW1lLmluZGV4T2YoImhpZGRlbiIpJiZYKGMuZGF0ZU9iaikpcmV0dXJuIGN9fWZ1bmN0aW9uIFIoZSx0KXt2YXIgbj1lZShkb2N1bWVudC5hY3RpdmVFbGVtZW50fHxkb2N1bWVudC5ib2R5KSxhPXZvaWQgMCE9PWU\/ZTpuP2RvY3VtZW50LmFjdGl2ZUVsZW1lbnQ6dm9pZCAwIT09dy5zZWxlY3RlZERhdGVFbGVtJiZlZSh3LnNlbGVjdGVkRGF0ZUVsZW0pP3cuc2VsZWN0ZWREYXRlRWxlbTp2b2lkIDAhPT13LnRvZGF5RGF0ZUVsZW0mJmVlKHcudG9kYXlEYXRlRWxlbSk\/dy50b2RheURhdGVFbGVtOlcodD4wPzE6LTEpO3ZvaWQgMD09PWE\/dy5faW5wdXQuZm9jdXMoKTpuP2Z1bmN0aW9uKGUsdCl7Zm9yKHZhciBuPS0xPT09ZS5jbGFzc05hbWUuaW5kZXhPZigiTW9udGgiKT9lLmRhdGVPYmouZ2V0TW9udGgoKTp3LmN1cnJlbnRNb250aCxhPXQ+MD93LmNvbmZpZy5zaG93TW9udGhzOi0xLGk9dD4wPzE6LTEsbz1uLXcuY3VycmVudE1vbnRoO28hPWE7bys9aSlmb3IodmFyIHI9dy5kYXlzQ29udGFpbmVyLmNoaWxkcmVuW29dLGw9bi13LmN1cnJlbnRNb250aD09PW8\/ZS4kaSt0OnQ8MD9yLmNoaWxkcmVuLmxlbmd0aC0xOjAsYz1yLmNoaWxkcmVuLmxlbmd0aCxkPWw7ZD49MCYmZDxjJiZkIT0odD4wP2M6LTEpO2QrPWkpe3ZhciBzPXIuY2hpbGRyZW5bZF07aWYoLTE9PT1zLmNsYXNzTmFtZS5pbmRleE9mKCJoaWRkZW4iKSYmWChzLmRhdGVPYmopJiZNYXRoLmFicyhlLiRpLWQpPj1NYXRoLmFicyh0KSlyZXR1cm4gTChzKX13LmNoYW5nZU1vbnRoKGkpLFIoVyhpKSwwKX0oYSx0KTpMKGEpfWZ1bmN0aW9uIEIoZSx0KXtmb3IodmFyIG49KG5ldyBEYXRlKGUsdCwxKS5nZXREYXkoKS13LmwxMG4uZmlyc3REYXlPZldlZWsrNyklNyxhPXcudXRpbHMuZ2V0RGF5c0luTW9udGgoKHQtMSsxMiklMTIsZSksaT13LnV0aWxzLmdldERheXNJbk1vbnRoKHQsZSksbz13aW5kb3cuZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpLHI9dy5jb25maWcuc2hvd01vbnRocz4xLGw9cj8icHJldk1vbnRoRGF5IGhpZGRlbiI6InByZXZNb250aERheSIsYz1yPyJuZXh0TW9udGhEYXkgaGlkZGVuIjoibmV4dE1vbnRoRGF5IixkPWErMS1uLHU9MDtkPD1hO2QrKyx1Kyspby5hcHBlbmRDaGlsZChIKGwsbmV3IERhdGUoZSx0LTEsZCksZCx1KSk7Zm9yKGQ9MTtkPD1pO2QrKyx1Kyspby5hcHBlbmRDaGlsZChIKCIiLG5ldyBEYXRlKGUsdCxkKSxkLHUpKTtmb3IodmFyIGY9aSsxO2Y8PTQyLW4mJigxPT09dy5jb25maWcuc2hvd01vbnRoc3x8dSU3IT0wKTtmKyssdSsrKW8uYXBwZW5kQ2hpbGQoSChjLG5ldyBEYXRlKGUsdCsxLGYlaSksZix1KSk7dmFyIG09cygiZGl2IiwiZGF5Q29udGFpbmVyIik7cmV0dXJuIG0uYXBwZW5kQ2hpbGQobyksbX1mdW5jdGlvbiBKKCl7aWYodm9pZCAwIT09dy5kYXlzQ29udGFpbmVyKXt1KHcuZGF5c0NvbnRhaW5lciksdy53ZWVrTnVtYmVycyYmdSh3LndlZWtOdW1iZXJzKTtmb3IodmFyIGU9ZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpLHQ9MDt0PHcuY29uZmlnLnNob3dNb250aHM7dCsrKXt2YXIgbj1uZXcgRGF0ZSh3LmN1cnJlbnRZZWFyLHcuY3VycmVudE1vbnRoLDEpO24uc2V0TW9udGgody5jdXJyZW50TW9udGgrdCksZS5hcHBlbmRDaGlsZChCKG4uZ2V0RnVsbFllYXIoKSxuLmdldE1vbnRoKCkpKX13LmRheXNDb250YWluZXIuYXBwZW5kQ2hpbGQoZSksdy5kYXlzPXcuZGF5c0NvbnRhaW5lci5maXJzdENoaWxkLCJyYW5nZSI9PT13LmNvbmZpZy5tb2RlJiYxPT09dy5zZWxlY3RlZERhdGVzLmxlbmd0aCYmYWUoKX19ZnVuY3Rpb24gSygpe2lmKCEody5jb25maWcuc2hvd01vbnRocz4xfHwiZHJvcGRvd24iIT09dy5jb25maWcubW9udGhTZWxlY3RvclR5cGUpKXt2YXIgZT1mdW5jdGlvbihlKXtyZXR1cm4hKHZvaWQgMCE9PXcuY29uZmlnLm1pbkRhdGUmJncuY3VycmVudFllYXI9PT13LmNvbmZpZy5taW5EYXRlLmdldEZ1bGxZZWFyKCkmJmU8dy5jb25maWcubWluRGF0ZS5nZXRNb250aCgpKSYmISh2b2lkIDAhPT13LmNvbmZpZy5tYXhEYXRlJiZ3LmN1cnJlbnRZZWFyPT09dy5jb25maWcubWF4RGF0ZS5nZXRGdWxsWWVhcigpJiZlPncuY29uZmlnLm1heERhdGUuZ2V0TW9udGgoKSl9O3cubW9udGhzRHJvcGRvd25Db250YWluZXIudGFiSW5kZXg9LTEsdy5tb250aHNEcm9wZG93bkNvbnRhaW5lci5pbm5lckhUTUw9IiI7Zm9yKHZhciB0PTA7dDwxMjt0KyspaWYoZSh0KSl7dmFyIG49cygib3B0aW9uIiwiZmxhdHBpY2tyLW1vbnRoRHJvcGRvd24tbW9udGgiKTtuLnZhbHVlPW5ldyBEYXRlKHcuY3VycmVudFllYXIsdCkuZ2V0TW9udGgoKS50b1N0cmluZygpLG4udGV4dENvbnRlbnQ9aCh0LHcuY29uZmlnLnNob3J0aGFuZEN1cnJlbnRNb250aCx3LmwxMG4pLG4udGFiSW5kZXg9LTEsdy5jdXJyZW50TW9udGg9PT10JiYobi5zZWxlY3RlZD0hMCksdy5tb250aHNEcm9wZG93bkNvbnRhaW5lci5hcHBlbmRDaGlsZChuKX19fWZ1bmN0aW9uIFUoKXt2YXIgZSx0PXMoImRpdiIsImZsYXRwaWNrci1tb250aCIpLG49d2luZG93LmRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTt3LmNvbmZpZy5zaG93TW9udGhzPjF8fCJzdGF0aWMiPT09dy5jb25maWcubW9udGhTZWxlY3RvclR5cGU\/ZT1zKCJzcGFuIiwiY3VyLW1vbnRoIik6KHcubW9udGhzRHJvcGRvd25Db250YWluZXI9cygic2VsZWN0IiwiZmxhdHBpY2tyLW1vbnRoRHJvcGRvd24tbW9udGhzIiksdy5tb250aHNEcm9wZG93bkNvbnRhaW5lci5zZXRBdHRyaWJ1dGUoImFyaWEtbGFiZWwiLHcubDEwbi5tb250aEFyaWFMYWJlbCksQSh3Lm1vbnRoc0Ryb3Bkb3duQ29udGFpbmVyLCJjaGFuZ2UiLChmdW5jdGlvbihlKXt2YXIgdD1nKGUpLG49cGFyc2VJbnQodC52YWx1ZSwxMCk7dy5jaGFuZ2VNb250aChuLXcuY3VycmVudE1vbnRoKSxwZSgib25Nb250aENoYW5nZSIpfSkpLEsoKSxlPXcubW9udGhzRHJvcGRvd25Db250YWluZXIpO3ZhciBhPW0oImN1ci15ZWFyIix7dGFiaW5kZXg6Ii0xIn0pLGk9YS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaW5wdXQiKVswXTtpLnNldEF0dHJpYnV0ZSgiYXJpYS1sYWJlbCIsdy5sMTBuLnllYXJBcmlhTGFiZWwpLHcuY29uZmlnLm1pbkRhdGUmJmkuc2V0QXR0cmlidXRlKCJtaW4iLHcuY29uZmlnLm1pbkRhdGUuZ2V0RnVsbFllYXIoKS50b1N0cmluZygpKSx3LmNvbmZpZy5tYXhEYXRlJiYoaS5zZXRBdHRyaWJ1dGUoIm1heCIsdy5jb25maWcubWF4RGF0ZS5nZXRGdWxsWWVhcigpLnRvU3RyaW5nKCkpLGkuZGlzYWJsZWQ9ISF3LmNvbmZpZy5taW5EYXRlJiZ3LmNvbmZpZy5taW5EYXRlLmdldEZ1bGxZZWFyKCk9PT13LmNvbmZpZy5tYXhEYXRlLmdldEZ1bGxZZWFyKCkpO3ZhciBvPXMoImRpdiIsImZsYXRwaWNrci1jdXJyZW50LW1vbnRoIik7cmV0dXJuIG8uYXBwZW5kQ2hpbGQoZSksby5hcHBlbmRDaGlsZChhKSxuLmFwcGVuZENoaWxkKG8pLHQuYXBwZW5kQ2hpbGQobikse2NvbnRhaW5lcjp0LHllYXJFbGVtZW50OmksbW9udGhFbGVtZW50OmV9fWZ1bmN0aW9uIHEoKXt1KHcubW9udGhOYXYpLHcubW9udGhOYXYuYXBwZW5kQ2hpbGQody5wcmV2TW9udGhOYXYpLHcuY29uZmlnLnNob3dNb250aHMmJih3LnllYXJFbGVtZW50cz1bXSx3Lm1vbnRoRWxlbWVudHM9W10pO2Zvcih2YXIgZT13LmNvbmZpZy5zaG93TW9udGhzO2UtLTspe3ZhciB0PVUoKTt3LnllYXJFbGVtZW50cy5wdXNoKHQueWVhckVsZW1lbnQpLHcubW9udGhFbGVtZW50cy5wdXNoKHQubW9udGhFbGVtZW50KSx3Lm1vbnRoTmF2LmFwcGVuZENoaWxkKHQuY29udGFpbmVyKX13Lm1vbnRoTmF2LmFwcGVuZENoaWxkKHcubmV4dE1vbnRoTmF2KX1mdW5jdGlvbiAkKCl7dy53ZWVrZGF5Q29udGFpbmVyP3Uody53ZWVrZGF5Q29udGFpbmVyKTp3LndlZWtkYXlDb250YWluZXI9cygiZGl2IiwiZmxhdHBpY2tyLXdlZWtkYXlzIik7Zm9yKHZhciBlPXcuY29uZmlnLnNob3dNb250aHM7ZS0tOyl7dmFyIHQ9cygiZGl2IiwiZmxhdHBpY2tyLXdlZWtkYXljb250YWluZXIiKTt3LndlZWtkYXlDb250YWluZXIuYXBwZW5kQ2hpbGQodCl9cmV0dXJuIHooKSx3LndlZWtkYXlDb250YWluZXJ9ZnVuY3Rpb24geigpe2lmKHcud2Vla2RheUNvbnRhaW5lcil7dmFyIGU9dy5sMTBuLmZpcnN0RGF5T2ZXZWVrLG49dCh3LmwxMG4ud2Vla2RheXMuc2hvcnRoYW5kKTtlPjAmJmU8bi5sZW5ndGgmJihuPXQobi5zcGxpY2UoZSxuLmxlbmd0aCksbi5zcGxpY2UoMCxlKSkpO2Zvcih2YXIgYT13LmNvbmZpZy5zaG93TW9udGhzO2EtLTspdy53ZWVrZGF5Q29udGFpbmVyLmNoaWxkcmVuW2FdLmlubmVySFRNTD0iXG4gICAgICA8c3BhbiBjbGFzcz0nZmxhdHBpY2tyLXdlZWtkYXknPlxuICAgICAgICAiK24uam9pbigiPC9zcGFuPjxzcGFuIGNsYXNzPSdmbGF0cGlja3Itd2Vla2RheSc+IikrIlxuICAgICAgPC9zcGFuPlxuICAgICAgIn19ZnVuY3Rpb24gRyhlLHQpe3ZvaWQgMD09PXQmJih0PSEwKTt2YXIgbj10P2U6ZS13LmN1cnJlbnRNb250aDtuPDAmJiEwPT09dy5faGlkZVByZXZNb250aEFycm93fHxuPjAmJiEwPT09dy5faGlkZU5leHRNb250aEFycm93fHwody5jdXJyZW50TW9udGgrPW4sKHcuY3VycmVudE1vbnRoPDB8fHcuY3VycmVudE1vbnRoPjExKSYmKHcuY3VycmVudFllYXIrPXcuY3VycmVudE1vbnRoPjExPzE6LTEsdy5jdXJyZW50TW9udGg9KHcuY3VycmVudE1vbnRoKzEyKSUxMixwZSgib25ZZWFyQ2hhbmdlIiksSygpKSxKKCkscGUoIm9uTW9udGhDaGFuZ2UiKSxEZSgpKX1mdW5jdGlvbiBWKGUpe3JldHVybiEoIXcuY29uZmlnLmFwcGVuZFRvfHwhdy5jb25maWcuYXBwZW5kVG8uY29udGFpbnMoZSkpfHx3LmNhbGVuZGFyQ29udGFpbmVyLmNvbnRhaW5zKGUpfWZ1bmN0aW9uIFooZSl7aWYody5pc09wZW4mJiF3LmNvbmZpZy5pbmxpbmUpe3ZhciB0PWcoZSksbj1WKHQpLGE9dD09PXcuaW5wdXR8fHQ9PT13LmFsdElucHV0fHx3LmVsZW1lbnQuY29udGFpbnModCl8fGUucGF0aCYmZS5wYXRoLmluZGV4T2YmJih+ZS5wYXRoLmluZGV4T2Yody5pbnB1dCl8fH5lLnBhdGguaW5kZXhPZih3LmFsdElucHV0KSksaT0iYmx1ciI9PT1lLnR5cGU\/YSYmZS5yZWxhdGVkVGFyZ2V0JiYhVihlLnJlbGF0ZWRUYXJnZXQpOiFhJiYhbiYmIVYoZS5yZWxhdGVkVGFyZ2V0KSxvPSF3LmNvbmZpZy5pZ25vcmVkRm9jdXNFbGVtZW50cy5zb21lKChmdW5jdGlvbihlKXtyZXR1cm4gZS5jb250YWlucyh0KX0pKTtpJiZvJiYodm9pZCAwIT09dy50aW1lQ29udGFpbmVyJiZ2b2lkIDAhPT13Lm1pbnV0ZUVsZW1lbnQmJnZvaWQgMCE9PXcuaG91ckVsZW1lbnQmJiIiIT09dy5pbnB1dC52YWx1ZSYmdm9pZCAwIT09dy5pbnB1dC52YWx1ZSYmSSgpLHcuY2xvc2UoKSx3LmNvbmZpZyYmInJhbmdlIj09PXcuY29uZmlnLm1vZGUmJjE9PT13LnNlbGVjdGVkRGF0ZXMubGVuZ3RoJiYody5jbGVhcighMSksdy5yZWRyYXcoKSkpfX1mdW5jdGlvbiBRKGUpe2lmKCEoIWV8fHcuY29uZmlnLm1pbkRhdGUmJmU8dy5jb25maWcubWluRGF0ZS5nZXRGdWxsWWVhcigpfHx3LmNvbmZpZy5tYXhEYXRlJiZlPncuY29uZmlnLm1heERhdGUuZ2V0RnVsbFllYXIoKSkpe3ZhciB0PWUsbj13LmN1cnJlbnRZZWFyIT09dDt3LmN1cnJlbnRZZWFyPXR8fHcuY3VycmVudFllYXIsdy5jb25maWcubWF4RGF0ZSYmdy5jdXJyZW50WWVhcj09PXcuY29uZmlnLm1heERhdGUuZ2V0RnVsbFllYXIoKT93LmN1cnJlbnRNb250aD1NYXRoLm1pbih3LmNvbmZpZy5tYXhEYXRlLmdldE1vbnRoKCksdy5jdXJyZW50TW9udGgpOncuY29uZmlnLm1pbkRhdGUmJncuY3VycmVudFllYXI9PT13LmNvbmZpZy5taW5EYXRlLmdldEZ1bGxZZWFyKCkmJih3LmN1cnJlbnRNb250aD1NYXRoLm1heCh3LmNvbmZpZy5taW5EYXRlLmdldE1vbnRoKCksdy5jdXJyZW50TW9udGgpKSxuJiYody5yZWRyYXcoKSxwZSgib25ZZWFyQ2hhbmdlIiksSygpKX19ZnVuY3Rpb24gWChlLHQpe3ZhciBuO3ZvaWQgMD09PXQmJih0PSEwKTt2YXIgYT13LnBhcnNlRGF0ZShlLHZvaWQgMCx0KTtpZih3LmNvbmZpZy5taW5EYXRlJiZhJiZNKGEsdy5jb25maWcubWluRGF0ZSx2b2lkIDAhPT10P3Q6IXcubWluRGF0ZUhhc1RpbWUpPDB8fHcuY29uZmlnLm1heERhdGUmJmEmJk0oYSx3LmNvbmZpZy5tYXhEYXRlLHZvaWQgMCE9PXQ\/dDohdy5tYXhEYXRlSGFzVGltZSk+MClyZXR1cm4hMTtpZighdy5jb25maWcuZW5hYmxlJiYwPT09dy5jb25maWcuZGlzYWJsZS5sZW5ndGgpcmV0dXJuITA7aWYodm9pZCAwPT09YSlyZXR1cm4hMTtmb3IodmFyIGk9ISF3LmNvbmZpZy5lbmFibGUsbz1udWxsIT09KG49dy5jb25maWcuZW5hYmxlKSYmdm9pZCAwIT09bj9uOncuY29uZmlnLmRpc2FibGUscj0wLGw9dm9pZCAwO3I8by5sZW5ndGg7cisrKXtpZigiZnVuY3Rpb24iPT10eXBlb2YobD1vW3JdKSYmbChhKSlyZXR1cm4gaTtpZihsIGluc3RhbmNlb2YgRGF0ZSYmdm9pZCAwIT09YSYmbC5nZXRUaW1lKCk9PT1hLmdldFRpbWUoKSlyZXR1cm4gaTtpZigic3RyaW5nIj09dHlwZW9mIGwpe3ZhciBjPXcucGFyc2VEYXRlKGwsdm9pZCAwLCEwKTtyZXR1cm4gYyYmYy5nZXRUaW1lKCk9PT1hLmdldFRpbWUoKT9pOiFpfWlmKCJvYmplY3QiPT10eXBlb2YgbCYmdm9pZCAwIT09YSYmbC5mcm9tJiZsLnRvJiZhLmdldFRpbWUoKT49bC5mcm9tLmdldFRpbWUoKSYmYS5nZXRUaW1lKCk8PWwudG8uZ2V0VGltZSgpKXJldHVybiBpfXJldHVybiFpfWZ1bmN0aW9uIGVlKGUpe3JldHVybiB2b2lkIDAhPT13LmRheXNDb250YWluZXImJigtMT09PWUuY2xhc3NOYW1lLmluZGV4T2YoImhpZGRlbiIpJiYtMT09PWUuY2xhc3NOYW1lLmluZGV4T2YoImZsYXRwaWNrci1kaXNhYmxlZCIpJiZ3LmRheXNDb250YWluZXIuY29udGFpbnMoZSkpfWZ1bmN0aW9uIHRlKGUpeyEoZS50YXJnZXQ9PT13Ll9pbnB1dCl8fCEody5zZWxlY3RlZERhdGVzLmxlbmd0aD4wfHx3Ll9pbnB1dC52YWx1ZS5sZW5ndGg+MCl8fGUucmVsYXRlZFRhcmdldCYmVihlLnJlbGF0ZWRUYXJnZXQpfHx3LnNldERhdGUody5faW5wdXQudmFsdWUsITAsZS50YXJnZXQ9PT13LmFsdElucHV0P3cuY29uZmlnLmFsdEZvcm1hdDp3LmNvbmZpZy5kYXRlRm9ybWF0KX1mdW5jdGlvbiBuZShlKXt2YXIgdD1nKGUpLG49dy5jb25maWcud3JhcD9wLmNvbnRhaW5zKHQpOnQ9PT13Ll9pbnB1dCxhPXcuY29uZmlnLmFsbG93SW5wdXQsaT13LmlzT3BlbiYmKCFhfHwhbiksbz13LmNvbmZpZy5pbmxpbmUmJm4mJiFhO2lmKDEzPT09ZS5rZXlDb2RlJiZuKXtpZihhKXJldHVybiB3LnNldERhdGUody5faW5wdXQudmFsdWUsITAsdD09PXcuYWx0SW5wdXQ\/dy5jb25maWcuYWx0Rm9ybWF0OncuY29uZmlnLmRhdGVGb3JtYXQpLHQuYmx1cigpO3cub3BlbigpfWVsc2UgaWYoVih0KXx8aXx8byl7dmFyIHI9ISF3LnRpbWVDb250YWluZXImJncudGltZUNvbnRhaW5lci5jb250YWlucyh0KTtzd2l0Y2goZS5rZXlDb2RlKXtjYXNlIDEzOnI\/KGUucHJldmVudERlZmF1bHQoKSxJKCksc2UoKSk6dWUoZSk7YnJlYWs7Y2FzZSAyNzplLnByZXZlbnREZWZhdWx0KCksc2UoKTticmVhaztjYXNlIDg6Y2FzZSA0NjpuJiYhdy5jb25maWcuYWxsb3dJbnB1dCYmKGUucHJldmVudERlZmF1bHQoKSx3LmNsZWFyKCkpO2JyZWFrO2Nhc2UgMzc6Y2FzZSAzOTppZihyfHxuKXcuaG91ckVsZW1lbnQmJncuaG91ckVsZW1lbnQuZm9jdXMoKTtlbHNlIGlmKGUucHJldmVudERlZmF1bHQoKSx2b2lkIDAhPT13LmRheXNDb250YWluZXImJighMT09PWF8fGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQmJmVlKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpKSl7dmFyIGw9Mzk9PT1lLmtleUNvZGU\/MTotMTtlLmN0cmxLZXk\/KGUuc3RvcFByb3BhZ2F0aW9uKCksRyhsKSxSKFcoMSksMCkpOlIodm9pZCAwLGwpfWJyZWFrO2Nhc2UgMzg6Y2FzZSA0MDplLnByZXZlbnREZWZhdWx0KCk7dmFyIGM9NDA9PT1lLmtleUNvZGU\/MTotMTt3LmRheXNDb250YWluZXImJnZvaWQgMCE9PXQuJGl8fHQ9PT13LmlucHV0fHx0PT09dy5hbHRJbnB1dD9lLmN0cmxLZXk\/KGUuc3RvcFByb3BhZ2F0aW9uKCksUSh3LmN1cnJlbnRZZWFyLWMpLFIoVygxKSwwKSk6cnx8Uih2b2lkIDAsNypjKTp0PT09dy5jdXJyZW50WWVhckVsZW1lbnQ\/USh3LmN1cnJlbnRZZWFyLWMpOncuY29uZmlnLmVuYWJsZVRpbWUmJighciYmdy5ob3VyRWxlbWVudCYmdy5ob3VyRWxlbWVudC5mb2N1cygpLEkoZSksdy5fZGVib3VuY2VkQ2hhbmdlKCkpO2JyZWFrO2Nhc2UgOTppZihyKXt2YXIgZD1bdy5ob3VyRWxlbWVudCx3Lm1pbnV0ZUVsZW1lbnQsdy5zZWNvbmRFbGVtZW50LHcuYW1QTV0uY29uY2F0KHcucGx1Z2luRWxlbWVudHMpLmZpbHRlcigoZnVuY3Rpb24oZSl7cmV0dXJuIGV9KSkscz1kLmluZGV4T2YodCk7aWYoLTEhPT1zKXt2YXIgdT1kW3MrKGUuc2hpZnRLZXk\/LTE6MSldO2UucHJldmVudERlZmF1bHQoKSwodXx8dy5faW5wdXQpLmZvY3VzKCl9fWVsc2Uhdy5jb25maWcubm9DYWxlbmRhciYmdy5kYXlzQ29udGFpbmVyJiZ3LmRheXNDb250YWluZXIuY29udGFpbnModCkmJmUuc2hpZnRLZXkmJihlLnByZXZlbnREZWZhdWx0KCksdy5faW5wdXQuZm9jdXMoKSl9fWlmKHZvaWQgMCE9PXcuYW1QTSYmdD09PXcuYW1QTSlzd2l0Y2goZS5rZXkpe2Nhc2Ugdy5sMTBuLmFtUE1bMF0uY2hhckF0KDApOmNhc2Ugdy5sMTBuLmFtUE1bMF0uY2hhckF0KDApLnRvTG93ZXJDYXNlKCk6dy5hbVBNLnRleHRDb250ZW50PXcubDEwbi5hbVBNWzBdLFMoKSxiZSgpO2JyZWFrO2Nhc2Ugdy5sMTBuLmFtUE1bMV0uY2hhckF0KDApOmNhc2Ugdy5sMTBuLmFtUE1bMV0uY2hhckF0KDApLnRvTG93ZXJDYXNlKCk6dy5hbVBNLnRleHRDb250ZW50PXcubDEwbi5hbVBNWzFdLFMoKSxiZSgpfShufHxWKHQpKSYmcGUoIm9uS2V5RG93biIsZSl9ZnVuY3Rpb24gYWUoZSl7aWYoMT09PXcuc2VsZWN0ZWREYXRlcy5sZW5ndGgmJighZXx8ZS5jbGFzc0xpc3QuY29udGFpbnMoImZsYXRwaWNrci1kYXkiKSYmIWUuY2xhc3NMaXN0LmNvbnRhaW5zKCJmbGF0cGlja3ItZGlzYWJsZWQiKSkpe2Zvcih2YXIgdD1lP2UuZGF0ZU9iai5nZXRUaW1lKCk6dy5kYXlzLmZpcnN0RWxlbWVudENoaWxkLmRhdGVPYmouZ2V0VGltZSgpLG49dy5wYXJzZURhdGUody5zZWxlY3RlZERhdGVzWzBdLHZvaWQgMCwhMCkuZ2V0VGltZSgpLGE9TWF0aC5taW4odCx3LnNlbGVjdGVkRGF0ZXNbMF0uZ2V0VGltZSgpKSxpPU1hdGgubWF4KHQsdy5zZWxlY3RlZERhdGVzWzBdLmdldFRpbWUoKSksbz0hMSxyPTAsbD0wLGM9YTtjPGk7Yys9eSlYKG5ldyBEYXRlKGMpLCEwKXx8KG89b3x8Yz5hJiZjPGksYzxuJiYoIXJ8fGM+cik\/cj1jOmM+biYmKCFsfHxjPGwpJiYobD1jKSk7Zm9yKHZhciBkPTA7ZDx3LmNvbmZpZy5zaG93TW9udGhzO2QrKylmb3IodmFyIHM9dy5kYXlzQ29udGFpbmVyLmNoaWxkcmVuW2RdLHU9ZnVuY3Rpb24oYSxpKXt2YXIgYyxkLHUsZj1zLmNoaWxkcmVuW2FdLG09Zi5kYXRlT2JqLmdldFRpbWUoKSxnPXI+MCYmbTxyfHxsPjAmJm0+bDtyZXR1cm4gZz8oZi5jbGFzc0xpc3QuYWRkKCJub3RBbGxvd2VkIiksWyJpblJhbmdlIiwic3RhcnRSYW5nZSIsImVuZFJhbmdlIl0uZm9yRWFjaCgoZnVuY3Rpb24oZSl7Zi5jbGFzc0xpc3QucmVtb3ZlKGUpfSkpLCJjb250aW51ZSIpOm8mJiFnPyJjb250aW51ZSI6KFsic3RhcnRSYW5nZSIsImluUmFuZ2UiLCJlbmRSYW5nZSIsIm5vdEFsbG93ZWQiXS5mb3JFYWNoKChmdW5jdGlvbihlKXtmLmNsYXNzTGlzdC5yZW1vdmUoZSl9KSksdm9pZCh2b2lkIDAhPT1lJiYoZS5jbGFzc0xpc3QuYWRkKHQ8PXcuc2VsZWN0ZWREYXRlc1swXS5nZXRUaW1lKCk\/InN0YXJ0UmFuZ2UiOiJlbmRSYW5nZSIpLG48dCYmbT09PW4\/Zi5jbGFzc0xpc3QuYWRkKCJzdGFydFJhbmdlIik6bj50JiZtPT09biYmZi5jbGFzc0xpc3QuYWRkKCJlbmRSYW5nZSIpLG0+PXImJigwPT09bHx8bTw9bCkmJihkPW4sdT10LChjPW0pPk1hdGgubWluKGQsdSkmJmM8TWF0aC5tYXgoZCx1KSkmJmYuY2xhc3NMaXN0LmFkZCgiaW5SYW5nZSIpKSkpfSxmPTAsbT1zLmNoaWxkcmVuLmxlbmd0aDtmPG07ZisrKXUoZil9fWZ1bmN0aW9uIGllKCl7IXcuaXNPcGVufHx3LmNvbmZpZy5zdGF0aWN8fHcuY29uZmlnLmlubGluZXx8Y2UoKX1mdW5jdGlvbiBvZShlKXtyZXR1cm4gZnVuY3Rpb24odCl7dmFyIG49dy5jb25maWdbIl8iK2UrIkRhdGUiXT13LnBhcnNlRGF0ZSh0LHcuY29uZmlnLmRhdGVGb3JtYXQpLGE9dy5jb25maWdbIl8iKygibWluIj09PWU\/Im1heCI6Im1pbiIpKyJEYXRlIl07dm9pZCAwIT09biYmKHdbIm1pbiI9PT1lPyJtaW5EYXRlSGFzVGltZSI6Im1heERhdGVIYXNUaW1lIl09bi5nZXRIb3VycygpPjB8fG4uZ2V0TWludXRlcygpPjB8fG4uZ2V0U2Vjb25kcygpPjApLHcuc2VsZWN0ZWREYXRlcyYmKHcuc2VsZWN0ZWREYXRlcz13LnNlbGVjdGVkRGF0ZXMuZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm4gWChlKX0pKSx3LnNlbGVjdGVkRGF0ZXMubGVuZ3RofHwibWluIiE9PWV8fF8obiksYmUoKSksdy5kYXlzQ29udGFpbmVyJiYoZGUoKSx2b2lkIDAhPT1uP3cuY3VycmVudFllYXJFbGVtZW50W2VdPW4uZ2V0RnVsbFllYXIoKS50b1N0cmluZygpOncuY3VycmVudFllYXJFbGVtZW50LnJlbW92ZUF0dHJpYnV0ZShlKSx3LmN1cnJlbnRZZWFyRWxlbWVudC5kaXNhYmxlZD0hIWEmJnZvaWQgMCE9PW4mJmEuZ2V0RnVsbFllYXIoKT09PW4uZ2V0RnVsbFllYXIoKSl9fWZ1bmN0aW9uIHJlKCl7cmV0dXJuIHcuY29uZmlnLndyYXA\/cC5xdWVyeVNlbGVjdG9yKCJbZGF0YS1pbnB1dF0iKTpwfWZ1bmN0aW9uIGxlKCl7Im9iamVjdCIhPXR5cGVvZiB3LmNvbmZpZy5sb2NhbGUmJnZvaWQgMD09PVQubDEwbnNbdy5jb25maWcubG9jYWxlXSYmdy5jb25maWcuZXJyb3JIYW5kbGVyKG5ldyBFcnJvcigiZmxhdHBpY2tyOiBpbnZhbGlkIGxvY2FsZSAiK3cuY29uZmlnLmxvY2FsZSkpLHcubDEwbj1lKGUoe30sVC5sMTBucy5kZWZhdWx0KSwib2JqZWN0Ij09dHlwZW9mIHcuY29uZmlnLmxvY2FsZT93LmNvbmZpZy5sb2NhbGU6ImRlZmF1bHQiIT09dy5jb25maWcubG9jYWxlP1QubDEwbnNbdy5jb25maWcubG9jYWxlXTp2b2lkIDApLEQuSz0iKCIrdy5sMTBuLmFtUE1bMF0rInwiK3cubDEwbi5hbVBNWzFdKyJ8Iit3LmwxMG4uYW1QTVswXS50b0xvd2VyQ2FzZSgpKyJ8Iit3LmwxMG4uYW1QTVsxXS50b0xvd2VyQ2FzZSgpKyIpIix2b2lkIDA9PT1lKGUoe30sdiksSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShwLmRhdGFzZXR8fHt9KSkpLnRpbWVfMjRociYmdm9pZCAwPT09VC5kZWZhdWx0Q29uZmlnLnRpbWVfMjRociYmKHcuY29uZmlnLnRpbWVfMjRocj13LmwxMG4udGltZV8yNGhyKSx3LmZvcm1hdERhdGU9Yih3KSx3LnBhcnNlRGF0ZT1DKHtjb25maWc6dy5jb25maWcsbDEwbjp3LmwxMG59KX1mdW5jdGlvbiBjZShlKXtpZigiZnVuY3Rpb24iIT10eXBlb2Ygdy5jb25maWcucG9zaXRpb24pe2lmKHZvaWQgMCE9PXcuY2FsZW5kYXJDb250YWluZXIpe3BlKCJvblByZUNhbGVuZGFyUG9zaXRpb24iKTt2YXIgdD1lfHx3Ll9wb3NpdGlvbkVsZW1lbnQsbj1BcnJheS5wcm90b3R5cGUucmVkdWNlLmNhbGwody5jYWxlbmRhckNvbnRhaW5lci5jaGlsZHJlbiwoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZSt0Lm9mZnNldEhlaWdodH0pLDApLGE9dy5jYWxlbmRhckNvbnRhaW5lci5vZmZzZXRXaWR0aCxpPXcuY29uZmlnLnBvc2l0aW9uLnNwbGl0KCIgIiksbz1pWzBdLHI9aS5sZW5ndGg+MT9pWzFdOm51bGwsbD10LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGM9d2luZG93LmlubmVySGVpZ2h0LWwuYm90dG9tLHM9ImFib3ZlIj09PW98fCJiZWxvdyIhPT1vJiZjPG4mJmwudG9wPm4sdT13aW5kb3cucGFnZVlPZmZzZXQrbC50b3ArKHM\/LW4tMjp0Lm9mZnNldEhlaWdodCsyKTtpZihkKHcuY2FsZW5kYXJDb250YWluZXIsImFycm93VG9wIiwhcyksZCh3LmNhbGVuZGFyQ29udGFpbmVyLCJhcnJvd0JvdHRvbSIscyksIXcuY29uZmlnLmlubGluZSl7dmFyIGY9d2luZG93LnBhZ2VYT2Zmc2V0K2wubGVmdCxtPSExLGc9ITE7ImNlbnRlciI9PT1yPyhmLT0oYS1sLndpZHRoKS8yLG09ITApOiJyaWdodCI9PT1yJiYoZi09YS1sLndpZHRoLGc9ITApLGQody5jYWxlbmRhckNvbnRhaW5lciwiYXJyb3dMZWZ0IiwhbSYmIWcpLGQody5jYWxlbmRhckNvbnRhaW5lciwiYXJyb3dDZW50ZXIiLG0pLGQody5jYWxlbmRhckNvbnRhaW5lciwiYXJyb3dSaWdodCIsZyk7dmFyIHA9d2luZG93LmRvY3VtZW50LmJvZHkub2Zmc2V0V2lkdGgtKHdpbmRvdy5wYWdlWE9mZnNldCtsLnJpZ2h0KSxoPWYrYT53aW5kb3cuZG9jdW1lbnQuYm9keS5vZmZzZXRXaWR0aCx2PXArYT53aW5kb3cuZG9jdW1lbnQuYm9keS5vZmZzZXRXaWR0aDtpZihkKHcuY2FsZW5kYXJDb250YWluZXIsInJpZ2h0TW9zdCIsaCksIXcuY29uZmlnLnN0YXRpYylpZih3LmNhbGVuZGFyQ29udGFpbmVyLnN0eWxlLnRvcD11KyJweCIsaClpZih2KXt2YXIgRD1mdW5jdGlvbigpe2Zvcih2YXIgZT1udWxsLHQ9MDt0PGRvY3VtZW50LnN0eWxlU2hlZXRzLmxlbmd0aDt0Kyspe3ZhciBuPWRvY3VtZW50LnN0eWxlU2hlZXRzW3RdO3RyeXtuLmNzc1J1bGVzfWNhdGNoKGUpe2NvbnRpbnVlfWU9bjticmVha31yZXR1cm4gbnVsbCE9ZT9lOihhPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIiksZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChhKSxhLnNoZWV0KTt2YXIgYX0oKTtpZih2b2lkIDA9PT1EKXJldHVybjt2YXIgYj13aW5kb3cuZG9jdW1lbnQuYm9keS5vZmZzZXRXaWR0aCxDPU1hdGgubWF4KDAsYi8yLWEvMiksTT1ELmNzc1J1bGVzLmxlbmd0aCx5PSJ7bGVmdDoiK2wubGVmdCsicHg7cmlnaHQ6YXV0bzt9IjtkKHcuY2FsZW5kYXJDb250YWluZXIsInJpZ2h0TW9zdCIsITEpLGQody5jYWxlbmRhckNvbnRhaW5lciwiY2VudGVyTW9zdCIsITApLEQuaW5zZXJ0UnVsZSgiLmZsYXRwaWNrci1jYWxlbmRhci5jZW50ZXJNb3N0OmJlZm9yZSwuZmxhdHBpY2tyLWNhbGVuZGFyLmNlbnRlck1vc3Q6YWZ0ZXIiK3ksTSksdy5jYWxlbmRhckNvbnRhaW5lci5zdHlsZS5sZWZ0PUMrInB4Iix3LmNhbGVuZGFyQ29udGFpbmVyLnN0eWxlLnJpZ2h0PSJhdXRvIn1lbHNlIHcuY2FsZW5kYXJDb250YWluZXIuc3R5bGUubGVmdD0iYXV0byIsdy5jYWxlbmRhckNvbnRhaW5lci5zdHlsZS5yaWdodD1wKyJweCI7ZWxzZSB3LmNhbGVuZGFyQ29udGFpbmVyLnN0eWxlLmxlZnQ9ZisicHgiLHcuY2FsZW5kYXJDb250YWluZXIuc3R5bGUucmlnaHQ9ImF1dG8ifX19ZWxzZSB3LmNvbmZpZy5wb3NpdGlvbih3LGUpfWZ1bmN0aW9uIGRlKCl7dy5jb25maWcubm9DYWxlbmRhcnx8dy5pc01vYmlsZXx8KEsoKSxEZSgpLEooKSl9ZnVuY3Rpb24gc2UoKXt3Ll9pbnB1dC5mb2N1cygpLC0xIT09d2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZigiTVNJRSIpfHx2b2lkIDAhPT1uYXZpZ2F0b3IubXNNYXhUb3VjaFBvaW50cz9zZXRUaW1lb3V0KHcuY2xvc2UsMCk6dy5jbG9zZSgpfWZ1bmN0aW9uIHVlKGUpe2UucHJldmVudERlZmF1bHQoKSxlLnN0b3BQcm9wYWdhdGlvbigpO3ZhciB0PWYoZyhlKSwoZnVuY3Rpb24oZSl7cmV0dXJuIGUuY2xhc3NMaXN0JiZlLmNsYXNzTGlzdC5jb250YWlucygiZmxhdHBpY2tyLWRheSIpJiYhZS5jbGFzc0xpc3QuY29udGFpbnMoImZsYXRwaWNrci1kaXNhYmxlZCIpJiYhZS5jbGFzc0xpc3QuY29udGFpbnMoIm5vdEFsbG93ZWQiKX0pKTtpZih2b2lkIDAhPT10KXt2YXIgbj10LGE9dy5sYXRlc3RTZWxlY3RlZERhdGVPYmo9bmV3IERhdGUobi5kYXRlT2JqLmdldFRpbWUoKSksaT0oYS5nZXRNb250aCgpPHcuY3VycmVudE1vbnRofHxhLmdldE1vbnRoKCk+dy5jdXJyZW50TW9udGgrdy5jb25maWcuc2hvd01vbnRocy0xKSYmInJhbmdlIiE9PXcuY29uZmlnLm1vZGU7aWYody5zZWxlY3RlZERhdGVFbGVtPW4sInNpbmdsZSI9PT13LmNvbmZpZy5tb2RlKXcuc2VsZWN0ZWREYXRlcz1bYV07ZWxzZSBpZigibXVsdGlwbGUiPT09dy5jb25maWcubW9kZSl7dmFyIG89dmUoYSk7bz93LnNlbGVjdGVkRGF0ZXMuc3BsaWNlKHBhcnNlSW50KG8pLDEpOncuc2VsZWN0ZWREYXRlcy5wdXNoKGEpfWVsc2UicmFuZ2UiPT09dy5jb25maWcubW9kZSYmKDI9PT13LnNlbGVjdGVkRGF0ZXMubGVuZ3RoJiZ3LmNsZWFyKCExLCExKSx3LmxhdGVzdFNlbGVjdGVkRGF0ZU9iaj1hLHcuc2VsZWN0ZWREYXRlcy5wdXNoKGEpLDAhPT1NKGEsdy5zZWxlY3RlZERhdGVzWzBdLCEwKSYmdy5zZWxlY3RlZERhdGVzLnNvcnQoKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuZ2V0VGltZSgpLXQuZ2V0VGltZSgpfSkpKTtpZihTKCksaSl7dmFyIHI9dy5jdXJyZW50WWVhciE9PWEuZ2V0RnVsbFllYXIoKTt3LmN1cnJlbnRZZWFyPWEuZ2V0RnVsbFllYXIoKSx3LmN1cnJlbnRNb250aD1hLmdldE1vbnRoKCksciYmKHBlKCJvblllYXJDaGFuZ2UiKSxLKCkpLHBlKCJvbk1vbnRoQ2hhbmdlIil9aWYoRGUoKSxKKCksYmUoKSxpfHwicmFuZ2UiPT09dy5jb25maWcubW9kZXx8MSE9PXcuY29uZmlnLnNob3dNb250aHM\/dm9pZCAwIT09dy5zZWxlY3RlZERhdGVFbGVtJiZ2b2lkIDA9PT13LmhvdXJFbGVtZW50JiZ3LnNlbGVjdGVkRGF0ZUVsZW0mJncuc2VsZWN0ZWREYXRlRWxlbS5mb2N1cygpOkwobiksdm9pZCAwIT09dy5ob3VyRWxlbWVudCYmdm9pZCAwIT09dy5ob3VyRWxlbWVudCYmdy5ob3VyRWxlbWVudC5mb2N1cygpLHcuY29uZmlnLmNsb3NlT25TZWxlY3Qpe3ZhciBsPSJzaW5nbGUiPT09dy5jb25maWcubW9kZSYmIXcuY29uZmlnLmVuYWJsZVRpbWUsYz0icmFuZ2UiPT09dy5jb25maWcubW9kZSYmMj09PXcuc2VsZWN0ZWREYXRlcy5sZW5ndGgmJiF3LmNvbmZpZy5lbmFibGVUaW1lOyhsfHxjKSYmc2UoKX1OKCl9fXcucGFyc2VEYXRlPUMoe2NvbmZpZzp3LmNvbmZpZyxsMTBuOncubDEwbn0pLHcuX2hhbmRsZXJzPVtdLHcucGx1Z2luRWxlbWVudHM9W10sdy5sb2FkZWRQbHVnaW5zPVtdLHcuX2JpbmQ9QSx3Ll9zZXRIb3Vyc0Zyb21EYXRlPV8sdy5fcG9zaXRpb25DYWxlbmRhcj1jZSx3LmNoYW5nZU1vbnRoPUcsdy5jaGFuZ2VZZWFyPVEsdy5jbGVhcj1mdW5jdGlvbihlLHQpe3ZvaWQgMD09PWUmJihlPSEwKTt2b2lkIDA9PT10JiYodD0hMCk7dy5pbnB1dC52YWx1ZT0iIix2b2lkIDAhPT13LmFsdElucHV0JiYody5hbHRJbnB1dC52YWx1ZT0iIik7dm9pZCAwIT09dy5tb2JpbGVJbnB1dCYmKHcubW9iaWxlSW5wdXQudmFsdWU9IiIpO3cuc2VsZWN0ZWREYXRlcz1bXSx3LmxhdGVzdFNlbGVjdGVkRGF0ZU9iaj12b2lkIDAsITA9PT10JiYody5jdXJyZW50WWVhcj13Ll9pbml0aWFsRGF0ZS5nZXRGdWxsWWVhcigpLHcuY3VycmVudE1vbnRoPXcuX2luaXRpYWxEYXRlLmdldE1vbnRoKCkpO2lmKCEwPT09dy5jb25maWcuZW5hYmxlVGltZSl7dmFyIG49eCh3LmNvbmZpZyksYT1uLmhvdXJzLGk9bi5taW51dGVzLG89bi5zZWNvbmRzO08oYSxpLG8pfXcucmVkcmF3KCksZSYmcGUoIm9uQ2hhbmdlIil9LHcuY2xvc2U9ZnVuY3Rpb24oKXt3LmlzT3Blbj0hMSx3LmlzTW9iaWxlfHwodm9pZCAwIT09dy5jYWxlbmRhckNvbnRhaW5lciYmdy5jYWxlbmRhckNvbnRhaW5lci5jbGFzc0xpc3QucmVtb3ZlKCJvcGVuIiksdm9pZCAwIT09dy5faW5wdXQmJncuX2lucHV0LmNsYXNzTGlzdC5yZW1vdmUoImFjdGl2ZSIpKTtwZSgib25DbG9zZSIpfSx3Ll9jcmVhdGVFbGVtZW50PXMsdy5kZXN0cm95PWZ1bmN0aW9uKCl7dm9pZCAwIT09dy5jb25maWcmJnBlKCJvbkRlc3Ryb3kiKTtmb3IodmFyIGU9dy5faGFuZGxlcnMubGVuZ3RoO2UtLTspdy5faGFuZGxlcnNbZV0ucmVtb3ZlKCk7aWYody5faGFuZGxlcnM9W10sdy5tb2JpbGVJbnB1dCl3Lm1vYmlsZUlucHV0LnBhcmVudE5vZGUmJncubW9iaWxlSW5wdXQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh3Lm1vYmlsZUlucHV0KSx3Lm1vYmlsZUlucHV0PXZvaWQgMDtlbHNlIGlmKHcuY2FsZW5kYXJDb250YWluZXImJncuY2FsZW5kYXJDb250YWluZXIucGFyZW50Tm9kZSlpZih3LmNvbmZpZy5zdGF0aWMmJncuY2FsZW5kYXJDb250YWluZXIucGFyZW50Tm9kZSl7dmFyIHQ9dy5jYWxlbmRhckNvbnRhaW5lci5wYXJlbnROb2RlO2lmKHQubGFzdENoaWxkJiZ0LnJlbW92ZUNoaWxkKHQubGFzdENoaWxkKSx0LnBhcmVudE5vZGUpe2Zvcig7dC5maXJzdENoaWxkOyl0LnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHQuZmlyc3RDaGlsZCx0KTt0LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodCl9fWVsc2Ugdy5jYWxlbmRhckNvbnRhaW5lci5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHcuY2FsZW5kYXJDb250YWluZXIpO3cuYWx0SW5wdXQmJih3LmlucHV0LnR5cGU9InRleHQiLHcuYWx0SW5wdXQucGFyZW50Tm9kZSYmdy5hbHRJbnB1dC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHcuYWx0SW5wdXQpLGRlbGV0ZSB3LmFsdElucHV0KTt3LmlucHV0JiYody5pbnB1dC50eXBlPXcuaW5wdXQuX3R5cGUsdy5pbnB1dC5jbGFzc0xpc3QucmVtb3ZlKCJmbGF0cGlja3ItaW5wdXQiKSx3LmlucHV0LnJlbW92ZUF0dHJpYnV0ZSgicmVhZG9ubHkiKSk7WyJfc2hvd1RpbWVJbnB1dCIsImxhdGVzdFNlbGVjdGVkRGF0ZU9iaiIsIl9oaWRlTmV4dE1vbnRoQXJyb3ciLCJfaGlkZVByZXZNb250aEFycm93IiwiX19oaWRlTmV4dE1vbnRoQXJyb3ciLCJfX2hpZGVQcmV2TW9udGhBcnJvdyIsImlzTW9iaWxlIiwiaXNPcGVuIiwic2VsZWN0ZWREYXRlRWxlbSIsIm1pbkRhdGVIYXNUaW1lIiwibWF4RGF0ZUhhc1RpbWUiLCJkYXlzIiwiZGF5c0NvbnRhaW5lciIsIl9pbnB1dCIsIl9wb3NpdGlvbkVsZW1lbnQiLCJpbm5lckNvbnRhaW5lciIsInJDb250YWluZXIiLCJtb250aE5hdiIsInRvZGF5RGF0ZUVsZW0iLCJjYWxlbmRhckNvbnRhaW5lciIsIndlZWtkYXlDb250YWluZXIiLCJwcmV2TW9udGhOYXYiLCJuZXh0TW9udGhOYXYiLCJtb250aHNEcm9wZG93bkNvbnRhaW5lciIsImN1cnJlbnRNb250aEVsZW1lbnQiLCJjdXJyZW50WWVhckVsZW1lbnQiLCJuYXZpZ2F0aW9uQ3VycmVudE1vbnRoIiwic2VsZWN0ZWREYXRlRWxlbSIsImNvbmZpZyJdLmZvckVhY2goKGZ1bmN0aW9uKGUpe3RyeXtkZWxldGUgd1tlXX1jYXRjaChlKXt9fSkpfSx3LmlzRW5hYmxlZD1YLHcuanVtcFRvRGF0ZT1QLHcub3Blbj1mdW5jdGlvbihlLHQpe3ZvaWQgMD09PXQmJih0PXcuX3Bvc2l0aW9uRWxlbWVudCk7aWYoITA9PT13LmlzTW9iaWxlKXtpZihlKXtlLnByZXZlbnREZWZhdWx0KCk7dmFyIG49ZyhlKTtuJiZuLmJsdXIoKX1yZXR1cm4gdm9pZCAwIT09dy5tb2JpbGVJbnB1dCYmKHcubW9iaWxlSW5wdXQuZm9jdXMoKSx3Lm1vYmlsZUlucHV0LmNsaWNrKCkpLHZvaWQgcGUoIm9uT3BlbiIpfWlmKHcuX2lucHV0LmRpc2FibGVkfHx3LmNvbmZpZy5pbmxpbmUpcmV0dXJuO3ZhciBhPXcuaXNPcGVuO3cuaXNPcGVuPSEwLGF8fCh3LmNhbGVuZGFyQ29udGFpbmVyLmNsYXNzTGlzdC5hZGQoIm9wZW4iKSx3Ll9pbnB1dC5jbGFzc0xpc3QuYWRkKCJhY3RpdmUiKSxwZSgib25PcGVuIiksY2UodCkpOyEwPT09dy5jb25maWcuZW5hYmxlVGltZSYmITA9PT13LmNvbmZpZy5ub0NhbGVuZGFyJiYoITEhPT13LmNvbmZpZy5hbGxvd0lucHV0fHx2b2lkIDAhPT1lJiZ3LnRpbWVDb250YWluZXIuY29udGFpbnMoZS5yZWxhdGVkVGFyZ2V0KXx8c2V0VGltZW91dCgoZnVuY3Rpb24oKXtyZXR1cm4gdy5ob3VyRWxlbWVudC5zZWxlY3QoKX0pLDUwKSl9LHcucmVkcmF3PWRlLHcuc2V0PWZ1bmN0aW9uKGUsdCl7aWYobnVsbCE9PWUmJiJvYmplY3QiPT10eXBlb2YgZSlmb3IodmFyIGEgaW4gT2JqZWN0LmFzc2lnbih3LmNvbmZpZyxlKSxlKXZvaWQgMCE9PWZlW2FdJiZmZVthXS5mb3JFYWNoKChmdW5jdGlvbihlKXtyZXR1cm4gZSgpfSkpO2Vsc2Ugdy5jb25maWdbZV09dCx2b2lkIDAhPT1mZVtlXT9mZVtlXS5mb3JFYWNoKChmdW5jdGlvbihlKXtyZXR1cm4gZSgpfSkpOm4uaW5kZXhPZihlKT4tMSYmKHcuY29uZmlnW2VdPWModCkpO3cucmVkcmF3KCksYmUoITApfSx3LnNldERhdGU9ZnVuY3Rpb24oZSx0LG4pe3ZvaWQgMD09PXQmJih0PSExKTt2b2lkIDA9PT1uJiYobj13LmNvbmZpZy5kYXRlRm9ybWF0KTtpZigwIT09ZSYmIWV8fGUgaW5zdGFuY2VvZiBBcnJheSYmMD09PWUubGVuZ3RoKXJldHVybiB3LmNsZWFyKHQpO21lKGUsbiksdy5sYXRlc3RTZWxlY3RlZERhdGVPYmo9dy5zZWxlY3RlZERhdGVzW3cuc2VsZWN0ZWREYXRlcy5sZW5ndGgtMV0sdy5yZWRyYXcoKSxQKHZvaWQgMCx0KSxfKCksMD09PXcuc2VsZWN0ZWREYXRlcy5sZW5ndGgmJncuY2xlYXIoITEpO2JlKHQpLHQmJnBlKCJvbkNoYW5nZSIpfSx3LnRvZ2dsZT1mdW5jdGlvbihlKXtpZighMD09PXcuaXNPcGVuKXJldHVybiB3LmNsb3NlKCk7dy5vcGVuKGUpfTt2YXIgZmU9e2xvY2FsZTpbbGUsel0sc2hvd01vbnRoczpbcSxrLCRdLG1pbkRhdGU6W1BdLG1heERhdGU6W1BdLGNsaWNrT3BlbnM6W2Z1bmN0aW9uKCl7ITA9PT13LmNvbmZpZy5jbGlja09wZW5zPyhBKHcuX2lucHV0LCJmb2N1cyIsdy5vcGVuKSxBKHcuX2lucHV0LCJjbGljayIsdy5vcGVuKSk6KHcuX2lucHV0LnJlbW92ZUV2ZW50TGlzdGVuZXIoImZvY3VzIix3Lm9wZW4pLHcuX2lucHV0LnJlbW92ZUV2ZW50TGlzdGVuZXIoImNsaWNrIix3Lm9wZW4pKX1dfTtmdW5jdGlvbiBtZShlLHQpe3ZhciBuPVtdO2lmKGUgaW5zdGFuY2VvZiBBcnJheSluPWUubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gdy5wYXJzZURhdGUoZSx0KX0pKTtlbHNlIGlmKGUgaW5zdGFuY2VvZiBEYXRlfHwibnVtYmVyIj09dHlwZW9mIGUpbj1bdy5wYXJzZURhdGUoZSx0KV07ZWxzZSBpZigic3RyaW5nIj09dHlwZW9mIGUpc3dpdGNoKHcuY29uZmlnLm1vZGUpe2Nhc2Uic2luZ2xlIjpjYXNlInRpbWUiOm49W3cucGFyc2VEYXRlKGUsdCldO2JyZWFrO2Nhc2UibXVsdGlwbGUiOm49ZS5zcGxpdCh3LmNvbmZpZy5jb25qdW5jdGlvbikubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gdy5wYXJzZURhdGUoZSx0KX0pKTticmVhaztjYXNlInJhbmdlIjpuPWUuc3BsaXQody5sMTBuLnJhbmdlU2VwYXJhdG9yKS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiB3LnBhcnNlRGF0ZShlLHQpfSkpfWVsc2Ugdy5jb25maWcuZXJyb3JIYW5kbGVyKG5ldyBFcnJvcigiSW52YWxpZCBkYXRlIHN1cHBsaWVkOiAiK0pTT04uc3RyaW5naWZ5KGUpKSk7dy5zZWxlY3RlZERhdGVzPXcuY29uZmlnLmFsbG93SW52YWxpZFByZWxvYWQ\/bjpuLmZpbHRlcigoZnVuY3Rpb24oZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiBEYXRlJiZYKGUsITEpfSkpLCJyYW5nZSI9PT13LmNvbmZpZy5tb2RlJiZ3LnNlbGVjdGVkRGF0ZXMuc29ydCgoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5nZXRUaW1lKCktdC5nZXRUaW1lKCl9KSl9ZnVuY3Rpb24gZ2UoZSl7cmV0dXJuIGUuc2xpY2UoKS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiJzdHJpbmciPT10eXBlb2YgZXx8Im51bWJlciI9PXR5cGVvZiBlfHxlIGluc3RhbmNlb2YgRGF0ZT93LnBhcnNlRGF0ZShlLHZvaWQgMCwhMCk6ZSYmIm9iamVjdCI9PXR5cGVvZiBlJiZlLmZyb20mJmUudG8\/e2Zyb206dy5wYXJzZURhdGUoZS5mcm9tLHZvaWQgMCksdG86dy5wYXJzZURhdGUoZS50byx2b2lkIDApfTplfSkpLmZpbHRlcigoZnVuY3Rpb24oZSl7cmV0dXJuIGV9KSl9ZnVuY3Rpb24gcGUoZSx0KXtpZih2b2lkIDAhPT13LmNvbmZpZyl7dmFyIG49dy5jb25maWdbZV07aWYodm9pZCAwIT09biYmbi5sZW5ndGg+MClmb3IodmFyIGE9MDtuW2FdJiZhPG4ubGVuZ3RoO2ErKyluW2FdKHcuc2VsZWN0ZWREYXRlcyx3LmlucHV0LnZhbHVlLHcsdCk7Im9uQ2hhbmdlIj09PWUmJih3LmlucHV0LmRpc3BhdGNoRXZlbnQoaGUoImNoYW5nZSIpKSx3LmlucHV0LmRpc3BhdGNoRXZlbnQoaGUoImlucHV0IikpKX19ZnVuY3Rpb24gaGUoZSl7dmFyIHQ9ZG9jdW1lbnQuY3JlYXRlRXZlbnQoIkV2ZW50Iik7cmV0dXJuIHQuaW5pdEV2ZW50KGUsITAsITApLHR9ZnVuY3Rpb24gdmUoZSl7Zm9yKHZhciB0PTA7dDx3LnNlbGVjdGVkRGF0ZXMubGVuZ3RoO3QrKylpZigwPT09TSh3LnNlbGVjdGVkRGF0ZXNbdF0sZSkpcmV0dXJuIiIrdDtyZXR1cm4hMX1mdW5jdGlvbiBEZSgpe3cuY29uZmlnLm5vQ2FsZW5kYXJ8fHcuaXNNb2JpbGV8fCF3Lm1vbnRoTmF2fHwody55ZWFyRWxlbWVudHMuZm9yRWFjaCgoZnVuY3Rpb24oZSx0KXt2YXIgbj1uZXcgRGF0ZSh3LmN1cnJlbnRZZWFyLHcuY3VycmVudE1vbnRoLDEpO24uc2V0TW9udGgody5jdXJyZW50TW9udGgrdCksdy5jb25maWcuc2hvd01vbnRocz4xfHwic3RhdGljIj09PXcuY29uZmlnLm1vbnRoU2VsZWN0b3JUeXBlP3cubW9udGhFbGVtZW50c1t0XS50ZXh0Q29udGVudD1oKG4uZ2V0TW9udGgoKSx3LmNvbmZpZy5zaG9ydGhhbmRDdXJyZW50TW9udGgsdy5sMTBuKSsiICI6dy5tb250aHNEcm9wZG93bkNvbnRhaW5lci52YWx1ZT1uLmdldE1vbnRoKCkudG9TdHJpbmcoKSxlLnZhbHVlPW4uZ2V0RnVsbFllYXIoKS50b1N0cmluZygpfSkpLHcuX2hpZGVQcmV2TW9udGhBcnJvdz12b2lkIDAhPT13LmNvbmZpZy5taW5EYXRlJiYody5jdXJyZW50WWVhcj09PXcuY29uZmlnLm1pbkRhdGUuZ2V0RnVsbFllYXIoKT93LmN1cnJlbnRNb250aDw9dy5jb25maWcubWluRGF0ZS5nZXRNb250aCgpOncuY3VycmVudFllYXI8dy5jb25maWcubWluRGF0ZS5nZXRGdWxsWWVhcigpKSx3Ll9oaWRlTmV4dE1vbnRoQXJyb3c9dm9pZCAwIT09dy5jb25maWcubWF4RGF0ZSYmKHcuY3VycmVudFllYXI9PT13LmNvbmZpZy5tYXhEYXRlLmdldEZ1bGxZZWFyKCk\/dy5jdXJyZW50TW9udGgrMT53LmNvbmZpZy5tYXhEYXRlLmdldE1vbnRoKCk6dy5jdXJyZW50WWVhcj53LmNvbmZpZy5tYXhEYXRlLmdldEZ1bGxZZWFyKCkpKX1mdW5jdGlvbiB3ZShlKXtyZXR1cm4gdy5zZWxlY3RlZERhdGVzLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHcuZm9ybWF0RGF0ZSh0LGUpfSkpLmZpbHRlcigoZnVuY3Rpb24oZSx0LG4pe3JldHVybiJyYW5nZSIhPT13LmNvbmZpZy5tb2RlfHx3LmNvbmZpZy5lbmFibGVUaW1lfHxuLmluZGV4T2YoZSk9PT10fSkpLmpvaW4oInJhbmdlIiE9PXcuY29uZmlnLm1vZGU\/dy5jb25maWcuY29uanVuY3Rpb246dy5sMTBuLnJhbmdlU2VwYXJhdG9yKX1mdW5jdGlvbiBiZShlKXt2b2lkIDA9PT1lJiYoZT0hMCksdm9pZCAwIT09dy5tb2JpbGVJbnB1dCYmdy5tb2JpbGVGb3JtYXRTdHImJih3Lm1vYmlsZUlucHV0LnZhbHVlPXZvaWQgMCE9PXcubGF0ZXN0U2VsZWN0ZWREYXRlT2JqP3cuZm9ybWF0RGF0ZSh3LmxhdGVzdFNlbGVjdGVkRGF0ZU9iaix3Lm1vYmlsZUZvcm1hdFN0cik6IiIpLHcuaW5wdXQudmFsdWU9d2Uody5jb25maWcuZGF0ZUZvcm1hdCksdm9pZCAwIT09dy5hbHRJbnB1dCYmKHcuYWx0SW5wdXQudmFsdWU9d2Uody5jb25maWcuYWx0Rm9ybWF0KSksITEhPT1lJiZwZSgib25WYWx1ZVVwZGF0ZSIpfWZ1bmN0aW9uIENlKGUpe3ZhciB0PWcoZSksbj13LnByZXZNb250aE5hdi5jb250YWlucyh0KSxhPXcubmV4dE1vbnRoTmF2LmNvbnRhaW5zKHQpO258fGE\/RyhuPy0xOjEpOncueWVhckVsZW1lbnRzLmluZGV4T2YodCk+PTA\/dC5zZWxlY3QoKTp0LmNsYXNzTGlzdC5jb250YWlucygiYXJyb3dVcCIpP3cuY2hhbmdlWWVhcih3LmN1cnJlbnRZZWFyKzEpOnQuY2xhc3NMaXN0LmNvbnRhaW5zKCJhcnJvd0Rvd24iKSYmdy5jaGFuZ2VZZWFyKHcuY3VycmVudFllYXItMSl9cmV0dXJuIGZ1bmN0aW9uKCl7dy5lbGVtZW50PXcuaW5wdXQ9cCx3LmlzT3Blbj0hMSxmdW5jdGlvbigpe3ZhciB0PVsid3JhcCIsIndlZWtOdW1iZXJzIiwiYWxsb3dJbnB1dCIsImFsbG93SW52YWxpZFByZWxvYWQiLCJjbGlja09wZW5zIiwidGltZV8yNGhyIiwiZW5hYmxlVGltZSIsIm5vQ2FsZW5kYXIiLCJhbHRJbnB1dCIsInNob3J0aGFuZEN1cnJlbnRNb250aCIsImlubGluZSIsInN0YXRpYyIsImVuYWJsZVNlY29uZHMiLCJkaXNhYmxlTW9iaWxlIl0saT1lKGUoe30sSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShwLmRhdGFzZXR8fHt9KSkpLHYpLG89e307dy5jb25maWcucGFyc2VEYXRlPWkucGFyc2VEYXRlLHcuY29uZmlnLmZvcm1hdERhdGU9aS5mb3JtYXREYXRlLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh3LmNvbmZpZywiZW5hYmxlIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHcuY29uZmlnLl9lbmFibGV9LHNldDpmdW5jdGlvbihlKXt3LmNvbmZpZy5fZW5hYmxlPWdlKGUpfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh3LmNvbmZpZywiZGlzYWJsZSIse2dldDpmdW5jdGlvbigpe3JldHVybiB3LmNvbmZpZy5fZGlzYWJsZX0sc2V0OmZ1bmN0aW9uKGUpe3cuY29uZmlnLl9kaXNhYmxlPWdlKGUpfX0pO3ZhciByPSJ0aW1lIj09PWkubW9kZTtpZighaS5kYXRlRm9ybWF0JiYoaS5lbmFibGVUaW1lfHxyKSl7dmFyIGw9VC5kZWZhdWx0Q29uZmlnLmRhdGVGb3JtYXR8fGEuZGF0ZUZvcm1hdDtvLmRhdGVGb3JtYXQ9aS5ub0NhbGVuZGFyfHxyPyJIOmkiKyhpLmVuYWJsZVNlY29uZHM\/IjpTIjoiIik6bCsiIEg6aSIrKGkuZW5hYmxlU2Vjb25kcz8iOlMiOiIiKX1pZihpLmFsdElucHV0JiYoaS5lbmFibGVUaW1lfHxyKSYmIWkuYWx0Rm9ybWF0KXt2YXIgZD1ULmRlZmF1bHRDb25maWcuYWx0Rm9ybWF0fHxhLmFsdEZvcm1hdDtvLmFsdEZvcm1hdD1pLm5vQ2FsZW5kYXJ8fHI\/Img6aSIrKGkuZW5hYmxlU2Vjb25kcz8iOlMgSyI6IiBLIik6ZCsiIGg6aSIrKGkuZW5hYmxlU2Vjb25kcz8iOlMiOiIiKSsiIEsifU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh3LmNvbmZpZywibWluRGF0ZSIse2dldDpmdW5jdGlvbigpe3JldHVybiB3LmNvbmZpZy5fbWluRGF0ZX0sc2V0Om9lKCJtaW4iKX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh3LmNvbmZpZywibWF4RGF0ZSIse2dldDpmdW5jdGlvbigpe3JldHVybiB3LmNvbmZpZy5fbWF4RGF0ZX0sc2V0Om9lKCJtYXgiKX0pO3ZhciBzPWZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbih0KXt3LmNvbmZpZ1sibWluIj09PWU\/Il9taW5UaW1lIjoiX21heFRpbWUiXT13LnBhcnNlRGF0ZSh0LCJIOmk6UyIpfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHcuY29uZmlnLCJtaW5UaW1lIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHcuY29uZmlnLl9taW5UaW1lfSxzZXQ6cygibWluIil9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkody5jb25maWcsIm1heFRpbWUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdy5jb25maWcuX21heFRpbWV9LHNldDpzKCJtYXgiKX0pLCJ0aW1lIj09PWkubW9kZSYmKHcuY29uZmlnLm5vQ2FsZW5kYXI9ITAsdy5jb25maWcuZW5hYmxlVGltZT0hMCk7T2JqZWN0LmFzc2lnbih3LmNvbmZpZyxvLGkpO2Zvcih2YXIgdT0wO3U8dC5sZW5ndGg7dSsrKXcuY29uZmlnW3RbdV1dPSEwPT09dy5jb25maWdbdFt1XV18fCJ0cnVlIj09PXcuY29uZmlnW3RbdV1dO24uZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm4gdm9pZCAwIT09dy5jb25maWdbZV19KSkuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dy5jb25maWdbZV09Yyh3LmNvbmZpZ1tlXXx8W10pLm1hcChFKX0pKSx3LmlzTW9iaWxlPSF3LmNvbmZpZy5kaXNhYmxlTW9iaWxlJiYhdy5jb25maWcuaW5saW5lJiYic2luZ2xlIj09PXcuY29uZmlnLm1vZGUmJiF3LmNvbmZpZy5kaXNhYmxlLmxlbmd0aCYmIXcuY29uZmlnLmVuYWJsZSYmIXcuY29uZmlnLndlZWtOdW1iZXJzJiYvQW5kcm9pZHx3ZWJPU3xpUGhvbmV8aVBhZHxpUG9kfEJsYWNrQmVycnl8SUVNb2JpbGV8T3BlcmEgTWluaS9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCk7Zm9yKHU9MDt1PHcuY29uZmlnLnBsdWdpbnMubGVuZ3RoO3UrKyl7dmFyIGY9dy5jb25maWcucGx1Z2luc1t1XSh3KXx8e307Zm9yKHZhciBtIGluIGYpbi5pbmRleE9mKG0pPi0xP3cuY29uZmlnW21dPWMoZlttXSkubWFwKEUpLmNvbmNhdCh3LmNvbmZpZ1ttXSk6dm9pZCAwPT09aVttXSYmKHcuY29uZmlnW21dPWZbbV0pfWkuYWx0SW5wdXRDbGFzc3x8KHcuY29uZmlnLmFsdElucHV0Q2xhc3M9cmUoKS5jbGFzc05hbWUrIiAiK3cuY29uZmlnLmFsdElucHV0Q2xhc3MpO3BlKCJvblBhcnNlQ29uZmlnIil9KCksbGUoKSxmdW5jdGlvbigpe2lmKHcuaW5wdXQ9cmUoKSwhdy5pbnB1dClyZXR1cm4gdm9pZCB3LmNvbmZpZy5lcnJvckhhbmRsZXIobmV3IEVycm9yKCJJbnZhbGlkIGlucHV0IGVsZW1lbnQgc3BlY2lmaWVkIikpO3cuaW5wdXQuX3R5cGU9dy5pbnB1dC50eXBlLHcuaW5wdXQudHlwZT0idGV4dCIsdy5pbnB1dC5jbGFzc0xpc3QuYWRkKCJmbGF0cGlja3ItaW5wdXQiKSx3Ll9pbnB1dD13LmlucHV0LHcuY29uZmlnLmFsdElucHV0JiYody5hbHRJbnB1dD1zKHcuaW5wdXQubm9kZU5hbWUsdy5jb25maWcuYWx0SW5wdXRDbGFzcyksdy5faW5wdXQ9dy5hbHRJbnB1dCx3LmFsdElucHV0LnBsYWNlaG9sZGVyPXcuaW5wdXQucGxhY2Vob2xkZXIsdy5hbHRJbnB1dC5kaXNhYmxlZD13LmlucHV0LmRpc2FibGVkLHcuYWx0SW5wdXQucmVxdWlyZWQ9dy5pbnB1dC5yZXF1aXJlZCx3LmFsdElucHV0LnRhYkluZGV4PXcuaW5wdXQudGFiSW5kZXgsdy5hbHRJbnB1dC50eXBlPSJ0ZXh0Iix3LmlucHV0LnNldEF0dHJpYnV0ZSgidHlwZSIsImhpZGRlbiIpLCF3LmNvbmZpZy5zdGF0aWMmJncuaW5wdXQucGFyZW50Tm9kZSYmdy5pbnB1dC5wYXJlbnROb2RlLmluc2VydEJlZm9yZSh3LmFsdElucHV0LHcuaW5wdXQubmV4dFNpYmxpbmcpKTt3LmNvbmZpZy5hbGxvd0lucHV0fHx3Ll9pbnB1dC5zZXRBdHRyaWJ1dGUoInJlYWRvbmx5IiwicmVhZG9ubHkiKTt3Ll9wb3NpdGlvbkVsZW1lbnQ9dy5jb25maWcucG9zaXRpb25FbGVtZW50fHx3Ll9pbnB1dH0oKSxmdW5jdGlvbigpe3cuc2VsZWN0ZWREYXRlcz1bXSx3Lm5vdz13LnBhcnNlRGF0ZSh3LmNvbmZpZy5ub3cpfHxuZXcgRGF0ZTt2YXIgZT13LmNvbmZpZy5kZWZhdWx0RGF0ZXx8KCJJTlBVVCIhPT13LmlucHV0Lm5vZGVOYW1lJiYiVEVYVEFSRUEiIT09dy5pbnB1dC5ub2RlTmFtZXx8IXcuaW5wdXQucGxhY2Vob2xkZXJ8fHcuaW5wdXQudmFsdWUhPT13LmlucHV0LnBsYWNlaG9sZGVyP3cuaW5wdXQudmFsdWU6bnVsbCk7ZSYmbWUoZSx3LmNvbmZpZy5kYXRlRm9ybWF0KTt3Ll9pbml0aWFsRGF0ZT13LnNlbGVjdGVkRGF0ZXMubGVuZ3RoPjA\/dy5zZWxlY3RlZERhdGVzWzBdOncuY29uZmlnLm1pbkRhdGUmJncuY29uZmlnLm1pbkRhdGUuZ2V0VGltZSgpPncubm93LmdldFRpbWUoKT93LmNvbmZpZy5taW5EYXRlOncuY29uZmlnLm1heERhdGUmJncuY29uZmlnLm1heERhdGUuZ2V0VGltZSgpPHcubm93LmdldFRpbWUoKT93LmNvbmZpZy5tYXhEYXRlOncubm93LHcuY3VycmVudFllYXI9dy5faW5pdGlhbERhdGUuZ2V0RnVsbFllYXIoKSx3LmN1cnJlbnRNb250aD13Ll9pbml0aWFsRGF0ZS5nZXRNb250aCgpLHcuc2VsZWN0ZWREYXRlcy5sZW5ndGg+MCYmKHcubGF0ZXN0U2VsZWN0ZWREYXRlT2JqPXcuc2VsZWN0ZWREYXRlc1swXSk7dm9pZCAwIT09dy5jb25maWcubWluVGltZSYmKHcuY29uZmlnLm1pblRpbWU9dy5wYXJzZURhdGUody5jb25maWcubWluVGltZSwiSDppIikpO3ZvaWQgMCE9PXcuY29uZmlnLm1heFRpbWUmJih3LmNvbmZpZy5tYXhUaW1lPXcucGFyc2VEYXRlKHcuY29uZmlnLm1heFRpbWUsIkg6aSIpKTt3Lm1pbkRhdGVIYXNUaW1lPSEhdy5jb25maWcubWluRGF0ZSYmKHcuY29uZmlnLm1pbkRhdGUuZ2V0SG91cnMoKT4wfHx3LmNvbmZpZy5taW5EYXRlLmdldE1pbnV0ZXMoKT4wfHx3LmNvbmZpZy5taW5EYXRlLmdldFNlY29uZHMoKT4wKSx3Lm1heERhdGVIYXNUaW1lPSEhdy5jb25maWcubWF4RGF0ZSYmKHcuY29uZmlnLm1heERhdGUuZ2V0SG91cnMoKT4wfHx3LmNvbmZpZy5tYXhEYXRlLmdldE1pbnV0ZXMoKT4wfHx3LmNvbmZpZy5tYXhEYXRlLmdldFNlY29uZHMoKT4wKX0oKSx3LnV0aWxzPXtnZXREYXlzSW5Nb250aDpmdW5jdGlvbihlLHQpe3JldHVybiB2b2lkIDA9PT1lJiYoZT13LmN1cnJlbnRNb250aCksdm9pZCAwPT09dCYmKHQ9dy5jdXJyZW50WWVhciksMT09PWUmJih0JTQ9PTAmJnQlMTAwIT0wfHx0JTQwMD09MCk\/Mjk6dy5sMTBuLmRheXNJbk1vbnRoW2VdfX0sdy5pc01vYmlsZXx8ZnVuY3Rpb24oKXt2YXIgZT13aW5kb3cuZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpO2lmKHcuY2FsZW5kYXJDb250YWluZXI9cygiZGl2IiwiZmxhdHBpY2tyLWNhbGVuZGFyIiksdy5jYWxlbmRhckNvbnRhaW5lci50YWJJbmRleD0tMSwhdy5jb25maWcubm9DYWxlbmRhcil7aWYoZS5hcHBlbmRDaGlsZCgody5tb250aE5hdj1zKCJkaXYiLCJmbGF0cGlja3ItbW9udGhzIiksdy55ZWFyRWxlbWVudHM9W10sdy5tb250aEVsZW1lbnRzPVtdLHcucHJldk1vbnRoTmF2PXMoInNwYW4iLCJmbGF0cGlja3ItcHJldi1tb250aCIpLHcucHJldk1vbnRoTmF2LmlubmVySFRNTD13LmNvbmZpZy5wcmV2QXJyb3csdy5uZXh0TW9udGhOYXY9cygic3BhbiIsImZsYXRwaWNrci1uZXh0LW1vbnRoIiksdy5uZXh0TW9udGhOYXYuaW5uZXJIVE1MPXcuY29uZmlnLm5leHRBcnJvdyxxKCksT2JqZWN0LmRlZmluZVByb3BlcnR5KHcsIl9oaWRlUHJldk1vbnRoQXJyb3ciLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdy5fX2hpZGVQcmV2TW9udGhBcnJvd30sc2V0OmZ1bmN0aW9uKGUpe3cuX19oaWRlUHJldk1vbnRoQXJyb3chPT1lJiYoZCh3LnByZXZNb250aE5hdiwiZmxhdHBpY2tyLWRpc2FibGVkIixlKSx3Ll9faGlkZVByZXZNb250aEFycm93PWUpfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh3LCJfaGlkZU5leHRNb250aEFycm93Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHcuX19oaWRlTmV4dE1vbnRoQXJyb3d9LHNldDpmdW5jdGlvbihlKXt3Ll9faGlkZU5leHRNb250aEFycm93IT09ZSYmKGQody5uZXh0TW9udGhOYXYsImZsYXRwaWNrci1kaXNhYmxlZCIsZSksdy5fX2hpZGVOZXh0TW9udGhBcnJvdz1lKX19KSx3LmN1cnJlbnRZZWFyRWxlbWVudD13LnllYXJFbGVtZW50c1swXSxEZSgpLHcubW9udGhOYXYpKSx3LmlubmVyQ29udGFpbmVyPXMoImRpdiIsImZsYXRwaWNrci1pbm5lckNvbnRhaW5lciIpLHcuY29uZmlnLndlZWtOdW1iZXJzKXt2YXIgdD1mdW5jdGlvbigpe3cuY2FsZW5kYXJDb250YWluZXIuY2xhc3NMaXN0LmFkZCgiaGFzV2Vla3MiKTt2YXIgZT1zKCJkaXYiLCJmbGF0cGlja3Itd2Vla3dyYXBwZXIiKTtlLmFwcGVuZENoaWxkKHMoInNwYW4iLCJmbGF0cGlja3Itd2Vla2RheSIsdy5sMTBuLndlZWtBYmJyZXZpYXRpb24pKTt2YXIgdD1zKCJkaXYiLCJmbGF0cGlja3Itd2Vla3MiKTtyZXR1cm4gZS5hcHBlbmRDaGlsZCh0KSx7d2Vla1dyYXBwZXI6ZSx3ZWVrTnVtYmVyczp0fX0oKSxuPXQud2Vla1dyYXBwZXIsYT10LndlZWtOdW1iZXJzO3cuaW5uZXJDb250YWluZXIuYXBwZW5kQ2hpbGQobiksdy53ZWVrTnVtYmVycz1hLHcud2Vla1dyYXBwZXI9bn13LnJDb250YWluZXI9cygiZGl2IiwiZmxhdHBpY2tyLXJDb250YWluZXIiKSx3LnJDb250YWluZXIuYXBwZW5kQ2hpbGQoJCgpKSx3LmRheXNDb250YWluZXJ8fCh3LmRheXNDb250YWluZXI9cygiZGl2IiwiZmxhdHBpY2tyLWRheXMiKSx3LmRheXNDb250YWluZXIudGFiSW5kZXg9LTEpLEooKSx3LnJDb250YWluZXIuYXBwZW5kQ2hpbGQody5kYXlzQ29udGFpbmVyKSx3LmlubmVyQ29udGFpbmVyLmFwcGVuZENoaWxkKHcuckNvbnRhaW5lciksZS5hcHBlbmRDaGlsZCh3LmlubmVyQ29udGFpbmVyKX13LmNvbmZpZy5lbmFibGVUaW1lJiZlLmFwcGVuZENoaWxkKGZ1bmN0aW9uKCl7dy5jYWxlbmRhckNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKCJoYXNUaW1lIiksdy5jb25maWcubm9DYWxlbmRhciYmdy5jYWxlbmRhckNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKCJub0NhbGVuZGFyIik7dmFyIGU9eCh3LmNvbmZpZyk7dy50aW1lQ29udGFpbmVyPXMoImRpdiIsImZsYXRwaWNrci10aW1lIiksdy50aW1lQ29udGFpbmVyLnRhYkluZGV4PS0xO3ZhciB0PXMoInNwYW4iLCJmbGF0cGlja3ItdGltZS1zZXBhcmF0b3IiLCI6Iiksbj1tKCJmbGF0cGlja3ItaG91ciIseyJhcmlhLWxhYmVsIjp3LmwxMG4uaG91ckFyaWFMYWJlbH0pO3cuaG91ckVsZW1lbnQ9bi5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaW5wdXQiKVswXTt2YXIgYT1tKCJmbGF0cGlja3ItbWludXRlIix7ImFyaWEtbGFiZWwiOncubDEwbi5taW51dGVBcmlhTGFiZWx9KTt3Lm1pbnV0ZUVsZW1lbnQ9YS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaW5wdXQiKVswXSx3LmhvdXJFbGVtZW50LnRhYkluZGV4PXcubWludXRlRWxlbWVudC50YWJJbmRleD0tMSx3LmhvdXJFbGVtZW50LnZhbHVlPW8ody5sYXRlc3RTZWxlY3RlZERhdGVPYmo\/dy5sYXRlc3RTZWxlY3RlZERhdGVPYmouZ2V0SG91cnMoKTp3LmNvbmZpZy50aW1lXzI0aHI\/ZS5ob3VyczpmdW5jdGlvbihlKXtzd2l0Y2goZSUyNCl7Y2FzZSAwOmNhc2UgMTI6cmV0dXJuIDEyO2RlZmF1bHQ6cmV0dXJuIGUlMTJ9fShlLmhvdXJzKSksdy5taW51dGVFbGVtZW50LnZhbHVlPW8ody5sYXRlc3RTZWxlY3RlZERhdGVPYmo\/dy5sYXRlc3RTZWxlY3RlZERhdGVPYmouZ2V0TWludXRlcygpOmUubWludXRlcyksdy5ob3VyRWxlbWVudC5zZXRBdHRyaWJ1dGUoInN0ZXAiLHcuY29uZmlnLmhvdXJJbmNyZW1lbnQudG9TdHJpbmcoKSksdy5taW51dGVFbGVtZW50LnNldEF0dHJpYnV0ZSgic3RlcCIsdy5jb25maWcubWludXRlSW5jcmVtZW50LnRvU3RyaW5nKCkpLHcuaG91ckVsZW1lbnQuc2V0QXR0cmlidXRlKCJtaW4iLHcuY29uZmlnLnRpbWVfMjRocj8iMCI6IjEiKSx3LmhvdXJFbGVtZW50LnNldEF0dHJpYnV0ZSgibWF4Iix3LmNvbmZpZy50aW1lXzI0aHI\/IjIzIjoiMTIiKSx3LmhvdXJFbGVtZW50LnNldEF0dHJpYnV0ZSgibWF4bGVuZ3RoIiwiMiIpLHcubWludXRlRWxlbWVudC5zZXRBdHRyaWJ1dGUoIm1pbiIsIjAiKSx3Lm1pbnV0ZUVsZW1lbnQuc2V0QXR0cmlidXRlKCJtYXgiLCI1OSIpLHcubWludXRlRWxlbWVudC5zZXRBdHRyaWJ1dGUoIm1heGxlbmd0aCIsIjIiKSx3LnRpbWVDb250YWluZXIuYXBwZW5kQ2hpbGQobiksdy50aW1lQ29udGFpbmVyLmFwcGVuZENoaWxkKHQpLHcudGltZUNvbnRhaW5lci5hcHBlbmRDaGlsZChhKSx3LmNvbmZpZy50aW1lXzI0aHImJncudGltZUNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKCJ0aW1lMjRociIpO2lmKHcuY29uZmlnLmVuYWJsZVNlY29uZHMpe3cudGltZUNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKCJoYXNTZWNvbmRzIik7dmFyIGk9bSgiZmxhdHBpY2tyLXNlY29uZCIpO3cuc2Vjb25kRWxlbWVudD1pLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJpbnB1dCIpWzBdLHcuc2Vjb25kRWxlbWVudC52YWx1ZT1vKHcubGF0ZXN0U2VsZWN0ZWREYXRlT2JqP3cubGF0ZXN0U2VsZWN0ZWREYXRlT2JqLmdldFNlY29uZHMoKTplLnNlY29uZHMpLHcuc2Vjb25kRWxlbWVudC5zZXRBdHRyaWJ1dGUoInN0ZXAiLHcubWludXRlRWxlbWVudC5nZXRBdHRyaWJ1dGUoInN0ZXAiKSksdy5zZWNvbmRFbGVtZW50LnNldEF0dHJpYnV0ZSgibWluIiwiMCIpLHcuc2Vjb25kRWxlbWVudC5zZXRBdHRyaWJ1dGUoIm1heCIsIjU5Iiksdy5zZWNvbmRFbGVtZW50LnNldEF0dHJpYnV0ZSgibWF4bGVuZ3RoIiwiMiIpLHcudGltZUNvbnRhaW5lci5hcHBlbmRDaGlsZChzKCJzcGFuIiwiZmxhdHBpY2tyLXRpbWUtc2VwYXJhdG9yIiwiOiIpKSx3LnRpbWVDb250YWluZXIuYXBwZW5kQ2hpbGQoaSl9dy5jb25maWcudGltZV8yNGhyfHwody5hbVBNPXMoInNwYW4iLCJmbGF0cGlja3ItYW0tcG0iLHcubDEwbi5hbVBNW3IoKHcubGF0ZXN0U2VsZWN0ZWREYXRlT2JqP3cuaG91ckVsZW1lbnQudmFsdWU6dy5jb25maWcuZGVmYXVsdEhvdXIpPjExKV0pLHcuYW1QTS50aXRsZT13LmwxMG4udG9nZ2xlVGl0bGUsdy5hbVBNLnRhYkluZGV4PS0xLHcudGltZUNvbnRhaW5lci5hcHBlbmRDaGlsZCh3LmFtUE0pKTtyZXR1cm4gdy50aW1lQ29udGFpbmVyfSgpKTtkKHcuY2FsZW5kYXJDb250YWluZXIsInJhbmdlTW9kZSIsInJhbmdlIj09PXcuY29uZmlnLm1vZGUpLGQody5jYWxlbmRhckNvbnRhaW5lciwiYW5pbWF0ZSIsITA9PT13LmNvbmZpZy5hbmltYXRlKSxkKHcuY2FsZW5kYXJDb250YWluZXIsIm11bHRpTW9udGgiLHcuY29uZmlnLnNob3dNb250aHM+MSksdy5jYWxlbmRhckNvbnRhaW5lci5hcHBlbmRDaGlsZChlKTt2YXIgaT12b2lkIDAhPT13LmNvbmZpZy5hcHBlbmRUbyYmdm9pZCAwIT09dy5jb25maWcuYXBwZW5kVG8ubm9kZVR5cGU7aWYoKHcuY29uZmlnLmlubGluZXx8dy5jb25maWcuc3RhdGljKSYmKHcuY2FsZW5kYXJDb250YWluZXIuY2xhc3NMaXN0LmFkZCh3LmNvbmZpZy5pbmxpbmU\/ImlubGluZSI6InN0YXRpYyIpLHcuY29uZmlnLmlubGluZSYmKCFpJiZ3LmVsZW1lbnQucGFyZW50Tm9kZT93LmVsZW1lbnQucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUody5jYWxlbmRhckNvbnRhaW5lcix3Ll9pbnB1dC5uZXh0U2libGluZyk6dm9pZCAwIT09dy5jb25maWcuYXBwZW5kVG8mJncuY29uZmlnLmFwcGVuZFRvLmFwcGVuZENoaWxkKHcuY2FsZW5kYXJDb250YWluZXIpKSx3LmNvbmZpZy5zdGF0aWMpKXt2YXIgbD1zKCJkaXYiLCJmbGF0cGlja3Itd3JhcHBlciIpO3cuZWxlbWVudC5wYXJlbnROb2RlJiZ3LmVsZW1lbnQucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUobCx3LmVsZW1lbnQpLGwuYXBwZW5kQ2hpbGQody5lbGVtZW50KSx3LmFsdElucHV0JiZsLmFwcGVuZENoaWxkKHcuYWx0SW5wdXQpLGwuYXBwZW5kQ2hpbGQody5jYWxlbmRhckNvbnRhaW5lcil9dy5jb25maWcuc3RhdGljfHx3LmNvbmZpZy5pbmxpbmV8fCh2b2lkIDAhPT13LmNvbmZpZy5hcHBlbmRUbz93LmNvbmZpZy5hcHBlbmRUbzp3aW5kb3cuZG9jdW1lbnQuYm9keSkuYXBwZW5kQ2hpbGQody5jYWxlbmRhckNvbnRhaW5lcil9KCksZnVuY3Rpb24oKXt3LmNvbmZpZy53cmFwJiZbIm9wZW4iLCJjbG9zZSIsInRvZ2dsZSIsImNsZWFyIl0uZm9yRWFjaCgoZnVuY3Rpb24oZSl7QXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbCh3LmVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgiW2RhdGEtIitlKyJdIiksKGZ1bmN0aW9uKHQpe3JldHVybiBBKHQsImNsaWNrIix3W2VdKX0pKX0pKTtpZih3LmlzTW9iaWxlKXJldHVybiB2b2lkIGZ1bmN0aW9uKCl7dmFyIGU9dy5jb25maWcuZW5hYmxlVGltZT93LmNvbmZpZy5ub0NhbGVuZGFyPyJ0aW1lIjoiZGF0ZXRpbWUtbG9jYWwiOiJkYXRlIjt3Lm1vYmlsZUlucHV0PXMoImlucHV0Iix3LmlucHV0LmNsYXNzTmFtZSsiIGZsYXRwaWNrci1tb2JpbGUiKSx3Lm1vYmlsZUlucHV0LnRhYkluZGV4PTEsdy5tb2JpbGVJbnB1dC50eXBlPWUsdy5tb2JpbGVJbnB1dC5kaXNhYmxlZD13LmlucHV0LmRpc2FibGVkLHcubW9iaWxlSW5wdXQucmVxdWlyZWQ9dy5pbnB1dC5yZXF1aXJlZCx3Lm1vYmlsZUlucHV0LnBsYWNlaG9sZGVyPXcuaW5wdXQucGxhY2Vob2xkZXIsdy5tb2JpbGVGb3JtYXRTdHI9ImRhdGV0aW1lLWxvY2FsIj09PWU\/IlktbS1kXFxUSDppOlMiOiJkYXRlIj09PWU\/IlktbS1kIjoiSDppOlMiLHcuc2VsZWN0ZWREYXRlcy5sZW5ndGg+MCYmKHcubW9iaWxlSW5wdXQuZGVmYXVsdFZhbHVlPXcubW9iaWxlSW5wdXQudmFsdWU9dy5mb3JtYXREYXRlKHcuc2VsZWN0ZWREYXRlc1swXSx3Lm1vYmlsZUZvcm1hdFN0cikpO3cuY29uZmlnLm1pbkRhdGUmJih3Lm1vYmlsZUlucHV0Lm1pbj13LmZvcm1hdERhdGUody5jb25maWcubWluRGF0ZSwiWS1tLWQiKSk7dy5jb25maWcubWF4RGF0ZSYmKHcubW9iaWxlSW5wdXQubWF4PXcuZm9ybWF0RGF0ZSh3LmNvbmZpZy5tYXhEYXRlLCJZLW0tZCIpKTt3LmlucHV0LmdldEF0dHJpYnV0ZSgic3RlcCIpJiYody5tb2JpbGVJbnB1dC5zdGVwPVN0cmluZyh3LmlucHV0LmdldEF0dHJpYnV0ZSgic3RlcCIpKSk7dy5pbnB1dC50eXBlPSJoaWRkZW4iLHZvaWQgMCE9PXcuYWx0SW5wdXQmJih3LmFsdElucHV0LnR5cGU9ImhpZGRlbiIpO3RyeXt3LmlucHV0LnBhcmVudE5vZGUmJncuaW5wdXQucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUody5tb2JpbGVJbnB1dCx3LmlucHV0Lm5leHRTaWJsaW5nKX1jYXRjaChlKXt9QSh3Lm1vYmlsZUlucHV0LCJjaGFuZ2UiLChmdW5jdGlvbihlKXt3LnNldERhdGUoZyhlKS52YWx1ZSwhMSx3Lm1vYmlsZUZvcm1hdFN0cikscGUoIm9uQ2hhbmdlIikscGUoIm9uQ2xvc2UiKX0pKX0oKTt2YXIgZT1sKGllLDUwKTt3Ll9kZWJvdW5jZWRDaGFuZ2U9bChOLDMwMCksdy5kYXlzQ29udGFpbmVyJiYhL2lQaG9uZXxpUGFkfGlQb2QvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpJiZBKHcuZGF5c0NvbnRhaW5lciwibW91c2VvdmVyIiwoZnVuY3Rpb24oZSl7InJhbmdlIj09PXcuY29uZmlnLm1vZGUmJmFlKGcoZSkpfSkpO0Eod2luZG93LmRvY3VtZW50LmJvZHksImtleWRvd24iLG5lKSx3LmNvbmZpZy5pbmxpbmV8fHcuY29uZmlnLnN0YXRpY3x8QSh3aW5kb3csInJlc2l6ZSIsZSk7dm9pZCAwIT09d2luZG93Lm9udG91Y2hzdGFydD9BKHdpbmRvdy5kb2N1bWVudCwidG91Y2hzdGFydCIsWik6QSh3aW5kb3cuZG9jdW1lbnQsIm1vdXNlZG93biIsWik7QSh3aW5kb3cuZG9jdW1lbnQsImZvY3VzIixaLHtjYXB0dXJlOiEwfSksITA9PT13LmNvbmZpZy5jbGlja09wZW5zJiYoQSh3Ll9pbnB1dCwiZm9jdXMiLHcub3BlbiksQSh3Ll9pbnB1dCwiY2xpY2siLHcub3BlbikpO3ZvaWQgMCE9PXcuZGF5c0NvbnRhaW5lciYmKEEody5tb250aE5hdiwiY2xpY2siLENlKSxBKHcubW9udGhOYXYsWyJrZXl1cCIsImluY3JlbWVudCJdLEYpLEEody5kYXlzQ29udGFpbmVyLCJjbGljayIsdWUpKTtpZih2b2lkIDAhPT13LnRpbWVDb250YWluZXImJnZvaWQgMCE9PXcubWludXRlRWxlbWVudCYmdm9pZCAwIT09dy5ob3VyRWxlbWVudCl7dmFyIHQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGcoZSkuc2VsZWN0KCl9O0Eody50aW1lQ29udGFpbmVyLFsiaW5jcmVtZW50Il0sSSksQSh3LnRpbWVDb250YWluZXIsImJsdXIiLEkse2NhcHR1cmU6ITB9KSxBKHcudGltZUNvbnRhaW5lciwiY2xpY2siLFkpLEEoW3cuaG91ckVsZW1lbnQsdy5taW51dGVFbGVtZW50XSxbImZvY3VzIiwiY2xpY2siXSx0KSx2b2lkIDAhPT13LnNlY29uZEVsZW1lbnQmJkEody5zZWNvbmRFbGVtZW50LCJmb2N1cyIsKGZ1bmN0aW9uKCl7cmV0dXJuIHcuc2Vjb25kRWxlbWVudCYmdy5zZWNvbmRFbGVtZW50LnNlbGVjdCgpfSkpLHZvaWQgMCE9PXcuYW1QTSYmQSh3LmFtUE0sImNsaWNrIiwoZnVuY3Rpb24oZSl7SShlKSxOKCl9KSl9dy5jb25maWcuYWxsb3dJbnB1dCYmQSh3Ll9pbnB1dCwiYmx1ciIsdGUpfSgpLCh3LnNlbGVjdGVkRGF0ZXMubGVuZ3RofHx3LmNvbmZpZy5ub0NhbGVuZGFyKSYmKHcuY29uZmlnLmVuYWJsZVRpbWUmJl8ody5jb25maWcubm9DYWxlbmRhcj93LmxhdGVzdFNlbGVjdGVkRGF0ZU9iajp2b2lkIDApLGJlKCExKSksaygpO3ZhciB0PS9eKCg\/IWNocm9tZXxhbmRyb2lkKS4pKnNhZmFyaS9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCk7IXcuaXNNb2JpbGUmJnQmJmNlKCkscGUoIm9uUmVhZHkiKX0oKSx3fWZ1bmN0aW9uIGsoZSx0KXtmb3IodmFyIG49QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZSkuZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIEhUTUxFbGVtZW50fSkpLGE9W10saT0wO2k8bi5sZW5ndGg7aSsrKXt2YXIgbz1uW2ldO3RyeXtpZihudWxsIT09by5nZXRBdHRyaWJ1dGUoImRhdGEtZnAtb21pdCIpKWNvbnRpbnVlO3ZvaWQgMCE9PW8uX2ZsYXRwaWNrciYmKG8uX2ZsYXRwaWNrci5kZXN0cm95KCksby5fZmxhdHBpY2tyPXZvaWQgMCksby5fZmxhdHBpY2tyPUUobyx0fHx7fSksYS5wdXNoKG8uX2ZsYXRwaWNrcil9Y2F0Y2goZSl7Y29uc29sZS5lcnJvcihlKX19cmV0dXJuIDE9PT1hLmxlbmd0aD9hWzBdOmF9InVuZGVmaW5lZCIhPXR5cGVvZiBIVE1MRWxlbWVudCYmInVuZGVmaW5lZCIhPXR5cGVvZiBIVE1MQ29sbGVjdGlvbiYmInVuZGVmaW5lZCIhPXR5cGVvZiBOb2RlTGlzdCYmKEhUTUxDb2xsZWN0aW9uLnByb3RvdHlwZS5mbGF0cGlja3I9Tm9kZUxpc3QucHJvdG90eXBlLmZsYXRwaWNrcj1mdW5jdGlvbihlKXtyZXR1cm4gayh0aGlzLGUpfSxIVE1MRWxlbWVudC5wcm90b3R5cGUuZmxhdHBpY2tyPWZ1bmN0aW9uKGUpe3JldHVybiBrKFt0aGlzXSxlKX0pO3ZhciBUPWZ1bmN0aW9uKGUsdCl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBlP2sod2luZG93LmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoZSksdCk6ZSBpbnN0YW5jZW9mIE5vZGU\/ayhbZV0sdCk6ayhlLHQpfTtyZXR1cm4gVC5kZWZhdWx0Q29uZmlnPXt9LFQubDEwbnM9e2VuOmUoe30saSksZGVmYXVsdDplKHt9LGkpfSxULmxvY2FsaXplPWZ1bmN0aW9uKHQpe1QubDEwbnMuZGVmYXVsdD1lKGUoe30sVC5sMTBucy5kZWZhdWx0KSx0KX0sVC5zZXREZWZhdWx0cz1mdW5jdGlvbih0KXtULmRlZmF1bHRDb25maWc9ZShlKHt9LFQuZGVmYXVsdENvbmZpZyksdCl9LFQucGFyc2VEYXRlPUMoe30pLFQuZm9ybWF0RGF0ZT1iKHt9KSxULmNvbXBhcmVEYXRlcz1NLCJ1bmRlZmluZWQiIT10eXBlb2YgalF1ZXJ5JiZ2b2lkIDAhPT1qUXVlcnkuZm4mJihqUXVlcnkuZm4uZmxhdHBpY2tyPWZ1bmN0aW9uKGUpe3JldHVybiBrKHRoaXMsZSl9KSxEYXRlLnByb3RvdHlwZS5mcF9pbmNyPWZ1bmN0aW9uKGUpe3JldHVybiBuZXcgRGF0ZSh0aGlzLmdldEZ1bGxZZWFyKCksdGhpcy5nZXRNb250aCgpLHRoaXMuZ2V0RGF0ZSgpKygic3RyaW5nIj09dHlwZW9mIGU\/cGFyc2VJbnQoZSwxMCk6ZSkpfSwidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdyYmKHdpbmRvdy5mbGF0cGlja3I9VCksVH0pKTsKLyoqIC9tL2pzL3ZhbmlsbGFqcy9mbGF0cGlja3IuZnIuanMgKiovCnZhciBfX19kMmNfZmxhdHBpY2tyZnJqc19jX29uPSIyMDI1LTA1LTIzIDE3OjA1OjE3IjsndXNlIHN0cmljdCc7dmFyIF9fX2QyY19mbGF0cGlja3JmcmpzX2Nfb249IjIwMjQtMDEtMzEgMTQ6MzI6NDYiOyJ1c2Ugc3RyaWN0IjtfX19kMmNfZmxhdHBpY2tyZnJqc19jX29uPSIyMDIzLTAxLTEyIDExOjQxOjQ2IjsidXNlIHN0cmljdCI7X19fZDJjX2ZsYXRwaWNrcmZyanNfY19vbj0iMjAyMy0wMS0xMiAxMDo1MTozMCI7InVzZSBzdHJpY3QiO19fX2QyY19mbGF0cGlja3JmcmpzX2Nfb249IjIwMjEtMTItMjEgMTM6MzA6NTIiOyJ1c2Ugc3RyaWN0IjsKKGZ1bmN0aW9uKGIsYSl7Im9iamVjdCI9PT10eXBlb2YgZXhwb3J0cyYmInVuZGVmaW5lZCIhPT10eXBlb2YgbW9kdWxlP2EoZXhwb3J0cyk6ImZ1bmN0aW9uIj09PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ\/ZGVmaW5lKFsiZXhwb3J0cyJdLGEpOihiPSJ1bmRlZmluZWQiIT09dHlwZW9mIGdsb2JhbFRoaXM\/Z2xvYmFsVGhpczpifHxzZWxmLGEoYi5mcj17fSkpfSkodGhpcyxmdW5jdGlvbihiKXt2YXIgYT0idW5kZWZpbmVkIiE9PXR5cGVvZiB3aW5kb3cmJnZvaWQgMCE9PXdpbmRvdy5mbGF0cGlja3I\/d2luZG93LmZsYXRwaWNrcjp7bDEwbnM6e319LGM9e2ZpcnN0RGF5T2ZXZWVrOjEsd2Vla2RheXM6e3Nob3J0aGFuZDoiZGltIGx1biBtYXIgbWVyIGpldSB2ZW4gc2FtIi5zcGxpdCgiICIpLGxvbmdoYW5kOiJkaW1hbmNoZSBsdW5kaSBtYXJkaSBtZXJjcmVkaSBqZXVkaSB2ZW5kcmVkaSBzYW1lZGkiLnNwbGl0KCIgIil9LG1vbnRoczp7c2hvcnRoYW5kOiJqYW52IGbDqXZyIG1hcnMgYXZyIG1haSBqdWluIGp1aWwgYW\/Du3Qgc2VwdCBvY3Qgbm92IGTDqWMiLnNwbGl0KCIgIiksCmxvbmdoYW5kOiJqYW52aWVyIGbDqXZyaWVyIG1hcnMgYXZyaWwgbWFpIGp1aW4ganVpbGxldCBhb8O7dCBzZXB0ZW1icmUgb2N0b2JyZSBub3ZlbWJyZSBkw6ljZW1icmUiLnNwbGl0KCIgIil9LG9yZGluYWw6ZnVuY3Rpb24oZCl7cmV0dXJuIDE8ZD8iIjoiZXIifSxyYW5nZVNlcGFyYXRvcjoiIGF1ICIsd2Vla0FiYnJldmlhdGlvbjoiU2VtIixzY3JvbGxUaXRsZToiRMOpZmlsZXIgcG91ciBhdWdtZW50ZXIgbGEgdmFsZXVyIix0b2dnbGVUaXRsZToiQ2xpcXVlciBwb3VyIGJhc2N1bGVyIix0aW1lXzI0aHI6ITB9O2EubDEwbnMuZnI9YzthPWEubDEwbnM7Yi5GcmVuY2g9YztiLmRlZmF1bHQ9YTtPYmplY3QuZGVmaW5lUHJvcGVydHkoYiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSl9KTsKLyoqIC9tL2pzL2ZyLm5ld2NhcnMuaW5saW5lLmpzICoqLwp2YXIganNfZDJjX2dldF92YWw9KGpzX2QyY19nZXRfdmFsfHxmdW5jdGlvbihpZCl7dHJ5e3JldHVybiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCkudmFsdWU7fWNhdGNoKGV4KXtpZihjb25zb2xlJiZjb25zb2xlLmxvZyljb25zb2xlLmxvZygiU3lzdGVtIGZhaWxlZCB3aGlsZSByZXRyaWV2aW5nIHJlcGxhY2VtZW50IHZhbHVlOiAiK2lkLGV4KTtyZXR1cm4nJzt9fSk7dmFyIGlkZW50XzQ4OTY0MDQ5YzUzY2I0MmMxNmZlZDFlOGRlMGQzMzY2O3RyeXtmdW5jdGlvbiBPcHRhbm9uV3JhcHBlcigpe319Y2F0Y2goZXp6MSl7aWYoY29uc29sZSYmY29uc29sZS5sb2cpCmNvbnNvbGUubG9nKGV6ejEpO30KdmFyIGlkZW50X2Y0YmIyMWQwYTY3OTkyMDRmODA2YjliZjRiNDY4ZWJlO3RyeXsoZnVuY3Rpb24odyxkLHMsbCxpKXt3W2xdPXdbbF18fFtdO3dbbF0ucHVzaCh7J2d0bS5zdGFydCc6bmV3IERhdGUoKS5nZXRUaW1lKCksZXZlbnQ6J2d0bS5qcyd9KTt2YXIgZj1kLmdldEVsZW1lbnRzQnlUYWdOYW1lKHMpWzBdLGo9ZC5jcmVhdGVFbGVtZW50KHMpLGRsPWwhPSdkYXRhTGF5ZXInPycmbD0nK2w6Jyc7ai5hc3luYz10cnVlO2ouc2V0QXR0cmlidXRlTm9kZShkLmNyZWF0ZUF0dHJpYnV0ZSgnZGF0YS1vdC1pZ25vcmUnKSk7ai5zcmM9J2h0dHBzOi8vd3d3Lmdvb2dsZXRhZ21hbmFnZXIuY29tL2d0bS5qcz9pZD0nK2krZGw7ai5zZXRBdHRyaWJ1dGVOb2RlKGQuY3JlYXRlQXR0cmlidXRlKCdkYXRhLW90LWlnbm9yZScpKTtmLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGosZik7fSkod2luZG93LGRvY3VtZW50LCdzY3JpcHQnLCdkYXRhTGF5ZXInLCdHVE0tVFM1REI3RDQnKTt9Y2F0Y2goZXp6MSl7aWYoY29uc29sZSYmY29uc29sZS5sb2cpCmNvbnNvbGUubG9nKGV6ejEpO30KdmFyIGlkZW50XzE1ZWQ0Y2U1OTA4NTliM2UwOTc1MTVhZDkwZWQ5ZjJlO3RyeXtEMlNEKHsibGlicmFyeUpTIjoiXC9cL3RhZ2dpbmcuc2hpZnRkaWdpdGFsYXBwcy5pb1wvc2NyaXB0c1wvS0lBQ0FcL3NkLmpzIiwiY2xpZW50SUQiOiJLSUFDQSIsInByb3ZpZGVySUQiOiJEMkNNZWRpYSIsInJldGFpbGVySUQiOiI2MTA1NiJ9LHsibGFuZ3VhZ2UiOiJmciIsInBhZ2VUeXBlIjoiU2hvd3Jvb20iLCJ3ZWJzaXRlVGllciI6IlRpZXIgMyIsInBhZ2VCcmFuZCI6IktpYSIsInNpdGVUZWNobm9sb2d5VmVyc2lvbiI6IjY5ZTQ1NWJmMmM4ZDkiLCJkZWFsZXJOYW1lIjoiQUxCSSBLaWEgTWFzY291Y2hlIiwiZGVhbGVyQ2l0eSI6Ik1hc2NvdWNoZSIsImRlYWxlclN0YXRlIjoiUUMiLCJkZWFsZXJaaXBDb2RlIjoiSjdLIDNDMSIsIkdFTkVSQUxfRU5BQkxFX0NPT0tJRV9PTkVCQU5ORVJfU0NSSVBUIjp0cnVlLCJHRU5FUkFMX0VOQUJMRV9UUkFOU0FDVElPTl9CVUlMREVSIjpmYWxzZX0seyJhbXBwb3B1cCI6MH0pO31jYXRjaChlenoxKXtpZihjb25zb2xlJiZjb25zb2xlLmxvZykKY29uc29sZS5sb2coZXp6MSk7fQp2YXIgaWRlbnRfM2Y1NjAyY2FmZDdlZmQwNDFhZmE0YmI5YmJhYzI0YWQ7dHJ5e0QyQVNDKHsidXNlckxhbmd1YWdlIjoiZnJlIiwicGFDb2RlIjoiNjEwNTYiLCJjbGllbnQiOiJraWEiLCJwYWdlSWQiOiJzaG93cm9vbSIsIm9lbUluZm8iOnsib2VtRGVhbGVyQ29kZSI6IjYxMDU2IiwiMCI6IjYxMDU2Iiwib2VtIjoiS2lhIFNISUZUIiwiMSI6IktpYSBTSElGVCJ9LCJkZWFsZXJfbmFtZSI6IiIsImZvcm1NYXAiOnsiQURGQnVybGluZ3Rvbl9DZW50cmVfLV9FVl9Ub3VyXy1fRHJpdmVmZSI6eyJGUkVOQ0giOiJEZW1hbmRlIGRlIEJ1cmxpbmd0b24gQ2VudHJlIC0gRVYgVG91ciAtIERyaXZlZmVzdCArIEtpYSBTaWduIFVwIFdhcm0gTGVhZDogQ29udGFjdCBEZWFsZXIiLCJFTkdMSVNIIjoiTGVhZCBGcm9tIEJ1cmxpbmd0b24gQ2VudHJlIC0gRVYgVG91ciAtIERyaXZlZmVzdCArIEtpYSBTaWduIFVwIFdhcm0gTGVhZDogQ29udGFjdCBEZWFsZXIifSwiQURGY2FtcGJlbGxyaXZlcmNhcnMuY2FfKEQyQ19NZWRpYSlfLV9MZSI6eyJGUkVOQ0giOiJEZW1hbmRlIGRlIGNhbXBiZWxscml2ZXJjYXJzLmNhIChEMkMgTWVkaWEpIC0gTGVhZDogVmVoaWNsZSBBdmFpbGFiaWxpdHkgW0dvb2dsZSAtIFVzZWQgICBMb2NfcGh5c2ljYWw9OTAwMTYxM10iLCJFTkdMSVNIIjoiTGVhZCBGcm9tIGNhbXBiZWxscml2ZXJjYXJzLmNhIChEMkMgTWVkaWEpIC0gTGVhZDogVmVoaWNsZSBBdmFpbGFiaWxpdHkgW0dvb2dsZSAtIFVzZWQgICBMb2NfcGh5c2ljYWw9OTAwMTYxM10ifSwiQURGY2FybWF0Y2hlci5jYV8oRDJDX01lZGlhKV8tX0xlYWQ6X0FwcCI6eyJGUkVOQ0giOiJEZW1hbmRlIGRlIGNhcm1hdGNoZXIuY2EgKEQyQyBNZWRpYSkgLSBMZWFkOiBBcHBvaW50bWVudCByZXF1ZXN0IFtHb29nbGUgLSBPcmdhbmljXSIsIkVOR0xJU0giOiJMZWFkIEZyb20gY2FybWF0Y2hlci5jYSAoRDJDIE1lZGlhKSAtIExlYWQ6IEFwcG9pbnRtZW50IHJlcXVlc3QgW0dvb2dsZSAtIE9yZ2FuaWNdIn0sIkFERmNhcm1hdGNoZXIuY2FfKEQyQ19NZWRpYSlfLV9MZWFkOl9DYXIiOnsiRlJFTkNIIjoiRGVtYW5kZSBkZSBjYXJtYXRjaGVyLmNhIChEMkMgTWVkaWEpIC0gTGVhZDogQ2FyRmF4IHJlcXVlc3QgW0dvb2dsZSAtIE9yZ2FuaWNdIiwiRU5HTElTSCI6IkxlYWQgRnJvbSBjYXJtYXRjaGVyLmNhIChEMkMgTWVkaWEpIC0gTGVhZDogQ2FyRmF4IHJlcXVlc3QgW0dvb2dsZSAtIE9yZ2FuaWNdIn0sIkFERmNhcm1hdGNoZXIuY2FfKEQyQ19NZWRpYSlfLV9MZWFkOl9PZmYiOnsiRlJFTkNIIjoiRGVtYW5kZSBkZSBjYXJtYXRjaGVyLmNhIChEMkMgTWVkaWEpIC0gTGVhZDogT2ZmZXIgb24gYSB2ZWhpY2xlIFtHb29nbGUgLSBPcmdhbmljXSIsIkVOR0xJU0giOiJMZWFkIEZyb20gY2FybWF0Y2hlci5jYSAoRDJDIE1lZGlhKSAtIExlYWQ6IE9mZmVyIG9uIGEgdmVoaWNsZSBbR29vZ2xlIC0gT3JnYW5pY10ifSwiQURGY2FybWF0Y2hlci5jYV8oRDJDX01lZGlhKV8tX0xlYWQ6X1BERiI6eyJGUkVOQ0giOiJEZW1hbmRlIGRlIGNhcm1hdGNoZXIuY2EgKEQyQyBNZWRpYSkgLSBMZWFkOiBQREYgcmVxdWVzdCAtIFZlaGljbGUgaW4gaW52ZW50b3J5IFtHb29nbGUgLSBPcmdhbmljXSIsIkVOR0xJU0giOiJMZWFkIEZyb20gY2FybWF0Y2hlci5jYSAoRDJDIE1lZGlhKSAtIExlYWQ6IFBERiByZXF1ZXN0IC0gVmVoaWNsZSBpbiBpbnZlbnRvcnkgW0dvb2dsZSAtIE9yZ2FuaWNdIn0sIkFERmNhcm1hdGNoZXIuY2FfKEQyQ19NZWRpYSlfLV9MZWFkOl9SZXEiOnsiRlJFTkNIIjoiRGVtYW5kZSBkZSBjYXJtYXRjaGVyLmNhIChEMkMgTWVkaWEpIC0gTGVhZDogUmVxdWVzdCBmb3IgZmluYW5jaW5nIChNdWx0aXN0ZXApIFtHb29nbGUgLSBPcmdhbmljXSIsIkVOR0xJU0giOiJMZWFkIEZyb20gY2FybWF0Y2hlci5jYSAoRDJDIE1lZGlhKSAtIExlYWQ6IFJlcXVlc3QgZm9yIGZpbmFuY2luZyAoTXVsdGlzdGVwKSBbR29vZ2xlIC0gT3JnYW5pY10ifSwiQURGY2FybWF0Y2hlci5jYV8oRDJDX01lZGlhKV8tX0xlYWQ6X1NlciI6eyJGUkVOQ0giOiJEZW1hbmRlIGRlIGNhcm1hdGNoZXIuY2EgKEQyQyBNZWRpYSkgLSBMZWFkOiBTZXJ2aWNlIGFwcG9pbnRtZW50IHJlcXVlc3QgW0ZhY2Vib29rIC0gT3JnYW5pY10iLCJFTkdMSVNIIjoiTGVhZCBGcm9tIGNhcm1hdGNoZXIuY2EgKEQyQyBNZWRpYSkgLSBMZWFkOiBTZXJ2aWNlIGFwcG9pbnRtZW50IHJlcXVlc3QgW0ZhY2Vib29rIC0gT3JnYW5pY10ifSwiQURGY2FybWF0Y2hlci5jYV8oRDJDX01lZGlhKV8tX0xlYWQ6X1RyYSI6eyJGUkVOQ0giOiJEZW1hbmRlIGRlIGNhcm1hdGNoZXIuY2EgKEQyQyBNZWRpYSkgLSBMZWFkOiBUcmFkZS1pbiByZXF1ZXN0IFtHb29nbGUgLSBPcmdhbmljXSIsIkVOR0xJU0giOiJMZWFkIEZyb20gY2FybWF0Y2hlci5jYSAoRDJDIE1lZGlhKSAtIExlYWQ6IFRyYWRlLWluIHJlcXVlc3QgW0dvb2dsZSAtIE9yZ2FuaWNdIn0sIkFERmNhcm1hdGNoZXIuY2FfKEQyQ19NZWRpYSlfLV9MZWFkOl9WZWgiOnsiRlJFTkNIIjoiRGVtYW5kZSBkZSBjYXJtYXRjaGVyLmNhIChEMkMgTWVkaWEpIC0gTGVhZDogVmVoaWNsZSBBdmFpbGFiaWxpdHkgW0dvb2dsZSAtIE9yZ2FuaWNdIiwiRU5HTElTSCI6IkxlYWQgRnJvbSBjYXJtYXRjaGVyLmNhIChEMkMgTWVkaWEpIC0gTGVhZDogVmVoaWNsZSBBdmFpbGFiaWxpdHkgW0dvb2dsZSAtIE9yZ2FuaWNdIn0sIkFERmNhcm1hdGNoZXIuY2FfKEQyQ19NZWRpYV8tX09yZ2FuaWMpXy0iOnsiRlJFTkNIIjoiRGVtYW5kZSBkZSBjYXJtYXRjaGVyLmNhIChEMkMgTWVkaWEgLSBPcmdhbmljKSAtIExlYWQ6IFZlaGljbGUgQXZhaWxhYmlsaXR5IFtPcmdhbmljXSIsIkVOR0xJU0giOiJMZWFkIEZyb20gY2FybWF0Y2hlci5jYSAoRDJDIE1lZGlhIC0gT3JnYW5pYykgLSBMZWFkOiBWZWhpY2xlIEF2YWlsYWJpbGl0eSBbT3JnYW5pY10ifSwiQURGZGFuaWVscGFyZWRvZGdlLmNvbV8ocGFyX0QyQ19NZWRpYSlfLSI6eyJGUkVOQ0giOiJEZW1hbmRlIGRlIGRhbmllbHBhcmVkb2RnZS5jb20gKHBhciBEMkMgTWVkaWEpIC0gRDJDIE1lZGlhIC0gTGVhZCA6IFZvaXIgbCdvZmZyZSBjb3Vwb24gU1JQIFtHb29nbGUgLSBOZXVmLXZsYV0iLCJFTkdMSVNIIjoiTGVhZCBGcm9tIGRhbmllbHBhcmVkb2RnZS5jb20gKHBhciBEMkMgTWVkaWEpIC0gRDJDIE1lZGlhIC0gTGVhZCA6IFZvaXIgbCdvZmZyZSBjb3Vwb24gU1JQIFtHb29nbGUgLSBOZXVmLXZsYV0ifSwiQURGZGVtb2NybS5kMmNtZWRpYS5jYV8oRDJDX01lZGlhXy1fT3JnYSI6eyJGUkVOQ0giOiJEZW1hbmRlIGRlIGRlbW9jcm0uZDJjbWVkaWEuY2EgKEQyQyBNZWRpYSAtIE9yZ2FuaWMpIC0gTGVhZDogUmVxdWVzdCBmb3IgYSByZWJhdGUgY291cG9uIChpbnZlbnRvcnkgdmVoaWNsZSkgW09yZ2FuaWNdIiwiRU5HTElTSCI6IkxlYWQgRnJvbSBkZW1vY3JtLmQyY21lZGlhLmNhIChEMkMgTWVkaWEgLSBPcmdhbmljKSAtIExlYWQ6IFJlcXVlc3QgZm9yIGEgcmViYXRlIGNvdXBvbiAoaW52ZW50b3J5IHZlaGljbGUpIFtPcmdhbmljXSJ9LCJBREZNb25fc2l0ZV8tX0QyQ19NZWRpYV8tX0xlYWRfOl9EZW1hbmRlIjp7IkZSRU5DSCI6IkRlbWFuZGUgZGUgTW9uIHNpdGUgLSBEMkMgTWVkaWEgLSBMZWFkIDogRGVtYW5kZSBkZSB2YWxldXIgZCcmQXRpbGRlOyZjb3B5O2NoYW5nZSAoU01TKSBbR29vZ2xlIC0gT3JnYW5pY10iLCJFTkdMSVNIIjoiTGVhZCBGcm9tIE1vbiBzaXRlIC0gRDJDIE1lZGlhIC0gTGVhZCA6IERlbWFuZGUgZGUgdmFsZXVyIGQnJkF0aWxkZTsmY29weTtjaGFuZ2UgKFNNUykgW0dvb2dsZSAtIE9yZ2FuaWNdIn0sIkFERnBhbGxhZGlub2F1dG9ncm91cC5jb21fKEQyQ19NZWRpYSlfLV8iOnsiRlJFTkNIIjoiRGVtYW5kZSBkZSBwYWxsYWRpbm9hdXRvZ3JvdXAuY29tIChEMkMgTWVkaWEpIC0gTGVhZDogQ2FyRmF4IHJlcXVlc3QgW0dvb2dsZSAtIFVzZWQtdmxhICAgTG9jX3BoeXNpY2FsPTkwMDExNDFdIiwiRU5HTElTSCI6IkxlYWQgRnJvbSBwYWxsYWRpbm9hdXRvZ3JvdXAuY29tIChEMkMgTWVkaWEpIC0gTGVhZDogQ2FyRmF4IHJlcXVlc3QgW0dvb2dsZSAtIFVzZWQtdmxhICAgTG9jX3BoeXNpY2FsPTkwMDExNDFdIn0sIkFERnBhbGxhZGlub2F1dG9ncm91cC5jb21fKEQyQ19NZWRpYSlfXy0iOnsiRlJFTkNIIjoiRGVtYW5kZSBkZSBwYWxsYWRpbm9hdXRvZ3JvdXAuY29tIChEMkMgTWVkaWEpICAtIExlYWQ6IFJlcXVlc3QgZm9yIGNvbnRhY3QgW0ZhY2Vib29rIC0gVXNlZCBbIEtleXdvcmQ6IFVzZWQrVHJ1Y2tdICBMb2NfIiwiRU5HTElTSCI6IkxlYWQgRnJvbSBwYWxsYWRpbm9hdXRvZ3JvdXAuY29tIChEMkMgTWVkaWEpICAtIExlYWQ6IFJlcXVlc3QgZm9yIGNvbnRhY3QgW0ZhY2Vib29rIC0gVXNlZCBbIEtleXdvcmQ6IFVzZWQrVHJ1Y2tdICBMb2NfcCJ9LCJBREZwYWxsYWRpbm9hdXRvZ3JvdXAuY29tXyhEMkNfX01lZGlhKV8tIjp7IkZSRU5DSCI6IkRlbWFuZGUgZGUgcGFsbGFkaW5vYXV0b2dyb3VwLmNvbSAoRDJDICBNZWRpYSkgLSBMZWFkOiBUcmFkZS1pbiByZXF1ZXN0IFtHb29nbGUgLSBUcmFkZSAgIExvY19waHlzaWNhbD05MDAxMTE4XSIsIkVOR0xJU0giOiJMZWFkIEZyb20gcGFsbGFkaW5vYXV0b2dyb3VwLmNvbSAoRDJDICBNZWRpYSkgLSBMZWFkOiBUcmFkZS1pbiByZXF1ZXN0IFtHb29nbGUgLSBUcmFkZSAgIExvY19waHlzaWNhbD05MDAxMTE4XSJ9LCJBREZwYWxsYWRpbm9hdXRvZ3JvdXAuY29tX18oRDJDX01lZGlhKV8tIjp7IkZSRU5DSCI6IkRlbWFuZGUgZGUgcGFsbGFkaW5vYXV0b2dyb3VwLmNvbSAgKEQyQyBNZWRpYSkgLSBMZWFkOiBUcmFkZS1pbiByZXF1ZXN0IFtHb29nbGUgLSBUcmFkZSAgIExvY19waHlzaWNhbD05MDAxMTMzXSIsIkVOR0xJU0giOiJMZWFkIEZyb20gcGFsbGFkaW5vYXV0b2dyb3VwLmNvbSAgKEQyQyBNZWRpYSkgLSBMZWFkOiBUcmFkZS1pbiByZXF1ZXN0IFtHb29nbGUgLSBUcmFkZSAgIExvY19waHlzaWNhbD05MDAxMTMzXSJ9LCJBREZwYWxsYWRpbm9zdWJhcnUuY2FfKHBhcl9EMkNfTWVkaWFfLV9PIjp7IkZSRU5DSCI6IkRlbWFuZGUgZGUgcGFsbGFkaW5vc3ViYXJ1LmNhIChwYXIgRDJDIE1lZGlhIC0gT3JnYW5pYykgLSBEMkMgTWVkaWEgLSBMZWFkOiBQREYgYnJvY2h1cmUgcmVxdWVzdCBbT3JnYW5pY10iLCJFTkdMSVNIIjoiTGVhZCBGcm9tIHBhbGxhZGlub3N1YmFydS5jYSAocGFyIEQyQyBNZWRpYSAtIE9yZ2FuaWMpIC0gRDJDIE1lZGlhIC0gTGVhZDogUERGIGJyb2NodXJlIHJlcXVlc3QgW09yZ2FuaWNdIn0sIkFERlNjYXJib3JvdWdoX1Rvd25fQ2VudHJlXy1fRVZfVG91cl8tX0QiOnsiRlJFTkNIIjoiRGVtYW5kZSBkZSBTY2FyYm9yb3VnaCBUb3duIENlbnRyZSAtIEVWIFRvdXIgLSBEcml2ZWZlc3QgKyBLaWEgU2lnbiBVcCBXYXJtIExlYWQ6IENvbnRhY3QgRGVhbGVyIiwiRU5HTElTSCI6IkxlYWQgRnJvbSBTY2FyYm9yb3VnaCBUb3duIENlbnRyZSAtIEVWIFRvdXIgLSBEcml2ZWZlc3QgKyBLaWEgU2lnbiBVcCBXYXJtIExlYWQ6IENvbnRhY3QgRGVhbGVyIn0sIkFERlNoZXJ3YXlfR2FyZGVuc18tX0VWX1RvdXJfLV9Ecml2ZWZlc3QiOnsiRlJFTkNIIjoiRGVtYW5kZSBkZSBTaGVyd2F5IEdhcmRlbnMgLSBFViBUb3VyIC0gRHJpdmVmZXN0IFNpZ24gVXAgV2FybSBMZWFkOiBDb250YWN0IERlYWxlciIsIkVOR0xJU0giOiJMZWFkIEZyb20gU2hlcndheSBHYXJkZW5zIC0gRVYgVG91ciAtIERyaXZlZmVzdCBTaWduIFVwIFdhcm0gTGVhZDogQ29udGFjdCBEZWFsZXIifSwiQURGU3F1YXJlX09uZV8tX0VWX1RvdXJfLV9Ecml2ZWZlc3RfK19LaSI6eyJGUkVOQ0giOiJEZW1hbmRlIGRlIFNxdWFyZSBPbmUgLSBFViBUb3VyIC0gRHJpdmVmZXN0ICsgS2lhIFNpZ24gVXAgV2FybSBMZWFkOiBDb250YWN0IERlYWxlciIsIkVOR0xJU0giOiJMZWFkIEZyb20gU3F1YXJlIE9uZSAtIEVWIFRvdXIgLSBEcml2ZWZlc3QgKyBLaWEgU2lnbiBVcCBXYXJtIExlYWQ6IENvbnRhY3QgRGVhbGVyIn0sIkFERlNxdWFyZV9PbmVfLV9FVl9Ub3VyXy1fS2lhX1NpZ25fVXBfSG8iOnsiRlJFTkNIIjoiRGVtYW5kZSBkZSBTcXVhcmUgT25lIC0gRVYgVG91ciAtIEtpYSBTaWduIFVwIEhvdCBMZWFkOiBDb250YWN0IERlYWxlciIsIkVOR0xJU0giOiJMZWFkIEZyb20gU3F1YXJlIE9uZSAtIEVWIFRvdXIgLSBLaWEgU2lnbiBVcCBIb3QgTGVhZDogQ29udGFjdCBEZWFsZXIifSwiQURGVXBwZXJfQ2FuYWRhX01hbGxfLV9FVl9Ub3VyXy1fRHJpdmVmZSI6eyJGUkVOQ0giOiJEZW1hbmRlIGRlIFVwcGVyIENhbmFkYSBNYWxsIC0gRVYgVG91ciAtIERyaXZlZmVzdCBTaWduIFVwIFdhcm0gTGVhZDogQ29udGFjdCBEZWFsZXIiLCJFTkdMSVNIIjoiTGVhZCBGcm9tIFVwcGVyIENhbmFkYSBNYWxsIC0gRVYgVG91ciAtIERyaXZlZmVzdCBTaWduIFVwIFdhcm0gTGVhZDogQ29udGFjdCBEZWFsZXIifSwiQUlDaGF0Ym90TGVhZCI6eyJGUkVOQ0giOiJMZWFkIDogQ2hhdEJvdCBJQSIsIkVOR0xJU0giOiJMZWFkOiBDaGF0Qm90IEFJIn0sIkF2YWlsYWJpbGl0eVVzZWQiOnsiRlJFTkNIIjoiTGVhZDogRGlzcG9uaWJpbGl0ZSBkJ3VuIHZlaGljdWxlIiwiRU5HTElTSCI6IkxlYWQ6IFZlaGljbGUgQXZhaWxhYmlsaXR5In0sIkJhbm5lckZvcm0iOnsiRlJFTkNIIjoiTGVhZDogRGVtYW5kZSBkZSBmb3JtIGJhbm5lciIsIkVOR0xJU0giOiJMZWFkOiBCYW5uZXIgRm9ybSBSZXF1ZXN0In0sIkJlc3RQcmljZVJlcXVlc3ROZXciOnsiRlJFTkNIIjoiTGVhZCA6IERlbWFuZGUgZGUgIG1laWxsZXVyIHByaXggKHZlaGljdWxlIG5ldWYpIiwiRU5HTElTSCI6IkxlYWQ6IFJlcXVlc3QgZm9yIGEgYmVzdCBwcmljZSAobmV3IHZlaGljbGUpIn0sIkJvZHlTaG9wIjp7IkZSRU5DSCI6IkxlYWQgOiBEZW1hbmRlIGRlIHJlbmRlei12b3VzIGVuIGNhcm9zc2VyaWUiLCJFTkdMSVNIIjoiTGVhZDogVmVoaWNsZSBib2R5IHNob3AgYXBwb2ludG1lbnQgcmVxdWVzdCJ9LCJCcm9jaHVyZXMiOnsiRlJFTkNIIjoiTGVhZCA6IERlbWFuZGUgZGUgYnJvY2h1cmUiLCJFTkdMSVNIIjoiTGVhZCA6IEJyb2NodXJlIHJlcXVlc3QifSwiQnJvY2h1cmVzUmVxdWVzdCI6eyJGUkVOQ0giOiJMZWFkIDogRGVtYW5kZSBkZSBicm9jaHVyZSIsIkVOR0xJU0giOiJMZWFkIDogQnJvY2h1cmUgcmVxdWVzdCJ9LCJCdWlsZEFuZFByaWNlX1NhdmUiOnsiRlJFTkNIIjoiTGVhZDogQ29uZmlndXJhdGlvbiBkJ3VuIHZlaGljdWxlIG5ldWYiLCJFTkdMSVNIIjoiTGVhZDogTmV3IFZlaGljbGUgQ29uZmlndXJhdGlvbiAoQnVpbGQgJiBQcmljZSkifSwiQnVpbGRBbmRQcmljZV9TdG9jayI6eyJGUkVOQ0giOiJMZWFkOiBEaXNwb25pYmlsaXRlIGQndW4gdmVoaWN1bGUiLCJFTkdMSVNIIjoiTGVhZDogVmVoaWNsZSBBdmFpbGFiaWxpdHkifSwiQ2FycHJvb2ZNYWlsIjp7IkZSRU5DSCI6IkxlYWQgOiBEZW1hbmRlIGRlIENhckZheCIsIkVOR0xJU0giOiJMZWFkOiBDYXJGYXggcmVxdWVzdCJ9LCJDb250YWN0UmVxdWVzdCI6eyJGUkVOQ0giOiJMZWFkIDogRGVtYW5kZSBkZSBjb250YWN0IiwiRU5HTElTSCI6IkxlYWQ6IFJlcXVlc3QgZm9yIGNvbnRhY3QifSwiQ29udGFjdFVzUmVxdWVzdCI6eyJGUkVOQ0giOiJMZWFkIDogRGVtYW5kZSBkZSBjb250YWN0IiwiRU5HTElTSCI6IkxlYWQ6IFJlcXVlc3QgZm9yIGNvbnRhY3QifSwiQ29udGFjdFZpc2l0UmVxdWVzdCI6eyJGUkVOQ0giOiJMZWFkIDogRGVtYW5kZSBkZSBjb250YWN0IFZlbnRlIiwiRU5HTElTSCI6IkxlYWQ6IFJlcXVlc3QgZm9yIGNvbnRhY3QgU2FsZXMifSwiQ29udGFjdFZpc2l0UmVxdWVzdE5ldyI6eyJGUkVOQ0giOiJMZWFkIDogRGVtYW5kZSBkZSBjb250YWN0IFZlbnRlIiwiRU5HTElTSCI6IkxlYWQ6IFJlcXVlc3QgZm9yIGNvbnRhY3QgU2FsZXMifSwiQ3JlZGl0Qm9vc3RNdWx0aSI6eyJGUkVOQ0giOiJMZWFkOiBEZW1hbmRlIGRlIHByZXF1YWxpZmljYXRpb24gZGUgY3JlZGl0IiwiRU5HTElTSCI6IkxlYWQ6IFJlcXVlc3QgZm9yIENyZWRpdCBQcmUtUXVhbGlmaWNhdGlvbiJ9LCJDcmVkaXRNdWx0aXN0ZXBSZXF1ZXN0Ijp7IkZSRU5DSCI6IkxlYWQgOiBEZW1hbmRlIGRlIGZpbmFuY2VtZW50IChQbHVzaWV1cnMgZXRhcGVzKSIsIkVOR0xJU0giOiJMZWFkOiBSZXF1ZXN0IGZvciBmaW5hbmNpbmcgKE11bHRpc3RlcCkifSwiQ3JlZGl0TXVsdGlzdGVwUmVxdWVzdDJuZENoYW5jZSI6eyJGUkVOQ0giOiJMZWFkIDogRGVtYW5kZSBkZSBmaW5hbmNlbWVudCAoUGx1c2lldXJzIGV0YXBlcyAyZSBjaGFuY2UpIiwiRU5HTElTSCI6IkxlYWQ6IFJlcXVlc3QgZm9yIGZpbmFuY2luZyAoTXVsaXN0ZXAgMm5kIGNoYW5jZSkifSwiQ3JlZGl0TXVsdGlzdGVwUmVxdWVzdEluc3RhbnQiOnsiRlJFTkNIIjoiTGVhZDogQXBwcm9iYXRpb24gZGUgY3JlZGl0IGluc3RhbnRhbmVlIiwiRU5HTElTSCI6IkxlYWQ6IEluc3RhbnQgQ3JlZGl0IEFwcHJvdmFsIn0sIkNyZWRpdFJlcXVlc3QiOnsiRlJFTkNIIjoiTGVhZCA6IERlbWFuZGUgZGUgZmluYW5jZW1lbnQiLCJFTkdMSVNIIjoiTGVhZDogUmVxdWVzdCBmb3IgZmluYW5jaW5nIn0sIkNyZWRpdFJlcXVlc3RNb2JpbGUiOnsiRlJFTkNIIjoiTGVhZCA6IERlbWFuZGUgZGUgZmluYW5jZW1lbnQiLCJFTkdMSVNIIjoiTGVhZDogUmVxdWVzdCBmb3IgZmluYW5jaW5nIn0sIkNyZWRpdFJlcXVlc3RNb2JpbGVGdWxsIjp7IkZSRU5DSCI6IkxlYWQ6IFJlcXVlc3QgZm9yIGZpbmFuY2luZyIsIkVOR0xJU0giOiJMZWFkOiBSZXF1ZXN0IGZvciBmaW5hbmNpbmcifSwiQ3JlZGl0UmVxdWVzdF9TaG9ydCI6eyJGUkVOQ0giOiJMZWFkIDogRGVtYW5kZSBkZSBmaW5hbmNlbWVudCAodmVyc2lvbiBjb3VydGUpIiwiRU5HTElTSCI6IkxlYWQgOiBDcmVkaXQgYXBwbGljYXRpb24gKHNob3J0IHZlcnNpb24pIn0sIkRlYWxlckFwcG9pbnRtZW50Ijp7IkZSRU5DSCI6IkxlYWQgOiBEZW1hbmRlIGRlIHJlbmRlei12b3VzIiwiRU5HTElTSCI6IkxlYWQ6IEFwcG9pbnRtZW50IHJlcXVlc3QifSwiRGlzY292ZXJPZmZlciI6eyJGUkVOQ0giOiJMZWFkIDogVm9pciBsJ29mZnJlIGNvdXBvbiBTUlAiLCJFTkdMSVNIIjoiTGVhZDogU2VlIE9mZmVyIENvdXBvbiBpbiBTUlAifSwiRXN0aGV0aWNSZXF1ZXN0Ijp7IkZSRU5DSCI6IkxlYWQ6IERlbWFuZGUgZGUgcmVuZGV6LXZvdXMgYSBsJ2VzdGhldHF1ZSBldCBsYXZlLWF1dG8iLCJFTkdMSVNIIjoiTGVhZDogVmVoaWNsZSBlc3RoZXRpYyBhbmQgY2FyIHdhc2ggYXBwb2ludG1lbnQgcmVxdWVzdCJ9LCJmYWNlYm9va0Nvbm5lY3QiOnsiRlJFTkNIIjoiTGVhZDogUmFiYWlzIEZhY2Vib29rIiwiRU5HTElTSCI6IkxlYWQ6IEZhY2Vib29rIFJlYmF0ZSJ9LCJGaW5kVmVoaWNsZSI6eyJGUkVOQ0giOiJMZWFkIDogRGVtYW5kZSBkZSByZWNoZXJjaGUgZGUgdmVoaWN1bGUiLCJFTkdMSVNIIjoiTGVhZDogUmVxdWVzdCB0byBmaW5kIGEgcHJlLW93bmVkIHZlaGljbGUifSwiaGVhZGVyU2VydmljZSI6eyJGUkVOQ0giOiJMZWFkIDogRGVtYW5kZSBkZSByZW5kZXotdm91cyBhdSBzZXJ2aWNlIEV4cHJlc3MiLCJFTkdMSVNIIjoiTGVhZDogU2VydmljZSBhcHBvaW50bWVudCByZXF1ZXN0IEV4cHJlc3MifSwiTWFrZU9mZmVyIjp7IkZSRU5DSCI6IkxlYWQgOiBPZmZyZSBkJ2FjaGF0IHN1ciB1biB2ZWhpY3VsZSIsIkVOR0xJU0giOiJMZWFkOiBPZmZlciBvbiBhIHZlaGljbGUifSwiTWFrZU9mZmVyTmV3Ijp7IkZSRU5DSCI6IkxlYWQgOiBPZmZyZSBkJ2FjaGF0IHN1ciB1biB2ZWhpY3VsZSIsIkVOR0xJU0giOiJMZWFkOiBPZmZlciBvbiBhIHZlaGljbGUifSwibWVudVNlcnZpY2UiOnsiRlJFTkNIIjoiTGVhZCA6IERlbWFuZGUgZGUgcmVuZGV6LXZvdXMgYXUgc2VydmljZSBFeHByZXNzIiwiRU5HTElTSCI6IkxlYWQ6IFNlcnZpY2UgYXBwb2ludG1lbnQgcmVxdWVzdCBFeHByZXNzIn0sIk1vbnRobHlQYXltZW50cyI6eyJGUkVOQ0giOiJEZW1hbmRlIGRlIG1lbnN1YWxpdGVzIiwiRU5HTElTSCI6IlJlcXVlc3QgZm9yIG1vbnRobHkgcGF5bWVudHMifSwiTW9udGhseVBheW1lbnRzX05FVyI6eyJGUkVOQ0giOiJEZW1hbmRlIGRlIG1lbnN1YWxpdGVzIiwiRU5HTElTSCI6IlJlcXVlc3QgZm9yIG1vbnRobHkgcGF5bWVudHMifSwiTW9udGhseVBheW1lbnRzX1NNUyI6eyJGUkVOQ0giOiJEZW1hbmRlIGRlIG1lbnN1YWxpdGVzIC0gU01TIiwiRU5HTElTSCI6IlJlcXVlc3QgZm9yIG1vbnRobHkgcGF5bWVudHMgLSBTTVMifSwiTW9udGhseVBheW1lbnRzX1NNU19ORVciOnsiRlJFTkNIIjoiRGVtYW5kZSBkZSBtZW5zdWFsaXRlcyAtIFNNUyIsIkVOR0xJU0giOiJSZXF1ZXN0IGZvciBtb250aGx5IHBheW1lbnRzIC0gU01TIn0sIlBhcnRzUmVxdWVzdCI6eyJGUkVOQ0giOiJMZWFkIDogRGVtYW5kZSBkZSBjb21tYW5kZSBwaSZlZ3JhdmU7Y2UiLCJFTkdMSVNIIjoiTGVhZDogUmVxdWVzdCBmb3IgdmVoaWNsZSBwYXJ0cyJ9LCJQaG90b1JlcXVlc3QiOnsiRlJFTkNIIjoiTGVhZDogRGVtYW5kZSBkZSBwaG90b3MiLCJFTkdMSVNIIjoiTGVhZDogUGhvdG8gcmVxdWVzdCJ9LCJQb3BVcEluc3RhbnRSZWJhdGUiOnsiRlJFTkNIIjoiTGVhZDogRGVtYW5kZSBkZSBSYWJhaXMgSW5zdGFudGFuZSIsIkVOR0xJU0giOiJMZWFkOiBJbnN0YW50IFJlYmF0ZSByZXF1ZXN0In0sIlBvcFVwSW5zdGFudFJlYmF0ZTMiOnsiRlJFTkNIIjoiTGVhZDogRGVtYW5kZSBkZSBSYWJhaXMgSW5zdGFudGFuZSIsIkVOR0xJU0giOiJMZWFkOiBJbnN0YW50IFJlYmF0ZSByZXF1ZXN0In0sIlBvcFVwSW5zdGFudFJlYmF0ZUFBIjp7IkZSRU5DSCI6IkxlYWQ6IERlbWFuZGUgZGUgUmFiYWlzIEluc3RhbnRhbmUiLCJFTkdMSVNIIjoiTGVhZDogSW5zdGFudCBSZWJhdGUgcmVxdWVzdCJ9LCJQcmljZVJlcXVlc3QiOnsiRlJFTkNIIjoiTGVhZCA6IERlbWFuZGUgZGUgcHJpeCIsIkVOR0xJU0giOiJMZWFkOiBQcmljZSByZXF1ZXN0In0sIlByaWNlUmVxdWVzdE5ldyI6eyJGUkVOQ0giOiJMZWFkIDogRGVtYW5kZSBkZSBwcml4IiwiRU5HTElTSCI6IkxlYWQ6IFByaWNlIHJlcXVlc3QifSwiUHJpY2VWZWhpY2xlIjp7IkZSRU5DSCI6IkxlYWQgOiBEZW1hbmRlIGRlIHZhbGV1ciBkJ2VjaGFuZ2UiLCJFTkdMSVNIIjoiTGVhZDogVHJhZGUtaW4gcmVxdWVzdCJ9LCJQcmljZVZlaGljbGVBY2N1dHJhZGUiOnsiRlJFTkNIIjoiTGVhZCA6IERlbWFuZGUgZGUgdmFsZXVyIGQnZWNoYW5nZSIsIkVOR0xJU0giOiJMZWFkIDogVHJhZGUtaW4gcmVxdWVzdCJ9LCJQcmljZVZlaGljbGVOZXciOnsiRlJFTkNIIjoiTGVhZCA6IERlbWFuZGUgZGUgdmFsZXVyIGQnZWNoYW5nZSIsIkVOR0xJU0giOiJMZWFkOiBUcmFkZS1pbiByZXF1ZXN0In0sIlF1aWNrRW1haWwiOnsiRlJFTkNIIjoiTGVhZCA6IERlbWFuZGUgRXhwcmVzcyIsIkVOR0xJU0giOiJMZWFkOiBFeHByZXNzIHJlcXVlc3QifSwiUXVpY2tFbWFpbE5ld0ludmVudG9yeSI6eyJGUkVOQ0giOiJMZWFkIDogRGVtYW5kZSBFeHByZXNzIChpbnZlbnRhaXJlIG5ldWYpIiwiRU5HTElTSCI6IkxlYWQ6IEV4cHJlc3MgcmVxdWVzdCAobmV3IGludmVudG9yeSkifSwiUmViYXRlQ291cG9uIjp7IkZSRU5DSCI6IkxlYWQgOiBEZW1hbmRlIGRlIGNvdXBvbiByYWJhaXMgKHZlaGljdWxlIGVuIGludmVudGFpcmUpIiwiRU5HTElTSCI6IkxlYWQ6IFJlcXVlc3QgZm9yIGEgcmViYXRlIGNvdXBvbiAoaW52ZW50b3J5IHZlaGljbGUpIn0sIlJlYmF0ZUNvdXBvbkludmVudG9yeSI6eyJGUkVOQ0giOiJMZWFkIDogRGVtYW5kZSBkZSBjb3Vwb24gcmFiYWlzIChpbnZlbnRhaXJlKSIsIkVOR0xJU0giOiJMZWFkOiBSZXF1ZXN0IGZvciBhIHJlYmF0ZSBjb3Vwb24gKGludmVudG9yeSkifSwiUmViYXRlQ291cG9uTmV3Ijp7IkZSRU5DSCI6IkxlYWQgOiBEZW1hbmRlIGRlIGNvdXBvbiByYWJhaXMiLCJFTkdMSVNIIjoiTGVhZDogUmVxdWVzdCBmb3IgYSByZWJhdGUgY291cG9uIn0sIlJlYmF0ZUNvdXBvbk5ld0JOUCI6eyJGUkVOQ0giOiJMZWFkIDogRGVtYW5kZSBkZSBjb3Vwb24gcmFiYWlzIChjb25maWd1cmF0ZXVyKSIsIkVOR0xJU0giOiJMZWFkOiBSZXF1ZXN0IGZvciBhIHJlYmF0ZSBjb3Vwb24gKGNvbmZpZ3VyYXRvcikifSwiUmViYXRlQ291cG9uTmV3SW52ZW50b3J5Ijp7IkZSRU5DSCI6IkxlYWQgOiBEZW1hbmRlIGRlIGNvdXBvbiByYWJhaXMgKGludmVudGFpcmUpIiwiRU5HTElTSCI6IkxlYWQ6IFJlcXVlc3QgZm9yIGEgcmViYXRlIGNvdXBvbiAoaW52ZW50b3J5KSJ9LCJSZWJhdGVDb3Vwb25OZXdTbGlkZXIiOnsiRlJFTkNIIjoiTGVhZCA6IERlbWFuZGUgZGUgY291cG9uIHJhYmFpcyAoY2Fyb3VzZWwpIiwiRU5HTElTSCI6IkxlYWQ6IFJlcXVlc3QgZm9yIGEgcmViYXRlIGNvdXBvbiAoc2xpZGVyKSJ9LCJSZWJhdGVDb3Vwb25Qcm9tbyI6eyJGUkVOQ0giOiJMZWFkOiBEZW1hbmRlIGRlIGNvdXBvbiByYWJhaXMgKGJvdXRvbiAnUHJvbW90aW9ucycpIiwiRU5HTElTSCI6IkxlYWQ6IFJlYmF0ZSBDb3Vwb24gcmVxdWVzdCAoJ1Byb21vdGlvbnMnIGJ1dHRvbikifSwiUmViYXRlQ291cG9uU2xpZGVyIjp7IkZSRU5DSCI6IkxlYWQgOiBEZW1hbmRlIGRlIGNvdXBvbiByYWJhaXMgKGNhcm91c2VsKSIsIkVOR0xJU0giOiJMZWFkOiBSZXF1ZXN0IGZvciBhIHJlYmF0ZSBjb3Vwb24gKHNsaWRlcikifSwiUmViYXRlQ291cG9uVXNlZFNsaWRlciI6eyJGUkVOQ0giOiJMZWFkIDogRGVtYW5kZSBkZSBjb3Vwb24gcmFiYWlzIChjYXJvdXNlbCkiLCJFTkdMSVNIIjoiTGVhZDogUmVxdWVzdCBmb3IgYSByZWJhdGUgY291cG9uIChzbGlkZXIpIn0sIlJlY2FsbHMiOnsiRlJFTkNIIjoiRGVtYW5kZSBkJ2luZm9ybWF0aW9uIHN1ciBsZXMgcmFwcGVscyIsIkVOR0xJU0giOiJSZWNhbGwgaW5mb3JtYXRpb24gcmVxdWVzdCJ9LCJSZXNlcnZlSXROb3ciOnsiRlJFTkNIIjoiTGVhZCA6IERlbWFuZGUgcG91ciByZXNlcnZlciB1biB2ZWhpY3VsZSIsIkVOR0xJU0giOiJMZWFkIDogUmVxdWVzdCB0byBwcmUtb3JkZXIgYSB2ZWhpY2xlIn0sIlJlc2VydmVJdE5vd05ldyI6eyJGUkVOQ0giOiJMZWFkIDogRGVtYW5kZSBwb3VyIHJlc2VydmVyIHVuIHZlaGljdWxlIiwiRU5HTElTSCI6IkxlYWQgOiBSZXF1ZXN0IHRvIHByZS1vcmRlciBhIHZlaGljbGUifSwiU2VsbENhciI6eyJGUkVOQ0giOiJMZWFkIDogRGVtYW5kZSBkZSBWZW5kZXogVmVoaWN1bGUiLCJFTkdMSVNIIjoiTGVhZCA6IFJlcXVlc3QgdG8gYnV5IHlvdXIgY2FyIn0sIlNlbGxDYXJfU2hvcnQiOnsiRlJFTkNIIjoiTGVhZCA6IERlbWFuZGUgZGUgVmVuZGV6LW5vdXMgdm90cmUgdmVoaWN1bGUgKHZlcnNpb24gY291cnRlKSIsIkVOR0xJU0giOiJMZWFkIDogUmVxdWVzdCB0byBidXkgeW91ciBjYXIgKFNob3J0IHZlcnNpb24pIn0sIlNlcnZpY2VSZXF1ZXN0Ijp7IkZSRU5DSCI6IkxlYWQgOiBEZW1hbmRlIGRlIHJlbmRlei12b3VzIGF1IHNlcnZpY2UiLCJFTkdMSVNIIjoiTGVhZDogU2VydmljZSBhcHBvaW50bWVudCByZXF1ZXN0In0sIlNNU0xlYWQiOnsiRlJFTkNIIjoiTGVhZDogRGVtYW5kZSBTTVMgKFRleHRvKSIsIkVOR0xJU0giOiJMZWFkOiBTTVMgcmVxdWVzdCJ9LCJTTVNMZWFkX29sZCI6eyJGUkVOQ0giOiJMZWFkIDogRGVtYW5kZSBTTVMgKFRleHRvKSIsIkVOR0xJU0giOiJMZWFkIDogU01TIHJlcXVlc3QifSwiU3BlY3NSZXF1ZXN0Ijp7IkZSRU5DSCI6IkxlYWQ6IERlbWFuZGUgZGUgZmljaGUgUERGIC0gVmVoaWN1bGUgZW4gaW52ZW50YWlyZSIsIkVOR0xJU0giOiJMZWFkOiBQREYgcmVxdWVzdCAtIFZlaGljbGUgaW4gaW52ZW50b3J5In0sIlNwZWNzUmVxdWVzdE5ldyI6eyJGUkVOQ0giOiJMZWFkOiBEZW1hbmRlIGRlIGJyb2NodXJlIFBERiIsIkVOR0xJU0giOiJMZWFkOiBQREYgYnJvY2h1cmUgcmVxdWVzdCJ9LCJTUlBDb250YWN0VXMiOnsiRlJFTkNIIjoiTGVhZCA6IERlbWFuZGUgZGUgY29udGFjdCBTUlAiLCJFTkdMSVNIIjoiTGVhZCA6IFJlcXVlc3QgZm9yIGNvbnRhY3QgU1JQIn0sIlRlc3REcml2ZSI6eyJGUkVOQ0giOiJMZWFkIDogRGVtYW5kZSBkJ2Vzc2FpIHJvdXRpZXIiLCJFTkdMSVNIIjoiTGVhZDogUmVxdWVzdCBmb3IgYSB0ZXN0IGRyaXZlIn0sIlRlc3REcml2ZU5ldyI6eyJGUkVOQ0giOiJMZWFkIDogRGVtYW5kZSBkJ2Vzc2FpIHJvdXRpZXIiLCJFTkdMSVNIIjoiTGVhZDogUmVxdWVzdCBmb3IgYSB0ZXN0IGRyaXZlIn0sIlRpcmVzUmVxdWVzdCI6eyJGUkVOQ0giOiJMZWFkIDogRGVtYW5kZSBkZSBwbmV1cyIsIkVOR0xJU0giOiJMZWFkOiBSZXF1ZXN0IGZvciB0aXJlcyJ9LCJQcm9tb01haWwiOnsiRlJFTkNIIjoiTGVhZCA6IERlbWFuZGUgZCdpbnZpdGF0aW9uIGEgbGEgdmVudGUgcHJpdmVlIiwiRU5HTElTSCI6IkxlYWQ6IFJlcXVlc3QgZm9yIGludml0YXRpb24gdG8gcHJpdmF0ZSBzYWxlIn0sIlNsaWRlV2lkZ2V0Rm9ybSI6eyJGUkVOQ0giOiJVSVRFWFQiLCJFTkdMSVNIIjoiVUlURVhUIn0sIkNvbXBhcmVGb3JtIjp7IkZSRU5DSCI6IlVJVEVYVCIsIkVOR0xJU0giOiJVSVRFWFQifSwiU2VhcmNoRmlsdGVycyI6eyJGUkVOQ0giOiJVSVRFWFQiLCJFTkdMSVNIIjoiVUlURVhUIn0sImhlYWRlckdsb2JhbFNlYXJjaCI6eyJGUkVOQ0giOiJVSVRFWFQiLCJFTkdMSVNIIjoiVUlURVhUIn19LCJzdWJfZ2E0IjoiWSJ9KTt9Y2F0Y2goZXp6MSl7aWYoY29uc29sZSYmY29uc29sZS5sb2cpCmNvbnNvbGUubG9nKGV6ejEpO30KdmFyIGlkZW50X2Y3M2ZhNmFiYmZiNGJhYjNmNDlkYWFmYjM4OTFlMjdmO3RyeXsoZnVuY3Rpb24odyxkLHQscix1KXt2YXIgZixuLGk7d1t1XT13W3VdfHxbXSxmPWZ1bmN0aW9uKCl7dmFyIG89e3RpOiI1MDc5MzkxIixlbmFibGVBdXRvU3BhVHJhY2tpbmc6dHJ1ZX07by5xPXdbdV0sd1t1XT1uZXcgVUVUKG8pLHdbdV0ucHVzaCgicGFnZUxvYWQiKX0sbj1kLmNyZWF0ZUVsZW1lbnQodCksbi5zcmM9cixuLmFzeW5jPTEsbi5zZXRBdHRyaWJ1dGUoImRhdGEtb3QtaWdub3JlIix0cnVlKSxuLnNldEF0dHJpYnV0ZSgidHlwZSIsInRleHQvamF2YXNjcmlwdCIpLG4ub25sb2FkPW4ub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKCl7dmFyIHM9dGhpcy5yZWFkeVN0YXRlO3MmJnMhPT0ibG9hZGVkIiYmcyE9PSJjb21wbGV0ZSJ8fChmKCksbi5vbmxvYWQ9bi5vbnJlYWR5c3RhdGVjaGFuZ2U9bnVsbCl9LGk9ZC5nZXRFbGVtZW50c0J5VGFnTmFtZSh0KVswXSxpLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKG4saSl9KSh3aW5kb3csZG9jdW1lbnQsInNjcmlwdCIsIi8vYmF0LmJpbmcuY29tL2JhdC5qcyIsInVldHEiKTt9Y2F0Y2goZXp6MSl7aWYoY29uc29sZSYmY29uc29sZS5sb2cpCmNvbnNvbGUubG9nKGV6ejEpO30KdmFyIGlkZW50XzE1ZGJlMWVjNGJiODE5ZjNiZTlhZjBiYjkxNzMxZDlmO3RyeXt2YXIgZGVwbG95bWVudFR5cGU9JycranNfZDJjX2dldF92YWwoIjJlamhiYzB5eW9nMHd3dyIpKycnO2lmKGRlcGxveW1lbnRUeXBlPT0nbGl2ZScpe2dhVHJhY2soJ190cmFja0V2ZW50JywnUGFnZXMgdnVlcycsJ1NlY3Rpb24tTmV1Zi1Nb2JpbGUnLCcnLDEpO2dhVHJhY2soJ2MuX3RyYWNrRXZlbnQnLCdNb2JpbGUgcGFnZXZpZXdzJywnU3RhbmRhcmQgTW9iaWxlJyx3aW5kb3cubG9jYXRpb24uaHJlZiwnMScpO31lbHNlIGlmKGRlcGxveW1lbnRUeXBlPT0nc3RhZ2luZycpe2dhVHJhY2soJ2IuX3RyYWNrRXZlbnQnLCdNb2JpbGUgcGFnZXZpZXdzJywnU3RhbmRhcmQgTW9iaWxlJyx3aW5kb3cubG9jYXRpb24uaHJlZiwnMScpO319Y2F0Y2goZXp6MSl7aWYoY29uc29sZSYmY29uc29sZS5sb2cpCmNvbnNvbGUubG9nKGV6ejEpO30KdmFyIGlkZW50X2VmNzVhODRlMjA1ZjJmMTQzMGNhZjMyMGJlODAzMTk3O3RyeXtmdW5jdGlvbiBzaG93UGhvbmVQb3B1cCgpe2dhVHJhY2soJ190cmFja0V2ZW50JywnVGVsZXBob25lcycsJ1NpdGUtTW9iaWxlJywnJywxKTt2YXIgaHRtbD1QaG9uZXNUb1JlcGxhY2UucmVwbGFjZShhdG9iKCJQR1JwZGlCamJHRnpjejBuYldWdWRTYytQSFZzSUdOc1lYTnpQU0p6ZEdGamF5MXNZeUkrUEd4cFBnb0pQR0VnSUdoeVpXWTlJblJsYkRwN0pGVnpaV1JRU0U5T1JVWlBVazFCVkZSRlJIMGlJSFJoY21kbGREMGlYM05sYkdZaUlITjBlV3hsUFNKbWIyNTBMWE5wZW1VNklESXljSGc3SWlCa1lYUmhMV1JsY0dGeWRHMWxiblE5SWxOaGJHVnpJajRLQ1FrOGFTQmpiR0Z6Y3owaVptRWdabUV0Y0dodmJtVWlJSE4wZVd4bFBTSnRZWEpuYVc0NklETndlQ0F4TUhCNElEQWdNVFZ3ZURzaVBqd3ZhVDRLQ1FsV1pXNTBaWE1LQ1R3dllUNEtDUW84TDJ4cFBqeHNhVDRLQ1R4aElDQm9jbVZtUFNKMFpXdzZNVGcxTlRRM05ETXpNek1pSUhSaGNtZGxkRDBpWDNObGJHWWlJSE4wZVd4bFBTSm1iMjUwTFhOcGVtVTZJREl5Y0hnN0lpQmtZWFJoTFdSbGNHRnlkRzFsYm5ROUlsTmxjblpwWTJVaVBnb0pDVHhwSUdOc1lYTnpQU0ptWVNCbVlTMXdhRzl1WlNJZ2MzUjViR1U5SW0xaGNtZHBiam9nTTNCNElERXdjSGdnTUNBeE5YQjRPeUkrUEM5cFBnb0pDVk5sY25acFkyVUtDVHd2WVQ0S0NRbzhMMnhwUGp3dmRXdytQQzlrYVhZKyIpKTtpZigkKGh0bWwpLmZpbmQoJ2EnKS5sZW5ndGg9PTEpeyQoJyNwaG9uZU51bWJlckRpdicpLmh0bWwoaHRtbCkuZmluZCgnYScpWzBdLmNsaWNrKCk7cmV0dXJuO30KJCgnI3Bob25lTnVtYmVyRGl2JykuaHRtbChodG1sKS5yZXZlYWwoe2FuaW1hdGlvbjonZmFkZUFuZFBvcCcsYW5pbWF0aW9uc3BlZWQ6MzAwLGNsb3Nlb25iYWNrZ3JvdW5kY2xpY2s6dHJ1ZSxkaXNtaXNzbW9kYWxjbGFzczonY2xvc2UtcmV2ZWFsLW1vZGFsJ30pO30KZnVuY3Rpb24gY2hlY2tBdXRoKCl7Z2FwaS5hdXRoLmF1dGhvcml6ZSh7Y2xpZW50X2lkOmdhcGljbGllbnRJZCxzY29wZTpnYXBpc2NvcGVzLGltbWVkaWF0ZTpmYWxzZX0saGFuZGxlQXV0aFJlc3VsdCk7fQpmdW5jdGlvbiBoYW5kbGVBdXRoUmVzdWx0KGF1dGhSZXN1bHQpe2lmKGF1dGhSZXN1bHQmJiFhdXRoUmVzdWx0LmVycm9yKXtvcGVuR29vZ2xlTWFwKHRydWUpO31lbHNle29wZW5Hb29nbGVNYXAoZmFsc2UpO319CmZ1bmN0aW9uIG9wZW5Hb29nbGVNYXAoKXt2YXIgbWFwVG9Vc2U9IiIranNfZDJjX2dldF92YWwoIjE0MDRyYTA0Yndya280d2ciKSsiIjt2YXIgdXJsPSJodHRwOi8vbWFwcy4iK21hcFRvVXNlKyIuY29tLz9xPTM2MDAlMkMrYXZlbnVlK2RlK2xhK0dhcmUlMkMrTWFzY291Y2hlJTJDK1F1JTNGYmVjJTJDK0o3SyszQzEmej0xMyI7d2luZG93Lm9wZW4odXJsKTt9fWNhdGNoKGV6ejEpe2lmKGNvbnNvbGUmJmNvbnNvbGUubG9nKQpjb25zb2xlLmxvZyhlenoxKTt9CnZhciBpZGVudF80YWE4MjU3ZmM3Mjg5ZDVkOGY5ZTIzNjUwNGRmYTJjNzt0cnl7alF1ZXJ5KGZ1bmN0aW9uKCQpeyQoIiNUcmFkZUluQmFyUG9wdXBDb250YWluZXIiKS5wb3B1cGl6ZSh7Im9uQmVmb3JlT3BlbiI6ZnVuY3Rpb24oKXskKCcjdHJhZGVJbkJhclBvcHVwU3VibWl0JykucHJvcCgnZGlzYWJsZWQnLGZhbHNlKTskKCcjdHJhZGVJbkJhclBvcHVwU3VibWl0Jykuc2hvdygpO3RyYWRlaW5wb3B1cGQyYy5pbml0VHJhZGVJblN0ZXAxKCk7JCgnaW5wdXRbbmFtZT1zdGVwM2RvbmVdJykudmFsKDApO3RyYWRlaW5wb3B1cGQyYy5vbkJlZm9yZU9wZW4oKTt9LCJvbkJlZm9yZXN1Ym1pdCI6ZnVuY3Rpb24ocG9wdXApe3JldHVybiB0cmFkZWlucG9wdXBkMmMub25CZWZvcmVTdWJtaXQocG9wdXApO30sIm9uQWZ0ZXJzdWJtaXQiOmZ1bmN0aW9uKHBvcHVwKXt0cmFkZWlucG9wdXBkMmMub25BZnRlclN1Ym1pdChwb3B1cCk7Q29va2llcy5zZXQoJ3BvcHVwRm9ybUZpbGxlZCcsbnVsbCxudWxsLCcvJyk7Q29va2llcy5zZXQoJ3RyYWRlSW5Qb3B1cFNob3duJyxudWxsLG51bGwsJy8nKTtpZigkKCcjdHJhZGVJbkJhcicpLmxlbmd0aCl7JCgnI3RyYWRlSW5CYXInKS5oaWRlKCk7fQppZigkKCcjdHJhZGVpbkJhckZsb2F0JykubGVuZ3RoKXskKCcjdHJhZGVpbkJhckZsb2F0JykuaGlkZSgpO319LCJvbkJlZm9yZVZhbGlkYXRpb24iOmZ1bmN0aW9uKHBvcHVwKXtyZXR1cm4gdHJhZGVpbnBvcHVwZDJjLm9uQmVmb3JlVmFsaWRhdGlvbihwb3B1cCk7fSwib25CZWZvcmVDbG9zZSI6ZnVuY3Rpb24ocG9wdXApe0Nvb2tpZXMuZ2V0KCd0cmFkZUluUG9wdXBTaG93bicsbnVsbCxudWxsLCcvJyk7JCgnI2xlYWRTZW50JykucmVtb3ZlKCk7JCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gLnRyYWRlSW5CYXJEZWFsZXJTdGVwJykuaGlkZSgpO30sIm9uQmVmb3JlSW5pdGlhbGl6ZSI6ZnVuY3Rpb24ocG9wdXApe3BvcHVwLnNldHRpbmdzLmZvcm0uc2VuZFRvPXBvcHVwLnNldHRpbmdzLmZvcm0uc2VuZFRvO3BvcHVwLnNldHRpbmdzLmZvcm0uc2VuZFRvQURGPXBvcHVwLnNldHRpbmdzLmZvcm0uc2VuZFRvQURGO30sIm9uQWZ0ZXJJbml0aWFsaXplIjpmdW5jdGlvbihzZWxmKXt0cmFkZUluQmFySW5pdGlhbGl6ZSgpO3RyYWRlaW5wb3B1cGQyYy5pbml0KCk7d2luZG93LmxhdW5jaFRyYWRlSW5Qb3B1cD1mdW5jdGlvbihzb3VyY2Upe3ZhciBwPSQoIiNUcmFkZUluQmFyUG9wdXBDb250YWluZXIiKS5wb3B1cGl6ZSh7cG9wdXBFdmVudFNvdXJjZTpzb3VyY2V9KTtpZihzb3VyY2UhPSJhdXRvbWF0aWMiKXtwLnNldFRyaWdnZXIoImNsaWNrIik7fQpwLm9wZW4oKTtyZXR1cm4gZmFsc2U7fQppZih0eXBlb2YgcG9wdXBEZWZhdWx0T25BZnRlckluaXRpYWxpemUhPSJ1bmRlZmluZWQiKXt2YXIgcG9wdXBUeXBlPSJ1c2VkIjt2YXIgY3VycmVudFBhZ2U9IiIranNfZDJjX2dldF92YWwoIjE2ZDd2d3Q2NnBtb3dvMGsiKSsiIjt2YXIgdG1wPXBvcHVwRGVmYXVsdE9uQWZ0ZXJJbml0aWFsaXplKCJ1c2VkIiwiIitqc19kMmNfZ2V0X3ZhbCgiNmp5cDQ2NjR2Z3dzODB3IikrIiIsZmFsc2UsInRyYWRlSW5CYXJQb3B1cCIsIiIranNfZDJjX2dldF92YWwoIjE2ZDd2d3Q2NnBtb3dvMGsiKSsiIiwiVHJhZGVJbkJhclBvcHVwQ29udGFpbmVyIixmYWxzZSk7cmV0dXJuIHRtcDt9fSwib25CZWZvcmVTZW5kTWFpbCI6ZnVuY3Rpb24ocG9wdXApe2lmKCcnPT0nJyl7aWYoZW1haWxIYW5kbGVyLmdldERlcCgpPT0nTkVXJyl7ZW1haWxIYW5kbGVyLnNlbmRUbz0nYWY3OTQ1YzJmY2IzOGRlNDNhNDQ5Y2I4ZjAzN2RjMmJ8Mzk3MTM1OTk0MCc7ZW1haWxIYW5kbGVyLnNlbmRUb0FERkZvcm1hdD0nJztlbWFpbEhhbmRsZXIuc2VuZFRvQURGPScnO31lbHNle2VtYWlsSGFuZGxlci5zZW5kVG89JycranNfZDJjX2dldF92YWwoIjNwbTZ0dmdxcWVndzR3IikrJyc7ZW1haWxIYW5kbGVyLnNlbmRUb0FERkZvcm1hdD0nJytqc19kMmNfZ2V0X3ZhbCgicmQ1cDhzNGg2cjRzMGNrIikrJyc7ZW1haWxIYW5kbGVyLnNlbmRUb0FERj0nJytqc19kMmNfZ2V0X3ZhbCgicmQ1cDhzNGg2cjRzMGNrIikrJyc7fX0KaWYoZW1haWxIYW5kbGVyLmdldERlcCgpPT0nTkVXJyl7ZW1haWxIYW5kbGVyLm1haWxJRD0ncHJpY2V2ZWhpY2xlbmV3Jzt9ZWxzZXtlbWFpbEhhbmRsZXIubWFpbElEPSdwcmljZXZlaGljbGUnO319LCJvbkFmdGVyQ29uc2VudCI6ZnVuY3Rpb24ocG9wdXApeyQoJyN0cmFkZUluQmFyUG9wdXBTdWJtaXQnKS5wcm9wKCdkaXNhYmxlZCcsZmFsc2UpOyQoJyN0cmFkZUluQmFyUG9wdXBTdWJtaXQnKS5zaG93KCk7fSwiY29va2llRHVyYXRpb24iOjYwLCJjb29raWVOYW1lIjoidHJhZGVJblBvcHVwU2hvd24iLCJjb29raWVDcmVhdGUiOiJvblN1Ym1pdCIsImdvb2dsZVRyYWNraW5nIjp7ImlkU3VmZml4IjoiIiwibGFiZWwiOiIiLCJsYWJlbHNlY3Rpb24iOiIiLCJpc2V4cHJlc3MiOjAsImlzcHJvbW8iOjAsImlzaG9tZXBhZ2UiOjAsImlzbW9iaWxlIjowfSwiZm9ybSI6eyJlbWFpbGlkIjoiUHJpY2VWZWhpY2xlTmV3Iiwib2ZmZXJ0eXBlIjoidHJhZGVJbkJhclBvcHVwIiwibmFtZSI6bnVsbCwic2VuZFRvIjoiIitqc19kMmNfZ2V0X3ZhbCgiM3BtNnR2Z3FxZWd3NHciKSsiIiwic2VuZFRvQURGIjoiIitqc19kMmNfZ2V0X3ZhbCgicmQ1cDhzNGg2cjRzMGNrIikrIiIsIk9LQnV0dG9uQ2xhc3MiOiJ0cmFkZUluQmFyUG9wdXBTdWJtaXQiLCJDYW5jZWxCdXR0b25DbGFzcyI6ImNhbmNlbEJ0biIsInNob3dFbWFpbENvbmZpcm1hdGlvbiI6dHJ1ZSwiZnJvbUFBIjpmYWxzZSwiY29uZmlybWF0aW9uIjp7InRpdGxlIjpudWxsLCJib2R5IjpudWxsfX0sInN0YXRlIjpbXSwidmVoaWNsZVN0YXRlIjoidXNlZCIsImNsb3NlT25TdWJtaXQiOmZhbHNlLCJmaWxsZmxhZyI6ZmFsc2UsIm5vdHJhbnNmb3JtIjp0cnVlLCJuYW1lIjpmYWxzZSwiYW5pbWF0aW9uIjoiZmFkZUFuZFBvcCIsImFuaW1hdGlvblNwZWVkIjozMDAsImNsb3NlT25CYWNrZ3JvdW5kQ2xpY2siOmZhbHNlLCJkaXNtaXNzTW9kYWxDbGFzcyI6ImNsb3NlLXJldmVhbC1tb2RhbCIsImNsb3NlQnV0dG9uIjp0cnVlLCJieXBhc3NDb25zZW50IjpmYWxzZSwidGhyZXNob2xkIjpmYWxzZSwidGhyZXNob2xkVmFsdWUiOmZhbHNlLCJzY3JvbGx1cCI6ZmFsc2UsIm1haW5wb3B1cCI6ZmFsc2UsImNvdW50ZG93biI6MTc3NzE3NjAwMCwiY29uZmlybUZvcm0iOltdfSk7fSk7fWNhdGNoKGV6ejEpe2lmKGNvbnNvbGUmJmNvbnNvbGUubG9nKQpjb25zb2xlLmxvZyhlenoxKTt9CnZhciBpZGVudF9lMjVkNmNmYWIzOTI3ZDc4ZDllMmY1YTJlMzQ3NjAxNjt0cnl7bWFpbFNlbnRIYW5kbGVyPWdldE1haWxTZW50SGFuZGxlcignX1RyYWRlSW5CYXJQb3B1cENvbnRhaW5lcicpO31jYXRjaChlenoxKXtpZihjb25zb2xlJiZjb25zb2xlLmxvZykKY29uc29sZS5sb2coZXp6MSk7fQp2YXIgaWRlbnRfNGQyNWJhMDY0MTcxMzg3ODVhY2ZhNTAwNjViYmJhYTk7dHJ5e31jYXRjaChlenoxKXtpZihjb25zb2xlJiZjb25zb2xlLmxvZykKY29uc29sZS5sb2coZXp6MSk7fQp2YXIgaWRlbnRfM2M1MjVlZmQ2NjMzNjVjZDIxMDQ1ODgxZjFkMmQxOTA7dHJ5e3dpbmRvdy5fX2xjPXdpbmRvdy5fX2xjfHx7fTt3aW5kb3cuX19sYy5saWNlbnNlPScxMjU5MzQ5Nic7KGZ1bmN0aW9uKCl7dmFyIGxjPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpO2xjLnR5cGU9J3RleHQvamF2YXNjcmlwdCc7bGMuYXN5bmM9dHJ1ZTtsYy5zZXRBdHRyaWJ1dGUoJ2NsYXNzJywnb3B0YW5vbi1jYXRlZ29yeS1DMDAwMycpO2xjLnNldEF0dHJpYnV0ZSgndHlwZScsJ3RleHQvcGxhaW4nKTtsYy5zcmM9KCdodHRwczonPT1kb2N1bWVudC5sb2NhdGlvbi5wcm90b2NvbD8naHR0cHM6Ly8nOidodHRwOi8vJykrJ2Nkbi5saXZlY2hhdGluYy5jb20vdHJhY2tpbmcuanMnO3ZhciBzPWRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdzY3JpcHQnKVswXTtzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGxjLHMpO30pKCk7fWNhdGNoKGV6ejEpe2lmKGNvbnNvbGUmJmNvbnNvbGUubG9nKQpjb25zb2xlLmxvZyhlenoxKTt9CnZhciBpZGVudF9hZWU3YTJiMzMxNTM2OWUwZDY2ZTYyOTlkMzY0ZTEyZjt0cnl7d2luZG93LkQyQ0ZiQ29uc2VudD13aW5kb3cuRDJDRmJDb25zZW50fHx7X3N0YXRlOm51bGwsX3F1ZXVlOltdLF9mbHVzaDpmdW5jdGlvbigpe3ZhciBxPXRoaXMuX3F1ZXVlO3RoaXMuX3F1ZXVlPVtdO3EuZm9yRWFjaChmdW5jdGlvbihjYil7dHJ5e2NiKCk7fWNhdGNoKGUpe319KTt9LGdyYW50OmZ1bmN0aW9uKCl7dGhpcy5fc3RhdGU9J2dyYW50JztpZih0eXBlb2YgZmJxIT09J3VuZGVmaW5lZCcpe2ZicSgnY29uc2VudCcsJ2dyYW50Jyk7dGhpcy5fZmx1c2goKTt9fSxyZXZva2U6ZnVuY3Rpb24oKXt0aGlzLl9zdGF0ZT0ncmV2b2tlJztpZih0eXBlb2YgZmJxIT09J3VuZGVmaW5lZCcpe2ZicSgnY29uc2VudCcsJ3Jldm9rZScpO319LG9uR3JhbnRlZDpmdW5jdGlvbihjYil7aWYodHlwZW9mIGNiIT09J2Z1bmN0aW9uJyl7cmV0dXJuO31pZih0aGlzLl9zdGF0ZT09PSdncmFudCcmJnR5cGVvZiBmYnEhPT0ndW5kZWZpbmVkJyl7dHJ5e2NiKCk7fWNhdGNoKGUpe319ZWxzZXt0aGlzLl9xdWV1ZS5wdXNoKGNiKTt9fSxzeW5jVG9GYnE6ZnVuY3Rpb24oKXtpZih0aGlzLl9zdGF0ZSYmdHlwZW9mIGZicSE9PSd1bmRlZmluZWQnKXtmYnEoJ2NvbnNlbnQnLHRoaXMuX3N0YXRlKTtpZih0aGlzLl9zdGF0ZT09PSdncmFudCcpe3RoaXMuX2ZsdXNoKCk7fX19fTshZnVuY3Rpb24oZixiLGUsdixuLHQscyl7aWYoZi5mYnEpcmV0dXJuO249Zi5mYnE9ZnVuY3Rpb24oKXtuLmNhbGxNZXRob2Q\/bi5jYWxsTWV0aG9kLmFwcGx5KG4sYXJndW1lbnRzKTpuLnF1ZXVlLnB1c2goYXJndW1lbnRzKX07aWYoIWYuX2ZicSlmLl9mYnE9bjtuLnB1c2g9bjtuLmxvYWRlZD0hMDtuLnZlcnNpb249JzIuMCc7bi5xdWV1ZT1bXTt0PWIuY3JlYXRlRWxlbWVudChlKTt0LmFzeW5jPSEwO3Quc2V0QXR0cmlidXRlKCdjbGFzcycsJ29wdGFub24tY2F0ZWdvcnktQzAwMDItQzAwMDMtQzAwMDQtQzAwMDUnKTt0LnNldEF0dHJpYnV0ZSgndHlwZScsJ3RleHQvcGxhaW4nKTt0LnNyYz12O3Quc2V0QXR0cmlidXRlKCdjbGFzcycsJ29wdGFub24tY2F0ZWdvcnktQzAwMDItQzAwMDMtQzAwMDQtQzAwMDUnKTt0LnNldEF0dHJpYnV0ZSgndHlwZScsJ3RleHQvcGxhaW4nKTtzPWIuZ2V0RWxlbWVudHNCeVRhZ05hbWUoZSlbMF07cy5wYXJlbnROb2RlLmluc2VydEJlZm9yZSh0LHMpfSh3aW5kb3csZG9jdW1lbnQsJ3NjcmlwdCcsJ2h0dHBzOi8vY29ubmVjdC5mYWNlYm9vay5uZXQvZW5fVVMvZmJldmVudHMuanMnKTtmYnEoJ2luaXQnLCcxMDYxNjcwOTgzODg5MjY1Jyk7d2luZG93LkQyQ0ZiQ29uc2VudC5zeW5jVG9GYnEoKTt3aW5kb3cuRDJDRmJDb25zZW50Lm9uR3JhbnRlZChmdW5jdGlvbigpe2ZicSgndHJhY2snLCdQYWdlVmlldycpO30pO31jYXRjaChlenoxKXtpZihjb25zb2xlJiZjb25zb2xlLmxvZykKY29uc29sZS5sb2coZXp6MSk7fQp2YXIgaWRlbnRfNzMzNWEyZDQyYmM4OWY0MWFhYmM3OGM5NjhjYWFjNTU7dHJ5e3ZhciBlc2ZEZWxheT0xMDtmdW5jdGlvbiBlc2NhcGVGcmFtZSgpe2lmKChkb2N1bWVudC5sb2NhdGlvbisnJykuaW5kZXhPZignbmZyPTEnKT09LTEpcmV0dXJuOyQoJ2EnKS5ub3QoJ1t0YXJnZXRdJykuZWFjaChmdW5jdGlvbigpe3ZhciBlbD0kKHRoaXMpO3ZhciB0YXJnZXQ9ZWwuYXR0cigndGFyZ2V0Jyk7dmFyIGhyZWY9ZWwuYXR0cignaHJlZicpO2lmKHRhcmdldCYmdGFyZ2V0Lmxlbmd0aD4wKXtyZXR1cm47fQppZighaHJlZilyZXR1cm47dmFyIHByb3RvY29sPWhyZWYubWF0Y2goL14oW2EtejAtOV0rKTovKTtpZihwcm90b2NvbCE9bnVsbCYmIXByb3RvY29sWzFdLm1hdGNoKC9eaHR0cC8pKXtyZXR1cm47fQppZihocmVmWzBdPT09JyMnKXtyZXR1cm47fQplbC5hdHRyKCd0YXJnZXQnLCdfdG9wJyk7fSk7c2V0VGltZW91dChlc2NhcGVGcmFtZSwxMDAqZXNmRGVsYXkrKyk7fQpqUXVlcnkoZXNjYXBlRnJhbWUpO2Z1bmN0aW9uIHRvZ2dsZVN1Ym1lbnVzKG9iail7JChvYmopLmNsb3Nlc3QoJ2xpJykuZmluZCgnLnN1Ym1lbnVJdGVtQ29udGFpbmVyLCAuc3VibWVudUl0ZW1DaGlsZENvbnRhaW5lcicpLmZpcnN0KCkuc2xpZGVUb2dnbGUoJ3Nsb3cnKTtpZigkKG9iaikuaGFzQ2xhc3MoJ21lbnVDb2xscGFzZScpKXskKG9iaikucmVtb3ZlQ2xhc3MoJ21lbnVDb2xscGFzZScpO31lbHNleyQob2JqKS5hZGRDbGFzcygnbWVudUNvbGxwYXNlJyk7fQpyZXR1cm4gZmFsc2U7fQpmdW5jdGlvbiBnZXRQYXJhbWV0ZXJCeU5hbWUobmFtZSl7bmFtZT1uYW1lLnJlcGxhY2UoL1tcW10vLCJcWyIpLnJlcGxhY2UoL1tcXV0vLCJcXSIpO3ZhciByZWdleD1uZXcgUmVnRXhwKCJbXD8mXSIrbmFtZSsiPShbXiYjXSopIikscmVzdWx0cz1yZWdleC5leGVjKGxvY2F0aW9uLnNlYXJjaCk7cmV0dXJuIHJlc3VsdHM9PW51bGw\/IiI6ZGVjb2RlVVJJQ29tcG9uZW50KHJlc3VsdHNbMV0ucmVwbGFjZSgvXCsvZywiICIpKTt9CnZhciB1dG1fc291cmNlPWdldFBhcmFtZXRlckJ5TmFtZSgndXRtX3NvdXJjZScpO2pRdWVyeShmdW5jdGlvbigkKXskKCcubm90Q2xpY2thYmxlJykub24oJ2NsaWNrJyxmdW5jdGlvbihldmVudCl7ZXZlbnQucHJldmVudERlZmF1bHQoKTt0b2dnbGVTdWJtZW51cygkKCcubWVudUV4cGFuZCcsdGhpcykpO3JldHVybiBmYWxzZTt9KTskKCcubWVudUV4cGFuZCcpLm9uKCdjbGljaycsZnVuY3Rpb24oZXZlbnQpe2V2ZW50LnByZXZlbnREZWZhdWx0KCk7dG9nZ2xlU3VibWVudXMoJCgnLm1lbnVFeHBhbmQnLHRoaXMuY2xvc2VzdCgnLm1lbnUtaXRlbScpKSk7cmV0dXJuIGZhbHNlO30pO2lmKCQoJy51c2VkcGhvbmVmb3JtYXRlZCcpLmxlbmd0aD4wJiYkKCcjYWdlbnRwaG9uZScpLmxlbmd0aD4wJiYkKCcjYWdlbnRwaG9uZScpLnZhbCgpLmxlbmd0aD41KXskKCcudXNlZHBob25lZm9ybWF0ZWQnKS5hdHRyKCdocmVmJywndGVsOicrJCgnI2FnZW50cGhvbmUnKS52YWwoKSk7fQpzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7JCh3aW5kb3cpLm9uKCdvcmllbnRhdGlvbmNoYW5nZScsZnVuY3Rpb24oZXZlbnQpe2lmKHdpbmRvdy5vcmllbnRhdGlvbj09OTB8fHdpbmRvdy5vcmllbnRhdGlvbj09LTkwfHx3aW5kb3cub3JpZW50YXRpb249PTI3MCl7JCgnbWV0YVtuYW1lPSJ2aWV3cG9ydCJdJykuYXR0cignY29udGVudCcsJ2hlaWdodD1kZXZpY2Utd2lkdGgsd2lkdGg9ZGV2aWNlLWhlaWdodCxpbml0aWFsLXNjYWxlPTEsbWF4aW11bS1zY2FsZT0zJyk7JCh3aW5kb3cpLnRyaWdnZXIoJ3Jlc2l6ZScpO31lbHNleyQoJ21ldGFbbmFtZT0idmlld3BvcnQiXScpLmF0dHIoJ2NvbnRlbnQnLCdoZWlnaHQ9ZGV2aWNlLWhlaWdodCx3aWR0aD1kZXZpY2Utd2lkdGgsaW5pdGlhbC1zY2FsZT0xLG1heGltdW0tc2NhbGU9MycpOyQod2luZG93KS50cmlnZ2VyKCdyZXNpemUnKTt9fSkudHJpZ2dlcignb3JpZW50YXRpb25jaGFuZ2UnKTtpZih1dG1fc291cmNlIT0iIil7Q29va2llcy5zZXQoJ3V0bV9sYW5kaW5nX2Zvb3RlcicsbnVsbCxudWxsLCIvIik7fQppZihDb29raWVzLmdldCgidXRtX2xhbmRpbmdfZm9vdGVyIik9PW51bGwpe0Nvb2tpZXMuc2V0KCd1dG1fbGFuZGluZ19mb290ZXInLHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSxudWxsLCIvIik7fX0pO30sMTAwMDApO2Z1bmN0aW9uIHNob3dOb3JtYWxTaXRlKCl7dmFyIGRvbWFpbj0iIitqc19kMmNfZ2V0X3ZhbCgidTZ0aHJ3OW9sY2c4dzh3IikrIiI7Q29va2llcy5zZXQoJ1VzZUZ1bGxTaXRlJywnMScsbnVsbCwiLyIsZG9tYWluKTt3aW5kb3cubG9jYXRpb24uaHJlZj0nJytqc19kMmNfZ2V0X3ZhbCgiY291OWhtNDI5MWMwa29jIikrJyc7fX1jYXRjaChlenoxKXtpZihjb25zb2xlJiZjb25zb2xlLmxvZykKY29uc29sZS5sb2coZXp6MSk7fQp2YXIgaWRlbnRfMzE0Y2FhNWJmNTkwOTJjNmY3Y2Y2YTJmYzcyZTk1MTM7dHJ5e2lmKHR5cGVvZiBwYWdlIT09J3VuZGVmaW5lZCcmJnBhZ2U9PSJORVdDQVJERVRBSUxTIil7JChkb2N1bWVudCkub24oJ2NsaWNrJywnYScsZnVuY3Rpb24oKXt2YXIgb2JqPSQodGhpcyk7dmFyIGhyZWY9b2JqLmF0dHIoJ2hyZWYnKTt2YXIgdGV4dD1vYmoudGV4dCgpO2lmKHRleHQubGVuZ3RoPjAmJm9iai5maW5kKCdpbWcnKS5sZW5ndGg9PTAmJnR5cGVvZiBocmVmIT0ndW5kZWZpbmVkJyl7dmFyIHRpdGxlPSQoJy5icmFuZGVtYWlsW25hbWU9ImJyYW5kIl0nKS52YWwoKSsnLScrJCgnLm1vZGVsZW1haWxbbmFtZT0ibW9kZWwiXScpLnZhbCgpKyctJyskKCcueWVhcmVtYWlsJykudmFsKCk7aWYoaHJlZiE9IiMiJiZocmVmIT0iIiYmaHJlZi5pbmRleE9mKCJqYXZhc2NyaXB0Iik8MCYmaHJlZi5pbmRleE9mKCd7Jyk8MCl7dGl0bGU9aHJlZjt9CmdhVHJhY2soJ190cmFja0V2ZW50JywnTmV3LVZEUC1PdXRib3VuZC1jbGlja3MnLG9iai50ZXh0KCksdGl0bGUpO319KX19Y2F0Y2goZXp6MSl7aWYoY29uc29sZSYmY29uc29sZS5sb2cpCmNvbnNvbGUubG9nKGV6ejEpO30KdmFyIGlkZW50X2Y0ZTQ0MWFhZWM1ZjBhZWNhNDY4NTg4ZDIxYmYwYjkzO3RyeXtqUXVlcnkoZnVuY3Rpb24oJCl7JCgiI2QyY0Zvb3RlckNvb2tpZURlbGV0ZSIpLnBvcHVwaXplKHsiY29va2llRHVyYXRpb24iOjMwLCJjb29raWVOYW1lIjpudWxsLCJjb29raWVDcmVhdGUiOm51bGwsImdvb2dsZVRyYWNraW5nIjp7ImlkU3VmZml4IjoiIiwibGFiZWwiOiIiLCJsYWJlbHNlY3Rpb24iOiIiLCJpc2V4cHJlc3MiOjAsImlzcHJvbW8iOjAsImlzaG9tZXBhZ2UiOjAsImlzbW9iaWxlIjowfSwiZm9ybSI6eyJlbWFpbGlkIjpudWxsLCJvZmZlcnR5cGUiOm51bGwsIm5hbWUiOm51bGwsInNlbmRUbyI6bnVsbCwic2VuZFRvQURGIjpudWxsLCJPS0J1dHRvbkNsYXNzIjoic3VibWl0QnRuIiwiQ2FuY2VsQnV0dG9uQ2xhc3MiOiJjYW5jZWxCdG4iLCJzaG93RW1haWxDb25maXJtYXRpb24iOmZhbHNlLCJmcm9tQUEiOmZhbHNlLCJjb25maXJtYXRpb24iOnsidGl0bGUiOm51bGwsImJvZHkiOm51bGx9fSwic3RhdGUiOltdLCJ2ZWhpY2xlU3RhdGUiOiJ1c2VkIiwiY2xvc2VPblN1Ym1pdCI6dHJ1ZSwiZmlsbGZsYWciOmZhbHNlLCJub3RyYW5zZm9ybSI6dHJ1ZSwibmFtZSI6ZmFsc2UsImFuaW1hdGlvbiI6ImZhZGVBbmRQb3AiLCJhbmltYXRpb25TcGVlZCI6MzAwLCJjbG9zZU9uQmFja2dyb3VuZENsaWNrIjpmYWxzZSwiZGlzbWlzc01vZGFsQ2xhc3MiOiJjbG9zZS1yZXZlYWwtbW9kYWwiLCJjbG9zZUJ1dHRvbiI6dHJ1ZSwiYnlwYXNzQ29uc2VudCI6ZmFsc2UsInRocmVzaG9sZCI6ZmFsc2UsInRocmVzaG9sZFZhbHVlIjpmYWxzZSwic2Nyb2xsdXAiOmZhbHNlLCJtYWlucG9wdXAiOmZhbHNlLCJzaG93b25sb2FkIjpmYWxzZSwiY291bnRkb3duIjoxNzc3MTc2MDAwLCJjb25maXJtRm9ybSI6W3sibmFtZSI6ImxhYmVsIiwidmFsdWUiOiIiLCJjbGFzcyI6ImxhYmVsZW1haWwifSx7Im5hbWUiOiJzZWN0aW9uIiwidmFsdWUiOiIiLCJjbGFzcyI6ImxhYmVsc2VjdGlvbiJ9LHsibmFtZSI6ImJyYW5kIiwidmFsdWUiOiIiK2pzX2QyY19nZXRfdmFsKCIxZXJpdjkwMHBkYTg4d3c4IikrIiIsImNsYXNzIjoiYnJhbmRlbWFpbCJ9LHsibmFtZSI6Im1vZGVsIiwidmFsdWUiOiIiK2pzX2QyY19nZXRfdmFsKCIxMHBhN3YzcWVsZGNvc2siKSsiIiwiY2xhc3MiOiJtb2RlbGVtYWlsIn0seyJuYW1lIjoieWVhciIsInZhbHVlIjoiIitqc19kMmNfZ2V0X3ZhbCgicjgyemZreGEyZHdzczAwIikrIiIsImNsYXNzIjoieWVhcmVtYWlsIn0seyJuYW1lIjoiZ29vZ2xlaWQiLCJ2YWx1ZSI6IiJ9LHsibmFtZSI6Imdvb2dsZWlkZDJjbWVkaWEiLCJ2YWx1ZSI6IiJ9LHsibmFtZSI6ImJpbmdjb25pZCIsInZhbHVlIjoiIn0seyJuYW1lIjoiYmluZ2FjdGlvbmlkIiwidmFsdWUiOiIifSx7Im5hbWUiOiJiaW5nZG9tYWluaWQiLCJ2YWx1ZSI6IiJ9LHsibmFtZSI6ImFkcm9sbEFkdiIsInZhbHVlIjoiIn0seyJuYW1lIjoiYWRyb2xsUGl4IiwidmFsdWUiOiIifSx7Im5hbWUiOiJmYWNlYm9va0NvbklkIiwidmFsdWUiOiIifSx7Im5hbWUiOiJkb21haW4iLCJ2YWx1ZSI6ImFsYmlraWEuY29tIn0seyJuYW1lIjoicmVmZXJyZXIiLCJ2YWx1ZSI6IiIranNfZDJjX2dldF92YWwoImkzZ3NheGdzNWprOHdjayIpKyIifSx7Im5hbWUiOiJpc2V4cHJlc3MiLCJ2YWx1ZSI6IjAiLCJjbGFzcyI6ImlzZXhwcmVzcyJ9LHsibmFtZSI6ImlzcHJvbW8iLCJ2YWx1ZSI6IjAifSx7Im5hbWUiOiJpc2hvbWVwYWdlIiwidmFsdWUiOiIwIn0seyJuYW1lIjoidGV4dENhclNlY3Rpb25UeXBlIiwidmFsdWUiOiIiK2pzX2QyY19nZXRfdmFsKCJzbzd5dXFhajRkd2NjOHMiKSsiIn0seyJuYW1lIjoiZnJvbUFBIiwidmFsdWUiOiIifSx7Im5hbWUiOiJsYW5nIiwidmFsdWUiOiJGUkVOQ0gifV19KTt9KTt9Y2F0Y2goZXp6MSl7aWYoY29uc29sZSYmY29uc29sZS5sb2cpCmNvbnNvbGUubG9nKGV6ejEpO30KdmFyIGlkZW50XzcxM2E2YWIxYjg4NGFiODliMDQ1MzczYzA5YzU1OTAxO3RyeXtqUXVlcnkoZnVuY3Rpb24oJCl7aWYoJCgnI2dlbmVyaWNfZm9ybV9jb25maXJtJykubGVuZ3RoPDEpe3ZhciBGb3JtPSQoJzxmb3JtIGlkPSJnZW5lcmljX2Zvcm1fY29uZmlybSIgdGFyZ2V0PSJpZnJhbWVndHJhY2siIG1ldGhvZD0icG9zdCIgYWN0aW9uPSIvY29uZmlybWF0aW9uLmh0bWwiPjwvZm9ybT4nKTt2YXIgbWFrZVZhbD0iIitqc19kMmNfZ2V0X3ZhbCgiMWVyaXY5MDBwZGE4OHd3OCIpKyIiO3ZhciBtb2RlbFZhbD0iIitqc19kMmNfZ2V0X3ZhbCgiMTBwYTd2M3FlbGRjb3NrIikrIiI7dmFyIHllYXJWYWw9IiIranNfZDJjX2dldF92YWwoInI4Mnpma3hhMmR3c3MwMCIpKyIiO3ZhciByZWZlcmFsVmFsPSIiK2pzX2QyY19nZXRfdmFsKCJpM2dzYXhnczVqazh3Y2siKSsiIjt2YXIgc2VjdGlvblZhbD0nJytqc19kMmNfZ2V0X3ZhbCgic283eXVxYWo0ZHdjYzhzIikrJyc7dmFyIGZyb21BdXRvYXViYWluZT0kKCcjYXV0b2F1YmFpbmVfcG9wdXAnKS5sZW5ndGg+MCYmKCQoJyNhdXRvYXViYWluZV9wb3B1cCcpLnZhbCgpIT0nZmFsc2UnKTt2YXIgaW5wdXRzPShbeyJuYW1lIjoibGFiZWwiLCJ2YWx1ZSI6IiIsImNsYXNzIjoibGFiZWxlbWFpbCJ9LHsibmFtZSI6InNlY3Rpb24iLCJ2YWx1ZSI6IiIsImNsYXNzIjoibGFiZWxzZWN0aW9uIn0seyJuYW1lIjoiYnJhbmQiLCJ2YWx1ZSI6bWFrZVZhbCwiY2xhc3MiOiJicmFuZGVtYWlsIn0seyJuYW1lIjoibW9kZWwiLCJ2YWx1ZSI6bW9kZWxWYWwsImNsYXNzIjoibW9kZWxlbWFpbCJ9LHsibmFtZSI6InllYXIiLCJ2YWx1ZSI6eWVhclZhbCwiY2xhc3MiOiJ5ZWFyZW1haWwifSx7Im5hbWUiOiJnb29nbGVpZCIsInZhbHVlIjoiIn0seyJuYW1lIjoiZ29vZ2xlaWRkMmNtZWRpYSIsInZhbHVlIjoiIn0seyJuYW1lIjoiYmluZ2NvbmlkIiwidmFsdWUiOiIifSx7Im5hbWUiOiJiaW5nYWN0aW9uaWQiLCJ2YWx1ZSI6IiJ9LHsibmFtZSI6ImJpbmdkb21haW5pZCIsInZhbHVlIjoiIn0seyJuYW1lIjoiZ3RhZ19jb252ZXJzaW9uIiwidmFsdWUiOiJndGFnIn0seyJuYW1lIjoiYWRyb2xsQWR2IiwidmFsdWUiOiIifSx7Im5hbWUiOiJhZHJvbGxQaXgiLCJ2YWx1ZSI6IiJ9LHsibmFtZSI6ImZhY2Vib29rQ29uSWQiLCJ2YWx1ZSI6IiJ9LHsibmFtZSI6ImxlYWRfZGVwYXJ0bWVudCIsInZhbHVlIjoiIn0seyJuYW1lIjoibGVhZFR5cGUiLCJ2YWx1ZSI6IiJ9LHsibmFtZSI6InBhZ2VJRCIsInZhbHVlIjoiIn0seyJuYW1lIjoiY3VycmVudFVSTCIsInZhbHVlIjoiIn0seyJuYW1lIjoiZG9tYWluIiwidmFsdWUiOiJhbGJpa2lhLmNvbSJ9LHsibmFtZSI6InJlZmVycmVyIiwidmFsdWUiOnJlZmVyYWxWYWx9LHsibmFtZSI6ImlzZXhwcmVzcyIsInZhbHVlIjoiIiwiY2xhc3MiOiJpc2V4cHJlc3MifSx7Im5hbWUiOiJpc3Byb21vIiwidmFsdWUiOiIifSx7Im5hbWUiOiJpc2hvbWVwYWdlIiwidmFsdWUiOiIifSx7Im5hbWUiOiJ0ZXN0bW9kZSIsInZhbHVlIjoiMCIsImNsYXNzIjoidGVzdG1vZGUifSx7Im5hbWUiOiJ0ZXh0Q2FyU2VjdGlvblR5cGUiLCJ2YWx1ZSI6c2VjdGlvblZhbH0seyJuYW1lIjoibGFuZyIsInZhbHVlIjoiRlJFTkNIIn0seyJuYW1lIjoiYnV0dG9uUG9zaXRpb24iLCJ2YWx1ZSI6IiJ9LHsibmFtZSI6ImRlYWxlck5hbWUiLCJ2YWx1ZSI6IiJ9LHsibmFtZSI6ImlzRnVsbFdpZHRoIiwidmFsdWUiOiIifSx7Im5hbWUiOiJpc01vYmlsZU5ld1ZEUCIsInZhbHVlIjoiIn0seyJuYW1lIjoiZnJvbUF1dG9BdWJhaW5lIiwidmFsdWUiOjB9XSk7Zm9yKHZhciBpPTA7aTxpbnB1dHMubGVuZ3RoO2krKyl7JCgnPGlucHV0IHR5cGU9ImhpZGRlbiIgLz4nKS5hdHRyKGlucHV0c1tpXSkuYXBwZW5kVG8oRm9ybSk7fQpGb3JtLmFwcGVuZFRvKCdib2R5Jyk7Rm9ybS5vbignc3VibWl0JyxvbkNvbmZpcm1TdWJtaXQpO30KaWYoJCgnI2d0cmFja0ZyYW1lJykubGVuZ3RoPDEpeyQoJzxpZnJhbWU+PC9pZnJhbWU+JykuYXR0cih7d2lkdGg6MSxoZWlnaHQ6MSxmcmFtZUJvcmRlcjowLGlkOidndHJhY2tGcmFtZScsbmFtZTonaWZyYW1lZ3RyYWNrJyxzdHlsZTond2lkdGg6MXB4O2hlaWdodDoxcHg7Jyx0aXRsZTonZnJhbWUnfSkuYXBwZW5kVG8oJyNjb25maXJtX2Zvcm1zJyk7fX0pO31jYXRjaChlenoxKXtpZihjb25zb2xlJiZjb25zb2xlLmxvZykKY29uc29sZS5sb2coZXp6MSk7fQp2YXIgaWRlbnRfMWE0ZWZhNzAzOGJkM2RhYTc2NThiMzQ0M2NmNjM5ODE7dHJ5e2pRdWVyeShmdW5jdGlvbigkKXskKCIjc2NyYXRjaEFuZFNhdmVQb3B1cENvbnRhaW5lcl9uZXciKS5wb3B1cGl6ZSh7Im9uQWZ0ZXJJbml0aWFsaXplIjpmdW5jdGlvbihzZWxmKXtpZih0eXBlb2Ygc2NyYXRjaEFuZFNhdmUhPSd1bmRlZmluZWQnKXtzY3JhdGNoQW5kU2F2ZS5zY3JhdGNoUGFkSW1nPScvaW1hZ2VzL3BvcHVwcy9zdHlsZTMvc2NyYXRjaC5wbmcnO3NjcmF0Y2hBbmRTYXZlLnNjcmF0Y2hQYWRJbWdEaXNhYmxlZD0nL2ltYWdlcy9wb3B1cHMvc3R5bGUzL3NjcmF0Y2hfZGlzYWJsZWQucG5nJzt9CnJldHVybiBzY3JhdGNoU2F2ZU1vYmlsZS5vbkFmdGVySW5pdGlhbGl6ZShzZWxmLCJfbmV3IiwibmV3IiwiIitqc19kMmNfZ2V0X3ZhbCgiMTZkN3Z3dDY2cG1vd28wayIpKyIiLHt0b0FjdGl2ZToiIitqc19kMmNfZ2V0X3ZhbCgiNmp5cDQ2NjR2Z3dzODB3IikrIiIsbWFpblBvcHVwOnRydWUsc2hvd09uR2VuZXJhbFNSUDp0cnVlfSk7fSwib25CZWZvcmVWYWxpZGF0aW9uIjpmdW5jdGlvbigpe3NjcmF0Y2hTYXZlTW9iaWxlLm9uQmVmb3JlVmFsaWRhdGlvbigpO30sIm9uQmVmb3JlT3BlbiI6ZnVuY3Rpb24oKXtzY3JhdGNoU2F2ZU1vYmlsZS5vbkJlZm9yZU9wZW4oJ19uZXcnKTt9LCJvbkNsb3NlIjpmdW5jdGlvbihwb3B1cCxpbnZva2VyKXtzY3JhdGNoU2F2ZU1vYmlsZS5vbkNsb3NlKCdfbmV3JyxpbnZva2VyLCdmYWxzZScpO30sIm9uQmVmb3Jlc3VibWl0IjpmdW5jdGlvbigpe3NjcmF0Y2hTYXZlTW9iaWxlLm9uQmVmb3JlU3VibWl0KCk7fSwib25BZnRlcnN1Ym1pdCI6ZnVuY3Rpb24oKXtzY3JhdGNoU2F2ZU1vYmlsZS5vbkFmdGVyU3VibWl0KCdfbmV3Jyk7fSwib25CZWZvcmVTZW5kTWFpbCI6ZnVuY3Rpb24oKXtzY3JhdGNoU2F2ZU1vYmlsZS5vbkJlZm9yZVNlbmRNYWlsKCk7dmFyIHNlYXJjaFZlaGljbGU9JCgnaW5wdXRbbmFtZT0ic2VhcmNoZWR2ZWhpY2xlIl0nKS52YWwoKTt2YXIgbGFzdFZpZXdlZFZlaGljbGU9Q29va2llcy5nZXQoJ2xhc3R2aWV3ZWR2ZWhpY2xlJyk7aWYodHlwZW9mIHNlYXJjaFZlaGljbGUhPT0ndW5kZWZpbmVkJyl7c2VhcmNoVmVoaWNsZT1zZWFyY2hWZWhpY2xlLnRyaW0oKTt9CmlmKHR5cGVvZiBsYXN0Vmlld2VkVmVoaWNsZSE9PSd1bmRlZmluZWQnJiZsYXN0Vmlld2VkVmVoaWNsZSE9bnVsbCYmbGFzdFZpZXdlZFZlaGljbGUhPSIiKXtsYXN0Vmlld2VkVmVoaWNsZT1sYXN0Vmlld2VkVmVoaWNsZS5yZXBsYWNlKC9cfFx8XHwvZywnICcpLnRyaW0oKTt9CmlmKHNlYXJjaFZlaGljbGU9PWxhc3RWaWV3ZWRWZWhpY2xlKXtlbWFpbEhhbmRsZXIuc2V0TWFrZU1vZGVsWWVhckZyb21MYXN0Vmlld2VkKCk7fX0sImNvb2tpZUR1cmF0aW9uIjo2MCwiY29va2llTmFtZSI6InJlYmF0ZU5ld1Nob3duIiwiY29va2llQ3JlYXRlIjoib25PcGVuIiwiZmlsbGZsYWciOnRydWUsIm5hbWUiOiJzY3JhdGNoQW5kU2F2ZV9uZXciLCJhbmltYXRpb24iOmZhbHNlLCJhbmltYXRpb25TcGVlZCI6MzAwLCJjbG9zZU9uQmFja2dyb3VuZENsaWNrIjpmYWxzZSwiZGlzbWlzc01vZGFsQ2xhc3MiOiJjbG9zZS1yZXZlYWwtbW9kYWwiLCJjbG9zZUJ1dHRvbiI6dHJ1ZSwiZXJyb3JNc2ciOiJDZXJ0YWlucyBjaGFtcHMgb2JsaWdhdG9pcmVzIG4nb250IHBhcyAmZWFjdXRlO3QmZWFjdXRlOyByZW1wbGlzIiwibm90cmFuc2Zvcm0iOnRydWUsImNsb3NlT25TdWJtaXQiOmZhbHNlLCJ2ZWhpY2xlU3RhdGUiOiJOZXciLCJnb29nbGVUcmFja2luZyI6eyJpZFN1ZmZpeCI6Il9zY3JhdGNoQW5kU2F2ZSIsImxhYmVsIjoiRGVtYW5kZXMtQ291cG9ucy1OZXVmIiwibGFiZWxzZWN0aW9uIjoiTmV1ZiIsImlzZXhwcmVzcyI6MCwiaXNwcm9tbyI6MCwiaXNob21lcGFnZSI6MCwiaXNtb2JpbGUiOjB9LCJmb3JtIjp7ImVtYWlsaWQiOiJSZWJhdGVDb3Vwb25OZXciLCJvZmZlcnR5cGUiOiJEaXNjb3VudEltYWdlUG9wdXBTY3JhdGNoQW5kU2F2ZSIsIm5hbWUiOiJmcm1SZWJhdGVfc2NyYXRjaEFuZFNhdmVfbmV3Iiwic2VuZFRvIjoiYWY3OTQ1YzJmY2IzOGRlNDNhNDQ5Y2I4ZjAzN2RjMmJ8Mzk3MTM1OTk0MCIsInNlbmRUb0FERiI6IiIsIk9LQnV0dG9uQ2xhc3MiOiJzY3JhdGNoYnRuIiwiQ2FuY2VsQnV0dG9uQ2xhc3MiOm51bGwsInNob3dFbWFpbENvbmZpcm1hdGlvbiI6ZmFsc2V9LCJ0aHJlc2hvbGQiOmZhbHNlLCJ0aHJlc2hvbGRWYWx1ZSI6Ijc1Iiwic2Nyb2xsdXAiOmZhbHNlLCJtYWlucG9wdXAiOnRydWUsImNvdW50ZG93biI6MTc3NzE3NjAwMCwiY29uZmlybUZvcm0iOlt7Im5hbWUiOiJsYWJlbCIsInZhbHVlIjoiRGVtYW5kZXMtQ291cG9ucy1OZXVmIiwiY2xhc3MiOiJsYWJlbGVtYWlsIn0seyJuYW1lIjoic2VjdGlvbiIsInZhbHVlIjoiTmV1ZiIsImNsYXNzIjoibGFiZWxzZWN0aW9uIn0seyJuYW1lIjoiYnJhbmQiLCJ2YWx1ZSI6IiIranNfZDJjX2dldF92YWwoIjFlcml2OTAwcGRhODh3dzgiKSsiIiwiY2xhc3MiOiJicmFuZGVtYWlsIn0seyJuYW1lIjoibW9kZWwiLCJ2YWx1ZSI6IiIranNfZDJjX2dldF92YWwoIjEwcGE3djNxZWxkY29zayIpKyIiLCJjbGFzcyI6Im1vZGVsZW1haWwifSx7Im5hbWUiOiJ5ZWFyIiwidmFsdWUiOiIiK2pzX2QyY19nZXRfdmFsKCJyODJ6Zmt4YTJkd3NzMDAiKSsiIiwiY2xhc3MiOiJ5ZWFyZW1haWwifSx7Im5hbWUiOiJnb29nbGVpZCIsInZhbHVlIjoiIn0seyJuYW1lIjoiZ29vZ2xlaWRkMmNtZWRpYSIsInZhbHVlIjoiIn0seyJuYW1lIjoiYmluZ2NvbmlkIiwidmFsdWUiOiIifSx7Im5hbWUiOiJiaW5nYWN0aW9uaWQiLCJ2YWx1ZSI6IiJ9LHsibmFtZSI6ImJpbmdkb21haW5pZCIsInZhbHVlIjoiIn0seyJuYW1lIjoiYWRyb2xsQWR2IiwidmFsdWUiOiIifSx7Im5hbWUiOiJhZHJvbGxQaXgiLCJ2YWx1ZSI6IiJ9LHsibmFtZSI6ImZhY2Vib29rQ29uSWQiLCJ2YWx1ZSI6IiJ9LHsibmFtZSI6ImRvbWFpbiIsInZhbHVlIjoiYWxiaWtpYS5jb20ifSx7Im5hbWUiOiJyZWZlcnJlciIsInZhbHVlIjoiIitqc19kMmNfZ2V0X3ZhbCgiaTNnc2F4Z3M1ams4d2NrIikrIiJ9LHsibmFtZSI6ImlzZXhwcmVzcyIsInZhbHVlIjoiMCIsImNsYXNzIjoiaXNleHByZXNzIn0seyJuYW1lIjoiaXNwcm9tbyIsInZhbHVlIjoiMCJ9LHsibmFtZSI6ImlzaG9tZXBhZ2UiLCJ2YWx1ZSI6IjAifSx7Im5hbWUiOiJ0ZXh0Q2FyU2VjdGlvblR5cGUiLCJ2YWx1ZSI6IiIranNfZDJjX2dldF92YWwoInNvN3l1cWFqNGR3Y2M4cyIpKyIifSx7Im5hbWUiOiJmcm9tQUEiLCJ2YWx1ZSI6IiJ9LHsibmFtZSI6ImxhbmciLCJ2YWx1ZSI6IkZSRU5DSCJ9XX0pO30pO31jYXRjaChlenoxKXtpZihjb25zb2xlJiZjb25zb2xlLmxvZykKY29uc29sZS5sb2coZXp6MSk7fQp2YXIgaWRlbnRfY2U5NzU5ODdmNDNhOGVlMTMyMDRkYzFmMGJkNjI4MGU7dHJ5e2pRdWVyeShmdW5jdGlvbigkKXskKCIjY3JlZGl0U2NvcmVQb3B1cENvbnRhaW5lciIpLnBvcHVwaXplKHsib25BZnRlcnN1Ym1pdCI6ZnVuY3Rpb24oc2VsZil7c2V0Q29va2llKCdjcmVkaXRTY29yZUVtYmVkZGVkRmlsbGVkJywxLDMwKTtpZih0eXBlb2YgZ1VzZWRTcnBBcHB6IT09J3VuZGVmaW5lZCcpe2dVc2VkU3JwQXBwei5maWx0ZXJJbnRlcmZhY2UuY2xlYXJQcm94eUNhY2hlQW5kUmVGZXRjaCgpO319LCJvbkFmdGVySW5pdGlhbGl6ZSI6ZnVuY3Rpb24oc2VsZil7KG5ldyBGb3JtKCkpLm1hc2tQaG9uZSgiI2NyZWRpdFNjb3JlUG9wdXBDb250YWluZXIgI2NyZWRpdFNjb3JlUGhvbmUiKTt2YXIgbGFuZz0kKCJib2R5IikuaGFzQ2xhc3MoIkVOR0xJU0giKT8iZW4iOiJmciI7dmFyIHN0YXJ0RGF0ZT1uZXcgRGF0ZSgpO3N0YXJ0RGF0ZS5zZXRGdWxsWWVhcihzdGFydERhdGUuZ2V0RnVsbFllYXIoKS0zMCk7dmFyIG1heERhdGU9bmV3IERhdGUoKTttYXhEYXRlLnNldEZ1bGxZZWFyKG1heERhdGUuZ2V0RnVsbFllYXIoKS0xOCk7dmFyIG1pbkRhdGU9bmV3IERhdGUoKTttaW5EYXRlLnNldEZ1bGxZZWFyKG1pbkRhdGUuZ2V0RnVsbFllYXIoKS0xMjApOyQoIi5jcmVkaXRTY29yZUJpcnRoZGF0ZSIpLm5lYkNhbCh7bWF4RGF0ZTptYXhEYXRlLmZvcm1hdCgieXl5eS1NTS1kZCIpLG1pbkRhdGU6bWluRGF0ZS5mb3JtYXQoInl5eXktTU0tZGQiKSxkZWZhdWx0RGF0ZTpzdGFydERhdGUuZm9ybWF0KCJ5eXl5LU1NLWRkIiksZm9ybWF0OiJkZCBNTU0geXl5eSIsZGVmYXVsdFZpZXc6ImRlY2FkZSJ9KTskKCcjY3JlZGl0U2NvcmVQb3B1cENvbnRhaW5lciBpbnB1dFtkYXRhLWdvb2dsZS1wbGFjZXMtY3VzdG9tPSJ0cnVlIl0nKS5nb29nbGVQbGFjZXMoKTt2YXIgcG9wdXBUeXBlPSJuZXciO2lmKHR5cGVvZiBwb3B1cERlZmF1bHRPbkFmdGVySW5pdGlhbGl6ZSE9InVuZGVmaW5lZCIpe3ZhciB0bXA9cG9wdXBEZWZhdWx0T25BZnRlckluaXRpYWxpemUoIm5ldyIsIiIranNfZDJjX2dldF92YWwoIjZqeXA0NjY0dmd3czgwdyIpKyIiLGZhbHNlLCIiLCIiK2pzX2QyY19nZXRfdmFsKCIxNmQ3dnd0NjZwbW93bzBrIikrIiIsImNyZWRpdFNjb3JlUG9wdXBDb250YWluZXIiLGZhbHNlKTtpZigwJiZ0bXApe3NlbGYuc2V0dGluZ3Muc2hvd29ubG9hZD0xMDt9CmVsc2V7c2VsZi5zZXR0aW5ncy5zaG93b25sb2FkPWZhbHNlO30KcmV0dXJuIHRtcDt9fSwiY29va2llRHVyYXRpb24iOjYwLCJjb29raWVOYW1lIjoiY3JlZGl0U2NvcmVTaG93biIsImNvb2tpZUNyZWF0ZSI6Im9uT3BlbiIsImdvb2dsZVRyYWNraW5nIjp7ImlkU3VmZml4IjoiIiwibGFiZWwiOiIiLCJsYWJlbHNlY3Rpb24iOiIiLCJpc2V4cHJlc3MiOjAsImlzcHJvbW8iOjAsImlzaG9tZXBhZ2UiOjAsImlzbW9iaWxlIjowfSwiZm9ybSI6eyJlbWFpbGlkIjoiQ3JlZGl0U2NvcmUiLCJvZmZlcnR5cGUiOiJDcmVkaXRTY29yZSIsIm5hbWUiOm51bGwsInNlbmRUbyI6IiIranNfZDJjX2dldF92YWwoIjEzZHF0c25jZDgxd2s4NDQiKSsiIiwic2VuZFRvQURGIjoiIitqc19kMmNfZ2V0X3ZhbCgiNWNjeWdrOTI1bWd3ZzAiKSsiIiwiT0tCdXR0b25DbGFzcyI6ImNyZWRpdFNjb3JlX2J0biIsIkNhbmNlbEJ1dHRvbkNsYXNzIjoiY2FuY2VsQnRuIiwic2hvd0VtYWlsQ29uZmlybWF0aW9uIjp0cnVlLCJmcm9tQUEiOmZhbHNlLCJjb25maXJtYXRpb24iOnsidGl0bGUiOiJWb3RyZSBkZW1hbmRlIGEgYmllbiAmZWFjdXRlO3QmZWFjdXRlOyBlbnZveSZlYWN1dGU7ZSEiLCJib2R5IjoiTWVyY2khIFVuIGNvbnNlaWxsZXIgY29tbXVuaXF1ZXJhIGF2ZWMgdm91cyBwb3VyIHZvdXMgZG9ubmVyIGxlcyBkJmVhY3V0ZTt0YWlscyBzdXIgdm90cmUgcG90ZW50aWVsIGRlIGNyJmVhY3V0ZTtkaXQuIn19LCJzdGF0ZSI6W10sInZlaGljbGVTdGF0ZSI6InVzZWQiLCJjbG9zZU9uU3VibWl0Ijp0cnVlLCJmaWxsZmxhZyI6ZmFsc2UsIm5vdHJhbnNmb3JtIjp0cnVlLCJuYW1lIjpmYWxzZSwiYW5pbWF0aW9uIjoiZmFkZUFuZFBvcCIsImFuaW1hdGlvblNwZWVkIjozMDAsImNsb3NlT25CYWNrZ3JvdW5kQ2xpY2siOmZhbHNlLCJkaXNtaXNzTW9kYWxDbGFzcyI6ImNsb3NlLXJldmVhbC1tb2RhbCIsImNsb3NlQnV0dG9uIjp0cnVlLCJieXBhc3NDb25zZW50IjpmYWxzZSwidGhyZXNob2xkIjpmYWxzZSwidGhyZXNob2xkVmFsdWUiOjAsInNjcm9sbHVwIjpmYWxzZSwibWFpbnBvcHVwIjpmYWxzZSwic2hvd29ubG9hZCI6ZmFsc2UsImNvdW50ZG93biI6MTc3NzE3NjAwMCwiY29uZmlybUZvcm0iOltdfSk7fSk7fWNhdGNoKGV6ejEpe2lmKGNvbnNvbGUmJmNvbnNvbGUubG9nKQpjb25zb2xlLmxvZyhlenoxKTt9CnZhciBpZGVudF9kNjZmNWQ5NDg1OTc0MmM2YTUxZjhiYWQ5YzBkZmFlMDt0cnl7bWFpbFNlbnRIYW5kbGVyPWdldE1haWxTZW50SGFuZGxlcignX2NyZWRpdFNjb3JlUG9wdXBDb250YWluZXInKTt9Y2F0Y2goZXp6MSl7aWYoY29uc29sZSYmY29uc29sZS5sb2cpCmNvbnNvbGUubG9nKGV6ejEpO30KdmFyIGlkZW50XzdkZDI0YzIzNGNjMzIzY2Q4MDkxZDdjNmY5MzA2ZWZlO3RyeXtqUXVlcnkoZnVuY3Rpb24oJCl7JCgiI2NyZWRpdFNjb3JlQ29uZmlybVBvcHVwQ29udGFpbmVyIikucG9wdXBpemUoeyJvbkJlZm9yZU9wZW4iOmZ1bmN0aW9uKHNlbGYpe2lmKGVtYWlsSGFuZGxlcil7JCgiI2NyZWRpdFNjb3JlQ29uZmlybVBvcHVwQ29udGFpbmVyIC5jcmVkaXRTY29yZUNvbmZpcm1JbnB1dCAuZmlyc3RuYW1lIikudmFsKGVtYWlsSGFuZGxlci51c2VyRmlyc3ROYW1lKTskKCIjY3JlZGl0U2NvcmVDb25maXJtUG9wdXBDb250YWluZXIgLmNyZWRpdFNjb3JlQ29uZmlybUlucHV0IC5sYXN0bmFtZSIpLnZhbChlbWFpbEhhbmRsZXIudXNlckxhc3ROYW1lKTskKCIjY3JlZGl0U2NvcmVDb25maXJtUG9wdXBDb250YWluZXIgLmNyZWRpdFNjb3JlQ29uZmlybUlucHV0IC5lbWFpbCIpLnZhbChlbWFpbEhhbmRsZXIudXNlckVtYWlsKTskKCIjY3JlZGl0U2NvcmVDb25maXJtUG9wdXBDb250YWluZXIgLmNyZWRpdFNjb3JlQ29uZmlybUlucHV0IC5waG9uZSIpLnZhbChlbWFpbEhhbmRsZXIudXNlclBob25lKTskKCIjY3JlZGl0U2NvcmVDb25maXJtUG9wdXBDb250YWluZXIgLmNyZWRpdFNjb3JlQ29uZmlybUlucHV0IC5iaXJ0aGRhdGUiKS52YWwoZW1haWxIYW5kbGVyLmJpcnRoZGF0ZSk7JCgiI2NyZWRpdFNjb3JlQ29uZmlybVBvcHVwQ29udGFpbmVyIC5jcmVkaXRTY29yZUNvbmZpcm1JbnB1dCAuYWRkcmVzcyIpLnZhbChlbWFpbEhhbmRsZXIudXNlckFkZHJlc3MpO319LCJvbkNsb3NlIjpmdW5jdGlvbihzZWxmKXtlbWFpbEhhbmRsZXIuc2tpcEdlb0xvYz1mYWxzZTt9LCJvbkJlZm9yZXN1Ym1pdCI6ZnVuY3Rpb24oc2VsZil7ZW1haWxIYW5kbGVyLnNraXBHZW9Mb2M9dHJ1ZTtlbWFpbEhhbmRsZXIubGVhZFRpdGxlVGV4dD0kKCIjY3JlZGl0U2NvcmVDb25maXJtUG9wdXBDb250YWluZXIgLmNyZWRpdFNjb3JlQ29uZmlybUlucHV0ICNjcmVkaXRTY29yZUxlYWRUeXBlIikudmFsKCk7fSwib25BZnRlcnN1Ym1pdCI6ZnVuY3Rpb24oc2VsZil7ZW1haWxIYW5kbGVyLnNraXBHZW9Mb2M9ZmFsc2U7c2V0Q29va2llKCdjcmVkaXRTY29yZUVtYmVkZGVkRmlsbGVkJywxLDMwKTtpZih0eXBlb2YgZ1VzZWRTcnBBcHB6IT09J3VuZGVmaW5lZCcpe2dVc2VkU3JwQXBwei5maWx0ZXJJbnRlcmZhY2UuY2xlYXJQcm94eUNhY2hlQW5kUmVGZXRjaCgpO319LCJvbkFmdGVySW5pdGlhbGl6ZSI6ZnVuY3Rpb24oc2VsZil7KG5ldyBGb3JtKCkpLm1hc2tQaG9uZSgiI2NyZWRpdFNjb3JlQ29uZmlybVBvcHVwQ29udGFpbmVyIC5jcmVkaXRTY29yZVBob25lIik7dmFyIGxhbmc9JCgiYm9keSIpLmhhc0NsYXNzKCJFTkdMSVNIIik\/ImVuIjoiZnIiO3ZhciBzdGFydERhdGU9bmV3IERhdGUoKTtzdGFydERhdGUuc2V0RnVsbFllYXIoc3RhcnREYXRlLmdldEZ1bGxZZWFyKCktMzApO3ZhciBtYXhEYXRlPW5ldyBEYXRlKCk7bWF4RGF0ZS5zZXRGdWxsWWVhcihtYXhEYXRlLmdldEZ1bGxZZWFyKCktMTgpO3ZhciBtaW5EYXRlPW5ldyBEYXRlKCk7bWluRGF0ZS5zZXRGdWxsWWVhcihtaW5EYXRlLmdldEZ1bGxZZWFyKCktMTIwKTskKCIjY3JlZGl0U2NvcmVDb25maXJtUG9wdXBDb250YWluZXIgLmNyZWRpdFNjb3JlQmlydGhkYXRlIikubmViQ2FsKHttYXhEYXRlOm1heERhdGUuZm9ybWF0KCJ5eXl5LU1NLWRkIiksbWluRGF0ZTptaW5EYXRlLmZvcm1hdCgieXl5eS1NTS1kZCIpLGRlZmF1bHREYXRlOnN0YXJ0RGF0ZS5mb3JtYXQoInl5eXktTU0tZGQiKSxmb3JtYXQ6ImRkIE1NTSB5eXl5IixkZWZhdWx0VmlldzoiZGVjYWRlIn0pOyQoJyNjcmVkaXRTY29yZUNvbmZpcm1Qb3B1cENvbnRhaW5lciBpbnB1dFtkYXRhLWdvb2dsZS1wbGFjZXMtY3VzdG9tPSJ0cnVlIl0nKS5nb29nbGVQbGFjZXMoKTskKCIjY3JlZGl0U2NvcmVDb25maXJtUG9wdXBDb250YWluZXIiKS5vbigiY2xpY2siLCIuY3JlZGl0U2NvcmVDb25maXJtX2J0biIsZnVuY3Rpb24oKXtzZWxmLnN1Ym1pdCgpO30pO30sImNvb2tpZUR1cmF0aW9uIjo2MCwiY29va2llTmFtZSI6ImNyZWRpdFNjb3JlQ29uZmlybVBvcHVwU2hvd24iLCJjb29raWVDcmVhdGUiOiJvbk9wZW4iLCJnb29nbGVUcmFja2luZyI6eyJpZFN1ZmZpeCI6IiIsImxhYmVsIjoiIiwibGFiZWxzZWN0aW9uIjoiIiwiaXNleHByZXNzIjowLCJpc3Byb21vIjowLCJpc2hvbWVwYWdlIjowLCJpc21vYmlsZSI6MH0sImZvcm0iOnsiZW1haWxpZCI6IkNyZWRpdFNjb3JlIiwib2ZmZXJ0eXBlIjoiQ3JlZGl0U2NvcmUiLCJuYW1lIjpudWxsLCJzZW5kVG8iOiIiK2pzX2QyY19nZXRfdmFsKCIxM2RxdHNuY2Q4MXdrODQ0IikrIiIsInNlbmRUb0FERiI6IiIranNfZDJjX2dldF92YWwoIjVjY3lnazkyNW1nd2cwIikrIiIsIk9LQnV0dG9uQ2xhc3MiOiJjcmVkaXRTY29yZUNvbmZpcm1fYnRuIiwiQ2FuY2VsQnV0dG9uQ2xhc3MiOiJjYW5jZWxCdG4iLCJzaG93RW1haWxDb25maXJtYXRpb24iOnRydWUsImZyb21BQSI6ZmFsc2UsImNvbmZpcm1hdGlvbiI6eyJ0aXRsZSI6IlZvdHJlIGRlbWFuZGUgYSBiaWVuICZlYWN1dGU7dCZlYWN1dGU7IGVudm95JmVhY3V0ZTtlISIsImJvZHkiOiJNZXJjaSEgVW4gY29uc2VpbGxlciBjb21tdW5pcXVlcmEgYXZlYyB2b3VzIHBvdXIgdm91cyBkb25uZXIgbGVzIGQmZWFjdXRlO3RhaWxzIHN1ciB2b3RyZSBwb3RlbnRpZWwgZGUgY3ImZWFjdXRlO2RpdC4ifX0sInN0YXRlIjpbXSwidmVoaWNsZVN0YXRlIjoidXNlZCIsImNsb3NlT25TdWJtaXQiOnRydWUsImZpbGxmbGFnIjpmYWxzZSwibm90cmFuc2Zvcm0iOnRydWUsIm5hbWUiOmZhbHNlLCJhbmltYXRpb24iOiJmYWRlQW5kUG9wIiwiYW5pbWF0aW9uU3BlZWQiOjMwMCwiY2xvc2VPbkJhY2tncm91bmRDbGljayI6ZmFsc2UsImRpc21pc3NNb2RhbENsYXNzIjoiY2xvc2UtcmV2ZWFsLW1vZGFsIiwiY2xvc2VCdXR0b24iOnRydWUsImJ5cGFzc0NvbnNlbnQiOnRydWUsInRocmVzaG9sZCI6ZmFsc2UsInRocmVzaG9sZFZhbHVlIjowLCJzY3JvbGx1cCI6ZmFsc2UsIm1haW5wb3B1cCI6ZmFsc2UsInNob3dvbmxvYWQiOmZhbHNlLCJjb3VudGRvd24iOjE3NzcxNzYwMDAsImNvbmZpcm1Gb3JtIjpbXX0pO30pO31jYXRjaChlenoxKXtpZihjb25zb2xlJiZjb25zb2xlLmxvZykKY29uc29sZS5sb2coZXp6MSk7fQp2YXIgaWRlbnRfMzYzODdkOTIwOTY4NzhkNzliMDU2OTE1ZWNiNTM0OGY7dHJ5e21haWxTZW50SGFuZGxlcj1nZXRNYWlsU2VudEhhbmRsZXIoJ19jcmVkaXRTY29yZUNvbmZpcm1Qb3B1cENvbnRhaW5lcicpO31jYXRjaChlenoxKXtpZihjb25zb2xlJiZjb25zb2xlLmxvZykKY29uc29sZS5sb2coZXp6MSk7fQp2YXIgaWRlbnRfOGYxZDg5MjhiMDg5MjEyZDllMjIxMDI1ZDdkMzEzZDQ7dHJ5e2pRdWVyeShmdW5jdGlvbigkKXskKCIjY29udGFjdHBvcHVwIikucG9wdXBpemUoeyJvbkFmdGVySW5pdGlhbGl6ZSI6ZnVuY3Rpb24oc2VsZil7Y29udGFjdFBvcHVwLnNldENvbmZpZyh7dHlwZTpzZWxmLnNldHRpbmdzLmZvcm0udHlwZX0pO2lmKHR5cGVvZiBwb3B1cERlZmF1bHRPbkFmdGVySW5pdGlhbGl6ZSE9InVuZGVmaW5lZCIpe3ZhciB0bXA9cG9wdXBEZWZhdWx0T25BZnRlckluaXRpYWxpemUoIm5ldyIsIiIranNfZDJjX2dldF92YWwoIjZqeXA0NjY0dmd3czgwdyIpKyIiLGZhbHNlLCIiLCIiK2pzX2QyY19nZXRfdmFsKCIxNmQ3dnd0NjZwbW93bzBrIikrIiIsImNvbnRhY3Rwb3B1cCIsdHJ1ZSk7aWYoZmFsc2UmJnRtcClzZWxmLnNldHRpbmdzLnNob3dvbmxvYWQ9NTtyZXR1cm4gdG1wO319LCJvbkJlZm9yZVNlbmRNYWlsIjpmdW5jdGlvbihzZWxmKXtjb250YWN0UG9wdXAub25CZWZvcmVTZW5kTWFpbCgpO30sImNvb2tpZUR1cmF0aW9uIjozMCwiY29va2llTmFtZSI6bnVsbCwiY29va2llQ3JlYXRlIjpudWxsLCJnb29nbGVUcmFja2luZyI6eyJpZFN1ZmZpeCI6IiIsImxhYmVsIjoiIiwibGFiZWxzZWN0aW9uIjoiIiwiaXNleHByZXNzIjowLCJpc3Byb21vIjowLCJpc2hvbWVwYWdlIjowLCJpc21vYmlsZSI6MH0sImZvcm0iOnsiZW1haWxpZCI6IkNvbnRhY3RVc1JlcXVlc3QiLCJzZW5kVG8iOm51bGwsInNlbmRUb0FERiI6bnVsbCwic2hvd0VtYWlsQ29uZmlybWF0aW9uIjp0cnVlLCJjb25maXJtYXRpb24iOnsidGl0bGUiOiJWb3RyZSBtZXNzYWdlIGEgYmllbiAmZWFjdXRlO3QmZWFjdXRlOyBlbnZveSZlYWN1dGU7ISIsImJvZHkiOiJNZXJjaSEgVW4gbWVtYnJlIGRlIG5vdHJlICZlYWN1dGU7cXVpcGUgdm91cyBjb250YWN0ZXJhIHNvdXMgcGV1LiJ9LCJ0eXBlIjoibmV3In0sInN0YXRlIjpbXSwidmVoaWNsZVN0YXRlIjoidXNlZCIsImNsb3NlT25TdWJtaXQiOnRydWUsImZpbGxmbGFnIjpmYWxzZSwibm90cmFuc2Zvcm0iOnRydWUsIm5hbWUiOmZhbHNlLCJhbmltYXRpb24iOiJmYWRlQW5kUG9wIiwiYW5pbWF0aW9uU3BlZWQiOjMwMCwiY2xvc2VPbkJhY2tncm91bmRDbGljayI6ZmFsc2UsImRpc21pc3NNb2RhbENsYXNzIjoiY2xvc2UtcmV2ZWFsLW1vZGFsIiwiY2xvc2VCdXR0b24iOnRydWUsImJ5cGFzc0NvbnNlbnQiOmZhbHNlLCJ0aHJlc2hvbGQiOmZhbHNlLCJ0aHJlc2hvbGRWYWx1ZSI6MCwic2Nyb2xsdXAiOmZhbHNlLCJtYWlucG9wdXAiOmZhbHNlLCJjb3VudGRvd24iOjE3NzcxNzYwMDAsImNvbmZpcm1Gb3JtIjpbXX0pO30pO31jYXRjaChlenoxKXtpZihjb25zb2xlJiZjb25zb2xlLmxvZykKY29uc29sZS5sb2coZXp6MSk7fQp2YXIgaWRlbnRfM2Q3ODU0Mjc0MTI1ZWE2OWIwMjQ1NzU2NDZhNjk4ZGM7dHJ5e21haWxTZW50SGFuZGxlcj1nZXRNYWlsU2VudEhhbmRsZXIoJ19jb250YWN0cG9wdXAnKTt9Y2F0Y2goZXp6MSl7aWYoY29uc29sZSYmY29uc29sZS5sb2cpCmNvbnNvbGUubG9nKGV6ejEpO30KdmFyIGlkZW50X2I2YzY5NzlhNjI2MGM5OGRjM2U0YTI5ZmU5NWY5MTdiO3RyeXtqUXVlcnkoZnVuY3Rpb24oJCl7JCgiI2ZpbmFuY2VNdWx0aXN0ZXBQb3B1cENvbnRhaW5lciIpLnBvcHVwaXplKHsib25BZnRlckluaXRpYWxpemUiOmZ1bmN0aW9uKHNlbGYpe3ZhciBtdWx0aXN0ZXA9aW5pdGlhbGl6ZUZpbmFuY2VNdWx0aVN0ZXAoc2VsZi50YXJnZXQpOyQoZG9jdW1lbnQpLm9uKCdjcmVkaXQubXVsdGlzdGVwcG9wdXAuc3RhcnQnLGZ1bmN0aW9uKGUpe211bHRpc3RlcC5zdGFydCgpO30pO30sImNvb2tpZUR1cmF0aW9uIjozMCwiY29va2llTmFtZSI6bnVsbCwiY29va2llQ3JlYXRlIjpudWxsLCJnb29nbGVUcmFja2luZyI6eyJpZFN1ZmZpeCI6IiIsImxhYmVsIjoiIiwibGFiZWxzZWN0aW9uIjoiIiwiaXNleHByZXNzIjowLCJpc3Byb21vIjowLCJpc2hvbWVwYWdlIjowLCJpc21vYmlsZSI6MH0sImZvcm0iOnsiZW1haWxpZCI6IkNyZWRpdE11bHRpc3RlcFJlcXVlc3QiLCJvZmZlcnR5cGUiOiJDcmVkaXRNdWx0aXN0ZXBSZXF1ZXN0IiwibmFtZSI6bnVsbCwic2VuZFRvIjoiIitqc19kMmNfZ2V0X3ZhbCgiMTNkcXRzbmNkODF3azg0NCIpKyIiLCJzZW5kVG9BREYiOiIiK2pzX2QyY19nZXRfdmFsKCI1Y2N5Z2s5MjVtZ3dnMCIpKyIiLCJPS0J1dHRvbkNsYXNzIjoic3VibWl0QnRuIiwiQ2FuY2VsQnV0dG9uQ2xhc3MiOiJjYW5jZWxCdG4iLCJzaG93RW1haWxDb25maXJtYXRpb24iOmZhbHNlLCJmcm9tQUEiOmZhbHNlLCJjb25maXJtYXRpb24iOnsidGl0bGUiOm51bGwsImJvZHkiOm51bGx9fSwic3RhdGUiOltdLCJ2ZWhpY2xlU3RhdGUiOiJ1c2VkIiwiY2xvc2VPblN1Ym1pdCI6dHJ1ZSwiZmlsbGZsYWciOmZhbHNlLCJub3RyYW5zZm9ybSI6dHJ1ZSwibmFtZSI6ZmFsc2UsImFuaW1hdGlvbiI6ImZhZGVBbmRQb3AiLCJhbmltYXRpb25TcGVlZCI6MzAwLCJjbG9zZU9uQmFja2dyb3VuZENsaWNrIjpmYWxzZSwiZGlzbWlzc01vZGFsQ2xhc3MiOiJjbG9zZS1yZXZlYWwtbW9kYWwiLCJjbG9zZUJ1dHRvbiI6dHJ1ZSwiYnlwYXNzQ29uc2VudCI6ZmFsc2UsInRocmVzaG9sZCI6ZmFsc2UsInRocmVzaG9sZFZhbHVlIjowLCJzY3JvbGx1cCI6ZmFsc2UsIm1haW5wb3B1cCI6ZmFsc2UsInNob3dvbmxvYWQiOmZhbHNlLCJjb3VudGRvd24iOjE3NzcxNzYwMDAsImNvbmZpcm1Gb3JtIjpbeyJuYW1lIjoibGFiZWwiLCJ2YWx1ZSI6IiIsImNsYXNzIjoibGFiZWxlbWFpbCJ9LHsibmFtZSI6InNlY3Rpb24iLCJ2YWx1ZSI6IiIsImNsYXNzIjoibGFiZWxzZWN0aW9uIn0seyJuYW1lIjoiYnJhbmQiLCJ2YWx1ZSI6IiIranNfZDJjX2dldF92YWwoIjFlcml2OTAwcGRhODh3dzgiKSsiIiwiY2xhc3MiOiJicmFuZGVtYWlsIn0seyJuYW1lIjoibW9kZWwiLCJ2YWx1ZSI6IiIranNfZDJjX2dldF92YWwoIjEwcGE3djNxZWxkY29zayIpKyIiLCJjbGFzcyI6Im1vZGVsZW1haWwifSx7Im5hbWUiOiJ5ZWFyIiwidmFsdWUiOiIiK2pzX2QyY19nZXRfdmFsKCJyODJ6Zmt4YTJkd3NzMDAiKSsiIiwiY2xhc3MiOiJ5ZWFyZW1haWwifSx7Im5hbWUiOiJnb29nbGVpZCIsInZhbHVlIjoiIn0seyJuYW1lIjoiZ29vZ2xlaWRkMmNtZWRpYSIsInZhbHVlIjoiIn0seyJuYW1lIjoiYmluZ2NvbmlkIiwidmFsdWUiOiIifSx7Im5hbWUiOiJiaW5nYWN0aW9uaWQiLCJ2YWx1ZSI6IiJ9LHsibmFtZSI6ImJpbmdkb21haW5pZCIsInZhbHVlIjoiIn0seyJuYW1lIjoiYWRyb2xsQWR2IiwidmFsdWUiOiIifSx7Im5hbWUiOiJhZHJvbGxQaXgiLCJ2YWx1ZSI6IiJ9LHsibmFtZSI6ImZhY2Vib29rQ29uSWQiLCJ2YWx1ZSI6IiJ9LHsibmFtZSI6ImRvbWFpbiIsInZhbHVlIjoiYWxiaWtpYS5jb20ifSx7Im5hbWUiOiJyZWZlcnJlciIsInZhbHVlIjoiIitqc19kMmNfZ2V0X3ZhbCgiaTNnc2F4Z3M1ams4d2NrIikrIiJ9LHsibmFtZSI6ImlzZXhwcmVzcyIsInZhbHVlIjoiMCIsImNsYXNzIjoiaXNleHByZXNzIn0seyJuYW1lIjoiaXNwcm9tbyIsInZhbHVlIjoiMCJ9LHsibmFtZSI6ImlzaG9tZXBhZ2UiLCJ2YWx1ZSI6IjAifSx7Im5hbWUiOiJ0ZXh0Q2FyU2VjdGlvblR5cGUiLCJ2YWx1ZSI6IiIranNfZDJjX2dldF92YWwoInNvN3l1cWFqNGR3Y2M4cyIpKyIifSx7Im5hbWUiOiJmcm9tQUEiLCJ2YWx1ZSI6IiJ9LHsibmFtZSI6ImxhbmciLCJ2YWx1ZSI6IkZSRU5DSCJ9XX0pO30pO31jYXRjaChlenoxKXtpZihjb25zb2xlJiZjb25zb2xlLmxvZykKY29uc29sZS5sb2coZXp6MSk7fQp2YXIgaWRlbnRfZjRkZGQzODRhODk1YjZkZjMwMDZhYTE2ZDhjYzY0YTk7dHJ5e2pRdWVyeShmdW5jdGlvbigkKXskKCIjcGF5bWVudENhbGN1bGF0b3JQb3B1cENvbnRhaW5lciIpLnBvcHVwaXplKHsib25CZWZvcmVPcGVuIjpmdW5jdGlvbihzZWxmKXtpZihzZWxmLnNldHRpbmdzLmFscmVhZHlJbml0KXtzZWxmLnNldHRpbmdzLmFscmVhZHlJbml0PWZhbHNlO2lmKENvb2tpZXMuZ2V0KCdwb3B1cEZvcm1GaWxsZWQnKT09IjEiKXskKCIjcGF5bWVudENhbGN1bGF0b3JDYWxsVG9BY3Rpb25Db250YWluZXIiKS5oaWRlKCk7fQpyZXR1cm4gdHJ1ZTt9CmlmKCFzZWxmLnNldHRpbmdzLnN0eWxlaWQpcmV0dXJuIGZhbHNlO3NlbGYuc2V0dGluZ3MuaW5pdGlhbFN0eWxlaWQ9c2VsZi5zZXR0aW5ncy5zdHlsZWlkO2lmKCQoIi5ibnBfcGF5bWVudF9jb250YWluZXIiKS5sZW5ndGgpe3NlbGYuc2V0dGluZ3MucGF5bWVudE9wdGlvbnM9cGFyc2VJbnQoJCgiI29wdGlvblByaWNlVG90YWwiKS5odG1sKCkucmVwbGFjZSgiLCIsIiIpKTt9CmdhVHJhY2soJ2MuX3RyYWNrRXZlbnQnLCdDbGlxdWVzIENhbGN1bGF0cmljZScsJ05ldWYnLCdPcGVuJywxKTtwYXltZW50Q2FsY3VsYXRvclBvcHVwSW5pdCgpO30sIm9uQ2xvc2UiOmZ1bmN0aW9uKHNlbGYpe2lmKCFzZWxmLnNldHRpbmdzLmFscmVhZHlJbml0KXtnYVRyYWNrKCdjLl90cmFja0V2ZW50JywnQ2xpcXVlcyBDYWxjdWxhdHJpY2UnLCdOZXVmJywnQ2xvc2UnLDEpO30KaWYoKCgkKCcjdGFyZ2V0UGFnZScpLnZhbCgpfHxmYWxzZSk9PSdORVdDQVJTJ3x8KCQoJyN0YXJnZXRQYWdlJykudmFsKCl8fGZhbHNlKT09J1VTRURDQVJTJykmJndpbmRvdy5wYXltZW50U2VsZWN0Q2hhbmdlZD09dHJ1ZSl7bG9jYXRpb24ucmVsb2FkKCk7fX0sIm9uQWZ0ZXJJbml0aWFsaXplIjpmdW5jdGlvbihzZWxmKXtwb3B1cENhbGN1bGF0b3JJbml0aWFsaXplZCgpO30sImNvb2tpZUR1cmF0aW9uIjozMCwiY29va2llTmFtZSI6bnVsbCwiY29va2llQ3JlYXRlIjpudWxsLCJnb29nbGVUcmFja2luZyI6eyJpZFN1ZmZpeCI6IiIsImxhYmVsIjoiIiwibGFiZWxzZWN0aW9uIjoiIiwiaXNleHByZXNzIjowLCJpc3Byb21vIjowLCJpc2hvbWVwYWdlIjowLCJpc21vYmlsZSI6MH0sImZvcm0iOnsiZW1haWxpZCI6bnVsbCwib2ZmZXJ0eXBlIjpudWxsLCJuYW1lIjpudWxsLCJzZW5kVG8iOm51bGwsInNlbmRUb0FERiI6bnVsbCwiT0tCdXR0b25DbGFzcyI6InN1Ym1pdEJ0biIsIkNhbmNlbEJ1dHRvbkNsYXNzIjoiY2FuY2VsQnRuIiwic2hvd0VtYWlsQ29uZmlybWF0aW9uIjpmYWxzZSwiZnJvbUFBIjpmYWxzZSwiY29uZmlybWF0aW9uIjp7InRpdGxlIjpudWxsLCJib2R5IjpudWxsfX0sInN0YXRlIjpbXSwidmVoaWNsZVN0YXRlIjoidXNlZCIsImNsb3NlT25TdWJtaXQiOnRydWUsImZpbGxmbGFnIjpmYWxzZSwibm90cmFuc2Zvcm0iOnRydWUsIm5hbWUiOmZhbHNlLCJhbmltYXRpb24iOiJmYWRlQW5kUG9wIiwiYW5pbWF0aW9uU3BlZWQiOjMwMCwiY2xvc2VPbkJhY2tncm91bmRDbGljayI6ZmFsc2UsImRpc21pc3NNb2RhbENsYXNzIjoiY2xvc2UtcmV2ZWFsLW1vZGFsIiwiY2xvc2VCdXR0b24iOnRydWUsImJ5cGFzc0NvbnNlbnQiOmZhbHNlLCJ0aHJlc2hvbGQiOmZhbHNlLCJ0aHJlc2hvbGRWYWx1ZSI6ZmFsc2UsInNjcm9sbHVwIjpmYWxzZSwibWFpbnBvcHVwIjpmYWxzZSwic2hvd29ubG9hZCI6ZmFsc2UsImNvdW50ZG93biI6MTc3NzE3NjAwMCwiY29uZmlybUZvcm0iOlt7Im5hbWUiOiJsYWJlbCIsInZhbHVlIjoiIiwiY2xhc3MiOiJsYWJlbGVtYWlsIn0seyJuYW1lIjoic2VjdGlvbiIsInZhbHVlIjoiIiwiY2xhc3MiOiJsYWJlbHNlY3Rpb24ifSx7Im5hbWUiOiJicmFuZCIsInZhbHVlIjoiIitqc19kMmNfZ2V0X3ZhbCgiMWVyaXY5MDBwZGE4OHd3OCIpKyIiLCJjbGFzcyI6ImJyYW5kZW1haWwifSx7Im5hbWUiOiJtb2RlbCIsInZhbHVlIjoiIitqc19kMmNfZ2V0X3ZhbCgiMTBwYTd2M3FlbGRjb3NrIikrIiIsImNsYXNzIjoibW9kZWxlbWFpbCJ9LHsibmFtZSI6InllYXIiLCJ2YWx1ZSI6IiIranNfZDJjX2dldF92YWwoInI4Mnpma3hhMmR3c3MwMCIpKyIiLCJjbGFzcyI6InllYXJlbWFpbCJ9LHsibmFtZSI6Imdvb2dsZWlkIiwidmFsdWUiOiIifSx7Im5hbWUiOiJnb29nbGVpZGQyY21lZGlhIiwidmFsdWUiOiIifSx7Im5hbWUiOiJiaW5nY29uaWQiLCJ2YWx1ZSI6IiJ9LHsibmFtZSI6ImJpbmdhY3Rpb25pZCIsInZhbHVlIjoiIn0seyJuYW1lIjoiYmluZ2RvbWFpbmlkIiwidmFsdWUiOiIifSx7Im5hbWUiOiJhZHJvbGxBZHYiLCJ2YWx1ZSI6IiJ9LHsibmFtZSI6ImFkcm9sbFBpeCIsInZhbHVlIjoiIn0seyJuYW1lIjoiZmFjZWJvb2tDb25JZCIsInZhbHVlIjoiIn0seyJuYW1lIjoiZG9tYWluIiwidmFsdWUiOiJhbGJpa2lhLmNvbSJ9LHsibmFtZSI6InJlZmVycmVyIiwidmFsdWUiOiIiK2pzX2QyY19nZXRfdmFsKCJpM2dzYXhnczVqazh3Y2siKSsiIn0seyJuYW1lIjoiaXNleHByZXNzIiwidmFsdWUiOiIwIiwiY2xhc3MiOiJpc2V4cHJlc3MifSx7Im5hbWUiOiJpc3Byb21vIiwidmFsdWUiOiIwIn0seyJuYW1lIjoiaXNob21lcGFnZSIsInZhbHVlIjoiMCJ9LHsibmFtZSI6InRleHRDYXJTZWN0aW9uVHlwZSIsInZhbHVlIjoiIitqc19kMmNfZ2V0X3ZhbCgic283eXVxYWo0ZHdjYzhzIikrIiJ9LHsibmFtZSI6ImZyb21BQSIsInZhbHVlIjoiIn0seyJuYW1lIjoibGFuZyIsInZhbHVlIjoiRlJFTkNIIn1dfSk7fSk7fWNhdGNoKGV6ejEpe2lmKGNvbnNvbGUmJmNvbnNvbGUubG9nKQpjb25zb2xlLmxvZyhlenoxKTt9CnZhciBpZGVudF8zYjJkZDE5NDQwOWJkMDVlODg0NmJiN2UyMTAyMDJmMzt0cnl7alF1ZXJ5KGZ1bmN0aW9uKCQpeyQoIiNtb3RvaW5zaWdodFNob3BQb3B1cENvbnRhaW5lciIpLnBvcHVwaXplKHsib25CZWZvcmVPcGVuIjpmdW5jdGlvbihzZWxmKXttb3RvaW5zaWdodFNob3BPcGVuKCk7fSwib25BZnRlckluaXRpYWxpemUiOmZ1bmN0aW9uKHNlbGYpe21vdG9pbnNpZ2h0U2hvcEluaXQoKTt9LCJjb29raWVEdXJhdGlvbiI6MzAsImNvb2tpZU5hbWUiOm51bGwsImNvb2tpZUNyZWF0ZSI6bnVsbCwiZ29vZ2xlVHJhY2tpbmciOnsiaWRTdWZmaXgiOiIiLCJsYWJlbCI6IiIsImxhYmVsc2VjdGlvbiI6IiIsImlzZXhwcmVzcyI6MCwiaXNwcm9tbyI6MCwiaXNob21lcGFnZSI6MCwiaXNtb2JpbGUiOjB9LCJmb3JtIjp7ImVtYWlsaWQiOm51bGwsIm9mZmVydHlwZSI6bnVsbCwibmFtZSI6bnVsbCwic2VuZFRvIjpudWxsLCJzZW5kVG9BREYiOm51bGwsIk9LQnV0dG9uQ2xhc3MiOiJzdWJtaXRCdG4iLCJDYW5jZWxCdXR0b25DbGFzcyI6ImNhbmNlbEJ0biIsInNob3dFbWFpbENvbmZpcm1hdGlvbiI6ZmFsc2UsImZyb21BQSI6ZmFsc2UsImNvbmZpcm1hdGlvbiI6eyJ0aXRsZSI6bnVsbCwiYm9keSI6bnVsbH19LCJzdGF0ZSI6W10sInZlaGljbGVTdGF0ZSI6InVzZWQiLCJjbG9zZU9uU3VibWl0Ijp0cnVlLCJmaWxsZmxhZyI6ZmFsc2UsIm5vdHJhbnNmb3JtIjp0cnVlLCJuYW1lIjpmYWxzZSwiYW5pbWF0aW9uIjoiZmFkZUFuZFBvcCIsImFuaW1hdGlvblNwZWVkIjozMDAsImNsb3NlT25CYWNrZ3JvdW5kQ2xpY2siOmZhbHNlLCJkaXNtaXNzTW9kYWxDbGFzcyI6ImNsb3NlLXJldmVhbC1tb2RhbCIsImNsb3NlQnV0dG9uIjp0cnVlLCJieXBhc3NDb25zZW50IjpmYWxzZSwidGhyZXNob2xkIjpmYWxzZSwidGhyZXNob2xkVmFsdWUiOmZhbHNlLCJzY3JvbGx1cCI6ZmFsc2UsIm1haW5wb3B1cCI6ZmFsc2UsInNob3dvbmxvYWQiOmZhbHNlLCJjb3VudGRvd24iOjE3NzcxNzYwMDAsImNvbmZpcm1Gb3JtIjpbeyJuYW1lIjoibGFiZWwiLCJ2YWx1ZSI6IiIsImNsYXNzIjoibGFiZWxlbWFpbCJ9LHsibmFtZSI6InNlY3Rpb24iLCJ2YWx1ZSI6IiIsImNsYXNzIjoibGFiZWxzZWN0aW9uIn0seyJuYW1lIjoiYnJhbmQiLCJ2YWx1ZSI6IiIranNfZDJjX2dldF92YWwoIjFlcml2OTAwcGRhODh3dzgiKSsiIiwiY2xhc3MiOiJicmFuZGVtYWlsIn0seyJuYW1lIjoibW9kZWwiLCJ2YWx1ZSI6IiIranNfZDJjX2dldF92YWwoIjEwcGE3djNxZWxkY29zayIpKyIiLCJjbGFzcyI6Im1vZGVsZW1haWwifSx7Im5hbWUiOiJ5ZWFyIiwidmFsdWUiOiIiK2pzX2QyY19nZXRfdmFsKCJyODJ6Zmt4YTJkd3NzMDAiKSsiIiwiY2xhc3MiOiJ5ZWFyZW1haWwifSx7Im5hbWUiOiJnb29nbGVpZCIsInZhbHVlIjoiIn0seyJuYW1lIjoiZ29vZ2xlaWRkMmNtZWRpYSIsInZhbHVlIjoiIn0seyJuYW1lIjoiYmluZ2NvbmlkIiwidmFsdWUiOiIifSx7Im5hbWUiOiJiaW5nYWN0aW9uaWQiLCJ2YWx1ZSI6IiJ9LHsibmFtZSI6ImJpbmdkb21haW5pZCIsInZhbHVlIjoiIn0seyJuYW1lIjoiYWRyb2xsQWR2IiwidmFsdWUiOiIifSx7Im5hbWUiOiJhZHJvbGxQaXgiLCJ2YWx1ZSI6IiJ9LHsibmFtZSI6ImZhY2Vib29rQ29uSWQiLCJ2YWx1ZSI6IiJ9LHsibmFtZSI6ImRvbWFpbiIsInZhbHVlIjoiYWxiaWtpYS5jb20ifSx7Im5hbWUiOiJyZWZlcnJlciIsInZhbHVlIjoiIitqc19kMmNfZ2V0X3ZhbCgiaTNnc2F4Z3M1ams4d2NrIikrIiJ9LHsibmFtZSI6ImlzZXhwcmVzcyIsInZhbHVlIjoiMCIsImNsYXNzIjoiaXNleHByZXNzIn0seyJuYW1lIjoiaXNwcm9tbyIsInZhbHVlIjoiMCJ9LHsibmFtZSI6ImlzaG9tZXBhZ2UiLCJ2YWx1ZSI6IjAifSx7Im5hbWUiOiJ0ZXh0Q2FyU2VjdGlvblR5cGUiLCJ2YWx1ZSI6IiIranNfZDJjX2dldF92YWwoInNvN3l1cWFqNGR3Y2M4cyIpKyIifSx7Im5hbWUiOiJmcm9tQUEiLCJ2YWx1ZSI6IiJ9LHsibmFtZSI6ImxhbmciLCJ2YWx1ZSI6IkZSRU5DSCJ9XX0pO30pO31jYXRjaChlenoxKXtpZihjb25zb2xlJiZjb25zb2xlLmxvZykKY29uc29sZS5sb2coZXp6MSk7fTsKLyoqIC9tL2pzL3NrZWxldG9uLmNvbnRyb2xsZXIuanMgKiovCnZhciBfX19kMmNfc2tlbGV0b25jb250cm9sbGVyanNfY19vbj0iMjAyNi0wNC0wMSAxMTozMDowMiI7J3VzZSBzdHJpY3QnO3RyeXtqUXVlcnkoZnVuY3Rpb24oYyl7bGV0IGg7Y29uc29sZS5sb2coIkdTUEVFRC1BRlRFUi1KUVVFUlk6IisoRGF0ZS5ub3coKS0obnVsbCE9KGg9d2luZG93LmdUZXN0U3BlZWRDb25uKT9oOjApKS8xRTMpO3dpbmRvdy5nUmVzb3VyY2VMb2FkZXJBbmRKcXVlcnlJc1JlYWR5PSEwO3NldFRpbWVvdXQoKCk9Pnt2YXIgYj1jKCIjZW1iZWQtY29udGFpbmVyLXlvdXR1YmUtaG9tZXBhZ2UtYnlpZCIpO2NvbnNvbGUubG9nKCJTS0VMRVRPTnwjZW1iZWQtY29udGFpbmVyLXlvdXR1YmUtaG9tZXBhZ2UtYnlpZCIpO2lmKGIubGVuZ3RoKXt2YXIgYT1iLmF0dHIoImRhdGEtaWZyYW1lLWF0dHJpYnV0ZXMiKTsidW5kZWZpbmVkIiE9PWEmJnZvaWQgMCE9PWEmJihhPUpTT04ucGFyc2UoYXRvYihhKSksYygiPGlmcmFtZS8+IixhKS5hcHBlbmRUbyhiKSl9fSw3RTMpO3NldFRpbWVvdXQoKCk9Pnt2YXIgYj1jKCIjZW1iZWQtY29udGFpbmVyLW1hcHMtaG9tZXBhZ2UtYnlpZCIpOwpjb25zb2xlLmxvZygiU0tFTEVUT058I2VtYmVkLWNvbnRhaW5lci1tYXBzLWhvbWVwYWdlLWJ5aWQiKTtpZihiLmxlbmd0aCl7dmFyIGE9Yi5hdHRyKCJkYXRhLWlmcmFtZS1hdHRyaWJ1dGVzIik7InVuZGVmaW5lZCIhPT1hJiZ2b2lkIDAhPT1hJiYoYT1KU09OLnBhcnNlKGF0b2IoYSkpLGluamVjdEdvb2dsZU1hcHNLZXkoZnVuY3Rpb24oZil7YS5zcmM9YS5zcmMucmVwbGFjZSgiX19LRVlfXyIsZik7YygiPGlmcmFtZS8+IixhKS5hcHBlbmRUbyhiKX0pKX19LDdFMyk7d2luZG93LmRlbGF5ZWRDc3M9ZnVuY3Rpb24oYil7dmFyIGE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3R5bGUiKTthLnR5cGU9InRleHQvY3NzIjthLnN0eWxlU2hlZXQ\/YS5zdHlsZVNoZWV0LmNzc1RleHQ9YjphLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGIpKTtjb25zb2xlLmxvZygiU0tFTEVUT058REVMQVlFRExPQURDU1N8IitiKTtkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKGEpfTsKd2luZG93LmRlbGF5ZWRDc3MoIi5oaWRlT25QcmVMb2Fke3Zpc2liaWxpdHk6dmlzaWJsZSAhaW1wb3J0YW50O30iKTtzZXRUaW1lb3V0KCgpPT57Y29uc29sZS5sb2coIlNLRUxFVE9OfHNldHRpbmcgbWVudSBtdXRhdGlvbiBvYnNlcnZlciIpO3RyeXtjb25zdCBhPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi5za2VsZXRvbi5za2VsZXRvbi1kZXNrdG9wLnNrZWxldG9uLWNvbmQtMiIpO2lmKG51bGwhPT1hKXtjb25zdCBmPW5ldyBNdXRhdGlvbk9ic2VydmVyKChkLGspPT57Zm9yKGNvbnN0IGUgb2YgZCkiYXR0cmlidXRlcyI9PT1lLnR5cGUmJiJjbGFzcyI9PT1lLmF0dHJpYnV0ZU5hbWUmJmUudGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucygidXBfbWVudSIpJiYoZD1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIuc2tlbGV0b24uc2tlbGV0b24tZGVza3RvcC5za2VsZXRvbi1jb25kLTIiKSxlLnRhcmdldC5jbGFzc0xpc3QuY29udGFpbnMoImZpeGVkIik\/ZC5jbGFzc0xpc3QuY29udGFpbnMoImZpeGVkIil8fApkLmNsYXNzTGlzdC5hZGQoImZpeGVkIik6ZC5jbGFzc0xpc3QuY29udGFpbnMoImZpeGVkIikmJmQuY2xhc3NMaXN0LnJlbW92ZSgiZml4ZWQiKSl9KSxnPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi5za2VsZXRvbi5za2VsZXRvbi1kZXNrdG9wLnNrZWxldG9uLWNvbmQtMiA+IC51cF9tZW51Iik7ZyYmKGYub2JzZXJ2ZShnLHthdHRyaWJ1dGVzOiEwLGNoaWxkTGlzdDohMCxzdWJ0cmVlOiEwfSksZy5jbGFzc0xpc3QuY29udGFpbnMoImZpeGVkIikmJmEuY2xhc3NMaXN0LmFkZCgiZml4ZWQiKSl9fWNhdGNoKGEpe2NvbnNvbGUuZXJyb3IoIlNLRUxFVE9OfC5za2VsZXRvbi5za2VsZXRvbi1kZXNrdG9wLnNrZWxldG9uLWNvbmQtMiIsYSl9Y29uc29sZS5sb2coIlNLRUxFVE9OfGlzLWxvYWRlZC1ub3ciKTtjb25zdCBiPWMoIi5za2VsZXRvbiIpO2IuYWRkQ2xhc3MoImlzLWxvYWRlZC1ub3ciKTtzZXRUaW1lb3V0KCgpPT57Y29uc29sZS5sb2coIlNLRUxFVE9OfHJlbW92aW5nIHNrZWxldG9ucyBmaXJzdCBpbWcgYmFja2dyb3VuZCIpOwpiLmZpbmQoImltZy5pcy1za2VsZXRvbi1iZy1pbWciKS5yZW1vdmUoKX0sMzx3aW5kb3cuZ1NwZWVkQ29ubj8xRTQ6NkUzKX0sMjAwKX0pfWNhdGNoKGMpe307","menu_new":"","html":"Cgk8c3R5bGU+CgkJaHRtbCB7Zm9udC1zaXplOjEwMCU7fQoJCW1haW4gKiB7bWFyZ2luOmluaXRpYWw7fQoJCWZvb3RlciB7Y2xlYXI6IGJvdGg7fQoJPC9zdHlsZT4KCgk8ZGl2IGlkPSJkMmNfYm9keUNvbnRlbnQiIGNsYXNzPSJkMmMtZW1iZWRkZWQtY29udGVudC1tb2JpbGUiPgoKCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0iYWN0aXZlc2l0ZWxhbmd1YWdlIiB2YWx1ZT0iRlJFTkNIIi8+CgoJCTxpbnB1dAoJCQl0eXBlPSJoaWRkZW4iCgkJCWlkPSJkMmNEYXRhU3RvcmUiCgkJCWRhdGEtYmFzZXVybD0iaHR0cHM6Ly9hbGJpa2lhLmNvbSIKCQkJZGF0YS1ib2R5Y2xhc3M9IiBoZWFkaW5nQ2Fwc09uIEZSRU5DSCBOZXdTcnAyIE5ld1NycDJNb2JpbGUiCgkJCWRhdGEtaXNtb2JpbGU9IjEiCgkJPgoKCQk8c2NyaXB0IHR5cGU9ImFwcGxpY2F0aW9uL2xkK2pzb24iPgogICAgeyJAY29udGV4dCI6Imh0dHBzOlwvXC9zY2hlbWEub3JnIiwiQHR5cGUiOiJXZWJTaXRlIiwibmFtZSI6IkFMQkkgS2lhIE1hc2NvdWNoZSIsInVybCI6Imh0dHBzOlwvXC93d3cuYWxiaWtpYS5jb21cLyIsInBvdGVudGlhbEFjdGlvbiI6eyJAdHlwZSI6IlNlYXJjaEFjdGlvbiIsInRhcmdldCI6Imh0dHBzOlwvXC93d3cuYWxiaWtpYS5jb21cL29jY2FzaW9uXC9yZWNoZXJjaGUuaHRtbD9xPXtzZWFyY2hfdGVybV9zdHJpbmd9IiwicXVlcnktaW5wdXQiOiJyZXF1aXJlZCBuYW1lPXNlYXJjaF90ZXJtX3N0cmluZyJ9fQo8L3NjcmlwdD48c2NyaXB0IHR5cGU9ImFwcGxpY2F0aW9uL2xkK2pzb24iPgogICAgeyJAY29udGV4dCI6Imh0dHBzOlwvXC9zY2hlbWEub3JnIiwiQHR5cGUiOiJBdXRvbW90aXZlQnVzaW5lc3MiLCJ1cmwiOiJodHRwczpcL1wvd3d3LmFsYmlraWEuY29tIiwibmFtZSI6IkFMQkkgS2lhIE1hc2NvdWNoZSIsImltYWdlIjoiaHR0cHM6XC9cL3d3dy5hbGJpa2lhLmNvbVwvaW1hZ2VzXC9Mb2dvTW9iaWxlXC9LaWEtTG9nby5zdmciLCJsb2dvIjoiaHR0cHM6XC9cL3d3dy5hbGJpa2lhLmNvbVwvaW1hZ2VzXC9Mb2dvTW9iaWxlXC9LaWEtTG9nby5zdmciLCJzYW1lQXMiOlsiaHR0cHM6XC9cL3d3dy5mYWNlYm9vay5jb21cL2FsYmlraWFtYXNjb3VjaGVcLyIsImh0dHBzOlwvXC90d2l0dGVyLmNvbVwvYWxiaWxlZ2VhbnQiLCJodHRwczpcL1wvY2EubGlua2VkaW4uY29tXC9jb21wYW55XC9hbGJpLWxlLWdlYW50IiwiaHR0cHM6XC9cL3d3dy55b3V0dWJlLmNvbVwvY2hhbm5lbFwvVUNIamtUSTlRR3d3UTlob2hmTldCQk1nIiwiaHR0cHM6XC9cL3d3dy5pbnN0YWdyYW0uY29tXC9hbGJpbGVnZWFudFwvIl0sImdlbyI6eyJAdHlwZSI6Ikdlb0Nvb3JkaW5hdGVzIiwibGF0aXR1ZGUiOiI0NS43MjIzOTEwMDAwIiwibG9uZ2l0dWRlIjoiLTczLjYwNjEyMjAwMDAifSwiYWRkcmVzcyI6eyJAdHlwZSI6IlBvc3RhbEFkZHJlc3MiLCJzdHJlZXRBZGRyZXNzIjoiMzYwMCwgYXZlbnVlIGRlIGxhIEdhcmUiLCJhZGRyZXNzTG9jYWxpdHkiOiJNYXNjb3VjaGUiLCJhZGRyZXNzUmVnaW9uIjoiUXVlYmVjIiwicG9zdGFsQ29kZSI6Iko3SyAzQzEiLCJhZGRyZXNzQ291bnRyeSI6IkNBIn0sInRlbGVwaG9uZSI6Ijg1NS04NjUtMjUyNCIsInByaWNlUmFuZ2UiOiIyNjI5NSQtNjMxNDQkIiwib3BlbmluZ0hvdXJzU3BlY2lmaWNhdGlvbiI6W3siQHR5cGUiOiJPcGVuaW5nSG91cnNTcGVjaWZpY2F0aW9uIiwiZGF5T2ZXZWVrIjoiTW9uZGF5Iiwib3BlbnMiOiIwOTowMCIsImNsb3NlcyI6IjIwOjAwIn0seyJAdHlwZSI6Ik9wZW5pbmdIb3Vyc1NwZWNpZmljYXRpb24iLCJkYXlPZldlZWsiOiJUdWVzZGF5Iiwib3BlbnMiOiIwOTowMCIsImNsb3NlcyI6IjIwOjAwIn0seyJAdHlwZSI6Ik9wZW5pbmdIb3Vyc1NwZWNpZmljYXRpb24iLCJkYXlPZldlZWsiOiJXZWRuZXNkYXkiLCJvcGVucyI6IjA5OjAwIiwiY2xvc2VzIjoiMjA6MDAifSx7IkB0eXBlIjoiT3BlbmluZ0hvdXJzU3BlY2lmaWNhdGlvbiIsImRheU9mV2VlayI6IlRodXJzZGF5Iiwib3BlbnMiOiIwOTowMCIsImNsb3NlcyI6IjIwOjAwIn0seyJAdHlwZSI6Ik9wZW5pbmdIb3Vyc1NwZWNpZmljYXRpb24iLCJkYXlPZldlZWsiOiJGcmlkYXkiLCJvcGVucyI6IjA5OjAwIiwiY2xvc2VzIjoiMjA6MDAifSx7IkB0eXBlIjoiT3BlbmluZ0hvdXJzU3BlY2lmaWNhdGlvbiIsImRheU9mV2VlayI6IlNhdHVyZGF5Iiwib3BlbnMiOiIwOTowMCIsImNsb3NlcyI6IjE3OjAwIn1dfQo8L3NjcmlwdD48bGluayByZWw9InNob3J0Y3V0IGljb24iIGhyZWY9Imh0dHBzOi8vYWxiaWtpYS5jb20vaW1hZ2VzL0Zhdmljb24vZmF2aWNvbi5pY28iIHR5cGU9ImltYWdlL3gtaWNvbiI+PGxpbmsgcmVsPSJhbHRlcm5hdGUiIGhyZWY9Imh0dHBzOi8vd3d3LmFsYmlraWEuY29tL2VuZy8iIGhyZWZsYW5nPSJlbi1jYSI+PGxpbmsgcmVsPSJwcmVsb2FkIiBhcz0iaW1hZ2UiIGhyZWY9Imh0dHBzOi8vYWxiaWtpYS5jb20vaW1hZ2VzL0xvZ29Nb2JpbGUvS2lhLUxvZ28uc3ZnIj48bGluayByZWw9InByZWxvYWQiIGhyZWY9Ii8vZm9udHMuZDJjbWVkaWEuY2Evd2ViZm9udHMvZGVza3RvcC1hd2Vzb21lL3dlYmZvbnRzL2ZhLWxpZ2h0LTMwMC53b2ZmMiIgYXM9ImZvbnQiIHR5cGU9ImZvbnQvV09GRjIiIGNyb3Nzb3JpZ2luPjxsaW5rIHJlbD0icHJlbG9hZCIgaHJlZj0iLy9mb250cy5kMmNtZWRpYS5jYS93ZWJmb250cy9kZXNrdG9wLWF3ZXNvbWUvd2ViZm9udHMvZmEtc29saWQtOTAwLndvZmYyIiBhcz0iZm9udCIgdHlwZT0iZm9udC9XT0ZGMiIgY3Jvc3NvcmlnaW4+PGxpbmsgcmVsPSJwcmVsb2FkIiBocmVmPSIvL2ZvbnRzLmQyY21lZGlhLmNhL3dlYmZvbnRzL2Rlc2t0b3AtYXdlc29tZS93ZWJmb250cy9mYS1yZWd1bGFyLTQwMC53b2ZmMiIgYXM9ImZvbnQiIHR5cGU9ImZvbnQvV09GRjIiIGNyb3Nzb3JpZ2luPjxsaW5rIHJlbD0icHJlbG9hZCIgaHJlZj0iLy9mb250cy5kMmNtZWRpYS5jYS9LaWFTaWduYXR1cmVCb2xkLndvZmYyIiBhcz0iZm9udCIgdHlwZT0iZm9udC9XT0ZGMiIgY3Jvc3NvcmlnaW4+PGxpbmsgcmVsPSJwcmVsb2FkIiBocmVmPSIvL2ZvbnRzLmQyY21lZGlhLmNhL0tpYVNpZ25hdHVyZUxpZ2h0LndvZmYyIiBhcz0iZm9udCIgdHlwZT0iZm9udC9XT0ZGMiIgY3Jvc3NvcmlnaW4+PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2FsYmlraWEuY29tL2Nzc19yL3Jlc291cmNlLmxvYWRlci5mci5jc3M\/dj0zJmFtcDtjc3NycGw9JmFtcDt3c3dpZHRoPTAmYW1wO2RldmljZT1tb2JpbGUmYW1wO3VhPVEwTkNiM1F2TWk0d0lDaG9kSFJ3Y3pvdkwyTnZiVzF2Ym1OeVlYZHNMbTl5Wnk5bVlYRXZLUT09Ij48bGluayByZWw9InByZWNvbm5lY3QiIGhyZWY9Imh0dHBzOi8vY2FyaW1hZ2VzLmQyY21lZGlhLmNhIiBjcm9zc29yaWdpbj48bGluayByZWw9InByZWNvbm5lY3QiIGhyZWY9Imh0dHBzOi8vaW1hZ2VzY2RuLmQyY21lZGlhLmNhIiBjcm9zc29yaWdpbj48bGluayByZWw9InByZWNvbm5lY3QiIGhyZWY9Imh0dHBzOi8vZm9udHMuZDJjbWVkaWEuY2EiIGNyb3Nzb3JpZ2luPjxsaW5rIHJlbD0iY2Fub25pY2FsIiBocmVmPSJodHRwczovL3d3dy5hbGJpa2lhLmNvbS9lbWJlZGVyL3Byb2Nlc3MvZnIvbSIgZGF0YS1jYW5vbmljYWwtaGVhZGVyLXdpZGdldD0iMSI+PHNjcmlwdCBzcmM9Imh0dHBzOi8vY2RuLmNvb2tpZWxhdy5vcmcvc2NyaXB0dGVtcGxhdGVzL290U0RLU3R1Yi5qcyIgZGF0YS1kb2N1bWVudC1sYW5ndWFnZT0idHJ1ZSIgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBjaGFyc2V0PSJVVEYtOCIgZGF0YS1kb21haW4tc2NyaXB0PSI0MTJkNzliZi1jMWRmLTQ3ZWEtYmZmNC1mOGNiNjM5OWZmNmIiPjwvc2NyaXB0PjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vY2RuLmNvb2tpZWxhdy5vcmcvY29uc2VudC80MTJkNzliZi1jMWRmLTQ3ZWEtYmZmNC1mOGNiNjM5OWZmNmIvT3RBdXRvQmxvY2suanMiPjwvc2NyaXB0PjxkaXYgaWQ9ImRpZ2l0YWxfZGF0YV9pbmZvIiBkYXRhLWFuYWx5dGljcy10eXBlPSJzaGlmdCBkaWdpdGFsIj4KCQkJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0idmVoaWNsZUNhdGVnb3J5IiB2YWx1ZT0iMCI+CgkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InN0YXR1cyIgdmFsdWU9InskU0RWRUhJQ0xFU1RBVFVTfSI+CgkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9Im1ha2UiIHZhbHVlPSIiPgoJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJtb2RlbCIgdmFsdWU9IiI+CgkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InllYXIiIHZhbHVlPSIiPgoJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJ2aW4iIHZhbHVlPSIiPgoJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJ0cmltIiB2YWx1ZT0ieyRWRVJTSU9OfSI+CgkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImRpc3BsYXllZFByaWNlIiB2YWx1ZT0ieyRDQVJESVNQTEFZRURQUklDRX0iPgoJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJtc3JwIiB2YWx1ZT0ieyRDQVJNU1JQfSI+CgkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImZ1ZWxUeXBlIiB2YWx1ZT0ieyRDQVJGVUVMVFlQRX0iPgoJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJ0cmFuc21pc3Npb24iIHZhbHVlPSJ7JENBUlRSQU5TTUlTU0lPTn0iPgoJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJkcml2ZVRyYWluIiB2YWx1ZT0ieyRDQVJEUklWRVRSQUlOfSI+CgkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImVuZ2luZSIgdmFsdWU9InskQ0FSRU5HSU5FfSI+CgkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImV4dENvbG9yIiB2YWx1ZT0ieyRDQVJFWFRDT0xPUn0iPgoJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJpbnRDb2xvciIgdmFsdWU9InskQ0FSSU5UQ09MT1J9Ij4KCQkJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ic2RfY2l0eV90ZXN0IiB2YWx1ZT0iTWFzY291Y2hlIj4KCQkJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0idHJhZmZpY190eXBlIiB2YWx1ZT0iIj4KCQkJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZGVhbGVyQkFDIiB2YWx1ZT0iIj4KCQk8L2Rpdj4KCQk8IS0tIE9POjoxNWVkNGNlNTkwODU5YjNlMDk3NTE1YWQ5MGVkOWYyZSAtLT48IS0tIG9lbUNlcnRpZmljYXRpb24gIktpYSBTSElGVCIgLS0+CQk8ZGl2IGlkPSJhc2NfZGlnaXRhbF9kYXRhX2luZm8iIGRhdGEtYW5hbHl0aWNzPSJnb29nbGVfYW5hbHl0aWNzXzQiPgoJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJ2ZWhpY2xlQ2F0ZWdvcnkiIHZhbHVlPSIiPgoJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJtYWtlIiB2YWx1ZT0iIj4KCQkJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ibW9kZWwiIHZhbHVlPSIiPgoJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJ5ZWFyIiB2YWx1ZT0iIj4KCQkJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0idmluIiB2YWx1ZT0iIj4KCQkJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0idHJpbSIgdmFsdWU9IiI+CgkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InByaWNlIiB2YWx1ZT0iIj4KCQkJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZXh0Y29sb3IiIHZhbHVlPSIiPgoJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJkYXRlX2xpc3RpbmciIHZhbHVlPSIiPgoJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJkMmFzY19pc0NlcnRpZmllZCIgdmFsdWU9IiI+CgkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InZlaGljbGVTdGF0dXMiIHZhbHVlPSIiPgoJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJkZWFsZXJDb2RlIiB2YWx1ZT0iNjEwNTYiPgoJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJwYWdlVHlwZSIgdmFsdWU9IlNob3dyb29tIj4KCQkJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZGVhbGVyX25hbWUiIHZhbHVlPSJBTEJJIEtpYSBNYXNjb3VjaGUiPgoJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJkZWFsZXJfYWRkcmVzcyIgdmFsdWU9IjM2MDAsIGF2ZW51ZSBkZSBsYSBHYXJlLCBNYXNjb3VjaGUsIExhbmF1ZGnDqHJlIj4KCQkJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZGVhbGVyX3Bvc3RhbCIgdmFsdWU9Iko3SyAzQzEiPgoJCTwvZGl2PgoJCTwhLS0gT086OjNmNTYwMmNhZmQ3ZWZkMDQxYWZhNGJiOWJiYWMyNGFkIC0tPgo8IS0tRU5EX1JFTU9WQUJMRV9DT0RFX0JMT0NLX0NPTU1FTlRfMDAwMi0tPgoKPCEtLUVORF9SRU1PVkFCTEVfQ09ERV9CTE9DS19DT01NRU5UXzAwMDEtLT4KPCEtLSBHbG9iYWwgc2l0ZSB0YWcgKGd0YWcuanMpIC0gR29vZ2xlIEFuYWx5dGljcyAtLT4KCjwhLS1TVEFSVF9SRU1PVkFCTEVfQ09ERV9CTE9DS19DT01NRU5UXzAwMDEtLT4KPHNjcmlwdCBhc3luYyBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZXRhZ21hbmFnZXIuY29tL2d0YWcvanM\/aWQ9Ry1YMVNMN1NFOTlQIiB0eXBlPSJ0ZXh0L3BsYWluIiBjbGFzcz0ib3B0YW5vbi1jYXRlZ29yeS1DMDAwMSI+PC9zY3JpcHQ+CjwhLS1FTkRfUkVNT1ZBQkxFX0NPREVfQkxPQ0tfQ09NTUVOVF8wMDAxLS0+Cgo8IS0tICMjVk1KUzIjIyAtLT48IS0tIEdPIElEIC0tPgo8IS0tIEJJTkcgU0NSSVBUIC0tPgo8IS0tIE9POjpmNzNmYTZhYmJmYjRiYWIzZjQ5ZGFhZmIzODkxZTI3ZiAtLT4KICAgICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiIGRhdGEtcmw9IjEiPgovKiogL2Nzcy9yb290LmNzcyAqKi8KOnJvb3R7IC0tcmF0aW86MS4xNTsgLS1zMDowOyAtLXMtOTpjYWxjKHZhcigtLXMtOCkgLyB2YXIoLS1yYXRpbykpOyAtLXMtODpjYWxjKHZhcigtLXMtNykgLyB2YXIoLS1yYXRpbykpOyAtLXMtNzpjYWxjKHZhcigtLXMtNikgLyB2YXIoLS1yYXRpbykpOyAtLXMtNjpjYWxjKHZhcigtLXMtNSkgLyB2YXIoLS1yYXRpbykpOyAtLXMtNTpjYWxjKHZhcigtLXMtNCkgLyB2YXIoLS1yYXRpbykpOyAtLXMtNDpjYWxjKHZhcigtLXMtMykgLyB2YXIoLS1yYXRpbykpOyAtLXMtMzpjYWxjKHZhcigtLXMtMikgLyB2YXIoLS1yYXRpbykpOyAtLXMtMjpjYWxjKHZhcigtLXMtMSkgLyB2YXIoLS1yYXRpbykpOyAtLXMtMTpjYWxjKHZhcigtLXMpIC8gdmFyKC0tcmF0aW8pKTsgLS1zOjAuNXJlbTsgLS1zMTpjYWxjKHZhcigtLXMpICogdmFyKC0tcmF0aW8pKTsgLS1zMjpjYWxjKHZhcigtLXMxKSAqIHZhcigtLXJhdGlvKSk7IC0tczM6Y2FsYyh2YXIoLS1zMikgKiB2YXIoLS1yYXRpbykpOyAtLXM0OmNhbGModmFyKC0tczMpICogdmFyKC0tcmF0aW8pKTsgLS1zNTpjYWxjKHZhcigtLXM0KSAqIHZhcigtLXJhdGlvKSk7IC0tczY6Y2FsYyh2YXIoLS1zNSkgKiB2YXIoLS1yYXRpbykpOyAtLXM3OmNhbGModmFyKC0tczYpICogdmFyKC0tcmF0aW8pKTsgLS1zODpjYWxjKHZhcigtLXM3KSAqIHZhcigtLXJhdGlvKSk7IC0tczk6Y2FsYyh2YXIoLS1zOCkgKiB2YXIoLS1yYXRpbykpOyAtLWZzLWJhc2U6MC44NzVyZW07IC0tZnM6dmFyKC0tZnMtYmFzZSk7IC0tZnMtOTpjYWxjKHZhcigtLWZzLTgpIC8gdmFyKC0tcmF0aW8pKTsgLS1mcy04IDpjYWxjKHZhcigtLWZzLTcpIC8gdmFyKC0tcmF0aW8pKTsgLS1mcy03IDpjYWxjKHZhcigtLWZzLTYpIC8gdmFyKC0tcmF0aW8pKTsgLS1mcy02IDpjYWxjKHZhcigtLWZzLTUpIC8gdmFyKC0tcmF0aW8pKTsgLS1mcy01IDpjYWxjKHZhcigtLWZzLTQpIC8gdmFyKC0tcmF0aW8pKTsgLS1mcy00IDpjYWxjKHZhcigtLWZzLTMpIC8gdmFyKC0tcmF0aW8pKTsgLS1mcy0zIDpjYWxjKHZhcigtLWZzLTIpIC8gdmFyKC0tcmF0aW8pKTsgLS1mcy0yIDpjYWxjKHZhcigtLWZzLTEpIC8gdmFyKC0tcmF0aW8pKTsgLS1mcy0xIDpjYWxjKHZhcigtLWZzMCkgLyB2YXIoLS1yYXRpbykpOyAtLWZzMCA6dmFyKC0tZnMtYmFzZSwgMC44NzVyZW0pOyAtLWZzMSA6Y2FsYyh2YXIoLS1mczApICogdmFyKC0tcmF0aW8pKTsgLS1mczIgOmNhbGModmFyKC0tZnMxKSAqIHZhcigtLXJhdGlvKSk7IC0tZnMzIDpjYWxjKHZhcigtLWZzMikgKiB2YXIoLS1yYXRpbykpOyAtLWZzNCA6Y2FsYyh2YXIoLS1mczMpICogdmFyKC0tcmF0aW8pKTsgLS1mczUgOmNhbGModmFyKC0tZnM0KSAqIHZhcigtLXJhdGlvKSk7IC0tZnM2IDpjYWxjKHZhcigtLWZzNSkgKiB2YXIoLS1yYXRpbykpOyAtLWZzNyA6Y2FsYyh2YXIoLS1mczYpICogdmFyKC0tcmF0aW8pKTsgLS1mczggOmNhbGModmFyKC0tZnM3KSAqIHZhcigtLXJhdGlvKSk7IC0tZnM5IDpjYWxjKHZhcigtLWZzOCkgKiB2YXIoLS1yYXRpbykpOyAtLWRlZmF1bHQtYmxhY2s6IzA1MTQxZjsgLS10YWItY29sb3Itc3BlY2lhbGNhc2U6IzAwMDAwMDsgLS10YWItY29sb3I6I2ZmZmZmZjsgLS10YWItdGV4dC1jb2xvcjojMDUxNDFmOyAtLXRhYi1jb2xvci1tb2I6IzA1MTQxZjsgLS10YWItdGV4dC1jb2xvci1tb2I6I2ZmZmZmZjsgLS10YWItY29sb3ItbW9iLWV4OiNjN2M4Y2E7IC0tdGFiLXRleHQtY29sb3ItbW9iLWV4OiMwNTE0MWY7IC0tbWVudS1jb2xvci1ib3JkZXI6I2ZmZmZmZjsgLS1tZW51LWNvbG9yLW1vYjojZmZmZmZmOyAtLW1lbnUtdGV4dC1jb2xvci1tb2I6IzA1MTQxZjsgLS1tZW51LWNvbG9yLW1vYi1leDojYzdjOGNhOyAtLW1lbnUtdGV4dC1jb2xvci1tb2ItZXg6IzA1MTQxZjsgLS1wcm9tby1jb2xvcjojMDUxNDFmOyAtLXByb21vLXRleHQtY29sb3I6I2ZmZmZmZjsgLS1uZXdzcnAtbW9kZWwtY29sb3I6IzA1MTQxZjsgLS1mb290ZXItbGluay10aXRsZS1jb2w6I2ZmZmZmZjsgLS1mb290ZXItaXRlbXMtbGluay1jb2xvcjojZmZmZmZmOyAtLWZvb3Rlci1jb25kaXRpb25zLWNvbG9yOiNmZmZmZmY7IC0tZm9vdGVyLWJnLWNvbG9yOiMwNTE0MWY7IC0tZ2VuZXJhbC1iZy1jb2xvcjojZmZmZmZmOyAtLXRvcC1wcm9tby1idG4tdHh0OiNmZmZmZmY7IC0tdG9wLXByb21vLWJ0bi1iZzojMDUxNDFmOyAtLXByb21vLWJ0bi1jb2xvcjojMDUxNDFmOyAtLXByb21vLWJ0bi10ZXh0LWNvbG9yOiNmZmZmZmY7IC0tcHJvbW8tYnRuLWhvdmVyLWJnLWNvbG9yOiMwNTE0MWY7IC0tcHJvbW8tYnRuLWhvdmVyLXRleHQtY29sb3I6I2ZmZmZmZjsgLS1wcm9tby1idG4tYm9yZGVyLXJhZGl1czoxcHg7IC0taG9tZS1iZy1jb2xvcjojZmZmZmZmOyAtLWJ1c2luZXNzLWRlc2MtdHh0LWNvbG9yOiMwNTE0MWY7IC0tYnVzaW5lc3MtZGVzYy1iZy1jb2xvcjojZmZmZmZmOyAtLWJ1c2luZXNzLWRlc2MtdHh0LWNvbG9yX21vYjojMDUxNDFmOyAtLWJ1c2luZXNzLWRlc2MtYmctY29sb3JfbW9iOiNmZmZmZmY7IC0tdXNlZC1zbGlkZXItYmc6I2ZmZmZmZjsgLS11c2VkLXNsaWRlci10eHQ6IzA1MTQxZjsgLS11c2VkLXNsaWRlci1wcmljZTojMDUxNDFmOyAtLW5ldy1zbGlkZXItYmc6OyAtLW5ldy12ZHAtYmVzdHByaWNlLWJ0bi1iZy1jb2xvcjojMDUxNDFmOyAtLW5ldy12ZHAtYmVzdHByaWNlLWJ0bi10ZXh0LWNvbG9yOiNmZmZmZmY7IC0tZGVhbGVyLW5hbWUtY29sb3I6I2ZmZmZmZjsgLS1uZXdzLWJnLWNvbG9yOiNmZmZmZmY7IC0tbmV3cy10ZXh0LWNvbG9yOiMwNTE0MWY7IC0tZXhpdC1wb3B1cC1iZ2NvbDo7IC0tdXNlZC1vZmZlci1idG4tdGV4dC1jb2xvcjojZmZmZmZmOyAtLXVzZWQtb2ZmZXItYnRuLWJnLWNvbG9yOiMwNTE0MWY7IC0tZmluYW5jZS1idG4tdGV4dC1jb2xvcjojZmZmZmZmOyAtLWZpbmFuY2UtYnRuLWJnLWNvbG9yOiMwNTE0MWY7IC0tZmluYW5jZS1idG4tdGV4dC1jb2xvci1uZXdpbnY6I2ZmZmZmZjsgLS1maW5hbmNlLWJ0bi1iZy1jb2xvci1uZXdpbnY6IzA1MTQxZjsgLS1tZW51LWhvdmVyLXRleHQtY29sb3I6IzA1MTQxZjsgLS1tZW51LWhvdmVyLWJnLWNvbG9yOiNmZmZmZmY7IC0tbWVudS1iZy1jb2xvcjpyZ2IoMjU1LDI1NSwyNTUpOyAtLW1haW4tbWVudS1iZy1jb2xvcjpyZ2IoMjU1LDI1NSwyNTUpOyAtLWRlYWxlci1hZGRyZXNzLWNvbG9yOiNmZmZmZmY7IC0tZGVhbGVyLWFkZHJlc3MtZm9udC1zaXplOjE0OyAtLXdoaXRlOiNmZmY7IC0tbGlnaHQ6I2Y2ZjZmNjsgLS1saWdodC1ncmF5OiNlZmVmZWY7IC0tbWlkLWdyYXk6I2RkZDsgLS1ncmF5OiM5OTk7IC0tY250ci1ncmF5OiM3Njc2NzY7IC0tZGFyay1ncmF5OiM2NjY7IC0tYmxhY2stZ3JheTojMzMzOyAtLWJsYWNrOiMwMDA7IC0tYm9yZGVyLXRoaW46MXB4OyAtLWJvcmRlci10aGljazoycHg7IC0tdHh0LXVwcGVyOnVwcGVyY2FzZTsgLS1mb250LW1lbnU6U2lnbmF0dXJlOyAtLWZvbnQtbWVudS1tb2I6U2lnbmF0dXJlOyAtLWZvbnQtbWVudS13ZWlnaHQ6NDAwOyAtLWZvbnQtaDE6U2lnbmF0dXJlOyAtLWZvbnQtaDEtbW9iOlNpZ25hdHVyZTsgLS1mb250LWgxLXdlaWdodDo0MDA7IC0tZm9udC1oMjpTaWduYXR1cmU7IC0tZm9udC1oMi1tb2I6U2lnbmF0dXJlOyAtLWZvbnQtaDItd2VpZ2h0OjQwMDsgLS1mb250LXRleHQ6U2lnbmF0dXJlTGlnaHQ7IC0tZm9udC10ZXh0LW1vYjpTaWduYXR1cmVMaWdodDsgLS1mb250LXRleHQtd2VpZ2h0OjQwMDsgLS1mb250LWJ1dHRvbnM6U2lnbmF0dXJlTGlnaHQ7IC0tZm9udC1idXR0b25zLW1vYjpTaWduYXR1cmVMaWdodDsgLS1mb250LWJ1dHRvbnMtd2VpZ2h0OjQwMDsgLS1jb3JuZXItcmliYm9uLWJnLWNvbG9yOiMwNTE0MWY7IC0tY29ybmVyLXJpYmJvbi10ZXh0LWNvbG9yOiNmZmZmZmY7IC0taG9tZXBhZ2UtbWVudS1pdGVtLWNvbG9yOiNmZmZmZmY7IC0taG9tZXBhZ2UtaGVhZGVyLWl0ZW0tY29sb3I6I2ZmZmZmZjsgLS1ob21lcGFnZS1iYW5uZXItc2VhcmNoLWJhci12aWRlby1vcGFjaXR5OjMwOyAtLWhvbWVwYWdlLXNvY2lhbC1iZy1jb2xvcjojZmZmZmZmOyAtLWhvbWVwYWdlLXNvY2lhbC10ZXh0LWNvbG9yOiMwMDAwMDA7IC0taG9tZXBhZ2Utc29jaWFsLWxvZ28tY29sb3I6IzE4NzdmMjsgLS1wcm9tb3Rpb24tYmFja2dyb3VuZC1jb2xvcjojRkZGRkZGOyAtLXByb21vdGlvbi10ZXh0LWNvbG9yOiMwNTE0MUY7IC0tdW5kZXJiYW5uZXJfc2VhcmNoX2Jhcl9iZzojYzdjOGNhOyAtLXVuZGVyYmFubmVyX3NlYXJjaF9iYXJfY29sb3I6IzA1MTQxZjsgLS11bmRlcmJhbm5lcl9zZWFyY2hfYmFyX2J0bl9iZzojMDUxNDFmOyAtLXVuZGVyYmFubmVyX3NlYXJjaF9iYXJfYnRuX2NvbG9yOiNmZmZmZmY7IC0tbmV3dmRwLWJlc3RwcmljZS10ZXh0LWNvbG9yLXByaWNlOiMwNTE0MWY7IC0tYWRtaW4tc29jaWFsLWN1c3RvbS1jb2xvci1waWNrZXItdGV4dDojOTM5NTk4OyAtLWFkbWluLWdlbmVyYWwtaGVhZGVyLWJnLWNvbG9yOiNmZmZmZmY7IC0tYWRtaW4tZ2VuZXJhbC10ZXh0LXVzLWRlYWxlci1saW5lLXRleHQtY29sb3I6I2ZmZmZmZjsgLS1hZG1pbi1nZW5lcmFsLXRleHQtdXMtZGVhbGVyLWxpbmUtYmctY29sb3I6IzA1MTQxZjsgLS10cmFkZWluYmFyLWJ0bi1iZzojMDUxNDFmOyAtLXRyYWRlaW5iYXItYnRuLWNvbG9yOiNmZmZmZmY7IC0tZGVmYXVsdC1ibGFjay10ZXh0OiMwNTE0MWY7IC0tcHJvbW8tYnRuLWJnLWNvbG9yOiMwNTE0MWY7IC0tdHJhZGVpbmJhci1iZzojYzdjOGNhOyAtLXRyYWRlaW5iYXItY29sb3I6IzA1MTQxZjsgLS1sYW5ndWFnZS1idG4tYWN0aXZlLWJnLWNvbG9yOiMwNTE0MWY7IC0taGVhZGVyLXNlcnZpY2UtYXBwb2ludG1lbnQtdGV4dC1jb2xvci1iZzojZmZmZmZmOyAtLWhlYWRlci1zZXJ2aWNlLWFwcG9pbnRtZW50LXRleHQtY29sb3I6IzA1MTQxZjsgLS1hZG1pbi1nZW5lcmFsLWFsZXJ0LWJhci10ZXh0LWNvbG9yOiMwNTE0MWY7IC0tdG9wLXByb21vLWJ0bi10eHQtY29sb3I6cmdiKDUsMjAsMzEpOyAtLXRvcC1wcm9tby1idG4tYmctY29sb3I6I0ZGRkZGRjsgLS1uZXctdmVoaWNsZS1jYXJvdXNlbC10eHQtY29sb3I6IzA1MTQxZjsgLS1kaWdpdGFsLXJldGFpbGluZy1kcmF3ZXItd2lkdGg6JTsgfSAqIHsgYm9yZGVyLWNvbG9yOmluaGVyaXQ7IGJvcmRlci1zdHlsZTpzb2xpZDsgYm9yZGVyLXdpZHRoOjA7IGZvbnQtZmFtaWx5OmluaGVyaXQ7IGxpbmUtaGVpZ2h0OjEuMmVtOyB9IG9sLCB1bCwgbWVudSB7IGxpc3Qtc3R5bGU6bm9uZTsgbWFyZ2luOjA7IHBhZGRpbmc6MDsgfSBhIHsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IGNvbG9yOmluaGVyaXQ7IH0gaDEsaDIsaDMsaDQsaDUsaDYsIHAgeyBtYXJnaW46MDsgfSBoMSxoMixoMyxoNCxoNSxoNnsgZm9udC1zaXplOmluaGVyaXQ7IGZvbnQtd2VpZ2h0OmluaGVyaXQ7IH0gaW1nIHsgbWF4LXdpZHRoOjEwMCU7IH0gdGFibGUgeyBib3JkZXItY29sbGFwc2U6Y29sbGFwc2U7IH0gdGV4dGFyZWEgeyB3aGl0ZS1zcGFjZTpyZXZlcnQ7IH0gOndoZXJlKFtoaWRkZW5dKXsgZGlzcGxheTpub25lICFpbXBvcnRhbnQ7IH0gOndoZXJlKFtjb250ZW50ZWRpdGFibGVdKXsgLW1vei11c2VyLW1vZGlmeTpyZWFkLXdyaXRlOyAtd2Via2l0LXVzZXItbW9kaWZ5OnJlYWQtd3JpdGU7IG92ZXJmbG93LXdyYXA6YnJlYWstd29yZDsgbGluZS1icmVhazphZnRlci13aGl0ZS1zcGFjZTsgLXdlYmtpdC1saW5lLWJyZWFrOmFmdGVyLXdoaXRlLXNwYWNlOyB9IDp3aGVyZShbZHJhZ2dhYmxlPSJ0cnVlIl0pIHsgLXdlYmtpdC11c2VyLWRyYWc6ZWxlbWVudDsgfSAjQWZ0ZXJDYXJvdXNlbCA+IC5jb250YWluZXIsICNob21lcGFnZS1jb250ZW50ID4gLmNvbnRhaW5lciwgI2hvbWVfQWZ0ZXJBY3Rpb25Cb3ggPiAuY29udGFpbmVyLCAjaG9tZV9BZnRlckRpc3BsYXlWZWhpY2xlID4gLmNvbnRhaW5lciB7IG1heC13aWR0aDoxMjAwcHg7IG1hcmdpbi1sZWZ0OmF1dG87IG1hcmdpbi1yaWdodDphdXRvOyB9ICNBZnRlckNhcm91c2VsID4gLmNvbnRhaW5lcjpoYXMoLkFmdGVyQ2Fyb3VzZWxGdyksICNob21lX0FmdGVyQWN0aW9uQm94ID4gLmNvbnRhaW5lcjpoYXMoLkFmdGVyQ2Fyb3VzZWxGdyksICNob21lX0FmdGVyRGlzcGxheVZlaGljbGUgPiAuY29udGFpbmVyOmhhcyguQWZ0ZXJDYXJvdXNlbEZ3KSB7IG1heC13aWR0aDpub25lOyBwYWRkaW5nLWxlZnQ6MDsgcGFkZGluZy1yaWdodDowOyB9IGJvZHkuaGFzLWQyY2JvdCAjQWZ0ZXJDYXJvdXNlbCAuY29udGFpbmVyLCBib2R5Lmhhcy1kMmNib3QgI2hvbWVwYWdlLWNvbnRlbnQgLmNvbnRhaW5lciwgYm9keS5oYXMtZDJjYm90ICNob21lX0FmdGVyQWN0aW9uQm94IC5jb250YWluZXIsIGJvZHkuaGFzLWQyY2JvdCAjaG9tZV9BZnRlckRpc3BsYXlWZWhpY2xlIC5jb250YWluZXIgeyBtYXgtd2lkdGg6bm9uZSAhaW1wb3J0YW50OyBwYWRkaW5nLWxlZnQ6MCAhaW1wb3J0YW50OyBwYWRkaW5nLXJpZ2h0OjAgIWltcG9ydGFudDsgfSAucmVzcG9uc2l2ZS1lZGl0b3IgLmNvbnRhaW5lci1mbHVpZHsgb3ZlcmZsb3cteDpoaWRkZW47IH0gLnJlc3BvbnNpdmUtZWRpdG9yIC5jb250YWluZXItZmx1aWQgKiB7IGxpbmUtaGVpZ2h0OmluaXRpYWw7IH0gLmNrZWRpdG9yV3JhcHBlcnsgb3ZlcmZsb3cteDpoaWRkZW47IHNjcm9sbGJhci13aWR0aDpub25lOyB9ICogeyBmb250LXZhcmlhbnQtbnVtZXJpYzpsaW5pbmctbnVtczsgfQovKiogL2Nzcy92Mi9uYXYuY3NzICoqLwpoZWFkZXIubW9iaWxlLWhlYWRlcnsgLS10eHQtY29sb3I6dmFyKC0tbWVudS10ZXh0LWNvbG9yLW1vYiwgdmFyKC0tdGFiLXRleHQtY29sb3IpKTsgcG9zaXRpb246c3RpY2t5OyB0b3A6MDsgd2lkdGg6MTAwdnc7IGhlaWdodDozLjJyZW07IGJveC1zaGFkb3c6cmdiYSgwLCAwLCAwLCAwLjUpIDAgMCA1cHggM3B4OyBiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLW1lbnUtY29sb3ItbW9iLCB2YXIoLS10YWItY29sb3IpKTsgY29sb3I6dmFyKC0tdHh0LWNvbG9yKTsgei1pbmRleDoxMDAwOyB9IGRpdi5tb2JpbGUtaGVhZGVyLXNwYWNlcnsgcG9zaXRpb246cmVsYXRpdmU7IHdpZHRoOjEwMHZ3OyBoZWlnaHQ6My4ycmVtOyBkaXNwbGF5OmJsb2NrOyB9IGhlYWRlci5tb2JpbGUtaGVhZGVyID4gKiArICogeyBkaXNwbGF5OmZsZXg7IGp1c3RpZnktY29udGVudDpjZW50ZXI7IGFsaWduLWl0ZW1zOmNlbnRlcjsgaGVpZ2h0OjEwMCU7IH0gaGVhZGVyLm1vYmlsZS1oZWFkZXIudGFsbCA+ICogKyAqeyBib3JkZXItbGVmdDoxcHggc29saWQgI2RkZDsgZmxleDoxIDEgYXV0bzsgfSBoZWFkZXIgLmxvZ28tYWN0aW9uIH4gKiB7IG1pbi13aWR0aDoyLjVyZW07IH0gLmhlYWRlci1kZWFsZXItbmFtZSB7IGNvbG9yOmluaGVyaXQ7IGZvbnQtc2l6ZTp2YXIoLS1mcy0xKTsgLS1mczp2YXIoLS1mcy0xKTsgfSBoZWFkZXIgYXNpZGV7IC0tdHh0LWNvbG9yOnZhcigtLW1lbnUtdGV4dC1jb2xvci1tb2IsIHZhcigtLXRhYi10ZXh0LWNvbG9yKSk7IHBvc2l0aW9uOmFic29sdXRlOyB0b3A6Mi45NXJlbTsgbGVmdDotMTlyZW07IHdpZHRoOm1pbig4MHZ3LCAxOXJlbSk7IG1pbi1oZWlnaHQ6MTAwdmg7IGZvbnQtc2l6ZTp2YXIoLS1mcyk7IHRyYW5zaXRpb246dHJhbnNmb3JtIDMwMG1zIGVhc2UtaW47IGJhY2tncm91bmQtY29sb3I6dmFyKC0tbWVudS1jb2xvci1tb2IsIHZhcigtLXRhYi1jb2xvcikpOyBjb2xvcjp2YXIoLS1tZW51LXRleHQtY29sb3IpOyBtYXgtaGVpZ2h0OjEwMHZoOyBvdmVyZmxvdzphdXRvOyB6LWluZGV4OjEwMDsgfSBuYXZ7IC0tZnM6dmFyKC0tZnMxKTsgZm9udC1zaXplOnZhcigtLWZzKTsgfSBuYXYgLm1lbnUtaXRlbSwgbmF2IC5zdWJtZW51LWl0ZW0geyBwYWRkaW5nOnZhcigtLXMpOyB9IG5hdiAubWVudS1pdGVteyBhbGlnbi1pdGVtczpjZW50ZXI7IH0gbmF2IC5tZW51LWl0ZW0uaW52ZXJzZS1jb2xvcnsgY29sb3I6dmFyKC0tbWVudS1ob3Zlci10ZXh0LWNvbG9yKTsgYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1tZW51LWhvdmVyLWJnLWNvbG9yKTsgfSBuYXYgLnN1Ym1lbnUtaXRlbXsgYm9yZGVyLWNvbG9yOnZhcigtLWdyYXkpOyBiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLW1lbnUtY29sb3ItbW9iLWV4LCB2YXIoLS10YWItY29sb3IpKTsgY29sb3I6dmFyKC0tbWVudS10ZXh0LWNvbG9yLW1vYi1leCk7IH0gbmF2IC5zdWJtZW51LWl0ZW0gc3ZnLmljb24geyBmaWxsOnZhcigtLXRhYi10ZXh0LWNvbG9yLW1vYi1leCwgdmFyKC0tdGFiLXRleHQtY29sb3IpKTsgfSBuYXYgLm1lbnUtZ3JvdXAgeyBib3JkZXItdG9wLXdpZHRoOnZhcigtLWJvcmRlci10aGluKTsgfSBuYXYgLm1lbnUtZ3JvdXAgfiAubWVudS1ncm91cCB7IGJvcmRlci10b3Atd2lkdGg6MDsgfSBuYXYgLm1lbnVDb2xscGFzZSBzdmd7IHRyYW5zZm9ybTpyb3RhdGUoMTgwZGVnKTsgfSAjaG9tZW5hdiBuYXZ7IC0tdHh0LWNvbG9yOnZhcigtLXRhYi10ZXh0LWNvbG9yLW1vYiwgdmFyKC0tdGFiLXRleHQtY29sb3IpKTsgfSAjaG9tZW5hdiBuYXYgLm1lbnUtaXRlbXsgYmFja2dyb3VuZDp2YXIoLS10YWItY29sb3ItbW9iLCB2YXIoLS10YWItY29sb3IpKTsgY29sb3I6dmFyKC0tdGFiLXRleHQtY29sb3ItbW9iLCB2YXIoLS10YWItdGV4dC1jb2xvcikpOyB9ICNob21lbmF2IG5hdiAubWVudS1pdGVtLmludmVyc2UtY29sb3J7IGNvbG9yOnZhcigtLW1lbnUtaG92ZXItdGV4dC1jb2xvcik7IGJhY2tncm91bmQtY29sb3I6dmFyKC0tbWVudS1ob3Zlci1iZy1jb2xvcik7IH0gI2hvbWVuYXYgbmF2IC5zdWJtZW51LWl0ZW17IGJhY2tncm91bmQtY29sb3I6dmFyKC0tdGFiLWNvbG9yLW1vYi1leCwgdmFyKC0tdGFiLWNvbG9yKSk7IGNvbG9yOnZhcigtLXRhYi10ZXh0LWNvbG9yLW1vYi1leCwgdmFyKC0tdGFiLXRleHQtY29sb3IpKTsgfSAjaG9tZW5hdiBuYXYgbGl7IHBhZGRpbmctdG9wOnZhcigtLXMtOCk7IH0gI2hvbWVuYXYgbmF2IC5tZW51LWl0ZW17IGJvcmRlci1yYWRpdXM6MC4yNXJlbTsgfSAjaG9tZW5hdiBuYXYgLm1lbnUtaXRlbS5MQU5HVUFHRXsgZGlzcGxheTpub25lOyB9IC5idXJnZXItbWVudS1jb250YWluZXJ7IHBvc2l0aW9uOnJlbGF0aXZlOyB9IC5idXJnZXJfdG9wIHsgdHJhbnNmb3JtLW9yaWdpbjowIDUwJTsgfSAuYnVyZ2VyX2JvdHRvbSB7IHRyYW5zZm9ybS1vcmlnaW46MCA1MCU7IH0gLmJ1cmdlci1tZW51LWJ1dHRvbiA+IHNwYW4geyB3aWR0aDoxLjZyZW07IGhlaWdodDowLjI1cmVtOyBiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLW1lbnUtdGV4dC1jb2xvci1tb2IpOyBib3JkZXItcmFkaXVzOjAuMjVyZW07IHRyYW5zaXRpb246dHJhbnNmb3JtIDAuNHMgZWFzZTsgei1pbmRleDoxMDE7IH0gI2JtX3RvZ2dsZTpjaGVja2VkIH4gLmJ1cmdlci1tZW51LWJ1dHRvbiAuYnVyZ2VyX3RvcCwgI2JtX2JvdHRvbV90b2dnbGU6Y2hlY2tlZCB+IC5idXJnZXItbWVudS1idXR0b24gLmJ1cmdlcl90b3B7IG9wYWNpdHk6MTsgdHJhbnNmb3JtOnJvdGF0ZSg0NWRlZykgdHJhbnNsYXRlKDAuMXJlbSwgMCk7IH0gI2JtX3RvZ2dsZTpjaGVja2VkIH4gLmJ1cmdlci1tZW51LWJ1dHRvbiAuYnVyZ2VyX21pZGRsZSwgI2JtX2JvdHRvbV90b2dnbGU6Y2hlY2tlZCB+IC5idXJnZXItbWVudS1idXR0b24gLmJ1cmdlcl9taWRkbGV7IG9wYWNpdHk6MDsgdHJhbnNmb3JtOnJvdGF0ZSgwZGVnKSBzY2FsZSgwLjIsIDAuMik7IH0gI2JtX3RvZ2dsZTpjaGVja2VkIH4gLmJ1cmdlci1tZW51LWJ1dHRvbiAuYnVyZ2VyX2JvdHRvbSwgI2JtX2JvdHRvbV90b2dnbGU6Y2hlY2tlZCB+IC5idXJnZXItbWVudS1idXR0b24gLmJ1cmdlcl9ib3R0b217IG9wYWNpdHk6MTsgdHJhbnNmb3JtOnJvdGF0ZSgtNDVkZWcpIHRyYW5zbGF0ZSgwLjFyZW0sIDApOyB9ICNibV90b2dnbGU6Y2hlY2tlZCB+IC5idXJnZXItbWVudS1idXR0b24gfiBhc2lkZXsgdHJhbnNmb3JtOnRyYW5zbGF0ZSgxOXJlbSk7IH0gbGFiZWxbZm9yPSJibV90b2dnbGUiXXsgcG9zaXRpb246YWJzb2x1dGU7IHRvcDowOyBsZWZ0OjA7IHdpZHRoOjEwMCU7IGhlaWdodDoxMDAlOyB6LWluZGV4OjEwMjsgfSAudGhpbkxlZnQgLmhlYWRlci1kZWFsZXItbmFtZSB7IGZvbnQtc2l6ZTp2YXIoLS1mczApOyBtYXJnaW4tbGVmdDo4cHg7IH0gLnRoaW5MZWZ0IC5sb2dvLWFjdGlvbiBhIHsgZmxleC1iYXNpczoxNSUgfSBoZWFkZXIudGhpbkxlZnQgYXNpZGUgeyBsZWZ0OnVuc2V0OyByaWdodDowOyB0cmFuc2Zvcm06c2NhbGVYKDApIHRyYW5zbGF0ZVgoMTlyZW0pOyB0cmFuc2Zvcm0tb3JpZ2luOjEwMCUgNTAlOyB9IC50aGluTGVmdCAjYm1fdG9nZ2xlOmNoZWNrZWQgfiAuYnVyZ2VyLW1lbnUtYnV0dG9uIH4gYXNpZGV7IHRyYW5zZm9ybTp1bnNldDsgfQovKiogL2Nzcy9za2VsZXRvbi5jc3MgKiovCi5oaWRlT25QcmVMb2FkIHsgdmlzaWJpbGl0eTpoaWRkZW47IH0gLnJldmVhbC1tb2RhbCB7IHZpc2liaWxpdHk6aGlkZGVuOyBwb3NpdGlvbjphYnNvbHV0ZTsgdG9wOi0xMDAwcHg7IH0gLnNrZWxldG9uIHsgZGlzcGxheTpibG9jazsgcG9zaXRpb246cmVsYXRpdmU7IG1hcmdpbjowOyBwYWRkaW5nOjA7IGJhY2tncm91bmQ6I2VlZTsgfSAuc2tlbGV0b246OmJlZm9yZSB7IGRpc3BsYXk6ZmxleDsgd2lkdGg6MTAwJTsgaGVpZ2h0OjEwMCU7IHBvc2l0aW9uOmFic29sdXRlOyB6LWluZGV4OjQ7IGNvbnRlbnQ6IiI7IGZvbnQtc2l6ZTowLjc1cmVtOyBsaW5lLWhlaWdodDowLjc1cmVtOyBjb2xvcjojODg4OyBhbmltYXRpb246c2tlbGV0b24tYW5pbSAycyBsaW5lYXIgaW5maW5pdGU7IGp1c3RpZnktY29udGVudDpjZW50ZXI7IGxldHRlci1zcGFjaW5nOjAuMjVyZW07IGFsaWduLWl0ZW1zOmNlbnRlcjsgZm9udC13ZWlnaHQ6Ym9sZDsgfSBAa2V5ZnJhbWVzIHNrZWxldG9uLWFuaW0geyAwJSB7IGNvbnRlbnQ6IiI7IH0gMjUlIHsgY29udGVudDoifCI7IH0gNTAlIHsgY29udGVudDoifHwiOyB9IDc1JSB7IGNvbnRlbnQ6Inx8fCI7IH0gfSAuc2tlbGV0b24gZGl2OmZpcnN0LWNoaWxkLCAuc2tlbGV0b24gc3BhbjpmaXJzdC1jaGlsZCB7IG9wYWNpdHk6MDsgdHJhbnNpdGlvbjpvcGFjaXR5IC4zMDBzOyB9IC5za2VsZXRvbi5za2VsZXRvbi1kZXNrdG9wLnNrZWxldG9uLWNvbmQtMiB7IGJhY2tncm91bmQ6bm9uZTsgfSAuc2tlbGV0b24uc2tlbGV0b24tZGVza3RvcC5za2VsZXRvbi1jb25kLTIuZml4ZWQgeyB3aWR0aDppbmhlcml0ICFpbXBvcnRhbnQ7IH0gLnNrZWxldG9uLmlzLWxvYWRlZC1ub3cgeyBiYWNrZ3JvdW5kOnVuc2V0OyB9IC5za2VsZXRvbi5pcy1sb2FkZWQtbm93IGRpdjpmaXJzdC1jaGlsZCwgLnNrZWxldG9uLmlzLWxvYWRlZC1ub3cgc3BhbjpmaXJzdC1jaGlsZCB7IG9wYWNpdHk6MTsgfSAuc2tlbGV0b24uaXMtbG9hZGVkLW5vdzo6YmVmb3JlIHsgY29udGVudDoiIjsgZGlzcGxheTpub25lOyBhbmltYXRpb246dW5zZXQ7IH0gLnNrZWxldG9uLnNrZWxldG9uLWRlc2t0b3Auc2tlbGV0b24tY29uZC0yLmZpeGVkLmlzLWxvYWRlZC1ub3cgPiBkaXY6Zmlyc3QtY2hpbGQgeyBvcGFjaXR5Oi43NTsgfSAuc2tlbGV0b24uc2tlbGV0b24tZGVza3RvcC5za2VsZXRvbi1jb25kLTIuZml4ZWQuaXMtbG9hZGVkLW5vdyA+IGRpdjpmaXJzdC1jaGlsZDpob3ZlciB7IG9wYWNpdHk6MTsgfQovKiogL2Nzcy9jc3MuY3NzICoqLwpodG1sLCBib2R5LCBzcGFuLCBhcHBsZXQsIG9iamVjdCwgaWZyYW1lLCBoMSwgaDIsIGgzLCBoNCwgaDUsIGg2LCBwLCBibG9ja3F1b3RlLCBwcmUsIGFiYnIsIGFjcm9ueW0sIGFkZHJlc3MsIGJpZywgY2l0ZSwgY29kZSwgZGVsLCBkZm4sIGVtLCBmb250LCBpbWcsIGlucywga2JkLCBxLCBzLCBzYW1wLCBzbWFsbCwgc3RyaWtlLCBzdHJvbmcsIHN1Yiwgc3VwLCB0dCwgdmFyLCBiLCB1LCBpLCBjZW50ZXIsIGRsLCBkdCwgZGQsIG9sLCB1bCwgbGksIGZpZWxkc2V0LCBmb3JtLCBsYWJlbCwgbGVnZW5kLCB0YWJsZSwgY2FwdGlvbiwgdGJvZHksIHRmb290LCB0aGVhZCwgdHIsIHRoLCB0ZCB7IG1hcmdpbjowOyBwYWRkaW5nOjA7IH0gaHRtbHsgZm9udC1zaXplOjFyZW0gOyB9IGJvZHkgeyBwYWRkaW5nOjA7IG1hcmdpbi1sZWZ0OjBweDsgbWFyZ2luLXRvcDowOyBtYXJnaW4tcmlnaHQ6MHB4OyBtYXJnaW4tYm90dG9tOjBweDsgZm9udC1zaXplOjAuODc1cmVtIDsgZm9udC1mYW1pbHk6dmFyKC0tZm9udC10ZXh0KTsgZm9udC13ZWlnaHQ6dmFyKC0tZm9udC10ZXh0LXdlaWdodCk7IGJhY2tncm91bmQ6IHRvcCBjZW50ZXIgbm8tcmVwZWF0OyBiYWNrZ3JvdW5kLWltYWdlOnVybCgnL2ltYWdlcy9ibGFuay5naWYnKTsgYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1nZW5lcmFsLWJnLWNvbG9yKTsgfSBpbnB1dCwgdGV4dGFyZWEsIHNlbGVjdCwgYnV0dG9uIHsgZm9udC1mYW1pbHk6dmFyKC0tZm9udC10ZXh0KTsgZm9udC13ZWlnaHQ6dmFyKC0tZm9udC10ZXh0LXdlaWdodCk7IH0gLm5hdiBsaSBhLnRvcF9saW5rLCAudXBfbWVudSB1bC5uYXYgdWwuc3ViIGxpIGEuc3VidGl0bGUsIC5pbWdfbWVudS51cF9tZW51IHVsLm5hdiAjTWFpbk1lbnVfTkVXPnVsLnN1YiBsaT51bC5zdWI+bGkuaGFzU3ViIGxpIGEsIGJvZHkgLndyYXBwZXIgLnVwX21lbnUgLm5hdnsgZm9udC1mYW1pbHk6dmFyKC0tZm9udC1tZW51KTsgZm9udC13ZWlnaHQ6dmFyKC0tZm9udC1tZW51LXdlaWdodCk7IH0gaDF7IGZvbnQtZmFtaWx5OnZhcigtLWZvbnQtaDEpOyBmb250LXdlaWdodDp2YXIoLS1mb250LWgxLXdlaWdodCk7IGNsZWFyOmJvdGg7IH0gLmZuLm9yZ3sgZm9udC1mYW1pbHk6dmFyKC0tZm9udC1oMSk7IGZvbnQtd2VpZ2h0OnZhcigtLWZvbnQtaDEtd2VpZ2h0KTsgfSBpbnB1dFt0eXBlPWJ1dHRvbl0sIGJ1dHRvbi5qcVRyYW5zZm9ybUJ1dHRvbiBzcGFuIHNwYW4sIC5idXR0b25fMSBhLCAuYnV0dG9uXzIgYSwgLmJ1dHRvbl8zIGEsIC5idXR0b25fdW5kZXIgYSwgLmJ1dHRvbl9jbXBfbGVmdCBhLCAuYnV0dG9uX2NtcF9yaWdodCBhLCAuYnV0dG9uX2NtcF9hY3QgYSwgLnB1bGxvdXRzIGEsIC5pZE5hdjEgbGkgYS50b3BfbGluazEsIC5jdGFfcHJpY2UuYWx0LCAuY3RhX2NyZWRpdC5hbHQsIC5jdGFfdGVzdERyaXZlLCAuY3RhX2V2YWwuYWx0LCAuY3RhX3NlcnZpY2UuYWx0LCAuY3RhX3BhcnRzLmFsdCwgLmN0YV90aXJlcy5hbHQsIC5jdGFfc3ZjcHJvbW8uYWx0LCAuYm94MTUgaDIgYSwgLmJveDE5IGgyIGEsIC5ib3gyNyBhLCAudmlvciwgLmJ0bi1kZWZhdWx0LCAuYnRuLXNtLCAuYnRuLWxnIHsgZm9udC1mYW1pbHk6dmFyKC0tZm9udC1idXR0b25zKTsgZm9udC13ZWlnaHQ6dmFyKC0tZm9udC1idXR0b25zLXdlaWdodCk7IH0gaDIsaDMsaDQsaDUsaDZ7IGZvbnQtZmFtaWx5OnZhcigtLWZvbnQtaDIpOyBmb250LXdlaWdodDp2YXIoLS1mb250LWgyLXdlaWdodCk7IH0gc3Ryb25neyBmb250LXdlaWdodDo5MDAgIWltcG9ydGFudDsgfSAjbWFpbkRpdi53cmFwcGVyIC50b3BfYmd7IG1heC1oZWlnaHQ6MjUwcHg7IG1pbi1oZWlnaHQ6MTE1cHg7IH0gLmhlYWRlci1pbWFnZS13cmFwcGVyIGltZy5pbWFnZS1wYWRkaW5nIHsgcGFkZGluZy1ib3R0b206NXB4OyB9IC5ja2VkaXRvcldyYXBwZXIgaDIgeyBtYXJnaW4tbGVmdDowcHggIWltcG9ydGFudDsgbWFyZ2luLXJpZ2h0OjBweCAhaW1wb3J0YW50OyBtYXJnaW4tdG9wOjE1cHggIWltcG9ydGFudDsgbWFyZ2luLWJvdHRvbToxNXB4ICFpbXBvcnRhbnQ7IH0gLmNrZWRpdG9yV3JhcHBlciBhIHsgZmxvYXQ6bm9uZSAhaW1wb3J0YW50OyBtYXJnaW4tbGVmdDowcHggIWltcG9ydGFudDsgZm9udC1zaXplOjEwMCUgIWltcG9ydGFudDsgfSAuY2tlZGl0b3JXcmFwcGVyIHAgeyBmbG9hdDpub25lICFpbXBvcnRhbnQ7IH0gLmNrZWRpdG9yV3JhcHBlciBwOmVtcHR5IHsgbWFyZ2luLWJvdHRvbToxcmVtOyB9IC5yZXNwb25zaXZlLWVkaXRvciAuY29sbGFwc2Uuc2hvdywgLnJlc3BvbnNpdmUtZWRpdG9yIC5jb2xsYXBzZS5zaG93IC5jYXJkLWJvZHkgeyB2aXNpYmlsaXR5OnZpc2libGUgIWltcG9ydGFudDsgfSBhLmRlc2NyaXB0aW9uLWF1dG8tbGluayB7IHRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmUgIWltcG9ydGFudDsgY29sb3I6aW5oZXJpdDsgfSAuY2tlZGl0b3JXcmFwcGVyIFtkYXRhLW4xZWQtY29sLWJvcmRlci1yaWdodD0idHJ1ZSJdOm5vdChbc3R5bGUqPSJib3JkZXIiXSkgeyBib3JkZXItcmlnaHQ6MXB4IHNvbGlkICNkZWUyZTY7IH0gLmNscnsgY2xlYXI6Ym90aDt9IC5mbGVmdHsgZmxvYXQ6bGVmdDsgfSBpbnB1dDppbnZhbGlke2JveC1zaGFkb3c6bm9uZTsgLW1vei1ib3gtc2hhZG93Om5vbmU7fSAuY29uZGl0aW9ucy0tY29udGFpbmVyIHsgZGlzcGxheTpmbGV4OyBmbGV4LWRpcmVjdGlvbjpyb3c7IGp1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuOyBtYXJnaW4tYm90dG9tOjhweDsgfSAuY29uZGl0aW9ucy0tY29udGFpbmVyIC5jb25kaXRpb25zIHsgZmxleC1ncm93OjI7IGZvbnQtc2l6ZTowLjgxM3JlbSA7IGxpbmUtaGVpZ2h0OjE4cHg7IGNvbG9yOiNmZmZmZmY7IH0gLmNvbmRpdGlvbnNGb290ZXJ7IGZsb2F0OmxlZnQ7IGZvbnQtc2l6ZTowLjgxM3JlbSA7IHRleHQtZGVjb3JhdGlvbjpub25lOyBmb250LXdlaWdodDpub3JtYWw7IGxpbmUtaGVpZ2h0OjE4cHg7IHRleHQtdHJhbnNmb3JtOm5vbmU7IHRleHQtYWxpZ246bGVmdDsgbWFyZ2luLWxlZnQ6NXB4OyBtYXJnaW4tdG9wOjI1cHg7IGNvbG9yOiNmZmZmZmY7IH0gLmNvbmRpdGlvbnMtLWNvbnRhaW5lciBhLCAuY29uZGl0aW9uc0Zvb3RlciBhIHsgdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTsgY3Vyc29yOnBvaW50ZXI7IGZvbnQtc2l6ZTowLjgxM3JlbSA7IGNvbG9yOiNmZmZmZmY7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgfSAuZXh0ZW5kZWRQaG9uZVRyaWdnZXIgYXsgY29sb3I6aW5oZXJpdDsgfSAubWFpbkRpdi13cmFwcGVyID4gLmxhbmd1YWdlQmFyLXplcm8geyBtYXJnaW46MDsgaGVpZ2h0OmluaGVyaXQ7IHdpZHRoOjEwMCU7IH0gLmhlYWRlci1zZWN0aW9uIC5sYW5ndWFnZUJhciB7IG1hcmdpbjowIGF1dG8gMi43NXJlbTsgd2lkdGg6aW5oZXJpdDsgfSAuaGVhZGVyLXNlY3Rpb24gLmxhbmd1YWdlQmFyICsgLnBob25lIHsgbWFyZ2luLWJvdHRvbTowLjVyZW07IH0gLmxhbmd1YWdlQmFyIHVsIGE6aG92ZXJ7Zm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzY2NjY2NjsgdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTt9IC5sYW5ndWFnZUJhciB1bCBhOnZpc2l0ZWR7cGFkZGluZy1yaWdodDozNXB4OyB3aWR0aDphdXRvOyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojNjY2NjY2OyB0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lOyB0ZXh0LWFsaWduOnJpZ2h0O30gLmxhbmd1YWdlQmFyLmxhbmd1YWdlQmFyLXplcm8geyBoZWlnaHQ6MDsgcGFkZGluZzowOyBtYXJnaW46MDsgfSAjbWFpbkRpdi53cmFwcGVyLm5vLWljb25zIHsgcGFkZGluZy10b3A6MC4wMXJlbTsgfSAudG9wX3JvdXsgd2lkdGg6OTYwcHg7IGhlaWdodDo0cHg7IGZsb2F0OmxlZnQ7IH0gLmxvZ297IH0gLmxvZ29Ob1BhZGRpbmcgaW1neyB3aWR0aDoxMDAlO30gLmxhbmd1YWdlQmFyIGEuZGVza3RvcF9sYW5nX2J1dHRvbiwgLmxhbmd1YWdlQmFyIHNwYW4uZGVza3RvcF9sYW5nX2J1dHRvbnsgcG9zaXRpb246cmVsYXRpdmU7IGRpc3BsYXk6aW5saW5lLWJsb2NrOyBmb250LXNpemU6MC43NXJlbSA7IHdpZHRoOjI4cHg7IGhlaWdodDoyNnB4OyBwYWRkaW5nOjA7IHRleHQtYWxpZ246Y2VudGVyOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgdmVydGljYWwtYWxpZ246dG9wOyBib3JkZXI6MXB4IHNvbGlkICNCNkI3Qjk7IGNvbG9yOiNCNkI3Qjk7IGNvbG9yOiMwNTE0MWY7IGJhY2tncm91bmQtY29sb3I6I2ZmZmZmZjsgYmFja2dyb3VuZC1jb2xvcjojZmZmZmZmOyBiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmY7IH0gLmxhbmd1YWdlQmFyIC5kZXNrdG9wX2xhbmdfYnV0dG9uLmFjdGl2ZSwgLmxhbmd1YWdlQmFyIGEuZGVza3RvcF9sYW5nX2J1dHRvbjpob3ZlcnsgY29sb3I6I2ZmZmZmZjsgY29sb3I6I2ZmZmZmZjsgYmFja2dyb3VuZC1jb2xvcjojQjZCN0I5OyBiYWNrZ3JvdW5kLWNvbG9yOiMwNTE0MWY7IH0gLmxhbmd1YWdlQmFyIHNwYW4uZGVza3RvcF9sYW5nX2J1dHRvbjpudGgtY2hpbGQoZXZlbiksIC5sYW5ndWFnZUJhciBhLmRlc2t0b3BfbGFuZ19idXR0b246bnRoLWNoaWxkKGV2ZW4peyBtYXJnaW4tbGVmdDoycHg7IH0gLmxhbmd1YWdlQmFyIGEuZGVza3RvcF9sYW5nX2J1dHRvbiBzcGFuLmRlc2t0b3BfbGFuZ19idXR0b25fdGV4dCwgLmxhbmd1YWdlQmFyIHNwYW4uZGVza3RvcF9sYW5nX2J1dHRvbiBzcGFuLmRlc2t0b3BfbGFuZ19idXR0b25fdGV4dHsgcG9zaXRpb246YWJzb2x1dGU7IHRvcDo1MCU7IHRyYW5zZm9ybTp0cmFuc2xhdGUoLTUwJSwgLTUwJSk7IH0gLmxvZ29Ob1BhZGRpbmd7IG1heC13aWR0aDo1MCU7IGZsb2F0OmxlZnQ7IG1hcmdpbi10b3A6LTRweDt9IC52LWNhcmQudG9wX2JnIHsgZGlzcGxheTpmbGV4OyBqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjsgYWxpZ24taXRlbXM6Y2VudGVyOyBtYXJnaW4tdG9wOjEwcHg7IH0gLnYtY2FyZC50b3BfYmcuLW10MCAuaGVhZGVyLXNlY3Rpb246bnRoLWNoaWxkKDIpIHsgbWFyZ2luLXRvcDo3NHB4OyB9IC5oZWFkZXItc2VjdGlvbiB7IGRpc3BsYXk6ZmxleDsgdmVydGljYWwtYWxpZ246bWlkZGxlOyBqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjsgYWxpZ24taXRlbXM6Y2VudGVyOyB9IC5oZWFkZXItaW1hZ2Utd3JhcHBlciB7IG1pbi1oZWlnaHQ6OTdweDsgfSAuaGVhZGVyLXNlY3Rpb24uaW1hZ2UgeyB3aWR0aDoyNSU7IH0gLmhlYWRlci1zZWN0aW9uLmltYWdlID4gLmhlYWRlci1pbWFnZS13cmFwcGVyIGltZyB7IG1heC1oZWlnaHQ6MjUwcHg7IH0gLmhlYWRlci1zZWN0aW9uID4gZGl2IHsgZGlzcGxheTppbmxpbmUtYmxvY2s7IH0gLmhlYWRlci1zZWN0aW9uIC5waG9uZSB7IHdpZHRoOmF1dG87IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOnZhcigtLWRlYWxlci1hZGRyZXNzLWNvbG9yKTsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IHRleHQtYWxpZ246cmlnaHQ7IHBhZGRpbmc6MC41cmVtIDA7IH0gLmhlYWRlci1zZWN0aW9uOm50aC1jaGlsZCgyKS5pbWFnZSB7IHRleHQtYWxpZ246cmlnaHQ7IH0gLmhlYWRlci1zZWN0aW9uIC5waG9uZS5waG9uZV9yaWdodHsgdGV4dC1hbGlnbjpyaWdodDsgfSAuaGVhZGVyLXNlY3Rpb24gLnBob25lLnBob25lX2xlZnQgeyB0ZXh0LWFsaWduOmxlZnQ7IH0gLmhlYWRlci1zZWN0aW9uID4gLnYtY2FyZCB7IH0gLm11bHRpLWFkZHJlc3Mtd3JhcHBlci5leGNlcHRpb25TdHlsZXsgZGlzcGxheTpmbGV4OyB9IC5tdWx0aS1hZGRyZXNzLXdyYXBwZXIuZXhjZXB0aW9uU3R5bGUgLm11bHRpLWFkZHJlc3MtLXBob25leyB3aWR0aDphdXRvOyBhbGlnbi1pdGVtczpjZW50ZXI7IH0gLm11bHRpLWFkZHJlc3Mtd3JhcHBlci5leGNlcHRpb25TdHlsZSAubXVsdGktYWRkcmVzcy0tcGhvbmUgaXsgZm9udC1zaXplOjAuNjI1cmVtIDsgfSAubXVsdGktYWRkcmVzcy13cmFwcGVyLmV4Y2VwdGlvblN0eWxlIGF7IHRleHQtZGVjb3JhdGlvbjpub25lOyB9IC5tdWx0aS1hZGRyZXNzIHsgZGlzcGxheTpmbGV4OyBqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1lbmQ7IH0gLm11bHRpLWFkZHJlc3MtLXBob25lIHsgd2lkdGg6MTMzcHg7IGRpc3BsYXk6ZmxleDsganVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47IH0gLm11bHRpLWFkZHJlc3MgaSB7IHBhZGRpbmctcmlnaHQ6NXB4OyBwYWRkaW5nLWxlZnQ6MTBweDsgfSAudG9wX2JnIHRhYmxlIHRib2R5IHRkOm50aC1jaGlsZCgyKSAuaGVhZGVyLXNlY3Rpb24geyB3aWR0aDoxMDAlOyB9IC50b3BfYmcuZGl2VGFibGUgLmhlYWRlci1zZWN0aW9uOm50aC1jaGlsZCgyKSB7IHRleHQtYWxpZ246cmlnaHQ7IH0gLnRvcF9iZyB0YWJsZSB0ZCAuaGVhZGVyLXNlY3Rpb24geyBkaXNwbGF5OmlubGluZS1ibG9jazsgfSAucGhvbmUgaDJ7IGZvbnQtc2l6ZToxLjVyZW0gOyBjb2xvcjojNTI1MjUyOyBmb250LXdlaWdodDpib2xkOyB0ZXh0LWRlY29yYXRpb246bm9uZTt9IC5waG9uZSBoMXsgZm9udC1zaXplOjEuODc1cmVtIDsgY29sb3I6IzUyNTI1MjsgZm9udC13ZWlnaHQ6Ym9sZDsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7fSAucGhvbmUgZGl2Lm9yZ3sgZm9udC1zaXplOjEuMzc1cmVtIDsgY29sb3I6IzUyNTI1MjsgZm9udC13ZWlnaHQ6Ym9sZDsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7fSAucGhvbmVfdGV4dCB7IGNvbG9yOnZhcigtLWRlYWxlci1hZGRyZXNzLWNvbG9yKTsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IHBhZGRpbmctbGVmdDoycHg7IHBhZGRpbmctdG9wOjJweDt9IC5waG9uZV90ZXh0IGF7IGNvbG9yOnZhcigtLWRlYWxlci1hZGRyZXNzLWNvbG9yKTsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IGRpc3BsYXk6aW5saW5lLWJsb2NrOyB3aWxsLWNoYW5nZTp0cmFuc2Zvcm07IHRyYW5zZm9ybS1vcmlnaW46cmlnaHQgY2VudGVyOyB0cmFuc2l0aW9uOnRyYW5zZm9ybSAwLjNzIGVhc2U7IH0gLnBob25lX3RleHQgYTpob3ZlcnsgdHJhbnNmb3JtOnNjYWxlKDAuOTMpOyBjb2xvcjojMDA1NzljOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgfSBhLnBob25lLWxpbmsgeyBkaXNwbGF5IDppbmxpbmUtYmxvY2sgIWltcG9ydGFudDsgcGFkZGluZyA6MCAhaW1wb3J0YW50OyBjb2xvciA6aW5oZXJpdDsgdGV4dC1kZWNvcmF0aW9uIDpub25lOyB9IGEucGhvbmUtbGluazpob3ZlciB7IGNvbG9yOmluaGVyaXQ7IHRleHQtZGVjb3JhdGlvbjpub25lOyB9ICNzbGlkZXJ7IHdpZHRoOjk2MHB4OyBtYXJnaW4tbGVmdDowcHg7IGJveC1zaGFkb3c6bm9uZTsgfSAuY2VudGVyZWQge3Bvc2l0aW9uOmFic29sdXRlOyBsZWZ0OjUwJTsgdG9wOjUwJTt9IC51cF9tZW51eyB3aWR0aDo5NjBweDsgaGVpZ2h0OjMxcHg7IHotaW5kZXg6MTExMTsgZmxvYXQ6cmlnaHQ7d2hpdGUtc3BhY2U6bm93cmFwOyB9IC5iYW5uZXJ7IHdpZHRoOjk2MHB4OyBoZWlnaHQ6MzAxcHg7IGZsb2F0OmxlZnQ7IG1hcmdpbi1sZWZ0OjJweDsgbWFyZ2luLWJvdHRvbTo2cHg7IH0gLm1lX3RvcHsgd2lkdGg6OTY3cHg7IGhlaWdodDo4cHg7IGZsb2F0OmxlZnQ7fSAubWVfYmd7IHdpZHRoOjk2N3B4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9tZV9iZ19yb3UucG5nKSBsZWZ0IHRvcCByZXBlYXQteTt9IC5tZV9kZXNje21hcmdpbjowcHg7aGVpZ2h0OmF1dG87Zm9udC1zaXplOjAuODc1cmVtIDsgb3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6NXB4IDE1cHh9IC5tZV9ib3V7IHdpZHRoOjk2N3B4OyBoZWlnaHQ6OXB4OyBmbG9hdDpsZWZ0O30gLm9uZXsgd2lkdGg6MjI1cHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBtYXJnaW4tbGVmdDoxMHB4OyBtYXJnaW4tdG9wOjhweDt9IC50d297IHdpZHRoOjIyNXB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgbWFyZ2luLWxlZnQ6MTRweDsgbWFyZ2luLXRvcDo4cHg7fSAudGhyZWV7IHdpZHRoOjIyNXB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgbWFyZ2luLWxlZnQ6MTRweDsgbWFyZ2luLXRvcDo4cHg7fSAuZm91cnsgd2lkdGg6MjI1cHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBtYXJnaW4tbGVmdDo0cHg7IG1hcmdpbi10b3A6NHB4O30gLlZvdXN7IGZvbnQtc2l6ZToxLjA2M3JlbSA7IGNvbG9yOiMwNTE0MWY7IHRleHQtZGVjb3JhdGlvbjpub25lOyBwYWRkaW5nLWJvdHRvbToycHg7fSAuY2xhc3N7IGZvbnQtc2l6ZTowLjgxM3JlbSA7IGNvbG9yOiM1NzU3NTc7IHRleHQtZGVjb3JhdGlvbjpub25lOyBwYWRkaW5nLWJvdHRvbTowcHg7IHBhZGRpbmctdG9wOjZweDt9IC5jbGFzczF7IGZvbnQtc2l6ZTowLjgxM3JlbSA7IGNvbG9yOiM1NzU3NTc7IHRleHQtZGVjb3JhdGlvbjpub25lOyBoZWlnaHQ6MTU3cHg7IG1hcmdpbi10b3A6NnB4O30gLmJvcmRlcntib3JkZXI6MXB4IHNvbGlkICNkM2QzZDM7IHdpZHRoOjIxOHB4O30gLmJveHsgd2lkdGg6NzVweDsgaGVpZ2h0OjczcHg7IHRleHQtYWxpZ246Y2VudGVyOyBwYWRkaW5nLXRvcDoxMHB4OyBtYXJnaW46MCBhdXRvO30gLmNhe2hlaWdodDoxNDNweDt9IC5ib3gyMjV7IHdpZHRoOjIyNXB4OyBmbG9hdDpsZWZ0OyBmb250LXNpemU6MC44MTNyZW0gOyBjb2xvcjojNTc1NzU3OyB0ZXh0LWRlY29yYXRpb246bm9uZTsgcGFkZGluZy1ib3R0b206M3B4O30gLmJveDIyNHsgd2lkdGg6MjI1cHg7IGZsb2F0OmxlZnQ7IHBhZGRpbmctYm90dG9tOjZweDt9IC5ib3gyMjN7IHdpZHRoOjIyNXB4OyBmbG9hdDpsZWZ0OyBwYWRkaW5nLXRvcDozcHg7fSAubm9zeyB3aWR0aDo3MTBweDsgaGVpZ2h0OjEwMCU7IG1hcmdpbi10b3A6NXB4OyBmbG9hdDpsZWZ0OyBtYXJnaW4tcmlnaHQ6NXB4O30gLm5vc190b3B7IHdpZHRoOjcxNnB4OyBoZWlnaHQ6OXB4OyBmbG9hdDpsZWZ0O30gLm5vc19iZ3sgd2lkdGg6NzE2cHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL25vc19iZy5wbmcpIGxlZnQgdG9wIHJlcGVhdC15O30gLm5vc19ib3V7IHdpZHRoOjcxNnB4OyBoZWlnaHQ6OXB4OyBmbG9hdDpsZWZ0O30gLm5vc190ZXh0e2hlaWdodDozMHB4OyBmb250LXNpemU6MS4xMjVyZW0gOyBjb2xvcjojNTc1NzU3OyB0ZXh0LWRlY29yYXRpb246bm9uZTsgdGV4dC1hbGlnbjpjZW50ZXI7fSAuYXJvd3sgd2lkdGg6Njk1cHg7IGhlaWdodDoxNjBweDsgZmxvYXQ6bGVmdDsgbWFyZ2luLWxlZnQ6NHB4O30gLmNvbnsgZm9udC1zaXplOjAuODEzcmVtIDsgY29sb3I6IzNjM2MzYzt9IC5kZXNjIHttYXgtd2lkdGg6MTAwJTt9IC5kZXNjX2JnIHt3aWR0aDoxMDAlOyBoZWlnaHQ6MjQ4cHg7IGZsb2F0OmxlZnQ7IGJhY2tncm91bmQ6dXJsKCIvaW1hZ2VzL25vc19iZy5wbmciKSByZXBlYXQteSBzY3JvbGwgbGVmdCB0b3AgdHJhbnNwYXJlbnQ7fSAuYWRkcnttYXJnaW4tdG9wOjI1cHg7fSAuYWRkcl9taWR7YmFja2dyb3VuZDp1cmwoL2ltYWdlcy9tZV9iZ19yb3UucG5nKSBsZWZ0IHRvcCByZXBlYXQteTt9IC5oaWRkZW57ZGlzcGxheTpub25lICFpbXBvcnRhbnQ7fSAuaG91cnNfcmVtIHsgdGV4dC1hbGlnbjpyaWdodDtsaW5lLWhlaWdodDoxOHB4OyBmbG9hdDpyaWdodDtwYWRkaW5nLXJpZ2h0OjE1cHg7IH0gLmhvdXJzX3JlbSBheyBmb250LXNpemU6MC42ODhyZW0gOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgfSAjbHt3aWR0aDo2MHB4OyBmbG9hdDpsZWZ0O30gLmRlcnt3aWR0aDo0NjBweDsgaGVpZ2h0OjI1NXB4OyBtYXJnaW4tdG9wOjFweDsgZmxvYXQ6bGVmdDt9IC5kZXJfdG9weyB3aWR0aDo0NjRweDsgaGVpZ2h0OjhweDsgZmxvYXQ6bGVmdDt9IC5kZXJfYmd7IHdpZHRoOjQ0NHB4OyBoZWlnaHQ6MjI2cHg7IGZsb2F0OmxlZnQ7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvZGVyX2JnLnBuZykgbGVmdCB0b3AgcmVwZWF0LXk7IHBhZGRpbmc6NnB4IDEwcHggMTBweCAxMHB4O30gLmRlcl9ib3V7IHdpZHRoOjQ2NHB4OyBoZWlnaHQ6OHB4OyBmbG9hdDpsZWZ0O30gLmRlbXt3aWR0aDo0OTVweDsgaGVpZ2h0OjI1NXB4OyBtYXJnaW4tdG9wOjNweDsgZmxvYXQ6bGVmdDsgbWFyZ2luLWxlZnQ6NXB4O21hcmdpbi1ib3R0b206NnB4O30gLnNib3gxeyB3aWR0aDoyNDBweDsgaGVpZ2h0OjEyM3B4OyBmbG9hdDpsZWZ0OyBwYWRkaW5nOjAgNXB4IDEwcHggNXB4fSAuc2JveDJ7IHdpZHRoOjI0MHB4OyBoZWlnaHQ6MTIzcHg7IGZsb2F0OmxlZnQ7IHBhZGRpbmc6MCA1cHggMTBweCA1cHh9IC5zYm94M3sgd2lkdGg6MjQwcHg7IGhlaWdodDoxMjNweDsgZmxvYXQ6bGVmdDsgcGFkZGluZzowIDVweCAxMHB4IDVweH0gLnNib3g0eyB3aWR0aDoyNDBweDsgaGVpZ2h0OjEyM3B4OyBmbG9hdDpsZWZ0OyBwYWRkaW5nOjAgNXB4IDEwcHggNXB4fSAuYm90dG9tNGJveGVze2Zsb2F0OmxlZnQ7d2lkdGg6MTAwJTtwYWRkaW5nOjA7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO30gLmJvdHRvbTRib3hlcyAqIHtib3gtc2l6aW5nOmJvcmRlci1ib3g7fSAuYm90dG9tNGJveGVzID4gLmJveDI0NXtmbG9hdDpsZWZ0O3dpZHRoOjI1JTttYXgtd2lkdGg6MjQ1cHg7fSAuYm90dG9tNGJveGVzID4gLmJveDI0MXtmbG9hdDpsZWZ0O21hcmdpbjoxMHB4IDZweDt9IC5ib3R0b200Ym94ZXMgPiAuYm94MjQxOmZpcnN0LWNoaWxke21hcmdpbi1sZWZ0OjBweDt9IC5ib3R0b200Ym94ZXMgPiAuYm94MjQxOmxhc3QtY2hpbGR7bWFyZ2luLXJpZ2h0OjBweDt9IEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDoxMDI0cHgpIHsgLmJvdHRvbTRib3hlcyB0YWJsZSB7IHBhZGRpbmc6MCAxMHB4OyB9IH0gLnNib3hVc2VkeyBmbG9hdDpsZWZ0OyB9IC5zYm94X3RvcHsgd2lkdGg6MjQ3cHg7IGhlaWdodDo1cHg7IGZsb2F0OmxlZnQ7fSAuc2JveF9iZ3sgd2lkdGg6MjQ3cHg7IGhlaWdodDoxMDdweDsgZmxvYXQ6bGVmdDsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9zYm94X2JnLnBuZykgbGVmdCB0b3AgcmVwZWF0LXk7IGZvbnQtc2l6ZToxLjE4OHJlbSA7IGNvbG9yOiMxOTE5MTk7IHRleHQtYWxpZ246Y2VudGVyO30gLnNib3hfYm91eyB3aWR0aDoyNDdweDsgaGVpZ2h0OjVweDsgZmxvYXQ6bGVmdDt9IC5kYXsgbWFyZ2luLXRvcDoxMnB4O30gLmRhMXsgbWFyZ2luLXRvcDoxMHB4OyBmb250LXNpemU6MS4xODhyZW0gOyBjb2xvcjojMTkxOTE5OyB0ZXh0LWFsaWduOmNlbnRlcjt9IC5kYTEgaDF7IHBhZGRpbmc6MDsgbWFyZ2luOjA7IGZvbnQtc2l6ZToxLjg3NXJlbSA7IGNvbG9yOiMxOTE5MTk7IHRleHQtYWxpZ246Y2VudGVyOyBmb250LXdlaWdodDpub3JtYWw7fSAuYWRkbGluZXsgY29sb3I6IzA1MTQxZiFpbXBvcnRhbnQ7IG92ZXJmbG93OmhpZGRlbjsgdGV4dC1hbGlnbjpjZW50ZXI7IH0gI3JldHVyblBvcHVwTmV4dE1vZGVseyBoZWlnaHQ6NDBweCFpbXBvcnRhbnQ7IH0gLmFkZGxpbmU6OmJlZm9yZSwgLmFkZGxpbmU6OmFmdGVyIHsgYmFja2dyb3VuZC1jb2xvcjojMDAwOyBjb250ZW50OiIiOyBkaXNwbGF5OmlubGluZS1ibG9jazsgaGVpZ2h0OjFweDsgcG9zaXRpb246cmVsYXRpdmU7IHZlcnRpY2FsLWFsaWduOm1pZGRsZTsgd2lkdGg6NTAlOyB9IC5hZGRsaW5lOmJlZm9yZSB7IHJpZ2h0OjAuNWVtOyBtYXJnaW4tbGVmdDotNTAlOyB9IC5hZGRsaW5lOmFmdGVyIHsgbGVmdDowLjVlbTsgbWFyZ2luLXJpZ2h0Oi01MCU7IH0gLnNib3gxIGEuY0xpbmssIC5zYm94MiBhLmNMaW5rLCAuc2JveDMgYS5jTGluaywgLnNib3g0IGEuY0xpbmt7IGRpc3BsYXk6YmxvY2s7IGhlaWdodDoxMDAlOyB3aWR0aDoxMDAlOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgfSAuc2JveDEgYS5jTGluazpob3ZlciwgLnNib3gyIGEuY0xpbms6aG92ZXIsIC5zYm94MyBhLmNMaW5rOmhvdmVyLCAuc2JveDQgYS5jTGluazpob3ZlcnsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IH0gLmhvbWVwYWdlLS1idXNpbmVzcy1kZXNjcmlwdGlvbiwgLmhvbWVwYWdlLS1idXNpbmVzcy1kZXNjcmlwdGlvbi1jZXJ0LCAuaG9tZXBhZ2UtLWJ1c2luZXNzLWRlc2NyaXB0aW9uIC5ib3JkZXJfYm94IHsgYmFja2dyb3VuZC1jb2xvcjojMDUxNDFmOyBiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmY7IGNvbG9yOiNmZmZmZmY7IGNvbG9yOiMwNTE0MWY7IH0gLmhvbWVwYWdlLS1idXNpbmVzcy1kZXNjcmlwdGlvbiBhLCAuaG9tZXBhZ2UtLWJ1c2luZXNzLWRlc2NyaXB0aW9uLWNlcnQgYSB7IGNvbG9yOiNmZmZmZmY7IGNvbG9yOiMwNTE0MWY7IH0gLmhvbWVwYWdlLS1idXNpbmVzcy1kZXNjcmlwdGlvbiAuYm9yZGVyX2JveCwgLmhvbWVwYWdlLS1idXNpbmVzcy1kZXNjcmlwdGlvbi1jZXJ0IC5ib3JkZXJfYm94IHsgYmFja2dyb3VuZC1jb2xvcjppbmhlcml0OyBjb2xvcjppbmhlcml0OyB9IC5ibGFja190ZXh0eyBmb250LXNpemU6MS41cmVtIDsgY29sb3I6IzE5MTkxOTsgbWFyZ2luLWJvdHRvbTo0cHg7fSAuZ3JheV90ZXh0eyBmb250LXNpemU6MC44MTNyZW0gOyBjb2xvcjojMTkxOTE5O30gLmJ1dHsgZmxvYXQ6cmlnaHQ7IG1hcmdpbjowcHggMHB4IDBweCAwcHg7fSAubGluZXsgYm9yZGVyLWJvdHRvbToxcHggc29saWQgI2QyZDJkMjsgbWFyZ2luLXRvcDo1cHg7IG1hcmdpbi1ib3R0b206NXB4O30gLnZpdnsgbWFyZ2luLXRvcDo1cHg7IG1hcmdpbi1sZWZ0OjVweDsgZm9udC1zaXplOjEuNXJlbSA7IGNvbG9yOiNmZmY7IGNvbG9yOiNmZmZmZmY7IHRleHQtYWxpZ246anVzdGlmeTt9IC50d3sgd2lkdGg6MjYwcHg7IGhlaWdodDo0MHB4OyBmbG9hdDpyaWdodDsgbWFyZ2luLXRvcDo1cHg7IHRleHQtYWxpZ246cmlnaHQ7fSAuRU5HTElTSCAudml2e3RleHQtdHJhbnNmb3JtOmNhcGl0YWxpemU7fSAuTWFpbkJveExheWVyIC52aXYgeyBtYXJnaW4tbGVmdDowOyB9IC5zb2NpYWwtc2hhcmluZ3sgd2lkdGg6MTAwJTsgY2xlYXI6Ym90aDsgZmxvYXQ6cmlnaHQ7IG1hcmdpbi10b3A6NXB4OyB9IC5zb2NpYWwtc2hhcmluZyA+IGRpdi5zb2NpYWx7IGZsb2F0OnJpZ2h0OyBwYWRkaW5nLWxlZnQ6NXB4OyB9IC5zb2NpYWwtc2hhcmluZyA+IGRpdi5zb2NpYWw6bGFzdC1jaGlsZHsgcGFkZGluZy1sZWZ0OjA7IH0gLnNvY2lhbC1zaGFyaW5nID4gZGl2LnNvY2lhbDpmaXJzdC1jaGlsZHsgcGFkZGluZy1yaWdodDo1cHg7IH0gLk1haW5Cb3hMYXllciAuc29jaWFsLXNoYXJpbmcgPiBkaXYuc29jaWFsOmZpcnN0LWNoaWxkeyBwYWRkaW5nLXJpZ2h0OjA7IH0gI2Zvb3RlckRpdiAuYWRkLCAjZm9vdGVyRGl2IC5hZGQgYSB7IGNvbG9yOnZhcigtLWZvb3Rlci1pdGVtcy1saW5rLWNvbG9yKTsgfSAjZm9vdGVyRGl2IC5hZGQgLm9yZ3sgY29sb3I6dmFyKC0tZm9vdGVyLWxpbmstdGl0bGUtY29sKTsgfSAucG91cnsgd2lkdGg6NzI1cHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0O30gLnBhZ2Vub3t3aWR0aDoyMzZweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IG1hcmdpbi1sZWZ0OjVweDsgcGFkZGluZzowOyB0ZXh0LXRyYW5zZm9ybTpub25lOyBmb250LXdlaWdodDpub3JtYWw7IG1hcmdpbi10b3A6MTBweDsgfSAucGFnZW5vIHVseyBsaXN0LXN0eWxlLXR5cGU6bm9uZTsgbWFyZ2luOjAgMCAxNXB4IDA7IHBhZGRpbmc6MDsgd2lkdGg6MjM2cHg7IHRleHQtdHJhbnNmb3JtOm5vbmU7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgfSAucGFnZW5vIHVsIGxpeyBsaXN0LXN0eWxlLXR5cGU6bm9uZTsgbWFyZ2luOjA7ZGlzcGxheTpibG9jazsgZmxvYXQ6bm9uZTsgd2lkdGg6MjM2cHg7IHRleHQtdHJhbnNmb3JtOm5vbmU7IGZvbnQtd2VpZ2h0Om5vcm1hbDt9IC5wYWdlbm8gdWwgbGkgYXsgd2lkdGg6MjM3cHg7IG1hcmdpbjowOyBkaXNwbGF5OmJsb2NrOyBmbG9hdDpub25lOyBmb250LXNpemU6MC44MTNyZW0gOyBjb2xvcjp2YXIoLS1mb290ZXItaXRlbXMtbGluay1jb2xvcik7IHRleHQtZGVjb3JhdGlvbjpub25lOyBmb250LXdlaWdodDpub3JtYWw7IGxpbmUtaGVpZ2h0OjE4cHg7IHRleHQtdHJhbnNmb3JtOm5vbmU7IHRleHQtYWxpZ246bGVmdDsgdGV4dC10cmFuc2Zvcm06bm9uZTsgfSAucGFnZW5vIHVsIGxpIHNwYW4sIC5wYWdlbm8gdWwgbGkgYS5mdGl0bGV7IHdpZHRoOjIzNnB4OyBtYXJnaW46MDsgZGlzcGxheTpibG9jazsgZmxvYXQ6bm9uZTsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6I2ZmZjsgY29sb3I6dmFyKC0tZm9vdGVyLWxpbmstdGl0bGUtY29sKTsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IG1hcmdpbi1ib3R0b206MTBweDsgZm9udC13ZWlnaHQ6bm9ybWFsOyBsaW5lLWhlaWdodDoxOHB4OyB0ZXh0LWFsaWduOmxlZnQ7IH0gLnBhZ2VubyB1bCBsaSBhLmZ0aXRsZTpob3ZlcnsgbWFyZ2luLWJvdHRvbToxMHB4O30gLnBhZ2VubyB1bCBsaSBhOmhvdmVyeyBsaXN0LXN0eWxlLXR5cGU6bm9uZTsgbWFyZ2luOjA7IGNvbG9yOnZhcigtLWZvb3Rlci1saW5rLXRpdGxlLWNvbCk7IHRleHQtZGVjb3JhdGlvbjpub25lOyBkaXNwbGF5OmJsb2NrOyBsaW5lLWhlaWdodDoxOHB4O30gLnBhZ2VubyBsaSBhLmFjdGl2ZXsgbGlzdC1zdHlsZS10eXBlOm5vbmU7IG1hcmdpbjowOyBjb2xvcjojOTE5MTkxOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgZGlzcGxheTpibG9jazsgbGluZS1oZWlnaHQ6MThweDt9IC5FTkdMSVNIIC5wYWdlbm8gdWwgbGkgYXt0ZXh0LXRyYW5zZm9ybTpjYXBpdGFsaXplO30gLmFkZHsgd2lkdGg6MjMwcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBmb250LXNpemU6MC44MTNyZW0gOyBjb2xvcjojOTE5MTkxOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgZm9udC13ZWlnaHQ6bm9ybWFsOyBsaW5lLWhlaWdodDoxOHB4OyB0ZXh0LXRyYW5zZm9ybTpub25lOyB0ZXh0LWFsaWduOnJpZ2h0OyB0ZXh0LXRyYW5zZm9ybTpub25lOyBtYXJnaW4tdG9wOjEwcHg7bWFyZ2luLWJvdHRvbToxMHB4O30gLmNvcHl7IGZsb2F0OmxlZnQ7IGZvbnQtc2l6ZTowLjgxM3JlbSA7IGNvbG9yOiM5MTkxOTE7IHRleHQtZGVjb3JhdGlvbjpub25lOyBmb250LXdlaWdodDpub3JtYWw7IGxpbmUtaGVpZ2h0OjE4cHg7IHRleHQtdHJhbnNmb3JtOm5vbmU7IHRleHQtYWxpZ246bGVmdDsgdGV4dC10cmFuc2Zvcm06bm9uZTsgbWFyZ2luLWxlZnQ6NXB4OyBtYXJnaW4tdG9wOjI1cHg7fSAuY29weSBheyB0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lO2N1cnNvcjpwb2ludGVyOyBmb250LXNpemU6MC44MTNyZW0gOyBjb2xvcjojOTE5MTkxOyBmb250LXdlaWdodDpub3JtYWx9IC5jb3B5IGE6aG92ZXJ7IGNvbG9yOiNkNGQ0ZDQ7IGZvbnQtd2VpZ2h0OmJvbGQ7fSAuZm9vdGVyLWxpc3RzIGxpID4gc3BhbiB7IHRleHQtdHJhbnNmb3JtOnZhcigtLXR4dC11cHBlcik7IH0gI2Zvb3RlcldyYXBwZXIgLnYtY2FyZC5hZGQgeyBsaW5lLWhlaWdodDppbml0aWFsOyB9ICNmb290ZXIgLmZvb3Rlci10aXRsZSB7IGZvbnQtc2l6ZTp2YXIoLS1mczQpOyBjb2xvcjp2YXIoLS1mb290ZXItbGluay10aXRsZS1jb2wsIHZhcigtLXdoaXRlKSk7IH0gLkVOR0xJU0ggI2Zvb3RlciAuZm9vdGVyLXRpdGxlIHsgdGV4dC10cmFuc2Zvcm06Y2FwaXRhbGl6ZTsgfSAjZm9vdGVyID4gLmZsZXgtYm94ID4gLmZvb3Rlci1sb2dvX19jb250YWluZXIgeyBtYXJnaW4tdG9wOjA7IG1hcmdpbi1yaWdodDp2YXIoLS1zNSk7IH0gI2Zvb3RlciA+IC5mbGV4LWJveCA+IC5mb290ZXItbG9nb19fY29udGFpbmVyIGltZyB7IG1heC13aWR0aDoxMDAlOyBtYXgtaGVpZ2h0OjE1MHB4OyB9IC5zb2NpYWwtbWVkaWEtaWNvbnMgeyBkaXNwbGF5OmZsZXg7IGZsZXgtZGlyZWN0aW9uOnJvdzsganVzdGlmeS1jb250ZW50OmZsZXgtZW5kOyB0ZXh0LWFsaWduOnJpZ2h0OyB9IC5kZWFsZXItYWxpZ24tbGVmdCAuc29jaWFsLW1lZGlhLWljb25zIHsgdGV4dC1hbGlnbjpsZWZ0OyBqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1zdGFydDsgfSAuc29jaWFsLW1lZGlhLWljb25zIC5zb2NpYWwtaWNvbnMgeyB3aWR0aCA6YXV0bzsgaGVpZ2h0OmF1dG87IG1hcmdpbjowIDRweDsgfSAjZm9vdGVyIGEuc29jaWFsLWxpbmsgPiBzdmcgeyBoZWlnaHQ6MjJweDsgbWFyZ2luLWxlZnQ6M3B4OyB9IGhlYWRlciAuaGVhZGVyLXNvY2lhbCAjc29jaWFsX21lZGlhX2ljb25zX2RpdiA+IGEgPiBzdmcgeyBoZWlnaHQ6MjFweDsgbWFyZ2luLXRvcDo0cHg7IH0gLnNvY2lhbC1tZWRpYS1pY29ucyAuc29jaWFsLWljb25zIC5mYWIgeyBtYXJnaW4tdG9wOjA7IGZvbnQtc2l6ZSA6MS45ZW07IGNvbG9yIDp2YXIoLS1mb290ZXItbGluay10aXRsZS1jb2wpOyB9IC5kaXZTcGFuLmRpdlNwYW4zID4gLmZvb3Rlci1sb2dvX19jb250YWluZXIgeyBtYXJnaW4tdG9wOjFyZW07IHRleHQtYWxpZ246cmlnaHQ7IH0gLmRlYWxlci1hbGlnbi1sZWZ0IC5mb290ZXItbG9nb19fY29udGFpbmVyIHsgdGV4dC1hbGlnbjpsZWZ0OyB9IC5kaXZTcGFuLmRpdlNwYW4zID4gLmZvb3Rlci1sb2dvX19jb250YWluZXIgaW1nIHsgbWF4LXdpZHRoOjE4MHB4OyBtYXgtaGVpZ2h0OjEwMHB4OyB9IEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDoxMDI0cHgpIHsgLmhlYWRlci1zZWN0aW9uIC5waG9uZS5waG9uZV9sZWZ0IHsgcGFkZGluZy1sZWZ0OjEwcHg7IH0gI2Zvb3RlciB7IHBhZGRpbmctbGVmdDoxMHB4OyBwYWRkaW5nLXJpZ2h0OjEwcHg7IH0gfSBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6OTk5cHgpIHsgI01haW5NZW51X1NFQVJDSF9CQVIgeyBkaXNwbGF5Om5vbmU7IH0gLnVwX21lbnUgdWwubmF2ID4gbGkuZmlyc3RNZW51IHsgcGFkZGluZy1sZWZ0OjEwcHg7IH0gLnVwX21lbnUgdWwubmF2ID4gbGk6bnRoLW9mLXR5cGUoMikgeyBwYWRkaW5nLXJpZ2h0OjEwcHg7IH0gLnVwX21lbnUgdWwubmF2ID4gbGk6bnRoLW9mLXR5cGUoMikgPiB1bC5zdWIgeyByaWdodDoxMHB4OyB9IC5sYW5ndWFnZUJhciBkaXY6Zmlyc3Qtb2YtdHlwZSB7IG1hcmdpbi1yaWdodDoxMHB4OyB9IC5tZW51NyAuZmluYW5jZS1tZW51LWZyZWVjcmVkaXQuY2VudGVyIHsgcmlnaHQ6LTE2MHB4ICFpbXBvcnRhbnQ7IGxlZnQ6YXV0bzsgfSAubWVudTggLmZpbmFuY2UtbWVudS1mcmVlY3JlZGl0LmNlbnRlciB7IHJpZ2h0Oi0xNjBweCAhaW1wb3J0YW50OyBsZWZ0OmF1dG87IH0gLm1lbnU1IC5maW5hbmNlLW1lbnUtZnJlZWNyZWRpdC5jZW50ZXIgeyByaWdodDotMzAwcHggIWltcG9ydGFudDsgbGVmdDphdXRvOyB9IH0gLmRpdlNwYW4ucGFnZW5vIHsgbWFyZ2luLWxlZnQ6MDsgfSAuZGl2U3Bhbi5wYWdlbm8gdWwgbGkgc3BhbiwgLmRpdlNwYW4ucGFnZW5vIHVsIGxpIGEuZnRpdGxlIHsgZm9udC1zaXplOjAuOTM4cmVtIDsgbWF4LXdpZHRoOjIyNXB4OyB9IC5kaXZTcGFuLnBhZ2VubyB1bCBsaSBhIHsgZm9udC1zaXplOjAuODc1cmVtIDsgfSAuYWRyIHsgbGluZS1oZWlnaHQ6MS4ycmVtOyBtYXJnaW46MC41cmVtIDA7IH0gI2Zvb3Rlci5kZWFsZXItcG9zaXRpb24tbGVmdCAuZm9vdGVyLXRpdGxlX19jb250YWluZXIgeyBtYXJnaW4tYm90dG9tOjJyZW07IH0gI2Zvb3Rlci5kZWFsZXItcG9zaXRpb24tbGVmdCAuZGl2U3BhbjMgeyBmbG9hdDpsZWZ0OyBtYXJnaW4tdG9wOjE1cHg7IHBhZGRpbmctcmlnaHQ6MzBweDsgdGV4dC1hbGlnbjpsZWZ0OyB9ICNmb290ZXIuZGVhbGVyLXBvc2l0aW9uLWxlZnQgLmRpdlNwYW45IHsgZmxvYXQ6cmlnaHQ7IH0gI2Zvb3Rlci5kZWFsZXItcG9zaXRpb24tbGVmdCAuc29jaWFsLXNoYXJpbmcgeyBmbG9hdDp1bnNldDsgY2xlYXI6dW5zZXQ7IG1hcmdpbjowOyB9ICNmb290ZXIuZGVhbGVyLXBvc2l0aW9uLWxlZnQgLnNvY2lhbCB7IGZsb2F0OmxlZnQ7IH0gI2Zvb3Rlci5kZWFsZXItcG9zaXRpb24tcmlnaHQuZGVhbGVyLWFsaWduLWxlZnQgLnNvY2lhbC1zaGFyaW5nIHsgd2lkdGg6MjUlOyBmbG9hdDpsZWZ0OyBwYWRkaW5nLWxlZnQ6NzUlOyB9ICNmb290ZXIuZGVhbGVyLXBvc2l0aW9uLXJpZ2h0LmRlYWxlci1hbGlnbi1sZWZ0IC5zb2NpYWwgeyBmbG9hdDpsZWZ0OyBtYXJnaW4tbGVmdDoxcmVtOyB9ICNmb290ZXIuZGVhbGVyLXBvc2l0aW9uLXJpZ2h0LmRlYWxlci1hbGlnbi1sZWZ0IC5zb2NpYWw6Zmlyc3QtY2hpbGQgeyBtYXJnaW46MDsgcGFkZGluZzowOyB9ICNmb290ZXIgLmljb24tdGV4dHsgbWFyZ2luLWJvdHRvbTouNHJlbTsgfSAjZm9vdGVyIC5pY29uLXRleHQgc3Bhbnsgd2lkdGg6MjBweDsgcGFkZGluZzowICFpbXBvcnRhbnQ7IH0gI2Zvb3RlciAuZm4ub3JnIHsgbGluZS1oZWlnaHQ6Mi4wNjI1cmVtOyB9IC5zbWFsbHBpY19ib3h7d2lkdGg6MzI5cHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBtYXJnaW46MDt9IC5zbWFsbHBpYzQze3dpZHRoOjQzcHg7IGhlaWdodDozMXB4OyBmbG9hdDpsZWZ0OyBtYXJnaW46MCA1cHggMCAwOyBib3JkZXI6MnB4IHNvbGlkICNGRkZGRkY7fSAuZGV0YWlsc3t3aWR0aDo4MXB4OyBoZWlnaHQ6MzBweDsgZGlzcGxheTpibG9jazsgfSBhLmRldGFpbHN7d2lkdGg6ODFweDsgaGVpZ2h0OjMwcHg7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvZGV0YWlscy5wbmcpIGxlZnQgdG9wIG5vLXJlcGVhdDt9IGE6aG92ZXIuZGV0YWlsc3t3aWR0aDo4MXB4OyBoZWlnaHQ6MzBweDsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9kZXRhaWxzLnBuZykgbGVmdCAtMzJweCBuby1yZXBlYXQ7fSAuYmlnX3BpY2JveHttaW4taGVpZ2h0OjExMHB4O3dpZHRoOjE0NnB4O30gLmJpZ19waWNib3ggaW1neyBkaXNwbGF5OmJsb2NrOyB9IC5waWNib3hfdmlkZW9idG5fZW4sIC5waWNib3hfdmlkZW9idG5fZnIge2Rpc3BsYXk6YmxvY2s7aGVpZ2h0OjQ1cHg7fSAucGljYm94X3ZpZGVvYnRuX2VuIHtiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy92aWRlby1idG4tdGh1bWJfZW4ucG5nJykgbm8tcmVwZWF0IHNjcm9sbCAwIDAgLyAxMDAlIGF1dG8gdHJhbnNwYXJlbnQ7fSAucGljYm94X3ZpZGVvYnRuX2ZyIHtiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy92aWRlby1idG4tdGh1bWJfZnIucG5nJykgbm8tcmVwZWF0IHNjcm9sbCAwIDAgLyAxMDAlIGF1dG8gdHJhbnNwYXJlbnQ7fSAucGljYm94X3ZpZGVvYnRuX2VuOmhvdmVyIHtiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy92aWRlby1idG4tdGh1bWJfZW5faG92ZXIucG5nJykgbm8tcmVwZWF0IHNjcm9sbCAwIDAgLyAxMDAlIGF1dG8gdHJhbnNwYXJlbnQ7fSAucGljYm94X3ZpZGVvYnRuX2ZyOmhvdmVyIHtiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy92aWRlby1idG4tdGh1bWJfZnJfaG92ZXIucG5nJykgbm8tcmVwZWF0IHNjcm9sbCAwIDAgLyAxMDAlIGF1dG8gdHJhbnNwYXJlbnQ7fSAuYmlnX3BpY2JveF93cmFwcGVyIHsgd2lkdGg6MTQ2cHg7IGZsb2F0OmxlZnQ7IG1hcmdpbjowIDEwcHggMHB4IDIxcHg7IH0gLnRleHRfdGl0bGUgYXsgZGlzcGxheTpibG9jazt0ZXh0LWRlY29yYXRpb246bm9uZTsgd2lkdGg6MzI5cHg7IGhlaWdodDphdXRvOyBtYXJnaW46MDsgcGFkZGluZy1ib3R0b206NXB4OyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojNDE0MTQxOyBmb250LXdlaWdodDpib2xkO30gLnRleHRfdGl0bGUye3dpZHRoOjMyOXB4OyBoZWlnaHQ6MzJweDsgZmxvYXQ6bGVmdDsgbWFyZ2luOjAgOyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojNDE0MTQxO30gLnNvbGRfY2FyX25vdGV7YmFja2dyb3VuZC1jb2xvcjojMUUxRTFFOyBib3JkZXItcmFkaXVzOjVweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjVweDsgY29sb3I6I0ZGRjsgd2lkdGg6MTAwJTsgcGFkZGluZzoxMHB4IDA7IHRleHQtYWxpZ246Y2VudGVyOyBtYXJnaW4tdG9wOjE1cHg7fSAuc29sZF9jYXJfbm90ZSBhIHtjb2xvcjojRkZGO30gLnNvbGRfY2FyX25vdGUgYTpob3ZlciB7Y29sb3I6I0JCQjt9IC50ZXh0X3RpdGxlM3t3aWR0aDozMjlweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IG1hcmdpbjowIDsgcGFkZGluZy1ib3R0b206N3B4OyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojNDg0ODQ4O30gLnRleHRfYm94Mnt3aWR0aDozMjlweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IG1hcmdpbjowIDBweCAwcHggMHB4OyB9IC5tYWluX3BpY2JveHt3aWR0aDo2NzFweDsgbWluLWhlaWdodDoxNzBweDsgZmxvYXQ6bGVmdDsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9saW5lLnBuZykgbGVmdCBib3R0b20gcmVwZWF0LXg7IGJhY2tncm91bmQtcG9zaXRpb246Ym90dG9tOyBwYWRkaW5nOjA7IG1hcmdpbjowIDt9IC5ib3gyX2RldGFpbHNfZm9vdGVyMnt3aWR0aDo2ODFweDsgaGVpZ2h0OjE1cHg7IGZsb2F0OmxlZnQ7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvYm94X2Zvb3Rlci5wbmcpIGxlZnQgdG9wIG5vLXJlcGVhdDt9IC5ib3gyX2RldGFpbHNfbWlkRXh7d2lkdGg6MTAwJTsgaGVpZ2h0OmF1dG87IGJhY2tncm91bmQ6bm9uZTsgcGFkZGluZzowIDBweDtoZWlnaHQ6ODVweDt9IC5ib3gyX2RldGFpbHNfdGV4dCBzcGFueyB0ZXh0LWFsaWduOmNlbnRlcjsgZm9udC1zaXplOjEuMTI1cmVtIDsgY29sb3I6I0ZGRkZGRjsgZm9udC13ZWlnaHQ6Ym9sZDt9IC5ib3gyX2RldGFpbHNfZm9vdGVyMjJ7d2lkdGg6OTcxcHg7IGhlaWdodDoxNXB4OyBmbG9hdDpsZWZ0OyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL2JveF9mb290ZXIucG5nKSBsZWZ0IHRvcCBuby1yZXBlYXQ7YmFja2dyb3VuZC1zaXplOjk3MXB4IGF1dG87fSAuYm94MTcwe3Bvc2l0aW9uOnJlbGF0aXZlO3dpZHRoOjY3MXB4OyBtaW4taGVpZ2h0OjE3MHB4OyBmbG9hdDpsZWZ0OyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL2xpbmUucG5nKSBsZWZ0IGJvdHRvbSBuby1yZXBlYXQ7IGJhY2tncm91bmQtcG9zaXRpb246Ym90dG9tOyBwYWRkaW5nOjA7IG1hcmdpbjowIDBweCAxMHB4IDA7fSAuY3VzdG9tQm94QmFzaWN7IHdpZHRoOjI0MXB4OyBoZWlnaHQ6MTE2cHg7IGZsb2F0OmxlZnQ7IHBhZGRpbmc6NXB4IDAgMCAwOyBiYWNrZ3JvdW5kLXBvc2l0aW9uOmxlZnQgdG9wOyBiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7IGJhY2tncm91bmQtc2l6ZToyNDFweCAxMjFweDsgZm9udC1zaXplOjEuMTg4cmVtIDsgY29sb3I6IzE5MTkxOTsgdGV4dC1hbGlnbjpjZW50ZXI7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgY3Vyc29yOnBvaW50ZXI7IH0gLmN1c3RvbUJveEJhc2ljOmhvdmVyeyBjb2xvcjojZmZmOyB9IC5jdXN0b201IHsgYmFja2dyb3VuZC1pbWFnZTp1cmwoL2ltYWdlcy9ib3gyMl9ob3Zlci5wbmcpOyB9IC5jdXN0b201NSB7IGJhY2tncm91bmQtaW1hZ2U6dXJsKC9pbWFnZXMvYm94MjIucG5nKTsgfSAuY3VzdG9tNjY1IHsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9ib3gyM19ob3Zlci5wbmcpOyB9IC5jdXN0b202NjU1IHsgYmFja2dyb3VuZC1pbWFnZTp1cmwoL2ltYWdlcy9ib3gyMy5wbmcpOyB9IC5jdXN0b202NzUgeyBiYWNrZ3JvdW5kLWltYWdlOnVybCgvaW1hZ2VzL2JveDI3LnBuZyk7IH0gLmN1c3RvbTY3NTUgeyBiYWNrZ3JvdW5kLWltYWdlOnVybCgvaW1hZ2VzL2JveDI3X2hvdmVyLnBuZyk7IH0gLmN1c3RvbTY4NSB7IGJhY2tncm91bmQtaW1hZ2U6dXJsKC9pbWFnZXMvYm94MjgucG5nKTsgfSAuY3VzdG9tNjg1NSB7IGJhY2tncm91bmQtaW1hZ2U6dXJsKC9pbWFnZXMvYm94MjhfaG92ZXIucG5nKTsgfSAuaW1hZ2VfcmliYm9uIHsgcG9zaXRpb246YWJzb2x1dGU7IGxlZnQ6LTVweDsgdG9wOi00cHg7IHotaW5kZXg6MTsgb3ZlcmZsb3c6aGlkZGVuOyB3aWR0aDoxMTJweDsgaGVpZ2h0OjExMnB4OyB0ZXh0LWFsaWduOnJpZ2h0OyB9IC5pbWFnZV9yaWJib24gc3BhbiB7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiNmZmZmZmY7IHRleHQtYWxpZ246Y2VudGVyOyBsaW5lLWhlaWdodDoyOHB4OyB0cmFuc2Zvcm06cm90YXRlKC00NWRlZyk7IC13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgtNDVkZWcpOyB3aWR0aDoxNDhweDsgZGlzcGxheTpibG9jazsgYmFja2dyb3VuZDojMDUxNDFmOyBib3gtc2hhZG93OjAgM3B4IDEwcHggLTVweCByZ2JhKDAsIDAsIDAsIDEpOyBwb3NpdGlvbjphYnNvbHV0ZTsgdG9wOjMwcHg7IGxlZnQ6LTMwcHg7IH0gLmltYWdlX3JpYmJvbiBzcGFuOjpiZWZvcmUgeyBjb250ZW50OiIiOyBwb3NpdGlvbjphYnNvbHV0ZTsgbGVmdDowcHg7IHRvcDoxMDAlOyB6LWluZGV4Oi0xOyBib3JkZXItbGVmdDozcHggc29saWQgIzA1MTQxZjsgYm9yZGVyLXJpZ2h0OjNweCBzb2xpZCB0cmFuc3BhcmVudDsgYm9yZGVyLWJvdHRvbTozcHggc29saWQgdHJhbnNwYXJlbnQ7IGJvcmRlci10b3A6M3B4IHNvbGlkICMwNTE0MWY7IH0gLmltYWdlX3JpYmJvbiBzcGFuOjphZnRlciB7IGNvbnRlbnQ6IiI7IHBvc2l0aW9uOmFic29sdXRlOyByaWdodDowcHg7IHRvcDoxMDAlOyB6LWluZGV4Oi0xOyBib3JkZXItbGVmdDozcHggc29saWQgdHJhbnNwYXJlbnQ7IGJvcmRlci1yaWdodDozcHggc29saWQgIzA1MTQxZjsgYm9yZGVyLWJvdHRvbTozcHggc29saWQgdHJhbnNwYXJlbnQ7IGJvcmRlci10b3A6M3B4IHNvbGlkICMwNTE0MWY7IH0gLmltYWdlX3JpYmJvbl92ZHAgeyBwb3NpdGlvbjphYnNvbHV0ZTsgbGVmdDotNXB4OyB0b3A6LTZweDsgb3ZlcmZsb3c6aGlkZGVuOyB3aWR0aDoxOTRweDsgaGVpZ2h0OjE5NHB4OyB0ZXh0LWFsaWduOnJpZ2h0OyB6LWluZGV4OjQwOyB9IC5pbWFnZV9yaWJib25fdmRwIHNwYW4geyBmb250LXNpemU6MS4wNjNyZW0gOyBjb2xvcjojZmZmZmZmOyB0ZXh0LWFsaWduOmNlbnRlcjsgbGluZS1oZWlnaHQ6MzZweDsgdHJhbnNmb3JtOnJvdGF0ZSgtNDVkZWcpOyAtd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoLTQ1ZGVnKTsgd2lkdGg6MjczcHg7IGRpc3BsYXk6YmxvY2s7IGJhY2tncm91bmQ6IzA1MTQxZjsgYm94LXNoYWRvdzowIDNweCAxMHB4IC01cHggcmdiYSgwLCAwLCAwLCAxKTsgcG9zaXRpb246YWJzb2x1dGU7IHRvcDo2N3B4OyBsZWZ0Oi01MXB4OyB9IC5pbWFnZV9yaWJib25fdmRwIHNwYW46OmJlZm9yZSB7IGNvbnRlbnQ6IiI7IHBvc2l0aW9uOmFic29sdXRlOyBsZWZ0OjBweDsgdG9wOjEwMCU7IHotaW5kZXg6LTE7IGJvcmRlci1sZWZ0OjNweCBzb2xpZCAjZmZmZmZmOzsgYm9yZGVyLXJpZ2h0OjNweCBzb2xpZCB0cmFuc3BhcmVudDsgYm9yZGVyLWJvdHRvbTozcHggc29saWQgdHJhbnNwYXJlbnQ7IGJvcmRlci10b3A6M3B4IHNvbGlkICNmZmZmZmY7OyB9IC5pbWFnZV9yaWJib25fdmRwIHNwYW46OmFmdGVyIHsgY29udGVudDoiIjsgcG9zaXRpb246YWJzb2x1dGU7IHJpZ2h0OjBweDsgdG9wOjEwMCU7IHotaW5kZXg6LTE7IGJvcmRlci1sZWZ0OjNweCBzb2xpZCB0cmFuc3BhcmVudDsgYm9yZGVyLXJpZ2h0OjNweCBzb2xpZCAjZmZmZmZmOzsgYm9yZGVyLWJvdHRvbTozcHggc29saWQgdHJhbnNwYXJlbnQ7IGJvcmRlci10b3A6M3B4IHNvbGlkICNmZmZmZmY7OyB9IC5yaWJib24tY29udGFpbmVyIHsgd2lkdGggOjMwMHB4OyBoZWlnaHQgOjMwMHB4OyBvdmVyZmxvdyA6aGlkZGVuOyBwb3NpdGlvbiA6YWJzb2x1dGU7IHRvcCA6MDsgbGVmdCA6MDsgfSAucmliYm9uLWNvbnRhaW5lciAuY29ybmVyLXJpYmJvbiB7IHotaW5kZXggOjU1NTsgbWFyZ2luIDowOyBwYWRkaW5nIDowLjVyZW0gMCAhaW1wb3J0YW50OyBib3gtc2hhZG93IDowIDNweCAxMHB4IC01cHggcmdiYSgwLCAwLCAwLCAxKTsgZm9udC1zaXplIDoxN3B4OyBsaW5lLWhlaWdodCA6MjNweDsgdGV4dC1hbGlnbiA6Y2VudGVyOyBwb3NpdGlvbiA6YWJzb2x1dGU7IHRvcCA6MDsgbGVmdCA6MDsgdHJhbnNmb3JtIDp0cmFuc2xhdGVYKC0zMCUpIHRyYW5zbGF0ZVkoMCUpIHJvdGF0ZSgtNDVkZWcpOyB0cmFuc2Zvcm0tb3JpZ2luIDp0b3AgcmlnaHQ7IGJhY2tncm91bmQgOiMwNTE0MWY7IGNvbG9yIDojZmZmZmZmOyB9IC5yaWJib24tY29udGFpbmVyIC5jb3JuZXItcmliYm9uOmJlZm9yZSwgLnJpYmJvbi1jb250YWluZXIgLmNvcm5lci1yaWJib246YWZ0ZXIgeyBjb250ZW50IDoiIjsgcG9zaXRpb24gOmFic29sdXRlOyB0b3AgOjA7IG1hcmdpbiA6MCAtMXB4OyB3aWR0aCA6MTAwJTsgaGVpZ2h0IDoxMDAlOyBiYWNrZ3JvdW5kIDojMDUxNDFmOyB9IC5yaWJib24tY29udGFpbmVyIC5jb3JuZXItcmliYm9uOmJlZm9yZSB7IGxlZnQ6MTAwJTsgfSAucmliYm9uLWNvbnRhaW5lciAuY29ybmVyLXJpYmJvbjphZnRlciB7IHJpZ2h0OjEwMCU7IH0gLnNlYXJjaHJpZ2h0IHsgd2lkdGg6MjgwcHg7IGhlaWdodDoxMTZweDsgcGFkZGluZzo1cHggMCAwIDA7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvcmlnaHQtc2VhcmNoLWJveC5wbmcpIGxlZnQgdG9wIHJlcGVhdC14OyBmb250LXNpemU6MS4xODhyZW0gOyBjb2xvcjojMTkxOTE5OyB0ZXh0LWFsaWduOmNlbnRlcjsgZm9udC13ZWlnaHQ6bm9ybWFsO2N1cnNvcjpwb2ludGVyOyB9IC5zZWFyY2hyaWdodGhvdmVyIHsgd2lkdGg6MjgwcHg7IGhlaWdodDoxMTZweDsgcGFkZGluZzo1cHggMCAwIDA7IG1hcmdpbjowIDAgMCAwOyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL3JpZ2h0LXNlYXJjaC1ib3gtaG92ZXIucG5nKSBsZWZ0IHRvcCByZXBlYXQteDsgZm9udC1zaXplOjEuMTg4cmVtIDsgY29sb3I6I0ZGRkZGRjsgdGV4dC1hbGlnbjpjZW50ZXI7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgY3Vyc29yOnBvaW50ZXI7IH0gLnNlYXJjaHJpZ2h0WFhYIHsgd2lkdGg6MjgwcHg7IGhlaWdodDoxMTZweDsgcGFkZGluZzo1cHggMCAwIDA7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvcmlnaHQtc2VhcmNoLWJveC5wbmcpIGxlZnQgdG9wIG5vLXJlcGVhdCAjMDAwMDAwOyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojRkZGRkZGOyB0ZXh0LWFsaWduOmNlbnRlcjsgZm9udC13ZWlnaHQ6Ym9sZDtjdXJzb3I6cG9pbnRlcjsgYm9yZGVyLXJhZGl1czo4cHg7IC1tb3otYm9yZGVyLXJhZGl1czo4cHg7IC13ZWJraXQtYm9yZGVyLXJhZGl1czo4cHg7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSAuc2VhcmNocmlnaHRob3ZlclhYWCB7IHdpZHRoOjI4MHB4OyBoZWlnaHQ6MTE2cHg7IHBhZGRpbmc6NXB4IDAgMCAwOyBtYXJnaW46MCAwIDAgMDsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9yaWdodC1zZWFyY2gtYm94LWhvdmVyLnBuZykgbGVmdCB0b3Agbm8tcmVwZWF0ICMwMDAwMDA7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiNGRkZGRkY7IHRleHQtYWxpZ246Y2VudGVyOyBmb250LXdlaWdodDpib2xkOyBjdXJzb3I6cG9pbnRlcjsgYm9yZGVyLXJhZGl1czo4cHg7IC1tb3otYm9yZGVyLXJhZGl1czo4cHg7IC13ZWJraXQtYm9yZGVyLXJhZGl1czo4cHg7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSAuc2VhcmNocmlnaHQtdGV4dHsgbWFyZ2luLWxlZnQ6MTAwcHg7IHRleHQtYWxpZ246bGVmdDsgd2lkdGg6NjAlOyB9IC5zZWFyY2hyaWdodC10ZXh0IHB7IG1hcmdpbjoxNXB4IDAgMDsgfSAucGFnZW5vMntoZWlnaHQ6MjRweDsgfSAucGFnZW5vMiB1bHsgbGlzdC1zdHlsZS10eXBlOm5vbmU7IG1hcmdpbjowOyBwYWRkaW5nOjA7IHRleHQtdHJhbnNmb3JtOm5vbmU7IH0gLnBhZ2VubzIgdWwgbGl7IGxpc3Qtc3R5bGUtdHlwZTpub25lOyBtYXJnaW46MDsgZGlzcGxheTppbmxpbmU7fSAucGFnZW5vMiB1bCBsaSBheyBsaXN0LXN0eWxlLXR5cGU6bm9uZTsgbWFyZ2luOjA7IGRpc3BsYXk6YmxvY2s7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiMzMjMyMzI7IHRleHQtZGVjb3JhdGlvbjpub25lOyBwYWRkaW5nOjAgN3B4OyBtYXJnaW4tcmlnaHQ6MnB4OyBmb250LXdlaWdodDpib2xkOyBsaW5lLWhlaWdodDoyNHB4OyB0ZXh0LXRyYW5zZm9ybTpub25lOyB0ZXh0LWFsaWduOmNlbnRlcjsgdGV4dC10cmFuc2Zvcm06bm9uZTsgYmFja2dyb3VuZDojYjNiNGI1OyBmbG9hdDpsZWZ0OyAtbW96LWJvcmRlci1yYWRpdXM6NHB4OyAtd2Via2l0LWJvcmRlci1yYWRpdXM6NHB4OyBib3JkZXItcmFkaXVzOjRweDsgLWtodG1sLWJvcmRlci1yYWRpdXM6NHB4O30gLnBhZ2VubzIgdWwgbGkgYTpob3ZlcnsgbGlzdC1zdHlsZS10eXBlOm5vbmU7IG1hcmdpbjowOyBkaXNwbGF5OmJsb2NrOyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojRkZGRkZGOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgcGFkZGluZzowIDdweDsgbWFyZ2luLXJpZ2h0OjJweDsgZm9udC13ZWlnaHQ6Ym9sZDsgbGluZS1oZWlnaHQ6MjRweDsgdGV4dC10cmFuc2Zvcm06bm9uZTsgdGV4dC1hbGlnbjpjZW50ZXI7IHRleHQtdHJhbnNmb3JtOm5vbmU7IGJhY2tncm91bmQ6IzI4MjgyODsgZmxvYXQ6bGVmdDsgLW1vei1ib3JkZXItcmFkaXVzOjRweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjRweDsgYm9yZGVyLXJhZGl1czo0cHg7IC1raHRtbC1ib3JkZXItcmFkaXVzOjRweDt9IC5wYWdlbm8yIGxpIGEuYWN0aXZleyBsaXN0LXN0eWxlLXR5cGU6bm9uZTsgbWFyZ2luOjA7IGRpc3BsYXk6YmxvY2s7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiNGRkZGRkY7IHRleHQtZGVjb3JhdGlvbjpub25lOyBwYWRkaW5nOjAgN3B4OyBtYXJnaW4tcmlnaHQ6MnB4OyBmb250LXdlaWdodDpib2xkOyBsaW5lLWhlaWdodDoyNHB4OyB0ZXh0LXRyYW5zZm9ybTpub25lOyB0ZXh0LWFsaWduOmNlbnRlcjsgdGV4dC10cmFuc2Zvcm06bm9uZTsgYmFja2dyb3VuZDojMjgyODI4OyBmbG9hdDpsZWZ0OyAtbW96LWJvcmRlci1yYWRpdXM6NHB4OyAtd2Via2l0LWJvcmRlci1yYWRpdXM6NHB4OyBib3JkZXItcmFkaXVzOjRweDsgLWtodG1sLWJvcmRlci1yYWRpdXM6NHB4O30gLm1haW5fYm94e3dpZHRoOjk2MHB4OyBtYXJnaW46MCBhdXRvO30gLm1haW5fbGVmdF9ib3h7d2lkdGg6NjcwcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0O3BhZGRpbmctcmlnaHQ6MTBweDt9IC5tYWluX2xlZnRfYm94IHVse3BhZGRpbmc6MHB4O30gLmJveF9taWRfcm91bmQgeyBiYWNrZ3JvdW5kLWNvbG9yOnJnYigyNTUsMjU1LDI1NSk7IC1tcy1maWx0ZXI6cHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkFscGhhKE9wYWNpdHk9MTAwKTsgYmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LDEpOyBib3JkZXItcmFkaXVzOjVweDsgYm94LXNoYWRvdzpub25lOyBmbG9hdDpsZWZ0OyBoZWlnaHQ6YXV0bzsgbWFyZ2luLXRvcDoxMHB4OyB9IC5ib3hfdG9wX3JvdW5kIHsgZGlzcGxheTpub25lOyB9IC5ib3gyX2RldGFpbHNfZm9vdGVyMiB7IGRpc3BsYXk6bm9uZTsgfSAuZGV0YWlsc19ib3ggaW1nLnZpcHsgbWFyZ2luLXRvcDotNDhweDsgd2lkdGg6MTQwcHg7IGJvcmRlcjoxcHg7IGJvcmRlci1yYWRpdXM6NHB4OyB9IC5ib3hfdG9wX3JvdW5kMnt3aWR0aDo5NzFweDsgaGVpZ2h0OjE1cHg7IGZsb2F0OmxlZnQ7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvYm94X3RvcC5wbmcpIGxlZnQgdG9wIG5vLXJlcGVhdDtiYWNrZ3JvdW5kLXNpemU6OTcxcHggYXV0bzsgbWFyZ2luLXRvcDo1cHg7fSAuYm94X21pZF9yb3VuZDJ7d2lkdGg6OTcxcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL2JveF9taWQucG5nKSBsZWZ0IHRvcCByZXBlYXQteTtiYWNrZ3JvdW5kLXNpemU6OTcxcHggYXV0bzsgcGFkZGluZzowIDVweDt9IC5wYWdlX25hbWV7d2lkdGg6NjUwcHg7IGhlaWdodDozMHB4OyBmbG9hdDpsZWZ0OyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL3Noby5wbmcpIGNlbnRlciBib3R0b20gbm8tcmVwZWF0OyBiYWNrZ3JvdW5kLXBvc2l0aW9uOmJvdHRvbTsgcGFkZGluZzowIDBweCAwcHggMjFweDsgbGluZS1oZWlnaHQ6MzBweDsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzQxNDE0MTt9IC5wYWdlX25hbWUgYXsgbGluZS1oZWlnaHQ6MzBweDsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzQxNDE0MTsgdGV4dC10cmFuc2Zvcm06bm9uZTsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7fSAucGFnZV9uYW1lIGE6aG92ZXJ7IGxpbmUtaGVpZ2h0OjMwcHg7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiMwMDU4OWM7IHRleHQtdHJhbnNmb3JtOm5vbmU7IHRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7fSB0YWJsZS52ZWhpY2xlTGlzdFRhYmxlIGF7ZGlzcGxheTp0YWJsZS1jZWxsOyB2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7bGluZS1oZWlnaHQ6MS4yO30gdGFibGUudmVoaWNsZUxpc3RUYWJsZSBhOmhvdmVye2Rpc3BsYXk6dGFibGUtY2VsbDsgdmVydGljYWwtYWxpZ246bWlkZGxlO2xpbmUtaGVpZ2h0OjEuMjt9IC5Qb3JzY2hlMnt3aWR0aDoxMDAlO2hlaWdodDozMXB4OyBmbG9hdDpsZWZ0OyBwYWRkaW5nOjAgMHB4IDIwcHggMjFweDsgbWFyZ2luOjE1cHggMCAyNXB4IDA7IGxpbmUtaGVpZ2h0OjMxcHg7IGZvbnQtc2l6ZToxLjg3NXJlbSA7IGNvbG9yOiM0MTQxNDE7ZGlzcGxheTppbmxpbmV9IC5Qb3JzY2hlMiBoMXtmb250LXdlaWdodDpub3JtYWw7IGZvbnQtc2l6ZToxLjg3NXJlbSA7IGNvbG9yOiM0MTQxNDE7fSAuVHJpZXJwYXJ7IGZvbnQtc2l6ZTowLjc1cmVtIDsgY29sb3I6IzVCNjk5QzsgZm9udC13ZWlnaHQ6bm9ybWFsO3BhZGRpbmctbGVmdDo1cHg7fSAuc2VsZWN0ZWRfYm94Mnt3aWR0aDoxNzVweDsgaGVpZ2h0OjMxcHg7IGZsb2F0OmxlZnQ7IHBhZGRpbmc6MCAwcHggMHB4IDBweDsgbWFyZ2luOjE1cHggMDsgbGluZS1oZWlnaHQ6MzFweDsgZm9udC1zaXplOjEuODc1cmVtIDsgY29sb3I6IzQxNDE0MTt9IC5zZWxlY3RlZF9vcmRlcmJ5e3dpZHRoOjEzNXB4OyBmbG9hdDpyaWdodDsgcGFkZGluZzowIDBweCAwcHggMHB4OyBtYXJnaW46MTBweCAxMHB4IDBweCAwcHg7IGZvbnQtc2l6ZToxLjg3NXJlbSA7IGNvbG9yOiM0MTQxNDE7fSAucHJpeHt3aWR0aDo3OXB4OyBoZWlnaHQ6NzhweDsgZmxvYXQ6bGVmdDsgcG9zaXRpb246YWJzb2x1dGU7IHotaW5kZXg6MTE7IG1hcmdpbi10b3A6LTRweDsgbWFyZ2luLWxlZnQ6LTRweDsgdG9wOjBweDt9IC5wYWdlbm81e3dpZHRoOjEwMCU7IGhlaWdodDoyNHB4OyBtYXJnaW46MzBweCAwIDIwcHggMHB4OyBwYWRkaW5nOjA7IGZsb2F0OmxlZnQgfSAucGFnZW5vNnt3aWR0aDoyNTRweDsgaGVpZ2h0OjI0cHg7IGZsb2F0OmxlZnQ7IHRleHQtYWxpZ246cmlnaHQ7fSAuc3VpdmFudHt3aWR0aDoyODBweDsgaGVpZ2h0OjE5cHg7IGZsb2F0OmxlZnQ7IHBhZGRpbmctdG9wOjVweDt9IC5tYWluX3JpZ2h0X2JveHt3aWR0aDoyODBweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7fSAuYm94N3t3aWR0aDoyOTBweDsgaGVpZ2h0OjEycHg7IGZsb2F0OmxlZnQ7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvbGVmdF9ib3hfdG9wLnBuZykgbGVmdCB0b3Agbm8tcmVwZWF0OyB9IC5ib3g3TGlua3t3aWR0aDoyOTBweDsgaGVpZ2h0OjEycHg7IGZsb2F0OmxlZnQ7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvbGVmdF9ib3hfdG9wLnBuZykgbGVmdCB0b3Agbm8tcmVwZWF0OyB9IC5ib3g3X21pZHt3aWR0aDoyODBweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvbGVmdF9ib3hfbWlkLnBuZykgbGVmdCB0b3AgcmVwZWF0LXk7IHBhZGRpbmc6MCAycHg7fSAuYm94N19taWRfZnVsbHt3aWR0aDo5NTZweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IGJhY2tncm91bmQ6bm9uZSBsZWZ0IHRvcCBuby1yZXBlYXQgMCAwIHRyYW5zcGFyZW50OyBwYWRkaW5nOjAgMnB4IDE1cHg7IGJvcmRlci1ib3R0b206MXB4IHNvbGlkICNCQkI7fSAuc2ltdWxhcl92X2JveHsgd2lkdGg6MjY1cHg7IHBhZGRpbmc6MHB4IDBweCA1cHggMTBweDsgbWFyZ2luLWJvdHRvbTo1cHg7IH0gLmJveFNlYXJjaE5ld3N7bWFyZ2luLXRvcDotM3B4O21hcmdpbi1sZWZ0Oi01cHg7d2lkdGg6Mjg1cHg7IGhlaWdodDoxMnB4OyBmbG9hdDpsZWZ0OyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL2xlZnRfYm94X3RvcF8yODAucG5nKSBsZWZ0IHRvcCBuby1yZXBlYXQ7fSAuYm94U2VhcmNoTmV3c19taWR7bWFyZ2luLWxlZnQ6LTVweDtwYWRkaW5nOjBweDt3aWR0aDoyODFweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvbGVmdF9ib3hfbWlkXzI4MC5wbmcpIGxlZnQgdG9wIHJlcGVhdC15OyB9IC5ib3hTZWFyY2hOZXdzX2Zvb3RlcjE1e21hcmdpbi1sZWZ0Oi01cHg7d2lkdGg6Mjg1cHg7IGhlaWdodDoxMnB4OyBmbG9hdDpsZWZ0OyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL2xlZnRfYm94X2Zvb3Rlcl8yODAucG5nKSBsZWZ0IHRvcCBuby1yZXBlYXQ7fSAuYm94N0hfbWlke3dpZHRoOjI4MHB4OyBmbG9hdDpsZWZ0OyBwYWRkaW5nLWJvdHRvbTo2cHg7fSAuUmVjaGVyY2hlMjJ7aGVpZ2h0OjIwcHg7IHBhZGRpbmc6MTBweCA3cHg7IGZvbnQtc2l6ZToxLjEyNXJlbSA7IGNvbG9yOiMwNTE0MWY7fSAuc2ltVGl0bGV7aGVpZ2h0OmF1dG87IHBhZGRpbmc6MHB4OyBmb250LXNpemU6MS4xMjVyZW0gOyBjb2xvcjojMGYxYTFlO30gLmJveDh7d2lkdGg6MjcwcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBwYWRkaW5nOjBweCAwcHggMHB4IDEwcHg7fSAuYm94OXt3aWR0aDoyMHB4OyBoZWlnaHQ6MThweDsgZmxvYXQ6bGVmdDsgcGFkZGluZzowcHggMHB4IDE0cHggMHB4OyBmb250LXNpemU6MS4xMjVyZW0gOyBjb2xvcjojMGYxYTFlO30gLmJveDExe3dpZHRoOjEwMHB4OyBoZWlnaHQ6MTFweDsgZmxvYXQ6bGVmdDsgcGFkZGluZzo3cHggMHB4IDE0cHggMHB4OyBmb250LXNpemU6MC44MTNyZW0gOyBjb2xvcjojNTc1NzU3OyBsaW5lLWhlaWdodDoxOHB4O30gLmJveDEye3dpZHRoOjEzMHB4OyBoZWlnaHQ6MTFweDsgZmxvYXQ6bGVmdDsgcGFkZGluZzo3cHggMHB4IDE0cHggMHB4OyBmb250LXNpemU6MC44MTNyZW0gOyBjb2xvcjojNTc1NzU3OyBsaW5lLWhlaWdodDoxOHB4O30gLnNlbGVjdF9ib3gxNHtoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgcGFkZGluZzowcHggMTBweCAwcHggMHB4OyBtYXJnaW4tYm90dG9tOjNweDt9IC5zZWxlY3RfYm94MTZ7aGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IHBhZGRpbmc6MHB4IDEwcHggMHB4IDEwcHg7IG1hcmdpbi1ib3R0b206M3B4O30gLnNlbGVjdF9ib3gxNXtoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgcGFkZGluZzoxMHB4IDEwcHggMHB4IDEwcHg7IG1hcmdpbi1ib3R0b206MTBweDt9IC5zZWxlY3RfYm94MTE1e3dpZHRoOjExNXB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgcGFkZGluZzowcHggMHB4IDBweCAxMHB4OyBtYXJnaW4tYm90dG9tOjEwcHg7fSAuc2VsZWN0X2JveDgwe3dpZHRoOjgwcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBwYWRkaW5nOjBweCAwcHggMHB4IDBweDsgbWFyZ2luLWJvdHRvbToxMHB4O30gLmFfdGV4dHt3aWR0aDoyMHB4OyBmbG9hdDpsZWZ0OyBmb250LXNpemU6MC44MTNyZW0gOyBjb2xvcjojNTc1NzU3OyBsaW5lLWhlaWdodDozMXB4OyB0ZXh0LWFsaWduOmNlbnRlcjsgcGFkZGluZzowIDVweDt9IC5ham91dGVye3dpZHRoOjEwMCU7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBwYWRkaW5nOjEwcHggMDsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6I0ZGRkZGRjsgYmFja2dyb3VuZC1jb2xvcjojMWYxZjFmO21hcmdpbjo1cHggMCAxMHB4IDBweDt9IC5ham91dGVyX2F7YmFja2dyb3VuZDp1cmwoIi9pbWFnZXMvc2VhcmNoLWRvd24tYXJyb3cucG5nIikgbm8tcmVwZWF0IHNjcm9sbCBsZWZ0IDNweCB0cmFuc3BhcmVudDsgcGFkZGluZy1sZWZ0OjI1cHg7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiNGRkZGRkY7IHRleHQtZGVjb3JhdGlvbjpub25lOyB9IC5ham91dGVyX2FfZnVsbHtiYWNrZ3JvdW5kOnVybCgiL2ltYWdlcy9zZWFyY2gtcmlnaHQtYXJyb3cucG5nIikgbm8tcmVwZWF0IHNjcm9sbCByaWdodCAtMXB4IHRyYW5zcGFyZW50OyBwYWRkaW5nLXJpZ2h0OjI1cHg7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiNGRkZGRkY7IHRleHQtZGVjb3JhdGlvbjpub25lOyB9IC5ib3gxM3t3aWR0aDoyNjBweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IHBhZGRpbmc6MHB4IDEwcHggMHB4IDEwcHg7fSAuaW5wdXRfYm94Mnt3aWR0aDoyMHB4OyBoZWlnaHQ6MThweDsgZmxvYXQ6bGVmdDsgcGFkZGluZzowcHggMHB4IDE0cHggMHB4OyBmb250LXNpemU6MS4xMjVyZW0gOyBjb2xvcjojMGYxYTFlO30gLmlucHV0X3RleHR7IHdpZHRoOjE5NXB4OyBoZWlnaHQ6MTFweDsgZmxvYXQ6bGVmdDsgcGFkZGluZzozcHggMHB4IDdweCA1cHg7IGZvbnQtc2l6ZTowLjgxM3JlbSA7IGNvbG9yOiM1NzU3NTc7IGxpbmUtaGVpZ2h0OjE4cHg7IH0gLmJ1dHRvbl9ib3gye3dpZHRoOjI2MHB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgfSAuYnV0dG9uX2JveFMyeyB3aWR0aDoyNDZweDsgaGVpZ2h0OjI5cHg7IGZsb2F0OmxlZnQ7IHBhZGRpbmc6MTBweCAzcHggMTNweCAzcHg7IH0gLmJveC1mb290ZXIxNXt3aWR0aDoyOTBweDsgaGVpZ2h0OjEycHg7IGZsb2F0OmxlZnQ7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvbGVmdF9ib3hfZm9vdGVyLnBuZykgbGVmdCB0b3Agbm8tcmVwZWF0O30gLmRpc3sgbWFyZ2luLXRvcDo1cHg7IG1hcmdpbi1sZWZ0OjVweDsgd2lkdGg6MjQwcHg7fSAuZGlzX2N1c3RvbXsgd2lkdGg6MjQwcHg7d2lkdGg6MjQwcHg7fSAuZGlzX3RvcHsgd2lkdGg6MjQ2cHg7IGhlaWdodDo5cHg7IGZsb2F0OmxlZnQ7fSAuZGlzX3RvcF9jdXN0b217IHdpZHRoOjIzOHB4OyBoZWlnaHQ6NDBweDsgZmxvYXQ6bGVmdDsgY29sb3I6IzAwMDAwMDsgYmFja2dyb3VuZDojY2JjYmNiO30gLmRpc19iZ3sgd2lkdGg6MjQ2cHg7IGhlaWdodDoxNTBweDsgZmxvYXQ6bGVmdDsgY29sb3I6IzI4MjgyODsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9kaXNfYmcucG5nKSBsZWZ0IHRvcCByZXBlYXQteTt9IC5fZGlzX2JneyB3aWR0aDoyNDBweDsgaGVpZ2h0OjIwMHB4OyBmbG9hdDpsZWZ0OyBjb2xvcjojMjgyODI4O30gLmRpc19iZ19jdXN0b217IGZsb2F0OmxlZnQ7IGNvbG9yOiMyODI4Mjg7IGJhY2tncm91bmQ6cmdiYSgyNTUsMjU1LDI1NSwxKTt9IC5fZGlzX2JnX2N1c3RvbXsgZmxvYXQ6bGVmdDsgY29sb3I6IzI4MjgyODsgYmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LDEpO30gLmRpc19ib3V7IHdpZHRoOjI0NnB4OyBoZWlnaHQ6NTBweDsgZmxvYXQ6bGVmdDsgY29sb3I6IzJkMmQyZDsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9kaXNfYm91LnBuZykgbGVmdCB0b3Agbm8tcmVwZWF0O30gLl9kaXNfYm91eyB3aWR0aDoyNDBweDsgaGVpZ2h0OjM4cHg7IGZsb2F0OmxlZnQ7IGJvcmRlci1yYWRpdXM6MCAwIDZweCA2cHg7IG1hcmdpbi10b3A6MTRweDsgY29sb3I6IzJkMmQyZDs7IH0gLmRpc19ib3VfY3VzdG9teyB3aWR0aDoyMzhweDsgaGVpZ2h0OjUwcHg7IGZsb2F0OmxlZnQ7IHBhZGRpbmctdG9wOjVweDsgY29sb3I6IzA1MTQxZjsgYmFja2dyb3VuZDojZmZmZmZmO30gLl9kaXNfYm91X2N1c3RvbXsgd2lkdGg6MjQwcHg7IGhlaWdodDo0MHB4OyBmbG9hdDpsZWZ0OyBjb2xvcjojMDUxNDFmOyBib3JkZXItcmFkaXVzOjAgMCA2cHggNnB4OyBtYXJnaW4tdG9wOjEycHg7IGJhY2tncm91bmQtY29sb3I6I2ZmZmZmZjsgfSAuZGlzX2JvdV8yeyB3aWR0aDoyNDZweDsgaGVpZ2h0OjlweDsgZmxvYXQ6bGVmdDsgY29sb3I6IzJkMmQyZDsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9kaXNfYm91XzIucG5nKSBsZWZ0IHRvcCBuby1yZXBlYXQ7fSAuZGlzX3RleHR7IGZvbnQtc2l6ZToxLjQzOHJlbSA7IHBhZGRpbmc6NHB4IDBweCAwcHggMTVweDt9IC5sdW5kaV90ZXh0eyBmb250LXNpemU6MC44MTNyZW0gOyBwYWRkaW5nOjJweCAwcHggMHB4IDIwcHg7IGxpbmUtaGVpZ2h0OjE0cHg7fSAubHVuZGlfdGV4dF9ob21lcGFnZV9oMjQ4e2ZvbnQtc2l6ZTowLjgxM3JlbSA7IGxpbmUtaGVpZ2h0OjE4cHg7IHBhZGRpbmc6MTBweCAwIDAgMjBweDsgfSAubHVuZGlfdGV4dCB0aHt0ZXh0LWFsaWduOmxlZnQ7Zm9udC13ZWlnaHQ6bm9ybWFsO3dpZHRoOjYwcHg7fSAubHVuZGlfdGV4dCB0ZHt0ZXh0LWFsaWduOmxlZnQ7fSAucHsgaGVpZ2h0OjE2cHg7IGZsb2F0OmxlZnQ7IHBhZGRpbmc6N3B4IDVweCAwcHggMTBweDsgZm9udC1zaXplOjAuODEzcmVtIDt9IC5leyBoZWlnaHQ6MTZweDsgZmxvYXQ6cmlnaHQ7IHBhZGRpbmc6N3B4IDBweCAwcHggMHB4OyBmb250LXNpemU6MC44NzVyZW0gO30gLmJveDI4OCwgLmJveDI4OF9jdXN0b217d2lkdGg6MjgwcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyB9IC5fYm94Mjg4LCAuX2JveDI4OF9jdXN0b217d2lkdGg6MjgwcHg7IGZsb2F0OmxlZnQ7IH0gLmJveDI4OFVzZWR7d2lkdGg6MjgwcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBtYXJnaW4tbGVmdDowcHg7fSAuYm94Mjg4TmV3e3dpZHRoOjI4MHB4OyBmbG9hdDpsZWZ0OyB9IC5ib3gyODhOZXdfY3VzdG9te2Zsb2F0OmxlZnQ7fSAuYm94Mjg4TmV3UU0sIC5ib3gyODhOZXdRTV9tb2JpbGUgeyBib3JkZXItcmFkaXVzOjVweDsgYmFja2dyb3VuZC1jb2xvcjpyZ2IoMjU1LDI1NSwyNTUpOyAtbXMtZmlsdGVyOnByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5BbHBoYShPcGFjaXR5PTEwMCk7IGJhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwxKTsgYm94LXNoYWRvdzpub25lOyBjbGVhcjpib3RoOyBmbG9hdDpsZWZ0OyB3aWR0aDoyODBweDsgbWFyZ2luLWJvdHRvbTo1cHg7IH0gLmJveDI4OE5ld1FNX21vYmlsZSB7IHdpZHRoOjEwMCU7IH0gLmJveDI4OE5ld1FNX21vYmlsZSAuUmVjaGVyY2hlMjIgeyB0ZXh0LWFsaWduOmNlbnRlcjsgfSAuYm94Mjg4TmV3UU1fbW9iaWxlIHRhYmxlIHsgd2lkdGg6MTAwJTsgfSAuYm94Mjg4TmV3UU1fbW9iaWxlIC5qcVRyYW5zZm9ybUlucHV0V3JhcHBlciB7IHdpZHRoOjEwMCUhaW1wb3J0YW50OyB9IC5ib3gyODhOZXdRTV9tb2JpbGUgLmpxVHJhbnNmb3JtSW5wdXRXcmFwcGVyIGlucHV0IHsgd2lkdGg6OTUlIWltcG9ydGFudDsgfSAuYm94Mjg4UU17IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBtYXJnaW4tdG9wOjVweDsgZm9udC1zaXplOjAuODc1cmVtIDtmb250LXdlaWdodDpub3JtYWw7fSAuYm94Mjg4UU1fY3VzdG9te3dpZHRoOjI3OHB4O21hcmdpbjo1cHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBvdmVyZmxvdzpoaWRkZW47Ym9yZGVyLXJhZGl1czo2cHg7Ym94LXNoYWRvdzowIDAgNHB4ICMzMzM7fSAudGV4dEFyZWFRTXsgZm9udC1zaXplOjAuODEzcmVtIDtsaW5lLWhlaWdodDoxNXB4O30gLmJveDI4OF90b3B7d2lkdGg6Mjg4cHg7IGhlaWdodDoxNHB4OyBmbG9hdDpsZWZ0OyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL3JpZ2h0X2JveDRfdG9wLnBuZykgbGVmdCB0b3Agbm8tcmVwZWF0OyBtYXJnaW4tdG9wOjBweDt9IC5ib3gyODhfdG9wX2N1c3RvbXt3aWR0aDoyNzhweDsgaGVpZ2h0OjQwcHg7IGZsb2F0OmxlZnQ7IGNvbG9yOiMwMDAwMDA7IGJhY2tncm91bmQ6I2NiY2JjYjt9IC5fYm94Mjg4UU17IHdpZHRoOjI4MHB4OyB9IC5fYm94Mjg4X3RvcHt9IC5fYm94Mjg4X3RvcF9jdXN0b217IGhlaWdodDo0MHB4OyBmbG9hdDpsZWZ0OyBXaWR0aDoxMDAlOyBjb2xvcjojMDAwMDAwOyBiYWNrZ3JvdW5kOiNmZmZmZmY7IGJvcmRlci1yYWRpdXM6NnB4IDZweCAwIDA7IH0gLl9ib3gyODgwX21pZHt9IC5fYm94Mjg4MF9taWRfY3VzdG9te2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwxKTt9IC5ib3gyODhfbWlkeyBib3gtc2hhZG93OjAgMCA1cHggIzMzMzMzMzsgYm9yZGVyLXJhZGl1czo1cHg7IG1hcmdpbi10b3A6NXB4OyBtYXJnaW4tbGVmdDo1cHg7IGZsb2F0OmxlZnQ7IGNvbG9yOiMyODI4Mjg7IGJhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwxKTsgfSAuYm94Mjg4X21pZF9jdXN0b217IGJveC1zaGFkb3c6MCAwIDVweCAjMzMzMzMzOyBib3JkZXItcmFkaXVzOjVweDsgbWFyZ2luLXRvcDo1cHg7IG1hcmdpbi1sZWZ0OjVweDsgZmxvYXQ6bGVmdDsgY29sb3I6IzI4MjgyODsgYmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LDEpO30gLmJveDI4ODBfbWlke3dpZHRoOjI1OHB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgY29sb3I6IzI4MjgyODsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9yaWdodF9ib3g0X21pZC5wbmcpIGxlZnQgdG9wIHJlcGVhdC15OyBwYWRkaW5nOjAgMTVweCAwcHggMTVweDt9IC5ib3gyODgwX21pZF9jdXN0b217d2lkdGg6MjI4cHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBwYWRkaW5nOjVweCAyNXB4OyBjb2xvcjojMjgyODI4OyBiYWNrZ3JvdW5kOnJnYmEoMjU1LDI1NSwyNTUsMSk7fSAuYm94MjY5X21pZHt3aWR0aDoyNThweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvcmlnaHRfYm94NF9taWQucG5nKSBsZWZ0IHRvcCByZXBlYXQteTsgcGFkZGluZzowIDE1cHggMHB4IDE1cHg7fSAuem9vbTIye3dpZHRoOjI1OHB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgdGV4dC1hbGlnbjpjZW50ZXI7fSAuc2VhcmNoX3JpZ2h0IHtiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL3NlYXJjaC5wbmcpIDAgMCBuby1yZXBlYXQ7IHdpZHRoOjI3OHB4OyBoZWlnaHQ6MTExcHg7IGRpc3BsYXk6YmxvY2s7IG1hcmdpbjo1cHggNXB4IDVweCA1cHh9IC5EZW1hbmRlMjJ7d2lkdGg6Mjc4cHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyB0ZXh0LWFsaWduOmNlbnRlcjsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzlhMDEwMTsgbGluZS1oZWlnaHQ6MjZweDsgbWFyZ2luLXRvcDo2N3B4O30gLkRlbWFuZGUyMiBheyB0ZXh0LWFsaWduOmNlbnRlcjsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzlhMDEwMTsgbGluZS1oZWlnaHQ6MjBweCA7IHRleHQtZGVjb3JhdGlvbjpub25lO30gLkRlbWFuZGUyMiBhOmhvdmVyeyB0ZXh0LWFsaWduOmNlbnRlcjsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzlhMDEwMTsgdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTt9IC5EZW1hbmRlMjIgc3BhbiBheyB0ZXh0LWFsaWduOmNlbnRlcjsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzI5MjkyOTsgbGluZS1oZWlnaHQ6MjBweCA7IHRleHQtZGVjb3JhdGlvbjpub25lO30gLkRlbWFuZGUyMiBzcGFuIGE6aG92ZXJ7IHRleHQtYWxpZ246Y2VudGVyOyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojMjkyOTI5OyB0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lO30gLmJveDI4OF9mb290ZXJ7d2lkdGg6Mjg4cHg7IGhlaWdodDoxNHB4OyBmbG9hdDpsZWZ0OyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL3JpZ2h0X2JveDRfZm9vdGVyLnBuZykgbGVmdCB0b3Agbm8tcmVwZWF0O30gLmJveDI4OF9mb290ZXJfcXN7d2lkdGg6Mjg4cHg7IGhlaWdodDoxMXB4OyBmbG9hdDpsZWZ0OyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL3JpZ2h0X2JveDRfZm9vdGVyLnBuZykgbGVmdCB0b3Agbm8tcmVwZWF0O30gLmJveDI4OF9mb290ZXJfcXN7d2lkdGg6Mjg4cHg7IGhlaWdodDoxMXB4OyBmbG9hdDpsZWZ0OyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL3JpZ2h0X2JveDRfZm9vdGVyLnBuZykgbGVmdCB0b3Agbm8tcmVwZWF0O30gLmJveDI4OF9mb290ZXI1NXsgd2lkdGg6MjgwcHg7IGhlaWdodDo1MHB4OyBmbG9hdDpsZWZ0OyBjb2xvcjojMmQyZDJkOyBiYWNrZ3JvdW5kLWNvbG9yOiNDQkNCQ0I7IGJvcmRlci1yYWRpdXM6MCAwIDZweCA2cHg7IH0gLmJveDI4OF9mb290ZXI1NV9jdXN0b217IHdpZHRoOjI4MHB4OyBoZWlnaHQ6MzVweDsgcGFkZGluZy10b3A6NXB4OyBmbG9hdDpsZWZ0OyBjb2xvcjojMDUxNDFmOyBiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmY7IGJvcmRlci1yYWRpdXM6MCAwIDZweCA2cHg7IH0gLnAgYXt0ZXh0LWRlY29yYXRpb246bm9uZTt9IC5nYXAxMHt3aWR0aDoyMzBweDsgaGVpZ2h0OjEwcHg7IGZsb2F0OmxlZnQ7fSAucGFnZV9uYW1lMnt3aWR0aDo2NTBweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IHBhZGRpbmc6MCAwIDIwcHggMDsgbGluZS1oZWlnaHQ6MzBweDsgZm9udC1zaXplOjEuNjI1cmVtIDsgY29sb3I6IzA1MTQxZjtmb250LXdlaWdodDpub3JtYWx9IC5wYWdlX25hbWUzeyB3aWR0aDoxMDAlO2JveC1zaXppbmc6Ym9yZGVyLWJveDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IHBhZGRpbmc6MHB4IDEwcHggMTBweCAxMHB4OyBsaW5lLWhlaWdodDozMHB4OyBmb250LXNpemU6MS41cmVtIDsgY29sb3I6IzI0MjQyNDt9IC5wYWdlX25hbWUzIGgxeyBmb250LXNpemU6MS44NzVyZW0gOyBjb2xvcjojMjQyNDI0O2ZvbnQtd2VpZ2h0Om5vcm1hbH0gLnBhZ2VfbmFtZTR7d2lkdGg6NjUwcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL3Noby5wbmcpIGNlbnRlciBib3R0b20gbm8tcmVwZWF0OyBiYWNrZ3JvdW5kLXBvc2l0aW9uOmJvdHRvbTsgcGFkZGluZzowIDBweCAxMHB4IDIxcHg7IGxpbmUtaGVpZ2h0OjMwcHg7IGZvbnQtc2l6ZToxLjEyNXJlbSA7IGNvbG9yOiMwMTRGODA7fSAucGFnZV9uYW1lNCBoMnsgZm9udC1zaXplOjEuNXJlbSA7IGNvbG9yOnJnYigyNTUsMjU1LDI1NSk7Zm9udC13ZWlnaHQ6bm9ybWFsfSAucGFnZV9uYW1lNXt3aWR0aDoxMDAlO2hlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL3Noby5wbmcpIGNlbnRlciBib3R0b20gbm8tcmVwZWF0OyBiYWNrZ3JvdW5kLXBvc2l0aW9uOmJvdHRvbTsgcGFkZGluZzowIDBweCAxMHB4IDA7IG1hcmdpbi1ib3R0b206MTVweDsgbGluZS1oZWlnaHQ6MzBweDsgZm9udC1zaXplOjEuNXJlbSA7IGNvbG9yOiMyNDI0MjQ7Zm9udC13ZWlnaHQ6bm9ybWFsIH0gI3NlYXJjaENvbnRhaW5lclBhcmVudCAucGFnZV9uYW1lNTpub3QoOmZpcnN0LWNoaWxkKSB7IG1hcmdpbi10b3A6MzBweDsgfSAuYm94Ml90ZXh0e2hlaWdodDphdXRvOyB3aWR0aDoxMDAlOyBmbG9hdDpsZWZ0OyBsaW5lLWhlaWdodDoxOHB4OyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojMjQyNDI0OyB9IC5ib3gyX3RleHQgcHsgbGluZS1oZWlnaHQ6MThweDsgZm9udC1zaXplOjAuODc1cmVtIDtjb2xvcjojMDUxNDFmOyBtYXJnaW4tYm90dG9tOjIwcHg7fSAucG9zaXRpdmVSYXRpbmdUeHQgcHtmb250LXNpemU6MXJlbSA7fSAucG9zaXRpdmVSYXRpbmdUeHQgaDMsIC5wb3NpdGl2ZVJhdGluZ1R4dCBoNHtmb250LXdlaWdodDpub3JtYWw7fSAucG9zaXRpdmVSYXRpbmdUeHQgLmJ0bi1kZWZhdWx0e3RleHQtdHJhbnNmb3JtOm5vbmU7fSAucG9zaXRpdmVSYXRpbmdUeHQgLmJ0bi1kZWZhdWx0e2ZvbnQtc2l6ZToxLjI1cmVtIDt9IC5ldGFwZXt3aWR0aDphdXRvOyBoZWlnaHQ6NDZweDsgZmxvYXQ6bGVmdDsgbWFyZ2luLXJpZ2h0OjIwcHg7fSAudGV4dDF7d2lkdGg6YXV0bzsgaGVpZ2h0OjQ2cHg7IGZsb2F0OmxlZnQ7IHBhZGRpbmc6MCAwcHggMHB4IDBweDt9IC50ZXh0MSBhe3dpZHRoOmF1dG87IGhlaWdodDo0NnB4OyBmbG9hdDpsZWZ0OyBwYWRkaW5nOjAgMHB4IDBweCAwcHg7IGxpbmUtaGVpZ2h0OjQ2cHg7IHRleHQtYWxpZ246bGVmdDsgZm9udC1zaXplOjEuODc1cmVtIDsgY29sb3I6IzQzNDM0MzsgZm9udC13ZWlnaHQ6Ym9sZDsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IHRleHQtc2hhZG93OjFweCAxcHggMXB4ICNmM2YzZjM7IH0gLnRleHQxIGE6aG92ZXJ7d2lkdGg6YXV0bzsgaGVpZ2h0OjQ2cHg7IGZsb2F0OmxlZnQ7IHBhZGRpbmc6MCAwcHggMHB4IDBweDsgbGluZS1oZWlnaHQ6NDZweDsgdGV4dC1hbGlnbjpsZWZ0OyBmb250LXNpemU6MS44NzVyZW0gOyBjb2xvcjojNDM0MzQzOyBmb250LXdlaWdodDpib2xkOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgdGV4dC1zaGFkb3c6MXB4IDFweCAxcHggI2YzZjNmMzsgfSAudGV4dDEgYS5hY3RpdmV7d2lkdGg6YXV0bzsgaGVpZ2h0OjQ2cHg7IGZsb2F0OmxlZnQ7IHBhZGRpbmc6MCAwcHggMHB4IDBweDsgbGluZS1oZWlnaHQ6NDZweDsgdGV4dC1hbGlnbjpsZWZ0OyBmb250LXNpemU6MS44NzVyZW0gOyBjb2xvcjojNDM0MzQzOyBmb250LXdlaWdodDpib2xkOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgdGV4dC1zaGFkb3c6MXB4IDFweCAxcHggI2YzZjNmMzsgfSAub25lMXt3aWR0aDo0NnB4OyBoZWlnaHQ6NDZweDsgZmxvYXQ6cmlnaHQ7IG1hcmdpbi1sZWZ0OjEwcHg7fSAub25lMSBhe3dpZHRoOjQ2cHg7IGhlaWdodDo0NnB4OyBmbG9hdDpsZWZ0OyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzLzFfcm91bmQucG5nKSBsZWZ0IHRvcCBuby1yZXBlYXQ7IGZvbnQtc2l6ZToyLjI1cmVtIDsgZm9udC13ZWlnaHQ6Ym9sZDsgY29sb3I6I0ZGRkZGRjsgbGluZS1oZWlnaHQ6NDZweDsgdGV4dC1hbGlnbjpjZW50ZXI7IHRleHQtZGVjb3JhdGlvbjpub25lO30gLm9uZTEgYTpob3Zlcnt3aWR0aDo0NnB4OyBoZWlnaHQ6NDZweDsgZmxvYXQ6bGVmdDsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy8xX2hvdmVyLnBuZykgbGVmdCB0b3Agbm8tcmVwZWF0OyBmb250LXNpemU6Mi4yNXJlbSA7IGNvbG9yOiMwNTE0MWY7IGxpbmUtaGVpZ2h0OjQ2cHg7IGZvbnQtd2VpZ2h0OmJvbGQ7IHRleHQtYWxpZ246Y2VudGVyOyB0ZXh0LWRlY29yYXRpb246bm9uZTt9IC5vbmUxIGEuYWN0aXZle3dpZHRoOjQ2cHg7IGhlaWdodDo0NnB4OyBmbG9hdDpsZWZ0OyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzLzFfaG92ZXIucG5nKSBsZWZ0IHRvcCBuby1yZXBlYXQ7IGZvbnQtc2l6ZToyLjI1cmVtIDsgY29sb3I6IzA1MTQxZjsgbGluZS1oZWlnaHQ6NDZweDsgZm9udC13ZWlnaHQ6Ym9sZDsgdGV4dC1hbGlnbjpjZW50ZXI7IHRleHQtZGVjb3JhdGlvbjpub25lO30gLnNlbGVjdGlvbm5lent3aWR0aDphdXRvOyBoZWlnaHQ6YXV0byA7IGZsb2F0OmxlZnQ7IHBhZGRpbmctcmlnaHQ6NXB4OyBwYWRkaW5nLWxlZnQ6M3B4OyBwYWRkaW5nLXRvcDo0cHg7IGZvbnQtc2l6ZTowLjgxM3JlbSA7IGNvbG9yOiMxYTFhMWE7IGxpbmUtaGVpZ2h0OjIycHg7IGZvbnQtd2VpZ2h0OmJvbGQ7IHRleHQtYWxpZ246bGVmdDsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7fSAuZm9ybXNfYm94MjJ7Ym94LXNpemluZzpib3JkZXItYm94OyB3aWR0aDoxMDAlOyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgbWFyZ2luOjAgMCAxMHB4IDA7IH0gLndpdGhfYm9yZGVyIHsgYm9yZGVyOjFweCBzb2xpZCAjZDRkNGQ0OyAtbW96LWJvcmRlci1yYWRpdXM6OHB4OyAtd2Via2l0LWJvcmRlci1yYWRpdXM6OHB4OyAta2h0bWwtYm9yZGVyLXJhZGl1czo4cHg7IHBhZGRpbmc6MCAxNnB4OyB9IC5QcmVub217d2lkdGg6Mjc5cHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojMjQyNDI0IDsgcGFkZGluZzo4cHggMCAxMHB4IDA7fSAuUHJlbm9tIHNwYW57IGZvbnQtc2l6ZToxLjM3NXJlbSA7IGNvbG9yOiNmZjAxMDE7fSAuUHJlbm9tMnt3aWR0aDozMjFweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiMyNDI0MjQgOyBwYWRkaW5nOjhweCAwIDEwcHggMDt9IC5QcmVub20yIHNwYW57IGZvbnQtc2l6ZToxLjM3NXJlbSA7IGNvbG9yOiNmZjAxMDE7fSAuUHJlbm9tM3t3aWR0aDoyNzlweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiMyNDI0MjQgOyBwYWRkaW5nOjBweCAwIDEwcHggMDt9IC5QcmVub200e3dpZHRoOjMyMXB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzI0MjQyNCA7IHBhZGRpbmc6MHB4IDAgMTBweCAwO30gLlByZW5vbTV7d2lkdGg6Mjc5cHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojMjQyNDI0IDsgcGFkZGluZzpweCAwIDEwcHggMDt9IC5QcmVub202e3dpZHRoOjIxNHB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzI0MjQyNCA7IHBhZGRpbmc6MHB4IDAgMTBweCAwO30gLlByZW5vbTd7d2lkdGg6MTA3cHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojMjQyNDI0IDsgcGFkZGluZzowcHggMCAxMHB4IDA7fSAuUHJlbm9tOHt3aWR0aDoyNzlweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IHBhZGRpbmc6cHggMCAxMHB4IDA7IGRpc3BsYXk6YmxvY2t9IC5QcmVub205e3dpZHRoOjIxNHB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgcGFkZGluZzowcHggMCAxMHB4IDA7ZGlzcGxheTpibG9ja30gLlByZW5vbTEwe3dpZHRoOjEwN3B4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgcGFkZGluZzowcHggMCAxMHB4IDA7ZGlzcGxheTpibG9ja30gLnRleHQxNXt3aWR0aDoyODVweDsgZm9udC1zaXplOjAuODEzcmVtIDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IGNvbG9yOiMyNDI0MjQgOyBwYWRkaW5nOjBweCAwIDNweCAwO30gLnRleHQxNnt3aWR0aDoxNzJweDsgZm9udC1zaXplOjAuODEzcmVtIDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IGNvbG9yOiMyNDI0MjQgOyBwYWRkaW5nOjBweCAwIDNweCAwO30gLnRleHQxN3t3aWR0aDoxMTJweDsgZm9udC1zaXplOjAuODEzcmVtIDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IGNvbG9yOiMyNDI0MjQgOyBwYWRkaW5nOjBweCAwIDNweCAwO30gLnRleHQxOHt3aWR0aDoyODVweDsgZm9udC1zaXplOjAuODEzcmVtIDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IGNvbG9yOiMyNDI0MjQgOyBwYWRkaW5nOjhweCAwIDNweCAwO30gLnRleHQxNSBzcGFueyBmb250LXNpemU6MS4zNzVyZW0gOyBjb2xvcjojZmYwMTAxO30gLmJ1dHRvbjV7d2lkdGg6Mjg1cHg7IG1hcmdpbi1ib3R0b206MzBweDsgbWFyZ2luLXRvcDo3MHB4OyBmbG9hdDpsZWZ0OyBtYXJnaW4tcmlnaHQ6NXB4OyB0ZXh0LWFsaWduOnJpZ2h0OyB9IC5ib3hfZGF0ZXt3aWR0aDoxNjdweDsgbWFyZ2luLWJvdHRvbToxMHB4OyBmbG9hdDpsZWZ0OyBwYWRkaW5nLXRvcDoxcHg7IG1hcmdpbi1yaWdodDo1cHg7fSAuYm94X2RhdGUye3dpZHRoOjEwN3B4OyBtYXJnaW4tYm90dG9tOjEwcHg7IGZsb2F0OmxlZnQ7IG1hcmdpbi1yaWdodDo1cHg7IHBhZGRpbmctdG9wOjBweDt9IC5ib3hfZGF0ZTN7d2lkdGg6ODBweDsgbWFyZ2luLWJvdHRvbToxMHB4OyBmbG9hdDpsZWZ0OyBtYXJnaW4tcmlnaHQ6NXB4O30gc3Bhbi5hc3RreyBjb2xvcjojRkYwMTAxO2ZvbnQtc2l6ZTowLjY4OHJlbSA7ZmxvYXQ6bGVmdDtwYWRkaW5nLXJpZ2h0OjNweDsgfSAuYm94NjF7d2lkdGg6MjgwcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBtYXJnaW4tdG9wOjEwcHg7IGRpc3BsYXk6YmxvY2s7IGNsZWFyOmJvdGg7IH0gLmJveDYxNjZ7d2lkdGg6MjgwcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBtYXJnaW4tdG9wOjEwcHg7IH0gLlBvbGl0aXF1ZXt3aWR0aDphdXRvOyBtYXJnaW4tYm90dG9tOjEwcHg7IGZsb2F0OmxlZnQ7IG1hcmdpbi1yaWdodDo1cHg7IHBhZGRpbmc6MCAycHggMHB4IDJweDsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzBkNTlhZjsgbGluZS1oZWlnaHQ6MjJweDsgfSAuUG9saXRpcXVlIGF7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiMwZDU5YWY7IGxpbmUtaGVpZ2h0OjI0cHg7IHRleHQtZGVjb3JhdGlvbjpub25lOyBib3JkZXItYm90dG9tOjJweCBzb2xpZCAjNmI5MWJkOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9saW5lMy5wbmcpIGJvdHRvbSBsZWZ0IHJlcGVhdC14OyBiYWNrZ3JvdW5kLXBvc2l0aW9uOmJvdHRvbTt9IC5Qb2xpdGlxdWUgYTpob3ZlcnsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzI0MjQyNDsgbGluZS1oZWlnaHQ6MjRweDsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9saW5lNC5wbmcpIGJvdHRvbSBsZWZ0IHJlcGVhdC14OyBiYWNrZ3JvdW5kLXBvc2l0aW9uOmJvdHRvbTsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IGJvcmRlci1ib3R0b206MnB4IHNvbGlkICMyNDI0MjQ7fSAudGV4dDE1NXt3aWR0aDoyODVweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IGZvbnQtc2l6ZTowLjgxM3JlbSA7IGNvbG9yOiMyNDI0MjQgOyBwYWRkaW5nOjBweCAwIDNweCAwO30gLnRleHQxNTVjaGt7aGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IGZvbnQtc2l6ZTowLjgxM3JlbSA7IGNvbG9yOiMyNDI0MjQgOyBwYWRkaW5nOjBweCAxMHB4IDEwcHggMTVweDt0ZXh0LWFsaWduOmxlZnQ7fSAuVmV1aWxsZXp7d2lkdGg6NjE3cHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBwYWRkaW5nOjE3cHggMDsgZm9udC1zaXplOjEuMzc1cmVtIDsgY29sb3I6IzA1MTQxZjtmb250LXdlaWdodDpub3JtYWx9IC5WZXVpbGxleiBzcGFue3RleHQtYWxpZ246bGVmdDsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzI0MjQyNDsgbGluZS1oZWlnaHQ6MjJweDt9IC5WZXVpbGxleiBzcGFuIGF7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiMyNDI0MjQ7IGZsb2F0OnJpZ2h0OyBsaW5lLWhlaWdodDoyMnB4OyB0ZXh0LWRlY29yYXRpb246bm9uZTsgYm9yZGVyLWJvdHRvbToycHggc29saWQgIzI0MjQyNDsgZGlzcGxheTpibG9ja30gLlZldWlsbGV6IHNwYW4gYTpob3ZlcnsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzAwNDQ2ZjsgZmxvYXQ6cmlnaHQ7IGxpbmUtaGVpZ2h0OjIycHg7IHRleHQtZGVjb3JhdGlvbjpub25lOyBib3JkZXItYm90dG9tOjJweCBzb2xpZCAjMDA0NDZmOyBkaXNwbGF5OmJsb2NrO30gLkh5cG90aGVxdWV7d2lkdGg6MTk1cHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBmb250LXNpemU6MC44MTNyZW0gOyBjb2xvcjojMjQyNDI0IDsgcGFkZGluZzowOyBsaW5lLWhlaWdodDo1MHB4O30gLkh5cG90aGVxdWUyMnt3aWR0aDoyMjRweDsgbWFyZ2luLWJvdHRvbToxMHB4OyBmbG9hdDpsZWZ0O30gLkh5cG90aGVxdWUzM3t3aWR0aDo1MHB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgZm9udC1zaXplOjAuODEzcmVtIDsgY29sb3I6IzI0MjQyNCA7IHBhZGRpbmc6MHB4IDAgMTBweCAwOyBsaW5lLWhlaWdodDozNXB4O30gLmNpdmlxdWV7d2lkdGg6MTMwcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBmb250LXNpemU6MC44MTNyZW0gOyBjb2xvcjojMjQyNDI0IDsgcGFkZGluZzowcHggMCAzcHggMDt9IC5SdWV7d2lkdGg6MjkwcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBmb250LXNpemU6MC44MTNyZW0gOyBjb2xvcjojMjQyNDI0IDsgcGFkZGluZzowcHggMCAzcHggMDt9IC5BcHB7d2lkdGg6MTgwcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBmb250LXNpemU6MC44MTNyZW0gOyBjb2xvcjojMjQyNDI0IDsgcGFkZGluZzowcHggMCAzcHggMDt9IC5mb3JtczEwMHt3aWR0aDoxMzBweDsgbWFyZ2luLWJvdHRvbToxMHB4OyBmbG9hdDpsZWZ0O30gLmZvcm1zMTAxe3dpZHRoOjI5MHB4OyBtYXJnaW4tYm90dG9tOjEwcHg7IGZsb2F0OmxlZnQ7fSAuZm9ybXMxMDJ7d2lkdGg6MTgwcHg7IG1hcmdpbi1ib3R0b206MTBweDsgZmxvYXQ6bGVmdDt9IC5WaWxsZXsgd2lkdGg6MjcwcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBmb250LXNpemU6MC44MTNyZW0gOyBjb2xvcjojMjQyNDI0IDsgcGFkZGluZzowcHggMCAxM3B4IDA7fSAuUHJvdmluY2V7IHdpZHRoOjE1MHB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgZm9udC1zaXplOjAuODEzcmVtIDsgY29sb3I6IzI0MjQyNCA7IHBhZGRpbmc6MHB4IDAgMTNweCAwO30gLkNvZGV7IHdpZHRoOjE2MHB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgZm9udC1zaXplOjAuODEzcmVtIDsgY29sb3I6IzI0MjQyNCA7IHBhZGRpbmc6MHB4IDAgMTNweCAwO30gLmZvcm1zMTAzeyB3aWR0aDoxMDAlOyBtYXJnaW4tdG9wOjBweDsgfSAuZm9ybXMxMDR7IHdpZHRoOjEwMCU7IG1hcmdpbi10b3A6MHB4OyB9IC5mb3JtczEwNXsgd2lkdGg6MTAwJTsgbWFyZ2luLXRvcDowcHg7IH0gLmZvcm1zMTA2eyB3aWR0aDoxMDAlOyBtYXJnaW4tYm90dG9tOjEwcHg7IGZsb2F0OmxlZnR9IC5UeXBle3dpZHRoOjIwMHB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgZm9udC1zaXplOjAuODEzcmVtIDsgY29sb3I6IzI0MjQyNCA7IHBhZGRpbmc6MHB4IDAgM3B4IDA7fSAuYm94NjAwe3dpZHRoOjYwMHB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgcGFkZGluZy1sZWZ0OjBweDsgcGFkZGluZy1ib3R0b206MjBweDsgbWFyZ2luLXJpZ2h0OjBweDt9IC5EZW1hbmRlNTV7bWFyZ2luOjE1cHggMDsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9kLnBuZykgMTBweCB0b3Agbm8tcmVwZWF0OyBwYWRkaW5nOjAgMCAwIDYycHg7IGxpbmUtaGVpZ2h0OjQwcHg7IGZvbnQtc2l6ZToxLjEyNXJlbSA7IGNvbG9yOiMxOTE5MTk7IGZvbnQtd2VpZ2h0OmJvbGQ7fSAuRGVtYW5kZTY2e21hcmdpbjoxNXB4IDA7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvY2FsMi5wbmcpIDEwcHggdG9wIG5vLXJlcGVhdDsgcGFkZGluZzowIDAgMCA2MnB4OyBsaW5lLWhlaWdodDoyMHB4OyBmb250LXNpemU6MS4xMjVyZW0gOyBjb2xvcjojMTkxOTE5OyBmb250LXdlaWdodDpib2xkO30gLkRlbWFuZGU3N3ttYXJnaW46MTVweCAwOyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL20ucG5nKSAxMHB4IHRvcCBuby1yZXBlYXQ7IHBhZGRpbmc6MCAwIDAgNjJweDsgbGluZS1oZWlnaHQ6NDBweDsgZm9udC1zaXplOjEuMTI1cmVtIDsgY29sb3I6IzE5MTkxOTsgZm9udC13ZWlnaHQ6Ym9sZDt9IC5EZW1hbmRlODh7bWFyZ2luOjE1cHggMDsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9mLnBuZykgMTBweCB0b3Agbm8tcmVwZWF0OyBwYWRkaW5nOjAgMCAwIDYycHg7IGxpbmUtaGVpZ2h0OjIwcHg7IGZvbnQtc2l6ZToxLjEyNXJlbSA7IGNvbG9yOiMxOTE5MTk7IGZvbnQtd2VpZ2h0OmJvbGQ7fSAuRGVtYW5kZTg4N3ttYXJnaW46MTVweCAwOyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL2YucG5nKSAxMHB4IHRvcCBuby1yZXBlYXQ7IHBhZGRpbmc6MCAwIDAgNjJweDsgbGluZS1oZWlnaHQ6MjBweDsgZm9udC1zaXplOjEuMTI1cmVtIDsgY29sb3I6IzE5MTkxOTsgZm9udC13ZWlnaHQ6Ym9sZDt9IC5ib3gyX3RleHQye3dpZHRoOjY0OHB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgcGFkZGluZzoxMHB4IDBweCAxNXB4IDIzcHg7IGxpbmUtaGVpZ2h0OjE4cHg7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiMyNDI0MjQ7fSAuYm94X2JyYW5ke3dpZHRoOjY0OHB4OyBmbG9hdDpsZWZ0O3BhZGRpbmc6MjBweCAwcHggMTVweCAwcHg7IGxpbmUtaGVpZ2h0OjE4cHg7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiMyNDI0MjQ7IH0gLmJveDJfdGV4dDN7d2lkdGg6NjYxcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBwYWRkaW5nOjAgMHB4IDEwcHggMTBweDsgbWFyZ2luLXRvcDoxNXB4OyBsaW5lLWhlaWdodDoxOHB4OyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojMjQyNDI0OyB9IC5jYXJfYm94e3dpZHRoOjIwOHB4OyBoZWlnaHQ6MTMwcHg7IGZsb2F0OmxlZnQ7IG1hcmdpbjowIDhweCAwIDA7IHBhZGRpbmc6MDsgYm9yZGVyOjA7fSAuY2FyX2ltYWdlc3t3aWR0aDoyMDhweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IG1hcmdpbjowOyBwYWRkaW5nOjA7IGJvcmRlcjowOyB0ZXh0LWFsaWduOmNlbnRlcjt9IC5jYXJfdGV4dHt3aWR0aDoyMDhweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IGxpbmUtaGVpZ2h0OjEwcHg7IGZvbnQtc2l6ZTowLjgxM3JlbSA7IGZvbnQtd2VpZ2h0OmJvbGQ7IGNvbG9yOiMwNTE0MWY7IHRleHQtYWxpZ246Y2VudGVyfSAuY2FyX3RleHQgYSB7dGV4dC1kZWNvcmF0aW9uOm5vbmU7IGNvbG9yOiMwNTE0MWY7IGxpbmUtaGVpZ2h0OjEuMTt9IC5jYXJfdGV4dCBhOmhvdmVyIHsgdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTsgY29sb3I6IzA1MTQxZn0gLmNhcl9ib3gyeyBoZWlnaHQ6YXV0bzsgbWFyZ2luOjAgMTBweCAxMHB4IDA7IG92ZXJmbG93OmhpZGRlbjsgYm9yZGVyLXJhZGl1czo1cHg7IC1tb3otYm9yZGVyLXJhZGl1czo1cHg7IC13ZWJraXQtYm9yZGVyLXJhZGl1czo1cHg7IGJhY2tncm91bmQtY29sb3I6I0ZGRjsgLW1vei1ib3gtc2hhZG93OjAgMCAxMHB4IDFweCByZ2JhKDAsMCwwLDAuMik7IC13ZWJraXQtYm94LXNoYWRvdzowIDAgMTBweCAxcHggcmdiYSgwLDAsMCwwLjIpOyBib3gtc2hhZG93OjAgMCAxMHB4IDFweCByZ2JhKDAsMCwwLDAuMik7IH0gLmNhcl9ib3gyX3RheHR7aGVpZ2h0OmF1dG87IHBhZGRpbmctYm90dG9tOjVweDsgZm9udC1zaXplOjFyZW0gOyBjb2xvcjojMzAzMDMwOyB0ZXh0LWFsaWduOmxlZnQ7IGxpbmUtaGVpZ2h0OjIxcHg7fSAucGljX2JveDJ7IGJvcmRlcjoxcHggc29saWQgI0FBQTsgYmFja2dyb3VuZDojRkZGRkZGOyBib3JkZXItcmFkaXVzOjNweDsgLW1vei1ib3JkZXItcmFkaXVzOjNweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjNweDsgfSAucGljX2JveDIgaW1nIHt3aWR0aDoxMDAlO30gLnByaW50e3dpZHRoOjE5MnB4OyBoZWlnaHQ6YXV0bzsgbWFyZ2luOjA7IHBhZGRpbmctdG9wOjdweDt9IC5wcmludCBheyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL3ByaW50LnBuZykgMTBweCB0b3Agbm8tcmVwZWF0OyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojMzAzMDMwOyBwYWRkaW5nLWxlZnQ6MzVweDsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7fSAucHJpbnQgYTpob3ZlcnsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9wcmludF9ob3Zlci5wbmcpIDEwcHggdG9wIG5vLXJlcGVhdDsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzAwNGE3ODsgcGFkZGluZy1sZWZ0OjM1cHg7IHRleHQtZGVjb3JhdGlvbjpub25lOyB9IC5wYWdlX25hbWVfY29ue3dpZHRoOjg0MHB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgcGFkZGluZzoyMHB4IDIxcHggMTBweCAyMHB4OyB9IC5ob21lMnt3aWR0aDoyMzBweDsgaGVpZ2h0OmF1dG87IG1hcmdpbi1sZWZ0OjIwcHg7IGZsb2F0OmxlZnQ7IGZvbnQtc2l6ZToxcmVtIDsgY29sb3I6IzM3MzczNzsgbGluZS1oZWlnaHQ6MjRweDsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IH0gLmhvbWUze3dpZHRoOjUxMHB4OyBoZWlnaHQ6YXV0bzsgbWFyZ2luLWxlZnQ6MTBweDsgZmxvYXQ6bGVmdDsgZm9udC1zaXplOjFyZW0gOyBjb2xvcjojMzczNzM3OyBsaW5lLWhlaWdodDoyNHB4OyB0ZXh0LWRlY29yYXRpb246bm9uZTsgfSAudGV4dDIwe3dpZHRoOjMxMHB4OyBoZWlnaHQ6MzJweDsgZmxvYXQ6bGVmdDsgbWFyZ2luLXJpZ2h0OjEwcHg7IG1hcmdpbi1ib3R0b206MTBweDsgbGluZS1oZWlnaHQ6MzJweDsgdGV4dC1hbGlnbjpsZWZ0OyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojMGQwZDBkOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgfSAudGV4dDIwIHNwYW57IGNvbG9yOiNGRjAwMDA7fSAuaW5wdXQyNXt3aWR0aDozMTBweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IG1hcmdpbi1ib3R0b206MTBweDsgfSAudmV1eHt3aWR0aDo2MDBweDsgZmxvYXQ6bGVmdDsgbWFyZ2luLWJvdHRvbToxMHB4OyBwYWRkaW5nLXRvcDo1cHg7IGxpbmUtaGVpZ2h0OjE3cHg7IHRleHQtYWxpZ246bGVmdDsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzBkMGQwZDsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IG1hcmdpbi1ib3R0b206MTBweDt9IC5Ob3N7d2lkdGg6MjY1cHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBiYWNrZ3JvdW5kOiMwMDAwMDA7IC1tb3otYm9yZGVyLXJhZGl1czo1cHg7IC13ZWJraXQtYm9yZGVyLXJhZGl1czo1cHg7IGJvcmRlci1yYWRpdXM6NXB4OyAta2h0bWwtYm9yZGVyLXJhZGl1czo1cHg7IHBhZGRpbmc6MTVweCAwIDE1cHggMTVweDsgbWFyZ2luOjVweCAwOyBmb250LXNpemU6MS41cmVtIDsgY29sb3I6I0ZGRkZGRjt9IC5idXR0b25fam9ib2ZmZXIgeyBkaXNwbGF5OmJsb2NrOyBsaW5lLWhlaWdodDo1MHB4OyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9pY29uX2VtcGxveS5wbmcnKSBuby1yZXBlYXQgc2Nyb2xsIDBweCAwcHggcmdiKDIzMSwgMjMyLCAyMzIpOyB0ZXh0LWFsaWduOmNlbnRlcjsgZm9udC13ZWlnaHQ6Ym9sZDsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IHBhZGRpbmctbGVmdDo0MHB4OyBib3JkZXItcmFkaXVzOjNweDsgfSAuYnV0dG9uXzEsIC5idXR0b25fMiwgLmJ1dHRvbl8zIHsgbWFyZ2luLWJvdHRvbToxMHB4OyB9IC5idXR0b25fMSBhLCAuYnV0dG9uXzIgYSwgLmJ1dHRvbl8zIGEgeyBkaXNwbGF5OmJsb2NrOyB3aWR0aDoyNDlweDsgaGVpZ2h0OjM4cHg7IGJvcmRlci1yYWRpdXM6M3B4OyBmb250LXNpemU6MS4xMjVyZW0gOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgdGV4dC1hbGlnbjpjZW50ZXI7IGxpbmUtaGVpZ2h0OjM4cHg7IH0gLmJ1dHRvbl8xIGEsIC5idXR0b25fMiBhIHsgYmFja2dyb3VuZDojZmZmZmZmOyBjb2xvcjojMDUxNDFmOyBib3JkZXI6MXB4IHNvbGlkICMwNTE0MWY7IH0gLmJ1dHRvbl8xIGE6aG92ZXIsIC5idXR0b25fMiBhOmhvdmVyeyBiYWNrZ3JvdW5kOiNmZmZmZmY7IGNvbG9yOiMwNTE0MWY7IGJvcmRlcjoxcHggc29saWQgIzA1MTQxZjsgfSAuYnV0dG9uXzMgYXsgYmFja2dyb3VuZDojMDAwOyBjb2xvcjojRkZGOyBib3JkZXI6MXB4IHNvbGlkICMwMDA7IH0gLmJ1dHRvbl8zIGE6aG92ZXJ7IGJhY2tncm91bmQ6I0ZGRjsgY29sb3I6IzAwMDsgfSAuZmJDb25uZWN0QnRuIHsgcG9zaXRpb246cmVsYXRpdmU7IGJhY2tncm91bmQtY29sb3I6IzMwNTg5ODsgY29sb3I6I2ZmZjsgYm9yZGVyLXJhZGl1czozcHg7IGxpbmUtaGVpZ2h0OjM4cHg7IG1hcmdpbi1ib3R0b206MTBweDsgZm9udC1zaXplOjAuODc1cmVtIDsgdGV4dC1hbGlnbjpjZW50ZXI7IH0gI2NoYXQtd2lkZ2V0LWNvbnRhaW5lciwgI2xpdmVfY2hhdF9zdGF0dXMsICNDaGF0RGl2LCAjcG9kaXVtLWJ1YmJsZSwgI2pjb250LCBqZGl2LCAjdHN3X3dyYXBwZXIsIC5mYl9kaWFsb2csIC5mYl9pZnJhbWVfd2lkZ2V0LCAuZmItY3VzdG9tZXJjaGF0LCAuZWstY2hhdCwgLm1hdGFkb3ItbGl2ZWNoYXQtMTIzNzg5LW1haW4td3JhcHBlciwgI21hdGFkb3ItY29ubmVjdC10ZXh0LWxhYmVsLCAjbWF0YWRvci1jb25uZWN0LXRleHQtbGFiZWwtYmFkZ2V7IHotaW5kZXg6MTAwMDAgIWltcG9ydGFudDsgfSBzdmcuY2hhdC1idWJibGV7IHdpZHRoOnJldmVydDsgaGVpZ2h0OnJldmVydDsgfSAuZmJDb25uZWN0QnRuIC5mYS1mYWNlYm9va3sgY29sb3I6IzMwNTg5ODsgfSBhLmZhY2Vib29rQ29ubmVjdEJ0biB7IGNvbG9yOiNmZmY7IGRpc3BsYXk6aW5saW5lLWJsb2NrOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgZm9udC1mYW1pbHk6aW5oZXJpdDsgfSAuYnV0dG9uX3ZpZGVvc19mciBhLCAuYnV0dG9uX3ZpZGVvc19lbiBheyB3aWR0aDoyNDlweDsgaGVpZ2h0OjM4cHg7IGRpc3BsYXk6YmxvY2s7IH0gLmJ1dHRvbl92aWRlb3NfZnIgYXtiYWNrZ3JvdW5kOnVybCgiL2ltYWdlcy92aWRlb3MtYnV0dG9uX2ZyLnBuZyIpIG5vLXJlcGVhdCAwcHggMHB4IHRyYW5zcGFyZW50O30gLmJ1dHRvbl92aWRlb3NfZnIgYTpob3ZlcntiYWNrZ3JvdW5kOnVybCgiL2ltYWdlcy92aWRlb3MtYnV0dG9uLWhvdmVyX2ZyLnBuZyIpIG5vLXJlcGVhdCAwcHggMHB4IHRyYW5zcGFyZW50O30gLmJ1dHRvbl92aWRlb3NfZW4gYXtiYWNrZ3JvdW5kOnVybCgiL2ltYWdlcy92aWRlb3MtYnV0dG9uX2VuLnBuZyIpIG5vLXJlcGVhdCAwcHggMHB4IHRyYW5zcGFyZW50O30gLmJ1dHRvbl92aWRlb3NfZW4gYTpob3ZlcntiYWNrZ3JvdW5kOnVybCgiL2ltYWdlcy92aWRlb3MtYnV0dG9uLWhvdmVyX2VuLnBuZyIpIG5vLXJlcGVhdCAwcHggMHB4IHRyYW5zcGFyZW50O30gLmJ1dHRvbl92aWRlb19mciBhLCAuYnV0dG9uX3ZpZGVvX2VuIGF7IHdpZHRoOjE5M3B4OyBoZWlnaHQ6NTFweDsgZGlzcGxheTpibG9jazsgfSAuYnV0dG9uX3ZpZGVvX2ZyIGF7YmFja2dyb3VuZDp1cmwoIi9pbWFnZXMvdmlkZW8tYnV0dG9uX2ZyLnBuZyIpIG5vLXJlcGVhdCAwcHggMHB4IHRyYW5zcGFyZW50O30gLmJ1dHRvbl92aWRlb19mciBhOmhvdmVye2JhY2tncm91bmQ6dXJsKCIvaW1hZ2VzL3ZpZGVvLWJ1dHRvbi1ob3Zlcl9mci5wbmciKSBuby1yZXBlYXQgMHB4IDBweCB0cmFuc3BhcmVudDt9IC5idXR0b25fdmlkZW9fZW4gYXtiYWNrZ3JvdW5kOnVybCgiL2ltYWdlcy92aWRlby1idXR0b25fZW4ucG5nIikgbm8tcmVwZWF0IDBweCAwcHggdHJhbnNwYXJlbnQ7fSAuYnV0dG9uX3ZpZGVvX2VuIGE6aG92ZXJ7YmFja2dyb3VuZDp1cmwoIi9pbWFnZXMvdmlkZW8tYnV0dG9uLWhvdmVyX2VuLnBuZyIpIG5vLXJlcGVhdCAwcHggMHB4IHRyYW5zcGFyZW50O30gLmJ1dHRvbl91bmRlcnt3aWR0aDoyNDlweDsgcGFkZGluZzowcHg7IG1hcmdpbjoxMHB4IDBweDt9IC5idXR0b25fdW5kZXIgYXsgd2lkdGg6MTAwJTttaW4taGVpZ2h0OjM4cHg7IGJvcmRlci1yYWRpdXM6M3B4OyBmb250LXNpemU6MS4xMjVyZW0gOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgdGV4dC1hbGlnbjpjZW50ZXI7IGxpbmUtaGVpZ2h0OjM4cHg7IHRleHQtc2hhZG93Om5vbmU7IGRpc3BsYXk6YmxvY2sgfSAuYnV0dG9uX3VuZGVyIGE6aG92ZXJ7IGJvcmRlci1yYWRpdXM6M3B4OyBmb250LXNpemU6MS4xMjVyZW0gOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgdGV4dC1hbGlnbjpjZW50ZXI7IGxpbmUtaGVpZ2h0OjM4cHg7IHRleHQtc2hhZG93OjFweCAxcHggMXB4ICMwMDFlMzE7IH0gLmJ1dHRvbl91bmRlci5wcm9tbyBhe2JhY2tncm91bmQtY29sb3I6I2U4MGQwZDsgYmFja2dyb3VuZC1pbWFnZTpub25lOyBjb2xvcjojRkZGOyB3aWR0aDoyMzdweDsgbWFyZ2luLWxlZnQ6NXB4O30gLmJ1dHRvbl91bmRlci5wcm9tbzMgYXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjAwMDA7IGJhY2tncm91bmQtaW1hZ2U6bm9uZTsgY29sb3I6I0ZGRjsgd2lkdGg6MjM3cHg7IG1hcmdpbi1sZWZ0OjVweDt9IC5idXR0b25fdW5kZXIucHJvbW8gYTpob3ZlciwuYnV0dG9uX3VuZGVyLnByb21vMiBhOmhvdmVyLC5idXR0b25fdW5kZXIucHJvbW8zIGE6aG92ZXJ7YmFja2dyb3VuZC1pbWFnZTp1cmwoL2ltYWdlcy9idXR0b25fMWhvdmVyLnBuZyl9IC5idXR0b25fNHt3aWR0aDoyNDlweDsgaGVpZ2h0OjU3cHg7IGZsb2F0OmxlZnQ7IHBhZGRpbmc6MHB4OyBtYXJnaW4tYm90dG9tOjEwcHg7fSAuYnV0dG9uXzQgYXsgd2lkdGg6MjQ5cHg7IGhlaWdodDo1MHB4OyBwYWRkaW5nLXRvcDo3cHg7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvYnV0dG9uXzQucG5nKSBsZWZ0IHRvcCByZXBlYXQteDsgYm9yZGVyLXJhZGl1czozcHg7Zm9udC1zaXplOjEuMTI1cmVtIDsgY29sb3I6I0ZGRkZGRjsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IHRleHQtYWxpZ246Y2VudGVyOyBsaW5lLWhlaWdodDoyMnB4OyB0ZXh0LXNoYWRvdzoxcHggMXB4IDFweCAjMDAxZTMxOyBkaXNwbGF5OmJsb2NrIH0gLmJ1dHRvbl80IGE6aG92ZXJ7d2lkdGg6MjQ5cHg7IGhlaWdodDo1MHB4OyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL2J1dHRvbl80aG92ZXIucG5nKSBsZWZ0IHRvcCByZXBlYXQteDsgYm9yZGVyLXJhZGl1czozcHg7IGZvbnQtc2l6ZToxLjEyNXJlbSA7IGNvbG9yOiNGRkZGRkY7IHRleHQtZGVjb3JhdGlvbjpub25lOyB0ZXh0LWFsaWduOmNlbnRlcjsgbGluZS1oZWlnaHQ6MjJweDsgdGV4dC1zaGFkb3c6MXB4IDFweCAxcHggIzAwMWUzMTsgfSAuY2hlY2tib3gxNTJ7d2lkdGg6YXV0bzsgaGVpZ2h0OjE4cHg7IGZsb2F0OmxlZnQ7IG1hcmdpbjowOyBwYWRkaW5nOjAgNnB4IDAgMDsgbWFyZ2luLXRvcDowOyBib3JkZXI6MDsgdG9wOjA7IH0gLkJhc2UyMnt3aWR0aDphdXRvOyBoZWlnaHQ6MThweDsgZmxvYXQ6bGVmdDsgbWFyZ2luLXJpZ2h0OjZweDsgcGFkZGluZzo2cHggNnB4IDAgMDsgbWFyZ2luLXRvcDowOyBib3JkZXI6MDsgdG9wOjA7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiMwNTE0MWY7IHRleHQtZGVjb3JhdGlvbjpub25lO30gLmJveDk0MF9saW5le3dpZHRoOjk0MHB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9saW5lMjUucG5nKSBsZWZ0IGJvdHRvbSByZXBlYXQteDsgYmFja2dyb3VuZC1wb3NpdGlvbjpib3R0b207IGJvdHRvbTowO30gLndoaXRlX2JveHt3aWR0aDo5NDBweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IGJhY2tncm91bmQ6I0ZGRkZGRjsgb3ZlcmZsb3c6aGlkZGVuOyAtbW96LWJvcmRlci1yYWRpdXMtdG9wbGVmdDo2cHg7IC1tb3otYm9yZGVyLXJhZGl1cy10b3ByaWdodDo2cHg7IC1tb3otYm9yZGVyLXJhZGl1cy1ib3R0b21yaWdodDowcHg7IC1tb3otYm9yZGVyLXJhZGl1cy1ib3R0b21sZWZ0OjA7IC13ZWJraXQtYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czo2cHg7IC13ZWJraXQtYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6NnB4OyAtd2Via2l0LWJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjBweDsgLXdlYmtpdC1ib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjA7IGJvcmRlci10b3AtbGVmdC1yYWRpdXM6NnB4OyBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czo2cHg7IGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6MDsgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6MDt9IC5ib3gxMDB7d2lkdGg6MjIwcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojMGYxYTFlOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgdGV4dC1hbGlnbjpsZWZ0OyBwYWRkaW5nOjEzcHggMCAxNXB4IDEwcHg7fSAuYm94MTAxe3dpZHRoOjE3N3B4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzBmMWExZTsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IHRleHQtYWxpZ246Y2VudGVyOyBwYWRkaW5nOjEzcHggMCAxNXB4O2JhY2tncm91bmQ6dXJsKCIvaW1hZ2VzL2xpbmUyNS5wbmciKSByZXBlYXQteCBzY3JvbGwgY2VudGVyIGJvdHRvbSAjRDlEOUQ5O30gLmJveDEwMnt3aWR0aDoxNzdweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiMwZjFhMWU7IHRleHQtZGVjb3JhdGlvbjpub25lOyB0ZXh0LWFsaWduOmNlbnRlcjsgcGFkZGluZzoxM3B4IDAgMTVweDt9IC5ib3gxMDN7d2lkdGg6MTc3cHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojMGYxYTFlOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgdGV4dC1hbGlnbjpjZW50ZXI7IHBhZGRpbmc6MTNweCAwIDE1cHg7YmFja2dyb3VuZDp1cmwoIi9pbWFnZXMvbGluZTI1LnBuZyIpIHJlcGVhdC14IHNjcm9sbCBjZW50ZXIgYm90dG9tICNEOUQ5RDk7fSAuYm94MTA0e3dpZHRoOjE3OHB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzBmMWExZTsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IHRleHQtYWxpZ246Y2VudGVyOyBwYWRkaW5nOjEzcHggMCAxNXB4O30gLmJveEV2ZW57d2lkdGg6MTc3cHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojMGYxYTFlOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgdGV4dC1hbGlnbjpjZW50ZXI7IHBhZGRpbmc6MTNweCAwcHggMHB4IDBweDt9IC5ib3hPZGR7d2lkdGg6MTc3cHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojMGYxYTFlOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgdGV4dC1hbGlnbjpjZW50ZXI7IHBhZGRpbmc6MTNweCAwcHggMHB4IDBweDtiYWNrZ3JvdW5kOnVybCgiL2ltYWdlcy9saW5lMjUucG5nIikgcmVwZWF0LXggc2Nyb2xsIGNlbnRlciBib3R0b20gI0Q5RDlEOTt9IC5maWxlaW5wdXQtYnV0dG9uLCAuZmlsZWlucHV0LWJ1dHRvbjpob3ZlciB7IGZvbnQtc2l6ZTowLjg3NXJlbSAhaW1wb3J0YW50OyBsaW5lLWhlaWdodDozMXB4OyBwb3NpdGlvbjpyZWxhdGl2ZTsgfSAuZmlsZWlucHV0LWJ1dHRvbiBpbnB1dCB7IHBvc2l0aW9uOmFic29sdXRlOyB0b3A6MDsgcmlnaHQ6MDsgbWFyZ2luOjA7IG9wYWNpdHk6MDsgLW1zLWZpbHRlcjonYWxwaGEob3BhY2l0eT0wKSc7IGN1cnNvcjpwb2ludGVyOyB3aWR0aDoxMDAlOyBoZWlnaHQ6MTAwJTsgfSAuYm94OTQwX21haW57d2lkdGg6OTQwcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBwYWRkaW5nOjBweCAwIDE1cHggMHB4OyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL2JveDIwMF9iZy5wbmcpIGxlZnQgdG9wIHJlcGVhdDsgLW1vei1ib3JkZXItcmFkaXVzOjZweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjZweDsgYm9yZGVyLXJhZGl1czo2cHg7IC1raHRtbC1ib3JkZXItcmFkaXVzOjZweDt9IC53aGl0ZV9ib3hfdGV4dDJ7d2lkdGg6MjMwcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojMGYxYTFlOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgdGV4dC1hbGlnbjpjZW50ZXI7fSAud2hpdGVfYm94X3RleHQze2JhY2tncm91bmQtY29sb3I6I0Y2RjZGNjtib3JkZXItbGVmdDoxcHggc29saWQgI0M5QzlDOTtib3JkZXItcmlnaHQ6MXB4IHNvbGlkICNDOUM5Qzk7cGFkZGluZzoxMHB4IDBweDt3aWR0aDoxNzVweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiMwZjFhMWU7IHRleHQtZGVjb3JhdGlvbjpub25lOyB0ZXh0LWFsaWduOmNlbnRlcjt9IC53aGl0ZV9ib3hfdGV4dDR7cGFkZGluZzoxMHB4IDBweDt3aWR0aDoxNzdweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiMwZjFhMWU7IHRleHQtZGVjb3JhdGlvbjpub25lOyB0ZXh0LWFsaWduOmNlbnRlcjt9IC53aGl0ZV9ib3hfdGV4dDV7YmFja2dyb3VuZC1jb2xvcjojRjZGNkY2O2JvcmRlci1sZWZ0OjFweCBzb2xpZCAjQzlDOUM5O2JvcmRlci1yaWdodDoxcHggc29saWQgI0M5QzlDOTtwYWRkaW5nOjEwcHggMHB4O3dpZHRoOjE3NXB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzBmMWExZTsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IHRleHQtYWxpZ246Y2VudGVyOyB9IC53aGl0ZV9ib3hfdGV4dDZ7cGFkZGluZzoxMHB4IDBweDt3aWR0aDoxNzhweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiMwZjFhMWU7IHRleHQtZGVjb3JhdGlvbjpub25lOyB0ZXh0LWFsaWduOmNlbnRlcjt9IC53aGl0ZV9ib3hfYmxhbmt7d2lkdGg6MTc4cHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojMGYxYTFlOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgdGV4dC1hbGlnbjpjZW50ZXI7fSAud2hpdGVfYm94X3RleHRPZGR7cGFkZGluZzoxMHB4IDBweDt3aWR0aDoxNzdweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiMwZjFhMWU7IHRleHQtZGVjb3JhdGlvbjpub25lOyB0ZXh0LWFsaWduOmNlbnRlcjt9IC53aGl0ZV9ib3hfdGV4dEV2ZW57YmFja2dyb3VuZC1jb2xvcjojRjZGNkY2O2JvcmRlci1sZWZ0OjFweCBzb2xpZCAjQzlDOUM5O2JvcmRlci1yaWdodDoxcHggc29saWQgI0M5QzlDOTtwYWRkaW5nOjEwcHggMHB4O3dpZHRoOjE3NXB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzBmMWExZTsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IHRleHQtYWxpZ246Y2VudGVyO30gLmJveF90aXRsZXt3aWR0aDo5MzBweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IHBhZGRpbmc6MzBweCAwcHggNXB4IDEwcHg7IGZvbnQtc2l6ZTowLjkzOHJlbSA7IGNvbG9yOiMwZjFhMWU7IHRleHQtZGVjb3JhdGlvbjpub25lOyB0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7fSAuY3VzdG9tXzIyIHt3aWR0aDoyNDFweDsgaGVpZ2h0OjEyMXB4OyBmbG9hdDpsZWZ0OyBwYWRkaW5nOjBweDsgbWFyZ2luOjAgOHB4IDhweCAwOyBiYWNrZ3JvdW5kOiNlYmViZWI7LW1vei1ib3JkZXItcmFkaXVzOjhweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjhweDsgYm9yZGVyLXJhZGl1czo4cHg7IC1raHRtbC1ib3JkZXItcmFkaXVzOjhweDtjdXJzb3I6cG9pbnRlcjt9IC5jdXN0b21fMjIyIHt3aWR0aDoyNDFweDsgaGVpZ2h0OjEyMXB4OyBmbG9hdDpsZWZ0OyBwYWRkaW5nOjBweDsgbWFyZ2luOjAgOHB4IDhweCAwOyBiYWNrZ3JvdW5kOiNmZmZmZmY7LW1vei1ib3JkZXItcmFkaXVzOjhweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjhweDsgYm9yZGVyLXJhZGl1czo4cHg7IC1raHRtbC1ib3JkZXItcmFkaXVzOjhweDtjdXJzb3I6cG9pbnRlcjt9IC50b3lvdGFfY2Ftcnl7d2lkdGg6NDMwcHg7IGhlaWdodDoyMjJweDsgZmxvYXQ6bGVmdDsgcGFkZGluZzoyMHB4IDBweCAwcHggMTBweDsgbWFyZ2luLXJpZ2h0OjhweDsgYmFja2dyb3VuZDojZWJlYmViOy1tb3otYm9yZGVyLXJhZGl1czo4cHg7IC13ZWJraXQtYm9yZGVyLXJhZGl1czo4cHg7IGJvcmRlci1yYWRpdXM6OHB4OyAta2h0bWwtYm9yZGVyLXJhZGl1czo4cHg7fSAudG95b3RhX2NhbXJ5IGgxeyBmb250LXNpemU6MS44NzVyZW0gOyBjb2xvcjojMzAzMDMwOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgcGFkZGluZy1ib3R0b206NXB4O30gLnRveW90YV9jYW1yeSBweyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojNWE1YTVhOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgcGFkZGluZy1ib3R0b206OHB4O30gLmJveDJfZGV0YWlsc190ZXh0MjV7d2lkdGg6MTAwJTsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IG1hcmdpbjoxNXB4IGF1dG87IHRleHQtYWxpZ246Y2VudGVyOyBmb250LXNpemU6MS44NzVyZW0gOyBjb2xvcjojRkZGRkZGOyBmb250LXdlaWdodDpib2xkOyB0ZXh0LXNoYWRvdzoxcHggMXB4IDRweCAjODI4MjgyO30gLmJveDJfZGV0YWlsc190ZXh0MjUgc3BhbnsgdGV4dC1hbGlnbjpjZW50ZXI7IGZvbnQtc2l6ZToxLjEyNXJlbSA7IGNvbG9yOiNmZmY7IGZvbnQtd2VpZ2h0OmJvbGQ7fSAuYm94MTV7Y3Vyc29yOnBvaW50ZXI7d2lkdGg6YXV0bzsgaGVpZ2h0OjIwcHg7IGZsb2F0OmxlZnQ7IG1hcmdpbjowcHg7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvbWVudTEwX2JnLnBuZykgbGVmdCB0b3AgcmVwZWF0LXg7IC1tb3otYm9yZGVyLXJhZGl1czozcHg7IC13ZWJraXQtYm9yZGVyLXJhZGl1czozcHg7IGJvcmRlci1yYWRpdXM6M3B4OyAta2h0bWwtYm9yZGVyLXJhZGl1czozcHg7IHBhZGRpbmc6NHB4IDJweDsgZmxvYXQ6bGVmdDsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6I0ZGRjsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IG1hcmdpbi1yaWdodDoxcHg7IH0gLmJveDE1IGgye2N1cnNvcjpwb2ludGVyO2Zsb2F0OmxlZnQ7IHBhZGRpbmctcmlnaHQ6NXB4OyBwYWRkaW5nLXRvcDowcHg7fSAuYm94MTUgaDIgYXtjdXJzb3I6cG9pbnRlcjtmbG9hdDpsZWZ0OyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojRkZGOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9pY29uMi5wbmcpIGxlZnQgdG9wIG5vLXJlcGVhdDsgZm9udC13ZWlnaHQ6bm9ybWFsO3BhZGRpbmctbGVmdDo0MHB4OyBwYWRkaW5nLXJpZ2h0OjBweDsgbGluZS1oZWlnaHQ6MjBweDt9IC5ib3gxNSBoMiBhOmhvdmVye2N1cnNvcjpwb2ludGVyO2Zsb2F0OmxlZnQ7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiNGRkZGRkY7IHRleHQtZGVjb3JhdGlvbjpub25lOyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL2ljb24yLnBuZykgbGVmdCB0b3Agbm8tcmVwZWF0OyBmb250LXdlaWdodDpub3JtYWw7IGxpbmUtaGVpZ2h0OjIwcHg7fSAuYm94MTZ7d2lkdGg6YXV0bzsgaGVpZ2h0OjIwcHg7IGZsb2F0OmxlZnQ7IG1hcmdpbjowcHg7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvbWVudTEwX2JnLnBuZykgbGVmdCB0b3AgcmVwZWF0LXg7IC1tb3otYm9yZGVyLXJhZGl1czozcHg7IC13ZWJraXQtYm9yZGVyLXJhZGl1czozcHg7IGJvcmRlci1yYWRpdXM6M3B4OyAta2h0bWwtYm9yZGVyLXJhZGl1czozcHg7IHBhZGRpbmc6NHB4IDRweCA0cHggOHB4OyBmbG9hdDpsZWZ0OyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojRkZGOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgbWFyZ2luLXJpZ2h0OjFweDsgfSAuYm94MTYgaDJ7ZmxvYXQ6bGVmdDsgcGFkZGluZy1yaWdodDo1cHg7IHBhZGRpbmctdG9wOjBweDt9IC5ib3gxNiBoMiBhe2Zsb2F0OmxlZnQ7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiNGRkY7IHRleHQtZGVjb3JhdGlvbjpub25lOyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL2ljb24zLnBuZykgbGVmdCB0b3Agbm8tcmVwZWF0OyBmb250LXdlaWdodDpub3JtYWw7cGFkZGluZy1sZWZ0OjIwcHg7IHBhZGRpbmctcmlnaHQ6MHB4OyBsaW5lLWhlaWdodDoyMHB4O30gLmJveDE2IGgyIGE6aG92ZXJ7ZmxvYXQ6bGVmdDsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6cmdiKDUsMjAsMzEpOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9pY29uMy5wbmcpIGxlZnQgdG9wIG5vLXJlcGVhdDsgZm9udC13ZWlnaHQ6bm9ybWFsOyBsaW5lLWhlaWdodDoyMHB4O30gLmJveDE3e3dpZHRoOmF1dG87IGhlaWdodDoyMHB4OyBmbG9hdDpsZWZ0OyBtYXJnaW46MHB4OyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL21lbnUxMF9iZy5wbmcpIGxlZnQgdG9wIHJlcGVhdC14OyAtbW96LWJvcmRlci1yYWRpdXM6M3B4OyAtd2Via2l0LWJvcmRlci1yYWRpdXM6M3B4OyBib3JkZXItcmFkaXVzOjNweDsgLWtodG1sLWJvcmRlci1yYWRpdXM6M3B4OyBwYWRkaW5nOjRweCA0cHggNHB4IDhweDsgZmxvYXQ6bGVmdDsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6I0ZGRjsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IG1hcmdpbi1yaWdodDoxcHg7IH0gLmJveDE3IGgye2Zsb2F0OmxlZnQ7IHBhZGRpbmctcmlnaHQ6NXB4OyBwYWRkaW5nLXRvcDowcHg7fSAuYm94MTcgaDIgYXtmbG9hdDpsZWZ0OyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojRkZGOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9pY29uNC5wbmcpIGxlZnQgdG9wIG5vLXJlcGVhdDsgZm9udC13ZWlnaHQ6bm9ybWFsO3BhZGRpbmctbGVmdDoyNXB4OyBwYWRkaW5nLXJpZ2h0OjBweDsgbGluZS1oZWlnaHQ6MjBweDt9IC5ib3gxNyBoMiBhOmhvdmVye2Zsb2F0OmxlZnQ7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiMwMDU4OWQ7IHRleHQtZGVjb3JhdGlvbjpub25lOyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL2ljb240LnBuZykgbGVmdCB0b3Agbm8tcmVwZWF0OyBmb250LXdlaWdodDpub3JtYWw7IGxpbmUtaGVpZ2h0OjIwcHg7fSAuYm94MTh7d2lkdGg6YXV0bzsgaGVpZ2h0OjIwcHg7IGZsb2F0OmxlZnQ7IG1hcmdpbjowcHg7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvbWVudTEwX2JnLnBuZykgbGVmdCB0b3AgcmVwZWF0LXg7IC1tb3otYm9yZGVyLXJhZGl1czozcHg7IC13ZWJraXQtYm9yZGVyLXJhZGl1czozcHg7IGJvcmRlci1yYWRpdXM6M3B4OyAta2h0bWwtYm9yZGVyLXJhZGl1czozcHg7IHBhZGRpbmc6NHB4IDRweCA0cHggOHB4OyBmbG9hdDpsZWZ0OyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojRkZGOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgbWFyZ2luLXJpZ2h0OjFweDsgfSAuYm94MTggaDJ7ZmxvYXQ6bGVmdDsgcGFkZGluZy1yaWdodDo1cHg7IHBhZGRpbmctdG9wOjBweDt9IC5ib3gxOCBoMiBhe2Zsb2F0OmxlZnQ7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiNGRkY7IHRleHQtZGVjb3JhdGlvbjpub25lOyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL2ljb241LnBuZykgbGVmdCB0b3Agbm8tcmVwZWF0OyBmb250LXdlaWdodDpub3JtYWw7cGFkZGluZy1sZWZ0OjI1cHg7IHBhZGRpbmctcmlnaHQ6NXB4OyBsaW5lLWhlaWdodDoyMHB4O30gLmJveDE4IGgyIGE6aG92ZXJ7ZmxvYXQ6bGVmdDsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzAwNTg5ZDsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvaWNvbjUucG5nKSBsZWZ0IHRvcCBuby1yZXBlYXQ7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgbGluZS1oZWlnaHQ6MjBweDt9IC5ib3gxOXt3aWR0aDphdXRvOyBoZWlnaHQ6MjBweDsgZmxvYXQ6bGVmdDsgbWFyZ2luOjBweDsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9tZW51MTBfYmcucG5nKSBsZWZ0IHRvcCByZXBlYXQteDsgLW1vei1ib3JkZXItcmFkaXVzOjNweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjNweDsgYm9yZGVyLXJhZGl1czozcHg7IC1raHRtbC1ib3JkZXItcmFkaXVzOjNweDsgcGFkZGluZzo0cHg7IHBhZGRpbmctcmlnaHQ6M3B4OyBmbG9hdDpsZWZ0OyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojRkZGOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgbWFyZ2luLXJpZ2h0OjFweDsgfSAuYm94MTkgaDJ7ZmxvYXQ6bGVmdDsgcGFkZGluZy1yaWdodDo1cHg7IHBhZGRpbmctdG9wOjBweDt9IC5ib3gxOSBoMiBhe2Zsb2F0OmxlZnQ7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiNGRkY7IHRleHQtZGVjb3JhdGlvbjpub25lOyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL2ljb242LnBuZykgbGVmdCB0b3Agbm8tcmVwZWF0OyBmb250LXdlaWdodDpub3JtYWw7cGFkZGluZy1sZWZ0OjI1cHg7IGxpbmUtaGVpZ2h0OjIwcHg7fSAuYm94MTkgaDIgYTpob3ZlcntmbG9hdDpsZWZ0OyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojMDA1ODlkOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9pY29uNi5wbmcpIGxlZnQgdG9wIG5vLXJlcGVhdDsgZm9udC13ZWlnaHQ6bm9ybWFsOyBsaW5lLWhlaWdodDoyMHB4O30gLmJveDExMTR7Y3Vyc29yOnBvaW50ZXI7d2lkdGg6YXV0bzsgaGVpZ2h0OjIwcHg7IGZsb2F0OmxlZnQ7IG1hcmdpbjowcHg7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvYnV0dG9uXzEucG5nKSBsZWZ0IHRvcCByZXBlYXQteDsgLW1vei1ib3JkZXItcmFkaXVzOjNweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjNweDsgYm9yZGVyLXJhZGl1czozcHg7IC1raHRtbC1ib3JkZXItcmFkaXVzOjNweDsgcGFkZGluZzo0cHg7IGZsb2F0OmxlZnQ7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiNGRkY7IHRleHQtZGVjb3JhdGlvbjpub25lOyBtYXJnaW4tcmlnaHQ6MXB4OyB9IC5ib3gxMTE0IGgye2N1cnNvcjpwb2ludGVyO2Zsb2F0OmxlZnQ7IHBhZGRpbmctcmlnaHQ6NXB4OyBwYWRkaW5nLXRvcDowcHg7fSAuYm94MTExNCBoMiBhe2N1cnNvcjpwb2ludGVyO2Zsb2F0OmxlZnQ7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiNGRkY7IHRleHQtZGVjb3JhdGlvbjpub25lOyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL2ljb24yLnBuZykgbGVmdCB0b3Agbm8tcmVwZWF0OyBmb250LXdlaWdodDpub3JtYWw7cGFkZGluZy1sZWZ0OjQwcHg7IHBhZGRpbmctcmlnaHQ6MTBweDsgbGluZS1oZWlnaHQ6MjBweDt9IC5ib3gxMTE0IGgyIGE6aG92ZXJ7Y3Vyc29yOnBvaW50ZXI7ZmxvYXQ6bGVmdDsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzAwNTg5ZDsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvaWNvbjIucG5nKSBsZWZ0IHRvcCBuby1yZXBlYXQ7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgbGluZS1oZWlnaHQ6MjBweDt9IC5TcGVjaWZpY2F0aW9uc3t3aWR0aDo2NTFweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IG1hcmdpbjowcHg7IHBhZGRpbmc6MTBweCAwOyBmb250LXNpemU6MS41cmVtIDsgY29sb3I6IzI1MjUyNTsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7Zm9udC13ZWlnaHQ6bm9ybWFsO21hcmdpbi10b3A6NXB4O30gLk1vcmJpMnt3aWR0aDo2MzFweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IHBhZGRpbmc6MTBweDsgbWFyZ2luOjBweDsgYmFja2dyb3VuZDojRUZFRkVGOyAtbW96LWJvcmRlci1yYWRpdXM6M3B4O2ZvbnQtd2VpZ2h0Om5vcm1hbDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjNweDsgYm9yZGVyLXJhZGl1czozcHg7IC1raHRtbC1ib3JkZXItcmFkaXVzOjNweDsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzVhNWE1YTsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7fSAuTW9yYmkyIHB7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiM1YTVhNWE7IHRleHQtZGVjb3JhdGlvbjpub25lOyBwYWRkaW5nLWJvdHRvbTo4cHg7fSAuYm94Mjg4OV9taWR7d2lkdGg6Mjc4cHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL3JpZ2h0X2JveDRfbWlkLnBuZykgbGVmdCB0b3AgcmVwZWF0LXk7IHBhZGRpbmc6MCA1cHggMjBweCA1cHg7fSAuTW9yYmkyMnt3aWR0aDo2NTFweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IHBhZGRpbmc6MHB4OyBtYXJnaW46MHB4OyAtbW96LWJvcmRlci1yYWRpdXM6M3B4OyAtd2Via2l0LWJvcmRlci1yYWRpdXM6M3B4OyBib3JkZXItcmFkaXVzOjNweDsgLWtodG1sLWJvcmRlci1yYWRpdXM6M3B4OyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojNWE1YTVhOyB0ZXh0LWRlY29yYXRpb246bm9uZTt9IC5ib3gyODg5X21pZCBoMXsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IHBhZGRpbmc6MTBweCAxMHB4IDIwcHggMTBweDsgZm9udC1zaXplOjEuODc1cmVtIDsgY29sb3I6IzI4MjgyODsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgdGV4dC1hbGlnbjpsZWZ0OyB0ZXh0LXRyYW5zZm9ybTpub25lOyBsaW5lLWhlaWdodDoyNHB4fSAuX2JveDI4ODlfbWlkIGgxeyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgcGFkZGluZzoxMHB4IDEwcHggMjBweCAxMHB4OyBmb250LXNpemU6MS44NzVyZW0gOyBjb2xvcjojMjgyODI4OyB0ZXh0LWRlY29yYXRpb246bm9uZTsgZm9udC13ZWlnaHQ6bm9ybWFsOyB0ZXh0LWFsaWduOmxlZnQ7IHRleHQtdHJhbnNmb3JtOm5vbmU7IGxpbmUtaGVpZ2h0OjI0cHh9IC5ib3gyODg5X21pZCBoMnsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IHBhZGRpbmc6NHB4IDEwcHggMjBweCAxNXB4OyBmb250LXNpemU6MS41cmVtIDsgY29sb3I6IzI4MjgyODsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgdGV4dC1hbGlnbjpsZWZ0OyB0ZXh0LXRyYW5zZm9ybTpub25lOyBsaW5lLWhlaWdodDoyM3B4fSAjc2ltaWxhclRpdGxleyBwYWRkaW5nOjRweCAxMHB4IDlweCAxNXB4OyBmb250LXNpemU6MS40MzhyZW0gOyBmb250LXdlaWdodDpub3JtYWw7IH0gLnRhYmU1e3dpZHRoOjYzMXB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgfSAudGFiZTUgdWx7IGxpc3Qtc3R5bGUtdHlwZTpub25lOyBtYXJnaW46MDsgcGFkZGluZzowOyB0ZXh0LXRyYW5zZm9ybTpub25lOyB9IC50YWJlNSB1bCBsaXsgbGlzdC1zdHlsZS10eXBlOm5vbmU7IG1hcmdpbjowOyBkaXNwbGF5OmJsb2NrO30gLnRhYmU1IHVsIGxpIHNwYW57Y3Vyc29yOnBvaW50ZXI7IGxpc3Qtc3R5bGUtdHlwZTpub25lOyBtYXJnaW46MDsgZGlzcGxheTpibG9jazsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzMyMzIzMjsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IHBhZGRpbmc6N3B4IDE1cHggN3B4IDE1cHg7IG1hcmdpbi1yaWdodDoycHg7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgbGluZS1oZWlnaHQ6MThweDsgdGV4dC10cmFuc2Zvcm06bm9uZTsgdGV4dC1hbGlnbjpjZW50ZXI7IHRleHQtdHJhbnNmb3JtOm5vbmU7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvdGFiX2JnLnBuZykgbGVmdCB0b3AgcmVwZWF0LXg7IGZsb2F0OmxlZnQ7IC1tb3otYm9yZGVyLXJhZGl1cy10b3BsZWZ0OjZweDsgLW1vei1ib3JkZXItcmFkaXVzLXRvcHJpZ2h0OjZweDsgLW1vei1ib3JkZXItcmFkaXVzLWJvdHRvbXJpZ2h0OjBweDsgLW1vei1ib3JkZXItcmFkaXVzLWJvdHRvbWxlZnQ6MDsgLXdlYmtpdC1ib3JkZXItdG9wLWxlZnQtcmFkaXVzOjZweDsgLXdlYmtpdC1ib3JkZXItdG9wLXJpZ2h0LXJhZGl1czo2cHg7IC13ZWJraXQtYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6MHB4OyAtd2Via2l0LWJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6MDsgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czo2cHg7IGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOjZweDsgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czowOyBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czowO30gLnRhYmU1IHVsIGxpIHNwYW46aG92ZXJ7IGxpc3Qtc3R5bGUtdHlwZTpub25lOyBkaXNwbGF5OmJsb2NrOyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojN2IwMDAwOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgcGFkZGluZzo3cHggMTVweCA3cHggMTVweDsgbWFyZ2luLXJpZ2h0OjJweDsgZm9udC13ZWlnaHQ6bm9ybWFsOyBsaW5lLWhlaWdodDoxOHB4OyB0ZXh0LXRyYW5zZm9ybTpub25lOyB0ZXh0LWFsaWduOmNlbnRlcjsgdGV4dC10cmFuc2Zvcm06bm9uZTsgYmFja2dyb3VuZDogI2ViZWJlYjsgZmxvYXQ6bGVmdDsgLW1vei1ib3JkZXItcmFkaXVzLXRvcGxlZnQ6NnB4OyAtbW96LWJvcmRlci1yYWRpdXMtdG9wcmlnaHQ6NnB4OyAtbW96LWJvcmRlci1yYWRpdXMtYm90dG9tcmlnaHQ6MHB4OyAtbW96LWJvcmRlci1yYWRpdXMtYm90dG9tbGVmdDowOyAtd2Via2l0LWJvcmRlci10b3AtbGVmdC1yYWRpdXM6NnB4OyAtd2Via2l0LWJvcmRlci10b3AtcmlnaHQtcmFkaXVzOjZweDsgLXdlYmtpdC1ib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czowcHg7IC13ZWJraXQtYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czowOyBib3JkZXItdG9wLWxlZnQtcmFkaXVzOjZweDsgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6NnB4OyBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjA7IGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjA7IH0gLnRhYmU1IHVsIGxpIHNwYW4uYWN0aXZle2N1cnNvcjpkZWZhdWx0OyBsaXN0LXN0eWxlLXR5cGU6bm9uZTsgZGlzcGxheTpibG9jazsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzdiMDAwMDsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IHBhZGRpbmc6N3B4IDE1cHggN3B4IDE1cHg7IG1hcmdpbi1yaWdodDoycHg7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgbGluZS1oZWlnaHQ6MThweDsgdGV4dC10cmFuc2Zvcm06bm9uZTsgdGV4dC1hbGlnbjpjZW50ZXI7IHRleHQtdHJhbnNmb3JtOm5vbmU7IGJhY2tncm91bmQ6ICNlYmViZWI7IGZsb2F0OmxlZnQ7IC1tb3otYm9yZGVyLXJhZGl1cy10b3BsZWZ0OjZweDsgLW1vei1ib3JkZXItcmFkaXVzLXRvcHJpZ2h0OjZweDsgLW1vei1ib3JkZXItcmFkaXVzLWJvdHRvbXJpZ2h0OjBweDsgLW1vei1ib3JkZXItcmFkaXVzLWJvdHRvbWxlZnQ6MDsgLXdlYmtpdC1ib3JkZXItdG9wLWxlZnQtcmFkaXVzOjZweDsgLXdlYmtpdC1ib3JkZXItdG9wLXJpZ2h0LXJhZGl1czo2cHg7IC13ZWJraXQtYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6MHB4OyAtd2Via2l0LWJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6MDsgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czo2cHg7IGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOjZweDsgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czowOyBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czowOyB9IC50YWJfZGV0YWlsczJ7d2lkdGg6NjMxcHg7IHBhZGRpbmc6MTBweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IGJhY2tncm91bmQ6I0VGRUZFRjsgLW1vei1ib3JkZXItcmFkaXVzLXRvcGxlZnQ6MHB4OyAtbW96LWJvcmRlci1yYWRpdXMtdG9wcmlnaHQ6MHB4OyAtbW96LWJvcmRlci1yYWRpdXMtYm90dG9tcmlnaHQ6NnB4OyAtbW96LWJvcmRlci1yYWRpdXMtYm90dG9tbGVmdDo2cHg7IC13ZWJraXQtYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czowcHg7IC13ZWJraXQtYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6MHB4OyAtd2Via2l0LWJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjZweDsgLXdlYmtpdC1ib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjZweDsgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czowcHg7IGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOjBweDsgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czo2cHg7IGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjZweDt9IC5ib3gyNXt3aWR0aDo0ODdweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IG1hcmdpbjowcHg7IGJhY2tncm91bmQ6I0VGRUZFRjsgLW1vei1ib3JkZXItcmFkaXVzOjNweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjNweDsgYm9yZGVyLXJhZGl1czozcHg7IC1raHRtbC1ib3JkZXItcmFkaXVzOjNweDsgbWFyZ2luOjAgMTNweCAwIDA7IHBhZGRpbmc6MjBweCAwIDIwcHggMjBweDt9IC5ib3gyNnt3aWR0aDoyNDNweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7fSAuYm94MjYgdWx7IGxpc3Qtc3R5bGUtdHlwZTpub25lOyBtYXJnaW46MDsgcGFkZGluZzowOyB0ZXh0LXRyYW5zZm9ybTpub25lOyB9IC5ib3gyNiB1bCBsaXsgbGlzdC1zdHlsZS10eXBlOm5vbmU7IG1hcmdpbjowOyBkaXNwbGF5OmJsb2NrO30gLmJveDI2IHVsIGxpIHNwYW57IGxpc3Qtc3R5bGUtdHlwZTpub25lOyBtYXJnaW46MDsgZGlzcGxheTpibG9jazsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzMyMzIzMjsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IHBhZGRpbmc6MCA3cHggN3B4IDBweDsgZm9udC13ZWlnaHQ6bm9ybWFsOyBsaW5lLWhlaWdodDoxOHB4OyB0ZXh0LXRyYW5zZm9ybTpub25lOyB0ZXh0LWFsaWduOmxlZnQ7fSAuYm94MjYgdWwgbGkgYXsgbGlzdC1zdHlsZS10eXBlOm5vbmU7IG1hcmdpbjowOyBkaXNwbGF5OmJsb2NrOyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojMzIzMjMyOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgcGFkZGluZzowIDdweCA3cHggMjJweDsgZm9udC13ZWlnaHQ6bm9ybWFsOyBsaW5lLWhlaWdodDoxOHB4OyB0ZXh0LXRyYW5zZm9ybTpub25lOyB0ZXh0LWFsaWduOmxlZnQ7IH0gLmJveDI2IHVsIGxpIGE6aG92ZXJ7IGxpc3Qtc3R5bGUtdHlwZTpub25lOyBtYXJnaW46MDsgZGlzcGxheTpibG9jazsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzdiMDAwMDsgcGFkZGluZzowIDdweCA3cHggMjJweDsgZm9udC13ZWlnaHQ6bm9ybWFsOyBsaW5lLWhlaWdodDoxOHB4OyB0ZXh0LXRyYW5zZm9ybTpub25lOyB0ZXh0LWFsaWduOmxlZnQ7IHRleHQtdHJhbnNmb3JtOm5vbmU7IH0gLmJveDI2IHVsIGxpIGEuYWN0aXZleyBsaXN0LXN0eWxlLXR5cGU6bm9uZTsgbWFyZ2luOjA7IGRpc3BsYXk6YmxvY2s7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiM3YjAwMDA7IHRleHQtZGVjb3JhdGlvbjpub25lOyBwYWRkaW5nOjAgN3B4IDdweCAyMnB4OyBmb250LXdlaWdodDpub3JtYWw7IGxpbmUtaGVpZ2h0OjE4cHg7IHRleHQtYWxpZ246bGVmdDsgdGV4dC10cmFuc2Zvcm06bm9uZTsgfSAuYm94Mjd7d2lkdGg6MTMxcHg7IGhlaWdodDoyOHB4OyBmbG9hdDpsZWZ0OyBtYXJnaW4tYm90dG9tOjhweDsgfSAuYm94MzN7d2lkdGg6NjMxcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0O30gLmJveDMzIHVseyBsaXN0LXN0eWxlLXR5cGU6bm9uZTsgbWFyZ2luOjA7IHBhZGRpbmc6MDsgdGV4dC10cmFuc2Zvcm06bm9uZTsgfSAuYm94MzMgdWwgbGl7IGxpc3Qtc3R5bGUtdHlwZTpub25lOyBtYXJnaW46MDsgZGlzcGxheTpibG9jazt9IC5ib3gzMyB1bCBsaSBheyBsaXN0LXN0eWxlLXR5cGU6bm9uZTsgbWFyZ2luOjA7IGRpc3BsYXk6YmxvY2s7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiMzMjMyMzI7IHRleHQtZGVjb3JhdGlvbjpub25lOyBwYWRkaW5nOjAgN3B4IDdweCAwcHg7IG1hcmdpbi1yaWdodDoycHg7IGZvbnQtd2VpZ2h0OmJvbGQ7IGxpbmUtaGVpZ2h0OjE4cHg7IHRleHQtdHJhbnNmb3JtOm5vbmU7IHRleHQtYWxpZ246bGVmdDsgdGV4dC10cmFuc2Zvcm06bm9uZTt9IC5ib3gzMyB1bCBsaSBzcGFueyBsaXN0LXN0eWxlLXR5cGU6bm9uZTsgbWFyZ2luOjA7IGRpc3BsYXk6YmxvY2s7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiMzMjMyMzI7IHRleHQtZGVjb3JhdGlvbjpub25lOyBwYWRkaW5nOjAgN3B4IDdweCAwcHg7IG1hcmdpbi1yaWdodDoycHg7IGZvbnQtd2VpZ2h0OmJvbGQ7IGxpbmUtaGVpZ2h0OjE4cHg7IHRleHQtdHJhbnNmb3JtOm5vbmU7IHRleHQtYWxpZ246bGVmdDsgdGV4dC10cmFuc2Zvcm06bm9uZTt9IC5ib3gzMyBweyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojMzIzMjMyOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgcGFkZGluZzowIDBweCA3cHggMHB4OyBmb250LXdlaWdodDpib2xkOyBsaW5lLWhlaWdodDoxOHB4OyB0ZXh0LXRyYW5zZm9ybTpub25lOyB0ZXh0LWFsaWduOmxlZnQ7IH0gLmJveDMzIHVsIGxpIGE6aG92ZXJ7IGxpc3Qtc3R5bGUtdHlwZTpub25lOyBtYXJnaW46MDsgZGlzcGxheTpibG9jazsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzdiMDAwMDsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IHBhZGRpbmc6MCA3cHggN3B4IDIycHg7IG1hcmdpbi1yaWdodDoycHg7IGZvbnQtd2VpZ2h0OmJvbGQ7IGxpbmUtaGVpZ2h0OjE4cHg7IHRleHQtdHJhbnNmb3JtOm5vbmU7IHRleHQtYWxpZ246bGVmdDsgdGV4dC10cmFuc2Zvcm06bm9uZTsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9hcnJvdzgucG5nKSBsZWZ0IHRvcCBuby1yZXBlYXQ7IH0gLk1vdGV1cnt3aWR0aDoyODBweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IG1hcmdpbi1ib3R0b206NXB4O30gLk1vdGV1ciBoMnt3aGl0ZS1zcGFjZTpub3JtYWw7IHdpZHRoOjEzNXB4OyBmbG9hdDpsZWZ0OyBmb250LXNpemU6MC43NXJlbSA7IGNvbG9yOiMyMDIwMjA7fSAuTW90ZXVyIGgze3doaXRlLXNwYWNlOm5vcm1hbDsgd2lkdGg6MTQwcHg7IGZsb2F0OmxlZnQ7IGZvbnQtc2l6ZTowLjgxM3JlbSA7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgY29sb3I6IzVhNWE1YTt9IC5ib3gyNiB1bCBsaSBzcGFuOmJlZm9yZSwuYm94MzMgdWwgbGkgc3BhbjpiZWZvcmUsLk1vdGV1ciBoMjpiZWZvcmUgeyBjb250ZW50OiJcZjEzOCI7IGZvbnQtZmFtaWx5OidGb250IEF3ZXNvbWUgNSBQcm8nOyBmb250LXdlaWdodDo5MDA7IG1hcmdpbi1yaWdodDo1cHg7IH0gLmJveDI3IGF7d2lkdGg6MTMxcHg7IGhlaWdodDoyOHB4OyBmbG9hdDpsZWZ0OyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL2J1dHRvbjEwX2JnLnBuZykgbGVmdCB0b3AgcmVwZWF0LXggOyAtbW96LWJvcmRlci1yYWRpdXM6M3B4OyAtd2Via2l0LWJvcmRlci1yYWRpdXM6M3B4OyBib3JkZXItcmFkaXVzOjNweDsgLWtodG1sLWJvcmRlci1yYWRpdXM6M3B4OyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojRkZGRkZGOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgZm9udC13ZWlnaHQ6bm9ybWFsOyBwYWRkaW5nOjA7IGxpbmUtaGVpZ2h0OjI4cHg7IHRleHQtYWxpZ246Y2VudGVyOyB0ZXh0LXRyYW5zZm9ybTpub25lO30gLmJveDI3IGE6aG92ZXJ7d2lkdGg6MTMxcHg7IGhlaWdodDoyOHB4OyBmbG9hdDpsZWZ0OyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL2J1dHRvbjEwX2JnLnBuZykgbGVmdCAtMzJweCByZXBlYXQteCA7IC1tb3otYm9yZGVyLXJhZGl1czozcHg7IC13ZWJraXQtYm9yZGVyLXJhZGl1czozcHg7IGJvcmRlci1yYWRpdXM6M3B4OyAta2h0bWwtYm9yZGVyLXJhZGl1czozcHg7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiNGRkZGRkY7IHRleHQtZGVjb3JhdGlvbjpub25lOyBmb250LXdlaWdodDpub3JtYWw7IHRleHQtYWxpZ246Y2VudGVyOyB0ZXh0LXRyYW5zZm9ybTpub25lOyBsaW5lLWhlaWdodDoyOHB4OyB9IC5ib3gyOHt3aWR0aDoxMjdweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IG1hcmdpbjowcHg7IGJhY2tncm91bmQ6IzZmNmY2ZiB1cmwoL2ltYWdlcy9saXRlcl9iZy5wbmcpIGxlZnQgdG9wIHJlcGVhdC14OyAtbW96LWJvcmRlci1yYWRpdXM6M3B4OyAtd2Via2l0LWJvcmRlci1yYWRpdXM6M3B4OyBib3JkZXItcmFkaXVzOjNweDsgLWtodG1sLWJvcmRlci1yYWRpdXM6M3B4OyBwYWRkaW5nOjEwcHggMnB4IDEwcHggMnB4OyBtYXJnaW46MCAwcHggMCAwO30gLnRleHQ0NHt3aWR0aDoxMjdweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvbGl0ZXJfbGluZS5wbmcpIGxlZnQgYm90dG9tIHJlcGVhdC14OyBiYWNrZ3JvdW5kLXBvc2l0aW9uOmJvdHRvbTsgdGV4dC1hbGlnbjpjZW50ZXI7IHBhZGRpbmctYm90dG9tOjVweDsgbWFyZ2luLWJvdHRvbTo1cHg7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiNGRkZGRkY7IHRleHQtZGVjb3JhdGlvbjpub25lOyBmb250LXdlaWdodDpub3JtYWw7IHRleHQtYWxpZ246Y2VudGVyOyB0ZXh0LXRyYW5zZm9ybTpub25lOyBsaW5lLWhlaWdodDoxOHB4fSAudGV4dF9ib3g2MHt3aWR0aDoxMzNweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IHBhZGRpbmc6MDsgfSAudGV4dF9ib3g2MCBoMnt3aWR0aDoxMzNweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IHBhZGRpbmc6MDsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzI2MjYyNjsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IGZvbnQtd2VpZ2h0OmJvbGQ7IHRleHQtYWxpZ246bGVmdDsgdGV4dC10cmFuc2Zvcm06bm9uZTsgbGluZS1oZWlnaHQ6MThweH0gLnRleHRfYm94NjAgaDN7d2lkdGg6MTMzcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBwYWRkaW5nOjA7IGZvbnQtc2l6ZToxcmVtIDsgY29sb3I6IzdiMDAwMDsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgdGV4dC1hbGlnbjpsZWZ0OyB0ZXh0LXRyYW5zZm9ybTpub25lOyBsaW5lLWhlaWdodDoxOHB4fSAudGV4dF9ib3g2MCBwe3dpZHRoOjEzM3B4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgcGFkZGluZzo1cHggMDsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzI2MjYyNjsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IGZvbnQtd2VpZ2h0OmJvbGQ7IHRleHQtYWxpZ246bGVmdDsgdGV4dC10cmFuc2Zvcm06bm9uZTsgbGluZS1oZWlnaHQ6MThweH0gLnZpb3J7d2lkdGg6YXV0bzsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IHBhZGRpbmc6MHB4IDEwcHg7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvdmlvci5wbmcpIGxlZnQgdG9wIHJlcGVhdC14OyBsaW5lLWhlaWdodDoyMnB4OyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojRkZGRkZGOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgZm9udC13ZWlnaHQ6bm9ybWFsOyB0ZXh0LWFsaWduOmxlZnQ7IHRleHQtdHJhbnNmb3JtOm5vbmU7IC1tb3otYm9yZGVyLXJhZGl1czo1cHg7IC13ZWJraXQtYm9yZGVyLXJhZGl1czo1cHg7IGJvcmRlci1yYWRpdXM6NXB4OyAta2h0bWwtYm9yZGVyLXJhZGl1czo1cHg7IH0gLmJveDEzM3t3aWR0aDoxMzNweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IHBhZGRpbmc6MDsgbWFyZ2luOjA7fSAuYm94MjU4e3dpZHRoOjI1OHB4OyBib3JkZXItYm90dG9tOjFweCBzb2xpZCAjYjliOWI5OyBwYWRkaW5nOjAgMTBweCA1cHggMTBweDsgbWFyZ2luLWJvdHRvbTo1cHg7IGZsb2F0OmxlZnQ7fSAuYm94MTE2e3dpZHRoOjExNnB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgYm9yZGVyOjJweCBzb2xpZCAjRkZGRkZGOyBwYWRkaW5nOjA7IG1hcmdpbi1yaWdodDo1cHg7fSAuYm94MTE2IGltZ3t3aWR0aDoxMjBweDsgfSAuYm94Mnt3aWR0aDoyNjBweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IG1hcmdpbi1yaWdodDo0N3B4OyBtYXJnaW4tbGVmdDoyMHB4OyBwYWRkaW5nOjAgMCAxMHB4IDVweDsgZm9udC1zaXplOjAuODEzcmVtIDsgY29sb3I6IzI0MjQyNCA7fSAuYm94MiBzcGFue2ZvbnQ6Ym9sZCAxMnB4IFZlcmRhbmEsIEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGNvbG9yOiNGRjAwMDB9IC5ib3gze3dpZHRoOjI2MHB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgbWFyZ2luLXJpZ2h0OjIwcHg7IHBhZGRpbmc6MCAwIDEwcHggNXB4OyBmb250LXNpemU6MC44MTNyZW0gOyBjb2xvcjojMjQyNDI0IDt9IC5ib3gzIHNwYW57Zm9udDpib2xkIDEycHggVmVyZGFuYSwgQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgY29sb3I6I0ZGMDAwMH0gLmJveDR7d2lkdGg6MjY1cHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBtYXJnaW46MHB4IDQ1cHggMTBweCAyMHB4OyB9IC5ib3g0NHt3aWR0aDoyNjVweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IG1hcmdpbjowcHggNDdweCAxMHB4IDIwcHg7IHBvc2l0aW9uOnJlbGF0aXZlO30gLmJveDV7d2lkdGg6MjY1cHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBtYXJnaW46MHB4IDIwcHggMTBweCAwO30gLmJveDZ7d2lkdGg6MjgwcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBtYXJnaW46MTBweCAwcHggMHB4IDA7fSAuYm94NTV7d2lkdGg6MjY1cHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBtYXJnaW46MHB4IDIwcHggMTBweCAwO3Bvc2l0aW9uOnJlbGF0aXZlO30gLmxpbjJ7d2lkdGg6NjE3cHg7IGhlaWdodDoycHg7IGZsb2F0OmxlZnQ7IG1hcmdpbjowcHggMCAxMHB4IDA7IHBhZGRpbmc6MDsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9saW5lMi5wbmcpIGxlZnQgdG9wIHJlcGVhdC14O30gLmJveDE0e3BhZGRpbmc6MHB4IDA7IGhlaWdodDoxNXB4OyBmbG9hdDpsZWZ0fSAuYm94MjB7cGFkZGluZzowIDEwcHg7IGZsb2F0OmxlZnQ7IGxpbmUtaGVpZ2h0OjI3cHg7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiMyNDI0MjQgOyBmb250LXdlaWdodDpib2xkO30gLnRleHQzMHt3aWR0aDo2MTdweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IHBhZGRpbmc6MTdweCAwOyBmb250LXNpemU6MS4zNzVyZW0gOyBjb2xvcjojMjQyNDI0fSAudGV4dDMwIHNwYW57cGFkZGluZy1yaWdodDoxMHB4OyBmbG9hdDpyaWdodDsgdGV4dC1hbGlnbjpyaWdodDsgZm9udC1zaXplOjAuODc1cmVtIDsgZm9udC13ZWlnaHQ6bm9ybWFsOyBjb2xvcjojMjQyNDI0O30gLnRleHQzMCBzcGFuIHN0cm9uZ3tmb250OmJvbGQgMjBweCBWZXJkYW5hLCBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBjb2xvcjojRkYwMDAwIH0gLmJveDYxN3t3aWR0aDo2MTdweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IHBhZGRpbmctbGVmdDowcHg7IHBhZGRpbmctYm90dG9tOjIwcHg7IG1hcmdpbi1yaWdodDowcHg7fSAubWFpbjYxN3t3aWR0aDo2MTdweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IHBhZGRpbmctbGVmdDowcHg7IG1hcmdpbi10b3A6MTVweDt9IC5ib3gyMEF7cGFkZGluZzowIDVweDsgZmxvYXQ6bGVmdDsgbGluZS1oZWlnaHQ6MjVweDsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzI0MjQyNCA7IGZvbnQtd2VpZ2h0OmJvbGQ7fSAub25TaXRlICsgLnByZWZlcnJlZCwgLnByZWZlcnJlZDpoYXMoKy5vblNpdGUpIHsgYWxpZ24tc2VsZjplbmQ7IH0gI3NlcnZpY2VQYWNrYWdlcyB0YWJsZSB7Ym9yZGVyLWNvbGxhcHNlOmNvbGxhcHNlOyB3aWR0aDoxMDAlOyBsaW5lLWhlaWdodDozMHB4OyBtYXJnaW4tYm90dG9tOjE1cHg7IGZvbnQtc2l6ZTo5MCU7fSAjc2VydmljZVBhY2thZ2VzIHRhYmxlIHRib2R5IHRyOm50aC1jaGlsZChvZGQpIHtiYWNrZ3JvdW5kOiNmM2YzZjM7fSAjc2VydmljZVBhY2thZ2VzIHRhYmxlIHRke3BhZGRpbmctdG9wOjAuNXJlbTsgdmVydGljYWwtYWxpZ246dG9wOyBsaW5lLWhlaWdodDoxLjU7fSAjc2VydmljZVBhY2thZ2VzIHRhYmxlIHRkOm50aC1jaGlsZCgyKSB7cGFkZGluZzowLjVyZW07fSAuZGV0YWlsQ2FyVGl0bGUsIC5kZXRhaWxDYXJUaXRsZVdpZGUsIC5kZXRhaWxDYXJUaXRsZUZ1bGwge3dvcmQtd3JhcDpicmVhay13b3JkO2hlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBtYXJnaW46MHB4OyBmb250LXNpemU6MS44NzVyZW0gOyBjb2xvcjojNDE0MTQxO2ZvbnQtd2VpZ2h0Om5vcm1hbDt9IC5kZXRhaWxDYXJUaXRsZSB7d2lkdGg6NDkwcHg7fSAuZGV0YWlsQ2FyVGl0bGVXaWRlIHt3aWR0aDo3NzVweDt9IC5kZXRhaWxDYXJUaXRsZUZ1bGwge3dpZHRoOjEwMCU7fSAubWFpbmJveF90ZXh0YXJlNjE3e2hlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBwYWRkaW5nLWxlZnQ6MHB4OyBtYXJnaW46MjBweCAwOyB0cmFuc2Zvcm06dHJhbnNsYXRlKC01MCUsIDAlKTsgcG9zaXRpb246cmVsYXRpdmU7IGxlZnQ6NTAlO30gLnRleHRib3gyMnt3aWR0aDozODFweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IHBhZGRpbmctbGVmdDowcHg7IG1hcmdpbjowcHggMHB4IDAgMDt9IC5idXR0b241MXsgd2lkdGg6YXV0bzsgaGVpZ2h0OjM2cHg7IGZsb2F0OmxlZnQ7IH0gLmJ1dHRvbjUxIGF7IHdpZHRoOmF1dG87IGhlaWdodDozNnB4OyBmbG9hdDpsZWZ0OyAtbW96LWJvcmRlci1yYWRpdXM6NXB4OyAtd2Via2l0LWJvcmRlci1yYWRpdXM6NXB4OyBib3JkZXItcmFkaXVzOjVweDsgLWtodG1sLWJvcmRlci1yYWRpdXM6NXB4OyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL2J1dHRvbjUucG5nKSBsZWZ0IHRvcCByZXBlYXQteDsgZm9udC1zaXplOjEuMTI1cmVtIDsgY29sb3I6I0ZGRkZGRiA7IHBhZGRpbmc6MCAxMHB4OyBsaW5lLWhlaWdodDozNnB4OyB0ZXh0LWRlY29yYXRpb246bm9uZTsgdGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlOyB9IC5idXR0b241MSBhOmhvdmVyeyB3aWR0aDphdXRvOyBoZWlnaHQ6MzZweDsgZmxvYXQ6bGVmdDsgLW1vei1ib3JkZXItcmFkaXVzOjVweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjVweDsgYm9yZGVyLXJhZGl1czo1cHg7IC1raHRtbC1ib3JkZXItcmFkaXVzOjVweDsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9idXR0b241LnBuZykgbGVmdCAtNDRweCByZXBlYXQteDsgZm9udC1zaXplOjEuMTI1cmVtIDsgY29sb3I6I0ZGRkZGRiA7IHBhZGRpbmc6MCAxMHB4OyBsaW5lLWhlaWdodDozNnB4OyB0ZXh0LWRlY29yYXRpb246bm9uZTsgdGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlO30gLnRleHQ1NXt3aWR0aDozODFweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IHBhZGRpbmctbGVmdDowcHg7IG1hcmdpbjowcHggMHB4IDIwcHggMDsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6dmFyKC0tZGVmYXVsdC1ibGFjaykgOyBsaW5lLWhlaWdodDoxOHB4OyB0ZXh0LWRlY29yYXRpb246bm9uZTsgfSAudGV4dDU1IHB7IHBhZGRpbmctbGVmdDowcHggNXB4IDAgMDsgbWFyZ2luOjBweCAwcHggMHB4IDA7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOnZhcigtLWRlZmF1bHQtYmxhY2spOyBsaW5lLWhlaWdodDoxOHB4OyB0ZXh0LWRlY29yYXRpb246bm9uZTsgfSAucGljYm94XzIyMXtoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgcGFkZGluZy1sZWZ0OjBweDsgbWFyZ2luOjBweCAxNXB4IDAgMDt9IC5waWNib3hfMjIxIGltZyB7IHdpZHRoOjMzMnB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgLW1vei1ib3JkZXItcmFkaXVzOjNweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjNweDsgYm9yZGVyLXJhZGl1czozcHg7IC1raHRtbC1ib3JkZXItcmFkaXVzOjNweDsgfSAuaXNGdWxsV2lkdGhQYWdlIC5waWNib3hfMjIxIGltZyB7IHdpZHRoOjQ0MnB4OyB9IC5waWNib3g2NTF7d2lkdGg6NjUxcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBtYXJnaW46NXB4IDEwcHggMHB4O30gLnBpY2JveDkzMHt3aWR0aDo5MzBweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IG1hcmdpbjo1cHggNXB4IDBweDt9IC5waWNib3g2NTEgaW1nIHsgd2lkdGg6NjUxcHg7IH0gLnBpY2JveDkzMCBpbWcgeyB3aWR0aDo5MzBweDsgfSAucGljYm94NjUxIGltZywgLnBpY2JveDkzMCBpbWcgeyBmbG9hdDpsZWZ0OyBjdXJzb3I6cG9pbnRlcjsgLW1vei1ib3JkZXItcmFkaXVzOjNweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjNweDsgYm9yZGVyLXJhZGl1czozcHg7IC1raHRtbC1ib3JkZXItcmFkaXVzOjNweDsgfSAudG9wUHJvbW9JbWFnZSBpbWcgeyAtbW96LWJvcmRlci1yYWRpdXM6M3B4OyAtd2Via2l0LWJvcmRlci1yYWRpdXM6M3B4OyBib3JkZXItcmFkaXVzOjNweDsgLWtodG1sLWJvcmRlci1yYWRpdXM6M3B4OyBtYXJnaW4tdG9wOjVweDsgd2lkdGg6OTMwcHg7IGN1cnNvcjpwb2ludGVyOyB9IC50b3BQcm9tb0ltYWdlVXNlZCBpbWcgeyAtbW96LWJvcmRlci1yYWRpdXM6M3B4OyAtd2Via2l0LWJvcmRlci1yYWRpdXM6M3B4OyBib3JkZXItcmFkaXVzOjNweDsgLWtodG1sLWJvcmRlci1yYWRpdXM6M3B4OyB3aWR0aDo2NTBweDsgY3Vyc29yOnBvaW50ZXI7IH0gLnRlYW1fdGl0bGVfZGVhbGVye21hcmdpbi1ib3R0b206MTVweDsgdGV4dC1hbGlnbjpjZW50ZXI7fSAuZm9ybXNfYm94NjYxe3dpZHRoOjk2MHB4OyBoZWlnaHQ6YXV0bzsgbWFyZ2luOjEwcHggYXV0bzsgfSAucGljYm94OTB7d2lkdGg6OTBweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IG1hcmdpbi1yaWdodDo4cHg7IGJvcmRlcjoxcHggc29saWQgI2FjYWNhYzsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjNweDsgYm9yZGVyLXJhZGl1czozcHg7IC1raHRtbC1ib3JkZXItcmFkaXVzOjNweDsgfSAucGljYm94OTAgaW1nIHt3aWR0aDo5MHB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgLW1vei1ib3JkZXItcmFkaXVzOjNweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjNweDsgYm9yZGVyLXJhZGl1czozcHg7IC1raHRtbC1ib3JkZXItcmFkaXVzOjNweDsgfSAudGV4dGJveDE5MXt3aWR0aDo1MiU7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBmb250LXNpemU6MC44MTNyZW0gOyBsaW5lLWhlaWdodDoxLjI7IGNvbG9yOiMyNDI0MjQ7IH0gLnRleHRib3gxOTEgaDR7IGZvbnQtc2l6ZToxLjEyNXJlbSA7IGNvbG9yOiMyNDI0MjQ7IHBhZGRpbmctYm90dG9tOjVweDsgfSAubWFpbmJveDI5MXt3aWR0aDoyOTFweDsgbWluLWhlaWdodDoxMjNweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IG1hcmdpbjowIDVweCAxMHB4IDA7IGJhY2tncm91bmQ6I2U2ZTZlNjsgYm9yZGVyOjFweCBzb2xpZCAjZDRkNGQ0OyAtbW96LWJvcmRlci1yYWRpdXM6OHB4OyAtd2Via2l0LWJvcmRlci1yYWRpdXM6OHB4OyBib3JkZXItcmFkaXVzOjhweDsgLWtodG1sLWJvcmRlci1yYWRpdXM6OHB4OyBwYWRkaW5nOjE1cHggMTBweDt9IC5sYXp5e2JvcmRlcjowO2Rpc3BsYXk6bm9uZX0gLnRlY2hTcGVjc3t3aWR0aDo2MjFweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IG1hcmdpbjowcHg7IHBhZGRpbmc6MjVweCAxNXB4OyBiYWNrZ3JvdW5kOiNlYmViZWI7IGJhY2tncm91bmQtcG9zaXRpb246cmlnaHQgYm90dG9tOyAtbW96LWJvcmRlci1yYWRpdXMtdG9wbGVmdDowcHg7LW1vei1ib3JkZXItcmFkaXVzLXRvcHJpZ2h0OjBweDstbW96LWJvcmRlci1yYWRpdXMtYm90dG9tcmlnaHQ6NnB4Oy1tb3otYm9yZGVyLXJhZGl1cy1ib3R0b21sZWZ0OjZweDstd2Via2l0LWJvcmRlci10b3AtbGVmdC1yYWRpdXM6MHB4Oy13ZWJraXQtYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6MHB4Oy13ZWJraXQtYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6NnB4Oy13ZWJraXQtYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czo2cHg7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czowcHg7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6MHB4O2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6NnB4O2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjZweDt9IC5lbWFpbF9saW5re3RleHQtZGVjb3JhdGlvbjpub25lOyBjb2xvcjojODg4O30gLmVtYWlsX2xpbms6aG92ZXJ7dGV4dC1kZWNvcmF0aW9uOm5vbmU7IGNvbG9yOiMzMzM7fSAucGFnZV9uYW1lNTU1IHsgY29sb3I6IzI0MjQyNDsgZmxvYXQ6bGVmdDsgZm9udC1zaXplOjEuNXJlbSA7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgaGVpZ2h0OmF1dG87IGxpbmUtaGVpZ2h0OjMwcHg7IHBhZGRpbmc6MCAwIDEwcHggMDsgd2lkdGg6MTAwJTsgYm94LXNpemluZzpib3JkZXItYm94OyBtYXJnaW46MDsgfSAucGFnZV9uYW1lNTU1IGF7IGNvbG9yOiMyNDI0MjQ7IH0gLnBhZ2VfbmFtZTU1NSBhOmhvdmVyeyBjb2xvcjojMjQyNDI0OyB0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lOyB9IC5wYWdlX25hbWU1NTUgYTp2aXNpdGVkeyBjb2xvcjojMjQyNDI0OyB9IC5wYWdlX25hbWVORVc1NTUgeyBjb2xvcjojMjQyNDI0OyBmb250LXdlaWdodDpub3JtYWw7IGhlaWdodDphdXRvOyBmb250LXNpemU6MC44NzVyZW0gOyB9IC5wYWdlX25hbWVORVc1NTUgYXsgY29sb3I6IzI0MjQyNDsgfSAucGFnZV9uYW1lTkVXNTU1IGE6aG92ZXJ7IGNvbG9yOiMyNDI0MjQ7IHRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7IH0gLnBhZ2VfbmFtZU5FVzU1NSBhOnZpc2l0ZWR7IGNvbG9yOiMyNDI0MjQ7IH0gLmJveDJfdGV4dDQ0IHsgY29sb3I6IzI0MjQyNDsgZm9udC1zaXplOjFyZW07IGhlaWdodDphdXRvOyBsaW5lLWhlaWdodDoxOHB4OyBwYWRkaW5nOjEwcHggMCAwIDA7IHdpZHRoOmF1dG87IH0gLnRleHRfYm94MTEgeyBmbG9hdDpsZWZ0OyBoZWlnaHQ6YXV0bzsgbWFyZ2luOjA7IHBhZGRpbmc6MCAyMHB4IDEwcHggMDsgd2lkdGg6YXV0bzsgbGluZS1oZWlnaHQ6MjFweDsgZGlzcGxheTpmbGV4OyBmbGV4LWRpcmVjdGlvbjpjb2x1bW47IH0gLnRleHRfYm94MTEgaDQgeyBjb2xvcjojMjQyNDI0OyBmbG9hdDpsZWZ0OyBmb250LXNpemU6MC44NzVyZW0gOyBoZWlnaHQ6YXV0bzsgbWFyZ2luOjA7IHBhZGRpbmc6MTBweCAwOyB9IC50ZXh0X2JveDExIGEgeyBjb2xvcjojMjQyNDI0OyBmb250LXNpemU6MC43NXJlbSA7IGhlaWdodDphdXRvOyBtYXJnaW4tbGVmdDowOyBwYWRkaW5nOjEwcHggMDsgZmxvYXQ6bGVmdDsgfSAudGV4dF9ib3gxMSBhOmhvdmVyIHsgY29sb3I6IzI0MjQyNDsgfSAudGV4dF9ib3gxMSBhOnZpc2l0ZWQgeyBjb2xvcjojMjQyNDI0OyB9IC50ZXh0X2JveDExIHVsLCAudGV4dF9ib3gxMSBwIHsgfSAudGV4dF9ib3gxMSB1bCwgLnRleHRfYm94MTEgcCB7IGNvbG9yOiMyNDI0MjQ7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGhlaWdodDphdXRvOyBtYXJnaW46MDsgcGFkZGluZzowIDAgNXB4OyB9IC50ZXh0X2JveDExIHVsIHsgbGlzdC1zdHlsZS1wb3NpdGlvbjppbnNpZGU7IH0gLnRleHRfYm94MTEgcCBhIHsgZm9udC1zaXplOjAuODc1cmVtIDsgbWFyZ2luOjA7IHBhZGRpbmc6MDsgZmxvYXQ6bm9uZTsgfSAucGljYm94MzM2IHsgYm9yZGVyOjFweCBzb2xpZCAjN0Q3RDdEOyBmbG9hdDpsZWZ0OyBoZWlnaHQ6YXV0bzsgbWFyZ2luLXJpZ2h0OjY4cHg7IH0gLmZvbnRfc2l6ZTIxIHsgZm9udC1zaXplOjEuMzEzcmVtICFpbXBvcnRhbnQ7IH0gLnBhZ2VfbmFtZTE4IHsgY29sb3I6IzI0MjQyNDsgZm9udC1zaXplOjEuMTI1cmVtIDsgaGVpZ2h0OmF1dG87IGxpbmUtaGVpZ2h0OjMwcHg7IHBhZGRpbmc6MCAwIDEwcHggMDsgd2lkdGg6MTAwJTsgZm9udC13ZWlnaHQ6Ym9sZDsgfSAucGFnZV9uYW1lMTggYXsgY29sb3I6IzI0MjQyNDsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IH0gLnBhZ2VfbmFtZTE4IGE6aG92ZXJ7IGNvbG9yOiMyNDI0MjQ7IHRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7IH0gLnZpZGVvNSB7IGZsb2F0OmxlZnQ7IGhlaWdodDo0MXB4OyBtYXJnaW4tdG9wOjcwcHg7IG1hcmdpbi1sZWZ0OjcwcHg7IH0gLmZsb2F0TG9nb3sgd2lkdGg6NjIxcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBtYXJnaW46MHB4OyBwYWRkaW5nOjI1cHggMTVweDsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9MT0dPX0dBX1RSQU5TUEFSRU5ULnBuZykgcmlnaHQgYm90dG9tIG5vLXJlcGVhdDsgYmFja2dyb3VuZC1wb3NpdGlvbjpyaWdodCBib3R0b207IC1tb3otYm9yZGVyLXJhZGl1cy10b3BsZWZ0OjBweDstbW96LWJvcmRlci1yYWRpdXMtdG9wcmlnaHQ6MHB4Oy1tb3otYm9yZGVyLXJhZGl1cy1ib3R0b21yaWdodDo2cHg7LW1vei1ib3JkZXItcmFkaXVzLWJvdHRvbWxlZnQ6NnB4Oy13ZWJraXQtYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czowcHg7LXdlYmtpdC1ib3JkZXItdG9wLXJpZ2h0LXJhZGl1czowcHg7LXdlYmtpdC1ib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czo2cHg7LXdlYmtpdC1ib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjZweDtib3JkZXItdG9wLWxlZnQtcmFkaXVzOjBweDtib3JkZXItdG9wLXJpZ2h0LXJhZGl1czowcHg7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czo2cHg7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6NnB4OyB9IC5idXR0b24yLmpxVHJhbnNmb3JtQnV0dG9uIHsgYmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDsgYm9yZGVyOm1lZGl1bSBub25lOyBjb2xvcjojRkZGRkZGOyBjdXJzb3I6cG9pbnRlcjsgZm9udC1zaXplOjAuODEzcmVtIDsgbWFyZ2luOjA7IG92ZXJmbG93OnZpc2libGU7IHBhZGRpbmc6MDsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IH0gLmJ1dHRvbjIuanFUcmFuc2Zvcm1CdXR0b24gc3BhbiB7IGJhY2tncm91bmQ6dXJsKCIvaW1hZ2VzL2J0bl9yaWdodDIucG5nIikgbm8tcmVwZWF0IHNjcm9sbCByaWdodCB0b3AgdHJhbnNwYXJlbnQ7IGRpc3BsYXk6YmxvY2s7IGZsb2F0OmxlZnQ7IGhlaWdodDozNXB4OyBtYXJnaW46MDsgcGFkZGluZzowIDZweCAwIDA7IH0gLmJ1dHRvbjIuanFUcmFuc2Zvcm1CdXR0b24gc3BhbiBzcGFuIHsgYmFja2dyb3VuZDp1cmwoIi9pbWFnZXMvYnRuX2xlZnQyLnBuZyIpIG5vLXJlcGVhdCBzY3JvbGwgbGVmdCB0b3AgdHJhbnNwYXJlbnQ7IGNvbG9yOiNGRkZGRkY7IGRpc3BsYXk6YmxvY2s7IGZvbnQtc2l6ZTowLjgxM3JlbSA7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgaGVpZ2h0OjI2cHg7IGxpbmUtaGVpZ2h0OjEzcHg7IHBhZGRpbmc6MTJweCAxM3B4IDAgMTVweDsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IHRleHQtdHJhbnNmb3JtOnVwcGVyY2FzZTsgfSAuYnV0dG9uMi5qcVRyYW5zZm9ybUJ1dHRvbl9ob3ZlciBzcGFuIHNwYW4geyBiYWNrZ3JvdW5kLXBvc2l0aW9uOmxlZnQgLTM4cHg7IH0gLmJ1dHRvbjIuanFUcmFuc2Zvcm1CdXR0b25faG92ZXIgc3BhbiB7IGJhY2tncm91bmQtcG9zaXRpb246cmlnaHQgLTM4cHg7IH0gLmJ1dHRvbjIuanFUcmFuc2Zvcm1CdXR0b25fY2xpY2sgc3BhbiBzcGFuIHsgYmFja2dyb3VuZC1wb3NpdGlvbjpsZWZ0IC02NnB4OyB9IC5idXR0b24yLmpxVHJhbnNmb3JtQnV0dG9uX2NsaWNrIHNwYW4geyBiYWNrZ3JvdW5kLXBvc2l0aW9uOnJpZ2h0IC02NnB4OyB9IC52ZWhpY2xlTGlzdFRhYmxlIHsgbWFyZ2luOjEwcHg7IGZvbnQtc2l6ZTowLjc1cmVtIDsgY29sb3I6IzQxNDE0MTsgfSAudmVoaWNsZUxpc3RUYWJsZSB0ciB0ZCB7IGJvcmRlci1ib3R0b206MXB4IGRvdHRlZCAjNjY2NjY2OyBoZWlnaHQ6MzBweDsgfSAudmVoaWNsZUxpc3RUYWJsZSB0ciB0ZCBheyBjb2xvcjojNDE0MTQxOyBmb250LXNpemU6MC43NXJlbSA7IH0gLnZlaGljbGVMaXN0VGFibGUgdHIgdGQgYTpob3ZlcnsgY29sb3I6IzQxNDE0MTsgZm9udC1zaXplOjAuNzVyZW0gOyB9IC52ZWhpY2xlTGlzdFRhYmxlIHRyIHRkIGE6dmlzaXRlZHsgY29sb3I6IzQxNDE0MTsgZm9udC1zaXplOjAuNzVyZW0gOyB9IC5leHBhbmRSb3d7IGJhY2tncm91bmQtY29sb3I6IzFmMWYxZjsgdGV4dC1hbGlnbjpyaWdodDsgY29sb3I6IzQxNDE0MTsgbWFyZ2luLWxlZnQ6NHB4OyBtYXJnaW4tcmlnaHQ6MnB4OyB9IGRpdi5lcnJvck1zZyB7IGJhY2tncm91bmQtY29sb3I6I2ZmZGRkZDsgYmFja2dyb3VuZC1pbWFnZTp1cmwoIi9pbWFnZXMvZXJyb3IucG5nIik7IGJhY2tncm91bmQtcG9zaXRpb246MTBweCBjZW50ZXI7IGJhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDsgYm9yZGVyOjFweCBzb2xpZDsgY29sb3I6I2QxMDAwYzsgZGlzcGxheTpub25lOyBmbG9hdDpsZWZ0OyB6LWluZGV4Ojk5OTk7IHBhZGRpbmc6MTVweCAxMHB4IDE1cHggNTBweDsgfSBkaXYuZW1haWxTZW50TXNnIHsgYmFja2dyb3VuZC1jb2xvcjojZWZmZmVmOyBiYWNrZ3JvdW5kLWltYWdlOnVybCgiL2ltYWdlcy9hY2NlcHRlZC5wbmciKTsgYmFja2dyb3VuZC1wb3NpdGlvbjoxMHB4IGNlbnRlcjsgYmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0OyBib3JkZXI6MXB4IHNvbGlkICMwOTc3MDA7IGNvbG9yOiMwOTc3MDA7IGRpc3BsYXk6bm9uZTsgZmxvYXQ6bGVmdDsgcGFkZGluZzoxNXB4IDEwcHggMTVweCA1MHB4OyB9IGRpdi50b3lvdEltYWdlIHsgY29sb3I6IzY2NjY2NjsgZm9udC1zaXplOjMuNDM4cmVtIDsgZm9udC13ZWlnaHQ6Ym9sZDsgaGVpZ2h0OjI1MHB4OyBsZWZ0OjA7IG9wYWNpdHk6MC44OyBvdmVyZmxvdzpoaWRkZW47IHBhZGRpbmc6NXB4IDEwcHg7IHBvc2l0aW9uOmFic29sdXRlOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgd2lkdGg6MzgwcHg7IHotaW5kZXg6ODsgfSBkaXYudG95b3RJbWFnZSBwIHsgcGFkZGluZzo1cHg7IG1hcmdpbjowOyBmb250LXNpemU6MC45MzhyZW0gOyBjb2xvcjojQTZBNkE2OyB0ZXh0LWRlY29yYXRpb246bm9uZTsgfSBkaXYubmV3Q2FyTWFpbkJveCB7IHdpZHRoOjk2MHB4OyBtYXJnaW46MCBhdXRvOyB9IGRpdi5uZXdDYXJNYWluQm94MiB7IG1hcmdpbi10b3A6NXB4OyB9IGRpdi5uZXdDYXJNYWluQm94MyB7IHdpZHRoOjk2MHB4OyBoZWlnaHQ6MTJweDsgZmxvYXQ6bGVmdDsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9ib3g5NzBfdG9wLnBuZykgbGVmdCB0b3Agbm8tcmVwZWF0OyB9IC5zdG9ja0ltZ1N0eWxleyB3aWR0aDoxMDAlOyBoZWlnaHQ6NTAlOyBmb250LXNpemU6Mi4yNXJlbSA7IHRleHQtYWxpZ246Y2VudGVyOyBmb250LXdlaWdodDpib2xkOyBwYWRkaW5nLXRvcDozMHB4OyBwb3NpdGlvbjphYnNvbHV0ZTsgbWFyZ2luOjBweDsgY29sb3I6IzMwMzAzMDsgfSAjZmlyc3RTbGlkZXJJbWcgeyBiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7IHBvc2l0aW9uOmFic29sdXRlOyB6LWluZGV4OjE1OyB3aWR0aDoxMDAlOyBoZWlnaHQ6YXV0bzsgb3BhY2l0eToxOyBwYWRkaW5nOjA7IG1hcmdpbjowOyB9ICNmaXJzdFNsaWRlckltZyAucGxhY2Vob2xkZXJ7IGJvcmRlcjoxcHggc29saWQgI0ZGRjsgd2lkdGg6NjQwcHg7IGhlaWdodDo0ODBweDsgfSAjZmlyc3RTbGlkZXJJbWcgLnBsYWNlaG9sZGVyIC5pbm5lci1wbGFjZWhvbGRlcnsgcG9zaXRpb246YWJzb2x1dGU7IHdpZHRoOjEwMCU7IGhlaWdodDoxMDAlOyBvdmVyZmxvdzpoaWRkZW47IGRpc3BsYXk6ZmxleDsgdG9wOjA7IGJvdHRvbTowOyBsZWZ0OjA7IHJpZ2h0OjA7IH0gI2ZpcnN0U2xpZGVySW1nIElNR3sgaGVpZ2h0OmF1dG87IG1heC13aWR0aDo2NDBweDsgbWF4LWhlaWdodDo0ODBweDsgd2lkdGg6YXV0bzsgbWFyZ2luOmF1dG87IH0gI2ZpcnN0U2xpZGVySW1nLmZhZGUtb3V0eyB2aXNpYmlsaXR5OmhpZGRlbjsgb3BhY2l0eTowOyAtd2Via2l0LXRyYW5zaXRpb246dmlzaWJpbGl0eSAxbXMgMC4yNXMsIG9wYWNpdHkgMC4yNXMgbGluZWFyOyAtbW96LXRyYW5zaXRpb246dmlzaWJpbGl0eSAxbXMgMC4yNXMsIG9wYWNpdHkgMC4yNXMgbGluZWFyOyAtby10cmFuc2l0aW9uOnZpc2liaWxpdHkgMW1zIDAuMjVzLCBvcGFjaXR5IDAuMjVzIGxpbmVhcjsgdHJhbnNpdGlvbjp2aXNpYmlsaXR5IDFtcyAwLjI1cywgb3BhY2l0eSAwLjI1cyBsaW5lYXI7IH0gI3NvY2lhbFRpbWVsaW5leyB3aWR0aDo5NjBweDsgaGVpZ2h0OmF1dG87IH0gZGl2Lm5ld0Nhck1haW5Cb3g0IHsgd2lkdGg6OTQwcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL2JveDk3MF9taWQucG5nKSBsZWZ0IHRvcCByZXBlYXQteTsgcGFkZGluZzoxMHB4IDE1cHg7IH0gZGl2Lm5ld0NhclRpdGxlQm94IGgxeyB3aWR0aDo5NDBweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IGZvbnQtc2l6ZToxLjg3NXJlbSA7IGNvbG9yOiMzMDMwMzA7IHRleHQtZGVjb3JhdGlvbjpub25lOyB9IC5ncmF5Ym94IHsgYmFja2dyb3VuZC1jb2xvcjojRUZFRkVGOyBib3JkZXI6MXB4IHNvbGlkICNGRkZGRkY7IGJvcmRlci1yYWRpdXM6M3B4OyBjb2xvcjojMDAwOyBmb250LXNpemU6MC44MTNyZW0gOyBsaW5lLWhlaWdodDpub3JtYWw7IHBhZGRpbmc6MTBweCAwIDEwcHggMDsgdGV4dC1hbGlnbjpjZW50ZXI7IHRleHQtc2hhZG93OjAgMXB4IDAgI0ZGRkZGRjsgfSAuZ3JheWJveCA+IHNwYW4geyBjb2xvcjojMDAwOyBmb250LXNpemU6MC44MTNyZW0gOyB0ZXh0LWFsaWduOmNlbnRlcjsgfSAuZ3JheWJveCAuc21hbGx0ZXh0IHsgYm9yZGVyLWJvdHRvbToxcHggc29saWQgI0NDQ0NDQzsgYm9yZGVyLXRvcDoxcHggc29saWQgI0NDQ0NDQzsgY29sb3I6IzMzMzMzMzsgZm9udC1zaXplOjAuNjg4cmVtIDsgbWFyZ2luLXRvcDoxMHB4OyBwYWRkaW5nOjEwcHg7IH0gLmdyYXlib3ggaDIgeyBjb2xvcjojMDAwOyBmb250LXNpemU6MS41cmVtIDsgZm9udC13ZWlnaHQ6Ym9sZDsgbWFyZ2luOjVweCBhdXRvOyB9IC5leHRlbmRlZFBob25leyBwb3NpdGlvbjpmaXhlZDsgYmFja2dyb3VuZC1jb2xvcjojNjc2NzY3OyBjb2xvcjojZGRkOyBwYWRkaW5nOjAuNmVtOyBib3JkZXItcmFkaXVzOjVweDsgei1pbmRleDo5OTk5OyBmb250LXNpemU6MC44NzVyZW0gOyB0ZXh0LWFsaWduOmxlZnQ7IH0gLmV4dGVuZGVkUGhvbmUgbGFiZWx7IGRpc3BsYXk6aW5saW5lLWJsb2NrOyB9IC5leHRlbmRlZFBob25lIHNwYW57IGNvbG9yOiNmZmY7IH0gLnBob25lTm90ZXsgZm9udC1zaXplOjAuNjg4cmVtIDsgcGFkZGluZy10b3A6N3B4OyB9IC5hZGRlZFNlYXJjaExpbmtzRGl2RXggeyBjb2xvcjojNDE0MTQxOyBmb250LXNpemU6MXJlbSA7IHRleHQtYWxpZ246bGVmdDsgcGFkZGluZy1sZWZ0OjIwcHg7IHBhZGRpbmctdG9wOjMwcHg7IH0gLmFkZGVkU2VhcmNoTGlua3NEaXYgZGl2eyBwYWRkaW5nLWxlZnQ6MTBweDsgcGFkZGluZy10b3A6MTBweDsgd2lkdGg6MjAwcHg7IGZsb2F0OmxlZnQ7IH0gLmFkZGVkU2VhcmNoTGlua3NEaXYgdWx7IG1hcmdpbi1ib3R0b206MjBweDsgZm9udC1zaXplOjAuODEzcmVtIDsgbWFyZ2luLXRvcDo1cHg7IH0gLmFkZGVkU2VhcmNoTGlua3NEaXYgdWwgbGl7IGxpc3Qtc3R5bGU6bm9uZSBvdXRzaWRlIG5vbmU7IGRpc3BsYXk6YmxvY2s7IG1hcmdpbi1sZWZ0OjQwcHg7IHRleHQtaW5kZW50Oi0xMHB4OyB9IC5hZGRlZFNlYXJjaExpbmtzRGl2IHVsIGxpIGF7IGNvbG9yOiMzMzM7IHRleHQtZGVjb3JhdGlvbjpub25lOyBjdXJzb3I6cG9pbnRlcjsgfSAuYWRkZWRTZWFyY2hMaW5rc0RpdiB1bCBsaSBheyBiYWNrZ3JvdW5kOnVybCgiL2ltYWdlcy9hcnJvd19yZWQucG5nIikgbm8tcmVwZWF0IHNjcm9sbCAwIDEwcHggdHJhbnNwYXJlbnQ7IGNvbG9yOiMzMzMzMzM7IG1hcmdpbi1yaWdodDoycHg7IHBhZGRpbmc6NnB4IDEwcHg7IHRleHQtZGVjb3JhdGlvbjpub25lOyB9IC5hZGRlZFNlYXJjaExpbmtzRGl2IHVsIGxpIGE6aG92ZXIgeyB0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lOyB9IC5jb21wYXJlTGlua3MgYXsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IH0gLmNvbXBhcmVMaW5rcyBhOmhvdmVyeyB0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lOyB9IC5lbWFpbEJvZHksIC5lbWFpbFN1YmplY3R7IGRpc3BsYXk6bm9uZTsgfSAjY29udGFjdHVzIGRpdi5lcnJvck1zZyB7IGJhY2tncm91bmQtY29sb3I6I2ZmZGRkZDsgYmFja2dyb3VuZC1pbWFnZTp1cmwoIi9pbWFnZXMvZXJyb3IucG5nIik7IGJhY2tncm91bmQtcG9zaXRpb246MTBweCBjZW50ZXI7IGJhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDsgYm9yZGVyOjFweCBzb2xpZDsgY29sb3I6I2QxMDAwYzsgZGlzcGxheTpub25lOyBmbG9hdDpsZWZ0OyBwYWRkaW5nOjE1cHggMTBweCAxNXB4IDUwcHg7IH0gI2NvbnRhY3R1cyBkaXYuZW1haWxTZW50TXNnIHsgYmFja2dyb3VuZC1jb2xvcjojZWZmZmVmOyBiYWNrZ3JvdW5kLWltYWdlOnVybCgiL2ltYWdlcy9hY2NlcHRlZC5wbmciKTsgYmFja2dyb3VuZC1wb3NpdGlvbjoxMHB4IGNlbnRlcjsgYmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0OyBib3JkZXI6MXB4IHNvbGlkICMwOTc3MDA7IGNvbG9yOiMwOTc3MDA7IGRpc3BsYXk6bm9uZTsgZmxvYXQ6bGVmdDsgcGFkZGluZzoxNXB4IDEwcHggMTVweCA1MHB4OyB9ICNQYWdlRmluYW5jZSAuc3RlcEFjdGl2ZSB7IGJhY2tncm91bmQ6dXJsKCIvaW1hZ2VzLzFfaG92ZXIucG5nIikgbm8tcmVwZWF0IHNjcm9sbCBsZWZ0IHRvcCB0cmFuc3BhcmVudDsgY29sb3I6IzA1MTQxZjsgZmxvYXQ6bGVmdDsgZm9udC1zaXplOjIuMjVyZW0gOyBmb250LXdlaWdodDpib2xkOyBoZWlnaHQ6NDZweDsgbGluZS1oZWlnaHQ6NDZweDsgdGV4dC1hbGlnbjpjZW50ZXI7IHRleHQtZGVjb3JhdGlvbjpub25lOyB3aWR0aDo0NnB4OyBtYXJnaW4tbGVmdDoxMHB4OyB9ICNQYWdlRmluYW5jZSAuc3RlcFVuYWN0aXZlIHsgYmFja2dyb3VuZDp1cmwoIi9pbWFnZXMvMV9yb3VuZC5wbmciKSBuby1yZXBlYXQgc2Nyb2xsIGxlZnQgdG9wIHRyYW5zcGFyZW50OyBjb2xvcjojRkZGRkZGOyBmbG9hdDpsZWZ0OyBmb250LXNpemU6Mi4yNXJlbSA7IGZvbnQtd2VpZ2h0OmJvbGQ7IGhlaWdodDo0NnB4OyBsaW5lLWhlaWdodDo0NnB4OyB0ZXh0LWFsaWduOmNlbnRlcjsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IHdpZHRoOjQ2cHg7IG1hcmdpbi1sZWZ0OjEwcHg7IH0gI1BhZ2VGaW5hbmNlIC50ZXh0MSBzcGFuIHsgY29sb3I6IzQzNDM0MzsgZmxvYXQ6bGVmdDsgZm9udC1zaXplOjEuODc1cmVtIDsgZm9udC13ZWlnaHQ6Ym9sZDsgaGVpZ2h0OjQ2cHg7IGxpbmUtaGVpZ2h0OjQ2cHg7IHBhZGRpbmc6MDsgdGV4dC1hbGlnbjpsZWZ0OyB0ZXh0LWRlY29yYXRpb246bm9uZTsgdGV4dC1zaGFkb3c6MXB4IDFweCAxcHggI0YzRjNGMzsgd2lkdGg6YXV0bzsgfSAjUGFnZUZpbmFuY2UgZGl2LmVtYWlsU2VudE1zZyB7IGJhY2tncm91bmQtY29sb3I6I0I4RkZCODsgYmFja2dyb3VuZC1pbWFnZTp1cmwoIi9pbWFnZXMvYWNjZXB0ZWQucG5nIik7IGJhY2tncm91bmQtcG9zaXRpb246MTBweCBjZW50ZXI7IGJhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDsgYm9yZGVyOjFweCBzb2xpZCAjMEI5NjAwOyBjb2xvcjojMEI5NjAwOyBkaXNwbGF5Om5vbmU7IGZsb2F0OmxlZnQ7IHBhZGRpbmc6MTVweCAxMHB4IDE1cHggNTBweDsgfSAub3RoZXJfbGlua3MgYXsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IH0gLm90aGVyX2xpbmtzIGE6aG92ZXJ7IHRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7IH0gLnByb21vdGlvblNpZGVCdG5BIHsgYmFja2dyb3VuZDojMDUxNDFmOyBjb2xvcjojZmZmZmZmOyBkaXNwbGF5OmJsb2NrO2ZvbnQtc2l6ZToxLjI1cmVtIDt3aWR0aDpmaXQtY29udGVudDtoZWlnaHQ6NTNweDtwYWRkaW5nOjJweCAxNXB4IDBweCAxNXB4O2N1cnNvcjpwb2ludGVyO2xpbmUtaGVpZ2h0OjUzcHg7dGV4dC1kZWNvcmF0aW9uOm5vbmU7YmFja2dyb3VuZC1zaXplOjEwMCU7IC1tb3otYm9yZGVyLXJhZGl1cy10b3BsZWZ0OjNweDsgLW1vei1ib3JkZXItcmFkaXVzLXRvcHJpZ2h0OjNweDsgLW1vei1ib3JkZXItcmFkaXVzLWJvdHRvbXJpZ2h0OjBweDsgLW1vei1ib3JkZXItcmFkaXVzLWJvdHRvbWxlZnQ6MDsgLXdlYmtpdC1ib3JkZXItdG9wLWxlZnQtcmFkaXVzOjNweDsgLXdlYmtpdC1ib3JkZXItdG9wLXJpZ2h0LXJhZGl1czozcHg7IC13ZWJraXQtYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6MDsgLXdlYmtpdC1ib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjA7IGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOjNweDsgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czozcHg7IGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOnB4OyBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjBweDsgdHJhbnNmb3JtOnJvdGF0ZSgtOTBkZWcpOyAtbXMtdHJhbnNmb3JtOnJvdGF0ZSgtOTBkZWcpOyAtd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoLTkwZGVnKTsgfSAuZm9vdGVyTXVsdGlBZGRyZXNzMyB7IGJvcmRlci1yaWdodDoxcHggIzkxOTE5MSBzb2xpZDsgcGFkZGluZy1yaWdodDo3MHB4OyBtYXJnaW4tbGVmdDoxNHB4OyBjb2xvcjojNTc1NzU3OyB9IC5mb290ZXJNdWx0aUFkZHJlc3MyIHsgYm9yZGVyLXJpZ2h0OjFweCAjOTE5MTkxIHNvbGlkOyBwYWRkaW5nLXJpZ2h0OjE1MHB4OyBtYXJnaW4tbGVmdDo5M3B4OyBjb2xvcjojNTc1NzU3OyB9IC5mb290ZXJNdWx0aUFkZHJlc3MxIHsgbWFyZ2luLWxlZnQ6MzQ1cHg7IGNvbG9yOiM1NzU3NTc7IH0gLnNtYWxsQWN0aW9uV2Vic2l0ZUNvbG9yIHsgYmFja2dyb3VuZCA6dXJsKCIvaW1hZ2VzL2JsX2JnMi5wbmciKSBsZWZ0IHRvcCByZXBlYXQteDsgY29sb3I6cmdiKDUsMjAsMzEpOyB9IC5zbWFsbEFjdGlvbldlYnNpdGVDb2xvcjpob3ZlcnsgYmFja2dyb3VuZCA6dXJsKCIvaW1hZ2VzL21lbnUxMF9iZy5wbmciKSBsZWZ0IHRvcCByZXBlYXQteDsgY29sb3I6I0ZGRjsgfSAubmF2IGxpIGEudG9wX2xpbmsuaXNCb2xkLCAubmF2IGxpIGEuaXNCb2xkeyBmb250LXdlaWdodDpib2xkOyB9ICNtYWluSGVhZGVyIGRpdi5ib3gxNVBhZGRpbmd7IHBhZGRpbmctdG9wOjE1cHg7IH0gLm5hdiAubm90Q2xpY2thYmxleyBjdXJzb3I6ZGVmYXVsdCAhaW1wb3J0YW50OyB9IC5TMTAwUGVyY2VudFdpZHRoeyB3aWR0aDoxMDAlOyB9ICNmaWx0ZXJNYWluQm94IHsgY29sb3I6IzAwMDsgfSAjZmlsdGVyTWFpbkJveCAuZmlsdGVyU3BhbiwgI2ZpbHRlck1haW5Cb3ggLmZpbHRlckNoZWNrLCAjZmlsdGVyTWFpbkJveCAucmFkaW9Tb3J0IHsgY3Vyc29yOnBvaW50ZXI7IH0gLmJDb2RlU3R5bGUgeyBmbG9hdDpsZWZ0OyB3aWR0aDoyNSU7IGZvbnQtc2l6ZTowLjhlbTsgcGFkZGluZy10b3A6MTVweDsgcGFkZGluZy1ib3R0b206MTVweDsgYmFja2dyb3VuZC1jb2xvcjo7IH0gLmJDb2RlU29ydCB7IGZsb2F0OmxlZnQ7IHdpZHRoOjE2JTsgYmFja2dyb3VuZC1jb2xvcjo7IGZvbnQtc2l6ZTowLjhlbTsgcGFkZGluZy10b3A6MTVweDsgcGFkZGluZy1ib3R0b206MTVweDsgfSAuYkNvZGVTb3J0IC5iQ29kZUhlYWRpbmcsIC5iQ29kZVN0eWxlIC5iQ29kZUhlYWRpbmcgeyBtYXJnaW4tYm90dG9tOjVweDsgZm9udC13ZWlnaHQ6Ym9sZDsgcGFkZGluZy1sZWZ0OjJweDsgfSAucGFnZV9uYW1lNDJ7d2lkdGg6OTQwcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBwYWRkaW5nOjAgMHB4IDEwcHggMjFweDsgbGluZS1oZWlnaHQ6MzBweDsgZm9udC1zaXplOjEuNXJlbSA7IGNvbG9yOiMwNTE0MWY7fSAucGFnZV9uYW1lNDIgaDIge2ZvbnQtc2l6ZToxLjVyZW0gOyBjb2xvcjojMDUxNDFmO2ZvbnQtd2VpZ2h0Om5vcm1hbDtib3JkZXI6bm9uZTt9IC5wYWdlX25hbWU0MiBoMi5ub3RmaXJzdCB7Zm9udC1zaXplOjEuNXJlbSA7IGNvbG9yOiMwNTE0MWY7Zm9udC13ZWlnaHQ6bm9ybWFsO21hcmdpbi10b3A6MHB4O3BhZGRpbmctdG9wOjQwcHg7Ym9yZGVyLXRvcDoxcHggI2NjY2NjYyBzb2xpZDt3aWR0aDo5MjBweDt9ICNmaWx0ZXJNYWluQm94Lm5ld2NhcnNzdHlsZTJ7IC1tb3otYm9yZGVyLXJhZGl1czowcHg7IC13ZWJraXQtYm9yZGVyLXJhZGl1czowcHg7IC1raHRtbC1ib3JkZXItcmFkaXVzOjBweDsgYm9yZGVyLXJhZGl1czowcHg7IGJvcmRlcjpub25lOyBib3JkZXItdG9wOjFweCBzb2xpZCAjYmViZWJlOyBib3JkZXItYm90dG9tOjFweCBzb2xpZCAjYmViZWJlOyB3aWR0aDo5NTVweDsgbGVmdDozcHg7IH0gZGl2LmltZGV2IGxhYmVseyBmb250LXdlaWdodDpib2xkOyBwYWRkaW5nLXRvcDoxMHB4OyB9IGRpdi5pbWRldiBkaXZ7IGJhY2tncm91bmQ6bm9uZTsgYmFja2dyb3VuZC1jb2xvcjojRDlEOUQ5OyBwYWRkaW5nOjEwcHggMHB4IDEwcHggMHB4OyB3aWR0aDoxMDAlOyBmb250LXNpemU6MC44MTNyZW0gOyB9IGRpdi5pbWRldl9pbm5lciB7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgbWFyZ2luLWxlZnQ6MzBweDsgd2lkdGg6OTAlICFpbXBvcnRhbnQ7IH0gdWwucXVpeiB7cGFkZGluZzoxMHB4IDAgMTBweCAyMHB4OyBsaXN0LXN0eWxlLXR5cGU6bm9uZTsgaGVpZ2h0OjE3NXB4O30gdWwucXVpeiBsaSB7cGFkZGluZzoxMHB4O30gdWwucXVpeiBsaSBpbnB1dCB7bWFyZ2luLXJpZ2h0OjEwcHg7fSAubmV3cy1ib2R5IHt3aWR0aDoxMDAlO3RleHQtYWxpZ246cmlnaHQ7Zm9udC1zaXplOjAuODEzcmVtIDtjb2xvcjojMTkxOTE5O3BhZGRpbmctcmlnaHQ6MTVweDttYXJnaW4tdG9wOi0yMHB4O3BhZGRpbmctYm90dG9tOjEwcHg7fSAubmV3cy1hbGwtdGV4dCB7Y29sb3I6IzE5MTkxOTt9ICNuZXdzQ29udGFpbmVyIC50ZXh0X2JveDExIGltZyB7IG1heC13aWR0aDo2NDBweDsgZGlzcGxheTpibG9jazsgbWFyZ2luOjVweCBhdXRvOyB9ICNuZXdzQ29udGFpbmVyIC51c2VkeyBjbGVhcjpib3RoOyB9IC5ob21lX2FjdGlvbl9hZGogeyB3aWR0aDo5NjFweDsgfSAuaG9tZV9hY3Rpb25fYWRqMiB7IHdpZHRoOjczMHB4IWltcG9ydGFudDsgaGVpZ2h0OjYwMHB4IWltcG9ydGFudDsgfSAuaG9tZV9lbWFpbHsgd2lkdGg6MjMycHg7IG1hcmdpbi1sZWZ0OjVweDsgbWFyZ2luLWJvdHRvbTo1cHg7IH0gLndpZGdldF9tZW51X2FkajF7IGZvbnQtc2l6ZTowLjhlbTsgfSAud2lkZ2V0X21lbnVfYWRqMnsgZmxvYXQ6cmlnaHQ7cG9zaXRpb246cmVsYXRpdmU7dG9wOi0ycHg7IH0gLndpZGdldF9tZW51X2V4dGVuZGVkUGhvbmV7IGZvbnQtc2l6ZTowLjhlbTsgbWFyZ2luLWxlZnQ6MTA0cHg7IHRvcDoxMzJweDsgfSAud2lkZ2V0X21lbnVfYWRqM3sgZm9udC1zaXplOjAuOGVtO2NvbG9yOiM1NzU3NTc7cG9zaXRpb246cmVsYXRpdmU7bGVmdDotOHB4OyB9IC53aWRnZXRfbWVudV9hZGo0eyBwb3NpdGlvbjpyZWxhdGl2ZTsgZm9udC1zaXplOjAuOGVtOyBkaXNwbGF5OnRhYmxlOyBwYWRkaW5nLWJvdHRvbToxMHB4OyB9IC5waG9uZV90ZXh0LnJpZ2h0IHsgZmxvYXQ6bm9uZTsgaGVpZ2h0OmluaXRpYWw7IG1hcmdpbi1sZWZ0OmF1dG87IHdpZHRoOmluaGVyaXQ7IH0gLnBob25lX3RleHQgLnRlbCB7IG1hcmdpbi1sZWZ0OjEwcHg7IH0gLnBob25lX3RleHQgbGFiZWwgeyBkaXNwbGF5OmZsZXg7IGp1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuOyBtYXJnaW4tYm90dG9tOjRweDsgfSAud2lkZ2V0X21lbnVfYWRqNC5yaWdodCB7IHBhZGRpbmctbGVmdDoxMHB4OyB0ZXh0LWFsaWduOnJpZ2h0OyB9IC53aWRnZXRfbWVudV9hZGo0LmxlZnQgeyBwYWRkaW5nLXJpZ2h0OjEwcHg7IHdpZHRoOmluaGVyaXQ7IH0gLndpZGdldF9tZW51X2FkajZ7IGZvbnQtc2l6ZTowLjhlbTtwb3NpdGlvbjpyZWxhdGl2ZTtsZWZ0Oi0zcHg7Y29sb3I6IzU3NTc1NztjdXJzb3I6cG9pbnRlcjsgfSAud2lkZ2V0X2V4cHJlc3NfbWFpbF9waG9uZV90aXRsZXsgYm9yZGVyLWJvdHRvbToxcHggc29saWQgI2FhYTt0ZXh0LWFsaWduOiBjZW50ZXI7Zm9udC1zaXplOjEuNXJlbSA7IGZvbnQtd2VpZ2h0OmJvbGQ7IHBhZGRpbmctYm90dG9tOjhweDsgcGFkZGluZy10b3A6OHB4OyBjb2xvcjojMDUxNDFmOyB9IC53aWRnZXRfZXhwcmVzc19tYWlsX2FkajF7IHBhZGRpbmc6MTVweCAxMHB4OyBsaW5lLWhlaWdodDo2MHB4OyBmb250LXNpemU6MmVtOyBwYWRkaW5nOjE1cHggMTBweDt0ZXh0LWFsaWduOmNlbnRlcjsgfSAuYmFubmVyUG9wdXBDbG9zZXsgbGVmdDo3MTBweDsgcG9zaXRpb246cmVsYXRpdmU7IHdpZHRoOjE1cHg7IHRvcDoyMHB4OyBjdXJzb3I6cG9pbnRlcjsgfSAucHJpY2VOb3RlIHsgY29sb3I6Izc1NzU3NTsgZm9udC1zdHlsZTppdGFsaWM7IHRleHQtYWxpZ246anVzdGlmeTsgZGlzcGxheTpibG9jazsgcGFkZGluZy1yaWdodDoxMHB4OyBmb250LXNpemU6MC43NXJlbSAhaW1wb3J0YW50OyBtYXJnaW4tYm90dG9tOjE0cHg7IH0gLnN0YWNrZWREaXNjbGFpbWVyeyBkaXNwbGF5OmJsb2NrOyBtYXJnaW4tdG9wOjEwcHg7IH0gc3Bhbi5zdGFja2VkRGlzY2xhaW1lcjpiZWZvcmV7IGNvbnRlbnQ6IioqIjsgcG9zaXRpb246cmVsYXRpdmU7IGZvbnQtc2l6ZToxcmVtOyB9IC50b3ByaW50eyBkaXNwbGF5Om5vbmU7IH0gLnJlZmZlcmVuY2VDb250ZW50RGVtbywgLnJlZmZlcmVuY2VDb250ZW50Q2xlYXJhbmNleyBwYWRkaW5nOjMwcHggMjBweDsgYm9yZGVyLWJvdHRvbToxcHggc29saWQgI2NjYzsgbWFyZ2luLWJvdHRvbToyMHB4OyB9IC5ib3gyX2RldGFpbHNfdGV4dDIgLmNvbXBhcmVCdXR0b24sIC5ib3gyX2RldGFpbHNfdGV4dDIyIC5jb21wYXJlQnV0dG9ueyBwb3NpdGlvbjphYnNvbHV0ZTsgbWFyZ2luLXRvcDotMjBweDsgei1pbmRleDoxOyBsZWZ0Oi0zMHB4OyB9IC52ZHB7IGNsZWFyOmJvdGg7IHdpZHRoOjE2MHB4OyB9IC5jb21wYXJlQnV0dG9ueyB0cmFuc2l0aW9uOmJveC1zaGFkb3cgMC4yNXMgZWFzZS1vdXQgMHM7IHRyYW5zaXRpb246dHJhbnNmb3JtIDAuMjVzIGVhc2Utb3V0IDBzOyBkaXNwbGF5Om5vbmU7IH0gZGl2I3NsaWRlci1wcm8tMTIgeyBib3JkZXI6MXB4IHNvbGlkICNFQkVCRUI7IGJvcmRlci1yYWRpdXM6M3B4OyBiYWNrZ3JvdW5kOiNmZmY7IH0gI3NsaWRlclByb21vQWxlcnR7IGJvcmRlci1yYWRpdXM6M3B4IDNweCAwIDA7IH0gLnNsaWRlLXdyYXBwZXJ7IGJvcmRlci1yYWRpdXM6M3B4OyB9ICNzbGlkZWl0IGxhYmVsLm9wZW57IGJvcmRlci1yYWRpdXM6M3B4IDAgMCAzcHg7IH0gaW1nLmltYWdlIHsgYm9yZGVyLXJhZGl1czozcHg7IH0gLm5ld1ZkcFZpZXdlciAuY29tcGFyZUJ1dHRvbnsgcG9zaXRpb246YWJzb2x1dGU7IGJvdHRvbToycHg7IHJpZ2h0OjBweDsgei1pbmRleDoxMTExOyB9IC5saXZlQWxlcnRfbGlua3sgY29sb3I6I0ZGRkZGRjsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IGZvbnQtd2VpZ2h0OmJvbGQ7IH0gLmxpdmVBbGVydF9saW5rOmhvdmVyIHsgdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTsgfSAuYnV0dG9uLXRvYXN0cnsgYmFja2dyb3VuZDojRkZGO3BhZGRpbmc6NHB4IDIwcHg7Ym9yZGVyLXJhZGl1czo1cHg7IGNvbG9yOiNCRDM2MkYhaW1wb3J0YW50OyB9IC5idXR0b24tdG9hc3RyOmhvdmVyeyBiYWNrZ3JvdW5kOiMwMDA7IGNvbG9yOiNGRkY7IH0gLnJldHVyblBvcHVwX3N1Ym1pdCBzcGFuIHsgcG9zaXRpb246YWJzb2x1dGUhaW1wb3J0YW50OyB0b3A6NTAlIWltcG9ydGFudDsgZGlzcGxheTpibG9jayFpbXBvcnRhbnQ7IHRleHQtYWxpZ246Y2VudGVyIWltcG9ydGFudDsgbGVmdDowIWltcG9ydGFudDsgcmlnaHQ6MCFpbXBvcnRhbnQ7IHBhZGRpbmc6MCA4cHggMCA4cHghaW1wb3J0YW50OyBjdXJzb3I6cG9pbnRlciFpbXBvcnRhbnQ7IGZvbnQtc2l6ZTowLjg3NXJlbSAhaW1wb3J0YW50OyBtYXJnaW46MCFpbXBvcnRhbnQ7IGNvbG9yOiNGRkYhaW1wb3J0YW50OyBtYXJnaW4tdG9wOi05cHghaW1wb3J0YW50OyB9IHJldHVyblBvcHVwX3N1Ym1pdDpob3ZlciB7IGJhY2tncm91bmQtY29sb3I6IzBiYjFlMDsgY29sb3I6I2ZmZjsgfSAucmV0dXJuUG9wdXBfc3VibWl0IHsgZGlzcGxheTpibG9jazsgYm9yZGVyLXN0eWxlOnNvbGlkOyBib3JkZXItcmFkaXVzOjVweDsgbGVmdDoyMjhweDsgei1pbmRleDo1OyB3aWR0aDoyMjVweDsgaGVpZ2h0OjQwcHg7IHBvc2l0aW9uOmFic29sdXRlOyBiYWNrZ3JvdW5kLWNvbG9yOiMwNTE0MWY7IHRleHQtc2hhZG93OjFweCAxcHggIzAwMmI0NjsgY29sb3I6I2ZmZjsgYm9yZGVyLXdpZHRoOjFweDsgYm9yZGVyLWNvbG9yOiMzMzMzMzM7IGZvbnQtc2l6ZToxcmVtIDsgbGluZS1oZWlnaHQ6MTlweDsgZm9udC13ZWlnaHQ6bm9ybWFsOyB0ZXh0LWFsaWduOmNlbnRlcjsgYmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0OyB9ICNyZXR1cm5Qb3B1cEZvcm1fd3JhcHBlciB7IGRpc3BsYXk6YmxvY2s7IGJhY2tncm91bmQ6cmdiYSg2Niw2Niw2NiwxKTsgYm9yZGVyLXN0eWxlOm5vbmU7IGJvcmRlci1yYWRpdXM6MTFweDsgbGVmdDoyODBweDsgdG9wOjE1NXB4OyB6LWluZGV4OjI7IHdpZHRoOjUzMXB4OyBoZWlnaHQ6Mzg0cHg7IHBvc2l0aW9uOmFic29sdXRlOyB9ICNyZXR1cm5Qb3B1cFRpbHRleyB3aWR0aDozMzVweDsgZmxvYXQ6cmlnaHQ7IG1hcmdpbjoyMHB4OyBjb2xvcjojMDUxNDFmOyBmb250LXNpemU6MS4xMjVyZW0gOyB9ICNyZXR1cm5Qb3B1cFRpbHRlIC5ycF9tY3sgZm9udC1zaXplOjEuMTI1cmVtICFpbXBvcnRhbnQ7IH0gI3JldHVyblBvcHVwVGlsdGUyeyBjb2xvcjojRkZGOyBtYXJnaW46MjBweCAxMHB4IDIwcHggMjBweDsgcGFkZGluZzowOyB9IC5yZXR1cm5Qb3B1cEZvcm1fbGFiZWwgeyBmb250LXdlaWdodDpub3JtYWw7IGZvbnQtc2l6ZTowLjgxM3JlbSA7IGxpbmUtaGVpZ2h0OjE0cHg7IGNvbG9yOiNiZmJmYmY7IG1hcmdpbi1sZWZ0OjIwcHg7IGRpc3BsYXk6aW5saW5lLWJsb2NrOyB9IC5yZXR1cm5Qb3B1cEZvcm1fdGFibGUgdHIgdGR7IHBhZGRpbmctYm90dG9tOjEwcHg7IH0gLnJwX21jIHsgZm9udC1zaXplOjAuODc1cmVtICFpbXBvcnRhbnQ7IGNvbG9yOiMwNTE0MWYhaW1wb3J0YW50OyBwYWRkaW5nOjAhaW1wb3J0YW50OyBtYXJnaW46MCFpbXBvcnRhbnQ7IH0gI2V4aXRQb3B1cENvbnRhaW5lcnsgcGFkZGluZzowOyBiYWNrZ3JvdW5kLWltYWdlOm5vbmU7IH0gI2V4aXRfcG9wdXBfYWNjdXRyYWRlX2Zvcm17IGhlaWdodDozNHJlbTsgYmFja2dyb3VuZC1pbWFnZTp1cmwoL2ltYWdlcy9wb3B1cHMvdHJhZGVpbi1leGl0cG9wdXAtZnIucG5nKTsgYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1leGl0LXBvcHVwLWJnY29sLCAjZWVlKTsgfSBib2R5LkVOR0xJU0ggI2V4aXRfcG9wdXBfYWNjdXRyYWRlX2Zvcm17IGJhY2tncm91bmQtaW1hZ2U6dXJsKC9pbWFnZXMvcG9wdXBzL3RyYWRlaW4tZXhpdHBvcHVwLWVuLnBuZyk7IH0gLmV4aXRfcG9wdXBfYnV0dG9ucyBidXR0b24geyB3aWR0aDoxMXJlbTsgZm9udC13ZWlnaHQ6Ym9sZDsgfSAuZXhpdF9wb3B1cF90ZXh0X2xpbmVfMnsgbWFyZ2luLXRvcDoyN3B4OyBtYXJnaW4tYm90dG9tOjVweDsgfSAuZXhpdF9wb3B1cF90ZXh0X2xpbmVfM3sgZm9udC1zaXplOjEuNjI1cmVtIDsgbWFyZ2luLWJvdHRvbTozcHg7IGZvbnQtd2VpZ2h0OmJvbGRlcjsgfSAuZXhpdF9wb3B1cF90ZXh0X2xpbmVfNSB7IG1hcmdpbi1ib3R0b206MjBweDsgZm9udC1zaXplOjEuNjI1cmVtIDsgZm9udC13ZWlnaHQ6Ym9sZGVyOyBtYXJnaW4tdG9wOjYzcHg7IH0gI2V4aXRfcG9wdXBfYWNjdXRyYWRlX3RpdGxleyBoZWlnaHQ6OTVweDsgd2lkdGg6NTcwcHg7IG1hcmdpbi10b3A6MjBweDsgfSAjZXhpdF9wb3B1cF9hY2N1dHJhZGVfdGl0bGUuX0ZSRU5DSHsgYmFja2dyb3VuZC1pbWFnZTp1cmwoL2ltYWdlcy9wb3B1cHMvYWNjdS10cmFkZS1leGl0LXRpdGxlX2ZyLnBuZyk7IH0gI2V4aXRfcG9wdXBfYWNjdXRyYWRlX3RpdGxlLl9FTkdMSVNIeyBiYWNrZ3JvdW5kLWltYWdlOnVybCgvaW1hZ2VzL3BvcHVwcy9hY2N1LXRyYWRlLWV4aXQtdGl0bGVfZW4ucG5nKTsgfSAjYmVzdFByaWNlVmRwTmV3UG9wdXBDb250YWluZXJ7IHdpZHRoOjQ4MHB4OyBoZWlnaHQ6NTEwcHg7IH0gI2Jlc3RQcmljZVZkcE5ld1BvcHVwQ29udGFpbmVyIC5wb3B1cF9iZ3sgd2lkdGg6NDgwcHg7IGhlaWdodDo1MTVweDsgfSAjYmVzdFByaWNlVmRwTmV3UG9wdXBDb250YWluZXIgLnBvcHVwX2JneyBiYWNrZ3JvdW5kLWltYWdlOnVybCgnL2ltYWdlcy9wb3B1cHMvZnIvYmVzdFByaWNlTmV3VmRwLnBuZycpOyB9IC5wb3B1cF9iZ3sgYmFja2dyb3VuZC1jb2xvcjojZmZmZmZmOyBiYWNrZ3JvdW5kLXNpemU6NDgwcHggNTE1cHg7IH0gLnBvcHVwRm9ybSAuYXN0ZXJpc2t7IGNvbG9yOiNkMDA7IGZvbnQtd2VpZ2h0OmJvbGQ7IHBhZGRpbmc6MDsgZm9udC1zaXplOmluaGVyaXQ7IG1hcmdpbjowOyB9IC5wb3B1cEZvcm17IHotaW5kZXg6NTA7IHBvc2l0aW9uOmFic29sdXRlOyB0b3A6MjQ4cHg7IGhlaWdodDoyNDlweDsgbGVmdDo4MHB4OyBiYWNrZ3JvdW5kOnVybCgiL2ltYWdlcy9jb3Vwb24tZm9ybS1iZy0yLnBuZyIpIG5vLXJlcGVhdDsgd2lkdGg6MzM1cHg7IHBhZGRpbmc6MzBweDsgfSAucG9wdXBGb3JtVGl0bGV7IGhlaWdodDo0MHB4OyBtYXJnaW46OHB4OyBmb250LXNpemU6MC45MzhyZW0gOyBmb250LXdlaWdodDpib2xkOyB9IC5wb3B1cEZvcm1JbnB1dHMgdGQgeyBmb250LXNpemU6MC44NzVyZW0gOyB0ZXh0LWFsaWduOnJpZ2h0OyBwYWRkaW5nLXJpZ2h0OjEwcHg7IHBhZGRpbmctYm90dG9tOjNweDsgfSAucG9wdXBGb3JtIGlucHV0eyB3aWR0aDoyMTBweDsgfSAjYXNQdXJjaGFzZUludGVudHsgd2lkdGg6NjAwcHg7IHBhZGRpbmc6MzBweCAzMHB4OyBoZWlnaHQ6YXV0bzsgY29sb3I6IzAwMDsgYmFja2dyb3VuZC1jb2xvcjojZWVlOyB6LWluZGV4OjEwMDAwMjE7IH0gI3Byb21vRGlzY292ZXJCdXR0b257IH0gLm5ld1ZkcFZpZXdlciB7IHdpZHRoOjY0MHB4OyBoZWlnaHQ6NDgwcHg7IGZsb2F0OmxlZnQ7IG1hcmdpbi1sZWZ0OjIwcHg7IH0gLmxvY2F0aW9uLW5hbWVzIHsgcG9zaXRpb246c3RhdGljOyB9ICNNYWluTWVudV9ERUFMRVJTSElQUyA+IHVsLnN1YiA+IGxpID4gdWwgeyBwb3NpdGlvbjpzdGF0aWM7IH0gLmltZ19tZW51LnVwX21lbnUgdWwubmF2IHVsLnN1YiBsaSAubG9jYXRpb24tbmFtZXMgeyBtaW4td2lkdGg6MjAwcHg7IH0gI01haW5NZW51X0RFQUxFUlNISVBTIGxpLmxvY2F0aW9uLW5hbWVzIHsgbWluLXdpZHRoOjIwMHB4OyB9IC5sb2NhdGlvbi1uYW1lcywgLmxvY2F0aW9uLW5hbWVzIGxpIHsgbGlzdC1zdHlsZTpub25lOyB9IC5MMTAwIHsgbGVmdDoxMDAlOyB9IC5SMTAwIHsgcmlnaHQ6MTAwJTsgfSAubG9jYXRpb24tbmFtZXMgLmxvY2F0aW9uLWRldGFpbHMgeyBwb3NpdGlvbjphYnNvbHV0ZTsgdG9wOjA7IHBhZGRpbmc6MTRweDsgYm94LXNoYWRvdzowIDZweCAxMnB4IHJnYmEoMCwwLDAsLjE3NSk7IGRpc3BsYXk6bm9uZTsgYmFja2dyb3VuZC1jb2xvcjp3aGl0ZTsgbWluLXdpZHRoOjI5MHB4OyB9IC5sb2NhdGlvbi1uYW1lcyAubG9jYXRpb24tZGV0YWlscyA+IC50aXRsZSB7IG1hcmdpbi1ib3R0b206MWVtOyBmb250LXNpemU6aW5pdGlhbDsgY29sb3I6IzAwMDAwMDsgfSAubG9jYXRpb24tbmFtZXMgLmxvY2F0aW9uLWRldGFpbHMgPiAubG9jYXRpb24tZGV0YWlscy1sb2dvID4gaW1nIHsgbWF4LXdpZHRoOjEwMCU7IG1hcmdpbi1ib3R0b206OHB4OyB9IGxpLmxvY2F0aW9uLW5hbWVzOmhvdmVyIC5sb2NhdGlvbi1kZXRhaWxzIHsgZGlzcGxheTpibG9jazsgfSBsaS5sb2NhdGlvbi1uYW1lczpob3ZlciAubWFpbm1lbnUtc3VibWVudSB7IG9wYWNpdHk6MTsgdmlzaWJpbGl0eTp2aXNpYmxlOyB9IC5sb2NhdGlvbi1uYW1lcyAubG9jYXRpb24tZGV0YWlscyAubG9jYXRpb24tZGV0YWlscy1sb2dvIHsgYm9yZGVyLWJvdHRvbToxcHggc29saWQgI2U1ZTVlNTsgbWFyZ2luLWJvdHRvbTo4cHg7IHRleHQtYWxpZ246Y2VudGVyOyB9ICNNYWluTWVudV9ERUFMRVJTSElQUyAubG9jYXRpb24tbmFtZXMgLm1haW5tZW51LXN1Ym1lbnUgLmxvY2F0aW9uLWRldGFpbHMgeyBtYXgtaGVpZ2h0OjYwdmg7IHBvc2l0aW9uOnN0YXRpYzsgfSAudXBfbWVudSB1bC5uYXYgLmxvY2F0aW9uLWRldGFpbHMtaW5mbyBhIHsgY29sb3I6IzA1MTQxZjsgcGFkZGluZzowOyB9IC5sb2NhdGlvbi1kZXRhaWxzLWluZm8gLmxvY2F0aW9uLXNwYWNpbmctbWwtMTMgeyBtYXJnaW4tbGVmdDoxMy40OXB4OyB9IC51cF9tZW51IHVsLm5hdiBsaS5kZXRhaWxzLWluZm8tbGluayBhIHsgZGlzcGxheTppbmxpbmUtYmxvY2s7IH0gLnVwX21lbnUgdWwubmF2IC5kZXRhaWxzLWluZm8tbGluazpob3ZlciBhIHsgY29sb3I6IzA1MTQxZjsgfSAjTWFpbk1lbnVfREVBTEVSU0hJUFMgPiB1bC5zdWIgPiBsaSA+IHVsIHsgbWF4LWhlaWdodDo2MHZoOyBvdmVyZmxvdy15OmF1dG87IG92ZXJmbG93LXg6aGlkZGVuOyB9IGJvZHkgLndyYXBwZXIgLnVwX21lbnUgLm5hdiA+IGxpOmhvdmVyIHVsLnN1YiBsaTpob3ZlciAuZGV0YWlscy1pbmZvLWxpbmsgbGk6aG92ZXIgYSB7IGRpc3BsYXk6aW5saW5lLWJsb2NrOyBiYWNrZ3JvdW5kLWltYWdlOm5vbmU7IGNvbG9yOiMwNTE0MWY7IGJhY2tncm91bmQtY29sb3I6I2ZmZmZmZjsgfSBsaS5kZXRhaWxzLWluZm8tbGluazpob3ZlciB7IGJhY2tncm91bmQtY29sb3I6I2ZmZmZmZjsgY29sb3I6IzA1MTQxZjsgfSAubG9jYXRpb24tZGV0YWlscy1pbmZvIHVsIGxpIHsgcGFkZGluZy10b3A6NHB4OyBwYWRkaW5nLWJvdHRvbTo0cHg7IGZvbnQtd2VpZ2h0OjIwMDsgZm9udC1zaXplOjAuODc1cmVtIDsgbWFyZ2luLWJvdHRvbTo1cHg7IH0gLmxvY2F0aW9uLWRldGFpbHMtaW5mbyA+IHVsID4gbGk6YmVmb3JlIHsgY29udGVudDoiICI7IGJvcmRlcjpzb2xpZDsgYm9yZGVyLXdpZHRoOjAgMnB4IDJweCAwOyBkaXNwbGF5OmlubGluZS1ibG9jazsgcGFkZGluZzoycHg7IGJvcmRlci1yYWRpdXM6MnB4OyB0cmFuc2Zvcm06cm90YXRlKC00NWRlZyk7IC13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgtNDVkZWcpOyBtYXJnaW4tcmlnaHQ6N3B4OyBtYXJnaW4tYm90dG9tOjFweDsgfSAjTWFpbk1lbnVfREVBTEVSU0hJUFMgdWwgeyBwYWRkaW5nOjA7IH0gQG1lZGlhIHByaW50eyAudG9wcmludHsgZGlzcGxheTpibG9jazt9IH0gLm1yLTE1IHsgbWFyZ2luLXJpZ2h0OjE1cHg7IH0gLm1sLTE1IHsgbWFyZ2luLWxlZnQ6MTVweDsgfSAubWwtNyB7IG1hcmdpbi1sZWZ0OjdweDsgfSBzcGFuLmFycm93IHsgYm9yZGVyOnNvbGlkOyBib3JkZXItd2lkdGg6MCAycHggMnB4IDA7IGRpc3BsYXk6aW5saW5lLWJsb2NrOyBwYWRkaW5nOjJweDsgYm9yZGVyLXJhZGl1czoxcHg7IHBvc2l0aW9uOnJlbGF0aXZlOyB0b3A6LTJweDsgfSBzcGFuLmFycm93LmFycm93LWxhcmdlIHsgYm9yZGVyLXdpZHRoOjAgM3B4IDNweCAwOyBwYWRkaW5nOjRweDsgYm9yZGVyLXJhZGl1czozcHg7IH0gc3Bhbi5hcnJvdy5hcnJvdy1yaWdodCB7IHRyYW5zZm9ybTpyb3RhdGUoLTQ1ZGVnKTsgLXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKC00NWRlZyk7IH0gc3Bhbi5hcnJvdy5hcnJvdy1sZWZ0IHsgdHJhbnNmb3JtOnJvdGF0ZSgxMzVkZWcpOyAtd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoMTM1ZGVnKTsgfSBzcGFuLmFycm93LmFycm93LXVwIHsgdHJhbnNmb3JtOnJvdGF0ZSgtMTM1ZGVnKTsgLXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKC0xMzVkZWcpOyB9IHNwYW4uYXJyb3cuYXJyb3ctZG93biB7IHRyYW5zZm9ybTpyb3RhdGUoNDVkZWcpOyAtd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoNDVkZWcpOyB9IC50b3BiYXIzYnRuV3JhcHsgYm9yZGVyLXJhZGl1czo1cHg7IGJhY2tncm91bmQtY29sb3I6IzA1MTQxZjsgYm9yZGVyOjJweCBzb2xpZCAjZmZmZmZmOyB2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7IGhlaWdodDo0MnB4OyBwYWRkaW5nOjAgMjBweDsgY29sb3I6I2ZmZmZmZjsgfSAudG9wYmFyM2J0bnsgZm9udC13ZWlnaHQ6Ym9sZDsgdHJhbnNpdGlvbjouMnM7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IHRleHQtdHJhbnNmb3JtOmNhcGl0YWxpemU7IGJvcmRlci1jb2xvcjp3aGl0ZTsgdGV4dC1hbGlnbjpjZW50ZXI7IGN1cnNvcjpwb2ludGVyOyBkaXNwbGF5OmJsb2NrOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgY29sb3I6aW5oZXJpdDsgfSAudHJhZGVJbkJhcl9idG57IGZvbnQtd2VpZ2h0OmJvbGQ7IGJvcmRlci1yYWRpdXM6NXB4OyB0ZXh0LXRyYW5zZm9ybTp2YXIoLS1jZXJ0LXR4dC10cmFuc2Zvcm0sIHZhcigtLXR4dC11cHBlcikpOyB0cmFuc2l0aW9uOi4yczsgYm9yZGVyOjJweCBzb2xpZCB0cmFuc3BhcmVudDsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6d2hpdGU7IGJvcmRlci1jb2xvcjp3aGl0ZTsgdGV4dC1hbGlnbjpjZW50ZXI7IGN1cnNvcjpwb2ludGVyOyBoZWlnaHQ6NTBweDsgYmFja2dyb3VuZC1jb2xvcjojMDUxNDFmOyBjb2xvcjogI2ZmZmZmZjsgYm9yZGVyOjJweCBzb2xpZCAjZmZmZmZmOyBtaW4td2lkdGg6MjAwcHg7IG1heC13aWR0aDoyMDBweDsgfSAudHJhZGVJbkJhcl9idG46aG92ZXIsLnRvcGJhcjNidG5XcmFwOmhvdmVyeyBiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmY7IGNvbG9yOiMwNTE0MWYhaW1wb3J0YW50OyB9ICNnUmF0aW5nTGFyZ2V7IGJhY2tncm91bmQ6I2ZmZmZmZjsgY29sb3I6IzAwMDAwMDsgYm9yZGVyOjFweCBzb2xpZCAjMDUxNDFmOyBmbG9hdDpsZWZ0OyBwYWRkaW5nOjVweCAwcHg7IG1hcmdpbi10b3A6NXB4OyBjdXJzb3I6cG9pbnRlcjsgYm9yZGVyLXJhZGl1czozcHg7IHRleHQtYWxpZ246Y2VudGVyOyB3aWR0aDoxNTBweDsgbWFyZ2luLWxlZnQ6MzBweDsgfSAjZ1JhdGluZ3sgY3Vyc29yOnBvaW50ZXI7IH0gLnRyYWRlSW5WaW5JbnB1dHsgaGVpZ2h0OjUwcHg7IGJvcmRlci1yYWRpdXM6NXB4OyB0ZXh0LWFsaWduOmNlbnRlcjsgYm94LXNpemluZzpib3JkZXItYm94OyB3aWR0aDoxMDAlOyBmb250LXNpemU6MXJlbSA7IGNvbG9yOiMzYzM4MzY7IGJvcmRlcjoycHggc29saWQgI2ZmZmZmZjsgfSAudHJhZGVJblZpbklucHV0OjpwbGFjZWhvbGRlcnsgZm9udC1zaXplOjFyZW0gOyBjb2xvcjojM2MzODM2OyB9IC50cmFkZUluT3JMYWJlbHsgbWF4LXdpZHRoOjI1cHg7IH0gI3RyYWRlSW5CYXJQb3B1cF9mb3JtVyAubml2TWFrZU1vZGVsU2VsZWN0Q29udGFpbmVyeyB3aWR0aDoxMDAlOyBwYWRkaW5nOjEycHg7IG1hcmdpbi10b3A6MTBweDsgZm9udC1zaXplOjFyZW0gOyB9ICN0cmFkZUluQmFyUG9wdXBfZm9ybVcgLm5pdk1ha2VNb2RlbFNlbGVjdENvbnRhaW5lciAubml2TWFrZU1vZGVsU2VsZWN0eyBkaXNwbGF5Om5vbmU7IH0gI3RyYWRlSW5CYXJQb3B1cF9mb3JtVyAubml2TWFrZU1vZGVsU2VsZWN0Q29udGFpbmVyIC5uaXZNYWtlTW9kZWxTZWxlY3RMYWJlbHsgZGlzcGxheTppbmxpbmUtYmxvY2s7IG1hcmdpbjowIDEycHg7IGN1cnNvcjpwb2ludGVyOyB9ICN0cmFkZUluQmFyUG9wdXBfZm9ybVcgLm5pdk1ha2VNb2RlbFNlbGVjdENvbnRhaW5lciAubml2TWFrZU1vZGVsU2VsZWN0OmNoZWNrZWQrbGFiZWx7IGJvcmRlci1ib3R0b206MnB4IHNvbGlkIGJsYWNrOyB9IC50cmFkaW5TZWxlY3RXeyBtaW4td2lkdGg6MjAwcHg7IG1heC13aWR0aDoyMDBweDsgfSAudHJhZGluU2VsZWN0Vy53aXRoVklOTWFrZXsgbWluLXdpZHRoOjE0MHB4OyBtYXgtd2lkdGg6MTQwcHg7IH0gLnRyYWRpblNlbGVjdFcud2l0aFZJTlllYXJ7IG1pbi13aWR0aDo4MHB4OyBtYXgtd2lkdGg6ODBweDsgfSAudHJhZGluSW5wdXRXeyBtaW4td2lkdGg6MjAwcHg7IG1heC13aWR0aDoyMDBweDsgfSAudHJhZGluU2VsZWN0QXsgcG9zaXRpb246cmVsYXRpdmU7IH0gLnRyYWRpblNlbGVjdEE6YWZ0ZXIgeyBjb250ZW50OiIgIjsgaGVpZ2h0OjA7IHdpZHRoOjA7IGJvcmRlci1sZWZ0OjVweCBzb2xpZCB0cmFuc3BhcmVudDsgYm9yZGVyLXJpZ2h0OjVweCBzb2xpZCB0cmFuc3BhcmVudDsgYm9yZGVyLXRvcDo1cHggc29saWQgIzAwMDAwMDsgcG9zaXRpb246YWJzb2x1dGU7IHJpZ2h0OjE0cHg7IHRvcDoxN3B4OyB0cmFuc2l0aW9uOmFsbCAwLjNzIGxpbmVhcjsgcG9pbnRlci1ldmVudHM6bm9uZTsgfSAudHJhZGluU2VsZWN0eyBjb2xvcjojM2MzODM2OyBib3JkZXI6MnB4IHNvbGlkICNmZmZmZmY7IGJvcmRlci1yYWRpdXM6NXB4OyBwYWRkaW5nOjEwcHggMTBweDsgZm9udC1zaXplOjFyZW0gOyBiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsMSk7IGJhY2tncm91bmQtcG9zaXRpb246OTUlIDUwJTsgd2lkdGg6MTAwJTsgLXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7IC1tb3otYXBwZWFyYW5jZTpub25lOyBwYWRkaW5nLXJpZ2h0OjI3cHg7IGhlaWdodDo1MHB4OyB9IC50cmFkaW5TZWxlY3Q6YWZ0ZXIgeyBjb250ZW50OiIgIjsgaGVpZ2h0OjA7IHdpZHRoOjA7IGJvcmRlci1sZWZ0OjVweCBzb2xpZCB0cmFuc3BhcmVudDsgYm9yZGVyLXJpZ2h0OjVweCBzb2xpZCB0cmFuc3BhcmVudDsgYm9yZGVyLXRvcDo1cHggc29saWQgIzAwMDAwMDsgcG9zaXRpb246YWJzb2x1dGU7IHJpZ2h0OjE0cHg7IHRvcDoxN3B4OyB0cmFuc2l0aW9uOmFsbCAwLjNzIGxpbmVhcjsgfSAubXVsdGlzZWxlY3RWZWhpY2xlT3B0aW9ucyBzcGFueyBmb250LXNpemU6MC45MzhyZW0gIWltcG9ydGFudDsgcGFkZGluZzowICFpbXBvcnRhbnQ7IG1hcmdpbjowICFpbXBvcnRhbnQ7IH0gI3RyYWRlSW5CYXJQb3B1cF9mb3JtVyAudHJhZGVJbkJhck11bHRpc2VsZWN0eyB3aWR0aDo1NjhweCFpbXBvcnRhbnQ7IGJvcmRlci1yYWRpdXM6MC4zcmVtIWltcG9ydGFudDsgYm9yZGVyLXdpZHRoOjFweCFpbXBvcnRhbnQ7IGJvcmRlci1yYWRpdXM6MC4zcmVtIWltcG9ydGFudDsgYm9yZGVyLWNvbG9yOiNhOWE5YTkhaW1wb3J0YW50OyB9IC51aS1tdWx0aXNlbGVjdC1tZW51LnRyYWRlSW5CYXJNdWx0aXNlbGVjdHsgbWluLXdpZHRoOjI3MnB4OyB6LWluZGV4OjEwMDAwMjA7IG1heC1oZWlnaHQ6MTIwcHg7IG92ZXJmbG93OnNjcm9sbDsgfSAudHJhZGVJbkJhckRlYWxlclN0ZXB7IHRleHQtYWxpZ246Y2VudGVyOyBtYXJnaW4tdG9wOjI1cHg7IH0gLnRyYWRlSW5CYXJEZWFsZXJTdGVwIC50cmFkZUluQmFyRGVhbGVyU3RlcE1ha2VNb2RlbFllYXJ7IGZvbnQtd2VpZ2h0OjcwMDsgfSAudHJhZGVJbkJhckRlYWxlclN0ZXAgc3BhbnsgbWFyZ2luOjAhaW1wb3J0YW50OyBmb250LXdlaWdodDo3MDAhaW1wb3J0YW50OyBjb2xvcjojMDAwMDAwIWltcG9ydGFudDsgfSBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6MTAyNHB4KSB7IC50cmFkaW5TZWxlY3RXIHsgbWluLXdpZHRoOmNhbGMoKDIwMHB4IC0gdmFyKC0tcykpIC0gdmFyKC0tcywgMC41cmVtKSk7IG1heC13aWR0aDpjYWxjKCgyMDBweCAtIHZhcigtLXMpKSAtIHZhcigtLXMsIDAuNXJlbSkpOyB9IH0gI2dvb2dsZVJldmlld3NGb290ZXJ7IG1hcmdpbjowIGF1dG87IGJhY2tncm91bmQtY29sb3I6I2ZmZjsgYm9yZGVyLXJhZGl1czo1cHg7IG1heC13aWR0aDo5NDBweDsgaGVpZ2h0OjI3NXB4OyB9IC5yZXZpZXctaXRlbSB7IGZsb2F0OmxlZnQ7IGhlaWdodDoxODVweDsgd2lkdGg6MTAwJTsgbWF4LXdpZHRoOjQ2MHB4OyBtYXJnaW4tcmlnaHQ6MTBweDsgYm9yZGVyLXRvcDo0cHggc29saWQgI0VCRUJFQjsgcGFkZGluZy10b3A6MTBweDsgfSAuZmlyc3RjaGFydXA6OmZpcnN0LWxldHRlcnsgdGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlOyB9IEkuaWNvbi1jb21wYXJlLTEsIHNwYW4uaWNvbi1jb21wYXJlLTF7IGNvbG9yOiMwNTE0MWY7IH0gSS5pY29uLWNvbXBhcmUtMTpob3Zlciwgc3Bhbi5pY29uLWNvbXBhcmUtMTpob3ZlcnsgY29sb3I6I2ZmZmZmZiAhaW1wb3J0YW50OyB0ZXh0LXNoYWRvdzojMDUxNDFmIDFweCAxcHgsICMwNTE0MWYgLTFweCAxcHgsICMwNTE0MWYgLTFweCAtMXB4LCAjMDUxNDFmIDFweCAtMXB4OyBib3JkZXItcmFkaXVzOjIwcHg7IGJhY2tncm91bmQtY29sb3I6IzA1MTQxZjsgfSAuZ1JhdGluZy1pY29uIGkgeyBmb250LXNpemU6MS4wNjNyZW0gOyB9IC5nUmF0aW5nLWljb24jZ1JhdGluZyB7IGRpc3BsYXk6ZmxleDsgYWxpZ24taXRlbXM6Y2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyOyB3aWR0aDo5MHB4OyBoZWlnaHQ6MjhweDsgYmFja2dyb3VuZC1jb2xvcjojMDUxNDFmOyBjb2xvcjp3aGl0ZTsgY29sb3I6I2ZmZmZmZjsgY29sb3I6I2ZmZmZmZjsgZ2FwOjdweDsgfSAuZ1JhdGluZy1pbWcjZ1JhdGluZyB7IGJhY2tncm91bmQtaW1hZ2U6dXJsKC9pbWFnZXMvZ3JhdGluZy5wbmcpOyBjb2xvcjojMzU2Q0YyOyB3aWR0aDo5NXB4OyBoZWlnaHQ6MjhweDsgcGFkZGluZzo0cHggMzFweCAxMHB4IDEwcHg7IG1hcmdpbi10b3A6MXB4OyB9ICNnUmF0aW5neyBib3gtc2l6aW5nOmJvcmRlci1ib3g7IGZvbnQtc2l6ZToxLjA2M3JlbSA7IGZvbnQtd2VpZ2h0OmJvbGQ7IGRpc3BsYXk6YmxvY2s7IH0gSU5QVVRbdHlwZT0idGV4dCJdLnZhbGlkaXR5LWVycm9uZW91c3sgYm9yZGVyOjFweCBzb2xpZCAjZGMzNTQ1OyBiYWNrZ3JvdW5kLWNvbG9yOiNmYWQ2ZGMgIWltcG9ydGFudDsgfSBJTlBVVFt0eXBlPSJ0ZWwiXS52YWxpZGl0eS1lcnJvbmVvdXN7IGJvcmRlcjoxcHggc29saWQgI2RjMzU0NTsgYmFja2dyb3VuZC1jb2xvcjojZmFkNmRjICFpbXBvcnRhbnQ7IH0gSU5QVVRbdHlwZT0iZW1haWwiXS52YWxpZGl0eS1lcnJvbmVvdXN7IGJvcmRlcjoxcHggc29saWQgI2RjMzU0NTsgYmFja2dyb3VuZC1jb2xvcjojZmFkNmRjICFpbXBvcnRhbnQ7IH0gSU5QVVRbdHlwZT0icGFzc3dvcmQiXS52YWxpZGl0eS1lcnJvbmVvdXN7IGJvcmRlcjoxcHggc29saWQgI2RjMzU0NTsgYmFja2dyb3VuZC1jb2xvcjojZmFkNmRjICFpbXBvcnRhbnQ7IH0gSDEuZGVmYXVsdHsgZm9udC1zaXplOjEuODc1cmVtIDsgY29sb3I6IzA1MTQxZjsgZm9udC13ZWlnaHQ6bm9ybWFsOyBjbGVhcjpib3RoOyBwYWRkaW5nOjAgMCAyNXB4IDA7IH0gSDEuZGVmYXVsdCBBeyB0ZXh0LWRlY29yYXRpb246bm9uZTsgfSBIMS5kZWZhdWx0IEkuaWNvbiwgSDEuZGVmYXVsdCBzcGFuLmljb24geyBib3JkZXItcmFkaXVzOjMwcHg7IHdpZHRoOjIzcHg7IGhlaWdodDoyOXB4OyBwYWRkaW5nLXRvcDo0cHg7IHBhZGRpbmctbGVmdDoxMHB4OyBmbG9hdDpsZWZ0OyBmb250LXNpemU6MS41NjNyZW0gOyBtYXJnaW4tcmlnaHQ6MTBweDsgYm9yZGVyOjFweCBzb2xpZCAjMDUxNDFmOyBjb2xvcjojMDUxNDFmOyBiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmY7IGJveC1zaXppbmc6Y29udGVudC1ib3g7IH0gSDEuZGVmYXVsdCBJLmljb24ubXVsdGlMaW5lSDEsIEgxLmRlZmF1bHQgc3Bhbi5pY29uLm11bHRpTGluZUgxeyBtYXJnaW4tdG9wOjEwcHg7IH0gSDEuZGVmYXVsdCBJLmljb24uc2luZ2xlTGluZUgxLCBIMS5kZWZhdWx0IHNwYW4uaWNvbi5zaW5nbGVMaW5lSDF7IG1hcmdpbi10b3A6MnB4OyB9IEgxLmRlZmF1bHQgPiBESVZ7IGRpc3BsYXk6dGFibGUtcm93OyB9IEgxLmRlZmF1bHQgPiBESVYgRElWOm50aC1jaGlsZCgxKXsgZm9udC13ZWlnaHQ6Ym9sZDsgfSBIMS5kZWZhdWx0ID4gRElWIERJVjpudGgtY2hpbGQoMil7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgY29sb3I6Izc1NzU3NTsgZm9udC1zaXplOjEuMTI1cmVtIDsgfSBIMS5kZWZhdWx0ID4gRElWIERJVjpudGgtY2hpbGQoMyl7IGZvbnQtc2l6ZTowLjhyZW07IGZvbnQtc2l6ZTowLjhyZW07IGNvbG9yOiNiYmI7IHBhZGRpbmctdG9wOjVweDsgfSBoMS5ja2VkaXRvci1kZWZhdWx0IHsgZm9udC13ZWlnaHQ6Ym9sZDsgZm9udC1zaXplOjIuMTI1cmVtIDsgcGFkZGluZzowIDAgMTVweCAwOyBjb2xvcjojMDUxNDFmOyB9IGgxLmNrZWRpdG9yLWRlZmF1bHQ6OmJlZm9yZSB7IGNvbnRlbnQ6IlxmMDU0IjsgZm9udC1mYW1pbHk6Rm9udEF3ZXNvbWU7IHdpZHRoOjI4cHg7IGhlaWdodDozNXB4OyBtYXJnaW4tcmlnaHQ6MTBweDsgcGFkZGluZzo0cHggMCAwIDExcHg7IGJvcmRlci1yYWRpdXM6NDFweDsgZm9udC1zaXplOjEuOTM4cmVtIDsgZmxvYXQ6bGVmdDsgYm9yZGVyOjFweCBzb2xpZCAjMDUxNDFmOyBjb2xvcjojMDUxNDFmOyBiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmY7IH0gSDIuZGVmYXVsdHsgZm9udC1zaXplOjEuNXJlbSA7IGNvbG9yOiMwNTE0MWY7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgY2xlYXI6Ym90aDsgcGFkZGluZzoxMHB4IDA7IG1hcmdpbi10b3A6MTBweDsgfSBIMi5kZWZhdWx0IEkuaWNvbiwgSDIuZGVmYXVsdCBzcGFuLmljb257IGJvcmRlci1yYWRpdXM6MzBweDsgd2lkdGg6MjBweDsgaGVpZ2h0OjI1cHg7IHBhZGRpbmctdG9wOjRweDsgcGFkZGluZy1sZWZ0OjlweDsgZmxvYXQ6bGVmdDsgZm9udC1zaXplOjEuMzc1cmVtIDsgbWFyZ2luLXJpZ2h0OjEwcHg7IGJvcmRlcjoxcHggc29saWQgIzA1MTQxZjsgY29sb3I6IzA1MTQxZjsgYmFja2dyb3VuZC1jb2xvcjojZmZmZmZmOyB9IEgyLmRlZmF1bHQgSS5pY29uLm11bHRpTGluZUgyLCBIMi5kZWZhdWx0IHNwYW4uaWNvbi5tdWx0aUxpbmVIMnsgbWFyZ2luLXRvcDo3cHg7IH0gSDIuZGVmYXVsdCBJLmljb24uc2luZ2xlTGluZUgyLCBIMi5kZWZhdWx0IHNwYW4uaWNvbi5zaW5nbGVMaW5lSDJ7IG1hcmdpbi10b3A6MHB4OyB9IEgyLmRlZmF1bHQgPiBESVZ7IGRpc3BsYXk6dGFibGUtcm93OyB9IEgyLmRlZmF1bHQgPiBESVYgRElWOm50aC1jaGlsZCgxKXsgZm9udC13ZWlnaHQ6Ym9sZDsgfSBIMi5kZWZhdWx0LmNyZWRzaWlVc2VkTWluSGVpZ2h0IC5UaXRsZVRleHQgeyB3aWR0aDo4MCU7IH0gSDIuZGVmYXVsdCA+IERJViBESVY6bnRoLWNoaWxkKDIpeyBmb250LXdlaWdodDpub3JtYWw7IGNvbG9yOiM3NTc1NzU7IGZvbnQtc2l6ZTowLjkzOHJlbSA7IH0gQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOjEzMDFweCkgeyBib2R5LmlzRnVsbFdpZHRoUGFnZS5pc1BhZ2VGdWxsV2lkdGhFbmFibGVkICNmaXJzdFNsaWRlckltZyAucGxhY2Vob2xkZXJ7IHdpZHRoOjgwMHB4OyBoZWlnaHQ6NjAwcHg7IH0gYm9keS5pc0Z1bGxXaWR0aFBhZ2UuaXNQYWdlRnVsbFdpZHRoRW5hYmxlZCAjZmlyc3RTbGlkZXJJbWcgSU1HeyBtYXgtd2lkdGg6ODAwcHg7IG1heC1oZWlnaHQ6NjAwcHg7IH0gQk9EWS5pc0Z1bGxXaWR0aFBhZ2UuaXNQYWdlRnVsbFdpZHRoRW5hYmxlZCBIMS5kZWZhdWx0IHsgfSBCT0RZLmlzRnVsbFdpZHRoUGFnZS5pc1BhZ2VGdWxsV2lkdGhFbmFibGVkIEgxLmRlZmF1bHQgPiBESVYgRElWOm50aC1jaGlsZCgyKXsgZm9udC1zaXplOjEuNDM4cmVtIDsgfSBCT0RZLmlzRnVsbFdpZHRoUGFnZS5pc1BhZ2VGdWxsV2lkdGhFbmFibGVkIEgxLmRlZmF1bHQgSS5pY29uLCBCT0RZLmlzRnVsbFdpZHRoUGFnZS5pc1BhZ2VGdWxsV2lkdGhFbmFibGVkIEgxLmRlZmF1bHQgc3Bhbi5pY29uIHsgd2lkdGg6MjhweDsgaGVpZ2h0OjM1cHg7IGZvbnQtc2l6ZToxLjkzOHJlbSA7IHBhZGRpbmctbGVmdDoxMXB4OyBib3JkZXItcmFkaXVzOjQxcHg7IH0gQk9EWS5pc0Z1bGxXaWR0aFBhZ2UuaXNQYWdlRnVsbFdpZHRoRW5hYmxlZCBIMS5kZWZhdWx0IEkuaWNvbi5tdWx0aUxpbmVIMSwgQk9EWS5pc0Z1bGxXaWR0aFBhZ2UuaXNQYWdlRnVsbFdpZHRoRW5hYmxlZCBIMS5kZWZhdWx0IHNwYW4uaWNvbi5tdWx0aUxpbmVIMXsgbWFyZ2luLXRvcDoxMXB4OyB9IEJPRFkuaXNGdWxsV2lkdGhQYWdlLmlzUGFnZUZ1bGxXaWR0aEVuYWJsZWQgSDEuZGVmYXVsdCBJLmljb24uc2luZ2xlTGluZUgxLCBCT0RZLmlzRnVsbFdpZHRoUGFnZS5pc1BhZ2VGdWxsV2lkdGhFbmFibGVkIEgxLmRlZmF1bHQgc3Bhbi5pY29uLnNpbmdsZUxpbmVIMXsgbWFyZ2luLXRvcDoxcHg7IH0gQk9EWS5pc0Z1bGxXaWR0aFBhZ2UuaXNQYWdlRnVsbFdpZHRoRW5hYmxlZCBIMi5kZWZhdWx0IHsgZm9udC1zaXplOjEuODc1cmVtIDsgfSBCT0RZLmlzRnVsbFdpZHRoUGFnZS5pc1BhZ2VGdWxsV2lkdGhFbmFibGVkIEgyLmRlZmF1bHQgPiBESVYgRElWOm50aC1jaGlsZCgyKXsgZm9udC1zaXplOjEuMTg4cmVtIDsgfSBCT0RZLmlzRnVsbFdpZHRoUGFnZS5pc1BhZ2VGdWxsV2lkdGhFbmFibGVkIEgyLmRlZmF1bHQuY3JlZHNpaVVzZWRNaW5IZWlnaHQgLlRpdGxlVGV4dCB7IHdpZHRoOjkwJTsgfSBCT0RZLmlzRnVsbFdpZHRoUGFnZS5pc1BhZ2VGdWxsV2lkdGhFbmFibGVkIEgyLmRlZmF1bHQgSS5pY29uLm11bHRpTGluZUgyLCBCT0RZLmlzRnVsbFdpZHRoUGFnZS5pc1BhZ2VGdWxsV2lkdGhFbmFibGVkIEgyLmRlZmF1bHQgc3Bhbi5pY29uLm11bHRpTGluZUgyeyBtYXJnaW4tdG9wOjExcHg7IH0gQk9EWS5pc0Z1bGxXaWR0aFBhZ2UuaXNQYWdlRnVsbFdpZHRoRW5hYmxlZCBIMi5kZWZhdWx0IEkuaWNvbi5zaW5nbGVMaW5lSDIsIEJPRFkuaXNGdWxsV2lkdGhQYWdlLmlzUGFnZUZ1bGxXaWR0aEVuYWJsZWQgSDIuZGVmYXVsdCBzcGFuLmljb24uc2luZ2xlTGluZUgyeyBtYXJnaW4tdG9wOjRweDsgfSB9ICNjaXR5VGl0bGUge2NvbG9yOiMwNTE0MWY7fSAubWFpbl9sZWZ0X2JveCB7IGNvbG9yOiMwNTE0MWY7IH0gLmRpdlRhYmxlIHsgZGlzcGxheTp0YWJsZTsgfSAuZGl2VGFibGUuYWxpZ24tY2VudGVyIHsgbWFyZ2luOjAgYXV0bzsgfSAuZGl2VGFibGUgLmZvcm1zX2JveDIyLCAuZGl2VGFibGUgZm9ybVtuYW1lPSJzZW5kRW1haWxGb3JtIl0geyB3aWR0aDo5NDBweDsgfSAuZGl2VGFibGUgLnRleHQzMCB7IHdpZHRoOjEwMCU7IH0gLnNlcnZpY2UtdGl0bGUgeyBtYXJnaW4tdG9wOjIwcHg7IH0gLmZ1bGxXaWR0aEZvcm0gLmZvcm1zX2JveDIyIHsgd2lkdGg6MTAwJTsgbWFyZ2luLWxlZnQ6MDsgbWFyZ2luLXJpZ2h0OjA7IGJveC1zaXppbmc6Ym9yZGVyLWJveDsgfSAuZnVsbFdpZHRoRm9ybSAudGV4dDMwIHsgd2lkdGg6MTAwJTsgfSAuZm9ybS1ncm91cCB7IG1hcmdpbi1ib3R0b206MTVweDsgfSAuaW5saW5lLWZvcm0tZ3JvdXAgeyBkaXNwbGF5OmlubGluZS1ibG9jazsgfSAuZm9ybS1ncm91cCBsYWJlbCB7IGRpc3BsYXk6aW5saW5lLWJsb2NrOyBtYXgtd2lkdGg6MTAwJTsgbWFyZ2luLWJvdHRvbTo1cHg7IGZvbnQtd2VpZ2h0OjcwMDsgfSAuZGl2U2VhcmNoTXNnIHsgZm9udC1zaXplOjAuOXJlbTsgbWFyZ2luOjIwcHggMCAwIDA7IHBhZGRpbmc6MTVweDsgYmFja2dyb3VuZC1jb2xvcjojZjdmN2Y3OyBib3JkZXItcmFkaXVzOjVweDsgY2xlYXI6Ym90aDsgfSAuY3JlZHNpaU5ldyB7IGRpc3BsYXk6YmxvY2s7IG1heC13aWR0aDo0NzBweDsgbWluLXdpZHRoOjMwMHB4OyB3aWR0aDoxMDAlOyBjdXJzb3I6cG9pbnRlcjsgb3ZlcmZsb3c6aGlkZGVuOyBoZWlnaHQ6YXV0bzsgcG9zaXRpb246YWJzb2x1dGU7IHRvcDowOyByaWdodDowOyB9IC5jcmVkc2lpTmV3VkRQIHsgZGlzcGxheTpibG9jazsgbWF4LXdpZHRoOjM1MHB4OyBtaW4td2lkdGg6MzAwcHg7IHdpZHRoOjEwMCU7IGN1cnNvcjpwb2ludGVyOyBvdmVyZmxvdzpoaWRkZW47IGhlaWdodDphdXRvOyBwb3NpdGlvbjpyZWxhdGl2ZTsgdG9wOjA7IHJpZ2h0OjA7IH0gLmNyZWRzaWlVc2VkTWluSGVpZ2h0IHsgbWluLWhlaWdodDoxMzBweDsgfSAuY3JlZHNpaUZpbmFuY2UgeyBkaXNwbGF5OmJsb2NrOyBtYXgtd2lkdGg6OTYwcHg7IG1pbi13aWR0aDozMDBweDsgd2lkdGg6MTAwJTsgY3Vyc29yOnBvaW50ZXI7IG92ZXJmbG93OmhpZGRlbjsgcG9zaXRpb246cmVsYXRpdmU7IGhlaWdodDoxMjVweDsgbWFyZ2luLXRvcDoxNXB4OyB9IC5jcmVkc2lpRmluYW5jZSAuY3JlZHNpaS13aWRnZXQtY29udGFpbmVyeyBtYXgtd2lkdGg6MTAwJSFpbXBvcnRhbnQ7IH0gLmNyZWRzaWlGaW5hbmNlTWVudSB7IGRpc3BsYXk6YmxvY2s7IG1heC13aWR0aDozNDVweDsgbWluLXdpZHRoOjMwMHB4OyB3aWR0aDoxMDAlOyBjdXJzb3I6cG9pbnRlcjsgb3ZlcmZsb3c6aGlkZGVuOyBoZWlnaHQ6YXV0bzsgcG9zaXRpb246cmVsYXRpdmU7IHRvcDowOyByaWdodDowOyB9IC5jcmVkc2lpRGl2IC5jcmVkc2lpRmluYW5jZU1lbnUgeyBtYXgtd2lkdGg6Mzc1cHg7IH0gLmNyZWRzaWlGaW5hbmNlTWVudSAuY3JlZHNpaS13aWRnZXR7IGJvcmRlcjowOyB9IC5wcm9tby1jYXJkIHsgcG9zaXRpb246cmVsYXRpdmU7IGhlaWdodDphdXRvOyBtYXJnaW4tYm90dG9tOjEwcHg7IGJhY2tncm91bmQtY29sb3I6I2YxZjFmMTsgcGFkZGluZzoyMHB4OyBvdmVyZmxvdzpoaWRkZW47IH0gLnByb21vLWJvZHkgLnBpY19ib3gyIHsgbWluLWhlaWdodDoxMzBweDsgfSAucHJvbW8taG92ZXIgeyBwb3NpdGlvbjphYnNvbHV0ZTsgbGVmdDowOyB0b3A6MDsgd2lkdGg6MTAwJTsgaGVpZ2h0OjEwMCU7IC13ZWJraXQtdHJhbnNpdGlvbjphbGwgMC4zczsgLW1vei10cmFuc2l0aW9uOmFsbCAwLjNzOyAtbXMtdHJhbnNpdGlvbjphbGwgMC4zczsgLW8tdHJhbnNpdGlvbjphbGwgMC4zczsgdHJhbnNpdGlvbjphbGwgMC4zczsgb3BhY2l0eTowOyB9IC5wcm9tby1ib2R5OmhvdmVyIC5wcm9tby1ob3ZlciB7IG9wYWNpdHk6MTsgfSAucHJvbW8tYm9keTpob3ZlciAucHJvbW8taW5mbyB7IHRyYW5zZm9ybTp0cmFuc2xhdGVZKC01MCUpIHNjYWxlKDEsMSk7IH0gLnByb21vLW1hc2sgeyBwb3NpdGlvbjphYnNvbHV0ZTsgdG9wOjA7IGxlZnQ6MDsgd2lkdGg6MTAwJTsgaGVpZ2h0OjEwMCU7IGJhY2tncm91bmQ6cmdiYSgwLDAsMCwwLjUpOyB9IC5wcm9tby1pbmZvIHsgcG9zaXRpb246YWJzb2x1dGU7IGxlZnQ6MDsgcmlnaHQ6MDsgdG9wOjUwJTsgd2lkdGg6MzUlOyBtYXJnaW46YXV0bzsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjI1cHg7IC1tb3otYm9yZGVyLXJhZGl1czoyNXB4OyBib3JkZXItcmFkaXVzOjI1cHg7IC13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTE1MCUpIHNjYWxlKDAsMCk7IC1tb3otdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTE1MCUpIHNjYWxlKDAsMCk7IC1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMTUwJSkgc2NhbGUoMCwwKTsgLW8tdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTE1MCUpIHNjYWxlKDAsMCk7IHRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xNTAlKSBzY2FsZSgwLDApOyAtd2Via2l0LWJveC1zaGFkb3c6MCAwIDEwcHggNXB4IHJiZ2EoMCwwLDAsMC4yKTsgLW1vei1ib3gtc2hhZG93OjAgMCAxMHB4IDVweCByYmdhKDAsMCwwLDAuMik7IGJveC1zaGFkb3c6MCAwIDEwcHggNXB4IHJiZ2EoMCwwLDAsMC4yKTsgLXdlYmtpdC10cmFuc2l0aW9uOmFsbCAwLjNzOyAtbW96LXRyYW5zaXRpb246YWxsIDAuM3M7IC1tcy10cmFuc2l0aW9uOmFsbCAwLjNzOyAtby10cmFuc2l0aW9uOmFsbCAwLjNzOyB0cmFuc2l0aW9uOmFsbCAwLjNzOyB9IC5mb3JtLWVuZCB7IGRpc3BsYXk6ZmxleDsganVzdGlmeS1jb250ZW50OmNlbnRlcjsgYWxpZ24taXRlbXM6Y2VudGVyOyB9IC5mb3JtLWVuZCAuYnRuLXdyYXBwZXIgeyBtYXJnaW46MCBhdXRvOyB9IC5mb3JtLWVuZCAuZW1wdHktc3BhY2UgeyBtYXJnaW46YXV0bzsgfSAuZm9ybS1lbmQgLnByb21vLWJ0biB7IHBvc2l0aW9uOmluaXRpYWw7IH0gLmZvcm0tZW5kIC5wcmludCB7IG1hcmdpbi1sZWZ0OmF1dG87IHdpZHRoOmluaXRpYWw7IH0gLnByb21vLWJ0biB7IHBhZGRpbmc6MTBweCAxMHB4IDEwcHggMTBweDsgd2lkdGg6MTAwJTsgYmFja2dyb3VuZC1jb2xvcjp3aGl0ZTsgYm9yZGVyOjFweCBzb2xpZDsgdGV4dC10cmFuc2Zvcm06dmFyKC0tY2VydC10eHQtdHJhbnNmb3JtLCB2YXIoLS10eHQtdXBwZXIpKTsgZm9udC13ZWlnaHQ6bm9ybWFsOyBwb3NpdGlvbjphYnNvbHV0ZTsgdGV4dC1hbGlnbjpjZW50ZXI7IHRleHQtZGVjb3JhdGlvbjpub25lOyBib3JkZXItY29sb3I6dmFyKC0tcHJvbW8tYnRuLXRleHQtY29sb3IpOyBjb2xvcjp2YXIoLS1wcm9tby1idG4tdGV4dC1jb2xvcik7IGJhY2tncm91bmQtY29sb3I6dmFyKC0tcHJvbW8tYnRuLWNvbG9yKTsgYm9yZGVyLXJhZGl1czp2YXIoLS1wcm9tby1idG4tYm9yZGVyLXJhZGl1cyk7IHRyYW5zaXRpb246MC4yNXM7IH0gLnByb21vcyB7IGJhY2tncm91bmQ6I2YxZjFmMTsgYm9yZGVyLXJhZGl1czo1cHg7IGJveC1zaGFkb3c6MCAwIDEwcHggMXB4IHJnYmEoMCwwLDAsMC4yKTsgcG9zaXRpb246cmVsYXRpdmU7IGN1cnNvcjpkZWZhdWx0OyBtYXJnaW46MTJweCAxMHB4OyBkaXNwbGF5OiBncmlkOyBncmlkLXJvdzpzcGFuIDg7IGdyaWQtY29sdW1uOnNwYW4gMTsgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOnN1YmdyaWQ7IGdyaWQtdGVtcGxhdGUtcm93czpzdWJncmlkOyB9IC5wcm9tb3MgLmhlYWRlciB7IGdyaWQtYXJlYTpoZWFkZXI7IH0gI3NlcnZpY2UgLnByb21vcyAucHJvbW8tY29udGVudHsgZGlzcGxheTpibG9jazsgZ3JpZC1yb3c6YXV0bzsgfSAucHJvbW9zIC5wcm9tby1jb250ZW50IHsgZ3JpZC1hcmVhOmNvbnRlbnQ7IGRpc3BsYXk6Z3JpZDsgZ3JpZC10ZW1wbGF0ZS1yb3dzOnN1YmdyaWQ7IGdyaWQtcm93OjIgLyA3OyB9IC5wcm9tb3MgLnByb21vLWZvb3RlciB7IGdyaWQtYXJlYTpmb290ZXI7IHBhZGRpbmc6MCAxNXB4IDE1cHggMTVweDsgfSAucHJvbW9zOmhvdmVyIC5wcm9tby1idG4sIC5wcm9tby1idG46aG92ZXIgeyBjb2xvcjp2YXIoLS1wcm9tby1idG4taG92ZXItdGV4dC1jb2xvcik7IGJhY2tncm91bmQtY29sb3I6dmFyKC0tcHJvbW8tYnRuLWhvdmVyLWJnLWNvbG9yKTsgYm9yZGVyLWNvbG9yOnZhcigtLXByb21vLWJ0bi1ob3Zlci10ZXh0LWNvbG9yKTsgfSAucHJvbW9zIC5wcm9tby1idG4geyB3aWR0aDppbmhlcml0OyBwb3NpdGlvbjppbml0aWFsOyBkaXNwbGF5OmJsb2NrOyBwYWRkaW5nOjE1cHggNDVweDsgfSAucHJvbW9zLnByb21vLXNtYWxsIC5wcm9tby1idG4geyBwYWRkaW5nOjEwcHggMjVweDsgfSAucHJvbW8tYnJlYWsgeyBib3JkZXItdG9wOjFweCBzb2xpZCAjYWJhYmFiOyBwYWRkaW5nLXRvcDoxMHB4OyBtYXJnaW46MTVweCAwOyB9IC5wcm9tby1pbWFnZSwgLnByb21vLWRldGFpbHMtaW1hZ2UgeyBvdmVyZmxvdzpoaWRkZW47IC13ZWJraXQtYm9yZGVyLXJhZGl1czo1cHggNXB4IDAgMDsgLW1vei1ib3JkZXItcmFkaXVzOjVweCA1cHggMCAwOyBib3JkZXItcmFkaXVzOjVweCA1cHggMCAwOyBkaXNwbGF5OmZsZXg7IGFsaWduLWl0ZW1zOmNlbnRlcjsgYmFja2dyb3VuZC1zaXplOmNvbnRhaW47IGJhY2tncm91bmQtcG9zaXRpb246Y2VudGVyOyBiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7IGFzcGVjdC1yYXRpbzp2YXIoLS1wcm9tby1pbWctcmF0aW8sIG5vbmUpOyB9IC5wcm9tby1kZXRhaWxzLWltYWdleyB3aWR0aDoxMDAlOyB9IC5wcm9tb3M6aG92ZXIgLnByb21vLWltYWdlIGltZyB7IC13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKDEuMSk7IC1tb3otdHJhbnNmb3JtOnNjYWxlKDEuMSk7IC1tcy10cmFuc2Zvcm06c2NhbGUoMS4xKTsgLW8tdHJhbnNmb3JtOnNjYWxlKDEuMSk7IHRyYW5zZm9ybTpzY2FsZSgxLjEpOyB9IC5wcm9tby1pbWFnZSBpbWcgeyBtYXgtd2lkdGg6MTAwJTsgdHJhbnNpdGlvbjp0cmFuc2Zvcm0gMXM7IGRpc3BsYXk6dGFibGUtY2VsbDsgbWFyZ2luOjAgYXV0bzsgfSAucHJvbW8tYm9keSB7IHBhZGRpbmc6MTVweDsgcG9zaXRpb246cmVsYXRpdmU7IH0gLnByb21vLWJvZHkuZ3JpZCB7IGRpc3BsYXk6Z3JpZDsgaGVpZ2h0OjEwMCU7IGdyaWQtdGVtcGxhdGUtcm93czoxZnIgM2ZyOyB9IC5wcm9tby1ib2R5LmdyaWQgLnByb21vLWNhcHRpb24uaGVhZGVyIHsgZGlzcGxheTpncmlkOyBncmlkLXRlbXBsYXRlLXJvd3M6MWZyIGF1dG87IH0gLnByb21vLWNvbnRlbnQucGFkZGVkIHsgcGFkZGluZzoxNXB4OyB9IC5wcm9tby1kZXNjIHsgZGlzcGxheTpub25lOyB9IC5wcm9tby10aXRsZSB7IGZvbnQtc2l6ZToxLjVyZW0gOyBkaXNwbGF5OmJsb2NrOyBmb250LXdlaWdodDo2MDA7IGNvbG9yOiMzMzMzMzM7IG1pbi1oZWlnaHQ6NzhweDsgfSAucHJvbW8tbWVkaXVtIC5wcm9tby10aXRsZSB7IG1pbi1oZWlnaHQ6ODdweDsgfSAucHJvbW8tc21hbGwgLnByb21vLXRpdGxlIHsgZm9udC1zaXplOjEuMjVyZW0gOyB9IC5wcm9tby1jYXB0aW9uIHsgY29sb3I6IzMzMzMzMzsgfSAucHJvbW8tY2FwdGlvbjpub3QoOmxhc3QtY2hpbGQpIHsgbWFyZ2luLWJvdHRvbToxMHB4OyB9IC5wcm9tby1vZmZlciAucHJvbW8tdGl0bGUgeyBtaW4taGVpZ2h0OjA7IH0gLnByb21vLXN1YmNhcHRpb24geyBtYXJnaW4tdG9wOjVweDsgZm9udC1zaXplOjAuODc1cmVtOyB9IC5wcm9tby1zdWJjYXB0aW9uLnN1YmhlYWRpbmcuLW1oIHsgbWluLWhlaWdodDozMXB4OyB9IC5wcm9tby1zdWJjYXB0aW9uLmRlc2NyaXB0aW9uLi1taCB7IG1pbi1oZWlnaHQ6NDhweDsgfSAucHJvbW8tZGlzbGNhaW1lciB7IGZvbnQtc2l6ZTowLjc1cmVtOyB9IC5wcm9tby1saW5rcyB7IGRpc3BsYXk6ZmxleDsganVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47IGFsaWduLWl0ZW1zOmNlbnRlcjsgfSAucHJvbW8tbGluay1pdGVtIC5wcmludCB7IHdpZHRoOmF1dG87IHRleHQtYWxpZ246cmlnaHQ7IH0gLnByb21vcy1jb250YWluZXIuZ3JpZCB7IHBvc2l0aW9uOnJlbGF0aXZlOyBkaXNwbGF5OmdyaWQ7IH0gLnByb21vcy1jb250YWluZXIgLmZhLWFycm93LWRvd24tdG8tbGluZSB7IGZvbnQtc2l6ZToycmVtOyBjb2xvcjojMDAwMDAwOyBwb3NpdGlvbjphYnNvbHV0ZTsgbGVmdDo1MCU7IHRvcDo1MCU7IGJhY2tncm91bmQ6I2ZmZmZmZjsgcGFkZGluZzo2cHg7IGJvcmRlci1yYWRpdXM6NXB4OyBib3gtc2hhZG93OjAgMCAxMHB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMik7IHRyYW5zaXRpb246YWxsIDAuMjVzIGVhc2Utb3V0OyB9IC5wcm9tb3MtY29udGFpbmVyLmdyaWQucHJvbW8tbWVkaXVtIHsgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOnJlcGVhdCgyLCAxZnIpOyB9IC5wcm9tb3MtY29udGFpbmVyLmdyaWQucHJvbW8tc21hbGwgeyBncmlkLXRlbXBsYXRlLWNvbHVtbnM6cmVwZWF0KDMsIDFmcik7IH0gLnByb21vcy1jb250YWluZXIuZ3JpZC5jb2xsYXBzZSB7IGhlaWdodDoxNDJweDsgb3ZlcmZsb3c6aGlkZGVuOyB9IC5wcm9tb3MtY29udGFpbmVyLmdyaWQuY29sbGFwc2U6OmJlZm9yZSB7IGNvbnRlbnQ6IiI7IHBvc2l0aW9uOmFic29sdXRlOyBoZWlnaHQ6MTAwJTsgei1pbmRleDoxMDsgbGVmdDoxMHB4OyByaWdodDoxMHB4OyB0b3A6MTBweDsgYm9yZGVyLXJhZGl1czo1cHggNXB4IDAgMDsgYmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQoMGRlZywgcmdiKDAgMCAwIC8gMzAlKSAwJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwKSAxMDAlKSB9IC5wcm9tb3MtY29udGFpbmVyLmdyaWQuY29sbGFwc2U6aG92ZXI6OmJlZm9yZSB7IGJhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KDBkZWcsIHJnYigxMzggMTM4IDEzOCAvIDMwJSkgMCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMCkgMTAwJSk7IGN1cnNvcjpwb2ludGVyOyB9IC5wcm9tb3MtY29udGFpbmVyLmdyaWQuY29sbGFwc2U6aG92ZXIgLmZhLWFycm93LWRvd24tdG8tbGluZSB7IHRvcDo1NSU7IGNvbG9yOiM4MzgzODM7IH0gLmJhbm5lci1mb3JtIHsgcG9zaXRpb246cmVsYXRpdmU7IGRpc3BsYXk6dGFibGU7IG1hcmdpbjowIGF1dG87IH0gLmJhbm5lci1mb3JtIC5NYWluQm94TGF5ZXIgeyBwb3NpdGlvbjphYnNvbHV0ZTsgei1pbmRleDoxMDsgbGVmdDowOyByaWdodDowOyB0b3A6MDsgZGlzcGxheTp0YWJsZS1jZWxsOyBoZWlnaHQ6MTAwJTsgfSAuYmFubmVyLWZvcm0tYm94IHsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjVweDsgLW1vei1ib3JkZXItcmFkaXVzOjVweDsgYm9yZGVyLXJhZGl1czo1cHg7IHBvc2l0aW9uOmFic29sdXRlOyByaWdodDowOyBtYXgtd2lkdGg6MzUwcHg7IHdpZHRoOjEwMCU7IG1hcmdpbi10b3A6MzVweDsgfSBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6MTMwMXB4KSB7IC5NYWluQm94TGF5ZXIgLmJhbm5lci1mb3JtLWJveCB7IHRvcDo1MCU7IC13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTUwJSk7IC1tb3otdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTUwJSk7IC1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtNTAlKTsgLW8tdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTUwJSk7IHRyYW5zZm9ybTp0cmFuc2xhdGVZKC01MCUpOyBtYXJnaW4tdG9wOjA7IH0gfSBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6MTMwMXB4KSB7IC5iYW5uZXItZm9ybSAuYmFubmVyLWZvcm0tYm94IHsgcGFkZGluZzoxNXB4OyBtYXgtd2lkdGg6MjcwcHg7IGZvbnQtc2l6ZTowLjgxM3JlbSA7IH0gLmJhbm5lci1mb3JtICNiYW5uZXJGb3JtIC5mb3JtLWNvbnRyb2wgeyBwYWRkaW5nOjRweCA4cHg7IGhlaWdodDozMHB4OyBtYXJnaW4tYm90dG9tOjEycHg7IH0gLmJhbm5lci1mb3JtIC5iYW5uZXItZm9ybS10aXRsZSB7IGZvbnQtc2l6ZToxNXB0OyB9IC5iYW5uZXItZm9ybSAuYmFubmVyLWZvcm0tc3VidGl0bGUgeyBmb250LXNpemU6MTFwdDsgfSAuYmFubmVyLWZvcm0gLmJ0bi5iYW5uZXItYnRuIHsgcGFkZGluZzo0cHggMTJweDsgfSB9IC5vdGhlckxvZ29NZW51Q29udGFpbmVyeyBmbG9hdDpsZWZ0OyB9IC5vdGhlckxvZ29NZW51Q29udGFpbmVyUmlnaHR7IGZsb2F0OnJpZ2h0OyB9IC5vdGhlckxvZ29NZW51SW1hZ2V7IG1heC13aWR0aDoyNTBweDsgbWF4LWhlaWdodDoxMDBweDsgfSAuY3RhYm94LS13cmFwcGVyIHsgY2xlYXI6Ym90aDsgcGFkZGluZzowLjc1cmVtIDA7IGJhY2tncm91bmQ6I2ZmZmZmZjsgfSAuY3RhYm94LS10YWJsZSB7IHdpZHRoOjg1JSFpbXBvcnRhbnQ7IG1heC13aWR0aDoxMjAwcHg7IG1hcmdpbjphdXRvOyBib3JkZXItc3BhY2luZzoxcmVtOyBib3JkZXItY29sbGFwc2U6dW5zZXQ7IH0gLmN0YWJveC0tY2VsbCB7IHdpZHRoOjI1JTsgdHJhbnNpdGlvbjphbGwgMC4ycyBsaW5lYXI7IH0gLmN0YWJveC0tY2VsbDpub3QoW29uY2xpY2s9JyddKTpob3ZlciB7IGN1cnNvcjpwb2ludGVyOyB9IC5jdGFib3gtLWNlbGwuY3RhYm94LS1jZWxsX18xIHsgd2lkdGg6MTAwJTsgfSAuY3RhYm94LS1jZWxsLmN0YWJveC0tY2VsbF9fMiB7IHdpZHRoOjQ4MHB4OyB9IC5jdGFib3gtLWNlbGwuY3RhYm94LS1jZWxsX18zIHsgd2lkdGg6MzMlOyB9IC5jdGFib3gtLWNvbnRhaW5lciB7IHBhZGRpbmc6MXJlbTsgfSAuY3RhYm94LS1jb250YWluZXIgLmN0YWJveC0taWNvbiB7IGZvbnQtc2l6ZToxLjU2M3JlbSA7IH0gLmN0YWJveC0tY29udGFpbmVyIC5jdGFib3gtLWljb24uY3RhYm94LS1pY29uX190b3AgeyBwYWRkaW5nLWJvdHRvbToxMHB4OyB9IC5jdGFib3gtLWNvbnRhaW5lciAuY3RhYm94LS1pY29uLmN0YWJveC0taWNvbl9fbGVmdCB7IGZsb2F0OmxlZnQ7IH0gLmN0YWJveC0taWNvbl9fbGVmdCB+IC5jdGFib3gtLXRpdGxlLCAuY3RhYm94LS1pY29uX19sZWZ0IH4gLmN0YWJveC0tZGVzY3JpcHRpb24sIC5jdGFib3gtLWljb25fX2xlZnQgfiAuY3RhYm94LS1idXR0b24geyBtYXJnaW4tbGVmdDozNXB4OyB9IC5jdGFib3gtLWNvbnRhaW5lciAuY3RhYm94LS10aXRsZSB7IGZvbnQtd2VpZ2h0OmJvbGQ7IGZvbnQtc2l6ZToxLjU2M3JlbSA7IH0gLmN0YWJveC0tY29udGFpbmVyIC5jdGFib3gtLWRlc2NyaXB0aW9uIHsgbWFyZ2luLXRvcDoxMHB4OyB9IC5jdGFib3gtLWNvbnRhaW5lciAuY3RhYm94LS1idXR0b24geyBtYXJnaW4tdG9wOjIwcHg7IH0gLnBhcmFsbGF4LXNlY3Rpb24geyBiYWNrZ3JvdW5kLXBvc2l0aW9uOmNlbnRlcjsgYmFja2dyb3VuZC1zaXplOmNvdmVyOyBiYWNrZ3JvdW5kLWF0dGFjaG1lbnQ6bG9jYWw7IHBhZGRpbmc6MjVweCAwOyAtd2Via2l0LXRyYW5zaXRpb246YWxsIDAuM3M7IC1tb3otdHJhbnNpdGlvbjphbGwgMC4zczsgLW1zLXRyYW5zaXRpb246YWxsIDAuM3M7IC1vLXRyYW5zaXRpb246YWxsIDAuM3M7IHRyYW5zaXRpb246YWxsIDAuM3M7IGJhY2tncm91bmQtY29sb3I6IzAwMDsgfSAucGFyYWxsYXgtc2VjdGlvbiAuY29udGFpbmVyIHsgd2lkdGg6NjAlOyBwYWRkaW5nLXJpZ2h0OjE1cHg7IHBhZGRpbmctbGVmdDoxNXB4OyBtYXJnaW4tcmlnaHQ6YXV0bzsgbWFyZ2luLWxlZnQ6YXV0bzsgfSAucGFyYWxsYXgtc2VjdGlvbiAuY29udGFpbmVyLmxhcmdlIHsgd2lkdGg6ODAlOyBib3gtc2l6aW5nOmJvcmRlci1ib3g7IH0gLnBhcmFsbGF4LWNvbnRlbnQgeyB3aWR0aDo0NSU7IHBhZGRpbmc6NDBweCA0MHB4OyBiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsMC43KTsgY29sb3I6I2ZmZjsgfSAucGFyYWxsYXgtY29udGVudCAucGFyYWxsYXgtY29udGVudC1idXNpbmVzcy10aXRsZSB7IGZvbnQtc2l6ZToxLjQzOHJlbSAhaW1wb3J0YW50OyBmb250LXdlaWdodDpub3JtYWwgIWltcG9ydGFudDsgbWFyZ2luLWJvdHRvbToyMHB4OyBjb2xvcjppbmhlcml0OyB9IC5wYXJhbGxheC1jb250ZW50IC5wYXJhbGxheC1jb250ZW50LWJ1c2luZXNzLWRlc2MgeyBmb250LXNpemU6MC45MzhyZW0gIWltcG9ydGFudDsgdGV4dC1hbGlnbjpsZWZ0OyBjb2xvcjppbmhlcml0OyB9IC5wYXJhbGxheC1jb250ZW50IC5wYXJhbGxheC1jb250ZW50LWJ1c2luZXNzLWRlc2MgYXsgY29sb3I6aW5oZXJpdDsgfSBAbWVkaWEgKG1heC13aWR0aDoxMzMwcHgpIHsgLnBhcmFsbGF4LXNlY3Rpb24gLmNvbnRhaW5lciB7IHdpZHRoOjgwJTsgfSAucGFyYWxsYXgtc2VjdGlvbiAuY29udGFpbmVyLmxhcmdlIHsgd2lkdGg6MTAwJTsgfSB9IC5zci1vbmx5IHsgcG9zaXRpb246YWJzb2x1dGUgIWltcG9ydGFudDsgd2lkdGg6MXB4ICFpbXBvcnRhbnQ7IGhlaWdodDoxcHggIWltcG9ydGFudDsgcGFkZGluZzowICFpbXBvcnRhbnQ7IG1hcmdpbjotMXB4ICFpbXBvcnRhbnQ7IG92ZXJmbG93OmhpZGRlbiAhaW1wb3J0YW50OyBjbGlwOnJlY3QoMCwgMCwgMCwgMCkgIWltcG9ydGFudDsgYm9yZGVyOjAgIWltcG9ydGFudDsgfSAuYm5wX3B1bGxvdXRfaW1neyBtYXgtd2lkdGg6MTByZW07IG1hcmdpbjphdXRvOyB9IC5ibnBfcHVsbG91dF9jb2xfc2VwYXJhdG9yeyB3aWR0aDoxcHg7IGJhY2tncm91bmQtY29sb3I6I0VCRUJFQjsgaGVpZ2h0Ojk4cHg7IHBvc2l0aW9uOmFic29sdXRlOyB0b3A6MjBweDsgfSAuYm5wX3B1bGxvdXRfbWlkX2NvbHsgd2lkdGg6NzAlOyBkaXNwbGF5OnRhYmxlLWNlbGw7IH0gLmJucF9wdWxsb3V0X21pZF9jb2xfcmlnaHR7IGJvcmRlci1sZWZ0LXdpZHRoOjFweDsgfSAuYm5wX3B1bGxvdXRfbWlkX2NvbF9zZXBhcmF0b3J7IHdpZHRoOjFweDsgYmFja2dyb3VuZC1jb2xvcjojRUJFQkVCOyBoZWlnaHQ6NDBweDsgcG9zaXRpb246YWJzb2x1dGU7IHRvcDo3OHB4OyB9IC5ibnBfcHVsbG91dF9taWRfY29sX3ByaWNlX3dpdGhfdGl0bGV7IGRpc3BsYXk6ZmxleDsgZmxleC1kaXJlY3Rpb246Y29sdW1uOyB0ZXh0LWFsaWduOmNlbnRlcjsgd2lkdGg6NDUlOyB9IC5ibnBfcHVsbG91dF9taWRfY29sX3ByaWNleyBmb250LXNpemU6MnJlbSA7IGZvbnQtd2VpZ2h0OmJvbGQ7IH0gQG1lZGlhIChtYXgtd2lkdGg6MTMzMHB4KSB7IC5ibnBfcHVsbG91dF9taWRfY29sIHsgd2lkdGg6NTAlOyB9IC5ibnBfcHVsbG91dF9taWRfY29sX3ByaWNlX3dpdGhfdGl0bGUgeyB3aWR0aDoxMDAlOyB9IC5ibnBfcHVsbG91dF9jb2xfc2VwYXJhdG9yIHsgaGVpZ2h0OjE2NHB4OyB9IC5ibnBfcHVsbG91dF9taWRfY29sX3NlcGFyYXRvciB7IGhlaWdodDoxMDZweDsgfSB9IC5wdWxsb3V0LWNvbnRlbnQgLmNyZWRpdFNjb3JlUHVsbG91dEltZ3sgaGVpZ2h0OjExMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiMwNTE0MUY7IH0gLnB1bGxvdXQtY29udGVudCAuY3JlZGl0U2NvcmVQdWxsb3V0QnV0dG9ueyBiYWNrZ3JvdW5kOiM0MTdGMUEgIWltcG9ydGFudDsgYm9yZGVyLXJhZGl1czozcHg7IGNvbG9yOiNmZmZmZmY7IHBhZGRpbmc6N3B4IDIwcHggN3B4OyBmb250LXNpemU6MXJlbSA7IGZvbnQtd2VpZ2h0OjcwMDsgdGV4dC1zaGFkb3c6MC40cHggMDsgfSAucHVsbG91dC1jb250ZW50IC5jcmVkaXRTY29yZVB1bGxvdXRDb250ZW50eyBjb2xvcjojMDAwMDAwOyBmb250LXNpemU6MS41NjNyZW0gOyBmb250LXdlaWdodDo3MDA7IG1hcmdpbi1ib3R0b206LTE1cHg7IH0gLnB1bGxvdXQtY29udGVudCAuY3JlZGl0U2NvcmVQdWxsb3V0Q29udGVudFNjb3JleyBjb2xvcjojMDAwMDAwOyBmb250LXdlaWdodDo3MDA7IGZvbnQtc2l6ZToxLjg3NXJlbSA7IHRleHQtc2hhZG93OjJweCAwOyB9IC5wdWxsb3V0LWNvbnRlbnQgLmNyZWRpdFNjb3JlUHVsbG91dENvbnRlbnRGcmVleyBjb2xvcjojNDE3RjFBOyBmb250LXdlaWdodDo3MDA7IGZvbnQtc2l6ZToyLjgxM3JlbSA7IHRleHQtc2hhZG93OjJweCAwOyB9IC5pc1BhZ2VGdWxsV2lkdGhFbmFibGVkLmlzRnVsbFdpZHRoUGFnZSAucHVsbG91dC1jb250ZW50IC5jcmVkaXRTY29yZVB1bGxvdXRNYXhXaWR0aHsgbWF4LXdpZHRoOjEyMDBweDsgfSAucHVsbG91dC1jb250ZW50IC5jcmVkaXRTY29yZVB1bGxvdXRNYXhXaWR0aHsgbWF4LXdpZHRoOjk2MHB4OyB9IC5zbGlkZXItbWFpbiBpbWd7IHRyYW5zaXRpb246dHJhbnNmb3JtIDAuNXMgZWFzZS1vdXQgfSAuY29tbXVuaWNhdGlvblByZWZ7IHBhZGRpbmc6dmFyKC0taW5wdXQtcGFkZGluZyk7IGJhY2tncm91bmQtY29sb3I6dmFyKC0taW5wdXQtYmctY29sb3IpOyBib3JkZXItcmFkaXVzOnZhcigtLWlucHV0LXJhZGl1cyk7IGJvcmRlcjoxcHggc29saWQgdmFyKC0taW5wdXQtYm9yZGVyLWNvbG9yKTsgY29sb3I6IzIxMjUyOTsgZm9udC1zaXplOnZhcigtLWlucHV0LWZvbnQtc2l6ZSk7IGxpbmUtaGVpZ2h0OnZhcigtLWlucHV0LWxpbmUtaGVpZ2h0KTsgZm9udC13ZWlnaHQ6NDAwOyB3aWR0aDo1MCUgIWltcG9ydGFudDsgfSAuZDJjZm9ybSB7IC0tbGFiZWwtcmVxdWlyZWQtc3ltYm9sOiIqIjsgLS1sYWJlbC1yZXF1aXJlZC1jb2xvcjojRkYwMDAwOyAtLWlucHV0LXBhZGRpbmc6dmFyKC0tcy0xKSB2YXIoLS1zMSk7IC0taW5wdXQtYmctY29sb3I6dmFyKC0td2hpdGUpOyAtLWlucHV0LWJvcmRlci1jb2xvcjp2YXIoLS1taWQtZ3JheSk7IC0taW5wdXQtcmFkaXVzOnZhcigtLXMtNik7IC0taW5wdXQtZm9udC1zaXplOnZhcigtLWZzMCk7IC0taW5wdXQtbGluZS1oZWlnaHQ6dmFyKC0tZnMyKTsgfSAubWFpbkRpdkFkanVzdEhlYWRlciAudXBfbWVudSAuUzEwMFBlcmNlbnRXaWR0aCB7IGJhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7IH0gLnVwX21lbnUuZml4ZWQgLlMxMDBQZXJjZW50V2lkdGh7IGJhY2tncm91bmQtY29sb3I6cmdiKDI1NSwyNTUsMjU1KSB9IC5tYWluRGl2QWRqdXN0SGVhZGVyIC52LWNhcmQgLmFkZHJlc3MtbWlkZGxlIC5vcmcsIC5tYWluRGl2QWRqdXN0SGVhZGVyIC52LWNhcmQgLmFkZHJlc3MtbWlkZGxlIC5zdHJlZXQtYWRkcmVzcywgLm1haW5EaXZBZGp1c3RIZWFkZXIgLnYtY2FyZCAuYWRkcmVzcy1taWRkbGUgLmxvY2FsaXR5LCAubWFpbkRpdkFkanVzdEhlYWRlciAudi1jYXJkIC5hZGRyZXNzLW1pZGRsZSAucmVnaW9uLCAubWFpbkRpdkFkanVzdEhlYWRlciAudi1jYXJkIC5hZGRyZXNzLW1pZGRsZSAucG9zdGFsLWNvZGUsIC5tYWluRGl2QWRqdXN0SGVhZGVyIC52LWNhcmQgLmFkZHJlc3MtbWlkZGxlIC5leHRlbmRlZFBob25lVHJpZ2dlciwgLm1haW5EaXZBZGp1c3RIZWFkZXIgLnYtY2FyZCAuYWRkcmVzcy1taWRkbGUgLnBob25lLWxpbmsgeyBjb2xvcjp2YXIoLS1ob21lcGFnZS1oZWFkZXItaXRlbS1jb2xvcikgIWltcG9ydGFudDsgfSAubWFpbkRpdkFkanVzdEhlYWRlciAudi1jYXJkIC5hZGRyZXNzLW1pZGRsZSAuZGVhbGVyTWFwTGluayBzdmcgeyBmaWxsOnZhcigtLWhvbWVwYWdlLWhlYWRlci1pdGVtLWNvbG9yKTsgfSAubWFpbkRpdkFkanVzdEhlYWRlciAudi1jYXJkIC5hZGRyZXNzLW1pZGRsZSAuZmEtY2FyZXQtZG93bjo6YmVmb3JlLCAubWFpbkRpdkFkanVzdEhlYWRlciAudi1jYXJkIC5hZGRyZXNzLW1pZGRsZSAuZmEtcGhvbmU6OmJlZm9yZSB7IGNvbG9yOnZhcigtLWhvbWVwYWdlLWhlYWRlci1pdGVtLWNvbG9yKTsgfSAubWFpbkRpdkFkanVzdEhlYWRlciAudXBfbWVudSAuUzEwMFBlcmNlbnRXaWR0aCA+IHVsID4gbGkgPiBhLnRvcF9saW5rIHsgY29sb3I6dmFyKC0taG9tZXBhZ2UtbWVudS1pdGVtLWNvbG9yKTsgfSAubWFpbkRpdkFkanVzdEhlYWRlciAubGFuZ3VhZ2VCYXIgLmdSYXRpbmctaWNvbiNnUmF0aW5nLCAubWFpbkRpdkFkanVzdEhlYWRlciAubGFuZ3VhZ2VCYXIgLmRlc2t0b3BfbGFuZ19idXR0b24uYWN0aXZlLCAubWFpbkRpdkFkanVzdEhlYWRlciAubGFuZ3VhZ2VCYXIgYS5kZXNrdG9wX2xhbmdfYnV0dG9uOmhvdmVyIHsgYmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDsgY29sb3I6dmFyKC0taG9tZXBhZ2UtaGVhZGVyLWl0ZW0tY29sb3IpOyBib3JkZXI6MXB4IHNvbGlkIHZhcigtLWhvbWVwYWdlLWhlYWRlci1pdGVtLWNvbG9yKTsgfSAubWFpbkRpdkFkanVzdEhlYWRlciAubGFuZ3VhZ2VCYXIgLmRlc2t0b3BfbGFuZ19idXR0b24geyBjb2xvcjojMDAwMDAwOyBiYWNrZ3JvdW5kOnJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSk7IGJvcmRlcjoxcHggc29saWQgdmFyKC0taG9tZXBhZ2UtaGVhZGVyLWl0ZW0tY29sb3IpOyB9IC5tYWluRGl2QWRqdXN0SGVhZGVyIC5sYW5ndWFnZUJhciBkaXYuZDJjLWZhdnMtbmF2LXdyYXBwZXIgaS5mYXIgeyBjb2xvcjp2YXIoLS1ob21lcGFnZS1oZWFkZXItaXRlbS1jb2xvcik7IH0gLm1haW5EaXZBZGp1c3RIZWFkZXIgLmxhbmd1YWdlQmFyIC5zZXJ2aWNlLWhlYWRlci1mb3JtIC5idG4geyBib3JkZXItY29sb3I6dmFyKC0taG9tZXBhZ2UtaGVhZGVyLWl0ZW0tY29sb3IpOyB9IC5sYW5ndWFnZUJhciAuZ1JhdGluZy1pY29uI2dSYXRpbmcsIC5sYW5ndWFnZUJhciAjc2VydmljZV9hcHBvaW50X2hlYWRlciA+IGEsIC5sYW5ndWFnZUJhciAuZGVza3RvcF9sYW5nX2J1dHRvbiB7IGJvcmRlci1yYWRpdXM6dmFyKC0tcHJvbW8tYnRuLWJvcmRlci1yYWRpdXMpICFpbXBvcnRhbnQ7IH0gLmdSYXRpbmctaWNvbiNnUmF0aW5nIC5yYXRpbmcgeyBkaXNwbGF5OmZsZXg7IGFsaWduLWl0ZW1zOmNlbnRlcjsganVzdGlmeS1jb250ZW50OmNlbnRlcjsgbGluZS1oZWlnaHQ6MTsgfSAubWFyZ2luLWJvdHRvbS0tNHB4IHsgbWFyZ2luLWJvdHRvbTotNHB4OyB9IC5tYWluRGl2QWRqdXN0SGVhZGVyIC5sYW5ndWFnZUJhciwgLm1haW5EaXZBZGp1c3RIZWFkZXIgLnYtY2FyZCwgLm1haW5EaXZBZGp1c3RIZWFkZXIgLmJhbm5lci1zZWFyY2gtYm94LXdyYXBwZXIgeyB6LWluZGV4OjI7IHBvc2l0aW9uOnJlbGF0aXZlIH0KLyoqIC9jc3MvcHJvX2Ryb3Bkb3duXzQuY3NzICoqLwouaWROYXYxIHsgcGFkZGluZzowOyBsaXN0LXN0eWxlOm5vbmU7IGhlaWdodDoyOHB4OyBmb250LXNpemU6MC43NXJlbSA7IGZvbnQtc3R5bGU6bm9ybWFsOyBmb250LXdlaWdodDpib2xkOyB0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7IGNvbG9yOiNGOUY5Rjk7IH0gLmlkTmF2MSBsaS50b3Age2Rpc3BsYXk6YmxvY2s7IGZsb2F0OmxlZnQ7IGhlaWdodDoyOHB4OyBwYWRkaW5nOjA7fSAuaWROYXYxIGxpLnRvcDEge2Rpc3BsYXk6YmxvY2s7IGZsb2F0OmxlZnQ7IGhlaWdodDoyOHB4OyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL2JsX2hvdmVyLnBuZykgbGVmdCB0b3AgcmVwZWF0LXg7IHBhZGRpbmc6MDsgcGFkZGluZy1yaWdodDoycHg7IGZvbnQtc2l6ZTowLjgxM3JlbSA7IHRleHQtdHJhbnNmb3JtOnVwcGVyY2FzZTsgY29sb3I6I2ZmZjsgdGV4dC1hbGlnbjpjZW50ZXI7IC1tb3otYm9yZGVyLXJhZGl1czozcHg7IC13ZWJraXQtYm9yZGVyLXJhZGl1czozcHg7IGJvcmRlci1yYWRpdXM6M3B4OyAta2h0bWwtYm9yZGVyLXJhZGl1czozcHg7fSAuaWROYXYxIGxpIGEudG9wX2xpbmsgeyBkaXNwbGF5OmJsb2NrOyBmbG9hdDpsZWZ0OyBoZWlnaHQ6MjhweDsgbGluZS1oZWlnaHQ6MzBweDsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IGZvbnQtc2l6ZTowLjgxM3JlbSA7IHRleHQtdHJhbnNmb3JtOnVwcGVyY2FzZTsgZm9udC13ZWlnaHQ6bm9ybWFsOyBwYWRkaW5nOjBweCAxMnB4IDBweCAxMnB4OyBjdXJzb3I6cG9pbnRlcjsgLW1vei1ib3JkZXItcmFkaXVzOjNweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjNweDsgYm9yZGVyLXJhZGl1czozcHg7IC1raHRtbC1ib3JkZXItcmFkaXVzOjNweDsgYmFja2dyb3VuZDojZmZmZmZmOyBjb2xvcjojMDUxNDFmOyB9IC5pZE5hdjEgbGkgYS50b3BfbGluazpob3ZlciB7IC1tb3otYm9yZGVyLXJhZGl1czozcHg7IC13ZWJraXQtYm9yZGVyLXJhZGl1czozcHg7IGJvcmRlci1yYWRpdXM6M3B4OyBmaWx0ZXI6YnJpZ2h0bmVzcyg5NSUpOyB9IC5pZE5hdjEgbGkgYS50b3BfbGluazEge2Rpc3BsYXk6YmxvY2s7IGZsb2F0OmxlZnQ7IGhlaWdodDoyOHB4OyBsaW5lLWhlaWdodDozMHB4OyBjb2xvcjojZmVmZWZlOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgZm9udC1zaXplOjAuODEzcmVtIDsgdGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlOyBmb250LXdlaWdodDpub3JtYWw7IHBhZGRpbmc6MHB4IDEycHggMHB4IDEycHg7IGN1cnNvcjpwb2ludGVyOyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL2JsX2hvdmVyLnBuZykgbGVmdCB0b3AgcmVwZWF0LXg7IC1tb3otYm9yZGVyLXJhZGl1czozcHg7IC13ZWJraXQtYm9yZGVyLXJhZGl1czozcHg7IGJvcmRlci1yYWRpdXM6M3B4OyAta2h0bWwtYm9yZGVyLXJhZGl1czozcHg7fSAuaWROYXYyIHsgcGFkZGluZzowOyBsaXN0LXN0eWxlOm5vbmU7IGhlaWdodDoyOHB4OyBmb250LXNpemU6MC43NXJlbSA7IGZvbnQtc3R5bGU6bm9ybWFsOyBmb250LXdlaWdodDpib2xkOyB0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7IGNvbG9yOiNGOUY5Rjk7IH0gLmlkTmF2MiBsaS50b3Age2Rpc3BsYXk6YmxvY2s7IGZsb2F0OmxlZnQ7IGhlaWdodDoyOHB4OyBwYWRkaW5nOjA7IHBhZGRpbmctcmlnaHQ6MnB4O30gLmlkTmF2MiBsaS50b3AxIHtkaXNwbGF5OmJsb2NrOyBmbG9hdDpsZWZ0OyBoZWlnaHQ6MjhweDsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9ibF9ob3ZlcjIucG5nKSBsZWZ0IHRvcCByZXBlYXQteDsgcGFkZGluZzowOyBwYWRkaW5nLXJpZ2h0OjJweDsgZm9udC1zaXplOjAuODEzcmVtIDsgdGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlOyBjb2xvcjojZmZmOyB0ZXh0LWFsaWduOmNlbnRlcjsgLW1vei1ib3JkZXItcmFkaXVzOjNweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjNweDsgYm9yZGVyLXJhZGl1czozcHg7IC1raHRtbC1ib3JkZXItcmFkaXVzOjNweDt9IC5pZE5hdjIgbGkgYS50b3BfbGluayB7ZGlzcGxheTpibG9jazsgZmxvYXQ6bGVmdDsgaGVpZ2h0OjI4cHg7IGxpbmUtaGVpZ2h0OjMwcHg7IGNvbG9yOiNmZWZlZmU7IHRleHQtZGVjb3JhdGlvbjpub25lOyBmb250LXNpemU6MC44MTNyZW0gOyB0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgcGFkZGluZzowcHggMTJweCAwcHggMTJweDsgY3Vyc29yOnBvaW50ZXI7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvYmxfYmcyLnBuZykgbGVmdCB0b3AgcmVwZWF0LXg7IC1tb3otYm9yZGVyLXJhZGl1czozcHg7IC13ZWJraXQtYm9yZGVyLXJhZGl1czozcHg7IGJvcmRlci1yYWRpdXM6M3B4OyAta2h0bWwtYm9yZGVyLXJhZGl1czozcHg7fSAuaWROYXYyIGxpIGEudG9wX2xpbms6aG92ZXIge2NvbG9yOiNmZmY7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvYmxfaG92ZXIyLnBuZykgbGVmdCB0b3AgcmVwZWF0LXg7IC1tb3otYm9yZGVyLXJhZGl1czozcHg7IC13ZWJraXQtYm9yZGVyLXJhZGl1czozcHg7IGJvcmRlci1yYWRpdXM6M3B4OyAta2h0bWwtYm9yZGVyLXJhZGl1czozcHg7fSAuaWROYXYyIGxpIGEudG9wX2xpbmsxIHtkaXNwbGF5OmJsb2NrOyBmbG9hdDpsZWZ0OyBoZWlnaHQ6MjhweDsgbGluZS1oZWlnaHQ6MzBweDsgY29sb3I6I2ZlZmVmZTsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IGZvbnQtc2l6ZTowLjgxM3JlbSA7IHRleHQtdHJhbnNmb3JtOnVwcGVyY2FzZTsgZm9udC13ZWlnaHQ6bm9ybWFsOyBwYWRkaW5nOjBweCAxMnB4IDBweCAxMnB4OyBjdXJzb3I6cG9pbnRlcjsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9ibF9ob3ZlcjIucG5nKSBsZWZ0IHRvcCByZXBlYXQteDsgLW1vei1ib3JkZXItcmFkaXVzOjNweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjNweDsgYm9yZGVyLXJhZGl1czozcHg7IC1raHRtbC1ib3JkZXItcmFkaXVzOjNweDt9Ci8qKiAvY3NzL2pxdWVyeS11aS1mYWN0b3J5LzEuMTMuMi9qcXVlcnktdWkubWluLmNzcyAqKi8KLnVpLWhlbHBlci1oaWRkZW57ZGlzcGxheTpub25lfS51aS1oZWxwZXItaGlkZGVuLWFjY2Vzc2libGV7Ym9yZGVyOjA7Y2xpcDpyZWN0KDAgMCAwIDApO2hlaWdodDoxcHg7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHh9LnVpLWhlbHBlci1yZXNldHttYXJnaW46MDtwYWRkaW5nOjA7Ym9yZGVyOjA7b3V0bGluZTowO2xpbmUtaGVpZ2h0OjEuMzt0ZXh0LWRlY29yYXRpb246bm9uZTtmb250LXNpemU6MTAwJTtsaXN0LXN0eWxlOm5vbmV9LnVpLWhlbHBlci1jbGVhcmZpeDpiZWZvcmUsLnVpLWhlbHBlci1jbGVhcmZpeDphZnRlcntjb250ZW50OiIiO2Rpc3BsYXk6dGFibGU7Ym9yZGVyLWNvbGxhcHNlOmNvbGxhcHNlfS51aS1oZWxwZXItY2xlYXJmaXg6YWZ0ZXJ7Y2xlYXI6Ym90aH0udWktaGVscGVyLXpmaXh7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTt0b3A6MDtsZWZ0OjA7cG9zaXRpb246YWJzb2x1dGU7b3BhY2l0eTowOy1tcy1maWx0ZXI6ImFscGhhKG9wYWNpdHk9MCkifS51aS1mcm9udHt6LWluZGV4OjEwMH0udWktc3RhdGUtZGlzYWJsZWR7Y3Vyc29yOmRlZmF1bHQhaW1wb3J0YW50O3BvaW50ZXItZXZlbnRzOm5vbmV9LnVpLWljb257ZGlzcGxheTppbmxpbmUtYmxvY2s7dmVydGljYWwtYWxpZ246bWlkZGxlO21hcmdpbi10b3A6LS4yNWVtO3Bvc2l0aW9uOnJlbGF0aXZlO3RleHQtaW5kZW50Oi05OTk5OXB4O292ZXJmbG93OmhpZGRlbjtiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXR9LnVpLXdpZGdldC1pY29uLWJsb2Nre2xlZnQ6NTAlO21hcmdpbi1sZWZ0Oi04cHg7ZGlzcGxheTpibG9ja30udWktd2lkZ2V0LW92ZXJsYXl7cG9zaXRpb246Zml4ZWQ7dG9wOjA7bGVmdDowO3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCV9LnVpLWFjY29yZGlvbiAudWktYWNjb3JkaW9uLWhlYWRlcntkaXNwbGF5OmJsb2NrO2N1cnNvcjpwb2ludGVyO3Bvc2l0aW9uOnJlbGF0aXZlO21hcmdpbjoycHggMCAwIDA7cGFkZGluZzouNWVtIC41ZW0gLjVlbSAuN2VtO2ZvbnQtc2l6ZToxMDAlfS51aS1hY2NvcmRpb24gLnVpLWFjY29yZGlvbi1jb250ZW50e3BhZGRpbmc6MWVtIDIuMmVtO2JvcmRlci10b3A6MDtvdmVyZmxvdzphdXRvfS51aS1zbGlkZXJ7cG9zaXRpb246cmVsYXRpdmU7dGV4dC1hbGlnbjpsZWZ0fS51aS1zbGlkZXIgLnVpLXNsaWRlci1oYW5kbGV7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoyO3dpZHRoOjEuMmVtO2hlaWdodDoxLjJlbTtjdXJzb3I6cG9pbnRlcjstbXMtdG91Y2gtYWN0aW9uOm5vbmU7dG91Y2gtYWN0aW9uOm5vbmV9LnVpLXNsaWRlciAudWktc2xpZGVyLXJhbmdle3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTtmb250LXNpemU6LjdlbTtkaXNwbGF5OmJsb2NrO2JvcmRlcjowO2JhY2tncm91bmQtcG9zaXRpb246MCAwfS51aS1zbGlkZXIudWktc3RhdGUtZGlzYWJsZWQgLnVpLXNsaWRlci1oYW5kbGUsLnVpLXNsaWRlci51aS1zdGF0ZS1kaXNhYmxlZCAudWktc2xpZGVyLXJhbmdle2ZpbHRlcjppbmhlcml0fS51aS1zbGlkZXItaG9yaXpvbnRhbHtoZWlnaHQ6LjhlbX0udWktc2xpZGVyLWhvcml6b250YWwgLnVpLXNsaWRlci1oYW5kbGV7dG9wOi0uM2VtO21hcmdpbi1sZWZ0Oi0uNmVtfS51aS1zbGlkZXItaG9yaXpvbnRhbCAudWktc2xpZGVyLXJhbmdle3RvcDowO2hlaWdodDoxMDAlfS51aS1zbGlkZXItaG9yaXpvbnRhbCAudWktc2xpZGVyLXJhbmdlLW1pbntsZWZ0OjB9LnVpLXNsaWRlci1ob3Jpem9udGFsIC51aS1zbGlkZXItcmFuZ2UtbWF4e3JpZ2h0OjB9LnVpLXNsaWRlci12ZXJ0aWNhbHt3aWR0aDouOGVtO2hlaWdodDoxMDBweH0udWktc2xpZGVyLXZlcnRpY2FsIC51aS1zbGlkZXItaGFuZGxle2xlZnQ6LS4zZW07bWFyZ2luLWxlZnQ6MDttYXJnaW4tYm90dG9tOi0uNmVtfS51aS1zbGlkZXItdmVydGljYWwgLnVpLXNsaWRlci1yYW5nZXtsZWZ0OjA7d2lkdGg6MTAwJX0udWktc2xpZGVyLXZlcnRpY2FsIC51aS1zbGlkZXItcmFuZ2UtbWlue2JvdHRvbTowfS51aS1zbGlkZXItdmVydGljYWwgLnVpLXNsaWRlci1yYW5nZS1tYXh7dG9wOjB9LnVpLXdpZGdldHtmb250LWZhbWlseTpBcmlhbCxIZWx2ZXRpY2Esc2Fucy1zZXJpZjtmb250LXNpemU6MWVtfS51aS13aWRnZXQgLnVpLXdpZGdldHtmb250LXNpemU6MWVtfS51aS13aWRnZXQgaW5wdXQsLnVpLXdpZGdldCBzZWxlY3QsLnVpLXdpZGdldCB0ZXh0YXJlYSwudWktd2lkZ2V0IGJ1dHRvbntmb250LWZhbWlseTpBcmlhbCxIZWx2ZXRpY2Esc2Fucy1zZXJpZjtmb250LXNpemU6MWVtfS51aS13aWRnZXQudWktd2lkZ2V0LWNvbnRlbnR7Ym9yZGVyOjFweCBzb2xpZCAjYzVjNWM1fS51aS13aWRnZXQtY29udGVudHtib3JkZXI6MXB4IHNvbGlkICNkZGQ7YmFja2dyb3VuZDojZmZmO2NvbG9yOiMzMzN9LnVpLXdpZGdldC1jb250ZW50IGF7Y29sb3I6IzMzM30udWktd2lkZ2V0LWhlYWRlcntib3JkZXI6MXB4IHNvbGlkICNkZGQ7YmFja2dyb3VuZDojZTllOWU5O2NvbG9yOiMzMzM7Zm9udC13ZWlnaHQ6Ym9sZH0udWktd2lkZ2V0LWhlYWRlciBhe2NvbG9yOiMzMzN9LnVpLXN0YXRlLWRlZmF1bHQsLnVpLXdpZGdldC1jb250ZW50IC51aS1zdGF0ZS1kZWZhdWx0LC51aS13aWRnZXQtaGVhZGVyIC51aS1zdGF0ZS1kZWZhdWx0LC51aS1idXR0b24saHRtbCAudWktYnV0dG9uLnVpLXN0YXRlLWRpc2FibGVkOmhvdmVyLGh0bWwgLnVpLWJ1dHRvbi51aS1zdGF0ZS1kaXNhYmxlZDphY3RpdmV7Ym9yZGVyOjFweCBzb2xpZCAjYzVjNWM1O2JhY2tncm91bmQ6I2Y2ZjZmNjtmb250LXdlaWdodDpub3JtYWw7Y29sb3I6IzQ1NDU0NX0udWktc3RhdGUtZGVmYXVsdCBhLC51aS1zdGF0ZS1kZWZhdWx0IGE6bGluaywudWktc3RhdGUtZGVmYXVsdCBhOnZpc2l0ZWQsYS51aS1idXR0b24sYTpsaW5rLnVpLWJ1dHRvbixhOnZpc2l0ZWQudWktYnV0dG9uLC51aS1idXR0b257Y29sb3I6IzQ1NDU0NTt0ZXh0LWRlY29yYXRpb246bm9uZX0udWktc3RhdGUtaG92ZXIsLnVpLXdpZGdldC1jb250ZW50IC51aS1zdGF0ZS1ob3ZlciwudWktd2lkZ2V0LWhlYWRlciAudWktc3RhdGUtaG92ZXIsLnVpLXN0YXRlLWZvY3VzLC51aS13aWRnZXQtY29udGVudCAudWktc3RhdGUtZm9jdXMsLnVpLXdpZGdldC1oZWFkZXIgLnVpLXN0YXRlLWZvY3VzLC51aS1idXR0b246aG92ZXIsLnVpLWJ1dHRvbjpmb2N1c3tib3JkZXI6MXB4IHNvbGlkICNjY2M7YmFja2dyb3VuZDojZWRlZGVkO2ZvbnQtd2VpZ2h0Om5vcm1hbDtjb2xvcjojMmIyYjJifS51aS1zdGF0ZS1ob3ZlciBhLC51aS1zdGF0ZS1ob3ZlciBhOmhvdmVyLC51aS1zdGF0ZS1ob3ZlciBhOmxpbmssLnVpLXN0YXRlLWhvdmVyIGE6dmlzaXRlZCwudWktc3RhdGUtZm9jdXMgYSwudWktc3RhdGUtZm9jdXMgYTpob3ZlciwudWktc3RhdGUtZm9jdXMgYTpsaW5rLC51aS1zdGF0ZS1mb2N1cyBhOnZpc2l0ZWQsYS51aS1idXR0b246aG92ZXIsYS51aS1idXR0b246Zm9jdXN7Y29sb3I6IzJiMmIyYjt0ZXh0LWRlY29yYXRpb246bm9uZX0udWktdmlzdWFsLWZvY3Vze2JveC1zaGFkb3c6MCAwIDNweCAxcHggcmdiKDk0LDE1OCwyMTQpfS51aS1zdGF0ZS1hY3RpdmUsLnVpLXdpZGdldC1jb250ZW50IC51aS1zdGF0ZS1hY3RpdmUsLnVpLXdpZGdldC1oZWFkZXIgLnVpLXN0YXRlLWFjdGl2ZSxhLnVpLWJ1dHRvbjphY3RpdmUsLnVpLWJ1dHRvbjphY3RpdmUsLnVpLWJ1dHRvbi51aS1zdGF0ZS1hY3RpdmU6aG92ZXJ7Ym9yZGVyOjFweCBzb2xpZCAjMDAzZWZmO2JhY2tncm91bmQ6IzAwN2ZmZjtmb250LXdlaWdodDpub3JtYWw7Y29sb3I6I2ZmZn0udWktaWNvbi1iYWNrZ3JvdW5kLC51aS1zdGF0ZS1hY3RpdmUgLnVpLWljb24tYmFja2dyb3VuZHtib3JkZXI6IzAwM2VmZjtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9LnVpLXN0YXRlLWFjdGl2ZSBhLC51aS1zdGF0ZS1hY3RpdmUgYTpsaW5rLC51aS1zdGF0ZS1hY3RpdmUgYTp2aXNpdGVke2NvbG9yOiNmZmY7dGV4dC1kZWNvcmF0aW9uOm5vbmV9LnVpLXN0YXRlLWhpZ2hsaWdodCwudWktd2lkZ2V0LWNvbnRlbnQgLnVpLXN0YXRlLWhpZ2hsaWdodCwudWktd2lkZ2V0LWhlYWRlciAudWktc3RhdGUtaGlnaGxpZ2h0e2JvcmRlcjoxcHggc29saWQgI2RhZDU1ZTtiYWNrZ3JvdW5kOiNmZmZhOTA7Y29sb3I6Izc3NzYyMH0udWktc3RhdGUtY2hlY2tlZHtib3JkZXI6MXB4IHNvbGlkICNkYWQ1NWU7YmFja2dyb3VuZDojZmZmYTkwfS51aS1zdGF0ZS1oaWdobGlnaHQgYSwudWktd2lkZ2V0LWNvbnRlbnQgLnVpLXN0YXRlLWhpZ2hsaWdodCBhLC51aS13aWRnZXQtaGVhZGVyIC51aS1zdGF0ZS1oaWdobGlnaHQgYXtjb2xvcjojNzc3NjIwfS51aS1zdGF0ZS1lcnJvciwudWktd2lkZ2V0LWNvbnRlbnQgLnVpLXN0YXRlLWVycm9yLC51aS13aWRnZXQtaGVhZGVyIC51aS1zdGF0ZS1lcnJvcntib3JkZXI6MXB4IHNvbGlkICNmMWE4OTk7YmFja2dyb3VuZDojZmRkZmRmO2NvbG9yOiM1ZjNmM2Z9LnVpLXN0YXRlLWVycm9yIGEsLnVpLXdpZGdldC1jb250ZW50IC51aS1zdGF0ZS1lcnJvciBhLC51aS13aWRnZXQtaGVhZGVyIC51aS1zdGF0ZS1lcnJvciBhe2NvbG9yOiM1ZjNmM2Z9LnVpLXN0YXRlLWVycm9yLXRleHQsLnVpLXdpZGdldC1jb250ZW50IC51aS1zdGF0ZS1lcnJvci10ZXh0LC51aS13aWRnZXQtaGVhZGVyIC51aS1zdGF0ZS1lcnJvci10ZXh0e2NvbG9yOiM1ZjNmM2Z9LnVpLXByaW9yaXR5LXByaW1hcnksLnVpLXdpZGdldC1jb250ZW50IC51aS1wcmlvcml0eS1wcmltYXJ5LC51aS13aWRnZXQtaGVhZGVyIC51aS1wcmlvcml0eS1wcmltYXJ5e2ZvbnQtd2VpZ2h0OmJvbGR9LnVpLXByaW9yaXR5LXNlY29uZGFyeSwudWktd2lkZ2V0LWNvbnRlbnQgLnVpLXByaW9yaXR5LXNlY29uZGFyeSwudWktd2lkZ2V0LWhlYWRlciAudWktcHJpb3JpdHktc2Vjb25kYXJ5e29wYWNpdHk6Ljc7LW1zLWZpbHRlcjoiYWxwaGEob3BhY2l0eT03MCkiO2ZvbnQtd2VpZ2h0Om5vcm1hbH0udWktc3RhdGUtZGlzYWJsZWQsLnVpLXdpZGdldC1jb250ZW50IC51aS1zdGF0ZS1kaXNhYmxlZCwudWktd2lkZ2V0LWhlYWRlciAudWktc3RhdGUtZGlzYWJsZWR7b3BhY2l0eTouMzU7LW1zLWZpbHRlcjoiYWxwaGEob3BhY2l0eT0zNSkiO2JhY2tncm91bmQtaW1hZ2U6bm9uZX0udWktc3RhdGUtZGlzYWJsZWQgLnVpLWljb257LW1zLWZpbHRlcjoiYWxwaGEob3BhY2l0eT0zNSkifS51aS1pY29ue3dpZHRoOjE2cHg7aGVpZ2h0OjE2cHh9LnVpLWljb24sLnVpLXdpZGdldC1jb250ZW50IC51aS1pY29ue2JhY2tncm91bmQtaW1hZ2U6dXJsKCJpbWFnZXMvdWktaWNvbnNfNDQ0NDQ0XzI1NngyNDAucG5nIil9LnVpLXdpZGdldC1oZWFkZXIgLnVpLWljb257YmFja2dyb3VuZC1pbWFnZTp1cmwoImltYWdlcy91aS1pY29uc180NDQ0NDRfMjU2eDI0MC5wbmciKX0udWktc3RhdGUtaG92ZXIgLnVpLWljb24sLnVpLXN0YXRlLWZvY3VzIC51aS1pY29uLC51aS1idXR0b246aG92ZXIgLnVpLWljb24sLnVpLWJ1dHRvbjpmb2N1cyAudWktaWNvbntiYWNrZ3JvdW5kLWltYWdlOnVybCgiaW1hZ2VzL3VpLWljb25zXzU1NTU1NV8yNTZ4MjQwLnBuZyIpfS51aS1zdGF0ZS1hY3RpdmUgLnVpLWljb24sLnVpLWJ1dHRvbjphY3RpdmUgLnVpLWljb257YmFja2dyb3VuZC1pbWFnZTp1cmwoImltYWdlcy91aS1pY29uc19mZmZmZmZfMjU2eDI0MC5wbmciKX0udWktc3RhdGUtaGlnaGxpZ2h0IC51aS1pY29uLC51aS1idXR0b24gLnVpLXN0YXRlLWhpZ2hsaWdodC51aS1pY29ue2JhY2tncm91bmQtaW1hZ2U6dXJsKCJpbWFnZXMvdWktaWNvbnNfNzc3NjIwXzI1NngyNDAucG5nIil9LnVpLXN0YXRlLWVycm9yIC51aS1pY29uLC51aS1zdGF0ZS1lcnJvci10ZXh0IC51aS1pY29ue2JhY2tncm91bmQtaW1hZ2U6dXJsKCJpbWFnZXMvdWktaWNvbnNfY2MwMDAwXzI1NngyNDAucG5nIil9LnVpLWJ1dHRvbiAudWktaWNvbntiYWNrZ3JvdW5kLWltYWdlOnVybCgiaW1hZ2VzL3VpLWljb25zXzc3Nzc3N18yNTZ4MjQwLnBuZyIpfS51aS1pY29uLWJsYW5rLnVpLWljb24tYmxhbmsudWktaWNvbi1ibGFua3tiYWNrZ3JvdW5kLWltYWdlOm5vbmV9LnVpLWljb24tY2FyZXQtMS1ue2JhY2tncm91bmQtcG9zaXRpb246MCAwfS51aS1pY29uLWNhcmV0LTEtbmV7YmFja2dyb3VuZC1wb3NpdGlvbjotMTZweCAwfS51aS1pY29uLWNhcmV0LTEtZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0zMnB4IDB9LnVpLWljb24tY2FyZXQtMS1zZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi00OHB4IDB9LnVpLWljb24tY2FyZXQtMS1ze2JhY2tncm91bmQtcG9zaXRpb246LTY1cHggMH0udWktaWNvbi1jYXJldC0xLXN3e2JhY2tncm91bmQtcG9zaXRpb246LTgwcHggMH0udWktaWNvbi1jYXJldC0xLXd7YmFja2dyb3VuZC1wb3NpdGlvbjotOTZweCAwfS51aS1pY29uLWNhcmV0LTEtbnd7YmFja2dyb3VuZC1wb3NpdGlvbjotMTEycHggMH0udWktaWNvbi1jYXJldC0yLW4tc3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xMjhweCAwfS51aS1pY29uLWNhcmV0LTItZS13e2JhY2tncm91bmQtcG9zaXRpb246LTE0NHB4IDB9LnVpLWljb24tdHJpYW5nbGUtMS1ue2JhY2tncm91bmQtcG9zaXRpb246MCAtMTZweH0udWktaWNvbi10cmlhbmdsZS0xLW5le2JhY2tncm91bmQtcG9zaXRpb246LTE2cHggLTE2cHh9LnVpLWljb24tdHJpYW5nbGUtMS1le2JhY2tncm91bmQtcG9zaXRpb246LTMycHggLTE2cHh9LnVpLWljb24tdHJpYW5nbGUtMS1zZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi00OHB4IC0xNnB4fS51aS1pY29uLXRyaWFuZ2xlLTEtc3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi02NXB4IC0xNnB4fS51aS1pY29uLXRyaWFuZ2xlLTEtc3d7YmFja2dyb3VuZC1wb3NpdGlvbjotODBweCAtMTZweH0udWktaWNvbi10cmlhbmdsZS0xLXd7YmFja2dyb3VuZC1wb3NpdGlvbjotOTZweCAtMTZweH0udWktaWNvbi10cmlhbmdsZS0xLW53e2JhY2tncm91bmQtcG9zaXRpb246LTExMnB4IC0xNnB4fS51aS1pY29uLXRyaWFuZ2xlLTItbi1ze2JhY2tncm91bmQtcG9zaXRpb246LTEyOHB4IC0xNnB4fS51aS1pY29uLXRyaWFuZ2xlLTItZS13e2JhY2tncm91bmQtcG9zaXRpb246LTE0NHB4IC0xNnB4fS51aS1pY29uLWFycm93LTEtbntiYWNrZ3JvdW5kLXBvc2l0aW9uOjAgLTMycHh9LnVpLWljb24tYXJyb3ctMS1uZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNnB4IC0zMnB4fS51aS1pY29uLWFycm93LTEtZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0zMnB4IC0zMnB4fS51aS1pY29uLWFycm93LTEtc2V7YmFja2dyb3VuZC1wb3NpdGlvbjotNDhweCAtMzJweH0udWktaWNvbi1hcnJvdy0xLXN7YmFja2dyb3VuZC1wb3NpdGlvbjotNjVweCAtMzJweH0udWktaWNvbi1hcnJvdy0xLXN3e2JhY2tncm91bmQtcG9zaXRpb246LTgwcHggLTMycHh9LnVpLWljb24tYXJyb3ctMS13e2JhY2tncm91bmQtcG9zaXRpb246LTk2cHggLTMycHh9LnVpLWljb24tYXJyb3ctMS1ud3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xMTJweCAtMzJweH0udWktaWNvbi1hcnJvdy0yLW4tc3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xMjhweCAtMzJweH0udWktaWNvbi1hcnJvdy0yLW5lLXN3e2JhY2tncm91bmQtcG9zaXRpb246LTE0NHB4IC0zMnB4fS51aS1pY29uLWFycm93LTItZS13e2JhY2tncm91bmQtcG9zaXRpb246LTE2MHB4IC0zMnB4fS51aS1pY29uLWFycm93LTItc2Utbnd7YmFja2dyb3VuZC1wb3NpdGlvbjotMTc2cHggLTMycHh9LnVpLWljb24tYXJyb3dzdG9wLTEtbntiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xOTJweCAtMzJweH0udWktaWNvbi1hcnJvd3N0b3AtMS1le2JhY2tncm91bmQtcG9zaXRpb246LTIwOHB4IC0zMnB4fS51aS1pY29uLWFycm93c3RvcC0xLXN7YmFja2dyb3VuZC1wb3NpdGlvbjotMjI0cHggLTMycHh9LnVpLWljb24tYXJyb3dzdG9wLTEtd3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0yNDBweCAtMzJweH0udWktaWNvbi1hcnJvd3RoaWNrLTEtbntiYWNrZ3JvdW5kLXBvc2l0aW9uOjFweCAtNDhweH0udWktaWNvbi1hcnJvd3RoaWNrLTEtbmV7YmFja2dyb3VuZC1wb3NpdGlvbjotMTZweCAtNDhweH0udWktaWNvbi1hcnJvd3RoaWNrLTEtZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0zMnB4IC00OHB4fS51aS1pY29uLWFycm93dGhpY2stMS1zZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi00OHB4IC00OHB4fS51aS1pY29uLWFycm93dGhpY2stMS1ze2JhY2tncm91bmQtcG9zaXRpb246LTY0cHggLTQ4cHh9LnVpLWljb24tYXJyb3d0aGljay0xLXN3e2JhY2tncm91bmQtcG9zaXRpb246LTgwcHggLTQ4cHh9LnVpLWljb24tYXJyb3d0aGljay0xLXd7YmFja2dyb3VuZC1wb3NpdGlvbjotOTZweCAtNDhweH0udWktaWNvbi1hcnJvd3RoaWNrLTEtbnd7YmFja2dyb3VuZC1wb3NpdGlvbjotMTEycHggLTQ4cHh9LnVpLWljb24tYXJyb3d0aGljay0yLW4tc3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xMjhweCAtNDhweH0udWktaWNvbi1hcnJvd3RoaWNrLTItbmUtc3d7YmFja2dyb3VuZC1wb3NpdGlvbjotMTQ0cHggLTQ4cHh9LnVpLWljb24tYXJyb3d0aGljay0yLWUtd3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNjBweCAtNDhweH0udWktaWNvbi1hcnJvd3RoaWNrLTItc2Utbnd7YmFja2dyb3VuZC1wb3NpdGlvbjotMTc2cHggLTQ4cHh9LnVpLWljb24tYXJyb3d0aGlja3N0b3AtMS1ue2JhY2tncm91bmQtcG9zaXRpb246LTE5MnB4IC00OHB4fS51aS1pY29uLWFycm93dGhpY2tzdG9wLTEtZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0yMDhweCAtNDhweH0udWktaWNvbi1hcnJvd3RoaWNrc3RvcC0xLXN7YmFja2dyb3VuZC1wb3NpdGlvbjotMjI0cHggLTQ4cHh9LnVpLWljb24tYXJyb3d0aGlja3N0b3AtMS13e2JhY2tncm91bmQtcG9zaXRpb246LTI0MHB4IC00OHB4fS51aS1pY29uLWFycm93cmV0dXJudGhpY2stMS13e2JhY2tncm91bmQtcG9zaXRpb246MCAtNjRweH0udWktaWNvbi1hcnJvd3JldHVybnRoaWNrLTEtbntiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNnB4IC02NHB4fS51aS1pY29uLWFycm93cmV0dXJudGhpY2stMS1le2JhY2tncm91bmQtcG9zaXRpb246LTMycHggLTY0cHh9LnVpLWljb24tYXJyb3dyZXR1cm50aGljay0xLXN7YmFja2dyb3VuZC1wb3NpdGlvbjotNDhweCAtNjRweH0udWktaWNvbi1hcnJvd3JldHVybi0xLXd7YmFja2dyb3VuZC1wb3NpdGlvbjotNjRweCAtNjRweH0udWktaWNvbi1hcnJvd3JldHVybi0xLW57YmFja2dyb3VuZC1wb3NpdGlvbjotODBweCAtNjRweH0udWktaWNvbi1hcnJvd3JldHVybi0xLWV7YmFja2dyb3VuZC1wb3NpdGlvbjotOTZweCAtNjRweH0udWktaWNvbi1hcnJvd3JldHVybi0xLXN7YmFja2dyb3VuZC1wb3NpdGlvbjotMTEycHggLTY0cHh9LnVpLWljb24tYXJyb3dyZWZyZXNoLTEtd3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xMjhweCAtNjRweH0udWktaWNvbi1hcnJvd3JlZnJlc2gtMS1ue2JhY2tncm91bmQtcG9zaXRpb246LTE0NHB4IC02NHB4fS51aS1pY29uLWFycm93cmVmcmVzaC0xLWV7YmFja2dyb3VuZC1wb3NpdGlvbjotMTYwcHggLTY0cHh9LnVpLWljb24tYXJyb3dyZWZyZXNoLTEtc3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNzZweCAtNjRweH0udWktaWNvbi1hcnJvdy00e2JhY2tncm91bmQtcG9zaXRpb246MCAtODBweH0udWktaWNvbi1hcnJvdy00LWRpYWd7YmFja2dyb3VuZC1wb3NpdGlvbjotMTZweCAtODBweH0udWktaWNvbi1leHRsaW5re2JhY2tncm91bmQtcG9zaXRpb246LTMycHggLTgwcHh9LnVpLWljb24tbmV3d2lue2JhY2tncm91bmQtcG9zaXRpb246LTQ4cHggLTgwcHh9LnVpLWljb24tcmVmcmVzaHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi02NHB4IC04MHB4fS51aS1pY29uLXNodWZmbGV7YmFja2dyb3VuZC1wb3NpdGlvbjotODBweCAtODBweH0udWktaWNvbi10cmFuc2Zlci1lLXd7YmFja2dyb3VuZC1wb3NpdGlvbjotOTZweCAtODBweH0udWktaWNvbi10cmFuc2ZlcnRoaWNrLWUtd3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xMTJweCAtODBweH0udWktaWNvbi1mb2xkZXItY29sbGFwc2Vke2JhY2tncm91bmQtcG9zaXRpb246MCAtOTZweH0udWktaWNvbi1mb2xkZXItb3BlbntiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNnB4IC05NnB4fS51aS1pY29uLWRvY3VtZW50e2JhY2tncm91bmQtcG9zaXRpb246LTMycHggLTk2cHh9LnVpLWljb24tZG9jdW1lbnQtYntiYWNrZ3JvdW5kLXBvc2l0aW9uOi00OHB4IC05NnB4fS51aS1pY29uLW5vdGV7YmFja2dyb3VuZC1wb3NpdGlvbjotNjRweCAtOTZweH0udWktaWNvbi1tYWlsLWNsb3NlZHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi04MHB4IC05NnB4fS51aS1pY29uLW1haWwtb3BlbntiYWNrZ3JvdW5kLXBvc2l0aW9uOi05NnB4IC05NnB4fS51aS1pY29uLXN1aXRjYXNle2JhY2tncm91bmQtcG9zaXRpb246LTExMnB4IC05NnB4fS51aS1pY29uLWNvbW1lbnR7YmFja2dyb3VuZC1wb3NpdGlvbjotMTI4cHggLTk2cHh9LnVpLWljb24tcGVyc29ue2JhY2tncm91bmQtcG9zaXRpb246LTE0NHB4IC05NnB4fS51aS1pY29uLXByaW50e2JhY2tncm91bmQtcG9zaXRpb246LTE2MHB4IC05NnB4fS51aS1pY29uLXRyYXNoe2JhY2tncm91bmQtcG9zaXRpb246LTE3NnB4IC05NnB4fS51aS1pY29uLWxvY2tlZHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xOTJweCAtOTZweH0udWktaWNvbi11bmxvY2tlZHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0yMDhweCAtOTZweH0udWktaWNvbi1ib29rbWFya3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0yMjRweCAtOTZweH0udWktaWNvbi10YWd7YmFja2dyb3VuZC1wb3NpdGlvbjotMjQwcHggLTk2cHh9LnVpLWljb24taG9tZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOjAgLTExMnB4fS51aS1pY29uLWZsYWd7YmFja2dyb3VuZC1wb3NpdGlvbjotMTZweCAtMTEycHh9LnVpLWljb24tY2FsZW5kYXJ7YmFja2dyb3VuZC1wb3NpdGlvbjotMzJweCAtMTEycHh9LnVpLWljb24tY2FydHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi00OHB4IC0xMTJweH0udWktaWNvbi1wZW5jaWx7YmFja2dyb3VuZC1wb3NpdGlvbjotNjRweCAtMTEycHh9LnVpLWljb24tY2xvY2t7YmFja2dyb3VuZC1wb3NpdGlvbjotODBweCAtMTEycHh9LnVpLWljb24tZGlza3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi05NnB4IC0xMTJweH0udWktaWNvbi1jYWxjdWxhdG9ye2JhY2tncm91bmQtcG9zaXRpb246LTExMnB4IC0xMTJweH0udWktaWNvbi16b29taW57YmFja2dyb3VuZC1wb3NpdGlvbjotMTI4cHggLTExMnB4fS51aS1pY29uLXpvb21vdXR7YmFja2dyb3VuZC1wb3NpdGlvbjotMTQ0cHggLTExMnB4fS51aS1pY29uLXNlYXJjaHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNjBweCAtMTEycHh9LnVpLWljb24td3JlbmNoe2JhY2tncm91bmQtcG9zaXRpb246LTE3NnB4IC0xMTJweH0udWktaWNvbi1nZWFye2JhY2tncm91bmQtcG9zaXRpb246LTE5MnB4IC0xMTJweH0udWktaWNvbi1oZWFydHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0yMDhweCAtMTEycHh9LnVpLWljb24tc3RhcntiYWNrZ3JvdW5kLXBvc2l0aW9uOi0yMjRweCAtMTEycHh9LnVpLWljb24tbGlua3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0yNDBweCAtMTEycHh9LnVpLWljb24tY2FuY2Vse2JhY2tncm91bmQtcG9zaXRpb246MCAtMTI4cHh9LnVpLWljb24tcGx1c3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNnB4IC0xMjhweH0udWktaWNvbi1wbHVzdGhpY2t7YmFja2dyb3VuZC1wb3NpdGlvbjotMzJweCAtMTI4cHh9LnVpLWljb24tbWludXN7YmFja2dyb3VuZC1wb3NpdGlvbjotNDhweCAtMTI4cHh9LnVpLWljb24tbWludXN0aGlja3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi02NHB4IC0xMjhweH0udWktaWNvbi1jbG9zZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi04MHB4IC0xMjhweH0udWktaWNvbi1jbG9zZXRoaWNre2JhY2tncm91bmQtcG9zaXRpb246LTk2cHggLTEyOHB4fS51aS1pY29uLWtleXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xMTJweCAtMTI4cHh9LnVpLWljb24tbGlnaHRidWxie2JhY2tncm91bmQtcG9zaXRpb246LTEyOHB4IC0xMjhweH0udWktaWNvbi1zY2lzc29yc3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNDRweCAtMTI4cHh9LnVpLWljb24tY2xpcGJvYXJke2JhY2tncm91bmQtcG9zaXRpb246LTE2MHB4IC0xMjhweH0udWktaWNvbi1jb3B5e2JhY2tncm91bmQtcG9zaXRpb246LTE3NnB4IC0xMjhweH0udWktaWNvbi1jb250YWN0e2JhY2tncm91bmQtcG9zaXRpb246LTE5MnB4IC0xMjhweH0udWktaWNvbi1pbWFnZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0yMDhweCAtMTI4cHh9LnVpLWljb24tdmlkZW97YmFja2dyb3VuZC1wb3NpdGlvbjotMjI0cHggLTEyOHB4fS51aS1pY29uLXNjcmlwdHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0yNDBweCAtMTI4cHh9LnVpLWljb24tYWxlcnR7YmFja2dyb3VuZC1wb3NpdGlvbjowIC0xNDRweH0udWktaWNvbi1pbmZve2JhY2tncm91bmQtcG9zaXRpb246LTE2cHggLTE0NHB4fS51aS1pY29uLW5vdGljZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0zMnB4IC0xNDRweH0udWktaWNvbi1oZWxwe2JhY2tncm91bmQtcG9zaXRpb246LTQ4cHggLTE0NHB4fS51aS1pY29uLWNoZWNre2JhY2tncm91bmQtcG9zaXRpb246LTY0cHggLTE0NHB4fS51aS1pY29uLWJ1bGxldHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi04MHB4IC0xNDRweH0udWktaWNvbi1yYWRpby1vbntiYWNrZ3JvdW5kLXBvc2l0aW9uOi05NnB4IC0xNDRweH0udWktaWNvbi1yYWRpby1vZmZ7YmFja2dyb3VuZC1wb3NpdGlvbjotMTEycHggLTE0NHB4fS51aS1pY29uLXBpbi13e2JhY2tncm91bmQtcG9zaXRpb246LTEyOHB4IC0xNDRweH0udWktaWNvbi1waW4tc3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNDRweCAtMTQ0cHh9LnVpLWljb24tcGxheXtiYWNrZ3JvdW5kLXBvc2l0aW9uOjAgLTE2MHB4fS51aS1pY29uLXBhdXNle2JhY2tncm91bmQtcG9zaXRpb246LTE2cHggLTE2MHB4fS51aS1pY29uLXNlZWstbmV4dHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0zMnB4IC0xNjBweH0udWktaWNvbi1zZWVrLXByZXZ7YmFja2dyb3VuZC1wb3NpdGlvbjotNDhweCAtMTYwcHh9LnVpLWljb24tc2Vlay1lbmR7YmFja2dyb3VuZC1wb3NpdGlvbjotNjRweCAtMTYwcHh9LnVpLWljb24tc2Vlay1zdGFydHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi04MHB4IC0xNjBweH0udWktaWNvbi1zZWVrLWZpcnN0e2JhY2tncm91bmQtcG9zaXRpb246LTgwcHggLTE2MHB4fS51aS1pY29uLXN0b3B7YmFja2dyb3VuZC1wb3NpdGlvbjotOTZweCAtMTYwcHh9LnVpLWljb24tZWplY3R7YmFja2dyb3VuZC1wb3NpdGlvbjotMTEycHggLTE2MHB4fS51aS1pY29uLXZvbHVtZS1vZmZ7YmFja2dyb3VuZC1wb3NpdGlvbjotMTI4cHggLTE2MHB4fS51aS1pY29uLXZvbHVtZS1vbntiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNDRweCAtMTYwcHh9LnVpLWljb24tcG93ZXJ7YmFja2dyb3VuZC1wb3NpdGlvbjowIC0xNzZweH0udWktaWNvbi1zaWduYWwtZGlhZ3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNnB4IC0xNzZweH0udWktaWNvbi1zaWduYWx7YmFja2dyb3VuZC1wb3NpdGlvbjotMzJweCAtMTc2cHh9LnVpLWljb24tYmF0dGVyeS0we2JhY2tncm91bmQtcG9zaXRpb246LTQ4cHggLTE3NnB4fS51aS1pY29uLWJhdHRlcnktMXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi02NHB4IC0xNzZweH0udWktaWNvbi1iYXR0ZXJ5LTJ7YmFja2dyb3VuZC1wb3NpdGlvbjotODBweCAtMTc2cHh9LnVpLWljb24tYmF0dGVyeS0ze2JhY2tncm91bmQtcG9zaXRpb246LTk2cHggLTE3NnB4fS51aS1pY29uLWNpcmNsZS1wbHVze2JhY2tncm91bmQtcG9zaXRpb246MCAtMTkycHh9LnVpLWljb24tY2lyY2xlLW1pbnVze2JhY2tncm91bmQtcG9zaXRpb246LTE2cHggLTE5MnB4fS51aS1pY29uLWNpcmNsZS1jbG9zZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0zMnB4IC0xOTJweH0udWktaWNvbi1jaXJjbGUtdHJpYW5nbGUtZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi00OHB4IC0xOTJweH0udWktaWNvbi1jaXJjbGUtdHJpYW5nbGUtc3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi02NHB4IC0xOTJweH0udWktaWNvbi1jaXJjbGUtdHJpYW5nbGUtd3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi04MHB4IC0xOTJweH0udWktaWNvbi1jaXJjbGUtdHJpYW5nbGUtbntiYWNrZ3JvdW5kLXBvc2l0aW9uOi05NnB4IC0xOTJweH0udWktaWNvbi1jaXJjbGUtYXJyb3ctZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xMTJweCAtMTkycHh9LnVpLWljb24tY2lyY2xlLWFycm93LXN7YmFja2dyb3VuZC1wb3NpdGlvbjotMTI4cHggLTE5MnB4fS51aS1pY29uLWNpcmNsZS1hcnJvdy13e2JhY2tncm91bmQtcG9zaXRpb246LTE0NHB4IC0xOTJweH0udWktaWNvbi1jaXJjbGUtYXJyb3ctbntiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNjBweCAtMTkycHh9LnVpLWljb24tY2lyY2xlLXpvb21pbntiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNzZweCAtMTkycHh9LnVpLWljb24tY2lyY2xlLXpvb21vdXR7YmFja2dyb3VuZC1wb3NpdGlvbjotMTkycHggLTE5MnB4fS51aS1pY29uLWNpcmNsZS1jaGVja3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0yMDhweCAtMTkycHh9LnVpLWljb24tY2lyY2xlc21hbGwtcGx1c3tiYWNrZ3JvdW5kLXBvc2l0aW9uOjAgLTIwOHB4fS51aS1pY29uLWNpcmNsZXNtYWxsLW1pbnVze2JhY2tncm91bmQtcG9zaXRpb246LTE2cHggLTIwOHB4fS51aS1pY29uLWNpcmNsZXNtYWxsLWNsb3Nle2JhY2tncm91bmQtcG9zaXRpb246LTMycHggLTIwOHB4fS51aS1pY29uLXNxdWFyZXNtYWxsLXBsdXN7YmFja2dyb3VuZC1wb3NpdGlvbjotNDhweCAtMjA4cHh9LnVpLWljb24tc3F1YXJlc21hbGwtbWludXN7YmFja2dyb3VuZC1wb3NpdGlvbjotNjRweCAtMjA4cHh9LnVpLWljb24tc3F1YXJlc21hbGwtY2xvc2V7YmFja2dyb3VuZC1wb3NpdGlvbjotODBweCAtMjA4cHh9LnVpLWljb24tZ3JpcC1kb3R0ZWQtdmVydGljYWx7YmFja2dyb3VuZC1wb3NpdGlvbjowIC0yMjRweH0udWktaWNvbi1ncmlwLWRvdHRlZC1ob3Jpem9udGFse2JhY2tncm91bmQtcG9zaXRpb246LTE2cHggLTIyNHB4fS51aS1pY29uLWdyaXAtc29saWQtdmVydGljYWx7YmFja2dyb3VuZC1wb3NpdGlvbjotMzJweCAtMjI0cHh9LnVpLWljb24tZ3JpcC1zb2xpZC1ob3Jpem9udGFse2JhY2tncm91bmQtcG9zaXRpb246LTQ4cHggLTIyNHB4fS51aS1pY29uLWdyaXBzbWFsbC1kaWFnb25hbC1zZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi02NHB4IC0yMjRweH0udWktaWNvbi1ncmlwLWRpYWdvbmFsLXNle2JhY2tncm91bmQtcG9zaXRpb246LTgwcHggLTIyNHB4fS51aS1jb3JuZXItYWxsLC51aS1jb3JuZXItdG9wLC51aS1jb3JuZXItbGVmdCwudWktY29ybmVyLXRse2JvcmRlci10b3AtbGVmdC1yYWRpdXM6M3B4fS51aS1jb3JuZXItYWxsLC51aS1jb3JuZXItdG9wLC51aS1jb3JuZXItcmlnaHQsLnVpLWNvcm5lci10cntib3JkZXItdG9wLXJpZ2h0LXJhZGl1czozcHh9LnVpLWNvcm5lci1hbGwsLnVpLWNvcm5lci1ib3R0b20sLnVpLWNvcm5lci1sZWZ0LC51aS1jb3JuZXItYmx7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czozcHh9LnVpLWNvcm5lci1hbGwsLnVpLWNvcm5lci1ib3R0b20sLnVpLWNvcm5lci1yaWdodCwudWktY29ybmVyLWJye2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjNweH0udWktd2lkZ2V0LW92ZXJsYXl7YmFja2dyb3VuZDojYWFhO29wYWNpdHk6LjM7LW1zLWZpbHRlcjpBbHBoYShPcGFjaXR5PTMwKX0udWktd2lkZ2V0LXNoYWRvd3std2Via2l0LWJveC1zaGFkb3c6MCAwIDVweCAjNjY2O2JveC1zaGFkb3c6MCAwIDVweCAjNjY2fQovKiogL2Nzcy9zdHlsZS5jc3MgKiovCmh0bWwsIGJvZHksIGFwcGxldCwgb2JqZWN0LCBpZnJhbWUsIGgxLCBoMiwgaDMsIGg0LCBoNSwgaDYsIGJsb2NrcXVvdGUsIHByZSwgYWJiciwgYWNyb255bSwgYWRkcmVzcywgYmlnLCBjaXRlLCBjb2RlLCBkZWwsIGRmbiwgZW0sIGZvbnQsIGltZywgaW5zLCBrYmQsIHEsIHMsIHNhbXAsIHNtYWxsLCBzdHJpa2UsIHN0cm9uZywgc3ViLCBzdXAsIHR0LCB2YXIsIGIsIHUsIGksIGNlbnRlciwgZGwsIGR0LCBkZCwgb2wsIHVsLCBsaSwgZmllbGRzZXQsIGZvcm0sIGxhYmVsLCBsZWdlbmQsIHRhYmxlLCBjYXB0aW9uLCB0Ym9keSwgdGZvb3QsIHRoZWFkLCB0ciwgdGgsIHRkIHsgbWFyZ2luOjA7IHBhZGRpbmc6MDsgfSBodG1sIHsgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6MTAwJTsgLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OjEwMCU7IH0gYm9keSB7IHBhZGRpbmc6MDsgbWFyZ2luOjAgMCAwIDA7IGJhY2tncm91bmQ6I0ZGRkZGRjsgY29sb3I6IzMzMzMzMzsgZm9udC1mYW1pbHk6dmFyKC0tZm9udC10ZXh0LW1vYik7IGZvbnQtd2VpZ2h0OnZhcigtLWZvbnQtdGV4dC13ZWlnaHQpOyBmb250LXNpemU6MC45MzhyZW0gOyB9IGlucHV0LCB0ZXh0YXJlYSwgc2VsZWN0LCBidXR0b24geyBmb250LWZhbWlseTp2YXIoLS1mb250LXRleHQtbW9iKTsgZm9udC13ZWlnaHQ6dmFyKC0tZm9udC10ZXh0LXdlaWdodCk7IH0gLmZ1bGxXaWR0aEJ1dHRvbiBhLCAudG9wbmF2IHRyIHRkIGEsIGEjbW9iaWxlUHJvbW90aW9uQnRuIHNwYW57IGZvbnQtZmFtaWx5OnZhcigtLWZvbnQtYnV0dG9ucy1tb2IpOyBmb250LXdlaWdodDp2YXIoLS1mb250LWJ1dHRvbnMtd2VpZ2h0KTsgfSAuZGVhbGVyLWNvbG9yIHsgY29sb3I6I2ZmZmZmZjsgfSAuaDJmb3JteyBmb250LXdlaWdodDpib2xkOyB0ZXh0LXRyYW5zZm9ybTp2YXIoLS10eHQtdXBwZXIpOyBiYWNrZ3JvdW5kOiM5OTk7IGNvbG9yOndoaXRlOyBwYWRkaW5nOjVweCAxMHB4OyBmb250LXNpemU6MC45MzhyZW0gOyBtYXJnaW4tdG9wOjE1cHg7IH0gLi1zZWxlY3QgeyBwYWRkaW5nOjA7IG1hcmdpbjowOyBib3JkZXI6MXB4IHNvbGlkICNjY2M7IGJvcmRlci1yYWRpdXM6M3B4OyBvdmVyZmxvdzpoaWRkZW47IGJhY2tncm91bmQtY29sb3I6I2ZmZjsgYmFja2dyb3VuZDojZmZmOyBwb3NpdGlvbjpyZWxhdGl2ZTsgfSAudXNlZF9kZXRhaWxzX29wdGlvbnNfdGl0bGUsIC5uZXdfZGV0YWlsc19vcHRpb25zX3RpdGxleyBiYWNrZ3JvdW5kLWNvbG9yOiNjY2M7IGNvbG9yOiMwMDA7IHBhZGRpbmc6MTBweDsgZm9udC1zaXplOjEuMTI1cmVtIDsgbWFyZ2luLWxlZnQ6LTEwcHg7IG1hcmdpbi1yaWdodDotMTBweDsgfSAuLXNlbGVjdDphZnRlciB7IHRvcDo1MCU7IHJpZ2h0OjVweDsgYm9yZGVyOnNvbGlkIHRyYW5zcGFyZW50OyBjb250ZW50OiIgIjsgaGVpZ2h0OjA7IHdpZHRoOjA7IHBvc2l0aW9uOmFic29sdXRlOyBwb2ludGVyLWV2ZW50czpub25lOyBib3JkZXItY29sb3I6cmdiYSgwLCAwLCAwLCAwKTsgYm9yZGVyLXRvcC1jb2xvcjojMDAwMDAwOyBib3JkZXItd2lkdGg6NXB4OyBtYXJnaW4tdG9wOi0ycHg7IHotaW5kZXg6MTAwOyB9IC4tc2VsZWN0IHNlbGVjdCB7IHBhZGRpbmc6NXB4IDhweDsgd2lkdGg6MTAwJTsgYm9yZGVyOm5vbmU7IGJveC1zaGFkb3c6bm9uZTsgYmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDsgYmFja2dyb3VuZC1pbWFnZTpub25lOyAtd2Via2l0LWFwcGVhcmFuY2U6bm9uZTsgLW1vei1hcHBlYXJhbmNlOm5vbmU7IGFwcGVhcmFuY2U6bm9uZTsgfSAuLXNlbGVjdCBzZWxlY3Q6Zm9jdXMgeyBvdXRsaW5lOm5vbmU7IH0gYSwgYTpob3ZlciB7IG91dGxpbmU6bm9uZTsgfSAubmF2ID4gdWwgPiBsaXsgbWFyZ2luLWJvdHRvbTozcHg7IH0gaDF7IGZvbnQtc2l6ZToxLjRlbTsgcGFkZGluZy10b3A6MTBweDsgZm9udC1mYW1pbHk6dmFyKC0tZm9udC1oMS1tb2IpOyBmb250LXdlaWdodDp2YXIoLS1mb250LWgxLXdlaWdodCk7IH0gc3Bhbi5oMi1hbHQsc3Bhbi5oMy1hbHR7IG1hcmdpbjowOyBwYWRkaW5nOjA7IH0gaDIsaDMsaDQsaDUsaDYsc3Bhbi5oMi1hbHQsc3Bhbi5oMy1hbHR7IGZvbnQtZmFtaWx5OnZhcigtLWZvbnQtaDItbW9iKTsgZm9udC13ZWlnaHQ6dmFyKC0tZm9udC1oMi13ZWlnaHQpOyB9IGlucHV0W3R5cGU9YnV0dG9uXSwgLmRldGFpbHMgYSwgLmgtYnV0dG9ucyB1bCBsaSBhLCAucHJpY2UsIC5kZXRhaWxzLCAuZGV0YWlscyBhLCAuYnV0dG9uLXByb21vMywgLmJ0bi1kZWZhdWx0LCAuYnRuLXNtLCAuYnRuLWxnIHsgZm9udC1mYW1pbHk6dmFyKC0tZm9udC1idXR0b25zLW1vYik7IGZvbnQtd2VpZ2h0OnZhcigtLWZvbnQtYnV0dG9ucy13ZWlnaHQpOyB9IC5jbGVhcnsgY2xlYXI6Ym90aDt9IGEsIGE6aG92ZXIge3RleHQtZGVjb3JhdGlvbjpub25lO30gLmNvbnRhaW5lciB7IHdpZHRoOjEwMCU7IG1hcmdpbjowIDAgMCAwOyB9IC50b3AgeyBiYWNrZ3JvdW5kOiMyMjIyMjI7IGJhY2tncm91bmQ6I2ZmZmZmZjsgaGVpZ2h0OjUwcHg7IH0gLnRvcG5hdiAuYnVyZ2VyLWJ0bi1jb250YWluZXIubWVudS10YWxseyB3aWR0aDo0MHB4ICFpbXBvcnRhbnQ7IH0gLnRvcG5hdiBhIHsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IGZvbnQtc2l6ZToxZW07IGZvbnQtd2VpZ2h0OmJvbGQ7IGNvbG9yOiNmZmZmZmY7IGNvbG9yOiMwNTE0MWY7IH0gLmJ1cmdlci1tZW51eyBoZWlnaHQ6MjAwJSAhaW1wb3J0YW50OyBiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwgMCwgMCwgMC41KSAhaW1wb3J0YW50OyB9IC5yaWdodGJvcmRlciB7IGJvcmRlci1yaWdodDoxcHggc29saWQ7IGJvcmRlci1jb2xvcjojZmZmZmZmOyBib3JkZXItY29sb3I6IzA1MTQxZjsgfSAubGVmdGJvcmRlciB7IGJvcmRlci1sZWZ0OjFweCBzb2xpZDsgYm9yZGVyLWNvbG9yOiNmZmZmZmY7IGJvcmRlci1jb2xvcjojMDUxNDFmOyB9IC50ZWxlcGhvbmUsIC5tYXAge2Rpc3BsYXk6YmxvY2s7IGhlaWdodDo2NHB4OyBwYWRkaW5nOjI1cHggMCAwIDA7fSAudGVsZXBob25lIHtiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL2ljb24tcGhvbmUucG5nKSBuby1yZXBlYXQgMjBweCAxNXB4OyB9IC5tYXAge2JhY2tncm91bmQ6dXJsKC9pbWFnZXMvaWNvbi1tYXAucG5nKSBuby1yZXBlYXQgNTBweCAxMHB4O30gLmhlYWRlcmJhciB7IGJhY2tncm91bmQ6IzMzMzsgY29sb3I6d2hpdGU7IGJveC1zaGFkb3c6cmdiYSgwLCAwLCAwLCAwLjUpIDAgMCA1cHggM3B4OyBiYWNrZ3JvdW5kOiNmZmZmZmY7IGNvbG9yOiMwNTE0MWYgfSAuaGVhZGVyYmFyLnRhbGwgeyBwb3NpdGlvbiA6YWJzb2x1dGU7IHRvcCA6MDsgd2lkdGggOjEwMCU7IH0gLmhlYWRlcmJhciAudG9wbmF2IHsgd2lkdGggOjEwMCU7IGhlaWdodCA6MTAwJTsgZGlzcGxheSA6ZmxleDsganVzdGlmeS1jb250ZW50IDpzcGFjZS1iZXR3ZWVuOyBhbGlnbi1pdGVtcyA6Y2VudGVyOyB9IC5oZWFkZXJiYXIudGFsbCAudG9wbmF2IHsganVzdGlmeS1jb250ZW50OnN0cmV0Y2g7IH0gLmhlYWRlcmJhciAudG9wbmF2ID4gZGl2IHsgaGVpZ2h0IDo1MHB4OyBkaXNwbGF5IDpmbGV4OyBhbGlnbi1pdGVtcyA6Y2VudGVyOyB9IC5oZWFkZXJiYXIgLnRvcG5hdiA+IC5sb2dvLWFjdGlvbiB7IGZsZXgtZGlyZWN0aW9uIDpjb2x1bW47IGp1c3RpZnktY29udGVudCA6c3BhY2UtZXZlbmx5OyB9IC5oZWFkZXJiYXIudGFsbCAudG9wbmF2ID4gZGl2Om5vdCguYnVyZ2VyLWJ0bi1jb250YWluZXIpIHsgZmxleC1ncm93OjE7IH0gLmhlYWRlcmJhci50YWxsIC50b3BuYXYgPiBkaXY6bm90KDpsYXN0LW9mLXR5cGUpIHsgYm9yZGVyLXJpZ2h0OjFweCBzb2xpZCAjZGRkOyB9IC5oZWFkZXJiYXIgLm1lbnUuYnVyZ2VyLWJ0bi1jb250YWluZXIgeyBtYXgtd2lkdGggOjQwcHg7IGhlaWdodCA6NTBweDsgfSAuaGVhZGVyYmFyIC5idXJnZXItbWVudS1idXR0b24sIC5oZWFkZXJiYXIudGFsbCAudG9wbmF2ID4gZGl2IHsgZGlzcGxheSA6ZmxleDsganVzdGlmeS1jb250ZW50IDpjZW50ZXI7IGFsaWduLWl0ZW1zIDpjZW50ZXI7IHRleHQtY2VudGVyIDpjZW50ZXI7IH0gLmhlYWRlcmJhciAuYnVyZ2VyLW1lbnUtYnV0dG9uIGkgeyBmb250LXNpemU6MS4yNXJlbTsgY29sb3I6IzA1MTQxZjsgfSAuaGVhZGVyYmFyIC5sb2dvLWFjdGlvbiBpbWcgeyBwYWRkaW5nIDowOyBoZWlnaHQgOjEwMCU7IG1heC1oZWlnaHQgOjUwcHg7IH0gLmhlYWRlcmJhciAuaGVhZGVyLWRlYWxlci1uYW1lIHsgZGlzcGxheSA6YmxvY2s7IHRleHQtYWxpZ24gOmNlbnRlcjsgbGluZS1oZWlnaHQgOjEuM2VtOyBmb250LXNpemUgOjAuOHJlbTsgY29sb3IgOiM4ODg4ODg7IGZvbnQtZmFtaWx5IDp2YXIoLS1mb250LWgxLW1vYik7IGZvbnQtd2VpZ2h0IDp2YXIoLS1mb250LXdlaWdodC1oMS1tb2IpOyB9IC5oZWFkZXJiYXIgLnRvcG5hdiA+IGRpdjpub3QoLmxvZ28tYWN0aW9uKSA+IGEgeyB0ZXh0LWFsaWduIDpjZW50ZXI7IHdpZHRoIDoxMDAlOyBwYWRkaW5nIDowLjc1cmVtOyB9IGRpdiNwaG9uZU51bWJlckRpdiBsaSB7IGxpc3Qtc3R5bGUtdHlwZTpub25lOyBtYXJnaW4tYm90dG9tOjE1cHg7IH0gI25ld3NDb250YWluZXIgYXsgY29sb3I6IzMzMzsgfSAjbmV3c0NvbnRhaW5lciBhLnRvcF9saW5rIHsgY29sb3I6I2ZmZjsgfSAubmV3c19hcnRpY2xlIGgyeyBmb250LXdlaWdodDpub3JtYWw7IGZvbnQtc2l6ZToxLjEyNXJlbSA7IH0gLm5ld3NfYXJ0aWNsZSBoMSxoMixoMyxoNCxoNSxoNnsgZm9udC13ZWlnaHQ6bm9ybWFsOyB9IC5hZGRyZXNzIHsgbGV0dGVyLXNwYWNpbmc6LTFweDsgY29sb3I6IzMzMzsgZm9udC1zaXplOjAuODEzcmVtIDsgZm9udC13ZWlnaHQ6bm9ybWFsOyBsaW5lLWhlaWdodDpub3JtYWw7IHdpZHRoOjUwJTsgZGlzcGxheTppbmxpbmUtYmxvY2s7IH0gLmFkZHJlc3MsIC5sb2dvIHsgdmVydGljYWwtYWxpZ246dG9wOyB9IC5jb250ZW50cyB7IGJhY2tncm91bmQ6I2ZiZmJmYjsgcGFkZGluZzoxMHB4OyB9IC5jb250ZW50cyBoMiB7Zm9udC1zaXplOjEuNXJlbTsgbGluZS1oZWlnaHQ6Mi4yNXJlbTt9IC5jb250ZW50cyBwIHtmb250LXNpemU6MWVtOyBsaW5lLWhlaWdodDoxLjFlbTsgdGV4dC1hbGlnbjpqdXN0aWZ5OyBsZXR0ZXItc3BhY2luZzowO30gLm1vYmlsZV9idXNpbmVzc0Rlc2MgeyBiYWNrZ3JvdW5kOiNmZmZmZmYhaW1wb3J0YW50OyBjb2xvcjojMDUxNDFmIWltcG9ydGFudDsgfSAubWVudSB7IHdpZHRoOjEwMCU7IGNsZWFyOmJvdGg7IH0gI25ld3NDb250YWluZXIgLm5ld3NfYXJ0aWNsZSBpbWdbc3JjKj0nL2NrZmluZGVyJ117IGhlaWdodDphdXRvICFpbXBvcnRhbnQ7IG1heC13aWR0aDoxMDAlICFpbXBvcnRhbnQ7IH0gI25ld3NDb250YWluZXIgLm5ld3NfYXJ0aWNsZSBpbWd7IG1heC13aWR0aDoxMDAlOyBoZWlnaHQ6YXV0bzsgfSAjbmV3c0NvbnRhaW5lciAuY2xlYXJmaXggeyBoZWlnaHQ6MHB4OyB9IC5tZW51IHVsIGxpIGEgc3BhbiB7cGFkZGluZy1sZWZ0OjdweDt9IC5tZW51IHVsIGxpIGEgc3Bhbi50ZXh0dmFsIHtsaW5lLWhlaWdodDozMnB4OyAjI01PQklMRV9NRU5VX0NTUyMjfSAubWVudSB1bCBsaSBhIHNwYW4gaW1nIHtwYWRkaW5nLWxlZnQ6MTBweDsgdmVydGljYWwtYWxpZ246bWlkZGxlO30gLmJvdHRvbSAubGlua3MgYSB7IGNvbG9yOiNmZmZmZmY7IH0gLkVOR0xJU0ggLmJvdHRvbSAubGlua3MgdWwgbGkgYXsgdGV4dC10cmFuc2Zvcm06Y2FwaXRhbGl6ZTsgfSAuYm90dG9tIC5saW5rcyBkaXYgeyBtYXJnaW46MTVweCAwOyBkaXNwbGF5OmJsb2NrOyB9IC5ib3R0b20geyBwYWRkaW5nOjEwcHg7IGRpc3BsYXk6YmxvY2s7IC13ZWJraXQtYm94LXNoYWRvdzppbnNldCAwcHggMTBweCAxMXB4IC0xMXB4IHJnYmEoNTAsIDUwLCA1MCwgMC43NSk7IC1tb3otYm94LXNoYWRvdzogaW5zZXQgMHB4IDEwcHggMTFweCAtMTFweCByZ2JhKDUwLCA1MCwgNTAsIDAuNzUpOyBib3gtc2hhZG93OiBpbnNldCAwcHggMTBweCAxMXB4IC0xMXB4IHJnYmEoNTAsIDUwLCA1MCwgMC43NSk7IGJhY2tncm91bmQtY29sb3I6IzA1MTQxZjsgY29sb3I6I2ZmZmZmZjsgLS10eHQtY29sb3I6I2ZmZmZmZjsgfSAuYm90dG9tIC5saW5rcyB7IGZvbnQtc2l6ZTowLjkzOHJlbSA7IGxpbmUtaGVpZ2h0OjIxcHg7IGNsZWFyOmJvdGg7IHBhZGRpbmctdG9wOjVweDsgfSAuYm90dG9tIC5mb290ZXJfYWRkcmVzcyBzcGFueyBjb2xvcjppbmhlcml0ICFpbXBvcnRhbnQ7IH0gLmJvdHRvbSAubGlua3MgZGl2LmZvb3Rlcl9sb2dvIHsgbWFyZ2luOjEuMjVyZW0gMCAxLjc1cmVtIDA7IH0gLmJvdHRvbSAubGlua3MgZGl2LmZvb3Rlcl9sb2dvIGltZyB7IG1heC13aWR0aDoxODBweDsgbWF4LWhlaWdodDoxMDBweDsgfSBhLmJ1dHRvbi1wcm9tbyB7IGNvbG9yOiNmZmZmZmYhaW1wb3J0YW50OyB9IC5icmVhZGNydW1icyB7IGZvbnQtc2l6ZSA6MC45cmVtOyBjb2xvciA6IzIyMjIyMjsgZm9udC13ZWlnaHQgOmJvbGQ7IHBhZGRpbmcgOjE1cHg7IH0gLmJyZWFkY3J1bWJzIGEge2NvbG9yOiM2NjY7IHRleHQtZGVjb3JhdGlvbjpub25lOyB9IC5ib3R0b20gLmxpbmtzIGRpdi5mb290ZXItY2FybGlzdGluZyB7IHBhZGRpbmctYm90dG9tOjVweDsgfSAuY0Zvb3RlckNhckxpbmtzeyBwYWRkaW5nOjAgMCA1cHggMDsgfSAuc2VhcmNoYm94IHsgYmFja2dyb3VuZDojRTVFNUU1OyB9IC5zZWFyY2hib3ggaDMgLnVpLWFjY29yZGlvbi1oZWFkZXItaWNvbiB7cGFkZGluZzowcHggNHB4IDZweCAwcHg7IGN1cnNvcjpwb2ludGVyOyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL2Rvd25hcnJvdy5wbmcpIG5vLXJlcGVhdCA5OCUgY2VudGVyOyB0b3A6MThweCFpbXBvcnRhbnQ7fSAuZm9ybWFyZWEgeyAtd2Via2l0LWJveC1zaGFkb3c6aW5zZXQgMCAxcHggM3B4IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4zKTsgLW1vei1ib3gtc2hhZG93Omluc2V0IDAgMXB4IDNweCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMyk7IGJveC1zaGFkb3c6aW5zZXQgMCAxcHggM3B4IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4zKTsgfSAuZm9ybWFyZWEgdGFibGUgdHIgdGQgeyBwYWRkaW5nOjVweDsgfSBpbnB1dCwgaW5wdXRbdHlwZT10ZXh0XSwgaW5wdXRbdHlwZT10ZWxdLCBpbnB1dFt0eXBlPWVtYWlsXSwgc2VsZWN0LCB0ZXh0YXJlYXsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjRweDsgLW1vei1ib3JkZXItcmFkaXVzOjRweDsgYm9yZGVyLXJhZGl1czo0cHg7IGJvcmRlcjoxcHggc29saWQgI2NjYzsgcGFkZGluZzo1cHg7IGJveC1zaXppbmc6Ym9yZGVyLWJveDsgfSAuY2hlY2tib3ggeyBwb3NpdGlvbjpyZWxhdGl2ZTsgZGlzcGxheTpibG9jazsgfSAuY2hlY2tib3ggaW5wdXRbdHlwZT0iY2hlY2tib3giXSB7IHdpZHRoOmF1dG87IG9wYWNpdHk6MC4wMDAwMDAwMTsgcG9zaXRpb246YWJzb2x1dGU7IGxlZnQ6MDsgbWFyZ2luLWxlZnQ6LTJweDsgfSAuY2hlY2tib3hfaGVscGVyIHsgcG9zaXRpb246YWJzb2x1dGU7IHRvcDotNHB4OyBsZWZ0Oi00cHg7IGN1cnNvcjpwb2ludGVyOyBkaXNwbGF5OmJsb2NrOyBmb250LXNpemU6MXJlbSA7IHVzZXItc2VsZWN0Om5vbmU7IGNvbG9yOiNlN2U3ZTc7IH0gLmNoZWNrYm94X2hlbHBlcjpiZWZvcmUgeyBjb250ZW50OicnOyBwb3NpdGlvbjphYnNvbHV0ZTsgbGVmdDowOyB0b3A6MDsgbWFyZ2luOjRweDsgd2lkdGg6MTVweDsgaGVpZ2h0OjE1cHg7IHRyYW5zaXRpb246dHJhbnNmb3JtIDAuMjhzIGVhc2U7IGJvcmRlci1yYWRpdXM6MnB4OyBib3JkZXI6MXB4IHNvbGlkICNjY2M7IGJhY2tncm91bmQ6d2hpdGU7IH0gLmNoZWNrYm94X2hlbHBlcjphZnRlciB7IGNvbnRlbnQ6Jyc7IGRpc3BsYXk6YmxvY2s7IHdpZHRoOjhweDsgaGVpZ2h0OjVweDsgYm9yZGVyLWJvdHRvbToycHggc29saWQgIzMzMzsgYm9yZGVyLWxlZnQ6MnB4IHNvbGlkICMzMzM7IC13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgtNDVkZWcpIHNjYWxlKDApOyAtbW96LXRyYW5zZm9ybTpyb3RhdGUoLTQ1ZGVnKSBzY2FsZSgwKTsgLW1zLXRyYW5zZm9ybTpyb3RhdGUoLTQ1ZGVnKSBzY2FsZSgwKTsgdHJhbnNmb3JtOnJvdGF0ZSgtNDVkZWcpIHNjYWxlKDApOyBwb3NpdGlvbjphYnNvbHV0ZTsgdG9wOjdweDsgbGVmdDo4cHg7IH0gLmNoZWNrYm94IGlucHV0W3R5cGU9ImNoZWNrYm94Il1jaGVja2VkIH4gLmNoZWNrYm94X2hlbHBlcjo6YmVmb3JlIHsgY29sb3I6IzMzMzsgfSAuY2hlY2tib3ggaW5wdXRbdHlwZT0iY2hlY2tib3giXTpjaGVja2VkIH4gLmNoZWNrYm94X2hlbHBlcjo6YWZ0ZXIgeyAtd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoLTQ1ZGVnKSBzY2FsZSgxKTsgLW1vei10cmFuc2Zvcm06cm90YXRlKC00NWRlZykgc2NhbGUoMSk7IC1tcy10cmFuc2Zvcm06cm90YXRlKC00NWRlZykgc2NhbGUoMSk7IHRyYW5zZm9ybTpyb3RhdGUoLTQ1ZGVnKSBzY2FsZSgxKTsgfSAuY2hlY2tib3ggbGFiZWwgeyBtaW4taGVpZ2h0OjI0cHg7IHBhZGRpbmctbGVmdDoyNHB4OyBtYXJnaW4tYm90dG9tOjA7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgY3Vyc29yOnBvaW50ZXI7IHZlcnRpY2FsLWFsaWduOnN1YjsgfSAuY2hlY2tib3ggaW5wdXRbdHlwZT0iY2hlY2tib3giXTpmb2N1cyArIGxhYmVsOjpiZWZvcmUgeyBvdXRsaW5lOnJnYig1OSwgMTUzLCAyNTIpIGF1dG8gNXB4OyB9IHNlbGVjdHsgZm9udC1zaXplOjAuOTM4cmVtIDsgfSAuZHJvcGRvd24ge3dpZHRoOjk1JTsgbWFyZ2luOmF1dG8gNXB4O30gLmJ1dHRvbiB7YmFja2dyb3VuZDojMzMzOyBjb2xvcjojZmZmOyBmb250LXNpemU6MS4xZW07IHRleHQtYWxpZ246Y2VudGVyOyB3aWR0aDozMDBweDsgcGFkZGluZzoxNXB4OyBjdXJzb3I6cG9pbnRlcn0gLmltYWdlX2JveCB7IHBvc2l0aW9uOnJlbGF0aXZlOyBtYXJnaW46N3B4OyB9IC5pbWFnZV9ib3ggaW1neyBib3JkZXI6MXB4IHNvbGlkICNlZWU7IH0gI2NvbnRhaW5lckZsQiB7IHotaW5kZXg6OTk5OTk5OTsgfSAuaW1hZ2VfcmliYm9uIHsgcG9zaXRpb246YWJzb2x1dGU7IGxlZnQ6M3B4OyB0b3A6LTRweDsgei1pbmRleDo4NTA7IG92ZXJmbG93OmhpZGRlbjsgd2lkdGg6MTEycHg7IGhlaWdodDoxMTJweDsgdGV4dC1hbGlnbjpyaWdodDsgfSAuaW1hZ2VfcmliYm9uIHNwYW4geyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojMDUxNDFmOyB0ZXh0LWFsaWduOmNlbnRlcjsgbGluZS1oZWlnaHQ6MjhweDsgdHJhbnNmb3JtOnJvdGF0ZSgtNDVkZWcpOyAtd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoLTQ1ZGVnKTsgd2lkdGg6MTQ4cHg7IGRpc3BsYXk6YmxvY2s7IGJhY2tncm91bmQ6I2ZmZmZmZjsgYm94LXNoYWRvdzowIDNweCAxMHB4IC01cHggcmdiYSgwLCAwLCAwLCAxKTsgcG9zaXRpb246YWJzb2x1dGU7IHRvcDozMHB4OyBsZWZ0Oi0zMHB4OyB9IC5pbWFnZV9yaWJib24gc3Bhbjo6YmVmb3JlIHsgY29udGVudDoiIjsgcG9zaXRpb246YWJzb2x1dGU7IGxlZnQ6MHB4OyB0b3A6MTAwJTsgei1pbmRleDotMTsgYm9yZGVyLWxlZnQ6M3B4IHNvbGlkICNmZmZmZmY7IGJvcmRlci1yaWdodDozcHggc29saWQgdHJhbnNwYXJlbnQ7IGJvcmRlci1ib3R0b206M3B4IHNvbGlkIHRyYW5zcGFyZW50OyBib3JkZXItdG9wOjNweCBzb2xpZCAjZmZmZmZmOyB9IC5pbWFnZV9yaWJib24gc3Bhbjo6YWZ0ZXIgeyBjb250ZW50OiIiOyBwb3NpdGlvbjphYnNvbHV0ZTsgcmlnaHQ6MHB4OyB0b3A6MTAwJTsgei1pbmRleDotMTsgYm9yZGVyLWxlZnQ6M3B4IHNvbGlkIHRyYW5zcGFyZW50OyBib3JkZXItcmlnaHQ6M3B4IHNvbGlkICNmZmZmZmY7IGJvcmRlci1ib3R0b206M3B4IHNvbGlkIHRyYW5zcGFyZW50OyBib3JkZXItdG9wOjNweCBzb2xpZCAjZmZmZmZmOyB9IC5yaWJib24tY29udGFpbmVyIHsgd2lkdGggOjIwMHB4OyBoZWlnaHQgOjIwMHB4OyBvdmVyZmxvdyA6aGlkZGVuOyBwb3NpdGlvbiA6YWJzb2x1dGU7IHRvcCA6MDsgbGVmdCA6MDsgfSAucmliYm9uLWNvbnRhaW5lciAuY29ybmVyLXJpYmJvbiB7IHotaW5kZXggOjU1NTsgbWFyZ2luIDowOyBwYWRkaW5nIDowLjVyZW0gMCAhaW1wb3J0YW50OyBib3gtc2hhZG93IDowIDNweCAxMHB4IC01cHggcmdiYSgwLCAwLCAwLCAxKTsgZm9udC1zaXplIDoxcmVtOyBsaW5lLWhlaWdodCA6MTJweDsgdGV4dC1hbGlnbiA6Y2VudGVyOyBwb3NpdGlvbiA6YWJzb2x1dGU7IHRvcCA6MDsgbGVmdCA6MDsgdHJhbnNmb3JtIDp0cmFuc2xhdGVYKC0zNSUpIHRyYW5zbGF0ZVkoMCUpIHJvdGF0ZSgtNDVkZWcpOyB0cmFuc2Zvcm0tb3JpZ2luIDp0b3AgcmlnaHQ7IGJhY2tncm91bmQgOnZhcigtLWNvcm5lci1yaWJib24tYmctY29sb3IpOyBjb2xvciA6dmFyKC0tY29ybmVyLXJpYmJvbi10ZXh0LWNvbG9yKTsgfSAucmliYm9uLWNvbnRhaW5lciAuY29ybmVyLXJpYmJvbjpiZWZvcmUsIC5yaWJib24tY29udGFpbmVyIC5jb3JuZXItcmliYm9uOmFmdGVyIHsgY29udGVudCA6IiI7IHBvc2l0aW9uIDphYnNvbHV0ZTsgdG9wIDowOyBtYXJnaW4gOjAgLTFweDsgd2lkdGggOjEwMCU7IGhlaWdodCA6MTAwJTsgYmFja2dyb3VuZCA6dmFyKC0tY29ybmVyLXJpYmJvbi1iZy1jb2xvcik7IH0gLnJpYmJvbi1jb250YWluZXIgLmNvcm5lci1yaWJib246YmVmb3JlIHsgbGVmdDoxMDAlOyB9IC5yaWJib24tY29udGFpbmVyIC5jb3JuZXItcmliYm9uOmFmdGVyIHsgcmlnaHQ6MTAwJTsgfSAuaGVhZGluZyB7IG1pbi1oZWlnaHQ6MzVweDsgYm9yZGVyLWJvdHRvbToxcHggc29saWQgIzgwODA4MDsgYmFja2dyb3VuZDojY2NjY2NjOyB0ZXh0LWFsaWduOmNlbnRlcjsgcGFkZGluZzoxMHB4IDVweCA1cHggNXB4OyB9IC5oZWFkaW5nIHRhYmxleyB3aWR0aDoyMjVweDsgbWFyZ2luOjAgYXV0bzsgfSAjc2VhcmNoQ29udGFpbmVyIC5pdGVtIHsgYm9yZGVyLWJvdHRvbToxcHggc29saWQgcmdiYSgwLDAsMCwwLjEpOyBib3JkZXItdG9wOjFweCBzb2xpZCByZ2JhKDI1NSwyNTUsMjU1LDAuNCk7IHBhZGRpbmc6MTBweCBpbmhlcml0OyBtYXJnaW46MCAwIDAgMDsgZGlzcGxheTpibG9jazsgY2xlYXI6Ym90aDsgbWluLWhlaWdodDo4MHB4OyBmb250LXNpemU6MC44NzVyZW0gOyB9ICNzZWFyY2hDb250YWluZXIgLml0ZW0gaW1nIHtmbG9hdDpsZWZ0OyB3aWR0aDo5MHB4OyAtd2Via2l0LWJvcmRlci1yYWRpdXM6NHB4OyAtbW96LWJvcmRlci1yYWRpdXM6NHB4OyBib3JkZXItcmFkaXVzOjRweDsgYm9yZGVyOjNweCBzb2xpZCAjZmZmOyBtYXJnaW46LjNlbSAxMHB4OyAtd2Via2l0LWJveC1zaGFkb3c6MCAxcHggM3B4IHJnYmEoMCwgMCwgMCwgMC40KTsgLW1vei1ib3gtc2hhZG93OjAgMXB4IDNweCByZ2JhKDAsIDAsIDAsIDAuNCk7IGJveC1zaGFkb3c6MCAxcHggM3B4IHJnYmEoMCwgMCwgMCwgMC40KTsgfSAjc2VhcmNoQ29udGFpbmVyIC5pdGVtIGgzIHsgbWFyZ2luOjAgMCAwIDA7IHBhZGRpbmc6MCAwIDAgMDsgZm9udC1zaXplOjFyZW0gOyBmb250LXdlaWdodDpub3JtYWw7IGNvbG9yOiMxMTE7IGxpbmUtaGVpZ2h0OjE4cHg7IG1hcmdpbi10b3A6NXB4OyB9IC5wcmljZSwgLmRldGFpbHMgeyAtd2Via2l0LWJvcmRlci1yYWRpdXM6NnB4OyAtbW96LWJvcmRlci1yYWRpdXM6NnB4OyBib3JkZXItcmFkaXVzOjZweDsgLXdlYmtpdC1ib3gtc2hhZG93Omluc2V0IDAgMXB4IDNweCByZ2JhKDAsIDAsIDAsIDAuNCk7IC1tb3otYm94LXNoYWRvdzppbnNldCAwIDFweCAzcHggcmdiYSgwLCAwLCAwLCAwLjQpOyBib3gtc2hhZG93Omluc2V0IDAgMXB4IDNweCByZ2JhKDAsIDAsIDAsIDAuNCk7IGZvbnQtd2VpZ2h0OmJvbGQ7IHBhZGRpbmc6N3B4OyBmbG9hdDpsZWZ0OyBkaXNwbGF5OmJsb2NrOyB9IC5wcmljZV91c2VkX2xlZnQsLnByaWNlX3VzZWRfcmlnaHR7IHRleHQtYWxpZ246bGVmdDsgZm9udC1zaXplOjEuNzVyZW0gOyBmb250LXdlaWdodDpib2xkOyBiYWNrZ3JvdW5kLWNvbG9yOiNGMkYyRjI7IGhlaWdodDo2MHB4OyB0ZXh0LWFsaWduOmNlbnRlcjsgcGFkZGluZzowOyB3aWR0aDo1MCU7IH0gLnNwZWNzX3VzZWRfbGVmdCB7IHBhZGRpbmc6OHB4IDEwcHg7IGNvbG9yOiNhYWFhYWE7IH0gLnNwZWNzX3VzZWRfcm93MiB7IGJhY2tncm91bmQtY29sb3I6I0YyRjJGMjsgfSAuc3BlY3NfdXNlZF9hZnRlcnsgYmFja2dyb3VuZC1jb2xvcjojRjJGMkYyOyBwYWRkaW5nLWJvdHRvbToxMHB4OyBib3JkZXItdG9wOjFweCBzb2xpZCAjY2NjY2NjOyB9IC51c2VkX2RldGFpbHNfYnRueyBkaXNwbGF5OmJsb2NrOyB3aWR0aDoyNDBweDsgYm9yZGVyLXJhZGl1czozcHg7IHZlcnRpY2FsLWFsaWduOm1pZGRsZTsgYmFja2dyb3VuZDojMDAwOyBtYXJnaW46MCBhdXRvOyBwYWRkaW5nOjEwcHggMDsgfSAudXNlZF9kZXRhaWxzX2J0biBheyBjb2xvcjojRkZGOyB9IC5wcmljZV91c2VkX2xlZnQgc3BhbnsgY29sb3I6I0QzRDNEMzsgfSAudXNlZF9zZWFyY2hfcmViYXRleyBkaXNwbGF5OmJsb2NrOyBmb250LXNpemU6MS4xODhyZW0gOyBmb250LXdlaWdodDpib2xkOyB9IC5yZWJhdGVfcHJpY2V7IGNvbG9yOnJlZDsgfSAudXNlZF9zZWFyY2hfcmViYXRlX3RkeyBwYWRkaW5nOjEwcHggMDsgdGV4dC1hbGlnbjpjZW50ZXI7IGJhY2tncm91bmQ6I2U2ZTZlNjsgfSAucHJpY2UgeyBiYWNrZ3JvdW5kLWNvbG9yOiNjZGNkY2Q7IGNvbG9yOiMxMTE7IGZvbnQtc2l6ZTowLjc1cmVtIDsgcGFkZGluZy10b3A6OHB4OyB3aWR0aDozNiU7IHBhZGRpbmctYm90dG9tOjVweDsgfSBwcmljZV9zZWFyY2hfdXNlZHsgYmFja2dyb3VuZDojRjJGMkYyOyBoZWlnaHQ6NDBweDsgdGV4dC1hbGlnbjpjZW50ZXI7IHZlcnRpY2FsLWFsaWduOm1pZGRsZTsgZm9udC1zaXplOjEuNTYzcmVtIDsgZm9udC13ZWlnaHQ6Ym9sZDsgfSAudXNlZF9vbGRfcHJpY2V7IGZvbnQtc2l6ZToxLjEyNXJlbSA7IGNvbG9yOiNhYWFhYWE7IGxpbmUtaGVpZ2h0OjEwcHg7IH0gLmRldGFpbHMgeyBiYWNrZ3JvdW5kOi13ZWJraXQtZ3JhZGllbnQobGluZWFyLGxlZnQgdG9wLGxlZnQgYm90dG9tLGNvbG9yLXN0b3AoMC4wNSwjMDAwMDAwKSxjb2xvci1zdG9wKDEsIzMzMzMzMykpOyBiYWNrZ3JvdW5kOi1tb3otbGluZWFyLWdyYWRpZW50KHRvcCwjMDAwMDAwNSUsIzMzMzMzMzEwMCUpOyBiYWNrZ3JvdW5kOi13ZWJraXQtbGluZWFyLWdyYWRpZW50KHRvcCwjMDAwMDAwNSUsIzMzMzMzMzEwMCUpOyBiYWNrZ3JvdW5kOi1vLWxpbmVhci1ncmFkaWVudCh0b3AsIzAwMDAwMDUlLCMzMzMzMzMxMDAlKTsgYmFja2dyb3VuZDotbXMtbGluZWFyLWdyYWRpZW50KHRvcCwjMDAwMDAwNSUsIzMzMzMzMzEwMCUpOyBiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCh0byBib3R0b20sIzAwMDAwMDUlLCMzMzMzMzMxMDAlKTsgZmlsdGVyOnByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5ncmFkaWVudChzdGFydENvbG9yc3RyPScjMDAwMDAwJyxlbmRDb2xvcnN0cj0nIzMzMzMzMycsR3JhZGllbnRUeXBlPTApOyBiYWNrZ3JvdW5kLWNvbG9yOiMzMzMzMzM7IG1hcmdpbi1yaWdodDoxMHB4OyBmb250LXNpemU6MC45MzhyZW0gOyBtYXJnaW4tbGVmdDo1cHg7IHBhZGRpbmc6OHB4IDIwcHg7IG1hcmdpbi1yaWdodDowcHg7IH0gLnZpZGVvc19waWN0dXJlc19idXR0b25zX2NvbnRhaW5lciB7IG1hcmdpbi1ib3R0b206MHB4IWltcG9ydGFudDsgfSAuaS1jYW1lcmE6YmVmb3JleyBjb250ZW50OiJcZjAzZCI7IGZvbnQtZmFtaWx5OiJGb250IEF3ZXNvbWUgNSBQcm8iOyBwYWRkaW5nLXJpZ2h0OjVweDsgZm9udC13ZWlnaHQ6OTAwOyB3aWR0aDoxNXB4OyB9IC5pLXBob3RvOmJlZm9yZSB7IGNvbnRlbnQ6IlxmMDMwIjsgZm9udC1mYW1pbHk6IkZvbnQgQXdlc29tZSA1IFBybyI7IHBhZGRpbmctcmlnaHQ6NXB4OyBmb250LXdlaWdodDo5MDA7IHdpZHRoOjE1cHg7IH0gLmZ1bGxXaWR0aEJ1dHRvbnsgd2lkdGg6OTAlOyBwYWRkaW5nOnZhcigtLXMpOyBmb250LXdlaWdodDpub3JtYWw7IGJveC1zaXppbmc6Ym9yZGVyLWJveDsgbWFyZ2luLWxlZnQ6NSU7IG1hcmdpbi1yaWdodDo1JTsgYm9yZGVyLXJhZGl1czozcHg7IHBvc2l0aW9uOnJlbGF0aXZlOyB9IC5mdWxsV2lkdGhCdXR0b24gYSB7IGRpc3BsYXk6aW5saW5lLWJsb2NrOyB9IC5mYi5mdWxsV2lkdGhCdXR0b257IHBvc2l0aW9uOnJlbGF0aXZlOyBiYWNrZ3JvdW5kLWNvbG9yOiMzYTU4OTg7IGNvbG9yOiNmZmY7IH0gLmZiLmZ1bGxXaWR0aEJ1dHRvbiBhIHsgY29sb3I6I2ZmZjsgbWFyZ2luLWxlZnQ6NTBweDsgfSAuZmIgc3Bhbi5mYS1zdGFja3sgY29sb3I6IzNhNTg5ODsgcG9zaXRpb246YWJzb2x1dGU7IHRvcDowOyB9IC50ZXh0X3NsaWRlIGEgeyBoZWlnaHQ6MTRweCFpbXBvcnRhbnQ7IH0gI3ZkcF9wcmljZV9ibG9jaywjdmRwX3ByaWNlX2Jsb2NrX3VzZWR7IGJvcmRlci1ib3R0b206MXB4IHNvbGlkICMwMDA7IGJhY2tncm91bmQtY29sb3I6dmFyKC0tbGlnaHQpOyBib3JkZXItY29sb3I6I2JiYjsgfSAjdmRwX3ByaWNlX2Jsb2NreyBtaW4taGVpZ2h0OjMwcHg7IH0gZGl2I2NvbXBsX3RhYmxlIGEgeyBjb2xvcjojMzMzOyB9IC5jaGV2cm9uLXJpZ2h0OmFmdGVyIHsgY29udGVudDoiXGYwNTQiOyBmb250LWZhbWlseToiRm9udCBBd2Vzb21lIDUgUHJvIjsgZm9udC1zdHlsZTpub3JtYWw7IGZvbnQtd2VpZ2h0OjkwMDsgdGV4dC1kZWNvcmF0aW9uOmluaGVyaXQ7IHBvc2l0aW9uOmFic29sdXRlOyByaWdodDoyJTsgfSBmdWxsV2lkdGhCdXR0b246YmVmb3JlIHsgZm9udC1mYW1pbHk6IkZvbnQgQXdlc29tZSA1IFBybyI7IGZvbnQtc3R5bGU6bm9ybWFsOyBmb250LXdlaWdodDo5MDA7IHRleHQtZGVjb3JhdGlvbjppbmhlcml0OyBwYWRkaW5nLXJpZ2h0OjVweDsgcG9zaXRpb246YWJzb2x1dGU7IHJpZ2h0OjA7IHBhZGRpbmctdG9wOjJweDsgfSAjc29jaWFsX21lZGlhX2ljb25zX2RpdnsgbWFyZ2luLXRvcDoxNXB4OyB9ICNzb2NpYWxfbWVkaWFfaWNvbnNfZGl2ICogKyAqeyBtYXJnaW4tbGVmdDoxcmVtOyB9ICNzb2NpYWxfbWVkaWFfaWNvbnNfZGl2IC5mYWJ7IGZvbnQtc2l6ZToxLjVyZW07IH0gI3NvY2lhbF9tZWRpYV9pY29uc19kaXYgYXsgY29sb3I6IzgwODA4MDsgfSAuc29jaWFsIHsgdGV4dC1hbGlnbjpjZW50ZXI7IHdpZHRoOjE5cHg7IGhlaWdodDoxOXB4OyBmbG9hdDpyaWdodDsgYmFja2dyb3VuZDpyZ2IoMjU1LDI1NSwyNTUpOyBib3JkZXI6MXB4IHNvbGlkIHJnYigyMDQsMjA0LDIwNCk7IGJveC1zaGFkb3c6MCAycHggNHB4IHJnYmEoMCwwLDAsMC4xNSksIGluc2V0IDAgMCA1MHB4IHJnYmEoMCwwLDAsMC4xKTsgYm9yZGVyLXJhZGl1czoxMDBweDsgbWFyZ2luOjAgMTBweCAwcHggMDsgcGFkZGluZzo5cHg7IH0gLnNvY2lhbC1zaGFyZSB7IHdpZHRoOjE5cHg7IGhlaWdodDoxOXB4OyBiYWNrZ3JvdW5kOnJnYigyNTUsMjU1LDI1NSk7IGJvcmRlci1yYWRpdXM6MTAwcHg7IG1hcmdpbjowIDEwcHggMHB4IDA7IH0gI3NvY2lhbF9tZWRpYV9pY29uc19kaXYgYS5zb2NpYWwgLmZhYnsgZm9udC1zaXplOjEuMTg4cmVtIDsgfSAuc29jaWFsIGl7IGZvbnQtc2l6ZToxLjI1cmVtIDsgfSAuZ29vZ2xlLXBsdXM6aG92ZXJ7YmFja2dyb3VuZDojREQ0QjM5O2NvbG9yOiNGRkYhaW1wb3J0YW50O30gLmZhY2Vib29rOmhvdmVye2JhY2tncm91bmQ6IzNiNTk5ODtjb2xvcjojRkZGIWltcG9ydGFudDt9IC50d2l0dGVyOmhvdmVye2JhY2tncm91bmQ6IzAwYWNlZTtjb2xvcjojRkZGIWltcG9ydGFudDt9IC5waW50ZXJlc3Q6aG92ZXJ7YmFja2dyb3VuZDojYzgyMzJjO2NvbG9yOiNGRkYhaW1wb3J0YW50O30gLmxpbmtlZGluOmhvdmVye2JhY2tncm91bmQ6IzBlNzZhODtjb2xvcjojRkZGIWltcG9ydGFudDt9IC5za3lwZTpob3ZlcntiYWNrZ3JvdW5kOiMwMGFmZjA7Y29sb3I6I0ZGRiFpbXBvcnRhbnQ7fSAueW91dHViZTpob3ZlcntiYWNrZ3JvdW5kOiNjNDMwMmI7Y29sb3I6I0ZGRiFpbXBvcnRhbnQ7fSAudHVtYmxyOmhvdmVye2JhY2tncm91bmQ6IzM0NTI2Zjtjb2xvcjojRkZGIWltcG9ydGFudDt9IC5kZXRhaWxzIGEgeyBjb2xvcjojZmZmOyBkaXNwbGF5OmJsb2NrOyB0ZXh0LWFsaWduOmNlbnRlcjsgfSAucGFnaW5hdGlvbiB7Y2xlYXI6Ym90aDsgcGFkZGluZzo1cHg7IHBhZGRpbmctbGVmdDoxMDBweDt9IC5wYWdpbmF0aW9uIGEsIC5wYWdpbmF0aW9uIGEuc2VsZWN0ZWQgeyBkaXNwbGF5OmJsb2NrOyBwYWRkaW5nOjVweCA3cHg7IHBhZGRpbmctdG9wOjhweDsgZm9udC1zaXplOjAuOTM4cmVtIDsgY29sb3I6I2ZmZjsgZm9udC13ZWlnaHQ6Ym9sZDsgdGV4dC1hbGlnbjpjZW50ZXI7IGZsb2F0OmxlZnQ7IHdpZHRoOjEzcHg7IG1hcmdpbjo0cHg7IC13ZWJraXQtYm9yZGVyLXJhZGl1czo2cHg7IC1tb3otYm9yZGVyLXJhZGl1czo2cHg7IGJvcmRlci1yYWRpdXM6NnB4OyB9IC5wYWdpbmF0aW9uIGEge2JhY2tncm91bmQ6IzY2NiA7fSAucGFnaW5hdGlvbiBhLnNlbGVjdGVkIHtiYWNrZ3JvdW5kOiMyMjIgO30gLnBhZ2VubzV7d2lkdGg6MTAwJTttYXJnaW46MzBweCAwIDIwcHggMHB4OyBwYWRkaW5nOjA7IGZsb2F0OmxlZnR9IC5wYWdlX25hbWUxOCBheyBjb2xvcjojMzMzOyB9IC5wYWdlbm8ye2hlaWdodDoyNHB4OyB9IC5wYWdlbm8yIHVseyBsaXN0LXN0eWxlLXR5cGU6bm9uZTsgbWFyZ2luOjA7IHBhZGRpbmc6MDsgdGV4dC10cmFuc2Zvcm06bm9uZTsgfSAucGFnZW5vMiB1bCBsaXsgbGlzdC1zdHlsZS10eXBlOm5vbmU7IG1hcmdpbjowOyBkaXNwbGF5OmlubGluZTt9IC5wYWdlbm8yIHVsIGxpIGF7IGxpc3Qtc3R5bGUtdHlwZTpub25lOyBtYXJnaW46MDsgZGlzcGxheTpibG9jazsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzMyMzIzMjsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IHBhZGRpbmc6MCA3cHg7IG1hcmdpbi1yaWdodDoycHg7IGZvbnQtd2VpZ2h0OmJvbGQ7IGxpbmUtaGVpZ2h0OjI0cHg7IHRleHQtdHJhbnNmb3JtOm5vbmU7IHRleHQtYWxpZ246Y2VudGVyOyB0ZXh0LXRyYW5zZm9ybTpub25lOyBiYWNrZ3JvdW5kOiNiM2I0YjU7IGZsb2F0OmxlZnQ7IC1tb3otYm9yZGVyLXJhZGl1czo0cHg7IC13ZWJraXQtYm9yZGVyLXJhZGl1czo0cHg7IGJvcmRlci1yYWRpdXM6NHB4OyAta2h0bWwtYm9yZGVyLXJhZGl1czo0cHg7fSAucGFnZW5vMiB1bCBsaSBhOmhvdmVyeyBsaXN0LXN0eWxlLXR5cGU6bm9uZTsgbWFyZ2luOjA7IGRpc3BsYXk6YmxvY2s7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiNGRkZGRkY7IHRleHQtZGVjb3JhdGlvbjpub25lOyBwYWRkaW5nOjAgN3B4OyBtYXJnaW4tcmlnaHQ6MnB4OyBmb250LXdlaWdodDpib2xkOyBsaW5lLWhlaWdodDoyNHB4OyB0ZXh0LXRyYW5zZm9ybTpub25lOyB0ZXh0LWFsaWduOmNlbnRlcjsgdGV4dC10cmFuc2Zvcm06bm9uZTsgYmFja2dyb3VuZDojMjgyODI4OyBmbG9hdDpsZWZ0OyAtbW96LWJvcmRlci1yYWRpdXM6NHB4OyAtd2Via2l0LWJvcmRlci1yYWRpdXM6NHB4OyBib3JkZXItcmFkaXVzOjRweDsgLWtodG1sLWJvcmRlci1yYWRpdXM6NHB4O30gLnBhZ2VubzIgbGkgYS5hY3RpdmV7IGxpc3Qtc3R5bGUtdHlwZTpub25lOyBtYXJnaW46MDsgZGlzcGxheTpibG9jazsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6I0ZGRkZGRjsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IHBhZGRpbmc6MCA3cHg7IG1hcmdpbi1yaWdodDoycHg7IGZvbnQtd2VpZ2h0OmJvbGQ7IGxpbmUtaGVpZ2h0OjI0cHg7IHRleHQtdHJhbnNmb3JtOm5vbmU7IHRleHQtYWxpZ246Y2VudGVyOyB0ZXh0LXRyYW5zZm9ybTpub25lOyBiYWNrZ3JvdW5kOiMyODI4Mjg7IGZsb2F0OmxlZnQ7IC1tb3otYm9yZGVyLXJhZGl1czo0cHg7IC13ZWJraXQtYm9yZGVyLXJhZGl1czo0cHg7IGJvcmRlci1yYWRpdXM6NHB4OyAta2h0bWwtYm9yZGVyLXJhZGl1czo0cHg7fSAjcGFnZURpdiBhIHsgY29sb3I6I2ZmZjsgfSAjc2VhcmNoX3VzZWRfZmlsdGVyLWJveCwuZmlsdGVyLWFkansgYmFja2dyb3VuZDojODA4MDgwOyBjb2xvcjp3aGl0ZTsgdGV4dC1hbGlnbjpjZW50ZXI7IH0gI3NlYXJjaF91c2VkX2ZpbHRlci1ib3h7IHBhZGRpbmc6MTVweCA1cHg7IH0gLmZpbHRlci1hZGp7IHBhZGRpbmc6NXB4IDVweDsgfSAjc2VhcmNoX3VzZWRfZmlsdGVyLWJveCAuZmEsIC5maWx0ZXItYWRqIC5mYXsgZm9udC1zaXplOjAuOTM4cmVtIDsgfSAudWktYWNjb3JkaW9uLWhlYWRlci1pY29ueyBtYXJnaW4tdG9wOi0xMXB4IWltcG9ydGFudDsgfSAudWktYWNjb3JkaW9uLWNvbnRlbnR7IGJvcmRlci1yYWRpdXM6MCFpbXBvcnRhbnQ7IGJvcmRlcjpub25lIWltcG9ydGFudDsgYm94LXNoYWRvdzpub25lIWltcG9ydGFudDsgfSAjY2l0eVRpdGxleyBjb2xvcjojNjY2NjY2OyBmb250LXNpemU6MC45MzhyZW0gOyBmb250LXdlaWdodDpub3JtYWw7IGRpc3BsYXk6YmxvY2s7IH0gLnRpdGxlSW5mb3sgZm9udC1zaXplOjEuMTI1cmVtICFpbXBvcnRhbnQ7IGZvbnQtd2VpZ2h0Om5vcm1hbCFpbXBvcnRhbnQ7IGRpc3BsYXk6YmxvY2shaW1wb3J0YW50OyB9IC50aXRsZUNhcnsgZm9udC1zaXplOjEuMzc1cmVtICFpbXBvcnRhbnQ7IGZvbnQtd2VpZ2h0Om5vcm1hbCFpbXBvcnRhbnQ7IGZvbnQtd2VpZ2h0OmJvbGQhaW1wb3J0YW50OyB9IC5zZWFyY2hyZXN1bHQgaDIsICNTZWFyY2hUaXRsZSB7IGNvbG9yOiMzMzM7IGZvbnQtc2l6ZToxLjU2M3JlbSA7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgbWFyZ2luOjAgMCAwIDA7IHBhZGRpbmc6MjVweCAwIDEwcHggMTVweDsgY2xlYXI6Ym90aDsgYmFja2dyb3VuZC1jb2xvcjojZmZmZmZmOyB9IC5uZXctaXRlbSB7IGJvcmRlci1ib3R0b206MXB4IHNvbGlkIHJnYmEoMCwwLDAsMC4xKTsgcGFkZGluZzowIDsgbWFyZ2luOjAgMCAwIDA7IGRpc3BsYXk6YmxvY2s7IGNsZWFyOmJvdGg7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGZsb2F0OmxlZnQ7IHdpZHRoOjEwMCU7IGJhY2tncm91bmQtY29sb3I6I2ZmZjsgfSAubmV3LWl0ZW06bGFzdC1vZi10eXBleyBib3JkZXItYm90dG9tOm5vbmU7IH0gLm5ld19wcmljZV9ibG9ja3sgZm9udC1zaXplOjAuODc1cmVtIDsgZm9udC13ZWlnaHQ6bm9ybWFsOyBmbG9hdDpsZWZ0OyBjbGVhcjpib3RoOyBtYXJnaW4tdG9wOi01cHg7IH0gLm5ld19tYWtlX25hbWV7IGRpc3BsYXk6YmxvY2s7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgbWFyZ2luLWJvdHRvbTotM3B4OyB9IC5uZXctaXRlbSAudGh1bWIgeyBmbG9hdDpyaWdodDsgd2lkdGg6NDAlOyBtYXJnaW46LjNlbSAwcHg7IHRleHQtYWxpZ246cmlnaHQ7IH0gLm5ld2Nhcl9ibG9ja19kZXNjIGF7IGNvbG9yOiMzMzMzMzM7IH0gLm5ld19tb2RlbF9uYW1leyBmb250LXNpemU6MS4xMjVyZW0gOyBmbG9hdDpsZWZ0OyBtYXJnaW4tcmlnaHQ6NXB4OyBmb250LXdlaWdodDpib2xkOyB9IC5uZXdfeWVhcnsgZmxvYXQ6bGVmdDsgfSAubmV3LWl0ZW0gLnRodW1iIGltZ3sgbWF4LXdpZHRoOjEwMCU7IGJvcmRlcjowOyB9IC5uZXdjYXJfYmxvY2tfZGVzYyB7IG1hcmdpbi10b3A6MTBweDsgcG9zaXRpb246cmVsYXRpdmU7IHBhZGRpbmc6MDsgbGluZS1oZWlnaHQ6MjBweDsgd2lkdGg6NTAlOyBwYWRkaW5nLWxlZnQ6MjVweDsgZmxvYXQ6bGVmdDsgY29sb3I6IzMzMzsgfSBuZXdjYXJfYmxvY2sgaDN7IH0gLm5ldy1pdGVtIGgzIHsgZmxvYXQ6bGVmdDsgcGFkZGluZzoxMHB4OyBmb250LXNpemU6MS4xMjVyZW0gOyBmb250LXdlaWdodDpib2xkOyB3aWR0aDo5NSU7IH0gLm5ldy1pdGVtIC5hcnJvdyB7IGZsb2F0OmxlZnQ7IGJhY2tncm91bmQtY29sb3I6I0ZGRkZGRjsgYm9yZGVyLXJhZGl1czoxNHB4OyB3aWR0aDoxNXB4OyBtYXJnaW46MzBweCA1cHggMTBweCAxMHB4OyB9IC5uZXctZGV0YWlscyBoMSwgLm5ldy1kZXRhaWxzIGgyICwudXNlZF9zZWFyY2hfaXRlbSBoMiwgLnVzZWQtZGV0YWlscyBoMSwgLm5ldy1kZXRhaWxzIHNwYW4uaDItYWx0IHsgY29sb3I6IzExMTsgY2xlYXI6Ym90aDsgcG9zaXRpb246cmVsYXRpdmU7IHBhZGRpbmctbGVmdDoyMHB4OyBsaW5lLWhlaWdodDoyMXB4OyBtYXJnaW4tbGVmdDoxNXB4OyBtYXJnaW4tcmlnaHQ6MTVweDsgbWFyZ2luLWJvdHRvbToxMHB4OyB9IC5uZXctZGV0YWlscyAudGJvcmRlciB7IHBhZGRpbmctdG9wOjEwcHg7IGJvcmRlci10b3A6MXB4IHNvbGlkICNlN2U3ZTc7IH0gLm5ldy1kZXRhaWxzIGgxIC5tYWtlTW9kZWxZZWFyLCAudXNlZF9zZWFyY2hfaXRlbSBoMiAubWFrZU1vZGVsWWVhciwgLnVzZWQtZGV0YWlscyBoMSAubWFrZU1vZGVsWWVhcnsgZm9udC1zaXplOjEuNTYzcmVtIDsgfSAubmV3LWRldGFpbHMgaDEgLnZlcnNpb25GdWxsLCAudXNlZF9zZWFyY2hfaXRlbSBoMiAudmVyc2lvbkZ1bGwsIC51c2VkLWRldGFpbHMgaDEgLnZlcnNpb25GdWxseyBmb250LXdlaWdodDpub3JtYWw7IGZvbnQtc2l6ZToxcmVtIDsgb3ZlcmZsb3ctd3JhcDphbnl3aGVyZTsgfSAubmV3LWRldGFpbHMgaDEgLmRlYWxlckxjYXRpb25DYXJUaXRsZSwgLnVzZWRfc2VhcmNoX2l0ZW0gaDIgLmRlYWxlckxjYXRpb25DYXJUaXRsZSwgLnVzZWQtZGV0YWlscyBoMSAuZGVhbGVyTGNhdGlvbkNhclRpdGxlIHsgZm9udC13ZWlnaHQ6bm9ybWFsOyBjb2xvcjojNzU3NTc1OyBmb250LXNpemU6MC45MzhyZW0gOyBsZXR0ZXItc3BhY2luZzotMXB4OyB9IC5mdWxsV2lkdGhCdXR0b24gaXsgcGFkZGluZy1yaWdodDo1cHg7IG1pbi13aWR0aDoxOHB4OyB9IC51c2VkLWRldGFpbHMgaDEgc3Bhbi5mYS1jaGV2cm9uLXJpZ2h0eyBtaW4td2lkdGg6MS41cmVtOyBtaW4taGVpZ2h0OjEuNXJlbTsgZm9udC1zaXplOjFyZW07IHBhZGRpbmc6MDsgYm9yZGVyLXJhZGl1czoxcmVtOyBtYXJnaW46MCA1cHggMCAwOyBkaXNwbGF5OmZsZXg7IGFsaWduLWl0ZW1zOmNlbnRlcjsganVzdGlmeS1jb250ZW50OmNlbnRlcjsgfSAubmV3LWRldGFpbHMgI2NhclRpdGxlIC5mYS1jaGV2cm9uLXJpZ2h0LCAudXNlZF9zZWFyY2hfaXRlbSAjY2FyVGl0bGUgLmZhLWNoZXZyb24tcmlnaHQsIC51c2VkLWRldGFpbHMgaDEgLmZhLWNoZXZyb24tcmlnaHR7IGJvcmRlci1yYWRpdXM6MTNweDsgd2lkdGg6MTRweDsgaGVpZ2h0OjE3cHg7IHBhZGRpbmctdG9wOjNweDsgcGFkZGluZy1sZWZ0OjZweDsgbWFyZ2luLWxlZnQ6LTI4cHg7IGZsb2F0OmxlZnQ7IG1hcmdpbi10b3A6MTRweDsgZm9udC1zaXplOjAuODc1cmVtIDsgYm94LXNpemluZzpjb250ZW50LWJveDsgYm9yZGVyOjFweCBzb2xpZCAjMDUxNDFmOyBiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmY7IGNvbG9yOiMwNTE0MWY7IH0gI1NlYXJjaFRpdGxlIC5mYS1jaGV2cm9uLXJpZ2h0eyBib3JkZXItcmFkaXVzOjMwcHg7IHdpZHRoOjIzcHggIWltcG9ydGFudDsgaGVpZ2h0OjI5cHggIWltcG9ydGFudDsgcGFkZGluZy10b3A6M3B4ICFpbXBvcnRhbnQ7IHBhZGRpbmctbGVmdDoxMXB4ICFpbXBvcnRhbnQ7IGZsb2F0OmxlZnQ7IG1hcmdpbi10b3A6OHB4OyBmb250LXNpemU6MS41cmVtICFpbXBvcnRhbnQ7IGJvcmRlcjoxcHggc29saWQgIzA1MTQxZjsgYmFja2dyb3VuZC1jb2xvcjojZmZmZmZmOyBjb2xvcjojMDUxNDFmIDsgbWFyZ2luLXJpZ2h0OjEwcHg7IH0gLmZvb3Rlcl9kaXNjbGFtZXIgYXsgY29sb3I6I2ZmZmZmZiB9IC5uZXdjYXJfYmxvY2tfZGVzYyAuZmEtY2hldnJvbi1yaWdodHsgYm9yZGVyLXJhZGl1czoxMHB4OyB3aWR0aDoxMnB4OyBoZWlnaHQ6MTRweDsgcGFkZGluZy10b3A6MnB4OyBwYWRkaW5nLWxlZnQ6NHB4OyBtYXJnaW4tbGVmdDotMjhweDsgZmxvYXQ6bGVmdDsgbWFyZ2luLXRvcDoxNHB4OyBmb250LXNpemU6MC44MTNyZW0gOyBib3JkZXI6MXB4IHNvbGlkICMwNTE0MWY7IGJhY2tncm91bmQtY29sb3I6I2ZmZmZmZjsgY29sb3I6IzA1MTQxZiA7IH0gLm5ldy1kZXRhaWxzICNtYWluQ29tcGFyZVZpZXcgaDIsIC5uZXctZGV0YWlscyAjbWFpbkNvbXBhcmVWaWV3IHNwYW4uaDItYWx0LCAubmV3LWRldGFpbHMgLmJyb2NodXJlLWltZy1idG4gc3Bhbi5oMi1hbHQsIGgyLmJyb2NodXJlLWltZy10aXRsZSB7IGNvbG9yOiNmZmY7IGZvbnQtc2l6ZTowLjkzOHJlbSA7IGZvbnQtd2VpZ2h0OmJvbGQ7IG1hcmdpbjowIDAgMCAwOyBwYWRkaW5nOjdweCAwIDdweCAxMHB4OyBjbGVhcjpib3RoOyB9IC5uZXctZGV0YWlscyAjbWFpbkNvbXBhcmVWaWV3IHNwYW4uaDItYWx0LCAubmV3LWRldGFpbHMgLmJyb2NodXJlLWltZy1idG4gc3Bhbi5oMi1hbHQgeyBkaXNwbGF5OmJsb2NrOyB9IC5uZXctZGV0YWlscyA+IHAge3BhZGRpbmc6N3B4IDEwcHg7fSAub3RoZXJMaW5rcyB7IG1hcmdpbjozMHB4IDAgMTVweDsgcGFkZGluZzowIDE1cHg7IH0gLm90aGVyTGlua3MgYSB7IGRpc3BsYXk6bGlzdC1pdGVtOyBmb250LXNpemU6MS4xZW07IHRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7IGxpc3Qtc3R5bGUtcG9zaXRpb246aW5zaWRlOyB9IC5vdGhlckxpbmtzIGEgKyBhIHsgbWFyZ2luLXRvcDoxMHB4OyB9IC5yYWl0aW5nLWRldGFpbHMgaDF7IGNvbG9yOiMxMTE7IGZvbnQtc2l6ZToxLjNlbTsgdGV4dC1hbGlnbjpjZW50ZXI7IG1hcmdpbi1ib3R0b206MTBweDsgfSAucmFpdGluZy1kZXRhaWxzIC5ib3gyX3RleHR7IHRleHQtYWxpZ246anVzdGlmeTsgcGFkZGluZzowIDVweDsgfSAucG9zaXRpdmVSYXRpbmdUeHR7cGFkZGluZzoxMHB4O30gLnBvc2l0aXZlUmF0aW5nVHh0IC5idG4tZGVmYXVsdHt0ZXh0LXRyYW5zZm9ybTpub25lO30gLnBvc2l0aXZlUmF0aW5nVHh0IHAge2ZvbnQtc2l6ZToxLjA2M3JlbSA7IHRleHQtYWxpZ246anVzdGlmeTt9IC5wYWdlX25hbWUye3RleHQtYWxpZ246Y2VudGVyO30gLm91cnRlYW0gYSB7IGNvbG9yOiMzMzMzMzM7IH0gI3NlYXJjaF91c2VkX2ZpbHRlcnsgYm9yZGVyOjA7IGJvcmRlci1yYWRpdXM6dW5zZXQ7IGZvbnQtd2VpZ2h0OmJvbGQ7IH0gI3VzZWRPcHRpb25zIC5saXN0aXRlbTphZnRlcnsgY29udGVudDoiXGYwMGMiOyBmb250LWZhbWlseToiRm9udCBBd2Vzb21lIDUgUHJvIjsgZm9udC13ZWlnaHQ6OTAwOyBwYWRkaW5nLXJpZ2h0OjVweDsgd2lkdGg6MTVweDsgZmxvYXQ6cmlnaHQ7IH0gLmxpc3RpdGVtIHsgYm9yZGVyLWJvdHRvbToxcHggc29saWQgcmdiYSgwLDAsMCwwLjEpOyBwYWRkaW5nOjVweCAwOyBmb250LXNpemU6MC45MzhyZW0gOyB9IC5saXN0aXRlbSBpbWcge3dpZHRoOjEwMCUgIWltcG9ydGFudDtoZWlnaHQ6YXV0byAhaW1wb3J0YW50O30gLmxpc3RpdGVtIHNwYW4ge2Rpc3BsYXk6aW5saW5lLWJsb2NrO30gLmxpc3RpdGVtIC5saXN0ZGVzYyB7ZmxvYXQ6bGVmdDsgd2lkdGg6NTAlOyBtYXJnaW4tbGVmdDo1cHg7fSAubGlzdGl0ZW0gLmxpc3R2YWwge2Zsb2F0OnJpZ2h0O3dpZHRoOjQ1JTsgdGV4dC1hbGlnbjpyaWdodDttYXJnaW4tcmlnaHQ6NXB4O30gLmJpZyB7d2lkdGg6OTUlOyBjbGVhcjpib3RoOyBtYXJnaW46MTBweCBhdXRvOyBkaXNwbGF5OmJsb2NrOyBoZWlnaHQ6NDBweDt9IC5wcmljZXRleHQge2NvbG9yOiMxMTE7IGZvbnQtc2l6ZToxcmVtIDsgZm9udC13ZWlnaHQ6Ym9sZDsgbWFyZ2luOjEwcHggMCAwIDA7IGRpc3BsYXk6YmxvY2s7IGZsb2F0OmxlZnR9IC5wcmludCwgLmxpa2Uge2Zsb2F0OnJpZ2h0OyB3aWR0aDo2MHB4O2ZvbnQtc2l6ZTowLjc1cmVtIDsgdGV4dC1hbGlnbjpyaWdodDsgbWFyZ2luLXRvcDoxMHB4O30gLm9sZC1kZXRhaWxzIHRhYmxleyBib3JkZXItY29sbGFwc2U6Y29sbGFwc2U7IH0gI3NwZWNUaXRsZXsgYm9yZGVyLXRvcDoxcHggc29saWQgI2FhYWFhYTsgYm9yZGVyLWJvdHRvbToxcHggc29saWQgI2FhYWFhYTsgcGFkZGluZy10b3A6MTBweDsgcGFkZGluZy1ib3R0b206MTBweDsgcGFkZGluZy1sZWZ0OjEwcHg7IGJhY2tncm91bmQtY29sb3I6I2VlZTsgbWFyZ2luLXRvcDoyNXB4OyB9IC5vbGQtZGV0YWlscyB0YWJsZSB0ciB0ZHsgcGFkZGluZzo1cHggMHB4IDVweCAxMHB4OyBib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZTZlNmU2OyB9IC5vbGQtZGV0YWlscyB1bHsgbGlzdC1zdHlsZTpub25lOyB9IC5vbGQtZGV0YWlscyB0ZCBpLmZhLWNoZXZyb24tcmlnaHR7IGJvcmRlci1yYWRpdXM6MTNweDsgd2lkdGg6MTJweDsgaGVpZ2h0OjE0cHg7IHBhZGRpbmctdG9wOjNweDsgcGFkZGluZy1sZWZ0OjVweDsgZmxvYXQ6bGVmdDsgZm9udC1zaXplOjAuNzVyZW0gOyBtYXJnaW46MHB4OyBib3JkZXI6MXB4IHNvbGlkICMwNTE0MWY7IGJhY2tncm91bmQtY29sb3I6I2ZmZmZmZjsgY29sb3I6IzA1MTQxZiA7IH0gLm9sZC1kZXRhaWxzIHRyOm50aC1jaGlsZChldmVuKSB7IGJhY2tncm91bmQ6I2VlZTsgfSAub3RoZXJCR3sgYmFja2dyb3VuZDojZmZmZmZmICFpbXBvcnRhbnQ7IH0gLmJnTm9uZXsgYmFja2dyb3VuZDpub25lICFpbXBvcnRhbnQ7IH0gLnRleHRDb2xvcnsgY29sb3I6IzA1MTQxZiAhaW1wb3J0YW50OyB9IC50ZXh0Q29sb3JVc2VkU1JQTW9iaWxleyBjb2xvcjojZmZmZmZmICFpbXBvcnRhbnQ7IH0gLnRleHRfc2xpZGUgYSA+IGJ7IGZsb2F0OmxlZnQhaW1wb3J0YW50OyBvdmVyZmxvdzpoaWRkZW4gIWltcG9ydGFudDsgcG9zaXRpb246cmVsYXRpdmUhaW1wb3J0YW50OyBtYXJnaW46MHB4IWltcG9ydGFudDsgd2lkdGg6MTAwJSFpbXBvcnRhbnQ7IHRvcDotM3B4IWltcG9ydGFudDsgd2lkdGg6MjAwcHghaW1wb3J0YW50OyBsZWZ0OjJweDsgfSAuZ3JheWJnIHsgbWFyZ2luOjEwcHg7IC13ZWJraXQtYm9yZGVyLXJhZGl1czo0cHg7IC1tb3otYm9yZGVyLXJhZGl1czo0cHg7IGJvcmRlci1yYWRpdXM6NHB4OyBjbGVhcjpib3RoOyBkaXNwbGF5OmJsb2NrOyBiYWNrZ3JvdW5kOiNjZmNmY2YgdXJsKC9pbWFnZXMvZ3JheWJnLnBuZykgcmVwZWF0LXggMCAwOyBwYWRkaW5nOjAgMTBweDsgaGVpZ2h0OjUwcHg7IH0gLnRleHQxLCB0ZXh0MiwgcGljIHttYXJnaW46MCAwIDAgMDsgaGVpZ2h0OjUwcHg7IGRpc3BsYXk6YmxvY2s7IHBhZGRpbmc6MCAxMHB4IDAgMTBweDsgbGluZS1oZWlnaHQ6NTBweDsgZm9udC1zaXplOjAuODc1cmVtIDt9IC50ZXh0MSB7Ym9yZGVyLXJpZ2h0OjFweCBzb2xpZCByZ2JhKDI1NSwyNTUsMjU1LDAuNik7fSAucGljIHtib3JkZXItbGVmdDoxcHggc29saWQgcmdiYSgwLDAsMCwwLjMpOyBib3JkZXItcmlnaHQ6MXB4IHNvbGlkIHJnYmEoMjU1LDI1NSwyNTUsMC42KTt9IC50ZXh0MiB7Ym9yZGVyLWxlZnQ6MXB4IHNvbGlkIHJnYmEoMCwwLDAsMC4zKTt9IC5wcm9tb2ltYWdlIHtmbG9hdDpsZWZ0OyB3aWR0aDoxMTBweDsgbWFyZ2luLXRvcDo3cHg7fSAucHJvbW9kZXRhaWwge2Zsb2F0OmxlZnQ7IHdpZHRoOjE3MHB4O30gLnByb21vZGV0YWlsIGgyIHtmb250LXNpemU6MS41cmVtIDsgbWFyZ2luOi0xMHB4IDAgMCAwOyBwYWRkaW5nOjAgMCAwIDB9IC5wcm9tby1jYXJkIHsgbWFyZ2luOjAgMTVweCAxMHB4OyBtYXJnaW4tYm90dG9tOjhweDsgZGlzcGxheTpibG9jazsgYm9yZGVyOjFweCBzb2xpZCAjYzhjOGM4OyBwYWRkaW5nOjNweDsgYm9yZGVyLXJhZGl1czo1cHg7IGJveC1zaGFkb3c6MHB4IDBweCAxMHB4IDJweCAjYzhjOGM4OyB9IC5wcm9tby1jYXJkIC5wcm9tby1pbWFnZSB7IHRleHQtYWxpZ246Y2VudGVyOyB9IC5wcm9tby1jYXJkIC5wcm9tby10aXRsZSB7IGZvbnQtc2l6ZToxLjMxM3JlbSA7IGRpc3BsYXk6YmxvY2s7IGZvbnQtd2VpZ2h0OjYwMDsgY29sb3I6IzMzMzsgbWFyZ2luLXRvcDo4cHg7IHRleHQtYWxpZ246Y2VudGVyOyB9IC5wcm9tby1pbWFnZSBpbWcgeyB3aWR0aDoxMDAlOyB9IC5wcm9tby1jYXJkIC5wcm9tby1kZXRhaWxzLXdyYXBwZXIgeyB9IC5wcm9tby1jYXB0aW9uIHsgY29sb3I6IzMzMzMzMzsgfSAucHJvbW8tY2FwdGlvbjpub3QoOmxhc3QtY2hpbGQpIHsgbWFyZ2luLWJvdHRvbToxNXB4OyB9IC5wcm9tby1jYXB0aW9uIC5wcm9tby10aXRsZSB7IHRleHQtYWxpZ246bGVmdDsgfSAucHJvbW8tb2ZmZXIgLnByb21vLWJvZHkgLnByb21vLXRpdGxlIHsgbWluLWhlaWdodDowOyB9IC5wcm9tby1zdWJjYXB0aW9uIHsgbWFyZ2luLXRvcDo1cHg7IGZvbnQtc2l6ZTowLjg3NXJlbTsgfSAucHJvbW8tZGV0YWlscy1idG4geyBiYWNrZ3JvdW5kOi13ZWJraXQtZ3JhZGllbnQobGluZWFyLGxlZnQgdG9wLGxlZnQgYm90dG9tLGNvbG9yLXN0b3AoMC4wNSwjMDAwMDAwKSxjb2xvci1zdG9wKDEsIzMzMzMzMykpOyBiYWNrZ3JvdW5kOi1tb3otbGluZWFyLWdyYWRpZW50KHRvcCwjMDAwMDAwNSUsIzMzMzMzMzEwMCUpOyBiYWNrZ3JvdW5kOi13ZWJraXQtbGluZWFyLWdyYWRpZW50KHRvcCwjMDAwMDAwNSUsIzMzMzMzMzEwMCUpOyBiYWNrZ3JvdW5kOi1vLWxpbmVhci1ncmFkaWVudCh0b3AsIzAwMDAwMDUlLCMzMzMzMzMxMDAlKTsgYmFja2dyb3VuZDotbXMtbGluZWFyLWdyYWRpZW50KHRvcCwjMDAwMDAwNSUsIzMzMzMzMzEwMCUpOyBiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCh0byBib3R0b20sIzAwMDAwMDUlLCMzMzMzMzMxMDAlKTsgZmlsdGVyOnByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5ncmFkaWVudChzdGFydENvbG9yc3RyPScjMDAwMDAwJyxlbmRDb2xvcnN0cj0nIzMzMzMzMycsR3JhZGllbnRUeXBlPTApOyBiYWNrZ3JvdW5kLWNvbG9yOiMzMzMzMzM7IGZvbnQtc2l6ZTowLjkzOHJlbSA7IHRleHQtYWxpZ246Y2VudGVyOyBib3JkZXItcmFkaXVzOjZweDsgcGFkZGluZzo3cHg7IH0gLnByb21vLWNhcmQgLnByb21vLWRldGFpbHMtYnRuIGEgeyBjb2xvcjp3aGl0ZTsgdGV4dC1hbGlnbjpjZW50ZXI7IH0gLnNlcnZpY2Utc2VjdGlvbiB7Y2xlYXI6Ym90aDsgbWFyZ2luOjEwcHg7IGRpc3BsYXk6YmxvY2s7IG1pbi1oZWlnaHQ6ODBweDt9IC5zZXJ2aWNlLXNlY3Rpb24gaW1nIHsgd2lkdGg6MTAwJTsgbWFyZ2luLWJvdHRvbTo3cHg7IH0gLnNlcnZpY2Utc2VjdGlvbiAuZGV0YWlscyB7IGJhY2tncm91bmQ6cmdiKDY4LDY4LDY4KTsgd2lkdGg6MTY1cHg7IGZsb2F0Om5vbmU7IGZvbnQtc2l6ZTowLjc1cmVtIDsgbWFyZ2luLXRvcDo1cHg7IG1hcmdpbi1sZWZ0OjBweDsgfSAuc2VydmljZV9kZXNjeyB9IC5zZXJ2aWNlX21haW5fZGVzYyB7IG1hcmdpbjoxMHB4OyB9IC5zZXJ2aWNlX21haW5fZGVzYyBheyB0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lOyB9IC5zdGVwcyB7fSAuc3RlcHMgdWwge30gLnN0ZXBzIHVsIGxpeyBsaXN0LXN0eWxlOm5vbmU7IGxpc3Qtc3R5bGUtdHlwZTpub25lOyBmb250LXNpemU6MC45MzhyZW0gOyBtYXJnaW46MCAxMHB4IDAgMTBweDsgZGlzcGxheTpibG9jazsgd2lkdGg6NzBweDsgbWFyZ2luLWJvdHRvbToxMHB4OyBjdXJzb3I6ZGVmYXVsdH0gLnN0ZXBzIHVsIGxpIC5hY3RpdmUsIC5zdGVwcyB1bCBsaSAuaW5hY3RpdmUgeyAtd2Via2l0LWJveC1zaGFkb3c6MCAxcHggM3B4IHJnYmEoMCwgMCwgMCwgMC4zKTsgLW1vei1ib3gtc2hhZG93OjAgMXB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMyk7IGJveC1zaGFkb3c6MCAxcHggM3B4IHJnYmEoMCwgMCwgMCwgMC4zKTsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjI1cHg7IC1tb3otYm9yZGVyLXJhZGl1czoyNXB4OyBib3JkZXItcmFkaXVzOjI1cHg7IHdpZHRoOjI1cHg7IGhlaWdodDoyNXB4OyBkaXNwbGF5OmJsb2NrOyBmb250LXNpemU6MS41cmVtIDsgZm9udC13ZWlnaHQ6Ym9sZDsgdGV4dC1hbGlnbjpjZW50ZXI7IGZsb2F0OnJpZ2h0OyBtYXJnaW4tdG9wOi0ycHg7IHBhZGRpbmctcmlnaHQ6MXB4OyBsaW5lLWhlaWdodDoyNXB4OyB9IC5zdGVwcyB1bCBsaSAuYWN0aXZlIHsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy93aGl0ZS5wbmcpIHJlcGVhdC14OyBjb2xvcjojMDUxNDFmO30gLnN0ZXBzIHVsIGxpIC5pbmFjdGl2ZSB7YmFja2dyb3VuZDp1cmwoL2ltYWdlcy9ibGFjay5wbmcpIHJlcGVhdC14OyBjb2xvcjojZmZmOyB9IC5mb3JtIHttYXJnaW46MTBweDt9IC5mb3Jtc19ib3gyMiB7IGJveC1zaXppbmc6Ym9yZGVyLWJveDsgd2lkdGg6MTAwJTsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IG1hcmdpbjowIDAgMTBweCAwOyB9IC52b2kgeyBmbG9hdDpsZWZ0OyBtYXJnaW4tdG9wOjhweDsgfSAjY3JlZGl0X3ZpX2FkdmFuY2VkIGxhYmVsIGlucHV0IHsgbWFyZ2luLXRvcDoxMHB4OyB9IHNwYW4uYXN0ayB7IGNvbG9yOiNGRjAxMDE7IGZvbnQtc2l6ZTowLjY4OHJlbTsgZmxvYXQ6bGVmdDsgcGFkZGluZy1yaWdodDozcHg7IH0gLmNyZWRpdC1jb25zZW50X19jb250YWluZXIgeyBkaXNwbGF5OmZsZXg7IHBhZGRpbmc6MCAwLjdyZW07IGZvbnQtc2l6ZTowLjhyZW07IGNvbG9yOiMyNDI0MjQ7IH0gLmNyZWRpdC1jb25zZW50X19jb250YWluZXIgZGl2Om5vdCg6Zmlyc3Qtb2YtdHlwZSkgeyBtYXJnaW4tbGVmdDowLjdyZW07IH0gLmZpZWxkIHsgd2lkdGg6MTAwJTsgYm9yZGVyLXJhZGl1czo0cHg7IGJvcmRlcjoxcHggc29saWQgI2NjYzsgYm94LXNpemluZzpib3JkZXItYm94OyB9IC5sYWJlbCB7cGFkZGluZzoxMHB4IDAgMCAwO30gLmRlYWxlcmFkZHJlc3MsIC5kZWFsZXJwaG9uZSwgLmRlYWxlcmVtYWlsIHsgYmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0OyBiYWNrZ3JvdW5kLXNpemU6MzBweDsgYmFja2dyb3VuZC1wb3NpdGlvbjo1cHggMTNweDsgYmFja2dyb3VuZC1jb2xvcjojZGJkYmRiOyAtd2Via2l0LWJvcmRlci1yYWRpdXM6NHB4OyAtbW96LWJvcmRlci1yYWRpdXM6NHB4OyBib3JkZXItcmFkaXVzOjRweDsgbWFyZ2luOjEwcHg7IGRpc3BsYXk6YmxvY2s7IGNsZWFyOmJvdGg7IHBhZGRpbmc6MTVweCAxMHB4IDE1cHggNDBweDsgZm9udC13ZWlnaHQ6bm9ybWFsIH0gLmRlYWxlcmFkZHJlc3MsIC5kZWFsZXJwaG9uZSwgLmRlYWxlcmVtYWlsIHsgYmFja2dyb3VuZC1jb2xvcjp3aGl0ZTsgfSAuZGVhbGVyYWRkcmVzczpiZWZvcmUgeyBjb250ZW50OiJcZjAxNSI7IH0gLmRlYWxlcnBob25lOmJlZm9yZSB7IGNvbnRlbnQ6IlxmMDk1IjsgbWFyZ2luLXRvcDo4cHg7IH0gLmRlYWxlcmVtYWlsOmJlZm9yZSB7IGNvbnRlbnQ6IlxmMGUwIjsgfSAuZGVhbGVyYWRkcmVzczpiZWZvcmUsIC5kZWFsZXJwaG9uZTpiZWZvcmUsIC5kZWFsZXJlbWFpbDpiZWZvcmV7IGZvbnQtZmFtaWx5OiJGb250IEF3ZXNvbWUgNSBQcm8iOyBmb250LXN0eWxlOm5vcm1hbDsgZm9udC13ZWlnaHQ6OTAwOyB0ZXh0LWRlY29yYXRpb246aW5oZXJpdDsgY29sb3I6IzMzMzsgZm9udC1zaXplOjEuMTI1cmVtIDsgcG9zaXRpb246YWJzb2x1dGU7IGxlZnQ6MjFweDsgfSAuZGVhbGVycGhvbmUgI2FjY29yZGlvbiAudWktYWNjb3JkaW9uLWhlYWRlci1pY29uLCAub3Blbl9ob3Vyc19jb250YWluZXIgLnVpLWFjY29yZGlvbi1oZWFkZXItaWNvbiB7IGRpc3BsYXk6bm9uZTsgfSAub3Blbl9ob3Vyc19jb250YWluZXIgLm1hcF9vcGVuX2hvdXJzX2V4cGFuZCB7IGNvbG9yOiMwMDAwMDA7IH0gLm1hcF9vcGVuX2hvdXJzX21vYmlsZSAudmlzaXRDb250YWN0QnV0dG9uLCAub3Blbl9ob3Vyc19jb250YWluZXIgLnZpc2l0Q29udGFjdEJ1dHRvbnsgd2lkdGg6MTAwJTsgdGV4dC1hbGlnbjpjZW50ZXI7IHBhZGRpbmc6MTFweCA1cHggOXB4OyBmb250LXNpemU6MC44MTNyZW0gOyBtYXJnaW4tdG9wOjEwcHg7IGJveC1zaXppbmc6Ym9yZGVyLWJveDsgYmFja2dyb3VuZC1jb2xvcjojMDUxNDFmOyBjb2xvcjojZmZmZmZmOyB9IC5kZWFsZXJwaG9uZSAudWktYWNjb3JkaW9uIC51aS1hY2NvcmRpb24taWNvbnN7IHBhZGRpbmctbGVmdDowOyB9IC5kZWFsZXJwaG9uZSAuZmEtY2FsZW5kYXJ7IG1hcmdpbi1sZWZ0OjEzcHg7IG1hcmdpbi1yaWdodDo1cHg7IH0gLmRlYWxlcnBob25lIC51aS1hY2NvcmRpb24tY29udGVudCB7IGJhY2tncm91bmQtY29sb3I6I2YzZjNmMyFpbXBvcnRhbnQ7IGJvcmRlcjpub25lIWltcG9ydGFudDsgfSAuZGVhbGVycGhvbmUudWktYWNjb3JkaW9uIC51aS1hY2NvcmRpb24taGVhZGVyeyBwYWRkaW5nOjhweDsgfSAuaDMubW9iaWxlQnV0dG9ueyBmb250LXNpemU6MC45MzhyZW0gOyB9IC5tb2JpbGVCdXR0b25Db250YWN0eyBib3JkZXItcmFkaXVzOjRweDsgZGlzcGxheTpibG9jazsgY3Vyc29yOnBvaW50ZXI7IHBvc2l0aW9uOnJlbGF0aXZlOyBtYXJnaW4tdG9wOjJweDsgcGFkZGluZzouNWVtIC41ZW0gLjVlbSAuN2VtOyB6b29tOjE7IHBhZGRpbmctbGVmdDoyLjJlbTsgb3V0bGluZTowOyBsaW5lLWhlaWdodDoxLjM7IHRleHQtZGVjb3JhdGlvbjpub25lOyBsaXN0LXN0eWxlOm5vbmU7IH0gLm1vYmlsZUJ1dHRvbkNvbnRhY3QgaXsgbWFyZ2luLWxlZnQ6LTIwcHg7IG1hcmdpbi1yaWdodDoxMHB4OyB9IC5iaWdmYiB7cGFkZGluZzozMHB4IDA7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvYmlnZmIucG5nKSByZXBlYXQteCAwIDB9IC5idXR0b25fam9ib2ZmZXIgeyBkaXNwbGF5OmJsb2NrOyBsaW5lLWhlaWdodDo1MHB4OyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9pY29uX2VtcGxveS5wbmcnKSBuby1yZXBlYXQgc2Nyb2xsIDBweCAwcHggcmdiKDIzMSwgMjMyLCAyMzIpOyB0ZXh0LWFsaWduOmNlbnRlcjsgZm9udC13ZWlnaHQ6Ym9sZDsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IHBhZGRpbmctbGVmdDo0MHB4OyB9IGRpdi5lcnJvck1zZyB7IGJhY2tncm91bmQtY29sb3I6I0ZGQkFCQTsgYmFja2dyb3VuZC1pbWFnZTp1cmwoIi9pbWFnZXMvZXJyb3IucG5nIik7IGJhY2tncm91bmQtcG9zaXRpb246MTBweCBjZW50ZXI7IGJhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDsgYm9yZGVyOjFweCBzb2xpZDsgY29sb3I6I0Q4MDAwQzsgZGlzcGxheTpub25lOyBwYWRkaW5nOjE1cHggMTBweCAxNXB4IDUwcHg7IHotaW5kZXg6OTk5OTsgfSAuZW1haWxCb2R5LCAuZW1haWxTdWJqZWN0eyBkaXNwbGF5Om5vbmU7IH0gLmZpbGVpbnB1dC1idXR0b24geyBiYWNrZ3JvdW5kOnVybCgiL2ltYWdlcy9ibF9iZy5wbmciKSByZXBlYXQteCBzY3JvbGwgbGVmdCB0b3AgcmdiYSgwLCAwLCAwLCAwKTsgfSAuZmlsZWlucHV0LWJ1dHRvbjpob3ZlciB7IGJhY2tncm91bmQ6dXJsKCIvaW1hZ2VzL2J1dHRvbl8yLnBuZyIpIHJlcGVhdC14IHNjcm9sbCBsZWZ0IHRvcCByZ2JhKDAsIDAsIDAsIDApOyB9IC5maWxlaW5wdXQtYnV0dG9uLCAuZmlsZWlucHV0LWJ1dHRvbjpob3ZlciB7IGZvbnQtc2l6ZTowLjg3NXJlbSAhaW1wb3J0YW50OyBsaW5lLWhlaWdodDozMXB4OyBwb3NpdGlvbjpyZWxhdGl2ZTsgfSAuZmlsZWlucHV0LWJ1dHRvbiBpbnB1dCB7IHBvc2l0aW9uOmFic29sdXRlOyB0b3A6MDsgcmlnaHQ6MDsgbWFyZ2luOjA7IG9wYWNpdHk6MDsgLW1zLWZpbHRlcjonYWxwaGEob3BhY2l0eT0wKSc7IGN1cnNvcjpwb2ludGVyOyB9IC5wYWdlX25hbWU1e2hlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyB3aWR0aDoxMDAlICFpbXBvcnRhbnQ7cGFkZGluZzowIDBweCAxMHB4IDIxcHg7IGxpbmUtaGVpZ2h0OjMwcHg7IGZvbnQtc2l6ZToxLjVyZW0gOyBjb2xvcjojMjQyNDI0O2ZvbnQtd2VpZ2h0Om5vcm1hbCB9IC5waWNib3g5MHt3aWR0aDo5MHB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgbWFyZ2luLXJpZ2h0OjhweDsgYm9yZGVyOjFweCBzb2xpZCAjYWNhY2FjOyAtd2Via2l0LWJvcmRlci1yYWRpdXM6N3B4OyBib3JkZXItcmFkaXVzOjdweDsgLWtodG1sLWJvcmRlci1yYWRpdXM6N3B4OyB9IC5waWNib3g5MCBpbWcge3dpZHRoOjkwcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyAtbW96LWJvcmRlci1yYWRpdXM6N3B4OyAtd2Via2l0LWJvcmRlci1yYWRpdXM6N3B4OyBib3JkZXItcmFkaXVzOjdweDsgLWtodG1sLWJvcmRlci1yYWRpdXM6N3B4OyB9IC50ZXh0Ym94MTkxe3dpZHRoOjE5MXB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgZm9udC1zaXplOjAuODEzcmVtIDsgbGluZS1oZWlnaHQ6MS4yOyBjb2xvcjojMjQyNDI0OyB9IC50ZXh0Ym94MTkxIGg0eyBmb250LXNpemU6MS4xMjVyZW0gOyBjb2xvcjojMjQyNDI0OyBwYWRkaW5nLWJvdHRvbTo1cHg7IH0gLm1haW5ib3gyOTF7d2lkdGg6OTMlO2hlaWdodDoxMTJweDsgZmxvYXQ6bGVmdDsgY2xlYXI6Ym90aDsgbWFyZ2luOjAgNXB4IDEwcHggMDsgYmFja2dyb3VuZDojZTZlNmU2OyBib3JkZXI6MXB4IHNvbGlkICNkNGQ0ZDQ7IC1tb3otYm9yZGVyLXJhZGl1czo4cHg7IC13ZWJraXQtYm9yZGVyLXJhZGl1czo4cHg7IGJvcmRlci1yYWRpdXM6OHB4OyAta2h0bWwtYm9yZGVyLXJhZGl1czo4cHg7IHBhZGRpbmc6MTVweCAxMHB4O30gLmxhenl7Ym9yZGVyOjA7ZGlzcGxheTpub25lfSAudGVjaFNwZWNze3dpZHRoOjYyMXB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgbWFyZ2luOjBweDsgcGFkZGluZzoyNXB4IDE1cHg7IGJhY2tncm91bmQ6I2U2ZTdlNzsgYmFja2dyb3VuZC1wb3NpdGlvbjpyaWdodCBib3R0b207IC1tb3otYm9yZGVyLXJhZGl1cy10b3BsZWZ0OjBweDstbW96LWJvcmRlci1yYWRpdXMtdG9wcmlnaHQ6MHB4Oy1tb3otYm9yZGVyLXJhZGl1cy1ib3R0b21yaWdodDo2cHg7LW1vei1ib3JkZXItcmFkaXVzLWJvdHRvbWxlZnQ6NnB4Oy13ZWJraXQtYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czowcHg7LXdlYmtpdC1ib3JkZXItdG9wLXJpZ2h0LXJhZGl1czowcHg7LXdlYmtpdC1ib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czo2cHg7LXdlYmtpdC1ib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjZweDtib3JkZXItdG9wLWxlZnQtcmFkaXVzOjBweDtib3JkZXItdG9wLXJpZ2h0LXJhZGl1czowcHg7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czo2cHg7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6NnB4O30gLnRleHRfYm94MTEgYSB7IGNvbG9yOiMyNDI0MjQ7IGZsb2F0OmxlZnQ7IGhlaWdodDphdXRvOyBtYXJnaW4tbGVmdDoxNXB4OyBwYWRkaW5nOjEwcHggMDsgfSAudGV4dF9ib3gxMSBhIHsgY29sb3I6IzI0MjQyNDsgZmxvYXQ6bGVmdDsgaGVpZ2h0OmF1dG87IG1hcmdpbi1sZWZ0OjE1cHg7IHBhZGRpbmc6MTBweCAwOyB9IC50ZXh0X2JveDExIHVsLCAudGV4dF9ib3gxMSBwIHsgY29sb3I6IzI0MjQyNDsgZmxvYXQ6bGVmdDsgaGVpZ2h0OmF1dG87IHdpZHRoOjEwMCU7IHRleHQtYWxpZ246anVzdGlmeTsgfSAudGV4dF9ib3gxMSBwIGltZ3sgd2lkdGg6MTAwJSAhaW1wb3J0YW50OyBoZWlnaHQ6YXV0byAhaW1wb3J0YW50OyBtYXJnaW46MCFpbXBvcnRhbnQ7IHBhZGRpbmc6MTBweCAwIWltcG9ydGFudDsgfSAucHJpY2VOb3RlIHsgY29sb3I6Izc1NzU3NTsgZm9udC1zaXplOjAuODVlbTsgZm9udC1zdHlsZTppdGFsaWM7IHRleHQtYWxpZ246anVzdGlmeTsgZGlzcGxheTpibG9jazsgcGFkZGluZy1yaWdodDoxMHB4OyBsaW5lLWhlaWdodDoxLjFlbTsgbWFyZ2luOjEwcHggMDsgfSAuc3RhY2tlZERpc2NsYWltZXJ7IGRpc3BsYXk6YmxvY2s7IG1hcmdpbi10b3A6MTBweDsgfSBzcGFuLnN0YWNrZWREaXNjbGFpbWVyOmJlZm9yZXsgY29udGVudDoiKioiOyBwb3NpdGlvbjpyZWxhdGl2ZTsgZm9udC1zaXplOjFyZW07IH0gI21haW5Db21wYXJlVmlld3sgbWFyZ2luOjA7IH0gI2NvbXBsX3RhYmxleyBtYXJnaW4tYm90dG9tOjIwcHg7IH0gLmlkTmF2MSB7IGNvbG9yOiNmOWY5Zjk7IGZvbnQtc2l6ZTowLjc1cmVtIDsgZm9udC1zdHlsZTpub3JtYWw7IGZvbnQtd2VpZ2h0OmJvbGQ7IGhlaWdodDoyOHB4OyBsaXN0LXN0eWxlOm91dHNpZGUgbm9uZSBub25lOyBwYWRkaW5nOjA7IHRleHQtdHJhbnNmb3JtOnZhcigtLXR4dC11cHBlcik7IH0gLmlkTmF2MSBsaS50b3AgeyBkaXNwbGF5OmJsb2NrOyBmbG9hdDpsZWZ0OyBoZWlnaHQ6MjhweDsgcGFkZGluZzowIDJweCAwIDA7IH0gLmlkTmF2MSBsaS50b3AxIHsgYmFja2dyb3VuZDpyZ2JhKDAsIDAsIDAsIDApIHVybCgiL2ltYWdlcy9ibF9ob3Zlci5wbmciKSByZXBlYXQteCBzY3JvbGwgbGVmdCB0b3A7IGJvcmRlci1yYWRpdXM6M3B4OyBjb2xvcjojZmZmOyBkaXNwbGF5OmJsb2NrOyBmbG9hdDpsZWZ0OyBmb250LXNpemU6MC44MTNyZW0gOyBoZWlnaHQ6MjhweDsgcGFkZGluZzowIDJweCAwIDA7IHRleHQtYWxpZ246Y2VudGVyOyB0ZXh0LXRyYW5zZm9ybTp2YXIoLS10eHQtdXBwZXIpOyB9IC5pZE5hdjEgbGkgYS50b3BfbGluayB7IGJhY2tncm91bmQ6cmdiYSgwLCAwLCAwLCAwKSB1cmwoIi9pbWFnZXMvYmxfYmcucG5nIikgcmVwZWF0LXggc2Nyb2xsIGxlZnQgdG9wOyBib3JkZXItcmFkaXVzOjNweDsgY29sb3I6cmdiKDI1NSwgMjU1LCAyNTUpOyBjdXJzb3I6cG9pbnRlcjsgZGlzcGxheTpibG9jazsgZmxvYXQ6bGVmdDsgZm9udC1zaXplOjAuODEzcmVtIDsgZm9udC13ZWlnaHQ6bm9ybWFsOyBoZWlnaHQ6MjhweDsgbGluZS1oZWlnaHQ6MzBweDsgcGFkZGluZzowIDEycHg7IHRleHQtZGVjb3JhdGlvbjpub25lOyB0ZXh0LXRyYW5zZm9ybTp2YXIoLS10eHQtdXBwZXIpOyB9IC5pZE5hdjEgbGkgYS50b3BfbGluazpob3ZlciB7IGJhY2tncm91bmQ6cmdiYSgwLCAwLCAwLCAwKSB1cmwoIi9pbWFnZXMvYmxfaG92ZXIucG5nIikgcmVwZWF0LXggc2Nyb2xsIGxlZnQgdG9wOyBib3JkZXItcmFkaXVzOjNweDsgY29sb3I6I2ZmZjsgfSAuaWROYXYxIGxpIGEudG9wX2xpbmsxIHsgYmFja2dyb3VuZDpyZ2JhKDAsIDAsIDAsIDApIHVybCgiL2ltYWdlcy9ibF9ob3Zlci5wbmciKSByZXBlYXQteCBzY3JvbGwgbGVmdCB0b3A7IGJvcmRlci1yYWRpdXM6M3B4OyBjb2xvcjojZmVmZWZlOyBjdXJzb3I6cG9pbnRlcjsgZGlzcGxheTpibG9jazsgZmxvYXQ6bGVmdDsgZm9udC1zaXplOjAuODEzcmVtIDsgZm9udC13ZWlnaHQ6bm9ybWFsOyBoZWlnaHQ6MjhweDsgbGluZS1oZWlnaHQ6MzBweDsgcGFkZGluZzowIDEycHg7IHRleHQtZGVjb3JhdGlvbjpub25lOyB0ZXh0LXRyYW5zZm9ybTp2YXIoLS10eHQtdXBwZXIpOyB9ICNmcm1SZWJhdGUgLmlkTmF2MSBsaSBhLnRvcF9saW5rIHsgYmFja2dyb3VuZDpyZ2JhKDAsIDAsIDAsIDApIHVybCgiL2ltYWdlcy9idXR0b25fcG9wdXAucG5nIikgcmVwZWF0LXggc2Nyb2xsIGxlZnQgdG9wOyBjb2xvcjojZmZmOyB9ICNmcm1SZWJhdGUgLmlkTmF2MSBsaSBhLnRvcF9saW5rOmhvdmVyIHsgYmFja2dyb3VuZDpyZ2JhKDAsIDAsIDAsIDApIHVybCgiL2ltYWdlcy9ibF9ob3Zlci5wbmciKSByZXBlYXQteCBzY3JvbGwgbGVmdCB0b3A7IGNvbG9yOiNmZmY7IH0gLnRleHQyMCB7IGZvbnQtc2l6ZTowLjgxM3JlbSA7IGhlaWdodDoyM3B4OyB0ZXh0LWRlY29yYXRpb246bm9uZTsgfSAucHJvbW9jb2RlYm94eyAtbW96LWJveC1zaGFkb3c6aW5zZXQgMHB4IC0zcHggN3B4IDBweCAjZTgwZDBkOyAtd2Via2l0LWJveC1zaGFkb3c6aW5zZXQgMHB4IC0zcHggN3B4IDBweCAjZTgwZDBkOyBib3gtc2hhZG93Omluc2V0IDBweCAtM3B4IDdweCAwcHggI2U4MGQwZDsgYmFja2dyb3VuZDotd2Via2l0LWdyYWRpZW50KGxpbmVhciwgbGVmdCB0b3AsIGxlZnQgYm90dG9tLCBjb2xvci1zdG9wKDAuMDUsICNmZjMzMzMpLCBjb2xvci1zdG9wKDEsICNEQjAwMDApKTsgYmFja2dyb3VuZDotbW96LWxpbmVhci1ncmFkaWVudCh0b3AsICNmZjMzMzMgNSUsICNEQjAwMDAgMTAwJSk7IGJhY2tncm91bmQ6LXdlYmtpdC1saW5lYXItZ3JhZGllbnQodG9wLCAjZmYzMzMzIDUlLCAjREIwMDAwIDEwMCUpOyBiYWNrZ3JvdW5kOi1vLWxpbmVhci1ncmFkaWVudCh0b3AsICNmZjMzMzMgNSUsICNEQjAwMDAgMTAwJSk7IGJhY2tncm91bmQ6LW1zLWxpbmVhci1ncmFkaWVudCh0b3AsICNmZjMzMzMgNSUsICNEQjAwMDAgMTAwJSk7IGJhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgI2ZmMzMzMyA1JSwgI0RCMDAwMCAxMDAlKTsgZmlsdGVyOnByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5ncmFkaWVudChzdGFydENvbG9yc3RyPScjZmYzMzMzJywgZW5kQ29sb3JzdHI9JyNEQjAwMDAnLEdyYWRpZW50VHlwZT0wKTsgYmFja2dyb3VuZC1jb2xvcjojZmYzMzMzOyBib3JkZXI6MXB4IHNvbGlkICNmNTFhMWE7IGNvbG9yOiNGRkZGRkYhaW1wb3J0YW50OyBmb250LXNpemU6MC45MzhyZW0gOyBwYWRkaW5nOjEwcHggMTBweCAwOyBtYXJnaW46MDsgbWFyZ2luLXRvcDoxMHB4OyBtYXJnaW4tbGVmdDozOHB4OyBtaW4td2lkdGg6MTAwcHg7IGJvcmRlci1yYWRpdXM6NnB4OyBib3gtc2hhZG93Omluc2V0IDAgMXB4IDNweCByZ2JhKDAsIDAsIDAsIDAuNCk7IGZvbnQtd2VpZ2h0OmJvbGQ7IGZsb2F0OmxlZnQ7IGRpc3BsYXk6YmxvY2s7IGJvcmRlcjowOyB3aWR0aDoxMDBweDsgfSAuZGV0YWlsUHJpY2VXaXRoQnV0dG9uIHsgZGlzcGxheTppbmxpbmUtYmxvY2s7IHBvc2l0aW9uOnJlbGF0aXZlOyBtYXJnaW4tbGVmdDo1cHg7IHZlcnRpY2FsLWFsaWduOnRvcDsgbWFyZ2luLWJvdHRvbToxMHB4OyBtYXJnaW4tcmlnaHQ6NXB4OyB3aWR0aDo0OSU7IG1heC13aWR0aDoxOTVweDsgbWluLXdpZHRoOjEyMHB4OyB9IC5kZXRhaWxQcmljZVdpdGhCdXR0b24gPiAuZGV0YWlsUHJpY2VCbG9jayB7IG1hcmdpbi1sZWZ0OjA7IG1hcmdpbi1ib3R0b206OXB4OyB9IC5kZXRhaWxQcmljZVdpdGhCdXR0b24gPiAucHJvbW9jb2RlYm94IHsgbWFyZ2luOjBweDsgd2lkdGg6MTAwJTsgcGFkZGluZzo2cHggMHB4IDNweCAwcHg7IG1hcmdpbi10b3A6OXB4OyB9IC5kZXRhaWwtcHJpY2UtcHJvbW8gaDIgeyBiYWNrZ3JvdW5kLWltYWdlOnVybCgvaW1hZ2VzL2J1dHRvbl9wcm9tb3Rpb24ucG5nKTsgY29sb3I6I0ZGRjsgYm9yZGVyLXJhZGl1czo4cHg7IHBhZGRpbmc6NXB4IDA7IH0gLmRldGFpbC1wcmljZS1wcm9tbyBhIHsgY29sb3I6I0ZGRjsgfSAuZGV0YWlsUHJpY2VCbG9ja3sgZGlzcGxheTppbmxpbmUtYmxvY2s7IG1hcmdpbi1sZWZ0OjVweDsgcGFkZGluZzowcHg7IGJhY2tncm91bmQtY29sb3I6bGlnaHRncmV5OyB2ZXJ0aWNhbC1hbGlnbjp0b3A7IGJvcmRlci1yYWRpdXM6NXB4OyBtYXJnaW4tYm90dG9tOjBweDsgd2lkdGg6MTAwJTsgbWF4LXdpZHRoOjE5NXB4OyB9IC5uZXctZGV0YWlscyAuZGV0YWlsUHJpY2VXaXRoQnV0dG9uID4gLmRldGFpbFByaWNlQmxvY2sgeyBtYXJnaW4tYm90dG9tOjBweDsgfSBAbWVkaWEobWF4LXdpZHRoOjMwN3B4KSB7IC5kZXRhaWxQcmljZUJsb2NrIHsgbWF4LXdpZHRoOjE3NXB4OyB9IH0gLmRldGFpbFByaWNlQmxvY2sgI3JlYmF0ZXsgbWFyZ2luOjA7IGJhY2tncm91bmQtY29sb3I6YmxhY2s7IGNvbG9yOndoaXRlOyBib3JkZXItcmFkaXVzOjAgMCA1cHggNXB4OyBwYWRkaW5nOjRweCAwIDAgMDsgfSAuZGV0YWlsUHJpY2VCbG9jayAjY2FyUHJpY2V7IGJhY2tncm91bmQ6bm9uZTsgZm9udC1zaXplOjEuMjVyZW0gOyBmb250LXdlaWdodDpib2xkOyBwYWRkaW5nOjBweDsgY29sb3I6IzExMTExMTsgaGVpZ2h0OjI1cHg7IH0gLnNjcmF0Y2hEZXRhaWxQcmljZXsgcG9zaXRpb246YWJzb2x1dGU7IHRvcDozcHg7IGxlZnQ6LTFweDsgfSAucHJvbW9CVE46aG92ZXIsIC5wcm9tb0JUTiBhOmhvdmVyLCAuYnJvY2h1cmVCdG46aG92ZXIgeyBiYWNrZ3JvdW5kOiMwNTE0MWYhaW1wb3J0YW50OyBjb2xvcjojZmZmZmZmIWltcG9ydGFudDsgYm9yZGVyOm5vbmUhaW1wb3J0YW50OyB9IGRpdiNsZWFzZUNvbW1lbnRzIHsgcGFkZGluZy1ib3R0b206MTBweDsgfSAuZGV0YWlsUHJpY2VCbG9jayAjY2FyUHJpY2VEaXNjeyBiYWNrZ3JvdW5kOm5vbmU7IGZvbnQtc2l6ZToxLjI1cmVtIDsgZm9udC13ZWlnaHQ6Ym9sZDsgcGFkZGluZzowcHg7IGNvbG9yOiNENDAwMDA7IGhlaWdodDoyMHB4OyB9IC5kZXRhaWxQcmljZUJsb2NrICNjYXJQcmljZVByb21veyBiYWNrZ3JvdW5kOm5vbmU7IGZvbnQtc2l6ZToxLjI1cmVtIDsgZm9udC13ZWlnaHQ6Ym9sZDsgfSAjYXNQdXJjaGFzZUludGVudCAuYXNQSVRpdGxlIHsgZm9udC1zaXplOjEuMjVyZW0gIWltcG9ydGFudDsgfSAjYXNQdXJjaGFzZUludGVudCBsaSBsYWJlbHsgbWFyZ2luLWxlZnQ6MHB4IWltcG9ydGFudDsgfSAjYXNQdXJjaGFzZUludGVudCAudmlPcHRpb25zeyBwYWRkaW5nOjBweCFpbXBvcnRhbnQ7IH0gI2FzUHVyY2hhc2VJbnRlbnQgLnZpT3B0aW9ucyBsaXsgaGVpZ2h0OjIwcHghaW1wb3J0YW50OyB3aWR0aDoyNjBweCFpbXBvcnRhbnQ7IHBhZGRpbmc6MCFpbXBvcnRhbnQ7IG1hcmdpbjoycHghaW1wb3J0YW50OyB9ICNhc1B1cmNoYXNlSW50ZW50IC5zdGVwcyA+IGxpeyBwYWRkaW5nOjEwcHghaW1wb3J0YW50OyBtYXJnaW4tYm90dG9tOjVweCFpbXBvcnRhbnQ7IH0gI2FzUHVyY2hhc2VJbnRlbnQgLnN0ZXBzeyB0ZXh0LWluZGVudDowIWltcG9ydGFudDsgfSAjYXNQdXJjaGFzZUludGVudCAuYXN5ZXMgeyBwYWRkaW5nLWxlZnQ6NjVweCFpbXBvcnRhbnQ7IG1hcmdpbi10b3A6OHB4IWltcG9ydGFudDsgfSAjYXNQdXJjaGFzZUludGVudCAuYXN5ZXNub3sgd2lkdGg6NjBweCFpbXBvcnRhbnQ7IG1hcmdpbi10b3A6MHB4IWltcG9ydGFudDsgfSAjYXNQdXJjaGFzZUludGVudCBpbnB1dHsgcGFkZGluZyA6MHB4IWltcG9ydGFudDsgfSAjbXljYXJvdXNlbGRpdnsgbWFyZ2luLXRvcDoxMHB4OyB9ICNteWNhcm91c2VsZGl2LmJsdXJyeWZpcnN0aW1hZ2V7IG1pbi1oZWlnaHQ6dmFyKC0tbW9iLWNhcm91c2VsLW1pbi1oZWlnaHQpOyB9ICNteWNhcm91c2VsZGl2LmJsdXJyeWZpcnN0aW1hZ2UgLm93bC1jYXJvdXNlbCAub3dsLWl0ZW0gaW1neyBib3JkZXI6MDsgfSAjbXljYXJvdXNlbGRpdi5ibHVycnlmaXJzdGltYWdlIC5sb2FkZXJfb3dseyB2aXNpYmlsaXR5OnZpc2libGU7IG9wYWNpdHk6MTsgei1pbmRleDoyOyBwb3NpdGlvbjphYnNvbHV0ZTsgaGVpZ2h0OjEwMCU7IHdpZHRoOjEwMCU7IG92ZXJmbG93OmhpZGRlbjsgfSAjbXljYXJvdXNlbGRpdi5ibHVycnlmaXJzdGltYWdlIC5sb2FkZXJfb3dsIC5wbGFjZWhvbGRlcnsgaGVpZ2h0OjEwMCU7IHdpZHRoOmNhbGMoMTAwdncgLSAyMHB4KTsgcG9zaXRpb246YWJzb2x1dGU7IGJhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDsgYmFja2dyb3VuZC1zaXplOmNvbnRhaW47IGJhY2tncm91bmQtcG9zaXRpb246Y2VudGVyIGNlbnRlcjsgbWFyZ2luOjAgMTBweDsgfSAjbXljYXJvdXNlbGRpdi5ibHVycnlmaXJzdGltYWdlIC5sb2FkZXJfb3dsLmZhZGUtb3V0eyB2aXNpYmlsaXR5OmhpZGRlbjsgb3BhY2l0eTowOyAtd2Via2l0LXRyYW5zaXRpb246dmlzaWJpbGl0eSAxbXMgMXMsIG9wYWNpdHkgMXMgbGluZWFyOyAtbW96LXRyYW5zaXRpb246dmlzaWJpbGl0eSAxbXMgMXMsIG9wYWNpdHkgMXMgbGluZWFyOyAtby10cmFuc2l0aW9uOnZpc2liaWxpdHkgMW1zIDFzLCBvcGFjaXR5IDFzIGxpbmVhcjsgdHJhbnNpdGlvbjp2aXNpYmlsaXR5IDFtcyAxcywgb3BhY2l0eSAxcyBsaW5lYXI7IH0gaW5wdXRbdHlwZT1yYWRpb117IC13ZWJraXQtYm94LXNoYWRvdzpub25lIWltcG9ydGFudDsgLW1vei1ib3gtc2hhZG93OiBub25lIWltcG9ydGFudDsgYm94LXNoYWRvdzogbm9uZSFpbXBvcnRhbnQ7IH0gLmxhbmd1YWdlQmFyeyBtYXgtd2lkdGg6MjAwcHg7IH0gLnVpLXdpZGdldC1jb250ZW50LCAudWktd2lkZ2V0LWhlYWRlcnsgYmFja2dyb3VuZDojRjJGMkYyIWltcG9ydGFudDsgfSAudWktYWNjb3JkaW9uIC51aS1hY2NvcmRpb24tY29udGVudCB7IHBhZGRpbmc6MTBweCFpbXBvcnRhbnQ7IH0gLnVpLXdpZGdldC1jb250ZW50IHsgYmFja2dyb3VuZDojZTZlNmU2IWltcG9ydGFudDsgfSAudWktdGFicyAudWktdGFicy1uYXYgbGl7IHBhZGRpbmc6MXB4IDNweCFpbXBvcnRhbnQ7IH0gI21haW5EaXZfTmV3TW9iaWxlTGFuZGluZ1BhZ2V7IGJhY2tncm91bmQ6I2ZmZiB1cmwoL2ltYWdlcy9maW5hbmNlL2hlYWRlci1iZy1tb2JpbGUuanBnKSB0b3AgY2VudGVyIG5vLXJlcGVhdCB9IC5jcmVkaXRfbV9oZWFkZXIgeyBwb3NpdGlvbjpyZWxhdGl2ZTsgfSAuY3JlZGl0X21faGVhZGVyIGltZyB7IG1hcmdpbjowIGF1dG87IGRpc3BsYXk6YmxvY2s7IHdpZHRoOjEwMCU7IH0gLmNyZWRpdF9tX3RleHQtd3JhcHBlciB7IHBvc2l0aW9uOmFic29sdXRlOyBoZWlnaHQ6MTAwJTsgd2lkdGg6MTAwJTsgbGVmdDo1MCU7IHRvcDowOyB0cmFuc2Zvcm06dHJhbnNsYXRlWCgtNTAlKTsgfSAuY3JlZGl0X21fdGltZSB7IGNvbG9yOiM4RjBEMjA7IGZvbnQtd2VpZ2h0OjUwMDsgfSAuY3JlZGl0X21fYm94IHsgY29sb3I6I2ZmZmZmZjsgZm9udC13ZWlnaHQ6Ym9sZDsgbWFyZ2luLWxlZnQ6NDAlOyBtYXJnaW4tdG9wOjklOyBsaW5lLWhlaWdodDoxNXZ3OyB9IC5jcmVkaXRfbV9ib3gyIHsgbWFyZ2luLWxlZnQ6NDclOyBtYXJnaW4tdG9wOjUlOyBmb250LXNpemU6NS41dnc7IHRleHQtYWxpZ246Y2VudGVyOyB3aWR0aDo0NSU7IH0gLmNyZWRpdF9tX2JveCAuY3JlZGl0X21fOTkgeyBmb250LXNpemU6MTl2dzsgfSAuY3JlZGl0X21fYm94IC5jcmVkaXRfbV9hcHByb3ZlZCB7IGZvbnQtc2l6ZTo4dnc7IHRleHQtdHJhbnNmb3JtOnZhcigtLXR4dC11cHBlcik7IH0gLmNyZWRpdF9tX2xvZ297IHBvc2l0aW9uOnJlbGF0aXZlO2Zsb2F0OnJpZ2h0O2hlaWdodDo4NXB4O21hcmdpbi1yaWdodDozMHB4O2NsZWFyOmJvdGg7IH0gLmNyZWRpdF9tX3Bob3RveyBoZWlnaHQ6MzYzcHg7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvZmluYW5jZS9tb2JpbGUtZmluYW5jaW5nLWltZy5wbmcpIDAgMCBuby1yZXBlYXQ7IGJhY2tncm91bmQtc2l6ZToxMDAlOyB9IC5jcmVkaXRfbV9hcHByb3ZhbF9mcnsgZmxvYXQ6cmlnaHQ7IGNsZWFyOnJpZ2h0OyB3aWR0aDoxNjNweDsgaGVpZ2h0OjEzN3B4OyBtYXJnaW46MjVweCAyMHB4IDEwcHggMDsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9maW5hbmNlL2xvZ28tYXBwcm92ZWQtbW9iaWxlX3JlZF9mci5wbmcpIDAgMCBuby1yZXBlYXQ7IH0gLmNyZWRpdF9tX2FwcHJvdmFsX2VueyBmbG9hdDpyaWdodDsgY2xlYXI6cmlnaHQ7IHdpZHRoOjE2M3B4OyBoZWlnaHQ6MTM3cHg7IG1hcmdpbjoyNXB4IDIwcHggMTBweCAwOyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL2ZpbmFuY2UvbG9nby1hcHByb3ZlZC1tb2JpbGVfcmVkX2VuLnBuZykgMCAwIG5vLXJlcGVhdDsgfSAuY3JlZGl0X21fc3RhcnRpbmdhdF93cmFwcGVyeyBmb250LXNpemU6MS41cmVtIDsgZm9udC13ZWlnaHQ6bGlnaHRlciAhaW1wb3J0YW50O2xpbmUtaGVpZ2h0OjI0cHg7dGV4dC1hbGlnbjpjZW50ZXI7Y29sb3I6IzAyNDA2ZjtjbGVhcjpib3RoO21hcmdpbi1ib3R0b206MzBweDsgfSAuY3JlZGl0X21fc3RhcnRpbmdhdCB7IG1hcmdpbi10b3A6MjYwcHg7Zm9udC1zaXplOjEuNDM4cmVtIDsgZm9udC13ZWlnaHQ6Ym9sZCAhaW1wb3J0YW50O2xpbmUtaGVpZ2h0OjI2cHg7ZGlzcGxheTpibG9jazsgfSAuY3JlZGl0X21fZGVsaXZlcnl7IGZvbnQtc2l6ZToxLjVyZW0gOyBmb250LXdlaWdodDpsaWdodGVyICFpbXBvcnRhbnQ7IGxpbmUtaGVpZ2h0OjI0cHg7dGV4dC1hbGlnbjpjZW50ZXI7Y29sb3I6IzAyNDA2ZjsgfSAuY3JlZGl0X21fY2FsbHVzX3dyYXBwZXJ7IGJhY2tncm91bmQtY29sb3I6IzAyNjJhYzsgYmFja2dyb3VuZC1pbWFnZTotbW96LWxpbmVhci1ncmFkaWVudCgjMDI2MmFjLCMwMTM3NjApOyBiYWNrZ3JvdW5kLWltYWdlOi13ZWJraXQtbGluZWFyLWdyYWRpZW50KCMwMjYyYWMsIzAxMzc2MCk7IGJhY2tncm91bmQtaW1hZ2U6bGluZWFyLWdyYWRpZW50KCMwMjYyYWMsIzAxMzc2MCk7IHdpZHRoOjEwMCU7IG1hcmdpbjowIDAgMjBweCAwOyBib3JkZXItcmFkaXVzOjNweDsgdGV4dC1hbGlnbjpjZW50ZXI7IH0gLmNyZWRpdF9tX2NhbGx1cywgLmNyZWRpdF9tX2NhbGx1cyBheyBkaXNwbGF5OmJsb2NrO2hlaWdodDo1NXB4O3dpZHRoOjEwMCU7Y29sb3I6I2ZmZjsgfSAuY3JlZGl0X2NhbGxfdXNfMSB7IGZvbnQtc2l6ZTowLjc1cmVtIDsgZm9udC13ZWlnaHQ6bGlnaHRlciAhaW1wb3J0YW50OyBsaW5lLWhlaWdodDoxMnB4OyBsaW5lLWhlaWdodDo1NXB4OyBtYXJnaW4tbGVmdDoxMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7IGJvdHRvbTo2cHg7IH0gLmNyZWRpdF9jYWxsX3VzXzIgeyBjb250ZW50OnVybCgvaW1hZ2VzL2ZpbmFuY2UvaWNvbi1waG9uZS13aGl0ZS5wbmcpO21hcmdpbjowIDEwcHg7IH0gLmNyZWRpdF9jYWxsX3VzXzMgeyBmb250LXNpemU6MS4zNzVyZW0gOyBmb250LXdlaWdodDpub3JtYWwgIWltcG9ydGFudDsgbGluZS1oZWlnaHQ6MjJweDsgbGluZS1oZWlnaHQ6NTVweDsgbWFyZ2luLXJpZ2h0OjEwcHg7IH0gLmNyZWRpdF9tX2lubmVyIHsgcGFkZGluZzoxNXB4IDEwcHg7IH0gLmNyZWRpdF9tX3NlZW5fYWxseyBwb3NpdGlvbjpyZWxhdGl2ZTt3aWR0aDoxMDAlOyBoZWlnaHQ6NDAwcHg7IG1hcmdpbjowIGF1dG87IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvZmluYW5jZS9oZWFkZXItY29uZGl0aW9ucy1iZy1tX3JlZC5wbmcpIHRvcCBjZW50ZXIgbm8tcmVwZWF0OyB6LWluZGV4OjU7IGJveC1zaXppbmc6Ym9yZGVyLWJveDsgY29sb3I6I2ZmZjsgdGV4dC1hbGlnbjpjZW50ZXI7IH0gLmNyZWRpdF9tX3NlZW5fYWxsIHVseyBwYWRkaW5nLXRvcDoyMHB4O2ZvbnQtc2l6ZToxLjEyNXJlbSA7IH0gLmNyZWRpdF9tX3NlZW5fYWxsIHVsIGxpeyBmb250LXNpemU6MS4xMjVyZW0gOyBmb250LXdlaWdodDpib2xkICFpbXBvcnRhbnQ7IGxpbmUtaGVpZ2h0OjE4cHg7IHRleHQtdHJhbnNmb3JtOnZhcigtLXR4dC11cHBlcik7IHBhZGRpbmc6NXB4OyBib3JkZXItdG9wOjFweCByZ2JhKDI1NSwyNTUsMjU1LDAuMikgc29saWQ7IH0gLmNyZWRpdF9tX3NlZW5fYWxsIHVsIGxpOmZpcnN0LWNoaWxkIHsgcGFkZGluZy10b3A6MDsgYm9yZGVyLXRvcDpub25lOyB9IC5jcmVkaXRfbV9zZWVuX2FsbCBweyBmb250LXNpemU6MS45MzhyZW0gOyBsaW5lLWhlaWdodDozMXB4OyB0ZXh0LXRyYW5zZm9ybTp2YXIoLS10eHQtdXBwZXIpOyBtYXJnaW46MjBweCAwIDAgMDsgfSAuY3JlZGl0X21fZm9ybV93cmFwcGVyeyB0ZXh0LWFsaWduOmNlbnRlcjsgYm9yZGVyLXJpZ2h0Om5vbmU7IGNvbG9yOiMwMjQwNmY7IGZvbnQtd2VpZ2h0Om5vcm1hbCAhaW1wb3J0YW50OyBib3gtc2l6aW5nOmJvcmRlci1ib3g7IHotaW5kZXg6NzA7IHBhZGRpbmc6MjBweCAxMHB4IDgwcHggNXB4OyBwb3NpdGlvbjpyZWxhdGl2ZTsgYm9yZGVyOjVweCBzb2xpZCAjMDI0MDZmOyBib3JkZXItcmFkaXVzOjEwcHg7IGJhY2tncm91bmQ6I0ZGRjsgd2lkdGg6MTAwJTsgbWFyZ2luLXRvcDoyMHB4OyB9IC5jcmVkaXRfbV9iZWZvcmVfZm9ybXsgZm9udC1zaXplOjIuMTI1cmVtIDsgbGluZS1oZWlnaHQ6MzRweDsgdGV4dC10cmFuc2Zvcm06dmFyKC0tdHh0LXVwcGVyKTsgfSAuY3JlZGl0X21fYmVmb3JlX2Zvcm0gcHsgZm9udC1zaXplOjEuMTg4cmVtIDsgbGluZS1oZWlnaHQ6MTlweDsgbWFyZ2luLXRvcDoxNXB4OyB0ZXh0LXRyYW5zZm9ybTpub25lOyB9IC5jcmVkaXRfbV9mb3JtX2JvdHRvbXsgcG9zaXRpb246YWJzb2x1dGU7IGJvdHRvbTotMnB4OyBsZWZ0Oi0ycHg7IHdpZHRoOjEwMCU7IHBhZGRpbmc6MTJweCAycHggOHB4IDJweDsgYmFja2dyb3VuZDojMDI0MDZmOyBjb2xvcjojZmZmOyB0ZXh0LWFsaWduOmNlbnRlcjsgZm9udC1zaXplOjFyZW0gOyBmb250LXdlaWdodDpub3JtYWwgIWltcG9ydGFudDsgbGluZS1oZWlnaHQ6MTZweDsgfSAuY3JlZGl0X21fYWZ0ZXJfZm9ybXsgYm94LXNpemluZzpib3JkZXItYm94OyBjb2xvcjojZmZmOyBwYWRkaW5nOjM1cHggMDsgYmFja2dyb3VuZDojZmZmIHVybCgvaW1hZ2VzL2ZpbmFuY2UvZmVhdC1iZ19yZWQucG5nKTsgZGlzcGxheTpibG9jazsgZm9udC1zaXplOjEuMTI1cmVtIDsgZm9udC13ZWlnaHQ6bm9ybWFsICFpbXBvcnRhbnQ7IGxpbmUtaGVpZ2h0OjIwcHg7IHRleHQtYWxpZ246Y2VudGVyOyB9IC5jcmVkaXRfbV9hZnRlcl9mb3JtIHNwYW57IH0gLmNyZWRpdF9tX2Zvcm1fYm90dG9tIHB7IHBhZGRpbmc6MDsgbGluZS1oZWlnaHQ6MS4zOyB9IC5jcmVkaXRfbV9hZnRlcl9mb3JtIGgyeyBmb250LXNpemU6MS4zMTNyZW0gOyBmb250LXdlaWdodDpib2xkICFpbXBvcnRhbnQ7IGxpbmUtaGVpZ2h0OjI1cHg7IG1hcmdpbjo1cHggMCAwIDA7IHBhZGRpbmc6MDsgfSBAbWVkaWEobWF4LXdpZHRoOjQ1MHB4KSB7IC5jcmVkaXRfbV9hZnRlcl9mb3JtIGgye3BhZGRpbmc6MCAyMCU7fSAuY3JlZGl0X21fZm9ybV9ib3R0b20gcHtwYWRkaW5nOjAgMjAlO30gfSBAbWVkaWEobWF4LXdpZHRoOjQwMHB4KSB7IC5jcmVkaXRfbV9hZnRlcl9mb3JtIGgye3BhZGRpbmc6MCAxNSU7fSAuY3JlZGl0X21fZm9ybV9ib3R0b20gcHtwYWRkaW5nOjAgMTUlO30gfSBAbWVkaWEobWF4LXdpZHRoOjM0MHB4KSB7IC5jcmVkaXRfbV9hZnRlcl9mb3JtIGgye3BhZGRpbmc6MCAxMCU7fSAuY3JlZGl0X21fZm9ybV9ib3R0b20gcHtwYWRkaW5nOjAgMTAlO30gfSAuY3JlZGl0X21fM3N0ZXBzeyBtYXJnaW4tbGVmdDphdXRvOyBtYXJnaW4tcmlnaHQ6YXV0bzsgYm94LXNpemluZzpib3JkZXItYm94OyBwb3NpdGlvbjpyZWxhdGl2ZTsgdGV4dC1hbGlnbjpsZWZ0OyBtYXJnaW46MCBhdXRvOyBwYWRkaW5nLXJpZ2h0OjEwcHg7IHBhZGRpbmctbGVmdDoxMHB4OyBtYXgtd2lkdGg6OTYwcHg7IH0gLmNyZWRpdF9tXzNzdGVwcyBoMnsgZm9udC1zaXplOjEuNTYzcmVtIDsgZm9udC13ZWlnaHQ6bm9ybWFsICFpbXBvcnRhbnQ7IGxpbmUtaGVpZ2h0OjI1cHg7IHRleHQtdHJhbnNmb3JtOnZhcigtLXR4dC11cHBlcik7IG1hcmdpbi10b3A6MDsgcGFkZGluZy10b3A6MDsgYm9yZGVyLXRvcDpub25lOyBjb2xvcjojMDI0MDZmOyB9IC5jcmVkaXRfbV8zc3RlcHMgdWx7IGxpc3Qtc3R5bGU6bm9uZTsgfSAuY3JlZGl0X21fM3N0ZXBzIGxpeyBwYWRkaW5nOjIwcHggMjBweCAyMHB4IDExM3B4OyBib3JkZXItcmFkaXVzOjEwcHg7IHBvc2l0aW9uOnJlbGF0aXZlOyBiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7IG1hcmdpbi10b3A6MTBweDsgfSAuY3JlZGl0X21fM3N0ZXBzX3dyYXBwZXJ7IHBhZGRpbmc6NDBweCAwOyBiYWNrZ3JvdW5kOiNlMWUxZTEgdXJsKC9pbWFnZXMvZmluYW5jZS9zdGVwcy1iZy5qcGcpIHRvcCBjZW50ZXIgbm8tcmVwZWF0OyB9IC5jcmVkaXRfbV8zc3RlcHMgdWwgbGkgaDN7IGZvbnQtc2l6ZToxLjM3NXJlbSA7IGZvbnQtd2VpZ2h0Om5vcm1hbCAhaW1wb3J0YW50OyBsaW5lLWhlaWdodDoyMnB4OyBjb2xvcjojMDI0MDZmOyB9IC5jcmVkaXRfbV8zc3RlcHMgdWwgbGkgcHsgbGluZS1oZWlnaHQ6MjBweDsgbWFyZ2luOjAgMCAxNXB4IDA7IHBhZGRpbmc6MDsgZm9udC1zaXplOjEuMTI1cmVtIDsgZm9udC13ZWlnaHQ6bm9ybWFsICFpbXBvcnRhbnQ7IGxpbmUtaGVpZ2h0OjE4cHg7IH0gLmNyZWRpdF9tXzNzdGVwcyB1bCBsaTphZnRlcnsgcG9zaXRpb246YWJzb2x1dGU7IHRvcDowOyBib3R0b206MDsgbGVmdDoyMHB4OyBtYXJnaW46YXV0byAwOyBjb250ZW50OicgJzsgZGlzcGxheTpibG9jazsgd2lkdGg6NzNweDsgaGVpZ2h0OjY2cHg7IGJhY2tncm91bmQtaW1hZ2U6dXJsKCcvaW1hZ2VzL2ZpbmFuY2Uvc3RlcHMtbW9iaWxlX3JlZC5wbmcnKTsgYmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0OyB9IC5jcmVkaXRfbV8zc3RlcHMgdWwgPiBsaTpmaXJzdC1jaGlsZDphZnRlciB7IGJhY2tncm91bmQtcG9zaXRpb246LTE5MXB4IDA7IH0gLmNyZWRpdF9tXzNzdGVwcyB1bCA+IGxpOm50aC1jaGlsZCgyKTphZnRlcnsgYmFja2dyb3VuZC1wb3NpdGlvbjowIDFweDsgfSAuY3JlZGl0X21fM3N0ZXBzIHVsID4gbGk6bnRoLWNoaWxkKDMpOmFmdGVyeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOi05MHB4IDlweDsgfSAuY3JlZGl0X21fZm9vdGVyX3dyYXBwZXJ7IHBhZGRpbmc6MTBweCAwOyB9IC5jcmVkaXRfbV9mb290ZXJ7IGJveC1zaXppbmc6Ym9yZGVyLWJveDsgcG9zaXRpb246cmVsYXRpdmU7IHRleHQtYWxpZ246bGVmdDsgbWFyZ2luOjAgYXV0bzsgcGFkZGluZy1yaWdodDoxMHB4OyBwYWRkaW5nLWxlZnQ6MTBweDsgbWF4LXdpZHRoOjk2MHB4OyB9IC5jcmVkaXRfbV9mb290ZXIgaDIgeyBtYXJnaW46dmFyKC0tczkpIDAgdmFyKC0tczMpIDA7IGxpbmUtaGVpZ2h0OjEuNzVyZW07IH0gLmNyZWRpdF9tX2Zvcm0gaW5wdXRbdHlwZT10ZXh0XSwgLmNyZWRpdF9tX2Zvcm0gaW5wdXRbdHlwZT1kYXRlXSwgLmNyZWRpdF9tX2Zvcm0gaW5wdXRbdHlwZT1udW1iZXJdLCAuY3JlZGl0X21fZm9ybSBpbnB1dFt0eXBlPWVtYWlsXSwgLmNyZWRpdF9tX2Zvcm0gaW5wdXRbdHlwZT10ZWxdLCAuY3JlZGl0X21fZm9ybSBzZWxlY3R7IGhlaWdodDo1MHB4OyBmb250LXNpemU6MS4zNzVyZW0gOyBmb250LXdlaWdodDpib2xkICFpbXBvcnRhbnQ7IGxpbmUtaGVpZ2h0OjIycHg7IHdpZHRoOjEwMCU7IG1hcmdpbi1ib3R0b206MHB4OyBib3JkZXItcmFkaXVzOjEwcHg7IG1hcmdpbjowOyBwYWRkaW5nOjNweCA1cHg7IGJhY2tncm91bmQtY29sb3I6I0RBREFEQTsgYm9yZGVyOjFweCAjQzJCM0IzIHNvbGlkOyBib3gtc2l6aW5nOmJvcmRlci1ib3g7IH0gLmNyZWRpdF9tX2Zvcm0gdGFibGV7IHdpZHRoOjEwMCU7IHBhZGRpbmc6MCAxMHB4OyB9IC5jcmVkaXRfbV9mb3JtIC5jcmVkaXRfcmVxdWVzdF9zdWJtaXR7IGRpc3BsYXk6YmxvY2s7IGZvbnQtc2l6ZToxLjg3NXJlbSA7IHBhZGRpbmc6NXB4OyBmb250LXdlaWdodDpib2xkICFpbXBvcnRhbnQ7IGxpbmUtaGVpZ2h0OjYwcHg7IG1hcmdpbjozMHB4IDAgMzBweCAwOyBib3gtc2hhZG93Om5vbmU7IHRleHQtZGVjb3JhdGlvbjpub25lOyBiYWNrZ3JvdW5kOm5vbmU7IGJhY2tncm91bmQtY29sb3I6I2NmMTcxZjsgY29sb3I6I2ZmZjsgdGV4dC10cmFuc2Zvcm06dmFyKC0tdHh0LXVwcGVyKTsgYm9yZGVyLXJhZGl1czoxMHB4OyB9IC5jcmVkaXRfbV9mb3JtIC5sYWJlbHsgZm9udC1zaXplOjAuODc1cmVtIDsgZm9udC13ZWlnaHQ6bGlnaHRlcjsgIWltcG9ydGFudDsgY29sb3I6IzI0MjQyNDsgZmxvYXQ6bGVmdDsgd2lkdGg6MTAwJTsgdGV4dC1hbGlnbjpsZWZ0OyB9IC5jcmVkaXRfbV9yZXF1aXJlZHsgY29sb3I6I2MwMDsgfSAjYmVzdFByaWNlVmRwTmV3UG9wdXBDb250YWluZXJ7IHdpZHRoOjI4MHB4OyBoZWlnaHQ6NDkwcHg7IHBhZGRpbmc6MjZweCAxMHB4IDEwcHggMTBweDsgfSAjYmVzdFByaWNlVmRwTmV3UG9wdXBDb250YWluZXIgLnBvcHVwX2JneyB3aWR0aDoyODBweDsgaGVpZ2h0OjQ5MHB4OyB9ICNiZXN0UHJpY2VWZHBOZXdQb3B1cENvbnRhaW5lciAucG9wdXBfYmd7IGJhY2tncm91bmQtaW1hZ2U6dXJsKCcvaW1hZ2VzL3BvcHVwcy9tL2ZyL2Jlc3RQcmljZU5ld1ZkcC5wbmcnKTsgfSAucG9wdXBfYmd7IGJhY2tncm91bmQtY29sb3I6IzQ0NDQ0NDsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IC5wb3B1cEZvcm0gLmFzdGVyaXNreyBjb2xvcjojZDAwOyBmb250LXdlaWdodDpib2xkOyBwYWRkaW5nOjA7IGZvbnQtc2l6ZTppbmhlcml0OyBtYXJnaW46MDsgfSAucG9wdXBGb3JteyB6LWluZGV4OjUwOyBwb3NpdGlvbjphYnNvbHV0ZTsgdG9wOjI3N3B4OyBoZWlnaHQ6MjQ5cHg7IGJhY2tncm91bmQtc2l6ZToyODBweDsgd2lkdGg6MjcwcHg7IHBhZGRpbmc6M3B4OyB9IC5wb3B1cEZvcm0gdGFibGV7IG1hcmdpbi1ib3R0b206MTBweDsgfSAucG9wdXBGb3JtVGl0bGV7IGhlaWdodDoyNXB4OyBtYXJnaW46OHB4OyBmb250LXNpemU6MXJlbSA7IGZvbnQtd2VpZ2h0OmJvbGQ7IH0gLnBvcHVwRm9ybUlucHV0cyB0ZCB7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IHRleHQtYWxpZ246cmlnaHQ7IHBhZGRpbmctcmlnaHQ6MTBweDsgcGFkZGluZy1ib3R0b206M3B4OyBsaW5lLWhlaWdodDoxM3B4OyBtaW4td2lkdGg6NjBweDsgfSAucG9wdXBGb3JtIGlucHV0eyB3aWR0aDoxODBweDsgfSAjYXNQdXJjaGFzZUludGVudHsgd2lkdGg6ODUlOyBtYXgtd2lkdGg6NjAwcHg7IHBhZGRpbmc6MTBweCAxMHB4OyB6LWluZGV4OjEwMDAwMjE7IH0gLnN0cmlrZXsgcG9zaXRpb246cmVsYXRpdmU7IH0gLnN0cmlrZTo6YWZ0ZXJ7IGNvbnRlbnQ6Jyc7IGJvcmRlci1ib3R0b206MnB4IHNvbGlkICNDRTAwMDA7IHBvc2l0aW9uOmFic29sdXRlOyBsZWZ0OjA7IHRvcDoyNSU7IHdpZHRoOjEwMCU7IH0gLnJlc3BvbnNpdmUtY29udGFpbmVyIHsgcG9zaXRpb246cmVsYXRpdmU7IG92ZXJmbG93OnNjcm9sbDsgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6dG91Y2g7IH0gLnJlc3BvbnNpdmUtY29udGFpbmVyLTE2eDkgeyBwYWRkaW5nLWJvdHRvbTo1Ni4yNSU7IH0gLnJlc3BvbnNpdmUtY29udGFpbmVyLTR4MyB7IHBhZGRpbmctYm90dG9tOjc1JTsgfSAucmVzcG9uc2l2ZS1jb250YWluZXItMTAwIHsgcGFkZGluZy1ib3R0b206MTAwJTsgd2lkdGg6MTAwJTsgfSAucmVzcG9uc2l2ZS1jb250YWluZXItMTAgeyBwYWRkaW5nLWJvdHRvbToxMCU7IHdpZHRoOjEwMCU7IH0gLnJlc3BvbnNpdmUtY29udGFpbmVyIGlmcmFtZSB7IHBvc2l0aW9uOmFic29sdXRlOyB0b3A6MDsgbGVmdDowOyB3aWR0aDoxMDAlOyBoZWlnaHQ6MTAwJTsgfSAucmVzcG9uc2l2ZS1jb250YWluZXIgW2NsYXNzKj0iY3JlZHNpaSJdIGlmcmFtZSB7IHBvc2l0aW9uOmluaGVyaXQ7IH0gLnJlc3BvbnNpdmUtZWRpdG9yIGlmcmFtZXsgcG9zaXRpb246aW5pdGlhbDsgfSAuc3VibWVudUl0ZW1Db250YWluZXIgLmxvY2F0aW9uLW5hbWVzIGEsIC5zdWJtZW51SXRlbUNvbnRhaW5lciAubG9jYXRpb24tbmFtZXMgLnRpdGxlLCAuc3VibWVudUl0ZW1Db250YWluZXIgLmxvY2F0aW9uLW5hbWVzIC5sb2NhdGlvbi1kZXRhaWxzLWluZm8gbGkgeyBwYWRkaW5nLWxlZnQ6OXB4OyB9IC5zdWJtZW51SXRlbUNvbnRhaW5lciAuc3VibWVudUl0ZW1DaGlsZENvbnRhaW5lciB7IGRpc3BsYXk6bm9uZTsgfSAuc3VibWVudUl0ZW1DaGlsZENvbnRhaW5lciAuc3VibWVudUl0ZW1DaGlsZENvbnRhaW5lciB7IGRpc3BsYXk6YmxvY2s7IH0gLnN1Ym1lbnVJdGVtQ29udGFpbmVyIC5zdWJtZW51SXRlbUNoaWxkQ29udGFpbmVyIC5zdWJtZW51SXRlbUNoaWxkQ29udGFpbmVyIHsgZGlzcGxheTpub25lOyB9IC5zdWJtZW51SXRlbUNvbnRhaW5lciAubG9jYXRpb24tbmFtZXMgPiBhIHsgYmFja2dyb3VuZC1jb2xvcjojZmZmZmZmOyB9IGxpLmxvY2F0aW9uLW5hbWVzIHsgdGV4dC1hbGlnbjpsZWZ0OyB9IGxpLmxvY2F0aW9uLW5hbWVzLm1vYmlsZSB7IG1hcmdpbi1ib3R0b206MDsgfSBsaS5sb2NhdGlvbi1uYW1lcy5tb2JpbGUgPiBhIHsgZm9udC13ZWlnaHQ6bm9ybWFsOyBib3JkZXItcmFkaXVzOjA7IGJvcmRlcjoxcHggc29saWQgI0JCQjsgYm9yZGVyLWJvdHRvbTpub25lOyB9IC5sb2NhdGlvbi1kZXRhaWxzIHsgZm9udC1zaXplOjFyZW0gOyB9IC5sb2NhdGlvbi1kZXRhaWxzLWxvZ28gLnRpdGxlIHsgbWFyZ2luLXRvcDo4cHg7IH0gLmxvY2F0aW9uLWRldGFpbHMtbG9nbyBpbWcgeyBtYXJnaW4tYm90dG9tOjhweDsgfSAubG9jYXRpb24tZGV0YWlscy1pbmZvIHVsIGxpOm5vdCguZGV0YWlscy1pbmZvLWxpbmspIHsgYm9yZGVyLWxlZnQ6bm9uZTsgYm9yZGVyLXJpZ2h0Om5vbmU7IGJvcmRlci1ib3R0b206bm9uZTsgfSAubG9jYXRpb24tZGV0YWlscy1pbmZvIHVsIGxpOm5vdCg6Zmlyc3QtY2hpbGQpIHsgYm9yZGVyOm5vbmU7IH0gI2RlZmF1bHRUb3BCYW5uZXJUZXh0IHsgfSBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOjMyMHB4KSB7ICN0b3BCYW5uZXJJbWFnZS5ORVdDQVJTICNkZWZhdWx0VG9wQmFubmVyVGl0bGV7IGZvbnQtc2l6ZToxLjM3NXJlbSAhaW1wb3J0YW50OyB9ICN0b3BCYW5uZXJJbWFnZS5ORVdDQVJTICNkZWZhdWx0VG9wQmFubmVyVGV4dHsgZm9udC1zaXplOjEuMTg4cmVtICFpbXBvcnRhbnQ7IH0gI3RvcEJhbm5lckltYWdlLlVTRURDQVJTICNkZWZhdWx0VG9wQmFubmVyVGl0bGV7IGZvbnQtc2l6ZToxLjM3NXJlbSAhaW1wb3J0YW50OyB9ICN0b3BCYW5uZXJJbWFnZS5VU0VEQ0FSUyAjZGVmYXVsdFRvcEJhbm5lclRleHR7IGZvbnQtc2l6ZToxLjE4OHJlbSAhaW1wb3J0YW50OyB9IH0gQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDozMjBweCkgeyAjdG9wQmFubmVySW1hZ2UuTkVXQ0FSUyAjZGVmYXVsdFRvcEJhbm5lclRpdGxlLCN0b3BCYW5uZXJJbWFnZS5VU0VEQ0FSUyAjZGVmYXVsdFRvcEJhbm5lclRpdGxlIHsgZm9udC1zaXplOjEuMTg4cmVtICFpbXBvcnRhbnQ7IH0gI3RvcEJhbm5lckltYWdlLk5FV0NBUlMgI2RlZmF1bHRUb3BCYW5uZXJUZXh0LCN0b3BCYW5uZXJJbWFnZS5VU0VEQ0FSUyAjZGVmYXVsdFRvcEJhbm5lclRleHQgeyBmb250LXNpemU6MS4wNjNyZW0gIWltcG9ydGFudDsgfSB9ICN0b3BCYW5uZXJJbWFnZS5VU0VEQ0FSUyAjZGVmYXVsdFRvcEJhbm5lcldyYXB7IGhlaWdodDoxNjVweCAhaW1wb3J0YW50OyB9ICN0b3BCYW5uZXJJbWFnZS5ORVdDQVJTICNkZWZhdWx0VG9wQmFubmVyV3JhcHsgaGVpZ2h0OjE2NXB4ICFpbXBvcnRhbnQ7IH0gI2RlZmF1bHRUb3BCYW5uZXJ7IG1pbi1oZWlnaHQ6aW5pdGlhbDsgaGVpZ2h0OmF1dG87IH0gI2RlZmF1bHRUb3BCYW5uZXJXcmFwIGRpdi5kZWZhdWx0VG9wQmFubmVyQnRuV3JhcHBlcnsgbWFyZ2luOjEwcHggMCAhaW1wb3J0YW50OyB9ICNkZWZhdWx0VG9wQmFubmVyV3JhcCB7IHRvcDowIWltcG9ydGFudDsgcGFkZGluZzoxNXB4IDRweCAhaW1wb3J0YW50OyB9ICNkZWZhdWx0VG9wQmFubmVyVGl0bGUgeyBsaW5lLWhlaWdodDpub3JtYWwhaW1wb3J0YW50OyB9ICNkZWZhdWx0VG9wQmFubmVyVGV4dCB7IH0gI2RlZmF1bHRUb3BCYW5uZXJCdG4geyBmb250LXNpemU6MC43NXJlbSAhaW1wb3J0YW50OyBtYXJnaW4tYm90dG9tOjEwcHg7IGZvbnQtd2VpZ2h0Om5vcm1hbCFpbXBvcnRhbnQ7IHBhZGRpbmc6NHB4IDIwcHghaW1wb3J0YW50OyB9IC5wcm9tb0JUTiBheyBib3JkZXI6bm9uZSFpbXBvcnRhbnQ7IHRleHQtdHJhbnNmb3JtOnZhcigtLXR4dC11cHBlcik7IH0gLnByb21vQlROLmlzLXN0aWNreXsgcG9zaXRpb246c3RpY2t5OyB0b3A6M3JlbTsgYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1saWdodC1ncmF5KTsgYWxpZ24taXRlbXM6Y2VudGVyOyB9IC5zcGVjaWFsLXNjaGVkdWxlIHsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjRweDsgLW1vei1ib3JkZXItcmFkaXVzOjRweDsgYm9yZGVyLXJhZGl1czo0cHg7IGNvbG9yOnJnYigyNTUsMjU1LDI1NSk7IHRleHQtYWxpZ246bGVmdDsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IGRpc3BsYXk6YmxvY2s7IGZvbnQtc2l6ZToxLjFlbTsgZm9udC13ZWlnaHQ6Ym9sZDsgcGFkZGluZzo3cHggOHB4IDdweCAwcHg7IGJhY2tncm91bmQ6cmdiKDcyLCA3MiwgNzMpOyBtYXJnaW46MTJweCAxMHB4IDNweCAxMHB4OyB9ICNkZWZhdWx0VG9wQmFubmVyIHsgaGVpZ2h0OmF1dG87IH0gSU5QVVRbdHlwZT0idGV4dCJdLnZhbGlkaXR5LWVycm9uZW91cywgSU5QVVRbdHlwZT0iZGF0ZSJdLnZhbGlkaXR5LWVycm9uZW91cywgSU5QVVRbdHlwZT0iZW1haWwiXS52YWxpZGl0eS1lcnJvbmVvdXMsIElOUFVUW3R5cGU9InRlbCJdLnZhbGlkaXR5LWVycm9uZW91cywgSU5QVVRbdHlwZT0icGFzc3dvcmQiXS52YWxpZGl0eS1lcnJvbmVvdXMgeyBib3JkZXI6MXB4IHNvbGlkICNkYzM1NDU7IGJhY2tncm91bmQtY29sb3I6I2ZhZDZkYzsgfSBTRUxFQ1QudmFsaWRpdHktZXJyb25lb3VzeyBib3JkZXI6MXB4IHNvbGlkICNkYzM1NDU7IGJhY2tncm91bmQtY29sb3I6I2ZhZDZkYzsgfSBURVhUQVJFQS52YWxpZGl0eS1lcnJvbmVvdXN7IGJvcmRlcjoxcHggc29saWQgI2RjMzU0NTsgYmFja2dyb3VuZC1jb2xvcjojZmFkNmRjOyB9ICN0cmFkZUluQmFyUG9wdXBfZm9ybVcgLnRyYWRpblNlbGVjdFBvcHVweyBjb2xvcjojM2MzODM2OyBmb250LXNpemU6MXJlbTsgYmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LDEpOyBiYWNrZ3JvdW5kLXBvc2l0aW9uOjk1JSA1MCU7IC13ZWJraXQtYXBwZWFyYW5jZTpub25lOyAtbW96LWFwcGVhcmFuY2U6bm9uZTsgbWFyZ2luOjVweCAwIDA7IHBhZGRpbmc6MC4zcmVtIWltcG9ydGFudDsgfSAjdHJhZGVJbkJhclBvcHVwX2Zvcm1XIDo6cGxhY2Vob2xkZXIgeyBjb2xvcjojYTlhOWE5OyBvcGFjaXR5OjE7IH0gI3RyYWRlSW5CYXJQb3B1cF9mb3JtVyA6LW1zLWlucHV0LXBsYWNlaG9sZGVyIHsgY29sb3I6I2E5YTlhOTsgfSAjdHJhZGVJbkJhclBvcHVwX2Zvcm1XIDo6LW1zLWlucHV0LXBsYWNlaG9sZGVyIHsgY29sb3I6I2E5YTlhOTsgfSAucmV2ZWFsLW1vZGFsIDo6cGxhY2Vob2xkZXIgeyBjb2xvcjojYTlhOWE5OyBvcGFjaXR5OjE7IH0gLnJldmVhbC1tb2RhbCA6LW1zLWlucHV0LXBsYWNlaG9sZGVyIHsgY29sb3I6I2E5YTlhOTsgfSAucmV2ZWFsLW1vZGFsIDo6LW1zLWlucHV0LXBsYWNlaG9sZGVyIHsgY29sb3I6I2E5YTlhOTsgfSAjYXNQdXJjaGFzZUludGVudCAqeyBib3gtc2l6aW5nOmNvbnRlbnQtYm94IWltcG9ydGFudDsgfSAjdHJhZGVJbkJhclBvcHVwX3RpdGxleyB0ZXh0LXRyYW5zZm9ybTp2YXIoLS10eHQtdXBwZXIpOyBmb250LXdlaWdodDpib2xkOyB0ZXh0LWFsaWduOmNlbnRlcjsgY29sb3I6IzA1MTQxZjsgfSAjdHJhZGVJbkJhclBvcHVwU2VsZWN0ZWRWZWhpY2xleyBtYXJnaW4tYm90dG9tOjEwcHg7IHRleHQtYWxpZ246Y2VudGVyOyBjb2xvcjojMDUxNDFmOyB9IC50cmFkaW5TZWxlY3RXeyBmbG9hdDpsZWZ0OyBtYXJnaW4tbGVmdDoxMHB4OyB9IC50cmFkaW5TZWxlY3RBeyBwb3NpdGlvbjpyZWxhdGl2ZTsgfSAudHJhZGluU2VsZWN0QTphZnRlciB7IGNvbnRlbnQ6IiAiOyBoZWlnaHQ6MDsgd2lkdGg6MDsgYm9yZGVyLWxlZnQ6NXB4IHNvbGlkIHRyYW5zcGFyZW50OyBib3JkZXItcmlnaHQ6NXB4IHNvbGlkIHRyYW5zcGFyZW50OyBib3JkZXItdG9wOjVweCBzb2xpZCAjMDAwMDAwOyBwb3NpdGlvbjphYnNvbHV0ZTsgcmlnaHQ6MTRweDsgdG9wOjE3cHg7IHRyYW5zaXRpb246YWxsIDAuM3MgbGluZWFyOyBwb2ludGVyLWV2ZW50czpub25lOyB9IC50cmFkaW5OaXZ7IHdpZHRoOjEwMCU7IHBhZGRpbmc6MC40cmVtOyBib3JkZXI6MXB4IHNvbGlkICNhOWE5YTk7IGJvcmRlci1yYWRpdXM6NXB4OyB9IC50cmFkaW5TZWxlY3R7IGNvbG9yOiMzYzM4MzY7IGJvcmRlcjoycHggc29saWQgIyNUUkFERUlOSlNFTEVDVEJPUkRFUkNPTE9SIyM7IGJvcmRlci1yYWRpdXM6NXB4OyBwYWRkaW5nOjEwcHggMTBweDsgZm9udC1zaXplOjFyZW0gOyBiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjkpOyBiYWNrZ3JvdW5kLXBvc2l0aW9uOjk1JSA1MCU7IHdpZHRoOjIwMHB4OyAtd2Via2l0LWFwcGVhcmFuY2U6bm9uZTsgLW1vei1hcHBlYXJhbmNlOm5vbmU7IHBhZGRpbmctcmlnaHQ6MjdweDsgfSAudHJhZGluU2VsZWN0OmFmdGVyIHsgY29udGVudDoiICI7IGhlaWdodDowOyB3aWR0aDowOyBib3JkZXItbGVmdDo1cHggc29saWQgdHJhbnNwYXJlbnQ7IGJvcmRlci1yaWdodDo1cHggc29saWQgdHJhbnNwYXJlbnQ7IGJvcmRlci10b3A6NXB4IHNvbGlkICMwMDAwMDA7IHBvc2l0aW9uOmFic29sdXRlOyByaWdodDoxNHB4OyB0b3A6MTdweDsgdHJhbnNpdGlvbjphbGwgMC4zcyBsaW5lYXI7IH0gLnRyYWRlSW5CYXJNb2JpbGVCdXR0b24geyBwb3NpdGlvbjpmaXhlZDsgYm90dG9tOjEwcHg7IGxlZnQ6MTBweDsgei1pbmRleDo0OyB3aWR0aDoxNDBweCAhaW1wb3J0YW50OyBib3JkZXItd2lkdGg6MXB4OyB0ZXh0LWFsaWduOmxlZnQ7IGJhY2tncm91bmQtY29sb3I6IzA1MTQxZiAhaW1wb3J0YW50OyBjb2xvcjogI2ZmZmZmZiAhaW1wb3J0YW50OyBkaXNwbGF5OmZsZXg7IGFsaWduLWl0ZW1zOmNlbnRlcjsgYm9yZGVyLXJhZGl1czo4cHg7IGJvcmRlci13aWR0aDoxcHggM3B4IDRweCAxcHg7IGJvcmRlci1jb2xvcjojMzMzMzMzOyBwYWRkaW5nLXRvcDoxMHB4OyB9IEJPRFkuVXNlZFNycDJNb2JpbGUgLnRyYWRlSW5CYXJNb2JpbGVCdXR0b257IGJvdHRvbTo2cmVtOyB9IC50cmFkZUluQmFyTW9iaWxlQnV0dG9uIGl7IGRpc3BsYXk6aW5saW5lLWZsZXg7IGJvcmRlci1yYWRpdXM6MTAwJTsgd2lkdGg6MmVtOyBhbGlnbi1pdGVtczpjZW50ZXI7IGp1c3RpZnktY29udGVudDpjZW50ZXI7IGJvcmRlcjoycHggc29saWQgI2ZmZjsgYmFja2dyb3VuZC1jb2xvcjojZmZmOyBoZWlnaHQ6MS41ZW07IGNvbG9yOiMwMDA7IGZsb2F0OmxlZnQ7IH0gLnRyYWRlSW5CYXJNb2JpbGVCdXR0b24ud2l0aFRvYXN0ZXIgeyBib3R0b206ODBweDsgfSAudHJhZGVJbkJhck1vYmlsZUJ1dHRvbiBhIHsgY29sb3I6ICNmZmZmZmYgIWltcG9ydGFudDsgfSAudHJhZGVJbkJhclN0ZXAyeyBtYXJnaW46NjBweCAwOyB0ZXh0LWFsaWduOmNlbnRlcjsgfSAudHJhZGVJbkJhclN0ZXAyIC50cmFkZUluQmFyU3RlcDJRdWVzdGlvbnsgbWFyZ2luOjIwcHggMDsgfSAudHJhZGVJbkJhclN0ZXAzIC50cmFkZUluQmFyU3RlcDNRdWVzdGlvbnsgbWFyZ2luOjIwcHggMDsgfSAudHJhZGVJbkJhclN0ZXAyIC5yYWRpb19kaXYgbGFiZWx7IHdpZHRoOjUwcHg7IHBhZGRpbmc6MDsgbWFyZ2luOjVweDsgZGlzcGxheTppbmxpbmUtYmxvY2sgfSAudHJhZGVJbkJhclN0ZXAyIC5yYWRpb19kaXYgaW5wdXR7IHdpZHRoOmF1dG8gIWltcG9ydGFudDsgcGFkZGluZzowICFpbXBvcnRhbnQ7IG1hcmdpbjo1cHggIWltcG9ydGFudDsgYm9yZGVyOm5vbmUgIWltcG9ydGFudDsgaGVpZ2h0OmF1dG8gIWltcG9ydGFudDsgfSAubXVsdGlzZWxlY3RWZWhpY2xlT3B0aW9uc3sgbWFyZ2luLXRvcDo1cHg7IH0gLm11bHRpc2VsZWN0VmVoaWNsZU9wdGlvbnMgc3BhbnsgZm9udC1zaXplOjAuOTM4cmVtICFpbXBvcnRhbnQ7IHBhZGRpbmc6MCAhaW1wb3J0YW50OyBtYXJnaW46MCAhaW1wb3J0YW50OyB9ICN0cmFkZUluQmFyUG9wdXBfZm9ybVcgLnRyYWRlSW5CYXJNdWx0aXNlbGVjdHsgd2lkdGg6MTAwJSFpbXBvcnRhbnQ7IGJvcmRlci1yYWRpdXM6MC4zcmVtIWltcG9ydGFudDsgYm9yZGVyLXdpZHRoOjFweCFpbXBvcnRhbnQ7IGJvcmRlci1yYWRpdXM6MC4zcmVtIWltcG9ydGFudDsgYm9yZGVyLWNvbG9yOiNhOWE5YTkhaW1wb3J0YW50OyBwYWRkaW5nOjAuM3JlbSFpbXBvcnRhbnQ7IH0gLnVpLW11bHRpc2VsZWN0LW1lbnUudHJhZGVJbkJhck11bHRpc2VsZWN0eyB6LWluZGV4OjEwMDAwMjA7IG1heC1oZWlnaHQ6MTEwcHg7IG92ZXJmbG93OnNjcm9sbDsgfSAudHJhZGVJbkJhckRlYWxlclN0ZXB7IHRleHQtYWxpZ246Y2VudGVyOyBtYXJnaW4tdG9wOjI1cHg7IH0gLnRyYWRlSW5CYXJEZWFsZXJTdGVwIC50cmFkZUluQmFyRGVhbGVyU3RlcE1ha2VNb2RlbFllYXJ7IGZvbnQtd2VpZ2h0OjcwMDsgfSAudHJhZGVJbkJhckRlYWxlclN0ZXAgc3BhbnsgbWFyZ2luOjAhaW1wb3J0YW50OyBmb250LXdlaWdodDo3MDAhaW1wb3J0YW50OyBjb2xvcjojMDAwMDAwIWltcG9ydGFudDsgcGFkZGluZzowIWltcG9ydGFudDsgZm9udC1zaXplOjEuMzEzcmVtICFpbXBvcnRhbnQ7IH0gLm1vZGVsbm95ZWFyQnV0dG9uTGlzdHsgbWluLWhlaWdodDo0MnB4OyBtYXJnaW46MTVweCAwOyB9IC5tb2RlbG5veWVhckJ1dHRvbkxpc3QgdWx7IGZsb2F0OmxlZnQ7IGxpc3Qtc3R5bGUtdHlwZTpub25lOyBwYWRkaW5nOjA7IH0gLm1vZGVsbm95ZWFyQnV0dG9uTGlzdCBsaXsgZmxvYXQ6bGVmdDsgdGV4dC1hbGlnbjpjZW50ZXI7IG1hcmdpbi1yaWdodDozcHg7IGxpbmUtaGVpZ2h0OjQwcHg7IHBhZGRpbmc6MHB4IDE1cHg7IGN1cnNvcjpwb2ludGVyOyBiYWNrZ3JvdW5kLWNvbG9yOiNmMGYwZjA7IGNvbG9yOiMwNTE0MWY7IGJvcmRlcjoxcHggc29saWQgIzAwMDsgYm9yZGVyLXJhZGl1czozcHg7IC13ZWJraXQtYm9yZGVyLXJhZGl1czozcHg7IC1tb3otYm9yZGVyLXJhZGl1czozcHg7IH0gLm1vZGVsbm95ZWFyQnV0dG9uTGlzdCBsaTpob3ZlcnsgY29sb3I6IzA1MTQxZjsgYmFja2dyb3VuZC1jb2xvcjojZmZmZmZmOyBib3JkZXI6MXB4IHNvbGlkICMwNTE0MWY7IH0gLm1vZGVsbm95ZWFyQnV0dG9uTGlzdCBzcGFueyBtYXJnaW4tbGVmdDoxMHB4OyBib3JkZXItcmFkaXVzOjIwcHg7IGJhY2tncm91bmQtY29sb3I6IzAwMDsgY29sb3I6I2YwZjBmMDsgcGFkZGluZzoycHggMTBweDsgZm9udC1zaXplOjAuODc1cmVtIDsgZm9udC13ZWlnaHQ6NzAwOyB9IC5tb2RlbG5veWVhckJ1dHRvbkxpc3QgbGk6aG92ZXIgc3BhbnsgYmFja2dyb3VuZC1jb2xvcjojMDUxNDFmOyBjb2xvcjojZmZmZmZmOyB9IC5tb2RlbG5veWVhckJ1dHRvbkxpc3QgbGkubW9kZWxub3llYXJCdXR0b25TZWxlY3RlZHsgYmFja2dyb3VuZC1jb2xvcjpyZ2IoMjU1LDI1NSwyNTUpOyBjb2xvcjpyZ2IoNSwyMCwzMSk7IGJvcmRlcjoxcHggc29saWQgcmdiKDUsMjAsMzEpOyB9IC5tb2RlbG5veWVhckJ1dHRvbkxpc3QgbGkubW9kZWxub3llYXJCdXR0b25TZWxlY3RlZCBzcGFueyBiYWNrZ3JvdW5kLWNvbG9yOnJnYig1LDIwLDMxKTsgY29sb3I6cmdiKDI1NSwyNTUsMjU1KTsgfSAubXVsdGlmb3JtX2Zvb3RlciAubXVsdGlmb3JtX3N0ZXAyeyB0ZXh0LWFsaWduOmNlbnRlcjsgfSAubXVsdGlmb3JtX2JvZHl7IHBhZGRpbmc6MzBweCAxMHB4OyB9IC5tdWx0aWZvcm1fdGV4dHsgcGFkZGluZy1ib3R0b206MTVweCFpbXBvcnRhbnQ7IH0gLm11bHRpZm9ybV9idG5fMnsgdGV4dC1hbGlnbjpjZW50ZXI7IH0gLnJlYmF0ZVRhZ3sgbWFyZ2luOjAgYXV0bzsgcGFkZGluZzo0cHggN3B4IDRweCA3cHg7IHRleHQtYWxpZ246Y2VudGVyOyB3aWR0aDpmaXQtY29udGVudDsgbGluZS1oZWlnaHQ6MTVweDsgYm9yZGVyLXJhZGl1czozcHg7IGJhY2tncm91bmQ6IzA1MTQxZiFpbXBvcnRhbnQ7IGNvbG9yOiNmZmZmZmYhaW1wb3J0YW50OyB0ZXh0LXNoYWRvdzpub25lIWltcG9ydGFudDsgfSAucmViYXRlVGFnIHNwYW4ucmViYXRlVGV4dHsgZGlzcGxheTpibG9jazsgZm9udC1zaXplOjAuNzVyZW0gOyB9IC5yZWJhdGVUYWcgc3Bhbi5yZWJhdGVBbW91bnR7IGRpc3BsYXk6YmxvY2s7IGZvbnQtd2VpZ2h0OjcwMDsgZm9udC1zaXplOjFyZW0gOyB9IC5ncmF5Ym94IC5jYXItcHJpY2UtZG93bi1hcnJvd3sgbWFyZ2luLXRvcDotMjVweDsgbWFyZ2luLWJvdHRvbTowcHg7IG1hcmdpbi1sZWZ0OjIwcHg7IGZsb2F0OmxlZnQ7IHBvc2l0aW9uOnJlbGF0aXZlOyB6LWluZGV4OjU7IH0gLmdyYXlib3ggLmNhci1wcmljZS1kb3duLWFycm93LnVzZWR7IG1hcmdpbi1sZWZ0OjUwcHg7IH0gLnByb21vSW5mb1dyYXBwZXJ7IHdpZHRoOjEwMCU7IGhlaWdodDo2MHB4OyBib3R0b206MDsgZmxvYXQ6bGVmdDsgYmFja2dyb3VuZC1jb2xvcjojZWZlZmVmOyBkaXNwbGF5OmlubGluZS10YWJsZTsgbWFyZ2luLXRvcDotMjBweDsgfSAuZGl2Q2FyUGF5bWVudENvbnRhaW5lcnsgdGV4dC1hbGlnbjpjZW50ZXI7IGNvbG9yOmJsYWNrOyB9IC5yZXNwb25zaXZlLWNvbnRhaW5lciAuY29udGVudC13cmFwcGVyIHsgbWFyZ2luOjAgMTVweDsgfSAuY2FyZmF4IHsgdGV4dC1hbGlnbjpjZW50ZXI7IH0gLmNhcmZheCBpbWcgeyB3aWR0aDoyMDBweDsgcGFkZGluZy10b3A6MTVweDsgfSAuY2FyZmF4IC5jYXJwcm9vZi1iYWRnZSA+IERJVnsgbWF4LXdpZHRoOm5vbmUgIWltcG9ydGFudDsgd2lkdGg6MTAwJSAhaW1wb3J0YW50OyB0ZXh0LWFsaWduOmNlbnRlcjsgfSAuY2FyZmF4IC5jYXJwcm9vZi1iYWRnZSA+IERJViBJTUcgeyBtYXgtd2lkdGg6bm9uZTsgaGVpZ2h0OjQwcHg7IHdpZHRoOjEwMCU7IG1hcmdpbjoxMHB4IDAgMjBweDsgfSAuZGl2U2VhcmNoTXNnIHsgZm9udC1zaXplOjAuOXJlbTsgcGFkZGluZzoxNXB4OyBiYWNrZ3JvdW5kLWNvbG9yOiNmN2Y3Zjc7IGJvcmRlci1yYWRpdXM6NXB4OyB9IC5idXR0b25fMSwgLmJ1dHRvbl8yLCAuYnV0dG9uXzMgeyBtYXJnaW4tYm90dG9tOjEwcHg7IH0gLmJ1dHRvbl8xIGEsIC5idXR0b25fMiBhLCAuYnV0dG9uXzMgYSB7IGRpc3BsYXk6YmxvY2s7IHdpZHRoOjI0OXB4OyBoZWlnaHQ6MzhweDsgYm9yZGVyLXJhZGl1czozcHg7IGZvbnQtc2l6ZToxLjEyNXJlbSA7IHRleHQtZGVjb3JhdGlvbjpub25lOyB0ZXh0LWFsaWduOmNlbnRlcjsgbGluZS1oZWlnaHQ6MzhweDsgfSAuYnV0dG9uXzMuanMtQ1RBLW51bWJlciBhID4gKjpmaXJzdC1jaGlsZHsgbWFyZ2luLXJpZ2h0OjAuNXJlbTsgfSAuYnV0dG9uXzMgYXsgYmFja2dyb3VuZDojMDAwOyBjb2xvcjojRkZGOyB9IC5idXR0b25fMyBhOmhvdmVyLCAuYnV0dG9uXzMgYTpmb2N1c3sgYmFja2dyb3VuZDojNjY2NjY2OyB9ICNwcm9tb0Rlc2MgLmNrZWRpdG9yV3JhcHBlciBpZnJhbWUgeyBtYXgtd2lkdGg6MTAwJTsgfSBCT0RZLlVzZWRTcnAyTW9iaWxlIEgxLmRlZmF1bHR7IGZvbnQtc2l6ZToxLjJyZW07IGxpbmUtaGVpZ2h0OjEuMnJlbTsgY29sb3I6IzA1MTQxZjsgZm9udC13ZWlnaHQ6bm9ybWFsOyBjbGVhcjpib3RoOyBwYWRkaW5nOjAgMCAxNXB4IDA7IGRpc3BsYXk6aW5saW5lLWZsZXg7IH0gQk9EWS5Vc2VkVmRwMk1vYmlsZSBIMS5kZWZhdWx0eyBwYWRkaW5nOjEwcHg7IGJveC1zaXppbmc6Ym9yZGVyLWJveDsgbWFyZ2luOjA7IGRpc3BsYXk6aW5saW5lLWZsZXg7IH0gQk9EWS5Vc2VkU3JwMk1vYmlsZSBIMS5kZWZhdWx0IEF7IHRleHQtZGVjb3JhdGlvbjpub25lOyB9IEJPRFkuVXNlZFZkcDJNb2JpbGUgSDEuZGVmYXVsdCBJLmljb24sIEJPRFkuVXNlZFNycDJNb2JpbGUgSDEuZGVmYXVsdCBJLmljb24geyBib3JkZXItcmFkaXVzOjMwcHg7IHdpZHRoOjE2cHg7IGhlaWdodDoyMHB4OyBwYWRkaW5nLXRvcDo1cHg7IHBhZGRpbmctbGVmdDo4cHg7IGZsb2F0OmxlZnQ7IGZvbnQtc2l6ZToxcmVtIDsgbWFyZ2luLXJpZ2h0OjVweDsgYm9yZGVyOjFweCBzb2xpZCAjMDUxNDFmOyBjb2xvcjojMDUxNDFmOyBiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmY7IH0gQk9EWS5Vc2VkVmRwMk1vYmlsZSBIMS5kZWZhdWx0IEkuaWNvbi5tdWx0aUxpbmVIMSwgQk9EWS5Vc2VkU3JwMk1vYmlsZSBIMS5kZWZhdWx0IEkuaWNvbi5tdWx0aUxpbmVIMXsgbWFyZ2luLXRvcDowcHg7IH0gQk9EWS5Vc2VkVmRwMk1vYmlsZSBIMS5kZWZhdWx0IEkuaWNvbi5zaW5nbGVMaW5lSDEsIEJPRFkuVXNlZFNycDJNb2JpbGUgSDEuZGVmYXVsdCBJLmljb24uc2luZ2xlTGluZUgxeyBtYXJnaW4tdG9wOjBweDsgfSBCT0RZLlVzZWRWZHAyTW9iaWxlIEgxLmRlZmF1bHQgPiBESVYsIEJPRFkuVXNlZFNycDJNb2JpbGUgSDEuZGVmYXVsdCA+IERJVnsgZGlzcGxheTp0YWJsZS1yb3c7IH0gQk9EWS5Vc2VkU3JwMk1vYmlsZSBIMS5kZWZhdWx0ID4gRElWIERJVjpudGgtY2hpbGQoMSl7IGZvbnQtd2VpZ2h0OmJvbGQ7IH0gQk9EWS5Vc2VkU3JwMk1vYmlsZSBIMS5kZWZhdWx0ID4gRElWIERJVjpudGgtY2hpbGQoMil7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgY29sb3I6Izc1NzU3NTsgZm9udC1zaXplOjAuOXJlbTsgfSBCT0RZLlVzZWRTcnAyTW9iaWxlIEgxLmRlZmF1bHQgPiBESVYgRElWOm50aC1jaGlsZCgzKXsgZm9udC1zaXplOjAuOHJlbTsgY29sb3I6I2JiYjsgcGFkZGluZy10b3A6NXB4OyB9IC5jYXJmYXgubW9iaWxlIGRpdnsgaGVpZ2h0OmF1dG8haW1wb3J0YW50OyB9IC5jYXJmYXgubW9iaWxlIGRpdiBheyBkaXNwbGF5OmJsb2NrIWltcG9ydGFudDsgfSAuY3JlZHNpaU1vYmlsZXsgZGlzcGxheTpibG9jazsgcG9zaXRpb246cmVsYXRpdmU7IH0gLmNyZWRzaWlNb2JpbGUgLmNyZWRzaWktd2lkZ2V0LWNvbnRhaW5lcnsgbWF4LXdpZHRoOjEwMCUhaW1wb3J0YW50OyB9IC5iYW5uZXItZm9ybSAuTWFpbkJveExheWVyIHsgd2lkdGg6aW5pdGlhbDsgfSBCT0RZLlVzZWRWZHAyTW9iaWxlIC5zcGVjcy1pbWFnZXMtZ3JvdXB7IHBvc2l0aW9uOnJlbGF0aXZlOyBkaXNwbGF5OmZsZXg7IGZsZXgtZmxvdzpyb3cgd3JhcDsgYWxpZ24taXRlbXM6Y2VudGVyOyBncmlkLWdhcDozMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7IG1hcmdpbjozMHB4IDE1cHg7IH0gQk9EWS5Vc2VkVmRwMk1vYmlsZSAuc3BlY3MtaW1hZ2VzLWdyb3VwID4gZGl2eyB0ZXh0LWFsaWduOmNlbnRlcjsgZmxleDoxIDEgNDUlOyB9IEJPRFkuVXNlZFZkcDJNb2JpbGUgLnNwZWNzLWltYWdlcy1ncm91cCA+IGRpdiA+IGltZyB7IHdpZHRoOjEwMCU7IGhlaWdodDphdXRvOyBwYWRkaW5nOjVweDsgYm94LXNpemluZzpib3JkZXItYm94OyB9IEJPRFkuVXNlZFZkcDJNb2JpbGUgLnNwZWNzLWltYWdlcy1ncm91cCAuY2VydC10aXRsZSB7IGRpc3BsYXk6YmxvY2s7IGZvbnQtc2l6ZToxLjFlbTsgfSBCT0RZLlVzZWRWZHAyTW9iaWxlIC5zcGVjcy1pbWFnZXMtZ3JvdXAgLmNlcnQtc3VidGl0bGUgeyBkaXNwbGF5OmJsb2NrOyBtYXJnaW4tYm90dG9tOjEwcHg7IGNvbG9yOiM3Nzc7IGZvbnQtc2l6ZTowLjk1ZW07IG1hcmdpbi10b3A6NXB4OyB9IEJPRFkuVXNlZFZkcDJNb2JpbGUgLnNwZWNzLWltYWdlcy1ncm91cCAuY2VydC1oaWdobGlnaHRlZC12YWx1ZSB7IGJhY2tncm91bmQtY29sb3I6IzAwMDsgYm9yZGVyOjFweCBzb2xpZCAjMDAwOyBjb2xvcjojRkZGOyBwYWRkaW5nOjExcHggMjBweCA5cHggMjBweDsgYm9yZGVyLXJhZGl1czozcHg7IGRpc3BsYXk6aW5saW5lLWJsb2NrOyB9IC5jb21wYXJlVGFibGVJbWcgeyBoZWlnaHQ6OTBweDsgbWFyZ2luOjAgYXV0bzsgZGlzcGxheTpibG9jazsgfSAuZGVhbGVyLWluc2lkZS1jYWxsIGJ1dHRvbnsgZGlzcGxheTpub25lIWltcG9ydGFudDsgfSAuYnJvY2h1cmVQb3N0ZXIgeyB3aWR0aDoxNzVweDsgbWFyZ2luOjAgYXV0bzsgYm9yZGVyOjFweCBzb2xpZCAjYWFhOyBib3JkZXItcmFkaXVzOjRweDsgb3ZlcmZsb3c6aGlkZGVuOyB9IC5icm9jaHVyZVBvc3RlciBpbWd7IHdpZHRoOjEwMCU7IGN1cnNvcjpwb2ludGVyOyB9IC5waHlzaWNhbEFkZHJlc3NCb3h7IGJhY2tncm91bmQtY29sb3I6I0Y3RjZGODsgdGV4dC1hbGlnbjpjZW50ZXI7IH0gLnV2ZHAtbG9jYXRlZC1hdC1tc2d7IGZvbnQtc2l6ZToxcmVtIDsgY29sb3I6IzcwNzA3MDsgZm9udC13ZWlnaHQ6bGlnaHRlcjsgZGlzcGxheTpibG9jazsgbWFyZ2luLXRvcDo1cHg7IH0gLnV2ZHAtbG9jYXRlZC1kZWFsZXItbmFtZXsgZm9udC1zaXplOjEuMzEzcmVtIDsgZGlzcGxheTpibG9jazsgbWFyZ2luLXRvcDo1cHg7IGZvbnQtd2VpZ2h0OmJvbGQ7IH0gLnV2ZHAtbG9jYXRlZC1hZGRyZXNzeyBmb250LXNpemU6MC43NXJlbSA7IGRpc3BsYXk6YmxvY2s7IG1hcmdpbjo1cHggMDsgZm9udC13ZWlnaHQ6bm9ybWFsOyB9IC51dmRwLWxvY2F0ZWQtd2Vic2l0ZSB7IGRpc3BsYXk6YmxvY2s7IG1hcmdpbi10b3A6NXB4OyBmb250LXNpemU6dmFyKC0tZnMtMSk7IGZvbnQtd2VpZ2h0OmJvbGQ7IH0gLmRyb3Bkb3duLWNvbnRlbnR7IGRpc3BsYXk6bm9uZTsgcG9zaXRpb246YWJzb2x1dGU7IGJhY2tncm91bmQtY29sb3I6I2Y5ZjlmOTsgd2lkdGg6MTAwJTsgYm94LXNoYWRvdzowcHggOHB4IDE2cHggMHB4IHJnYmEoMCwwLDAsMC4yKTsgei1pbmRleDoxOyBib3gtc2l6aW5nOmJvcmRlci1ib3g7IG1hcmdpbjoxMHB4IC0xMHB4OyB9IC5kcm9wZG93bi1jb250ZW50IGF7IGJhY2tncm91bmQ6dHJhbnNwYXJlbnQ7IGNvbG9yOiMwMDAgIWltcG9ydGFudDsgYm9yZGVyOm5vbmU7IGZvbnQtc2l6ZTowLjg3NXJlbSAhaW1wb3J0YW50OyB0ZXh0LWRlY29yYXRpb246bm9uZTsgYm94LXNpemluZzpib3JkZXItYm94OyB3aWR0aDoxMDAlOyBwYWRkaW5nOjhweDsgdGV4dC1hbGlnbjpsZWZ0OyBkaXNwbGF5OmZsZXg7IGFsaWduLWl0ZW1zOmNlbnRlcjsgbGluZS1oZWlnaHQ6MS41cmVtOyBwYWRkaW5nLWxlZnQ6MzBweDsgfSAudGVzdGRyaXZlSWNvbnsgZm9udC1zaXplOjEuMzc1cmVtIDsgbWFyZ2luLXJpZ2h0OjIwcHg7IH0gLnByaWNlRGl2eyBkaXNwbGF5OmZsZXg7IGFsaWduLWl0ZW1zOmNlbnRlcjsganVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47IHBhZGRpbmc6MCAyMHB4IDAgMTBweDsgZmxleC1mbG93OndyYXA7IH0gLnByaWNlTXNnRGl2eyBmb250LXNpemU6MC43NXJlbSAhaW1wb3J0YW50OyBkaXNwbGF5OmJsb2NrOyB3aWR0aDo1MCU7IHRleHQtYWxpZ246cmlnaHQhaW1wb3J0YW50OyBjb2xvcjojNmQ2ZDZkICFpbXBvcnRhbnQ7IH0gLnByaWNlRGl2UHJpY2UubXVsdGlmZWVzeyBmb250LXNpemU6MXJlbTsgY29sb3I6IzcwNzA3MDsgfSAucHJpY2VEaXZQcmljZXsgZm9udC1zaXplOjEuODc1cmVtIDsgY29sb3I6YmxhY2s7IH0gLmhhc0F2ZyAucHJpY2VEaXZQcmljZXsgZm9udC1zaXplOjEuNTYzcmVtIDsgfSAucHJpY2VEaXNjbGFpbWVyRGl2eyBkaXNwbGF5OmZsZXg7IGFsaWduLWl0ZW1zOmNlbnRlcjsganVzdGlmeS1jb250ZW50OmVuZDsgd2lkdGg6MTAwJTsgfSAjdmRwX3ByaWNlX2Jsb2NrIC5wcmljZURpc2NsYWltZXJEaXZ7IHBhZGRpbmc6MCAyMHB4IDAgMTBweDsgd2lkdGg6dW5zZXQ7IH0gLnByaWNlRGlzY2xhaW1lclNwYW57IGZvbnQtc2l6ZTowLjc1cmVtICFpbXBvcnRhbnQ7IGRpc3BsYXk6YmxvY2s7IHRleHQtYWxpZ246cmlnaHQhaW1wb3J0YW50OyBjb2xvcjojNmQ2ZDZkICFpbXBvcnRhbnQ7IH0gLnByaWNlQmFyeyBib3JkZXItdG9wOjFweCBzb2xpZCAjYjhiOGI4OyBtYXJnaW46MCAxMHB4IDAgNTUlOyB9IC5jYXJJbmZvc0RpdnsgYmFja2dyb3VuZC1jb2xvcjp3aGl0ZTsgYm9yZGVyLWJvdHRvbToxcHggc29saWQgYmxhY2s7IHBhZGRpbmc6NXB4IDElIDBweCAxJTsgfSAuY2FySW5mb1ByaWNlRGl2eyBjb2xvcjojNzU3NTc1OyBmb250LXNpemU6MC43NXJlbSA7IGRpc3BsYXk6aW5saW5lLWJsb2NrOyBvdmVyZmxvdzpoaWRkZW47IH0gLmNhckluZm9QcmljZURpdiBpeyBtYXJnaW4tcmlnaHQ6MnB4IH0gLmNhckluZm9LTXsgdGV4dC1hbGlnbjpsZWZ0OyB3aWR0aDoyOCU7IH0gLmNhckluZm9NaWRkbGV7IHRleHQtYWxpZ246Y2VudGVyOyB3aWR0aDoyNyU7IH0gLmNhckluZm9Db2xvcnsgdGV4dC1hbGlnbjpyaWdodDsgd2lkdGg6NDAlOyB9ICN2ZHB2aWRlb3sgbWF4LXdpZHRoOjEwMHZ3OyB9ICN2ZHB2aWRlbyA+ICp7IG1heC13aWR0aDoxMDAlOyB9IC5iZGN0eyBwYWRkaW5nOjAgMTBweDsgbWFyZ2luOjIwcHggMDsgZmxvYXQ6bGVmdDsgd2lkdGg6MTAwJTsgYm94LXNpemluZzpib3JkZXItYm94OyBmb250LXNpemU6MC44NXJlbTsgY29sb3I6IzY2NjsgfSAuYmRjdCBIM3sgcGFkZGluZzowOyBtYXJnaW46MCAwIDVweCAwOyBmb250LXNpemU6MXJlbTsgfSAuYmRjdCA+IGRpdnsgcGFkZGluZzoxNXB4OyBiYWNrZ3JvdW5kLWNvbG9yOiNlZWU7IGJvcmRlci1yYWRpdXM6N3B4OyB9IC5wcm9tby1idG4geyBwYWRkaW5nOjE1cHggMjBweDsgbWFyZ2luOmF1dG87IGJhY2tncm91bmQtY29sb3I6d2hpdGU7IGJvcmRlcjoxcHggc29saWQ7IHRleHQtdHJhbnNmb3JtOnZhcigtLWNlcnQtdHh0LXRyYW5zZm9ybSwgdmFyKC0tdHh0LXVwcGVyKSk7IGZvbnQtd2VpZ2h0OmJvbGQ7IHRleHQtZGVjb3JhdGlvbjpub25lOyBib3JkZXItY29sb3I6IzA1MTQxZjsgY29sb3I6IzA1MTQxZjsgYmFja2dyb3VuZC1jb2xvcjojZmZmZmZmOyBib3JkZXItcmFkaXVzOjI1cHg7IGZvbnQtc2l6ZTowLjlyZW07IH0gLi10ZXh0LXVwcGVyY2FzZSwgLi11cHBlcmNhc2UsIC50ZXh0LXVwcGVyY2FzZSB7IHRleHQtdHJhbnNmb3JtOnZhcigtLXR4dC11cHBlcik7IH0gI2Rhcmt0b29sdGlwLWNhclByaWNlSW5pdGlhbFRvb2xUaXBJY29ueyB3aWR0aDoyMDBweDsgfQovKiogL2Nzcy9uZXdjYXJzLmNzcyAqKi8KLmRpdkNhdGVnb3JpZXNCb3hXcmFwcGVyIC5kaXZDYXRlZ29yeUJveFdyYXBwZXJ7IG1hcmdpbi1ib3R0b206NDBweDsgfSAuZGl2Q2F0ZWdvcmllc0JveFdyYXBwZXIgLmRpdkNhdGVnb3J5Qm94V3JhcHBlcjpsYXN0LWNoaWxkeyBtYXJnaW4tYm90dG9tOjA7IH0gSDEuZGVmYXVsdC5pc1NpbmdsZVRpdGxlLmlzQm90dG9tQm9yZGVyZWQsIC5kaXZDYXRlZ29yaWVzQm94V3JhcHBlciAuZGl2Q2F0ZWdvcnlCb3hXcmFwcGVyIEgyeyBib3JkZXI6MDsgfSAuZGl2Q2F0ZWdvcmllc0JveFdyYXBwZXIgLmRpdkNhdGVnb3J5Qm94V3JhcHBlciAuZGl2Q2Fyc0JveFdyYXBwZXIgeyBkaXNwbGF5OmZsZXg7IGZsZXgtZmxvdzpyb3cgd3JhcDsgfSAuZGl2Q2F0ZWdvcmllc0JveFdyYXBwZXIgLmRpdkNhdGVnb3J5Qm94V3JhcHBlciAuZGl2Q2FyU2luZ2xlT3V0ZXJCb3h7IHBvc2l0aW9uOnJlbGF0aXZlOyBmbG9hdDpsZWZ0OyBiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7IGJvcmRlci1yYWRpdXM6N3B4OyBtYXJnaW46MCAwIDIwcHggMDsgcGFkZGluZzoxMHB4OyBib3JkZXI6MXB4ICNhYWEgc29saWQ7IGJveC1zaXppbmc6Ym9yZGVyLWJveDsgd2lkdGg6MTAwJTsgb3ZlcmZsb3c6aGlkZGVuOyB9IC5kaXZDYXRlZ29yaWVzQm94V3JhcHBlciAuZGl2Q2F0ZWdvcnlCb3hXcmFwcGVyIC5kaXZDYXJTaW5nbGVPdXRlckJveC5kaXZNYWtlTG9nb09ubHl7IGhlaWdodDoxNTZweDsgd2lkdGg6YXV0bzsgbWFyZ2luLXRvcDoyMHB4OyBwYWRkaW5nOjIwcHg7IGJvcmRlci1jb2xvcjojZWVlOyB0ZXh0LWFsaWduOmNlbnRlcjsgfSAuZGl2Q2F0ZWdvcmllc0JveFdyYXBwZXIgLmRpdkNhdGVnb3J5Qm94V3JhcHBlciAuZGl2Q2FyU2luZ2xlT3V0ZXJCb3guZGl2TWFrZUxvZ29Pbmx5IElNRyB7IGhlaWdodDoxMDAlOyB3aWR0aDphdXRvOyB9IC5kaXZDYXRlZ29yaWVzQm94V3JhcHBlciAuZGl2Q2F0ZWdvcnlCb3hXcmFwcGVyIC5kaXZDYXJTaW5nbGVPdXRlckJveDphY3RpdmUgeyBib3JkZXItY29sb3I6IzY2NjsgfSAuZGl2Q2F0ZWdvcmllc0JveFdyYXBwZXIgLmRpdkNhdGVnb3J5Qm94V3JhcHBlciAuZGl2Q2FyU2luZ2xlT3V0ZXJCb3ggLmRpdkNhclNpbmdsZUlubmVyQm94eyBtYXJnaW46MDsgd2lkdGg6MTAwJTsgaGVpZ2h0OjEwMCU7IGZsb2F0OmxlZnQ7IG9wYWNpdHk6MTsgb3ZlcmZsb3c6aGlkZGVuOyBwb3NpdGlvbjpyZWxhdGl2ZTsgfSAuZGl2Q2F0ZWdvcmllc0JveFdyYXBwZXIgLmRpdkNhdGVnb3J5Qm94V3JhcHBlciAuZGl2Q2FyU2luZ2xlT3V0ZXJCb3ggLmRpdkNhclNpbmdsZUlubmVyQm94IC5kaXZDYXJUaXRsZUNvbnRhaW5lcnsgY2xlYXI6Ym90aDsgd2lkdGg6NzUlOyB9IC5kaXZDYXRlZ29yaWVzQm94V3JhcHBlciAuZGl2Q2F0ZWdvcnlCb3hXcmFwcGVyIC5kaXZDYXJTaW5nbGVPdXRlckJveCAuZGl2Q2FyU2luZ2xlSW5uZXJCb3ggLmRpdkNhclRpdGxlQ29udGFpbmVyIEF7IHRleHQtZGVjb3JhdGlvbjpub25lOyBkaXNwbGF5OmJsb2NrOyB9IC5kaXZDYXRlZ29yaWVzQm94V3JhcHBlciAuZGl2Q2F0ZWdvcnlCb3hXcmFwcGVyIC5kaXZDYXJTaW5nbGVPdXRlckJveCAuZGl2Q2FyU2luZ2xlSW5uZXJCb3ggLmRpdkNhclRpdGxlQ29udGFpbmVyIHNwYW4uc3BhbkNhck1ha2V7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgZm9udC1zaXplOjEuMHJlbTsgbGluZS1oZWlnaHQ6MS4ycmVtOyB3aWR0aDphdXRvOyBoZWlnaHQ6YXV0bzsgY29sb3I6IzA1MTQxZjsgfSAuZGl2Q2F0ZWdvcmllc0JveFdyYXBwZXIgLmRpdkNhdGVnb3J5Qm94V3JhcHBlciAuZGl2Q2FyU2luZ2xlT3V0ZXJCb3ggLmRpdkNhclNpbmdsZUlubmVyQm94IC5kaXZDYXJUaXRsZUNvbnRhaW5lciBzcGFuLnNwYW5Nb2RlbE5hbWV7IGZvbnQtd2VpZ2h0OmJvbGQ7IGxpbmUtaGVpZ2h0OjEuNHJlbTsgZm9udC1zaXplOjEuNHJlbTsgd2lkdGg6YXV0bzsgaGVpZ2h0OmF1dG87IGNvbG9yOiMwNTE0MWY7IH0gLmRpdkNhdGVnb3JpZXNCb3hXcmFwcGVyIC5kaXZDYXRlZ29yeUJveFdyYXBwZXIgLmRpdkNhclNpbmdsZU91dGVyQm94IC5kaXZDYXJTaW5nbGVJbm5lckJveCAuZGl2Q2FyVGl0bGVDb250YWluZXIgLmRpdk5ld0NhclN0YXJ0UHJpY2UsIC5kaXZDYXRlZ29yaWVzQm94V3JhcHBlciAuZGl2Q2F0ZWdvcnlCb3hXcmFwcGVyIC5kaXZDYXJTaW5nbGVPdXRlckJveCAuZGl2Q2FyU2luZ2xlSW5uZXJCb3ggLmRpdkNhclRpdGxlQ29udGFpbmVyIC5kaXZOZXdDYXJQcm9tb1ByaWNleyBmb250LXdlaWdodDpub3JtYWw7IGZvbnQtc2l6ZToxcmVtOyB3aWR0aDphdXRvOyBoZWlnaHQ6YXV0bzsgbGluZS1oZWlnaHQ6bm9ybWFsOyB9IC5kaXZDYXRlZ29yaWVzQm94V3JhcHBlciAuZGl2Q2F0ZWdvcnlCb3hXcmFwcGVyIC5kaXZDYXJTaW5nbGVPdXRlckJveCAuZGl2Q2FyU2luZ2xlSW5uZXJCb3ggLmRpdkNhckltYWdlQ29udGFpbmVyeyBwb3NpdGlvbjpyZWxhdGl2ZTsgd2lkdGg6MTAwJTsgbWFyZ2luLXRvcDowcHg7IG1hcmdpbi1ib3R0b206LTEwcHg7IG1pbi1oZWlnaHQ6MjUwcHg7IH0gLmRpdkNhdGVnb3JpZXNCb3hXcmFwcGVyIC5kaXZDYXRlZ29yeUJveFdyYXBwZXIgLmRpdkNhclNpbmdsZU91dGVyQm94IC5kaXZDYXJTaW5nbGVJbm5lckJveCAuZGl2Q2FySW1hZ2VDb250YWluZXIgQXsgZmxvYXQ6bGVmdDsgY2xlYXI6Ym90aDsgd2lkdGg6MTAwJTsgfSAuZGl2Q2F0ZWdvcmllc0JveFdyYXBwZXIgLmRpdkNhdGVnb3J5Qm94V3JhcHBlciAuZGl2Q2FyU2luZ2xlT3V0ZXJCb3ggLmRpdkNhclNpbmdsZUlubmVyQm94IC5kaXZDYXJJbWFnZUNvbnRhaW5lciBJTUd7IHdpZHRoOjEwMCU7IGhlaWdodDphdXRvOyB9IGRpdi5kaXZDYXJGb290ZXJDb250YWluZXJ7IHBvc2l0aW9uOnJlbGF0aXZlOyBib3R0b206MHB4OyBsZWZ0OjA7IHJpZ2h0OjA7IHdpZHRoOjEwMCU7IH0gZGl2LmNhclBheW1lbnRXcmFwcGVyeyBoZWlnaHQ6NnJlbTsgfSAucmViYXRlVGFneyBwYWRkaW5nOjVweDsgdGV4dC1hbGlnbjpjZW50ZXI7IHBvc2l0aW9uOmFic29sdXRlOyB0b3A6MTBweDsgcmlnaHQ6MTBweDsgYmFja2dyb3VuZDojMDUxNDFmIWltcG9ydGFudDsgY29sb3I6I2ZmZmZmZiFpbXBvcnRhbnQ7IHRleHQtc2hhZG93Om5vbmUhaW1wb3J0YW50OyBib3JkZXItcmFkaXVzOjVweDsgfSAucmViYXRlVGFnIHNwYW4ucmViYXRlVGV4dHsgZm9udC1zaXplOjAuOHJlbTsgbGluZS1oZWlnaHQ6MXJlbTsgfSAucmViYXRlVGFnIHNwYW4ucmViYXRlQW1vdW50eyBkaXNwbGF5OmJsb2NrOyBmb250LXdlaWdodDo3MDA7IGZvbnQtc2l6ZToxcmVtOyBsaW5lLWhlaWdodDoxLjJyZW07IH0gLmRpdkNhdGVnb3JpZXNCb3hXcmFwcGVyIC5kaXZDYXRlZ29yeUJveFdyYXBwZXIgLmRpdkNhclNpbmdsZU91dGVyQm94IC5kaXZDYXJTaW5nbGVJbm5lckJveCAuZGl2Q2FyUGF5bWVudENvbnRhaW5lcnsgcG9zaXRpb246cmVsYXRpdmU7IHRleHQtYWxpZ246Y2VudGVyOyBiYWNrZ3JvdW5kLWNvbG9yOiNmM2YzZjM7IHdpZHRoOjEwMCU7IGJvcmRlci1yYWRpdXM6MCAwIDdweCA3cHg7IHBhZGRpbmc6MTBweCA1cHg7IGJveC1zaXppbmc6Ym9yZGVyLWJveDsgfSAuZGl2Q2F0ZWdvcmllc0JveFdyYXBwZXIgLmRpdkNhdGVnb3J5Qm94V3JhcHBlciAuZGl2Q2FyU2luZ2xlT3V0ZXJCb3ggLmRpdkNhclNpbmdsZUlubmVyQm94IC5kaXZDYXJQYXltZW50Q29udGFpbmVyIGF7IHRleHQtZGVjb3JhdGlvbjpub25lOyBwb3NpdGlvbjpyZWxhdGl2ZTsgfSAuZGl2Q2F0ZWdvcmllc0JveFdyYXBwZXIgLmRpdkNhdGVnb3J5Qm94V3JhcHBlciAuZGl2Q2FyU2luZ2xlT3V0ZXJCb3ggLmRpdkNhclNpbmdsZUlubmVyQm94IC5kaXZDYXJQYXltZW50Q29udGFpbmVyIC5wYXltZW50TGluZTJ7IGZvbnQtc2l6ZToxLjNyZW07IGNvbG9yOmJsYWNrOyB9IC5kaXZDYXRlZ29yaWVzQm94V3JhcHBlciAuZGl2Q2F0ZWdvcnlCb3hXcmFwcGVyIC5kaXZDYXJTaW5nbGVPdXRlckJveCAuZGl2Q2FyU2luZ2xlSW5uZXJCb3ggLmRpdkNhclBheW1lbnRDb250YWluZXIgLnBheW1lbnRMaW5lMiBzcGFueyBjb2xvcjojMDUxNDFmOyBmb250LXdlaWdodDpib2xkOyB9IC5kaXZDYXRlZ29yaWVzQm94V3JhcHBlciAuZGl2Q2F0ZWdvcnlCb3hXcmFwcGVyIC5kaXZDYXJTaW5nbGVPdXRlckJveCAuZGl2Q2FyU2luZ2xlSW5uZXJCb3ggLmRpdkNhclBheW1lbnRDb250YWluZXIgLnBheW1lbnRMaW5lM3sgZm9udC1zaXplOjAuOXJlbTsgbGluZS1oZWlnaHQ6MXJlbTsgY29sb3I6Z3JleTsgfSAuZGl2Q2F0ZWdvcmllc0JveFdyYXBwZXIgLmRpdkNhdGVnb3J5Qm94V3JhcHBlciAuZGl2Q2FyU2luZ2xlT3V0ZXJCb3ggLmRpdkNhclNpbmdsZUlubmVyQm94IC5kaXZDYXJQYXltZW50Q29udGFpbmVyIC5wYXltZW50TGluZTF7IGZvbnQtc2l6ZTowLjlyZW07IGxpbmUtaGVpZ2h0OjFyZW07IGNvbG9yOmdyZXk7IH0gZGl2LmRpdkNhdGVnb3JpZXNCb3hXcmFwcGVyIGRpdi5kaXZDYXRlZ29yeUJveFdyYXBwZXIgZGl2LmRpdkNhclNpbmdsZU91dGVyQm94IGRpdi5kaXZDYXJTaW5nbGVJbm5lckJveCBkaXYuZGl2Q2FyQ29udGFjdENUQUNvbnRhaW5lcnsgYmFja2dyb3VuZC1jb2xvcjojZmZmOyB9IGRpdi5kaXZDYXRlZ29yaWVzQm94V3JhcHBlciBkaXYuZGl2Q2F0ZWdvcnlCb3hXcmFwcGVyIGRpdi5kaXZDYXJTaW5nbGVPdXRlckJveCBkaXYuZGl2Q2FyU2luZ2xlSW5uZXJCb3ggZGl2LmRpdkNhclBheW1lbnRDb250YWluZXJXaXRoQ1RBeyB9IC5kaXZDYXJTaW5nbGVPdXRlckJveCAuZGl2Q2FyUGF5bWVudENvbnRhaW5lclRvb2x0aXB7IGRpc3BsYXk6aW5saW5lLXRhYmxlOyBwYWRkaW5nOjAgMTBweDsgY3Vyc29yOnBvaW50ZXI7IH0gLmRpdkNhdGVnb3J5Qm94V3JhcHBlciAuZGl2Q2FyU2luZ2xlT3V0ZXJCb3ggLmRpdkNhclBheW1lbnRDYWxjdWxhdG9yIHsgcG9zaXRpb246YWJzb2x1dGU7IGxlZnQ6MTAlOyB9IC5kaXZDYXRlZ29yeUJveFdyYXBwZXIgLmRpdkNhclNpbmdsZU91dGVyQm94IC5wYXltZW50SW5mb0J1YmJsZSB7IHBvc2l0aW9uOmFic29sdXRlOyByaWdodDoxMCU7IGRpc3BsYXk6aW5saW5lLWJsb2NrOyBmb250LXNpemU6MS41NjNyZW0gOyB0b3A6MzAlOyBjb2xvcjojMDAwOyB9IC5OZXdTcnAyTW9iaWxlIEgxLmRlZmF1bHR7IGZvbnQtc2l6ZToxLjdyZW07IGxpbmUtaGVpZ2h0OjEuN3JlbTsgY29sb3I6IzA1MTQxZjsgZm9udC13ZWlnaHQ6bm9ybWFsOyBjbGVhcjpib3RoOyBwYWRkaW5nOjAgMCAxMHB4IDA7IHdpZHRoOjEwMCU7IG1hcmdpbi1ib3R0b206MTBweDsgYm9yZGVyLWJvdHRvbToxcHggc29saWQgI2RkZDsgfSAuTmV3U3JwMk1vYmlsZSBIMS5kZWZhdWx0IEF7IHRleHQtZGVjb3JhdGlvbjpub25lOyB9IC5OZXdTcnAyTW9iaWxlIEgxLmRlZmF1bHQgSS5pY29uIHsgYm9yZGVyLXJhZGl1czozMnB4OyB3aWR0aDozMnB4OyBoZWlnaHQ6MzJweDsgcGFkZGluZy10b3A6MDsgcGFkZGluZy1sZWZ0OjEwcHg7IGZsb2F0OmxlZnQ7IGZvbnQtc2l6ZToxLjEyNXJlbSA7IG1hcmdpbi1yaWdodDo1cHg7IGJveC1zaXppbmc6Ym9yZGVyLWJveDsgbGluZS1oZWlnaHQ6MzBweDsgYm9yZGVyOjFweCBzb2xpZCAjMDUxNDFmOyBjb2xvcjojMDUxNDFmOyBiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmY7IH0gLk5ld1NycDJNb2JpbGUgSDEuZGVmYXVsdCBJLmljb24ubXVsdGlMaW5lSDF7IG1hcmdpbi10b3A6MHB4OyB9IC5OZXdTcnAyTW9iaWxlIEgxLmRlZmF1bHQgSS5pY29uLnNpbmdsZUxpbmVIMXsgbWFyZ2luLXRvcDowcHg7IH0gLk5ld1NycDJNb2JpbGUgSDEuZGVmYXVsdCA+IERJVnsgZGlzcGxheTp0YWJsZS1yb3c7IH0gLk5ld1NycDJNb2JpbGUgSDEuZGVmYXVsdCA+IERJViBESVY6bnRoLWNoaWxkKDEpeyBmb250LXdlaWdodDpib2xkOyB9IC5OZXdTcnAyTW9iaWxlIEgxLmRlZmF1bHQgPiBESVYgRElWOm50aC1jaGlsZCgyKXsgZm9udC13ZWlnaHQ6bm9ybWFsOyBjb2xvcjojNzU3NTc1OyBmb250LXNpemU6MS4xcmVtOyBsaW5lLWhlaWdodDoxLjJyZW07IH0gLk5ld1NycDJNb2JpbGUgSDEuZGVmYXVsdCA+IERJViBESVY6bnRoLWNoaWxkKDMpeyBmb250LXNpemU6MC44cmVtOyBjb2xvcjojYmJiOyBwYWRkaW5nLXRvcDo1cHg7IH0gLk5ld1NycDJNb2JpbGUgSDIuZGVmYXVsdHsgZm9udC1zaXplOjEuNHJlbTsgbGluZS1oZWlnaHQ6MS40cmVtOyBjb2xvcjojMDUxNDFmOyBmb250LXdlaWdodDpub3JtYWw7IGNsZWFyOmJvdGg7IHBhZGRpbmc6MjBweCAwOyBtYXJnaW46MDsgfSAuTmV3U3JwMk1vYmlsZSBIMi5kZWZhdWx0IEkuaWNvbiB7IGJvcmRlci1yYWRpdXM6MjhweDsgd2lkdGg6MjhweDsgaGVpZ2h0OjI4cHg7IHBhZGRpbmctdG9wOjA7IHBhZGRpbmctbGVmdDo5cHg7IGZsb2F0OmxlZnQ7IGZvbnQtc2l6ZToxcmVtIDsgbGluZS1oZWlnaHQ6MjZweDsgbWFyZ2luLXJpZ2h0OjVweDsgYm94LXNpemluZzpib3JkZXItYm94OyBib3JkZXI6MXB4IHNvbGlkICMwNTE0MWY7IGNvbG9yOiMwNTE0MWY7IGJhY2tncm91bmQtY29sb3I6I2ZmZmZmZjsgfSAuTmV3U3JwMk1vYmlsZSBIMi5kZWZhdWx0IEkuaWNvbi5tdWx0aUxpbmVIMnsgbWFyZ2luLXRvcDowcHg7IH0gLk5ld1NycDJNb2JpbGUgSDIuZGVmYXVsdCBJLmljb24uc2luZ2xlTGluZUgyeyBtYXJnaW4tdG9wOjBweDsgfSAuTmV3U3JwMk1vYmlsZSBIMi5kZWZhdWx0ID4gRElWeyBkaXNwbGF5OnRhYmxlLXJvdzsgfSAuTmV3U3JwMk1vYmlsZSBIMi5kZWZhdWx0ID4gRElWIERJVjpudGgtY2hpbGQoMSl7IGZvbnQtd2VpZ2h0OmJvbGQ7IH0gLk5ld1NycDJNb2JpbGUgSDIuZGVmYXVsdCA+IERJViBESVY6bnRoLWNoaWxkKDIpeyBmb250LXdlaWdodDpub3JtYWw7IGNvbG9yOiM3NTc1NzU7IGZvbnQtc2l6ZToxcmVtOyBsaW5lLWhlaWdodDoxcmVtOyB9IC5OZXdTcnAyLk5ld1NycDJNb2JpbGUgZGl2Lk1haW5Cb3hMYXllciBkaXYuT3V0ZXJCb3hMYXllciB7IHBhZGRpbmc6MTBweDsgZmxvYXQ6bGVmdDsgd2lkdGg6MTAwJTsgYm94LXNpemluZzpib3JkZXItYm94OyB9IC5jYXJfdGV4dCBhIHt0ZXh0LWRlY29yYXRpb246bm9uZTsgY29sb3I6IzA1MTQxZjsgbGluZS1oZWlnaHQ6MS4xO30gLmNhcl90ZXh0IGE6aG92ZXIgeyB0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lOyBjb2xvcjojMDUxNDFmfSAuZGl2Q2F0ZWdvcmllc0JveFdyYXBwZXIgLmRpdkNhdGVnb3J5Qm94V3JhcHBlciAuZGl2Q2FyU2luZ2xlT3V0ZXJCb3ggLmRpdkNhclNpbmdsZUlubmVyQm94IC5kaXZDYXJUaXRsZUNvbnRhaW5lciAuZGl2Q2FySW5TdG9ja0xpbmt7IGJhY2tncm91bmQtY29sb3I6I2VmZWZlZjsgcGFkZGluZzozcHggOHB4OyBib3JkZXItcmFkaXVzOjNweDsgd2lkdGg6Zml0LWNvbnRlbnQ7IGNvbG9yOiMwMDA7IG1hcmdpbi10b3A6MTBweDsgcG9zaXRpb246cmVsYXRpdmU7IHotaW5kZXg6MzsgfSAuZGl2Q2F0ZWdvcmllc0JveFdyYXBwZXIgLmRpdkNhdGVnb3J5Qm94V3JhcHBlciAuZGl2Q2FyU2luZ2xlT3V0ZXJCb3ggLmRpdkNhclNpbmdsZUlubmVyQm94IC5kaXZDYXJUaXRsZUNvbnRhaW5lciAuZGl2Q2FySW5TdG9ja0xpbmsgYXsgY29sb3I6IzAwMDsgfSAuZGl2RGlzY2xhaW1lckJsb2NreyBiYWNrZ3JvdW5kLWNvbG9yOiNmNWY1ZjU7IGJvcmRlci1yYWRpdXM6M3B4OyB9IC5kaXZEaXNjbGFpbWVyQmxvY2tDb250ZW50eyBwYWRkaW5nOjE1cHggMDsgfSAuZGl2RGlzY2xhaW1lckJsb2NrVGl0bGV7IGhlaWdodDphdXRvOyBkaXNwbGF5OmJsb2NrOyBmb250LXdlaWdodDpib2xkOyBwYWRkaW5nOjAgNDBweCAxMHB4OyBiYWNrZ3JvdW5kOm5vbmU7IG1hcmdpbjowOyB9IC5kaXZEaXNjbGFpbWVyQmxvY2tUZXh0eyBwYWRkaW5nOjAgNDBweDsgYmFja2dyb3VuZDpub25lOyBtYXJnaW46MDsgfSAuZGl2RmlsdGVyT3V0ZXJCb3ggLmRpdkZpbHRlclRpdGxleyBmb250LXdlaWdodDpib2xkOyBwYWRkaW5nLWJvdHRvbToxMHB4OyBwYWRkaW5nLXRvcDoyMHB4OyBmb250LXNpemU6MXJlbSA7IH0gLmRpdkZpbHRlck91dGVyQm94IHVsIGxpIC5maWx0ZXJDaGVjaywgLmRpdkZpbHRlck91dGVyQm94IHVsIGxpIC5yYWRpb1NvcnR7IHBvc2l0aW9uOmFic29sdXRlOyBvcGFjaXR5OjA7IHdpZHRoOjFweDsgaGVpZ2h0OjFweDsgb3ZlcmZsb3c6aGlkZGVuOyBjbGlwOnJlY3QoMCAwIDAgMCk7IH0gLmRpdkZpbHRlck91dGVyQm94IHVsIGxpIC5maWx0ZXJDaGVjaysuZmlsdGVyU3BhbiwgLmRpdkZpbHRlck91dGVyQm94IHVsIGxpIC5yYWRpb1NvcnQrLmZpbHRlclNwYW57IGJhY2tncm91bmQtY29sb3I6I0Y2RjZGNjsgY29sb3I6IzMzMzMzMzsgfSAuZGl2RmlsdGVyT3V0ZXJCb3ggdWwgbGkgLmZpbHRlckNoZWNrOmNoZWNrZWQrLmZpbHRlclNwYW4sIC5kaXZGaWx0ZXJPdXRlckJveCB1bCBsaSAucmFkaW9Tb3J0OmNoZWNrZWQrLmZpbHRlclNwYW57IGJhY2tncm91bmQtY29sb3I6IzY2NjY2NjsgY29sb3I6I0ZGRjsgfSAuZGl2RmlsdGVyT3V0ZXJCb3ggdWwgeyBkaXNwbGF5OmZsZXg7IGZsZXgtd3JhcDp3cmFwOyBjb2x1bW4tZ2FwOjEwcHg7IHJvdy1nYXA6NXB4OyBwYWRkaW5nOjA7IG1hcmdpbjowOyBhbGlnbi1pdGVtczpzdHJldGNoOyB9IC5kaXZGaWx0ZXJPdXRlckJveCB1bCBsaXsgZmxleDowIDAgY2FsYyg1MCUgLSA1cHgpOyBib3gtc2l6aW5nOmJvcmRlci1ib3g7IH0gLmRpdkZpbHRlck91dGVyQm94IHVsIGxpIC5maWx0ZXJTcGFueyBkaXNwbGF5OmZsZXg7IHBhZGRpbmc6N3B4IDIwcHg7IGJvcmRlcjpub25lOyBib3JkZXItcmFkaXVzOjVweDsgY3Vyc29yOnBvaW50ZXI7IHRleHQtYWxpZ246Y2VudGVyOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgZm9udC1zaXplOjAuODc1cmVtIDsgdHJhbnNpdGlvbjpiYWNrZ3JvdW5kLWNvbG9yIDAuM3MgZWFzZTsgYm94LXNpemluZzpib3JkZXItYm94OyBtYXJnaW4tdG9wOjVweDsgd2lkdGg6MTAwJTsgaGVpZ2h0OjEwMCU7IGFsaWduLWl0ZW1zOmNlbnRlcjsganVzdGlmeS1jb250ZW50OmNlbnRlcjsgfSAuTWFpbkJveExheWVyIC5maWx0ZXJUb2dnbGVXcmFwcGVyIC5maWx0ZXJUb2dnbGVCdG4geyBkaXNwbGF5OmlubGluZS1ibG9jazsgcGFkZGluZzoxMHB4IDIwcHg7IGJhY2tncm91bmQtY29sb3I6IzA1MTQxZjsgY29sb3I6I2ZmZmZmZjsgYm9yZGVyOm5vbmU7IGJvcmRlci1yYWRpdXM6NXB4OyBjdXJzb3I6cG9pbnRlcjsgdGV4dC1hbGlnbjpjZW50ZXI7IGZvbnQtc2l6ZToxcmVtIDsgdHJhbnNpdGlvbjpiYWNrZ3JvdW5kLWNvbG9yIDAuM3MgZWFzZTsgd2lkdGg6MTAwJTsgdGV4dC1kZWNvcmF0aW9uOm5vbmUhaW1wb3J0YW50OyB9IC5NYWluQm94TGF5ZXIgLnNlbGVjdFRvZ2dsZVdyYXBwZXJ7IGRpc3BsYXk6ZmxleDsgZmxleC13cmFwOndyYXA7IGNvbHVtbi1nYXA6MTBweDsgcm93LWdhcDo1cHg7IHBhZGRpbmc6MDsgbWFyZ2luOjA7IGFsaWduLWl0ZW1zOnN0cmV0Y2g7IH0gLk1haW5Cb3hMYXllciAuc2VsZWN0VG9nZ2xlV3JhcHBlciAuc2VsZWN0QWxsVG9nZ2xlQnRuLCAuTWFpbkJveExheWVyIC5zZWxlY3RUb2dnbGVXcmFwcGVyIC51bnNlbGVjdEFsbFRvZ2dsZUJ0biB7IGRpc3BsYXk6aW5saW5lLWJsb2NrOyBwYWRkaW5nOjEwcHggM3B4OyBiYWNrZ3JvdW5kLWNvbG9yOiMwNTE0MWY7IGNvbG9yOiNmZmZmZmY7IGJvcmRlcjpub25lOyBib3JkZXItcmFkaXVzOjVweDsgY3Vyc29yOnBvaW50ZXI7IHRleHQtYWxpZ246Y2VudGVyOyBmb250LXNpemU6MXJlbSA7IHRyYW5zaXRpb246YmFja2dyb3VuZC1jb2xvciAwLjNzIGVhc2U7IHRleHQtZGVjb3JhdGlvbjpub25lIWltcG9ydGFudDsgZmxleDowIDAgY2FsYyg1MCUgLSA1cHgpOyBib3gtc2l6aW5nOmJvcmRlci1ib3g7IH0gLmRpdkZpbHRlck91dGVyQm94IGRpdi5kaXZQcmljZVJhbmdlU2xpZGVyIHsgbWFyZ2luOjBweCAwIDQwcHggMCFpbXBvcnRhbnQ7IH0gLmRpdlByaWNlUmFuZ2VTbGlkZXIgPiAuZGl2U3Bhbi5kaXZTcGFuMTI6bm90KC5kaXZGaWx0ZXJUaXRsZSkgeyBkaXNwbGF5OmZsZXg7IGFsaWduLWl0ZW1zOmNlbnRlcjsganVzdGlmeS1jb250ZW50OmNlbnRlcjsgfSAuZGl2UHJpY2VSYW5nZVNsaWRlciAucmFuZ2Utc2xpZGVyLWxlZnQsIC5kaXZQcmljZVJhbmdlU2xpZGVyIC5yYW5nZS1zbGlkZXItcmlnaHQgeyB3aWR0aDphdXRvOyBtaW4td2lkdGg6NDBweDsgdGV4dC1hbGlnbjpjZW50ZXI7IH0gLmRpdlByaWNlUmFuZ2VTbGlkZXIgLnJhbmdlLXNsaWRlci51aS1zbGlkZXIgeyBmbGV4OjEgMSBhdXRvOyBtYXgtd2lkdGg6NTAwcHg7IH0gLk1haW5Cb3hMYXllciAuc2lkZVNpZGViYXIgeyBwb3NpdGlvbjpmaXhlZDsgdG9wOjA7IGxlZnQ6MDsgd2lkdGg6MzAwcHg7IGhlaWdodDoxMDAlOyBiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7IGJveC1zaGFkb3c6LTJweCAwIDhweCByZ2JhKDAsMCwwLDAuMyk7IHBhZGRpbmc6MCAyMHB4IDIwcHggMjBweDsgei1pbmRleDoxMDAwOyBvdmVyZmxvdy15OmF1dG87IG92ZXJmbG93LXg6aGlkZGVuOyBtYXgtd2lkdGg6MTAwJTsgYm94LXNpemluZzpib3JkZXItYm94OyB0cmFuc2Zvcm06dHJhbnNsYXRlWCgtMTAwJSk7IHRyYW5zaXRpb246dHJhbnNmb3JtIDAuM3MgZWFzZTsgfSAuTWFpbkJveExheWVyIC5zaWRlU2lkZWJhci5vcGVuIHsgdHJhbnNmb3JtOnRyYW5zbGF0ZVgoMCk7IGRpc3BsYXk6YmxvY2s7IH0gLk1haW5Cb3hMYXllciAuY2xvc2VCdG4geyBwb3NpdGlvbjphYnNvbHV0ZTsgdG9wOjEwcHg7IHJpZ2h0Oi0xMHB4OyBmb250LXNpemU6MS41cmVtIDsgYmFja2dyb3VuZDpub25lOyBib3JkZXI6bm9uZTsgY3Vyc29yOnBvaW50ZXI7IHotaW5kZXg6MTE7IH0gLk1haW5Cb3hMYXllciAuc2lkZVNpZGViYXIgLmRpdkZpbHRlckJveFRpdGxleyBmb250LXdlaWdodDpib2xkOyBmb250LXNpemU6MS4xMjVyZW0gOyBwb3NpdGlvbjpzdGlja3k7IHRvcDowOyBiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7IHotaW5kZXg6MTA7IHBhZGRpbmc6MTBweCAwIDAgMDsgfSAuTWFpbkJveExheWVyIC5zaWRlU2lkZWJhciAuc2lkZWJhckhlYWRlciB7IHBvc2l0aW9uOnN0aWNreTsgdG9wOjA7IGJhY2tncm91bmQtY29sb3I6I2ZmZjsgei1pbmRleDoxMDA7IHBhZGRpbmc6MTBweCAwIDAgMDsgZGlzcGxheTpmbGV4OyBqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjsgYWxpZ24taXRlbXM6Y2VudGVyOyB9Ci8qKiAvY3NzL3JlZC5jc3MgKiovCi5tZW51IHVsIGxpIGEsIC5tZW51IHVsIGxpIGE6aG92ZXJ7IC13ZWJraXQtYm9yZGVyLXJhZGl1czo0cHg7IC1tb3otYm9yZGVyLXJhZGl1czo0cHg7IGJvcmRlci1yYWRpdXM6NHB4OyBjb2xvcjojZmZmZmZmOyBmaWxsOiNmZmZmZmY7IHRleHQtYWxpZ246bGVmdDsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IGRpc3BsYXk6YmxvY2s7IGZvbnQtc2l6ZToxLjFlbTsgZm9udC13ZWlnaHQ6Ym9sZDsgcGFkZGluZzo1cHggMCA1cHggN3B4OyBiYWNrZ3JvdW5kOiMwNTE0MWY7IH0gLnRvcG5hdiAubWVudSB1bCBsaSBheyBiYWNrZ3JvdW5kOiNmZmZmZmY7IGNvbG9yOiMwNTE0MWY7IGZpbGw6IzA1MTQxZjsgfSAubWVudSB1bCBsaSBhOmhvdmVyeyBib3JkZXItcmFkaXVzOjNweCAzcHggMHB4IDBweDsgfSAubWVudSAucHJvbW8geyBtYXJnaW46aW5pdGlhbDsgbWluLWhlaWdodDphdXRvOyB9IC5tZW51LmJ1cmdlci1idG4tY29udGFpbmVyIHVsIGxpIGEsIC5tZW51LmJ1cmdlci1idG4tY29udGFpbmVyIHVsIGxpIGE6aG92ZXJ7IGJvcmRlci1yYWRpdXM6MDsgfSAubW9iaWxlQnV0dG9ueyBjb2xvcjpyZ2IoNSwyMCwzMSkgIWltcG9ydGFudDsgYmFja2dyb3VuZDojRkZGRkZGIWltcG9ydGFudDsgfSAubWVudSB1bCBsaSBhLmJsYWNrIHtiYWNrZ3JvdW5kOiMyMjI7fSAuaC1idXR0b25zIHVsIGxpIGEuYmxhY2sge2JhY2tncm91bmQ6IzAwMDtjb2xvcjojRkZGRkZGfSAuaC1idXR0b25zIHt9IC5oLWJ1dHRvbnMgdWwgbGkge2Zsb2F0OmxlZnQ7IGxpc3Qtc3R5bGU6bm9uZTsgbGlzdC1zdHlsZS10eXBlOm5vbmU7IG1hcmdpbjowIDAgMTBweCAwcHg7ZGlzcGxheTpibG9jazsgdGV4dC1hbGlnbjpjZW50ZXI7fSAuaC1idXR0b25zIHVsIGxpIGEgeyBiYWNrZ3JvdW5kLWNvbG9yOiNGRkZGRkY7IGNvbG9yOiMwMDA7IGZvbnQtd2VpZ2h0OmJvbGQ7IGRpc3BsYXk6YmxvY2s7IHBhZGRpbmc6NXB4OyAtd2Via2l0LWJvcmRlci1yYWRpdXM6NnB4OyAtbW96LWJvcmRlci1yYWRpdXM6NnB4OyBib3JkZXItcmFkaXVzOjZweDsgbWluLXdpZHRoOjk1cHg7IH0gLmRlYWxlcnBob25lIHVsIGxpIGEgeyAtd2Via2l0LWJvcmRlci1yYWRpdXM6NHB4OyAtbW96LWJvcmRlci1yYWRpdXM6NHB4OyBib3JkZXItcmFkaXVzOjRweDsgY29sb3I6I2ZmZjsgdGV4dC1hbGlnbjpsZWZ0OyB0ZXh0LWRlY29yYXRpb246bm9uZTsgZGlzcGxheTpibG9jazsgZm9udC1zaXplOjEuMWVtOyBmb250LXdlaWdodDpib2xkOyBwYWRkaW5nOjEwcHg7IGJhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDsgYmFja2dyb3VuZC1zaXplOjI1cHg7IGJhY2tncm91bmQtcG9zaXRpb246OTglIDZweDsgYmFja2dyb3VuZC1jb2xvcjojZDAwOyBiYWNrZ3JvdW5kLWltYWdlOnVybCgvaW1hZ2VzL2Fycm93LnBuZyk7IH0gLm1lbnUgbGkuaW52ZXJzZS1jb2xvciA+IGEgeyBjb2xvcjojMDUxNDFmOyBiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmY7IGJvcmRlcjoxcHggc29saWQ7IH0gI2NoYXQtd2lkZ2V0LWNvbnRhaW5lciwgI2xpdmVfY2hhdF9zdGF0dXMsICNDaGF0RGl2LCAjcG9kaXVtLWJ1YmJsZSwgI2pjb250LCBqZGl2LCAjdHN3X3dyYXBwZXIsIC5mYl9kaWFsb2csIC5mYl9pZnJhbWVfd2lkZ2V0LCAuZmItY3VzdG9tZXJjaGF0LCAuZWstY2hhdCwgLm1hdGFkb3ItbGl2ZWNoYXQtMTIzNzg5LW1haW4td3JhcHBlciwgI21hdGFkb3ItY29ubmVjdC10ZXh0LWxhYmVsLCAjbWF0YWRvci1jb25uZWN0LXRleHQtbGFiZWwtYmFkZ2V7IHotaW5kZXg6MTAwMDAgIWltcG9ydGFudDsgfSBzdmcuY2hhdC1idWJibGV7IHdpZHRoOnJldmVydDsgaGVpZ2h0OnJldmVydDsgfSAuVXNlZFNycDJNb2JpbGUgaWZyYW1lI3BvZGl1bS1idWJibGV7IGJvdHRvbTozcmVtICFpbXBvcnRhbnQ7IH0gI3RyYWRlSW5CYXJQb3B1cF9mb3JtVyAudHJhZGVJbkJhck11bHRpc2VsZWN0eyBtaW4td2lkdGg6MjI1cHg7IG1heC13aWR0aDoxMDAlIWltcG9ydGFudDsgfSAudWktbXVsdGlzZWxlY3QtbWVudS50cmFkZUluQmFyTXVsdGlzZWxlY3R7IHotaW5kZXg6MTAwMDAyMDsgbWF4LWhlaWdodDoxMTBweDsgb3ZlcmZsb3c6c2Nyb2xsOyB9IC5tdWx0aXNlbGVjdFZlaGljbGVPcHRpb25zeyBtYXJnaW4tdG9wOjVweDsgfSAubXVsdGlzZWxlY3RWZWhpY2xlT3B0aW9ucyBzcGFueyBmb250LXNpemU6MC45MzhyZW0gIWltcG9ydGFudDsgcGFkZGluZzowICFpbXBvcnRhbnQ7IG1hcmdpbjowICFpbXBvcnRhbnQ7IH0gLnRyYWRpbk5pdnsgd2lkdGg6MTAwJTsgcGFkZGluZzowLjRyZW07IGJvcmRlcjoxcHggc29saWQgI2E5YTlhOTsgYm9yZGVyLXJhZGl1czo1cHg7IH0gI3RyYWRlSW5CYXJQb3B1cF9mb3JtVyAudHJhZGluTml2eyB3aWR0aDoxMDAlOyBwYWRkaW5nOjAuNXJlbTsgYm9yZGVyOjFweCBzb2xpZCAjYTlhOWE5OyBib3JkZXItcmFkaXVzOjVweDsgfSAjdHJhZGVJbkJhclBvcHVwX2Zvcm1XIC5uaXZNYWtlTW9kZWxTZWxlY3RDb250YWluZXJ7IHdpZHRoOjEwMCU7IGZvbnQtc2l6ZTowLjc1cmVtIDsgfSAjdHJhZGVJbkJhclBvcHVwX2Zvcm1XIC5uaXZNYWtlTW9kZWxTZWxlY3RDb250YWluZXIgLm5pdk1ha2VNb2RlbFNlbGVjdHsgZGlzcGxheTpub25lOyB9ICN0cmFkZUluQmFyUG9wdXBfZm9ybVcgLm5pdk1ha2VNb2RlbFNlbGVjdENvbnRhaW5lciAubml2TWFrZU1vZGVsU2VsZWN0TGFiZWx7IGRpc3BsYXk6aW5saW5lLWJsb2NrOyBtYXJnaW46MCA1cHg7IGN1cnNvcjpwb2ludGVyOyB9ICN0cmFkZUluQmFyUG9wdXBfZm9ybVcgLm5pdk1ha2VNb2RlbFNlbGVjdENvbnRhaW5lciAubml2TWFrZU1vZGVsU2VsZWN0OmNoZWNrZWQrbGFiZWx7IGJvcmRlci1ib3R0b206MnB4IHNvbGlkIGJsYWNrOyB9ICN0cmFkZUluQmFyUG9wdXBfZm9ybVcgLnRyYWRlSW5CYXJNdWx0aXNlbGVjdHsgd2lkdGg6MTAwJSFpbXBvcnRhbnQ7IGJvcmRlci1yYWRpdXM6MC4zcmVtIWltcG9ydGFudDsgYm9yZGVyLXdpZHRoOjFweCFpbXBvcnRhbnQ7IGJvcmRlci1yYWRpdXM6MC4zcmVtIWltcG9ydGFudDsgYm9yZGVyLWNvbG9yOiNhOWE5YTkhaW1wb3J0YW50OyBwYWRkaW5nOjAuM3JlbSFpbXBvcnRhbnQ7IH0gI3RyYWRlSW5CYXJQb3B1cF9mb3JtVyAudHJhZGluU2VsZWN0UG9wdXB7IGNvbG9yOiMzYzM4MzY7IGZvbnQtc2l6ZToxcmVtOyBiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsMSk7IGJhY2tncm91bmQtcG9zaXRpb246OTUlIDUwJTsgLXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7IC1tb3otYXBwZWFyYW5jZTpub25lOyBtYXJnaW46NXB4IDAgMDsgcGFkZGluZzowLjNyZW0haW1wb3J0YW50OyB9Ci8qKiAvY3NzL2Rpdl9yYW5nZXNsaWRlci5jc3MgKiovCmRpdi5kaXZQcmljZVJhbmdlU2xpZGVyeyBtYXJnaW46MCAwIDEwcHggMDsgcGFkZGluZzowOyB9IGRpdi5kaXZQcmljZVJhbmdlU2xpZGVyIGRpdi5yYW5nZS1zbGlkZXItdGl0bGV7IGZvbnQtd2VpZ2h0OmJvbGQ7IHBhZGRpbmc6MCAwIDEwcHggMDsgfSBkaXYuZGl2UHJpY2VSYW5nZVNsaWRlciBkaXYucmFuZ2Utc2xpZGVyLXByaWNlc3sgcGFkZGluZzowIDAgMTVweCAwOyBmb250LXNpemU6MS4xMjVyZW0gOyB9IGRpdi5kaXZQcmljZVJhbmdlU2xpZGVyIGRpdi5yYW5nZS1zbGlkZXItcHJpY2VzIHNwYW4ucHJpY2UtbWlue30gZGl2LmRpdlByaWNlUmFuZ2VTbGlkZXIgZGl2LnJhbmdlLXNsaWRlci1wcmljZXMgc3Bhbi5wcmljZS1tYXh7fSBkaXYuZGl2UHJpY2VSYW5nZVNsaWRlciBkaXYucmFuZ2Utc2xpZGVyeyBib3JkZXItcmFkaXVzOjVweCAhaW1wb3J0YW50OyBoZWlnaHQ6MTBweDsgbWFyZ2luOjRweCA2cHggMCAtM3B4OyBwYWRkaW5nOjA7IGJvcmRlcjoxcHggc29saWQgI2NjYzsgfSBkaXYuZGl2UHJpY2VSYW5nZVNsaWRlciBkaXYucmFuZ2Utc2xpZGVyLWxlZnQsIGRpdi5kaXZQcmljZVJhbmdlU2xpZGVyIGRpdi5yYW5nZS1zbGlkZXItcmlnaHR7IGZvbnQtc2l6ZTowLjc1cmVtIDsgbGluZS1oZWlnaHQ6MjBweDsgY29sb3I6Izc1NzU3NTsgfSBkaXYuZGl2UHJpY2VSYW5nZVNsaWRlciBkaXYucmFuZ2Utc2xpZGVyLWxlZnR7IHRleHQtYWxpZ246bGVmdDsgfSBkaXYuZGl2UHJpY2VSYW5nZVNsaWRlciBkaXYucmFuZ2Utc2xpZGVyLXJpZ2h0eyB0ZXh0LWFsaWduOnJpZ2h0OyB9IGRpdi5kaXZQcmljZVJhbmdlU2xpZGVyIGRpdi5yYW5nZS1zbGlkZXIgZGl2LnVpLXNsaWRlci1yYW5nZXsgYmFja2dyb3VuZDojZmZmZmZmIWltcG9ydGFudDsgfSBkaXYuZGl2UHJpY2VSYW5nZVNsaWRlciBkaXYucmFuZ2Utc2xpZGVyIEEudWktc2xpZGVyLWhhbmRsZSwgZGl2LmRpdlByaWNlUmFuZ2VTbGlkZXIgZGl2LnJhbmdlLXNsaWRlciBzcGFuLnVpLXNsaWRlci1oYW5kbGV7IG1hcmdpbjotOHB4IDAgMCAtMTFweDsgYm9yZGVyOjFweCBzb2xpZCAjY2NjOyBwYWRkaW5nOjAgIWltcG9ydGFudDsgYm9yZGVyLXJhZGl1czo1MHB4ICFpbXBvcnRhbnQ7IGJhY2tncm91bmQ6I2ZmZiAhaW1wb3J0YW50OyB0b3A6MDsgaGVpZ2h0OjI1cHg7IHdpZHRoOjI1cHg7IGN1cnNvcjpwb2ludGVyOyBvdXRsaW5lOm5vbmUgIWltcG9ydGFudDsgfSBkaXYuZGl2UHJpY2VSYW5nZVNsaWRlciBkaXYucmFuZ2Utc2xpZGVyIEEudWktc2xpZGVyLWhhbmRsZS51aS1zdGF0ZS1ob3ZlciwgZGl2LmRpdlByaWNlUmFuZ2VTbGlkZXIgZGl2LnJhbmdlLXNsaWRlciBBLnVpLXNsaWRlci1oYW5kbGUudWktc3RhdGUtYWN0aXZlLCBkaXYuZGl2UHJpY2VSYW5nZVNsaWRlciBkaXYucmFuZ2Utc2xpZGVyIHNwYW4udWktc2xpZGVyLWhhbmRsZS51aS1zdGF0ZS1ob3ZlciwgZGl2LmRpdlByaWNlUmFuZ2VTbGlkZXIgZGl2LnJhbmdlLXNsaWRlciBzcGFuLnVpLXNsaWRlci1oYW5kbGUudWktc3RhdGUtYWN0aXZleyBib3JkZXItY29sb3I6IzY2NjsgfSBkaXYuZGl2UHJpY2VSYW5nZVNsaWRlciBkaXYucmFuZ2Utc2xpZGVyIEEudWktc2xpZGVyLWhhbmRsZS51aS1zdGF0ZS1mb2N1cywgZGl2LmRpdlByaWNlUmFuZ2VTbGlkZXIgZGl2LnJhbmdlLXNsaWRlciBzcGFuLnVpLXNsaWRlci1oYW5kbGUudWktc3RhdGUtZm9jdXN7IG91dGxpbmU6bm9uZSAhaW1wb3J0YW50OyB9Ci8qKiAvY3NzL3BheW1lbnRDYWxjdWxhdG9yLmNzcyAqKi8KOmlzKCNwYXltZW50Q2FsY3VsYXRvckNvbnRhaW5lciwjZmluYW5jZU11bHRpc3RlcE5ld0NhbGN1bGF0b3IpLmNhbGMtbW9iaWxlIHsgLS13cmFwLXBheW1lbnRzOndyYXA7IC0tbW9iaWxlLWRpc3BsYXk6bm9uZTsgLS1tb2ItZnVsbC13aWR0aDoxMDAlOyAtLXBheW1lbnQtbWluLXdpZHRoOjYuM3JlbTsgLS1oZWFkZXItZm9udC1zaXplOnZhcigtLWZzMik7IC0taGVhZGVyLWljb24tc2l6ZTp2YXIoLS1mczUpOyB9ICNwYXltZW50Q2FsY3VsYXRvckNvbnRhaW5lcnsgbWluLWhlaWdodDo0NTBweDsgY29sb3I6YmxhY2s7IH0gI3BheW1lbnRDYWxjdWxhdG9yUG9wdXBDb250YWluZXJ7IGJvcmRlcjo0cHggc29saWQgI2ZmZmZmZjsgfSAjcGF5bWVudENhbGN1bGF0b3JQb3B1cENvbnRhaW5lcjpoYXMoLmNhbGMtbW9iaWxlKXsgYm94LXNpemluZzpib3JkZXItYm94OyB9ICNwYXltZW50Q2FsY3VsYXRvckNvbnRhaW5lci5jYWxjLW1vYmlsZSAucGF5bWVudENhbGN1bGF0b3JQYXltZW50Q29udGFpbmVyLCAjZmluYW5jZU11bHRpc3RlcE5ld0NhbGN1bGF0b3IuY2FsYy1tb2JpbGUgLnBheW1lbnRDYWxjdWxhdG9yUGF5bWVudENvbnRhaW5lcnsgb3ZlcmZsb3cteDp2aXNpYmxlOyBvdmVyZmxvdy15OnNjcm9sbDsgaGVpZ2h0OjM3MHB4OyBmbGV4LXdyYXA6d3JhcDsgfSAucGF5bWVudENhbGN1bGF0b3JQYXltZW50Q29udGFpbmVyLCAucGF5bWVudENhbGN1bGF0b3JQYXltZW50Q29udGFpbmVyV2l0aFRheGVzIHsgb3ZlcmZsb3cteDpzY3JvbGw7IGRpc3BsYXk6ZmxleDsgZ2FwOjEwcHg7IH0gLmZpbmFuY2VNdWx0aXN0ZXBOZXdDYWxjdWxhdG9yIC5wYXltZW50Q2FsY3VsYXRvclBheW1lbnRDb250YWluZXIsIC5maW5hbmNlTXVsdGlzdGVwTmV3Q2FsY3VsYXRvciAucGF5bWVudENhbGN1bGF0b3JQYXltZW50Q29udGFpbmVyV2l0aFRheGVzIHsgd2lkdGg6MTAwJTsgfSAucGF5bWVudENhbGN1bGF0b3JQYXltZW50Q29udGFpbmVyLmJveGVzNHsgd2lkdGg6NjQlOyB9IC5maW5hbmNlTXVsdGlzdGVwTmV3Q2FsY3VsYXRvciAucGF5bWVudENhbGN1bGF0b3JQYXltZW50Q29udGFpbmVyLmJveGVzNCwgLmZpbmFuY2VNdWx0aXN0ZXBOZXdDYWxjdWxhdG9yIC5wYXltZW50Q2FsY3VsYXRvclBheW1lbnRDb250YWluZXJXaXRoVGF4ZXMuYm94ZXM0eyB3aWR0aDo4MCU7IH0gLnJldmVhbC1tb2RhbCAucGF5bWVudENhbGN1bGF0b3JQYXltZW50Q29udGFpbmVyIHNwYW4sIC5yZXZlYWwtbW9kYWwgLnBheW1lbnRDYWxjdWxhdG9yUGF5bWVudENvbnRhaW5lcldpdGhUYXhlcyBzcGFueyBwYWRkaW5nOjAhaW1wb3J0YW50OyBtYXJnaW4tYm90dG9tOjAhaW1wb3J0YW50OyBjb2xvcjppbmhlcml0OyBmb250LXNpemU6aW5oZXJpdDsgfSAucGF5bWVudENhbGN1bGF0b3JQYXltZW50V3JhcHBlcnsgbWFyZ2luLWJvdHRvbTp2YXIoLS1zKTsgfSAjcGF5bWVudENhbGN1bGF0b3JDb250YWluZXIuY2FsYy1tb2JpbGUgLnBheW1lbnRDYWxjdWxhdG9yUGF5bWVudFdyYXBwZXJ7IG1hcmdpbi1ib3R0b206MDsgfSAucGF5bWVudENhbGN1bGF0b3JQYXltZW50Q29udGFpbmVyLmJveGVzNCAucGF5bWVudENhbGN1bGF0b3JQYXltZW50V3JhcHBlciwgLnBheW1lbnRDYWxjdWxhdG9yUGF5bWVudENvbnRhaW5lcldpdGhUYXhlcy5ib3hlczQgLnBheW1lbnRDYWxjdWxhdG9yUGF5bWVudFdyYXBwZXJ7IHdpZHRoOjI0JTsgfSAucGF5bWVudENhbGN1bGF0b3JMaW5leyBib3JkZXItYm90dG9tOjFweCBzb2xpZCBncmV5OyBtYXJnaW46MTBweCAwOyB9IC5wYXltZW50Q2FsY3VsYXRvclBheW1lbnRXcmFwcGVyIC5wYXltZW50Q2FsY3VsYXRvclBheW1lbnRMaW5lMXsgZm9udC1zaXplOjAuNjg4cmVtIDsgfSAucmV2ZWFsLW1vZGFsIC5wYXltZW50Q2FsY3VsYXRvclBheW1lbnRXcmFwcGVyIC5wYXltZW50Q2FsY3VsYXRvclBheW1lbnRMaW5lMSBzcGFueyBmb250LXNpemU6MS43NXJlbSA7IGNvbG9yOiMwNTE0MWY7IH0gLnBheW1lbnRDYWxjdWxhdG9yUGF5bWVudFdyYXBwZXIgLnBheW1lbnRDYWxjdWxhdG9yUGF5bWVudExpbmUyeyBmb250LXNpemU6MC43NXJlbSA7IH0gLnJldmVhbC1tb2RhbCAucGF5bWVudENhbGN1bGF0b3JQYXltZW50V3JhcHBlciAucGF5bWVudENhbGN1bGF0b3JQYXltZW50TGluZTIgc3BhbnsgZm9udC1zaXplOjEuMzc1cmVtIDsgfSAucGF5bWVudENhbGN1bGF0b3JQYXltZW50V3JhcHBlciAucGF5bWVudENhbGN1bGF0b3JQYXltZW50TGluZTN7IGZvbnQtc2l6ZTowLjc1cmVtIDsgfSAucmV2ZWFsLW1vZGFsIC5wYXltZW50Q2FsY3VsYXRvclBheW1lbnRXcmFwcGVyIC5wYXltZW50Q2FsY3VsYXRvclBheW1lbnRMaW5lMyBzcGFueyBmb250LXNpemU6MS4yNXJlbSA7IH0gLnBheW1lbnRDYWxjdWxhdG9yUGF5bWVudFdyYXBwZXIgLnBheW1lbnRDYWxjdWxhdG9yUGF5bWVudExpbmU0eyBmb250LXNpemU6MC43NXJlbSA7IGNvbG9yOmdyZXk7IHdoaXRlLXNwYWNlOm5vcm1hbDsgfSAjcGF5bWVudENhbGN1bGF0b3JWZWhpY2xlSW1hZ2VEaXZ7IG1heC13aWR0aDozMyU7IHBvc2l0aW9uOmFic29sdXRlOyByaWdodDowOyB0b3A6LTUwJTsgZGlzcGxheTp2YXIoLS1tb2JpbGUtZGlzcGxheSwgaW5pdGlhbCk7IH0gLnBheW1lbnRDYWxjdWxhdG9yT3B0aW9uQ29udGFpbmVyeyB3aWR0aDptYXgodmFyKC0tbW9iLWZ1bGwtd2lkdGgsIDY2JSksIDIwcmVtKTsgfSAuY2FsYy1wYXltZW50c3sgbWF4LXdpZHRoOnZhcigtLW1vYi1mdWxsLXdpZHRoLCA2NiUpOyB9IC5jYWxjLXBheW1lbnRzIDppcygucHJpY2UtZnIsIC5wcmljZS1lbil7IHRleHQtYWxpZ246cmV2ZXJ0OyBtaW4td2lkdGg6dW5zZXQ7IH0gLnBheW1lbnRDYWxjdWxhdG9yUGF5bWVudFR5cGVDb250YWluZXJ7IGJvcmRlci1ib3R0b206MXB4IHNvbGlkICNjY2NjY2M7IH0gLmZpbmFuY2VNdWx0aXN0ZXBOZXdDYWxjdWxhdG9yIC5wYXltZW50Q2FsY3VsYXRvclBheW1lbnRUeXBlQ29udGFpbmVyeyBtYXJnaW4tYm90dG9tOjEwcHg7IH0gLnBheW1lbnRDYWxjdWxhdG9yUGF5bWVudFR5cGV7IGxpc3Qtc3R5bGU6bm9uZTsgcGFkZGluZzowIDA7IGRpc3BsYXk6aW5saW5lLWJsb2NrOyB9IC5wYXltZW50Q2FsY3VsYXRvclBheW1lbnRUeXBlIGxpeyBwYWRkaW5nOjEwcHg7IGZsb2F0OmxlZnQ7IG1pbi13aWR0aDo1cmVtOyBjdXJzb3I6cG9pbnRlcjsgYm9yZGVyLXJhZGl1czo1cHggNXB4IDAgMDsgYm9yZGVyLWJvdHRvbTowcHg7IHRleHQtYWxpZ246Y2VudGVyOyBiYWNrZ3JvdW5kLWNvbG9yOndoaXRlOyB9IC5wYXltZW50Q2FsY3VsYXRvclBheW1lbnRUeXBlIGxpOmhvdmVyeyBiYWNrZ3JvdW5kLWNvbG9yOiNkOWQ5ZDk7IH0gLnBheW1lbnRDYWxjdWxhdG9yUGF5bWVudFR5cGUgbGkuYWN0aXZlUGF5bWVudFR5cGV7IGJhY2tncm91bmQtY29sb3I6Izk4OTg5ODsgY29sb3I6d2hpdGU7IH0gLnBheW1lbnRDYWxjdWxhdG9ySW5wdXRDb250YWluZXJ7IG1hcmdpbi1ib3R0b206MTBweDsgfSAucGF5bWVudENhbGN1bGF0b3JJbnB1dENvbnRhaW5lciA+ICogeyBwYWRkaW5nLWJvdHRvbTowLjVyZW07IH0gLnBheW1lbnRDYWxjdWxhdG9ySW5wdXRDb250YWluZXIgbGFiZWx7IGNvbG9yOmdyZXk7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IG1hcmdpbi1sZWZ0OjNweDsgbWFyZ2luLWJvdHRvbTowOyB9IC5wYXltZW50Q2FsY3VsYXRvclRyaW1TZWxlY3R7IGJvcmRlci1yYWRpdXM6NXB4OyBwYWRkaW5nOjVweCA1cHg7IGZvbnQtc2l6ZToxcmVtIDsgbWluLXdpZHRoOjEwcmVtOyBtYXgtd2lkdGg6MjByZW07IC13ZWJraXQtYXBwZWFyYW5jZTpub25lOyAtbW96LWFwcGVhcmFuY2U6bm9uZTsgcGFkZGluZy1yaWdodDoyN3B4OyBiYWNrZ3JvdW5kLWltYWdlOnVybCgnZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCQUFBQUFRQ0FZQUFBQWY4LzloQUFBQWgwbEVRVlE0VDkzVE1RckNVQXpHOFY5eDhRemlpWVN1WGR6RkM3aDRBY0VMT1BRQWRYWW92WkNIRUFUbGdRVjVHRlRlMW96Smx6L2tTMUlwaktxdzN3UUJWeXkrK0pJMHkxR1RlN0RDQmJNQWNrZU5JUUtrL0JhbkFMQkIrMTZMdG5ERUxvTWNzTS9CRVNEbHoyaGVEUjNXZVB3S1NMbzVlb3h6M3o2Tk5jRkQrdnUzaWoxNEFxei9EeEdiS0I3Q0FBQUFBRWxGVGtTdVFtQ0MnKTsgYmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0OyBiYWNrZ3JvdW5kLXBvc2l0aW9uOjk1JSBjZW50ZXI7IGJvcmRlci1jb2xvcjojYTlhOWE5OyBjb2xvcjppbmhlcml0OyBib3gtc2hhZG93Om5vbmU7IC13ZWJraXQtYm94LXNoYWRvdzpub25lOyB9IC5wYXltZW50Q2FsY3VsYXRvckludGVydmFsLCAuZDJjZm9ybSAucGF5bWVudENhbGN1bGF0b3JJbnRlcnZhbCB7IGJvcmRlci1yYWRpdXM6NXB4OyBwYWRkaW5nOjVweCA1cHg7IGZvbnQtc2l6ZToxcmVtIDsgbWluLXdpZHRoOjdyZW07IC13ZWJraXQtYXBwZWFyYW5jZTpub25lOyAtbW96LWFwcGVhcmFuY2U6bm9uZTsgcGFkZGluZy1yaWdodDoyN3B4OyBiYWNrZ3JvdW5kLWltYWdlOnVybCgnZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCQUFBQUFRQ0FZQUFBQWY4LzloQUFBQWgwbEVRVlE0VDkzVE1RckNVQXpHOFY5eDhRemlpWVN1WGR6RkM3aDRBY0VMT1BRQWRYWW92WkNIRUFUbGdRVjVHRlRlMW96Smx6L2tTMUlwaktxdzN3UUJWeXkrK0pJMHkxR1RlN0RDQmJNQWNrZU5JUUtrL0JhbkFMQkIrMTZMdG5ERUxvTWNzTS9CRVNEbHoyaGVEUjNXZVB3S1NMbzVlb3h6M3o2Tk5jRkQrdnUzaWoxNEFxei9EeEdiS0I3Q0FBQUFBRWxGVGtTdVFtQ0MnKTsgYmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0OyBiYWNrZ3JvdW5kLXBvc2l0aW9uOjk1JSBjZW50ZXI7IGJvcmRlci1jb2xvcjojYTlhOWE5OyBjb2xvcjppbmhlcml0OyBib3gtc2hhZG93Om5vbmU7IC13ZWJraXQtYm94LXNoYWRvdzpub25lOyB9IC5wYXltZW50Q2FsY3VsYXRvckttQWxsb3dhbmNleyBib3JkZXItcmFkaXVzOjVweDsgcGFkZGluZzo1cHggNXB4OyBmb250LXNpemU6MXJlbSA7IHdpZHRoOjExMHB4OyAtd2Via2l0LWFwcGVhcmFuY2U6bm9uZTsgLW1vei1hcHBlYXJhbmNlOm5vbmU7IHBhZGRpbmctcmlnaHQ6MjdweDsgYmFja2dyb3VuZC1pbWFnZTp1cmwoJ2RhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQkFBQUFBUUNBWUFBQUFmOC85aEFBQUFoMGxFUVZRNFQ5M1RNUXJDVUF6RzhWOXg4UXppaVlTdVhkekZDN2g0QWNFTE9QUUFkWFlvdlpDSEVBVGxnUVY1R0ZUZTFvekpsei9rUzFJcGpLcXczd1FCVnl5KytKSTB5MUdUZTdEQ0JiTUFja2VOSVFLay9CYW5BTEJCKzE2THRuREVMb01jc00vQkVTRGx6MmhlRFIzV2VQd0tTTG81ZW94ejN6Nk5OY0ZEK3Z1M2lqMTRBcXovRHhHYktCN0NBQUFBQUVsRlRrU3VRbUNDJyk7IGJhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDsgYmFja2dyb3VuZC1wb3NpdGlvbjo5NSUgY2VudGVyOyBib3JkZXItY29sb3I6I2E5YTlhOTsgY29sb3I6aW5oZXJpdDsgYm94LXNoYWRvdzpub25lOyAtd2Via2l0LWJveC1zaGFkb3c6bm9uZTsgfSAucGF5bWVudENhbGN1bGF0b3JEb3duUGF5bWVudHsgYm9yZGVyOjFweCBzb2xpZCAjYTlhOWE5OyBib3JkZXItcmFkaXVzOjVweDsgcGFkZGluZzo1cHggNXB4OyBmb250LXNpemU6MXJlbSA7IHdpZHRoOjVyZW07IHBhZGRpbmctbGVmdDoyMHB4OyBiYWNrZ3JvdW5kLWltYWdlOnVybCgiZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsPHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZlcnNpb249JzEuMScgaGVpZ2h0PScyOHB4JyB3aWR0aD0nODVweCc+PHRleHQgeD0nNicgeT0nMjEnIGZpbGw9JycgZm9udC1zaXplPScxNicgZm9udC1mYW1pbHk9J2FyaWFsJz4kIik7IGJhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDsgYmFja2dyb3VuZC1zaXplOjYwJTsgYmFja2dyb3VuZC1wb3NpdGlvbi15OjQwJTsgLW1vei1hcHBlYXJhbmNlOnRleHRmaWVsZDsgfSAucGF5bWVudENhbGN1bGF0b3JEb3duUGF5bWVudDo6LXdlYmtpdC1vdXRlci1zcGluLWJ1dHRvbiwgLnBheW1lbnRDYWxjdWxhdG9yRG93blBheW1lbnQ6Oi13ZWJraXQtaW5uZXItc3Bpbi1idXR0b257IC13ZWJraXQtYXBwZWFyYW5jZTpub25lOyBtYXJnaW46MDsgfSAucGF5bWVudENhbGN1bGF0b3JOb3RpY2VDb250YWluZXJ7IG1pbi13aWR0aDoxOHJlbTsgZm9udC1zaXplOjAuODEzcmVtIDsgY29sb3I6Izg2ODY4NjsgcGFkZGluZzowOyBtYXJnaW46MDsgZGlzcGxheTp2YXIoLS1tb2JpbGUtZGlzcGxheSwgaW5pdGlhbCk7IH0gLnBheW1lbnRDYWxjdWxhdG9yTm90aWNlQ29udGFpbmVyLmJveGVzNHsgd2lkdGg6MzAlOyB9IC5yZXZlYWwtbW9kYWwgLnBheW1lbnRDYWxjdWxhdG9yTm90aWNlQ29udGFpbmVyIHAsIC5yZXZlYWwtbW9kYWwgLnBheW1lbnRDYWxjdWxhdG9yTm90aWNlQ29udGFpbmVyIHNwYW57IGNvbG9yOmluaGVyaXQ7IHBhZGRpbmc6MDsgZm9udC1zaXplOjFyZW07IH0gLnBheW1lbnRDYWxjdWxhdG9yRXJyb3JNZXNzYWdleyB3aWR0aDo1MCU7IG1hcmdpbi10b3A6MzBweDsgfSAjcGF5bWVudENhbGN1bGF0b3JWZWhpY2xlSW5mb3sgcG9zaXRpb246cmVsYXRpdmU7IH0gI3BheW1lbnRDYWxjdWxhdG9yVmVoaWNsZUluZm8gLmljb257IGJvcmRlci1yYWRpdXM6NTAlOyBib3JkZXI6MXB4IHNvbGlkICNmZmZmZmY7IGNvbG9yOiNmZmZmZmY7IG1hcmdpbjowOyBwYWRkaW5nOjAuNHJlbTsgLS10eHQtY29sb3I6I2ZmZmZmZjsgLS1mczp2YXIoLS1oZWFkZXItaWNvbi1zaXplLCB2YXIoLS1mczcpKTsgYmFja2dyb3VuZC1jb2xvcjojMDUxNDFmOyB9ICNwYXltZW50Q2FsY3VsYXRvclZlaGljbGVJbmZvIGgyIHNwYW46Zmlyc3QtY2hpbGR7IGZvbnQtc2l6ZTp2YXIoLS1mczEpOyBmb250LXdlaWdodDpub3JtYWw7IH0gI3BheW1lbnRDYWxjdWxhdG9yVmVoaWNsZUluZm8gaDIgc3BhbnsgZm9udC1zaXplOnZhcigtLWhlYWRlci1mb250LXNpemUsIHZhcigtLWZzMykpOyBtYXJnaW46MDsgbGluZS1oZWlnaHQ6bm9ybWFsOyBmb250LXdlaWdodDo3MDA7IHBhZGRpbmc6MDsgfSAjcGF5bWVudENhbGN1bGF0b3JWZWhpY2xlSW5mbyBoM3sgZm9udC1zaXplOjEuMTg4cmVtIDsgfSAjcGF5bWVudENhbGN1bGF0b3JWZWhpY2xlSW5mbyBzcGFuLmgyLWFsdHsgbWFyZ2luOjA7IHBhZGRpbmc6MDsgbWFyZ2luLWxlZnQ6dmFyKC0tcyk7IGZvbnQtc2l6ZTppbmhlcml0OyBmb250LXdlaWdodDp2YXIoLS1mb250LWgyLXdlaWdodCk7IGxpbmUtaGVpZ2h0OjEuMmVtOyBjb2xvcjp2YXIoLS1kZWZhdWx0LWJsYWNrKTsgfSAjcGF5bWVudENhbGN1bGF0b3JWZWhpY2xlSW5mbyAuaDItYWx0IHNwYW46Zmlyc3QtY2hpbGR7IGZvbnQtc2l6ZTp2YXIoLS1mczEpOyBmb250LXdlaWdodDpub3JtYWw7IH0gI3BheW1lbnRDYWxjdWxhdG9yVmVoaWNsZUluZm8gLmgyLWFsdCBzcGFueyBmb250LXNpemU6dmFyKC0taGVhZGVyLWZvbnQtc2l6ZSwgdmFyKC0tZnMzKSk7IG1hcmdpbjowOyBsaW5lLWhlaWdodDpub3JtYWw7IGZvbnQtd2VpZ2h0OjcwMDsgcGFkZGluZzowOyB9ICNwYXltZW50Q2FsY3VsYXRvclZlaGljbGVJbmZvIC5oMy1hbHR7IGZvbnQtc2l6ZToxLjE4OHJlbSA7IH0gLnBheW1lbnRDYWxjdWxhdG9yQ2FsbFRvQWN0aW9uQ29udGFpbmVyeyB0ZXh0LWFsaWduOmNlbnRlcjsgfSAucGF5bWVudENhbGN1bGF0b3JDYWxsVG9BY3Rpb25Db250YWluZXIuYm94ZXM0eyB3aWR0aDo2NCU7IH0gLnBheW1lbnRDYWxjdWxhdG9yQ2FsbFRvQWN0aW9uQ29udGFpbmVyIGF7IHdpZHRoOm1pbig2NCUsMThyZW0pOyB9IC5wYXltZW50Q2FsY3VsYXRvclBheW1lbnRTZWxlY3R7IH0gLmZhLmZhLWNhbGN1bGF0b3J7IGNvbG9yOiMwMDAwMDA7IH0gLi1iZy1ibGFjayAuZmEuZmEtY2FsY3VsYXRvcnsgY29sb3I6I0ZGRkZGRjsgfSAjcGF5bWVudENhbGN1bGF0b3JDb250YWluZXIgc2VsZWN0OjotbXMtZXhwYW5kIHsgZGlzcGxheTpub25lOyB9IC5jYWxjLXBheW1lbnQtY2FzaCB7IHdpZHRoOm1pbigxN3JlbSw5MCUpOyBwYWRkaW5nOjAgMS41cmVtOyB9IC5jYWxjLXBheW1lbnQtY2FzaCBzcGFueyBtYXJnaW4tYm90dG9tOjA7IGZvbnQtc2l6ZTpyZXZlcnQ7IH0gLmNhbGMtcGF5bWVudC1jYXNoIC5wcmljZUZpbmFsIHsgcGFkZGluZy10b3A6dmFyKC0tcyk7IGJvcmRlci10b3A6MXB4IHNvbGlkICNiYmI7IGZvbnQtd2VpZ2h0OmJvbGQ7IH0gLmNhbGMtcGF5bWVudC1jYXNoIC5wcmljZVJvdyB7IGRpc3BsYXk6ZmxleDsgYWxpZ24taXRlbXM6Y2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjsgbGluZS1oZWlnaHQ6bm9ybWFsOyB9IC5jYWxjLXBheW1lbnQtY2FzaCAucHJpY2VOYW1leyBwYWRkaW5nOjA7IHRleHQtYWxpZ246bGVmdDsgZm9udC1zaXplOnZhcigtLWZzMCk7IH0gI3BheW1lbnRDYWxjdWxhdG9yT3B0aW9uQ29udGFpbmVyIC5wYXltZW50Q2FsY3VsYXRvclRyYWRlSW5CdXR0b257IGZvbnQtc2l6ZTowLjYyNXJlbSA7IGJvcmRlcjoxcHggc29saWQgI2E5YTlhOTsgYm9yZGVyLXJhZGl1czo1cHg7IGJhY2tncm91bmQtY29sb3I6d2hpdGU7IHdpZHRoOjEwNXB4OyB0ZXh0LWFsaWduOmNlbnRlcjsgdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTsgcGFkZGluZzoycHg7IGN1cnNvcjpwb2ludGVyOyB9ICNwYXltZW50Q2FsY3VsYXRvck9wdGlvbkNvbnRhaW5lciAucGF5bWVudENhbGN1bGF0b3JUcmFkZUluVmFsdWV7IGJvcmRlcjoxcHggc29saWQgI2E5YTlhOTsgYm9yZGVyLXJhZGl1czo1cHg7IHBhZGRpbmc6NXB4IDVweDsgZm9udC1zaXplOjFyZW0gOyB3aWR0aDoxMDBweDsgcGFkZGluZy1sZWZ0OjE1cHg7IGJhY2tncm91bmQtaW1hZ2U6dXJsKCJkYXRhOmltYWdlL3N2Zyt4bWw7dXRmOCw8c3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZycgdmVyc2lvbj0nMS4xJyBoZWlnaHQ9JzI4cHgnIHdpZHRoPSc4NXB4Jz48dGV4dCB4PSc2JyB5PScyMScgZmlsbD0nJyBmb250LXNpemU9JzE2JyBmb250LWZhbWlseT0nYXJpYWwnPiQiKTsgYmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0OyBiYWNrZ3JvdW5kLWNvbG9yOndoaXRlOyB9ICNwYXltZW50Q2FsY3VsYXRvckNvbnRhaW5lciAuZmluYW5jaW5nLW9wdGlvbiwgI2ZpbmFuY2VNdWx0aXN0ZXBOZXdDYWxjdWxhdG9yIC5maW5hbmNpbmctb3B0aW9uIHsgYm9yZGVyOjEuNXB4IHNvbGlkICNhYWE7IGJvcmRlci1yYWRpdXM6NnB4OyBwYWRkaW5nOjhweDsgd2lkdGg6MTkwcHg7IGJhY2tncm91bmQ6d2hpdGU7IGRpc3BsYXk6ZmxleDsgZmxleC1kaXJlY3Rpb246Y29sdW1uOyBhbGlnbi1pdGVtczpjZW50ZXI7IHRleHQtYWxpZ246Y2VudGVyOyBmbGV4LXNocmluazowOyBtaW4td2lkdGg6MTg3cHg7IGJveC1zaXppbmc6Y29udGVudC1ib3ghaW1wb3J0YW50OyB9ICNwYXltZW50Q2FsY3VsYXRvckNvbnRhaW5lciAuZmluYW5jaW5nLW9wdGlvbi5zZWxlY3RlZCwgI2ZpbmFuY2VNdWx0aXN0ZXBOZXdDYWxjdWxhdG9yIC5maW5hbmNpbmctb3B0aW9uLnNlbGVjdGVkIHsgYm9yZGVyLWNvbG9yOiMwMDdCRkY7IGJveC1zaGFkb3c6MCAwIDEwcHggcmdiYSgwLCAxMjMsIDI1NSwgMC41KTsgfSAjcGF5bWVudENhbGN1bGF0b3JDb250YWluZXIgLnRlcm0sICNmaW5hbmNlTXVsdGlzdGVwTmV3Q2FsY3VsYXRvciAudGVybSB7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGZvbnQtd2VpZ2h0OmJvbGQ7IGNvbG9yOiMzMzM7IG1hcmdpbi1ib3R0b206MnB4OyB9ICNwYXltZW50Q2FsY3VsYXRvckNvbnRhaW5lciAuZG93bi1wYXltZW50LCAjZmluYW5jZU11bHRpc3RlcE5ld0NhbGN1bGF0b3IgLmRvd24tcGF5bWVudCB7IGZvbnQtc2l6ZTowLjYyNXJlbSA7IGNvbG9yOiM5OTk7IG1hcmdpbi1ib3R0b206NXB4OyB9ICNwYXltZW50Q2FsY3VsYXRvckNvbnRhaW5lciAuc2VwYXJhdG9yUGF5LCAjZmluYW5jZU11bHRpc3RlcE5ld0NhbGN1bGF0b3IgLnNlcGFyYXRvclBheSB7IHdpZHRoOjkwJTsgaGVpZ2h0OjFweDsgYmFja2dyb3VuZC1jb2xvcjojY2NjOyBtYXJnaW4tYm90dG9tOjZweDsgfSAjcGF5bWVudENhbGN1bGF0b3JDb250YWluZXIgLmNvbnRlbnQtY29udGFpbmVyLCAjZmluYW5jZU11bHRpc3RlcE5ld0NhbGN1bGF0b3IgLmNvbnRlbnQtY29udGFpbmVyIHsgZGlzcGxheTpmbGV4OyBqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjsgYWxpZ24taXRlbXM6Y2VudGVyOyB3aWR0aDoxMDAlOyBwYWRkaW5nLWJvdHRvbTo4cHg7IH0gI3BheW1lbnRDYWxjdWxhdG9yQ29udGFpbmVyIC5sZWZ0LXNlY3Rpb24sICNwYXltZW50Q2FsY3VsYXRvckNvbnRhaW5lciAucmlnaHQtc2VjdGlvbiwgI2ZpbmFuY2VNdWx0aXN0ZXBOZXdDYWxjdWxhdG9yIC5sZWZ0LXNlY3Rpb24sICNmaW5hbmNlTXVsdGlzdGVwTmV3Q2FsY3VsYXRvciAucmlnaHQtc2VjdGlvbiB7IHdpZHRoOjUwJTsgdGV4dC1hbGlnbjpjZW50ZXI7IHBhZGRpbmc6NnB4OyBwb3NpdGlvbjpyZWxhdGl2ZTsgfSAjcGF5bWVudENhbGN1bGF0b3JDb250YWluZXIgLmxlZnQtc2VjdGlvbiwgI2ZpbmFuY2VNdWx0aXN0ZXBOZXdDYWxjdWxhdG9yIC5sZWZ0LXNlY3Rpb24geyBib3JkZXItcmlnaHQ6MXB4IHNvbGlkICNjY2M7IH0gI3BheW1lbnRDYWxjdWxhdG9yQ29udGFpbmVyIC5sb3dlc3QtcGF5bWVudCwgI3BheW1lbnRDYWxjdWxhdG9yQ29udGFpbmVyIC5sb3dlc3QtcmF0ZSwgI2ZpbmFuY2VNdWx0aXN0ZXBOZXdDYWxjdWxhdG9yIC5sb3dlc3QtcGF5bWVudCwgI2ZpbmFuY2VNdWx0aXN0ZXBOZXdDYWxjdWxhdG9yIC5sb3dlc3QtcmF0ZSB7IGZvbnQtc2l6ZToxLjI1cmVtIDsgY29sb3I6I2QzMmYyZjsgcG9zaXRpb246cmVsYXRpdmU7IH0gI3BheW1lbnRDYWxjdWxhdG9yQ29udGFpbmVyIC5pbmZvLWljb24sICNmaW5hbmNlTXVsdGlzdGVwTmV3Q2FsY3VsYXRvciAuaW5mby1pY29uIHsgZm9udC1zaXplOjAuNzVyZW0gOyBjb2xvcjojNjY2OyBjdXJzb3I6cG9pbnRlcjsgbWFyZ2luLWxlZnQ6NHB4OyBwb3NpdGlvbjphYnNvbHV0ZTsgdG9wOjJweDsgfSAjcGF5bWVudENhbGN1bGF0b3JDb250YWluZXIgLmFjdHVhbC1yYXRlLCAjcGF5bWVudENhbGN1bGF0b3JDb250YWluZXIgLmFjdHVhbC1wYXltZW50LCAjZmluYW5jZU11bHRpc3RlcE5ld0NhbGN1bGF0b3IgLmFjdHVhbC1yYXRlLCAjZmluYW5jZU11bHRpc3RlcE5ld0NhbGN1bGF0b3IgLmFjdHVhbC1wYXltZW50IHsgZm9udC1zaXplOjAuOTM4cmVtIDsgbWFyZ2luLXRvcDo1cHg7IGZvbnQtd2VpZ2h0OmJvbGQ7IH0gI3BheW1lbnRDYWxjdWxhdG9yQ29udGFpbmVyIC5hY3R1YWwtcmF0ZSwgI2ZpbmFuY2VNdWx0aXN0ZXBOZXdDYWxjdWxhdG9yIC5hY3R1YWwtcmF0ZSB7IGNvbG9yOiMzMzM7IH0gI3BheW1lbnRDYWxjdWxhdG9yQ29udGFpbmVyIC5hY3R1YWwtcGF5bWVudCwgI2ZpbmFuY2VNdWx0aXN0ZXBOZXdDYWxjdWxhdG9yIC5hY3R1YWwtcGF5bWVudCB7IGNvbG9yOiMwMDMzNjY7IH0gI3BheW1lbnRDYWxjdWxhdG9yQ29udGFpbmVyIC5kZXRhaWxzVGF4LCAjZmluYW5jZU11bHRpc3RlcE5ld0NhbGN1bGF0b3IgLmRldGFpbHNUYXggeyBmb250LXNpemU6MC42ODhyZW0gOyBjb2xvcjojMzMzOyBtYXJnaW4tdG9wOjJweDsgfSAjcGF5bWVudENhbGN1bGF0b3JDb250YWluZXIgLnJhZGlvLWNvbnRhaW5lciwgI2ZpbmFuY2VNdWx0aXN0ZXBOZXdDYWxjdWxhdG9yIC5yYWRpby1jb250YWluZXIgeyBkaXNwbGF5OmZsZXg7IGp1c3RpZnktY29udGVudDpjZW50ZXI7IGFsaWduLWl0ZW1zOmNlbnRlcjsgZ2FwOjBweDsgbWFyZ2luLXRvcDo4cHg7IGZvbnQtc2l6ZTowLjY4OHJlbSA7IH0gI3BheW1lbnRDYWxjdWxhdG9yQ29udGFpbmVyIGlucHV0W3R5cGU9InJhZGlvIl1bbmFtZT0ic2VsZWN0ZWRQYXltZW50Il0sICNwYXltZW50Q2FsY3VsYXRvckNvbnRhaW5lciBpbnB1dFt0eXBlPSJyYWRpbyJdW25hbWU9InNlbGVjdGVkUGF5bWVudFdpdGhUYXhlcyJdLCAjZmluYW5jZU11bHRpc3RlcE5ld0NhbGN1bGF0b3IgaW5wdXRbdHlwZT0icmFkaW8iXVtuYW1lPSJzZWxlY3RlZFBheW1lbnQiXSwgI2ZpbmFuY2VNdWx0aXN0ZXBOZXdDYWxjdWxhdG9yIGlucHV0W3R5cGU9InJhZGlvIl1bbmFtZT0ic2VsZWN0ZWRQYXltZW50V2l0aFRheGVzIl0geyBtYXJnaW4tcmlnaHQ6NHB4OyBvcGFjaXR5OnVuc2V0OyB3aWR0aDp1bnNldDsgaGVpZ2h0OnVuc2V0OyBwb3NpdGlvbjp1bnNldDsgfSAjcGF5bWVudENhbGN1bGF0b3JDb250YWluZXIgLnNpbmdsZS1jb2x1bW4sICNmaW5hbmNlTXVsdGlzdGVwTmV3Q2FsY3VsYXRvciAuc2luZ2xlLWNvbHVtbiB7IGRpc3BsYXk6ZmxleDsgZmxleC1kaXJlY3Rpb246Y29sdW1uOyBhbGlnbi1pdGVtczpjZW50ZXI7IGp1c3RpZnktY29udGVudDpjZW50ZXI7IHdpZHRoOjEwMCU7IHBhZGRpbmc6OHB4OyB9ICNwYXltZW50Q2FsY3VsYXRvckNvbnRhaW5lciAuc21hbGwtYm94LCAjZmluYW5jZU11bHRpc3RlcE5ld0NhbGN1bGF0b3IgLnNtYWxsLWJveCB7IHdpZHRoOjEwMHB4OyBwYWRkaW5nOjhweDsgbWluLXdpZHRoOjEwMHB4OyBtYXgtd2lkdGg6MTAwcHg7IH0KLyoqIC9jc3MvZGFya3Rvb2x0aXAuY3NzICoqLwouZGFyay10b29sdGlwe2Rpc3BsYXk6bm9uZTtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDA7dGV4dC1kZWNvcmF0aW9uOm5vbmU7Zm9udC13ZWlnaHQ6bm9ybWFsO2hlaWdodDphdXRvO3RvcDowO2xlZnQ6MH0uZGFyay10b29sdGlwLnNtYWxse3BhZGRpbmc6NHB4O2ZvbnQtc2l6ZTowLjc1cmVtIDttYXgtd2lkdGg6MTUwcHg7LXdlYmtpdC1ib3JkZXItcmFkaXVzOjJweDstbW96LWJvcmRlci1yYWRpdXM6MnB4O2JvcmRlci1yYWRpdXM6MnB4fS5kYXJrLXRvb2x0aXAubWVkaXVte3BhZGRpbmc6NnB4O2ZvbnQtc2l6ZTowLjY4OHJlbSA7bWF4LXdpZHRoOjIwMHB4Oy13ZWJraXQtYm9yZGVyLXJhZGl1czo0cHg7LW1vei1ib3JkZXItcmFkaXVzOjRweDtib3JkZXItcmFkaXVzOjRweH0uZGFyay10b29sdGlwLmxhcmdle3BhZGRpbmc6MTZweDtmb250LXNpemU6MXJlbSA7bWF4LXdpZHRoOjI1MHB4Oy13ZWJraXQtYm9yZGVyLXJhZGl1czo2cHg7LW1vei1ib3JkZXItcmFkaXVzOjZweDtib3JkZXItcmFkaXVzOjZweH0uZGFyay10b29sdGlwIC50aXB7dHJhbnNmb3JtOnNjYWxlKDEuMDEpOy13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKDEuMDEpO3RyYW5zZm9ybTpzY2FsZSgxLjAxKTtjb250ZW50OiIiO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjA7aGVpZ2h0OjA7Ym9yZGVyLXN0eWxlOnNvbGlkO2xpbmUtaGVpZ2h0OjB9LmRhcmstdG9vbHRpcC5zb3V0aCAudGlwe2xlZnQ6NTAlO3RvcDoxMDAlfS5kYXJrLXRvb2x0aXAud2VzdCAudGlwe2xlZnQ6MDt0b3A6NTAlfS5kYXJrLXRvb2x0aXAubm9ydGggLnRpcHtsZWZ0OjUwJTt0b3A6MH0uZGFyay10b29sdGlwLmVhc3QgLnRpcHtsZWZ0OjEwMCU7dG9wOjUwJX0uZGFyay10b29sdGlwLnNvdXRoLnNtYWxsIC50aXB7Ym9yZGVyLXdpZHRoOjAgNXB4IDAgNXB4O21hcmdpbi1sZWZ0Oi01cHh9LmRhcmstdG9vbHRpcC5zb3V0aC5tZWRpdW0gLnRpcHtib3JkZXItd2lkdGg6MCA2cHggMCA2cHg7bWFyZ2luLWxlZnQ6LTZweH0uZGFyay10b29sdGlwLnNvdXRoLmxhcmdlIC50aXB7Ym9yZGVyLXdpZHRoOjAgMTJweCAwIDEycHg7bWFyZ2luLWxlZnQ6LTEycHh9LmRhcmstdG9vbHRpcC53ZXN0LnNtYWxsIC50aXB7Ym9yZGVyLXdpZHRoOjVweCA3cHggNXB4IDA7bWFyZ2luLWxlZnQ6LTdweDttYXJnaW4tdG9wOi01cHh9LmRhcmstdG9vbHRpcC53ZXN0Lm1lZGl1bSAudGlwe2JvcmRlci13aWR0aDo2cHggOHB4IDZweCAwO21hcmdpbi1sZWZ0Oi04cHg7bWFyZ2luLXRvcDotNnB4fS5kYXJrLXRvb2x0aXAud2VzdC5sYXJnZSAudGlwe2JvcmRlci13aWR0aDoxMnB4IDE0cHggMTJweCAwO21hcmdpbi1sZWZ0Oi0xNHB4O21hcmdpbi10b3A6LTEycHh9LmRhcmstdG9vbHRpcC5ub3J0aC5zbWFsbCAudGlwe2JvcmRlci13aWR0aDowIDVweCA3cHggNXB4O21hcmdpbi1sZWZ0Oi01cHg7bWFyZ2luLXRvcDotN3B4fS5kYXJrLXRvb2x0aXAubm9ydGgubWVkaXVtIC50aXB7Ym9yZGVyLXdpZHRoOjAgNnB4IDhweCA2cHg7bWFyZ2luLWxlZnQ6LTZweDttYXJnaW4tdG9wOi04cHh9LmRhcmstdG9vbHRpcC5ub3J0aC5sYXJnZSAudGlwe2JvcmRlci13aWR0aDowIDEycHggMTRweCAxMnB4O21hcmdpbi1sZWZ0Oi0xMnB4O21hcmdpbi10b3A6LTE0cHh9LmRhcmstdG9vbHRpcC5lYXN0LnNtYWxsIC50aXB7Ym9yZGVyLXdpZHRoOjVweCAwIDVweCAwO21hcmdpbi10b3A6LTVweH0uZGFyay10b29sdGlwLmVhc3QubWVkaXVtIC50aXB7Ym9yZGVyLXdpZHRoOjZweCAwIDZweCAwO21hcmdpbi10b3A6LTZweH0uZGFyay10b29sdGlwLmVhc3QubGFyZ2UgLnRpcHtib3JkZXItd2lkdGg6MTJweCAwIDEycHggMDttYXJnaW4tdG9wOi0xMnB4fS5kYXJrLXRvb2x0aXAgdWwuY29uZmlybXtsaXN0LXN0eWxlLXR5cGU6bm9uZTttYXJnaW4tdG9wOjVweDtkaXNwbGF5OmlubGluZS1ibG9jazttYXJnaW46MCBhdXRvfS5kYXJrLXRvb2x0aXAgdWwuY29uZmlybSBsaXtwYWRkaW5nOjEwcHg7ZmxvYXQ6bGVmdDttYXJnaW46NXB4O21pbi13aWR0aDoyNXB4Oy13ZWJraXQtYm9yZGVyLXJhZGl1czozcHg7LW1vei1ib3JkZXItcmFkaXVzOjNweDstby1ib3JkZXItcmFkaXVzOjNweDtib3JkZXItcmFkaXVzOjNweH0uZGFyay10b29sdGlwLmRhcmt7YmFja2dyb3VuZC1jb2xvcjojZGFkOWRiO2NvbG9yOiMwMDB9LmRhcmstdG9vbHRpcC5saWdodHtiYWNrZ3JvdW5kLWNvbG9yOiNmNWY1ZjU7Y29sb3I6IzVlNWU1ZTtib3JkZXI6MXB4IHNvbGlkICM1ZTVlNWU7ei1pbmRleDoxMDAwMDMwfS5kYXJrLXRvb2x0aXAuZGFyay5zb3V0aCAudGlwe2JvcmRlci1jb2xvcjojZGFkOWRiIHRyYW5zcGFyZW50IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50O19ib3JkZXItY29sb3I6I2RhZDlkYiAjMDAwICMwMDAgIzAwMDtfZmlsdGVyOnByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5DaHJvbWEoY29sb3I9JyMwMDAwMDAnKX0uZGFyay10b29sdGlwLmRhcmsud2VzdCAudGlwe2JvcmRlci1jb2xvcjp0cmFuc3BhcmVudCAjZGFkOWRiIHRyYW5zcGFyZW50IHRyYW5zcGFyZW50O19ib3JkZXItY29sb3I6IzAwMCAjZGFkOWRiICMwMDAgIzAwMDtfZmlsdGVyOnByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5DaHJvbWEoY29sb3I9JyMwMDAwMDAnKX0uZGFyay10b29sdGlwLmRhcmsubm9ydGggLnRpcHtib3JkZXItY29sb3I6dHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgI2RhZDlkYiB0cmFuc3BhcmVudDtfYm9yZGVyLWNvbG9yOiMwMDAgIzAwMCAjZGFkOWRiICMwMDA7X2ZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQ2hyb21hKGNvbG9yPScjMDAwMDAwJyl9LmRhcmstdG9vbHRpcC5kYXJrLmVhc3QgLnRpcHtib3JkZXItY29sb3I6dHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgI2RhZDlkYjtfYm9yZGVyLWNvbG9yOiMwMDAgIzAwMCAjMDAwICNkYWQ5ZGI7X2ZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQ2hyb21hKGNvbG9yPScjMDAwMDAwJyl9LmRhcmstdG9vbHRpcC5saWdodC5zb3V0aCAudGlwe2JvcmRlci1jb2xvcjp0cmFuc3BhcmVudDtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2JhY2tncm91bmQtaW1hZ2U6dXJsKC9jc3MvdGlwcy5wbmcpO2JhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDt3aWR0aDoxMnB4O2hlaWdodDo4cHh9LmRhcmstdG9vbHRpcC5saWdodC53ZXN0IC50aXB7Ym9yZGVyLWNvbG9yOnRyYW5zcGFyZW50O2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7YmFja2dyb3VuZC1pbWFnZTp1cmwoL2Nzcy90aXB3LnBuZyk7YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0O3dpZHRoOjhweDtoZWlnaHQ6MTJweH0uZGFyay10b29sdGlwLmxpZ2h0Lm5vcnRoIC50aXB7Ym9yZGVyLWNvbG9yOnRyYW5zcGFyZW50O2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7YmFja2dyb3VuZC1pbWFnZTp1cmwoL2Nzcy90aXBuLnBuZyk7YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0O3dpZHRoOjEycHg7aGVpZ2h0OjhweH0uZGFyay10b29sdGlwLmxpZ2h0LmVhc3QgLnRpcHtib3JkZXItY29sb3I6dHJhbnNwYXJlbnQ7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtiYWNrZ3JvdW5kLWltYWdlOnVybCgvY3NzL3RpcGUucG5nKTtiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7YmFja2dyb3VuZC1wb3NpdGlvbjpsZWZ0IGNlbnRlcjt3aWR0aDo4cHg7aGVpZ2h0OjEycHh9LmRhcmstdG9vbHRpcC5kYXJrIHVsLmNvbmZpcm0gbGl7YmFja2dyb3VuZC1jb2xvcjojNDE2ZTg1fS5kYXJrLXRvb2x0aXAuZGFyayB1bC5jb25maXJtIGxpOmhvdmVye2JhY2tncm91bmQtY29sb3I6IzQxN2U4NX0uZGFyay10b29sdGlwLmxpZ2h0IHVsLmNvbmZpcm0gbGl7YmFja2dyb3VuZC1jb2xvcjojYzFkYmRifS5kYXJrLXRvb2x0aXAubGlnaHQgdWwuY29uZmlybSBsaTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiNkY2U4ZTh9LmFuaW1hdGVkey13ZWJraXQtYW5pbWF0aW9uLWZpbGwtbW9kZTpib3RoOy1tb3otYW5pbWF0aW9uLWZpbGwtbW9kZTpib3RoOy1tcy1hbmltYXRpb24tZmlsbC1tb2RlOmJvdGg7LW8tYW5pbWF0aW9uLWZpbGwtbW9kZTpib3RoO2FuaW1hdGlvbi1maWxsLW1vZGU6Ym90aDstd2Via2l0LWFuaW1hdGlvbi1kdXJhdGlvbjouNXM7LW1vei1hbmltYXRpb24tZHVyYXRpb246LjVzOy1tcy1hbmltYXRpb24tZHVyYXRpb246LjVzOy1vLWFuaW1hdGlvbi1kdXJhdGlvbjouNXM7YW5pbWF0aW9uLWR1cmF0aW9uOi41c31ALXdlYmtpdC1rZXlmcmFtZXMgZmxpcEluVXB7MC4wMDAxJXstd2Via2l0LXRyYW5zZm9ybTpwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlWCgtOTBkZWcpO29wYWNpdHk6MH00MCV7LXdlYmtpdC10cmFuc2Zvcm06cGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZVgoNWRlZyl9NzAley13ZWJraXQtdHJhbnNmb3JtOnBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGVYKC01ZGVnKX0xMDAley13ZWJraXQtdHJhbnNmb3JtOnBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGVYKDApO29wYWNpdHk6MX19QC1tb3ota2V5ZnJhbWVzIGZsaXBJblVwezAuMDAwMSV7dHJhbnNmb3JtOnBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGVYKC05MGRlZyk7b3BhY2l0eTowfTQwJXt0cmFuc2Zvcm06cGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZVgoNWRlZyl9NzAle3RyYW5zZm9ybTpwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlWCgtNWRlZyl9MTAwJXt0cmFuc2Zvcm06cGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZVgoMCk7b3BhY2l0eToxfX1ALW8ta2V5ZnJhbWVzIGZsaXBJblVwezAuMDAwMSV7LW8tdHJhbnNmb3JtOnBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGVYKC05MGRlZyk7b3BhY2l0eTowfTQwJXstby10cmFuc2Zvcm06cGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZVgoNWRlZyl9NzAley1vLXRyYW5zZm9ybTpwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlWCgtNWRlZyl9MTAwJXstby10cmFuc2Zvcm06cGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZVgoMCk7b3BhY2l0eToxfX1Aa2V5ZnJhbWVzIGZsaXBJblVwezAuMDAwMSV7dHJhbnNmb3JtOnBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGVYKC05MGRlZyk7b3BhY2l0eTowfTQwJXt0cmFuc2Zvcm06cGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZVgoNWRlZyl9NzAle3RyYW5zZm9ybTpwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlWCgtNWRlZyl9MTAwJXt0cmFuc2Zvcm06cGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZVgoMCk7b3BhY2l0eToxfX1ALXdlYmtpdC1rZXlmcmFtZXMgZmxpcEluUmlnaHR7MC4wMDAxJXstd2Via2l0LXRyYW5zZm9ybTpwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlWSgtOTBkZWcpO29wYWNpdHk6MH00MCV7LXdlYmtpdC10cmFuc2Zvcm06cGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZVkoNWRlZyl9NzAley13ZWJraXQtdHJhbnNmb3JtOnBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGVZKC01ZGVnKX0xMDAley13ZWJraXQtdHJhbnNmb3JtOnBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGVZKDApO29wYWNpdHk6MX19QC1tb3ota2V5ZnJhbWVzIGZsaXBJblJpZ2h0ezAuMDAwMSV7dHJhbnNmb3JtOnBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGVZKC05MGRlZyk7b3BhY2l0eTowfTQwJXt0cmFuc2Zvcm06cGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZVkoNWRlZyl9NzAle3RyYW5zZm9ybTpwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlWSgtNWRlZyl9MTAwJXt0cmFuc2Zvcm06cGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZVkoMCk7b3BhY2l0eToxfX1ALW8ta2V5ZnJhbWVzIGZsaXBJblJpZ2h0ezAuMDAwMSV7LW8tdHJhbnNmb3JtOnBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGVZKC05MGRlZyk7b3BhY2l0eTowfTQwJXstby10cmFuc2Zvcm06cGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZVkoNWRlZyl9NzAley1vLXRyYW5zZm9ybTpwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlWSgtNWRlZyl9MTAwJXstby10cmFuc2Zvcm06cGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZVkoMCk7b3BhY2l0eToxfX1Aa2V5ZnJhbWVzIGZsaXBJblJpZ2h0ezAuMDAwMSV7dHJhbnNmb3JtOnBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGVZKC05MGRlZyk7b3BhY2l0eTowfTQwJXt0cmFuc2Zvcm06cGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZVkoNWRlZyl9NzAle3RyYW5zZm9ybTpwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlWSgtNWRlZyl9MTAwJXt0cmFuc2Zvcm06cGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZVkoMCk7b3BhY2l0eToxfX0uZmxpcEluey13ZWJraXQtYmFja2ZhY2UtdmlzaWJpbGl0eTp2aXNpYmxlICFpbXBvcnRhbnQ7LW1vei1iYWNrZmFjZS12aXNpYmlsaXR5OnZpc2libGUgIWltcG9ydGFudDstby1iYWNrZmFjZS12aXNpYmlsaXR5OnZpc2libGUgIWltcG9ydGFudDtiYWNrZmFjZS12aXNpYmlsaXR5OnZpc2libGUgIWltcG9ydGFudH0uZmxpcEluLnNvdXRoLC5mbGlwSW4ubm9ydGh7LXdlYmtpdC1hbmltYXRpb24tbmFtZTpmbGlwSW5VcDstbW96LWFuaW1hdGlvbi1uYW1lOmZsaXBJblVwOy1vLWFuaW1hdGlvbi1uYW1lOmZsaXBJblVwO2FuaW1hdGlvbi1uYW1lOmZsaXBJblVwfS5mbGlwSW4ud2VzdCwuZmxpcEluLmVhc3R7LXdlYmtpdC1hbmltYXRpb24tbmFtZTpmbGlwSW5SaWdodDstbW96LWFuaW1hdGlvbi1uYW1lOmZsaXBJblJpZ2h0Oy1vLWFuaW1hdGlvbi1uYW1lOmZsaXBJblJpZ2h0O2FuaW1hdGlvbi1uYW1lOmZsaXBJblJpZ2h0fUAtd2Via2l0LWtleWZyYW1lcyBmYWRlSW57MHtvcGFjaXR5OjB9MTAwJXtvcGFjaXR5OjF9fUAtbW96LWtleWZyYW1lcyBmYWRlSW57MHtvcGFjaXR5OjB9MTAwJXtvcGFjaXR5OjF9fUAtby1rZXlmcmFtZXMgZmFkZUluezB7b3BhY2l0eTowfTEwMCV7b3BhY2l0eToxfX1Aa2V5ZnJhbWVzIGZhZGVJbnswe29wYWNpdHk6MH0xMDAle29wYWNpdHk6MX19LmZhZGVJbnstd2Via2l0LWFuaW1hdGlvbi1uYW1lOmZhZGVJbjstbW96LWFuaW1hdGlvbi1uYW1lOmZhZGVJbjstby1hbmltYXRpb24tbmFtZTpmYWRlSW47YW5pbWF0aW9uLW5hbWU6ZmFkZUlufQovKiogL2Nzcy9yZXZlYWwuY3NzICoqLwoucmV2ZWFsLW1vZGFsLWJnIHsgcG9zaXRpb246Zml4ZWQ7IGhlaWdodDoxMDAlOyB3aWR0aDoxMDAlOyBiYWNrZ3JvdW5kOiMwMDA7IGJhY2tncm91bmQ6cmdiYSgwLDAsMCwuOCk7IHotaW5kZXg6MTAwMDAwOTsgZGlzcGxheTpub25lOyB0b3A6MDsgbGVmdDowOyB9IC5yZXZlYWwtbW9kYWwgeyB2aXNpYmlsaXR5OmhpZGRlbjsgdG9wOi0xMDAwcHg7IHdpZHRoOm1pbig1MjBweCwgOTB2dyk7IGJhY2tncm91bmQ6I2VlZSB1cmwoL2ltYWdlcy9tb2RhbC1nbG9zcy5wbmcpIG5vLXJlcGVhdCAtMjAwcHggLTgwcHg7IGJhY2tncm91bmQtY29sb3I6I2VlZTsgcG9zaXRpb246YWJzb2x1dGU7IGxlZnQ6MDsgcmlnaHQ6MDsgbWFyZ2luOmF1dG87IHotaW5kZXg6MTAwMDAyMDsgcGFkZGluZzozMHB4IDQwcHggMzRweDsgLW1vei1ib3JkZXItcmFkaXVzOjVweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjVweDsgYm9yZGVyLXJhZGl1czo1cHg7IC1tb3otYm94LXNoYWRvdzowIDAgMTBweCByZ2JhKDAsMCwwLC40KTsgLXdlYmtpdC1ib3gtc2hhZG93OjAgMCAxMHB4IHJnYmEoMCwwLDAsLjQpOyAtYm94LXNoYWRvdzowIDAgMTBweCByZ2JhKDAsMCwwLC40KTsgfSAucmV2ZWFsLW1vZGVsLWRvLW5vdC1zaG93IHsgdmlzaWJpbGl0eTpoaWRkZW47IHRvcDoxMDBweDsgd2lkdGg6NTIwcHg7IHBvc2l0aW9uOmFic29sdXRlOyB6LWluZGV4OjEwMDAwMjA7IHBhZGRpbmc6MzBweCA0MHB4IDM0cHg7IGJhY2tncm91bmQ6bm9uZTsgLW1vei1ib3JkZXItcmFkaXVzOjBweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjBweDsgYm9yZGVyLXJhZGl1czowcHg7IC1tb3otYm94LXNoYWRvdzpub25lOyAtd2Via2l0LWJveC1zaGFkb3c6bm9uZTsgLWJveC1zaGFkb3c6bm9uZTsgfSAuLS1pcy1wb3B1cC1maXhlZC1jb250YWluZXIgeyBwb3NpdGlvbjpmaXhlZDsgdG9wOjA7IGxlZnQ6MDsgcmlnaHQ6MDsgei1pbmRleDoxMDAwMDAwMDA7IH0gLnJldmVhbC1tb2RhbC5zbWFsbCB7IHdpZHRoOjIwMHB4O30gLnJldmVhbC1tb2RhbC5tZWRpdW0geyB3aWR0aDo0MDBweDt9IC5yZXZlYWwtbW9kYWwubGFyZ2UgeyB3aWR0aDo2MDBweDt9IC5yZXZlYWwtbW9kYWwueGxhcmdlIHsgd2lkdGg6ODAwcHg7fSAucmV2ZWFsLW1vZGFsIC5jbG9zZS1yZXZlYWwtbW9kYWwgeyBmb250LXNpemU6MS4zNzVyZW0gOyBsaW5lLWhlaWdodDouNTsgcG9zaXRpb246YWJzb2x1dGU7IHRvcDo5cHg7IHJpZ2h0OjEwcHg7IGNvbG9yOiM0NDQ7IHRleHQtc2hhZG93OjAgLTFweCAxcHggcmJnYSgwLDAsMCwuNik7IGZvbnQtd2VpZ2h0OmJvbGQ7IGN1cnNvcjpwb2ludGVyOyB9IC5jbG9zZS1yZXZlYWwtbW9kYWwubW9kYWwtY2xvc2UtaGlkZSB7IGRpc3BsYXk6bm9uZTsgfSAucmV2ZWFsLW1vZGFsIHNwYW4geyBwYWRkaW5nOjBweDsgZm9udC1zaXplOjEuNXJlbSA7IG1hcmdpbi1ib3R0b206MTBweDsgY29sb3I6IzQxNDE0MTsgfSAucmV2ZWFsLW1vZGFsIHNwYW4uc3VjY2VzcyB7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvY2lyY2xlLWdyZWVuLTI0LW5zLnBuZykgbm8tcmVwZWF0IHNjcm9sbCBsZWZ0IGNlbnRlciB0cmFuc3BhcmVudDsgfSAucmV2ZWFsLW1vZGFsIHNwYW4uZmFpbCB7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvY2lyY2xlLXJlZC0yNC1ucy5wbmcpIG5vLXJlcGVhdCBzY3JvbGwgbGVmdCBjZW50ZXIgdHJhbnNwYXJlbnQ7IHBhZGRpbmctbGVmdDozMHB4OyB9IC5yZXZlYWwtbW9kYWwgcCB7IG1hcmdpbjowIDsgZm9udC1zaXplOjAuOTM4cmVtIDsgY29sb3I6IzQxNDE0MTsgfSAucG9wdXAtZG9tLW5vd3JhcHBlciB7IGJhY2tncm91bmQ6bm9uZSAhaW1wb3J0YW50OyBib3gtc2hhZG93Om5vbmU7IH0gQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LWRldmljZS13aWR0aDo0ODBweCkgeyAucmV2ZWFsLW1vZGFsLCAucmV2ZWFsLW1vZGVsLWRvLW5vdC1zaG93IHsgdG9wOjEwcHg7IHotaW5kZXg6MTAwMDAyMDsgcGFkZGluZzowLjVyZW07IHBhZGRpbmctdG9wOjJyZW07IH0gLnJldmVhbC1tb2RhbCAuY2xvc2UtcmV2ZWFsLW1vZGFsIHsgZm9udC1zaXplOjEuODc1cmVtIDsgbGluZS1oZWlnaHQ6MC42OyByaWdodDowLjVyZW07IHRvcDowLjVyZW07IHotaW5kZXg6MTsgfSB9IC5lbWFpbC1jb25zZW50LWJveCA6aXMoLnRpdGxlLXR4dCwgcCl7IG1hcmdpbi1sZWZ0OjA7IHBhZGRpbmc6MDsgY29sb3I6IzQxNDE0MTsgfSAuZW1haWwtY29uc2VudC1ib3h7IGJhY2tncm91bmQtY29sb3I6I2VlZTsgY29sb3I6IzQxNDE0MTsgfSAuZW1haWwtY29uc2VudC1ib3ggLmljb24tdGl0bGV7IHRleHQtYWxpZ246Y2VudGVyOyB9Ci8qKiAvY3NzL21haW4uY3NzICoqLwouLWxlZnQge2Zsb2F0OmxlZnQhaW1wb3J0YW50O30gLi1yaWdodCB7ZmxvYXQ6cmlnaHR9IC4tc21hbGwge2ZvbnQtc2l6ZTouOGVtO21hcmdpbi1ib3R0b206MS44NzVlbTtsaW5lLWhlaWdodDoxLjg3NWVtIWltcG9ydGFudDt9IC4tbGFyZ2Uge2ZvbnQtc2l6ZToxLjJlbTtsaW5lLWhlaWdodDoyLjVlbTttYXJnaW4tYm90dG9tOjEuMjVlbSFpbXBvcnRhbnQ7fSAuLWhpZGUge2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnQ7fSAuLXF1aWV0IHtjb2xvcjojNjY2IWltcG9ydGFudDt9IC4tbG91ZCB7Y29sb3I6IzA1MTQxZiFpbXBvcnRhbnQ7fSAuLWhpZ2hsaWdodCB7YmFja2dyb3VuZDojZmYwIWltcG9ydGFudDt9IC4tYWRkZWQge2JhY2tncm91bmQ6IzA2MDtjb2xvcjojZmZmIWltcG9ydGFudDt9IC4tcmVtb3ZlZCB7YmFja2dyb3VuZDojOTAwO2NvbG9yOiNmZmYhaW1wb3J0YW50O30gLi1wdXNoLWZpcnN0IHttYXJnaW4tbGVmdDowO3BhZGRpbmctbGVmdDowIWltcG9ydGFudDt9IC4tcHVzaC1sYXN0IHttYXJnaW4tcmlnaHQ6MDtwYWRkaW5nLXJpZ2h0OjAhaW1wb3J0YW50O30gLi1wdXNoLWxlZnQge21hcmdpbi10b3A6MDtwYWRkaW5nLXRvcDowIWltcG9ydGFudDt9IC4tcHVzaC1ib3R0b20ge21hcmdpbi1ib3R0b206MDtwYWRkaW5nLWJvdHRvbTowIWltcG9ydGFudDt9IC4tbm9ib3JkZXIge2JvcmRlcjowIWltcG9ydGFudDt9IC4tbm9kZWNvcmF0aW9uLCAuLW5vLXRleHQtZGVjb3JhdGlvbiwgLi1ub3RleHQtZGVjb3JhdGlvbiB7dGV4dC1kZWNvcmF0aW9uOm5vbmUhaW1wb3J0YW50O30gLi10ZXh0LXVwcGVyY2FzZSwgLi11cHBlcmNhc2UsIC50ZXh0LXVwcGVyY2FzZSB7dGV4dC10cmFuc2Zvcm06dmFyKC0tdHh0LXVwcGVyKTt9IC4tdGV4dC1sb3dlcmNhc2UsIC4tbG93ZXJjYXNlIHt0ZXh0LXRyYW5zZm9ybTpsb3dlcmNhc2UhaW1wb3J0YW50O30gLi1oaWRkZW4geyBkaXNwbGF5Om5vbmU7IH0gLi10ZXh0LWJvbGQsLmJvbGR7Zm9udC13ZWlnaHQ6Ym9sZCFpbXBvcnRhbnQ7fSAuLXRleHQtbm9ybWFsLC5ub3JtYWx7Zm9udC13ZWlnaHQ6bm9ybWFsIWltcG9ydGFudDt9IC4tYWxpZ24tdG9wIHt2ZXJ0aWNhbC1hbGlnbjp0b3AhaW1wb3J0YW50O30gLi1hbGlnbi1taWRkbGUge3ZlcnRpY2FsLWFsaWduOm1pZGRsZSFpbXBvcnRhbnQ7fSAuLWxpbmUtaDF7IGxpbmUtaGVpZ2h0OjFlbTsgfSAuLWxpbmUtaDJ7IGxpbmUtaGVpZ2h0OjJlbTsgfSAuLWJvdHRvbTB7IGJvdHRvbTowOyB9IC4tYm90dG9tMC1pbXBvcnRhbnR7IGJvdHRvbTowIWltcG9ydGFudDsgfSAuUG9yc2NoZTJ7IGNsZWFyOmJvdGg7IH0gLmJsYWNrLXRleHQgeyBjb2xvcjojMDUxNDFmOyB9IDo6cGxhY2Vob2xkZXIgeyBwYWRkaW5nLXRvcDoxcHg7IGNvbG9yOiNhOWE5YTk7IG9wYWNpdHk6MTsgfSA6LW1zLWlucHV0LXBsYWNlaG9sZGVyIHsgY29sb3I6I2E5YTlhOTsgfSA6Oi1tcy1pbnB1dC1wbGFjZWhvbGRlciB7IGNvbG9yOiNhOWE5YTk7IH0gI2NhclRpdGxlIC5mYS1jaGV2cm9uLXJpZ2h0LCAuU3BlY2lmaWNhdGlvbnMgLmZhLWNoZXZyb24tcmlnaHQgeyBib3JkZXItcmFkaXVzOjMwcHg7IHdpZHRoOjIwcHg7IGhlaWdodDoyNXB4OyBwYWRkaW5nLXRvcDo0cHg7IHBhZGRpbmctbGVmdDo5cHg7IGZsb2F0OmxlZnQ7IG1hcmdpbi10b3A6OHB4OyBmb250LXNpemU6MS4zNzVyZW0gOyBib3JkZXI6MXB4IHNvbGlkICMwNTE0MWY7IGJhY2tncm91bmQtY29sb3I6I2ZmZmZmZjsgY29sb3I6IzA1MTQxZiA7IG1hcmdpbi1yaWdodDoxMHB4OyB9IC5TcGVjaWZpY2F0aW9ucyAuZmEtY2hldnJvbi1yaWdodHsgbWFyZ2luLXRvcDoxcHg7IH0gI2NhclRpdGxlIC5tYWtlTW9kZWxZZWFyeyBmb250LXNpemU6MS41NjNyZW0gOyB9ICNjYXJUaXRsZSAuZGVhbGVyTGNhdGlvbkNhclRpdGxlIHsgZm9udC13ZWlnaHQ6bm9ybWFsOyBjb2xvcjojOWM5YzljOyBmb250LXNpemU6MS4xMjVyZW0gOyBsZXR0ZXItc3BhY2luZzotMXB4OyB9IC5jYXJUaXRsZSAuZmEtY2hldnJvbi1yaWdodHsgYm9yZGVyLXJhZGl1czozMHB4OyB3aWR0aDoyMHB4OyBoZWlnaHQ6MjVweDsgcGFkZGluZy10b3A6NHB4OyBwYWRkaW5nLWxlZnQ6OXB4OyBmbG9hdDpsZWZ0OyBtYXJnaW4tdG9wOjhweDsgZm9udC1zaXplOjEuMzc1cmVtIDsgYm9yZGVyOjFweCBzb2xpZCAjMDUxNDFmOyBiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmY7IGNvbG9yOiMwNTE0MWYgOyBtYXJnaW4tcmlnaHQ6MTBweDsgfSAuY2FyVGl0bGUgLm1ha2VNb2RlbFllYXJ7IGZvbnQtc2l6ZToxLjQzOHJlbSA7IH0gLmNhclRpdGxlIC5kZWFsZXJMY2F0aW9uQ2FyVGl0bGUgeyBmb250LXdlaWdodDpub3JtYWw7IGNvbG9yOiM5YzljOWM7IGZvbnQtc2l6ZTowLjkzOHJlbSA7IGxldHRlci1zcGFjaW5nOi0xcHg7IH0gI1NlYXJjaFRpdGxlIC5mYS1jaGV2cm9uLXJpZ2h0eyBib3JkZXItcmFkaXVzOjMwcHg7IHdpZHRoOjMxcHg7IGhlaWdodDo0MXB4OyBwYWRkaW5nLXRvcDo1cHg7IHBhZGRpbmctbGVmdDoxNHB4OyBmbG9hdDpsZWZ0OyBtYXJnaW4tdG9wOjhweDsgZm9udC1zaXplOjIuMTg4cmVtIDsgYm9yZGVyOjFweCBzb2xpZCAjMDUxNDFmOyBiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmY7IGNvbG9yOiMwNTE0MWYgOyBtYXJnaW4tcmlnaHQ6MTBweDsgfSAjU2VhcmNoVGl0bGUgLmRlYWxlckxjYXRpb25DYXJUaXRsZSB7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgY29sb3I6IzljOWM5YzsgZm9udC1zaXplOjFyZW0gOyBsZXR0ZXItc3BhY2luZzotMXB4OyBtYXJnaW4tbGVmdDo0NXB4OyBkaXNwbGF5OmJsb2NrOyB9IC51aS1tdWx0aXNlbGVjdC1jaGVja2JveGVzIGxhYmVsIGlucHV0IHsgcG9zaXRpb246cmVsYXRpdmU7IHRvcDoxcHg7IG1hcmdpbi1yaWdodDo4cHg7IGhlaWdodDoxM3B4OyB9IC51aS13aWRnZXQsLnVpLXN0YXRlLWhvdmVyLCAudWktd2lkZ2V0LWNvbnRlbnQgLnVpLXN0YXRlLWhvdmVyLCAudWktd2lkZ2V0LWhlYWRlciAudWktc3RhdGUtaG92ZXIsIC51aS1zdGF0ZS1mb2N1cywgLnVpLXdpZGdldC1jb250ZW50IC51aS1zdGF0ZS1mb2N1cywgLnVpLXdpZGdldC1oZWFkZXIgLnVpLXN0YXRlLWZvY3VzLCAudWktc3RhdGUtZGVmYXVsdCwgLnVpLXdpZGdldC1jb250ZW50IC51aS1zdGF0ZS1kZWZhdWx0LCAudWktd2lkZ2V0LWhlYWRlciAudWktc3RhdGUtZGVmYXVsdHsgYmFja2dyb3VuZDojZmZmIWltcG9ydGFudDsgY29sb3I6IzU1NTsgZm9udC1zaXplOjAuOTM4cmVtICFpbXBvcnRhbnQ7IH0gLnVpLXN0YXRlLWRlZmF1bHQsIC51aS13aWRnZXQtY29udGVudCAudWktc3RhdGUtZGVmYXVsdCwgLnVpLXdpZGdldC1oZWFkZXIgLnVpLXN0YXRlLWRlZmF1bHR7IHBhZGRpbmc6OHB4IDEwcHghaW1wb3J0YW50OyB9IC51aS1tdWx0aXNlbGVjdC1jaGVja2JveGVzIGxpeyBmb250LXNpemU6MC45MzhyZW0gIWltcG9ydGFudDsgfSAudWktY29ybmVyLWFsbHsgYm9yZGVyLXJhZGl1czowcHghaW1wb3J0YW50OyB9IC4tY29sbGFwc2V7IGJvcmRlci1jb2xsYXBzZTpjb2xsYXBzZTsgfSAuLWxpeyBsaXN0LXN0eWxlLXR5cGU6bm9uZTsgfSAuLW5vLXNoYWRvdywgLi1zaGFkb3cwLCAuLW5vc2hhZG93eyBib3gtc2hhZG93Om5vbmUhaW1wb3J0YW50OyB9IC4tdW5kZXJsaW5leyB0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lIWltcG9ydGFudDsgfSAuLXRvcDB7IHRvcDowOyB9IC4tdGV4dC1sZWZ0e3RleHQtYWxpZ246bGVmdCFpbXBvcnRhbnQ7fSAuLXRleHQtcmlnaHR7dGV4dC1hbGlnbjpyaWdodCFpbXBvcnRhbnQ7fSAuLXRleHQtY2VudGVye3RleHQtYWxpZ246Y2VudGVyIWltcG9ydGFudDt9IC4tdGV4dC1yZWQsIC4tcmVkLXRleHR7Y29sb3I6cmVkIWltcG9ydGFudDt9IC4tYmxvY2t7ZGlzcGxheTpibG9jayFpbXBvcnRhbnQ7fSAuLWlubGluZS1ibG9ja3tkaXNwbGF5OmlubGluZS1ibG9jayFpbXBvcnRhbnQ7fSAuLW5vbmUsIC4taGlkZGVuLCAuLWhpZGRlIHtkaXNwbGF5Om5vbmUhaW1wb3J0YW50O30gLi1pbmxpbmUge2Rpc3BsYXk6aW5saW5lIWltcG9ydGFudDt9IC4tY29sb3IxIHsgY29sb3I6IzU3NTc1NyFpbXBvcnRhbnQ7fSAuLXRpdGxlMSB7IGZvbnQtc2l6ZToxLjQzOHJlbSAhaW1wb3J0YW50OyBmb250LWNvbG9yOiMwNTE0MWYgIWltcG9ydGFudDsgdGV4dC1kZWNvcmF0aW9uOm5vbmUhaW1wb3J0YW50OyB9IC4taW5wdXQgeyBmb250LXNpemU6MC44MTNyZW0gOyBsaW5lLWhlaWdodDoxNXB4OyB2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7IGhlaWdodDozMnB4OyBjb2xvcjojNDA0MDQwOyBwYWRkaW5nOjBweCA2cHghaW1wb3J0YW50OyBtYXJnaW46MHB4OyBvdXRsaW5lOm5vbmU7IG1pbi1oZWlnaHQ6MjBweDsgYm9yZGVyOjFweCBzb2xpZCAjY2VkNGRhOyBib3JkZXItcmFkaXVzOi4yNXJlbTsgdHJhbnNpdGlvbjpib3JkZXItY29sb3IgLjE1cyBlYXNlLWluLW91dCxib3gtc2hhZG93IC4xNXMgZWFzZS1pbi1vdXQ7IH0gLi1pbnB1dDpmb2N1cywgLi1pbnB1dDpob3ZlcnsgYm9yZGVyLWNvbG9yOiM4MGJkZmYgIWltcG9ydGFudDsgYm94LXNoYWRvdzowIDAgMCAwLjJyZW0gcmdiYSgwLDEyMywyNTUsLjI1KTsgfSAuLXBvc2l0aW9uLXN0YXRpYywgLi1wb3Mtc3RhdGljLCAuLXBvcy1zdGF0IHtwb3NpdGlvbjpzdGF0aWMhaW1wb3J0YW50O30gLi1wb3NpdGlvbi1hYnNvbHV0ZSwgLi1wb3MtYWJzb2x1dGUsIC4tcG9zLWFicyB7cG9zaXRpb246YWJzb2x1dGUhaW1wb3J0YW50O30gLi1wb3NpdGlvbi1maXhlZCwgLi1wb3MtZml4ZWQsIC4tcG9zLWZpeCB7cG9zaXRpb246Zml4ZWQhaW1wb3J0YW50O30gLi1wb3NpdGlvbi1yZWxhdGl2ZSwgLi1wb3MtcmVsYXRpdmUsIC4tcG9zLXJlbCB7cG9zaXRpb246cmVsYXRpdmUhaW1wb3J0YW50O30gLi1wb3NpdGlvbi1pbmhlcml0LCAuLXBvcy1pbmhlcml0LCAuLXBvcy1pbmgge3Bvc2l0aW9uOmluaGVyaXQhaW1wb3J0YW50O30gLWxoLTEtMywgLWxpbmUtaGVpZ2h0LTEtM3sgbGluZS1oZWlnaHQ6MS4zOyB9IC1saC0yMHsgbGluZS1oZWlnaHQ6MjBweDsgfSAuLWVycm9yLCAuLWFsZXJ0LCAuLW5vdGljZSwgLi1zdWNjZXNzLCAuLWluZm8ge3BhZGRpbmc6MC44ZW07bWFyZ2luLWJvdHRvbToxZW07Ym9yZGVyOjJweCBzb2xpZCAjZGRkIWltcG9ydGFudDt9IC4tZXJyb3IsIC4tYWxlcnQge2JhY2tncm91bmQ6I2ZiZTNlNDtjb2xvcjojOGExZjExO2JvcmRlci1jb2xvcjojZmJjMmM0IWltcG9ydGFudDt9IC4tbm90aWNlIHtiYWNrZ3JvdW5kOiNmZmY2YmY7Y29sb3I6IzUxNDcyMTtib3JkZXItY29sb3I6I2ZmZDMyNCFpbXBvcnRhbnQ7fSAuLXN1Y2Nlc3Mge2JhY2tncm91bmQ6I2U2ZWZjMjtjb2xvcjojMjY0NDA5O2JvcmRlci1jb2xvcjojYzZkODgwIWltcG9ydGFudDt9IC4taW5mbyB7YmFja2dyb3VuZDojZDVlZGY4O2NvbG9yOiMyMDU3OTE7Ym9yZGVyLWNvbG9yOiM5MmNhZTQhaW1wb3J0YW50O30gLi1lcnJvciBhLCAuYWxlcnQgYSB7Y29sb3I6IzhhMWYxMSFpbXBvcnRhbnQ7fSAuLW5vdGljZSBhIHtjb2xvcjojNTE0NzIxIWltcG9ydGFudDt9IC4tc3VjY2VzcyBhIHtjb2xvcjojMjY0NDA5IWltcG9ydGFudDt9IC4taW5mbyBhIHtjb2xvcjojMjA1NzkxIWltcG9ydGFudDt9IC4tYm94IHtwYWRkaW5nOjEuNWVtO21hcmdpbi1ib3R0b206MS41ZW07YmFja2dyb3VuZDojZTVlQ2Y5IWltcG9ydGFudDt9IC1ociB7YmFja2dyb3VuZDojZGRkZGRkO2NvbG9yOiNkZGRkZGQ7Y2xlYXI6Ym90aDtmbG9hdDpub25lO3dpZHRoOjEwMCU7aGVpZ2h0OjFweDttYXJnaW46MCAwIDE3cHg7Ym9yZGVyOm5vbmUhaW1wb3J0YW50O30gLXNwYWNlIHtiYWNrZ3JvdW5kOiNmZmY7Y29sb3I6I2ZmZjt2aXNpYmlsaXR5OmhpZGRlbjtjbGVhcjpib3RoO2Zsb2F0Om5vbmU7d2lkdGg6MTAwJTtoZWlnaHQ6MXB4O21hcmdpbjowIDAgMTdweDtib3JkZXI6bm9uZSFpbXBvcnRhbnQ7fSAuLWNsZWFyZml4OmFmdGVyIHtjb250ZW50OiJcMDAyMCI7ZGlzcGxheTpibG9jaztoZWlnaHQ6MDtjbGVhcjpib3RoO3Zpc2liaWxpdHk6aGlkZGVuO292ZXJmbG93OmhpZGRlbiFpbXBvcnRhbnQ7fSAuLWNsZWFyZml4e2Rpc3BsYXk6YmxvY2shaW1wb3J0YW50O30gLi1jbGVhciB7Y2xlYXI6Ym90aCFpbXBvcnRhbnQ7fSAuaW52aXNpYmxlIHt2aXNpYmlsaXR5OmhpZGRlbjt9IC5jbGVhcmZpeDphZnRlciB7Y29udGVudDoiIjsgZGlzcGxheTp0YWJsZTsgY2xlYXI6Ym90aDt9IC4tb3ZlcmZsb3ctaGlkZGVuIHtvdmVyZmxvdzpoaWRkZW4haW1wb3J0YW50O30gLi13NSB7d2lkdGg6NXB4IWltcG9ydGFudDt9IC4tdzEwIHt3aWR0aDoxMHB4IWltcG9ydGFudDt9IC4tdzE1IHt3aWR0aDoxNXB4IWltcG9ydGFudDt9IC4tdzE4IHt3aWR0aDoxOHB4IWltcG9ydGFudDt9IC4tdzIwIHt3aWR0aDoyMHB4IWltcG9ydGFudDt9IC4tdzI1IHt3aWR0aDoyNXB4IWltcG9ydGFudDt9IC4tdzMwIHt3aWR0aDozMHB4IWltcG9ydGFudDt9IC4tdzM1IHt3aWR0aDozNXB4IWltcG9ydGFudDt9IC4tdzQwIHt3aWR0aDo0MHB4IWltcG9ydGFudDt9IC4tdzQ1IHt3aWR0aDo0NXB4IWltcG9ydGFudDt9IC4tdzUwIHt3aWR0aDo1MHB4IWltcG9ydGFudDt9IC4tdzU1IHt3aWR0aDo1NXB4IWltcG9ydGFudDt9IC4tdzYwIHt3aWR0aDo2MHB4IWltcG9ydGFudDt9IC4tdzY1IHt3aWR0aDo2NXB4IWltcG9ydGFudDt9IC4tdzcwIHt3aWR0aDo3MHB4IWltcG9ydGFudDt9IC4tdzczIHt3aWR0aDo3M3B4IWltcG9ydGFudDt9IC4tdzc1IHt3aWR0aDo3NXB4IWltcG9ydGFudDt9IC4tdzgwIHt3aWR0aDo4MHB4IWltcG9ydGFudDt9IC4tdzg1IHt3aWR0aDo4NXB4IWltcG9ydGFudDt9IC4tdzg4IHt3aWR0aDo4OHB4IWltcG9ydGFudDt9IC4tdzkwIHt3aWR0aDo5MHB4IWltcG9ydGFudDt9IC4tdzk1IHt3aWR0aDo5NXB4IWltcG9ydGFudDt9IC4tdzEwMCB7d2lkdGg6MTAwcHghaW1wb3J0YW50O30gLi13MTEwIHt3aWR0aDoxMTBweCFpbXBvcnRhbnQ7fSAuLXcxMjAge3dpZHRoOjEyMHB4IWltcG9ydGFudDt9IC4tdzEyNSB7d2lkdGg6MTI1cHghaW1wb3J0YW50O30gLi13MTMwIHt3aWR0aDoxMzBweCFpbXBvcnRhbnQ7fSAuLXcxMzUge3dpZHRoOjEzNXB4IWltcG9ydGFudDt9IC4tdzE0MCB7d2lkdGg6MTQwcHghaW1wb3J0YW50O30gLi13MTQzIHt3aWR0aDoxNDNweCFpbXBvcnRhbnQ7fSAuLXcxNDUge3dpZHRoOjE0NXB4IWltcG9ydGFudDt9IC4tdzE1MCB7d2lkdGg6MTUwcHghaW1wb3J0YW50O30gLi13MTcwIHt3aWR0aDoxODBweCFpbXBvcnRhbnQ7fSAuLXcxODAge3dpZHRoOjE4MHB4IWltcG9ydGFudDt9IC4tdzE4NSB7d2lkdGg6MTg1cHghaW1wb3J0YW50O30gLi13MTkwIHt3aWR0aDoxOTBweCFpbXBvcnRhbnQ7fSAuLXcyMDAge3dpZHRoOjIwMHB4IWltcG9ydGFudDt9IC4tdzIxMCB7d2lkdGg6MjEwcHghaW1wb3J0YW50O30gLi13MjE1IHt3aWR0aDoyMTVweCFpbXBvcnRhbnQ7fSAuLXcyMjAge3dpZHRoOjIyMHB4IWltcG9ydGFudDt9IC4tdzIzMCB7d2lkdGg6MjMwcHghaW1wb3J0YW50O30gLi13MjQwIHt3aWR0aDoyNDBweCFpbXBvcnRhbnQ7fSAuLXcyNTAge3dpZHRoOjI1MHB4IWltcG9ydGFudDt9IC4tdzI1NSB7d2lkdGg6MjU1cHghaW1wb3J0YW50O30gLi13MjYwIHt3aWR0aDoyNjBweCFpbXBvcnRhbnQ7fSAuLXcyNzAge3dpZHRoOjI3MHB4IWltcG9ydGFudDt9IC4tdzI3NSB7d2lkdGg6Mjc1cHghaW1wb3J0YW50O30gLi13MjgwIHt3aWR0aDoyODBweCFpbXBvcnRhbnQ7fSAuLXcyOTAge3dpZHRoOjI5MHB4IWltcG9ydGFudDt9IC4tdzMwMCB7d2lkdGg6MzAwcHghaW1wb3J0YW50O30gLi13MzE1IHt3aWR0aDozMTVweCFpbXBvcnRhbnQ7fSAuLXczMjAge3dpZHRoOjMyMHB4IWltcG9ydGFudDt9IC4tdzMyNSB7d2lkdGg6MzI1cHghaW1wb3J0YW50O30gLi13MzUwIHt3aWR0aDozNTBweCFpbXBvcnRhbnQ7fSAuLXc0MDAge3dpZHRoOjQwMHB4IWltcG9ydGFudDt9IC4tdzQ1MCB7d2lkdGg6NDUwcHghaW1wb3J0YW50O30gLi13NDYwIHt3aWR0aDo0NTBweCFpbXBvcnRhbnQ7fSAuLXc1MDAge3dpZHRoOjUwMHB4IWltcG9ydGFudDt9IC4tdzYzMCB7d2lkdGg6NjMwcHghaW1wb3J0YW50O30gLi13NjIwIHt3aWR0aDo2MjBweCFpbXBvcnRhbnQ7fSAuLXc2MjUge3dpZHRoOjYyNXB4IWltcG9ydGFudDt9IC4tdzY3NSB7d2lkdGg6Njc1cHghaW1wb3J0YW50O30gLi13NjgwIHt3aWR0aDo2ODBweCFpbXBvcnRhbnQ7fSAuLXc2NzAge3dpZHRoOjY3MHB4IWltcG9ydGFudDt9IC4tdzcwMCB7d2lkdGg6NzAwcHghaW1wb3J0YW50O30gLi13NzIwIHt3aWR0aDo3MjBweCFpbXBvcnRhbnQ7fSAuLXc3MjUge3dpZHRoOjcyNXB4IWltcG9ydGFudDt9IC4tdzczMCB7d2lkdGg6NzMwcHghaW1wb3J0YW50O30gLi13NzUwIHt3aWR0aDo3NTBweCFpbXBvcnRhbnQ7fSAuLXc4MDAge3dpZHRoOjgwMHB4IWltcG9ydGFudDt9IC4tdzkwMCB7d2lkdGg6OTAwcHghaW1wb3J0YW50O30gLi13OTM3IHt3aWR0aDo5MzdweCFpbXBvcnRhbnQ7fSAuLXc5NDAge3dpZHRoOjk0MHB4IWltcG9ydGFudDt9IC4tdzk2MCB7d2lkdGg6OTYwcHghaW1wb3J0YW50O30gLi13OTcwIHt3aWR0aDo5NzBweCFpbXBvcnRhbnQ7fSAuLXcxMDAwIHt3aWR0aDoxMDAwcHghaW1wb3J0YW50O30gLi13NXAge3dpZHRoOjUlIWltcG9ydGFudDt9IC4tdzEwcCB7d2lkdGg6MTAlIWltcG9ydGFudDt9IC4tdzE1cCB7d2lkdGg6MjAlIWltcG9ydGFudDt9IC4tdzIwcCB7d2lkdGg6MjAlIWltcG9ydGFudDt9IC4td3EsIC4tdzI1cCB7d2lkdGg6MjUlIWltcG9ydGFudDt9IC4tdzMwcCB7d2lkdGg6MzAlIWltcG9ydGFudDt9IC4tdzM1cCB7d2lkdGg6MzUlIWltcG9ydGFudDt9IC4tdzQwcCB7d2lkdGg6NDAlIWltcG9ydGFudDt9IC4tdzQ1cCB7d2lkdGg6NDUlIWltcG9ydGFudDt9IC4td2gsLi13NTBwIHt3aWR0aDo1MCUhaW1wb3J0YW50O30gLi13NTVwIHt3aWR0aDo1NSUhaW1wb3J0YW50O30gLi13NjBwIHt3aWR0aDo2MCUhaW1wb3J0YW50O30gLi13NjVwIHt3aWR0aDo2NSUhaW1wb3J0YW50O30gLi13NzBwIHt3aWR0aDo3MCUhaW1wb3J0YW50O30gLi13NzVwIHt3aWR0aDo3NSUhaW1wb3J0YW50O30gLi13ODBwIHt3aWR0aDo4MCUhaW1wb3J0YW50O30gLi13ODVwIHt3aWR0aDo4NSUhaW1wb3J0YW50O30gLi13OTBwIHt3aWR0aDo5MCUhaW1wb3J0YW50O30gLi13OTVwIHt3aWR0aDo5NSUhaW1wb3J0YW50O30gLi13ZiwuLXcxMDBwIHt3aWR0aDoxMDAlIWltcG9ydGFudDt9IC4tbWF4LXctbm9uZSB7bWF4LXdpZHRoOm5vbmUhaW1wb3J0YW50O30gLi1oNSB7aGVpZ2h0OjVweCFpbXBvcnRhbnQ7fSAuLWg2IHtoZWlnaHQ6NnB4IWltcG9ydGFudDt9IC4taDcge2hlaWdodDo3cHghaW1wb3J0YW50O30gLi1oOCB7aGVpZ2h0OjhweCFpbXBvcnRhbnQ7fSAuLWg5IHtoZWlnaHQ6OXB4IWltcG9ydGFudDt9IC4taDEwIHtoZWlnaHQ6MTBweCFpbXBvcnRhbnQ7fSAuLWgxMSB7aGVpZ2h0OjExcHghaW1wb3J0YW50O30gLi1oMTIge2hlaWdodDoxMnB4IWltcG9ydGFudDt9IC4taDEzIHtoZWlnaHQ6MTNweCFpbXBvcnRhbnQ7fSAuLWgxNCB7aGVpZ2h0OjE0cHghaW1wb3J0YW50O30gLi1oMTUge2hlaWdodDoxNXB4IWltcG9ydGFudDt9IC4taDIwIHtoZWlnaHQ6MjBweCFpbXBvcnRhbnQ7fSAuLWgyNSB7aGVpZ2h0OjI1cHghaW1wb3J0YW50O30gLi1oMzAge2hlaWdodDozMHB4IWltcG9ydGFudDt9IC4taDMyIHtoZWlnaHQ6MzJweCFpbXBvcnRhbnQ7fSAuLWgzNSB7aGVpZ2h0OjM1cHghaW1wb3J0YW50O30gLi1oNDAge2hlaWdodDo0MHB4IWltcG9ydGFudDt9IC4taDQ1IHtoZWlnaHQ6NDVweCFpbXBvcnRhbnQ7fSAuLWg1MCB7aGVpZ2h0OjUwcHghaW1wb3J0YW50O30gLi1oNTUge2hlaWdodDo1NXB4IWltcG9ydGFudDt9IC4taDYwIHtoZWlnaHQ6NjBweCFpbXBvcnRhbnQ7fSAuLWg2NSB7aGVpZ2h0OjY1cHghaW1wb3J0YW50O30gLi1oNzAge2hlaWdodDo3MHB4IWltcG9ydGFudDt9IC4taDc1IHtoZWlnaHQ6NzVweCFpbXBvcnRhbnQ7fSAuLWg4MCB7aGVpZ2h0OjgwcHghaW1wb3J0YW50O30gLi1oODUge2hlaWdodDo4NXB4IWltcG9ydGFudDt9IC4taDkwIHtoZWlnaHQ6OTBweCFpbXBvcnRhbnQ7fSAuLWg5NSB7aGVpZ2h0Ojk1cHghaW1wb3J0YW50O30gLi1oMTAwIHtoZWlnaHQ6MTAwcHghaW1wb3J0YW50O30gLi1oMTEwIHtoZWlnaHQ6MTEwcHghaW1wb3J0YW50O30gLi1oMTIwIHtoZWlnaHQ6MTIwcHghaW1wb3J0YW50O30gLi1oMTMwIHtoZWlnaHQ6MTMwcHghaW1wb3J0YW50O30gLi1oMTQwIHtoZWlnaHQ6MTQwcHghaW1wb3J0YW50O30gLi1oMTUwIHtoZWlnaHQ6MTUwcHghaW1wb3J0YW50O30gLi1oMTYwIHtoZWlnaHQ6MTYwcHghaW1wb3J0YW50O30gLi1oMTcwIHtoZWlnaHQ6MTcwcHghaW1wb3J0YW50O30gLi1oMTgwIHtoZWlnaHQ6MTgwcHghaW1wb3J0YW50O30gLi1oMTkwIHtoZWlnaHQ6MTkwcHghaW1wb3J0YW50O30gLi1oMjAwIHtoZWlnaHQ6MjAwcHghaW1wb3J0YW50O30gLi1oMjIwIHtoZWlnaHQ6MjIwcHghaW1wb3J0YW50O30gLi1oMjMwIHtoZWlnaHQ6MjMwcHghaW1wb3J0YW50O30gLi1oMjQwIHtoZWlnaHQ6MjQwcHghaW1wb3J0YW50O30gLi1oMjQ1IHtoZWlnaHQ6MjQ1cHghaW1wb3J0YW50O30gLi1oMjQ4IHtoZWlnaHQ6MjQ4cHghaW1wb3J0YW50O30gLi1oMjUwIHtoZWlnaHQ6MjUwcHghaW1wb3J0YW50O30gLi1oMjU1IHtoZWlnaHQ6MjU1cHghaW1wb3J0YW50O30gLi1oMjYwIHtoZWlnaHQ6MjYwcHghaW1wb3J0YW50O30gLi1oMzAwIHtoZWlnaHQ6MzAwcHghaW1wb3J0YW50O30gLi1oMzUwIHtoZWlnaHQ6MzUwcHghaW1wb3J0YW50O30gLi1oNDAwIHtoZWlnaHQ6NDAwcHghaW1wb3J0YW50O30gLi1oNDUwIHtoZWlnaHQ6NDUwcHghaW1wb3J0YW50O30gLi1oNTAwIHtoZWlnaHQ6NTAwcHghaW1wb3J0YW50O30gLi1oNTUwIHtoZWlnaHQ6NTUwcHghaW1wb3J0YW50O30gLi1oNjAwIHtoZWlnaHQ6NjAwcHghaW1wb3J0YW50O30gLi1oNjUwIHtoZWlnaHQ6NjUwcHghaW1wb3J0YW50O30gLi1oNzAwIHtoZWlnaHQ6NzAwcHghaW1wb3J0YW50O30gLi1oNzUwIHtoZWlnaHQ6NzUwcHghaW1wb3J0YW50O30gLi1oODAwIHtoZWlnaHQ6ODAwcHghaW1wb3J0YW50O30gLi1oOTAwIHtoZWlnaHQ6OTAwcHghaW1wb3J0YW50O30gLi1oMTAwMCB7aGVpZ2h0OjEwMDBweCFpbXBvcnRhbnQ7fSAuLWg1cCB7aGVpZ2h0OjUlIWltcG9ydGFudDt9IC4taDEwcCB7aGVpZ2h0OjEwJSFpbXBvcnRhbnQ7fSAuLWgxNXAge2hlaWdodDoxNSUhaW1wb3J0YW50O30gLi1oMjBwIHtoZWlnaHQ6MjAlIWltcG9ydGFudDt9IC4taHEsIC4taDI1cCB7aGVpZ2h0OjI1JSFpbXBvcnRhbnQ7fSAuLWhoLC4taDUwcCB7aGVpZ2h0OjUwJSFpbXBvcnRhbnQ7fSAuLWhmLC4taDEwMHAge2hlaWdodDoxMDAlIWltcG9ydGFudDt9IC4tYm94LXMtYnsgLXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7IC1tb3otYm94LXNpemluZzpib3JkZXItYm94OyBib3gtc2l6aW5nOmJvcmRlci1ib3g7IH0gLi1ib3gtY29udGVudHsgYm94LXNpemluZzpjb250ZW50LWJveDsgfSAuLWZsZXh7ZGlzcGxheTpmbGV4O30gLi1mbGV4LWNvbHVtbntkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO30gLi1haS1jZW50ZXJ7YWxpZ24taXRlbXM6Y2VudGVyO30gLi1wMCwuLW5vcGFkZGluZywuLW5vcGFkZGluZ3Mge3BhZGRpbmc6MDt9IC4tcDEge3BhZGRpbmc6MXB4IWltcG9ydGFudDt9IC4tcDIge3BhZGRpbmc6MnB4IWltcG9ydGFudDt9IC4tcDMge3BhZGRpbmc6M3B4IWltcG9ydGFudDt9IC4tcDQge3BhZGRpbmc6NHB4IWltcG9ydGFudDt9IC4tcDUge3BhZGRpbmc6NXB4IWltcG9ydGFudDt9IC4tcDYge3BhZGRpbmc6NnB4IWltcG9ydGFudDt9IC4tcDcge3BhZGRpbmc6N3B4IWltcG9ydGFudDt9IC4tcDgge3BhZGRpbmc6OHB4IWltcG9ydGFudDt9IC4tcDkge3BhZGRpbmc6OXB4IWltcG9ydGFudDt9IC4tcDEwIHtwYWRkaW5nOjEwcHghaW1wb3J0YW50O30gLi1wMTUge3BhZGRpbmc6MTVweCFpbXBvcnRhbnQ7fSAuLXAyMCB7cGFkZGluZzoyMHB4IWltcG9ydGFudDt9IC4tcDI1IHtwYWRkaW5nOjI1cHghaW1wb3J0YW50O30gLi1wMzAge3BhZGRpbmc6MzBweCFpbXBvcnRhbnQ7fSAuLXAzNSB7cGFkZGluZzozNXB4IWltcG9ydGFudDt9IC4tcDQwIHtwYWRkaW5nOjQwcHghaW1wb3J0YW50O30gLi1wNDUge3BhZGRpbmc6NDVweCFpbXBvcnRhbnQ7fSAuLXA1MCB7cGFkZGluZzo1MHB4IWltcG9ydGFudDt9IC4tcGwwIHtwYWRkaW5nLWxlZnQ6MCFpbXBvcnRhbnQ7fSAuLXBsMSB7cGFkZGluZy1sZWZ0OjFweCFpbXBvcnRhbnQ7fSAuLXBsMiB7cGFkZGluZy1sZWZ0OjJweCFpbXBvcnRhbnQ7fSAuLXBsMyB7cGFkZGluZy1sZWZ0OjNweCFpbXBvcnRhbnQ7fSAuLXBsNCB7cGFkZGluZy1sZWZ0OjRweCFpbXBvcnRhbnQ7fSAuLXBsNSB7cGFkZGluZy1sZWZ0OjVweCFpbXBvcnRhbnQ7fSAuLXBsNiB7cGFkZGluZy1sZWZ0OjZweCFpbXBvcnRhbnQ7fSAuLXBsNyB7cGFkZGluZy1sZWZ0OjdweCFpbXBvcnRhbnQ7fSAuLXBsOCB7cGFkZGluZy1sZWZ0OjhweCFpbXBvcnRhbnQ7fSAuLXBsOSB7cGFkZGluZy1sZWZ0OjlweCFpbXBvcnRhbnQ7fSAuLXBsMTAge3BhZGRpbmctbGVmdDoxMHB4IWltcG9ydGFudDt9IC4tcGwxNSB7cGFkZGluZy1sZWZ0OjE1cHghaW1wb3J0YW50O30gLi1wbDE2IHtwYWRkaW5nLWxlZnQ6MTZweCFpbXBvcnRhbnQ7fSAuLXBsMTcge3BhZGRpbmctbGVmdDoxN3B4IWltcG9ydGFudDt9IC4tcGwyMCB7cGFkZGluZy1sZWZ0OjIwcHghaW1wb3J0YW50O30gLi1wbDI1IHtwYWRkaW5nLWxlZnQ6MjVweCFpbXBvcnRhbnQ7fSAuLXBsMzAge3BhZGRpbmctbGVmdDozMHB4IWltcG9ydGFudDt9IC4tcGwzNSB7cGFkZGluZy1sZWZ0OjM1cHghaW1wb3J0YW50O30gLi1wbDQwIHtwYWRkaW5nLWxlZnQ6NDBweCFpbXBvcnRhbnQ7fSAuLXBsNDUge3BhZGRpbmctbGVmdDo0NXB4IWltcG9ydGFudDt9IC4tcGw1MCB7cGFkZGluZy1sZWZ0OjUwcHghaW1wb3J0YW50O30gLi1wbDU1IHtwYWRkaW5nLWxlZnQ6NTVweCFpbXBvcnRhbnQ7fSAuLXByMCB7cGFkZGluZy1yaWdodDowIWltcG9ydGFudDt9IC4tcHIxIHtwYWRkaW5nLXJpZ2h0OjFweCFpbXBvcnRhbnQ7fSAuLXByMiB7cGFkZGluZy1yaWdodDoycHghaW1wb3J0YW50O30gLi1wcjMge3BhZGRpbmctcmlnaHQ6M3B4IWltcG9ydGFudDt9IC4tcHI0IHtwYWRkaW5nLXJpZ2h0OjRweCFpbXBvcnRhbnQ7fSAuLXByNSB7cGFkZGluZy1yaWdodDo1cHghaW1wb3J0YW50O30gLi1wcjYge3BhZGRpbmctcmlnaHQ6NnB4IWltcG9ydGFudDt9IC4tcHI3IHtwYWRkaW5nLXJpZ2h0OjdweCFpbXBvcnRhbnQ7fSAuLXByOCB7cGFkZGluZy1yaWdodDo4cHghaW1wb3J0YW50O30gLi1wcjkge3BhZGRpbmctcmlnaHQ6OXB4IWltcG9ydGFudDt9IC4tcHIxMCB7cGFkZGluZy1yaWdodDoxMHB4IWltcG9ydGFudDt9IC4tcHIxNSB7cGFkZGluZy1yaWdodDoxNXB4IWltcG9ydGFudDt9IC4tcHIyMCB7cGFkZGluZy1yaWdodDoyMHB4IWltcG9ydGFudDt9IC4tcHIyNSB7cGFkZGluZy1yaWdodDoyNXB4IWltcG9ydGFudDt9IC4tcHIzMCB7cGFkZGluZy1yaWdodDozMHB4IWltcG9ydGFudDt9IC4tcHIzNSB7cGFkZGluZy1yaWdodDozNXB4IWltcG9ydGFudDt9IC4tcHI0MCB7cGFkZGluZy1yaWdodDo0MHB4IWltcG9ydGFudDt9IC4tcHI0NSB7cGFkZGluZy1yaWdodDo0NXB4IWltcG9ydGFudDt9IC4tcHI1MCB7cGFkZGluZy1yaWdodDo1MHB4IWltcG9ydGFudDt9IC4tcHI1NSB7cGFkZGluZy1yaWdodDo1NXB4IWltcG9ydGFudDt9IC4tcHQwe3BhZGRpbmctdG9wOjAhaW1wb3J0YW50O30gLi1wdDEge3BhZGRpbmctdG9wOjFweCFpbXBvcnRhbnQ7fSAuLXB0MiB7cGFkZGluZy10b3A6MnB4IWltcG9ydGFudDt9IC4tcHQzIHtwYWRkaW5nLXRvcDozcHghaW1wb3J0YW50O30gLi1wdDQge3BhZGRpbmctdG9wOjRweCFpbXBvcnRhbnQ7fSAuLXB0NSB7cGFkZGluZy10b3A6NXB4IWltcG9ydGFudDt9IC4tcHQ2IHtwYWRkaW5nLXRvcDo2cHghaW1wb3J0YW50O30gLi1wdDcge3BhZGRpbmctdG9wOjdweCFpbXBvcnRhbnQ7fSAuLXB0OCB7cGFkZGluZy10b3A6OHB4IWltcG9ydGFudDt9IC4tcHQ5IHtwYWRkaW5nLXRvcDo5cHghaW1wb3J0YW50O30gLi1wdDEwIHtwYWRkaW5nLXRvcDoxMHB4IWltcG9ydGFudDt9IC4tcHQxNSB7cGFkZGluZy10b3A6MTVweCFpbXBvcnRhbnQ7fSAuLXB0MjAge3BhZGRpbmctdG9wOjIwcHghaW1wb3J0YW50O30gLi1wdDI1IHtwYWRkaW5nLXRvcDoyNXB4IWltcG9ydGFudDt9IC4tcHQzMCB7cGFkZGluZy10b3A6MzBweCFpbXBvcnRhbnQ7fSAuLXB0MzUge3BhZGRpbmctdG9wOjM1cHghaW1wb3J0YW50O30gLi1wdDQwIHtwYWRkaW5nLXRvcDo0MHB4IWltcG9ydGFudDt9IC4tcHQ0NSB7cGFkZGluZy10b3A6NDVweCFpbXBvcnRhbnQ7fSAuLXB0NTAge3BhZGRpbmctdG9wOjUwcHghaW1wb3J0YW50O30gLi1wdDU1IHtwYWRkaW5nLXRvcDo1NXB4IWltcG9ydGFudDt9IC4tcHQyMDAge3BhZGRpbmctdG9wOjIwMHB4IWltcG9ydGFudDt9IC4tcGIwIHtwYWRkaW5nLWJvdHRvbTowIWltcG9ydGFudDt9IC4tcGIxIHtwYWRkaW5nLWJvdHRvbToxcHghaW1wb3J0YW50O30gLi1wYjIge3BhZGRpbmctYm90dG9tOjJweCFpbXBvcnRhbnQ7fSAuLXBiMyB7cGFkZGluZy1ib3R0b206M3B4IWltcG9ydGFudDt9IC4tcGI0IHtwYWRkaW5nLWJvdHRvbTo0cHghaW1wb3J0YW50O30gLi1wYjUge3BhZGRpbmctYm90dG9tOjVweCFpbXBvcnRhbnQ7fSAuLXBiNiB7cGFkZGluZy1ib3R0b206NnB4IWltcG9ydGFudDt9IC4tcGI3IHtwYWRkaW5nLWJvdHRvbTo3cHghaW1wb3J0YW50O30gLi1wYjgge3BhZGRpbmctYm90dG9tOjhweCFpbXBvcnRhbnQ7fSAuLXBiOSB7cGFkZGluZy1ib3R0b206OXB4IWltcG9ydGFudDt9IC4tcGIxMCB7cGFkZGluZy1ib3R0b206MTBweCFpbXBvcnRhbnQ7fSAuLXBiMTUge3BhZGRpbmctYm90dG9tOjE1cHghaW1wb3J0YW50O30gLi1wYjIwIHtwYWRkaW5nLWJvdHRvbToyMHB4IWltcG9ydGFudDt9IC4tcGIyNSB7cGFkZGluZy1ib3R0b206MjVweCFpbXBvcnRhbnQ7fSAuLXBiMzAge3BhZGRpbmctYm90dG9tOjMwcHghaW1wb3J0YW50O30gLi1wYjQwIHtwYWRkaW5nLWJvdHRvbTo0MHB4IWltcG9ydGFudDt9IC1ib3JkZXItcmFkaXVzMCwtcmFkaXVzMCwtcmFkMCB7Ym9yZGVyLXJhZGl1czowcHghaW1wb3J0YW50O30gLWJvcmRlci1yYWRpdXMxLC1yYWRpdXMxLC1yYWQxIHtib3JkZXItcmFkaXVzOjBweCFpbXBvcnRhbnQ7fSAtYm9yZGVyLXJhZGl1czIsLXJhZGl1czIsLXJhZDIge2JvcmRlci1yYWRpdXM6MHB4IWltcG9ydGFudDt9IC1ib3JkZXItcmFkaXVzMywtcmFkaXVzMywtcmFkMyB7Ym9yZGVyLXJhZGl1czowcHghaW1wb3J0YW50O30gLWJvcmRlci1yYWRpdXM0LC1yYWRpdXM0LC1yYWQ0IHtib3JkZXItcmFkaXVzOjBweCFpbXBvcnRhbnQ7fSAtYm9yZGVyLXJhZGl1czUsLXJhZGl1czUsLXJhZDUge2JvcmRlci1yYWRpdXM6MHB4IWltcG9ydGFudDt9IC1ib3JkZXItcmFkaXVzNiwtcmFkaXVzNiwtcmFkNiB7Ym9yZGVyLXJhZGl1czowcHghaW1wb3J0YW50O30gLWJvcmRlci1yYWRpdXM3LC1yYWRpdXM3LC1yYWQ3IHtib3JkZXItcmFkaXVzOjBweCFpbXBvcnRhbnQ7fSAtYm9yZGVyLXJhZGl1czgsLXJhZGl1czgsLXJhZDgge2JvcmRlci1yYWRpdXM6MHB4IWltcG9ydGFudDt9IC1ib3JkZXItcmFkaXVzOSwtcmFkaXVzOSwtcmFkOSB7Ym9yZGVyLXJhZGl1czowcHghaW1wb3J0YW50O30gLWJvcmRlci1yYWRpdXMxMCwtcmFkaXVzMTAsLXJhZDEwIHtib3JkZXItcmFkaXVzOjBweCFpbXBvcnRhbnQ7fSAuLW1hdXRvIHttYXJnaW46YXV0byFpbXBvcnRhbnQ7fSAuLW0wIC4tbm9tYXJnaW5zLC4tbm9tYXJnaW57bWFyZ2luOjAhaW1wb3J0YW50O30gLi1tMSB7bWFyZ2luOjFweCFpbXBvcnRhbnQ7fSAuLW0yIHttYXJnaW46MnB4IWltcG9ydGFudDt9IC4tbTMge21hcmdpbjozcHghaW1wb3J0YW50O30gLi1tNCB7bWFyZ2luOjRweCFpbXBvcnRhbnQ7fSAuLW01IHttYXJnaW46NXB4IWltcG9ydGFudDt9IC4tbTYge21hcmdpbjo2cHghaW1wb3J0YW50O30gLi1tNyB7bWFyZ2luOjdweCFpbXBvcnRhbnQ7fSAuLW04IHttYXJnaW46OHB4IWltcG9ydGFudDt9IC4tbTkge21hcmdpbjo5cHghaW1wb3J0YW50O30gLi1tMTAge21hcmdpbjoxMHB4IWltcG9ydGFudDt9IC4tbTE1IHttYXJnaW46MTVweCFpbXBvcnRhbnQ7fSAuLW0yMCB7bWFyZ2luOjIwcHghaW1wb3J0YW50O30gLi1tMjIge21hcmdpbjoyMnB4IWltcG9ydGFudDt9IC4tbTI1IHttYXJnaW46MjVweCFpbXBvcnRhbnQ7fSAuLW01cCB7bWFyZ2luOjUlIWltcG9ydGFudDt9IC4tbTEwcCB7bWFyZ2luOjEwJSFpbXBvcnRhbnQ7fSAuLW0xNXAge21hcmdpbjoxNSUhaW1wb3J0YW50O30gLi1tMjBwIHttYXJnaW46MjAlIWltcG9ydGFudDt9IC4tbTI1cCB7bWFyZ2luOjI1JSFpbXBvcnRhbnQ7fSAuLW1sYXV0byB7bWFyZ2luLWxlZnQ6YXV0byFpbXBvcnRhbnQ7fSAuLW1sMCB7bWFyZ2luLWxlZnQ6MCFpbXBvcnRhbnQ7fSAuLW1sMSB7bWFyZ2luLWxlZnQ6MXB4IWltcG9ydGFudDt9IC4tbWwyIHttYXJnaW4tbGVmdDoycHghaW1wb3J0YW50O30gLi1tbDMge21hcmdpbi1sZWZ0OjNweCFpbXBvcnRhbnQ7fSAuLW1sNCB7bWFyZ2luLWxlZnQ6NHB4IWltcG9ydGFudDt9IC4tbWw1IHttYXJnaW4tbGVmdDo1cHghaW1wb3J0YW50O30gLi1tbDYge21hcmdpbi1sZWZ0OjZweCFpbXBvcnRhbnQ7fSAuLW1sNyB7bWFyZ2luLWxlZnQ6N3B4IWltcG9ydGFudDt9IC4tbWw4IHttYXJnaW4tbGVmdDo4cHghaW1wb3J0YW50O30gLi1tbDkge21hcmdpbi1sZWZ0OjlweCFpbXBvcnRhbnQ7fSAuLW1sMTAge21hcmdpbi1sZWZ0OjEwcHghaW1wb3J0YW50O30gLi1tbDE1IHttYXJnaW4tbGVmdDoxNXB4IWltcG9ydGFudDt9IC4tbWwyMCB7bWFyZ2luLWxlZnQ6MjBweCFpbXBvcnRhbnQ7fSAuLW1sMjUge21hcmdpbi1sZWZ0OjI1cHghaW1wb3J0YW50O30gLi1tbDI3IHttYXJnaW4tbGVmdDoyN3B4IWltcG9ydGFudDt9IC4tbWwzMCB7bWFyZ2luLWxlZnQ6MzBweCFpbXBvcnRhbnQ7fSAuLW1sNTAge21hcmdpbi1sZWZ0OjUwcHghaW1wb3J0YW50O30gLi1tbDgwIHttYXJnaW4tbGVmdDo4MHB4IWltcG9ydGFudDt9IC4tbWwxMDAge21hcmdpbi1sZWZ0OjEwMHB4IWltcG9ydGFudDt9IC4tbWwxMzAge21hcmdpbi1sZWZ0OjEzMHB4IWltcG9ydGFudDt9IC4tbWwxNTAge21hcmdpbi1sZWZ0OjE1MHB4IWltcG9ydGFudDt9IC4tbWwycCB7bWFyZ2luLWxlZnQ6MiUhaW1wb3J0YW50O30gLi1tbDNwIHttYXJnaW4tbGVmdDozJSFpbXBvcnRhbnQ7fSAuLW1sNXAge21hcmdpbi1sZWZ0OjUlIWltcG9ydGFudDt9IC4tbWwxMHAge21hcmdpbi1sZWZ0OjEwJSFpbXBvcnRhbnQ7fSAuLW1sMTVwIHttYXJnaW4tbGVmdDoxNSUhaW1wb3J0YW50O30gLi1tbDIwcCB7bWFyZ2luLWxlZnQ6MjAlIWltcG9ydGFudDt9IC4tbWwyNXAge21hcmdpbi1sZWZ0OjI1JSFpbXBvcnRhbnQ7fSAuLW1yYXV0byB7bWFyZ2luLXJpZ2h0OmF1dG8haW1wb3J0YW50O30gLi1tcjAge21hcmdpbi1yaWdodDowIWltcG9ydGFudDt9IC4tbXIxIHttYXJnaW4tcmlnaHQ6MXB4IWltcG9ydGFudDt9IC4tbXIyIHttYXJnaW4tcmlnaHQ6MnB4IWltcG9ydGFudDt9IC4tbXIzIHttYXJnaW4tcmlnaHQ6M3B4IWltcG9ydGFudDt9IC4tbXI0IHttYXJnaW4tcmlnaHQ6NHB4IWltcG9ydGFudDt9IC4tbXI1IHttYXJnaW4tcmlnaHQ6NXB4IWltcG9ydGFudDt9IC4tbXI2IHttYXJnaW4tcmlnaHQ6NnB4IWltcG9ydGFudDt9IC4tbXI3IHttYXJnaW4tcmlnaHQ6N3B4IWltcG9ydGFudDt9IC4tbXI4IHttYXJnaW4tcmlnaHQ6OHB4IWltcG9ydGFudDt9IC4tbXI5IHttYXJnaW4tcmlnaHQ6OXB4IWltcG9ydGFudDt9IC4tbXIxMCB7bWFyZ2luLXJpZ2h0OjEwcHghaW1wb3J0YW50O30gLi1tcjE1IHttYXJnaW4tcmlnaHQ6MTVweCFpbXBvcnRhbnQ7fSAuLW1yMjAge21hcmdpbi1yaWdodDoyMHB4IWltcG9ydGFudDt9IC4tbXIyNSB7bWFyZ2luLXJpZ2h0OjI1cHghaW1wb3J0YW50O30gLi1tcjMwIHttYXJnaW4tcmlnaHQ6MzBweCFpbXBvcnRhbnQ7fSAuLW1yMzUge21hcmdpbi1yaWdodDozNXB4IWltcG9ydGFudDt9IC4tbXI0MCB7bWFyZ2luLXJpZ2h0OjQwcHghaW1wb3J0YW50O30gLi1tcjQ1IHttYXJnaW4tcmlnaHQ6NDVweCFpbXBvcnRhbnQ7fSAuLW1yNTAge21hcmdpbi1yaWdodDo1MHB4IWltcG9ydGFudDt9IC4tbXIxMDAge21hcmdpbi1yaWdodDoxMDBweCFpbXBvcnRhbnQ7fSAuLW1yMnAge21hcmdpbi1yaWdodDoyJSFpbXBvcnRhbnQ7fSAuLW1yM3Age21hcmdpbi1yaWdodDozJSFpbXBvcnRhbnQ7fSAuLW1yNXAge21hcmdpbi1yaWdodDo1JSFpbXBvcnRhbnQ7fSAuLW1yMTBwIHttYXJnaW4tcmlnaHQ6MTAlIWltcG9ydGFudDt9IC4tbXIxNXAge21hcmdpbi1yaWdodDoxNSUhaW1wb3J0YW50O30gLi1tcjIwcCB7bWFyZ2luLXJpZ2h0OjIwJSFpbXBvcnRhbnQ7fSAuLW1yMjVwIHttYXJnaW4tcmlnaHQ6MjUlIWltcG9ydGFudDt9IC4tbXRhdXRvIHttYXJnaW4tdG9wOmF1dG8haW1wb3J0YW50O30gLi1tdC03e21hcmdpbi10b3A6LTdweCFpbXBvcnRhbnQ7fSAuLW10MHttYXJnaW4tdG9wOjAhaW1wb3J0YW50O30gLi1tdDEge21hcmdpbi10b3A6MXB4IWltcG9ydGFudDt9IC4tbXQyIHttYXJnaW4tdG9wOjJweCFpbXBvcnRhbnQ7fSAuLW10MyB7bWFyZ2luLXRvcDozcHghaW1wb3J0YW50O30gLi1tdDQge21hcmdpbi10b3A6NHB4IWltcG9ydGFudDt9IC4tbXQ1IHttYXJnaW4tdG9wOjVweCFpbXBvcnRhbnQ7fSAuLW10NiB7bWFyZ2luLXRvcDo2cHghaW1wb3J0YW50O30gLi1tdDcge21hcmdpbi10b3A6N3B4IWltcG9ydGFudDt9IC4tbXQ4IHttYXJnaW4tdG9wOjhweCFpbXBvcnRhbnQ7fSAuLW10OSB7bWFyZ2luLXRvcDo5cHghaW1wb3J0YW50O30gLi1tdDEwIHttYXJnaW4tdG9wOjEwcHghaW1wb3J0YW50O30gLi1tdDExIHttYXJnaW4tdG9wOjExcHghaW1wb3J0YW50O30gLi1tdDEyIHttYXJnaW4tdG9wOjEycHghaW1wb3J0YW50O30gLi1tdDEzIHttYXJnaW4tdG9wOjEzcHghaW1wb3J0YW50O30gLi1tdDE0IHttYXJnaW4tdG9wOjE0cHghaW1wb3J0YW50O30gLi1tdDE1IHttYXJnaW4tdG9wOjE1cHghaW1wb3J0YW50O30gLi1tdDIwIHttYXJnaW4tdG9wOjIwcHghaW1wb3J0YW50O30gLi1tdDI1IHttYXJnaW4tdG9wOjI1cHghaW1wb3J0YW50O30gLi1tdDI3IHttYXJnaW4tdG9wOjI3cHghaW1wb3J0YW50O30gLi1tdDMwIHttYXJnaW4tdG9wOjMwcHghaW1wb3J0YW50O30gLi1tdDM1IHttYXJnaW4tdG9wOjM1cHghaW1wb3J0YW50O30gLi1tdDQwIHttYXJnaW4tdG9wOjQwcHghaW1wb3J0YW50O30gLi1tdDUwIHttYXJnaW4tdG9wOjUwcHghaW1wb3J0YW50O30gLi1tdDExNSB7bWFyZ2luLXRvcDoxMTVweCFpbXBvcnRhbnQ7fSAuLW10MjAwIHttYXJnaW4tdG9wOjIwMHB4IWltcG9ydGFudDt9IC4tbWJhdXRvIHttYXJnaW4tYm90dG9tOmF1dG8haW1wb3J0YW50O30gLi1tYjAge21hcmdpbi1ib3R0b206MCFpbXBvcnRhbnQ7fSAuLW1iMSB7bWFyZ2luLWJvdHRvbToxcHghaW1wb3J0YW50O30gLi1tYjIge21hcmdpbi1ib3R0b206MnB4IWltcG9ydGFudDt9IC4tbWIzIHttYXJnaW4tYm90dG9tOjNweCFpbXBvcnRhbnQ7fSAuLW1iNCB7bWFyZ2luLWJvdHRvbTo0cHghaW1wb3J0YW50O30gLi1tYjUge21hcmdpbi1ib3R0b206NXB4IWltcG9ydGFudDt9IC4tbWI2IHttYXJnaW4tYm90dG9tOjZweCFpbXBvcnRhbnQ7fSAuLW1iNyB7bWFyZ2luLWJvdHRvbTo3cHghaW1wb3J0YW50O30gLi1tYjgge21hcmdpbi1ib3R0b206OHB4IWltcG9ydGFudDt9IC4tbWI5IHttYXJnaW4tYm90dG9tOjlweCFpbXBvcnRhbnQ7fSAuLW1iMTAge21hcmdpbi1ib3R0b206MTBweCFpbXBvcnRhbnQ7fSAuLW1iMTUge21hcmdpbi1ib3R0b206MTVweCFpbXBvcnRhbnQ7fSAuLW1iMjAge21hcmdpbi1ib3R0b206MjBweCFpbXBvcnRhbnQ7fSAuLW1iMjUge21hcmdpbi1ib3R0b206MjVweCFpbXBvcnRhbnQ7fSAuLW1iMzAge21hcmdpbi1ib3R0b206MzBweCFpbXBvcnRhbnQ7fSAuLW1iNTAge21hcmdpbi1ib3R0b206NTBweCFpbXBvcnRhbnQ7fSAuLXRvcC0xMCwgLi10LTEwIHt0b3A6LTEwcHghaW1wb3J0YW50O30gLi10b3AwLCAuLXQwIHt0b3A6MHB4IWltcG9ydGFudDt9IC4tdG9wMSwgLi10MSB7dG9wOjFweCFpbXBvcnRhbnQ7fSAuLXRvcDIsIC4tdDIge3RvcDoycHghaW1wb3J0YW50O30gLi10b3AzLCAuLXQzIHt0b3A6M3B4IWltcG9ydGFudDt9IC4tdG9wNCwgLi10NCB7dG9wOjRweCFpbXBvcnRhbnQ7fSAuLXRvcDUsIC4tdDUge3RvcDo1cHghaW1wb3J0YW50O30gLi10b3A2LCAuLXQ2IHt0b3A6NnB4IWltcG9ydGFudDt9IC4tdG9wNywgLi10NyB7dG9wOjdweCFpbXBvcnRhbnQ7fSAuLXRvcDgsIC4tdDgge3RvcDo4cHghaW1wb3J0YW50O30gLi10b3A5LCAuLXQ5IHt0b3A6OXB4IWltcG9ydGFudDt9IC4tdG9wMTAsIC4tdDEwIHt0b3A6MTBweCFpbXBvcnRhbnQ7fSAuLXRvcDE1LCAuLXQxNSB7dG9wOjE1cHghaW1wb3J0YW50O30gLi10b3AyMCwgLi10MjAge3RvcDoyMHB4IWltcG9ydGFudDt9IC4tdG9wMjUsIC4tdDI1e3RvcDoyNXB4IWltcG9ydGFudDt9IC4tdG9wMzAsIC4tdDMwIHt0b3A6MzBweCFpbXBvcnRhbnQ7fSAuLXRvcDM1LCAuLXQzNSB7dG9wOjM1cHghaW1wb3J0YW50O30gLi10b3A0MCwgLi10NDAge3RvcDo0MHB4IWltcG9ydGFudDt9IC4tdG9wNDUsIC4tdDQ1IHt0b3A6NDVweCFpbXBvcnRhbnQ7fSAuLXRvcDUwLCAuLXQ1MCB7dG9wOjUwcHghaW1wb3J0YW50O30gLi10b3AxMDAsIC4tdDEwMCB7dG9wOjEwMHB4IWltcG9ydGFudDt9IC4tdG9wMjAwLCAuLXQyMDAge3RvcDoyMDBweCFpbXBvcnRhbnQ7fSAuLXRvcDVwLCAuLXQ1cCB7dG9wOjUlIWltcG9ydGFudDt9IC4tdG9wMTBwLCAuLXQxMHAge3RvcDoxMCUhaW1wb3J0YW50O30gLi10b3AxNXAsIC4tdDE1cCB7dG9wOjE1JSFpbXBvcnRhbnQ7fSAuLXRvcDIwcCwgLi10MjBwIHt0b3A6MjAlIWltcG9ydGFudDt9IC4tdG9wMjVwLCAuLXQyNXAge3RvcDoyNSUhaW1wb3J0YW50O30gLi10b3A1MHAsIC4tdDUwcCB7dG9wOjUwJSFpbXBvcnRhbnQ7fSAuLXRvcDEwMHAsIC4tdDEwMHAge3RvcDoxMDAlIWltcG9ydGFudDt9IC4tbGVmdDAsIC4tbDAge2xlZnQ6MHB4IWltcG9ydGFudDt9IC4tbGVmdDEsIC4tbDEge2xlZnQ6MXB4IWltcG9ydGFudDt9IC4tbGVmdDIsIC4tbDIge2xlZnQ6MnB4IWltcG9ydGFudDt9IC4tbGVmdDMsIC4tbDMge2xlZnQ6M3B4IWltcG9ydGFudDt9IC4tbGVmdDQsIC4tbDQge2xlZnQ6NHB4IWltcG9ydGFudDt9IC4tbGVmdDUsIC4tbDUge2xlZnQ6NXB4IWltcG9ydGFudDt9IC4tbGVmdDYsIC4tbDYge2xlZnQ6NnB4IWltcG9ydGFudDt9IC4tbGVmdDcsIC4tbDcge2xlZnQ6N3B4IWltcG9ydGFudDt9IC4tbGVmdDgsIC4tbDgge2xlZnQ6OHB4IWltcG9ydGFudDt9IC4tbGVmdDksIC4tbDkge2xlZnQ6OXB4IWltcG9ydGFudDt9IC4tbGVmdDEwLCAuLWwxMCB7bGVmdDoxMHB4IWltcG9ydGFudDt9IC4tbGVmdDE1LCAuLWwxNSB7bGVmdDoxNXB4IWltcG9ydGFudDt9IC4tbGVmdDIwLCAuLWwyMCB7bGVmdDoyMHB4IWltcG9ydGFudDt9IC4tbGVmdDI1LCAuLWwyNXtsZWZ0OjI1cHghaW1wb3J0YW50O30gLi1sZWZ0MzAsIC4tbDMwIHtsZWZ0OjMwcHghaW1wb3J0YW50O30gLi1sZWZ0MzUsIC4tbDM1IHtsZWZ0OjM1cHghaW1wb3J0YW50O30gLi1sZWZ0NDAsIC4tbDQwIHtsZWZ0OjQwcHghaW1wb3J0YW50O30gLi1sZWZ0NDUsIC4tbDQ1IHtsZWZ0OjQ1cHghaW1wb3J0YW50O30gLi1sZWZ0NTAsIC4tbDUwIHtsZWZ0OjUwcHghaW1wb3J0YW50O30gLi1sZWZ0NTUsIC4tbDU1IHtsZWZ0OjU1cHghaW1wb3J0YW50O30gLi1sZWZ0NjAsIC4tbDYwIHtsZWZ0OjYwcHghaW1wb3J0YW50O30gLi1sZWZ0NjUsIC4tbDY1IHtsZWZ0OjY1cHghaW1wb3J0YW50O30gLi1sZWZ0NzAsIC4tbDcwIHtsZWZ0OjcwcHghaW1wb3J0YW50O30gLi1sZWZ0NzUsIC4tbDc1IHtsZWZ0Ojc1cHghaW1wb3J0YW50O30gLi1sZWZ0ODAsIC4tbDgwIHtsZWZ0OjgwcHghaW1wb3J0YW50O30gLi1sZWZ0ODUsIC4tbDg1IHtsZWZ0Ojg1cHghaW1wb3J0YW50O30gLi1sZWZ0OTAsIC4tbDkwIHtsZWZ0OjkwcHghaW1wb3J0YW50O30gLi1sZWZ0OTUsIC4tbDk1IHtsZWZ0Ojk1cHghaW1wb3J0YW50O30gLi1sZWZ0MTAwLCAuLWwxMDAge2xlZnQ6MTAwcHghaW1wb3J0YW50O30gLi1sZWZ0MTUwLCAuLWwxNTAge2xlZnQ6MTUwcHghaW1wb3J0YW50O30gLi1sZWZ0MjAwLCAuLWwyMDAge2xlZnQ6MjAwcHghaW1wb3J0YW50O30gLi1sZWZ0MjUwLCAuLWwyNTAge2xlZnQ6MjUwcHghaW1wb3J0YW50O30gLi1sZWZ0MzAwLCAuLWwzMDAge2xlZnQ6MzAwcHghaW1wb3J0YW50O30gLi1sZWZ0NXAsIC4tbDVwIHtsZWZ0OjUlIWltcG9ydGFudDt9IC4tbGVmdDEwcCwgLi1sMTBwIHtsZWZ0OjEwJSFpbXBvcnRhbnQ7fSAuLWxlZnQxNXAsIC4tbDE1cCB7bGVmdDoxNSUhaW1wb3J0YW50O30gLi1sZWZ0MjBwLCAuLWwyMHAge2xlZnQ6MjAlIWltcG9ydGFudDt9IC4tbGVmdDI1cCwgLi1sMjVwIHtsZWZ0OjI1JSFpbXBvcnRhbnQ7fSAuLWxlZnQ0MHAsIC4tbDQwcCB7bGVmdDo0MCUhaW1wb3J0YW50O30gLi1sZWZ0NTBwLCAuLWw1MHAge2xlZnQ6NTAlIWltcG9ydGFudDt9IC4tbGVmdDEwMHAsIC4tbDEwMHAge2xlZnQ6MTAwJSFpbXBvcnRhbnQ7fSAuLXJpZ2h0MCwgLi1yMCB7cmlnaHQ6MHB4IWltcG9ydGFudDt9IC4tcmlnaHQxLCAuLXIxIHtyaWdodDoxcHghaW1wb3J0YW50O30gLi1yaWdodDIsIC4tcjIge3JpZ2h0OjJweCFpbXBvcnRhbnQ7fSAuLXJpZ2h0MywgLi1yMyB7cmlnaHQ6M3B4IWltcG9ydGFudDt9IC4tcmlnaHQ0LCAuLXI0IHtyaWdodDo0cHghaW1wb3J0YW50O30gLi1yaWdodDUsIC4tcjUge3JpZ2h0OjVweCFpbXBvcnRhbnQ7fSAuLXJpZ2h0NiwgLi1yNiB7cmlnaHQ6NnB4IWltcG9ydGFudDt9IC4tcmlnaHQ3LCAuLXI3IHtyaWdodDo3cHghaW1wb3J0YW50O30gLi1yaWdodDgsIC4tcjgge3JpZ2h0OjhweCFpbXBvcnRhbnQ7fSAuLXJpZ2h0OSwgLi1yOSB7cmlnaHQ6OXB4IWltcG9ydGFudDt9IC4tcmlnaHQxMCwgLi1yMTAge3JpZ2h0OjEwcHghaW1wb3J0YW50O30gLi1yaWdodDE1LCAuLXIxNSB7cmlnaHQ6MTVweCFpbXBvcnRhbnQ7fSAuLXJpZ2h0MjAsIC4tcjIwIHtyaWdodDoyMHB4IWltcG9ydGFudDt9IC4tcmlnaHQyNSwgLi1yMjUge3JpZ2h0OjI1cHghaW1wb3J0YW50O30gLi1yaWdodDMwLCAuLXIzMCB7cmlnaHQ6MzBweCFpbXBvcnRhbnQ7fSAuLXJpZ2h0MzUsIC4tcjM1IHtyaWdodDozNXB4IWltcG9ydGFudDt9IC4tcmlnaHQ0MCwgLi1yNDAge3JpZ2h0OjQwcHghaW1wb3J0YW50O30gLi1yaWdodDQ1LCAuLXI0NSB7cmlnaHQ6NDVweCFpbXBvcnRhbnQ7fSAuLXJpZ2h0NTAsIC4tcjUwIHtyaWdodDo1MHB4IWltcG9ydGFudDt9IC4tcmlnaHQ1NSwgLi1yNTUge3JpZ2h0OjU1cHghaW1wb3J0YW50O30gLi1yaWdodDYwLCAuLXI2MCB7cmlnaHQ6NjBweCFpbXBvcnRhbnQ7fSAuLXJpZ2h0NjUsIC4tcjY1IHtyaWdodDo2NXB4IWltcG9ydGFudDt9IC4tcmlnaHQ3MCwgLi1yNzAge3JpZ2h0OjcwcHghaW1wb3J0YW50O30gLi1yaWdodDc1LCAuLXI3NSB7cmlnaHQ6NzVweCFpbXBvcnRhbnQ7fSAuLXJpZ2h0ODAsIC4tcjgwIHtyaWdodDo4MHB4IWltcG9ydGFudDt9IC4tcmlnaHQ4NSwgLi1yODUge3JpZ2h0Ojg1cHghaW1wb3J0YW50O30gLi1yaWdodDkwLCAuLXI5MCB7cmlnaHQ6OTBweCFpbXBvcnRhbnQ7fSAuLXJpZ2h0OTUsIC4tcjk1IHtyaWdodDo5NXB4IWltcG9ydGFudDt9IC4tcmlnaHQxMDAsIC4tcjEwMCB7cmlnaHQ6MTAwcHghaW1wb3J0YW50O30gLi1yaWdodDE1MCwgLi1yMTUwIHtyaWdodDoxNTBweCFpbXBvcnRhbnQ7fSAuLXJpZ2h0MjAwLCAuLXIyMDAge3JpZ2h0OjIwMHB4IWltcG9ydGFudDt9IC4tcmlnaHQyNTAsIC4tcjI1MCB7cmlnaHQ6MjUwcHghaW1wb3J0YW50O30gLi1yaWdodDVwLCAuLXI1cCB7cmlnaHQ6NSUhaW1wb3J0YW50O30gLi1yaWdodDEwcCwgLi1yMTBwIHtyaWdodDoxMCUhaW1wb3J0YW50O30gLi1yaWdodDE1cCwgLi1yMTVwIHtyaWdodDoxNSUhaW1wb3J0YW50O30gLi1yaWdodDIwcCwgLi1yMjBwIHtyaWdodDoyMCUhaW1wb3J0YW50O30gLi1yaWdodDI1cCwgLi1yMjVwIHtyaWdodDoyNSUhaW1wb3J0YW50O30gLi1yaWdodDUwcCwgLi1yNTBwIHtyaWdodDo1MCUhaW1wb3J0YW50O30gLi1yaWdodDEwMHAsIC4tcjEwMHAge3JpZ2h0OjEwMCUhaW1wb3J0YW50O30gLi16LWluZGV4OTl7ei1pbmRleDo5OSFpbXBvcnRhbnQ7fSAuLXotaW5kZXgxMDB7ei1pbmRleDoxMDAhaW1wb3J0YW50O30gLi16LWluZGV4MTAxe3otaW5kZXg6MTAxIWltcG9ydGFudDt9IC4tei1pbmRleDEwMDEsIC56aW5kZXgxMDAxeyB6LWluZGV4OjEwMDEhaW1wb3J0YW50OyB9IC4tei1pbmRleDM2MDAxLCAuemluZGV4MzYwMDF7IHotaW5kZXg6MzYwMDEhaW1wb3J0YW50OyB9IC4tbm8tYm9yZGVyLXNwYWNpbmd7IGJvcmRlci1zcGFjaW5nOjAhaW1wb3J0YW50OyB9IC4tdGFibGV7IGNlbGxwYWRkaW5nOjAhaW1wb3J0YW50OyBjZWxsc3BhY2luZzowIWltcG9ydGFudDsgYm9yZGVyOjAhaW1wb3J0YW50OyB9IHRhYmxlLi10YWJsZSB0aGVhZCB0aCB7IGJhY2tncm91bmQ6I2MzZDlmZiFpbXBvcnRhbnQ7IH0gdGFibGUuLXRhYmxlIHRyIHRoLCB0YWJsZS4tdGFibGUgdHIgdGQgeyBwYWRkaW5nOjRweCAxMHB4IDRweCA1cHghaW1wb3J0YW50OyB9IHRyLi1ib3JkZXItYm90dG9tIHRkLCB0ci4tYm9yZGVyLWJvdHRvbSB0aCB7IGJvcmRlci1ib3R0b206MXB0IHNvbGlkIGJsYWNrIWltcG9ydGFudDsgfSAtd2hpdGUtc3BhY2Utbm93cmFwIHt3aGl0ZS1zcGFjZTpub3dyYXAhaW1wb3J0YW50O30gLi1jdXJzb3ItYXV0byB7IGN1cnNvcjphdXRvOyB9IC4tY3Vyc29yLWRlZmF1bHQgeyBjdXJzb3I6ZGVmYXVsdDsgfSAuLWN1cnNvci1ub25lIHsgY3Vyc29yOm5vbmU7IH0gLi1jdXJzb3ItY29udGV4dC1tZW51IHsgY3Vyc29yOmNvbnRleHQtbWVudTsgfSAuLWN1cnNvci1oZWxwIHsgY3Vyc29yOmhlbHA7IH0gLi1jdXJzb3ItcG9pbnRlciB7IGN1cnNvcjpwb2ludGVyOyB9IC4tY3Vyc29yLXByb2dyZXNzIHsgY3Vyc29yOnByb2dyZXNzOyB9IC4tY3Vyc29yLXdhaXQgeyBjdXJzb3I6d2FpdDsgfSAuLWN1cnNvci1jZWxsIHsgY3Vyc29yOmNlbGw7IH0gLi1jdXJzb3ItY3Jvc3NoYWlyIHsgY3Vyc29yOmNyb3NzaGFpcjsgfSAuLWN1cnNvci10ZXh0IHsgY3Vyc29yOnRleHQ7IH0gLi1jdXJzb3ItdmVydGljYWwtdGV4dCB7IGN1cnNvcjp2ZXJ0aWNhbC10ZXh0OyB9IC4tY3Vyc29yLWFsaWFzIHsgY3Vyc29yOmFsaWFzOyB9IC4tY3Vyc29yLWNvcHkgeyBjdXJzb3I6Y29weTsgfSAuLWN1cnNvci1tb3ZlIHsgY3Vyc29yOm1vdmU7IH0gLi1jdXJzb3Itbm8tZHJvcCB7IGN1cnNvcjpuby1kcm9wOyB9IC4tY3Vyc29yLW5vdC1hbGxvd2VkIHsgY3Vyc29yOm5vdC1hbGxvd2VkOyB9IC4tY3Vyc29yLWFsbC1zY3JvbGwgeyBjdXJzb3I6YWxsLXNjcm9sbDsgfSAuLWN1cnNvci1jb2wtcmVzaXplIHsgY3Vyc29yOmNvbC1yZXNpemU7IH0gLi1jdXJzb3Itcm93LXJlc2l6ZSB7IGN1cnNvcjpyb3ctcmVzaXplOyB9IC4tY3Vyc29yLW4tcmVzaXplIHsgY3Vyc29yOm4tcmVzaXplOyB9IC4tY3Vyc29yLWUtcmVzaXplIHsgY3Vyc29yOmUtcmVzaXplOyB9IC4tY3Vyc29yLXMtcmVzaXplIHsgY3Vyc29yOnMtcmVzaXplOyB9IC4tY3Vyc29yLXctcmVzaXplIHsgY3Vyc29yOnctcmVzaXplOyB9IC4tY3Vyc29yLW5zLXJlc2l6ZSB7IGN1cnNvcjpucy1yZXNpemU7IH0gLi1jdXJzb3ItZXctcmVzaXplIHsgY3Vyc29yOmV3LXJlc2l6ZTsgfSAuLWN1cnNvci1uZS1yZXNpemUgeyBjdXJzb3I6bmUtcmVzaXplOyB9IC4tY3Vyc29yLW53LXJlc2l6ZSB7IGN1cnNvcjpudy1yZXNpemU7IH0gLi1jdXJzb3Itc2UtcmVzaXplIHsgY3Vyc29yOnNlLXJlc2l6ZTsgfSAuLWN1cnNvci1zdy1yZXNpemUgeyBjdXJzb3I6c3ctcmVzaXplOyB9IC4tY3Vyc29yLW5lc3ctcmVzaXplIHsgY3Vyc29yOm5lc3ctcmVzaXplOyB9IC4tY3Vyc29yLW53c2UtcmVzaXplIHsgY3Vyc29yOm53c2UtcmVzaXplOyB9IC4tZm9udC1zaXplMCwgLi1mczB7IGZvbnQtc2l6ZTowIWltcG9ydGFudDt9IC4tZm9udC1zaXplMSwgLi1mczF7IGZvbnQtc2l6ZToxcHghaW1wb3J0YW50O30gLi1mb250LXNpemUyLCAuLWZzMnsgZm9udC1zaXplOjJweCFpbXBvcnRhbnQ7fSAuLWZvbnQtc2l6ZTMsIC4tZnMzeyBmb250LXNpemU6M3B4IWltcG9ydGFudDt9IC4tZm9udC1zaXplNCwgLi1mczR7IGZvbnQtc2l6ZTo0cHghaW1wb3J0YW50O30gLi1mb250LXNpemU1LCAuLWZzNXsgZm9udC1zaXplOjVweCFpbXBvcnRhbnQ7fSAuLWZvbnQtc2l6ZTYsIC4tZnM2eyBmb250LXNpemU6NnB4IWltcG9ydGFudDt9IC4tZm9udC1zaXplNywgLi1mczd7IGZvbnQtc2l6ZTo3cHghaW1wb3J0YW50O30gLi1mb250LXNpemU4LCAuLWZzOHsgZm9udC1zaXplOjAuNXJlbSAhaW1wb3J0YW50O30gLi1mb250LXNpemU5LCAuLWZzOXsgZm9udC1zaXplOjAuNTYzcmVtICFpbXBvcnRhbnQ7fSAuLWZvbnQtc2l6ZTEwLCAuLWZzMTB7IGZvbnQtc2l6ZTowLjYyNXJlbSAhaW1wb3J0YW50O30gLi1mb250LXNpemUxMSwgLi1mczExeyBmb250LXNpemU6MC42ODhyZW0gIWltcG9ydGFudDt9IC4tZm9udC1zaXplMTIsIC4tZnMxMnsgZm9udC1zaXplOjAuNzVyZW0gIWltcG9ydGFudDt9IC4tZm9udC1zaXplMTMsIC4tZnMxM3sgZm9udC1zaXplOjAuODEzcmVtICFpbXBvcnRhbnQ7fSAuLWZvbnQtc2l6ZTE0LCAuLWZzMTR7IGZvbnQtc2l6ZTowLjg3NXJlbSAhaW1wb3J0YW50O30gLi1mb250LXNpemUxNSwgLi1mczE1eyBmb250LXNpemU6MC45MzhyZW0gIWltcG9ydGFudDt9IC4tZm9udC1zaXplMTYsIC4tZnMxNnsgZm9udC1zaXplOjFyZW0gIWltcG9ydGFudDt9IC4tZm9udC1zaXplMTcsIC4tZnMxN3sgZm9udC1zaXplOjEuMDYzcmVtICFpbXBvcnRhbnQ7fSAuLWZvbnQtc2l6ZTE4LCAuLWZzMTh7IGZvbnQtc2l6ZToxLjEyNXJlbSAhaW1wb3J0YW50O30gLi1mb250LXNpemUxOSwgLi1mczE5eyBmb250LXNpemU6MS4xODhyZW0gIWltcG9ydGFudDt9IC4tZm9udC1zaXplMjAsIC4tZnMyMHsgZm9udC1zaXplOjEuMjVyZW0gIWltcG9ydGFudDt9IC4tZm9udC1zaXplMjEsIC4tZnMyMXsgZm9udC1zaXplOjEuMzEzcmVtICFpbXBvcnRhbnQ7fSAuLWZvbnQtc2l6ZTIyLCAuLWZzMjJ7IGZvbnQtc2l6ZToxLjM3NXJlbSAhaW1wb3J0YW50O30gLi1mb250LXNpemUyMywgLi1mczIzeyBmb250LXNpemU6MS40MzhyZW0gIWltcG9ydGFudDt9IC4tZm9udC1zaXplMjQsIC4tZnMyNHsgZm9udC1zaXplOjEuNXJlbSAhaW1wb3J0YW50O30gLi1mb250LXNpemUyNSwgLi1mczI1eyBmb250LXNpemU6MS41NjNyZW0gIWltcG9ydGFudDt9IC4tZm9udC1zaXplMjYsIC4tZnMyNnsgZm9udC1zaXplOjEuNjI1cmVtICFpbXBvcnRhbnQ7fSAuLWZvbnQtc2l6ZTI3LCAuLWZzMjd7IGZvbnQtc2l6ZToxLjY4OHJlbSAhaW1wb3J0YW50O30gLi1mb250LXNpemUyOCwgLi1mczI4eyBmb250LXNpemU6MS43NXJlbSAhaW1wb3J0YW50O30gLi1mb250LXNpemUyOSwgLi1mczI5eyBmb250LXNpemU6MS44MTNyZW0gIWltcG9ydGFudDt9IC4tZm9udC1zaXplMzAsIC4tZnMzMHsgZm9udC1zaXplOjEuODc1cmVtICFpbXBvcnRhbnQ7fSAuLWZvbnQtc2l6ZTMxLCAuLWZzMzF7IGZvbnQtc2l6ZToxLjkzOHJlbSAhaW1wb3J0YW50O30gLi1mb250LXNpemUzMiwgLi1mczMyeyBmb250LXNpemU6MnJlbSAhaW1wb3J0YW50O30gLi1mb250LXNpemUzMywgLi1mczMzeyBmb250LXNpemU6Mi4wNjNyZW0gIWltcG9ydGFudDt9IC4tZm9udC1zaXplMzQsIC4tZnMzNHsgZm9udC1zaXplOjIuMTI1cmVtICFpbXBvcnRhbnQ7fSAuLWZvbnQtc2l6ZTM1LCAuLWZzMzV7IGZvbnQtc2l6ZToyLjE4OHJlbSAhaW1wb3J0YW50O30gLi1mb250LXNpemUzNiwgLi1mczM2eyBmb250LXNpemU6Mi4yNXJlbSAhaW1wb3J0YW50O30gLi1mb250LXNpemUzNywgLi1mczM3eyBmb250LXNpemU6Mi4zMTNyZW0gIWltcG9ydGFudDt9IC4tZm9udC1zaXplMzgsIC4tZnMzOHsgZm9udC1zaXplOjIuMzc1cmVtICFpbXBvcnRhbnQ7fSAuLWZvbnQtc2l6ZTM5LCAuLWZzMzl7IGZvbnQtc2l6ZToyLjQzOHJlbSAhaW1wb3J0YW50O30gLi1mb250LXNpemU0MCwgLi1mczQweyBmb250LXNpemU6Mi41cmVtICFpbXBvcnRhbnQ7fSAuLXJlZC1saW5lLWgzNXsgaGVpZ2h0OjM1cHg7IG1hcmdpbi1ib3R0b206LTM1cHg7IHBvc2l0aW9uOnJlbGF0aXZlOyB0b3A6LTI1cHg7IH0gI2JyZWFkY3J1bWJzeyBmb250LXNpemU6MXJlbSA7IG1hcmdpbi1sZWZ0OjEwcHg7IG1hcmdpbi10b3A6OHB4OyBtYXJnaW4tYm90dG9tOjE1cHg7IGNvbG9yOiM3NTc1NzU7IH0gLlVzZWRWZHAyTW9iaWxlICNicmVhZGNydW1ic3sgZm9udC1zaXplOjAuOXJlbTsgY29sb3I6IzIyMjIyMjsgZm9udC13ZWlnaHQ6Ym9sZDsgcGFkZGluZzoxMHB4OyBtYXJnaW46MDsgbGluZS1oZWlnaHQ6MS4yNXJlbTsgfSAjYnJlYWRjcnVtYnMgYXsgY29sb3I6Izc1NzU3NTsgfSAjY2FycHJvb2ZfbWFpbi5jYXJwcm9vZl9tYWlueyB3aWR0aDozNDBweDsgaGVpZ2h0OmF1dG87IGJhY2tncm91bmQtY29sb3I6I2ZmZjsgcGFkZGluZzoyMHB4OyBkaXNwbGF5Om5vbmU7IHotaW5kZXg6OTk5OTsgYm94LXNpemluZzpib3JkZXItYm94OyBib3JkZXItcmFkaXVzOjVweDsgcG9zaXRpb246Zml4ZWQ7IHRyYW5zZm9ybTp0cmFuc2xhdGVZKC01MCUpIHRyYW5zbGF0ZVgoLTUwJSk7IC1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtNTAlKSB0cmFuc2xhdGVYKC01MCUpOyBsZWZ0OjUwJTsgdG9wOjUwJTsgfSAjY2FycHJvb2ZfbWFpbiAuY2FycHJvb2ZDbG9zZUJ1dHRvbnsgZmxvYXQ6cmlnaHQ7IHRvcDowOyB9ICNjYXJwcm9vZl9tYWluIC5jYXJwcm9vZk1haW5EaXYgeyB3aWR0aDoxMDAlOyBoZWlnaHQ6YXV0bzsgcGFkZGluZzowOyBiYWNrZ3JvdW5kOiNmZmY7IGJveC1zaXppbmc6Ym9yZGVyLWJveDsgcG9zaXRpb246cmVsYXRpdmU7IGZsb2F0OmxlZnQ7IH0gI2NhcnByb29mX21haW4gLmNhcnByb29mTWFpbkRpdiBVTHsgd2lkdGg6MTAwJTsgYm94LXNpemluZzpib3JkZXItYm94OyBwYWRkaW5nOjAgIWltcG9ydGFudDsgfSAjY2FycHJvb2ZfbWFpbiAuY2FycHJvb2ZNYWluRGl2IFVMIExJIHsgbGlzdC1zdHlsZS10eXBlOm5vbmU7IHdpZHRoOjEwMCU7IGZsb2F0OmxlZnQ7IHBhZGRpbmc6MCAwIDVweCAwOyB9ICNjYXJwcm9vZl9tYWluIC5jYXJwcm9vZl9maWVsZHsgbWFyZ2luLWJvdHRvbTo3cHg7IH0gI2NhcnByb29mX21haW4gLmNhcnByb29mTWVzc2FnZXsgZm9udC1zaXplOjFyZW07IGNvbG9yOiMwMDA7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgcGFkZGluZy1ib3R0b206MTVweDsgcG9zaXRpb246cmVsYXRpdmU7IGZsb2F0OmxlZnQ7IHdpZHRoOjEwMCU7IGJveC1zaXppbmc6Ym9yZGVyLWJveDsgfSAjaW5uZXJQYWdlRGl2eyBkaXNwbGF5OnRhYmxlOyB9ICNjYXJwcm9vZl9tYWluIC5jYXJwcm9vZl9sYWJlbHsgZm9udC1zaXplOjFyZW07IGNvbG9yOiM2NjY2NjY7IGZvbnQtd2VpZ2h0OmJvbGQ7IGRpc3BsYXk6YmxvY2s7IGZsb2F0OmxlZnQ7IG1hcmdpbjowOyB0ZXh0LWFsaWduOmxlZnQ7IHdpZHRoOjEwMCU7IGxpbmUtaGVpZ2h0OjI1cHg7IGJveC1zaXppbmc6Ym9yZGVyLWJveDsgfSAjY2FycHJvb2ZfbWFpbiAuY2FycHJvb2ZfaW5wdXR7IGZvbnQtc2l6ZToxcmVtOyBwYWRkaW5nOjVweDsgYm9yZGVyOjFweCBzb2xpZCAjYjliZGMxOyB3aWR0aDoxMDAlOyBjb2xvcjojNzk3OTc5OyBib3gtc2l6aW5nOmJvcmRlci1ib3g7IG1hcmdpbi1ib3R0b206MTBweDsgYm9yZGVyLXJhZGl1czo1cHg7IH0gI2NhcnByb29mX21haW4gLmNhcnByb29mX2lucHV0OmZvY3VzIHsgYmFja2dyb3VuZC1jb2xvcjojRjRGNEY0OyBjb2xvcjojMDUxNDFmICFpbXBvcnRhbnQ7IH0gI2NhcnByb29mX21haW4gLnBob25lSW5wdXR7IGZvbnQtc2l6ZToxcmVtOyBwYWRkaW5nOjVweDsgYm9yZGVyOjFweCBzb2xpZCAjYjliZGMxOyB3aWR0aDo0N3B4OyBtYXJnaW4tcmlnaHQ6NXB4OyBjb2xvcjojNzk3OTc5OyBib3JkZXItcmFkaXVzOjVweDsgfSAjY2FycHJvb2ZfbWFpbiAucGhvbmVJbnB1dDpmb2N1cyB7IGJhY2tncm91bmQtY29sb3I6I0Y0RjRGNDsgY29sb3I6IzA1MTQxZjsgfSAjY2FycHJvb2ZfbWFpbiAuY2FycHJvb2ZfYnV0dG9uSUUgeyBib3JkZXI6MXB4IHNvbGlkICNDODNGNDE7IG1hcmdpbjoxMHB4IDEwcHggMTBweCAwOyBwYWRkaW5nOjNweCAxMHB4OyB0ZXh0LWFsaWduOmNlbnRlcjsgZmxvYXQ6cmlnaHQ7IHdpZHRoOjYwcHg7IGNvbG9yOiNmZmY7IGN1cnNvcjpwb2ludGVyOyBib3JkZXItdG9wLWNvbG9yOiNDODNGNDE7IGJvcmRlci1yaWdodC1jb2xvcjojQzgzRjQxOyBib3JkZXItYm90dG9tLWNvbG9yOiNDODNGNDE7IGJvcmRlci1sZWZ0LWNvbG9yOiNDODNGNDE7IGJvcmRlci10b3Atd2lkdGg6MXB4OyBib3JkZXItcmlnaHQtd2lkdGg6MXB4OyBib3JkZXItYm90dG9tLXdpZHRoOjFweDsgYm9yZGVyLWxlZnQtd2lkdGg6MXB4OyBib3JkZXItdG9wLXN0eWxlOnNvbGlkOyBib3JkZXItcmlnaHQtc3R5bGU6c29saWQ7IGJvcmRlci1ib3R0b20tc3R5bGU6c29saWQ7IGJvcmRlci1sZWZ0LXN0eWxlOnNvbGlkOyBib3JkZXItdG9wLWxlZnQtcmFkaXVzOjhweDsgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6OHB4OyBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czo4cHg7IGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6OHB4OyBib3gtc2hhZG93OjBweCAycHggM3B4ICM2NjY7IGJhY2tncm91bmQtaW1hZ2U6bm9uZTsgYmFja2dyb3VuZC1hdHRhY2htZW50OnNjcm9sbDsgYmFja2dyb3VuZC1yZXBlYXQ6cmVwZWF0OyBiYWNrZ3JvdW5kLXBvc2l0aW9uOjAgMDsgYmFja2dyb3VuZC1zaXplOmF1dG87IGJhY2tncm91bmQtb3JpZ2luOnBhZGRpbmctYm94OyBiYWNrZ3JvdW5kLWNsaXA6Ym9yZGVyLWJveDsgYmFja2dyb3VuZC1jb2xvcjpyZ2IoMjAwLCA2MywgNjUpOyBmb250LXdlaWdodDpub3JtYWw7IH0gI2NhcnByb29mX21haW4gLmNhcnByb29mX2J1dHRvbklFSG92ZXIgeyBiYWNrZ3JvdW5kLWNvbG9yOiNDODNGNDE7IGZvbnQtd2VpZ2h0OmJvbGQ7IH0gI2NhcnByb29mX21haW4gLmNhcnByb29mX2J1dHRvbiB7IGZvbnQtc2l6ZToxLjJyZW07IGZsb2F0OnJpZ2h0OyBtYXJnaW46MjVweCAwIDA7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgbGluZS1oZWlnaHQ6MXJlbTsgcGFkZGluZzoxMHB4IDE1cHg7IGN1cnNvcjpwb2ludGVyOyBjb2xvcjojZmZmOyB0ZXh0LWFsaWduOmNlbnRlcjsgdGV4dC1zaGFkb3c6MCAtMXB4IDFweCAjNjQ3OTllOyBiYWNrZ3JvdW5kOiNiYjAwMDM7IGJhY2tncm91bmQ6LW1vei1saW5lYXItZ3JhZGllbnQodG9wLCAjQzgzRjQxIDAlLCAjYmIwMDAzIDEwMCUpOyBiYWNrZ3JvdW5kOi13ZWJraXQtZ3JhZGllbnQobGluZWFyLCAwJSAwJSwgMCUgMTAwJSwgZnJvbSgjQzgzRjQxKSwgdG8oI2JiMDAwMykpOyBib3JkZXI6MXB4IHNvbGlkICM1YzZmOTE7IC1tb3otYm9yZGVyLXJhZGl1czo1cHg7IC13ZWJraXQtYm9yZGVyLXJhZGl1czo1cHg7IGJvcmRlci1yYWRpdXM6NXB4OyB3aWR0aDoxMDAlOyBib3gtc2l6aW5nOmJvcmRlci1ib3g7IH0gI2NhcnByb29mX21haW4gLmNhcnByb29mX2J1dHRvbjpob3ZlciB7IGJhY2tncm91bmQ6I0M4M0Y0MTsgY3Vyc29yOnBvaW50ZXI7IH0gI2NhcnByb29mX2RpYWxvZy1vdmVybGF5IHsgYmFja2dyb3VuZDpyZ2JhKDAsMCwwLC44KTsgcG9zaXRpb246Zml4ZWQ7IHRvcDowOyBsZWZ0OjA7IHJpZ2h0OjA7IGJvdHRvbTowOyB6LWluZGV4Ojk5OTg7IGRpc3BsYXk6bm9uZTsgfSAuY2FycHJvb2YtYmFkZ2UuZGVza3RvcCB7IG1hcmdpbi1sZWZ0Oi0xNXB4OyBoZWlnaHQ6NTZweDsgb3ZlcmZsb3c6aGlkZGVuOyBtYXJnaW4tdG9wOi0xMHB4OyBmbG9hdDpsZWZ0OyB9IC5wcmVQcm9jZXNzb3JIdG1sQ2FyUG9vZkFQSXJlcG9ydC5jYXJwcm9vZi1iYWRnZS5kZXNrdG9wLCAucHJlUHJvY2Vzc29yQ2FyUG9vZkFQSXJlcG9ydFY1LmNhcnByb29mLWJhZGdlLmRlc2t0b3AsIC5wcmVQcm9jZXNzb3JIdG1sQ2FyUHJvb2ZEZWZhdWx0LmNhcnByb29mLWJhZGdlLmRlc2t0b3AgeyB3aWR0aDoxMDZweDsgbWFyZ2luOjJweCA1cHggMCAwOyBmbG9hdDpsZWZ0OyB9ICNjYXJwcm9vZl9tYWluIGltZyB7IHdpZHRoOjUwJTsgZmxvYXQ6bGVmdDsgcG9zaXRpb246cmVsYXRpdmU7IG1hcmdpbjowIDAgMTVweCAwOyB9ICNhc1BvcFVweyBiYWNrZ3JvdW5kOiNmZmZmZmY7IHdpZHRoOjYwMHB4OyBwYWRkaW5nOjMwcHg7IGNvbG9yOiMwNTE0MWY7IHotaW5kZXg6MTAwMDAyMTsgfSAjYXNQb3BVcCAucG9wdXAtcG9saWN5IHsgbWluLWhlaWdodDoxMDBweDsgbWF4LWhlaWdodDoxNTBweDsgb3ZlcmZsb3cteTphdXRvOyB9IC5wb3B1cC1wb2xpY3kgYSB7IHRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7IGNvbG9yOmJsdWU7IH0gI2FzUG9wVXAgLmFzVGl0bGV7IHRleHQtYWxpZ246Y2VudGVyOyBmb250LXNpemU6Mi4yNXJlbSA7IGZvbnQtd2VpZ2h0OjsgbWFyZ2luLWJvdHRvbToyMHB4OyB9ICNhc1BvcFVwIC5idG5FeHBsaWNpdHsgZmxvYXQ6bGVmdDsgcGFkZGluZy1sZWZ0OjcwcHg7IHdpZHRoOjEwMHB4OyB9ICNhc1BvcFVwIC5idG5JbXBsaWNpdHsgZmxvYXQ6cmlnaHQ7IHdpZHRoOjEwMHB4OyBwYWRkaW5nLXJpZ2h0OjcwcHg7IH0gI2FzUHVyY2hhc2VJbnRlbnQucmV2ZWFsLW1vZGFsIHNwYW4uanFUcmFuc2Zvcm1SYWRpb1dyYXBwZXJ7IHBhZGRpbmc6MDsgbWFyZ2luOjZweCA0cHggMDsgfSAjYXNQdXJjaGFzZUludGVudCAucG9wdXAtcG9saWN5IHsgbWF4LWhlaWdodDoxNzBweDsgb3ZlcmZsb3cteTphdXRvOyBmb250LXdlaWdodDpib2xkOyB9ICNhc1B1cmNoYXNlSW50ZW50IC5hc1BJVGl0bGV7IHRleHQtYWxpZ246bGVmdDsgZm9udC1zaXplOjEuNTYzcmVtIDsgbWFyZ2luLWJvdHRvbTowOyBwYWRkaW5nLWJvdHRvbToxMHB4OyBkaXNwbGF5OmJsb2NrOyB9ICNhc1B1cmNoYXNlSW50ZW50IC52aVRleHR7IGNsZWFyOmJvdGg7IGZvbnQtd2VpZ2h0OmJvbGQ7IHBhZGRpbmctYm90dG9tOjEwcHg7IH0gI2FzUHVyY2hhc2VJbnRlbnQgLnZpT3B0aW9uc3sgbGlzdC1zdHlsZTpub25lOyBwYWRkaW5nOjVweDsgbWFyZ2luLWJvdHRvbTozcHg7IH0gI2FzUHVyY2hhc2VJbnRlbnQgLnZpT3B0aW9ucyBsaSB7IHBhZGRpbmc6MnB4OyB9ICNhc1B1cmNoYXNlSW50ZW50IC52aU9wdGlvbnMgbGl7IGNsZWFyOmJvdGg7IGZvbnQtc2l6ZToxMHB0OyB9ICNhc1B1cmNoYXNlSW50ZW50IGxpIGxhYmVseyBmb250LXNpemU6MTBwdDsgfSAjYXNQdXJjaGFzZUludGVudCAuYnV0dG9uRGVmYXVsdENvbG9yIHsgbWFyZ2luOjAgYXV0byA1cHg7IGRpc3BsYXk6YmxvY2s7IGNsZWFyOmJvdGg7IH0gI2FzUHVyY2hhc2VJbnRlbnQgLnN0ZXBzIHsgbGlzdC1zdHlsZTppbnNpZGUgbm9uZSBub25lOyB9ICNhc1B1cmNoYXNlSW50ZW50IC5zdGVwcyA+IGxpeyBiYWNrZ3JvdW5kOiNmZmY7IGJvcmRlcjoxcHggc29saWQgI2JiYmJiYjsgYm9yZGVyLXdpZHRoOjAgMXB4IDFweCAwOyBwYWRkaW5nOjE1cHg7IG1hcmdpbi1ib3R0b206MTVweDsgZm9udC1zaXplOjEwcHQ7IH0gI2FzUHVyY2hhc2VJbnRlbnQgLmFzeWVzbm8geyBmbG9hdDpsZWZ0OyBwYWRkaW5nLXJpZ2h0OjEwcHg7IHdpZHRoOjkwcHg7IH0gI2FzUHVyY2hhc2VJbnRlbnQgLmFzeWVzeyBwYWRkaW5nLWxlZnQ6OTBweDsgd2lkdGg6NzBweDsgfSAuY29uc2VudC5kaXNjbGFpbWVyIHsgdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTsgY29sb3I6Ymx1ZTsgYWxpZ24tc2VsZjpjZW50ZXI7IG1hcmdpbi1ib3R0b206dmFyKC0tcy0zKTsgY3Vyc29yOmhlbHA7IH0gLmN1c3RvbTVfbGVmdCwgLmN1c3RvbTI1X2xlZnQsIC5jdXN0b20zNV9sZWZ0LCAuY3VzdG9tNDVfbGVmdCwgLmN0YV9wcmljZSwuY3RhX2NyZWRpdCwuY3RhX3Rlc3REcml2ZSwuY3RhX2V2YWwsLmN0YV9zdmNwcm9tbywuY3RhX3NlcnZpY2UsLmN0YV9wYXJ0cywuY3RhX3RpcmVzIHsgd2lkdGg6MjgwcHg7IGhlaWdodDo2MXB4OyBwYWRkaW5nOjAgMTVweCAwIDYwcHg7IGRpc3BsYXk6dGFibGUtY2VsbDsgdmVydGljYWwtYWxpZ246bWlkZGxlOyBmb250LXNpemU6MXJlbSA7IGZvbnQtd2VpZ2h0OmJvbGQ7IGN1cnNvcjpwb2ludGVyOyBjb2xvcjojMTkxOTE5OyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9ib3gyNS5wbmcnKSBuby1yZXBlYXQgc2Nyb2xsIGxlZnQgdG9wOyBiYWNrZ3JvdW5kLXNpemU6NTg5cHggNTUwcHg7IH0gLmN0YV9wcmljZS5hbHQ6aG92ZXIsIC5jdGFfY3JlZGl0LmFsdDpob3ZlciwgLmN0YV90ZXN0RHJpdmUuYWx0OmhvdmVyLCAuY3RhX2V2YWwuYWx0OmhvdmVyLCAuY3RhX3NlcnZpY2UuYWx0OmhvdmVyLCAuY3RhX3BhcnRzLmFsdDpob3ZlciwgLmN0YV90aXJlcy5hbHQ6aG92ZXIsIC5jdGFfc3ZjcHJvbW8uYWx0OmhvdmVyIHsgY29sb3I6IzE5MTkxOTsgfSAuY3VzdG9tNTVfbGVmdCwgLmN1c3RvbTI1NV9sZWZ0LCAuY3VzdG9tMzU1X2xlZnQsIC5jdXN0b200NTVfbGVmdCwgLmN0YV9wcmljZS5hbHQsLmN0YV9wcmljZTpob3ZlciwgLmN0YV9jcmVkaXQuYWx0LCAuY3RhX2NyZWRpdDpob3ZlciwgLmN0YV90ZXN0RHJpdmUuYWx0LCAuY3RhX3Rlc3REcml2ZTpob3ZlciwgLmN0YV9ldmFsLmFsdCwgLmN0YV9ldmFsOmhvdmVyLCAuY3RhX3NlcnZpY2UuYWx0LCAuY3RhX3NlcnZpY2U6aG92ZXIsIC5jdGFfcGFydHMuYWx0LCAuY3RhX3BhcnRzOmhvdmVyLCAuY3RhX3RpcmVzLmFsdCwgLmN0YV90aXJlczpob3ZlciwgLmN0YV9zdmNwcm9tby5hbHQsIC5jdGFfc3ZjcHJvbW86aG92ZXIgeyBjb2xvcjojRkZGRkZGOyB9IC5jdGFfcHJpY2UsIC5jdGFfcHJpY2UuYWx0OmhvdmVyIHsgYmFja2dyb3VuZC1wb3NpdGlvbjowIDA7IH0gLmN0YV9wcmljZS5hbHQsIC5jdGFfcHJpY2U6aG92ZXIgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOi0zMDlweCAwOyB9IC5jdGFfY3JlZGl0LCAuY3RhX2NyZWRpdC5hbHQ6aG92ZXIgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOmxlZnQgLTY3cHg7IH0gLmN0YV9jcmVkaXQuYWx0LCAuY3RhX2NyZWRpdDpob3ZlciB7IGJhY2tncm91bmQtcG9zaXRpb246LTMwOXB4IC02N3B4OyB9IC5jdGFfdGVzdERyaXZlLCAuY3RhX3Rlc3REcml2ZS5hbHQ6aG92ZXIgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOmxlZnQgLTEzNXB4OyB9IC5jdGFfdGVzdERyaXZlLmFsdCwgLmN0YV90ZXN0RHJpdmU6aG92ZXIgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOi0zMDlweCAtMTM1cHg7IH0gLmN0YV9ldmFsLCAuY3RhX2V2YWwuYWx0OmhvdmVyIHsgYmFja2dyb3VuZC1wb3NpdGlvbjpsZWZ0IC0yMDRweDsgfSAuY3RhX2V2YWwuYWx0LCAuY3RhX2V2YWw6aG92ZXIgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOi0zMDlweCAtMjA0cHg7IH0gLmN0YV9zdmNwcm9tbywgLmN0YV9zdmNwcm9tby5hbHQ6aG92ZXIgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOmxlZnQgLTI3M3B4OyB9IC5jdGFfc3ZjcHJvbW8uYWx0LCAuY3RhX3N2Y3Byb21vOmhvdmVyIHsgYmFja2dyb3VuZC1wb3NpdGlvbjotMzA5cHggLTI3M3B4OyB9IC5jdGFfc2VydmljZSwgLmN0YV9zZXJ2aWNlLmFsdDpob3ZlciB7IGJhY2tncm91bmQtcG9zaXRpb246bGVmdCAtMzQxcHg7IH0gLmN0YV9zZXJ2aWNlLmFsdCwgLmN0YV9zZXJ2aWNlOmhvdmVyIHsgYmFja2dyb3VuZC1wb3NpdGlvbjotMzA5cHggLTM0MXB4OyB9IC5jdGFfcGFydHMsIC5jdGFfcGFydHMuYWx0OmhvdmVyIHsgYmFja2dyb3VuZC1wb3NpdGlvbjpsZWZ0IC00MTBweDsgfSAuY3RhX3BhcnRzLmFsdCwgLmN0YV9wYXJ0czpob3ZlciB7IGJhY2tncm91bmQtcG9zaXRpb246LTMwOXB4IC00MTBweDsgfSAuY3RhX3RpcmVzLCAuY3RhX3RpcmVzLmFsdDpob3ZlciB7IGJhY2tncm91bmQtcG9zaXRpb246bGVmdCAtNDgycHg7IH0gLmN0YV90aXJlcy5hbHQsIC5jdGFfdGlyZXM6aG92ZXIgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOi0zMDlweCAtNDgycHg7IH0gLmN0YV9zZXJ2aWNlLmhpZGVfdGV4dCwgLmN0YV9wYXJ0cy5oaWRlX3RleHQsIC5jdGFfdGlyZXMuaGlkZV90ZXh0LCAuY3RhX3ByaWNlLmhpZGVfdGV4dCwgLmN0YV9jcmVkaXQuaGlkZV90ZXh0LCAuY3RhX3Rlc3REcml2ZS5oaWRlX3RleHQsIC5jdGFfZXZhbC5oaWRlX3RleHQsIC5jdGFfc3ZjcHJvbW8uaGlkZV90ZXh0IHsgdGV4dC1pbmRlbnQ6LTIwMDBlbTsgfSBib2R5LkZSRU5DSCAuY3RhX3ByaWNlLmN1c3RvbSwgYm9keS5GUkVOQ0ggLmN0YV9wcmljZS5jdXN0b206aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2JsYW5rLmdpZicpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5GUkVOQ0ggLmN0YV9jcmVkaXQuY3VzdG9tLCBib2R5LkZSRU5DSCAuY3RhX2NyZWRpdC5jdXN0b206aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2JsYW5rLmdpZicpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5GUkVOQ0ggLmN0YV90ZXN0RHJpdmUuY3VzdG9tLCBib2R5LkZSRU5DSCAuY3RhX3Rlc3REcml2ZS5jdXN0b206aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2JsYW5rLmdpZicpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5GUkVOQ0ggLmN0YV9ldmFsLmN1c3RvbSwgYm9keS5GUkVOQ0ggLmN0YV9ldmFsLmN1c3RvbTpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYmxhbmsuZ2lmJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkZSRU5DSCAuY3RhX3NlcnZpY2UuY3VzdG9tLCBib2R5LkZSRU5DSCAuY3RhX3NlcnZpY2UuY3VzdG9tOmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9ibGFuay5naWYnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRlJFTkNIIC5jdGFfcGFydHMuY3VzdG9tLCBib2R5LkZSRU5DSCAuY3RhX3BhcnRzLmN1c3RvbTpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYmxhbmsuZ2lmJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkZSRU5DSCAuY3RhX3RpcmVzLmN1c3RvbSwgYm9keS5GUkVOQ0ggLmN0YV90aXJlcy5jdXN0b206aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2JsYW5rLmdpZicpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5GUkVOQ0ggLmN0YV9zdmNwcm9tby5jdXN0b20sIGJvZHkuRlJFTkNIIC5jdGFfc3ZjcHJvbW8uY3VzdG9tOmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9ibGFuay5naWYnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRU5HTElTSCAuY3RhX3ByaWNlLmN1c3RvbSwgYm9keS5FTkdMSVNIIC5jdGFfcHJpY2UuY3VzdG9tOmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9ibGFuay5naWYnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRU5HTElTSCAuY3RhX2NyZWRpdC5jdXN0b20sIGJvZHkuRU5HTElTSCAuY3RhX2NyZWRpdC5jdXN0b206aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2JsYW5rLmdpZicpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5FTkdMSVNIIC5jdGFfdGVzdERyaXZlLmN1c3RvbSwgYm9keS5FTkdMSVNIIC5jdGFfdGVzdERyaXZlLmN1c3RvbTpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYmxhbmsuZ2lmJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkVOR0xJU0ggLmN0YV9ldmFsLmN1c3RvbSwgYm9keS5FTkdMSVNIIC5jdGFfZXZhbC5jdXN0b206aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2JsYW5rLmdpZicpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5FTkdMSVNIIC5jdGFfc2VydmljZS5jdXN0b20sIGJvZHkuRU5HTElTSCAuY3RhX3NlcnZpY2UuY3VzdG9tOmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9ibGFuay5naWYnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRU5HTElTSCAuY3RhX3BhcnRzLmN1c3RvbSwgYm9keS5FTkdMSVNIIC5jdGFfcGFydHMuY3VzdG9tOmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9ibGFuay5naWYnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRU5HTElTSCAuY3RhX3RpcmVzLmN1c3RvbSwgYm9keS5FTkdMSVNIIC5jdGFfdGlyZXMuY3VzdG9tOmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9ibGFuay5naWYnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRU5HTElTSCAuY3RhX3N2Y3Byb21vLmN1c3RvbSwgYm9keS5FTkdMSVNIIC5jdGFfc3ZjcHJvbW8uY3VzdG9tOmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9ibGFuay5naWYnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRlJFTkNIIC5jdGFfcHJpY2UuYmxhY2ssIGJvZHkuRlJFTkNIIC5jdGFfcHJpY2UuYmxhY2s6aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2FjdGlvbl9idXR0b25zL0NUQV9wcmljZV9ibGFja19mci5wbmcnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRlJFTkNIIC5jdGFfY3JlZGl0LmJsYWNrLCBib2R5LkZSRU5DSCAuY3RhX2NyZWRpdC5ibGFjazpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYWN0aW9uX2J1dHRvbnMvQ1RBX2ZpbmFuY2VfYmxhY2tfZnIucG5nJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkZSRU5DSCAuY3RhX3Rlc3REcml2ZS5ibGFjaywgYm9keS5GUkVOQ0ggLmN0YV90ZXN0RHJpdmUuYmxhY2s6aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2FjdGlvbl9idXR0b25zL0NUQV90ZXN0ZHJpdmVfYmxhY2tfZnIucG5nJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkZSRU5DSCAuY3RhX2V2YWwuYmxhY2ssIGJvZHkuRlJFTkNIIC5jdGFfZXZhbC5ibGFjazpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYWN0aW9uX2J1dHRvbnMvQ1RBX3RyYWRlaW5fYmxhY2tfZnIucG5nJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkZSRU5DSCAuY3RhX3NlcnZpY2UuYmxhY2ssIGJvZHkuRlJFTkNIIC5jdGFfc2VydmljZS5ibGFjazpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYWN0aW9uX2J1dHRvbnMvQ1RBX3NlcnZpY2VfYmxhY2tfZnIucG5nJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkZSRU5DSCAuY3RhX3BhcnRzLmJsYWNrLCBib2R5LkZSRU5DSCAuY3RhX3BhcnRzLmJsYWNrOmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9hY3Rpb25fYnV0dG9ucy9DVEFfcGFydHNfYmxhY2tfZnIucG5nJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkZSRU5DSCAuY3RhX3RpcmVzLmJsYWNrLCBib2R5LkZSRU5DSCAuY3RhX3RpcmVzLmJsYWNrOmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9hY3Rpb25fYnV0dG9ucy9DVEFfdGlyZXNfYmxhY2tfZnIucG5nJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkZSRU5DSCAuY3RhX3N2Y3Byb21vLmJsYWNrLCBib2R5LkZSRU5DSCAuY3RhX3N2Y3Byb21vLmJsYWNrOmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9hY3Rpb25fYnV0dG9ucy9DVEFfcHJvbW9zZXJ2aWNlX2JsYWNrX2ZyLnBuZycpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5FTkdMSVNIIC5jdGFfcHJpY2UuYmxhY2ssIGJvZHkuRU5HTElTSCAuY3RhX3ByaWNlLmJsYWNrOmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9hY3Rpb25fYnV0dG9ucy9DVEFfcHJpY2VfYmxhY2tfZW4ucG5nJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkVOR0xJU0ggLmN0YV9jcmVkaXQuYmxhY2ssIGJvZHkuRU5HTElTSCAuY3RhX2NyZWRpdC5ibGFjazpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYWN0aW9uX2J1dHRvbnMvQ1RBX2ZpbmFuY2VfYmxhY2tfZW4ucG5nJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkVOR0xJU0ggLmN0YV90ZXN0RHJpdmUuYmxhY2ssIGJvZHkuRU5HTElTSCAuY3RhX3Rlc3REcml2ZS5ibGFjazpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYWN0aW9uX2J1dHRvbnMvQ1RBX3Rlc3Rkcml2ZV9ibGFja19lbi5wbmcnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRU5HTElTSCAuY3RhX2V2YWwuYmxhY2ssIGJvZHkuRU5HTElTSCAuY3RhX2V2YWwuYmxhY2s6aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2FjdGlvbl9idXR0b25zL0NUQV90cmFkZWluX2JsYWNrX2VuLnBuZycpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5FTkdMSVNIIC5jdGFfc2VydmljZS5ibGFjaywgYm9keS5FTkdMSVNIIC5jdGFfc2VydmljZS5ibGFjazpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYWN0aW9uX2J1dHRvbnMvQ1RBX3NlcnZpY2VfYmxhY2tfZW4ucG5nJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkVOR0xJU0ggLmN0YV9wYXJ0cy5ibGFjaywgYm9keS5FTkdMSVNIIC5jdGFfcGFydHMuYmxhY2s6aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2FjdGlvbl9idXR0b25zL0NUQV9wYXJ0c19ibGFja19lbi5wbmcnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRU5HTElTSCAuY3RhX3RpcmVzLmJsYWNrLCBib2R5LkVOR0xJU0ggLmN0YV90aXJlcy5ibGFjazpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYWN0aW9uX2J1dHRvbnMvQ1RBX3RpcmVzX2JsYWNrX2VuLnBuZycpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5FTkdMSVNIIC5jdGFfc3ZjcHJvbW8uYmxhY2ssIGJvZHkuRU5HTElTSCAuY3RhX3N2Y3Byb21vLmJsYWNrOmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9hY3Rpb25fYnV0dG9ucy9DVEFfcHJvbW9zZXJ2aWNlX2JsYWNrX2VuLnBuZycpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5GUkVOQ0ggLmN0YV9wcmljZS5ibHVlLCBib2R5LkZSRU5DSCAuY3RhX3ByaWNlLmJsdWU6aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2FjdGlvbl9idXR0b25zL0NUQV9wcmljZV9ibHVlX2ZyLnBuZycpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5GUkVOQ0ggLmN0YV9jcmVkaXQuYmx1ZSwgYm9keS5GUkVOQ0ggLmN0YV9jcmVkaXQuYmx1ZTpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYWN0aW9uX2J1dHRvbnMvQ1RBX2ZpbmFuY2VfYmx1ZV9mci5wbmcnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRlJFTkNIIC5jdGFfdGVzdERyaXZlLmJsdWUsIGJvZHkuRlJFTkNIIC5jdGFfdGVzdERyaXZlLmJsdWU6aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2FjdGlvbl9idXR0b25zL0NUQV90ZXN0ZHJpdmVfYmx1ZV9mci5wbmcnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRlJFTkNIIC5jdGFfZXZhbC5ibHVlLCBib2R5LkZSRU5DSCAuY3RhX2V2YWwuYmx1ZTpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYWN0aW9uX2J1dHRvbnMvQ1RBX3RyYWRlaW5fYmx1ZV9mci5wbmcnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRlJFTkNIIC5jdGFfc2VydmljZS5ibHVlLCBib2R5LkZSRU5DSCAuY3RhX3NlcnZpY2UuYmx1ZTpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYWN0aW9uX2J1dHRvbnMvQ1RBX3NlcnZpY2VfYmx1ZV9mci5wbmcnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRlJFTkNIIC5jdGFfcGFydHMuYmx1ZSwgYm9keS5GUkVOQ0ggLmN0YV9wYXJ0cy5ibHVlOmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9hY3Rpb25fYnV0dG9ucy9DVEFfcGFydHNfYmx1ZV9mci5wbmcnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRlJFTkNIIC5jdGFfdGlyZXMuYmx1ZSwgYm9keS5GUkVOQ0ggLmN0YV90aXJlcy5ibHVlOmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9hY3Rpb25fYnV0dG9ucy9DVEFfdGlyZXNfYmx1ZV9mci5wbmcnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRlJFTkNIIC5jdGFfc3ZjcHJvbW8uYmx1ZSwgYm9keS5GUkVOQ0ggLmN0YV9zdmNwcm9tby5ibHVlOmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9hY3Rpb25fYnV0dG9ucy9DVEFfcHJvbW9zZXJ2aWNlX2JsdWVfZnIucG5nJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkVOR0xJU0ggLmN0YV9wcmljZS5ibHVlLCBib2R5LkVOR0xJU0ggLmN0YV9wcmljZS5ibHVlOmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9hY3Rpb25fYnV0dG9ucy9DVEFfcHJpY2VfYmx1ZV9lbi5wbmcnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRU5HTElTSCAuY3RhX2NyZWRpdC5ibHVlLCBib2R5LkVOR0xJU0ggLmN0YV9jcmVkaXQuYmx1ZTpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYWN0aW9uX2J1dHRvbnMvQ1RBX2ZpbmFuY2VfYmx1ZV9lbi5wbmcnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRU5HTElTSCAuY3RhX3Rlc3REcml2ZS5ibHVlLCBib2R5LkVOR0xJU0ggLmN0YV90ZXN0RHJpdmUuYmx1ZTpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYWN0aW9uX2J1dHRvbnMvQ1RBX3Rlc3Rkcml2ZV9ibHVlX2VuLnBuZycpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5FTkdMSVNIIC5jdGFfZXZhbC5ibHVlLCBib2R5LkVOR0xJU0ggLmN0YV9ldmFsLmJsdWU6aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2FjdGlvbl9idXR0b25zL0NUQV90cmFkZWluX2JsdWVfZW4ucG5nJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkVOR0xJU0ggLmN0YV9zZXJ2aWNlLmJsdWUsIGJvZHkuRU5HTElTSCAuY3RhX3NlcnZpY2UuYmx1ZTpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYWN0aW9uX2J1dHRvbnMvQ1RBX3NlcnZpY2VfYmx1ZV9lbi5wbmcnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRU5HTElTSCAuY3RhX3BhcnRzLmJsdWUsIGJvZHkuRU5HTElTSCAuY3RhX3BhcnRzLmJsdWU6aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2FjdGlvbl9idXR0b25zL0NUQV9wYXJ0c19ibHVlX2VuLnBuZycpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5FTkdMSVNIIC5jdGFfdGlyZXMuYmx1ZSwgYm9keS5FTkdMSVNIIC5jdGFfdGlyZXMuYmx1ZTpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYWN0aW9uX2J1dHRvbnMvQ1RBX3RpcmVzX2JsdWVfZW4ucG5nJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkVOR0xJU0ggLmN0YV9zdmNwcm9tby5ibHVlLCBib2R5LkVOR0xJU0ggLmN0YV9zdmNwcm9tby5ibHVlOmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9hY3Rpb25fYnV0dG9ucy9DVEFfcHJvbW9zZXJ2aWNlX2JsdWVfZW4ucG5nJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkZSRU5DSCAuY3RhX3ByaWNlLnJlZCwgYm9keS5GUkVOQ0ggLmN0YV9wcmljZS5yZWQ6aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2FjdGlvbl9idXR0b25zL0NUQV9wcmljZV9yZWRfZnIucG5nJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkZSRU5DSCAuY3RhX2NyZWRpdC5yZWQsIGJvZHkuRlJFTkNIIC5jdGFfY3JlZGl0LnJlZDpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYWN0aW9uX2J1dHRvbnMvQ1RBX2ZpbmFuY2VfcmVkX2ZyLnBuZycpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5GUkVOQ0ggLmN0YV90ZXN0RHJpdmUucmVkLCBib2R5LkZSRU5DSCAuY3RhX3Rlc3REcml2ZS5yZWQ6aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2FjdGlvbl9idXR0b25zL0NUQV90ZXN0ZHJpdmVfcmVkX2ZyLnBuZycpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5GUkVOQ0ggLmN0YV9ldmFsLnJlZCwgYm9keS5GUkVOQ0ggLmN0YV9ldmFsLnJlZDpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYWN0aW9uX2J1dHRvbnMvQ1RBX3RyYWRlaW5fcmVkX2ZyLnBuZycpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5GUkVOQ0ggLmN0YV9zZXJ2aWNlLnJlZCwgYm9keS5GUkVOQ0ggLmN0YV9zZXJ2aWNlLnJlZDpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYWN0aW9uX2J1dHRvbnMvQ1RBX3NlcnZpY2VfcmVkX2ZyLnBuZycpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5GUkVOQ0ggLmN0YV9wYXJ0cy5yZWQsIGJvZHkuRlJFTkNIIC5jdGFfcGFydHMucmVkOmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9hY3Rpb25fYnV0dG9ucy9DVEFfcGFydHNfcmVkX2ZyLnBuZycpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5GUkVOQ0ggLmN0YV90aXJlcy5yZWQsIGJvZHkuRlJFTkNIIC5jdGFfdGlyZXMucmVkOmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9hY3Rpb25fYnV0dG9ucy9DVEFfdGlyZXNfcmVkX2ZyLnBuZycpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5GUkVOQ0ggLmN0YV9zdmNwcm9tby5yZWQsIGJvZHkuRlJFTkNIIC5jdGFfc3ZjcHJvbW8ucmVkOmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9hY3Rpb25fYnV0dG9ucy9DVEFfcHJvbW9zZXJ2aWNlX3JlZF9mci5wbmcnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRU5HTElTSCAuY3RhX3ByaWNlLnJlZCwgYm9keS5FTkdMSVNIIC5jdGFfcHJpY2UucmVkOmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9hY3Rpb25fYnV0dG9ucy9DVEFfcHJpY2VfcmVkX2VuLnBuZycpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5FTkdMSVNIIC5jdGFfY3JlZGl0LnJlZCwgYm9keS5FTkdMSVNIIC5jdGFfY3JlZGl0LnJlZDpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYWN0aW9uX2J1dHRvbnMvQ1RBX2ZpbmFuY2VfcmVkX2VuLnBuZycpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5FTkdMSVNIIC5jdGFfdGVzdERyaXZlLnJlZCwgYm9keS5FTkdMSVNIIC5jdGFfdGVzdERyaXZlLnJlZDpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYWN0aW9uX2J1dHRvbnMvQ1RBX3Rlc3Rkcml2ZV9yZWRfZW4ucG5nJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkVOR0xJU0ggLmN0YV9ldmFsLnJlZCwgYm9keS5FTkdMSVNIIC5jdGFfZXZhbC5yZWQ6aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2FjdGlvbl9idXR0b25zL0NUQV90cmFkZWluX3JlZF9lbi5wbmcnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRU5HTElTSCAuY3RhX3NlcnZpY2UucmVkLCBib2R5LkVOR0xJU0ggLmN0YV9zZXJ2aWNlLnJlZDpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYWN0aW9uX2J1dHRvbnMvQ1RBX3NlcnZpY2VfcmVkX2VuLnBuZycpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5FTkdMSVNIIC5jdGFfcGFydHMucmVkLCBib2R5LkVOR0xJU0ggLmN0YV9wYXJ0cy5yZWQ6aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2FjdGlvbl9idXR0b25zL0NUQV9wYXJ0c19yZWRfZW4ucG5nJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkVOR0xJU0ggLmN0YV90aXJlcy5yZWQsIGJvZHkuRU5HTElTSCAuY3RhX3RpcmVzLnJlZDpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYWN0aW9uX2J1dHRvbnMvQ1RBX3RpcmVzX3JlZF9lbi5wbmcnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRU5HTElTSCAuY3RhX3N2Y3Byb21vLnJlZCwgYm9keS5FTkdMSVNIIC5jdGFfc3ZjcHJvbW8ucmVkOmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9hY3Rpb25fYnV0dG9ucy9DVEFfcHJvbW9zZXJ2aWNlX3JlZF9lbi5wbmcnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRlJFTkNIIC5jdGFfcHJpY2UuZ3JleSwgYm9keS5GUkVOQ0ggLmN0YV9wcmljZS5ncmV5OmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9hY3Rpb25fYnV0dG9ucy9DVEFfcHJpY2VfZ3JleV9mci5wbmcnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRlJFTkNIIC5jdGFfY3JlZGl0LmdyZXksIGJvZHkuRlJFTkNIIC5jdGFfY3JlZGl0LmdyZXk6aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2FjdGlvbl9idXR0b25zL0NUQV9maW5hbmNlX2dyZXlfZnIucG5nJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkZSRU5DSCAuY3RhX3Rlc3REcml2ZS5ncmV5LCBib2R5LkZSRU5DSCAuY3RhX3Rlc3REcml2ZS5ncmV5OmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9hY3Rpb25fYnV0dG9ucy9DVEFfdGVzdGRyaXZlX2dyZXlfZnIucG5nJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkZSRU5DSCAuY3RhX2V2YWwuZ3JleSwgYm9keS5GUkVOQ0ggLmN0YV9ldmFsLmdyZXk6aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2FjdGlvbl9idXR0b25zL0NUQV90cmFkZWluX2dyZXlfZnIucG5nJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkZSRU5DSCAuY3RhX3NlcnZpY2UuZ3JleSwgYm9keS5GUkVOQ0ggLmN0YV9zZXJ2aWNlLmdyZXk6aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2FjdGlvbl9idXR0b25zL0NUQV9zZXJ2aWNlX2dyZXlfZnIucG5nJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkZSRU5DSCAuY3RhX3BhcnRzLmdyZXksIGJvZHkuRlJFTkNIIC5jdGFfcGFydHMuZ3JleTpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYWN0aW9uX2J1dHRvbnMvQ1RBX3BhcnRzX2dyZXlfZnIucG5nJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkZSRU5DSCAuY3RhX3RpcmVzLmdyZXksIGJvZHkuRlJFTkNIIC5jdGFfdGlyZXMuZ3JleTpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYWN0aW9uX2J1dHRvbnMvQ1RBX3RpcmVzX2dyZXlfZnIucG5nJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkZSRU5DSCAuY3RhX3N2Y3Byb21vLmdyZXksIGJvZHkuRlJFTkNIIC5jdGFfc3ZjcHJvbW8uZ3JleTpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYWN0aW9uX2J1dHRvbnMvQ1RBX3Byb21vc2VydmljZV9ncmV5X2ZyLnBuZycpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5FTkdMSVNIIC5jdGFfcHJpY2UuZ3JleSwgYm9keS5FTkdMSVNIIC5jdGFfcHJpY2UuZ3JleTpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYWN0aW9uX2J1dHRvbnMvQ1RBX3ByaWNlX2dyZXlfZW4ucG5nJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkVOR0xJU0ggLmN0YV9jcmVkaXQuZ3JleSwgYm9keS5FTkdMSVNIIC5jdGFfY3JlZGl0LmdyZXk6aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2FjdGlvbl9idXR0b25zL0NUQV9maW5hbmNlX2dyZXlfZW4ucG5nJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkVOR0xJU0ggLmN0YV90ZXN0RHJpdmUuZ3JleSwgYm9keS5FTkdMSVNIIC5jdGFfdGVzdERyaXZlLmdyZXk6aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2FjdGlvbl9idXR0b25zL0NUQV90ZXN0ZHJpdmVfZ3JleV9lbi5wbmcnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRU5HTElTSCAuY3RhX2V2YWwuZ3JleSwgYm9keS5FTkdMSVNIIC5jdGFfZXZhbC5ncmV5OmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9hY3Rpb25fYnV0dG9ucy9DVEFfdHJhZGVpbl9ncmV5X2VuLnBuZycpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5FTkdMSVNIIC5jdGFfc2VydmljZS5ncmV5LCBib2R5LkVOR0xJU0ggLmN0YV9zZXJ2aWNlLmdyZXk6aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2FjdGlvbl9idXR0b25zL0NUQV9zZXJ2aWNlX2dyZXlfZW4ucG5nJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkVOR0xJU0ggLmN0YV9wYXJ0cy5ncmV5LCBib2R5LkVOR0xJU0ggLmN0YV9wYXJ0cy5ncmV5OmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9hY3Rpb25fYnV0dG9ucy9DVEFfcGFydHNfZ3JleV9lbi5wbmcnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRU5HTElTSCAuY3RhX3RpcmVzLmdyZXksIGJvZHkuRU5HTElTSCAuY3RhX3RpcmVzLmdyZXk6aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2FjdGlvbl9idXR0b25zL0NUQV90aXJlc19ncmV5X2VuLnBuZycpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5FTkdMSVNIIC5jdGFfc3ZjcHJvbW8uZ3JleSwgYm9keS5FTkdMSVNIIC5jdGFfc3ZjcHJvbW8uZ3JleTpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYWN0aW9uX2J1dHRvbnMvQ1RBX3Byb21vc2VydmljZV9ncmV5X2VuLnBuZycpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5oZWFkaW5nQ2Fwc09uIGgxLCBib2R5LmhlYWRpbmdDYXBzT24gaDIsIGJvZHkuaGVhZGluZ0NhcHNPbiBoMywgYm9keS5oZWFkaW5nQ2Fwc09uIHNwYW4uaDItYWx0LCBib2R5LmhlYWRpbmdDYXBzT24gc3Bhbi5oMy1hbHQsIGJvZHkuaGVhZGluZ0NhcHNPbi5Vc2VkU3JwMiAuY2FyQmFzaWNzIC5jYXJUaXRsZSAuZGl2Q2l0eSwgYm9keS5oZWFkaW5nQ2Fwc09uIC52LWNhcmQgLmhlYWRlci1zZWN0aW9uIC5vcmcsIGJvZHkuaGVhZGluZ0NhcHNPbiAjZm9vdGVyIC5vcmcsIGJvZHkuaGVhZGluZ0NhcHNPbiAubG9nb2FyZWEgLmFkZHJlc3MgLmFkciBzcGFuOmZpcnN0LWNoaWxkLCBib2R5LmhlYWRpbmdDYXBzT24gI2Zvb3RlciAudml2LCBib2R5LmhlYWRpbmdDYXBzT24gLnNlYXJjaC1saW5rcy13cmFwcGVyIC5zZWFyY2gtbGluay10aXRsZSwgYm9keS5oZWFkaW5nQ2Fwc09uIC5wb3B1cGl6ZXJCb2R5ICN0cmFkZUluQmFyUG9wdXBfbGluZTEsIGJvZHkuaGVhZGluZ0NhcHNPbiAuY2Fyb3Vzc2VsIC5jYXJvdXNlbFRhYnMgLnRhYi1sYWJlbCwgYm9keS5oZWFkaW5nQ2Fwc09uIC5mb3JtSGVhZGluZywgYm9keS5oZWFkaW5nQ2Fwc09uIC5jb21wYXJlLXZlaGljbGVzLWZvcm0tdGFibGUgLnRyaW0tcHJldmlldyAuY29tcGFyZS10aXRsZSB7IHRleHQtdHJhbnNmb3JtOnVwcGVyY2FzZSAhaW1wb3J0YW50OyB9IGJvZHkuaGVhZGluZ0NhcHNPbiAuY2Fyb3Vzc2VsIC5jYXJvdXNlbFRhYnMgLnRhYi1sYWJlbCB7IGZvbnQtc2l6ZToxLjI1cmVtOyB9IEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDoxMzAxcHgpIHsgYm9keS5oZWFkaW5nQ2Fwc09uIC5kaXZDZXJ0aWZpY2F0aW9uQmxvY2sgaDIuZGVmYXVsdCB7IGZvbnQtc2l6ZToxLjRyZW0gIWltcG9ydGFudDsgfSB9IC5kaXZDZXJ0aWZpY2F0aW9uQmxvY2sgaDIgc3Bhbi5pY29uLCAuZGl2Q2VydGlmaWNhdGlvbkJsb2NrIHNwYW4uaDItYWx0IHNwYW4uaWNvbiB7IG1pbi13aWR0aDoyMHB4OyB9IC5kaXZDZXJ0aWZpY2F0aW9uQmxvY2sgLmNlcnQtdGl0bGUgeyBkaXNwbGF5OmJsb2NrOyBtYXJnaW4tbGVmdDoyMHB4OyBmb250LXNpemU6MS4zZW07IH0gLmRpdkNlcnRpZmljYXRpb25CbG9jayAuY2VydC1zdWJ0aXRsZSB7IGRpc3BsYXk6YmxvY2s7IG1hcmdpbi1sZWZ0OjIwcHg7IG1hcmdpbi1ib3R0b206MTBweDsgY29sb3I6Izc3NzsgZm9udC1zaXplOjFlbTsgbWFyZ2luLXRvcDo1cHg7IH0gLmRpdkNlcnRpZmljYXRpb25CbG9jayAuY2VydC1oaWdobGlnaHRlZC12YWx1ZSB7IGJhY2tncm91bmQtY29sb3I6IzAwMDsgYm9yZGVyOjFweCBzb2xpZCAjMDAwOyBjb2xvcjojRkZGOyBwYWRkaW5nOjExcHggMjBweCA5cHggMjBweDsgYm9yZGVyLXJhZGl1czozcHg7IGRpc3BsYXk6aW5saW5lLWJsb2NrOyB9IC5Jbm5lckJveExheWVyLmRpdkNlcnRpZmljYXRpb25CbG9jay5pc09uZVJvdyBpbWcgeyBtYXgtd2lkdGg6YXV0byAhaW1wb3J0YW50OyB9IC51c2VkVmRwQWN0aW9ucyAuYWN0aW9uLWJveCBhLmJ0bi1kZWZhdWx0IHsgd2lkdGg6MTAwJSAhaW1wb3J0YW50OyBkaXNwbGF5OmJsb2NrICFpbXBvcnRhbnQ7IG1hcmdpbi1ib3R0b206MTBweCAhaW1wb3J0YW50OyB9IC5jdGFfcHJpY2U6aG92ZXIsIC5jdGFfY3JlZGl0OmhvdmVyLCAuY3RhX3Rlc3REcml2ZTpob3ZlciwgLmN0YV9ldmFsOmhvdmVyLCAuY3RhX3NlcnZpY2U6aG92ZXIsIC5jdGFfcGFydHM6aG92ZXIsIC5jdGFfdGlyZXM6aG92ZXIsIC5jdGFfc3ZjcHJvbW86aG92ZXJ7IG9wYWNpdHk6MC43NTsgfSAuc2VhcmNoX2NlcnRfZ2VuZXJpY3sgaGVpZ2h0OjQ0cHg7IG1hcmdpbjoycHggNXB4IDAgMDsgZmxvYXQ6bGVmdDsgbWFyZ2luLXRvcDotMHB4OyB9ICNuZXdDYXJJblVzZWRQYWdleyBtYXJnaW4tdG9wOi0ycHg7IG1hcmdpbi1ib3R0b206NXB4OyBkaXNwbGF5Om5vbmU7IHRleHQtZGVjb3JhdGlvbjpub25lOyB9ICNuZXdDYXJJblVzZWRQYWdlIC5ib3gyODhfdG9weyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9yaWdodF9ib3g0X3RvcC5wbmcnKSBuby1yZXBlYXQgc2Nyb2xsIGxlZnQgdG9wIHRyYW5zcGFyZW50OyB9ICNuZXdDYXJJblVzZWRQYWdlIC5ib3gyODgwX21pZHsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvcmlnaHRfYm94NF9taWQucG5nJykgcmVwZWF0LXkgc2Nyb2xsIGxlZnQgdG9wIHRyYW5zcGFyZW50IH0gI25ld0NhckluVXNlZFBhZ2UgLmJveDI4OF9mb290ZXJfcXN7IGJhY2tncm91bmQgOnVybCgnL2ltYWdlcy9yaWdodF9ib3g0X2Zvb3Rlci5wbmcnKSBuby1yZXBlYXQgc2Nyb2xsIGxlZnQgdG9wIHRyYW5zcGFyZW50IH0gI25ld0NhckluVXNlZFBhZ2Vfc2NyYXRjaFByaWNleyB3aWR0aDoxMTBweDsgaGVpZ2h0OjM1cHg7IGZsb2F0OnJpZ2h0OyBwb3NpdGlvbjpyZWxhdGl2ZTsgbGVmdDotODNweDsgZGlzcGxheTpub25lOyB9ICNuZXdDYXJJblVzZWRQYWdlX3RpdGxleyBkaXNwbGF5OmJsb2NrO3RleHQtYWxpZ246Y2VudGVyO2ZvbnQtc2l6ZTowLjkzOHJlbSA7Zm9udC13ZWlnaHQ6Ym9sZDt0ZXh0LWRlY29yYXRpb246bm9uZTsgfSB1bCNjcmVkaXRfZHJpdmV0cmFpbiwgdWwjY3JlZGl0X2Z1ZWx0eXBlLCB1bCNjcmVkaXRfYm9keVR5cGVzIHsgbGlzdC1zdHlsZTpub25lOyBmbG9hdDpsZWZ0OyB3aWR0aDozMyU7IHBhZGRpbmctYm90dG9tOjEwcHg7IH0gdWwjY3JlZGl0X2RyaXZldHJhaW4gbGkgPiBsYWJlbCwgdWwjY3JlZGl0X2Z1ZWx0eXBlIGxpID4gbGFiZWwsIHVsI2NyZWRpdF9ib2R5VHlwZXMgbGkgPiBsYWJlbHsgZGlzcGxheTpibG9jazsgcGFkZGluZy1ib3R0b206NXB4OyBmb250LXdlaWdodDpub3JtYWw7IGZvbnQtc2l6ZTowLjgxM3JlbSA7IGNvbG9yOiMyNDI0MjQ7IGZsb2F0Om5vbmU7IH0gdWwjY3JlZGl0X2RyaXZldHJhaW4gbGkgPiBkaXYsIHVsI2NyZWRpdF9mdWVsdHlwZSBsaSA+IGRpdiwgdWwjY3JlZGl0X2JvZHlUeXBlcyBsaSA+IGRpdnsgZGlzcGxheTpibG9jazsgcGFkZGluZy1ib3R0b206NXB4OyBmb250LXdlaWdodDpub3JtYWw7IGZvbnQtc2l6ZTowLjgxM3JlbSA7IGNvbG9yOiMwNTE0MWY7IGZsb2F0Om5vbmU7IH0gdWwjY3JlZGl0X2RyaXZldHJhaW4gbGkgPiBsYWJlbCA+IHNwYW4sIHVsI2NyZWRpdF9mdWVsdHlwZSBsaSA+IGxhYmVsID4gc3BhbiwgdWwjY3JlZGl0X2JvZHlUeXBlcyBsaSA+IGxhYmVsID4gc3BhbnsgbWFyZ2luLXJpZ2h0OjhweDsgbWFyZ2luLXRvcDowcHg7IH0gI2NyZWRpdF92aV9hZHZhbmNlZCBsYWJlbHsgZmxvYXQ6bGVmdDsgfSAjY3JlZGl0X3ZpX2FkdmFuY2VkIGxhYmVsIGRpdi5sYWJlbHsgZmxvYXQ6bGVmdDsgbGluZS1oZWlnaHQ6MzJweDsgbWFyZ2luLXJpZ2h0OjZweDsgd2lkdGg6MjAwcHg7IHRleHQtYWxpZ246cmlnaHQ7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgZm9udC1zaXplOjAuODEzcmVtIDsgY29sb3I6IzI0MjQyNDsgfSAuZGV0YWlsc19ib3ggLmJveDJfZGV0YWlsc19taWQgLmJveDJfZGV0YWlsc190ZXh0LCAuZGV0YWlsc19ib3ggLmJveDJfZGV0YWlsc19taWQgLmJveDJfZGV0YWlsc190ZXh0MjUgc3BhbiwgLmRldGFpbHNfYm94IC5ib3gyX2RldGFpbHNfbWlkIC5ib3gyX2RldGFpbHNfdGV4dCBzcGFueyBjb2xvcjojMDUxNDFmOyB9IC51c3AtY29sb3IgeyBjb2xvcjojMDUxNDFmOyB9IC5teWNhcm91c2VsX3RkeyBkaXNwbGF5OmJsb2NrOyB3aWR0aDo1NjBweDsgb3ZlcmZsb3c6aGlkZGVuOyBtYXJnaW4tbGVmdDozMHB4OyBtYXJnaW4tdG9wOjEwcHg7IH0gLnZlaGljbGVDYXJvdXNlbHsgd2lkdGg6MTkwcHg7IH0gLmRldGFpbHNfYm94LCAuZGV0YWlsc19ib3ggLmJveDJfZGV0YWlsc19taWRFeCB7IGJhY2tncm91bmQ6I2I1YjViNDsgfSAjZXh0Q29sb3JTZWxlY3QuZml4ZWRXaWR0aCAsICNpbnRDb2xvclNlbGVjdC5maXhlZFdpZHRoIHsgd2lkdGg6MjMwcHg7IH0gLmNvbG9yQ2hvaWNleyBoZWlnaHQ6MzFweDsgd2lkdGg6MzFweDsgdGV4dC1hbGlnbjpjZW50ZXI7IHRleHQtaW5kZW50Oi0yMDAwZW07IGxpbmUtaGVpZ2h0OjMxcHg7IGZvbnQtc2l6ZTowLjkzOHJlbSA7IGZvbnQtd2VpZ2h0OmJvbGQ7IGZsb2F0OmxlZnQ7IGJvcmRlcjoxcHggc29saWQgIzAwMDsgbWFyZ2luOjJweDsgY29sb3I6I2ZmZjsgfSAuY29sb3JDaG9pY2UuY2hvc2VuIHsgdGV4dC1pbmRlbnQ6MDsgfSAuY29sb3JDaG9pY2UudGFuIHsgYmFja2dyb3VuZC1jb2xvcjojZDJiNDhjOyB9IC5jb2xvckNob2ljZS5ibGFjayB7IGJhY2tncm91bmQtY29sb3I6IzAwMDAwMDsgfSAuY29sb3JDaG9pY2UuZ29sZCB7IGJhY2tncm91bmQtY29sb3I6I2IyOTYwMDsgfSAuY29sb3JDaG9pY2UuYnJvd24geyBiYWNrZ3JvdW5kLWNvbG9yOiM2NjMzMGU7IH0gLmNvbG9yQ2hvaWNlLmdyZWVuIHsgYmFja2dyb3VuZC1jb2xvcjojMDA5OTAwOyB9IC5jb2xvckNob2ljZS5ncmF5IHsgYmFja2dyb3VuZC1jb2xvcjojOTc5Nzk3OyB9IC5jb2xvckNob2ljZS5ncmV5IHsgYmFja2dyb3VuZC1jb2xvcjojOTc5Nzk3OyB9IC5jb2xvckNob2ljZS5vcmFuZ2UgeyBiYWNrZ3JvdW5kLWNvbG9yOiNlNjk0MDA7IH0gLmNvbG9yQ2hvaWNlLnNpbHZlciB7IGJhY2tncm91bmQtY29sb3I6I2MwYzBjMDsgY29sb3I6IzA1MTQxZjsgfSAuY29sb3JDaG9pY2UubWF1dmUgeyBiYWNrZ3JvdW5kLWNvbG9yOiNkNDczZDQ7IH0gLmNvbG9yQ2hvaWNlLnJlZCB7IGJhY2tncm91bmQtY29sb3I6I2NjMDAwMDsgfSAuY29sb3JDaG9pY2Uud2hpdGUgeyBiYWNrZ3JvdW5kLWNvbG9yOiNGRkZGRkY7IGNvbG9yOiMwNTE0MWY7IH0gLmNvbG9yQ2hvaWNlLnllbGxvdyB7IGJhY2tncm91bmQtY29sb3I6I2YwYzAwMDsgY29sb3I6IzA1MTQxZjsgfSAuY29sb3JDaG9pY2UuYmx1ZSB7IGJhY2tncm91bmQtY29sb3I6IzE5MTljNDsgfSAuY29sb3JDaG9pY2UuY29wcGVyIHsgYmFja2dyb3VuZC1jb2xvcjojQUY0NzQ0OyB9IC5jb2xvckNob2ljZS5wdXJwbGUgeyBiYWNrZ3JvdW5kLWNvbG9yOiM1MzE1QjI7IH0gLmxpZ2h0LWdyYXkgeyBiYWNrZ3JvdW5kLWNvbG9yOiM0YjRjNGM7IGNvbG9yOiMwNTE0MWY7fSBhLmNvbG9yQ2hvaWNlIHsgY29sb3I6I2ZmZjsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IH0gdHIuYm9yZGVyX2JvdHRvbV9saW5lIHRkLCB0ci5ib3JkZXJfYm90dG9tX2xpbmUgdGggeyBib3JkZXItYm90dG9tOjFwdCBzb2xpZCBibGFjazsgfSAuYm9yZGVyX2JveHsgYm9yZGVyLXJhZGl1czo1cHg7IG1hcmdpbi1ib3R0b206NXB4OyBiYWNrZ3JvdW5kLWNvbG9yOnJnYigyNTUsMjU1LDI1NSk7IC1tcy1maWx0ZXI6cHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkFscGhhKE9wYWNpdHk9MTAwKTsgYmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LDEpOyBib3gtc2hhZG93Om5vbmU7IGNsZWFyOmJvdGg7IH0gLmhvbWVwYWdlIC5ib3JkZXJfYm94eyBib3gtc2hhZG93Om5vbmUhaW1wb3J0YW50OyB9ICNob21lX3NvY2lhbFRpbWVsaW5leyBiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWhvbWVwYWdlLXNvY2lhbC1iZy1jb2xvcik7IH0gI2Zvb3RlcldyYXBwZXJ7IHdpZHRoOjEwMCU7IG1hcmdpbi10b3A6MHB4OyBjbGVhcjpib3RoOyBwYWRkaW5nLXRvcDoxNXB4OyBjb2xvcjp2YXIoLS1mb290ZXItaXRlbXMtbGluay1jb2xvcik7IGNvbG9yOiNmZmZmZmY7IGJhY2tncm91bmQtY29sb3I6I2ZmZmZmZjsgYmFja2dyb3VuZC1jb2xvcjojMDUxNDFmOyB9ICNmb290ZXJXcmFwcGVyIHN2ZyB7IGZpbGw6dmFyKC0tZm9vdGVyLWxpbmstdGl0bGUtY29sKTsgfSAuY3VzdG9tZm9ybV9zdWJtaXR7IG1hcmdpbi10b3A6MjBweDsgbWFyZ2luLWJvdHRvbToyMHB4OyB9IC5zZWVPcHRpb25zeyBkaXNwbGF5Om5vbmU7IH0gLnN0cmlrZS1wcmljZSwgLnN0cmlrZS1wcmljZS1ibGFjaywgLnN0cmlrZS1wcmljZS13aGl0ZSB7IGRpc3BsYXk6aW5saW5lLWJsb2NrOyBwb3NpdGlvbjpyZWxhdGl2ZTsgfSAuc3RyaWtlLXByaWNlOjpiZWZvcmUsIC5zdHJpa2UtcHJpY2UtYmxhY2s6OmJlZm9yZSwgLnN0cmlrZS1wcmljZS13aGl0ZTo6YmVmb3JlIHsgY29udGVudDoiIjsgaGVpZ2h0OjJweDsgcG9zaXRpb246YWJzb2x1dGU7IHRvcDo0MCU7IC1tb3otdHJhbnNmb3JtOnJvdGF0ZSg3ZGVnKTsgLXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDdkZWcpOyB0cmFuc2Zvcm06cm90YXRlKDdkZWcpOyB0cmFuc2Zvcm0tb3JpZ2luOjUwJSA1MCUgMDsgd2lkdGg6MTAwJTsgfSAuc3RyaWtlLXByaWNlLi10aGluOjpiZWZvcmV7IGhlaWdodDoxcHg7IH0gLnN0cmlrZS1wcmljZTo6YmVmb3JlIHsgYmFja2dyb3VuZDpub25lIHJlcGVhdCBzY3JvbGwgMCAwICMwMDA7IH0gLnN0cmlrZS1wcmljZS1ibGFjazo6YmVmb3JlIHsgYmFja2dyb3VuZDpub25lIHJlcGVhdCBzY3JvbGwgMCAwIGJsYWNrOyB9IC5zdHJpa2UtcHJpY2Utd2hpdGU6OmJlZm9yZSB7IGJhY2tncm91bmQ6bm9uZSByZXBlYXQgc2Nyb2xsIDAgMCB3aGl0ZTsgfSAuYmx1ci1wcmljZSB7IC13ZWJraXQtZmlsdGVyOmJsdXIoMC4xNWVtKTsgLW1vei1maWx0ZXI6Ymx1cigwLjE1ZW0pOyAtbXMtZmlsdGVyOmJsdXIoMC4xNWVtKTsgLW8tZmlsdGVyOmJsdXIoMC4xNWVtKTsgZmlsdGVyOnVybCgiZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsPHN2ZyBoZWlnaHQ9JzAnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zyc+PGZpbHRlciBpZD0nc3ZnQmx1cicgeD0nLTUlJyB5PSctNSUnIHdpZHRoPScxMTAlJyBoZWlnaHQ9JzExMCUnPjxmZUdhdXNzaWFuQmx1ciBpbj0nU291cmNlR3JhcGhpYycgc3RkRGV2aWF0aW9uPSc1Jy8+I3N2Z0JsdXIiKTsgZmlsdGVyOnByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5CbHVyKFBpeGVsUmFkaXVzPSc1Jyk7IGZpbHRlcjpibHVyKDAuMTVlbSk7IH0gLmxlZnRfYm94eyBiYWNrZ3JvdW5kLWNvbG9yOnJnYigyNTUsMjU1LDI1NSk7IC1tcy1maWx0ZXI6cHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkFscGhhKE9wYWNpdHk9MTAwKTsgYmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LDEpOyBtYXJnaW4tdG9wOjEwcHggOyBwYWRkaW5nOjEwcHggMCAxMHB4OyBmbG9hdDpsZWZ0OyBoZWlnaHQ6YXV0bzsgYm9yZGVyLXJhZGl1czo1cHg7IGJveC1zaGFkb3c6bm9uZTsgfSAuYnRuLWRlZmF1bHQsIC5idG4tc20sIC5idG4tbGcsLmN1c3RvbWZvcm1fc3VibWl0LC5zdWJtaXR7IC1tb3otYm9yZGVyLXJhZGl1czozcHg7IC13ZWJraXQtYm9yZGVyLXJhZGl1czozcHg7IGRpc3BsYXk6aW5saW5lLWJsb2NrOyBjdXJzb3I6cG9pbnRlcjsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IHRleHQtdHJhbnNmb3JtOnZhcigtLWNlcnQtdHh0LXRyYW5zZm9ybSwgdmFyKC0tdHh0LXVwcGVyKSk7IH0gLmJ0bi1kZWZhdWx0eyBiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmY7IH0gLmJ0bi1kZWZhdWx0LCAuc3VibWl0LCAuY3VzdG9tZm9ybV9zdWJtaXQsIGlucHV0W3R5cGU9YnV0dG9uXS5idG4tZGVmYXVsdCwgaW5wdXRbdHlwZT1zdWJtaXRdLmJ0bi1kZWZhdWx0IHsgcGFkZGluZzoxMXB4IDIwcHggOXB4IDIwcHg7IGJvcmRlci1yYWRpdXM6M3B4OyB9IC5idG4tc20sIGlucHV0W3R5cGU9YnV0dG9uXS5idG4tc20sIGlucHV0W3R5cGU9c3VibWl0XS5idG4tc20geyBmb250LXNpemU6aW5oZXJpdCFpbXBvcnRhbnQ7IHBhZGRpbmc6NHB4IDEwcHghaW1wb3J0YW50OyBib3JkZXItcmFkaXVzOjNweCFpbXBvcnRhbnQ7IH0gLmJ0bi1sZywgaW5wdXRbdHlwZT1idXR0b25dLmJ0bi1sZywgaW5wdXRbdHlwZT1zdWJtaXRdLmJ0bi1sZyB7IGZvbnQtc2l6ZToxLjA2M3JlbSA7IHBhZGRpbmc6MTJweCA1MHB4OyBib3JkZXItcmFkaXVzOjZweDsgZm9udC13ZWlnaHQ6Ym9sZDsgfSAuYnRuLWRlZmF1bHQ6Zm9jdXMsIC5jdXN0b21mb3JtX3N1Ym1pdDpmb2N1cywgLmJ0bi1zbTpmb2N1cywgLmJ0bi1sZzpmb2N1cywgI2V4aXRfcG9wdXBfeWVzOmZvY3VzLCAjZXhpdF9wb3B1cF9ubzpmb2N1cyB7IG91dGxpbmU6bm9uZTsgfSAuYnRuLWRlZmF1bHQuYXBwbHktY3JlZGl0IHsgZGlzcGxheTppbmxpbmUtYmxvY2s7IHZlcnRpY2FsLWFsaWduOnRvcDsgd29yZC13cmFwOm5vcm1hbDsgd2lkdGg6MTAwcHg7IHRleHQtYWxpZ246Y2VudGVyOyBwYWRkaW5nOjNweCA1cHg7IGZvbnQtc2l6ZTowLjc1cmVtIDsgfSAuYnRuLWRlZmF1bHQsIC5jdXN0b21mb3JtX3N1Ym1pdCwgaW5wdXRbdHlwZT1idXR0b25dLmJ0bi1kZWZhdWx0LCBpbnB1dFt0eXBlPXN1Ym1pdF0uYnRuLWRlZmF1bHR7IGZvbnQtc2l6ZTowLjhyZW07IH0gLmJ0bi1kZWZhdWx0LCAuYnRuLXNtLC5idG4tbGcsIC5zdWJtaXQsICNzbGlkZWl0IGlucHV0LnNlbmQsIC5jdXN0b21mb3JtX3N1Ym1pdCB7IGJhY2tncm91bmQtY29sb3I6dmFyKC0tdGFiLWNvbG9yKTsgYm9yZGVyLXdpZHRoOjFweDsgYm9yZGVyLXN0eWxlOnNvbGlkOyBib3JkZXItY29sb3I6dmFyKC0tdGFiLXRleHQtY29sb3IpOyBjb2xvcjp2YXIoLS10YWItdGV4dC1jb2xvcik7IHRleHQtc2hhZG93Om5vbmU7IH0gLmJ0bi1kZWZhdWx0LmJ0bi1iZy1zYW1lIHsgYm9yZGVyLWNvbG9yOiNmZmZmZmY7IH0gLmJ0bi1kZWZhdWx0LmJ0bi1iZy1zYW1lOmhvdmVyIHsgYm9yZGVyLWNvbG9yOiNmZmZmZmY7IH0gLmJ0bi1kZWZhdWx0OmhvdmVyLCAuY3VzdG9tZm9ybV9zdWJtaXQ6aG92ZXIsIC5idG4tc206aG92ZXIsIC5idG4tbGc6aG92ZXIsIC5zdWJtaXQ6aG92ZXIsICNzbGlkZWl0IGlucHV0LnNlbmQ6aG92ZXIgeyBiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLW1lbnUtaG92ZXItYmctY29sb3IpOyBib3JkZXItd2lkdGg6MXB4OyBib3JkZXItc3R5bGU6c29saWQ7IGJvcmRlci1jb2xvcjp2YXIoLS1tZW51LWhvdmVyLXRleHQtY29sb3IpOyBjb2xvcjp2YXIoLS1tZW51LWhvdmVyLXRleHQtY29sb3IpOyB9IC5idG4tZGVmYXVsdC5wcm9tb2NvbG9yLCAuYnRuLXNtLnByb21vY29sb3IsIC5idG4tbGcucHJvbW9jb2xvciB7IGJhY2tncm91bmQtY29sb3I6IzA1MTQxZjsgYm9yZGVyOjFweCBzb2xpZCAjMDUxNDFmOyBjb2xvcjojZmZmZmZmOyB9IC5idG4tZGVmYXVsdC5wcm9tb2NvbG9yOmhvdmVyLCAuYnRuLXNtLnByb21vY29sb3I6aG92ZXIsIC5idG4tbGcucHJvbW9jb2xvcjpob3ZlcnsgYmFja2dyb3VuZC1jb2xvcjojZmZmZmZmOyBjb2xvcjojMDUxNDFmOyB9IC5idG4tZGVmYXVsdC5ibGFjaywgLmJ0bi1zbS5ibGFjaywgLmJ0bi1sZy5ibGFjayB7IGJhY2tncm91bmQtY29sb3IgOiMwMDAwMDA7IGJvcmRlciA6MXB4IHNvbGlkICMwMDAwMDA7IGNvbG9yIDojZmZmZmZmOyB9IC5idG4tZGVmYXVsdC5ibGFjay53aXRoYm9yZGVyLCAuYnRuLXNtLmJsYWNrLndpdGhib3JkZXIsIC5idG4tbGcuYmxhY2sud2l0aGJvcmRlciB7IGJvcmRlciA6MXB4IHNvbGlkICNmZmZmZmY7IH0gLmJ0bi1kZWZhdWx0LmJsYWNrOmhvdmVyLCAuYnRuLXNtLmJsYWNrOmhvdmVyLCAuYnRuLWxnLmJsYWNrOmhvdmVyIHsgYmFja2dyb3VuZC1jb2xvciA6I2ZmZmZmZjsgY29sb3I6IzAwMDAwMDsgfSAuYnRuLWRlZmF1bHQubm8sIC5idG4tc20ubm8sIC5idG4tbGcubm8geyBiYWNrZ3JvdW5kLWNvbG9yOiNGRkY7IGJvcmRlcjoxcHggc29saWQgIzU1NTsgY29sb3I6IzAwMDsgfSAuYnRuLWRlZmF1bHQubm86aG92ZXIsIC5idG4tc20ubm86aG92ZXIsIC5idG4tbGcubm86aG92ZXJ7IGJhY2tncm91bmQtY29sb3I6IzY2NjY2NjsgYm9yZGVyOjFweCBzb2xpZCAjNjY2NjY2OyBjb2xvcjojRkZGRkZGOyB9IC5idG4tZGVmYXVsdC5pbnZlcnQsIC5idG4tc20uaW52ZXJ0LCAuYnRuLWxnLmludmVydCwgLmJ0bi1kZWZhdWx0LmludmVydC5mbGF0LCAuYnRuLXNtLmludmVydC5mbGF0LCAuYnRuLWxnLmludmVydC5mbGF0IHsgYmFja2dyb3VuZDogdmFyKC0tdGFiLXRleHQtY29sb3IpOyBib3JkZXI6MXB4IHNvbGlkIHZhcigtLXRhYi10ZXh0LWNvbG9yKTsgY29sb3I6dmFyKC0tdGFiLWNvbG9yKTsgYm94LXNoYWRvdzpub25lOyB9IC5idG4tZGVmYXVsdC5pbnZlcnQ6aG92ZXIsIC5idG4tc20uaW52ZXJ0OmhvdmVyLCAuYnRuLWxnLmludmVydDpob3ZlciwgLmJ0bi1kZWZhdWx0LmludmVydC5mbGF0OmhvdmVyLCAuYnRuLXNtLmludmVydC5mbGF0OmhvdmVyLCAuYnRuLWxnLmludmVydC5mbGF0OmhvdmVyIHsgYmFja2dyb3VuZC1jb2xvcjp2YXIoLS10YWItY29sb3IpOyBib3JkZXItY29sb3I6dmFyKC0tdGFiLXRleHQtY29sb3IpOyBjb2xvcjp2YXIoLS10YWItdGV4dC1jb2xvcik7IH0gLmJ0bi1kZWZhdWx0LnJlZCwgLmJ0bi1zbS5yZWQsIC5idG4tbGcucmVkIHsgYmFja2dyb3VuZDojZmYzMzMzIWltcG9ydGFudDsgYmFja2dyb3VuZC1jb2xvcjojZmYzMzMzIWltcG9ydGFudDsgYm9yZGVyOjFweCBzb2xpZCAjZjUxYTFhIWltcG9ydGFudDsgY29sb3I6I0ZGRkZGRiFpbXBvcnRhbnQ7IH0gLmJ0bi1kZWZhdWx0LnJlZDpob3ZlciwgLmJ0bi1zbS5yZWQ6aG92ZXIsIC5idG4tbGcucmVkOmhvdmVyeyBiYWNrZ3JvdW5kOiMzMzMzMzMhaW1wb3J0YW50OyBiYWNrZ3JvdW5kLWNvbG9yOiMzMzMzMzMhaW1wb3J0YW50OyBib3JkZXI6MXB4IHNvbGlkICMzMzMzMzMhaW1wb3J0YW50OyBjb2xvcjojRkZGRkZGIWltcG9ydGFudDsgfSAuYnRuLWRlZmF1bHQud2hpdGUsIC5idG4tc20ud2hpdGUsIC5idG4tbGcud2hpdGUgeyBiYWNrZ3JvdW5kOiNmZmY7IGJvcmRlcjoxcHggc29saWQgIzAwMDsgY29sb3I6IzA1MTQxZjsgYm94LXNoYWRvdzpub25lOyB9IC5kZWFsZXItc2VsZWN0LXdyYXBwZXIgeyBkaXNwbGF5OmdyaWQ7IGdyaWQtdGVtcGxhdGUtY29sdW1uczoxZnIgMWZyOyBjb2x1bW4tZ2FwOjEuNXJlbTsgcm93LWdhcDowLjVyZW07IGdyaWQtYXV0by1jb2x1bW5zOjAuNWZyOyBtYXJnaW4tYm90dG9tOjEwcHg7IG1hcmdpbi10b3A6MTVweDsgfSAuZGVhbGVyLXNlbGVjdC13cmFwcGVyIC5idG4geyB0ZXh0LXdyYXA6YXV0bzsgdGV4dC1hbGlnbjpsZWZ0OyBwYWRkaW5nLWxlZnQ6MTBweDsgdHJhbnNpdGlvbjowLjJzIGVhc2UtaW4tb3V0OyBmb250LXdlaWdodDpub3JtYWw7IH0gLmRlYWxlci1zZWxlY3Qtd3JhcHBlciAuYnRuLmZvY3VzZWQsIC5kZWFsZXItc2VsZWN0LXdyYXBwZXIgLmJ0bjpmb2N1cyB7IGJhY2tncm91bmQtY29sb3I6dmFyKC0tdGFiLXRleHQtY29sb3IpOyBib3JkZXItd2lkdGg6MXB4OyBib3JkZXItc3R5bGU6c29saWQ7IGJvcmRlci1jb2xvcjp2YXIoLS10YWItY29sb3IpOyBjb2xvcjp2YXIoLS10YWItY29sb3IpOyBib3gtc2hhZG93OjAgNnB4IDEycHggcmdiYSgwLDAsMCwuMTc1KTsgdHJhbnNmb3JtOnRyYW5zbGF0ZVgoMnB4KTsgfSAuYXBwbHktY3JlZGl0IHsgLW1vei1ib3gtc2hhZG93Omluc2V0IDBweCAtM3B4IDdweCAwcHggIzEyMjEyYzsgLXdlYmtpdC1ib3gtc2hhZG93Omluc2V0IDBweCAtM3B4IDdweCAwcHggIzEyMjEyYzsgYm94LXNoYWRvdzppbnNldCAwcHggLTNweCA3cHggMHB4ICMxMjIxMmM7IGJhY2tncm91bmQ6LXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIGxlZnQgdG9wLCBsZWZ0IGJvdHRvbSwgY29sb3Itc3RvcCgwLjA1LCAjMzg0NzUyKSwgY29sb3Itc3RvcCgxLCAjMDUxNDFmKSk7IGJhY2tncm91bmQ6LW1vei1saW5lYXItZ3JhZGllbnQodG9wLCAjMzg0NzUyIDUlLCAjMDUxNDFmIDEwMCUpOyBiYWNrZ3JvdW5kOi13ZWJraXQtbGluZWFyLWdyYWRpZW50KHRvcCwgIzM4NDc1MiA1JSwgIzA1MTQxZiAxMDAlKTsgYmFja2dyb3VuZDotby1saW5lYXItZ3JhZGllbnQodG9wLCAjMzg0NzUyIDUlLCAjMDUxNDFmIDEwMCUpOyBiYWNrZ3JvdW5kOi1tcy1saW5lYXItZ3JhZGllbnQodG9wLCAjMzg0NzUyIDUlLCAjMDUxNDFmIDEwMCUpOyBiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCh0byBib3R0b20sICMzODQ3NTIgNSUsICMwNTE0MWYgMTAwJSk7IGZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuZ3JhZGllbnQoc3RhcnRDb2xvcnN0cj0nI2ZmMzMzMycsIGVuZENvbG9yc3RyPScjREIwMDAwJyxHcmFkaWVudFR5cGU9MCk7IGJhY2tncm91bmQtY29sb3I6IzM4NDc1MjsgYm9yZGVyOjFweCBzb2xpZCAjMWYyZTM5OyB9IC5hcHBseS1jcmVkaXQ6aG92ZXIgeyBiYWNrZ3JvdW5kOi13ZWJraXQtZ3JhZGllbnQobGluZWFyLCBsZWZ0IHRvcCwgbGVmdCBib3R0b20sIGNvbG9yLXN0b3AoMC4wNSwgIzM4NDc1MiksIGNvbG9yLXN0b3AoMSwgIzA1MTQxZikpOyBiYWNrZ3JvdW5kOi1tb3otbGluZWFyLWdyYWRpZW50KHRvcCwgIzA1MTQxZiA1JSwgIzM4NDc1MiAxMDAlKTsgYmFja2dyb3VuZDotd2Via2l0LWxpbmVhci1ncmFkaWVudCh0b3AsICMwNTE0MWYgNSUsICMzODQ3NTIgMTAwJSk7IGJhY2tncm91bmQ6LW8tbGluZWFyLWdyYWRpZW50KHRvcCwgIzA1MTQxZiA1JSwgIzM4NDc1MiAxMDAlKTsgYmFja2dyb3VuZDotbXMtbGluZWFyLWdyYWRpZW50KHRvcCwgIzA1MTQxZiA1JSwgIzM4NDc1MiAxMDAlKTsgYmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCAjMDUxNDFmIDUlLCAjMzg0NzUyIDEwMCUpOyBmaWx0ZXI6cHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LmdyYWRpZW50KHN0YXJ0Q29sb3JzdHI9JyNmZjMzMzMnLCBlbmRDb2xvcnN0cj0nI0RCMDAwMCcsR3JhZGllbnRUeXBlPTApOyBiYWNrZ3JvdW5kLWNvbG9yOiMzODQ3NTI7IH0gLm9mZmVyLWJ0bnsgY29sb3I6dmFyKC0tYnRuLXR4dC1jb2wsIHZhcigtLXVzZWQtb2ZmZXItYnRuLXRleHQtY29sb3IsICNmZmYpKTsgYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1idG4tYmctY29sLCB2YXIoLS11c2VkLW9mZmVyLWJ0bi1iZy1jb2xvciwgdmFyKC0tcHJvbW8tY29sb3IpKSk7IH0gOmlzKC5uZXdWZHBBY3Rpb25zLCAudXNlZFZkcEFjdGlvbnMpICp7IGJveC1zaXppbmc6Ym9yZGVyLWJveDsgfSA6aXMoLm5ld1ZkcEFjdGlvbnMsIC51c2VkVmRwQWN0aW9ucykgLnByb21vQlROeyB0ZXh0LWFsaWduOmxlZnQ7IH0gOmlzKC5uZXdWZHBBY3Rpb25zLCAudXNlZFZkcEFjdGlvbnMpIC5wcm9tb0JUTjo6YWZ0ZXJ7IGZvbnQtZmFtaWx5OidGb250IEF3ZXNvbWUgNSBQcm8nLCBzZXJpZjsgZm9udC13ZWlnaHQ6OTAwOyB9IDppcygubmV3VmRwQWN0aW9ucywgLnVzZWRWZHBBY3Rpb25zLCAudXNlZC1kZXRhaWxzLCAubmV3LWRldGFpbHMpIC5wcm9tb0JUTiA+IHNwYW4uZmF7IGRpc3BsYXk6ZmxleDsgd2lkdGg6MS41ZW07IGhlaWdodDoxLjVlbTsgYWxpZ24taXRlbXM6Y2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyOyBjb2xvcjppbmhlcml0OyB9IDppcygubmV3VmRwQWN0aW9ucywgLnVzZWRWZHBBY3Rpb25zKSAuY29tcGxldGVkLnByb21vQlROOjphZnRlcnsgY29udGVudDoiXGYwMGMiOyBjb2xvcjppbmhlcml0OyB9IDppcygubmV3VmRwQWN0aW9ucywgLnVzZWRWZHBBY3Rpb25zKSAuY29tcGxldGVkLnByb21vQlROIHNwYW4uZmF7IGNvbG9yOiMwMDA7IH0gLmdyYXlib3ggLnByb21vQlROLCAudXNlZFZkcEFjdGlvbnMgLnByb21vQlROeyBib3JkZXItcmFkaXVzOjFweCFpbXBvcnRhbnQ7IGp1c3RpZnktY29udGVudDpjZW50ZXI7IHRleHQtYWxpZ246dW5zZXQ7IGxpbmUtaGVpZ2h0OjEuNXJlbTsgfSAuZ3JheWJveCAuYnV0dG9uX3VuZGVyIC5wcm9tb0JUTiBzdGFjay1sYywgLm5ld1ZkcEFjdGlvbnMgLmJ1dHRvbl91bmRlciAucHJvbW9CVE4gc3RhY2stbGMgeyBmbGV4LWdyb3c6MSAhaW1wb3J0YW50OyB0ZXh0LWFsaWduOmNlbnRlciAhaW1wb3J0YW50OyB9IC5tdWx0aWZvcm1fZW1iZWRkZWRfZm9vdGVyIC4tZm9yY2VkLS1hLWNmYTo6YWZ0ZXIgeyBmbGV4OjAgMTsgfSAuZ3JheWJveCAucHJvbW9CVE4uYnRuLWljb25lZHsganVzdGlmeS1jb250ZW50OmZsZXgtc3RhcnQ7IGRpc3BsYXk6ZmxleDsgYWxpZ24taXRlbXM6Y2VudGVyOyBtYXJnaW46YXV0bzsgd2lkdGg6OTUlOyB9IC5ncmF5Ym94IC5wcm9tb0JUTi5idG4tZGVmYXVsdCBzcGFuLmZheyBkaXNwbGF5Om5vbmU7IH0gLmdyYXlib3ggLnByb21vQlROLmJ0bi1pY29uZWQgc3Bhbi5mYXsgZGlzcGxheTpmbGV4OyB9IC5ncmF5Ym94IC5wcm9tb0JUTiBzcGFuLCAudXNlZFZkcEFjdGlvbnMgLnByb21vQlROIHNwYW57IG1hcmdpbi1sZWZ0OnVuc2V0OyBsaW5lLWhlaWdodDoxLjVlbTsgfSAucHJvbW9CVE4uY2hldnJvbi1yaWdodCAuY3RhLWxhYmVsIHsgcGFkZGluZy1yaWdodDoxLjVyZW07IH0gLnByb21vQlROLCAucHJvbW9CVE4gYSwgLmJyb2NodXJlQnRueyBiYWNrZ3JvdW5kOiMwNTE0MWY7IGNvbG9yOiNmZmZmZmY7IHRleHQtc2hhZG93Om5vbmU7IGFuaW1hdGlvbjphbGwgM3M7IGJvcmRlci1jb2xvcjojMDUxNDFmOyB9IC5wcm9tb0JUTjpob3ZlciwgLnByb21vQlROIGE6aG92ZXJ7IGJhY2tncm91bmQ6IzA1MTQxZjsgY29sb3I6I2ZmZmZmZjsgYm9yZGVyOjFweCBzb2xpZCAjMDUxNDFmOyB9IC5wcm9tb0JUTjpob3ZlciA+ICogPiAuZmEsIC5wcm9tb0JUTiBhOmhvdmVyID4gKiA+IC5mYSB7IGJhY2tncm91bmQ6I2ZmZmZmZjsgY29sb3I6IzA1MTQxZjsgfSAucHJvbW9CVE4uZ3Jvdzpob3ZlciB7IHRyYW5zZm9ybTpzY2FsZSgxLjEpOyB9IC5wcm9tb0JUTi5ncm93OmhvdmVyLCAucHJvbW9CVE4uZ3Jvdzpob3ZlciA+ICogPiAuZmEsIC5wcm9tb0JUTi5ncm93IGE6aG92ZXIgPiAqID4gLmZhIHsgdHJhbnNpdGlvbjphbGwgMC4zcyBsaW5lYXI7IH0gOm5vdCguY3RhLXRyYWNrLXRwbCkgLnByb21vQlROLnJpcHBsZSB7IHBvc2l0aW9uOnJlbGF0aXZlOyB6LWluZGV4OjE7IG92ZXJmbG93OmhpZGRlbjsgdHJhbnNpdGlvbjoxcyBhbGwgZWFzZTsgfSA6bm90KC5jdGEtdHJhY2stdHBsKSAucHJvbW9CVE4ucmlwcGxlOmJlZm9yZSB7IGNvbnRlbnQgOiIgIjsgcG9zaXRpb24gOmFic29sdXRlOyB6LWluZGV4IDotMTsgYm9yZGVyLXJhZGl1cyA6MTAwcHg7IHdpZHRoIDowJTsgaGVpZ2h0IDoxMjAlOyB0b3AgOjUwJTsgYm90dG9tIDo1MCU7IGxlZnQgOjUwJTsgcmlnaHQgOjUwJTsgdHJhbnNmb3JtIDp0cmFuc2xhdGUoLTUwJSwgLTUwJSk7IHRyYW5zaXRpb24gOmFsbCAwLjZzIGVhc2U7IGJvcmRlcjp1bnNldDsgYmFja2dyb3VuZDojMDUxNDFmOyB9IDpub3QoLmN0YS10cmFjay10cGwpIC5wcm9tb0JUTi5yaXBwbGU6aG92ZXIgeyBiYWNrZ3JvdW5kOiMwNTE0MWY7IGNvbG9yOnZhcigtLXByb21vLWJ0bi1ob3Zlci10ZXh0LWNvbG9yKTsgYm9yZGVyLWNvbG9yOnZhcigtLXByb21vLWJ0bi1ob3Zlci10ZXh0LWNvbG9yKTs7IH0gOm5vdCguY3RhLXRyYWNrLXRwbCkgLnByb21vQlROLnJpcHBsZTpob3ZlcjpiZWZvcmUgeyB3aWR0aDoxMjAlOyB9IC5wcm9tb0JUTi5yaXBwbGU6aG92ZXIgc3Bhbi5mYXsgY29sb3I6dmFyKC0tcHJvbW8tYnRuLWhvdmVyLXRleHQtY29sb3IpOyB9IC5wcm9tb0Fycm93LC5wcm9tb0NvbG9yeyBjb2xvcjojMDUxNDFmIWltcG9ydGFudDsgfSAuYnJvY2h1cmVCdG57IGJvcmRlcjpub25lOyBkaXNwbGF5OmJsb2NrOyB0ZXh0LWFsaWduOmNlbnRlcjsgcGFkZGluZzo1cHg7IH0gLnZkcC1idG4geyBib3JkZXItcmFkaXVzOjNweDsgbWFyZ2luLWJvdHRvbToxMHB4OyB0ZXh0LXRyYW5zZm9ybTpub25lOyB0ZXh0LWFsaWduOmNlbnRlcjsgZm9udC1zaXplOjEuMDYzcmVtIDsgcGFkZGluZzo4cHggNXB4OyB3aWR0aDoyMzdweDsgfSBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6NDAwcHgpIHsgLmJ0bi1kZWZhdWx0LCAuY3VzdG9tZm9ybV9zdWJtaXQsIGlucHV0W3R5cGU9YnV0dG9uXS5idG4tZGVmYXVsdCwgaW5wdXRbdHlwZT1zdWJtaXRdLmJ0bi1kZWZhdWx0eyBmb250LXNpemU6aW5oZXJpdDsgfSAuYXBwbHktY3JlZGl0IHsgYmFja2dyb3VuZDojMzg0NzUyOyBib3JkZXI6MXB4IHNvbGlkICMxZjJlMzk7IH0gLmFwcGx5LWNyZWRpdDpob3ZlciB7IGJhY2tncm91bmQ6eyRBUFBMWV9DUkVESVRfQlROX0NPTE9SX0VOREhPVkVSQ09MT1J9OyB9IH0gLmJnX2JsdWV7IGJhY2tncm91bmQtY29sb3I6IzA2ODhmYSFpbXBvcnRhbnQ7IGNvbG9yOiNmZmY7IH0gLmJnX3JlZHsgYmFja2dyb3VuZC1jb2xvcjojZmYwMDAwIWltcG9ydGFudDsgY29sb3I6I2ZmZjsgfSAuYmdfZ3JlZW57IGJhY2tncm91bmQtY29sb3I6IzY4YTU0YiFpbXBvcnRhbnQ7IGNvbG9yOiNmZmY7IH0gLmJnX2JsYWNreyBiYWNrZ3JvdW5kLWNvbG9yOiMwMDAwMDAhaW1wb3J0YW50OyBjb2xvcjojZmZmOyB9IC5iZ19ncmF5eyBiYWNrZ3JvdW5kLWNvbG9yOiM3OTc5NzkhaW1wb3J0YW50OyBjb2xvcjojZmZmOyB9IC5iZ19ibHVlIGEsLmJnX3JlZCBhLC5iZ19ncmVlbiBhLC5iZ19ibGFjayBhLC5iZ19ncmF5IGEgeyBjb2xvcjojZmZmOyB9IC5iZ19kZWZhdWx0eyBiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmYhaW1wb3J0YW50OyB9IC5ib3gyN3sgd2lkdGg6MTMxcHg7IGhlaWdodDoyOHB4OyBmbG9hdDpsZWZ0OyBtYXJnaW4tYm90dG9tOjhweDsgfSAuYm94MjcgYXsgd2lkdGg6MTMxcHg7IGhlaWdodDoyOHB4OyBmbG9hdDpsZWZ0OyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL2J1dHRvbjEwX2JnLnBuZykgbGVmdCB0b3AgcmVwZWF0LXggOyBib3JkZXItcmFkaXVzOjNweDsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6I0ZGRkZGRjsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgcGFkZGluZzowOyBsaW5lLWhlaWdodDoyOHB4OyB0ZXh0LWFsaWduOiBjZW50ZXI7IHRleHQtdHJhbnNmb3JtOm5vbmU7IH0gLmJveDI3IGE6aG92ZXJ7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvYnV0dG9uMTBfYmcucG5nKSBsZWZ0IC0zMnB4IHJlcGVhdC14OyBjb2xvcjojRkZGRkZGOyB9IC5ib3gyOHsgd2lkdGg6MTI3cHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBtYXJnaW46MHB4OyBiYWNrZ3JvdW5kOiM2ZjZmNmYgdXJsKC9pbWFnZXMvbGl0ZXJfYmcucG5nKSBsZWZ0IHRvcCByZXBlYXQteDsgYm9yZGVyLXJhZGl1czozcHg7IHBhZGRpbmc6MTBweCAycHggMTBweCAycHg7IG1hcmdpbjowIDBweCAwIDA7IH0gLnRleHQ0NHsgd2lkdGg6MTI3cHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL2xpdGVyX2xpbmUucG5nKSBsZWZ0IGJvdHRvbSByZXBlYXQteDsgYmFja2dyb3VuZC1wb3NpdGlvbjpib3R0b207IHRleHQtYWxpZ246Y2VudGVyOyBwYWRkaW5nLWJvdHRvbTo1cHg7IG1hcmdpbi1ib3R0b206NXB4OyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojRkZGRkZGOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgZm9udC13ZWlnaHQ6bm9ybWFsOyB0ZXh0LWFsaWduOmNlbnRlcjsgdGV4dC10cmFuc2Zvcm06bm9uZTsgbGluZS1oZWlnaHQ6MThweDsgfSAuY29uc3VtcHRpb24tbm90LWF2YWlsYWJsZSA+IC50ZXh0NDQgPiBzcGFuID4gI2NpdHlGdWVsIHsgZGlzcGxheTpub25lOyB9IC5jb25zdW1wdGlvbi1ub3QtYXZhaWxhYmxlID4gLnRleHQ0NCA+IHNwYW4gPiAjaGlnaHdheUZ1ZWwgeyBkaXNwbGF5Om5vbmU7IH0gLnRleHRfc2xpZGUgYSB7IGhlaWdodDozOHB4OyBtYXJnaW4tcmlnaHQ6MC4zZW07IHBhZGRpbmctdG9wOjFweCAhaW1wb3J0YW50OyB9IC50ZXh0X3NsaWRlIGEgPiBiIHsgZGlzcGxheTpibG9jazsgb3ZlcmZsb3c6aGlkZGVuICFpbXBvcnRhbnQ7IHBvc2l0aW9uOnJlbGF0aXZlOyBoZWlnaHQ6MjVweDsgd2lkdGg6MTAwJTsgfSAudGV4dF9zbGlkZSBhID4gYiA+IG0xIHsgZGlzcGxheTppbmxpbmUtYmxvY2s7IHBvc2l0aW9uOnJlbGF0aXZlOyB3aGl0ZS1zcGFjZTpub3dyYXA7IGxpbmUtaGVpZ2h0OjM4cHggIWltcG9ydGFudDsgdG9wOi04cHg7IGxlZnQ6MDsgfSAudGV4dF9zbGlkZS50ZXh0X3NsaWRlXzQgYSA+IGIgPiBtMSB7IGFuaW1hdGlvbjp0ZXh0X3NsaWRlXzQgNHMgZWFzZSA1czsgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDppbmZpbml0ZTsgfSAudGV4dF9zbGlkZS50ZXh0X3NsaWRlXzMgYSA+IGIgPiBtMSB7IGFuaW1hdGlvbjp0ZXh0X3NsaWRlXzMgM3MgZWFzZSA0czsgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDppbmZpbml0ZTsgfSAudGV4dF9zbGlkZS50ZXh0X3NsaWRlXzIgYSA+IGIgPiBtMSB7IGFuaW1hdGlvbjp0ZXh0X3NsaWRlXzIgMnMgZWFzZSAyczsgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDppbmZpbml0ZTsgfSAudGV4dF9zbGlkZS5wcm9tb2NvZGVib3ggeyBwYWRkaW5nOjBweCAwcHg7IG1hcmdpbi1sZWZ0OjBweDsgd2lkdGg6MTAwJTsgbWFyZ2luLXRvcDo5cHg7IH0gQGtleWZyYW1lcyB0ZXh0X3NsaWRlXzQgeyAwJSB7IHRvcDotOHB4OyB9IDI1JSB7IHRvcDotNDZweDsgfSA1MCUgeyB0b3A6LTg0cHg7IH0gNzUlIHsgdG9wOi0xMjJweDsgfSAxMDAlIHsgdG9wOi0xNjBweDsgfSB9IEBrZXlmcmFtZXMgdGV4dF9zbGlkZV8zIHsgMCUgeyB0b3A6LThweDsgfSAzMyUgeyB0b3A6LTQ2cHg7IH0gNjYlIHsgdG9wOi04NHB4OyB9IDEwMCUgeyB0b3A6LTEyMnB4OyB9IH0gQGtleWZyYW1lcyB0ZXh0X3NsaWRlXzIgeyAwJSB7IHRvcDotOHB4OyB9IDUwJSB7IHRvcDotNDZweDsgfSAxMDAlIHsgdG9wOi04NHB4OyB9IH0gLm1hcCB7IHdpZHRoOjEwMCU7IHRleHQtYWxpZ246Y2VudGVyOyBwb3NpdGlvbjpyZWxhdGl2ZTsgfSAubWFwIC53cmFwcGVyeyBwb3NpdGlvbjpzdGF0aWMgIWltcG9ydGFudDsgfSAubWFwX2RlYWxlcl9saXN0IHsgYmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC45KTsgYm94LXNpemluZzpib3JkZXItYm94OyBwb3NpdGlvbjphYnNvbHV0ZTsgdG9wOjA7IHBhZGRpbmc6MCAzMHB4OyB3aWR0aDozMTVweDsgaGVpZ2h0OjEwMCU7IHRleHQtYWxpZ246bGVmdDsgb3ZlcmZsb3cteTphdXRvOyB9IC5tYXBfZGVhbGVyX2xpc3RfaXRlbSB7IGN1cnNvcjpwb2ludGVyOyBwYWRkaW5nOjEzcHggMDsgZm9udC1zaXplOjAuODEzcmVtIDsgfSAubWFwX2RlYWxlcl9saXN0X2l0ZW1fbmFtZSB7IHBvc2l0aW9uOmFic29sdXRlOyB9IC5tYXBfZGVhbGVyX2xpc3RfaXRlbV9uYW1lOmhvdmVyIHsgZm9udC13ZWlnaHQ6NzAwOyB9IC5tYXBfZGVhbGVyX2xpc3RfaXRlbV9uYW1lX2FjdGl2ZSB7IGZvbnQtd2VpZ2h0OjcwMDsgfSAubWFya2VyU3BhbiB7IGhlaWdodDoxOHB4OyB3aWR0aDoyMHB4OyBkaXNwbGF5OmlubGluZS1ibG9jazsgcG9zaXRpb246cmVsYXRpdmU7IGRpc3BsYXk6aW5saW5lLWJsb2NrOyB9IC5tYXJrZXJTcGFuOmJlZm9yZSB7IGNvbnRlbnQ6Jyc7IGhlaWdodDo0cHg7IHdpZHRoOjRweDsgYm9yZGVyOjJweCBzb2xpZCAjMzMzOyBkaXNwbGF5OmJsb2NrOyBwb3NpdGlvbjphYnNvbHV0ZTsgdG9wOjJweDsgbGVmdDowcHg7IHotaW5kZXg6MTsgYmFja2dyb3VuZDojZmZmOyBsaW5lLWhlaWdodDoyNnB4OyBib3JkZXItcmFkaXVzOjQwcHg7IC13ZWJraXQtYm9yZGVyLXJhZGl1czo0MHB4OyAtbW96LWJvcmRlci1yYWRpdXM6NDBweDsgY29sb3I6I2ZmZjsgdGV4dC1hbGlnbjpjZW50ZXI7IH0gLm1hcmtlclNwYW46YWZ0ZXIgeyBjb250ZW50OicnOyBoZWlnaHQ6MHB4OyB3aWR0aDowcHg7IGRpc3BsYXk6YmxvY2s7IHBvc2l0aW9uOmFic29sdXRlOyBib3R0b206MnB4OyBsZWZ0OjJweDsgYm9yZGVyOjEwcHggdHJhbnNwYXJlbnQgc29saWQ7IGJvcmRlci10b3AtY29sb3I6IzMzMzsgYm9yZGVyLXdpZHRoOjdweCAycHggMHB4IDJweDsgfSAubWFwX29wZW5faG91cnMgeyBiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjkpOyBib3gtc2l6aW5nOmJvcmRlci1ib3g7IHBvc2l0aW9uOmFic29sdXRlOyB0b3A6MDsgd2lkdGg6NDAwcHg7IGhlaWdodDoxMDAlOyB0ZXh0LWFsaWduOmxlZnQ7IH0gLm9wZW5faG91cnNfY29udGFpbmVyIHsgYmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC45KTsgYm94LXNpemluZzpib3JkZXItYm94OyB0ZXh0LWFsaWduOmxlZnQ7IH0gLm1hcF9vcGVuX2hvdXJzIC5tYXBfb3Blbl9ob3Vycy0tdGl0bGUsIC5vcGVuX2hvdXJzX2NvbnRhaW5lciBoMiwgLm9wZW5faG91cnNfY29udGFpbmVyIHNwYW4uaDItYWx0IHsgZm9udC1zaXplOjEuNWVtOyBmb250LXdlaWdodDpib2xkOyBwYWRkaW5nLWxlZnQ6MTVweDsgbWFyZ2luLXRvcDoyMHB4OyBtYXJnaW4tYm90dG9tOjEwcHg7IGNvbG9yOmluaGVyaXQ7IH0gLm1hcF9vcGVuX2hvdXJzIHVsLCAub3Blbl9ob3Vyc19jb250YWluZXIgdWwgeyBwYWRkaW5nOjAgMDsgfSAubWFwX29wZW5faG91cnMgdWwgbGksIC5vcGVuX2hvdXJzX2NvbnRhaW5lciB1bCBsaSB7IGxpc3Qtc3R5bGU6bm9uZTsgY3Vyc29yOnBvaW50ZXI7IGN1cnNvcjpoYW5kOyBib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZjNmM2YzOyB9IC5tYXBfb3Blbl9ob3Vyc19leHBhbmR7IHBhZGRpbmc6NnB4IDMwcHggOHB4IDE1cHg7IGRpc3BsYXk6YmxvY2s7IH0gLmV4cGFuZGFibGVfY29udGVudHsgcGFkZGluZzowcHggMTZweCA1cHggMTZweDsgZm9udC1zaXplOjAuODc1cmVtIDsgbGluZS1oZWlnaHQ6MS40Mjg1NzE0MzsgfSAuZXhwYW5kYWJsZV9jb250ZW50IGRpdiwgLmV4cGFuZGFibGVfY29udGVudF9tdWx0aWxvY2F0aW9uIGRpdiB7IGRpc3BsYXkgOmZsZXg7IGZsZXgtZGlyZWN0aW9uIDpyb3c7IH0gLmV4cGFuZGFibGVfY29udGVudCA+IGRpdiA+IHNwYW46Zmlyc3Qtb2YtdHlwZSwgLmV4cGFuZGFibGVfY29udGVudF9tdWx0aWxvY2F0aW9uIGRpdiBzcGFuOmZpcnN0LW9mLXR5cGUgeyB3aWR0aDo0MCU7IH0gLmV4cGFuZGFibGVfY29udGVudF9tdWx0aWxvY2F0aW9ueyBmb250LXNpemU6MC44NzVyZW0gOyBsaW5lLWhlaWdodDoxLjQyODU3MTQzOyBtYXJnaW4tdG9wOjE1cHg7IH0gQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoIDo3NTlweCkgeyAuZXhwYW5kYWJsZV9jb250ZW50LCAuZXhwYW5kYWJsZV9jb250ZW50X211bHRpbG9jYXRpb24geyBmb250LXNpemU6aW5oZXJpdDsgfSB9IC5leHBhbmRhYmxlX2NvbnRlbnRfbXVsdGlsb2NhdGlvbiB0YWJsZXsgbWFyZ2luLXRvcDoxNXB4OyB9IC5tYXBfb3Blbl9ob3Vyc19leHBhbmRfYXJyb3d7IGZsb2F0OnJpZ2h0OyBtYXJnaW4tdG9wOjNweDsgfSAubWFwX29wZW5faG91cnNfZXhwYW5kX2Fycm93LmV4cGFuZGVkeyB0cmFuc2Zvcm06cm90YXRlKDE4MGRlZyk7IH0gLm1hcF9vcGVuX2hvdXJzX21vYmlsZXsgYmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC45KTsgfSAubWFwX29wZW5faG91cnNfbW9iaWxlIC5tYXBfb3Blbl9ob3Vyc19tb2JpbGUtLXRpdGxlIHsgZm9udC1zaXplOnZhcigtLWZzNCk7IHRleHQtYWxpZ246Y2VudGVyOyB9IC5tYXBfb3Blbl9ob3Vyc19tb2JpbGUgdWx7IHBhZGRpbmc6MCAwOyB9IC5tYXBfb3Blbl9ob3Vyc19tb2JpbGUgdWwgbGl7IGxpc3Qtc3R5bGU6bm9uZTsgY3Vyc29yOnBvaW50ZXI7IGJvcmRlci1ib3R0b206MXB4IHNvbGlkICNmM2YzZjM7IH0gLm1haW5fbGVmdF9ib3ggI2Zvb3Rlckdvb2dsZU1hcEhvdXJzQ29udGFpbmVyeyB3aWR0aDo5NjBweDsgfSAudmlkZW9CdG5TbGlkZXIsIC5waG90b0J0blNsaWRlcnsgYm9yZGVyLXJhZGl1czo1MCU7IGJvcmRlcjoxcHggc29saWQgIzA1MTQxZjsgY29sb3I6IzA1MTQxZjsgd2lkdGg6NzVweDsgaGVpZ2h0Ojc1cHg7IGJhY2tncm91bmQtY29sb3I6I2ZmZmZmZjsgb3BhY2l0eTowLjU7IH0gLnZpZGVvQnRuU2xpZGVyOmhvdmVyLCAucGhvdG9CdG5TbGlkZXI6aG92ZXJ7IGJvcmRlci1yYWRpdXM6NTAlOyBib3JkZXI6MXB4IHNvbGlkICNmZmZmZmY7IHdpZHRoOjc1cHg7IGhlaWdodDo3NXB4OyBiYWNrZ3JvdW5kLWNvbG9yOiMwNTE0MWY7IG9wYWNpdHk6MC41OyB9IC5waG90b0J0blNsaWRlciAuZmEsIC52aWRlb0J0blNsaWRlciAuZmF7IGNvbG9yOiMwNTE0MWY7IH0gLnBob3RvQnRuU2xpZGVyOmhvdmVyIC5mYSwgLnZpZGVvQnRuU2xpZGVyOmhvdmVyIC5mYXsgY29sb3I6I2ZmZmZmZjsgfSAudmlkZW9CdG5TbGlkZXJVc2VkLCAucGhvdG9CdG5TbGlkZXJVc2VkeyBib3JkZXItcmFkaXVzOjUwJTsgYm9yZGVyOjFweCBzb2xpZCAjYjNiM2IzOyBjb2xvcjojYjNiM2IzOyB3aWR0aDo3NXB4OyBoZWlnaHQ6NzVweDsgYmFja2dyb3VuZC1jb2xvcjojZmZmZmZmOyBvcGFjaXR5OjAuOTsgfSAudmlkZW9CdG5TbGlkZXJVc2VkOmhvdmVyLCAucGhvdG9CdG5TbGlkZXJVc2VkOmhvdmVyeyBib3JkZXItcmFkaXVzOjUwJTsgYm9yZGVyOjFweCBzb2xpZCAjZmZmZmZmOyB3aWR0aDo3NXB4OyBoZWlnaHQ6NzVweDsgYmFja2dyb3VuZC1jb2xvcjojYjNiM2IzOyBvcGFjaXR5OjAuNTsgfSAucGhvdG9CdG5TbGlkZXJVc2VkIC5mYSwgLnZpZGVvQnRuU2xpZGVyVXNlZCAuZmF7IGNvbG9yOiNiM2IzYjM7IH0gLnBob3RvQnRuU2xpZGVyVXNlZDpob3ZlciAuZmEsIC52aWRlb0J0blNsaWRlclVzZWQ6aG92ZXIgLmZheyBjb2xvcjojZmZmZmZmOyB9IC52aWRlb3NfcGljdHVyZXNfYnV0dG9uc19jb250YWluZXJ7IGxlZnQ6NXB4OyBib3R0b206ODJweDsgcG9zaXRpb246cmVsYXRpdmU7IHotaW5kZXg6OTk5OyBmbG9hdDpsZWZ0OyBtYXJnaW4tYm90dG9tOi04MHB4OyB9IC4tZGlzcGxheS1ub25leyBkaXNwbGF5Om5vbmU7IH0gI2RlZmF1bHRUb3BCYW5uZXJXcmFweyB0ZXh0LWFsaWduOmNlbnRlcjsgdmVydGljYWwtYWxpZ246bWlkZGxlOyBwYWRkaW5nOjQwcHggMTVweDsgfSAjZGVmYXVsdFRvcEJhbm5lcnsgdGV4dC1hbGlnbjpjZW50ZXI7IHdpZHRoOjEwMCU7IGJvcmRlci1yYWRpdXM6NnB4OyBjdXJzb3I6cG9pbnRlcjsgfSAjZGVmYXVsdFRvcEJhbm5lclRpdGxlLCAjZGVmYXVsdFRvcEJhbm5lclRleHR7IGZvbnQtd2VpZ2h0OmJvbGQ7IH0gI2RlZmF1bHRUb3BCYW5uZXJXcmFwIGRpdi5kZWZhdWx0VG9wQmFubmVyQnRuV3JhcHBlcnsgbWFyZ2luOjMwcHggMCAyMHB4IDA7IHdpZHRoOjEwMCU7IGZsb2F0OmxlZnQ7IH0gI2RlZmF1bHRUb3BCYW5uZXJCdG57IHBhZGRpbmc6MTBweCAzMHB4OyBiYWNrZ3JvdW5kOmJsYWNrOyBib3JkZXI6MnB4IHdoaXRlIHNvbGlkOyBib3JkZXItcmFkaXVzOjNweDsgdGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlOyBmb250LXdlaWdodDpib2xkOyBjb2xvcjojZmZmZmZmOyBib3gtc2hhZG93OjBweCAycHggMTNweCAwcHggIzFiMWIxYjsgfSAjdG9wQmFubmVySW1hZ2UuTkVXQ0FSUyAjZGVmYXVsdFRvcEJhbm5lclRpdGxleyBmb250LXNpemU6My4xMjVyZW0gOyB9ICN0b3BCYW5uZXJJbWFnZS5ORVdDQVJTICNkZWZhdWx0VG9wQmFubmVyVGV4dHsgZm9udC1zaXplOjIuODEzcmVtIDsgfSAjdG9wQmFubmVySW1hZ2UuVVNFRENBUlMgI2RlZmF1bHRUb3BCYW5uZXJUaXRsZXsgZm9udC1zaXplOjMuMTI1cmVtIDsgfSAjdG9wQmFubmVySW1hZ2UuVVNFRENBUlMgI2RlZmF1bHRUb3BCYW5uZXJUZXh0eyBmb250LXNpemU6Mi44MTNyZW0gOyB9ICN0b3BCYW5uZXJJbWFnZTplbXB0eXsgbWFyZ2luOjAgIWltcG9ydGFudDsgcGFkZGluZzowICFpbXBvcnRhbnQ7IH0gI3RvcEJhbm5lckltYWdlLlVTRURDQVJTICNkZWZhdWx0VG9wQmFubmVyV3JhcHsgaGVpZ2h0OjI2NXB4OyBib3gtc2l6aW5nOmJvcmRlci1ib3g7IHBhZGRpbmc6NDBweCAxNXB4OyB9ICN0b3BCYW5uZXJJbWFnZS5ORVdDQVJTICNkZWZhdWx0VG9wQmFubmVyV3JhcHsgaGVpZ2h0OjI2NXB4OyBib3gtc2l6aW5nOmJvcmRlci1ib3g7IHBhZGRpbmc6NDBweCAxNXB4OyB9ICNnb29nbGVfcmV2aWV3c3sgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzY2NjsgfSAjZ29vZ2xlX3Jldmlld3MgLnJldmlldy1pdGVtIC5yZXZpZXctc3RhcnMgdWwgeyBkaXNwbGF5OmlubGluZS1ibG9jazsgbGlzdC1zdHlsZTpub25lOyBwYWRkaW5nOjA7IH0gI2dvb2dsZV9yZXZpZXdzIC5yZXZpZXctaXRlbSAucmV2aWV3LXN0YXJzIHVsIGxpIHsgZmxvYXQ6bGVmdDsgbWFyZ2luLXJpZ2h0OjVweDsgd2lkdGg6aW5pdGlhbCAhaW1wb3J0YW50OyBwYWRkaW5nOmluaXRpYWw7IH0gI2dvb2dsZV9yZXZpZXdzIC5yZXZpZXctaXRlbSAucmV2aWV3LXN0YXJzIHVsIGxpIGkgeyBjb2xvcjojRTRCMjQ4OyBmb250LXN0eWxlOm5vcm1hbDsgZm9udC1zaXplOjAuOTM4cmVtIDsgfSAjZ29vZ2xlX3Jldmlld3MgLnJldmlldy1pdGVtIC5yZXZpZXctc3RhcnMgdWwgbGkgaS5pbmFjdGl2ZSB7IGNvbG9yOiNjNmM2YzY7IH0gI2dvb2dsZV9yZXZpZXdzIC5yZXZpZXctaXRlbSAucmV2aWV3LXN0YXI6YWZ0ZXIgeyBjb250ZW50OiJcMjYwNSI7IH0gI2Vhc3ktZ3BsYWNlcy1yZXZpZXdzLWJ1dHsgZm9udC13ZWlnaHQ6Ym9sZDsgcGFkZGluZzo1cHggOHB4OyBoZWlnaHQ6MjdweDsgbGluZS1oZWlnaHQ6MjdweDsgfSAucmV2aWV3LWF1dGhvcnsgdGV4dC10cmFuc2Zvcm06Y2FwaXRhbGl6ZTsgfSAjZWFzeS1ncGxhY2VzLXJldmlld3MtYnV0LmRlZmF1bHR7IGNvbG9yOiM0NDQ7IGJhY2tncm91bmQtY29sb3I6I2Y1ZjVmNTsgYmFja2dyb3VuZC1pbWFnZTotbW96LWxpbmVhci1ncmFkaWVudChjZW50ZXIgdG9wICwgI2Y1ZjVmNSwgI2YxZjFmMSk7IGJvcmRlcjoxcHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjEpOyB9ICNlYXN5LWdwbGFjZXMtcmV2aWV3cy1idXQucmVkeyBjb2xvcjojZmZmOyBiYWNrZ3JvdW5kLWNvbG9yOiNmNWY1ZjU7IGJhY2tncm91bmQtaW1hZ2U6LW1vei1saW5lYXItZ3JhZGllbnQoY2VudGVyIHRvcCAsICNERDRCMzksICNEMTQ4MzYpOyBib3JkZXI6MXB4IHNvbGlkICNEMTQ4MzY7IH0gI2Vhc3ktZ3BsYWNlcy1yZXZpZXdzLWJ1dC5ibHVleyBjb2xvcjojZmZmOyBiYWNrZ3JvdW5kLWNvbG9yOiM0RDkwRkU7IGJhY2tncm91bmQtaW1hZ2U6LW1vei1saW5lYXItZ3JhZGllbnQoY2VudGVyIHRvcCAsICM0RDkwRkUsICM0Nzg3RUQpOyBib3JkZXI6MXB4IHNvbGlkICMzMDc5RUQ7IH0gLmVtYmVkLWNvbnRhaW5lci15b3V0dWJlIGlmcmFtZSwgLmVtYmVkLWNvbnRhaW5lci15b3V0dWJlIG9iamVjdCwgLmVtYmVkLWNvbnRhaW5lci15b3V0dWJlIGVtYmVkIHsgcG9zaXRpb246YWJzb2x1dGU7IHRvcDowOyBsZWZ0OjA7IHdpZHRoOjEwMCU7IGhlaWdodDoxMDAlOyB9IC5lbWJlZC1jb250YWluZXIteW91dHViZTJ7IHBvc2l0aW9uOnJlbGF0aXZlOyBwYWRkaW5nLWJvdHRvbTo1Ni4yNSU7IGhlaWdodDowOyBvdmVyZmxvdzpoaWRkZW47IG1heC13aWR0aDoxMDAlOyB9IC5lbWJlZC1jb250YWluZXIteW91dHViZTIgaWZyYW1lLCAuZW1iZWQtY29udGFpbmVyLXlvdXR1YmUyIG9iamVjdCwgLmVtYmVkLWNvbnRhaW5lci15b3V0dWJlMiBlbWJlZCB7IHBvc2l0aW9uOmFic29sdXRlOyB0b3A6MDsgbGVmdDowOyB3aWR0aDoxMDAlOyBoZWlnaHQ6MTAwJTsgfSAjc2VhcmNoQ3JpdGVyaWFXOjphZnRlciwgI2FjdGlvbkJveEJ0bjo6YWZ0ZXIsICNsaW5rQ29udGFpbmVyOjphZnRlcnsgY29udGVudDonJzsgaGVpZ2h0OjFweDsgZGlzcGxheTppbmxpbmUtYmxvY2s7IG1hcmdpbi1ib3R0b206JzE1cHgnOyB9ICNzZWFyY2hDcml0ZXJpYVc6OmFmdGVyLCAjYWN0aW9uQm94QnRuOjphZnRlciwgI2xpbmtDb250YWluZXI6OmFmdGVyeyBiYWNrZ3JvdW5kOiNhYWE7IHdpZHRoOjI4MHB4OyB9IC5iYW5uZXJQb3B1cENsb3NleyBjb2xvcjojYWFhOyB9IC5zZWVWaWRlb0J0bjF7IGJhY2tncm91bmQtY29sb3I6IzAwMCAhaW1wb3J0YW50OyBib3JkZXI6MXB4IHNvbGlkICNmZmYgIWltcG9ydGFudDsgY29sb3I6I2ZmZiAhaW1wb3J0YW50OyB9IC5zZWVWaWRlb0J0bjE6aG92ZXJ7IGJhY2tncm91bmQtY29sb3I6I2ZmZiAhaW1wb3J0YW50OyBib3JkZXI6MXB4IHNvbGlkICMwMDAgIWltcG9ydGFudDsgY29sb3I6IzA1MTQxZiAhaW1wb3J0YW50OyB9ICNib3R0b21MZWZ0QmFubmVySW1hZ2V7IG1hcmdpbjoxMHB4IDBweCAwcHg7IGZsb2F0OmxlZnQ7IHdpZHRoOjEwMCU7IH0gI2RlZmF1bHRCb3R0b21MZWZ0QmFubmVyeyB0ZXh0LWFsaWduOmNlbnRlcjsgd2lkdGg6MTAwJTsgYm9yZGVyLXJhZGl1czo2cHg7IGN1cnNvcjpwb2ludGVyOyB9ICNkZWZhdWx0Qm90dG9tTGVmdEJhbm5lcldyYXB7IHRleHQtYWxpZ246Y2VudGVyOyB2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7IHBhZGRpbmc6MTVweDsgfSAjZGVmYXVsdEJvdHRvbUxlZnRCYW5uZXJUaXRsZXsgZm9udC13ZWlnaHQ6Ym9sZDsgZm9udC1zaXplOjIuMTg4cmVtIDsgfSAjZGVmYXVsdEJvdHRvbUxlZnRCYW5uZXJUZXh0eyBmb250LXdlaWdodDpib2xkOyBmb250LXNpemU6MS45MzhyZW0gOyB9ICNkZWZhdWx0Qm90dG9tTGVmdEJhbm5lcldyYXAgZGl2LmRlZmF1bHRCb3R0b21MZWZ0QmFubmVyQnRuV3JhcHBlcnsgbWFyZ2luOjIwcHggMCAxMHB4IDA7IHdpZHRoOjEwMCU7IGZsb2F0OmxlZnQ7IH0gI2RlZmF1bHRCb3R0b21MZWZ0QmFubmVyQnRueyBwYWRkaW5nOjdweCAyMXB4OyBiYWNrZ3JvdW5kOmJsYWNrOyBib3JkZXI6MnB4IHdoaXRlIHNvbGlkOyBib3JkZXItcmFkaXVzOjNweDsgdGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlOyBmb250LXdlaWdodDpib2xkOyBjb2xvcjojZmZmZmZmOyBib3gtc2hhZG93OjBweCAycHggMTNweCAwcHggIzFiMWIxYjsgZm9udC1zaXplOjcwJTsgfSAubWFpbkRpdi13cmFwcGVyIHsgcGFkZGluZy10b3A6MC4wMXJlbTsgYmFja2dyb3VuZC1jb2xvcjojZmZmZmZmOyB9IC5sYW5ndWFnZUJhciAjc2VydmljZV9hcHBvaW50X2hlYWRlciA+IGEgeyBwYWRkaW5nOjAgMTJweDsgaGVpZ2h0OjI2cHg7IGxpbmUtaGVpZ2h0OjI3cHg7IGJvcmRlci1yYWRpdXM6MDsgfSAjc2VydmljZV9hcHBvaW50X2hlYWRlciA+IGEgeyB0ZXh0LWRlY29yYXRpb246bm9uZTsgYmFja2dyb3VuZC1jb2xvcjojMDUxNDFmOyBiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmY7IGNvbG9yOndoaXRlOyBjb2xvcjojMDUxNDFmOyB9ICNzZXJ2aWNlX2FwcG9pbnRfaGVhZGVyID4gYS5idG4geyBmb250LXdlaWdodDpub3JtYWw7IH0gLmxhbmd1YWdlQmFyICNzZXJ2aWNlX2FwcG9pbnRfaGVhZGVyID4gLmJ0bi1kZWZhdWx0OmhvdmVyIHsgYm9yZGVyLWNvbG9yOiMwNTE0MWY7IGJvcmRlci1jb2xvcjojZmZmZmZmOyB9ICNzZXJ2aWNlX2FwcG9pbnRfaGVhZGVyIC5zaG9ydC1zZXJ2aWNlLWZvcm0geyBkaXNwbGF5Om5vbmU7IGJveC1zaGFkb3c6MCA2cHggMTJweCByZ2JhKDAsIDAsIDAsIC4xNzUpOyBwb3NpdGlvbjphYnNvbHV0ZTsgd2lkdGg6MzUwcHg7IHJpZ2h0OjA7IHBhZGRpbmc6MTVweDsgei1pbmRleDo5OTk5OyBiYWNrZ3JvdW5kLWNvbG9yOndoaXRlOyBoZWlnaHQ6YXV0bzsgdG9wOjIzcHg7IH0gLmxhbmd1YWdlQmFyICNzZXJ2aWNlX2FwcG9pbnRfaGVhZGVyIGRpdjpub3QoW2NsYXNzXSkgeyBmbG9hdDppbml0aWFsOyB3aWR0aDoxMDAlOyBtYXJnaW4tcmlnaHQ6MDsgdGV4dC1hbGlnbjppbml0aWFsOyB9ICNzZXJ2aWNlX2FwcG9pbnRfaGVhZGVyOmhvdmVyIC5zaG9ydC1zZXJ2aWNlLWZvcm0geyBkaXNwbGF5OmJsb2NrOyB9ICNzZXJ2aWNlX2FwcG9pbnRfaGVhZGVyIHsgcG9zaXRpb246cmVsYXRpdmU7IH0gI3NlcnZpY2VfYXBwb2ludF9oZWFkZXIuaXNPcGVuIC5zaG9ydC1zZXJ2aWNlLWZvcm0geyBkaXNwbGF5OmJsb2NrOyB9IC5sYW5ndWFnZUJhciAjc2VydmljZV9hcHBvaW50X2hlYWRlciAubWFpbHdpZGdldC0tZm9ybS1yb3csIC5sYW5ndWFnZUJhciAjc2VydmljZV9hcHBvaW50X2hlYWRlciAubWFpbHdpZGdldC0tZm9ybS1yb3cgZGl2IHsgbWFyZ2luLXJpZ2h0OmluaGVyaXQ7IHdpZHRoOjEwMCUgIWltcG9ydGFudDsgZmxvYXQ6bm9uZTsgfSAubGFuZ3VhZ2VCYXIgI3NlcnZpY2VfYXBwb2ludF9oZWFkZXIgLm1haWx3aWRnZXQtLWZvcm0tcm93IHRhYmxlIHRleHRhcmVhIHsgd2lkdGg6Y2FsYygxMDAlICsgMnB4KSAhaW1wb3J0YW50OyB9ICN1c2VkXzQwNF9tZXNzYWdlIHsgdGV4dC1hbGlnbjpjZW50ZXI7IHBhZGRpbmc6MzBweDsgYm9yZGVyOjFweCBzb2xpZCAjZjAwOyBtYXJnaW46MCAwIDIwcHggMDsgfSAuYXVkaS10aXRsZSBoMiB7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgfSAuYXVkaS1jb2xvciB7IGNvbG9yOiNiYjBhMzA7IGZvbnQtd2VpZ2h0OmJvbGQ7IH0gZGl2I3NvY2lhbF9tZWRpYV9pY29uc19kaXYgeyBmb250LXNpemU6aW5oZXJpdDsgfSBhLnNvY2lhbC1saW5rIHsgLS1mczp2YXIoLS1mczYpOyAtLXR4dC1jb2xvcjojMDUxNDFmOyB9ICNzb2NpYWxfbWVkaWFfaWNvbnNfZGl2IC5zb2NpYWwtbGlua1tkYXRhLXRvb2x0aXA9J1lvdXR1YmUnXSAuc29jaWFsLWljb25zIHsgbWFyZ2luLXJpZ2h0OjNweDsgfSAucGF5cGFsX2J1dHRvbl9odG1sIHRhYmxleyBtYXJnaW4tbGVmdDphdXRvOyBtYXJnaW4tcmlnaHQ6YXV0bzsgYmFja2dyb3VuZC1jb2xvcjpibGFjazsgY29sb3I6d2hpdGU7IHdpZHRoOjEwMCU7IHBhZGRpbmc6MCAwIDEwcHggMDsgYm9yZGVyLXJhZGl1czozcHggM3B4IDAgMDsgdGV4dC1hbGlnbjpjZW50ZXI7IH0gLnBheXBhbF9idXR0b25faHRtbCB0YWJsZSB0cjpmaXJzdC1jaGlsZHsgZm9udC1zaXplOjEuMTI1cmVtIDsgaGVpZ2h0OjQwcHg7IH0gLnBheXBhbF9idXR0b25faHRtbCB0YWJsZSBzZWxlY3R7IGJvcmRlci1yYWRpdXM6NXB4OyB3aWR0aDoyMDBweDsgaGVpZ2h0OjM1cHg7IGJhY2tncm91bmQtY29sb3I6d2hpdGU7IH0gLnBheXBhbF9idXR0b25faHRtbCBpbnB1dFt0eXBlPSJpbWFnZSJdW25hbWU9InN1Ym1pdCJdeyB3aWR0aDoxMDAlOyBib3JkZXI6bm9uZTsgcGFkZGluZzowOyB9IEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDo0MDBweCkgeyAucGF5cGFsX2J1dHRvbl9odG1seyB3aWR0aDo5MCU7IG1hcmdpbjowIGF1dG87IH0gfSAjbXVsdGktYWRkcmVzcy1zdWJtaXNzaW9uIHsgei1pbmRleDoxMDAwMDAwMDAyMTsgfSAjbXVsdGktYWRkcmVzcy1zdWJtaXNzaW9uLmRlc2t0b3AgeyB0ZXh0LWFsaWduOmNlbnRlcjsgfSAjbXVsdGktYWRkcmVzcy1zdWJtaXNzaW9uLmRlc2t0b3Agc2VsZWN0IHsgbWF4LXdpZHRoOjMwMHB4OyBtYXJnaW46MCBhdXRvOyB9ICNtdWx0aS1hZGRyZXNzLXN1Ym1pc3Npb24uc21hbGwgeyBwYWRkaW5nOjIwcHggMTBweDsgfSAjbXVsdGktYWRkcmVzcy1zdWJtaXNzaW9uIGxhYmVsIHsgZGlzcGxheTpibG9jazsgbWFyZ2luLWJvdHRvbTo1cHg7IGZvbnQtd2VpZ2h0OmJvbGQ7IH0gI211bHRpLWFkZHJlc3Mtc3VibWlzc2lvbiAjbXV0bGlBZGRyZXNzU3VibWl0IHsgbWFyZ2luOjAgYXV0bzsgbWFyZ2luLXRvcDo4cHg7IGRpc3BsYXk6dGFibGU7IH0gI211bHRpLWFkZHJlc3Mtc3VibWlzc2lvbiAjbXVsdGktZGVhbGVyLW1hcCB7IGhlaWdodDo1MjBweDsgbWFyZ2luLWJvdHRvbToxMnB4OyB9ICNtdWx0aS1hZGRyZXNzLXN1Ym1pc3Npb24ucmV2ZWFsLW1vZGFsIHNwYW4geyBmb250LXNpemU6aW5oZXJpdDsgfSAudmFsaWRpdHktZXJyb25lb3VzIHsgYm9yZGVyOjFweCBzb2xpZCAjZGMzNTQ1OyBiYWNrZ3JvdW5kLWNvbG9yOiNmYWQ2ZGMhaW1wb3J0YW50OyB9IC5ib3g0LnZhbGlkaXR5LWVycm9uZW91cywgLmJveDUudmFsaWRpdHktZXJyb25lb3VzIHsgd2lkdGg6MjYzcHg7IH0gLmZvcm0tY29udHJvbCB7IGRpc3BsYXk6YmxvY2s7IHdpZHRoOjEwMCU7IGhlaWdodDozNHB4OyBwYWRkaW5nOjZweCAxMnB4OyBmb250LXNpemU6MC44NzVyZW0gOyBsaW5lLWhlaWdodDoxLjQyODU3MTQzOyBjb2xvcjojNTU1OyBiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7IGJhY2tncm91bmQtaW1hZ2U6bm9uZTsgYm9yZGVyOjFweCBzb2xpZCAjY2NjOyBib3JkZXItcmFkaXVzOjRweDsgLXdlYmtpdC1ib3gtc2hhZG93Omluc2V0IDAgMXB4IDFweCByZ2JhKDAsMCwwLC4wNzUpOyBib3gtc2hhZG93Omluc2V0IDAgMXB4IDFweCByZ2JhKDAsMCwwLC4wNzUpOyAtd2Via2l0LXRyYW5zaXRpb246Ym9yZGVyLWNvbG9yIGVhc2UtaW4tb3V0IC4xNXMsYm94LXNoYWRvdyBlYXNlLWluLW91dCAuMTVzOyAtby10cmFuc2l0aW9uOmJvcmRlci1jb2xvciBlYXNlLWluLW91dCAuMTVzLGJveC1zaGFkb3cgZWFzZS1pbi1vdXQgLjE1czsgLXdlYmtpdC10cmFuc2l0aW9uOmJvcmRlci1jb2xvciBlYXNlLWluLW91dCAuMTVzLC13ZWJraXQtYm94LXNoYWRvdyBlYXNlLWluLW91dCAuMTVzOyB0cmFuc2l0aW9uOmJvcmRlci1jb2xvciBlYXNlLWluLW91dCAuMTVzLC13ZWJraXQtYm94LXNoYWRvdyBlYXNlLWluLW91dCAuMTVzOyB0cmFuc2l0aW9uOmJvcmRlci1jb2xvciBlYXNlLWluLW91dCAuMTVzLGJveC1zaGFkb3cgZWFzZS1pbi1vdXQgLjE1czsgdHJhbnNpdGlvbjpib3JkZXItY29sb3IgZWFzZS1pbi1vdXQgLjE1cyxib3gtc2hhZG93IGVhc2UtaW4tb3V0IC4xNXMsLXdlYmtpdC1ib3gtc2hhZG93IGVhc2UtaW4tb3V0IC4xNXM7IH0gLmJhbm5lci1mb3JtLWJveCB7IHBhZGRpbmc6MzBweDsgYmFja2dyb3VuZC1jb2xvcjo7IGNvbG9yOjsgfSAuYmFubmVyLWZvcm0tdGl0bGUgeyBmb250LXdlaWdodDo2MDA7IGZvbnQtc2l6ZToxOHB0OyB0ZXh0LWFsaWduOmNlbnRlcjsgdGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlOyBtYXJnaW4tYm90dG9tOjVweDsgfSAuYmFubmVyLWZvcm0tc3VidGl0bGUgeyBmb250LXNpemU6MTEuNXB0OyBtYXJnaW4tYm90dG9tOjVweDsgfSAuYmFubmVyLWZvcm0tYm9keSB7IG1hcmdpbi1ib3R0b206MjVweDsgfSAuYmFubmVyLWZvcm0tYm9keSAuZm9ybS1jb250cm9sIHsgaGVpZ2h0OjQxcHg7IG1hcmdpbi1ib3R0b206MTVweDsgLXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7IC1tb3otYm94LXNpemluZzpib3JkZXItYm94OyBib3gtc2l6aW5nOmJvcmRlci1ib3g7IH0gLmJhbm5lci1mb3JtLWJveC1mb290ZXIgeyB0ZXh0LWFsaWduOmNlbnRlcjsgbWFyZ2luLXRvcDoyNXB4OyB9IC5iYW5uZXItZm9ybS1ib3gtaGVhZGVyIHsgdGV4dC1hbGlnbjpjZW50ZXI7IG1hcmdpbi1ib3R0b206MTVweDsgfSAuYnRuLmJhbm5lci1idG4geyBwYWRkaW5nOjZweCAyNHB4OyBmb250LXdlaWdodDpib2xkOyB0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7IGJhY2tncm91bmQtY29sb3I6YmxhY2s7IGNvbG9yOndoaXRlOyBiYWNrZ3JvdW5kLWNvbG9yOjsgY29sb3I6OyB9IC5idG4uYmFubmVyLWJ0bjpob3ZlciB7IGJveC1zaGFkb3c6aW5zZXQgMCAwIDEwMHB4IDEwMHB4IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKTsgfSAuYnRuIHsgZGlzcGxheTppbmxpbmUtYmxvY2s7IHBhZGRpbmc6NnB4IDEycHg7IG1hcmdpbi1ib3R0b206MDsgZm9udC1zaXplOjAuODc1cmVtIDsgZm9udC13ZWlnaHQ6NDAwOyBsaW5lLWhlaWdodDoxLjQyODU3MTQzOyB0ZXh0LWFsaWduOmNlbnRlcjsgd2hpdGUtc3BhY2U6bm93cmFwOyB2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7IC1tcy10b3VjaC1hY3Rpb246bWFuaXB1bGF0aW9uOyB0b3VjaC1hY3Rpb246bWFuaXB1bGF0aW9uOyBjdXJzb3I6cG9pbnRlcjsgLXdlYmtpdC11c2VyLXNlbGVjdDpub25lOyAtbW96LXVzZXItc2VsZWN0Om5vbmU7IC1tcy11c2VyLXNlbGVjdDpub25lOyB1c2VyLXNlbGVjdDpub25lOyBib3JkZXItcmFkaXVzOjRweDsgfSAubGF6eWxvYWR7IHZpc2liaWxpdHk6aGlkZGVuOyB9IC5nYm94IHsgYm9yZGVyLXJhZGl1czo1cHg7IGJveC1zaGFkb3c6MCAwIDEwcHggMXB4IHJnYmEoMCwwLDAsMC4yKTsgfSAucGQgeyB0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lOyBmb250LXNpemU6MC41ZW07IHZlcnRpY2FsLWFsaWduOnN1cGVyOyB9IC51aS1sb2FkZXItYmFja2dyb3VuZHsgd2lkdGg6MTAwJTsgaGVpZ2h0OjEwMCU7IHRvcDowOyBwYWRkaW5nOjA7IG1hcmdpbjowOyBiYWNrZ3JvdW5kOnJnYmEoMCwgMCwgMCwgMC4zKTsgZGlzcGxheTpub25lOyBwb3NpdGlvbjpmaXhlZDsgei1pbmRleDoxMDAwMDAwMDA7IH0gLnVpLWxvYWRlci1iYWNrZ3JvdW5kLWdpZnsgcG9zaXRpb246YWJzb2x1dGU7IHRvcDo1MCU7IGxlZnQ6NTAlOyB9IC5kMmNGb290ZXJDb29raWVEZWxldGVUaXRsZSB7IGZvbnQtc2l6ZToxLjNlbTsgfSAuZDJjRm9vdGVyQ29va2llRGVsZXRlVGV4dCB7IG1hcmdpbi10b3A6MzBweDsgfSAubW9udGhseVBheW1lbnRzUG9wdXBDb250YWluZXJfYnRueyBiYWNrZ3JvdW5kOiMwNTE0MWY7IGNvbG9yOiNmZmZmZmY7IHBhZGRpbmc6MTBweCAyMHB4IDEwcHggMjBweDsgZGlzcGxheTppbmxpbmUtYmxvY2s7IH0gLm1vbnRobHlQYXltZW50c1BvcHVwQ29udGFpbmVyX2J0biBzcGFueyBiYWNrZ3JvdW5kOiMwNTE0MWY7IGNvbG9yOiNmZmZmZmY7IH0gI21vbnRobHlQYXltZW50c1BvcHVwQ29udGFpbmVyX3Ntc3sgYmFja2dyb3VuZDojMDUxNDFmOyBjb2xvcjojZmZmZmZmOyB9ICNtb250aGx5UGF5bWVudHNQb3B1cENvbnRhaW5lcl9zbXMgc3BhbnsgYmFja2dyb3VuZDojMDUxNDFmOyBjb2xvcjojZmZmZmZmOyB9IC5ibGFja0NvbG9yQm9sZHsgY29sb3I6IzAwMCFpbXBvcnRhbnQ7IGZvbnQtd2VpZ2h0OjcwMCFpbXBvcnRhbnQ7IGZvbnQtc2l6ZToxcmVtICFpbXBvcnRhbnQ7IH0gLmZsZXgtY2VudGVyIC5yZXNwb25zaXZlLWVkaXRvciB7IGZsZXgtZ3JvdzoxOyB9IC5yZXZlYWwtbW9kYWx7IGJveC1zaXppbmc6Y29udGVudC1ib3g7IH0gLmdtLXN0eWxlLWl3LWQgeyBwYWRkaW5nLXRvcDoxMnB4OyBtYXJnaW4tcmlnaHQ6LTI0cHg7IH0gLmdtLXN0eWxlIC5nbS1zdHlsZS1pdy1jIHsgZmxleC1kaXJlY3Rpb246cm93LXJldmVyc2U7IH0gLmdyZWNhcHRjaGEtYmFkZ2UgeyBib3R0b206MTAwcHggIWltcG9ydGFudDsgfQovKiogL2Nzcy9mb250cy5TaWduYXR1cmVMaWdodC5jc3MgKiovCkBmb250LWZhY2V7Zm9udC1kaXNwbGF5OnN3YXA7Zm9udC1mYW1pbHk6J1NpZ25hdHVyZUxpZ2h0Jztmb250LXdlaWdodDpub3JtYWw7Zm9udC1zdHlsZTpub3JtYWw7c3JjOnVybCgnaHR0cHM6Ly9mb250cy5kMmNtZWRpYS5jYS9LaWFTaWduYXR1cmVMaWdodC53b2ZmMicpZm9ybWF0KCd3b2ZmMicpLHVybCgnaHR0cHM6Ly9mb250cy5kMmNtZWRpYS5jYS9LaWFTaWduYXR1cmVMaWdodC53b2ZmJylmb3JtYXQoJ3dvZmYnKTt9QGZvbnQtZmFjZXtmb250LWRpc3BsYXk6c3dhcDtmb250LWZhbWlseTonU2lnbmF0dXJlTGlnaHQnO2ZvbnQtd2VpZ2h0OmJvbGQ7Zm9udC1zdHlsZTpub3JtYWw7c3JjOnVybCgnaHR0cHM6Ly9mb250cy5kMmNtZWRpYS5jYS9LaWFTaWduYXR1cmVCb2xkLndvZmYyJylmb3JtYXQoJ3dvZmYyJyksdXJsKCdodHRwczovL2ZvbnRzLmQyY21lZGlhLmNhL0tpYVNpZ25hdHVyZUJvbGQud29mZicpZm9ybWF0KCd3b2ZmJyk7fQovKiogL2Nzcy9mb250cy5TaWduYXR1cmUuY3NzICoqLwpAZm9udC1mYWNle2ZvbnQtZGlzcGxheTpzd2FwO2ZvbnQtZmFtaWx5OidTaWduYXR1cmUnO2ZvbnQtd2VpZ2h0Om5vcm1hbDtmb250LXN0eWxlOm5vcm1hbDtzcmM6dXJsKCdodHRwczovL2ZvbnRzLmQyY21lZGlhLmNhL0tpYVNpZ25hdHVyZVJlZ3VsYXIud29mZjInKWZvcm1hdCgnd29mZjInKSx1cmwoJ2h0dHBzOi8vZm9udHMuZDJjbWVkaWEuY2EvS2lhU2lnbmF0dXJlUmVndWxhci53b2ZmJylmb3JtYXQoJ3dvZmYnKTt9QGZvbnQtZmFjZXtmb250LWRpc3BsYXk6c3dhcDtmb250LWZhbWlseTonU2lnbmF0dXJlJztmb250LXdlaWdodDpib2xkO2ZvbnQtc3R5bGU6bm9ybWFsO3NyYzp1cmwoJ2h0dHBzOi8vZm9udHMuZDJjbWVkaWEuY2EvS2lhU2lnbmF0dXJlQm9sZC53b2ZmMicpZm9ybWF0KCd3b2ZmMicpLHVybCgnaHR0cHM6Ly9mb250cy5kMmNtZWRpYS5jYS9LaWFTaWduYXR1cmVCb2xkLndvZmYnKWZvcm1hdCgnd29mZicpO30KLyoqIC9jc3MvYmFzZS5jc3MgKiovCnN0YWNrLWxjLCAuc3RhY2stbGMgeyAtLXNwYWNlOnZhcigtLXMsIDAuNXJlbSk7IGRpc3BsYXk6ZmxleDsgZmxleC1kaXJlY3Rpb246Y29sdW1uOyBqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1zdGFydDsgfSBzdGFjay1sYyA+ICosIC5zdGFjay1sYyA+ICogeyBtYXJnaW4tdG9wOjA7IG1hcmdpbi1ib3R0b206MDsgfSBzdGFjay1sYyA+ICogKyAqLCAuc3RhY2stbGMgPiAqICsgKiB7IG1hcmdpbi10b3A6dmFyKC0tc3BhY2UpOyB9IHN0YWNrLWxjLi0tczAgPiAqICsgKiwgLnN0YWNrLWxjLi0tczAgPiAqICsgKiB7IGJvcmRlci13aWR0aDowOyBib3JkZXItdG9wLXdpZHRoOnZhcigtLWJvcmRlci10aGluKTsgYm9yZGVyLWNvbG9yOmluaGVyaXQ7IH0gLmJveC1sYywgYm94LWxjIHsgLS1zcGFjZTp2YXIoLS1zLCAwLjVyZW0pOyBkaXNwbGF5OmJsb2NrOyBwYWRkaW5nOnZhcigtLXNwYWNlKTsgb3V0bGluZTp2YXIoLS1ib3JkZXItdGhpbikgdHJhbnNwYXJlbnQ7IG91dGxpbmUtb2Zmc2V0OmNhbGModmFyKC0tYm9yZGVyLXRoaW4pICogLTEpOyB9IC5ib3gtbGMsIGJveC1sYyAqIHsgY29sb3I6aW5oZXJpdDsgfSAuYmctYm94eyBjb2xvcjp2YXIoLS1ibGFjayk7IGJhY2tncm91bmQtY29sb3I6dmFyKC0td2hpdGUpOyBib3JkZXItd2lkdGg6dmFyKC0tYm9yZGVyLXRoaW4pOyB9IC5nbGFzcy1ib3h7IGJvcmRlcjpub25lOyBiYWNrZ3JvdW5kOm5vbmU7IGJhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7IGNvbG9yOmluaGVyaXQ7IH0gLmN0ci1ib3gsIC5mbGV4LWJveCwgLmZsZXgtY29sdW1uLCAuZmxleC1hcm91bmQsIC5mbGV4LWJldHdlZW4sIC5mbGV4LWV2ZW5seSwgLmZsZXgtY2VudGVyLCAuZmxleC1zdGFydCwgLmZsZXgtZW5kLCAuZmxleC1hdXRvLCAuZmxleC1lcXVhbHsgZGlzcGxheTpmbGV4OyB9IC5pbmxpbmUtYm94eyBkaXNwbGF5OmlubGluZS1ibG9jazsgfSAuc2hhZG93LWJveHsgYm94LXNoYWRvdzowIDAgMTBweCAycHggdmFyKC0tbWlkLWdyYXkpOyBib3JkZXItY29sb3I6dmFyKC0tbGlnaHQtZ3JheSk7IH0gLmZsZXgtYm94Om5vdCg6aXMoLmZsZXgtYmV0d2VlbiwuZmxleC1ldmVubHksLmZsZXgtYXJvdW5kKSkgPiAqICsgKnsgbWFyZ2luLWxlZnQ6dmFyKC0tcyk7IH0gLmdyb3VwLWxjLCBncm91cC1sYyB7IC0tc3BhY2U6dmFyKC0tcywgMC41cmVtKTsgfSAuZ3JvdXAtbGMgPiAqLCBncm91cC1sYyA+ICogeyBkaXNwbGF5OmZsZXg7IGZsZXgtd3JhcDp3cmFwOyBqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjsgYWxpZ24taXRlbXM6Y2VudGVyOyBtYXJnaW46Y2FsYyh2YXIoLS1zcGFjZSkgLyAyICogLTEpOyB9IC5ncm91cC1sYyA+ICogPiAqLCBncm91cC1sYyA+ICogPiAqIHsgbWFyZ2luOmNhbGModmFyKC0tc3BhY2UpIC8gMik7IH0gOmlzKC5zaWRlYmFyLWxjLHNpZGViYXItbGMpIHsgb3ZlcmZsb3c6aGlkZGVuOyB9IDppcyguc2lkZWJhci1sYyxzaWRlYmFyLWxjKSA+ICogeyAtLXNwYWNlOnZhcigtLXMsIDAuNXJlbSk7IGRpc3BsYXk6ZmxleDsgZmxleC13cmFwOndyYXA7IG1hcmdpbjpjYWxjKHZhcigtLXNwYWNlKSAvIDIgKiAtMSk7IH0gOmlzKC5zaWRlYmFyLWxjLHNpZGViYXItbGMpID4gKiA+ICogeyBtYXJnaW46Y2FsYyh2YXIoLS1zcGFjZSkgLyAyKTsgZmxleC1ncm93OjE7IH0gOmlzKC5zaWRlYmFyLWxjLHNpZGViYXItbGMpID4gKiA+IDpmaXJzdC1jaGlsZCB7IGZsZXgtYmFzaXM6MDsgZmxleC1ncm93Ojk5OTsgbWluLXdpZHRoOmNhbGModmFyKC0tc2lkZWJhci1icCwgNTAlKSAtIHZhcigtLXNwYWNlKSk7IH0gOmlzKC5zd2l0Y2hlci1sYyxzd2l0Y2hlci1sYykgPiAqIHsgLS1zcGFjZTp2YXIoLS1zLCAwLjVyZW0pOyBkaXNwbGF5OmZsZXg7IGZsZXgtd3JhcDp3cmFwOyBtYXJnaW46Y2FsYygodmFyKC0tc3BhY2UpIC8gMikgKiAtMSk7IH0gOmlzKC5zd2l0Y2hlci1sYyxzd2l0Y2hlci1sYykgPiAqID4gKiB7IGZsZXgtZ3JvdzoxOyBmbGV4LWJhc2lzOmNhbGMoKHZhcigtLXN3aXRjaC1icCwgMzByZW0pIC0gKDEwMCUgLSB2YXIoLS1zcGFjZSkpKSAqIDk5OSk7IG1hcmdpbjpjYWxjKHZhcigtLXNwYWNlKSAvIDIpOyB9IDppcyguc3dpdGNoZXItbGMsc3dpdGNoZXItbGMpID4gKiA+IDpudGgtbGFzdC1jaGlsZChuKzUpLCA6aXMoLnN3aXRjaGVyLWxjLHN3aXRjaGVyLWxjKSA+ICogPiA6bnRoLWxhc3QtY2hpbGQobis1KSB+ICogeyBmbGV4LWJhc2lzOjEwMCU7IH0gLi0tczB7LS1zcGFjZTp2YXIoLS1zMCk7fSAuLS1zLTl7LS1zcGFjZTp2YXIoLS1zLTkpO30gLi0tcy04ey0tc3BhY2U6dmFyKC0tcy04KTt9IC4tLXMtN3stLXNwYWNlOnZhcigtLXMtNyk7fSAuLS1zLTZ7LS1zcGFjZTp2YXIoLS1zLTYpO30gLi0tcy01ey0tc3BhY2U6dmFyKC0tcy01KTt9IC4tLXMtNHstLXNwYWNlOnZhcigtLXMtNCk7fSAuLS1zLTN7LS1zcGFjZTp2YXIoLS1zLTMpO30gLi0tcy0yey0tc3BhY2U6dmFyKC0tcy0yKTt9IC4tLXMtMXstLXNwYWNlOnZhcigtLXMtMSk7fSAuLS1zey0tc3BhY2U6dmFyKC0tcyk7fSAuLS1zMXstLXNwYWNlOnZhcigtLXMxKTt9IC4tLXMyey0tc3BhY2U6dmFyKC0tczIpO30gLi0tczN7LS1zcGFjZTp2YXIoLS1zMyk7fSAuLS1zNHstLXNwYWNlOnZhcigtLXM0KTt9IC4tLXM1ey0tc3BhY2U6dmFyKC0tczUpO30gLi0tczZ7LS1zcGFjZTp2YXIoLS1zNik7fSAuLS1zN3stLXNwYWNlOnZhcigtLXM3KTt9IC4tLXM4ey0tc3BhY2U6dmFyKC0tczgpO30gLi0tczl7LS1zcGFjZTp2YXIoLS1zOSk7fSAuLS1mcy05e2ZvbnQtc2l6ZTp2YXIoLS1mcy05KTstLWZzOnZhcigtLWZzLTkpO30gLi0tZnMtOHtmb250LXNpemU6dmFyKC0tZnMtOCk7LS1mczp2YXIoLS1mcy04KTt9IC4tLWZzLTd7Zm9udC1zaXplOnZhcigtLWZzLTcpOy0tZnM6dmFyKC0tZnMtNyk7fSAuLS1mcy02e2ZvbnQtc2l6ZTp2YXIoLS1mcy02KTstLWZzOnZhcigtLWZzLTYpO30gLi0tZnMtNXtmb250LXNpemU6dmFyKC0tZnMtNSk7LS1mczp2YXIoLS1mcy01KTt9IC4tLWZzLTR7Zm9udC1zaXplOnZhcigtLWZzLTQpOy0tZnM6dmFyKC0tZnMtNCk7fSAuLS1mcy0ze2ZvbnQtc2l6ZTp2YXIoLS1mcy0zKTstLWZzOnZhcigtLWZzLTMpO30gLi0tZnMtMntmb250LXNpemU6dmFyKC0tZnMtMik7LS1mczp2YXIoLS1mcy0yKTt9IC4tLWZzLTF7Zm9udC1zaXplOnZhcigtLWZzLTEpOy0tZnM6dmFyKC0tZnMtMSk7fSAuLS1mczB7Zm9udC1zaXplOnZhcigtLWZzMCk7LS1mczp2YXIoLS1mczApO30gLi0tZnMxe2ZvbnQtc2l6ZTp2YXIoLS1mczEpOy0tZnM6dmFyKC0tZnMxKTt9IC4tLWZzMntmb250LXNpemU6dmFyKC0tZnMyKTstLWZzOnZhcigtLWZzMik7fSAuLS1mczN7Zm9udC1zaXplOnZhcigtLWZzMyk7LS1mczp2YXIoLS1mczMpO30gLi0tZnM0e2ZvbnQtc2l6ZTp2YXIoLS1mczQpOy0tZnM6dmFyKC0tZnM0KTt9IC4tLWZzNXtmb250LXNpemU6dmFyKC0tZnM1KTstLWZzOnZhcigtLWZzNSk7fSAuLS1mczZ7Zm9udC1zaXplOnZhcigtLWZzNik7LS1mczp2YXIoLS1mczYpO30gLi0tZnM3e2ZvbnQtc2l6ZTp2YXIoLS1mczcpOy0tZnM6dmFyKC0tZnM3KTt9IC4tLWZzOHtmb250LXNpemU6dmFyKC0tZnM4KTstLWZzOnZhcigtLWZzOCk7fSAuLS1mczl7Zm9udC1zaXplOnZhcigtLWZzOSk7LS1mczp2YXIoLS1mczkpO30gLnNocmluay1ncm93e2ZsZXg6MSAxO30gLmZsZXgtd3JhcCB7ZmxleC13cmFwOndyYXA7fSAuZmxleC1yZXZlcnNlIHtmbGV4LWRpcmVjdGlvbjpyb3ctcmV2ZXJzZTt9IC5mbGV4LWF1dG8gPiAqe2ZsZXg6MSAxIGF1dG87fSAuZmxleC1lcXVhbCA+ICp7ZmxleDoxIDE7fSAuYWxpZ24tY2VudGVyIHthbGlnbi1pdGVtczpjZW50ZXI7fSAuYWxpZ24tc3RhcnR7YWxpZ24taXRlbXM6ZmxleC1zdGFydDt9IC5hbGlnbi1lbmR7YWxpZ24taXRlbXM6ZmxleC1lbmQ7fSAuYWxpZ24tYmFzZWxpbmV7YWxpZ24taXRlbXM6YmFzZWxpbmU7fSAuZmxleC1jb2x1bW4ge2ZsZXgtZmxvdzpjb2x1bW47fSAuZmxleC1yb3cge2ZsZXgtZmxvdzpyb3c7fSAuZmxleC1hcm91bmR7anVzdGlmeS1jb250ZW50OnNwYWNlLWFyb3VuZDt9IC5mbGV4LWJldHdlZW57anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47fSAuZmxleC1ldmVubHl7anVzdGlmeS1jb250ZW50OnNwYWNlLWV2ZW5seTt9IC5mbGV4LWNlbnRlcntqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO30gLmZsZXgtc3RhcnR7anVzdGlmeS1jb250ZW50OmZsZXgtc3RhcnQ7fSAuZmxleC1lbmR7anVzdGlmeS1jb250ZW50OmZsZXgtZW5kO30gLi1wMCB7cGFkZGluZzowO30gLi1wdDAge3BhZGRpbmctdG9wOjA7fSAuLXBiMCB7cGFkZGluZy1ib3R0b206MDt9IC4tcHYwIHtwYWRkaW5nLXRvcDowO3BhZGRpbmctYm90dG9tOjB9IC4tcGgwIHtwYWRkaW5nLWxlZnQ6MDtwYWRkaW5nLXJpZ2h0OjB9IC4tcCB7cGFkZGluZzp2YXIoLS1zcGFjZSk7fSAuLXB2e3BhZGRpbmctdG9wOnZhcigtLXNwYWNlKTsgcGFkZGluZy1ib3R0b206dmFyKC0tc3BhY2UpO30gLi1waHtwYWRkaW5nLWxlZnQ6dmFyKC0tc3BhY2UpOyBwYWRkaW5nLXJpZ2h0OnZhcigtLXNwYWNlKTt9IC4tcHR7cGFkZGluZy10b3A6dmFyKC0tc3BhY2UpO30gLi1wYntwYWRkaW5nLWJvdHRvbTp2YXIoLS1zcGFjZSk7fSAuLW0wIHttYXJnaW46MDt9IC4tbXQwIHttYXJnaW4tdG9wOjA7fSAuLW1iMCB7bWFyZ2luLWJvdHRvbTowO30gLi1tdjAge21hcmdpbi10b3A6MDttYXJnaW4tYm90dG9tOjB9IC4tbWgwIHttYXJnaW4tbGVmdDowO21hcmdpbi1yaWdodDowfSAuLW0ge21hcmdpbjp2YXIoLS1zcGFjZSk7fSAuLW12e21hcmdpbi10b3A6dmFyKC0tc3BhY2UpOyBtYXJnaW4tYm90dG9tOnZhcigtLXNwYWNlKTt9IC4tbWh7bWFyZ2luLWxlZnQ6dmFyKC0tc3BhY2UpOyBtYXJnaW4tcmlnaHQ6dmFyKC0tc3BhY2UpO30gLi1tdHttYXJnaW4tdG9wOnZhcigtLXNwYWNlKTt9IC4tbWJ7bWFyZ2luLWJvdHRvbTp2YXIoLS1zcGFjZSk7fSAuLWIwIHtib3JkZXI6bm9uZTt9IC4tYjIge2JvcmRlci13aWR0aDoycHg7fSAuLWJ7Ym9yZGVyLXdpZHRoOjFweDt9IC4tYnR7Ym9yZGVyLXRvcC13aWR0aDoxcHg7fSAuLWJie2JvcmRlci1ib3R0b20td2lkdGg6MXB4O30gLi1idntib3JkZXItdG9wLXdpZHRoOjFweDtib3JkZXItYm90dG9tLXdpZHRoOjFweDt9IC4tYmh7Ym9yZGVyLWxlZnQtd2lkdGg6MXB4O2JvcmRlci1yaWdodC13aWR0aDoxcHg7fSAuLXctZnVsbCB7d2lkdGg6MTAwdnc7fSAuLXctMTAwIHt3aWR0aDoxMDAlO30gLi13LTUwIHt3aWR0aDo1MCU7fSAuLXctMzMge3dpZHRoOjMzLjMzJTt9IC4tdy0yNSB7d2lkdGg6MjUlO30gLi13LTUwdyB7d2lkdGg6NTB2dzt9IC4tZnMteHhze2ZvbnQtc2l6ZTowLjE1cmVtOyAtLWZzOjAuMTVyZW07fSAuLWZzLXhze2ZvbnQtc2l6ZTowLjVyZW07IC0tZnM6MC41cmVtO30gLi1mcy1ze2ZvbnQtc2l6ZTowLjc1cmVtOyAtLWZzOjAuNzVyZW07fSAuLWZzLXNye2ZvbnQtc2l6ZTowLjlyZW07IC0tZnM6MC45cmVtO30gLi1mcy1scntmb250LXNpemU6MS4xcmVtOyAtLWZzOjEuMXJlbTt9IC4tZnMtbHtmb250LXNpemU6MS4yNXJlbTsgLS1mczoxLjI1cmVtO30gLi1mcy14bHtmb250LXNpemU6MS41cmVtOyAtLWZzOjEuNXJlbTt9IC4tZnMteHhse2ZvbnQtc2l6ZToycmVtOyAtLWZzOjJyZW07fSAuLWZzLXh4eGx7Zm9udC1zaXplOjIuMjVyZW07IC0tZnM6Mi4yNXJlbTt9IC4tZncxIHtmb250LXdlaWdodDoxMDA7fSAuLWZ3MiB7Zm9udC13ZWlnaHQ6MjAwO30gLi1mdzMge2ZvbnQtd2VpZ2h0OjMwMDt9IC4tZnc0IHtmb250LXdlaWdodDo0MDA7fSAuLWZ3NSB7Zm9udC13ZWlnaHQ6NTAwO30gLi1mdzYge2ZvbnQtd2VpZ2h0OjYwMDt9IC4tZnc3IHtmb250LXdlaWdodDo3MDA7fSAuLWZ3OCB7Zm9udC13ZWlnaHQ6ODAwO30gLi1mdzkge2ZvbnQtd2VpZ2h0OjkwMDt9IC4tYm9sZCB7Zm9udC13ZWlnaHQ6Ym9sZDt9IC50eHQtcmVkIHtjb2xvcjojY2MwMDAwO30gLnR4dC1jZW50ZXJ7dGV4dC1hbGlnbjpjZW50ZXI7fSAudHh0LXJpZ2h0e3RleHQtYWxpZ246cmlnaHQ7fSAudHh0LWxlZnR7dGV4dC1hbGlnbjpsZWZ0O30gLnR4dC11cHBlcnt0ZXh0LXRyYW5zZm9ybTp2YXIoLS1jZXJ0LXR4dC10cmFuc2Zvcm0sIHZhcigtLXR4dC11cHBlciwgdXBwZXJjYXNlKSk7fSAudHh0LW5vdGV7Zm9udC1zdHlsZTppdGFsaWM7fSAudHh0LXBheW1lbnQge2NvbG9yOnZhcigtLW5ld3ZkcC1iZXN0cHJpY2UtdGV4dC1jb2xvci1wcmljZSkgIWltcG9ydGFudDt9IC4tcG9zcmVse3Bvc2l0aW9uOnJlbGF0aXZlO30gLmNlcnQtdHh0LXRyYW5zZm9ybXt0ZXh0LXRyYW5zZm9ybTp2YXIoLS1jZXJ0LXR4dC10cmFuc2Zvcm0sIG5vbmUpO30gW2hpZGRlbl0sIC5oaWRkZW4geyBkaXNwbGF5Om5vbmUgIWltcG9ydGFudDsgfSAuc2tlbGV0b24tc2xpZGVyID4gKnsgZGlzcGxheTpub25lOyB9IC5za2VsZXRvbi10eHR7IHRleHQtaW5kZW50OjEwMCU7IHdoaXRlLXNwYWNlOm5vd3JhcDsgb3ZlcmZsb3c6aGlkZGVuOyBiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjIxLCAyMjEsIDIyMSwgMC44KTsgYm9yZGVyLXJhZGl1czowLjVyZW07IH0gLnNrZWxldG9uLWJ0bnsgd2lkdGg6bWluKDIwcmVtLDEwMCUpOyBoZWlnaHQ6Mi41cmVtOyBib3JkZXItcmFkaXVzOjAuNXJlbTsgYmFja2dyb3VuZC1jb2xvcjpyZ2JhKDIyMSwgMjIxLCAyMjEsIDAuOCk7IG1hcmdpbjphdXRvOyB9IC5za2VsZXRvbi1ibG9ja3sgd2lkdGg6MTAwJTsgaGVpZ2h0OjEwMCU7IGJhY2tncm91bmQtY29sb3I6cmdiYSgyMjEsIDIyMSwgMjIxLCAwLjgpOyB9IC5za2VsZXRvbi1zbGlkZXIsIC5za2VsZXRvbi10eHQsIC5za2VsZXRvbi1idG4sIC5za2VsZXRvbi1ibG9jayB7IHBvc2l0aW9uOnJlbGF0aXZlOyBvdmVyZmxvdzpoaWRkZW47IGRpc3BsYXk6YmxvY2s7IH0gLnNrZWxldG9uLXNsaWRlcjo6YWZ0ZXIsIC5za2VsZXRvbi10eHQ6OmFmdGVyLCAuc2tlbGV0b24tYnRuOjphZnRlciwgLnNrZWxldG9uLWJsb2NrOjphZnRlciB7IGNvbnRlbnQ6IiI7IHBvc2l0aW9uOmFic29sdXRlOyB0b3A6MDsgcmlnaHQ6MDsgYm90dG9tOjA7IGxlZnQ6MDsgdHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTEwMCUpOyBiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCg5MGRlZywgcmdiYSgyNTUsIDI1NSwgMjU1LCAwKSAwLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMikgMjAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSkgNjAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDApKTsgYW5pbWF0aW9uOnNoaW1tZXIgMnMgaW5maW5pdGU7IH0gLnNrZWxldG9uLXNsaWRlciB7IGJhY2tncm91bmQtaW1hZ2U6dXJsKCJkYXRhOmltYWdlL3N2Zyt4bWwsJTNDc3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgdmlld0JveD0nMCAwIDUxMiA1MTInJTNFJTNDcGF0aCBkPSdNNDY0IDQ0OEg0OGMtMjYuNTEgMC00OC0yMS40OS00OC00OFYxMTJjMC0yNi41MSAyMS40OS00OCA0OC00OGg0MTZjMjYuNTEgMCA0OCAyMS40OSA0OCA0OHYyODhjMCAyNi41MS0yMS40OSA0OC00OCA0OHpNMTEyIDEyMGMtMzAuOTI4IDAtNTYgMjUuMDcyLTU2IDU2czI1LjA3MiA1NiA1NiA1NiA1Ni0yNS4wNzIgNTYtNTYtMjUuMDcyLTU2LTU2LTU2ek02NCAzODRoMzg0VjI3MmwtODcuNTE1LTg3LjUxNWMtNC42ODYtNC42ODYtMTIuMjg0LTQuNjg2LTE2Ljk3MSAwTDIwOCAzMjBsLTU1LjUxNS01NS41MTVjLTQuNjg2LTQuNjg2LTEyLjI4NC00LjY4Ni0xNi45NzEgMEw2NCAzMzZ2NDh6JyBmaWxsPSclMjNlZWUnLyUzRSUzQy9zdmclM0UiKTsgYmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0OyBiYWNrZ3JvdW5kLXBvc2l0aW9uOmNlbnRlcjsgYmFja2dyb3VuZC1jb2xvcjojY2NjOyBvcGFjaXR5OjAuOTsgfSBAa2V5ZnJhbWVzIHNoaW1tZXIgeyAxMDAlIHt0cmFuc2Zvcm06dHJhbnNsYXRlWCgxMDAlKTt9IH0gQHN1cHBvcnRzICgtd2Via2l0LXRvdWNoLWNhbGxvdXQ6bm9uZSkgeyAuc2tlbGV0b24tc2xpZGVyOjphZnRlciwgLnNrZWxldG9uLXR4dDo6YWZ0ZXJ7IGFuaW1hdGlvbjpub25lOyB9IH0gLmNvbnRlbnQtc2tlbGV0b24geyBiYWNrZ3JvdW5kOiNlZWU7IGJvcmRlci1yYWRpdXM6MC41cmVtOyBvdmVyZmxvdzpoaWRkZW47IHdpZHRoOjEwMCU7IGhlaWdodDoxMDAlOyBtYXgtd2lkdGg6NDAwcHg7IHBvc2l0aW9uOnJlbGF0aXZlOyB9IC5jb250ZW50LXNrZWxldG9uLnJlY3RhbmdsZSB7IGFzcGVjdC1yYXRpbzp2YXIoLS1yYXRpbywgMTYvOSk7IH0gLmNvbnRlbnQtc2tlbGV0b24udGV4dCB7IGhlaWdodDphdXRvOyBwYWRkaW5nOjFyZW07IH0gLmNvbnRlbnQtc2tlbGV0b24udGV4dDo6YmVmb3JlLCAuY29udGVudC1za2VsZXRvbi50ZXh0OjphZnRlciB7IGNvbnRlbnQ6IiI7IGRpc3BsYXk6YmxvY2s7IGhlaWdodDoxcmVtOyBiYWNrZ3JvdW5kOiNkZGQ7IG1hcmdpbi1ib3R0b206MC41cmVtOyBib3JkZXItcmFkaXVzOjAuMjVyZW07IH0gLmNvbnRlbnQtc2tlbGV0b24udGV4dDo6YWZ0ZXIgeyB3aWR0aDo3MCU7IH0gLmNvbnRlbnQtc2tlbGV0b24uYWN0aXZlIHsgYmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQoOTBkZWcsICNmOWY5ZjkgMjUlLCAjZGVkZWRlIDUwJSwgI2Y5ZjlmOSA3NSUpOyBiYWNrZ3JvdW5kLXNpemU6MjAwJSAxMDAlOyBhbmltYXRpb246c2hpbW1lciAycyBpbmZpbml0ZSBsaW5lYXI7IH0gQGtleWZyYW1lcyBzaGltbWVyIHsgMCUgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOjIwMCUgMDsgfSAxMDAlIHsgYmFja2dyb3VuZC1wb3NpdGlvbjotMjAwJSAwOyB9IH0gLmNvbnRlbnQtc2tlbGV0b24uZGVidWc6OmFmdGVyIHsgY29udGVudDphdHRyKGRhdGEtYmxvY2spICIgfCAiIGF0dHIoZGF0YS1zb3VyY2UpICIgfCAiIGF0dHIoZGF0YS1nZW5lcmF0ZWQtYXQpOyBwb3NpdGlvbjphYnNvbHV0ZTsgdG9wOjRweDsgbGVmdDo0cHg7IHJpZ2h0OjRweDsgZm9udC1zaXplOjAuN3JlbTsgZm9udC1mYW1pbHk6bW9ub3NwYWNlLCBzYW5zLXNlcmlmOyBjb2xvcjojZmZmOyBiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsMC42KTsgcGFkZGluZzoycHggNHB4OyBib3JkZXItcmFkaXVzOjRweDsgei1pbmRleDoxMDsgcG9pbnRlci1ldmVudHM6bm9uZTsgfSBib2R5IHsgd2lkdGg6YXV0bzsgbWFyZ2luOjA7IHBhZGRpbmc6MDsgZm9udC1zaXplOjFyZW07IGZvbnQtZmFtaWx5OnZhcigtLWZvbnQtdGV4dC1tb2IpOyBjb2xvcjp2YXIoLS1kZWZhdWx0LWJsYWNrKTsgZm9udC13ZWlnaHQ6dmFyKC0tZm9udC10ZXh0LXdlaWdodCk7IH0gdWwgeyBsaXN0LXN0eWxlOm5vbmU7IGxpc3Qtc3R5bGUtdHlwZTpub25lOyBsaXN0LXN0eWxlLXBvc2l0aW9uOmluaXRpYWw7IGxpc3Qtc3R5bGUtaW1hZ2U6aW5pdGlhbDsgfSAucmVzcG9uc2l2ZS1lZGl0b3IgdWwgeyBsaXN0LXN0eWxlOmluaGVyaXQ7IGxpc3Qtc3R5bGUtdHlwZTppbmhlcml0OyBsaXN0LXN0eWxlLXBvc2l0aW9uOmluaGVyaXQ7IGxpc3Qtc3R5bGUtaW1hZ2U6aW5oZXJpdDsgfSBzdmcsIHN2Zy5pY29ueyAtLWljb24tc2l6ZTpjYWxjKHZhcigtLWZzLCB2YXIoLS1mczApKSAvIHZhcigtLXJhdGlvKSk7IGZpbGw6dmFyKC0tdHh0LWNvbG9yLCB2YXIoLS1ibGFjaykpOyB3aWR0aDp2YXIoLS1pY29uLXNpemUpOyBoZWlnaHQ6dmFyKC0taWNvbi1zaXplKTsgfSBzdmcuYXV0aG9yaXplZC1ibGFja3tmaWxsOiMyODI4MjghaW1wb3J0YW50O30gc3ZnLmF1dGhvcml6ZWQtYmxhY2sta2lhe2ZpbGw6IzA1MTQxRiFpbXBvcnRhbnQ7fSBzdmcuYXV0aG9yaXplZC1yZWR7ZmlsbDojRkYwMDAwIWltcG9ydGFudDt9IHN2Zy5hdXRob3JpemVkLXdoaXRle2ZpbGw6I0ZGRkZGRiFpbXBvcnRhbnQ7fSAuYXV0aG9yaXplZC1yZWQtd2hpdGUtcGxheS1idG57YmFja2dyb3VuZDpyYWRpYWwtZ3JhZGllbnQoI0ZGRkZGRiA1MCUsdHJhbnNwYXJlbnQgNTAlKTt9IHN2Zy5vZ2NvbG9yLWZhY2Vib29re2ZpbGw6IzQyNjdCMiFpbXBvcnRhbnQ7fSBzdmcub2djb2xvci10d2l0dGVye2ZpbGw6IzFEQTFGMiFpbXBvcnRhbnQ7fSBzdmcub2djb2xvci14LXR3aXR0ZXJ7ZmlsbDojMTQxNzFBIWltcG9ydGFudDt9IHN2Zy5vZ2NvbG9yLXgtdHdpdHRlci13aGl0ZXtmaWxsOiNGRkZGRkYhaW1wb3J0YW50O30gc3ZnLm9nY29sb3ItbGlua2VkaW57ZmlsbDojMDA3N0I1IWltcG9ydGFudDt9IHN2Zy5vZ2NvbG9yLWJsb2dnZXJ7ZmlsbDojRkY1NzIyIWltcG9ydGFudDt9IHN2Zy5vZ2NvbG9yLXBpbnRlcmVzdHtmaWxsOiNFNjAwMjMhaW1wb3J0YW50O30gc3ZnLm9nY29sb3IteW91dHViZXtmaWxsOiNGRjAwMDAhaW1wb3J0YW50OyBiYWNrZ3JvdW5kOnJhZGlhbC1ncmFkaWVudCgjRkZGRkZGIDUwJSx0cmFuc3BhcmVudCA1MCUpO30gc3ZnLm9nY29sb3ItaW5zdGFncmFte2ZpbGw6IzgzM0FCNCFpbXBvcnRhbnQ7fSBzdmcub2djb2xvci10aWt0b2t7ZmlsbDojZmYwMDUwIWltcG9ydGFudDt9IC5mYWNlYm9vay1vZ2ljb24tdHdlYWtze2hlaWdodDoyNHB4IWltcG9ydGFudDttYXJnaW4tdG9wOjJweCFpbXBvcnRhbnQ7fSAjZm9vdGVyIC5mYWNlYm9vay1vZ2ljb24tdHdlYWtze2hlaWdodDoyM3B4IWltcG9ydGFudDttYXJnaW4tdG9wOjBweCFpbXBvcnRhbnQ7fSAuaW5zdGFncmFtLW9naWNvbi10d2Vha3N7aGVpZ2h0OjI4cHghaW1wb3J0YW50O21hcmdpbi10b3A6MHB4IWltcG9ydGFudDt9ICNmb290ZXIgLmluc3RhZ3JhbS1vZ2ljb24tdHdlYWtze2hlaWdodDoyOXB4IWltcG9ydGFudDttYXJnaW4tdG9wOi00cHghaW1wb3J0YW50O30gc3ZnLmN1c3RvbW1lZGlhLWNvbG9ycGlja2Vye2ZpbGw6dmFyKC0tYWRtaW4tc29jaWFsLWN1c3RvbS1jb2xvci1waWNrZXItdGV4dCkhaW1wb3J0YW50O30gLnNvY2lhbC1tZWRpYV9fY29udGFpbmVyIC5iZy1hdXRob3JpemVkLWJsYWNre2JhY2tncm91bmQtY29sb3I6IzI4MjgyOCFpbXBvcnRhbnQ7fSAuc29jaWFsLW1lZGlhX19jb250YWluZXIgLmJnLWF1dGhvcml6ZWQtYmxhY2sta2lhe2JhY2tncm91bmQtY29sb3I6IzA1MTQxRiFpbXBvcnRhbnQ7fSAuc29jaWFsLW1lZGlhX19jb250YWluZXIgLmJnLWF1dGhvcml6ZWQtcmVke2JhY2tncm91bmQtY29sb3I6I0ZGMDAwMCFpbXBvcnRhbnQ7fSAuc29jaWFsLW1lZGlhX19jb250YWluZXIgLmJnLWF1dGhvcml6ZWQtd2hpdGV7YmFja2dyb3VuZC1jb2xvcjojRkZGRkZGIWltcG9ydGFudDt9IC5zb2NpYWwtbWVkaWFfX2NvbnRhaW5lciAuYmctb2djb2xvci1mYWNlYm9va3tiYWNrZ3JvdW5kLWNvbG9yOiMzYTU5OTghaW1wb3J0YW50O30gLnNvY2lhbC1tZWRpYV9fY29udGFpbmVyIC5iZy1vZ2NvbG9yLXR3aXR0ZXJ7YmFja2dyb3VuZC1jb2xvcjojMDBhY2VkIWltcG9ydGFudDt9IC5zb2NpYWwtbWVkaWFfX2NvbnRhaW5lciAuYmctb2djb2xvci14LXR3aXR0ZXJ7YmFja2dyb3VuZC1jb2xvcjojMTQxNzFBIWltcG9ydGFudDt9IC5zb2NpYWwtbWVkaWFfX2NvbnRhaW5lciAuYmctb2djb2xvci14LXR3aXR0ZXItd2hpdGV7YmFja2dyb3VuZC1jb2xvcjojRkZGRkZGIWltcG9ydGFudDt9IC5zb2NpYWwtbWVkaWFfX2NvbnRhaW5lciAuYmctb2djb2xvci1saW5rZWRpbntiYWNrZ3JvdW5kLWNvbG9yOiMwMDc3QjUhaW1wb3J0YW50O30gLnNvY2lhbC1tZWRpYV9fY29udGFpbmVyIC5iZy1vZ2NvbG9yLWJsb2dnZXJ7YmFja2dyb3VuZC1jb2xvcjojRkY1NzIyIWltcG9ydGFudDt9IC5zb2NpYWwtbWVkaWFfX2NvbnRhaW5lciAuYmctb2djb2xvci1waW50ZXJlc3R7YmFja2dyb3VuZC1jb2xvcjojRTYwMDIzIWltcG9ydGFudDt9IC5zb2NpYWwtbWVkaWFfX2NvbnRhaW5lciAuYmctb2djb2xvci15b3V0dWJle2JhY2tncm91bmQtY29sb3I6I0ZGMDAwMCFpbXBvcnRhbnQ7fSAuc29jaWFsLW1lZGlhX19jb250YWluZXIgLmJnLW9nY29sb3ItaW5zdGFncmFte2JhY2tncm91bmQtY29sb3I6I2YyMzk5NSFpbXBvcnRhbnQ7fSAuc29jaWFsLW1lZGlhX19jb250YWluZXIgLmJnLW9nY29sb3ItdGlrdG9re2JhY2tncm91bmQtY29sb3I6I2ZmMDA1MCFpbXBvcnRhbnQ7fSAuc29jaWFsLW1lZGlhX19jb250YWluZXIgLmJnLWN1c3RvbW1lZGlhLWNvbG9ycGlja2Vye2JhY2tncm91bmQtY29sb3I6dmFyKC0tYWRtaW4tc29jaWFsLWN1c3RvbS1jb2xvci1waWNrZXItdGV4dCkhaW1wb3J0YW50O30gLnNvY2lhbC1tZWRpYV9fY29udGFpbmVyIC5jLWF1dGhvcml6ZWQtYmxhY2t7Y29sb3I6IzI4MjgyOCFpbXBvcnRhbnQ7fSAuc29jaWFsLW1lZGlhX19jb250YWluZXIgLmMtYXV0aG9yaXplZC1ibGFjay1raWF7Y29sb3I6IzA1MTQxRiFpbXBvcnRhbnQ7fSAuc29jaWFsLW1lZGlhX19jb250YWluZXIgLmMtYXV0aG9yaXplZC1yZWR7Y29sb3I6I0ZGMDAwMCFpbXBvcnRhbnQ7fSAuc29jaWFsLW1lZGlhX19jb250YWluZXIgLmMtYXV0aG9yaXplZC13aGl0ZXtjb2xvcjojRkZGRkZGIWltcG9ydGFudDt9IC5zb2NpYWwtbWVkaWFfX2NvbnRhaW5lciAuYy1vZ2NvbG9yLWZhY2Vib29re2NvbG9yOiMzYTU5OTghaW1wb3J0YW50O30gLnNvY2lhbC1tZWRpYV9fY29udGFpbmVyIC5jLW9nY29sb3ItdHdpdHRlcntjb2xvcjojMDBhY2VkIWltcG9ydGFudDt9IC5zb2NpYWwtbWVkaWFfX2NvbnRhaW5lciAuYy1vZ2NvbG9yLXgtdHdpdHRlcntjb2xvcjojMTQxNzFBIWltcG9ydGFudDt9IC5zb2NpYWwtbWVkaWFfX2NvbnRhaW5lciAuYy1vZ2NvbG9yLXgtdHdpdHRlci13aGl0ZXtjb2xvcjojRkZGRkZGIWltcG9ydGFudDt9IC5zb2NpYWwtbWVkaWFfX2NvbnRhaW5lciAuYy1vZ2NvbG9yLWxpbmtlZGlue2NvbG9yOiMwMDc3QjUhaW1wb3J0YW50O30gLnNvY2lhbC1tZWRpYV9fY29udGFpbmVyIC5jLW9nY29sb3ItYmxvZ2dlcntjb2xvcjojRkY1NzIyIWltcG9ydGFudDt9IC5zb2NpYWwtbWVkaWFfX2NvbnRhaW5lciAuYy1vZ2NvbG9yLXBpbnRlcmVzdHtjb2xvcjojRTYwMDIzIWltcG9ydGFudDt9IC5zb2NpYWwtbWVkaWFfX2NvbnRhaW5lciAuYy1vZ2NvbG9yLXlvdXR1YmV7Y29sb3I6I0ZGMDAwMCFpbXBvcnRhbnQ7IGJhY2tncm91bmQ6cmFkaWFsLWdyYWRpZW50KCNGRkZGRkYgNTAlLHRyYW5zcGFyZW50IDUwJSk7fSAuc29jaWFsLW1lZGlhX19jb250YWluZXIgLmMtb2djb2xvci1pbnN0YWdyYW17Y29sb3I6I2YyMzk5NSFpbXBvcnRhbnQ7fSAuc29jaWFsLW1lZGlhX19jb250YWluZXIgLmMtb2djb2xvci10aWt0b2t7Y29sb3I6I2ZmMDA1MCFpbXBvcnRhbnQ7fSAuc29jaWFsLW1lZGlhX19jb250YWluZXIgLmMtY3VzdG9tbWVkaWEtY29sb3JwaWNrZXJ7Y29sb3I6dmFyKC0tYWRtaW4tc29jaWFsLWN1c3RvbS1jb2xvci1waWNrZXItdGV4dCkhaW1wb3J0YW50O30gLm5vdGUtYm94eyBkaXNwbGF5OmJsb2NrOyBib3JkZXItcmFkaXVzOjAuMjVyZW07IH0gLm5vdGUtc3VjY2Vzc3sgY29sb3I6IzE1NTcyNDsgYmFja2dyb3VuZC1jb2xvcjojZDRlZGRhOyBib3JkZXItY29sb3I6IzE1NTcyNDsgYm9yZGVyLXdpZHRoOnZhcigtLWJvcmRlci10aGluKTsgfSAubm90ZS1lcnJvcnsgY29sb3I6I2ZmZmZmZjsgYmFja2dyb3VuZC1jb2xvcjojZmYwMDAwOyBib3JkZXItY29sb3I6I2ZmMDAwMDsgYm9yZGVyLXdpZHRoOnZhcigtLWJvcmRlci10aGluKTsgfSB1bC5jaGVja2xpc3QgbGk6YmVmb3JleyBjb250ZW50OiIiOyBib3JkZXItbGVmdDowLjJyZW0gc29saWQ7IGJvcmRlci1ib3R0b206MC4ycmVtIHNvbGlkOyB3aWR0aDowLjdyZW07IGhlaWdodDowLjRyZW07IGRpc3BsYXk6aW5saW5lLWJsb2NrOyB0cmFuc2Zvcm06cm90YXRlKC00NWRlZyk7IG1hcmdpbi1yaWdodDoxcmVtOyB9IHVsLmNoZWNrbGlzdCBsaXsgbWFyZ2luLXRvcDp2YXIoLS1zcGFjZSk7IGRpc3BsYXk6ZmxleDsgYWxpZ24taXRlbXM6Y2VudGVyOyB9IC5pbnZhbGlkID4gOmlzKGlucHV0LHNlbGVjdCx0ZXh0YXJlYSl7IGJhY2tncm91bmQtY29sb3I6I2ZhZDZkYzsgfSAuLWJnLXdoaXRleyBiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXdoaXRlKTsgfSAuLWJnLWdyYXl7IGJhY2tncm91bmQtY29sb3I6dmFyKC0tZ3JheSk7IGNvbG9yOnZhcigtLXdoaXRlKTsgfSAuLWJnLWRhcmstZ3JheXsgYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1kYXJrLWdyYXkpOyBjb2xvcjp2YXIoLS13aGl0ZSk7IH0gLi1iZy1ibGFjay1ncmF5eyBiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWJsYWNrLWdyYXkpOyBjb2xvcjp2YXIoLS13aGl0ZSk7IH0gLi1iZy1ibGFja3sgYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1ibGFjayk7IGNvbG9yOnZhcigtLXdoaXRlKTsgfSAuLWJnLWxpZ2h0eyBiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWxpZ2h0KTsgY29sb3I6dmFyKC0tYmxhY2spOyB9IC4tYmctbGlnaHQtZ3JheXsgYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1saWdodC1ncmF5KTsgY29sb3I6dmFyKC0tYmxhY2spOyB9IC4tYmctbm9uZXtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O30gLi1yb3VuZHsgYm9yZGVyLXJhZGl1czowLjNyZW07IH0gLnB1c2gtZG93bnsgcG9zaXRpb246YWJzb2x1dGU7IGJvdHRvbTowcHg7IH0gLnByaWNlLW1haW57IGNvbG9yOiNmZjAwMDA7IH0gLnByaWNlLXN0cmlrZXsgY29sb3I6Izk5OTsgdGV4dC1kZWNvcmF0aW9uOmxpbmUtdGhyb3VnaDsgfSAuZm9ybWF0LXByaWNleyBwb3NpdGlvbjpyZWxhdGl2ZTsgbWF4LXdpZHRoOmZpdC1jb250ZW50OyBtYXJnaW4tcmlnaHQ6MC43cmVtOyBsaW5lLWhlaWdodDoxZW07IHdoaXRlLXNwYWNlOm5vd3JhcDsgfSA6aXMoLkVOR0xJU0gsW2RhdGEtbGFuZz0iZW4iXSkgLmZvcm1hdC1wcmljZXsgbWFyZ2luLWxlZnQ6MC42cmVtOyBtYXJnaW4tcmlnaHQ6dW5zZXQ7IH0gLmZvcm1hdC1wcmljZTphZnRlcnsgY29udGVudDoiJCI7IGZvbnQtc2l6ZTptYXgoMC41cmVtLDAuNmVtKTsgcG9zaXRpb246YWJzb2x1dGU7IHRvcDp2YXIoLS1mb3JtYXQtcGljZS1zaWduLXBvc2l0aW9uLDApOyByaWdodDotMC42ZW07IGxpbmUtaGVpZ2h0OmluaGVyaXQ7IH0gLmZpbmFsLXByaWNlIC5mb3JtYXQtcHJpY2U6YWZ0ZXJ7IG1hcmdpbi10b3A6LTVweDsgfSAuZmluYWwtcHJpY2UgLmZvcm1hdC1wcmljZXsgZGlzcGxheTppbmxpbmUtYmxvY2s7IHBhZGRpbmctcmlnaHQ6MnB4OyB9IDppcyguRU5HTElTSCxbZGF0YS1sYW5nPSJlbiJdKSAuZm9ybWF0LXByaWNlOmFmdGVyeyBsZWZ0Oi0wLjdlbTsgcmlnaHQ6dW5zZXQ7IH0gLnByaWNlLWVuOmJlZm9yZXsgY29udGVudDoiJCI7IH0gOmlzKC5wcmljZS1lbik6YmVmb3JleyBmb250LXNpemU6MC42ZW07IHBvc2l0aW9uOnJlbGF0aXZlOyB0b3A6LTAuNWVtOyB9IC5wcmljZS1mcjphZnRlcnsgY29udGVudDoiICQiOyB9IDppcygucHJpY2UtZnIpOmFmdGVyeyBmb250LXNpemU6MC42ZW07IHBvc2l0aW9uOnJlbGF0aXZlOyB0b3A6LTAuNWVtOyB9IC5zY3JhdGNoLW92ZXIsIC5zY3JhdGNoLWxlYXNleyBwb3NpdGlvbjpyZWxhdGl2ZTsgfSAuc2NyYXRjaC1vdmVyOmJlZm9yZSwgLnNjcmF0Y2gtbGVhc2U6YmVmb3JleyBiYWNrZ3JvdW5kOm5vbmUgcmVwZWF0IHNjcm9sbCAwIDAgYmxhY2s7IGNvbnRlbnQ6IiAiOyBoZWlnaHQ6MnB4OyBwb3NpdGlvbjphYnNvbHV0ZTsgdG9wOjQ1JTsgLW1vei10cmFuc2Zvcm06cm90YXRlKDdkZWcpOyAtd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoN2RlZyk7IHRyYW5zZm9ybTpyb3RhdGUoN2RlZyk7IHdpZHRoOjkwJTsgfSAuRU5HTElTSCA6aXMoLnNjcmF0Y2gtbGVhc2UsLnNjcmF0Y2gtb3Zlcik6aGFzKC5mb3JtYXQtcHJpY2UpOmJlZm9yZXsgbWFyZ2luLWxlZnQ6MC41cmVtOyB9IC5ibHVyLW92ZXIsIC5ibHVyLWxlYXNlIHsgLXdlYmtpdC1maWx0ZXI6Ymx1cigwLjE1ZW0pOyAtbW96LWZpbHRlcjpibHVyKDAuMTVlbSk7IC1tcy1maWx0ZXI6Ymx1cigwLjE1ZW0pOyAtby1maWx0ZXI6Ymx1cigwLjE1ZW0pOyBmaWx0ZXI6Ymx1cigwLjE1ZW0pOyB9IC5vdXQtdmlld3sgcG9zaXRpb246Zml4ZWQ7IHRvcDotMjBweDsgY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwwKTsgei1pbmRleDowOyB9IC50b3AtZml4ZWQgeyBwb3NpdGlvbjpmaXhlZDsgdG9wOjMuMnJlbTsgbGVmdDowOyB6LWluZGV4OjEwMDsgYWxpZ24taXRlbXM6Y2VudGVyOyB9IC5maXhlZC13cmFwcGVyLnRvcC1maXhlZCB7IHdpZHRoOjEwMCU7IHBhZGRpbmc6dmFyKC0tcyk7IGJhY2tncm91bmQtY29sb3I6dmFyKC0tbGlnaHQtZ3JheSk7IGJvcmRlci1ib3R0b20td2lkdGg6MXB4OyBib3JkZXItYm90dG9tLWNvbG9yOiMwMDA7IGJveC1zaXppbmc6Ym9yZGVyLWJveDsgZGlzcGxheTpmbGV4OyBqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyOyB9IC5maXhlZC13cmFwcGVyLnRvcC1maXhlZCA+IC5wcm9tb0JUTiB7IG1hcmdpbjowOyB3aWR0aDo5MHZ3OyBqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyOyB9IC5maXhlZC13cmFwcGVyLnRvcC1maXhlZCAuY3RhLWxhYmVseyB0ZXh0LWFsaWduOmNlbnRlcjsgfSAubWFpbi1jb2xvcnN7IGJhY2tncm91bmQtY29sb3I6dmFyKC0tdGFiLWNvbG9yKTsgY29sb3I6dmFyKC0tdGFiLXRleHQtY29sb3IpOyB9IC5wcm9tby1jb2xvcnN7IGJhY2tncm91bmQtY29sb3I6dmFyKC0tdGFiLWNvbG9yKTsgYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1wcm9tby1jb2xvcik7IGNvbG9yOnZhcigtLXRhYi10ZXh0LWNvbG9yKTsgY29sb3I6dmFyKC0tcHJvbW8tdGV4dC1jb2xvcik7IH0gLmJ0bnsgLS1idG4tYmctY29sOnZhcigtLXRhYi1jb2xvcik7IC0tYnRuLXR4dC1jb2w6dmFyKC0tdGFiLXRleHQtY29sb3IpOyBiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWJ0bi1iZy1jb2wpOyBjb2xvcjp2YXIoLS1idG4tdHh0LWNvbCk7IGJvcmRlcjoxcHggc29saWQgdmFyKC0tYnRuLWJyZC1jb2wsIHZhcigtLWJ0bi10eHQtY29sKSk7IHBhZGRpbmc6MC41cmVtOyBmb250LXdlaWdodDpib2xkOyB9IC5idG4tZGFyay1ncmV5LCAuY2JEYXJrR3JleXsgLS1idG4tYmctY29sOiMzMzM7IC0tYnRuLXR4dC1jb2w6I2ZmZjsgfSBbcm9sZT0iYnV0dG9uIl17IGN1cnNvcjpwb2ludGVyOyB9IC5idG4tcHJvbW97IC0tdHh0LWNvbG9yOnZhcigtLXByb21vLXRleHQtY29sb3IsIHZhcigtLXRhYi10ZXh0LWNvbG9yKSk7IGNvbG9yOnZhcigtLXR4dC1jb2xvcik7IGJhY2tncm91bmQtY29sb3I6dmFyKC0tdGFiLWNvbG9yKTsgYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1wcm9tby1jb2xvcik7IGJvcmRlcjoxcHggc29saWQgdmFyKC0tcHJvbW8tdGV4dC1jb2xvcik7IHBvc2l0aW9uOnJlbGF0aXZlOyBhbGlnbi1pdGVtczpjZW50ZXI7IGJvcmRlcjpub25lOyB9IC5idG4tY3RhOmFmdGVyeyBjb250ZW50OiJcZjA1NCI7IGZvbnQtc3R5bGU6bm9ybWFsOyB0ZXh0LWRlY29yYXRpb246aW5oZXJpdDsgcG9zaXRpb246YWJzb2x1dGU7IHJpZ2h0OjFyZW07IGZvbnQtZmFtaWx5OidGb250IEF3ZXNvbWUgNSBQcm8nOyBmb250LXdlaWdodDo5MDA7IH0gLmJ0bi1tYWlueyAtLWJ0bi1iZy1jb2w6dmFyKC0tdGFiLWNvbG9yKTsgLS1idG4tdHh0LWNvbDp2YXIoLS10YWItdGV4dC1jb2xvcik7IC0tYnRuLWJyZC1jb2w6dmFyKC0tdGFiLXRleHQtY29sb3IsIHZhcigtLXRhYi10ZXh0LWNvbG9yKSk7IH0gLmJ0bi1tYWluMiwgLmJ0bi1tYWluOmhvdmVyeyBiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLW1lbnUtaG92ZXItYmctY29sb3IpOyBib3JkZXI6MXB4IHNvbGlkIHZhcigtLW1lbnUtaG92ZXItdGV4dC1jb2xvcik7IGNvbG9yOnZhcigtLW1lbnUtaG92ZXItdGV4dC1jb2xvcik7IH0gLmJ0bi1ibGFja3sgYmFja2dyb3VuZC1jb2xvcjojMDAwOyBjb2xvcjojZmZmOyAtLXR4dC1jb2xvcjojZmZmOyB9IC5idG4tbGlnaHR7IGJhY2tncm91bmQtY29sb3I6I2ZmZjsgYm9yZGVyOjFweCBzb2xpZCAjYWFhOyBjb2xvcjojODg4OyB9IC5idG4tc3VjY2Vzc3sgLS1idG4tYmctY29sOiM0Y2FmNTA7IC0tYnRuLXR4dC1jb2w6I2ZmZjsgfSAuYnRuLXdhcm5pbmd7IC0tYnRuLWJnLWNvbDojZmY5ODAwOyAtLWJ0bi10eHQtY29sOiNmZmY7IH0gLmJudC1kaXNhYmxlZCwgLmJ0bltkaXNhYmxlZF0geyBjb2xvcjp2YXIoLS1ncmF5KTsgYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1saWdodC1ncmF5KTsgYm9yZGVyOjFweCBzb2xpZCB2YXIoLS1ncmF5KTsgfSAuYnRuLWVtYWlsLW1lLCAuYnRuLXRleHQtbWV7IGRpc3BsYXk6ZmxleDsgYWxpZ24taXRlbXM6Y2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyOyB9IC5idG4tZW1haWwtbWU6YmVmb3JleyBjb250ZW50OiJcZjBlMCI7IGZvbnQtd2VpZ2h0OjkwMDsgfSAuYnRuLXRleHQtbWU6YmVmb3JleyBjb250ZW50OiJcZjNjZCI7IGZvbnQtc2l6ZTp4LWxhcmdlOyBmb250LXdlaWdodDo5MDA7IH0gLmJ0bi1lbWFpbC1tZTpiZWZvcmUsIC5idG4tdGV4dC1tZTpiZWZvcmV7IGZvbnQtZmFtaWx5OidGb250IEF3ZXNvbWUgNSBQcm8nOyBtYXJnaW4tcmlnaHQ6NXB4OyBwb3NpdGlvbjpyZWxhdGl2ZTsgdG9wOi0xcHg7IH0gYnV0dG9uLnJvdW5kLWJ1dHRvbnsgYWxsOmluaGVyaXQ7IGJvcmRlci1yYWRpdXM6NTAlOyBiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXRhYi10ZXh0LWNvbG9yKTsgZmlsbDp2YXIoLS10YWItY29sb3IpOyBwYWRkaW5nOjAuM3JlbTsgY3Vyc29yOnBvaW50ZXI7IH0gYnV0dG9uLmljb24tYnV0dG9ueyBjb2xvcjp2YXIoLS1wcm9tby1idG4tY29sb3IpOyBiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7IGJvcmRlcjpub25lOyBwYWRkaW5nOjAuNXJlbTsgd2lkdGg6YXV0bzsgfSAueC1jbG9zZXsgYmFja2dyb3VuZC1pbWFnZTp1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM0NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyBhcmlhLWhpZGRlbj0ndHJ1ZScgZm9jdXNhYmxlPSdmYWxzZScgdmlld0JveD0nMCAwIDEwIDEwJyUzRSUzQ3N0eWxlJTNFLnZlcnQlN0JmaWxsOiUyMzAwMDslN0QlM0Mvc3R5bGUlM0UlM0NyZWN0IGNsYXNzPSd2ZXJ0JyBoZWlnaHQ9JzgnIHdpZHRoPScyJyB5PScxJyB4PSc0JyUzRSUzQy9yZWN0JTNFJTNDcmVjdCBoZWlnaHQ9JzInIHdpZHRoPSc4JyB5PSc0JyB4PScxJyUzRSUzQy9yZWN0JTNFJTNDL3N2ZyUzRSIpOyBiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50OyBib3JkZXI6bm9uZTsgd2lkdGg6MS41cmVtOyBoZWlnaHQ6MS41cmVtOyB0cmFuc2Zvcm06cm90YXRlKDQ1ZGVnKTsgY3Vyc29yOnBvaW50ZXI7IH0gOm5vdCguY29tcGxldGVkKS5yaXBwbGUgeyBwb3NpdGlvbjpyZWxhdGl2ZTsgb3ZlcmZsb3c6aGlkZGVuOyB0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwgMCwgMCk7IH0gOm5vdCguY29tcGxldGVkKS5yaXBwbGU6YWZ0ZXIgeyBjb250ZW50OiIiOyBkaXNwbGF5OmJsb2NrOyBwb3NpdGlvbjphYnNvbHV0ZTsgd2lkdGg6MTAwJTsgaGVpZ2h0OjEwMCU7IHRvcDowOyBsZWZ0OjA7IHBvaW50ZXItZXZlbnRzOm5vbmU7IGJhY2tncm91bmQtaW1hZ2U6cmFkaWFsLWdyYWRpZW50KGNpcmNsZSwgcmdiKDAsIDAsIDApIDEwJSwgdHJhbnNwYXJlbnQgMTAuMDElKTsgYmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0OyBiYWNrZ3JvdW5kLXBvc2l0aW9uOjUwJTsgdHJhbnNmb3JtOnNjYWxlKDEwLDEwKTsgb3BhY2l0eTowOyB0cmFuc2l0aW9uOnRyYW5zZm9ybSAuNXMsIG9wYWNpdHkgMXM7IH0gOm5vdCguY29tcGxldGVkKS5yaXBwbGU6YWN0aXZlOmFmdGVyIHsgdHJhbnNmb3JtOnNjYWxlKDAsMCk7IG9wYWNpdHk6LjI7IHRyYW5zaXRpb246MHM7IH0gLmxvZ29hcmVhIHsgbWluLWhlaWdodDo3cmVtOyBib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZWVlOyBiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWFkbWluLWdlbmVyYWwtaGVhZGVyLWJnLWNvbG9yKTsgfSBhID4gOndoZXJlKDppcyhzdmcsIC5mYSwgLmZhcyk6Zmlyc3QtY2hpbGQ6bm90KDpvbmx5LWNoaWxkKSl7IG1hcmdpbi1yaWdodDowLjZyZW07IH0gLnByb21vVG9wQnRuIDppcyhhLGJ1dHRvbikgeyAtLWZzOnZhcigtLWZzMSk7IC0tdHh0LWNvbG9yOnZhcigtLXRvcC1wcm9tby1idG4tdHh0LCB2YXIoLS10b3AtcHJvbW8tYnRuLXR4dC1jb2xvcikpOyBib3JkZXItcmFkaXVzOjRweDsgYm9yZGVyLXRvcC13aWR0aDoxcHg7IGJvcmRlci1ib3R0b20td2lkdGg6MXB4OyBib3JkZXItY29sb3I6I2YzZjNmMzsgaGVpZ2h0OjMuMnJlbTsgZm9udC1zaXplOnZhcigtLWZzMSk7IGZvbnQtd2VpZ2h0OmJvbGQ7IGRpc3BsYXk6ZmxleDsganVzdGlmeS1jb250ZW50OmNlbnRlcjsgYWxpZ24taXRlbXM6Y2VudGVyOyBiYWNrZ3JvdW5kOnZhcigtLXRvcC1wcm9tby1idG4tYmcsIHZhcigtLXRvcC1wcm9tby1idG4tYmctY29sb3IpKTsgY29sb3I6dmFyKC0tdG9wLXByb21vLWJ0bi10eHQsIHZhcigtLXRvcC1wcm9tby1idG4tdHh0LWNvbG9yKSk7IH0gLnByb21vVG9wQnRuLmRlYWxlckxpbmVCdXR0b24gOmlzKGEsYnV0dG9uKXsgLS10eHQtY29sb3I6dmFyKC0tYWRtaW4tZ2VuZXJhbC10ZXh0LXVzLWRlYWxlci1saW5lLXRleHQtY29sb3IpOyBiYWNrZ3JvdW5kOnZhcigtLWFkbWluLWdlbmVyYWwtdGV4dC11cy1kZWFsZXItbGluZS1iZy1jb2xvcik7IGNvbG9yOnZhcigtLWFkbWluLWdlbmVyYWwtdGV4dC11cy1kZWFsZXItbGluZS10ZXh0LWNvbG9yKTsgYm9yZGVyLWNvbG9yOnZhcigtLWFkbWluLWdlbmVyYWwtdGV4dC11cy1kZWFsZXItbGluZS10ZXh0LWNvbG9yKTsgd2lkdGg6MTAwJTsgfSA6aXMoLnByb21vVG9wQnRuLGxhYmVsKS5mbG9hdGluZ3sgcG9zaXRpb246Zml4ZWQ7IGJvdHRvbToxLjVyZW07IHJpZ2h0OjEuNXJlbTsgei1pbmRleDoxMDsgfSAucHJvbW9Ub3BCdG4uZmxvYXRpbmcud2l0aFRvYXN0ZXIge2JvdHRvbTo2cmVtO30gLnByb21vVG9wQnRuLmZsb2F0aW5nIDppcyhhLGJ1dHRvbil7IC0tZnM6dmFyKC0tZnM1KTsgcGFkZGluZzoxcmVtOyBib3JkZXItcmFkaXVzOjUwJTsgYm9yZGVyLXdpZHRoOjFweDsgaGVpZ2h0OnVuc2V0OyB9IC5wcm9tb1RvcEJ0bi5mbG9hdGluZyA6aXMoYSxidXR0b24pIHNwYW4ge2Rpc3BsYXk6bm9uZTt9IC5pY29uLWhlYWRpbmcgc3Bhbi5mYXsgZm9udC1zaXplOmluaGVyaXQ7IHdpZHRoOjFlbTsgcGFkZGluZzowLjJlbTsgaGVpZ2h0OjFlbTsgdGV4dC1hbGlnbjpjZW50ZXI7IGJvcmRlci1yYWRpdXM6NTAlOyBib3JkZXI6MXB4IHNvbGlkIHZhcigtLWJsYWNrKTsgY29sb3I6dmFyKC0td2hpdGUpOyBiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWJsYWNrKTsgYm94LXNpemluZzpjb250ZW50LWJveDsgfSAuaWNvbi1oZWFkaW5nIC5zZWNvbmRhcnlUZXh0eyBjb2xvcjojNzU3NTc1OyBmb250LXNpemU6MC43NWVtOyB9IC5ncm91cFRhYnMgPiAqeyBjdXJzb3I6cG9pbnRlcjsgZm9udC1zaXplOmNhbGMoMS4ycmVtICsgKDIwIC0gMTgpICogKCgxMDB2dyAtIDMyMHB4KSAvICgxMTAwIC0gMzAwKSkpOyB9IC5ncm91cFRhYnMgPiAqOmhvdmVyeyBiYWNrZ3JvdW5kLWNvbG9yOiNlZmVmZWY7IH0gLmdyb3VwVGFicyAudGFiLWxhYmVsLCAubmV3Q2FyU2xpZGVyIC5jYXJvdXNlbFRpdGxleyBjb2xvcjp2YXIoLS1uZXctdmVoaWNsZS1jYXJvdXNlbC10eHQtY29sb3IsIHZhcigtLWRlZmF1bHQtYmxhY2spKTsgfSAuZ3JvdXBUYWJzIC5hY3RpdmVUYWIgLnRhYi1sYWJlbHsgY29sb3I6dmFyKC0tbmV3LXZlaGljbGUtY2Fyb3VzZWwtdHh0LWNvbG9yLCB2YXIoLS1kZWZhdWx0LWJsYWNrKSk7IGJvcmRlci1ib3R0b206M3B4IHNvbGlkOyBib3JkZXItYm90dG9tLWNvbG9yOiMwMDA7IGJvcmRlci1ib3R0b20tY29sb3I6dmFyKC0tdGFiLWNvbG9yKTsgfSAuY2FyU2xpZGVyeyBkaXNwbGF5OmZsZXg7IGp1c3RpZnktY29udGVudDpjZW50ZXI7IH0gLmNhclNsaWRlciA+ICp7IHdpZHRoOm1pbig5MHJlbSwxMDAlKTsgfSAuY2FyU2xpZGVyLi1iZy1saWdodC1ncmF5ID4gKnsgbWF4LXdpZHRoOm1pbig3NXJlbSwxMDAlKTsgfSAubmV3Q2FyQ2FyZHsgaGVpZ2h0OjEwMCU7IG1pbi1oZWlnaHQ6MjdyZW07IGJvcmRlcjoxcHggc29saWQgI2JiYjsgYm94LXNpemluZzpib3JkZXItYm94OyBwb3NpdGlvbjpyZWxhdGl2ZTsgYmFja2dyb3VuZC1jb2xvcjp2YXIoLS13aGl0ZSk7IH0gLm5ld0NhckNhcmQgaW1neyB3aWR0aDoxMDAlOyBtYXJnaW4tdG9wOi0xcmVtOyBwb3NpdGlvbjpyZWxhdGl2ZTsgfSAuY2FyUGF5bWVudFdyYXBwZXJ7IHdpZHRoOm1pbigxMDAlLDI1cmVtKTsgbWluLWhlaWdodDo1cmVtOyB9IC5jYXJQYXltZW50V3JhcHBlciAucGF5bWVudEJsb2NreyBoZWlnaHQ6MTAwJTsgfSAucGF5bWVudHNEaXNhYmxlZCAubmV3Q2FyQ2FyZHsgbWluLWhlaWdodDoyMnJlbTsgfSAudmVoaWNsZUNhcm91c2VsIC5uZXdDYXJDYXJkeyBiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXdoaXRlKTsgd2lkdGg6MjMuN3JlbTsgYm9yZGVyOjFweCBzb2xpZCAjYmJiOyBtYXJnaW46MCAwLjRyZW07IGhlaWdodDoxMDAlIH0gLm5ld0NhckNhcmQgLnByb21vLWJhZGdleyBoZWlnaHQ6Zml0LWNvbnRlbnQ7IG1pbi13aWR0aDo2cmVtOyB9IC5uZXdDYXJDYXJkOmhvdmVyeyBib3gtc2hhZG93OjAgMCAxMHB4IDJweCB2YXIoLS1taWQtZ3JheSk7IGJhY2tncm91bmQtY29sb3I6dmFyKC0tbGlnaHQtZ3JheSk7IH0gLm5ld0NhckNhcmQ6aG92ZXIgLmluU3RvY2tMaW5rIHsgYmFja2dyb3VuZC1jb2xvcjojZmZmZmZmOyB9IC5uZXdDYXJDYXJkIC5jYXJkLWJvZHl7IGRpc3BsYXk6ZmxleDsgYWxpZ24taXRlbXM6Y2VudGVyOyBoZWlnaHQ6MTJyZW07IG92ZXJmbG93OmhpZGRlbjsgfSAubmV3Q2FyQ2FyZCA+IC5ib3gtbGN7IG1hcmdpbi10b3A6MDsgcGFkZGluZy10b3A6MDsgcGFkZGluZy1ib3R0b206MDsgfSAubmV3Q2FyQ2FyZCA+IC5ib3gtbGM6Zmlyc3QtY2hpbGR7IHBhZGRpbmctdG9wOjAuNXJlbTsgbWF4LWhlaWdodDoxMHJlbTsgfSAubmV3Q2FyQ2FyZCAuZGVza3RvcFBheW1lbnR7IHBvc2l0aW9uOnJlbGF0aXZlOyB9IC5uZXdDYXJDYXJkIHNwYW4ucGF5bWVudENhbGNCdG4uZGVza3RvcHsgcG9zaXRpb246YWJzb2x1dGU7IHJpZ2h0OjclOyBmb250LXNpemU6MS43ZW07IGN1cnNvcjpwb2ludGVyOyB9IC51c2VkQ2FyU2xpZGV7IGRpc3BsYXk6YmxvY2s7IGJvcmRlcjoxcHggc29saWQgI2JiYjsgYmFja2dyb3VuZC1jb2xvcjojZmZmOyBoZWlnaHQ6MTAwJTsgYm94LXNpemluZzpib3JkZXItYm94OyB9IC51c2VkQ2FyU2xpZGUgKnsgYm94LXNpemluZzpib3JkZXItYm94OyB9IC51c2VkQ2FyU2xpZGUgLnNsaWRlQ29udGVudHsgaGVpZ2h0OjEwMCUgfSAuYW5pbWF0ZWQtdHJpYW5nbGUgeyBwb3NpdGlvbjpyZWxhdGl2ZTsgbWFyZ2luLXJpZ2h0OjEwcHg7IH0gLmFuaW1hdGVkLXRyaWFuZ2xlID4gLmZhOjphZnRlciB7IGNvbnRlbnQ6IlxmMDcxIjsgfSAuYW5pbWF0ZWQtdHJpYW5nbGUgaXsgcG9zaXRpb246cmVsYXRpdmU7IH0gLmFuaW1hdGVkLXRyaWFuZ2xlID4gc3ZnLCAuYW5pbWF0ZWQtdHJpYW5nbGUgPiAuZmE6OmFmdGVyIHsgYW5pbWF0aW9uOnJpcHBsZS0xIDFzIGluZmluaXRlIGVhc2UtaW4tb3V0OyBhbmltYXRpb24tZGVsYXk6MC41czsgYW5pbWF0aW9uOnJpcHBsZS0yIDFzIGluZmluaXRlIGVhc2UtaW4tb3V0OyBhbmltYXRpb24tZGVsYXk6MC43NXM7IHBvc2l0aW9uOmFic29sdXRlOyB9IC5hbmltYXRlZC10cmlhbmdsZSA+IC5mYTo6YWZ0ZXJ7IHRvcDowOyBsZWZ0OjA7IH0gLmFuaW1hdGVkLXRyaWFuZ2xlID4gc3ZneyB0b3A6MXB4OyBsZWZ0Oi0xcmVtOyB9IEBrZXlmcmFtZXMgcmlwcGxlLTEgeyAwJSB7IHRyYW5zZm9ybTpzY2FsZSgxKTsgb3BhY2l0eToxOyB9IDEwMCUgeyB0cmFuc2Zvcm06c2NhbGUoMS43KTsgb3BhY2l0eTowOyB9IH0gQGtleWZyYW1lcyByaXBwbGUtMiB7IDAlIHsgdHJhbnNmb3JtOnNjYWxlKDEpOyBvcGFjaXR5OjE7IH0gMTAwJSB7IHRyYW5zZm9ybTpzY2FsZSgyKTsgb3BhY2l0eTowOyB9IH0gc3Bhbi5hc3Rlcml4OmFmdGVyeyBjb250ZW50OiIqIjsgcG9zaXRpb246cmVsYXRpdmU7IGZvbnQtc2l6ZToycmVtOyB9IGRpdi5wcmljZU5vdGUuYXN0ZXJpeDpiZWZvcmV7IGNvbnRlbnQ6IioiOyBwb3NpdGlvbjpyZWxhdGl2ZTsgZm9udC1zaXplOjFyZW07IH0gZm9vdGVyIHsgLXdlYmtpdC1ib3gtc2hhZG93Omluc2V0IDBweCAxMHB4IDExcHggLTExcHggcmdiYSg1MCwgNTAsIDUwLCAwLjc1KTsgLW1vei1ib3gtc2hhZG93OiBpbnNldCAwcHggMTBweCAxMXB4IC0xMXB4IHJnYmEoNTAsIDUwLCA1MCwgMC43NSk7IGJveC1zaGFkb3c6IGluc2V0IDBweCAxMHB4IDExcHggLTExcHggcmdiYSg1MCwgNTAsIDUwLCAwLjc1KTsgLS10eHQtY29sb3I6dmFyKC0tZm9vdGVyLWl0ZW1zLWxpbmstY29sb3IpOyBiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWZvb3Rlci1iZy1jb2xvcik7IGNvbG9yOnZhcigtLWZvb3Rlci1pdGVtcy1saW5rLWNvbG9yKTsgfSBhLnZpc2l0Q29udGFjdEJ1dHRvbnsgLS10eHQtY29sb3I6dmFyKC0tcHJvbW8tYnRuLXRleHQtY29sb3IpOyBiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXByb21vLWJ0bi1iZy1jb2xvcik7IGNvbG9yOnZhcigtLXByb21vLWJ0bi10ZXh0LWNvbG9yKTsgfSAuY0Zvb3RlckNhckxpbmtzIGxpLmNJdGVtRXhwZW5keyBkaXNwbGF5Om5vbmU7IH0gLmNGb290ZXJDYXJMaW5rcyBoMywgLmZvb3Rlcl9hZGRyZXNzIC5hZHIgPiBzcGFueyBjb2xvcjp2YXIoLS1mb290ZXItbGluay10aXRsZS1jb2wpOyB9IC5jRm9vdGVyQ2FyTGlua3Mgc3Bhbi5oMy1hbHQgeyBkaXNwbGF5OmJsb2NrOyBjb2xvcjp2YXIoLS1mb290ZXItbGluay10aXRsZS1jb2wpOyB9IC5jRm9vdGVyQ2FyTGlua3MuY0xpc3RFeHBlbmRlZCBsaS5jSXRlbUV4cGVuZHsgZGlzcGxheTpibG9jazsgfSAuY0V4cGVuZExpc3QgYnV0dG9ueyBwYWRkaW5nOnZhcigtLXMpIDA7IGJhY2tncm91bmQ6bm9uZTsgfSAuY29uZGl0aW9uc0Zvb3RlciB7IGNvbG9yOnZhcigtLWZvb3Rlci1jb25kaXRpb25zLWNvbG9yLCAjOTE5MTkxKTsgLS10eHQtY29sb3I6dmFyKC0tZm9vdGVyLWNvbmRpdGlvbnMtY29sb3IpOyB9IC50cmFkZUluQmFyTW9iaWxlQnV0dG9uIHsgcG9zaXRpb246Zml4ZWQ7IGJvdHRvbToxMHB4OyBtYXJnaW46NXB4IDVweCAxNXB4IDE1cHg7IHotaW5kZXg6NDsgd2lkdGg6MTQwcHggIWltcG9ydGFudDsgYm9yZGVyLXdpZHRoOjFweDsgYmFja2dyb3VuZC1jb2xvcjojZWEwMDI5OyB0ZXh0LWFsaWduOmxlZnQ7IGJhY2tncm91bmQtY29sb3I6dmFyKC0tdHJhZGVpbmJhci1idG4tYmcpOyBjb2xvcjogdmFyKC0tdHJhZGVpbmJhci1idG4tY29sb3IpOyBhbGlnbi1pdGVtczpjZW50ZXI7IGJvcmRlci1yYWRpdXM6OHB4OyBib3JkZXItd2lkdGg6MXB4IDNweCA0cHggMXB4OyBib3JkZXItY29sb3I6IzMzMzMzMzsgcGFkZGluZy10b3A6MTBweDsgfSAudHJhZGVJbkJhck1vYmlsZUJ1dHRvbiBpeyBkaXNwbGF5OmlubGluZS1mbGV4OyBib3JkZXItcmFkaXVzOjEwMCU7IHdpZHRoOjJlbTsgYWxpZ24taXRlbXM6Y2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyOyBib3JkZXI6MnB4IHNvbGlkICNmZmY7IGJhY2tncm91bmQtY29sb3I6I2ZmZjsgaGVpZ2h0OjEuNWVtOyBjb2xvcjojMDAwOyBmbG9hdDpsZWZ0OyB9IC50cmFkZUluQmFyTW9iaWxlQnV0dG9uLndpdGhUb2FzdGVyIHsgYm90dG9tOjVyZW07IH0gI3RyYWRlSW5CYXJQb3B1cF9saW5lMXsgYmFja2dyb3VuZC1jb2xvcjojZjFmMWYxOyBib3JkZXI6MXB4IHNvbGlkIGdyZXk7IHBhZGRpbmc6MjBweCA0MHB4OyBmb250LXNpemU6MS4xMjVyZW0gOyB0ZXh0LWFsaWduOmNlbnRlcjsgfSAuYnRuLnRyYWRlSW5CYXJQb3B1cFN1Ym1pdHsgcGFkZGluZzowLjc1cmVtIDAuMzc1cmVtOyBib3JkZXItd2lkdGg6MXB4OyBib3JkZXItY29sb3I6IzAwMDsgZm9udC13ZWlnaHQ6Ym9sZDsgYm9yZGVyLXJhZGl1czozcHg7IGJvcmRlcjoxcHggc29saWQgIzAwMDsgfSAjdHJhZGVJbkJhclBvcHVwX2Zvcm1XIGlucHV0eyBtYXJnaW46NXB4IDAgMDsgfSAjdHJhZGVJbkJhclBvcHVwX2Zvcm1XeyBoZWlnaHQ6NTgwcHg7IGJhY2tncm91bmQtY29sb3I6I2ZmZjsgY29sb3I6dmFyKC0tZGVmYXVsdC1ibGFjay10ZXh0KTsgcGFkZGluZzoxNXB4OyBwb3NpdGlvbjpyZWxhdGl2ZTsgfSAjdHJhZGVJbkJhclBvcHVwX2Zvcm1XIGlucHV0eyBwYWRkaW5nOjExcHggMTBweDsgZm9udC1zaXplOjAuOTM4cmVtIDsgd2lkdGg6MjUwcHg7IG1hcmdpbjo1cHggMCAwOyBib3JkZXI6MXB4IHNvbGlkICNhOWE5YTkhaW1wb3J0YW50OyB9ICN0cmFkZUluQmFyUG9wdXBfZm9ybVcgLnRyYWRpblNlbGVjdFBvcHVweyBjb2xvcjojM2MzODM2OyBmb250LXNpemU6MXJlbTsgYmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LDEpOyBiYWNrZ3JvdW5kLXBvc2l0aW9uOjk1JSA1MCU7IGFwcGVhcmFuY2U6bm9uZTsgLXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7IC1tb3otYXBwZWFyYW5jZTpub25lOyBtYXJnaW46NXB4IDAgMDsgfSAjdHJhZGVJbkJhclBvcHVwX2Zvcm1XIDo6cGxhY2Vob2xkZXIgeyBjb2xvcjojYTlhOWE5OyBvcGFjaXR5OjE7IH0gI3RyYWRlSW5CYXJQb3B1cF9mb3JtVyA6LW1zLWlucHV0LXBsYWNlaG9sZGVyIHsgY29sb3I6I2E5YTlhOTsgfSAjdHJhZGVJbkJhclBvcHVwX2Zvcm1XIDo6LW1zLWlucHV0LXBsYWNlaG9sZGVyIHsgY29sb3I6I2E5YTlhOTsgfSAudHJhZGluU2VsZWN0LCAudHJhZGluU2VsZWN0UG9wdXAgeyBjb2xvcjojM2MzODM2OyBmb250LXNpemU6MXJlbTsgbWFyZ2luOjVweCAwIDA7IGFwcGVhcmFuY2U6bm9uZTsgLXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7IC1tb3otYXBwZWFyYW5jZTpub25lOyB9IC50cmFkaW5TZWxlY3RBIHsgcG9zaXRpb246cmVsYXRpdmU7IH0gLnRyYWRpblNlbGVjdEE6YWZ0ZXIgeyBjb250ZW50OiIgIjsgaGVpZ2h0OjA7IHdpZHRoOjA7IGJvcmRlci1sZWZ0OjVweCBzb2xpZCB0cmFuc3BhcmVudDsgYm9yZGVyLXJpZ2h0OjVweCBzb2xpZCB0cmFuc3BhcmVudDsgYm9yZGVyLXRvcDo1cHggc29saWQgIzAwMDAwMDsgcG9zaXRpb246YWJzb2x1dGU7IHJpZ2h0OjE0cHg7IHRvcDoxN3B4OyB0cmFuc2l0aW9uOmFsbCAwLjNzIGxpbmVhcjsgcG9pbnRlci1ldmVudHM6bm9uZTsgfSAuZW1haWxCb2R5LCAuZW1haWxTdWJqZWN0eyBkaXNwbGF5Om5vbmU7IH0gLnJldmVhbC1tb2RhbDpub3QoI3BheW1lbnRDYWxjdWxhdG9yUG9wdXBDb250YWluZXIpICo6bm90KC5maW5hbmNlTXVsdGlzdGVwTmV3Q2FsY3VsYXRvciA6aXMoaW5wdXQsIHNlbGVjdCkpeyBib3gtc2l6aW5nOmJvcmRlci1ib3g7IH0gLnJldmVhbC1tb2RhbDpub3QoI3BheW1lbnRDYWxjdWxhdG9yUG9wdXBDb250YWluZXIpIDppcyhpbnB1dFt0eXBlPSJ0ZXh0Il06bm90KC5maW5hbmNlTXVsdGlzdGVwVXNlZENhbGN1bGF0b3IgLmNhbGMtZm9ybSBpbnB1dCksaW5wdXRbdHlwZT0iZW1haWwiXSxpbnB1dFt0eXBlPSJ0ZWwiXSxzZWxlY3Q6bm90KC5wYXltZW50Q2FsY3VsYXRvckludGVydmFsLC5wYXltZW50Q2FsY3VsYXRvckttQWxsb3dhbmNlLC5maW5hbmNlTXVsdGlzdGVwVXNlZENhbGN1bGF0b3IgLmNhbGMtZm9ybSBzZWxlY3QsIHNlbGVjdC5zdGVwMjRzZWxlY3QpKXsgcGFkZGluZzowLjRyZW07IGJvcmRlci13aWR0aDoxcHg7IGJvcmRlci1yYWRpdXM6MC4zcmVtOyB3aWR0aDoxMDAlOyBib3JkZXItY29sb3I6I2E5YTlhOTsgfSBbZGF0YS1wYWdlPSJIT01FUEFHRSJdeyBiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWhvbWUtYmctY29sb3IsICNGRkZGRkYpOyB9IC55dC1iZy1jb250YWluZXJ7IHBvc2l0aW9uOnJlbGF0aXZlOyBvdmVyZmxvdzpoaWRkZW47IH0gLmJhbm5lci1iZy1jb250YWluZXJ7IGJhY2tncm91bmQtc2l6ZTpjb3ZlcjsgYmFja2dyb3VuZC1wb3NpdGlvbjpjZW50ZXIgY2VudGVyOyBiYWNrZ3JvdW5kLWJsZW5kLW1vZGU6Y29sb3I7IH0gI3lvdXR1YmVfX2NvbnRhaW5lcnsgcG9zaXRpb246cmVsYXRpdmU7IHdpZHRoOjEwMCU7IGhlaWdodDowOyBvdmVyZmxvdzpoaWRkZW47IHBhZGRpbmctYm90dG9tOm1pbihjYWxjKDEwMHZoIC0gdmFyKC0taGVhZGVyLWhlaWdodCwxMHJlbSkpLDY3dncpOyBiYWNrZ3JvdW5kLWNvbG9yOiM4ODg7IH0gI2hvbWVwYWdlX3lvdXR1YmVfcGxheWVyeyBwb3NpdGlvbjphYnNvbHV0ZTsgdG9wOi00NSU7IGxlZnQ6LTEwJTsgaGVpZ2h0OjE5MCU7IHdpZHRoOjEyMCU7IHBvaW50ZXItZXZlbnRzOm5vbmU7IH0gI3lvdXR1YmVfX2NvbnRhaW5lcjppcyguZnVsbEhlaWdodCwudmlzaWJsZUhlaWdodCl7IHBhZGRpbmctYm90dG9tOmNhbGMoMTAwdmggLSB2YXIoLS1oZWFkZXItaGVpZ2h0LDEwcmVtKSk7IH0gOmlzKC5mdWxsSGVpZ2h0LC52aXNpYmxlSGVpZ2h0KSAjaG9tZXBhZ2VfeW91dHViZV9wbGF5ZXJ7IGhlaWdodDoxMDAlOyB0b3A6MDsgfSAjeW91dHViZV9fY29udGFpbmVyLmZ1bGxXaWR0aHsgcGFkZGluZy1ib3R0b206NTYuMjUlOyB9ICNtb2JpbGVTbGlkZXIgI3lvdXR1YmVfX2NvbnRhaW5lcnsgcGFkZGluZy1ib3R0b206bWF4KDY3dncsMjRyZW0pOyB9ICNtb2JpbGVTbGlkZXIgI3lvdXR1YmVfX2NvbnRhaW5lciAjYmFubmVyX3NlYXJjaF9iYXJfY29udGFpbmVyeyBoZWlnaHQ6bWF4KDY3dncsMjRyZW0pOyBtaW4taGVpZ2h0OjE4cmVtOyB6LWluZGV4OjE7IH0gLmZ1bGxXaWR0aCAjaG9tZXBhZ2VfeW91dHViZV9wbGF5ZXJ7IGhlaWdodDoxMjAlOyB0b3A6LTEwJTsgfSAueXQtdmlkZW97IGJhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDsgYmFja2dyb3VuZC1wb3NpdGlvbjpjZW50ZXI7IGJhY2tncm91bmQtc2l6ZTpjb3ZlcjsgfSAueXQtcGxheXsgYmFja2dyb3VuZC1pbWFnZTp1cmwoJ2RhdGE6aW1hZ2Uvc3ZnK3htbCwlM0NzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgNTc2IDUxMiI+PCEtLSBGb250IEF3ZXNvbWUgRnJlZSA1LjE1LjEgYnkgQGZvbnRhd2Vzb21lIC0gaHR0cHM6Ly9mb250YXdlc29tZS5jb20gTGljZW5zZSAtIGh0dHBzOi8vZm9udGF3ZXNvbWUuY29tL2xpY2Vuc2UvZnJlZSAoSWNvbnM6Q0MgQlkgNC4wLCBGb250czpTSUwgT0ZMIDEuMSwgQ29kZTpNSVQgTGljZW5zZSkgLS0+PHBhdGggZD0iTTU0OS42NTUgMTI0LjA4M2MtNi4yODEtMjMuNjUtMjQuNzg3LTQyLjI3Ni00OC4yODQtNDguNTk3QzQ1OC43ODEgNjQgMjg4IDY0IDI4OCA2NFMxMTcuMjIgNjQgNzQuNjI5IDc1LjQ4NmMtMjMuNDk3IDYuMzIyLTQyLjAwMyAyNC45NDctNDguMjg0IDQ4LjU5Ny0xMS40MTIgNDIuODY3LTExLjQxMiAxMzIuMzA1LTExLjQxMiAxMzIuMzA1czAgODkuNDM4IDExLjQxMiAxMzIuMzA1YzYuMjgxIDIzLjY1IDI0Ljc4NyA0MS41IDQ4LjI4NCA0Ny44MjFDMTE3LjIyIDQ0OCAyODggNDQ4IDI4OCA0NDhzMTcwLjc4IDAgMjEzLjM3MS0xMS40ODZjMjMuNDk3LTYuMzIxIDQyLjAwMy0yNC4xNzEgNDguMjg0LTQ3LjgyMSAxMS40MTItNDIuODY3IDExLjQxMi0xMzIuMzA1IDExLjQxMi0xMzIuMzA1czAtODkuNDM4LTExLjQxMi0xMzIuMzA1em0tMzE3LjUxIDIxMy41MDhWMTc1LjE4NWwxNDIuNzM5IDgxLjIwNS0xNDIuNzM5IDgxLjIwMXoiIGZpbGw9IiUyM2MzM2MyZCIgLyUzRSUzQy9zdmclM0UnKTsgd2lkdGg6NXJlbTsgaGVpZ2h0OjVyZW07IGJhY2tncm91bmQtc2l6ZTpjb250YWluOyBiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7IGJhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7IG9wYWNpdHk6MC43OyB9IC5lbWJlZC1jb250YWluZXIteW91dHViZSB7IHBvc2l0aW9uOnJlbGF0aXZlOyBoZWlnaHQ6Y2FsYygxMDB2dyAvICgxNiAvIDkpKTsgb3ZlcmZsb3c6aGlkZGVuOyBtYXgtd2lkdGg6MTAwJTsgYmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0OyBiYWNrZ3JvdW5kLXBvc2l0aW9uOmNlbnRlcjsgYmFja2dyb3VuZC1zaXplOmNvdmVyOyB9IC5tb2JpbGVfYnVzaW5lc3NEZXNjIHsgYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1idXNpbmVzcy1kZXNjLWJnLWNvbG9yX21vYiwgdmFyKC0tZm9vdGVyLWJnLWNvbG9yKSk7IGNvbG9yOnZhcigtLWJ1c2luZXNzLWRlc2MtdHh0LWNvbG9yX21vYiwgdmFyKC0tZm9vdGVyLWxpbmstdGl0bGUtY29sKSk7IH0gLmJ1c2luZXNzRGVzYyB7IGJhY2tncm91bmQtY29sb3I6dmFyKC0tYnVzaW5lc3MtZGVzYy1iZy1jb2xvcl9tb2IsIHZhcigtLWZvb3Rlci1iZy1jb2xvcikpOyBjb2xvcjp2YXIoLS1idXNpbmVzcy1kZXNjLXR4dC1jb2xvcl9tb2IsIHZhcigtLWZvb3Rlci1saW5rLXRpdGxlLWNvbCkpOyB9IC5idXNpbmVzc0Rlc2MgKiB7IGxpbmUtaGVpZ2h0OjEuNXJlbTsgfSAud3JhcHBlciB7IG1hcmdpbjowIGF1dG87IHdpZHRoOjk2MHB4OyBwb3NpdGlvbjpyZWxhdGl2ZTsgfSAubGFuZ3VhZ2VCYXIgeyBtYXJnaW46MXJlbSBhdXRvIDVweDsgaGVpZ2h0OjI4cHg7IHBhZGRpbmc6MCB2YXIoLS1zKTsgfSAudi1jYXJkLnRvcF9iZyB7IGRpc3BsYXk6ZmxleDsganVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47IGFsaWduLWl0ZW1zOmNlbnRlcjsgbWFyZ2luLXRvcDoxMHB4OyBtaW4taGVpZ2h0OjhyZW07IHBhZGRpbmc6MCB2YXIoLS1zKTsgfSAuaGVhZGVyLXNlY3Rpb24geyBkaXNwbGF5OmZsZXg7IHZlcnRpY2FsLWFsaWduOm1pZGRsZTsgYWxpZ24tY29udGVudDpzcGFjZS1iZXR3ZWVuOyBhbGlnbi1pdGVtczpjZW50ZXI7IH0gI3RyYWRlSW5CYXJNb2JpbGV7IGJhY2tncm91bmQtY29sb3I6YmxhY2s7IGNvbG9yOiB3aGl0ZTsgYm9yZGVyLXJhZGl1czo1cHg7IGRpc3BsYXk6YmxvY2s7IG1hcmdpbjozcHggNXB4IDVweCA1cHg7IH0gI3RyYWRlSW5CYXJNb2JpbGUgLm1pZGRsZXsgY29sb3I6I2ZmZmZmZjsgfSAjdHJhZGVJbkJhck1vYmlsZSAjZGVmYXVsdFRvcEJhbm5lclRpdGxleyBwYWRkaW5nOjVweCAyMHB4IDBweCAyMHB4OyB9ICN0cmFkZUluQmFyTW9iaWxlIC5kZWZhdWx0VG9wQmFubmVyQnRuV3JhcHBlciBkaXZ7IG1heC13aWR0aDozMzBweDsgbWFyZ2luOjEwcHggYXV0bzsgcGFkZGluZzoxMnB4IDA7IGJvcmRlci1yYWRpdXM6MnB4OyBiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXByb21vLWJ0bi1iZy1jb2xvcik7IH0gI3RyYWRlSW5CYXJNb2JpbGUgLmRlZmF1bHRUb3BCYW5uZXJCdG5XcmFwcGVyIGF7IHRleHQtYWxpZ246Y2VudGVyOyBtYXJnaW46MCBhdXRvOyBmb250LXdlaWdodDo3MDA7IH0gI3RyYWRlSW5CYXJNb2JpbGUgI2RlZmF1bHRUb3BCYW5uZXJMb2dvIHNwYW57IGZvbnQtc2l6ZTowLjhyZW07IGZvbnQtd2VpZ2h0OjMwMDsgY29sb3I6dmFyKC0tbWlkLWdyYXkpOyB9ICN0cmFkZUluQmFyeyBiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXRyYWRlaW5iYXItYmcpOyBjb2xvcjogdmFyKC0tdHJhZGVpbmJhci1jb2xvcik7IH0gI3RyYWRlSW5CYXJXTW9iaWxlLCAjdHJhZGVJbkJhclcgeyBkaXNwbGF5OmZsZXg7IG1pbi1oZWlnaHQ6NTBweDsgbWFyZ2luOmF1dG87IHdpZHRoOm1pbigxMDAlLDEzNTBweCk7IHBvc2l0aW9uOnJlbGF0aXZlOyBqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyOyB9IC5sYW5ndWFnZUJhciAuc2VydmljZS1oZWFkZXItZm9ybSA+IGF7IHBhZGRpbmc6NHB4IDEycHg7IGhlaWdodDoxOHB4OyBsaW5lLWhlaWdodDoxOHB4OyBib3JkZXItcmFkaXVzOjA7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1oZWFkZXItc2VydmljZS1hcHBvaW50bWVudC10ZXh0LWNvbG9yLWJnLCB2YXIoLS1sYW5ndWFnZS1idG4tYWN0aXZlLWJnLWNvbG9yKSk7IGNvbG9yOnZhcigtLWhlYWRlci1zZXJ2aWNlLWFwcG9pbnRtZW50LXRleHQtY29sb3IsIHdoaXRlICk7IH0gLmxhbmd1YWdlQmFyIC5zZXJ2aWNlLWhlYWRlci1mb3JtIGE6aG92ZXIgeyBib3JkZXItY29sb3I6dmFyKC0taGVhZGVyLXNlcnZpY2UtYXBwb2ludG1lbnQtdGV4dC1jb2xvci1iZywgdmFyKC0tbGFuZ3VhZ2UtYnRuLWFjdGl2ZS1iZy1jb2xvcikpOyB9ICNhbGVydE1zZ0NvbnRhaW5lcnsgcG9zaXRpb246cmVsYXRpdmU7IGJhY2tncm91bmQtY29sb3I6IzAwMDsgei1pbmRleDo5OTk7IHdpZHRoOjEwMCU7IGNvbG9yOndoaXRlOyBib3gtc2l6aW5nOmJvcmRlci1ib3g7IGNvbG9yOnZhcigtLWFkbWluLWdlbmVyYWwtYWxlcnQtYmFyLXRleHQtY29sb3IpOyBmb250LXdlaWdodDo2MDA7IH0gI2FsZXJ0TXNnQ29udGFpbmVyLnN0aWNrLXRvcHsgcG9zaXRpb246c3RpY2t5OyB0b3A6MDsgei1pbmRleDo5OTk5OTsgfSAuZmEtZml4LWNlbnRlcjpiZWZvcmUgeyB3aWR0aDoxLjVlbTsgaGVpZ2h0OjEuNWVtOyBqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyOyBhbGlnbi1pdGVtczpjZW50ZXI7IGRpc3BsYXk6ZmxleDsgfSAjeW91dHViZV9fY29udGFpbmVyLmZ1bGxzY3JlZW57IG9iamVjdC1maXQ6Y292ZXI7IHBvc2l0aW9uOnJlbGF0aXZlOyBsZWZ0OjA7IHJpZ2h0OjA7IHRvcDowOyBvcGFjaXR5OjAuODsgfSAubWFpbkRpdkFkanVzdEhlYWRlciB7IHBvc2l0aW9uOmFic29sdXRlOyBiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50OyB0cmFuc2l0aW9uOmJhY2tncm91bmQtY29sb3IgLjNzLCBib3JkZXIgLjNzOyB0b3A6MDsgbGVmdDowOyByaWdodDowOyBib3R0b206MDsgfSAubWFpbkRpdkFkanVzdEhlYWRlci53aXRoLWFsZXJ0IHsgdG9wOjQwcHg7IH0gLnBheW1lbnRCbG9ja0NvbnRhaW5lciB7IGJhY2tncm91bmQtY29sb3I6dmFyKC0tY2VydC1jb25jcmV0ZS1ncmF5LCB2YXIoLS1saWdodC1ncmF5KSk7IGNvbG9yOnZhcigtLWRhcmstZ3JheSk7IH0gLnZlaGljbGVMb2NhdGlvbnsgYm9yZGVyLXRvcDoxcHggc29saWQgI2RkZDsgdGV4dC1hbGlnbjpjZW50ZXI7IH0gLmxpbmVTZXBhcmF0b3J7IGJvcmRlci10b3A6MXB4IHNvbGlkICNBOUE5QTk7IG1hcmdpbi10b3A6NDBweDsgbWFyZ2luLWJvdHRvbTo0MHB4OyB9IC5yZXZlYWwtbW9kYWwgc3Bhbi5mYS1oYW5kLXBvaW50ZXItY29sb3IgeyBjb2xvcjojZmZmZmZmOyBtYXJnaW4tcmlnaHQ6NXB4OyBtYXJnaW4tdG9wOjVweDsgfSAuY29uZmxpY3QtcmVzb2x2ZS1vcHRpb25zIHsgZm9udC1zaXplOjAuODEzcmVtIDsgfQovKiogL2Nzcy9mb250YXdlc29tZS1hbGwubWluLmNzcyAqKi8KLmZhLC5mYXMsLmZhciwuZmFsLC5mYWQsLmZhYnstbW96LW9zeC1mb250LXNtb290aGluZzpncmF5c2NhbGU7LXdlYmtpdC1mb250LXNtb290aGluZzphbnRpYWxpYXNlZDtkaXNwbGF5OmlubGluZS1ibG9jaztmb250LXN0eWxlOm5vcm1hbDtmb250LXZhcmlhbnQ6bm9ybWFsO3RleHQtcmVuZGVyaW5nOmF1dG87bGluZS1oZWlnaHQ6MX0uZmEtbGd7Zm9udC1zaXplOjEuMzMzMzNlbTtsaW5lLWhlaWdodDouNzVlbTt2ZXJ0aWNhbC1hbGlnbjotLjA2NjdlbX0uZmEteHN7Zm9udC1zaXplOi43NWVtfS5mYS1zbXtmb250LXNpemU6Ljg3NWVtfS5mYS0xeHtmb250LXNpemU6MWVtfS5mYS0yeHtmb250LXNpemU6MmVtfS5mYS0zeHtmb250LXNpemU6M2VtfS5mYS00eHtmb250LXNpemU6NGVtfS5mYS01eHtmb250LXNpemU6NWVtfS5mYS02eHtmb250LXNpemU6NmVtfS5mYS03eHtmb250LXNpemU6N2VtfS5mYS04eHtmb250LXNpemU6OGVtfS5mYS05eHtmb250LXNpemU6OWVtfS5mYS0xMHh7Zm9udC1zaXplOjEwZW19LmZhLWZ3e3RleHQtYWxpZ246Y2VudGVyO3dpZHRoOjEuMjVlbX0uZmEtdWx7bGlzdC1zdHlsZS10eXBlOm5vbmU7bWFyZ2luLWxlZnQ6Mi41ZW07cGFkZGluZy1sZWZ0OjB9LmZhLXVsID4gbGl7cG9zaXRpb246cmVsYXRpdmV9LmZhLWxpe2xlZnQ6LTJlbTtwb3NpdGlvbjphYnNvbHV0ZTt0ZXh0LWFsaWduOmNlbnRlcjt3aWR0aDoyZW07bGluZS1oZWlnaHQ6aW5oZXJpdH0uZmEtYm9yZGVye2JvcmRlcjpzb2xpZCAuMDhlbSAjZWVlO2JvcmRlci1yYWRpdXM6LjFlbTtwYWRkaW5nOi4yZW0gLjI1ZW0gLjE1ZW19LmZhLXB1bGwtbGVmdHtmbG9hdDpsZWZ0fS5mYS1wdWxsLXJpZ2h0e2Zsb2F0OnJpZ2h0fS5mYS5mYS1wdWxsLWxlZnQsLmZhcy5mYS1wdWxsLWxlZnQsLmZhci5mYS1wdWxsLWxlZnQsLmZhbC5mYS1wdWxsLWxlZnQsLmZhYi5mYS1wdWxsLWxlZnR7bWFyZ2luLXJpZ2h0Oi4zZW19LmZhLmZhLXB1bGwtcmlnaHQsLmZhcy5mYS1wdWxsLXJpZ2h0LC5mYXIuZmEtcHVsbC1yaWdodCwuZmFsLmZhLXB1bGwtcmlnaHQsLmZhYi5mYS1wdWxsLXJpZ2h0e21hcmdpbi1sZWZ0Oi4zZW19LmZhLXNwaW57LXdlYmtpdC1hbmltYXRpb246ZmEtc3BpbiAycyBpbmZpbml0ZSBsaW5lYXI7YW5pbWF0aW9uOmZhLXNwaW4gMnMgaW5maW5pdGUgbGluZWFyfS5mYS1wdWxzZXstd2Via2l0LWFuaW1hdGlvbjpmYS1zcGluIDFzIGluZmluaXRlIHN0ZXBzKDgpO2FuaW1hdGlvbjpmYS1zcGluIDFzIGluZmluaXRlIHN0ZXBzKDgpfUAtd2Via2l0LWtleWZyYW1lcyBmYS1zcGluezAley13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgwZGVnKTt0cmFuc2Zvcm06cm90YXRlKDBkZWcpfTEwMCV7LXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDM2MGRlZyk7dHJhbnNmb3JtOnJvdGF0ZSgzNjBkZWcpfX1Aa2V5ZnJhbWVzIGZhLXNwaW57MCV7LXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDBkZWcpO3RyYW5zZm9ybTpyb3RhdGUoMGRlZyl9MTAwJXstd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoMzYwZGVnKTt0cmFuc2Zvcm06cm90YXRlKDM2MGRlZyl9fS5mYS1yb3RhdGUtOTB7LW1zLWZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQmFzaWNJbWFnZShyb3RhdGlvbj0xKTstd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoOTBkZWcpO3RyYW5zZm9ybTpyb3RhdGUoOTBkZWcpfS5mYS1yb3RhdGUtMTgwey1tcy1maWx0ZXI6cHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkJhc2ljSW1hZ2Uocm90YXRpb249Mik7LXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDE4MGRlZyk7dHJhbnNmb3JtOnJvdGF0ZSgxODBkZWcpfS5mYS1yb3RhdGUtMjcwey1tcy1maWx0ZXI6cHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkJhc2ljSW1hZ2Uocm90YXRpb249Myk7LXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDI3MGRlZyk7dHJhbnNmb3JtOnJvdGF0ZSgyNzBkZWcpfS5mYS1mbGlwLWhvcml6b250YWx7LW1zLWZpbHRlcjoicHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkJhc2ljSW1hZ2Uocm90YXRpb249MCxtaXJyb3I9MSkiOy13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKC0xLDEpO3RyYW5zZm9ybTpzY2FsZSgtMSwxKX0uZmEtZmxpcC12ZXJ0aWNhbHstbXMtZmlsdGVyOiJwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQmFzaWNJbWFnZShyb3RhdGlvbj0yLG1pcnJvcj0xKSI7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGUoMSwtMSk7dHJhbnNmb3JtOnNjYWxlKDEsLTEpfS5mYS1mbGlwLWJvdGgsLmZhLWZsaXAtaG9yaXpvbnRhbC5mYS1mbGlwLXZlcnRpY2Fsey1tcy1maWx0ZXI6InByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5CYXNpY0ltYWdlKHJvdGF0aW9uPTIsbWlycm9yPTEpIjstd2Via2l0LXRyYW5zZm9ybTpzY2FsZSgtMSwtMSk7dHJhbnNmb3JtOnNjYWxlKC0xLC0xKX06cm9vdCAuZmEtcm90YXRlLTkwLDpyb290IC5mYS1yb3RhdGUtMTgwLDpyb290IC5mYS1yb3RhdGUtMjcwLDpyb290IC5mYS1mbGlwLWhvcml6b250YWwsOnJvb3QgLmZhLWZsaXAtdmVydGljYWwsOnJvb3QgLmZhLWZsaXAtYm90aHstd2Via2l0LWZpbHRlcjpub25lO2ZpbHRlcjpub25lfS5mYS1zdGFja3tkaXNwbGF5OmlubGluZS1ibG9jaztoZWlnaHQ6MmVtO2xpbmUtaGVpZ2h0OjJlbTtwb3NpdGlvbjpyZWxhdGl2ZTt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7d2lkdGg6Mi41ZW19LmZhLXN0YWNrLTF4LC5mYS1zdGFjay0yeHtsZWZ0OjA7cG9zaXRpb246YWJzb2x1dGU7dGV4dC1hbGlnbjpjZW50ZXI7d2lkdGg6MTAwJX0uZmEtc3RhY2stMXh7bGluZS1oZWlnaHQ6aW5oZXJpdH0uZmEtc3RhY2stMnh7Zm9udC1zaXplOjJlbX0uZmEtaW52ZXJzZXtjb2xvcjojZmZmfS5mYS01MDBweDpiZWZvcmV7Y29udGVudDoiXGYyNmUifS5mYS1hY2Nlc3NpYmxlLWljb246YmVmb3Jle2NvbnRlbnQ6IlxmMzY4In0uZmEtYWRkcmVzcy1ib29rOmJlZm9yZXtjb250ZW50OiJcZjJiOSJ9LmZhLWFkZHJlc3MtY2FyZDpiZWZvcmV7Y29udGVudDoiXGYyYmIifS5mYS1haXItZnJlc2hlbmVyOmJlZm9yZXtjb250ZW50OiJcZjVkMCJ9LmZhLWFsYXJtLWNsb2NrOmJlZm9yZXtjb250ZW50OiJcZjM0ZSJ9LmZhLWFtYnVsYW5jZTpiZWZvcmV7Y29udGVudDoiXGYwZjkifS5mYS1hbmRyb2lkOmJlZm9yZXtjb250ZW50OiJcZjE3YiJ9LmZhLWFuZ2xlLWRvdWJsZS1kb3duOmJlZm9yZXtjb250ZW50OiJcZjEwMyJ9LmZhLWFuZ2xlLWRvdWJsZS1sZWZ0OmJlZm9yZXtjb250ZW50OiJcZjEwMCJ9LmZhLWFuZ2xlLWRvdWJsZS1yaWdodDpiZWZvcmV7Y29udGVudDoiXGYxMDEifS5mYS1hbmdsZS1kb3VibGUtdXA6YmVmb3Jle2NvbnRlbnQ6IlxmMTAyIn0uZmEtYW5nbGUtZG93bjpiZWZvcmV7Y29udGVudDoiXGYxMDcifS5mYS1hbmdsZS1sZWZ0OmJlZm9yZXtjb250ZW50OiJcZjEwNCJ9LmZhLWFuZ2xlLXJpZ2h0OmJlZm9yZXtjb250ZW50OiJcZjEwNSJ9LmZhLWFuZ2xlLXVwOmJlZm9yZXtjb250ZW50OiJcZjEwNiJ9LmZhLWFwcGxlOmJlZm9yZXtjb250ZW50OiJcZjE3OSJ9LmZhLWFyY2hpdmU6YmVmb3Jle2NvbnRlbnQ6IlxmMTg3In0uZmEtYXJyb3ctYWx0LWNpcmNsZS1kb3duOmJlZm9yZXtjb250ZW50OiJcZjM1OCJ9LmZhLWFycm93LWFsdC1jaXJjbGUtbGVmdDpiZWZvcmV7Y29udGVudDoiXGYzNTkifS5mYS1hcnJvdy1hbHQtY2lyY2xlLXJpZ2h0OmJlZm9yZXtjb250ZW50OiJcZjM1YSJ9LmZhLWFycm93LWFsdC1jaXJjbGUtdXA6YmVmb3Jle2NvbnRlbnQ6IlxmMzViIn0uZmEtYXJyb3ctYWx0LWRvd246YmVmb3Jle2NvbnRlbnQ6IlxmMzU0In0uZmEtYXJyb3ctYWx0LWZyb20tYm90dG9tOmJlZm9yZXtjb250ZW50OiJcZjM0NiJ9LmZhLWFycm93LWFsdC1mcm9tLWxlZnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMzQ3In0uZmEtYXJyb3ctYWx0LWZyb20tcmlnaHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMzQ4In0uZmEtYXJyb3ctYWx0LWZyb20tdG9wOmJlZm9yZXtjb250ZW50OiJcZjM0OSJ9LmZhLWFycm93LWFsdC1sZWZ0OmJlZm9yZXtjb250ZW50OiJcZjM1NSJ9LmZhLWFycm93LWFsdC1yaWdodDpiZWZvcmV7Y29udGVudDoiXGYzNTYifS5mYS1hcnJvdy1hbHQtc3F1YXJlLWRvd246YmVmb3Jle2NvbnRlbnQ6IlxmMzUwIn0uZmEtYXJyb3ctYWx0LXNxdWFyZS1sZWZ0OmJlZm9yZXtjb250ZW50OiJcZjM1MSJ9LmZhLWFycm93LWFsdC1zcXVhcmUtcmlnaHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMzUyIn0uZmEtYXJyb3ctYWx0LXNxdWFyZS11cDpiZWZvcmV7Y29udGVudDoiXGYzNTMifS5mYS1hcnJvdy1hbHQtdG8tYm90dG9tOmJlZm9yZXtjb250ZW50OiJcZjM0YSJ9LmZhLWFycm93LWFsdC10by1sZWZ0OmJlZm9yZXtjb250ZW50OiJcZjM0YiJ9LmZhLWFycm93LWFsdC10by1yaWdodDpiZWZvcmV7Y29udGVudDoiXGYzNGMifS5mYS1hcnJvdy1hbHQtdG8tdG9wOmJlZm9yZXtjb250ZW50OiJcZjM0ZCJ9LmZhLWFycm93LWFsdC11cDpiZWZvcmV7Y29udGVudDoiXGYzNTcifS5mYS1hcnJvdy1jaXJjbGUtZG93bjpiZWZvcmV7Y29udGVudDoiXGYwYWIifS5mYS1hcnJvdy1jaXJjbGUtbGVmdDpiZWZvcmV7Y29udGVudDoiXGYwYTgifS5mYS1hcnJvdy1jaXJjbGUtcmlnaHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMGE5In0uZmEtYXJyb3ctY2lyY2xlLXVwOmJlZm9yZXtjb250ZW50OiJcZjBhYSJ9LmZhLWFycm93LWRvd246YmVmb3Jle2NvbnRlbnQ6IlxmMDYzIn0uZmEtYXJyb3ctZnJvbS1ib3R0b206YmVmb3Jle2NvbnRlbnQ6IlxmMzQyIn0uZmEtYXJyb3ctZnJvbS1sZWZ0OmJlZm9yZXtjb250ZW50OiJcZjM0MyJ9LmZhLWFycm93LWZyb20tcmlnaHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMzQ0In0uZmEtYXJyb3ctZnJvbS10b3A6YmVmb3Jle2NvbnRlbnQ6IlxmMzQ1In0uZmEtYXJyb3ctbGVmdDpiZWZvcmV7Y29udGVudDoiXGYwNjAifS5mYS1hcnJvdy1yaWdodDpiZWZvcmV7Y29udGVudDoiXGYwNjEifS5mYS1hcnJvdy1zcXVhcmUtZG93bjpiZWZvcmV7Y29udGVudDoiXGYzMzkifS5mYS1hcnJvdy1zcXVhcmUtbGVmdDpiZWZvcmV7Y29udGVudDoiXGYzM2EifS5mYS1hcnJvdy1zcXVhcmUtcmlnaHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMzNiIn0uZmEtYXJyb3ctc3F1YXJlLXVwOmJlZm9yZXtjb250ZW50OiJcZjMzYyJ9LmZhLWFycm93LXRvLWJvdHRvbTpiZWZvcmV7Y29udGVudDoiXGYzM2QifS5mYS1hcnJvdy10by1sZWZ0OmJlZm9yZXtjb250ZW50OiJcZjMzZSJ9LmZhLWFycm93LXRvLXJpZ2h0OmJlZm9yZXtjb250ZW50OiJcZjM0MCJ9LmZhLWFycm93LXRvLXRvcDpiZWZvcmV7Y29udGVudDoiXGYzNDEifS5mYS1hcnJvdy11cDpiZWZvcmV7Y29udGVudDoiXGYwNjIifS5mYS1hcnJvd3M6YmVmb3Jle2NvbnRlbnQ6IlxmMDQ3In0uZmEtYXJyb3dzLWFsdDpiZWZvcmV7Y29udGVudDoiXGYwYjIifS5mYS1hcnJvd3MtYWx0LWg6YmVmb3Jle2NvbnRlbnQ6IlxmMzM3In0uZmEtYXJyb3dzLWFsdC12OmJlZm9yZXtjb250ZW50OiJcZjMzOCJ9LmZhLWFycm93cy1oOmJlZm9yZXtjb250ZW50OiJcZjA3ZSJ9LmZhLWFycm93cy12OmJlZm9yZXtjb250ZW50OiJcZjA3ZCJ9LmZhLWFzc2lzdGl2ZS1saXN0ZW5pbmctc3lzdGVtczpiZWZvcmV7Y29udGVudDoiXGYyYTIifS5mYS1hdDpiZWZvcmV7Y29udGVudDoiXGYxZmEifS5mYS1hdWRpby1kZXNjcmlwdGlvbjpiZWZvcmV7Y29udGVudDoiXGYyOWUifS5mYS1hd2FyZDpiZWZvcmV7Y29udGVudDoiXGY1NTkifS5mYS1iYWRnZTpiZWZvcmV7Y29udGVudDoiXGYzMzUifS5mYS1iYWRnZS1jaGVjazpiZWZvcmV7Y29udGVudDoiXGYzMzYifS5mYS1iYW46YmVmb3Jle2NvbnRlbnQ6IlxmMDVlIn0uZmEtYmFyY29kZTpiZWZvcmV7Y29udGVudDoiXGYwMmEifS5mYS1iYXJjb2RlLWFsdDpiZWZvcmV7Y29udGVudDoiXGY0NjMifS5mYS1iYXJzOmJlZm9yZXtjb250ZW50OiJcZjBjOSJ9LmZhLWJhdHRlcnktZnVsbDpiZWZvcmV7Y29udGVudDoiXGYyNDAifS5mYS1iYXR0ZXJ5LWhhbGY6YmVmb3Jle2NvbnRlbnQ6IlxmMjQyIn0uZmEtYmVsbDpiZWZvcmV7Y29udGVudDoiXGYwZjMifS5mYS1iZWxsLWV4Y2xhbWF0aW9uOmJlZm9yZXtjb250ZW50OiJcZjg0OCJ9LmZhLWJlbGwtcGx1czpiZWZvcmV7Y29udGVudDoiXGY4NDkifS5mYS1iZWxsLXNsYXNoOmJlZm9yZXtjb250ZW50OiJcZjFmNiJ9LmZhLWJsb2c6YmVmb3Jle2NvbnRlbnQ6IlxmNzgxIn0uZmEtYmxvZ2dlcjpiZWZvcmV7Y29udGVudDoiXGYzN2MifS5mYS1ibG9nZ2VyLWI6YmVmb3Jle2NvbnRlbnQ6IlxmMzdkIn0uZmEtYmx1ZXRvb3RoOmJlZm9yZXtjb250ZW50OiJcZjI5MyJ9LmZhLWJsdWV0b290aC1iOmJlZm9yZXtjb250ZW50OiJcZjI5NCJ9LmZhLWJvbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMGU3In0uZmEtYm9va21hcms6YmVmb3Jle2NvbnRlbnQ6IlxmMDJlIn0uZmEtYm94LW9wZW46YmVmb3Jle2NvbnRlbnQ6IlxmNDllIn0uZmEtYnJvYWRjYXN0LXRvd2VyOmJlZm9yZXtjb250ZW50OiJcZjUxOSJ9LmZhLWJ0YzpiZWZvcmV7Y29udGVudDoiXGYxNWEifS5mYS1idWc6YmVmb3Jle2NvbnRlbnQ6IlxmMTg4In0uZmEtYnVpbGRpbmc6YmVmb3Jle2NvbnRlbnQ6IlxmMWFkIn0uZmEtYnVsbGhvcm46YmVmb3Jle2NvbnRlbnQ6IlxmMGExIn0uZmEtYnVsbHNleWU6YmVmb3Jle2NvbnRlbnQ6IlxmMTQwIn0uZmEtYnVzOmJlZm9yZXtjb250ZW50OiJcZjIwNyJ9LmZhLWJ1cy1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmNTVlIn0uZmEtYnVzLXNjaG9vbDpiZWZvcmV7Y29udGVudDoiXGY1ZGQifS5mYS1jYWxjdWxhdG9yOmJlZm9yZXtjb250ZW50OiJcZjFlYyJ9LmZhLWNhbGN1bGF0b3ItYWx0OmJlZm9yZXtjb250ZW50OiJcZjY0YyJ9LmZhLWNhbGVuZGFyOmJlZm9yZXtjb250ZW50OiJcZjEzMyJ9LmZhLWNhbGVuZGFyLWFsdDpiZWZvcmV7Y29udGVudDoiXGYwNzMifS5mYS1jYWxlbmRhci1jaGVjazpiZWZvcmV7Y29udGVudDoiXGYyNzQifS5mYS1jYWxlbmRhci1lZGl0OmJlZm9yZXtjb250ZW50OiJcZjMzMyJ9LmZhLWNhbGVuZGFyLWV4Y2xhbWF0aW9uOmJlZm9yZXtjb250ZW50OiJcZjMzNCJ9LmZhLWNhbGVuZGFyLW1pbnVzOmJlZm9yZXtjb250ZW50OiJcZjI3MiJ9LmZhLWNhbGVuZGFyLXRpbWVzOmJlZm9yZXtjb250ZW50OiJcZjI3MyJ9LmZhLWNhbWVyYTpiZWZvcmV7Y29udGVudDoiXGYwMzAifS5mYS1jYW1lcmEtYWx0OmJlZm9yZXtjb250ZW50OiJcZjMzMiJ9LmZhLWNhbWVyYS1ob21lOmJlZm9yZXtjb250ZW50OiJcZjhmZSJ9LmZhLWNhcjpiZWZvcmV7Y29udGVudDoiXGYxYjkifS5mYS1jYXItYWx0OmJlZm9yZXtjb250ZW50OiJcZjVkZSJ9LmZhLWNhci1iYXR0ZXJ5OmJlZm9yZXtjb250ZW50OiJcZjVkZiJ9LmZhLWNhci1idWlsZGluZzpiZWZvcmV7Y29udGVudDoiXGY4NTkifS5mYS1jYXItYnVtcDpiZWZvcmV7Y29udGVudDoiXGY1ZTAifS5mYS1jYXItYnVzOmJlZm9yZXtjb250ZW50OiJcZjg1YSJ9LmZhLWNhci1jcmFzaDpiZWZvcmV7Y29udGVudDoiXGY1ZTEifS5mYS1jYXItZ2FyYWdlOmJlZm9yZXtjb250ZW50OiJcZjVlMiJ9LmZhLWNhci1tZWNoYW5pYzpiZWZvcmV7Y29udGVudDoiXGY1ZTMifS5mYS1jYXItc2lkZTpiZWZvcmV7Y29udGVudDoiXGY1ZTQifS5mYS1jYXItdGlsdDpiZWZvcmV7Y29udGVudDoiXGY1ZTUifS5mYS1jYXItd2FzaDpiZWZvcmV7Y29udGVudDoiXGY1ZTYifS5mYS1jYXJhdmFuOmJlZm9yZXtjb250ZW50OiJcZjhmZiJ9LmZhLWNhcmF2YW4tYWx0OmJlZm9yZXtjb250ZW50OiJcZTAwMCJ9LmZhLWNhcmV0LWNpcmNsZS1kb3duOmJlZm9yZXtjb250ZW50OiJcZjMyZCJ9LmZhLWNhcmV0LWNpcmNsZS1sZWZ0OmJlZm9yZXtjb250ZW50OiJcZjMyZSJ9LmZhLWNhcmV0LWNpcmNsZS1yaWdodDpiZWZvcmV7Y29udGVudDoiXGYzMzAifS5mYS1jYXJldC1jaXJjbGUtdXA6YmVmb3Jle2NvbnRlbnQ6IlxmMzMxIn0uZmEtY2FyZXQtZG93bjpiZWZvcmV7Y29udGVudDoiXGYwZDcifS5mYS1jYXJldC1sZWZ0OmJlZm9yZXtjb250ZW50OiJcZjBkOSJ9LmZhLWNhcmV0LXJpZ2h0OmJlZm9yZXtjb250ZW50OiJcZjBkYSJ9LmZhLWNhcmV0LXNxdWFyZS1kb3duOmJlZm9yZXtjb250ZW50OiJcZjE1MCJ9LmZhLWNhcmV0LXNxdWFyZS1sZWZ0OmJlZm9yZXtjb250ZW50OiJcZjE5MSJ9LmZhLWNhcmV0LXNxdWFyZS1yaWdodDpiZWZvcmV7Y29udGVudDoiXGYxNTIifS5mYS1jYXJldC1zcXVhcmUtdXA6YmVmb3Jle2NvbnRlbnQ6IlxmMTUxIn0uZmEtY2FyZXQtdXA6YmVmb3Jle2NvbnRlbnQ6IlxmMGQ4In0uZmEtY2FyczpiZWZvcmV7Y29udGVudDoiXGY4NWIifS5mYS1jYXJ0LWFycm93LWRvd246YmVmb3Jle2NvbnRlbnQ6IlxmMjE4In0uZmEtY2FydC1wbHVzOmJlZm9yZXtjb250ZW50OiJcZjIxNyJ9LmZhLWNjLXBheXBhbDpiZWZvcmV7Y29udGVudDoiXGYxZjQifS5mYS1jZXJ0aWZpY2F0ZTpiZWZvcmV7Y29udGVudDoiXGYwYTMifS5mYS1jaGFpcjpiZWZvcmV7Y29udGVudDoiXGY2YzAifS5mYS1jaGFsa2JvYXJkOmJlZm9yZXtjb250ZW50OiJcZjUxYiJ9LmZhLWNoYXJnaW5nLXN0YXRpb246YmVmb3Jle2NvbnRlbnQ6IlxmNWU3In0uZmEtY2hhcnQtbGluZTpiZWZvcmV7Y29udGVudDoiXGYyMDEifS5mYS1jaGFydC1saW5lLWRvd246YmVmb3Jle2NvbnRlbnQ6IlxmNjRkIn0uZmEtY2hlY2s6YmVmb3Jle2NvbnRlbnQ6IlxmMDBjIn0uZmEtY2hlY2stY2lyY2xlOmJlZm9yZXtjb250ZW50OiJcZjA1OCJ9LmZhLWNoZWNrLWRvdWJsZTpiZWZvcmV7Y29udGVudDoiXGY1NjAifS5mYS1jaGVjay1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMTRhIn0uZmEtY2hldnJvbi1jaXJjbGUtZG93bjpiZWZvcmV7Y29udGVudDoiXGYxM2EifS5mYS1jaGV2cm9uLWNpcmNsZS1sZWZ0OmJlZm9yZXtjb250ZW50OiJcZjEzNyJ9LmZhLWNoZXZyb24tY2lyY2xlLXJpZ2h0OmJlZm9yZXtjb250ZW50OiJcZjEzOCJ9LmZhLWNoZXZyb24tY2lyY2xlLXVwOmJlZm9yZXtjb250ZW50OiJcZjEzOSJ9LmZhLWNoZXZyb24tZG91YmxlLWRvd246YmVmb3Jle2NvbnRlbnQ6IlxmMzIyIn0uZmEtY2hldnJvbi1kb3VibGUtbGVmdDpiZWZvcmV7Y29udGVudDoiXGYzMjMifS5mYS1jaGV2cm9uLWRvdWJsZS1yaWdodDpiZWZvcmV7Y29udGVudDoiXGYzMjQifS5mYS1jaGV2cm9uLWRvdWJsZS11cDpiZWZvcmV7Y29udGVudDoiXGYzMjUifS5mYS1jaGV2cm9uLWRvd246YmVmb3Jle2NvbnRlbnQ6IlxmMDc4In0uZmEtY2hldnJvbi1sZWZ0OmJlZm9yZXtjb250ZW50OiJcZjA1MyJ9LmZhLWNoZXZyb24tcmlnaHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMDU0In0uZmEtY2hldnJvbi1zcXVhcmUtZG93bjpiZWZvcmV7Y29udGVudDoiXGYzMjkifS5mYS1jaGV2cm9uLXNxdWFyZS1sZWZ0OmJlZm9yZXtjb250ZW50OiJcZjMyYSJ9LmZhLWNoZXZyb24tc3F1YXJlLXJpZ2h0OmJlZm9yZXtjb250ZW50OiJcZjMyYiJ9LmZhLWNoZXZyb24tc3F1YXJlLXVwOmJlZm9yZXtjb250ZW50OiJcZjMyYyJ9LmZhLWNoZXZyb24tdXA6YmVmb3Jle2NvbnRlbnQ6IlxmMDc3In0uZmEtY2lyY2xlOmJlZm9yZXtjb250ZW50OiJcZjExMSJ9LmZhLWNpcmNsZS1ub3RjaDpiZWZvcmV7Y29udGVudDoiXGYxY2UifS5mYS1jaXR5OmJlZm9yZXtjb250ZW50OiJcZjY0ZiJ9LmZhLWNsaXBib2FyZDpiZWZvcmV7Y29udGVudDoiXGYzMjgifS5mYS1jbG9jazpiZWZvcmV7Y29udGVudDoiXGYwMTcifS5mYS1jbG9uZTpiZWZvcmV7Y29udGVudDoiXGYyNGQifS5mYS1jbG9zZWQtY2FwdGlvbmluZzpiZWZvcmV7Y29udGVudDoiXGYyMGEifS5mYS1jbG91ZDpiZWZvcmV7Y29udGVudDoiXGYwYzIifS5mYS1jbG91ZC1kb3dubG9hZDpiZWZvcmV7Y29udGVudDoiXGYwZWQifS5mYS1jbG91ZC1kb3dubG9hZC1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMzgxIn0uZmEtY2xvdWQtdXBsb2FkOmJlZm9yZXtjb250ZW50OiJcZjBlZSJ9LmZhLWNsb3VkLXVwbG9hZC1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMzgyIn0uZmEtY2x1YjpiZWZvcmV7Y29udGVudDoiXGYzMjcifS5mYS1jb2ZmZWU6YmVmb3Jle2NvbnRlbnQ6IlxmMGY0In0uZmEtY29nOmJlZm9yZXtjb250ZW50OiJcZjAxMyJ9LmZhLWNvZ3M6YmVmb3Jle2NvbnRlbnQ6IlxmMDg1In0uZmEtY29tbWVudDpiZWZvcmV7Y29udGVudDoiXGYwNzUifS5mYS1jb21tZW50LWFsdDpiZWZvcmV7Y29udGVudDoiXGYyN2EifS5mYS1jb21tZW50LWFsdC1jaGVjazpiZWZvcmV7Y29udGVudDoiXGY0YTIifS5mYS1jb21tZW50LWFsdC1kb2xsYXI6YmVmb3Jle2NvbnRlbnQ6IlxmNjUwIn0uZmEtY29tbWVudC1kb2xsYXI6YmVmb3Jle2NvbnRlbnQ6IlxmNjUxIn0uZmEtY29tbWVudHM6YmVmb3Jle2NvbnRlbnQ6IlxmMDg2In0uZmEtY29tbWVudHMtYWx0OmJlZm9yZXtjb250ZW50OiJcZjRiNiJ9LmZhLWNvbW1lbnRzLWFsdC1kb2xsYXI6YmVmb3Jle2NvbnRlbnQ6IlxmNjUyIn0uZmEtY29tbWVudHMtZG9sbGFyOmJlZm9yZXtjb250ZW50OiJcZjY1MyJ9LmZhLWNvbXByZXNzLWFsdDpiZWZvcmV7Y29udGVudDoiXGY0MjIifS5mYS1jb21wcmVzcy1hcnJvd3MtYWx0OmJlZm9yZXtjb250ZW50OiJcZjc4YyJ9LmZhLWNvcHk6YmVmb3Jle2NvbnRlbnQ6IlxmMGM1In0uZmEtY29weXJpZ2h0OmJlZm9yZXtjb250ZW50OiJcZjFmOSJ9LmZhLWNvdWNoOmJlZm9yZXtjb250ZW50OiJcZjRiOCJ9LmZhLWNyZWF0aXZlLWNvbW1vbnMtc2hhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmNGYyIn0uZmEtY3JlZGl0LWNhcmQ6YmVmb3Jle2NvbnRlbnQ6IlxmMDlkIn0uZmEtY3V0OmJlZm9yZXtjb250ZW50OiJcZjBjNCJ9LmZhLWRhdGFiYXNlOmJlZm9yZXtjb250ZW50OiJcZjFjMCJ9LmZhLWRlc2t0b3A6YmVmb3Jle2NvbnRlbnQ6IlxmMTA4In0uZmEtZGlhbW9uZDpiZWZvcmV7Y29udGVudDoiXGYyMTkifS5mYS1kaWdpdGFsLXRhY2hvZ3JhcGg6YmVmb3Jle2NvbnRlbnQ6IlxmNTY2In0uZmEtZG9sbGFyLXNpZ246YmVmb3Jle2NvbnRlbnQ6IlxmMTU1In0uZmEtZG90LWNpcmNsZTpiZWZvcmV7Y29udGVudDoiXGYxOTIifS5mYS1kb3dubG9hZDpiZWZvcmV7Y29udGVudDoiXGYwMTkifS5mYS1lZGl0OmJlZm9yZXtjb250ZW50OiJcZjA0NCJ9LmZhLWVsbGlwc2lzLWg6YmVmb3Jle2NvbnRlbnQ6IlxmMTQxIn0uZmEtZWxsaXBzaXMtaC1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMzliIn0uZmEtZWxsaXBzaXMtdjpiZWZvcmV7Y29udGVudDoiXGYxNDIifS5mYS1lbGxpcHNpcy12LWFsdDpiZWZvcmV7Y29udGVudDoiXGYzOWMifS5mYS1lbmdpbmUtd2FybmluZzpiZWZvcmV7Y29udGVudDoiXGY1ZjIifS5mYS1lbnZlbG9wZTpiZWZvcmV7Y29udGVudDoiXGYwZTAifS5mYS1lbnZlbG9wZS1vcGVuOmJlZm9yZXtjb250ZW50OiJcZjJiNiJ9LmZhLWVudmVsb3BlLXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYxOTkifS5mYS1lcmFzZXI6YmVmb3Jle2NvbnRlbnQ6IlxmMTJkIn0uZmEtZXhjaGFuZ2U6YmVmb3Jle2NvbnRlbnQ6IlxmMGVjIn0uZmEtZXhjaGFuZ2UtYWx0OmJlZm9yZXtjb250ZW50OiJcZjM2MiJ9LmZhLWV4Y2xhbWF0aW9uOmJlZm9yZXtjb250ZW50OiJcZjEyYSJ9LmZhLWV4Y2xhbWF0aW9uLWNpcmNsZTpiZWZvcmV7Y29udGVudDoiXGYwNmEifS5mYS1leGNsYW1hdGlvbi1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMzIxIn0uZmEtZXhjbGFtYXRpb24tdHJpYW5nbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMDcxIn0uZmEtZXhwYW5kLWFsdDpiZWZvcmV7Y29udGVudDoiXGY0MjQifS5mYS1leHBhbmQtYXJyb3dzOmJlZm9yZXtjb250ZW50OiJcZjMxZCJ9LmZhLWV4cGFuZC1hcnJvd3MtYWx0OmJlZm9yZXtjb250ZW50OiJcZjMxZSJ9LmZhLWV4dGVybmFsLWxpbms6YmVmb3Jle2NvbnRlbnQ6IlxmMDhlIn0uZmEtZXh0ZXJuYWwtbGluay1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMzVkIn0uZmEtZXh0ZXJuYWwtbGluay1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMTRjIn0uZmEtZXh0ZXJuYWwtbGluay1zcXVhcmUtYWx0OmJlZm9yZXtjb250ZW50OiJcZjM2MCJ9LmZhLWV5ZTpiZWZvcmV7Y29udGVudDoiXGYwNmUifS5mYS1leWUtc2xhc2g6YmVmb3Jle2NvbnRlbnQ6IlxmMDcwIn0uZmEtZmFjZWJvb2s6YmVmb3Jle2NvbnRlbnQ6IlxmMDlhIn0uZmEtZmFjZWJvb2stZjpiZWZvcmV7Y29udGVudDoiXGYzOWUifS5mYS1mYWNlYm9vay1tZXNzZW5nZXI6YmVmb3Jle2NvbnRlbnQ6IlxmMzlmIn0uZmEtZmFjZWJvb2stc3F1YXJlOmJlZm9yZXtjb250ZW50OiJcZjA4MiJ9LmZhLWZheDpiZWZvcmV7Y29udGVudDoiXGYxYWMifS5mYS1maWxlOmJlZm9yZXtjb250ZW50OiJcZjE1YiJ9LmZhLWZpbGUtYWx0OmJlZm9yZXtjb250ZW50OiJcZjE1YyJ9LmZhLWZpbGUtYXJjaGl2ZTpiZWZvcmV7Y29udGVudDoiXGYxYzYifS5mYS1maWxlLWF1ZGlvOmJlZm9yZXtjb250ZW50OiJcZjFjNyJ9LmZhLWZpbGUtY2hhcnQtbGluZTpiZWZvcmV7Y29udGVudDoiXGY2NTkifS5mYS1maWxlLWNoZWNrOmJlZm9yZXtjb250ZW50OiJcZjMxNiJ9LmZhLWZpbGUtY29kZTpiZWZvcmV7Y29udGVudDoiXGYxYzkifS5mYS1maWxlLWRvd25sb2FkOmJlZm9yZXtjb250ZW50OiJcZjU2ZCJ9LmZhLWZpbGUtZWRpdDpiZWZvcmV7Y29udGVudDoiXGYzMWMifS5mYS1maWxlLWV4Y2VsOmJlZm9yZXtjb250ZW50OiJcZjFjMyJ9LmZhLWZpbGUtZXhjbGFtYXRpb246YmVmb3Jle2NvbnRlbnQ6IlxmMzFhIn0uZmEtZmlsZS1leHBvcnQ6YmVmb3Jle2NvbnRlbnQ6IlxmNTZlIn0uZmEtZmlsZS1pbWFnZTpiZWZvcmV7Y29udGVudDoiXGYxYzUifS5mYS1maWxlLWltcG9ydDpiZWZvcmV7Y29udGVudDoiXGY1NmYifS5mYS1maWxlLWludm9pY2UtZG9sbGFyOmJlZm9yZXtjb250ZW50OiJcZjU3MSJ9LmZhLWZpbGUtbWludXM6YmVmb3Jle2NvbnRlbnQ6IlxmMzE4In0uZmEtZmlsZS1tdXNpYzpiZWZvcmV7Y29udGVudDoiXGY4YjYifS5mYS1maWxlLXBkZjpiZWZvcmV7Y29udGVudDoiXGYxYzEifS5mYS1maWxlLXBsdXM6YmVmb3Jle2NvbnRlbnQ6IlxmMzE5In0uZmEtZmlsZS1wb3dlcnBvaW50OmJlZm9yZXtjb250ZW50OiJcZjFjNCJ9LmZhLWZpbGUtc2VhcmNoOmJlZm9yZXtjb250ZW50OiJcZjg2NSJ9LmZhLWZpbGUtdGltZXM6YmVmb3Jle2NvbnRlbnQ6IlxmMzE3In0uZmEtZmlsZS11cGxvYWQ6YmVmb3Jle2NvbnRlbnQ6IlxmNTc0In0uZmEtZmlsZS12aWRlbzpiZWZvcmV7Y29udGVudDoiXGYxYzgifS5mYS1maWxlLXdvcmQ6YmVmb3Jle2NvbnRlbnQ6IlxmMWMyIn0uZmEtZmlsdGVyOmJlZm9yZXtjb250ZW50OiJcZjBiMCJ9LmZhLWZpbmdlcnByaW50OmJlZm9yZXtjb250ZW50OiJcZjU3NyJ9LmZhLWZpcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMDZkIn0uZmEtZmxhZzpiZWZvcmV7Y29udGVudDoiXGYwMjQifS5mYS1mbGFnLWFsdDpiZWZvcmV7Y29udGVudDoiXGY3NGMifS5mYS1mbGFnLWNoZWNrZXJlZDpiZWZvcmV7Y29udGVudDoiXGYxMWUifS5mYS1mbHV4LWNhcGFjaXRvcjpiZWZvcmV7Y29udGVudDoiXGY4YmEifS5mYS1mb2xkZXI6YmVmb3Jle2NvbnRlbnQ6IlxmMDdiIn0uZmEtZm9sZGVyLWRvd25sb2FkOmJlZm9yZXtjb250ZW50OiJcZTA1MyJ9LmZhLWZvbGRlci1vcGVuOmJlZm9yZXtjb250ZW50OiJcZjA3YyJ9LmZhLWZvbGRlci11cGxvYWQ6YmVmb3Jle2NvbnRlbnQ6IlxlMDU0In0uZmEtZnJvd246YmVmb3Jle2NvbnRlbnQ6IlxmMTE5In0uZmEtZnJvd24tb3BlbjpiZWZvcmV7Y29udGVudDoiXGY1N2EifS5mYS1nYWxhY3RpYy1zZW5hdGU6YmVmb3Jle2NvbnRlbnQ6IlxmNTBkIn0uZmEtZ2FyYWdlOmJlZm9yZXtjb250ZW50OiJcZTAwOSJ9LmZhLWdhcmFnZS1jYXI6YmVmb3Jle2NvbnRlbnQ6IlxlMDBhIn0uZmEtZ2FyYWdlLW9wZW46YmVmb3Jle2NvbnRlbnQ6IlxlMDBiIn0uZmEtZ2FzLXB1bXA6YmVmb3Jle2NvbnRlbnQ6IlxmNTJmIn0uZmEtZ2FzLXB1bXAtc2xhc2g6YmVmb3Jle2NvbnRlbnQ6IlxmNWY0In0uZmEtZ2xhc3NlczpiZWZvcmV7Y29udGVudDoiXGY1MzAifS5mYS1nbG9iZTpiZWZvcmV7Y29udGVudDoiXGYwYWMifS5mYS1nb29nbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMWEwIn0uZmEtZ3JpcC1ob3Jpem9udGFsOmJlZm9yZXtjb250ZW50OiJcZjU4ZCJ9LmZhLWdyaXAtbGluZXM6YmVmb3Jle2NvbnRlbnQ6IlxmN2E0In0uZmEtZ3JpcC1saW5lcy12ZXJ0aWNhbDpiZWZvcmV7Y29udGVudDoiXGY3YTUifS5mYS1ncmlwLXZlcnRpY2FsOmJlZm9yZXtjb250ZW50OiJcZjU4ZSJ9LmZhLWhhbmQtaG9sZGluZy11c2Q6YmVmb3Jle2NvbnRlbnQ6IlxmNGMwIn0uZmEtaGFuZC1wb2ludC1kb3duOmJlZm9yZXtjb250ZW50OiJcZjBhNyJ9LmZhLWhhbmQtcG9pbnQtbGVmdDpiZWZvcmV7Y29udGVudDoiXGYwYTUifS5mYS1oYW5kLXBvaW50LXJpZ2h0OmJlZm9yZXtjb250ZW50OiJcZjBhNCJ9LmZhLWhhbmQtcG9pbnQtdXA6YmVmb3Jle2NvbnRlbnQ6IlxmMGE2In0uZmEtaGFuZC1wb2ludGVyOmJlZm9yZXtjb250ZW50OiJcZjI1YSJ9LmZhLWhhbmRzLXVzZDpiZWZvcmV7Y29udGVudDoiXGY0YzUifS5mYS1oYXNodGFnOmJlZm9yZXtjb250ZW50OiJcZjI5MiJ9LmZhLWhlYXJ0OmJlZm9yZXtjb250ZW50OiJcZjAwNCJ9LmZhLWhlYXJ0LWJyb2tlbjpiZWZvcmV7Y29udGVudDoiXGY3YTkifS5mYS1oZXhhZ29uOmJlZm9yZXtjb250ZW50OiJcZjMxMiJ9LmZhLWhpc3Rvcnk6YmVmb3Jle2NvbnRlbnQ6IlxmMWRhIn0uZmEtaG9tZTpiZWZvcmV7Y29udGVudDoiXGYwMTUifS5mYS1ob21lLWFsdDpiZWZvcmV7Y29udGVudDoiXGY4MGEifS5mYS1ob21lLWxnOmJlZm9yZXtjb250ZW50OiJcZjgwYiJ9LmZhLWhvbWUtbGctYWx0OmJlZm9yZXtjb250ZW50OiJcZjgwYyJ9LmZhLWhvdXNlOmJlZm9yZXtjb250ZW50OiJcZTAwZCJ9LmZhLWktY3Vyc29yOmJlZm9yZXtjb250ZW50OiJcZjI0NiJ9LmZhLWluYm94OmJlZm9yZXtjb250ZW50OiJcZjAxYyJ9LmZhLWluYm94LWluOmJlZm9yZXtjb250ZW50OiJcZjMxMCJ9LmZhLWluYm94LW91dDpiZWZvcmV7Y29udGVudDoiXGYzMTEifS5mYS1pbmZvOmJlZm9yZXtjb250ZW50OiJcZjEyOSJ9LmZhLWluZm8tY2lyY2xlOmJlZm9yZXtjb250ZW50OiJcZjA1YSJ9LmZhLWluZm8tc3F1YXJlOmJlZm9yZXtjb250ZW50OiJcZjMwZiJ9LmZhLWluc3RhZ3JhbTpiZWZvcmV7Y29udGVudDoiXGYxNmQifS5mYS1pbnN0YWdyYW0tc3F1YXJlOmJlZm9yZXtjb250ZW50OiJcZTA1NSJ9LmZhLWtleTpiZWZvcmV7Y29udGVudDoiXGYwODQifS5mYS1sYW5ndWFnZTpiZWZvcmV7Y29udGVudDoiXGYxYWIifS5mYS1sYXNzbzpiZWZvcmV7Y29udGVudDoiXGY4YzgifS5mYS1sZWFmOmJlZm9yZXtjb250ZW50OiJcZjA2YyJ9LmZhLWxldmVsLWRvd246YmVmb3Jle2NvbnRlbnQ6IlxmMTQ5In0uZmEtbGV2ZWwtZG93bi1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmM2JlIn0uZmEtbGV2ZWwtdXA6YmVmb3Jle2NvbnRlbnQ6IlxmMTQ4In0uZmEtbGV2ZWwtdXAtYWx0OmJlZm9yZXtjb250ZW50OiJcZjNiZiJ9LmZhLWxpbmtlZGluOmJlZm9yZXtjb250ZW50OiJcZjA4YyJ9LmZhLWxpbmtlZGluLWluOmJlZm9yZXtjb250ZW50OiJcZjBlMSJ9LmZhLWxvY2F0aW9uLWFycm93OmJlZm9yZXtjb250ZW50OiJcZjEyNCJ9LmZhLWxvbmctYXJyb3ctYWx0LWRvd246YmVmb3Jle2NvbnRlbnQ6IlxmMzA5In0uZmEtbG9uZy1hcnJvdy1hbHQtbGVmdDpiZWZvcmV7Y29udGVudDoiXGYzMGEifS5mYS1sb25nLWFycm93LWFsdC1yaWdodDpiZWZvcmV7Y29udGVudDoiXGYzMGIifS5mYS1sb25nLWFycm93LWFsdC11cDpiZWZvcmV7Y29udGVudDoiXGYzMGMifS5mYS1sb25nLWFycm93LWRvd246YmVmb3Jle2NvbnRlbnQ6IlxmMTc1In0uZmEtbG9uZy1hcnJvdy1sZWZ0OmJlZm9yZXtjb250ZW50OiJcZjE3NyJ9LmZhLWxvbmctYXJyb3ctcmlnaHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMTc4In0uZmEtbG9uZy1hcnJvdy11cDpiZWZvcmV7Y29udGVudDoiXGYxNzYifS5mYS1tYWdpYzpiZWZvcmV7Y29udGVudDoiXGYwZDAifS5mYS1tYXA6YmVmb3Jle2NvbnRlbnQ6IlxmMjc5In0uZmEtbWFwLW1hcmtlcjpiZWZvcmV7Y29udGVudDoiXGYwNDEifS5mYS1tYXAtbWFya2VyLWFsdDpiZWZvcmV7Y29udGVudDoiXGYzYzUifS5mYS1tYXAtcGluOmJlZm9yZXtjb250ZW50OiJcZjI3NiJ9LmZhLW1hcC1zaWduczpiZWZvcmV7Y29udGVudDoiXGYyNzcifS5mYS1tYXJrZXI6YmVmb3Jle2NvbnRlbnQ6IlxmNWExIn0uZmEtbWVkYWw6YmVmb3Jle2NvbnRlbnQ6IlxmNWEyIn0uZmEtbWVoOmJlZm9yZXtjb250ZW50OiJcZjExYSJ9LmZhLW1pY3JvY2hpcDpiZWZvcmV7Y29udGVudDoiXGYyZGIifS5mYS1taWNyb3Bob25lOmJlZm9yZXtjb250ZW50OiJcZjEzMCJ9LmZhLW1pY3JvcGhvbmUtYWx0OmJlZm9yZXtjb250ZW50OiJcZjNjOSJ9LmZhLW1pY3JvcGhvbmUtYWx0LXNsYXNoOmJlZm9yZXtjb250ZW50OiJcZjUzOSJ9LmZhLW1pY3JvcGhvbmUtc2xhc2g6YmVmb3Jle2NvbnRlbnQ6IlxmMTMxIn0uZmEtbWluZC1zaGFyZTpiZWZvcmV7Y29udGVudDoiXGY2NzcifS5mYS1taW51czpiZWZvcmV7Y29udGVudDoiXGYwNjgifS5mYS1taW51cy1jaXJjbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMDU2In0uZmEtbWludXMtaGV4YWdvbjpiZWZvcmV7Y29udGVudDoiXGYzMDcifS5mYS1taW51cy1vY3RhZ29uOmJlZm9yZXtjb250ZW50OiJcZjMwOCJ9LmZhLW1pbnVzLXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYxNDYifS5mYS1tb2JpbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMTBiIn0uZmEtbW9iaWxlLWFsdDpiZWZvcmV7Y29udGVudDoiXGYzY2QifS5mYS1tb2JpbGUtYW5kcm9pZDpiZWZvcmV7Y29udGVudDoiXGYzY2UifS5mYS1tb2JpbGUtYW5kcm9pZC1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmM2NmIn0uZmEtbW9uZXktY2hlY2s6YmVmb3Jle2NvbnRlbnQ6IlxmNTNjIn0uZmEtbW9uZXktY2hlY2stYWx0OmJlZm9yZXtjb250ZW50OiJcZjUzZCJ9LmZhLW1vbmV5LWNoZWNrLWVkaXQ6YmVmb3Jle2NvbnRlbnQ6IlxmODcyIn0uZmEtbW9uZXktY2hlY2stZWRpdC1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmODczIn0uZmEtbW90b3JjeWNsZTpiZWZvcmV7Y29udGVudDoiXGYyMWMifS5mYS1tb3VudGFpbjpiZWZvcmV7Y29udGVudDoiXGY2ZmMifS5mYS1tb3VzZS1wb2ludGVyOmJlZm9yZXtjb250ZW50OiJcZjI0NSJ9LmZhLW1wMy1wbGF5ZXI6YmVmb3Jle2NvbnRlbnQ6IlxmOGNlIn0uZmEtbXVzaWM6YmVmb3Jle2NvbnRlbnQ6IlxmMDAxIn0uZmEtb2N0YWdvbjpiZWZvcmV7Y29udGVudDoiXGYzMDYifS5mYS1vaWwtY2FuOmJlZm9yZXtjb250ZW50OiJcZjYxMyJ9LmZhLW9pbC10ZW1wOmJlZm9yZXtjb250ZW50OiJcZjYxNCJ9LmZhLXBhaW50LWJydXNoOmJlZm9yZXtjb250ZW50OiJcZjFmYyJ9LmZhLXBhbGV0dGU6YmVmb3Jle2NvbnRlbnQ6IlxmNTNmIn0uZmEtcGFwZXItcGxhbmU6YmVmb3Jle2NvbnRlbnQ6IlxmMWQ4In0uZmEtcGFzdGU6YmVmb3Jle2NvbnRlbnQ6IlxmMGVhIn0uZmEtcGF5cGFsOmJlZm9yZXtjb250ZW50OiJcZjFlZCJ9LmZhLXBlbjpiZWZvcmV7Y29udGVudDoiXGYzMDQifS5mYS1wZW4tYWx0OmJlZm9yZXtjb250ZW50OiJcZjMwNSJ9LmZhLXBlbi1mYW5jeTpiZWZvcmV7Y29udGVudDoiXGY1YWMifS5mYS1wZW5jaWw6YmVmb3Jle2NvbnRlbnQ6IlxmMDQwIn0uZmEtcGVuY2lsLWFsdDpiZWZvcmV7Y29udGVudDoiXGYzMDMifS5mYS1wZW5jaWwtcnVsZXI6YmVmb3Jle2NvbnRlbnQ6IlxmNWFlIn0uZmEtcGVvcGxlLWFycm93czpiZWZvcmV7Y29udGVudDoiXGUwNjgifS5mYS1waG9uZTpiZWZvcmV7Y29udGVudDoiXGYwOTUifS5mYS1waG9uZS1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmODc5In0uZmEtcGhvbmUtc3F1YXJlOmJlZm9yZXtjb250ZW50OiJcZjA5OCJ9LmZhLXBob25lLXNxdWFyZS1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmODdiIn0uZmEtcGhvbmUtdm9sdW1lOmJlZm9yZXtjb250ZW50OiJcZjJhMCJ9LmZhLXBob3RvLXZpZGVvOmJlZm9yZXtjb250ZW50OiJcZjg3YyJ9LmZhLXBpbnRlcmVzdDpiZWZvcmV7Y29udGVudDoiXGYwZDIifS5mYS1waW50ZXJlc3QtcDpiZWZvcmV7Y29udGVudDoiXGYyMzEifS5mYS1waW50ZXJlc3Qtc3F1YXJlOmJlZm9yZXtjb250ZW50OiJcZjBkMyJ9LmZhLXBsYXk6YmVmb3Jle2NvbnRlbnQ6IlxmMDRiIn0uZmEtcGxheS1jaXJjbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMTQ0In0uZmEtcGx1ZzpiZWZvcmV7Y29udGVudDoiXGYxZTYifS5mYS1wbHVzOmJlZm9yZXtjb250ZW50OiJcZjA2NyJ9LmZhLXBsdXMtY2lyY2xlOmJlZm9yZXtjb250ZW50OiJcZjA1NSJ9LmZhLXBsdXMtaGV4YWdvbjpiZWZvcmV7Y29udGVudDoiXGYzMDAifS5mYS1wbHVzLW9jdGFnb246YmVmb3Jle2NvbnRlbnQ6IlxmMzAxIn0uZmEtcGx1cy1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMGZlIn0uZmEtcG9vOmJlZm9yZXtjb250ZW50OiJcZjJmZSJ9LmZhLXByaW50OmJlZm9yZXtjb250ZW50OiJcZjAyZiJ9LmZhLXFyY29kZTpiZWZvcmV7Y29udGVudDoiXGYwMjkifS5mYS1xdWVzdGlvbjpiZWZvcmV7Y29udGVudDoiXGYxMjgifS5mYS1xdWVzdGlvbi1jaXJjbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMDU5In0uZmEtcXVlc3Rpb24tc3F1YXJlOmJlZm9yZXtjb250ZW50OiJcZjJmZCJ9LmZhLXF1b3RlLWxlZnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMTBkIn0uZmEtcXVvdGUtcmlnaHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMTBlIn0uZmEtcmFuZG9tOmJlZm9yZXtjb250ZW50OiJcZjA3NCJ9LmZhLXJlY3RhbmdsZS1sYW5kc2NhcGU6YmVmb3Jle2NvbnRlbnQ6IlxmMmZhIn0uZmEtcmVjdGFuZ2xlLXBvcnRyYWl0OmJlZm9yZXtjb250ZW50OiJcZjJmYiJ9LmZhLXJlY3RhbmdsZS13aWRlOmJlZm9yZXtjb250ZW50OiJcZjJmYyJ9LmZhLXJlY3ljbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMWI4In0uZmEtcmVkbzpiZWZvcmV7Y29udGVudDoiXGYwMWUifS5mYS1yZWRvLWFsdDpiZWZvcmV7Y29udGVudDoiXGYyZjkifS5mYS1yZXBlYXQ6YmVmb3Jle2NvbnRlbnQ6IlxmMzYzIn0uZmEtcmVwZWF0LTE6YmVmb3Jle2NvbnRlbnQ6IlxmMzY1In0uZmEtcmVwZWF0LTEtYWx0OmJlZm9yZXtjb250ZW50OiJcZjM2NiJ9LmZhLXJlcGVhdC1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMzY0In0uZmEtcmVwbHk6YmVmb3Jle2NvbnRlbnQ6IlxmM2U1In0uZmEtcmVwbHktYWxsOmJlZm9yZXtjb250ZW50OiJcZjEyMiJ9LmZhLXJldHdlZXQ6YmVmb3Jle2NvbnRlbnQ6IlxmMDc5In0uZmEtcmV0d2VldC1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMzYxIn0uZmEtcm9hZDpiZWZvcmV7Y29udGVudDoiXGYwMTgifS5mYS1yb2JvdDpiZWZvcmV7Y29udGVudDoiXGY1NDQifS5mYS1yc3M6YmVmb3Jle2NvbnRlbnQ6IlxmMDllIn0uZmEtcnNzLXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYxNDMifS5mYS1ydjpiZWZvcmV7Y29udGVudDoiXGY3YmUifS5mYS1zYXZlOmJlZm9yZXtjb250ZW50OiJcZjBjNyJ9LmZhLXNjcmV3ZHJpdmVyOmJlZm9yZXtjb250ZW50OiJcZjU0YSJ9LmZhLXNlYXJjaDpiZWZvcmV7Y29udGVudDoiXGYwMDIifS5mYS1zZWFyY2gtbWludXM6YmVmb3Jle2NvbnRlbnQ6IlxmMDEwIn0uZmEtc2VhcmNoLXBsdXM6YmVmb3Jle2NvbnRlbnQ6IlxmMDBlIn0uZmEtc2hhcGVzOmJlZm9yZXtjb250ZW50OiJcZjYxZiJ9LmZhLXNoYXJlOmJlZm9yZXtjb250ZW50OiJcZjA2NCJ9LmZhLXNoYXJlLWFsbDpiZWZvcmV7Y29udGVudDoiXGYzNjcifS5mYS1zaGFyZS1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMWUwIn0uZmEtc2hhcmUtYWx0LXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYxZTEifS5mYS1zaGFyZS1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMTRkIn0uZmEtc2hpZWxkOmJlZm9yZXtjb250ZW50OiJcZjEzMiJ9LmZhLXNoaWVsZC1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmM2VkIn0uZmEtc2hvcHBpbmctYmFza2V0OmJlZm9yZXtjb250ZW50OiJcZjI5MSJ9LmZhLXNob3BwaW5nLWNhcnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMDdhIn0uZmEtc2h1dHRsZS12YW46YmVmb3Jle2NvbnRlbnQ6IlxmNWI2In0uZmEtc2lnbi1pbjpiZWZvcmV7Y29udGVudDoiXGYwOTAifS5mYS1zaWduLWluLWFsdDpiZWZvcmV7Y29udGVudDoiXGYyZjYifS5mYS1zaWduLW91dDpiZWZvcmV7Y29udGVudDoiXGYwOGIifS5mYS1zaWduLW91dC1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMmY1In0uZmEtc2lnbmFsOmJlZm9yZXtjb250ZW50OiJcZjAxMiJ9LmZhLXNpZ25hbC1zdHJlYW06YmVmb3Jle2NvbnRlbnQ6IlxmOGRkIn0uZmEtc2l0ZW1hcDpiZWZvcmV7Y29udGVudDoiXGYwZTgifS5mYS1zbGlkZXJzLWg6YmVmb3Jle2NvbnRlbnQ6IlxmMWRlIn0uZmEtc2xpZGVycy1oLXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYzZjAifS5mYS1zbGlkZXJzLXY6YmVmb3Jle2NvbnRlbnQ6IlxmM2YxIn0uZmEtc2xpZGVycy12LXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYzZjIifS5mYS1zbWlsZTpiZWZvcmV7Y29udGVudDoiXGYxMTgifS5mYS1zbXM6YmVmb3Jle2NvbnRlbnQ6IlxmN2NkIn0uZmEtc25vd2ZsYWtlOmJlZm9yZXtjb250ZW50OiJcZjJkYyJ9LmZhLXNvcnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMGRjIn0uZmEtc29ydC1hbHBoYS1kb3duOmJlZm9yZXtjb250ZW50OiJcZjE1ZCJ9LmZhLXNvcnQtYWxwaGEtZG93bi1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmODgxIn0uZmEtc29ydC1hbHBoYS11cDpiZWZvcmV7Y29udGVudDoiXGYxNWUifS5mYS1zb3J0LWFscGhhLXVwLWFsdDpiZWZvcmV7Y29udGVudDoiXGY4ODIifS5mYS1zb3J0LWFsdDpiZWZvcmV7Y29udGVudDoiXGY4ODMifS5mYS1zb3J0LWFtb3VudC1kb3duOmJlZm9yZXtjb250ZW50OiJcZjE2MCJ9LmZhLXNvcnQtYW1vdW50LWRvd24tYWx0OmJlZm9yZXtjb250ZW50OiJcZjg4NCJ9LmZhLXNvcnQtYW1vdW50LXVwOmJlZm9yZXtjb250ZW50OiJcZjE2MSJ9LmZhLXNvcnQtYW1vdW50LXVwLWFsdDpiZWZvcmV7Y29udGVudDoiXGY4ODUifS5mYS1zb3J0LWNpcmNsZTpiZWZvcmV7Y29udGVudDoiXGUwMzAifS5mYS1zb3J0LWNpcmNsZS1kb3duOmJlZm9yZXtjb250ZW50OiJcZTAzMSJ9LmZhLXNvcnQtY2lyY2xlLXVwOmJlZm9yZXtjb250ZW50OiJcZTAzMiJ9LmZhLXNvcnQtZG93bjpiZWZvcmV7Y29udGVudDoiXGYwZGQifS5mYS1zb3J0LW51bWVyaWMtZG93bjpiZWZvcmV7Y29udGVudDoiXGYxNjIifS5mYS1zb3J0LW51bWVyaWMtZG93bi1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmODg2In0uZmEtc29ydC1udW1lcmljLXVwOmJlZm9yZXtjb250ZW50OiJcZjE2MyJ9LmZhLXNvcnQtbnVtZXJpYy11cC1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmODg3In0uZmEtc29ydC1zaGFwZXMtZG93bjpiZWZvcmV7Y29udGVudDoiXGY4ODgifS5mYS1zb3J0LXNoYXBlcy1kb3duLWFsdDpiZWZvcmV7Y29udGVudDoiXGY4ODkifS5mYS1zb3J0LXNoYXBlcy11cDpiZWZvcmV7Y29udGVudDoiXGY4OGEifS5mYS1zb3J0LXNoYXBlcy11cC1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmODhiIn0uZmEtc29ydC1zaXplLWRvd246YmVmb3Jle2NvbnRlbnQ6IlxmODhjIn0uZmEtc29ydC1zaXplLWRvd24tYWx0OmJlZm9yZXtjb250ZW50OiJcZjg4ZCJ9LmZhLXNvcnQtc2l6ZS11cDpiZWZvcmV7Y29udGVudDoiXGY4OGUifS5mYS1zb3J0LXNpemUtdXAtYWx0OmJlZm9yZXtjb250ZW50OiJcZjg4ZiJ9LmZhLXNvcnQtdXA6YmVmb3Jle2NvbnRlbnQ6IlxmMGRlIn0uZmEtc3BhZGU6YmVmb3Jle2NvbnRlbnQ6IlxmMmY0In0uZmEtc3Bpbm5lcjpiZWZvcmV7Y29udGVudDoiXGYxMTAifS5mYS1zcGlubmVyLXRoaXJkOmJlZm9yZXtjb250ZW50OiJcZjNmNCJ9LmZhLXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYwYzgifS5mYS1zdGFyOmJlZm9yZXtjb250ZW50OiJcZjAwNSJ9LmZhLXN0YXItZXhjbGFtYXRpb246YmVmb3Jle2NvbnRlbnQ6IlxmMmYzIn0uZmEtc3Rhci1oYWxmOmJlZm9yZXtjb250ZW50OiJcZjA4OSJ9LmZhLXN0YXItaGFsZi1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmNWMwIn0uZmEtc3RlZXJpbmctd2hlZWw6YmVmb3Jle2NvbnRlbnQ6IlxmNjIyIn0uZmEtc3RpY2t5LW5vdGU6YmVmb3Jle2NvbnRlbnQ6IlxmMjQ5In0uZmEtc3RvcHdhdGNoOmJlZm9yZXtjb250ZW50OiJcZjJmMiJ9LmZhLXN0b3JlOmJlZm9yZXtjb250ZW50OiJcZjU0ZSJ9LmZhLXN0b3JlLWFsdDpiZWZvcmV7Y29udGVudDoiXGY1NGYifS5mYS1zdWl0Y2FzZS1yb2xsaW5nOmJlZm9yZXtjb250ZW50OiJcZjVjMSJ9LmZhLXN1bjpiZWZvcmV7Y29udGVudDoiXGYxODUifS5mYS1zeW5jOmJlZm9yZXtjb250ZW50OiJcZjAyMSJ9LmZhLXN5bmMtYWx0OmJlZm9yZXtjb250ZW50OiJcZjJmMSJ9LmZhLXRhYmxldDpiZWZvcmV7Y29udGVudDoiXGYxMGEifS5mYS10YWJsZXQtYWx0OmJlZm9yZXtjb250ZW50OiJcZjNmYSJ9LmZhLXRhY2hvbWV0ZXI6YmVmb3Jle2NvbnRlbnQ6IlxmMGU0In0uZmEtdGFjaG9tZXRlci1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmM2ZkIn0uZmEtdGFjaG9tZXRlci1hbHQtYXZlcmFnZTpiZWZvcmV7Y29udGVudDoiXGY2MjQifS5mYS10YWNob21ldGVyLWFsdC1mYXN0OmJlZm9yZXtjb250ZW50OiJcZjYyNSJ9LmZhLXRhY2hvbWV0ZXItYWx0LWZhc3Rlc3Q6YmVmb3Jle2NvbnRlbnQ6IlxmNjI2In0uZmEtdGFjaG9tZXRlci1hbHQtc2xvdzpiZWZvcmV7Y29udGVudDoiXGY2MjcifS5mYS10YWNob21ldGVyLWFsdC1zbG93ZXN0OmJlZm9yZXtjb250ZW50OiJcZjYyOCJ9LmZhLXRhY2hvbWV0ZXItYXZlcmFnZTpiZWZvcmV7Y29udGVudDoiXGY2MjkifS5mYS10YWNob21ldGVyLWZhc3Q6YmVmb3Jle2NvbnRlbnQ6IlxmNjJhIn0uZmEtdGFjaG9tZXRlci1mYXN0ZXN0OmJlZm9yZXtjb250ZW50OiJcZjYyYiJ9LmZhLXRhY2hvbWV0ZXItc2xvdzpiZWZvcmV7Y29udGVudDoiXGY2MmMifS5mYS10YWNob21ldGVyLXNsb3dlc3Q6YmVmb3Jle2NvbnRlbnQ6IlxmNjJkIn0uZmEtdGFnOmJlZm9yZXtjb250ZW50OiJcZjAyYiJ9LmZhLXRhZ3M6YmVmb3Jle2NvbnRlbnQ6IlxmMDJjIn0uZmEtdGF4aTpiZWZvcmV7Y29udGVudDoiXGYxYmEifS5mYS10ZW1wZXJhdHVyZS1oaWdoOmJlZm9yZXtjb250ZW50OiJcZjc2OSJ9LmZhLXRlbXBlcmF0dXJlLWxvdzpiZWZvcmV7Y29udGVudDoiXGY3NmIifS5mYS10ZXh0LWhlaWdodDpiZWZvcmV7Y29udGVudDoiXGYwMzQifS5mYS10ZXh0LXdpZHRoOmJlZm9yZXtjb250ZW50OiJcZjAzNSJ9LmZhLXRoZXJtb21ldGVyLWhhbGY6YmVmb3Jle2NvbnRlbnQ6IlxmMmM5In0uZmEtdGh1bWJzLWRvd246YmVmb3Jle2NvbnRlbnQ6IlxmMTY1In0uZmEtdGh1bWJzLXVwOmJlZm9yZXtjb250ZW50OiJcZjE2NCJ9LmZhLXRpY2tldDpiZWZvcmV7Y29udGVudDoiXGYxNDUifS5mYS10aWt0b2s6YmVmb3Jle2NvbnRlbnQ6IlxlMDdiIn0uZmEtdGltZXM6YmVmb3Jle2NvbnRlbnQ6IlxmMDBkIn0uZmEtdGltZXMtY2lyY2xlOmJlZm9yZXtjb250ZW50OiJcZjA1NyJ9LmZhLXRpbWVzLWhleGFnb246YmVmb3Jle2NvbnRlbnQ6IlxmMmVlIn0uZmEtdGltZXMtb2N0YWdvbjpiZWZvcmV7Y29udGVudDoiXGYyZjAifS5mYS10aW1lcy1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMmQzIn0uZmEtdGludDpiZWZvcmV7Y29udGVudDoiXGYwNDMifS5mYS10aXJlOmJlZm9yZXtjb250ZW50OiJcZjYzMSJ9LmZhLXRpcmUtZmxhdDpiZWZvcmV7Y29udGVudDoiXGY2MzIifS5mYS10aXJlLXByZXNzdXJlLXdhcm5pbmc6YmVmb3Jle2NvbnRlbnQ6IlxmNjMzIn0uZmEtdGlyZS1ydWdnZWQ6YmVmb3Jle2NvbnRlbnQ6IlxmNjM0In0uZmEtdG9nZ2xlLW9mZjpiZWZvcmV7Y29udGVudDoiXGYyMDQifS5mYS10b2dnbGUtb246YmVmb3Jle2NvbnRlbnQ6IlxmMjA1In0uZmEtdG9vbHM6YmVmb3Jle2NvbnRlbnQ6IlxmN2Q5In0uZmEtdHJhaWxlcjpiZWZvcmV7Y29udGVudDoiXGUwNDEifS5mYS10cmFzaDpiZWZvcmV7Y29udGVudDoiXGYxZjgifS5mYS10cmFzaC1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMmVkIn0uZmEtdHJhc2gtcmVzdG9yZTpiZWZvcmV7Y29udGVudDoiXGY4MjkifS5mYS10cmFzaC1yZXN0b3JlLWFsdDpiZWZvcmV7Y29udGVudDoiXGY4MmEifS5mYS10cmFzaC11bmRvOmJlZm9yZXtjb250ZW50OiJcZjg5NSJ9LmZhLXRyYXNoLXVuZG8tYWx0OmJlZm9yZXtjb250ZW50OiJcZjg5NiJ9LmZhLXRyaWFuZ2xlOmJlZm9yZXtjb250ZW50OiJcZjJlYyJ9LmZhLXRyb3BoeTpiZWZvcmV7Y29udGVudDoiXGYwOTEifS5mYS10cm9waHktYWx0OmJlZm9yZXtjb250ZW50OiJcZjJlYiJ9LmZhLXRydWNrOmJlZm9yZXtjb250ZW50OiJcZjBkMSJ9LmZhLXRydWNrLWxvYWRpbmc6YmVmb3Jle2NvbnRlbnQ6IlxmNGRlIn0uZmEtdHJ1Y2stbW9uc3RlcjpiZWZvcmV7Y29udGVudDoiXGY2M2IifS5mYS10cnVjay1waWNrdXA6YmVmb3Jle2NvbnRlbnQ6IlxmNjNjIn0uZmEtdHR5OmJlZm9yZXtjb250ZW50OiJcZjFlNCJ9LmZhLXR2OmJlZm9yZXtjb250ZW50OiJcZjI2YyJ9LmZhLXR3aXR0ZXI6YmVmb3Jle2NvbnRlbnQ6IlxmMDk5In0uZmEtdHdpdHRlci1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMDgxIn0uZmEtdW5kbzpiZWZvcmV7Y29udGVudDoiXGYwZTIifS5mYS11bmRvLWFsdDpiZWZvcmV7Y29udGVudDoiXGYyZWEifS5mYS11cGxvYWQ6YmVmb3Jle2NvbnRlbnQ6IlxmMDkzIn0uZmEtdXNkLWNpcmNsZTpiZWZvcmV7Y29udGVudDoiXGYyZTgifS5mYS11c2Qtc3F1YXJlOmJlZm9yZXtjb250ZW50OiJcZjJlOSJ9LmZhLXVzZXI6YmVmb3Jle2NvbnRlbnQ6IlxmMDA3In0uZmEtdXNlci1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmNDA2In0uZmEtdXNlci1jaGVjazpiZWZvcmV7Y29udGVudDoiXGY0ZmMifS5mYS11c2VyLWNpcmNsZTpiZWZvcmV7Y29udGVudDoiXGYyYmQifS5mYS11c2VyLWZyaWVuZHM6YmVmb3Jle2NvbnRlbnQ6IlxmNTAwIn0uZmEtdXNlcnM6YmVmb3Jle2NvbnRlbnQ6IlxmMGMwIn0uZmEtdmlkZW86YmVmb3Jle2NvbnRlbnQ6IlxmMDNkIn0uZmEtdm9pY2VtYWlsOmJlZm9yZXtjb250ZW50OiJcZjg5NyJ9LmZhLXZvbHVtZTpiZWZvcmV7Y29udGVudDoiXGY2YTgifS5mYS12b2x1bWUtZG93bjpiZWZvcmV7Y29udGVudDoiXGYwMjcifS5mYS12b2x1bWUtbXV0ZTpiZWZvcmV7Y29udGVudDoiXGY2YTkifS5mYS12b2x1bWUtb2ZmOmJlZm9yZXtjb250ZW50OiJcZjAyNiJ9LmZhLXZvbHVtZS1zbGFzaDpiZWZvcmV7Y29udGVudDoiXGYyZTIifS5mYS12b2x1bWUtdXA6YmVmb3Jle2NvbnRlbnQ6IlxmMDI4In0uZmEtd2Fnb24tY292ZXJlZDpiZWZvcmV7Y29udGVudDoiXGY4ZWUifS5mYS13YWxraWUtdGFsa2llOmJlZm9yZXtjb250ZW50OiJcZjhlZiJ9LmZhLXdlYmNhbTpiZWZvcmV7Y29udGVudDoiXGY4MzIifS5mYS13ZWJjYW0tc2xhc2g6YmVmb3Jle2NvbnRlbnQ6IlxmODMzIn0uZmEtd2hlZWxjaGFpcjpiZWZvcmV7Y29udGVudDoiXGYxOTMifS5mYS13aWZpOmJlZm9yZXtjb250ZW50OiJcZjFlYiJ9LmZhLXdyZW5jaDpiZWZvcmV7Y29udGVudDoiXGYwYWQifS5mYS15b3V0dWJlOmJlZm9yZXtjb250ZW50OiJcZjE2NyJ9LmZhLXlvdXR1YmUtc3F1YXJlOmJlZm9yZXtjb250ZW50OiJcZjQzMSJ9LmZhLXNoaWVsZC1jaGVjazpiZWZvcmV7Y29udGVudDoiXGYyZjcifS5mYS1saW5rOmJlZm9yZXtjb250ZW50OiJcZjBjMSJ9LmZhLXVubGluazpiZWZvcmV7Y29udGVudDoiXGYxMjcifS5mYS1iYWRnZS1kb2xsYXI6YmVmb3Jle2NvbnRlbnQ6IlxmNjQ1In0uZmEtcGVuLXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYxNGIifS5mYS1jb21tZW50LWFsdC1kb3RzOmJlZm9yZXtjb250ZW50OiJcZjRhMyJ9LmZhLWFycm93LWRvd24tdG8tbGluZTpiZWZvcmV7Y29udGVudDoiXGYzM2QifS5mYS1yaWdodDpiZWZvcmV7Y29udGVudDoiXGYzNTYiO30uc3Itb25seXtib3JkZXI6MDtjbGlwOnJlY3QoMCwwLDAsMCk7aGVpZ2h0OjFweDttYXJnaW46LTFweDtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzowO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjFweH0uc3Itb25seS1mb2N1c2FibGU6YWN0aXZlLC5zci1vbmx5LWZvY3VzYWJsZTpmb2N1c3tjbGlwOmF1dG87aGVpZ2h0OmF1dG87bWFyZ2luOjA7b3ZlcmZsb3c6dmlzaWJsZTtwb3NpdGlvbjpzdGF0aWM7d2lkdGg6YXV0b31AZm9udC1mYWNle2ZvbnQtZmFtaWx5OidGb250IEF3ZXNvbWUgNSBCcmFuZHMnO2ZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtd2VpZ2h0OjQwMDtmb250LWRpc3BsYXk6YmxvY2s7c3JjOnVybCgvL2ZvbnRzLmQyY21lZGlhLmNhL3dlYmZvbnRzL2Rlc2t0b3AtYXdlc29tZS93ZWJmb250cy9mYS1icmFuZHMtNDAwLmVvdCk7c3JjOnVybCgvL2ZvbnRzLmQyY21lZGlhLmNhL3dlYmZvbnRzL2Rlc2t0b3AtYXdlc29tZS93ZWJmb250cy9mYS1icmFuZHMtNDAwLmVvdD8jaWVmaXgpIGZvcm1hdCgiZW1iZWRkZWQtb3BlbnR5cGUiKSx1cmwoLy9mb250cy5kMmNtZWRpYS5jYS93ZWJmb250cy9kZXNrdG9wLWF3ZXNvbWUvd2ViZm9udHMvZmEtYnJhbmRzLTQwMC53b2ZmMikgZm9ybWF0KCJ3b2ZmMiIpLHVybCgvL2ZvbnRzLmQyY21lZGlhLmNhL3dlYmZvbnRzL2Rlc2t0b3AtYXdlc29tZS93ZWJmb250cy9mYS1icmFuZHMtNDAwLndvZmYpIGZvcm1hdCgid29mZiIpLHVybCgvL2ZvbnRzLmQyY21lZGlhLmNhL3dlYmZvbnRzL2Rlc2t0b3AtYXdlc29tZS93ZWJmb250cy9mYS1icmFuZHMtNDAwLnR0ZikgZm9ybWF0KCJ0cnVldHlwZSIpLHVybCgvL2ZvbnRzLmQyY21lZGlhLmNhL3dlYmZvbnRzL2Rlc2t0b3AtYXdlc29tZS93ZWJmb250cy9mYS1icmFuZHMtNDAwLnN2ZyNmb250YXdlc29tZSkgZm9ybWF0KCJzdmciKX0uZmFie2ZvbnQtZmFtaWx5OidGb250IEF3ZXNvbWUgNSBCcmFuZHMnO2ZvbnQtd2VpZ2h0OjQwMH1AZm9udC1mYWNle2ZvbnQtZmFtaWx5OidGb250IEF3ZXNvbWUgNSBQcm8nO2ZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtd2VpZ2h0OjMwMDtmb250LWRpc3BsYXk6YmxvY2s7c3JjOnVybCgvL2ZvbnRzLmQyY21lZGlhLmNhL3dlYmZvbnRzL2Rlc2t0b3AtYXdlc29tZS93ZWJmb250cy9mYS1saWdodC0zMDAuZW90KTtzcmM6dXJsKC8vZm9udHMuZDJjbWVkaWEuY2Evd2ViZm9udHMvZGVza3RvcC1hd2Vzb21lL3dlYmZvbnRzL2ZhLWxpZ2h0LTMwMC5lb3Q\/I2llZml4KSBmb3JtYXQoImVtYmVkZGVkLW9wZW50eXBlIiksdXJsKC8vZm9udHMuZDJjbWVkaWEuY2Evd2ViZm9udHMvZGVza3RvcC1hd2Vzb21lL3dlYmZvbnRzL2ZhLWxpZ2h0LTMwMC53b2ZmMikgZm9ybWF0KCJ3b2ZmMiIpLHVybCgvL2ZvbnRzLmQyY21lZGlhLmNhL3dlYmZvbnRzL2Rlc2t0b3AtYXdlc29tZS93ZWJmb250cy9mYS1saWdodC0zMDAud29mZikgZm9ybWF0KCJ3b2ZmIiksdXJsKC8vZm9udHMuZDJjbWVkaWEuY2Evd2ViZm9udHMvZGVza3RvcC1hd2Vzb21lL3dlYmZvbnRzL2ZhLWxpZ2h0LTMwMC50dGYpIGZvcm1hdCgidHJ1ZXR5cGUiKSx1cmwoLy9mb250cy5kMmNtZWRpYS5jYS93ZWJmb250cy9kZXNrdG9wLWF3ZXNvbWUvd2ViZm9udHMvZmEtbGlnaHQtMzAwLnN2ZyNmb250YXdlc29tZSkgZm9ybWF0KCJzdmciKX0uZmFse2ZvbnQtZmFtaWx5OidGb250IEF3ZXNvbWUgNSBQcm8nO2ZvbnQtd2VpZ2h0OjMwMH1AZm9udC1mYWNle2ZvbnQtZmFtaWx5OidGb250IEF3ZXNvbWUgNSBQcm8nO2ZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtd2VpZ2h0OjQwMDtmb250LWRpc3BsYXk6YmxvY2s7c3JjOnVybCgvL2ZvbnRzLmQyY21lZGlhLmNhL3dlYmZvbnRzL2Rlc2t0b3AtYXdlc29tZS93ZWJmb250cy9mYS1yZWd1bGFyLTQwMC5lb3QpO3NyYzp1cmwoLy9mb250cy5kMmNtZWRpYS5jYS93ZWJmb250cy9kZXNrdG9wLWF3ZXNvbWUvd2ViZm9udHMvZmEtcmVndWxhci00MDAuZW90PyNpZWZpeCkgZm9ybWF0KCJlbWJlZGRlZC1vcGVudHlwZSIpLHVybCgvL2ZvbnRzLmQyY21lZGlhLmNhL3dlYmZvbnRzL2Rlc2t0b3AtYXdlc29tZS93ZWJmb250cy9mYS1yZWd1bGFyLTQwMC53b2ZmMikgZm9ybWF0KCJ3b2ZmMiIpLHVybCgvL2ZvbnRzLmQyY21lZGlhLmNhL3dlYmZvbnRzL2Rlc2t0b3AtYXdlc29tZS93ZWJmb250cy9mYS1yZWd1bGFyLTQwMC53b2ZmKSBmb3JtYXQoIndvZmYiKSx1cmwoLy9mb250cy5kMmNtZWRpYS5jYS93ZWJmb250cy9kZXNrdG9wLWF3ZXNvbWUvd2ViZm9udHMvZmEtcmVndWxhci00MDAudHRmKSBmb3JtYXQoInRydWV0eXBlIiksdXJsKC8vZm9udHMuZDJjbWVkaWEuY2Evd2ViZm9udHMvZGVza3RvcC1hd2Vzb21lL3dlYmZvbnRzL2ZhLXJlZ3VsYXItNDAwLnN2ZyNmb250YXdlc29tZSkgZm9ybWF0KCJzdmciKX0uZmFye2ZvbnQtZmFtaWx5OidGb250IEF3ZXNvbWUgNSBQcm8nO2ZvbnQtd2VpZ2h0OjQwMH1AZm9udC1mYWNle2ZvbnQtZmFtaWx5OidGb250IEF3ZXNvbWUgNSBQcm8nO2ZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtd2VpZ2h0OjkwMDtmb250LWRpc3BsYXk6YmxvY2s7c3JjOnVybCgvL2ZvbnRzLmQyY21lZGlhLmNhL3dlYmZvbnRzL2Rlc2t0b3AtYXdlc29tZS93ZWJmb250cy9mYS1zb2xpZC05MDAuZW90KTtzcmM6dXJsKC8vZm9udHMuZDJjbWVkaWEuY2Evd2ViZm9udHMvZGVza3RvcC1hd2Vzb21lL3dlYmZvbnRzL2ZhLXNvbGlkLTkwMC5lb3Q\/I2llZml4KSBmb3JtYXQoImVtYmVkZGVkLW9wZW50eXBlIiksdXJsKC8vZm9udHMuZDJjbWVkaWEuY2Evd2ViZm9udHMvZGVza3RvcC1hd2Vzb21lL3dlYmZvbnRzL2ZhLXNvbGlkLTkwMC53b2ZmMikgZm9ybWF0KCJ3b2ZmMiIpLHVybCgvL2ZvbnRzLmQyY21lZGlhLmNhL3dlYmZvbnRzL2Rlc2t0b3AtYXdlc29tZS93ZWJmb250cy9mYS1zb2xpZC05MDAud29mZikgZm9ybWF0KCJ3b2ZmIiksdXJsKC8vZm9udHMuZDJjbWVkaWEuY2Evd2ViZm9udHMvZGVza3RvcC1hd2Vzb21lL3dlYmZvbnRzL2ZhLXNvbGlkLTkwMC50dGYpIGZvcm1hdCgidHJ1ZXR5cGUiKSx1cmwoLy9mb250cy5kMmNtZWRpYS5jYS93ZWJmb250cy9kZXNrdG9wLWF3ZXNvbWUvd2ViZm9udHMvZmEtc29saWQtOTAwLnN2ZyNmb250YXdlc29tZSkgZm9ybWF0KCJzdmciKX0uZmEsLmZhc3tmb250LWZhbWlseTonRm9udCBBd2Vzb21lIDUgUHJvJyFpbXBvcnRhbnQ7Zm9udC13ZWlnaHQ6OTAwfUBmb250LWZhY2V7Zm9udC1kaXNwbGF5OnN3YXA7Zm9udC1mYW1pbHk6J0QyQ0N1c3RvbUljb25zJztzcmM6bG9jYWwoRDJDQ3VzdG9tSWNvbnMpLHVybCgvL2ZvbnRzLmQyY21lZGlhLmNhL3dlYmZvbnRzL2QyYy1jdXN0b20taWNvbnMuZW90PyNpZWZpeCkgZm9ybWF0KCJlbWJlZGRlZC1vcGVudHlwZSIpLHVybCgvL2ZvbnRzLmQyY21lZGlhLmNhL3dlYmZvbnRzL2QyYy1jdXN0b20taWNvbnMud29mZikgZm9ybWF0KCJ3b2ZmIiksdXJsKC8vZm9udHMuZDJjbWVkaWEuY2Evd2ViZm9udHMvZDJjLWN1c3RvbS1pY29ucy50dGYpIGZvcm1hdCgidHJ1ZXR5cGUiKSx1cmwoLy9mb250cy5kMmNtZWRpYS5jYS93ZWJmb250cy9kMmMtY3VzdG9tLWljb25zLnN2ZyNzdmdGb250TmFtZSkgZm9ybWF0KCJzdmciKTtmb250LXdlaWdodDo0MDA7Zm9udC1zdHlsZTpub3JtYWx9LmZhLXgtdHdpdHRlcjpiZWZvcmV7Zm9udC1mYW1pbHk6J0QyQ0N1c3RvbUljb25zJyxzZXJpZjtjb250ZW50OiJcZTkwMCI7ZGlzcGxheTpibG9jaztmb250LXdlaWdodDo0MDA7Zm9udC1zdHlsZTpub3JtYWx9Ci8qKiAvY3NzL2ZvbnQtYXdlc29tZS5jb250ZW50Lm1pbi5jc3MgKiovCi5mYS01MDBweDpiZWZvcmV7Y29udGVudDoiXGYyNmUifS5mYS1hY2Nlc3NpYmxlLWljb246YmVmb3Jle2NvbnRlbnQ6IlxmMzY4In0uZmEtYWNjdXNvZnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMzY5In0uZmEtYWRkcmVzcy1ib29rOmJlZm9yZXtjb250ZW50OiJcZjJiOSJ9LmZhLWFkZHJlc3MtY2FyZDpiZWZvcmV7Y29udGVudDoiXGYyYmIifS5mYS1hZGp1c3Q6YmVmb3Jle2NvbnRlbnQ6IlxmMDQyIn0uZmEtYWRuOmJlZm9yZXtjb250ZW50OiJcZjE3MCJ9LmZhLWFkdmVyc2FsOmJlZm9yZXtjb250ZW50OiJcZjM2YSJ9LmZhLWFmZmlsaWF0ZXRoZW1lOmJlZm9yZXtjb250ZW50OiJcZjM2YiJ9LmZhLWFsZ29saWE6YmVmb3Jle2NvbnRlbnQ6IlxmMzZjIn0uZmEtYWxpZ24tY2VudGVyOmJlZm9yZXtjb250ZW50OiJcZjAzNyJ9LmZhLWFsaWduLWp1c3RpZnk6YmVmb3Jle2NvbnRlbnQ6IlxmMDM5In0uZmEtYWxpZ24tbGVmdDpiZWZvcmV7Y29udGVudDoiXGYwMzYifS5mYS1hbGlnbi1yaWdodDpiZWZvcmV7Y29udGVudDoiXGYwMzgifS5mYS1hbWF6b246YmVmb3Jle2NvbnRlbnQ6IlxmMjcwIn0uZmEtYW1hem9uLXBheTpiZWZvcmV7Y29udGVudDoiXGY0MmMifS5mYS1hbWJ1bGFuY2U6YmVmb3Jle2NvbnRlbnQ6IlxmMGY5In0uZmEtYW1lcmljYW4tc2lnbi1sYW5ndWFnZS1pbnRlcnByZXRpbmc6YmVmb3Jle2NvbnRlbnQ6IlxmMmEzIn0uZmEtYW1pbGlhOmJlZm9yZXtjb250ZW50OiJcZjM2ZCJ9LmZhLWFuY2hvcjpiZWZvcmV7Y29udGVudDoiXGYxM2QifS5mYS1hbmRyb2lkOmJlZm9yZXtjb250ZW50OiJcZjE3YiJ9LmZhLWFuZ2VsbGlzdDpiZWZvcmV7Y29udGVudDoiXGYyMDkifS5mYS1hbmdsZS1kb3VibGUtZG93bjpiZWZvcmV7Y29udGVudDoiXGYxMDMifS5mYS1hbmdsZS1kb3VibGUtbGVmdDpiZWZvcmV7Y29udGVudDoiXGYxMDAifS5mYS1hbmdsZS1kb3VibGUtcmlnaHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMTAxIn0uZmEtYW5nbGUtZG91YmxlLXVwOmJlZm9yZXtjb250ZW50OiJcZjEwMiJ9LmZhLWFuZ2xlLWRvd246YmVmb3Jle2NvbnRlbnQ6IlxmMTA3In0uZmEtYW5nbGUtbGVmdDpiZWZvcmV7Y29udGVudDoiXGYxMDQifS5mYS1hbmdsZS1yaWdodDpiZWZvcmV7Y29udGVudDoiXGYxMDUifS5mYS1hbmdsZS11cDpiZWZvcmV7Y29udGVudDoiXGYxMDYifS5mYS1hbmdyeWNyZWF0aXZlOmJlZm9yZXtjb250ZW50OiJcZjM2ZSJ9LmZhLWFuZ3VsYXI6YmVmb3Jle2NvbnRlbnQ6IlxmNDIwIn0uZmEtYXBwLXN0b3JlOmJlZm9yZXtjb250ZW50OiJcZjM2ZiJ9LmZhLWFwcC1zdG9yZS1pb3M6YmVmb3Jle2NvbnRlbnQ6IlxmMzcwIn0uZmEtYXBwZXI6YmVmb3Jle2NvbnRlbnQ6IlxmMzcxIn0uZmEtYXBwbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMTc5In0uZmEtYXBwbGUtcGF5OmJlZm9yZXtjb250ZW50OiJcZjQxNSJ9LmZhLWFyY2hpdmU6YmVmb3Jle2NvbnRlbnQ6IlxmMTg3In0uZmEtYXJyb3ctYWx0LWNpcmNsZS1kb3duOmJlZm9yZXtjb250ZW50OiJcZjM1OCJ9LmZhLWFycm93LWFsdC1jaXJjbGUtbGVmdDpiZWZvcmV7Y29udGVudDoiXGYzNTkifS5mYS1hcnJvdy1hbHQtY2lyY2xlLXJpZ2h0OmJlZm9yZXtjb250ZW50OiJcZjM1YSJ9LmZhLWFycm93LWFsdC1jaXJjbGUtdXA6YmVmb3Jle2NvbnRlbnQ6IlxmMzViIn0uZmEtYXJyb3ctY2lyY2xlLWRvd246YmVmb3Jle2NvbnRlbnQ6IlxmMGFiIn0uZmEtYXJyb3ctY2lyY2xlLWxlZnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMGE4In0uZmEtYXJyb3ctY2lyY2xlLXJpZ2h0OmJlZm9yZXtjb250ZW50OiJcZjBhOSJ9LmZhLWFycm93LWNpcmNsZS11cDpiZWZvcmV7Y29udGVudDoiXGYwYWEifS5mYS1hcnJvdy1kb3duOmJlZm9yZXtjb250ZW50OiJcZjA2MyJ9LmZhLWFycm93LWxlZnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMDYwIn0uZmEtYXJyb3ctcmlnaHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMDYxIn0uZmEtYXJyb3ctdXA6YmVmb3Jle2NvbnRlbnQ6IlxmMDYyIn0uZmEtYXJyb3dzLWFsdDpiZWZvcmV7Y29udGVudDoiXGYwYjIifS5mYS1hcnJvd3MtYWx0LWg6YmVmb3Jle2NvbnRlbnQ6IlxmMzM3In0uZmEtYXJyb3dzLWFsdC12OmJlZm9yZXtjb250ZW50OiJcZjMzOCJ9LmZhLWFzc2lzdGl2ZS1saXN0ZW5pbmctc3lzdGVtczpiZWZvcmV7Y29udGVudDoiXGYyYTIifS5mYS1hc3RlcmlzazpiZWZvcmV7Y29udGVudDoiXGYwNjkifS5mYS1hc3ltbWV0cmlrOmJlZm9yZXtjb250ZW50OiJcZjM3MiJ9LmZhLWF0OmJlZm9yZXtjb250ZW50OiJcZjFmYSJ9LmZhLWF1ZGlibGU6YmVmb3Jle2NvbnRlbnQ6IlxmMzczIn0uZmEtYXVkaW8tZGVzY3JpcHRpb246YmVmb3Jle2NvbnRlbnQ6IlxmMjllIn0uZmEtYXV0b3ByZWZpeGVyOmJlZm9yZXtjb250ZW50OiJcZjQxYyJ9LmZhLWF2aWFuZXg6YmVmb3Jle2NvbnRlbnQ6IlxmMzc0In0uZmEtYXZpYXRvOmJlZm9yZXtjb250ZW50OiJcZjQyMSJ9LmZhLWF3czpiZWZvcmV7Y29udGVudDoiXGYzNzUifS5mYS1iYWNrd2FyZDpiZWZvcmV7Y29udGVudDoiXGYwNGEifS5mYS1iYWxhbmNlLXNjYWxlOmJlZm9yZXtjb250ZW50OiJcZjI0ZSJ9LmZhLWJhbjpiZWZvcmV7Y29udGVudDoiXGYwNWUifS5mYS1iYW5kY2FtcDpiZWZvcmV7Y29udGVudDoiXGYyZDUifS5mYS1iYXJjb2RlOmJlZm9yZXtjb250ZW50OiJcZjAyYSJ9LmZhLWJhcnM6YmVmb3Jle2NvbnRlbnQ6IlxmMGM5In0uZmEtYmFzZWJhbGwtYmFsbDpiZWZvcmV7Y29udGVudDoiXGY0MzMifS5mYS1iYXNrZXRiYWxsLWJhbGw6YmVmb3Jle2NvbnRlbnQ6IlxmNDM0In0uZmEtYmF0aDpiZWZvcmV7Y29udGVudDoiXGYyY2QifS5mYS1iYXR0ZXJ5LWVtcHR5OmJlZm9yZXtjb250ZW50OiJcZjI0NCJ9LmZhLWJhdHRlcnktZnVsbDpiZWZvcmV7Y29udGVudDoiXGYyNDAifS5mYS1iYXR0ZXJ5LWhhbGY6YmVmb3Jle2NvbnRlbnQ6IlxmMjQyIn0uZmEtYmF0dGVyeS1xdWFydGVyOmJlZm9yZXtjb250ZW50OiJcZjI0MyJ9LmZhLWJhdHRlcnktdGhyZWUtcXVhcnRlcnM6YmVmb3Jle2NvbnRlbnQ6IlxmMjQxIn0uZmEtYmVkOmJlZm9yZXtjb250ZW50OiJcZjIzNiJ9LmZhLWJlZXI6YmVmb3Jle2NvbnRlbnQ6IlxmMGZjIn0uZmEtYmVoYW5jZTpiZWZvcmV7Y29udGVudDoiXGYxYjQifS5mYS1iZWhhbmNlLXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYxYjUifS5mYS1iZWxsOmJlZm9yZXtjb250ZW50OiJcZjBmMyJ9LmZhLWJlbGwtc2xhc2g6YmVmb3Jle2NvbnRlbnQ6IlxmMWY2In0uZmEtYmljeWNsZTpiZWZvcmV7Y29udGVudDoiXGYyMDYifS5mYS1iaW1vYmplY3Q6YmVmb3Jle2NvbnRlbnQ6IlxmMzc4In0uZmEtYmlub2N1bGFyczpiZWZvcmV7Y29udGVudDoiXGYxZTUifS5mYS1iaXJ0aGRheS1jYWtlOmJlZm9yZXtjb250ZW50OiJcZjFmZCJ9LmZhLWJpdGJ1Y2tldDpiZWZvcmV7Y29udGVudDoiXGYxNzEifS5mYS1iaXRjb2luOmJlZm9yZXtjb250ZW50OiJcZjM3OSJ9LmZhLWJpdHk6YmVmb3Jle2NvbnRlbnQ6IlxmMzdhIn0uZmEtYmxhY2stdGllOmJlZm9yZXtjb250ZW50OiJcZjI3ZSJ9LmZhLWJsYWNrYmVycnk6YmVmb3Jle2NvbnRlbnQ6IlxmMzdiIn0uZmEtYmxpbmQ6YmVmb3Jle2NvbnRlbnQ6IlxmMjlkIn0uZmEtYmxvZ2dlcjpiZWZvcmV7Y29udGVudDoiXGYzN2MifS5mYS1ibG9nZ2VyLWI6YmVmb3Jle2NvbnRlbnQ6IlxmMzdkIn0uZmEtYmx1ZXRvb3RoOmJlZm9yZXtjb250ZW50OiJcZjI5MyJ9LmZhLWJsdWV0b290aC1iOmJlZm9yZXtjb250ZW50OiJcZjI5NCJ9LmZhLWJvbGQ6YmVmb3Jle2NvbnRlbnQ6IlxmMDMyIn0uZmEtYm9sdDpiZWZvcmV7Y29udGVudDoiXGYwZTcifS5mYS1ib21iOmJlZm9yZXtjb250ZW50OiJcZjFlMiJ9LmZhLWJvb2s6YmVmb3Jle2NvbnRlbnQ6IlxmMDJkIn0uZmEtYm9va21hcms6YmVmb3Jle2NvbnRlbnQ6IlxmMDJlIn0uZmEtYm93bGluZy1iYWxsOmJlZm9yZXtjb250ZW50OiJcZjQzNiJ9LmZhLWJyYWlsbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMmExIn0uZmEtYnJpZWZjYXNlOmJlZm9yZXtjb250ZW50OiJcZjBiMSJ9LmZhLWJ0YzpiZWZvcmV7Y29udGVudDoiXGYxNWEifS5mYS1idWc6YmVmb3Jle2NvbnRlbnQ6IlxmMTg4In0uZmEtYnVpbGRpbmc6YmVmb3Jle2NvbnRlbnQ6IlxmMWFkIn0uZmEtYnVsbGhvcm46YmVmb3Jle2NvbnRlbnQ6IlxmMGExIn0uZmEtYnVsbHNleWU6YmVmb3Jle2NvbnRlbnQ6IlxmMTQwIn0uZmEtYnVyb21vYmVsZXhwZXJ0ZTpiZWZvcmV7Y29udGVudDoiXGYzN2YifS5mYS1idXM6YmVmb3Jle2NvbnRlbnQ6IlxmMjA3In0uZmEtYnV5c2VsbGFkczpiZWZvcmV7Y29udGVudDoiXGYyMGQifS5mYS1jYWxjdWxhdG9yOmJlZm9yZXtjb250ZW50OiJcZjFlYyJ9LmZhLWNhbGVuZGFyOmJlZm9yZXtjb250ZW50OiJcZjEzMyJ9LmZhLWNhbGVuZGFyLWFsdDpiZWZvcmV7Y29udGVudDoiXGYwNzMifS5mYS1jYWxlbmRhci1jaGVjazpiZWZvcmV7Y29udGVudDoiXGYyNzQifS5mYS1jYWxlbmRhci1taW51czpiZWZvcmV7Y29udGVudDoiXGYyNzIifS5mYS1jYWxlbmRhci1wbHVzOmJlZm9yZXtjb250ZW50OiJcZjI3MSJ9LmZhLWNhbGVuZGFyLXRpbWVzOmJlZm9yZXtjb250ZW50OiJcZjI3MyJ9LmZhLWNhbWVyYTpiZWZvcmV7Y29udGVudDoiXGYwMzAifS5mYS1jYW1lcmEtcmV0cm86YmVmb3Jle2NvbnRlbnQ6IlxmMDgzIn0uZmEtY2FyOmJlZm9yZSwuZmEtYXV0b21vYmlsZTpiZWZvcmV7Y29udGVudDoiXGYxYjkifS5mYS1jYXJldC1kb3duOmJlZm9yZXtjb250ZW50OiJcZjBkNyJ9LmZhLWNhcmV0LWxlZnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMGQ5In0uZmEtY2FyZXQtcmlnaHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMGRhIn0uZmEtY2FyZXQtc3F1YXJlLWRvd246YmVmb3Jle2NvbnRlbnQ6IlxmMTUwIn0uZmEtY2FyZXQtc3F1YXJlLWxlZnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMTkxIn0uZmEtY2FyZXQtc3F1YXJlLXJpZ2h0OmJlZm9yZXtjb250ZW50OiJcZjE1MiJ9LmZhLWNhcmV0LXNxdWFyZS11cDpiZWZvcmV7Y29udGVudDoiXGYxNTEifS5mYS1jYXJldC11cDpiZWZvcmV7Y29udGVudDoiXGYwZDgifS5mYS1jYXJ0LWFycm93LWRvd246YmVmb3Jle2NvbnRlbnQ6IlxmMjE4In0uZmEtY2FydC1wbHVzOmJlZm9yZXtjb250ZW50OiJcZjIxNyJ9LmZhLWNjLWFtYXpvbi1wYXk6YmVmb3Jle2NvbnRlbnQ6IlxmNDJkIn0uZmEtY2MtYW1leDpiZWZvcmV7Y29udGVudDoiXGYxZjMifS5mYS1jYy1hcHBsZS1wYXk6YmVmb3Jle2NvbnRlbnQ6IlxmNDE2In0uZmEtY2MtZGluZXJzLWNsdWI6YmVmb3Jle2NvbnRlbnQ6IlxmMjRjIn0uZmEtY2MtZGlzY292ZXI6YmVmb3Jle2NvbnRlbnQ6IlxmMWYyIn0uZmEtY2MtamNiOmJlZm9yZXtjb250ZW50OiJcZjI0YiJ9LmZhLWNjLW1hc3RlcmNhcmQ6YmVmb3Jle2NvbnRlbnQ6IlxmMWYxIn0uZmEtY2MtcGF5cGFsOmJlZm9yZXtjb250ZW50OiJcZjFmNCJ9LmZhLWNjLXN0cmlwZTpiZWZvcmV7Y29udGVudDoiXGYxZjUifS5mYS1jYy12aXNhOmJlZm9yZXtjb250ZW50OiJcZjFmMCJ9LmZhLWNlbnRlcmNvZGU6YmVmb3Jle2NvbnRlbnQ6IlxmMzgwIn0uZmEtY2VydGlmaWNhdGU6YmVmb3Jle2NvbnRlbnQ6IlxmMGEzIn0uZmEtY2hhcnQtYXJlYTpiZWZvcmV7Y29udGVudDoiXGYxZmUifS5mYS1jaGFydC1iYXI6YmVmb3Jle2NvbnRlbnQ6IlxmMDgwIn0uZmEtY2hhcnQtbGluZTpiZWZvcmV7Y29udGVudDoiXGYyMDEifS5mYS1jaGFydC1waWU6YmVmb3Jle2NvbnRlbnQ6IlxmMjAwIn0uZmEtY2hlY2s6YmVmb3Jle2NvbnRlbnQ6IlxmMDBjIn0uZmEtY2hlY2stY2lyY2xlOmJlZm9yZXtjb250ZW50OiJcZjA1OCJ9LmZhLWNoZWNrLXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYxNGEifS5mYS1jaGVzczpiZWZvcmV7Y29udGVudDoiXGY0MzkifS5mYS1jaGVzcy1iaXNob3A6YmVmb3Jle2NvbnRlbnQ6IlxmNDNhIn0uZmEtY2hlc3MtYm9hcmQ6YmVmb3Jle2NvbnRlbnQ6IlxmNDNjIn0uZmEtY2hlc3Mta2luZzpiZWZvcmV7Y29udGVudDoiXGY0M2YifS5mYS1jaGVzcy1rbmlnaHQ6YmVmb3Jle2NvbnRlbnQ6IlxmNDQxIn0uZmEtY2hlc3MtcGF3bjpiZWZvcmV7Y29udGVudDoiXGY0NDMifS5mYS1jaGVzcy1xdWVlbjpiZWZvcmV7Y29udGVudDoiXGY0NDUifS5mYS1jaGVzcy1yb29rOmJlZm9yZXtjb250ZW50OiJcZjQ0NyJ9LmZhLWNoZXZyb24tY2lyY2xlLWRvd246YmVmb3Jle2NvbnRlbnQ6IlxmMTNhIn0uZmEtY2hldnJvbi1jaXJjbGUtbGVmdDpiZWZvcmV7Y29udGVudDoiXGYxMzcifS5mYS1jaGV2cm9uLWNpcmNsZS1yaWdodDpiZWZvcmV7Y29udGVudDoiXGYxMzgifS5mYS1jaGV2cm9uLWNpcmNsZS11cDpiZWZvcmV7Y29udGVudDoiXGYxMzkifS5mYS1jaGV2cm9uLWRvd246YmVmb3Jle2NvbnRlbnQ6IlxmMDc4In0uZmEtY2hldnJvbi1sZWZ0OmJlZm9yZXtjb250ZW50OiJcZjA1MyJ9LmZhLWNoZXZyb24tcmlnaHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMDU0In0uZmEtY2hldnJvbi11cDpiZWZvcmV7Y29udGVudDoiXGYwNzcifS5mYS1jaGlsZDpiZWZvcmV7Y29udGVudDoiXGYxYWUifS5mYS1jaHJvbWU6YmVmb3Jle2NvbnRlbnQ6IlxmMjY4In0uZmEtY2lyY2xlOmJlZm9yZXtjb250ZW50OiJcZjExMSJ9LmZhLWNpcmNsZS1ub3RjaDpiZWZvcmV7Y29udGVudDoiXGYxY2UifS5mYS1jbGlwYm9hcmQ6YmVmb3Jle2NvbnRlbnQ6IlxmMzI4In0uZmEtY2xvY2s6YmVmb3Jle2NvbnRlbnQ6IlxmMDE3In0uZmEtY2xvbmU6YmVmb3Jle2NvbnRlbnQ6IlxmMjRkIn0uZmEtY2xvc2VkLWNhcHRpb25pbmc6YmVmb3Jle2NvbnRlbnQ6IlxmMjBhIn0uZmEtY2xvdWQ6YmVmb3Jle2NvbnRlbnQ6IlxmMGMyIn0uZmEtY2xvdWQtZG93bmxvYWQtYWx0OmJlZm9yZXtjb250ZW50OiJcZjM4MSJ9LmZhLWNsb3VkLXVwbG9hZC1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMzgyIn0uZmEtY2xvdWRzY2FsZTpiZWZvcmV7Y29udGVudDoiXGYzODMifS5mYS1jbG91ZHNtaXRoOmJlZm9yZXtjb250ZW50OiJcZjM4NCJ9LmZhLWNsb3VkdmVyc2lmeTpiZWZvcmV7Y29udGVudDoiXGYzODUifS5mYS1jb2RlOmJlZm9yZXtjb250ZW50OiJcZjEyMSJ9LmZhLWNvZGUtYnJhbmNoOmJlZm9yZXtjb250ZW50OiJcZjEyNiJ9LmZhLWNvZGVwZW46YmVmb3Jle2NvbnRlbnQ6IlxmMWNiIn0uZmEtY29kaWVwaWU6YmVmb3Jle2NvbnRlbnQ6IlxmMjg0In0uZmEtY29mZmVlOmJlZm9yZXtjb250ZW50OiJcZjBmNCJ9LmZhLWNvZzpiZWZvcmV7Y29udGVudDoiXGYwMTMifS5mYS1jb2dzOmJlZm9yZXtjb250ZW50OiJcZjA4NSJ9LmZhLWdlYXJzOmJlZm9yZXtjb250ZW50OiJcZjA4NSJ9LmZhLWNvbHVtbnM6YmVmb3Jle2NvbnRlbnQ6IlxmMGRiIn0uZmEtY29tbWVudDpiZWZvcmV7Y29udGVudDoiXGYwNzUifS5mYS1jb21tZW50LWFsdDpiZWZvcmV7Y29udGVudDoiXGYyN2EifS5mYS1jb21tZW50czpiZWZvcmV7Y29udGVudDoiXGYwODYifS5mYS1jb21wYXNzOmJlZm9yZXtjb250ZW50OiJcZjE0ZSJ9LmZhLWNvbXByZXNzOmJlZm9yZXtjb250ZW50OiJcZjA2NiJ9LmZhLWNvbm5lY3RkZXZlbG9wOmJlZm9yZXtjb250ZW50OiJcZjIwZSJ9LmZhLWNvbnRhbzpiZWZvcmV7Y29udGVudDoiXGYyNmQifS5mYS1jb3B5OmJlZm9yZXtjb250ZW50OiJcZjBjNSJ9LmZhLWNvcHlyaWdodDpiZWZvcmV7Y29udGVudDoiXGYxZjkifS5mYS1jcGFuZWw6YmVmb3Jle2NvbnRlbnQ6IlxmMzg4In0uZmEtY3JlYXRpdmUtY29tbW9uczpiZWZvcmV7Y29udGVudDoiXGYyNWUifS5mYS1jcmVkaXQtY2FyZDpiZWZvcmV7Y29udGVudDoiXGYwOWQifS5mYS1jcm9wOmJlZm9yZXtjb250ZW50OiJcZjEyNSJ9LmZhLWNyb3NzaGFpcnM6YmVmb3Jle2NvbnRlbnQ6IlxmMDViIn0uZmEtY3NzMzpiZWZvcmV7Y29udGVudDoiXGYxM2MifS5mYS1jc3MzLWFsdDpiZWZvcmV7Y29udGVudDoiXGYzOGIifS5mYS1jdWJlOmJlZm9yZXtjb250ZW50OiJcZjFiMiJ9LmZhLWN1YmVzOmJlZm9yZXtjb250ZW50OiJcZjFiMyJ9LmZhLWN1dDpiZWZvcmV7Y29udGVudDoiXGYwYzQifS5mYS1jdXR0bGVmaXNoOmJlZm9yZXtjb250ZW50OiJcZjM4YyJ9LmZhLWQtYW5kLWQ6YmVmb3Jle2NvbnRlbnQ6IlxmMzhkIn0uZmEtZGFzaGN1YmU6YmVmb3Jle2NvbnRlbnQ6IlxmMjEwIn0uZmEtZGF0YWJhc2U6YmVmb3Jle2NvbnRlbnQ6IlxmMWMwIn0uZmEtZGVhZjpiZWZvcmV7Y29udGVudDoiXGYyYTQifS5mYS1kZWxpY2lvdXM6YmVmb3Jle2NvbnRlbnQ6IlxmMWE1In0uZmEtZGVwbG95ZG9nOmJlZm9yZXtjb250ZW50OiJcZjM4ZSJ9LmZhLWRlc2twcm86YmVmb3Jle2NvbnRlbnQ6IlxmMzhmIn0uZmEtZGVza3RvcDpiZWZvcmV7Y29udGVudDoiXGYxMDgifS5mYS1kZXZpYW50YXJ0OmJlZm9yZXtjb250ZW50OiJcZjFiZCJ9LmZhLWRpZ2c6YmVmb3Jle2NvbnRlbnQ6IlxmMWE2In0uZmEtZGlnaXRhbC1vY2VhbjpiZWZvcmV7Y29udGVudDoiXGYzOTEifS5mYS1kaXNjb3JkOmJlZm9yZXtjb250ZW50OiJcZjM5MiJ9LmZhLWRpc2NvdXJzZTpiZWZvcmV7Y29udGVudDoiXGYzOTMifS5mYS1kb2NodWI6YmVmb3Jle2NvbnRlbnQ6IlxmMzk0In0uZmEtZG9ja2VyOmJlZm9yZXtjb250ZW50OiJcZjM5NSJ9LmZhLWRvbGxhci1zaWduOmJlZm9yZSwuZmEtZG9sbGFyOmJlZm9yZSwuZmEtdXNkOmJlZm9yZXtjb250ZW50OiJcZjE1NSJ9LmZhLWRvdC1jaXJjbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMTkyIn0uZmEtZG93bmxvYWQ6YmVmb3Jle2NvbnRlbnQ6IlxmMDE5In0uZmEtZHJhZnQyZGlnaXRhbDpiZWZvcmV7Y29udGVudDoiXGYzOTYifS5mYS1kcmliYmJsZTpiZWZvcmV7Y29udGVudDoiXGYxN2QifS5mYS1kcmliYmJsZS1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMzk3In0uZmEtZHJvcGJveDpiZWZvcmV7Y29udGVudDoiXGYxNmIifS5mYS1kcnVwYWw6YmVmb3Jle2NvbnRlbnQ6IlxmMWE5In0uZmEtZHlhbG9nOmJlZm9yZXtjb250ZW50OiJcZjM5OSJ9LmZhLWVhcmx5YmlyZHM6YmVmb3Jle2NvbnRlbnQ6IlxmMzlhIn0uZmEtZWRnZTpiZWZvcmV7Y29udGVudDoiXGYyODIifS5mYS1lZGl0OmJlZm9yZXtjb250ZW50OiJcZjA0NCJ9LmZhLWVqZWN0OmJlZm9yZXtjb250ZW50OiJcZjA1MiJ9LmZhLWVsZW1lbnRvcjpiZWZvcmV7Y29udGVudDoiXGY0MzAifS5mYS1lbGxpcHNpcy1oOmJlZm9yZXtjb250ZW50OiJcZjE0MSJ9LmZhLWVsbGlwc2lzLXY6YmVmb3Jle2NvbnRlbnQ6IlxmMTQyIn0uZmEtZW1iZXI6YmVmb3Jle2NvbnRlbnQ6IlxmNDIzIn0uZmEtZW1waXJlOmJlZm9yZXtjb250ZW50OiJcZjFkMSJ9LmZhLWVudmVsb3BlOmJlZm9yZXtjb250ZW50OiJcZjBlMCJ9LmZhLWVudmVsb3BlLW9wZW46YmVmb3Jle2NvbnRlbnQ6IlxmMmI2In0uZmEtZW52ZWxvcGUtc3F1YXJlOmJlZm9yZXtjb250ZW50OiJcZjE5OSJ9LmZhLWVudmlyYTpiZWZvcmV7Y29udGVudDoiXGYyOTkifS5mYS1lcmFzZXI6YmVmb3Jle2NvbnRlbnQ6IlxmMTJkIn0uZmEtZXJsYW5nOmJlZm9yZXtjb250ZW50OiJcZjM5ZCJ9LmZhLWV0aGVyZXVtOmJlZm9yZXtjb250ZW50OiJcZjQyZSJ9LmZhLWV0c3k6YmVmb3Jle2NvbnRlbnQ6IlxmMmQ3In0uZmEtZXVyby1zaWduOmJlZm9yZXtjb250ZW50OiJcZjE1MyJ9LmZhLWV4Y2hhbmdlLWFsdDpiZWZvcmV7Y29udGVudDoiXGYzNjIifS5mYS1leGNsYW1hdGlvbjpiZWZvcmV7Y29udGVudDoiXGYxMmEifS5mYS1leGNsYW1hdGlvbi1jaXJjbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMDZhIn0uZmEtZXhjbGFtYXRpb24tdHJpYW5nbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMDcxIn0uZmEtZXhwYW5kOmJlZm9yZXtjb250ZW50OiJcZjA2NSJ9LmZhLWV4cGFuZC1hcnJvd3MtYWx0OmJlZm9yZXtjb250ZW50OiJcZjMxZSJ9LmZhLWV4cGVkaXRlZHNzbDpiZWZvcmV7Y29udGVudDoiXGYyM2UifS5mYS1leHRlcm5hbC1saW5rLWFsdDpiZWZvcmV7Y29udGVudDoiXGYzNWQifS5mYS1leHRlcm5hbC1saW5rLXNxdWFyZS1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMzYwIn0uZmEtZXllOmJlZm9yZXtjb250ZW50OiJcZjA2ZSJ9LmZhLWV5ZS1kcm9wcGVyOmJlZm9yZXtjb250ZW50OiJcZjFmYiJ9LmZhLWV5ZS1zbGFzaDpiZWZvcmV7Y29udGVudDoiXGYwNzAifS5mYS1mYWNlYm9vazpiZWZvcmV7Y29udGVudDoiXGYwOWEifS5mYS1mYWNlYm9vay1mOmJlZm9yZXtjb250ZW50OiJcZjM5ZSJ9LmZhLWZhY2Vib29rLW1lc3NlbmdlcjpiZWZvcmV7Y29udGVudDoiXGYzOWYifS5mYS1mYWNlYm9vay1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMDgyIn0uZmEtZmFzdC1iYWNrd2FyZDpiZWZvcmV7Y29udGVudDoiXGYwNDkifS5mYS1mYXN0LWZvcndhcmQ6YmVmb3Jle2NvbnRlbnQ6IlxmMDUwIn0uZmEtZmF4OmJlZm9yZXtjb250ZW50OiJcZjFhYyJ9LmZhLWZlbWFsZTpiZWZvcmV7Y29udGVudDoiXGYxODIifS5mYS1maWdodGVyLWpldDpiZWZvcmV7Y29udGVudDoiXGYwZmIifS5mYS1maWxlOmJlZm9yZSwuZmEtZmlsZS1vOmJlZm9yZXtjb250ZW50OiJcZjE1YiJ9LmZhLWZpbGUtYWx0OmJlZm9yZXtjb250ZW50OiJcZjE1YyJ9LmZhLWZpbGUtYXJjaGl2ZTpiZWZvcmV7Y29udGVudDoiXGYxYzYifS5mYS1maWxlLWF1ZGlvOmJlZm9yZXtjb250ZW50OiJcZjFjNyJ9LmZhLWZpbGUtY29kZTpiZWZvcmV7Y29udGVudDoiXGYxYzkifS5mYS1maWxlLWV4Y2VsOmJlZm9yZXtjb250ZW50OiJcZjFjMyJ9LmZhLWZpbGUtaW1hZ2U6YmVmb3Jle2NvbnRlbnQ6IlxmMWM1In0uZmEtZmlsZS1wZGY6YmVmb3Jle2NvbnRlbnQ6IlxmMWMxIn0uZmEtZmlsZS1wb3dlcnBvaW50OmJlZm9yZXtjb250ZW50OiJcZjFjNCJ9LmZhLWZpbGUtdmlkZW86YmVmb3Jle2NvbnRlbnQ6IlxmMWM4In0uZmEtZmlsZS13b3JkOmJlZm9yZXtjb250ZW50OiJcZjFjMiJ9LmZhLWZpbG06YmVmb3Jle2NvbnRlbnQ6IlxmMDA4In0uZmEtZmlsdGVyOmJlZm9yZXtjb250ZW50OiJcZjBiMCJ9LmZhLWZpcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMDZkIn0uZmEtZmlyZS1leHRpbmd1aXNoZXI6YmVmb3Jle2NvbnRlbnQ6IlxmMTM0In0uZmEtZmlyZWZveDpiZWZvcmV7Y29udGVudDoiXGYyNjkifS5mYS1maXJzdC1vcmRlcjpiZWZvcmV7Y29udGVudDoiXGYyYjAifS5mYS1maXJzdGRyYWZ0OmJlZm9yZXtjb250ZW50OiJcZjNhMSJ9LmZhLWZsYWc6YmVmb3Jle2NvbnRlbnQ6IlxmMDI0In0uZmEtZmxhZy1jaGVja2VyZWQ6YmVmb3Jle2NvbnRlbnQ6IlxmMTFlIn0uZmEtZmxhc2s6YmVmb3Jle2NvbnRlbnQ6IlxmMGMzIn0uZmEtZmxpY2tyOmJlZm9yZXtjb250ZW50OiJcZjE2ZSJ9LmZhLWZsaXBib2FyZDpiZWZvcmV7Y29udGVudDoiXGY0NGQifS5mYS1mbHk6YmVmb3Jle2NvbnRlbnQ6IlxmNDE3In0uZmEtZm9sZGVyOmJlZm9yZXtjb250ZW50OiJcZjA3YiJ9LmZhLWZvbGRlci1vcGVuOmJlZm9yZXtjb250ZW50OiJcZjA3YyJ9LmZhLWZvbnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMDMxIn0uZmEtZm9udC1hd2Vzb21lOmJlZm9yZXtjb250ZW50OiJcZjJiNCJ9LmZhLWZvbnQtYXdlc29tZS1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMzVjIn0uZmEtZm9udC1hd2Vzb21lLWZsYWc6YmVmb3Jle2NvbnRlbnQ6IlxmNDI1In0uZmEtZm9udGljb25zOmJlZm9yZXtjb250ZW50OiJcZjI4MCJ9LmZhLWZvbnRpY29ucy1maTpiZWZvcmV7Y29udGVudDoiXGYzYTIifS5mYS1mb290YmFsbC1iYWxsOmJlZm9yZXtjb250ZW50OiJcZjQ0ZSJ9LmZhLWZvcnQtYXdlc29tZTpiZWZvcmV7Y29udGVudDoiXGYyODYifS5mYS1mb3J0LWF3ZXNvbWUtYWx0OmJlZm9yZXtjb250ZW50OiJcZjNhMyJ9LmZhLWZvcnVtYmVlOmJlZm9yZXtjb250ZW50OiJcZjIxMSJ9LmZhLWZvcndhcmQ6YmVmb3Jle2NvbnRlbnQ6IlxmMDRlIn0uZmEtZm91cnNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYxODAifS5mYS1mcmVlLWNvZGUtY2FtcDpiZWZvcmV7Y29udGVudDoiXGYyYzUifS5mYS1mcmVlYnNkOmJlZm9yZXtjb250ZW50OiJcZjNhNCJ9LmZhLWZyb3duOmJlZm9yZXtjb250ZW50OiJcZjExOSJ9LmZhLWZ1dGJvbDpiZWZvcmV7Y29udGVudDoiXGYxZTMifS5mYS1nYW1lcGFkOmJlZm9yZXtjb250ZW50OiJcZjExYiJ9LmZhLWdhdmVsOmJlZm9yZXtjb250ZW50OiJcZjBlMyJ9LmZhLWdlbTpiZWZvcmV7Y29udGVudDoiXGYzYTUifS5mYS1nZW5kZXJsZXNzOmJlZm9yZXtjb250ZW50OiJcZjIyZCJ9LmZhLWdldC1wb2NrZXQ6YmVmb3Jle2NvbnRlbnQ6IlxmMjY1In0uZmEtZ2c6YmVmb3Jle2NvbnRlbnQ6IlxmMjYwIn0uZmEtZ2ctY2lyY2xlOmJlZm9yZXtjb250ZW50OiJcZjI2MSJ9LmZhLWdpZnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMDZiIn0uZmEtZ2l0OmJlZm9yZXtjb250ZW50OiJcZjFkMyJ9LmZhLWdpdC1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMWQyIn0uZmEtZ2l0aHViOmJlZm9yZXtjb250ZW50OiJcZjA5YiJ9LmZhLWdpdGh1Yi1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMTEzIn0uZmEtZ2l0aHViLXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYwOTIifS5mYS1naXRrcmFrZW46YmVmb3Jle2NvbnRlbnQ6IlxmM2E2In0uZmEtZ2l0bGFiOmJlZm9yZXtjb250ZW50OiJcZjI5NiJ9LmZhLWdpdHRlcjpiZWZvcmV7Y29udGVudDoiXGY0MjYifS5mYS1nbGFzcy1tYXJ0aW5pOmJlZm9yZXtjb250ZW50OiJcZjAwMCJ9LmZhLWdsaWRlOmJlZm9yZXtjb250ZW50OiJcZjJhNSJ9LmZhLWdsaWRlLWc6YmVmb3Jle2NvbnRlbnQ6IlxmMmE2In0uZmEtZ2xvYmU6YmVmb3Jle2NvbnRlbnQ6IlxmMGFjIn0uZmEtZ29mb3JlOmJlZm9yZXtjb250ZW50OiJcZjNhNyJ9LmZhLWdvbGYtYmFsbDpiZWZvcmV7Y29udGVudDoiXGY0NTAifS5mYS1nb29kcmVhZHM6YmVmb3Jle2NvbnRlbnQ6IlxmM2E4In0uZmEtZ29vZHJlYWRzLWc6YmVmb3Jle2NvbnRlbnQ6IlxmM2E5In0uZmEtZ29vZ2xlOmJlZm9yZXtjb250ZW50OiJcZjFhMCJ9LmZhLWdvb2dsZS1kcml2ZTpiZWZvcmV7Y29udGVudDoiXGYzYWEifS5mYS1nb29nbGUtcGxheTpiZWZvcmV7Y29udGVudDoiXGYzYWIifS5mYS1nb29nbGUtcGx1czpiZWZvcmV7Y29udGVudDoiXGYyYjMifS5mYS1nb29nbGUtcGx1cy1nOmJlZm9yZXtjb250ZW50OiJcZjBkNSJ9LmZhLWdvb2dsZS1wbHVzLXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYwZDQifS5mYS1nb29nbGUtd2FsbGV0OmJlZm9yZXtjb250ZW50OiJcZjFlZSJ9LmZhLWdyYWR1YXRpb24tY2FwOmJlZm9yZXtjb250ZW50OiJcZjE5ZCJ9LmZhLWdyYXRpcGF5OmJlZm9yZXtjb250ZW50OiJcZjE4NCJ9LmZhLWdyYXY6YmVmb3Jle2NvbnRlbnQ6IlxmMmQ2In0uZmEtZ3JpcGZpcmU6YmVmb3Jle2NvbnRlbnQ6IlxmM2FjIn0uZmEtZ3J1bnQ6YmVmb3Jle2NvbnRlbnQ6IlxmM2FkIn0uZmEtZ3VscDpiZWZvcmV7Y29udGVudDoiXGYzYWUifS5mYS1oLXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYwZmQifS5mYS1oYWNrZXItbmV3czpiZWZvcmV7Y29udGVudDoiXGYxZDQifS5mYS1oYWNrZXItbmV3cy1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmM2FmIn0uZmEtaGFuZC1saXphcmQ6YmVmb3Jle2NvbnRlbnQ6IlxmMjU4In0uZmEtaGFuZC1wYXBlcjpiZWZvcmV7Y29udGVudDoiXGYyNTYifS5mYS1oYW5kLXBlYWNlOmJlZm9yZXtjb250ZW50OiJcZjI1YiJ9LmZhLWhhbmQtcG9pbnQtZG93bjpiZWZvcmV7Y29udGVudDoiXGYwYTcifS5mYS1oYW5kLXBvaW50LWxlZnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMGE1In0uZmEtaGFuZC1wb2ludC1yaWdodDpiZWZvcmV7Y29udGVudDoiXGYwYTQifS5mYS1oYW5kLXBvaW50LXVwOmJlZm9yZXtjb250ZW50OiJcZjBhNiJ9LmZhLWhhbmQtcG9pbnRlcjpiZWZvcmUsLmZhLWhhbmQtcG9pbnRlci1vOmJlZm9yZXtjb250ZW50OiJcZjI1YSJ9LmZhLWhhbmQtcm9jazpiZWZvcmV7Y29udGVudDoiXGYyNTUifS5mYS1oYW5kLXNjaXNzb3JzOmJlZm9yZXtjb250ZW50OiJcZjI1NyJ9LmZhLWhhbmQtc3BvY2s6YmVmb3Jle2NvbnRlbnQ6IlxmMjU5In0uZmEtaGFuZHNoYWtlOmJlZm9yZXtjb250ZW50OiJcZjJiNSJ9LmZhLWhhc2h0YWc6YmVmb3Jle2NvbnRlbnQ6IlxmMjkyIn0uZmEtaGRkOmJlZm9yZXtjb250ZW50OiJcZjBhMCJ9LmZhLWhlYWRpbmc6YmVmb3Jle2NvbnRlbnQ6IlxmMWRjIn0uZmEtaGVhZHBob25lczpiZWZvcmV7Y29udGVudDoiXGYwMjUifS5mYS1oZWFydDpiZWZvcmV7Y29udGVudDoiXGYwMDQifS5mYS1oZWFydGJlYXQ6YmVmb3Jle2NvbnRlbnQ6IlxmMjFlIn0uZmEtaGlwczpiZWZvcmV7Y29udGVudDoiXGY0NTIifS5mYS1oaXJlLWEtaGVscGVyOmJlZm9yZXtjb250ZW50OiJcZjNiMCJ9LmZhLWhpc3Rvcnk6YmVmb3Jle2NvbnRlbnQ6IlxmMWRhIn0uZmEtaG9ja2V5LXB1Y2s6YmVmb3Jle2NvbnRlbnQ6IlxmNDUzIn0uZmEtaG9tZTpiZWZvcmV7Y29udGVudDoiXGYwMTUifS5mYS1ob29saTpiZWZvcmV7Y29udGVudDoiXGY0MjcifS5mYS1ob3NwaXRhbDpiZWZvcmV7Y29udGVudDoiXGYwZjgifS5mYS1ob3RqYXI6YmVmb3Jle2NvbnRlbnQ6IlxmM2IxIn0uZmEtaG91cmdsYXNzOmJlZm9yZXtjb250ZW50OiJcZjI1NCJ9LmZhLWhvdXJnbGFzcy1lbmQ6YmVmb3Jle2NvbnRlbnQ6IlxmMjUzIn0uZmEtaG91cmdsYXNzLWhhbGY6YmVmb3Jle2NvbnRlbnQ6IlxmMjUyIn0uZmEtaG91cmdsYXNzLXN0YXJ0OmJlZm9yZXtjb250ZW50OiJcZjI1MSJ9LmZhLWhvdXp6OmJlZm9yZXtjb250ZW50OiJcZjI3YyJ9LmZhLWh0bWw1OmJlZm9yZXtjb250ZW50OiJcZjEzYiJ9LmZhLWh1YnNwb3Q6YmVmb3Jle2NvbnRlbnQ6IlxmM2IyIn0uZmEtaS1jdXJzb3I6YmVmb3Jle2NvbnRlbnQ6IlxmMjQ2In0uZmEtaWQtYmFkZ2U6YmVmb3Jle2NvbnRlbnQ6IlxmMmMxIn0uZmEtaWQtY2FyZDpiZWZvcmV7Y29udGVudDoiXGYyYzIifS5mYS1pbWFnZTpiZWZvcmV7Y29udGVudDoiXGYwM2UifS5mYS1pbWFnZXM6YmVmb3Jle2NvbnRlbnQ6IlxmMzAyIn0uZmEtaW1kYjpiZWZvcmV7Y29udGVudDoiXGYyZDgifS5mYS1pbmJveDpiZWZvcmV7Y29udGVudDoiXGYwMWMifS5mYS1pbmRlbnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMDNjIn0uZmEtaW5kdXN0cnk6YmVmb3Jle2NvbnRlbnQ6IlxmMjc1In0uZmEtaW5mbzpiZWZvcmV7Y29udGVudDoiXGYxMjkifS5mYS1pbmZvLWNpcmNsZTpiZWZvcmV7Y29udGVudDoiXGYwNWEifS5mYS1pbnN0YWdyYW06YmVmb3Jle2NvbnRlbnQ6IlxmMTZkIn0uZmEtaW50ZXJuZXQtZXhwbG9yZXI6YmVmb3Jle2NvbnRlbnQ6IlxmMjZiIn0uZmEtaW94aG9zdDpiZWZvcmV7Y29udGVudDoiXGYyMDgifS5mYS1pdGFsaWM6YmVmb3Jle2NvbnRlbnQ6IlxmMDMzIn0uZmEtaXR1bmVzOmJlZm9yZXtjb250ZW50OiJcZjNiNCJ9LmZhLWl0dW5lcy1ub3RlOmJlZm9yZXtjb250ZW50OiJcZjNiNSJ9LmZhLWplbmtpbnM6YmVmb3Jle2NvbnRlbnQ6IlxmM2I2In0uZmEtam9nZXQ6YmVmb3Jle2NvbnRlbnQ6IlxmM2I3In0uZmEtam9vbWxhOmJlZm9yZXtjb250ZW50OiJcZjFhYSJ9LmZhLWpzOmJlZm9yZXtjb250ZW50OiJcZjNiOCJ9LmZhLWpzLXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYzYjkifS5mYS1qc2ZpZGRsZTpiZWZvcmV7Y29udGVudDoiXGYxY2MifS5mYS1rZXk6YmVmb3Jle2NvbnRlbnQ6IlxmMDg0In0uZmEta2V5Ym9hcmQ6YmVmb3Jle2NvbnRlbnQ6IlxmMTFjIn0uZmEta2V5Y2RuOmJlZm9yZXtjb250ZW50OiJcZjNiYSJ9LmZhLWtpY2tzdGFydGVyOmJlZm9yZXtjb250ZW50OiJcZjNiYiJ9LmZhLWtpY2tzdGFydGVyLWs6YmVmb3Jle2NvbnRlbnQ6IlxmM2JjIn0uZmEta29ydnVlOmJlZm9yZXtjb250ZW50OiJcZjQyZiJ9LmZhLWxhbmd1YWdlOmJlZm9yZXtjb250ZW50OiJcZjFhYiJ9LmZhLWxhcHRvcDpiZWZvcmV7Y29udGVudDoiXGYxMDkifS5mYS1sYXJhdmVsOmJlZm9yZXtjb250ZW50OiJcZjNiZCJ9LmZhLWxhc3RmbTpiZWZvcmV7Y29udGVudDoiXGYyMDIifS5mYS1sYXN0Zm0tc3F1YXJlOmJlZm9yZXtjb250ZW50OiJcZjIwMyJ9LmZhLWxlYWY6YmVmb3Jle2NvbnRlbnQ6IlxmMDZjIn0uZmEtbGVhbnB1YjpiZWZvcmV7Y29udGVudDoiXGYyMTIifS5mYS1sZW1vbjpiZWZvcmV7Y29udGVudDoiXGYwOTQifS5mYS1sZXNzOmJlZm9yZXtjb250ZW50OiJcZjQxZCJ9LmZhLWxldmVsLWRvd24tYWx0OmJlZm9yZXtjb250ZW50OiJcZjNiZSJ9LmZhLWxldmVsLXVwLWFsdDpiZWZvcmV7Y29udGVudDoiXGYzYmYifS5mYS1saWZlLXJpbmc6YmVmb3Jle2NvbnRlbnQ6IlxmMWNkIn0uZmEtbGlnaHRidWxiOmJlZm9yZXtjb250ZW50OiJcZjBlYiJ9LmZhLWxpbmU6YmVmb3Jle2NvbnRlbnQ6IlxmM2MwIn0uZmEtbGluazpiZWZvcmV7Y29udGVudDoiXGYwYzEifS5mYS1saW5rZWRpbjpiZWZvcmV7Y29udGVudDoiXGYwOGMifS5mYS1saW5rZWRpbi1pbjpiZWZvcmV7Y29udGVudDoiXGYwZTEifS5mYS1saW5vZGU6YmVmb3Jle2NvbnRlbnQ6IlxmMmI4In0uZmEtbGludXg6YmVmb3Jle2NvbnRlbnQ6IlxmMTdjIn0uZmEtbGlyYS1zaWduOmJlZm9yZXtjb250ZW50OiJcZjE5NSJ9LmZhLWxpc3Q6YmVmb3Jle2NvbnRlbnQ6IlxmMDNhIn0uZmEtbGlzdC1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMDIyIn0uZmEtbGlzdC1vbDpiZWZvcmV7Y29udGVudDoiXGYwY2IifS5mYS1saXN0LXVsOmJlZm9yZXtjb250ZW50OiJcZjBjYSJ9LmZhLWxvY2F0aW9uLWFycm93OmJlZm9yZXtjb250ZW50OiJcZjEyNCJ9LmZhLWxvY2s6YmVmb3Jle2NvbnRlbnQ6IlxmMDIzIn0uZmEtbG9jay1vcGVuOmJlZm9yZXtjb250ZW50OiJcZjNjMSJ9LmZhLWxvbmctYXJyb3ctYWx0LWRvd246YmVmb3Jle2NvbnRlbnQ6IlxmMzA5In0uZmEtbG9uZy1hcnJvdy1hbHQtbGVmdDpiZWZvcmV7Y29udGVudDoiXGYzMGEifS5mYS1sb25nLWFycm93LWFsdC1yaWdodDpiZWZvcmV7Y29udGVudDoiXGYzMGIifS5mYS1sb25nLWFycm93LWFsdC11cDpiZWZvcmV7Y29udGVudDoiXGYzMGMifS5mYS1sb3ctdmlzaW9uOmJlZm9yZXtjb250ZW50OiJcZjJhOCJ9LmZhLWx5ZnQ6YmVmb3Jle2NvbnRlbnQ6IlxmM2MzIn0uZmEtbWFnZW50bzpiZWZvcmV7Y29udGVudDoiXGYzYzQifS5mYS1tYWdpYzpiZWZvcmV7Y29udGVudDoiXGYwZDAifS5mYS1tYWduZXQ6YmVmb3Jle2NvbnRlbnQ6IlxmMDc2In0uZmEtbWFsZTpiZWZvcmV7Y29udGVudDoiXGYxODMifS5mYS1tYXA6YmVmb3Jle2NvbnRlbnQ6IlxmMjc5In0uZmEtbWFwLW1hcmtlcjpiZWZvcmV7Y29udGVudDoiXGYwNDEifS5mYS1tYXAtbWFya2VyLWFsdDpiZWZvcmV7Y29udGVudDoiXGYzYzUifS5mYS1tYXAtcGluOmJlZm9yZXtjb250ZW50OiJcZjI3NiJ9LmZhLW1hcC1zaWduczpiZWZvcmV7Y29udGVudDoiXGYyNzcifS5mYS1tYXJzOmJlZm9yZXtjb250ZW50OiJcZjIyMiJ9LmZhLW1hcnMtZG91YmxlOmJlZm9yZXtjb250ZW50OiJcZjIyNyJ9LmZhLW1hcnMtc3Ryb2tlOmJlZm9yZXtjb250ZW50OiJcZjIyOSJ9LmZhLW1hcnMtc3Ryb2tlLWg6YmVmb3Jle2NvbnRlbnQ6IlxmMjJiIn0uZmEtbWFycy1zdHJva2UtdjpiZWZvcmV7Y29udGVudDoiXGYyMmEifS5mYS1tYXhjZG46YmVmb3Jle2NvbnRlbnQ6IlxmMTM2In0uZmEtbWVkYXBwczpiZWZvcmV7Y29udGVudDoiXGYzYzYifS5mYS1tZWRpdW06YmVmb3Jle2NvbnRlbnQ6IlxmMjNhIn0uZmEtbWVkaXVtLW06YmVmb3Jle2NvbnRlbnQ6IlxmM2M3In0uZmEtbWVka2l0OmJlZm9yZXtjb250ZW50OiJcZjBmYSJ9LmZhLW1lZHJ0OmJlZm9yZXtjb250ZW50OiJcZjNjOCJ9LmZhLW1lZXR1cDpiZWZvcmV7Y29udGVudDoiXGYyZTAifS5mYS1tZWg6YmVmb3Jle2NvbnRlbnQ6IlxmMTFhIn0uZmEtbWVyY3VyeTpiZWZvcmV7Y29udGVudDoiXGYyMjMifS5mYS1taWNyb2NoaXA6YmVmb3Jle2NvbnRlbnQ6IlxmMmRiIn0uZmEtbWljcm9waG9uZTpiZWZvcmV7Y29udGVudDoiXGYxMzAifS5mYS1taWNyb3Bob25lLXNsYXNoOmJlZm9yZXtjb250ZW50OiJcZjEzMSJ9LmZhLW1pY3Jvc29mdDpiZWZvcmV7Y29udGVudDoiXGYzY2EifS5mYS1taW51czpiZWZvcmV7Y29udGVudDoiXGYwNjgifS5mYS1taW51cy1jaXJjbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMDU2In0uZmEtbWludXMtc3F1YXJlOmJlZm9yZXtjb250ZW50OiJcZjE0NiJ9LmZhLW1peDpiZWZvcmV7Y29udGVudDoiXGYzY2IifS5mYS1taXhjbG91ZDpiZWZvcmV7Y29udGVudDoiXGYyODkifS5mYS1taXp1bmk6YmVmb3Jle2NvbnRlbnQ6IlxmM2NjIn0uZmEtbW9iaWxlOmJlZm9yZXtjb250ZW50OiJcZjEwYiJ9LmZhLW1vYmlsZS1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmM2NkIn0uZmEtbW9keDpiZWZvcmV7Y29udGVudDoiXGYyODUifS5mYS1tb25lcm86YmVmb3Jle2NvbnRlbnQ6IlxmM2QwIn0uZmEtbW9uZXktYmlsbC1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmM2QxIn0uZmEtbW9vbjpiZWZvcmV7Y29udGVudDoiXGYxODYifS5mYS1tb3RvcmN5Y2xlOmJlZm9yZXtjb250ZW50OiJcZjIxYyJ9LmZhLW1vdXNlLXBvaW50ZXI6YmVmb3Jle2NvbnRlbnQ6IlxmMjQ1In0uZmEtbXVzaWM6YmVmb3Jle2NvbnRlbnQ6IlxmMDAxIn0uZmEtbmFwc3RlcjpiZWZvcmV7Y29udGVudDoiXGYzZDIifS5mYS1uZXV0ZXI6YmVmb3Jle2NvbnRlbnQ6IlxmMjJjIn0uZmEtbmV3c3BhcGVyOmJlZm9yZSwuZmEtbmV3c3BhcGVyLW86YmVmb3Jle2NvbnRlbnQ6IlxmMWVhIn0uZmEtbmludGVuZG8tc3dpdGNoOmJlZm9yZXtjb250ZW50OiJcZjQxOCJ9LmZhLW5vZGU6YmVmb3Jle2NvbnRlbnQ6IlxmNDE5In0uZmEtbm9kZS1qczpiZWZvcmV7Y29udGVudDoiXGYzZDMifS5mYS1ucG06YmVmb3Jle2NvbnRlbnQ6IlxmM2Q0In0uZmEtbnM4OmJlZm9yZXtjb250ZW50OiJcZjNkNSJ9LmZhLW51dHJpdGlvbml4OmJlZm9yZXtjb250ZW50OiJcZjNkNiJ9LmZhLW9iamVjdC1ncm91cDpiZWZvcmV7Y29udGVudDoiXGYyNDcifS5mYS1vYmplY3QtdW5ncm91cDpiZWZvcmV7Y29udGVudDoiXGYyNDgifS5mYS1vZG5va2xhc3NuaWtpOmJlZm9yZXtjb250ZW50OiJcZjI2MyJ9LmZhLW9kbm9rbGFzc25pa2ktc3F1YXJlOmJlZm9yZXtjb250ZW50OiJcZjI2NCJ9LmZhLW9wZW5jYXJ0OmJlZm9yZXtjb250ZW50OiJcZjIzZCJ9LmZhLW9wZW5pZDpiZWZvcmV7Y29udGVudDoiXGYxOWIifS5mYS1vcGVyYTpiZWZvcmV7Y29udGVudDoiXGYyNmEifS5mYS1vcHRpbi1tb25zdGVyOmJlZm9yZXtjb250ZW50OiJcZjIzYyJ9LmZhLW9zaTpiZWZvcmV7Y29udGVudDoiXGY0MWEifS5mYS1vdXRkZW50OmJlZm9yZXtjb250ZW50OiJcZjAzYiJ9LmZhLXBhZ2U0OmJlZm9yZXtjb250ZW50OiJcZjNkNyJ9LmZhLXBhZ2VsaW5lczpiZWZvcmV7Y29udGVudDoiXGYxOGMifS5mYS1wYWludC1icnVzaDpiZWZvcmV7Y29udGVudDoiXGYxZmMifS5mYS1wYWxmZWQ6YmVmb3Jle2NvbnRlbnQ6IlxmM2Q4In0uZmEtcGFwZXItcGxhbmU6YmVmb3Jle2NvbnRlbnQ6IlxmMWQ4In0uZmEtcGFwZXJjbGlwOmJlZm9yZXtjb250ZW50OiJcZjBjNiJ9LmZhLXBhcmFncmFwaDpiZWZvcmV7Y29udGVudDoiXGYxZGQifS5mYS1wYXN0ZTpiZWZvcmV7Y29udGVudDoiXGYwZWEifS5mYS1wYXRyZW9uOmJlZm9yZXtjb250ZW50OiJcZjNkOSJ9LmZhLXBhdXNlOmJlZm9yZXtjb250ZW50OiJcZjA0YyJ9LmZhLXBhdXNlLWNpcmNsZTpiZWZvcmV7Y29udGVudDoiXGYyOGIifS5mYS1wYXc6YmVmb3Jle2NvbnRlbnQ6IlxmMWIwIn0uZmEtcGF5cGFsOmJlZm9yZXtjb250ZW50OiJcZjFlZCJ9LmZhLXBlbi1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMTRiIn0uZmEtcGVuY2lsLWFsdDpiZWZvcmV7Y29udGVudDoiXGYzMDMifS5mYS1wZXJjZW50OmJlZm9yZXtjb250ZW50OiJcZjI5NSJ9LmZhLXBlcmlzY29wZTpiZWZvcmV7Y29udGVudDoiXGYzZGEifS5mYS1waGFicmljYXRvcjpiZWZvcmV7Y29udGVudDoiXGYzZGIifS5mYS1waG9lbml4LWZyYW1ld29yazpiZWZvcmV7Y29udGVudDoiXGYzZGMifS5mYS1waG9uZTpiZWZvcmV7Y29udGVudDoiXGYwOTUifS5mYS1waG9uZS1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMDk4In0uZmEtcGhvbmUtdm9sdW1lOmJlZm9yZXtjb250ZW50OiJcZjJhMCJ9LmZhLXBocDpiZWZvcmV7Y29udGVudDoiXGY0NTcifS5mYS1waWVkLXBpcGVyOmJlZm9yZXtjb250ZW50OiJcZjJhZSJ9LmZhLXBpZWQtcGlwZXItYWx0OmJlZm9yZXtjb250ZW50OiJcZjFhOCJ9LmZhLXBpZWQtcGlwZXItcHA6YmVmb3Jle2NvbnRlbnQ6IlxmMWE3In0uZmEtcGludGVyZXN0OmJlZm9yZXtjb250ZW50OiJcZjBkMiJ9LmZhLXBpbnRlcmVzdC1wOmJlZm9yZXtjb250ZW50OiJcZjIzMSJ9LmZhLXBpbnRlcmVzdC1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMGQzIn0uZmEtcGxhbmU6YmVmb3Jle2NvbnRlbnQ6IlxmMDcyIn0uZmEtcGxheTpiZWZvcmV7Y29udGVudDoiXGYwNGIifS5mYS1wbGF5LWNpcmNsZTpiZWZvcmV7Y29udGVudDoiXGYxNDQifS5mYS1wbGF5c3RhdGlvbjpiZWZvcmV7Y29udGVudDoiXGYzZGYifS5mYS1wbHVnOmJlZm9yZXtjb250ZW50OiJcZjFlNiJ9LmZhLXBsdXM6YmVmb3Jle2NvbnRlbnQ6IlxmMDY3In0uZmEtcGx1cy1jaXJjbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMDU1In0uZmEtcGx1cy1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMGZlIn0uZmEtcG9kY2FzdDpiZWZvcmV7Y29udGVudDoiXGYyY2UifS5mYS1wb3VuZC1zaWduOmJlZm9yZXtjb250ZW50OiJcZjE1NCJ9LmZhLXBvd2VyLW9mZjpiZWZvcmV7Y29udGVudDoiXGYwMTEifS5mYS1wcmludDpiZWZvcmV7Y29udGVudDoiXGYwMmYifS5mYS1wcm9kdWN0LWh1bnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMjg4In0uZmEtcHVzaGVkOmJlZm9yZXtjb250ZW50OiJcZjNlMSJ9LmZhLXB1enpsZS1waWVjZTpiZWZvcmV7Y29udGVudDoiXGYxMmUifS5mYS1weXRob246YmVmb3Jle2NvbnRlbnQ6IlxmM2UyIn0uZmEtcXE6YmVmb3Jle2NvbnRlbnQ6IlxmMWQ2In0uZmEtcXJjb2RlOmJlZm9yZXtjb250ZW50OiJcZjAyOSJ9LmZhLXF1ZXN0aW9uOmJlZm9yZXtjb250ZW50OiJcZjEyOCJ9LmZhLXF1ZXN0aW9uLWNpcmNsZTpiZWZvcmV7Y29udGVudDoiXGYwNTkifS5mYS1xdWlkZGl0Y2g6YmVmb3Jle2NvbnRlbnQ6IlxmNDU4In0uZmEtcXVpbnNjYXBlOmJlZm9yZXtjb250ZW50OiJcZjQ1OSJ9LmZhLXF1b3JhOmJlZm9yZXtjb250ZW50OiJcZjJjNCJ9LmZhLXF1b3RlLWxlZnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMTBkIn0uZmEtcXVvdGUtcmlnaHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMTBlIn0uZmEtcmFuZG9tOmJlZm9yZXtjb250ZW50OiJcZjA3NCJ9LmZhLXJhdmVscnk6YmVmb3Jle2NvbnRlbnQ6IlxmMmQ5In0uZmEtcmVhY3Q6YmVmb3Jle2NvbnRlbnQ6IlxmNDFiIn0uZmEtcmViZWw6YmVmb3Jle2NvbnRlbnQ6IlxmMWQwIn0uZmEtcmVjeWNsZTpiZWZvcmV7Y29udGVudDoiXGYxYjgifS5mYS1yZWQtcml2ZXI6YmVmb3Jle2NvbnRlbnQ6IlxmM2UzIn0uZmEtcmVkZGl0OmJlZm9yZXtjb250ZW50OiJcZjFhMSJ9LmZhLXJlZGRpdC1hbGllbjpiZWZvcmV7Y29udGVudDoiXGYyODEifS5mYS1yZWRkaXQtc3F1YXJlOmJlZm9yZXtjb250ZW50OiJcZjFhMiJ9LmZhLXJlZG86YmVmb3Jle2NvbnRlbnQ6IlxmMDFlIn0uZmEtcmVkby1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMmY5In0uZmEtcmVnaXN0ZXJlZDpiZWZvcmV7Y29udGVudDoiXGYyNWQifS5mYS1yZW5kYWN0OmJlZm9yZXtjb250ZW50OiJcZjNlNCJ9LmZhLXJlbnJlbjpiZWZvcmV7Y29udGVudDoiXGYxOGIifS5mYS1yZXBseTpiZWZvcmV7Y29udGVudDoiXGYzZTUifS5mYS1yZXBseS1hbGw6YmVmb3Jle2NvbnRlbnQ6IlxmMTIyIn0uZmEtcmVwbHlkOmJlZm9yZXtjb250ZW50OiJcZjNlNiJ9LmZhLXJlc29sdmluZzpiZWZvcmV7Y29udGVudDoiXGYzZTcifS5mYS1yZXR3ZWV0OmJlZm9yZXtjb250ZW50OiJcZjA3OSJ9LmZhLXJvYWQ6YmVmb3Jle2NvbnRlbnQ6IlxmMDE4In0uZmEtcm9ja2V0OmJlZm9yZXtjb250ZW50OiJcZjEzNSJ9LmZhLXJvY2tldGNoYXQ6YmVmb3Jle2NvbnRlbnQ6IlxmM2U4In0uZmEtcm9ja3JtczpiZWZvcmV7Y29udGVudDoiXGYzZTkifS5mYS1yc3M6YmVmb3Jle2NvbnRlbnQ6IlxmMDllIn0uZmEtcnNzLXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYxNDMifS5mYS1ydWJsZS1zaWduOmJlZm9yZXtjb250ZW50OiJcZjE1OCJ9LmZhLXJ1cGVlLXNpZ246YmVmb3Jle2NvbnRlbnQ6IlxmMTU2In0uZmEtc2FmYXJpOmJlZm9yZXtjb250ZW50OiJcZjI2NyJ9LmZhLXNhc3M6YmVmb3Jle2NvbnRlbnQ6IlxmNDFlIn0uZmEtc2F2ZTpiZWZvcmV7Y29udGVudDoiXGYwYzcifS5mYS1zY2hsaXg6YmVmb3Jle2NvbnRlbnQ6IlxmM2VhIn0uZmEtc2NyaWJkOmJlZm9yZXtjb250ZW50OiJcZjI4YSJ9LmZhLXNlYXJjaDpiZWZvcmV7Y29udGVudDoiXGYwMDIifS5mYS1zZWFyY2gtbWludXM6YmVmb3Jle2NvbnRlbnQ6IlxmMDEwIn0uZmEtc2VhcmNoLXBsdXM6YmVmb3Jle2NvbnRlbnQ6IlxmMDBlIn0uZmEtc2VhcmNoZW5naW46YmVmb3Jle2NvbnRlbnQ6IlxmM2ViIn0uZmEtc2VsbGNhc3Q6YmVmb3Jle2NvbnRlbnQ6IlxmMmRhIn0uZmEtc2VsbHN5OmJlZm9yZXtjb250ZW50OiJcZjIxMyJ9LmZhLXNlcnZlcjpiZWZvcmV7Y29udGVudDoiXGYyMzMifS5mYS1zZXJ2aWNlc3RhY2s6YmVmb3Jle2NvbnRlbnQ6IlxmM2VjIn0uZmEtc2hhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMDY0In0uZmEtc2hhcmUtYWx0OmJlZm9yZXtjb250ZW50OiJcZjFlMCJ9LmZhLXNoYXJlLWFsdC1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMWUxIn0uZmEtc2hhcmUtc3F1YXJlOmJlZm9yZXtjb250ZW50OiJcZjE0ZCJ9LmZhLXNoZWtlbC1zaWduOmJlZm9yZXtjb250ZW50OiJcZjIwYiJ9LmZhLXNoaWVsZC1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmM2VkIn0uZmEtc2hpcDpiZWZvcmV7Y29udGVudDoiXGYyMWEifS5mYS1zaGlydHNpbmJ1bGs6YmVmb3Jle2NvbnRlbnQ6IlxmMjE0In0uZmEtc2hvcHBpbmctYmFnOmJlZm9yZXtjb250ZW50OiJcZjI5MCJ9LmZhLXNob3BwaW5nLWJhc2tldDpiZWZvcmV7Y29udGVudDoiXGYyOTEifS5mYS1zaG9wcGluZy1jYXJ0OmJlZm9yZXtjb250ZW50OiJcZjA3YSJ9LmZhLXNob3dlcjpiZWZvcmV7Y29udGVudDoiXGYyY2MifS5mYS1zaWduLWluLWFsdDpiZWZvcmV7Y29udGVudDoiXGYyZjYifS5mYS1zaWduLWxhbmd1YWdlOmJlZm9yZXtjb250ZW50OiJcZjJhNyJ9LmZhLXNpZ24tb3V0LWFsdDpiZWZvcmV7Y29udGVudDoiXGYyZjUifS5mYS1zaWduYWw6YmVmb3Jle2NvbnRlbnQ6IlxmMDEyIn0uZmEtc2ltcGx5YnVpbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMjE1In0uZmEtc2lzdHJpeDpiZWZvcmV7Y29udGVudDoiXGYzZWUifS5mYS1zaXRlbWFwOmJlZm9yZXtjb250ZW50OiJcZjBlOCJ9LmZhLXNreWF0bGFzOmJlZm9yZXtjb250ZW50OiJcZjIxNiJ9LmZhLXNreXBlOmJlZm9yZXtjb250ZW50OiJcZjE3ZSJ9LmZhLXNsYWNrOmJlZm9yZXtjb250ZW50OiJcZjE5OCJ9LmZhLXNsYWNrLWhhc2g6YmVmb3Jle2NvbnRlbnQ6IlxmM2VmIn0uZmEtc2xpZGVycy1oOmJlZm9yZXtjb250ZW50OiJcZjFkZSJ9LmZhLXNsaWRlc2hhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMWU3In0uZmEtc21pbGU6YmVmb3JlLC5mYS1zbWlsZS1vOmJlZm9yZXtjb250ZW50OiJcZjExOCJ9LmZhLXNuYXBjaGF0OmJlZm9yZXtjb250ZW50OiJcZjJhYiJ9LmZhLXNuYXBjaGF0LWdob3N0OmJlZm9yZXtjb250ZW50OiJcZjJhYyJ9LmZhLXNuYXBjaGF0LXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYyYWQifS5mYS1zbm93Zmxha2U6YmVmb3Jle2NvbnRlbnQ6IlxmMmRjIn0uZmEtc29ydDpiZWZvcmV7Y29udGVudDoiXGYwZGMifS5mYS1zb3J0LWFscGhhLWRvd246YmVmb3Jle2NvbnRlbnQ6IlxmMTVkIn0uZmEtc29ydC1hbHBoYS11cDpiZWZvcmV7Y29udGVudDoiXGYxNWUifS5mYS1zb3J0LWFtb3VudC1kb3duOmJlZm9yZXtjb250ZW50OiJcZjE2MCJ9LmZhLXNvcnQtYW1vdW50LXVwOmJlZm9yZXtjb250ZW50OiJcZjE2MSJ9LmZhLXNvcnQtZG93bjpiZWZvcmV7Y29udGVudDoiXGYwZGQifS5mYS1zb3J0LW51bWVyaWMtZG93bjpiZWZvcmV7Y29udGVudDoiXGYxNjIifS5mYS1zb3J0LW51bWVyaWMtdXA6YmVmb3Jle2NvbnRlbnQ6IlxmMTYzIn0uZmEtc29ydC11cDpiZWZvcmV7Y29udGVudDoiXGYwZGUifS5mYS1zb3VuZGNsb3VkOmJlZm9yZXtjb250ZW50OiJcZjFiZSJ9LmZhLXNwYWNlLXNodXR0bGU6YmVmb3Jle2NvbnRlbnQ6IlxmMTk3In0uZmEtc3BlYWthcDpiZWZvcmV7Y29udGVudDoiXGYzZjMifS5mYS1zcGlubmVyOmJlZm9yZXtjb250ZW50OiJcZjExMCJ9LmZhLXNwb3RpZnk6YmVmb3Jle2NvbnRlbnQ6IlxmMWJjIn0uZmEtc3F1YXJlOmJlZm9yZXtjb250ZW50OiJcZjBjOCJ9LmZhLXNxdWFyZS1mdWxsOmJlZm9yZXtjb250ZW50OiJcZjQ1YyJ9LmZhLXN0YWNrLWV4Y2hhbmdlOmJlZm9yZXtjb250ZW50OiJcZjE4ZCJ9LmZhLXN0YWNrLW92ZXJmbG93OmJlZm9yZXtjb250ZW50OiJcZjE2YyJ9LmZhLXN0YXI6YmVmb3Jle2NvbnRlbnQ6IlxmMDA1In0uZmEtc3Rhci1oYWxmOmJlZm9yZXtjb250ZW50OiJcZjA4OSJ9LmZhLXN0YXlsaW5rZWQ6YmVmb3Jle2NvbnRlbnQ6IlxmM2Y1In0uZmEtc3RlYW06YmVmb3Jle2NvbnRlbnQ6IlxmMWI2In0uZmEtc3RlYW0tc3F1YXJlOmJlZm9yZXtjb250ZW50OiJcZjFiNyJ9LmZhLXN0ZWFtLXN5bWJvbDpiZWZvcmV7Y29udGVudDoiXGYzZjYifS5mYS1zdGVwLWJhY2t3YXJkOmJlZm9yZXtjb250ZW50OiJcZjA0OCJ9LmZhLXN0ZXAtZm9yd2FyZDpiZWZvcmV7Y29udGVudDoiXGYwNTEifS5mYS1zdGV0aG9zY29wZTpiZWZvcmV7Y29udGVudDoiXGYwZjEifS5mYS1zdGlja2VyLW11bGU6YmVmb3Jle2NvbnRlbnQ6IlxmM2Y3In0uZmEtc3RpY2t5LW5vdGU6YmVmb3Jle2NvbnRlbnQ6IlxmMjQ5In0uZmEtc3RvcDpiZWZvcmV7Y29udGVudDoiXGYwNGQifS5mYS1zdG9wLWNpcmNsZTpiZWZvcmV7Y29udGVudDoiXGYyOGQifS5mYS1zdG9wd2F0Y2g6YmVmb3Jle2NvbnRlbnQ6IlxmMmYyIn0uZmEtc3RyYXZhOmJlZm9yZXtjb250ZW50OiJcZjQyOCJ9LmZhLXN0cmVldC12aWV3OmJlZm9yZXtjb250ZW50OiJcZjIxZCJ9LmZhLXN0cmlrZXRocm91Z2g6YmVmb3Jle2NvbnRlbnQ6IlxmMGNjIn0uZmEtc3RyaXBlOmJlZm9yZXtjb250ZW50OiJcZjQyOSJ9LmZhLXN0cmlwZS1zOmJlZm9yZXtjb250ZW50OiJcZjQyYSJ9LmZhLXN0dWRpb3ZpbmFyaTpiZWZvcmV7Y29udGVudDoiXGYzZjgifS5mYS1zdHVtYmxldXBvbjpiZWZvcmV7Y29udGVudDoiXGYxYTQifS5mYS1zdHVtYmxldXBvbi1jaXJjbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMWEzIn0uZmEtc3Vic2NyaXB0OmJlZm9yZXtjb250ZW50OiJcZjEyYyJ9LmZhLXN1YndheTpiZWZvcmV7Y29udGVudDoiXGYyMzkifS5mYS1zdWl0Y2FzZTpiZWZvcmV7Y29udGVudDoiXGYwZjIifS5mYS1zdW46YmVmb3JlLC5mYS1zdW4tbzpiZWZvcmV7Y29udGVudDoiXGYxODUifS5mYS1zdXBlcnBvd2VyczpiZWZvcmV7Y29udGVudDoiXGYyZGQifS5mYS1zdXBlcnNjcmlwdDpiZWZvcmV7Y29udGVudDoiXGYxMmIifS5mYS1zdXBwbGU6YmVmb3Jle2NvbnRlbnQ6IlxmM2Y5In0uZmEtc3luYzpiZWZvcmV7Y29udGVudDoiXGYwMjEifS5mYS1zeW5jLWFsdDpiZWZvcmV7Y29udGVudDoiXGYyZjEifS5mYS10YWJsZTpiZWZvcmV7Y29udGVudDoiXGYwY2UifS5mYS10YWJsZS10ZW5uaXM6YmVmb3Jle2NvbnRlbnQ6IlxmNDVkIn0uZmEtdGFibGV0OmJlZm9yZXtjb250ZW50OiJcZjEwYSJ9LmZhLXRhYmxldC1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmM2ZhIn0uZmEtdGFjaG9tZXRlci1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmM2ZkIn0uZmEtdGFnOmJlZm9yZXtjb250ZW50OiJcZjAyYiJ9LmZhLXRhZ3M6YmVmb3Jle2NvbnRlbnQ6IlxmMDJjIn0uZmEtdGFza3M6YmVmb3Jle2NvbnRlbnQ6IlxmMGFlIn0uZmEtdGF4aTpiZWZvcmV7Y29udGVudDoiXGYxYmEifS5mYS10ZWxlZ3JhbTpiZWZvcmV7Y29udGVudDoiXGYyYzYifS5mYS10ZWxlZ3JhbS1wbGFuZTpiZWZvcmV7Y29udGVudDoiXGYzZmUifS5mYS10ZW5jZW50LXdlaWJvOmJlZm9yZXtjb250ZW50OiJcZjFkNSJ9LmZhLXRlcm1pbmFsOmJlZm9yZXtjb250ZW50OiJcZjEyMCJ9LmZhLXRleHQtaGVpZ2h0OmJlZm9yZXtjb250ZW50OiJcZjAzNCJ9LmZhLXRleHQtd2lkdGg6YmVmb3Jle2NvbnRlbnQ6IlxmMDM1In0uZmEtdGg6YmVmb3Jle2NvbnRlbnQ6IlxmMDBhIn0uZmEtdGgtbGFyZ2U6YmVmb3Jle2NvbnRlbnQ6IlxmMDA5In0uZmEtdGgtbGlzdDpiZWZvcmV7Y29udGVudDoiXGYwMGIifS5mYS10aGVtZWlzbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMmIyIn0uZmEtdGhlcm1vbWV0ZXItZW1wdHk6YmVmb3Jle2NvbnRlbnQ6IlxmMmNiIn0uZmEtdGhlcm1vbWV0ZXItZnVsbDpiZWZvcmV7Y29udGVudDoiXGYyYzcifS5mYS10aGVybW9tZXRlci1oYWxmOmJlZm9yZXtjb250ZW50OiJcZjJjOSJ9LmZhLXRoZXJtb21ldGVyLXF1YXJ0ZXI6YmVmb3Jle2NvbnRlbnQ6IlxmMmNhIn0uZmEtdGhlcm1vbWV0ZXItdGhyZWUtcXVhcnRlcnM6YmVmb3Jle2NvbnRlbnQ6IlxmMmM4In0uZmEtdGh1bWJzLWRvd246YmVmb3Jle2NvbnRlbnQ6IlxmMTY1In0uZmEtdGh1bWJzLXVwOmJlZm9yZXtjb250ZW50OiJcZjE2NCJ9LmZhLXRodW1idGFjazpiZWZvcmV7Y29udGVudDoiXGYwOGQifS5mYS10aWNrZXQtYWx0OmJlZm9yZXtjb250ZW50OiJcZjNmZiJ9LmZhLXRpbWVzOmJlZm9yZXtjb250ZW50OiJcZjAwZCJ9LmZhLXRpbWVzLWNpcmNsZTpiZWZvcmV7Y29udGVudDoiXGYwNTcifS5mYS10aW50OmJlZm9yZXtjb250ZW50OiJcZjA0MyJ9LmZhLXRvZ2dsZS1vZmY6YmVmb3Jle2NvbnRlbnQ6IlxmMjA0In0uZmEtdG9nZ2xlLW9uOmJlZm9yZXtjb250ZW50OiJcZjIwNSJ9LmZhLXRyYWRlbWFyazpiZWZvcmV7Y29udGVudDoiXGYyNWMifS5mYS10cmFpbjpiZWZvcmV7Y29udGVudDoiXGYyMzgifS5mYS10cmFuc2dlbmRlcjpiZWZvcmV7Y29udGVudDoiXGYyMjQifS5mYS10cmFuc2dlbmRlci1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMjI1In0uZmEtdHJhc2g6YmVmb3Jle2NvbnRlbnQ6IlxmMWY4In0uZmEtdHJhc2gtYWx0OmJlZm9yZXtjb250ZW50OiJcZjJlZCJ9LmZhLXRyZWU6YmVmb3Jle2NvbnRlbnQ6IlxmMWJiIn0uZmEtdHJlbGxvOmJlZm9yZXtjb250ZW50OiJcZjE4MSJ9LmZhLXRyaXBhZHZpc29yOmJlZm9yZXtjb250ZW50OiJcZjI2MiJ9LmZhLXRyb3BoeTpiZWZvcmV7Y29udGVudDoiXGYwOTEifS5mYS10cnVjazpiZWZvcmV7Y29udGVudDoiXGYwZDEifS5mYS10dHk6YmVmb3Jle2NvbnRlbnQ6IlxmMWU0In0uZmEtdHVtYmxyOmJlZm9yZXtjb250ZW50OiJcZjE3MyJ9LmZhLXR1bWJsci1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMTc0In0uZmEtdHY6YmVmb3Jle2NvbnRlbnQ6IlxmMjZjIn0uZmEtdHdpdGNoOmJlZm9yZXtjb250ZW50OiJcZjFlOCJ9LmZhLXR3aXR0ZXI6YmVmb3Jle2NvbnRlbnQ6IlxmMDk5In0uZmEtdHdpdHRlci1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMDgxIn0uZmEtdHlwbzM6YmVmb3Jle2NvbnRlbnQ6IlxmNDJiIn0uZmEtdWJlcjpiZWZvcmV7Y29udGVudDoiXGY0MDIifS5mYS11aWtpdDpiZWZvcmV7Y29udGVudDoiXGY0MDMifS5mYS11bWJyZWxsYTpiZWZvcmV7Y29udGVudDoiXGYwZTkifS5mYS11bmRlcmxpbmU6YmVmb3Jle2NvbnRlbnQ6IlxmMGNkIn0uZmEtdW5kbzpiZWZvcmV7Y29udGVudDoiXGYwZTIifS5mYS11bmRvLWFsdDpiZWZvcmV7Y29udGVudDoiXGYyZWEifS5mYS11bmlyZWdpc3RyeTpiZWZvcmV7Y29udGVudDoiXGY0MDQifS5mYS11bml2ZXJzYWwtYWNjZXNzOmJlZm9yZXtjb250ZW50OiJcZjI5YSJ9LmZhLXVuaXZlcnNpdHk6YmVmb3Jle2NvbnRlbnQ6IlxmMTljIn0uZmEtdW5saW5rOmJlZm9yZXtjb250ZW50OiJcZjEyNyJ9LmZhLXVubG9jazpiZWZvcmV7Y29udGVudDoiXGYwOWMifS5mYS11bmxvY2stYWx0OmJlZm9yZXtjb250ZW50OiJcZjEzZSJ9LmZhLXVudGFwcGQ6YmVmb3Jle2NvbnRlbnQ6IlxmNDA1In0uZmEtdXBsb2FkOmJlZm9yZXtjb250ZW50OiJcZjA5MyJ9LmZhLXVzYjpiZWZvcmV7Y29udGVudDoiXGYyODcifS5mYS11c2VyOmJlZm9yZXtjb250ZW50OiJcZjAwNyJ9LmZhLXVzZXItY2lyY2xlOmJlZm9yZXtjb250ZW50OiJcZjJiZCJ9LmZhLXVzZXItbWQ6YmVmb3Jle2NvbnRlbnQ6IlxmMGYwIn0uZmEtdXNlci1wbHVzOmJlZm9yZXtjb250ZW50OiJcZjIzNCJ9LmZhLXVzZXItc2VjcmV0OmJlZm9yZXtjb250ZW50OiJcZjIxYiJ9LmZhLXVzZXItdGltZXM6YmVmb3Jle2NvbnRlbnQ6IlxmMjM1In0uZmEtdXNlcnM6YmVmb3Jle2NvbnRlbnQ6IlxmMGMwIn0uZmEtdXNzdW5uYWg6YmVmb3Jle2NvbnRlbnQ6IlxmNDA3In0uZmEtdXRlbnNpbC1zcG9vbjpiZWZvcmV7Y29udGVudDoiXGYyZTUifS5mYS11dGVuc2lsczpiZWZvcmV7Y29udGVudDoiXGYyZTcifS5mYS12YWFkaW46YmVmb3Jle2NvbnRlbnQ6IlxmNDA4In0uZmEtdmVudXM6YmVmb3Jle2NvbnRlbnQ6IlxmMjIxIn0uZmEtdmVudXMtZG91YmxlOmJlZm9yZXtjb250ZW50OiJcZjIyNiJ9LmZhLXZlbnVzLW1hcnM6YmVmb3Jle2NvbnRlbnQ6IlxmMjI4In0uZmEtdmlhY29pbjpiZWZvcmV7Y29udGVudDoiXGYyMzcifS5mYS12aWFkZW86YmVmb3Jle2NvbnRlbnQ6IlxmMmE5In0uZmEtdmlhZGVvLXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYyYWEifS5mYS12aWJlcjpiZWZvcmV7Y29udGVudDoiXGY0MDkifS5mYS12aWRlbzpiZWZvcmV7Y29udGVudDoiXGYwM2QifS5mYS12aW1lbzpiZWZvcmV7Y29udGVudDoiXGY0MGEifS5mYS12aW1lby1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMTk0In0uZmEtdmltZW8tdjpiZWZvcmV7Y29udGVudDoiXGYyN2QifS5mYS12aW5lOmJlZm9yZXtjb250ZW50OiJcZjFjYSJ9LmZhLXZrOmJlZm9yZXtjb250ZW50OiJcZjE4OSJ9LmZhLXZudjpiZWZvcmV7Y29udGVudDoiXGY0MGIifS5mYS12b2xsZXliYWxsLWJhbGw6YmVmb3Jle2NvbnRlbnQ6IlxmNDVmIn0uZmEtdm9sdW1lLWRvd246YmVmb3Jle2NvbnRlbnQ6IlxmMDI3In0uZmEtdm9sdW1lLW9mZjpiZWZvcmV7Y29udGVudDoiXGYwMjYifS5mYS12b2x1bWUtdXA6YmVmb3Jle2NvbnRlbnQ6IlxmMDI4In0uZmEtdnVlanM6YmVmb3Jle2NvbnRlbnQ6IlxmNDFmIn0uZmEtd2VpYm86YmVmb3Jle2NvbnRlbnQ6IlxmMThhIn0uZmEtd2VpeGluOmJlZm9yZXtjb250ZW50OiJcZjFkNyJ9LmZhLXdoYXRzYXBwOmJlZm9yZXtjb250ZW50OiJcZjIzMiJ9LmZhLXdoYXRzYXBwLXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGY0MGMifS5mYS13aGVlbGNoYWlyOmJlZm9yZXtjb250ZW50OiJcZjE5MyJ9LmZhLXdobWNzOmJlZm9yZXtjb250ZW50OiJcZjQwZCJ9LmZhLXdpZmk6YmVmb3Jle2NvbnRlbnQ6IlxmMWViIn0uZmEtd2lraXBlZGlhLXc6YmVmb3Jle2NvbnRlbnQ6IlxmMjY2In0uZmEtd2luZG93LWNsb3NlOmJlZm9yZXtjb250ZW50OiJcZjQxMCJ9LmZhLXdpbmRvdy1tYXhpbWl6ZTpiZWZvcmV7Y29udGVudDoiXGYyZDAifS5mYS13aW5kb3ctbWluaW1pemU6YmVmb3Jle2NvbnRlbnQ6IlxmMmQxIn0uZmEtd2luZG93LXJlc3RvcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMmQyIn0uZmEtd2luZG93czpiZWZvcmV7Y29udGVudDoiXGYxN2EifS5mYS13b24tc2lnbjpiZWZvcmV7Y29udGVudDoiXGYxNTkifS5mYS13b3JkcHJlc3M6YmVmb3Jle2NvbnRlbnQ6IlxmMTlhIn0uZmEtd29yZHByZXNzLXNpbXBsZTpiZWZvcmV7Y29udGVudDoiXGY0MTEifS5mYS13cGJlZ2lubmVyOmJlZm9yZXtjb250ZW50OiJcZjI5NyJ9LmZhLXdwZXhwbG9yZXI6YmVmb3Jle2NvbnRlbnQ6IlxmMmRlIn0uZmEtd3Bmb3JtczpiZWZvcmV7Y29udGVudDoiXGYyOTgifS5mYS13cmVuY2g6YmVmb3Jle2NvbnRlbnQ6IlxmMGFkIn0uZmEteGJveDpiZWZvcmV7Y29udGVudDoiXGY0MTIifS5mYS14aW5nOmJlZm9yZXtjb250ZW50OiJcZjE2OCJ9LmZhLXhpbmctc3F1YXJlOmJlZm9yZXtjb250ZW50OiJcZjE2OSJ9LmZhLXktY29tYmluYXRvcjpiZWZvcmV7Y29udGVudDoiXGYyM2IifS5mYS15YWhvbzpiZWZvcmV7Y29udGVudDoiXGYxOWUifS5mYS15YW5kZXg6YmVmb3Jle2NvbnRlbnQ6IlxmNDEzIn0uZmEteWFuZGV4LWludGVybmF0aW9uYWw6YmVmb3Jle2NvbnRlbnQ6IlxmNDE0In0uZmEteWVscDpiZWZvcmV7Y29udGVudDoiXGYxZTkifS5mYS15ZW4tc2lnbjpiZWZvcmV7Y29udGVudDoiXGYxNTcifS5mYS15b2FzdDpiZWZvcmV7Y29udGVudDoiXGYyYjEifS5mYS15b3V0dWJlOmJlZm9yZXtjb250ZW50OiJcZjE2NyJ9LmZhLXlvdXR1YmUtc3F1YXJlOmJlZm9yZXtjb250ZW50OiJcZjQzMSJ9Ci8qKiAvY3NzL3YyL2FuaW1hdGUuY3NzICoqLwouYW5pbS1iZWF0IHsgLXdlYmtpdC1hbmltYXRpb24tbmFtZTphbmltLWJlYXQ7IGFuaW1hdGlvbi1uYW1lOmFuaW0tYmVhdDsgLXdlYmtpdC1hbmltYXRpb24tZGVsYXk6dmFyKC0tYW5pbS1kZWxheSwwcyk7IGFuaW1hdGlvbi1kZWxheTp2YXIoLS1hbmltLWRlbGF5LDBzKTsgLXdlYmtpdC1hbmltYXRpb24tZGlyZWN0aW9uOnZhcigtLWFuaW0tZGlyZWN0aW9uLG5vcm1hbCk7IGFuaW1hdGlvbi1kaXJlY3Rpb246dmFyKC0tYW5pbS1kaXJlY3Rpb24sbm9ybWFsKTsgLXdlYmtpdC1hbmltYXRpb24tZHVyYXRpb246dmFyKC0tYW5pbS1kdXJhdGlvbiwxcyk7IGFuaW1hdGlvbi1kdXJhdGlvbjp2YXIoLS1hbmltLWR1cmF0aW9uLDFzKTsgLXdlYmtpdC1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50OnZhcigtLWFuaW0taXRlcmF0aW9uLWNvdW50LGluZmluaXRlKTsgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDp2YXIoLS1hbmltLWl0ZXJhdGlvbi1jb3VudCxpbmZpbml0ZSk7IC13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjp2YXIoLS1hbmltLXRpbWluZyxlYXNlLWluLW91dCk7IGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246dmFyKC0tYW5pbS10aW1pbmcsZWFzZS1pbi1vdXQpIH0gLmFuaW0tYm91bmNlIHsgLXdlYmtpdC1hbmltYXRpb24tbmFtZTphbmltLWJvdW5jZTsgYW5pbWF0aW9uLW5hbWU6YW5pbS1ib3VuY2U7IC13ZWJraXQtYW5pbWF0aW9uLWRlbGF5OnZhcigtLWFuaW0tZGVsYXksMHMpOyBhbmltYXRpb24tZGVsYXk6dmFyKC0tYW5pbS1kZWxheSwwcyk7IC13ZWJraXQtYW5pbWF0aW9uLWRpcmVjdGlvbjp2YXIoLS1hbmltLWRpcmVjdGlvbixub3JtYWwpOyBhbmltYXRpb24tZGlyZWN0aW9uOnZhcigtLWFuaW0tZGlyZWN0aW9uLG5vcm1hbCk7IC13ZWJraXQtYW5pbWF0aW9uLWR1cmF0aW9uOnZhcigtLWFuaW0tZHVyYXRpb24sMXMpOyBhbmltYXRpb24tZHVyYXRpb246dmFyKC0tYW5pbS1kdXJhdGlvbiwxcyk7IC13ZWJraXQtYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDp2YXIoLS1hbmltLWl0ZXJhdGlvbi1jb3VudCxpbmZpbml0ZSk7IGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6dmFyKC0tYW5pbS1pdGVyYXRpb24tY291bnQsaW5maW5pdGUpOyAtd2Via2l0LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246dmFyKC0tYW5pbS10aW1pbmcsY3ViaWMtYmV6aWVyKC4yOCwuODQsLjQyLDEpKTsgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjp2YXIoLS1hbmltLXRpbWluZyxjdWJpYy1iZXppZXIoLjI4LC44NCwuNDIsMSkpIH0gLmFuaW0tZmFkZSB7IC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6YW5pbS1mYWRlOyBhbmltYXRpb24tbmFtZTphbmltLWZhZGU7IC13ZWJraXQtYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDp2YXIoLS1hbmltLWl0ZXJhdGlvbi1jb3VudCxpbmZpbml0ZSk7IGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6dmFyKC0tYW5pbS1pdGVyYXRpb24tY291bnQsaW5maW5pdGUpOyAtd2Via2l0LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246dmFyKC0tYW5pbS10aW1pbmcsY3ViaWMtYmV6aWVyKC40LDAsLjYsMSkpOyBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOnZhcigtLWFuaW0tdGltaW5nLGN1YmljLWJlemllciguNCwwLC42LDEpKSB9IC5hbmltLWJlYXQtZmFkZSwuYW5pbS1mYWRlIHsgLXdlYmtpdC1hbmltYXRpb24tZGVsYXk6dmFyKC0tYW5pbS1kZWxheSwwcyk7IGFuaW1hdGlvbi1kZWxheTp2YXIoLS1hbmltLWRlbGF5LDBzKTsgLXdlYmtpdC1hbmltYXRpb24tZGlyZWN0aW9uOnZhcigtLWFuaW0tZGlyZWN0aW9uLG5vcm1hbCk7IGFuaW1hdGlvbi1kaXJlY3Rpb246dmFyKC0tYW5pbS1kaXJlY3Rpb24sbm9ybWFsKTsgLXdlYmtpdC1hbmltYXRpb24tZHVyYXRpb246dmFyKC0tYW5pbS1kdXJhdGlvbiwxcyk7IGFuaW1hdGlvbi1kdXJhdGlvbjp2YXIoLS1hbmltLWR1cmF0aW9uLDFzKSB9IC5hbmltLWJlYXQtZmFkZSB7IC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6YW5pbS1iZWF0LWZhZGU7IGFuaW1hdGlvbi1uYW1lOmFuaW0tYmVhdC1mYWRlOyAtd2Via2l0LWFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6dmFyKC0tYW5pbS1pdGVyYXRpb24tY291bnQsaW5maW5pdGUpOyBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OnZhcigtLWFuaW0taXRlcmF0aW9uLWNvdW50LGluZmluaXRlKTsgLXdlYmtpdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOnZhcigtLWFuaW0tdGltaW5nLGN1YmljLWJlemllciguNCwwLC42LDEpKTsgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjp2YXIoLS1hbmltLXRpbWluZyxjdWJpYy1iZXppZXIoLjQsMCwuNiwxKSkgfSAuYW5pbS1mbGlwIHsgLXdlYmtpdC1hbmltYXRpb24tbmFtZTphbmltLWZsaXA7IGFuaW1hdGlvbi1uYW1lOmFuaW0tZmxpcDsgLXdlYmtpdC1hbmltYXRpb24tZGVsYXk6dmFyKC0tYW5pbS1kZWxheSwwcyk7IGFuaW1hdGlvbi1kZWxheTp2YXIoLS1hbmltLWRlbGF5LDBzKTsgLXdlYmtpdC1hbmltYXRpb24tZGlyZWN0aW9uOnZhcigtLWFuaW0tZGlyZWN0aW9uLG5vcm1hbCk7IGFuaW1hdGlvbi1kaXJlY3Rpb246dmFyKC0tYW5pbS1kaXJlY3Rpb24sbm9ybWFsKTsgLXdlYmtpdC1hbmltYXRpb24tZHVyYXRpb246dmFyKC0tYW5pbS1kdXJhdGlvbiwzcyk7IGFuaW1hdGlvbi1kdXJhdGlvbjp2YXIoLS1hbmltLWR1cmF0aW9uLDNzKTsgLXdlYmtpdC1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50OnZhcigtLWFuaW0taXRlcmF0aW9uLWNvdW50LGluZmluaXRlKTsgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDp2YXIoLS1hbmltLWl0ZXJhdGlvbi1jb3VudCxpbmZpbml0ZSk7IC13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjp2YXIoLS1hbmltLXRpbWluZyxlYXNlLWluLW91dCk7IGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246dmFyKC0tYW5pbS10aW1pbmcsZWFzZS1pbi1vdXQpIH0gLmFuaW0tc2hha2UgeyAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOmFuaW0tc2hha2U7IGFuaW1hdGlvbi1uYW1lOmFuaW0tc2hha2U7IC13ZWJraXQtYW5pbWF0aW9uLWR1cmF0aW9uOnZhcigtLWFuaW0tZHVyYXRpb24sMXMpOyBhbmltYXRpb24tZHVyYXRpb246dmFyKC0tYW5pbS1kdXJhdGlvbiwxcyk7IC13ZWJraXQtYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDp2YXIoLS1hbmltLWl0ZXJhdGlvbi1jb3VudCxpbmZpbml0ZSk7IGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6dmFyKC0tYW5pbS1pdGVyYXRpb24tY291bnQsaW5maW5pdGUpOyAtd2Via2l0LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246dmFyKC0tYW5pbS10aW1pbmcsbGluZWFyKTsgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjp2YXIoLS1hbmltLXRpbWluZyxsaW5lYXIpIH0gLmFuaW0tc2hha2UsLmFuaW0tc3BpbiB7IC13ZWJraXQtYW5pbWF0aW9uLWRlbGF5OnZhcigtLWFuaW0tZGVsYXksMHMpOyBhbmltYXRpb24tZGVsYXk6dmFyKC0tYW5pbS1kZWxheSwwcyk7IC13ZWJraXQtYW5pbWF0aW9uLWRpcmVjdGlvbjp2YXIoLS1hbmltLWRpcmVjdGlvbixub3JtYWwpOyBhbmltYXRpb24tZGlyZWN0aW9uOnZhcigtLWFuaW0tZGlyZWN0aW9uLG5vcm1hbCkgfSAuYW5pbS1zcGluIHsgLXdlYmtpdC1hbmltYXRpb24tbmFtZTphbmltLXNwaW47IGFuaW1hdGlvbi1uYW1lOmFuaW0tc3BpbjsgLXdlYmtpdC1hbmltYXRpb24tZHVyYXRpb246dmFyKC0tYW5pbS1kdXJhdGlvbiwycyk7IGFuaW1hdGlvbi1kdXJhdGlvbjp2YXIoLS1hbmltLWR1cmF0aW9uLDJzKTsgLXdlYmtpdC1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50OnZhcigtLWFuaW0taXRlcmF0aW9uLWNvdW50LGluZmluaXRlKTsgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDp2YXIoLS1hbmltLWl0ZXJhdGlvbi1jb3VudCxpbmZpbml0ZSk7IC13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjp2YXIoLS1hbmltLXRpbWluZyxsaW5lYXIpOyBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOnZhcigtLWFuaW0tdGltaW5nLGxpbmVhcikgfSAuYW5pbS1zcGluLXJldmVyc2UgeyAtLWFuaW0tZGlyZWN0aW9uOnJldmVyc2UgfSAuYW5pbS1wdWxzZSwuYW5pbS1zcGluLXB1bHNlIHsgLXdlYmtpdC1hbmltYXRpb24tbmFtZTphbmltLXNwaW47IGFuaW1hdGlvbi1uYW1lOmFuaW0tc3BpbjsgLXdlYmtpdC1hbmltYXRpb24tZGlyZWN0aW9uOnZhcigtLWFuaW0tZGlyZWN0aW9uLG5vcm1hbCk7IGFuaW1hdGlvbi1kaXJlY3Rpb246dmFyKC0tYW5pbS1kaXJlY3Rpb24sbm9ybWFsKTsgLXdlYmtpdC1hbmltYXRpb24tZHVyYXRpb246dmFyKC0tYW5pbS1kdXJhdGlvbiwxcyk7IGFuaW1hdGlvbi1kdXJhdGlvbjp2YXIoLS1hbmltLWR1cmF0aW9uLDFzKTsgLXdlYmtpdC1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50OnZhcigtLWFuaW0taXRlcmF0aW9uLWNvdW50LGluZmluaXRlKTsgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDp2YXIoLS1hbmltLWl0ZXJhdGlvbi1jb3VudCxpbmZpbml0ZSk7IC13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjp2YXIoLS1hbmltLXRpbWluZyxzdGVwcyg4KSk7IGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246dmFyKC0tYW5pbS10aW1pbmcsc3RlcHMoOCkpIH0gQC13ZWJraXQta2V5ZnJhbWVzIGFuaW0tYmVhdCB7IDAlLDkwJSB7IC13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKDEpOyB0cmFuc2Zvcm06c2NhbGUoMSkgfSA0NSUgeyAtd2Via2l0LXRyYW5zZm9ybTpzY2FsZSh2YXIoLS1hbmltLWJlYXQtc2NhbGUsMS4yNSkpOyB0cmFuc2Zvcm06c2NhbGUodmFyKC0tYW5pbS1iZWF0LXNjYWxlLDEuMjUpKSB9IH0gQGtleWZyYW1lcyBhbmltLWJlYXQgeyAwJSw5MCUgeyAtd2Via2l0LXRyYW5zZm9ybTpzY2FsZSgxKTsgdHJhbnNmb3JtOnNjYWxlKDEpIH0gNDUlIHsgLXdlYmtpdC10cmFuc2Zvcm06c2NhbGUodmFyKC0tYW5pbS1iZWF0LXNjYWxlLDEuMjUpKTsgdHJhbnNmb3JtOnNjYWxlKHZhcigtLWFuaW0tYmVhdC1zY2FsZSwxLjI1KSkgfSB9IEAtd2Via2l0LWtleWZyYW1lcyBhbmltLWJvdW5jZSB7IDAlIHsgLXdlYmtpdC10cmFuc2Zvcm06c2NhbGUoMSkgdHJhbnNsYXRlWSgwKTsgdHJhbnNmb3JtOnNjYWxlKDEpIHRyYW5zbGF0ZVkoMCkgfSAxMCUgeyAtd2Via2l0LXRyYW5zZm9ybTpzY2FsZSh2YXIoLS1hbmltLWJvdW5jZS1zdGFydC1zY2FsZS14LDEuMSksdmFyKC0tYW5pbS1ib3VuY2Utc3RhcnQtc2NhbGUteSwuOSkpIHRyYW5zbGF0ZVkoMCk7IHRyYW5zZm9ybTpzY2FsZSh2YXIoLS1hbmltLWJvdW5jZS1zdGFydC1zY2FsZS14LDEuMSksdmFyKC0tYW5pbS1ib3VuY2Utc3RhcnQtc2NhbGUteSwuOSkpIHRyYW5zbGF0ZVkoMCkgfSAzMCUgeyAtd2Via2l0LXRyYW5zZm9ybTpzY2FsZSh2YXIoLS1hbmltLWJvdW5jZS1qdW1wLXNjYWxlLXgsLjkpLHZhcigtLWFuaW0tYm91bmNlLWp1bXAtc2NhbGUteSwxLjEpKSB0cmFuc2xhdGVZKHZhcigtLWFuaW0tYm91bmNlLWhlaWdodCwtLjVlbSkpOyB0cmFuc2Zvcm06c2NhbGUodmFyKC0tYW5pbS1ib3VuY2UtanVtcC1zY2FsZS14LC45KSx2YXIoLS1hbmltLWJvdW5jZS1qdW1wLXNjYWxlLXksMS4xKSkgdHJhbnNsYXRlWSh2YXIoLS1hbmltLWJvdW5jZS1oZWlnaHQsLS41ZW0pKSB9IDUwJSB7IC13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKHZhcigtLWFuaW0tYm91bmNlLWxhbmQtc2NhbGUteCwxLjA1KSx2YXIoLS1hbmltLWJvdW5jZS1sYW5kLXNjYWxlLXksLjk1KSkgdHJhbnNsYXRlWSgwKTsgdHJhbnNmb3JtOnNjYWxlKHZhcigtLWFuaW0tYm91bmNlLWxhbmQtc2NhbGUteCwxLjA1KSx2YXIoLS1hbmltLWJvdW5jZS1sYW5kLXNjYWxlLXksLjk1KSkgdHJhbnNsYXRlWSgwKSB9IDU3JSB7IC13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKDEpIHRyYW5zbGF0ZVkodmFyKC0tYW5pbS1ib3VuY2UtcmVib3VuZCwtLjEyNWVtKSk7IHRyYW5zZm9ybTpzY2FsZSgxKSB0cmFuc2xhdGVZKHZhcigtLWFuaW0tYm91bmNlLXJlYm91bmQsLS4xMjVlbSkpIH0gNjQlIHsgLXdlYmtpdC10cmFuc2Zvcm06c2NhbGUoMSkgdHJhbnNsYXRlWSgwKTsgdHJhbnNmb3JtOnNjYWxlKDEpIHRyYW5zbGF0ZVkoMCkgfSB0byB7IC13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKDEpIHRyYW5zbGF0ZVkoMCk7IHRyYW5zZm9ybTpzY2FsZSgxKSB0cmFuc2xhdGVZKDApIH0gfSBAa2V5ZnJhbWVzIGFuaW0tYm91bmNlIHsgMCUgeyAtd2Via2l0LXRyYW5zZm9ybTpzY2FsZSgxKSB0cmFuc2xhdGVZKDApOyB0cmFuc2Zvcm06c2NhbGUoMSkgdHJhbnNsYXRlWSgwKSB9IDEwJSB7IC13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKHZhcigtLWFuaW0tYm91bmNlLXN0YXJ0LXNjYWxlLXgsMS4xKSx2YXIoLS1hbmltLWJvdW5jZS1zdGFydC1zY2FsZS15LC45KSkgdHJhbnNsYXRlWSgwKTsgdHJhbnNmb3JtOnNjYWxlKHZhcigtLWFuaW0tYm91bmNlLXN0YXJ0LXNjYWxlLXgsMS4xKSx2YXIoLS1hbmltLWJvdW5jZS1zdGFydC1zY2FsZS15LC45KSkgdHJhbnNsYXRlWSgwKSB9IDMwJSB7IC13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKHZhcigtLWFuaW0tYm91bmNlLWp1bXAtc2NhbGUteCwuOSksdmFyKC0tYW5pbS1ib3VuY2UtanVtcC1zY2FsZS15LDEuMSkpIHRyYW5zbGF0ZVkodmFyKC0tYW5pbS1ib3VuY2UtaGVpZ2h0LC0uNWVtKSk7IHRyYW5zZm9ybTpzY2FsZSh2YXIoLS1hbmltLWJvdW5jZS1qdW1wLXNjYWxlLXgsLjkpLHZhcigtLWFuaW0tYm91bmNlLWp1bXAtc2NhbGUteSwxLjEpKSB0cmFuc2xhdGVZKHZhcigtLWFuaW0tYm91bmNlLWhlaWdodCwtLjVlbSkpIH0gNTAlIHsgLXdlYmtpdC10cmFuc2Zvcm06c2NhbGUodmFyKC0tYW5pbS1ib3VuY2UtbGFuZC1zY2FsZS14LDEuMDUpLHZhcigtLWFuaW0tYm91bmNlLWxhbmQtc2NhbGUteSwuOTUpKSB0cmFuc2xhdGVZKDApOyB0cmFuc2Zvcm06c2NhbGUodmFyKC0tYW5pbS1ib3VuY2UtbGFuZC1zY2FsZS14LDEuMDUpLHZhcigtLWFuaW0tYm91bmNlLWxhbmQtc2NhbGUteSwuOTUpKSB0cmFuc2xhdGVZKDApIH0gNTclIHsgLXdlYmtpdC10cmFuc2Zvcm06c2NhbGUoMSkgdHJhbnNsYXRlWSh2YXIoLS1hbmltLWJvdW5jZS1yZWJvdW5kLC0uMTI1ZW0pKTsgdHJhbnNmb3JtOnNjYWxlKDEpIHRyYW5zbGF0ZVkodmFyKC0tYW5pbS1ib3VuY2UtcmVib3VuZCwtLjEyNWVtKSkgfSA2NCUgeyAtd2Via2l0LXRyYW5zZm9ybTpzY2FsZSgxKSB0cmFuc2xhdGVZKDApOyB0cmFuc2Zvcm06c2NhbGUoMSkgdHJhbnNsYXRlWSgwKSB9IHRvIHsgLXdlYmtpdC10cmFuc2Zvcm06c2NhbGUoMSkgdHJhbnNsYXRlWSgwKTsgdHJhbnNmb3JtOnNjYWxlKDEpIHRyYW5zbGF0ZVkoMCkgfSB9IEAtd2Via2l0LWtleWZyYW1lcyBhbmltLWZhZGUgeyA1MCUgeyBvcGFjaXR5OnZhcigtLWFuaW0tZmFkZS1vcGFjaXR5LC40KSB9IH0gQGtleWZyYW1lcyBhbmltLWZhZGUgeyA1MCUgeyBvcGFjaXR5OnZhcigtLWFuaW0tZmFkZS1vcGFjaXR5LC40KSB9IH0gQC13ZWJraXQta2V5ZnJhbWVzIGFuaW0tYmVhdC1mYWRlIHsgMCUsdG8geyBvcGFjaXR5OnZhcigtLWFuaW0tYmVhdC1mYWRlLW9wYWNpdHksLjQpOyAtd2Via2l0LXRyYW5zZm9ybTpzY2FsZSgxKTsgdHJhbnNmb3JtOnNjYWxlKDEpIH0gNTAlIHsgb3BhY2l0eToxOyAtd2Via2l0LXRyYW5zZm9ybTpzY2FsZSh2YXIoLS1hbmltLWJlYXQtZmFkZS1zY2FsZSwxLjEyNSkpOyB0cmFuc2Zvcm06c2NhbGUodmFyKC0tYW5pbS1iZWF0LWZhZGUtc2NhbGUsMS4xMjUpKSB9IH0gQGtleWZyYW1lcyBhbmltLWJlYXQtZmFkZSB7IDAlLHRvIHsgb3BhY2l0eTp2YXIoLS1hbmltLWJlYXQtZmFkZS1vcGFjaXR5LC40KTsgLXdlYmtpdC10cmFuc2Zvcm06c2NhbGUoMSk7IHRyYW5zZm9ybTpzY2FsZSgxKSB9IDUwJSB7IG9wYWNpdHk6MTsgLXdlYmtpdC10cmFuc2Zvcm06c2NhbGUodmFyKC0tYW5pbS1iZWF0LWZhZGUtc2NhbGUsMS4xMjUpKTsgdHJhbnNmb3JtOnNjYWxlKHZhcigtLWFuaW0tYmVhdC1mYWRlLXNjYWxlLDEuMTI1KSkgfSB9IEAtd2Via2l0LWtleWZyYW1lcyBhbmltLWZsaXAgeyA1MCUgeyAtd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUzZCh2YXIoLS1hbmltLWZsaXAteCwwKSx2YXIoLS1hbmltLWZsaXAteSwxKSx2YXIoLS1hbmltLWZsaXAteiwwKSx2YXIoLS1hbmltLWZsaXAtYW5nbGUsLTE4MGRlZykpOyB0cmFuc2Zvcm06cm90YXRlM2QodmFyKC0tYW5pbS1mbGlwLXgsMCksdmFyKC0tYW5pbS1mbGlwLXksMSksdmFyKC0tYW5pbS1mbGlwLXosMCksdmFyKC0tYW5pbS1mbGlwLWFuZ2xlLC0xODBkZWcpKSB9IH0gQGtleWZyYW1lcyBhbmltLWZsaXAgeyA1MCUgeyAtd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUzZCh2YXIoLS1hbmltLWZsaXAteCwwKSx2YXIoLS1hbmltLWZsaXAteSwxKSx2YXIoLS1hbmltLWZsaXAteiwwKSx2YXIoLS1hbmltLWZsaXAtYW5nbGUsLTE4MGRlZykpOyB0cmFuc2Zvcm06cm90YXRlM2QodmFyKC0tYW5pbS1mbGlwLXgsMCksdmFyKC0tYW5pbS1mbGlwLXksMSksdmFyKC0tYW5pbS1mbGlwLXosMCksdmFyKC0tYW5pbS1mbGlwLWFuZ2xlLC0xODBkZWcpKSB9IH0gQC13ZWJraXQta2V5ZnJhbWVzIGFuaW0tc2hha2UgeyAwJSB7IC13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgtMTVkZWcpOyB0cmFuc2Zvcm06cm90YXRlKC0xNWRlZykgfSA0JSB7IC13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgxNWRlZyk7IHRyYW5zZm9ybTpyb3RhdGUoMTVkZWcpIH0gOCUsMjQlIHsgLXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKC0xOGRlZyk7IHRyYW5zZm9ybTpyb3RhdGUoLTE4ZGVnKSB9IDEyJSwyOCUgeyAtd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoMThkZWcpOyB0cmFuc2Zvcm06cm90YXRlKDE4ZGVnKSB9IDE2JSB7IC13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgtMjJkZWcpOyB0cmFuc2Zvcm06cm90YXRlKC0yMmRlZykgfSAyMCUgeyAtd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoMjJkZWcpOyB0cmFuc2Zvcm06cm90YXRlKDIyZGVnKSB9IDMyJSB7IC13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgtMTJkZWcpOyB0cmFuc2Zvcm06cm90YXRlKC0xMmRlZykgfSAzNiUgeyAtd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoMTJkZWcpOyB0cmFuc2Zvcm06cm90YXRlKDEyZGVnKSB9IDQwJSx0byB7IC13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgwZGVnKTsgdHJhbnNmb3JtOnJvdGF0ZSgwZGVnKSB9IH0gQGtleWZyYW1lcyBhbmltLXNoYWtlIHsgMCUgeyAtd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoLTE1ZGVnKTsgdHJhbnNmb3JtOnJvdGF0ZSgtMTVkZWcpIH0gNCUgeyAtd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoMTVkZWcpOyB0cmFuc2Zvcm06cm90YXRlKDE1ZGVnKSB9IDglLDI0JSB7IC13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgtMThkZWcpOyB0cmFuc2Zvcm06cm90YXRlKC0xOGRlZykgfSAxMiUsMjglIHsgLXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDE4ZGVnKTsgdHJhbnNmb3JtOnJvdGF0ZSgxOGRlZykgfSAxNiUgeyAtd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoLTIyZGVnKTsgdHJhbnNmb3JtOnJvdGF0ZSgtMjJkZWcpIH0gMjAlIHsgLXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDIyZGVnKTsgdHJhbnNmb3JtOnJvdGF0ZSgyMmRlZykgfSAzMiUgeyAtd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoLTEyZGVnKTsgdHJhbnNmb3JtOnJvdGF0ZSgtMTJkZWcpIH0gMzYlIHsgLXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDEyZGVnKTsgdHJhbnNmb3JtOnJvdGF0ZSgxMmRlZykgfSA0MCUsdG8geyAtd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoMGRlZyk7IHRyYW5zZm9ybTpyb3RhdGUoMGRlZykgfSB9IEAtd2Via2l0LWtleWZyYW1lcyBhbmltLXNwaW4geyAwJSB7IC13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgwZGVnKTsgdHJhbnNmb3JtOnJvdGF0ZSgwZGVnKSB9IHRvIHsgLXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDF0dXJuKTsgdHJhbnNmb3JtOnJvdGF0ZSgxdHVybikgfSB9IEBrZXlmcmFtZXMgYW5pbS1zcGluIHsgMCUgeyAtd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoMGRlZyk7IHRyYW5zZm9ybTpyb3RhdGUoMGRlZykgfSB0byB7IC13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgxdHVybik7IHRyYW5zZm9ybTpyb3RhdGUoMXR1cm4pIH0gfSBAc3VwcG9ydHMgKC13ZWJraXQtdG91Y2gtY2FsbG91dDpub25lKSB7IGJvZHkgI3Byb21vVG9wQnRuIC5hbmltLWZsaXB7IC13ZWJraXQtYW5pbWF0aW9uLWRlbGF5OnVuc2V0OyBhbmltYXRpb24tZGVsYXk6dW5zZXQ7IC13ZWJraXQtYW5pbWF0aW9uLWRpcmVjdGlvbjp1bnNldDsgYW5pbWF0aW9uLWRpcmVjdGlvbjp1bnNldDsgLXdlYmtpdC1hbmltYXRpb24tZHVyYXRpb246dW5zZXQ7IGFuaW1hdGlvbi1kdXJhdGlvbjp1bnNldDsgLXdlYmtpdC1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50OnVuc2V0OyBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OnVuc2V0OyAtd2Via2l0LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246dW5zZXQ7IGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246dW5zZXQ7IH0gfSAucHVsc2F0aW5nLWNpcmNsZSB7IHBvc2l0aW9uOnJlbGF0aXZlOyB3aWR0aDozMHB4OyBoZWlnaHQ6MzBweDsgZmxleDowIDAgYXV0bzsgJjpiZWZvcmUgeyBjb250ZW50OicnOyBwb3NpdGlvbjpyZWxhdGl2ZTsgZGlzcGxheTpibG9jazsgd2lkdGg6MzAwJTsgaGVpZ2h0OjMwMCU7IGJveC1zaXppbmc6Ym9yZGVyLWJveDsgbWFyZ2luLWxlZnQ6LTEwMCU7IG1hcmdpbi10b3A6LTEwMCU7IGJvcmRlci1yYWRpdXM6NDVweDsgYmFja2dyb3VuZC1jb2xvcjojMDFhNGU5OyBhbmltYXRpb246cHVsc2UtcmluZyAxLjI1cyBjdWJpYy1iZXppZXIoMC4yMTUsIDAuNjEsIDAuMzU1LCAxKSBpbmZpbml0ZTsgfSAmOmFmdGVyIHsgY29udGVudDonJzsgcG9zaXRpb246YWJzb2x1dGU7IGxlZnQ6MDsgdG9wOjA7IGRpc3BsYXk6YmxvY2s7IHdpZHRoOjEwMCU7IGhlaWdodDoxMDAlOyBiYWNrZ3JvdW5kLWNvbG9yOndoaXRlOyBib3JkZXItcmFkaXVzOjE1cHg7IGJveC1zaGFkb3c6MCAwIDhweCByZ2JhKDAsMCwwLC4zKTsgYW5pbWF0aW9uOnB1bHNlLWRvdCAxLjI1cyBjdWJpYy1iZXppZXIoMC40NTUsIDAuMDMsIDAuNTE1LCAwLjk1NSkgLS40cyBpbmZpbml0ZTsgfSB9IEBrZXlmcmFtZXMgcHVsc2UtcmluZyB7IDAlIHsgdHJhbnNmb3JtOnNjYWxlKC4zMyk7IH0gODAlLCAxMDAlIHsgb3BhY2l0eTowOyB9IH0gQGtleWZyYW1lcyBwdWxzZS1kb3QgeyAwJSB7IHRyYW5zZm9ybTpzY2FsZSguOCk7IH0gNTAlIHsgdHJhbnNmb3JtOnNjYWxlKDEpOyB9IDEwMCUgeyB0cmFuc2Zvcm06c2NhbGUoLjgpOyB9IH0KLyoqIC9jc3MvZGl2X2xheWVycy5jc3MgKiovCmRpdi5NYWluQm94TGF5ZXJ7IHdpZHRoOm1pbigxMDAlLDk2MHB4KTsgbWFyZ2luOjAgYXV0bzsgfSBkaXYuTWFpbkJveExheWVyIEgxeyB3aWR0aDo5NDBweDsgfSBkaXYuTWFpbkJveExheWVyIC5yZXNwb25zaXZlLWVkaXRvciBoMSB7IHdpZHRoOmluaXRpYWw7IH0gZGl2Lk1haW5Cb3hMYXllciBkaXYuY3JlZHNpaURpdiBIMXsgd2lkdGg6YXV0bzsgfSAuY3JlZHNpaURpdnsgd2hpdGUtc3BhY2U6bm9ybWFsOyB9IGRpdi5NYWluQm94TGF5ZXIgZGl2LkxlZnRCb3hMYXllciB7IH0gZGl2Lk1haW5Cb3hMYXllciBkaXYuUmlnaHRCb3hMYXllciB7IH0gZGl2Lk1haW5Cb3hMYXllciBkaXYuT3V0ZXJCb3hMYXllciB7IHBhZGRpbmc6MTBweDsgZmxvYXQ6bGVmdDsgd2lkdGg6OTQwcHg7IH0gZGl2Lk1haW5Cb3hMYXllciBkaXYuSW5uZXJCb3hMYXllciB7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBwYWRkaW5nOjBweDsgbWFyZ2luOjBweDsgd2lkdGg6MTAwJTsgY2xlYXI6Ym90aDsgfSBkaXYuTWFpbkJveExheWVyIGRpdi5Jbm5lckJveExheWVyLnRvcEJvcmRlcmVkeyBib3JkZXItdG9wOjFweCBzb2xpZCAjY2NjOyB9IGRpdi5NYWluQm94TGF5ZXIgZGl2LklubmVyQm94TGF5ZXIuYm90dG9tQm9yZGVyZWR7IGJvcmRlci1ib3R0b206MXB4IHNvbGlkICNjY2M7IH0gZGl2Lk1haW5Cb3hMYXllciBkaXYuQm94Q2hpbGQgeyB9IGRpdi5NYWluQm94TGF5ZXIgZGl2LkJveENoaWxkLmVhc3R7IGZsb2F0OnJpZ2h0OyB9IGRpdi5NYWluQm94TGF5ZXIgZGl2LkJveENoaWxkLndlc3R7IGZsb2F0OmxlZnQ7IH0gYm9keS5pc0Z1bGxXaWR0aFBhZ2UuaXNQYWdlRnVsbFdpZHRoRW5hYmxlZCBkaXYuTWFpbkJveExheWVyICN0b3BCYW5uZXJJbWFnZXsgd2lkdGg6OTQwcHg7IGhlaWdodDphdXRvOyB0ZXh0LWFsaWduOmNlbnRlcjsgbWFyZ2luOjAgYXV0bzsgfSBib2R5LmlzRnVsbFdpZHRoUGFnZS5pc1BhZ2VGdWxsV2lkdGhFbmFibGVkIGRpdi5NYWluQm94TGF5ZXIgI3RvcEJhbm5lckltYWdlID4gaW1neyBtYXgtd2lkdGg6MTAwJSAhaW1wb3J0YW50OyB9IGRpdi5NYWluQm94TGF5ZXIgZGl2Lk91dGVyQm94TGF5ZXIjaGlzdG9yeURpdiBkaXYuSW5uZXJCb3hMYXllciAjYnJlYWRjcnVtYnMgeyBtYXJnaW46MDsgfSBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6MTMwMXB4KSB7IGJvZHkuaXNGdWxsV2lkdGhQYWdlLmlzUGFnZUZ1bGxXaWR0aEVuYWJsZWQgZGl2Lk1haW5Cb3hMYXllciB7IHdpZHRoOjEyMDBweDsgfSBib2R5LmlzRnVsbFdpZHRoUGFnZS5pc1BhZ2VGdWxsV2lkdGhFbmFibGVkIGRpdi5NYWluQm94TGF5ZXIgZGl2Lk91dGVyQm94TGF5ZXIgeyB3aWR0aDoxMTgwcHg7IH0gYm9keS5pc0Z1bGxXaWR0aFBhZ2UuaXNQYWdlRnVsbFdpZHRoRW5hYmxlZCBkaXYuTWFpbkJveExheWVyIGRpdi5PdXRlckJveExheWVyLnh0aW1lRnJhbWUgeyB3aWR0aDoxMjAwcHg7IH0gYm9keS5pc0Z1bGxXaWR0aFBhZ2UuaXNQYWdlRnVsbFdpZHRoRW5hYmxlZCBkaXYuTWFpbkJveExheWVyIEgxeyB3aWR0aDoxMTgwcHg7IH0gYm9keS5pc0Z1bGxXaWR0aFBhZ2UuaXNQYWdlRnVsbFdpZHRoRW5hYmxlZCBkaXYuTWFpbkJveExheWVyIC5yZXNwb25zaXZlLWVkaXRvciBoMSB7IHdpZHRoOmluaXRpYWw7IH0gYm9keS5pc0Z1bGxXaWR0aFBhZ2UuaXNQYWdlRnVsbFdpZHRoRW5hYmxlZCBkaXYuTWFpbkJveExheWVyIGRpdi5jcmVkc2lpRGl2IEgxeyB3aWR0aDphdXRvOyB9IGJvZHkuaXNGdWxsV2lkdGhQYWdlLmlzUGFnZUZ1bGxXaWR0aEVuYWJsZWQgZGl2Lk1haW5Cb3hMYXllciAjdG9wQmFubmVySW1hZ2UgeyB3aWR0aDoxMTgwcHg7IH0gYm9keS5pc0Z1bGxXaWR0aFBhZ2UuaXNQYWdlRnVsbFdpZHRoRW5hYmxlZCBkaXYuTWFpbkJveExheWVyICN0b3BCYW5uZXJJbWFnZS5URUFNIHsgd2lkdGg6OTYwcHg7IH0gfSBkaXYuTWFpbkJveExheWVyLnVjcENvbnRlbnRGdWxsV2lkdGggeyB3aWR0aDoxMDAlIWltcG9ydGFudDsgfSBkaXYuTWFpbkJveExheWVyIGRpdi5MZWZ0Qm94TGF5ZXIudWNwQ29udGVudEZ1bGxXaWR0aCB7IHdpZHRoOjEwMCUhaW1wb3J0YW50OyB9IGRpdi5NYWluQm94TGF5ZXIgZGl2Lk91dGVyQm94TGF5ZXIudWNwQ29udGVudEZ1bGxXaWR0aCB7IHdpZHRoOjEwMCUhaW1wb3J0YW50OyB9Ci8qKiAvY3NzL2Rpdl9zcGFucy5jc3MgKiovCi5kaXZTcGFue2Zsb2F0OmxlZnQ7Ym94LXNpemluZzpib3JkZXItYm94fS5kaXZTcGFuLmRpdlNwYW5MZWZ0e2Zsb2F0OmxlZnR9LmRpdlNwYW4uZGl2U3BhblJpZ2h0e2Zsb2F0OnJpZ2h0fS5kaXZTcGFuLmRpdlNwYW4xe3dpZHRoOjguMzMzMzMzMzMzMzMzMzMzJX0uZGl2U3Bhbi5kaXZTcGFuMnt3aWR0aDoxNi42NjY2NjY2NjY2NjY2NyV9LmRpdlNwYW4uZGl2U3BhbjN7d2lkdGg6MjUlfS5kaXZTcGFuLmRpdlNwYW40e3dpZHRoOjMzLjMzMzMzMzMzMzMzMzMzJX0uZGl2U3Bhbi5kaXZTcGFuNXt3aWR0aDo0MS42NjY2NjY2NjY2NjY2NyV9LmRpdlNwYW4uZGl2U3BhbjZ7d2lkdGg6NTAlfS5kaXZTcGFuLmRpdlNwYW43e3dpZHRoOjU4LjMzMzMzMzMzMzMzMzMzJX0uZGl2U3Bhbi5kaXZTcGFuOHt3aWR0aDo2Ni42NjY2NjY2NjY2NjY2NiV9LmRpdlNwYW4uZGl2U3Bhbjl7d2lkdGg6NzUlfS5kaXZTcGFuLmRpdlNwYW4xMHt3aWR0aDo4My4zMzMzMzMzMzMzMzMzMyV9LmRpdlNwYW4uZGl2U3BhbjExe3dpZHRoOjkxLjY2NjY2NjY2NjY2NjY2JX0uZGl2U3Bhbi5kaXZTcGFuMTJ7d2lkdGg6MTAwJX0KLyoqIC9jc3MvbWVudWltZy5jc3MgKiovCi5tZW51c3ByaXRle2JhY2tncm91bmQtaW1hZ2U6dXJsKC9pbWFnZXMvbWVudWljb25zL21lbnVzcHJpdGVzaGVldC5wbmcpO2JhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDtkaXNwbGF5OmlubGluZS10YWJsZTtib3JkZXI6MH0ubWVudXNwcml0ZS1hcnJvd19kb3due3dpZHRoOjMycHg7aGVpZ2h0OjMycHg7YmFja2dyb3VuZC1wb3NpdGlvbjotNXB4IC01cHh9Lm1lbnVzcHJpdGUtYXJyb3dfdXB7d2lkdGg6MzJweDtoZWlnaHQ6MzJweDtiYWNrZ3JvdW5kLXBvc2l0aW9uOi01cHggLTQ3cHh9Lm1lbnVzcHJpdGUtY29udGFjdHt3aWR0aDozMnB4O2hlaWdodDozMnB4O2JhY2tncm91bmQtcG9zaXRpb246LTVweCAtODlweH0ubWVudXNwcml0ZS1kZW1vY2Fye3dpZHRoOjMycHg7aGVpZ2h0OjMycHg7YmFja2dyb3VuZC1wb3NpdGlvbjotNXB4IC0xMzFweH0ubWVudXNwcml0ZS1maW5hbmNle3dpZHRoOjMycHg7aGVpZ2h0OjMycHg7YmFja2dyb3VuZC1wb3NpdGlvbjotNXB4IC0xNzNweH0ubWVudXNwcml0ZS1ob21le3dpZHRoOjMycHg7aGVpZ2h0OjMycHg7YmFja2dyb3VuZC1wb3NpdGlvbjotNXB4IC0yMTVweH0ubWVudXNwcml0ZS1uZXdjYXJ7d2lkdGg6MzJweDtoZWlnaHQ6MzJweDtiYWNrZ3JvdW5kLXBvc2l0aW9uOi01cHggLTI1N3B4fS5tZW51c3ByaXRlLW9sZGNhcnt3aWR0aDozMnB4O2hlaWdodDozMnB4O2JhY2tncm91bmQtcG9zaXRpb246LTVweCAtMjk5cHh9Lm1lbnVzcHJpdGUtcHJvbW90aW9uc3t3aWR0aDozMnB4O2hlaWdodDozMnB4O2JhY2tncm91bmQtcG9zaXRpb246LTVweCAtMzQxcHh9Lm1lbnVzcHJpdGUtc2VydmljZXt3aWR0aDozMnB4O2hlaWdodDozMnB4O2JhY2tncm91bmQtcG9zaXRpb246LTVweCAtMzgzcHh9Ci8qKiAvY3NzL2pxdWVyeS5tdWx0aXNlbGVjdC5jc3MgKiovCi51aS1tdWx0aXNlbGVjdHtwYWRkaW5nOjJweCAwIDJweCA0cHg7dGV4dC1hbGlnbjpsZWZ0fS51aS1tdWx0aXNlbGVjdCBzcGFuLnVpLWljb257ZmxvYXQ6cmlnaHR9LnVpLW11bHRpc2VsZWN0LXNpbmdsZSAudWktbXVsdGlzZWxlY3QtY2hlY2tib3hlcyBpbnB1dHtwb3NpdGlvbjphYnNvbHV0ZSAhaW1wb3J0YW50O3RvcDphdXRvICFpbXBvcnRhbnQ7bGVmdDotOTk5OXB4fS51aS1tdWx0aXNlbGVjdC1zaW5nbGUgLnVpLW11bHRpc2VsZWN0LWNoZWNrYm94ZXMgbGFiZWx7cGFkZGluZzo1cHggIWltcG9ydGFudH0udWktbXVsdGlzZWxlY3QtaGVhZGVye21hcmdpbi1ib3R0b206M3B4O3BhZGRpbmc6M3B4IDAgM3B4IDRweH0udWktbXVsdGlzZWxlY3QtaGVhZGVyIHVse2ZvbnQtc2l6ZTouOWVtfS51aS1tdWx0aXNlbGVjdC1oZWFkZXIgdWwgbGl7ZmxvYXQ6bGVmdDtwYWRkaW5nOjAgMTBweCAwIDB9LnVpLW11bHRpc2VsZWN0LWhlYWRlciBhe3RleHQtZGVjb3JhdGlvbjpub25lfS51aS1tdWx0aXNlbGVjdC1oZWFkZXIgYTpob3Zlcnt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lfS51aS1tdWx0aXNlbGVjdC1oZWFkZXIgc3Bhbi51aS1pY29ue2Zsb2F0OmxlZnR9LnVpLW11bHRpc2VsZWN0LWhlYWRlciBsaS51aS1tdWx0aXNlbGVjdC1jbG9zZXtmbG9hdDpyaWdodDt0ZXh0LWFsaWduOnJpZ2h0O3BhZGRpbmctcmlnaHQ6MH0udWktbXVsdGlzZWxlY3QtbWVudXtkaXNwbGF5Om5vbmU7cGFkZGluZzozcHg7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwMDt0ZXh0LWFsaWduOmxlZnR9LnVpLW11bHRpc2VsZWN0LWNoZWNrYm94ZXN7cG9zaXRpb246cmVsYXRpdmU7b3ZlcmZsb3cteTphdXRvfS51aS1tdWx0aXNlbGVjdC1jaGVja2JveGVzIGxhYmVse2N1cnNvcjpkZWZhdWx0O2Rpc3BsYXk6YmxvY2s7Ym9yZGVyOjFweCBzb2xpZCB0cmFuc3BhcmVudDtwYWRkaW5nOjNweCAxcHh9LnVpLW11bHRpc2VsZWN0LWNoZWNrYm94ZXMgbGFiZWwgaW5wdXR7cG9zaXRpb246cmVsYXRpdmU7dG9wOjFweH0udWktbXVsdGlzZWxlY3QtY2hlY2tib3hlcyBsaXtjbGVhcjpib3RoO2ZvbnQtc2l6ZTouOWVtO3BhZGRpbmctcmlnaHQ6M3B4fS51aS1tdWx0aXNlbGVjdC1jaGVja2JveGVzIGxpLnVpLW11bHRpc2VsZWN0LW9wdGdyb3VwLWxhYmVse3RleHQtYWxpZ246Y2VudGVyO2ZvbnQtd2VpZ2h0OmJvbGQ7Ym9yZGVyLWJvdHRvbToxcHggc29saWR9LnVpLW11bHRpc2VsZWN0LWNoZWNrYm94ZXMgbGkudWktbXVsdGlzZWxlY3Qtb3B0Z3JvdXAtbGFiZWwgYXtkaXNwbGF5OmJsb2NrO3BhZGRpbmc6M3B4O21hcmdpbjoxcHggMDt0ZXh0LWRlY29yYXRpb246bm9uZX0qIGh0bWwgLnVpLW11bHRpc2VsZWN0LWNoZWNrYm94ZXMgbGFiZWx7Ym9yZGVyOjB9LnVpLW11bHRpc2VsZWN0LWhhc2ZpbHRlciB1bHtwb3NpdGlvbjpyZWxhdGl2ZTt0b3A6MnB4fS51aS1tdWx0aXNlbGVjdC1maWx0ZXJ7ZmxvYXQ6bGVmdDttYXJnaW4tcmlnaHQ6MTBweDtmb250LXNpemU6MTFweH0udWktbXVsdGlzZWxlY3QtZmlsdGVyIGlucHV0e3dpZHRoOjEwMHB4O2ZvbnQtc2l6ZTowLjYyNXJlbSA7bWFyZ2luLWxlZnQ6NXB4O2hlaWdodDoxNXB4O3BhZGRpbmc6MnB4O2JvcmRlcjoxcHggc29saWQgIzI5MjkyOTstd2Via2l0LWFwcGVhcmFuY2U6dGV4dGZpZWxkOy13ZWJraXQtYm94LXNpemluZzpjb250ZW50LWJveH0KLyoqIC9jc3MvdHJhZGVpbnBvcHVwLmNzcyAqKi8KLnRyYWRlSW5CYXJTbXNPckVtYWlseyB3aWR0aDo1MCU7IH0gI3RyYWRlSW5CYXJQb3B1cF9mb3JtVyAjdHJhZGVJbkJhclNtc09yRW1haWxTbXMsICN0cmFkZUluQmFyUG9wdXBfZm9ybVcgI3RyYWRlSW5CYXJTbXNPckVtYWlsRW1haWx7IHdpZHRoOjUwJTsgfSAudHJhZGVJbkJhclN0ZXA0LCAudHJhZGVJbkJhclN0ZXA1LCAudHJhZGVJbkJhclN0ZXA2eyBtYXJnaW46NjBweCAwOyB0ZXh0LWFsaWduOmNlbnRlcjsgfSAudHJhZGVJbkJhclN0ZXA2eyBtYXJnaW46MCAwIDMwcHggMDsgdGV4dC1hbGlnbjpjZW50ZXI7IH0gLnRyYWRlSW5CYXJTdGVwMyAudHJhZGVJbkJhclN0ZXAzUXVlc3Rpb24sIC50cmFkZUluQmFyU3RlcDQgLnRyYWRlSW5CYXJTdGVwNFF1ZXN0aW9uLCAudHJhZGVJbkJhclN0ZXA1IC50cmFkZUluQmFyU3RlcDVRdWVzdGlvbiwgLnRyYWRlSW5CYXJTdGVwNiAudHJhZGVJbkJhclN0ZXA2UXVlc3Rpb257IG1hcmdpbjoyMHB4IDA7IH0gI3RyYWRlSW5CYXJQb3B1cFN1Ym1pdCwgLnRyYWRlSW5CYXJTdGVwMyAjdHJhZGVJblN0ZXAzWWVzLCAudHJhZGVJbkJhclN0ZXA0ICN0cmFkZUluU3RlcDRZZXMsIC50cmFkZUluQmFyU3RlcDUgI3RyYWRlSW5TdGVwNVllcywgLnRyYWRlSW5CYXJTdGVwNiAjdHJhZGVJblN0ZXA2WWVzeyBiYWNrZ3JvdW5kOiMwNTE0MWY7IGNvbG9yOiNmZmZmZmY7IHBhZGRpbmc6MTJweCA2cHg7IHRleHQtZGVjb3JhdGlvbjpub25lOyBib3JkZXItcmFkaXVzOjNweDsgYm9yZGVyOnVuc2V0OyBmb250LXNpemU6MC44NzVyZW0gOyBkaXNwbGF5OmJsb2NrOyB0ZXh0LXdyYXA6YXV0bzsgfSAudHJhZGVJbkJhclN0ZXAzICN0cmFkZUluU3RlcDNOb3sgYmFja2dyb3VuZDojZTBlMGUwOyBjb2xvcjojMzMzOyBwYWRkaW5nOjEycHggNnB4OyB0ZXh0LWRlY29yYXRpb246bm9uZTsgYm9yZGVyLXJhZGl1czozcHg7IGJvcmRlcjp1bnNldDsgZm9udC1zaXplOjAuODc1cmVtIDsgZGlzcGxheTpibG9jazsgdGV4dC13cmFwOmF1dG87IH0gI3RyYWRlSW5CYXJQb3B1cF9mb3JtVyAjdHJhZGVJbkJhclBvcHVwRm9ybSAudHJhZGVJbkJhclN0ZXA2IC50cmFkZUluQmFyU3RlcDZUaXRsZXsgZm9udC1zaXplOjEuMjVyZW0gOyBmb250LXdlaWdodDpib2xkOyB9ICN0cmFkZUluQmFyUG9wdXBfZm9ybVcgI3RyYWRlSW5CYXJQb3B1cF9saW5lMXsgYm9yZGVyLXJhZGl1czo2cHg7IH0gI3RyYWRlSW5CYXJQb3B1cF9mb3JtVyAjdHJhZGVJbkJhclBvcHVwRm9ybSAudXBsb2FkZXItY29udGFpbmVyIHsgbWF4LXdpZHRoOjYwMHB4OyB3aWR0aDoxMDAlOyBtYXJnaW46MCBhdXRvOyBiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7IHBhZGRpbmc6MjBweDsgYm9yZGVyLXJhZGl1czo4cHg7IGJveC1zaGFkb3c6MCA0cHggOHB4IHJnYmEoMCwgMCwgMCwgMC4xKTsgfSAjdHJhZGVJbkJhclBvcHVwX2Zvcm1XICN0cmFkZUluQmFyUG9wdXBGb3JtIC51cGxvYWRlci1jb250YWluZXIgaDIgeyBmb250LXNpemU6MS4ycmVtOyBtYXJnaW4tYm90dG9tOjEwcHg7IHRleHQtYWxpZ246Y2VudGVyOyB9ICN0cmFkZUluQmFyUG9wdXBfZm9ybVcgI3RyYWRlSW5CYXJQb3B1cEZvcm0gLnVwbG9hZGVyLWNvbnRhaW5lciBwIHsgY29sb3I6IzY2NjsgbWFyZ2luLWJvdHRvbToyMHB4OyB0ZXh0LWFsaWduOmNlbnRlcjsgZm9udC1zaXplOjAuOXJlbTsgfSAjdHJhZGVJbkJhclBvcHVwX2Zvcm1XICN0cmFkZUluQmFyUG9wdXBGb3JtIC5pbWFnZS1ncmlkIHsgZGlzcGxheTpncmlkOyBncmlkLXRlbXBsYXRlLWNvbHVtbnM6cmVwZWF0KDQsIDFmcik7IGdhcDoxNXB4OyB9ICN0cmFkZUluQmFyUG9wdXBfZm9ybVcgI3RyYWRlSW5CYXJQb3B1cEZvcm0gLnVwbG9hZC1hcmVhIHsgcG9zaXRpb246cmVsYXRpdmU7IHdpZHRoOjEwMCU7IGFzcGVjdC1yYXRpbzoxIC8gMTsgYm9yZGVyOjJweCBkYXNoZWQgI2NjYzsgYm9yZGVyLXJhZGl1czoxMHB4OyBjdXJzb3I6cG9pbnRlcjsgb3ZlcmZsb3c6aGlkZGVuOyBiYWNrZ3JvdW5kLXNpemU6OTAlOyBiYWNrZ3JvdW5kLXBvc2l0aW9uOmNlbnRlcjsgYmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0OyBiYWNrZ3JvdW5kLWNvbG9yOiNmNWY1ZjU7IH0gI3RyYWRlSW5CYXJQb3B1cF9mb3JtVyAjdHJhZGVJbkJhclBvcHVwRm9ybSAudXBsb2FkLWFyZWEgaW5wdXRbdHlwZT0iZmlsZSJdIHsgZGlzcGxheTpub25lOyB9ICN0cmFkZUluQmFyUG9wdXBfZm9ybVcgI3RyYWRlSW5CYXJQb3B1cEZvcm0gLnBsYWNlaG9sZGVyIHsgcG9zaXRpb246YWJzb2x1dGU7IHRvcDowOyBsZWZ0OjA7IHdpZHRoOjEwMCU7IGhlaWdodDoxMDAlOyBvYmplY3QtZml0OmNvbnRhaW47IGRpc3BsYXk6bm9uZTsgfSAjdHJhZGVJbkJhclBvcHVwX2Zvcm1XICN0cmFkZUluQmFyUG9wdXBGb3JtIC5wbGFjZWhvbGRlci10aXRsZSB7IHBvc2l0aW9uOmFic29sdXRlOyB0b3A6NXB4OyBsZWZ0OjUwJTsgdHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTUwJSk7IGZvbnQtc2l6ZTowLjVyZW0gOyBmb250LXdlaWdodDpib2xkOyBjb2xvcjojNjY2OyBiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LCAyNTUsIDI1NSwgMC44KTsgcGFkZGluZzoxcHggNnB4OyBib3JkZXItcmFkaXVzOjRweDsgcG9pbnRlci1ldmVudHM6bm9uZTsgdGV4dC1hbGlnbjpjZW50ZXI7IHdoaXRlLXNwYWNlOm5vd3JhcDsgb3ZlcmZsb3c6aGlkZGVuOyB0ZXh0LW92ZXJmbG93OmVsbGlwc2lzOyB9ICN0cmFkZUluQmFyUG9wdXBfZm9ybVcgI3RyYWRlSW5CYXJQb3B1cEZvcm0gLmFkZC1pY29uIHsgcG9zaXRpb246YWJzb2x1dGU7IGJvdHRvbTo1cHg7IHJpZ2h0OjVweDsgZm9udC1zaXplOjEuMXJlbTsgY29sb3I6IzAwN0JGRjsgYmFja2dyb3VuZC1jb2xvcjp3aGl0ZTsgYm9yZGVyLXJhZGl1czo1MCU7IHdpZHRoOjI4cHg7IGhlaWdodDoyOHB4OyBkaXNwbGF5OmZsZXg7IGp1c3RpZnktY29udGVudDpjZW50ZXI7IGFsaWduLWl0ZW1zOmNlbnRlcjsgYm94LXNoYWRvdzowIDJweCA0cHggcmdiYSgwLCAwLCAwLCAwLjIpOyB9ICN0cmFkZUluQmFyUG9wdXBfZm9ybVcgI3RyYWRlSW5CYXJQb3B1cEZvcm0gLmRlbGV0ZS1idG4geyBwb3NpdGlvbjphYnNvbHV0ZTsgdG9wOjVweDsgcmlnaHQ6NXB4OyB3aWR0aDoyMHB4OyBoZWlnaHQ6MjBweDsgYmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsIDAsIDAsIDAuNyk7IGNvbG9yOndoaXRlOyBib3JkZXI6bm9uZTsgYm9yZGVyLXJhZGl1czo1MCU7IGZvbnQtc2l6ZTowLjc1cmVtIDsgbGluZS1oZWlnaHQ6MjBweDsgY3Vyc29yOnBvaW50ZXI7IGRpc3BsYXk6bm9uZTsgfSAjdHJhZGVJbkJhclBvcHVwX2Zvcm1XICN0cmFkZUluQmFyUG9wdXBGb3JtIC51cGxvYWQtYXJlYTpob3ZlciAuZGVsZXRlLWJ0biB7IGRpc3BsYXk6ZmxleDsgfSAudHJhZGVJbkJvdHRvbUxvZ297IHRleHQtYWxpZ246Y2VudGVyOyBjb2xvcjojYTlhOWE5OyBkaXNwbGF5OmZsZXg7IGFsaWduLWl0ZW1zOmNlbnRlcjsganVzdGlmeS1jb250ZW50OmNlbnRlcjsgbWFyZ2luLXRvcDowIWltcG9ydGFudDsgfSAudHJhZGVJbkJvdHRvbUxvZ28udHJhZGVJbkJvdHRvbUxvZ29WV3sgbWFyZ2luOjAgYXV0bzsgd2lkdGg6ODUlOyB9ICN0cmFkZUluQmFyUG9wdXBfZm9ybVcgLnRyYWRlSW5EaXNjbGFpbWVyIC50cmFkZUluRGlzY2xhaW1lclNob3J0eyBwb3NpdGlvbjpyZWxhdGl2ZTsgd2hpdGUtc3BhY2U6bm93cmFwOyBvdmVyZmxvdzpoaWRkZW47IHRleHQtb3ZlcmZsb3c6Y2xpcDsgbWF4LXdpZHRoOjEwMCU7IGxpbmUtaGVpZ2h0OjEuNSAhaW1wb3J0YW50OyBmb250LXNpemU6MC43NXJlbSAhaW1wb3J0YW50OyBjb2xvcjojMDAwICFpbXBvcnRhbnQ7IG1hcmdpbi1ib3R0b206MCAhaW1wb3J0YW50OyBwYWRkaW5nLXJpZ2h0OjE2cHg7IH0gI3RyYWRlSW5CYXJQb3B1cF9mb3JtVyAudHJhZGVJbkRpc2NsYWltZXIgLnRyYWRlSW5EaXNjbGFpbWVyU2hvcnQ6OmJlZm9yZSB7IGNvbnRlbnQ6IiI7IHBvc2l0aW9uOmFic29sdXRlOyByaWdodDowOyB0b3A6MDsgd2lkdGg6MjBweDsgaGVpZ2h0OjEwMCU7IGJhY2tncm91bmQ6d2hpdGU7IHBvaW50ZXItZXZlbnRzOm5vbmU7IH0gI3RyYWRlSW5CYXJQb3B1cF9mb3JtVyAudHJhZGVJbkRpc2NsYWltZXIgLnRyYWRlSW5EaXNjbGFpbWVyU2hvcnQ6OmFmdGVyIHsgY29udGVudDoiICI7IGhlaWdodDowOyB3aWR0aDowOyBib3JkZXItbGVmdDo1cHggc29saWQgdHJhbnNwYXJlbnQ7IGJvcmRlci1yaWdodDo1cHggc29saWQgdHJhbnNwYXJlbnQ7IGJvcmRlci10b3A6NXB4IHNvbGlkICMwMDAwMDA7IHBvc2l0aW9uOmFic29sdXRlOyByaWdodDo1cHg7IHRvcDo1MCU7IHRyYW5zZm9ybTp0cmFuc2xhdGVZKC01MCUpOyB0cmFuc2l0aW9uOmFsbCAwLjNzIGxpbmVhcjsgcG9pbnRlci1ldmVudHM6bm9uZTsgYmFja2dyb3VuZDp3aGl0ZSB9ICN0cmFkZUluQmFyUG9wdXBfZm9ybVcgLnRyYWRlSW5EaXNjbGFpbWVyIC50cmFkZUluRGlzY2xhaW1lclNob3J0IHNwYW57IGxpbmUtaGVpZ2h0OjEuNSAhaW1wb3J0YW50OyBmb250LXNpemU6MC44MTNyZW0gIWltcG9ydGFudDsgY29sb3I6IzAwMCAhaW1wb3J0YW50OyBtYXJnaW4tYm90dG9tOjAgIWltcG9ydGFudDsgY3Vyc29yOnBvaW50ZXI7IH0gI3RyYWRlSW5CYXJQb3B1cF9mb3JtVyAudHJhZGVJbkRpc2NsYWltZXIgLnRyYWRlSW5EaXNjbGFpbWVyU2hvcnQgc3BhbiBheyBmb250LXdlaWdodDpib2xkOyB9IC50cmFkZUluRGlzY2xhaW1lckRyYXdlcnsgcG9zaXRpb246Zml4ZWQ7IGxlZnQ6MDsgYm90dG9tOi0zMDBweDsgd2lkdGg6MTAwJTsgaGVpZ2h0OmF1dG87IGJhY2tncm91bmQ6I2ZmZjsgYm94LXNoYWRvdzowIC0ycHggMTBweCByZ2JhKDAsMCwwLDAuMyk7IHRyYW5zaXRpb246Ym90dG9tIDAuM3MgZWFzZTsgZGlzcGxheTpub25lOyBvdmVyZmxvdzphdXRvOyB6LWluZGV4OjEwOyB9IC50cmFkZUluRGlzY2xhaW1lckRyYXdlci5vcGVueyBib3R0b206MDsgfSAudHJhZGVJbkRpc2NsYWltZXJEcmF3ZXIub3BlbiAudHJhZGVJbkRpc2NsYWltZXJDb250ZW50eyBwYWRkaW5nOjIwcHg7IG92ZXJmbG93LXk6YXV0bzsgfSAudHJhZGVJbkRpc2NsYWltZXJEcmF3ZXIub3BlbiAudHJhZGVJbkRpc2NsYWltZXJDbG9zZXsgcGFkZGluZzo3cHg7IGN1cnNvcjpwb2ludGVyOyBwb3NpdGlvbjpmaXhlZDsgcmlnaHQ6MDsgfSAudHJhZGVJbkRpc2NsYWltZXJEcmF3ZXIub3BlbiBheyBmb250LXdlaWdodDpib2xkOyB9IEBtZWRpYSAobWF4LXdpZHRoOjYwMHB4KSB7ICN0cmFkZUluQmFyUG9wdXBfZm9ybVcgI3RyYWRlSW5CYXJQb3B1cEZvcm0gLnVwbG9hZGVyLWNvbnRhaW5lciB7IHBhZGRpbmc6MTVweDsgfSAjdHJhZGVJbkJhclBvcHVwX2Zvcm1XICN0cmFkZUluQmFyUG9wdXBGb3JtIC5pbWFnZS1ncmlkIHsgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOnJlcGVhdCgzLCAxZnIpOyBnYXA6MTBweDsgfSAjdHJhZGVJbkJhclBvcHVwX2Zvcm1XICN0cmFkZUluQmFyUG9wdXBGb3JtIC5wbGFjZWhvbGRlci10aXRsZSB7IGZvbnQtc2l6ZTowLjVyZW0gOyB9IH0gQG1lZGlhIChtYXgtd2lkdGg6NDAwcHgpIHsgI3RyYWRlSW5CYXJQb3B1cF9mb3JtVyAjdHJhZGVJbkJhclBvcHVwRm9ybSAuaW1hZ2UtZ3JpZCB7IGdyaWQtdGVtcGxhdGUtY29sdW1uczpyZXBlYXQoMiwgMWZyKTsgZ2FwOjhweDsgfSAjdHJhZGVJbkJhclBvcHVwX2Zvcm1XICN0cmFkZUluQmFyUG9wdXBGb3JtIC5wbGFjZWhvbGRlci10aXRsZSB7IGZvbnQtc2l6ZTowLjVyZW0gOyB9ICN0cmFkZUluQmFyUG9wdXBfZm9ybVcgI3RyYWRlSW5CYXJQb3B1cEZvcm0gLmFkZC1pY29uIHsgd2lkdGg6MjRweDsgaGVpZ2h0OjI0cHg7IGZvbnQtc2l6ZToxcmVtOyB9ICN0cmFkZUluQmFyUG9wdXBfZm9ybVcgI3RyYWRlSW5CYXJQb3B1cEZvcm0gLmRlbGV0ZS1idG4geyB3aWR0aDoxNnB4OyBoZWlnaHQ6MTZweDsgZm9udC1zaXplOjAuNjI1cmVtIDsgfSB9Ci8qKiAvY3NzL2FkdmFuY2VkLXNsaWRlci1iYXNlLmNzcyAqKi8KLmFkdmFuY2VkLXNsaWRlciB7IHBvc2l0aW9uOnJlbGF0aXZlOyBvdmVyZmxvdzp2aXNpYmxlOyBvdXRsaW5lOm5vbmU7IG1hcmdpbi1sZWZ0OmF1dG87IG1hcmdpbi1yaWdodDphdXRvOyB9IC5hZHZhbmNlZC1zbGlkZXIgKiB7IG1hcmdpbjowOyBwYWRkaW5nOjA7IH0gLmFkdmFuY2VkLXNsaWRlciAuc2xpZGVyLW1haW4geyBwb3NpdGlvbjphYnNvbHV0ZTsgd2lkdGg6MTAwJTsgaGVpZ2h0OjEwMCU7IHotaW5kZXg6MTA7IH0gLmFkdmFuY2VkLXNsaWRlciAuc2xpZGUtd3JhcHBlciB7IHBvc2l0aW9uOnJlbGF0aXZlOyBvdmVyZmxvdzp2aXNpYmxlOyB3aWR0aDoxMDAlOyBoZWlnaHQ6MTAwJTsgei1pbmRleDoxMDsgfSAuYWR2YW5jZWQtc2xpZGVyIHVsLnNsaWRlcyB7IHBvc2l0aW9uOmFic29sdXRlOyBvdmVyZmxvdzpoaWRkZW47IG1hcmdpbjowOyBwYWRkaW5nOjA7IGxpc3Qtc3R5bGU6bm9uZTsgd2lkdGg6MTAwJTsgaGVpZ2h0OjEwMCU7IHotaW5kZXg6MTA7IH0gLmFkdmFuY2VkLXNsaWRlciBsaS5zbGlkZSB7IHBvc2l0aW9uOmFic29sdXRlOyBvdmVyZmxvdzpoaWRkZW47IGRpc3BsYXk6ZmxleDsgbWFyZ2luOjA7IHBhZGRpbmc6MDsgd2lkdGg6MTAwJTsgaGVpZ2h0OjEwMCU7IHZpc2liaWxpdHk6aGlkZGVuOyBsaXN0LXN0eWxlOm5vbmU7IGZpbHRlcjphbHBoYShvcGFjaXR5PTEwMCk7IG9wYWNpdHk6MTsgfSAuYWR2YW5jZWQtc2xpZGVyIGxpLnNsaWRlIC5pbWFnZSwgLmFkdmFuY2VkLXNsaWRlciBsaS5zbGlkZSAudGh1bWJuYWlsLCAuYWR2YW5jZWQtc2xpZGVyIGxpLnNsaWRlIC5jYXB0aW9uLCAuYWR2YW5jZWQtc2xpZGVyIGxpLnNsaWRlIC5odG1sIHsgcG9zaXRpb246YWJzb2x1dGU7IH0gLmFkdmFuY2VkLXNsaWRlciBsaS5zbGlkZSBpbWcsIC5hZHZhbmNlZC1zbGlkZXIgLnRodW1ibmFpbCBpbWcgeyBtYXgtd2lkdGg6bm9uZTsgbWF4LWhlaWdodDpub25lOyBib3JkZXI6MCBub25lOyB9IC5hZHZhbmNlZC1zbGlkZXIgbGkuc2xpZGUgLmh0bWwgeyBvdmVyZmxvdzpoaWRkZW47IH0gLmFkdmFuY2VkLXNsaWRlciBsaS5zbGlkZSAudmlkZW8geyB9IC5hZHZhbmNlZC1zbGlkZXIgbGkuc2xpZGUuYWN0aXZlIC52aWRlbyB7IH0gLmFkdmFuY2VkLXNsaWRlciAuc2xpY2UtY29udGFpbmVyIHsgcG9zaXRpb246YWJzb2x1dGU7IHdpZHRoOjEwMCU7IGhlaWdodDoxMDAlOyB6LWluZGV4OjEwOyB9IC5hZHZhbmNlZC1zbGlkZXIgLnN3aXBlYWJsZS1jb250YWluZXIgeyBwb3NpdGlvbjphYnNvbHV0ZTsgd2lkdGg6MTAwJTsgaGVpZ2h0OjEwMCU7IG92ZXJmbG93OmhpZGRlbjsgfSAuYWR2YW5jZWQtc2xpZGVyIC5zd2lwZWFibGUtY29udGFpbmVyIC5zbGlkZXMgeyAtd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7IC1tb3otdXNlci1zZWxlY3Q6bm9uZTsgLW8tdXNlci1zZWxlY3Q6bm9uZTsgdXNlci1zZWxlY3Q6bm9uZTsgfSAuYWR2YW5jZWQtc2xpZGVyIC5zd2lwZWFibGUtY29udGFpbmVyIC5zbGlkZXMgLnNlbGVjdGFibGUgeyAtd2Via2l0LXVzZXItc2VsZWN0OmF1dG87IC1tb3otdXNlci1zZWxlY3Q6YXV0bzsgLW8tdXNlci1zZWxlY3Q6YXV0bzsgdXNlci1zZWxlY3Q6YXV0bzsgY3Vyc29yOmF1dG87IH0gLmFkdmFuY2VkLXNsaWRlciAuc3dpcGVhYmxlLWNvbnRhaW5lciAuZ3JhYiB7IGN1cnNvcjpncmFiOyB9IC5hZHZhbmNlZC1zbGlkZXIgLnN3aXBlYWJsZS1jb250YWluZXIgLmdyYWJiaW5nIHsgY3Vyc29yOmdyYWJiaW5nOyB9IC5hZHZhbmNlZC1zbGlkZXIgLnNsaWNlIHsgZGlzcGxheTpibG9jazsgcG9zaXRpb246YWJzb2x1dGU7IH0gLmFkdmFuY2VkLXNsaWRlciAucHJlbG9hZGVyIHsgcG9zaXRpb246YWJzb2x1dGU7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvcHJlbG9hZGVyMi5naWYpIG5vLXJlcGVhdDsgd2lkdGg6NjJweDsgaGVpZ2h0OjE0cHg7IHotaW5kZXg6MTU7IH0gLmFkdmFuY2VkLXNsaWRlciAuc2xpZGUtYXJyb3dzIHsgcG9zaXRpb246c3RhdGljOyB9IC5hZHZhbmNlZC1zbGlkZXIgLnNsaWRlLWFycm93cyBhIHsgcG9zaXRpb246YWJzb2x1dGU7IHotaW5kZXg6MzA7IGN1cnNvcjpwb2ludGVyOyB9IC5hZHZhbmNlZC1zbGlkZXIgLmxpZ2h0Ym94LWljb24geyBwb3NpdGlvbjphYnNvbHV0ZTsgd2lkdGg6ODBweDsgaGVpZ2h0OjgwcHg7IHRvcDo1MCU7IGxlZnQ6NTAlOyBtYXJnaW4tdG9wOi00MHB4OyBtYXJnaW4tbGVmdDotNDBweDsgY3Vyc29yOnBvaW50ZXI7IHotaW5kZXg6MTA7IH0gLmFkdmFuY2VkLXNsaWRlciAubGlnaHRib3gtaWNvbi5wbGF5IHsgYmFja2dyb3VuZC1pbWFnZTp1cmwoL2ltYWdlcy9saWdodGJveF9wbGF5LnBuZyk7IH0gLmFkdmFuY2VkLXNsaWRlciAubGlnaHRib3gtaWNvbi5tYWduaWZ5aW5nIHsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9saWdodGJveF9tYWduaWZ5aW5nX3NtYWxsLnBuZykgbm8tcmVwZWF0OyBmbG9hdDpsZWZ0OyBsZWZ0OjA7IHRvcDowOyBtYXJnaW4tbGVmdDoxMHB4OyBtYXJnaW4tdG9wOjEwcHg7IGRpc3BsYXk6bm9uZTsgfSB9IC5hZHZhbmNlZC1zbGlkZXIgLmxpZ2h0Ym94LWljb24uaHlwZXJsaW5rIHsgYmFja2dyb3VuZC1pbWFnZTp1cmwoL2ltYWdlcy9saWdodGJveF9oeXBlcmxpbmsucG5nKTsgfSAuYWR2YW5jZWQtc2xpZGVyIC5zbGlkZXNob3ctY29udHJvbHMgeyBwb3NpdGlvbjphYnNvbHV0ZTsgei1pbmRleDo0MDsgY3Vyc29yOnBvaW50ZXI7IH0gLmFkdmFuY2VkLXNsaWRlciAuc2hhZG93IHsgcG9zaXRpb246YWJzb2x1dGU7IGhlaWdodDo5NHB4OyBtYXJnaW4tdG9wOi01MHB4OyB6LWluZGV4OjU7IH0gLmFkdmFuY2VkLXNsaWRlciAuc2hhZG93IC5zaGFkb3ctbGVmdCwgLmFkdmFuY2VkLXNsaWRlciAuc2hhZG93IC5zaGFkb3ctcmlnaHQsIC5hZHZhbmNlZC1zbGlkZXIgLnNoYWRvdyAuc2hhZG93LW1pZGRsZSB7IGZsb2F0OmxlZnQ7IH0gLmFkdmFuY2VkLXNsaWRlciAuZnVsbC1zY3JlZW4tY29udHJvbHMgeyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL2Z1bGxzY3JlZW4ucG5nKSBuby1yZXBlYXQ7IHBvc2l0aW9uOmFic29sdXRlOyB3aWR0aDozMXB4OyBoZWlnaHQ6MjdweDsgdG9wOjIwcHg7IGxlZnQ6MjBweDsgei1pbmRleDo2MDsgY3Vyc29yOnBvaW50ZXI7IH0gLmFkdmFuY2VkLXNsaWRlciAudGltZXItYW5pbWF0aW9uIHsgcG9zaXRpb246YWJzb2x1dGU7IHotaW5kZXg6NTA7IH0gLmFkdmFuY2VkLXNsaWRlciBjYW52YXMgeyBwb3NpdGlvbjphYnNvbHV0ZTsgfSAuYWR2YW5jZWQtc2xpZGVyIC50aW1lci1hbmltYXRpb24gLnRpbWVyLWFuaW1hdGlvbi1jb250cm9scyB7IHBvc2l0aW9uOmFic29sdXRlOyBjdXJzb3I6cG9pbnRlcjsgd2lkdGg6MjBweDsgaGVpZ2h0OjIwcHg7IHRvcDo1MCU7IGxlZnQ6NTAlOyBtYXJnaW4tdG9wOi0xMHB4OyBtYXJnaW4tbGVmdDotMTBweDsgfSAuYWR2YW5jZWQtc2xpZGVyIC50aW1lci1hbmltYXRpb24gLnRpbWVyLWFuaW1hdGlvbi1jb250cm9scyB7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvcGxheXBhdXNlX3NtYWxsLnBuZykgbm8tcmVwZWF0OyB9IC5hZHZhbmNlZC1zbGlkZXIgLnRpbWVyLWFuaW1hdGlvbi5wbGF5IC50aW1lci1hbmltYXRpb24tY29udHJvbHMgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOi0yMHB4IDA7IH0gLmFkdmFuY2VkLXNsaWRlciAudGltZXItYW5pbWF0aW9uLnBhdXNlIC50aW1lci1hbmltYXRpb24tY29udHJvbHMgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOjAgMDsgfSAuYWR2YW5jZWQtc2xpZGVyIC5jYXB0aW9uLWNvbnRhaW5lciB7IG92ZXJmbG93OmhpZGRlbjsgcG9zaXRpb246YWJzb2x1dGU7IH0gLmFkdmFuY2VkLXNsaWRlciAuY2FwdGlvbi1jb250YWluZXIgLndyYXBwZXIgeyBwb3NpdGlvbjphYnNvbHV0ZTsgfSAuYWR2YW5jZWQtc2xpZGVyIC5jYXB0aW9uLWNvbnRhaW5lciAuYmFja2dyb3VuZCB7IHBvc2l0aW9uOmFic29sdXRlOyB3aWR0aDoxMDAlOyBoZWlnaHQ6MTAwJTsgfSAuYWR2YW5jZWQtc2xpZGVyIC50aHVtYm5haWwtd3JhcHBlciB7IHBvc2l0aW9uOmFic29sdXRlOyB9IC5hZHZhbmNlZC1zbGlkZXIgLnRodW1ibmFpbCB7IGJhY2tncm91bmQtaW1hZ2U6dXJsKC9pbWFnZXMvcHJlbG9hZGVyLmdpZik7IGJhY2tncm91bmQtcG9zaXRpb246Y2VudGVyOyBiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7IHBvc2l0aW9uOmFic29sdXRlOyBvdmVyZmxvdzpoaWRkZW47IH0gLmFkdmFuY2VkLXNsaWRlciAuc2xpZGUtYnV0dG9ucyB7IHBvc2l0aW9uOmFic29sdXRlOyB6LWluZGV4OjIwOyB9IC5hZHZhbmNlZC1zbGlkZXIgLnNsaWRlLWJ1dHRvbnMgLmxlZnQsIC5hZHZhbmNlZC1zbGlkZXIgLnNsaWRlLWJ1dHRvbnMgLnJpZ2h0LCAuYWR2YW5jZWQtc2xpZGVyIC5zbGlkZS1idXR0b25zIC5taWRkbGUgeyBmbG9hdDpsZWZ0OyB9IC5hZHZhbmNlZC1zbGlkZXIgLnNsaWRlLWJ1dHRvbnMgYSB7IHBvc2l0aW9uOnJlbGF0aXZlOyBjdXJzb3I6cG9pbnRlcjsgZmxvYXQ6bGVmdDsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IHRleHQtYWxpZ246Y2VudGVyOyB9IC5hZHZhbmNlZC1zbGlkZXIgLnRodW1ibmFpbC1zY3JvbGxlciB7IHBvc2l0aW9uOmFic29sdXRlOyB6LWluZGV4OjIwOyB9IC5hZHZhbmNlZC1zbGlkZXIgLnRodW1ibmFpbC1zY3JvbGxlciAudmlzaWJsZS1jb250YWluZXIgeyBwb3NpdGlvbjpyZWxhdGl2ZTsgb3ZlcmZsb3c6aGlkZGVuOyB9IC5hZHZhbmNlZC1zbGlkZXIgLnRodW1ibmFpbC1zY3JvbGxlciAuY29udGFpbmVyIHsgcG9zaXRpb246YWJzb2x1dGU7IG92ZXJmbG93OnZpc2libGU7IHRvcDowOyBsZWZ0OjA7IGxpc3Qtc3R5bGU6bm9uZTsgbWFyZ2luOjA7IHBhZGRpbmc6MDsgfSAuYWR2YW5jZWQtc2xpZGVyIC50aHVtYm5haWwtc2Nyb2xsZXIgLnRodW1ibmFpbC13cmFwcGVyIHsgY3Vyc29yOnBvaW50ZXI7IGxpc3Qtc3R5bGU6bm9uZTsgfSAuYWR2YW5jZWQtc2xpZGVyIC50aHVtYm5haWwtc2Nyb2xsZXIgLmxpZ2h0Ym94LWljb24geyBwb3NpdGlvbjphYnNvbHV0ZTsgd2lkdGg6MzBweDsgaGVpZ2h0OjMwcHg7IHRvcDo1MCU7IGxlZnQ6NTAlOyBtYXJnaW4tdG9wOi0xNXB4OyBtYXJnaW4tbGVmdDotMTVweDsgY3Vyc29yOnBvaW50ZXI7IH0gLmFkdmFuY2VkLXNsaWRlciAudGh1bWJuYWlsLXNjcm9sbGVyIC5saWdodGJveC1pY29uLnBsYXkgeyBiYWNrZ3JvdW5kLWltYWdlOnVybCgvaW1hZ2VzL2xpZ2h0Ym94X3BsYXlfc21hbGwucG5nKTsgfSAuYWR2YW5jZWQtc2xpZGVyIC50aHVtYm5haWwtc2Nyb2xsZXIgLmxpZ2h0Ym94LWljb24ubWFnbmlmeWluZyB7IGJhY2tncm91bmQtaW1hZ2U6dXJsKC9pbWFnZXMvbGlnaHRib3hfbWFnbmlmeWluZ19zbWFsbC5wbmcpOyB9IC5hZHZhbmNlZC1zbGlkZXIgLnRodW1ibmFpbC1zY3JvbGxlciAubGlnaHRib3gtaWNvbi5oeXBlcmxpbmsgeyBiYWNrZ3JvdW5kLWltYWdlOnVybCgvaW1hZ2VzL2xpZ2h0Ym94X2h5cGVybGlua19zbWFsbC5wbmcpOyB9IC5hZHZhbmNlZC1zbGlkZXIgLnRodW1ibmFpbCAuY2FwdGlvbiB7IHBvc2l0aW9uOmFic29sdXRlOyB3aWR0aDoxMDAlOyB9IC5hZHZhbmNlZC1zbGlkZXIgLnRodW1ibmFpbCAuY2FwdGlvbiAuYmFja2dyb3VuZCB7IHBvc2l0aW9uOmFic29sdXRlOyB3aWR0aDoxMDAlOyBoZWlnaHQ6MTAwJTsgei1pbmRleDoxMDsgfSAuYWR2YW5jZWQtc2xpZGVyIC50aHVtYm5haWwgLmNhcHRpb24gLmNvbnRlbnQgeyBwb3NpdGlvbjphYnNvbHV0ZTsgd2lkdGg6MTAwJTsgei1pbmRleDoyMDsgfSAuYWR2YW5jZWQtc2xpZGVyIC50aHVtYm5haWwtc2Nyb2xsZXIgLmFycm93cyBhIHsgcG9zaXRpb246YWJzb2x1dGU7IGN1cnNvcjpwb2ludGVyOyB9IC5hZHZhbmNlZC1zbGlkZXIgLnRodW1ibmFpbC1zY3JvbGxlciAuYnV0dG9ucyB7IHBvc2l0aW9uOmFic29sdXRlOyB3aWR0aDphdXRvOyB9IC5hZHZhbmNlZC1zbGlkZXIgLnRodW1ibmFpbC1zY3JvbGxlciAuYnV0dG9ucyBhIHsgcG9zaXRpb246YWJzb2x1dGU7IGN1cnNvcjpwb2ludGVyOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgfSAuYWR2YW5jZWQtc2xpZGVyLXRvb2x0aXAgeyBwb3NpdGlvbjphYnNvbHV0ZTsgei1pbmRleDo5OTk5OyB9IC5vZW0taW1nLXNsaWRlciAuc2xpZGUgYSB7IGRpc3BsYXk6ZmxleDsgYWxpZ24taXRlbXM6Y2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyOyB9IC5vZW0taW1nLXNsaWRlciAuc2xpZGU6bnRoLWNoaWxkKC1uKzQpIGEgaW1neyB3aWR0aDoxMTUlICFpbXBvcnRhbnQ7IH0gLm9lbS1pbWctc2xpZGVyIC5zbGlkZSBhIGltZ3sgaGVpZ2h0OmF1dG8gIWltcG9ydGFudDsgbWFyZ2luOjAgIWltcG9ydGFudDsgbWF4LXdpZHRoOm5vbmUgIWltcG9ydGFudDsgbWF4LWhlaWdodDpub25lICFpbXBvcnRhbnQ7IHBvc2l0aW9uOnJlbGF0aXZlICFpbXBvcnRhbnQ7IGxlZnQ6aW5pdGlhbCAhaW1wb3J0YW50OyB0b3A6aW5pdGlhbCAhaW1wb3J0YW50OyBtYXgtd2lkdGg6dW5zZXQgIWltcG9ydGFudDsgbWF4LWhlaWdodDp1bnNldCAhaW1wb3J0YW50OyB9IC5vZW0taW1nLXNsaWRlciAjZmlyc3RTbGlkZXJJbWcgLnBsYWNlaG9sZGVyIHsgYmFja2dyb3VuZC1zaXplOjExNSU7IH0KLyoqIC9jc3MvcGFnZWJhbm5lci5jc3MgKiovCiN0b3BCYW5uZXJJbWFnZSB7IHBvc2l0aW9uOnJlbGF0aXZlOyB9ICN0b3BCYW5uZXJJbWFnZSAudG9wQmFubmVySW1hZ2UtLWRpc2NsYWltZXItY29udGFpbmVyIHsgei1pbmRleDoxMTA7IGNvbG9yOnZhcigtLWRlZmF1bHQtYmxhY2spOyBmb250LXNpemU6dmFyKC0tZnMpOyBwYWRkaW5nOjVweCAxMHB4OyB0ZXh0LWFsaWduOmNlbnRlcjsgZGlzcGxheTpub25lOyB9ICN0b3BCYW5uZXJJbWFnZSAudG9wQmFubmVySW1hZ2UtLWRpc2NsYWltZXItY29udGFpbmVyIC5mYS10aW1lcyB7IGRpc3BsYXk6bm9uZTsgfSAjdG9wQmFubmVySW1hZ2UgLnRvcEJhbm5lckltYWdlLS1kaXNjbGFpbWVyLWNvbnRyb2wgeyB0ZXh0LWFsaWduOmNlbnRlcjsgY3Vyc29yOnBvaW50ZXI7IHRleHQtd3JhcDpub3dyYXA7IH0gI3RvcEJhbm5lckltYWdlIC50b3BCYW5uZXJJbWFnZS0tZGlzY2xhaW1lci1jb250cm9sID4gYnV0dG9uIHsgdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTsgZm9udC1zaXplOnZhcigtLWZzKTsgY29sb3I6dmFyKC0td2hpdGUpOyBiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWJsYWNrKTsgd2lkdGg6MTAwJTsgcGFkZGluZzowLjc1cmVtOyB9ICN0b3BCYW5uZXJJbWFnZTpub3QoOmhhcygqKSkgeyBkaXNwbGF5Om5vbmU7IH0gI3RvcEJhbm5lckltYWdlW2RhdGEtaW52Y2F0PSJuZXdpbnYiXTpoYXMoLnVzZWRJbnZCYW5uZXI6b25seS1jaGlsZCkgeyBkaXNwbGF5Om5vbmU7IH0gI3RvcEJhbm5lckltYWdlW2RhdGEtaW52Y2F0PSJ1c2VkIl06aGFzKC5uZXdJbnZCYW5uZXI6b25seS1jaGlsZCkgeyBkaXNwbGF5Om5vbmU7IH0gI3RvcEJhbm5lckltYWdlW2RhdGEtaW52Y2F0PSJuZXdpbnYiXSAudXNlZEludkJhbm5lciB7IGRpc3BsYXk6bm9uZTsgfSAjdG9wQmFubmVySW1hZ2VbZGF0YS1pbnZjYXQ9InVzZWQiXSAubmV3SW52QmFubmVyIHsgZGlzcGxheTpub25lOyB9ICN0b3BCYW5uZXJJbWFnZVtkYXRhLWludmNhdD0ibmV3aW52Il06aGFzKC5uZXdJbnZCYW5uZXIpICNkZWZhdWx0VG9wQmFubmVyIHsgZGlzcGxheTpub25lOyB9ICN0b3BCYW5uZXJJbWFnZVtkYXRhLWludmNhdD0idXNlZCJdOmhhcygudXNlZEludkJhbm5lcikgI2RlZmF1bHRUb3BCYW5uZXIgeyBkaXNwbGF5Om5vbmU7IH0gI3RvcEJhbm5lckltYWdlID4gaW1neyB3aWR0aDoxMDAlOyB9IEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDo3NjBweCkgeyAjdG9wQmFubmVySW1hZ2UgLnRvcEJhbm5lckltYWdlLS1kaXNjbGFpbWVyLWNvbnRyb2wgeyBwb3NpdGlvbjphYnNvbHV0ZTsgei1pbmRleDoxMDI7IGxlZnQ6NTAlOyB0cmFuc2Zvcm06dHJhbnNsYXRlWCgtNTAlKTsgYm90dG9tOjAuNzVyZW07IH0gI3RvcEJhbm5lckltYWdlIC50b3BCYW5uZXJJbWFnZS0tZGlzY2xhaW1lci1jb250cm9sID4gYnV0dG9uIHsgd2lkdGg6YXV0bzsgYm9yZGVyLXJhZGl1czozcHg7IGJhY2tncm91bmQtY29sb3I6cmdiYSgwLCAwLCAwLCAwLjgpOyBib3JkZXI6bm9uZTsgY29sb3I6dmFyKC0td2hpdGUpOyBmb250LXNpemU6dmFyKC0tZnMtMik7IHRleHQtYWxpZ246Y2VudGVyOyBjdXJzb3I6cG9pbnRlcjsgZGlzcGxheTppbmxpbmUtYmxvY2s7IHBhZGRpbmc6OHB4IDEzcHg7IHRleHQtZGVjb3JhdGlvbjpub25lOyB9ICN0b3BCYW5uZXJJbWFnZSAudG9wQmFubmVySW1hZ2UtLWRpc2NsYWltZXItY29udGFpbmVyIHsgcG9zaXRpb246YWJzb2x1dGU7IHRvcDowOyB3aWR0aDpjYWxjKDEwMCUgLSAyMHB4KTsgaGVpZ2h0OmNhbGMoMTAwJSAtIDEwcHgpOyBiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsMC44KTsgY29sb3I6dmFyKC0tbGlnaHQpOyBmb250LXNpemU6dmFyKC0tZnMpOyB9ICN0b3BCYW5uZXJJbWFnZSAudG9wQmFubmVySW1hZ2UtLWRpc2NsYWltZXItY29udGFpbmVyIC5mYS10aW1lcyB7IGRpc3BsYXk6aW5saW5lLWJsb2NrOyBwb3NpdGlvbjphYnNvbHV0ZTsgdG9wIDoxMHB4OyByaWdodDoxMCU7IGN1cnNvcjpwb2ludGVyOyB9ICN0b3BCYW5uZXJJbWFnZSAudG9wQmFubmVySW1hZ2UtLWRpc2NsYWltZXItY29udGFpbmVyID4gZGl2IHsgcG9zaXRpb246YWJzb2x1dGU7IHdpZHRoOjc1JTsgdG9wOjUwJTsgbGVmdDo1MCU7IHRyYW5zZm9ybTp0cmFuc2xhdGVZKC01MCUpIHRyYW5zbGF0ZVgoLTUwJSk7IGhlaWdodDo5MCU7IG92ZXJmbG93LXg6aGlkZGVuOyBvdmVyZmxvdy15OmF1dG87IH0gfQovKiogL2Nzcy90b2FzdHIuY3NzICoqLwoudG9hc3QtdGl0bGV7Zm9udC13ZWlnaHQ6Ym9sZH0udG9hc3QtbWVzc2FnZXstbXMtd29yZC13cmFwOmJyZWFrLXdvcmQ7d29yZC13cmFwOmJyZWFrLXdvcmR9LnRvYXN0LW1lc3NhZ2UgYSwudG9hc3QtbWVzc2FnZSBsYWJlbHtjb2xvcjojZmZmfS50b2FzdC1tZXNzYWdlIGE6aG92ZXJ7Y29sb3I6I2NjYzt0ZXh0LWRlY29yYXRpb246bm9uZX0udG9hc3QtY2xvc2UtYnV0dG9ue3Bvc2l0aW9uOnJlbGF0aXZlO3JpZ2h0Oi0wLjNlbTt0b3A6LTAuM2VtO2Zsb2F0OnJpZ2h0O2ZvbnQtc2l6ZToxLjI1cmVtIDtmb250LXdlaWdodDpib2xkO2NvbG9yOmluaGVyaXQ7LXdlYmtpdC10ZXh0LXNoYWRvdzowIDFweCAwICNmZmY7dGV4dC1zaGFkb3c6MCAxcHggMCAjZmZmO29wYWNpdHk6Ljg7LW1zLWZpbHRlcjphbHBoYShvcGFjaXR5PTgwKTtmaWx0ZXI6YWxwaGEob3BhY2l0eT04MCl9LnRvYXN0LWNsb3NlLWJ1dHRvbjpob3ZlciwudG9hc3QtY2xvc2UtYnV0dG9uOmZvY3Vze2NvbG9yOiMwNTE0MWY7dGV4dC1kZWNvcmF0aW9uOm5vbmU7Y3Vyc29yOnBvaW50ZXI7b3BhY2l0eTouNDstbXMtZmlsdGVyOmFscGhhKG9wYWNpdHk9NDApO2ZpbHRlcjphbHBoYShvcGFjaXR5PTQwKX1idXR0b24udG9hc3QtY2xvc2UtYnV0dG9ue3BhZGRpbmc6MDtjdXJzb3I6cG9pbnRlcjtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O2JvcmRlcjowOy13ZWJraXQtYXBwZWFyYW5jZTpub25lfS50b2FzdC10b3AtY2VudGVye3RvcDowO3JpZ2h0OjA7d2lkdGg6MTAwJX0udG9hc3QtYm90dG9tLWNlbnRlcntib3R0b206MDtyaWdodDowO3dpZHRoOjEwMCV9LnRvYXN0LXRvcC1mdWxsLXdpZHRoe3RvcDowO3JpZ2h0OjA7d2lkdGg6MTAwJX0udG9hc3QtYm90dG9tLWZ1bGwtd2lkdGh7Ym90dG9tOjA7cmlnaHQ6MDt3aWR0aDoxMDAlfS50b2FzdC10b3AtbGVmdHt0b3A6MTJweDtsZWZ0OjEycHh9LnRvYXN0LXRvcC1yaWdodHt0b3A6MTJweDtyaWdodDoxMnB4fS50b2FzdC1ib3R0b20tcmlnaHR7cmlnaHQ6MTJweDtib3R0b206MTJweH0udG9hc3QtYm90dG9tLWxlZnR7Ym90dG9tOjEycHg7bGVmdDoxMnB4fSN0b2FzdC1jb250YWluZXJ7cG9zaXRpb246Zml4ZWQ7ei1pbmRleDo5OTk5OTk7Y29sb3I6I0ZGRn0jdG9hc3QtY29udGFpbmVyICp7LW1vei1ib3gtc2l6aW5nOmJvcmRlci1ib3g7LXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7Ym94LXNpemluZzpib3JkZXItYm94fSN0b2FzdC1jb250YWluZXI+ZGl2e3Bvc2l0aW9uOnJlbGF0aXZlO292ZXJmbG93OmhpZGRlbjttYXJnaW46MCAwIDZweDtwYWRkaW5nOjE1cHggMTVweCAxNXB4IDUwcHg7d2lkdGg6MzAwcHg7LW1vei1ib3JkZXItcmFkaXVzOjNweCAzcHggM3B4IDNweDstd2Via2l0LWJvcmRlci1yYWRpdXM6M3B4IDNweCAzcHggM3B4O2JvcmRlci1yYWRpdXM6M3B4IDNweCAzcHggM3B4O2JhY2tncm91bmQtcG9zaXRpb246MTVweCBjZW50ZXI7YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0Oy1tb3otYm94LXNoYWRvdzowIDAgMTJweCAjOTk5Oy13ZWJraXQtYm94LXNoYWRvdzowIDAgMTJweCAjOTk5O2JveC1zaGFkb3c6MCAwIDEycHggIzk5OTtjb2xvcjppbmhlcml0O29wYWNpdHk6Ljg7LW1zLWZpbHRlcjphbHBoYShvcGFjaXR5PTgwKTtmaWx0ZXI6YWxwaGEob3BhY2l0eT04MCl9I3RvYXN0LWNvbnRhaW5lcj46aG92ZXJ7LW1vei1ib3gtc2hhZG93OjAgMCAxMnB4ICMwMDA7LXdlYmtpdC1ib3gtc2hhZG93OjAgMCAxMnB4ICMwMDA7Ym94LXNoYWRvdzowIDAgMTJweCAjMDAwO29wYWNpdHk6MTstbXMtZmlsdGVyOmFscGhhKG9wYWNpdHk9MTAwKTtmaWx0ZXI6YWxwaGEob3BhY2l0eT0xMDApO2N1cnNvcjpwb2ludGVyfSN0b2FzdC1jb250YWluZXI+LnRvYXN0LWluZm97YmFja2dyb3VuZC1pbWFnZTp1cmwoImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQmdBQUFBWUNBWUFBQURnZHozNEFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFEc01BQUE3REFjZHZxR1FBQUFHd1NVUkJWRWhMdFphOVNnTkJFTWM5c1V4eFJjb1VLU3pTV0loWHBGTWhoWVdGaGFCZzR5UFlpV0NYWnhCTEVSc0xSUzNFUWtFZndDS2RqV0pBd1NLQ2dvS0NjdWR2NE81WUxydDdFemdYaGlVMy80K2IyY2ttd1ZqSlNwS2tRNndBaTRnd2hUK3ozd1JCY0V6MHlqU3NlVVRyY1J5ZnNIc1htRDBBbWJIT0M5SWk4VkltbnVYQlBnbEhwUTV3d1NWTTdzTm5URzdaYTRKd0RkQ2p4eUFpSDNueUEybXRhVEp1ZmlEWjVkQ2FxbEl0SUxoMU5IYXRmTjVza3ZqeDlaMzhtNjlDZ3p1WG1aZ1ZyUElHRTc2M0p4OXFLc1JveldZdzZ4T0hkRVIrbm4yS2tPK0JiK1VWNUNCTjZXQzZRdEJnYlJWb3pyYWhBYm1tNkh0VXNndFBDMTl0RmR4WFpZQk9ma2JtRkoxVmFIQTFWQUhqZDBwcDcwb1RaenZSK0VWcngyWWdmZHNxNmV1NTVCSFlSOGhsY2tpK24ra0VSVUZHOEJyQTBCd2plQXYyTThXTFFCdGN5K1NENmZOc21uQjNBbEJMcmdUdFZXMWMyUU40YlZXTEFUYUlTNjBKMkR1NXkxVGlKZ2pTQnZGVlpnVG13Q1UrZEFaRm9QeEdFRXM4bnlIQzlCd2UyR3ZFSnYyV1haYjB2amR5RlQ0Q3hrM2Uva0lxbE9Hb1ZMd3dQZXZwWUhUKzAwVCtoV3dYRGY0QUpBT1VxV2NEaGJ3QUFBQUFTVVZPUks1Q1lJST0iKSAhaW1wb3J0YW50fSN0b2FzdC1jb250YWluZXI+LnRvYXN0LWVycm9ye2JhY2tncm91bmQtaW1hZ2U6dXJsKCJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJnQUFBQVlDQVlBQUFEZ2R6MzRBQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBRHNNQUFBN0RBY2R2cUdRQUFBSE9TVVJCVkVoTHJaYS9TZ05CRU1aemgwV0tDQ2xTQ0thSVlPRUQrQUFLZVFRTEc4SFd6dExDSW1CcllhZGdJZFkrZ0lLTllrQkZTd3U3Q0FvcUNna2tvR0JJL0UyOFBkYkxabWVETGd6WnpjeDgzL3paMlNTWEMxajlmcitJMUhxOTNnMnl4SDRpd00xdmtvQldBZHhDbXB6VHhma04yUmN5Wk5hSEZJa1NvMTArOGtneGtYSVVSVjVIR3hUbUZ1Yzc1QjJSZlFrcHhIRzhhQWdhQUZhMHRBSHFZRmZRN0l3ZTJ5aE9EazgrSjRDN3lBb1JUV0kzdy80a2xHUmdSNGxPN1JwbjkrZ3ZNeVdwK3V4Rmg4K0grQVJsZ04xbkp1SnVRQVl2TmtFbndHRmNrMThFcjRxM2VnRWMvb08rbWhMZEtnUnloZE5GaWFjQzBybE9DYmhOVno0SDlGbkFZZ0RCdlUzUUlpb1psSkZMSnRzb0hZUkRmaVpvVXlJeHFDdFJwVmxBTnEwRVU0ZEFwanJ0Z2V6UEZhZDVTMTlXZ2prYzBoTlZudUY0SGpWQTZDN1FyU0lieWxCK29aZTNhSGdCc3FsTnFLWUg0OGpYeUpLTXVBYml5Vko4S3phQjNlUmMwcGc5VndRNG5pRnJ5STY4cWlPaTNBYmp3ZHNmbkF0azBiQ2pUTEpLcjZtckQ5ZzhpcS9TL0I4MWhndU9NbFFUblZ5RzQwd0Fjam5tZ3NDTkVTRHJqbWU3d2ZmdFA0UDdTUDROM0NKWmR2em9OeUdxMmMvSFdPWEpHc3ZWZytSQS9rMk1DL3dONkkyWUEyUHQ4R2tBQUFBQVNVVk9SSzVDWUlJPSIpICFpbXBvcnRhbnR9I3RvYXN0LWNvbnRhaW5lcj4udG9hc3Qtc3VjY2Vzc3tiYWNrZ3JvdW5kLWltYWdlOnVybCgiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCZ0FBQUFZQ0FZQUFBRGdkejM0QUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQURzTUFBQTdEQWNkdnFHUUFBQURzU1VSQlZFaExZMkFZQmZRTWdmLy8vM1A4Ky9ldkFJZ3ZBL0ZzSUYrQmF2WUREV01CR3JvYVNNTUJpRThWQzdBWkRySUZhTUZuaWkzQVpUalVnc1VVV1VEQThPZEFINmlRYlFFaHc0SHlHc1BFY0tCWEJJQzRBUmhleDRHNEJzam13ZVUxc29JRmFHZy9XdG9GWlJJWmRFdklNaHhrQ0NqWElWc0FUVjZnRkdBQ3M0UnN3MEVHZ0lJSDNRSllKZ0hTQVJRWkRyV0FCK2phd3pncytRMlVPNDlEN2puUlNSR29FRlJJTGNkbUVNV0dJMGNtMEpKMlFwWUExUkR2Y216SkVXaEFCaEQvcHFyTDBTMENXdUFCS2duUmtpOWxMc2VTN2cyQWxxd0hXUVNLSDRvS0xySUxwUkdoRVFDdzJMaVJVSWE0bHdBQUFBQkpSVTVFcmtKZ2dnPT0iKSAhaW1wb3J0YW50fSN0b2FzdC1jb250YWluZXI+LnRvYXN0LXdhcm5pbmd7YmFja2dyb3VuZC1pbWFnZTp1cmwoImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQmdBQUFBWUNBWUFBQURnZHozNEFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFEc01BQUE3REFjZHZxR1FBQUFHWVNVUkJWRWhMNVpTdlRzTlFGTWJYWkdJQ01ZR1ltSmhBUUlKQUlDWVFQQUFDaVNEQjhBaUlDUVFKVDRDcVFFd2dKdllBU0FRQ2laaVltSmhBSUJBVENBUkp5KzlyVHNsZGQ4c0t1MU0wK2RMYjA1N3Y2L2xicS8yckswbVMvVFJOajljV05BS1BZSUpJSTdnSXhDY1E1MWN2cUlEK0dJRVg4QVNHNEIxYks1Z0laRmVRZm9KZEVYT2ZnWDRRQVFnN2tIMkE2NXlRODdseXhiMjdzZ2drQXpBdUZoYmJnMUsya2dDa0IxYlZ3eUlSOW0yTDdQUlBJaERVSVhnR3R5S3c1NzV5ejNsVE5zNlg0SlhualYrTEtNL20zTXlkblRidE9LSWp0ejZWaENCcTR2U20zbmNkckQybGswVmdVWFNWS2pWREpYSnppalcxUlFkc1U3Rjc3SGU4dTY4a29OWlR6OE96NXlHYTZKM0gzbFoweFlnWEJLMlF5bWxXV0ErUlduWWhza0xCdjJ2bUUraEJNQ3RiQTdLWDVkcld5UlQvMkpzcVoySXZmQjlZNGJXRE5NRmJKUkZtQzlFNzRTb1MwQ3F1bHdqa0MwKzVicGNWMUNaOE5NZWo0cGp5MFUrZG9EUXNHeW8xaHpWSnR0SWpoUTdHbkJ0UkZOMVVhclVsSDhGM3hpY3QrSFkwN3JFem9VR1BsV2NqUkZScjQvZ0NoWmdjM1pMMmQ4b0FBQUFBU1VWT1JLNUNZSUk9IikgIWltcG9ydGFudH0jdG9hc3QtY29udGFpbmVyLnRvYXN0LXRvcC1jZW50ZXI+ZGl2LCN0b2FzdC1jb250YWluZXIudG9hc3QtYm90dG9tLWNlbnRlcj5kaXZ7d2lkdGg6MzAwcHg7bWFyZ2luOmF1dG99I3RvYXN0LWNvbnRhaW5lci50b2FzdC10b3AtZnVsbC13aWR0aD5kaXYsI3RvYXN0LWNvbnRhaW5lci50b2FzdC1ib3R0b20tZnVsbC13aWR0aD5kaXZ7d2lkdGg6OTYlO21hcmdpbjphdXRvfS50b2FzdHtiYWNrZ3JvdW5kLWNvbG9yOiMwMzAzMDN9LnRvYXN0LXN1Y2Nlc3N7YmFja2dyb3VuZC1jb2xvcjojNTFhMzUxfS50b2FzdC1lcnJvcntiYWNrZ3JvdW5kLWNvbG9yOiNiZDM2MmZ9LnRvYXN0LWluZm97YmFja2dyb3VuZC1jb2xvcjojMmY5NmI0fS50b2FzdC13YXJuaW5ne2JhY2tncm91bmQtY29sb3I6I2Y4OTQwNn0udG9hc3QtcHJvZ3Jlc3N7cG9zaXRpb246YWJzb2x1dGU7bGVmdDowO2JvdHRvbTowO2hlaWdodDo0cHg7YmFja2dyb3VuZC1jb2xvcjojMDAwO29wYWNpdHk6LjQ7LW1zLWZpbHRlcjphbHBoYShvcGFjaXR5PTQwKTtmaWx0ZXI6YWxwaGEob3BhY2l0eT00MCl9QG1lZGlhIGFsbCBhbmQgKG1heC13aWR0aDoyNDBweCl7I3RvYXN0LWNvbnRhaW5lcj5kaXZ7cGFkZGluZzo4cHggOHB4IDhweCA1MHB4O3dpZHRoOjExZW19I3RvYXN0LWNvbnRhaW5lciAudG9hc3QtY2xvc2UtYnV0dG9ue3JpZ2h0Oi0wLjJlbTt0b3A6LTAuMmVtfX1AbWVkaWEgYWxsIGFuZCAobWluLXdpZHRoOjI0MXB4KSBhbmQgKG1heC13aWR0aDo0ODBweCl7I3RvYXN0LWNvbnRhaW5lcj5kaXZ7cGFkZGluZzo4cHggOHB4IDhweCA1MHB4O3dpZHRoOjE4ZW19I3RvYXN0LWNvbnRhaW5lciAudG9hc3QtY2xvc2UtYnV0dG9ue3JpZ2h0Oi0wLjJlbTt0b3A6LTAuMmVtfX1AbWVkaWEgYWxsIGFuZCAobWluLXdpZHRoOjQ4MXB4KSBhbmQgKG1heC13aWR0aDo3NjhweCl7I3RvYXN0LWNvbnRhaW5lcj5kaXZ7cGFkZGluZzoxNXB4IDE1cHggMTVweCA1MHB4O3dpZHRoOjI1ZW19fQovKiogL2Nzcy9raWFTaGlmdF9jZXJ0aWZpZWQuY3NzICoqLwo6cm9vdCB7IC0ta2lhLWJsYWNrOiMwNTE0MUY7IC0tcHJvbW8tYnRuLWNvbG9yOiMwNTE0MWY7IC0tcHJvbW8tYnRuLXRleHQtY29sb3I6I2ZmZmZmZjsgLS1wcm9tby1idG4taG92ZXItYmctY29sb3I6IzA1MTQxZjsgLS1wcm9tby1idG4taG92ZXItdGV4dC1jb2xvcjojZmZmZmZmOyAtLWNlcnQtdHh0LXRyYW5zZm9ybTpub25lOyAtLXR4dC11cHBlcjpub25lOyAtLWZvcm1hdC1waWNlLXNpZ24tcG9zaXRpb246bWluKDE3JSwwLjRlbSk7IC0tZm9ybWF0LXNtYWxsLXByaWNlLXNpZ24tcG9zaXRpb246bWluKDclLDAuNGVtKTsgfSAjb3V0cHV0cHJpY2Vmb3JteyAtLWZvcm1hdC1waWNlLXNpZ24tcG9zaXRpb246MWVtOyB9IGJvZHkuRU5HTElTSHsgLS1jZXJ0LXR4dC10cmFuc2Zvcm06Y2FwaXRhbGl6ZTsgfSBib2R5ICo6bm90KC5mYSwgLmZhYiwgLmZhZCwgLmZhbCwgLmZhciwgLmZhcykgeyBmb250LWZhbWlseTppbmhlcml0ICFpbXBvcnRhbnQ7IH0gLmJhbm5lcl9zZWFyY2hfYmFyX3RpdGxlIHsgZm9udC13ZWlnaHQ6bm9ybWFsICFpbXBvcnRhbnQ7IH0gI2Jhbm5lcl9zZWFyY2hfYmFyX29wZW5faG91cnMgZGl2IHsgZm9udC13ZWlnaHQ6bm9ybWFsICFpbXBvcnRhbnQ7IH0gLmJhbm5lcl9zZWFyY2hfYmFyX3N1Ym1pdF9idXR0b24geyBmb250LXdlaWdodDpub3JtYWwgIWltcG9ydGFudDsgfSAuYmFubmVyX3NlYXJjaF9iYXJfc3VidGl0bGUgeyBmb250LXdlaWdodDpub3JtYWwgIWltcG9ydGFudDsgfSAja2lhU2hpZnRDZXJ0aWZpZWRGb290ZXIgeyB3aWR0aCA6MTAwJTsgaGVpZ2h0IDo4MHB4OyBiYWNrZ3JvdW5kLWNvbG9yIDojZmZmZmZmOyBjb2xvciA6dmFyKC0ta2lhLWJsYWNrKTsgZm9udC1mYW1pbHkgOidTaWduYXR1cmVMaWdodCc7IGNsZWFyIDpib3RoOyB9ICNraWFTaGlmdENlcnRpZmllZEZvb3RlciAuY29udGFpbmVyIHsgd2lkdGggOjEwMCU7IG1heC13aWR0aCA6MTIwMHB4OyBtYXJnaW4gOjAgYXV0bzsgZGlzcGxheSA6ZmxleDsganVzdGlmeS1jb250ZW50IDpzcGFjZS1iZXR3ZWVuOyBhbGlnbi1pdGVtcyA6Y2VudGVyOyB9ICNraWFTaGlmdENlcnRpZmllZEZvb3RlciAuc29jaWFsLW1lZGlhX19jb250YWluZXIgeyBkaXNwbGF5IDpmbGV4OyBmbGV4LWRpcmVjdGlvbiA6cm93OyBqdXN0aWZ5LWNvbnRlbnQgOnNwYWNlLWV2ZW5seTsgYWxpZ24taXRlbXMgOmNlbnRlcjsgZmxleC1ncm93IDowLjI7IG1hcmdpbi10b3AgOjEuNzVyZW07IH0gI2tpYVNoaWZ0Q2VydGlmaWVkRm9vdGVyIC5zb2NpYWwtbWVkaWFfX2NvbnRhaW5lciBpbWcgeyBoZWlnaHQgOjI4cHg7IHdpZHRoIDoyOHB4OyB9ICNraWFTaGlmdENlcnRpZmllZEZvb3RlciAuZGlzY2xhaW1lcl9fY29udGFpbmVyIHsgd2lkdGggOjUwJTsgbWFyZ2luIDoxLjc1cmVtIDJyZW0gMCAycmVtOyBmbGV4LWdyb3cgOjI7IH0gI2tpYVNoaWZ0Q2VydGlmaWVkRm9vdGVyIC5kaXNjbGFpbWVyX19jb250YWluZXIgcCB7IGZvbnQtc2l6ZSA6MC44cmVtOyB0ZXh0LWFsaWduIDpjZW50ZXI7IH0gI2tpYVNoaWZ0Q2VydGlmaWVkRm9vdGVyIC5kaXNjbGFpbWVyX19jb250YWluZXIgYSB7IHRleHQtZGVjb3JhdGlvbiA6bm9uZTsgfSAja2lhU2hpZnRDZXJ0aWZpZWRGb290ZXIgLmRpc2NsYWltZXJfX2NvbnRhaW5lciBhOmhvdmVyIHsgdGV4dC1kZWNvcmF0aW9uIDp1bmRlcmxpbmU7IH0gI2tpYVNoaWZ0Q2VydGlmaWVkRm9vdGVyIC5jZXJ0aWZpZWQtbG9nb19fY29udGFpbmVyIHsgbWFyZ2luLXRvcCA6LTQ1LjVweDsgZmxleC1ncm93IDoxOyB0ZXh0LWFsaWduIDpjZW50ZXI7IH0gI2tpYVNoaWZ0Q2VydGlmaWVkRm9vdGVyIC5jZXJ0aWZpZWQtbG9nbyB7IHdpZHRoIDoyMDBweDsgaGVpZ2h0IDphdXRvOyB9ICNraWFTaGlmdENlcnRpZmllZEZvb3RlciAuc29jaWFsLW1lZGlhX19jb250YWluZXIgLmZhYiB7IGNvbG9yIDppbmhlcml0OyB9IC5wcm9tby1vZW0taGVhZGVyIGltZywgLnByb21vLW9lbS1oZWFkZXItLWNvbG9yIGltZyB7IG1heC13aWR0aDo1cmVtICFpbXBvcnRhbnQ7IH0gLnZpc2l0Q29udGFjdEhlYWRlciAudmlzaXRDb250YWN0Q1RBQ29udGFpbmVyIC52aXNpdENvbnRhY3RCdXR0b24sIC52aXNpdENvbnRhY3RIZWFkZXIgLnZpc2l0Q29udGFjdEZvcm1Db250YWluZXIgLnZpc2l0Q29udGFjdEZvcm0gLnZpc2l0Q29udGFjdEZvcm1TdWJtaXQgeyBiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWtpYS1ibGFjaykgIWltcG9ydGFudDsgfSBhOmhvdmVyLCBhOmZvY3VzLCAuc29jaWFsLWl0ZW0gYTpob3ZlciwgLnNvY2lhbC1pdGVtIGE6Zm9jdXMsIC5kZXNrdG9wX2xhbmdfYnV0dG9uOmhvdmVyIHNwYW4sIC5kZXNrdG9wX2xhbmdfYnV0dG9uOmZvY3VzIHNwYW4sIFt0eXBlPSJzdWJtaXQiXTpob3ZlciwgW3R5cGU9InN1Ym1pdCJdOmZvY3VzLCBbcm9sZT0iYnV0dG9uIl0gPiAudGl0bGU6aG92ZXIsIFtyb2xlPSJidXR0b24iXSA+IC50aXRsZTpmb2N1cywgLmZsdEZpbHRlciAuZGl2QnV0dG9uQm94T3V0ZXI6aG92ZXIgLnMtdGV4dCwgLmZsdEZpbHRlciAuZGl2QnV0dG9uQm94T3V0ZXI6Zm9jdXMgLnMtdGV4dCwgLmZsdEZpbHRlciBidXR0b246aG92ZXIgLnMtbmFtZSwgLmZsdEZpbHRlciBidXR0b246Zm9jdXMgLnMtbmFtZSBidXR0b246aG92ZXIgLmN0YS1sYWJlbCwgYnV0dG9uOmZvY3VzIC5jdGEtbGFiZWwsIGJ1dHRvbltjbGFzcyo9InRyYWRlSW5CYXIiXTpob3ZlciBkaXYsIGJ1dHRvbltjbGFzcyo9InRyYWRlSW5CYXIiXTpmb2N1cyBkaXYsIGJ1dHRvbjpmb2N1cywgYnV0dG9uOmhvdmVyLCAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSAucmFkaW9fbGFiZWw6Zm9jdXMsICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIC5yYWRpb19sYWJlbDpob3ZlcnsgdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZSAhaW1wb3J0YW50OyB0ZXh0LWRlY29yYXRpb24tdGhpY2tuZXNzOjFweCAhaW1wb3J0YW50OyB0ZXh0LXVuZGVybGluZS1vZmZzZXQ6NHB4ICFpbXBvcnRhbnQ7IH0gLmdyb3VwVGFicyBib3gtbGM6aG92ZXIgLnRhYi1sYWJlbHsgY29sb3I6dmFyKC0tYmxhY2spOyBib3JkZXItYm90dG9tOjFweCBzb2xpZDsgfSAjQ29tcGFyZUJveCAjY29tcGFyZUJ1dHRvbiB7IGJhY2tncm91bmQtY29sb3I6dmFyKC0ta2lhLWJsYWNrKTsgfSAuVXNlZFNycDIgLmNhckJhc2ljcyAuY2FyVGl0bGUgLmRpdlRyaW0geyBsaW5lLWhlaWdodDppbmhlcml0OyB9IC5jYXJCYXNpY3MgLmRpdk1ha2UuZWxJc0dyZXlhYmxlIHsgdGV4dC10cmFuc2Zvcm06aW5pdGlhbDsgfSAuY2Fyb3VzZWxUaXRsZSB7IHRleHQtdHJhbnNmb3JtOmNhcGl0YWxpemU7IH0gLmNhclRpdGxlIC5kaXZNYWtlLCAuY2FyZC10aXRsZSAubWFrZS10aXRsZSB7IHRleHQtdHJhbnNmb3JtOmluaXRpYWw7IH0gYm9keS5GUkVOQ0ggLmRpdlNlb0xpbmtXcmFwcGVyIC5oZWFkaW5nM3sgdGV4dC10cmFuc2Zvcm06aW5pdGlhbDsgfSBib2R5LkVOR0xJU0ggLmRpdlNlb0xpbmtXcmFwcGVyIC5oZWFkaW5nM3sgdGV4dC10cmFuc2Zvcm06Y2FwaXRhbGl6ZTsgfSAuZGVhbGVyTWFwTGluayBzdmd7IGRpc3BsYXk6aW5saW5lLWZsZXg7IH0KLyoqIC9jc3MvZmF2b3JpdGVzLnByZWxvYWQuY3NzICoqLwpkaXYuTWFpbkJveExheWVyIGRpdi5Cb3hDaGlsZC0yIGRpdi5TbGlkZXJPdXRlckJveCwgLmRpdkNhclNpbmdsZU91dGVyQm94IC5kaXZDYXJTaW5nbGVJbm5lckJveCB7IHBvc2l0aW9uOnJlbGF0aXZlOyB9IC5kMmMtZmF2cy10cmlnZ2VyLXdyYXBwZXIgeyBwb3NpdGlvbjphYnNvbHV0ZTsgcmlnaHQ6MTEwcHg7IHRvcDozMHB4OyB6LWluZGV4OjExOyBmb250LXNpemU6MS42ZW07IGN1cnNvcjpwb2ludGVyOyB9IC5jYXJCb3hPdXRlciAuY2FySW1hZ2UgLmQyYy1mYXZzLXRyaWdnZXItd3JhcHBlciB7IHJpZ2h0OjQwcHg7IHRvcDoxNXB4OyB9IC5kaXZDYXJTaW5nbGVPdXRlckJveCAuZGl2Q2FyU2luZ2xlSW5uZXJCb3ggLmRpdkNhclRpdGxlQ29udGFpbmVyIHsgbWF4LXdpZHRoOjg1JTsgfSAuZGl2Q2FyU2luZ2xlT3V0ZXJCb3ggLmRpdkNhclNpbmdsZUlubmVyQm94IC5kMmMtZmF2cy10cmlnZ2VyLXdyYXBwZXIgeyByaWdodDoyN3B4OyB0b3A6MDsgfSAuZGl2Q2FyU2luZ2xlT3V0ZXJCb3ggLnJlYmF0ZVRhZyArIC5kaXZDYXJTaW5nbGVJbm5lckJveCAuZDJjLWZhdnMtdHJpZ2dlci13cmFwcGVyIHsgdG9wOjYwcHg7IH0gLmZhLWxheWVycyAuZmEsIC5mYS1sYXllcnMgLmZhciB7IHBvc2l0aW9uOmFic29sdXRlOyB0b3A6MDsgbGVmdDowOyB9IC5kMmMtZmF2cy10cmlnZ2VyLXdyYXBwZXIgLmZhLWxheWVycyAuZmEgeyBjb2xvcjojRkZGOyBmb250LXNpemU6MC45NzVlbTsgbGVmdDoxcHggIWltcG9ydGFudDsgfSAuZDJjLWZhdnMtdHJpZ2dlci13cmFwcGVyIC5mYS1sYXllcnMgLmZhciwgLmQyYy1mYXZzLXRyaWdnZXItd3JhcHBlci5kMmMtZmF2cy1zZWxlY3RlZCAuZmEtbGF5ZXJzIC5mYSB7IGNvbG9yOiMwNTE0MWY7IGNvbG9yOiMwNTE0MWY7IH0gYm9keS5pc0Z1bGxXaWR0aFBhZ2UgLmQyYy1mYXZzLXRyaWdnZXItd3JhcHBlciB7IGZpbHRlcjphbHBoYShvcGFjaXR5PTApOyBvcGFjaXR5OjA7IH0gZGl2I215Y2Fyb3VzZWxkaXYgLmQyYy1mYXZzLXRyaWdnZXItd3JhcHBlciwgZGl2LnVzZWQtZGV0YWlscyAuZDJjLWZhdnMtdHJpZ2dlci13cmFwcGVyIHsgcmlnaHQ6NDBweDsgdG9wOjE1cHg7IH0gLmhlYWRlci1zb2NpYWwgLmxhbmd1YWdlQmFyIHsgbWFyZ2luLXJpZ2h0OjI1cHg7IH0gLmxhbmd1YWdlQmFyIGRpdi5kMmMtZmF2cy1uYXYtd3JhcHBlciB7IGZvbnQtc2l6ZTp2YXIoLS1mczUpOyBwb3NpdGlvbjpyZWxhdGl2ZTsgd2lkdGg6MjhweDsgaGVpZ2h0OjI4cHg7IH0gLmxhbmd1YWdlQmFyIGRpdi5kMmMtZmF2cy1uYXYtd3JhcHBlciBpLmZhIHsgY29sb3I6dHJhbnNwYXJlbnQ7IH0gLmxhbmd1YWdlQmFyIGRpdi5kMmMtZmF2cy1uYXYtd3JhcHBlciBpLmZhciB7IGNvbG9yOiNhZWI1YmU7IGZvbnQtd2VpZ2h0OjEwMDsgfSAubGFuZ3VhZ2VCYXIgZGl2LmQyYy1mYXZzLW5hdi13cmFwcGVyLmZhdi1uYXYtaGFzLXZlaGljbGVzIC5mYS1sYXllcnMgaS5mYSwgLmxhbmd1YWdlQmFyIGRpdi5kMmMtZmF2cy1uYXYtd3JhcHBlci5mYXYtbmF2LWhhcy12ZWhpY2xlcyAuZmEtbGF5ZXJzIGkuZmFyIHsgY3Vyc29yOnBvaW50ZXI7IGNvbG9yOiMwNTE0MWY7IGNvbG9yOiMwNTE0MWY7IH0gLmxhbmd1YWdlQmFyIGRpdi5kMmMtZmF2cy1uYXYtd3JhcHBlciBpLmZhciBzcGFuLmZhdi1uYXYtY291bnQgeyBwb3NpdGlvbjphYnNvbHV0ZTsgZm9udC1zaXplOjAuODEzcmVtIDsgdG9wOjdweDsgbGVmdDowOyB3aWR0aDoxMDAlOyBjb2xvcjojRkZGOyB0ZXh0LWFsaWduOmNlbnRlcjsgZm9udC13ZWlnaHQ6NjAwOyBmb250LWZhbWlseTp2YXIoLS1mb250LW1lbnUpICFpbXBvcnRhbnQ7IH0gLmxhbmd1YWdlQmFyIC5kMmMtZmF2cy1uYXYtd3JhcHBlciAuZDJjLWZhdnMtbmF2LWRyb3Bkb3duLXdyYXBwZXIgeyBkaXNwbGF5Om5vbmU7IH0gLmhlYWRlci1zb2NpYWwgZGl2Lmxhbmd1YWdlQmFyLmlzS2lhU2hpZnQgeyBtYXJnaW4tcmlnaHQ6MDsgfSAubGFuZ3VhZ2VCYXIgLmQyYy1mYXZzLW5hdi13cmFwcGVyLmlzS2lhU2hpZnQgeyBmb250LXNpemU6MC44NzVyZW07IHdpZHRoOjIwcHg7IGxlZnQ6MDsgdG9wOjVweDsgbWFyZ2luLXJpZ2h0OjEwcHg7IH0gLmxhbmd1YWdlQmFyIGRpdi5kMmMtZmF2cy1uYXYtd3JhcHBlci5pc0tpYVNoaWZ0IGkgeyBwYWRkaW5nOjA7IG1hcmdpbi1yaWdodDo4cHg7IGZvbnQtc2l6ZToxLjI1cmVtOyB9IC5sYW5ndWFnZUJhciBkaXYuZDJjLWZhdnMtbmF2LXdyYXBwZXIuZmF2LW5hdi1oYXMtdmVoaWNsZXMuaXNLaWFTaGlmdCAuZmEtbGF5ZXJzIGkuZmEsIC5sYW5ndWFnZUJhciBkaXYuZDJjLWZhdnMtbmF2LXdyYXBwZXIuZmF2LW5hdi1oYXMtdmVoaWNsZXMuaXNLaWFTaGlmdCAuZmEtbGF5ZXJzIGkuZmFyIHsgY3Vyc29yOnBvaW50ZXI7IGNvbG9yOiNGRkY7IH0gLmxhbmd1YWdlQmFyIGRpdi5kMmMtZmF2cy1uYXYtd3JhcHBlci5pc0tpYVNoaWZ0IGkuZmFyIHNwYW4uZmF2LW5hdi1jb3VudCB7IHBhZGRpbmc6MDsgZm9udC1zaXplOjAuNjc1cmVtOyB0b3A6NHB4OyBjb2xvcjojMDAwOyB9IC5sYW5ndWFnZUJhciAuZDJjLWZhdnMtbmF2LXdyYXBwZXIuaXNLaWFTaGlmdCAuZDJjLWZhdnMtbmF2LWRyb3Bkb3duLXdyYXBwZXIgeyB0b3A6MjBweDsgfQovKiogL2Nzcy9mYXZvcml0ZXMubG9hZC5jc3MgKiovCmJvZHkuaXNGdWxsV2lkdGhQYWdlIGRpdi5NYWluQm94TGF5ZXIgZGl2LkJveENoaWxkLTIgZGl2LlNsaWRlck91dGVyQm94OmhvdmVyIC5kMmMtZmF2cy10cmlnZ2VyLXdyYXBwZXIsIGJvZHkuaXNGdWxsV2lkdGhQYWdlIC5kaXZDYXJTaW5nbGVPdXRlckJveDpob3ZlciAuZGl2Q2FyU2luZ2xlSW5uZXJCb3ggLmQyYy1mYXZzLXRyaWdnZXItd3JhcHBlciwgYm9keS5pc0Z1bGxXaWR0aFBhZ2UgLmNhckJveE91dGVyOmhvdmVyIC5jYXJJbWFnZSAuZDJjLWZhdnMtdHJpZ2dlci13cmFwcGVyLCBib2R5LmlzRnVsbFdpZHRoUGFnZSAuZDJjLWZhdnMtdHJpZ2dlci13cmFwcGVyLmQyYy1mYXZzLXNlbGVjdGVkIHsgZmlsdGVyOmFscGhhKG9wYWNpdHk9MTAwKTsgb3BhY2l0eToxOyAtd2Via2l0LXRyYW5zaXRpb246b3BhY2l0eSAzNTBtcyBlYXNlLWluLW91dDsgLW1vei10cmFuc2l0aW9uOm9wYWNpdHkgMzUwbXMgZWFzZS1pbi1vdXQ7IC1tcy10cmFuc2l0aW9uOm9wYWNpdHkgMzUwbXMgZWFzZS1pbi1vdXQ7IC1vLXRyYW5zaXRpb246b3BhY2l0eSAzNTBtcyBlYXNlLWluLW91dDsgdHJhbnNpdGlvbjpvcGFjaXR5IDM1MG1zIGVhc2UtaW4tb3V0OyB9IC5sYW5ndWFnZUJhciAuZDJjLWZhdnMtbmF2LXdyYXBwZXIgLmQyYy1mYXZzLW5hdi1kcm9wZG93bi13cmFwcGVyIHsgd2lkdGg6NDAwcHg7IHBvc2l0aW9uOmFic29sdXRlOyByaWdodDowOyB0b3A6MjVweDsgei1pbmRleDo5OTk5OyBiYWNrZ3JvdW5kLWNvbG9yOiNGRkY7IGJvcmRlcjoxcHggc29saWQgI2U1ZTVlNTsgYm9yZGVyLWJvdHRvbTpub25lOyAtd2Via2l0LWJveC1zaGFkb3c6MCA2cHggMTJweCByZ2JhKDAsMCwwLDAuMTgpOyBib3gtc2hhZG93OjAgNnB4IDEycHggcmdiYSgwLCAwLCAwLCAwLjE4KTsgb3ZlcmZsb3c6aGlkZGVuOyB9IC5sYW5ndWFnZUJhciAuZDJjLWZhdnMtbmF2LXdyYXBwZXIgLmQyYy1mYXZzLW5hdi1kcm9wZG93bi13cmFwcGVyOmhvdmVyLCAubGFuZ3VhZ2VCYXIgLmQyYy1mYXZzLW5hdi13cmFwcGVyOm5vdCguZDJjLWZhdnMtbmF2LWRpc2FibGVkKTpob3ZlciAuZDJjLWZhdnMtbmF2LWRyb3Bkb3duLXdyYXBwZXIgeyBkaXNwbGF5OmJsb2NrOyB9IC5sYW5ndWFnZUJhciAuZDJjLWZhdnMtbmF2LXdyYXBwZXIgLmQyYy1mYXZzLW5hdi1kcm9wZG93bi13cmFwcGVyIC5kMmMtZmF2cy1uYXYtZHJvcGRvd24taW5uZXJCb3ggeyB3aWR0aDoxMDAlOyB9IC5sYW5ndWFnZUJhciAuZDJjLWZhdnMtbmF2LXdyYXBwZXIgLmQyYy1mYXZzLW5hdi1kcm9wZG93bi13cmFwcGVyIC5kMmMtZmF2cy1uYXYtZHJvcGRvd24taW5uZXJCb3ggYSB7IHdpZHRoOjEwMCU7IGRpc3BsYXk6YmxvY2s7IGZvbnQtc2l6ZTowLjg3NXJlbTsgfSAubGFuZ3VhZ2VCYXIgLmQyYy1mYXZzLW5hdi13cmFwcGVyIC5kMmMtZmF2cy1uYXYtZHJvcGRvd24td3JhcHBlciAuZDJjLWZhdnMtbmF2LWRyb3Bkb3duLWlubmVyQm94IGEgLmQyYy1mYXZzLW5hdi1kcm9wZG93bi1pdGVtIHsgcGFkZGluZzoxMHB4OyB3aWR0aDpjYWxjKDEwMCUgLSAyMHB4KTsgZGlzcGxheTpibG9jazsgYm9yZGVyLWJvdHRvbToxcHggc29saWQgI2U1ZTVlNTsgdGV4dC1hbGlnbjpsZWZ0OyBtaW4taGVpZ2h0OjMwcHg7IH0gLmxhbmd1YWdlQmFyIC5kMmMtZmF2cy1uYXYtd3JhcHBlciAuZDJjLWZhdnMtbmF2LWRyb3Bkb3duLXdyYXBwZXIgLmQyYy1mYXZzLW5hdi1kcm9wZG93bi1pbm5lckJveCBhIC5kMmMtZmF2cy1uYXYtZHJvcGRvd24taXRlbTpob3ZlciB7IGJhY2tncm91bmQtY29sb3I6I2YzZjNmMzsgfSAuZDJjLWZhdnMtbmF2LWRkLXdyYXBwZXIgLmQyYy1mYXZzLW5hdi1kcm9wZG93bi1pdGVtLXN1YiwgLmxhbmd1YWdlQmFyIC5kMmMtZmF2cy1uYXYtd3JhcHBlciAuZDJjLWZhdnMtbmF2LWRyb3Bkb3duLXdyYXBwZXIgLmQyYy1mYXZzLW5hdi1kcm9wZG93bi1pbm5lckJveCBhIC5kMmMtZmF2cy1uYXYtZHJvcGRvd24taXRlbS1zdWIgeyBjb2xvcjojYTFhMWExOyBmb250LXNpemU6MC43cmVtOyBmb250LXdlaWdodDoxMDA7IGRpc3BsYXk6YmxvY2s7IG1hcmdpbi10b3A6NXB4OyB0ZXh0LWFsaWduOmxlZnQ7IH0gLmQyYy1mYXZzLW5hdi1kZC13cmFwcGVyLmQyYy1mYXZzLW5hdi1kaXNhYmxlZCAubWVudUV4cGFuZCB7IGRpc3BsYXk6bm9uZTsgfSAuZDJjLWZhdnMtbmF2LWRkLXdyYXBwZXIgLmQyYy1mYXZzLW5hdi1kcm9wZG93bi1pdGVtLXN1YiB7IG1hcmdpbi10b3A6NXB4OyB9IC5sYW5ndWFnZUJhciAuZDJjLWZhdnMtbmF2LXdyYXBwZXIgLmQyYy1mYXZzLW5hdi1kcm9wZG93bi13cmFwcGVyIC5kMmMtZmF2cy1uYXYtZHJvcGRvd24taW5uZXJCb3ggYSAuZDJjLWZhdnMtbmF2LWRyb3Bkb3duLWl0ZW0gaW1nIHsgbWF4LXdpZHRoOjUwcHg7IGZsb2F0OmxlZnQ7IG1hcmdpbi1yaWdodDoxMHB4OyB9IC5sYW5ndWFnZUJhciAuZDJjLWZhdnMtbmF2LXdyYXBwZXIgLmQyYy1mYXZzLW5hdi1kcm9wZG93bi13cmFwcGVyIC5kMmMtZmF2cy1uYXYtZHJvcGRvd24taW5uZXJCb3ggYSAuZDJjLWZhdnMtbmF2LWRyb3Bkb3duLWl0ZW0gZGl2IHsgZmxvYXQ6bm9uZTsgZGlzcGxheTppbmxpbmUtYmxvY2s7IH0gLmQyYy1mYXZzLW5hdi1kZC13cmFwcGVyIC5kMmMtZmF2cy1uYXYtd3JhcHBlciBpLmZhIHsgZm9udC1zaXplOjAuODVyZW07IH0KLyoqIC9jc3MvdmVoaWNsZUZlYXR1cmVTdW1tYXJ5LnByZWxvYWQuY3NzICoqLwoudmRwRmVhdHVyZVN1bW1hcnl7IC0tc3dpdGNoLWJwOjUwcmVtOyBib3JkZXItY29sb3I6I2NjY2NjYzsgY2xlYXI6Ym90aDsgfSAudnNmaUl0ZW1TdW1tYXJ5IHsgZm9udC13ZWlnaHQ6NzAwOyBmb250LXNpemU6MS4ycmVtOyB9IC52ZHBGZWF0dXJlQ29uc3VtcHRpb257IGRpc3BsYXk6ZmxleDsgZmxleC13cmFwOndyYXA7IH0gLnZkcEZlYXR1cmVDb25zdW1wdGlvbiA+ICp7IGZsZXg6MSAxIDMxJTsgbWluLXdpZHRoOjlyZW07IH0KLyoqIC9jc3Mva2MuZmFiLmNzcyAqKi8KI2NvbnRhaW5lckZsQiB7IG1hcmdpbjowOyB3aWR0aDo2MHB4OyBoZWlnaHQ6NjBweDsgcG9zaXRpb246Zml4ZWQ7Ym90dG9tOjIwcHg7cmlnaHQ6MTBweDt9ICNjaXJjbGVGbEIgeyBwb3NpdGlvbjpyZWxhdGl2ZTsgd2lkdGg6MTAwJTsgcGFkZGluZy1ib3R0b206MTAwJTsgb3ZlcmZsb3c6aGlkZGVuOyB9ICNjaXJjbGVGbEIgdGV4dCB7IGZvbnQtZmFtaWx5OidIZWx2ZXRpY2EgTmV1ZScsIEFyaWFsOyBmb250LXNpemU6MS4yNXJlbSA7IGZvbnQtd2VpZ2h0OmJvbGQ7IH0gI2NpcmNsZUZsQiBzdmcgeyBwb3NpdGlvbjphYnNvbHV0ZTsgbGVmdDowOyB0b3A6MDsgd2lkdGg6MTAwJTsgaGVpZ2h0OjEwMCU7IC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6cm90YXRlOyAtbW96LWFuaW1hdGlvbi1uYW1lOnJvdGF0ZTsgLW1zLWFuaW1hdGlvbi1uYW1lOnJvdGF0ZTsgLW8tYW5pbWF0aW9uLW5hbWU6cm90YXRlOyBhbmltYXRpb24tbmFtZTpyb3RhdGU7IC13ZWJraXQtYW5pbWF0aW9uLWR1cmF0aW9uOjVzOyAtbW96LWFuaW1hdGlvbi1kdXJhdGlvbjo1czsgLW1zLWFuaW1hdGlvbi1kdXJhdGlvbjo1czsgLW8tYW5pbWF0aW9uLWR1cmF0aW9uOjVzOyBhbmltYXRpb24tZHVyYXRpb246NXM7IC13ZWJraXQtYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDppbmZpbml0ZTsgLW1vei1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50OmluZmluaXRlOyAtbXMtYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDppbmZpbml0ZTsgLW8tYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDppbmZpbml0ZTsgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDppbmZpbml0ZTsgLXdlYmtpdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOmxpbmVhcjsgLW1vei1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOmxpbmVhcjsgLW1zLWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246bGluZWFyOyAtby1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOmxpbmVhcjsgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjpsaW5lYXI7IH0gQC13ZWJraXQta2V5ZnJhbWVzIHJvdGF0ZSB7IGZyb20geyAtd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoMCk7IH0gdG8geyAtd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoMzYwZGVnKTsgfSB9IEAtbW96LWtleWZyYW1lcyByb3RhdGUgeyBmcm9tIHsgLW1vei10cmFuc2Zvcm06cm90YXRlKDApOyB9IHRvIHsgLW1vei10cmFuc2Zvcm06cm90YXRlKDM2MGRlZyk7IH0gfSBALW1zLWtleWZyYW1lcyByb3RhdGUgeyBmcm9tIHsgLW1zLXRyYW5zZm9ybTpyb3RhdGUoMCk7IH0gdG8geyAtbXMtdHJhbnNmb3JtOnJvdGF0ZSgzNjBkZWcpOyB9IH0gQC1vLWtleWZyYW1lcyByb3RhdGUgeyBmcm9tIHsgLW8tdHJhbnNmb3JtOnJvdGF0ZSgwKTsgfSB0byB7IC1vLXRyYW5zZm9ybTpyb3RhdGUoMzYwZGVnKTsgfSB9IEBrZXlmcmFtZXMgcm90YXRlIHsgZnJvbSB7IHRyYW5zZm9ybTpyb3RhdGUoMCk7IH0gdG8geyB0cmFuc2Zvcm06cm90YXRlKDM2MGRlZyk7IH0gfSAjc2lnbkZsQnsgY29sb3I6I2ZmZjtwb3NpdGlvbjpyZWxhdGl2ZTt0b3A6LTQ3cHg7bGVmdDoxOXB4O2ZvbnQtc2l6ZToyLjE4OHJlbSA7IHotaW5kZXg6OTk5OTk5OyB9Ci8qKiAvY3NzL3N0eWxlX3NjcmF0Y2guY3NzICoqLwouc2NyYXRjaG91dGVyYm9keSB7YmFja2dyb3VuZDojZmZmO30gLnNjcmF0Y2hib2R5IHsgYmFja2dyb3VuZDojZWVlIHVybCgvaW1hZ2VzL3NjcmF0Y2gvZ3JhaW4uZ2lmKTsgYm9yZGVyOiNkMDAgN3B4IGRvdHRlZDsgfSAuc2NyYXRjaGJvZHksIC5zY3JhdGNoYm9keTIsIC5zY3JhdGNoYnRuIHsgY29sb3I6I2ZmZmZmZjsgYmFja2dyb3VuZC1jb2xvcjojMDUxNDFmOyB9IC5zY3JhdGNoYm9keTN7IGJhY2tncm91bmQtY29sb3I6I2ZmZmZmZjsgY29sb3I6I2ZmZmZmZjsgfSAuc2NyYXRjaGltYWdlM3sgYmFja2dyb3VuZC1jb2xvcjojMDUxNDFmOyBjb2xvcjojMDAwMDAwOyBwb3NpdGlvbjpyZWxhdGl2ZTsgfSAuc2NyYXRjaGltYWdlMyBpbWd7IHdpZHRoOjEwMCU7IH0gLnNjcmF0Y2hpbWFnZTNUZXh0MXsgZm9udC1zaXplOjIuMzc1cmVtIDsgcG9zaXRpb246YWJzb2x1dGU7IGxlZnQ6MzIlOyB3aWR0aDoxODhweDsgZm9udC13ZWlnaHQ6NzAwOyB0b3A6MTUlOyB9IC5yZXZlYWwtbW9kYWwgLnNjcmF0Y2hib2R5MyAuc2NyYXRjaGltYWdlMyAuc2NyYXRjaGltYWdlM1RleHQxIHNwYW57IG1hcmdpbjowOyBwYWRkaW5nOjA7IGNvbG9yOmluaGVyaXQ7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IHZlcnRpY2FsLWFsaWduOnN1cGVyOyBmb250LXdlaWdodDpub3JtYWw7IH0gLnNjcmF0Y2hpbWFnZTNUZXh0MnsgcG9zaXRpb246YWJzb2x1dGU7IHRvcDozMiU7IHJpZ2h0OjI4JTsgd2lkdGg6OTFweDsgfSAuc2NyYXRjaGJvZHksIC5zY3JhdGNoYm9keTIgeyBtYXJnaW46NXB4OyBoZWlnaHQ6NTUwcHg7IG92ZXJmbG93OmhpZGRlbjsgfSAuc2NyYXRjaGJvZHkzIHsgbWFyZ2luOjVweDsgaGVpZ2h0OjU1MHB4OyBvdmVyZmxvdzpoaWRkZW47IH0gLnNjcmF0Y2hib2R5My5zY3JhdGNoLWZpcnN0IHsgbWFyZ2luOjVweDsgaGVpZ2h0OjQ0NXB4OyBvdmVyZmxvdzpoaWRkZW47IH0gLnNjcmF0Y2hoZWFkZXIgeyBwb3NpdGlvbjphYnNvbHV0ZTsgYm9yZGVyLWJvdHRvbTowcHg7IHRvcDo1MHB4OyBsZWZ0OjQwcHg7IHdpZHRoOjM3MHB4OyBoZWlnaHQ6NTNweDsgZGlzcGxheTpibG9jazsgZm9udC1zaXplOjEuNXJlbSA7IGZvbnQtd2VpZ2h0OmJvbGQ7IGNvbG9yOiNmZmY7IHRleHQtc2hhZG93OjFweCAxcHggcmdiYSgwLDAsMCwwLjUpOyB0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7IHBhZGRpbmctdG9wOjEycHg7IHBhZGRpbmctbGVmdDoxNXB4OyB0ZXh0LWFsaWduOmxlZnQ7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvc2NyYXRjaC9yaWJib24ucG5nKSBuby1yZXBlYXQgMCAwOyB9IC5zY3JhdGNoYm9keSAuZm9ybXRhYmxlLCAuc2NyYXRjaGJvZHkyIC5mb3JtdGFibGUgeyBwYWRkaW5nOjEwcHg7IHBhZGRpbmctdG9wOjYwcHg7IH0gLnNjcmF0Y2hib2R5Om5vdCguc2NyYXRjaC1maXJzdCkgLmZvcm10YWJsZSwgLnNjcmF0Y2hib2R5Mjpub3QoLnNjcmF0Y2gtZmlyc3QpIC5mb3JtdGFibGUgeyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL3NjcmF0Y2gvbGluZS5wbmcpIHJlcGVhdC14IGNlbnRlciBib3R0b207IH0gLnNjcmF0Y2hib2R5MyAuZm9ybXRhYmxlIHsgcGFkZGluZzoxMHB4OyBwYWRkaW5nLXRvcDowcHg7IH0gLnNjcmF0Y2hib2R5IC5mb3JtdGFibGUgdGFibGUgdGQsIC5zY3JhdGNoYm9keTIgLmZvcm10YWJsZSB0YWJsZSB0ZCwgLnNjcmF0Y2hib2R5MyAuZm9ybXRhYmxlIHRhYmxlIHRkIHsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzMzMzsgZm9udC13ZWlnaHQ6Ym9sZDsgdGV4dC1zaGFkb3c6I2ZmZiAxcHggMXB4OyB0ZXh0LWFsaWduOnJpZ2h0OyBwYWRkaW5nOjNweDsgfSAuc2NyYXRjaGJvZHkgLmZvcm10YWJsZSB0YWJsZSB0ZCBzcGFuLCAuc2NyYXRjaGJvZHkyIC5mb3JtdGFibGUgdGFibGUgdGQgc3BhbiB7IGZvbnQtd2VpZ2h0OmJvbGQ7IHRleHQtYWxpZ246Y2VudGVyOyBmb250LXNpemU6MS41cmVtIDsgbGluZS1oZWlnaHQ6bm9ybWFsOyBjb2xvcjojMDA2OyB0ZXh0LXNoYWRvdzoxcHggMXB4ICNmZmY7IHRleHQtdHJhbnNmb3JtOnVwcGVyY2FzZTsgbWFyZ2luOjAgMCAwIDA7IH0gLnNjcmF0Y2hib2R5IC5pbnB1dCwgLnNjcmF0Y2hib2R5MiAuaW5wdXQsIC5zY3JhdGNoYm9keTMgLmlucHV0IHsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjNweDsgLW1vei1ib3JkZXItcmFkaXVzOjNweDsgYm9yZGVyLXJhZGl1czozcHg7IGJhY2tncm91bmQ6I2ZmZjsgYm9yZGVyOjFweCBzb2xpZCAjMzMzOyBoZWlnaHQ6MjBweDsgd2lkdGg6MjQ1cHg7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IHBhZGRpbmc6MnB4IH0gLnNjcmF0Y2hib2R5IC5ibGFua2FyZWEsIC5zY3JhdGNoYm9keTIgLmJsYW5rYXJlYSwgLnNjcmF0Y2hib2R5MiAuYmxhbmthcmVhIHsgd2lkdGg6MTBweDsgZGlzcGxheTpibG9jazsgfSAuc2NyYXRjaGJvZHkgLmJ1dHRvblByaW50eyBiYWNrZ3JvdW5kOiMxNDJkN2MgdXJsKC9pbWFnZXMvc2NyYXRjaC9wcmludC5wbmcpIG5vLXJlcGVhdCAyNXB4IDEwcHg7IGNvbG9yOiNmZmY7IHRleHQtc2hhZG93OjFweCAxcHggcmdiYSgwLDAsMCwwLjUpOyBib3JkZXI6bm9uZTsgYm9yZGVyLWJvdHRvbToxcHggc29saWQgI2ZmZjsgcGFkZGluZzoxMHB4IDMwcHggMTBweCA2MHB4OyBmb250LXNpemU6MS4yNXJlbSA7IGZvbnQtd2VpZ2h0OmJvbGQ7IGN1cnNvcjpwb2ludGVyOyB0ZXh0LWFsaWduOmxlZnQ7IH0gLnNjcmF0Y2hib2R5MiAuYnV0dG9uUHJpbnQgeyAtd2Via2l0LWJvcmRlci1yYWRpdXM6M3B4OyAtbW96LWJvcmRlci1yYWRpdXM6M3B4OyBib3JkZXItcmFkaXVzOjNweDsgYmFja2dyb3VuZDojMTQyZDdjIHVybCgvaW1hZ2VzL3NjcmF0Y2gvcHJpbnQucG5nKSBuby1yZXBlYXQgMjVweCAxMHB4OyBjb2xvcjojZmZmOyB0ZXh0LXNoYWRvdzoxcHggMXB4IHJnYmEoMCwwLDAsMC41KTsgYm9yZGVyOm5vbmU7IGJvcmRlci1ib3R0b206MXB4IHNvbGlkICNmZmY7IHBhZGRpbmc6MTBweCAzMHB4IDEwcHggNjBweDsgZGlzcGxheTpibG9jazsgZm9udC1zaXplOjEuMjVyZW0gOyBmb250LXdlaWdodDpib2xkOyBjdXJzb3I6cG9pbnRlcjsgdGV4dC1hbGlnbjpsZWZ0OyBtYXJnaW4tdG9wOi0xMHB4OyBtYXJnaW4tbGVmdDozMjZweDsgfSAuc2NyYXRjaGJvZHkgLndTY3JhdGNoUGFkLCAuc2NyYXRjaGJvZHkyIC53U2NyYXRjaFBhZCwgLnNjcmF0Y2hib2R5MyAud1NjcmF0Y2hQYWR7IGRpc3BsYXk6aW5saW5lLWJsb2NrOyBwb3NpdGlvbjpyZWxhdGl2ZTsgdGV4dC1hbGlnbjpjZW50ZXI7IH0gLnNjcmF0Y2hib2R5IC53U2NyYXRjaFBhZCwgLnNjcmF0Y2hib2R5MiAud1NjcmF0Y2hQYWQsIC5zY3JhdGNoYm9keTMgLndTY3JhdGNoUGFkeyBtYXJnaW46MjBweCBhdXRvIDAgYXV0bzsgfSAuc2NyYXRjaGJvZHkzIC53U2NyYXRjaFBhZHsgbWFyZ2luOjEwcHggYXV0byAwIGF1dG87IH0gLnNjcmF0Y2hib2R5MyAuYnV0dG9uUHJpbnR7IHJpZ2h0Ojk1cHg7IHBvc2l0aW9uOmFic29sdXRlOyBoZWlnaHQ6MzVweDsgbWFyZ2luLXRvcDoxNXB4OyBiYWNrZ3JvdW5kLWNvbG9yOiMwNTE0MWY7IGNvbG9yOiNmZmZmZmY7IH0gLnNjcmF0Y2hib2R5MyAuYnV0dG9uUHJpbnRPdmVybGF5eyByaWdodDo5NXB4OyBwb3NpdGlvbjphYnNvbHV0ZTsgaGVpZ2h0OjM1cHg7IG1hcmdpbi10b3A6MTVweDsgYmFja2dyb3VuZC1jb2xvcjojQkJCQkJCOyBjb2xvcjp3aGl0ZTsgfSBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4tZGV2aWNlLXdpZHRoOjQ4MXB4KSBhbmQgKG1heC1kZXZpY2Utd2lkdGg6MTAyNHB4KSBhbmQgKG9yaWVudGF0aW9uOnBvcnRyYWl0KSB7IC5idXR0b25QcmludCB7IG1hcmdpbi10b3A6LTVweDsgfSB9IEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi1kZXZpY2Utd2lkdGg6NDgxcHgpIGFuZCAobWF4LWRldmljZS13aWR0aDoxMDI0cHgpIGFuZCAob3JpZW50YXRpb246bGFuZHNjYXBlKSB7IC5idXR0b25QcmludCB7IG1hcmdpbi10b3A6LTVweDsgfSB9IC5zY3JhdGNoYm9keSAudGV4dGFyZWF7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvc2NyYXRjaC9hcnJvdy5wbmcpIG5vLXJlcGVhdCByaWdodCAyMHB4OyBjb2xvcjojMTQyZDdjOyBmb250LXNpemU6MC44NzVyZW0gOyBmb250LXdlaWdodDpib2xkOyB0ZXh0LXNoYWRvdzojZmZmIDFweCAxcHg7IHRleHQtYWxpZ246Y2VudGVyOyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL3NjcmF0Y2gvYXJyb3cucG5nKSBuby1yZXBlYXQgcmlnaHQgMjBweDsgd2lkdGg6NTAwcHg7IGhlaWdodDo4MHB4OyBtYXJnaW46MCBhdXRvOyBwYWRkaW5nOjIwcHggMjBweCAwIDA7IH0gLnNjcmF0Y2hib2R5MiAudGV4dGFyZWEgeyBiYWNrZ3JvdW5kOm5vbmU7IG1hcmdpbjowcHg7IGhlaWdodDoxMDVweDsgYm9yZGVyLXJpZ2h0OjFweCBzb2xpZCAjZGRkOyBtYXJnaW4tdG9wOjIwcHg7IHBhZGRpbmctdG9wOjBweDsgd2lkdGg6NDUwcHg7IG1hcmdpbi1sZWZ0OjIwcHg7IHBhZGRpbmc6MjBweCAyMHB4IDAgMDsgY29sb3I6IzE0MmQ3YzsgZm9udC1zaXplOjAuODc1cmVtIDsgZm9udC13ZWlnaHQ6Ym9sZDsgdGV4dC1zaGFkb3c6I2ZmZiAxcHggMXB4OyB0ZXh0LWFsaWduOmNlbnRlcjsgfSAuc2NyYXRjaENvbnRhaW5lckltZ01vYmlsZXsgYmFja2dyb3VuZC1jb2xvcjojMDUxNDFmOyB9IC5zY3JhdGNoYm9keTMgLnRleHRhcmVhIHsgZm9udC1zaXplOjEuNXJlbSA7IGZvbnQtd2VpZ2h0OmJvbGQ7IHdpZHRoOjc1JTsgaGVpZ2h0OjgwcHg7IG1hcmdpbjowIGF1dG87IHBhZGRpbmc6OXB4IDIwcHggMHB4IDQwcHg7IGxpbmUtaGVpZ2h0OjI0cHg7IGZsb2F0OmxlZnQ7IGNvbG9yOiMwNTE0MWY7IH0gLnNjcmF0Y2hib2R5MyAudGV4dGFyZWEgcCBzbWFsbCB7IGZvbnQtc2l6ZTowLjkzOHJlbSA7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgY29sb3I6IzY2NjY2NjsgbGluZS1oZWlnaHQ6MTVweDsgfSAuc2NyYXRjaEFuZFNhdmVOb3RlIHsgbWFyZ2luOjAgNjBweDsgfSAuc2NyYXRjaGJvZHkgLnRleHRhcmVhIHAgc21hbGwsIC5zY3JhdGNoYm9keTIgLnRleHRhcmVhIHAgc21hbGwgeyBmb250LXNpemU6MC42ODhyZW0gOyBmb250LXdlaWdodDpub3JtYWw7IGNvbG9yOiMwNTE0MWY7IH0gI3dTY3JhdGNoUGFkIHttYXJnaW46MjBweCBhdXRvIDAgYXV0bzsgdGV4dC1hbGlnbjpjZW50ZXI7fSAuc2NyYXRjaGJvZHkgLmNvbnRlbnQtYm94LCAuc2NyYXRjaGJvZHkyIC5jb250ZW50LWJveCwgLnNjcmF0Y2hib2R5MyAuY29udGVudC1ib3h7IHRleHQtYWxpZ246Y2VudGVyOyBtYXJnaW46LTEwcHggMCAwIDA7IHBhZGRpbmc6MDsgfSAuc2NyYXRjaGJvZHkgLk1pc3NpbmdWYWxpZGF0aW9uTXNnLCAuc2NyYXRjaGJvZHkyIC5NaXNzaW5nVmFsaWRhdGlvbk1zZywgLnNjcmF0Y2hib2R5MyAuTWlzc2luZ1ZhbGlkYXRpb25Nc2d7IGxlZnQ6MzAwcHg7IHRvcDoyNDBweDsgcG9zaXRpb246YWJzb2x1dGU7IHdpZHRoOjMwMXB4OyB9IC5wcmludGFyZWEge2ZvbnQtZmFtaWx5OiJUaW1lcyBOZXcgUm9tYW4iLCBUaW1lcywgc2VyaWY7IGNvbG9yOiMwNTE0MWY7IGZvbnQtc2l6ZToxLjEyNXJlbSA7fSAuYmxvY2thZ2Uge2JhY2tncm91bmQ6dXJsKC9pbWFnZXMvc2NyYXRjaC93aGl0ZTIucG5nKSByZXBlYXQteDsgd2lkdGg6ODI2cHg7IGhlaWdodDoyNzBweDsgZGlzcGxheTpibG9jazsgei1pbmRleDozOyBwb3NpdGlvbjphYnNvbHV0ZTsgdG9wOjMxNXB4OyBsZWZ0OjUwcHg7IGJvcmRlcjpub25lOyBvdmVyZmxvdzpoaWRkZW47fSAuYmxvY2thZ2UgYSB7Ym9yZGVyOm5vbmU7Y3Vyc29yOmRlZmF1bHQ7fSBwI3Z0aXAgeyBkaXNwbGF5Om5vbmU7IHBvc2l0aW9uOmFic29sdXRlOyBwYWRkaW5nOjEwcHg7IGxlZnQ6NXB4OyBmb250LXNpemU6MC44ZW07IGJhY2tncm91bmQtY29sb3I6d2hpdGU7IGJvcmRlcjoxcHggc29saWQgI2E2YzllMjsgLW1vei1ib3JkZXItcmFkaXVzOjVweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjVweDsgei1pbmRleDo5OTk5OyB3aWR0aDozMDBweDsgY3Vyc29yOmRlZmF1bHQ7fSBwI3Z0aXAgI3Z0aXBBcnJvdyB7IHBvc2l0aW9uOmFic29sdXRlOyB0b3A6LTEwcHg7IGxlZnQ6NXB4IH0gLnByaW50YWJsZSB7IGRpc3BsYXk6bm9uZTsgfSAuc2NyYXRjaGJvZHkgLnNjcmF0Y2hEaXZUZXh0LCAuc2NyYXRjaGJvZHkyIC5zY3JhdGNoRGl2VGV4dCB7IC1tb3otYm9yZGVyLXJhZGl1cy10b3BsZWZ0OjE1cHg7IC1tb3otYm9yZGVyLXJhZGl1cy10b3ByaWdodDoxNXB4OyAtbW96LWJvcmRlci1yYWRpdXMtYm90dG9tcmlnaHQ6MTVweDsgLW1vei1ib3JkZXItcmFkaXVzLWJvdHRvbWxlZnQ6MTVweDsgLXdlYmtpdC1ib3JkZXItdG9wLWxlZnQtcmFkaXVzOjE1cHg7IC13ZWJraXQtYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6MTVweDsgLXdlYmtpdC1ib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czoxNXB4OyAtd2Via2l0LWJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6MTVweDsgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6MTVweDsgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czoxNXB4OyBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czoxNXB4OyBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjE1cHg7IH0gLnNjcmF0Y2hib2R5MyAuc2NyYXRjaERpdlRleHR7IHBvc2l0aW9uOnJlbGF0aXZlOyB3aWR0aDo2MTBweDsgaGVpZ2h0OjEyMHB4OyBjdXJzb3I6ZGVmYXVsdDsgYmFja2dyb3VuZC1jb2xvcjojMDAwMDAwOyB9IC5zY3JhdGNoYm9keTMgLnNjcmF0Y2hEaXZUZXh0T2xkeyB3aWR0aDo5NyU7dGV4dC1hbGlnbjpjZW50ZXI7Zm9udC1zaXplOjEuODc1cmVtIDtjb2xvcjojZmZmO21hcmdpbi1sZWZ0OjBweDtwYWRkaW5nLWxlZnQ6MTBweDtwYWRkaW5nLXJpZ2h0OjEwcHg7cG9zaXRpb246YWJzb2x1dGU7dG9wOjIwcHg7Y29sb3I6YmxhY2s7IH0gLnNjcmF0Y2hib2R5MiB7IGJhY2tncm91bmQtaW1hZ2U6dXJsKC9pbWFnZXMvcG9wdXBzL3N0eWxlMi9iYWNrZ3JvdW5kLnBuZyk7IGJvcmRlcjowOyB3aWR0aDo4MzBweDsgYmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0OyB9IC5zY3JhdGNoYm9keTMgeyBib3JkZXI6MDsgd2lkdGg6ODMwcHg7IGJhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDsgfSAuc2NyYXRjaGJvZHkyX3RpdGxleyBtYXJnaW4tdG9wOjM1cHg7IGZvbnQtc2l6ZToyLjVyZW0gOyBjb2xvcjp3aGl0ZTsgZm9udC1zdHlsZTppdGFsaWM7IGZvbnQtd2VpZ2h0OmJvbGQ7IGxldHRlci1zcGFjaW5nOjBweDsgbWFyZ2luOmF1dG87IHRleHQtYWxpZ246Y2VudGVyOyBwb3NpdGlvbjpyZWxhdGl2ZTsgcGFkZGluZy10b3A6MjBweDsgbWFyZ2luLWJvdHRvbTotMjBweDsgfSAuc2NyYXRjaGJvZHkyIC5zY3JhdGNoYnRueyBiYWNrZ3JvdW5kLWltYWdlOnVybCgvaW1hZ2VzL3BvcHVwcy9zdHlsZTIvc19zX2J0bi5wbmcpOyBjdXJzb3I6cG9pbnRlcjsgaGVpZ2h0OjQ0cHg7IHdpZHRoOjQ5NXB4OyBib3JkZXItcmFkaXVzOjI1cHghaW1wb3J0YW50OyB0ZXh0LXNoYWRvdzpub25lOyBmb250LXNpemU6MS42MjVyZW0gOyBmb250LXdlaWdodDpub3JtYWw7IG1hcmdpbjphdXRvOyBtYXJnaW4tdG9wOjVweDsgbGluZS1oZWlnaHQ6NDJweDsgYmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0OyBwYWRkaW5nOjAhaW1wb3J0YW50OyB9IC5zY3JhdGNoVGl0bGV7IHBvc2l0aW9uOmFic29sdXRlOyBmb250LXdlaWdodDpib2xkOyB0ZXh0LWFsaWduOmNlbnRlcjsgZm9udC1zaXplOjEuMTI1cmVtIDsgbGluZS1oZWlnaHQ6bm9ybWFsOyBjb2xvcjojMDUxNDFmOyB0ZXh0LXNoYWRvdzoxcHggMXB4ICNmZmY7IHRleHQtdHJhbnNmb3JtOnVwcGVyY2FzZTsgbWFyZ2luOjAgMCAwIDA7IGxlZnQ6MzQwcHg7IHRvcDoxMjVweDsgfSBAbWVkaWEgcHJpbnQgeyAubm9uLXByaW50YWJsZSB7IGRpc3BsYXk6bm9uZSFpbXBvcnRhbnQ7IH0gLnByaW50YWJsZSB7IGRpc3BsYXk6YmxvY2shaW1wb3J0YW50OyB9ICNzY3JhdGNoQW5kU2F2ZUNhckltYWdleyBmbG9hdDpsZWZ0OyB0b3A6MzVweCFpbXBvcnRhbnQ7IH0gLnNjcmF0Y2hEaXZUZXh0eyB3aWR0aDo0NTBweCFpbXBvcnRhbnQ7IH0gI3NjcmF0Y2hBbmRTYXZlQ2FySW1hZ2UgLnByaXh7IHRvcDowcHghaW1wb3J0YW50OyB9IC5zY3JhdGNoYm9keSB7IGhlaWdodDozNTVweDsgd2lkdGg6MTAwJTsgYm9yZGVyOm5vbmU7IH0gfSBoMy5zY3JhdGNoLWZpcnN0X190aXRsZSB7IGZvbnQtc2l6ZToxLjVyZW07IHRleHQtYWxpZ246Y2VudGVyOyB0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7IGRpc3BsYXk6bm9uZTsgfSBkaXYuZm9ybXRhYmxlIHNwYW4uaDMtYWx0IHsgbWFyZ2luOjA7IHBhZGRpbmc6MDsgfSAuc2NyYXRjaC1maXJzdF9fdGl0bGUgeyBmb250LXNpemU6MS41cmVtOyB0ZXh0LWFsaWduOmNlbnRlcjsgdGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlOyBkaXNwbGF5Om5vbmU7IH0gcC5zY3JhdGNoLWZpcnN0X19kZXNjIHsgZm9udC1zaXplOjAuOTVyZW07IGNvbG9yOiM0MTQxNDE7IHRleHQtYWxpZ246Y2VudGVyOyBkaXNwbGF5Om5vbmU7IH0gLnNjcmF0Y2gtZmlyc3QgLnNjcmF0Y2gtZmlyc3RfX3RpdGxlLCAuc2NyYXRjaC1maXJzdCAuc2NyYXRjaC1maXJzdF9fZGVzYyB7IGRpc3BsYXk6YmxvY2s7IH0gLnNjcmF0Y2hib2R5MyAuc2NyYXRjaC1maXJzdF9fdGl0bGUgeyBjb2xvcjojMTQyZDdjOyB9IC5zY3JhdGNoYm9keSAuc2NyYXRjaC1maXJzdF9fdGl0bGUsIC5zY3JhdGNoYm9keTMgLnNjcmF0Y2gtZmlyc3RfX3RpdGxlLCAuc2NyYXRjaGJvZHkyIC5zY3JhdGNoLWZpcnN0X190aXRsZSB7IGNvbG9yOiMwNTE0MWY7IH0gLnNjcmF0Y2gtZmlyc3Quc2NyYXRjaGJvZHkyIC5zY3JhdGNoYnRuIHsgZm9udC1zaXplOjEuMjVyZW07IH0gLnNjcmF0Y2gtZmlyc3QgLmZvcm10YWJsZSwgLnNjcmF0Y2gtZmlyc3QgLmNvbnRlbnQtYm94IHsgLXdlYmtpdC10cmFuc2l0aW9uOmFsbCAycyBlYXNlLW91dCAyczsgdHJhbnNpdGlvbjphbGwgMnMgZWFzZS1vdXQgMnM7IH0gLnNjcmF0Y2gtZmlyc3Q6bm90KC5zY3JhdGNoc2F2ZV9fbW9iaWxlKTpub3QoLnNjcmF0Y2hlZCkgLmZvcm10YWJsZSwgLnNjcmF0Y2gtZmlyc3Q6bm90KC5zY3JhdGNoc2F2ZV9fbW9iaWxlKS5zY3JhdGNoZWQgLmNvbnRlbnQtYm94LCAuc2NyYXRjaHNhdmVfX21vYmlsZS5zY3JhdGNoLWZpcnN0Om5vdCguc2NyYXRjaGVkKSAuc2xpZGVyLW92ZXJsYXkgeyBkaXNwbGF5Om5vbmU7IH0gLnNjcmF0Y2gtZmlyc3Q6bm90KC5zY3JhdGNoc2F2ZV9fbW9iaWxlKS5zY3JhdGNoZWQgLmZvcm10YWJsZSwgLnNjcmF0Y2gtZmlyc3Q6bm90KC5zY3JhdGNoc2F2ZV9fbW9iaWxlKTpub3QoLnNjcmF0Y2hlZCkgLmNvbnRlbnQtYm94IHsgZGlzcGxheTpibG9jazsgfSAuc2NyYXRjaC1maXJzdC5zY3JhdGNoYm9keTpub3QoLnNjcmF0Y2hlZCkgLmZvb3RlciwgLnNjcmF0Y2gtZmlyc3Quc2NyYXRjaGVkLnNjcmF0Y2hib2R5IC5mb3JtdGFibGUsIC5zY3JhdGNoLWZpcnN0LnNjcmF0Y2hlZC5zY3JhdGNoYm9keTIgLmZvcm10YWJsZSwgLnNjcmF0Y2gtZmlyc3Quc2NyYXRjaGVkLnNjcmF0Y2hib2R5MyAuZm9ybXRhYmxlIHsgbWFyZ2luLXRvcDo1MHB4OyB9IC5zY3JhdGNoLWZpcnN0LnNjcmF0Y2hib2R5Om5vdCguc2NyYXRjaGVkKSAuY29udGVudC1ib3gsIC5zY3JhdGNoLWZpcnN0LnNjcmF0Y2hib2R5Mjpub3QoLnNjcmF0Y2hlZCkgLmNvbnRlbnQtYm94LCAuc2NyYXRjaC1maXJzdC5zY3JhdGNoYm9keTIgLmZvb3RlcnsgbWFyZ2luLXRvcDoxMTVweDsgfSAuc2NyYXRjaC1maXJzdC5zY3JhdGNoYm9keTMgLmZvb3RlcnsgbWFyZ2luLXRvcDo1MHB4OyB9IC5zY3JhdGNoLWZpcnN0LnNjcmF0Y2hib2R5Mzpub3QoLnNjcmF0Y2hlZCkgLmNvbnRlbnQtYm94IHsgbWFyZ2luLXRvcDo0MHB4OyB9IC5zY3JhdGNoYm9keS5zY3JhdGNoLWZpcnN0LnNjcmF0Y2hlZCAuZm9vdGVyIC50ZXh0YXJlYSwgLnNjcmF0Y2hib2R5LnNjcmF0Y2gtZmlyc3Quc2NyYXRjaGVkIC5mb290ZXIgLmJ1dHRvblByaW50LCAuc2NyYXRjaGJvZHkyLnNjcmF0Y2gtZmlyc3Quc2NyYXRjaGVkIC5mb290ZXIsIC5zY3JhdGNoYm9keTMuc2NyYXRjaC1maXJzdC5zY3JhdGNoZWQgLmZvb3RlciB7IGRpc3BsYXk6bm9uZTsgfSAuZm9ybXRhYmxlIC5lbWFpbFNlbnRNc2cgeyBmbG9hdDp1bnNldDsgbWFyZ2luLXRvcDowLjVyZW07IH0gLmludGVydmFsLXBhcnRpY2lwYXRpb24geyBmb250LXNpemU6MS41cmVtOyBjb2xvcjpyZWQ7IHRleHQtYWxpZ246Y2VudGVyOyBtYXJnaW4tdG9wOjEzcmVtOyB9IC5zY3JhdGNoLWZpcnN0IC5pbnRlcnZhbC1wYXJ0aWNpcGF0aW9uIHsgbWFyZ2luLXRvcDo4cmVtOyB9IC53U2NyYXRjaFBhZC5zY3JhdGNoc2F2ZV9fbW9iaWxlIHsgaGVpZ2h0OjQxMHB4OyB9IGZvcm0uc2NyYXRjaHNhdmVfX21vYmlsZSB7IHRvcDotNDEwcHg7IGhlaWdodDo0MTBweDsgYmFja2dyb3VuZC1jb2xvcjp3aGl0ZTsgfSAuc2NyYXRjaHNhdmVfX21vYmlsZSAuc2NyYXRjaHNhdmVfX3RpdGxlIHsgZm9udC1zaXplOjAuODEzcmVtIDsgZm9udC13ZWlnaHQ6Ym9sZDsgY29sb3I6IzAwMDsgdGV4dC1hbGlnbjpjZW50ZXI7IGxpbmUtaGVpZ2h0Om5vcm1hbDsgdGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlOyB9IC5zY3JhdGNoc2F2ZV9fbW9iaWxlIC5zY3JhdGNoc2F2ZV9fZGVzYyB7IGRpc3BsYXk6bm9uZTsgfSAuc2NyYXRjaHNhdmVfX21vYmlsZS5zY3JhdGNoLWZpcnN0IC5zY3JhdGNoc2F2ZV9fZGVzYyB7IGRpc3BsYXk6YmxvY2s7IG1hcmdpbjo4cHggOHB4IDAgOHB4OyB0ZXh0LWFsaWduOmNlbnRlcjsgZm9udC1zaXplOjAuOHJlbTsgfSAuc2NyYXRjaHNhdmVfX21vYmlsZSAuZm9ybXRhYmxlX19jb250YWluZXIgeyBib3gtc2l6aW5nOmJvcmRlci1ib3g7IH0gLnNjcmF0Y2hzYXZlX19tb2JpbGUuc2NyYXRjaC1maXJzdCAuZm9ybXRhYmxlX19jb250YWluZXIgeyBoZWlnaHQ6MzM1cHg7IH0gLnNjcmF0Y2hzYXZlX19tb2JpbGUgLmZvcm10YWJsZSB7IHdpZHRoOjEwMCU7IH0gLnNjcmF0Y2hzYXZlX19tb2JpbGUgLmZvcm10YWJsZSB0YWJsZSB7IGZvbnQtc2l6ZTowLjgxM3JlbSA7IH0gLnNjcmF0Y2hzYXZlX19tb2JpbGUgLmZvcm10YWJsZSBpbnB1dDpub3QoLnNjcmF0Y2hidG4pIHsgd2lkdGg6MjAwcHg7IG1hcmdpbjowIDVweCA1cHggNXB4OyBib3JkZXI6MXB4IHNvbGlkIGxpZ2h0Z3JleTsgfSAuc2NyYXRjaHNhdmVfX21vYmlsZSAuZm9ybXRhYmxlIGxhYmVsIHsgbWFyZ2luOjAgNXB4IDVweCA1cHg7IH0gLnNjcmF0Y2hzYXZlX19tb2JpbGUgLnNsaWRlclNjcmF0Y2hEb25lIHsgbWFyZ2luLWxlZnQ6MDsgcGFkZGluZzowOyBmb250LXNpemU6MS4yNXJlbSA7IGNvbG9yOiNGRjAwMDA7IH0gLnNjcmF0Y2hzYXZlX19tb2JpbGUgLk1pc3NpbmdWYWxpZGF0aW9uTXNnIHsgcG9zaXRpb246YWJzb2x1dGU7IGxlZnQ6NXB4OyB0b3A6MjEwcHg7IHdpZHRoOjE2MHB4OyB9IC5zY3JhdGNoc2F2ZV9fbW9iaWxlLnNjcmF0Y2gtZmlyc3QgLnNjcmF0Y2hidG4uYnRuLWRlZmF1bHQgeyBwYWRkaW5nOjExcHggMTBweCA5cHggMTBweDsgZm9udC1zaXplOjAuNzVyZW07IHdoaXRlLXNwYWNlOnByZS1saW5lOyB9IC5zY3JhdGNoc2F2ZV9fbW9iaWxlIGRpdi5lcnJvck1zZyB7IGJhY2tncm91bmQtY29sb3I6I0ZGQkFCQTsgYmFja2dyb3VuZC1pbWFnZTp1cmwoIi9pbWFnZXMvZXJyb3IucG5nIik7IGJhY2tncm91bmQtcG9zaXRpb246MTBweCBjZW50ZXI7IGJhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDsgYm9yZGVyOjFweCBzb2xpZDsgY29sb3I6I0Q4MDAwQzsgZGlzcGxheTpub25lOyBwYWRkaW5nOjE1cHggMTBweCAxNXB4IDUwcHg7IHotaW5kZXg6OTk5OTsgfSAuc2NyYXRjaEFuZFNhdmVNb2JpbGVUZXh0V3JhcHBlcnsgcG9zaXRpb246YWJzb2x1dGU7IHdpZHRoOjE5OXB4OyBoZWlnaHQ6MTk5cHg7IGJvcmRlci1yYWRpdXM6NTAlOyB0b3A6MTUwcHg7IGxlZnQ6MTlweDsgZGlzcGxheTpmbGV4OyBhbGlnbi1pdGVtczpjZW50ZXI7IGp1c3RpZnktY29udGVudDpjZW50ZXI7IHRleHQtYWxpZ246Y2VudGVyOyBvdmVyZmxvdzpoaWRkZW47IH0gLnNjcmF0Y2hBbmRTYXZlTW9iaWxlVGV4dHsgcGFkZGluZzoxMHB4OyBmb250LXNpemU6MS4xMjVyZW0gIWltcG9ydGFudDsgY29sb3I6IzAwMCFpbXBvcnRhbnQ7IGZvbnQtd2VpZ2h0OmJvbGQhaW1wb3J0YW50OyB9Ci8qKiAvY3NzL2NyZWRpdFNjb3JlUG9wdXAuY3NzICoqLwojY3JlZGl0U2NvcmVQb3B1cENvbnRhaW5lcnsgYmFja2dyb3VuZDp3aGl0ZTsgcGFkZGluZzozMHB4IDIwcHggMzRweDsgbWF4LXdpZHRoOmNhbGMoMTAwdncgLSA0MHB4KTsgfSAjY3JlZGl0U2NvcmVQb3B1cENvbnRhaW5lciBzcGFueyBtYXJnaW46MDsgcGFkZGluZzowOyBmb250LXNpemU6MS4xMjVyZW0gOyB9ICNjcmVkaXRTY29yZVBvcHVwQ29udGFpbmVyIHNwYW4uY3JlZGl0U2NvcmVHcmVlbkNvbG9yeyBjb2xvcjojNGQ4ZjE0OyBmb250LXdlaWdodDpib2xkOyB9ICNjcmVkaXRTY29yZVBvcHVwQ29udGFpbmVyIHNwYW4uY3JlZGl0U2NvcmVCb2xkeyBmb250LXdlaWdodDpib2xkOyB9IC5jcmVkaXRTY29yZV9idG57IGNvbG9yOiNmZmZmZmY7IGJhY2tncm91bmQ6IzA1MTQxRjsgfSAuY3JlZGl0U2NvcmVJbWFnZXsgd2lkdGg6MTAwJTsgfSAjY3JlZGl0U2NvcmVQb3B1cENvbnRhaW5lciBkaXYuY3JlZGl0U2NvcmVUaXRsZUNvbnRhaW5lcnsgdGV4dC1hbGlnbjpjZW50ZXI7IH0gI2NyZWRpdFNjb3JlUG9wdXBDb250YWluZXIgZGl2LmNyZWRpdFNjb3JlVGl0bGV7IGZvbnQtc2l6ZToxLjI1cmVtIDsgfSAjY3JlZGl0U2NvcmVQb3B1cENvbnRhaW5lciBkaXYuY3JlZGl0U2NvcmVJbWFnZUNvbnRhaW5lcnsgdGV4dC1hbGlnbjpjZW50ZXI7IH0gI2NyZWRpdFNjb3JlUG9wdXBDb250YWluZXIgc3Bhbi5jcmVkaXRTY29yZVRpdGxlRnJlZXsgZm9udC1zaXplOjIuODEzcmVtIDsgdGV4dC1zaGFkb3c6MnB4IDA7IH0gI2NyZWRpdFNjb3JlUG9wdXBDb250YWluZXIgc3Bhbi5jcmVkaXRTY29yZVRpdGxlU2NvcmV7IGZvbnQtc2l6ZToxLjgxM3JlbSA7IHRleHQtc2hhZG93OjEuNHB4IDA7IH0gI2NyZWRpdFNjb3JlUG9wdXBDb250YWluZXIgaW5wdXR7IGhlaWdodDozMnB4OyBmb250LXNpemU6MC44MTNyZW0gOyB3aWR0aDoxMzVweDsgcGFkZGluZzowIDEwcHg7IG1hcmdpbi1ib3R0b206MTBweDsgYm9yZGVyOjFweCBzb2xpZCAjZWVlZWVlOyBib3gtc2l6aW5nOmNvbnRlbnQtYm94OyB9ICNjcmVkaXRTY29yZVBvcHVwQ29udGFpbmVyICNjcmVkaXRTY29yZUVtYWlseyB3aWR0aDoyOTZweDsgfSAjY3JlZGl0U2NvcmVQb3B1cENvbnRhaW5lciAjY3JlZGl0U2NvcmVBZGRyZXNzeyB3aWR0aDoyOTZweDsgfSAjY3JlZGl0U2NvcmVQb3B1cENvbnRhaW5lciAuY3JlZGl0U2NvcmVfYnRueyB3aWR0aDozMjBweDsgdGV4dC1hbGlnbjpjZW50ZXI7IGhlaWdodDo0MHB4OyBib3gtc2l6aW5nOmJvcmRlci1ib3g7IC13ZWJraXQtYXBwZWFyYW5jZTpub25lOyB9ICNjcmVkaXRTY29yZVBvcHVwQ29udGFpbmVyIGRpdi5jcmVkaXRTY29yZUV4dHJhVGV4dHsgdGV4dC1hbGlnbjpjZW50ZXI7IH0gI2NyZWRpdFNjb3JlUG9wdXBDb250YWluZXIgZGl2LmNyZWRpdFNjb3JlQ29uc2VudE1lc3NhZ2V7IGNvbG9yOiNiM2IzYjM7IGZvbnQtc2l6ZTowLjY4OHJlbSA7IHRleHQtYWxpZ246Y2VudGVyOyBtYXJnaW4tdG9wOjJweDsgfSAjY3JlZGl0U2NvcmVQb3B1cENvbnRhaW5lciAuY3JlZGl0U2NvcmVJbWFnZXsgYmFja2dyb3VuZC1jb2xvcjojMDUxNDFGOyB9IC5wYWMtY29udGFpbmVyIHsgei1pbmRleDoxMDAwMDIxOyB9Ci8qKiAvY3NzL25lYkNhbC9uZWJDYWwuY3NzICoqLwoubmViQ2FsICogeyBvdmVyZmxvdzpoaWRkZW47IHBhZGRpbmc6MDsgbWFyZ2luOjA7IGxpbmUtaGVpZ2h0OjEwMCU7IGJhY2tncm91bmQtY29sb3IgOndoaXRlOyB9IC5uZWJDYWwgLmNhbC1oZWFkZXIgLmNhbC1hcnJvdy1sZWZ0LCAubmViQ2FsIC5jYWwtaGVhZGVyIC5jYWwtYXJyb3ctcmlnaHQgeyBjdXJzb3I6cG9pbnRlcjt9IC5uZWJDYWwgLmNhbC1oZWFkZXIgLmNhbC1hcnJvdy1sZWZ0IHsgZmxvYXQ6bGVmdDsgfSAubmViQ2FsIC5jYWwtaGVhZGVyIC5jYWwtYXJyb3ctbGVmdDpiZWZvcmUgeyBjb250ZW50Oic8JzsgZm9udC13ZWlnaHQ6Ym9sZDsgY29sb3I6IzUyM2EyOTsgfSAubmViQ2FsIC5jYWwtaGVhZGVyIC5jYWwtYXJyb3ctcmlnaHQgeyBmbG9hdDpyaWdodDsgfSAubmViQ2FsIC5jYWwtaGVhZGVyIC5jYWwtYXJyb3ctcmlnaHQ6YmVmb3JlIHsgY29udGVudDonPic7IGZvbnQtd2VpZ2h0OmJvbGQ7IGNvbG9yOiM1MjNhMjk7IH0gLm5lYkNhbCAuY2FsLWhlYWRlciAuY2FsLWxhYmVsIHsgZGlzcGxheTppbmxpbmUtYmxvY2s7IG92ZXJmbG93OnZpc2libGU7IHdpZHRoOjE0NnB4OyB9IC5uZWJDYWwgLmNhbC1oZWFkZXIgLmNhbC1sYWJlbC5jYWwtY2xpY2thYmxlIHsgY3Vyc29yOnBvaW50ZXI7IH0gLm5lYkNhbCAuY2FsLWJvZHkgeyBwb3NpdGlvbjpyZWxhdGl2ZTsgfSAubmViQ2FsIC5jYWwtYm9keSAuY2FsLWlubmVyIC5jYWwtY29udGFpbmVyIHsgcG9zaXRpb246YWJzb2x1dGU7IGxlZnQ6MDsgfSAubmViQ2FsIC5jYWwtYm9keSAuY2FsLWlubmVyIC5jYWwtY29udGFpbmVyIC5jYWwtcm93IGRpdiB7IGZsb2F0OmxlZnQ7IH0gLm5lYkNhbCAuY2FsLWJvZHkgLmNhbC1pbm5lciAuY2FsLWNvbnRhaW5lci5jYWwtbW9udGguY2FsLXBpY2thYmxlIC5jYWwtcm93IGRpdiwgLm5lYkNhbCAuY2FsLWJvZHkgLmNhbC1pbm5lciAuY2FsLWNvbnRhaW5lci5jYWwteWVhci1kZWNhZGUgLmNhbC1yb3cgZGl2IHsgY3Vyc29yOnBvaW50ZXI7fSAubmViQ2FsIHsgY3Vyc29yOmRlZmF1bHQ7IHBvc2l0aW9uOmFic29sdXRlOyB6LWluZGV4OjEwMDAwMjA7IHRleHQtYWxpZ246Y2VudGVyOyB3aWR0aDoyOTBweDsgaGVpZ2h0OjIxNXB4OyBmb250LXNpemU6MC45MzhyZW0gOyBjb2xvcjojNTIzYTI5OyB9IC5uZWJDYWwuaW5saW5lIHsgcG9zaXRpb246cmVsYXRpdmU7IH0gLm5lYkNhbC5kZWZhdWx0IC5jYWwtd3JhcHBlciB7IHBhZGRpbmc6MCA0cHg7IGJvcmRlcjpzb2xpZCAxcHggI2RkZGVkOTsgLW1vei1ib3gtc2hhZG93OjBweCAwcHggNHB4IDJweCAjZDhkOGQ4Oy13ZWJraXQtYm94LXNoYWRvdzowcHggMHB4IDRweCAycHggI2Q4ZDhkODtib3gtc2hhZG93OjBweCAwcHggNHB4IDJweCAjZDhkOGQ4O30gLm5lYkNhbC5kZWZhdWx0IC5jYWwtaGVhZGVyIHsgaGVpZ2h0OjI1cHg7IH0gLm5lYkNhbC5kZWZhdWx0IC5jYWwtaGVhZGVyIC5jYWwtYXJyb3ctbGVmdCwgLm5lYkNhbC5kZWZhdWx0IC5jYWwtaGVhZGVyIC5jYWwtYXJyb3ctcmlnaHQgeyB3aWR0aDoxMnB4OyBoZWlnaHQ6MTNweDsgbWFyZ2luOjZweCA3cHg7IH0gLm5lYkNhbC5kZWZhdWx0IC5jYWwtaGVhZGVyIC5jYWwtYXJyb3ctbGVmdCB7IH0gLm5lYkNhbC5kZWZhdWx0IC5jYWwtaGVhZGVyIC5jYWwtYXJyb3ctbGVmdDpob3ZlciB7IH0gLm5lYkNhbC5kZWZhdWx0IC5jYWwtaGVhZGVyIC5jYWwtYXJyb3ctcmlnaHQgeyB9IC5uZWJDYWwuZGVmYXVsdCAuY2FsLWhlYWRlciAuY2FsLWFycm93LXJpZ2h0OmhvdmVyIHsgfSAubmViQ2FsLmRlZmF1bHQgLmNhbC1oZWFkZXIgLmNhbC1sYWJlbCB7IGxpbmUtaGVpZ2h0OjI1cHg7IGNvbG9yOiM1MjNhMjk7IHRleHQtdHJhbnNmb3JtOnVwcGVyY2FzZTsgfSAubmViQ2FsLmRlZmF1bHQgLmNhbC1oZWFkZXIgLmNhbC1sYWJlbC5jYWwtY2xpY2thYmxlIHsgY29sb3I6IzA4YTUzYzsgfSAubmViQ2FsLmRlZmF1bHQgLmNhbC1oZWFkZXIgLmNhbC1sYWJlbC5jYWwtY2xpY2thYmxlOmhvdmVyIHsgdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTsgfSAubmViQ2FsLmRlZmF1bHQgLmNhbC1ib2R5IHsgaGVpZ2h0OjE4MHB4OyB9IC5uZWJDYWwuZGVmYXVsdCAuY2FsLWJvZHkgLmNhbC1pbm5lciAuY2FsLWNvbnRhaW5lciB7IHdpZHRoOjI5MHB4OyBoZWlnaHQ6MTgwcHg7IH0gLm5lYkNhbC5kZWZhdWx0IC5jYWwtYm9keSAuY2FsLWlubmVyIC5jYWwtY29udGFpbmVyIC5jYWwtcm93IHsgd2lkdGg6MjkwcHg7IH0gLm5lYkNhbC5kZWZhdWx0IC5jYWwtYm9keSAuY2FsLWlubmVyIC5jYWwtY29udGFpbmVyLmNhbC15ZWFyLWRlY2FkZSAuY2FsLXJvdy5jYWwtb2RkIGRpdiB7IG1hcmdpbjo1cHg7IGJhY2tncm91bmQtY29sb3I6I2RlZGVkZTtib3JkZXI6MXB4IHNvbGlkICNkOWQ5ZDk7fSAubmViQ2FsLmRlZmF1bHQgLmNhbC1ib2R5IC5jYWwtaW5uZXIgLmNhbC1jb250YWluZXIuY2FsLXllYXItZGVjYWRlIC5jYWwtcm93LmNhbC1ldmVuIGRpdiB7IG1hcmdpbjo1cHg7IGJhY2tncm91bmQtY29sb3I6I2YwZjBmMDtib3JkZXI6MXB4IHNvbGlkICNlY2VjZWM7fSAubmViQ2FsLmRlZmF1bHQgLmNhbC1ib2R5IC5jYWwtaW5uZXIgLmNhbC1jb250YWluZXIgLmNhbC1yb3cgZGl2LmNhbC10b2RheSB7IHRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7IH0gLm5lYkNhbC5kZWZhdWx0IC5jYWwtYm9keSAuY2FsLWlubmVyIC5jYWwtY29udGFpbmVyIC5jYWwtcm93IGRpdi5jYWwtc2VsZWN0ZWQgeyBtYXJnaW4tbGVmdDo1cHg7IG1hcmdpbi1yaWdodDo1cHg7IGhlaWdodDoyMHB4O2ZvbnQtc2l6ZToxcmVtIDtmb250LXdlaWdodDo2MDA7IGNvbG9yOiNmZmYgIWltcG9ydGFudDt0ZXh0LXNoYWRvdzoxcHggMXB4IDBweCAjMzlhNjYzOyBiYWNrZ3JvdW5kLWNvbG9yOiM1NGJiMDA7LXdlYmtpdC1ib3JkZXItcmFkaXVzOjVweDstbW96LWJvcmRlci1yYWRpdXM6NXB4O2JvcmRlci1yYWRpdXM6NXB4O30gLm5lYkNhbC5kZWZhdWx0IC5jYWwtYm9keSAuY2FsLWlubmVyIC5jYWwtY29udGFpbmVyIC5jYWwtcm93IGRpdi5jYWwtbm9uLXNlbGVjdGFibGUsIC5uZWJDYWwuZGVmYXVsdCAuY2FsLWJvZHkgLmNhbC1pbm5lciAuY2FsLWNvbnRhaW5lciAuY2FsLXJvdyBkaXYuY2FsLW5vbi1zZWxlY3RhYmxlOmhvdmVyIHsgY29sb3I6I2JkYmRiZCAhaW1wb3J0YW50OyBjdXJzb3I6ZGVmYXVsdCAhaW1wb3J0YW50OyB9IC5uZWJDYWwuZGVmYXVsdCAuY2FsLWJvZHkgLmNhbC1pbm5lciAuY2FsLWNvbnRhaW5lci5jYWwtbW9udGggLmNhbC1yb3cuYSBkaXYgeyBjdXJzb3I6ZGVmYXVsdCAhaW1wb3J0YW50OyBjb2xvcjojMzc5YjU3ICFpbXBvcnRhbnQ7dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlOyB9IC5uZWJDYWwuZGVmYXVsdCAuY2FsLWJvZHkgLmNhbC1pbm5lciAuY2FsLWNvbnRhaW5lci5jYWwtbW9udGggLmNhbC1yb3cgeyBoZWlnaHQ6MjZweDsgfSAubmViQ2FsLmRlZmF1bHQgLmNhbC1ib2R5IC5jYWwtaW5uZXIgLmNhbC1jb250YWluZXIuY2FsLW1vbnRoIC5jYWwtcm93IGRpdiB7IG1hcmdpbi10b3A6M3B4OyB3aWR0aDo0MHB4OyB9IC5uZWJDYWwuZGVmYXVsdCAuY2FsLWJvZHkgLmNhbC1pbm5lciAuY2FsLWNvbnRhaW5lci5jYWwtbW9udGggLmNhbC1yb3cgZGl2LmNhbC1zZWxlY3RlZCB7IG1hcmdpbi10b3A6M3B4OyB3aWR0aDozMHB4OyB9IC5uZWJDYWwuZGVmYXVsdCAuY2FsLWJvZHkgLmNhbC1pbm5lciAuY2FsLWNvbnRhaW5lci5jYWwtbW9udGggLmNhbC1yb3cgZGl2LmNhbC1maXJzdCB7IHBhZGRpbmctbGVmdDoxNnB4OyB9IC5uZWJDYWwuZGVmYXVsdCAuY2FsLWJvZHkgLmNhbC1pbm5lciAuY2FsLWNvbnRhaW5lci5jYWwtbW9udGggLmNhbC1yb3cgZGl2LmNhbC1sYXN0IHsgcGFkZGluZy1yaWdodDoxNnB4OyB9IC5uZWJDYWwuZGVmYXVsdCAuY2FsLWJvZHkgLmNhbC1pbm5lciAuY2FsLWNvbnRhaW5lci5jYWwtbW9udGggLmNhbC1yb3cgZGl2LmNhbC1vdXRzaWRlIHsgY29sb3I6I2RlZGVkZTsgfSAubmViQ2FsLmRlZmF1bHQgLmNhbC1ib2R5IC5jYWwtaW5uZXIgLmNhbC1jb250YWluZXIuY2FsLW1vbnRoIC5jYWwtcm93LmNhbC1ldmVuIGRpdi5jYWwtb3V0c2lkZSB7IGNvbG9yOiNjZWNlY2U7IH0gLm5lYkNhbC5kZWZhdWx0IC5jYWwtYm9keSAuY2FsLWlubmVyIC5jYWwtY29udGFpbmVyLmNhbC1tb250aCAuY2FsLXJvdy5hIGRpdiB7IGNvbG9yOiM5YzljOWM7IH0gLm5lYkNhbC5kZWZhdWx0IC5jYWwtYm9keSAuY2FsLWlubmVyIC5jYWwtY29udGFpbmVyLmNhbC15ZWFyLWRlY2FkZSAuY2FsLXJvdyB7IGhlaWdodDo0MnB4OyB9IC5uZWJDYWwuZGVmYXVsdCAuY2FsLWJvZHkgLmNhbC1pbm5lciAuY2FsLWNvbnRhaW5lci5jYWwteWVhci1kZWNhZGUgLmNhbC1yb3cgZGl2IHsgd2lkdGg6ODBweDtsaW5lLWhlaWdodDoyN3B4OyBoZWlnaHQ6MjdweDsgfSAubmViQ2FsLmRlZmF1bHQgLmNhbC1ib2R5IC5jYWwtaW5uZXIgLmNhbC1jb250YWluZXIuY2FsLXllYXItZGVjYWRlIC5jYWwtcm93IGRpdi5jYWwtZmlyc3QgeyBtYXJnaW4tbGVmdDoxNnB4OyB9IC5uZWJDYWwuZGVmYXVsdCAuY2FsLWJvZHkgLmNhbC1pbm5lciAuY2FsLWNvbnRhaW5lci5jYWwteWVhci1kZWNhZGUgLmNhbC1yb3cgZGl2LmNhbC1sYXN0IHsgbWFyZ2luLXJpZ2h0OjE2cHg7IH0gLm5lYkNhbC5kZWZhdWx0IC5jYWwtYm9keSAuY2FsLWlubmVyIC5jYWwtY29udGFpbmVyLmNhbC15ZWFyLWRlY2FkZSAuY2FsLXJvdyBkaXYuY2FsLXNlbGVjdGVkIHsgYmFja2dyb3VuZC1jb2xvcjojNTRiYjAwO30gLm5lYkNhbC5kZWZhdWx0IC5jYWwtYm9keSAuY2FsLWlubmVyIC5jYWwtY29udGFpbmVyLmNhbC1tb250aC5jYWwtcGlja2FibGUgLmNhbC1yb3cgZGl2OmhvdmVyLCAubmViQ2FsLmRlZmF1bHQgLmNhbC1ib2R5IC5jYWwtaW5uZXIgLmNhbC1jb250YWluZXIuY2FsLXllYXItZGVjYWRlIC5jYWwtcm93IGRpdjpob3ZlciB7IGNvbG9yOiNiMmNmZTE7IH0gLm5lYkNhbC5kZWZhdWx0IC5jYWwtZm9vdGVyIHsgaGVpZ2h0OjRweDsgfQovKiogL2Nzcy9maW5hbmNlX211bHRpc3RlcC5jc3MgKiovCiNmaW5hbmNlX211bHRpc3RlcF9mb3JteyB0ZXh0LWFsaWduOmNlbnRlcjsgfSAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSAuZmluYW5jZU11bHRpc3RlcE5ld0NhbGN1bGF0b3J7IHRleHQtYWxpZ246bGVmdDsgfSAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSBoMnsgdGV4dC1hbGlnbjpjZW50ZXI7IG1hcmdpbi10b3A6MTBweDsgbWFyZ2luLWJvdHRvbToxNXB4OyB9ICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIGgzeyB0ZXh0LWFsaWduOmNlbnRlcjsgbWFyZ2luLXRvcDoxMHB4OyBtYXJnaW4tYm90dG9tOjE1cHg7IGZvbnQtc2l6ZToxLjI1cmVtIDsgfSAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybV9uZXh0X2J0biB7IHRleHQtYWxpZ246Y2VudGVyOyBtYXJnaW4tdG9wOjI1cHg7IG1hcmdpbi1ib3R0b206MTVweDsgd2lkdGg6MTAwJTsgcG9zaXRpb246YWJzb2x1dGU7IGxlZnQ6MDsgYm90dG9tOjA7IH0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm1fbmV4dF9idG4gYnV0dG9ueyBwYWRkaW5nOjE3cHggNjVweCAxNXB4IDY1cHg7IGZvbnQtc2l6ZToxLjI1cmVtIDsgZm9udC13ZWlnaHQ6NDAwOyB3aWR0aDoyODBweDsgYmFja2dyb3VuZC1jb2xvcjp3aGl0ZTsgY29sb3I6I0MwQzBDMDsgYm9yZGVyOm5vbmU7IGN1cnNvcjpwb2ludGVyOyBib3JkZXI6MXB4IHNvbGlkICNDMEMwQzA7IH0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm1fbmV4dF9idG4gYnV0dG9uLmlzVmFsaWR7IGJhY2tncm91bmQtY29sb3I6I2ZmZmZmZjsgY29sb3I6IzA1MTQxZjsgYm9yZGVyOjFweCBzb2xpZCAjMDAwMDAwOyB9ICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIGlucHV0W3R5cGU9InJhZGlvIl17IG9wYWNpdHk6MDsgd2lkdGg6MDsgaGVpZ2h0OjA7IHBvc2l0aW9uOmFic29sdXRlOyB9ICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIGxhYmVsLnJhZGlvX2xhYmVsIHsgYm94LXNpemluZzpib3JkZXItYm94OyBwYWRkaW5nOjE1cHggMTBweDsgY3Vyc29yOnBvaW50ZXI7IG9wYWNpdHk6MTsgdHJhbnNpdGlvbjphbGwgMXMgZWFzZS1pbi1vdXQ7IG1hcmdpbi1ib3R0b206NXB4OyBib3JkZXI6MXB4IHNvbGlkICNjY2NjY2M7IGJvcmRlci1ib3R0b20td2lkdGg6NXB4OyB3aWR0aDoxMDAlOyBmbG9hdDpsZWZ0OyBmb250LXNpemU6MS4xMjVyZW0gOyBtaW4taGVpZ2h0OjEwMnB4OyBiYWNrZ3JvdW5kOiNmZmZmZmY7IH0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gaW5wdXRbdHlwZT0icmFkaW8iXTpjaGVja2VkIH4gbGFiZWwucmFkaW9fbGFiZWwgeyBib3JkZXI6MXB4IHNvbGlkICMwMDA7IGJvcmRlci1ib3R0b20td2lkdGg6NXB4OyB9ICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIGxhYmVsLnJhZGlvX2xhYmVsMiB7IGJvcmRlcjoxcHggc29saWQgcmdiYSgyNTAsIDI1MCwgMjUwLCAwLjE1KTsgYm94LXNpemluZzpib3JkZXItYm94OyBwYWRkaW5nOjEwcHggNXB4IDVweCA1cHg7IGN1cnNvcjpwb2ludGVyOyBvcGFjaXR5OjE7IHRyYW5zaXRpb246YWxsIDFzIGVhc2UtaW4tb3V0OyBtYXJnaW4tYm90dG9tOjVweDsgYm9yZGVyOjFweCBzb2xpZCAjY2NjY2NjOyBib3JkZXItYm90dG9tLXdpZHRoOjVweDsgd2lkdGg6MTAwJTsgZmxvYXQ6bGVmdDsgZm9udC1zaXplOjEuMTI1cmVtIDsgbWluLWhlaWdodDo0NXB4OyBiYWNrZ3JvdW5kOiNmZmZmZmY7IH0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gaW5wdXRbdHlwZT0icmFkaW8iXTpjaGVja2VkIH4gbGFiZWwucmFkaW9fbGFiZWwyIHsgYm9yZGVyOjFweCBzb2xpZCAjMDAwOyBib3JkZXItYm90dG9tLXdpZHRoOjVweDsgfSAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSAucmFkaW9fZGl2eyB3aWR0aDo0NSU7IH0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gLnJhZGlvX2Rpdi5yZF93aWRleyB3aWR0aDo0NiU7IG1pbi1oZWlnaHQ6ODhweDsgfSAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSAucmFkaW9fZGl2Om50aC1vZi10eXBlKG9kZCl7IGZsb2F0OmxlZnQ7IH0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gLnJhZGlvX2RpdjpudGgtb2YtdHlwZShldmVuKXsgZmxvYXQ6cmlnaHQ7IH0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gaW5wdXRbdHlwZT0idGV4dCJdeyB3aWR0aDoyOTBweDsgaGVpZ2h0OjQwcHg7IHRleHQtYWxpZ246Y2VudGVyOyBmb250LXNpemU6MS4yNXJlbSA7IH0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gaW5wdXRbdHlwZT0ibnVtYmVyIl06bm90KC5wYXltZW50Q2FsY3VsYXRvckRvd25QYXltZW50KXsgZGlzcGxheTpibG9jazsgZmxvYXQ6bGVmdDsgYm9yZGVyOjFweCBzb2xpZCAjZGRkZGRkOyB3aWR0aDoxMjBweDsgYm9yZGVyLXJpZ2h0Om5vbmU7IG1hcmdpbjowIDAgMTBweDsgbGluZS1oZWlnaHQ6MzBweDsgaGVpZ2h0Ojc1cHg7IHBhZGRpbmc6MDsgdGV4dC1hbGlnbjpjZW50ZXI7IGZvbnQtc2l6ZToxLjVyZW0gOyB9ICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIC5udW1iZXItdHlwZS1sYWJlbHsgZGlzcGxheTpibG9jazsgZmxvYXQ6bGVmdDsgYm9yZGVyOjFweCBzb2xpZCAjZGRkZGRkOyB3aWR0aDoxMjBweDsgY29sb3I6IzI1MjUyNTsgaGVpZ2h0Ojc1cHg7IGxpbmUtaGVpZ2h0OjM1cHg7IGZvbnQtc2l6ZToxLjVyZW0gOyB9ICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIC5udW1iZXItdHlwZS1kaXZ7IGZsb2F0OmxlZnQ7IGxlZnQ6MTAlOyBtYXJnaW4tdG9wOjIwcHg7IHBvc2l0aW9uOnJlbGF0aXZlOyB9ICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIC5maW5hbmNlX211bHRpc3RlcF9zZWxlY3RfY29udGFpbmVyeyBtYXJnaW4tdG9wOjEwcHg7IH0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gLmZpbmFuY2VfbXVsdGlzdGVwX3NlbGVjdF9jb250YWluZXJfZGl2eyB3aWR0aDoxMDAlOyB9ICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIC5maW5hbmNlX211bHRpc3RlcF9zZWxlY3RfY29udGFpbmVyIHNlbGVjdHsgY29sb3I6IzNjMzgzNjsgYm9yZGVyOjJweCBzb2xpZCAjMDAwMDAwOyBib3JkZXItcmFkaXVzOjVweDsgcGFkZGluZzoxMHB4IDEwcHg7IGZvbnQtc2l6ZToxcmVtIDsgYmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC45KTsgYmFja2dyb3VuZC1wb3NpdGlvbjo5NSUgNTAlOyB3aWR0aDo5MHB4OyAtd2Via2l0LWFwcGVhcmFuY2U6bm9uZTsgLW1vei1hcHBlYXJhbmNlOm5vbmU7IHBhZGRpbmctcmlnaHQ6MjdweDsgfSAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSAuZmluYW5jZV9tdWx0aXN0ZXBfc2VsZWN0X2NvbnRhaW5lcl9zZWxlY3R7IHBvc2l0aW9uOnJlbGF0aXZlOyB3aWR0aDo0MCU7IG1hcmdpbjphdXRvOyB9ICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIC5maW5hbmNlX211bHRpc3RlcF9zZWxlY3RfY29udGFpbmVyX3NlbGVjdDphZnRlciB7IGNvbnRlbnQ6IiAiOyBoZWlnaHQ6MDsgd2lkdGg6MDsgYm9yZGVyLWxlZnQ6NXB4IHNvbGlkIHRyYW5zcGFyZW50OyBib3JkZXItcmlnaHQ6NXB4IHNvbGlkIHRyYW5zcGFyZW50OyBib3JkZXItdG9wOjVweCBzb2xpZCAjMDAwOyBwb3NpdGlvbjphYnNvbHV0ZTsgcmlnaHQ6MTRweDsgdG9wOjE3cHg7IHRyYW5zaXRpb246YWxsIC4zcyBsaW5lYXI7IH0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gLnN0ZXAyNHNlbGVjdHsgbWFyZ2luLXRvcDoxMHB4OyBwYWRkaW5nOjAuNXJlbTsgYmFja2dyb3VuZC1jb2xvcjp3aGl0ZTsgYm9yZGVyLXJhZGl1czowLjVyZW07IGJvcmRlcjoxcHggc29saWQgI2RkZDsgY29sb3I6IzIxMjUyOTsgZm9udC1zaXplOjAuODc1cmVtIDsgbGluZS1oZWlnaHQ6bm9ybWFsOyBmb250LXdlaWdodDo0MDA7IHdpZHRoOjEwMCU7IH0gLnBhYy1jb250YWluZXIgeyB6LWluZGV4OjEwMDAwMjE7IH0gaW5wdXQ6Oi13ZWJraXQtb3V0ZXItc3Bpbi1idXR0b24sIGlucHV0Ojotd2Via2l0LWlubmVyLXNwaW4tYnV0dG9uIHsgLXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7IG1hcmdpbjowOyB9ICNmaW5hbmNlTXVsdGlzdGVwUG9wdXBDb250YWluZXJ7IG1heC13aWR0aDpjYWxjKDEwMHZ3IC0gMjBweCk7IH0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gI211bHRpc3RlcC1tdWx0aWFkZHJlc3Mgc2VsZWN0IHsgbWF4LXdpZHRoOjI4MHB4OyBtYXJnaW46MCBhdXRvOyB9ICNmaW5hbmNlX211bHRpc3RlcF9mb3JtICNtdWx0aXN0ZXAtbXVsdGlhZGRyZXNzIGxhYmVsIHsgdGV4dC1hbGlnbjpjZW50ZXI7IG1hcmdpbi10b3A6MjVweDsgbWFyZ2luLWJvdHRvbToyNXB4OyBmb250LXNpemU6MS41cmVtIDsgZGlzcGxheTpibG9jazsgfSAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSAjbXVsdGlzdGVwLW11bHRpYWRkcmVzcyAjbXV0bGlBZGRyZXNzU3VibWl0IHsgZGlzcGxheTpub25lOyB9ICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIC5maW5hbmNlX211bHRpc3RlcF9iaXJ0aGRhdGVfaW5wdXRzeyBkaXNwbGF5OmlubGluZS1mbGV4OyB9ICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIC5maW5hbmNlX211bHRpc3RlcF9iaXJ0aGRhdGVfaW5wdXRfZGl2eyBtYXJnaW46MjBweCA1cHggMjBweCA1cHg7IH0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gLmZpbmFuY2VfbXVsdGlzdGVwX2JpcnRoZGF0ZV9pbnB1dF9kaXYgbGFiZWx7IGZvbnQtc2l6ZToxLjEyNXJlbSA7IH0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gLmZpbmFuY2VfbXVsdGlzdGVwX2JpcnRoZGF0ZV9pbnB1dF9kaXYgaW5wdXRbdHlwZT0ibnVtYmVyIl17IHdpZHRoOjgwcHg7IGhlaWdodDo1MHB4OyBkaXNwbGF5OmJsb2NrOyBmbG9hdDpub25lOyB9ICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIC5maW5hbmNlX211bHRpc3RlcF9iaXJ0aGRhdGVfaW5wdXRfZGl2IGlucHV0W3R5cGU9Im51bWJlciJdLmJpcnRoeWVhcnsgd2lkdGg6MTAwcHg7IH0gLnJldmVhbC1tb2RhbC5maW5hbmNlX2JhY2tncm91bmRfaW1hZ2V7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL3BvcHVwcy9maW5hbmNlcG9wdXAtYmctbW9iaWxlLndlYnAnKTsgfSAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSAuZmluYW5jZUljb25EaXZ7IHBvc2l0aW9uOnJlbGF0aXZlOyBoZWlnaHQ6MTM1cHg7IG1hcmdpbi1ib3R0b206MTBweDsgfSAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSAuZmluYW5jZUljb25EaXYgLmZpbmFuY2VDYWxjeyBjb2xvcjojNGViYTU5OyBmb250LXNpemU6MTAwcHg7IGxlZnQ6MzUlOyBwb3NpdGlvbjphYnNvbHV0ZTsgfSAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSAuZmluYW5jZUljb25EaXYgLmZpbmFuY2VDYXJ7IGNvbG9yOiMwMDAwMDA7IGZvbnQtc2l6ZToxMDBweDsgbGVmdDozMyU7IHBvc2l0aW9uOmFic29sdXRlOyB0b3A6NTBweDsgfSAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSAuZW1wbG95bWVudFRleHRMYWJlbHsgd2lkdGg6NDUlOyB9ICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIC5lbXBsb3ltZW50VGV4dExhYmVsMnsgbWFyZ2luLXJpZ2h0OjI1cHg7IH0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gLmVtcGxveW1lbnRUZXh0eyB3aWR0aDo2MCUhaW1wb3J0YW50OyBmb250LXNpemU6MS4xMjVyZW0gIWltcG9ydGFudDsgYm9yZGVyOjFweCBzb2xpZCAjY2NjY2NjOyBoZWlnaHQ6MjVweDsgbWFyZ2luLWJvdHRvbTo1cHg7IH0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gaW5wdXRbdHlwZT0ibnVtYmVyIl0uZW1wbG95bWVudFN0YXR1c1RpbWV7IHdpZHRoOjUwcHg7IGhlaWdodDo1MHB4OyBib3JkZXI6MXB4IHNvbGlkICNhOWE5YTk7IGJvcmRlci1yYWRpdXM6NXB4OyBhbGlnbi1zZWxmOmNlbnRlcjsgfSAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSAuZW1wbG95bWVudEFkZGVkSW5mb3sgd2lkdGg6OTUlOyBoZWlnaHQ6NTBweDsgcmVzaXplOm5vbmU7IG1hcmdpbi10b3A6MTBweDsgbWFyZ2luLWJvdHRvbToxMHB4OyBib3JkZXI6MXB4IHNvbGlkICNjY2NjY2M7IGZvbnQtc2l6ZTowLjkzOHJlbSAhaW1wb3J0YW50OyB9IC5mYWRlLWVudGVyLCAuZmFkZS1sZWF2ZSB7IG9wYWNpdHk6MDsgfSAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSAuZmluYW5jZU11bHRpc3RlcFVzZWRDYWxjdWxhdG9yIC5jYWxjLWZvcm17IHdpZHRoOjEwMCU7IHRleHQtYWxpZ246Y2VudGVyOyB9ICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIC5maW5hbmNlTXVsdGlzdGVwVXNlZENhbGN1bGF0b3IgLmNhbGMtZm9ybSBsYWJlbHsgbWFyZ2luLWJvdHRvbToxNXB4OyBwYWRkaW5nOjA7IGRpc3BsYXk6ZmxleDsgYWxpZ24taXRlbXM6Y2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjsgcG9zaXRpb246cmVsYXRpdmU7IH0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gLmZpbmFuY2VNdWx0aXN0ZXBVc2VkQ2FsY3VsYXRvciAuY2FsYy1mb3JtIGxhYmVsLnBheW1lbnRWYWx1ZUxhYmVseyBqdXN0aWZ5LWNvbnRlbnQ6dW5zZXQ7IH0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gLmZpbmFuY2VNdWx0aXN0ZXBVc2VkQ2FsY3VsYXRvciBzcGFueyBmb250LXNpemU6MWVtOyB3aWR0aDo1MCU7IHRleHQtYWxpZ246bGVmdDsgfSAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSAuZmluYW5jZU11bHRpc3RlcFVzZWRDYWxjdWxhdG9yIGlucHV0eyB0ZXh0LWFsaWduOmxlZnQ7IGhlaWdodDoyNXB4OyBmb250LXNpemU6MWVtOyBjb2xvcjpibGFjazsgfSAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSAuZmluYW5jZU11bHRpc3RlcFVzZWRDYWxjdWxhdG9yIHNlbGVjdHsgaGVpZ2h0OjI4cHg7IGNvbG9yOmJsYWNrOyBmb250LXNpemU6MWVtOyB9ICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIC5maW5hbmNlTXVsdGlzdGVwVXNlZENhbGN1bGF0b3IgLmVzdGltYXRlZFRleHR7IGZvbnQtd2VpZ2h0OjcwMDsgd2lkdGg6NzAlOyB9ICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIC5maW5hbmNlTXVsdGlzdGVwVXNlZENhbGN1bGF0b3IgLm91dHB1dHByaWNlLXR4dHsgd2lkdGg6MzUlOyBtYXJnaW4tbGVmdDozMHB4OyB9ICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIC5maW5hbmNlTXVsdGlzdGVwVXNlZENhbGN1bGF0b3IgLnRheGVUZXh0eyBwb3NpdGlvbjphYnNvbHV0ZTsgbGVmdDowOyBib3R0b206LTEwcHg7IHdpZHRoOmZpdC1jb250ZW50OyB9ICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIC5maW5hbmNlTXVsdGlzdGVwVXNlZENhbGN1bGF0b3IgLmlucHV0IHsgYm9yZGVyOjFweCBzb2xpZCAjOTk5OyBiYWNrZ3JvdW5kOiNlZWU7IHBhZGRpbmc6MC4yNXJlbTsgYm9yZGVyLXJhZGl1czowLjI1cmVtOyB3aWR0aDptaW4oNTAlLDZyZW0pOyB9ICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIC5maW5hbmNlTXVsdGlzdGVwVXNlZENhbGN1bGF0b3IgLmNhbGMtZm9ybSBkaXYuZG9sbGFyU3BhbnsgZGlzcGxheTpjb250ZW50czsgfSAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSAuZmluYW5jZU11bHRpc3RlcFVzZWRDYWxjdWxhdG9yIGRpdi5kb2xsYXJTcGFuIC5pbnB1dHsgcGFkZGluZy1sZWZ0OjEycHg7IH0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gLmZpbmFuY2VNdWx0aXN0ZXBVc2VkQ2FsY3VsYXRvciAuY2FsYy1mb3JtIGRpdi5kb2xsYXJTcGFuOjpiZWZvcmV7IGNvbnRlbnQ6IiQiOyBmb250LXNpemU6MWVtOyBwb3NpdGlvbjphYnNvbHV0ZTsgcmlnaHQ6ODVweDsgdG9wOjQ5JTsgdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTQzJSk7IH0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gLmZpbmFuY2VfbXVsdGlzdGVwX2NvbnNlbnRfdGV4dF9kaXZ7IG92ZXJmbG93LXk6c2Nyb2xsOyBoZWlnaHQ6NDQwcHg7IHdpZHRoOjEwMCU7IH0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gLm11bHRpc3RlcFBheW1lbnRWZWhpY2xleyBmb250LXNpemU6aW5oZXJpdDsgfSAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSAucGF5bWVudENhbGN1bGF0b3JQYXltZW50V3JhcHBlcnsgbWF4LWhlaWdodDoxNzVweDsgfSAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSAucGF5bWVudENhbGN1bGF0b3JQYXltZW50Q29udGFpbmVyeyBoZWlnaHQ6Mjc1cHg7IH0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gLmZpbmFuY2VNdWx0aXN0ZXBVc2VkQ2FsY3VsYXRvciAuY2FsYy1mb3JtIC5sb2FuYW1vdW50LCAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSAuZmluYW5jZU11bHRpc3RlcFVzZWRDYWxjdWxhdG9yIC5jYWxjLWZvcm0gLmludGVyZXN0cmF0ZXsgYm9yZGVyOjA7IGJhY2tncm91bmQtY29sb3I6dW5zZXQ7IH0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gLmZpbmFuY2VNdWx0aXN0ZXBVc2VkQ2FsY3VsYXRvciAuY2FsYy1mb3JtIGlucHV0LCAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSAuZmluYW5jZU11bHRpc3RlcFVzZWRDYWxjdWxhdG9yIC5jYWxjLWZvcm0gc2VsZWN0eyBiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7IGJvcmRlci1yYWRpdXM6MC4zcmVtOyB9ICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIC5tdWx0aXN0ZXBJbml0aWFsVGl0bGV7IGZvbnQtd2VpZ2h0OmJvbGQ7IG1hcmdpbi10b3A6MDsgfSAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSBzcGFuLmgyLWFsdHsgdGV4dC1hbGlnbjpjZW50ZXI7IG1hcmdpbi1ib3R0b206MTVweDsgZm9udC1zaXplOmluaGVyaXQ7IGRpc3BsYXk6YmxvY2s7IGNvbG9yOnZhcigtLWRlZmF1bHQtYmxhY2spOyBtYXJnaW4tbGVmdDowOyB9ICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIHNwYW4uaDMtYWx0eyB0ZXh0LWFsaWduOmNlbnRlcjsgbWFyZ2luLXRvcDoxMHB4OyBtYXJnaW4tYm90dG9tOjE1cHg7IGZvbnQtc2l6ZToxLjI1cmVtIDsgZGlzcGxheTpibG9jazsgZm9udC1mYW1pbHk6dmFyKC0tZm9udC1oMi1tb2IpOyB9ICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIC5oaWRkZW5JbnB1dHsgZGlzcGxheTpub25lOyB9IC5maW5hbmNlTXVsdGlzdGVwTmV3Q2FsY3VsYXRvciAucGF5bWVudENhbGN1bGF0b3JJbmNsdWRlVGF4Q2hlY2tEaXZ7IHBvc2l0aW9uOmFic29sdXRlOyBtYXJnaW4tdG9wOjEwcHg7IHJpZ2h0OjBweDsgfSAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSAuZmluYW5jZU11bHRpc3RlcE5ld0NhbGN1bGF0b3IgLnBheW1lbnRDYWxjdWxhdG9yVHJhZGVJbkluaXRpYWx7IGZvbnQtc2l6ZTowLjYyNXJlbSA7IGJvcmRlcjoxcHggc29saWQgI2E5YTlhOTsgaGVpZ2h0OjM1cHg7IGJvcmRlci1yYWRpdXM6NXB4OyBiYWNrZ3JvdW5kLWNvbG9yOndoaXRlOyB3aWR0aDoxMDVweDsgdGV4dC1hbGlnbjpjZW50ZXI7IHRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7IHBhZGRpbmc6NHB4IDJweCA1cHg7IH0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gLmZpbmFuY2VNdWx0aXN0ZXBOZXdDYWxjdWxhdG9yIC5wYXltZW50Q2FsY3VsYXRvclRyYWRlSW5GaW5hbHsgYm9yZGVyOjFweCBzb2xpZCAjYTlhOWE5OyBoZWlnaHQ6MzVweDsgYm9yZGVyLXJhZGl1czo1cHg7IGJhY2tncm91bmQtY29sb3I6d2hpdGU7IHdpZHRoOjEwNXB4IWltcG9ydGFudDsgdGV4dC1hbGlnbjpjZW50ZXI7IHBhZGRpbmc6NXB4IDJweDsgYmFja2dyb3VuZC1pbWFnZTp1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbDt1dGY4LDxzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB2ZXJzaW9uPScxLjEnIGhlaWdodD0nMjhweCcgd2lkdGg9Jzg1cHgnPjx0ZXh0IHg9JzYnIHk9JzIxJyBmaWxsPScnIGZvbnQtc2l6ZT0nMTYnIGZvbnQtZmFtaWx5PSdhcmlhbCc+JCIpOyBiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7IH0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gLmZpbmFuY2VNdWx0aXN0ZXBVc2VkQ2FsY3VsYXRvciAucGF5bWVudENhbGN1bGF0b3JUcmFkZUluSW5pdGlhbHsgZm9udC1zaXplOjAuNjI1cmVtIDsgYm9yZGVyOjFweCBzb2xpZCAjYTlhOWE5OyBoZWlnaHQ6MzVweDsgYm9yZGVyLXJhZGl1czo1cHg7IGJhY2tncm91bmQtY29sb3I6d2hpdGU7IHdpZHRoOjk2cHg7IHRleHQtYWxpZ246Y2VudGVyOyB0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lOyBwYWRkaW5nOjVweCAycHg7IH0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gLmZpbmFuY2VNdWx0aXN0ZXBVc2VkQ2FsY3VsYXRvciAucGF5bWVudENhbGN1bGF0b3JUcmFkZUluRmluYWx7IGJvcmRlcjoxcHggc29saWQgI2E5YTlhOTsgaGVpZ2h0OjM1cHg7IGJvcmRlci1yYWRpdXM6NXB4OyBiYWNrZ3JvdW5kLWNvbG9yOndoaXRlOyB3aWR0aDo5NnB4IWltcG9ydGFudDsgdGV4dC1hbGlnbjpjZW50ZXI7IHBhZGRpbmc6NXB4IDJweDsgYmFja2dyb3VuZC1pbWFnZTp1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbDt1dGY4LDxzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB2ZXJzaW9uPScxLjEnIGhlaWdodD0nMjhweCcgd2lkdGg9Jzg1cHgnPjx0ZXh0IHg9JzYnIHk9JzIxJyBmaWxsPScnIGZvbnQtc2l6ZT0nMTYnIGZvbnQtZmFtaWx5PSdhcmlhbCc+JCIpOyBiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7IH0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gLmZvcm1hdC1wcmljZXsgbWFyZ2luLWJvdHRvbTp1bnNldDsgbWFyZ2luLWxlZnQ6MC43cmVtOyB9IDppcyguRU5HTElTSCxbZGF0YS1sYW5nPSJlbiJdKSBsYWJlbCAuZm9ybWF0LXByaWNleyBtYXJnaW4tcmlnaHQ6MC4zcmVtOyB9ICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIC52d0NvbnNlbnRUZXh0eyBoZWlnaHQ6MTIwcHg7IG92ZXJmbG93LXk6c2Nyb2xsOyBiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7IHBhZGRpbmc6MTBweCAxMHB4OyBsaW5lLWhlaWdodDoxLjUgIWltcG9ydGFudDsgfSAudndDb25zZW50VGV4dCBoMXsgZm9udC1zaXplOjEuMjVyZW0gIWltcG9ydGFudDsgZm9udC13ZWlnaHQ6NzAwICFpbXBvcnRhbnQ7IG1hcmdpbjowIDAgMTZweCAwICFpbXBvcnRhbnQ7IH0gLnZ3Q29uc2VudFRleHQgaDJ7IGZvbnQtc2l6ZToxcmVtICFpbXBvcnRhbnQ7IGZvbnQtd2VpZ2h0OjcwMCAhaW1wb3J0YW50OyBtYXJnaW46MjRweCAwIDEwcHggMCAhaW1wb3J0YW50OyB9IC52d0NvbnNlbnRUZXh0IHB7IGZvbnQtc2l6ZTowLjg3NXJlbSAhaW1wb3J0YW50OyBmb250LXdlaWdodDo0MDAgIWltcG9ydGFudDsgbGluZS1oZWlnaHQ6MS41ICFpbXBvcnRhbnQ7IG1hcmdpbjowIDAgMTJweCAwICFpbXBvcnRhbnQ7IHRleHQtYWxpZ246anVzdGlmeSAhaW1wb3J0YW50OyB9IC52d0NvbnNlbnRUZXh0IHVseyBtYXJnaW46OHB4IDAgMTZweCAyNHB4ICFpbXBvcnRhbnQ7IHBhZGRpbmc6MCAhaW1wb3J0YW50OyB9IC52d0NvbnNlbnRUZXh0IGxpeyBmb250LXNpemU6MC44NzVyZW0gIWltcG9ydGFudDsgZm9udC13ZWlnaHQ6NDAwICFpbXBvcnRhbnQ7IGxpbmUtaGVpZ2h0OjEuNSAhaW1wb3J0YW50OyBtYXJnaW46MCAwIDEycHggMCAhaW1wb3J0YW50OyB0ZXh0LWFsaWduOmp1c3RpZnkgIWltcG9ydGFudDsgfSAudndDb25zZW50VGV4dCBzdHJvbmd7IGZvbnQtd2VpZ2h0OjcwMCAhaW1wb3J0YW50OyB9IC52d0NvbnNlbnRUZXh0IGF7IHRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmUgIWltcG9ydGFudDsgfSAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSAudndDb25zZW50RGl2c3sgbWFyZ2luLXRvcDoxMHB4OyBmb250LXNpemU6MC43NXJlbSA7IHRleHQtYWxpZ246bGVmdDsgfSAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSAucmVudE9yT3duUXVlc3Rpb257IGZsb2F0OmxlZnQ7IHRleHQtYWxpZ246Y2VudGVyOyBtYXJnaW4tdG9wOjIwcHg7IH0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gLnJlbnRPck93blF1ZXN0aW9uLnZ3UmVudE9yT3dueyBmbG9hdDpsZWZ0OyB0ZXh0LWFsaWduOmNlbnRlcjsgbWFyZ2luLXRvcDo1cHg7IH0gLmRyVmlld0Rpc2NsYWltZXJMaW5rIHsgdGV4dC1hbGlnbjpsZWZ0OyBmb250LXNpemU6MC43NXJlbSA7IHRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7IH0gLmRyRGlzY2xhaW1lckRyYXdlciB7IHBvc2l0aW9uOmZpeGVkOyBsZWZ0OjA7IGJvdHRvbTotMzAwcHg7IHdpZHRoOjEwMCU7IGhlaWdodDoyMDBweDsgYmFja2dyb3VuZDojZmZmOyBib3gtc2hhZG93OjAgLTJweCAxMHB4IHJnYmEoMCwwLDAsMC4zKTsgdHJhbnNpdGlvbjpib3R0b20gMC4zcyBlYXNlOyBkaXNwbGF5Om5vbmU7IG92ZXJmbG93OmF1dG87IH0gLmRyRGlzY2xhaW1lckRyYXdlci5vcGVuIHsgYm90dG9tOjA7IH0gLmRyRGlzY2xhaW1lckRyYXdlci5vcGVuIC5kckRpc2NsYWltZXJDb250ZW50IHsgcGFkZGluZzoyMHB4OyBvdmVyZmxvdy15OmF1dG87IH0gLmRyRGlzY2xhaW1lckRyYXdlci5vcGVuIC5jbG9zZURSRGlzY2xhaW1lckRyYXdlciwgLmRyRGlzY2xhaW1lckRyYXdlci5vcGVuIC5jbG9zZURSQ2FsY3VsYXRvckRpc2NsYWltZXJEcmF3ZXIgeyBwYWRkaW5nOjEwcHg7IGN1cnNvcjpwb2ludGVyOyB9Ci8qKiAvY3NzL2NyZWRpdFNjb3JlQ29uZmlybVBvcHVwLmNzcyAqKi8KI2NyZWRpdFNjb3JlQ29uZmlybVBvcHVwQ29udGFpbmVyeyBiYWNrZ3JvdW5kOndoaXRlOyBwYWRkaW5nOjMwcHggMjBweCAzNHB4OyB9ICNjcmVkaXRTY29yZUNvbmZpcm1Qb3B1cENvbnRhaW5lciBzcGFueyBtYXJnaW46MDsgcGFkZGluZzowOyBmb250LXNpemU6MS4xMjVyZW0gOyB9ICNjcmVkaXRTY29yZUNvbmZpcm1Qb3B1cENvbnRhaW5lciBzcGFuLmNyZWRpdFNjb3JlR3JlZW5Db2xvcnsgY29sb3I6IzRkOGYxNDsgZm9udC13ZWlnaHQ6Ym9sZDsgfSAjY3JlZGl0U2NvcmVDb25maXJtUG9wdXBDb250YWluZXIgc3Bhbi5jcmVkaXRTY29yZUJvbGR7IGZvbnQtd2VpZ2h0OmJvbGQ7IH0gI2NyZWRpdFNjb3JlQ29uZmlybV9idG57IGNvbG9yOndoaXRlOyBiYWNrZ3JvdW5kOiM0ZDhmMTQ7IH0gI2NyZWRpdFNjb3JlQ29uZmlybVBvcHVwQ29udGFpbmVyIGRpdi5jcmVkaXRTY29yZVRpdGxlQ29udGFpbmVyeyB0ZXh0LWFsaWduOmNlbnRlcjsgfSAjY3JlZGl0U2NvcmVDb25maXJtUG9wdXBDb250YWluZXIgZGl2LmNyZWRpdFNjb3JlVGl0bGV7IGZvbnQtc2l6ZToxcmVtIDsgbWFyZ2luLWJvdHRvbToxMHB4OyBmb250LXdlaWdodDo3MDA7IH0gI2NyZWRpdFNjb3JlQ29uZmlybVBvcHVwQ29udGFpbmVyIHNwYW4uY3JlZGl0U2NvcmVUaXRsZUZyZWV7IGZvbnQtc2l6ZToyLjVyZW0gOyB0ZXh0LXNoYWRvdzoycHggMDsgfSAjY3JlZGl0U2NvcmVDb25maXJtUG9wdXBDb250YWluZXIgc3Bhbi5jcmVkaXRTY29yZVRpdGxlU2NvcmV7IGZvbnQtc2l6ZToxLjU2M3JlbSA7IHRleHQtc2hhZG93OjEuNHB4IDA7IH0gI2NyZWRpdFNjb3JlQ29uZmlybVBvcHVwQ29udGFpbmVyIGRpdi5jcmVkaXRTY29yZUlucHV0Q29uZmlybXsgbWFyZ2luLXRvcDoyNXB4OyB9ICNjcmVkaXRTY29yZUNvbmZpcm1Qb3B1cENvbnRhaW5lciBkaXYuY3JlZGl0U2NvcmVDb25maXJtSW5wdXQgaW5wdXR7IGhlaWdodDozMnB4OyBmb250LXNpemU6MC44MTNyZW0gOyB3aWR0aDoyMjBweDsgcGFkZGluZzowIDEwcHg7IG1hcmdpbi1ib3R0b206MTBweDsgYm9yZGVyOjFweCBzb2xpZCAjZWVlZWVlOyBib3gtc2l6aW5nOmNvbnRlbnQtYm94OyBkaXNwbGF5OmJsb2NrOyBtYXJnaW4tbGVmdDphdXRvOyBtYXJnaW4tcmlnaHQ6YXV0bzsgfSAjY3JlZGl0U2NvcmVDb25maXJtUG9wdXBDb250YWluZXIgI2NyZWRpdFNjb3JlQWRkcmVzc3sgd2lkdGg6MjIwcHg7IH0gI2NyZWRpdFNjb3JlQ29uZmlybVBvcHVwQ29udGFpbmVyIC5jcmVkaXRTY29yZUNvbmZpcm1fYnRueyB3aWR0aDoyNDBweDsgdGV4dC1hbGlnbjpjZW50ZXI7IGhlaWdodDo0MHB4OyBib3gtc2l6aW5nOmJvcmRlci1ib3g7IC13ZWJraXQtYXBwZWFyYW5jZTpub25lOyB9ICNjcmVkaXRTY29yZUNvbmZpcm1Qb3B1cENvbnRhaW5lciBkaXYuY3JlZGl0U2NvcmVFeHRyYVRleHR7IHRleHQtYWxpZ246Y2VudGVyOyB9ICNjcmVkaXRTY29yZUNvbmZpcm1Qb3B1cENvbnRhaW5lciBkaXYuY3JlZGl0U2NvcmVDb25zZW50TWVzc2FnZXsgY29sb3I6I2IzYjNiMzsgZm9udC1zaXplOjAuNjg4cmVtIDsgdGV4dC1hbGlnbjpjZW50ZXI7IG1hcmdpbi10b3A6MnB4OyB9ICNjcmVkaXRTY29yZUNvbmZpcm1Qb3B1cENvbnRhaW5lciBkaXYuY3JlZGl0U2NvcmVDb25maXJtUG9wdXBNZXNzYWdleyB0ZXh0LWFsaWduOmNlbnRlcjsgYm9yZGVyLWJvdHRvbToxcHggc29saWQgYmxhY2s7IG1hcmdpbi1ib3R0b206MTBweDsgcGFkZGluZy1ib3R0b206MjBweDsgbWFyZ2luLWxlZnQ6YXV0bzsgbWFyZ2luLXJpZ2h0OmF1dG87IHdpZHRoOjI4NXB4OyB9ICNjcmVkaXRTY29yZUNvbmZpcm1Qb3B1cENvbnRhaW5lciBkaXYuY3JlZGl0U2NvcmVDb25maXJtUG9wdXBNZXNzYWdlIGRpdi5jcmVkaXRTY29yZUNvbmZpcm1Qb3B1cE1lc3NhZ2VUaXRsZXsgZm9udC1zaXplOjEuNXJlbSA7IG1hcmdpbi1ib3R0b206MTBweDsgfSAjY3JlZGl0U2NvcmVDb25maXJtUG9wdXBDb250YWluZXIgZGl2LmNyZWRpdFNjb3JlQ29uZmlybVBvcHVwTWVzc2FnZSBkaXYuY3JlZGl0U2NvcmVDb25maXJtUG9wdXBNZXNzYWdlVGV4dHsgZm9udC1zaXplOjAuODc1cmVtIDsgfSAucGFjLWNvbnRhaW5lciB7IHotaW5kZXg6MTAwMDAyMTsgfQovKiogL2Nzcy9jb250YWN0UG9wdXAuY3NzICoqLwojY29udGFjdHBvcHVwIHsgd2lkdGg6NTk4cHg7IG1pbi13aWR0aDoyMzBweDsgfSAjY29udGFjdHBvcHVwLm1vYmlsZSB7IHdpZHRoOjEwMCU7IH0gLmNvbnRhY3Rwb3B1cC5tb2JpbGUgdGFibGUuanFUcmFuc2Zvcm1UZXh0YXJlYSwgLmNvbnRhY3Rwb3B1cC5tb2JpbGUgdGFibGUuanFUcmFuc2Zvcm1UZXh0YXJlYSB0ZXh0YXJlYS5qcXRyYW5zZm9ybWRvbmUgeyB3aWR0aDoxMDAlOyB9IC5jb250YWN0cG9wdXAubW9iaWxlIHRhYmxlLmpxVHJhbnNmb3JtVGV4dGFyZWEgdGQuanFUcmFuc2Zvcm1UZXh0YXJlYS1tbCwgLmNvbnRhY3Rwb3B1cC5tb2JpbGUgdGFibGUuanFUcmFuc2Zvcm1UZXh0YXJlYSB0ZC5qcVRyYW5zZm9ybVRleHRhcmVhLW1yIHsgZGlzcGxheTpub25lOyB9ICNjb250YWN0cG9wdXAgKiB7IGJveC1zaXppbmc6Ym9yZGVyLWJveDsgfSAjY29udGFjdHBvcHVwLnJldmVhbC1tb2RhbCB7IHBhZGRpbmc6MDsgfSAjY29udGFjdHBvcHVwLnJldmVhbC1tb2RhbCAuY2xvc2UtcmV2ZWFsLW1vZGFsIHsgZGlzcGxheTpub25lOyB9ICNjb250YWN0cG9wdXAgLmNvbnRhY3Rwb3B1cC1ib2R5IHsgYmFja2dyb3VuZC1jb2xvcjp3aGl0ZTsgcGFkZGluZzozMHB4IDEwcHggMTBweDsgfSAuY29udGFjdHBvcHVwLWJvZHkgaW5wdXQgeyB3aWR0aDoxMDAlOyB9IC5jb250YWN0cG9wdXAtYm9keSAuZGl2QmxvY2tSb3c6bm90KDpsYXN0LWNoaWxkKSAuZGl2U3BhbiB7IG1hcmdpbi1ib3R0b206MTVweDsgfSAuY29udGFjdHBvcHVwLWJvZHkgLmRpdkJsb2NrUm93IC5kaXZTcGFuNjpmaXJzdC1jaGlsZCB7IHBhZGRpbmctcmlnaHQ6MTVweDsgfSAuY29udGFjdHBvcHVwLWJvZHkgLmRpdkJsb2NrUm93IC5kaXZTcGFuNjpsYXN0LWNoaWxkIHsgcGFkZGluZy1sZWZ0OjE1cHg7IH0gLmNvbnRhY3Rwb3B1cC1ib2R5IC5kaXZCbG9ja1JvdyAuZGl2U3BhbjYgLmpxVHJhbnNmb3JtSW5wdXRXcmFwcGVyIHsgbWF4LXdpZHRoOjI3NHB4ICFpbXBvcnRhbnQ7IH0gLmNvbnRhY3Rwb3B1cC1oZWFkZXIgeyBib3JkZXItcmFkaXVzOjVweCA1cHggMCAwOyBwYWRkaW5nOjE1cHggMTVweCAzMHB4IDE1cHg7IHRleHQtYWxpZ246Y2VudGVyOyBwb3NpdGlvbjpyZWxhdGl2ZTsgLXdlYmtpdC1ib3gtc2hhZG93OjAgMCAxMHB4IDJweCByZ2JhKDAsMCwwLDAuMyk7IC1tb3otYm94LXNoYWRvdzowIDAgMTBweCAycHggcmdiYSgwLDAsMCwwLjMpOyBib3gtc2hhZG93OjAgMCAxMHB4IDJweCByZ2JhKDAsMCwwLDAuMyk7IGZvbnQtc2l6ZToxLjYyNXJlbSA7IGNvbG9yOiMwNTE0MWY7IGJhY2tncm91bmQtY29sb3I6I2ZmZmZmZjsgfSAuY29udGFjdHBvcHVwLWhlYWRlcjo6YWZ0ZXIgeyBjb250ZW50OiIiOyBwb3NpdGlvbjphYnNvbHV0ZTsgYm90dG9tOi0xNXB4OyBsZWZ0OjUwJTsgLXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlKC01MCUpOyAtbW96LXRyYW5zZm9ybTp0cmFuc2xhdGUoLTUwJSk7IC1tcy10cmFuc2Zvcm06dHJhbnNsYXRlKC01MCUpOyAtby10cmFuc2Zvcm06dHJhbnNsYXRlKC01MCUpOyB0cmFuc2Zvcm06dHJhbnNsYXRlKC01MCUpOyBib3JkZXItbGVmdDozMHB4IHNvbGlkIHRyYW5zcGFyZW50OyBib3JkZXItcmlnaHQ6MzBweCBzb2xpZCB0cmFuc3BhcmVudDsgYm9yZGVyLXRvcDoxNXB4IHNvbGlkICNmZmZmZmY7IH0gLmNvbnRhY3Rwb3B1cC1oZWFkZXIgLmZhLXRpbWVzIHsgcG9zaXRpb246YWJzb2x1dGU7IHJpZ2h0OjAuNXJlbTsgdG9wOjAuNXJlbTsgZm9udC1zaXplOmluaXRpYWw7IH0gLmNvbnRhY3Rwb3B1cC1oZWFkZXIgLmZhLXRpbWVzOmhvdmVyIHsgY3Vyc29yOnBvaW50ZXI7IH0gLmNvbnRhY3Rwb3B1cC1oZWFkZXIgLmhlYWRlci1yZXBsYWNlIHsgZGlzcGxheTppbmxpbmUtYmxvY2s7IH0gYnV0dG9uLmNvbnRhY3Qtc3VibWl0IHsgcGFkZGluZzoxMHB4IDE1cHg7IGRpc3BsYXk6YmxvY2s7IGZsb2F0OmxlZnQ7IHdpZHRoOjEwMCU7IGJvcmRlci1jb2xvcjojMDUxNDFmOyBiYWNrZ3JvdW5kOiNmZmZmZmY7IHRyYW5zaXRpb246YWxsIDAuMjVzOyBjb2xvcjojMDUxNDFmOyBmb250LXdlaWdodDo2MDA7IG1hcmdpbjowOyBib3JkZXI6MXB4IHNvbGlkOyB0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7IGJvcmRlci1yYWRpdXM6M3B4OyBmb250LXNpemU6MS41NjNyZW0gOyB9IC5jb250YWN0LXN1Ym1pdDpob3ZlciB7IGN1cnNvcjpwb2ludGVyOyBib3JkZXItY29sb3I6IzA1MTQxZjsgYmFja2dyb3VuZC1jb2xvcjojZmZmZmZmOyBjb2xvcjojMDUxNDFmOyB9IC5jb250YWN0cG9wdXAtZm9vdGVyIHsgfSAuY29udGFjdHBvcHVwLWZvb3RlciAuYnRuLXdyYXBwZXIgeyBwYWRkaW5nOjEwcHg7IH0gI2NvbnRhY3Rwb3B1cCAuanFUcmFuc2Zvcm1JbnB1dElubmVyIGRpdiB7IGhlaWdodDozMHB4OyB9ICNjb250YWN0cG9wdXAgLmpxVHJhbnNmb3JtSW5wdXRJbm5lciBkaXYudmFsaWRpdHktZXJyb25lb3VzIHsgd2lkdGg6aW5oZXJpdDsgfQovKiogL2Nzcy9kaXZfdGFibGVzLmNzcyAqKi8KZGl2LmRpdlRhYmxlVmlld3sgZmxvYXQ6bGVmdDsgd2lkdGg6MTAwJTsgfSBkaXYuZGl2VGFibGVWaWV3IGRpdi5kaXZUYWJsZVdyYXBlcnsgfSBkaXYuZGl2VGFibGVWaWV3IGRpdi5kaXZUaXRsZXsgZGlzcGxheTpibG9jazsgZm9udC13ZWlnaHQ6Ym9sZDsgdGV4dC1hbGlnbjpsZWZ0OyBmb250LXNpemU6MC45MzhyZW0gOyBwYWRkaW5nOjMwcHggMHB4IDEwcHggMTBweDsgY29sb3I6IzA1MTQxZjsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IHRleHQtdHJhbnNmb3JtOnZhcigtLXR4dC11cHBlcik7IGhlaWdodDphdXRvOyB9IGRpdi5kaXZUYWJsZVZpZXcgZGl2LmRpdlRhYmxlT3V0ZXJ7IGJvcmRlcjoxcHggc29saWQgI2RkZDsgcGFkZGluZzowOyBib3JkZXItcmFkaXVzOjhweDsgbWFyZ2luOjA7IGJhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsIDI1NSwgMjU1LCAwLjc1KTsgb3ZlcmZsb3c6aGlkZGVuOyB9IGRpdi5kaXZUYWJsZVZpZXcgZGl2LmRpdlRhYmxleyBkaXNwbGF5OnRhYmxlOyB3aWR0aDoxMDAlOyBwYWRkaW5nOjA7IG1hcmdpbjowOyB9IGRpdi5kaXZUYWJsZVZpZXcgZGl2LmRpdkhlYWRpbmd7IGRpc3BsYXk6dGFibGUtcm93OyBmb250LXdlaWdodDppbml0aWFsOyB0ZXh0LWFsaWduOmNlbnRlcjsgZm9udC13ZWlnaHQ6Ym9sZDsgaGVpZ2h0OjQ1cHg7IH0gZGl2LmRpdlRhYmxlVmlldyBkaXYuZGl2Um93eyBkaXNwbGF5OnRhYmxlLXJvdzsgd2lkdGg6MTAwJTsgaGVpZ2h0OjY1cHg7IH0gZGl2LmRpdlRhYmxlVmlldyBkaXYuZGl2Q2VsbHsgZGlzcGxheTp0YWJsZS1jZWxsOyBib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZGRkOyB0ZXh0LWFsaWduOmNlbnRlcjsgcGFkZGluZzoxNXB4IDE1cHggMjVweCAxNXB4OyBib3JkZXItcmlnaHQ6MXB4IHNvbGlkICNkZGQ7IGNvbG9yOiMwNTE0MWY7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IH0gZGl2LmRpdlRhYmxlVmlldyBkaXYuZGl2Q2VsbDpsYXN0LWNoaWxkeyBib3JkZXItcmlnaHQ6MXB4IHNvbGlkIHRyYW5zcGFyZW50OyB9IGRpdi5kaXZUYWJsZVZpZXcgZGl2LmRpdkhlYWRpbmcgZGl2LmRpdkNlbGx7IHBhZGRpbmc6MTBweCAxNXB4OyBiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LCAyNTUsIDI1NSwgMS4wKTsgfSBkaXYuZGl2VGFibGVWaWV3IGRpdi5kaXZIZWFkaW5nIGRpdi5kaXZDZWxsOm50aC1jaGlsZChldmVuKXsgYmFja2dyb3VuZC1jb2xvcjojZWVlOyB9IGRpdi5kaXZUYWJsZVZpZXcgZGl2LmRpdkhlYWRpbmcgZGl2LmRpdkNlbGw6bGFzdC1jaGlsZHsgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6OHB4OyB9IGRpdi5kaXZUYWJsZVZpZXcgZGl2LmRpdkhlYWRpbmcgZGl2LmRpdkNlbGw6Zmlyc3QtY2hpbGR7IGJvcmRlci10b3AtbGVmdC1yYWRpdXM6OHB4OyB9IGRpdi5kaXZUYWJsZVZpZXcgZGl2LmRpdlJvdzpsYXN0LWNoaWxkIGRpdi5kaXZDZWxseyBib3JkZXItYm90dG9tOjBweDsgfSBkaXYuZGl2VGFibGVWaWV3IGRpdi5kaXZSb3cgZGl2LmRpdkNlbGx7IGJhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUpOyB9IGRpdi5kaXZUYWJsZVZpZXcgZGl2LmRpdlJvdyBkaXYuZGl2Q2VsbDpudGgtY2hpbGQoZXZlbil7IGJhY2tncm91bmQtY29sb3I6I2Y2ZjdmODsgfQovKiogL2Nzcy9kaXZfYmxvY2tzLmNzcyAqKi8KZGl2LmRpdkJsb2NrVmlld3sgZGlzcGxheTpibG9jazsgZmxvYXQ6bGVmdDsgd2lkdGg6MTAwJTsgfSBkaXYuZGl2QmxvY2tWaWV3IGRpdi5kaXZCbG9ja1RpdGxlLCBkaXYuZGl2QmxvY2tWaWV3IGxhYmVsLmRpdkJsb2NrVGl0bGV7IGRpc3BsYXk6YmxvY2s7IGZvbnQtd2VpZ2h0OmJvbGQ7IHRleHQtYWxpZ246bGVmdDsgcGFkZGluZzozMHB4IDEwcHggMTBweCAxMHB4OyBjb2xvcjojMDUxNDFmOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgdGV4dC10cmFuc2Zvcm06dmFyKC0tdHh0LXVwcGVyKTsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IH0gZGl2LmRpdkJsb2NrVmlldyBkaXYuZGl2QmxvY2tUaXRsZS5ibG9ja1RpdGxlU3R5bGUyLCBkaXYuZGl2QmxvY2tWaWV3IGxhYmVsLmRpdkJsb2NrVGl0bGUuYmxvY2tUaXRsZVN0eWxlMnsgcGFkZGluZzowIDQwcHggMTBweDsgfSBkaXYuZGl2QmxvY2tWaWV3IGRpdi5kaXZCbG9ja0NvbnRlbnR7IGJhY2tncm91bmQ6bm9uZTsgcGFkZGluZzoxNXB4IDBweDsgbWFyZ2luOjA7IGZsb2F0OmxlZnQ7IHdpZHRoOjEwMCU7IH0gZGl2LmRpdkJsb2NrVmlldyBkaXYuZGl2QmxvY2tDb250ZW50IGRpdi5kaXZCbG9ja0NvbHVtbnsgYmFja2dyb3VuZDpub25lOyBwYWRkaW5nOjAgNDBweDsgbWFyZ2luOjA7IHdpZHRoOjg2MHB4ICFpbXBvcnRhbnQ7IGZsb2F0OmxlZnQ7IGZvbnQtc2l6ZTppbmhlcml0OyB9IGRpdi5kaXZCbG9ja1ZpZXcgVUwuZGl2QmxvY2tMaXN0eyBiYWNrZ3JvdW5kOmluaXRpYWw7IHBhZGRpbmc6MDsgbWFyZ2luOjAgMCAyMHB4IDA7IH0gZGl2LmRpdkJsb2NrVmlldyBVTC5kaXZCbG9ja0xpc3QgVUwuZGl2SW5uZXJCbG9ja0xpc3QgeyBwYWRkaW5nOjEwcHggMCAwIDA7IH0gZGl2LmRpdkJsb2NrVmlldyBVTC5kaXZCbG9ja0xpc3Quc2l6ZUZvcjRDb2x1bW5zTGlzdHsgfSBkaXYuZGl2QmxvY2tWaWV3IFVMLmRpdkJsb2NrTGlzdDpub3QoLnNpemVGb3I0Q29sdW1uc0xpc3QpOm50aC1jaGlsZCgzbisxKSwgZGl2LmRpdkJsb2NrVmlldyBVTC5kaXZCbG9ja0xpc3Quc2l6ZUZvcjRDb2x1bW5zTGlzdDpudGgtY2hpbGQoNG4rMSl7IGNsZWFyOmxlZnQ7IH0gZGl2LmRpdkJsb2NrVmlldyBVTC5kaXZCbG9ja0xpc3QgZGl2LmRpdkJsb2NrTGlzdFRpdGxleyBiYWNrZ3JvdW5kOmluaXRpYWw7IHBhZGRpbmc6MCAwIDEwcHggMDsgbWFyZ2luOjA7IHdpZHRoOjEwMCU7IGZsb2F0OmxlZnQ7IGZvbnQtd2VpZ2h0OmJvbGQgfSBkaXYuZGl2QmxvY2tWaWV3IFVMLmRpdkJsb2NrTGlzdCBMSS5kaXZMaXN0SXRlbXsgcGFkZGluZzowIDMwcHggMTBweCAxMHB4OyBtYXJnaW46MDsgdGV4dC1pbmRlbnQ6MDsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYXJyb3dfcmVkLnBuZycpIG5vLXJlcGVhdCBzY3JvbGwgMCA1cHggdHJhbnNwYXJlbnQ7IH0gZGl2LmRpdkJsb2NrVmlldyBVTC5kaXZCbG9ja0xpc3QgTEkuZGl2TGlzdEl0ZW0gPiBBeyBtYXJnaW46MDsgcGFkZGluZzowOyBiYWNrZ3JvdW5kOm5vbmU7IGZvbnQtc2l6ZTppbml0aWFsOyB9IGRpdi5kaXZCbG9ja1ZpZXcgVUwuZGl2QmxvY2tMaXN0IExJLmRpdkxpc3RUaXRsZTJ7IGZvbnQtc2l6ZToxLjFlbTsgYm9yZGVyOjA7IG1hcmdpbjowOyBwYWRkaW5nOjAgMCAxMHB4IDA7IGZvbnQtd2VpZ2h0OmJvbGQ7IGxpc3Qtc3R5bGU6bm9uZTsgfSBkaXYuZGl2QmxvY2tWaWV3IFVMLmRpdkJsb2NrTGlzdCBMSS5kaXZMaXN0SXRlbTJ7IHBhZGRpbmc6MCAzMHB4IDEwcHggMTBweDsgdGV4dC1pbmRlbnQ6MDsgbGlzdC1zdHlsZTpub25lIG91dHNpZGUgbm9uZTsgZGlzcGxheTpibG9jazsgbWFyZ2luOjAgMCAwIDEycHg7IH0gZGl2LmRpdkJsb2NrVmlldyBVTC5kaXZCbG9ja0xpc3QgTEkuZGl2TGlzdEl0ZW0yOmJlZm9yZXsgY29udGVudDoiXGYxMzgiOyBmb250LWZhbWlseTonRm9udCBBd2Vzb21lIDUgUHJvJzsgZm9udC13ZWlnaHQ6OTAwOyBtYXJnaW4tcmlnaHQ6MDsgbWFyZ2luLWxlZnQ6LTIxcHg7IHBhZGRpbmctcmlnaHQ6NXB4OyBmb250LXNpemU6MC44NzVyZW0gOyB9IGRpdi5kaXZCbG9ja1ZpZXcgVUwuZGl2QmxvY2tMaXN0IFVMLmRpdklubmVyQmxvY2tMaXN0IExJLmRpdkxpc3RJdGVtMjpiZWZvcmV7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgfSBkaXYuZGl2QmxvY2tWaWV3IFVMLmRpdkJsb2NrTGlzdCBVTC5kaXZJbm5lckJsb2NrTGlzdCBMSSB7IHBhZGRpbmc6MCAzMHB4IDEwcHggMTBweDsgfSBkaXYuZGl2QmxvY2tWaWV3IFVMLmRpdkJsb2NrTGlzdCBMSS5kaXZMaXN0SXRlbS5ub1N0eWxlSXRlbXsgcGFkZGluZzowIDAgNXB4IDA7IG1hcmdpbjowOyB0ZXh0LWluZGVudDowOyBiYWNrZ3JvdW5kOm5vbmU7IGxpc3Qtc3R5bGU6bm9uZTsgfSBkaXYuZGl2QmxvY2tWaWV3IFVMLmRpdkJsb2NrTGlzdCBMSS5kaXZMaXN0SXRlbS5vblNhbWVMaW5leyBwYWRkaW5nLXJpZ2h0OjE1cHg7IGRpc3BsYXk6aW5saW5lLXRhYmxlOyB9IGRpdi5kaXZCbG9ja1ZpZXcgVUwuZGl2QmxvY2tMaXN0IExJLmRpdkxpc3RJdGVtLm9uU2FtZUxpbmU6bGFzdC1jaGlsZHsgcGFkZGluZy1yaWdodDowOyB9IGRpdi5kaXZCbG9ja1ZpZXcgZGl2LmRpdkJsb2NrVGFibGVPdXRlcnsgfSBkaXYuZGl2QmxvY2tWaWV3IGRpdi5kaXZCbG9ja1RhYmxleyBkaXNwbGF5OnRhYmxlOyB3aWR0aDoxMDAlOyBwYWRkaW5nOjA7IG1hcmdpbjowOyB9IGRpdi5kaXZCbG9ja1ZpZXcgZGl2LmRpdkJsb2NrUm93eyBkaXNwbGF5OnRhYmxlLXJvdzsgd2lkdGg6MTAwJTsgfSBkaXYuZGl2QmxvY2tWaWV3IGRpdi5kaXZCbG9ja0NlbGx7IGRpc3BsYXk6dGFibGUtY2VsbDsgfSBkaXYuZGl2RGlzY2xhaW1lckJsb2NreyBiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWdlbmVyYWwtYmctY29sb3IpOyBib3JkZXItcmFkaXVzOjNweDsgfSBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6MTMwMXB4KSB7IGJvZHkuaXNGdWxsV2lkdGhQYWdlLmlzUGFnZUZ1bGxXaWR0aEVuYWJsZWQgZGl2LmRpdkJsb2NrVmlldyBkaXYuZGl2QmxvY2tDb250ZW50IGRpdi5kaXZCbG9ja0NvbHVtbiB7IHdpZHRoOjExMDBweCAhaW1wb3J0YW50OyB9IH0KLyoqIC9jc3MvZm9ybXMvZm9ybXMucHJlbG9hZC5jc3MgKiovCi5kMmNmb3JtIHsgLS1sYWJlbC1yZXF1aXJlZC1zeW1ib2w6IioiOyAtLWxhYmVsLXJlcXVpcmVkLWNvbG9yOiNGRjAwMDA7IC0taW5wdXQtcGFkZGluZzp2YXIoLS1zLTEpIHZhcigtLXMxKTsgLS1pbnB1dC1iZy1jb2xvcjp2YXIoLS13aGl0ZSk7IC0taW5wdXQtYm9yZGVyLWNvbG9yOnZhcigtLW1pZC1ncmF5KTsgLS1pbnB1dC1yYWRpdXM6dmFyKC0tcy02KTsgLS1pbnB1dC1mb250LXNpemU6dmFyKC0tZnMwKTsgLS1pbnB1dC1saW5lLWhlaWdodDp2YXIoLS1mczIpOyB9IC5kMmNmb3JtICogeyBib3gtc2l6aW5nOmJvcmRlci1ib3g7IH0gLmQyY2Zvcm0gYm94LWxjIHsgLS1zcGFjZTp2YXIoLS1zLTQpOyBwYWRkaW5nLWxlZnQ6MDsgcGFkZGluZy1yaWdodDowOyBkaXNwbGF5OmZsZXg7IGZsZXgtZGlyZWN0aW9uOmNvbHVtbjsgYWxpZ24taXRlbXM6ZmxleC1zdGFydDsgfSAuZDJjZm9ybS0tdGhpbiBib3gtbGMgeyAtLXNwYWNlOnZhcigtLXMtOSk7IH0gLmQyY2Zvcm0tLXJvdyBzdGFjay1sYyB7IGZsZXgtZGlyZWN0aW9uOnJvdzsgZmxleC13cmFwOndyYXA7IH0gLmQyY2Zvcm0tLXJvdyBib3gtbGMgeyBwYWRkaW5nLXJpZ2h0OnZhcigtLXNwYWNlKTsgcGFkZGluZy1sZWZ0OnZhcigtLXNwYWNlKTsgfSAuZDJjZm9ybS0taG9yaXpvbnRhbCBib3gtbGMgeyBmbGV4LWRpcmVjdGlvbjpyb3c7IGFsaWduLWl0ZW1zOmZsZXgtc3RhcnQ7IH0gLmQyY2Zvcm0tLWhvcml6b250YWwgYm94LWxjIGxhYmVsIHsgbWluLXdpZHRoOjExNXB4OyB3aWR0aDozMCU7IHBhZGRpbmctcmlnaHQ6dmFyKC0tcyk7IG1hcmdpbi10b3A6dmFyKC0tczEpOyBtYXJnaW4tYm90dG9tOjA7IH0gLmQyY2Zvcm0gbGFiZWw6aGFzKFtyZXF1aXJlZF0pIHNwYW46YWZ0ZXJ7IGNvbG9yIDp2YXIoLS1sYWJlbC1yZXF1aXJlZC1jb2xvcik7IGNvbnRlbnQgOnZhcigtLWxhYmVsLXJlcXVpcmVkLXN5bWJvbCk7IHBhZGRpbmctbGVmdCA6dmFyKC0tcy02KTsgfSAuZDJjZm9ybSBsYWJlbDpub3QoLmZpbmFuY2VDYWxjKSwgLmQyY2Zvcm0gLmxhYmVsOm5vdCguZmluYW5jZUNhbGMpIHsgbWFyZ2luLWJvdHRvbTp2YXIoLS1zLTMpOyBmb250LXNpemU6dmFyKC0taW5wdXQtZm9udC1zaXplKTsgbGluZS1oZWlnaHQ6dmFyKC0taW5wdXQtbGluZS1oZWlnaHQpOyBmb250LXdlaWdodDo0MDA7IH0gLmQyY2Zvcm0gbGFiZWwuLS1yZXF1aXJlZDpub3QoLnR4dC1yaWdodCk6YWZ0ZXIsIC5kMmNmb3JtIC5sYWJlbC4tLXJlcXVpcmVkOm5vdCgudHh0LXJpZ2h0KTphZnRlciwgLmQyY2Zvcm0gbGFiZWwuLXJlcXVpcmVkOm5vdCgudHh0LXJpZ2h0KTphZnRlciwgLmQyY2Zvcm0gLmxhYmVsLi1yZXF1aXJlZDpub3QoLnR4dC1yaWdodCk6YWZ0ZXIgeyBjb2xvciA6dmFyKC0tbGFiZWwtcmVxdWlyZWQtY29sb3IpOyBjb250ZW50IDp2YXIoLS1sYWJlbC1yZXF1aXJlZC1zeW1ib2wpOyBwYWRkaW5nLWxlZnQgOnZhcigtLXMtNik7IH0gLmQyY2Zvcm0gbGFiZWwuLS1yZXF1aXJlZC50eHQtcmlnaHQ6YmVmb3JlLCAuZDJjZm9ybSAubGFiZWwuLS1yZXF1aXJlZC50eHQtcmlnaHQ6YmVmb3JlLCAuZDJjZm9ybSBsYWJlbC4tcmVxdWlyZWQudHh0LXJpZ2h0OmJlZm9yZSwgLmQyY2Zvcm0gLmxhYmVsLi1yZXF1aXJlZC50eHQtcmlnaHQ6YmVmb3JlIHsgY29sb3IgOnZhcigtLWxhYmVsLXJlcXVpcmVkLWNvbG9yKTsgY29udGVudCA6dmFyKC0tbGFiZWwtcmVxdWlyZWQtc3ltYm9sKTsgcGFkZGluZy1yaWdodCA6dmFyKC0tcy02KTsgfSAuZDJjZm9ybSA6d2hlcmUoaW5wdXQ6bm90KFt0eXBlPXN1Ym1pdF0sLnBheW1lbnRDYWxjdWxhdG9yRG93blBheW1lbnQpOm5vdChbdHlwZT0icmFkaW8iXSk6bm90KFt0eXBlPSJjaGVja2JveCJdKSksIC5kMmNmb3JtIHNlbGVjdDpub3QoLnBheW1lbnRDYWxjdWxhdG9ySW50ZXJ2YWwsLnBheW1lbnRDYWxjdWxhdG9yS21BbGxvd2FuY2UsLmZpbmFuY2VNdWx0aXN0ZXBVc2VkQ2FsY3VsYXRvciAuY2FsYy1mb3JtIHNlbGVjdCksIC5kMmNmb3JtIHRleHRhcmVhIHsgd2lkdGg6MTAwJTsgcGFkZGluZzp2YXIoLS1pbnB1dC1wYWRkaW5nKTsgYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1pbnB1dC1iZy1jb2xvcik7IGJvcmRlci1yYWRpdXM6dmFyKC0taW5wdXQtcmFkaXVzKTsgYm9yZGVyOjFweCBzb2xpZCB2YXIoLS1pbnB1dC1ib3JkZXItY29sb3IpOyBjb2xvcjojMjEyNTI5OyBmb250LXNpemU6dmFyKC0taW5wdXQtZm9udC1zaXplKTsgbGluZS1oZWlnaHQ6dmFyKC0taW5wdXQtbGluZS1oZWlnaHQpOyBmb250LXdlaWdodDo0MDA7IH0gLmQyY2Zvcm0gaW5wdXQ6bm90KFt0eXBlPXN1Ym1pdF0pOm5vdChbdHlwZT0icmFkaW8iXSk6bm90KFt0eXBlPSJjaGVja2JveCJdKSwgLmQyY2Zvcm0gc2VsZWN0IHsgaGVpZ2h0OjM1cHg7IH0gLmQyY2Zvcm0gLmludmFsaWQgPiA6aXMoaW5wdXQsc2VsZWN0LHRleHRhcmVhKXsgYmFja2dyb3VuZC1jb2xvcjojZmFkNmRjOyB9IC5kMmNmb3JtIGlucHV0OmRpc2FibGVkLCAuZDJjZm9ybSBpbnB1dC5kaXNhYmxlZCB7IGJhY2tncm91bmQtY29sb3I6cmdiYSgyMzksIDIzOSwgMjM5LCAwLjMpOyBjb2xvcjpyZ2IoODQsIDg0LCA4NCk7IGJvcmRlci1jb2xvcjpyZ2JhKDExOCwgMTE4LCAxMTgsIDAuMyk7IGN1cnNvcjpub3QtYWxsb3dlZDsgfSAuZDJjZm9ybSBpbnB1dC50eHQtdXBwZXIgeyB0ZXh0LXRyYW5zZm9ybTpub25lOyB9IC5kMmNmb3JtIGlucHV0LnR4dC11cHBlcjo6cGxhY2Vob2xkZXIgeyB0ZXh0LXRyYW5zZm9ybTp2YXIoLS10eHQtdXBwZXIsIHVwcGVyY2FzZSk7IH0gLmQyY2Zvcm0gLmlucHV0LWljb24tbGVmdCwgLmQyY2Zvcm0gLmlucHV0LWljb24tcmlnaHQgeyBwb3NpdGlvbjpyZWxhdGl2ZTsgfSAuZDJjZm9ybSAuaW5wdXQtaWNvbiB7IHBvc2l0aW9uOmFic29sdXRlOyB6LWluZGV4OjE7IHRvcDp2YXIoLS1zMSk7IGZvbnQtc2l6ZTp2YXIoLS1pbnB1dC1mb250LXNpemUpOyBsaW5lLWhlaWdodDp2YXIoLS1pbnB1dC1saW5lLWhlaWdodCk7IGNvbG9yOnZhcigtLWRhcmstZ3JheSk7IH0gLmQyY2Zvcm0gLmlucHV0LWljb24tcmlnaHQgLmlucHV0LWljb24geyByaWdodDp2YXIoLS1zNCk7IH0gLmQyY2Zvcm0gLmlucHV0LWljb24tbGVmdCAuaW5wdXQtaWNvbiB7IGxlZnQ6dmFyKC0tczQpOyB9IC5kMmNmb3JtIC5pbnB1dC1pY29uLWxlZnQgaW5wdXQgeyBwYWRkaW5nLWxlZnQ6dmFyKC0tczkpOyB9IC5kMmNmb3JtIC5zZXBhcmF0b3IgeyB3aWR0aDoxMDAlOyBib3JkZXItdG9wOjFweCBzb2xpZCAjZDRkNGQ0OyBtYXJnaW4tdG9wOnZhcigtLXM3KTsgbWFyZ2luLWJvdHRvbTp2YXIoLS1zNyk7IH0gLmQyY2Zvcm0gLnJhZGlvLWlubGluZSB7IGRpc3BsYXk6ZmxleDsgd2lkdGg6MTAwJTsgfSAuZDJjZm9ybSAuY2hlY2tib3gtbGlzdCB7IGRpc3BsYXk6ZmxleDsgZmxleC1kaXJlY3Rpb246Y29sdW1uOyBtYXJnaW4tYm90dG9tOnZhcigtLXMtMyk7IH0gLmQyY2Zvcm0gLmNoZWNrYm94LWxpc3QgPiAqIHsgbWFyZ2luLWJvdHRvbTowOyB9IC5kMmNmb3JtIC5tdWx0aXBsZS1pbnB1dCB7IGRpc3BsYXk6ZmxleDsgd2lkdGg6MTAwJTsgfSAuZDJjZm9ybSAubXVsdGlwbGUtaW5wdXQgPiAqOm5vdCg6bGFzdC1vZi10eXBlKSB7IG1hcmdpbi1yaWdodDp2YXIoLS1zMSk7IH0gLmQyY2Zvcm0gLmlucHV0LWdyb3VwIHsgZGlzcGxheTpmbGV4OyB3aWR0aCA6MTAwJTsgfSAuZDJjZm9ybSAuaW5wdXQtZ3JvdXAgLmlucHV0LWdyb3VwLXRleHQgeyBkaXNwbGF5OmZsZXg7IGFsaWduLWl0ZW1zOmNlbnRlcjsgcGFkZGluZzp2YXIoLS1pbnB1dC1wYWRkaW5nKTsgYmFja2dyb3VuZDp2YXIoLS1saWdodC1ncmF5KTsgYm9yZGVyOjFweCBzb2xpZCB2YXIoLS1pbnB1dC1ib3JkZXItY29sb3IpOyBib3JkZXItcmFkaXVzOnZhcigtLWlucHV0LXJhZGl1cyk7IGZvbnQtc2l6ZTp2YXIoLS1pbnB1dC1mb250LXNpemUpOyBsaW5lLWhlaWdodDp2YXIoLS1pbnB1dC1saW5lLWhlaWdodCk7IHdoaXRlLXNwYWNlOm5vd3JhcDsgfSAuZDJjZm9ybSAuaW5wdXQtZ3JvdXAgPiA6bm90KDpmaXJzdC1jaGlsZCkgeyBib3JkZXItbGVmdDowOyBib3JkZXItdG9wLWxlZnQtcmFkaXVzOjAgIWltcG9ydGFudDsgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czowICFpbXBvcnRhbnQ7IH0gLmQyY2Zvcm0gLmlucHV0LWdyb3VwID4gOm5vdCg6bGFzdC1jaGlsZCkgeyBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czowICFpbXBvcnRhbnQ7IGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjAgIWltcG9ydGFudDsgfSBAbWVkaWEgKG1heC13aWR0aDo5ODBweCkgeyAuZDJjZm9ybS0taG9yaXpvbnRhbCBib3gtbGMgbGFiZWwgeyBtaW4td2lkdGg6ODVweDsgfSB9Ci8qKiAvY3NzL2Zvcm1zL2Zvcm1zLmNzcyAqKi8KLmQyY2Zvcm0gaW5wdXQ6bm90KFt0eXBlPXN1Ym1pdF0pOm5vdChbdHlwZT0icmFkaW8iXSk6bm90KFt0eXBlPSJjaGVja2JveCJdKSwgLmQyY2Zvcm0gc2VsZWN0LCAuZDJjZm9ybSB0ZXh0YXJlYSB7IHRyYW5zaXRpb246Ym9yZGVyLWNvbG9yIC4xNXMgZWFzZS1pbi1vdXQsYm94LXNoYWRvdyAuMTVzIGVhc2UtaW4tb3V0OyB9IC5kMmNmb3JtIGlucHV0Om5vdChbdHlwZT1zdWJtaXRdKTpub3QoW3R5cGU9InJhZGlvIl0pOm5vdChbdHlwZT0iY2hlY2tib3giXSk6Zm9jdXMsIC5kMmNmb3JtIHNlbGVjdDpmb2N1cywgLmQyY2Zvcm0gdGV4dGFyZWE6Zm9jdXMgeyBib3JkZXItY29sb3I6Izg2YjdmZTsgb3V0bGluZTowOyBib3gtc2hhZG93OjAgMCAwIDAuMnJlbSByZ2IoMTMgMTEwIDI1MyAvIDI1JSk7IH0gLmQyY2Zvcm0gLmlucHV0LWdyb3VwIGlucHV0Om5vdChbdHlwZT1zdWJtaXRdKTpub3QoW3R5cGU9InJhZGlvIl0pOm5vdChbdHlwZT0iY2hlY2tib3giXSk6Zm9jdXMsIC5kMmNmb3JtIC5pbnB1dC1ncm91cCBzZWxlY3Q6Zm9jdXMsIC5kMmNmb3JtIC5pbnB1dC1ncm91cCB0ZXh0YXJlYTpmb2N1cyB7IHotaW5kZXg6MzsgfSAuZDJjZm9ybSBpbnB1dC52YWxpZGl0eS1lcnJvbmVvdXMsIC5kMmNmb3JtIHNlbGVjdC52YWxpZGl0eS1lcnJvbmVvdXMsIC5kMmNmb3JtIHRleHRhcmVhLnZhbGlkaXR5LWVycm9uZW91cywgLmQyY2Zvcm0gLmlucHV0LWdyb3VwIC52YWxpZGl0eS1lcnJvbmVvdXMgKyAuaW5wdXQtZ3JvdXAtdGV4dCB7IGJvcmRlci1jb2xvcjojZGMzNTQ1ICFpbXBvcnRhbnQ7IGJhY2tncm91bmQtY29sb3I6I2ZhZDZkYyAhaW1wb3J0YW50OyB9IC5kMmNmb3JtIGlucHV0LnZhbGlkaXR5LWVycm9uZW91czo6cGxhY2Vob2xkZXIsIC5kMmNmb3JtIHRleHRhcmVhLnZhbGlkaXR5LWVycm9uZW91czo6cGxhY2Vob2xkZXIsIC5kMmNmb3JtIHNlbGVjdC52YWxpZGl0eS1lcnJvbmVvdXMsIC5kMmNmb3JtIC5pbnB1dC1ncm91cCAudmFsaWRpdHktZXJyb25lb3VzICsgLmlucHV0LWdyb3VwLXRleHQgeyBjb2xvcjojZGMzNTQ1OyB9Ci8qKiAvY3NzL2Zvcm1zL2Zvcm1zLnByZWxvYWQuY3NzICoqLwouZDJjZm9ybSB7IC0tbGFiZWwtcmVxdWlyZWQtc3ltYm9sOiIqIjsgLS1sYWJlbC1yZXF1aXJlZC1jb2xvcjojRkYwMDAwOyAtLWlucHV0LXBhZGRpbmc6dmFyKC0tcy0xKSB2YXIoLS1zMSk7IC0taW5wdXQtYmctY29sb3I6dmFyKC0td2hpdGUpOyAtLWlucHV0LWJvcmRlci1jb2xvcjp2YXIoLS1taWQtZ3JheSk7IC0taW5wdXQtcmFkaXVzOnZhcigtLXMtNik7IC0taW5wdXQtZm9udC1zaXplOnZhcigtLWZzMCk7IC0taW5wdXQtbGluZS1oZWlnaHQ6dmFyKC0tZnMyKTsgfSAuZDJjZm9ybSAqIHsgYm94LXNpemluZzpib3JkZXItYm94OyB9IC5kMmNmb3JtIGJveC1sYyB7IC0tc3BhY2U6dmFyKC0tcy00KTsgcGFkZGluZy1sZWZ0OjA7IHBhZGRpbmctcmlnaHQ6MDsgZGlzcGxheTpmbGV4OyBmbGV4LWRpcmVjdGlvbjpjb2x1bW47IGFsaWduLWl0ZW1zOmZsZXgtc3RhcnQ7IH0gLmQyY2Zvcm0tLXRoaW4gYm94LWxjIHsgLS1zcGFjZTp2YXIoLS1zLTkpOyB9IC5kMmNmb3JtLS1yb3cgc3RhY2stbGMgeyBmbGV4LWRpcmVjdGlvbjpyb3c7IGZsZXgtd3JhcDp3cmFwOyB9IC5kMmNmb3JtLS1yb3cgYm94LWxjIHsgcGFkZGluZy1yaWdodDp2YXIoLS1zcGFjZSk7IHBhZGRpbmctbGVmdDp2YXIoLS1zcGFjZSk7IH0gLmQyY2Zvcm0tLWhvcml6b250YWwgYm94LWxjIHsgZmxleC1kaXJlY3Rpb246cm93OyBhbGlnbi1pdGVtczpmbGV4LXN0YXJ0OyB9IC5kMmNmb3JtLS1ob3Jpem9udGFsIGJveC1sYyBsYWJlbCB7IG1pbi13aWR0aDoxMTVweDsgd2lkdGg6MzAlOyBwYWRkaW5nLXJpZ2h0OnZhcigtLXMpOyBtYXJnaW4tdG9wOnZhcigtLXMxKTsgbWFyZ2luLWJvdHRvbTowOyB9IC5kMmNmb3JtIGxhYmVsOmhhcyhbcmVxdWlyZWRdKSBzcGFuOmFmdGVyeyBjb2xvciA6dmFyKC0tbGFiZWwtcmVxdWlyZWQtY29sb3IpOyBjb250ZW50IDp2YXIoLS1sYWJlbC1yZXF1aXJlZC1zeW1ib2wpOyBwYWRkaW5nLWxlZnQgOnZhcigtLXMtNik7IH0gLmQyY2Zvcm0gbGFiZWw6bm90KC5maW5hbmNlQ2FsYyksIC5kMmNmb3JtIC5sYWJlbDpub3QoLmZpbmFuY2VDYWxjKSB7IG1hcmdpbi1ib3R0b206dmFyKC0tcy0zKTsgZm9udC1zaXplOnZhcigtLWlucHV0LWZvbnQtc2l6ZSk7IGxpbmUtaGVpZ2h0OnZhcigtLWlucHV0LWxpbmUtaGVpZ2h0KTsgZm9udC13ZWlnaHQ6NDAwOyB9IC5kMmNmb3JtIGxhYmVsLi0tcmVxdWlyZWQ6bm90KC50eHQtcmlnaHQpOmFmdGVyLCAuZDJjZm9ybSAubGFiZWwuLS1yZXF1aXJlZDpub3QoLnR4dC1yaWdodCk6YWZ0ZXIsIC5kMmNmb3JtIGxhYmVsLi1yZXF1aXJlZDpub3QoLnR4dC1yaWdodCk6YWZ0ZXIsIC5kMmNmb3JtIC5sYWJlbC4tcmVxdWlyZWQ6bm90KC50eHQtcmlnaHQpOmFmdGVyIHsgY29sb3IgOnZhcigtLWxhYmVsLXJlcXVpcmVkLWNvbG9yKTsgY29udGVudCA6dmFyKC0tbGFiZWwtcmVxdWlyZWQtc3ltYm9sKTsgcGFkZGluZy1sZWZ0IDp2YXIoLS1zLTYpOyB9IC5kMmNmb3JtIGxhYmVsLi0tcmVxdWlyZWQudHh0LXJpZ2h0OmJlZm9yZSwgLmQyY2Zvcm0gLmxhYmVsLi0tcmVxdWlyZWQudHh0LXJpZ2h0OmJlZm9yZSwgLmQyY2Zvcm0gbGFiZWwuLXJlcXVpcmVkLnR4dC1yaWdodDpiZWZvcmUsIC5kMmNmb3JtIC5sYWJlbC4tcmVxdWlyZWQudHh0LXJpZ2h0OmJlZm9yZSB7IGNvbG9yIDp2YXIoLS1sYWJlbC1yZXF1aXJlZC1jb2xvcik7IGNvbnRlbnQgOnZhcigtLWxhYmVsLXJlcXVpcmVkLXN5bWJvbCk7IHBhZGRpbmctcmlnaHQgOnZhcigtLXMtNik7IH0gLmQyY2Zvcm0gOndoZXJlKGlucHV0Om5vdChbdHlwZT1zdWJtaXRdLC5wYXltZW50Q2FsY3VsYXRvckRvd25QYXltZW50KTpub3QoW3R5cGU9InJhZGlvIl0pOm5vdChbdHlwZT0iY2hlY2tib3giXSkpLCAuZDJjZm9ybSBzZWxlY3Q6bm90KC5wYXltZW50Q2FsY3VsYXRvckludGVydmFsLC5wYXltZW50Q2FsY3VsYXRvckttQWxsb3dhbmNlLC5maW5hbmNlTXVsdGlzdGVwVXNlZENhbGN1bGF0b3IgLmNhbGMtZm9ybSBzZWxlY3QpLCAuZDJjZm9ybSB0ZXh0YXJlYSB7IHdpZHRoOjEwMCU7IHBhZGRpbmc6dmFyKC0taW5wdXQtcGFkZGluZyk7IGJhY2tncm91bmQtY29sb3I6dmFyKC0taW5wdXQtYmctY29sb3IpOyBib3JkZXItcmFkaXVzOnZhcigtLWlucHV0LXJhZGl1cyk7IGJvcmRlcjoxcHggc29saWQgdmFyKC0taW5wdXQtYm9yZGVyLWNvbG9yKTsgY29sb3I6IzIxMjUyOTsgZm9udC1zaXplOnZhcigtLWlucHV0LWZvbnQtc2l6ZSk7IGxpbmUtaGVpZ2h0OnZhcigtLWlucHV0LWxpbmUtaGVpZ2h0KTsgZm9udC13ZWlnaHQ6NDAwOyB9IC5kMmNmb3JtIGlucHV0Om5vdChbdHlwZT1zdWJtaXRdKTpub3QoW3R5cGU9InJhZGlvIl0pOm5vdChbdHlwZT0iY2hlY2tib3giXSksIC5kMmNmb3JtIHNlbGVjdCB7IGhlaWdodDozNXB4OyB9IC5kMmNmb3JtIC5pbnZhbGlkID4gOmlzKGlucHV0LHNlbGVjdCx0ZXh0YXJlYSl7IGJhY2tncm91bmQtY29sb3I6I2ZhZDZkYzsgfSAuZDJjZm9ybSBpbnB1dDpkaXNhYmxlZCwgLmQyY2Zvcm0gaW5wdXQuZGlzYWJsZWQgeyBiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjM5LCAyMzksIDIzOSwgMC4zKTsgY29sb3I6cmdiKDg0LCA4NCwgODQpOyBib3JkZXItY29sb3I6cmdiYSgxMTgsIDExOCwgMTE4LCAwLjMpOyBjdXJzb3I6bm90LWFsbG93ZWQ7IH0gLmQyY2Zvcm0gaW5wdXQudHh0LXVwcGVyIHsgdGV4dC10cmFuc2Zvcm06bm9uZTsgfSAuZDJjZm9ybSBpbnB1dC50eHQtdXBwZXI6OnBsYWNlaG9sZGVyIHsgdGV4dC10cmFuc2Zvcm06dmFyKC0tdHh0LXVwcGVyLCB1cHBlcmNhc2UpOyB9IC5kMmNmb3JtIC5pbnB1dC1pY29uLWxlZnQsIC5kMmNmb3JtIC5pbnB1dC1pY29uLXJpZ2h0IHsgcG9zaXRpb246cmVsYXRpdmU7IH0gLmQyY2Zvcm0gLmlucHV0LWljb24geyBwb3NpdGlvbjphYnNvbHV0ZTsgei1pbmRleDoxOyB0b3A6dmFyKC0tczEpOyBmb250LXNpemU6dmFyKC0taW5wdXQtZm9udC1zaXplKTsgbGluZS1oZWlnaHQ6dmFyKC0taW5wdXQtbGluZS1oZWlnaHQpOyBjb2xvcjp2YXIoLS1kYXJrLWdyYXkpOyB9IC5kMmNmb3JtIC5pbnB1dC1pY29uLXJpZ2h0IC5pbnB1dC1pY29uIHsgcmlnaHQ6dmFyKC0tczQpOyB9IC5kMmNmb3JtIC5pbnB1dC1pY29uLWxlZnQgLmlucHV0LWljb24geyBsZWZ0OnZhcigtLXM0KTsgfSAuZDJjZm9ybSAuaW5wdXQtaWNvbi1sZWZ0IGlucHV0IHsgcGFkZGluZy1sZWZ0OnZhcigtLXM5KTsgfSAuZDJjZm9ybSAuc2VwYXJhdG9yIHsgd2lkdGg6MTAwJTsgYm9yZGVyLXRvcDoxcHggc29saWQgI2Q0ZDRkNDsgbWFyZ2luLXRvcDp2YXIoLS1zNyk7IG1hcmdpbi1ib3R0b206dmFyKC0tczcpOyB9IC5kMmNmb3JtIC5yYWRpby1pbmxpbmUgeyBkaXNwbGF5OmZsZXg7IHdpZHRoOjEwMCU7IH0gLmQyY2Zvcm0gLmNoZWNrYm94LWxpc3QgeyBkaXNwbGF5OmZsZXg7IGZsZXgtZGlyZWN0aW9uOmNvbHVtbjsgbWFyZ2luLWJvdHRvbTp2YXIoLS1zLTMpOyB9IC5kMmNmb3JtIC5jaGVja2JveC1saXN0ID4gKiB7IG1hcmdpbi1ib3R0b206MDsgfSAuZDJjZm9ybSAubXVsdGlwbGUtaW5wdXQgeyBkaXNwbGF5OmZsZXg7IHdpZHRoOjEwMCU7IH0gLmQyY2Zvcm0gLm11bHRpcGxlLWlucHV0ID4gKjpub3QoOmxhc3Qtb2YtdHlwZSkgeyBtYXJnaW4tcmlnaHQ6dmFyKC0tczEpOyB9IC5kMmNmb3JtIC5pbnB1dC1ncm91cCB7IGRpc3BsYXk6ZmxleDsgd2lkdGggOjEwMCU7IH0gLmQyY2Zvcm0gLmlucHV0LWdyb3VwIC5pbnB1dC1ncm91cC10ZXh0IHsgZGlzcGxheTpmbGV4OyBhbGlnbi1pdGVtczpjZW50ZXI7IHBhZGRpbmc6dmFyKC0taW5wdXQtcGFkZGluZyk7IGJhY2tncm91bmQ6dmFyKC0tbGlnaHQtZ3JheSk7IGJvcmRlcjoxcHggc29saWQgdmFyKC0taW5wdXQtYm9yZGVyLWNvbG9yKTsgYm9yZGVyLXJhZGl1czp2YXIoLS1pbnB1dC1yYWRpdXMpOyBmb250LXNpemU6dmFyKC0taW5wdXQtZm9udC1zaXplKTsgbGluZS1oZWlnaHQ6dmFyKC0taW5wdXQtbGluZS1oZWlnaHQpOyB3aGl0ZS1zcGFjZTpub3dyYXA7IH0gLmQyY2Zvcm0gLmlucHV0LWdyb3VwID4gOm5vdCg6Zmlyc3QtY2hpbGQpIHsgYm9yZGVyLWxlZnQ6MDsgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czowICFpbXBvcnRhbnQ7IGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6MCAhaW1wb3J0YW50OyB9IC5kMmNmb3JtIC5pbnB1dC1ncm91cCA+IDpub3QoOmxhc3QtY2hpbGQpIHsgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6MCAhaW1wb3J0YW50OyBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czowICFpbXBvcnRhbnQ7IH0gQG1lZGlhIChtYXgtd2lkdGg6OTgwcHgpIHsgLmQyY2Zvcm0tLWhvcml6b250YWwgYm94LWxjIGxhYmVsIHsgbWluLXdpZHRoOjg1cHg7IH0gfQovKiogL2Nzcy9mb3Jtcy9mb3Jtcy5jc3MgKiovCi5kMmNmb3JtIGlucHV0Om5vdChbdHlwZT1zdWJtaXRdKTpub3QoW3R5cGU9InJhZGlvIl0pOm5vdChbdHlwZT0iY2hlY2tib3giXSksIC5kMmNmb3JtIHNlbGVjdCwgLmQyY2Zvcm0gdGV4dGFyZWEgeyB0cmFuc2l0aW9uOmJvcmRlci1jb2xvciAuMTVzIGVhc2UtaW4tb3V0LGJveC1zaGFkb3cgLjE1cyBlYXNlLWluLW91dDsgfSAuZDJjZm9ybSBpbnB1dDpub3QoW3R5cGU9c3VibWl0XSk6bm90KFt0eXBlPSJyYWRpbyJdKTpub3QoW3R5cGU9ImNoZWNrYm94Il0pOmZvY3VzLCAuZDJjZm9ybSBzZWxlY3Q6Zm9jdXMsIC5kMmNmb3JtIHRleHRhcmVhOmZvY3VzIHsgYm9yZGVyLWNvbG9yOiM4NmI3ZmU7IG91dGxpbmU6MDsgYm94LXNoYWRvdzowIDAgMCAwLjJyZW0gcmdiKDEzIDExMCAyNTMgLyAyNSUpOyB9IC5kMmNmb3JtIC5pbnB1dC1ncm91cCBpbnB1dDpub3QoW3R5cGU9c3VibWl0XSk6bm90KFt0eXBlPSJyYWRpbyJdKTpub3QoW3R5cGU9ImNoZWNrYm94Il0pOmZvY3VzLCAuZDJjZm9ybSAuaW5wdXQtZ3JvdXAgc2VsZWN0OmZvY3VzLCAuZDJjZm9ybSAuaW5wdXQtZ3JvdXAgdGV4dGFyZWE6Zm9jdXMgeyB6LWluZGV4OjM7IH0gLmQyY2Zvcm0gaW5wdXQudmFsaWRpdHktZXJyb25lb3VzLCAuZDJjZm9ybSBzZWxlY3QudmFsaWRpdHktZXJyb25lb3VzLCAuZDJjZm9ybSB0ZXh0YXJlYS52YWxpZGl0eS1lcnJvbmVvdXMsIC5kMmNmb3JtIC5pbnB1dC1ncm91cCAudmFsaWRpdHktZXJyb25lb3VzICsgLmlucHV0LWdyb3VwLXRleHQgeyBib3JkZXItY29sb3I6I2RjMzU0NSAhaW1wb3J0YW50OyBiYWNrZ3JvdW5kLWNvbG9yOiNmYWQ2ZGMgIWltcG9ydGFudDsgfSAuZDJjZm9ybSBpbnB1dC52YWxpZGl0eS1lcnJvbmVvdXM6OnBsYWNlaG9sZGVyLCAuZDJjZm9ybSB0ZXh0YXJlYS52YWxpZGl0eS1lcnJvbmVvdXM6OnBsYWNlaG9sZGVyLCAuZDJjZm9ybSBzZWxlY3QudmFsaWRpdHktZXJyb25lb3VzLCAuZDJjZm9ybSAuaW5wdXQtZ3JvdXAgLnZhbGlkaXR5LWVycm9uZW91cyArIC5pbnB1dC1ncm91cC10ZXh0IHsgY29sb3I6I2RjMzU0NTsgfQovKiogL2Nzcy92Mi9tb2RhbC5jc3MgKiovCi5tb2RhbC13cmFwcGVyIHsgcG9zaXRpb246Zml4ZWQ7IHRvcDoxNTAlOyBsZWZ0OjUwJTsgdHJhbnNmb3JtOnRyYW5zbGF0ZSgtNTAlLCAtNTAlKTsgei1pbmRleDoxNjAwMTsgdHJhbnNpdGlvbjp0b3AgMTUwbXMgZWFzZS1pbjsgfSAubW9kYWwtd3JhcHBlci5pcy1hY3RpdmV7IHRvcDo1MCU7IH0gLm1vZGFsLXdyYXBwZXIgLm1vZGFsLWJvZHl7IG1pbi13aWR0aDoyMHJlbTsgbWF4LXdpZHRoOjEwMCU7IG1heC1oZWlnaHQ6ODV2aDsgb3ZlcmZsb3cteTphdXRvOyB9IC5tb2RhbC1vdmVybGF5eyBwb3NpdGlvbjpmaXhlZDsgdG9wOjA7IGxlZnQ6MDsgd2lkdGg6MTAwdnc7IGhlaWdodDoxMDB2aDsgYmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLDAuNSk7IHotaW5kZXg6MTAwMDA7IH0gLmxvYWRpbmctb3ZlcmxheXsgcG9zaXRpb246YWJzb2x1dGU7IHdpZHRoOjEwMCU7IGhlaWdodDoxMDAlOyB0b3A6MDsgbGVmdDowOyBiYWNrZ3JvdW5kLWltYWdlOnVybCgvaW1hZ2VzL2FqYXgtbG9hZGVyLmdpZik7IGJhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDsgYmFja2dyb3VuZC1wb3NpdGlvbjpjZW50ZXI7IH0gLm1vZGFsLXdyYXBwZXIgOmlzKGlucHV0W3R5cGU9InRleHQiXSxpbnB1dFt0eXBlPSJlbWFpbCJdLGlucHV0W3R5cGU9InRlbCJdKXsgcGFkZGluZzowLjRyZW07IGJvcmRlcjoxcHggc29saWQgdmFyKC0tbWlkLWdyYXkpOyBib3JkZXItcmFkaXVzOjAuM3JlbTsgfSAubW9kYWwtYm9keSAuaWZyYW1lLXdyYXBwZXJ7IHdpZHRoOm1heCg5MHZ3LCAyMC41cmVtKTsgaGVpZ2h0Om1heCg4NHZoLCAzMHJlbSk7IHdpZHRoOmNsYW1wKDIwLjVyZW0sIG1heCg5MHZ3LCAyMC41cmVtKSwgNjByZW0pOyBoZWlnaHQ6Y2xhbXAoMzByZW0sIG1heCg4NHZoLCAzMHJlbSksIDYwcmVtKTsgfSAubW9kYWwtYm9keSAuaWZyYW1lLXdyYXBwZXIgaWZyYW1leyB3aWR0aDoxMDAlOyBoZWlnaHQ6MTAwJTsgfQovKiogL2Nzcy92Mi9mbGF0cGlja3IubWluLmNzcyAqKi8KLmZsYXRwaWNrci1jYWxlbmRhcntiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O29wYWNpdHk6MDtkaXNwbGF5Om5vbmU7dGV4dC1hbGlnbjpjZW50ZXI7dmlzaWJpbGl0eTpoaWRkZW47cGFkZGluZzowOy13ZWJraXQtYW5pbWF0aW9uOm5vbmU7YW5pbWF0aW9uOm5vbmU7ZGlyZWN0aW9uOmx0cjtib3JkZXI6MDtmb250LXNpemU6MC44NzVyZW0gO2xpbmUtaGVpZ2h0OjI0cHg7Ym9yZGVyLXJhZGl1czo1cHg7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MzA3Ljg3NXB4Oy13ZWJraXQtYm94LXNpemluZzpib3JkZXItYm94O2JveC1zaXppbmc6Ym9yZGVyLWJveDstbXMtdG91Y2gtYWN0aW9uOm1hbmlwdWxhdGlvbjt0b3VjaC1hY3Rpb246bWFuaXB1bGF0aW9uO2JhY2tncm91bmQ6I2ZmZjstd2Via2l0LWJveC1zaGFkb3c6MXB4IDAgMCAjZTZlNmU2LC0xcHggMCAwICNlNmU2ZTYsMCAxcHggMCAjZTZlNmU2LDAgLTFweCAwICNlNmU2ZTYsMCAzcHggMTNweCByZ2JhKDAsMCwwLDAuMDgpO2JveC1zaGFkb3c6MXB4IDAgMCAjZTZlNmU2LC0xcHggMCAwICNlNmU2ZTYsMCAxcHggMCAjZTZlNmU2LDAgLTFweCAwICNlNmU2ZTYsMCAzcHggMTNweCByZ2JhKDAsMCwwLDAuMDgpfS5mbGF0cGlja3ItY2FsZW5kYXIub3BlbiwuZmxhdHBpY2tyLWNhbGVuZGFyLmlubGluZXtvcGFjaXR5OjE7bWF4LWhlaWdodDo2NDBweDt2aXNpYmlsaXR5OnZpc2libGV9LmZsYXRwaWNrci1jYWxlbmRhci5vcGVue2Rpc3BsYXk6aW5saW5lLWJsb2NrO3otaW5kZXg6OTk5OTl9LmZsYXRwaWNrci1jYWxlbmRhci5hbmltYXRlLm9wZW57LXdlYmtpdC1hbmltYXRpb246ZnBGYWRlSW5Eb3duIDMwMG1zIGN1YmljLWJlemllciguMjMsMSwuMzIsMSk7YW5pbWF0aW9uOmZwRmFkZUluRG93biAzMDBtcyBjdWJpYy1iZXppZXIoLjIzLDEsLjMyLDEpfS5mbGF0cGlja3ItY2FsZW5kYXIuaW5saW5le2Rpc3BsYXk6YmxvY2s7cG9zaXRpb246cmVsYXRpdmU7dG9wOjJweH0uZmxhdHBpY2tyLWNhbGVuZGFyLnN0YXRpY3twb3NpdGlvbjphYnNvbHV0ZTt0b3A6Y2FsYygxMDAlICsgMnB4KX0uZmxhdHBpY2tyLWNhbGVuZGFyLnN0YXRpYy5vcGVue3otaW5kZXg6OTk5O2Rpc3BsYXk6YmxvY2t9LmZsYXRwaWNrci1jYWxlbmRhci5tdWx0aU1vbnRoIC5mbGF0cGlja3ItZGF5cyAuZGF5Q29udGFpbmVyOm50aC1jaGlsZChuKzEpIC5mbGF0cGlja3ItZGF5LmluUmFuZ2U6bnRoLWNoaWxkKDduKzcpey13ZWJraXQtYm94LXNoYWRvdzpub25lICFpbXBvcnRhbnQ7Ym94LXNoYWRvdzpub25lICFpbXBvcnRhbnR9LmZsYXRwaWNrci1jYWxlbmRhci5tdWx0aU1vbnRoIC5mbGF0cGlja3ItZGF5cyAuZGF5Q29udGFpbmVyOm50aC1jaGlsZChuKzIpIC5mbGF0cGlja3ItZGF5LmluUmFuZ2U6bnRoLWNoaWxkKDduKzEpey13ZWJraXQtYm94LXNoYWRvdzotMnB4IDAgMCAjZTZlNmU2LDVweCAwIDAgI2U2ZTZlNjtib3gtc2hhZG93Oi0ycHggMCAwICNlNmU2ZTYsNXB4IDAgMCAjZTZlNmU2fS5mbGF0cGlja3ItY2FsZW5kYXIgLmhhc1dlZWtzIC5kYXlDb250YWluZXIsLmZsYXRwaWNrci1jYWxlbmRhciAuaGFzVGltZSAuZGF5Q29udGFpbmVye2JvcmRlci1ib3R0b206MDtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czowO2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6MH0uZmxhdHBpY2tyLWNhbGVuZGFyIC5oYXNXZWVrcyAuZGF5Q29udGFpbmVye2JvcmRlci1sZWZ0OjB9LmZsYXRwaWNrci1jYWxlbmRhci5oYXNUaW1lIC5mbGF0cGlja3ItdGltZXtoZWlnaHQ6NDBweDtib3JkZXItdG9wOjFweCBzb2xpZCAjZTZlNmU2fS5mbGF0cGlja3ItY2FsZW5kYXIubm9DYWxlbmRhci5oYXNUaW1lIC5mbGF0cGlja3ItdGltZXtoZWlnaHQ6YXV0b30uZmxhdHBpY2tyLWNhbGVuZGFyOmJlZm9yZSwuZmxhdHBpY2tyLWNhbGVuZGFyOmFmdGVye3Bvc2l0aW9uOmFic29sdXRlO2Rpc3BsYXk6YmxvY2s7cG9pbnRlci1ldmVudHM6bm9uZTtib3JkZXI6c29saWQgdHJhbnNwYXJlbnQ7Y29udGVudDonJztoZWlnaHQ6MDt3aWR0aDowO2xlZnQ6MjJweH0uZmxhdHBpY2tyLWNhbGVuZGFyLnJpZ2h0TW9zdDpiZWZvcmUsLmZsYXRwaWNrci1jYWxlbmRhci5hcnJvd1JpZ2h0OmJlZm9yZSwuZmxhdHBpY2tyLWNhbGVuZGFyLnJpZ2h0TW9zdDphZnRlciwuZmxhdHBpY2tyLWNhbGVuZGFyLmFycm93UmlnaHQ6YWZ0ZXJ7bGVmdDphdXRvO3JpZ2h0OjIycHh9LmZsYXRwaWNrci1jYWxlbmRhci5hcnJvd0NlbnRlcjpiZWZvcmUsLmZsYXRwaWNrci1jYWxlbmRhci5hcnJvd0NlbnRlcjphZnRlcntsZWZ0OjUwJTtyaWdodDo1MCV9LmZsYXRwaWNrci1jYWxlbmRhcjpiZWZvcmV7Ym9yZGVyLXdpZHRoOjVweDttYXJnaW46MCAtNXB4fS5mbGF0cGlja3ItY2FsZW5kYXI6YWZ0ZXJ7Ym9yZGVyLXdpZHRoOjRweDttYXJnaW46MCAtNHB4fS5mbGF0cGlja3ItY2FsZW5kYXIuYXJyb3dUb3A6YmVmb3JlLC5mbGF0cGlja3ItY2FsZW5kYXIuYXJyb3dUb3A6YWZ0ZXJ7Ym90dG9tOjEwMCV9LmZsYXRwaWNrci1jYWxlbmRhci5hcnJvd1RvcDpiZWZvcmV7Ym9yZGVyLWJvdHRvbS1jb2xvcjojZTZlNmU2fS5mbGF0cGlja3ItY2FsZW5kYXIuYXJyb3dUb3A6YWZ0ZXJ7Ym9yZGVyLWJvdHRvbS1jb2xvcjojZmZmfS5mbGF0cGlja3ItY2FsZW5kYXIuYXJyb3dCb3R0b206YmVmb3JlLC5mbGF0cGlja3ItY2FsZW5kYXIuYXJyb3dCb3R0b206YWZ0ZXJ7dG9wOjEwMCV9LmZsYXRwaWNrci1jYWxlbmRhci5hcnJvd0JvdHRvbTpiZWZvcmV7Ym9yZGVyLXRvcC1jb2xvcjojZTZlNmU2fS5mbGF0cGlja3ItY2FsZW5kYXIuYXJyb3dCb3R0b206YWZ0ZXJ7Ym9yZGVyLXRvcC1jb2xvcjojZmZmfS5mbGF0cGlja3ItY2FsZW5kYXI6Zm9jdXN7b3V0bGluZTowfS5mbGF0cGlja3Itd3JhcHBlcntwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5OmlubGluZS1ibG9ja30uZmxhdHBpY2tyLW1vbnRoc3tkaXNwbGF5Oi13ZWJraXQtYm94O2Rpc3BsYXk6LXdlYmtpdC1mbGV4O2Rpc3BsYXk6LW1zLWZsZXhib3g7ZGlzcGxheTpmbGV4fS5mbGF0cGlja3ItbW9udGhzIC5mbGF0cGlja3ItbW9udGh7YmFja2dyb3VuZDp0cmFuc3BhcmVudDtjb2xvcjpyZ2JhKDAsMCwwLDAuOSk7ZmlsbDpyZ2JhKDAsMCwwLDAuOSk7aGVpZ2h0OjM0cHg7bGluZS1oZWlnaHQ6MTt0ZXh0LWFsaWduOmNlbnRlcjtwb3NpdGlvbjpyZWxhdGl2ZTstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7LW1vei11c2VyLXNlbGVjdDpub25lOy1tcy11c2VyLXNlbGVjdDpub25lO3VzZXItc2VsZWN0Om5vbmU7b3ZlcmZsb3c6aGlkZGVuOy13ZWJraXQtYm94LWZsZXg6MTstd2Via2l0LWZsZXg6MTstbXMtZmxleDoxO2ZsZXg6MX0uZmxhdHBpY2tyLW1vbnRocyAuZmxhdHBpY2tyLXByZXYtbW9udGgsLmZsYXRwaWNrci1tb250aHMgLmZsYXRwaWNrci1uZXh0LW1vbnRoe3RleHQtZGVjb3JhdGlvbjpub25lO2N1cnNvcjpwb2ludGVyO3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2hlaWdodDozNHB4O3BhZGRpbmc6MTBweDt6LWluZGV4OjM7Y29sb3I6cmdiYSgwLDAsMCwwLjkpO2ZpbGw6cmdiYSgwLDAsMCwwLjkpfS5mbGF0cGlja3ItbW9udGhzIC5mbGF0cGlja3ItcHJldi1tb250aC5mbGF0cGlja3ItZGlzYWJsZWQsLmZsYXRwaWNrci1tb250aHMgLmZsYXRwaWNrci1uZXh0LW1vbnRoLmZsYXRwaWNrci1kaXNhYmxlZHtkaXNwbGF5Om5vbmV9LmZsYXRwaWNrci1tb250aHMgLmZsYXRwaWNrci1wcmV2LW1vbnRoIGksLmZsYXRwaWNrci1tb250aHMgLmZsYXRwaWNrci1uZXh0LW1vbnRoIGl7cG9zaXRpb246cmVsYXRpdmV9LmZsYXRwaWNrci1tb250aHMgLmZsYXRwaWNrci1wcmV2LW1vbnRoLmZsYXRwaWNrci1wcmV2LW1vbnRoLC5mbGF0cGlja3ItbW9udGhzIC5mbGF0cGlja3ItbmV4dC1tb250aC5mbGF0cGlja3ItcHJldi1tb250aHtsZWZ0OjB9IC5mbGF0cGlja3ItbW9udGhzIC5mbGF0cGlja3ItcHJldi1tb250aC5mbGF0cGlja3ItbmV4dC1tb250aCwuZmxhdHBpY2tyLW1vbnRocyAuZmxhdHBpY2tyLW5leHQtbW9udGguZmxhdHBpY2tyLW5leHQtbW9udGh7cmlnaHQ6MH0gLmZsYXRwaWNrci1tb250aHMgLmZsYXRwaWNrci1wcmV2LW1vbnRoOmhvdmVyLC5mbGF0cGlja3ItbW9udGhzIC5mbGF0cGlja3ItbmV4dC1tb250aDpob3Zlcntjb2xvcjojOTU5ZWE5fS5mbGF0cGlja3ItbW9udGhzIC5mbGF0cGlja3ItcHJldi1tb250aDpob3ZlciBzdmcsLmZsYXRwaWNrci1tb250aHMgLmZsYXRwaWNrci1uZXh0LW1vbnRoOmhvdmVyIHN2Z3tmaWxsOiNmNjQ3NDd9LmZsYXRwaWNrci1tb250aHMgLmZsYXRwaWNrci1wcmV2LW1vbnRoIHN2ZywuZmxhdHBpY2tyLW1vbnRocyAuZmxhdHBpY2tyLW5leHQtbW9udGggc3Zne3dpZHRoOjE0cHg7aGVpZ2h0OjE0cHh9LmZsYXRwaWNrci1tb250aHMgLmZsYXRwaWNrci1wcmV2LW1vbnRoIHN2ZyBwYXRoLC5mbGF0cGlja3ItbW9udGhzIC5mbGF0cGlja3ItbmV4dC1tb250aCBzdmcgcGF0aHstd2Via2l0LXRyYW5zaXRpb246ZmlsbCAuMXM7dHJhbnNpdGlvbjpmaWxsIC4xcztmaWxsOmluaGVyaXR9Lm51bUlucHV0V3JhcHBlcntwb3NpdGlvbjpyZWxhdGl2ZTtoZWlnaHQ6YXV0b30ubnVtSW5wdXRXcmFwcGVyIGlucHV0LC5udW1JbnB1dFdyYXBwZXIgc3BhbntkaXNwbGF5OmlubGluZS1ibG9ja30ubnVtSW5wdXRXcmFwcGVyIGlucHV0e3dpZHRoOjEwMCV9Lm51bUlucHV0V3JhcHBlciBpbnB1dDo6LW1zLWNsZWFye2Rpc3BsYXk6bm9uZX0ubnVtSW5wdXRXcmFwcGVyIGlucHV0Ojotd2Via2l0LW91dGVyLXNwaW4tYnV0dG9uLC5udW1JbnB1dFdyYXBwZXIgaW5wdXQ6Oi13ZWJraXQtaW5uZXItc3Bpbi1idXR0b257bWFyZ2luOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmV9Lm51bUlucHV0V3JhcHBlciBzcGFue3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0OjA7d2lkdGg6MTRweDtwYWRkaW5nOjAgNHB4IDAgMnB4O2hlaWdodDo1MCU7bGluZS1oZWlnaHQ6NTAlO29wYWNpdHk6MDtjdXJzb3I6cG9pbnRlcjtib3JkZXI6MXB4IHNvbGlkIHJnYmEoNTcsNTcsNTcsMC4xNSk7LXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7Ym94LXNpemluZzpib3JkZXItYm94fS5udW1JbnB1dFdyYXBwZXIgc3Bhbjpob3ZlcntiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsMC4xKX0ubnVtSW5wdXRXcmFwcGVyIHNwYW46YWN0aXZle2JhY2tncm91bmQ6cmdiYSgwLDAsMCwwLjIpfS5udW1JbnB1dFdyYXBwZXIgc3BhbjphZnRlcntkaXNwbGF5OmJsb2NrO2NvbnRlbnQ6IiI7cG9zaXRpb246YWJzb2x1dGV9Lm51bUlucHV0V3JhcHBlciBzcGFuLmFycm93VXB7dG9wOjA7Ym9yZGVyLWJvdHRvbTowfS5udW1JbnB1dFdyYXBwZXIgc3Bhbi5hcnJvd1VwOmFmdGVye2JvcmRlci1sZWZ0OjRweCBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItcmlnaHQ6NHB4IHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1ib3R0b206NHB4IHNvbGlkIHJnYmEoNTcsNTcsNTcsMC42KTt0b3A6MjYlfS5udW1JbnB1dFdyYXBwZXIgc3Bhbi5hcnJvd0Rvd257dG9wOjUwJX0ubnVtSW5wdXRXcmFwcGVyIHNwYW4uYXJyb3dEb3duOmFmdGVye2JvcmRlci1sZWZ0OjRweCBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItcmlnaHQ6NHB4IHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci10b3A6NHB4IHNvbGlkIHJnYmEoNTcsNTcsNTcsMC42KTt0b3A6NDAlfS5udW1JbnB1dFdyYXBwZXIgc3BhbiBzdmd7d2lkdGg6aW5oZXJpdDtoZWlnaHQ6YXV0b30ubnVtSW5wdXRXcmFwcGVyIHNwYW4gc3ZnIHBhdGh7ZmlsbDpyZ2JhKDAsMCwwLDAuNSl9Lm51bUlucHV0V3JhcHBlcjpob3ZlcntiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsMC4wNSl9Lm51bUlucHV0V3JhcHBlcjpob3ZlciBzcGFue29wYWNpdHk6MX0uZmxhdHBpY2tyLWN1cnJlbnQtbW9udGh7Zm9udC1zaXplOjEzNSU7bGluZS1oZWlnaHQ6aW5oZXJpdDtmb250LXdlaWdodDozMDA7Y29sb3I6aW5oZXJpdDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDo3NSU7bGVmdDoxMi41JTtwYWRkaW5nOjcuNDhweCAwIDAgMDtsaW5lLWhlaWdodDoxO2hlaWdodDozNHB4O2Rpc3BsYXk6aW5saW5lLWJsb2NrO3RleHQtYWxpZ246Y2VudGVyOy13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsMCwwKTt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwwLDApfS5mbGF0cGlja3ItY3VycmVudC1tb250aCBzcGFuLmN1ci1tb250aHtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtd2VpZ2h0OjcwMDtjb2xvcjppbmhlcml0O2Rpc3BsYXk6aW5saW5lLWJsb2NrO21hcmdpbi1sZWZ0Oi41Y2g7cGFkZGluZzowfS5mbGF0cGlja3ItY3VycmVudC1tb250aCBzcGFuLmN1ci1tb250aDpob3ZlcntiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsMC4wNSl9LmZsYXRwaWNrci1jdXJyZW50LW1vbnRoIC5udW1JbnB1dFdyYXBwZXJ7d2lkdGg6NmNoO3dpZHRoOjdjaFwwO2Rpc3BsYXk6aW5saW5lLWJsb2NrfS5mbGF0cGlja3ItY3VycmVudC1tb250aCAubnVtSW5wdXRXcmFwcGVyIHNwYW4uYXJyb3dVcDphZnRlcntib3JkZXItYm90dG9tLWNvbG9yOnJnYmEoMCwwLDAsMC45KX0uZmxhdHBpY2tyLWN1cnJlbnQtbW9udGggLm51bUlucHV0V3JhcHBlciBzcGFuLmFycm93RG93bjphZnRlcntib3JkZXItdG9wLWNvbG9yOnJnYmEoMCwwLDAsMC45KX0uZmxhdHBpY2tyLWN1cnJlbnQtbW9udGggaW5wdXQuY3VyLXllYXJ7YmFja2dyb3VuZDp0cmFuc3BhcmVudDstd2Via2l0LWJveC1zaXppbmc6Ym9yZGVyLWJveDtib3gtc2l6aW5nOmJvcmRlci1ib3g7Y29sb3I6aW5oZXJpdDtjdXJzb3I6dGV4dDtwYWRkaW5nOjAgMCAwIC41Y2g7bWFyZ2luOjA7ZGlzcGxheTppbmxpbmUtYmxvY2s7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXdlaWdodDozMDA7bGluZS1oZWlnaHQ6aW5oZXJpdDtoZWlnaHQ6YXV0bztib3JkZXI6MDtib3JkZXItcmFkaXVzOjA7dmVydGljYWwtYWxpZ246aW5pdGlhbDstd2Via2l0LWFwcGVhcmFuY2U6dGV4dGZpZWxkOy1tb3otYXBwZWFyYW5jZTp0ZXh0ZmllbGQ7YXBwZWFyYW5jZTp0ZXh0ZmllbGR9LmZsYXRwaWNrci1jdXJyZW50LW1vbnRoIGlucHV0LmN1ci15ZWFyOmZvY3Vze291dGxpbmU6MH0uZmxhdHBpY2tyLWN1cnJlbnQtbW9udGggaW5wdXQuY3VyLXllYXJbZGlzYWJsZWRdLC5mbGF0cGlja3ItY3VycmVudC1tb250aCBpbnB1dC5jdXIteWVhcltkaXNhYmxlZF06aG92ZXJ7Zm9udC1zaXplOjEwMCU7Y29sb3I6cmdiYSgwLDAsMCwwLjUpO2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7cG9pbnRlci1ldmVudHM6bm9uZX0uZmxhdHBpY2tyLWN1cnJlbnQtbW9udGggLmZsYXRwaWNrci1tb250aERyb3Bkb3duLW1vbnRoc3thcHBlYXJhbmNlOm1lbnVsaXN0O2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7Ym9yZGVyOm5vbmU7Ym9yZGVyLXJhZGl1czowO2JveC1zaXppbmc6Ym9yZGVyLWJveDtjb2xvcjppbmhlcml0O2N1cnNvcjpwb2ludGVyO2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC13ZWlnaHQ6MzAwO2hlaWdodDphdXRvO2xpbmUtaGVpZ2h0OmluaGVyaXQ7bWFyZ2luOi0xcHggMCAwIDA7b3V0bGluZTpub25lO3BhZGRpbmc6MCAwIDAgLjVjaDtwb3NpdGlvbjpyZWxhdGl2ZTt2ZXJ0aWNhbC1hbGlnbjppbml0aWFsOy13ZWJraXQtYm94LXNpemluZzpib3JkZXItYm94Oy13ZWJraXQtYXBwZWFyYW5jZTptZW51bGlzdDstbW96LWFwcGVhcmFuY2U6bWVudWxpc3Q7d2lkdGg6YXV0b30uZmxhdHBpY2tyLWN1cnJlbnQtbW9udGggLmZsYXRwaWNrci1tb250aERyb3Bkb3duLW1vbnRoczpmb2N1cywuZmxhdHBpY2tyLWN1cnJlbnQtbW9udGggLmZsYXRwaWNrci1tb250aERyb3Bkb3duLW1vbnRoczphY3RpdmV7b3V0bGluZTpub25lfS5mbGF0cGlja3ItY3VycmVudC1tb250aCAuZmxhdHBpY2tyLW1vbnRoRHJvcGRvd24tbW9udGhzOmhvdmVye2JhY2tncm91bmQ6cmdiYSgwLDAsMCwwLjA1KX0uZmxhdHBpY2tyLWN1cnJlbnQtbW9udGggLmZsYXRwaWNrci1tb250aERyb3Bkb3duLW1vbnRocyAuZmxhdHBpY2tyLW1vbnRoRHJvcGRvd24tbW9udGh7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtvdXRsaW5lOm5vbmU7cGFkZGluZzowfS5mbGF0cGlja3Itd2Vla2RheXN7YmFja2dyb3VuZDp0cmFuc3BhcmVudDt0ZXh0LWFsaWduOmNlbnRlcjtvdmVyZmxvdzpoaWRkZW47d2lkdGg6MTAwJTtkaXNwbGF5Oi13ZWJraXQtYm94O2Rpc3BsYXk6LXdlYmtpdC1mbGV4O2Rpc3BsYXk6LW1zLWZsZXhib3g7ZGlzcGxheTpmbGV4Oy13ZWJraXQtYm94LWFsaWduOmNlbnRlcjstd2Via2l0LWFsaWduLWl0ZW1zOmNlbnRlcjstbXMtZmxleC1hbGlnbjpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyO2hlaWdodDoyOHB4fS5mbGF0cGlja3Itd2Vla2RheXMgLmZsYXRwaWNrci13ZWVrZGF5Y29udGFpbmVye2Rpc3BsYXk6LXdlYmtpdC1ib3g7ZGlzcGxheTotd2Via2l0LWZsZXg7ZGlzcGxheTotbXMtZmxleGJveDtkaXNwbGF5OmZsZXg7LXdlYmtpdC1ib3gtZmxleDoxOy13ZWJraXQtZmxleDoxOy1tcy1mbGV4OjE7ZmxleDoxfXNwYW4uZmxhdHBpY2tyLXdlZWtkYXl7Y3Vyc29yOmRlZmF1bHQ7Zm9udC1zaXplOjkwJTtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O2NvbG9yOnJnYmEoMCwwLDAsMC41NCk7bGluZS1oZWlnaHQ6MTttYXJnaW46MDt0ZXh0LWFsaWduOmNlbnRlcjtkaXNwbGF5OmJsb2NrOy13ZWJraXQtYm94LWZsZXg6MTstd2Via2l0LWZsZXg6MTstbXMtZmxleDoxO2ZsZXg6MTtmb250LXdlaWdodDpib2xkZXJ9LmRheUNvbnRhaW5lciwuZmxhdHBpY2tyLXdlZWtze3BhZGRpbmc6MXB4IDAgMCAwfS5mbGF0cGlja3ItZGF5c3twb3NpdGlvbjpyZWxhdGl2ZTtvdmVyZmxvdzpoaWRkZW47ZGlzcGxheTotd2Via2l0LWJveDtkaXNwbGF5Oi13ZWJraXQtZmxleDtkaXNwbGF5Oi1tcy1mbGV4Ym94O2Rpc3BsYXk6ZmxleDstd2Via2l0LWJveC1hbGlnbjpzdGFydDstd2Via2l0LWFsaWduLWl0ZW1zOmZsZXgtc3RhcnQ7LW1zLWZsZXgtYWxpZ246c3RhcnQ7YWxpZ24taXRlbXM6ZmxleC1zdGFydDt3aWR0aDozMDcuODc1cHh9LmZsYXRwaWNrci1kYXlzOmZvY3Vze291dGxpbmU6MH0uZGF5Q29udGFpbmVye3BhZGRpbmc6MDtvdXRsaW5lOjA7dGV4dC1hbGlnbjpsZWZ0O3dpZHRoOjMwNy44NzVweDttaW4td2lkdGg6MzA3Ljg3NXB4O21heC13aWR0aDozMDcuODc1cHg7LXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7Ym94LXNpemluZzpib3JkZXItYm94O2Rpc3BsYXk6aW5saW5lLWJsb2NrO2Rpc3BsYXk6LW1zLWZsZXhib3g7ZGlzcGxheTotd2Via2l0LWJveDtkaXNwbGF5Oi13ZWJraXQtZmxleDtkaXNwbGF5OmZsZXg7LXdlYmtpdC1mbGV4LXdyYXA6d3JhcDtmbGV4LXdyYXA6d3JhcDstbXMtZmxleC13cmFwOndyYXA7LW1zLWZsZXgtcGFjazpqdXN0aWZ5Oy13ZWJraXQtanVzdGlmeS1jb250ZW50OnNwYWNlLWFyb3VuZDtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYXJvdW5kOy13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsMCwwKTt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwwLDApO29wYWNpdHk6MX0uZGF5Q29udGFpbmVyICsgLmRheUNvbnRhaW5lcnstd2Via2l0LWJveC1zaGFkb3c6LTFweCAwIDAgI2U2ZTZlNjtib3gtc2hhZG93Oi0xcHggMCAwICNlNmU2ZTZ9LmZsYXRwaWNrci1kYXl7YmFja2dyb3VuZDpub25lO2JvcmRlcjoxcHggc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLXJhZGl1czoxNTBweDstd2Via2l0LWJveC1zaXppbmc6Ym9yZGVyLWJveDtib3gtc2l6aW5nOmJvcmRlci1ib3g7Y29sb3I6IzM5MzkzOTtjdXJzb3I6cG9pbnRlcjtmb250LXdlaWdodDo0MDA7d2lkdGg6MTQuMjg1NzE0MyU7LXdlYmtpdC1mbGV4LWJhc2lzOjE0LjI4NTcxNDMlOy1tcy1mbGV4LXByZWZlcnJlZC1zaXplOjE0LjI4NTcxNDMlO2ZsZXgtYmFzaXM6MTQuMjg1NzE0MyU7bWF4LXdpZHRoOjM5cHg7aGVpZ2h0OjM5cHg7bGluZS1oZWlnaHQ6MzlweDttYXJnaW46MDtkaXNwbGF5OmlubGluZS1ibG9jaztwb3NpdGlvbjpyZWxhdGl2ZTstd2Via2l0LWJveC1wYWNrOmNlbnRlcjstd2Via2l0LWp1c3RpZnktY29udGVudDpjZW50ZXI7LW1zLWZsZXgtcGFjazpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjt0ZXh0LWFsaWduOmNlbnRlcn0uZmxhdHBpY2tyLWRheS5pblJhbmdlLC5mbGF0cGlja3ItZGF5LnByZXZNb250aERheS5pblJhbmdlLC5mbGF0cGlja3ItZGF5Lm5leHRNb250aERheS5pblJhbmdlLC5mbGF0cGlja3ItZGF5LnRvZGF5LmluUmFuZ2UsLmZsYXRwaWNrci1kYXkucHJldk1vbnRoRGF5LnRvZGF5LmluUmFuZ2UsLmZsYXRwaWNrci1kYXkubmV4dE1vbnRoRGF5LnRvZGF5LmluUmFuZ2UsLmZsYXRwaWNrci1kYXk6aG92ZXIsLmZsYXRwaWNrci1kYXkucHJldk1vbnRoRGF5OmhvdmVyLC5mbGF0cGlja3ItZGF5Lm5leHRNb250aERheTpob3ZlciwuZmxhdHBpY2tyLWRheTpmb2N1cywuZmxhdHBpY2tyLWRheS5wcmV2TW9udGhEYXk6Zm9jdXMsLmZsYXRwaWNrci1kYXkubmV4dE1vbnRoRGF5OmZvY3Vze2N1cnNvcjpwb2ludGVyO291dGxpbmU6MDtiYWNrZ3JvdW5kOiNlNmU2ZTY7Ym9yZGVyLWNvbG9yOiNlNmU2ZTZ9LmZsYXRwaWNrci1kYXkudG9kYXl7Ym9yZGVyLWNvbG9yOiM5NTllYTl9LmZsYXRwaWNrci1kYXkudG9kYXk6aG92ZXIsLmZsYXRwaWNrci1kYXkudG9kYXk6Zm9jdXN7Ym9yZGVyLWNvbG9yOiM5NTllYTk7YmFja2dyb3VuZDojOTU5ZWE5O2NvbG9yOiNmZmZ9LmZsYXRwaWNrci1kYXkuc2VsZWN0ZWQsLmZsYXRwaWNrci1kYXkuc3RhcnRSYW5nZSwuZmxhdHBpY2tyLWRheS5lbmRSYW5nZSwuZmxhdHBpY2tyLWRheS5zZWxlY3RlZC5pblJhbmdlLC5mbGF0cGlja3ItZGF5LnN0YXJ0UmFuZ2UuaW5SYW5nZSwuZmxhdHBpY2tyLWRheS5lbmRSYW5nZS5pblJhbmdlLC5mbGF0cGlja3ItZGF5LnNlbGVjdGVkOmZvY3VzLC5mbGF0cGlja3ItZGF5LnN0YXJ0UmFuZ2U6Zm9jdXMsLmZsYXRwaWNrci1kYXkuZW5kUmFuZ2U6Zm9jdXMsLmZsYXRwaWNrci1kYXkuc2VsZWN0ZWQ6aG92ZXIsLmZsYXRwaWNrci1kYXkuc3RhcnRSYW5nZTpob3ZlciwuZmxhdHBpY2tyLWRheS5lbmRSYW5nZTpob3ZlciwuZmxhdHBpY2tyLWRheS5zZWxlY3RlZC5wcmV2TW9udGhEYXksLmZsYXRwaWNrci1kYXkuc3RhcnRSYW5nZS5wcmV2TW9udGhEYXksLmZsYXRwaWNrci1kYXkuZW5kUmFuZ2UucHJldk1vbnRoRGF5LC5mbGF0cGlja3ItZGF5LnNlbGVjdGVkLm5leHRNb250aERheSwuZmxhdHBpY2tyLWRheS5zdGFydFJhbmdlLm5leHRNb250aERheSwuZmxhdHBpY2tyLWRheS5lbmRSYW5nZS5uZXh0TW9udGhEYXl7YmFja2dyb3VuZDojNTY5ZmY3Oy13ZWJraXQtYm94LXNoYWRvdzpub25lO2JveC1zaGFkb3c6bm9uZTtjb2xvcjojZmZmO2JvcmRlci1jb2xvcjojNTY5ZmY3fS5mbGF0cGlja3ItZGF5LnNlbGVjdGVkLnN0YXJ0UmFuZ2UsLmZsYXRwaWNrci1kYXkuc3RhcnRSYW5nZS5zdGFydFJhbmdlLC5mbGF0cGlja3ItZGF5LmVuZFJhbmdlLnN0YXJ0UmFuZ2V7Ym9yZGVyLXJhZGl1czo1MHB4IDAgMCA1MHB4fS5mbGF0cGlja3ItZGF5LnNlbGVjdGVkLmVuZFJhbmdlLC5mbGF0cGlja3ItZGF5LnN0YXJ0UmFuZ2UuZW5kUmFuZ2UsLmZsYXRwaWNrci1kYXkuZW5kUmFuZ2UuZW5kUmFuZ2V7Ym9yZGVyLXJhZGl1czowIDUwcHggNTBweCAwfS5mbGF0cGlja3ItZGF5LnNlbGVjdGVkLnN0YXJ0UmFuZ2UgKyAuZW5kUmFuZ2U6bm90KDpudGgtY2hpbGQoN24rMSkpLC5mbGF0cGlja3ItZGF5LnN0YXJ0UmFuZ2Uuc3RhcnRSYW5nZSArIC5lbmRSYW5nZTpub3QoOm50aC1jaGlsZCg3bisxKSksLmZsYXRwaWNrci1kYXkuZW5kUmFuZ2Uuc3RhcnRSYW5nZSArIC5lbmRSYW5nZTpub3QoOm50aC1jaGlsZCg3bisxKSl7LXdlYmtpdC1ib3gtc2hhZG93Oi0xMHB4IDAgMCAjNTY5ZmY3O2JveC1zaGFkb3c6LTEwcHggMCAwICM1NjlmZjd9LmZsYXRwaWNrci1kYXkuc2VsZWN0ZWQuc3RhcnRSYW5nZS5lbmRSYW5nZSwuZmxhdHBpY2tyLWRheS5zdGFydFJhbmdlLnN0YXJ0UmFuZ2UuZW5kUmFuZ2UsLmZsYXRwaWNrci1kYXkuZW5kUmFuZ2Uuc3RhcnRSYW5nZS5lbmRSYW5nZXtib3JkZXItcmFkaXVzOjUwcHh9LmZsYXRwaWNrci1kYXkuaW5SYW5nZXtib3JkZXItcmFkaXVzOjA7LXdlYmtpdC1ib3gtc2hhZG93Oi01cHggMCAwICNlNmU2ZTYsNXB4IDAgMCAjZTZlNmU2O2JveC1zaGFkb3c6LTVweCAwIDAgI2U2ZTZlNiw1cHggMCAwICNlNmU2ZTZ9LmZsYXRwaWNrci1kYXkuZmxhdHBpY2tyLWRpc2FibGVkLC5mbGF0cGlja3ItZGF5LmZsYXRwaWNrci1kaXNhYmxlZDpob3ZlciwuZmxhdHBpY2tyLWRheS5wcmV2TW9udGhEYXksLmZsYXRwaWNrci1kYXkubmV4dE1vbnRoRGF5LC5mbGF0cGlja3ItZGF5Lm5vdEFsbG93ZWQsLmZsYXRwaWNrci1kYXkubm90QWxsb3dlZC5wcmV2TW9udGhEYXksLmZsYXRwaWNrci1kYXkubm90QWxsb3dlZC5uZXh0TW9udGhEYXl7Y29sb3I6cmdiYSg1Nyw1Nyw1NywwLjMpO2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7Ym9yZGVyLWNvbG9yOnRyYW5zcGFyZW50O2N1cnNvcjpkZWZhdWx0fS5mbGF0cGlja3ItZGF5LmZsYXRwaWNrci1kaXNhYmxlZCwuZmxhdHBpY2tyLWRheS5mbGF0cGlja3ItZGlzYWJsZWQ6aG92ZXJ7Y3Vyc29yOm5vdC1hbGxvd2VkO2NvbG9yOnJnYmEoNTcsNTcsNTcsMC4xKX0uZmxhdHBpY2tyLWRheS53ZWVrLnNlbGVjdGVke2JvcmRlci1yYWRpdXM6MDstd2Via2l0LWJveC1zaGFkb3c6LTVweCAwIDAgIzU2OWZmNyw1cHggMCAwICM1NjlmZjc7Ym94LXNoYWRvdzotNXB4IDAgMCAjNTY5ZmY3LDVweCAwIDAgIzU2OWZmN30uZmxhdHBpY2tyLWRheS5oaWRkZW57dmlzaWJpbGl0eTpoaWRkZW59LnJhbmdlTW9kZSAuZmxhdHBpY2tyLWRheXttYXJnaW4tdG9wOjFweH0uZmxhdHBpY2tyLXdlZWt3cmFwcGVye2Zsb2F0OmxlZnR9LmZsYXRwaWNrci13ZWVrd3JhcHBlciAuZmxhdHBpY2tyLXdlZWtze3BhZGRpbmc6MCAxMnB4Oy13ZWJraXQtYm94LXNoYWRvdzoxcHggMCAwICNlNmU2ZTY7Ym94LXNoYWRvdzoxcHggMCAwICNlNmU2ZTZ9LmZsYXRwaWNrci13ZWVrd3JhcHBlciAuZmxhdHBpY2tyLXdlZWtkYXl7ZmxvYXQ6bm9uZTt3aWR0aDoxMDAlO2xpbmUtaGVpZ2h0OjI4cHh9LmZsYXRwaWNrci13ZWVrd3JhcHBlciBzcGFuLmZsYXRwaWNrci1kYXksLmZsYXRwaWNrci13ZWVrd3JhcHBlciBzcGFuLmZsYXRwaWNrci1kYXk6aG92ZXJ7ZGlzcGxheTpibG9jazt3aWR0aDoxMDAlO21heC13aWR0aDpub25lO2NvbG9yOnJnYmEoNTcsNTcsNTcsMC4zKTtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O2N1cnNvcjpkZWZhdWx0O2JvcmRlcjpub25lfS5mbGF0cGlja3ItaW5uZXJDb250YWluZXJ7ZGlzcGxheTpibG9jaztkaXNwbGF5Oi13ZWJraXQtYm94O2Rpc3BsYXk6LXdlYmtpdC1mbGV4O2Rpc3BsYXk6LW1zLWZsZXhib3g7ZGlzcGxheTpmbGV4Oy13ZWJraXQtYm94LXNpemluZzpib3JkZXItYm94O2JveC1zaXppbmc6Ym9yZGVyLWJveDtvdmVyZmxvdzpoaWRkZW59LmZsYXRwaWNrci1yQ29udGFpbmVye2Rpc3BsYXk6aW5saW5lLWJsb2NrO3BhZGRpbmc6MDstd2Via2l0LWJveC1zaXppbmc6Ym9yZGVyLWJveDtib3gtc2l6aW5nOmJvcmRlci1ib3h9LmZsYXRwaWNrci10aW1le3RleHQtYWxpZ246Y2VudGVyO291dGxpbmU6MDtkaXNwbGF5OmJsb2NrO2hlaWdodDowO2xpbmUtaGVpZ2h0OjQwcHg7bWF4LWhlaWdodDo0MHB4Oy13ZWJraXQtYm94LXNpemluZzpib3JkZXItYm94O2JveC1zaXppbmc6Ym9yZGVyLWJveDtvdmVyZmxvdzpoaWRkZW47ZGlzcGxheTotd2Via2l0LWJveDtkaXNwbGF5Oi13ZWJraXQtZmxleDtkaXNwbGF5Oi1tcy1mbGV4Ym94O2Rpc3BsYXk6ZmxleH0uZmxhdHBpY2tyLXRpbWU6YWZ0ZXJ7Y29udGVudDoiIjtkaXNwbGF5OnRhYmxlO2NsZWFyOmJvdGh9LmZsYXRwaWNrci10aW1lIC5udW1JbnB1dFdyYXBwZXJ7LXdlYmtpdC1ib3gtZmxleDoxOy13ZWJraXQtZmxleDoxOy1tcy1mbGV4OjE7ZmxleDoxO3dpZHRoOjQwJTtoZWlnaHQ6NDBweDtmbG9hdDpsZWZ0fS5mbGF0cGlja3ItdGltZSAubnVtSW5wdXRXcmFwcGVyIHNwYW4uYXJyb3dVcDphZnRlcntib3JkZXItYm90dG9tLWNvbG9yOiMzOTM5Mzl9LmZsYXRwaWNrci10aW1lIC5udW1JbnB1dFdyYXBwZXIgc3Bhbi5hcnJvd0Rvd246YWZ0ZXJ7Ym9yZGVyLXRvcC1jb2xvcjojMzkzOTM5fS5mbGF0cGlja3ItdGltZS5oYXNTZWNvbmRzIC5udW1JbnB1dFdyYXBwZXJ7d2lkdGg6MjYlfS5mbGF0cGlja3ItdGltZS50aW1lMjRociAubnVtSW5wdXRXcmFwcGVye3dpZHRoOjQ5JX0uZmxhdHBpY2tyLXRpbWUgaW5wdXR7YmFja2dyb3VuZDp0cmFuc3BhcmVudDstd2Via2l0LWJveC1zaGFkb3c6bm9uZTtib3gtc2hhZG93Om5vbmU7Ym9yZGVyOjA7Ym9yZGVyLXJhZGl1czowO3RleHQtYWxpZ246Y2VudGVyO21hcmdpbjowO3BhZGRpbmc6MDtoZWlnaHQ6aW5oZXJpdDtsaW5lLWhlaWdodDppbmhlcml0O2NvbG9yOiMzOTM5Mzk7Zm9udC1zaXplOjAuODc1cmVtIDtwb3NpdGlvbjpyZWxhdGl2ZTstd2Via2l0LWJveC1zaXppbmc6Ym9yZGVyLWJveDtib3gtc2l6aW5nOmJvcmRlci1ib3g7LXdlYmtpdC1hcHBlYXJhbmNlOnRleHRmaWVsZDstbW96LWFwcGVhcmFuY2U6dGV4dGZpZWxkO2FwcGVhcmFuY2U6dGV4dGZpZWxkfS5mbGF0cGlja3ItdGltZSBpbnB1dC5mbGF0cGlja3ItaG91cntmb250LXdlaWdodDpib2xkfS5mbGF0cGlja3ItdGltZSBpbnB1dC5mbGF0cGlja3ItbWludXRlLC5mbGF0cGlja3ItdGltZSBpbnB1dC5mbGF0cGlja3Itc2Vjb25ke2ZvbnQtd2VpZ2h0OjQwMH0uZmxhdHBpY2tyLXRpbWUgaW5wdXQ6Zm9jdXN7b3V0bGluZTowO2JvcmRlcjowfS5mbGF0cGlja3ItdGltZSAuZmxhdHBpY2tyLXRpbWUtc2VwYXJhdG9yLC5mbGF0cGlja3ItdGltZSAuZmxhdHBpY2tyLWFtLXBte2hlaWdodDppbmhlcml0O2Zsb2F0OmxlZnQ7bGluZS1oZWlnaHQ6aW5oZXJpdDtjb2xvcjojMzkzOTM5O2ZvbnQtd2VpZ2h0OmJvbGQ7d2lkdGg6MiU7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTstbXMtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lOy13ZWJraXQtYWxpZ24tc2VsZjpjZW50ZXI7LW1zLWZsZXgtaXRlbS1hbGlnbjpjZW50ZXI7YWxpZ24tc2VsZjpjZW50ZXJ9LmZsYXRwaWNrci10aW1lIC5mbGF0cGlja3ItYW0tcG17b3V0bGluZTowO3dpZHRoOjE4JTtjdXJzb3I6cG9pbnRlcjt0ZXh0LWFsaWduOmNlbnRlcjtmb250LXdlaWdodDo0MDB9LmZsYXRwaWNrci10aW1lIGlucHV0OmhvdmVyLC5mbGF0cGlja3ItdGltZSAuZmxhdHBpY2tyLWFtLXBtOmhvdmVyLC5mbGF0cGlja3ItdGltZSBpbnB1dDpmb2N1cywuZmxhdHBpY2tyLXRpbWUgLmZsYXRwaWNrci1hbS1wbTpmb2N1c3tiYWNrZ3JvdW5kOiNlZWV9LmZsYXRwaWNrci1pbnB1dFtyZWFkb25seV17Y3Vyc29yOnBvaW50ZXJ9QC13ZWJraXQta2V5ZnJhbWVzIGZwRmFkZUluRG93bntmcm9te29wYWNpdHk6MDstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLC0yMHB4LDApO3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLC0yMHB4LDApfXRve29wYWNpdHk6MTstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLDAsMCk7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsMCwwKX19QGtleWZyYW1lcyBmcEZhZGVJbkRvd257ZnJvbXtvcGFjaXR5OjA7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwtMjBweCwwKTt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwtMjBweCwwKX10b3tvcGFjaXR5OjE7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwwLDApO3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLDAsMCl9fQovKiogL2Nzcy9pbmxpbmUuZnIubmV3Y2Fycy5jc3MgKiovCi5jdXN0b20tcGFnZSAuY29sLXNtLTEyLCAuY3VzdG9tLXBhZ2UgLmNvbC1zbS05LCAuY3VzdG9tLXBhZ2UgLmNvbC1zbS02LCAuY3VzdG9tLXBhZ2UgLmNvbC1zbS00LCAuY3VzdG9tLXBhZ2UgLmNvbC1zbS0zIHsgcGFkZGluZy1sZWZ0OjAgIWltcG9ydGFudDsgcGFkZGluZy1yaWdodDowICFpbXBvcnRhbnQ7IH0gLmN1c3RvbS1wYWdlIGEgeyBjb2xvcjojYmIxNjJiOyB9IC5jdXN0b20tcGFnZSBwIHsgY29sb3I6IzY2NjsgbWFyZ2luOjE1cHggMDsgfSAuY3VzdG9tLXBhZ2UgLmNvbC1zbS02IHAgeyB3aWR0aDo5NSU7IH0gLmN1c3RvbS1wYWdlIGxpIHsgbWFyZ2luLXRvcDoxNXB4OyB9IC5jdXN0b20tcGFnZV9faDEgeyBjb2xvcjojNDQ0OyBmb250LXNpemU6MzBweDsgdGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlOyBtYXJnaW4tYm90dG9tOjEwcHg7IH0gLmN1c3RvbS1wYWdlX19oMS0tY2VudGVyIHsgdGV4dC1hbGlnbjpjZW50ZXI7IH0gLmN1c3RvbS1wYWdlX19oMiB7IGNvbG9yOiM0NDQ7IGZvbnQtc2l6ZToyNHB4OyB9IC5jdXN0b20tcGFnZV9faDMgeyBjb2xvcjojNDQ0OyBmb250LXNpemU6MTZweDsgfSAuY3VzdG9tLXBhZ2VfX2hlYWRpbmctaW1nIHsgbWFyZ2luLWJvdHRvbTozMHB4OyB9IC5jdXN0b20tcGFnZV9fbGlzdC1oZWFkaW5nIHsgcGFkZGluZy1sZWZ0OjEzcHg7IHBvc2l0aW9uOnJlbGF0aXZlOyB0b3A6MjBweDsgfSAuY3VzdG9tLXBhZ2VfX2xpc3QtaGVhZGluZy0tYmxhY2sgeyBjb2xvcjojMDAwOyB9IC5jdXN0b20tcGFnZV9fY2hlY2tsaXN0IHsgbGlzdC1zdHlsZTpub25lOyBsaXN0LXN0eWxlLWltYWdlOnVybCgnL2ltYWdlcy9ja2ZpbmRlci9jaGVjay5wbmcnKTsgfSAuY3VzdG9tLXBhZ2VfX2NoZWNrbGlzdCBsaSB7IG1hcmdpbjoyMHB4IDA7IGNvbG9yOiM2NjY7IH0gLmN1c3RvbS1wYWdlX19saXN0IHsgbGlzdC1zdHlsZTpub25lOyBjb2x1bW4tY291bnQ6MzsgfSAuY3VzdG9tLXBhZ2VfX2xpc3QgbGkgeyBmb250LXNpemU6MThweDsgbWFyZ2luOjIwcHggMDsgfSAuY3VzdG9tLXBhZ2VfX2xpc3QgbGkgYSB7IGNvbG9yOiM2NjY7IH0gLmN1c3RvbS1wYWdlX19jb250ZW50LWltZyB7IGRpc3BsYXk6YmxvY2s7IG1hcmdpbjowIGF1dG87IHdpZHRoOjEwMCU7IH0gLmN1c3RvbS1wYWdlX19oZWFkaW5nLWltZyB7IG1hcmdpbi1ib3R0b206MzBweDsgd2lkdGg6MTAwJTsgfSAuY3VzdG9tLXBhZ2VfX2NvbnRlbnQtaW1nIHsgZGlzcGxheTpibG9jazsgbWFyZ2luOjI1cHggYXV0bzsgd2lkdGg6YXV0bzsgfSAuY3VzdG9tLW1haW50ZW5hbmNlLXNjaGVkdWxlX19idXR0b24td3JhcHBlciB7IG1hcmdpbi10b3A6MjVweCAhaW1wb3J0YW50OyB9IEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6NjAwcHgpIHsgLmN1c3RvbS1wYWdlX19oMSB7IGZvbnQtc2l6ZTo1dnc7IH0gLmN1c3RvbS1wYWdlIGltZyB7IGRpc3BsYXk6YmxvY2s7IG1hcmdpbjowIGF1dG87IHdpZHRoOmF1dG87IH0gLmN1c3RvbS1wYWdlIC5jdXN0b20tcGFnZV9fY29udGVudC1pbWcgeyB3aWR0aDoxMDAlOyB9IC5jdXN0b20tcGFnZSBwIHsgdGV4dC1hbGlnbjpqdXN0aWZ5OyB9IC5jdXN0b20tcGFnZSAuY29udGFpbmVyIHsgd2lkdGg6OTAlICFpbXBvcnRhbnQ7IH0gLmN1c3RvbS1wYWdlX19jaGVja2xpc3QgeyB3aWR0aDo4NSU7IG1hcmdpbjowIGF1dG87IH0gLmN1c3RvbS1wYWdlX19saXN0IHsgY29sdW1uLWNvdW50OjE7IHRleHQtYWxpZ246Y2VudGVyOyB9IC5jdXN0b20tcGFnZV9fbGlzdC1oZWFkaW5nIHsgdG9wOjBweDsgfSAuY3VzdG9tLXBhZ2UgdWwgeyBwb3NpdGlvbjpyZWxhdGl2ZTsgbGVmdDoxNXB4OyB9IC5jdXN0b20tcGFnZSAuY3VzdG9tLXBhZ2VfX2xpc3QgeyBsZWZ0OjA7IH0gfSBidXR0b24jb25ldHJ1c3QtYWNjZXB0LWJ0bi1oYW5kbGVyIHsgYmFja2dyb3VuZC1jb2xvcjojMDUxNDFmICFpbXBvcnRhbnQ7IGNvbG9yOiNmZmZmZmYgIWltcG9ydGFudDsgYm9yZGVyLWNvbG9yOiNmZmZmZmYgIWltcG9ydGFudDsgYm9yZGVyLXJhZGl1czoxcHggIWltcG9ydGFudDsgfSBidXR0b24jb25ldHJ1c3QtcmVqZWN0LWFsbC1oYW5kbGVyIHsgYmFja2dyb3VuZC1jb2xvcjojMDUxNDFGICFpbXBvcnRhbnQ7IGNvbG9yOiMwNTE0MWYgIWltcG9ydGFudDsgYm9yZGVyLWNvbG9yOiMwNTE0MWYgIWltcG9ydGFudDsgYm9yZGVyLXJhZGl1czoxcHggIWltcG9ydGFudDsgfSBidXR0b24jb25ldHJ1c3QtcGMtYnRuLWhhbmRsZXIgeyBiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmYgIWltcG9ydGFudDsgY29sb3I6IzZkNmU3MSAhaW1wb3J0YW50OyBib3JkZXItY29sb3I6IzA1MTQxZiAhaW1wb3J0YW50OyBib3JkZXItcmFkaXVzOjFweCAhaW1wb3J0YW50OyB9IGJ1dHRvbi5zYXZlLXByZWZlcmVuY2UtYnRuLWhhbmRsZXIub25ldHJ1c3QtY2xvc2UtYnRuLWhhbmRsZXIgeyBiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmYgIWltcG9ydGFudDsgY29sb3I6IzA1MTQxZiAhaW1wb3J0YW50OyBib3JkZXItY29sb3I6IzA1MTQxZiAhaW1wb3J0YW50OyBib3JkZXItcmFkaXVzOjFweCAhaW1wb3J0YW50OyB9IGJ1dHRvbi5vdC1wYy1yZWZ1c2UtYWxsLWhhbmRsZXIgeyBiYWNrZ3JvdW5kLWNvbG9yOiMwNTE0MUYgIWltcG9ydGFudDsgY29sb3I6IzA1MTQxZiAhaW1wb3J0YW50OyBib3JkZXItY29sb3I6IzA1MTQxZiAhaW1wb3J0YW50OyBib3JkZXItcmFkaXVzOjFweCAhaW1wb3J0YW50OyB9IGJ1dHRvbiNhY2NlcHQtcmVjb21tZW5kZWQtYnRuLWhhbmRsZXJ7IGJhY2tncm91bmQtY29sb3I6IzA1MTQxZiAhaW1wb3J0YW50OyBjb2xvcjojZmZmZmZmICFpbXBvcnRhbnQ7IGJvcmRlci1jb2xvcjojZmZmZmZmICFpbXBvcnRhbnQ7IGZvbnQtc2l6ZTpzbWFsbCAhaW1wb3J0YW50OyBib3JkZXItcmFkaXVzOjFweCAhaW1wb3J0YW50OyB9IC5vdC1wYy1sb2dvIGltZ3sgY29udGVudDp1cmwoIi9pbWFnZXMvTG9nb01vYmlsZS9LaWEtTG9nby5zdmciKSAhaW1wb3J0YW50OyB9ICNvbmV0cnVzdC1wYy1zZGsgLm90LXBjLWxvZ297IHdpZHRoOjMwJSAhaW1wb3J0YW50OyBqdXN0aWZ5LWNvbnRlbnQ6bGVmdCAhaW1wb3J0YW50OyB9IC5vdC1ibnItbG9nb3sgY29udGVudDp1cmwoIi9pbWFnZXMvTG9nb01vYmlsZS9LaWEtTG9nby5zdmciKSAhaW1wb3J0YW50OyB9ICNvbmV0cnVzdC1iYW5uZXItc2RrLm90LWJuci13LWxvZ28gLm90LWJuci1sb2dveyB3aWR0aDo4NXB4ICFpbXBvcnRhbnQ7IGhlaWdodDphdXRvICFpbXBvcnRhbnQ7IG1hcmdpbi1sZWZ0OjI1cHggIWltcG9ydGFudDsgfSAjb25ldHJ1c3QtYmFubmVyLXNkay5vdC1ibnItdy1sb2dvICNvbmV0cnVzdC1wb2xpY3kgeyBtYXJnaW4tbGVmdDoxMTBweCAhaW1wb3J0YW50OyBwYWRkaW5nLWxlZnQ6MjVweDsgfSBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6NDI1cHgpeyAjb25ldHJ1c3QtYmFubmVyLXNkay5vdC1ibnItdy1sb2dvIC5vdC1ibnItbG9nb3sgcG9zaXRpb246cmVsYXRpdmU7IG1hcmdpbjoxNXB4IDAgMTBweCAwICFpbXBvcnRhbnQ7IHRyYW5zZm9ybTppbmhlcml0OyB6b29tOjQwJTsgfSAjb25ldHJ1c3QtYmFubmVyLXNkay5vdC1ibnItdy1sb2dvICNvbmV0cnVzdC1wb2xpY3kgeyBtYXJnaW4tbGVmdDowcHggIWltcG9ydGFudDsgcGFkZGluZy1sZWZ0OjBweDsgbWFyZ2luLXRvcDo1cHg7IH0gI29uZXRydXN0LWNvbnNlbnQtc2RrICNvbmV0cnVzdC1wb2xpY3ktdGl0bGV7IGZvbnQtc2l6ZToxZW0gIWltcG9ydGFudDsgfSAjb25ldHJ1c3QtYmFubmVyLXNkayAjb25ldHJ1c3QtYWNjZXB0LWJ0bi1oYW5kbGVyLCAjb25ldHJ1c3QtYmFubmVyLXNkayAjb25ldHJ1c3QtcmVqZWN0LWFsbC1oYW5kbGVyLCAjb25ldHJ1c3QtYmFubmVyLXNkayAjb25ldHJ1c3QtcGMtYnRuLWhhbmRsZXJ7IHBhZGRpbmc6MTBweCAxMHB4OyB9ICNvbmV0cnVzdC1iYW5uZXItc2RrIGJ1dHRvbiwgI29uZXRydXN0LXBjLXNkayBidXR0b24sICNvdC1zZGstY29va2llLXBvbGljeSBidXR0b257IG1hcmdpbi1ib3R0b206MC41cmVtOyB9ICNvbmV0cnVzdC1wYy1zZGsgYnV0dG9uIHsgd2lkdGg6YXV0bzsgfSAjb25ldHJ1c3QtYmFubmVyLXNkayAub3Qtc2RrLWNvbnRhaW5lciwgI29uZXRydXN0LXBjLXNkayAub3Qtc2RrLWNvbnRhaW5lciwgI290LXNkay1jb29raWUtcG9saWN5IC5vdC1zZGstY29udGFpbmVyeyBwYWRkaW5nOjVweCAyMHB4OyB9ICNvbmV0cnVzdC1iYW5uZXItc2RrICNvbmV0cnVzdC1wb2xpY3l7IG1hcmdpbjowOyB9ICNvbmV0cnVzdC1iYW5uZXItc2RrICNvbmV0cnVzdC1idXR0b24tZ3JvdXAgI29uZXRydXN0LWFjY2VwdC1idG4taGFuZGxlcnsgZm9udC1zaXplOnZhcigtLWZzMCk7IH0gfTwvc3R5bGU+CjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+Ci5jbnRTZXBhcmF0b3Ige3BhZGRpbmctdG9wOjZweDt9PC9zdHlsZT4KICAgICAgIAogICAgICAgPCEtLSBPTzo6MTVkYmUxZWM0YmI4MTlmM2JlOWFmMGJiOTE3MzFkOWYgLS0+CiAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iw6AgdmVuZHJlIiBpZD0idGV4dEZvclNhbGUiPgogICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgdmFsdWU9IkTDqXRhaWxzIiBpZD0idGV4dERldGFpbHMiPgogICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgdmFsdWU9IlRvdXMiIGlkPSJ0ZXh0QWxsIj4KICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIHZhbHVlPSJQcml4IFLDqWR1aXQiIGlkPSJ0ZXh0UmVkdWNlZCI+CiAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iU8OpbGVjdGlvbm5leiB1bmUgbWFycXVlIiBpZD0idGV4dE1hbnVUaXRsZSI+CiAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iVm9pciBub3MgbW9kw6hsZXMgS2lhIiBpZD0idGV4dEJyYW5kVGl0bGUiPgogICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgdmFsdWU9Ik1vZMOobGVzIEtpYSBuZXVmcyAyMDI1LCAyMDI2ICZhbXA7IDIwMjciIGlkPSJ0ZXh0TWFpblRpdGxlIj4KICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIHZhbHVlPSJBdXRvcyBuZXV2ZXMgS2lhIDIwMjUsIDIwMjYgJmFtcDsgMjAyNyDDoCB7JE5FV0NJVFl9IiBpZD0idGV4dENhclRpdGxlIj4KICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIHZhbHVlPSJWVVMgbmV1ZnMgS2lhIDIwMjUsIDIwMjYgJmFtcDsgMjAyNyDDoCB7JE5FV0NJVFl9IiBpZD0idGV4dFNVVlRpdGxlIj4KICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIHZhbHVlPSJDYW1pb25zIG5ldWZzIEtpYSAyMDI1LCAyMDI2ICZhbXA7IDIwMjcgw6AgeyRORVdDSVRZfSIgaWQ9InRleHRUcnVja1RpdGxlIj4KICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIHZhbHVlPSJIeWJyaWRlcyBuZXV2ZXMgS2lhIDIwMjUsIDIwMjYgJmFtcDsgMjAyNyDDoCB7JE5FV0NJVFl9IiBpZD0idGV4dEh5YnJpZFRpdGxlIj4KICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIHZhbHVlPSJub3V2ZWF1IiBpZD0idGV4dE5ldyI+CiAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iS2lhIHskQ0xBU1NOQU1FfSAyMDI1LCAyMDI2ICZhbXA7IDIwMjciIGlkPSJ0ZXh0Q2xhc3NWaWV3Ij4KICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIHZhbHVlPSJBY2N1ZWlsIiBpZD0idGV4dEhvbWUiPgogICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgdmFsdWU9Ii8iIGlkPSJ1cmlIb21lIj4KICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIHZhbHVlPSIvbmV1ZnMvbm91dmVhdS5odG1sIiBpZD0idXJpTmV3Q2FycyI+CiAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iL25ldWZzLyIgaWQ9InRleHROZXdDYXJGb2xkZXIiPgogICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgdmFsdWU9Ik5vcyBtYXJxdWVzIiBpZD0idGV4dE1hbnVTZWxlY3QiPgogICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgdmFsdWU9IkVuIFN0b2NrIC8gRGlzcG9uaWJsZXMiIGlkPSJpblN0b2NrTGFiZWwiPgogICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgdmFsdWU9Ii9pbWFnZXMvIiBpZD0idGV4dEJhc2VJbWFnZVBhdGgiPgogICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgdmFsdWU9Ii9wcm94eV9hdWIvIiBpZD0iYnJhbmRJbWFnZVBhdGgiPgogICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZm9yY2VUb0ZpbGxQb3B1cF9uZXciIHZhbHVlPSJub25lIj4KCSAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIHZhbHVlPSIxIiBpZD0iaXNtb2JpbGUiPgogICAgICAgCQkJCTxzY3JpcHQ+CgoJCS8vZ2xvYmFsIHN0b3JlCgkJdmFyIHN0b3JlID0gbnVsbDsKCgkJY29uc3QgaW5pdFN0b3JlID0gKCkgPT4gewoKCQkJaWYodHlwZW9mIGNyZWF0ZURhdGFTdG9yZSAhPT0gJ2Z1bmN0aW9uJyl7CgkJCQlzZXRUaW1lb3V0KGluaXRTdG9yZSwgNTApOwoJCQkJcmV0dXJuOwoJCQl9CgoJCQlzdG9yZSA9IGNyZWF0ZURhdGFTdG9yZSh7ImNvbnRleHQiOnsibGFuZyI6IkZSRU5DSCIsInNob3J0TGFuZyI6ImZyIiwiaXNNb2JpbGUiOnRydWUsImNhdGVnb3J5IjoiYWxsIiwic2VjdGlvbiI6Ik5FVyIsImxvY2FsZSI6ImZyX0NBIiwiZGF0ZWZvcm1hdCI6IiVlICVCIn0sImRlYWxlckluZm8iOnsiYWRkcmVzcyI6IjM2MDAsIGF2ZW51ZSBkZSBsYSBHYXJlIiwiY2l0eSI6Ik1hc2NvdWNoZSIsInByb3ZpbmNlIjoiUXVcdTAwZTliZWMiLCJyZWdpb24iOiJMYW5hdWRpXHUwMGU4cmUiLCJwb3N0YWwiOiJKN0sgM0MxIiwibmFtZSI6IkFMQkkgS2lhIE1hc2NvdWNoZSIsImVtYWlsIjoiaW50ZXJuZXRAYWxiaWxlZ2VhbnQuY29tIiwiZGVhbGVySUQiOiIzMzMwIiwiZGVhbGVyR3JvdXAiOnsiZ3JvdXBlTmFtZSI6Ikdyb3VwZSBBbGJpIGxlIEdcdTAwZTlhbnQiLCJncm91cGVJRCI6IjQxNTkiLCJkZWFsZXJzIjpbeyJkZWFsZXJJRCI6IjM5NTkiLCJuYW1lIjoiQUxCSSBBdXRvIENyXHUwMGU5ZGl0Iiwic2l0ZUlEIjoiMTM0NSIsImlzTGl2ZSI6IllFUyJ9LHsiZGVhbGVySUQiOiIxNDM3IiwibmFtZSI6IkFMQkkgQ2hldnJvbGV0IEJ1aWNrIEdNQyBDb3J2ZXR0ZSBMYXZhbCIsInNpdGVJRCI6IjEwNSIsImlzTGl2ZSI6IllFUyJ9LHsiZGVhbGVySUQiOiIzMzI4IiwibmFtZSI6IkFMQkkgSHl1bmRhaSBMYXZhbCIsInNpdGVJRCI6IjEyNzgiLCJpc0xpdmUiOiJZRVMifSx7ImRlYWxlcklEIjoiMzMyOSIsIm5hbWUiOiJBTEJJIEh5dW5kYWkgTWFzY291Y2hlIiwic2l0ZUlEIjoiMTI3OSIsImlzTGl2ZSI6IllFUyJ9LHsiZGVhbGVySUQiOiIzMzMwIiwibmFtZSI6IkFMQkkgS2lhIE1hc2NvdWNoZSIsInNpdGVJRCI6IjEyMjUiLCJpc0xpdmUiOiJZRVMifSx7ImRlYWxlcklEIjoiMzMzMSIsIm5hbWUiOiJBTEJJIEtpYSBTdC1FdXN0YWNoZSIsInNpdGVJRCI6IjEyMjciLCJpc0xpdmUiOiJZRVMifSx7ImRlYWxlcklEIjoiMzMzMyIsIm5hbWUiOiJBTEJJIE1hemRhIE1hc2NvdWNoZSIsInNpdGVJRCI6IjEzNDYiLCJpc0xpdmUiOiJZRVMifSx7ImRlYWxlcklEIjoiMzMzNCIsIm5hbWUiOiJBTEJJIE5pc3NhbiBNYXNjb3VjaGUiLCJzaXRlSUQiOiIxMzQ3IiwiaXNMaXZlIjoiWUVTIn0seyJkZWFsZXJJRCI6IjMzMzUiLCJuYW1lIjoiQUxCSSBOaXNzYW4gTW9udC1UcmVtYmxhbnQiLCJzaXRlSUQiOiIxMzQ4IiwiaXNMaXZlIjoiWUVTIn0seyJkZWFsZXJJRCI6IjMzMzYiLCJuYW1lIjoiQUxCSSBOaXNzYW4gUmVwZW50aWdueSIsInNpdGVJRCI6IjEzNDkiLCJpc0xpdmUiOiJZRVMifSx7ImRlYWxlcklEIjoiMzMzNyIsIm5hbWUiOiJBTEJJIE5pc3NhbiBWYXVkcmV1aWwiLCJzaXRlSUQiOiIxODQ5IiwiaXNMaXZlIjoiWUVTIn1dfSwiZmF4IjoiIiwicGhvbmUiOiI4NTUtODY1LTI1MjQiLCJsYXRpdHVkZSI6IjQ1LjcyMjM5MTAwMDAiLCJsb25naXR1ZGUiOiItNzMuNjA2MTIyMDAwMCIsInByb3ZpbmNlX2NvZGUiOiJRQyIsImRldGFpbF9wcml4IjpudWxsLCJkZXRhaWxfcHJpeF9hbiI6bnVsbCwiZGV0YWlsX3ByaXhfdXNlZCI6bnVsbCwiZGV0YWlsX3ByaXhfdXNlZF9hbiI6bnVsbCwib2VtRGVhbGVyQ29kZSI6IjYxMDU2IiwicHJpY2VfZGlzY2xhaW1lcl9wcmVmZXJlbmNlIjoiMCIsInByaWNlX2Rpc2NsYWltZXJfcHJlZmVyZW5jZV91c2VkIjoiMCIsImdtQkFDIjoiIiwicGxhY2VJZCI6IkNoSUpVWTNtV1BqZHlFd1JvS09QOTVBV2I4USJ9LCJpc1ZNIjpmYWxzZSwiZmllbGRzIjp7IlNIT1dST09NX0lNQUdFX1NPVVJDRV9UWVBFIjoiY2hyb21lIiwiTkVXX0lOVl9JTUFHRV9TT1VSQ0VfVFlQRSI6ImNocm9tZSJ9LCJpMThuIjp7IldFQl9TSVRFX0dFTkVSQVRPUl9QQUdFX05FV0lOViI6IlwvbmV1ZnNcL2ludmVudGFpcmVcL3JlY2hlcmNoZS5odG1sIiwiUEFZTUVOVFMiOiJQYWllbWVudHMiLCJERUZBVUxUX1BBWU1FTlRfQ0FTSCI6IkNvbXB0YW50IiwiTEFCRUxfQkVGT1JFX1RBWEVTIjoiQXZhbnQgdGF4ZXMiLCJMQUJFTF9TQVZFX0JVSUxEX1RJVExFIjoiRW5yZWdpc3RyZXIgdm90cmUgY29uZmlndXJhdGlvbiEiLCJXRUJTSVRFX09FTURSX0xPQURfQlVJTERfVE9PTFRJUCI6IlJlc3RhdXJleiB1bmUgY29uZmlndXJhdGlvbiBwclx1MDBlOWNcdTAwZTlkZW1tZW50IGVucmVnaXN0clx1MDBlOWUgZW4gc2Fpc2lzc2FudCB2b3RyZSBhZHJlc3NlIGUtbWFpbCBvdSB2b3RyZSBudW1cdTAwZTlybyBkZSB0XHUwMGU5bFx1MDBlOXBob25lLiIsIldFQlNJVEVfT0VNRFJfTE9BRF9CVUlMRF9FTUFJTF9QSE9ORSI6IlNhaXNpc3NleiB2b3RyZSBhZHJlc3NlIGUtbWFpbCBldFwvb3Ugdm90cmUgbnVtXHUwMGU5cm8gZGUgdFx1MDBlOWxcdTAwZTlwaG9uZSBwb3VyIGNoYXJnZXIgdW5lIGNvbmZpZ3VyYXRpb24gZW5yZWdpc3RyXHUwMGU5ZS4iLCJXRUJTSVRFX09FTURSX0xPQURfQlVJTERfRU1BSUxfUEhPTkVfRVJST1IiOiJWZXVpbGxleiBzYWlzaXIgdm90cmUgYWRyZXNzZSBlLW1haWwgb3Ugdm90cmUgbnVtXHUwMGU5cm8gZGUgdFx1MDBlOWxcdTAwZTlwaG9uZS4iLCJXRUJTSVRFX09FTURSX0xPQURfQlVJTERfRVJST1IiOiJMZXMgZG9ublx1MDBlOWVzIGRlIGNvbmZpZ3VyYXRpb24gbmUgc29udCBwYXMgZGlzcG9uaWJsZXMgcG91ciBjZXQgZW5yZWdpc3RyZW1lbnQuIiwiV0VCU0lURV9PRU1EUl9MT0FEX0JVSUxEX1JFRElSRUNUSU5HIjoiQ29tcGlsYXRpb24gY2hhcmdcdTAwZTllISBSZWRpcmVjdGlvbiBlbiBjb3Vycy4uLiIsIldFQlNJVEVfT0VNRFJfTE9BRF9CVUlMRF9MSVNUX0VSUk9SIjoiQXVjdW5lIGNvbmZpZ3VyYXRpb24gbiYjMzk7YSBcdTAwZTl0XHUwMGU5IHRyb3V2XHUwMGU5ZSBwb3VyIGNldHRlIGFkcmVzc2UgZS1tYWlsXC9udW1cdTAwZTlybyBkZSB0XHUwMGU5bFx1MDBlOXBob25lLiIsIldFQlNJVEVfT0VNRFJfTE9BRF9CVUlMRF9JTlZBTElEX1RPS0VOIjoiTGUgamV0b24gZXN0IGludmFsaWRlIG91IGEgZXhwaXJcdTAwZTkuIFZldWlsbGV6IHJcdTAwZTllc3NheWVyLiIsIldFQlNJVEVfT0VNRFJfTE9BRF9CVUlMRF9MSVNUIjoiQ2hhcmdlbWVudCBkZXMgY29uZmlndXJhdGlvbnMgc2F1dmVnYXJkXHUwMGU5cy4uLiIsIldFQlNJVEVfT0VNRFJfTE9BRF9CVUlMRF9MSVNUX1NFTEVDVCI6IlNcdTAwZTlsZWN0aW9ubmV6IHVuZSBjb25maWd1cmF0aW9uIFx1MDBlMCBjaGFyZ2VyOiIsIldFQlNJVEVfT0VNRFJfTE9BRF9CVUlMRF9MSVNUX0ZBSUxFRCI6IkltcG9zc2libGUgZGUgY2hhcmdlciBsZXMgY29uZmlndXJhdGlvbnMuIiwiV0VCU0lURV9PRU1EUl9NRkFfU0VORF9DT0RFIjoiRW52b2kgZHUgY29kZSBkZSB2XHUwMGU5cmlmaWNhdGlvbi4uLiIsIldFQlNJVEVfT0VNRFJfTUZBX1NUQVJUX0VSUk9SIjoiSW1wb3NzaWJsZSBkZSBkXHUwMGU5bWFycmVyIGxhIHZcdTAwZTlyaWZpY2F0aW9uLiIsIldFQlNJVEVfT0VNRFJfTUZBX0VOVEVSX0NPREUiOiJTYWlzaXNzZXogbGUgY29kZSBcdTAwZTAgNiBjaGlmZnJlcyBlbnZveVx1MDBlOSBcdTAwZTAgdm90cmUgYWRyZXNzZSBlLW1haWwgb3UgXHUwMGUwIHZvdHJlIG51bVx1MDBlOXJvIGRlIHRcdTAwZTlsXHUwMGU5cGhvbmUuIiwiV0VCU0lURV9PRU1EUl9NRkFfRU5URVJfQ09ERV9FUlJPUiI6IlZldWlsbGV6IHNhaXNpciBsZSBjb2RlIGRlIHZcdTAwZTlyaWZpY2F0aW9uLiIsIldFQlNJVEVfT0VNRFJfTUZBX1ZFUklGWV9DT0RFIjoiVlx1MDBlOXJpZmljYXRpb24gZHUgY29kZS4uLiIsIldFQlNJVEVfT0VNRFJfTUZBX0VYUElSRURfQ09ERSI6IkNvZGUgaW52YWxpZGUgb3UgZXhwaXJcdTAwZTkuIFZldWlsbGV6IHJcdTAwZTllc3NheWVyLiIsIldFQlNJVEVfT0VNRFJfTUZBX1ZFUklGWV9GQUlMRUQiOiJMYSB2XHUwMGU5cmlmaWNhdGlvbiBhIFx1MDBlOWNob3VcdTAwZTkuIFZldWlsbGV6IHJcdTAwZTllc3NheWVyLiIsIldFQlNJVEVfT0VNRFJfU0FWRV9CVUlMRF9VUERBVElORyI6Ik1pc2UgXHUwMGUwIGpvdXIgZGUgbGEgY29uZmlndWF0aW9uLi4uIiwiV0VCU0lURV9PRU1EUl9TQVZFX0JVSUxEX1VQREFURV9TVUNDRVNTIjoiTGEgY29uZmlndWF0aW9uIGEgXHUwMGU5dFx1MDBlOSBtaXNlIFx1MDBlMCBqb3VyIGF2ZWMgc3VjY1x1MDBlOHMuIiwiV0VCU0lURV9PRU1EUl9TQVZFX0JVSUxEX1VQREFURV9FUlJPUiI6IkltcG9zc2libGUgZGUgbWV0dHJlIFx1MDBlMCBqb3VyIGxhIGNvbmZpZ3VhdGlvbi4iLCJXRUJTSVRFX09FTURSX1NBVkVfQlVJTERfU0FWSU5HIjoiU2F1dmVnYXJkZSBkZSBsYSBjb25maWd1YXRpb24uLi4iLCJXRUJTSVRFX09FTURSX1NBVkVfQlVJTERfU0FWRV9TVUNDRVNTIjoiQ29uZmlndWF0aW9uIGVucmVnaXN0clx1MDBlOSAhIFZvdXMgcG91cnJleiBsZSBjaGFyZ2VyIHVsdFx1MDBlOXJpZXVyZW1lbnQgZW4gdXRpbGlzYW50IHZvdHJlIGFkcmVzc2UgZS1tYWlsIG91IHZvdHJlIG51bVx1MDBlOXJvIGRlIHRcdTAwZTlsXHUwMGU5cGhvbmUuIiwiV0VCU0lURV9PRU1EUl9TQVZFX0JVSUxEX1NBVkVfRVJST1IiOiJJbXBvc3NpYmxlIGQmIzM5O2VucmVnaXN0cmVyIGxhIGNvbmZpZ3VyYXRpb24uIiwiV0VCU0lURV9PRU1EUl9CVE5fTE9BRCI6IkNoYXJnZXIiLCJXRUJTSVRFX09FTURSX0JUTl9WRVJJRlkiOiJWXHUwMGU5cmlmaWVyIiwiV0VCU0lURV9PRU1EUl9CVE5fUkVTRU5EX0NPREUiOiJSZW52b3llciBsZSBjb2RlIiwiV0VCU0lURV9PRU1EUl9NRkFfVkVSSUZJQ0FUSU9OX0NPREUiOiJMZSBjb2RlIGRlIHZcdTAwZTlyaWZpY2F0aW9uIiwiV0VCU0lURV9PRU1EUl9TQVZFX0JVSUxEX01PREFMX1RJVExFIjoiQ2hhcmdlciB1bmUgY29uZmlndXJhdGlvbiBlbnJlZ2lzdHJcdTAwZTllIn0sInNob3dPZW1JbWFnZXMiOmZhbHNlfSk7CgkJfTsKCgkJaW5pdFN0b3JlKCk7CgoJPC9zY3JpcHQ+CgkJCQkJCTxzdmcgYXJpYS1oaWRkZW49InRydWUiIHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7IHdpZHRoOiAwOyBoZWlnaHQ6IDA7IG92ZXJmbG93OiBoaWRkZW47IiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgoJCQkJCTxzeW1ib2wgaWQ9Imljb24tY2hldnJvbi1yaWdodCIgdmlld2JveD0iMCAwIDMyMCA1MTIiPgoJCTxwYXRoIGQ9Ik0yODUuNDc2IDI3Mi45NzFMOTEuMTMyIDQ2Ny4zMTRjLTkuMzczIDkuMzczLTI0LjU2OSA5LjM3My0zMy45NDEgMGwtMjIuNjY3LTIyLjY2N2MtOS4zNTctOS4zNTctOS4zNzUtMjQuNTIyLS4wNC0zMy45MDFMMTg4LjUwNSAyNTYgMzQuNDg0IDEwMS4yNTVjLTkuMzM1LTkuMzc5LTkuMzE3LTI0LjU0NC4wNC0zMy45MDFsMjIuNjY3LTIyLjY2N2M5LjM3My05LjM3MyAyNC41NjktOS4zNzMgMzMuOTQxIDBMMjg1LjQ3NSAyMzkuMDNjOS4zNzMgOS4zNzIgOS4zNzMgMjQuNTY4LjAwMSAzMy45NDF6Ij48L3BhdGg+Cgk8L3N5bWJvbD4JPHN5bWJvbCBpZD0iaWNvbi1jaGV2cm9uLWRvd24iIHZpZXdib3g9IjAgMCA0NDggNTEyIj4KCQk8cGF0aCBkPSJNMjA3LjAyOSAzODEuNDc2TDEyLjY4NiAxODcuMTMyYy05LjM3My05LjM3My05LjM3My0yNC41NjkgMC0zMy45NDFsMjIuNjY3LTIyLjY2N2M5LjM1Ny05LjM1NyAyNC41MjItOS4zNzUgMzMuOTAxLS4wNEwyMjQgMjg0LjUwNWwxNTQuNzQ1LTE1NC4wMjFjOS4zNzktOS4zMzUgMjQuNTQ0LTkuMzE3IDMzLjkwMS4wNGwyMi42NjcgMjIuNjY3YzkuMzczIDkuMzczIDkuMzczIDI0LjU2OSAwIDMzLjk0MUwyNDAuOTcxIDM4MS40NzZjLTkuMzczIDkuMzcyLTI0LjU2OSA5LjM3Mi0zMy45NDIgMHoiPjwvcGF0aD4KCTwvc3ltYm9sPgk8c3ltYm9sIGlkPSJpY29uLWNhciIgdmlld2JveD0iMCAwIDUxMiA1MTIiPgoJCTxwYXRoIGQ9Ik00OTkuOTkgMTc2aC01OS44N2wtMTYuNjQtNDEuNkM0MDYuMzggOTEuNjMgMzY1LjU3IDY0IDMxOS41IDY0aC0xMjdjLTQ2LjA2IDAtODYuODggMjcuNjMtMTAzLjk5IDcwLjRMNzEuODcgMTc2SDEyLjAxQzQuMiAxNzYtMS41MyAxODMuMzQuMzcgMTkwLjkxbDYgMjRDNy43IDIyMC4yNSAxMi41IDIyNCAxOC4wMSAyMjRoMjAuMDdDMjQuNjUgMjM1LjczIDE2IDI1Mi43OCAxNiAyNzJ2NDhjMCAxNi4xMiA2LjE2IDMwLjY3IDE2IDQxLjkzVjQxNmMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDMyYzE3LjY3IDAgMzItMTQuMzMgMzItMzJ2LTMyaDI1NnYzMmMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDMyYzE3LjY3IDAgMzItMTQuMzMgMzItMzJ2LTU0LjA3YzkuODQtMTEuMjUgMTYtMjUuOCAxNi00MS45M3YtNDhjMC0xOS4yMi04LjY1LTM2LjI3LTIyLjA3LTQ4SDQ5NGM1LjUxIDAgMTAuMzEtMy43NSAxMS42NC05LjA5bDYtMjRjMS44OS03LjU3LTMuODQtMTQuOTEtMTEuNjUtMTQuOTF6bS0zNTIuMDYtMTcuODNjNy4yOS0xOC4yMiAyNC45NC0zMC4xNyA0NC41Ny0zMC4xN2gxMjdjMTkuNjMgMCAzNy4yOCAxMS45NSA0NC41NyAzMC4xN0wzODQgMjA4SDEyOGwxOS45My00OS44M3pNOTYgMzE5LjhjLTE5LjIgMC0zMi0xMi43Ni0zMi0zMS45Uzc2LjggMjU2IDk2IDI1NnM0OCAyOC43MSA0OCA0Ny44NS0yOC44IDE1Ljk1LTQ4IDE1Ljk1em0zMjAgMGMtMTkuMiAwLTQ4IDMuMTktNDgtMTUuOTVTMzk2LjggMjU2IDQxNiAyNTZzMzIgMTIuNzYgMzIgMzEuOS0xMi44IDMxLjktMzIgMzEuOXoiPjwvcGF0aD4KCTwvc3ltYm9sPgk8c3ltYm9sIGlkPSJpY29uLXN0ZWVyaW5nLXdoZWVsIiB2aWV3Ym94PSIwIDAgNTEyIDUxMiI+CgkJPHBhdGggZD0iTTAgMjU2QzAgMTE0LjYgMTE0LjYgMCAyNTYgMEMzOTcuNCAwIDUxMiAxMTQuNiA1MTIgMjU2QzUxMiAzOTcuNCAzOTcuNCA1MTIgMjU2IDUxMkMxMTQuNiA1MTIgMCAzOTcuNCAwIDI1NnpNMTY4LjkgMjg4SDY2LjY1QzgwLjE0IDM2OC40IDE0My42IDQzMS45IDIyNCA0NDUuM1YzNTguOUwxNjguOSAyODh6TTI4OCAzNTguOVY0NDUuM0MzNjguNCA0MzEuOSA0MzEuOSAzNjguNCA0NDUuMyAyODhIMzQzLjFMMjg4IDM1OC45ek0zNTIgMjI0SDQ0NS4zQzQzMC4xIDEzMy4yIDM1MS4xIDY0IDI1NiA2NEMxNjAuOSA2NCA4MS44OSAxMzMuMiA2Ni42NSAyMjRIMTYwTDE2Ny4yIDIwOS43QzE3Mi42IDE5OC44IDE4My43IDE5MiAxOTUuOCAxOTJIMzE2LjJDMzI4LjMgMTkyIDMzOS40IDE5OC44IDM0NC44IDIwOS43TDM1MiAyMjR6Ij48L3BhdGg+Cgk8L3N5bWJvbD4JPHN5bWJvbCBpZD0iaWNvbi1rZXkiIHZpZXdib3g9IjAgMCA1MTIgNTEyIj4KCQk8cGF0aCBkPSJNNTEyIDE3Ni4wMDFDNTEyIDI3My4yMDMgNDMzLjIwMiAzNTIgMzM2IDM1MmMtMTEuMjIgMC0yMi4xOS0xLjA2Mi0zMi44MjctMy4wNjlsLTI0LjAxMiAyNy4wMTRBMjMuOTk5IDIzLjk5OSAwIDAgMSAyNjEuMjIzIDM4NEgyMjR2NDBjMCAxMy4yNTUtMTAuNzQ1IDI0LTI0IDI0aC00MHY0MGMwIDEzLjI1NS0xMC43NDUgMjQtMjQgMjRIMjRjLTEzLjI1NSAwLTI0LTEwLjc0NS0yNC0yNHYtNzguMDU5YzAtNi4zNjUgMi41MjktMTIuNDcgNy4wMjktMTYuOTcxbDE2MS44MDItMTYxLjgwMkMxNjMuMTA4IDIxMy44MTQgMTYwIDE5NS4yNzEgMTYwIDE3NiAxNjAgNzguNzk4IDIzOC43OTcuMDAxIDMzNS45OTkgMCA0MzMuNDg4LS4wMDEgNTEyIDc4LjUxMSA1MTIgMTc2LjAwMXpNMzM2IDEyOGMwIDI2LjUxIDIxLjQ5IDQ4IDQ4IDQ4czQ4LTIxLjQ5IDQ4LTQ4LTIxLjQ5LTQ4LTQ4LTQ4LTQ4IDIxLjQ5LTQ4IDQ4eiI+PC9wYXRoPgoJPC9zeW1ib2w+CTxzeW1ib2wgaWQ9Imljb24tY2hldnJvbi1jaXJjbGUtcmlnaHQiIHZpZXdib3g9IjAgMCA1MTIgNTEyIj4KCQk8cGF0aCBkPSJNMjU2IDhjMTM3IDAgMjQ4IDExMSAyNDggMjQ4UzM5MyA1MDQgMjU2IDUwNCA4IDM5MyA4IDI1NiAxMTkgOCAyNTYgOHptMTEzLjkgMjMxTDIzNC40IDEwMy41Yy05LjQtOS40LTI0LjYtOS40LTMzLjkgMGwtMTcgMTdjLTkuNCA5LjQtOS40IDI0LjYgMCAzMy45TDI4NS4xIDI1NiAxODMuNSAzNTcuNmMtOS40IDkuNC05LjQgMjQuNiAwIDMzLjlsMTcgMTdjOS40IDkuNCAyNC42IDkuNCAzMy45IDBMMzY5LjkgMjczYzkuNC05LjQgOS40LTI0LjYgMC0zNHoiPjwvcGF0aD4KCTwvc3ltYm9sPgk8c3ltYm9sIGlkPSJpY29uLXNob3BwaW5nLWNhcnQiIHZpZXdib3g9IjAgMCA1NzYgNTEyIj4KCQk8cGF0aCBkPSJNNTI4LjEyIDMwMS4zMTlsNDcuMjczLTIwOEM1NzguODA2IDc4LjMwMSA1NjcuMzkxIDY0IDU1MS45OSA2NEgxNTkuMjA4bC05LjE2Ni00NC44MUMxNDcuNzU4IDguMDIxIDEzNy45MyAwIDEyNi41MjkgMEgyNEMxMC43NDUgMCAwIDEwLjc0NSAwIDI0djE2YzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNGg2OS44ODNsNzAuMjQ4IDM0My40MzVDMTQ3LjMyNSA0MTcuMSAxMzYgNDM1LjIyMiAxMzYgNDU2YzAgMzAuOTI4IDI1LjA3MiA1NiA1NiA1NnM1Ni0yNS4wNzIgNTYtNTZjMC0xNS42NzQtNi40NDctMjkuODM1LTE2LjgyNC00MGgyMDkuNjQ3QzQzMC40NDcgNDI2LjE2NSA0MjQgNDQwLjMyNiA0MjQgNDU2YzAgMzAuOTI4IDI1LjA3MiA1NiA1NiA1NnM1Ni0yNS4wNzIgNTYtNTZjMC0yMi4xNzItMTIuODg4LTQxLjMzMi0zMS41NzktNTAuNDA1bDUuNTE3LTI0LjI3NmMzLjQxMy0xNS4wMTgtOC4wMDItMjkuMzE5LTIzLjQwMy0yOS4zMTlIMjE4LjExN2wtNi41NDUtMzJoMjkzLjE0NWMxMS4yMDYgMCAyMC45Mi03Ljc1NCAyMy40MDMtMTguNjgxeiI+PC9wYXRoPgoJPC9zeW1ib2w+CTxzeW1ib2wgaWQ9Imljb24tdGFncyIgdmlld2JveD0iMCAwIDY0MCA1MTIiPgoJCTxwYXRoIGQ9Ik00OTcuOTQxIDIyNS45NDFMMjg2LjA1OSAxNC4wNTlBNDggNDggMCAwIDAgMjUyLjExOCAwSDQ4QzIxLjQ5IDAgMCAyMS40OSAwIDQ4djIwNC4xMThhNDggNDggMCAwIDAgMTQuMDU5IDMzLjk0MWwyMTEuODgyIDIxMS44ODJjMTguNzQ0IDE4Ljc0NSA0OS4xMzYgMTguNzQ2IDY3Ljg4MiAwbDIwNC4xMTgtMjA0LjExOGMxOC43NDUtMTguNzQ1IDE4Ljc0NS00OS4xMzcgMC02Ny44ODJ6TTExMiAxNjBjLTI2LjUxIDAtNDgtMjEuNDktNDgtNDhzMjEuNDktNDggNDgtNDggNDggMjEuNDkgNDggNDgtMjEuNDkgNDgtNDggNDh6bTUxMy45NDEgMTMzLjgyM0w0MjEuODIzIDQ5Ny45NDFjLTE4Ljc0NSAxOC43NDUtNDkuMTM3IDE4Ljc0NS02Ny44ODIgMGwtLjM2LS4zNkw1MjcuNjQgMzIzLjUyMmMxNi45OTktMTYuOTk5IDI2LjM2LTM5LjYgMjYuMzYtNjMuNjRzLTkuMzYyLTQ2LjY0MS0yNi4zNi02My42NEwzMzEuMzk3IDBoNDguNzIxYTQ4IDQ4IDAgMCAxIDMzLjk0MSAxNC4wNTlsMjExLjg4MiAyMTEuODgyYzE4Ljc0NSAxOC43NDUgMTguNzQ1IDQ5LjEzNyAwIDY3Ljg4MnoiPjwvcGF0aD4KCTwvc3ltYm9sPgk8c3ltYm9sIGlkPSJpY29uLWhhbmQtaG9sZGluZy11c2QiIHZpZXdib3g9IjAgMCA1NzYgNTEyIj4KCQk8cGF0aCBkPSJNMjcxLjA2LDE0NC4zbDU0LjI3LDE0LjNhOC41OSw4LjU5LDAsMCwxLDYuNjMsOC4xYzAsNC42LTQuMDksOC40LTkuMTIsOC40aC0zNS42YTMwLDMwLDAsMCwxLTExLjE5LTIuMmMtNS4yNC0yLjItMTEuMjgtMS43LTE1LjMsMmwtMTksMTcuNWExMS42OCwxMS42OCwwLDAsMC0yLjI1LDIuNjYsMTEuNDIsMTEuNDIsMCwwLDAsMy44OCwxNS43NCw4My43Nyw4My43NywwLDAsMCwzNC41MSwxMS41VjI0MGMwLDguOCw3LjgzLDE2LDE3LjM3LDE2aDE3LjM3YzkuNTUsMCwxNy4zOC03LjIsMTcuMzgtMTZWMjIyLjRjMzIuOTMtMy42LDU3Ljg0LTMxLDUzLjUtNjMtMy4xNS0yMy0yMi40Ni00MS4zLTQ2LjU2LTQ3LjdMMjgyLjY4LDk3LjRhOC41OSw4LjU5LDAsMCwxLTYuNjMtOC4xYzAtNC42LDQuMDktOC40LDkuMTItOC40aDM1LjZBMzAsMzAsMCwwLDEsMzMyLDgzLjFjNS4yMywyLjIsMTEuMjgsMS43LDE1LjMtMmwxOS0xNy41QTExLjMxLDExLjMxLDAsMCwwLDM2OC40Nyw2MWExMS40MywxMS40MywwLDAsMC0zLjg0LTE1Ljc4LDgzLjgyLDgzLjgyLDAsMCwwLTM0LjUyLTExLjVWMTZjMC04LjgtNy44Mi0xNi0xNy4zNy0xNkgyOTUuMzdDMjg1LjgyLDAsMjc4LDcuMiwyNzgsMTZWMzMuNmMtMzIuODksMy42LTU3Ljg1LDMxLTUzLjUxLDYzQzIyNy42MywxMTkuNiwyNDcsMTM3LjksMjcxLjA2LDE0NC4zWk01NjUuMjcsMzI4LjFjLTExLjgtMTAuNy0zMC4yLTEwLTQyLjYsMEw0MzAuMjcsNDAyYTYzLjY0LDYzLjY0LDAsMCwxLTQwLDE0SDI3MmExNiwxNiwwLDAsMSwwLTMyaDc4LjI5YzE1LjksMCwzMC43MS0xMC45LDMzLjI1LTI2LjZhMzEuMiwzMS4yLDAsMCwwLC40Ni01LjQ2QTMyLDMyLDAsMCwwLDM1MiwzMjBIMTkyYTExNy42NiwxMTcuNjYsMCwwLDAtNzQuMSwyNi4yOUw3MS40LDM4NEgxNkExNiwxNiwwLDAsMCwwLDQwMHY5NmExNiwxNiwwLDAsMCwxNiwxNkgzNzIuNzdhNjQsNjQsMCwwLDAsNDAtMTRMNTY0LDM3N2EzMiwzMiwwLDAsMCwxLjI4LTQ4LjlaIj48L3BhdGg+Cgk8L3N5bWJvbD4JPHN5bWJvbCBpZD0iaWNvbi10b29scyIgdmlld2JveD0iMCAwIDUxMiA1MTIiPgoJCTxwYXRoIGQ9Ik01MDEuMSAzOTUuN0wzODQgMjc4LjZjLTIzLjEtMjMuMS01Ny42LTI3LjYtODUuNC0xMy45TDE5MiAxNTguMVY5Nkw2NCAwIDAgNjRsOTYgMTI4aDYyLjFsMTA2LjYgMTA2LjZjLTEzLjYgMjcuOC05LjIgNjIuMyAxMy45IDg1LjRsMTE3LjEgMTE3LjFjMTQuNiAxNC42IDM4LjIgMTQuNiA1Mi43IDBsNTIuNy01Mi43YzE0LjUtMTQuNiAxNC41LTM4LjIgMC01Mi43ek0zMzEuNyAyMjVjMjguMyAwIDU0LjkgMTEgNzQuOSAzMWwxOS40IDE5LjRjMTUuOC02LjkgMzAuOC0xNi41IDQzLjgtMjkuNSAzNy4xLTM3LjEgNDkuNy04OS4zIDM3LjktMTM2LjctMi4yLTktMTMuNS0xMi4xLTIwLjEtNS41bC03NC40IDc0LjQtNjcuOS0xMS4zTDMzNCA5OC45bDc0LjQtNzQuNGM2LjYtNi42IDMuNC0xNy45LTUuNy0yMC4yLTQ3LjQtMTEuNy05OS42LjktMTM2LjYgMzcuOS0yOC41IDI4LjUtNDEuOSA2Ni4xLTQxLjIgMTAzLjZsODIuMSA4Mi4xYzguMS0xLjkgMTYuNS0yLjkgMjQuNy0yLjl6bS0xMDMuOSA4MmwtNTYuNy01Ni43TDE4LjcgNDAyLjhjLTI1IDI1LTI1IDY1LjUgMCA5MC41czY1LjUgMjUgOTAuNSAwbDEyMy42LTEyMy42Yy03LjYtMTkuOS05LjktNDEuNi01LTYyLjd6TTY0IDQ3MmMtMTMuMiAwLTI0LTEwLjgtMjQtMjQgMC0xMy4zIDEwLjctMjQgMjQtMjRzMjQgMTAuNyAyNCAyNGMwIDEzLjItMTAuNyAyNC0yNCAyNHoiPjwvcGF0aD4KCTwvc3ltYm9sPgk8c3ltYm9sIGlkPSJpY29uLWdsb2JlIiB2aWV3Ym94PSIwIDAgNDk2IDUxMiI+CgkJPHBhdGggZD0iTTMzNi41IDE2MEMzMjIgNzAuNyAyODcuOCA4IDI0OCA4cy03NCA2Mi43LTg4LjUgMTUyaDE3N3pNMTUyIDI1NmMwIDIyLjIgMS4yIDQzLjUgMy4zIDY0aDE4NS4zYzIuMS0yMC41IDMuMy00MS44IDMuMy02NHMtMS4yLTQzLjUtMy4zLTY0SDE1NS4zYy0yLjEgMjAuNS0zLjMgNDEuOC0zLjMgNjR6bTMyNC43LTk2Yy0yOC42LTY3LjktODYuNS0xMjAuNC0xNTgtMTQxLjYgMjQuNCAzMy44IDQxLjIgODQuNyA1MCAxNDEuNmgxMDh6TTE3Ny4yIDE4LjRDMTA1LjggMzkuNiA0Ny44IDkyLjEgMTkuMyAxNjBoMTA4YzguNy01Ni45IDI1LjUtMTA3LjggNDkuOS0xNDEuNnpNNDg3LjQgMTkySDM3Mi43YzIuMSAyMSAzLjMgNDIuNSAzLjMgNjRzLTEuMiA0My0zLjMgNjRoMTE0LjZjNS41LTIwLjUgOC42LTQxLjggOC42LTY0cy0zLjEtNDMuNS04LjUtNjR6TTEyMCAyNTZjMC0yMS41IDEuMi00MyAzLjMtNjRIOC42QzMuMiAyMTIuNSAwIDIzMy44IDAgMjU2czMuMiA0My41IDguNiA2NGgxMTQuNmMtMi0yMS0zLjItNDIuNS0zLjItNjR6bTM5LjUgOTZjMTQuNSA4OS4zIDQ4LjcgMTUyIDg4LjUgMTUyczc0LTYyLjcgODguNS0xNTJoLTE3N3ptMTU5LjMgMTQxLjZjNzEuNC0yMS4yIDEyOS40LTczLjcgMTU4LTE0MS42aC0xMDhjLTguOCA1Ni45LTI1LjYgMTA3LjgtNTAgMTQxLjZ6TTE5LjMgMzUyYzI4LjYgNjcuOSA4Ni41IDEyMC40IDE1OCAxNDEuNi0yNC40LTMzLjgtNDEuMi04NC43LTUwLTE0MS42aC0xMDh6Ij48L3BhdGg+Cgk8L3N5bWJvbD4JPHN5bWJvbCBpZD0iaWNvbi1uZXdzcGFwZXIiIHZpZXdib3g9IjAgMCA1NzYgNTEyIj4KCQk8cGF0aCBkPSJNNTUyIDY0SDg4Yy0xMy4yNTUgMC0yNCAxMC43NDUtMjQgMjR2OEgyNGMtMTMuMjU1IDAtMjQgMTAuNzQ1LTI0IDI0djI3MmMwIDMwLjkyOCAyNS4wNzIgNTYgNTYgNTZoNDcyYzI2LjUxIDAgNDgtMjEuNDkgNDgtNDhWODhjMC0xMy4yNTUtMTAuNzQ1LTI0LTI0LTI0ek01NiA0MDBhOCA4IDAgMCAxLTgtOFYxNDRoMTZ2MjQ4YTggOCAwIDAgMS04IDh6bTIzNi0xNkgxNDBjLTYuNjI3IDAtMTItNS4zNzMtMTItMTJ2LThjMC02LjYyNyA1LjM3My0xMiAxMi0xMmgxNTJjNi42MjcgMCAxMiA1LjM3MyAxMiAxMnY4YzAgNi42MjctNS4zNzMgMTItMTIgMTJ6bTIwOCAwSDM0OGMtNi42MjcgMC0xMi01LjM3My0xMi0xMnYtOGMwLTYuNjI3IDUuMzczLTEyIDEyLTEyaDE1MmM2LjYyNyAwIDEyIDUuMzczIDEyIDEydjhjMCA2LjYyNy01LjM3MyAxMi0xMiAxMnptLTIwOC05NkgxNDBjLTYuNjI3IDAtMTItNS4zNzMtMTItMTJ2LThjMC02LjYyNyA1LjM3My0xMiAxMi0xMmgxNTJjNi42MjcgMCAxMiA1LjM3MyAxMiAxMnY4YzAgNi42MjctNS4zNzMgMTItMTIgMTJ6bTIwOCAwSDM0OGMtNi42MjcgMC0xMi01LjM3My0xMi0xMnYtOGMwLTYuNjI3IDUuMzczLTEyIDEyLTEyaDE1MmM2LjYyNyAwIDEyIDUuMzczIDEyIDEydjhjMCA2LjYyNy01LjM3MyAxMi0xMiAxMnptMC05NkgxNDBjLTYuNjI3IDAtMTItNS4zNzMtMTItMTJ2LTQwYzAtNi42MjcgNS4zNzMtMTIgMTItMTJoMzYwYzYuNjI3IDAgMTIgNS4zNzMgMTIgMTJ2NDBjMCA2LjYyNy01LjM3MyAxMi0xMiAxMnoiPjwvcGF0aD4KCTwvc3ltYm9sPgoJCQk8L3N2Zz4KCgkJCQkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJpc01vYmlsZSIgbmFtZT0iaXNNb2JpbGUiIHZhbHVlPSIxIj4KCQkJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9IlNpdGVzX1BhZ2VfR2VuZXJhbF9NZW51X0JUTiIgdmFsdWU9Ik1lbnUgZMOpcm91bGFudCI+CgkJCQoJCQk8aGVhZGVyIGNsYXNzPSJtb2JpbGUtaGVhZGVyIGZsZXgtYm94IGZsZXgtYmV0d2VlbiBhbGlnbi1jZW50ZXIgLS1mczIgdGhpbiIgaGlkZGVuPSIxIj4KCQkJCQoJCQk8Ym94LWxjIGNsYXNzPSJidXJnZXItbWVudS1jb250YWluZXIgLXBoIj4KCQkJCTxsYWJlbCBmb3I9ImJtX3RvZ2dsZSI+PC9sYWJlbD4KCQkJCTxpbnB1dCBpZD0iYm1fdG9nZ2xlIiB0eXBlPSJjaGVja2JveCIgaGlkZGVuPgoJCQkJPGRpdiBpZD0iYnVyZ2VyLW1lbnUtYnV0dG9uIiBjbGFzcz0ic3RhY2stbGMgYnVyZ2VyLW1lbnUtYnV0dG9uIC0tcy0yIj4KCQkJCQk8c3BhbiBjbGFzcz0iYnVyZ2VyX3RvcCI+PC9zcGFuPgoJCQkJCTxzcGFuIGNsYXNzPSJidXJnZXJfbWlkZGxlIj48L3NwYW4+CgkJCQkJPHNwYW4gY2xhc3M9ImJ1cmdlcl9ib3R0b20iPjwvc3Bhbj4KCQkJCTwvZGl2PgoKCQkJCTxhc2lkZSBjbGFzcz0iYnVyZ2VyLW5hdiI+CgkJCQkJCQkJPG5hdj4KCQkJCTx1bD4KCQkJCQkJCQkJPGxpIGNsYXNzPSIiIGhyZWY9Ij9wYXRoPSI+CgkJCQkJCgkJCQkJPGEgY2xhc3M9IlVTRUQgICBtZW51LWl0ZW0gZmxleC1ib3giIGhyZWY9Ij9wYXRoPS9pbnZlbnRhaXJlLmh0bWwiIHRhcmdldD0iX3RvcCIgb25jbGljaz0iIj4KCQkJCQkJCQkJPHN2ZyBjbGFzcz0iaWNvbiI+PHVzZSB4bGluazpocmVmPSIjaWNvbi1jYXIiPjwvdXNlPjwvc3ZnPgoJCQkJCQk8c3BhbiBjbGFzcz0ic2hyaW5rLWdyb3cgc2tlbGV0b24tdHh0Ij5WZW50ZXM8L3NwYW4+CgkJCQkJCQkJCQkJPHNwYW4gcm9sZT0iYnV0dG9uIiB0YWJpbmRleD0iMCIgY2xhc3M9Im1lbnVFeHBhbmQgLXAgLS1zLTMiIGFyaWEtbGFiZWw9Ik1lbnUgZMOpcm91bGFudCI+CgkJCQkJCQkJCTxzdmcgY2xhc3M9Imljb24iPjx1c2UgeGxpbms6aHJlZj0iI2ljb24tY2hldnJvbi1kb3duIj48L3VzZT48L3N2Zz4KCQkJCQk8L3NwYW4+CgkJCQkJPC9hPgoJCQkJCQkJCQkJPGRpdiBjbGFzcz0ic3VibWVudUl0ZW1Db250YWluZXIiIHN0eWxlPSJkaXNwbGF5Om5vbmU7Ij4KCQkJCQkJPHN0YWNrLWxjIGlkPSJpdGVtX1VTRUQiIGNsYXNzPSItLXMtOSI+CgkJCQkJCQkJCQkJCQk8c3BhbiBjbGFzcz0iLW0wIj4KCQkJCQkJCTxhIGNsYXNzPSJzdWJtZW51LWl0ZW0gZmxleC1ib3ggZmxleC1iZXR3ZWVuIC1idCAtLXMtNSBVU0VEX05FV0lOViIgaHJlZj0iP3BhdGg9L25ldWZzL2ludmVudGFpcmUvcmVjaGVyY2hlLmh0bWwiIHRhcmdldD0iIiBvbmNsaWNrPSIiPgoJCQkJCQkJCTxzcGFuIGNsYXNzPSItcGgiPlbDqWhpY3VsZXMgbmV1ZnMgICgyNzIpPC9zcGFuPgoJCQkJCQkJCTxzcGFuIHJvbGU9ImJ1dHRvbiIgdGFiaW5kZXg9IjAiIGNsYXNzPSItcCAtLXMtNSI+CgkJCQkJCQkJCQkJCTxzdmcgY2xhc3M9Imljb24iPjx1c2UgeGxpbms6aHJlZj0iI2ljb24tY2hldnJvbi1yaWdodCI+PC91c2U+PC9zdmc+CgkJCQkJCQkJPC9zcGFuPgoJCQkJCQkJPC9hPgoJCQkJCQk8L3NwYW4+CQkJCQkJPHNwYW4gY2xhc3M9Ii1tMCI+CgkJCQkJCQk8YSBjbGFzcz0ic3VibWVudS1pdGVtIGZsZXgtYm94IGZsZXgtYmV0d2VlbiAtYnQgLS1zLTUgVVNFRF9DQVJTIiBocmVmPSI\/cGF0aD0vb2NjYXNpb24vcmVjaGVyY2hlLmh0bWwiIHRhcmdldD0iIiBvbmNsaWNrPSIiPgoJCQkJCQkJCTxzcGFuIGNsYXNzPSItcGgiPlbDqWhpY3VsZXMgZCdvY2Nhc2lvbiAgKDExMzQpPC9zcGFuPgoJCQkJCQkJCTxzcGFuIHJvbGU9ImJ1dHRvbiIgdGFiaW5kZXg9IjAiIGNsYXNzPSItcCAtLXMtNSI+CgkJCQkJCQkJCQkJCTxzdmcgY2xhc3M9Imljb24iPjx1c2UgeGxpbms6aHJlZj0iI2ljb24tY2hldnJvbi1yaWdodCI+PC91c2U+PC9zdmc+CgkJCQkJCQkJPC9zcGFuPgoJCQkJCQkJPC9hPgoJCQkJCQk8L3NwYW4+CQkJCQkJPHNwYW4gY2xhc3M9Ii1tMCI+CgkJCQkJCQk8YSBjbGFzcz0ic3VibWVudS1pdGVtIGZsZXgtYm94IGZsZXgtYmV0d2VlbiAtYnQgLS1zLTUgOGY4OGI5Mi04YjYyLTFmYjktYTdjYy0xZiIgaHJlZj0iP3BhdGg9L2RlbW9uc3RyYXRldXJzL3JlY2hlcmNoZS5odG1sIiB0YXJnZXQ9IiIgb25jbGljaz0iIj4KCQkJCQkJCQk8c3BhbiBjbGFzcz0iLXBoIj5Ww6loaWN1bGVzIGTDqW1vbnN0cmF0ZXVyczwvc3Bhbj4KCQkJCQkJCQk8c3BhbiByb2xlPSJidXR0b24iIHRhYmluZGV4PSIwIiBjbGFzcz0iLXAgLS1zLTUiPgoJCQkJCQkJCQkJCQk8c3ZnIGNsYXNzPSJpY29uIj48dXNlIHhsaW5rOmhyZWY9IiNpY29uLWNoZXZyb24tcmlnaHQiPjwvdXNlPjwvc3ZnPgoJCQkJCQkJCTwvc3Bhbj4KCQkJCQkJCTwvYT4KCQkJCQkJPC9zcGFuPgkJCQkJCTxzcGFuIGNsYXNzPSItbTAiPgoJCQkJCQkJPGEgY2xhc3M9InN1Ym1lbnUtaXRlbSBmbGV4LWJveCBmbGV4LWJldHdlZW4gLWJ0IC0tcy01IFVTRURfQ0VSVF9DQVJTIiBocmVmPSI\/cGF0aD0vb2NjYXNpb24vY2VydGlmaWVzLmh0bWwiIHRhcmdldD0iIiBvbmNsaWNrPSIiPgoJCQkJCQkJCTxzcGFuIGNsYXNzPSItcGgiPlbDqWhpY3VsZXMgZCdvY2Nhc2lvbiBjZXJ0aWbDqXM8L3NwYW4+CgkJCQkJCQkJPHNwYW4gcm9sZT0iYnV0dG9uIiB0YWJpbmRleD0iMCIgY2xhc3M9Ii1wIC0tcy01Ij4KCQkJCQkJCQkJCQkJPHN2ZyBjbGFzcz0iaWNvbiI+PHVzZSB4bGluazpocmVmPSIjaWNvbi1jaGV2cm9uLXJpZ2h0Ij48L3VzZT48L3N2Zz4KCQkJCQkJCQk8L3NwYW4+CgkJCQkJCQk8L2E+CgkJCQkJCTwvc3Bhbj4JCQkJCQk8c3BhbiBjbGFzcz0iLW0wIj4KCQkJCQkJCTxhIGNsYXNzPSJzdWJtZW51LWl0ZW0gZmxleC1ib3ggZmxleC1iZXR3ZWVuIC1idCAtLXMtNSBVU0VEX0FMTElOViIgaHJlZj0iP3BhdGg9L2ludmVudGFpcmUvYTguaHRtbCIgdGFyZ2V0PSIiIG9uY2xpY2s9IiI+CgkJCQkJCQkJPHNwYW4gY2xhc3M9Ii1waCI+Vm9pciB0b3VzIGxlcyB2w6loaWN1bGVzPC9zcGFuPgoJCQkJCQkJCTxzcGFuIHJvbGU9ImJ1dHRvbiIgdGFiaW5kZXg9IjAiIGNsYXNzPSItcCAtLXMtNSI+CgkJCQkJCQkJCQkJCTxzdmcgY2xhc3M9Imljb24iPjx1c2UgeGxpbms6aHJlZj0iI2ljb24tY2hldnJvbi1yaWdodCI+PC91c2U+PC9zdmc+CgkJCQkJCQkJPC9zcGFuPgoJCQkJCQkJPC9hPgoJCQkJCQk8L3NwYW4+CQkJCQkJPHNwYW4gY2xhc3M9Ii1tMCI+CgkJCQkJCQk8YSBjbGFzcz0ic3VibWVudS1pdGVtIGZsZXgtYm94IGZsZXgtYmV0d2VlbiAtYnQgLS1zLTUgR1BfYmM2ODhhZGVjYzQwZmUyMiIgaHJlZj0iP3BhdGg9L29jY2FzaW9uLWNlcnRpZmllLmh0bWwiIHRhcmdldD0iIiBvbmNsaWNrPSIiPgoJCQkJCQkJCTxzcGFuIGNsYXNzPSItcGgiPlF1J2VzdC1jZSBxdWUgdsOpaGljdWxlIGQnb2NjYXNpb24gY2VydGlmacOpPzwvc3Bhbj4KCQkJCQkJCQk8c3BhbiByb2xlPSJidXR0b24iIHRhYmluZGV4PSIwIiBjbGFzcz0iLXAgLS1zLTUiPgoJCQkJCQkJCQkJCQk8c3ZnIGNsYXNzPSJpY29uIj48dXNlIHhsaW5rOmhyZWY9IiNpY29uLWNoZXZyb24tcmlnaHQiPjwvdXNlPjwvc3ZnPgoJCQkJCQkJCTwvc3Bhbj4KCQkJCQkJCTwvYT4KCQkJCQkJPC9zcGFuPgoJCQkJCQk8L3N0YWNrLWxjPgoJCQkJCTwvZGl2PgoJCQkJPC9saT4KCgkJCQkKCQkJCTxsaSBjbGFzcz0iIj4KCQkJCQkKCQkJCQk8YSBjbGFzcz0iTkVXICAgbWVudS1pdGVtIGZsZXgtYm94IiBocmVmPSI\/cGF0aD0vbmV1ZnMvbm91dmVhdS5odG1sIiB0YXJnZXQ9Il90b3AiIG9uY2xpY2s9IiI+CgkJCQkJCQkJCTxzdmcgY2xhc3M9Imljb24iPjx1c2UgeGxpbms6aHJlZj0iI2ljb24tc3RlZXJpbmctd2hlZWwiPjwvdXNlPjwvc3ZnPgoJCQkJCQk8c3BhbiBjbGFzcz0ic2hyaW5rLWdyb3cgc2tlbGV0b24tdHh0Ij5TYWxsZSBkJ2V4cG9zaXRpb248L3NwYW4+CgkJCQkJCQkJCQkJPHNwYW4gcm9sZT0iYnV0dG9uIiB0YWJpbmRleD0iMCIgY2xhc3M9Im1lbnVFeHBhbmQgLXAgLS1zLTMiIGFyaWEtbGFiZWw9Ik1lbnUgZMOpcm91bGFudCI+CgkJCQkJCQkJCTxzdmcgY2xhc3M9Imljb24iPjx1c2UgeGxpbms6aHJlZj0iI2ljb24tY2hldnJvbi1kb3duIj48L3VzZT48L3N2Zz4KCQkJCQk8L3NwYW4+CgkJCQkJPC9hPgoJCQkJCQkJCQkJPGRpdiBjbGFzcz0ic3VibWVudUl0ZW1Db250YWluZXIiIHN0eWxlPSJkaXNwbGF5Om5vbmU7Ij4KCQkJCQkJPHN0YWNrLWxjIGlkPSJpdGVtX05FVyIgY2xhc3M9Ii0tcy05Ij4KCQkJCQkJCQkJCQkJCTxzcGFuIGNsYXNzPSItbTAiPgoJCQkJCQkJPGEgY2xhc3M9InN1Ym1lbnUtaXRlbSBmbGV4LWJveCBmbGV4LWJldHdlZW4gLWJ0IC0tcy01IE5FV19MSU5FVVAiIGhyZWY9Ij9wYXRoPS9uZXVmcy9ub3V2ZWF1Lmh0bWwiIHRhcmdldD0iIiBvbmNsaWNrPSIiPgoJCQkJCQkJCTxzcGFuIGNsYXNzPSItcGgiPlZvaXIgbGEgZ2FtbWU8L3NwYW4+CgkJCQkJCQkJPHNwYW4gcm9sZT0iYnV0dG9uIiB0YWJpbmRleD0iMCIgY2xhc3M9Ii1wIC0tcy01Ij4KCQkJCQkJCQkJCQkJPHN2ZyBjbGFzcz0iaWNvbiI+PHVzZSB4bGluazpocmVmPSIjaWNvbi1jaGV2cm9uLXJpZ2h0Ij48L3VzZT48L3N2Zz4KCQkJCQkJCQk8L3NwYW4+CgkJCQkJCQk8L2E+CgkJCQkJCTwvc3Bhbj4JCQkJCQk8c3BhbiBjbGFzcz0iLW0wIj4KCQkJCQkJCTxhIGNsYXNzPSJzdWJtZW51LWl0ZW0gZmxleC1ib3ggZmxleC1iZXR3ZWVuIC1idCAtLXMtNSBORVdfU0VEQU4iIGhyZWY9Ij9wYXRoPS9uZXVmcy9hdXRvcy5odG1sIiB0YXJnZXQ9IiIgb25jbGljaz0iIj4KCQkJCQkJCQk8c3BhbiBjbGFzcz0iLXBoIj5BdXRvczwvc3Bhbj4KCQkJCQkJCQk8c3BhbiByb2xlPSJidXR0b24iIHRhYmluZGV4PSIwIiBjbGFzcz0iLXAgLS1zLTUiPgoJCQkJCQkJCQkJCQk8c3ZnIGNsYXNzPSJpY29uIj48dXNlIHhsaW5rOmhyZWY9IiNpY29uLWNoZXZyb24tcmlnaHQiPjwvdXNlPjwvc3ZnPgoJCQkJCQkJCTwvc3Bhbj4KCQkJCQkJCTwvYT4KCQkJCQkJPC9zcGFuPgkJCQkJCTxzcGFuIGNsYXNzPSItbTAiPgoJCQkJCQkJPGEgY2xhc3M9InN1Ym1lbnUtaXRlbSBmbGV4LWJveCBmbGV4LWJldHdlZW4gLWJ0IC0tcy01IE5FV19TVVYiIGhyZWY9Ij9wYXRoPS9uZXVmcy9WVVMuaHRtbCIgdGFyZ2V0PSIiIG9uY2xpY2s9IiI+CgkJCQkJCQkJPHNwYW4gY2xhc3M9Ii1waCI+VlVTPC9zcGFuPgoJCQkJCQkJCTxzcGFuIHJvbGU9ImJ1dHRvbiIgdGFiaW5kZXg9IjAiIGNsYXNzPSItcCAtLXMtNSI+CgkJCQkJCQkJCQkJCTxzdmcgY2xhc3M9Imljb24iPjx1c2UgeGxpbms6aHJlZj0iI2ljb24tY2hldnJvbi1yaWdodCI+PC91c2U+PC9zdmc+CgkJCQkJCQkJPC9zcGFuPgoJCQkJCQkJPC9hPgoJCQkJCQk8L3NwYW4+CQkJCQkJPHNwYW4gY2xhc3M9Ii1tMCI+CgkJCQkJCQk8YSBjbGFzcz0ic3VibWVudS1pdGVtIGZsZXgtYm94IGZsZXgtYmV0d2VlbiAtYnQgLS1zLTUgTkVXX01JTklWQU4iIGhyZWY9Ij9wYXRoPS9uZXVmcy9taW5pX2ZvdXJnb25uZXR0ZXMuaHRtbCIgdGFyZ2V0PSIiIG9uY2xpY2s9IiI+CgkJCQkJCQkJPHNwYW4gY2xhc3M9Ii1waCI+TWluaS1mb3VyZ29ubmV0dGVzPC9zcGFuPgoJCQkJCQkJCTxzcGFuIHJvbGU9ImJ1dHRvbiIgdGFiaW5kZXg9IjAiIGNsYXNzPSItcCAtLXMtNSI+CgkJCQkJCQkJCQkJCTxzdmcgY2xhc3M9Imljb24iPjx1c2UgeGxpbms6aHJlZj0iI2ljb24tY2hldnJvbi1yaWdodCI+PC91c2U+PC9zdmc+CgkJCQkJCQkJPC9zcGFuPgoJCQkJCQkJPC9hPgoJCQkJCQk8L3NwYW4+CQkJCQkJPHNwYW4gY2xhc3M9Ii1tMCI+CgkJCQkJCQk8YSBjbGFzcz0ic3VibWVudS1pdGVtIGZsZXgtYm94IGZsZXgtYmV0d2VlbiAtYnQgLS1zLTUgTkVXX0hZQlJJRCIgaHJlZj0iP3BhdGg9L25ldWZzL0h5YnJpZGVzLmh0bWwiIHRhcmdldD0iIiBvbmNsaWNrPSIiPgoJCQkJCQkJCTxzcGFuIGNsYXNzPSItcGgiPkh5YnJpZGVzPC9zcGFuPgoJCQkJCQkJCTxzcGFuIHJvbGU9ImJ1dHRvbiIgdGFiaW5kZXg9IjAiIGNsYXNzPSItcCAtLXMtNSI+CgkJCQkJCQkJCQkJCTxzdmcgY2xhc3M9Imljb24iPjx1c2UgeGxpbms6aHJlZj0iI2ljb24tY2hldnJvbi1yaWdodCI+PC91c2U+PC9zdmc+CgkJCQkJCQkJPC9zcGFuPgoJCQkJCQkJPC9hPgoJCQkJCQk8L3NwYW4+CQkJCQkJPHNwYW4gY2xhc3M9Ii1tMCI+CgkJCQkJCQk8YSBjbGFzcz0ic3VibWVudS1pdGVtIGZsZXgtYm94IGZsZXgtYmV0d2VlbiAtYnQgLS1zLTUgTkVXX1BIRVYiIGhyZWY9Ij9wYXRoPS9uZXVmcy9QSEVWLmh0bWwiIHRhcmdldD0iIiBvbmNsaWNrPSIiPgoJCQkJCQkJCTxzcGFuIGNsYXNzPSItcGgiPkh5YnJpZGVzIHJlY2hhcmdlYWJsZXM8L3NwYW4+CgkJCQkJCQkJPHNwYW4gcm9sZT0iYnV0dG9uIiB0YWJpbmRleD0iMCIgY2xhc3M9Ii1wIC0tcy01Ij4KCQkJCQkJCQkJCQkJPHN2ZyBjbGFzcz0iaWNvbiI+PHVzZSB4bGluazpocmVmPSIjaWNvbi1jaGV2cm9uLXJpZ2h0Ij48L3VzZT48L3N2Zz4KCQkJCQkJCQk8L3NwYW4+CgkJCQkJCQk8L2E+CgkJCQkJCTwvc3Bhbj4JCQkJCQk8c3BhbiBjbGFzcz0iLW0wIj4KCQkJCQkJCTxhIGNsYXNzPSJzdWJtZW51LWl0ZW0gZmxleC1ib3ggZmxleC1iZXR3ZWVuIC1idCAtLXMtNSBORVdfRUxFQ1RSSUMiIGhyZWY9Ij9wYXRoPS9uZXVmcy9lbGVjdHJpcXVlLmh0bWwiIHRhcmdldD0iIiBvbmNsaWNrPSIiPgoJCQkJCQkJCTxzcGFuIGNsYXNzPSItcGgiPsOJbGVjdHJpcXVlczwvc3Bhbj4KCQkJCQkJCQk8c3BhbiByb2xlPSJidXR0b24iIHRhYmluZGV4PSIwIiBjbGFzcz0iLXAgLS1zLTUiPgoJCQkJCQkJCQkJCQk8c3ZnIGNsYXNzPSJpY29uIj48dXNlIHhsaW5rOmhyZWY9IiNpY29uLWNoZXZyb24tcmlnaHQiPjwvdXNlPjwvc3ZnPgoJCQkJCQkJCTwvc3Bhbj4KCQkJCQkJCTwvYT4KCQkJCQkJPC9zcGFuPgkJCQkJCTxzcGFuIGNsYXNzPSItbTAiPgoJCQkJCQkJPGEgY2xhc3M9InN1Ym1lbnUtaXRlbSBmbGV4LWJveCBmbGV4LWJldHdlZW4gLWJ0IC0tcy01IEdQXzJmOWY5MDMwYTQ2YmFmZmUiIGhyZWY9Ij9wYXRoPS92ZWhpY3VsZXMtZWxlY3RyaXF1ZXMta2lhLmh0bWwiIHRhcmdldD0iIiBvbmNsaWNrPSIiPgoJCQkJCQkJCTxzcGFuIGNsYXNzPSItcGgiPlbDqWhpY3VsZXMgw6lsZWN0cmlxdWVzPC9zcGFuPgoJCQkJCQkJCTxzcGFuIHJvbGU9ImJ1dHRvbiIgdGFiaW5kZXg9IjAiIGNsYXNzPSItcCAtLXMtNSI+CgkJCQkJCQkJCQkJCTxzdmcgY2xhc3M9Imljb24iPjx1c2UgeGxpbms6aHJlZj0iI2ljb24tY2hldnJvbi1yaWdodCI+PC91c2U+PC9zdmc+CgkJCQkJCQkJPC9zcGFuPgoJCQkJCQkJPC9hPgoJCQkJCQk8L3NwYW4+CgkJCQkJCTwvc3RhY2stbGM+CgkJCQkJPC9kaXY+CgkJCQk8L2xpPgoKCQkJCQoJCQkJPGxpIGNsYXNzPSIiPgoJCQkJCQoJCQkJCTxhIGNsYXNzPSJERU1PICAgbWVudS1pdGVtIGZsZXgtYm94IiBocmVmPSI\/cGF0aD0vZGVtb25zdHJhdGV1cnMvcmVjaGVyY2hlLmh0bWwiIHRhcmdldD0iX3RvcCIgb25jbGljaz0iIj4KCQkJCQkJCQkJPHN2ZyBjbGFzcz0iaWNvbiI+PHVzZSB4bGluazpocmVmPSIjaWNvbi1rZXkiPjwvdXNlPjwvc3ZnPgoJCQkJCQk8c3BhbiBjbGFzcz0ic2hyaW5rLWdyb3cgc2tlbGV0b24tdHh0IiBkYXRhLW1lbnUtdHJhbnNsYXRlPSJERU1PIj5Ew6ltb25zdHJhdGV1cnM8L3NwYW4+CgkJCQkJCQkJCQkJPHNwYW4gcm9sZT0iYnV0dG9uIiB0YWJpbmRleD0iMCIgY2xhc3M9Im1lbnVFeHBhbmQgLXAgLS1zLTMiIGFyaWEtbGFiZWw9Ik1lbnUgZMOpcm91bGFudCI+CgkJCQkJCQkJCTxzdmcgY2xhc3M9Imljb24iPjx1c2UgeGxpbms6aHJlZj0iI2ljb24tY2hldnJvbi1kb3duIj48L3VzZT48L3N2Zz4KCQkJCQk8L3NwYW4+CgkJCQkJPC9hPgoJCQkJCQkJCQkJPGRpdiBjbGFzcz0ic3VibWVudUl0ZW1Db250YWluZXIiIHN0eWxlPSJkaXNwbGF5Om5vbmU7Ij4KCQkJCQkJPHN0YWNrLWxjIGlkPSJpdGVtX0RFTU8iIGNsYXNzPSItLXMtOSI+CgkJCQkJCQkJCQkJCQk8c3BhbiBjbGFzcz0iLW0wIj4KCQkJCQkJCTxhIGNsYXNzPSJzdWJtZW51LWl0ZW0gZmxleC1ib3ggZmxleC1iZXR3ZWVuIC1idCAtLXMtNSA0ZTA4YjQ3Yy00NTM2LTIyNjktYTViMy0xIiBocmVmPSI\/cGF0aD0vZGVtb25zdHJhdGV1cnMvcmVjaGVyY2hlLmh0bWwiIHRhcmdldD0iIiBvbmNsaWNrPSIiPgoJCQkJCQkJCTxzcGFuIGNsYXNzPSItcGgiPlbDqWhpY3VsZXMgZMOpbW9uc3RyYXRldXJzPC9zcGFuPgoJCQkJCQkJCTxzcGFuIHJvbGU9ImJ1dHRvbiIgdGFiaW5kZXg9IjAiIGNsYXNzPSItcCAtLXMtNSI+CgkJCQkJCQkJCQkJCTxzdmcgY2xhc3M9Imljb24iPjx1c2UgeGxpbms6aHJlZj0iI2ljb24tY2hldnJvbi1yaWdodCI+PC91c2U+PC9zdmc+CgkJCQkJCQkJPC9zcGFuPgoJCQkJCQkJPC9hPgoJCQkJCQk8L3NwYW4+CgkJCQkJCTwvc3RhY2stbGM+CgkJCQkJPC9kaXY+CgkJCQk8L2xpPgoKCQkJCQoJCQkJPGxpIGNsYXNzPSIiPgoJCQkJCQoJCQkJCTxhIGNsYXNzPSJHUF9uamJtenR6a21nbm1tdHluIG5vdENsaWNrYWJsZSAgbWVudS1pdGVtIGZsZXgtYm94IiBocmVmPSI\/cGF0aD0jIiB0YXJnZXQ9Il90b3AiIG9uY2xpY2s9InJldHVybiBmYWxzZTsiPgoJCQkJCQkJCQk8c3ZnIGNsYXNzPSJpY29uIj48dXNlIHhsaW5rOmhyZWY9IiNpY29uLWNoZXZyb24tY2lyY2xlLXJpZ2h0Ij48L3VzZT48L3N2Zz4KCQkJCQkJPHNwYW4gY2xhc3M9InNocmluay1ncm93IHNrZWxldG9uLXR4dCI+UmVjaGVyY2hlIEtpYTwvc3Bhbj4KCQkJCQkJCQkJCQk8c3BhbiByb2xlPSJidXR0b24iIHRhYmluZGV4PSIwIiBjbGFzcz0ibWVudUV4cGFuZCAtcCAtLXMtMyIgYXJpYS1sYWJlbD0iTWVudSBkw6lyb3VsYW50Ij4KCQkJCQkJCQkJPHN2ZyBjbGFzcz0iaWNvbiI+PHVzZSB4bGluazpocmVmPSIjaWNvbi1jaGV2cm9uLWRvd24iPjwvdXNlPjwvc3ZnPgoJCQkJCTwvc3Bhbj4KCQkJCQk8L2E+CgkJCQkJCQkJCQk8ZGl2IGNsYXNzPSJzdWJtZW51SXRlbUNvbnRhaW5lciIgc3R5bGU9ImRpc3BsYXk6bm9uZTsiPgoJCQkJCQk8c3RhY2stbGMgaWQ9Iml0ZW1fR1BfbmpibXp0emttZ25tbXR5biIgY2xhc3M9Ii0tcy05Ij4KCQkJCQkJCQkJCQkJCTxzcGFuIGNsYXNzPSItbTAiPgoJCQkJCQkJPGEgY2xhc3M9InN1Ym1lbnUtaXRlbSBmbGV4LWJveCBmbGV4LWJldHdlZW4gLWJ0IC0tcy01IDhiZTU3Y2YyLTg5NTUtOGE3Ny1mZmIxLWQiIGhyZWY9Ij9wYXRoPS9ub3V2ZWxsZXMuaHRtbCIgdGFyZ2V0PSIiIG9uY2xpY2s9IiI+CgkJCQkJCQkJPHNwYW4gY2xhc3M9Ii1waCI+Tm91dmVsbGVzICZhbXA7IMOJdsOpbmVtZW50czwvc3Bhbj4KCQkJCQkJCQk8c3BhbiByb2xlPSJidXR0b24iIHRhYmluZGV4PSIwIiBjbGFzcz0iLXAgLS1zLTUiPgoJCQkJCQkJCQkJCQk8c3ZnIGNsYXNzPSJpY29uIj48dXNlIHhsaW5rOmhyZWY9IiNpY29uLWNoZXZyb24tcmlnaHQiPjwvdXNlPjwvc3ZnPgoJCQkJCQkJCTwvc3Bhbj4KCQkJCQkJCTwvYT4KCQkJCQkJPC9zcGFuPgkJCQkJCTxzcGFuIGNsYXNzPSItbTAiPgoJCQkJCQkJPGEgY2xhc3M9InN1Ym1lbnUtaXRlbSBmbGV4LWJveCBmbGV4LWJldHdlZW4gLWJ0IC0tcy01IDJlMzYxOWE4LWJlYTUtYWNmYS00N2ViLTMiIGhyZWY9Ij9wYXRoPS9LaWEtSzQtMjAyNS11bmUtcmV2b2x1dGlvbi1kYW5zLWxlLXNlZ21lbnQtZGVzLWJlcmxpbmVzLWNvbXBhY3Rlcy5odG1sIiB0YXJnZXQ9IiIgb25jbGljaz0iIj4KCQkJCQkJCQk8c3BhbiBjbGFzcz0iLXBoIj5LNCAyMDI1PC9zcGFuPgoJCQkJCQkJCTxzcGFuIHJvbGU9ImJ1dHRvbiIgdGFiaW5kZXg9IjAiIGNsYXNzPSItcCAtLXMtNSI+CgkJCQkJCQkJCQkJCTxzdmcgY2xhc3M9Imljb24iPjx1c2UgeGxpbms6aHJlZj0iI2ljb24tY2hldnJvbi1yaWdodCI+PC91c2U+PC9zdmc+CgkJCQkJCQkJPC9zcGFuPgoJCQkJCQkJPC9hPgoJCQkJCQk8L3NwYW4+CQkJCQkJPHNwYW4gY2xhc3M9Ii1tMCI+CgkJCQkJCQk8YSBjbGFzcz0ic3VibWVudS1pdGVtIGZsZXgtYm94IGZsZXgtYmV0d2VlbiAtYnQgLS1zLTUgNzZkMDg5ZjctNDllNy0xNmViLWU0YTUtYiIgaHJlZj0iP3BhdGg9L3BvdXJxdW9pLWVzdC1jZS1xdWUtZW50cmV0aWVuLWRlcy12ZWhpY3VsZXMtZWxlY3RyaXF1ZXMtbmUtZG9pdC1wYXMtZXRyZS1uZWdsaWdlLmh0bWwiIHRhcmdldD0iIiBvbmNsaWNrPSIiPgoJCQkJCQkJCTxzcGFuIGNsYXNzPSItcGgiPkVWIE1haW50ZW5hbmNlPC9zcGFuPgoJCQkJCQkJCTxzcGFuIHJvbGU9ImJ1dHRvbiIgdGFiaW5kZXg9IjAiIGNsYXNzPSItcCAtLXMtNSI+CgkJCQkJCQkJCQkJCTxzdmcgY2xhc3M9Imljb24iPjx1c2UgeGxpbms6aHJlZj0iI2ljb24tY2hldnJvbi1yaWdodCI+PC91c2U+PC9zdmc+CgkJCQkJCQkJPC9zcGFuPgoJCQkJCQkJPC9hPgoJCQkJCQk8L3NwYW4+CQkJCQkJPHNwYW4gY2xhc3M9Ii1tMCI+CgkJCQkJCQk8YSBjbGFzcz0ic3VibWVudS1pdGVtIGZsZXgtYm94IGZsZXgtYmV0d2VlbiAtYnQgLS1zLTUgMmMxZjYzZjgtYjUwMi03MzEtNzc5YS1iZiIgaHJlZj0iP3BhdGg9L0tpYS1DYXJuaXZhbC1oeWJyaWRlLTIwMjUtdW4tbm91dmVhdS1qb3VldXItZGltcGFjdC1wb3VyLWxhLW5vdXZlbGxlLWFubmVlLmh0bWwiIHRhcmdldD0iIiBvbmNsaWNrPSIiPgoJCQkJCQkJCTxzcGFuIGNsYXNzPSItcGgiPjIwMjUgQ2Fybml2YWwgSHlicmlkZTwvc3Bhbj4KCQkJCQkJCQk8c3BhbiByb2xlPSJidXR0b24iIHRhYmluZGV4PSIwIiBjbGFzcz0iLXAgLS1zLTUiPgoJCQkJCQkJCQkJCQk8c3ZnIGNsYXNzPSJpY29uIj48dXNlIHhsaW5rOmhyZWY9IiNpY29uLWNoZXZyb24tcmlnaHQiPjwvdXNlPjwvc3ZnPgoJCQkJCQkJCTwvc3Bhbj4KCQkJCQkJCTwvYT4KCQkJCQkJPC9zcGFuPgkJCQkJCTxzcGFuIGNsYXNzPSItbTAiPgoJCQkJCQkJPGEgY2xhc3M9InN1Ym1lbnUtaXRlbSBmbGV4LWJveCBmbGV4LWJldHdlZW4gLWJ0IC0tcy01IDI4YTRlNGY4LWQ0NmUtNDBiNC0yNmM4LTMiIGhyZWY9Ij9wYXRoPS9LaWEtRVY5LTIwMjUtdW5lLWV2b2x1dGlvbi1lbGVjdHJpcXVlLWVudGllcmVtZW50LXJldXNzaWUuaHRtbCIgdGFyZ2V0PSIiIG9uY2xpY2s9IiI+CgkJCQkJCQkJPHNwYW4gY2xhc3M9Ii1waCI+S2lhIEVWOSAyMDI1PC9zcGFuPgoJCQkJCQkJCTxzcGFuIHJvbGU9ImJ1dHRvbiIgdGFiaW5kZXg9IjAiIGNsYXNzPSItcCAtLXMtNSI+CgkJCQkJCQkJCQkJCTxzdmcgY2xhc3M9Imljb24iPjx1c2UgeGxpbms6aHJlZj0iI2ljb24tY2hldnJvbi1yaWdodCI+PC91c2U+PC9zdmc+CgkJCQkJCQkJPC9zcGFuPgoJCQkJCQkJPC9hPgoJCQkJCQk8L3NwYW4+CQkJCQkJPHNwYW4gY2xhc3M9Ii1tMCI+CgkJCQkJCQk8YSBjbGFzcz0ic3VibWVudS1pdGVtIGZsZXgtYm94IGZsZXgtYmV0d2VlbiAtYnQgLS1zLTUgMWIzOTg4MjYtYjY5Yy05YmU4LWRkNzItZiIgaHJlZj0iP3BhdGg9L0tpYS1FVjYtMjAyNS1sZXF1aWxpYnJlLXBhcmZhaXQtZW50cmUtbGEtcGVyZm9ybWFuY2UtZXQtbGF1dG9ub21pZS5odG1sIiB0YXJnZXQ9IiIgb25jbGljaz0iIj4KCQkJCQkJCQk8c3BhbiBjbGFzcz0iLXBoIj5LaWEgRVY2IDIwMjU8L3NwYW4+CgkJCQkJCQkJPHNwYW4gcm9sZT0iYnV0dG9uIiB0YWJpbmRleD0iMCIgY2xhc3M9Ii1wIC0tcy01Ij4KCQkJCQkJCQkJCQkJPHN2ZyBjbGFzcz0iaWNvbiI+PHVzZSB4bGluazpocmVmPSIjaWNvbi1jaGV2cm9uLXJpZ2h0Ij48L3VzZT48L3N2Zz4KCQkJCQkJCQk8L3NwYW4+CgkJCQkJCQk8L2E+CgkJCQkJCTwvc3Bhbj4JCQkJCQk8c3BhbiBjbGFzcz0iLW0wIj4KCQkJCQkJCTxhIGNsYXNzPSJzdWJtZW51LWl0ZW0gZmxleC1ib3ggZmxleC1iZXR3ZWVuIC1idCAtLXMtNSA2ZjJhYTY5My1mY2I5LTYwMGMtMTA0NS1kIiBocmVmPSI\/cGF0aD0vS2lhLVNwb3J0YWdlLTIwMjYtdW5lLWV2b2x1dGlvbi1pbXByZXNzaW9ubmFudGUuaHRtbCIgdGFyZ2V0PSIiIG9uY2xpY2s9IiI+CgkJCQkJCQkJPHNwYW4gY2xhc3M9Ii1waCI+S2lhIFNwb3J0YWdlIDIwMjY8L3NwYW4+CgkJCQkJCQkJPHNwYW4gcm9sZT0iYnV0dG9uIiB0YWJpbmRleD0iMCIgY2xhc3M9Ii1wIC0tcy01Ij4KCQkJCQkJCQkJCQkJPHN2ZyBjbGFzcz0iaWNvbiI+PHVzZSB4bGluazpocmVmPSIjaWNvbi1jaGV2cm9uLXJpZ2h0Ij48L3VzZT48L3N2Zz4KCQkJCQkJCQk8L3NwYW4+CgkJCQkJCQk8L2E+CgkJCQkJCTwvc3Bhbj4JCQkJCQk8c3BhbiBjbGFzcz0iLW0wIj4KCQkJCQkJCTxhIGNsYXNzPSJzdWJtZW51LWl0ZW0gZmxleC1ib3ggZmxleC1iZXR3ZWVuIC1idCAtLXMtNSAxNDY0MzBkYS1hMDY3LWFjN2EtMWNiZi1jIiBocmVmPSI\/cGF0aD0vS2lhLU5pcm8tMjAyNS1sYS1mb3JjZS1kdW4tdHJpdW12aXJhdC5odG1sIiB0YXJnZXQ9IiIgb25jbGljaz0iIj4KCQkJCQkJCQk8c3BhbiBjbGFzcz0iLXBoIj5LaWEgTmlybyAyMDI1IC0gR2FtbWU8L3NwYW4+CgkJCQkJCQkJPHNwYW4gcm9sZT0iYnV0dG9uIiB0YWJpbmRleD0iMCIgY2xhc3M9Ii1wIC0tcy01Ij4KCQkJCQkJCQkJCQkJPHN2ZyBjbGFzcz0iaWNvbiI+PHVzZSB4bGluazpocmVmPSIjaWNvbi1jaGV2cm9uLXJpZ2h0Ij48L3VzZT48L3N2Zz4KCQkJCQkJCQk8L3NwYW4+CgkJCQkJCQk8L2E+CgkJCQkJCTwvc3Bhbj4JCQkJCQk8c3BhbiBjbGFzcz0iLW0wIj4KCQkJCQkJCTxhIGNsYXNzPSJzdWJtZW51LWl0ZW0gZmxleC1ib3ggZmxleC1iZXR3ZWVuIC1idCAtLXMtNSBmYWFhOTYxMi1hYWY0LTIxNmMtM2FhYy04IiBocmVmPSI\/cGF0aD0vQWNoZXRlci1zYS1wcmVtaWVyZS12b2l0dXJlLWF1LUNhbmFkYS1ndWlkZS1lc3NlbnRpZWwtcG91ci1sZXMtbm91dmVhdXgtYXJyaXZhbnRzLmh0bWwiIHRhcmdldD0iIiBvbmNsaWNrPSIiPgoJCQkJCQkJCTxzcGFuIGNsYXNzPSItcGgiPk5vdXZlYXV4IEFycml2YW50czwvc3Bhbj4KCQkJCQkJCQk8c3BhbiByb2xlPSJidXR0b24iIHRhYmluZGV4PSIwIiBjbGFzcz0iLXAgLS1zLTUiPgoJCQkJCQkJCQkJCQk8c3ZnIGNsYXNzPSJpY29uIj48dXNlIHhsaW5rOmhyZWY9IiNpY29uLWNoZXZyb24tcmlnaHQiPjwvdXNlPjwvc3ZnPgoJCQkJCQkJCTwvc3Bhbj4KCQkJCQkJCTwvYT4KCQkJCQkJPC9zcGFuPgkJCQkJCTxzcGFuIGNsYXNzPSItbTAiPgoJCQkJCQkJPGEgY2xhc3M9InN1Ym1lbnUtaXRlbSBmbGV4LWJveCBmbGV4LWJldHdlZW4gLWJ0IC0tcy01IDllZTM1Yzg5LWMyLTI2MjItMjBhYS01MDciIGhyZWY9Ij9wYXRoPS9raWEtc2VsdG9zLTIwMjYtdW5lLW5vdXZlbGxlLWdlbmVyYXRpb24tcXVpLXMtaW1wb3NlLWF2ZWMtYXNzdXJhbmNlLmh0bWwiIHRhcmdldD0iIiBvbmNsaWNrPSIiPgoJCQkJCQkJCTxzcGFuIGNsYXNzPSItcGgiPktpYSBTZWx0b3MgMjAyNjwvc3Bhbj4KCQkJCQkJCQk8c3BhbiByb2xlPSJidXR0b24iIHRhYmluZGV4PSIwIiBjbGFzcz0iLXAgLS1zLTUiPgoJCQkJCQkJCQkJCQk8c3ZnIGNsYXNzPSJpY29uIj48dXNlIHhsaW5rOmhyZWY9IiNpY29uLWNoZXZyb24tcmlnaHQiPjwvdXNlPjwvc3ZnPgoJCQkJCQkJCTwvc3Bhbj4KCQkJCQkJCTwvYT4KCQkJCQkJPC9zcGFuPgkJCQkJCTxzcGFuIGNsYXNzPSItbTAiPgoJCQkJCQkJPGEgY2xhc3M9InN1Ym1lbnUtaXRlbSBmbGV4LWJveCBmbGV4LWJldHdlZW4gLWJ0IC0tcy01IGEzMjhiMDQtYmI1NS1lZjQ1LWVmZWMtNDkiIGhyZWY9Ij9wYXRoPS9raWEtY2Fybml2YWwtMjAyNi1pbmNvbnRvdXJuYWJsZS5odG1sIiB0YXJnZXQ9IiIgb25jbGljaz0iIj4KCQkJCQkJCQk8c3BhbiBjbGFzcz0iLXBoIj5LaWEgQ2Fybml2YWwgMjAyNjwvc3Bhbj4KCQkJCQkJCQk8c3BhbiByb2xlPSJidXR0b24iIHRhYmluZGV4PSIwIiBjbGFzcz0iLXAgLS1zLTUiPgoJCQkJCQkJCQkJCQk8c3ZnIGNsYXNzPSJpY29uIj48dXNlIHhsaW5rOmhyZWY9IiNpY29uLWNoZXZyb24tcmlnaHQiPjwvdXNlPjwvc3ZnPgoJCQkJCQkJCTwvc3Bhbj4KCQkJCQkJCTwvYT4KCQkJCQkJPC9zcGFuPgkJCQkJCTxzcGFuIGNsYXNzPSItbTAiPgoJCQkJCQkJPGEgY2xhc3M9InN1Ym1lbnUtaXRlbSBmbGV4LWJveCBmbGV4LWJldHdlZW4gLWJ0IC0tcy01IDExMGRjZjE2LTk3ZWQtNzQyLWVkYS04NWMiIGhyZWY9Ij9wYXRoPS9raWEtY29ubmVjdC1sZS1jb21wYWdub24taW50ZWxsaWdlbnQtZGUtdm90cmUtcXVvdGlkaWVuLWF1dG9tb2JpbGUuaHRtbCIgdGFyZ2V0PSIiIG9uY2xpY2s9IiI+CgkJCQkJCQkJPHNwYW4gY2xhc3M9Ii1waCI+S2lhIENvbm5lY3Q8L3NwYW4+CgkJCQkJCQkJPHNwYW4gcm9sZT0iYnV0dG9uIiB0YWJpbmRleD0iMCIgY2xhc3M9Ii1wIC0tcy01Ij4KCQkJCQkJCQkJCQkJPHN2ZyBjbGFzcz0iaWNvbiI+PHVzZSB4bGluazpocmVmPSIjaWNvbi1jaGV2cm9uLXJpZ2h0Ij48L3VzZT48L3N2Zz4KCQkJCQkJCQk8L3NwYW4+CgkJCQkJCQk8L2E+CgkJCQkJCTwvc3Bhbj4JCQkJCQk8c3BhbiBjbGFzcz0iLW0wIj4KCQkJCQkJCTxhIGNsYXNzPSJzdWJtZW51LWl0ZW0gZmxleC1ib3ggZmxleC1iZXR3ZWVuIC1idCAtLXMtNSAzYTg2NjBlOC0yODA3LWFmOGItNTg5Ni04IiBocmVmPSI\/cGF0aD0vS2lhLUs0LTIwMjYtbGEtYmVybGluZS1jb21wYWN0ZS1xdWktdm9pdC1wbHVzLWdyYW5kLmh0bWwiIHRhcmdldD0iIiBvbmNsaWNrPSIiPgoJCQkJCQkJCTxzcGFuIGNsYXNzPSItcGgiPktpYSBLNCAyMDI2PC9zcGFuPgoJCQkJCQkJCTxzcGFuIHJvbGU9ImJ1dHRvbiIgdGFiaW5kZXg9IjAiIGNsYXNzPSItcCAtLXMtNSI+CgkJCQkJCQkJCQkJCTxzdmcgY2xhc3M9Imljb24iPjx1c2UgeGxpbms6aHJlZj0iI2ljb24tY2hldnJvbi1yaWdodCI+PC91c2U+PC9zdmc+CgkJCQkJCQkJPC9zcGFuPgoJCQkJCQkJPC9hPgoJCQkJCQk8L3NwYW4+CQkJCQkJPHNwYW4gY2xhc3M9Ii1tMCI+CgkJCQkJCQk8YSBjbGFzcz0ic3VibWVudS1pdGVtIGZsZXgtYm94IGZsZXgtYmV0d2VlbiAtYnQgLS1zLTUgN2QyMThjNzEtNzRkNS1kZWU3LTU4YjktNSIgaHJlZj0iP3BhdGg9L2tpYS1rNC1oYXRjaGJhY2stMjAyNi5odG1sIiB0YXJnZXQ9IiIgb25jbGljaz0iIj4KCQkJCQkJCQk8c3BhbiBjbGFzcz0iLXBoIj5LaWEgSzQgSGF0Y2hiYWNrIDIwMjY8L3NwYW4+CgkJCQkJCQkJPHNwYW4gcm9sZT0iYnV0dG9uIiB0YWJpbmRleD0iMCIgY2xhc3M9Ii1wIC0tcy01Ij4KCQkJCQkJCQkJCQkJPHN2ZyBjbGFzcz0iaWNvbiI+PHVzZSB4bGluazpocmVmPSIjaWNvbi1jaGV2cm9uLXJpZ2h0Ij48L3VzZT48L3N2Zz4KCQkJCQkJCQk8L3NwYW4+CgkJCQkJCQk8L2E+CgkJCQkJCTwvc3Bhbj4JCQkJCQk8c3BhbiBjbGFzcz0iLW0wIj4KCQkJCQkJCTxhIGNsYXNzPSJzdWJtZW51LWl0ZW0gZmxleC1ib3ggZmxleC1iZXR3ZWVuIC1idCAtLXMtNSBiYWM2MjNjNi02NmJkLTVhYjQtNmYwMy04IiBocmVmPSI\/cGF0aD0vS2lhLVRlbGx1cmlkZS0yMDI3LWNlLXF1ZS1vbi1zYWl0LWRlamEuaHRtbCIgdGFyZ2V0PSIiIG9uY2xpY2s9IiI+CgkJCQkJCQkJPHNwYW4gY2xhc3M9Ii1waCI+S2lhIFRlbGx1cmlkZSAyMDI3PC9zcGFuPgoJCQkJCQkJCTxzcGFuIHJvbGU9ImJ1dHRvbiIgdGFiaW5kZXg9IjAiIGNsYXNzPSItcCAtLXMtNSI+CgkJCQkJCQkJCQkJCTxzdmcgY2xhc3M9Imljb24iPjx1c2UgeGxpbms6aHJlZj0iI2ljb24tY2hldnJvbi1yaWdodCI+PC91c2U+PC9zdmc+CgkJCQkJCQkJPC9zcGFuPgoJCQkJCQkJPC9hPgoJCQkJCQk8L3NwYW4+CQkJCQkJPHNwYW4gY2xhc3M9Ii1tMCI+CgkJCQkJCQk8YSBjbGFzcz0ic3VibWVudS1pdGVtIGZsZXgtYm94IGZsZXgtYmV0d2VlbiAtYnQgLS1zLTUgYjg0NmZjM2EtMzdiNy02YWY4LTcwOTItNyIgaHJlZj0iP3BhdGg9L2tpYS1zb3JlbnRvLXBoZXYtMjAyNi5odG1sIiB0YXJnZXQ9IiIgb25jbGljaz0iIj4KCQkJCQkJCQk8c3BhbiBjbGFzcz0iLXBoIj5LaWEgU29yZW50byBQSEVWIDIwMjY8L3NwYW4+CgkJCQkJCQkJPHNwYW4gcm9sZT0iYnV0dG9uIiB0YWJpbmRleD0iMCIgY2xhc3M9Ii1wIC0tcy01Ij4KCQkJCQkJCQkJCQkJPHN2ZyBjbGFzcz0iaWNvbiI+PHVzZSB4bGluazpocmVmPSIjaWNvbi1jaGV2cm9uLXJpZ2h0Ij48L3VzZT48L3N2Zz4KCQkJCQkJCQk8L3NwYW4+CgkJCQkJCQk8L2E+CgkJCQkJCTwvc3Bhbj4JCQkJCQk8c3BhbiBjbGFzcz0iLW0wIj4KCQkJCQkJCTxhIGNsYXNzPSJzdWJtZW51LWl0ZW0gZmxleC1ib3ggZmxleC1iZXR3ZWVuIC1idCAtLXMtNSA2N2FhZDk3ZS1hZTdlLWE4NmMtYjg1ZC03IiBocmVmPSI\/cGF0aD0va2lhLWV2NC0yMDI2Lmh0bWwiIHRhcmdldD0iIiBvbmNsaWNrPSIiPgoJCQkJCQkJCTxzcGFuIGNsYXNzPSItcGgiPktpYSBFVjQgMjAyNjwvc3Bhbj4KCQkJCQkJCQk8c3BhbiByb2xlPSJidXR0b24iIHRhYmluZGV4PSIwIiBjbGFzcz0iLXAgLS1zLTUiPgoJCQkJCQkJCQkJCQk8c3ZnIGNsYXNzPSJpY29uIj48dXNlIHhsaW5rOmhyZWY9IiNpY29uLWNoZXZyb24tcmlnaHQiPjwvdXNlPjwvc3ZnPgoJCQkJCQkJCTwvc3Bhbj4KCQkJCQkJCTwvYT4KCQkJCQkJPC9zcGFuPgkJCQkJCTxzcGFuIGNsYXNzPSItbTAiPgoJCQkJCQkJPGEgY2xhc3M9InN1Ym1lbnUtaXRlbSBmbGV4LWJveCBmbGV4LWJldHdlZW4gLWJ0IC0tcy01IDM2ZGZiNjI4LTIzM2QtZDNlLWE5YTgtZDEiIGhyZWY9Ij9wYXRoPS9raWEtc3BvcnRhZ2UtSEVWLTIwMjYuaHRtbCIgdGFyZ2V0PSIiIG9uY2xpY2s9IiI+CgkJCQkJCQkJPHNwYW4gY2xhc3M9Ii1waCI+S2lhIFNwb3J0YWdlIEhFViAyMDI2PC9zcGFuPgoJCQkJCQkJCTxzcGFuIHJvbGU9ImJ1dHRvbiIgdGFiaW5kZXg9IjAiIGNsYXNzPSItcCAtLXMtNSI+CgkJCQkJCQkJCQkJCTxzdmcgY2xhc3M9Imljb24iPjx1c2UgeGxpbms6aHJlZj0iI2ljb24tY2hldnJvbi1yaWdodCI+PC91c2U+PC9zdmc+CgkJCQkJCQkJPC9zcGFuPgoJCQkJCQkJPC9hPgoJCQkJCQk8L3NwYW4+CQkJCQkJPHNwYW4gY2xhc3M9Ii1tMCI+CgkJCQkJCQk8YSBjbGFzcz0ic3VibWVudS1pdGVtIGZsZXgtYm94IGZsZXgtYmV0d2VlbiAtYnQgLS1zLTUgYTNjZjllMjktNjQ1Zi0zNGZkLTgzNDctNSIgaHJlZj0iP3BhdGg9L3Nwb3J0YWdlLXZzLXNvcmVudG8uaHRtbCIgdGFyZ2V0PSIiIG9uY2xpY2s9IiI+CgkJCQkJCQkJPHNwYW4gY2xhc3M9Ii1waCI+S2lhIFNwb3J0YWdlIHZzIFNvcmVudG88L3NwYW4+CgkJCQkJCQkJPHNwYW4gcm9sZT0iYnV0dG9uIiB0YWJpbmRleD0iMCIgY2xhc3M9Ii1wIC0tcy01Ij4KCQkJCQkJCQkJCQkJPHN2ZyBjbGFzcz0iaWNvbiI+PHVzZSB4bGluazpocmVmPSIjaWNvbi1jaGV2cm9uLXJpZ2h0Ij48L3VzZT48L3N2Zz4KCQkJCQkJCQk8L3NwYW4+CgkJCQkJCQk8L2E+CgkJCQkJCTwvc3Bhbj4KCQkJCQkJPC9zdGFjay1sYz4KCQkJCQk8L2Rpdj4KCQkJCTwvbGk+CgoJCQkJCgkJCQk8bGkgY2xhc3M9IiI+CgkJCQkJCgkJCQkJPGEgY2xhc3M9IlRPT0xTICAgbWVudS1pdGVtIGZsZXgtYm94IiBocmVmPSI\/cGF0aD0vY29uZmlndXJhdGlvbi1ldC1wcml4L2NvbmZpZ3VyYXRpb24uaHRtbCIgdGFyZ2V0PSJfdG9wIiBvbmNsaWNrPSIiPgoJCQkJCQkJCQk8c3ZnIGNsYXNzPSJpY29uIj48dXNlIHhsaW5rOmhyZWY9IiNpY29uLXNob3BwaW5nLWNhcnQiPjwvdXNlPjwvc3ZnPgoJCQkJCQk8c3BhbiBjbGFzcz0ic2hyaW5rLWdyb3cgc2tlbGV0b24tdHh0Ij5PdXRpbHMgZCdhY2hhdDwvc3Bhbj4KCQkJCQkJCQkJCQk8c3BhbiByb2xlPSJidXR0b24iIHRhYmluZGV4PSIwIiBjbGFzcz0ibWVudUV4cGFuZCAtcCAtLXMtMyIgYXJpYS1sYWJlbD0iTWVudSBkw6lyb3VsYW50Ij4KCQkJCQkJCQkJPHN2ZyBjbGFzcz0iaWNvbiI+PHVzZSB4bGluazpocmVmPSIjaWNvbi1jaGV2cm9uLWRvd24iPjwvdXNlPjwvc3ZnPgoJCQkJCTwvc3Bhbj4KCQkJCQk8L2E+CgkJCQkJCQkJCQk8ZGl2IGNsYXNzPSJzdWJtZW51SXRlbUNvbnRhaW5lciIgc3R5bGU9ImRpc3BsYXk6bm9uZTsiPgoJCQkJCQk8c3RhY2stbGMgaWQ9Iml0ZW1fVE9PTFMiIGNsYXNzPSItLXMtOSI+CgkJCQkJCQkJCQkJCQk8c3BhbiBjbGFzcz0iLW0wIj4KCQkJCQkJCTxhIGNsYXNzPSJzdWJtZW51LWl0ZW0gZmxleC1ib3ggZmxleC1iZXR3ZWVuIC1idCAtLXMtNSBCTlAiIGhyZWY9Ij9wYXRoPS9jb25maWd1cmF0aW9uLWV0LXByaXgvY29uZmlndXJhdGlvbi5odG1sIiB0YXJnZXQ9IiIgb25jbGljaz0iIj4KCQkJCQkJCQk8c3BhbiBjbGFzcz0iLXBoIj5Db25maWd1cmF0ZXVyPC9zcGFuPgoJCQkJCQkJCTxzcGFuIHJvbGU9ImJ1dHRvbiIgdGFiaW5kZXg9IjAiIGNsYXNzPSItcCAtLXMtNSI+CgkJCQkJCQkJCQkJCTxzdmcgY2xhc3M9Imljb24iPjx1c2UgeGxpbms6aHJlZj0iI2ljb24tY2hldnJvbi1yaWdodCI+PC91c2U+PC9zdmc+CgkJCQkJCQkJPC9zcGFuPgoJCQkJCQkJPC9hPgoJCQkJCQk8L3NwYW4+CQkJCQkJPHNwYW4gY2xhc3M9Ii1tMCI+CgkJCQkJCQk8YSBjbGFzcz0ic3VibWVudS1pdGVtIGZsZXgtYm94IGZsZXgtYmV0d2VlbiAtYnQgLS1zLTUgVEVTVERSViIgaHJlZj0iP3BhdGg9L2RlbWFuZGVzL2Vzc2Fpcy1yb3V0aWVyLW5ldWYuaHRtbCIgdGFyZ2V0PSIiIG9uY2xpY2s9IiI+CgkJCQkJCQkJPHNwYW4gY2xhc3M9Ii1waCI+UsOpc2VydmVyIHVuIGVzc2FpIHJvdXRpZXI8L3NwYW4+CgkJCQkJCQkJPHNwYW4gcm9sZT0iYnV0dG9uIiB0YWJpbmRleD0iMCIgY2xhc3M9Ii1wIC0tcy01Ij4KCQkJCQkJCQkJCQkJPHN2ZyBjbGFzcz0iaWNvbiI+PHVzZSB4bGluazpocmVmPSIjaWNvbi1jaGV2cm9uLXJpZ2h0Ij48L3VzZT48L3N2Zz4KCQkJCQkJCQk8L3NwYW4+CgkJCQkJCQk8L2E+CgkJCQkJCTwvc3Bhbj4JCQkJCQk8c3BhbiBjbGFzcz0iLW0wIj4KCQkJCQkJCTxhIGNsYXNzPSJzdWJtZW51LWl0ZW0gZmxleC1ib3ggZmxleC1iZXR3ZWVuIC1idCAtLXMtNSBRVU9URSIgaHJlZj0iP3BhdGg9L2RlbWFuZGVzL3ByaXgtbmV1Zi5odG1sIiB0YXJnZXQ9IiIgb25jbGljaz0iIj4KCQkJCQkJCQk8c3BhbiBjbGFzcz0iLXBoIj5PYnRlbmlyIHVuIGRldmlzPC9zcGFuPgoJCQkJCQkJCTxzcGFuIHJvbGU9ImJ1dHRvbiIgdGFiaW5kZXg9IjAiIGNsYXNzPSItcCAtLXMtNSI+CgkJCQkJCQkJCQkJCTxzdmcgY2xhc3M9Imljb24iPjx1c2UgeGxpbms6aHJlZj0iI2ljb24tY2hldnJvbi1yaWdodCI+PC91c2U+PC9zdmc+CgkJCQkJCQkJPC9zcGFuPgoJCQkJCQkJPC9hPgoJCQkJCQk8L3NwYW4+CQkJCQkJPHNwYW4gY2xhc3M9Ii1tMCI+CgkJCQkJCQk8YSBjbGFzcz0ic3VibWVudS1pdGVtIGZsZXgtYm94IGZsZXgtYmV0d2VlbiAtYnQgLS1zLTUgVFJBREVJTiIgaHJlZj0iamF2YXNjcmlwdDp2b2lkKDApIiB0YXJnZXQ9IiIgb25jbGljaz0iamF2YXNjcmlwdDp2b2lkKCQoJyNUcmFkZUluQmFyUG9wdXBDb250YWluZXInKS5wb3B1cGl6ZSgpLnNldFRyaWdnZXIoJ2NsaWNrJykub3BlbigpKTsiPgoJCQkJCQkJCTxzcGFuIGNsYXNzPSItcGgiPsOJdmFsdWV6IGwnw6ljaGFuZ2U8L3NwYW4+CgkJCQkJCQkJPHNwYW4gcm9sZT0iYnV0dG9uIiB0YWJpbmRleD0iMCIgY2xhc3M9Ii1wIC0tcy01Ij4KCQkJCQkJCQkJCQkJPHN2ZyBjbGFzcz0iaWNvbiI+PHVzZSB4bGluazpocmVmPSIjaWNvbi1jaGV2cm9uLXJpZ2h0Ij48L3VzZT48L3N2Zz4KCQkJCQkJCQk8L3NwYW4+CgkJCQkJCQk8L2E+CgkJCQkJCTwvc3Bhbj4JCQkJCQk8c3BhbiBjbGFzcz0iLW0wIj4KCQkJCQkJCTxhIGNsYXNzPSJzdWJtZW51LWl0ZW0gZmxleC1ib3ggZmxleC1iZXR3ZWVuIC1idCAtLXMtNSBCUk9DSFVSRSIgaHJlZj0iP3BhdGg9L2RlbWFuZGVzL2Jyb2NodXJlcy5odG1sIiB0YXJnZXQ9IiIgb25jbGljaz0iIj4KCQkJCQkJCQk8c3BhbiBjbGFzcz0iLXBoIj5Ccm9jaHVyZXM8L3NwYW4+CgkJCQkJCQkJPHNwYW4gcm9sZT0iYnV0dG9uIiB0YWJpbmRleD0iMCIgY2xhc3M9Ii1wIC0tcy01Ij4KCQkJCQkJCQkJCQkJPHN2ZyBjbGFzcz0iaWNvbiI+PHVzZSB4bGluazpocmVmPSIjaWNvbi1jaGV2cm9uLXJpZ2h0Ij48L3VzZT48L3N2Zz4KCQkJCQkJCQk8L3NwYW4+CgkJCQkJCQk8L2E+CgkJCQkJCTwvc3Bhbj4KCQkJCQkJPC9zdGFjay1sYz4KCQkJCQk8L2Rpdj4KCQkJCTwvbGk+CgoJCQkJCgkJCQk8bGkgY2xhc3M9IiI+CgkJCQkJCgkJCQkJPGEgY2xhc3M9Ik9GRkVSUyAgIG1lbnUtaXRlbSBmbGV4LWJveCIgaHJlZj0iP3BhdGg9L3Byb21vdGlvbnMuaHRtbCIgdGFyZ2V0PSJfdG9wIiBvbmNsaWNrPSIiPgoJCQkJCQkJCQk8c3ZnIGNsYXNzPSJpY29uIj48dXNlIHhsaW5rOmhyZWY9IiNpY29uLXRhZ3MiPjwvdXNlPjwvc3ZnPgoJCQkJCQk8c3BhbiBjbGFzcz0ic2hyaW5rLWdyb3cgc2tlbGV0b24tdHh0Ij5PZmZyZXM8L3NwYW4+CgkJCQkJCQkJCQkJPHNwYW4gcm9sZT0iYnV0dG9uIiB0YWJpbmRleD0iMCIgY2xhc3M9Im1lbnVFeHBhbmQgLXAgLS1zLTMiIGFyaWEtbGFiZWw9Ik1lbnUgZMOpcm91bGFudCI+CgkJCQkJCQkJCTxzdmcgY2xhc3M9Imljb24iPjx1c2UgeGxpbms6aHJlZj0iI2ljb24tY2hldnJvbi1kb3duIj48L3VzZT48L3N2Zz4KCQkJCQk8L3NwYW4+CgkJCQkJPC9hPgoJCQkJCQkJCQkJPGRpdiBjbGFzcz0ic3VibWVudUl0ZW1Db250YWluZXIiIHN0eWxlPSJkaXNwbGF5Om5vbmU7Ij4KCQkJCQkJPHN0YWNrLWxjIGlkPSJpdGVtX09GRkVSUyIgY2xhc3M9Ii0tcy05Ij4KCQkJCQkJCQkJCQkJCTxzcGFuIGNsYXNzPSItbTAiPgoJCQkJCQkJPGEgY2xhc3M9InN1Ym1lbnUtaXRlbSBmbGV4LWJveCBmbGV4LWJldHdlZW4gLWJ0IC0tcy01IFBST01PX1NFUlZJQ0UiIGhyZWY9Ij9wYXRoPS9wcm9tb3Rpb25zLmh0bWwjc2VydmljZSIgdGFyZ2V0PSIiIG9uY2xpY2s9IiI+CgkJCQkJCQkJPHNwYW4gY2xhc3M9Ii1waCI+U2VydmljZTwvc3Bhbj4KCQkJCQkJCQk8c3BhbiByb2xlPSJidXR0b24iIHRhYmluZGV4PSIwIiBjbGFzcz0iLXAgLS1zLTUiPgoJCQkJCQkJCQkJCQk8c3ZnIGNsYXNzPSJpY29uIj48dXNlIHhsaW5rOmhyZWY9IiNpY29uLWNoZXZyb24tcmlnaHQiPjwvdXNlPjwvc3ZnPgoJCQkJCQkJCTwvc3Bhbj4KCQkJCQkJCTwvYT4KCQkJCQkJPC9zcGFuPgkJCQkJCTxzcGFuIGNsYXNzPSItbTAiPgoJCQkJCQkJPGEgY2xhc3M9InN1Ym1lbnUtaXRlbSBmbGV4LWJveCBmbGV4LWJldHdlZW4gLWJ0IC0tcy01IFBST01PX01BTlVGQUNUVVJFUiIgaHJlZj0iP3BhdGg9L3Byb21vdGlvbnMuaHRtbCNtYW51ZmFjdHVyZXIiIHRhcmdldD0iIiBvbmNsaWNrPSIiPgoJCQkJCQkJCTxzcGFuIGNsYXNzPSItcGgiPkluY2l0YXRpZnMgS2lhPC9zcGFuPgoJCQkJCQkJCTxzcGFuIHJvbGU9ImJ1dHRvbiIgdGFiaW5kZXg9IjAiIGNsYXNzPSItcCAtLXMtNSI+CgkJCQkJCQkJCQkJCTxzdmcgY2xhc3M9Imljb24iPjx1c2UgeGxpbms6aHJlZj0iI2ljb24tY2hldnJvbi1yaWdodCI+PC91c2U+PC9zdmc+CgkJCQkJCQkJPC9zcGFuPgoJCQkJCQkJPC9hPgoJCQkJCQk8L3NwYW4+CQkJCQkJPHNwYW4gY2xhc3M9Ii1tMCI+CgkJCQkJCQk8YSBjbGFzcz0ic3VibWVudS1pdGVtIGZsZXgtYm94IGZsZXgtYmV0d2VlbiAtYnQgLS1zLTUgR1BfNDUxNmZmOWUyMTU5YmI3MiIgaHJlZj0iP3BhdGg9L29mZnJlcy1wcm9tb3Rpb25uZWxsZXMta2lhLmh0bWwiIHRhcmdldD0iIiBvbmNsaWNrPSIiPgoJCQkJCQkJCTxzcGFuIGNsYXNzPSItcGgiPk9mZnJlcyBwcm9tb3Rpb25uZWxsZXMgS2lhPC9zcGFuPgoJCQkJCQkJCTxzcGFuIHJvbGU9ImJ1dHRvbiIgdGFiaW5kZXg9IjAiIGNsYXNzPSItcCAtLXMtNSI+CgkJCQkJCQkJCQkJCTxzdmcgY2xhc3M9Imljb24iPjx1c2UgeGxpbms6aHJlZj0iI2ljb24tY2hldnJvbi1yaWdodCI+PC91c2U+PC9zdmc+CgkJCQkJCQkJPC9zcGFuPgoJCQkJCQkJPC9hPgoJCQkJCQk8L3NwYW4+CQkJCQkJPHNwYW4gY2xhc3M9Ii1tMCI+CgkJCQkJCQk8YSBjbGFzcz0ic3VibWVudS1pdGVtIGZsZXgtYm94IGZsZXgtYmV0d2VlbiAtYnQgLS1zLTUgUFJPTU9fT0VNUkVCQVRFU19LSUEiIGhyZWY9Ij9wYXRoPS9wcm9tb3Rpb25zLmh0bWwja2lhcmViYXRlcyIgdGFyZ2V0PSIiIG9uY2xpY2s9IiI+CgkJCQkJCQkJPHNwYW4gY2xhc3M9Ii1waCI+TW9kw6hsZXMgS2lhIGVuIHJhYmFpczwvc3Bhbj4KCQkJCQkJCQk8c3BhbiByb2xlPSJidXR0b24iIHRhYmluZGV4PSIwIiBjbGFzcz0iLXAgLS1zLTUiPgoJCQkJCQkJCQkJCQk8c3ZnIGNsYXNzPSJpY29uIj48dXNlIHhsaW5rOmhyZWY9IiNpY29uLWNoZXZyb24tcmlnaHQiPjwvdXNlPjwvc3ZnPgoJCQkJCQkJCTwvc3Bhbj4KCQkJCQkJCTwvYT4KCQkJCQkJPC9zcGFuPgoJCQkJCQk8L3N0YWNrLWxjPgoJCQkJCTwvZGl2PgoJCQkJPC9saT4KCgkJCQkKCQkJCTxsaSBjbGFzcz0iIj4KCQkJCQkKCQkJCQk8YSBjbGFzcz0iRklOQU5DRSAgIG1lbnUtaXRlbSBmbGV4LWJveCIgaHJlZj0iP3BhdGg9L2RlbWFuZGVzL2ZpbmFuY2VtZW50Lmh0bWwiIHRhcmdldD0iX3RvcCIgb25jbGljaz0iIj4KCQkJCQkJCQkJPHN2ZyBjbGFzcz0iaWNvbiI+PHVzZSB4bGluazpocmVmPSIjaWNvbi1oYW5kLWhvbGRpbmctdXNkIj48L3VzZT48L3N2Zz4KCQkJCQkJPHNwYW4gY2xhc3M9InNocmluay1ncm93IHNrZWxldG9uLXR4dCI+RmluYW5jZW1lbnQ8L3NwYW4+CgkJCQkJCQkJCQkJPHNwYW4gcm9sZT0iYnV0dG9uIiB0YWJpbmRleD0iMCIgY2xhc3M9Im1lbnVFeHBhbmQgLXAgLS1zLTMiIGFyaWEtbGFiZWw9Ik1lbnUgZMOpcm91bGFudCI+CgkJCQkJCQkJCTxzdmcgY2xhc3M9Imljb24iPjx1c2UgeGxpbms6aHJlZj0iI2ljb24tY2hldnJvbi1kb3duIj48L3VzZT48L3N2Zz4KCQkJCQk8L3NwYW4+CgkJCQkJPC9hPgoJCQkJCQkJCQkJPGRpdiBjbGFzcz0ic3VibWVudUl0ZW1Db250YWluZXIiIHN0eWxlPSJkaXNwbGF5Om5vbmU7Ij4KCQkJCQkJPHN0YWNrLWxjIGlkPSJpdGVtX0ZJTkFOQ0UiIGNsYXNzPSItLXMtOSI+CgkJCQkJCQkJCQkJCQk8c3BhbiBjbGFzcz0iLW0wIj4KCQkJCQkJCTxhIGNsYXNzPSJzdWJtZW51LWl0ZW0gZmxleC1ib3ggZmxleC1iZXR3ZWVuIC1idCAtLXMtNSBHUF83NjhhMmExYTdhMjRlNmVmIiBocmVmPSI\/cGF0aD0va2lhLWZpbmFuY2UtZnIuaHRtbCIgdGFyZ2V0PSIiIG9uY2xpY2s9IiI+CgkJCQkJCQkJPHNwYW4gY2xhc3M9Ii1waCI+S2lhIEZpbmFuY2U8L3NwYW4+CgkJCQkJCQkJPHNwYW4gcm9sZT0iYnV0dG9uIiB0YWJpbmRleD0iMCIgY2xhc3M9Ii1wIC0tcy01Ij4KCQkJCQkJCQkJCQkJPHN2ZyBjbGFzcz0iaWNvbiI+PHVzZSB4bGluazpocmVmPSIjaWNvbi1jaGV2cm9uLXJpZ2h0Ij48L3VzZT48L3N2Zz4KCQkJCQkJCQk8L3NwYW4+CgkJCQkJCQk8L2E+CgkJCQkJCTwvc3Bhbj4JCQkJCQk8c3BhbiBjbGFzcz0iLW0wIj4KCQkJCQkJCTxhIGNsYXNzPSJzdWJtZW51LWl0ZW0gZmxleC1ib3ggZmxleC1iZXR3ZWVuIC1idCAtLXMtNSBDUkVESVQiIGhyZWY9Ij9wYXRoPS9kZW1hbmRlcy9maW5hbmNlbWVudC5odG1sIiB0YXJnZXQ9IiIgb25jbGljaz0iIj4KCQkJCQkJCQk8c3BhbiBjbGFzcz0iLXBoIj5EZW1hbmRlIGRlIGNyw6lkaXQ8L3NwYW4+CgkJCQkJCQkJPHNwYW4gcm9sZT0iYnV0dG9uIiB0YWJpbmRleD0iMCIgY2xhc3M9Ii1wIC0tcy01Ij4KCQkJCQkJCQkJCQkJPHN2ZyBjbGFzcz0iaWNvbiI+PHVzZSB4bGluazpocmVmPSIjaWNvbi1jaGV2cm9uLXJpZ2h0Ij48L3VzZT48L3N2Zz4KCQkJCQkJCQk8L3NwYW4+CgkJCQkJCQk8L2E+CgkJCQkJCTwvc3Bhbj4JCQkJCQk8c3BhbiBjbGFzcz0iLW0wIj4KCQkJCQkJCTxhIGNsYXNzPSJzdWJtZW51LWl0ZW0gZmxleC1ib3ggZmxleC1iZXR3ZWVuIC1idCAtLXMtNSBQQVlfRVNUIiBocmVmPSI\/cGF0aD0vb2NjYXNpb24vY2FsY3VsYXRyaWNlLXByZXQtYXV0by5odG1sIiB0YXJnZXQ9IiIgb25jbGljaz0iIj4KCQkJCQkJCQk8c3BhbiBjbGFzcz0iLXBoIj5Fc3RpbWF0ZXVyIGRlIHBhaWVtZW50czwvc3Bhbj4KCQkJCQkJCQk8c3BhbiByb2xlPSJidXR0b24iIHRhYmluZGV4PSIwIiBjbGFzcz0iLXAgLS1zLTUiPgoJCQkJCQkJCQkJCQk8c3ZnIGNsYXNzPSJpY29uIj48dXNlIHhsaW5rOmhyZWY9IiNpY29uLWNoZXZyb24tcmlnaHQiPjwvdXNlPjwvc3ZnPgoJCQkJCQkJCTwvc3Bhbj4KCQkJCQkJCTwvYT4KCQkJCQkJPC9zcGFuPgkJCQkJCTxzcGFuIGNsYXNzPSItbTAiPgoJCQkJCQkJPGEgY2xhc3M9InN1Ym1lbnUtaXRlbSBmbGV4LWJveCBmbGV4LWJldHdlZW4gLWJ0IC0tcy01IGVkMTczYjI0LTY2N2YtYjEwMC0xNGY1LTEiIGhyZWY9Imh0dHBzOi8vYWxiaWVxdWl0ZS5jb20vIiB0YXJnZXQ9Il9ibGFuayIgb25jbGljaz0iIj4KCQkJCQkJCQk8c3BhbiBjbGFzcz0iLXBoIj5Db25uYcOudHJlIG1vbiDDqXF1aXTDqTwvc3Bhbj4KCQkJCQkJCQk8c3BhbiByb2xlPSJidXR0b24iIHRhYmluZGV4PSIwIiBjbGFzcz0iLXAgLS1zLTUiPgoJCQkJCQkJCQkJCQk8c3ZnIGNsYXNzPSJpY29uIj48dXNlIHhsaW5rOmhyZWY9IiNpY29uLWNoZXZyb24tcmlnaHQiPjwvdXNlPjwvc3ZnPgoJCQkJCQkJCTwvc3Bhbj4KCQkJCQkJCTwvYT4KCQkJCQkJPC9zcGFuPgoJCQkJCQk8L3N0YWNrLWxjPgoJCQkJCTwvZGl2PgoJCQkJPC9saT4KCgkJCQkKCQkJCTxsaSBjbGFzcz0iIj4KCQkJCQkKCQkJCQk8YSBjbGFzcz0iU0VSVklDRSAgIG1lbnUtaXRlbSBmbGV4LWJveCIgaHJlZj0iP3BhdGg9L3NlcnZpY2VzLmh0bWwiIHRhcmdldD0iX3RvcCIgb25jbGljaz0iIj4KCQkJCQkJCQkJPHN2ZyBjbGFzcz0iaWNvbiI+PHVzZSB4bGluazpocmVmPSIjaWNvbi10b29scyI+PC91c2U+PC9zdmc+CgkJCQkJCTxzcGFuIGNsYXNzPSJzaHJpbmstZ3JvdyBza2VsZXRvbi10eHQiIGRhdGEtbWVudS10cmFuc2xhdGU9IlNFUlZJQ0UiPlBpw6hjZXMgJmFtcDsgU2VydmljZTwvc3Bhbj4KCQkJCQkJCQkJCQk8c3BhbiByb2xlPSJidXR0b24iIHRhYmluZGV4PSIwIiBjbGFzcz0ibWVudUV4cGFuZCAtcCAtLXMtMyIgYXJpYS1sYWJlbD0iTWVudSBkw6lyb3VsYW50Ij4KCQkJCQkJCQkJPHN2ZyBjbGFzcz0iaWNvbiI+PHVzZSB4bGluazpocmVmPSIjaWNvbi1jaGV2cm9uLWRvd24iPjwvdXNlPjwvc3ZnPgoJCQkJCTwvc3Bhbj4KCQkJCQk8L2E+CgkJCQkJCQkJCQk8ZGl2IGNsYXNzPSJzdWJtZW51SXRlbUNvbnRhaW5lciIgc3R5bGU9ImRpc3BsYXk6bm9uZTsiPgoJCQkJCQk8c3RhY2stbGMgaWQ9Iml0ZW1fU0VSVklDRSIgY2xhc3M9Ii0tcy05Ij4KCQkJCQkJCQkJCQkJCTxzcGFuIGNsYXNzPSItbTAiPgoJCQkJCQkJPGEgY2xhc3M9InN1Ym1lbnUtaXRlbSBmbGV4LWJveCBmbGV4LWJldHdlZW4gLWJ0IC0tcy01IEFQUE9JTlRNRU5UIiBocmVmPSI\/cGF0aD0vZGVtYW5kZXMvcmVuZGV6LXZvdXMtYXUtc2VydmljZS5odG1sIiB0YXJnZXQ9IiIgb25jbGljaz0iIj4KCQkJCQkJCQk8c3BhbiBjbGFzcz0iLXBoIj5QcmVuZHJlIHJlbmRlei12b3VzPC9zcGFuPgoJCQkJCQkJCTxzcGFuIHJvbGU9ImJ1dHRvbiIgdGFiaW5kZXg9IjAiIGNsYXNzPSItcCAtLXMtNSI+CgkJCQkJCQkJCQkJCTxzdmcgY2xhc3M9Imljb24iPjx1c2UgeGxpbms6aHJlZj0iI2ljb24tY2hldnJvbi1yaWdodCI+PC91c2U+PC9zdmc+CgkJCQkJCQkJPC9zcGFuPgoJCQkJCQkJPC9hPgoJCQkJCQk8L3NwYW4+CQkJCQkJPHNwYW4gY2xhc3M9Ii1tMCI+CgkJCQkJCQk8YSBjbGFzcz0ic3VibWVudS1pdGVtIGZsZXgtYm94IGZsZXgtYmV0d2VlbiAtYnQgLS1zLTUgNWNhMDY3YzQtMmM1MC0zNjhkLTIyYzUtMSIgaHJlZj0iP3BhdGg9L3JlY2hlcmNoZS1wbmV1LWFjY2Vzc29pcmVzLmh0bWwiIHRhcmdldD0iIiBvbmNsaWNrPSIiPgoJCQkJCQkJCTxzcGFuIGNsYXNzPSItcGgiPkxvY2FsaXNhdGV1ciBkZSBQbmV1czwvc3Bhbj4KCQkJCQkJCQk8c3BhbiByb2xlPSJidXR0b24iIHRhYmluZGV4PSIwIiBjbGFzcz0iLXAgLS1zLTUiPgoJCQkJCQkJCQkJCQk8c3ZnIGNsYXNzPSJpY29uIj48dXNlIHhsaW5rOmhyZWY9IiNpY29uLWNoZXZyb24tcmlnaHQiPjwvdXNlPjwvc3ZnPgoJCQkJCQkJCTwvc3Bhbj4KCQkJCQkJCTwvYT4KCQkJCQkJPC9zcGFuPgkJCQkJCTxzcGFuIGNsYXNzPSItbTAiPgoJCQkJCQkJPGEgY2xhc3M9InN1Ym1lbnUtaXRlbSBmbGV4LWJveCBmbGV4LWJldHdlZW4gLWJ0IC0tcy01IFBUX0FDQ0VTUyIgaHJlZj0iP3BhdGg9L2RlbWFuZGVzL2NvbW1hbmRlLXBpZWNlcy1hY2Nlc3NvaXJlcy1hdXRvbW9iaWxlcy5odG1sIiB0YXJnZXQ9IiIgb25jbGljaz0iIj4KCQkJCQkJCQk8c3BhbiBjbGFzcz0iLXBoIj5QacOoY2VzICZhbXA7IEFjY2Vzc29pcmVzPC9zcGFuPgoJCQkJCQkJCTxzcGFuIHJvbGU9ImJ1dHRvbiIgdGFiaW5kZXg9IjAiIGNsYXNzPSItcCAtLXMtNSI+CgkJCQkJCQkJCQkJCTxzdmcgY2xhc3M9Imljb24iPjx1c2UgeGxpbms6aHJlZj0iI2ljb24tY2hldnJvbi1yaWdodCI+PC91c2U+PC9zdmc+CgkJCQkJCQkJPC9zcGFuPgoJCQkJCQkJPC9hPgoJCQkJCQk8L3NwYW4+CQkJCQkJPHNwYW4gY2xhc3M9Ii1tMCI+CgkJCQkJCQk8YSBjbGFzcz0ic3VibWVudS1pdGVtIGZsZXgtYm94IGZsZXgtYmV0d2VlbiAtYnQgLS1zLTUgNWJjNWM1YjktNjgwOS03NDBkLTFiYmItZCIgaHJlZj0iP3BhdGg9L2xvY2F0aW9uLmh0bWwiIHRhcmdldD0iIiBvbmNsaWNrPSIiPgoJCQkJCQkJCTxzcGFuIGNsYXNzPSItcGgiPkxvY2F0aW9uIGF1dG8gSm91ci1TZW0tTW9pczwvc3Bhbj4KCQkJCQkJCQk8c3BhbiByb2xlPSJidXR0b24iIHRhYmluZGV4PSIwIiBjbGFzcz0iLXAgLS1zLTUiPgoJCQkJCQkJCQkJCQk8c3ZnIGNsYXNzPSJpY29uIj48dXNlIHhsaW5rOmhyZWY9IiNpY29uLWNoZXZyb24tcmlnaHQiPjwvdXNlPjwvc3ZnPgoJCQkJCQkJCTwvc3Bhbj4KCQkJCQkJCTwvYT4KCQkJCQkJPC9zcGFuPgkJCQkJCTxzcGFuIGNsYXNzPSItbTAiPgoJCQkJCQkJPGEgY2xhc3M9InN1Ym1lbnUtaXRlbSBmbGV4LWJveCBmbGV4LWJldHdlZW4gLWJ0IC0tcy01IEdQX2U4NGJmYmU4YzE5NWRhZjMiIGhyZWY9Ij9wYXRoPS9nYXJhbnRpZS5odG1sIiB0YXJnZXQ9IiIgb25jbGljaz0iIj4KCQkJCQkJCQk8c3BhbiBjbGFzcz0iLXBoIj5HYXJhbnRpZSBLaWE8L3NwYW4+CgkJCQkJCQkJPHNwYW4gcm9sZT0iYnV0dG9uIiB0YWJpbmRleD0iMCIgY2xhc3M9Ii1wIC0tcy01Ij4KCQkJCQkJCQkJCQkJPHN2ZyBjbGFzcz0iaWNvbiI+PHVzZSB4bGluazpocmVmPSIjaWNvbi1jaGV2cm9uLXJpZ2h0Ij48L3VzZT48L3N2Zz4KCQkJCQkJCQk8L3NwYW4+CgkJCQkJCQk8L2E+CgkJCQkJCTwvc3Bhbj4JCQkJCQk8c3BhbiBjbGFzcz0iLW0wIj4KCQkJCQkJCTxhIGNsYXNzPSJzdWJtZW51LWl0ZW0gZmxleC1ib3ggZmxleC1iZXR3ZWVuIC1idCAtLXMtNSAyNmUyMTVlZC1hYzY2LTZhNC01MTEtNTBhIiBocmVmPSJodHRwczovL3d3dy5hbGJpbGVnZWFudC5jb20vZnIvY2VudHJlLWR1LXBhcmUtYnJpc2UtYWxiaSIgdGFyZ2V0PSJfYmxhbmsiIG9uY2xpY2s9IiI+CgkJCQkJCQkJPHNwYW4gY2xhc3M9Ii1waCI+Q2VudHJlIGR1IHBhcmUtYnJpc2UgQUxCSTwvc3Bhbj4KCQkJCQkJCQk8c3BhbiByb2xlPSJidXR0b24iIHRhYmluZGV4PSIwIiBjbGFzcz0iLXAgLS1zLTUiPgoJCQkJCQkJCQkJCQk8c3ZnIGNsYXNzPSJpY29uIj48dXNlIHhsaW5rOmhyZWY9IiNpY29uLWNoZXZyb24tcmlnaHQiPjwvdXNlPjwvc3ZnPgoJCQkJCQkJCTwvc3Bhbj4KCQkJCQkJCTwvYT4KCQkJCQkJPC9zcGFuPgkJCQkJCTxzcGFuIGNsYXNzPSItbTAiPgoJCQkJCQkJPGEgY2xhc3M9InN1Ym1lbnUtaXRlbSBmbGV4LWJveCBmbGV4LWJldHdlZW4gLWJ0IC0tcy01IEdQXzFjMzNlNGJmYTE5NWViYTYiIGhyZWY9Ij9wYXRoPS9raWEtcHJvdGVjdC1mci5odG1sIiB0YXJnZXQ9IiIgb25jbGljaz0iIj4KCQkJCQkJCQk8c3BhbiBjbGFzcz0iLXBoIj5LaWEgUHJvdGVjdDwvc3Bhbj4KCQkJCQkJCQk8c3BhbiByb2xlPSJidXR0b24iIHRhYmluZGV4PSIwIiBjbGFzcz0iLXAgLS1zLTUiPgoJCQkJCQkJCQkJCQk8c3ZnIGNsYXNzPSJpY29uIj48dXNlIHhsaW5rOmhyZWY9IiNpY29uLWNoZXZyb24tcmlnaHQiPjwvdXNlPjwvc3ZnPgoJCQkJCQkJCTwvc3Bhbj4KCQkJCQkJCTwvYT4KCQkJCQkJPC9zcGFuPgkJCQkJCTxzcGFuIGNsYXNzPSItbTAiPgoJCQkJCQkJPGEgY2xhc3M9InN1Ym1lbnUtaXRlbSBmbGV4LWJveCBmbGV4LWJldHdlZW4gLWJ0IC0tcy01IEdQXzk4YmE5YzcxYWJlMjg0ZjIiIGhyZWY9Ij9wYXRoPS9waWVjZXMtb3JpZ2luZS1raWEuaHRtbCIgdGFyZ2V0PSIiIG9uY2xpY2s9IiI+CgkJCQkJCQkJPHNwYW4gY2xhc3M9Ii1waCI+UGnDqGNlcyBkJ29yaWdpbmUgS2lhPC9zcGFuPgoJCQkJCQkJCTxzcGFuIHJvbGU9ImJ1dHRvbiIgdGFiaW5kZXg9IjAiIGNsYXNzPSItcCAtLXMtNSI+CgkJCQkJCQkJCQkJCTxzdmcgY2xhc3M9Imljb24iPjx1c2UgeGxpbms6aHJlZj0iI2ljb24tY2hldnJvbi1yaWdodCI+PC91c2U+PC9zdmc+CgkJCQkJCQkJPC9zcGFuPgoJCQkJCQkJPC9hPgoJCQkJCQk8L3NwYW4+CQkJCQkJPHNwYW4gY2xhc3M9Ii1tMCI+CgkJCQkJCQk8YSBjbGFzcz0ic3VibWVudS1pdGVtIGZsZXgtYm94IGZsZXgtYmV0d2VlbiAtYnQgLS1zLTUgR1BfNGYxMDc3MDY2NTBhYjhiMCIgaHJlZj0iP3BhdGg9L2V4cGVydHMtZW4tcG5ldXMta2lhLmh0bWwiIHRhcmdldD0iIiBvbmNsaWNrPSIiPgoJCQkJCQkJCTxzcGFuIGNsYXNzPSItcGgiPkV4cGVydHMgZW4gcG5ldXMgS2lhPC9zcGFuPgoJCQkJCQkJCTxzcGFuIHJvbGU9ImJ1dHRvbiIgdGFiaW5kZXg9IjAiIGNsYXNzPSItcCAtLXMtNSI+CgkJCQkJCQkJCQkJCTxzdmcgY2xhc3M9Imljb24iPjx1c2UgeGxpbms6aHJlZj0iI2ljb24tY2hldnJvbi1yaWdodCI+PC91c2U+PC9zdmc+CgkJCQkJCQkJPC9zcGFuPgoJCQkJCQkJPC9hPgoJCQkJCQk8L3NwYW4+CQkJCQkJPHNwYW4gY2xhc3M9Ii1tMCI+CgkJCQkJCQk8YSBjbGFzcz0ic3VibWVudS1pdGVtIGZsZXgtYm94IGZsZXgtYmV0d2VlbiAtYnQgLS1zLTUgR1BfNzk3YzU2ODVmNDZhOGQwMSIgaHJlZj0iP3BhdGg9L2FjY2Vzc29pcmVzLWtpYS5odG1sIiB0YXJnZXQ9IiIgb25jbGljaz0iIj4KCQkJCQkJCQk8c3BhbiBjbGFzcz0iLXBoIj5BY2Nlc3NvaXJlcyBLaWE8L3NwYW4+CgkJCQkJCQkJPHNwYW4gcm9sZT0iYnV0dG9uIiB0YWJpbmRleD0iMCIgY2xhc3M9Ii1wIC0tcy01Ij4KCQkJCQkJCQkJCQkJPHN2ZyBjbGFzcz0iaWNvbiI+PHVzZSB4bGluazpocmVmPSIjaWNvbi1jaGV2cm9uLXJpZ2h0Ij48L3VzZT48L3N2Zz4KCQkJCQkJCQk8L3NwYW4+CgkJCQkJCQk8L2E+CgkJCQkJCTwvc3Bhbj4JCQkJCQk8c3BhbiBjbGFzcz0iLW0wIj4KCQkJCQkJCTxhIGNsYXNzPSJzdWJtZW51LWl0ZW0gZmxleC1ib3ggZmxleC1iZXR3ZWVuIC1idCAtLXMtNSBHUF82Mzg4M2FjNjYyMmYzMWMxIiBocmVmPSI\/cGF0aD0vZW50cmV0aWVucy1yZWNvbW1hbmRlcy5odG1sIiB0YXJnZXQ9IiIgb25jbGljaz0iIj4KCQkJCQkJCQk8c3BhbiBjbGFzcz0iLXBoIj5FbnRyZXRpZW5zIHJlY29tbWFuZMOpczwvc3Bhbj4KCQkJCQkJCQk8c3BhbiByb2xlPSJidXR0b24iIHRhYmluZGV4PSIwIiBjbGFzcz0iLXAgLS1zLTUiPgoJCQkJCQkJCQkJCQk8c3ZnIGNsYXNzPSJpY29uIj48dXNlIHhsaW5rOmhyZWY9IiNpY29uLWNoZXZyb24tcmlnaHQiPjwvdXNlPjwvc3ZnPgoJCQkJCQkJCTwvc3Bhbj4KCQkJCQkJCTwvYT4KCQkJCQkJPC9zcGFuPgkJCQkJCTxzcGFuIGNsYXNzPSItbTAiPgoJCQkJCQkJPGEgY2xhc3M9InN1Ym1lbnUtaXRlbSBmbGV4LWJveCBmbGV4LWJldHdlZW4gLWJ0IC0tcy01IEdQXzJmOTAzZjM1ZmFiZDljZTYiIGhyZWY9Ij9wYXRoPS9hc3Npc3RhbmNlLXJvdXRpZXJlLmh0bWwiIHRhcmdldD0iIiBvbmNsaWNrPSIiPgoJCQkJCQkJCTxzcGFuIGNsYXNzPSItcGgiPkFzc2lzdGFuY2Ugcm91dGnDqHJlPC9zcGFuPgoJCQkJCQkJCTxzcGFuIHJvbGU9ImJ1dHRvbiIgdGFiaW5kZXg9IjAiIGNsYXNzPSItcCAtLXMtNSI+CgkJCQkJCQkJCQkJCTxzdmcgY2xhc3M9Imljb24iPjx1c2UgeGxpbms6aHJlZj0iI2ljb24tY2hldnJvbi1yaWdodCI+PC91c2U+PC9zdmc+CgkJCQkJCQkJPC9zcGFuPgoJCQkJCQkJPC9hPgoJCQkJCQk8L3NwYW4+CQkJCQkJPHNwYW4gY2xhc3M9Ii1tMCI+CgkJCQkJCQk8YSBjbGFzcz0ic3VibWVudS1pdGVtIGZsZXgtYm94IGZsZXgtYmV0d2VlbiAtYnQgLS1zLTUgOTE1MzUyOTItOTYyMy01ZGQwLTVmMy1lMSIgaHJlZj0iP3BhdGg9L3JhcHBlbHMvcmFwcGVscy5odG1sIiB0YXJnZXQ9IiIgb25jbGljaz0iIj4KCQkJCQkJCQk8c3BhbiBjbGFzcz0iLXBoIj5Ww6lyaWZpY2F0aW9uIGRlcyByYXBwZWxzPC9zcGFuPgoJCQkJCQkJCTxzcGFuIHJvbGU9ImJ1dHRvbiIgdGFiaW5kZXg9IjAiIGNsYXNzPSItcCAtLXMtNSI+CgkJCQkJCQkJCQkJCTxzdmcgY2xhc3M9Imljb24iPjx1c2UgeGxpbms6aHJlZj0iI2ljb24tY2hldnJvbi1yaWdodCI+PC91c2U+PC9zdmc+CgkJCQkJCQkJPC9zcGFuPgoJCQkJCQkJPC9hPgoJCQkJCQk8L3NwYW4+CgkJCQkJCTwvc3RhY2stbGM+CgkJCQkJPC9kaXY+CgkJCQk8L2xpPgoKCQkJCQoJCQkJPGxpIGNsYXNzPSJtZW51LWdyb3VwIj4KCQkJCQkKCQkJCQk8YSBjbGFzcz0iTEFOR1VBR0UgIC1ib2xkICBtZW51LWl0ZW0gZmxleC1ib3giIGhyZWY9Ij9wYXRoPS9lbmcvIiB0YXJnZXQ9Il90b3AiIG9uY2xpY2s9IiI+CgkJCQkJCQkJCTxzdmcgY2xhc3M9Imljb24iPjx1c2UgeGxpbms6aHJlZj0iI2ljb24tZ2xvYmUiPjwvdXNlPjwvc3ZnPgoJCQkJCQk8c3BhbiBjbGFzcz0ic2hyaW5rLWdyb3cgc2tlbGV0b24tdHh0Ij5FbmdsaXNoPC9zcGFuPgoJCQkJCQkKCQkJCQk8L2E+CgkJCQkJCgkJCQk8L2xpPgoKCQkJCQoJCQkJPGxpIGNsYXNzPSJtZW51LWdyb3VwIj4KCQkJCQkKCQkJCQk8YSBjbGFzcz0iTkVXUyAgIG1lbnUtaXRlbSBmbGV4LWJveCIgaHJlZj0iP3BhdGg9L25vdXZlbGxlcy5odG1sIiB0YXJnZXQ9Il90b3AiIG9uY2xpY2s9IiI+CgkJCQkJCQkJCTxzdmcgY2xhc3M9Imljb24iPjx1c2UgeGxpbms6aHJlZj0iI2ljb24tbmV3c3BhcGVyIj48L3VzZT48L3N2Zz4KCQkJCQkJPHNwYW4gY2xhc3M9InNocmluay1ncm93IHNrZWxldG9uLXR4dCI+Tm91dmVsbGVzPC9zcGFuPgoJCQkJCQkKCQkJCQk8L2E+CgkJCQkJCgkJCQk8L2xpPgoKCQkJCQoKCQkJCTwvdWw+CgkJCTwvbmF2PgoJCQkJPC9hc2lkZT4KCQkJPC9ib3gtbGM+CgoKCQkJPHN0YWNrLWxjIGNsYXNzPSJsb2dvLWFjdGlvbiBzaHJpbmstZ3JvdyBhbGlnbi1jZW50ZXIgZmxleC1ldmVubHkiPgoJCQkJPGEgY2xhc3M9ImxvZ28iIGhyZWY9Ij9wYXRoPS8iIGl0ZW1wcm9wPSJ1cmwiPgoJCQkJCTxpbWcgYWx0PSJMb2dvIiBjbGFzcz0ibGl2ZWxvYWQgb3B0YW5vbi1jYXRlZ29yeS1DMDAwMSIgZGF0YS1zY29kZXJlZj0iNTE5NzgtVCIgc3JjPSJodHRwczovL2FsYmlraWEuY29tLy9pbWFnZXMvTG9nb01vYmlsZS9LaWEtTG9nby5zdmciIHN0eWxlPSJ3aWR0aDogMTAwJTsgaGVpZ2h0OiAzMHB4OyIgZGF0YS1vdC1pZ25vcmUgZGF0YS1jb29raWVjb25zZW50PSJpZ25vcmUiPgoJCQkJPC9hPgoJCQkJCQkJPHNwYW4gY2xhc3M9ImhlYWRlci1kZWFsZXItbmFtZSAtbTAiPgoJCQkJQUxCSSBLaWEgTWFzY291Y2hlCgkJCTwvc3Bhbj4KCQkJPC9zdGFjay1sYz4KCQkJPGRpdiBjbGFzcz0ic2VydmljZS1hY3Rpb24iIGFyaWEtbGFiZWw9IiI+CgkJCQk8YSBocmVmPSI\/cGF0aD0vZGVtYW5kZXMvcmVuZGV6LXZvdXMtYXUtc2VydmljZS5odG1sIj4KCQkJCQk8c3ZnIGNsYXNzPSIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld2JveD0iMCAwIDUxMiA1MTIiPjwhLS0gRm9udCBBd2Vzb21lIEZyZWUgNS4xNS4xIGJ5IEBmb250YXdlc29tZSAtIGh0dHBzOi8vZm9udGF3ZXNvbWUuY29tIExpY2Vuc2UgLSBodHRwczovL2ZvbnRhd2Vzb21lLmNvbS9saWNlbnNlL2ZyZWUgKEljb25zOiBDQyBCWSA0LjAsIEZvbnRzOiBTSUwgT0ZMIDEuMSwgQ29kZTogTUlUIExpY2Vuc2UpIC0tPjxwYXRoIGQ9Ik01MDcuNzMgMTA5LjFjLTIuMjQtOS4wMy0xMy41NC0xMi4wOS0yMC4xMi01LjUxbC03NC4zNiA3NC4zNi02Ny44OC0xMS4zMS0xMS4zMS02Ny44OCA3NC4zNi03NC4zNmM2LjYyLTYuNjIgMy40My0xNy45LTUuNjYtMjAuMTYtNDcuMzgtMTEuNzQtOTkuNTUuOTEtMTM2LjU4IDM3LjkzLTM5LjY0IDM5LjY0LTUwLjU1IDk3LjEtMzQuMDUgMTQ3LjJMMTguNzQgNDAyLjc2Yy0yNC45OSAyNC45OS0yNC45OSA2NS41MSAwIDkwLjUgMjQuOTkgMjQuOTkgNjUuNTEgMjQuOTkgOTAuNSAwbDIxMy4yMS0yMTMuMjFjNTAuMTIgMTYuNzEgMTA3LjQ3IDUuNjggMTQ3LjM3LTM0LjIyIDM3LjA3LTM3LjA3IDQ5LjctODkuMzIgMzcuOTEtMTM2Ljczek02NCA0NzJjLTEzLjI1IDAtMjQtMTAuNzUtMjQtMjQgMC0xMy4yNiAxMC43NS0yNCAyNC0yNHMyNCAxMC43NCAyNCAyNGMwIDEzLjI1LTEwLjc1IDI0LTI0IDI0eiI+PC9wYXRoPjwvc3ZnPgoJCQkJCQoJCQkJPC9hPgoJCQk8L2Rpdj4KCQkJPGEgY2xhc3M9InBob25lLWFjdGlvbiIgdGl0bGU9IkNvbnRhY3Rlei1ub3VzIiBkYXRhLWRlcGFydG1lbnQ9IlNhbGVzIiBocmVmPSJqYXZhc2NyaXB0OnZvaWQoMCk7IiBvbmNsaWNrPSJzaG93UGhvbmVQb3B1cCgpIj4KCQkJCTxzdmcgY2xhc3M9IiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Ym94PSIwIDAgNTEyIDUxMiI+PCEtLSBGb250IEF3ZXNvbWUgRnJlZSA1LjE1LjEgYnkgQGZvbnRhd2Vzb21lIC0gaHR0cHM6Ly9mb250YXdlc29tZS5jb20gTGljZW5zZSAtIGh0dHBzOi8vZm9udGF3ZXNvbWUuY29tL2xpY2Vuc2UvZnJlZSAoSWNvbnM6IENDIEJZIDQuMCwgRm9udHM6IFNJTCBPRkwgMS4xLCBDb2RlOiBNSVQgTGljZW5zZSkgLS0+PHBhdGggZD0iTTQ5Ny4zOSAzNjEuOGwtMTEyLTQ4YTI0IDI0IDAgMCAwLTI4IDYuOWwtNDkuNiA2MC42QTM3MC42NiAzNzAuNjYgMCAwIDEgMTMwLjYgMjA0LjExbDYwLjYtNDkuNmEyMy45NCAyMy45NCAwIDAgMCA2LjktMjhsLTQ4LTExMkEyNC4xNiAyNC4xNiAwIDAgMCAxMjIuNi42MWwtMTA0IDI0QTI0IDI0IDAgMCAwIDAgNDhjMCAyNTYuNSAyMDcuOSA0NjQgNDY0IDQ2NGEyNCAyNCAwIDAgMCAyMy40LTE4LjZsMjQtMTA0YTI0LjI5IDI0LjI5IDAgMCAwLTE0LjAxLTI3LjZ6Ij48L3BhdGg+PC9zdmc+CgkJCQkKCQkJPC9hPgoKCQkJPC9oZWFkZXI+CQoJCQkKCQkJPGRpdiBpZD0icHJvbW9Ub3BCdG4iPjwhLS0gc2VtX2Jvb3N0IG9ubHkgLS0+PC9kaXY+CgoJCQk8ZGl2IGlkPSJwaG9uZU51bWJlckRpdiIgY2xhc3M9InJldmVhbC1tb2RhbCIgc3R5bGU9IndpZHRoOjgwJTttYXJnaW4tbGVmdDowcHg7bGVmdDo1JTtwYWRkaW5nOjUlO3otaW5kZXg6IDk5OTk5OTk7dmlzaWJpbGl0eTpoaWRkZW47dG9wOiAtMTAwMHB4O3Bvc2l0aW9uOiBhYnNvbHV0ZTsiPjwvZGl2PgoKCQkJCgkJCQoJCQk8IS0tIE9POjplZjc1YTg0ZTIwNWYyZjE0MzBjYWYzMjBiZTgwMzE5NyAtLT4KCQkJPCEtLWVuZCB0b3AgLS0+CgoKICAgICAgIDxkaXYgY2xhc3M9InNlYXJjaGJveCI+CiAgICAgICAgICAgICAgIDxkaXYgaWQ9Im5ld2NhckNvbnRhaW5lciIgY2xhc3M9ImRpdlNwYW4gZGl2U3BhbjEyIE1haW5Cb3hMYXllciI+CiAgICAgICAgPCEtLSBJTklUSUFMIExPQ0FUSU9OQkFSIC0tPgogICAgICAgIDxkaXYgY2xhc3M9ImRpdlNwYW4gZGl2U3BhbjEyIE91dGVyQm94TGF5ZXIiPgogICAgICAgIAk8ZGl2IGNsYXNzPSJoZWFkZXJJbWciPjxpbnB1dCB0eXBlPSJoaWRkZW4iIHZhbHVlPSIxIiBpZD0idHJhZGVJbkJhclN0aWNreUJvdHRvbSI+CjwhLS1TVEFSVF9SRU1PVkFCTEVfQ09ERV9CTE9DS19DT01NRU5UXzAwMDEtLT4KCgkJCQkJPGRpdiBpZD0idHJhZGVJbkJhck1vYmlsZSIgY2xhc3M9ImJveC1sYyAtY2xlYXIiPgogICAgICAgICAgICAJCTxkaXYgaWQ9InRyYWRlSW5CYXJXTW9iaWxlIiBjbGFzcz0iZmxleC1ib3ggZmxleC1lcXVhbCI+CgkJCQkJPHRhYmxlIGNsYXNzPSJtaWRkbGUiIGlkPSJkZWZhdWx0VG9wQmFubmVyIj4KCQkJCQk8dGJvZHk+CgkJCQkJCTx0cj4KCQkJCQkJPHRkIGlkPSJkZWZhdWx0VG9wQmFubmVyV3JhcCI+CgkJCQkJCQk8ZGl2IGlkPSJkZWZhdWx0VG9wQmFubmVyVGl0bGUiPjxwPkTDqWNvdXZyZXogbGEgdmFsZXVyIGRlIHZvdHJlIMOpY2hhbmdlPC9wPjwvZGl2PgoJCQkJCQkJPGRpdiBjbGFzcz0iZGVmYXVsdFRvcEJhbm5lckJ0bldyYXBwZXIiPgoJCQkJCQkJCTxkaXY+PGEgZGF0YS1wb3B1cGlkPSJUcmFkZUluQmFyUG9wdXBDb250YWluZXIiPlJFQ0VWRVogVU4gRVNUSU3DiSBHUkFUVUlUITwvYT48L2Rpdj4KCQkJCQkJCTwvZGl2PgoJCQkJCQkJPGRpdiBpZD0iZGVmYXVsdFRvcEJhbm5lckxvZ28iPgoJCQkJCQkJCTxwPjwvcD4KCQkJCQkJCTwvZGl2PgoJCQkJCQk8L3RkPgoJCQkJCQk8L3RyPgoJCQkJCTwvdGJvZHk+CgkJCQkJPC90YWJsZT4KCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj48Ym94LWxjIGlkPSJ0cmFkZUluQmFyTW9iaWxlQnV0dG9uIiBjbGFzcz0idHJhZGVJbkJhck1vYmlsZUJ1dHRvbiAtLWZzMCIgc3R5bGU9ImRpc3BsYXk6ZmxleDt3aWR0aDoxNDBweCFpbXBvcnRhbnQ7Ij48aSBjbGFzcz0iZmEgZmEtc3luYyBmYS1zcGluIj48L2k+PGEgc3R5bGU9InRleHQtYWxpZ246IGxlZnQ7d2lkdGg6IDEwMCU7ZmxvYXQ6IGxlZnQ7dGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtmb250LXNpemU6IC45cmVtO3BhZGRpbmctbGVmdDogNXB4O3dpZHRoOjEwMCU7IiBkYXRhLXBvcHVwaWQ9IlRyYWRlSW5CYXJQb3B1cENvbnRhaW5lciI+w4l2YWx1ZXogdm90cmU8cCBzdHlsZT0iZm9udC1zaXplOiAxcmVtO2ZvbnQtd2VpZ2h0OiBib2xkOyI+w4lDSEFOR0UhPC9wPjwvYT48L2JveC1sYz4JCQoJCTxkaXYgaWQ9IlRyYWRlSW5CYXJQb3B1cENvbnRhaW5lciIgY2xhc3M9InJldmVhbC1tb2RhbCAiIHN0eWxlPSJ3aWR0aDozMDBweDtoZWlnaHQ6OTgwcHg7IiBkYXRhLWxhenlsb2FkaWQ9Im5ld2NhcnNfdHJhZGVpbmJhcnBvcHVwY29udGFpbmVyIj4KCQkJCgkJPC9kaXY+CgoJCTwhLS0gT086OjRhYTgyNTdmYzcyODlkNWQ4ZjllMjM2NTA0ZGZhMmM3IC0tPgoKCQkKCiAgICA8ZGl2IGlkPSJlbWFpbFN1Y2Nlc3NNZXNzYWdlX1RyYWRlSW5CYXJQb3B1cENvbnRhaW5lciIgY2xhc3M9InJldmVhbC1tb2RhbCBlbWFpbC1jb25zZW50LWJveCIgc3R5bGU9IndpZHRoOjYwJTsiPgogICAgICA8ZGl2IGNsYXNzPSJpY29uLXRpdGxlIj4KICAgICAgICA8IS0tIDxzcGFuIGNsYXNzPSJ0aXRsZS1pY29uIHN1Y2Nlc3MgLW1sMCI+PC9zcGFuPiAtLT4KICAgICAgICA8c3BhbiBjbGFzcz0idGl0bGUtdHh0Ij5Wb3RyZSBkZW1hbmRlIGEgYmllbiDDqXTDqSBlbnZvecOpZSE8L3NwYW4+CiAgICAgIDwvZGl2PgogICAgICA8cCBjbGFzcz0iZGVmYXVsdFN1Y2Nlc3MiPjxicj5BTEJJIEtpYSBNYXNjb3VjaGUgdm91cyByZW1lcmNpZSBkJ2F2b2lyIGNvbW11bmlxdcOpIHZvdHJlIGRlbWFuZGUuIFVuIGNvbnNlaWxsZXIgY29tbXVuaXF1ZXJhIGF2ZWMgdm91cyBzb3VzIHBldS48L3A+CiAgICAgIDxwIGNsYXNzPSJzZXJ2aWNlU3VjY2VzcyIgc3R5bGU9ImRpc3BsYXk6bm9uZTsiPjxicj5NZXJjaSBwb3VyIHZvdHJlIGRlbWFuZGUuIFVuIG1lbWJyZSBkZSBub3RyZSDDqXF1aXBlIGNvbW11bmlxdWVyYSBhdmVjIHZvdXMgc291cyBwZXUuPC9wPgogICAgICA8IS0tIDxhIGNsYXNzPSJjbG9zZS1yZXZlYWwtbW9kYWwiPiYjMjE1OzwvYT4gLS0+CiAgICAgIDxkaXYgY2xhc3M9ImVtYWlsLWNvbnNlbnQtYnRucyAtcHQyMCAtcmlnaHQgYW1wQ29uc2VudFJlc3BvbnNlU2VuZERpc21pc3MiPgogICAgICAgIDxhIGhyZWY9Ij9wYXRoPSMiIGNsYXNzPSIgLXVwcGVyY2FzZSBidG4tZGVmYXVsdCAiIG9uY2xpY2s9IiQoJy5jbG9zZS1yZXZlYWwtbW9kYWw6dmlzaWJsZScpLnRyaWdnZXIoJ2NsaWNrJyk7cmV0dXJuIGZhbHNlOyI+RmVybWVyPC9hPgogICAgICA8L2Rpdj4KICAgICAgPGZvcm0gaWQ9ImVtYWlsbXNnZnJtX1RyYWRlSW5CYXJQb3B1cENvbnRhaW5lciIgY2xhc3M9ImNvbmZpcm1faHRtbCIgdGFyZ2V0PSJpZnJhbWUiIG1ldGhvZD0icG9zdCIgYWN0aW9uPSIvY29uZmlybWF0aW9uLmh0bWwiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJsYWJlbCIgY2xhc3M9ImxhYmVsZW1haWwiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJzZWN0aW9uIiBjbGFzcz0ibGFiZWxzZWN0aW9uIiB2YWx1ZT0iT2NjYXNpb24iPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJicmFuZCIgY2xhc3M9ImJyYW5kZW1haWwiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJtb2RlbCIgY2xhc3M9Im1vZGVsZW1haWwiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJ5ZWFyIiBjbGFzcz0ieWVhcmVtYWlsIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZ29vZ2xlaWQiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJnb29nbGVpZGQyY21lZGlhIiB2YWx1ZT0iIj4KCQkJCQkJICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhZHdvcmRzY29uaWQiIHZhbHVlPSI5NzA5MTEyMzIiPgoJCQkJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYWR3b3Jkc2xhYmVsaWQiIHZhbHVlPSJEeXJjQ095dW4yMFFnTno3emdNIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYmluZ2NvbmlkIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYmluZ2FjdGlvbmlkIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYmluZ2RvbWFpbmlkIiB2YWx1ZT0iIj4KCiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImFkcm9sbEFkdiIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImFkcm9sbFBpeCIgdmFsdWU9IiI+CgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJmYWNlYm9va0NvbklkIiB2YWx1ZT0iIj4KCiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImRvbWFpbiIgdmFsdWU9ImFsYmlraWEuY29tIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0icmVmZXJyZXIiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJkZXBhcnRtZW50IiB2YWx1ZT0iTkVXIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ibGVhZF9kZXBhcnRtZW50IiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iaXNleHByZXNzIiBjbGFzcz0iaXNleHByZXNzIiB2YWx1ZT0iMCI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImlzcHJvbW8iIHZhbHVlPSIwIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iaXNob21lcGFnZSIgdmFsdWU9IjAiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJ0ZXN0bW9kZSIgY2xhc3M9InRlc3Rtb2RlIiB2YWx1ZT0iMCI+CgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJsZWFkVHlwZSIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InBhZ2VJRCIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImN1cnJlbnRVUkwiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJpc0NvbmZpcm1Qb3B1cCIgdmFsdWU9IiI+CgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJjb25maXJtX2VtYWlsIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iY29uZmlybV9maXJzdF9uYW1lIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iY29uZmlybV9sYXN0X25hbWUiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJjb25maXJtX3Bob25lX251bWJlciIgdmFsdWU9IiI+CgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJpc0Z1bGxXaWR0aCIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImRlYWxlck5hbWUiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJidXR0b25Qb3NpdGlvbiIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImlzTW9iaWxlTmV3VkRQIiB2YWx1ZT0iMSI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImZyb21BdXRvQXViYWluZSIgdmFsdWU9IiI+CgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iTkVXIiBuYW1lPSJ0ZXh0Q2FyU2VjdGlvblR5cGUiIHN0eWxlPSJkaXNwbGF5Om5vbmU7Ij4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ibGFuZyIgdmFsdWU9ImZyIj4KICAgICAgPC9mb3JtPgogICAgICA8aWZyYW1lIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIG5hbWU9ImlmcmFtZSIgZnJhbWVib3JkZXI9IjAiIHN0eWxlPSJ3aWR0aDoxcHg7aGVpZ2h0OjFweDsiPjwvaWZyYW1lPgogICAgPC9kaXY+CgogICAgPGRpdiBpZD0iZW1haWxGYWlsTWVzc2FnZV9UcmFkZUluQmFyUG9wdXBDb250YWluZXIiIGNsYXNzPSJyZXZlYWwtbW9kYWwgZW1haWwtY29uc2VudC1ib3giIHN0eWxlPSJ3aWR0aDo2MCU7Ij4KICAgICAgPHNwYW4gY2xhc3M9ImZhaWwiPlVuZSBlcnJldXIgcydlc3QgcHJvZHVpdGU8L3NwYW4+CiAgICAgIDxwPk5vdXMgbidhdm9ucyBwYXMgcHUgZW52b3llciB2b3RyZSBtZXNzYWdlLiBTJ2lsIHZvdXMgcGxhw650IHJhZnJhw65jaGlyIGV0IGVzc2F5ZXogw6Agbm91dmVhdS48L3A+CiAgICAgIDxkaXYgY2xhc3M9ImNsb3NlLXJldmVhbC1tb2RhbCI+PGVtIGNsYXNzPSJmYSBmYS10aW1lcy1jaXJjbGUiPjwvZW0+PC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9Ii1wdDIwIC1yaWdodCBhbXBDb25zZW50UmVzcG9uc2VTZW5kRGlzbWlzcyI+CiAgICAgICAgPGlucHV0IHR5cGU9ImJ1dHRvbiIgY2xhc3M9IiAtdXBwZXJjYXNlIGJ0bi1kZWZhdWx0ICIgb25jbGljaz0iJCgnI2VtYWlsRmFpbE1lc3NhZ2UnKS50cmlnZ2VyKCdyZXZlYWw6Y2xvc2UnKTsiIHZhbHVlPSJGZXJtZXIiPgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKCgkJCQk8IS0tIE9POjplMjVkNmNmYWIzOTI3ZDc4ZDllMmY1YTJlMzQ3NjAxNiAtLT4KCQkKDTwhLS0gVFJBREUgSU4gQkFSIE5FV0NBUlMgLS0+Cg0KPCEtLUVORF9SRU1PVkFCTEVfQ09ERV9CTE9DS19DT01NRU5UXzAwMDEtLT4KCTxkaXYgaWQ9InRvcEJhbm5lckltYWdlIiBjbGFzcz0iTkVXQ0FSUy1jbGVhciBmbGV4LWNvbHVtbiBmbGV4LWNlbnRlciBhbGlnbi1jZW50ZXIiIHN0eWxlPSJhc3BlY3QtcmF0aW86MTAwLzI3Ljc3Nzc2O21hcmdpbi1ib3R0b206MTBweCAhaW1wb3J0YW50OyIgZGF0YS1pbnZjYXQ9ImFsbCI+CgkJCTxpbWcgY2xhc3M9ImxpdmVsb2FkICBvcHRhbm9uLWNhdGVnb3J5LUMwMDAxIiBkYXRhLWNvb2tpZWNvbnNlbnQ9Imlnbm9yZSIgZGF0YS1vdC1pZ25vcmU9IiIgZmV0Y2hwcmlvcml0eT0iaGlnaCIgc3JjPSJodHRwczovL2FsYmlraWEuY29tLy9pbWFnZXMvTmV3Q2FyUGFnZUltYWdlRHluL01CQU5fRDJDLUFjaGV0b25zQXV0b3MtMTI1MHgyMDAtZnIuanBnIiBhbHQ9IiBtIGIgYSBuICBkMiBjICBhY2hldG9ucyBhdXRvcyAxMjUweDIwMCBmciI+Cgk8L2Rpdj4KCQo8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGlkPSJ1bmRlckJhbm5lciI+PC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iZGl2U3BhbiBkaXZTcGFuMTIgT3V0ZXJCb3hMYXllciI+CiAgICAgICAgCTxkaXYgY2xhc3M9ImRpdlNwYW4gZGl2U3BhbjEyIj4KICAgICAgICAJCTxkaXYgY2xhc3M9IklubmVyQm94TGF5ZXIiPjxoMSBjbGFzcz0iZGVmYXVsdCBIMV8xNjk0ICI+PGRpdj48ZGl2PktpYSBuZXV2ZXMgMjAyNSwgMjAyNiAmYW1wOyAyMDI3IMOgIHZlbmRyZcKgPC9kaXY+PGRpdj7DoCBNYXNjb3VjaGXCoDwvZGl2PjwvZGl2PjwvaDE+PC9kaXY+PGRpdiBjbGFzcz0iSW5uZXJCb3hMYXllciI+PC9kaXY+CQkJCQk8IS0tIE9QRU4gTU9CSUxFIEZJTFRFUiBCVVRUT04gKCcuX19MSU5FX18uJyktLT4KCTxkaXYgY2xhc3M9ImZpbHRlclRvZ2dsZVdyYXBwZXIiPgoJCTxidXR0b24gaWQ9InRvZ2dsZUZpbHRlckJ0biIgY2xhc3M9ImZpbHRlclRvZ2dsZUJ0biI+RmlsdHJlcjwvYnV0dG9uPgoJPC9kaXY+Cgk8IS0tIENMT1NFIE1PQklMRSBGSUxURVIgQlVUVE9OICgnLl9fTElORV9fLicpLS0+CgkJCQk8ZGl2IGlkPSJzaWRlU2lkZWJhckZpbHRlciIgY2xhc3M9InNpZGVTaWRlYmFyIj4KCQkJCQk8ZGl2IGNsYXNzPSJzaWRlYmFySGVhZGVyIj4KCQkJCQkJPGRpdiBjbGFzcz0iZGl2U3BhbiBkaXZTcGFuMTIgZGl2RmlsdGVyQm94VGl0bGUiPgoJCQkJCQkJUmFmZmluZXogdm90cmUgcmVjaGVyY2hlIDoKCQkJCQkJPC9kaXY+CgkJCQkJCTxidXR0b24gaWQ9ImNsb3NlU2lkZWJhckJ0biIgY2xhc3M9ImNsb3NlQnRuIj7DlzwvYnV0dG9uPgoJCQkJCTwvZGl2PgoJCQkJCTxkaXYgaWQ9ImZpbHRlckNvbnRlbnQiPgoJCQkJCQk8ZGl2IGlkPSJmaWx0ZXJNYWluQm94IiBjbGFzcz0iSW5uZXJCb3hMYXllciBibGFjay10ZXh0Ij4KCQkJCQkJCTxkaXYgY2xhc3M9ImRpdlNwYW4gZGl2U3BhbjEyIj4KCQkJCQkJCQk8ZGl2IGNsYXNzPSJkaXZTcGFuIGRpdlNwYW4xMiBkaXZGaWx0ZXJPdXRlckJveCI+CgkJCQkJCQkJCTxkaXYgY2xhc3M9ImRpdlNwYW4gZGl2U3BhbjEyIj4KCQkJCQkJCQkJCTxkaXYgY2xhc3M9ImRpdlNwYW4gZGl2U3BhbjEyIj4KCQkJCQkJCQkJCQk8ZGl2IGNsYXNzPSJkaXZTcGFuIGRpdlNwYW4xMiI+PGRpdiBjbGFzcz0iZGl2RmlsdGVyVGl0bGUiPlR5cGUgZGUgY2Fycm9zc2VyaWU8L2Rpdj48dWwgY2xhc3M9IiI+PGxpIGNsYXNzPSIiPjxpbnB1dCBjbGFzcz0iZmlsdGVyQ2hlY2sgY2F0ZWdvcnkiIGlkPSJzaG93Q2xhc3NfY2FyIiB0eXBlPSJjaGVja2JveCIgdmFsdWU9ImNhciIgY2hlY2tlZD48bGFiZWwgY2xhc3M9ImZpbHRlclNwYW4gY2F0ZWdvcnkiIGZvcj0ic2hvd0NsYXNzX2NhciI+QXV0bzwvbGFiZWw+PC9saT48bGkgY2xhc3M9IiI+PGlucHV0IGNsYXNzPSJmaWx0ZXJDaGVjayBjYXRlZ29yeSIgaWQ9InNob3dDbGFzc19taW5pdmFuIiB0eXBlPSJjaGVja2JveCIgdmFsdWU9Im1pbml2YW4iIGNoZWNrZWQ+PGxhYmVsIGNsYXNzPSJmaWx0ZXJTcGFuIGNhdGVnb3J5IiBmb3I9InNob3dDbGFzc19taW5pdmFuIj5NaW5pLUZvdXJnb25uZXR0ZTwvbGFiZWw+PC9saT48bGkgY2xhc3M9IiI+PGlucHV0IGNsYXNzPSJmaWx0ZXJDaGVjayBjYXRlZ29yeSIgaWQ9InNob3dDbGFzc19zdXYiIHR5cGU9ImNoZWNrYm94IiB2YWx1ZT0ic3V2IiBjaGVja2VkPjxsYWJlbCBjbGFzcz0iZmlsdGVyU3BhbiBjYXRlZ29yeSIgZm9yPSJzaG93Q2xhc3Nfc3V2Ij5WVVM8L2xhYmVsPjwvbGk+PC91bD48L2Rpdj48ZGl2IGNsYXNzPSJkaXZTcGFuIGRpdlNwYW4xMiI+PC9kaXY+PGRpdiBjbGFzcz0iZGl2U3BhbiBkaXZTcGFuMTIiPjxkaXYgY2xhc3M9ImRpdkZpbHRlclRpdGxlIj5Nb3RyaWNpdMOpPC9kaXY+PHVsIGNsYXNzPSIiPjxsaSBjbGFzcz0iIj48aW5wdXQgaWQ9ImZpbHRlckRyaXZlVHJhaW5DaGVjazEiIGNsYXNzPSJmaWx0ZXJDaGVjayBkcml2ZXRyYWluIiB0eXBlPSJjaGVja2JveCIgdmFsdWU9IjEiIGRhdGEtZHJpdmV0cmFpbj0iRldEIiBjaGVja2VkPjxsYWJlbCBmb3I9ImZpbHRlckRyaXZlVHJhaW5DaGVjazEiIGNsYXNzPSJmaWx0ZXJTcGFuIj5UcmFjdGlvbiBhdmFudDwvbGFiZWw+PC9saT48bGkgY2xhc3M9IiI+PGlucHV0IGlkPSJmaWx0ZXJEcml2ZVRyYWluQ2hlY2syIiBjbGFzcz0iZmlsdGVyQ2hlY2sgZHJpdmV0cmFpbiIgdHlwZT0iY2hlY2tib3giIHZhbHVlPSIyIiBkYXRhLWRyaXZldHJhaW49IlJXRCIgY2hlY2tlZD48bGFiZWwgZm9yPSJmaWx0ZXJEcml2ZVRyYWluQ2hlY2syIiBjbGFzcz0iZmlsdGVyU3BhbiI+UHJvcHVsc2lvbiBhcnJpw6hyZTwvbGFiZWw+PC9saT48L3VsPjwvZGl2PjxkaXYgY2xhc3M9ImRpdlNwYW4gZGl2U3BhbjEyIj48ZGl2IGNsYXNzPSJkaXZGaWx0ZXJUaXRsZSI+VHlwZSBkZSBjYXJidXJhbnQ8L2Rpdj48dWwgY2xhc3M9IiI+CTxsaSBjbGFzcz0iIj4KCQk8aW5wdXQgZGF0YS1lc3NlbmNlPSJlbGVjdHJpYyIgY2xhc3M9ImZpbHRlckNoZWNrIGZ1ZWx0eXBlIiBpZD0iZmlsdGVyRXNzZW5jZUNoZWNrMyIgdHlwZT0iY2hlY2tib3giIHZhbHVlPSIzIiBjaGVja2VkPgoJCTxsYWJlbCBmb3I9ImZpbHRlckVzc2VuY2VDaGVjazMiIGNsYXNzPSJmaWx0ZXJTcGFuIj4KCQkJw4lsZWN0cmlxdWUKCQk8L2xhYmVsPgoJPC9saT4JPGxpIGNsYXNzPSIiPgoJCTxpbnB1dCBkYXRhLWVzc2VuY2U9ImdhcyIgY2xhc3M9ImZpbHRlckNoZWNrIGZ1ZWx0eXBlIiBpZD0iZmlsdGVyRXNzZW5jZUNoZWNrMSIgdHlwZT0iY2hlY2tib3giIHZhbHVlPSIxIiBjaGVja2VkPgoJCTxsYWJlbCBmb3I9ImZpbHRlckVzc2VuY2VDaGVjazEiIGNsYXNzPSJmaWx0ZXJTcGFuIj4KCQkJRXNzZW5jZQoJCTwvbGFiZWw+Cgk8L2xpPgk8bGkgY2xhc3M9IiI+CgkJPGlucHV0IGRhdGEtZXNzZW5jZT0iaHlicmlkIiBjbGFzcz0iZmlsdGVyQ2hlY2sgZnVlbHR5cGUiIGlkPSJmaWx0ZXJFc3NlbmNlQ2hlY2s0IiB0eXBlPSJjaGVja2JveCIgdmFsdWU9IjQiIGNoZWNrZWQ+CgkJPGxhYmVsIGZvcj0iZmlsdGVyRXNzZW5jZUNoZWNrNCIgY2xhc3M9ImZpbHRlclNwYW4iPgoJCQlIeWJyaWRlCgkJPC9sYWJlbD4KCTwvbGk+CTxsaSBjbGFzcz0iIj4KCQk8aW5wdXQgZGF0YS1lc3NlbmNlPSJwaGV2IiBjbGFzcz0iZmlsdGVyQ2hlY2sgZnVlbHR5cGUiIGlkPSJmaWx0ZXJFc3NlbmNlQ2hlY2s1IiB0eXBlPSJjaGVja2JveCIgdmFsdWU9IjUiIGNoZWNrZWQ+CgkJPGxhYmVsIGZvcj0iZmlsdGVyRXNzZW5jZUNoZWNrNSIgY2xhc3M9ImZpbHRlclNwYW4iPgoJCQlIeWJyaWRlIHJlY2hhcmdlYWJsZQoJCTwvbGFiZWw+Cgk8L2xpPjwvdWw+PC9kaXY+PGRpdiBjbGFzcz0iZGl2U3BhbiBkaXZTcGFuMTIiPjxkaXYgY2xhc3M9ImRpdkZpbHRlclRpdGxlIj5UcmllciBwYXI8L2Rpdj48dWwgY2xhc3M9IiI+PGxpIGNsYXNzPSIiPjxpbnB1dCBpZD0icmFkaW9Nb2RsZSIgY2xhc3M9InJhZGlvU29ydCIgdHlwZT0icmFkaW8iIG5hbWU9InNvcnRieSIgdmFsdWU9Im1vZGVsIiBjaGVja2VkPjxsYWJlbCBjbGFzcz0iZmlsdGVyU3BhbiIgZm9yPSJyYWRpb01vZGxlIj5Nb2TDqGxlPGxpIGNsYXNzPSIiPjxpbnB1dCBpZD0icmFkaW9QcmljZSIgY2xhc3M9InJhZGlvU29ydCIgdHlwZT0icmFkaW8iIG5hbWU9InNvcnRieSIgdmFsdWU9InByaWNlIj48bGFiZWwgY2xhc3M9ImZpbHRlclNwYW4iIGZvcj0icmFkaW9QcmljZSI+UHJpeDwvbGFiZWw+PC9saT48bGkgY2xhc3M9IiI+PGlucHV0IGlkPSJyYWRpb0NvbnNvIiBjbGFzcz0icmFkaW9Tb3J0IiB0eXBlPSJyYWRpbyIgbmFtZT0ic29ydGJ5IiB2YWx1ZT0iY29uc28iPjxsYWJlbCBjbGFzcz0iZmlsdGVyU3BhbiIgZm9yPSJyYWRpb0NvbnNvIj5MLzEwMGttPC9sYWJlbD48L2xpPjwvbGFiZWw+PC9saT48L3VsPjwvZGl2PgkJCQkJCgkJCQkJCQkJCQk8L2Rpdj4KCQkJCQkJCQkJCTxkaXYgY2xhc3M9ImRpdlNwYW4gZGl2U3BhbjEyIj4KCQkJCQkJCQkJCQkJCQkJPGRpdiBjbGFzcz0iZGl2U3BhbiBkaXZTcGFuMTIgZGl2UHJpY2VSYW5nZVNsaWRlciIgaWQ9InByaWNlUmFuZ2VTbGlkZXJGaWx0ZXJDb250YWluZXIiPgoJCQkJCTxkaXYgY2xhc3M9ImRpdlNwYW4gZGl2U3BhbjEyIGRpdkZpbHRlclRpdGxlIj4KCQkJCQkJRm91cmNoZXR0ZSBkZSBwcml4CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0iZGl2U3BhbiBkaXZTcGFuMTIgcmFuZ2Utc2xpZGVyLXByaWNlcyI+CgkJCQkJCTxzcGFuIGNsYXNzPSJwcmljZS1taW4gZm9ybWF0LXByaWNlIj48L3NwYW4+wqDCoMOgwqDCoDxzcGFuIGNsYXNzPSJwcmljZS1tYXggZm9ybWF0LXByaWNlIj48L3NwYW4+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0iZGl2U3BhbiBkaXZTcGFuMTIiPgoJCQkJCQk8ZGl2IGNsYXNzPSJkaXZTcGFuIGRpdlNwYW4xIHJhbmdlLXNsaWRlci1sZWZ0Ij5NaW48L2Rpdj4KCQkJCQkJPGRpdiBjbGFzcz0iZGl2U3BhbiBkaXZTcGFuOSByYW5nZS1zbGlkZXIiIGF0dHItcHJpY2UtbWluPSIyNjU5NCIgYXR0ci1wcmljZS1tYXg9IjYyODQ0Ij48L2Rpdj4KCQkJCQkJPGRpdiBjbGFzcz0iZGl2U3BhbiBkaXZTcGFuMSByYW5nZS1zbGlkZXItcmlnaHQiPk1heDwvZGl2PgoJCQkJCTwvZGl2PgoJCQkJPC9kaXY+CgkJCQkJCQkJCQk8L2Rpdj4KCQkJCQkJCQkJPC9kaXY+CgkJCQkJCQkJPC9kaXY+CgkJCQkJCQk8L2Rpdj4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQk8L2Rpdj48IS0tIE9QRU4gQ0FURUdPUklFU0JPWFdSQVBQRVIgKDE5ODgpLS0+PGRpdiBjbGFzcz0iSW5uZXJCb3hMYXllciBkaXZDYXRlZ29yaWVzQm94V3JhcHBlciI+PCEtLSBPUEVOIENBVEVHT1JZQk9YV1JBUFBFUiAoMjA1MikgLS0+PGRpdiBpZD0iY2xhc3NjYXJfY29udGFpbmVyIiBjbGFzcz0iZGl2U3BhbiBkaXZTcGFuMTIgZGl2Q2F0ZWdvcnlCb3hXcmFwcGVyIiBzdGF0ZT0ib3BlbiIgbmJ2aXNpYmxlPSIxIj48aDIgY2xhc3M9ImRlZmF1bHQgaWNvbi1oZWFkaW5nIGZsZXgtYm94IGFsaWduLWNlbnRlciI+Cgk8c3BhbiBjbGFzcz0iZmEgZmEtY2hldnJvbi1yaWdodCIgYXJpYS1oaWRkZW49InRydWUiPjwvc3Bhbj4KCTxib3gtbGMgY2xhc3M9Ii1wdjAiPgoJCTxkaXYgY2xhc3M9Im1haW5UZXh0IC1ib2xkIj5BdXRvcyBuZXV2ZXMgS2lhIDIwMjUgJmFtcDsgMjAyNjwvZGl2PgoJCTxkaXYgY2xhc3M9InNlY29uZGFyeVRleHQiPsOgIE1hc2NvdWNoZTwvZGl2PgoJPC9ib3gtbGM+CjwvaDI+PGRpdiBjbGFzcz0iZGl2U3BhbiBkaXZTcGFuMTIgZGl2Q2Fyc0JveFdyYXBwZXIgQ0xBU1NfY2FyIj4JPGRpdiBjbGFzcz0iZGl2Q2FyU2luZ2xlT3V0ZXJCb3ggIHJlYmF0ZUJvcmRlckNvbG9yIiBpZD0iZmJ4X2Nhcl8xIj4KCQk8ZGl2IGNsYXNzPSJyZWJhdGVUYWciPjxzcGFuIGNsYXNzPSJyZWJhdGVUZXh0Ij5yYWJhaXMganVzcXUnw6A8L3NwYW4+PHNwYW4gY2xhc3M9InJlYmF0ZUFtb3VudCI+CTxzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiPjUwMDwvc3Bhbj48L3NwYW4+PC9kaXY+CgkJPGRpdiBjbGFzcz0iZGl2Q2FyU2luZ2xlSW5uZXJCb3giIGlkPSIiPgoJCQk8ZGl2IGNsYXNzPSJkMmMtZmF2cy10cmlnZ2VyLXdyYXBwZXIgZDJmYXYtMDEiIGRhdGEtbWFrZT0iS2lhIiBkYXRhLW1vZGVsPSJLNCIgZGF0YS15ZWFyPSIyMDI1IiBkYXRhLXRyaW09IiIgZGF0YS1jYXJpZD0iIj48L2Rpdj4KCQkJPGRpdiBjbGFzcz0iZGl2Q2FyVGl0bGVDb250YWluZXIiPgoJCQkJPGEgdGl0bGU9IktpYSBLNCAyMDI1IiBocmVmPSI\/cGF0aD0vbmV1ZnMvS2lhLUs0LTIwMjUuaHRtbCIgZGF0YS1tYWtlPSJLaWEiIGRhdGEtbW9kZWw9Iks0IDIwMjUiPgoJCQkJCTxoMz4KCQkJCQkJPHNwYW4gY2xhc3M9InNwYW5DYXJNYWtlICI+S2lhPC9zcGFuPjxicj4KCQkJCQkJPHNwYW4gY2xhc3M9Im1vZGVsTmFtZSBzcGFuTW9kZWxOYW1lIj5LNCAyMDI1PC9zcGFuPgoJCQkJCTwvaDM+CgkJCQk8L2E+CgkJCQkgICAgPCEtLSBPUEVOIE5FVyBDQVIgU1RBUlQgUFJJQ0UgKHtfX0xJTkVfX30pLS0+CiAgICA8ZGl2IGNsYXNzPSJkaXZOZXdDYXJTdGFydFByaWNlIj4KICAgICAgICDDoCBwYXJ0aXIgZGUKICAgICAgICA8c3BhbiBjbGFzcz0ic3RyaWtlLXByaWNlIj4JPHNwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSI+MjYgNTk0PC9zcGFuPjwvc3Bhbj4KICAgICAgICA8aSBzdHlsZT0iY29sb3I6IzAwMDtmb250LXNpemU6MjBweDsiIGNsYXNzPSJjYXJQcmljZUluaXRpYWxUb29sVGlwSWNvbiBmYWwgZmEtaW5mby1jaXJjbGUgYmxhY2tDb2xvckJvbGQiIGRhdGEtdG9vbHRpcD0iJmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtQRFNGOiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzIzIDk5NSZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O1RyYW5zcG9ydCAmYW1wOyBQcsOpcGFyYXRpb246Jmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7MSA5MDAmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtGcmFpcyBkJ2FkbWluJmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7NTk5Jmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7VGF4ZSBBQzombHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDsxMDAmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtUb3RhbCZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzI2IDU5NCZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsiPjwvaT4KICAgIDwvZGl2PgogICAgPCEtLSBDTE9TRSBORVcgQ0FSIFNUQVJUIFBSSUNFICh7X19MSU5FX199KS0tPjwhLS0gT1BFTiBORVcgQ0FSIFBST01PIFBSSUNFICgyNzQpLS0+PGRpdiBjbGFzcz0iZGl2TmV3Q2FyUHJvbW9QcmljZSI+ZW4gcmFiYWlzIMOgIDxzcGFuIGNsYXNzPSIiIHN0eWxlPSJjb2xvcjogIzA1MTQxZjsiPgk8c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIj4yNiAwOTQ8L3NwYW4+PC9zcGFuPjwvZGl2PjwhLS0gQ0xPU0UgTkVXIENBUiBQUk9NTyBQUklDRSAoMjgxKS0tPgoJCQkJCTxkaXYgY2xhc3M9ImRpdkNhckluU3RvY2tMaW5rIiBoaWRkZW4+CgkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGRhdGEtdHlwZT0iaW52ZGF0YSIgZGF0YS1tYWtlPSJLaWEiIGRhdGEtbW9kZWw9Iks0IiBkYXRhLXllYXI9IjIwMjUiIGRhdGEtc3R5bGVpZHM9IjQ2MzY4NSw0NjM2ODYsNDYzNjg3LDQ2MzY4OCw0NjM2ODksNDY2MzYyIiBkYXRhLWh5YnJpZD0iMCI+Cgk8L2Rpdj4KCQkJPC9kaXY+CgkJCTxkaXYgY2xhc3M9ImRpdkNhckltYWdlQ29udGFpbmVyIGZsZXgtY2VudGVyIGFsaWduLWNlbnRlciAiPgoJCQkJPGEgdGl0bGU9IktpYSBLNCAyMDI1IiBocmVmPSI\/cGF0aD0vbmV1ZnMvS2lhLUs0LTIwMjUuaHRtbCI+CgkJCQkJPGltZyBhbHQ9IktpYSBLNCAyMDI1IiBib3JkZXI9IjAiIGNsYXNzPSJsaXZlbG9hZCBvcHRhbm9uLWNhdGVnb3J5LUMwMDAxIiBkYXRhLWltZ3NyYz0iaHR0cHM6Ly9jYXJpbWFnZXMuZDJjbWVkaWEuY2EvbmV3Y2FyaW1hZ2VzL2ZyL0tpYS9LNC8yMDI1LzQ2MzY4NS9XaGl0ZS9wcm9maWxlLndlYnAiIHNyYz0iaHR0cHM6Ly9jYXJpbWFnZXMuZDJjbWVkaWEuY2EvbmV3Y2FyaW1hZ2VzL2ZyL0tpYS9LNC8yMDI1LzQ2MzY4NS9XaGl0ZS9wcm9maWxlLndlYnAiIGRhdGEtb3QtaWdub3JlIGRhdGEtY29va2llY29uc2VudD0iaWdub3JlIj4KCQkJCTwvYT4KCQkJPC9kaXY+CgkJCTxkaXYgY2xhc3M9ImRpdkNhckZvb3RlckNvbnRhaW5lciBzdGFjay1sYyAtLXMtOSI+CgkJCQkJPGRpdiBjbGFzcz0iY2FyUGF5bWVudFdyYXBwZXIiPgoJCQk8ZGl2IGNsYXNzPSJjb250ZW50LXNrZWxldG9uIGh0bWwtYmxvY2siIGRhdGEtYmxvY2s9InBheW1lbnRCbG9jayIgZGF0YS10eXBlPSJibG9jayIgZGF0YS1zb3VyY2U9InNlcnZlciIgZGF0YS1jYWxsYmFjaz0icGF5bWVudENhbGNCbG9jayI+CgkJCgk8aW5wdXQgbmFtZT0iYmxvY2stZGF0YSIgdHlwZT0iaGlkZGVuIiB2YWx1ZT0neyJzdHlsZWlkIjoiNDYzNjg1IiwidGl0bGUiOiJLaWEgSzQgMjAyNSIsImhyZWYiOiJcL25ldWZzXC9LaWEtSzQtMjAyNS5odG1sIiwibGlua3N0eWxlIjoiIiwibGlua2NsYXNzIjoiIiwiY29udGFpbmVyY2xhc3MiOiIiLCJwcm9tb3RleHQiOiJDb2RlIHJhYmFpcyJ9Jz4KCTwvZGl2PgoJPC9kaXY+CgkJCQkKCQkJPC9kaXY+CgkJPC9kaXY+Cgk8L2Rpdj4JPGRpdiBjbGFzcz0iZGl2Q2FyU2luZ2xlT3V0ZXJCb3ggIHJlYmF0ZUJvcmRlckNvbG9yIiBpZD0iZmJ4X2Nhcl8yIj4KCQkKCQk8ZGl2IGNsYXNzPSJkaXZDYXJTaW5nbGVJbm5lckJveCIgaWQ9IiI+CgkJCTxkaXYgY2xhc3M9ImQyYy1mYXZzLXRyaWdnZXItd3JhcHBlciBkMmZhdi0wMSIgZGF0YS1tYWtlPSJLaWEiIGRhdGEtbW9kZWw9Iks0IiBkYXRhLXllYXI9IjIwMjYiIGRhdGEtdHJpbT0iIiBkYXRhLWNhcmlkPSIiPjwvZGl2PgoJCQk8ZGl2IGNsYXNzPSJkaXZDYXJUaXRsZUNvbnRhaW5lciI+CgkJCQk8YSB0aXRsZT0iS2lhIEs0IDIwMjYiIGhyZWY9Ij9wYXRoPS9uZXVmcy9LaWEtSzQtMjAyNi5odG1sIiBkYXRhLW1ha2U9IktpYSIgZGF0YS1tb2RlbD0iSzQgMjAyNiI+CgkJCQkJPGgzPgoJCQkJCQk8c3BhbiBjbGFzcz0ic3BhbkNhck1ha2UgIj5LaWE8L3NwYW4+PGJyPgoJCQkJCQk8c3BhbiBjbGFzcz0ibW9kZWxOYW1lIHNwYW5Nb2RlbE5hbWUiPks0IDIwMjY8L3NwYW4+CgkJCQkJPC9oMz4KCQkJCTwvYT4KCQkJCSAgICA8IS0tIE9QRU4gTkVXIENBUiBTVEFSVCBQUklDRSAoe19fTElORV9ffSktLT4KICAgIDxkaXYgY2xhc3M9ImRpdk5ld0NhclN0YXJ0UHJpY2UiPgogICAgICAgIMOgIHBhcnRpciBkZQogICAgICAgIDxzcGFuIGNsYXNzPSIiPgk8c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIj4yNiA4OTQ8L3NwYW4+PC9zcGFuPgogICAgICAgIDxpIHN0eWxlPSJjb2xvcjojMDAwO2ZvbnQtc2l6ZToyMHB4OyIgY2xhc3M9ImNhclByaWNlSW5pdGlhbFRvb2xUaXBJY29uIGZhbCBmYS1pbmZvLWNpcmNsZSBibGFja0NvbG9yQm9sZCIgZGF0YS10b29sdGlwPSImbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O1BEU0Y6Jmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7MjQgMjk1Jmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7VHJhbnNwb3J0ICZhbXA7IFByw6lwYXJhdGlvbjombHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDsxIDkwMCZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O0ZyYWlzIGQnYWRtaW4mbHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDs1OTkmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtUYXhlIEFDOiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzEwMCZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O1RvdGFsJmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7MjYgODk0Jmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyI+PC9pPgogICAgPC9kaXY+CiAgICA8IS0tIENMT1NFIE5FVyBDQVIgU1RBUlQgUFJJQ0UgKHtfX0xJTkVfX30pLS0+CgkJCQkJPGRpdiBjbGFzcz0iZGl2Q2FySW5TdG9ja0xpbmsiIGhpZGRlbj4KCQkJPGlucHV0IHR5cGU9ImhpZGRlbiIgZGF0YS10eXBlPSJpbnZkYXRhIiBkYXRhLW1ha2U9IktpYSIgZGF0YS1tb2RlbD0iSzQiIGRhdGEteWVhcj0iMjAyNiIgZGF0YS1zdHlsZWlkcz0iNDgzMjg4LDQ4MzI4OSw0ODMyOTAsNDgzMjk0LDQ4MzI5MSw0ODMyOTUsNDgzMjkyLDQ4MzI5MyIgZGF0YS1oeWJyaWQ9IjAiPgoJPC9kaXY+CgkJCTwvZGl2PgoJCQk8ZGl2IGNsYXNzPSJkaXZDYXJJbWFnZUNvbnRhaW5lciBmbGV4LWNlbnRlciBhbGlnbi1jZW50ZXIgIj4KCQkJCTxhIHRpdGxlPSJLaWEgSzQgMjAyNiIgaHJlZj0iP3BhdGg9L25ldWZzL0tpYS1LNC0yMDI2Lmh0bWwiPgoJCQkJCTxpbWcgYWx0PSJLaWEgSzQgMjAyNiIgYm9yZGVyPSIwIiBjbGFzcz0ibGl2ZWxvYWQgb3B0YW5vbi1jYXRlZ29yeS1DMDAwMSIgZGF0YS1pbWdzcmM9Imh0dHBzOi8vY2FyaW1hZ2VzLmQyY21lZGlhLmNhL25ld2NhcmltYWdlcy9mci9LaWEvSzQvMjAyNi80ODMyODgvV2hpdGUvcHJvZmlsZS53ZWJwIiBzcmM9Imh0dHBzOi8vY2FyaW1hZ2VzLmQyY21lZGlhLmNhL25ld2NhcmltYWdlcy9mci9LaWEvSzQvMjAyNi80ODMyODgvV2hpdGUvcHJvZmlsZS53ZWJwIiBkYXRhLW90LWlnbm9yZSBkYXRhLWNvb2tpZWNvbnNlbnQ9Imlnbm9yZSI+CgkJCQk8L2E+CgkJCTwvZGl2PgoJCQk8ZGl2IGNsYXNzPSJkaXZDYXJGb290ZXJDb250YWluZXIgc3RhY2stbGMgLS1zLTkiPgoJCQkJCTxkaXYgY2xhc3M9ImNhclBheW1lbnRXcmFwcGVyIj4KCQkJPGRpdiBjbGFzcz0iY29udGVudC1za2VsZXRvbiBodG1sLWJsb2NrIiBkYXRhLWJsb2NrPSJwYXltZW50QmxvY2siIGRhdGEtdHlwZT0iYmxvY2siIGRhdGEtc291cmNlPSJzZXJ2ZXIiIGRhdGEtY2FsbGJhY2s9InBheW1lbnRDYWxjQmxvY2siPgoJCQoJPGlucHV0IG5hbWU9ImJsb2NrLWRhdGEiIHR5cGU9ImhpZGRlbiIgdmFsdWU9J3sic3R5bGVpZCI6IjQ4MzI4OCIsInRpdGxlIjoiS2lhIEs0IDIwMjYiLCJocmVmIjoiXC9uZXVmc1wvS2lhLUs0LTIwMjYuaHRtbCIsImxpbmtzdHlsZSI6IiIsImxpbmtjbGFzcyI6IiIsImNvbnRhaW5lcmNsYXNzIjoiIiwicHJvbW90ZXh0IjoiQ29kZSByYWJhaXMifSc+Cgk8L2Rpdj4KCTwvZGl2PgoJCQkJCgkJCTwvZGl2PgoJCTwvZGl2PgoJPC9kaXY+CTxkaXYgY2xhc3M9ImRpdkNhclNpbmdsZU91dGVyQm94ICByZWJhdGVCb3JkZXJDb2xvciIgaWQ9ImZieF9jYXJfMyI+CgkJCgkJPGRpdiBjbGFzcz0iZGl2Q2FyU2luZ2xlSW5uZXJCb3giIGlkPSIiPgoJCQk8ZGl2IGNsYXNzPSJkMmMtZmF2cy10cmlnZ2VyLXdyYXBwZXIgZDJmYXYtMDEiIGRhdGEtbWFrZT0iS2lhIiBkYXRhLW1vZGVsPSJLNCBIYXRjaGJhY2siIGRhdGEteWVhcj0iMjAyNiIgZGF0YS10cmltPSIiIGRhdGEtY2FyaWQ9IiI+PC9kaXY+CgkJCTxkaXYgY2xhc3M9ImRpdkNhclRpdGxlQ29udGFpbmVyIj4KCQkJCTxhIHRpdGxlPSJLaWEgSzQgSGF0Y2hiYWNrIDIwMjYiIGhyZWY9Ij9wYXRoPS9uZXVmcy9LaWEtSzRfSGF0Y2hiYWNrLTIwMjYuaHRtbCIgZGF0YS1tYWtlPSJLaWEiIGRhdGEtbW9kZWw9Iks0IMOgIGhheW9uIDIwMjYiPgoJCQkJCTxoMz4KCQkJCQkJPHNwYW4gY2xhc3M9InNwYW5DYXJNYWtlICI+S2lhPC9zcGFuPjxicj4KCQkJCQkJPHNwYW4gY2xhc3M9Im1vZGVsTmFtZSBzcGFuTW9kZWxOYW1lIj5LNCBIYXRjaGJhY2sgMjAyNjwvc3Bhbj4KCQkJCQk8L2gzPgoJCQkJPC9hPgoJCQkJICAgIDwhLS0gT1BFTiBORVcgQ0FSIFNUQVJUIFBSSUNFICh7X19MSU5FX199KS0tPgogICAgPGRpdiBjbGFzcz0iZGl2TmV3Q2FyU3RhcnRQcmljZSI+CiAgICAgICAgw6AgcGFydGlyIGRlCiAgICAgICAgPHNwYW4gY2xhc3M9IiI+CTxzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiPjI3IDM5NDwvc3Bhbj48L3NwYW4+CiAgICAgICAgPGkgc3R5bGU9ImNvbG9yOiMwMDA7Zm9udC1zaXplOjIwcHg7IiBjbGFzcz0iY2FyUHJpY2VJbml0aWFsVG9vbFRpcEljb24gZmFsIGZhLWluZm8tY2lyY2xlIGJsYWNrQ29sb3JCb2xkIiBkYXRhLXRvb2x0aXA9IiZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7UERTRjombHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDsyNCA3OTUmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtUcmFuc3BvcnQgJmFtcDsgUHLDqXBhcmF0aW9uOiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzEgOTAwJmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7RnJhaXMgZCdhZG1pbiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzU5OSZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O1RheGUgQUM6Jmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7MTAwJmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7VG90YWwmbHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDsyNyAzOTQmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Ij48L2k+CiAgICA8L2Rpdj4KICAgIDwhLS0gQ0xPU0UgTkVXIENBUiBTVEFSVCBQUklDRSAoe19fTElORV9ffSktLT4KCQkJCQk8ZGl2IGNsYXNzPSJkaXZDYXJJblN0b2NrTGluayIgaGlkZGVuPgoJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBkYXRhLXR5cGU9ImludmRhdGEiIGRhdGEtbWFrZT0iS2lhIiBkYXRhLW1vZGVsPSJLNCBIYXRjaGJhY2siIGRhdGEteWVhcj0iMjAyNiIgZGF0YS1zdHlsZWlkcz0iNDgzMjk2LDQ4MzI5Nyw0ODMyOTgsNDgzMjk5LDQ4MzMwMCw0ODMzMDEsNDgzMzAyLDQ4MzMwMyIgZGF0YS1oeWJyaWQ9IjAiPgoJPC9kaXY+CgkJCTwvZGl2PgoJCQk8ZGl2IGNsYXNzPSJkaXZDYXJJbWFnZUNvbnRhaW5lciBmbGV4LWNlbnRlciBhbGlnbi1jZW50ZXIgIj4KCQkJCTxhIHRpdGxlPSJLaWEgSzQgSGF0Y2hiYWNrIDIwMjYiIGhyZWY9Ij9wYXRoPS9uZXVmcy9LaWEtSzRfSGF0Y2hiYWNrLTIwMjYuaHRtbCI+CgkJCQkJPGltZyBhbHQ9IktpYSBLNCBIYXRjaGJhY2sgMjAyNiIgYm9yZGVyPSIwIiBjbGFzcz0ibGl2ZWxvYWQgb3B0YW5vbi1jYXRlZ29yeS1DMDAwMSIgZGF0YS1pbWdzcmM9Imh0dHBzOi8vY2FyaW1hZ2VzLmQyY21lZGlhLmNhL25ld2NhcmltYWdlcy9mci9LaWEvSzRfSGF0Y2hiYWNrLzIwMjYvNDgzMjk2L1doaXRlL3Byb2ZpbGUud2VicCIgc3JjPSJodHRwczovL2NhcmltYWdlcy5kMmNtZWRpYS5jYS9uZXdjYXJpbWFnZXMvZnIvS2lhL0s0X0hhdGNoYmFjay8yMDI2LzQ4MzI5Ni9XaGl0ZS9wcm9maWxlLndlYnAiIGRhdGEtb3QtaWdub3JlIGRhdGEtY29va2llY29uc2VudD0iaWdub3JlIj4KCQkJCTwvYT4KCQkJPC9kaXY+CgkJCTxkaXYgY2xhc3M9ImRpdkNhckZvb3RlckNvbnRhaW5lciBzdGFjay1sYyAtLXMtOSI+CgkJCQkJPGRpdiBjbGFzcz0iY2FyUGF5bWVudFdyYXBwZXIiPgoJCQk8ZGl2IGNsYXNzPSJjb250ZW50LXNrZWxldG9uIGh0bWwtYmxvY2siIGRhdGEtYmxvY2s9InBheW1lbnRCbG9jayIgZGF0YS10eXBlPSJibG9jayIgZGF0YS1zb3VyY2U9InNlcnZlciIgZGF0YS1jYWxsYmFjaz0icGF5bWVudENhbGNCbG9jayI+CgkJCgk8aW5wdXQgbmFtZT0iYmxvY2stZGF0YSIgdHlwZT0iaGlkZGVuIiB2YWx1ZT0neyJzdHlsZWlkIjoiNDgzMjk2IiwidGl0bGUiOiJLaWEgSzQgSGF0Y2hiYWNrIDIwMjYiLCJocmVmIjoiXC9uZXVmc1wvS2lhLUs0X0hhdGNoYmFjay0yMDI2Lmh0bWwiLCJsaW5rc3R5bGUiOiIiLCJsaW5rY2xhc3MiOiIiLCJjb250YWluZXJjbGFzcyI6IiIsInByb21vdGV4dCI6IkNvZGUgcmFiYWlzIn0nPgoJPC9kaXY+Cgk8L2Rpdj4KCQkJCQoJCQk8L2Rpdj4KCQk8L2Rpdj4KCTwvZGl2PjwvZGl2PjwvZGl2PjwhLS0gQ0xPU0UgQ0FURUdPUllCT1hXUkFQUEVSICgyMDYwKS0tPjwhLS0gT1BFTiBDQVRFR09SWUJPWFdSQVBQRVIgKDIwNTIpIC0tPjxkaXYgaWQ9ImNsYXNzc3V2X2NvbnRhaW5lciIgY2xhc3M9ImRpdlNwYW4gZGl2U3BhbjEyIGRpdkNhdGVnb3J5Qm94V3JhcHBlciIgc3RhdGU9Im9wZW4iIG5idmlzaWJsZT0iMSI+PGgyIGNsYXNzPSJkZWZhdWx0IGljb24taGVhZGluZyBmbGV4LWJveCBhbGlnbi1jZW50ZXIiPgoJPHNwYW4gY2xhc3M9ImZhIGZhLWNoZXZyb24tcmlnaHQiIGFyaWEtaGlkZGVuPSJ0cnVlIj48L3NwYW4+Cgk8Ym94LWxjIGNsYXNzPSItcHYwIj4KCQk8ZGl2IGNsYXNzPSJtYWluVGV4dCAtYm9sZCI+VlVTIG5ldWZzIEtpYSAyMDI2PC9kaXY+CgkJPGRpdiBjbGFzcz0ic2Vjb25kYXJ5VGV4dCI+w6AgTWFzY291Y2hlPC9kaXY+Cgk8L2JveC1sYz4KPC9oMj48ZGl2IGNsYXNzPSJkaXZTcGFuIGRpdlNwYW4xMiBkaXZDYXJzQm94V3JhcHBlciBDTEFTU19zdXYiPgk8ZGl2IGNsYXNzPSJkaXZDYXJTaW5nbGVPdXRlckJveCAgcmViYXRlQm9yZGVyQ29sb3IiIGlkPSJmYnhfc3V2XzEiPgoJCQoJCTxkaXYgY2xhc3M9ImRpdkNhclNpbmdsZUlubmVyQm94IiBpZD0iIj4KCQkJPGRpdiBjbGFzcz0iZDJjLWZhdnMtdHJpZ2dlci13cmFwcGVyIGQyZmF2LTAxIiBkYXRhLW1ha2U9IktpYSIgZGF0YS1tb2RlbD0iU2VsdG9zIiBkYXRhLXllYXI9IjIwMjYiIGRhdGEtdHJpbT0iIiBkYXRhLWNhcmlkPSIiPjwvZGl2PgoJCQk8ZGl2IGNsYXNzPSJkaXZDYXJUaXRsZUNvbnRhaW5lciI+CgkJCQk8YSB0aXRsZT0iS2lhIFNlbHRvcyAyMDI2IiBocmVmPSI\/cGF0aD0vbmV1ZnMvS2lhLVNlbHRvcy0yMDI2Lmh0bWwiIGRhdGEtbWFrZT0iS2lhIiBkYXRhLW1vZGVsPSJTZWx0b3MgMjAyNiI+CgkJCQkJPGgzPgoJCQkJCQk8c3BhbiBjbGFzcz0ic3BhbkNhck1ha2UgIj5LaWE8L3NwYW4+PGJyPgoJCQkJCQk8c3BhbiBjbGFzcz0ibW9kZWxOYW1lIHNwYW5Nb2RlbE5hbWUiPlNlbHRvcyAyMDI2PC9zcGFuPgoJCQkJCTwvaDM+CgkJCQk8L2E+CgkJCQkgICAgPCEtLSBPUEVOIE5FVyBDQVIgU1RBUlQgUFJJQ0UgKHtfX0xJTkVfX30pLS0+CiAgICA8ZGl2IGNsYXNzPSJkaXZOZXdDYXJTdGFydFByaWNlIj4KICAgICAgICDDoCBwYXJ0aXIgZGUKICAgICAgICA8c3BhbiBjbGFzcz0iIj4JPHNwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSI+MjggODk0PC9zcGFuPjwvc3Bhbj4KICAgICAgICA8aSBzdHlsZT0iY29sb3I6IzAwMDtmb250LXNpemU6MjBweDsiIGNsYXNzPSJjYXJQcmljZUluaXRpYWxUb29sVGlwSWNvbiBmYWwgZmEtaW5mby1jaXJjbGUgYmxhY2tDb2xvckJvbGQiIGRhdGEtdG9vbHRpcD0iJmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtQRFNGOiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzI2IDA5NSZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O1RyYW5zcG9ydCAmYW1wOyBQcsOpcGFyYXRpb246Jmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7MiAxMDAmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtGcmFpcyBkJ2FkbWluJmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7NTk5Jmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7VGF4ZSBBQzombHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDsxMDAmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtUb3RhbCZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzI4IDg5NCZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsiPjwvaT4KICAgIDwvZGl2PgogICAgPCEtLSBDTE9TRSBORVcgQ0FSIFNUQVJUIFBSSUNFICh7X19MSU5FX199KS0tPgoJCQkJCTxkaXYgY2xhc3M9ImRpdkNhckluU3RvY2tMaW5rIiBoaWRkZW4+CgkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGRhdGEtdHlwZT0iaW52ZGF0YSIgZGF0YS1tYWtlPSJLaWEiIGRhdGEtbW9kZWw9IlNlbHRvcyIgZGF0YS15ZWFyPSIyMDI2IiBkYXRhLXN0eWxlaWRzPSI0NzM1NjIsNDczNTY0LDQ3MzU2Myw0NzM1NjUsNDczNTY2LDQ3MzU2Nyw0NzM1NjgsNDczNTY5IiBkYXRhLWh5YnJpZD0iMCI+Cgk8L2Rpdj4KCQkJPC9kaXY+CgkJCTxkaXYgY2xhc3M9ImRpdkNhckltYWdlQ29udGFpbmVyIGZsZXgtY2VudGVyIGFsaWduLWNlbnRlciAiPgoJCQkJPGEgdGl0bGU9IktpYSBTZWx0b3MgMjAyNiIgaHJlZj0iP3BhdGg9L25ldWZzL0tpYS1TZWx0b3MtMjAyNi5odG1sIj4KCQkJCQk8aW1nIGFsdD0iS2lhIFNlbHRvcyAyMDI2IiBib3JkZXI9IjAiIGNsYXNzPSJsaXZlbG9hZCBvcHRhbm9uLWNhdGVnb3J5LUMwMDAxIiBkYXRhLWltZ3NyYz0iaHR0cHM6Ly9jYXJpbWFnZXMuZDJjbWVkaWEuY2EvbmV3Y2FyaW1hZ2VzL2ZyL0tpYS9TZWx0b3MvMjAyNi80NzM1NjIvV2hpdGUvcHJvZmlsZS53ZWJwIiBzcmM9Imh0dHBzOi8vY2FyaW1hZ2VzLmQyY21lZGlhLmNhL25ld2NhcmltYWdlcy9mci9LaWEvU2VsdG9zLzIwMjYvNDczNTYyL1doaXRlL3Byb2ZpbGUud2VicCIgZGF0YS1vdC1pZ25vcmUgZGF0YS1jb29raWVjb25zZW50PSJpZ25vcmUiPgoJCQkJPC9hPgoJCQk8L2Rpdj4KCQkJPGRpdiBjbGFzcz0iZGl2Q2FyRm9vdGVyQ29udGFpbmVyIHN0YWNrLWxjIC0tcy05Ij4KCQkJCQk8ZGl2IGNsYXNzPSJjYXJQYXltZW50V3JhcHBlciI+CgkJCTxkaXYgY2xhc3M9ImNvbnRlbnQtc2tlbGV0b24gaHRtbC1ibG9jayIgZGF0YS1ibG9jaz0icGF5bWVudEJsb2NrIiBkYXRhLXR5cGU9ImJsb2NrIiBkYXRhLXNvdXJjZT0ic2VydmVyIiBkYXRhLWNhbGxiYWNrPSJwYXltZW50Q2FsY0Jsb2NrIj4KCQkKCTxpbnB1dCBuYW1lPSJibG9jay1kYXRhIiB0eXBlPSJoaWRkZW4iIHZhbHVlPSd7InN0eWxlaWQiOiI0NzM1NjIiLCJ0aXRsZSI6IktpYSBTZWx0b3MgMjAyNiIsImhyZWYiOiJcL25ldWZzXC9LaWEtU2VsdG9zLTIwMjYuaHRtbCIsImxpbmtzdHlsZSI6IiIsImxpbmtjbGFzcyI6IiIsImNvbnRhaW5lcmNsYXNzIjoiIiwicHJvbW90ZXh0IjoiQ29kZSByYWJhaXMifSc+Cgk8L2Rpdj4KCTwvZGl2PgoJCQkJCgkJCTwvZGl2PgoJCTwvZGl2PgoJPC9kaXY+CTxkaXYgY2xhc3M9ImRpdkNhclNpbmdsZU91dGVyQm94ICByZWJhdGVCb3JkZXJDb2xvciIgaWQ9ImZieF9zdXZfMiI+CgkJCgkJPGRpdiBjbGFzcz0iZGl2Q2FyU2luZ2xlSW5uZXJCb3giIGlkPSIiPgoJCQk8ZGl2IGNsYXNzPSJkMmMtZmF2cy10cmlnZ2VyLXdyYXBwZXIgZDJmYXYtMDEiIGRhdGEtbWFrZT0iS2lhIiBkYXRhLW1vZGVsPSJTcG9ydGFnZSIgZGF0YS15ZWFyPSIyMDI2IiBkYXRhLXRyaW09IiIgZGF0YS1jYXJpZD0iIj48L2Rpdj4KCQkJPGRpdiBjbGFzcz0iZGl2Q2FyVGl0bGVDb250YWluZXIiPgoJCQkJPGEgdGl0bGU9IktpYSBTcG9ydGFnZSAyMDI2IiBocmVmPSI\/cGF0aD0vbmV1ZnMvS2lhLVNwb3J0YWdlLTIwMjYuaHRtbCIgZGF0YS1tYWtlPSJLaWEiIGRhdGEtbW9kZWw9IlNwb3J0YWdlIDIwMjYiPgoJCQkJCTxoMz4KCQkJCQkJPHNwYW4gY2xhc3M9InNwYW5DYXJNYWtlICI+S2lhPC9zcGFuPjxicj4KCQkJCQkJPHNwYW4gY2xhc3M9Im1vZGVsTmFtZSBzcGFuTW9kZWxOYW1lIj5TcG9ydGFnZSAyMDI2PC9zcGFuPgoJCQkJCTwvaDM+CgkJCQk8L2E+CgkJCQkgICAgPCEtLSBPUEVOIE5FVyBDQVIgU1RBUlQgUFJJQ0UgKHtfX0xJTkVfX30pLS0+CiAgICA8ZGl2IGNsYXNzPSJkaXZOZXdDYXJTdGFydFByaWNlIj4KICAgICAgICDDoCBwYXJ0aXIgZGUKICAgICAgICA8c3BhbiBjbGFzcz0iIj4JPHNwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSI+MzUgMTQ0PC9zcGFuPjwvc3Bhbj4KICAgICAgICA8aSBzdHlsZT0iY29sb3I6IzAwMDtmb250LXNpemU6MjBweDsiIGNsYXNzPSJjYXJQcmljZUluaXRpYWxUb29sVGlwSWNvbiBmYWwgZmEtaW5mby1jaXJjbGUgYmxhY2tDb2xvckJvbGQiIGRhdGEtdG9vbHRpcD0iJmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtQRFNGOiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzMyIDI5NSZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O1RyYW5zcG9ydCAmYW1wOyBQcsOpcGFyYXRpb246Jmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7MiAxNTAmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtGcmFpcyBkJ2FkbWluJmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7NTk5Jmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7VGF4ZSBBQzombHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDsxMDAmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtUb3RhbCZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzM1IDE0NCZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsiPjwvaT4KICAgIDwvZGl2PgogICAgPCEtLSBDTE9TRSBORVcgQ0FSIFNUQVJUIFBSSUNFICh7X19MSU5FX199KS0tPgoJCQkJCTxkaXYgY2xhc3M9ImRpdkNhckluU3RvY2tMaW5rIiBoaWRkZW4+CgkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGRhdGEtdHlwZT0iaW52ZGF0YSIgZGF0YS1tYWtlPSJLaWEiIGRhdGEtbW9kZWw9IlNwb3J0YWdlIiBkYXRhLXllYXI9IjIwMjYiIGRhdGEtc3R5bGVpZHM9IjQ3NTI2Miw0NzUyNjMsNDc1MjY0LDQ4NDg3Niw0NzUyNjUsNDc1MjY2LDQ3NTI2Nyw0NzUyNjgsNDg0ODc3LDQ3NTI2OSw0ODQ4NzgiIGRhdGEtaHlicmlkPSIwIj4KCTwvZGl2PgoJCQk8L2Rpdj4KCQkJPGRpdiBjbGFzcz0iZGl2Q2FySW1hZ2VDb250YWluZXIgZmxleC1jZW50ZXIgYWxpZ24tY2VudGVyICI+CgkJCQk8YSB0aXRsZT0iS2lhIFNwb3J0YWdlIDIwMjYiIGhyZWY9Ij9wYXRoPS9uZXVmcy9LaWEtU3BvcnRhZ2UtMjAyNi5odG1sIj4KCQkJCQk8aW1nIGFsdD0iS2lhIFNwb3J0YWdlIDIwMjYiIGJvcmRlcj0iMCIgY2xhc3M9Imxhenlsb2FkIG9wdGFub24tY2F0ZWdvcnktQzAwMDEiIGRhdGEtaW1nc3JjPSJodHRwczovL2NhcmltYWdlcy5kMmNtZWRpYS5jYS9uZXdjYXJpbWFnZXMvZnIvS2lhL1Nwb3J0YWdlLzIwMjYvNDc1MjYyL1doaXRlL3Byb2ZpbGUud2VicCIgZGF0YS1vdC1pZ25vcmUgZGF0YS1jb29raWVjb25zZW50PSJpZ25vcmUiPgoJCQkJPC9hPgoJCQk8L2Rpdj4KCQkJPGRpdiBjbGFzcz0iZGl2Q2FyRm9vdGVyQ29udGFpbmVyIHN0YWNrLWxjIC0tcy05Ij4KCQkJCQk8ZGl2IGNsYXNzPSJjYXJQYXltZW50V3JhcHBlciI+CgkJCTxkaXYgY2xhc3M9ImNvbnRlbnQtc2tlbGV0b24gaHRtbC1ibG9jayIgZGF0YS1ibG9jaz0icGF5bWVudEJsb2NrIiBkYXRhLXR5cGU9ImJsb2NrIiBkYXRhLXNvdXJjZT0ic2VydmVyIiBkYXRhLWNhbGxiYWNrPSJwYXltZW50Q2FsY0Jsb2NrIj4KCQkKCTxpbnB1dCBuYW1lPSJibG9jay1kYXRhIiB0eXBlPSJoaWRkZW4iIHZhbHVlPSd7InN0eWxlaWQiOiI0NzUyNjIiLCJ0aXRsZSI6IktpYSBTcG9ydGFnZSAyMDI2IiwiaHJlZiI6IlwvbmV1ZnNcL0tpYS1TcG9ydGFnZS0yMDI2Lmh0bWwiLCJsaW5rc3R5bGUiOiIiLCJsaW5rY2xhc3MiOiIiLCJjb250YWluZXJjbGFzcyI6IiIsInByb21vdGV4dCI6IkNvZGUgcmFiYWlzIn0nPgoJPC9kaXY+Cgk8L2Rpdj4KCQkJCQoJCQk8L2Rpdj4KCQk8L2Rpdj4KCTwvZGl2PjwvZGl2PjwvZGl2PjwhLS0gQ0xPU0UgQ0FURUdPUllCT1hXUkFQUEVSICgyMDYwKS0tPjwhLS0gT1BFTiBDQVRFR09SWUJPWFdSQVBQRVIgKDIwNTIpIC0tPjxkaXYgaWQ9ImNsYXNzbWluaXZhbl9jb250YWluZXIiIGNsYXNzPSJkaXZTcGFuIGRpdlNwYW4xMiBkaXZDYXRlZ29yeUJveFdyYXBwZXIiIHN0YXRlPSJvcGVuIiBuYnZpc2libGU9IjEiPjxoMiBjbGFzcz0iZGVmYXVsdCBpY29uLWhlYWRpbmcgZmxleC1ib3ggYWxpZ24tY2VudGVyIj4KCTxzcGFuIGNsYXNzPSJmYSBmYS1jaGV2cm9uLXJpZ2h0IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PC9zcGFuPgoJPGJveC1sYyBjbGFzcz0iLXB2MCI+CgkJPGRpdiBjbGFzcz0ibWFpblRleHQgLWJvbGQiPk1pbmktZm91cmdvbm5ldHRlcyBuZXV2ZXMgS2lhIDIwMjY8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJzZWNvbmRhcnlUZXh0Ij7DoCBNYXNjb3VjaGU8L2Rpdj4KCTwvYm94LWxjPgo8L2gyPjxkaXYgY2xhc3M9ImRpdlNwYW4gZGl2U3BhbjEyIGRpdkNhcnNCb3hXcmFwcGVyIENMQVNTX21pbml2YW4iPgk8ZGl2IGNsYXNzPSJkaXZDYXJTaW5nbGVPdXRlckJveCAgcmViYXRlQm9yZGVyQ29sb3IiIGlkPSJmYnhfbWluaXZhbl8xIj4KCQkKCQk8ZGl2IGNsYXNzPSJkaXZDYXJTaW5nbGVJbm5lckJveCIgaWQ9IiI+CgkJCTxkaXYgY2xhc3M9ImQyYy1mYXZzLXRyaWdnZXItd3JhcHBlciBkMmZhdi0wMSIgZGF0YS1tYWtlPSJLaWEiIGRhdGEtbW9kZWw9IkNhcm5pdmFsIiBkYXRhLXllYXI9IjIwMjYiIGRhdGEtdHJpbT0iIiBkYXRhLWNhcmlkPSIiPjwvZGl2PgoJCQk8ZGl2IGNsYXNzPSJkaXZDYXJUaXRsZUNvbnRhaW5lciI+CgkJCQk8YSB0aXRsZT0iS2lhIENhcm5pdmFsIDIwMjYiIGhyZWY9Ij9wYXRoPS9uZXVmcy9LaWEtQ2Fybml2YWwtMjAyNi5odG1sIiBkYXRhLW1ha2U9IktpYSIgZGF0YS1tb2RlbD0iQ2Fybml2YWwgMjAyNiI+CgkJCQkJPGgzPgoJCQkJCQk8c3BhbiBjbGFzcz0ic3BhbkNhck1ha2UgIj5LaWE8L3NwYW4+PGJyPgoJCQkJCQk8c3BhbiBjbGFzcz0ibW9kZWxOYW1lIHNwYW5Nb2RlbE5hbWUiPkNhcm5pdmFsIDIwMjY8L3NwYW4+CgkJCQkJPC9oMz4KCQkJCTwvYT4KCQkJCSAgICA8IS0tIE9QRU4gTkVXIENBUiBTVEFSVCBQUklDRSAoe19fTElORV9ffSktLT4KICAgIDxkaXYgY2xhc3M9ImRpdk5ld0NhclN0YXJ0UHJpY2UiPgogICAgICAgIMOgIHBhcnRpciBkZQogICAgICAgIDxzcGFuIGNsYXNzPSIiPgk8c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIj40NSAyOTQ8L3NwYW4+PC9zcGFuPgogICAgICAgIDxpIHN0eWxlPSJjb2xvcjojMDAwO2ZvbnQtc2l6ZToyMHB4OyIgY2xhc3M9ImNhclByaWNlSW5pdGlhbFRvb2xUaXBJY29uIGZhbCBmYS1pbmZvLWNpcmNsZSBibGFja0NvbG9yQm9sZCIgZGF0YS10b29sdGlwPSImbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O1BEU0Y6Jmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7NDIgNDQ1Jmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7VHJhbnNwb3J0ICZhbXA7IFByw6lwYXJhdGlvbjombHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDsyIDE1MCZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O0ZyYWlzIGQnYWRtaW4mbHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDs1OTkmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtUYXhlIEFDOiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzEwMCZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O1RvdGFsJmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7NDUgMjk0Jmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyI+PC9pPgogICAgPC9kaXY+CiAgICA8IS0tIENMT1NFIE5FVyBDQVIgU1RBUlQgUFJJQ0UgKHtfX0xJTkVfX30pLS0+CgkJCQkJPGRpdiBjbGFzcz0iZGl2Q2FySW5TdG9ja0xpbmsiIGhpZGRlbj4KCQkJPGlucHV0IHR5cGU9ImhpZGRlbiIgZGF0YS10eXBlPSJpbnZkYXRhIiBkYXRhLW1ha2U9IktpYSIgZGF0YS1tb2RlbD0iQ2Fybml2YWwiIGRhdGEteWVhcj0iMjAyNiIgZGF0YS1zdHlsZWlkcz0iNDc0NDcyLDQ3NDQ3Myw0NzQ0NzQsNDc0NDc1LDQ3NDQ3Niw0NzQ0NzciIGRhdGEtaHlicmlkPSIwIj4KCTwvZGl2PgoJCQk8L2Rpdj4KCQkJPGRpdiBjbGFzcz0iZGl2Q2FySW1hZ2VDb250YWluZXIgZmxleC1jZW50ZXIgYWxpZ24tY2VudGVyICI+CgkJCQk8YSB0aXRsZT0iS2lhIENhcm5pdmFsIDIwMjYiIGhyZWY9Ij9wYXRoPS9uZXVmcy9LaWEtQ2Fybml2YWwtMjAyNi5odG1sIj4KCQkJCQk8aW1nIGFsdD0iS2lhIENhcm5pdmFsIDIwMjYiIGJvcmRlcj0iMCIgY2xhc3M9Imxhenlsb2FkIG9wdGFub24tY2F0ZWdvcnktQzAwMDEiIGRhdGEtaW1nc3JjPSJodHRwczovL2NhcmltYWdlcy5kMmNtZWRpYS5jYS9uZXdjYXJpbWFnZXMvZnIvS2lhL0Nhcm5pdmFsLzIwMjYvNDc0NDcyL1doaXRlL3Byb2ZpbGUud2VicCIgZGF0YS1vdC1pZ25vcmUgZGF0YS1jb29raWVjb25zZW50PSJpZ25vcmUiPgoJCQkJPC9hPgoJCQk8L2Rpdj4KCQkJPGRpdiBjbGFzcz0iZGl2Q2FyRm9vdGVyQ29udGFpbmVyIHN0YWNrLWxjIC0tcy05Ij4KCQkJCQk8ZGl2IGNsYXNzPSJjYXJQYXltZW50V3JhcHBlciI+CgkJCTxkaXYgY2xhc3M9ImNvbnRlbnQtc2tlbGV0b24gaHRtbC1ibG9jayIgZGF0YS1ibG9jaz0icGF5bWVudEJsb2NrIiBkYXRhLXR5cGU9ImJsb2NrIiBkYXRhLXNvdXJjZT0ic2VydmVyIiBkYXRhLWNhbGxiYWNrPSJwYXltZW50Q2FsY0Jsb2NrIj4KCQkKCTxpbnB1dCBuYW1lPSJibG9jay1kYXRhIiB0eXBlPSJoaWRkZW4iIHZhbHVlPSd7InN0eWxlaWQiOiI0NzQ0NzIiLCJ0aXRsZSI6IktpYSBDYXJuaXZhbCAyMDI2IiwiaHJlZiI6IlwvbmV1ZnNcL0tpYS1DYXJuaXZhbC0yMDI2Lmh0bWwiLCJsaW5rc3R5bGUiOiIiLCJsaW5rY2xhc3MiOiIiLCJjb250YWluZXJjbGFzcyI6IiIsInByb21vdGV4dCI6IkNvZGUgcmFiYWlzIn0nPgoJPC9kaXY+Cgk8L2Rpdj4KCQkJCQoJCQk8L2Rpdj4KCQk8L2Rpdj4KCTwvZGl2PjwvZGl2PjwvZGl2PjwhLS0gQ0xPU0UgQ0FURUdPUllCT1hXUkFQUEVSICgyMDYwKS0tPjwhLS0gT1BFTiBDQVRFR09SWUJPWFdSQVBQRVIgKDIwNTIpIC0tPjxkaXYgaWQ9ImNsYXNzaHlicmlkX2NvbnRhaW5lciIgY2xhc3M9ImRpdlNwYW4gZGl2U3BhbjEyIGRpdkNhdGVnb3J5Qm94V3JhcHBlciIgc3RhdGU9Im9wZW4iIG5idmlzaWJsZT0iMSI+PGgyIGNsYXNzPSJkZWZhdWx0IGljb24taGVhZGluZyBmbGV4LWJveCBhbGlnbi1jZW50ZXIiPgoJPHNwYW4gY2xhc3M9ImZhIGZhLWNoZXZyb24tcmlnaHQiIGFyaWEtaGlkZGVuPSJ0cnVlIj48L3NwYW4+Cgk8Ym94LWxjIGNsYXNzPSItcHYwIj4KCQk8ZGl2IGNsYXNzPSJtYWluVGV4dCAtYm9sZCI+SHlicmlkZXMgKMOJY29IeWJyaWRlKSBuZXV2ZXMgS2lhIDIwMjUgJmFtcDsgMjAyNjwvZGl2PgoJCTxkaXYgY2xhc3M9InNlY29uZGFyeVRleHQiPsOgIE1hc2NvdWNoZTwvZGl2PgoJPC9ib3gtbGM+CjwvaDI+PGRpdiBjbGFzcz0iZGl2U3BhbiBkaXZTcGFuMTIgZGl2Q2Fyc0JveFdyYXBwZXIgQ0xBU1NfaHlicmlkIj4JPGRpdiBjbGFzcz0iZGl2Q2FyU2luZ2xlT3V0ZXJCb3ggIHJlYmF0ZUJvcmRlckNvbG9yIiBpZD0iZmJ4X2h5YnJpZF8xIj4KCQk8ZGl2IGNsYXNzPSJyZWJhdGVUYWciPjxzcGFuIGNsYXNzPSJyZWJhdGVUZXh0Ij5yYWJhaXMganVzcXUnw6A8L3NwYW4+PHNwYW4gY2xhc3M9InJlYmF0ZUFtb3VudCI+CTxzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiPjUwMDwvc3Bhbj48L3NwYW4+PC9kaXY+CgkJPGRpdiBjbGFzcz0iZGl2Q2FyU2luZ2xlSW5uZXJCb3giIGlkPSIiPgoJCQk8ZGl2IGNsYXNzPSJkMmMtZmF2cy10cmlnZ2VyLXdyYXBwZXIgZDJmYXYtMDEiIGRhdGEtbWFrZT0iS2lhIiBkYXRhLW1vZGVsPSJOaXJvIEh5YnJpZCIgZGF0YS15ZWFyPSIyMDI1IiBkYXRhLXRyaW09IiIgZGF0YS1jYXJpZD0iIj48L2Rpdj4KCQkJPGRpdiBjbGFzcz0iZGl2Q2FyVGl0bGVDb250YWluZXIiPgoJCQkJPGEgdGl0bGU9IktpYSBOaXJvIEh5YnJpZCAyMDI1IiBocmVmPSI\/cGF0aD0vbmV1ZnMvS2lhLU5pcm9fSHlicmlkLTIwMjUuaHRtbCIgZGF0YS1tYWtlPSJLaWEiIGRhdGEtbW9kZWw9Ik5pcm8gSHlicmlkZSAyMDI1Ij4KCQkJCQk8aDM+CgkJCQkJCTxzcGFuIGNsYXNzPSJzcGFuQ2FyTWFrZSAiPktpYTwvc3Bhbj48YnI+CgkJCQkJCTxzcGFuIGNsYXNzPSJtb2RlbE5hbWUgc3Bhbk1vZGVsTmFtZSI+TmlybyBIeWJyaWQgMjAyNTwvc3Bhbj4KCQkJCQk8L2gzPgoJCQkJPC9hPgoJCQkJICAgIDwhLS0gT1BFTiBORVcgQ0FSIFNUQVJUIFBSSUNFICh7X19MSU5FX199KS0tPgogICAgPGRpdiBjbGFzcz0iZGl2TmV3Q2FyU3RhcnRQcmljZSI+CiAgICAgICAgw6AgcGFydGlyIGRlCiAgICAgICAgPHNwYW4gY2xhc3M9InN0cmlrZS1wcmljZSI+CTxzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiPjMzIDQ5NDwvc3Bhbj48L3NwYW4+CiAgICAgICAgPGkgc3R5bGU9ImNvbG9yOiMwMDA7Zm9udC1zaXplOjIwcHg7IiBjbGFzcz0iY2FyUHJpY2VJbml0aWFsVG9vbFRpcEljb24gZmFsIGZhLWluZm8tY2lyY2xlIGJsYWNrQ29sb3JCb2xkIiBkYXRhLXRvb2x0aXA9IiZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7UERTRjombHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDszMCA3OTUmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtUcmFuc3BvcnQgJmFtcDsgUHLDqXBhcmF0aW9uOiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzIgMDAwJmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7RnJhaXMgZCdhZG1pbiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzU5OSZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O1RheGUgQUM6Jmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7MTAwJmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7VG90YWwmbHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDszMyA0OTQmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Ij48L2k+CiAgICA8L2Rpdj4KICAgIDwhLS0gQ0xPU0UgTkVXIENBUiBTVEFSVCBQUklDRSAoe19fTElORV9ffSktLT48IS0tIE9QRU4gTkVXIENBUiBQUk9NTyBQUklDRSAoMjc0KS0tPjxkaXYgY2xhc3M9ImRpdk5ld0NhclByb21vUHJpY2UiPmVuIHJhYmFpcyDDoCA8c3BhbiBjbGFzcz0iIiBzdHlsZT0iY29sb3I6ICMwNTE0MWY7Ij4JPHNwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSI+MzIgOTk0PC9zcGFuPjwvc3Bhbj48L2Rpdj48IS0tIENMT1NFIE5FVyBDQVIgUFJPTU8gUFJJQ0UgKDI4MSktLT4KCQkJCQk8ZGl2IGNsYXNzPSJkaXZDYXJJblN0b2NrTGluayIgaGlkZGVuPgoJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBkYXRhLXR5cGU9ImludmRhdGEiIGRhdGEtbWFrZT0iS2lhIiBkYXRhLW1vZGVsPSJOaXJvIEh5YnJpZCIgZGF0YS15ZWFyPSIyMDI1IiBkYXRhLXN0eWxlaWRzPSI0NjIzOTcsNDYyMzk4LDQ2MjM5OSw0NjI0MDAsNDYyNDAxIiBkYXRhLWh5YnJpZD0iMSI+Cgk8L2Rpdj4KCQkJPC9kaXY+CgkJCTxkaXYgY2xhc3M9ImRpdkNhckltYWdlQ29udGFpbmVyIGZsZXgtY2VudGVyIGFsaWduLWNlbnRlciAiPgoJCQkJPGEgdGl0bGU9IktpYSBOaXJvIEh5YnJpZCAyMDI1IiBocmVmPSI\/cGF0aD0vbmV1ZnMvS2lhLU5pcm9fSHlicmlkLTIwMjUuaHRtbCI+CgkJCQkJPGltZyBhbHQ9IktpYSBOaXJvIEh5YnJpZCAyMDI1IiBib3JkZXI9IjAiIGNsYXNzPSJsaXZlbG9hZCBvcHRhbm9uLWNhdGVnb3J5LUMwMDAxIiBkYXRhLWltZ3NyYz0iaHR0cHM6Ly9jYXJpbWFnZXMuZDJjbWVkaWEuY2EvbmV3Y2FyaW1hZ2VzL2ZyL0tpYS9OaXJvX0h5YnJpZC8yMDI1LzQ2MjM5Ny9XaGl0ZS9wcm9maWxlLndlYnAiIHNyYz0iaHR0cHM6Ly9jYXJpbWFnZXMuZDJjbWVkaWEuY2EvbmV3Y2FyaW1hZ2VzL2ZyL0tpYS9OaXJvX0h5YnJpZC8yMDI1LzQ2MjM5Ny9XaGl0ZS9wcm9maWxlLndlYnAiIGRhdGEtb3QtaWdub3JlIGRhdGEtY29va2llY29uc2VudD0iaWdub3JlIj4KCQkJCTwvYT4KCQkJPC9kaXY+CgkJCTxkaXYgY2xhc3M9ImRpdkNhckZvb3RlckNvbnRhaW5lciBzdGFjay1sYyAtLXMtOSI+CgkJCQkJPGRpdiBjbGFzcz0iY2FyUGF5bWVudFdyYXBwZXIiPgoJCQk8ZGl2IGNsYXNzPSJjb250ZW50LXNrZWxldG9uIGh0bWwtYmxvY2siIGRhdGEtYmxvY2s9InBheW1lbnRCbG9jayIgZGF0YS10eXBlPSJibG9jayIgZGF0YS1zb3VyY2U9InNlcnZlciIgZGF0YS1jYWxsYmFjaz0icGF5bWVudENhbGNCbG9jayI+CgkJCgk8aW5wdXQgbmFtZT0iYmxvY2stZGF0YSIgdHlwZT0iaGlkZGVuIiB2YWx1ZT0neyJzdHlsZWlkIjoiNDYyMzk3IiwidGl0bGUiOiJLaWEgTmlybyBIeWJyaWQgMjAyNSIsImhyZWYiOiJcL25ldWZzXC9LaWEtTmlyb19IeWJyaWQtMjAyNS5odG1sIiwibGlua3N0eWxlIjoiIiwibGlua2NsYXNzIjoiIiwiY29udGFpbmVyY2xhc3MiOiIiLCJwcm9tb3RleHQiOiJDb2RlIHJhYmFpcyJ9Jz4KCTwvZGl2PgoJPC9kaXY+CgkJCQkKCQkJPC9kaXY+CgkJPC9kaXY+Cgk8L2Rpdj4JPGRpdiBjbGFzcz0iZGl2Q2FyU2luZ2xlT3V0ZXJCb3ggIHJlYmF0ZUJvcmRlckNvbG9yIiBpZD0iZmJ4X2h5YnJpZF8yIj4KCQkKCQk8ZGl2IGNsYXNzPSJkaXZDYXJTaW5nbGVJbm5lckJveCIgaWQ9IiI+CgkJCTxkaXYgY2xhc3M9ImQyYy1mYXZzLXRyaWdnZXItd3JhcHBlciBkMmZhdi0wMSIgZGF0YS1tYWtlPSJLaWEiIGRhdGEtbW9kZWw9Ik5pcm8gSHlicmlkIiBkYXRhLXllYXI9IjIwMjYiIGRhdGEtdHJpbT0iIiBkYXRhLWNhcmlkPSIiPjwvZGl2PgoJCQk8ZGl2IGNsYXNzPSJkaXZDYXJUaXRsZUNvbnRhaW5lciI+CgkJCQk8YSB0aXRsZT0iS2lhIE5pcm8gSHlicmlkIDIwMjYiIGhyZWY9Ij9wYXRoPS9uZXVmcy9LaWEtTmlyb19IeWJyaWQtMjAyNi5odG1sIiBkYXRhLW1ha2U9IktpYSIgZGF0YS1tb2RlbD0iTmlybyBIeWJyaWRlIDIwMjYiPgoJCQkJCTxoMz4KCQkJCQkJPHNwYW4gY2xhc3M9InNwYW5DYXJNYWtlICI+S2lhPC9zcGFuPjxicj4KCQkJCQkJPHNwYW4gY2xhc3M9Im1vZGVsTmFtZSBzcGFuTW9kZWxOYW1lIj5OaXJvIEh5YnJpZCAyMDI2PC9zcGFuPgoJCQkJCTwvaDM+CgkJCQk8L2E+CgkJCQkgICAgPCEtLSBPUEVOIE5FVyBDQVIgU1RBUlQgUFJJQ0UgKHtfX0xJTkVfX30pLS0+CiAgICA8ZGl2IGNsYXNzPSJkaXZOZXdDYXJTdGFydFByaWNlIj4KICAgICAgICDDoCBwYXJ0aXIgZGUKICAgICAgICA8c3BhbiBjbGFzcz0iIj4JPHNwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSI+MzMgNTQ0PC9zcGFuPjwvc3Bhbj4KICAgICAgICA8aSBzdHlsZT0iY29sb3I6IzAwMDtmb250LXNpemU6MjBweDsiIGNsYXNzPSJjYXJQcmljZUluaXRpYWxUb29sVGlwSWNvbiBmYWwgZmEtaW5mby1jaXJjbGUgYmxhY2tDb2xvckJvbGQiIGRhdGEtdG9vbHRpcD0iJmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtQRFNGOiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzMwIDg0NSZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O1RyYW5zcG9ydCAmYW1wOyBQcsOpcGFyYXRpb246Jmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7MiAwMDAmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtGcmFpcyBkJ2FkbWluJmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7NTk5Jmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7VGF4ZSBBQzombHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDsxMDAmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtUb3RhbCZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzMzIDU0NCZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsiPjwvaT4KICAgIDwvZGl2PgogICAgPCEtLSBDTE9TRSBORVcgQ0FSIFNUQVJUIFBSSUNFICh7X19MSU5FX199KS0tPgoJCQkJCTxkaXYgY2xhc3M9ImRpdkNhckluU3RvY2tMaW5rIiBoaWRkZW4+CgkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGRhdGEtdHlwZT0iaW52ZGF0YSIgZGF0YS1tYWtlPSJLaWEiIGRhdGEtbW9kZWw9Ik5pcm8gSHlicmlkIiBkYXRhLXllYXI9IjIwMjYiIGRhdGEtc3R5bGVpZHM9IjQ3Nzc3NSw0Nzc3NzYsNDc3Nzc3LDQ3Nzc3OCw0Nzc3NzkiIGRhdGEtaHlicmlkPSIxIj4KCTwvZGl2PgoJCQk8L2Rpdj4KCQkJPGRpdiBjbGFzcz0iZGl2Q2FySW1hZ2VDb250YWluZXIgZmxleC1jZW50ZXIgYWxpZ24tY2VudGVyICI+CgkJCQk8YSB0aXRsZT0iS2lhIE5pcm8gSHlicmlkIDIwMjYiIGhyZWY9Ij9wYXRoPS9uZXVmcy9LaWEtTmlyb19IeWJyaWQtMjAyNi5odG1sIj4KCQkJCQk8aW1nIGFsdD0iS2lhIE5pcm8gSHlicmlkIDIwMjYiIGJvcmRlcj0iMCIgY2xhc3M9ImxpdmVsb2FkIG9wdGFub24tY2F0ZWdvcnktQzAwMDEiIGRhdGEtaW1nc3JjPSJodHRwczovL2NhcmltYWdlcy5kMmNtZWRpYS5jYS9uZXdjYXJpbWFnZXMvZnIvS2lhL05pcm9fSHlicmlkLzIwMjYvNDc3Nzc1L1doaXRlL3Byb2ZpbGUud2VicCIgc3JjPSJodHRwczovL2NhcmltYWdlcy5kMmNtZWRpYS5jYS9uZXdjYXJpbWFnZXMvZnIvS2lhL05pcm9fSHlicmlkLzIwMjYvNDc3Nzc1L1doaXRlL3Byb2ZpbGUud2VicCIgZGF0YS1vdC1pZ25vcmUgZGF0YS1jb29raWVjb25zZW50PSJpZ25vcmUiPgoJCQkJPC9hPgoJCQk8L2Rpdj4KCQkJPGRpdiBjbGFzcz0iZGl2Q2FyRm9vdGVyQ29udGFpbmVyIHN0YWNrLWxjIC0tcy05Ij4KCQkJCQk8ZGl2IGNsYXNzPSJjYXJQYXltZW50V3JhcHBlciI+CgkJCTxkaXYgY2xhc3M9ImNvbnRlbnQtc2tlbGV0b24gaHRtbC1ibG9jayIgZGF0YS1ibG9jaz0icGF5bWVudEJsb2NrIiBkYXRhLXR5cGU9ImJsb2NrIiBkYXRhLXNvdXJjZT0ic2VydmVyIiBkYXRhLWNhbGxiYWNrPSJwYXltZW50Q2FsY0Jsb2NrIj4KCQkKCTxpbnB1dCBuYW1lPSJibG9jay1kYXRhIiB0eXBlPSJoaWRkZW4iIHZhbHVlPSd7InN0eWxlaWQiOiI0Nzc3NzUiLCJ0aXRsZSI6IktpYSBOaXJvIEh5YnJpZCAyMDI2IiwiaHJlZiI6IlwvbmV1ZnNcL0tpYS1OaXJvX0h5YnJpZC0yMDI2Lmh0bWwiLCJsaW5rc3R5bGUiOiIiLCJsaW5rY2xhc3MiOiIiLCJjb250YWluZXJjbGFzcyI6IiIsInByb21vdGV4dCI6IkNvZGUgcmFiYWlzIn0nPgoJPC9kaXY+Cgk8L2Rpdj4KCQkJCQoJCQk8L2Rpdj4KCQk8L2Rpdj4KCTwvZGl2Pgk8ZGl2IGNsYXNzPSJkaXZDYXJTaW5nbGVPdXRlckJveCAgcmViYXRlQm9yZGVyQ29sb3IiIGlkPSJmYnhfaHlicmlkXzMiPgoJCQoJCTxkaXYgY2xhc3M9ImRpdkNhclNpbmdsZUlubmVyQm94IiBpZD0iIj4KCQkJPGRpdiBjbGFzcz0iZDJjLWZhdnMtdHJpZ2dlci13cmFwcGVyIGQyZmF2LTAxIiBkYXRhLW1ha2U9IktpYSIgZGF0YS1tb2RlbD0iU3BvcnRhZ2UgSHlicmlkIiBkYXRhLXllYXI9IjIwMjYiIGRhdGEtdHJpbT0iIiBkYXRhLWNhcmlkPSIiPjwvZGl2PgoJCQk8ZGl2IGNsYXNzPSJkaXZDYXJUaXRsZUNvbnRhaW5lciI+CgkJCQk8YSB0aXRsZT0iS2lhIFNwb3J0YWdlIEh5YnJpZCAyMDI2IiBocmVmPSI\/cGF0aD0vbmV1ZnMvS2lhLVNwb3J0YWdlX0h5YnJpZC0yMDI2Lmh0bWwiIGRhdGEtbWFrZT0iS2lhIiBkYXRhLW1vZGVsPSJTcG9ydGFnZSBoeWJyaWRlIDIwMjYiPgoJCQkJCTxoMz4KCQkJCQkJPHNwYW4gY2xhc3M9InNwYW5DYXJNYWtlICI+S2lhPC9zcGFuPjxicj4KCQkJCQkJPHNwYW4gY2xhc3M9Im1vZGVsTmFtZSBzcGFuTW9kZWxOYW1lIj5TcG9ydGFnZSBIeWJyaWQgMjAyNjwvc3Bhbj4KCQkJCQk8L2gzPgoJCQkJPC9hPgoJCQkJICAgIDwhLS0gT1BFTiBORVcgQ0FSIFNUQVJUIFBSSUNFICh7X19MSU5FX199KS0tPgogICAgPGRpdiBjbGFzcz0iZGl2TmV3Q2FyU3RhcnRQcmljZSI+CiAgICAgICAgw6AgcGFydGlyIGRlCiAgICAgICAgPHNwYW4gY2xhc3M9IiI+CTxzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiPjQ0IDM0NDwvc3Bhbj48L3NwYW4+CiAgICAgICAgPGkgc3R5bGU9ImNvbG9yOiMwMDA7Zm9udC1zaXplOjIwcHg7IiBjbGFzcz0iY2FyUHJpY2VJbml0aWFsVG9vbFRpcEljb24gZmFsIGZhLWluZm8tY2lyY2xlIGJsYWNrQ29sb3JCb2xkIiBkYXRhLXRvb2x0aXA9IiZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7UERTRjombHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDs0MSA0OTUmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtUcmFuc3BvcnQgJmFtcDsgUHLDqXBhcmF0aW9uOiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzIgMTUwJmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7RnJhaXMgZCdhZG1pbiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzU5OSZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O1RheGUgQUM6Jmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7MTAwJmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7VG90YWwmbHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDs0NCAzNDQmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Ij48L2k+CiAgICA8L2Rpdj4KICAgIDwhLS0gQ0xPU0UgTkVXIENBUiBTVEFSVCBQUklDRSAoe19fTElORV9ffSktLT4KCQkJCQk8ZGl2IGNsYXNzPSJkaXZDYXJJblN0b2NrTGluayIgaGlkZGVuPgoJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBkYXRhLXR5cGU9ImludmRhdGEiIGRhdGEtbWFrZT0iS2lhIiBkYXRhLW1vZGVsPSJTcG9ydGFnZSBIeWJyaWQiIGRhdGEteWVhcj0iMjAyNiIgZGF0YS1zdHlsZWlkcz0iNDc2OTYyLDQ3Njk2NSw0NzY5NjMsNDc2OTY0IiBkYXRhLWh5YnJpZD0iMSI+Cgk8L2Rpdj4KCQkJPC9kaXY+CgkJCTxkaXYgY2xhc3M9ImRpdkNhckltYWdlQ29udGFpbmVyIGZsZXgtY2VudGVyIGFsaWduLWNlbnRlciAiPgoJCQkJPGEgdGl0bGU9IktpYSBTcG9ydGFnZSBIeWJyaWQgMjAyNiIgaHJlZj0iP3BhdGg9L25ldWZzL0tpYS1TcG9ydGFnZV9IeWJyaWQtMjAyNi5odG1sIj4KCQkJCQk8aW1nIGFsdD0iS2lhIFNwb3J0YWdlIEh5YnJpZCAyMDI2IiBib3JkZXI9IjAiIGNsYXNzPSJsYXp5bG9hZCBvcHRhbm9uLWNhdGVnb3J5LUMwMDAxIiBkYXRhLWltZ3NyYz0iaHR0cHM6Ly9jYXJpbWFnZXMuZDJjbWVkaWEuY2EvbmV3Y2FyaW1hZ2VzL2ZyL0tpYS9TcG9ydGFnZV9IeWJyaWQvMjAyNi80NzY5NjIvV2hpdGUvcHJvZmlsZS53ZWJwIiBkYXRhLW90LWlnbm9yZSBkYXRhLWNvb2tpZWNvbnNlbnQ9Imlnbm9yZSI+CgkJCQk8L2E+CgkJCTwvZGl2PgoJCQk8ZGl2IGNsYXNzPSJkaXZDYXJGb290ZXJDb250YWluZXIgc3RhY2stbGMgLS1zLTkiPgoJCQkJCTxkaXYgY2xhc3M9ImNhclBheW1lbnRXcmFwcGVyIj4KCQkJPGRpdiBjbGFzcz0iY29udGVudC1za2VsZXRvbiBodG1sLWJsb2NrIiBkYXRhLWJsb2NrPSJwYXltZW50QmxvY2siIGRhdGEtdHlwZT0iYmxvY2siIGRhdGEtc291cmNlPSJzZXJ2ZXIiIGRhdGEtY2FsbGJhY2s9InBheW1lbnRDYWxjQmxvY2siPgoJCQoJPGlucHV0IG5hbWU9ImJsb2NrLWRhdGEiIHR5cGU9ImhpZGRlbiIgdmFsdWU9J3sic3R5bGVpZCI6IjQ3Njk2MiIsInRpdGxlIjoiS2lhIFNwb3J0YWdlIEh5YnJpZCAyMDI2IiwiaHJlZiI6IlwvbmV1ZnNcL0tpYS1TcG9ydGFnZV9IeWJyaWQtMjAyNi5odG1sIiwibGlua3N0eWxlIjoiIiwibGlua2NsYXNzIjoiIiwiY29udGFpbmVyY2xhc3MiOiIiLCJwcm9tb3RleHQiOiJDb2RlIHJhYmFpcyJ9Jz4KCTwvZGl2PgoJPC9kaXY+CgkJCQkKCQkJPC9kaXY+CgkJPC9kaXY+Cgk8L2Rpdj4JPGRpdiBjbGFzcz0iZGl2Q2FyU2luZ2xlT3V0ZXJCb3ggIHJlYmF0ZUJvcmRlckNvbG9yIiBpZD0iZmJ4X2h5YnJpZF80Ij4KCQkKCQk8ZGl2IGNsYXNzPSJkaXZDYXJTaW5nbGVJbm5lckJveCIgaWQ9IiI+CgkJCTxkaXYgY2xhc3M9ImQyYy1mYXZzLXRyaWdnZXItd3JhcHBlciBkMmZhdi0wMSIgZGF0YS1tYWtlPSJLaWEiIGRhdGEtbW9kZWw9IlNvcmVudG8gSHlicmlkIiBkYXRhLXllYXI9IjIwMjYiIGRhdGEtdHJpbT0iIiBkYXRhLWNhcmlkPSIiPjwvZGl2PgoJCQk8ZGl2IGNsYXNzPSJkaXZDYXJUaXRsZUNvbnRhaW5lciI+CgkJCQk8YSB0aXRsZT0iS2lhIFNvcmVudG8gSHlicmlkIDIwMjYiIGhyZWY9Ij9wYXRoPS9uZXVmcy9LaWEtU29yZW50b19IeWJyaWQtMjAyNi5odG1sIiBkYXRhLW1ha2U9IktpYSIgZGF0YS1tb2RlbD0iU29yZW50byBoeWJyaWRlIDIwMjYiPgoJCQkJCTxoMz4KCQkJCQkJPHNwYW4gY2xhc3M9InNwYW5DYXJNYWtlICI+S2lhPC9zcGFuPjxicj4KCQkJCQkJPHNwYW4gY2xhc3M9Im1vZGVsTmFtZSBzcGFuTW9kZWxOYW1lIj5Tb3JlbnRvIEh5YnJpZCAyMDI2PC9zcGFuPgoJCQkJCTwvaDM+CgkJCQk8L2E+CgkJCQkgICAgPCEtLSBPUEVOIE5FVyBDQVIgU1RBUlQgUFJJQ0UgKHtfX0xJTkVfX30pLS0+CiAgICA8ZGl2IGNsYXNzPSJkaXZOZXdDYXJTdGFydFByaWNlIj4KICAgICAgICDDoCBwYXJ0aXIgZGUKICAgICAgICA8c3BhbiBjbGFzcz0iIj4JPHNwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSI+NDYgNDk0PC9zcGFuPjwvc3Bhbj4KICAgICAgICA8aSBzdHlsZT0iY29sb3I6IzAwMDtmb250LXNpemU6MjBweDsiIGNsYXNzPSJjYXJQcmljZUluaXRpYWxUb29sVGlwSWNvbiBmYWwgZmEtaW5mby1jaXJjbGUgYmxhY2tDb2xvckJvbGQiIGRhdGEtdG9vbHRpcD0iJmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtQRFNGOiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzQzIDY5NSZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O1RyYW5zcG9ydCAmYW1wOyBQcsOpcGFyYXRpb246Jmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7MiAxMDAmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtGcmFpcyBkJ2FkbWluJmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7NTk5Jmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7VGF4ZSBBQzombHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDsxMDAmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtUb3RhbCZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzQ2IDQ5NCZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsiPjwvaT4KICAgIDwvZGl2PgogICAgPCEtLSBDTE9TRSBORVcgQ0FSIFNUQVJUIFBSSUNFICh7X19MSU5FX199KS0tPgoJCQkJCTxkaXYgY2xhc3M9ImRpdkNhckluU3RvY2tMaW5rIiBoaWRkZW4+CgkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGRhdGEtdHlwZT0iaW52ZGF0YSIgZGF0YS1tYWtlPSJLaWEiIGRhdGEtbW9kZWw9IlNvcmVudG8gSHlicmlkIiBkYXRhLXllYXI9IjIwMjYiIGRhdGEtc3R5bGVpZHM9IjQ3ODc5NCw0Nzg3OTIsNDc4NzkzIiBkYXRhLWh5YnJpZD0iMSI+Cgk8L2Rpdj4KCQkJPC9kaXY+CgkJCTxkaXYgY2xhc3M9ImRpdkNhckltYWdlQ29udGFpbmVyIGZsZXgtY2VudGVyIGFsaWduLWNlbnRlciAiPgoJCQkJPGEgdGl0bGU9IktpYSBTb3JlbnRvIEh5YnJpZCAyMDI2IiBocmVmPSI\/cGF0aD0vbmV1ZnMvS2lhLVNvcmVudG9fSHlicmlkLTIwMjYuaHRtbCI+CgkJCQkJPGltZyBhbHQ9IktpYSBTb3JlbnRvIEh5YnJpZCAyMDI2IiBib3JkZXI9IjAiIGNsYXNzPSJsYXp5bG9hZCBvcHRhbm9uLWNhdGVnb3J5LUMwMDAxIiBkYXRhLWltZ3NyYz0iaHR0cHM6Ly9jYXJpbWFnZXMuZDJjbWVkaWEuY2EvbmV3Y2FyaW1hZ2VzL2ZyL0tpYS9Tb3JlbnRvX0h5YnJpZC8yMDI2LzQ3ODc5NC9XaGl0ZS9wcm9maWxlLndlYnAiIGRhdGEtb3QtaWdub3JlIGRhdGEtY29va2llY29uc2VudD0iaWdub3JlIj4KCQkJCTwvYT4KCQkJPC9kaXY+CgkJCTxkaXYgY2xhc3M9ImRpdkNhckZvb3RlckNvbnRhaW5lciBzdGFjay1sYyAtLXMtOSI+CgkJCQkJPGRpdiBjbGFzcz0iY2FyUGF5bWVudFdyYXBwZXIiPgoJCQk8ZGl2IGNsYXNzPSJjb250ZW50LXNrZWxldG9uIGh0bWwtYmxvY2siIGRhdGEtYmxvY2s9InBheW1lbnRCbG9jayIgZGF0YS10eXBlPSJibG9jayIgZGF0YS1zb3VyY2U9InNlcnZlciIgZGF0YS1jYWxsYmFjaz0icGF5bWVudENhbGNCbG9jayI+CgkJCgk8aW5wdXQgbmFtZT0iYmxvY2stZGF0YSIgdHlwZT0iaGlkZGVuIiB2YWx1ZT0neyJzdHlsZWlkIjoiNDc4Nzk0IiwidGl0bGUiOiJLaWEgU29yZW50byBIeWJyaWQgMjAyNiIsImhyZWYiOiJcL25ldWZzXC9LaWEtU29yZW50b19IeWJyaWQtMjAyNi5odG1sIiwibGlua3N0eWxlIjoiIiwibGlua2NsYXNzIjoiIiwiY29udGFpbmVyY2xhc3MiOiIiLCJwcm9tb3RleHQiOiJDb2RlIHJhYmFpcyJ9Jz4KCTwvZGl2PgoJPC9kaXY+CgkJCQkKCQkJPC9kaXY+CgkJPC9kaXY+Cgk8L2Rpdj4JPGRpdiBjbGFzcz0iZGl2Q2FyU2luZ2xlT3V0ZXJCb3ggIHJlYmF0ZUJvcmRlckNvbG9yIiBpZD0iZmJ4X2h5YnJpZF81Ij4KCQkKCQk8ZGl2IGNsYXNzPSJkaXZDYXJTaW5nbGVJbm5lckJveCIgaWQ9IiI+CgkJCTxkaXYgY2xhc3M9ImQyYy1mYXZzLXRyaWdnZXItd3JhcHBlciBkMmZhdi0wMSIgZGF0YS1tYWtlPSJLaWEiIGRhdGEtbW9kZWw9IlNvcmVudG8gSHlicmlkIiBkYXRhLXllYXI9IjIwMjUiIGRhdGEtdHJpbT0iIiBkYXRhLWNhcmlkPSIiPjwvZGl2PgoJCQk8ZGl2IGNsYXNzPSJkaXZDYXJUaXRsZUNvbnRhaW5lciI+CgkJCQk8YSB0aXRsZT0iS2lhIFNvcmVudG8gSHlicmlkIDIwMjUiIGhyZWY9Ij9wYXRoPS9uZXVmcy9LaWEtU29yZW50b19IeWJyaWQtMjAyNS5odG1sIiBkYXRhLW1ha2U9IktpYSIgZGF0YS1tb2RlbD0iU29yZW50byBoeWJyaWRlIDIwMjUiPgoJCQkJCTxoMz4KCQkJCQkJPHNwYW4gY2xhc3M9InNwYW5DYXJNYWtlICI+S2lhPC9zcGFuPjxicj4KCQkJCQkJPHNwYW4gY2xhc3M9Im1vZGVsTmFtZSBzcGFuTW9kZWxOYW1lIj5Tb3JlbnRvIEh5YnJpZCAyMDI1PC9zcGFuPgoJCQkJCTwvaDM+CgkJCQk8L2E+CgkJCQkgICAgPCEtLSBPUEVOIE5FVyBDQVIgU1RBUlQgUFJJQ0UgKHtfX0xJTkVfX30pLS0+CiAgICA8ZGl2IGNsYXNzPSJkaXZOZXdDYXJTdGFydFByaWNlIj4KICAgICAgICDDoCBwYXJ0aXIgZGUKICAgICAgICA8c3BhbiBjbGFzcz0iIj4JPHNwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSI+NDggNDQ0PC9zcGFuPjwvc3Bhbj4KICAgICAgICA8aSBzdHlsZT0iY29sb3I6IzAwMDtmb250LXNpemU6MjBweDsiIGNsYXNzPSJjYXJQcmljZUluaXRpYWxUb29sVGlwSWNvbiBmYWwgZmEtaW5mby1jaXJjbGUgYmxhY2tDb2xvckJvbGQiIGRhdGEtdG9vbHRpcD0iJmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtQRFNGOiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzQ1IDY0NSZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O1RyYW5zcG9ydCAmYW1wOyBQcsOpcGFyYXRpb246Jmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7MiAxMDAmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtGcmFpcyBkJ2FkbWluJmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7NTk5Jmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7VGF4ZSBBQzombHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDsxMDAmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtUb3RhbCZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzQ4IDQ0NCZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsiPjwvaT4KICAgIDwvZGl2PgogICAgPCEtLSBDTE9TRSBORVcgQ0FSIFNUQVJUIFBSSUNFICh7X19MSU5FX199KS0tPgoJCQkJCTxkaXYgY2xhc3M9ImRpdkNhckluU3RvY2tMaW5rIiBoaWRkZW4+CgkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGRhdGEtdHlwZT0iaW52ZGF0YSIgZGF0YS1tYWtlPSJLaWEiIGRhdGEtbW9kZWw9IlNvcmVudG8gSHlicmlkIiBkYXRhLXllYXI9IjIwMjUiIGRhdGEtc3R5bGVpZHM9IjQ1NzU3Miw0NTc1NzMiIGRhdGEtaHlicmlkPSIxIj4KCTwvZGl2PgoJCQk8L2Rpdj4KCQkJPGRpdiBjbGFzcz0iZGl2Q2FySW1hZ2VDb250YWluZXIgZmxleC1jZW50ZXIgYWxpZ24tY2VudGVyICI+CgkJCQk8YSB0aXRsZT0iS2lhIFNvcmVudG8gSHlicmlkIDIwMjUiIGhyZWY9Ij9wYXRoPS9uZXVmcy9LaWEtU29yZW50b19IeWJyaWQtMjAyNS5odG1sIj4KCQkJCQk8aW1nIGFsdD0iS2lhIFNvcmVudG8gSHlicmlkIDIwMjUiIGJvcmRlcj0iMCIgY2xhc3M9Imxhenlsb2FkIG9wdGFub24tY2F0ZWdvcnktQzAwMDEiIGRhdGEtaW1nc3JjPSJodHRwczovL2NhcmltYWdlcy5kMmNtZWRpYS5jYS9uZXdjYXJpbWFnZXMvZnIvS2lhL1NvcmVudG9fSHlicmlkLzIwMjUvNDU3NTcyL1doaXRlL3Byb2ZpbGUud2VicCIgZGF0YS1vdC1pZ25vcmUgZGF0YS1jb29raWVjb25zZW50PSJpZ25vcmUiPgoJCQkJPC9hPgoJCQk8L2Rpdj4KCQkJPGRpdiBjbGFzcz0iZGl2Q2FyRm9vdGVyQ29udGFpbmVyIHN0YWNrLWxjIC0tcy05Ij4KCQkJCQk8ZGl2IGNsYXNzPSJjYXJQYXltZW50V3JhcHBlciI+CgkJCTxkaXYgY2xhc3M9ImNvbnRlbnQtc2tlbGV0b24gaHRtbC1ibG9jayIgZGF0YS1ibG9jaz0icGF5bWVudEJsb2NrIiBkYXRhLXR5cGU9ImJsb2NrIiBkYXRhLXNvdXJjZT0ic2VydmVyIiBkYXRhLWNhbGxiYWNrPSJwYXltZW50Q2FsY0Jsb2NrIj4KCQkKCTxpbnB1dCBuYW1lPSJibG9jay1kYXRhIiB0eXBlPSJoaWRkZW4iIHZhbHVlPSd7InN0eWxlaWQiOiI0NTc1NzIiLCJ0aXRsZSI6IktpYSBTb3JlbnRvIEh5YnJpZCAyMDI1IiwiaHJlZiI6IlwvbmV1ZnNcL0tpYS1Tb3JlbnRvX0h5YnJpZC0yMDI1Lmh0bWwiLCJsaW5rc3R5bGUiOiIiLCJsaW5rY2xhc3MiOiIiLCJjb250YWluZXJjbGFzcyI6IiIsInByb21vdGV4dCI6IkNvZGUgcmFiYWlzIn0nPgoJPC9kaXY+Cgk8L2Rpdj4KCQkJCQoJCQk8L2Rpdj4KCQk8L2Rpdj4KCTwvZGl2Pgk8ZGl2IGNsYXNzPSJkaXZDYXJTaW5nbGVPdXRlckJveCAgcmViYXRlQm9yZGVyQ29sb3IiIGlkPSJmYnhfaHlicmlkXzYiPgoJCQoJCTxkaXYgY2xhc3M9ImRpdkNhclNpbmdsZUlubmVyQm94IiBpZD0iIj4KCQkJPGRpdiBjbGFzcz0iZDJjLWZhdnMtdHJpZ2dlci13cmFwcGVyIGQyZmF2LTAxIiBkYXRhLW1ha2U9IktpYSIgZGF0YS1tb2RlbD0iQ2Fybml2YWwgSHlicmlkIiBkYXRhLXllYXI9IjIwMjYiIGRhdGEtdHJpbT0iIiBkYXRhLWNhcmlkPSIiPjwvZGl2PgoJCQk8ZGl2IGNsYXNzPSJkaXZDYXJUaXRsZUNvbnRhaW5lciI+CgkJCQk8YSB0aXRsZT0iS2lhIENhcm5pdmFsIEh5YnJpZCAyMDI2IiBocmVmPSI\/cGF0aD0vbmV1ZnMvS2lhLUNhcm5pdmFsX0h5YnJpZC0yMDI2Lmh0bWwiIGRhdGEtbWFrZT0iS2lhIiBkYXRhLW1vZGVsPSJDYXJuaXZhbCBoeWJyaWRlIDIwMjYiPgoJCQkJCTxoMz4KCQkJCQkJPHNwYW4gY2xhc3M9InNwYW5DYXJNYWtlICI+S2lhPC9zcGFuPjxicj4KCQkJCQkJPHNwYW4gY2xhc3M9Im1vZGVsTmFtZSBzcGFuTW9kZWxOYW1lIj5DYXJuaXZhbCBIeWJyaWQgMjAyNjwvc3Bhbj4KCQkJCQk8L2gzPgoJCQkJPC9hPgoJCQkJICAgIDwhLS0gT1BFTiBORVcgQ0FSIFNUQVJUIFBSSUNFICh7X19MSU5FX199KS0tPgogICAgPGRpdiBjbGFzcz0iZGl2TmV3Q2FyU3RhcnRQcmljZSI+CiAgICAgICAgw6AgcGFydGlyIGRlCiAgICAgICAgPHNwYW4gY2xhc3M9IiI+CTxzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiPjUxIDI0NDwvc3Bhbj48L3NwYW4+CiAgICAgICAgPGkgc3R5bGU9ImNvbG9yOiMwMDA7Zm9udC1zaXplOjIwcHg7IiBjbGFzcz0iY2FyUHJpY2VJbml0aWFsVG9vbFRpcEljb24gZmFsIGZhLWluZm8tY2lyY2xlIGJsYWNrQ29sb3JCb2xkIiBkYXRhLXRvb2x0aXA9IiZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7UERTRjombHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDs0OCAzOTUmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtUcmFuc3BvcnQgJmFtcDsgUHLDqXBhcmF0aW9uOiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzIgMTUwJmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7RnJhaXMgZCdhZG1pbiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzU5OSZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O1RheGUgQUM6Jmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7MTAwJmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7VG90YWwmbHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDs1MSAyNDQmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Ij48L2k+CiAgICA8L2Rpdj4KICAgIDwhLS0gQ0xPU0UgTkVXIENBUiBTVEFSVCBQUklDRSAoe19fTElORV9ffSktLT4KCQkJCQk8ZGl2IGNsYXNzPSJkaXZDYXJJblN0b2NrTGluayIgaGlkZGVuPgoJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBkYXRhLXR5cGU9ImludmRhdGEiIGRhdGEtbWFrZT0iS2lhIiBkYXRhLW1vZGVsPSJDYXJuaXZhbCBIeWJyaWQiIGRhdGEteWVhcj0iMjAyNiIgZGF0YS1zdHlsZWlkcz0iNDc0MTkyLDQ3NDE5Myw0NzQxOTUsNDc0MTk0IiBkYXRhLWh5YnJpZD0iMSI+Cgk8L2Rpdj4KCQkJPC9kaXY+CgkJCTxkaXYgY2xhc3M9ImRpdkNhckltYWdlQ29udGFpbmVyIGZsZXgtY2VudGVyIGFsaWduLWNlbnRlciAiPgoJCQkJPGEgdGl0bGU9IktpYSBDYXJuaXZhbCBIeWJyaWQgMjAyNiIgaHJlZj0iP3BhdGg9L25ldWZzL0tpYS1DYXJuaXZhbF9IeWJyaWQtMjAyNi5odG1sIj4KCQkJCQk8aW1nIGFsdD0iS2lhIENhcm5pdmFsIEh5YnJpZCAyMDI2IiBib3JkZXI9IjAiIGNsYXNzPSJsYXp5bG9hZCBvcHRhbm9uLWNhdGVnb3J5LUMwMDAxIiBkYXRhLWltZ3NyYz0iaHR0cHM6Ly9jYXJpbWFnZXMuZDJjbWVkaWEuY2EvbmV3Y2FyaW1hZ2VzL2ZyL0tpYS9DYXJuaXZhbF9IeWJyaWQvMjAyNi80NzQxOTIvV2hpdGUvcHJvZmlsZS53ZWJwIiBkYXRhLW90LWlnbm9yZSBkYXRhLWNvb2tpZWNvbnNlbnQ9Imlnbm9yZSI+CgkJCQk8L2E+CgkJCTwvZGl2PgoJCQk8ZGl2IGNsYXNzPSJkaXZDYXJGb290ZXJDb250YWluZXIgc3RhY2stbGMgLS1zLTkiPgoJCQkJCTxkaXYgY2xhc3M9ImNhclBheW1lbnRXcmFwcGVyIj4KCQkJPGRpdiBjbGFzcz0iY29udGVudC1za2VsZXRvbiBodG1sLWJsb2NrIiBkYXRhLWJsb2NrPSJwYXltZW50QmxvY2siIGRhdGEtdHlwZT0iYmxvY2siIGRhdGEtc291cmNlPSJzZXJ2ZXIiIGRhdGEtY2FsbGJhY2s9InBheW1lbnRDYWxjQmxvY2siPgoJCQoJPGlucHV0IG5hbWU9ImJsb2NrLWRhdGEiIHR5cGU9ImhpZGRlbiIgdmFsdWU9J3sic3R5bGVpZCI6IjQ3NDE5MiIsInRpdGxlIjoiS2lhIENhcm5pdmFsIEh5YnJpZCAyMDI2IiwiaHJlZiI6IlwvbmV1ZnNcL0tpYS1DYXJuaXZhbF9IeWJyaWQtMjAyNi5odG1sIiwibGlua3N0eWxlIjoiIiwibGlua2NsYXNzIjoiIiwiY29udGFpbmVyY2xhc3MiOiIiLCJwcm9tb3RleHQiOiJDb2RlIHJhYmFpcyJ9Jz4KCTwvZGl2PgoJPC9kaXY+CgkJCQkKCQkJPC9kaXY+CgkJPC9kaXY+Cgk8L2Rpdj48L2Rpdj48L2Rpdj48IS0tIENMT1NFIENBVEVHT1JZQk9YV1JBUFBFUiAoMjA2MCktLT48IS0tIE9QRU4gQ0FURUdPUllCT1hXUkFQUEVSICgyMDUyKSAtLT48ZGl2IGlkPSJjbGFzc3BoZXZfY29udGFpbmVyIiBjbGFzcz0iZGl2U3BhbiBkaXZTcGFuMTIgZGl2Q2F0ZWdvcnlCb3hXcmFwcGVyIiBzdGF0ZT0ib3BlbiIgbmJ2aXNpYmxlPSIxIj48aDIgY2xhc3M9ImRlZmF1bHQgaWNvbi1oZWFkaW5nIGZsZXgtYm94IGFsaWduLWNlbnRlciI+Cgk8c3BhbiBjbGFzcz0iZmEgZmEtY2hldnJvbi1yaWdodCIgYXJpYS1oaWRkZW49InRydWUiPjwvc3Bhbj4KCTxib3gtbGMgY2xhc3M9Ii1wdjAiPgoJCTxkaXYgY2xhc3M9Im1haW5UZXh0IC1ib2xkIj5IeWJyaWRlcyByZWNoYXJnZWFibGUgbmV1ZnMgS2lhIDIwMjUgJmFtcDsgMjAyNjwvZGl2PgoJCTxkaXYgY2xhc3M9InNlY29uZGFyeVRleHQiPsOgIE1hc2NvdWNoZTwvZGl2PgoJPC9ib3gtbGM+CjwvaDI+PGRpdiBjbGFzcz0iZGl2U3BhbiBkaXZTcGFuMTIgZGl2Q2Fyc0JveFdyYXBwZXIgQ0xBU1NfcGhldiI+CTxkaXYgY2xhc3M9ImRpdkNhclNpbmdsZU91dGVyQm94ICByZWJhdGVCb3JkZXJDb2xvciIgaWQ9ImZieF9waGV2XzEiPgoJCTxkaXYgY2xhc3M9InJlYmF0ZVRhZyI+PHNwYW4gY2xhc3M9InJlYmF0ZVRleHQiPnJhYmFpcyBqdXNxdSfDoDwvc3Bhbj48c3BhbiBjbGFzcz0icmViYXRlQW1vdW50Ij4JPHNwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSI+MyAxMDg8L3NwYW4+PC9zcGFuPjwvZGl2PgoJCTxkaXYgY2xhc3M9ImRpdkNhclNpbmdsZUlubmVyQm94IiBpZD0iIj4KCQkJPGRpdiBjbGFzcz0iZDJjLWZhdnMtdHJpZ2dlci13cmFwcGVyIGQyZmF2LTAxIiBkYXRhLW1ha2U9IktpYSIgZGF0YS1tb2RlbD0iTmlybyBQbHVnLUluIEh5YnJpZCIgZGF0YS15ZWFyPSIyMDI2IiBkYXRhLXRyaW09IiIgZGF0YS1jYXJpZD0iIj48L2Rpdj4KCQkJPGRpdiBjbGFzcz0iZGl2Q2FyVGl0bGVDb250YWluZXIiPgoJCQkJPGEgdGl0bGU9IktpYSBOaXJvIFBsdWctSW4gSHlicmlkIDIwMjYiIGhyZWY9Ij9wYXRoPS9uZXVmcy9LaWEtTmlyb19QbHVnX0luX0h5YnJpZC0yMDI2Lmh0bWwiIGRhdGEtbWFrZT0iS2lhIiBkYXRhLW1vZGVsPSJOaXJvIGh5YnJpZGUgcmVjaGFyZ2VhYmxlIDIwMjYiPgoJCQkJCTxoMz4KCQkJCQkJPHNwYW4gY2xhc3M9InNwYW5DYXJNYWtlICI+S2lhPC9zcGFuPjxicj4KCQkJCQkJPHNwYW4gY2xhc3M9Im1vZGVsTmFtZSBzcGFuTW9kZWxOYW1lIj5OaXJvIFBsdWctSW4gSHlicmlkIDIwMjY8L3NwYW4+CgkJCQkJPC9oMz4KCQkJCTwvYT4KCQkJCSAgICA8IS0tIE9QRU4gTkVXIENBUiBTVEFSVCBQUklDRSAoe19fTElORV9ffSktLT4KICAgIDxkaXYgY2xhc3M9ImRpdk5ld0NhclN0YXJ0UHJpY2UiPgogICAgICAgIMOgIHBhcnRpciBkZQogICAgICAgIDxzcGFuIGNsYXNzPSJzdHJpa2UtcHJpY2UiPgk8c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIj4zOSA1NDQ8L3NwYW4+PC9zcGFuPgogICAgICAgIDxpIHN0eWxlPSJjb2xvcjojMDAwO2ZvbnQtc2l6ZToyMHB4OyIgY2xhc3M9ImNhclByaWNlSW5pdGlhbFRvb2xUaXBJY29uIGZhbCBmYS1pbmZvLWNpcmNsZSBibGFja0NvbG9yQm9sZCIgZGF0YS10b29sdGlwPSImbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O1BEU0Y6Jmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7MzYgODQ1Jmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7VHJhbnNwb3J0ICZhbXA7IFByw6lwYXJhdGlvbjombHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDsyIDAwMCZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O0ZyYWlzIGQnYWRtaW4mbHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDs1OTkmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtUYXhlIEFDOiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzEwMCZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O1RvdGFsJmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7MzkgNTQ0Jmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyI+PC9pPgogICAgPC9kaXY+CiAgICA8IS0tIENMT1NFIE5FVyBDQVIgU1RBUlQgUFJJQ0UgKHtfX0xJTkVfX30pLS0+PCEtLSBPUEVOIE5FVyBDQVIgUFJPTU8gUFJJQ0UgKDI3NCktLT48ZGl2IGNsYXNzPSJkaXZOZXdDYXJQcm9tb1ByaWNlIj5lbiByYWJhaXMgw6AgPHNwYW4gY2xhc3M9IiIgc3R5bGU9ImNvbG9yOiAjMDUxNDFmOyI+CTxzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiPjM2IDQzNjwvc3Bhbj48L3NwYW4+PC9kaXY+PCEtLSBDTE9TRSBORVcgQ0FSIFBST01PIFBSSUNFICgyODEpLS0+CgkJCQkJPGRpdiBjbGFzcz0iZGl2Q2FySW5TdG9ja0xpbmsiIGhpZGRlbj4KCQkJPGlucHV0IHR5cGU9ImhpZGRlbiIgZGF0YS10eXBlPSJpbnZkYXRhIiBkYXRhLW1ha2U9IktpYSIgZGF0YS1tb2RlbD0iTmlybyBQbHVnLUluIEh5YnJpZCIgZGF0YS15ZWFyPSIyMDI2IiBkYXRhLXN0eWxlaWRzPSI0Nzc3ODAsNDc3NzgxLDQ3Nzc4MiIgZGF0YS1oeWJyaWQ9IjEiPgoJPC9kaXY+CgkJCTwvZGl2PgoJCQk8ZGl2IGNsYXNzPSJkaXZDYXJJbWFnZUNvbnRhaW5lciBmbGV4LWNlbnRlciBhbGlnbi1jZW50ZXIgIj4KCQkJCTxhIHRpdGxlPSJLaWEgTmlybyBQbHVnLUluIEh5YnJpZCAyMDI2IiBocmVmPSI\/cGF0aD0vbmV1ZnMvS2lhLU5pcm9fUGx1Z19Jbl9IeWJyaWQtMjAyNi5odG1sIj4KCQkJCQk8aW1nIGFsdD0iS2lhIE5pcm8gUGx1Zy1JbiBIeWJyaWQgMjAyNiIgYm9yZGVyPSIwIiBjbGFzcz0ibGF6eWxvYWQgb3B0YW5vbi1jYXRlZ29yeS1DMDAwMSIgZGF0YS1pbWdzcmM9Imh0dHBzOi8vY2FyaW1hZ2VzLmQyY21lZGlhLmNhL25ld2NhcmltYWdlcy9mci9LaWEvTmlyb19QbHVnX0luX0h5YnJpZC8yMDI2LzQ3Nzc4MC9XaGl0ZS9wcm9maWxlLndlYnAiIGRhdGEtb3QtaWdub3JlIGRhdGEtY29va2llY29uc2VudD0iaWdub3JlIj4KCQkJCTwvYT4KCQkJPC9kaXY+CgkJCTxkaXYgY2xhc3M9ImRpdkNhckZvb3RlckNvbnRhaW5lciBzdGFjay1sYyAtLXMtOSI+CgkJCQkJPGRpdiBjbGFzcz0iY2FyUGF5bWVudFdyYXBwZXIiPgoJCQk8ZGl2IGNsYXNzPSJjb250ZW50LXNrZWxldG9uIGh0bWwtYmxvY2siIGRhdGEtYmxvY2s9InBheW1lbnRCbG9jayIgZGF0YS10eXBlPSJibG9jayIgZGF0YS1zb3VyY2U9InNlcnZlciIgZGF0YS1jYWxsYmFjaz0icGF5bWVudENhbGNCbG9jayI+CgkJCgk8aW5wdXQgbmFtZT0iYmxvY2stZGF0YSIgdHlwZT0iaGlkZGVuIiB2YWx1ZT0neyJzdHlsZWlkIjoiNDc3NzgwIiwidGl0bGUiOiJLaWEgTmlybyBQbHVnLUluIEh5YnJpZCAyMDI2IiwiaHJlZiI6IlwvbmV1ZnNcL0tpYS1OaXJvX1BsdWdfSW5fSHlicmlkLTIwMjYuaHRtbCIsImxpbmtzdHlsZSI6IiIsImxpbmtjbGFzcyI6IiIsImNvbnRhaW5lcmNsYXNzIjoiIiwicHJvbW90ZXh0IjoiQ29kZSByYWJhaXMifSc+Cgk8L2Rpdj4KCTwvZGl2PgoJCQkJCgkJCTwvZGl2PgoJCTwvZGl2PgoJPC9kaXY+CTxkaXYgY2xhc3M9ImRpdkNhclNpbmdsZU91dGVyQm94ICByZWJhdGVCb3JkZXJDb2xvciIgaWQ9ImZieF9waGV2XzIiPgoJCTxkaXYgY2xhc3M9InJlYmF0ZVRhZyI+PHNwYW4gY2xhc3M9InJlYmF0ZVRleHQiPnJhYmFpcyBqdXNxdSfDoDwvc3Bhbj48c3BhbiBjbGFzcz0icmViYXRlQW1vdW50Ij4JPHNwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSI+MyAxMDg8L3NwYW4+PC9zcGFuPjwvZGl2PgoJCTxkaXYgY2xhc3M9ImRpdkNhclNpbmdsZUlubmVyQm94IiBpZD0iIj4KCQkJPGRpdiBjbGFzcz0iZDJjLWZhdnMtdHJpZ2dlci13cmFwcGVyIGQyZmF2LTAxIiBkYXRhLW1ha2U9IktpYSIgZGF0YS1tb2RlbD0iU3BvcnRhZ2UgUGx1Zy1JbiBIeWJyaWQiIGRhdGEteWVhcj0iMjAyNiIgZGF0YS10cmltPSIiIGRhdGEtY2FyaWQ9IiI+PC9kaXY+CgkJCTxkaXYgY2xhc3M9ImRpdkNhclRpdGxlQ29udGFpbmVyIj4KCQkJCTxhIHRpdGxlPSJLaWEgU3BvcnRhZ2UgUGx1Zy1JbiBIeWJyaWQgMjAyNiIgaHJlZj0iP3BhdGg9L25ldWZzL0tpYS1TcG9ydGFnZV9QbHVnX0luX0h5YnJpZC0yMDI2Lmh0bWwiIGRhdGEtbWFrZT0iS2lhIiBkYXRhLW1vZGVsPSJTcG9ydGFnZSBoeWJyaWRlIHJlY2hhcmdlYWJsZSAyMDI2Ij4KCQkJCQk8aDM+CgkJCQkJCTxzcGFuIGNsYXNzPSJzcGFuQ2FyTWFrZSAiPktpYTwvc3Bhbj48YnI+CgkJCQkJCTxzcGFuIGNsYXNzPSJtb2RlbE5hbWUgc3Bhbk1vZGVsTmFtZSI+U3BvcnRhZ2UgUGx1Zy1JbiBIeWJyaWQgMjAyNjwvc3Bhbj4KCQkJCQk8L2gzPgoJCQkJPC9hPgoJCQkJICAgIDwhLS0gT1BFTiBORVcgQ0FSIFNUQVJUIFBSSUNFICh7X19MSU5FX199KS0tPgogICAgPGRpdiBjbGFzcz0iZGl2TmV3Q2FyU3RhcnRQcmljZSI+CiAgICAgICAgw6AgcGFydGlyIGRlCiAgICAgICAgPHNwYW4gY2xhc3M9InN0cmlrZS1wcmljZSI+CTxzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiPjQ5IDI0NDwvc3Bhbj48L3NwYW4+CiAgICAgICAgPGkgc3R5bGU9ImNvbG9yOiMwMDA7Zm9udC1zaXplOjIwcHg7IiBjbGFzcz0iY2FyUHJpY2VJbml0aWFsVG9vbFRpcEljb24gZmFsIGZhLWluZm8tY2lyY2xlIGJsYWNrQ29sb3JCb2xkIiBkYXRhLXRvb2x0aXA9IiZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7UERTRjombHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDs0NiAzOTUmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtUcmFuc3BvcnQgJmFtcDsgUHLDqXBhcmF0aW9uOiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzIgMTUwJmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7RnJhaXMgZCdhZG1pbiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzU5OSZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O1RheGUgQUM6Jmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7MTAwJmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7VG90YWwmbHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDs0OSAyNDQmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Ij48L2k+CiAgICA8L2Rpdj4KICAgIDwhLS0gQ0xPU0UgTkVXIENBUiBTVEFSVCBQUklDRSAoe19fTElORV9ffSktLT48IS0tIE9QRU4gTkVXIENBUiBQUk9NTyBQUklDRSAoMjc0KS0tPjxkaXYgY2xhc3M9ImRpdk5ld0NhclByb21vUHJpY2UiPmVuIHJhYmFpcyDDoCA8c3BhbiBjbGFzcz0iIiBzdHlsZT0iY29sb3I6ICMwNTE0MWY7Ij4JPHNwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSI+NDYgNjM2PC9zcGFuPjwvc3Bhbj48L2Rpdj48IS0tIENMT1NFIE5FVyBDQVIgUFJPTU8gUFJJQ0UgKDI4MSktLT4KCQkJCQk8ZGl2IGNsYXNzPSJkaXZDYXJJblN0b2NrTGluayIgaGlkZGVuPgoJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBkYXRhLXR5cGU9ImludmRhdGEiIGRhdGEtbWFrZT0iS2lhIiBkYXRhLW1vZGVsPSJTcG9ydGFnZSBQbHVnLUluIEh5YnJpZCIgZGF0YS15ZWFyPSIyMDI2IiBkYXRhLXN0eWxlaWRzPSI0NzY5NjksNDc2OTY2LDQ3Njk2Nyw0NzY5NjgiIGRhdGEtaHlicmlkPSIxIj4KCTwvZGl2PgoJCQk8L2Rpdj4KCQkJPGRpdiBjbGFzcz0iZGl2Q2FySW1hZ2VDb250YWluZXIgZmxleC1jZW50ZXIgYWxpZ24tY2VudGVyICI+CgkJCQk8YSB0aXRsZT0iS2lhIFNwb3J0YWdlIFBsdWctSW4gSHlicmlkIDIwMjYiIGhyZWY9Ij9wYXRoPS9uZXVmcy9LaWEtU3BvcnRhZ2VfUGx1Z19Jbl9IeWJyaWQtMjAyNi5odG1sIj4KCQkJCQk8aW1nIGFsdD0iS2lhIFNwb3J0YWdlIFBsdWctSW4gSHlicmlkIDIwMjYiIGJvcmRlcj0iMCIgY2xhc3M9Imxhenlsb2FkIG9wdGFub24tY2F0ZWdvcnktQzAwMDEiIGRhdGEtaW1nc3JjPSJodHRwczovL2NhcmltYWdlcy5kMmNtZWRpYS5jYS9uZXdjYXJpbWFnZXMvZnIvS2lhL1Nwb3J0YWdlX1BsdWdfSW5fSHlicmlkLzIwMjYvNDc2OTY5L1doaXRlL3Byb2ZpbGUud2VicCIgZGF0YS1vdC1pZ25vcmUgZGF0YS1jb29raWVjb25zZW50PSJpZ25vcmUiPgoJCQkJPC9hPgoJCQk8L2Rpdj4KCQkJPGRpdiBjbGFzcz0iZGl2Q2FyRm9vdGVyQ29udGFpbmVyIHN0YWNrLWxjIC0tcy05Ij4KCQkJCQk8ZGl2IGNsYXNzPSJjYXJQYXltZW50V3JhcHBlciI+CgkJCTxkaXYgY2xhc3M9ImNvbnRlbnQtc2tlbGV0b24gaHRtbC1ibG9jayIgZGF0YS1ibG9jaz0icGF5bWVudEJsb2NrIiBkYXRhLXR5cGU9ImJsb2NrIiBkYXRhLXNvdXJjZT0ic2VydmVyIiBkYXRhLWNhbGxiYWNrPSJwYXltZW50Q2FsY0Jsb2NrIj4KCQkKCTxpbnB1dCBuYW1lPSJibG9jay1kYXRhIiB0eXBlPSJoaWRkZW4iIHZhbHVlPSd7InN0eWxlaWQiOiI0NzY5NjkiLCJ0aXRsZSI6IktpYSBTcG9ydGFnZSBQbHVnLUluIEh5YnJpZCAyMDI2IiwiaHJlZiI6IlwvbmV1ZnNcL0tpYS1TcG9ydGFnZV9QbHVnX0luX0h5YnJpZC0yMDI2Lmh0bWwiLCJsaW5rc3R5bGUiOiIiLCJsaW5rY2xhc3MiOiIiLCJjb250YWluZXJjbGFzcyI6IiIsInByb21vdGV4dCI6IkNvZGUgcmFiYWlzIn0nPgoJPC9kaXY+Cgk8L2Rpdj4KCQkJCQoJCQk8L2Rpdj4KCQk8L2Rpdj4KCTwvZGl2Pgk8ZGl2IGNsYXNzPSJkaXZDYXJTaW5nbGVPdXRlckJveCAgcmViYXRlQm9yZGVyQ29sb3IiIGlkPSJmYnhfcGhldl8zIj4KCQk8ZGl2IGNsYXNzPSJyZWJhdGVUYWciPjxzcGFuIGNsYXNzPSJyZWJhdGVUZXh0Ij5yYWJhaXMganVzcXUnw6A8L3NwYW4+PHNwYW4gY2xhc3M9InJlYmF0ZUFtb3VudCI+CTxzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiPjMgNjA4PC9zcGFuPjwvc3Bhbj48L2Rpdj4KCQk8ZGl2IGNsYXNzPSJkaXZDYXJTaW5nbGVJbm5lckJveCIgaWQ9IiI+CgkJCTxkaXYgY2xhc3M9ImQyYy1mYXZzLXRyaWdnZXItd3JhcHBlciBkMmZhdi0wMSIgZGF0YS1tYWtlPSJLaWEiIGRhdGEtbW9kZWw9IlNvcmVudG8gUGx1Zy1JbiBIeWJyaWQiIGRhdGEteWVhcj0iMjAyNiIgZGF0YS10cmltPSIiIGRhdGEtY2FyaWQ9IiI+PC9kaXY+CgkJCTxkaXYgY2xhc3M9ImRpdkNhclRpdGxlQ29udGFpbmVyIj4KCQkJCTxhIHRpdGxlPSJLaWEgU29yZW50byBQbHVnLUluIEh5YnJpZCAyMDI2IiBocmVmPSI\/cGF0aD0vbmV1ZnMvS2lhLVNvcmVudG9fUGx1Z19Jbl9IeWJyaWQtMjAyNi5odG1sIiBkYXRhLW1ha2U9IktpYSIgZGF0YS1tb2RlbD0iU29yZW50byBoeWJyaWRlIHJlY2hhcmdlYWJsZSAyMDI2Ij4KCQkJCQk8aDM+CgkJCQkJCTxzcGFuIGNsYXNzPSJzcGFuQ2FyTWFrZSAiPktpYTwvc3Bhbj48YnI+CgkJCQkJCTxzcGFuIGNsYXNzPSJtb2RlbE5hbWUgc3Bhbk1vZGVsTmFtZSI+U29yZW50byBQbHVnLUluIEh5YnJpZCAyMDI2PC9zcGFuPgoJCQkJCTwvaDM+CgkJCQk8L2E+CgkJCQkgICAgPCEtLSBPUEVOIE5FVyBDQVIgU1RBUlQgUFJJQ0UgKHtfX0xJTkVfX30pLS0+CiAgICA8ZGl2IGNsYXNzPSJkaXZOZXdDYXJTdGFydFByaWNlIj4KICAgICAgICDDoCBwYXJ0aXIgZGUKICAgICAgICA8c3BhbiBjbGFzcz0ic3RyaWtlLXByaWNlIj4JPHNwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSI+NTEgNDk0PC9zcGFuPjwvc3Bhbj4KICAgICAgICA8aSBzdHlsZT0iY29sb3I6IzAwMDtmb250LXNpemU6MjBweDsiIGNsYXNzPSJjYXJQcmljZUluaXRpYWxUb29sVGlwSWNvbiBmYWwgZmEtaW5mby1jaXJjbGUgYmxhY2tDb2xvckJvbGQiIGRhdGEtdG9vbHRpcD0iJmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtQRFNGOiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzQ4IDY5NSZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O1RyYW5zcG9ydCAmYW1wOyBQcsOpcGFyYXRpb246Jmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7MiAxMDAmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtGcmFpcyBkJ2FkbWluJmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7NTk5Jmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7VGF4ZSBBQzombHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDsxMDAmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtUb3RhbCZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzUxIDQ5NCZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsiPjwvaT4KICAgIDwvZGl2PgogICAgPCEtLSBDTE9TRSBORVcgQ0FSIFNUQVJUIFBSSUNFICh7X19MSU5FX199KS0tPjwhLS0gT1BFTiBORVcgQ0FSIFBST01PIFBSSUNFICgyNzQpLS0+PGRpdiBjbGFzcz0iZGl2TmV3Q2FyUHJvbW9QcmljZSI+ZW4gcmFiYWlzIMOgIDxzcGFuIGNsYXNzPSIiIHN0eWxlPSJjb2xvcjogIzA1MTQxZjsiPgk8c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIj40NyA4ODY8L3NwYW4+PC9zcGFuPjwvZGl2PjwhLS0gQ0xPU0UgTkVXIENBUiBQUk9NTyBQUklDRSAoMjgxKS0tPgoJCQkJCTxkaXYgY2xhc3M9ImRpdkNhckluU3RvY2tMaW5rIiBoaWRkZW4+CgkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGRhdGEtdHlwZT0iaW52ZGF0YSIgZGF0YS1tYWtlPSJLaWEiIGRhdGEtbW9kZWw9IlNvcmVudG8gUGx1Zy1JbiBIeWJyaWQiIGRhdGEteWVhcj0iMjAyNiIgZGF0YS1zdHlsZWlkcz0iNDc4NzkxLDQ3ODc4OSw0Nzg3OTAiIGRhdGEtaHlicmlkPSIxIj4KCTwvZGl2PgoJCQk8L2Rpdj4KCQkJPGRpdiBjbGFzcz0iZGl2Q2FySW1hZ2VDb250YWluZXIgZmxleC1jZW50ZXIgYWxpZ24tY2VudGVyICI+CgkJCQk8YSB0aXRsZT0iS2lhIFNvcmVudG8gUGx1Zy1JbiBIeWJyaWQgMjAyNiIgaHJlZj0iP3BhdGg9L25ldWZzL0tpYS1Tb3JlbnRvX1BsdWdfSW5fSHlicmlkLTIwMjYuaHRtbCI+CgkJCQkJPGltZyBhbHQ9IktpYSBTb3JlbnRvIFBsdWctSW4gSHlicmlkIDIwMjYiIGJvcmRlcj0iMCIgY2xhc3M9Imxhenlsb2FkIG9wdGFub24tY2F0ZWdvcnktQzAwMDEiIGRhdGEtaW1nc3JjPSJodHRwczovL2NhcmltYWdlcy5kMmNtZWRpYS5jYS9uZXdjYXJpbWFnZXMvZnIvS2lhL1NvcmVudG9fUGx1Z19Jbl9IeWJyaWQvMjAyNi80Nzg3OTEvV2hpdGUvcHJvZmlsZS53ZWJwIiBkYXRhLW90LWlnbm9yZSBkYXRhLWNvb2tpZWNvbnNlbnQ9Imlnbm9yZSI+CgkJCQk8L2E+CgkJCTwvZGl2PgoJCQk8ZGl2IGNsYXNzPSJkaXZDYXJGb290ZXJDb250YWluZXIgc3RhY2stbGMgLS1zLTkiPgoJCQkJCTxkaXYgY2xhc3M9ImNhclBheW1lbnRXcmFwcGVyIj4KCQkJPGRpdiBjbGFzcz0iY29udGVudC1za2VsZXRvbiBodG1sLWJsb2NrIiBkYXRhLWJsb2NrPSJwYXltZW50QmxvY2siIGRhdGEtdHlwZT0iYmxvY2siIGRhdGEtc291cmNlPSJzZXJ2ZXIiIGRhdGEtY2FsbGJhY2s9InBheW1lbnRDYWxjQmxvY2siPgoJCQoJPGlucHV0IG5hbWU9ImJsb2NrLWRhdGEiIHR5cGU9ImhpZGRlbiIgdmFsdWU9J3sic3R5bGVpZCI6IjQ3ODc5MSIsInRpdGxlIjoiS2lhIFNvcmVudG8gUGx1Zy1JbiBIeWJyaWQgMjAyNiIsImhyZWYiOiJcL25ldWZzXC9LaWEtU29yZW50b19QbHVnX0luX0h5YnJpZC0yMDI2Lmh0bWwiLCJsaW5rc3R5bGUiOiIiLCJsaW5rY2xhc3MiOiIiLCJjb250YWluZXJjbGFzcyI6IiIsInByb21vdGV4dCI6IkNvZGUgcmFiYWlzIn0nPgoJPC9kaXY+Cgk8L2Rpdj4KCQkJCQoJCQk8L2Rpdj4KCQk8L2Rpdj4KCTwvZGl2Pgk8ZGl2IGNsYXNzPSJkaXZDYXJTaW5nbGVPdXRlckJveCAgcmViYXRlQm9yZGVyQ29sb3IiIGlkPSJmYnhfcGhldl80Ij4KCQk8ZGl2IGNsYXNzPSJyZWJhdGVUYWciPjxzcGFuIGNsYXNzPSJyZWJhdGVUZXh0Ij5yYWJhaXMganVzcXUnw6A8L3NwYW4+PHNwYW4gY2xhc3M9InJlYmF0ZUFtb3VudCI+CTxzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiPjIgNDM0PC9zcGFuPjwvc3Bhbj48L2Rpdj4KCQk8ZGl2IGNsYXNzPSJkaXZDYXJTaW5nbGVJbm5lckJveCIgaWQ9IiI+CgkJCTxkaXYgY2xhc3M9ImQyYy1mYXZzLXRyaWdnZXItd3JhcHBlciBkMmZhdi0wMSIgZGF0YS1tYWtlPSJLaWEiIGRhdGEtbW9kZWw9IlNvcmVudG8gUGx1Zy1JbiBIeWJyaWQiIGRhdGEteWVhcj0iMjAyNSIgZGF0YS10cmltPSIiIGRhdGEtY2FyaWQ9IiI+PC9kaXY+CgkJCTxkaXYgY2xhc3M9ImRpdkNhclRpdGxlQ29udGFpbmVyIj4KCQkJCTxhIHRpdGxlPSJLaWEgU29yZW50byBQbHVnLUluIEh5YnJpZCAyMDI1IiBocmVmPSI\/cGF0aD0vbmV1ZnMvS2lhLVNvcmVudG9fUGx1Z19Jbl9IeWJyaWQtMjAyNS5odG1sIiBkYXRhLW1ha2U9IktpYSIgZGF0YS1tb2RlbD0iU29yZW50byBoeWJyaWRlIHJlY2hhcmdlYWJsZSAyMDI1Ij4KCQkJCQk8aDM+CgkJCQkJCTxzcGFuIGNsYXNzPSJzcGFuQ2FyTWFrZSAiPktpYTwvc3Bhbj48YnI+CgkJCQkJCTxzcGFuIGNsYXNzPSJtb2RlbE5hbWUgc3Bhbk1vZGVsTmFtZSI+U29yZW50byBQbHVnLUluIEh5YnJpZCAyMDI1PC9zcGFuPgoJCQkJCTwvaDM+CgkJCQk8L2E+CgkJCQkgICAgPCEtLSBPUEVOIE5FVyBDQVIgU1RBUlQgUFJJQ0UgKHtfX0xJTkVfX30pLS0+CiAgICA8ZGl2IGNsYXNzPSJkaXZOZXdDYXJTdGFydFByaWNlIj4KICAgICAgICDDoCBwYXJ0aXIgZGUKICAgICAgICA8c3BhbiBjbGFzcz0ic3RyaWtlLXByaWNlIj4JPHNwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSI+NTMgNDQ0PC9zcGFuPjwvc3Bhbj4KICAgICAgICA8aSBzdHlsZT0iY29sb3I6IzAwMDtmb250LXNpemU6MjBweDsiIGNsYXNzPSJjYXJQcmljZUluaXRpYWxUb29sVGlwSWNvbiBmYWwgZmEtaW5mby1jaXJjbGUgYmxhY2tDb2xvckJvbGQiIGRhdGEtdG9vbHRpcD0iJmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtQRFNGOiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzUwIDY0NSZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O1RyYW5zcG9ydCAmYW1wOyBQcsOpcGFyYXRpb246Jmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7MiAxMDAmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtGcmFpcyBkJ2FkbWluJmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7NTk5Jmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7VGF4ZSBBQzombHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDsxMDAmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtUb3RhbCZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzUzIDQ0NCZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsiPjwvaT4KICAgIDwvZGl2PgogICAgPCEtLSBDTE9TRSBORVcgQ0FSIFNUQVJUIFBSSUNFICh7X19MSU5FX199KS0tPjwhLS0gT1BFTiBORVcgQ0FSIFBST01PIFBSSUNFICgyNzQpLS0+PGRpdiBjbGFzcz0iZGl2TmV3Q2FyUHJvbW9QcmljZSI+ZW4gcmFiYWlzIMOgIDxzcGFuIGNsYXNzPSIiIHN0eWxlPSJjb2xvcjogIzA1MTQxZjsiPgk8c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIj41MSAwMTA8L3NwYW4+PC9zcGFuPjwvZGl2PjwhLS0gQ0xPU0UgTkVXIENBUiBQUk9NTyBQUklDRSAoMjgxKS0tPgoJCQkJCTxkaXYgY2xhc3M9ImRpdkNhckluU3RvY2tMaW5rIiBoaWRkZW4+CgkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGRhdGEtdHlwZT0iaW52ZGF0YSIgZGF0YS1tYWtlPSJLaWEiIGRhdGEtbW9kZWw9IlNvcmVudG8gUGx1Zy1JbiBIeWJyaWQiIGRhdGEteWVhcj0iMjAyNSIgZGF0YS1zdHlsZWlkcz0iNDU3NjYwLDQ1NzY2MSIgZGF0YS1oeWJyaWQ9IjEiPgoJPC9kaXY+CgkJCTwvZGl2PgoJCQk8ZGl2IGNsYXNzPSJkaXZDYXJJbWFnZUNvbnRhaW5lciBmbGV4LWNlbnRlciBhbGlnbi1jZW50ZXIgIj4KCQkJCTxhIHRpdGxlPSJLaWEgU29yZW50byBQbHVnLUluIEh5YnJpZCAyMDI1IiBocmVmPSI\/cGF0aD0vbmV1ZnMvS2lhLVNvcmVudG9fUGx1Z19Jbl9IeWJyaWQtMjAyNS5odG1sIj4KCQkJCQk8aW1nIGFsdD0iS2lhIFNvcmVudG8gUGx1Zy1JbiBIeWJyaWQgMjAyNSIgYm9yZGVyPSIwIiBjbGFzcz0ibGF6eWxvYWQgb3B0YW5vbi1jYXRlZ29yeS1DMDAwMSIgZGF0YS1pbWdzcmM9Imh0dHBzOi8vY2FyaW1hZ2VzLmQyY21lZGlhLmNhL25ld2NhcmltYWdlcy9mci9LaWEvU29yZW50b19QbHVnX0luX0h5YnJpZC8yMDI1LzQ1NzY2MC9XaGl0ZS9wcm9maWxlLndlYnAiIGRhdGEtb3QtaWdub3JlIGRhdGEtY29va2llY29uc2VudD0iaWdub3JlIj4KCQkJCTwvYT4KCQkJPC9kaXY+CgkJCTxkaXYgY2xhc3M9ImRpdkNhckZvb3RlckNvbnRhaW5lciBzdGFjay1sYyAtLXMtOSI+CgkJCQkJPGRpdiBjbGFzcz0iY2FyUGF5bWVudFdyYXBwZXIiPgoJCQk8ZGl2IGNsYXNzPSJjb250ZW50LXNrZWxldG9uIGh0bWwtYmxvY2siIGRhdGEtYmxvY2s9InBheW1lbnRCbG9jayIgZGF0YS10eXBlPSJibG9jayIgZGF0YS1zb3VyY2U9InNlcnZlciIgZGF0YS1jYWxsYmFjaz0icGF5bWVudENhbGNCbG9jayI+CgkJCgk8aW5wdXQgbmFtZT0iYmxvY2stZGF0YSIgdHlwZT0iaGlkZGVuIiB2YWx1ZT0neyJzdHlsZWlkIjoiNDU3NjYwIiwidGl0bGUiOiJLaWEgU29yZW50byBQbHVnLUluIEh5YnJpZCAyMDI1IiwiaHJlZiI6IlwvbmV1ZnNcL0tpYS1Tb3JlbnRvX1BsdWdfSW5fSHlicmlkLTIwMjUuaHRtbCIsImxpbmtzdHlsZSI6IiIsImxpbmtjbGFzcyI6IiIsImNvbnRhaW5lcmNsYXNzIjoiIiwicHJvbW90ZXh0IjoiQ29kZSByYWJhaXMifSc+Cgk8L2Rpdj4KCTwvZGl2PgoJCQkJCgkJCTwvZGl2PgoJCTwvZGl2PgoJPC9kaXY+PC9kaXY+PC9kaXY+PCEtLSBDTE9TRSBDQVRFR09SWUJPWFdSQVBQRVIgKDIwNjApLS0+PCEtLSBPUEVOIENBVEVHT1JZQk9YV1JBUFBFUiAoMjA1MikgLS0+PGRpdiBpZD0iY2xhc3NlbGVjdHJpY19jb250YWluZXIiIGNsYXNzPSJkaXZTcGFuIGRpdlNwYW4xMiBkaXZDYXRlZ29yeUJveFdyYXBwZXIiIHN0YXRlPSJvcGVuIiBuYnZpc2libGU9IjEiPjxoMiBjbGFzcz0iZGVmYXVsdCBpY29uLWhlYWRpbmcgZmxleC1ib3ggYWxpZ24tY2VudGVyIj4KCTxzcGFuIGNsYXNzPSJmYSBmYS1jaGV2cm9uLXJpZ2h0IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PC9zcGFuPgoJPGJveC1sYyBjbGFzcz0iLXB2MCI+CgkJPGRpdiBjbGFzcz0ibWFpblRleHQgLWJvbGQiPsOJbGVjdHJpcXVlcyBuZXV2ZXMgS2lhIDIwMjUsIDIwMjYgJmFtcDsgMjAyNzwvZGl2PgoJCTxkaXYgY2xhc3M9InNlY29uZGFyeVRleHQiPsOgIE1hc2NvdWNoZTwvZGl2PgoJPC9ib3gtbGM+CjwvaDI+PGRpdiBjbGFzcz0iZGl2U3BhbiBkaXZTcGFuMTIgZGl2Q2Fyc0JveFdyYXBwZXIgQ0xBU1NfZWxlY3RyaWMiPgk8ZGl2IGNsYXNzPSJkaXZDYXJTaW5nbGVPdXRlckJveCAgcmViYXRlQm9yZGVyQ29sb3IiIGlkPSJmYnhfZWxlY3RyaWNfMSI+CgkJPGRpdiBjbGFzcz0icmViYXRlVGFnIj48c3BhbiBjbGFzcz0icmViYXRlVGV4dCI+cmFiYWlzIGp1c3F1J8OgPC9zcGFuPjxzcGFuIGNsYXNzPSJyZWJhdGVBbW91bnQiPgk8c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIj42IDA4Nzwvc3Bhbj48L3NwYW4+PC9kaXY+CgkJPGRpdiBjbGFzcz0iZGl2Q2FyU2luZ2xlSW5uZXJCb3giIGlkPSIiPgoJCQk8ZGl2IGNsYXNzPSJkMmMtZmF2cy10cmlnZ2VyLXdyYXBwZXIgZDJmYXYtMDEiIGRhdGEtbWFrZT0iS2lhIiBkYXRhLW1vZGVsPSJFVjQiIGRhdGEteWVhcj0iMjAyNiIgZGF0YS10cmltPSIiIGRhdGEtY2FyaWQ9IiI+PC9kaXY+CgkJCTxkaXYgY2xhc3M9ImRpdkNhclRpdGxlQ29udGFpbmVyIj4KCQkJCTxhIHRpdGxlPSJLaWEgRVY0IDIwMjYiIGhyZWY9Ij9wYXRoPS9uZXVmcy9LaWEtRVY0LTIwMjYuaHRtbCIgZGF0YS1tYWtlPSJLaWEiIGRhdGEtbW9kZWw9IkVWNCAyMDI2Ij4KCQkJCQk8aDM+CgkJCQkJCTxzcGFuIGNsYXNzPSJzcGFuQ2FyTWFrZSAiPktpYTwvc3Bhbj48YnI+CgkJCQkJCTxzcGFuIGNsYXNzPSJtb2RlbE5hbWUgc3Bhbk1vZGVsTmFtZSI+RVY0IDIwMjY8L3NwYW4+CgkJCQkJPC9oMz4KCQkJCTwvYT4KCQkJCSAgICA8IS0tIE9QRU4gTkVXIENBUiBTVEFSVCBQUklDRSAoe19fTElORV9ffSktLT4KICAgIDxkaXYgY2xhc3M9ImRpdk5ld0NhclN0YXJ0UHJpY2UiPgogICAgICAgIMOgIHBhcnRpciBkZQogICAgICAgIDxzcGFuIGNsYXNzPSJzdHJpa2UtcHJpY2UiPgk8c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIj40MSA4NDQ8L3NwYW4+PC9zcGFuPgogICAgICAgIDxpIHN0eWxlPSJjb2xvcjojMDAwO2ZvbnQtc2l6ZToyMHB4OyIgY2xhc3M9ImNhclByaWNlSW5pdGlhbFRvb2xUaXBJY29uIGZhbCBmYS1pbmZvLWNpcmNsZSBibGFja0NvbG9yQm9sZCIgZGF0YS10b29sdGlwPSImbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O1BEU0Y6Jmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7MzggOTk1Jmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7RnJhaXMgYWRtaW4mbHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDszMDAmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtUcmFuc3BvcnQgJmFtcDsgUHLDqXBhcmF0aW9uOiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzIgMTUwJmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7RnJhaXMgZCdhZG1pbiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzU5OSZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O1RheGUgQUM6Jmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7MTAwJmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7VG90YWwmbHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDs0MiAxNDQmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Ij48L2k+CiAgICA8L2Rpdj4KICAgIDwhLS0gQ0xPU0UgTkVXIENBUiBTVEFSVCBQUklDRSAoe19fTElORV9ffSktLT48IS0tIE9QRU4gTkVXIENBUiBQUk9NTyBQUklDRSAoMjc0KS0tPjxkaXYgY2xhc3M9ImRpdk5ld0NhclByb21vUHJpY2UiPmVuIHJhYmFpcyDDoCA8c3BhbiBjbGFzcz0iIiBzdHlsZT0iY29sb3I6ICMwNTE0MWY7Ij4JPHNwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSI+MzUgNzU3PC9zcGFuPjwvc3Bhbj48L2Rpdj48IS0tIENMT1NFIE5FVyBDQVIgUFJPTU8gUFJJQ0UgKDI4MSktLT4KCQkJCQk8ZGl2IGNsYXNzPSJkaXZDYXJJblN0b2NrTGluayIgaGlkZGVuPgoJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBkYXRhLXR5cGU9ImludmRhdGEiIGRhdGEtbWFrZT0iS2lhIiBkYXRhLW1vZGVsPSJFVjQiIGRhdGEteWVhcj0iMjAyNiIgZGF0YS1zdHlsZWlkcz0iNDgzNzkzLDQ4Mzc5NCw0ODM3OTUsNDgzMTMwLDQ4MzEzMSIgZGF0YS1oeWJyaWQ9IjAiPgoJPC9kaXY+CgkJCTwvZGl2PgoJCQk8ZGl2IGNsYXNzPSJkaXZDYXJJbWFnZUNvbnRhaW5lciBmbGV4LWNlbnRlciBhbGlnbi1jZW50ZXIgIj4KCQkJCTxhIHRpdGxlPSJLaWEgRVY0IDIwMjYiIGhyZWY9Ij9wYXRoPS9uZXVmcy9LaWEtRVY0LTIwMjYuaHRtbCI+CgkJCQkJPGltZyBhbHQ9IktpYSBFVjQgMjAyNiIgYm9yZGVyPSIwIiBjbGFzcz0ibGF6eWxvYWQgb3B0YW5vbi1jYXRlZ29yeS1DMDAwMSIgZGF0YS1pbWdzcmM9Imh0dHBzOi8vY2FyaW1hZ2VzLmQyY21lZGlhLmNhL25ld2NhcmltYWdlcy9mci9LaWEvRVY0LzIwMjYvNDgzNzkzL1doaXRlL3Byb2ZpbGUud2VicCIgZGF0YS1vdC1pZ25vcmUgZGF0YS1jb29raWVjb25zZW50PSJpZ25vcmUiPgoJCQkJPC9hPgoJCQk8L2Rpdj4KCQkJPGRpdiBjbGFzcz0iZGl2Q2FyRm9vdGVyQ29udGFpbmVyIHN0YWNrLWxjIC0tcy05Ij4KCQkJCQk8ZGl2IGNsYXNzPSJjYXJQYXltZW50V3JhcHBlciI+CgkJCTxkaXYgY2xhc3M9ImNvbnRlbnQtc2tlbGV0b24gaHRtbC1ibG9jayIgZGF0YS1ibG9jaz0icGF5bWVudEJsb2NrIiBkYXRhLXR5cGU9ImJsb2NrIiBkYXRhLXNvdXJjZT0ic2VydmVyIiBkYXRhLWNhbGxiYWNrPSJwYXltZW50Q2FsY0Jsb2NrIj4KCQkKCTxpbnB1dCBuYW1lPSJibG9jay1kYXRhIiB0eXBlPSJoaWRkZW4iIHZhbHVlPSd7InN0eWxlaWQiOiI0ODM3OTMiLCJ0aXRsZSI6IktpYSBFVjQgMjAyNiIsImhyZWYiOiJcL25ldWZzXC9LaWEtRVY0LTIwMjYuaHRtbCIsImxpbmtzdHlsZSI6IiIsImxpbmtjbGFzcyI6IiIsImNvbnRhaW5lcmNsYXNzIjoiIiwicHJvbW90ZXh0IjoiQ29kZSByYWJhaXMifSc+Cgk8L2Rpdj4KCTwvZGl2PgoJCQkJCgkJCTwvZGl2PgoJCTwvZGl2PgoJPC9kaXY+CTxkaXYgY2xhc3M9ImRpdkNhclNpbmdsZU91dGVyQm94ICByZWJhdGVCb3JkZXJDb2xvciIgaWQ9ImZieF9lbGVjdHJpY18yIj4KCQk8ZGl2IGNsYXNzPSJyZWJhdGVUYWciPjxzcGFuIGNsYXNzPSJyZWJhdGVUZXh0Ij5yYWJhaXMganVzcXUnw6A8L3NwYW4+PHNwYW4gY2xhc3M9InJlYmF0ZUFtb3VudCI+CTxzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiPjQgMzQ4PC9zcGFuPjwvc3Bhbj48L2Rpdj4KCQk8ZGl2IGNsYXNzPSJkaXZDYXJTaW5nbGVJbm5lckJveCIgaWQ9IiI+CgkJCTxkaXYgY2xhc3M9ImQyYy1mYXZzLXRyaWdnZXItd3JhcHBlciBkMmZhdi0wMSIgZGF0YS1tYWtlPSJLaWEiIGRhdGEtbW9kZWw9IkVWNSIgZGF0YS15ZWFyPSIyMDI3IiBkYXRhLXRyaW09IiIgZGF0YS1jYXJpZD0iIj48L2Rpdj4KCQkJPGRpdiBjbGFzcz0iZGl2Q2FyVGl0bGVDb250YWluZXIiPgoJCQkJPGEgdGl0bGU9IktpYSBFVjUgMjAyNyIgaHJlZj0iP3BhdGg9L25ldWZzL0tpYS1FVjUtMjAyNy5odG1sIiBkYXRhLW1ha2U9IktpYSIgZGF0YS1tb2RlbD0iRVY1IDIwMjciPgoJCQkJCTxoMz4KCQkJCQkJPHNwYW4gY2xhc3M9InNwYW5DYXJNYWtlICI+S2lhPC9zcGFuPjxicj4KCQkJCQkJPHNwYW4gY2xhc3M9Im1vZGVsTmFtZSBzcGFuTW9kZWxOYW1lIj5FVjUgMjAyNzwvc3Bhbj4KCQkJCQk8L2gzPgoJCQkJPC9hPgoJCQkJICAgIDwhLS0gT1BFTiBORVcgQ0FSIFNUQVJUIFBSSUNFICh7X19MSU5FX199KS0tPgogICAgPGRpdiBjbGFzcz0iZGl2TmV3Q2FyU3RhcnRQcmljZSI+CiAgICAgICAgw6AgcGFydGlyIGRlCiAgICAgICAgPHNwYW4gY2xhc3M9IiI+CTxzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiPjQ2IDM0NDwvc3Bhbj48L3NwYW4+CiAgICAgICAgPGkgc3R5bGU9ImNvbG9yOiMwMDA7Zm9udC1zaXplOjIwcHg7IiBjbGFzcz0iY2FyUHJpY2VJbml0aWFsVG9vbFRpcEljb24gZmFsIGZhLWluZm8tY2lyY2xlIGJsYWNrQ29sb3JCb2xkIiBkYXRhLXRvb2x0aXA9IiZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7UERTRjombHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDs0MyA0OTUmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtGcmFpcyBhZG1pbiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzMwMCZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O1RyYW5zcG9ydCAmYW1wOyBQcsOpcGFyYXRpb246Jmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7MiAxNTAmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtGcmFpcyBkJ2FkbWluJmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7NTk5Jmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7VGF4ZSBBQzombHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDsxMDAmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtUb3RhbCZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzQ2IDY0NCZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsiPjwvaT4KICAgIDwvZGl2PgogICAgPCEtLSBDTE9TRSBORVcgQ0FSIFNUQVJUIFBSSUNFICh7X19MSU5FX199KS0tPgoJCQkJCTxkaXYgY2xhc3M9ImRpdkNhckluU3RvY2tMaW5rIiBoaWRkZW4+CgkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGRhdGEtdHlwZT0iaW52ZGF0YSIgZGF0YS1tYWtlPSJLaWEiIGRhdGEtbW9kZWw9IkVWNSIgZGF0YS15ZWFyPSIyMDI3IiBkYXRhLXN0eWxlaWRzPSI0ODMwMTksNDgzMDIwLDQ4MzAyMSw0ODMwMjQsNDgzMDI1LDQ4MzAyMiw0ODMwMjYsNDgzMDIzLDQ4MzAyNyIgZGF0YS1oeWJyaWQ9IjAiPgoJPC9kaXY+CgkJCTwvZGl2PgoJCQk8ZGl2IGNsYXNzPSJkaXZDYXJJbWFnZUNvbnRhaW5lciBmbGV4LWNlbnRlciBhbGlnbi1jZW50ZXIgIj4KCQkJCTxhIHRpdGxlPSJLaWEgRVY1IDIwMjciIGhyZWY9Ij9wYXRoPS9uZXVmcy9LaWEtRVY1LTIwMjcuaHRtbCI+CgkJCQkJPGltZyBhbHQ9IktpYSBFVjUgMjAyNyIgYm9yZGVyPSIwIiBjbGFzcz0ibGF6eWxvYWQgb3B0YW5vbi1jYXRlZ29yeS1DMDAwMSIgZGF0YS1pbWdzcmM9Imh0dHBzOi8vY2FyaW1hZ2VzLmQyY21lZGlhLmNhL25ld2NhcmltYWdlcy9mci9LaWEvRVY1LzIwMjcvNDgzMDE5L1doaXRlL3Byb2ZpbGUud2VicCIgZGF0YS1vdC1pZ25vcmUgZGF0YS1jb29raWVjb25zZW50PSJpZ25vcmUiPgoJCQkJPC9hPgoJCQk8L2Rpdj4KCQkJPGRpdiBjbGFzcz0iZGl2Q2FyRm9vdGVyQ29udGFpbmVyIHN0YWNrLWxjIC0tcy05Ij4KCQkJCQk8ZGl2IGNsYXNzPSJjYXJQYXltZW50V3JhcHBlciI+CgkJCTxkaXYgY2xhc3M9ImNvbnRlbnQtc2tlbGV0b24gaHRtbC1ibG9jayIgZGF0YS1ibG9jaz0icGF5bWVudEJsb2NrIiBkYXRhLXR5cGU9ImJsb2NrIiBkYXRhLXNvdXJjZT0ic2VydmVyIiBkYXRhLWNhbGxiYWNrPSJwYXltZW50Q2FsY0Jsb2NrIj4KCQkKCTxpbnB1dCBuYW1lPSJibG9jay1kYXRhIiB0eXBlPSJoaWRkZW4iIHZhbHVlPSd7InN0eWxlaWQiOiI0ODMwMTkiLCJ0aXRsZSI6IktpYSBFVjUgMjAyNyIsImhyZWYiOiJcL25ldWZzXC9LaWEtRVY1LTIwMjcuaHRtbCIsImxpbmtzdHlsZSI6IiIsImxpbmtjbGFzcyI6IiIsImNvbnRhaW5lcmNsYXNzIjoiIiwicHJvbW90ZXh0IjoiQ29kZSByYWJhaXMifSc+Cgk8L2Rpdj4KCTwvZGl2PgoJCQkJCgkJCTwvZGl2PgoJCTwvZGl2PgoJPC9kaXY+CTxkaXYgY2xhc3M9ImRpdkNhclNpbmdsZU91dGVyQm94ICByZWJhdGVCb3JkZXJDb2xvciIgaWQ9ImZieF9lbGVjdHJpY18zIj4KCQk8ZGl2IGNsYXNzPSJyZWJhdGVUYWciPjxzcGFuIGNsYXNzPSJyZWJhdGVUZXh0Ij5yYWJhaXMganVzcXUnw6A8L3NwYW4+PHNwYW4gY2xhc3M9InJlYmF0ZUFtb3VudCI+CTxzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiPjggMDg3PC9zcGFuPjwvc3Bhbj48L2Rpdj4KCQk8ZGl2IGNsYXNzPSJkaXZDYXJTaW5nbGVJbm5lckJveCIgaWQ9IiI+CgkJCTxkaXYgY2xhc3M9ImQyYy1mYXZzLXRyaWdnZXItd3JhcHBlciBkMmZhdi0wMSIgZGF0YS1tYWtlPSJLaWEiIGRhdGEtbW9kZWw9Ik5pcm8gRVYiIGRhdGEteWVhcj0iMjAyNiIgZGF0YS10cmltPSIiIGRhdGEtY2FyaWQ9IiI+PC9kaXY+CgkJCTxkaXYgY2xhc3M9ImRpdkNhclRpdGxlQ29udGFpbmVyIj4KCQkJCTxhIHRpdGxlPSJLaWEgTmlybyBFViAyMDI2IiBocmVmPSI\/cGF0aD0vbmV1ZnMvS2lhLU5pcm9fRVYtMjAyNi5odG1sIiBkYXRhLW1ha2U9IktpYSIgZGF0YS1tb2RlbD0iTmlybyDDqWxlY3RyaXF1ZSAyMDI2Ij4KCQkJCQk8aDM+CgkJCQkJCTxzcGFuIGNsYXNzPSJzcGFuQ2FyTWFrZSAiPktpYTwvc3Bhbj48YnI+CgkJCQkJCTxzcGFuIGNsYXNzPSJtb2RlbE5hbWUgc3Bhbk1vZGVsTmFtZSI+TmlybyBFViAyMDI2PC9zcGFuPgoJCQkJCTwvaDM+CgkJCQk8L2E+CgkJCQkgICAgPCEtLSBPUEVOIE5FVyBDQVIgU1RBUlQgUFJJQ0UgKHtfX0xJTkVfX30pLS0+CiAgICA8ZGl2IGNsYXNzPSJkaXZOZXdDYXJTdGFydFByaWNlIj4KICAgICAgICDDoCBwYXJ0aXIgZGUKICAgICAgICA8c3BhbiBjbGFzcz0ic3RyaWtlLXByaWNlIj4JPHNwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSI+NDggMjk0PC9zcGFuPjwvc3Bhbj4KICAgICAgICA8aSBzdHlsZT0iY29sb3I6IzAwMDtmb250LXNpemU6MjBweDsiIGNsYXNzPSJjYXJQcmljZUluaXRpYWxUb29sVGlwSWNvbiBmYWwgZmEtaW5mby1jaXJjbGUgYmxhY2tDb2xvckJvbGQiIGRhdGEtdG9vbHRpcD0iJmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtQRFNGOiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzQ1IDU5NSZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O0ZyYWlzIGFkbWluJmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7MzAwJmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7VHJhbnNwb3J0ICZhbXA7IFByw6lwYXJhdGlvbjombHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDsyIDAwMCZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O0ZyYWlzIGQnYWRtaW4mbHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDs1OTkmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtUYXhlIEFDOiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzEwMCZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O1RvdGFsJmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7NDggNTk0Jmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyI+PC9pPgogICAgPC9kaXY+CiAgICA8IS0tIENMT1NFIE5FVyBDQVIgU1RBUlQgUFJJQ0UgKHtfX0xJTkVfX30pLS0+PCEtLSBPUEVOIE5FVyBDQVIgUFJPTU8gUFJJQ0UgKDI3NCktLT48ZGl2IGNsYXNzPSJkaXZOZXdDYXJQcm9tb1ByaWNlIj5lbiByYWJhaXMgw6AgPHNwYW4gY2xhc3M9IiIgc3R5bGU9ImNvbG9yOiAjMDUxNDFmOyI+CTxzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiPjQwIDIwNzwvc3Bhbj48L3NwYW4+PC9kaXY+PCEtLSBDTE9TRSBORVcgQ0FSIFBST01PIFBSSUNFICgyODEpLS0+CgkJCQkJPGRpdiBjbGFzcz0iZGl2Q2FySW5TdG9ja0xpbmsiIGhpZGRlbj4KCQkJPGlucHV0IHR5cGU9ImhpZGRlbiIgZGF0YS10eXBlPSJpbnZkYXRhIiBkYXRhLW1ha2U9IktpYSIgZGF0YS1tb2RlbD0iTmlybyBFViIgZGF0YS15ZWFyPSIyMDI2IiBkYXRhLXN0eWxlaWRzPSI0Nzc3ODMsNDc3Nzg0LDQ3Nzc4NSw0Nzc3ODYiIGRhdGEtaHlicmlkPSIwIj4KCTwvZGl2PgoJCQk8L2Rpdj4KCQkJPGRpdiBjbGFzcz0iZGl2Q2FySW1hZ2VDb250YWluZXIgZmxleC1jZW50ZXIgYWxpZ24tY2VudGVyICI+CgkJCQk8YSB0aXRsZT0iS2lhIE5pcm8gRVYgMjAyNiIgaHJlZj0iP3BhdGg9L25ldWZzL0tpYS1OaXJvX0VWLTIwMjYuaHRtbCI+CgkJCQkJPGltZyBhbHQ9IktpYSBOaXJvIEVWIDIwMjYiIGJvcmRlcj0iMCIgY2xhc3M9Imxhenlsb2FkIG9wdGFub24tY2F0ZWdvcnktQzAwMDEiIGRhdGEtaW1nc3JjPSJodHRwczovL2NhcmltYWdlcy5kMmNtZWRpYS5jYS9uZXdjYXJpbWFnZXMvZnIvS2lhL05pcm9fRVYvMjAyNi80Nzc3ODMvV2hpdGUvcHJvZmlsZS53ZWJwIiBkYXRhLW90LWlnbm9yZSBkYXRhLWNvb2tpZWNvbnNlbnQ9Imlnbm9yZSI+CgkJCQk8L2E+CgkJCTwvZGl2PgoJCQk8ZGl2IGNsYXNzPSJkaXZDYXJGb290ZXJDb250YWluZXIgc3RhY2stbGMgLS1zLTkiPgoJCQkJCTxkaXYgY2xhc3M9ImNhclBheW1lbnRXcmFwcGVyIj4KCQkJPGRpdiBjbGFzcz0iY29udGVudC1za2VsZXRvbiBodG1sLWJsb2NrIiBkYXRhLWJsb2NrPSJwYXltZW50QmxvY2siIGRhdGEtdHlwZT0iYmxvY2siIGRhdGEtc291cmNlPSJzZXJ2ZXIiIGRhdGEtY2FsbGJhY2s9InBheW1lbnRDYWxjQmxvY2siPgoJCQoJPGlucHV0IG5hbWU9ImJsb2NrLWRhdGEiIHR5cGU9ImhpZGRlbiIgdmFsdWU9J3sic3R5bGVpZCI6IjQ3Nzc4MyIsInRpdGxlIjoiS2lhIE5pcm8gRVYgMjAyNiIsImhyZWYiOiJcL25ldWZzXC9LaWEtTmlyb19FVi0yMDI2Lmh0bWwiLCJsaW5rc3R5bGUiOiIiLCJsaW5rY2xhc3MiOiIiLCJjb250YWluZXJjbGFzcyI6IiIsInByb21vdGV4dCI6IkNvZGUgcmFiYWlzIn0nPgoJPC9kaXY+Cgk8L2Rpdj4KCQkJCQoJCQk8L2Rpdj4KCQk8L2Rpdj4KCTwvZGl2Pgk8ZGl2IGNsYXNzPSJkaXZDYXJTaW5nbGVPdXRlckJveCAgcmViYXRlQm9yZGVyQ29sb3IiIGlkPSJmYnhfZWxlY3RyaWNfNCI+CgkJPGRpdiBjbGFzcz0icmViYXRlVGFnIj48c3BhbiBjbGFzcz0icmViYXRlVGV4dCI+cmFiYWlzIGp1c3F1J8OgPC9zcGFuPjxzcGFuIGNsYXNzPSJyZWJhdGVBbW91bnQiPgk8c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIj45IDA4Nzwvc3Bhbj48L3NwYW4+PC9kaXY+CgkJPGRpdiBjbGFzcz0iZGl2Q2FyU2luZ2xlSW5uZXJCb3giIGlkPSIiPgoJCQk8ZGl2IGNsYXNzPSJkMmMtZmF2cy10cmlnZ2VyLXdyYXBwZXIgZDJmYXYtMDEiIGRhdGEtbWFrZT0iS2lhIiBkYXRhLW1vZGVsPSJFVjYiIGRhdGEteWVhcj0iMjAyNSIgZGF0YS10cmltPSIiIGRhdGEtY2FyaWQ9IiI+PC9kaXY+CgkJCTxkaXYgY2xhc3M9ImRpdkNhclRpdGxlQ29udGFpbmVyIj4KCQkJCTxhIHRpdGxlPSJLaWEgRVY2IDIwMjUiIGhyZWY9Ij9wYXRoPS9uZXVmcy9LaWEtRVY2LTIwMjUuaHRtbCIgZGF0YS1tYWtlPSJLaWEiIGRhdGEtbW9kZWw9IkVWNiAyMDI1Ij4KCQkJCQk8aDM+CgkJCQkJCTxzcGFuIGNsYXNzPSJzcGFuQ2FyTWFrZSAiPktpYTwvc3Bhbj48YnI+CgkJCQkJCTxzcGFuIGNsYXNzPSJtb2RlbE5hbWUgc3Bhbk1vZGVsTmFtZSI+RVY2IDIwMjU8L3NwYW4+CgkJCQkJPC9oMz4KCQkJCTwvYT4KCQkJCSAgICA8IS0tIE9QRU4gTkVXIENBUiBTVEFSVCBQUklDRSAoe19fTElORV9ffSktLT4KICAgIDxkaXYgY2xhc3M9ImRpdk5ld0NhclN0YXJ0UHJpY2UiPgogICAgICAgIMOgIHBhcnRpciBkZQogICAgICAgIDxzcGFuIGNsYXNzPSJzdHJpa2UtcHJpY2UiPgk8c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIj41MSA4NDQ8L3NwYW4+PC9zcGFuPgogICAgICAgIDxpIHN0eWxlPSJjb2xvcjojMDAwO2ZvbnQtc2l6ZToyMHB4OyIgY2xhc3M9ImNhclByaWNlSW5pdGlhbFRvb2xUaXBJY29uIGZhbCBmYS1pbmZvLWNpcmNsZSBibGFja0NvbG9yQm9sZCIgZGF0YS10b29sdGlwPSImbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O1BEU0Y6Jmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7NDggOTk1Jmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7RnJhaXMgYWRtaW4mbHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDszMDAmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtUcmFuc3BvcnQgJmFtcDsgUHLDqXBhcmF0aW9uOiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzIgMTUwJmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7RnJhaXMgZCdhZG1pbiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzU5OSZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O1RheGUgQUM6Jmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7MTAwJmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7VG90YWwmbHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDs1MiAxNDQmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Ij48L2k+CiAgICA8L2Rpdj4KICAgIDwhLS0gQ0xPU0UgTkVXIENBUiBTVEFSVCBQUklDRSAoe19fTElORV9ffSktLT48IS0tIE9QRU4gTkVXIENBUiBQUk9NTyBQUklDRSAoMjc0KS0tPjxkaXYgY2xhc3M9ImRpdk5ld0NhclByb21vUHJpY2UiPmVuIHJhYmFpcyDDoCA8c3BhbiBjbGFzcz0iIiBzdHlsZT0iY29sb3I6ICMwNTE0MWY7Ij4JPHNwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSI+NDIgNzU3PC9zcGFuPjwvc3Bhbj48L2Rpdj48IS0tIENMT1NFIE5FVyBDQVIgUFJPTU8gUFJJQ0UgKDI4MSktLT4KCQkJCQk8ZGl2IGNsYXNzPSJkaXZDYXJJblN0b2NrTGluayIgaGlkZGVuPgoJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBkYXRhLXR5cGU9ImludmRhdGEiIGRhdGEtbWFrZT0iS2lhIiBkYXRhLW1vZGVsPSJFVjYiIGRhdGEteWVhcj0iMjAyNSIgZGF0YS1zdHlsZWlkcz0iNDczMTY2LDQ3MzE2Miw0NzMxNjMsNDczMTY3LDQ3MzE2NCw0NzMxNjUiIGRhdGEtaHlicmlkPSIwIj4KCTwvZGl2PgoJCQk8L2Rpdj4KCQkJPGRpdiBjbGFzcz0iZGl2Q2FySW1hZ2VDb250YWluZXIgZmxleC1jZW50ZXIgYWxpZ24tY2VudGVyICI+CgkJCQk8YSB0aXRsZT0iS2lhIEVWNiAyMDI1IiBocmVmPSI\/cGF0aD0vbmV1ZnMvS2lhLUVWNi0yMDI1Lmh0bWwiPgoJCQkJCTxpbWcgYWx0PSJLaWEgRVY2IDIwMjUiIGJvcmRlcj0iMCIgY2xhc3M9Imxhenlsb2FkIG9wdGFub24tY2F0ZWdvcnktQzAwMDEiIGRhdGEtaW1nc3JjPSJodHRwczovL2NhcmltYWdlcy5kMmNtZWRpYS5jYS9uZXdjYXJpbWFnZXMvZnIvS2lhL0VWNi8yMDI1LzQ3MzE2Ni9XaGl0ZS9wcm9maWxlLndlYnAiIGRhdGEtb3QtaWdub3JlIGRhdGEtY29va2llY29uc2VudD0iaWdub3JlIj4KCQkJCTwvYT4KCQkJPC9kaXY+CgkJCTxkaXYgY2xhc3M9ImRpdkNhckZvb3RlckNvbnRhaW5lciBzdGFjay1sYyAtLXMtOSI+CgkJCQkJPGRpdiBjbGFzcz0iY2FyUGF5bWVudFdyYXBwZXIiPgoJCQk8ZGl2IGNsYXNzPSJjb250ZW50LXNrZWxldG9uIGh0bWwtYmxvY2siIGRhdGEtYmxvY2s9InBheW1lbnRCbG9jayIgZGF0YS10eXBlPSJibG9jayIgZGF0YS1zb3VyY2U9InNlcnZlciIgZGF0YS1jYWxsYmFjaz0icGF5bWVudENhbGNCbG9jayI+CgkJCgk8aW5wdXQgbmFtZT0iYmxvY2stZGF0YSIgdHlwZT0iaGlkZGVuIiB2YWx1ZT0neyJzdHlsZWlkIjoiNDczMTY2IiwidGl0bGUiOiJLaWEgRVY2IDIwMjUiLCJocmVmIjoiXC9uZXVmc1wvS2lhLUVWNi0yMDI1Lmh0bWwiLCJsaW5rc3R5bGUiOiIiLCJsaW5rY2xhc3MiOiIiLCJjb250YWluZXJjbGFzcyI6IiIsInByb21vdGV4dCI6IkNvZGUgcmFiYWlzIn0nPgoJPC9kaXY+Cgk8L2Rpdj4KCQkJCQoJCQk8L2Rpdj4KCQk8L2Rpdj4KCTwvZGl2Pgk8ZGl2IGNsYXNzPSJkaXZDYXJTaW5nbGVPdXRlckJveCAgcmViYXRlQm9yZGVyQ29sb3IiIGlkPSJmYnhfZWxlY3RyaWNfNSI+CgkJPGRpdiBjbGFzcz0icmViYXRlVGFnIj48c3BhbiBjbGFzcz0icmViYXRlVGV4dCI+cmFiYWlzIGp1c3F1J8OgPC9zcGFuPjxzcGFuIGNsYXNzPSJyZWJhdGVBbW91bnQiPgk8c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIj4xIDczOTwvc3Bhbj48L3NwYW4+PC9kaXY+CgkJPGRpdiBjbGFzcz0iZGl2Q2FyU2luZ2xlSW5uZXJCb3giIGlkPSIiPgoJCQk8ZGl2IGNsYXNzPSJkMmMtZmF2cy10cmlnZ2VyLXdyYXBwZXIgZDJmYXYtMDEiIGRhdGEtbWFrZT0iS2lhIiBkYXRhLW1vZGVsPSJFVjkiIGRhdGEteWVhcj0iMjAyNiIgZGF0YS10cmltPSIiIGRhdGEtY2FyaWQ9IiI+PC9kaXY+CgkJCTxkaXYgY2xhc3M9ImRpdkNhclRpdGxlQ29udGFpbmVyIj4KCQkJCTxhIHRpdGxlPSJLaWEgRVY5IDIwMjYiIGhyZWY9Ij9wYXRoPS9uZXVmcy9LaWEtRVY5LTIwMjYuaHRtbCIgZGF0YS1tYWtlPSJLaWEiIGRhdGEtbW9kZWw9IkVWOSAyMDI2Ij4KCQkJCQk8aDM+CgkJCQkJCTxzcGFuIGNsYXNzPSJzcGFuQ2FyTWFrZSAiPktpYTwvc3Bhbj48YnI+CgkJCQkJCTxzcGFuIGNsYXNzPSJtb2RlbE5hbWUgc3Bhbk1vZGVsTmFtZSI+RVY5IDIwMjY8L3NwYW4+CgkJCQkJPC9oMz4KCQkJCTwvYT4KCQkJCSAgICA8IS0tIE9QRU4gTkVXIENBUiBTVEFSVCBQUklDRSAoe19fTElORV9ffSktLT4KICAgIDxkaXYgY2xhc3M9ImRpdk5ld0NhclN0YXJ0UHJpY2UiPgogICAgICAgIMOgIHBhcnRpciBkZQogICAgICAgIDxzcGFuIGNsYXNzPSJzdHJpa2UtcHJpY2UiPgk8c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIj42MiA4NDQ8L3NwYW4+PC9zcGFuPgogICAgICAgIDxpIHN0eWxlPSJjb2xvcjojMDAwO2ZvbnQtc2l6ZToyMHB4OyIgY2xhc3M9ImNhclByaWNlSW5pdGlhbFRvb2xUaXBJY29uIGZhbCBmYS1pbmZvLWNpcmNsZSBibGFja0NvbG9yQm9sZCIgZGF0YS10b29sdGlwPSImbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O1BEU0Y6Jmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7NTkgOTk1Jmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7RnJhaXMgYWRtaW4mbHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDszMDAmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtUcmFuc3BvcnQgJmFtcDsgUHLDqXBhcmF0aW9uOiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzIgMTUwJmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7RnJhaXMgZCdhZG1pbiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzU5OSZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O1RheGUgQUM6Jmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7MTAwJmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7VG90YWwmbHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDs2MyAxNDQmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Ij48L2k+CiAgICA8L2Rpdj4KICAgIDwhLS0gQ0xPU0UgTkVXIENBUiBTVEFSVCBQUklDRSAoe19fTElORV9ffSktLT48IS0tIE9QRU4gTkVXIENBUiBQUk9NTyBQUklDRSAoMjc0KS0tPjxkaXYgY2xhc3M9ImRpdk5ld0NhclByb21vUHJpY2UiPmVuIHJhYmFpcyDDoCA8c3BhbiBjbGFzcz0iIiBzdHlsZT0iY29sb3I6ICMwNTE0MWY7Ij4JPHNwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSI+NjEgMTA1PC9zcGFuPjwvc3Bhbj48L2Rpdj48IS0tIENMT1NFIE5FVyBDQVIgUFJPTU8gUFJJQ0UgKDI4MSktLT4KCQkJCQk8ZGl2IGNsYXNzPSJkaXZDYXJJblN0b2NrTGluayIgaGlkZGVuPgoJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBkYXRhLXR5cGU9ImludmRhdGEiIGRhdGEtbWFrZT0iS2lhIiBkYXRhLW1vZGVsPSJFVjkiIGRhdGEteWVhcj0iMjAyNiIgZGF0YS1zdHlsZWlkcz0iNDcxMjY3LDQ3MTI2OCw0NzEyNjksNDcxMjcwLDQ3MTI3MSw0NzEyNzIsNDc2OTcwIiBkYXRhLWh5YnJpZD0iMCI+Cgk8L2Rpdj4KCQkJPC9kaXY+CgkJCTxkaXYgY2xhc3M9ImRpdkNhckltYWdlQ29udGFpbmVyIGZsZXgtY2VudGVyIGFsaWduLWNlbnRlciAiPgoJCQkJPGEgdGl0bGU9IktpYSBFVjkgMjAyNiIgaHJlZj0iP3BhdGg9L25ldWZzL0tpYS1FVjktMjAyNi5odG1sIj4KCQkJCQk8aW1nIGFsdD0iS2lhIEVWOSAyMDI2IiBib3JkZXI9IjAiIGNsYXNzPSJsYXp5bG9hZCBvcHRhbm9uLWNhdGVnb3J5LUMwMDAxIiBkYXRhLWltZ3NyYz0iaHR0cHM6Ly9jYXJpbWFnZXMuZDJjbWVkaWEuY2EvbmV3Y2FyaW1hZ2VzL2ZyL0tpYS9FVjkvMjAyNi80NzEyNjcvV2hpdGUvcHJvZmlsZS53ZWJwIiBkYXRhLW90LWlnbm9yZSBkYXRhLWNvb2tpZWNvbnNlbnQ9Imlnbm9yZSI+CgkJCQk8L2E+CgkJCTwvZGl2PgoJCQk8ZGl2IGNsYXNzPSJkaXZDYXJGb290ZXJDb250YWluZXIgc3RhY2stbGMgLS1zLTkiPgoJCQkJCTxkaXYgY2xhc3M9ImNhclBheW1lbnRXcmFwcGVyIj4KCQkJPGRpdiBjbGFzcz0iY29udGVudC1za2VsZXRvbiBodG1sLWJsb2NrIiBkYXRhLWJsb2NrPSJwYXltZW50QmxvY2siIGRhdGEtdHlwZT0iYmxvY2siIGRhdGEtc291cmNlPSJzZXJ2ZXIiIGRhdGEtY2FsbGJhY2s9InBheW1lbnRDYWxjQmxvY2siPgoJCQoJPGlucHV0IG5hbWU9ImJsb2NrLWRhdGEiIHR5cGU9ImhpZGRlbiIgdmFsdWU9J3sic3R5bGVpZCI6IjQ3MTI2NyIsInRpdGxlIjoiS2lhIEVWOSAyMDI2IiwiaHJlZiI6IlwvbmV1ZnNcL0tpYS1FVjktMjAyNi5odG1sIiwibGlua3N0eWxlIjoiIiwibGlua2NsYXNzIjoiIiwiY29udGFpbmVyY2xhc3MiOiIiLCJwcm9tb3RleHQiOiJDb2RlIHJhYmFpcyJ9Jz4KCTwvZGl2PgoJPC9kaXY+CgkJCQkKCQkJPC9kaXY+CgkJPC9kaXY+Cgk8L2Rpdj4JPGRpdiBjbGFzcz0iZGl2Q2FyU2luZ2xlT3V0ZXJCb3ggIHJlYmF0ZUJvcmRlckNvbG9yIiBpZD0iZmJ4X2VsZWN0cmljXzYiPgoJCTxkaXYgY2xhc3M9InJlYmF0ZVRhZyI+PHNwYW4gY2xhc3M9InJlYmF0ZVRleHQiPnJhYmFpcyBqdXNxdSfDoDwvc3Bhbj48c3BhbiBjbGFzcz0icmViYXRlQW1vdW50Ij4JPHNwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSI+MSA3Mzk8L3NwYW4+PC9zcGFuPjwvZGl2PgoJCTxkaXYgY2xhc3M9ImRpdkNhclNpbmdsZUlubmVyQm94IiBpZD0iIj4KCQkJPGRpdiBjbGFzcz0iZDJjLWZhdnMtdHJpZ2dlci13cmFwcGVyIGQyZmF2LTAxIiBkYXRhLW1ha2U9IktpYSIgZGF0YS1tb2RlbD0iRVY5IiBkYXRhLXllYXI9IjIwMjUiIGRhdGEtdHJpbT0iIiBkYXRhLWNhcmlkPSIiPjwvZGl2PgoJCQk8ZGl2IGNsYXNzPSJkaXZDYXJUaXRsZUNvbnRhaW5lciI+CgkJCQk8YSB0aXRsZT0iS2lhIEVWOSAyMDI1IiBocmVmPSI\/cGF0aD0vbmV1ZnMvS2lhLUVWOS0yMDI1Lmh0bWwiIGRhdGEtbWFrZT0iS2lhIiBkYXRhLW1vZGVsPSJFVjkgMjAyNSI+CgkJCQkJPGgzPgoJCQkJCQk8c3BhbiBjbGFzcz0ic3BhbkNhck1ha2UgIj5LaWE8L3NwYW4+PGJyPgoJCQkJCQk8c3BhbiBjbGFzcz0ibW9kZWxOYW1lIHNwYW5Nb2RlbE5hbWUiPkVWOSAyMDI1PC9zcGFuPgoJCQkJCTwvaDM+CgkJCQk8L2E+CgkJCQkgICAgPCEtLSBPUEVOIE5FVyBDQVIgU1RBUlQgUFJJQ0UgKHtfX0xJTkVfX30pLS0+CiAgICA8ZGl2IGNsYXNzPSJkaXZOZXdDYXJTdGFydFByaWNlIj4KICAgICAgICDDoCBwYXJ0aXIgZGUKICAgICAgICA8c3BhbiBjbGFzcz0ic3RyaWtlLXByaWNlIj4JPHNwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSI+NjIgODQ0PC9zcGFuPjwvc3Bhbj4KICAgICAgICA8aSBzdHlsZT0iY29sb3I6IzAwMDtmb250LXNpemU6MjBweDsiIGNsYXNzPSJjYXJQcmljZUluaXRpYWxUb29sVGlwSWNvbiBmYWwgZmEtaW5mby1jaXJjbGUgYmxhY2tDb2xvckJvbGQiIGRhdGEtdG9vbHRpcD0iJmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtQRFNGOiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzU5IDk5NSZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O0ZyYWlzIGFkbWluJmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7MzAwJmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7VHJhbnNwb3J0ICZhbXA7IFByw6lwYXJhdGlvbjombHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDsyIDE1MCZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O0ZyYWlzIGQnYWRtaW4mbHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDs1OTkmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtUYXhlIEFDOiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzEwMCZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O1RvdGFsJmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7NjMgMTQ0Jmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyI+PC9pPgogICAgPC9kaXY+CiAgICA8IS0tIENMT1NFIE5FVyBDQVIgU1RBUlQgUFJJQ0UgKHtfX0xJTkVfX30pLS0+PCEtLSBPUEVOIE5FVyBDQVIgUFJPTU8gUFJJQ0UgKDI3NCktLT48ZGl2IGNsYXNzPSJkaXZOZXdDYXJQcm9tb1ByaWNlIj5lbiByYWJhaXMgw6AgPHNwYW4gY2xhc3M9IiIgc3R5bGU9ImNvbG9yOiAjMDUxNDFmOyI+CTxzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiPjYxIDEwNTwvc3Bhbj48L3NwYW4+PC9kaXY+PCEtLSBDTE9TRSBORVcgQ0FSIFBST01PIFBSSUNFICgyODEpLS0+CgkJCQkJPGRpdiBjbGFzcz0iZGl2Q2FySW5TdG9ja0xpbmsiIGhpZGRlbj4KCQkJPGlucHV0IHR5cGU9ImhpZGRlbiIgZGF0YS10eXBlPSJpbnZkYXRhIiBkYXRhLW1ha2U9IktpYSIgZGF0YS1tb2RlbD0iRVY5IiBkYXRhLXllYXI9IjIwMjUiIGRhdGEtc3R5bGVpZHM9IjQ2MjIwMiw0NjIyMDMsNDYyMjA0LDQ2MjIwNyw0NjIyMDUsNDYyMjA2IiBkYXRhLWh5YnJpZD0iMCI+Cgk8L2Rpdj4KCQkJPC9kaXY+CgkJCTxkaXYgY2xhc3M9ImRpdkNhckltYWdlQ29udGFpbmVyIGZsZXgtY2VudGVyIGFsaWduLWNlbnRlciAiPgoJCQkJPGEgdGl0bGU9IktpYSBFVjkgMjAyNSIgaHJlZj0iP3BhdGg9L25ldWZzL0tpYS1FVjktMjAyNS5odG1sIj4KCQkJCQk8aW1nIGFsdD0iS2lhIEVWOSAyMDI1IiBib3JkZXI9IjAiIGNsYXNzPSJsYXp5bG9hZCBvcHRhbm9uLWNhdGVnb3J5LUMwMDAxIiBkYXRhLWltZ3NyYz0iaHR0cHM6Ly9jYXJpbWFnZXMuZDJjbWVkaWEuY2EvbmV3Y2FyaW1hZ2VzL2ZyL0tpYS9FVjkvMjAyNS80NjIyMDIvV2hpdGUvcHJvZmlsZS53ZWJwIiBkYXRhLW90LWlnbm9yZSBkYXRhLWNvb2tpZWNvbnNlbnQ9Imlnbm9yZSI+CgkJCQk8L2E+CgkJCTwvZGl2PgoJCQk8ZGl2IGNsYXNzPSJkaXZDYXJGb290ZXJDb250YWluZXIgc3RhY2stbGMgLS1zLTkiPgoJCQkJCTxkaXYgY2xhc3M9ImNhclBheW1lbnRXcmFwcGVyIj4KCQkJPGRpdiBjbGFzcz0iY29udGVudC1za2VsZXRvbiBodG1sLWJsb2NrIiBkYXRhLWJsb2NrPSJwYXltZW50QmxvY2siIGRhdGEtdHlwZT0iYmxvY2siIGRhdGEtc291cmNlPSJzZXJ2ZXIiIGRhdGEtY2FsbGJhY2s9InBheW1lbnRDYWxjQmxvY2siPgoJCQoJPGlucHV0IG5hbWU9ImJsb2NrLWRhdGEiIHR5cGU9ImhpZGRlbiIgdmFsdWU9J3sic3R5bGVpZCI6IjQ2MjIwMiIsInRpdGxlIjoiS2lhIEVWOSAyMDI1IiwiaHJlZiI6IlwvbmV1ZnNcL0tpYS1FVjktMjAyNS5odG1sIiwibGlua3N0eWxlIjoiIiwibGlua2NsYXNzIjoiIiwiY29udGFpbmVyY2xhc3MiOiIiLCJwcm9tb3RleHQiOiJDb2RlIHJhYmFpcyJ9Jz4KCTwvZGl2PgoJPC9kaXY+CgkJCQkKCQkJPC9kaXY+CgkJPC9kaXY+Cgk8L2Rpdj48L2Rpdj48L2Rpdj48IS0tIENMT1NFIENBVEVHT1JZQk9YV1JBUFBFUiAoMjA2MCktLT48L2Rpdj48IS0tIENMT1NFIENBVEVHT1JJRVNCT1hXUkFQUEVSICgyMDY2KS0tPjxpbnB1dCB0eXBlPSJoaWRkZW4iIHZhbHVlPSJLaWEiIGlkPSJpc0JyYW5kUGFnZSI+CiAgICAgICAgCTwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iZGl2U3BhbiBkaXZTcGFuMTIgZGl2RGlzY2xhaW1lckJsb2NrIj4KICAgICAgICA8ZGl2IGNsYXNzPSJkaXZEaXNjbGFpbWVyQmxvY2tDb250ZW50Ij4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iZGl2RGlzY2xhaW1lckJsb2NrVGl0bGUiPgogICAgICAgICAgICAgICAgQ2xhdXNlIGRlIG5vbi1yZXNwb25zYWJpbGl0w6kKICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRpdkRpc2NsYWltZXJCbG9ja1RleHQiPgogICAgICAgICAgICAgICAgTGUgbW9udGFudCBpbmRpcXXDqSByZXByw6lzZW50ZSB1bmUgZXN0aW1hdGlvbiBkdSBtb250YW50IHF1ZSB2b3VzIHBvdXZleiB2b3VzIGF0dGVuZHJlIMOgIHBheWVyIGVuIGRvbGxhcnMgY2FuYWRpZW5zLiBMZXMgdGF4ZXMgc29udCBleGNsdWVzIChzYXVmIGluZGljYXRpb24gY29udHJhaXJlKS4gTGVzIHBob3RvcyByZXByw6lzZW50ZW50IGxlIG1vZMOobGUgb2ZmZXJ0IG1haXMgcGV1dmVudCB2YXJpZXIgbMOpZ8OocmVtZW50IGVuIGNvdWxldXIsIG9wdGlvbnMsIG91IGNhcmFjdMOpcmlzdGlxdWVzLiBCaWVuIHF1ZSBub3VzIG5vdXMgZWZmb3JjaW9ucyBkZSBnYXJhbnRpciBsJ2V4YWN0aXR1ZGUgZGVzIGluZm9ybWF0aW9ucyBzdXIgY2Ugc2l0ZSBXZWIsIG5vdXMgdm91cyByZWNvbW1hbmRvbnMgZGUgbm91cyBjb250YWN0ZXIgZGlyZWN0ZW1lbnQgcG91ciB2w6lyaWZpZXIgbGVzIGTDqXRhaWxzIGV0IG9idGVuaXIgZGVzIGluZm9ybWF0aW9ucyBzdXBwbMOpbWVudGFpcmVzIHN1ciBsZSB2w6loaWN1bGUsIHkgY29tcHJpcyBsYSBjb25maXJtYXRpb24gZGVzIHByaXgsIGRlcyBjb3VsZXVycywgZGVzIGZpbml0aW9ucywgZGVzIG9wdGlvbnMgZXQgYXV0cmVzIHNww6ljaWZpY2F0aW9ucy4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCQkJPC9kaXY+CgogICAgICAgCQoKCTxkaXYgY2xhc3M9InVpLWxvYWRlci1iYWNrZ3JvdW5kIj48aW1nIGNsYXNzPSJ1aS1sb2FkZXItYmFja2dyb3VuZC1naWYgbGF6eWxvYWQgb3B0YW5vbi1jYXRlZ29yeS1DMDAwMSIgZGF0YS1pbWdzcmM9Imh0dHBzOi8vYWxiaWtpYS5jb20vL2ltYWdlcy9hamF4LWxvYWRlcjIuZ2lmIiBhbHQ9ImFqYXggbG9hZGVyMiIgZGF0YS1vdC1pZ25vcmUgZGF0YS1jb29raWVjb25zZW50PSJpZ25vcmUiPjwvZGl2PgoKCQk8ZGl2IGlkPSJhc1BvcFVwIiBjbGFzcz0icmV2ZWFsLW1vZGFsIHNtYWxsIiBzdHlsZT0iYm94LXNoYWRvdzogbm9uZTtiYWNrZ3JvdW5kOiNmZmZmZmY7Y29sb3I6IzAwMDt3aWR0aDo4NSU7bWF4LXdpZHRoOjYwMHB4O3BhZGRpbmc6MjBweDsiPgoJCTxkaXYgY2xhc3M9InRleHQtdXBwZXJjYXNlIiBzdHlsZT0iaGVpZ2h0OjQwcHg7dGV4dC1hbGlnbjpjZW50ZXI7Zm9udC1zaXplOiAxLjc1cmVtO21hcmdpbi1ib3R0b206MTBweDsiPgoJCQlTVlAgY29uZmlybWVyCgkJPC9kaXY+CgoJCTxmb3JtIG1ldGhvZD0icG9zdCI+CgkJCQk8c3RhY2stbGM+CgkJPGJveC1sYyBjbGFzcz0idmlUZXh0Ij4KCQkJPGRpdiBjbGFzcz0icG9wdXAtcG9saWN5Ij5BZmluIGRlIHJlc3BlY3RlciBsYSBMb2kgQ2FuYWRpZW5uZSBBbnRpLVBvdXJyaWVsIGV0IGxhIExvaSAyNSBkdSBRdcOpYmVjLCBub3VzIHZvdXMgcHJpb25zIGRlIGJpZW4gdm91bG9pciBjb25maXJtZXIgc2kgdm91cyBzb3VoYWl0ZXogcmVjZXZvaXIgbm9zIGNvbW11bmljYXRpb25zIGZ1dHVyZXMgY29uY2VybmFudCBsZXMgcmFiYWlzLCBsZXMgcHJvbW90aW9ucywgbGVzIG9mZnJlcyBldCBsZXMgdmVudGVzIHByaXbDqWVzLiBWZXVpbGxleiBub3RlciBxdWUgdm91cyBwb3V2ZXogbW9kaWZpZXIgb3UgcmV0aXJlciBjZSBjb25zZW50ZW1lbnQgw6AgdG91dCBtb21lbnQuIEVuIGNsaXF1YW50IHN1ciBPdWksIHZvdXMgY29uZmlybWV6IGF2b2lyIGx1IGV0IGFjY2VwdMOpIG5vdHJlIDxhIHRhcmdldD0iX2JsYW5rIiBocmVmPSI\/cGF0aD0vcG9saXRpcXVlLWRlLWNvbmZpZGVudGlhbGl0ZS5odG1sIj5wb2xpdGlxdWUgZGUgY29uZmlkZW50aWFsaXTDqTwvYT4uPC9kaXY+CgkJPC9ib3gtbGM+CgkJPGJveC1sYyBjbGFzcz0iZGVhbGVyQ29uc2VudCI+CgkJCTxkaXYgY2xhc3M9ImZsZXgtYmV0d2VlbiI+CgkJCQk8ZGl2IGNsYXNzPSItdzUwcCI+QUxCSSBLaWEgTWFzY291Y2hlPC9kaXY+CgkJCQk8ZGl2IGNsYXNzPSItdzUwcCI+CgkJCQkJPGxhYmVsPgoJCQkJCQk8aW5wdXQgdHlwZT0icmFkaW8iIHZhbHVlPSIxIiBuYW1lPSJjb25zZW50IiBjbGFzcz0icmVxUmFkaW8iPgoJCQkJCQlPdWkKCQkJCQk8L2xhYmVsPgoJCQkJCTxsYWJlbD4KCQkJCQkJPGlucHV0IHR5cGU9InJhZGlvIiB2YWx1ZT0iLTEiIG5hbWU9ImNvbnNlbnQiIGNsYXNzPSJyZXFSYWRpbyI+CgkJCQkJCU5vbgoJCQkJCTwvbGFiZWw+CgkJCQk8L2Rpdj4KCQkJPC9kaXY+CgkJCTxkaXYgY2xhc3M9ImNvbnNlbnQgZGlzY2xhaW1lciIgc3R5bGU9IndpZHRoOiA1MCU7IiBkYXRhLXRvb2x0aXA9J0VuIGZvdXJuaXNzYW50IG1lcyBpbmZvcm1hdGlvbnMgcGVyc29ubmVsbGVzLCBqZSBjb25zZW5zIMOgIGxldXIgdXRpbGlzYXRpb24gZXQgbGV1ciBkaXZ1bGdhdGlvbiBjb25mb3Jtw6ltZW50IMOgIGxhIFBvbGl0aXF1ZSBkZSBjb25maWRlbnRpYWxpdMOpIGRlIEFMQkkgS2lhIE1hc2NvdWNoZS4gSmUgY29uZmlybWUgYXZvaXIgbHUgbGEgJmx0O2EgaHJlZj0iL3BvbGl0aXF1ZS1kZS1jb25maWRlbnRpYWxpdGUuaHRtbCImZ3Q7UG9saXRpcXVlIGRlIGNvbmZpZGVudGlhbGl0w6kmbHQ7L2EmZ3Q7LiBKZSBjb21wcmVuZHMgcXVlIEFMQkkgS2lhIE1hc2NvdWNoZSBwZXV0IHBhcnRhZ2VyIG1lcyBpbmZvcm1hdGlvbnMgcGVyc29ubmVsbGVzIGF2ZWMgZGVzIHRpZXJzIGRhbnMgbGUgYnV0IGRlIGfDqXJlciBtYSByZWxhdGlvbiBhdmVjIGV1eCwgdGVscyBxdWUgbm90cmUgZm91cm5pc3NldXIgZGUgZ2VzdGlvbiBkZSBsYSByZWxhdGlvbiBjbGllbnQgKENSTSkuIEplIGNvbXByZW5kcyBxdWUgY2VydGFpbnMgZGUgY2VzIGZvdXJuaXNzZXVycyBwZXV2ZW50IHN0b2NrZXIgbWVzIGluZm9ybWF0aW9ucyBwZXJzb25uZWxsZXMgc3VyIGRlcyBzZXJ2ZXVycyBldCBkZXMgYmFzZXMgZGUgZG9ubsOpZXMgc2l0dcOpcyBlbiBkZWhvcnMgZGUgbWEgcHJvdmluY2UuIEplIGNvbXByZW5kcyDDqWdhbGVtZW50IHF1ZSBqZSBwZXV4IHJldGlyZXIgbW9uIGNvbnNlbnRlbWVudCBldCBtZSBkw6lzYWJvbm5lciBkZSBsYSByw6ljZXB0aW9uIGRlIGNvbW11bmljYXRpb25zIGZ1dHVyZXMgZGUgQUxCSSBLaWEgTWFzY291Y2hlIMOgIHRvdXQgbW9tZW50LiBMZSBjb25zZW50ZW1lbnQgw6AgbGEgcsOpY2VwdGlvbiBkZSBjb21tdW5pY2F0aW9ucyDDqWxlY3Ryb25pcXVlcyBlc3Qgc29sbGljaXTDqSBwYXIgQUxCSSBLaWEgTWFzY291Y2hlLic+Q2xhdXNlIGRlIG5vbi1yZXNwb25zYWJpbGl0w6k8L2Rpdj4KCQk8L2JveC1sYz4KCgkJCgoJPC9zdGFjay1sYz4KCTxkaXYgY2xhc3M9Ii1wdDEwIiBzdHlsZT0iZm9udC1zaXplOiAxMHB4O3RleHQtYWxpZ246IGNlbnRlcjtjb2xvcjogdmFyKC0tZGFyay1ncmF5KTsiPklNUE9SVEFOVDogVm91cyBwb3V2ZXogZmFjaWxlbWVudCByZXRpcmVyIHZvdHJlIGNvbnNlbnRlbWVudCBlbiB0b3V0IHRlbXBzITwvZGl2PgoKCQkJPGRpdiBjbGFzcz0iZmxleC1ib3ggZmxleC1ldmVubHkiIHN0eWxlPSJtYXJnaW4tdG9wOiAzNXB4OyI+CgkJCQk8aW5wdXQgdHlwZT0iYnV0dG9uIiBpZD0iY29uc2VudFN1Ym1pdCIgY2xhc3M9IiBidG4tZGVmYXVsdCAiIHZhbHVlPSJTb3VtZXR0cmUiPgoJCQk8L2Rpdj4KCQk8L2Zvcm0+CgoJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJsYXN0Q29uc2VudFBvcCIgdmFsdWU9IiI+Cgk8L2Rpdj4KCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0icHVyY2hhc2VfaW50ZW50X2Fuc3dlciIgdmFsdWU9IlBHSnlJQzgrVEdVZ1kyeHBaVzUwSUdFZ2JDZHBiblJsYm5ScGIyNGdaQ2RoWTJobGRHVnlJSE52YmlCd2NtOWphR0ZwYmlCMjZXaHBZM1ZzWlNBOFlqNGxkR2x0WldaeVlXMWxKVHd2WWo0OFluSWdMejQ9Ij4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJwdXJjaGFzZV9pbnRlbnRfbm9fYW5zd2VyIiB2YWx1ZT0iYzJGdWN5QmtZWFJsSUhCeTZXTnBjMlU9Ij4KCTxkaXYgY2xhc3M9InJldmVhbC1tb2RhbCIgaWQ9ImFzUHVyY2hhc2VJbnRlbnQiPgoJICA8Zm9ybSBtZXRob2Q9InBvc3QiPgoJICAgIDxzdHJvbmcgY2xhc3M9ImFzUElUaXRsZSI+CgkgICAgICBRdWVscXVlcyBwcsOpY2lzaW9ucwoJICAgIDwvc3Ryb25nPgoJICAgIDxvbCBjbGFzcz0ic3RlcHMiPgoJICAgIDxsaSBpZD0iQUxMT1dfU0hBUkVfUEVSU09OQUxfSU5GTyIgY2xhc3M9ImhpZGRlbiI+CgkJCQkJPGRpdiBzdHlsZT0iaGVpZ2h0OjEwNXB4OyI+CgkJCQkJCTxzdHJvbmcgY2xhc3M9InZpVGV4dCI+CgkJCQkJCQlOb3VzIHBlcm1ldHRlei12b3VzIGRlIHBhcnRhZ2VyIHZvcyBpbmZvcm1hdGlvbnMgcGVyc29ubmVsbGVzIGF2ZWMgbGVzIGluc3RpdHV0aW9ucyBmaW5hbmNpw6hyZXMgcG91ciB2b3RyZSBidXJlYXUgZGUgY3LDqWRpdD8KCQkJCQkJPC9zdHJvbmc+CgkJCQkJCTxkaXYgY2xhc3M9ImNsciI+PC9kaXY+CgoJCQkJCQk8ZGl2IGNsYXNzPSJhc3llc25vIGFzeWVzIj4KCQkJCQkJCTxpbnB1dCB0eXBlPSJyYWRpbyIgdmFsdWU9InllcyIgbmFtZT0ic2hhcmVfcGVyc29uYWwiIGNsYXNzPSJyZXFSYWRpbyI+CgkJCQkJCQkJPGxhYmVsPk91aTwvbGFiZWw+CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJhc3llc25vIGFzbm8iPgoJCQkJCQkJPGlucHV0IHR5cGU9InJhZGlvIiB2YWx1ZT0ibm8iIG5hbWU9InNoYXJlX3BlcnNvbmFsIiBjbGFzcz0icmVxUmFkaW8iPgoJCQkJCQkJCTxsYWJlbD5Ob248L2xhYmVsPgoJCQkJCQk8L2Rpdj4KCQkJCQkJPGRpdiBzdHlsZT0iZGlzcGxheTpub25lO2NvbG9yOnJlZDtwYWRkaW5nLXRvcDo0cHg7Y2xlYXI6IGJvdGg7IiBpZD0iQUxMT1dfU0hBUkVfUEVSU09OQUxfSU5GT19URVhUX0VSUk9SIj5Wb3RyZSBjb25zZW50ZW1lbnQgZXN0IHJlcXVpcyBwb3VyIGNvbXBsw6l0ZXIgdm90cmUgZGVtYW5kZSBkZSBjcsOpZGl0ITwvZGl2PgoJCQkJCTwvZGl2PgoJCQkJPC9saT4KCgkgICAgICA8bGkgY2xhc3M9InN0ZXBJbnRlbnQgaGlkZGVuIj4KCSAgICAgICAgPHN0cm9uZyBjbGFzcz0idmlUZXh0Ij4KCQkJCQlRdWFuZCBwcsOpdm95ZXotdm91cyBhY2hldGVyIHVuIHbDqWhpY3VsZT8KCSAgICAgICAgPC9zdHJvbmc+CgkgICAgICAgIDx1bCBjbGFzcz0idmlPcHRpb25zIj4KCSAgICAgICAgICA8bGk+PGlucHV0IHR5cGU9InJhZGlvIiB2YWx1ZT0iRCdpY2kgMzAgam91cnMiIG5hbWU9InB1cmNoYXNlX2ludGVudCIgY2xhc3M9InJlcVJhZGlvIj48bGFiZWw+IEQnaWNpIDMwIGpvdXJzPC9sYWJlbD48L2xpPgoJICAgICAgICAgIDxsaT48aW5wdXQgdHlwZT0icmFkaW8iIHZhbHVlPSJEJ2ljaSAzIG1vaXMiIG5hbWU9InB1cmNoYXNlX2ludGVudCIgY2xhc3M9InJlcVJhZGlvIj48bGFiZWw+IEQnaWNpIDMgbW9pczwvbGFiZWw+PC9saT4KCSAgICAgICAgICA8bGk+PGlucHV0IHR5cGU9InJhZGlvIiB2YWx1ZT0iRCdpY2kgNiBtb2lzIiBuYW1lPSJwdXJjaGFzZV9pbnRlbnQiIGNsYXNzPSJyZXFSYWRpbyI+PGxhYmVsPiBEJ2ljaSA2IG1vaXM8L2xhYmVsPjwvbGk+CgkgICAgICAgICAgPGxpPjxpbnB1dCB0eXBlPSJyYWRpbyIgdmFsdWU9IkQnaWNpIHBsdXMgZGUgNiBtb2lzIiBuYW1lPSJwdXJjaGFzZV9pbnRlbnQiIGNsYXNzPSJyZXFSYWRpbyI+PGxhYmVsPiBEJ2ljaSBwbHVzIGRlIDYgbW9pczwvbGFiZWw+PC9saT4KCSAgICAgICAgPC91bD4KCSAgICAgICAgPGJyIGNsYXNzPSJjbHIiPgoJICAgICAgPC9saT4KCgkgICAgICA8bGkgY2xhc3M9InN0ZXBDb250YWN0IGhpZGRlbiIgZGF0YS1kZXBhcnRtZW50cz0iIj4KCQkJPGRpdiBzdHlsZT0iYm9yZGVyOiBub25lOyIgY2xhc3M9ImQyY2Zvcm0gZDJjZm9ybS0tcm93Ij4KCQkJCTxib3gtbGM+CgkJCQkJPGRpdiBjbGFzcz0idmlUZXh0Ij4KCQkJCQkJPHN0cm9uZz5RdWVsbGUgZXN0IHZvdHJlIG3DqXRob2RlIGRlIGNvbnRhY3QgcHLDqWbDqXLDqWUgPzwvc3Ryb25nPgoJCQkJCTwvZGl2PgoJCQkJCTxkaXYgY2xhc3M9InJhZGlvLWlubGluZSI+CgkJCQkJCTxsYWJlbCBjbGFzcz0iIj4KCQkJCQkJCTxpbnB1dCB0eXBlPSJyYWRpbyIgbmFtZT0icHJlZmVycmVkX2NvbnRhY3QiIHZhbHVlPSJUw6lsw6lwaG9uZSIgY2xhc3M9InJlcVJhZGlvIj4KCQkJCQkJCVTDqWzDqXBob25lCgkJCQkJCTwvbGFiZWw+CgkJCQkJCTxsYWJlbCBjbGFzcz0iIj4KCQkJCQkJCTxpbnB1dCB0eXBlPSJyYWRpbyIgbmFtZT0icHJlZmVycmVkX2NvbnRhY3QiIHZhbHVlPSJDb3VycmllbCIgY2xhc3M9InJlcVJhZGlvIj4KCQkJCQkJCUNvdXJyaWVsCgkJCQkJCTwvbGFiZWw+CgkJCQkJCTxsYWJlbCBjbGFzcz0iIj4KCQkJCQkJCTxpbnB1dCB0eXBlPSJyYWRpbyIgbmFtZT0icHJlZmVycmVkX2NvbnRhY3QiIHZhbHVlPSJTTVMiIGNsYXNzPSJyZXFSYWRpbyI+CgkJCQkJCQlTTVMKCQkJCQkJPC9sYWJlbD4KCQkJCQk8L2Rpdj4KCQkJCTwvYm94LWxjPgoJCQk8L2Rpdj4KCQk8L2xpPgoKCQk8bGkgY2xhc3M9InN0ZXBDb25zZW50Ij4KCQkJCTxzdGFjay1sYz4KCQk8Ym94LWxjIGNsYXNzPSJ2aVRleHQiPgoJCQk8ZGl2IGNsYXNzPSJwb3B1cC1wb2xpY3kiPkFmaW4gZGUgcmVzcGVjdGVyIGxhIExvaSBDYW5hZGllbm5lIEFudGktUG91cnJpZWwgZXQgbGEgTG9pIDI1IGR1IFF1w6liZWMsIG5vdXMgdm91cyBwcmlvbnMgZGUgYmllbiB2b3Vsb2lyIGNvbmZpcm1lciBzaSB2b3VzIHNvdWhhaXRleiByZWNldm9pciBub3MgY29tbXVuaWNhdGlvbnMgZnV0dXJlcyBjb25jZXJuYW50IGxlcyByYWJhaXMsIGxlcyBwcm9tb3Rpb25zLCBsZXMgb2ZmcmVzIGV0IGxlcyB2ZW50ZXMgcHJpdsOpZXMuIFZldWlsbGV6IG5vdGVyIHF1ZSB2b3VzIHBvdXZleiBtb2RpZmllciBvdSByZXRpcmVyIGNlIGNvbnNlbnRlbWVudCDDoCB0b3V0IG1vbWVudC4gRW4gY2xpcXVhbnQgc3VyIE91aSwgdm91cyBjb25maXJtZXogYXZvaXIgbHUgZXQgYWNjZXB0w6kgbm90cmUgPGEgdGFyZ2V0PSJfYmxhbmsiIGhyZWY9Ij9wYXRoPS9wb2xpdGlxdWUtZGUtY29uZmlkZW50aWFsaXRlLmh0bWwiPnBvbGl0aXF1ZSBkZSBjb25maWRlbnRpYWxpdMOpPC9hPi48L2Rpdj4KCQk8L2JveC1sYz4KCQk8Ym94LWxjIGNsYXNzPSJkZWFsZXJDb25zZW50Ij4KCQkJPGRpdiBjbGFzcz0iZmxleC1iZXR3ZWVuIj4KCQkJCTxkaXYgY2xhc3M9Ii13NTBwIj5BTEJJIEtpYSBNYXNjb3VjaGU8L2Rpdj4KCQkJCTxkaXYgY2xhc3M9Ii13NTBwIj4KCQkJCQk8bGFiZWw+CgkJCQkJCTxpbnB1dCB0eXBlPSJyYWRpbyIgdmFsdWU9IjEiIG5hbWU9ImNvbnNlbnQiIGNsYXNzPSJyZXFSYWRpbyI+CgkJCQkJCU91aQoJCQkJCTwvbGFiZWw+CgkJCQkJPGxhYmVsPgoJCQkJCQk8aW5wdXQgdHlwZT0icmFkaW8iIHZhbHVlPSItMSIgbmFtZT0iY29uc2VudCIgY2xhc3M9InJlcVJhZGlvIj4KCQkJCQkJTm9uCgkJCQkJPC9sYWJlbD4KCQkJCTwvZGl2PgoJCQk8L2Rpdj4KCQkJPGRpdiBjbGFzcz0iY29uc2VudCBkaXNjbGFpbWVyIiBzdHlsZT0id2lkdGg6IDUwJTsiIGRhdGEtdG9vbHRpcD0nRW4gZm91cm5pc3NhbnQgbWVzIGluZm9ybWF0aW9ucyBwZXJzb25uZWxsZXMsIGplIGNvbnNlbnMgw6AgbGV1ciB1dGlsaXNhdGlvbiBldCBsZXVyIGRpdnVsZ2F0aW9uIGNvbmZvcm3DqW1lbnQgw6AgbGEgUG9saXRpcXVlIGRlIGNvbmZpZGVudGlhbGl0w6kgZGUgQUxCSSBLaWEgTWFzY291Y2hlLiBKZSBjb25maXJtZSBhdm9pciBsdSBsYSAmbHQ7YSBocmVmPSIvcG9saXRpcXVlLWRlLWNvbmZpZGVudGlhbGl0ZS5odG1sIiZndDtQb2xpdGlxdWUgZGUgY29uZmlkZW50aWFsaXTDqSZsdDsvYSZndDsuIEplIGNvbXByZW5kcyBxdWUgQUxCSSBLaWEgTWFzY291Y2hlIHBldXQgcGFydGFnZXIgbWVzIGluZm9ybWF0aW9ucyBwZXJzb25uZWxsZXMgYXZlYyBkZXMgdGllcnMgZGFucyBsZSBidXQgZGUgZ8OpcmVyIG1hIHJlbGF0aW9uIGF2ZWMgZXV4LCB0ZWxzIHF1ZSBub3RyZSBmb3Vybmlzc2V1ciBkZSBnZXN0aW9uIGRlIGxhIHJlbGF0aW9uIGNsaWVudCAoQ1JNKS4gSmUgY29tcHJlbmRzIHF1ZSBjZXJ0YWlucyBkZSBjZXMgZm91cm5pc3NldXJzIHBldXZlbnQgc3RvY2tlciBtZXMgaW5mb3JtYXRpb25zIHBlcnNvbm5lbGxlcyBzdXIgZGVzIHNlcnZldXJzIGV0IGRlcyBiYXNlcyBkZSBkb25uw6llcyBzaXR1w6lzIGVuIGRlaG9ycyBkZSBtYSBwcm92aW5jZS4gSmUgY29tcHJlbmRzIMOpZ2FsZW1lbnQgcXVlIGplIHBldXggcmV0aXJlciBtb24gY29uc2VudGVtZW50IGV0IG1lIGTDqXNhYm9ubmVyIGRlIGxhIHLDqWNlcHRpb24gZGUgY29tbXVuaWNhdGlvbnMgZnV0dXJlcyBkZSBBTEJJIEtpYSBNYXNjb3VjaGUgw6AgdG91dCBtb21lbnQuIExlIGNvbnNlbnRlbWVudCDDoCBsYSByw6ljZXB0aW9uIGRlIGNvbW11bmljYXRpb25zIMOpbGVjdHJvbmlxdWVzIGVzdCBzb2xsaWNpdMOpIHBhciBBTEJJIEtpYSBNYXNjb3VjaGUuJz5DbGF1c2UgZGUgbm9uLXJlc3BvbnNhYmlsaXTDqTwvZGl2PgoJCTwvYm94LWxjPgoKCQkKCgk8L3N0YWNrLWxjPgoJPGRpdiBjbGFzcz0iLXB0MTAiIHN0eWxlPSJmb250LXNpemU6IDEwcHg7dGV4dC1hbGlnbjogY2VudGVyO2NvbG9yOiB2YXIoLS1kYXJrLWdyYXkpOyI+SU1QT1JUQU5UOiBWb3VzIHBvdXZleiBmYWNpbGVtZW50IHJldGlyZXIgdm90cmUgY29uc2VudGVtZW50IGVuIHRvdXQgdGVtcHMhPC9kaXY+CgkJPC9saT4KCgkgICAgPC9vbD4KCSAgPC9mb3JtPgoJICA8ZGl2IGNsYXNzPSItdGV4dC1jZW50ZXIiPgoJICAgIDxhIGlkPSJlbWFpbENvbnNlbnRTdWJtaXQiIGhyZWY9Ij9wYXRoPSMiIGNsYXNzPSIgLXVwcGVyY2FzZSBidG4tZGVmYXVsdCAiPlNPVU1FVFRSRTwvYT4KCSAgPC9kaXY+Cgk8L2Rpdj4KCgoKCQoJCgkKCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJjdXJyZW50SXRlbVR5cGUiIHZhbHVlPSJjYXIiPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9ImN1cnJlbnRJdGVtVHlwZVVSTFNhZmVFTiIgdmFsdWU9IiI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0iY3VycmVudFN0YXR1cyIgdmFsdWU9Im5ldyI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0idHh0VXNlckFnZW50IiB2YWx1ZT0iICAiPgoJCTxzY3JpcHQgYXN5bmMgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vc3RhdHMuZDJjbWVkaWEuY2Evc2VydmljZS9kMmMuaW5pdC5qcyI+PC9zY3JpcHQ+CgoJPGRpdiBpZD0iY29udmVyc2lvblRhZ3NXcmFwcGVyIj48L2Rpdj4KCgk8ZGl2IGlkPSJkMmNfdmFycyI+PGlucHV0IHR5cGU9ImhpZGRlbiIgdmFsdWU9Im5ld2NhcnMuaHRtbCIgaWQ9IjE2ZDd2d3Q2NnBtb3dvMGsiIGRhdGEtZm9ydmFyPSJDVVJSRU5UUEFHRSI+CjxpbnB1dCB0eXBlPSJoaWRkZW4iIHZhbHVlPSJhZjc5NDVjMmZjYjM4ZGU0M2E0NDljYjhmMDM3ZGMyYnwzOTcxMzU5OTQwIiBpZD0iM3BtNnR2Z3FxZWd3NHciIGRhdGEtZm9ydmFyPSJVU0VEX0VNQUlMIj4KPGlucHV0IHR5cGU9ImhpZGRlbiIgdmFsdWU9IiIgaWQ9InJkNXA4czRoNnI0czBjayIgZGF0YS1mb3J2YXI9IkFERl9FTUFJTCI+CjxpbnB1dCB0eXBlPSJoaWRkZW4iIHZhbHVlPSJORVciIGlkPSJzbzd5dXFhajRkd2NjOHMiIGRhdGEtZm9ydmFyPSJTSVRFX0NBUl9TRUNUSU9OX1RZUEUiPgo8aW5wdXQgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iYWY3OTQ1YzJmY2IzOGRlNDNhNDQ5Y2I4ZjAzN2RjMmJ8Mzk3MTM1OTk0MCIgaWQ9IjEzZHF0c25jZDgxd2s4NDQiIGRhdGEtZm9ydmFyPSJGSU5BTkNFX0VNQUlMIj4KPGlucHV0IHR5cGU9ImhpZGRlbiIgdmFsdWU9IiIgaWQ9IjVjY3lnazkyNW1nd2cwIiBkYXRhLWZvcnZhcj0iRklOQU5DRV9BREZfRU1BSUwiPgo8aW5wdXQgdHlwZT0iaGlkZGVuIiB2YWx1ZT0ibGl2ZSIgaWQ9IjJlamhiYzB5eW9nMHd3dyIgZGF0YS1mb3J2YXI9IkRFUExPWU1FTlRUWVBFIj4KPGlucHV0IHR5cGU9ImhpZGRlbiIgdmFsdWU9Imdvb2dsZSIgaWQ9IjE0MDRyYTA0Yndya280d2ciIGRhdGEtZm9ydmFyPSJNQVBUT1VTRSI+CjxpbnB1dCB0eXBlPSJoaWRkZW4iIHZhbHVlPSJyZXNldCIgaWQ9IjZqeXA0NjY0dmd3czgwdyIgZGF0YS1mb3J2YXI9IlBPUFVQV0lER0VUVE9BQ1RJVkUiPgo8aW5wdXQgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iYWxiaWtpYS5jb20iIGlkPSJ1NnRocnc5b2xjZzh3OHciIGRhdGEtZm9ydmFyPSJET01BSU5OQU1FIj4KPGlucHV0IHR5cGU9ImhpZGRlbiIgdmFsdWU9Imh0dHBzOi8vd3d3LmFsYmlraWEuY29tIiBpZD0iY291OWhtNDI5MWMwa29jIiBkYXRhLWZvcnZhcj0iTk9STUFMU0lURVVSSSI+CjxpbnB1dCB0eXBlPSJoaWRkZW4iIHZhbHVlPSIiIGlkPSIxZXJpdjkwMHBkYTg4d3c4IiBkYXRhLWZvcnZhcj0iTUFLRUZPUkVNQUlMIj4KPGlucHV0IHR5cGU9ImhpZGRlbiIgdmFsdWU9IiIgaWQ9IjEwcGE3djNxZWxkY29zayIgZGF0YS1mb3J2YXI9Ik1PREVMRk9SRU1BSUwiPgo8aW5wdXQgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iIiBpZD0icjgyemZreGEyZHdzczAwIiBkYXRhLWZvcnZhcj0iWUVBUiI+CjxpbnB1dCB0eXBlPSJoaWRkZW4iIHZhbHVlPSIiIGlkPSJpM2dzYXhnczVqazh3Y2siIGRhdGEtZm9ydmFyPSJSRUZFUkVSIj4KPC9kaXY+PCEtLSAjI0VORE9GUEFHRSMjIC0tPgoJPGRpdiBpZD0iY29uZmlybV9mb3JtcyI+PC9kaXY+CgoJPCEtLSBPTzo6NzMzNWEyZDQyYmM4OWY0MWFhYmM3OGM5NjhjYWFjNTUgLS0+CgoJCgoJPCEtLSBEV1AtMjQzOSAtLT4KCTwhLS0gT086OjMxNGNhYTViZjU5MDkyYzZmN2NmNmEyZmM3MmU5NTEzIC0tPgo8ZGl2IGNsYXNzPSJyZXZlYWwtbW9kYWwgbW9iaWxlIiBpZD0ibXVsdGktYWRkcmVzcy1zdWJtaXNzaW9uIj4KCQoJCgk8bGFiZWw+Q2hvaXNpc3NleiBsZSBjb25jZXNzaW9ubmFpcmUgbGUgcGx1cyBwcsOocyBkZSBjaGV6IHZvdXM6PC9sYWJlbD4KCTxzZWxlY3Qgdi1tb2RlbD0iZm9ybWRhdGEubXVsdGlfZGVhbGVyX3NlbmRUbyIgbmFtZT0ibXVsdGlfZGVhbGVyX3NlbmRUbyIgY2xhc3M9ImZvcm0tY29udHJvbCI+PG9wdGlvbiB2YWx1ZT0iIiBzZWxlY3RlZD5Tw6lsZWN0aW9ubmV6PC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iMCIgZGF0YS1kZWFsZXJpZD0iMzMzMSIgZGF0YS1icmFuZHM9IktpYSIgZGF0YS1lbWFpbD0iYWY3OTQ1YzJmY2IzOGRlNDNhNDQ5Y2I4ZjAzN2RjMmJ8Mzk3MTM1OTk0MCIgZGF0YS1lbWFpbGFkZj0iIiBkYXRhLWVtYWlsdXNlZD0iYWY3OTQ1YzJmY2IzOGRlNDNhNDQ5Y2I4ZjAzN2RjMmJ8Mzk3MTM1OTk0MCIgZGF0YS1lbWFpbGFkZnVzZWQ9IiIgZGF0YS1lbWFpbHNlcnZpY2U9IjVlOGJhZDM0OTIwOTRlMzhlMGJjMmM5NDJhODNmMjNkfDM5NzEzNTk5NDAiIGRhdGEtZW1haWxhZGZzZXJ2aWNlPSIiIGRhdGEtZW1haWxmaW5hbmNlPSJhZjc5NDVjMmZjYjM4ZGU0M2E0NDljYjhmMDM3ZGMyYnwzOTcxMzU5OTQwIiBkYXRhLWVtYWlsYWRmZmluYW5jZT0iIiBkYXRhLWVtYWlscGFydHM9IjVlOGJhZDM0OTIwOTRlMzhlMGJjMmM5NDJhODNmMjNkfDM5NzEzNTk5NDAiIGRhdGEtZW1haWxhZGZwYXJ0cz0iIj4KCUFsYmkgS2lhIFN0LUV1c3RhY2hlCjwvb3B0aW9uPjxvcHRpb24gdmFsdWU9IjEiIGRhdGEtZGVhbGVyaWQ9IjMzMzAiIGRhdGEtYnJhbmRzPSJLaWEiIGRhdGEtZW1haWw9ImFmNzk0NWMyZmNiMzhkZTQzYTQ0OWNiOGYwMzdkYzJifDM5NzEzNTk5NDAiIGRhdGEtZW1haWxhZGY9IiIgZGF0YS1lbWFpbHVzZWQ9ImFmNzk0NWMyZmNiMzhkZTQzYTQ0OWNiOGYwMzdkYzJifDM5NzEzNTk5NDAiIGRhdGEtZW1haWxhZGZ1c2VkPSIiIGRhdGEtZW1haWxzZXJ2aWNlPSIyNGJlNGYxMjcyYzQ3ZDE4MzRjOTA4MWNlNGVkMjAwZnwzOTcxMzU5OTQwIiBkYXRhLWVtYWlsYWRmc2VydmljZT0iIiBkYXRhLWVtYWlsZmluYW5jZT0iYWY3OTQ1YzJmY2IzOGRlNDNhNDQ5Y2I4ZjAzN2RjMmJ8Mzk3MTM1OTk0MCIgZGF0YS1lbWFpbGFkZmZpbmFuY2U9IiIgZGF0YS1lbWFpbHBhcnRzPSIyNGJlNGYxMjcyYzQ3ZDE4MzRjOTA4MWNlNGVkMjAwZnwzOTcxMzU5OTQwIiBkYXRhLWVtYWlsYWRmcGFydHM9IiI+CglBbGJpIEtpYSBNYXNjb3VjaGUKPC9vcHRpb24+PC9zZWxlY3Q+Cgo8ZGl2IHN0eWxlPSJkaXNwbGF5OiBub25lOyI+Cgk8aW5wdXQgaWQ9InBvc3RMZWFkTGFiZWwiIHR5cGU9ImhpZGRlbiIgdmFsdWU9IkNvbmNlc3Npb25uYWlyZTogJmx0O2ImZ3Q7eyRNVUxUSURFQUxFUk5BTUV9IC0geyRQT1NUX0xFQURfRU1BSUxTfSZsdDsvYiZndDsiPgoJPGlucHV0IGlkPSJQT1NUX0xFQURfU0VORF9UT19ERUFMRVJfVFlQRV9TRUxFQ1QiIHR5cGU9ImhpZGRlbiIgdmFsdWU9ImxvY2F0aW9uIj4KPC9kaXY+CgoJPGEgaWQ9Im11dGxpQWRkcmVzc1N1Ym1pdCIgaHJlZj0iamF2YXNjcmlwdDp2b2lkKDApOyIgY2xhc3M9IiBidG4tZGVmYXVsdCAiPlNvdW1ldHRyZTwvYT4KCgk8ZGl2IHN0eWxlPSJkaXNwbGF5OiBub25lOyI+Cgk8aW5wdXQgaWQ9InBvc3RMZWFkTGFiZWwiIHR5cGU9ImhpZGRlbiIgdmFsdWU9IkNvbmNlc3Npb25uYWlyZTogJmx0O2ImZ3Q7eyRNVUxUSURFQUxFUk5BTUV9IC0geyRQT1NUX0xFQURfRU1BSUxTfSZsdDsvYiZndDsiPgoJPGlucHV0IGlkPSJQT1NUX0xFQURfU0VORF9UT19ERUFMRVJfVFlQRV9TRUxFQ1QiIHR5cGU9ImhpZGRlbiIgdmFsdWU9ImxvY2F0aW9uIj4KPC9kaXY+CjwvZGl2Pgk8aW5wdXQgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iMSIgaWQ9ImlzbW9iaWxlIj4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIHZhbHVlPSJGUkVOQ0giIGlkPSJhY3RpdmVzaXRlbGFuZ3VhZ2UiPgoKCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJ0b3BzaXRlaWQiIG5hbWU9InRvcHNpdGVpZCIgdmFsdWU9IjEyMjUiPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9InRvcGNhcmlkIiBuYW1lPSJ0b3BjYXJpZCIgdmFsdWU9IiI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0idG9wY2FyaWRNdWx0aXN0ZXBGb3JtIiBuYW1lPSJ0b3BjYXJpZE11bHRpc3RlcEZvcm0iIHZhbHVlPSIiPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9InRvcGlzbW9iaWxlIiBuYW1lPSJ0b3Bpc21vYmlsZSIgdmFsdWU9IjEiPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9InRvcGRlcGxveW1lbnR0eXBlIiBuYW1lPSJ0b3BkZXBsb3ltZW50dHlwZSIgdmFsdWU9ImxpdmUiPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9ImVNb2RlbCIgbmFtZT0iZU1vZGVsIiB2YWx1ZT0iIj4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJwb3B1cG1ha2UiIG5hbWU9InBvcHVwbWFrZSIgdmFsdWU9IiI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0icG9wdXBtYWtlTXVsdGlzdGVwRm9ybSIgbmFtZT0icG9wdXBtYWtlTXVsdGlzdGVwRm9ybSIgdmFsdWU9IiI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0icG9wdXBtb2RlbCIgbmFtZT0icG9wdXBtb2RlbCIgdmFsdWU9IiI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0icG9wdXBtb2RlbE11bHRpc3RlcEZvcm0iIG5hbWU9InBvcHVwbW9kZWxNdWx0aXN0ZXBGb3JtIiB2YWx1ZT0iIj4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJwb3B1cHllYXIiIG5hbWU9InBvcHVweWVhciIgdmFsdWU9IiI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0icG9wdXB5ZWFyTXVsdGlzdGVwRm9ybSIgbmFtZT0icG9wdXB5ZWFyTXVsdGlzdGVwRm9ybSIgdmFsdWU9IiI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0icG9wdXB0cmltIiBuYW1lPSJwb3B1cHRyaW0iIHZhbHVlPSIiPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9InBvcHVwc3RvY2tudW1iZXIiIG5hbWU9InBvcHVwc3RvY2tudW1iZXIiIHZhbHVlPSIiPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9InBvcHVwc3RvY2tudW1iZXJNdWx0aXN0ZXBGb3JtIiBuYW1lPSJwb3B1cHN0b2NrbnVtYmVyTXVsdGlzdGVwRm9ybSIgdmFsdWU9IiI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0ibGFzdHZpZXdlZG1ha2UiIG5hbWU9Imxhc3R2aWV3ZWRtYWtlIiB2YWx1ZT0iIj4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJsYXN0dmlld2VkbW9kZWwiIG5hbWU9Imxhc3R2aWV3ZWRtb2RlbCIgdmFsdWU9IiI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0ibGFzdHZpZXdlZHllYXIiIG5hbWU9Imxhc3R2aWV3ZWR5ZWFyIiB2YWx1ZT0iIj4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJsYXN0dmlld2VkdHJpbSIgbmFtZT0ibGFzdHZpZXdlZHRyaW0iIHZhbHVlPSIiPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9Imxhc3R2aWV3ZWRzdG9ja251bWJlciIgbmFtZT0ibGFzdHZpZXdlZHN0b2NrbnVtYmVyIiB2YWx1ZT0iIj4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJoYXNNdWx0aXBsZURlYWxlcnMiIHZhbHVlPSIxIj4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJzZW5kRW1haWxUb0FsbERlYWxlcnMiIHZhbHVlPSIwIj4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJzZWFyY2hlZFZlaGljbGUiIHZhbHVlPSIgICI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0ic2VhcmNoZWRxdWVyeW1ha2UiIG5hbWU9InNlYXJjaGVkcXVlcnltYWtlIiB2YWx1ZT0iIj4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJzZWFyY2hlZHF1ZXJ5bW9kZWwiIG5hbWU9InNlYXJjaGVkcXVlcnltb2RlbCIgdmFsdWU9IiI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0ic2VhcmNoZWRxdWVyeXllYXIiIG5hbWU9InNlYXJjaGVkcXVlcnl5ZWFyIiB2YWx1ZT0iIj4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJpbWdzdnJwb29sYWN0aXZlIiBuYW1lPSJpbWdzdnJwb29sYWN0aXZlIiB2YWx1ZT0iVFJVRSI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0iaXNBVkdNYXJrZXRQcmljZUFjdGl2ZSIgdmFsdWU9IjEiPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9InNpdGVjb21waWxlaWQiIG5hbWU9InNpdGVjb21waWxlaWQiIHZhbHVlPSI2OWU1MWYyYzc3ZTdiIj4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJlbWFpbExpc3RTdWZmaXgiIG5hbWU9ImVtYWlsTGlzdFN1ZmZpeCIgdmFsdWU9IjM5NzEzNTk5NDAiPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9ImRpc2FibGVQb3B1cHMiIG5hbWU9ImRpc2FibGVQb3B1cHMiIHZhbHVlPSIwIj4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJBRE1JTl9HRU5FUkFMX0JMT0NLX0ZSX0RPTUFJTl9DSEVDSyIgbmFtZT0iQURNSU5fR0VORVJBTF9CTE9DS19GUl9ET01BSU5fQ0hFQ0siIHZhbHVlPSIxIj4KCgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0idGFyZ2V0UGFnZSIgbmFtZT0idGFyZ2V0UGFnZSIgdmFsdWU9Ik5FV0NBUlMiPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9InBhZ2VTZWN0aW9uIiBuYW1lPSJwYWdlU2VjdGlvbiIgdmFsdWU9Ik5FVyI+CgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9IkRpc2NvdW50UG9wdXBPdGhlclBhZ2VzIiBuYW1lPSJEaXNjb3VudFBvcHVwT3RoZXJQYWdlcyIgdmFsdWU9IlBST01PO1NFUlZJQ0VTO0ZJTkFOQ0U7VEVBTTtDT05UQUNUIj4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJEaXNjb3VudFBvcHVwRGVsYXlTaG93T3RoZXIiIG5hbWU9IkRpc2NvdW50UG9wdXBEZWxheVNob3dPdGhlciIgdmFsdWU9IiI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0iRGlzY291bnRQb3B1cERlbGF5U2hvdyIgbmFtZT0iRGlzY291bnRQb3B1cERlbGF5U2hvdyIgdmFsdWU9IiI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0iRGlzY291bnRQb3B1cERlbGF5U2hvd05ldyIgbmFtZT0iRGlzY291bnRQb3B1cERlbGF5U2hvd05ldyIgdmFsdWU9IiI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0iU0hPV19QT1BVUF9BVVRPIiBuYW1lPSJTSE9XX1BPUFVQX0FVVE8iIHZhbHVlPSJkZWxheSI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0iU0hPV19QT1BVUF9BVVRPX1VTRUQiIG5hbWU9IlNIT1dfUE9QVVBfQVVUT19VU0VEIiB2YWx1ZT0iZGVsYXkiPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9IlNIT1dfUE9QVVBfQVVUT19ORVciIG5hbWU9IlNIT1dfUE9QVVBfQVVUT19ORVciIHZhbHVlPSJkZWxheSI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0iQVVUT19QRVJDRU5UX1BPUFVQIiBuYW1lPSJBVVRPX1BFUkNFTlRfUE9QVVAiIHZhbHVlPSI3NSI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0iQVVUT19QRVJDRU5UX1BPUFVQX1VTRUQiIG5hbWU9IkFVVE9fUEVSQ0VOVF9QT1BVUF9VU0VEIiB2YWx1ZT0iNzUiPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9IkFVVE9fUEVSQ0VOVF9QT1BVUF9ORVciIG5hbWU9IkFVVE9fUEVSQ0VOVF9QT1BVUF9ORVciIHZhbHVlPSI3NSI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0iR0VORVJBTF9VU0VEX1BBR0VfUE9QVVBfU0VMRUNUIiBuYW1lPSJHRU5FUkFMX1VTRURfUEFHRV9QT1BVUF9TRUxFQ1QiIHZhbHVlPSJJTkNMVURJTkciPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9IkdFTkVSQUxfTkVXX1BBR0VfUE9QVVBfU0VMRUNUIiBuYW1lPSJHRU5FUkFMX05FV19QQUdFX1BPUFVQX1NFTEVDVCIgdmFsdWU9IklOQ0xVRElORyI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0iVVNFRF9MT0dPX09OX0NIRUNLIiBuYW1lPSJVU0VEX0xPR09fT05fQ0hFQ0siIHZhbHVlPSIiPgoKCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJTRU1fQk9PU1RFUl9BQ1RJVkUiIG5hbWU9IlNFTV9CT09TVEVSX0FDVElWRSIgdmFsdWU9IjEiPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9IlBBR0VJRCIgbmFtZT0iUEFHRUlEIiB2YWx1ZT0ibmV3Y2Fycy5odG1sIj4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJEaXNjb3VudFBvcHVwQ2hlY2tib3hPdGhlciIgbmFtZT0iRGlzY291bnRQb3B1cENoZWNrYm94T3RoZXIiIHZhbHVlPSIiPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9IkRpc2NvdW50UG9wdXBDaGVja2JveCIgbmFtZT0iRGlzY291bnRQb3B1cENoZWNrYm94IiB2YWx1ZT0iMSI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0iRGlzY291bnRQb3B1cENoZWNrYm94TmV3IiBuYW1lPSJEaXNjb3VudFBvcHVwQ2hlY2tib3hOZXciIHZhbHVlPSIxIj4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJDUk1fV1NTX0FDVElWRSIgbmFtZT0iQ1JNX1dTU19BQ1RJVkUiIHZhbHVlPSJubyI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0idHh0QnVpbGRBbmRQcmljZUVtYWlsTGluayIgdmFsdWU9IkRlcm5pZXIgdsOpaGljdWxlIGNvbmZpZ3Vyw6kgKG1vZHVsZSBDb25maWd1cmF0aW9uICZhbXA7IFByaXgpIGxlIHskQkFOUExJTkt9Ij4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJ0eHRCdWlsZEFuZFByaWNlRm9sZGVyUGF0aCIgdmFsdWU9Ii9jb25maWd1cmF0aW9uLWV0LXByaXgvIj4KCgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0ibmV3U2VjdGlvbm5hYmxlZCIgbmFtZT0ibmV3U2VjdGlvbm5hYmxlZCIgdmFsdWU9IjEiPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9InVzZWRTZWN0aW9ubmFibGVkIiBuYW1lPSJ1c2VkU2VjdGlvbm5hYmxlZCIgdmFsdWU9IjEiPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9ImZpbmFuY2VTZWN0aW9ubmFibGVkIiBuYW1lPSJmaW5hbmNlU2VjdGlvbm5hYmxlZCIgdmFsdWU9IjEiPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9InNlcnZpY2VTZWN0aW9ubmFibGVkIiBuYW1lPSJzZXJ2aWNlU2VjdGlvbm5hYmxlZCIgdmFsdWU9IjEiPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9InByb21vU2VjdGlvbm5hYmxlZCIgbmFtZT0icHJvbW9TZWN0aW9ubmFibGVkIiB2YWx1ZT0iMSI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0iQ0FNUEFJR05JRCIgbmFtZT0iQ0FNUEFJR05JRCIgdmFsdWU9IiI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0iSVNWTSIgbmFtZT0iSVNWTSIgdmFsdWU9IiI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0iaGlkZGVuRGVhbGVyTmFtZSIgdmFsdWU9IkFMQkkgS2lhIE1hc2NvdWNoZSI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJDQkJDaGVja1VzZXIiIHZhbHVlPSJNVGd1T1RjdU1UUXVPVEE9Ij4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImZvcm1fZW1haWxzIiB2YWx1ZT0iIj4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIHZhbHVlPSIwIiBpZD0iaGFzVkJEQ0VuYWJsZWQiPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9ImZmZEwxIiB2YWx1ZT0iMmY4ZWYxM2FiNWJiMGUwNTFkNDY2Yzk2NGU1NjJhNDc3NzE0Mjk5OSI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0iR1JXTCIgbmFtZT0iR1JXTCIgdmFsdWU9ImIyZTM1MGI3MWMxNjQ2YjdlZWVjOWUxYWY2Yzg1NGIxM2NiMWRiNTE7YmE2Yjg2MTFjYmExMTc4MDMxYjE3ZmE3ZTM1MGFjZjJjZTEzNWFhNTswOWMzNTgwN2JhNDdhODI1OTJlZjg4ZTVkNjMwNGVhNjk5YjhjYmUyIj4KCgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0iREVBTEVSQlJBTkQiIG5hbWU9IkRFQUxFUkJSQU5EIiB2YWx1ZT0iS2lhIj4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJERUFMRVJQQUNPREUiIG5hbWU9IkRFQUxFUlBBQ09ERSIgdmFsdWU9IjYxMDU2Ij4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJGSU5BTkNFRk9STVRZUEUiIG5hbWU9IkZJTkFOQ0VGT1JNVFlQRSIgdmFsdWU9Im11bHRpc3RlcCI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0iRGlzY291bnRQb3B1cE5ld1JlYmF0ZVNob3dUZXh0VXMiIHZhbHVlPSIwIj4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJEaXNjb3VudFBvcHVwVXNlZFJlYmF0ZVNob3dUZXh0VXMiIHZhbHVlPSIwIj4KCgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0ib2VtQ2VydGlmaWNhdGlvbiIgdmFsdWU9IjEwMDQiPgoKCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJjb29raWVMb2dUb2tlbiIgdmFsdWU9Ik1qRTNOak0zTlRVeE16SXdNQT09Ij4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJjb29raWVUb0NoZWNrIiB2YWx1ZT0iMSI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0iZGlzYWJsZUludGVybmFsU2Vzc2lvbiIgdmFsdWU9IjEiPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9ImRlYWxlclByb3ZpbmNlQ29kZSIgdmFsdWU9IlFDIj4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJzaXRlSUQiIHZhbHVlPSIxMjI1Ij4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJzaXRlYXBpdXJsIiB2YWx1ZT0iaHR0cHM6Ly9zaXRlYXBpLmQyY21lZGlhLmNhIj4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJGaW5hbmNlX0Zvcm1UeXBlIiB2YWx1ZT0ibXVsdGlzdGVwIj4KCiAgICA8ZGl2IGlkPSJlbWFpbFN1Y2Nlc3NNZXNzYWdlIiBjbGFzcz0icmV2ZWFsLW1vZGFsIGVtYWlsLWNvbnNlbnQtYm94IiBzdHlsZT0id2lkdGg6NjAlOyI+CiAgICAgIDxkaXYgY2xhc3M9Imljb24tdGl0bGUiPgogICAgICAgIDwhLS0gPHNwYW4gY2xhc3M9InRpdGxlLWljb24gc3VjY2VzcyAtbWwwIj48L3NwYW4+IC0tPgogICAgICAgIDxzcGFuIGNsYXNzPSJ0aXRsZS10eHQiPlZvdHJlIGRlbWFuZGUgYSBiaWVuIMOpdMOpIGVudm95w6llITwvc3Bhbj4KICAgICAgPC9kaXY+CiAgICAgIDxwIGNsYXNzPSJkZWZhdWx0U3VjY2VzcyI+PGJyPlZvdHJlIGRlbWFuZGUgYSDDqXTDqSBlbnZvecOpZSBhdmVjIHN1Y2PDqHMuIFVuIHJlcHLDqXNlbnRhbnQgdm91cyBjb250YWN0ZXJhIHNvdXMgcGV1LjwvcD4KICAgICAgPHAgY2xhc3M9InNlcnZpY2VTdWNjZXNzIiBzdHlsZT0iZGlzcGxheTpub25lOyI+PGJyPk1lcmNpIHBvdXIgdm90cmUgZGVtYW5kZS4gVW4gbWVtYnJlIGRlIG5vdHJlIMOpcXVpcGUgY29tbXVuaXF1ZXJhIGF2ZWMgdm91cyBzb3VzIHBldS48L3A+CiAgICAgIDwhLS0gPGEgY2xhc3M9ImNsb3NlLXJldmVhbC1tb2RhbCI+JiMyMTU7PC9hPiAtLT4KICAgICAgPGRpdiBjbGFzcz0iZW1haWwtY29uc2VudC1idG5zIC1wdDIwIC1yaWdodCBhbXBDb25zZW50UmVzcG9uc2VTZW5kRGlzbWlzcyI+CiAgICAgICAgPGEgaHJlZj0iP3BhdGg9IyIgY2xhc3M9IiAtdXBwZXJjYXNlIGJ0bi1kZWZhdWx0ICIgb25jbGljaz0iJCgnLmNsb3NlLXJldmVhbC1tb2RhbDp2aXNpYmxlJykudHJpZ2dlcignY2xpY2snKTtyZXR1cm4gZmFsc2U7Ij5GZXJtZXI8L2E+CiAgICAgIDwvZGl2PgogICAgICA8Zm9ybSBpZD0iZW1haWxtc2dmcm0iIGNsYXNzPSJjb25maXJtX2h0bWwiIHRhcmdldD0iaWZyYW1lIiBtZXRob2Q9InBvc3QiIGFjdGlvbj0iL2NvbmZpcm1hdGlvbi5odG1sIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ibGFiZWwiIGNsYXNzPSJsYWJlbGVtYWlsIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ic2VjdGlvbiIgY2xhc3M9ImxhYmVsc2VjdGlvbiIgdmFsdWU9Ik9jY2FzaW9uIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYnJhbmQiIGNsYXNzPSJicmFuZGVtYWlsIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ibW9kZWwiIGNsYXNzPSJtb2RlbGVtYWlsIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ieWVhciIgY2xhc3M9InllYXJlbWFpbCIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9Imdvb2dsZWlkIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZ29vZ2xlaWRkMmNtZWRpYSIgdmFsdWU9IiI+CgkJCQkJCSAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYWR3b3Jkc2NvbmlkIiB2YWx1ZT0iOTcwOTExMjMyIj4KCQkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImFkd29yZHNsYWJlbGlkIiB2YWx1ZT0iRHlyY0NPeXVuMjBRZ056N3pnTSI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImJpbmdjb25pZCIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImJpbmdhY3Rpb25pZCIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImJpbmdkb21haW5pZCIgdmFsdWU9IiI+CgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhZHJvbGxBZHYiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhZHJvbGxQaXgiIHZhbHVlPSIiPgoKICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZmFjZWJvb2tDb25JZCIgdmFsdWU9IiI+CgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJkb21haW4iIHZhbHVlPSJhbGJpa2lhLmNvbSI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InJlZmVycmVyIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZGVwYXJ0bWVudCIgdmFsdWU9Ik5FVyI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImxlYWRfZGVwYXJ0bWVudCIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImlzZXhwcmVzcyIgY2xhc3M9ImlzZXhwcmVzcyIgdmFsdWU9IjAiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJpc3Byb21vIiB2YWx1ZT0iMCI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImlzaG9tZXBhZ2UiIHZhbHVlPSIwIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0idGVzdG1vZGUiIGNsYXNzPSJ0ZXN0bW9kZSIgdmFsdWU9IjAiPgoKICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ibGVhZFR5cGUiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJwYWdlSUQiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJjdXJyZW50VVJMIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iaXNDb25maXJtUG9wdXAiIHZhbHVlPSIiPgoKICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iY29uZmlybV9lbWFpbCIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImNvbmZpcm1fZmlyc3RfbmFtZSIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImNvbmZpcm1fbGFzdF9uYW1lIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iY29uZmlybV9waG9uZV9udW1iZXIiIHZhbHVlPSIiPgoKICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iaXNGdWxsV2lkdGgiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJkZWFsZXJOYW1lIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYnV0dG9uUG9zaXRpb24iIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJpc01vYmlsZU5ld1ZEUCIgdmFsdWU9IjEiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJmcm9tQXV0b0F1YmFpbmUiIHZhbHVlPSIiPgoKICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgdmFsdWU9Ik5FVyIgbmFtZT0idGV4dENhclNlY3Rpb25UeXBlIiBzdHlsZT0iZGlzcGxheTpub25lOyI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImxhbmciIHZhbHVlPSJmciI+CiAgICAgIDwvZm9ybT4KICAgICAgPGlmcmFtZSB3aWR0aD0iMSIgaGVpZ2h0PSIxIiBuYW1lPSJpZnJhbWUiIGZyYW1lYm9yZGVyPSIwIiBzdHlsZT0id2lkdGg6MXB4O2hlaWdodDoxcHg7Ij48L2lmcmFtZT4KICAgIDwvZGl2PgoKICAgIDxkaXYgaWQ9ImVtYWlsRmFpbE1lc3NhZ2UiIGNsYXNzPSJyZXZlYWwtbW9kYWwgZW1haWwtY29uc2VudC1ib3giIHN0eWxlPSJ3aWR0aDo2MCU7Ij4KICAgICAgPHNwYW4gY2xhc3M9ImZhaWwiPlVuZSBlcnJldXIgcydlc3QgcHJvZHVpdGU8L3NwYW4+CiAgICAgIDxwPk5vdXMgbidhdm9ucyBwYXMgcHUgZW52b3llciB2b3RyZSBtZXNzYWdlLiBTJ2lsIHZvdXMgcGxhw650IHJhZnJhw65jaGlyIGV0IGVzc2F5ZXogw6Agbm91dmVhdS48L3A+CiAgICAgIDxkaXYgY2xhc3M9ImNsb3NlLXJldmVhbC1tb2RhbCI+PGVtIGNsYXNzPSJmYSBmYS10aW1lcy1jaXJjbGUiPjwvZW0+PC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9Ii1wdDIwIC1yaWdodCBhbXBDb25zZW50UmVzcG9uc2VTZW5kRGlzbWlzcyI+CiAgICAgICAgPGlucHV0IHR5cGU9ImJ1dHRvbiIgY2xhc3M9IiAtdXBwZXJjYXNlIGJ0bi1kZWZhdWx0ICIgb25jbGljaz0iJCgnI2VtYWlsRmFpbE1lc3NhZ2UnKS50cmlnZ2VyKCdyZXZlYWw6Y2xvc2UnKTsiIHZhbHVlPSJGZXJtZXIiPgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKCgkJCgkJPGRpdiBpZD0iZDJjRm9vdGVyQ29va2llRGVsZXRlIiBjbGFzcz0icmV2ZWFsLW1vZGFsICIgc3R5bGU9IndpZHRoOjMyMHB4O2hlaWdodDoyNTBweDtwYWRkaW5nOjMwcHggMTBweCA4MHB4OyIgZGF0YS1sYXp5bG9hZGlkPSJuZXdjYXJzX2QyY2Zvb3RlcmNvb2tpZWRlbGV0ZSI+CgkJCQoJCTwvZGl2PgoKCQk8IS0tIE9POjpmNGU0NDFhYWVjNWYwYWVjYTQ2ODU4OGQyMWJmMGI5MyAtLT4KCgkJCgkJCQkJCgoJCQkKCQk8c3R5bGU+CgoJCQkjbGVhZERlYWxlckFwcG9pbnRtZW50IHNpZGViYXItbGMgPiAqewoJCQkJd2lkdGg6IGNsYW1wKDIwLjVyZW0sIG1heCg5MHZ3LCAyMC41cmVtKSwgNjByZW0pOwoJCQkJZGlyZWN0aW9uOiBydGw7CgkJCX0KCgkJCSNsZWFkRGVhbGVyQXBwb2ludG1lbnQgc2lkZWJhci1sYyA+ICogPiAqewoJCQkJZGlyZWN0aW9uOiBpbml0aWFsOwoJCQl9CgoJCQkjbGVhZERlYWxlckFwcG9pbnRtZW50IHNpZGViYXItbGMgPiAqID46bGFzdC1jaGlsZHsKCQkJCXdpZHRoOiAyMHJlbTsKCQkJfQoKCQkJI2xlYWREZWFsZXJBcHBvaW50bWVudCBzaWRlYmFyLWxjewoJCQkJLS1zaWRlYmFyLWJwOiA0MCU7CgkJCX0KCgkJCSNsZWFkRGVhbGVyQXBwb2ludG1lbnQgc3dpdGNoZXItbGN7CgkJCQktLXN3aXRjaC1icDogMzVyZW07CgkJCX0KCgoJCQkjZm9ybURlYWxlckFwcG9pbnRtZW50IGxhYmVsewoJCQkJbWF4LXdpZHRoOjE5cmVtOwoJCQkJZGlzcGxheTogZmxleDsKCQkJCWZsZXgtd3JhcDogd3JhcDsKCQkJCWp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKCQkJfQoKCQkJI2Zvcm1EZWFsZXJBcHBvaW50bWVudCBsYWJlbCBzcGFuewoJCQkJd2lkdGg6NHJlbTsKCQkJfQoKCgkJCSNmb3JtRGVhbGVyQXBwb2ludG1lbnQgW3R5cGU9InN1Ym1pdCJdewoJCQkJbWF4LXdpZHRoOjE5cmVtOwoJCQl9CgoJCQkuY29udGFjdE1hcENvbnRhaW5lcnsKCQkJCWhlaWdodDoxMDAlOwoJCQkJbWluLWhlaWdodDptaW4oNzV2aCwgMzhyZW0pOwoJCQl9CgoJCQkuY29udGFjdEZvcm17CgkJCQlib3JkZXItY29sb3I6I2JiYjsKCQkJCWJveC1zaXppbmc6IGJvcmRlci1ib3g7CgkJCX0KCgkJCSNsZWFkRGVhbGVyQXBwb2ludG1lbnQgLmNvbnRhY3RGb3JtIGlucHV0ewoJCQkJbWF4LXdpZHRoOiAxMHJlbTsKCQkJfQoKCgoJCQkjbGVhZERlYWxlckFwcG9pbnRtZW50IC5mbGF0cGlja3ItZGF5LnNlbGVjdGVkewoJCQkJYmFja2dyb3VuZC1jb2xvcjojMDAwOwoJCQkJYm9yZGVyLWNvbG9yOiMwMDA7CgkJCX0KCgkJCSNsZWFkRGVhbGVyQXBwb2ludG1lbnQgLmZsYXRwaWNrci10aW1lIDppcyhpbnB1dDpob3ZlcixpbnB1dDpmb2N1cyl7CgkJCQliYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKCQkJfQoKCQkJLmZsYXRwaWNrci1tb250aERyb3Bkb3duLW1vbnRoLCAuZmxhdHBpY2tyLW1vbnRoRHJvcGRvd24tbW9udGhzewoJCQkJdGV4dC10cmFuc2Zvcm06dmFyKC0tdHh0LXVwcGVyLCB1cHBlcmNhc2UpOwoJCQl9CgoJCQkvKiAuZHAtbGFyZ2UgLmZsYXRwaWNrci1jYWxlbmRhcnsKCQkJCXdpZHRoOjMwcmVtOwoJCQkJZm9udC1zaXplOjEuMXJlbTsKCQkJfQoKCQkJLmRwLWxhcmdlIC5mbGF0cGlja3Itd2Vla2RheXN7CgkJCQloZWlnaHQ6Mi41cmVtOwoJCQl9CgoJCQkuZHAtbGFyZ2UgLmZsYXRwaWNrci1kYXl7CgkJCQltYXgtd2lkdGg6IDRyZW07CgkJCQloZWlnaHQ6IDIuNXJlbTsKCQkJCWxpbmUtaGVpZ2h0OiAyLjVyZW07CgkJCX0KCgkJCS5kcC1sYXJnZSA6aXMoLmZsYXRwaWNrci1kYXlzLC5kYXlDb250YWluZXIpIHsKCQkJCXdpZHRoOjEwMCU7CgkJCQltYXgtd2lkdGg6IDMwcmVtOwoJCQl9ICovCgkJPC9zdHlsZT4KCgkJCTxkaXYgaWQ9ImxlYWREZWFsZXJBcHBvaW50bWVudCIgaGlkZGVuPgoJCQkJPGRpdiBjbGFzcz0iZmxleC1jZW50ZXIgYWxpZ24tY2VudGVyIj4KCQkJCTxzaWRlYmFyLWxjPgoJCQkJCTxkaXY+IDwhLS0gaW50ZXJtZWRpYXJ5IHdyYXBwZXIgLS0+CgoJCQkJCQk8Ym94LWxjPgoJCQkJCQkJPHN0YWNrLWxjIGNsYXNzPSJhbGlnbi1jZW50ZXIiPgoJCQkJCQkJCTx1bCBjbGFzcz0iY2hlY2tsaXN0IC1mcy0xIC0tcyI+CgkJCQkJCQkJCTxsaT5VbmUgZXhww6lyaWVuY2UgcGVyc29ubmFsaXPDqWUgZMOocyB2b3RyZSBhcnJpdsOpZTwvbGk+CgkJCQkJCQkJCTxsaT5BdWN1bmUgYXR0ZW50ZSBjaGV6IGxlIGNvbmNlc3Npb25uYWlyZTwvbGk+CgkJCQkJCQkJCTxsaT5BdWN1bmUgcGFwZXJhc3NlIGludXRpbGU6IGNvbmNlbnRyZXotdm91cyBzdXIgbGUgdsOpaGljdWxlPC9saT4KCQkJCQkJCQk8L3VsPgoJCQkJCQkJCTxib3gtbGMgY2xhc3M9ImZsZXgtY2VudGVyIj4KCQkJCQkJCQkJPGlucHV0IGNsYXNzPSJkYXRlcGlja2VyIGZsYXRwaWNrci1pbnB1dCIgaGlkZGVuIHR5cGU9InRleHQiIHRpdGxlPSJTZWxlY3QgRGF0ZS4uLiIgcGxhY2Vob2xkZXI9IlNlbGVjdCBEYXRlLi4uIiBkYXRhLWlkPSJpbmxpbmUiIHJlYWRvbmx5PgoJCQkJCQkJCTwvYm94LWxjPgoJCQkJCQkJCTxib3gtbGMgY2xhc3M9ImNvbnRhY3RGb3JtIC1iIC13LTEwMCBmbGV4LWNlbnRlciAtLXMyIj4KCQkJCQkJCQkJPGZvcm0gaWQ9ImZvcm1EZWFsZXJBcHBvaW50bWVudCIgY2xhc3M9Ii13LTEwMCIgbm92YWxpZGF0ZT4KCQkJCQkJCQkJCTxzdGFjay1sYyBjbGFzcz0iLS1zMiBhbGlnbi1jZW50ZXIiPgoKCQkJCQkJCQkJCQk8c3BhbiBjbGFzcz0iLWJvbGQgdHh0LWNlbnRlciB0eHQtdXBwZXIgc2VsZWN0ZWRUaW1lIj48L3NwYW4+CgkJCQkJCQkJCQkJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZGF0ZSI+CgoJCQkJCQkJCQkJCTxzd2l0Y2hlci1sYz4KCQkJCQkJCQkJCQkJPGRpdiBjbGFzcz0iZmxleC1jZW50ZXIiPiA8IS0tIGludGVybWVkaWFyeSB3cmFwcGVyIC0tPgoJCQkJCQkJCQkJCQkJPGxhYmVsIGNsYXNzPSJmb3JtLWxhYmVsIGFsaWduLWNlbnRlciI+CgkJCQkJCQkJCQkJCQkJPHNwYW4+Tm9tICo8L3NwYW4+CgkJCQkJCQkJCQkJCQkJPGlucHV0IHJlcXVpcmVkIGNsYXNzPSItcGgiIG5hbWU9Im5hbWUiIHR5cGU9InRleHQiPgoJCQkJCQkJCQkJCQkJPC9sYWJlbD4KCgkJCQkJCQkJCQkJCQk8bGFiZWwgY2xhc3M9ImZvcm0tbGFiZWwgYWxpZ24tY2VudGVyIj4KCQkJCQkJCQkJCQkJCQk8c3Bhbj5Db3VycmllbCAqPC9zcGFuPgoJCQkJCQkJCQkJCQkJCTxpbnB1dCBuYW1lPSJlbWFpbCIgdHlwZT0iZW1haWwiIHJlcXVpcmVkPgoJCQkJCQkJCQkJCQkJPC9sYWJlbD4KCgkJCQkJCQkJCQkJCQk8bGFiZWwgY2xhc3M9ImZvcm0tbGFiZWwgYWxpZ24tY2VudGVyIj4KCQkJCQkJCQkJCQkJCQk8c3Bhbj5Uw6lsw6lwaG9uZSAqPC9zcGFuPgoJCQkJCQkJCQkJCQkJCTxpbnB1dCBkYXRhLXByaXN0aW5lLXBob25lIG5hbWU9InBob25lbnVtIiB0eXBlPSJ0ZWwiIHJlcXVpcmVkPgoJCQkJCQkJCQkJCQkJPC9sYWJlbD4KCQkJCQkJCQkJCQkJPC9kaXY+CgkJCQkJCQkJCQkJPC9zd2l0Y2hlci1sYz4KCgkJCQkJCQkJCQkJPGJ1dHRvbiBvbnN1Ym1pdD0iamF2YXNjcmlwdDp2b2lkKCkiIGNsYXNzPSJidG4gYnRuLXByb21vIC1mcy1sciAtdy0xMDAgdHh0LXVwcGVyIC1ib2xkIiB0eXBlPSJzdWJtaXQiPgoJCQkJCQkJCQkJCQlQcmVuZHJlIHJlbmRlei12b3VzCgkJCQkJCQkJCQkJPC9idXR0b24+CgoJCQkJCQkJCQkJCTxpbnB1dCBuYW1lPSJkYXRhIiB0eXBlPSJoaWRkZW4iIGRhdGEtbWFrZT0iIiBkYXRhLW1vZGVsPSIiIGRhdGEteWVhcj0iIiBkYXRhLXRyaW09IiIgZGF0YS1jb25kaXRpb249IiIgZGF0YS1rbT0iIiBkYXRhLXZpbj0iIiBkYXRhLXN0b2NrLW51bWJlcj0iIj4KCgkJCQkJCQkJCQkJPGlucHV0IG5hbWU9InNlbmRUbyIgdmFsdWU9ImFmNzk0NWMyZmNiMzhkZTQzYTQ0OWNiOGYwMzdkYzJifDM5NzEzNTk5NDAiIHR5cGU9ImhpZGRlbiI+CgkJCQkJCQkJCQkJPGlucHV0IG5hbWU9InNlbmRUb0FERkZvcm1hdCIgdmFsdWU9IiIgdHlwZT0iaGlkZGVuIj4KCQkJCQkJCQkJCQk8aW5wdXQgbmFtZT0ibWFpbElEIiB2YWx1ZT0iRGVhbGVyQXBwb2ludG1lbnQiIHR5cGU9ImhpZGRlbiI+CgkJCQkJCQkJCQkJPGlucHV0IG5hbWU9InBvcHVwT2ZmZXJUeXBlIiB2YWx1ZT0iRGVhbGVyQXBwb2ludG1lbnRBbGwiIHR5cGU9ImhpZGRlbiI+CgoJCQkJCQkJCQkJCTxkaXYgY2xhc3M9ImxlYWRFbWFpbCIgaGlkZGVuPgoJCQkJCQkJCQkJCQk8c3BhbiBkYXRhLXN1YmplY3Q+TGVhZCA6IERlbWFuZGUgZGUgcmVuZGV6LXZvdXM8L3NwYW4+CgkJCQkJCQkJCQkJCTxzcGFuIGRhdGEtYm9keT5Cb25qb3VyLDxicj48YnI+VW4gY2xpZW50IHBvdGVudGllbCBheWFudCB2aXNpdMOpIHZvdHJlIHNpdGUgd2ViLCBhaW1lcmFpdCBwcmVuZHJlIHVuIHJlbmRlei12b3VzOjxicj48YnI+PHU+UmVuc2VpZ25lbWVudHMgc3VyIGxlIHbDqWhpY3VsZTwvdT46PGJyPk1vZMOobGU6IDxzdHJvbmc+ICA8L3N0cm9uZz48YnI+TklWOiA8c3Ryb25nPnskVklOfTwvc3Ryb25nPjxicj5OdW3DqXJvIGRlIHN0b2NrOiA8c3Ryb25nPnskU1RPQ0tOVU1CRVJ9PC9zdHJvbmc+PGJyPktpbG9tw6h0cmVzOiA8c3Ryb25nPnskS019PC9zdHJvbmc+PGJyPjxicj48dT5EYXRlIGR1IHJlbmRlei12b3VzIHNvdWhhaXTDqTwvdT4gOiA8c3Ryb25nPnskREFURX08L3N0cm9uZz48YnI+PGJyPjx1PlJlbnNlaWduZW1lbnRzIHN1ciBsZSB2aXNpdGV1cjwvdT46PGJyPk5vbTogPHN0cm9uZz57JE5BTUV9PC9zdHJvbmc+PGJyPkNvdXJyaWVsOiA8c3Ryb25nPjxhIGhyZWY9Ij9wYXRoPW1haWx0bzolN0IlMjRFTUFJTCU3RCI+eyRFTUFJTH08L2E+PC9zdHJvbmc+PGJyPlTDqWzDqXBob25lOiA8c3Ryb25nPjxhIGhyZWY9Ij9wYXRoPXRlbDolN0IlMjRQSE9ORU5VTSU3RCI+eyRQSE9ORU5VTX08L2E+PC9zdHJvbmc+IHskUEhPTkVfVkFMSURBVElPTl9BVFRFTVBUU308YnI+PGJyPjx1PkNvbmNlc3Npb248L3U+Ojxicj5Ob20gOiA8c3Ryb25nPnskREVBTEVSTkFNRX08L3N0cm9uZz48YnI+PGJyPjxkaXYgc3R5bGU9IiMjU0VPQkxPQ0tESVNQTEFZIyMiPlNvdXJjZSBNw6lkaWE6IDxzdHJvbmc+eyRVVE1ERVRBSUxTfTwvc3Ryb25nPjxicj5OYXZpZ2F0ZXVyOiA8c3Ryb25nPnskVVNFUkFHRU5UfSAtIDwvc3Ryb25nPjxicj5IaXN0b3JpcXVlIGRlIG5hdmlnYXRpb246IDxzdHJvbmc+PGEgaHJlZj0iP3BhdGg9JTdCJTI0VVVMSU5LJTdEIiByZWw9Im5vZm9sbG93IHVnYyBzcG9uc29yZWQgbm9pbmRleCIgc3R5bGU9ImNvbG9yOmJsYWNrOyB0ZXh0LWRlY29yYXRpb246IG5vbmU7Ij5DbGlxdWV6IGljaTwvYT48L3N0cm9uZz48YnI+PC9kaXY+Q29uc2VudGVtZW50OiA8c3Ryb25nPnskQ09OU0VOVF9ERVRBSUxTfTwvc3Ryb25nPnskUFVSQ0hBU0VfSU5URU5UfTwvc3Bhbj4KCQkJCQkJCQkJCQk8L2Rpdj4KCgkJCQkJCQkJCQk8L3N0YWNrLWxjPgoJCQkJCQkJCQk8L2Zvcm0+CgkJCQkJCQkJPC9ib3gtbGM+CgkJCQkJCQk8L3N0YWNrLWxjPgoJCQkJCQk8L2JveC1sYz4KCgkJCQkJCTxkaXY+CgkJCQkJCQk8c3RhY2stbGMgY2xhc3M9ImNvbnRhY3RNYXBDb250YWluZXIgLS1zLTggLWJnLWxpZ2h0IiBpZD0iZm9vdGVyR29vZ2xlTWFwSG91cnNDb250YWluZXIiPgoKCQkJCQkJCQkKCQkJPGlmcmFtZSB0aXRsZT0iR29vZ2xlIE1hcCIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgZnJhbWVib3JkZXI9IjAiIGNsYXNzPSIgbGF6eWxvYWRlZCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL21hcHMvZW1iZWQvdjEvcGxhY2U\/cT1wbGFjZV9pZCUzQUNoSUpVWTNtV1BqZHlFd1JvS09QOTVBV2I4USZhbXA7a2V5PUFJemFTeUNYX0NwdXlFSm85bFpuODhTV1hoQ1lIZ1F3bmtMQjhHYyZhbXA7em9vbT0xNCZhbXA7cmVnaW9uPUNBJmFtcDtsYW5ndWFnZT1mciIgYWxsb3dmdWxsc2NyZWVuPSIiPjwvaWZyYW1lPgoKCQkJCQkJCQk8Ym94LWxjIGNsYXNzPSJjb250YWN0QmxvY2sgLS1zMiAtbTAiPgoJCQkJCQkJCQk8c3RhY2stbGMgY2xhc3M9Ii0tczMiPgoJCQkJCQkJCQkJPGRpdj4KCQkJCQkJCQkJCQk8c3RhY2stbGMgY2xhc3M9Ii0tcy04Ij4KCQkJCQkJCQkJCQkJPHNwYW4gY2xhc3M9Ii0tZnMwIj5BTEJJIEtpYSBNYXNjb3VjaGU8L3NwYW4+CgkJCQkJCQkJCQkJCTxhIGhyZWY9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jYS9tYXBzL2Rpci8\/YXBpPTEmYW1wO2Rlc3RpbmF0aW9uPUFMQkklMkJLaWElMkJNYXNjb3VjaGUlMkMzNjAwKythdmVudWUrZGUrbGErR2FyZSUyQ01hc2NvdWNoZSUyQ1FDJTJDSjdLKzNDMSZhbXA7aGw9ZnImYW1wO3Q9bSZhbXA7ej0xNiZhbXA7aWU9VVRGOCZhbXA7ZGVzdGluYXRpb25fcGxhY2VfaWQ9Q2hJSlVZM21XUGpkeUV3Um9LT1A5NUFXYjhRIiB0YXJnZXQ9Il9ibGFuayIgY2xhc3M9Ii0tZnMtMSI+CgkJCQkJCQkJCQkJCQk8c3Bhbj4zNjAwLCBhdmVudWUgZGUgbGEgR2FyZTwvc3Bhbj4KCQkJCQkJCQkJCQkJCTxzcGFuPk1hc2NvdWNoZSwgUUM8L3NwYW4+CgkJCQkJCQkJCQkJCQk8c3Bhbj5KN0sgM0MxPC9zcGFuPgoJCQkJCQkJCQkJCQk8L2E+CgkJCQkJCQkJCQkJPC9zdGFjay1sYz4KCQkJCQkJCQkJCTwvZGl2PgoKCQkJCQkJCQkJCTxkaXY+CgkJCQkJCQkJCQkJPHN0YWNrLWxjIGNsYXNzPSItLXMtOCI+CgkJCQkJCQkJCQkJCTxzcGFuIGNsYXNzPSItYm9sZCI+VMOpbMOpcGhvbmU8L3NwYW4+CgkJCQkJCQkJCQkJCTxzcGFuIGNsYXNzPSItLWZzLTEiPgoJCQkJCQkJCQkJCQkJPGEgaHJlZj0iP3BhdGg9dGVsOjElMjA4NTUlMjA4NjUtMjUyNCIgZGF0YS1kZXBhcnRtZW50PSJTYWxlcyIgdGl0bGU9IkNvbnRhY3QgUGhvbmUiPjEgODU1IDg2NS0yNTI0PC9hPgoJCQkJCQkJCQkJCQk8L3NwYW4+CgkJCQkJCQkJCQkJPC9zdGFjay1sYz4KCQkJCQkJCQkJCTwvZGl2PgoKCQkJCQkJCQkJCTxkaXY+CgkJCQkJCQkJCQkJPHN0YWNrLWxjIGNsYXNzPSItLXMtOCI+CgkJCQkJCQkJCQkJCTxzcGFuIGNsYXNzPSItYm9sZCI+SGV1cmVzPC9zcGFuPgoJCQkJCQkJCQkJCQkJCQk8ZGl2IGlkPSJpdGVtX25ldyI+CgkJCQk8c3RhY2stbGMgY2xhc3M9ImhvdXJzTGlzdCI+CgkJCQkJCQkJCTxib3gtbGMgY2xhc3M9ImZsZXgtYmV0d2VlbiAtLWZzLTEgLS1zLTgiIGRhdGEtbWluaG91cj0iMDk6MDAiIGRhdGEtbWF4aG91cj0iMjA6MDAiIGRhdGEtY2xvc2VkPSIwIj4KCQkJCQk8c3BhbiBjbGFzcz0iZGF5Ij5MdW5kaTwvc3Bhbj4KCQkJCQk8c3BhbiBjbGFzcz0iaG91cnMiPjA5OjAwIC0gMjA6MDA8L3NwYW4+CgkJCQk8L2JveC1sYz4JCQkJPGJveC1sYyBjbGFzcz0iZmxleC1iZXR3ZWVuIC0tZnMtMSAtLXMtOCIgZGF0YS1taW5ob3VyPSIwOTowMCIgZGF0YS1tYXhob3VyPSIyMDowMCIgZGF0YS1jbG9zZWQ9IjAiPgoJCQkJCTxzcGFuIGNsYXNzPSJkYXkiPk1hcmRpPC9zcGFuPgoJCQkJCTxzcGFuIGNsYXNzPSJob3VycyI+MDk6MDAgLSAyMDowMDwvc3Bhbj4KCQkJCTwvYm94LWxjPgkJCQk8Ym94LWxjIGNsYXNzPSJmbGV4LWJldHdlZW4gLS1mcy0xIC0tcy04IiBkYXRhLW1pbmhvdXI9IjA5OjAwIiBkYXRhLW1heGhvdXI9IjIwOjAwIiBkYXRhLWNsb3NlZD0iMCI+CgkJCQkJPHNwYW4gY2xhc3M9ImRheSI+TWVyY3JlZGk8L3NwYW4+CgkJCQkJPHNwYW4gY2xhc3M9ImhvdXJzIj4wOTowMCAtIDIwOjAwPC9zcGFuPgoJCQkJPC9ib3gtbGM+CQkJCTxib3gtbGMgY2xhc3M9ImZsZXgtYmV0d2VlbiAtLWZzLTEgLS1zLTgiIGRhdGEtbWluaG91cj0iMDk6MDAiIGRhdGEtbWF4aG91cj0iMjA6MDAiIGRhdGEtY2xvc2VkPSIwIj4KCQkJCQk8c3BhbiBjbGFzcz0iZGF5Ij5KZXVkaTwvc3Bhbj4KCQkJCQk8c3BhbiBjbGFzcz0iaG91cnMiPjA5OjAwIC0gMjA6MDA8L3NwYW4+CgkJCQk8L2JveC1sYz4JCQkJPGJveC1sYyBjbGFzcz0iZmxleC1iZXR3ZWVuIC0tZnMtMSAtLXMtOCIgZGF0YS1taW5ob3VyPSIwOTowMCIgZGF0YS1tYXhob3VyPSIyMDowMCIgZGF0YS1jbG9zZWQ9IjAiPgoJCQkJCTxzcGFuIGNsYXNzPSJkYXkiPlZlbmRyZWRpPC9zcGFuPgoJCQkJCTxzcGFuIGNsYXNzPSJob3VycyI+MDk6MDAgLSAyMDowMDwvc3Bhbj4KCQkJCTwvYm94LWxjPgkJCQk8Ym94LWxjIGNsYXNzPSJmbGV4LWJldHdlZW4gLS1mcy0xIC0tcy04IiBkYXRhLW1pbmhvdXI9IjA5OjAwIiBkYXRhLW1heGhvdXI9IjE3OjAwIiBkYXRhLWNsb3NlZD0iMCI+CgkJCQkJPHNwYW4gY2xhc3M9ImRheSI+U2FtZWRpPC9zcGFuPgoJCQkJCTxzcGFuIGNsYXNzPSJob3VycyI+MDk6MDAgLSAxNzowMDwvc3Bhbj4KCQkJCTwvYm94LWxjPgkJCQk8Ym94LWxjIGNsYXNzPSJmbGV4LWJldHdlZW4gLS1mcy0xIC0tcy04IiBkYXRhLW1pbmhvdXI9IjAiIGRhdGEtbWF4aG91cj0iMCIgZGF0YS1jbG9zZWQ9IjEiPgoJCQkJCTxzcGFuIGNsYXNzPSJkYXkiPkRpbWFuY2hlPC9zcGFuPgoJCQkJCTxzcGFuIGNsYXNzPSJob3VycyI+RmVybcOpPC9zcGFuPgoJCQkJPC9ib3gtbGM+CgkJCQk8L3N0YWNrLWxjPgoJCQk8L2Rpdj4KCQkJCQkJCQkJCQk8L3N0YWNrLWxjPgoJCQkJCQkJCQkJPC9kaXY+CgoJCQkJCQkJCQk8L3N0YWNrLWxjPgoJCQkJCQkJCTwvYm94LWxjPgoKCQkJCQkJCTwvc3RhY2stbGM+CgkJCQkJCTwvZGl2PgoKCQkJCQk8L2Rpdj4KCQkJCTwvc2lkZWJhci1sYz4KCQkJCTwvZGl2PgoJCQkJPC9kaXY+CgoJCQkJCgoJCQkJPCEtLSBPTzo6NzEzYTZhYjFiODg0YWI4OWIwNDUzNzNjMDljNTU5MDEgLS0+CgogICAgICAgPCEtLSBNQUlOIFBPUFVQIG5ldyBTY3JhdGNoQW5kU2F2ZVBvcHVwIC0tPgoJCQoJCTxkaXYgaWQ9InNjcmF0Y2hBbmRTYXZlUG9wdXBDb250YWluZXJfbmV3IiBjbGFzcz0icmV2ZWFsLW1vZGFsIHNuc19wb3B1cCIgc3R5bGU9IndpZHRoOjIzMHB4O2hlaWdodDo0NTBweDtwYWRkaW5nOjVweDsiIGRhdGEtbGF6eWxvYWRpZD0ibmV3Y2Fyc19zY3JhdGNoYW5kc2F2ZXBvcHVwY29udGFpbmVyX25ldyI+CgkJCQoJCTwvZGl2PgoKCQk8IS0tIE9POjoxYTRlZmE3MDM4YmQzZGFhNzY1OGIzNDQzY2Y2Mzk4MSAtLT4KCgkJCgkJCjwhLS0gRU5EIG5ldyAtLT4KCjwhLS0gQ1JFRElUIFNDT1JFIFBPUFVQIC0tPgoJCQoJCTxkaXYgaWQ9ImNyZWRpdFNjb3JlUG9wdXBDb250YWluZXIiIGNsYXNzPSJyZXZlYWwtbW9kYWwgIiBzdHlsZT0id2lkdGg6MzIwcHg7aGVpZ2h0OjYwMHB4OyIgZGF0YS1sYXp5bG9hZGlkPSJuZXdjYXJzX2NyZWRpdHNjb3JlcG9wdXBjb250YWluZXIiPgoJCQkKCQk8L2Rpdj4KCgkJPCEtLSBPTzo6Y2U5NzU5ODdmNDNhOGVlMTMyMDRkYzFmMGJkNjI4MGUgLS0+CgoJCQoKICAgIDxkaXYgaWQ9ImVtYWlsU3VjY2Vzc01lc3NhZ2VfY3JlZGl0U2NvcmVQb3B1cENvbnRhaW5lciIgY2xhc3M9InJldmVhbC1tb2RhbCBlbWFpbC1jb25zZW50LWJveCIgc3R5bGU9IndpZHRoOjYwJTsiPgogICAgICA8ZGl2IGNsYXNzPSJpY29uLXRpdGxlIj4KICAgICAgICA8IS0tIDxzcGFuIGNsYXNzPSJ0aXRsZS1pY29uIHN1Y2Nlc3MgLW1sMCI+PC9zcGFuPiAtLT4KICAgICAgICA8c3BhbiBjbGFzcz0idGl0bGUtdHh0Ij5Wb3RyZSBkZW1hbmRlIGEgYmllbiDDqXTDqSBlbnZvecOpZSE8L3NwYW4+CiAgICAgIDwvZGl2PgogICAgICA8cCBjbGFzcz0iZGVmYXVsdFN1Y2Nlc3MiPjxicj5NZXJjaSEgVW4gY29uc2VpbGxlciBjb21tdW5pcXVlcmEgYXZlYyB2b3VzIHBvdXIgdm91cyBkb25uZXIgbGVzIGTDqXRhaWxzIHN1ciB2b3RyZSBwb3RlbnRpZWwgZGUgY3LDqWRpdC48L3A+CiAgICAgIDxwIGNsYXNzPSJzZXJ2aWNlU3VjY2VzcyIgc3R5bGU9ImRpc3BsYXk6bm9uZTsiPjxicj5NZXJjaSEgVW4gY29uc2VpbGxlciBjb21tdW5pcXVlcmEgYXZlYyB2b3VzIHBvdXIgdm91cyBkb25uZXIgbGVzIGTDqXRhaWxzIHN1ciB2b3RyZSBwb3RlbnRpZWwgZGUgY3LDqWRpdC48L3A+CiAgICAgIDwhLS0gPGEgY2xhc3M9ImNsb3NlLXJldmVhbC1tb2RhbCI+JiMyMTU7PC9hPiAtLT4KICAgICAgPGRpdiBjbGFzcz0iZW1haWwtY29uc2VudC1idG5zIC1wdDIwIC1yaWdodCBhbXBDb25zZW50UmVzcG9uc2VTZW5kRGlzbWlzcyI+CiAgICAgICAgPGEgaHJlZj0iP3BhdGg9IyIgY2xhc3M9IiAtdXBwZXJjYXNlIGJ0bi1kZWZhdWx0ICIgb25jbGljaz0iJCgnLmNsb3NlLXJldmVhbC1tb2RhbDp2aXNpYmxlJykudHJpZ2dlcignY2xpY2snKTtyZXR1cm4gZmFsc2U7Ij5GZXJtZXI8L2E+CiAgICAgIDwvZGl2PgogICAgICA8Zm9ybSBpZD0iZW1haWxtc2dmcm1fY3JlZGl0U2NvcmVQb3B1cENvbnRhaW5lciIgY2xhc3M9ImNvbmZpcm1faHRtbCIgdGFyZ2V0PSJpZnJhbWUiIG1ldGhvZD0icG9zdCIgYWN0aW9uPSIvY29uZmlybWF0aW9uLmh0bWwiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJsYWJlbCIgY2xhc3M9ImxhYmVsZW1haWwiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJzZWN0aW9uIiBjbGFzcz0ibGFiZWxzZWN0aW9uIiB2YWx1ZT0iT2NjYXNpb24iPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJicmFuZCIgY2xhc3M9ImJyYW5kZW1haWwiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJtb2RlbCIgY2xhc3M9Im1vZGVsZW1haWwiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJ5ZWFyIiBjbGFzcz0ieWVhcmVtYWlsIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZ29vZ2xlaWQiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJnb29nbGVpZGQyY21lZGlhIiB2YWx1ZT0iIj4KCQkJCQkJICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhZHdvcmRzY29uaWQiIHZhbHVlPSI5NzA5MTEyMzIiPgoJCQkJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYWR3b3Jkc2xhYmVsaWQiIHZhbHVlPSJEeXJjQ095dW4yMFFnTno3emdNIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYmluZ2NvbmlkIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYmluZ2FjdGlvbmlkIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYmluZ2RvbWFpbmlkIiB2YWx1ZT0iIj4KCiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImFkcm9sbEFkdiIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImFkcm9sbFBpeCIgdmFsdWU9IiI+CgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJmYWNlYm9va0NvbklkIiB2YWx1ZT0iIj4KCiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImRvbWFpbiIgdmFsdWU9ImFsYmlraWEuY29tIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0icmVmZXJyZXIiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJkZXBhcnRtZW50IiB2YWx1ZT0iTkVXIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ibGVhZF9kZXBhcnRtZW50IiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iaXNleHByZXNzIiBjbGFzcz0iaXNleHByZXNzIiB2YWx1ZT0iMCI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImlzcHJvbW8iIHZhbHVlPSIwIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iaXNob21lcGFnZSIgdmFsdWU9IjAiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJ0ZXN0bW9kZSIgY2xhc3M9InRlc3Rtb2RlIiB2YWx1ZT0iMCI+CgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJsZWFkVHlwZSIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InBhZ2VJRCIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImN1cnJlbnRVUkwiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJpc0NvbmZpcm1Qb3B1cCIgdmFsdWU9IiI+CgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJjb25maXJtX2VtYWlsIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iY29uZmlybV9maXJzdF9uYW1lIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iY29uZmlybV9sYXN0X25hbWUiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJjb25maXJtX3Bob25lX251bWJlciIgdmFsdWU9IiI+CgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJpc0Z1bGxXaWR0aCIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImRlYWxlck5hbWUiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJidXR0b25Qb3NpdGlvbiIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImlzTW9iaWxlTmV3VkRQIiB2YWx1ZT0iMSI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImZyb21BdXRvQXViYWluZSIgdmFsdWU9IiI+CgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iTkVXIiBuYW1lPSJ0ZXh0Q2FyU2VjdGlvblR5cGUiIHN0eWxlPSJkaXNwbGF5Om5vbmU7Ij4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ibGFuZyIgdmFsdWU9ImZyIj4KICAgICAgPC9mb3JtPgogICAgICA8aWZyYW1lIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIG5hbWU9ImlmcmFtZSIgZnJhbWVib3JkZXI9IjAiIHN0eWxlPSJ3aWR0aDoxcHg7aGVpZ2h0OjFweDsiPjwvaWZyYW1lPgogICAgPC9kaXY+CgogICAgPGRpdiBpZD0iZW1haWxGYWlsTWVzc2FnZV9jcmVkaXRTY29yZVBvcHVwQ29udGFpbmVyIiBjbGFzcz0icmV2ZWFsLW1vZGFsIGVtYWlsLWNvbnNlbnQtYm94IiBzdHlsZT0id2lkdGg6NjAlOyI+CiAgICAgIDxzcGFuIGNsYXNzPSJmYWlsIj5VbmUgZXJyZXVyIHMnZXN0IHByb2R1aXRlPC9zcGFuPgogICAgICA8cD5Ob3VzIG4nYXZvbnMgcGFzIHB1IGVudm95ZXIgdm90cmUgbWVzc2FnZS4gUydpbCB2b3VzIHBsYcOudCByYWZyYcOuY2hpciBldCBlc3NheWV6IMOgIG5vdXZlYXUuPC9wPgogICAgICA8ZGl2IGNsYXNzPSJjbG9zZS1yZXZlYWwtbW9kYWwiPjxlbSBjbGFzcz0iZmEgZmEtdGltZXMtY2lyY2xlIj48L2VtPjwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSItcHQyMCAtcmlnaHQgYW1wQ29uc2VudFJlc3BvbnNlU2VuZERpc21pc3MiPgogICAgICAgIDxpbnB1dCB0eXBlPSJidXR0b24iIGNsYXNzPSIgLXVwcGVyY2FzZSBidG4tZGVmYXVsdCAiIG9uY2xpY2s9IiQoJyNlbWFpbEZhaWxNZXNzYWdlJykudHJpZ2dlcigncmV2ZWFsOmNsb3NlJyk7IiB2YWx1ZT0iRmVybWVyIj4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCgoJCQkJPCEtLSBPTzo6ZDY2ZjVkOTQ4NTk3NDJjNmE1MWY4YmFkOWMwZGZhZTAgLS0+CgkJCjwhLS0gRU5EIENSRURJVCBTQ09SRSBQT1BVUCAtLT4KCjwhLS0gQ1JFRElUIFNDT1JFIENPTkZJUk0gUE9QVVAgLS0+CgkJCgkJPGRpdiBpZD0iY3JlZGl0U2NvcmVDb25maXJtUG9wdXBDb250YWluZXIiIGNsYXNzPSJyZXZlYWwtbW9kYWwgIiBzdHlsZT0id2lkdGg6MzAwcHg7bWluLWhlaWdodDo1MDBweDsiIGRhdGEtbGF6eWxvYWRpZD0ibmV3Y2Fyc19jcmVkaXRzY29yZWNvbmZpcm1wb3B1cGNvbnRhaW5lciI+CgkJCQoJCTwvZGl2PgoKCQk8IS0tIE9POjo3ZGQyNGMyMzRjYzMyM2NkODA5MWQ3YzZmOTMwNmVmZSAtLT4KCgkJCgogICAgPGRpdiBpZD0iZW1haWxTdWNjZXNzTWVzc2FnZV9jcmVkaXRTY29yZUNvbmZpcm1Qb3B1cENvbnRhaW5lciIgY2xhc3M9InJldmVhbC1tb2RhbCBlbWFpbC1jb25zZW50LWJveCIgc3R5bGU9IndpZHRoOjYwJTsiPgogICAgICA8ZGl2IGNsYXNzPSJpY29uLXRpdGxlIj4KICAgICAgICA8IS0tIDxzcGFuIGNsYXNzPSJ0aXRsZS1pY29uIHN1Y2Nlc3MgLW1sMCI+PC9zcGFuPiAtLT4KICAgICAgICA8c3BhbiBjbGFzcz0idGl0bGUtdHh0Ij5Wb3RyZSBkZW1hbmRlIGEgYmllbiDDqXTDqSBlbnZvecOpZSE8L3NwYW4+CiAgICAgIDwvZGl2PgogICAgICA8cCBjbGFzcz0iZGVmYXVsdFN1Y2Nlc3MiPjxicj5NZXJjaSEgVW4gY29uc2VpbGxlciBjb21tdW5pcXVlcmEgYXZlYyB2b3VzIHBvdXIgdm91cyBkb25uZXIgbGVzIGTDqXRhaWxzIHN1ciB2b3RyZSBwb3RlbnRpZWwgZGUgY3LDqWRpdC48L3A+CiAgICAgIDxwIGNsYXNzPSJzZXJ2aWNlU3VjY2VzcyIgc3R5bGU9ImRpc3BsYXk6bm9uZTsiPjxicj5NZXJjaSEgVW4gY29uc2VpbGxlciBjb21tdW5pcXVlcmEgYXZlYyB2b3VzIHBvdXIgdm91cyBkb25uZXIgbGVzIGTDqXRhaWxzIHN1ciB2b3RyZSBwb3RlbnRpZWwgZGUgY3LDqWRpdC48L3A+CiAgICAgIDwhLS0gPGEgY2xhc3M9ImNsb3NlLXJldmVhbC1tb2RhbCI+JiMyMTU7PC9hPiAtLT4KICAgICAgPGRpdiBjbGFzcz0iZW1haWwtY29uc2VudC1idG5zIC1wdDIwIC1yaWdodCBhbXBDb25zZW50UmVzcG9uc2VTZW5kRGlzbWlzcyI+CiAgICAgICAgPGEgaHJlZj0iP3BhdGg9IyIgY2xhc3M9IiAtdXBwZXJjYXNlIGJ0bi1kZWZhdWx0ICIgb25jbGljaz0iJCgnLmNsb3NlLXJldmVhbC1tb2RhbDp2aXNpYmxlJykudHJpZ2dlcignY2xpY2snKTtyZXR1cm4gZmFsc2U7Ij5GZXJtZXI8L2E+CiAgICAgIDwvZGl2PgogICAgICA8Zm9ybSBpZD0iZW1haWxtc2dmcm1fY3JlZGl0U2NvcmVDb25maXJtUG9wdXBDb250YWluZXIiIGNsYXNzPSJjb25maXJtX2h0bWwiIHRhcmdldD0iaWZyYW1lIiBtZXRob2Q9InBvc3QiIGFjdGlvbj0iL2NvbmZpcm1hdGlvbi5odG1sIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ibGFiZWwiIGNsYXNzPSJsYWJlbGVtYWlsIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ic2VjdGlvbiIgY2xhc3M9ImxhYmVsc2VjdGlvbiIgdmFsdWU9Ik9jY2FzaW9uIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYnJhbmQiIGNsYXNzPSJicmFuZGVtYWlsIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ibW9kZWwiIGNsYXNzPSJtb2RlbGVtYWlsIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ieWVhciIgY2xhc3M9InllYXJlbWFpbCIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9Imdvb2dsZWlkIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZ29vZ2xlaWRkMmNtZWRpYSIgdmFsdWU9IiI+CgkJCQkJCSAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYWR3b3Jkc2NvbmlkIiB2YWx1ZT0iOTcwOTExMjMyIj4KCQkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImFkd29yZHNsYWJlbGlkIiB2YWx1ZT0iRHlyY0NPeXVuMjBRZ056N3pnTSI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImJpbmdjb25pZCIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImJpbmdhY3Rpb25pZCIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImJpbmdkb21haW5pZCIgdmFsdWU9IiI+CgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhZHJvbGxBZHYiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhZHJvbGxQaXgiIHZhbHVlPSIiPgoKICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZmFjZWJvb2tDb25JZCIgdmFsdWU9IiI+CgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJkb21haW4iIHZhbHVlPSJhbGJpa2lhLmNvbSI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InJlZmVycmVyIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZGVwYXJ0bWVudCIgdmFsdWU9Ik5FVyI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImxlYWRfZGVwYXJ0bWVudCIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImlzZXhwcmVzcyIgY2xhc3M9ImlzZXhwcmVzcyIgdmFsdWU9IjAiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJpc3Byb21vIiB2YWx1ZT0iMCI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImlzaG9tZXBhZ2UiIHZhbHVlPSIwIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0idGVzdG1vZGUiIGNsYXNzPSJ0ZXN0bW9kZSIgdmFsdWU9IjAiPgoKICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ibGVhZFR5cGUiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJwYWdlSUQiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJjdXJyZW50VVJMIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iaXNDb25maXJtUG9wdXAiIHZhbHVlPSIiPgoKICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iY29uZmlybV9lbWFpbCIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImNvbmZpcm1fZmlyc3RfbmFtZSIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImNvbmZpcm1fbGFzdF9uYW1lIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iY29uZmlybV9waG9uZV9udW1iZXIiIHZhbHVlPSIiPgoKICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iaXNGdWxsV2lkdGgiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJkZWFsZXJOYW1lIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYnV0dG9uUG9zaXRpb24iIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJpc01vYmlsZU5ld1ZEUCIgdmFsdWU9IjEiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJmcm9tQXV0b0F1YmFpbmUiIHZhbHVlPSIiPgoKICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgdmFsdWU9Ik5FVyIgbmFtZT0idGV4dENhclNlY3Rpb25UeXBlIiBzdHlsZT0iZGlzcGxheTpub25lOyI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImxhbmciIHZhbHVlPSJmciI+CiAgICAgIDwvZm9ybT4KICAgICAgPGlmcmFtZSB3aWR0aD0iMSIgaGVpZ2h0PSIxIiBuYW1lPSJpZnJhbWUiIGZyYW1lYm9yZGVyPSIwIiBzdHlsZT0id2lkdGg6MXB4O2hlaWdodDoxcHg7Ij48L2lmcmFtZT4KICAgIDwvZGl2PgoKICAgIDxkaXYgaWQ9ImVtYWlsRmFpbE1lc3NhZ2VfY3JlZGl0U2NvcmVDb25maXJtUG9wdXBDb250YWluZXIiIGNsYXNzPSJyZXZlYWwtbW9kYWwgZW1haWwtY29uc2VudC1ib3giIHN0eWxlPSJ3aWR0aDo2MCU7Ij4KICAgICAgPHNwYW4gY2xhc3M9ImZhaWwiPlVuZSBlcnJldXIgcydlc3QgcHJvZHVpdGU8L3NwYW4+CiAgICAgIDxwPk5vdXMgbidhdm9ucyBwYXMgcHUgZW52b3llciB2b3RyZSBtZXNzYWdlLiBTJ2lsIHZvdXMgcGxhw650IHJhZnJhw65jaGlyIGV0IGVzc2F5ZXogw6Agbm91dmVhdS48L3A+CiAgICAgIDxkaXYgY2xhc3M9ImNsb3NlLXJldmVhbC1tb2RhbCI+PGVtIGNsYXNzPSJmYSBmYS10aW1lcy1jaXJjbGUiPjwvZW0+PC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9Ii1wdDIwIC1yaWdodCBhbXBDb25zZW50UmVzcG9uc2VTZW5kRGlzbWlzcyI+CiAgICAgICAgPGlucHV0IHR5cGU9ImJ1dHRvbiIgY2xhc3M9IiAtdXBwZXJjYXNlIGJ0bi1kZWZhdWx0ICIgb25jbGljaz0iJCgnI2VtYWlsRmFpbE1lc3NhZ2UnKS50cmlnZ2VyKCdyZXZlYWw6Y2xvc2UnKTsiIHZhbHVlPSJGZXJtZXIiPgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKCgkJCQk8IS0tIE9POjozNjM4N2Q5MjA5Njg3OGQ3OWIwNTY5MTVlY2I1MzQ4ZiAtLT4KCQkKPCEtLSBFTkQgQ1JFRElUIFNDT1JFIENPTkZJUk0gUE9QVVAgLS0+CgoJCQoJCTxkaXYgaWQ9ImNvbnRhY3Rwb3B1cCIgY2xhc3M9InJldmVhbC1tb2RhbCAiIHN0eWxlPSJ3aWR0aDo4MCU7IiBkYXRhLWxhenlsb2FkaWQ9Im5ld2NhcnNfY29udGFjdHBvcHVwIj4KCQkJCgkJPC9kaXY+CgoJCTwhLS0gT086OjhmMWQ4OTI4YjA4OTIxMmQ5ZTIyMTAyNWQ3ZDMxM2Q0IC0tPgoKCQkKCiAgICA8ZGl2IGlkPSJlbWFpbFN1Y2Nlc3NNZXNzYWdlX2NvbnRhY3Rwb3B1cCIgY2xhc3M9InJldmVhbC1tb2RhbCBlbWFpbC1jb25zZW50LWJveCIgc3R5bGU9IndpZHRoOjYwJTsiPgogICAgICA8ZGl2IGNsYXNzPSJpY29uLXRpdGxlIj4KICAgICAgICA8IS0tIDxzcGFuIGNsYXNzPSJ0aXRsZS1pY29uIHN1Y2Nlc3MgLW1sMCI+PC9zcGFuPiAtLT4KICAgICAgICA8c3BhbiBjbGFzcz0idGl0bGUtdHh0Ij5Wb3RyZSBtZXNzYWdlIGEgYmllbiDDqXTDqSBlbnZvecOpITwvc3Bhbj4KICAgICAgPC9kaXY+CiAgICAgIDxwIGNsYXNzPSJkZWZhdWx0U3VjY2VzcyI+PGJyPk1lcmNpISBVbiBtZW1icmUgZGUgbm90cmUgw6lxdWlwZSB2b3VzIGNvbnRhY3RlcmEgc291cyBwZXUuPC9wPgogICAgICA8cCBjbGFzcz0ic2VydmljZVN1Y2Nlc3MiIHN0eWxlPSJkaXNwbGF5Om5vbmU7Ij48YnI+TWVyY2khIFVuIG1lbWJyZSBkZSBub3RyZSDDqXF1aXBlIHZvdXMgY29udGFjdGVyYSBzb3VzIHBldS48L3A+CiAgICAgIDwhLS0gPGEgY2xhc3M9ImNsb3NlLXJldmVhbC1tb2RhbCI+JiMyMTU7PC9hPiAtLT4KICAgICAgPGRpdiBjbGFzcz0iZW1haWwtY29uc2VudC1idG5zIC1wdDIwIC1yaWdodCBhbXBDb25zZW50UmVzcG9uc2VTZW5kRGlzbWlzcyI+CiAgICAgICAgPGEgaHJlZj0iP3BhdGg9IyIgY2xhc3M9IiAtdXBwZXJjYXNlIGJ0bi1kZWZhdWx0ICIgb25jbGljaz0iJCgnLmNsb3NlLXJldmVhbC1tb2RhbDp2aXNpYmxlJykudHJpZ2dlcignY2xpY2snKTtyZXR1cm4gZmFsc2U7Ij5GZXJtZXI8L2E+CiAgICAgIDwvZGl2PgogICAgICA8Zm9ybSBpZD0iZW1haWxtc2dmcm1fY29udGFjdHBvcHVwIiBjbGFzcz0iY29uZmlybV9odG1sIiB0YXJnZXQ9ImlmcmFtZSIgbWV0aG9kPSJwb3N0IiBhY3Rpb249Ii9jb25maXJtYXRpb24uaHRtbCI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImxhYmVsIiBjbGFzcz0ibGFiZWxlbWFpbCIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InNlY3Rpb24iIGNsYXNzPSJsYWJlbHNlY3Rpb24iIHZhbHVlPSJPY2Nhc2lvbiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImJyYW5kIiBjbGFzcz0iYnJhbmRlbWFpbCIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9Im1vZGVsIiBjbGFzcz0ibW9kZWxlbWFpbCIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InllYXIiIGNsYXNzPSJ5ZWFyZW1haWwiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJnb29nbGVpZCIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9Imdvb2dsZWlkZDJjbWVkaWEiIHZhbHVlPSIiPgoJCQkJCQkgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImFkd29yZHNjb25pZCIgdmFsdWU9Ijk3MDkxMTIzMiI+CgkJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhZHdvcmRzbGFiZWxpZCIgdmFsdWU9IkR5cmNDT3l1bjIwUWdOejd6Z00iPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJiaW5nY29uaWQiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJiaW5nYWN0aW9uaWQiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJiaW5nZG9tYWluaWQiIHZhbHVlPSIiPgoKICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYWRyb2xsQWR2IiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYWRyb2xsUGl4IiB2YWx1ZT0iIj4KCiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImZhY2Vib29rQ29uSWQiIHZhbHVlPSIiPgoKICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZG9tYWluIiB2YWx1ZT0iYWxiaWtpYS5jb20iPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJyZWZlcnJlciIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImRlcGFydG1lbnQiIHZhbHVlPSJORVciPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJsZWFkX2RlcGFydG1lbnQiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJpc2V4cHJlc3MiIGNsYXNzPSJpc2V4cHJlc3MiIHZhbHVlPSIwIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iaXNwcm9tbyIgdmFsdWU9IjAiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJpc2hvbWVwYWdlIiB2YWx1ZT0iMCI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InRlc3Rtb2RlIiBjbGFzcz0idGVzdG1vZGUiIHZhbHVlPSIwIj4KCiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImxlYWRUeXBlIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0icGFnZUlEIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iY3VycmVudFVSTCIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImlzQ29uZmlybVBvcHVwIiB2YWx1ZT0iIj4KCiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImNvbmZpcm1fZW1haWwiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJjb25maXJtX2ZpcnN0X25hbWUiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJjb25maXJtX2xhc3RfbmFtZSIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImNvbmZpcm1fcGhvbmVfbnVtYmVyIiB2YWx1ZT0iIj4KCiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImlzRnVsbFdpZHRoIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZGVhbGVyTmFtZSIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImJ1dHRvblBvc2l0aW9uIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iaXNNb2JpbGVOZXdWRFAiIHZhbHVlPSIxIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZnJvbUF1dG9BdWJhaW5lIiB2YWx1ZT0iIj4KCiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIHZhbHVlPSJORVciIG5hbWU9InRleHRDYXJTZWN0aW9uVHlwZSIgc3R5bGU9ImRpc3BsYXk6bm9uZTsiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJsYW5nIiB2YWx1ZT0iZnIiPgogICAgICA8L2Zvcm0+CiAgICAgIDxpZnJhbWUgd2lkdGg9IjEiIGhlaWdodD0iMSIgbmFtZT0iaWZyYW1lIiBmcmFtZWJvcmRlcj0iMCIgc3R5bGU9IndpZHRoOjFweDtoZWlnaHQ6MXB4OyI+PC9pZnJhbWU+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGlkPSJlbWFpbEZhaWxNZXNzYWdlX2NvbnRhY3Rwb3B1cCIgY2xhc3M9InJldmVhbC1tb2RhbCBlbWFpbC1jb25zZW50LWJveCIgc3R5bGU9IndpZHRoOjYwJTsiPgogICAgICA8c3BhbiBjbGFzcz0iZmFpbCI+VW5lIGVycmV1ciBzJ2VzdCBwcm9kdWl0ZTwvc3Bhbj4KICAgICAgPHA+Tm91cyBuJ2F2b25zIHBhcyBwdSBlbnZveWVyIHZvdHJlIG1lc3NhZ2UuIFMnaWwgdm91cyBwbGHDrnQgcmFmcmHDrmNoaXIgZXQgZXNzYXlleiDDoCBub3V2ZWF1LjwvcD4KICAgICAgPGRpdiBjbGFzcz0iY2xvc2UtcmV2ZWFsLW1vZGFsIj48ZW0gY2xhc3M9ImZhIGZhLXRpbWVzLWNpcmNsZSI+PC9lbT48L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0iLXB0MjAgLXJpZ2h0IGFtcENvbnNlbnRSZXNwb25zZVNlbmREaXNtaXNzIj4KICAgICAgICA8aW5wdXQgdHlwZT0iYnV0dG9uIiBjbGFzcz0iIC11cHBlcmNhc2UgYnRuLWRlZmF1bHQgIiBvbmNsaWNrPSIkKCcjZW1haWxGYWlsTWVzc2FnZScpLnRyaWdnZXIoJ3JldmVhbDpjbG9zZScpOyIgdmFsdWU9IkZlcm1lciI+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CgoKCQkJCTwhLS0gT086OjNkNzg1NDI3NDEyNWVhNjliMDI0NTc1NjQ2YTY5OGRjIC0tPgoJCQoKCjwhLS0gRklOQU5DRSBNVUxUSVNURVAgUE9QVVAgbmV3IC0tPgoJCQoJCTxkaXYgaWQ9ImZpbmFuY2VNdWx0aXN0ZXBQb3B1cENvbnRhaW5lciIgY2xhc3M9InJldmVhbC1tb2RhbCAiIHN0eWxlPSJ3aWR0aDozMjBweDtoZWlnaHQ6NDk1cHg7cGFkZGluZzozMHB4IDEwcHggODBweDsiIGRhdGEtbGF6eWxvYWRpZD0ibmV3Y2Fyc19maW5hbmNlbXVsdGlzdGVwcG9wdXBjb250YWluZXIiPgoJCQkKCQk8L2Rpdj4KCgkJPCEtLSBPTzo6YjZjNjk3OWE2MjYwYzk4ZGMzZTRhMjlmZTk1ZjkxN2IgLS0+CgoJCQoJCQo8IS0tIEVORCBuZXcgLS0+Cgo8IS0tIEZJTkFOQ0UgTVVMVElTVEVQIElOU1RBTlQgLS0+Cgo8IS0tIEVORCBGSU5BTkNFIE1VTFRJU1RFUCBJTlNUQU5UIC0tPgoKPCEtLSBDUkVESVQgQk9PU1QgTVVMVEkgLS0+Cgo8IS0tIEVORCBDUkVESVQgQk9PU1QgTVVMVEkgLS0+Cgo8IS0tIFNFQ09ORCBDSEFOQ0UgUE9QVVAgbmV3IC0tPgoKPCEtLSBFTkQgbmV3IC0tPgoKPCEtLSBSRVRVUk4gUE9QVVAgbmV3IC0tPgoKPCEtLSBFTkQgbmV3IC0tPgoKPCEtLSBFWElUIFBPUFVQIG5ldyAtLT4KCjwhLS0gRU5EIG5ldyAtLT4KCjwhLS0gQkVTVCBQUkFDVElDRSBQT1BVUCBuZXcgLS0+Cgo8IS0tIEVORCBuZXcgLS0+CiAgICAgICAJCQoJCTxkaXYgaWQ9InBheW1lbnRDYWxjdWxhdG9yUG9wdXBDb250YWluZXIiIGNsYXNzPSJyZXZlYWwtbW9kYWwgIiBzdHlsZT0id2lkdGg6ODIlO21pbi1oZWlnaHQ6NzMwcHg7bWluLXdpZHRoOjM1MHB4OyIgZGF0YS1sYXp5bG9hZGlkPSJuZXdjYXJzX3BheW1lbnRjYWxjdWxhdG9ycG9wdXBjb250YWluZXIiPgoJCQkKCQk8L2Rpdj4KCgkJPCEtLSBPTzo6ZjRkZGQzODRhODk1YjZkZjMwMDZhYTE2ZDhjYzY0YTkgLS0+CgoJCQoJCQogICAgICAgCQkKCQk8ZGl2IGlkPSJtb3RvaW5zaWdodFNob3BQb3B1cENvbnRhaW5lciIgY2xhc3M9InJldmVhbC1tb2RhbCAiIHN0eWxlPSJ3aWR0aDo4NSU7aGVpZ2h0Ojg1dmg7IiBkYXRhLWxhenlsb2FkaWQ9Im5ld2NhcnNfbW90b2luc2lnaHRzaG9wcG9wdXBjb250YWluZXIiPgoJCQkKCQk8L2Rpdj4KCgkJPCEtLSBPTzo6M2IyZGQxOTQ0MDliZDA1ZTg4NDZiYjdlMjEwMjAyZjMgLS0+CgoJCQoJCQogICAgICA8c2NyaXB0IGRhdGEtc2NvZGVyZWY9IjIxMTEtQiIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGFzeW5jPSJ0cnVlIj48L3NjcmlwdD4KPHNjcmlwdCBkYXRhLXNjb2RlcmVmPSIyMTExLUIiIHNyYz0iaHR0cHM6Ly9hbGJpa2lhLmNvbS9qcy9tYXBzLmpzLnBocD8mYW1wO2xhbmc9ZnIiIHR5cGU9InRleHQvamF2YXNjcmlwdCIgYXN5bmM9InRydWUiPjwvc2NyaXB0Pgo8aW5wdXQgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iTkVXIiBpZD0iZGVmYXVsdERlcGFydG1lbnQiPgogICAgCgk8L2Rpdj4=","logs":"{\"result\":\"1\",\"error\":\"\",\"sources\":\"https:\\\/\\\/albikia.com\\\/js_r\\\/resource.loader.fr.js?v=3&js=hVTbbtswDP2hJUG7YR-wFsUGtEOBbNijQUu0zVgWPYlOln796LqW7LRFHwzbhxR5eDnaHeLu8HfAcN4e4qdd_jPMLeEMHsGTc6BfEx7V7iN6ecvBixruGSyG98-vs5UQ8euXC9BCaIXZCfUXliM4siSJcwfk528HT-dIT5qiy-B0bjPQpgIjHM67q-3V5-11Niy9M9uovqkJqGncd_DW5cIODcRGoHTJy-PJQLgsUBMID6bZ9IM3zTJZD-dO-3UDzgwONN9rFtRBbN8mWHHoZrRGj4HMg7JMwbkfem1GDrpo5mlvAohpHsHOUDxVq5LTMgxeLJ8SAQuCv4VcXCVK42Bh8pHqRvYN949Lm702RWyoksJSTQJuaXiBioCiRUx-SztEU9RwuScBj5jj9IE7LuzZQ0emqMhhUaXyJehW_vDfYI2QX_F_idsrDTk_NlrN9YVJT2l9Quxfb9k06P2JelzPucYSvM-zWC-91iem3Q3KfyS9rchrUYsArdlWUM5_3KNveMiLVjPXTle0T0jFLBj-kK1RiodUMEOUxMFq5zDsu_hz6MpMrYIjB5Ks0xr5ng08V5waTV5-NZR8ukGlejsFRIcmjS5Oe6bKiXDEostSKXXtx9et7tOdf43f5LkeBxyflQwmaCMNbp4lMrPX1nmjiUZCUTAN1iSR3akMx2IS-fHa0qthtatZZh3bBZMEO8zSySj8I45vy1V7FoU8viNmpdaTacNH5rzQsdVOiw5l5B_YLa6mZCqxWkhaz85XFHk3cjnE_w&jsrpl=&wswidth=0&device=mobile&ua=Q0NCb3QvMi4wIChodHRwczovL2NvbW1vbmNyYXdsLm9yZy9mYXEvKQ==\"}"}