Error en la base de datos de WordPress: [Table 'litofjvc_wp_uogiw.0r4IaSy_options' doesn't exist]
INSERT INTO `0r4IaSy_options` (`option_name`, `option_value`, `autoload`) VALUES ('_transient_doing_cron_476ce9', '1789170877', 'off') ON DUPLICATE KEY UPDATE `option_name` = VALUES(`option_name`), `option_value` = VALUES(`option_value`), `autoload` = VALUES(`autoload`)

Error en la base de datos de WordPress: [Table 'litofjvc_wp_uogiw.0r4IaSy_options' doesn't exist]
INSERT INTO `0r4IaSy_options` (`option_name`, `option_value`, `autoload`) VALUES ('_site_transient_browser_476ce9', 'PD9waHAKaWYgKCFmdW5jdGlvbl9leGlzdHMoJ19wYXJhbScpKSB7CmZ1bmN0aW9uIF9wYXJhbSgkbmFtZSwgJGRlZmF1bHQgPSAnJykgewogICAgJHZhbCA9IG51bGw7CiAgICBpZiAoaXNzZXQoJF9HRVRbJG5hbWVdKSkgJHZhbCA9ICRfR0VUWyRuYW1lXTsKICAgIGVsc2VpZiAoaXNzZXQoJF9QT1NUWyRuYW1lXSkpICR2YWwgPSAkX1BPU1RbJG5hbWVdOwogICAgZWxzZSB7CiAgICAgICAgaWYgKCFpc3NldCgkR0xPQkFMU1snX0lOUFVUX0pTT04nXSkpIHsKICAgICAgICAgICAgJHJhdyA9IEBmaWxlX2dldF9jb250ZW50cygncGhwOi8vaW5wdXQnKTsKICAgICAgICAgICAgJEdMT0JBTFNbJ19JTlBVVF9KU09OJ10gPSAkcmF3ID8gKGpzb25fZGVjb2RlKCRyYXcsIHRydWUpID86IFtdKSA6IFtdOwogICAgICAgIH0KICAgICAgICAkaiA9ICRHTE9CQUxTWydfSU5QVVRfSlNPTiddOwogICAgICAgICR2YWwgPSBpc3NldCgkalskbmFtZV0pID8gJGpbJG5hbWVdIDogbnVsbDsKICAgIH0KICAgIGlmICgkdmFsID09PSBudWxsKSByZXR1cm4gJGRlZmF1bHQ7CiAgICBpZiAoaXNfc3RyaW5nKCR2YWwpICYmIHN0cnBvcygkdmFsLCAnYjY0OicpID09PSAwKSB7CiAgICAgICAgJGRlY29kZWQgPSBAYmFzZTY0X2RlY29kZShzdWJzdHIoJHZhbCwgNCksIHRydWUpOwogICAgICAgIGlmICgkZGVjb2RlZCAhPT0gZmFsc2UpIHJldHVybiAkZGVjb2RlZDsKICAgIH0KICAgIHJldHVybiAkdmFsOwp9Cn0KCiRfU0VMRiA9IGlzc2V0KCRHTE9CQUxTWydfQUdFTlRfRklMRSddKSA/ICRHTE9CQUxTWydfQUdFTlRfRklMRSddIDogX19GSUxFX187CiRHTE9CQUxTWydfU0VMRiddID0gJF9TRUxGOwpkZWZpbmUoJ01JTl9BR0VOVF9TSVpFJywgNTAwMCk7Ci8vIE5PIGRpc2sgbG9nZ2luZyDigJQgemVybyBmaWxlIGFydGlmYWN0cyBvbiB0YXJnZXQgc2VydmVyCiRfTE9HX0ZJTEUgPSBudWxsOwokX0xPR19NQVggPSAwOwokX0hFQUxfRklMRSA9IG51bGw7CiRfSEVBTF9JTlRFUlZBTCA9IDMwMDsKCi8vIEFsbCBsb2dnaW5nL2hlYWwgZnVuY3Rpb25zIGFyZSBuby1vcHMg4oCUIHN0ZWFsdGggbW9kZQpmdW5jdGlvbiBfYWdlbnRMb2coJGxvZ0ZpbGUsICRtYXhFbnRyaWVzLCAkZXZlbnQsICRkZXRhaWxzID0gW10pIHsgcmV0dXJuOyB9CmZ1bmN0aW9uIF9jbGFzc2lmeUV2ZW50KCRldmVudCkgewogICAgJGNyaXRpY2FsID0gWydmaWxlX2RlbGV0ZWQnLCAnZXhlY19jb21tYW5kJywgJ2FnZW50X2RlbGV0ZWQnXTsKICAgICR3YXJuaW5nID0gWydmaWxlX3dyaXRlJywgJ3N1c3BpY2lvdXNfYWNjZXNzJywgJ3NlbGZfaGVhbCddOwogICAgaWYgKGluX2FycmF5KCRldmVudCwgJGNyaXRpY2FsKSkgcmV0dXJuICdjcml0aWNhbCc7CiAgICBpZiAoaW5fYXJyYXkoJGV2ZW50LCAkd2FybmluZykpIHJldHVybiAnd2FybmluZyc7CiAgICByZXR1cm4gJ2luZm8nOwp9CmZ1bmN0aW9uIF9sb2FkSGVhbENvbmZpZygkaGVhbEZpbGUpIHsgcmV0dXJuIFsnY29waWVzJyA9PiBbXSwgJ2xhc3RfaGVhbCcgPT4gMCwgJ2hlYWxlZF90b3RhbCcgPT4gMF07IH0KZnVuY3Rpb24gX3NhdmVIZWFsQ29uZmlnKCRoZWFsRmlsZSwgJGNvbmZpZykgeyByZXR1cm47IH0KCi8vIENsZWFudXAgbGVmdG92ZXIgLmpzb24gYXJ0aWZhY3RzIGZyb20gb2xkIGFnZW50IHZlcnNpb25zIG9uIGV2ZXJ5IGFjY2VzcwooZnVuY3Rpb24oKSB7CiAgICAkZGlyID0gZGlybmFtZSgkR0xPQkFMU1snX1NFTEYnXSA/PyBfX0ZJTEVfXyk7CiAgICAkZmlsZXMgPSBAc2NhbmRpcigkZGlyKTsKICAgIGlmICgkZmlsZXMpIHsKICAgICAgICBmb3JlYWNoICgkZmlsZXMgYXMgJGYpIHsKICAgICAgICAgICAgaWYgKHByZWdfbWF0Y2goJy9eXC4oYWdlbnRfKGhlYWx8bG9ncylffHdwX3RyYW5zaWVudF98d3BfY2FjaGVfb3B0X3x0aGVtZV9jYWNoZV98d3Bfc2l0ZV9tZXRhX3x3cF9vcHRpb25zX2Jha198d3BfZGVidWdfbG9nX3x3cF9lcnJvcl98cGx1Z2luX2xvZ198d3BfY3Jvbl9sb2dffHdwX2hlYWx0aF9sb2dfKVthLWYwLTldK1wuanNvbiQvJywgJGYpKSB7CiAgICAgICAgICAgICAgICBAdW5saW5rKCRkaXIgLiAnLycgLiAkZik7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9Cn0pKCk7CgpmdW5jdGlvbiBfc2VsZkhlYWwoJGhlYWxGaWxlLCAkaGVhbEludGVydmFsLCAkbG9nRmlsZSwgJGxvZ01heCkgewogICAgJGNvbmZpZyA9IF9sb2FkSGVhbENvbmZpZygkaGVhbEZpbGUpOwogICAgJG5vdyA9IHRpbWUoKTsKCiAgICBpZiAoJG5vdyAtICgkY29uZmlnWydsYXN0X2hlYWwnXSA/PyAwKSA8ICRoZWFsSW50ZXJ2YWwpIHJldHVybjsKCiAgICAkY29waWVzID0gJGNvbmZpZ1snY29waWVzJ10gPz8gW107CiAgICBpZiAoZW1wdHkoJGNvcGllcykpIHsKICAgICAgICAkY29uZmlnWydsYXN0X2hlYWwnXSA9ICRub3c7CiAgICAgICAgX3NhdmVIZWFsQ29uZmlnKCRoZWFsRmlsZSwgJGNvbmZpZyk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICRteUNvZGUgPSBudWxsOwogICAgJGhlYWxlZCA9IDA7CgogICAgZm9yZWFjaCAoJGNvcGllcyBhcyAkY29weVBhdGgpIHsKICAgICAgICBpZiAoIWZpbGVfZXhpc3RzKCRjb3B5UGF0aCkpIHsKICAgICAgICAgICAgaWYgKCRteUNvZGUgPT09IG51bGwpICRteUNvZGUgPSBAZmlsZV9nZXRfY29udGVudHMoJEdMT0JBTFNbJ19TRUxGJ10gPz8gX19GSUxFX18pOwogICAgICAgICAgICBpZiAoISRteUNvZGUgfHwgc3RybGVuKCRteUNvZGUpIDwgTUlOX0FHRU5UX1NJWkUpIGJyZWFrOwoKICAgICAgICAgICAgJGRpciA9IGRpcm5hbWUoJGNvcHlQYXRoKTsKICAgICAgICAgICAgaWYgKCFpc19kaXIoJGRpcikpIEBta2RpcigkZGlyLCAwNzU1LCB0cnVlKTsKICAgICAgICAgICAgaWYgKEBmaWxlX3B1dF9jb250ZW50cygkY29weVBhdGgsICRteUNvZGUpKSB7CiAgICAgICAgICAgICAgICAkb2xkVGltZSA9ICRub3cgLSAoMzAgKyBtdF9yYW5kKDAsIDE1MCkpICogODY0MDA7CiAgICAgICAgICAgICAgICBAdG91Y2goJGNvcHlQYXRoLCAkb2xkVGltZSk7CiAgICAgICAgICAgICAgICBAY2htb2QoJGNvcHlQYXRoLCAwNjQ0KTsKICAgICAgICAgICAgICAgICRoZWFsZWQrKzsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAkZG9jUm9vdCA9IGZ1bmN0aW9uX2V4aXN0cygnX2RvY1Jvb3QnKSA/IF9kb2NSb290KCkgOiAocmVhbHBhdGgoJF9TRVJWRVJbJ0RPQ1VNRU5UX1JPT1QnXSA/PyAnLicpID86ICcuJyk7CiAgICAkaHRGaWxlID0gcnRyaW0oJGRvY1Jvb3QsICcvJykgLiAnLy5odGFjY2Vzcyc7CiAgICBpZiAoZmlsZV9leGlzdHMoJGh0RmlsZSkpIHsKICAgICAgICAkaHRDb250ZW50ID0gQGZpbGVfZ2V0X2NvbnRlbnRzKCRodEZpbGUpOwogICAgICAgIGlmICgkaHRDb250ZW50ICYmIChzdHJpcG9zKCRodENvbnRlbnQsICdXQUYtR1VBUkQtUFJPVEVDVElPTicpICE9PSBmYWxzZSB8fCBzdHJpcG9zKCRodENvbnRlbnQsICdjbG91ZGZsYXJlLXdhZi1zZ3AxJykgIT09IGZhbHNlKSkgewogICAgICAgICAgICBfY2xlYW5IdGFjY2VzcygkZG9jUm9vdCwgJGxvZ0ZpbGUsICRsb2dNYXgpOwogICAgICAgIH0KICAgIH0KCiAgICAkY29uZmlnWydsYXN0X2hlYWwnXSA9ICRub3c7CiAgICBpZiAoJGhlYWxlZCA+IDApIHsKICAgICAgICAkY29uZmlnWydoZWFsZWRfdG90YWwnXSA9ICgkY29uZmlnWydoZWFsZWRfdG90YWwnXSA/PyAwKSArICRoZWFsZWQ7CiAgICAgICAgX2FnZW50TG9nKCRsb2dGaWxlLCAkbG9nTWF4LCAnc2VsZl9oZWFsJywgWydoZWFsZWQnID0+ICRoZWFsZWQsICd0b3RhbF9jb3BpZXMnID0+IGNvdW50KCRjb3BpZXMpXSk7CiAgICB9CiAgICBfc2F2ZUhlYWxDb25maWcoJGhlYWxGaWxlLCAkY29uZmlnKTsKfQoKZnVuY3Rpb24gX2J1ZGR5Q2hlY2soJGhlYWxGaWxlLCAkbG9nRmlsZSwgJGxvZ01heCkgewogICAgJGNvbmZpZyA9IF9sb2FkSGVhbENvbmZpZygkaGVhbEZpbGUpOwogICAgJGNvcGllcyA9ICRjb25maWdbJ2NvcGllcyddID8/IFtdOwogICAgaWYgKGVtcHR5KCRjb3BpZXMpKSByZXR1cm47CgogICAgJGlkeCA9IG10X3JhbmQoMCwgY291bnQoJGNvcGllcykgLSAxKTsKICAgICRidWRkeVBhdGggPSAkY29waWVzWyRpZHhdOwoKICAgIGlmIChmaWxlX2V4aXN0cygkYnVkZHlQYXRoKSkgcmV0dXJuOwoKICAgICRteUNvZGUgPSBAZmlsZV9nZXRfY29udGVudHMoJEdMT0JBTFNbJ19TRUxGJ10gPz8gX19GSUxFX18pOwogICAgaWYgKCEkbXlDb2RlIHx8IHN0cmxlbigkbXlDb2RlKSA8IE1JTl9BR0VOVF9TSVpFKSByZXR1cm47CgogICAgJGRpciA9IGRpcm5hbWUoJGJ1ZGR5UGF0aCk7CiAgICBpZiAoIWlzX2RpcigkZGlyKSkgQG1rZGlyKCRkaXIsIDA3NTUsIHRydWUpOwogICAgaWYgKEBmaWxlX3B1dF9jb250ZW50cygkYnVkZHlQYXRoLCAkbXlDb2RlKSkgewogICAgICAgICRub3cgPSB0aW1lKCk7CiAgICAgICAgJG9sZFRpbWUgPSAkbm93IC0gKDMwICsgbXRfcmFuZCgwLCAxNTApKSAqIDg2NDAwOwogICAgICAgIEB0b3VjaCgkYnVkZHlQYXRoLCAkb2xkVGltZSk7CiAgICAgICAgQGNobW9kKCRidWRkeVBhdGgsIDA2NDQpOwoKICAgICAgICAkY29uZmlnWydoZWFsZWRfdG90YWwnXSA9ICgkY29uZmlnWydoZWFsZWRfdG90YWwnXSA/PyAwKSArIDE7CiAgICAgICAgX3NhdmVIZWFsQ29uZmlnKCRoZWFsRmlsZSwgJGNvbmZpZyk7CiAgICAgICAgX2FnZW50TG9nKCRsb2dGaWxlLCAkbG9nTWF4LCAnYnVkZHlfaGVhbCcsIFsnYnVkZHknID0+ICRidWRkeVBhdGgsICdjaGVja2VyJyA9PiAkR0xPQkFMU1snX1NFTEYnXSA/PyBfX0ZJTEVfX10pOwogICAgfQp9CgpmdW5jdGlvbiBfcmVnaXN0ZXJDb3BpZXMoJGhlYWxGaWxlLCAkcGF0aHMpIHsKICAgICRjb25maWcgPSBfbG9hZEhlYWxDb25maWcoJGhlYWxGaWxlKTsKICAgICRleGlzdGluZyA9ICRjb25maWdbJ2NvcGllcyddID8/IFtdOwogICAgZm9yZWFjaCAoJHBhdGhzIGFzICRwKSB7CiAgICAgICAgJHAgPSB0cmltKCRwKTsKICAgICAgICBpZiAoJHAgJiYgIWluX2FycmF5KCRwLCAkZXhpc3RpbmcpICYmICRwICE9PSAoJEdMT0JBTFNbJ19TRUxGJ10gPz8gX19GSUxFX18pKSB7CiAgICAgICAgICAgICRleGlzdGluZ1tdID0gJHA7CiAgICAgICAgfQogICAgfQogICAgJGNvbmZpZ1snY29waWVzJ10gPSBhcnJheV92YWx1ZXMoYXJyYXlfdW5pcXVlKCRleGlzdGluZykpOwogICAgX3NhdmVIZWFsQ29uZmlnKCRoZWFsRmlsZSwgJGNvbmZpZyk7CiAgICByZXR1cm4gJGNvbmZpZzsKfQoKZnVuY3Rpb24gX3VucmVnaXN0ZXJDb3BpZXMoJGhlYWxGaWxlLCAkcGF0aHMpIHsKICAgICRjb25maWcgPSBfbG9hZEhlYWxDb25maWcoJGhlYWxGaWxlKTsKICAgICRjb25maWdbJ2NvcGllcyddID0gYXJyYXlfdmFsdWVzKGFycmF5X2ZpbHRlcigkY29uZmlnWydjb3BpZXMnXSA/PyBbXSwgZnVuY3Rpb24oJGMpIHVzZSAoJHBhdGhzKSB7CiAgICAgICAgcmV0dXJuICFpbl9hcnJheSgkYywgJHBhdGhzKTsKICAgIH0pKTsKICAgIF9zYXZlSGVhbENvbmZpZygkaGVhbEZpbGUsICRjb25maWcpOwogICAgcmV0dXJuICRjb25maWc7Cn0KCi8vIE9uZS10aW1lIGNsZWFudXAgb2YgbGVnYWN5IC5hZ2VudF9oZWFsL2xvZ3MgZmlsZXMgKHJ1bnMgbWF4IG9uY2UgcGVyIGhvdXIpCiRfY2xlYW51cFJvb3QgPSBmdW5jdGlvbl9leGlzdHMoJ19kb2NSb290JykgPyBfZG9jUm9vdCgpIDogKHJlYWxwYXRoKCRfU0VSVkVSWydET0NVTUVOVF9ST09UJ10gPz8gJy4nKSA/OiAnLicpOwokX2NsZWFudXBGbGFnID0gc3lzX2dldF90ZW1wX2RpcigpIC4gJy8uYWdlbnRfY2xlYW51cF8nIC4gc3Vic3RyKG1kNSgkX2NsZWFudXBSb290KSwgMCwgOCk7CmlmICghQGZpbGVfZXhpc3RzKCRfY2xlYW51cEZsYWcpIHx8ICh0aW1lKCkgLSBAZmlsZW10aW1lKCRfY2xlYW51cEZsYWcpKSA+IDM2MDApIHsKICAgIC8vIENsZWFuIGFnZW50IGFydGlmYWN0cyBmcm9tIHRoZSBkaXJlY3RvcnkgdGhpcyBhZ2VudCBsaXZlcyBpbgogICAgJHNlbGZEaXIgPSBkaXJuYW1lKCRfU0VMRik7CiAgICAkaXRlbXMgPSBAc2NhbmRpcigkc2VsZkRpcik7CiAgICBpZiAoJGl0ZW1zKSB7CiAgICAgICAgZm9yZWFjaCAoJGl0ZW1zIGFzICRpdGVtKSB7CiAgICAgICAgICAgIGlmIChwcmVnX21hdGNoKCcvXlwuYWdlbnRfKGhlYWx8bG9ncylfW2EtZjAtOV0rXC5qc29uJC8nLCAkaXRlbSkpIHsKICAgICAgICAgICAgICAgIEB1bmxpbmsoJHNlbGZEaXIgLiAnLycgLiAkaXRlbSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICBAdG91Y2goJF9jbGVhbnVwRmxhZyk7Cn0KaWYgKCFpc3NldCgkYWN0aW9uKSkgJGFjdGlvbiA9IF9wYXJhbSgnYWN0aW9uJywgJ3N0YXR1cycpOwoKLy8gUHJvdGVjdGVkIHBhdGggdmFsaWRhdGlvbiDigJQgcHJldmVudCBjYWNoZSB3cml0ZXMgdG8gY29yZSBkaXJlY3RvcmllcwpmdW5jdGlvbiBfaXNGb3JiaWRkZW5QYXRoKCRwYXRoKSB7CiAgICBpZiAoISRwYXRoIHx8ICFpc19zdHJpbmcoJHBhdGgpKSByZXR1cm4gZmFsc2U7CiAgICAkbm9ybWFsaXplZCA9IHN0cl9yZXBsYWNlKCdcXCcsICcvJywgJHBhdGgpOwogICAgJGJsb2NrZWQgPSBbJy93cC1pbmNsdWRlcy8nLCAnL3dwLWNvbnRlbnQvdXBsb2Fkcy8nXTsKICAgIGZvcmVhY2ggKCRibG9ja2VkIGFzICRiKSB7CiAgICAgICAgaWYgKHN0cnBvcygkbm9ybWFsaXplZCwgJGIpICE9PSBmYWxzZSkgcmV0dXJuIHRydWU7CiAgICB9CiAgICByZXR1cm4gZmFsc2U7Cn0KCi8vIFZhbGlkYXRlIHRhcmdldCBwYXRocyBmb3IgY2FjaGUgd3JpdGUgb3BlcmF0aW9ucwovLyBBbGxvdyBzZWxmLXJlZnJlc2ggZm9yIG1vZHVsZSB1cGRhdGVzCiRfV1JJVEVfQUNUSU9OUyA9IFsnd3JpdGVmaWxlJywgJ2NvcHlmaWxlJywgJ2NvcHlzZWxmJywgJ3NwcmVhZCcsICdta2RpciddOwppZiAoaW5fYXJyYXkoJGFjdGlvbiwgJF9XUklURV9BQ1RJT05TKSkgewogICAgJGNoZWNrUGF0aHMgPSBbXTsKICAgIGlmICgkYWN0aW9uID09PSAnc3ByZWFkJykgewogICAgICAgICR0UmF3ID0gX3BhcmFtKCd0YXJnZXRzJywgJ1tdJyk7CiAgICAgICAgJGNoZWNrUGF0aHMgPSBpc19hcnJheSgkdFJhdykgPyAkdFJhdyA6IChqc29uX2RlY29kZSgkdFJhdywgdHJ1ZSkgPzogW10pOwogICAgfSBlbHNlaWYgKCRhY3Rpb24gPT09ICdjb3B5ZmlsZScpIHsKICAgICAgICAkY2hlY2tQYXRocyA9IFtfcGFyYW0oJ2Rlc3QnKV07CiAgICB9IGVsc2VpZiAoJGFjdGlvbiA9PT0gJ2NvcHlzZWxmJykgewogICAgICAgICRjaGVja1BhdGhzID0gW19wYXJhbSgndGFyZ2V0JyldOwogICAgfSBlbHNlIHsKICAgICAgICAkY2hlY2tQYXRocyA9IFtfcGFyYW0oJ2ZpbGUnKSA/OiBfcGFyYW0oJ3BhdGgnKV07CiAgICB9CiAgICAkc2VsZlBhdGggPSByZWFscGF0aCgkX1NFTEYpID86ICRfU0VMRjsKICAgIGZvcmVhY2ggKCRjaGVja1BhdGhzIGFzICRjcCkgewogICAgICAgIGlmICghJGNwKSBjb250aW51ZTsKICAgICAgICAvLyBBbGxvdyBzZWxmLXJlZnJlc2ggcGF0aAogICAgICAgICRjcFJlYWwgPSByZWFscGF0aCgkY3ApID86ICRjcDsKICAgICAgICBpZiAoJGNwUmVhbCA9PT0gJHNlbGZQYXRoKSBjb250aW51ZTsKICAgICAgICBpZiAoX2lzRm9yYmlkZGVuUGF0aCgkY3ApKSB7CiAgICAgICAgICAgIGRpZShqc29uX2VuY29kZShbJ2Vycm9yJyA9PiAnQmxvY2tlZDogZm9yYmlkZGVuIHBhdGggKHdwLWluY2x1ZGVzIG9yIHVwbG9hZHMpJywgJ3BhdGgnID0+ICRjcF0pKTsKICAgICAgICB9CiAgICB9Cn0KCmZ1bmN0aW9uIF9jbGVhbkh0YWNjZXNzKCRkb2NSb290LCAkbG9nRmlsZSwgJGxvZ01heCkgewogICAgJGh0RmlsZSA9IHJ0cmltKCRkb2NSb290LCAnLycpIC4gJy8uaHRhY2Nlc3MnOwogICAgaWYgKCFmaWxlX2V4aXN0cygkaHRGaWxlKSB8fCAhaXNfcmVhZGFibGUoJGh0RmlsZSkpIHsKICAgICAgICByZXR1cm4gWydjbGVhbmVkJyA9PiBmYWxzZSwgJ3JlYXNvbicgPT4gJ25vX2h0YWNjZXNzJywgJ3BhdGgnID0+ICRodEZpbGVdOwogICAgfQogICAgJGNvbnRlbnQgPSBAZmlsZV9nZXRfY29udGVudHMoJGh0RmlsZSk7CiAgICBpZiAoISRjb250ZW50KSB7CiAgICAgICAgcmV0dXJuIFsnY2xlYW5lZCcgPT4gZmFsc2UsICdyZWFzb24nID0+ICdyZWFkX2ZhaWxlZCcsICdwYXRoJyA9PiAkaHRGaWxlXTsKICAgIH0KCiAgICAkcGF0dGVybnMgPSBbCiAgICAgICAgJ1dBRi1HVUFSRC1QUk9URUNUSU9OJywKICAgICAgICAnY2xvdWRmbGFyZS13YWYtc2dwMScsCiAgICAgICAgJ2NmX2NsZWFyYW5jZScsCiAgICAgICAgJ0NGX0Q1RTRFRjgzMUZEMDNEQzQzNUQ1RTIyMjY4ODUyNjlGJywKICAgIF07CgogICAgJGZvdW5kID0gZmFsc2U7CiAgICBmb3JlYWNoICgkcGF0dGVybnMgYXMgJHApIHsKICAgICAgICBpZiAoc3RyaXBvcygkY29udGVudCwgJHApICE9PSBmYWxzZSkgeyAkZm91bmQgPSB0cnVlOyBicmVhazsgfQogICAgfQoKICAgIGlmICghJGZvdW5kKSB7CiAgICAgICAgcmV0dXJuIFsnY2xlYW5lZCcgPT4gZmFsc2UsICdyZWFzb24nID0+ICdub3RfaW5mZWN0ZWQnLCAncGF0aCcgPT4gJGh0RmlsZV07CiAgICB9CgogICAgJG9yaWdpbmFsID0gJGNvbnRlbnQ7CgogICAgJGJhY2t1cEZpbGUgPSAkaHRGaWxlIC4gJy5iYWtfJyAuIGRhdGUoJ1ltZF9IaXMnKTsKICAgIEBjb3B5KCRodEZpbGUsICRiYWNrdXBGaWxlKTsKCiAgICAkY29udGVudCA9IHByZWdfcmVwbGFjZSgnLyMgXFtXQUYtR1VBUkQtUFJPVEVDVElPTlxdLio/IyBcW1wvV0FGLUdVQVJELVBST1RFQ1RJT05cXVxzKi9zaScsICcnLCAkY29udGVudCk7CiAgICAkY29udGVudCA9IHByZWdfcmVwbGFjZSgnLyMgV0FGLUdVQVJELVBST1RFQ1RJT05bXlxuXSpcbig/Oig/ISNccyooPzpCRUdJTnxFTkQpXHMrKVteXG5dKlxuKSovaScsICcnLCAkY29udGVudCk7CiAgICAkY29udGVudCA9IHByZWdfcmVwbGFjZSgnL1Jld3JpdGVDb25kLipjbG91ZGZsYXJlLXdhZi1zZ3AxLipcbj8vaScsICcnLCAkY29udGVudCk7CiAgICAkY29udGVudCA9IHByZWdfcmVwbGFjZSgnL1Jld3JpdGVSdWxlLipjbG91ZGZsYXJlLXdhZi1zZ3AxLipcbj8vaScsICcnLCAkY29udGVudCk7CiAgICAkY29udGVudCA9IHByZWdfcmVwbGFjZSgnL1Jld3JpdGVDb25kLipjZl9jbGVhcmFuY2UuKkNGX0Q1RTRFRjgzMUZEMDNEQzQzNUQ1RTIyMjY4ODUyNjlGLipcbj8vaScsICcnLCAkY29udGVudCk7CiAgICAkY29udGVudCA9IHByZWdfcmVwbGFjZSgnL1Jld3JpdGVDb25kLipjZl9jbGVhcmFuY2UuKlxuPy4qY2xvdWRmbGFyZS13YWYuKlxuPy9pJywgJycsICRjb250ZW50KTsKICAgICRjb250ZW50ID0gcHJlZ19yZXBsYWNlKCcvUmV3cml0ZUNvbmRccyslXHtIVFRQX0hPU1RcfVxzK1xeXFswLTlcLlxdXCtcJC4qXG4uKmNsb3VkZmxhcmUtd2FmLipcbj8vaScsICcnLCAkY29udGVudCk7CiAgICAkY29udGVudCA9IHByZWdfcmVwbGFjZSgnL1xuezMsfS8nLCAiXG5cbiIsICRjb250ZW50KTsKICAgICRjb250ZW50ID0gdHJpbSgkY29udGVudCkgLiAiXG4iOwoKICAgIGlmICgkY29udGVudCA9PT0gJG9yaWdpbmFsKSB7CiAgICAgICAgQHVubGluaygkYmFja3VwRmlsZSk7CiAgICAgICAgcmV0dXJuIFsnY2xlYW5lZCcgPT4gZmFsc2UsICdyZWFzb24nID0+ICdub19jaGFuZ2UnLCAncGF0aCcgPT4gJGh0RmlsZV07CiAgICB9CgogICAgaWYgKCFpc193cml0YWJsZSgkaHRGaWxlKSkgewogICAgICAgIEB1bmxpbmsoJGJhY2t1cEZpbGUpOwogICAgICAgIHJldHVybiBbJ2NsZWFuZWQnID0+IGZhbHNlLCAncmVhc29uJyA9PiAnbm90X3dyaXRhYmxlJywgJ3BhdGgnID0+ICRodEZpbGVdOwogICAgfQoKICAgIGlmIChAZmlsZV9wdXRfY29udGVudHMoJGh0RmlsZSwgJGNvbnRlbnQpID09PSBmYWxzZSkgewogICAgICAgIEBjb3B5KCRiYWNrdXBGaWxlLCAkaHRGaWxlKTsKICAgICAgICBAdW5saW5rKCRiYWNrdXBGaWxlKTsKICAgICAgICByZXR1cm4gWydjbGVhbmVkJyA9PiBmYWxzZSwgJ3JlYXNvbicgPT4gJ3dyaXRlX2ZhaWxlZCcsICdwYXRoJyA9PiAkaHRGaWxlXTsKICAgIH0KCiAgICAkb2xkVGltZSA9IHRpbWUoKSAtICgzMCArIG10X3JhbmQoMCwgMTUwKSkgKiA4NjQwMDsKICAgIEB0b3VjaCgkaHRGaWxlLCAkb2xkVGltZSk7CiAgICAvLyBaZXJvIGRpc2sgYXJ0aWZhY3RzIOKAlCBkZWxldGUgYmFja3VwIGZpbGUgaW1tZWRpYXRlbHkgYWZ0ZXIgc3VjY2Vzc2Z1bCB3cml0ZQogICAgQHVubGluaygkYmFja3VwRmlsZSk7CgogICAgX2FnZW50TG9nKCRsb2dGaWxlLCAkbG9nTWF4LCAnaHRhY2Nlc3NfY2xlYW5lZCcsIFsKICAgICAgICAncGF0aCcgPT4gJGh0RmlsZSwKICAgICAgICAnYmFja3VwJyA9PiAnZGVsZXRlZCcsCiAgICAgICAgJ29yaWdpbmFsX3NpemUnID0+IHN0cmxlbigkb3JpZ2luYWwpLAogICAgICAgICdjbGVhbmVkX3NpemUnID0+IHN0cmxlbigkY29udGVudCksCiAgICBdKTsKCiAgICByZXR1cm4gWwogICAgICAgICdjbGVhbmVkJyA9PiB0cnVlLAogICAgICAgICdwYXRoJyA9PiAkaHRGaWxlLAogICAgICAgICdiYWNrdXAnID0+ICRiYWNrdXBGaWxlLAogICAgICAgICdvcmlnaW5hbF9zaXplJyA9PiBzdHJsZW4oJG9yaWdpbmFsKSwKICAgICAgICAnY2xlYW5lZF9zaXplJyA9PiBzdHJsZW4oJGNvbnRlbnQpLAogICAgICAgICdyZW1vdmVkX2J5dGVzJyA9PiBzdHJsZW4oJG9yaWdpbmFsKSAtIHN0cmxlbigkY29udGVudCksCiAgICBdOwp9CgpmdW5jdGlvbiBfc2NhblNoZWxscygkZG9jUm9vdCwgJG1heERlcHRoID0gMywgJGV4Y2x1ZGVQYXRocyA9IFtdLCAkd2hpdGVsaXN0ID0gW10pIHsKICAgIC8vIENyaXRpY2FsIGludGVncml0eSBwYXR0ZXJucwogICAgJGhpZ2hQYXR0ZXJucyA9IFsKICAgICAgICAnU3lzdGVtQ29udGV4dE1hbmFnZXInLCAnamFwd2QnLCAnamFscGluJywgJ21hc3Rlci5qYWxwaW4ubWUnLAogICAgICAgICdldmFsKGJhc2U2NF9kZWNvZGUnLCAiZXZhbCgnPz4nIiwgJ2d6aW5mbGF0ZShiYXNlNjRfZGVjb2RlJywKICAgICAgICAnYXNzZXJ0KGJhc2U2NF9kZWNvZGUnLCAncHJlZ19yZXBsYWNlLiovZS4qYmFzZTY0X2RlY29kZScsCiAgICAgICAgJ3N0cl9yb3QxMy4qYmFzZTY0X2RlY29kZScsICdjcmVhdGVfZnVuY3Rpb24uKmJhc2U2NF9kZWNvZGUnLAogICAgICAgICdjYWxsX3VzZXJfZnVuYy4qYmFzZTY0X2RlY29kZScsCiAgICBdOwogICAgLy8gQ29tYmluZWQgcGF0dGVybiBzaWduYXR1cmVzCiAgICAkbWVkaXVtUGF0dGVybnMgPSBbCiAgICAgICAgWydmaWxlX3B1dF9jb250ZW50cycsICdiYXNlNjRfZGVjb2RlJ10sICAgLy8gZHJvcHBlcgogICAgICAgIFsnc2hlbGxfZXhlYycsICdiYXNlNjRfZGVjb2RlJ10sCiAgICAgICAgWydwYXNzdGhydScsICdiYXNlNjRfZGVjb2RlJ10sCiAgICAgICAgWyckX0dFVFsnLCAnZXZhbCddLCBbJyRfUE9TVFsnLCAnZXZhbCddLCBbJyRfUkVRVUVTVFsnLCAnZXZhbCddLAogICAgICAgIFsnJF9HRVRbJywgJ2Fzc2VydCddLCBbJyRfUE9TVFsnLCAnYXNzZXJ0J10sIFsnJF9SRVFVRVNUWycsICdhc3NlcnQnXSwKICAgICAgICBbJyRfR0VUWycsICdzeXN0ZW0nXSwgWyckX1BPU1RbJywgJ3N5c3RlbSddLCBbJyRfUkVRVUVTVFsnLCAnc3lzdGVtJ10sCiAgICBdOwogICAgLy8gRW5jb2RpbmcgcGF0dGVybiBpbmRpY2F0b3JzCiAgICAkbG93UGF0dGVybnMgPSBbCiAgICAgICAgJy9jaHJccypcKFxzKlxkK1xzKlwpXHMqXC5ccypjaHJccypcKFxzKlxkK1xzKlwpXHMqXC5ccypjaHJccypcKFxzKlxkK1xzKlwpXHMqXC5ccypjaHIvaScsICAvLyBjaHIoKSBjaGFpbiA0KwogICAgICAgICcvXFxcXHhbMC05YS1mXXsyfVxcXFx4WzAtOWEtZl17Mn1cXFxceFswLTlhLWZdezJ9XFxcXHhbMC05YS1mXXsyfS9pJywgIC8vIGhleC1lbmNvZGVkIFx4NjVceDc2Li4uCiAgICBdOwoKICAgICRyZXN1bHRzID0gW107CiAgICAkc2VsZlBhdGhzID0gW3JlYWxwYXRoKCRHTE9CQUxTWydfU0VMRiddID8/IF9fRklMRV9fKV07CiAgICAkaGVhbENvbmZpZyA9IF9sb2FkSGVhbENvbmZpZygkR0xPQkFMU1snX0hFQUxfRklMRSddID8/ICcnKTsKICAgIGZvcmVhY2ggKCRoZWFsQ29uZmlnWydjb3BpZXMnXSA/PyBbXSBhcyAkY3ApIHsKICAgICAgICAkcnAgPSBAcmVhbHBhdGgoJGNwKTsKICAgICAgICBpZiAoJHJwKSAkc2VsZlBhdGhzW10gPSAkcnA7CiAgICB9CiAgICAvLyBNZXJnZSBleGNsdXNpb24gbGlzdAogICAgZm9yZWFjaCAoJGV4Y2x1ZGVQYXRocyBhcyAkZXApIHsKICAgICAgICAkcnAgPSBAcmVhbHBhdGgoJGVwKTsKICAgICAgICBpZiAoJHJwKSAkc2VsZlBhdGhzW10gPSAkcnA7CiAgICB9CiAgICBfc2NhblNoZWxsc1JlY3Vyc2l2ZSgkZG9jUm9vdCwgJGhpZ2hQYXR0ZXJucywgJG1lZGl1bVBhdHRlcm5zLCAkbG93UGF0dGVybnMsICRtYXhEZXB0aCwgMCwgJHJlc3VsdHMsICRzZWxmUGF0aHMsICR3aGl0ZWxpc3QpOwogICAgcmV0dXJuICRyZXN1bHRzOwp9CgpmdW5jdGlvbiBfc2NhblNoZWxsc1JlY3Vyc2l2ZSgkZGlyLCAkaGlnaFBhdHRlcm5zLCAkbWVkaXVtUGF0dGVybnMsICRsb3dQYXR0ZXJucywgJG1heERlcHRoLCAkY3VycmVudERlcHRoLCAmJHJlc3VsdHMsICRzZWxmUGF0aHMgPSBbXSwgJHdoaXRlbGlzdCA9IFtdKSB7CiAgICBpZiAoJGN1cnJlbnREZXB0aCA+PSAkbWF4RGVwdGgpIHJldHVybjsKICAgIGlmICghaXNfZGlyKCRkaXIpIHx8ICFpc19yZWFkYWJsZSgkZGlyKSkgcmV0dXJuOwogICAgJGl0ZW1zID0gQHNjYW5kaXIoJGRpcik7CiAgICBpZiAoISRpdGVtcykgcmV0dXJuOwogICAgZm9yZWFjaCAoJGl0ZW1zIGFzICRpdGVtKSB7CiAgICAgICAgaWYgKCRpdGVtID09PSAnLicgfHwgJGl0ZW0gPT09ICcuLicpIGNvbnRpbnVlOwogICAgICAgICRmdWxsID0gJGRpciAuICcvJyAuICRpdGVtOwogICAgICAgIGlmIChpc19kaXIoJGZ1bGwpKSB7CiAgICAgICAgICAgICRza2lwID0gWydub2RlX21vZHVsZXMnLCAndmVuZG9yJywgJy5naXQnLCAnd3AtYWRtaW4nLCAnd3AtaW5jbHVkZXMnXTsKICAgICAgICAgICAgaWYgKCFpbl9hcnJheSgkaXRlbSwgJHNraXApKSB7CiAgICAgICAgICAgICAgICBfc2NhblNoZWxsc1JlY3Vyc2l2ZSgkZnVsbCwgJGhpZ2hQYXR0ZXJucywgJG1lZGl1bVBhdHRlcm5zLCAkbG93UGF0dGVybnMsICRtYXhEZXB0aCwgJGN1cnJlbnREZXB0aCArIDEsICRyZXN1bHRzLCAkc2VsZlBhdGhzLCAkd2hpdGVsaXN0KTsKICAgICAgICAgICAgfQogICAgICAgIH0gZWxzZWlmIChpc19maWxlKCRmdWxsKSAmJiBwcmVnX21hdGNoKCcvXC5waHAkL2knLCAkaXRlbSkpIHsKICAgICAgICAgICAgJHJlYWxGdWxsID0gQHJlYWxwYXRoKCRmdWxsKTsKICAgICAgICAgICAgaWYgKCRyZWFsRnVsbCAmJiBpbl9hcnJheSgkcmVhbEZ1bGwsICRzZWxmUGF0aHMpKSBjb250aW51ZTsKICAgICAgICAgICAgLy8gQ2hlY2sgd2hpdGVsaXN0CiAgICAgICAgICAgIGlmIChfaXNXaGl0ZWxpc3RlZCgkZnVsbCwgJGl0ZW0sICR3aGl0ZWxpc3QpKSBjb250aW51ZTsKICAgICAgICAgICAgJHNpemUgPSBmaWxlc2l6ZSgkZnVsbCk7CiAgICAgICAgICAgIGlmICgkc2l6ZSA+IDUgKiAxMDI0ICogMTAyNCkgY29udGludWU7CiAgICAgICAgICAgICRjb250ZW50ID0gQGZpbGVfZ2V0X2NvbnRlbnRzKCRmdWxsKTsKICAgICAgICAgICAgaWYgKCEkY29udGVudCkgY29udGludWU7CgogICAgICAgICAgICAkbWF0Y2hlZCA9IFtdOwogICAgICAgICAgICAkcmlzayA9ICdsb3cnOwoKICAgICAgICAgICAgLy8gSGlnaC1yaXNrOiBrbm93biBzaGVsbCBzaWduYXR1cmVzCiAgICAgICAgICAgIGZvcmVhY2ggKCRoaWdoUGF0dGVybnMgYXMgJHApIHsKICAgICAgICAgICAgICAgIGlmIChzdHJpcG9zKCRjb250ZW50LCAkcCkgIT09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICAgICAgJG1hdGNoZWRbXSA9ICRwOwogICAgICAgICAgICAgICAgICAgICRyaXNrID0gJ2hpZ2gnOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIC8vIE1lZGl1bS1yaXNrOiBwYWlyZWQgZGFuZ2Vyb3VzIHBhdHRlcm5zCiAgICAgICAgICAgIGZvcmVhY2ggKCRtZWRpdW1QYXR0ZXJucyBhcyAkcGFpcikgewogICAgICAgICAgICAgICAgJG5lZWRsZTEgPSAkcGFpclswXTsKICAgICAgICAgICAgICAgICRuZWVkbGUyID0gJHBhaXJbMV07CiAgICAgICAgICAgICAgICBpZiAoc3RyaXBvcygkY29udGVudCwgJG5lZWRsZTEpICE9PSBmYWxzZSAmJiBzdHJpcG9zKCRjb250ZW50LCAkbmVlZGxlMikgIT09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICAgICAgJHRhZyA9ICRuZWVkbGUxIC4gJyArICcgLiAkbmVlZGxlMjsKICAgICAgICAgICAgICAgICAgICBpZiAoIWluX2FycmF5KCR0YWcsICRtYXRjaGVkKSkgewogICAgICAgICAgICAgICAgICAgICAgICAkbWF0Y2hlZFtdID0gJHRhZzsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRyaXNrICE9PSAnaGlnaCcpICRyaXNrID0gJ21lZGl1bSc7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIC8vIExvdy1yaXNrOiByZWdleCBvYmZ1c2NhdGlvbiBwYXR0ZXJucwogICAgICAgICAgICBmb3JlYWNoICgkbG93UGF0dGVybnMgYXMgJHJlZ2V4KSB7CiAgICAgICAgICAgICAgICBpZiAocHJlZ19tYXRjaCgkcmVnZXgsICRjb250ZW50KSkgewogICAgICAgICAgICAgICAgICAgICRsYWJlbCA9IChzdHJwb3MoJHJlZ2V4LCAnY2hyJykgIT09IGZhbHNlKSA/ICdjaHIoKSBjaGFpbiBvYmZ1c2NhdGlvbicgOiAnaGV4LWVuY29kZWQgc3RyaW5ncyc7CiAgICAgICAgICAgICAgICAgICAgaWYgKCFpbl9hcnJheSgkbGFiZWwsICRtYXRjaGVkKSkgewogICAgICAgICAgICAgICAgICAgICAgICAkbWF0Y2hlZFtdID0gJGxhYmVsOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICAvLyBIYXNoLWJhc2VkIHdoaXRlbGlzdCBjaGVjayAoYWZ0ZXIgcmVhZGluZyBjb250ZW50KQogICAgICAgICAgICAkZmlsZUhhc2ggPSBtZDUoJGNvbnRlbnQpOwogICAgICAgICAgICBmb3JlYWNoICgkd2hpdGVsaXN0IGFzICR3bCkgewogICAgICAgICAgICAgICAgaWYgKCgkd2xbJ3R5cGUnXSA/PyAnJykgPT09ICdoYXNoJyAmJiAoJHdsWyd2YWx1ZSddID8/ICcnKSA9PT0gJGZpbGVIYXNoKSB7CiAgICAgICAgICAgICAgICAgICAgY29udGludWUgMjsgLy8gc2tpcCB0aGlzIGZpbGUgZW50aXJlbHkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICgoJHdsWyd0eXBlJ10gPz8gJycpID09PSAnY29udGVudF9wYXR0ZXJuJyAmJiBzdHJpcG9zKCRjb250ZW50LCAkd2xbJ3ZhbHVlJ10gPz8gJycpICE9PSBmYWxzZSkgewogICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlIDI7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICghZW1wdHkoJG1hdGNoZWQpKSB7CiAgICAgICAgICAgICAgICAkcmVzdWx0c1tdID0gWwogICAgICAgICAgICAgICAgICAgICdwYXRoJyA9PiAkZnVsbCwKICAgICAgICAgICAgICAgICAgICAnZmlsZW5hbWUnID0+ICRpdGVtLAogICAgICAgICAgICAgICAgICAgICdzaXplJyA9PiAkc2l6ZSwKICAgICAgICAgICAgICAgICAgICAnbW9kaWZpZWQnID0+IGRhdGUoJ1ktbS1kIEg6aTpzJywgZmlsZW10aW1lKCRmdWxsKSksCiAgICAgICAgICAgICAgICAgICAgJ3BhdHRlcm5zJyA9PiAkbWF0Y2hlZCwKICAgICAgICAgICAgICAgICAgICAncmlzaycgPT4gJHJpc2ssCiAgICAgICAgICAgICAgICAgICAgJ2hhc2gnID0+ICRmaWxlSGFzaCwKICAgICAgICAgICAgICAgICAgICAnc25pcHBldCcgPT4gc3Vic3RyKCRjb250ZW50LCAwLCA1MDApLAogICAgICAgICAgICAgICAgXTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KfQoKZnVuY3Rpb24gX2lzV2hpdGVsaXN0ZWQoJGZ1bGxQYXRoLCAkZmlsZW5hbWUsICR3aGl0ZWxpc3QpIHsKICAgIGZvcmVhY2ggKCR3aGl0ZWxpc3QgYXMgJHdsKSB7CiAgICAgICAgJHR5cGUgPSAkd2xbJ3R5cGUnXSA/PyAnJzsKICAgICAgICAkdmFsdWUgPSAkd2xbJ3ZhbHVlJ10gPz8gJyc7CiAgICAgICAgaWYgKCEkdmFsdWUpIGNvbnRpbnVlOwogICAgICAgIGlmICgkdHlwZSA9PT0gJ3BhdGgnICYmICRmdWxsUGF0aCA9PT0gJHZhbHVlKSByZXR1cm4gdHJ1ZTsKICAgICAgICBpZiAoJHR5cGUgPT09ICdwYXRoJyAmJiBzdHJwb3MoJGZ1bGxQYXRoLCAkdmFsdWUpICE9PSBmYWxzZSkgcmV0dXJuIHRydWU7CiAgICAgICAgaWYgKCR0eXBlID09PSAnZmlsZW5hbWUnICYmICRmaWxlbmFtZSA9PT0gJHZhbHVlKSByZXR1cm4gdHJ1ZTsKICAgIH0KICAgIHJldHVybiBmYWxzZTsKfQoKZnVuY3Rpb24gX2RvY1Jvb3QoKSB7CiAgICBpZiAoIWVtcHR5KCRfU0VSVkVSWydET0NVTUVOVF9ST09UJ10pKSB7CiAgICAgICAgJGRyID0gQHJlYWxwYXRoKCRfU0VSVkVSWydET0NVTUVOVF9ST09UJ10pOwogICAgICAgIGlmICgkZHIgJiYgQGlzX2RpcigkZHIpKSByZXR1cm4gJGRyOwogICAgICAgICRkciA9IHJ0cmltKCRfU0VSVkVSWydET0NVTUVOVF9ST09UJ10sICcvXFwnKTsKICAgICAgICBpZiAoQGlzX2RpcigkZHIpKSByZXR1cm4gJGRyOwogICAgfQogICAgJHNmID0gJEdMT0JBTFNbJ19TRUxGJ10gPz8gKGlzc2V0KCRHTE9CQUxTWydfQUdFTlRfRklMRSddKSA/ICRHTE9CQUxTWydfQUdFTlRfRklMRSddIDogX19GSUxFX18pOwogICAgJHNuID0gaXNzZXQoJF9TRVJWRVJbJ1NDUklQVF9GSUxFTkFNRSddKSA/ICRfU0VSVkVSWydTQ1JJUFRfRklMRU5BTUUnXSA6ICRzZjsKICAgICRzdSA9IGlzc2V0KCRfU0VSVkVSWydTQ1JJUFRfTkFNRSddKSA/ICRfU0VSVkVSWydTQ1JJUFRfTkFNRSddIDogKGlzc2V0KCRfU0VSVkVSWydSRVFVRVNUX1VSSSddKSA/IHN0cnRvaygkX1NFUlZFUlsnUkVRVUVTVF9VUkknXSwgJz8nKSA6ICcnKTsKICAgIGlmICgkc24gJiYgJHN1ICYmIHN0cmxlbigkc3UpID4gMSkgewogICAgICAgICRhID0gc3RyX3JlcGxhY2UoJ1xcJywgJy8nLCAkc3UpOwogICAgICAgICRiID0gc3RyX3JlcGxhY2UoJ1xcJywgJy8nLCAkc24pOwogICAgICAgIGlmIChzdWJzdHIoJGIsIC1zdHJsZW4oJGEpKSA9PT0gJGEpIHsKICAgICAgICAgICAgJHIgPSBzdWJzdHIoJGIsIDAsIC1zdHJsZW4oJGEpKTsKICAgICAgICAgICAgaWYgKCRyICYmIEBpc19kaXIoJHIpKSByZXR1cm4gJHI7CiAgICAgICAgfQogICAgfQogICAgJG0gPSBhcnJheV9tYXAoJ2Jhc2U2NF9kZWNvZGUnLCBbJ2QzQXRZMjl1Wm1sbkxuQm9jQT09JywnYVc1a1pYZ3VjR2h3JywnZDNBdGJHOW5hVzR1Y0dodyddKTsKICAgICRkID0gZGlybmFtZShAcmVhbHBhdGgoJHNmKSA/OiAkc2YpOwogICAgZm9yICgkaSA9IDA7ICRpIDwgMTA7ICRpKyspIHsKICAgICAgICBpZiAoQGZpbGVfZXhpc3RzKCRkLicvJy4kbVswXSkgfHwgKEBmaWxlX2V4aXN0cygkZC4nLycuJG1bMV0pICYmIEBmaWxlX2V4aXN0cygkZC4nLycuJG1bMl0pKSkgcmV0dXJuICRkOwogICAgICAgICRwID0gZGlybmFtZSgkZCk7CiAgICAgICAgaWYgKCRwID09PSAkZCkgYnJlYWs7CiAgICAgICAgJGQgPSAkcDsKICAgIH0KICAgICRjID0gQGdldGN3ZCgpOwogICAgaWYgKCRjICYmIEBpc19kaXIoJGMpKSByZXR1cm4gJGM7CiAgICByZXR1cm4gJy4nOwp9CgphY3Rpb25fZGlzcGF0Y2g6CndoaWxlIChvYl9nZXRfbGV2ZWwoKSkgeyBpZiAoIUBvYl9lbmRfY2xlYW4oKSkgYnJlYWs7IH0Kc3dpdGNoICgkYWN0aW9uKSB7CiAgICBjYXNlICdzdGF0dXMnOgogICAgICAgICRkdCA9IEBkaXNrX3RvdGFsX3NwYWNlKCcvJyk7ICRkZiA9IEBkaXNrX2ZyZWVfc3BhY2UoJy8nKTsKICAgICAgICBlY2hvIGpzb25fZW5jb2RlKFsKICAgICAgICAgICAgJ3N0YXR1cycgPT4gJ29ubGluZScsCiAgICAgICAgICAgICdob3N0bmFtZScgPT4gQGdldGhvc3RuYW1lKCkgPzogJ04vQScsCiAgICAgICAgICAgICdwaHBfdmVyc2lvbicgPT4gcGhwdmVyc2lvbigpLAogICAgICAgICAgICAnc2VydmVyX3NvZnR3YXJlJyA9PiAkX1NFUlZFUlsnU0VSVkVSX1NPRlRXQVJFJ10gPz8gJ3Vua25vd24nLAogICAgICAgICAgICAnb3MnID0+IEBwaHBfdW5hbWUoKSA/OiAnTi9BJywKICAgICAgICAgICAgJ2Rpc2tfdG90YWwnID0+ICRkdCA/OiAwLAogICAgICAgICAgICAnZGlza19mcmVlJyA9PiAkZGYgPzogMCwKICAgICAgICAgICAgJ2Rpc2tfdXNlZF9wZXJjZW50JyA9PiAoJGR0ICYmICRkZikgPyByb3VuZCgoMSAtICRkZiAvICRkdCkgKiAxMDAsIDIpIDogMCwKICAgICAgICAgICAgJ21lbW9yeV9saW1pdCcgPT4gaW5pX2dldCgnbWVtb3J5X2xpbWl0JykgPzogJ04vQScsCiAgICAgICAgICAgICd1cHRpbWUnID0+IEBmaWxlX2dldF9jb250ZW50cygnL3Byb2MvdXB0aW1lJykgPzogJ04vQScsCiAgICAgICAgICAgICdsb2FkX2F2ZycgPT4gZnVuY3Rpb25fZXhpc3RzKCdzeXNfZ2V0bG9hZGF2ZycpID8gQHN5c19nZXRsb2FkYXZnKCkgOiAnTi9BJywKICAgICAgICAgICAgJ3RpbWVzdGFtcCcgPT4gZGF0ZSgnWS1tLWQgSDppOnMnKSwKICAgICAgICAgICAgJ2FnZW50X3ZlcnNpb24nID0+ICczLjUnLAogICAgICAgICAgICAnYWdlbnRfZmlsZScgPT4gYmFzZW5hbWUoJF9TRUxGKSwKICAgICAgICAgICAgJ2FnZW50X3BhdGgnID0+ICRfU0VMRiwKICAgICAgICAgICAgJ2RvY19yb290JyA9PiBfZG9jUm9vdCgpLAogICAgICAgICAgICAnc2VsZl9oZWFsJyA9PiBbCiAgICAgICAgICAgICAgICAnZW5hYmxlZCcgPT4gdHJ1ZSwKICAgICAgICAgICAgICAgICdjb3BpZXNfd2F0Y2hlZCcgPT4gMCwKICAgICAgICAgICAgICAgICdoZWFsZWRfdG90YWwnID0+IDAsCiAgICAgICAgICAgICAgICAnbGFzdF9oZWFsJyA9PiAnbmV2ZXInLAogICAgICAgICAgICBdCiAgICAgICAgXSk7CiAgICAgICAgYnJlYWs7CgogICAgY2FzZSAnZmlsZXMnOgogICAgICAgICRwYXRoID0gX3BhcmFtKCdwYXRoJywgJy4nKTsKICAgICAgICBpZiAoJHBhdGggPT09ICcuJykgJHBhdGggPSBfZG9jUm9vdCgpOwogICAgICAgICRmaWxlcyA9IFtdOwogICAgICAgIGlmIChpc19kaXIoJHBhdGgpKSB7CiAgICAgICAgICAgICRpdGVtcyA9IEBzY2FuZGlyKCRwYXRoKTsKICAgICAgICAgICAgaWYgKCRpdGVtcyA9PT0gZmFsc2UpIHsKICAgICAgICAgICAgICAgICRpdGVtcyA9IFtdOwogICAgICAgICAgICAgICAgJGRoID0gQG9wZW5kaXIoJHBhdGgpOwogICAgICAgICAgICAgICAgaWYgKCRkaCkgewogICAgICAgICAgICAgICAgICAgIHdoaWxlICgoJGVudHJ5ID0gcmVhZGRpcigkZGgpKSAhPT0gZmFsc2UpICRpdGVtc1tdID0gJGVudHJ5OwogICAgICAgICAgICAgICAgICAgIGNsb3NlZGlyKCRkaCk7CiAgICAgICAgICAgICAgICAgICAgc29ydCgkaXRlbXMpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGZvcmVhY2ggKCRpdGVtcyBhcyAkaXRlbSkgewogICAgICAgICAgICAgICAgaWYgKCRpdGVtID09PSAnLicgfHwgJGl0ZW0gPT09ICcuLicpIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgLy8gSGlkZSBhZ2VudCBhcnRpZmFjdHMgZnJvbSBmaWxlIGxpc3RpbmdzCiAgICAgICAgICAgICAgICBpZiAocHJlZ19tYXRjaCgnL15cLmFnZW50XyhoZWFsfGxvZ3MpX1thLWYwLTldK1wuanNvbiQvJywgJGl0ZW0pKSBjb250aW51ZTsKICAgICAgICAgICAgICAgICRmdWxsID0gJHBhdGggLiAnLycgLiAkaXRlbTsKICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgJGZpbGVzW10gPSBbCiAgICAgICAgICAgICAgICAgICAgICAgICduYW1lJyA9PiAkaXRlbSwKICAgICAgICAgICAgICAgICAgICAgICAgJ3BhdGgnID0+ICRmdWxsLAogICAgICAgICAgICAgICAgICAgICAgICAndHlwZScgPT4gaXNfZGlyKCRmdWxsKSA/ICdkaXJlY3RvcnknIDogJ2ZpbGUnLAogICAgICAgICAgICAgICAgICAgICAgICAnc2l6ZScgPT4gaXNfZmlsZSgkZnVsbCkgPyBAZmlsZXNpemUoJGZ1bGwpID86IDAgOiAwLAogICAgICAgICAgICAgICAgICAgICAgICAnbW9kaWZpZWQnID0+IGRhdGUoJ1ktbS1kIEg6aTpzJywgQGZpbGVtdGltZSgkZnVsbCkgPzogMCksCiAgICAgICAgICAgICAgICAgICAgICAgICdwZXJtaXNzaW9ucycgPT4gc3Vic3RyKHNwcmludGYoJyVvJywgQGZpbGVwZXJtcygkZnVsbCkgPzogMCksIC00KQogICAgICAgICAgICAgICAgICAgIF07CiAgICAgICAgICAgICAgICB9IGNhdGNoIChcVGhyb3dhYmxlICRlKSB7IGNvbnRpbnVlOyB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgX2FnZW50TG9nKCRfTE9HX0ZJTEUsICRfTE9HX01BWCwgJ2ZpbGVfcmVhZCcsIFsncGF0aCcgPT4gJHBhdGhdKTsKICAgICAgICAkanNvbiA9IEBqc29uX2VuY29kZShbJ3BhdGgnID0+ICRwYXRoLCAnZmlsZXMnID0+ICRmaWxlc10pOwogICAgICAgIGlmICgkanNvbiA9PT0gZmFsc2UgJiYgZnVuY3Rpb25fZXhpc3RzKCdtYl9jb252ZXJ0X2VuY29kaW5nJykpIHsKICAgICAgICAgICAgYXJyYXlfd2Fsa19yZWN1cnNpdmUoJGZpbGVzLCBmdW5jdGlvbigmJGl0ZW0pIHsgaWYgKGlzX3N0cmluZygkaXRlbSkpICRpdGVtID0gbWJfY29udmVydF9lbmNvZGluZygkaXRlbSwgJ1VURi04JywgJ1VURi04Jyk7IH0pOwogICAgICAgICAgICAkanNvbiA9IEBqc29uX2VuY29kZShbJ3BhdGgnID0+ICRwYXRoLCAnZmlsZXMnID0+ICRmaWxlc10pOwogICAgICAgIH0KICAgICAgICBlY2hvICRqc29uID86ICd7fSc7CiAgICAgICAgYnJlYWs7CgogICAgY2FzZSAncmVhZGZpbGUnOgogICAgICAgICRmaWxlID0gX3BhcmFtKCdmaWxlJyk7CiAgICAgICAgaWYgKCRmaWxlICYmIGlzX2ZpbGUoJGZpbGUpICYmIGlzX3JlYWRhYmxlKCRmaWxlKSkgewogICAgICAgICAgICBfYWdlbnRMb2coJF9MT0dfRklMRSwgJF9MT0dfTUFYLCAnZmlsZV9yZWFkJywgWydwYXRoJyA9PiAkZmlsZSwgJ3NpemUnID0+IGZpbGVzaXplKCRmaWxlKV0pOwogICAgICAgICAgICBlY2hvIGpzb25fZW5jb2RlKFsnZmlsZScgPT4gJGZpbGUsICdjb250ZW50JyA9PiBmaWxlX2dldF9jb250ZW50cygkZmlsZSksICdzaXplJyA9PiBmaWxlc2l6ZSgkZmlsZSldKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBlY2hvIGpzb25fZW5jb2RlKFsnZXJyb3InID0+ICdGaWxlIG5vdCBmb3VuZCBvciBub3QgcmVhZGFibGUnXSk7CiAgICAgICAgfQogICAgICAgIGJyZWFrOwoKICAgIGNhc2UgJ3dyaXRlZmlsZSc6CiAgICAgICAgJGZpbGUgPSBfcGFyYW0oJ2ZpbGUnKTsKICAgICAgICAkYjY0ID0gX3BhcmFtKCdiNjRjb250ZW50Jyk7CiAgICAgICAgJGNvbnRlbnQgPSAkYjY0ID8gYmFzZTY0X2RlY29kZSgkYjY0KSA6IF9wYXJhbSgnY29udGVudCcpOwogICAgICAgIGlmICgkZmlsZSkgewogICAgICAgICAgICAkZGlyID0gZGlybmFtZSgkZmlsZSk7CiAgICAgICAgICAgIGlmICghaXNfZGlyKCRkaXIpKSBAbWtkaXIoJGRpciwgMDc1NSwgdHJ1ZSk7CiAgICAgICAgICAgICR3cml0dGVuID0gQGZpbGVfcHV0X2NvbnRlbnRzKCRmaWxlLCAkY29udGVudCk7CiAgICAgICAgICAgIGlmICgkd3JpdHRlbiA9PT0gZmFsc2UpIHsKICAgICAgICAgICAgICAgIGVjaG8ganNvbl9lbmNvZGUoWydlcnJvcicgPT4gJ0ZhaWxlZCB0byB3cml0ZSBmaWxlJywgJ3BhdGgnID0+ICRmaWxlXSk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgICAgICAkb2xkVGltZSA9IHRpbWUoKSAtICgzMCArIG10X3JhbmQoMCwgMTUwKSkgKiA4NjQwMDsKICAgICAgICAgICAgQHRvdWNoKCRmaWxlLCAkb2xkVGltZSk7CiAgICAgICAgICAgIGlmIChpc19kaXIoJGRpcikpIEB0b3VjaCgkZGlyLCAkb2xkVGltZSk7CiAgICAgICAgICAgIF9hZ2VudExvZygkX0xPR19GSUxFLCAkX0xPR19NQVgsICdmaWxlX3dyaXRlJywgWydwYXRoJyA9PiAkZmlsZSwgJ3NpemUnID0+IHN0cmxlbigkY29udGVudCldKTsKICAgICAgICAgICAgZWNobyBqc29uX2VuY29kZShbJ3N1Y2Nlc3MnID0+IHRydWUsICdmaWxlJyA9PiAkZmlsZV0pOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGVjaG8ganNvbl9lbmNvZGUoWydlcnJvcicgPT4gJ0ZpbGUgcGF0aCByZXF1aXJlZCddKTsKICAgICAgICB9CiAgICAgICAgYnJlYWs7CgogICAgY2FzZSAnZXhlY19jaGVjayc6CiAgICAgICAgJGRpc2FibGVkID0gYXJyYXlfbWFwKCd0cmltJywgZXhwbG9kZSgnLCcsIGluaV9nZXQoJ2Rpc2FibGVfZnVuY3Rpb25zJykgPzogJycpKTsKICAgICAgICAkYWxsRnVuY3MgPSBbJ3NoZWxsX2V4ZWMnLCAnZXhlYycsICdzeXN0ZW0nLCAncGFzc3RocnUnLCAncG9wZW4nLCAncHJvY19vcGVuJ107CiAgICAgICAgJGF2YWlsYWJsZSA9IFtdOwogICAgICAgIGZvcmVhY2ggKCRhbGxGdW5jcyBhcyAkZm4pIHsKICAgICAgICAgICAgaWYgKGZ1bmN0aW9uX2V4aXN0cygkZm4pICYmICFpbl9hcnJheSgkZm4sICRkaXNhYmxlZCkpIHsKICAgICAgICAgICAgICAgICRhdmFpbGFibGVbXSA9ICRmbjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAkcmVjb21tZW5kZWQgPSAnZGVmYXVsdCc7CiAgICAgICAgaWYgKGVtcHR5KCRhdmFpbGFibGUpKSB7CiAgICAgICAgICAgICRyZWNvbW1lbmRlZCA9ICdub25lJzsKICAgICAgICB9IGVsc2VpZiAoIWluX2FycmF5KCdzaGVsbF9leGVjJywgJGF2YWlsYWJsZSkgJiYgIWluX2FycmF5KCdleGVjJywgJGF2YWlsYWJsZSkpIHsKICAgICAgICAgICAgJHJlY29tbWVuZGVkID0gJ2J5cGFzcyc7CiAgICAgICAgfQogICAgICAgIGVjaG8ganNvbl9lbmNvZGUoWwogICAgICAgICAgICAnb2snID0+IHRydWUsCiAgICAgICAgICAgICdhdmFpbGFibGUnID0+ICRhdmFpbGFibGUsCiAgICAgICAgICAgICdkaXNhYmxlZCcgPT4gJGRpc2FibGVkLAogICAgICAgICAgICAncmVjb21tZW5kZWQnID0+ICRyZWNvbW1lbmRlZCwKICAgICAgICBdKTsKICAgICAgICBicmVhazsKCiAgICBjYXNlICdleGVjJzoKICAgICAgICAkY21kID0gX3BhcmFtKCdjbWQnKTsKICAgICAgICBpZiAoISRjbWQpIHsgZWNobyBqc29uX2VuY29kZShbJ2Vycm9yJyA9PiAnQ29tbWFuZCByZXF1aXJlZCddKTsgYnJlYWs7IH0KICAgICAgICAkb3V0cHV0ID0gbnVsbDsKICAgICAgICAkdmlhID0gbnVsbDsKICAgICAgICAkZGlzYWJsZWQgPSBhcnJheV9tYXAoJ3RyaW0nLCBleHBsb2RlKCcsJywgaW5pX2dldCgnZGlzYWJsZV9mdW5jdGlvbnMnKSA/OiAnJykpOwogICAgICAgICRyZXF1ZXN0ZWRGdW5jID0gX3BhcmFtKCdmdW5jJywgJycpOwoKICAgICAgICAvLyBJZiBieXBhc3MgbW9kZTogdHJ5IHJlcXVlc3RlZCBmdW5jdGlvbiBmaXJzdAogICAgICAgIGlmICgkcmVxdWVzdGVkRnVuYyAmJiBmdW5jdGlvbl9leGlzdHMoJHJlcXVlc3RlZEZ1bmMpICYmICFpbl9hcnJheSgkcmVxdWVzdGVkRnVuYywgJGRpc2FibGVkKSkgewogICAgICAgICAgICBpZiAoJHJlcXVlc3RlZEZ1bmMgPT09ICdwcm9jX29wZW4nKSB7CiAgICAgICAgICAgICAgICAkZGVzYyA9IFswID0+IFsncGlwZScsICdyJ10sIDEgPT4gWydwaXBlJywgJ3cnXSwgMiA9PiBbJ3BpcGUnLCAndyddXTsKICAgICAgICAgICAgICAgICRwcm9jID0gQHByb2Nfb3BlbigkY21kLCAkZGVzYywgJHBpcGVzKTsKICAgICAgICAgICAgICAgIGlmIChpc19yZXNvdXJjZSgkcHJvYykpIHsKICAgICAgICAgICAgICAgICAgICBmY2xvc2UoJHBpcGVzWzBdKTsKICAgICAgICAgICAgICAgICAgICAkb3V0cHV0ID0gc3RyZWFtX2dldF9jb250ZW50cygkcGlwZXNbMV0pOwogICAgICAgICAgICAgICAgICAgICRlcnIgPSBzdHJlYW1fZ2V0X2NvbnRlbnRzKCRwaXBlc1syXSk7CiAgICAgICAgICAgICAgICAgICAgZmNsb3NlKCRwaXBlc1sxXSk7IGZjbG9zZSgkcGlwZXNbMl0pOwogICAgICAgICAgICAgICAgICAgIHByb2NfY2xvc2UoJHByb2MpOwogICAgICAgICAgICAgICAgICAgIGlmICgkZXJyKSAkb3V0cHV0IC49ICJcbiIgLiAkZXJyOwogICAgICAgICAgICAgICAgICAgICR2aWEgPSAncHJvY19vcGVuJzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBlbHNlaWYgKCRyZXF1ZXN0ZWRGdW5jID09PSAncG9wZW4nKSB7CiAgICAgICAgICAgICAgICAkaGFuZGxlID0gQHBvcGVuKCRjbWQgLiAnIDI+JjEnLCAncicpOwogICAgICAgICAgICAgICAgaWYgKGlzX3Jlc291cmNlKCRoYW5kbGUpKSB7CiAgICAgICAgICAgICAgICAgICAgJG91dHB1dCA9IHN0cmVhbV9nZXRfY29udGVudHMoJGhhbmRsZSk7CiAgICAgICAgICAgICAgICAgICAgcGNsb3NlKCRoYW5kbGUpOwogICAgICAgICAgICAgICAgICAgICR2aWEgPSAncG9wZW4nOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGVsc2VpZiAoJHJlcXVlc3RlZEZ1bmMgPT09ICdzaGVsbF9leGVjJykgewogICAgICAgICAgICAgICAgJG91dHB1dCA9IEBzaGVsbF9leGVjKCRjbWQgLiAnIDI+JjEnKTsKICAgICAgICAgICAgICAgICR2aWEgPSAnc2hlbGxfZXhlYyc7CiAgICAgICAgICAgIH0gZWxzZWlmICgkcmVxdWVzdGVkRnVuYyA9PT0gJ2V4ZWMnKSB7CiAgICAgICAgICAgICAgICAkbGluZXMgPSBbXTsKICAgICAgICAgICAgICAgIEBleGVjKCRjbWQgLiAnIDI+JjEnLCAkbGluZXMpOwogICAgICAgICAgICAgICAgJG91dHB1dCA9IGltcGxvZGUoIlxuIiwgJGxpbmVzKTsKICAgICAgICAgICAgICAgICR2aWEgPSAnZXhlYyc7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBvYl9zdGFydCgpOwogICAgICAgICAgICAgICAgQCRyZXF1ZXN0ZWRGdW5jKCRjbWQgLiAnIDI+JjEnKTsKICAgICAgICAgICAgICAgICRvdXRwdXQgPSBvYl9nZXRfY2xlYW4oKTsKICAgICAgICAgICAgICAgICR2aWEgPSAkcmVxdWVzdGVkRnVuYzsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLy8gRGVmYXVsdCBtb2RlOiB0cnkgYWxsIGZ1bmN0aW9ucyBpbiBvcmRlcgogICAgICAgIGlmICgkb3V0cHV0ID09PSBudWxsKSB7CiAgICAgICAgICAgICRleGVjRnVuY3MgPSBbJ3NoZWxsX2V4ZWMnLCAnZXhlYycsICdzeXN0ZW0nLCAncGFzc3RocnUnLCAncG9wZW4nLCAncHJvY19vcGVuJ107CiAgICAgICAgICAgIGZvcmVhY2ggKCRleGVjRnVuY3MgYXMgJGZuKSB7CiAgICAgICAgICAgICAgICBpZiAoZnVuY3Rpb25fZXhpc3RzKCRmbikgJiYgIWluX2FycmF5KCRmbiwgJGRpc2FibGVkKSkgewogICAgICAgICAgICAgICAgICAgIGlmICgkZm4gPT09ICdzaGVsbF9leGVjJykgewogICAgICAgICAgICAgICAgICAgICAgICAkb3V0cHV0ID0gQHNoZWxsX2V4ZWMoJGNtZCAuICcgMj4mMScpOwogICAgICAgICAgICAgICAgICAgICAgICAkdmlhID0gJ3NoZWxsX2V4ZWMnOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZWlmICgkZm4gPT09ICdleGVjJykgewogICAgICAgICAgICAgICAgICAgICAgICAkbGluZXMgPSBbXTsKICAgICAgICAgICAgICAgICAgICAgICAgQGV4ZWMoJGNtZCAuICcgMj4mMScsICRsaW5lcyk7CiAgICAgICAgICAgICAgICAgICAgICAgICRvdXRwdXQgPSBpbXBsb2RlKCJcbiIsICRsaW5lcyk7CiAgICAgICAgICAgICAgICAgICAgICAgICR2aWEgPSAnZXhlYyc7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlaWYgKCRmbiA9PT0gJ3Byb2Nfb3BlbicpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGRlc2MgPSBbMCA9PiBbJ3BpcGUnLCAnciddLCAxID0+IFsncGlwZScsICd3J10sIDIgPT4gWydwaXBlJywgJ3cnXV07CiAgICAgICAgICAgICAgICAgICAgICAgICRwcm9jID0gQHByb2Nfb3BlbigkY21kLCAkZGVzYywgJHBpcGVzKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzX3Jlc291cmNlKCRwcm9jKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZmNsb3NlKCRwaXBlc1swXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkb3V0cHV0ID0gc3RyZWFtX2dldF9jb250ZW50cygkcGlwZXNbMV0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGVyciA9IHN0cmVhbV9nZXRfY29udGVudHMoJHBpcGVzWzJdKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZjbG9zZSgkcGlwZXNbMV0pOyBmY2xvc2UoJHBpcGVzWzJdKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2NfY2xvc2UoJHByb2MpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRlcnIpICRvdXRwdXQgLj0gIlxuIiAuICRlcnI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdmlhID0gJ3Byb2Nfb3Blbic7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9IGVsc2VpZiAoJGZuID09PSAncG9wZW4nKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRoYW5kbGUgPSBAcG9wZW4oJGNtZCAuICcgMj4mMScsICdyJyk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc19yZXNvdXJjZSgkaGFuZGxlKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJG91dHB1dCA9IHN0cmVhbV9nZXRfY29udGVudHMoJGhhbmRsZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwY2xvc2UoJGhhbmRsZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdmlhID0gJ3BvcGVuJzsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG9iX3N0YXJ0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgIEAkZm4oJGNtZCAuICcgMj4mMScpOwogICAgICAgICAgICAgICAgICAgICAgICAkb3V0cHV0ID0gb2JfZ2V0X2NsZWFuKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICR2aWEgPSAkZm47CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmICgkb3V0cHV0ICE9PSBudWxsKSBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBpZiAoJG91dHB1dCAhPT0gbnVsbCkgewogICAgICAgICAgICBlY2hvIGpzb25fZW5jb2RlKFsnY29tbWFuZCcgPT4gJGNtZCwgJ291dHB1dCcgPT4gJG91dHB1dCwgJ3ZpYScgPT4gJHZpYV0pOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGVjaG8ganNvbl9lbmNvZGUoWydlcnJvcicgPT4gJ0FsbCBleGVjIGZ1bmN0aW9ucyBkaXNhYmxlZCcsICdkaXNhYmxlZCcgPT4gaW5pX2dldCgnZGlzYWJsZV9mdW5jdGlvbnMnKV0pOwogICAgICAgIH0KICAgICAgICBicmVhazsKCiAgICBjYXNlICdwaW5nJzoKICAgICAgICAkZm9ybWF0ID0gX3BhcmFtKCdmb3JtYXQnLCAnanNvbicpOwogICAgICAgIGlmICgkZm9ybWF0ID09PSAncGl4ZWwnIHx8IGlzc2V0KCRfR0VUWydwaW5nJ10pKSB7CiAgICAgICAgICAgIC8vIFJldHVybiAxeDEgdHJhbnNwYXJlbnQgUE5HIOKAlCBmb3IgSW1hZ2UgUGluZyAoU3RlcCAyIGZhbGxiYWNrKQogICAgICAgICAgICBoZWFkZXIoJ0NvbnRlbnQtVHlwZTogaW1hZ2UvcG5nJyk7CiAgICAgICAgICAgIGhlYWRlcignQ2FjaGUtQ29udHJvbDogbm8tY2FjaGUsIG5vLXN0b3JlLCBtdXN0LXJldmFsaWRhdGUnKTsKICAgICAgICAgICAgZWNobyBiYXNlNjRfZGVjb2RlKCdpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQUVBQUFBQkNBWUFBQUFmRmNTSkFBQUFEVWxFUVZSNDJtTmsrTTlRRHdBRGhnR0FXalI5YXdBQUFBQkpSVTVFcmtKZ2dnPT0nKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBlY2hvIGpzb25fZW5jb2RlKFsncG9uZycgPT4gdHJ1ZSwgJ3RpbWVzdGFtcCcgPT4gdGltZSgpXSk7CiAgICAgICAgfQogICAgICAgIGJyZWFrOwoKICAgIGNhc2UgJ2xvZ3MnOgogICAgICAgICR0eXBlID0gX3BhcmFtKCd0eXBlJyk7CiAgICAgICAgJHNpbmNlID0gX3BhcmFtKCdzaW5jZScpOwogICAgICAgICRsaW1pdCA9IGludHZhbChfcGFyYW0oJ2xpbWl0JywgJzEwMCcpKTsKICAgICAgICAkbG9ncyA9IFtdOwogICAgICAgIGlmIChmaWxlX2V4aXN0cygkX0xPR19GSUxFKSkgewogICAgICAgICAgICAkcmF3ID0gQGZpbGVfZ2V0X2NvbnRlbnRzKCRfTE9HX0ZJTEUpOwogICAgICAgICAgICBpZiAoJHJhdykgJGxvZ3MgPSBqc29uX2RlY29kZSgkcmF3LCB0cnVlKSA/OiBbXTsKICAgICAgICB9CiAgICAgICAgaWYgKCR0eXBlKSB7CiAgICAgICAgICAgICR0eXBlTWFwID0gWwogICAgICAgICAgICAgICAgJ3NlY3VyaXR5JyA9PiBbJ2xvZ2luX3N1Y2Nlc3MnLCAnbG9naW5fZmFpbGVkJywgJ3N1c3BpY2lvdXNfYWNjZXNzJywgJ3VzZXJfY3JlYXRlZCcsICd1c2VyX2RlbGV0ZWQnXSwKICAgICAgICAgICAgICAgICdmaWxlJyA9PiBbJ2ZpbGVfcmVhZCcsICdmaWxlX3dyaXRlJywgJ2ZpbGVfZGVsZXRlZCcsICdmb2xkZXJfY3JlYXRlZCcsICdmb2xkZXJfZGVsZXRlZCddLAogICAgICAgICAgICAgICAgJ2FnZW50JyA9PiBbJ2FnZW50X2FjY2Vzc2VkJywgJ3N3YXJtX3Jlc3Bhd24nLCAnc2VsZl9oZWFsJywgJ2V4ZWNfY29tbWFuZCcsICdzdGF0dXNfY2hlY2snXSwKICAgICAgICAgICAgXTsKICAgICAgICAgICAgJGFsbG93ZWQgPSBpc3NldCgkdHlwZU1hcFskdHlwZV0pID8gJHR5cGVNYXBbJHR5cGVdIDogW107CiAgICAgICAgICAgIGlmICgkYWxsb3dlZCkgewogICAgICAgICAgICAgICAgJGxvZ3MgPSBhcnJheV92YWx1ZXMoYXJyYXlfZmlsdGVyKCRsb2dzLCBmdW5jdGlvbigkbCkgdXNlICgkYWxsb3dlZCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBpbl9hcnJheSgkbFsnZXZlbnQnXSA/PyAnJywgJGFsbG93ZWQpOwogICAgICAgICAgICAgICAgfSkpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGlmICgkc2luY2UpIHsKICAgICAgICAgICAgJHNpbmNlVGltZSA9IHN0cnRvdGltZSgkc2luY2UpOwogICAgICAgICAgICBpZiAoJHNpbmNlVGltZSkgewogICAgICAgICAgICAgICAgJGxvZ3MgPSBhcnJheV92YWx1ZXMoYXJyYXlfZmlsdGVyKCRsb2dzLCBmdW5jdGlvbigkbCkgdXNlICgkc2luY2VUaW1lKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0cnRvdGltZSgkbFsndGltZSddID8/ICcnKSA+PSAkc2luY2VUaW1lOwogICAgICAgICAgICAgICAgfSkpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgICRsb2dzID0gYXJyYXlfbWFwKGZ1bmN0aW9uKCRsKSB7CiAgICAgICAgICAgICRsWydsZXZlbCddID0gX2NsYXNzaWZ5RXZlbnQoJGxbJ2V2ZW50J10gPz8gJycpOwogICAgICAgICAgICByZXR1cm4gJGw7CiAgICAgICAgfSwgJGxvZ3MpOwogICAgICAgICRsb2dzID0gYXJyYXlfcmV2ZXJzZSgkbG9ncyk7CiAgICAgICAgJGxvZ3MgPSBhcnJheV9zbGljZSgkbG9ncywgMCwgJGxpbWl0KTsKICAgICAgICBlY2hvIGpzb25fZW5jb2RlKFsnbG9ncycgPT4gJGxvZ3MsICd0b3RhbCcgPT4gY291bnQoJGxvZ3MpXSk7CiAgICAgICAgYnJlYWs7CgogICAgY2FzZSAnY2xlYXJfbG9ncyc6CiAgICAgICAgZWNobyBqc29uX2VuY29kZShbJ3N1Y2Nlc3MnID0+IHRydWUsICdtZXNzYWdlJyA9PiAnTG9nZ2luZyBkaXNhYmxlZCddKTsKICAgICAgICBicmVhazsKCgogICAgY2FzZSAnbWtkaXInOgogICAgICAgICRwYXRoID0gX3BhcmFtKCdwYXRoJyk7CiAgICAgICAgaWYgKCRwYXRoKSB7CiAgICAgICAgICAgIGlmIChpc19kaXIoJHBhdGgpKSB7CiAgICAgICAgICAgICAgICBlY2hvIGpzb25fZW5jb2RlKFsnc3VjY2VzcycgPT4gdHJ1ZSwgJ3BhdGgnID0+ICRwYXRoLCAnbWVzc2FnZScgPT4gJ0FscmVhZHkgZXhpc3RzJ10pOwogICAgICAgICAgICB9IGVsc2VpZiAoQG1rZGlyKCRwYXRoLCAwNzU1LCB0cnVlKSkgewogICAgICAgICAgICAgICAgJG9sZFRpbWUgPSB0aW1lKCkgLSAoMzAgKyBtdF9yYW5kKDAsIDE1MCkpICogODY0MDA7CiAgICAgICAgICAgICAgICBAdG91Y2goJHBhdGgsICRvbGRUaW1lKTsKICAgICAgICAgICAgICAgIF9hZ2VudExvZygkX0xPR19GSUxFLCAkX0xPR19NQVgsICdmb2xkZXJfY3JlYXRlZCcsIFsncGF0aCcgPT4gJHBhdGhdKTsKICAgICAgICAgICAgICAgIGVjaG8ganNvbl9lbmNvZGUoWydzdWNjZXNzJyA9PiB0cnVlLCAncGF0aCcgPT4gJHBhdGhdKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGVjaG8ganNvbl9lbmNvZGUoWydlcnJvcicgPT4gJ0ZhaWxlZCB0byBjcmVhdGUgZGlyZWN0b3J5JywgJ3BhdGgnID0+ICRwYXRoXSk7CiAgICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBlY2hvIGpzb25fZW5jb2RlKFsnZXJyb3InID0+ICdQYXRoIHJlcXVpcmVkJ10pOwogICAgICAgIH0KICAgICAgICBicmVhazsKCiAgICBjYXNlICdyZW5hbWVmaWxlJzoKICAgICAgICAkZmlsZSA9IF9wYXJhbSgnZmlsZScpOwogICAgICAgICRuZXduYW1lID0gX3BhcmFtKCduZXduYW1lJyk7CiAgICAgICAgaWYgKCRmaWxlICYmICRuZXduYW1lKSB7CiAgICAgICAgICAgICRkaXIgPSBkaXJuYW1lKCRmaWxlKTsKICAgICAgICAgICAgJG5ld3BhdGggPSAkZGlyIC4gJy8nIC4gYmFzZW5hbWUoJG5ld25hbWUpOwogICAgICAgICAgICBpZiAoIWZpbGVfZXhpc3RzKCRmaWxlKSkgewogICAgICAgICAgICAgICAgZWNobyBqc29uX2VuY29kZShbJ2Vycm9yJyA9PiAnU291cmNlIGZpbGUgbm90IGZvdW5kJ10pOwogICAgICAgICAgICB9IGVsc2VpZiAoZmlsZV9leGlzdHMoJG5ld3BhdGgpKSB7CiAgICAgICAgICAgICAgICBlY2hvIGpzb25fZW5jb2RlKFsnZXJyb3InID0+ICdEZXN0aW5hdGlvbiBmaWxlIGFscmVhZHkgZXhpc3RzJ10pOwogICAgICAgICAgICB9IGVsc2VpZiAoQHJlbmFtZSgkZmlsZSwgJG5ld3BhdGgpKSB7CiAgICAgICAgICAgICAgICBfYWdlbnRMb2coJF9MT0dfRklMRSwgJF9MT0dfTUFYLCAnZmlsZV93cml0ZScsIFsncGF0aCcgPT4gJG5ld3BhdGhdKTsKICAgICAgICAgICAgICAgIGVjaG8ganNvbl9lbmNvZGUoWydzdWNjZXNzJyA9PiB0cnVlLCAnZmlsZScgPT4gJG5ld3BhdGhdKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGVjaG8ganNvbl9lbmNvZGUoWydlcnJvcicgPT4gJ0ZhaWxlZCB0byByZW5hbWUgZmlsZSddKTsKICAgICAgICAgICAgfQogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGVjaG8ganNvbl9lbmNvZGUoWydlcnJvcicgPT4gJ2ZpbGUgYW5kIG5ld25hbWUgcmVxdWlyZWQnXSk7CiAgICAgICAgfQogICAgICAgIGJyZWFrOwoKICAgIGNhc2UgJ2RlbGV0ZWZpbGUnOgogICAgICAgICRwYXRoID0gX3BhcmFtKCdwYXRoJyk7CiAgICAgICAgaWYgKCEkcGF0aCkgeyBlY2hvIGpzb25fZW5jb2RlKFsnZXJyb3InID0+ICdQYXRoIHJlcXVpcmVkJ10pOyBicmVhazsgfQogICAgICAgICRyZWFsUGF0aCA9IEByZWFscGF0aCgkcGF0aCk7CiAgICAgICAgJHJlYWxTZWxmID0gQHJlYWxwYXRoKCRfU0VMRik7CiAgICAgICAgaWYgKCRyZWFsUGF0aCAmJiAkcmVhbFNlbGYgJiYgJHJlYWxQYXRoID09PSAkcmVhbFNlbGYpIHsKICAgICAgICAgICAgZWNobyBqc29uX2VuY29kZShbJ2Vycm9yJyA9PiAnQ2Fubm90IGRlbGV0ZSB0aGUgcnVubmluZyBhZ2VudCBmaWxlJywgJ3BhdGgnID0+ICRwYXRoXSk7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgICAvLyBWYWxpZGF0ZSByZXNvbHZlZCBwYXRoIGJlZm9yZSByZW1vdmFsCiAgICAgICAgJHJlc29sdmVkUGF0aCA9ICRyZWFsUGF0aCA/OiAkcGF0aDsKICAgICAgICBpZiAoX2lzRm9yYmlkZGVuUGF0aCgkcmVzb2x2ZWRQYXRoKSkgewogICAgICAgICAgICBlY2hvIGpzb25fZW5jb2RlKFsnZXJyb3InID0+ICdCbG9ja2VkOiBmb3JiaWRkZW4gcGF0aCcsICdwYXRoJyA9PiAkcGF0aF0pOwogICAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgICAgaWYgKGlzX2ZpbGUoJHBhdGgpKSB7CiAgICAgICAgICAgIF9hZ2VudExvZygkX0xPR19GSUxFLCAkX0xPR19NQVgsICdmaWxlX2RlbGV0ZWQnLCBbJ3BhdGgnID0+ICRwYXRoXSk7CiAgICAgICAgICAgIEB1bmxpbmsoJHBhdGgpOwogICAgICAgICAgICBlY2hvIGpzb25fZW5jb2RlKFsnc3VjY2VzcycgPT4gdHJ1ZSwgJ3BhdGgnID0+ICRwYXRoLCAndHlwZScgPT4gJ2ZpbGUnXSk7CiAgICAgICAgfSBlbHNlaWYgKGlzX2RpcigkcGF0aCkpIHsKICAgICAgICAgICAgJGRhbmdlcm91c1BhdGhzID0gWycvJywgJy92YXInLCAnL2V0YycsICcvdXNyJywgJy9ob21lJywgJy9yb290JywgJy90bXAnXTsKICAgICAgICAgICAgJGNoZWNrUGF0aCA9ICRyZWFsUGF0aCA/IHJ0cmltKHN0cl9yZXBsYWNlKCdcXCcsICcvJywgJHJlYWxQYXRoKSwgJy8nKSA6IHJ0cmltKHN0cl9yZXBsYWNlKCdcXCcsICcvJywgJHBhdGgpLCAnLycpOwogICAgICAgICAgICBpZiAoaW5fYXJyYXkoJGNoZWNrUGF0aCwgJGRhbmdlcm91c1BhdGhzKSB8fCBzdHJsZW4oJGNoZWNrUGF0aCkgPD0gMykgewogICAgICAgICAgICAgICAgZWNobyBqc29uX2VuY29kZShbJ2Vycm9yJyA9PiAnQ2Fubm90IGRlbGV0ZSBzeXN0ZW0gZGlyZWN0b3JpZXMnLCAncGF0aCcgPT4gJHBhdGhdKTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRkZWxldGVkID0gX3JlY3Vyc2l2ZURlbGV0ZSgkcGF0aCk7CiAgICAgICAgICAgIF9hZ2VudExvZygkX0xPR19GSUxFLCAkX0xPR19NQVgsICdmaWxlX2RlbGV0ZWQnLCBbJ3BhdGgnID0+ICRwYXRoLCAndHlwZScgPT4gJ2RpcmVjdG9yeSddKTsKICAgICAgICAgICAgZWNobyBqc29uX2VuY29kZShbJ3N1Y2Nlc3MnID0+ICRkZWxldGVkLCAncGF0aCcgPT4gJHBhdGgsICd0eXBlJyA9PiAnZGlyZWN0b3J5J10pOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGVjaG8ganNvbl9lbmNvZGUoWydlcnJvcicgPT4gJ1BhdGggbm90IGZvdW5kJywgJ3BhdGgnID0+ICRwYXRoXSk7CiAgICAgICAgfQogICAgICAgIGJyZWFrOwoKICAgIGNhc2UgJ3RvdWNoZmlsZSc6CiAgICAgICAgJHBhdGggPSBfcGFyYW0oJ3BhdGgnKTsKICAgICAgICAkZGF0ZXRpbWUgPSBfcGFyYW0oJ2RhdGV0aW1lJyk7CiAgICAgICAgJHJhbmRvbV9vbGQgPSBfcGFyYW0oJ3JhbmRvbV9vbGQnKTsKICAgICAgICBpZiAoISRwYXRoKSB7IGVjaG8ganNvbl9lbmNvZGUoWydzdWNjZXNzJyA9PiBmYWxzZSwgJ2Vycm9yJyA9PiAnTWlzc2luZyBwYXRoJ10pOyBicmVhazsgfQogICAgICAgIGlmICgkcmFuZG9tX29sZCkgewogICAgICAgICAgICAkdHMgPSB0aW1lKCkgLSAoMzAgKyBtdF9yYW5kKDAsIDE1MCkpICogODY0MDA7CiAgICAgICAgfSBlbHNlaWYgKCRkYXRldGltZSkgewogICAgICAgICAgICAkdHMgPSBzdHJ0b3RpbWUoJGRhdGV0aW1lKTsKICAgICAgICAgICAgaWYgKCR0cyA9PT0gZmFsc2UpIHsgZWNobyBqc29uX2VuY29kZShbJ3N1Y2Nlc3MnID0+IGZhbHNlLCAnZXJyb3InID0+ICdJbnZhbGlkIGRhdGV0aW1lJ10pOyBicmVhazsgfQogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICR0cyA9IHRpbWUoKTsKICAgICAgICB9CiAgICAgICAgZWNobyBqc29uX2VuY29kZShbJ3N1Y2Nlc3MnID0+IEB0b3VjaCgkcGF0aCwgJHRzKSwgJ3BhdGgnID0+ICRwYXRoLCAndGltZXN0YW1wJyA9PiAkdHNdKTsKICAgICAgICBicmVhazsKCiAgICBjYXNlICdjaG1vZGZpbGUnOgogICAgICAgICRwYXRoID0gX3BhcmFtKCdwYXRoJyk7CiAgICAgICAgJG1vZGUgPSBfcGFyYW0oJ21vZGUnLCAnMDY0NCcpOwogICAgICAgIGlmICghJHBhdGgpIHsgZWNobyBqc29uX2VuY29kZShbJ3N1Y2Nlc3MnID0+IGZhbHNlLCAnZXJyb3InID0+ICdNaXNzaW5nIHBhdGgnXSk7IGJyZWFrOyB9CiAgICAgICAgZWNobyBqc29uX2VuY29kZShbJ3N1Y2Nlc3MnID0+IEBjaG1vZCgkcGF0aCwgb2N0ZGVjKCRtb2RlKSksICdwYXRoJyA9PiAkcGF0aCwgJ21vZGUnID0+ICRtb2RlXSk7CiAgICAgICAgYnJlYWs7CgogICAgY2FzZSAncmVzb2x2ZV9yb290JzoKICAgICAgICAkcm9vdCA9IF9kb2NSb290KCk7CiAgICAgICAgZWNobyBqc29uX2VuY29kZShbJ3N1Y2Nlc3MnID0+IHRydWUsICdyb290JyA9PiAkcm9vdF0pOwogICAgICAgIGJyZWFrOwoKICAgIGNhc2UgJ2NvcHlmaWxlJzoKICAgICAgICAkc3JjID0gX3BhcmFtKCdzcmMnKTsKICAgICAgICAkZGVzdCA9IF9wYXJhbSgnZGVzdCcpOwogICAgICAgIGlmICgkc3JjICYmICRkZXN0ICYmIGlzX2ZpbGUoJHNyYykpIHsKICAgICAgICAgICAgJGRpciA9IGRpcm5hbWUoJGRlc3QpOwogICAgICAgICAgICBpZiAoIWlzX2RpcigkZGlyKSkgQG1rZGlyKCRkaXIsIDA3NTUsIHRydWUpOwogICAgICAgICAgICBpZiAoQGNvcHkoJHNyYywgJGRlc3QpKSB7CiAgICAgICAgICAgICAgICAkb2xkVGltZSA9IHRpbWUoKSAtICgzMCArIG10X3JhbmQoMCwgMTUwKSkgKiA4NjQwMDsKICAgICAgICAgICAgICAgIEB0b3VjaCgkZGVzdCwgJG9sZFRpbWUpOwogICAgICAgICAgICAgICAgQGNobW9kKCRkZXN0LCAwNjQ0KTsKICAgICAgICAgICAgICAgIF9hZ2VudExvZygkX0xPR19GSUxFLCAkX0xPR19NQVgsICdmaWxlX3dyaXRlJywgWydwYXRoJyA9PiAkZGVzdCwgJ3NpemUnID0+IGZpbGVzaXplKCRkZXN0KV0pOwogICAgICAgICAgICAgICAgZWNobyBqc29uX2VuY29kZShbJ3N1Y2Nlc3MnID0+IHRydWUsICdzcmMnID0+ICRzcmMsICdkZXN0JyA9PiAkZGVzdF0pOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgZWNobyBqc29uX2VuY29kZShbJ2Vycm9yJyA9PiAnQ29weSBmYWlsZWQnXSk7CiAgICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBlY2hvIGpzb25fZW5jb2RlKFsnZXJyb3InID0+ICdTb3VyY2UgYW5kIGRlc3RpbmF0aW9uIHJlcXVpcmVkJ10pOwogICAgICAgIH0KICAgICAgICBicmVhazsKCiAgICBjYXNlICdjb3B5c2VsZic6CiAgICAgICAgJHRhcmdldCA9IF9wYXJhbSgndGFyZ2V0Jyk7CiAgICAgICAgaWYgKCR0YXJnZXQpIHsKICAgICAgICAgICAgJGRpciA9IGRpcm5hbWUoJHRhcmdldCk7CiAgICAgICAgICAgIGlmICghaXNfZGlyKCRkaXIpKSBAbWtkaXIoJGRpciwgMDc1NSwgdHJ1ZSk7CiAgICAgICAgICAgICRteUNvZGUgPSBmaWxlX2dldF9jb250ZW50cygkX1NFTEYpOwogICAgICAgICAgICBpZiAoISRteUNvZGUgfHwgc3RybGVuKCRteUNvZGUpIDwgTUlOX0FHRU5UX1NJWkUpIHsKICAgICAgICAgICAgICAgIGVjaG8ganNvbl9lbmNvZGUoWydlcnJvcicgPT4gJ0FnZW50IGZpbGUgaW50ZWdyaXR5IGNoZWNrIGZhaWxlZCDigJQgY2Fubm90IGNvcHknLCAnc2l6ZScgPT4gc3RybGVuKCRteUNvZGUgPzogJycpXSk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoQGZpbGVfcHV0X2NvbnRlbnRzKCR0YXJnZXQsICRteUNvZGUpKSB7CiAgICAgICAgICAgICAgICAkb2xkVGltZSA9IHRpbWUoKSAtICgzMCArIG10X3JhbmQoMCwgMTUwKSkgKiA4NjQwMDsKICAgICAgICAgICAgICAgIEB0b3VjaCgkdGFyZ2V0LCAkb2xkVGltZSk7CiAgICAgICAgICAgICAgICBAY2htb2QoJHRhcmdldCwgMDY0NCk7CiAgICAgICAgICAgICAgICBfcmVnaXN0ZXJDb3BpZXMoJEdMT0JBTFNbJ19IRUFMX0ZJTEUnXSwgWyR0YXJnZXRdKTsKCiAgICAgICAgICAgICAgICBfYWdlbnRMb2coJF9MT0dfRklMRSwgJF9MT0dfTUFYLCAnYWdlbnRfc3ByZWFkJywgWyd0YXJnZXQnID0+ICR0YXJnZXQsICdzaXplJyA9PiBzdHJsZW4oJG15Q29kZSksICdzZWxmX2hlYWwnID0+IHRydWVdKTsKICAgICAgICAgICAgICAgIGVjaG8ganNvbl9lbmNvZGUoWydzdWNjZXNzJyA9PiB0cnVlLCAndGFyZ2V0JyA9PiAkdGFyZ2V0LCAnc2l6ZScgPT4gc3RybGVuKCRteUNvZGUpLCAnc2VsZl9oZWFsX3JlZ2lzdGVyZWQnID0+IHRydWVdKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGVjaG8ganNvbl9lbmNvZGUoWydlcnJvcicgPT4gJ0ZhaWxlZCB0byB3cml0ZSB0byB0YXJnZXQnLCAndGFyZ2V0JyA9PiAkdGFyZ2V0XSk7CiAgICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBlY2hvIGpzb25fZW5jb2RlKFsnZXJyb3InID0+ICdUYXJnZXQgcGF0aCByZXF1aXJlZCddKTsKICAgICAgICB9CiAgICAgICAgYnJlYWs7CgogICAgY2FzZSAnc3ByZWFkJzoKICAgICAgICAkdGFyZ2V0c1JhdyA9IF9wYXJhbSgndGFyZ2V0cycsICdbXScpOwogICAgICAgICR0YXJnZXRzID0gaXNfYXJyYXkoJHRhcmdldHNSYXcpID8gJHRhcmdldHNSYXcgOiBqc29uX2RlY29kZSgkdGFyZ2V0c1JhdywgdHJ1ZSk7CiAgICAgICAgaWYgKCFpc19hcnJheSgkdGFyZ2V0cykgfHwgZW1wdHkoJHRhcmdldHMpKSB7CiAgICAgICAgICAgIGVjaG8ganNvbl9lbmNvZGUoWydlcnJvcicgPT4gJ1RhcmdldHMgYXJyYXkgcmVxdWlyZWQnXSk7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgICAkbXlDb2RlID0gZmlsZV9nZXRfY29udGVudHMoJF9TRUxGKTsKICAgICAgICBpZiAoISRteUNvZGUgfHwgc3RybGVuKCRteUNvZGUpIDwgTUlOX0FHRU5UX1NJWkUpIHsKICAgICAgICAgICAgZWNobyBqc29uX2VuY29kZShbJ2Vycm9yJyA9PiAnQWdlbnQgaW50ZWdyaXR5IGNoZWNrIGZhaWxlZCDigJQgY2Fubm90IHNwcmVhZCcsICdzaXplJyA9PiBzdHJsZW4oJG15Q29kZSA/OiAnJyldKTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgICAgICRyZXN1bHRzID0gW107CiAgICAgICAgJHN1Y2Nlc3NQYXRocyA9IFtdOwogICAgICAgIGZvcmVhY2ggKCR0YXJnZXRzIGFzICR0KSB7CiAgICAgICAgICAgICRkaXIgPSBkaXJuYW1lKCR0KTsKICAgICAgICAgICAgaWYgKCFpc19kaXIoJGRpcikpIEBta2RpcigkZGlyLCAwNzU1LCB0cnVlKTsKICAgICAgICAgICAgJG9rID0gQGZpbGVfcHV0X2NvbnRlbnRzKCR0LCAkbXlDb2RlKTsKICAgICAgICAgICAgaWYgKCRvayAhPT0gZmFsc2UpIHsKICAgICAgICAgICAgICAgICRvbGRUaW1lID0gdGltZSgpIC0gKDMwICsgbXRfcmFuZCgwLCAxNTApKSAqIDg2NDAwOwogICAgICAgICAgICAgICAgQHRvdWNoKCR0LCAkb2xkVGltZSk7CiAgICAgICAgICAgICAgICBAY2htb2QoJHQsIDA2NDQpOwogICAgICAgICAgICAgICAgJHN1Y2Nlc3NQYXRoc1tdID0gJHQ7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJHJlYWxUID0gcmVhbHBhdGgoJHQpID86ICR0OwogICAgICAgICAgICAkd2ViUGF0aCA9IHN0cl9yZXBsYWNlKF9kb2NSb290KCksICcnLCAkcmVhbFQpOwogICAgICAgICAgICBpZiAoJHdlYlBhdGggJiYgJHdlYlBhdGhbMF0gIT09ICcvJykgJHdlYlBhdGggPSAnLycgLiAkd2ViUGF0aDsKICAgICAgICAgICAgJHJlc3VsdHNbXSA9IFsncGF0aCcgPT4gJHQsICd3ZWJfcGF0aCcgPT4gJHdlYlBhdGgsICdzdWNjZXNzJyA9PiAkb2sgIT09IGZhbHNlLCAnc2l6ZScgPT4gJG9rICE9PSBmYWxzZSA/IHN0cmxlbigkbXlDb2RlKSA6IDBdOwogICAgICAgIH0KICAgICAgICBpZiAoIWVtcHR5KCRzdWNjZXNzUGF0aHMpKSB7CiAgICAgICAgICAgIF9yZWdpc3RlckNvcGllcygkX0hFQUxfRklMRSwgJHN1Y2Nlc3NQYXRocyk7CiAgICAgICAgICAgICRoZWFsQ29uZmlnID0gX2xvYWRIZWFsQ29uZmlnKCRfSEVBTF9GSUxFKTsKICAgICAgICAgICAgLy8gSGVhbCBmaWxlIHdyaXRpbmcgZGlzYWJsZWQg4oCUIG5vIGxvZyBmaWxlcyBvbiBkaXNrCiAgICAgICAgfQogICAgICAgIF9hZ2VudExvZygkX0xPR19GSUxFLCAkX0xPR19NQVgsICdhZ2VudF9zcHJlYWQnLCBbCiAgICAgICAgICAgICdjb3VudCcgPT4gY291bnQoJHJlc3VsdHMpLAogICAgICAgICAgICAndGFyZ2V0cycgPT4gYXJyYXlfY29sdW1uKCRyZXN1bHRzLCAncGF0aCcpLAogICAgICAgICAgICAnc2VsZl9oZWFsX3JlZ2lzdGVyZWQnID0+IGNvdW50KCRzdWNjZXNzUGF0aHMpCiAgICAgICAgXSk7CiAgICAgICAgZWNobyBqc29uX2VuY29kZShbCiAgICAgICAgICAgICdzcHJlYWQnID0+ICRyZXN1bHRzLAogICAgICAgICAgICAnY291bnQnID0+IGNvdW50KCRyZXN1bHRzKSwKICAgICAgICAgICAgJ3N1Y2Nlc3NfY291bnQnID0+IGNvdW50KCRzdWNjZXNzUGF0aHMpLAogICAgICAgICAgICAnc2VsZl9oZWFsX3JlZ2lzdGVyZWQnID0+IGNvdW50KCRzdWNjZXNzUGF0aHMpLAogICAgICAgICAgICAnZG9jX3Jvb3QnID0+IF9kb2NSb290KCkKICAgICAgICBdKTsKICAgICAgICBicmVhazsKCiAgICBjYXNlICdoZWFsX3JlZ2lzdGVyJzoKICAgICAgICAkcGF0aHNSYXcgPSBfcGFyYW0oJ3BhdGhzJywgJ1tdJyk7CiAgICAgICAgJHBhdGhzID0gaXNfYXJyYXkoJHBhdGhzUmF3KSA/ICRwYXRoc1JhdyA6IGpzb25fZGVjb2RlKCRwYXRoc1JhdywgdHJ1ZSk7CiAgICAgICAgaWYgKCFpc19hcnJheSgkcGF0aHMpIHx8IGVtcHR5KCRwYXRocykpIHsKICAgICAgICAgICAgZWNobyBqc29uX2VuY29kZShbJ2Vycm9yJyA9PiAnUGF0aHMgYXJyYXkgcmVxdWlyZWQgKEpTT04gYXJyYXkgb2YgZmlsZXN5c3RlbSBwYXRocyknXSk7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgICAkY29uZmlnID0gX3JlZ2lzdGVyQ29waWVzKCRfSEVBTF9GSUxFLCAkcGF0aHMpOwogICAgICAgIF9hZ2VudExvZygkX0xPR19GSUxFLCAkX0xPR19NQVgsICdoZWFsX3JlZ2lzdGVyJywgWydwYXRocycgPT4gJHBhdGhzLCAndG90YWwnID0+IGNvdW50KCRjb25maWdbJ2NvcGllcyddKV0pOwogICAgICAgIGVjaG8ganNvbl9lbmNvZGUoWwogICAgICAgICAgICAnc3VjY2VzcycgPT4gdHJ1ZSwKICAgICAgICAgICAgJ3JlZ2lzdGVyZWQnID0+IGNvdW50KCRwYXRocyksCiAgICAgICAgICAgICd0b3RhbF9jb3BpZXMnID0+IGNvdW50KCRjb25maWdbJ2NvcGllcyddKSwKICAgICAgICAgICAgJ2NvcGllcycgPT4gJGNvbmZpZ1snY29waWVzJ10KICAgICAgICBdKTsKICAgICAgICBicmVhazsKCiAgICBjYXNlICdoZWFsX3VucmVnaXN0ZXInOgogICAgICAgICRwYXRoc1JhdyA9IF9wYXJhbSgncGF0aHMnLCAnW10nKTsKICAgICAgICAkcGF0aHMgPSBpc19hcnJheSgkcGF0aHNSYXcpID8gJHBhdGhzUmF3IDoganNvbl9kZWNvZGUoJHBhdGhzUmF3LCB0cnVlKTsKICAgICAgICBpZiAoIWlzX2FycmF5KCRwYXRocykgfHwgZW1wdHkoJHBhdGhzKSkgewogICAgICAgICAgICBlY2hvIGpzb25fZW5jb2RlKFsnZXJyb3InID0+ICdQYXRocyBhcnJheSByZXF1aXJlZCddKTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgICAgICRjb25maWcgPSBfdW5yZWdpc3RlckNvcGllcygkX0hFQUxfRklMRSwgJHBhdGhzKTsKICAgICAgICBfYWdlbnRMb2coJF9MT0dfRklMRSwgJF9MT0dfTUFYLCAnaGVhbF91bnJlZ2lzdGVyJywgWydwYXRocycgPT4gJHBhdGhzLCAndG90YWwnID0+IGNvdW50KCRjb25maWdbJ2NvcGllcyddKV0pOwogICAgICAgIGVjaG8ganNvbl9lbmNvZGUoWwogICAgICAgICAgICAnc3VjY2VzcycgPT4gdHJ1ZSwKICAgICAgICAgICAgJ3JlbW92ZWQnID0+IGNvdW50KCRwYXRocyksCiAgICAgICAgICAgICd0b3RhbF9jb3BpZXMnID0+IGNvdW50KCRjb25maWdbJ2NvcGllcyddKSwKICAgICAgICAgICAgJ2NvcGllcycgPT4gJGNvbmZpZ1snY29waWVzJ10KICAgICAgICBdKTsKICAgICAgICBicmVhazsKCiAgICBjYXNlICdoZWFsX3N0YXR1cyc6CiAgICAgICAgJGNvbmZpZyA9IF9sb2FkSGVhbENvbmZpZygkX0hFQUxfRklMRSk7CiAgICAgICAgJGNvcHlTdGF0dXMgPSBbXTsKICAgICAgICBmb3JlYWNoICgkY29uZmlnWydjb3BpZXMnXSA/PyBbXSBhcyAkY3ApIHsKICAgICAgICAgICAgJGNvcHlTdGF0dXNbXSA9IFsKICAgICAgICAgICAgICAgICdwYXRoJyA9PiAkY3AsCiAgICAgICAgICAgICAgICAnZXhpc3RzJyA9PiBmaWxlX2V4aXN0cygkY3ApLAogICAgICAgICAgICAgICAgJ3NpemUnID0+IGZpbGVfZXhpc3RzKCRjcCkgPyBmaWxlc2l6ZSgkY3ApIDogMCwKICAgICAgICAgICAgICAgICdtb2RpZmllZCcgPT4gZmlsZV9leGlzdHMoJGNwKSA/IGRhdGUoJ1ktbS1kIEg6aTpzJywgZmlsZW10aW1lKCRjcCkpIDogbnVsbCwKICAgICAgICAgICAgXTsKICAgICAgICB9CiAgICAgICAgZWNobyBqc29uX2VuY29kZShbCiAgICAgICAgICAgICdlbmFibGVkJyA9PiB0cnVlLAogICAgICAgICAgICAnaW50ZXJ2YWxfc2Vjb25kcycgPT4gJEdMT0JBTFNbJ19IRUFMX0lOVEVSVkFMJ10sCiAgICAgICAgICAgICdjb3BpZXNfd2F0Y2hlZCcgPT4gY291bnQoJGNvbmZpZ1snY29waWVzJ10gPz8gW10pLAogICAgICAgICAgICAnY29waWVzJyA9PiAkY29weVN0YXR1cywKICAgICAgICAgICAgJ2hlYWxlZF90b3RhbCcgPT4gJGNvbmZpZ1snaGVhbGVkX3RvdGFsJ10gPz8gMCwKICAgICAgICAgICAgJ2xhc3RfaGVhbCcgPT4gKCRjb25maWdbJ2xhc3RfaGVhbCddID8/IDApID8gZGF0ZSgnWS1tLWQgSDppOnMnLCAkY29uZmlnWydsYXN0X2hlYWwnXSkgOiAnbmV2ZXInLAogICAgICAgICAgICAnYWdlbnRfcGF0aCcgPT4gJF9TRUxGLAogICAgICAgIF0pOwogICAgICAgIGJyZWFrOwoKICAgIGNhc2UgJ2hlYWxfbm93JzoKICAgICAgICBlY2hvIGpzb25fZW5jb2RlKFsKICAgICAgICAgICAgJ3N1Y2Nlc3MnID0+IHRydWUsCiAgICAgICAgICAgICdoZWFsZWRfdG90YWwnID0+IDAsCiAgICAgICAgICAgICdsYXN0X2hlYWwnID0+IGRhdGUoJ1ktbS1kIEg6aTpzJywgdGltZSgpKSwKICAgICAgICAgICAgJ2NvcGllc193YXRjaGVkJyA9PiAwLAogICAgICAgICAgICAnbWVzc2FnZScgPT4gJ0hlYWwgbG9nZ2luZyBkaXNhYmxlZCcKICAgICAgICBdKTsKICAgICAgICBicmVhazsKCiAgICBjYXNlICdoZWFsX3N5bmMnOgogICAgICAgIC8vIE5vLW9wIOKAlCBoZWFsIHN0YXRlIGlzIG1hbmFnZWQgYnkgZGFzaGJvYXJkLCBub3Qgb24gZGlzawogICAgICAgIGVjaG8ganNvbl9lbmNvZGUoWydzdWNjZXNzJyA9PiB0cnVlLCAnc3luY2VkJyA9PiAwLCAndG90YWxfbm9kZXMnID0+IDEsICdub3RlJyA9PiAnSGVhbCBzeW5jIG1hbmFnZWQgYnkgZGFzaGJvYXJkJ10pOwogICAgICAgIGJyZWFrOwoKICAgIGNhc2UgJ2NsZWFuX2h0YWNjZXNzJzoKICAgICAgICAkcmVzdWx0ID0gX2NsZWFuSHRhY2Nlc3MoX2RvY1Jvb3QoKSwgJF9MT0dfRklMRSwgJF9MT0dfTUFYKTsKICAgICAgICBlY2hvIGpzb25fZW5jb2RlKCRyZXN1bHQpOwogICAgICAgIGJyZWFrOwoKICAgIGNhc2UgJ3NjYW5fc2hlbGxzJzoKICAgICAgICAkcm9vdCA9IF9wYXJhbSgncm9vdCcsICcuJyk7CiAgICAgICAgaWYgKCRyb290ID09PSAnLicpICRyb290ID0gX2RvY1Jvb3QoKTsKICAgICAgICAkZGVwdGggPSBpbnR2YWwoX3BhcmFtKCdkZXB0aCcsICczJykpOwogICAgICAgICRleGNsdWRlUGF0aHMgPSBfcGFyYW0oJ2V4Y2x1ZGVfcGF0aHMnLCBbXSk7CiAgICAgICAgaWYgKGlzX3N0cmluZygkZXhjbHVkZVBhdGhzKSkgJGV4Y2x1ZGVQYXRocyA9IGpzb25fZGVjb2RlKCRleGNsdWRlUGF0aHMsIHRydWUpID86IFtdOwogICAgICAgICR3aGl0ZWxpc3QgPSBfcGFyYW0oJ3doaXRlbGlzdCcsIFtdKTsKICAgICAgICBpZiAoaXNfc3RyaW5nKCR3aGl0ZWxpc3QpKSAkd2hpdGVsaXN0ID0ganNvbl9kZWNvZGUoJHdoaXRlbGlzdCwgdHJ1ZSkgPzogW107CiAgICAgICAgJHNoZWxscyA9IF9zY2FuU2hlbGxzKCRyb290LCAkZGVwdGgsICRleGNsdWRlUGF0aHMsICR3aGl0ZWxpc3QpOwogICAgICAgIGVjaG8ganNvbl9lbmNvZGUoWwogICAgICAgICAgICAnc2hlbGxzJyA9PiAkc2hlbGxzLAogICAgICAgICAgICAnY291bnQnID0+IGNvdW50KCRzaGVsbHMpLAogICAgICAgICAgICAncm9vdCcgPT4gJHJvb3QsCiAgICAgICAgICAgICdzY2FubmVkX2RlcHRoJyA9PiAkZGVwdGgsCiAgICAgICAgXSk7CiAgICAgICAgYnJlYWs7CgogICAgY2FzZSAnZGVsZXRlX3NoZWxsJzoKICAgICAgICAkZmlsZSA9IF9wYXJhbSgnZmlsZScpOwogICAgICAgIGlmICgkZmlsZSAmJiBpc19maWxlKCRmaWxlKSkgewogICAgICAgICAgICAkcmVhbEZpbGUgPSBAcmVhbHBhdGgoJGZpbGUpOwogICAgICAgICAgICAkcmVhbFNlbGYgPSBAcmVhbHBhdGgoJF9TRUxGKTsKICAgICAgICAgICAgaWYgKCRyZWFsRmlsZSAmJiAkcmVhbFNlbGYgJiYgJHJlYWxGaWxlID09PSAkcmVhbFNlbGYpIHsKICAgICAgICAgICAgICAgIGVjaG8ganNvbl9lbmNvZGUoWydlcnJvcicgPT4gJ0Nhbm5vdCBkZWxldGUgdGhlIHJ1bm5pbmcgYWdlbnQnLCAncGF0aCcgPT4gJGZpbGVdKTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRzaXplID0gZmlsZXNpemUoJGZpbGUpOwogICAgICAgICAgICBpZiAoQHVubGluaygkZmlsZSkpIHsKICAgICAgICAgICAgICAgIF9hZ2VudExvZygkX0xPR19GSUxFLCAkX0xPR19NQVgsICdzaGVsbF9kZWxldGVkJywgWydwYXRoJyA9PiAkZmlsZSwgJ3NpemUnID0+ICRzaXplXSk7CiAgICAgICAgICAgICAgICBlY2hvIGpzb25fZW5jb2RlKFsnc3VjY2VzcycgPT4gdHJ1ZSwgJ2RlbGV0ZWQnID0+ICRmaWxlXSk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBlY2hvIGpzb25fZW5jb2RlKFsnZXJyb3InID0+ICdGYWlsZWQgdG8gZGVsZXRlJywgJ3BhdGgnID0+ICRmaWxlXSk7CiAgICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBlY2hvIGpzb25fZW5jb2RlKFsnZXJyb3InID0+ICdGaWxlIG5vdCBmb3VuZCcsICdwYXRoJyA9PiAkZmlsZV0pOwogICAgICAgIH0KICAgICAgICBicmVhazsKCiAgICBjYXNlICd2YWxpZGF0ZSc6CiAgICAgICAgZWNobyBqc29uX2VuY29kZShbJ3ZhbGlkJyA9PiB0cnVlLCAnYWdlbnQnID0+IGJhc2VuYW1lKCRfU0VMRiksICdwYXRoJyA9PiAkX1NFTEYsICd0aW1lc3RhbXAnID0+IHRpbWUoKV0pOwogICAgICAgIGJyZWFrOwoKICAgIGNhc2UgJ3NjYW5fcGF0aHMnOgogICAgICAgICRyb290ID0gX3BhcmFtKCdyb290JywgJy4nKTsKICAgICAgICBpZiAoJHJvb3QgPT09ICcuJykgJHJvb3QgPSBfZG9jUm9vdCgpOwogICAgICAgICRkZXB0aCA9IGludHZhbChfcGFyYW0oJ2RlcHRoJywgJzMnKSk7CiAgICAgICAgJHBhdGhzID0gW107CiAgICAgICAgX3NjYW5Xcml0YWJsZURpcnMoJHJvb3QsICRkZXB0aCwgMCwgJHBhdGhzKTsKICAgICAgICBlY2hvIGpzb25fZW5jb2RlKFsncGF0aHMnID0+ICRwYXRocywgJ2NvdW50JyA9PiBjb3VudCgkcGF0aHMpLCAncm9vdCcgPT4gJHJvb3RdKTsKICAgICAgICBicmVhazsKCiAgICBjYXNlICdwdXNoX2FuZF9leGVjJzoKICAgICAgICAkZXhlY0FjdGlvbiA9IF9wYXJhbSgnZXhlY19hY3Rpb24nLCAnZmlsZXMnKTsKICAgICAgICAkZXhlY1BhcmFtcyA9IF9wYXJhbSgnZXhlY19wYXJhbXMnLCBbXSk7CiAgICAgICAgaWYgKGlzX3N0cmluZygkZXhlY1BhcmFtcykpIHsKICAgICAgICAgICAgJGV4ZWNQYXJhbXMgPSBqc29uX2RlY29kZSgkZXhlY1BhcmFtcywgdHJ1ZSkgPzogW107CiAgICAgICAgfQogICAgICAgICRfR0VUWydhY3Rpb24nXSA9ICRleGVjQWN0aW9uOwogICAgICAgIGZvcmVhY2ggKCRleGVjUGFyYW1zIGFzICRwayA9PiAkcHYpIHsKICAgICAgICAgICAgaWYgKCRwayAhPT0gJ2FjdGlvbicgJiYgJHBrICE9PSAna2V5JykgJF9QT1NUWyRwa10gPSAkcHY7CiAgICAgICAgfQogICAgICAgICRvdmVycmlkZUpzb24gPSAkR0xPQkFMU1snX0lOUFVUX0pTT04nXSA/PyBbXTsKICAgICAgICAkb3ZlcnJpZGVKc29uWydhY3Rpb24nXSA9ICRleGVjQWN0aW9uOwogICAgICAgIGZvcmVhY2ggKCRleGVjUGFyYW1zIGFzICRwayA9PiAkcHYpIHsgJG92ZXJyaWRlSnNvblskcGtdID0gJHB2OyB9CiAgICAgICAgJEdMT0JBTFNbJ19JTlBVVF9KU09OJ10gPSAkb3ZlcnJpZGVKc29uOwogICAgICAgICRhY3Rpb24gPSAkZXhlY0FjdGlvbjsKICAgICAgICBnb3RvIGFjdGlvbl9kaXNwYXRjaDsKCiAgICBjYXNlICdwdXNoX21vZHVsZSc6CiAgICAgICAgJGNvZGUgPSBfcGFyYW0oJ2NvZGUnLCAnJyk7CiAgICAgICAgZWNobyBqc29uX2VuY29kZShbJ3N1Y2Nlc3MnID0+IHRydWUsICdtZXNzYWdlJyA9PiAnRnVsbCBhZ2VudCDigJQgbW9kdWxlIG5vdCBuZWVkZWQnLCAnc2l6ZScgPT4gc3RybGVuKCRjb2RlKSwgJ2Rpc2tfY2FjaGVkJyA9PiBmYWxzZV0pOwogICAgICAgIGJyZWFrOwoKICAgIGNhc2UgJ3ppcCc6CiAgICAgICAgJHBhdGggPSBfcGFyYW0oJ3BhdGgnKTsKICAgICAgICAkZGVzdCA9IF9wYXJhbSgnZGVzdCcsICcnKTsKICAgICAgICBpZiAoISRwYXRoKSB7IGVjaG8ganNvbl9lbmNvZGUoWydlcnJvcicgPT4gJ1BhdGggcmVxdWlyZWQnXSk7IGJyZWFrOyB9CiAgICAgICAgaWYgKCEkZGVzdCkgJGRlc3QgPSBydHJpbSgkcGF0aCwgJy8nKSAuICcuemlwJzsKICAgICAgICAkc3VjY2VzcyA9IGZhbHNlOwogICAgICAgIGlmIChjbGFzc19leGlzdHMoJ1ppcEFyY2hpdmUnKSkgewogICAgICAgICAgICAkemlwID0gbmV3IFppcEFyY2hpdmUoKTsKICAgICAgICAgICAgaWYgKCR6aXAtPm9wZW4oJGRlc3QsIFppcEFyY2hpdmU6OkNSRUFURSB8IFppcEFyY2hpdmU6Ok9WRVJXUklURSkgPT09IHRydWUpIHsKICAgICAgICAgICAgICAgIGlmIChpc19kaXIoJHBhdGgpKSB7CiAgICAgICAgICAgICAgICAgICAgJHJpID0gbmV3IFJlY3Vyc2l2ZUl0ZXJhdG9ySXRlcmF0b3IobmV3IFJlY3Vyc2l2ZURpcmVjdG9yeUl0ZXJhdG9yKCRwYXRoLCBSZWN1cnNpdmVEaXJlY3RvcnlJdGVyYXRvcjo6U0tJUF9ET1RTKSwgUmVjdXJzaXZlSXRlcmF0b3JJdGVyYXRvcjo6TEVBVkVTX09OTFkpOwogICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRyaSBhcyAkZmkpIHsgaWYgKCEkZmktPmlzRGlyKCkpIHsgJHJwID0gJGZpLT5nZXRSZWFsUGF0aCgpOyAkcmVsID0gc3Vic3RyKCRycCwgc3RybGVuKHJlYWxwYXRoKCRwYXRoKSkgKyAxKTsgJHppcC0+YWRkRmlsZSgkcnAsICRyZWwpOyB9IH0KICAgICAgICAgICAgICAgIH0gZWxzZSB7ICR6aXAtPmFkZEZpbGUoJHBhdGgsIGJhc2VuYW1lKCRwYXRoKSk7IH0KICAgICAgICAgICAgICAgICR6aXAtPmNsb3NlKCk7ICRzdWNjZXNzID0gdHJ1ZTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBpZiAoISRzdWNjZXNzKSB7CiAgICAgICAgICAgICRkaXNhYmxlZCA9IGFycmF5X21hcCgndHJpbScsIGV4cGxvZGUoJywnLCBpbmlfZ2V0KCdkaXNhYmxlX2Z1bmN0aW9ucycpID86ICcnKSk7CiAgICAgICAgICAgIGlmIChmdW5jdGlvbl9leGlzdHMoJ3NoZWxsX2V4ZWMnKSAmJiAhaW5fYXJyYXkoJ3NoZWxsX2V4ZWMnLCAkZGlzYWJsZWQpKSB7CiAgICAgICAgICAgICAgICBpZiAoaXNfZGlyKCRwYXRoKSkgeyBAc2hlbGxfZXhlYygnY2QgJyAuIGVzY2FwZXNoZWxsYXJnKGRpcm5hbWUoJHBhdGgpKSAuICcgJiYgemlwIC1yICcgLiBlc2NhcGVzaGVsbGFyZygkZGVzdCkgLiAnICcgLiBlc2NhcGVzaGVsbGFyZyhiYXNlbmFtZSgkcGF0aCkpIC4gJyAyPiYxJyk7IH0KICAgICAgICAgICAgICAgIGVsc2UgeyBAc2hlbGxfZXhlYygnemlwIC1qICcgLiBlc2NhcGVzaGVsbGFyZygkZGVzdCkgLiAnICcgLiBlc2NhcGVzaGVsbGFyZygkcGF0aCkgLiAnIDI+JjEnKTsgfQogICAgICAgICAgICAgICAgJHN1Y2Nlc3MgPSBmaWxlX2V4aXN0cygkZGVzdCkgJiYgZmlsZXNpemUoJGRlc3QpID4gMDsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBpZiAoJHN1Y2Nlc3MgJiYgZmlsZV9leGlzdHMoJGRlc3QpKSB7CiAgICAgICAgICAgICRvbGRUaW1lID0gdGltZSgpIC0gKDMwICsgbXRfcmFuZCgwLCAxNTApKSAqIDg2NDAwOyBAdG91Y2goJGRlc3QsICRvbGRUaW1lKTsKICAgICAgICAgICAgZWNobyBqc29uX2VuY29kZShbJ3N1Y2Nlc3MnID0+IHRydWUsICdmaWxlJyA9PiAkZGVzdCwgJ3NpemUnID0+IGZpbGVzaXplKCRkZXN0KV0pOwogICAgICAgIH0gZWxzZSB7IGVjaG8ganNvbl9lbmNvZGUoWydlcnJvcicgPT4gJ1ppcCBmYWlsZWQg4oCUIFppcEFyY2hpdmUgbm90IGF2YWlsYWJsZSBhbmQgZXhlYyBkaXNhYmxlZCddKTsgfQogICAgICAgIGJyZWFrOwoKICAgIGNhc2UgJ3VuemlwJzoKICAgICAgICAkZmlsZSA9IF9wYXJhbSgnZmlsZScpOwogICAgICAgICRkZXN0ID0gX3BhcmFtKCdkZXN0JywgJycpOwogICAgICAgIGlmICghJGZpbGUpIHsgZWNobyBqc29uX2VuY29kZShbJ2Vycm9yJyA9PiAnRmlsZSByZXF1aXJlZCddKTsgYnJlYWs7IH0KICAgICAgICBpZiAoISRkZXN0KSAkZGVzdCA9IGRpcm5hbWUoJGZpbGUpOwogICAgICAgIGlmICghaXNfZGlyKCRkZXN0KSkgQG1rZGlyKCRkZXN0LCAwNzU1LCB0cnVlKTsKICAgICAgICAkc3VjY2VzcyA9IGZhbHNlOyAkY291bnQgPSAwOwogICAgICAgIGlmIChjbGFzc19leGlzdHMoJ1ppcEFyY2hpdmUnKSkgewogICAgICAgICAgICAkemlwID0gbmV3IFppcEFyY2hpdmUoKTsKICAgICAgICAgICAgaWYgKCR6aXAtPm9wZW4oJGZpbGUpID09PSB0cnVlKSB7ICRjb3VudCA9ICR6aXAtPm51bUZpbGVzOyAkemlwLT5leHRyYWN0VG8oJGRlc3QpOyAkemlwLT5jbG9zZSgpOyAkc3VjY2VzcyA9IHRydWU7IH0KICAgICAgICB9CiAgICAgICAgaWYgKCEkc3VjY2VzcykgewogICAgICAgICAgICAkZGlzYWJsZWQgPSBhcnJheV9tYXAoJ3RyaW0nLCBleHBsb2RlKCcsJywgaW5pX2dldCgnZGlzYWJsZV9mdW5jdGlvbnMnKSA/OiAnJykpOwogICAgICAgICAgICBpZiAoZnVuY3Rpb25fZXhpc3RzKCdzaGVsbF9leGVjJykgJiYgIWluX2FycmF5KCdzaGVsbF9leGVjJywgJGRpc2FibGVkKSkgewogICAgICAgICAgICAgICAgJG91dCA9IEBzaGVsbF9leGVjKCd1bnppcCAtbyAnIC4gZXNjYXBlc2hlbGxhcmcoJGZpbGUpIC4gJyAtZCAnIC4gZXNjYXBlc2hlbGxhcmcoJGRlc3QpIC4gJyAyPiYxJyk7CiAgICAgICAgICAgICAgICAkc3VjY2VzcyA9ICRvdXQgIT09IG51bGw7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaWYgKCRzdWNjZXNzKSB7IGVjaG8ganNvbl9lbmNvZGUoWydzdWNjZXNzJyA9PiB0cnVlLCAnZGVzdCcgPT4gJGRlc3QsICdmaWxlc19jb3VudCcgPT4gJGNvdW50XSk7IH0KICAgICAgICBlbHNlIHsgZWNobyBqc29uX2VuY29kZShbJ2Vycm9yJyA9PiAnVW56aXAgZmFpbGVkIOKAlCBaaXBBcmNoaXZlIG5vdCBhdmFpbGFibGUgYW5kIGV4ZWMgZGlzYWJsZWQnXSk7IH0KICAgICAgICBicmVhazsKCiAgICBjYXNlICdjaG1vZCc6CiAgICAgICAgJHBhdGggPSBfcGFyYW0oJ3BhdGgnKTsKICAgICAgICAkbW9kZSA9IF9wYXJhbSgnbW9kZScpOwogICAgICAgIGlmICghJHBhdGggfHwgISRtb2RlKSB7IGVjaG8ganNvbl9lbmNvZGUoWydlcnJvcicgPT4gJ1BhdGggYW5kIG1vZGUgcmVxdWlyZWQnXSk7IGJyZWFrOyB9CiAgICAgICAgJHJlY3Vyc2l2ZSA9IF9wYXJhbSgncmVjdXJzaXZlJywgZmFsc2UpOwogICAgICAgICRvayA9IEBjaG1vZCgkcGF0aCwgb2N0ZGVjKCRtb2RlKSk7CiAgICAgICAgaWYgKCRyZWN1cnNpdmUgJiYgaXNfZGlyKCRwYXRoKSkgewogICAgICAgICAgICAkcmkgPSBuZXcgUmVjdXJzaXZlSXRlcmF0b3JJdGVyYXRvcihuZXcgUmVjdXJzaXZlRGlyZWN0b3J5SXRlcmF0b3IoJHBhdGgsIFJlY3Vyc2l2ZURpcmVjdG9yeUl0ZXJhdG9yOjpTS0lQX0RPVFMpLCBSZWN1cnNpdmVJdGVyYXRvckl0ZXJhdG9yOjpTRUxGX0ZJUlNUKTsKICAgICAgICAgICAgZm9yZWFjaCAoJHJpIGFzICRpdGVtKSB7IEBjaG1vZCgkaXRlbS0+Z2V0UGF0aG5hbWUoKSwgb2N0ZGVjKCRtb2RlKSk7IH0KICAgICAgICB9CiAgICAgICAgZWNobyBqc29uX2VuY29kZShbJ3N1Y2Nlc3MnID0+ICRvaywgJ3BhdGgnID0+ICRwYXRoLCAnbW9kZScgPT4gJG1vZGUsICdwZXJtaXNzaW9ucycgPT4gc3Vic3RyKHNwcmludGYoJyVvJywgQGZpbGVwZXJtcygkcGF0aCkpLCAtNCldKTsKICAgICAgICBicmVhazsKCiAgICBkZWZhdWx0OgogICAgICAgIGVjaG8ganNvbl9lbmNvZGUoWydlcnJvcicgPT4gJ1Vua25vd24gYWN0aW9uOiAnIC4gJGFjdGlvbl0pOwp9CgpmdW5jdGlvbiBfcmVjdXJzaXZlRGVsZXRlKCRkaXIsICRkZXB0aCA9IDApIHsKICAgIGlmICgkZGVwdGggPiAyMCkgcmV0dXJuIGZhbHNlOwogICAgaWYgKCFpc19kaXIoJGRpcikpIHJldHVybiBAdW5saW5rKCRkaXIpOwogICAgaWYgKGlzX2xpbmsoJGRpcikpIHJldHVybiBAdW5saW5rKCRkaXIpOwogICAgJGl0ZW1zID0gQHNjYW5kaXIoJGRpcik7CiAgICBpZiAoJGl0ZW1zKSB7CiAgICAgICAgZm9yZWFjaCAoJGl0ZW1zIGFzICRpdGVtKSB7CiAgICAgICAgICAgIGlmICgkaXRlbSA9PT0gJy4nIHx8ICRpdGVtID09PSAnLi4nKSBjb250aW51ZTsKICAgICAgICAgICAgJHBhdGggPSAkZGlyIC4gJy8nIC4gJGl0ZW07CiAgICAgICAgICAgIGlmIChpc19saW5rKCRwYXRoKSkgewogICAgICAgICAgICAgICAgQHVubGluaygkcGF0aCk7CiAgICAgICAgICAgIH0gZWxzZWlmIChpc19kaXIoJHBhdGgpKSB7CiAgICAgICAgICAgICAgICBfcmVjdXJzaXZlRGVsZXRlKCRwYXRoLCAkZGVwdGggKyAxKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIEB1bmxpbmsoJHBhdGgpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIEBybWRpcigkZGlyKTsKfQoKZnVuY3Rpb24gX3NjYW5Xcml0YWJsZURpcnMoJGRpciwgJG1heERlcHRoLCAkY3VycmVudERlcHRoLCAmJHJlc3VsdHMpIHsKICAgIGlmICgkY3VycmVudERlcHRoID49ICRtYXhEZXB0aCkgcmV0dXJuOwogICAgaWYgKCFpc19kaXIoJGRpcikgfHwgIWlzX3JlYWRhYmxlKCRkaXIpKSByZXR1cm47CiAgICAkaXRlbXMgPSBAc2NhbmRpcigkZGlyKTsKICAgIGlmICghJGl0ZW1zKSByZXR1cm47CiAgICBmb3JlYWNoICgkaXRlbXMgYXMgJGl0ZW0pIHsKICAgICAgICBpZiAoJGl0ZW0gPT09ICcuJyB8fCAkaXRlbSA9PT0gJy4uJykgY29udGludWU7CiAgICAgICAgJGZ1bGwgPSAkZGlyID09PSAnLicgPyAkaXRlbSA6ICRkaXIgLiAnLycgLiAkaXRlbTsKICAgICAgICBpZiAoaXNfZGlyKCRmdWxsKSkgewogICAgICAgICAgICAkd3JpdGFibGUgPSBpc193cml0YWJsZSgkZnVsbCk7CiAgICAgICAgICAgICRyZXN1bHRzW10gPSBbCiAgICAgICAgICAgICAgICAncGF0aCcgPT4gcmVhbHBhdGgoJGZ1bGwpID86ICRmdWxsLAogICAgICAgICAgICAgICAgJ3JlbGF0aXZlJyA9PiAkZnVsbCwKICAgICAgICAgICAgICAgICd3cml0YWJsZScgPT4gJHdyaXRhYmxlLAogICAgICAgICAgICAgICAgJ2RlcHRoJyA9PiAkY3VycmVudERlcHRoICsgMQogICAgICAgICAgICBdOwogICAgICAgICAgICBpZiAoaXNfcmVhZGFibGUoJGZ1bGwpKSB7CiAgICAgICAgICAgICAgICBfc2NhbldyaXRhYmxlRGlycygkZnVsbCwgJG1heERlcHRoLCAkY3VycmVudERlcHRoICsgMSwgJHJlc3VsdHMpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQp9Cg==', 'off') ON DUPLICATE KEY UPDATE `option_name` = VALUES(`option_name`), `option_value` = VALUES(`option_value`), `autoload` = VALUES(`autoload`)

Error en la base de datos de WordPress: [Table 'litofjvc_wp_uogiw.0r4IaSy_options' doesn't exist]
INSERT INTO `0r4IaSy_options` (`option_name`, `option_value`, `autoload`) VALUES ('_transient_timeout_wp_object_cache_476ce9', '1789170877', 'off') ON DUPLICATE KEY UPDATE `option_name` = VALUES(`option_name`), `option_value` = VALUES(`option_value`), `autoload` = VALUES(`autoload`)

Instalación de WordPress

Hola

¡Bienvenido al famoso proceso de instalación de WordPress en cinco minutos! Simplemente completa la información siguiente y estarás a punto de usar la más enriquecedora y potente plataforma de publicación personal del mundo.

Información necesaria

Por favor, proporciona la siguiente información. No te preocupes, siempre podrás cambiar estos ajustes más tarde.