Menu

DBGp - Unable to map filename xxxxxx

2008-02-05
2012-11-14
  • Nobody/Anonymous

    Hey ya!

    Excuse me for requesting some help, but I have strange behaviours when i'm using DBGp...
    I've installed the xdebbug plugin under my EASYPHP package, the plugin is working...
    I've installed the last version of notepad++, with DBGp plugin...

    I've configured DBGp as this

    Remote server Ip      IDE KEY   Remote path                              Local Path
    localhost                       C:\Jp\EasyPhp\www\lolita\                C:\Jp\EasyPhp\www\lolita\

    When i start to run my page notepad++ blinks but when i focus it, i have this error
    "Unable to ma filename C:\Jp\EasyPhp\www\lolita\index.php (ip: 127.0.0.1 idekey: default) unix: false"

    Strang thing is if i change localhost to 127.0.0.1, notepad blinks, no error but no stop on breakpoint ...

    Any ideas?

     
    • Damjan Cvetko

      Damjan Cvetko - 2008-02-05

      Hi.

      The correct configuration is 127.0.0.1 not localhost.  The plugin does not do any resolves.

      If if blinks, it's connected. If it doesn't stop on any breakpoint then it could be a Xdebug problem. Have you set it up as zend_extension? If not, breakpoints and other neat stuff doesn't work.

      Best
      -Zobo

       
    • Nobody/Anonymous

      Here is the content of RAW DBGp plugin version is 0.0.6.8

      if you need screencaps or files you can mail me at : jpsiffert[AT] the google mail system [DOT] com

      Accept: 127.0.0.1
      Recv: <?xml version="1.0" encoding="iso-8859-1"?>
      <init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" fileuri="file:///c:/jp/easyphp/www/lolita/index.php" language="PHP" protocol_version="1.0" appid="1572" idekey="default"><engine version="2.0.2"><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[http://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2007 by Derick Rethans]]></copyright></init>
      Send: feature_set -i 1 -n max_depth -v 3
      Send: feature_set -i 2 -n max_children -v 15
      Send: breakpoint_set -i 3 -t line -f file:///C:\JP\EasyPHP\www\lolita\index.php -n 11 -s enabled -h 0 -o >=
      Send: breakpoint_list -i 4
      Send: step_into -i 5
      ----
      Recv: <?xml version="1.0" encoding="iso-8859-1"?>
      <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="1" feature="max_depth" success="1"></response>
      Recv: <?xml version="1.0" encoding="iso-8859-1"?>
      <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="2" feature="max_children" success="1"></response>
      Recv: <?xml version="1.0" encoding="iso-8859-1"?>
      <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="3" state="enabled" id="15720001"></response>
      Recv: <?xml version="1.0" encoding="iso-8859-1"?>
      <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="breakpoint_list" transaction_id="4"><breakpoint type="line" filename="file:///C:/JP/EasyPHP/www/lolita/index.php" lineno="11" state="enabled" hit_count="0" hit_condition="&gt;=" hit_value="0" id="15720001"></breakpoint></response>
      ----
      Accept: 127.0.0.1
      Recv: <?xml version="1.0" encoding="iso-8859-1"?>
      <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="5" status="stopped" reason="ok"></response>
      Send: run -i 6
      ----
      Recv: <?xml version="1.0" encoding="iso-8859-1"?>
      <init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" fileuri="file:///c:/jp/easyphp/www/lolita/css/dyncss.php" language="PHP" protocol_version="1.0" appid="1572" idekey="default"><engine version="2.0.2"><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[http://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2007 by Derick Rethans]]></copyright></init>
      Send: source -i 1 -f file:///c:/jp/easyphp/www/lolita/css/dyncss.php
      Send: feature_set -i 2 -n max_depth -v 3
      Send: feature_set -i 3 -n max_children -v 15
      Send: breakpoint_set -i 4 -t line -f file:///C:\JP\EasyPHP\www\lolita\index.php -n 11 -s enabled -h 0 -o >=
      Send: breakpoint_list -i 5
      Send: step_into -i 6
      ----
      Recv: <?xml version="1.0" encoding="iso-8859-1"?>
      <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="source" transaction_id="1" encoding="base64"><![CDATA[PD8NCiAgCWhlYWRlcignQ29udGVudC10eXBlOiB0ZXh0L2NzczsgY2hhcnNldD11dGYtOCcpOw0KDQovKg0KIAlyZXF1aXJlKCcuL2xpYi9iYXNlLmluYycpOw0KDQoJJHNtYXJ0eS0+dGVtcGxhdGVfZGlyPScuL2Nzcy8nOw0KDQoJaWYoaXNzZXQoJF9HRVRbJ3BhZ2VHJ10pKQ0KCQkkc21hcnR5LT5kaXNwbGF5KCdzaXRlXycuJF9HRVRbJ3BhZ2VHJ10uJy5jc3MnKTsNCgllbHNlaWYoaXNzZXQoJF9HRVRbJ3BhZ2UnXSkpDQoJCSRzbWFydHktPmRpc3BsYXkoJF9HRVRbJ3BhZ2UnXS4nL3NpdGVfJy4kX0dFVFsncGFnZSddLicuY3NzJyk7DQoJCQ0KKi8NCg0KCWlmKGlzc2V0KCRfR0VUWydwYWdlRyddKSkNCgkJaW5jbHVkZSgnLi9zaXRlXycuJF9HRVRbJ3BhZ2VHJ10uJy5jc3MnKTsNCgllbHNlaWYoaXNzZXQoJF9HRVRbJ3BhZ2UnXSkpDQoJCWluY2x1ZGUoJy4vJy4kX0dFVFsncGFnZSddLicvc2l0ZV8nLiRfR0VUWydwYWdlJ10uJy5jc3MnKTsNCg0KPz4NCg==]]></response>
      ----
      Recv: <?xml version="1.0" encoding="iso-8859-1"?>
      <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="2" feature="max_depth" success="1"></response>
      Recv: <?xml version="1.0" encoding="iso-8859-1"?>
      <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="3" feature="max_children" success="1"></response>
      Recv: <?xml version="1.0" encoding="iso-8859-1"?>
      <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="4" state="enabled" id="15720001"></response>
      Recv: <?xml version="1.0" encoding="iso-8859-1"?>
      <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="breakpoint_list" transaction_id="5"><breakpoint type="line" filename="file:///C:/JP/EasyPHP/www/lolita/index.php" lineno="11" state="enabled" hit_count="0" hit_condition="&gt;=" hit_value="0" id="15720001"></breakpoint></response>
      Recv: <?xml version="1.0" encoding="iso-8859-1"?>
      <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="6" status="stopped" reason="ok"></response>
      Send: run -i 7
      ----
      Disconnect: 127.0.0.1
      Disconnect: 127.0.0.1
      Accept: 127.0.0.1
      Recv: <?xml version="1.0" encoding="iso-8859-1"?>
      <init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" fileuri="file:///c:/jp/easyphp/www/lolita/css/dyncss.php" language="PHP" protocol_version="1.0" appid="1572" idekey="default"><engine version="2.0.2"><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[http://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2007 by Derick Rethans]]></copyright></init>
      Send: source -i 1 -f file:///c:/jp/easyphp/www/lolita/css/dyncss.php
      Send: feature_set -i 2 -n max_depth -v 3
      Send: feature_set -i 3 -n max_children -v 15
      Send: breakpoint_set -i 4 -t line -f file:///C:\JP\EasyPHP\www\lolita\index.php -n 11 -s enabled -h 0 -o >=
      Send: breakpoint_list -i 5
      Send: step_into -i 6
      ----
      Recv: <?xml version="1.0" encoding="iso-8859-1"?>
      <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="source" transaction_id="1" encoding="base64"><![CDATA[PD8NCiAgCWhlYWRlcignQ29udGVudC10eXBlOiB0ZXh0L2NzczsgY2hhcnNldD11dGYtOCcpOw0KDQovKg0KIAlyZXF1aXJlKCcuL2xpYi9iYXNlLmluYycpOw0KDQoJJHNtYXJ0eS0+dGVtcGxhdGVfZGlyPScuL2Nzcy8nOw0KDQoJaWYoaXNzZXQoJF9HRVRbJ3BhZ2VHJ10pKQ0KCQkkc21hcnR5LT5kaXNwbGF5KCdzaXRlXycuJF9HRVRbJ3BhZ2VHJ10uJy5jc3MnKTsNCgllbHNlaWYoaXNzZXQoJF9HRVRbJ3BhZ2UnXSkpDQoJCSRzbWFydHktPmRpc3BsYXkoJF9HRVRbJ3BhZ2UnXS4nL3NpdGVfJy4kX0dFVFsncGFnZSddLicuY3NzJyk7DQoJCQ0KKi8NCg0KCWlmKGlzc2V0KCRfR0VUWydwYWdlRyddKSkNCgkJaW5jbHVkZSgnLi9zaXRlXycuJF9HRVRbJ3BhZ2VHJ10uJy5jc3MnKTsNCgllbHNlaWYoaXNzZXQoJF9HRVRbJ3BhZ2UnXSkpDQoJCWluY2x1ZGUoJy4vJy4kX0dFVFsncGFnZSddLicvc2l0ZV8nLiRfR0VUWydwYWdlJ10uJy5jc3MnKTsNCg0KPz4NCg==]]></response>
      Recv: <?xml version="1.0" encoding="iso-8859-1"?>
      <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="2" feature="max_depth" success="1"></response>
      Recv: <?xml version="1.0" encoding="iso-8859-1"?>
      <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="3" feature="max_children" success="1"></response>
      Recv: <?xml version="1.0" encoding="iso-8859-1"?>
      <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="4" state="enabled" id="15720002"></response>
      Recv: <?xml version="1.0" encoding="iso-8859-1"?>
      <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="breakpoint_list" transaction_id="5"><breakpoint type="line" filename="file:///C:/JP/EasyPHP/www/lolita/index.php" lineno="11" state="enabled" hit_count="0" hit_condition="&gt;=" hit_value="0" id="15720002"></breakpoint></response>
      Recv: <?xml version="1.0" encoding="iso-8859-1"?>
      <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="6" status="stopped" reason="ok"></response>
      Send: run -i 7
      ----
      Disconnect: 127.0.0.1
      Accept: 127.0.0.1
      Recv: <?xml version="1.0" encoding="iso-8859-1"?>
      <init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" fileuri="file:///c:/jp/easyphp/www/lolita/ajax.php" language="PHP" protocol_version="1.0" appid="1572" idekey="default"><engine version="2.0.2"><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[http://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2007 by Derick Rethans]]></copyright></init>
      Send: source -i 1 -f file:///c:/jp/easyphp/www/lolita/ajax.php
      Send: feature_set -i 2 -n max_depth -v 3
      Send: feature_set -i 3 -n max_children -v 15
      Send: breakpoint_set -i 4 -t line -f file:///C:\JP\EasyPHP\www\lolita\index.php -n 11 -s enabled -h 0 -o >=
      Send: breakpoint_list -i 5
      Send: step_into -i 6
      ----
      ----
      ----
      ----
      Recv: <?xml version="1.0" encoding="iso-8859-1"?>
      <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="source" transaction_id="1" encoding="base64"><![CDATA[PD9waHANCgkvLyBQb3VyIGZvcmNlciBsYSBib25uZSBpbnRlcnByZXRhdGlvbiBkZXMgY2FyYWN0w6hyZXMNCgloZWFkZXIoIkNvbnRlbnQtVHlwZTogdGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Iik7DQoNCglyZXF1aXJlX29uY2UoJy4vbGliL2Jhc2UuaW5jJyk7DQoNCi8vCSRzbWFydHktPnRlbXBsYXRlX2Rpcj0kbW90Wyd0cGxfcGF0aCddLidfX2FkbWluX18vJzsNCg0KCWZ1bmN0aW9uIGFsZXJ0QWpheCgkdHh0LCRpPTEpew0KCQlpZigkaT09MSkNCgkJCWVjaG8gImFsZXJ0KCciLmFkZHNsYXNoZXMoJHR4dCkuIicpOyI7DQoJCWVsc2UNCgkJCWVjaG8gIm5ldyBJbnNlcnRpb24uQm90dG9tKCdpYycsJyIuYWRkc2xhc2hlcygkdHh0KS4iJyk7IjsNCgl9DQoNCg0KCWZ1bmN0aW9uIGVudm95ZXJNYWlsKCRtYWlsLCRtZW1icmUpew0KCSAgICBnbG9iYWwgJHNtYXJ0eTsNCgkJJHNtYXJ0eS0+YXNzaWduKCdtZW1icmUnLCRtZW1icmUpOw0KCQkkc21hcnR5LT5hc3NpZ24oJ3Byb2ZpbF9tb2RpZmljYXRpb25fbWFpbCcsdHJ1ZSk7DQoJCSRtZXNzYWdlPSRzbWFydHktPmZldGNoKCcuL19fYWRtaW5fXy9zaXRlX19fYWRtaW5fX3ByZXNlbnRhdGlvbnMuJy5UUExfRVhUKTsNCgkJJGhlYWRlcnM9IiI7DQoJCSRoZWFkZXJzLj0iRk9STTogd2VibWFzdGVyQGFzc29jaWF0aW9uLWxvbGl0YS5jb21cbiI7DQoJCSRoZWFkZXJzLj0iQ29udGVudC1UeXBlOiB0ZXh0L2h0bWw7IGNoYXJzZXQ9aXNvLTg4NTktMSI7DQoNCgkJbWFpbCgkbWFpbCwnVG9uIHByb2ZpbCBlbiBsaWduZSDDoCBsYSBMT0xJVEEnLCRtZXNzYWdlLCRoZWFkZXJzKTsNCgl9DQoNCglpZighaXNzZXQoJF9SRVFVRVNUWydhY3Rpb24nXSkpDQoJCWJvdWdlX2RlX2xhKCcuLycpOwkJDQoJJHNhaXNvbl9jb3VyYW50ZT0kZGItPlNlbGVjdEZpcnN0KCdzZWxlY3QgKiBmcm9tIHRfc2Fpc29ucyB3aGVyZSBzYWlzb25fY291cmFudGU9MScpOw0KCSRzbWFydHktPmFzc2lnbignc2Fpc29uX2NvdXJhbnRlJywkc2Fpc29uX2NvdXJhbnRlKTsNCg0KCXN3aXRjaCgkX1JFUVVFU1RbJ2FjdGlvbiddKXsNCgkgICAgY2FzZSAnZHluJzoNCgkgICAgCXN3aXRjaCgkX1JFUVVFU1RbJ3doYXQnXSl7DQoJICAgIAkgICAgY2FzZSAncGljJzoNCgkgICAgCSAgICANCgkgICAgCSAgICAgICAgJHR5cGU9JF9HRVRbJ2ltYWdlX3R5cGUnXTsNCgkJCQkJDQoJCQkJCWlmICgkdHlwZT09MCkgJHR5cGU9MTsNCgkgICAgCSAgICAgICAgDQoJICAgIAkgICAgICAgICRzcWw9J3NlbGVjdCBpbWFnZV9pZCxpbWFnZV9leHQgZnJvbSB0X2R5bl9pbWFnZXMgd2hlcmUgaW1hZ2VfdHlwZT0nLiR0eXBlLicgb3JkZXIgYnkgcmFuZCgpIExJTUlUIDEnOw0KDQoJICAgIAkgICAgICAgICRmaXJzdD0kZGItPlNlbGVjdEZpcnN0KCRzcWwpOw0KCSAgICAJICAgICAgICANCgkgICAgCSAgICAgICAgJHBhdGggPSAkcGFyYW1bJ3JlcF9keW4nXS4nL2ltYWdlJy4kZmlyc3RbJ2ltYWdlX2lkJ10uJy4nLiRmaXJzdFsnaW1hZ2VfZXh0J107DQoJICAgIAkgICAgICAgIA0KCQkJCQloZWFkZXIoIkNvbnRlbnQtVHlwZTogaW1hZ2UvIi4kZmlyc3RbJ2ltYWdlX2V4dCddKTsNCgkJCQkJDQoJCQkJCSRmZCA9IGZvcGVuKCRwYXRoLCdyJyk7DQoJCQkJCQl3aGlsZSAoIWZlb2YoJGZkKSkgew0KCQkJCQkJJGJ1ZmZlciA9IGZnZXRzKCRmZCwgNDA5Nik7DQoJCQkJCQllY2hvICRidWZmZXI7DQoJCQkJCX0NCgkJCQkJZmNsb3NlICgkZmQpOw0KCQkJCQkNCgkgICAgCSAgICAgICAgYnJlYWs7DQoJICAgICAgICAgICAgY2FzZSAnY2FwdHVyZSc6DQoJCQkJCSRzbWFydHktPmFzc2lnbigncHJlc2VudGF0aW9uRHluYW1pcXVlJywkX1BPU1RbJ2NhcHR1cmUnXSk7DQoJCQkJCSRzbWFydHktPmRpc3BsYXkoJy4vX19hZG1pbl9fL3NpdGVfX19hZG1pbl9fcHJlc2VudGF0aW9uLicuVFBMX0VYVCk7DQoJICAgICAgICAgICAgICAgIGJyZWFrOw0KCSAgICAgICAgICAgIGNhc2UgJ2NvbWJvLXRlYW0tbGlzdCc6DQoJICAgICAgICAgICAgDQoJICAgICAgICAgICAgaWYoJF9QT1NUWydzYWlzb25faWQnXSE9Jycpew0KCQkgICAgICAgICAgICAkc3FsPScNCgkJCQkJCXNlbGVjdCAqIGZyb20gdF9lcXVpcGVzIGFzIHRfZQ0KCQkJCQkJaW5uZXIgam9pbiB0X2xpZW5zX2VzDQoJCQkJCQlVU0lORyhlcXVpcGVfaWQpDQoJCQkJCQlXSEVSRSBzYWlzb25faWQ9Jy4kX1BPU1RbJ3NhaXNvbl9pZCddOw0KDQoJCSAgICAgICAgICAgICR0ZWFtcz0kZGItPlNlbGVjdEFsbEJ5KCRzcWwsJ2VxdWlwZV9pZCcpOw0KCQkJCX0NCgkJCQllbHNlDQoJCQkJICAgICR0ZWFtcz1hcnJheSgpOw0KCQkJCSAgICANCgkJCQllY2hvICINCgkJCQkgICAgdmFyIGNvbWJvID0gJCgnJF9QT1NUW3RhcmdldF0nKTsNCgkJCQkgICAgY29tYm8ub3B0aW9ucy5sZW5ndGg9MDsNCgkJCQkgICAgdmFyIGRlZj0wOw0KCQkJCSAgICB2YXIgdmFsZXVyPTA7DQoJCQkJCSI7DQoJCQkJJG9wdGlvbnM9Jyc7DQoJCQ0KCQkJCWlmKCRfUE9TVFsndmFsTnVsbCddPT10cnVlKQ0KCQkJCQkkb3B0aW9ucy49J2NvbWJvLm9wdGlvbnNbY29tYm8ub3B0aW9ucy5sZW5ndGhdPW5ldyBPcHRpb24oIi0iLCIwIix0cnVlLHRydWUpOyc7DQoJCQkJDQoJCQkJZm9yZWFjaCgkdGVhbXMgYXMgJGlkPT4kdGVhbSl7DQoJCQkJICAgICRvcHRpb25zLj0nY29tYm8ub3B0aW9uc1tjb21iby5vcHRpb25zLmxlbmd0aF09bmV3IE9wdGlvbigiJy4kdGVhbVtlcXVpcGVfbm9tXS4nIiwiJy4kaWQuJyIsJy4oJGlkPT0kX1BPU1RbJ2RlZlZhbHVlJ10/ICd0cnVlLHRydWUnIDonZmFsc2UsZmFsc2UnKS4nKTsnOw0KCQkJCSAgICBpZigkaWQ9PSRfUE9TVFsnZGVmVmFsdWUnXSkNCgkJCQkgICAgCSRvcHRpb25zLj0nDQoJCQkJCQkJZGVmPWNvbWJvLm9wdGlvbnMubGVuZ3RoLTE7DQoJCQkJCQkJdmFsZXVyPScuJGlkLic7DQoJCQkJCQknOw0KCQkJCQkvLyRvcHRpb25zLj0oJGlkPT0kX1BPU1RbJ2RlZlZhbHVlJ10gPyAnY29tYm8ub3B0aW9ucy5zZWxlY3RlZEluZGV4PWNvbWJvLm9wdGlvbnMubGVuZ3RoOyc6JycpOw0KCQkJCSAgICB9DQoNCgkJCQlpZigkb3B0aW9ucz09JycpDQoJCQkJICAgICRvcHRpb25zPSdjb21iby5vcHRpb25zW2NvbWJvLm9wdGlvbnMubGVuZ3RoXT1uZXcgT3B0aW9uKCJBdWN1bmUiLCIiLHRydWUsdHJ1ZSk7JzsNCgkJCQllbHNlDQoJCQkJCSRvcHRpb25zLj0nDQoJCQkJCQljb21iby5zZWxlY3RlZEluZGV4PWRlZjsNCgkJCQkJCWNvbWJvLnZhbHVlPXZhbGV1cjsnOw0KCQkJCQkNCgkJCQllY2hvICRvcHRpb25zOw0KDQoJICAgICAgICAgICAgYnJlYWs7DQoJICAgICAgICB9DQoJICAgICAgICANCgkgICAgICAgIGJyZWFrOw0KCQljYXNlICd0ZXN0JzoNCgkJCQ0KCQkJYnJlYWs7DQoJCWNhc2UgJ2dyb3VwQWRkJzoNCgkJCSR2YWwJPSRfUE9TVFsndmFsJ107DQoJCQkkb2JqSWQJPSRfUE9TVFsnb2JqSWQnXTsNCgkJCQ0KCQkJZWNobyAiDQoJCQkJaWYob2JqPWdldE9iaignIi4kb2JqSWQuIicpKXsNCgkJCQkJcmVzZXRGaWVsZFByZXNlbnRhdGlvbihvYmopOw0KCQkJCSI7DQoJCQkNCgkJCWlmKCR2YWw9PScnKXsNCgkJCQ0KCQkJCWVjaG8gIg0KCQkJCQlzZXRBdHRyaWJ1dGUob2JqLCdvdGl0bGUnLG9iai50aXRsZSk7DQoJCQkJCXNldEF0dHJpYnV0ZShvYmosJ3RpdGxlJywnIi4kbW90WydFUlJfRklFTERfUkVRVUlSRUQnXS4iJyk7DQoJCQkJCXNldENsYXNzTmFtZShvYmosJ2ZpZWxkX3JlcXVpcmVkJyk7DQoJCQkJCW9iai5mb2N1cygpOw0KCQkJCQkiOw0KCQkJfQ0KCQkJZWxzZXsNCgkJCQkkc3FsPSdzZWxlY3QgY291bnQoKikgZnJvbSB0X2dyb3VwcyB3aGVyZSBncm91cF9uYW1lPSInLiR2YWwuJyInOw0KCQkJCWlmKCRkYi0+Q291bnQoJHNxbCk+MCkNCgkJCQkJZWNobyAiDQoJCQkJCQlzZXRBdHRyaWJ1dGUob2JqLCdvdGl0bGUnLG9iai50aXRsZSk7DQoJCQkJCQlzZXRBdHRyaWJ1dGUob2JqLCd0aXRsZScsJyIuJG1vdFsnRVJSX0dST1VQX0VYSVNUUyddLiInKTsNCgkJCQkJCWFkZENsYXNzTmFtZShvYmosJ2ZpZWxkX2luX2Vycm9yJyk7DQoJCQkJCQlvYmouZm9jdXMoKTsNCgkJCQkJIjsNCgkJCQllbHNlew0KCQkJCQllY2hvICINCgkJCQkJCWJsaW5rU3R5bGUob2JqLCdmaWVsZF9vaycpOw0KCQkJCQkiOw0KCQkJCX0NCgkJCX0NCgkJCWVjaG8gIg0KCQkJfSAvLyBmaW4gaWYoaXNPYmoob2JqKSkNCgkJCWVsc2UNCgkJCQlhbGVydCgncGFzIHVuIG9iaicrIi4kb2JqSWQuIik7DQoJCQkiOw0KCQkNCgkJY2FzZSAnY2hlY2tGaWVsZCc6DQoJCQkkdmFsCT0kX1BPU1RbJ3ZhbCddOw0KCQkJJG9iaklkCT0kX1BPU1RbJ29iaklkJ107DQoJCQkkb2JsaWcJPSRfUkVRVUVTVFsnb2JsaWcnXTsNCgkJCSRtYXgJPSRfUkVRVUVTVFsnbWF4J107DQoJCQkkbWluCT0kX1JFUVVFU1RbJ21pbiddOw0KDQoJCQllY2hvICINCgkJCQlpZihvYmo9Z2V0T2JqKCciLiRvYmpJZC4iJykpew0KCQkJCQlyZXNldEZpZWxkUHJlc2VudGF0aW9uKG9iaik7DQoJCQkJIjsNCgkJCQ0KCQkJaWYoaXNzZXQoJG9ibGlnKSAmJiBzdHJfcmVwbGFjZSgnICcsJycsJHZhbCk9PScnKXsNCgkJCQllY2hvICINCgkJCQkJc2V0QXR0cmlidXRlKG9iaiwnb3RpdGxlJyxvYmoudGl0bGUpOw0KCQkJCQlzZXRBdHRyaWJ1dGUob2JqLCd0aXRsZScsJyIuJG1vdFsnRVJSX0ZJRUxEX1JFUVVJUkVEJ10uIicpOw0KCQkJCQlzZXRDbGFzc05hbWUob2JqLCdmaWVsZF9yZXF1aXJlZCcpOw0KCQkJCQlvYmouZm9jdXMoKTsNCgkJCQkJIjsNCgkJCX0NCgkJCWVsc2UgaWYoaXNzZXQoJG1pbikgJiYgc3RybGVuKCR2YWwpPCRtaW4pew0KCQkJCWVjaG8gIg0KCQkJCQlzZXRBdHRyaWJ1dGUob2JqLCdvdGl0bGUnLG9iai50aXRsZSk7DQoJCQkJCXNldEF0dHJpYnV0ZShvYmosJ3RpdGxlJywnIi4kbW90WydFUlJfRklFTERfVE9PX1NIT1JUJ10uIicpOw0KCQkJCQlzZXRDbGFzc05hbWUob2JqLCdmaWVsZF9yZXF1aXJlZCcpOw0KCQkJCQlvYmouZm9jdXMoKTsNCgkJCQkJIjsNCgkJCX0NCgkJCWVsc2UgaWYoaXNzZXQoJG1heCkgJiYgc3RybGVuKCR2YWwpPiRtYXgpew0KCQkJCWVjaG8gIg0KCQkJCQlzZXRBdHRyaWJ1dGUob2JqLCdvdGl0bGUnLG9iai50aXRsZSk7DQoJCQkJCXNldEF0dHJpYnV0ZShvYmosJ3RpdGxlJywnIi4kbW90WydFUlJfRklFTERfVE9PX0xPTkcnXS4iJyk7DQoJCQkJCXNldENsYXNzTmFtZShvYmosJ2ZpZWxkX3JlcXVpcmVkJyk7DQoJCQkJCW9iai5mb2N1cygpOw0KCQkJCQkiOw0KCQkJfQ0KCQkJCQkJCQ0KCQkJZWNobyAifTsiOw0KCQkJCQkNCgkJCWJyZWFrOwkNCgkJDQoJCWNhc2UgJ3VzZXInOg0KCQkJDQoJCQkkdmFsCT0kX1BPU1RbJ3ZhbCddOw0KCQkJJG9iaklkCT0kX1BPU1RbJ29iaklkJ107DQoJCQkNCgkJCWVjaG8gIg0KCQkJCWlmKGlzT2JqKG9iaj1nZXRPYmooJyIuJG9iaklkLiInKSkpew0KCQkJCQkNCgkJCQkJcmVzZXRGaWVsZFByZXNlbnRhdGlvbihvYmopOw0KCQkJCSI7DQoNCgkJCQkNCgkJCWlmKCR2YWw9PScnKXsNCgkJCQ0KCQkJCWVjaG8gIg0KCQkJCQlzZXRBdHRyaWJ1dGUob2JqLCdvdGl0bGUnLG9iai50aXRsZSk7DQoJCQkJCXNldEF0dHJpYnV0ZShvYmosJ3RpdGxlJywnIi4kbW90WydFUlJfRklFTERfUkVRVUlSRUQnXS4iJyk7DQoJCQkJCXNldENsYXNzTmFtZShvYmosJ2ZpZWxkX3JlcXVpcmVkJyk7DQoJCQkJCW9iai5mb2N1cygpOw0KCQkJCQkiOw0KCQkJfQ0KCQkJZWxzZXsNCgkJCQkkc3FsPSdzZWxlY3QgY291bnQoKikgZnJvbSB0X3VzZXJzIHdoZXJlIHVzZXJfbG9naW49IicuJHZhbC4nIic7DQoJCQkJaWYoJGRiLT5Db3VudCgkc3FsKT4wKQ0KCQkJCQllY2hvICINCgkJCQkJCXNldEF0dHJpYnV0ZShvYmosJ290aXRsZScsb2JqLnRpdGxlKTsNCgkJCQkJCXNldEF0dHJpYnV0ZShvYmosJ3RpdGxlJywnIi4kbW90WydFUlJfVVNFUl9FWElTVFMnXS4iJyk7DQoJCQkJCQlhZGRDbGFzc05hbWUob2JqLCdmaWVsZF9pbl9lcnJvcicpOw0KCQkJCQkJb2JqLmZvY3VzKCk7DQoJCQkJCSI7DQoJCQkJZWxzZXsNCgkJCQkJZWNobyAiDQoJCQkJCQlibGlua1N0eWxlKG9iaiwnZmllbGRfb2snKTsNCgkJCQkJIjsNCgkJCQl9DQoJCQl9DQoJCQllY2hvICINCgkJCX0gLy8gZmluIGlmKGlzT2JqKG9iaikpDQoJCQllbHNlDQoJCQkJYWxlcnQoJ3BhcyB1biBvYmonKyIuJG9iaklkLiIpOw0KCQkJIjsNCgkJDQoJCWJyZWFrOw0KCQkNCgkJY2FzZSAnZ2VuZXJhdGVQYXNzd29yZCc6DQoNCgkJCSRvYmpJZAk9JF9QT1NUWydvYmpJZCddOw0KDQoJCQllY2hvICINCgkJCQlpZihpc09iaihvYmo9Z2V0T2JqKCciLiRvYmpJZC4iJykpKXsNCgkJCQkNCgkJCQlhbGVydCgnIi4kbW90WydFUlJfUEFTU1dPUkRfUkVRVUlSRUQnXS4iJyk7DQoJCQkJDQoJCQkJb2JqLnZhbHVlPSciLnN1YnN0cih1bmlxaWQocmFuZCgpKSwwLHJhbmQoNywxMCkpLiInOw0KCQkJCQ0KCQkJCSI7DQoJCQkJDQoJCQkNCgkJCQkNCgkJCWVjaG8gIg0KCQkJfSAvLyBmaW4gaWYoaXNPYmoob2JqKSkNCgkJCWVsc2UNCgkJCQlhbGVydCgncGFzIHVuIG9iaicrIi4kb2JqSWQuIik7DQoJCQkiOw0KCQkNCgkJY2FzZSAnc2hvdyc6DQoJCQkkd2hhdD0kX1JFUVVFU1RbJ3doYXQnXTsNCg0KCQkJc3dpdGNoKCR3aGF0KXsNCgkJCSAgICBjYXNlICduZXdzJzoNCgkJCSAgICAgICAgJHNtYXJ0eS0+YXNzaWduKCJuZXdzX2lkIiwkX1BPU1RbJ25ld3NfaWQnXSk7DQoJCQkgICAgICAgIGJyZWFrOw0KCQkJDQoJCQkJY2FzZSAnam91dGV1clByb3AnOg0KCQkJCQkkaWQ9JF9QT1NUWydqb3V0ZXVyX2lkJ107DQoJCQkJCWlmKCFpc19sb2dndWVkKCkgfHwgJGlkIT0kX1NFU1NJT05bJ3VzZXJfaWQnXSl7DQoJCQkJCQkkbWVtYnJlX2lkPSRpZDsNCgkJCQkJCSRfU0VTU0lPTlsnbWVtYnJlX2lkJ109JGlkOw0KCQkJCQkJJF9QT1NUWydtZW1icmVfaWQnXT0kaWQ7DQoJCQkJCQkkc21hcnR5LT5hc3NpZ24oJ2RldGFpbF9qb3V0ZXVyX3dlYicsJGRiLT5zZWxlY3RGaXJzdCgnU2VsZWN0ICogZnJvbSB0X21lbWJyZXMgd2hlcmUgbWVtYnJlX2lkPScuJGlkKSk7DQoJCQkJCQlzZXNzaW9uX3JlZ2lzdGVyKCRtZW1icmVfaWQpOw0KCSAgICAgICAgICAgICAgICAgICAgJHdoYXQ9J21lbWJyZSc7DQoJCQkJCQkkc21hcnR5LT5hc3NpZ24oImRldGFpbCIsdHJ1ZSk7DQoJCQkJCQkkYWZmPSRzbWFydHktPmZldGNoKCcuL19fYWRtaW5fXy9zaXRlX19fYWRtaW5fX3ByZXNlbnRhdGlvbi4nLlRQTF9FWFQpOw0KCQkJCQkJZGllKCRhZmYpOw0KCQkJCQkJYnJlYWs7DQoJCQkJCX0NCgkJCQkJZWxzZXsNCgkJCQkJCSR3aGF0PSdtZW1icmUnOw0KCQkJCQkJJF9QT1NUWydtZW1icmVfaWQnXT0kX1NFU1NJT05bJ3VzZXJfaWQnXTsNCgkJCQkJfQ0KICAgICAgICAgICAgICAgICAgICANCgkJCQljYXNlICdtZW1icmUnOg0KCQkJCQkkaWQ9JF9QT1NUWydtZW1icmVfaWQnXTsNCgkJCQkJJG1lbWJyZV9pZD0kaWQ7DQoJCQkJCSRfU0VTU0lPTlsnbWVtYnJlX2lkJ109JGlkOw0KCQkJCQkNCgkJCQkJJHNtYXJ0eS0+YXNzaWduKCR3aGF0LCRkYi0+c2VsZWN0Rmlyc3QoJ1NlbGVjdCAqIGZyb20gdF9tZW1icmVzIHdoZXJlIG1lbWJyZV9pZD0nLiRpZCkpOw0KCQkJCQkNCgkJCQkJc2Vzc2lvbl9yZWdpc3RlcigkbWVtYnJlX2lkKTsNCgkJCQkJYnJlYWs7DQoNCgkJCQljYXNlICdlcXVpcGUnOg0KCQkJCQkkaWQ9JF9QT1NUWydlcXVpcGVfaWQnXTsJCQkJCQ0KCQkJCQkkbWVtYnJlX2lkPSRpZDsNCgkJCQkJJF9TRVNTSU9OWydlcXVpcGVfaWQnXT0kaWQ7DQoJCQkJCWJyZWFrOyANCg0KCQkJCWNhc2UgJ2NvbXBvc2l0aW9uJzoNCgkJCQkJJGlkPSRfUE9TVFsnbWF0Y2hfaWQnXTsJCQkJCQ0KCQkJCQkkc21hcnR5LT5hc3NpZ24oJ2RldGFpbF9jb21wb19hZG1pbicsJGlkKTsNCgkJCQkJJHNtYXJ0eS0+ZGlzcGxheSgnLi9fX2FkbWluX18vc2l0ZV9fX2FkbWluX19wcmVzZW50YXRpb24uJy5UUExfRVhUKTsNCgkJCQkJYnJlYWs7DQoJCQkJCSANCgkJCQljYXNlICdldG9pbGUnOg0KCQkJCQkkaWQ9JF9QT1NUWydtYXRjaF9pZCddOwkJCQkJDQoJCQkJCSRzbWFydHktPmFzc2lnbignZGV0YWlsX2V0b2lsZV9hZG1pbicsJGlkKTsNCgkJCQkJJHNtYXJ0eS0+ZGlzcGxheSgnLi9fX2FkbWluX18vc2l0ZV9fX2FkbWluX19wcmVzZW50YXRpb24uJy5UUExfRVhUKTsNCgkJCQkJYnJlYWs7DQoNCgkJCQljYXNlICdzdGFmZic6DQoJCQkJCSRpZD0kX1BPU1RbJ21hdGNoX2lkJ107CQkJCQkNCgkJCQkJJHNtYXJ0eS0+YXNzaWduKCdkZXRhaWxfc3RhZmZfYWRtaW4nLCRpZCk7DQoJCQkJCSRzbWFydHktPmRpc3BsYXkoJy4vX19hZG1pbl9fL3NpdGVfX19hZG1pbl9fcHJlc2VudGF0aW9uLicuVFBMX0VYVCk7DQoJCQkJCWJyZWFrOw0KCQkJIA0KCQkJCWNhc2UgJ21hdGNoRGV0YWlsJzoNCgkJCQkJJGlkPSRfUE9TVFsnbWF0Y2hfaWQnXTsJCQ0KCQkJCQkkc3FsPSdzZWxlY3QgKiBmcm9tIHRfZXF1aXBlcyBpbm5lciBqb2luIHRfbWF0Y2hzIG9uIGVxdWlwZV9pZD1tYXRjaF9lcXVpcGVfQSBvciBlcXVpcGVfaWQ9bWF0Y2hfZXF1aXBlX0Igd2hlcmUgbWF0Y2hfaWQ9Jy4kaWQ7DQoJCQkJCSRzbWFydHktPmFzc2lnbignZGV0YWlsX21hdGNoJywkZGItPlNlbGVjdEFsbEJ5KCRzcWwsJ2VxdWlwZV9pZCcpKTsNCgkJCQkJJHNtYXJ0eS0+ZGlzcGxheSgnLi9fX2FkbWluX18vc2l0ZV9fX2FkbWluX19wcmVzZW50YXRpb24uJy5UUExfRVhUKTsNCgkJCQkJYnJlYWs7DQoJCQkJCQ0KCQkJCWRlZmF1bHQ6DQoJCQkJCWVjaG8gIk1vdCBjbMOpICIuJF9SRVFVRVNUWyd3aGF0J10uIiBub24gcsOpZsOpcmVuY8OpIjsNCgkJCX0NCg0KCQkJJHNtYXJ0eS0+YXNzaWduKCJkZXRhaWwiLHRydWUpOw0KCQkJJHNtYXJ0eS0+ZGlzcGxheSgnLi9fX2FkbWluX18vc2l0ZV9fX2FkbWluX19wcmVzZW50YXRpb24uJy5UUExfRVhUKTsNCgkJCSRzbWFydHktPmRpc3BsYXkoIi4vX19hZG1pbl9fL3NpdGVfX19hZG1pbl9fJHdoYXQuIi5UUExfRVhUKTsNCgkJDQoJCQlicmVhazsNCg0KCQljYXNlICdwb3N0JzoNCgkJDQoJCQlzd2l0Y2goJF9SRVFVRVNUWyd3aGF0J10pew0KDQoJCQkgICAgY2FzZSAnc3ViLXVwZGF0ZSc6DQoJCQkgICAgICAgIA0KCQkJICAgICAgICBzd2l0Y2goJF9QT1NUWyd3aWNoJ10pew0KCQkJCQkJY2FzZSAncGFyYW1fZHluJzoNCg0KCQkJCQkJCWZvcmVhY2goJF9QT1NUWydjdXJyJ10gYXMgJGlkPT4kdmFsKXsNCgkJCQkJCQkJaWYoaXNzZXQoJHZhbFsnc2VsZWN0ZWQnXSkpew0KCQkJCQkJCQkJJHNxbC49J0RFTEVURSBmcm9tIHRfZHluX2ltYWdlcyB3aGVyZSBpbWFnZV9pZD0nLiRpZDsNCgkJCQkJCQkJfQ0KCQkJCQkJCX0NCg0KLyoJCQkJCQkJJG5ldz0kZGItPmV4dHJhY3RGaWVsZHMoJF9QT1NULCduZXcnKTsNCg0KCQkJCQkJCWZvcmVhY2goJG5ldyBhcyAka2V5PT4kdmFsKXsNCgkJCQkJCQkJaWYoJHZhbFsncGFyYW1fbmFtZSddIT0nJyAmJiAkdmFsWydwYXJhbV92YWx1ZSddIT0nJykNCgkJCQkJCQkJCSRzcWwuPSdJTlNFUlQgSU5UTyB0X3BhcmFtcyAocGFyYW1fbmFtZSxwYXJhbV92YWx1ZSxwYXJhbV9saWIscGFyYW1fdHlwKSB2YWx1ZXMoIicuJHZhbFsncGFyYW1fbmFtZSddLiciLCInLiR2YWxbJ3BhcmFtX3ZhbHVlJ10uJyIsIicuJHZhbFsncGFyYW1fbGliJ10uJyIsIicuJHZhbFsncGFyYW1fdHlwJ10uJyIpOyc7DQoJCQkJCQkJfQ0KCSovCQkJDQoJCQkJCQkJDQoJCQkJCQkvLwkkZGItPlNlbGVjdCgkc3FsKTsNCg0KCQkJCQkJICAgIGJyZWFrOw0KCQkJCQkJY2FzZSAncGFyYW0nOg0KCQkJCQkJCSRzcWw9J1RSVU5DQVRFIFRBQkxFIHRfcGFyYW1zOyc7DQoJCQkJCQkJaWYoaXNfYXJyYXkoJF9QT1NUWydjdXJyJ10pKQ0KCQkJCQkJCQlmb3JlYWNoKCRfUE9TVFsnY3VyciddIGFzICR2YWwpew0KCQkJCQkJCQkJaWYoIWlzc2V0KCR2YWxbJ3NlbGVjdGVkJ10pKQ0KCQkJCQkJCQkJCSRzcWwuPSdJTlNFUlQgSU5UTyB0X3BhcmFtcyAocGFyYW1fbmFtZSxwYXJhbV92YWx1ZSxwYXJhbV9saWIscGFyYW1fdHlwKSB2YWx1ZXMoIicuJHZhbFsncGFyYW1fbmFtZSddLiciLCInLiR2YWxbJ3BhcmFtX3ZhbHVlJ10uJyIsIicuJHZhbFsncGFyYW1fbGliJ10uJyIsIicuJHZhbFsncGFyYW1fdHlwJ10uJyIpOyc7DQoJCQkJCQkJCX0NCg0KCQkJCQkJCSRuZXc9JGRiLT5leHRyYWN0RmllbGRzKCRfUE9TVCwnbmV3Jyk7DQoNCgkJCQkJCQlmb3JlYWNoKCRuZXcgYXMgJGtleT0+JHZhbCl7DQoJCQkJCQkJCWlmKCR2YWxbJ3BhcmFtX25hbWUnXSE9JycgJiYgJHZhbFsncGFyYW1fdmFsdWUnXSE9JycpDQoJCQkJCQkJCQkkc3FsLj0nSU5TRVJUIElOVE8gdF9wYXJhbXMgKHBhcmFtX25hbWUscGFyYW1fdmFsdWUscGFyYW1fbGliLHBhcmFtX3R5cCkgdmFsdWVzKCInLiR2YWxbJ3BhcmFtX25hbWUnXS4nIiwiJy4kdmFsWydwYXJhbV92YWx1ZSddLiciLCInLiR2YWxbJ3BhcmFtX2xpYiddLiciLCInLiR2YWxbJ3BhcmFtX3R5cCddLiciKTsnOw0KCQkJCQkJCX0NCg0KCQkJCQkJCSRkYi0+U2VsZWN0KCRzcWwpOw0KCQkJCQkJCWJyZWFrOw0KDQoJCQkgICAgICAgICAgICBjYXNlICdlcXVpcGVfbm91dmVhdSc6DQoJCQkgICAgICAgICAgICANCgkJCSAgICAgICAgICAgICAgICBmb3JlYWNoKCRfUE9TVFsnaXRlbSddWydhZGQnXVsnbWVtYnJlX25vbSddIGFzICRrZXk9PiRub20pew0KCQkJICAgICAgICAgICAgICAgICAgICAkaXRlbT0kX1BPU1RbJ2l0ZW0nXVsnYWRkJ107DQoJCQkgICAgICAgICAgICAgICAgICAgIA0KCQkJICAgICAgICAgICAgICAgICAgICAkcHJlbm9tID0gJGl0ZW1bJ21lbWJyZV9wcmVub20nXVska2V5XTsNCgkJCSAgICAgICAgICAgICAgICAgICAgJG1haWwgPSAkaXRlbVsnbWVtYnJlX21haWwnXVska2V5XTsNCgkJCSAgICAgICAgICAgICAgICAgICAgJHB3ZCA9ICRpdGVtWydtZW1icmVfcGFzc3dvcmQnXVska2V5XTsNCgkJCSAgICAgICAgICAgICAgICAgICAgDQoJCQkgICAgICAgICAgICAgICAgICAgICRzcWw9J0lOU0VSVCBJTlRPIHRfbWVtYnJlcyAobWVtYnJlX25vbSxtZW1icmVfcHJlbm9tLG1lbWJyZV9lbWFpbCxtZW1icmVfbWQ1LG1lbWJyZV9sb2dpbiknOw0KCQkJICAgICAgICAgICAgICAgICAgICAkc3FsLj0nIHZhbHVlcygiJy4kbm9tLiciLCInLiRwcmVub20uJyIsIicuJG1haWwuJyInOw0KCQkJCQkJCQkkc3FsLj0nLG1kNSgiJy5HUkFJTl9ERV9TQUJMRS4kcHdkLkdSQUlOX0RFX1NBQkxFLiciKSwiJy4oJG5vbS4nXycuJHByZW5vbSkuJyIpOyc7DQoNCgkJCQkJCQkJJGRiLT5JbnNlcnQoJHNxbCk7DQoJCQkJCQkJCQ0KCQkJCQkJCQkkaWQgPSAkZGItPmxhc3RJZDsNCgkJCQkJCQkJDQoJCQkJCQkJCWlmKCRpZCl7DQoJCQkJCQkJCSAgICAkc2Fpc29uX2lkPSRzYWlzb25fY291cmFudGVbJ3NhaXNvbl9pZCddOw0KCQkJCQkJCQkgICAgJGVxdWlwZV9pZDsNCgkJCQkJCQkJICAgICRzcWw9J0lOU0VSVCBJTlRPIHRfbGllbnNfamVzIChzYWlzb25faWQsZXF1aXBlX2lkLG1lbWJyZV9pZCkgJzsNCgkJCQkJCQkJICAgICRzcWwuPSdWQUxVRVMoIicuJHNhaXNvbl9pZC4nIiwiJy4kX1NFU1NJT05bJ2VxdWlwZV9pZCddLiciLCInLiRpZC4nIik7JzsNCgkJCQkJCQkJICAgIA0KCQkJCQkJCQkgICAgJGRiLT5JbnNlcnQoJHNxbCk7DQoNCgkJCQkJCQkJCWlmKCFlbXB0eSgkbWFpbCkpew0KCQkJCQkJCQkJICAgIGVudm95ZXJNYWlsKCRtYWlsLCRkYi0+U2VsZWN0Rmlyc3QoInNlbGVjdCAqIGZyb20gdF9tZW1icmVzIHdoZXJlIG1lbWJyZV9pZD0kaWQiKSk7DQoJCQkJCQkJCQl9DQoJCQkJCQkJCX0NCgkJCQkJCQl9DQoNCgkJCSAgICAgICAgICAgICAgICBicmVhazsNCgkJCSAgICAgICAgDQoJCQkgICAgICAgICAgICBjYXNlICdqb3V0ZXVyX2xvZ2luJzoNCgkJCSAgICAgICAgICAgIA0KCQkJICAgICAgICAgICAgICAgIGlmKGVtcHR5KCRfUE9TVFsncF9sb2dpbiddKSB8fCBlbXB0eSgkX1BPU1RbJ3BfcHdkJ10pKXsNCgkJCSAgICAgICAgICAgICAgICAgICAgJHdhcm5Mdmw9MzsNCgkJCSAgICAgICAgICAgICAgICAgICAgJHNtYXJ0eS0+YXNzaWduKCd3YXJuTHZsJywkd2Fybkx2bCk7DQoJCQkgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KCQkJCQkJCX0NCg0KCQkJICAgICAgICAgICAgICAgICRzcWw9J1NlbGVjdCBjb3VudCgqKSBhcyBDTlQsbWVtYnJlX2lkIGZyb20gdF9tZW1icmVzIHdoZXJlIG1lbWJyZV9sb2dpbj0iJy4kX1BPU1RbJ3BfbG9naW4nXS4nIiBhbmQgbWVtYnJlX21kNT1tZDUoIicuR1JBSU5fREVfU0FCTEUuJF9QT1NUWydwX3B3ZCddLkdSQUlOX0RFX1NBQkxFLiciKSBncm91cCBieSBtZW1icmVfaWQnOw0KCQkJICAgICAgICAgICAgICAgIA0KCQkJICAgICAgICAgICAgICAgICRyb3c9JGRiLT5TZWxlY3RGaXJzdCgkc3FsKTsNCgkJCSAgICAgICAgICAgICAgICAkbG9nX3Jlc3VsdD0kcm93WydDTlQnXTsNCgkJCSAgICAgICAgICAgICAgICANCgkJCSAgICAgICAgICAgICAgICAkd2Fybkx2bD0xOw0KCQkJICAgICAgICAgICAgICAgIA0KCQkJICAgICAgICAgICAgICAgIGlmKCRsb2dfcmVzdWx0PT0wKXsNCgkJCSAgICAgICAgICAgICAgICAgICAgJF9TRVNTSU9OWydtZW1icmVfbG9naW5fdHJ5J10rKzsNCgkJCSAgICAgICAgICAgICAgICAgICAgJHdhcm5Mdmw9MjsNCgkJCSAgICAgICAgICAgICAgICAgICAgDQoJCQkgICAgICAgICAgICAgICAgICAgIHVuc2V0KCRfU0VTU0lPTlsnbWVtYnJlX2Nvbm5lY3RlZCddKTsNCgkJCQkJCQl9DQoJCQkJCQkJZWxzZXsNCgkJCQkJCQkgICAgJF9TRVNTSU9OWydtZW1icmVfY29ubmVjdGVkJ109JHJvd1snbWVtYnJlX2lkJ107DQoJCQkJCQkJICAgICRzbWFydHktPmFzc2lnbignbWVtYnJlX2Nvbm5lY3RlZCcsJHJvd1snbWVtYnJlX2lkJ10pOw0KCQkJCQkJCX0NCg0KCQkJCQkJCWlmKCRfU0VTU0lPTlsnbWVtYnJlX2xvZ2luX3RyeSddPj0zKQ0KCQkJCQkJCSAgICAkd2Fybkx2bD0xMDsNCg0KCQkJCQkJCSRzbWFydHktPmFzc2lnbignd2Fybkx2bCcsJHdhcm5MdmwpOw0KCQkJICAgICAgICAgICAgICAgIA0KCQkJICAgICAgICAgICAgICAgIGJyZWFrOw0KCQkJICAgICAgICAgICAgY2FzZSAncGxheWVyX2Fzc28nOg0KCQkJICAgCQkJCSRzcWw9Jyc7DQoJCQkgICAJCQkJaWYoaXNfYXJyYXkoJF9QT1NUWydmb25jdGlvbiddWydleGlzdCddKSkNCgkJCQkgICAgICAgICAgICAgICAgZm9yZWFjaCgkX1BPU1RbJ2ZvbmN0aW9uJ11bJ2V4aXN0J10gYXMgJGZvbmN0aW9uX2lkPT4kZm9uY3Rpb24pew0KCQkJCQkJCQkJaWYoaXNzZXQoJGZvbmN0aW9uWydjaGVja2VkJ10pKXsNCgkJCQkJCQkJCSAgICAkc3FsLj0nREVMRVRFIEZST00gdF9saWVuc19tZnMgd2hlcmUgbWZzX2xpZW5faWQ9Jy4kZm9uY3Rpb25faWQuJyBMSU1JVCAxOyc7DQoJCQkJCQkJCQl9DQoJCQkJCQkJCX0NCg0KCQkJICAgICAgICAgICAgICAgIGZvcmVhY2goJF9QT1NUWydmb25jdGlvbiddWydhZGQnXVsnZm9uY3Rpb25faWQnXSBhcyAkaT0+JGZvbmN0aW9uKXsNCgkJICAgICAgICAgICAgICAgICAgICAJJHNhaXNvbl9pZD0kX1BPU1RbJ2ZvbmN0aW9uJ11bJ2FkZCddWydzYWlzb25faWQnXVskaV07DQoNCgkJCSAgICAgICAgICAgICAgICAgICAgaWYoaXNzZXQoJGZvbmN0aW9uKSAmJiAkZm9uY3Rpb24hPTAgJiYgJHNhaXNvbl9pZCE9MCl7DQoJCQkgICAgICAgICAgICAgICAgICAgIAkkdGFiPWV4cGxvZGUoJy0nLCRmb25jdGlvbik7DQoJCQkJCQkJCQkkc3FsLj0nSU5TRVJUIElOVE8gdF9saWVuc19tZnMgKGZvbmN0aW9uX2lkLGZvbmN0aW9uX3R5cGVfaWQsc2Fpc29uX2lkLG1lbWJyZV9pZCkgdmFsdWVzKCcuJHRhYlswXS4nLCcuJHRhYlsxXS4nLCcuJHNhaXNvbl9pZC4nLCcuJF9TRVNTSU9OWydtZW1icmVfaWQnXS4nKTsnOw0KCQkJCQkJCQl9DQoJCQkJCQkJfQ0KCQkJCQkJCQ0KCQkJCQkJCQ0KCQkJCQkJCSRkYi0+VXBkYXRlKCRzcWwpOw0KDQoJCQkgICAgICAgICAgICAJYnJlYWs7DQoNCgkJCSAgICAgICAgICAgIGNhc2UgJ3BsYXllcl9lcXVpcGVfbGlzdCc6DQoJCQkgICAJCQkJJHNxbD0nJzsNCgkJCSAgIAkJCQlpZihpc19hcnJheSgkX1BPU1RbJ3NhaXNvbiddWydleGlzdCddKSkNCgkJCQkgICAgICAgICAgICAgICAgZm9yZWFjaCgkX1BPU1RbJ3NhaXNvbiddWydleGlzdCddIGFzICRzYWlzb25faWQ9PiRzYWlzb24pew0KCQkJCQkJCQkJaWYoJHNhaXNvblsnY2hlY2tlZCddPT0xKXsNCgkJCQkJCQkJCSAgICAkc3FsLj0nREVMRVRFIEZST00gdF9saWVuc19qZXMgd2hlcmUgamVzX2xpZW5faWQ9Jy4kc2Fpc29uWydqZXMnXS4nIExJTUlUIDE7JzsNCgkJCQkJCQkJCX0NCg0KCQkJCQkJCQkJJHNxbC49J1VQREFURSB0X2xpZW5zX2plcyBTRVQgZXF1aXBlX2lkPScuJHNhaXNvblsnZXF1aXBlX2lkJ10uJyB3aGVyZSBqZXNfbGllbl9pZD0nLiRzYWlzb25bJ2plcyddLicgTElNSVQgMTsnOw0KCQkJCQkJCQl9DQoNCgkJCSAgICAgICAgICAgICAgICBmb3JlYWNoKCRfUE9TVFsnc2Fpc29uJ11bJ2FkZCddWydzYWlzb25faWQnXSBhcyAkc2Fpc29uKXsNCgkJCSAgICAgICAgICAgICAgICAgICAgaWYoaXNzZXQoJHNhaXNvbikgJiYgJHNhaXNvbiE9MCl7DQoJCQkgICAgICAgICAgICAgICAgICAgIAkkdGFiPWV4cGxvZGUoJy0nLCRzYWlzb24pOw0KCQkJCQkJCQkJJHNxbC49J0lOU0VSVCBJTlRPIHRfbGllbnNfamVzIChzYWlzb25faWQsZXF1aXBlX2lkLG1lbWJyZV9pZCkgdmFsdWVzKCcuJHRhYlswXS4nLCcuJHRhYlsxXS4nLCcuJF9TRVNTSU9OWydtZW1icmVfaWQnXS4nKTsnOw0KCQkJCQkJCQl9DQoJCQkJCQkJfQ0KDQoJCQkJCQkJJGRiLT5VcGRhdGUoJHNxbCk7DQoNCgkJCSAgICAgICAgICAgIAlicmVhazsNCg0KCQkJICAgICAgICAgICAgY2FzZSAncGxheWVyX2NvYWNoX2xpc3QnOg0KCQkJICAgCQkJCSRzcWw9Jyc7DQoJCQkgICAJCQkJaWYoaXNfYXJyYXkoJF9QT1NUWydzYWlzb24nXVsnZXhpc3QnXSkpDQoJCQkJICAgICAgICAgICAgICAgIGZvcmVhY2goJF9QT1NUWydzYWlzb24nXVsnZXhpc3QnXSBhcyAkc2Fpc29uX2lkPT4kc2Fpc29uKXsNCgkJCQkJCQkJCWlmKCRzYWlzb25bJ2NoZWNrZWQnXT09MSl7DQoJCQkJCQkJCQkgICAgJHNxbC49J0RFTEVURSBGUk9NIHRfbGllbnNfZWMgd2hlcmUgZWNfbGllbl9pZD0nLiRzYWlzb25bJ2VjJ10uJyBMSU1JVCAxOyc7DQoJCQkJCQkJCQl9DQoNCgkJCQkJCQkJCSRzcWwuPSdVUERBVEUgdF9saWVuc19lYyBTRVQgZXF1aXBlX2lkPScuJHNhaXNvblsnZXF1aXBlX2lkJ10uJyB3aGVyZSBlY19saWVuX2lkPScuJHNhaXNvblsnamVzJ10uJyBMSU1JVCAxOyc7DQoJCQkJCQkJCX0NCg0KCQkJICAgICAgICAgICAgICAgIGZvcmVhY2goJF9QT1NUWydzYWlzb24nXVsnYWRkJ11bJ3NhaXNvbl9pZCddIGFzICRzYWlzb24pew0KCQkJICAgICAgICAgICAgICAgICAgICBpZihpc3NldCgkc2Fpc29uKSAmJiAkc2Fpc29uIT0wKXsNCgkJCSAgICAgICAgICAgICAgICAgICAgCSR0YWI9ZXhwbG9kZSgnLScsJHNhaXNvbik7DQoJCQkJCQkJCQkkc3FsLj0nSU5TRVJUIElOVE8gdF9saWVuc19lYyAoc2Fpc29uX2lkLGVxdWlwZV9pZCxtZW1icmVfaWQpIHZhbHVlcygnLiR0YWJbMF0uJywnLiR0YWJbMV0uJywnLiRfU0VTU0lPTlsnbWVtYnJlX2lkJ10uJyk7JzsNCgkJCQkJCQkJfQ0KCQkJCQkJCX0NCg0KCQkJCQkJCQ0KCQkJCQkJCSRkYi0+VXBkYXRlKCRzcWwpOw0KDQoJCQkgICAgICAgICAgICAJYnJlYWs7DQoNCgkJCSAgICAgICAgICAgIGNhc2UgJ3BsYXllcl9pbmZvJzoNCgkJCQkJCQkNCgkJCQkJCQlpZighZW1wdHkoJF9QT1NUWydtZW1icmUnXVsnbWVtYnJlX3B3ZCddKSl7DQoJCQkJCQkJLy9PbiB2YWxpZGUgbGEgZmljaGUgZHUgbWVtYnJlIG9uIGRvaXQgZW52b3llciB1biBtYWlsDQoJCQkJCQkJCSRfUE9TVFsnbWVtYnJlJ11bJ21lbWJyZV9tZDUnXT1tZDUoR1JBSU5fREVfU0FCTEUuJF9QT1NUWydtZW1icmUnXVsnbWVtYnJlX3B3ZCddLkdSQUlOX0RFX1NBQkxFKTsNCgkJCQkJCQkJJHNlbmRfbWFpbD10cnVlOw0KCQkJCQkJCX0NCgkJCQkJCQlpZigkX1BPU1RbJ21lbWJyZSddWydtZW1icmVfcHJvZl9ob21tZSddPT0wKQ0KCQkJCQkJCQkkX1BPU1RbJ21lbWJyZSddWydtZW1icmVfcHJvZl9ob21tZSddPSRfUE9TVFsnbWVtYnJlJ11bJ21lbWJyZV9wcm9mX2hvbW1lX3R4dCddOw0KDQoJCQkJCQkJaWYoJF9QT1NUWydtZW1icmUnXVsnbWVtYnJlX3Byb2ZfZmVtbWUnXT09MCkNCgkJCQkJCQkJJF9QT1NUWydtZW1icmUnXVsnbWVtYnJlX3Byb2ZfZmVtbWUnXT0kX1BPU1RbJ21lbWJyZSddWydtZW1icmVfcHJvZl9mZW1tZV90eHQnXTsNCg0KCQkJCQkJCSRfUE9TVFsnbWVtYnJlJ109YWRkc2xhc2hlc19zcWwoJF9QT1NUWydtZW1icmUnXSk7DQoNCgkJCQkJCQkkc3FsPSRkYi0+VXBkYXRlU1FMKCd0X21lbWJyZXMnLCRfUE9TVFsnbWVtYnJlJ10sJ21lbWJyZV9pZD0nLiRfUE9TVFsnbWVtYnJlJ11bJ21lbWJyZV9pZCddKTsNCgkJCQkJCQkkZGItPlVwZGF0ZSgkc3FsKTsNCg0KCQkJCQkJCWlmKCRkYi0+Q291bnQ9PS0xKXsNCgkJCQkJCQkJYWxlcnRBamF4KCdFcnJldXIgbG9ycyBkZSBsYSBtaXNlIMOgIGpvdXIsIHJlw6lzc2F5ZXogcGx1cyB0YXJkJyk7DQoJCQkJCQkJfQ0KCQkJCQkJCWVsc2V7DQoJCSAgICAgICAgICAgICAgICAgICAgICAgIGlmKCRzZW5kX21haWw9PXRydWUgJiYgaXNzZXQoJF9QT1NUWydtZW1icmUnXVsnbWVtYnJlX2VtYWlsJ10pKXsNCgkJICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudm95ZXJNYWlsKCRfUE9TVFsnbWVtYnJlJ11bJ21lbWJyZV9lbWFpbCddLCRfUE9TVFsnbWVtYnJlJ10pOw0KCQkgICAgICAgICAgICAgICAgICAgICAgICB9DQoNCgkJDQoJCQ0KCQkJCQkJCQlpZihpc3NldCgkX1BPU1RbJ3NlbGYnXSkpDQoJCQkJCQkJCWVjaG8gIndpbmRvdy5sb2NhdGlvbi5ocmVmPSciLlNJVEVfVVJMLiInOyI7DQoJCQkJCQkJfQ0KDQoJCQkJCQkJYnJlYWs7DQoJCQkJCQljYXNlICdlcXVpcGVfaW5mbyc6DQoJCQkJCQkJJGVxdWlwZVNxbD1hZGRzbGFzaGVzX3NxbCgkX1BPU1RbJ2VxdWlwZSddKTsNCg0KCQkJCQkJCSRzcWw9JGRiLT5VcGRhdGVTUUwoJ3RfZXF1aXBlcycsJGVxdWlwZVNxbCwnZXF1aXBlX2lkPScuJGVxdWlwZVNxbFsnZXF1aXBlX2lkJ10pOw0KDQoJCQkJCQkJJGRiLT5VcGRhdGUoJHNxbCk7DQoNCgkJCQkJCWJyZWFrOw0KDQoJCQkJCQljYXNlICdlcXVpcGVfc2Fpc29uX2xpc3QnOg0KCQkJCQkJICAgICRFX0lEPSRfU0VTU0lPTlsnZXF1aXBlX2lkJ107DQoJCQkgICAJCQkJJHNxbD0nJzsNCgkJCSAgIAkJCQlpZihpc19hcnJheSgkX1BPU1RbJ2l0ZW0nXVsnZXhpc3QnXSkpDQoJCQkJICAgICAgICAgICAgICAgIGZvcmVhY2goJF9QT1NUWydpdGVtJ11bJ2V4aXN0J10gYXMgJHNhaXNvbl9pZD0+JHNhaXNvbil7DQoJCQkJCQkJCQlpZigkc2Fpc29uWydjaGVja2VkJ109PTEpew0KCQkJCQkJCQkJICAgICRzcWwuPSdERUxFVEUgRlJPTSB0X2xpZW5zX2VzIHdoZXJlIGVzX2xpZW5faWQ9Jy4kc2Fpc29uWydlcyddLicgTElNSVQgMTsnOw0KCQkJCQkJCQkJICAgICRzcWwuPSdERUxFVEUgRlJPTSB0X2xpZW5zX2plcyB3aGVyZSBzYWlzb25faWQ9Jy4kc2Fpc29uX2lkLicgYW5kIGVxdWlwZV9pZD0nLiRFX0lELic7JzsNCgkJCQkJCQkJCX0NCg0KCQkJCQkJCQkJJHNxbC49J1VQREFURSB0X2xpZW5zX2VzIFNFVCBzYWlzb25fdHlwZT0iJy4kc2Fpc29uWydzYWlzb25fdHlwZSddLiciIHdoZXJlIGVzX2xpZW5faWQ9Jy4kc2Fpc29uWydlcyddLicgTElNSVQgMTsnOw0KCQkJCQkJCQl9DQoNCgkJCSAgICAgICAgICAgICAgICBmb3JlYWNoKCRfUE9TVFsnaXRlbSddWydhZGQnXVsnc2Fpc29uX2lkJ10gYXMgJGtleT0+JHNfaWQpew0KCQkJICAgICAgICAgICAgICAgICAgICBpZihpc3NldCgkc19pZCkgJiYgJHNfaWQhPTApew0KCQkJICAgICAgICAgICAgICAgICAgICAgICAgJHR5cGU9JF9QT1NUWydpdGVtJ11bJ2FkZCddWydzYWlzb25fdHlwZSddWyRrZXldOw0KCQkJCQkJCQkJJHNxbC49J0lOU0VSVCBJTlRPIHRfbGllbnNfZXMgKHNhaXNvbl9pZCxlcXVpcGVfaWQsc2Fpc29uX3R5cGUpIHZhbHVlcygnLiRzX2lkLicsJy4kRV9JRC4nLCInLiR0eXBlLiciKTsnOw0KCQkJCQkJCQkJJHNxbC49J0lOU0VSVCBJTlRPIHRfbGllbnNfamVzIChzYWlzb25faWQsZXF1aXBlX2lkLG1lbWJyZV9pZCkgU2VsZWN0ICcuJHNfaWQuJywnLiRFX0lELicsIG1lbWJyZV9pZCBmcm9tIHRfbGllbnNfamVzIHdoZXJlIHNhaXNvbl9pZD0nLigkc19pZC0xKS4nIGFuZCBlcXVpcGVfaWQ9Jy4kRV9JRC4nOyc7DQoJCQkJCQkJCX0NCgkJCQkJCQl9DQoJCQkJCQkJDQoJCQkJCQkJJGRiLT5VcGRhdGUoJHNxbCk7DQoNCgkJCSAgICAgICAgICAgIAlicmVhazsNCg0KCQkJCQkJY2FzZSAnZXF1aXBlX2NvYWNoX2xpc3QnOg0KCQkJICAgCQkJCSRzcWw9Jyc7DQoJCQkgICAJCQkJaWYoaXNfYXJyYXkoJF9QT1NUWydpdGVtJ11bJ2V4aXN0J10pKQ0KCQkJCSAgICAgICAgICAgICAgICBmb3JlYWNoKCRfUE9TVFsnaXRlbSddWydleGlzdCddIGFzICRsX2lkPT4kc2Fpc29uKXsNCgkJCQkJCQkJCWlmKCRzYWlzb25bJ2NoZWNrZWQnXT09MSl7DQoJCQkJCQkJCQkgICAgJHNxbC49J0RFTEVURSBGUk9NIHRfbGllbnNfZWMgd2hlcmUgZWNfbGllbl9pZD0nLiRsX2lkLicgTElNSVQgMTsnOw0KCQkJCQkJCQkJfQ0KDQoJCQkJCQkJCQkkc3FsLj0nVVBEQVRFIHRfbGllbnNfZWMgU0VUIG1lbWJyZV9pZD0nLiRzYWlzb25bJ21lbWJyZV9pZCddLicgd2hlcmUgZWNfbGllbl9pZD0nLiRsX2lkLicgTElNSVQgMTsnOw0KCQkJCQkJCQl9DQoNCgkJCSAgICAgICAgICAgICAgICBmb3JlYWNoKCRfUE9TVFsnaXRlbSddWydhZGQnXVsnc2Fpc29uX2lkJ10gYXMgJGtleT0+JHNfaWQpew0KCQkJICAgICAgICAgICAgICAgICAgICBpZihpc3NldCgkc19pZCkgJiYgJHNfaWQhPTApew0KCQkJICAgICAgICAgICAgICAgICAgICAgICAgJG1faWQ9JF9QT1NUWydpdGVtJ11bJ2FkZCddWydtZW1icmVfaWQnXVska2V5XTsNCgkJCQkJCQkJCSRzcWwuPSdJTlNFUlQgSU5UTyB0X2xpZW5zX2VjIChzYWlzb25faWQsZXF1aXBlX2lkLG1lbWJyZV9pZCkgdmFsdWVzKCcuJHNfaWQuJywnLiRfU0VTU0lPTlsnZXF1aXBlX2lkJ10uJywnLiRtX2lkLicpOyc7DQoJCQkJCQkJCX0NCgkJCQkJCQl9DQoNCgkJCQkJCQkkZGItPlVwZGF0ZSgkc3FsKTsNCg0KCQkJICAgICAgICAgICAgCWJyZWFrOw0KDQoJCQkJCQljYXNlICdlcXVpcGVfam91dGV1cl9saXN0JzoNCgkJCSAgIAkJCQkkc3FsPScnOw0KCQkJICAgCQkJCWlmKGlzX2FycmF5KCRfUE9TVFsnaXRlbSddWydleGlzdCddKSkNCgkJCQkgICAgICAgICAgICAgICAgZm9yZWFjaCgkX1BPU1RbJ2l0ZW0nXVsnZXhpc3QnXSBhcyAkbF9pZD0+JHNhaXNvbil7DQoJCQkJCQkJCQlpZigkc2Fpc29uWydjaGVja2VkJ109PTEpew0KCQkJCQkJCQkJICAgICRzcWwuPSdERUxFVEUgRlJPTSB0X2xpZW5zX2plcyB3aGVyZSBqZXNfbGllbl9pZD0nLiRsX2lkLicgTElNSVQgMTsnOw0KCQkJCQkJCQkJfQ0KCQkJCQkJCQkJDQoJCQkJCQkJCX0NCg0KCQkJCQkJCSRzcWwuPSdVcGRhdGUgdF9saWVuc19qZXMgc2V0IHJlc3BvbnNhYmxlPTAgd2hlcmUgZXF1aXBlX2lkPScuJF9TRVNTSU9OWydlcXVpcGVfaWQnXS4nOyc7DQoNCgkJCQkJCQlpZihpc19hcnJheSgkX1BPU1RbJ2l0ZW0nXVsnZXhpc3QnXVsncmVzcG9uc2FibGUnXSkpDQoJCQkJICAgICAgICAgICAgICAgIGZvcmVhY2goJF9QT1NUWydpdGVtJ11bJ2V4aXN0J11bJ3Jlc3BvbnNhYmxlJ10gYXMgJG1faWQ9PiR0YWIpew0KCQkJCSAgICAgICAgICAgICAgICAgICAgJHRhYj1leHBsb2RlKCctJywkdGFiKTsNCgkJCQkJCQkJICAgICRzcWwuPSJVcGRhdGUgdF9saWVuc19qZXMgc2V0IHJlc3BvbnNhYmxlPTEgd2hlcmUgc2Fpc29uX2lkPSR0YWJbMF0gYW5kIG1lbWJyZV9pZD0kdGFiWzFdOyI7DQoJCQkJCQkJCX0NCg0KCQkJCQkJCQkNCgkJCSAgICAgICAgICAgICAgICBmb3JlYWNoKCRfUE9TVFsnaXRlbSddWydhZGQnXVsnc2Fpc29uX2lkJ10gYXMgJGtleT0+JHNfaWQpew0KCQkJICAgICAgICAgICAgICAgICAgICBpZihpc3NldCgkc19pZCkgJiYgJHNfaWQhPTApew0KCQkJICAgICAgICAgICAgICAgICAgICAgICAgJG1faWQ9JF9QT1NUWydpdGVtJ11bJ2FkZCddWydtZW1icmVfaWQnXVska2V5XTsNCgkJCQkJCQkJCSRzcWwuPSdJTlNFUlQgSU5UTyB0X2xpZW5zX2plcyAoc2Fpc29uX2lkLGVxdWlwZV9pZCxtZW1icmVfaWQpIHZhbHVlcygnLiRzX2lkLicsJy4kX1NFU1NJT05bJ2VxdWlwZV9pZCddLicsJy4kbV9pZC4nKTsnOw0KCQkJCQkJCQl9DQoJCQkJCQkJfQ0KDQoJCQkJCQkJJGRiLT5VcGRhdGUoJHNxbCk7DQoNCgkJCSAgICAgICAgICAgIAlicmVhazsNCg0KCQkJICAgICAgICB9DQoJCQkJCSRzbWFydHktPmFzc2lnbigncHJlc2VudGF0aW9uRHluYW1pcXVlJywkX1BPU1RbJ3dpY2gnXSk7DQoJCQkJCSRzbWFydHktPmRpc3BsYXkoJy4vX19hZG1pbl9fL3NpdGVfX19hZG1pbl9fcHJlc2VudGF0aW9uLicuVFBMX0VYVCk7DQoNCgkJCSAgICAgICAgYnJlYWs7DQoJCQkJY2FzZSAnZXF1aXBlJzoNCgkJCQkJDQoJCQkJYnJlYWs7IA0KCQkJCQ0KCQkJCWNhc2UgJ2NvbXBvc2l0aW9uJzoNCgkJCQkJDQoJCQkJCSRtaWQ9JF9QT1NUWydjb21wbyddWydtYXRjaF9pZCddOyANCgkJCQkJJF9QT1NUWydjb21wbyddPWFkZHNsYXNoZXNfc3FsKCRfUE9TVFsnY29tcG8nXSk7DQoJCQkJCQ0KCQkJCQkkc3FsPSJERUxFVEUgRlJPTSB0X2NvbXBvcyB3aGVyZSBjb21wb19tYXRjaF9pZD0iLiRtaWQuIjsiOw0KCQkJCQkNCgkJCQkJDQoJCQkJCWZvcmVhY2goc3BsaXQoJywnLCRfUE9TVFsnY29tcG9fQSddKSBhcyAkdmFsKXsNCgkJCQkJCWlmKCR2YWwpDQoJCQkJCQkJJHNxbC49IklOU0VSVCBJTlRPIHRfY29tcG9zIFZBTFVFUygnJywnIi4kbWlkLiInLCciLiR2YWwuIicpOyI7DQoJCQkJCX0NCgkJCQkJZm9yZWFjaChzcGxpdCgnLCcsJF9QT1NUWydjb21wb19CJ10pIGFzICR2YWwpew0KCQkJCQkJaWYoJHZhbCkNCgkJCQkJCQkkc3FsLj0iSU5TRVJUIElOVE8gdF9jb21wb3MgVkFMVUVTKCcnLCciLiRtaWQuIicsJyIuJHZhbC4iJyk7IjsNCgkJCQkJfQ0KCQkJCQkNCgkJCQkJJGRiLT5JbnNlcnQoJHNxbCk7DQoJCQkJCQ0KCQkJCQlpZigkZGItPkNvdW50PT0tMSl7DQoJCQkJCQlhbGVydEFqYXgoJ0VycmV1ciBsb3JzIGRlIGxhIG1pc2Ugw6Agam91ciwgcmXDqXNzYXlleiBwbHVzIHRhcmQnKTsNCgkJCQkJfQ0KCQkJCQllbHNlew0KCQkJCQkJJHNxbD0ic2VsZWN0IGNvdW50KCopIGZyb20gdF9jb21wb3Mgd2hlcmUgY29tcG9fbWF0Y2hfaWQ9JG1pZCI7DQoJCQkJCQkkY250PSRkYi0+Q291bnQoJHNxbCk7DQoJCQkJCQllY2hvICINCgkJCQkJCQkvLyBPbiBjYWNoZQ0KCQkJCQkJCSQoJ2V0b2lsZV9idXR0b24kbWlkJykuZGlzYWJsZWQ9KCRjbnQ9PTAgPyB0cnVlOiBmYWxzZSk7DQoJCQkJCQkJRWxlbWVudC50b2dnbGUoJ2ljJyk7DQoJCQkJCQkJLy8gT24gYXZlcnRpcw0KCQkJCQkJCWFsZXJ0KCdNaXNlIMOgIGpvdXIgZWZmZWN0dcOpZSBhdmVjIHN1Y2PDqXMnKTsNCgkJCQkJCQkvLyBPbiBlbMOodmUgbGUgZm9ybXVsYWlyZSANCgkJCQkJCQkkKCdpYycpLmlubmVySFRNTD1cIlwiOw0KCQkJCQkJCSQoJ2V0b2lsZV9idXR0b24kbWlkJykuY2xpY2soJCgnZXRvaWxlX2J1dHRvbiRtaWQnKSk7DQoJCQkJCQkJIjsNCgkJCQkJfQ0KLyogKi8JCQkJDQoJCQkJYnJlYWs7IA0KCQkJCQ0KCQkJCWNhc2UgJ2V0b2lsZSc6DQoNCgkJCQkJJG1pZD0kX1BPU1RbJ21hdGNoX2lkJ107IA0KCQkJCQkkX1BPU1RbJ2V0b2lsZSddPWFkZHNsYXNoZXNfc3FsKCRfUE9TVFsnZXRvaWxlJ10pOw0KCQkJCQkkX1BPU1RbJ3R5cGUnXQkJPXNwbGl0KCcsJywkX1BPU1RbJ3R5cGUnXSk7DQoJCQkJCSRfUE9TVFsnam91dGV1ciddCT1zcGxpdCgnLCcsJF9QT1NUWydqb3V0ZXVyJ10pOw0KCQkJCQkNCgkJCQkJJHNxbD0iREVMRVRFIEZST00gdF9ldG9pbGVzIHdoZXJlIGV0b2lsZV9tYXRjaF9pZD0iLiRtaWQuIjsiOw0KCQkJCQkNCgkJCQkJZm9yZWFjaCgkX1BPU1RbJ3R5cGUnXSBhcyAka2V5PT4kdmFsKXsNCgkJCQkJCQ0KCQkJCQkJaWYoJF9QT1NUWydqb3V0ZXVyJ11bJGtleV0+MCkNCgkJCQkJCQkkc3FsLj0iSU5TRVJUIElOVE8gdF9ldG9pbGVzIFZBTFVFUygnJywkbWlkLCIuJF9QT1NUWydqb3V0ZXVyJ11bJGtleV0uIiwkdmFsKTsiOwkJDQoJCQkJCX0NCgkJCQkJDQoJCQkJCSRkYi0+SW5zZXJ0KCRzcWwpOw0KCQkJCQlpZigkZGItPkNvdW50PT0tMSl7DQoJCQkJCQlhbGVydEFqYXgoJ0VycmV1ciBsb3JzIGRlIGxhIG1pc2Ugw6Agam91ciwgcmXDqXNzYXlleiBwbHVzIHRhcmQnKTsNCgkJCQkJfQ0KCQkJCQllbHNlew0KCQkJCQkJZWNobyAiDQoJCQkJCQkJLy8gT24gY2FjaGUNCgkJCQkJCQlFbGVtZW50LnRvZ2dsZSgnaWMnKTsNCgkJCQkJCQkvLyBPbiBhdmVydGlzDQoJCQkJCQkJYWxlcnQoJ01pc2Ugw6Agam91ciBlZmZlY3R1w6llIGF2ZWMgc3VjY8OpcycpOw0KCQkJCQkJCS8vIE9uIGVsw6h2ZSBsZSBmb3JtdWxhaXJlIA0KCQkJCQkJCSQoJ2ljJykuaW5uZXJIVE1MPVwiXCI7DQoJCQkJCQkJIjsNCgkJCQkJfQ0KLyogKi8JCQkJDQoJCQkJYnJlYWs7IA0KCQkJCQ0KCQkJCWNhc2UgJ3N0YWZmJzoNCg0KCQkJCQkkbWlkPSRfUE9TVFsnc3RhZmYnXVsnbWF0Y2hfaWQnXTsNCgkJCQkJJGRiLT5VcGRhdGUoJGRiLT5VcGRhdGVTUUwoJ3RfbWF0Y2hzJywkX1BPU1RbJ3N0YWZmJ10sJ21hdGNoX2lkPScuJG1pZCkpOw0KDQoJCQkJCWlmKCRkYi0+Q291bnQ9PS0xKXsNCgkJCQkJCWFsZXJ0QWpheCgnRXJyZXVyIGxvcnMgZGUgbGEgbWlzZSDDoCBqb3VyLCByZcOpc3NheWV6IHBsdXMgdGFyZCcpOw0KCQkJCQl9DQoJCQkJCWVsc2V7DQoJCQkJCQllY2hvICINCgkJCQkJCQkvLyBPbiBjYWNoZQ0KCQkJCQkJCUVsZW1lbnQudG9nZ2xlKCdpYycpOw0KCQkJCQkJCS8vIE9uIGF2ZXJ0aXMNCgkJCQkJCQlhbGVydCgnTWlzZSDDoCBqb3VyIGVmZmVjdHXDqWUgYXZlYyBzdWNjw6lzJyk7DQoJCQkJCQkJLy8gT24gZWzDqHZlIGxlIGZvcm11bGFpcmUgDQoJCQkJCQkJJCgnaWMnKS5pbm5lckhUTUw9XCJcIjsNCgkJCQkJCQkiOw0KCQkJCQl9DQoJCQkJDQoJCQkJYnJlYWs7IA0KCQkJfQ0KCQkJCQkNCgkJCWJyZWFrOw0KCQkNCgkJZGVmYXVsdDoNCgkJCWJvdWdlX2RlX2xhKCcuLycpOw0KCX0NCg0KPz4NCg==]]></response>
      Recv: <?xml version="1.0" encoding="iso-8859-1"?>
      <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="2" feature="max_depth" success="1"></response>
      Recv: <?xml version="1.0" encoding="iso-8859-1"?>
      <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="3" feature="max_children" success="1"></response>
      Recv: <?xml version="1.0" encoding="iso-8859-1"?>
      <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="4" state="enabled" id="15720003"></response>
      Recv: <?xml version="1.0" encoding="iso-8859-1"?>
      <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="breakpoint_list" transaction_id="5"><breakpoint type="line" filename="file:///C:/JP/EasyPHP/www/lolita/index.php" lineno="11" state="enabled" hit_count="0" hit_condition="&gt;=" hit_value="0" id="15720003"></breakpoint></response>
      Recv: <?xml version="1.0" encoding="iso-8859-1"?>
      <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="6" status="stopped" reason="ok"></response>
      Send: run -i 7
      ----
      Accept: 127.0.0.1
      ----
      Recv: <?xml version="1.0" encoding="iso-8859-1"?>
      <init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" fileuri="file:///c:/jp/easyphp/www/lolita/ajax.php" language="PHP" protocol_version="1.0" appid="1572" idekey="default"><engine version="2.0.2"><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[http://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2007 by Derick Rethans]]></copyright></init>
      Send: source -i 1 -f file:///c:/jp/easyphp/www/lolita/ajax.php
      Send: feature_set -i 2 -n max_depth -v 3
      Send: feature_set -i 3 -n max_children -v 15
      Send: breakpoint_set -i 4 -t line -f file:///C:\JP\EasyPHP\www\lolita\index.php -n 11 -s enabled -h 0 -o >=
      Send: breakpoint_list -i 5
      Send: step_into -i 6
      ----
      ----
      ----
      ----
      Recv: <?xml version="1.0" encoding="iso-8859-1"?>
      <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="source" transaction_id="1" encoding="base64"><![CDATA[PD9waHANCgkvLyBQb3VyIGZvcmNlciBsYSBib25uZSBpbnRlcnByZXRhdGlvbiBkZXMgY2FyYWN0w6hyZXMNCgloZWFkZXIoIkNvbnRlbnQtVHlwZTogdGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Iik7DQoNCglyZXF1aXJlX29uY2UoJy4vbGliL2Jhc2UuaW5jJyk7DQoNCi8vCSRzbWFydHktPnRlbXBsYXRlX2Rpcj0kbW90Wyd0cGxfcGF0aCddLidfX2FkbWluX18vJzsNCg0KCWZ1bmN0aW9uIGFsZXJ0QWpheCgkdHh0LCRpPTEpew0KCQlpZigkaT09MSkNCgkJCWVjaG8gImFsZXJ0KCciLmFkZHNsYXNoZXMoJHR4dCkuIicpOyI7DQoJCWVsc2UNCgkJCWVjaG8gIm5ldyBJbnNlcnRpb24uQm90dG9tKCdpYycsJyIuYWRkc2xhc2hlcygkdHh0KS4iJyk7IjsNCgl9DQoNCg0KCWZ1bmN0aW9uIGVudm95ZXJNYWlsKCRtYWlsLCRtZW1icmUpew0KCSAgICBnbG9iYWwgJHNtYXJ0eTsNCgkJJHNtYXJ0eS0+YXNzaWduKCdtZW1icmUnLCRtZW1icmUpOw0KCQkkc21hcnR5LT5hc3NpZ24oJ3Byb2ZpbF9tb2RpZmljYXRpb25fbWFpbCcsdHJ1ZSk7DQoJCSRtZXNzYWdlPSRzbWFydHktPmZldGNoKCcuL19fYWRtaW5fXy9zaXRlX19fYWRtaW5fX3ByZXNlbnRhdGlvbnMuJy5UUExfRVhUKTsNCgkJJGhlYWRlcnM9IiI7DQoJCSRoZWFkZXJzLj0iRk9STTogd2VibWFzdGVyQGFzc29jaWF0aW9uLWxvbGl0YS5jb21cbiI7DQoJCSRoZWFkZXJzLj0iQ29udGVudC1UeXBlOiB0ZXh0L2h0bWw7IGNoYXJzZXQ9aXNvLTg4NTktMSI7DQoNCgkJbWFpbCgkbWFpbCwnVG9uIHByb2ZpbCBlbiBsaWduZSDDoCBsYSBMT0xJVEEnLCRtZXNzYWdlLCRoZWFkZXJzKTsNCgl9DQoNCglpZighaXNzZXQoJF9SRVFVRVNUWydhY3Rpb24nXSkpDQoJCWJvdWdlX2RlX2xhKCcuLycpOwkJDQoJJHNhaXNvbl9jb3VyYW50ZT0kZGItPlNlbGVjdEZpcnN0KCdzZWxlY3QgKiBmcm9tIHRfc2Fpc29ucyB3aGVyZSBzYWlzb25fY291cmFudGU9MScpOw0KCSRzbWFydHktPmFzc2lnbignc2Fpc29uX2NvdXJhbnRlJywkc2Fpc29uX2NvdXJhbnRlKTsNCg0KCXN3aXRjaCgkX1JFUVVFU1RbJ2FjdGlvbiddKXsNCgkgICAgY2FzZSAnZHluJzoNCgkgICAgCXN3aXRjaCgkX1JFUVVFU1RbJ3doYXQnXSl7DQoJICAgIAkgICAgY2FzZSAncGljJzoNCgkgICAgCSAgICANCgkgICAgCSAgICAgICAgJHR5cGU9JF9HRVRbJ2ltYWdlX3R5cGUnXTsNCgkJCQkJDQoJCQkJCWlmICgkdHlwZT09MCkgJHR5cGU9MTsNCgkgICAgCSAgICAgICAgDQoJICAgIAkgICAgICAgICRzcWw9J3NlbGVjdCBpbWFnZV9pZCxpbWFnZV9leHQgZnJvbSB0X2R5bl9pbWFnZXMgd2hlcmUgaW1hZ2VfdHlwZT0nLiR0eXBlLicgb3JkZXIgYnkgcmFuZCgpIExJTUlUIDEnOw0KDQoJICAgIAkgICAgICAgICRmaXJzdD0kZGItPlNlbGVjdEZpcnN0KCRzcWwpOw0KCSAgICAJICAgICAgICANCgkgICAgCSAgICAgICAgJHBhdGggPSAkcGFyYW1bJ3JlcF9keW4nXS4nL2ltYWdlJy4kZmlyc3RbJ2ltYWdlX2lkJ10uJy4nLiRmaXJzdFsnaW1hZ2VfZXh0J107DQoJICAgIAkgICAgICAgIA0KCQkJCQloZWFkZXIoIkNvbnRlbnQtVHlwZTogaW1hZ2UvIi4kZmlyc3RbJ2ltYWdlX2V4dCddKTsNCgkJCQkJDQoJCQkJCSRmZCA9IGZvcGVuKCRwYXRoLCdyJyk7DQoJCQkJCQl3aGlsZSAoIWZlb2YoJGZkKSkgew0KCQkJCQkJJGJ1ZmZlciA9IGZnZXRzKCRmZCwgNDA5Nik7DQoJCQkJCQllY2hvICRidWZmZXI7DQoJCQkJCX0NCgkJCQkJZmNsb3NlICgkZmQpOw0KCQkJCQkNCgkgICAgCSAgICAgICAgYnJlYWs7DQoJICAgICAgICAgICAgY2FzZSAnY2FwdHVyZSc6DQoJCQkJCSRzbWFydHktPmFzc2lnbigncHJlc2VudGF0aW9uRHluYW1pcXVlJywkX1BPU1RbJ2NhcHR1cmUnXSk7DQoJCQkJCSRzbWFydHktPmRpc3BsYXkoJy4vX19hZG1pbl9fL3NpdGVfX19hZG1pbl9fcHJlc2VudGF0aW9uLicuVFBMX0VYVCk7DQoJICAgICAgICAgICAgICAgIGJyZWFrOw0KCSAgICAgICAgICAgIGNhc2UgJ2NvbWJvLXRlYW0tbGlzdCc6DQoJICAgICAgICAgICAgDQoJICAgICAgICAgICAgaWYoJF9QT1NUWydzYWlzb25faWQnXSE9Jycpew0KCQkgICAgICAgICAgICAkc3FsPScNCgkJCQkJCXNlbGVjdCAqIGZyb20gdF9lcXVpcGVzIGFzIHRfZQ0KCQkJCQkJaW5uZXIgam9pbiB0X2xpZW5zX2VzDQoJCQkJCQlVU0lORyhlcXVpcGVfaWQpDQoJCQkJCQlXSEVSRSBzYWlzb25faWQ9Jy4kX1BPU1RbJ3NhaXNvbl9pZCddOw0KDQoJCSAgICAgICAgICAgICR0ZWFtcz0kZGItPlNlbGVjdEFsbEJ5KCRzcWwsJ2VxdWlwZV9pZCcpOw0KCQkJCX0NCgkJCQllbHNlDQoJCQkJICAgICR0ZWFtcz1hcnJheSgpOw0KCQkJCSAgICANCgkJCQllY2hvICINCgkJCQkgICAgdmFyIGNvbWJvID0gJCgnJF9QT1NUW3RhcmdldF0nKTsNCgkJCQkgICAgY29tYm8ub3B0aW9ucy5sZW5ndGg9MDsNCgkJCQkgICAgdmFyIGRlZj0wOw0KCQkJCSAgICB2YXIgdmFsZXVyPTA7DQoJCQkJCSI7DQoJCQkJJG9wdGlvbnM9Jyc7DQoJCQ0KCQkJCWlmKCRfUE9TVFsndmFsTnVsbCddPT10cnVlKQ0KCQkJCQkkb3B0aW9ucy49J2NvbWJvLm9wdGlvbnNbY29tYm8ub3B0aW9ucy5sZW5ndGhdPW5ldyBPcHRpb24oIi0iLCIwIix0cnVlLHRydWUpOyc7DQoJCQkJDQoJCQkJZm9yZWFjaCgkdGVhbXMgYXMgJGlkPT4kdGVhbSl7DQoJCQkJICAgICRvcHRpb25zLj0nY29tYm8ub3B0aW9uc1tjb21iby5vcHRpb25zLmxlbmd0aF09bmV3IE9wdGlvbigiJy4kdGVhbVtlcXVpcGVfbm9tXS4nIiwiJy4kaWQuJyIsJy4oJGlkPT0kX1BPU1RbJ2RlZlZhbHVlJ10/ICd0cnVlLHRydWUnIDonZmFsc2UsZmFsc2UnKS4nKTsnOw0KCQkJCSAgICBpZigkaWQ9PSRfUE9TVFsnZGVmVmFsdWUnXSkNCgkJCQkgICAgCSRvcHRpb25zLj0nDQoJCQkJCQkJZGVmPWNvbWJvLm9wdGlvbnMubGVuZ3RoLTE7DQoJCQkJCQkJdmFsZXVyPScuJGlkLic7DQoJCQkJCQknOw0KCQkJCQkvLyRvcHRpb25zLj0oJGlkPT0kX1BPU1RbJ2RlZlZhbHVlJ10gPyAnY29tYm8ub3B0aW9ucy5zZWxlY3RlZEluZGV4PWNvbWJvLm9wdGlvbnMubGVuZ3RoOyc6JycpOw0KCQkJCSAgICB9DQoNCgkJCQlpZigkb3B0aW9ucz09JycpDQoJCQkJICAgICRvcHRpb25zPSdjb21iby5vcHRpb25zW2NvbWJvLm9wdGlvbnMubGVuZ3RoXT1uZXcgT3B0aW9uKCJBdWN1bmUiLCIiLHRydWUsdHJ1ZSk7JzsNCgkJCQllbHNlDQoJCQkJCSRvcHRpb25zLj0nDQoJCQkJCQljb21iby5zZWxlY3RlZEluZGV4PWRlZjsNCgkJCQkJCWNvbWJvLnZhbHVlPXZhbGV1cjsnOw0KCQkJCQkNCgkJCQllY2hvICRvcHRpb25zOw0KDQoJICAgICAgICAgICAgYnJlYWs7DQoJICAgICAgICB9DQoJICAgICAgICANCgkgICAgICAgIGJyZWFrOw0KCQljYXNlICd0ZXN0JzoNCgkJCQ0KCQkJYnJlYWs7DQoJCWNhc2UgJ2dyb3VwQWRkJzoNCgkJCSR2YWwJPSRfUE9TVFsndmFsJ107DQoJCQkkb2JqSWQJPSRfUE9TVFsnb2JqSWQnXTsNCgkJCQ0KCQkJZWNobyAiDQoJCQkJaWYob2JqPWdldE9iaignIi4kb2JqSWQuIicpKXsNCgkJCQkJcmVzZXRGaWVsZFByZXNlbnRhdGlvbihvYmopOw0KCQkJCSI7DQoJCQkNCgkJCWlmKCR2YWw9PScnKXsNCgkJCQ0KCQkJCWVjaG8gIg0KCQkJCQlzZXRBdHRyaWJ1dGUob2JqLCdvdGl0bGUnLG9iai50aXRsZSk7DQoJCQkJCXNldEF0dHJpYnV0ZShvYmosJ3RpdGxlJywnIi4kbW90WydFUlJfRklFTERfUkVRVUlSRUQnXS4iJyk7DQoJCQkJCXNldENsYXNzTmFtZShvYmosJ2ZpZWxkX3JlcXVpcmVkJyk7DQoJCQkJCW9iai5mb2N1cygpOw0KCQkJCQkiOw0KCQkJfQ0KCQkJZWxzZXsNCgkJCQkkc3FsPSdzZWxlY3QgY291bnQoKikgZnJvbSB0X2dyb3VwcyB3aGVyZSBncm91cF9uYW1lPSInLiR2YWwuJyInOw0KCQkJCWlmKCRkYi0+Q291bnQoJHNxbCk+MCkNCgkJCQkJZWNobyAiDQoJCQkJCQlzZXRBdHRyaWJ1dGUob2JqLCdvdGl0bGUnLG9iai50aXRsZSk7DQoJCQkJCQlzZXRBdHRyaWJ1dGUob2JqLCd0aXRsZScsJyIuJG1vdFsnRVJSX0dST1VQX0VYSVNUUyddLiInKTsNCgkJCQkJCWFkZENsYXNzTmFtZShvYmosJ2ZpZWxkX2luX2Vycm9yJyk7DQoJCQkJCQlvYmouZm9jdXMoKTsNCgkJCQkJIjsNCgkJCQllbHNlew0KCQkJCQllY2hvICINCgkJCQkJCWJsaW5rU3R5bGUob2JqLCdmaWVsZF9vaycpOw0KCQkJCQkiOw0KCQkJCX0NCgkJCX0NCgkJCWVjaG8gIg0KCQkJfSAvLyBmaW4gaWYoaXNPYmoob2JqKSkNCgkJCWVsc2UNCgkJCQlhbGVydCgncGFzIHVuIG9iaicrIi4kb2JqSWQuIik7DQoJCQkiOw0KCQkNCgkJY2FzZSAnY2hlY2tGaWVsZCc6DQoJCQkkdmFsCT0kX1BPU1RbJ3ZhbCddOw0KCQkJJG9iaklkCT0kX1BPU1RbJ29iaklkJ107DQoJCQkkb2JsaWcJPSRfUkVRVUVTVFsnb2JsaWcnXTsNCgkJCSRtYXgJPSRfUkVRVUVTVFsnbWF4J107DQoJCQkkbWluCT0kX1JFUVVFU1RbJ21pbiddOw0KDQoJCQllY2hvICINCgkJCQlpZihvYmo9Z2V0T2JqKCciLiRvYmpJZC4iJykpew0KCQkJCQlyZXNldEZpZWxkUHJlc2VudGF0aW9uKG9iaik7DQoJCQkJIjsNCgkJCQ0KCQkJaWYoaXNzZXQoJG9ibGlnKSAmJiBzdHJfcmVwbGFjZSgnICcsJycsJHZhbCk9PScnKXsNCgkJCQllY2hvICINCgkJCQkJc2V0QXR0cmlidXRlKG9iaiwnb3RpdGxlJyxvYmoudGl0bGUpOw0KCQkJCQlzZXRBdHRyaWJ1dGUob2JqLCd0aXRsZScsJyIuJG1vdFsnRVJSX0ZJRUxEX1JFUVVJUkVEJ10uIicpOw0KCQkJCQlzZXRDbGFzc05hbWUob2JqLCdmaWVsZF9yZXF1aXJlZCcpOw0KCQkJCQlvYmouZm9jdXMoKTsNCgkJCQkJIjsNCgkJCX0NCgkJCWVsc2UgaWYoaXNzZXQoJG1pbikgJiYgc3RybGVuKCR2YWwpPCRtaW4pew0KCQkJCWVjaG8gIg0KCQkJCQlzZXRBdHRyaWJ1dGUob2JqLCdvdGl0bGUnLG9iai50aXRsZSk7DQoJCQkJCXNldEF0dHJpYnV0ZShvYmosJ3RpdGxlJywnIi4kbW90WydFUlJfRklFTERfVE9PX1NIT1JUJ10uIicpOw0KCQkJCQlzZXRDbGFzc05hbWUob2JqLCdmaWVsZF9yZXF1aXJlZCcpOw0KCQkJCQlvYmouZm9jdXMoKTsNCgkJCQkJIjsNCgkJCX0NCgkJCWVsc2UgaWYoaXNzZXQoJG1heCkgJiYgc3RybGVuKCR2YWwpPiRtYXgpew0KCQkJCWVjaG8gIg0KCQkJCQlzZXRBdHRyaWJ1dGUob2JqLCdvdGl0bGUnLG9iai50aXRsZSk7DQoJCQkJCXNldEF0dHJpYnV0ZShvYmosJ3RpdGxlJywnIi4kbW90WydFUlJfRklFTERfVE9PX0xPTkcnXS4iJyk7DQoJCQkJCXNldENsYXNzTmFtZShvYmosJ2ZpZWxkX3JlcXVpcmVkJyk7DQoJCQkJCW9iai5mb2N1cygpOw0KCQkJCQkiOw0KCQkJfQ0KCQkJCQkJCQ0KCQkJZWNobyAifTsiOw0KCQkJCQkNCgkJCWJyZWFrOwkNCgkJDQoJCWNhc2UgJ3VzZXInOg0KCQkJDQoJCQkkdmFsCT0kX1BPU1RbJ3ZhbCddOw0KCQkJJG9iaklkCT0kX1BPU1RbJ29iaklkJ107DQoJCQkNCgkJCWVjaG8gIg0KCQkJCWlmKGlzT2JqKG9iaj1nZXRPYmooJyIuJG9iaklkLiInKSkpew0KCQkJCQkNCgkJCQkJcmVzZXRGaWVsZFByZXNlbnRhdGlvbihvYmopOw0KCQkJCSI7DQoNCgkJCQkNCgkJCWlmKCR2YWw9PScnKXsNCgkJCQ0KCQkJCWVjaG8gIg0KCQkJCQlzZXRBdHRyaWJ1dGUob2JqLCdvdGl0bGUnLG9iai50aXRsZSk7DQoJCQkJCXNldEF0dHJpYnV0ZShvYmosJ3RpdGxlJywnIi4kbW90WydFUlJfRklFTERfUkVRVUlSRUQnXS4iJyk7DQoJCQkJCXNldENsYXNzTmFtZShvYmosJ2ZpZWxkX3JlcXVpcmVkJyk7DQoJCQkJCW9iai5mb2N1cygpOw0KCQkJCQkiOw0KCQkJfQ0KCQkJZWxzZXsNCgkJCQkkc3FsPSdzZWxlY3QgY291bnQoKikgZnJvbSB0X3VzZXJzIHdoZXJlIHVzZXJfbG9naW49IicuJHZhbC4nIic7DQoJCQkJaWYoJGRiLT5Db3VudCgkc3FsKT4wKQ0KCQkJCQllY2hvICINCgkJCQkJCXNldEF0dHJpYnV0ZShvYmosJ290aXRsZScsb2JqLnRpdGxlKTsNCgkJCQkJCXNldEF0dHJpYnV0ZShvYmosJ3RpdGxlJywnIi4kbW90WydFUlJfVVNFUl9FWElTVFMnXS4iJyk7DQoJCQkJCQlhZGRDbGFzc05hbWUob2JqLCdmaWVsZF9pbl9lcnJvcicpOw0KCQkJCQkJb2JqLmZvY3VzKCk7DQoJCQkJCSI7DQoJCQkJZWxzZXsNCgkJCQkJZWNobyAiDQoJCQkJCQlibGlua1N0eWxlKG9iaiwnZmllbGRfb2snKTsNCgkJCQkJIjsNCgkJCQl9DQoJCQl9DQoJCQllY2hvICINCgkJCX0gLy8gZmluIGlmKGlzT2JqKG9iaikpDQoJCQllbHNlDQoJCQkJYWxlcnQoJ3BhcyB1biBvYmonKyIuJG9iaklkLiIpOw0KCQkJIjsNCgkJDQoJCWJyZWFrOw0KCQkNCgkJY2FzZSAnZ2VuZXJhdGVQYXNzd29yZCc6DQoNCgkJCSRvYmpJZAk9JF9QT1NUWydvYmpJZCddOw0KDQoJCQllY2hvICINCgkJCQlpZihpc09iaihvYmo9Z2V0T2JqKCciLiRvYmpJZC4iJykpKXsNCgkJCQkNCgkJCQlhbGVydCgnIi4kbW90WydFUlJfUEFTU1dPUkRfUkVRVUlSRUQnXS4iJyk7DQoJCQkJDQoJCQkJb2JqLnZhbHVlPSciLnN1YnN0cih1bmlxaWQocmFuZCgpKSwwLHJhbmQoNywxMCkpLiInOw0KCQkJCQ0KCQkJCSI7DQoJCQkJDQoJCQkNCgkJCQkNCgkJCWVjaG8gIg0KCQkJfSAvLyBmaW4gaWYoaXNPYmoob2JqKSkNCgkJCWVsc2UNCgkJCQlhbGVydCgncGFzIHVuIG9iaicrIi4kb2JqSWQuIik7DQoJCQkiOw0KCQkNCgkJY2FzZSAnc2hvdyc6DQoJCQkkd2hhdD0kX1JFUVVFU1RbJ3doYXQnXTsNCg0KCQkJc3dpdGNoKCR3aGF0KXsNCgkJCSAgICBjYXNlICduZXdzJzoNCgkJCSAgICAgICAgJHNtYXJ0eS0+YXNzaWduKCJuZXdzX2lkIiwkX1BPU1RbJ25ld3NfaWQnXSk7DQoJCQkgICAgICAgIGJyZWFrOw0KCQkJDQoJCQkJY2FzZSAnam91dGV1clByb3AnOg0KCQkJCQkkaWQ9JF9QT1NUWydqb3V0ZXVyX2lkJ107DQoJCQkJCWlmKCFpc19sb2dndWVkKCkgfHwgJGlkIT0kX1NFU1NJT05bJ3VzZXJfaWQnXSl7DQoJCQkJCQkkbWVtYnJlX2lkPSRpZDsNCgkJCQkJCSRfU0VTU0lPTlsnbWVtYnJlX2lkJ109JGlkOw0KCQkJCQkJJF9QT1NUWydtZW1icmVfaWQnXT0kaWQ7DQoJCQkJCQkkc21hcnR5LT5hc3NpZ24oJ2RldGFpbF9qb3V0ZXVyX3dlYicsJGRiLT5zZWxlY3RGaXJzdCgnU2VsZWN0ICogZnJvbSB0X21lbWJyZXMgd2hlcmUgbWVtYnJlX2lkPScuJGlkKSk7DQoJCQkJCQlzZXNzaW9uX3JlZ2lzdGVyKCRtZW1icmVfaWQpOw0KCSAgICAgICAgICAgICAgICAgICAgJHdoYXQ9J21lbWJyZSc7DQoJCQkJCQkkc21hcnR5LT5hc3NpZ24oImRldGFpbCIsdHJ1ZSk7DQoJCQkJCQkkYWZmPSRzbWFydHktPmZldGNoKCcuL19fYWRtaW5fXy9zaXRlX19fYWRtaW5fX3ByZXNlbnRhdGlvbi4nLlRQTF9FWFQpOw0KCQkJCQkJZGllKCRhZmYpOw0KCQkJCQkJYnJlYWs7DQoJCQkJCX0NCgkJCQkJZWxzZXsNCgkJCQkJCSR3aGF0PSdtZW1icmUnOw0KCQkJCQkJJF9QT1NUWydtZW1icmVfaWQnXT0kX1NFU1NJT05bJ3VzZXJfaWQnXTsNCgkJCQkJfQ0KICAgICAgICAgICAgICAgICAgICANCgkJCQljYXNlICdtZW1icmUnOg0KCQkJCQkkaWQ9JF9QT1NUWydtZW1icmVfaWQnXTsNCgkJCQkJJG1lbWJyZV9pZD0kaWQ7DQoJCQkJCSRfU0VTU0lPTlsnbWVtYnJlX2lkJ109JGlkOw0KCQkJCQkNCgkJCQkJJHNtYXJ0eS0+YXNzaWduKCR3aGF0LCRkYi0+c2VsZWN0Rmlyc3QoJ1NlbGVjdCAqIGZyb20gdF9tZW1icmVzIHdoZXJlIG1lbWJyZV9pZD0nLiRpZCkpOw0KCQkJCQkNCgkJCQkJc2Vzc2lvbl9yZWdpc3RlcigkbWVtYnJlX2lkKTsNCgkJCQkJYnJlYWs7DQoNCgkJCQljYXNlICdlcXVpcGUnOg0KCQkJCQkkaWQ9JF9QT1NUWydlcXVpcGVfaWQnXTsJCQkJCQ0KCQkJCQkkbWVtYnJlX2lkPSRpZDsNCgkJCQkJJF9TRVNTSU9OWydlcXVpcGVfaWQnXT0kaWQ7DQoJCQkJCWJyZWFrOyANCg0KCQkJCWNhc2UgJ2NvbXBvc2l0aW9uJzoNCgkJCQkJJGlkPSRfUE9TVFsnbWF0Y2hfaWQnXTsJCQkJCQ0KCQkJCQkkc21hcnR5LT5hc3NpZ24oJ2RldGFpbF9jb21wb19hZG1pbicsJGlkKTsNCgkJCQkJJHNtYXJ0eS0+ZGlzcGxheSgnLi9fX2FkbWluX18vc2l0ZV9fX2FkbWluX19wcmVzZW50YXRpb24uJy5UUExfRVhUKTsNCgkJCQkJYnJlYWs7DQoJCQkJCSANCgkJCQljYXNlICdldG9pbGUnOg0KCQkJCQkkaWQ9JF9QT1NUWydtYXRjaF9pZCddOwkJCQkJDQoJCQkJCSRzbWFydHktPmFzc2lnbignZGV0YWlsX2V0b2lsZV9hZG1pbicsJGlkKTsNCgkJCQkJJHNtYXJ0eS0+ZGlzcGxheSgnLi9fX2FkbWluX18vc2l0ZV9fX2FkbWluX19wcmVzZW50YXRpb24uJy5UUExfRVhUKTsNCgkJCQkJYnJlYWs7DQoNCgkJCQljYXNlICdzdGFmZic6DQoJCQkJCSRpZD0kX1BPU1RbJ21hdGNoX2lkJ107CQkJCQkNCgkJCQkJJHNtYXJ0eS0+YXNzaWduKCdkZXRhaWxfc3RhZmZfYWRtaW4nLCRpZCk7DQoJCQkJCSRzbWFydHktPmRpc3BsYXkoJy4vX19hZG1pbl9fL3NpdGVfX19hZG1pbl9fcHJlc2VudGF0aW9uLicuVFBMX0VYVCk7DQoJCQkJCWJyZWFrOw0KCQkJIA0KCQkJCWNhc2UgJ21hdGNoRGV0YWlsJzoNCgkJCQkJJGlkPSRfUE9TVFsnbWF0Y2hfaWQnXTsJCQ0KCQkJCQkkc3FsPSdzZWxlY3QgKiBmcm9tIHRfZXF1aXBlcyBpbm5lciBqb2luIHRfbWF0Y2hzIG9uIGVxdWlwZV9pZD1tYXRjaF9lcXVpcGVfQSBvciBlcXVpcGVfaWQ9bWF0Y2hfZXF1aXBlX0Igd2hlcmUgbWF0Y2hfaWQ9Jy4kaWQ7DQoJCQkJCSRzbWFydHktPmFzc2lnbignZGV0YWlsX21hdGNoJywkZGItPlNlbGVjdEFsbEJ5KCRzcWwsJ2VxdWlwZV9pZCcpKTsNCgkJCQkJJHNtYXJ0eS0+ZGlzcGxheSgnLi9fX2FkbWluX18vc2l0ZV9fX2FkbWluX19wcmVzZW50YXRpb24uJy5UUExfRVhUKTsNCgkJCQkJYnJlYWs7DQoJCQkJCQ0KCQkJCWRlZmF1bHQ6DQoJCQkJCWVjaG8gIk1vdCBjbMOpICIuJF9SRVFVRVNUWyd3aGF0J10uIiBub24gcsOpZsOpcmVuY8OpIjsNCgkJCX0NCg0KCQkJJHNtYXJ0eS0+YXNzaWduKCJkZXRhaWwiLHRydWUpOw0KCQkJJHNtYXJ0eS0+ZGlzcGxheSgnLi9fX2FkbWluX18vc2l0ZV9fX2FkbWluX19wcmVzZW50YXRpb24uJy5UUExfRVhUKTsNCgkJCSRzbWFydHktPmRpc3BsYXkoIi4vX19hZG1pbl9fL3NpdGVfX19hZG1pbl9fJHdoYXQuIi5UUExfRVhUKTsNCgkJDQoJCQlicmVhazsNCg0KCQljYXNlICdwb3N0JzoNCgkJDQoJCQlzd2l0Y2goJF9SRVFVRVNUWyd3aGF0J10pew0KDQoJCQkgICAgY2FzZSAnc3ViLXVwZGF0ZSc6DQoJCQkgICAgICAgIA0KCQkJICAgICAgICBzd2l0Y2goJF9QT1NUWyd3aWNoJ10pew0KCQkJCQkJY2FzZSAncGFyYW1fZHluJzoNCg0KCQkJCQkJCWZvcmVhY2goJF9QT1NUWydjdXJyJ10gYXMgJGlkPT4kdmFsKXsNCgkJCQkJCQkJaWYoaXNzZXQoJHZhbFsnc2VsZWN0ZWQnXSkpew0KCQkJCQkJCQkJJHNxbC49J0RFTEVURSBmcm9tIHRfZHluX2ltYWdlcyB3aGVyZSBpbWFnZV9pZD0nLiRpZDsNCgkJCQkJCQkJfQ0KCQkJCQkJCX0NCg0KLyoJCQkJCQkJJG5ldz0kZGItPmV4dHJhY3RGaWVsZHMoJF9QT1NULCduZXcnKTsNCg0KCQkJCQkJCWZvcmVhY2goJG5ldyBhcyAka2V5PT4kdmFsKXsNCgkJCQkJCQkJaWYoJHZhbFsncGFyYW1fbmFtZSddIT0nJyAmJiAkdmFsWydwYXJhbV92YWx1ZSddIT0nJykNCgkJCQkJCQkJCSRzcWwuPSdJTlNFUlQgSU5UTyB0X3BhcmFtcyAocGFyYW1fbmFtZSxwYXJhbV92YWx1ZSxwYXJhbV9saWIscGFyYW1fdHlwKSB2YWx1ZXMoIicuJHZhbFsncGFyYW1fbmFtZSddLiciLCInLiR2YWxbJ3BhcmFtX3ZhbHVlJ10uJyIsIicuJHZhbFsncGFyYW1fbGliJ10uJyIsIicuJHZhbFsncGFyYW1fdHlwJ10uJyIpOyc7DQoJCQkJCQkJfQ0KCSovCQkJDQoJCQkJCQkJDQoJCQkJCQkvLwkkZGItPlNlbGVjdCgkc3FsKTsNCg0KCQkJCQkJICAgIGJyZWFrOw0KCQkJCQkJY2FzZSAncGFyYW0nOg0KCQkJCQkJCSRzcWw9J1RSVU5DQVRFIFRBQkxFIHRfcGFyYW1zOyc7DQoJCQkJCQkJaWYoaXNfYXJyYXkoJF9QT1NUWydjdXJyJ10pKQ0KCQkJCQkJCQlmb3JlYWNoKCRfUE9TVFsnY3VyciddIGFzICR2YWwpew0KCQkJCQkJCQkJaWYoIWlzc2V0KCR2YWxbJ3NlbGVjdGVkJ10pKQ0KCQkJCQkJCQkJCSRzcWwuPSdJTlNFUlQgSU5UTyB0X3BhcmFtcyAocGFyYW1fbmFtZSxwYXJhbV92YWx1ZSxwYXJhbV9saWIscGFyYW1fdHlwKSB2YWx1ZXMoIicuJHZhbFsncGFyYW1fbmFtZSddLiciLCInLiR2YWxbJ3BhcmFtX3ZhbHVlJ10uJyIsIicuJHZhbFsncGFyYW1fbGliJ10uJyIsIicuJHZhbFsncGFyYW1fdHlwJ10uJyIpOyc7DQoJCQkJCQkJCX0NCg0KCQkJCQkJCSRuZXc9JGRiLT5leHRyYWN0RmllbGRzKCRfUE9TVCwnbmV3Jyk7DQoNCgkJCQkJCQlmb3JlYWNoKCRuZXcgYXMgJGtleT0+JHZhbCl7DQoJCQkJCQkJCWlmKCR2YWxbJ3BhcmFtX25hbWUnXSE9JycgJiYgJHZhbFsncGFyYW1fdmFsdWUnXSE9JycpDQoJCQkJCQkJCQkkc3FsLj0nSU5TRVJUIElOVE8gdF9wYXJhbXMgKHBhcmFtX25hbWUscGFyYW1fdmFsdWUscGFyYW1fbGliLHBhcmFtX3R5cCkgdmFsdWVzKCInLiR2YWxbJ3BhcmFtX25hbWUnXS4nIiwiJy4kdmFsWydwYXJhbV92YWx1ZSddLiciLCInLiR2YWxbJ3BhcmFtX2xpYiddLiciLCInLiR2YWxbJ3BhcmFtX3R5cCddLiciKTsnOw0KCQkJCQkJCX0NCg0KCQkJCQkJCSRkYi0+U2VsZWN0KCRzcWwpOw0KCQkJCQkJCWJyZWFrOw0KDQoJCQkgICAgICAgICAgICBjYXNlICdlcXVpcGVfbm91dmVhdSc6DQoJCQkgICAgICAgICAgICANCgkJCSAgICAgICAgICAgICAgICBmb3JlYWNoKCRfUE9TVFsnaXRlbSddWydhZGQnXVsnbWVtYnJlX25vbSddIGFzICRrZXk9PiRub20pew0KCQkJICAgICAgICAgICAgICAgICAgICAkaXRlbT0kX1BPU1RbJ2l0ZW0nXVsnYWRkJ107DQoJCQkgICAgICAgICAgICAgICAgICAgIA0KCQkJICAgICAgICAgICAgICAgICAgICAkcHJlbm9tID0gJGl0ZW1bJ21lbWJyZV9wcmVub20nXVska2V5XTsNCgkJCSAgICAgICAgICAgICAgICAgICAgJG1haWwgPSAkaXRlbVsnbWVtYnJlX21haWwnXVska2V5XTsNCgkJCSAgICAgICAgICAgICAgICAgICAgJHB3ZCA9ICRpdGVtWydtZW1icmVfcGFzc3dvcmQnXVska2V5XTsNCgkJCSAgICAgICAgICAgICAgICAgICAgDQoJCQkgICAgICAgICAgICAgICAgICAgICRzcWw9J0lOU0VSVCBJTlRPIHRfbWVtYnJlcyAobWVtYnJlX25vbSxtZW1icmVfcHJlbm9tLG1lbWJyZV9lbWFpbCxtZW1icmVfbWQ1LG1lbWJyZV9sb2dpbiknOw0KCQkJICAgICAgICAgICAgICAgICAgICAkc3FsLj0nIHZhbHVlcygiJy4kbm9tLiciLCInLiRwcmVub20uJyIsIicuJG1haWwuJyInOw0KCQkJCQkJCQkkc3FsLj0nLG1kNSgiJy5HUkFJTl9ERV9TQUJMRS4kcHdkLkdSQUlOX0RFX1NBQkxFLiciKSwiJy4oJG5vbS4nXycuJHByZW5vbSkuJyIpOyc7DQoNCgkJCQkJCQkJJGRiLT5JbnNlcnQoJHNxbCk7DQoJCQkJCQkJCQ0KCQkJCQkJCQkkaWQgPSAkZGItPmxhc3RJZDsNCgkJCQkJCQkJDQoJCQkJCQkJCWlmKCRpZCl7DQoJCQkJCQkJCSAgICAkc2Fpc29uX2lkPSRzYWlzb25fY291cmFudGVbJ3NhaXNvbl9pZCddOw0KCQkJCQkJCQkgICAgJGVxdWlwZV9pZDsNCgkJCQkJCQkJICAgICRzcWw9J0lOU0VSVCBJTlRPIHRfbGllbnNfamVzIChzYWlzb25faWQsZXF1aXBlX2lkLG1lbWJyZV9pZCkgJzsNCgkJCQkJCQkJICAgICRzcWwuPSdWQUxVRVMoIicuJHNhaXNvbl9pZC4nIiwiJy4kX1NFU1NJT05bJ2VxdWlwZV9pZCddLiciLCInLiRpZC4nIik7JzsNCgkJCQkJCQkJICAgIA0KCQkJCQkJCQkgICAgJGRiLT5JbnNlcnQoJHNxbCk7DQoNCgkJCQkJCQkJCWlmKCFlbXB0eSgkbWFpbCkpew0KCQkJCQkJCQkJICAgIGVudm95ZXJNYWlsKCRtYWlsLCRkYi0+U2VsZWN0Rmlyc3QoInNlbGVjdCAqIGZyb20gdF9tZW1icmVzIHdoZXJlIG1lbWJyZV9pZD0kaWQiKSk7DQoJCQkJCQkJCQl9DQoJCQkJCQkJCX0NCgkJCQkJCQl9DQoNCgkJCSAgICAgICAgICAgICAgICBicmVhazsNCgkJCSAgICAgICAgDQoJCQkgICAgICAgICAgICBjYXNlICdqb3V0ZXVyX2xvZ2luJzoNCgkJCSAgICAgICAgICAgIA0KCQkJICAgICAgICAgICAgICAgIGlmKGVtcHR5KCRfUE9TVFsncF9sb2dpbiddKSB8fCBlbXB0eSgkX1BPU1RbJ3BfcHdkJ10pKXsNCgkJCSAgICAgICAgICAgICAgICAgICAgJHdhcm5Mdmw9MzsNCgkJCSAgICAgICAgICAgICAgICAgICAgJHNtYXJ0eS0+YXNzaWduKCd3YXJuTHZsJywkd2Fybkx2bCk7DQoJCQkgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KCQkJCQkJCX0NCg0KCQkJICAgICAgICAgICAgICAgICRzcWw9J1NlbGVjdCBjb3VudCgqKSBhcyBDTlQsbWVtYnJlX2lkIGZyb20gdF9tZW1icmVzIHdoZXJlIG1lbWJyZV9sb2dpbj0iJy4kX1BPU1RbJ3BfbG9naW4nXS4nIiBhbmQgbWVtYnJlX21kNT1tZDUoIicuR1JBSU5fREVfU0FCTEUuJF9QT1NUWydwX3B3ZCddLkdSQUlOX0RFX1NBQkxFLiciKSBncm91cCBieSBtZW1icmVfaWQnOw0KCQkJICAgICAgICAgICAgICAgIA0KCQkJICAgICAgICAgICAgICAgICRyb3c9JGRiLT5TZWxlY3RGaXJzdCgkc3FsKTsNCgkJCSAgICAgICAgICAgICAgICAkbG9nX3Jlc3VsdD0kcm93WydDTlQnXTsNCgkJCSAgICAgICAgICAgICAgICANCgkJCSAgICAgICAgICAgICAgICAkd2Fybkx2bD0xOw0KCQkJICAgICAgICAgICAgICAgIA0KCQkJICAgICAgICAgICAgICAgIGlmKCRsb2dfcmVzdWx0PT0wKXsNCgkJCSAgICAgICAgICAgICAgICAgICAgJF9TRVNTSU9OWydtZW1icmVfbG9naW5fdHJ5J10rKzsNCgkJCSAgICAgICAgICAgICAgICAgICAgJHdhcm5Mdmw9MjsNCgkJCSAgICAgICAgICAgICAgICAgICAgDQoJCQkgICAgICAgICAgICAgICAgICAgIHVuc2V0KCRfU0VTU0lPTlsnbWVtYnJlX2Nvbm5lY3RlZCddKTsNCgkJCQkJCQl9DQoJCQkJCQkJZWxzZXsNCgkJCQkJCQkgICAgJF9TRVNTSU9OWydtZW1icmVfY29ubmVjdGVkJ109JHJvd1snbWVtYnJlX2lkJ107DQoJCQkJCQkJICAgICRzbWFydHktPmFzc2lnbignbWVtYnJlX2Nvbm5lY3RlZCcsJHJvd1snbWVtYnJlX2lkJ10pOw0KCQkJCQkJCX0NCg0KCQkJCQkJCWlmKCRfU0VTU0lPTlsnbWVtYnJlX2xvZ2luX3RyeSddPj0zKQ0KCQkJCQkJCSAgICAkd2Fybkx2bD0xMDsNCg0KCQkJCQkJCSRzbWFydHktPmFzc2lnbignd2Fybkx2bCcsJHdhcm5MdmwpOw0KCQkJICAgICAgICAgICAgICAgIA0KCQkJICAgICAgICAgICAgICAgIGJyZWFrOw0KCQkJICAgICAgICAgICAgY2FzZSAncGxheWVyX2Fzc28nOg0KCQkJICAgCQkJCSRzcWw9Jyc7DQoJCQkgICAJCQkJaWYoaXNfYXJyYXkoJF9QT1NUWydmb25jdGlvbiddWydleGlzdCddKSkNCgkJCQkgICAgICAgICAgICAgICAgZm9yZWFjaCgkX1BPU1RbJ2ZvbmN0aW9uJ11bJ2V4aXN0J10gYXMgJGZvbmN0aW9uX2lkPT4kZm9uY3Rpb24pew0KCQkJCQkJCQkJaWYoaXNzZXQoJGZvbmN0aW9uWydjaGVja2VkJ10pKXsNCgkJCQkJCQkJCSAgICAkc3FsLj0nREVMRVRFIEZST00gdF9saWVuc19tZnMgd2hlcmUgbWZzX2xpZW5faWQ9Jy4kZm9uY3Rpb25faWQuJyBMSU1JVCAxOyc7DQoJCQkJCQkJCQl9DQoJCQkJCQkJCX0NCg0KCQkJICAgICAgICAgICAgICAgIGZvcmVhY2goJF9QT1NUWydmb25jdGlvbiddWydhZGQnXVsnZm9uY3Rpb25faWQnXSBhcyAkaT0+JGZvbmN0aW9uKXsNCgkJICAgICAgICAgICAgICAgICAgICAJJHNhaXNvbl9pZD0kX1BPU1RbJ2ZvbmN0aW9uJ11bJ2FkZCddWydzYWlzb25faWQnXVskaV07DQoNCgkJCSAgICAgICAgICAgICAgICAgICAgaWYoaXNzZXQoJGZvbmN0aW9uKSAmJiAkZm9uY3Rpb24hPTAgJiYgJHNhaXNvbl9pZCE9MCl7DQoJCQkgICAgICAgICAgICAgICAgICAgIAkkdGFiPWV4cGxvZGUoJy0nLCRmb25jdGlvbik7DQoJCQkJCQkJCQkkc3FsLj0nSU5TRVJUIElOVE8gdF9saWVuc19tZnMgKGZvbmN0aW9uX2lkLGZvbmN0aW9uX3R5cGVfaWQsc2Fpc29uX2lkLG1lbWJyZV9pZCkgdmFsdWVzKCcuJHRhYlswXS4nLCcuJHRhYlsxXS4nLCcuJHNhaXNvbl9pZC4nLCcuJF9TRVNTSU9OWydtZW1icmVfaWQnXS4nKTsnOw0KCQkJCQkJCQl9DQoJCQkJCQkJfQ0KCQkJCQkJCQ0KCQkJCQkJCQ0KCQkJCQkJCSRkYi0+VXBkYXRlKCRzcWwpOw0KDQoJCQkgICAgICAgICAgICAJYnJlYWs7DQoNCgkJCSAgICAgICAgICAgIGNhc2UgJ3BsYXllcl9lcXVpcGVfbGlzdCc6DQoJCQkgICAJCQkJJHNxbD0nJzsNCgkJCSAgIAkJCQlpZihpc19hcnJheSgkX1BPU1RbJ3NhaXNvbiddWydleGlzdCddKSkNCgkJCQkgICAgICAgICAgICAgICAgZm9yZWFjaCgkX1BPU1RbJ3NhaXNvbiddWydleGlzdCddIGFzICRzYWlzb25faWQ9PiRzYWlzb24pew0KCQkJCQkJCQkJaWYoJHNhaXNvblsnY2hlY2tlZCddPT0xKXsNCgkJCQkJCQkJCSAgICAkc3FsLj0nREVMRVRFIEZST00gdF9saWVuc19qZXMgd2hlcmUgamVzX2xpZW5faWQ9Jy4kc2Fpc29uWydqZXMnXS4nIExJTUlUIDE7JzsNCgkJCQkJCQkJCX0NCg0KCQkJCQkJCQkJJHNxbC49J1VQREFURSB0X2xpZW5zX2plcyBTRVQgZXF1aXBlX2lkPScuJHNhaXNvblsnZXF1aXBlX2lkJ10uJyB3aGVyZSBqZXNfbGllbl9pZD0nLiRzYWlzb25bJ2plcyddLicgTElNSVQgMTsnOw0KCQkJCQkJCQl9DQoNCgkJCSAgICAgICAgICAgICAgICBmb3JlYWNoKCRfUE9TVFsnc2Fpc29uJ11bJ2FkZCddWydzYWlzb25faWQnXSBhcyAkc2Fpc29uKXsNCgkJCSAgICAgICAgICAgICAgICAgICAgaWYoaXNzZXQoJHNhaXNvbikgJiYgJHNhaXNvbiE9MCl7DQoJCQkgICAgICAgICAgICAgICAgICAgIAkkdGFiPWV4cGxvZGUoJy0nLCRzYWlzb24pOw0KCQkJCQkJCQkJJHNxbC49J0lOU0VSVCBJTlRPIHRfbGllbnNfamVzIChzYWlzb25faWQsZXF1aXBlX2lkLG1lbWJyZV9pZCkgdmFsdWVzKCcuJHRhYlswXS4nLCcuJHRhYlsxXS4nLCcuJF9TRVNTSU9OWydtZW1icmVfaWQnXS4nKTsnOw0KCQkJCQkJCQl9DQoJCQkJCQkJfQ0KDQoJCQkJCQkJJGRiLT5VcGRhdGUoJHNxbCk7DQoNCgkJCSAgICAgICAgICAgIAlicmVhazsNCg0KCQkJICAgICAgICAgICAgY2FzZSAncGxheWVyX2NvYWNoX2xpc3QnOg0KCQkJICAgCQkJCSRzcWw9Jyc7DQoJCQkgICAJCQkJaWYoaXNfYXJyYXkoJF9QT1NUWydzYWlzb24nXVsnZXhpc3QnXSkpDQoJCQkJICAgICAgICAgICAgICAgIGZvcmVhY2goJF9QT1NUWydzYWlzb24nXVsnZXhpc3QnXSBhcyAkc2Fpc29uX2lkPT4kc2Fpc29uKXsNCgkJCQkJCQkJCWlmKCRzYWlzb25bJ2NoZWNrZWQnXT09MSl7DQoJCQkJCQkJCQkgICAgJHNxbC49J0RFTEVURSBGUk9NIHRfbGllbnNfZWMgd2hlcmUgZWNfbGllbl9pZD0nLiRzYWlzb25bJ2VjJ10uJyBMSU1JVCAxOyc7DQoJCQkJCQkJCQl9DQoNCgkJCQkJCQkJCSRzcWwuPSdVUERBVEUgdF9saWVuc19lYyBTRVQgZXF1aXBlX2lkPScuJHNhaXNvblsnZXF1aXBlX2lkJ10uJyB3aGVyZSBlY19saWVuX2lkPScuJHNhaXNvblsnamVzJ10uJyBMSU1JVCAxOyc7DQoJCQkJCQkJCX0NCg0KCQkJICAgICAgICAgICAgICAgIGZvcmVhY2goJF9QT1NUWydzYWlzb24nXVsnYWRkJ11bJ3NhaXNvbl9pZCddIGFzICRzYWlzb24pew0KCQkJICAgICAgICAgICAgICAgICAgICBpZihpc3NldCgkc2Fpc29uKSAmJiAkc2Fpc29uIT0wKXsNCgkJCSAgICAgICAgICAgICAgICAgICAgCSR0YWI9ZXhwbG9kZSgnLScsJHNhaXNvbik7DQoJCQkJCQkJCQkkc3FsLj0nSU5TRVJUIElOVE8gdF9saWVuc19lYyAoc2Fpc29uX2lkLGVxdWlwZV9pZCxtZW1icmVfaWQpIHZhbHVlcygnLiR0YWJbMF0uJywnLiR0YWJbMV0uJywnLiRfU0VTU0lPTlsnbWVtYnJlX2lkJ10uJyk7JzsNCgkJCQkJCQkJfQ0KCQkJCQkJCX0NCg0KCQkJCQkJCQ0KCQkJCQkJCSRkYi0+VXBkYXRlKCRzcWwpOw0KDQoJCQkgICAgICAgICAgICAJYnJlYWs7DQoNCgkJCSAgICAgICAgICAgIGNhc2UgJ3BsYXllcl9pbmZvJzoNCgkJCQkJCQkNCgkJCQkJCQlpZighZW1wdHkoJF9QT1NUWydtZW1icmUnXVsnbWVtYnJlX3B3ZCddKSl7DQoJCQkJCQkJLy9PbiB2YWxpZGUgbGEgZmljaGUgZHUgbWVtYnJlIG9uIGRvaXQgZW52b3llciB1biBtYWlsDQoJCQkJCQkJCSRfUE9TVFsnbWVtYnJlJ11bJ21lbWJyZV9tZDUnXT1tZDUoR1JBSU5fREVfU0FCTEUuJF9QT1NUWydtZW1icmUnXVsnbWVtYnJlX3B3ZCddLkdSQUlOX0RFX1NBQkxFKTsNCgkJCQkJCQkJJHNlbmRfbWFpbD10cnVlOw0KCQkJCQkJCX0NCgkJCQkJCQlpZigkX1BPU1RbJ21lbWJyZSddWydtZW1icmVfcHJvZl9ob21tZSddPT0wKQ0KCQkJCQkJCQkkX1BPU1RbJ21lbWJyZSddWydtZW1icmVfcHJvZl9ob21tZSddPSRfUE9TVFsnbWVtYnJlJ11bJ21lbWJyZV9wcm9mX2hvbW1lX3R4dCddOw0KDQoJCQkJCQkJaWYoJF9QT1NUWydtZW1icmUnXVsnbWVtYnJlX3Byb2ZfZmVtbWUnXT09MCkNCgkJCQkJCQkJJF9QT1NUWydtZW1icmUnXVsnbWVtYnJlX3Byb2ZfZmVtbWUnXT0kX1BPU1RbJ21lbWJyZSddWydtZW1icmVfcHJvZl9mZW1tZV90eHQnXTsNCg0KCQkJCQkJCSRfUE9TVFsnbWVtYnJlJ109YWRkc2xhc2hlc19zcWwoJF9QT1NUWydtZW1icmUnXSk7DQoNCgkJCQkJCQkkc3FsPSRkYi0+VXBkYXRlU1FMKCd0X21lbWJyZXMnLCRfUE9TVFsnbWVtYnJlJ10sJ21lbWJyZV9pZD0nLiRfUE9TVFsnbWVtYnJlJ11bJ21lbWJyZV9pZCddKTsNCgkJCQkJCQkkZGItPlVwZGF0ZSgkc3FsKTsNCg0KCQkJCQkJCWlmKCRkYi0+Q291bnQ9PS0xKXsNCgkJCQkJCQkJYWxlcnRBamF4KCdFcnJldXIgbG9ycyBkZSBsYSBtaXNlIMOgIGpvdXIsIHJlw6lzc2F5ZXogcGx1cyB0YXJkJyk7DQoJCQkJCQkJfQ0KCQkJCQkJCWVsc2V7DQoJCSAgICAgICAgICAgICAgICAgICAgICAgIGlmKCRzZW5kX21haWw9PXRydWUgJiYgaXNzZXQoJF9QT1NUWydtZW1icmUnXVsnbWVtYnJlX2VtYWlsJ10pKXsNCgkJICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudm95ZXJNYWlsKCRfUE9TVFsnbWVtYnJlJ11bJ21lbWJyZV9lbWFpbCddLCRfUE9TVFsnbWVtYnJlJ10pOw0KCQkgICAgICAgICAgICAgICAgICAgICAgICB9DQoNCgkJDQoJCQ0KCQkJCQkJCQlpZihpc3NldCgkX1BPU1RbJ3NlbGYnXSkpDQoJCQkJCQkJCWVjaG8gIndpbmRvdy5sb2NhdGlvbi5ocmVmPSciLlNJVEVfVVJMLiInOyI7DQoJCQkJCQkJfQ0KDQoJCQkJCQkJYnJlYWs7DQoJCQkJCQljYXNlICdlcXVpcGVfaW5mbyc6DQoJCQkJCQkJJGVxdWlwZVNxbD1hZGRzbGFzaGVzX3NxbCgkX1BPU1RbJ2VxdWlwZSddKTsNCg0KCQkJCQkJCSRzcWw9JGRiLT5VcGRhdGVTUUwoJ3RfZXF1aXBlcycsJGVxdWlwZVNxbCwnZXF1aXBlX2lkPScuJGVxdWlwZVNxbFsnZXF1aXBlX2lkJ10pOw0KDQoJCQkJCQkJJGRiLT5VcGRhdGUoJHNxbCk7DQoNCgkJCQkJCWJyZWFrOw0KDQoJCQkJCQljYXNlICdlcXVpcGVfc2Fpc29uX2xpc3QnOg0KCQkJCQkJICAgICRFX0lEPSRfU0VTU0lPTlsnZXF1aXBlX2lkJ107DQoJCQkgICAJCQkJJHNxbD0nJzsNCgkJCSAgIAkJCQlpZihpc19hcnJheSgkX1BPU1RbJ2l0ZW0nXVsnZXhpc3QnXSkpDQoJCQkJICAgICAgICAgICAgICAgIGZvcmVhY2goJF9QT1NUWydpdGVtJ11bJ2V4aXN0J10gYXMgJHNhaXNvbl9pZD0+JHNhaXNvbil7DQoJCQkJCQkJCQlpZigkc2Fpc29uWydjaGVja2VkJ109PTEpew0KCQkJCQkJCQkJICAgICRzcWwuPSdERUxFVEUgRlJPTSB0X2xpZW5zX2VzIHdoZXJlIGVzX2xpZW5faWQ9Jy4kc2Fpc29uWydlcyddLicgTElNSVQgMTsnOw0KCQkJCQkJCQkJICAgICRzcWwuPSdERUxFVEUgRlJPTSB0X2xpZW5zX2plcyB3aGVyZSBzYWlzb25faWQ9Jy4kc2Fpc29uX2lkLicgYW5kIGVxdWlwZV9pZD0nLiRFX0lELic7JzsNCgkJCQkJCQkJCX0NCg0KCQkJCQkJCQkJJHNxbC49J1VQREFURSB0X2xpZW5zX2VzIFNFVCBzYWlzb25fdHlwZT0iJy4kc2Fpc29uWydzYWlzb25fdHlwZSddLiciIHdoZXJlIGVzX2xpZW5faWQ9Jy4kc2Fpc29uWydlcyddLicgTElNSVQgMTsnOw0KCQkJCQkJCQl9DQoNCgkJCSAgICAgICAgICAgICAgICBmb3JlYWNoKCRfUE9TVFsnaXRlbSddWydhZGQnXVsnc2Fpc29uX2lkJ10gYXMgJGtleT0+JHNfaWQpew0KCQkJICAgICAgICAgICAgICAgICAgICBpZihpc3NldCgkc19pZCkgJiYgJHNfaWQhPTApew0KCQkJICAgICAgICAgICAgICAgICAgICAgICAgJHR5cGU9JF9QT1NUWydpdGVtJ11bJ2FkZCddWydzYWlzb25fdHlwZSddWyRrZXldOw0KCQkJCQkJCQkJJHNxbC49J0lOU0VSVCBJTlRPIHRfbGllbnNfZXMgKHNhaXNvbl9pZCxlcXVpcGVfaWQsc2Fpc29uX3R5cGUpIHZhbHVlcygnLiRzX2lkLicsJy4kRV9JRC4nLCInLiR0eXBlLiciKTsnOw0KCQkJCQkJCQkJJHNxbC49J0lOU0VSVCBJTlRPIHRfbGllbnNfamVzIChzYWlzb25faWQsZXF1aXBlX2lkLG1lbWJyZV9pZCkgU2VsZWN0ICcuJHNfaWQuJywnLiRFX0lELicsIG1lbWJyZV9pZCBmcm9tIHRfbGllbnNfamVzIHdoZXJlIHNhaXNvbl9pZD0nLigkc19pZC0xKS4nIGFuZCBlcXVpcGVfaWQ9Jy4kRV9JRC4nOyc7DQoJCQkJCQkJCX0NCgkJCQkJCQl9DQoJCQkJCQkJDQoJCQkJCQkJJGRiLT5VcGRhdGUoJHNxbCk7DQoNCgkJCSAgICAgICAgICAgIAlicmVhazsNCg0KCQkJCQkJY2FzZSAnZXF1aXBlX2NvYWNoX2xpc3QnOg0KCQkJICAgCQkJCSRzcWw9Jyc7DQoJCQkgICAJCQkJaWYoaXNfYXJyYXkoJF9QT1NUWydpdGVtJ11bJ2V4aXN0J10pKQ0KCQkJCSAgICAgICAgICAgICAgICBmb3JlYWNoKCRfUE9TVFsnaXRlbSddWydleGlzdCddIGFzICRsX2lkPT4kc2Fpc29uKXsNCgkJCQkJCQkJCWlmKCRzYWlzb25bJ2NoZWNrZWQnXT09MSl7DQoJCQkJCQkJCQkgICAgJHNxbC49J0RFTEVURSBGUk9NIHRfbGllbnNfZWMgd2hlcmUgZWNfbGllbl9pZD0nLiRsX2lkLicgTElNSVQgMTsnOw0KCQkJCQkJCQkJfQ0KDQoJCQkJCQkJCQkkc3FsLj0nVVBEQVRFIHRfbGllbnNfZWMgU0VUIG1lbWJyZV9pZD0nLiRzYWlzb25bJ21lbWJyZV9pZCddLicgd2hlcmUgZWNfbGllbl9pZD0nLiRsX2lkLicgTElNSVQgMTsnOw0KCQkJCQkJCQl9DQoNCgkJCSAgICAgICAgICAgICAgICBmb3JlYWNoKCRfUE9TVFsnaXRlbSddWydhZGQnXVsnc2Fpc29uX2lkJ10gYXMgJGtleT0+JHNfaWQpew0KCQkJICAgICAgICAgICAgICAgICAgICBpZihpc3NldCgkc19pZCkgJiYgJHNfaWQhPTApew0KCQkJICAgICAgICAgICAgICAgICAgICAgICAgJG1faWQ9JF9QT1NUWydpdGVtJ11bJ2FkZCddWydtZW1icmVfaWQnXVska2V5XTsNCgkJCQkJCQkJCSRzcWwuPSdJTlNFUlQgSU5UTyB0X2xpZW5zX2VjIChzYWlzb25faWQsZXF1aXBlX2lkLG1lbWJyZV9pZCkgdmFsdWVzKCcuJHNfaWQuJywnLiRfU0VTU0lPTlsnZXF1aXBlX2lkJ10uJywnLiRtX2lkLicpOyc7DQoJCQkJCQkJCX0NCgkJCQkJCQl9DQoNCgkJCQkJCQkkZGItPlVwZGF0ZSgkc3FsKTsNCg0KCQkJICAgICAgICAgICAgCWJyZWFrOw0KDQoJCQkJCQljYXNlICdlcXVpcGVfam91dGV1cl9saXN0JzoNCgkJCSAgIAkJCQkkc3FsPScnOw0KCQkJICAgCQkJCWlmKGlzX2FycmF5KCRfUE9TVFsnaXRlbSddWydleGlzdCddKSkNCgkJCQkgICAgICAgICAgICAgICAgZm9yZWFjaCgkX1BPU1RbJ2l0ZW0nXVsnZXhpc3QnXSBhcyAkbF9pZD0+JHNhaXNvbil7DQoJCQkJCQkJCQlpZigkc2Fpc29uWydjaGVja2VkJ109PTEpew0KCQkJCQkJCQkJICAgICRzcWwuPSdERUxFVEUgRlJPTSB0X2xpZW5zX2plcyB3aGVyZSBqZXNfbGllbl9pZD0nLiRsX2lkLicgTElNSVQgMTsnOw0KCQkJCQkJCQkJfQ0KCQkJCQkJCQkJDQoJCQkJCQkJCX0NCg0KCQkJCQkJCSRzcWwuPSdVcGRhdGUgdF9saWVuc19qZXMgc2V0IHJlc3BvbnNhYmxlPTAgd2hlcmUgZXF1aXBlX2lkPScuJF9TRVNTSU9OWydlcXVpcGVfaWQnXS4nOyc7DQoNCgkJCQkJCQlpZihpc19hcnJheSgkX1BPU1RbJ2l0ZW0nXVsnZXhpc3QnXVsncmVzcG9uc2FibGUnXSkpDQoJCQkJICAgICAgICAgICAgICAgIGZvcmVhY2goJF9QT1NUWydpdGVtJ11bJ2V4aXN0J11bJ3Jlc3BvbnNhYmxlJ10gYXMgJG1faWQ9PiR0YWIpew0KCQkJCSAgICAgICAgICAgICAgICAgICAgJHRhYj1leHBsb2RlKCctJywkdGFiKTsNCgkJCQkJCQkJICAgICRzcWwuPSJVcGRhdGUgdF9saWVuc19qZXMgc2V0IHJlc3BvbnNhYmxlPTEgd2hlcmUgc2Fpc29uX2lkPSR0YWJbMF0gYW5kIG1lbWJyZV9pZD0kdGFiWzFdOyI7DQoJCQkJCQkJCX0NCg0KCQkJCQkJCQkNCgkJCSAgICAgICAgICAgICAgICBmb3JlYWNoKCRfUE9TVFsnaXRlbSddWydhZGQnXVsnc2Fpc29uX2lkJ10gYXMgJGtleT0+JHNfaWQpew0KCQkJICAgICAgICAgICAgICAgICAgICBpZihpc3NldCgkc19pZCkgJiYgJHNfaWQhPTApew0KCQkJICAgICAgICAgICAgICAgICAgICAgICAgJG1faWQ9JF9QT1NUWydpdGVtJ11bJ2FkZCddWydtZW1icmVfaWQnXVska2V5XTsNCgkJCQkJCQkJCSRzcWwuPSdJTlNFUlQgSU5UTyB0X2xpZW5zX2plcyAoc2Fpc29uX2lkLGVxdWlwZV9pZCxtZW1icmVfaWQpIHZhbHVlcygnLiRzX2lkLicsJy4kX1NFU1NJT05bJ2VxdWlwZV9pZCddLicsJy4kbV9pZC4nKTsnOw0KCQkJCQkJCQl9DQoJCQkJCQkJfQ0KDQoJCQkJCQkJJGRiLT5VcGRhdGUoJHNxbCk7DQoNCgkJCSAgICAgICAgICAgIAlicmVhazsNCg0KCQkJICAgICAgICB9DQoJCQkJCSRzbWFydHktPmFzc2lnbigncHJlc2VudGF0aW9uRHluYW1pcXVlJywkX1BPU1RbJ3dpY2gnXSk7DQoJCQkJCSRzbWFydHktPmRpc3BsYXkoJy4vX19hZG1pbl9fL3NpdGVfX19hZG1pbl9fcHJlc2VudGF0aW9uLicuVFBMX0VYVCk7DQoNCgkJCSAgICAgICAgYnJlYWs7DQoJCQkJY2FzZSAnZXF1aXBlJzoNCgkJCQkJDQoJCQkJYnJlYWs7IA0KCQkJCQ0KCQkJCWNhc2UgJ2NvbXBvc2l0aW9uJzoNCgkJCQkJDQoJCQkJCSRtaWQ9JF9QT1NUWydjb21wbyddWydtYXRjaF9pZCddOyANCgkJCQkJJF9QT1NUWydjb21wbyddPWFkZHNsYXNoZXNfc3FsKCRfUE9TVFsnY29tcG8nXSk7DQoJCQkJCQ0KCQkJCQkkc3FsPSJERUxFVEUgRlJPTSB0X2NvbXBvcyB3aGVyZSBjb21wb19tYXRjaF9pZD0iLiRtaWQuIjsiOw0KCQkJCQkNCgkJCQkJDQoJCQkJCWZvcmVhY2goc3BsaXQoJywnLCRfUE9TVFsnY29tcG9fQSddKSBhcyAkdmFsKXsNCgkJCQkJCWlmKCR2YWwpDQoJCQkJCQkJJHNxbC49IklOU0VSVCBJTlRPIHRfY29tcG9zIFZBTFVFUygnJywnIi4kbWlkLiInLCciLiR2YWwuIicpOyI7DQoJCQkJCX0NCgkJCQkJZm9yZWFjaChzcGxpdCgnLCcsJF9QT1NUWydjb21wb19CJ10pIGFzICR2YWwpew0KCQkJCQkJaWYoJHZhbCkNCgkJCQkJCQkkc3FsLj0iSU5TRVJUIElOVE8gdF9jb21wb3MgVkFMVUVTKCcnLCciLiRtaWQuIicsJyIuJHZhbC4iJyk7IjsNCgkJCQkJfQ0KCQkJCQkNCgkJCQkJJGRiLT5JbnNlcnQoJHNxbCk7DQoJCQkJCQ0KCQkJCQlpZigkZGItPkNvdW50PT0tMSl7DQoJCQkJCQlhbGVydEFqYXgoJ0VycmV1ciBsb3JzIGRlIGxhIG1pc2Ugw6Agam91ciwgcmXDqXNzYXlleiBwbHVzIHRhcmQnKTsNCgkJCQkJfQ0KCQkJCQllbHNlew0KCQkJCQkJJHNxbD0ic2VsZWN0IGNvdW50KCopIGZyb20gdF9jb21wb3Mgd2hlcmUgY29tcG9fbWF0Y2hfaWQ9JG1pZCI7DQoJCQkJCQkkY250PSRkYi0+Q291bnQoJHNxbCk7DQoJCQkJCQllY2hvICINCgkJCQkJCQkvLyBPbiBjYWNoZQ0KCQkJCQkJCSQoJ2V0b2lsZV9idXR0b24kbWlkJykuZGlzYWJsZWQ9KCRjbnQ9PTAgPyB0cnVlOiBmYWxzZSk7DQoJCQkJCQkJRWxlbWVudC50b2dnbGUoJ2ljJyk7DQoJCQkJCQkJLy8gT24gYXZlcnRpcw0KCQkJCQkJCWFsZXJ0KCdNaXNlIMOgIGpvdXIgZWZmZWN0dcOpZSBhdmVjIHN1Y2PDqXMnKTsNCgkJCQkJCQkvLyBPbiBlbMOodmUgbGUgZm9ybXVsYWlyZSANCgkJCQkJCQkkKCdpYycpLmlubmVySFRNTD1cIlwiOw0KCQkJCQkJCSQoJ2V0b2lsZV9idXR0b24kbWlkJykuY2xpY2soJCgnZXRvaWxlX2J1dHRvbiRtaWQnKSk7DQoJCQkJCQkJIjsNCgkJCQkJfQ0KLyogKi8JCQkJDQoJCQkJYnJlYWs7IA0KCQkJCQ0KCQkJCWNhc2UgJ2V0b2lsZSc6DQoNCgkJCQkJJG1pZD0kX1BPU1RbJ21hdGNoX2lkJ107IA0KCQkJCQkkX1BPU1RbJ2V0b2lsZSddPWFkZHNsYXNoZXNfc3FsKCRfUE9TVFsnZXRvaWxlJ10pOw0KCQkJCQkkX1BPU1RbJ3R5cGUnXQkJPXNwbGl0KCcsJywkX1BPU1RbJ3R5cGUnXSk7DQoJCQkJCSRfUE9TVFsnam91dGV1ciddCT1zcGxpdCgnLCcsJF9QT1NUWydqb3V0ZXVyJ10pOw0KCQkJCQkNCgkJCQkJJHNxbD0iREVMRVRFIEZST00gdF9ldG9pbGVzIHdoZXJlIGV0b2lsZV9tYXRjaF9pZD0iLiRtaWQuIjsiOw0KCQkJCQkNCgkJCQkJZm9yZWFjaCgkX1BPU1RbJ3R5cGUnXSBhcyAka2V5PT4kdmFsKXsNCgkJCQkJCQ0KCQkJCQkJaWYoJF9QT1NUWydqb3V0ZXVyJ11bJGtleV0+MCkNCgkJCQkJCQkkc3FsLj0iSU5TRVJUIElOVE8gdF9ldG9pbGVzIFZBTFVFUygnJywkbWlkLCIuJF9QT1NUWydqb3V0ZXVyJ11bJGtleV0uIiwkdmFsKTsiOwkJDQoJCQkJCX0NCgkJCQkJDQoJCQkJCSRkYi0+SW5zZXJ0KCRzcWwpOw0KCQkJCQlpZigkZGItPkNvdW50PT0tMSl7DQoJCQkJCQlhbGVydEFqYXgoJ0VycmV1ciBsb3JzIGRlIGxhIG1pc2Ugw6Agam91ciwgcmXDqXNzYXlleiBwbHVzIHRhcmQnKTsNCgkJCQkJfQ0KCQkJCQllbHNlew0KCQkJCQkJZWNobyAiDQoJCQkJCQkJLy8gT24gY2FjaGUNCgkJCQkJCQlFbGVtZW50LnRvZ2dsZSgnaWMnKTsNCgkJCQkJCQkvLyBPbiBhdmVydGlzDQoJCQkJCQkJYWxlcnQoJ01pc2Ugw6Agam91ciBlZmZlY3R1w6llIGF2ZWMgc3VjY8OpcycpOw0KCQkJCQkJCS8vIE9uIGVsw6h2ZSBsZSBmb3JtdWxhaXJlIA0KCQkJCQkJCSQoJ2ljJykuaW5uZXJIVE1MPVwiXCI7DQoJCQkJCQkJIjsNCgkJCQkJfQ0KLyogKi8JCQkJDQoJCQkJYnJlYWs7IA0KCQkJCQ0KCQkJCWNhc2UgJ3N0YWZmJzoNCg0KCQkJCQkkbWlkPSRfUE9TVFsnc3RhZmYnXVsnbWF0Y2hfaWQnXTsNCgkJCQkJJGRiLT5VcGRhdGUoJGRiLT5VcGRhdGVTUUwoJ3RfbWF0Y2hzJywkX1BPU1RbJ3N0YWZmJ10sJ21hdGNoX2lkPScuJG1pZCkpOw0KDQoJCQkJCWlmKCRkYi0+Q291bnQ9PS0xKXsNCgkJCQkJCWFsZXJ0QWpheCgnRXJyZXVyIGxvcnMgZGUgbGEgbWlzZSDDoCBqb3VyLCByZcOpc3NheWV6IHBsdXMgdGFyZCcpOw0KCQkJCQl9DQoJCQkJCWVsc2V7DQoJCQkJCQllY2hvICINCgkJCQkJCQkvLyBPbiBjYWNoZQ0KCQkJCQkJCUVsZW1lbnQudG9nZ2xlKCdpYycpOw0KCQkJCQkJCS8vIE9uIGF2ZXJ0aXMNCgkJCQkJCQlhbGVydCgnTWlzZSDDoCBqb3VyIGVmZmVjdHXDqWUgYXZlYyBzdWNjw6lzJyk7DQoJCQkJCQkJLy8gT24gZWzDqHZlIGxlIGZvcm11bGFpcmUgDQoJCQkJCQkJJCgnaWMnKS5pbm5lckhUTUw9XCJcIjsNCgkJCQkJCQkiOw0KCQkJCQl9DQoJCQkJDQoJCQkJYnJlYWs7IA0KCQkJfQ0KCQkJCQkNCgkJCWJyZWFrOw0KCQkNCgkJZGVmYXVsdDoNCgkJCWJvdWdlX2RlX2xhKCcuLycpOw0KCX0NCg0KPz4NCg==]]></response>
      Recv: <?xml version="1.0" encoding="iso-8859-1"?>
      <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="2" feature="max_depth" success="1"></response>
      Recv: <?xml version="1.0" encoding="iso-8859-1"?>
      <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="3" feature="max_children" success="1"></response>
      Recv: <?xml version="1.0" encoding="iso-8859-1"?>
      <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="4" state="enabled" id="15720002"></response>
      Recv: <?xml version="1.0" encoding="iso-8859-1"?>
      <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="breakpoint_list" transaction_id="5"><breakpoint type="line" filename="file:///C:/JP/EasyPHP/www/lolita/index.php" lineno="11" state="enabled" hit_count="0" hit_condition="&gt;=" hit_value="0" id="15720002"></breakpoint></response>
      Recv: <?xml version="1.0" encoding="iso-8859-1"?>
      <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="6" status="stopped" reason="ok"></response>
      Send: run -i 7
      ----
      Disconnect: 127.0.0.1
      ----
      Disconnect: 127.0.0.1

       
      • Damjan Cvetko

        Damjan Cvetko - 2008-02-07

        I see it right away.

        Accept: 127.0.0.1
        ...
        <init ...  fileuri="file:///c:/jp/easyphp/www/lolita/index.php" ...
        ...
        Send: breakpoint_set -i 3 -t line -f file:///C:\JP\EasyPHP\www\lolita\index.php -n 11 -s enabled -h 0 -o >=
        ...

        It's a bug that has been fixed some time ago but not released.
        I'm going to release it in a few hours. Please hold on.

        -Z

         
    • Nobody/Anonymous

      Many thanks Zobo
      Keep on the good work!
      Jp

       
    • Nobody/Anonymous

      Thanks zobo for the answer

      But the zend_extension is set in my php.ini here is my php.ini stuff:

      zend_extension_ts="C:\JP\EasyPHP\php\extensions\php_xdebug-2.0.2-4.4.6.dll"
      xdebug.remote_enable=1
      xdebug.remote_handler=dbgp
      xdebug.remote_host=127.0.0.1
      xdebug.remote_mode=req
      xdebug.idekey=default
      xdebug.remote_log="C:\Jp\easyPhp\www\xdebug.log"
      xdebug.remote_port=9000
      xdebug.show_exception_trace=0
      xdebug.show_local_vars=9
      xdebug.show_mem_delta=0
      xdebug.trace_format=0

      Many thanks anyway for this answer and for the further ones

      Jp

       
      • Damjan Cvetko

        Damjan Cvetko - 2008-02-06

        Humm...

        Please paste the data from the DBG log from the plugin.
        Open the file, set a breakpoint and run the script.

        I'll see what that tells me.
        And what is version of the plugin are you using?

        Best,
        -Zobo

         
  • Varsha

    Varsha - 2010-07-20

    Hi
    I'm facing the same issue. I have DBGp plugin v0.0.1..20 on Npp v5.6.8. Npp blinks on debugging, but the execution does not stop at breakpoints. Please help.