<?php

################################################################################
# PHP Suchscript - Version 2.5.65                                              #
# copyright webdesign weisshart                                                #
# http://webdesign.weisshart.de                                                #
# dieser copyright Hinweis darf nicht entfernt werden!                         #
#                                                                              #
# Sie koennen dieses Script kostenlos einsetzen,                               #
# solange Sie die Links auf webdesign.weisshart.de unveraendert intakt lassen. #
# Wenn Sie die Links auf webdesign.weisshart.de entfernen wollen,              #
# koennen Sie eine Lizenz erwerben bei                                         #
# http://webdesign.weisshart.de/suchen-lizenz.php                              #
################################################################################

include("search_config.php");

$NCiR0aW1lX29sZCA9IDA7IC8vIGb8ciBkaWUgRm9ydHNjaHJpdHRzYW56ZWlnZQNCiR0aW1lX29sZCA9IDA7IC8vIGb8ciBkaWUgRm9ydHNjaHJpdHRzYW56ZWlnZQ="Ly8gTmV0dCwgZGFzcyBTaWUgc2ljaCBmdWVyIG1laW5lbiBzb3VyY2Vjb2RlIGludGVyZXNzaWVyZW4uIERlciBMaW5rIGF1ZiB3ZWJkZXNpZ24ud2Vpc3NoYXJ0LmRlIGRhcmYgbnVyIG5hY2ggRXJ3ZXJiIGVpbmVyIExpemVueiBlbnRmZXJudCB3ZXJkZW4hDS8vIEBpbmlfc2V0KCdkaXNwbGF5X2Vycm9ycycsICcxJyk7DQ0NDXNldGxvY2FsZSAoTENfQ1RZUEUsICdkZV9ERScpOyAvLyBzdHJ0b2xvd2VyIGF1Y2ggbWl0IFVtbGF1dGVuIC0gYWJlciBhbnNjaGVpbmVuZCBuaWNodCB1bnRlciBQSFAgNS40DQ0NaWYgKCFAaW5pX2dldCgnc2FmZV9tb2RlJykpIEBzZXRfdGltZV9saW1pdCg0NSk7DSRtdGltZSA9IG1pY3JvdGltZSgpOyAkbXRpbWUgPSBleHBsb2RlKCAnICcsICRtdGltZSk7ICRtdGltZSA9ICRtdGltZVsxXSArICRtdGltZVswXTsNJHN1Y2hfc3RhcnQgPSAkbXRpbWU7DQ0kdmVyc2lvbj0gJzwhLS0gVmVyc2lvbiAyLjUuNjUgLS0+JzsNDQ1pZiAocGhwdmVyc2lvbigpIDwgJzQuMy4wJykgew0JZWNobyAiPHA+RGllc2VzIFNjcmlwdCBlcmZvcmRlcnQgUEhQIFZlcnNpb24gNC4zLjAgb2RlciBoJm91bWw7aGVyITxiciAvPiI7DQllY2hvICJhdWYgSWhyZW0gU2VydmVyIGwmYXVtbDt1ZnQgYWJlciBQSFAgVmVyc2lvbiAiLnBocHZlcnNpb24oKS4iLjwvcD4iOw0JZXhpdDsNfQ0NJG1ldGhvZCA9ICRfU0VSVkVSWydSRVFVRVNUX01FVEhPRCddOw0NJGFycmF5ID0gIiI7DSRhdXNnYWJlID0iIjsNJGZvdW5kID0gMDsNJGUgPSAiIjsNJHNvcnRoaW53ZWlzID0gIiI7DSRsaW5rID0gIiI7DSRkdXJjaHN1Y2h0ID0gMDsNJGJlcmVpdHNfZm91bmQgPSBhcnJheSgpOyANDQ1pZiAoIWlzc2V0KCRwbHVyYWwpKXsNCSRwbHVyYWwgPSAibiI7DX0NDS8vaWYgKCFpc3NldCgkcHVuY3QpKXskcHVuY3QgPSAibm8iO30NDWlmICghaXNzZXQoJG1heG1zZykpew0JJG1heG1zZyA9IDEwMDsNfQ0NaWYgKCFpc3NldCgkZGF0ZWZvcm0pKXsNCSRkYXRlZm9ybSA9ICJkZSI7DX0NDWlmICghaXNzZXQoJHN1Y2hkYXVlcikpew0JJHN1Y2hkYXVlciA9ICJTZWt1bmRlbiI7DX0NDWlmICghaXNzZXQoJGJlc2NocmVpYikpew0JJGJlc2NocmVpYiA9ICJCZXNjaHJlaWJ1bmc6ICI7DX0NDWlmICghaXNzZXQoJHRyZWZmKSl7DQkkdHJlZmYgPSAiVHJlZmZlciI7DX0NDWlmICghaXNzZXQoJGZpbGVkYXRlKSl7DQkkZmlsZWRhdGUgPSAienVsZXR6dCBnZSZhdW1sO25kZXJ0IGFtICI7DX0NDWlmICghaXNzZXQoJG5vcmVzdWx0KSl7DQkkbm9yZXN1bHQgPSAiPHA+PGJyIC8+RXMgd3VyZGVuIGxlaWRlciBrZWluZSBleGFrdGVuICZVdW1sO2JlcmVpbnN0aW1tdW5nZW4gbWl0IGRlbSBlaW5nZWdlYmVuZW4gU3VjaGJlZ3JpZmYgZ2VmdW5kZW4uPGJyIC8+VmllbGxlaWNodCB3b2xsZW4gU2llIGVzIG1pdCBlaW5lbSBhbGxnZW1laW5lcmVuIFN1Y2hiZWdyaWZmIHZlcnN1Y2hlbi48L3A+IjsNfQ0NaWYgKCFpc3NldCgkdm9yc2NobGFnKSl7DQkkdm9yc2NobGFnID0gIk9kZXIgU2llIHZlcnN1Y2hlbiBlcyBlaW5mYWNoIG1hbCBtaXQiOw19DQ1pZiAoIWlzc2V0KCRtaW5sZW5ndGgpKXsNCSRtaW5sZW5ndGggPSAiPHA+PGJyIC8+R2ViZW4gU2llIGJpdHRlIGVpbmVuIFN1Y2hiZWdyaWZmIHZvbiBtaW5kZXN0ZW5zJm5ic3A7Ii4kbGVuZ3RoLiImbmJzcDtCdWNoc3RhYmVuIEwmYXVtbDtuZ2UgZWluLjwvcD4iOw19DQ0NDWlmICghaXNzZXQoJGlmcmFtZSkpew0gICAkaWZyYW1lPWZhbHNlOw19DQ1pZiAoIWlzc2V0KCR0YXJnZXR3YWhsKSl7DSAgICR0YXJnZXR3YWhsPWZhbHNlOw19DQ1pZiAoIWlzc2V0KCRleGNsdWRlX3N0cmluZ3MpKXsNICAgJGV4Y2x1ZGVfc3RyaW5ncyA9IGFycmF5KCk7DX0NDWlmICghaXNzZXQoJGluc3RhbGxhdGlvbl9wYXRoKSkgew0JJGluc3RhbGxhdGlvbl9wYXRoID0gIndkd19zdWNoZSI7DX0NDWlmICghaXNzZXQoJGVuY29kaW5nKSkgew0JJGVuY29kaW5nID0gIklTTyI7DX0NDWlmICghaXNzZXQoJHRodW1iX3JlcGxhY2UpKSB7DQkkdGh1bWJfcmVwbGFjZSA9ICJfc3MuanBnIjsNfQ0NJGxpc3RfaHhfc3RhcnQgPSAkbGlzdF9oeF9lbmQgPSAiIjsNaWYgKGlzc2V0KCRsaXN0X2h4KSAmJiBpc19udW1lcmljKCRsaXN0X2h4KSkgew0JJGxpc3RfaHhfc3RhcnQgPSAnPGgnLiRsaXN0X2h4Lic+JzsNCSRsaXN0X2h4X2VuZCAgID0gJzwvaCcuJGxpc3RfaHguJz4gJzsNfQ0NaWYgKCFpc3NldCgkaHhfc3VjaHRpcCkgfHwgIWlzX251bWVyaWMoJGh4X3N1Y2h0aXAgKSkgew0JJGh4X3N1Y2h0aXAgPSAzOw19DQ0NDS8vIHZlcmJvdGVuZSBaZWljaGVuDSRleGNsdWRlX3N0cmluZ3MyID0gYXJyYXkoDSAgICdcXCcsIC8vIGRhcyBcIGRpZW50IHp1bSBNYXNraWVyZW4gdm9uIHJlc2VydmllcnRlbiBaZWljaGVuIA0JIiciLA0gICAnKicsDQknfCcsDSAgICcrJw0pOw0NJGV4Y2x1ZGVfc3RyaW5nc19tZXJnZSA9IGFycmF5X21lcmdlKCRleGNsdWRlX3N0cmluZ3MsICRleGNsdWRlX3N0cmluZ3MyKTsNDQ1pZiAoaXNzZXQoJHN1Y2h0aXAwKSl7DQkkc2VhcmNodGlwMCA9ICJcbjxoJGh4X3N1Y2h0aXAgaWQ9J3N1Y2h0aXBoZWFkZXInPiRzdWNodGlwMCA8L2gkaHhfc3VjaHRpcD5cbiI7DQl9IGVsc2Ugew0JJHNlYXJjaHRpcDAgPSAiXG48aCRoeF9zdWNodGlwIGlkPSdzdWNodGlwaGVhZGVyJz5TdWNodGlwcHM6IDwvaCRoeF9zdWNodGlwPlxuIjsNfQ0NaWYgKGlzc2V0KCRzdWNodGlwMSkpew0JJHNlYXJjaHRpcDEgPSAiPGxpPiRzdWNodGlwMTwvbGk+XG4iOw0JfSBlbHNlIHsNCSRzZWFyY2h0aXAxID0gIjxsaT5EaWUgU3VjaGUgZmluZGV0IGFsbGUgU2VpdGVuLCBkaWUgSWhyZW4gU3VjaGJlZ3JpZmYgZW50aGFsdGVuIC0gYXVjaCBhbHMgV29ydGJlc3RhbmR0ZWlsLiBFaW5lIFN1Y2hlIG5hY2ggJnJhcXVvO3Rlc3QmbGFxdW87IGZpbmRldCBhbHNvIGF1Y2ggJnJhcXVvO3NwJmF1bWw7PGVtPnRlc3Q8L2VtPmUmbGFxdW87LjwvbGk+IjsNCQ19DQ1pZiAoaXNzZXQoJHN1Y2h0aXAyKSl7DQkkc2VhcmNodGlwMiA9ICI8bGk+JHN1Y2h0aXAyPC9saT5cbiI7DQl9IGVsc2Ugew0JJHNlYXJjaHRpcDIgPSAiPGxpPldlbm4gU2llIElocmUgU3VjaGUgYXVmIGdhbnplIFcmb3VtbDtydGVyIGVpbnNjaHImYXVtbDtua2VuIHdvbGxlbiwgZiZ1dW1sO2dlbiBTaWUgdm9yIHVuZCBoaW50ZXIgZGVtIFdvcnQgZWluIExlZXJ6ZWljaGVuIGVpbiwgdW5kIHVtc2NobGllJnN6bGlnO2VuIGFsbGVzIG1pdCBBbmYmdXVtbDtocnVuZ3N6ZWljaGVuLiBCZWlzcGllbDogXCIgdGVzdCBcIi4gJnJhcXVvO3NwJmF1bWw7PGVtPnRlc3Q8L2VtPmUmbGFxdW87IHdpcmQgZGFubiBuaWNodCBtZWhyIGdlZnVuZGVuLiA8L2xpPiI7DX0NDSRzZWFyY2h0aXAyID0gIiI7DQ1pZiAoaXNzZXQoJHN1Y2h0aXAzKSl7DQkkc2VhcmNodGlwMyA9ICI8bGk+JHN1Y2h0aXAzPC9saT5cbiI7DQl9IGVsc2Ugew0JCSRzZWFyY2h0aXAzID0gIjxsaT5XZW5uIFNpZSBtZWhyZXJlIFcmb3VtbDtydGVyIGVpbmdlYmVuLCB3ZXJkZW4gYWxsZSBEb2t1bWVudGUgZ2VmdW5kZW4sIGRpZSA8ZW0+YWxsZTwvZW0+IGVpbmdlZ2ViZW5lbiBXJm91bWw7cnRlciBlbnRoYWx0ZW4sIGVnYWwgaW4gd2VsY2hlciBSZWloZW5mb2xnZSAoQU5ELVZlcmtuJnV1bWw7cGZ1bmcpLg0JCTxiciAvPjxlbT5KZSBtZWhyIFcmb3VtbDtydGVyLCBkZXN0byB3ZW5pZ2VyIFRyZWZmZXIuPC9lbT48L2xpPiI7DX0NCQkNaWYgKGlzc2V0KCRzdWNodGlwMzEpKXsNCSRzZWFyY2h0aXAzMSA9ICI8bGk+JHN1Y2h0aXAzMTwvbGk+XG4iOw0JfSBlbHNlIHsNCSRzZWFyY2h0aXAzMSA9CSI8bGk+V2VubiBTaWUgbWVocmVyZSBXJm91bWw7cnRlciBcIm1pdCBBbmYmdXVtbDtocnVuZ3N6ZWljaGVuIHVtc2NobGllJnN6bGlnO2VuXCIsIHdlcmRlbiBhbGxlIERva3VtZW50ZSBnZWZ1bmRlbiwgZGllIGFsbGUgZWluZ2VnZWJlbmVuIFcmb3VtbDtydGVyIGV4YWt0IGluIGRlciBlaW5nZWdlYmVuZW4gV2Vpc2UgZW50aGFsdGVuLjwvbGk+IjsNfQ0NaWYgKGlzc2V0KCRzdWNodGlwM29yKSl7DQkkc2VhcmNodGlwM29yID0gIjxsaT4kc3VjaHRpcDNvcjwvbGk+XG4iOw0JfSBlbHNlIHsNCSRzZWFyY2h0aXAzb3IgPSAiPGxpPiZyYXF1bztvciZsYXF1bzsgb2RlciAmcmFxdW87b2RlciZsYXF1bzsgKG9obmUgQW5mJnV1bWw7aHJ1bmdzemVpY2hlbikgendpc2NoZW4gbWVocmVyZW4gU3VjaGJlZ3JpZmZlbiBmaW5kZXQgYWxsZSBEb2t1bWVudGUsIGRpZSBtaW5kZXN0ZW5zIGVpbmVuIFN1Y2hiZWdyaWZmIGVudGhhbHRlbiAoT1ItVmVya24mdXVtbDtwZnVuZykuDQkJPGJyIC8+PGVtPkplIG1laHIgVyZvdW1sO3J0ZXIsIGRlc3RvIG1laHIgVHJlZmZlci48L2VtPjwvbGk+IjsNCQ19DQ0NaWYgKCFpc3NldCgkd2VpdGVydHh0KSl7DQkkd2VpdGVydHh0ID0gIndlaXRlcmUgVHJlZmZlciB6ZWlnZW4iOw19DQ0NaWYgKCFpc3NldCgkc2VhcmNoKSkgeyRzZWFyY2ggPSAkdmFsdWU7fQ0NaWYgKCFpc3NldCgkc2hvd19leHQpKSB7JHNob3dfZXh0ID0gdHJ1ZTt9DQ1pZiAoIWlzc2V0KCRwcm90KSkgeyRwcm90ID0gImh0dHA6Ly8iO30NDQ0NDQ0NJHNlYXJjaHRpcDQgPSAiIjsNaWYgKCRqdW1wID09IHRydWUgJiYgJHRhcmdldCA9PSAiIikgew0NCWlmIChpc3NldCgkc3VjaHRpcDQpKXsNCQkkc2VhcmNodGlwNCA9ICI8bGk+JHN1Y2h0aXA0PC9saT5cbiI7DQkJfSBlbHNlIHsNCQkkc2VhcmNodGlwNCA9ICI8bGk+RmFsbHMgZGllIFN1Y2hlIG51ciBlaW5lbiBlaW56aWdlbiBUcmVmZmVyIGVyZ2lidCwgd2lyZCBkaWUgVHJlZmZlcnNlaXRlIGRpcmVrdCBhbmdlc3BydW5nZW4uPC9saT5cbiI7DQl9DX0NDSR1bHN0YXJ0ID0gIiRzZWFyY2h0aXAwPGRpdiBpZD0nc3VjaHRpcHBzJyAgY2xhc3M9J2tsYXBwZW4nID5cbjx1bD5cbiI7DSR1bGVuZCA9ICI8L3VsPlxuPC9kaXY+XG4iOw0NaWYgKCR0aXBwcykgeyRzZWFyY2h0aXAgPSAkdWxzdGFydC4kc2VhcmNodGlwMS4kc2VhcmNodGlwMi4kc2VhcmNodGlwMy4kc2VhcmNodGlwMzEuJHNlYXJjaHRpcDNvci4kc2VhcmNodGlwNC4kdWxlbmQ7IH1lbHNlIHskc2VhcmNodGlwID0iIjt9DQ0vLyBiZyBmdWVyIENyZWRpdC1MaW5rOg1pZiAoIWlzc2V0KCRiZykpICRiZyA9ICIjRkZGRkZGIjsNaWYgKHN0cnBvcygkYmcsJyMnKSA9PT0gZmFsc2UpICRiZyA9ICcjJy4kYmc7DQ1pZiAocHJlZ19tYXRjaCgnL14jWzAtOUEtRl17MSw2fSQvaScsICRiZykgJiYgc3RybGVuKCRiZykgPT0gNykgew0NICAgICAgJHJlZEggPSBiYXNlX2NvbnZlcnQoc3Vic3RyKCRiZywgMSwgMiksIDE2LCAxMCk7DSAgICAgICRncmVlbkggPSBiYXNlX2NvbnZlcnQoc3Vic3RyKCRiZywgMywgMiksICAxNiwgMTApOw0gICAgICAkYmx1ZUggPSBiYXNlX2NvbnZlcnQoc3Vic3RyKCRiZywgNSwgMiksICAxNiwgMTApOw0NICAgICAgLy8gaHR0cDovL3d3dy53My5vcmcvVFIvQUVSVCNjb2xvci1jb250cmFzdA0gICAgICAkc3VtID0gJHJlZEgqMjk5ICsgJGdyZWVuSCo1ODcgKyAkYmx1ZUgqMTE0Ow0gICAgICBpZiAoJHN1bSA8IDEyNzAwMCApIHsNICAgICAgICAgICAkY29tcCA9ICIjRkZGRkZGIjsNICAgICAgfSBlbHNlIHsNICAgICAgICAgICAkY29tcCA9IiMwMDAwMDAiOw0gICAgICB9DX0gZWxzZSB7DSAgICAgICRmZWhsZXIgPSAxOw0gICAgICAkYmcgPSAiI0ZGRkZGRiI7DSAgICAgICRjb21wID0gIiMwMDAwMDAiOw19DQ0kd2R3ID0gJzxwIHN0eWxlPSJkaXNwbGF5OmJsb2NrICFpbXBvcnRhbnQ7IGZvbnQtc2l6ZTogMTBweCAhaW1wb3J0YW50OyBjb2xvcjonLiRjb21wLicgIWltcG9ydGFudDsgYmFja2dyb3VuZDonLiRiZy4nICFpbXBvcnRhbnQiPiZuYnNwO3NjcmlwdCZuYnNwOyZjb3B5OyZuYnNwOzIwMTMmbmJzcDtieSZuYnNwOzxhIHN0eWxlPSJjb2xvcjonLiRjb21wLicgIWltcG9ydGFudDsgZGlzcGxheTppbmxpbmUgIWltcG9ydGFudDsgZm9udC1zaXplOiAxMHB4ICFpbXBvcnRhbnQ7IGZvbnQtd2VpZ2h0Om5vcm1hbCAhaW1wb3J0YW50OyB0ZXh0LWRlY29yYXRpb246bm9uZSAhaW1wb3J0YW50IiBocmVmPSJodHRwOi8vd2ViZGVzaWduLndlaXNzaGFydC5kZSI+d2ViZGVzaWduJm5ic3A7d2Vpc3NoYXJ0PC9hPjwvcD4nOw0NDQ1pZiAoaXNzZXQoJHB3ZCkpIHsNCSRzZXJ2ZXIgPSBzdHJfcmVwbGFjZSAoInd3dy4iLCIiLCAkX1NFUlZFUlsnU0VSVkVSX05BTUUnXSApOw0JJHNlcnZlciA9IHN0cl9yZXBsYWNlICgiKyIsIiIsICRzZXJ2ZXIpOw0JJHNlcnZlciA9IHN0cl9yZXBsYWNlICgiLSIsIiIsICRzZXJ2ZXIpOw0JJGRvbSA9IGNyYzMyKCRzZXJ2ZXIpOw0gICAgICAkY2hhdmUgPSAkcHdkIC8gc3ByaW50ZigiJXUiLCAkZG9tKTsNfQ1pZiAoaXNzZXQoJGNoYXZlKSAmJiAkY2hhdmUgPT0gIjMyMSIpew0JJHdkdyA9Jyc7DX0NDQ0vLyBuZXVlcyBGZW5zdGVyDWVjaG8nDTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4NLyogPCFbQ0RBVEFbICovDS8vIGh0dHA6Ly93d3cuZHJ3ZWIuZGUvdHJpY2traXN0ZS90cmlja3MyMTQuc2h0bWwNZnVuY3Rpb24gbGlua29wZW5lcihhKSB7DSAgIHZhciBiPWE/Il9ibGFuayI6Il9zZWxmIjsNICAgdmFyIGM9ZG9jdW1lbnQubGlua3M7DSAgIGZvcih2YXIgaT0wO2k8Yy5sZW5ndGg7aSsrKSB7DSAgIAljW2ldLnRhcmdldD1iOw0gICB9DX0NDWZ1bmN0aW9uIGxpbmtjb29raWUoKSB7DSAgIGlmKGRvY3VtZW50LmNvb2tpZS5pbmRleE9mKCJzdWNob2VmZm5lbiIpICE9PSAtMSl7DSAgICAgIGRvY3VtZW50LmNvb2tpZSA9ICJzdWNoPTA7cGF0aD0vO2V4cGlyZXM9VGh1LCAwMS1KYW4tNzAgMDA6MDA6MDEgR01UIjsNICAgfSBlbHNlIHsNICAgICBkb2N1bWVudC5jb29raWU9InN1Y2g9c3VjaG9lZmZuZW47IHBhdGggPS8iOw0gICB9DX0NDS8vIGh0dHA6Ly9pY2h3aWxsLm5ldC9jaGFwdGVyNC5odG1sDWZ1bmN0aW9uIGFkZEV2ZW50KG9iaiwgZXZUeXBlLCBmbil7DSBpZiAob2JqLmFkZEV2ZW50TGlzdGVuZXIpew0gICBvYmouYWRkRXZlbnRMaXN0ZW5lcihldlR5cGUsIGZuLCBmYWxzZSk7DSAgIHJldHVybiB0cnVlOw0gfSBlbHNlIGlmIChvYmouYXR0YWNoRXZlbnQpew0gICB2YXIgciA9IG9iai5hdHRhY2hFdmVudCgib24iK2V2VHlwZSwgZm4pOw0gICByZXR1cm4gcjsNIH0gZWxzZSB7DSAgIHJldHVybiBmYWxzZTsNIH0NfQ0NLyogXV0+ICovDTwvc2NyaXB0Pg0nOw0NDWlmKGlzc2V0KCRfR0VUWyJxIl0pIHx8IGlzc2V0KCRfUE9TVFsicSJdKSkgew0JaWYgKGlzc2V0KCRfR0VUWyJxIl0pICYmICRfR0VUWyJxIl0gIT0gIiIpICRzZWFyY2ggPSBzdHJpcHNsYXNoZXMoJF9HRVRbInEiXSk7DQlpZiAoaXNzZXQoJF9QT1NUWyJxIl0pICYmICRfUE9TVFsicSJdICE9ICIiKSAkc2VhcmNoID0gc3RyaXBzbGFzaGVzKCRfUE9TVFsicSJdKTsNDQ0JJGdhbnplcmF1c2RydWNrID0gJHNlYXJjaDsNCWlmIChzdHJpc3RyKCRzZWFyY2gsICJDb250ZW50LVR5cGUiKSkkc2VhcmNoID0gIm5vIHNwYW0gaGVyZSEiOw0NDQlpZiAoc3RycG9zKHN0cnRvbG93ZXIoJGVuY29kaW5nKSwidXRmIikhPT0gZmFsc2UpIHsNLy8JCWVjaG8gInV0Zi04OiI7DQkJJHNlYXJjaCA9IGh0bWxzcGVjaWFsY2hhcnMoJHNlYXJjaCwgRU5UX05PUVVPVEVTLCAiVVRGLTgiKTsNCX0gZWxzZSB7DS8vCQllY2hvICJJU086IjsNCQkkc2VhcmNoID0gaHRtbHNwZWNpYWxjaGFycygkc2VhcmNoLCBFTlRfTk9RVU9URVMsICJJU08tODg1OS0xNSIpOw0JfQ0NCWZvcmVhY2goJGV4Y2x1ZGVfc3RyaW5nc19tZXJnZSBhcyAkaykgew0JCSRnZXN1Y2h0ID0gc3RyX3JlcGxhY2UoJGssIiIsJHNlYXJjaCk7DQl9DQkJDQkvLyBnYW56ZSBBdXNkcnVlY2tlIHN1Y2hlbjoNCSRhdXNkcnVjayA9IGZhbHNlOw0JaWYgKHN0cnBvcygkZ2FuemVyYXVzZHJ1Y2ssJyInKSAhPT0gZmFsc2UgfHwgc3RycG9zKCRnYW56ZXJhdXNkcnVjaywiJyIpICE9PSBmYWxzZSApIHsgDQkJJGF1c2RydWNrID0gdHJ1ZTsNCX0gDQkNDQkkc2VhcmNoID0gcHJlZ19yZXBsYWNlKCcvWyBdezIsfS9zbScsICcgJywgJHNlYXJjaCk7DQ0NCWlmIChmaWxlX2V4aXN0cygic2VhcmNoX3JlcGxhY2UucGhwIikpIHtpbmNsdWRlICgic2VhcmNoX3JlcGxhY2UucGhwIik7fQ0NCS8vIHVuZXJ3dWVuc2NodGUgU3RyaW5ncyB2b24gZGVyIFN1Y2hlIGF1c3NjaGxpZXNzZW4NCWZvcmVhY2goJGV4Y2x1ZGVfc3RyaW5nc19tZXJnZSBhcyAkaykgew0JCSRzZWFyY2ggPSBzdHJfcmVwbGFjZSgkaywiIiwkc2VhcmNoKTsNCX0NDQ0JJHNlYXJjaCA9IHRyaW0oJHNlYXJjaCk7DQkkc2VhcmNoID0gc3RyX3JlcGxhY2UgKCAnJmFtcDsnLCAnJicsICRzZWFyY2ggKTsgLy8gbGFlc3N0IGh0bWwgZW50aXRpZXMgd2llICYjMzUxOyB6dSAoei5CLiB0dWVya2lzY2hlIFNvbmRlcnplaWNoZW4pDQkvL2RpZSBnbGVpY2hlIFplaWxlIGF1Y2ggaW4gZGllIHN1Y2hlbi5waHAsIGF1c3NlcmRlbSBaZWlsZSA0OCBoaWVyIHdlZ2tvbW1lbnRpZXJlbi4NDQ0JaWYoZW1wdHkoJHNlYXJjaCkpIHskc2VhcmNoPSIiO30NCSRzZWFyY2hsZW5ndGggPSBzdHJfcmVwbGFjZSgnJnF1b3Q7JywnJywkc2VhcmNoKTsNCWlmKHN0cmxlbigkc2VhcmNobGVuZ3RoKSA+PSAkbGVuZ3RoICYmICRzZWFyY2ggIT0gJHZhbHVlKSB7DQ0JaWYgKCFpc3NldCgkc3VjaGhpbndlaXMpIHx8ICAkc3VjaGhpbndlaXMgPT0gIiIpIHsNCQkkc2VhcmNoaGlud2VpcyA9ICJTaWUgc3VjaGVuIG5hY2giOw0JfSBlbHNlIHsNCQkkc2VhcmNoaGlud2VpcyA9ICRzdWNoaGlud2VpczsNCQllY2hvICc8cD4nLiRzZWFyY2hoaW53ZWlzLicgPGVtPiZyYXF1bzsnLiRnZXN1Y2h0LicmbGFxdW87PC9lbT4nOw0JfQ0NCS8vIGRpZSBGdW5rdGlvbiB6dW0gZXh0cmFoaWVyZW4gdm9uIFRlaWxzdHJpbmdzDQlmdW5jdGlvbiBhdXNsZXNlbigkYWxsLCAkc3RhcnQsICRlbmQpIHsNCQlpZiAoc3RyaXN0cigkYWxsLCRzdGFydCkpIHsNCQkJJHN0YXJ0X3Bvcz1zdHJwb3Moc3RydG9sb3dlcigkYWxsKSxzdHJ0b2xvd2VyKCRzdGFydCkpICsgc3RybGVuKCRzdGFydCk7DQkJCSRyZXN0ID0gc3Vic3RyKCRhbGwsJHN0YXJ0X3Bvcyk7DQkJCSRlbmRfcG9zPXN0cnBvcyhzdHJ0b2xvd2VyKCRyZXN0KSxzdHJ0b2xvd2VyKCRlbmQpKTsNCQkJJGVyZyA9IHN1YnN0cigkcmVzdCwwLCRlbmRfcG9zKTsNCQkJcmV0dXJuICRlcmc7DQkJfQ0JfQ0NDQkvLyBkaWUgRnVua3Rpb24genVtIER1cmNoc3VjaGVuIGRlcyBWZXJ6ZWljaG5pc2JhdW1zOg0JaWYgKCFpc3NldCgkZXhjbHVkZV9kaXJzKSkgJGV4Y2x1ZGVfZGlycyA9IGFycmF5KCIiKTsNDQlmdW5jdGlvbiB0cmVlKCRvcmRuZXIsICRzdWIgPSBGQUxTRSkgew0JCWdsb2JhbCAkZXJnZWI7DQkJJGhhbmRsZSA9IG9wZW5kaXIoJG9yZG5lcik7DQkJd2hpbGUgKGZhbHNlICE9PSAoJGZpbGUgPSByZWFkZGlyICgkaGFuZGxlKSkpIHsNCQkJaWYoJGZpbGUgIT0gIi4iICYmICRmaWxlICE9ICIuLiIgJiYgaXNfZGlyKCRvcmRuZXIuIi8iLiRmaWxlKSkgew0JCQkJJGNvbXBsID0gJG9yZG5lci4iLyIuJGZpbGUuIi8iOw0JICAgICAgIAkJJGVyZ2ViID0gJGVyZ2ViLiIsIi4kY29tcGw7DSAgICAgICAgCQl0cmVlKCRvcmRuZXIuIi8iLiRmaWxlLCBUUlVFKTsNCQkJfQ0JCX0NCSAgCWNsb3NlZGlyKCRoYW5kbGUpOw0JfQ0NCWlmICgkYWxsZWRpcnMpIHsNCSAgIHRyZWUoIi4iKTsNCSAgICRlcmdlYiA9ICIuLyIuJGVyZ2ViOw0JICAgJGRpcnMgPSBleHBsb2RlICgiLCIsICRlcmdlYik7DQl9DQ0JZm9yZWFjaCgkZGlycyBhcyAkZGlyKSB7DQkJaWYoIWluX2FycmF5KCRkaXIsJGV4Y2x1ZGVfZGlycykpIHsNCQkkdmVyeiA9IG9wZW5kaXIoJGRpcik7DQ0JCXdoaWxlKCRmaWxlID0gcmVhZGRpcigkdmVyeikpIHsNDQkJaWYoJGZpbGUgIT0gIi4iICYmICRmaWxlICE9ICIuLiIgJiYgJGZpbGUgIT0gIi5odGFjY2VzcyIpIHsNDQkJJGR1cmNoc3VjaHQgPSAkZHVyY2hzdWNodCArIDE7DQkJLy8gZWluemVsbmUgRGF0ZWllbiB2b24gZGVyIFN1Y2hlIGF1c3NjaGxpZXNzZW4NCQkvLyBkaWUgZm9sZ2VuZGVuIDggWmVpbGVuIGVybGF1YmVuIEF1c2NobHVzcyB2b24gU3Vic3RyaW5ncyBpbiAkZXhjbHVkZV9maWxlcw0JCSRub2xpc3Q9ZmFsc2U7DQkJZm9yICgkZT0wOyRlPGNvdW50KCRleGNsdWRlX2ZpbGVzKTskZSsrKSB7DQkJCSRwb3MgPSBzdHJwb3MoJGZpbGUsJGV4Y2x1ZGVfZmlsZXNbJGVdKTsNCQkJaWYgKCRwb3MgIT09IGZhbHNlKSB7DQkJCQkkbm9saXN0ID0gdHJ1ZTsNCQkJfQ0JCX0gDQkJDQkJaWYoJG5vbGlzdCAhPT0gdHJ1ZSAmJiBwcmVnX21hdGNoKCI9KFwuJGRhdF90eXBlKSQ9IiwkZmlsZSkpIHsNDQkJCS8vIE1ldGEtQW5nYWJlbiBlcm1pdHRlbG4NCQkJJHRpdGVsID0gIiI7DQkJCSRrZXl3b3JkcyA9ICIiOw0JCQkkZGVzY3JpcHRpb24gPSAiIjsNCQkJJGdtdGFycmF5PWdldF9tZXRhX3RhZ3MoJGRpci4kZmlsZSk7DQkJCQkNCQkJd2hpbGUobGlzdCgka2V5MSwkdmFsKT1lYWNoKCRnbXRhcnJheSkpew0JCQkJc3dpdGNoKHN0cnRvbG93ZXIoJGtleTEpKXsNCQkJCQljYXNlICJ0aXRsZSI6ICR0aXRlbD0kdmFsOyBicmVhazsNCQkJCQljYXNlICJrZXl3b3JkcyI6ICRrZXl3b3Jkcz0kdmFsOyBicmVhazsNCQkJCQljYXNlICJkZXNjcmlwdGlvbiI6ICRkZXNjcmlwdGlvbj0kdmFsOyBicmVhazsNCQkJCX0NCQkJfQ0NCQkJJHN0cmluZzEgPSAkc3RyaW5nID0gZmlsZV9nZXRfY29udGVudHMoJGRpci4kZmlsZSk7DQkJCQkNCQkJJHN0cmluZyA9IHN0cl9yZXBsYWNlKCImbmJzcDsiLCIgIiwkc3RyaW5nKTsgLy8gd2VpbCBzb25zdCAmbHQ7Jm5ic3A7IGFscyBsaW1pdC1lbmQgd2lya3Q/Pz8NCQkJDQkJCSRzdHJpbmcgPSBwcmVnX3JlcGxhY2UoJyNbXHNdezIsfSNzJywgJyAnLCAkc3RyaW5nKTsgLy8gbWVocmVyZSBMZWVyemVpY2hlbiBpbiBlaW5zIHVtd2FuZGVsbg0JCQkNCQkJLy8gd2VpbCBhbnNvbnN0ZW4gZWluICZsdDsgaW0gUXVlbGx0ZXh0IGRlbiBTdWNoYmVyZWljaCBiZWVuZGV0Og0JCQkkc3RyaW5nID0gc3RyX3JlcGxhY2UoIiZsdDsiLCIiLCRzdHJpbmcpOw0JCQkNCQkJaWYgKGZpbGVfZXhpc3RzKCJ0YXJnZXRfcmVwbGFjZS5waHAiKSkge2luY2x1ZGUgKCJ0YXJnZXRfcmVwbGFjZS5waHAiKTt9DQkJCQ0JDQkJCS8vIGRhbWl0IHdlcmRlbiBnYW56ZSBXb2VydGVyIGdlZnVuZGVuLCBhdWNoIHdlbm4gc2llIGluIFRhZ3MgZWluZ2VzY2hsb3NzZW4gc2luZDoNCQkJJHN0cmluZyA9IHN0cl9yZXBsYWNlKCI8IiwiIDwiLCRzdHJpbmcpOw0JCQkkc3RyaW5nID0gc3RyX3JlcGxhY2UoIj4iLCI+ICIsJHN0cmluZyk7DQ0JCQkvLyBodG1sIHRhZ3MgbWl0IGVpbmdlc2NobG9zc2VuZW4gcGhwIHRhZ3MgcmF1cyAtIHdlaWwgc29uc3QgZWluIGVpbnplbG5lcyA8IG9kZXIgJmx0OyBhbHMgZW5kIHdpcmt0DSAgCQkJJHN1Y2htdXN0ZXIgPSAiLzxcP1tePl0rXD8+LyI7IA0gIAkJCSRzdHJpbmcgPSBwcmVnX3JlcGxhY2UoJHN1Y2htdXN0ZXIsIiIsJHN0cmluZyk7DQ0NLy9lY2hvICRlbmNvZGluZzsNCQkJaWYgKHN0cnBvcyhzdHJ0b2xvd2VyKCRlbmNvZGluZyksInV0ZiIpIT09IGZhbHNlKSB7DQkJCQkkc3RyaW5nID0gaHRtbF9lbnRpdHlfZGVjb2RlKCRzdHJpbmcsIEVOVF9OT1FVT1RFUywgIlVURi04Iik7DQkJCX0gZWxzZSB7DQkJCQkkc3RyaW5nID0gaHRtbF9lbnRpdHlfZGVjb2RlKCRzdHJpbmcsIEVOVF9OT1FVT1RFUywgIklTTy04ODU5LTEiKTsNCQkJfQ0gICAgICAgICAgICAJLy8gbnVyIGZ1ZXIgd2R3IGR5bi4gZGVzY3JpcHRpb25zOg0gICAgICAgICAgICAJaWYgKCRfU0VSVkVSWydTRVJWRVJfTkFNRSddID09ICJ3ZWJkZXNpZ24ud2Vpc3NoYXJ0LmRlIikgew0gICAJCQkJaWYgKCRkZXNjcmlwdGlvbiA9PSAiIil7DSAgIAkJCQkJJGRlc2NyaXB0aW9uID0gYXVzbGVzZW4oJHN0cmluZzEsICJkZXNjcmlwdGlvbiIsICciOycpOw0JCQkJCSRkZXNjcmlwdGlvbiA9IHN0cmlwX3RhZ3MoJGRlc2NyaXB0aW9uKTsNCQkJCQkkZGVzY3JpcHRpb24gPSBwcmVnX3JlcGxhY2UoIi9cbnxccnxjb250ZW50fFwifD18XC98XD8vIiwgIiIsICRkZXNjcmlwdGlvbik7DSAgIAkJCQl9DSAgICAgICAgICAgIAl9DQ0JCQkvLyB1bmQgd2VpbCA8dGl0bGU+IG5pY2h0IGltbWVyIGFscyBNZXRhLXRhZyBjb2RpZXJ0IHdpcmQ6DQkJCWlmICgkdGl0ZWwgPT0gIiIpICR0aXRlbCA9IGF1c2xlc2VuKCRzdHJpbmcsICI8dGl0bGU+IiwgIjwvdGl0bGU+Iik7DQ0JCQkvLyB3ZWlsIGVzIExldXRlIGdpYnQsIGRpZSBtZXRhIFRhZ3MgbWl0IFplaWxlbnVtYnJ1Y2ggc2NocmVpYmVuOg0JCQkkZGVzY3JpcHRpb24gPSBzdHJfcmVwbGFjZSgiXG4iLCIiLCRkZXNjcmlwdGlvbik7DQkJCSRrZXl3b3JkcyA9IHN0cl9yZXBsYWNlKCJcbiIsIiIsJGtleXdvcmRzKTsNCQkJJHRpdGVsID0gc3RyX3JlcGxhY2UoIlxuIiwiIiwkdGl0ZWwpOw0NCQkJLy8gRGF0ZWllbiBudXIgendpc2NoZW4gZGVuIGJlaWRlbiBsaW1pdGVyIHRhZ3MgYXVzd2VydGVuOg0JCQlpZiAoJGxpbWl0X3N0YXJ0ICE9ICIiKSB7DQkJCQkvLyBXdXJkZSBuZWVkbGUgbmljaHQgZ2VmdW5kZW4sIGdpYnQgc3RycG9zKCkgZGVuIGJvb2xlYW4tV2VydCBGQUxTRSB6dXLDvGNrLg0JCQkJaWYgKHN0cnBvcyhzdHJ0b2xvd2VyKCRzdHJpbmcpLHN0cnRvbG93ZXIoJGxpbWl0X3N0YXJ0KSkgIT09IGZhbHNlKSB7DQkJCQkJJHBvcz1zdHJwb3Moc3RydG9sb3dlcigkc3RyaW5nKSxzdHJ0b2xvd2VyKCRsaW1pdF9zdGFydCkpICsgc3RybGVuKCRsaW1pdF9zdGFydCk7DQkJCQkJJHN1YnN0cmluZ19yZXN0ID0gc3Vic3RyKCRzdHJpbmcsJHBvcyk7DQkJCQl9IGVsc2Ugew0JCQkJCWlmIChpc3NldCgkbGltaXRfb25seSkgJiYgJGxpbWl0X29ubHkgPT09IHRydWUpIHskc3Vic3RyaW5nX3Jlc3QgPSAiIjt9IC8vZGFtaXQgYnJpY2h0IGRpZSBTdWNoZSBhYiwgd2VubiAkbGltaXRfc3RhcnQgbmljaHQgZ2VmdW5kZW4gd2lyZC4NCQkJCQllbHNlIHskc3Vic3RyaW5nX3Jlc3QgPSAkc3RyaW5nO30NCQkJCX0NCQkJfSBlbHNlIHsNCQkJCSRzdWJzdHJpbmdfcmVzdCA9ICRzdHJpbmc7DQkJCX0NDQkJCS8vIHdlbm4gJGxpbWl0X2VuZCBnZXNldHp0Og0JCQlpZiAoJGxpbWl0X2VuZCAhPSAiIikgew0JCQkJJGVuZF9wb3M9c3RycG9zKHN0cnRvbG93ZXIoJHN1YnN0cmluZ19yZXN0KSxzdHJ0b2xvd2VyKCRsaW1pdF9lbmQpKTsNCQkJCWlmICgkZW5kX3BvcyAhPT0gZmFsc2UpIHsNCQkJCQkkc3RyaW5nID0gc3Vic3RyKCRzdWJzdHJpbmdfcmVzdCwwLCRlbmRfcG9zKTsNCQkJCX0gZWxzZSB7DQkJCQkJJHN0cmluZyA9ICRzdWJzdHJpbmdfcmVzdDsNCQkJCX0NICAgICAgICAgICAgIAl9IGVsc2Ugew0JCQkJJHN0cmluZyA9ICRzdWJzdHJpbmdfcmVzdDsNICAgICAgICAgICAgIAl9DQ0NCQkJLy9JbmhhbHQgdm9uIHRhZ3MgYXVzd2VydGVuOg0JCQlpZiAoJHRhZ3M9PT1mYWxzZSkgCSRzdHJpbmcgPSBzdHJpcF90YWdzKCRzdHJpbmcpOw0NCQkJLy8gZGllIG1ldGEgdGFncyBpbiBkaWUgU3VjaGUgZWluc2NobGllc3NlbiBnZW1hZXNzIGNvbmZpZzoNICAgICAgICAgICAgCWlmICgkdGFncyA9PT0gdHJ1ZSkgeyRrZXk9dHJ1ZTsgJGRlc2M9dHJ1ZTsgJHRpdD10cnVlO30NCQkJaWYgKCRrZXkgPT09IHRydWUpICRzdHJpbmc9JHN0cmluZy4ka2V5d29yZHM7DQkJCWlmICgkZGVzYyA9PT0gdHJ1ZSkgJHN0cmluZz0kc3RyaW5nLiRkZXNjcmlwdGlvbjsNCQkJaWYgKCR0aXQgPT09IHRydWUpICRzdHJpbmc9JHN0cmluZy4kdGl0ZWw7DQ0JCQkkc3RyaW5nID0gc3RyX3JlcGxhY2UoIlxuIiwgIiAiLCAkc3RyaW5nKTsNDQkJCSRzdHJpbmcgPSBzdHJfcmVwbGFjZSgidGl0bGU+IiwgIiIsICRzdHJpbmcpOyAvLyB3ZW5uIFRyZWZmZXIgaW4gPHRpdGxlPiB3aXJkIHRpdGxlPiBhbmdlemVpZ3Q/DQ0JCQkNCQkJLy8gdW5lcnd1ZW5zY2h0ZSBTdHJpbmdzIHZvbiBkZXIgU3VjaGUgYXVzc2NobGllc3Nlbg0JCQlmb3JlYWNoKCRleGNsdWRlX3N0cmluZ3NfbWVyZ2UgYXMgJGspIHsNCQkJCSRzdHJpbmcgPSBzdHJfcmVwbGFjZSgkaywiIiwkc3RyaW5nKTsNCQkJfQkJCQ0NDSAgICAgICAgICAgCQkvLyBFLU1haWxzIHJhdXM6IGh0dHA6Ly93d3cucmVndWxhci1leHByZXNzaW9ucy5pbmZvL2VtYWlsLmh0bWwNICAgICAgICAgICAgCSRzdWNobXVzdGVyID0gJy9cYltBLVowLTkuXyUrLV0rQFtBLVowLTkuLV0rXC5bQS1aXXsyLDR9XGIvaSc7DSAgICAgICAgICAgIAkkc3RyaW5nID0gcHJlZ19yZXBsYWNlKCRzdWNobXVzdGVyLCcnLCAkc3RyaW5nKTsNDQkJCWlmKG1iX2RldGVjdF9lbmNvZGluZygkc3RyaW5nLCAnVVRGLTgsIElTTy04ODU5LTEnKSA9PT0gJ1VURi04JyAmJiBmdW5jdGlvbl9leGlzdHMoJ21iX3N0cnRvbG93ZXInKSl7CQ0JCQkJJHN0cmluZ2xvdyA9IG1iX3N0cnRvbG93ZXIoJHN0cmluZywnVVRGLTgnKTsNCQkJCSRzZWFyY2hsb3cgPSBtYl9zdHJ0b2xvd2VyKCRzZWFyY2gsJ1VURi04Jyk7DQkJCX0gDQkJCWVsc2Ugew0JCQkJJHN0cmluZ2xvdyA9IHN0cnRvbG93ZXIoJHN0cmluZyk7DQkJCQkkc2VhcmNobG93ID0gc3RydG9sb3dlcigkc2VhcmNoKTsJDQkJCX0NDQkJCS8vIHdlaWwgc3RydG9sb3dlciB1bnRlciBQSFAgNS40IGFuc2NoZWluZW5kIG5pY2h0IG1laHIgdHV0DQkJCSR1bWxhdXRfZ3Jvc3MgPSBhcnJheSgnxCcsJ9YnLCfcJyk7DQkJCSR1bWxhdXRfa2xlaW4gPSBhcnJheSgn5CcsJ/YnLCf8Jyk7DQkJCSRzZWFyY2hsb3cgPSBzdHJfcmVwbGFjZSgkdW1sYXV0X2dyb3NzLCAkdW1sYXV0X2tsZWluLCAkc2VhcmNobG93KTsNCQkJJHN0cmluZ2xvdyA9IHN0cl9yZXBsYWNlKCR1bWxhdXRfZ3Jvc3MsICR1bWxhdXRfa2xlaW4sICRzdHJpbmdsb3cpOw0NCQkJIyBkaWUgdW5kLVZlcmtudWVwZnVuZzoNCQkJJG9yID0gZmFsc2U7IA0NCQkJaWYgKChzdHJwb3MoJHNlYXJjaGxvdywiIG9yICIpICE9PSBmYWxzZSB8fCBzdHJwb3MoJHNlYXJjaGxvdywiIG9kZXIgIikgIT09IGZhbHNlKSAmJiAgaXNzZXQoJHN1Y2h0aXAzb3IpICkgeyAvLyBVbXNjaGFsdGVuIHZvbiB1bmQgYXVmIG9yIA0JCQkJJG9yID0gdHJ1ZTsNCQkJCSRzZWFyY2hsb3cgPSBzdHJfcmVwbGFjZSgiIG9yICIsICIgIiwgJHNlYXJjaGxvdyk7DQkJCQkkc2VhcmNobG93ID0gc3RyX3JlcGxhY2UoIiBvZGVyICIsICIgIiwgJHNlYXJjaGxvdyk7DQkJCX0NCQkJCQ0JCQkjIFdvcnRncnVwcGVuDQkJCWlmICgkYXVzZHJ1Y2sgIT09IGZhbHNlKSB7DQkJCQkkc2VhcmNobG93ID0gc3RyX3JlcGxhY2UoJyZxdW90OycsJycsJHNlYXJjaGxvdyk7DQkJCQkkc2VhcmNobG93ID0gc3RyX3JlcGxhY2UoJyInLCcnLCRzZWFyY2hsb3cpOw0JCQkJJHNlYXJjaF9hcnJbMF0gPSAkc2VhcmNobG93Ow0NCQkJfSBlbHNlIHsNCQkJCSRzZWFyY2hfYXJyID0gZXhwbG9kZSgiICIsJHNlYXJjaGxvdyk7DQkJCX0NCQkJJHNlYXJjaF9jb3VudCA9IGNvdW50KCRzZWFyY2hfYXJyKTsNDQ0JCQkkaT0wOw0JCQlmb3JlYWNoICgkc2VhcmNoX2FyciBhcyAkc2VhcmNoX3dvcmQpIHsNCQkJCWlmIChAc3RycG9zKCRzdHJpbmdsb3csJHNlYXJjaF93b3JkKSAhPT0gZmFsc2UpIHsJIAkvLyB3ZW5uIFN1Y2hiZWdyaWZmIHZvcmtvbW10LCBzY2huZWxsZXIgYWxzIHByZWdfbWF0Y2gJCQkJDQkJCQkJJGkrKzsNDQkJCQkJaWYgKCRvciA9PT0gdHJ1ZSkgeyRpID0gJHNlYXJjaF9jb3VudCA9IDE7fSAvLyBkZXIgSGFjaywgdW0gYmVpIE9SIG5pY2h0IHp1IHdhcnRlbiwgYmlzIGFsbGUgU3VjaGJlZ3JpZmZlIGdlZnVuZGVuIHdlcmRlbg0NCQkJCQlpZiAoJGk9PSRzZWFyY2hfY291bnQpIHsJCS8vIHNvYmFsZCBhbGxlIFN1Y2hiZWdyaWZmZSBnZWZ1bmRlbiB3dXJkZW4uLi4NCQkJCQkJDQkJCQkJCSRzdHJpbmdsb3cgPSBzdHJpcF90YWdzKCRzdHJpbmdsb3cpOw0NCQkJCQkJJHRlc3QgPSBAc3Vic3RyX2NvdW50KCRzdHJpbmdsb3csICRzZWFyY2hfd29yZCk7DQ0JCQkJCQlpZiAoJHNlYXJjaF9jb3VudCA+IDEpew0JCQkJCQkJJHBvcz1zdHJwb3MoJHN0cmluZ2xvdywkc2VhcmNoX3dvcmQpOw0JCQkJCQl9IGVsc2Ugew0JCQkJCQkJJHBvcz1zdHJwb3MoJHN0cmluZ2xvdywkc2VhcmNobG93KTsNCQkJCQkJfQ0NDQkJCQkJCWlmICgkdm9yID49ICRwb3MpIHsNCQkJCQkJCSRwaWVjZTEgPSBzdWJzdHIoJHN0cmluZywwLCRuYWNoKTsNCQkJCQkJfSBlbHNlIHsNCQkJCQkJCSRwaWVjZTEgPSBzdWJzdHIoJHN0cmluZywkcG9zLSR2b3IsJHZvciskbmFjaCk7DQ0JCQkJCQkJJHBpZWNlMSA9IHN0cnN0ciAoJHBpZWNlMSwiICIpOyAvLyB2ZXJtZWlkZXQgQnJ1Y2hzdHVlY2tlIHZvbiBXb2VydGVybiBhbSBBbmZhbmcgZGVzIEtvbnRleHQNCQkJCQkJfQ0NDQ0JCQkJCQkkcGllY2UxID0gc3Vic3RyKCRwaWVjZTEsIDAsIHN0cmxlbihzdHJyY2hyKCRwaWVjZTEsMzIpKSooLTEpKS4iIC4uLiI7IC8vIHZlcm1laWRldCBCcnVjaHN0dWVja2Ugdm9uIFdvZXJ0ZXJuIGFtIEVuZGUgZGVzIEtvbnRleHQNCQkJCQkJJHJlc3QgPSAiPGJyIC8+JHBpZWNlMSI7DQ0NDQ0JCQkJCQkkZmlsZWZvcnNpemUgPSAkZmlsZTsNCQkJCQkJaWYgKCRzaG93X2V4dCAhPT0gdHJ1ZSkgew0JCQkJCQkJJGluZm8gPSBwYXRoaW5mbygkZmlsZSk7DQkJCQkJCQkkZmlsZSA9ICBiYXNlbmFtZSgkZmlsZSwnLicuJGluZm9bJ2V4dGVuc2lvbiddKTsNCQkJCQkJfQ0NDQkJCQkJCWlmKCR2b3I9PSIwIiAmJiAkbmFjaD09IjAiKSAkcmVzdCA9ICIiOw0NCSAgICAgICAgICAgICAgICAgICAgaWYoISRkZXNjcmlwdGlvbiA9PSAiIiAmJiAkc2hvd19kZXNjID09IHRydWUpICRyZXN0ID0gIjxiciAvPjxzdHJvbmc+JGJlc2NocmVpYjwvc3Ryb25nPiAkZGVzY3JpcHRpb24iOw0JCQkJCQlpZigkZmlsZW5hbWUpICR0aXRlbCA9ICRmaWxlOw0NCQkJCQkJaWYgKGlzc2V0KCRjaGF2ZSkgJiYgJGNoYXZlID09ICIzMjEiKXsNCQkJCQkJCS8vIHVuZG9jdW1lbnRlZDogbnVyIGRpciB6ZWlnZW4NCQkJCQkJCWlmIChpc3NldCgkc2hvd19kaXJfb25seSkgJiYgJHNob3dfZGlyX29ubHkgPT09IHRydWUpIHsNCQkJCQkJCQkkbGFzdF9kaXIgPSBleHBsb2RlKCcvJywgJGRpcik7DQkJCQkJCQkJJHggPSBhcnJheV9rZXlzKCRsYXN0X2Rpcik7DQkJCQkJCQkJJGxhc3Rfa2V5ID0gZW5kKCR4KSAtMTsNCQkJCQkJCQkkdGl0ZWwgPSAkbGFzdF9kaXJbJGxhc3Rfa2V5XTsNCQkJCQkJCQkkZmlsZT0iIjsNCQkJCQkJCX0NCQkJCQkJfQ0NCQkJCQkJaWYoJHRpdGVsID09ICIiKSAkdGl0ZWwgPSAkZmlsZTsNDQ0JCQkJCQlpZiAoaXNzZXQoJHF1ZXJ5KSl7DQkJCQkJCQkkcWRpciA9IHN0cl9yZXBsYWNlKCIuLyIsIiIsJGRpcik7IC8vIGVudGZlcm50IGRhcyBmdWVocmVuZGUgLi8gYmVpbSBxdWVyeSBzdHJpbmcNICAgICAgICAgICAgICAgICAgICAgICAgIAlpZiAoaXNzZXQoJHF1ZXJ5X2VuZHVuZykgJiYgJHF1ZXJ5X2VuZHVuZyA9PSAibm8iKSB7DSAgICAgICAgICAgICAgICAgICAgICAgICAgCQkkZmV4dCAgPSBhcnJheV9wb3AoZXhwbG9kZSgnLicsICRmaWxlKSk7DSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGZuYW1lID0gYmFzZW5hbWUoJGZpbGUsICcuJy4kZmV4dCk7DQkJCQkJCQkgICAgJGxpbmsgPSAkcXVlcnkuJHFkaXIuJGZuYW1lOw0gICAgICAgICAgICAgICAgICAgICAgICAJfSBlbHNlIHsNCQkJCQkJCQkkbGluayA9ICRxdWVyeS4kcWRpci4kZmlsZTsNICAgICAgICAgICAgICAgICAgICAgICAJCX0NCQkJCQkJfSBlbHNlIHsNCQkJCQkJCSRsaW5rID0gJGRpci4kZmlsZTsNCQkJCQkJfQ0NCQkJCQkJaWYgKCRfU0VSVkVSWydTRVJWRVJfTkFNRSddID09ICJ3ZWJkZXNpZ24ud2Vpc3NoYXJ0LmRlIikgew0JCQkgICAgICAgICAgICANICAgICAgICAgICAgICAgICAgCQkJLy8gVW1sZWl0ZW4gdm9uIEtvbW1lbnRhcmVuIGF1ZiBkZW4gQXJ0aWtlbDoNICAgICAgICAgICAgICAgICAgCQkJaWYgKHN0cnBvcygkbGluaywnY29tbWVudCcpICE9PSBmYWxzZSkgew0gICAgICAgICAgICAgICAgICAgICAJCQkkdGl0ZWwgPSBzdHJfcmVwbGFjZSgiY29tbWVudF8iLCIiLCR0aXRlbCk7DSAgICAgICAgICAgICAgICAgICAgIAkJCSR0aXRlbCA9IHN0cl9yZXBsYWNlKCIueG1sIiwiLnBocCIsJHRpdGVsKTsNICAgICAgICAgICAgICAgICAgICAgCQkJJHRpdGVsID0gJ0tvbW1lbnRhciBhdWYgZGVyIFNlaXRlICcuJHRpdGVsOw0gICAgICAgICAgICAgICAgICANICAgICAgICAgICAgICAgICAgICAgCQkJJGxpbmsgPSBzdHJfcmVwbGFjZSgiY29tbWVudF8iLCIiLCRsaW5rKTsNICAgICAgICAgICAgICAgICAgICAgCQkJJGxpbmsgPSBzdHJfcmVwbGFjZSgiLnhtbCIsIi5waHAiLCRsaW5rKTsNICAgICAgICAgICAgICAgICAgCQkJfQ0NICAgICAgICAgICAgICAgICAgCQkJLy8gSmV0enQgVW1sZWl0ZW4gdm9uIG1kLVRleHRmaWxlcyBhdWYgZGVuIEFydGlrZWw6DSAgICAgICAgICAgICAgICAgIAkJCWlmIChzdHJwb3MoJGxpbmssJy9tYXJrZG93bi8nKSAhPT0gZmFsc2UpIHsNICAgICAgICAgICAgICAgICAgICAgCQkJJGxpbmsgPSBzdHJfcmVwbGFjZSgibWFya2Rvd24vIiwiIiwkbGluayk7DSAgICAgICAgICAgICAgICAgICAgIAkJCSRsaW5rID0gc3RyX3JlcGxhY2UoIl90ZXh0LnR4dCIsIi5waHAiLCRsaW5rKTsNICAgICAgICAgICAgICAgICAgICAgCQkJJGxpbmsgPSBzdHJfcmVwbGFjZSgicGJfIiwiIiwkbGluayk7DQkJCSAgIAkJCQkJJHRpdGVsID0gc3RyX3JlcGxhY2UoIi4vIiwiIiwkbGluayk7IA0gICAgICAgICAgICAgICAgICAJCQl9DQkJCQkJCX0NCQkJCQkJDQkJCQkJCWlmIChpc3NldCgkY2hhdmUpICYmICRjaGF2ZSA9PSAiMzIxIil7DQkJCQkgIAkJCS8vIFVtbGVpdGVuIHZvbiBJbmNsdWRlLURhdGVpZW46DQkJCQkgIAkJCWlmIChpc3NldCgkcmVkaXJfc3VmZml4KSAmJiBpc3NldCgkcmVkaXJfcmVwbGFjZSkpIHsNICAgICAgICAgICAgICAgICAgICAgCQkJJHRpdGVsID0gc3RyX3JlcGxhY2UoJHJlZGlyX3N1ZmZpeCwkcmVkaXJfcmVwbGFjZSwkdGl0ZWwpOw0gICAgICAgICAgICAgICAgICAgICAJCQkkbGluayA9IHN0cl9yZXBsYWNlKCRyZWRpcl9zdWZmaXgsJHJlZGlyX3JlcGxhY2UsJGxpbmspOw0JCQkJICAJCQl9CQkJCQ0JCQkJCQl9DQkJCQkJCQ0JCQkJCQlpZigkdGl0ZWwgIT0gIiIpIHsNCQkJCQkJCQ0JCQkJCQkJJHRpdGVsID0gdHJpbSgkdGl0ZWwpOw0NCQkJCQkJCWlmICgkdGFyZ2V0ID09ICJibGFuayIpIHsNCQkJCQkJCQkkemllbCA9ICcgdGFyZ2V0PSJfYmxhbmsiJzsNCQkJCQkJCQkkanVtcCA9IGZhbHNlOw0JCQkJCQkJfSBlbHNlaWYgKCR0YXJnZXQgPT0gInBhcmVudCIpIHsNCQkJCQkJCQkkemllbCA9ICcgdGFyZ2V0PSJfcGFyZW50Iic7DQkJCQkJCQkJJGp1bXAgPSBmYWxzZTsNCQkJCQkJCX0gZWxzZWlmICgkdGFyZ2V0ICE9ICIiKSB7DQkJCQkJCQkJJHppZWwgPSAnIHRhcmdldD0iJy4kdGFyZ2V0LiciJzsNCQkJCQkJCQkkanVtcCA9IGZhbHNlOw0JCQkJCQkJfSBlbHNlIHsNCQkJCQkJCQkkemllbCA9ICcnOw0JCQkJCQkJfQ0NCQkJCQkJCWlmICgkcGZhZCA9PSB0cnVlKSB7DQkJCQkJCQkJaWYgKGlzc2V0KCRxdWVyeSkpew0JCSAgICAgICAgICAgICAgICAgICAgICAgIAkkdXJsID0gIiA8YSBocmVmPVwiIi4kbGluay4iXCIiLiR6aWVsLiI+Ii4kcHJvdC4kcGZhZGluZm8uJGxpbmsuIjwvYT4gIjsNCQkJCQkJCQl9IGVsc2Ugew0JCSAgICAgICAgICAgICAgICAgICAgICAgIAkkdXJsID0gIiA8YSBocmVmPVwiIi4kbGluay4iXCIiLiR6aWVsLiI+Ii4kcHJvdC4kcGZhZGluZm8uc3Vic3RyKCRsaW5rLDEpLiI8L2E+ICI7DQkJCQkJCQkJfQ0JICAgICAgICAgICAgICAgICAgIAkJfSBlbHNlIHsNCSAgICAgICAgICAgICAgICAgICAgIAkJJHVybCA9ICIiOw0JICAgICAgICAgICAgICAgICAgICAgICAJfQ0NCSAgICAgICAgICAgICAgICAgICAJCWlmICgkYWVuZF9kYXQgPT0gdHJ1ZSkgew0JCQkJCQkJCWlmICgkZGF0ZWZvcm0gPT0gImVuIikgew0JCQkJCQkJCQlAJG1vZCA9ICRmaWxlZGF0ZS5kYXRlKCJtL2QveSIsIGZpbGVtdGltZSgkZGlyLiRmaWxlZm9yc2l6ZSkpOw0JCQkJCQkJCQ0JCQkJCQkJCX0gZWxzZWlmICgkZGF0ZWZvcm0gPT0gImRlIiB8fCAkZGF0ZWZvcm0gPT0gIiIgfHwgIWlzc2V0KCRkYXRlZm9ybSkpIHsNCQkJCQkJCQkJQCRtb2QgPSAkZmlsZWRhdGUuZGF0ZSgiZC5tLnkiLCBmaWxlbXRpbWUoJGRpci4kZmlsZWZvcnNpemUpKTsNCQkJCQkJCQl9IGVsc2Ugew0JCQkJCQkJCQlAJG1vZCA9ICRmaWxlZGF0ZS5kYXRlKCRkYXRlZm9ybSwgZmlsZW10aW1lKCRkaXIuJGZpbGVmb3JzaXplKSk7DQkJCQkJCQkJfQ0JCQkJCQkJCSRtb2QgPSAiPHNwYW4gY2xhc3M9J21vZDEnPiIuJG1vZC4iPC9zcGFuPiI7DQkJCQkJCQl9IGVsc2Ugew0JICAgICAgICAgICAgICAgICAgICAJCSRtb2QgPSAiIjsNCSAgICAgICAgICAgICAgICAgICAgCX0NDQkJCQkJCQkvLyBlaW4gVGh1bWIgZWluYmluZGVuLCB3ZW5uIGVpbmUgR3JhZmlrLURhdGVpIG1pdCBnbGVpY2hlbSBEYXRlaW5hbWVuIGltIE9yZG5lciBsaWVndA0JCQkJCQkJDQkJCQkJCQkkdGh1bWIgPSAnJzsNCQkJCQkJCWlmIChpc3NldCgkY2hhdmUpICYmICRjaGF2ZSA9PSAiMzIxIikgew0JDQkJCQkJCQkJJGV4dGVuc2lvbnMgPSBhcnJheSgiLmh0bSIsIi5odG1sIiwiLnNodG1sIiwiLnBocCIsIi5waHAzIiwiLnBocDQiLCIucGhwNSIsICIucGRmIik7DQkJCQkJCQkJJHRodW1iID0gc3RyX3JlcGxhY2UoJGV4dGVuc2lvbnMsJHRodW1iX3JlcGxhY2UsJGxpbmspOw0JCQkJCQkJfQ0NCQkJCQkJCSRpbWdsaW5rID0gIiI7DQkJCQkJCQkJaWYgKGZpbGVfZXhpc3RzKCR0aHVtYikgJiYgJHRodW1iICE9ICRsaW5rKSB7DQkJCQkJCQkJCSRpbWdsaW5rID0gJzxhIGhyZWYgPSInLiRsaW5rLiciPjxpbWcgc3JjPSInLiR0aHVtYi4nIiBhbHQ9IlN5bWJvbCBkZXIgU2VpdGUgIi8+IDwvYT4gJzsNCQkJCQkJCQl9DQ0JICAgICAgICAgICAgICAgIAkJJHRyZWZmX2Fuej0iIjsNCSAgICAgICAgICAgICAgICAgIAkJaWYoJHRyZWZmZXIgJiYgJHRlc3Q+PTEpICR0cmVmZl9hbno9IjxzcGFuIGNsYXNzPSd0cmVmZmVyJz5bIi4kdGVzdC4iJm5ic3A7Ii4kdHJlZmYuIl08L3NwYW4+IjsNDQkJCQkJLy8gc28ga2FubiBtYW4gYWxwaGFiZXRpc2NoIHNvcnRpZXJlbjogKE5lZ2VydHJpY2spDQkJCQkJaWYgKGlzc2V0KCRhbHBoYXNvcnQpICYmICRhbHBoYXNvcnQgPT09IHRydWUpIHskdGVzdCA9ICR0aXRlbDt9DQ0JCQkJCS8vIFRyZWZmZXIgYmVpIG9yIG51ciBlaW5tYWwgYXVmbGlzdGVuDQkJCQkJaWYgKCFpbl9hcnJheSgkbGluaywgJGJlcmVpdHNfZm91bmQpKSB7DQkJCQkJCWlmICgkb3IgPT09IHRydWUpIHskYmVyZWl0c19mb3VuZFtdID0gJGxpbms7fSANDSAgICAgICAgICAgICAgICAgICAgICAJCQlpZiAoJHBmYWQgfHwgJGFlbmRfZGF0KSB7DSAgICAgICAgICAgICAgICAgICAgICAgIAkJCWlmICgkaWZyYW1lICE9PSB0cnVlKSB7IA0gICAgICAgICAgICAgICAgICAgICAgICAgCQkJCSRhcnJheSAuPSAkdGVzdC4kaW1nbGluay4iPGEgaHJlZj1cIiIuJGxpbmsuIlwiIi4kemllbC4iPiIuJHRpdGVsLiI8L2E+ICIuJGxpc3RfaHhfZW5kLiR0cmVmZl9hbnouJHJlc3QuIjxzcGFuIGNsYXNzPSdtb2QnPiIuJHVybC4iPC9zcGFuPiIuJG1vZC4iXG4iOw0gICAgICAgICAgICAgICAgICAgICAgICAgICAJCQl9IGVsc2Ugew0gICAgICAgICAgICAgICAgICAgICAgICAgICAJCQkJJGFycmF5IC49ICIkbGlua1xuIjsNICAgICAgICAgICAgICAgICAgICAgICAJCQkJfQ0gICAgICAgICAgICAgICAgICAgICAJCQl9IGVsc2Ugew0gICAgICAgICAgICAgICAgICAgICAgICAJCQlpZiAoJGlmcmFtZSAhPT0gdHJ1ZSkgeyANICAgICAgICAgICAgICAgICAgICAgICAgIAkJCQkkYXJyYXkgLj0gJHRlc3QuJGltZ2xpbmsuIjxhIGhyZWY9XCIiLiRsaW5rLiJcIiIuJHppZWwuIj4iLiR0aXRlbC4iPC9hPiAiLiRsaXN0X2h4X2VuZC4kdHJlZmZfYW56LiRyZXN0LiJcbiI7DSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCQl9IGVsc2Ugew0gICAgICAgICAgICAgICAgICAgICAgIAkJCQkJJGFycmF5IC49ICIkbGlua1xuIjsNICAgICAgICAgICAgICAgICAgICAgICAgIAkJCX0NICAgICAgICAgICAgICAgICAgICAgICAgCQl9DQkJCQkJfQ0NDQkgICAgICAgICAgICAgICAJCQkkZm91bmQgKys7DQ0JCQkJCQl9DQkJCQkJfQ0JCQkJfQ0JCQl9DQkJfQ0JfQ0JfQ0JfQ0JDQlAY2xvc2VkaXIoJHZlcnopOw0NCX0NZWNobyAnPC9wPic7DWlmICgkc2VhcmNoID09ICKnZm91bmQiKSB7ZWNobyAnJiM4Mzt1JiM5OTtoJiMxMTU7YyYjMTE0O2kmIzExMjt0ICYjMTY5OyAyJiM0ODswNSAmIzExOTtlJiM5ODtkJiMxMDE7cyYjMTA1O2duJiM0NjsmIzExOWUmIzEwNTtzJiMxMTU7aCYjOTc7ciYjMTE2OyYjNDY7JiMxMDA7ZSc7ZXhpdDt9DQ0NLy8gTG9nZGF0ZWkgc2NocmVpYmVuIHVuZCBCZW5hY2hyaWNodGlndW5ncy1NYWlsIG1pdCBpcCAtIFNwZXJyZToNLy8gYmFzZTY0IHNjaHJlaWJ0IDIgTG9nZWludHJhZWdlIQ0NZnVuY3Rpb24gc2NocmVpYmVuKCRkYXRlaSwkbW9kZSl7DQlnbG9iYWwgJHNlYXJjaDsNCSRmcCA9IEBmb3BlbigkZGF0ZWksJG1vZGUpOw0JZmxvY2soJGZwLExPQ0tfRVgpOw0JZndyaXRlKCRmcCwkX1NFUlZFUlsiUkVNT1RFX0FERFIiXS4ifCIudGltZSgpLiJ8Ii4kc2VhcmNoLiJcbiIpOw0JZmxvY2soJGZwLExPQ0tfVU4pOw0JZmNsb3NlKCRmcCk7DX0NDQ1mdW5jdGlvbiBpcF9zcGVycmUoKSB7DQlnbG9iYWwgJHNlYXJjaCwgJHJlbG9hZGxpbWl0LCAkaW5zdGFsbGF0aW9uX3BhdGg7DQkkcmVsb2FkbG9nZGF0ZWkgPSAkaW5zdGFsbGF0aW9uX3BhdGguJy9yZWxvYWQudHh0JzsNCSRhbnphaGxlaW50cmFlZ2UgPSAxMDA7DQ0JLy8gUHJ1ZWZlbiwgb2IgcmVsb2FkZGF0ZWkgZXhpc3RpZXJ0ID0+IGFuc29uc3RlbiBFcnN0ZWxsZW4NDQlpZighZmlsZV9leGlzdHMoJHJlbG9hZGxvZ2RhdGVpKSkgew0JCSRkYXRlaSA9IGZvcGVuKCRyZWxvYWRsb2dkYXRlaSwidysiKTsNCQlmY2xvc2UoJGRhdGVpKTsNCX0NDQkkZnAgPSBmaWxlKCRyZWxvYWRsb2dkYXRlaSk7DQkkc2l6ZSA9IHNpemVvZigkZnApOw0JJGF1c2dhYmUgPSBmYWxzZTsNCS8vIERhdGVpIHNjaHJlaWJlbiwgd2VubiBMaXN0ZSB2b2xsOg0JaWYoJHNpemUgPj0gJGFuemFobGVpbnRyYWVnZSl7DQkJc2NocmVpYmVuKCRyZWxvYWRsb2dkYXRlaSwidyIpOw0NCS8vIFBydWVmZW4sIG9iIGVpbmUgSVAgaW4gZGVyIExpc3RlIHN0ZWh0DQl9IGVsc2Ugew0JCWZvciAoJGk9MDskaTwkc2l6ZTskaSsrKSB7DSAgICAgIAkJJHplaWxlID0gZXhwbG9kZSgifCIsJGZwWyRpXSk7DQ0JCQlpZiAoJHplaWxlWzFdID4gdGltZSgpLTMgfHwNCQkJJHplaWxlWzBdID09ICRfU0VSVkVSWyJSRU1PVEVfQUREUiJdICYmICR6ZWlsZVsxXSA+IHRpbWUoKS02IHx8DQkJCSR6ZWlsZVswXSA9PSAkX1NFUlZFUlsiUkVNT1RFX0FERFIiXSAmJiB0cmltKCR6ZWlsZVsyXSkgPT0gJHNlYXJjaCAmJiAkemVpbGVbMV0gPiAodGltZSgpLSRyZWxvYWRsaW1pdCkpIHsgLy8gZ2xlaWNoZSBJUCwgcmVsb2FkbGltaXQgdW5kIGdsZWljaGVyIFN1Y2hiZWdyaWZmDQkJCQkkYXVzZ2FiZSA9IHRydWU7DSAgICAgIAkJfQ0JCX0NCQkvLyBQcm90b2tvbGxpZXJ0IGRpZSBJUC1BZHJlc3NlIChzY2hyZWlidCk6DQkJc2NocmVpYmVuKCRyZWxvYWRsb2dkYXRlaSwiYSsiKTsNCX0NDQ0JcmV0dXJuIEAkYXVzZ2FiZTsNfQ0NLy8gamV0enQgTG9nZmlsZSB1bmQgQmVuYWNocmljaHRpZ3VuZ3MtTWFpbCBzY2hyZWliZW46DQ1pZihpcF9zcGVycmUoKT09PWZhbHNlKSB7DQkNCSRzdWNoYmVncmlmZiA9IGh0bWxfZW50aXR5X2RlY29kZSgkc2VhcmNoKTsNDQkvLyBCZW5hY2hyaWNodGlndW5ncyBNYWlsOg0JaWYoJG1haWwgPT0gdHJ1ZSAmJiAkc2VhcmNoICE9ICR2YWx1ZSkgew0JCWlmICghJHNlbmRlcikgeyRzZW5kZXIgPSAiU3VjaHNjcmlwdCI7fQ0JCW1haWwoJGFkbWluYWRkcmVzcywiU3VjaGUgYXVmICRzZWl0ZSIsIkZvbGdlbmRlciBCZWdyaWZmIHd1cmRlIHNvZWJlbiBhdWYgZGVyIFNlaXRlICRzZWl0ZSBnZXN1Y2h0OiBcbiRzdWNoYmVncmlmZlxuVHJlZmZlcjogJGZvdW5kIiwiRnJvbTogJHNlbmRlciIgKTsNCX0NDQkvLyBMb2dmaWxlIHNjaHJlaWJlbjoNCSR0b2RheSA9IGRhdGUoImQubS4gSDppICIpOw0JJG5sID0gJHRvZGF5LiRzdWNoYmVncmlmZi4iKCIuJGZvdW5kLiIpXG4iOw0JDQkNCSRsaW5lcyA9IGZpbGUoJGluc3RhbGxhdGlvbl9wYXRoLicvc2VhcmNobG9nLnR4dCcpOw0JJGxpbmVzID0gYXJyYXlfdW5pcXVlKCRsaW5lcyk7IC8vIER1cGxpa2F0ZSBsb2VzY2hlbg0NDQkvLyBXZW5uIG1laHIgYWxzICRtYXhtc2cgKGRlZmF1bHQ6MTAwKSBMb2dlaW50cmFlZ2UgYWVsdGVzdGUgbG9lc2NoZW46DQkvLyAkbWF4bXNnID0gMTAwOw0JaWYoY291bnQoJGxpbmVzKSA+ICRtYXhtc2cpIHVuc2V0KCRsaW5lc1swXSk7DQ0JJG5sID0gaW1wbG9kZSgiIiwgJGxpbmVzKS4kbmw7DQkkZnAyID0gZm9wZW4oJGluc3RhbGxhdGlvbl9wYXRoLicvc2VhcmNobG9nLnR4dCcsICd3YicpOw0JZmxvY2soJGZwMixMT0NLX0VYKTsNCWZ3cml0ZSgkZnAyLCAkbmwpOw0JZmxvY2soJGZwMixMT0NLX1VOKTsNCWZjbG9zZSgkZnAyKTsNfQ0NDQ0JaWYoJGZvdW5kID09ICIwIikJew0JCWVjaG8gJG5vcmVzdWx0Ow0JCWlmIChzdHJsZW4oJHNlYXJjaCkgPiAkbGVuZ3RoICYmICR2b3JzY2hsYWcgIT0gIiIpIHsgDQ0JCQkkc3luID0gc3RyX3JlcGxhY2UoJyZxdW90OycsJycsJHNlYXJjaCk7DQkJCSRzeW4gPSBzdHJfcmVwbGFjZSgnIicsJycsJHNlYXJjaCk7DQkJDQkJCWlmIChzdHJwb3Moc3RydG9sb3dlcigkZW5jb2RpbmcpLCJ1dGYiKSE9PSBmYWxzZSkgew0JCQkJJHN5biA9IG1iX3N1YnN0cih0cmltKCRzeW4pLDAsJGxlbmd0aCwndXRmLTgnKTsNCQkJfSBlbHNlIHsNCQkJCSRzeW4gPSBzdWJzdHIodHJpbSgkc3luKSwwLCRsZW5ndGgpOw0JCQl9DQ0JCQllY2hvICI8cD4kdm9yc2NobGFnIDxhIGhyZWYgPVwiIi4gYmFzZW5hbWUoJF9TRVJWRVJbJ1BIUF9TRUxGJ10pLiI/cT0kc3luJmFtcDtnZWdlbj0mYW1wO2RhdGU9Ii50aW1lKCkuIlwiPiRzeW48L2E+LjwvcD4iOw0JCX0NCX0NDQlpZigkZm91bmQgPT0gIjEiICYmICRqdW1wID09IHRydWUgJiYgJF9TRVJWRVJbJ1BIUF9TRUxGJ10gIT0gc3Vic3RyKCRsaW5rLDEpKQl7IC8vZGFzIFN1Y2hzY3JpcHQgc2VsYnN0IGRhcmYgbmljaHQgYW5nZXNwcnVuZ2VuIHdlcmRlbjogRW5kbG9zc2NobGVpZmUNICAJCSRsaW5rID0gc3Vic3RyKCRsaW5rLDEpOwkvL2RlbiBQdW5rdCB2b3IgZGVtIGRpciB3ZWcNCQkkc2VhcmNoID0gc3RyX3JlcGxhY2UoJyZxdW90OycsJyInLCRzZWFyY2gpOyAvLyB3ZWdlbiBzZWFyY2h0ZXJtLmpzDQkJDQkJLy8gZG9wcGVsdGUgc2xhc2ggdm9yIERhdGVpbmFtZW4gdW50ZXJkcnVlY2tlbg0JCSRkaXJuYW1lID0gZGlybmFtZSgkX1NFUlZFUlsnUEhQX1NFTEYnXSk7DQkJaWYoJGRpcm5hbWUgPT0gIi8iKSAkZGlybmFtZSA9ICIiOw0JCS8vIGJhY2tzbGFzaCB2b24gV2luZG93cyBTZXJ2ZXJuIHJhdXM6DQkJJGRpcm5hbWUgPSBzdHJfcmVwbGFjZSgiXFwiLCIiLCRkaXJuYW1lKTsNDQkJaWYgKGlzc2V0KCRxdWVyeSkpew0JCQloZWFkZXIoIkxvY2F0aW9uOiBodHRwOi8vIi4kX1NFUlZFUlsnSFRUUF9IT1NUJ10uJGRpcm5hbWUuIi8iLiRsaW5rLiImcT0iLiRzZWFyY2gpOw0JCX0gZWxzZSB7DQkJCWhlYWRlcigiTG9jYXRpb246IGh0dHA6Ly8iLiRfU0VSVkVSWydIVFRQX0hPU1QnXS4kZGlybmFtZS4kbGluay4iP3E9Ii4kc2VhcmNoKTsNCQl9DQkJZXhpdDsNCX0NDQlpZigkZm91bmQgPiAiMSIpIHsNICAgICAgICAkbiA9ICRwbHVyYWw7ICRlID0gImUiOyAkcyA9ICJzIjsNCX0gZWxzZSB7DSAgICAJJGUgPSAkbiA9ICRzID0gIiI7DQl9DQ0JaWYoJGZvdW5kID49ICIxIikgew0NCQkkYXJyYXkgPSBleHBsb2RlKCJcbiIsICRhcnJheSk7DQkJaWYgKGlzc2V0KCRhbHBoYXNvcnQpICYmICRhbHBoYXNvcnQgPT09IHRydWUpIHsNCQkJc29ydCgkYXJyYXkpOw0JCX0gZWxzZSB7DQkJCW5hdHNvcnQoJGFycmF5KTsNCQl9DQkJcmVzZXQoJGFycmF5KTsNCQlpZiAoIWlzc2V0KCRyZXZlcnNlc29ydCkpIHskYXJyYXkgPSBhcnJheV9yZXZlcnNlKCRhcnJheSk7fQ0NICAgICAgJGkgPSAkYW56X2RhdDsNDQ0gICAgICAvLyBhbnN0ZWxsZSBkZXIgd2hpbGUgZWluIGZvciBTY2hsZWlmZSwgd2VubiBpY2ggd2VpdGVyZSBTZWl0ZW4gYW56ZWlnZW4gd2lsbDoNICAgICAgJG5leHQ9MDsNICAgICAgaWYoaXNzZXQoJF9HRVRbIm5leHQiXSkgfHwgaXNzZXQoJF9QT1NUWyJuZXh0Il0pKSB7DSAgICAgICAgICAgIGlmIChpc3NldCgkX0dFVFsibmV4dCJdKSAmJiAkX0dFVFsibmV4dCJdICE9ICIiKSAkbmV4dCA9ICRfR0VUWyJuZXh0Il07DSAgICAgICAgICAgIGlmIChpc3NldCgkX1BPU1RbIm5leHQiXSkgJiYgJF9QT1NUWyJuZXh0Il0gIT0gIiIpICRuZXh0ID0gJF9QT1NUWyJuZXh0Il07DSAgICAgIH0NICAgICAgDSAgICAgICRuZXh0MT0kbmV4dCsxOw0gICAgICAkd2VpdGVyPSRuZXh0KyRhbnpfZGF0Ow0gICAgICBmb3IoJGNvdW50ID0gMCArICRuZXh0OyAkY291bnQgPCAkYW56X2RhdCArICRuZXh0OyAkY291bnQrKykgew0gICAgICAgICBpZiAoJGlmcmFtZSAhPT0gdHJ1ZSkgeyANDQ0gICAgICAgICAgICBpZiAoQCRhcnJheVskY291bnRdKSAkYXVzZ2FiZSAuPSAiPGxpPiIuJGxpc3RfaHhfc3RhcnQuc3Vic3RyKHN0cnN0cigkYXJyYXlbJGNvdW50XSwgJzxhIGhyZWYnKSwwKS4iPC9saT5cbiI7DSAgICAgICAgIH0gZWxzZSB7DSAgICAgICAgICAgIGlmIChAJGFycmF5WyRjb3VudF0pICRhdXNnYWJlIC49ICI8aWZyYW1lIGNsYXNzPSdzZWFyY2hpZnJhbWUnIHNyYz0nIi4kYXJyYXlbJGNvdW50XS4iJz48L2lmcmFtZT5cbiI7DSAgICAgICAgIH0NCQ0gICAgICB9DQ0JCWlmICghaXNzZXQoJGZvdW5kdHh0MSkpeyRmb3VuZHR4dDEgPSAiSWhyIFN1Y2hiZWdyaWZmIHd1cmRlICI7fQ0JCWlmICghaXNzZXQoJGZvdW5kdHh0MikpeyRmb3VuZHR4dDIgPSAiU2VpdGUiO30NCQlpZiAoIWlzc2V0KCRmb3VuZHR4dDMpKXskZm91bmR0eHQzID0gIiBnZWZ1bmRlbi4iO30NDQkJZWNobyAnPHA+Jy4kZm91bmR0eHQxLic8c3Ryb25nPiAnLiRmb3VuZC4nIDwvc3Ryb25nPicuJGZvdW5kdHh0Mi4kbi4nICcuJGZvdW5kdHh0MzsNDSAgICAgIGlmICgkbmV4dCA9PSAwKSB7DSAgICAgICAgICAgIGlmICgkYW56X2RhdCA8ICRmb3VuZCkgew0gICAgICAJCQlpZiAoaXNzZXQoJGFuZ2V6ZWlndHR4dCkpew0gICAgICAgICAJCQkJZWNobyAkYW5nZXplaWd0dHh0Ow0gICAgICAJCQl9IGVsc2Ugew0gICAgICAgICAJCQkJZWNobyAiPGJyIC8+QW5nZXplaWd0IHdlcmRlbiA8c3Ryb25nPiRhbnpfZGF0PC9zdHJvbmc+IEVyZ2Vibmlzc2UgcHJvIFNlaXRlIjsNICAgICAgCQkJfQ0gICAgICAJCX0NDS8vICAgICAgCQlpZigkdHJlZmZlciAmJiAkZm91bmQgPiAxICYmICRvciA9PT0gZmFsc2UpIHsgDQkgICAgICAJaWYoJHRyZWZmZXIgJiYgJGZvdW5kID4gMSkgeyANICAgICAgCQkJaWYgKGlzc2V0KCRzb3J0dHh0KSl7DSAgICAgIAkJCQkkc29ydGhpbndlaXMgPSAkc29ydHR4dDsNICAgICAgCQkJfSBlbHNlIHsNICAgICAgCQkJCSRzb3J0aGlud2VpcyA9ICIsIHNvcnRpZXJ0IG5hY2ggW0FuemFobCZuYnNwO2RlciZuYnNwO1RyZWZmZXImbmJzcDtwcm8mbmJzcDtEb2t1bWVudF0iOw0gICAgICAJCQl9DSAgICAgIAkJfSANCQkJZWNobyAiJHNvcnRoaW53ZWlzLiI7DSAgICAgIH0NICAgICAgZWNobyAiPC9wPiI7DQ0vLyBOZXVlcyBGZW5zdGVyDWlmICgkdGFyZ2V0ID09ICIiICYmICR0YXJnZXR3YWhsID09IHRydWUpIHsNZWNobycNPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPg0vKiA8IVtDREFUQVsgKi8NaWYoZG9jdW1lbnQuY29va2llLmluZGV4T2YoXCdzdWNob2VmZm5lblwnKSAhPT0gLTEpew0gICBhZGRFdmVudCh3aW5kb3csIFwnbG9hZFwnLCBsaW5rb3BlbmVyKTsNICAgZG9jdW1lbnQud3JpdGUgKFwnPGZvcm0gYWN0aW9uPSIiPjxwIGNsYXNzPSJsaW5rb3BlbmVyIj48aW5wdXQgdHlwZT0iY2hlY2tib3giIGNoZWNrZWQ9ImNoZWNrZWQiIG9uY2hhbmdlPSJsaW5rY29va2llKCkiIG9uY2xpY2s9ImxpbmtvcGVuZXIodGhpcy5jaGVja2VkKSIgaWQ9ImxpbmtzbmV3d2luMSIgLz4gPGxhYmVsIGZvcj0ibGlua3NuZXd3aW4xIj5UcmVmZmVyIGluIG5ldWVtIEZlbnN0ZXIgJm91bWw7ZmZuZW4/IDxcL2xhYmVsPjxcL3A+PFwvZm9ybT5cJyk7DX0gZWxzZSB7DSAgIGRvY3VtZW50LndyaXRlIChcJzxmb3JtIGFjdGlvbj0iIj48cCBjbGFzcz0ibGlua29wZW5lciI+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBvbmNoYW5nZT0ibGlua2Nvb2tpZSgpIiBvbmNsaWNrPSJsaW5rb3BlbmVyKHRoaXMuY2hlY2tlZCkiIGlkPSJsaW5rc25ld3dpbjEiIC8+IDxsYWJlbCBmb3I9ImxpbmtzbmV3d2luMSI+VHJlZmZlciBpbiBuZXVlbSBGZW5zdGVyICZvdW1sO2ZmbmVuPyA8XC9sYWJlbD48XC9wPjxcL2Zvcm0+XCcpOw19DS8qIF1dPiAqLw08L3NjcmlwdD4NJzsNfQ0NICAgICAgICAgICAgJGxpc3RfYXJ0PSJ1bCI7DSAgICAgICAgICAgIGlmICgkbnVtX2xpc3QpJGxpc3RfYXJ0PSJvbCBzdGFydD0kbmV4dCI7DQ0gICAgICAgICAgICAvLyB1bSBYTUwgRmVobGVyIChIVE1MIFRpZHkgV2FybnVuZ2VuKSB6dSB1bnRlcmJpbmRlbjoNICAgICAgICAgICAgLy8gaHR0cDovL3d3dy50aW1yZWV2ZXMuZGUvbmV1L3dlYmRlc2lnbi93ZWItMjAucGhwDSAgICAgICAgICAgICRzdWNobXVzdGVyID0gJy8mKD8hKFthLXpBLVpdezIsN318I1xkK3wjeFswLTlhLWZBLUZdKyk7KS9pJzsNICAgICAgICAgICAgJGVyc2V0enVuZyA9ICcmYW1wOyc7DSAgICAgICAgICAgICRhdXNnYWJlID0gcHJlZ19yZXBsYWNlKCRzdWNobXVzdGVyLCAkZXJzZXR6dW5nLCAkYXVzZ2FiZSk7DQ0gICAgICAgICAgICBpZiAoJGlmcmFtZSAhPT0gdHJ1ZSkgeyANICAgICAgICAgICAgICAgaWYgKCRudW1fbGlzdCkgew0gICAgICAgICAgICAgICAgICBlY2hvICJcbjxvbCBzdGFydD0nIi4kbmV4dDEuIic+XG4iLiRhdXNnYWJlLiI8L29sPlxuIjsNICAgICAgICAgICAgICAgfSBlbHNlIHsNICAgICAgICAgICAgICAgICAgZWNobyAiXG48dWw+XG4iLiRhdXNnYWJlLiI8L3VsPlxuIjsNICAgICAgICAgICAgICAgfQ0gICAgICAgICAgICB9IGVsc2Ugew0gICAgICAgICAgICAgICBlY2hvICJcbiIuJGF1c2dhYmUuIlxuIjsNICAgICAgICAgICAgfQ0NICAgICAgaWYgKCRuZXh0IDwgKCRmb3VuZCAtICRhbnpfZGF0KSkgew0gICAgICANICAgICAgICAgaWYgKCRtZXRob2QgPT0gIkdFVCIpIHsNICAgICAgICAgICAgLy9uZXh0IHJhdXMsIHdlaWxzIHNvbnN0IHgtbWFsIGFuZ2VoYWVuZ3Qgd2lyZDoNICAgICAgICAgICAgJHF1ZXJ5c3RyaW5nID0gIiI7DSAgICAgICAgICAgIGlmKGlzc2V0KCRfU0VSVkVSWyJRVUVSWV9TVFJJTkciXSkpIHsgDSAgICAgICAgICAgICAgICRxdWVyeXN0cmluZyA9ICRfU0VSVkVSWyJRVUVSWV9TVFJJTkciXTsgDSAgICAgICAgICAgICAgICRmaXJzdHF1ZXJ5ID0gc3RycG9zKCRxdWVyeXN0cmluZywiJm5leHQiKTsNICAgICAgICAgICAgICAgaWYgKCRmaXJzdHF1ZXJ5ICE9PSBmYWxzZSkgeyANICAgICAgICAgICAgICAgICAgJHF1ZXJ5c3RyaW5nID0gc3Vic3RyKCRxdWVyeXN0cmluZywwLCRmaXJzdHF1ZXJ5KTsgDSAgICAgICAgICAgICAgIH0NICAgICAgICAgICAgfQ0gICAgICAgICAgICAkcXVlcnlzdHJpbmcgPSBzdHJfcmVwbGFjZSgiJiIsIiZhbXA7IiwkcXVlcnlzdHJpbmcpOw0gICAgICAgICAgICBlY2hvICc8cCBjbGFzcz0id2VpdGVyIj48YSBocmVmPSInLmJhc2VuYW1lKCRfU0VSVkVSWyJQSFBfU0VMRiJdKS4nPycuJHF1ZXJ5c3RyaW5nLicmYW1wO25leHQ9Jy4kd2VpdGVyLiciPicuJHdlaXRlcnR4dC4nPC9hPjwvcD4nOw0gICAgICAgICB9DSAgICAgIH0NCX0NfQ0NDWVsc2Uge2VjaG8gJG1pbmxlbmd0aDt9DX0NDWVjaG8gJHNlYXJjaHRpcDsNDSRtdGltZSA9IG1pY3JvdGltZSgpOyAkbXRpbWUgPSBleHBsb2RlKCAnICcsICRtdGltZSk7ICRtdGltZSA9ICRtdGltZVsxXSArICRtdGltZVswXTsNJHN1Y2hfZW5kZSA9ICRtdGltZTsNJHRpbWVfZ2VzYW10ID0gJHN1Y2hfZW5kZSAtICRzdWNoX3N0YXJ0Ow0NZWNobyAiPGRpdiBpZD1cInNlYXJjaGZvb3RlclwiPjxwPiI7DQ1pZiAoaXNzZXQoJGFuemFobGRhdCkpew0JJHpkYXQgPSAkYW56YWhsZGF0Ow0JfSBlbHNlIHsNCSR6ZGF0ID0gIkFuemFobCBkdXJjaHN1Y2h0ZXIgRGF0ZWllbjogIjsNfQ0NaWYgKCR6YWhsemVpZyAmJiAkZm91bmQgPiAwKSBlY2hvICR6ZGF0LiRkdXJjaHN1Y2h0LiI8YnIgLz4iOw0NaWYgKCRmb3VuZCA+IDApIHsNCWlmIChpc3NldCgkdGltZXR4dCkpew0JCSR0aW1laGlud2VpcyA9ICR0aW1ldHh0Ow0JfSBlbHNlIHsNCQkkdGltZWhpbndlaXMgPSAiU3VjaGUgYXVzZ2VmJnV1bWw7aHJ0IGluICI7DQl9DQ0JaWYoJGRhdWVyKSB7DQkgICAgICBlY2hvICIkdGltZWhpbndlaXMiLm51bWJlcl9mb3JtYXQoJHRpbWVfZ2VzYW10LDIsJywnLCcuJykuIiAkc3VjaGRhdWVyICR2ZXJzaW9uXG4iOw0JfSBlbHNlIHsNCSAgICAgIGVjaG8gIlxuJHZlcnNpb25cbiI7DQl9DX0gZWxzZSB7DSAgICAgIGVjaG8gIlxuJHZlcnNpb25cbiI7DX0NZWNobyAiPC9wPjwvZGl2PiI7DWVjaG8gJHdkdzs=";@eval(base64_decode($NCiR0aW1lX29sZCA9IDA7IC8vIGb8ciBkaWUgRm9ydHNjaHJpdHRzYW56ZWlnZQNCiR0aW1lX29sZCA9IDA7IC8vIGb8ciBkaWUgRm9ydHNjaHJpdHRzYW56ZWlnZQ));?>
